pax_global_header00006660000000000000000000000064152400050420014502gustar00rootroot0000000000000052 comment=48f93f417fb9ed46f1e234205aa45cd98869da6b bazaar-org-bazaar-48f93f4/000077500000000000000000000000001524000504200153365ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/.clang-format000066400000000000000000000007531524000504200177160ustar00rootroot00000000000000BasedOnStyle: GNU AlwaysBreakAfterDefinitionReturnType: All BreakBeforeBinaryOperators: None BinPackParameters: false SpaceAfterCStyleCast: true PointerAlignment: Right ColumnLimit: 0 AlignArrayOfStructures: Right AlignAfterOpenBracket: Align AlignConsecutiveAssignments: true AlignConsecutiveBitFields: true AlignConsecutiveDeclarations: true AlignConsecutiveMacros: true AllowShortCaseLabelsOnASingleLine: true AlignEscapedNewlines: true AlignOperands: true AlignTrailingComments: Always bazaar-org-bazaar-48f93f4/.devcontainer/000077500000000000000000000000001524000504200200755ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/.devcontainer/Dockerfile000066400000000000000000000010321524000504200220630ustar00rootroot00000000000000FROM fedora:rawhide RUN dnf update -y && dnf install -y \ meson \ ninja \ cmake \ just \ git \ blueprint-compiler \ desktop-file-utils \ gtk4-devel \ libadwaita-devel \ libdex-devel \ flatpak-devel \ libxmlb-devel \ appstream-devel \ glycin-devel \ glycin-gtk4-devel \ libyaml-devel \ libsoup3-devel \ json-glib-devel \ md4c-devel \ webkitgtk6.0-devel \ libsecret-devel \ libproxy-devel \ gtksourceview5-devel \ glib-networking \ clangd bazaar-org-bazaar-48f93f4/.devcontainer/devcontainer.json000066400000000000000000000017551524000504200234610ustar00rootroot00000000000000{ "name": "Bazaar devcontainer", "build": { "dockerfile": "Dockerfile" }, "runArgs": [ "--device=/dev/dri", "--network=host" ], "features": { "ghcr.io/devcontainers/features/common-utils:2": { "installZsh": "false", "username": "vscode", "userUid": "1000", "userGid": "1000", "upgradePackages": "true" } }, "remoteUser": "vscode", "customizations": { "vscode": { "extensions": [ "ms-vscode.cpptools-extension-pack", "bodil.blueprint-gtk" ] } }, // Wayland support "containerEnv": { "WAYLAND_DISPLAY": "${localEnv:WAYLAND_DISPLAY}", "XDG_RUNTIME_DIR": "${localEnv:XDG_RUNTIME_DIR}", "XDG_SESSION_TYPE": "${localEnv:XDG_SESSION_TYPE}", "DBUS_SYSTEM_BUS_ADDRESS": "unix:path=/var/run/dbus/system_bus_socket" }, "mounts": [ "source=${localEnv:XDG_RUNTIME_DIR},target=${localEnv:XDG_RUNTIME_DIR},type=bind,consistency=cached", "source=/var/run/dbus/system_bus_socket,target=/var/run/dbus/system_bus_socket,type=bind,consistency=cached" ] }bazaar-org-bazaar-48f93f4/.foundry/000077500000000000000000000000001524000504200171025ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/.foundry/.gitignore000066400000000000000000000000221524000504200210640ustar00rootroot00000000000000tmp/ user/ cache/ bazaar-org-bazaar-48f93f4/.github/000077500000000000000000000000001524000504200166765ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/.github/CODEOWNERS000066400000000000000000000001761524000504200202750ustar00rootroot00000000000000# All files * @kolunmi @AlexanderVanhee .github/workflows/ @renner0e @tulilirockz build-aux/flatpak/ @renner0e @tulilirockz bazaar-org-bazaar-48f93f4/.github/FUNDING.yml000066400000000000000000000001201524000504200205040ustar00rootroot00000000000000github: [kolunmi] ko_fi: kolunmi custom: - https://ko-fi.com/alexandervanhee bazaar-org-bazaar-48f93f4/.github/ISSUE_TEMPLATE/000077500000000000000000000000001524000504200210615ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/.github/ISSUE_TEMPLATE/bug_form.yml000066400000000000000000000040001524000504200233760ustar00rootroot00000000000000name: Bug Report description: Report an issue about using Bazaar body: - type: markdown attributes: value: | Thank you for taking the time to fill out this bug report! - type: textarea id: describe-bug attributes: label: Describe the bug description: A clear and concise description of what the bug is. If you are reporting a crash please take a look at https://github.com/bazaar-org/bazaar/blob/debug-symbols/docs/debugging.md#debugging-crashes placeholder: Tell us what happened! value: "When I entered 2 + 2, I got the answer 6." validations: required: true - type: input id: os attributes: label: OS description: Operating system (and desktop environment) placeholder: , validations: required: true - type: textarea id: version attributes: label: Version description: | Please check the current version of Bazaar (Main Window > About Bazaar) so we can more easily indentify issues. Output of `flatpak info io.github.kolunmi.Bazaar`. If you are on Bazzite or secureblue please run `rpm -qi bazaar` validations: required: true - type: textarea id: flatpak-remotes attributes: label: Configured Flatpak Remotes description: | Currently there are issues with user remotes. Please run `flatpak remotes`. placeholder: | Name Options flathub system validations: required: true - type: textarea id: hardware attributes: label: Hardware description: | If you are reporting performance issues or crashes then please fill this out. placeholder: | CPU: Ryzen 5 7600 GPU: RX 6750 XT RAM: 16GB validations: required: false - type: textarea id: extra-context attributes: label: Extra information or context description: Add any other context about the problem here. bazaar-org-bazaar-48f93f4/.github/workflows/000077500000000000000000000000001524000504200207335ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/.github/workflows/build-flatpak.yml000066400000000000000000000036311524000504200242000ustar00rootroot00000000000000on: push: branches: [main] pull_request: paths-ignore: - "**.md" - "docs/*" - "screenshots/*" - "translators.sh" - ".github/ISSUE_TEMPLATE/**" workflow_dispatch: permissions: {} name: CI Build Flatpak jobs: flatpak: name: "Flatpak" container: image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-50 options: --privileged strategy: matrix: variant: - arch: x86_64 runner: ubuntu-latest # no latest for ARM :( - arch: aarch64 runner: ubuntu-24.04-arm runs-on: ${{ matrix.variant.runner }} steps: - name: Git Checkout uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: submodules: recursive persist-credentials: false - name: Restore cache uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: .flatpak-builder key: flatpak-builder-046f9ec-${{ matrix.variant.arch }}-${{ github.run_id }} restore-keys: | flatpak-builder-046f9ec-${{ matrix.variant.arch }}- - name: Build Flatpak uses: flatpak/flatpak-github-actions/flatpak-builder@401fe28a8384095fc1531b9d320b292f0ee45adb # v6.7 with: bundle: Bazaar.flatpak manifest-path: build-aux/flatpak/io.github.kolunmi.Bazaar.json # caching is broken upstream # https://github.com/flatpak/flatpak-github-actions/issues/239 # this is only true because there is no other way to call fb with --ccache cache: true restore-cache: false arch: ${{ matrix.variant.arch }} verbose: true - name: Write new cache uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: .flatpak-builder key: flatpak-builder-046f9ec-${{ matrix.variant.arch }}-${{ github.run_id }} bazaar-org-bazaar-48f93f4/.github/workflows/flatpak-external-data-checker.yml000066400000000000000000000020521524000504200272300ustar00rootroot00000000000000name: Check for Flatpak dependency updates on: schedule: - cron: "0 0 * * *" # every day workflow_dispatch: jobs: flatpak-external-data-checker: runs-on: ubuntu-latest strategy: matrix: branch: [ main ] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ matrix.branch }} - uses: docker://ghcr.io/flathub/flatpak-external-data-checker:latest env: GIT_AUTHOR_NAME: Flatpak External Data Checker GIT_COMMITTER_NAME: Flatpak External Data Checker # email sets "github-actions[bot]" as commit author, see https://github.community/t/github-actions-bot-email-address/17204/6 GIT_AUTHOR_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com GIT_COMMITTER_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: --update --never-fork --require-important-update build-aux/flatpak/io.github.kolunmi.Bazaar.json bazaar-org-bazaar-48f93f4/.gitignore000066400000000000000000000000151524000504200173220ustar00rootroot00000000000000build .cache bazaar-org-bazaar-48f93f4/.gitmodules000066400000000000000000000002141524000504200175100ustar00rootroot00000000000000[submodule "flatpak-builder-tools"] path = build-aux/flatpak/flatpak-builder-tools url = https://github.com/flatpak/flatpak-builder-tools bazaar-org-bazaar-48f93f4/.well-known/000077500000000000000000000000001524000504200175115ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/.well-known/funding-manifest-urls000066400000000000000000000000601524000504200236510ustar00rootroot00000000000000https://www.kolunmi.net/ https://usebazaar.org/ bazaar-org-bazaar-48f93f4/CODESTYLE.md000066400000000000000000000042131524000504200172130ustar00rootroot00000000000000# Bazaar Code Style Rules Thanks for your interest in contributing to Bazaar! Here are the code style rules which you must adhere to in order to keep a clean and consistent codebase: ## Formatting Bazaar uses the GNU C style. The `.clang-format` file at the root project directory will configure `clang-format` to follow the proper conventions. ## General Rules * _Always_ prefer using `g_auto`, `g_autofree`, `g_autoptr`, `g_autolist`, and `g_autoslist` over calling `*_unref` or `*_free` manually. If a variable needs to escape the scope, either increment its reference count or use `g_steal_pointer`. * When you are otherwise forced to call `*_unref` or `*_free` manually, _always_ use `g_clear_pointer` or `g_clear_object`. This prevents use-after-free bugs. * _Always_ prefer using the libdex API over the older GTask API for async operations. It is cleaner and easier to read, and it prevents callbacks from cluttering the source file. This often means spawning a fiber and using `dex_await`. To wrap a call to a function which uses GTask, use [dex_async_pair_new](https://gnome.pages.gitlab.gnome.org/libdex/libdex-1/class.AsyncPair.html). See `src/bz-download-worker.c` for an example of this. * _Always_ declare variables first and initialize them to `0` or `NULL`. Function calls must not be made in the declaration section of a scope. * The general layout of a `.c` file must be in this order: 1. License comment with your name mentioned 2. `#include "config.h"` 3. Include external headers, like `#include ` 4. Include internal headers, like `#include "env.h"` 5. If applicable, define the class's internal struct 6. If applicable, `G_DEFINE_TYPE (...)` or equivalent 7. If applicable, the property enums and `static GParamSpec *props[LAST_PROP] = { 0 };` 8. Declare static functions (which are not virtual methods) 9. If applicable, define class virtual methods (`dispose`, `class_init`, `snapshot`, etc) 10. Define the public API (non-`static` functions which were declared in this `.c` file's associated `.h` header file) 11. Define the static functions which were previously declared in this file bazaar-org-bazaar-48f93f4/CONTRIBUTING.md000066400000000000000000000101061524000504200175650ustar00rootroot00000000000000# Contributing Guide Welcome! We are glad that you are here! 💖 If you are here to contribute translations, please refer to the [Damned Lies Module](https://l10n.gnome.org/module/bazaar/). For code, first make sure to read the [style rules](/CODESTYLE.md). The easiest way to run Bazaar from source is to use the [foundry](https://gitlab.gnome.org/GNOME/foundry) cli: ```sh foundry run ``` Alternatively, you can do: ```sh just build-flatpak ``` Or without flatpak, if your system permits it: ```sh meson setup build --prefix=/usr --libdir=/usr/lib64 ninja -C build sudo ninja -C build install bazaar ``` You will need the following dependencies installed, along with a C compiler, meson, and ninja: | Dep Name | `pkg-config` Name | Min Version | Justification | |-------------------------------------------------------------------|-------------------|-------------|-----------------------------------------------------| | [gtk4](https://gitlab.gnome.org/GNOME/gtk/) | `gtk4` | `4.22.1` | GUI | | [libadwaita](https://gitlab.gnome.org/GNOME/libadwaita) | `libadwaita-1` | `1.8` | GNOME styling | | [libdex](https://gitlab.gnome.org/GNOME/libdex) | `libdex-1` | `1.0` | Async helpers | | [flatpak](https://github.com/flatpak/flatpak) | `flatpak` | `1.9` | Flatpak installation management | | [appstream](https://github.com/ximion/appstream) | `appstream` | `1.0` | Interpret application metadata | | [xmlb](https://github.com/hughsie/libxmlb) | `xmlb` | `0.3.4` | Handle binary xml appstream bundles/Parse plain xml | | [glycin](https://gitlab.gnome.org/GNOME/glycin) | `glycin-2` | `2.0` | Decode image URIs | | [glycin-gtk4](https://gitlab.gnome.org/GNOME/glycin) | `glycin-gtk4-2` | `2.0` | Convert glycin frames to texture representations | | [libyaml](https://github.com/yaml/libyaml) | `yaml-0.1` | `0.2.5` | Parse YAML configs | | [libsoup](https://gitlab.gnome.org/GNOME/libsoup) | `libsoup-3.0` | `3.6.0` | HTTP operations | | [json-glib](https://gitlab.gnome.org/GNOME/json-glib) | `json-glib-1.0` | `1.10.0` | Parse some HTTP replies | | [md4c](https://github.com/mity/md4c) | `md4c` | `0.5.1` | Parse markdown (.md) | | [gtksourceview](https://gitlab.gnome.org/GNOME/gtksourceview) | `gtksourceview-5` | `5.17` | Render markdown code blocks | | [webkitgtk](https://webkitgtk.org/) | `webkitgtk-6.0` | `2.50.2` | Render web views | | [libsecret](https://gitlab.gnome.org/GNOME/libsecret) | `libsecret-1` | `0.20` | Store Flathub account information | | [libproxy](https://github.com/libproxy/libproxy) | `libproxy-1.0` | `0.5` | Parse proxies for networking operations | | [malcontent](https://gitlab.freedesktop.org/pwithnall/malcontent) | `malcontent-0` | `0.12.0` | Adhere to system parental controls settings | | [libsystemd](https://github.com/systemd/systemd) | `libsystemd` | `245` | Utilities for bazaar-daemon | There is a [script](/scripts/install-deps/fedora-rawhide.sh) for installing all of these on fedora. Right now there is no hard rules on commit messages. Just be descriptive. If anything is confusing here, please do not be afraid to open an issue. We are more than happy to answer questions. bazaar-org-bazaar-48f93f4/COPYING000066400000000000000000001045201524000504200163730ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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, either version 3 of the License, or (at your option) any later version. 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 . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . bazaar-org-bazaar-48f93f4/Justfile000066400000000000000000000051151524000504200170500ustar00rootroot00000000000000# These are just convenience scripts, NOT a build system! appid := env("BAZAAR_APPID", "io.github.kolunmi.Bazaar") manifest := "./build-aux/flatpak/" + appid + ".json" branch := env("BAZAAR_BRANCH", "master") just := just_executable() alias run := run-base run-base: build-base ./build/src/bazaar build-base: meson setup build --wipe ninja -C build build-flatpak $manifest=manifest $branch=branch: #!/usr/bin/env bash set -xeuo pipefail flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo FLATPAK_BUILDER_DIR="$(realpath ".flatpak-builder")" BUILDER_ARGS+=(--default-branch="${branch}") BUILDER_ARGS+=(--state-dir="${FLATPAK_BUILDER_DIR}/flatpak-builder") BUILDER_ARGS+=("--user") BUILDER_ARGS+=("--ccache") BUILDER_ARGS+=("--force-clean") BUILDER_ARGS+=("--install") BUILDER_ARGS+=("--disable-updates") BUILDER_ARGS+=("--disable-rofiles-fuse") BUILDER_ARGS+=("${FLATPAK_BUILDER_DIR}/build-dir") BUILDER_ARGS+=("${manifest}") if which flatpak-builder &>/dev/null ; then flatpak-builder "${BUILDER_ARGS[@]}" else flatpak run org.flatpak.Builder "${BUILDER_ARGS[@]}" fi build-flatpak-bundle $appid=appid: build-flatpak #!/usr/bin/env bash set -euo pipefail FLATPAK_BUILDER_DIR="$(realpath ".flatpak-builder")" flatpak build-export repo "${FLATPAK_BUILDER_DIR}/build-dir" flatpak build-bundle repo "${appid}".flatpak "${appid}" build-rpm: #!/usr/bin/env bash mkdir -p rpmbuild podman run --rm -i -v .:/build:Z -v ./rpmbuild:/root/rpmbuild:Z registry.fedoraproject.org/fedora:latest <<'EOF' set -xeuo pipefail dnf install -y rpmdevtools mkdir -p $HOME/rpmbuild/SOURCES RPMDIR="/build/build-aux/rpm" cp "${RPMDIR}"/* $HOME/rpmbuild/SOURCES spectool -agR "${RPMDIR}"/bazaar.spec dnf builddep -y "${RPMDIR}"/bazaar.spec rpmbuild -bb "${RPMDIR}"/bazaar.spec EOF [private] default: @{{ just }} --list # Check just Syntax [group('just')] check: #!/usr/bin/bash find . -type f -name "*.just" | while read -r file; do echo "Checking syntax: $file" {{ just }} --unstable --fmt --check -f $file done echo "Checking syntax: Justfile" {{ just }} --unstable --fmt --check -f Justfile # Fix {{ just }} Syntax [group('{{ just }}')] fix: #!/usr/bin/bash find . -type f -name "*.just" | while read -r file; do echo "Checking syntax: $file" {{ just }} --unstable --fmt -f $file done echo "Checking syntax: Justfile" {{ just }} --unstable --fmt -f Justfile || { exit 1; } bazaar-org-bazaar-48f93f4/README.md000066400000000000000000000051141524000504200166160ustar00rootroot00000000000000


Bazaar

> [!NOTE] > If you are a distributor/packager who would like to learn how to customize > Bazaar, take a look at the [docs](/docs/overview.md). > [!NOTE] > If you are interested in contributing code to Bazaar (Thank you!), please see > the [contributing guide](/CONTRIBUTING.md). > [!NOTE] > If you are interested in contributing translations to Bazaar (Thank you!), > please see the [Damned Lies Module](https://l10n.gnome.org/module/bazaar/). Bazaar is a new app store for GNOME with a focus on discovering and installing apps and add-ons from Flatpak remotes, particularly [Flathub](https://flathub.org/). The UX emphasizes supporting the developers who make the Linux desktop possible. Bazaar features a "curated" tab that can be configured by distributors. Bazaar implements the gnome-shell search provider dbus interface. A krunner [plugin](https://github.com/bazaar-org/krunner-bazaar) is available for use on the KDE Plasma desktop. Thanks to [Tobias Bernard](https://tobiasbernard.com/), [Jakub Steiner](http://jimmac.eu), and [Sam Hewitt](https://snwh.org) for designing Bazaar's market stall icon. ### Installing Pre-built binaries are distributed via Flathub and GitHub actions: Get it on Flathub [![Build Flatpak and Upload Artifact](https://github.com/bazaar-org/bazaar/actions/workflows/build-flatpak.yml/badge.svg)](https://github.com/bazaar-org/bazaar/actions/workflows/build-flatpak.yml) There also exist packages for [Debian](https://tracker.debian.org/pkg/bazaar) and [Arch](https://archlinux.org/packages/extra/x86_64/bazaar/). These are not directly supported but should work fine. If you encounter a bug on any package of Bazaar other than the flatpak, ensure the bug also exists on the flatpak before reporting it here. ### Supporting If you would like to support me and the development of this app (Thank you!), I have a ko-fi here! [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/kolunmi) Thanks to everyone in the GNOME development community for creating such an awesome desktop environment! #### Code of Conduct This project adheres to the [GNOME Code of Conduct](https://conduct.gnome.org/). By participating through any means, including PRs, Issues or Discussions, you are expected to uphold this code. bazaar-org-bazaar-48f93f4/bazaar.doap000066400000000000000000000026601524000504200174470ustar00rootroot00000000000000 bazaar Discover and install applications A new app store for Linux with a focus on discovering and installing apps and add-ons from Flatpak remotes, particularly Flathub. C GTK 4 Libadwaita Kolunmi kolunmi kolunmi bazaar-org-bazaar-48f93f4/bge/000077500000000000000000000000001524000504200160735ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/bge/README.md000066400000000000000000000000301524000504200173430ustar00rootroot00000000000000# Bazaar GTK Extensions bazaar-org-bazaar-48f93f4/bge/bge-animation-private.h000066400000000000000000000032341524000504200224300ustar00rootroot00000000000000/* bge-animation-private.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include /* Copied with modifications from libadwaita */ double spring_oscillate (double damping, double mass, double stiffness, double from, double to, double time, double *velocity); /* Copied with modifications from libadwaita */ double spring_get_first_zero (double damping, double mass, double stiffness, double from, double to); /* Copied with modifications from libadwaita */ double spring_calculate_duration (double damping, double mass, double stiffness, double from, double to, gboolean clamp); gboolean bge_should_animate (GtkWidget *widget); bazaar-org-bazaar-48f93f4/bge/bge-animation.c000066400000000000000000000543111524000504200207550ustar00rootroot00000000000000/* bge-animation.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ /* This animation implementation was originally from my other project, libpastry: https://github.com/kolunmi/libpastry */ /** * BgeAnimation: * * Manages animations for a widget. Individual value animations are tracked in a * hash map with string keys, allowing them to be easily restarted or replaced. */ #define G_LOG_DOMAIN "BGE::ANIMATION" #define DELTA 0.001 #define EPSILON 0.00001 #include "bge.h" #include "bge-animation-private.h" enum { PROP_0, PROP_WIDGET, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; struct _BgeAnimation { GObject parent_instance; GtkWidget *widget; GWeakRef wr; guint tag; GHashTable *data; GPtrArray *anonymous; }; G_DEFINE_FINAL_TYPE (BgeAnimation, bge_animation, G_TYPE_OBJECT) typedef struct { double from; double to; double damping_ratio; double mass; double stiffness; double damping; gboolean clamp; BgeAnimationCallback cb; gpointer user_data; GDestroyNotify destroy_data; double est_duration; GTimer *timer; double velocity; GCancellable *cancellable; } SpringData; static gboolean tick_cb (GtkWidget *widget, GdkFrameClock *frame_clock, GWeakRef *wr); static void ensure_tick (BgeAnimation *self, GtkWidget *widget); static void destroy_spring_data (gpointer ptr); static void destroy_wr (gpointer ptr); static void dispose (GObject *object) { BgeAnimation *self = BGE_ANIMATION (object); g_autoptr (GtkWidget) widget = NULL; widget = g_weak_ref_get (&self->wr); if (widget != NULL) { gtk_widget_remove_tick_callback (widget, self->tag); self->tag = 0; } g_clear_object (&widget); g_weak_ref_clear (&self->wr); g_clear_object (&self->widget); g_clear_pointer (&self->data, g_hash_table_unref); g_clear_pointer (&self->anonymous, g_ptr_array_unref); G_OBJECT_CLASS (bge_animation_parent_class)->dispose (object); } static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BgeAnimation *self = BGE_ANIMATION (object); switch (prop_id) { case PROP_WIDGET: g_value_take_object (value, bge_animation_dup_widget (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BgeAnimation *self = BGE_ANIMATION (object); switch (prop_id) { case PROP_WIDGET: g_clear_object (&self->widget); self->widget = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void constructed (GObject *object) { BgeAnimation *self = BGE_ANIMATION (object); g_weak_ref_init (&self->wr, self->widget); g_clear_object (&self->widget); } static void bge_animation_class_init (BgeAnimationClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; /** * BgeAnimation:widget: * * The widget on which this animation is attached. */ props[PROP_WIDGET] = g_param_spec_object ( "widget", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bge_animation_init (BgeAnimation *self) { g_weak_ref_init (&self->wr, NULL); self->data = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, destroy_spring_data); self->anonymous = g_ptr_array_new_with_free_func ( destroy_spring_data); } /** * bge_animation_new: * @widget: The widget onto which to attach the tick callback * * Creates a new `BgeAnimation` object. * * Returns: The newly created `BgeAnimation` object. */ BgeAnimation * bge_animation_new (GtkWidget *widget) { g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); return g_object_new ( BGE_TYPE_ANIMATION, "widget", widget, NULL); } /** * bge_animation_dup_widget: * @self: a `BgeAnimation` * * Gets the widget on which @self is attached. * * Returns: (nullable) (transfer full): the widget for @self */ GtkWidget * bge_animation_dup_widget (BgeAnimation *self) { g_return_val_if_fail (BGE_IS_ANIMATION (self), NULL); return g_weak_ref_get (&self->wr); } /** * bge_animation_add_spring: * @self: a `BgeAnimation` * @key: (nullable): a string ID to replace, or NULL for anonymous * @from: the start value * @to: the end value * @damping_ratio: the damping ratio * @mass: the mass * @stiffness: the stiffness * @cb: a tick callback * @user_data: (nullable): the user data pointer to be passed to @cb * @destroy_data: (nullable): the destruction function for @user_data * @cancellable: (nullable): a cancellable to cancel the operation * * Adds a one shot spring animation to @self. If @key is already running in * @self, then the old animation is replaced, maintaining the current velocity. * */ void bge_animation_add_spring (BgeAnimation *self, const char *key, double from, double to, double damping_ratio, double mass, double stiffness, BgeAnimationCallback cb, gpointer user_data, GDestroyNotify destroy_data, GCancellable *cancellable) { g_autoptr (GtkWidget) widget = NULL; g_return_if_fail (BGE_IS_ANIMATION (self)); g_return_if_fail (cb != NULL); widget = g_weak_ref_get (&self->wr); if (widget != NULL) { if (bge_should_animate (widget)) { SpringData *data = NULL; if (key != NULL) /* reuse old data if possible */ data = g_hash_table_lookup (self->data, key); if (data != NULL) { if (data->user_data != NULL && data->destroy_data != NULL) /* we are going to overwrite this */ data->destroy_data (data->user_data); g_clear_pointer (&data->timer, g_timer_destroy); g_clear_object (&data->cancellable); /* old velocity is retained */ } else { data = g_new0 (typeof (*data), 1); if (key != NULL) g_hash_table_replace (self->data, g_strdup (key), data); else g_ptr_array_add (self->anonymous, data); } data->from = from; data->to = to; data->damping_ratio = damping_ratio; data->mass = mass; data->stiffness = stiffness; data->cb = cb; data->user_data = user_data; data->destroy_data = destroy_data; data->damping = damping_ratio * (/* critical damping */ 2 * sqrt (mass * stiffness)); /* We'll fill this in on the first iteration */ data->timer = NULL; if (cancellable != NULL) data->cancellable = g_object_ref (cancellable); data->est_duration = spring_calculate_duration ( data->damping, data->mass, data->stiffness, data->from, data->to, data->clamp); cb (widget, key, from, user_data); ensure_tick (self, widget); } else /* If we shouldn't animate, just invoke the callback at the final value */ { cb (widget, key, to, user_data); if (user_data != NULL && destroy_data != NULL) destroy_data (user_data); } } else { if (user_data != NULL && destroy_data != NULL) destroy_data (user_data); } } /** * bge_animation_has_key: * @self: a `BgeAnimation` * @key: a string ID * * Determines whether @key exists and represents an active animation on @self. * * Returns: a boolean representing whether the string ID exists */ gboolean bge_animation_has_key (BgeAnimation *self, const char *key) { g_return_val_if_fail (BGE_IS_ANIMATION (self), FALSE); g_return_val_if_fail (key != NULL, FALSE); return g_hash_table_contains (self->data, key); } /** * bge_animation_cancel: * @self: a `BgeAnimation` * @key: a string ID to remove * * If @key exists on @self, cancel the associated animation. */ void bge_animation_cancel (BgeAnimation *self, const char *key) { SpringData *data = NULL; g_autoptr (GtkWidget) widget = NULL; g_return_if_fail (BGE_IS_ANIMATION (self)); g_return_if_fail (key != NULL); data = g_hash_table_lookup (self->data, key); if (data == NULL) return; widget = g_weak_ref_get (&self->wr); if (widget != NULL) data->cb (widget, key, data->to, data->user_data); g_hash_table_remove (self->data, key); } /** * bge_animation_cancel_all: * @self: a `BgeAnimation` * * Cancel all animations on @self. */ void bge_animation_cancel_all (BgeAnimation *self) { GHashTableIter iter = { 0 }; g_autoptr (GtkWidget) widget = NULL; g_return_if_fail (BGE_IS_ANIMATION (self)); g_hash_table_iter_init (&iter, self->data); widget = g_weak_ref_get (&self->wr); for (;;) { char *key = NULL; SpringData *data = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &key, (gpointer *) &data)) break; if (widget != NULL) data->cb (widget, key, data->to, data->user_data); g_hash_table_iter_remove (&iter); } } static gboolean tick_cb (GtkWidget *widget, GdkFrameClock *frame_clock, GWeakRef *wr) { g_autoptr (BgeAnimation) self = NULL; gboolean cancel = FALSE; GHashTableIter iter = { 0 }; self = g_weak_ref_get (wr); if (self == NULL) return G_SOURCE_REMOVE; cancel = !bge_should_animate (widget); #define UPDATE(_data, _out_value, _out_finished, _out_cancelled) \ G_STMT_START \ { \ if (cancel || \ ((_data)->cancellable != NULL && \ g_cancellable_is_cancelled ((_data)->cancellable))) \ (_out_finished) = (_out_cancelled) = TRUE; \ else \ { \ double elapsed = 0.0; \ \ if ((_data)->timer == NULL) \ { \ (_data)->timer = g_timer_new (); \ (_out_value) = (_data)->from; \ } \ else \ { \ elapsed = g_timer_elapsed ((_data)->timer, NULL); \ (_out_value) = spring_oscillate ( \ data->damping, \ data->mass, \ data->stiffness, \ data->from, \ data->to, \ elapsed, \ &(_data)->velocity); \ } \ \ (_out_finished) = elapsed >= (_data)->est_duration; \ } \ if ((_out_finished)) \ (_out_value) = (_data)->to; \ } \ G_STMT_END /* Named anims */ g_hash_table_iter_init (&iter, self->data); for (;;) { char *key = NULL; SpringData *data = NULL; double value = 0.0; gboolean finished = FALSE; gboolean cancelled = FALSE; if (!g_hash_table_iter_next ( &iter, (gpointer *) &key, (gpointer *) &data)) break; UPDATE (data, value, finished, cancelled); if (!cancelled || cancel) data->cb (widget, key, value, data->user_data); if (finished) g_hash_table_iter_remove (&iter); } /* Anonymous anims */ for (guint i = 0; i < self->anonymous->len;) { SpringData *data = NULL; double value = 0.0; gboolean finished = FALSE; gboolean cancelled = FALSE; data = g_ptr_array_index (self->anonymous, i); UPDATE (data, value, finished, cancelled); if (!cancelled || cancel) data->cb (widget, NULL, value, data->user_data); if (finished) g_ptr_array_remove_index (self->anonymous, i); else i++; } #undef UPDATE if (g_hash_table_size (self->data) == 0 && self->anonymous->len == 0) { gtk_widget_remove_tick_callback (widget, self->tag); self->tag = 0; return G_SOURCE_REMOVE; } return G_SOURCE_CONTINUE; } /* COPIED FROM LIBADWAITA */ /* Based on RBBSpringAnimation from RBBAnimation, MIT license. * https://github.com/robb/RBBAnimation/blob/master/RBBAnimation/RBBSpringAnimation.m * * @offset: Starting value of the spring simulation. Use -1 for regular animations, * as the formulas are tailored to rest at 0 and the resulting evolution between * -1 and 0 will be lerped to the desired range afterwards. Otherwise use 0 for in-place * animations which already start at equilibrium */ double spring_oscillate (double damping, double mass, double stiffness, double from, double to, double time, double *velocity) { double b = damping; double m = mass; double k = stiffness; double v0 = 0.0; double beta = 0.0; double omega0 = 0.0; double x0 = 0.0; double envelope = 0.0; beta = b / (2 * m); omega0 = sqrt (k / m); x0 = from - to; envelope = exp (-beta * time); /* * Solutions of the form C1*e^(lambda1*x) + C2*e^(lambda2*x) * for the differential equation m*áº+b*ẋ+kx = 0 */ /* Critically damped */ /* DBL_EPSILON is too small for this specific comparison, so we use * FLT_EPSILON even though it's doubles */ if (G_APPROX_VALUE (beta, omega0, FLT_EPSILON)) { if (velocity != NULL) *velocity = envelope * (-beta * time * v0 - beta * beta * time * x0 + v0); return to + envelope * (x0 + (beta * x0 + v0) * time); } /* Underdamped */ if (beta < omega0) { double omega1 = 0.0; omega1 = sqrt ((omega0 * omega0) - (beta * beta)); if (velocity != NULL) *velocity = envelope * (v0 * cos (omega1 * time) - (x0 * omega1 + (beta * beta * x0 + beta * v0) / (omega1)) * sin (omega1 * time)); return to + envelope * (x0 * cos (omega1 * time) + ((beta * x0 + v0) / omega1) * sin (omega1 * time)); } /* Overdamped */ if (beta > omega0) { double omega2 = 0.0; omega2 = sqrt ((beta * beta) - (omega0 * omega0)); if (velocity != NULL) *velocity = envelope * (v0 * coshl (omega2 * time) + (omega2 * x0 - (beta * beta * x0 + beta * v0) / omega2) * sinhl (omega2 * time)); return to + envelope * (x0 * coshl (omega2 * time) + ((beta * x0 + v0) / omega2) * sinhl (omega2 * time)); } g_assert_not_reached (); } double spring_get_first_zero (double damping, double mass, double stiffness, double from, double to) { /* The first frame is not that important and we avoid finding the trivial 0 * for in-place animations. */ for (int i = 0; i < 20000; i++) { double y = 0.0; y = spring_oscillate ( damping, mass, stiffness, from, to, (double) i / 1000.0, NULL); if (!((to - from > DBL_EPSILON && to - y > EPSILON) || (from - to > DBL_EPSILON && y - to > EPSILON))) return y; } return 0.0; } double spring_calculate_duration (double damping, double mass, double stiffness, double from, double to, gboolean clamp) { double beta = 0.0; double omega0 = 0.0; double x0 = 0.0; double y0 = 0.0; double x1 = 0.0; double y1 = 0.0; double m = 0.0; beta = damping / (2 * mass); if (G_APPROX_VALUE (beta, 0, DBL_EPSILON) || beta < 0) return G_MAXDOUBLE; if (clamp) { if (G_APPROX_VALUE (to, from, DBL_EPSILON)) return 0; return spring_get_first_zero (damping, mass, stiffness, from, to); } omega0 = sqrt (stiffness / mass); /* * As first ansatz for the overdamped solution, * and general estimation for the oscillating ones * we take the value of the envelope when it's < epsilon */ x0 = -log (EPSILON) / beta; /* DBL_EPSILON is too small for this specific comparison, so we use * FLT_EPSILON even though it's doubles */ if (G_APPROX_VALUE (beta, omega0, FLT_EPSILON) || beta < omega0) return x0; /* * Since the overdamped solution decays way slower than the envelope * we need to use the value of the oscillation itself. * Newton's root finding method is a good candidate in this particular case: * https://en.wikipedia.org/wiki/Newton%27s_method */ y0 = spring_oscillate (damping, mass, stiffness, from, to, x0, NULL); m = (spring_oscillate ( damping, mass, stiffness, from, to, (x0 + DELTA), NULL) - y0) / DELTA; x1 = (to - y0 + m * x0) / m; y1 = spring_oscillate ( damping, mass, stiffness, from, to, x1, NULL); for (int i = 0; ABS (to - y1) > EPSILON && i < 1000; i++) { x0 = x1; y0 = y1; m = (spring_oscillate ( damping, mass, stiffness, from, to, x0 + DELTA, NULL) - y0) / DELTA; x1 = (to - y0 + m * x0) / m; y1 = spring_oscillate ( damping, mass, stiffness, from, to, x1, NULL); } if (ABS (to - y1) <= EPSILON) return x1; else return 0.0; } /* ///COPIED FROM LIBADWAITA */ static void ensure_tick (BgeAnimation *self, GtkWidget *widget) { GWeakRef *wr = NULL; if (self->tag > 0) return; wr = g_new0 (typeof (*wr), 1); g_weak_ref_init (wr, self); self->tag = gtk_widget_add_tick_callback ( widget, (GtkTickCallback) tick_cb, wr, destroy_wr); } static void destroy_spring_data (gpointer ptr) { SpringData *data = ptr; if (data->destroy_data != NULL && data->user_data != NULL) data->destroy_data (data->user_data); g_clear_pointer (&data->timer, g_timer_destroy); g_clear_object (&data->cancellable); g_free (ptr); } static void destroy_wr (gpointer ptr) { GWeakRef *wr = ptr; g_weak_ref_clear (wr); g_free (ptr); } gboolean bge_should_animate (GtkWidget *widget) { GtkSettings *settings = NULL; gboolean enable_animations = FALSE; if (!gtk_widget_get_mapped (widget)) return FALSE; settings = gtk_widget_get_settings (widget); g_object_get ( settings, "gtk-enable-animations", &enable_animations, NULL); return enable_animations; } bazaar-org-bazaar-48f93f4/bge/bge-animation.h000066400000000000000000000044311524000504200207600ustar00rootroot00000000000000/* bge-animation.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #ifndef BGE_INSIDE #error "Only can be included directly." #endif G_BEGIN_DECLS #define BGE_TYPE_ANIMATION (bge_animation_get_type ()) G_DECLARE_FINAL_TYPE (BgeAnimation, bge_animation, BGE, ANIMATION, GObject) typedef void (*BgeAnimationCallback) (GtkWidget *widget, const char *key, double value, gpointer user_data); BGE_AVAILABLE_IN_ALL BgeAnimation * bge_animation_new (GtkWidget *widget); BGE_AVAILABLE_IN_ALL GtkWidget * bge_animation_dup_widget (BgeAnimation *self); BGE_AVAILABLE_IN_ALL void bge_animation_add_spring (BgeAnimation *self, const char *key, double from, double to, double damping_ratio, double mass, double stiffness, BgeAnimationCallback cb, gpointer user_data, GDestroyNotify destroy_data, GCancellable *cancellable); BGE_AVAILABLE_IN_ALL gboolean bge_animation_has_key (BgeAnimation *self, const char *key); BGE_AVAILABLE_IN_ALL void bge_animation_cancel (BgeAnimation *self, const char *key); BGE_AVAILABLE_IN_ALL void bge_animation_cancel_all (BgeAnimation *self); G_END_DECLS bazaar-org-bazaar-48f93f4/bge/bge-carousel.c000066400000000000000000001126061524000504200206150ustar00rootroot00000000000000/* bge-carousel.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ /** * BgeCarousel: * * Arranges widgets into a horizontal carousel */ #define G_LOG_DOMAIN "BGE::CAROUSEL" #include "bge.h" #include "bge-marshalers.h" #include "util.h" #define RAISE_FACTOR 0.025 /* `ratio < 1.0` means it overshoots */ #define ANIMATION_DAMPING_RATIO 1.15 struct _BgeCarousel { GtkWidget parent_instance; GtkEventController *motion; double motion_x; double motion_y; GtkEventController *scroll; gboolean scrolling; int hscroll_start; int hscroll_current; GtkGesture *drag; gboolean dragging; double drag_x; double drag_y; BgeAnimation *animation; gboolean allow_mouse_drag; gboolean allow_overshoot; gboolean allow_scroll_wheel; gboolean allow_raise; GtkSingleSelection *model; GPtrArray *mirror; GPtrArray *widgets; }; G_DEFINE_FINAL_TYPE (BgeCarousel, bge_carousel, GTK_TYPE_WIDGET); enum { PROP_0, PROP_ALLOW_MOUSE_DRAG, PROP_ALLOW_OVERSHOOT, PROP_ALLOW_SCROLL_WHEEL, PROP_ALLOW_RAISE, PROP_MODEL, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_CREATE_WIDGET, SIGNAL_REMOVE_WIDGET, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; BGE_DEFINE_DATA ( carousel_widget, CarouselWidget, { GtkWidget *widget; int width; graphene_rect_t rect; graphene_rect_t target; gboolean raised; GCancellable *cancellable; }, BGE_RELEASE_DATA (widget, gtk_widget_unparent); BGE_RELEASE_DATA (cancellable, g_object_unref)) static void items_changed (BgeCarousel *self, guint position, guint removed, guint added, GListModel *model); static void model_selected_changed (BgeCarousel *self, GParamSpec *pspec, GtkSingleSelection *selection); static void move_to_idx (BgeCarousel *self, guint idx, /* damping_ratio <= 0.0 means no animation */ double damping_ratio); static void animate (BgeCarousel *self, const char *key, double value, CarouselWidgetData *data); static void ensure_viewport (BgeCarousel *self, GtkSingleSelection *model, gboolean animate); static void motion_enter (BgeCarousel *self, gdouble x, gdouble y, GtkEventControllerMotion *controller); static void motion_event (BgeCarousel *self, gdouble x, gdouble y, GtkEventControllerMotion *controller); static void motion_leave (BgeCarousel *self, GtkEventControllerMotion *controller); static void update_motion (BgeCarousel *self, gdouble x, gdouble y); static void scroll_begin (BgeCarousel *self, GtkEventControllerScroll *controller); static void scroll_end (BgeCarousel *self, GtkEventControllerScroll *controller); static gboolean scroll (BgeCarousel *self, gdouble dx, gdouble dy, GtkEventControllerScroll *controller); static void drag_begin (BgeCarousel *self, gdouble start_x, gdouble start_y, GtkGestureDrag *gesture); static void drag_end (BgeCarousel *self, gdouble offset_x, gdouble offset_y, GtkGestureDrag *gesture); static void drag_update (BgeCarousel *self, gdouble offset_x, gdouble offset_y, GtkGestureDrag *gesture); static void finish_horizontal_gesture (BgeCarousel *self, int offset_x, int offset_y); static void bge_carousel_dispose (GObject *object) { BgeCarousel *self = BGE_CAROUSEL (object); if (self->model != NULL) { g_signal_handlers_disconnect_by_func (self->model, items_changed, self); g_signal_handlers_disconnect_by_func (self->model, model_selected_changed, self); } g_clear_pointer (&self->animation, g_object_unref); g_clear_pointer (&self->model, g_object_unref); g_clear_pointer (&self->mirror, g_ptr_array_unref); g_clear_pointer (&self->widgets, g_ptr_array_unref); G_OBJECT_CLASS (bge_carousel_parent_class)->dispose (object); } static void bge_carousel_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BgeCarousel *self = BGE_CAROUSEL (object); switch (prop_id) { case PROP_ALLOW_MOUSE_DRAG: g_value_set_boolean (value, bge_carousel_get_allow_mouse_drag (self)); break; case PROP_ALLOW_OVERSHOOT: g_value_set_boolean (value, bge_carousel_get_allow_overshoot (self)); break; case PROP_ALLOW_SCROLL_WHEEL: g_value_set_boolean (value, bge_carousel_get_allow_scroll_wheel (self)); break; case PROP_ALLOW_RAISE: g_value_set_boolean (value, bge_carousel_get_allow_raise (self)); break; case PROP_MODEL: g_value_set_object (value, bge_carousel_get_model (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_carousel_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BgeCarousel *self = BGE_CAROUSEL (object); switch (prop_id) { case PROP_ALLOW_MOUSE_DRAG: bge_carousel_set_allow_mouse_drag (self, g_value_get_boolean (value)); break; case PROP_ALLOW_OVERSHOOT: bge_carousel_set_allow_overshoot (self, g_value_get_boolean (value)); break; case PROP_ALLOW_SCROLL_WHEEL: bge_carousel_set_allow_scroll_wheel (self, g_value_get_boolean (value)); break; case PROP_ALLOW_RAISE: bge_carousel_set_allow_raise (self, g_value_get_boolean (value)); break; case PROP_MODEL: bge_carousel_set_model (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_carousel_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { BgeCarousel *self = BGE_CAROUSEL (widget); for (guint i = 0; i < self->widgets->len; i++) { CarouselWidgetData *child = NULL; int tmp_minimum = 0; int tmp_natural = 0; int tmp_minimum_baseline = 0; int tmp_natural_baseline = 0; child = g_ptr_array_index (self->widgets, i); gtk_widget_measure ( child->widget, orientation, for_size, &tmp_minimum, &tmp_natural, &tmp_minimum_baseline, &tmp_natural_baseline); if (tmp_minimum > 0 && tmp_minimum > *minimum) *minimum = tmp_minimum; if (tmp_natural > 0 && tmp_natural > *natural) *natural = tmp_natural; if (tmp_minimum_baseline > 0 && tmp_minimum_baseline > *minimum_baseline) *minimum_baseline = tmp_minimum_baseline; if (tmp_natural_baseline > 0 && tmp_natural_baseline > *natural_baseline) *natural_baseline = tmp_natural_baseline; } } static void bge_carousel_size_allocate (GtkWidget *widget, int width, int height, int baseline) { BgeCarousel *self = BGE_CAROUSEL (widget); ensure_viewport (self, self->model, FALSE); for (guint i = 0; i < self->widgets->len; i++) { CarouselWidgetData *child = NULL; g_autoptr (GskTransform) transform = NULL; child = g_ptr_array_index (self->widgets, i); transform = gsk_transform_translate ( gsk_transform_new (), &child->rect.origin); gtk_widget_allocate ( child->widget, child->rect.size.width, child->rect.size.height, baseline, g_steal_pointer (&transform)); } } static void bge_carousel_class_init (BgeCarouselClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bge_carousel_set_property; object_class->get_property = bge_carousel_get_property; object_class->dispose = bge_carousel_dispose; /** * BgeCarousel:allow-mouse-drag: * * Whether to allow dragging with the mouse. */ props[PROP_ALLOW_MOUSE_DRAG] = g_param_spec_boolean ( "allow-mouse-drag", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * BgeCarousel:allow-overshoot: * * Whether to allow overshooting the ends of the carousel with drag/touchpad * input. Once the event completes, the carousel offset value will go back to * that of the start/end widget. Setting this value to FALSE will prevent this * widget from capturing input events which would result in an overshoot. */ props[PROP_ALLOW_OVERSHOOT] = g_param_spec_boolean ( "allow-overshoot", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * BgeCarousel:allow-scroll-wheel: * * Whether to allow moving the carousel contents with the horizontal scroll * wheel. */ props[PROP_ALLOW_SCROLL_WHEEL] = g_param_spec_boolean ( "allow-scroll-wheel", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * BgeCarousel:allow-raise: * * Whether to allow raise animations when motion input events hover over them * carousel widgets. */ props[PROP_ALLOW_RAISE] = g_param_spec_boolean ( "allow-raise", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * BgeCarousel:model: * * The selection model for the carousel contents. */ props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, GTK_TYPE_SINGLE_SELECTION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); /** * BgeCarousel::create-widget: * @carousel: the object that received the signal * @object: a list item object from [property@Bge.Carousel:model] * * Emitted when an object is being bound to the carousel * * Return: a newly allocated widget to add to the carousel */ signals[SIGNAL_CREATE_WIDGET] = g_signal_new ( "create-widget", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, bge_marshal_OBJECT__OBJECT, GTK_TYPE_WIDGET, 1, G_TYPE_OBJECT); g_signal_set_va_marshaller ( signals[SIGNAL_CREATE_WIDGET], G_TYPE_FROM_CLASS (klass), bge_marshal_OBJECT__OBJECTv); /** * BgeCarousel::remove-widget: * @carousel: the object that received the signal * @widget: the widget which was created by [signal@Bge.Carousel::create-widget] * @object: a list item object from [property@Bge.Carousel:model] * * Emitted when an object is being unbound from the carousel */ signals[SIGNAL_REMOVE_WIDGET] = g_signal_new ( "remove-widget", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, bge_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 2, GTK_TYPE_WIDGET, G_TYPE_OBJECT); g_signal_set_va_marshaller ( signals[SIGNAL_REMOVE_WIDGET], G_TYPE_FROM_CLASS (klass), bge_marshal_VOID__OBJECT_OBJECTv); widget_class->measure = bge_carousel_measure; widget_class->size_allocate = bge_carousel_size_allocate; } static void bge_carousel_init (BgeCarousel *self) { self->animation = bge_animation_new (GTK_WIDGET (self)); self->mirror = g_ptr_array_new_with_free_func ( (GDestroyNotify) g_object_unref); self->widgets = g_ptr_array_new_with_free_func ( carousel_widget_data_unref); gtk_widget_set_overflow (GTK_WIDGET (self), GTK_OVERFLOW_HIDDEN); self->motion = gtk_event_controller_motion_new (); g_signal_connect_swapped (self->motion, "enter", G_CALLBACK (motion_enter), self); g_signal_connect_swapped (self->motion, "motion", G_CALLBACK (motion_event), self); g_signal_connect_swapped (self->motion, "leave", G_CALLBACK (motion_leave), self); gtk_widget_add_controller (GTK_WIDGET (self), self->motion); self->scroll = gtk_event_controller_scroll_new ( GTK_EVENT_CONTROLLER_SCROLL_HORIZONTAL | GTK_EVENT_CONTROLLER_SCROLL_KINETIC); g_signal_connect_swapped (self->scroll, "scroll-begin", G_CALLBACK (scroll_begin), self); g_signal_connect_swapped (self->scroll, "scroll-end", G_CALLBACK (scroll_end), self); g_signal_connect_swapped (self->scroll, "scroll", G_CALLBACK (scroll), self); gtk_widget_add_controller (GTK_WIDGET (self), self->scroll); self->drag = gtk_gesture_drag_new (); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (self->drag), GTK_PHASE_CAPTURE); g_signal_connect_swapped (self->drag, "drag-begin", G_CALLBACK (drag_begin), self); g_signal_connect_swapped (self->drag, "drag-end", G_CALLBACK (drag_end), self); g_signal_connect_swapped (self->drag, "drag-update", G_CALLBACK (drag_update), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (self->drag)); } /** * bge_carousel_new: * * Creates a new `BgeCarousel` object. * * Returns: The newly created `BgeCarousel` object. */ GtkWidget * bge_carousel_new (void) { return g_object_new (BGE_TYPE_CAROUSEL, NULL); } /** * bge_carousel_get_allow_mouse_drag: * @self: a `BgeCarousel` * * Gets [property@Bge.Carousel:allow-mouse-drag]. * * Returns: the value of the property */ gboolean bge_carousel_get_allow_mouse_drag (BgeCarousel *self) { g_return_val_if_fail (BGE_IS_CAROUSEL (self), FALSE); return self->allow_mouse_drag; } /** * bge_carousel_get_allow_overshoot: * @self: a `BgeCarousel` * * Gets [property@Bge.Carousel:allow-overshoot]. * * Returns: the value of the property */ gboolean bge_carousel_get_allow_overshoot (BgeCarousel *self) { g_return_val_if_fail (BGE_IS_CAROUSEL (self), FALSE); return self->allow_overshoot; } /** * bge_carousel_get_allow_scroll_wheel: * @self: a `BgeCarousel` * * Gets [property@Bge.Carousel:allow-scroll-wheel]. * * Returns: the value of the property */ gboolean bge_carousel_get_allow_scroll_wheel (BgeCarousel *self) { g_return_val_if_fail (BGE_IS_CAROUSEL (self), FALSE); return self->allow_scroll_wheel; } /** * bge_carousel_get_allow_raise: * @self: a `BgeCarousel` * * Gets [property@Bge.Carousel:allow-raise]. * * Returns: the value of the property */ gboolean bge_carousel_get_allow_raise (BgeCarousel *self) { g_return_val_if_fail (BGE_IS_CAROUSEL (self), FALSE); return self->allow_raise; } /** * bge_carousel_get_model: * @self: a `BgeCarousel` * * Gets [property@Bge.Carousel:model]. * * Returns: (nullable): the value of the property */ GtkSingleSelection * bge_carousel_get_model (BgeCarousel *self) { g_return_val_if_fail (BGE_IS_CAROUSEL (self), NULL); return self->model; } /** * bge_carousel_get_nth_page: * @self: a `BgeCarousel` * @index: Index of the page. * * Returns: (nullable) (transfer none): the page at @index, or NULL if out of bounds */ GtkWidget * bge_carousel_get_nth_page (BgeCarousel *self, guint index) { CarouselWidgetData *data = NULL; g_return_val_if_fail (BGE_IS_CAROUSEL (self), NULL); if (index >= self->widgets->len) return NULL; data = g_ptr_array_index (self->widgets, index); return data->widget; } /** * bge_carousel_set_allow_mouse_drag: * @self: a `BgeCarousel` * @allow_mouse_drag: a boolean * * Sets [property@Bge.Carousel:allow-mouse-drag]. */ void bge_carousel_set_allow_mouse_drag (BgeCarousel *self, gboolean allow_mouse_drag) { g_return_if_fail (BGE_IS_CAROUSEL (self)); if (!!allow_mouse_drag == !!self->allow_mouse_drag) return; self->allow_mouse_drag = allow_mouse_drag; if (!allow_mouse_drag && self->dragging) { self->dragging = FALSE; finish_horizontal_gesture (self, self->drag_x, self->drag_y); self->drag_x = 0.0; self->drag_y = 0.0; } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ALLOW_MOUSE_DRAG]); } /** * bge_carousel_set_allow_overshoot: * @self: a `BgeCarousel` * @allow_overshoot: a boolean * * Sets [property@Bge.Carousel:allow-overshoot]. */ void bge_carousel_set_allow_overshoot (BgeCarousel *self, gboolean allow_overshoot) { g_return_if_fail (BGE_IS_CAROUSEL (self)); if (!!allow_overshoot == !!self->allow_overshoot) return; self->allow_overshoot = allow_overshoot; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ALLOW_OVERSHOOT]); } /** * bge_carousel_set_allow_scroll_wheel: * @self: a `BgeCarousel` * @allow_scroll_wheel: a boolean * * Sets [property@Bge.Carousel:allow-scroll-wheel]. */ void bge_carousel_set_allow_scroll_wheel (BgeCarousel *self, gboolean allow_scroll_wheel) { g_return_if_fail (BGE_IS_CAROUSEL (self)); if (!!allow_scroll_wheel == !!self->allow_scroll_wheel) return; self->allow_scroll_wheel = allow_scroll_wheel; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ALLOW_SCROLL_WHEEL]); } /** * bge_carousel_set_allow_raise: * @self: a `BgeCarousel` * @allow_raise: a boolean * * Sets [property@Bge.Carousel:allow-raise]. */ void bge_carousel_set_allow_raise (BgeCarousel *self, gboolean allow_raise) { g_return_if_fail (BGE_IS_CAROUSEL (self)); if (!!allow_raise == !!self->allow_raise) return; self->allow_raise = allow_raise; if (self->model != NULL) ensure_viewport (self, self->model, TRUE); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ALLOW_RAISE]); } /** * bge_carousel_set_model: * @self: a `BgeCarousel` * @model: a `GtkSingleSelection` object * * Sets [property@Bge.Carousel:model]. */ void bge_carousel_set_model (BgeCarousel *self, GtkSingleSelection *model) { g_return_if_fail (BGE_IS_CAROUSEL (self)); g_return_if_fail (model == NULL || GTK_IS_SINGLE_SELECTION (model)); if (model == self->model) return; if (self->model != NULL) { g_signal_handlers_disconnect_by_func (self->model, items_changed, self); g_signal_handlers_disconnect_by_func (self->model, model_selected_changed, self); items_changed ( self, 0, g_list_model_get_n_items (G_LIST_MODEL (self->model)), 0, G_LIST_MODEL (self->model)); } g_clear_pointer (&self->model, g_object_unref); if (model != NULL) { self->model = g_object_ref (model); items_changed ( self, 0, 0, g_list_model_get_n_items (G_LIST_MODEL (model)), G_LIST_MODEL (model)); g_signal_connect_swapped ( model, "items-changed", G_CALLBACK (items_changed), self); g_signal_connect_swapped ( model, "notify::selected", G_CALLBACK (model_selected_changed), self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); } static void items_changed (BgeCarousel *self, guint position, guint removed, guint added, GListModel *model) { for (guint i = 0; i < removed; i++) { GObject *object = NULL; CarouselWidgetData *child = NULL; object = g_ptr_array_index (self->mirror, position + i); child = g_ptr_array_index (self->widgets, position + i); if (child->cancellable != NULL) g_cancellable_cancel (child->cancellable); g_signal_emit (self, signals[SIGNAL_REMOVE_WIDGET], 0, child->widget, object); } if (removed > 0) { g_ptr_array_remove_range (self->mirror, position, removed); g_ptr_array_remove_range (self->widgets, position, removed); } for (guint i = 0; i < added; i++) { g_autoptr (GObject) object = NULL; GtkWidget *child = NULL; CarouselWidgetData *data = NULL; object = g_list_model_get_item (model, position + i); g_signal_emit (self, signals[SIGNAL_CREATE_WIDGET], 0, object, &child); if (child == NULL) { g_critical ("Failed to populate child for carousel widget"); child = gtk_fixed_new (); } if (position + i == 0) gtk_widget_set_parent (child, GTK_WIDGET (self)); else { CarouselWidgetData *prev = NULL; prev = g_ptr_array_index (self->widgets, position + i - 1); gtk_widget_insert_after (child, GTK_WIDGET (self), prev->widget); } data = carousel_widget_data_new (); data->widget = child; g_ptr_array_insert (self->mirror, position + i, g_object_ref (object)); g_ptr_array_insert (self->widgets, position + i, data); } ensure_viewport (self, GTK_SINGLE_SELECTION (model), FALSE); } static void model_selected_changed (BgeCarousel *self, GParamSpec *pspec, GtkSingleSelection *selection) { guint idx = 0; idx = gtk_single_selection_get_selected (selection); if (idx != G_MAXUINT) move_to_idx (self, idx, ANIMATION_DAMPING_RATIO); gtk_widget_queue_allocate (GTK_WIDGET (self)); } static void move_to_idx (BgeCarousel *self, guint idx, /* damping_ratio <= 0.0 means no animation */ double damping_ratio) { int width = 0; int height = 0; int offset = 0; width = gtk_widget_get_width (GTK_WIDGET (self)); height = gtk_widget_get_height (GTK_WIDGET (self)); if (width == 0 || height == 0) { gtk_widget_queue_allocate (GTK_WIDGET (self)); return; } offset = width / 2; if (self->scrolling) offset += self->hscroll_start - self->hscroll_current; if (self->dragging) offset += self->drag_x; for (guint i = 0; i <= idx; i++) { CarouselWidgetData *child = NULL; int hminimum = 0; int hnatural = 0; int unused = 0; int child_width = 0; child = g_ptr_array_index (self->widgets, i); gtk_widget_measure ( child->widget, GTK_ORIENTATION_HORIZONTAL, height, &hminimum, &hnatural, &unused, &unused); if (gtk_widget_get_hexpand (child->widget)) child_width = MAX (hminimum, width); else child_width = CLAMP (hnatural, hminimum, width); if (i == idx) offset -= child_width / 2; else offset -= child_width; } for (guint i = 0; i < self->widgets->len; i++) { CarouselWidgetData *child = NULL; int hminimum = 0; int hnatural = 0; int unused = 0; int rect_width = 0; int child_width = 0; int child_height = 0; int child_x = 0; int child_y = 0; graphene_rect_t target = { 0 }; gboolean avoid_animation = FALSE; child = g_ptr_array_index (self->widgets, i); gtk_widget_measure ( child->widget, GTK_ORIENTATION_HORIZONTAL, height, &hminimum, &hnatural, &unused, &unused); if (gtk_widget_get_hexpand (child->widget)) rect_width = MAX (hminimum, width); else rect_width = CLAMP (hnatural, hminimum, width); if (child->raised || !self->allow_raise) { child_width = rect_width; child_height = height; child_x = offset; child_y = 0; } else { child_height = round ((double) height * (1.0 - RAISE_FACTOR)); gtk_widget_measure ( child->widget, GTK_ORIENTATION_HORIZONTAL, child_height, &hminimum, &hnatural, &unused, &unused); child_width = CLAMP (hnatural, hminimum, width); child_x = offset + round ((double) (rect_width - child_width) * 0.5); child_y = round ((double) height * (0.5 * RAISE_FACTOR)); } target = GRAPHENE_RECT_INIT (child_x, child_y, child_width, child_height); avoid_animation = graphene_rect_equal (&target, &child->target); if (child->width != rect_width || (damping_ratio < 0.0 && !avoid_animation)) { if (child->cancellable != NULL) g_cancellable_cancel (child->cancellable); child->width = rect_width; child->rect = target; child->target = target; } else if (avoid_animation) child->target = target; else { char buf[64] = { 0 }; g_clear_object (&child->cancellable); child->cancellable = g_cancellable_new (); #define MASS 1.0 #define STIFFNESS 800.0 /* pointer is to ensure a unique identifier so as not to overwrite any other child's key */ g_snprintf (buf, sizeof (buf), "x%p", child); bge_animation_add_spring ( self->animation, buf, child->rect.origin.x, target.origin.x, damping_ratio, MASS, STIFFNESS, (BgeAnimationCallback) animate, carousel_widget_data_ref (child), carousel_widget_data_unref, child->cancellable); g_snprintf (buf, sizeof (buf), "y%p", child); bge_animation_add_spring ( self->animation, buf, child->rect.origin.y, target.origin.y, damping_ratio, MASS, STIFFNESS, (BgeAnimationCallback) animate, carousel_widget_data_ref (child), carousel_widget_data_unref, child->cancellable); g_snprintf (buf, sizeof (buf), "w%p", child); bge_animation_add_spring ( self->animation, buf, child->rect.size.width, target.size.width, damping_ratio, MASS, STIFFNESS, (BgeAnimationCallback) animate, carousel_widget_data_ref (child), carousel_widget_data_unref, child->cancellable); g_snprintf (buf, sizeof (buf), "h%p", child); bge_animation_add_spring ( self->animation, buf, child->rect.size.height, target.size.height, damping_ratio, MASS, STIFFNESS, (BgeAnimationCallback) animate, carousel_widget_data_ref (child), carousel_widget_data_unref, child->cancellable); #undef STIFFNESS #undef MASS child->target = target; } offset += rect_width; } gtk_widget_queue_allocate (GTK_WIDGET (self)); } static void animate (BgeCarousel *self, const char *key, double value, CarouselWidgetData *data) { switch (*key) { case 'x': data->rect.origin.x = value; break; case 'y': data->rect.origin.y = value; break; case 'w': data->rect.size.width = value; break; case 'h': data->rect.size.height = value; break; default: g_assert_not_reached (); } gtk_widget_queue_allocate (GTK_WIDGET (self)); } static void ensure_viewport (BgeCarousel *self, GtkSingleSelection *model, gboolean animate) { guint n_items = 0; n_items = g_list_model_get_n_items (G_LIST_MODEL (model)); if (n_items > 0) { guint selected = 0; selected = gtk_single_selection_get_selected (model); if (selected == G_MAXUINT) { gtk_single_selection_set_selected (model, 0); move_to_idx (self, 0, animate ? ANIMATION_DAMPING_RATIO : -1.0); } else move_to_idx (self, selected, animate ? ANIMATION_DAMPING_RATIO : -1.0); } gtk_widget_queue_allocate (GTK_WIDGET (self)); } static void motion_enter (BgeCarousel *self, gdouble x, gdouble y, GtkEventControllerMotion *controller) { self->motion_x = x; self->motion_y = y; update_motion (self, x, y); } static void motion_event (BgeCarousel *self, gdouble x, gdouble y, GtkEventControllerMotion *controller) { self->motion_x = x; self->motion_y = y; update_motion (self, x, y); } static void motion_leave (BgeCarousel *self, GtkEventControllerMotion *controller) { if (self->dragging) return; self->motion_x = -1.0; self->motion_y = -1.0; update_motion (self, -1.0, -1.0); } static void update_motion (BgeCarousel *self, gdouble x, gdouble y) { graphene_point_t point = { 0 }; gboolean ensure = FALSE; point = GRAPHENE_POINT_INIT (x, y); if (self->scrolling) return; for (guint i = 0; i < self->widgets->len; i++) { CarouselWidgetData *child = NULL; gboolean contained = FALSE; child = g_ptr_array_index (self->widgets, i); contained = graphene_rect_contains_point (&child->target, &point); if (!!contained != !!child->raised) { child->raised = contained; ensure = TRUE; } } if (self->dragging) return; if (ensure) ensure_viewport (self, self->model, TRUE); } static void scroll_begin (BgeCarousel *self, GtkEventControllerScroll *controller) { self->scrolling = TRUE; self->hscroll_start = self->motion_x; self->hscroll_current = self->motion_x; } static void scroll_end (BgeCarousel *self, GtkEventControllerScroll *controller) { self->scrolling = FALSE; finish_horizontal_gesture ( self, self->hscroll_start - self->hscroll_current, 0); self->hscroll_start = -1; self->hscroll_current = -1; update_motion (self, self->motion_x, self->motion_y); } static gboolean scroll (BgeCarousel *self, gdouble dx, gdouble dy, GtkEventControllerScroll *controller) { guint n_items = 0; GdkDevice *device = NULL; GdkInputSource source = 0; if (self->model == NULL) { self->scrolling = FALSE; return FALSE; } n_items = g_list_model_get_n_items (G_LIST_MODEL (self->model)); if (n_items == 0) { self->scrolling = FALSE; return FALSE; } device = gtk_event_controller_get_current_event_device ( GTK_EVENT_CONTROLLER (controller)); source = gdk_device_get_source (device); switch (source) { case GDK_SOURCE_TOUCHPAD: case GDK_SOURCE_TRACKPOINT: { if (self->widgets->len > 0 && !self->allow_overshoot) { guint selection = 0; selection = gtk_single_selection_get_selected (self->model); if ((selection == 0 && self->hscroll_current + dx < 0) || (selection == self->widgets->len - 1 && self->hscroll_current + dx > 0)) { self->scrolling = FALSE; return FALSE; } } self->hscroll_current += dx; ensure_viewport (self, self->model, FALSE); } break; case GDK_SOURCE_MOUSE: case GDK_SOURCE_PEN: case GDK_SOURCE_KEYBOARD: case GDK_SOURCE_TOUCHSCREEN: case GDK_SOURCE_TABLET_PAD: default: { guint selected = 0; guint new_selected = 0; if (!self->allow_scroll_wheel) break; selected = gtk_single_selection_get_selected (self->model); if (dx > 0) new_selected = MIN (selected + 1, n_items - 1); else { if (selected == 0) new_selected = 0; else new_selected = selected - 1; } gtk_single_selection_set_selected (self->model, new_selected); } break; } return TRUE; } static void drag_begin (BgeCarousel *self, gdouble start_x, gdouble start_y, GtkGestureDrag *gesture) { if (!self->allow_mouse_drag) return; self->dragging = TRUE; if (self->model == NULL) return; ensure_viewport (self, self->model, TRUE); } static void drag_end (BgeCarousel *self, gdouble offset_x, gdouble offset_y, GtkGestureDrag *gesture) { if (!self->dragging) /* This situation will happen if the `allow-mouse-drag` prop is set to FALSE while a drag is taking place */ return; self->dragging = FALSE; finish_horizontal_gesture (self, self->drag_x, self->drag_y); self->drag_x = 0.0; self->drag_y = 0.0; if (offset_x < -3 || offset_x > 3 || offset_y < -3 || offset_y > 3) gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); } static void drag_update (BgeCarousel *self, gdouble offset_x, gdouble offset_y, GtkGestureDrag *gesture) { if (!self->dragging) return; self->drag_x = offset_x; self->drag_y = offset_y; if (self->model == NULL) return; if (self->widgets->len > 0 && !self->allow_overshoot) { guint selected = 0; selected = gtk_single_selection_get_selected (self->model); if (selected == 0) self->drag_x = MIN (self->drag_x, 0.0); if (selected == self->widgets->len - 1) self->drag_x = MAX (self->drag_x, 0.0); } ensure_viewport (self, self->model, FALSE); } static void finish_horizontal_gesture (BgeCarousel *self, int offset_x, int offset_y) { guint selected = 0; double width = 0.0; guint new_selected = G_MAXUINT; int min_distance = G_MAXINT; if (self->model == NULL || self->widgets->len == 0) return; if (offset_x == 0) return; selected = gtk_single_selection_get_selected (self->model); width = gtk_widget_get_width (GTK_WIDGET (self)); for (guint i = 0; i < self->widgets->len; i++) { CarouselWidgetData *child = NULL; int left_distance = 0; int right_distance = 0; int distance_from_center = 0; child = g_ptr_array_index (self->widgets, i); if (child->rect.origin.x > width / 2.0) left_distance = child->rect.origin.x - width / 2.0; else left_distance = width / 2.0 - child->rect.origin.x; if ((child->rect.origin.x + child->rect.size.width) > width / 2.0) right_distance = (child->rect.origin.x + child->rect.size.width) - width / 2.0; else right_distance = width / 2.0 - (child->rect.origin.x + child->rect.size.width); distance_from_center = MIN (left_distance, right_distance); if (distance_from_center < min_distance) { new_selected = i; min_distance = distance_from_center; } } if (new_selected == selected) { /* Ensure dragging is not too stiff; meaning if we drag the content at least 15 pixels in either direction, it will automatically snap to the next widget */ if (offset_x > 15 && selected > 0) new_selected--; else if (offset_x < -15 && selected < self->widgets->len - 1) new_selected++; } if (new_selected == G_MAXUINT || new_selected == selected) ensure_viewport (self, self->model, TRUE); else gtk_single_selection_set_selected (self->model, new_selected); } /* End of bge-carousel.c */ bazaar-org-bazaar-48f93f4/bge/bge-carousel.h000066400000000000000000000044511524000504200206200ustar00rootroot00000000000000/* bge-carousel.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #ifndef BGE_INSIDE #error "Only can be included directly." #endif G_BEGIN_DECLS #define BGE_TYPE_CAROUSEL (bge_carousel_get_type ()) G_DECLARE_FINAL_TYPE (BgeCarousel, bge_carousel, BGE, CAROUSEL, GtkWidget) BGE_AVAILABLE_IN_ALL GtkWidget * bge_carousel_new (void); BGE_AVAILABLE_IN_ALL gboolean bge_carousel_get_allow_mouse_drag (BgeCarousel *self); BGE_AVAILABLE_IN_ALL gboolean bge_carousel_get_allow_overshoot (BgeCarousel *self); BGE_AVAILABLE_IN_ALL gboolean bge_carousel_get_allow_scroll_wheel (BgeCarousel *self); BGE_AVAILABLE_IN_ALL gboolean bge_carousel_get_allow_raise (BgeCarousel *self); BGE_AVAILABLE_IN_ALL GtkSingleSelection * bge_carousel_get_model (BgeCarousel *self); BGE_AVAILABLE_IN_ALL GtkWidget * bge_carousel_get_nth_page (BgeCarousel *self, guint index); BGE_AVAILABLE_IN_ALL void bge_carousel_set_allow_mouse_drag (BgeCarousel *self, gboolean allow_mouse_drag); BGE_AVAILABLE_IN_ALL void bge_carousel_set_allow_overshoot (BgeCarousel *self, gboolean allow_overshoot); BGE_AVAILABLE_IN_ALL void bge_carousel_set_allow_scroll_wheel (BgeCarousel *self, gboolean allow_scroll_wheel); BGE_AVAILABLE_IN_ALL void bge_carousel_set_allow_raise (BgeCarousel *self, gboolean allow_raise); BGE_AVAILABLE_IN_ALL void bge_carousel_set_model (BgeCarousel *self, GtkSingleSelection *model); G_END_DECLS /* End of bge-carousel.h */ bazaar-org-bazaar-48f93f4/bge/bge-markdown-render.c000066400000000000000000000771331524000504200221040ustar00rootroot00000000000000/* bge-markdown-render.c * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ /** * BgeMarkdownRender: * * Renders markdown input using regular GTK widgets. * * For code blocks with a specified language, BgeMarkdownRender will attempt to * apply gtksourceview styling. */ #define G_LOG_DOMAIN "BGE::MARKDOWN-RENDER" #include #include #include "bge-marshalers.h" #include "bge.h" struct _BgeMarkdownRender { GtkWidget parent_instance; char *markdown; gboolean dark; gboolean wrap_tables; int spacing; GtkWidget *box; GPtrArray *box_children; GPtrArray *source_views; }; G_DEFINE_FINAL_TYPE (BgeMarkdownRender, bge_markdown_render, GTK_TYPE_WIDGET); enum { PROP_0, PROP_MARKDOWN, PROP_DARK, PROP_WRAP_TABLES, PROP_SPACING, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_BIND_INLINE_URI, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void regenerate (BgeMarkdownRender *self); typedef struct { BgeMarkdownRender *self; GtkBox *box; GPtrArray *box_children; char *beginning; GString *markup; GArray *block_stack; GPtrArray *container_stack; int indent; int list_index; MD_CHAR list_prefix; GPtrArray *source_views; GString *alt_text; gboolean in_image; GtkWidget *grid; guint grid_rows; guint grid_columns; guint grid_row_idx; guint grid_column_idx; } ParseCtx; static GtkBox * current_container (ParseCtx *ctx) { if (ctx->container_stack->len > 0) return g_ptr_array_index (ctx->container_stack, ctx->container_stack->len - 1); return ctx->box; } static int enter_block (MD_BLOCKTYPE type, void *detail, void *user_data); static int leave_block (MD_BLOCKTYPE type, void *detail, void *user_data); static int enter_span (MD_SPANTYPE type, void *detail, void *user_data); static int leave_span (MD_SPANTYPE type, void *detail, void *user_data); static int text (MD_TEXTTYPE type, const MD_CHAR *buf, MD_SIZE size, void *user_data); static const MD_PARSER parser = { .flags = MD_FLAG_COLLAPSEWHITESPACE | MD_FLAG_NOHTMLBLOCKS | MD_FLAG_NOHTMLSPANS | MD_FLAG_STRIKETHROUGH | MD_FLAG_TABLES, .enter_block = enter_block, .leave_block = leave_block, .enter_span = enter_span, .leave_span = leave_span, .text = text, }; static int terminate_block (MD_BLOCKTYPE type, void *detail, void *user_data); static void check_dark_mode (BgeMarkdownRender *self); static void bge_markdown_render_dispose (GObject *object) { BgeMarkdownRender *self = BGE_MARKDOWN_RENDER (object); g_clear_pointer (&self->markdown, g_free); g_clear_pointer (&self->box, gtk_widget_unparent); g_clear_pointer (&self->box_children, g_ptr_array_unref); g_clear_pointer (&self->source_views, g_ptr_array_unref); G_OBJECT_CLASS (bge_markdown_render_parent_class)->dispose (object); } static void bge_markdown_render_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BgeMarkdownRender *self = BGE_MARKDOWN_RENDER (object); switch (prop_id) { case PROP_MARKDOWN: g_value_set_string (value, bge_markdown_render_get_markdown (self)); break; case PROP_DARK: g_value_set_boolean (value, bge_markdown_render_get_dark (self)); break; case PROP_WRAP_TABLES: g_value_set_boolean (value, bge_markdown_render_get_wrap_tables (self)); break; case PROP_SPACING: g_value_set_int (value, bge_markdown_render_get_spacing (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_markdown_render_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BgeMarkdownRender *self = BGE_MARKDOWN_RENDER (object); switch (prop_id) { case PROP_MARKDOWN: bge_markdown_render_set_markdown (self, g_value_get_string (value)); break; case PROP_DARK: bge_markdown_render_set_dark (self, g_value_get_boolean (value)); break; case PROP_WRAP_TABLES: bge_markdown_render_set_wrap_tables (self, g_value_get_boolean (value)); break; case PROP_SPACING: bge_markdown_render_set_spacing (self, g_value_get_int (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkSizeRequestMode bge_markdown_render_get_request_mode (GtkWidget *widget) { return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; } static void bge_markdown_render_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { BgeMarkdownRender *self = BGE_MARKDOWN_RENDER (widget); gtk_widget_measure ( self->box, orientation, for_size, minimum, natural, minimum_baseline, natural_baseline); } static void bge_markdown_render_size_allocate (GtkWidget *widget, int width, int height, int baseline) { BgeMarkdownRender *self = BGE_MARKDOWN_RENDER (widget); if (gtk_widget_should_layout (self->box)) gtk_widget_allocate (self->box, width, height, baseline, NULL); } static void bge_markdown_render_class_init (BgeMarkdownRenderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bge_markdown_render_set_property; object_class->get_property = bge_markdown_render_get_property; object_class->dispose = bge_markdown_render_dispose; /** * BgeMarkdownRender:markdown: * * Raw markdown text. */ props[PROP_MARKDOWN] = g_param_spec_string ( "markdown", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * BgeMarkdownRender:dark: * * Whether to apply dark styling to widgets where applicable. */ props[PROP_DARK] = g_param_spec_boolean ( "dark", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * BgeMarkdownRender:wrap-tables: * * Whether if table elements should scroll horizontally or wrap. */ props[PROP_WRAP_TABLES] = g_param_spec_boolean ( "wrap-tables", NULL, NULL, TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * BgeMarkdownRender:spacing: * * Vertical spacing between rendered block-level elements, in pixels. */ props[PROP_SPACING] = g_param_spec_int ( "spacing", NULL, NULL, 0, G_MAXINT, 7, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); /** * BgeMarkdownRender::bind-inline-uri: * @markdown: the object that received the signal * @title: a string title * @src: a string source uri * * Emitted when an inline image is encountered during parsing. The callback * should respond with a new widget to add to represent the uri. If no * callback is registered for this signal, or if the callback returns NULL, a * [class@Gtk.Picture] is automatically constructed and used. * * Return: a newly allocated widget to add to the markdown view */ signals[SIGNAL_BIND_INLINE_URI] = g_signal_new ( "bind-inline-uri", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, bge_marshal_OBJECT__STRING_STRING, GTK_TYPE_WIDGET, 2, G_TYPE_STRING, G_TYPE_STRING); g_signal_set_va_marshaller ( signals[SIGNAL_BIND_INLINE_URI], G_TYPE_FROM_CLASS (klass), bge_marshal_OBJECT__STRING_STRINGv); widget_class->get_request_mode = bge_markdown_render_get_request_mode; widget_class->measure = bge_markdown_render_measure; widget_class->size_allocate = bge_markdown_render_size_allocate; } static void bge_markdown_render_init (BgeMarkdownRender *self) { self->spacing = 7; self->wrap_tables = TRUE; self->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, self->spacing); gtk_widget_set_parent (self->box, GTK_WIDGET (self)); self->box_children = g_ptr_array_new (); self->source_views = g_ptr_array_new (); } /** * bge_markdown_render_new: * * Creates a new `BgeMarkdownRender` object. * * Returns: The newly created `BgeMarkdownRender` object. */ GtkWidget * bge_markdown_render_new (void) { return g_object_new (BGE_TYPE_MARKDOWN_RENDER, NULL); } /** * bge_markdown_render_get_markdown: * @self: a `BgeMarkdown` * * Gets [property@Bge.MarkdownRender:markdown]. * * Returns: (nullable) (transfer none): the value of the property */ const char * bge_markdown_render_get_markdown (BgeMarkdownRender *self) { g_return_val_if_fail (BGE_IS_MARKDOWN_RENDER (self), NULL); return self->markdown; } /** * bge_markdown_render_get_dark: * @self: a `BgeMarkdown` * * Gets [property@Bge.MarkdownRender:dark]. * * Returns: the value of the property */ gboolean bge_markdown_render_get_dark (BgeMarkdownRender *self) { g_return_val_if_fail (BGE_IS_MARKDOWN_RENDER (self), FALSE); return self->dark; } /** * bge_markdown_render_set_markdown: * @self: a `BgeMarkdownRender` * @markdown: a string * * Sets [property@Bge.MarkdownRender:markdown]. */ void bge_markdown_render_set_markdown (BgeMarkdownRender *self, const char *markdown) { g_return_if_fail (BGE_IS_MARKDOWN_RENDER (self)); g_clear_pointer (&self->markdown, g_free); if (markdown != NULL) self->markdown = g_strdup (markdown); regenerate (self); check_dark_mode (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MARKDOWN]); } /** * bge_markdown_render_set_dark: * @self: a `BgeMarkdownRender` * @dark: a boolean * * Sets [property@Bge.MarkdownRender:dark]. */ void bge_markdown_render_set_dark (BgeMarkdownRender *self, gboolean dark) { g_return_if_fail (BGE_IS_MARKDOWN_RENDER (self)); if (!!dark == !!self->dark) return; self->dark = dark; check_dark_mode (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DARK]); } /** * bge_markdown_render_get_wrap_tables: * @self: a `BgeMarkdownRender` * * Gets [property@Bge.MarkdownRender:wrap-tables]. * * Returns: the value of the property */ gboolean bge_markdown_render_get_wrap_tables (BgeMarkdownRender *self) { g_return_val_if_fail (BGE_IS_MARKDOWN_RENDER (self), FALSE); return self->wrap_tables; } /** * bge_markdown_render_set_wrap_tables: * @self: a `BgeMarkdownRender` * @wrap_tables: a boolean * * Sets [property@Bge.MarkdownRender:wrap-tables]. */ void bge_markdown_render_set_wrap_tables (BgeMarkdownRender *self, gboolean wrap_tables) { g_return_if_fail (BGE_IS_MARKDOWN_RENDER (self)); wrap_tables = !!wrap_tables; if (self->wrap_tables == wrap_tables) return; self->wrap_tables = wrap_tables; regenerate (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WRAP_TABLES]); } /** * bge_markdown_render_get_spacing: * @self: a `BgeMarkdownRender` * * Gets [property@Bge.MarkdownRender:spacing]. * * Returns: the value of the property */ int bge_markdown_render_get_spacing (BgeMarkdownRender *self) { g_return_val_if_fail (BGE_IS_MARKDOWN_RENDER (self), 0); return self->spacing; } /** * bge_markdown_render_set_spacing: * @self: a `BgeMarkdownRender` * @spacing: spacing in pixels * * Sets [property@Bge.MarkdownRender:spacing]. */ void bge_markdown_render_set_spacing (BgeMarkdownRender *self, int spacing) { g_return_if_fail (BGE_IS_MARKDOWN_RENDER (self)); g_return_if_fail (spacing >= 0); if (spacing == self->spacing) return; self->spacing = spacing; gtk_box_set_spacing (GTK_BOX (self->box), spacing); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SPACING]); } static void regenerate (BgeMarkdownRender *self) { int iresult = 0; ParseCtx ctx = { 0 }; for (guint i = 0; i < self->box_children->len; i++) { GtkWidget *child = NULL; child = g_ptr_array_index (self->box_children, i); gtk_box_remove (GTK_BOX (self->box), child); } g_ptr_array_set_size (self->box_children, 0); g_ptr_array_set_size (self->source_views, 0); if (self->markdown == NULL) return; ctx.self = self; ctx.box = GTK_BOX (self->box); ctx.box_children = self->box_children; ctx.beginning = self->markdown; ctx.markup = NULL; ctx.block_stack = g_array_new (FALSE, TRUE, sizeof (int)); ctx.indent = 0; ctx.list_index = 0; ctx.list_prefix = '\0'; ctx.source_views = self->source_views; ctx.container_stack = g_ptr_array_new (); iresult = md_parse ( self->markdown, strlen (self->markdown), &parser, &ctx); if (ctx.markup != NULL) g_string_free (ctx.markup, TRUE); if (ctx.alt_text != NULL) g_string_free (ctx.alt_text, TRUE); if (ctx.grid != NULL) g_object_unref (ctx.grid); g_array_unref (ctx.block_stack); g_ptr_array_unref (ctx.container_stack); if (iresult != 0) { g_warning ("Failed to parse markdown text"); return; } } static int enter_block (MD_BLOCKTYPE type, void *detail, void *user_data) { ParseCtx *ctx = user_data; if (ctx->markup != NULL) { int current_type = 0; current_type = g_array_index (ctx->block_stack, int, ctx->block_stack->len - 1); terminate_block (current_type, NULL, user_data); g_array_index (ctx->block_stack, int, ctx->block_stack->len - 1) = -1; } if (type == MD_BLOCK_UL) { MD_BLOCK_UL_DETAIL *ul_detail = detail; ctx->indent++; ctx->list_index = 0; ctx->list_prefix = ul_detail->mark; } else if (type == MD_BLOCK_OL) { MD_BLOCK_OL_DETAIL *ol_detail = detail; ctx->indent++; ctx->list_index = 0; ctx->list_prefix = ol_detail->mark_delimiter; } else if (type == MD_BLOCK_LI) { GtkWidget *prefix = NULL; GtkWidget *row = NULL; GtkWidget *content_box = NULL; int parent = -1; if (ctx->block_stack->len > 0) parent = g_array_index (ctx->block_stack, int, ctx->block_stack->len - 1); if (parent == MD_BLOCK_OL) { g_autofree char *prefix_text = NULL; prefix_text = g_strdup_printf ("%d%c", ctx->list_index, ctx->list_prefix); prefix = gtk_label_new (prefix_text); gtk_widget_add_css_class (prefix, "caption"); } else { prefix = gtk_image_new_from_icon_name ("circle-filled-symbolic"); gtk_image_set_pixel_size (GTK_IMAGE (prefix), 6); gtk_widget_set_margin_top (prefix, 6); } gtk_widget_add_css_class (prefix, "dimmed"); gtk_widget_set_valign (prefix, GTK_ALIGN_START); content_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_widget_set_hexpand (content_box, TRUE); row = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_widget_set_margin_start (row, 10); gtk_box_append (GTK_BOX (row), prefix); gtk_box_append (GTK_BOX (row), content_box); gtk_box_append (current_container (ctx), row); g_ptr_array_add (ctx->box_children, row); g_ptr_array_add (ctx->container_stack, content_box); ctx->list_index++; ctx->markup = g_string_new (NULL); } else if (type == MD_BLOCK_TABLE) { MD_BLOCK_TABLE_DETAIL *table_detail = detail; g_assert (ctx->grid == NULL); ctx->grid = gtk_grid_new (); gtk_widget_add_css_class (ctx->grid, "markdown-table"); gtk_widget_set_halign (ctx->grid, GTK_ALIGN_START); ctx->grid_rows = table_detail->head_row_count + table_detail->body_row_count; ctx->grid_columns = table_detail->col_count; ctx->grid_row_idx = 0; ctx->grid_column_idx = 0; } else ctx->markup = g_string_new (NULL); g_array_append_val (ctx->block_stack, type); return 0; } static int leave_block (MD_BLOCKTYPE type, void *detail, void *user_data) { ParseCtx *ctx = user_data; g_assert (ctx->block_stack->len > 0); if (type == MD_BLOCK_LI) { if (ctx->markup != NULL) terminate_block (type, detail, user_data); if (ctx->container_stack->len > 0) g_ptr_array_set_size (ctx->container_stack, ctx->container_stack->len - 1); } else { if (g_array_index (ctx->block_stack, int, ctx->block_stack->len - 1) >= 0) terminate_block (type, detail, user_data); } g_array_set_size (ctx->block_stack, ctx->block_stack->len - 1); return 0; } static int enter_span (MD_SPANTYPE type, void *detail, void *user_data) { ParseCtx *ctx = user_data; g_assert (ctx->markup != NULL); switch (type) { case MD_SPAN_EM: g_string_append (ctx->markup, ""); break; case MD_SPAN_STRONG: g_string_append (ctx->markup, ""); break; case MD_SPAN_A: { MD_SPAN_A_DETAIL *a_detail = detail; g_autofree char *href = NULL; g_autofree char *title = NULL; href = g_strndup (a_detail->href.text, a_detail->href.size); if (a_detail->title.text != NULL) title = g_strndup (a_detail->title.text, a_detail->title.size); g_string_append_printf ( ctx->markup, "", href, title != NULL ? title : href); } break; case MD_SPAN_IMG: ctx->in_image = TRUE; ctx->alt_text = g_string_new (NULL); break; case MD_SPAN_CODE: g_string_append (ctx->markup, ""); break; case MD_SPAN_DEL: g_string_append (ctx->markup, ""); break; case MD_SPAN_U: g_string_append (ctx->markup, ""); break; case MD_SPAN_LATEXMATH: case MD_SPAN_LATEXMATH_DISPLAY: case MD_SPAN_WIKILINK: default: g_warning ("Unsupported markdown event (Did you use latex/wikilinks?)"); return 1; break; } return 0; } static int leave_span (MD_SPANTYPE type, void *detail, void *user_data) { ParseCtx *ctx = user_data; g_assert (ctx->markup != NULL); switch (type) { case MD_SPAN_EM: g_string_append (ctx->markup, ""); break; case MD_SPAN_STRONG: g_string_append (ctx->markup, ""); break; case MD_SPAN_A: g_string_append (ctx->markup, ""); break; case MD_SPAN_IMG: { MD_SPAN_IMG_DETAIL *img_detail = detail; g_autofree char *title = NULL; g_autofree char *src = NULL; g_autofree char *alt = NULL; GtkWidget *widget = NULL; if (img_detail->title.text != NULL) title = g_strndup (img_detail->title.text, img_detail->title.size); if (img_detail->src.text != NULL) src = g_strndup (img_detail->src.text, img_detail->src.size); if (ctx->alt_text != NULL) { alt = g_string_free (ctx->alt_text, FALSE); ctx->alt_text = NULL; } ctx->in_image = FALSE; g_signal_emit (ctx->self, signals[SIGNAL_BIND_INLINE_URI], 0, title != NULL ? title : alt, src, &widget); if (widget != NULL) { gtk_box_append (current_container (ctx), widget); g_ptr_array_add (ctx->box_children, widget); } } break; case MD_SPAN_CODE: g_string_append (ctx->markup, ""); break; case MD_SPAN_DEL: g_string_append (ctx->markup, ""); break; case MD_SPAN_U: g_string_append (ctx->markup, ""); break; case MD_SPAN_LATEXMATH: case MD_SPAN_LATEXMATH_DISPLAY: case MD_SPAN_WIKILINK: default: g_warning ("Unsupported markdown event (Did you use latex/wikilinks?)"); return 1; break; } return 0; } static int text (MD_TEXTTYPE type, const MD_CHAR *buf, MD_SIZE size, void *user_data) { ParseCtx *ctx = user_data; int block = -1; g_assert (ctx->markup != NULL); if (ctx->in_image) { g_string_append_len (ctx->alt_text, buf, size); return 0; } if (ctx->block_stack->len > 0) block = g_array_index (ctx->block_stack, int, ctx->block_stack->len - 1); if (type == MD_TEXT_SOFTBR && ctx->markup->len > 0) g_string_append_c (ctx->markup, ' '); else if (type == MD_TEXT_BR && ctx->markup->len > 0) g_string_append_c (ctx->markup, '\n'); else if (block == MD_BLOCK_CODE) g_string_append_len (ctx->markup, buf, size); else { g_autofree char *escaped = NULL; escaped = g_markup_escape_text (buf, size); g_string_append (ctx->markup, escaped); } return 0; } static int terminate_block (MD_BLOCKTYPE type, void *detail, void *user_data) { ParseCtx *ctx = user_data; GtkWidget *child = NULL; g_assert (ctx->block_stack->len > 0); if (ctx->markup != NULL && ctx->markup->len > 0) { const char *end = ctx->markup->str + ctx->markup->len; const char *prev = g_utf8_find_prev_char (ctx->markup->str, end); if (prev != NULL) { gunichar last_char = g_utf8_get_char (prev); if (!g_unichar_isgraph (last_char)) g_string_truncate (ctx->markup, prev - ctx->markup->str); } } #define SET_DEFAULTS(_label_widget) \ G_STMT_START \ { \ gtk_label_set_use_markup (GTK_LABEL (_label_widget), TRUE); \ gtk_label_set_wrap (GTK_LABEL (_label_widget), TRUE); \ gtk_label_set_wrap_mode (GTK_LABEL (_label_widget), PANGO_WRAP_WORD_CHAR); \ gtk_label_set_xalign (GTK_LABEL (_label_widget), 0.0); \ gtk_label_set_selectable (GTK_LABEL (_label_widget), TRUE); \ } \ G_STMT_END switch (type) { case MD_BLOCK_DOC: { g_assert (ctx->markup != NULL); if (ctx->markup->len == 0) break; child = gtk_label_new (ctx->markup->str); SET_DEFAULTS (child); } break; case MD_BLOCK_QUOTE: { GtkWidget *bar = NULL; GtkWidget *label = NULL; g_assert (ctx->markup != NULL); if (ctx->markup->len == 0) break; bar = gtk_separator_new (GTK_ORIENTATION_VERTICAL); gtk_widget_set_size_request (bar, 10, -1); gtk_widget_set_margin_end (bar, 20); label = gtk_label_new (ctx->markup->str); SET_DEFAULTS (label); child = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_append (GTK_BOX (child), bar); gtk_box_append (GTK_BOX (child), label); } break; case MD_BLOCK_UL: { if (ctx->markup == NULL) ctx->indent--; } break; case MD_BLOCK_OL: { if (ctx->markup == NULL) ctx->indent--; } break; case MD_BLOCK_LI: { if (ctx->markup != NULL && ctx->markup->len > 0) { GtkWidget *label = gtk_label_new (ctx->markup->str); SET_DEFAULTS (label); gtk_widget_add_css_class (label, "body"); gtk_box_append (current_container (ctx), label); g_ptr_array_add (ctx->box_children, label); } } break; case MD_BLOCK_HR: child = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); break; case MD_BLOCK_H: { MD_BLOCK_H_DETAIL *h_detail = detail; const char *css_class = NULL; g_assert (ctx->markup != NULL); if (ctx->markup->len == 0) break; child = gtk_label_new (ctx->markup->str); SET_DEFAULTS (child); switch (h_detail->level) { case 1: css_class = "title-1"; break; case 2: css_class = "title-2"; break; case 3: css_class = "title-3"; break; case 4: css_class = "title-4"; break; case 5: css_class = "heading"; break; case 6: default: css_class = "caption-heading"; break; } gtk_widget_add_css_class (child, css_class); } break; case MD_BLOCK_CODE: { MD_BLOCK_CODE_DETAIL *code_detail = detail; g_autofree char *lang_id = NULL; GtkSourceLanguage *language = NULL; g_autoptr (GtkSourceBuffer) buffer = NULL; GtkWidget *view = NULL; GtkWidget *window = NULL; g_assert (ctx->markup != NULL); if (ctx->markup->len == 0) break; if (code_detail->lang.text != NULL) { lang_id = g_strndup (code_detail->lang.text, code_detail->lang.size); language = gtk_source_language_manager_get_language ( gtk_source_language_manager_get_default (), lang_id); } if (language != NULL) buffer = gtk_source_buffer_new_with_language (language); else buffer = gtk_source_buffer_new (NULL); gtk_text_buffer_set_text ( GTK_TEXT_BUFFER (buffer), ctx->markup->str, ctx->markup->len); view = gtk_source_view_new_with_buffer (buffer); g_ptr_array_add (ctx->source_views, view); gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE); gtk_text_view_set_monospace (GTK_TEXT_VIEW (view), TRUE); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 16); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 16); gtk_text_view_set_top_margin (GTK_TEXT_VIEW (view), 12); gtk_text_view_set_bottom_margin (GTK_TEXT_VIEW (view), 12); gtk_widget_add_css_class (view, "monospace"); window = gtk_scrolled_window_new (); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (window), view); child = gtk_frame_new (NULL); gtk_frame_set_child (GTK_FRAME (child), window); gtk_widget_add_css_class (child, "code-block"); } break; case MD_BLOCK_P: { g_assert (ctx->markup != NULL); if (ctx->markup->len == 0) break; child = gtk_label_new (ctx->markup->str); SET_DEFAULTS (child); gtk_widget_add_css_class (child, "body"); } break; case MD_BLOCK_TABLE: break; case MD_BLOCK_THEAD: case MD_BLOCK_TBODY: case MD_BLOCK_TR: break; case MD_BLOCK_TH: case MD_BLOCK_TD: { GtkWidget *label = NULL; g_assert (ctx->markup != NULL); label = gtk_label_new (ctx->markup->str); SET_DEFAULTS (label); gtk_label_set_wrap (GTK_LABEL (label), ctx->self->wrap_tables); if (type == MD_BLOCK_TH) gtk_widget_add_css_class (label, "heading"); if (ctx->grid_row_idx % 2 == 1) gtk_widget_add_css_class (label, "row-odd"); gtk_grid_attach ( GTK_GRID (ctx->grid), label, ctx->grid_column_idx * 2, ctx->grid_row_idx, 1, 1); ctx->grid_column_idx++; if (ctx->grid_column_idx >= ctx->grid_columns) { ctx->grid_row_idx++; ctx->grid_column_idx = 0; if (ctx->grid_row_idx >= ctx->grid_rows) { GtkWidget *grid = g_steal_pointer (&ctx->grid); if (!ctx->self->wrap_tables) { GtkWidget *scrolled = NULL; scrolled = gtk_scrolled_window_new (); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); gtk_scrolled_window_set_propagate_natural_height ( GTK_SCROLLED_WINDOW (scrolled), TRUE); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled), grid); child = scrolled; } else child = grid; } } } break; case MD_BLOCK_HTML: default: g_warning ("Unsupported markdown event (Did you use html?)"); return 1; } #undef SET_DEFAULTS if (child != NULL) { gtk_box_append (current_container (ctx), child); g_ptr_array_add (ctx->box_children, child); } if (ctx->markup != NULL) { g_string_free (ctx->markup, TRUE); ctx->markup = NULL; } return 0; } static void check_dark_mode (BgeMarkdownRender *self) { const char *id = NULL; GtkSourceStyleScheme *scheme = NULL; if (self->dark) id = "Adwaita-dark"; else id = "Adwaita"; scheme = gtk_source_style_scheme_manager_get_scheme ( gtk_source_style_scheme_manager_get_default (), id); for (guint i = 0; i < self->source_views->len; i++) { GtkSourceView *view = NULL; GtkTextBuffer *buffer = NULL; view = g_ptr_array_index (self->source_views, i); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); if (scheme != NULL) { gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (buffer), TRUE); gtk_source_buffer_set_style_scheme (GTK_SOURCE_BUFFER (buffer), scheme); } else gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (buffer), FALSE); } } /* End of bge-markdown-render.c */ bazaar-org-bazaar-48f93f4/bge/bge-markdown-render.h000066400000000000000000000035561524000504200221070ustar00rootroot00000000000000/* bge-markdown-render.h * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #ifndef BGE_INSIDE #error "Only can be included directly." #endif G_BEGIN_DECLS #define BGE_TYPE_MARKDOWN_RENDER (bge_markdown_render_get_type ()) G_DECLARE_FINAL_TYPE (BgeMarkdownRender, bge_markdown_render, BGE, MARKDOWN_RENDER, GtkWidget) GtkWidget * bge_markdown_render_new (void); const char * bge_markdown_render_get_markdown (BgeMarkdownRender *self); gboolean bge_markdown_render_get_dark (BgeMarkdownRender *self); void bge_markdown_render_set_markdown (BgeMarkdownRender *self, const char *markdown); void bge_markdown_render_set_dark (BgeMarkdownRender *self, gboolean dark); int bge_markdown_render_get_spacing (BgeMarkdownRender *self); void bge_markdown_render_set_spacing (BgeMarkdownRender *self, int spacing); gboolean bge_markdown_render_get_wrap_tables (BgeMarkdownRender *self); void bge_markdown_render_set_wrap_tables (BgeMarkdownRender *self, gboolean wrap_tables); G_END_DECLS /* End of bge-markdown-render.h */ bazaar-org-bazaar-48f93f4/bge/bge-marshalers.list000066400000000000000000000034211524000504200216640ustar00rootroot00000000000000# see glib-genmarshal(1) for a detailed description of the file format, # possible parameter types are: # VOID indicates no return type, or no extra # parameters. if VOID is used as the parameter # list, no additional parameters may be present. # BOOLEAN for boolean types (gboolean) # CHAR for signed char types (char) # UCHAR for unsigned char types (guchar) # INT for signed integer types (int) # UINT for unsigned integer types (guint) # LONG for signed long integer types (glong) # ULONG for unsigned long integer types (gulong) # INT64 for signed 64bit integer types (gint64) # UINT64 for unsigned 64bit integer types (guint64) # ENUM for enumeration types (int) # FLAGS for flag enumeration types (guint) # FLOAT for single-precision float types (float) # DOUBLE for double-precision float types (double) # STRING for string types (char *) # BOXED for boxed (anonymous but reference counted) types (GBoxed*) # PARAM for GParamSpec or derived types (GParamSpec*) # POINTER for anonymous pointer types (gpointer) # OBJECT for GObject or derived types (GObject*) # VARIANT for GVariant types (GVariant*) # NONE deprecated alias for VOID # BOOL deprecated alias for BOOLEAN OBJECT:VOID OBJECT:STRING,STRING OBJECT:OBJECT VOID:OBJECT,OBJECT # for wdgt stuff # graphene types DOUBLE:DOUBLE DOUBLE:DOUBLE,DOUBLE DOUBLE:DOUBLE,DOUBLE,DOUBLE DOUBLE:DOUBLE,DOUBLE,DOUBLE,DOUBLE DOUBLE:DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE BOXED:DOUBLE,DOUBLE BOXED:DOUBLE,DOUBLE,DOUBLE BOXED:DOUBLE,DOUBLE,DOUBLE,DOUBLE BOXED:DOUBLE,ENUM,ENUM,DOUBLE INT:DOUBLE OBJECT:DOUBLE UINT:DOUBLE OBJECT:OBJECT,UINT,DOUBLE bazaar-org-bazaar-48f93f4/bge/bge-version-macros.h000066400000000000000000000046201524000504200217500ustar00rootroot00000000000000/* bge-version-macros.h * * Copyright 2026 Eva M * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include #include "bge-version.h" #ifndef _BGE_EXTERN #define _BGE_EXTERN extern #endif #define BGE_VERSION_CUR_STABLE (G_ENCODE_VERSION (BGE_MAJOR_VERSION, 0)) #ifdef BGE_DISABLE_DEPRECATION_WARNINGS #define BGE_DEPRECATED _BGE_EXTERN #define BGE_DEPRECATED_FOR(f) _BGE_EXTERN #define BGE_UNAVAILABLE(maj, min) _BGE_EXTERN #else #define BGE_DEPRECATED G_DEPRECATED _BGE_EXTERN #define BGE_DEPRECATED_FOR(f) G_DEPRECATED_FOR (f) _BGE_EXTERN #define BGE_UNAVAILABLE(maj, min) G_UNAVAILABLE (maj, min) _BGE_EXTERN #endif #define BGE_VERSION_1_0 (G_ENCODE_VERSION (1, 0)) #if BGE_MAJOR_VERSION == BGE_VERSION_1_0 #define BGE_VERSION_PREV_STABLE (BGE_VERSION_1_0) #else #define BGE_VERSION_PREV_STABLE (G_ENCODE_VERSION (BGE_MAJOR_VERSION - 1, 0)) #endif #ifndef BGE_VERSION_MIN_REQUIRED #define BGE_VERSION_MIN_REQUIRED (BGE_VERSION_CUR_STABLE) #endif #ifndef BGE_VERSION_MAX_ALLOWED #if BGE_VERSION_MIN_REQUIRED > BGE_VERSION_PREV_STABLE #define BGE_VERSION_MAX_ALLOWED (BGE_VERSION_MIN_REQUIRED) #else #define BGE_VERSION_MAX_ALLOWED (BGE_VERSION_CUR_STABLE) #endif #endif #define BGE_AVAILABLE_IN_ALL _BGE_EXTERN #if BGE_VERSION_MIN_REQUIRED >= BGE_VERSION_1_0 #define BGE_DEPRECATED_IN_1_0 BGE_DEPRECATED #define BGE_DEPRECATED_IN_1_0_FOR(f) BGE_DEPRECATED_FOR (f) #else #define BGE_DEPRECATED_IN_1_0 _BGE_EXTERN #define BGE_DEPRECATED_IN_1_0_FOR(f) _BGE_EXTERN #endif #if BGE_VERSION_MAX_ALLOWED < BGE_VERSION_1_0 #define BGE_AVAILABLE_IN_1_0 BGE_UNAVAILABLE (1, 0) #else #define BGE_AVAILABLE_IN_1_0 _BGE_EXTERN #endif bazaar-org-bazaar-48f93f4/bge/bge-version.h.in000066400000000000000000000047571524000504200211060ustar00rootroot00000000000000/* bge-version.h.in * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #if !defined(BGE_INSIDE) && !defined(BGE_COMPILATION) # error "Only can be included directly." #endif /** * SECTION:bgeversion * @short_description: bge version checking * * bge provides macros to check the version of the library * at compile-time */ /** * BGE_MAJOR_VERSION: * * bge major version component (e.g. 1 if %BGE_VERSION is 1.2.3) */ #define BGE_MAJOR_VERSION (@MAJOR_VERSION@) /** * BGE_MINOR_VERSION: * * bge minor version component (e.g. 2 if %BGE_VERSION is 1.2.3) */ #define BGE_MINOR_VERSION (@MINOR_VERSION@) /** * BGE_MICRO_VERSION: * * bge micro version component (e.g. 3 if %BGE_VERSION is 1.2.3) */ #define BGE_MICRO_VERSION (@MICRO_VERSION@) /** * BGE_VERSION * * bge version. */ #define BGE_VERSION (@VERSION@) /** * BGE_VERSION_S: * * bge version, encoded as a string, useful for printing and * concatenation. */ #define BGE_VERSION_S "@VERSION@" #define BGE_ENCODE_VERSION(major,minor,micro) \ ((major) << 24 | (minor) << 16 | (micro) << 8) /** * BGE_VERSION_HEX: * * bge version, encoded as an hexadecimal number, useful for * integer comparisons. */ #define BGE_VERSION_HEX \ (BGE_ENCODE_VERSION (BGE_MAJOR_VERSION, BGE_MINOR_VERSION, BGE_MICRO_VERSION)) /** * BGE_CHECK_VERSION: * @major: required major version * @minor: required minor version * @micro: required micro version * * Compile-time version checking. Evaluates to %TRUE if the version * of bge is greater than the required one. */ #define BGE_CHECK_VERSION(major,minor,micro) \ (BGE_MAJOR_VERSION > (major) || \ (BGE_MAJOR_VERSION == (major) && BGE_MINOR_VERSION > (minor)) || \ (BGE_MAJOR_VERSION == (major) && BGE_MINOR_VERSION == (minor) && \ BGE_MICRO_VERSION >= (micro))) bazaar-org-bazaar-48f93f4/bge/bge.h000066400000000000000000000021441524000504200170020ustar00rootroot00000000000000/* bge.h - Bazaar GTK Extensions * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define BGE_INSIDE #include "bge-version-macros.h" #include "bge-animation.h" #include "bge-carousel.h" #include "bge-markdown-render.h" #include "wdgt/bge-easing.h" #include "wdgt/bge-wdgt-renderer.h" #include "wdgt/bge-wdgt-spec.h" #undef BGE_INSIDE BGE_AVAILABLE_IN_ALL void bge_init (void); G_END_DECLS bazaar-org-bazaar-48f93f4/bge/demo/000077500000000000000000000000001524000504200170175ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/bge/demo/demo.c000066400000000000000000000156531524000504200201210ustar00rootroot00000000000000/* demo.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include static BgeWdgtRenderer *wdgt = NULL; static GtkLabel *error_lbl = NULL; static void on_activate (GtkApplication *app); static GtkWidget * on_carousel_create_widget (BgeCarousel *carousel, GtkStringObject *string, gpointer user_data); static void on_buffer_changed (GtkTextBuffer *buffer, gpointer user_data); int main (int argc, char **argv) { g_autoptr (GtkApplication) app = NULL; g_autoptr (GtkCssProvider) provider = NULL; bge_init (); app = gtk_application_new ( "io.github.kolunmi.BgeDemo", G_APPLICATION_NON_UNIQUE); g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL); provider = gtk_css_provider_new (); gtk_css_provider_load_from_resource (provider, "/io/github/kolunmi/BgeDemo/style.css"); gtk_style_context_add_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); return g_application_run (G_APPLICATION (app), argc, argv); } static void on_activate (GtkApplication *app) { GtkWidget *window = NULL; GtkWidget *root = NULL; GtkTextBuffer *buffer = NULL; BgeMarkdownRender *markdown = NULL; GtkBox *carousel_box = NULL; g_autoptr (GtkBuilder) builder = NULL; g_autoptr (GtkBuilderScope) scope = NULL; window = gtk_application_window_new (app); gtk_window_set_default_size (GTK_WINDOW (window), 1000, 800); scope = gtk_builder_cscope_new (); builder = gtk_builder_new (); gtk_builder_set_scope (builder, scope); gtk_builder_add_from_resource (builder, "/io/github/kolunmi/BgeDemo/window.ui", NULL); root = GTK_WIDGET (gtk_builder_get_object (builder, "root")); buffer = GTK_TEXT_BUFFER (gtk_builder_get_object (builder, "buffer")); wdgt = BGE_WDGT_RENDERER (gtk_builder_get_object (builder, "wdgt")); error_lbl = GTK_LABEL (gtk_builder_get_object (builder, "error_lbl")); markdown = BGE_MARKDOWN_RENDER (gtk_builder_get_object (builder, "markdown")); carousel_box = GTK_BOX (gtk_builder_get_object (builder, "carousel_box")); { GtkIconTheme *theme = NULL; g_auto (GStrv) icons = NULL; GtkStringList *string_lists[16] = { 0 }; theme = gtk_icon_theme_get_for_display (gdk_display_get_default ()); icons = gtk_icon_theme_get_icon_names (theme); for (guint i = 0; i < G_N_ELEMENTS (string_lists); i++) { string_lists[i] = gtk_string_list_new (NULL); } for (guint i = 0; icons[i] != NULL; i++) { if (g_str_has_suffix (icons[i], "-symbolic")) { gtk_string_list_append (string_lists[i % G_N_ELEMENTS (string_lists)], icons[i]); } } for (guint i = 0; i < G_N_ELEMENTS (string_lists); i++) { g_autoptr (GtkSingleSelection) selection = NULL; GtkWidget *carousel = NULL; selection = gtk_single_selection_new (G_LIST_MODEL (string_lists[i])); carousel = bge_carousel_new (); bge_carousel_set_allow_mouse_drag (BGE_CAROUSEL (carousel), TRUE); bge_carousel_set_allow_overshoot (BGE_CAROUSEL (carousel), TRUE); g_signal_connect (carousel, "create-widget", G_CALLBACK (on_carousel_create_widget), NULL); bge_carousel_set_model (BGE_CAROUSEL (carousel), selection); gtk_box_append (carousel_box, carousel); if (i < G_N_ELEMENTS (string_lists) - 1) gtk_box_append (carousel_box, gtk_separator_new (GTK_ORIENTATION_HORIZONTAL)); } } { g_autoptr (GBytes) markdown_bytes = NULL; gsize markdown_buffer_size = 0; gconstpointer markdown_buffer = NULL; markdown_bytes = g_resources_lookup_data ( "/io/github/kolunmi/BgeDemo/example-markdown.md", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL); g_assert (markdown_bytes != NULL); markdown_buffer = g_bytes_get_data (markdown_bytes, &markdown_buffer_size); bge_markdown_render_set_markdown (markdown, markdown_buffer); } { g_autoptr (GtkStringObject) reference = NULL; g_autoptr (GBytes) wdgt_bytes = NULL; gsize wdgt_buffer_size = 0; gconstpointer wdgt_buffer = NULL; reference = gtk_string_object_new ("Hello from demo.c!!"); bge_wdgt_renderer_set_reference (wdgt, G_OBJECT (reference)); g_signal_connect ( buffer, "changed", G_CALLBACK (on_buffer_changed), NULL); wdgt_bytes = g_resources_lookup_data ( "/io/github/kolunmi/BgeDemo/test.wdgt", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL); g_assert (wdgt_bytes != NULL); wdgt_buffer = g_bytes_get_data (wdgt_bytes, &wdgt_buffer_size); gtk_text_buffer_set_text (buffer, wdgt_buffer, wdgt_buffer_size); } gtk_window_set_child (GTK_WINDOW (window), g_object_ref_sink (root)); gtk_window_present (GTK_WINDOW (window)); } static GtkWidget * on_carousel_create_widget (BgeCarousel *carousel, GtkStringObject *string_object, gpointer user_data) { const char *icon_name = NULL; GtkWidget *button = NULL; icon_name = gtk_string_object_get_string (string_object); button = gtk_button_new_from_icon_name (icon_name); gtk_widget_set_margin_start (button, 2); gtk_widget_set_margin_end (button, 2); return button; } static void on_buffer_changed (GtkTextBuffer *buffer, gpointer user_data) { g_autoptr (GError) local_error = NULL; g_autofree char *text = NULL; GtkTextIter start_iter = { 0 }; GtkTextIter end_iter = { 0 }; g_autoptr (BgeWdgtSpec) spec = NULL; gtk_text_buffer_get_start_iter (buffer, &start_iter); gtk_text_buffer_get_end_iter (buffer, &end_iter); text = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, FALSE); spec = bge_wdgt_spec_new_for_string (text, &local_error); if (spec != NULL) gtk_widget_set_visible (GTK_WIDGET (error_lbl), FALSE); else { gtk_label_set_label (error_lbl, local_error->message); gtk_widget_set_visible (GTK_WIDGET (error_lbl), TRUE); } bge_wdgt_renderer_set_spec (wdgt, spec); } bazaar-org-bazaar-48f93f4/bge/demo/demo.gresource.xml000066400000000000000000000004301524000504200224570ustar00rootroot00000000000000 window.ui style.css test.wdgt ../../docs/overview.md bazaar-org-bazaar-48f93f4/bge/demo/meson.build000066400000000000000000000010431524000504200211570ustar00rootroot00000000000000demo_sources = files( 'demo.c', ) blueprints = custom_target( 'blueprints', input: files( 'window.blp', ), output: '.', command: [ find_program('blueprint-compiler', version: '>= 0.20.0'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@' ], ) demo_sources += gnome.compile_resources('demo-resources', 'demo.gresource.xml', c_name: 'demo', dependencies: blueprints ) demo_deps = [ bge_dep, ] demo = executable( 'bge-demo', demo_sources, dependencies: demo_deps, install: true, ) bazaar-org-bazaar-48f93f4/bge/demo/style.css000066400000000000000000000003421524000504200206700ustar00rootroot00000000000000.source-edit { font-family: monospace; font-size: large; } .debug { background-color: alpha(pink, 0.25); } .gradient { background-image: linear-gradient(to bottom left, #1f2d8f, #159eff); color: white; } bazaar-org-bazaar-48f93f4/bge/demo/test.wdgt000066400000000000000000000057001524000504200206670ustar00rootroot00000000000000defwidget "My Widget" { reference ref-string : "GtkStringObject"; var box : "GtkBox"; var cx : "gdouble"; var cy : "gdouble"; var w : "gdouble"; var h : "gdouble"; var corner : "gdouble"; var x : "gdouble"; var y : "gdouble"; var start : "gdouble"; var end : "gdouble"; var outline : "GskPath"; var measure : "GskPathMeasure"; init { set box = #child/(""("gradient") orientation = vertical; _=#child/GtkLabel(""() margin-start = 10; margin-end = 10; margin-top = 10; margin-bottom = 10; label = ref-string:string; wrap = true; ); ); measure 200, 300, 200, 300; set x = #eval(#(cx)-#(w)/2.0); set y = #eval(#(cy)-#(h)/2.0); allocate box w, h, #(translate(#GraphenePoint(x, y));); set outline = #GskPath( move-to(#eval(#(x)+#(corner)), y); rel-line-to(#eval(#(w)-#(corner)*2.0), 0.0); rel-arc-to(corner, 0.0, corner, corner); rel-line-to(0.0, #eval(#(h)-#(corner)*2.0)); rel-arc-to(0.0, corner, #eval(-#(corner)), corner); rel-line-to(#eval(-(#(w)-#(corner)*2.0)), 0.0); rel-arc-to(#eval(-#(corner)), 0.0, #eval(-#(corner)), #eval(-#(corner))); rel-line-to(0.0, #eval(-(#(h)-#(corner)*2.0))); rel-arc-to(0.0, #eval(-#(corner)), corner, #eval(-#(corner))); close(); ); set measure = #measure-path(outline); snapshot { with fill( outline, #GskFillRule(winding), ) { do-child box; } add stroke( #GskPath( add-segment( outline, #path-point(measure, start), #path-point(measure, end), ); ), #GskStroke(6.0, round, round, 0.0), #GdkRGBA("#101432"), ); } } state-default "1" { set w = 100.0; set h = 100.0; set corner = 10.0; set cx = #eval(30.0*sin(#(%tick%)) + #(%width%)/2.0); set cy = #eval(#(%height%)/2.0); set start = #eval(#(#path-length(measure))*(0.333*sin(#(%tick%))+0.333)); set end = #eval(#(#path-length(measure))*(0.333*sin(#(%tick%))+0.666)); transition-spring w 1.0, 0.5, 100.0; transition-spring h 1.0, 0.5, 100.0; transition-spring corner 1.0, 0.5, 100.0; transition-spring cx 1.0, 0.5, 100.0; transition-spring cy 1.0, 0.5, 100.0; transition-spring start 0.5, 0.5, 5.0; transition-spring end 0.5, 0.5, 5.0; } state "2" { set w = 200.0; set h = 200.0; set corner = 20.0; set cx = #eval(#(%width%)/2.0); set cy = #eval(#(%height%)/2.0); set start = 0.0; set end = #path-length(measure); transition-spring w 0.9, 0.5, 100.0; transition-spring h 0.9, 0.5, 100.0; transition-spring corner 0.9, 0.5, 100.0; transition-spring cx 0.9, 0.5, 100.0; transition-spring cy 0.9, 0.5, 100.0; transition-spring start 1.1, 0.2, 10.0; transition-spring end 1.1, 0.2, 10.0; } } bazaar-org-bazaar-48f93f4/bge/demo/window.blp000066400000000000000000000033631524000504200210320ustar00rootroot00000000000000using Gtk 4.0; Box root { orientation: horizontal; StackSidebar { stack: stack; } Stack stack { transition-type: none; StackPage { name: "markdown"; title: "Markdown"; child: ScrolledWindow { child: $BgeMarkdownRender markdown { margin-start: 10; margin-end: 10; }; }; } StackPage { name: "carousel"; title: "Carousel"; child: ScrolledWindow { hscrollbar-policy: never; child: Box carousel_box { valign: center; orientation: vertical; spacing: 4; }; }; } StackPage { name: "wdgt"; title: "Wdgt"; child: Paned { orientation: vertical; position: 400; wide-handle: true; start-child: ScrolledWindow { child: TextView { styles ["source-edit"] monospace: true; buffer: TextBuffer buffer { }; }; }; end-child: Box { orientation: vertical; Label error_lbl { styles ["error"] visible: false; wrap: true; } $BgeWdgtRenderer wdgt { styles ["debug"] halign: center; valign: center; hexpand: true; vexpand: true; state: bind states.selected-item as <$GtkStringObject>.string as ; } Separator { orientation: horizontal; } DropDown states { margin-start: 3; margin-end: 3; margin-top: 3; margin-bottom: 3; model: bind wdgt.spec; } }; shrink-end-child: false; }; } } } bazaar-org-bazaar-48f93f4/bge/libbge.c000066400000000000000000000021431524000504200174630ustar00rootroot00000000000000/* libbge.c * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BGE::CORE" #include "bge.h" /** * bge_init: * * Initializes BGE (And GTK). * * This function must be called before using any other BGE functions. */ void bge_init (void) { gtk_init (); g_type_ensure (BGE_TYPE_ANIMATION); g_type_ensure (BGE_TYPE_CAROUSEL); g_type_ensure (BGE_TYPE_MARKDOWN_RENDER); g_type_ensure (BGE_TYPE_WDGT_RENDERER); } bazaar-org-bazaar-48f93f4/bge/meson.build000066400000000000000000000033171524000504200202410ustar00rootroot00000000000000api_version = bz_version bge_sources = [ 'libbge.c', 'bge-animation.c', 'bge-carousel.c', 'bge-markdown-render.c', ] bge_headers = [ 'bge.h', 'bge-animation.h', 'bge-carousel.h', ] subdir('wdgt') version_split = api_version.split('.') version_conf = configuration_data() version_conf.set('VERSION', api_version) version_conf.set('MAJOR_VERSION', version_split[0]) version_conf.set('MINOR_VERSION', version_split[1]) version_conf.set('MICRO_VERSION', version_split[2]) configure_file( input: 'bge-version.h.in', output: 'bge-version.h', configuration: version_conf, install: true, install_dir: get_option('includedir') / 'bge' ) bge_deps = [ cc.find_library('m', required: true), dependency('gtk4', version: '>= 4.22.1'), dependency('gtksourceview-5', version: '>= 5.17'), dependency('md4c', version: '>= 0.5.1'), ] bge_marshalers = gnome.genmarshal('bge-marshalers', sources: 'bge-marshalers.list', prefix: 'bge_marshal', valist_marshallers: true, ) bge_lib = shared_library( 'bge', bge_sources, bge_marshalers, dependencies: bge_deps, version: api_version, soversion: version_split[0], install: true, ) install_headers( bge_headers + files('bge-version-macros.h'), subdir: 'bge') pkg = import('pkgconfig') pkg.generate( description: 'Bazaar GTK Extensions', libraries: bge_lib, name: 'libbge', filebase: 'bge', version: api_version, subdirs: 'bge', requires: ['gtk4', 'md4c', 'gtksourceview-5'], install_dir: get_option('libdir') / 'pkgconfig' ) bge_dep = declare_dependency( link_with: bge_lib, dependencies: [bge_deps], include_directories : include_directories('..', '.'), ) subdir('demo') bazaar-org-bazaar-48f93f4/bge/util.h000066400000000000000000000076521524000504200172330ustar00rootroot00000000000000/* util.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #define BGE_RELEASE_DATA(name, unref) \ if ((unref) != NULL) \ { \ g_clear_pointer (&self->name, (unref)); \ } #define BGE_RELEASE_UTAG(name, remove) \ if ((remove) != NULL) \ { \ g_clear_handle_id (&self->name, (remove)); \ } /* va args = releases */ #define BGE_DEFINE_DATA(name, Name, layout, ...) \ typedef struct _##Name##Data Name##Data; \ struct _##Name##Data \ { \ gatomicrefcount rc; \ struct layout; \ }; \ G_GNUC_UNUSED \ static inline Name##Data * \ name##_data_new (void) \ { \ Name##Data *data = NULL; \ data = g_new0 (typeof (*data), 1); \ g_atomic_ref_count_init (&data->rc); \ return data; \ } \ G_GNUC_UNUSED \ static inline Name##Data * \ name##_data_ref (gpointer ptr) \ { \ Name##Data *self = ptr; \ g_atomic_ref_count_inc (&self->rc); \ return self; \ } \ G_GNUC_UNUSED \ static void \ name##_data_unref (gpointer ptr); \ G_GNUC_UNUSED \ static void \ name##_data_deinit (gpointer ptr) \ { \ Name##Data *self = ptr; \ __VA_ARGS__ \ } \ G_GNUC_UNUSED \ static void \ name##_data_unref (gpointer ptr) \ { \ Name##Data *self = ptr; \ if (g_atomic_ref_count_dec (&self->rc)) \ { \ name##_data_deinit (self); \ g_free (self); \ } \ } \ G_GNUC_UNUSED \ static void \ name##_data_unref_closure (gpointer data, \ GClosure *closure) \ { \ name##_data_unref (data); \ } \ G_DEFINE_AUTOPTR_CLEANUP_FUNC (Name##Data, name##_data_unref); bazaar-org-bazaar-48f93f4/bge/wdgt/000077500000000000000000000000001524000504200170405ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/bge/wdgt/bge-easing.c000066400000000000000000000400231524000504200212040ustar00rootroot00000000000000/* TAKEN FROM LIBADWAITA */ /* * Copyright (C) 2021 Manuel Genovés * Copyright (C) 2021 Purism SPC * * SPDX-License-Identifier: LGPL-2.1-or-later */ #define G_LOG_DOMAIN "BGE::EASING" #include "bge.h" G_DEFINE_ENUM_TYPE ( BgeEasing, bge_easing, G_DEFINE_ENUM_VALUE (BGE_LINEAR, "linear"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_QUAD, "in-quad"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_QUAD, "out-quad"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_QUAD, "in-out-quad"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_CUBIC, "in-cubic"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_CUBIC, "out-cubic"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_CUBIC, "in-out-cubic"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_QUART, "in-quart"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_QUART, "out-quart"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_QUART, "in-out-quart"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_QUINT, "in-quint"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_QUINT, "out-quint"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_QUINT, "in-out-quint"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_SINE, "in-sine"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_SINE, "out-sine"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_SINE, "in-out-sine"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_EXPO, "in-expo"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_EXPO, "out-expo"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_EXPO, "in-out-expo"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_CIRC, "in-circ"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_CIRC, "out-circ"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_CIRC, "in-out-circ"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_ELASTIC, "in-elastic"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_ELASTIC, "out-elastic"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_ELASTIC, "in-out-elastic"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_BACK, "in-back"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_BACK, "out-back"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_BACK, "in-out-back"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_BOUNCE, "in-bounce"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT_BOUNCE, "out-bounce"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT_BOUNCE, "in-out-bounce"), G_DEFINE_ENUM_VALUE (BGE_EASE, "ease"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN, "ease-in"), G_DEFINE_ENUM_VALUE (BGE_EASE_OUT, "ease-out"), G_DEFINE_ENUM_VALUE (BGE_EASE_IN_OUT, "ease-in-out")); #include /* * Copied from: * https://gitlab.gnome.org/GNOME/clutter/-/blob/a236494ea7f31848b4a459dad41330f225137832/clutter/clutter-easing.c * https://gitlab.gnome.org/GNOME/clutter/-/blob/a236494ea7f31848b4a459dad41330f225137832/clutter/clutter-enums.h * * Copyright (C) 2011 Intel Corporation */ /** * BgeEasing: * @BGE_LINEAR: Linear tweening. * @BGE_EASE_IN_QUAD: Quadratic tweening. * @BGE_EASE_OUT_QUAD: Quadratic tweening, inverse of * [enum@Bge.Easing.ease-in-quad]. * @BGE_EASE_IN_OUT_QUAD: Quadratic tweening, combining * [enum@Bge.Easing.ease-in-quad] and [enum@Bge.Easing.ease-out-quad]. * @BGE_EASE_IN_CUBIC: Cubic tweening. * @BGE_EASE_OUT_CUBIC: Cubic tweening, inverse of * [enum@Bge.Easing.ease-in-cubic]. * @BGE_EASE_IN_OUT_CUBIC: Cubic tweening, combining * [enum@Bge.Easing.ease-in-cubic] and [enum@Bge.Easing.ease-out-cubic]. * @BGE_EASE_IN_QUART: Quartic tweening. * @BGE_EASE_OUT_QUART: Quartic tweening, inverse of * [enum@Bge.Easing.ease-in-quart]. * @BGE_EASE_IN_OUT_QUART: Quartic tweening, combining * [enum@Bge.Easing.ease-in-quart] and [enum@Bge.Easing.ease-out-quart]. * @BGE_EASE_IN_QUINT: Quintic tweening. * @BGE_EASE_OUT_QUINT: Quintic tweening, inverse of * [enum@Bge.Easing.ease-in-quint]. * @BGE_EASE_IN_OUT_QUINT: Quintic tweening, combining * [enum@Bge.Easing.ease-in-quint] and [enum@Bge.Easing.ease-out-quint]. * @BGE_EASE_IN_SINE: Sine wave tweening. * @BGE_EASE_OUT_SINE: Sine wave tweening, inverse of * [enum@Bge.Easing.ease-in-sine]. * @BGE_EASE_IN_OUT_SINE: Sine wave tweening, combining * [enum@Bge.Easing.ease-in-sine] and [enum@Bge.Easing.ease-out-sine]. * @BGE_EASE_IN_EXPO: Exponential tweening. * @BGE_EASE_OUT_EXPO: Exponential tweening, inverse of * [enum@Bge.Easing.ease-in-expo]. * @BGE_EASE_IN_OUT_EXPO: Exponential tweening, combining * [enum@Bge.Easing.ease-in-expo] and [enum@Bge.Easing.ease-out-expo]. * @BGE_EASE_IN_CIRC: Circular tweening. * @BGE_EASE_OUT_CIRC: Circular tweening, inverse of * [enum@Bge.Easing.ease-in-circ]. * @BGE_EASE_IN_OUT_CIRC: Circular tweening, combining * [enum@Bge.Easing.ease-in-circ] and [enum@Bge.Easing.ease-out-circ]. * @BGE_EASE_IN_ELASTIC: Elastic tweening, with offshoot on start. * @BGE_EASE_OUT_ELASTIC: Elastic tweening, with offshoot on end, inverse of * [enum@Bge.Easing.ease-in-elastic]. * @BGE_EASE_IN_OUT_ELASTIC: Elastic tweening, with offshoot on both ends, * combining [enum@Bge.Easing.ease-in-elastic] and * [enum@Bge.Easing.ease-out-elastic]. * @BGE_EASE_IN_BACK: Overshooting cubic tweening, with backtracking on start. * @BGE_EASE_OUT_BACK: Overshooting cubic tweening, with backtracking on end, * inverse of [enum@Bge.Easing.ease-in-back]. * @BGE_EASE_IN_OUT_BACK: Overshooting cubic tweening, with backtracking on both * ends, combining [enum@Bge.Easing.ease-in-back] and * [enum@Bge.Easing.ease-out-back]. * @BGE_EASE_IN_BOUNCE: Exponentially decaying parabolic (bounce) tweening, * on start. * @BGE_EASE_OUT_BOUNCE: Exponentially decaying parabolic (bounce) tweening, * with bounce on end, inverse of [enum@Bge.Easing.ease-in-bounce]. * @BGE_EASE_IN_OUT_BOUNCE: Exponentially decaying parabolic (bounce) tweening, * with bounce on both ends, combining [enum@Bge.Easing.ease-in-bounce] and * [enum@Bge.Easing.ease-out-bounce]. * * Describes the available easing functions for use with * [class@TimedAnimation]. * * New values may be added to this enumeration over time. */ /** * BGE_EASE: * * Cubic bezier tweening, with control points in (0.25, 0.1) and (0.25, 1.0). * * Increases in velocity towards the middle of the animation, slowing back down * at the end. * * Since: 1.7 */ /** * BGE_EASE_IN: * * Cubic bezier tweening, with control points in (0.42, 0.0) and (1.0, 1.0). * * Starts off slowly, with the speed of the animation increasing until complete. * * Since: 1.7 */ /** * BGE_EASE_OUT: * * Cubic bezier tweening, with control points in (0.0, 0.0) and (0.58, 1.0). * * Starts quickly, slowing down the animation until complete. * * Since: 1.7 */ /** * BGE_EASE_IN_OUT: * * Cubic bezier tweening, with control points in (0.42, 0.0) and (0.58, 1.0). * * Starts off slowly, speeds up in the middle, and then slows down again. * * Since: 1.7 */ static inline double linear (double t, double d) { return t / d; } static inline double ease_in_quad (double t, double d) { double p = t / d; return p * p; } static inline double ease_out_quad (double t, double d) { double p = t / d; return -1.0 * p * (p - 2); } static inline double ease_in_out_quad (double t, double d) { double p = t / (d / 2); if (p < 1) return 0.5 * p * p; p -= 1; return -0.5 * (p * (p - 2) - 1); } static inline double ease_in_cubic (double t, double d) { double p = t / d; return p * p * p; } static inline double ease_out_cubic (double t, double d) { double p = t / d - 1; return p * p * p + 1; } static inline double ease_in_out_cubic (double t, double d) { double p = t / (d / 2); if (p < 1) return 0.5 * p * p * p; p -= 2; return 0.5 * (p * p * p + 2); } static inline double ease_in_quart (double t, double d) { double p = t / d; return p * p * p * p; } static inline double ease_out_quart (double t, double d) { double p = t / d - 1; return -1.0 * (p * p * p * p - 1); } static inline double ease_in_out_quart (double t, double d) { double p = t / (d / 2); if (p < 1) return 0.5 * p * p * p * p; p -= 2; return -0.5 * (p * p * p * p - 2); } static inline double ease_in_quint (double t, double d) { double p = t / d; return p * p * p * p * p; } static inline double ease_out_quint (double t, double d) { double p = t / d - 1; return p * p * p * p * p + 1; } static inline double ease_in_out_quint (double t, double d) { double p = t / (d / 2); if (p < 1) return 0.5 * p * p * p * p * p; p -= 2; return 0.5 * (p * p * p * p * p + 2); } static inline double ease_in_sine (double t, double d) { return -1.0 * cos (t / d * G_PI_2) + 1.0; } static inline double ease_out_sine (double t, double d) { return sin (t / d * G_PI_2); } static inline double ease_in_out_sine (double t, double d) { return -0.5 * (cos (G_PI * t / d) - 1); } static inline double ease_in_expo (double t, double d) { return G_APPROX_VALUE (t, 0, DBL_EPSILON) ? 0.0 : pow (2, 10 * (t / d - 1)); } static double ease_out_expo (double t, double d) { return G_APPROX_VALUE (t, d, DBL_EPSILON) ? 1.0 : -pow (2, -10 * t / d) + 1; } static inline double ease_in_out_expo (double t, double d) { double p; if (G_APPROX_VALUE (t, 0, DBL_EPSILON)) return 0.0; if (G_APPROX_VALUE (t, d, DBL_EPSILON)) return 1.0; p = t / (d / 2); if (p < 1) return 0.5 * pow (2, 10 * (p - 1)); p -= 1; return 0.5 * (-pow (2, -10 * p) + 2); } static inline double ease_in_circ (double t, double d) { double p = t / d; return -1.0 * (sqrt (1 - p * p) - 1); } static inline double ease_out_circ (double t, double d) { double p = t / d - 1; return sqrt (1 - p * p); } static inline double ease_in_out_circ (double t, double d) { double p = t / (d / 2); if (p < 1) return -0.5 * (sqrt (1 - p * p) - 1); p -= 2; return 0.5 * (sqrt (1 - p * p) + 1); } static inline double ease_in_elastic (double t, double d) { double p = d * .3; double s = p / 4; double q = t / d; if (G_APPROX_VALUE (q, 1, DBL_EPSILON)) return 1.0; q -= 1; return -(pow (2, 10 * q) * sin ((q * d - s) * (2 * G_PI) / p)); } static inline double ease_out_elastic (double t, double d) { double p = d * .3; double s = p / 4; double q = t / d; if (G_APPROX_VALUE (q, 1, DBL_EPSILON)) return 1.0; return pow (2, -10 * q) * sin ((q * d - s) * (2 * G_PI) / p) + 1.0; } static inline double ease_in_out_elastic (double t, double d) { double p = d * (.3 * 1.5); double s = p / 4; double q = t / (d / 2); if (G_APPROX_VALUE (q, 2, DBL_EPSILON)) return 1.0; if (q < 1) { q -= 1; return -.5 * (pow (2, 10 * q) * sin ((q * d - s) * (2 * G_PI) / p)); } else { q -= 1; return pow (2, -10 * q) * sin ((q * d - s) * (2 * G_PI) / p) * .5 + 1.0; } } static inline double ease_in_back (double t, double d) { double p = t / d; return p * p * ((1.70158 + 1) * p - 1.70158); } static inline double ease_out_back (double t, double d) { double p = t / d - 1; return p * p * ((1.70158 + 1) * p + 1.70158) + 1; } static inline double ease_in_out_back (double t, double d) { double p = t / (d / 2); double s = 1.70158 * 1.525; if (p < 1) return 0.5 * (p * p * ((s + 1) * p - s)); p -= 2; return 0.5 * (p * p * ((s + 1) * p + s) + 2); } static inline double ease_out_bounce (double t, double d) { double p = t / d; if (p < (1 / 2.75)) { return 7.5625 * p * p; } else if (p < (2 / 2.75)) { p -= (1.5 / 2.75); return 7.5625 * p * p + .75; } else if (p < (2.5 / 2.75)) { p -= (2.25 / 2.75); return 7.5625 * p * p + .9375; } else { p -= (2.625 / 2.75); return 7.5625 * p * p + .984375; } } static inline double ease_in_bounce (double t, double d) { return 1.0 - ease_out_bounce (d - t, d); } static inline double ease_in_out_bounce (double t, double d) { if (t < d / 2) return ease_in_bounce (t * 2, d) * 0.5; else return ease_out_bounce (t * 2 - d, d) * 0.5 + 1.0 * 0.5; } static inline double x_for_t (double t, double x_1, double x_2) { double omt = 1.0 - t; return 3.0 * omt * omt * t * x_1 + 3.0 * omt * t * t * x_2 + t * t * t; } static inline double y_for_t (double t, double y_1, double y_2) { double omt = 1.0 - t; return 3.0 * omt * omt * t * y_1 + 3.0 * omt * t * t * y_2 + t * t * t; } static inline double t_for_x (double x, double x_1, double x_2) { double min_t = 0, max_t = 1; int i; for (i = 0; i < 30; ++i) { double guess_t = (min_t + max_t) / 2.0; double guess_x = x_for_t (guess_t, x_1, x_2); if (x < guess_x) max_t = guess_t; else min_t = guess_t; } return (min_t + max_t) / 2.0; } static double ease_cubic_bezier (double t, double d, double x_1, double y_1, double x_2, double y_2) { double p = t / d; if (G_APPROX_VALUE (p, 0.0, DBL_EPSILON)) return 0.0; if (G_APPROX_VALUE (p, 1.0, DBL_EPSILON)) return 1.0; return y_for_t (t_for_x (p, x_1, x_2), y_1, y_2); } /** * bge_easing_ease: * @self: an easing value * @value: a value to ease * * Computes easing with @easing for @value. * * @value should generally be in the [0, 1] range. * * Returns: the easing for @value */ double bge_easing_ease (BgeEasing self, double value) { switch (self) { case BGE_LINEAR: return linear (value, 1); case BGE_EASE_IN_QUAD: return ease_in_quad (value, 1); case BGE_EASE_OUT_QUAD: return ease_out_quad (value, 1); case BGE_EASE_IN_OUT_QUAD: return ease_in_out_quad (value, 1); case BGE_EASE_IN_CUBIC: return ease_in_cubic (value, 1); case BGE_EASE_OUT_CUBIC: return ease_out_cubic (value, 1); case BGE_EASE_IN_OUT_CUBIC: return ease_in_out_cubic (value, 1); case BGE_EASE_IN_QUART: return ease_in_quart (value, 1); case BGE_EASE_OUT_QUART: return ease_out_quart (value, 1); case BGE_EASE_IN_OUT_QUART: return ease_in_out_quart (value, 1); case BGE_EASE_IN_QUINT: return ease_in_quint (value, 1); case BGE_EASE_OUT_QUINT: return ease_out_quint (value, 1); case BGE_EASE_IN_OUT_QUINT: return ease_in_out_quint (value, 1); case BGE_EASE_IN_SINE: return ease_in_sine (value, 1); case BGE_EASE_OUT_SINE: return ease_out_sine (value, 1); case BGE_EASE_IN_OUT_SINE: return ease_in_out_sine (value, 1); case BGE_EASE_IN_EXPO: return ease_in_expo (value, 1); case BGE_EASE_OUT_EXPO: return ease_out_expo (value, 1); case BGE_EASE_IN_OUT_EXPO: return ease_in_out_expo (value, 1); case BGE_EASE_IN_CIRC: return ease_in_circ (value, 1); case BGE_EASE_OUT_CIRC: return ease_out_circ (value, 1); case BGE_EASE_IN_OUT_CIRC: return ease_in_out_circ (value, 1); case BGE_EASE_IN_ELASTIC: return ease_in_elastic (value, 1); case BGE_EASE_OUT_ELASTIC: return ease_out_elastic (value, 1); case BGE_EASE_IN_OUT_ELASTIC: return ease_in_out_elastic (value, 1); case BGE_EASE_IN_BACK: return ease_in_back (value, 1); case BGE_EASE_OUT_BACK: return ease_out_back (value, 1); case BGE_EASE_IN_OUT_BACK: return ease_in_out_back (value, 1); case BGE_EASE_IN_BOUNCE: return ease_in_bounce (value, 1); case BGE_EASE_OUT_BOUNCE: return ease_out_bounce (value, 1); case BGE_EASE_IN_OUT_BOUNCE: return ease_in_out_bounce (value, 1); case BGE_EASE: return ease_cubic_bezier (value, 1, 0.25, 0.1, 0.25, 1.0); case BGE_EASE_IN: return ease_cubic_bezier (value, 1, 0.42, 0.0, 1.0, 1.0); case BGE_EASE_OUT: return ease_cubic_bezier (value, 1, 0.0, 0.0, 0.58, 1.0); case BGE_EASE_IN_OUT: return ease_cubic_bezier (value, 1, 0.42, 0.0, 0.58, 1.0); default: g_assert_not_reached (); } } bazaar-org-bazaar-48f93f4/bge/wdgt/bge-easing.h000066400000000000000000000023611524000504200212140ustar00rootroot00000000000000/* TAKEN FROM LIBADWAITA */ /* * Copyright (C) 2021 Manuel Genovés * Copyright (C) 2021 Purism SPC * * SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #ifndef BGE_INSIDE #error "Only can be included directly." #endif G_BEGIN_DECLS typedef enum { BGE_LINEAR, BGE_EASE_IN_QUAD, BGE_EASE_OUT_QUAD, BGE_EASE_IN_OUT_QUAD, BGE_EASE_IN_CUBIC, BGE_EASE_OUT_CUBIC, BGE_EASE_IN_OUT_CUBIC, BGE_EASE_IN_QUART, BGE_EASE_OUT_QUART, BGE_EASE_IN_OUT_QUART, BGE_EASE_IN_QUINT, BGE_EASE_OUT_QUINT, BGE_EASE_IN_OUT_QUINT, BGE_EASE_IN_SINE, BGE_EASE_OUT_SINE, BGE_EASE_IN_OUT_SINE, BGE_EASE_IN_EXPO, BGE_EASE_OUT_EXPO, BGE_EASE_IN_OUT_EXPO, BGE_EASE_IN_CIRC, BGE_EASE_OUT_CIRC, BGE_EASE_IN_OUT_CIRC, BGE_EASE_IN_ELASTIC, BGE_EASE_OUT_ELASTIC, BGE_EASE_IN_OUT_ELASTIC, BGE_EASE_IN_BACK, BGE_EASE_OUT_BACK, BGE_EASE_IN_OUT_BACK, BGE_EASE_IN_BOUNCE, BGE_EASE_OUT_BOUNCE, BGE_EASE_IN_OUT_BOUNCE, BGE_EASE, BGE_EASE_IN, BGE_EASE_OUT, BGE_EASE_IN_OUT } BgeEasing; GType bge_easing_get_type (void); #define BGE_TYPE_EASING (bge_easing_get_type ()) BGE_AVAILABLE_IN_ALL double bge_easing_ease (BgeEasing self, double value); G_END_DECLS bazaar-org-bazaar-48f93f4/bge/wdgt/bge-wdgt-renderer.h000066400000000000000000000046411524000504200225220ustar00rootroot00000000000000/* bge-wdgt-renderer.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #ifndef BGE_INSIDE #error "Only can be included directly." #endif #include "bge-wdgt-spec.h" G_BEGIN_DECLS #define BGE_TYPE_WDGT_RENDERER (bge_wdgt_renderer_get_type ()) G_DECLARE_FINAL_TYPE (BgeWdgtRenderer, bge_wdgt_renderer, BGE, WDGT_RENDERER, GtkWidget) BGE_AVAILABLE_IN_ALL BgeWdgtRenderer * bge_wdgt_renderer_new (void); BGE_AVAILABLE_IN_ALL BgeWdgtSpec * bge_wdgt_renderer_get_spec (BgeWdgtRenderer *self); BGE_AVAILABLE_IN_ALL const char * bge_wdgt_renderer_get_state (BgeWdgtRenderer *self); BGE_AVAILABLE_IN_ALL GObject * bge_wdgt_renderer_get_reference (BgeWdgtRenderer *self); BGE_AVAILABLE_IN_ALL GtkWidget * bge_wdgt_renderer_get_child (BgeWdgtRenderer *self); BGE_AVAILABLE_IN_ALL void bge_wdgt_renderer_set_spec (BgeWdgtRenderer *self, BgeWdgtSpec *spec); BGE_AVAILABLE_IN_ALL void bge_wdgt_renderer_set_state (BgeWdgtRenderer *self, const char *state); BGE_AVAILABLE_IN_ALL void bge_wdgt_renderer_set_reference (BgeWdgtRenderer *self, GObject *reference); BGE_AVAILABLE_IN_ALL void bge_wdgt_renderer_set_child (BgeWdgtRenderer *self, GtkWidget *child); BGE_AVAILABLE_IN_ALL void bge_wdgt_renderer_set_state_take (BgeWdgtRenderer *self, char *state); #define bge_wdgt_renderer_set_state_take_printf(self, ...) bge_wdgt_renderer_set_state_take (self, g_strdup_printf (__VA_ARGS__)) BGE_AVAILABLE_IN_ALL gpointer bge_wdgt_renderer_lookup_object (BgeWdgtRenderer *self, const char *name); G_END_DECLS /* End of bge-wdgt-renderer.h */ bazaar-org-bazaar-48f93f4/bge/wdgt/bge-wdgt-spec-private.h000066400000000000000000000232541524000504200233170ustar00rootroot00000000000000/* bge-wdgt-spec-private.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bge.h" G_BEGIN_DECLS typedef enum { BGE_WDGT_SNAPSHOT_INSTR_APPEND = 0, BGE_WDGT_SNAPSHOT_INSTR_PUSH, BGE_WDGT_SNAPSHOT_INSTR_POP, BGE_WDGT_SNAPSHOT_INSTR_SAVE, BGE_WDGT_SNAPSHOT_INSTR_TRANSFORM, BGE_WDGT_SNAPSHOT_INSTR_RESTORE, BGE_WDGT_SNAPSHOT_INSTR_SNAPSHOT_CHILD, } BgeWdgtSnapshotInstrKind; typedef enum { BGE_WDGT_MEASURE_MINIMUM_WIDTH, BGE_WDGT_MEASURE_NATURAL_WIDTH, BGE_WDGT_MEASURE_MINIMUM_HEIGHT, BGE_WDGT_MEASURE_NATURAL_HEIGHT, } BgeWdgtMeasureKind; gboolean bge_wdgt_spec_add_constant_source_value (BgeWdgtSpec *self, const char *name, const GValue *constant, GError **error); gboolean bge_wdgt_spec_add_component_source_value (BgeWdgtSpec *self, const char *name, GType type, const char *const *components, guint n_components, GError **error); gboolean bge_wdgt_spec_add_transform_source_value (BgeWdgtSpec *self, const char *name, const char *next, const char *instruction, const char *const *args, guint n_args, GError **error); gboolean bge_wdgt_spec_add_path_source_value (BgeWdgtSpec *self, const char *name, const char *const *instructions, const char *const *const *argss, const guint *n_argss, guint n_args, GError **error); gboolean bge_wdgt_spec_add_instance_source_value (BgeWdgtSpec *self, const char *name, GType type, GError **error); gboolean bge_wdgt_spec_add_child_source_value (BgeWdgtSpec *self, const char *name, GType type, const char *parent_widget, const char *builder_type, const char *const *css_classes, guint n_css_classes, GError **error); gboolean bge_wdgt_spec_add_cclosure_source_value (BgeWdgtSpec *self, const char *name, GType type, GClosureMarshal marshal, GCallback func, const char *const *args, const GType *arg_types, guint n_args, gpointer user_data, GDestroyNotify destroy_user_data, GError **error); gboolean bge_wdgt_spec_add_measure_for_size_source_value (BgeWdgtSpec *self, const char *name, GError **error); gboolean bge_wdgt_spec_add_widget_width_source_value (BgeWdgtSpec *self, const char *name, GError **error); gboolean bge_wdgt_spec_add_widget_height_source_value (BgeWdgtSpec *self, const char *name, GError **error); gboolean bge_wdgt_spec_add_tick_time_source_value (BgeWdgtSpec *self, const char *name, GError **error); gboolean bge_wdgt_spec_add_track_transition_source_value (BgeWdgtSpec *self, const char *name, const char *src, const char *damping_ratio, const char *mass, const char *stiffness, GError **error); gboolean bge_wdgt_spec_add_variable_value (BgeWdgtSpec *self, GType type, const char *name, GError **error); gboolean bge_wdgt_spec_add_reference_object_value (BgeWdgtSpec *self, GType type, const char *name, GError **error); gboolean bge_wdgt_spec_add_property_value (BgeWdgtSpec *self, const char *name, const char *object, const char *property, GType *type_out, GError **error); gboolean bge_wdgt_spec_add_allocation_width_value (BgeWdgtSpec *self, const char *name, const char *child, GError **error); gboolean bge_wdgt_spec_add_allocation_height_value (BgeWdgtSpec *self, const char *name, const char *child, GError **error); gboolean bge_wdgt_spec_add_allocation_transform_value (BgeWdgtSpec *self, const char *name, const char *child, GError **error); gboolean bge_wdgt_spec_add_measure_value (BgeWdgtSpec *self, const char *name, BgeWdgtMeasureKind kind, GError **error); gboolean bge_wdgt_spec_add_state (BgeWdgtSpec *self, const char *name, gboolean default_state, GError **error); gboolean bge_wdgt_spec_set_value (BgeWdgtSpec *self, const char *state, const char *dest_value, const char *src_value, GError **error); gboolean bge_wdgt_spec_transition_value (BgeWdgtSpec *self, const char *state, const char *value, const char *seconds, const char *easing, GError **error); gboolean bge_wdgt_spec_transition_value_spring (BgeWdgtSpec *self, const char *state, const char *value, const char *damping_ratio, const char *mass, const char *stiffness, GError **error); gboolean bge_wdgt_spec_append_snapshot_instr (BgeWdgtSpec *self, const char *state, BgeWdgtSnapshotInstrKind kind, const char *instr, const char *const *args, guint n_args, guint *n_pops_out, GError **error); gboolean bge_wdgt_spec_push_foreach (BgeWdgtSpec *self, const char *model, const char *value_iterator, const char *index_iterator, GType iterator_type, GError **error); gboolean bge_wdgt_spec_pop_foreach (BgeWdgtSpec *self); G_END_DECLS /* End of bge-wdgt-spec-private.h */ bazaar-org-bazaar-48f93f4/bge/wdgt/bge-wdgt-spec.c000066400000000000000000006260341524000504200216470ustar00rootroot00000000000000/* bge-wdgt-spec.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BGE::WDGT" #include "../bge-animation-private.h" #include "bge-marshalers.h" #include "bge-wdgt-spec-private.h" #include "bge.h" #include "fmt/parser.h" #include "graphene-gobject.h" #include "lookup/lookup.h" #include "util.h" #include "util/marshal.h" typedef enum { VALUE_ALLOCATION_HEIGHT = 0, VALUE_ALLOCATION_TRANSFORM, VALUE_ALLOCATION_WIDTH, VALUE_CHILD, VALUE_CLOSURE, VALUE_COERCION, VALUE_COMPONENT, VALUE_CONSTANT, VALUE_ITERATOR, VALUE_MEASURE_FOR_SIZE, VALUE_MEASURE_MINIMUM_HEIGHT, VALUE_MEASURE_MINIMUM_WIDTH, VALUE_MEASURE_NATURAL_HEIGHT, VALUE_MEASURE_NATURAL_WIDTH, VALUE_OBJECT, VALUE_PATH, VALUE_PROPERTY, VALUE_REFERENCE_OBJECT, VALUE_TICK_TIME, VALUE_TRACK_TRANSITION, VALUE_TRANSFORM, VALUE_VARIABLE, VALUE_WIDGET_HEIGHT, VALUE_WIDGET_WIDTH, } ValueKind; typedef enum { TRANSITION_EASE = 0, TRANSITION_SPRING, } TransitionKind; typedef struct _ForeachData ForeachData; static void deinit_value (gpointer ptr); BGE_DEFINE_DATA ( value, Value, { char *name; GType type; ValueKind kind; union { struct { GValue value; } constant; struct { GPtrArray *params; } component; struct { ForeachData *context; } iterator; struct { TransformCallFunc func; ValueData *next; GPtrArray *args; } transform; struct { GPtrArray *funcs; GPtrArray *argss; } path; struct { GPtrArray *args; GClosureMarshal marshal; GCallback func; gpointer user_data; GDestroyNotify destroy_user_data; } closure; struct { ValueData *src; struct { ValueData *damping_ratio; ValueData *mass; ValueData *stiffness; } spring; } track_transition; struct { ValueData *value; } coercion; struct { ValueData *object; char *prop_name; GParamFlags pspec_flags; } property; struct { ValueData *parent_widget; char *builder_type; GPtrArray *css_classes; } child; struct { ValueData *widget; } allocation; }; }, deinit_value (self);) BGE_DEFINE_DATA ( foreach, Foreach, { ValueData *model; GHashTable *values; ForeachData *parent; }, BGE_RELEASE_DATA (model, value_data_unref); BGE_RELEASE_DATA (values, g_hash_table_unref); BGE_RELEASE_DATA (parent, foreach_data_unref)) static void deinit_value (gpointer ptr) { ValueData *value = ptr; g_clear_pointer (&value->name, g_free); switch (value->kind) { case VALUE_CONSTANT: g_value_unset (&value->constant.value); break; case VALUE_ITERATOR: g_clear_pointer (&value->iterator.context, foreach_data_unref); break; case VALUE_COMPONENT: g_clear_pointer (&value->component.params, g_ptr_array_unref); break; case VALUE_TRANSFORM: g_clear_pointer (&value->transform.next, value_data_unref); g_clear_pointer (&value->transform.args, g_ptr_array_unref); break; case VALUE_PATH: g_clear_pointer (&value->path.funcs, g_ptr_array_unref); g_clear_pointer (&value->path.argss, g_ptr_array_unref); break; case VALUE_CLOSURE: g_clear_pointer (&value->closure.args, g_ptr_array_unref); if (value->closure.destroy_user_data != NULL) g_clear_pointer (&value->closure.user_data, value->closure.destroy_user_data); break; case VALUE_COERCION: g_clear_pointer (&value->coercion.value, value_data_unref); break; case VALUE_TRACK_TRANSITION: g_clear_pointer (&value->track_transition.src, value_data_unref); g_clear_pointer (&value->track_transition.spring.damping_ratio, value_data_unref); g_clear_pointer (&value->track_transition.spring.mass, value_data_unref); g_clear_pointer (&value->track_transition.spring.stiffness, value_data_unref); break; case VALUE_PROPERTY: g_clear_pointer (&value->property.object, value_data_unref); g_clear_pointer (&value->property.prop_name, g_free); break; case VALUE_CHILD: g_clear_pointer (&value->child.parent_widget, value_data_unref); g_clear_pointer (&value->child.builder_type, g_free); g_clear_pointer (&value->child.css_classes, g_ptr_array_unref); break; case VALUE_ALLOCATION_WIDTH: case VALUE_ALLOCATION_HEIGHT: case VALUE_ALLOCATION_TRANSFORM: g_clear_pointer (&value->allocation.widget, value_data_unref); break; case VALUE_MEASURE_FOR_SIZE: case VALUE_MEASURE_MINIMUM_HEIGHT: case VALUE_MEASURE_MINIMUM_WIDTH: case VALUE_MEASURE_NATURAL_HEIGHT: case VALUE_MEASURE_NATURAL_WIDTH: case VALUE_OBJECT: case VALUE_REFERENCE_OBJECT: case VALUE_TICK_TIME: case VALUE_VARIABLE: case VALUE_WIDGET_HEIGHT: case VALUE_WIDGET_WIDTH: break; default: g_assert_not_reached (); } } static void deinit_transition (gpointer ptr); BGE_DEFINE_DATA ( transition, Transition, { TransitionKind kind; union { struct { ValueData *seconds; ValueData *easing; } ease; struct { ValueData *damping_ratio; ValueData *mass; ValueData *stiffness; } spring; }; }, deinit_transition (self);) static void deinit_transition (gpointer ptr) { TransitionData *transition = ptr; switch (transition->kind) { case TRANSITION_EASE: g_clear_pointer (&transition->ease.seconds, value_data_unref); g_clear_pointer (&transition->ease.easing, value_data_unref); break; case TRANSITION_SPRING: g_clear_pointer (&transition->spring.damping_ratio, value_data_unref); g_clear_pointer (&transition->spring.mass, value_data_unref); g_clear_pointer (&transition->spring.stiffness, value_data_unref); break; default: g_assert_not_reached (); } } BGE_DEFINE_DATA ( snapshot_call, SnapshotCall, { BgeWdgtSnapshotInstrKind kind; SnapshotCallFunc func; GPtrArray *args; GPtrArray *rest; ValueData *child; ForeachData *foreach_context; }, BGE_RELEASE_DATA (args, g_ptr_array_unref); BGE_RELEASE_DATA (rest, g_ptr_array_unref); BGE_RELEASE_DATA (child, value_data_unref); BGE_RELEASE_DATA (foreach_context, foreach_data_unref)) BGE_DEFINE_DATA ( snapshot, Snapshot, { GPtrArray *calls; }, BGE_RELEASE_DATA (calls, g_ptr_array_unref)) BGE_DEFINE_DATA ( state, State, { char *name; GHashTable *setters; GHashTable *transitions; SnapshotData *snapshot; GHashTable *expressions; GPtrArray *snapshot_deps; GHashTable *values_need_tick; gboolean needs_tick; }, BGE_RELEASE_DATA (name, g_free); BGE_RELEASE_DATA (setters, g_hash_table_unref); BGE_RELEASE_DATA (transitions, g_hash_table_unref); BGE_RELEASE_DATA (snapshot, snapshot_data_unref); BGE_RELEASE_DATA (expressions, g_hash_table_unref); BGE_RELEASE_DATA (snapshot_deps, g_ptr_array_unref); BGE_RELEASE_DATA (values_need_tick, g_hash_table_unref);); /* --------------------------- */ /* Spec Builder Implementation */ /* --------------------------- */ struct _BgeWdgtSpec { GObject parent_instance; char *name; GtkStringList *state_names; GHashTable *values; GPtrArray *values_stack; GPtrArray *foreaches; GPtrArray *foreach_stack; GPtrArray *anon_values; GPtrArray *track_transition_values; GHashTable *states; GPtrArray *children; GPtrArray *nonchildren; StateData *init_state; StateData *default_state; ValueData *reference; gboolean ready; }; static void list_model_iface_init (GListModelInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BgeWdgtSpec, bge_wdgt_spec, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init)); enum { PROP_0, PROP_NAME, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static gboolean check_can_coerce_type (GType dest, GType src); static void coerce_value (const GValue *in, GType dest_type, GValue *out); static ValueData * wrap_coerce_value (BgeWdgtSpec *self, ValueData *value, GType dest_type); static void ensure_state_snapshot (StateData *state); static void bge_wdgt_spec_dispose (GObject *object) { BgeWdgtSpec *self = BGE_WDGT_SPEC (object); g_clear_pointer (&self->name, g_free); g_clear_object (&self->state_names); g_clear_pointer (&self->values, g_hash_table_unref); g_clear_pointer (&self->values_stack, g_ptr_array_unref); g_clear_pointer (&self->foreaches, g_ptr_array_unref); g_clear_pointer (&self->foreach_stack, g_ptr_array_unref); g_clear_pointer (&self->anon_values, g_ptr_array_unref); g_clear_pointer (&self->track_transition_values, g_ptr_array_unref); g_clear_pointer (&self->states, g_hash_table_unref); g_clear_pointer (&self->children, g_ptr_array_unref); g_clear_pointer (&self->nonchildren, g_ptr_array_unref); g_clear_pointer (&self->init_state, state_data_unref); g_clear_pointer (&self->default_state, state_data_unref); g_clear_pointer (&self->reference, value_data_unref); G_OBJECT_CLASS (bge_wdgt_spec_parent_class)->dispose (object); } static void bge_wdgt_spec_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BgeWdgtSpec *self = BGE_WDGT_SPEC (object); switch (prop_id) { case PROP_NAME: g_value_set_string (value, bge_wdgt_spec_get_name (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_wdgt_spec_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BgeWdgtSpec *self = BGE_WDGT_SPEC (object); switch (prop_id) { case PROP_NAME: bge_wdgt_spec_set_name (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_wdgt_spec_class_init (BgeWdgtSpecClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bge_wdgt_spec_set_property; object_class->get_property = bge_wdgt_spec_get_property; object_class->dispose = bge_wdgt_spec_dispose; props[PROP_NAME] = g_param_spec_string ( "name", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BGE_TYPE_EASING); /* Make sure these names are available for the parser */ g_type_ensure (GRAPHENE_TYPE_POINT); g_type_ensure (GRAPHENE_TYPE_POINT3D); g_type_ensure (GRAPHENE_TYPE_SIZE); g_type_ensure (GRAPHENE_TYPE_RECT); g_type_ensure (GRAPHENE_TYPE_VEC2); g_type_ensure (GRAPHENE_TYPE_VEC3); g_type_ensure (GRAPHENE_TYPE_VEC4); g_type_ensure (GRAPHENE_TYPE_QUAD); g_type_ensure (GRAPHENE_TYPE_QUATERNION); g_type_ensure (GRAPHENE_TYPE_MATRIX); g_type_ensure (GRAPHENE_TYPE_PLANE); g_type_ensure (GRAPHENE_TYPE_FRUSTUM); g_type_ensure (GRAPHENE_TYPE_SPHERE); g_type_ensure (GRAPHENE_TYPE_BOX); g_type_ensure (GRAPHENE_TYPE_TRIANGLE); g_type_ensure (GRAPHENE_TYPE_EULER); g_type_ensure (GRAPHENE_TYPE_RAY); g_type_ensure (GSK_TYPE_PATH); g_type_ensure (GSK_TYPE_PATH_POINT); g_type_ensure (GSK_TYPE_PATH_MEASURE); g_type_ensure (GSK_TYPE_TRANSFORM); g_type_ensure (GSK_TYPE_FILL_RULE); g_type_ensure (GSK_TYPE_LINE_CAP); g_type_ensure (GSK_TYPE_LINE_JOIN); /* Ensure GTK names are available for the parser */ g_type_ensure (gtk_at_context_get_type ()); g_type_ensure (gtk_about_dialog_get_type ()); g_type_ensure (gtk_accessible_get_type ()); g_type_ensure (gtk_accessible_announcement_priority_get_type ()); g_type_ensure (gtk_accessible_autocomplete_get_type ()); g_type_ensure (gtk_accessible_invalid_state_get_type ()); g_type_ensure (gtk_accessible_list_get_type ()); g_type_ensure (gtk_accessible_platform_state_get_type ()); g_type_ensure (gtk_accessible_property_get_type ()); g_type_ensure (gtk_accessible_range_get_type ()); g_type_ensure (gtk_accessible_relation_get_type ()); g_type_ensure (gtk_accessible_role_get_type ()); g_type_ensure (gtk_accessible_sort_get_type ()); g_type_ensure (gtk_accessible_state_get_type ()); g_type_ensure (gtk_accessible_text_get_type ()); g_type_ensure (gtk_accessible_text_content_change_get_type ()); g_type_ensure (gtk_accessible_text_granularity_get_type ()); g_type_ensure (gtk_accessible_tristate_get_type ()); g_type_ensure (gtk_action_bar_get_type ()); g_type_ensure (gtk_actionable_get_type ()); g_type_ensure (gtk_activate_action_get_type ()); g_type_ensure (gtk_adjustment_get_type ()); g_type_ensure (gtk_alert_dialog_get_type ()); g_type_ensure (gtk_align_get_type ()); g_type_ensure (gtk_alternative_trigger_get_type ()); g_type_ensure (gtk_any_filter_get_type ()); g_type_ensure (gtk_app_chooser_get_type ()); g_type_ensure (gtk_app_chooser_button_get_type ()); g_type_ensure (gtk_app_chooser_dialog_get_type ()); g_type_ensure (gtk_app_chooser_widget_get_type ()); g_type_ensure (gtk_application_get_type ()); g_type_ensure (gtk_application_inhibit_flags_get_type ()); g_type_ensure (gtk_application_window_get_type ()); g_type_ensure (gtk_arrow_type_get_type ()); g_type_ensure (gtk_aspect_frame_get_type ()); g_type_ensure (gtk_assistant_get_type ()); g_type_ensure (gtk_assistant_page_get_type ()); g_type_ensure (gtk_assistant_page_type_get_type ()); g_type_ensure (gtk_baseline_position_get_type ()); g_type_ensure (gtk_bin_layout_get_type ()); g_type_ensure (gtk_bitset_get_type ()); g_type_ensure (gtk_bitset_iter_get_type ()); g_type_ensure (gtk_bookmark_list_get_type ()); g_type_ensure (gtk_bool_filter_get_type ()); g_type_ensure (gtk_border_get_type ()); g_type_ensure (gtk_border_style_get_type ()); g_type_ensure (gtk_box_get_type ()); g_type_ensure (gtk_box_layout_get_type ()); g_type_ensure (gtk_buildable_get_type ()); g_type_ensure (gtk_builder_get_type ()); g_type_ensure (gtk_builder_cscope_get_type ()); g_type_ensure (gtk_builder_closure_flags_get_type ()); g_type_ensure (gtk_builder_error_get_type ()); g_type_ensure (gtk_builder_list_item_factory_get_type ()); g_type_ensure (gtk_builder_scope_get_type ()); g_type_ensure (gtk_button_get_type ()); g_type_ensure (gtk_buttons_type_get_type ()); g_type_ensure (gtk_cclosure_expression_get_type ()); g_type_ensure (gtk_calendar_get_type ()); g_type_ensure (gtk_callback_action_get_type ()); g_type_ensure (gtk_cell_area_get_type ()); g_type_ensure (gtk_cell_area_box_get_type ()); g_type_ensure (gtk_cell_area_context_get_type ()); g_type_ensure (gtk_cell_editable_get_type ()); g_type_ensure (gtk_cell_layout_get_type ()); g_type_ensure (gtk_cell_renderer_get_type ()); g_type_ensure (gtk_cell_renderer_accel_get_type ()); g_type_ensure (gtk_cell_renderer_accel_mode_get_type ()); g_type_ensure (gtk_cell_renderer_combo_get_type ()); g_type_ensure (gtk_cell_renderer_mode_get_type ()); g_type_ensure (gtk_cell_renderer_pixbuf_get_type ()); g_type_ensure (gtk_cell_renderer_progress_get_type ()); g_type_ensure (gtk_cell_renderer_spin_get_type ()); g_type_ensure (gtk_cell_renderer_spinner_get_type ()); g_type_ensure (gtk_cell_renderer_state_get_type ()); g_type_ensure (gtk_cell_renderer_text_get_type ()); g_type_ensure (gtk_cell_renderer_toggle_get_type ()); g_type_ensure (gtk_cell_view_get_type ()); g_type_ensure (gtk_center_box_get_type ()); g_type_ensure (gtk_center_layout_get_type ()); g_type_ensure (gtk_check_button_get_type ()); g_type_ensure (gtk_closure_expression_get_type ()); g_type_ensure (gtk_collation_get_type ()); g_type_ensure (gtk_color_button_get_type ()); g_type_ensure (gtk_color_chooser_get_type ()); g_type_ensure (gtk_color_chooser_dialog_get_type ()); g_type_ensure (gtk_color_chooser_widget_get_type ()); g_type_ensure (gtk_color_dialog_get_type ()); g_type_ensure (gtk_color_dialog_button_get_type ()); g_type_ensure (gtk_column_view_get_type ()); g_type_ensure (gtk_column_view_cell_get_type ()); g_type_ensure (gtk_column_view_column_get_type ()); g_type_ensure (gtk_column_view_row_get_type ()); g_type_ensure (gtk_column_view_sorter_get_type ()); g_type_ensure (gtk_combo_box_get_type ()); g_type_ensure (gtk_combo_box_text_get_type ()); g_type_ensure (gtk_constant_expression_get_type ()); g_type_ensure (gtk_constraint_get_type ()); g_type_ensure (gtk_constraint_attribute_get_type ()); g_type_ensure (gtk_constraint_guide_get_type ()); g_type_ensure (gtk_constraint_layout_get_type ()); g_type_ensure (gtk_constraint_layout_child_get_type ()); g_type_ensure (gtk_constraint_relation_get_type ()); g_type_ensure (gtk_constraint_strength_get_type ()); g_type_ensure (gtk_constraint_target_get_type ()); g_type_ensure (gtk_constraint_vfl_parser_error_get_type ()); g_type_ensure (gtk_content_fit_get_type ()); g_type_ensure (gtk_corner_type_get_type ()); g_type_ensure (gtk_css_provider_get_type ()); g_type_ensure (gtk_css_section_get_type ()); g_type_ensure (gtk_custom_filter_get_type ()); g_type_ensure (gtk_custom_layout_get_type ()); g_type_ensure (gtk_custom_sorter_get_type ()); g_type_ensure (gtk_debug_flags_get_type ()); g_type_ensure (gtk_delete_type_get_type ()); g_type_ensure (gtk_dialog_get_type ()); g_type_ensure (gtk_dialog_error_get_type ()); g_type_ensure (gtk_dialog_flags_get_type ()); g_type_ensure (gtk_direction_type_get_type ()); g_type_ensure (gtk_directory_list_get_type ()); g_type_ensure (gtk_drag_icon_get_type ()); g_type_ensure (gtk_drag_source_get_type ()); g_type_ensure (gtk_drawing_area_get_type ()); g_type_ensure (gtk_drop_controller_motion_get_type ()); g_type_ensure (gtk_drop_down_get_type ()); g_type_ensure (gtk_drop_target_get_type ()); g_type_ensure (gtk_drop_target_async_get_type ()); g_type_ensure (gtk_editable_get_type ()); g_type_ensure (gtk_editable_label_get_type ()); g_type_ensure (gtk_editable_properties_get_type ()); g_type_ensure (gtk_emoji_chooser_get_type ()); g_type_ensure (gtk_entry_get_type ()); g_type_ensure (gtk_entry_buffer_get_type ()); g_type_ensure (gtk_entry_completion_get_type ()); g_type_ensure (gtk_entry_icon_position_get_type ()); g_type_ensure (gtk_event_controller_get_type ()); g_type_ensure (gtk_event_controller_focus_get_type ()); g_type_ensure (gtk_event_controller_key_get_type ()); g_type_ensure (gtk_event_controller_legacy_get_type ()); g_type_ensure (gtk_event_controller_motion_get_type ()); g_type_ensure (gtk_event_controller_scroll_get_type ()); g_type_ensure (gtk_event_controller_scroll_flags_get_type ()); g_type_ensure (gtk_event_sequence_state_get_type ()); g_type_ensure (gtk_every_filter_get_type ()); g_type_ensure (gtk_expander_get_type ()); g_type_ensure (gtk_expression_get_type ()); g_type_ensure (gtk_expression_watch_get_type ()); g_type_ensure (gtk_file_chooser_get_type ()); g_type_ensure (gtk_file_chooser_action_get_type ()); g_type_ensure (gtk_file_chooser_dialog_get_type ()); g_type_ensure (gtk_file_chooser_error_get_type ()); g_type_ensure (gtk_file_chooser_native_get_type ()); g_type_ensure (gtk_file_chooser_widget_get_type ()); g_type_ensure (gtk_file_dialog_get_type ()); g_type_ensure (gtk_file_filter_get_type ()); g_type_ensure (gtk_file_launcher_get_type ()); g_type_ensure (gtk_filter_get_type ()); g_type_ensure (gtk_filter_change_get_type ()); g_type_ensure (gtk_filter_list_model_get_type ()); g_type_ensure (gtk_filter_match_get_type ()); g_type_ensure (gtk_fixed_get_type ()); g_type_ensure (gtk_fixed_layout_get_type ()); g_type_ensure (gtk_fixed_layout_child_get_type ()); g_type_ensure (gtk_flatten_list_model_get_type ()); g_type_ensure (gtk_flow_box_get_type ()); g_type_ensure (gtk_flow_box_child_get_type ()); g_type_ensure (gtk_font_button_get_type ()); g_type_ensure (gtk_font_chooser_get_type ()); g_type_ensure (gtk_font_chooser_dialog_get_type ()); g_type_ensure (gtk_font_chooser_level_get_type ()); g_type_ensure (gtk_font_chooser_widget_get_type ()); g_type_ensure (gtk_font_dialog_get_type ()); g_type_ensure (gtk_font_dialog_button_get_type ()); g_type_ensure (gtk_font_level_get_type ()); g_type_ensure (gtk_font_rendering_get_type ()); g_type_ensure (gtk_frame_get_type ()); g_type_ensure (gtk_gl_area_get_type ()); g_type_ensure (gtk_gesture_get_type ()); g_type_ensure (gtk_gesture_click_get_type ()); g_type_ensure (gtk_gesture_drag_get_type ()); g_type_ensure (gtk_gesture_long_press_get_type ()); g_type_ensure (gtk_gesture_pan_get_type ()); g_type_ensure (gtk_gesture_rotate_get_type ()); g_type_ensure (gtk_gesture_single_get_type ()); g_type_ensure (gtk_gesture_stylus_get_type ()); g_type_ensure (gtk_gesture_swipe_get_type ()); g_type_ensure (gtk_gesture_zoom_get_type ()); g_type_ensure (gtk_graphics_offload_get_type ()); g_type_ensure (gtk_graphics_offload_enabled_get_type ()); g_type_ensure (gtk_grid_get_type ()); g_type_ensure (gtk_grid_layout_get_type ()); g_type_ensure (gtk_grid_layout_child_get_type ()); g_type_ensure (gtk_grid_view_get_type ()); g_type_ensure (gtk_header_bar_get_type ()); g_type_ensure (gtk_im_context_get_type ()); g_type_ensure (gtk_im_context_simple_get_type ()); g_type_ensure (gtk_im_multicontext_get_type ()); g_type_ensure (gtk_icon_lookup_flags_get_type ()); g_type_ensure (gtk_icon_paintable_get_type ()); g_type_ensure (gtk_icon_size_get_type ()); g_type_ensure (gtk_icon_theme_get_type ()); g_type_ensure (gtk_icon_theme_error_get_type ()); g_type_ensure (gtk_icon_view_get_type ()); g_type_ensure (gtk_icon_view_drop_position_get_type ()); g_type_ensure (gtk_image_get_type ()); g_type_ensure (gtk_image_type_get_type ()); g_type_ensure (gtk_info_bar_get_type ()); g_type_ensure (gtk_input_hints_get_type ()); g_type_ensure (gtk_input_purpose_get_type ()); g_type_ensure (gtk_inscription_get_type ()); g_type_ensure (gtk_inscription_overflow_get_type ()); g_type_ensure (gtk_interface_color_scheme_get_type ()); g_type_ensure (gtk_interface_contrast_get_type ()); g_type_ensure (gtk_justification_get_type ()); g_type_ensure (gtk_keyval_trigger_get_type ()); g_type_ensure (gtk_label_get_type ()); g_type_ensure (gtk_layout_child_get_type ()); g_type_ensure (gtk_layout_manager_get_type ()); g_type_ensure (gtk_level_bar_get_type ()); g_type_ensure (gtk_level_bar_mode_get_type ()); g_type_ensure (gtk_license_get_type ()); g_type_ensure (gtk_link_button_get_type ()); g_type_ensure (gtk_list_base_get_type ()); g_type_ensure (gtk_list_box_get_type ()); g_type_ensure (gtk_list_box_row_get_type ()); g_type_ensure (gtk_list_header_get_type ()); g_type_ensure (gtk_list_item_get_type ()); g_type_ensure (gtk_list_item_factory_get_type ()); g_type_ensure (gtk_list_scroll_flags_get_type ()); g_type_ensure (gtk_list_store_get_type ()); g_type_ensure (gtk_list_tab_behavior_get_type ()); g_type_ensure (gtk_list_view_get_type ()); g_type_ensure (gtk_lock_button_get_type ()); g_type_ensure (gtk_map_list_model_get_type ()); g_type_ensure (gtk_media_controls_get_type ()); g_type_ensure (gtk_media_file_get_type ()); g_type_ensure (gtk_media_stream_get_type ()); g_type_ensure (gtk_menu_button_get_type ()); g_type_ensure (gtk_message_dialog_get_type ()); g_type_ensure (gtk_message_type_get_type ()); g_type_ensure (gtk_mnemonic_action_get_type ()); g_type_ensure (gtk_mnemonic_trigger_get_type ()); g_type_ensure (gtk_mount_operation_get_type ()); g_type_ensure (gtk_movement_step_get_type ()); g_type_ensure (gtk_multi_filter_get_type ()); g_type_ensure (gtk_multi_selection_get_type ()); g_type_ensure (gtk_multi_sorter_get_type ()); g_type_ensure (gtk_named_action_get_type ()); g_type_ensure (gtk_native_get_type ()); g_type_ensure (gtk_native_dialog_get_type ()); g_type_ensure (gtk_natural_wrap_mode_get_type ()); g_type_ensure (gtk_never_trigger_get_type ()); g_type_ensure (gtk_no_selection_get_type ()); g_type_ensure (gtk_notebook_get_type ()); g_type_ensure (gtk_notebook_page_get_type ()); g_type_ensure (gtk_notebook_tab_get_type ()); g_type_ensure (gtk_nothing_action_get_type ()); g_type_ensure (gtk_number_up_layout_get_type ()); g_type_ensure (gtk_numeric_sorter_get_type ()); g_type_ensure (gtk_object_expression_get_type ()); g_type_ensure (gtk_ordering_get_type ()); g_type_ensure (gtk_orientable_get_type ()); g_type_ensure (gtk_orientation_get_type ()); g_type_ensure (gtk_overflow_get_type ()); g_type_ensure (gtk_overlay_get_type ()); g_type_ensure (gtk_overlay_layout_get_type ()); g_type_ensure (gtk_overlay_layout_child_get_type ()); g_type_ensure (gtk_pack_type_get_type ()); g_type_ensure (gtk_pad_action_type_get_type ()); g_type_ensure (gtk_pad_controller_get_type ()); g_type_ensure (gtk_page_orientation_get_type ()); g_type_ensure (gtk_page_set_get_type ()); g_type_ensure (gtk_page_setup_get_type ()); g_type_ensure (gtk_pan_direction_get_type ()); g_type_ensure (gtk_paned_get_type ()); g_type_ensure (gtk_paper_size_get_type ()); g_type_ensure (gtk_param_expression_get_type ()); g_type_ensure (gtk_password_entry_get_type ()); g_type_ensure (gtk_password_entry_buffer_get_type ()); g_type_ensure (gtk_pick_flags_get_type ()); g_type_ensure (gtk_picture_get_type ()); g_type_ensure (gtk_policy_type_get_type ()); g_type_ensure (gtk_popover_get_type ()); g_type_ensure (gtk_popover_menu_get_type ()); g_type_ensure (gtk_popover_menu_bar_get_type ()); g_type_ensure (gtk_popover_menu_flags_get_type ()); g_type_ensure (gtk_position_type_get_type ()); g_type_ensure (gtk_print_context_get_type ()); g_type_ensure (gtk_print_dialog_get_type ()); g_type_ensure (gtk_print_duplex_get_type ()); g_type_ensure (gtk_print_error_get_type ()); g_type_ensure (gtk_print_operation_get_type ()); g_type_ensure (gtk_print_operation_action_get_type ()); g_type_ensure (gtk_print_operation_preview_get_type ()); g_type_ensure (gtk_print_operation_result_get_type ()); g_type_ensure (gtk_print_pages_get_type ()); g_type_ensure (gtk_print_quality_get_type ()); g_type_ensure (gtk_print_settings_get_type ()); g_type_ensure (gtk_print_setup_get_type ()); g_type_ensure (gtk_print_status_get_type ()); g_type_ensure (gtk_progress_bar_get_type ()); g_type_ensure (gtk_propagation_limit_get_type ()); g_type_ensure (gtk_propagation_phase_get_type ()); g_type_ensure (gtk_property_expression_get_type ()); g_type_ensure (gtk_range_get_type ()); g_type_ensure (gtk_recent_info_get_type ()); g_type_ensure (gtk_recent_manager_get_type ()); g_type_ensure (gtk_recent_manager_error_get_type ()); g_type_ensure (gtk_requisition_get_type ()); g_type_ensure (gtk_response_type_get_type ()); g_type_ensure (gtk_revealer_get_type ()); g_type_ensure (gtk_revealer_transition_type_get_type ()); g_type_ensure (gtk_root_get_type ()); g_type_ensure (gtk_scale_get_type ()); g_type_ensure (gtk_scale_button_get_type ()); g_type_ensure (gtk_scroll_info_get_type ()); g_type_ensure (gtk_scroll_step_get_type ()); g_type_ensure (gtk_scroll_type_get_type ()); g_type_ensure (gtk_scrollable_get_type ()); g_type_ensure (gtk_scrollable_policy_get_type ()); g_type_ensure (gtk_scrollbar_get_type ()); g_type_ensure (gtk_scrolled_window_get_type ()); g_type_ensure (gtk_search_bar_get_type ()); g_type_ensure (gtk_search_entry_get_type ()); g_type_ensure (gtk_section_model_get_type ()); g_type_ensure (gtk_selection_filter_model_get_type ()); g_type_ensure (gtk_selection_mode_get_type ()); g_type_ensure (gtk_selection_model_get_type ()); g_type_ensure (gtk_sensitivity_type_get_type ()); g_type_ensure (gtk_separator_get_type ()); g_type_ensure (gtk_settings_get_type ()); g_type_ensure (gtk_shortcut_get_type ()); g_type_ensure (gtk_shortcut_action_get_type ()); g_type_ensure (gtk_shortcut_action_flags_get_type ()); g_type_ensure (gtk_shortcut_controller_get_type ()); g_type_ensure (gtk_shortcut_label_get_type ()); g_type_ensure (gtk_shortcut_manager_get_type ()); g_type_ensure (gtk_shortcut_scope_get_type ()); g_type_ensure (gtk_shortcut_trigger_get_type ()); g_type_ensure (gtk_shortcut_type_get_type ()); g_type_ensure (gtk_shortcuts_group_get_type ()); g_type_ensure (gtk_shortcuts_section_get_type ()); g_type_ensure (gtk_shortcuts_shortcut_get_type ()); g_type_ensure (gtk_shortcuts_window_get_type ()); g_type_ensure (gtk_signal_action_get_type ()); g_type_ensure (gtk_signal_list_item_factory_get_type ()); g_type_ensure (gtk_single_selection_get_type ()); g_type_ensure (gtk_size_group_get_type ()); g_type_ensure (gtk_size_group_mode_get_type ()); g_type_ensure (gtk_size_request_mode_get_type ()); g_type_ensure (gtk_slice_list_model_get_type ()); g_type_ensure (gtk_snapshot_get_type ()); g_type_ensure (gtk_sort_list_model_get_type ()); g_type_ensure (gtk_sort_type_get_type ()); g_type_ensure (gtk_sorter_get_type ()); g_type_ensure (gtk_sorter_change_get_type ()); g_type_ensure (gtk_sorter_order_get_type ()); g_type_ensure (gtk_spin_button_get_type ()); g_type_ensure (gtk_spin_button_update_policy_get_type ()); g_type_ensure (gtk_spin_type_get_type ()); g_type_ensure (gtk_spinner_get_type ()); g_type_ensure (gtk_stack_get_type ()); g_type_ensure (gtk_stack_page_get_type ()); g_type_ensure (gtk_stack_sidebar_get_type ()); g_type_ensure (gtk_stack_switcher_get_type ()); g_type_ensure (gtk_stack_transition_type_get_type ()); g_type_ensure (gtk_state_flags_get_type ()); g_type_ensure (gtk_statusbar_get_type ()); g_type_ensure (gtk_string_filter_get_type ()); g_type_ensure (gtk_string_filter_match_mode_get_type ()); g_type_ensure (gtk_string_list_get_type ()); g_type_ensure (gtk_string_object_get_type ()); g_type_ensure (gtk_string_sorter_get_type ()); g_type_ensure (gtk_style_context_get_type ()); g_type_ensure (gtk_style_context_print_flags_get_type ()); g_type_ensure (gtk_style_provider_get_type ()); g_type_ensure (gtk_switch_get_type ()); g_type_ensure (gtk_symbolic_color_get_type ()); g_type_ensure (gtk_symbolic_paintable_get_type ()); g_type_ensure (gtk_system_setting_get_type ()); g_type_ensure (gtk_text_get_type ()); g_type_ensure (gtk_text_buffer_get_type ()); g_type_ensure (gtk_text_buffer_notify_flags_get_type ()); g_type_ensure (gtk_text_child_anchor_get_type ()); g_type_ensure (gtk_text_direction_get_type ()); g_type_ensure (gtk_text_extend_selection_get_type ()); g_type_ensure (gtk_text_iter_get_type ()); g_type_ensure (gtk_text_mark_get_type ()); g_type_ensure (gtk_text_search_flags_get_type ()); g_type_ensure (gtk_text_tag_get_type ()); g_type_ensure (gtk_text_tag_table_get_type ()); g_type_ensure (gtk_text_view_get_type ()); g_type_ensure (gtk_text_view_layer_get_type ()); g_type_ensure (gtk_text_window_type_get_type ()); g_type_ensure (gtk_toggle_button_get_type ()); g_type_ensure (gtk_tooltip_get_type ()); g_type_ensure (gtk_tree_expander_get_type ()); g_type_ensure (gtk_tree_iter_get_type ()); g_type_ensure (gtk_tree_list_model_get_type ()); g_type_ensure (gtk_tree_list_row_get_type ()); g_type_ensure (gtk_tree_list_row_sorter_get_type ()); g_type_ensure (gtk_tree_model_get_type ()); g_type_ensure (gtk_tree_model_filter_get_type ()); g_type_ensure (gtk_tree_model_flags_get_type ()); g_type_ensure (gtk_tree_model_sort_get_type ()); g_type_ensure (gtk_tree_path_get_type ()); g_type_ensure (gtk_tree_row_reference_get_type ()); g_type_ensure (gtk_tree_selection_get_type ()); g_type_ensure (gtk_tree_sortable_get_type ()); g_type_ensure (gtk_tree_store_get_type ()); g_type_ensure (gtk_tree_view_get_type ()); g_type_ensure (gtk_tree_view_column_get_type ()); g_type_ensure (gtk_tree_view_column_sizing_get_type ()); g_type_ensure (gtk_tree_view_drop_position_get_type ()); g_type_ensure (gtk_tree_view_grid_lines_get_type ()); g_type_ensure (gtk_unit_get_type ()); g_type_ensure (gtk_uri_launcher_get_type ()); g_type_ensure (gtk_video_get_type ()); g_type_ensure (gtk_viewport_get_type ()); g_type_ensure (gtk_volume_button_get_type ()); g_type_ensure (gtk_widget_get_type ()); g_type_ensure (gtk_widget_paintable_get_type ()); g_type_ensure (gtk_window_get_type ()); g_type_ensure (gtk_window_controls_get_type ()); g_type_ensure (gtk_window_gravity_get_type ()); g_type_ensure (gtk_window_group_get_type ()); g_type_ensure (gtk_window_handle_get_type ()); g_type_ensure (gtk_wrap_mode_get_type ()); } static void bge_wdgt_spec_init (BgeWdgtSpec *self) { self->state_names = gtk_string_list_new (NULL); self->values = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, value_data_unref); self->values_stack = g_ptr_array_new_with_free_func ((GDestroyNotify) g_hash_table_unref); self->foreaches = g_ptr_array_new_with_free_func (foreach_data_unref); self->foreach_stack = g_ptr_array_new_with_free_func (foreach_data_unref); self->anon_values = g_ptr_array_new_with_free_func (value_data_unref); self->track_transition_values = g_ptr_array_new_with_free_func (value_data_unref); self->states = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, state_data_unref); self->children = g_ptr_array_new_with_free_func (value_data_unref); self->nonchildren = g_ptr_array_new_with_free_func (value_data_unref); self->init_state = state_data_new (); self->init_state->name = g_strdup ("init"); self->init_state->setters = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, value_data_unref); self->init_state->transitions = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, transition_data_unref); self->init_state->expressions = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, (GDestroyNotify) gtk_expression_unref); self->init_state->snapshot_deps = g_ptr_array_new_with_free_func ( (GDestroyNotify) gtk_expression_unref); self->init_state->values_need_tick = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, NULL); ensure_state_snapshot (self->init_state); g_hash_table_replace (self->states, g_strdup ("init"), state_data_ref (self->init_state)); self->ready = FALSE; } static GType list_model_get_item_type (GListModel *list) { return GTK_TYPE_STRING_OBJECT; } static guint list_model_get_n_items (GListModel *list) { BgeWdgtSpec *self = BGE_WDGT_SPEC (list); return g_list_model_get_n_items (G_LIST_MODEL (self->state_names)); } static gpointer list_model_get_item (GListModel *list, guint position) { BgeWdgtSpec *self = BGE_WDGT_SPEC (list); return g_list_model_get_item (G_LIST_MODEL (self->state_names), position); } static void list_model_iface_init (GListModelInterface *iface) { iface->get_item_type = list_model_get_item_type; iface->get_n_items = list_model_get_n_items; iface->get_item = list_model_get_item; } BgeWdgtSpec * bge_wdgt_spec_new (void) { return g_object_new (BGE_TYPE_WDGT_SPEC, NULL); } BgeWdgtSpec * bge_wdgt_spec_new_for_string (const char *string, GError **error) { g_return_val_if_fail (string != NULL, NULL); return bge_wdgt_parse_string (string, error); } BgeWdgtSpec * bge_wdgt_spec_new_for_resource (const char *resource, GError **error) { g_autoptr (GBytes) bytes = NULL; gsize size = 0; gconstpointer data = NULL; g_return_val_if_fail (resource != NULL, NULL); bytes = g_resources_lookup_data (resource, G_RESOURCE_LOOKUP_FLAGS_NONE, error); if (bytes == NULL) return NULL; data = g_bytes_get_data (bytes, &size); return bge_wdgt_parse_string ((const char *) data, error); } const char * bge_wdgt_spec_get_name (BgeWdgtSpec *self) { g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), NULL); return self->name; } void bge_wdgt_spec_set_name (BgeWdgtSpec *self, const char *name) { g_return_if_fail (BGE_IS_WDGT_SPEC (self)); if (name == self->name || (name != NULL && self->name != NULL && g_strcmp0 (name, self->name) == 0)) return; g_clear_pointer (&self->name, g_free); if (name != NULL) self->name = g_strdup (name); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NAME]); } void bge_wdgt_spec_set_name_take (BgeWdgtSpec *self, char *name) { g_return_if_fail (BGE_IS_WDGT_SPEC (self)); if (name != NULL && self->name != NULL && g_strcmp0 (name, self->name) == 0) { g_free (name); return; } g_clear_pointer (&self->name, g_free); if (name != NULL) self->name = name; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NAME]); } gboolean bge_wdgt_spec_add_constant_source_value (BgeWdgtSpec *self, const char *name, const GValue *constant, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (constant != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = constant->g_type; value->kind = VALUE_CONSTANT; g_value_copy (constant, g_value_init (&value->constant.value, constant->g_type)); g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_component_source_value (BgeWdgtSpec *self, const char *name, GType type, const char *const *components, guint n_components, GError **error) { GType expected_types[ARGBUF_SIZE] = { 0 }; g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (components != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } if (type == GRAPHENE_TYPE_POINT) { if (n_components != 2) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "composed point value needs 2 arguments"); return FALSE; } expected_types[0] = G_TYPE_DOUBLE; expected_types[1] = G_TYPE_DOUBLE; } else if (type == GRAPHENE_TYPE_POINT3D) { if (n_components != 3) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "composed 3d point value needs 3 arguments"); return FALSE; } expected_types[0] = G_TYPE_DOUBLE; expected_types[1] = G_TYPE_DOUBLE; expected_types[2] = G_TYPE_DOUBLE; } else if (type == GRAPHENE_TYPE_SIZE) { if (n_components != 2) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "composed 2d size value needs 2 arguments"); return FALSE; } expected_types[0] = G_TYPE_DOUBLE; expected_types[1] = G_TYPE_DOUBLE; } else if (type == GRAPHENE_TYPE_RECT) { if (n_components != 4) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "composed rectangle value needs 4 arguments"); return FALSE; } expected_types[0] = G_TYPE_DOUBLE; expected_types[1] = G_TYPE_DOUBLE; expected_types[2] = G_TYPE_DOUBLE; expected_types[3] = G_TYPE_DOUBLE; } else if (type == GSK_TYPE_STROKE) { if (n_components != 4) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "composed rectangle value needs 4 arguments"); return FALSE; } expected_types[0] = G_TYPE_DOUBLE; /* line width */ expected_types[1] = GSK_TYPE_LINE_CAP; expected_types[2] = GSK_TYPE_LINE_JOIN; expected_types[3] = G_TYPE_DOUBLE; /* miter limit */ } else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type '%s' is not elligible for a component value", g_type_name (type)); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = type; value->kind = VALUE_COMPONENT; value->component.params = g_ptr_array_new_with_free_func (value_data_unref); for (guint i = 0; i < n_components; i++) { ValueData *value_data = NULL; value_data = g_hash_table_lookup (self->values, components[i]); if (value_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", components[i]); return FALSE; } if (!g_type_is_a (value_data->type, expected_types[i])) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "component %u for type %s " "must be of type %s, got %s", i, g_type_name (type), g_type_name (expected_types[i]), g_type_name (value_data->type)); return FALSE; } g_ptr_array_add (value->component.params, value_data_ref (value_data)); } g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_transform_source_value (BgeWdgtSpec *self, const char *name, const char *next, const char *instruction, const char *const *args, guint n_args, GError **error) { gboolean result = FALSE; ValueData *next_data = NULL; g_autoptr (ValueData) value = NULL; TransformInstr match = { 0 }; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (next != NULL, FALSE); g_return_val_if_fail (instruction != NULL, FALSE); g_return_val_if_fail (n_args == 0 || args != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } next_data = g_hash_table_lookup (self->values, next); if (next_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", next); return FALSE; } if (next_data->type != GSK_TYPE_TRANSFORM) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' must be of type %s to " "build a transform, got %s", next, g_type_name (GSK_TYPE_TRANSFORM), g_type_name (next_data->type)); return FALSE; } result = lookup_transform_instr (instruction, &match); if (!result) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "\"%s\" is not a valid transform builder instruction", instruction); return FALSE; } if (n_args != match.n_args) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "transform builder function %s requires %u " "arguments, got %u", match.name, match.n_args, n_args); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = GSK_TYPE_TRANSFORM; value->kind = VALUE_TRANSFORM; value->transform.func = match.call; value->transform.next = value_data_ref (next_data); value->transform.args = g_ptr_array_new_with_free_func (value_data_unref); for (guint i = 0; i < n_args; i++) { ValueData *value_data = NULL; value_data = g_hash_table_lookup (self->values, args[i]); if (value_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", args[i]); return FALSE; } if (!g_type_is_a (value_data->type, match.args[i])) { if (check_can_coerce_type (match.args[i], value_data->type)) g_ptr_array_add (value->transform.args, wrap_coerce_value (self, value_data, match.args[i])); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "argument %u for snapshot instruction %s " "must be of type %s, got %s", i, match.name, g_type_name (match.args[i]), g_type_name (value_data->type)); return FALSE; } } else g_ptr_array_add (value->transform.args, value_data_ref (value_data)); } g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_path_source_value (BgeWdgtSpec *self, const char *name, const char *const *instructions, const char *const *const *argss, const guint *n_argss, guint n_args, GError **error) { gboolean result = FALSE; g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (instructions != NULL, FALSE); g_return_val_if_fail (argss != NULL, FALSE); g_return_val_if_fail (n_argss != NULL, FALSE); g_return_val_if_fail (n_args > 0, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = GSK_TYPE_PATH; value->kind = VALUE_PATH; value->path.funcs = g_ptr_array_new (); value->path.argss = g_ptr_array_new_with_free_func ( (GDestroyNotify) g_ptr_array_unref); for (guint i = 0; i < n_args; i++) { PathBuilderInstr match = { 0 }; g_autoptr (GPtrArray) args = NULL; result = lookup_path_builder_instr (instructions[i], &match); if (!result) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "\"%s\" is not a valid path builder instruction", instructions[i]); return FALSE; } if (n_argss[i] != match.n_args) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "path builder instructions %s requires %u " "arguments, got %u", match.name, match.n_args, n_argss[i]); return FALSE; } args = g_ptr_array_new_with_free_func (value_data_unref); for (guint j = 0; j < n_argss[i]; j++) { ValueData *value_data = NULL; value_data = g_hash_table_lookup (self->values, argss[i][j]); if (value_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", argss[i][j]); return FALSE; } if (!g_type_is_a (value_data->type, match.args[j])) { if (check_can_coerce_type (match.args[j], value_data->type)) g_ptr_array_add (args, wrap_coerce_value (self, value_data, match.args[j])); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "argument %u for path builder instruction %s " "must be of type %s, got %s", j, match.name, g_type_name (match.args[j]), g_type_name (value_data->type)); return FALSE; } } else g_ptr_array_add (args, value_data_ref (value_data)); } g_ptr_array_add (value->path.funcs, match.call); g_ptr_array_add (value->path.argss, g_steal_pointer (&args)); } g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_instance_source_value (BgeWdgtSpec *self, const char *name, GType type, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } if (!g_type_is_a (type, G_TYPE_OBJECT)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type '%s' is not an object type", g_type_name (type)); return FALSE; } if (!G_TYPE_IS_INSTANTIATABLE (type) || G_TYPE_IS_ABSTRACT (type)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type '%s' is not instantiable", g_type_name (type)); return FALSE; } value = value_data_new (); value->kind = VALUE_OBJECT; value->type = type; value->name = g_strdup (name); g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); g_ptr_array_add (self->nonchildren, value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_child_source_value (BgeWdgtSpec *self, const char *name, GType type, const char *parent, const char *builder_type, const char *const *css_classes, guint n_css_classes, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } if (!g_type_is_a (type, GTK_TYPE_WIDGET)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type '%s' does not derive from GtkWidget", g_type_name (type)); return FALSE; } if (!G_TYPE_IS_INSTANTIATABLE (type) || G_TYPE_IS_ABSTRACT (type)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type '%s' is not instantiable", g_type_name (type)); return FALSE; } value = value_data_new (); value->kind = VALUE_CHILD; value->type = type; value->name = g_strdup (name); value->child.builder_type = builder_type != NULL ? g_strdup (builder_type) : NULL; if (n_css_classes > 0 && css_classes != NULL) { value->child.css_classes = g_ptr_array_new_with_free_func (g_free); g_ptr_array_set_size (value->child.css_classes, n_css_classes); for (guint i = 0; i < n_css_classes; i++) { g_ptr_array_index (value->child.css_classes, i) = g_strdup (css_classes[i]); } } if (parent != NULL) { ValueData *parent_data = NULL; parent_data = g_hash_table_lookup (self->values, parent); if (parent_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", parent); return FALSE; } if (!g_type_is_a (parent_data->type, GTK_TYPE_BUILDABLE)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "parent widget '%s' is not of type %s", g_type_name (GTK_TYPE_BUILDABLE), parent); return FALSE; } value->child.parent_widget = value_data_ref (parent_data); } g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); g_ptr_array_add (self->children, value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_cclosure_source_value (BgeWdgtSpec *self, const char *name, GType type, GClosureMarshal marshal, GCallback func, const char *const *args, const GType *arg_types, guint n_args, gpointer user_data, GDestroyNotify destroy_user_data, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (func != NULL, FALSE); g_return_val_if_fail (args != NULL, FALSE); g_return_val_if_fail (n_args > 0, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); if (user_data != NULL && destroy_user_data != NULL) destroy_user_data (user_data); return FALSE; } if (!G_TYPE_IS_VALUE (type)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "invalid type '%s'", g_type_name (type)); if (user_data != NULL && destroy_user_data != NULL) destroy_user_data (user_data); return FALSE; } value = value_data_new (); value->kind = VALUE_CLOSURE; value->name = g_strdup (name); value->type = type; value->closure.marshal = marshal; value->closure.func = func; value->closure.args = g_ptr_array_new_with_free_func (value_data_unref); value->closure.user_data = user_data; value->closure.destroy_user_data = destroy_user_data; for (guint i = 0; i < n_args; i++) { ValueData *value_data = NULL; value_data = g_hash_table_lookup (self->values, args[i]); if (value_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", args[i]); return FALSE; } if (arg_types != NULL && !g_type_is_a (value_data->type, arg_types[i])) { if (check_can_coerce_type (arg_types[i], value_data->type)) g_ptr_array_add (value->closure.args, wrap_coerce_value (self, value_data, arg_types[i])); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "component %u for type %s " "must be of type %s, got %s", i, g_type_name (type), g_type_name (arg_types[i]), g_type_name (value_data->type)); return FALSE; } } else g_ptr_array_add (value->closure.args, value_data_ref (value_data)); } g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_measure_for_size_source_value (BgeWdgtSpec *self, const char *name, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->kind = VALUE_MEASURE_FOR_SIZE; value->type = G_TYPE_INT; g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_widget_width_source_value (BgeWdgtSpec *self, const char *name, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->kind = VALUE_WIDGET_WIDTH; value->type = G_TYPE_DOUBLE; g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_widget_height_source_value (BgeWdgtSpec *self, const char *name, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->kind = VALUE_WIDGET_HEIGHT; value->type = G_TYPE_DOUBLE; g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_tick_time_source_value (BgeWdgtSpec *self, const char *name, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->kind = VALUE_TICK_TIME; value->type = G_TYPE_DOUBLE; g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_track_transition_source_value (BgeWdgtSpec *self, const char *name, const char *src, const char *damping_ratio, const char *mass, const char *stiffness, GError **error) { ValueData *src_value = NULL; g_autoptr (ValueData) coerced_src_value = NULL; ValueData *damping_ratio_value = NULL; g_autoptr (ValueData) coerced_damping_ratio_value = NULL; ValueData *mass_value = NULL; g_autoptr (ValueData) coerced_mass_value = NULL; ValueData *stiffness_value = NULL; g_autoptr (ValueData) coerced_stiffness_value = NULL; g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (src != NULL, FALSE); g_return_val_if_fail (damping_ratio != NULL, FALSE); g_return_val_if_fail (mass != NULL, FALSE); g_return_val_if_fail (stiffness != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } /* TODO clean up type checking process */ src_value = g_hash_table_lookup (self->values, src); if (src_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", src); return FALSE; } if (src_value->type != G_TYPE_DOUBLE) { if (check_can_coerce_type (G_TYPE_DOUBLE, src_value->type)) coerced_src_value = wrap_coerce_value (self, src_value, src_value->type); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "source type %s cannot be transitioned", g_type_name (src_value->type)); return FALSE; } } damping_ratio_value = g_hash_table_lookup (self->values, damping_ratio); if (damping_ratio_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", damping_ratio); return FALSE; } if (damping_ratio_value->type != G_TYPE_DOUBLE) { if (check_can_coerce_type (G_TYPE_DOUBLE, damping_ratio_value->type)) coerced_damping_ratio_value = wrap_coerce_value (self, damping_ratio_value, damping_ratio_value->type); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "damping ratio must be a double, got type %s", g_type_name (damping_ratio_value->type)); return FALSE; } } mass_value = g_hash_table_lookup (self->values, mass); if (mass_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", mass); return FALSE; } if (mass_value->type != G_TYPE_DOUBLE) { if (check_can_coerce_type (G_TYPE_DOUBLE, mass_value->type)) coerced_mass_value = wrap_coerce_value (self, mass_value, mass_value->type); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "mass must be a double, got type %s", g_type_name (mass_value->type)); return FALSE; } } stiffness_value = g_hash_table_lookup (self->values, stiffness); if (stiffness_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", stiffness); return FALSE; } if (stiffness_value->type != G_TYPE_DOUBLE) { if (check_can_coerce_type (G_TYPE_DOUBLE, stiffness_value->type)) coerced_stiffness_value = wrap_coerce_value (self, stiffness_value, stiffness_value->type); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "stiffness must be a double, got type %s", g_type_name (stiffness_value->type)); return FALSE; } } value = value_data_new (); value->name = g_strdup (name); value->kind = VALUE_TRACK_TRANSITION; value->type = G_TYPE_DOUBLE; value->track_transition.src = coerced_src_value != NULL ? value_data_ref (coerced_src_value) : value_data_ref (src_value); value->track_transition.spring.damping_ratio = coerced_damping_ratio_value != NULL ? value_data_ref (coerced_damping_ratio_value) : value_data_ref (damping_ratio_value); value->track_transition.spring.mass = coerced_mass_value != NULL ? value_data_ref (coerced_mass_value) : value_data_ref (mass_value); value->track_transition.spring.stiffness = coerced_stiffness_value != NULL ? value_data_ref (coerced_stiffness_value) : value_data_ref (stiffness_value); g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); g_ptr_array_add (self->track_transition_values, value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_variable_value (BgeWdgtSpec *self, GType type, const char *name, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (!G_TYPE_IS_VALUE (type)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type '%s' cannot be stored in value '%s'", g_type_name (type), name); return FALSE; } if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = type; value->kind = VALUE_VARIABLE; g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_reference_object_value (BgeWdgtSpec *self, GType type, const char *name, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (self->reference != NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "an object reference value has already been defined"); return FALSE; } if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } if (!g_type_is_a (type, G_TYPE_OBJECT)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type '%s' cannot be stored in reference object value '%s'", g_type_name (type), name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = type; value->kind = VALUE_REFERENCE_OBJECT; g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); self->reference = value_data_ref (value); return TRUE; } gboolean bge_wdgt_spec_add_property_value (BgeWdgtSpec *self, const char *name, const char *object, const char *property, GType *type_out, GError **error) { ValueData *object_value = NULL; ValueData *existing_value = NULL; g_autoptr (GTypeClass) type_class = NULL; GParamSpec *pspec = NULL; g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (object != NULL, FALSE); g_return_val_if_fail (property != NULL, FALSE); object_value = g_hash_table_lookup (self->values, object); if (object_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", object); return FALSE; } if (!g_type_is_a (object_value->type, G_TYPE_OBJECT)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is not an object", object); return FALSE; } existing_value = g_hash_table_lookup (self->values, name); if (existing_value != NULL) { if (existing_value->kind == VALUE_PROPERTY && existing_value->property.object == object_value && g_strcmp0 (existing_value->property.prop_name, property) == 0) return TRUE; else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } } type_class = g_type_class_ref (object_value->type); pspec = g_object_class_find_property (G_OBJECT_CLASS (type_class), property); if (pspec == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "property '%s' doesn't exist on type %s", property, g_type_name (object_value->type)); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = pspec->value_type; value->kind = VALUE_PROPERTY; value->property.object = value_data_ref (object_value); value->property.prop_name = g_strdup (property); value->property.pspec_flags = pspec->flags; g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); if (type_out != NULL) *type_out = pspec->value_type; return TRUE; } gboolean bge_wdgt_spec_add_allocation_width_value (BgeWdgtSpec *self, const char *name, const char *child, GError **error) { ValueData *child_value = NULL; g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (child != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } child_value = g_hash_table_lookup (self->values, child); if (child_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", child); return FALSE; } if (!g_type_is_a (child_value->type, GTK_TYPE_WIDGET)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is not a widget", child); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = G_TYPE_INT; value->kind = VALUE_ALLOCATION_WIDTH; value->allocation.widget = value_data_ref (child_value); g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_allocation_height_value (BgeWdgtSpec *self, const char *name, const char *child, GError **error) { ValueData *child_value = NULL; g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (child != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } child_value = g_hash_table_lookup (self->values, child); if (child_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", child); return FALSE; } if (!g_type_is_a (child_value->type, GTK_TYPE_WIDGET)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is not a widget", child); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = G_TYPE_INT; value->kind = VALUE_ALLOCATION_HEIGHT; value->allocation.widget = value_data_ref (child_value); g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_allocation_transform_value (BgeWdgtSpec *self, const char *name, const char *child, GError **error) { ValueData *child_value = NULL; g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (child != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } child_value = g_hash_table_lookup (self->values, child); if (child_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", child); return FALSE; } if (!g_type_is_a (child_value->type, GTK_TYPE_WIDGET)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is not a widget", child); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = GSK_TYPE_TRANSFORM; value->kind = VALUE_ALLOCATION_TRANSFORM; value->allocation.widget = value_data_ref (child_value); g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_measure_value (BgeWdgtSpec *self, const char *name, BgeWdgtMeasureKind kind, GError **error) { g_autoptr (ValueData) value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->values, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", name); return FALSE; } value = value_data_new (); value->name = g_strdup (name); value->type = G_TYPE_INT; switch (kind) { case BGE_WDGT_MEASURE_MINIMUM_WIDTH: value->kind = VALUE_MEASURE_MINIMUM_WIDTH; break; case BGE_WDGT_MEASURE_NATURAL_WIDTH: value->kind = VALUE_MEASURE_NATURAL_WIDTH; break; case BGE_WDGT_MEASURE_MINIMUM_HEIGHT: value->kind = VALUE_MEASURE_MINIMUM_HEIGHT; break; case BGE_WDGT_MEASURE_NATURAL_HEIGHT: value->kind = VALUE_MEASURE_NATURAL_HEIGHT; break; default: { g_critical ("Passed an invalid measure kind"); return FALSE; } } g_hash_table_replace (self->values, g_strdup (name), value_data_ref (value)); return TRUE; } gboolean bge_wdgt_spec_add_state (BgeWdgtSpec *self, const char *name, gboolean default_state, GError **error) { g_autoptr (StateData) state = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (name != NULL, FALSE); if (g_hash_table_contains (self->states, name)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "state '%s' already exists", name); return FALSE; } if (default_state && self->default_state != NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "default state already specified"); return FALSE; } state = state_data_new (); state->name = g_strdup (name); state->setters = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, value_data_unref); state->transitions = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, transition_data_unref); state->expressions = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, (GDestroyNotify) gtk_expression_unref); state->snapshot_deps = g_ptr_array_new_with_free_func ( (GDestroyNotify) gtk_expression_unref); state->values_need_tick = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, NULL); g_hash_table_replace (self->states, g_strdup (name), state_data_ref (state)); if (default_state) self->default_state = state_data_ref (state); gtk_string_list_append (self->state_names, name); return TRUE; } gboolean bge_wdgt_spec_set_value (BgeWdgtSpec *self, const char *state, const char *dest_value, const char *src_value, GError **error) { StateData *state_data = NULL; ValueData *dest_data = NULL; ValueData *src_data = NULL; g_autoptr (ValueData) coerced_src_data = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (dest_value != NULL, FALSE); g_return_val_if_fail (src_value != NULL, FALSE); if (state != NULL) state_data = g_hash_table_lookup (self->states, state); else state_data = self->init_state; dest_data = g_hash_table_lookup (self->values, dest_value); src_data = g_hash_table_lookup (self->values, src_value); if (state_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "state '%s' is undefined", state); return FALSE; } if (dest_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", dest_value); return FALSE; } if (src_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", src_value); return FALSE; } if (dest_data == src_data) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "cannot assign '%s' to itself", src_value); return FALSE; } if (!g_type_is_a (src_data->type, dest_data->type)) { if (check_can_coerce_type (dest_data->type, src_data->type)) coerced_src_data = wrap_coerce_value (self, src_data, dest_data->type); else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "source type %s cannot be assigned to destination type %s", g_type_name (src_data->type), g_type_name (dest_data->type)); return FALSE; } } if (dest_data->kind == VALUE_CONSTANT) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "cannot assign to a constant source value"); return FALSE; } if (dest_data->kind == VALUE_PROPERTY && !(dest_data->property.pspec_flags & G_PARAM_WRITABLE)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "property %s on type %s is not writable", dest_data->property.prop_name, g_type_name (dest_data->type)); return FALSE; } if (src_data->kind == VALUE_PROPERTY && !(src_data->property.pspec_flags & G_PARAM_READABLE)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "property %s on type %s is not writable", src_data->property.prop_name, g_type_name (src_data->type)); return FALSE; } g_hash_table_replace ( state_data->setters, value_data_ref (dest_data), coerced_src_data != NULL ? value_data_ref (coerced_src_data) : value_data_ref (src_data)); return TRUE; } gboolean bge_wdgt_spec_transition_value (BgeWdgtSpec *self, const char *state, const char *value, const char *seconds, const char *easing, GError **error) { StateData *state_data = NULL; ValueData *value_data = NULL; ValueData *seconds_data = NULL; ValueData *easing_data = NULL; g_autoptr (TransitionData) transition = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); /* state is required for transitions */ g_return_val_if_fail (state != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); g_return_val_if_fail (seconds != NULL, FALSE); g_return_val_if_fail (easing != NULL, FALSE); state_data = g_hash_table_lookup (self->states, state); if (state_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "state '%s' is undefined", state); return FALSE; } value_data = g_hash_table_lookup (self->values, value); seconds_data = g_hash_table_lookup (self->values, seconds); easing_data = g_hash_table_lookup (self->values, easing); if (value_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", value); return FALSE; } if (value_data->type != G_TYPE_DOUBLE) /* TODO: support more types */ { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type %s cannot be transitioned", g_type_name (value_data->type)); return FALSE; } if (seconds_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", value); return FALSE; } if (seconds_data->type != G_TYPE_DOUBLE) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "transition ease seconds value must be a double, got %s", g_type_name (seconds_data->type)); return FALSE; } if (easing_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", value); return FALSE; } if (easing_data->type != BGE_TYPE_EASING) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "transition ease easing value must be of type %s, got %s", g_type_name (BGE_TYPE_EASING), g_type_name (easing_data->type)); return FALSE; } transition = transition_data_new (); transition->kind = TRANSITION_EASE; transition->ease.seconds = value_data_ref (seconds_data); transition->ease.easing = value_data_ref (easing_data); g_hash_table_replace ( state_data->transitions, value_data_ref (value_data), transition_data_ref (transition)); /* We want the init state to track the transition as well in case of value overlays */ g_hash_table_replace ( self->init_state->transitions, value_data_ref (value_data), transition_data_ref (transition)); return TRUE; } gboolean bge_wdgt_spec_transition_value_spring (BgeWdgtSpec *self, const char *state, const char *value, const char *damping_ratio, const char *mass, const char *stiffness, GError **error) { StateData *state_data = NULL; ValueData *value_data = NULL; ValueData *damping_ratio_data = NULL; ValueData *mass_data = NULL; ValueData *stiffness_data = NULL; g_autoptr (TransitionData) transition = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); /* state is required for transitions */ g_return_val_if_fail (state != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); g_return_val_if_fail (damping_ratio != NULL, FALSE); g_return_val_if_fail (mass != NULL, FALSE); g_return_val_if_fail (stiffness != NULL, FALSE); state_data = g_hash_table_lookup (self->states, state); value_data = g_hash_table_lookup (self->values, value); damping_ratio_data = g_hash_table_lookup (self->values, damping_ratio); mass_data = g_hash_table_lookup (self->values, mass); stiffness_data = g_hash_table_lookup (self->values, stiffness); if (state_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "state '%s' is undefined", state); return FALSE; } if (value_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", value); return FALSE; } if (damping_ratio_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", damping_ratio); return FALSE; } if (mass_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", mass); return FALSE; } if (stiffness_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", stiffness); return FALSE; } if (value_data->type != G_TYPE_DOUBLE) /* TODO: support more types */ { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type %s cannot be transitioned", g_type_name (value_data->type)); return FALSE; } if (damping_ratio_data->type != G_TYPE_DOUBLE) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "transition damping ratio must of type %s, got %s", g_type_name (G_TYPE_DOUBLE), g_type_name (damping_ratio_data->type)); return FALSE; } if (mass_data->type != G_TYPE_DOUBLE) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "transition mass must of type %s, got %s", g_type_name (G_TYPE_DOUBLE), g_type_name (mass_data->type)); return FALSE; } if (stiffness_data->type != G_TYPE_DOUBLE) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "transition stiffness must of type %s, got %s", g_type_name (G_TYPE_DOUBLE), g_type_name (stiffness_data->type)); return FALSE; } transition = transition_data_new (); transition->kind = TRANSITION_SPRING; transition->spring.damping_ratio = value_data_ref (damping_ratio_data); transition->spring.mass = value_data_ref (mass_data); transition->spring.stiffness = value_data_ref (stiffness_data); g_hash_table_replace ( state_data->transitions, value_data_ref (value_data), transition_data_ref (transition)); /* We want the init state to track the transition as well in case of value overlays */ g_hash_table_replace ( self->init_state->transitions, value_data_ref (value_data), transition_data_ref (transition)); return TRUE; } gboolean bge_wdgt_spec_append_snapshot_instr (BgeWdgtSpec *self, const char *state, BgeWdgtSnapshotInstrKind kind, const char *instr, const char *const *args, guint n_args, guint *n_pops_out, GError **error) { gboolean result = FALSE; StateData *state_data = NULL; ForeachData *foreach_context = NULL; SnapshotInstr match = { 0 }; guint match_rest_start = 0; g_autoptr (SnapshotCallData) call = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (instr != NULL, FALSE); g_return_val_if_fail (n_args == 0 || args != NULL, FALSE); if (state != NULL) { state_data = g_hash_table_lookup (self->states, state); if (state_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "state '%s' is undefined", state); return FALSE; } } else state_data = self->init_state; if (self->foreach_stack->len > 0) foreach_context = g_ptr_array_index ( self->foreach_stack, self->foreach_stack->len - 1); switch (kind) { case BGE_WDGT_SNAPSHOT_INSTR_PUSH: result = lookup_snapshot_push_instr (instr, &match); if (!result) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "\"%s\" is not a valid snapshot push instruction", instr); return FALSE; } if (n_pops_out != NULL) *n_pops_out = match.n_pops; break; case BGE_WDGT_SNAPSHOT_INSTR_TRANSFORM: result = lookup_snapshot_transform_instr (instr, &match); if (!result) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "\"%s\" is not a valid snapshot transform instruction", instr); return FALSE; } break; case BGE_WDGT_SNAPSHOT_INSTR_APPEND: result = lookup_snapshot_append_instr (instr, &match); if (!result) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "\"%s\" is not a valid snapshot append instruction", instr); return FALSE; } break; case BGE_WDGT_SNAPSHOT_INSTR_POP: case BGE_WDGT_SNAPSHOT_INSTR_SAVE: case BGE_WDGT_SNAPSHOT_INSTR_RESTORE: { call = snapshot_call_data_new (); call->kind = kind; if (foreach_context != NULL) call->foreach_context = foreach_data_ref (foreach_context); ensure_state_snapshot (state_data); g_ptr_array_add (state_data->snapshot->calls, snapshot_call_data_ref (call)); } return TRUE; case BGE_WDGT_SNAPSHOT_INSTR_SNAPSHOT_CHILD: { ValueData *child = NULL; if (n_args != 1) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "child snapshot instruction requires " "a single argument"); return FALSE; } child = g_hash_table_lookup (self->values, args[0]); if (child == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", args[0]); return FALSE; } if (!g_type_is_a (child->type, GTK_TYPE_WIDGET)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is not a child", args[0]); return FALSE; } call = snapshot_call_data_new (); call->kind = kind; call->child = value_data_ref (child); if (foreach_context != NULL) call->foreach_context = foreach_data_ref (foreach_context); ensure_state_snapshot (state_data); g_ptr_array_add (state_data->snapshot->calls, snapshot_call_data_ref (call)); } return TRUE; default: g_critical ("invalid snapshot instruction kind specified"); return FALSE; } match_rest_start = match.n_args - match.n_rest; if (n_args != match.n_args) { if (match.n_rest > 0 && n_args > match.n_args) { if ((n_args - match.n_args) % match.n_rest != 0) g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "snapshot instruction %s cannot handle %u " "trailing arguments", match.name, n_args - match.n_args); } else { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "snapshot instruction %s requires %u " "arguments, got %u", match.name, match.n_args, n_args); return FALSE; } } call = snapshot_call_data_new (); call->kind = kind; call->func = match.call; call->args = g_ptr_array_new_with_free_func (value_data_unref); call->rest = g_ptr_array_new_with_free_func (value_data_unref); if (foreach_context != NULL) call->foreach_context = foreach_data_ref (foreach_context); for (guint i = 0; i < n_args; i++) { ValueData *value_data = NULL; gboolean in_rest = FALSE; GType expected_type = 0; value_data = g_hash_table_lookup (self->values, args[i]); if (value_data == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", args[i]); return FALSE; } in_rest = i >= match_rest_start; if (in_rest) expected_type = match.args[match_rest_start + ((i - match_rest_start) % match.n_rest)]; else expected_type = match.args[i]; if (!g_type_is_a (value_data->type, expected_type)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "argument %u for snapshot instruction %s " "must be of type %s, got %s", i, match.name, g_type_name (expected_type), g_type_name (value_data->type)); return FALSE; } if (in_rest) g_ptr_array_add (call->rest, value_data_ref (value_data)); else g_ptr_array_add (call->args, value_data_ref (value_data)); } ensure_state_snapshot (state_data); g_ptr_array_add (state_data->snapshot->calls, snapshot_call_data_ref (call)); return TRUE; } gboolean bge_wdgt_spec_push_foreach (BgeWdgtSpec *self, const char *model, const char *value_iterator, const char *index_iterator, GType iterator_type, GError **error) { ValueData *model_value = NULL; g_autoptr (GHashTable) values_copy = NULL; GHashTableIter iter = { 0 }; g_autoptr (ForeachData) foreach_context = NULL; g_autoptr (ValueData) value_iterator_value = NULL; g_autoptr (ValueData) index_iterator_value = NULL; g_return_val_if_fail (BGE_IS_WDGT_SPEC (self), FALSE); g_return_val_if_fail (!self->ready, FALSE); g_return_val_if_fail (model != NULL, FALSE); g_return_val_if_fail (value_iterator != NULL, FALSE); g_return_val_if_fail (index_iterator != NULL, FALSE); model_value = g_hash_table_lookup (self->values, model); if (model_value == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' is undefined", model); return FALSE; } if (!g_type_is_a (model_value->type, G_TYPE_LIST_MODEL)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' does not implement GListModel", model); return FALSE; } if (g_hash_table_contains (self->values, value_iterator)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", value_iterator); return FALSE; } if (g_hash_table_contains (self->values, index_iterator)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "value '%s' already exists", index_iterator); return FALSE; } if (!g_type_is_a (iterator_type, G_TYPE_OBJECT)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "iterator type does not derive from GObject"); return FALSE; } values_copy = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, value_data_unref); g_hash_table_iter_init (&iter, self->values); for (;;) { char *name = NULL; ValueData *value = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &name, (gpointer *) &value)) break; g_hash_table_replace (values_copy, g_strdup (name), value_data_ref (value)); } g_ptr_array_add (self->values_stack, g_steal_pointer (&self->values)); self->values = g_hash_table_ref (values_copy); foreach_context = foreach_data_new (); foreach_context->model = value_data_ref (model_value); foreach_context->values = g_hash_table_ref (values_copy); if (self->foreach_stack->len > 0) { ForeachData *parent = NULL; parent = g_ptr_array_index ( self->foreach_stack, self->foreach_stack->len - 1); foreach_context->parent = foreach_data_ref (parent); } g_ptr_array_add (self->foreach_stack, foreach_data_ref (foreach_context)); g_ptr_array_add (self->foreaches, foreach_data_ref (foreach_context)); value_iterator_value = value_data_new (); value_iterator_value->kind = VALUE_ITERATOR; value_iterator_value->name = g_strdup (value_iterator); value_iterator_value->type = iterator_type; value_iterator_value->iterator.context = foreach_data_ref (foreach_context); g_hash_table_replace (values_copy, g_strdup (value_iterator), value_data_ref (value_iterator_value)); index_iterator_value = value_data_new (); index_iterator_value->kind = VALUE_ITERATOR; index_iterator_value->name = g_strdup (index_iterator); index_iterator_value->type = G_TYPE_UINT; index_iterator_value->iterator.context = foreach_data_ref (foreach_context); g_hash_table_replace (values_copy, g_strdup (index_iterator), value_data_ref (index_iterator_value)); return TRUE; } gboolean bge_wdgt_spec_pop_foreach (BgeWdgtSpec *self) { GHashTable *restore_values = NULL; g_return_val_if_fail (self->foreach_stack->len > 0, FALSE); g_assert (self->values_stack->len > 0); g_clear_pointer (&self->values, g_hash_table_unref); restore_values = g_ptr_array_index (self->values_stack, self->values_stack->len - 1); self->values = g_hash_table_ref (restore_values); g_ptr_array_set_size (self->values_stack, self->values_stack->len - 1); g_ptr_array_set_size (self->foreach_stack, self->foreach_stack->len - 1); return TRUE; } static gboolean check_can_coerce_type (GType dest, GType src) { const struct { GType dest; GType src; } valid_pairings[] = { { G_TYPE_INT, G_TYPE_UINT }, { G_TYPE_INT, G_TYPE_FLOAT }, { G_TYPE_INT, G_TYPE_DOUBLE }, { G_TYPE_UINT, G_TYPE_INT }, { G_TYPE_UINT, G_TYPE_FLOAT }, { G_TYPE_UINT, G_TYPE_DOUBLE }, { G_TYPE_INT64, G_TYPE_INT }, { G_TYPE_INT64, G_TYPE_UINT }, { G_TYPE_INT64, G_TYPE_FLOAT }, { G_TYPE_INT64, G_TYPE_DOUBLE }, { G_TYPE_UINT64, G_TYPE_INT }, { G_TYPE_UINT64, G_TYPE_UINT }, { G_TYPE_UINT64, G_TYPE_INT64 }, { G_TYPE_UINT64, G_TYPE_FLOAT }, { G_TYPE_UINT64, G_TYPE_DOUBLE }, { G_TYPE_FLOAT, G_TYPE_INT }, { G_TYPE_FLOAT, G_TYPE_UINT }, { G_TYPE_FLOAT, G_TYPE_DOUBLE }, { G_TYPE_DOUBLE, G_TYPE_INT }, { G_TYPE_DOUBLE, G_TYPE_UINT }, { G_TYPE_DOUBLE, G_TYPE_FLOAT }, { G_TYPE_STRING, G_TYPE_INT }, { G_TYPE_STRING, G_TYPE_UINT }, { G_TYPE_STRING, G_TYPE_INT64 }, { G_TYPE_STRING, G_TYPE_UINT64 }, { G_TYPE_STRING, G_TYPE_FLOAT }, { G_TYPE_STRING, G_TYPE_DOUBLE }, }; for (guint i = 0; i < G_N_ELEMENTS (valid_pairings); i++) { if (dest == valid_pairings[i].dest && src == valid_pairings[i].src) return TRUE; } return FALSE; } static void coerce_value (const GValue *in, GType dest_type, GValue *out) { /* Not a switch for style, though not the case here GType macros can sometimes be non-compile-time constants */ if (dest_type == G_TYPE_INT) { int val = 0; if (in->g_type == G_TYPE_UINT) val = g_value_get_uint (in); else if (in->g_type == G_TYPE_FLOAT) val = round (g_value_get_float (in)); else if (in->g_type == G_TYPE_DOUBLE) val = round (g_value_get_double (in)); g_value_set_int (out, val); } else if (dest_type == G_TYPE_UINT) { guint val = 0; if (in->g_type == G_TYPE_INT) val = g_value_get_int (in); else if (in->g_type == G_TYPE_FLOAT) val = round (g_value_get_float (in)); else if (in->g_type == G_TYPE_DOUBLE) val = round (g_value_get_double (in)); g_value_set_uint (out, val); } else if (dest_type == G_TYPE_INT64) { gint64 val = 0; if (in->g_type == G_TYPE_INT) val = g_value_get_int (in); else if (in->g_type == G_TYPE_UINT) val = g_value_get_uint (in); else if (in->g_type == G_TYPE_FLOAT) val = round (g_value_get_float (in)); else if (in->g_type == G_TYPE_DOUBLE) val = round (g_value_get_double (in)); g_value_set_int64 (out, val); } else if (dest_type == G_TYPE_UINT64) { guint64 val = 0; if (in->g_type == G_TYPE_INT) val = g_value_get_int (in); else if (in->g_type == G_TYPE_UINT) val = g_value_get_uint (in); else if (in->g_type == G_TYPE_INT64) val = g_value_get_int64 (in); else if (in->g_type == G_TYPE_UINT64) val = round (g_value_get_float (in)); else if (in->g_type == G_TYPE_DOUBLE) val = round (g_value_get_double (in)); g_value_set_uint64 (out, val); } else if (dest_type == G_TYPE_FLOAT) { float val = 0; if (in->g_type == G_TYPE_INT) val = g_value_get_int (in); else if (in->g_type == G_TYPE_UINT) val = g_value_get_uint (in); else if (in->g_type == G_TYPE_DOUBLE) val = round (g_value_get_double (in)); g_value_set_float (out, val); } else if (dest_type == G_TYPE_DOUBLE) { double val = 0; if (in->g_type == G_TYPE_INT) val = g_value_get_int (in); else if (in->g_type == G_TYPE_UINT) val = g_value_get_uint (in); else if (in->g_type == G_TYPE_FLOAT) val = round (g_value_get_float (in)); g_value_set_double (out, val); } else if (dest_type == G_TYPE_STRING) { g_autofree char *val = NULL; if (in->g_type == G_TYPE_INT) val = g_strdup_printf ("%d", g_value_get_int (in)); else if (in->g_type == G_TYPE_UINT) val = g_strdup_printf ("%u", g_value_get_uint (in)); else if (in->g_type == G_TYPE_INT64) val = g_strdup_printf ("%zd", g_value_get_int64 (in)); else if (in->g_type == G_TYPE_UINT64) val = g_strdup_printf ("%zu", g_value_get_uint64 (in)); else if (in->g_type == G_TYPE_FLOAT) val = g_strdup_printf ("%f", g_value_get_float (in)); else if (in->g_type == G_TYPE_DOUBLE) val = g_strdup_printf ("%f", g_value_get_double (in)); g_value_take_string (out, g_steal_pointer (&val)); } } static ValueData * wrap_coerce_value (BgeWdgtSpec *self, ValueData *value, GType dest_type) { g_autoptr (ValueData) coerced = NULL; g_assert (!g_type_is_a (value->type, dest_type)); coerced = value_data_new (); coerced->type = dest_type; coerced->kind = VALUE_COERCION; coerced->coercion.value = value_data_ref (value); g_ptr_array_add (self->anon_values, value_data_ref (coerced)); return g_steal_pointer (&coerced); } static void ensure_state_snapshot (StateData *state) { if (state->snapshot != NULL) return; state->snapshot = snapshot_data_new (); state->snapshot->calls = g_ptr_array_new_with_free_func ( snapshot_call_data_unref); } /* ------------------------------ */ /* Widget Renderer Implementation */ /* ------------------------------ */ #define BGE_TYPE_WDGT_NOTIFIER (bge_wdgt_notifier_get_type ()) G_DECLARE_FINAL_TYPE (BgeWdgtNotifier, bge_wdgt_notifier, BGE, WDGT_NOTIFIER, GObject) struct _BgeWdgtNotifier { GObject parent_instance; double value; }; G_DEFINE_FINAL_TYPE (BgeWdgtNotifier, bge_wdgt_notifier, G_TYPE_OBJECT); enum { NOTIFIER_PROP_0, NOTIFIER_PROP_VALUE, LAST_NOTIFIER_PROP }; static GParamSpec *notifier_props[LAST_NOTIFIER_PROP] = { 0 }; static void bge_wdgt_notifier_dispose (GObject *object) { BgeWdgtNotifier *self = BGE_WDGT_NOTIFIER (object); (void) self; G_OBJECT_CLASS (bge_wdgt_notifier_parent_class)->dispose (object); } static void bge_wdgt_notifier_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BgeWdgtNotifier *self = BGE_WDGT_NOTIFIER (object); switch (prop_id) { case NOTIFIER_PROP_VALUE: g_value_set_double (value, self->value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_wdgt_notifier_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BgeWdgtNotifier *self = BGE_WDGT_NOTIFIER (object); switch (prop_id) { case NOTIFIER_PROP_VALUE: self->value = g_value_get_double (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_wdgt_notifier_class_init (BgeWdgtNotifierClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bge_wdgt_notifier_set_property; object_class->get_property = bge_wdgt_notifier_get_property; object_class->dispose = bge_wdgt_notifier_dispose; notifier_props[NOTIFIER_PROP_VALUE] = g_param_spec_double ( "value", NULL, NULL, G_MININT, G_MAXINT, 0.0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, notifier_props); } static void bge_wdgt_notifier_init (BgeWdgtNotifier *self) { } /* --- */ BGE_DEFINE_DATA ( foreach_instance, ForeachInstance, { guint current_idx; BgeWdgtNotifier *notifier; }, BGE_RELEASE_DATA (notifier, g_object_unref)) BGE_DEFINE_DATA ( state_instance, StateInstance, { GHashTable *transitions; }, BGE_RELEASE_DATA (transitions, g_hash_table_unref)); struct _BgeWdgtRenderer { GtkWidget parent_instance; BgeWdgtSpec *spec; char *state; GObject *reference; GtkWidget *child; StateInstanceData *init_instance; GPtrArray *init_watches; StateData *active_state; StateInstanceData *active_instance; SnapshotData *active_snapshot; StateData *last_state; StateInstanceData *last_instance; GTimer *since_last_state; guint tick; gboolean had_tick_since_state_switch; GHashTable *objects; GPtrArray *nonchildren; GPtrArray *children; GHashTable *allocations; GHashTable *foreach_instances; GHashTable *state_instances; GHashTable *transition_instances; GHashTable *transition_closure_instances; GHashTable *track_transition_closure_instances; GPtrArray *track_transitions; GPtrArray *bindings; GPtrArray *watches; BgeWdgtNotifier *reference_notifier; int measure_minimum_width; int measure_natural_width; int measure_minimum_height; int measure_natural_height; int current_measure_for_size; BgeWdgtNotifier *measure_for_size_notifier; int widget_width; int widget_height; BgeWdgtNotifier *widget_width_notifier; BgeWdgtNotifier *widget_height_notifier; GTimer *tick_time; BgeWdgtNotifier *tick_time_notifier; }; G_DEFINE_FINAL_TYPE (BgeWdgtRenderer, bge_wdgt_renderer, GTK_TYPE_WIDGET); enum { RENDERER_PROP_0, RENDERER_PROP_SPEC, RENDERER_PROP_RESOURCE, RENDERER_PROP_STATE, RENDERER_PROP_REFERENCE, RENDERER_PROP_CHILD, LAST_RENDERER_PROP }; static GParamSpec *renderer_props[LAST_RENDERER_PROP] = { 0 }; BGE_DEFINE_DATA ( watch_setter, WatchSetter, { BgeWdgtRenderer *self; StateData *state; StateInstanceData *instance; ValueData *dest; ValueData *src; }, BGE_RELEASE_DATA (state, state_data_unref); BGE_RELEASE_DATA (instance, state_instance_data_unref); BGE_RELEASE_DATA (dest, value_data_unref); BGE_RELEASE_DATA (src, value_data_unref)) BGE_DEFINE_DATA ( allocation, Allocation, { ValueData *width; ValueData *height; ValueData *transform; }, BGE_RELEASE_DATA (width, value_data_unref); BGE_RELEASE_DATA (height, value_data_unref); BGE_RELEASE_DATA (transform, value_data_unref)) typedef struct { double velocity; double est_duration; double cache_damping_ratio; double cache_mass; double cache_stiffness; } SpringCache; BGE_DEFINE_DATA ( transition_instance, TransitionInstance, { double value; double elapsed; BgeWdgtNotifier *notifier; struct { BgeEasing easing; double seconds; } ease; SpringCache spring; }, BGE_RELEASE_DATA (notifier, g_object_unref)) BGE_DEFINE_DATA ( transition_closure, TransitionClosure, { StateData *state; StateInstanceData *instance; ValueData *value; }, BGE_RELEASE_DATA (state, state_data_unref); BGE_RELEASE_DATA (instance, state_instance_data_unref); BGE_RELEASE_DATA (value, value_data_unref)); BGE_DEFINE_DATA ( track_transition_closure, TrackTransitionClosure, { ValueData *value; GTimer *timer; BgeWdgtNotifier *notifier; double elapsed; double current; double target; double last; SpringCache spring; }, BGE_RELEASE_DATA (value, value_data_unref); BGE_RELEASE_DATA (notifier, g_object_unref); BGE_RELEASE_DATA (timer, g_timer_destroy)); static void regenerate (BgeWdgtRenderer *self); static void spawn_nonchild (BgeWdgtRenderer *self, ValueData *value); static void spawn_child (BgeWdgtRenderer *self, ValueData *value, GtkBuilder *dummy_builder); static void apply_state (BgeWdgtRenderer *self); static GtkExpression * ensure_expressions (BgeWdgtSpec *self, ValueData *value, StateData *state, gboolean *value_needs_tick); static void set_value (BgeWdgtRenderer *self, StateData *state, StateInstanceData *instance, ValueData *dest, ValueData *src, GPtrArray *watches); static int resolve_value_int (BgeWdgtRenderer *self, ValueData *value, StateData *state); static double resolve_value_double (BgeWdgtRenderer *self, ValueData *value, StateData *state); static gint resolve_value_enum (BgeWdgtRenderer *self, ValueData *value, StateData *state); static gpointer resolve_value_boxed_dup (BgeWdgtRenderer *self, ValueData *value, StateData *state); static gpointer resolve_value_object_dup (BgeWdgtRenderer *self, ValueData *value, StateData *state); static void discard_binding (gpointer ptr); static void discard_watch (gpointer ptr); static void prop_change_queue_draw (BgeWdgtRenderer *self); static void reset_setter (WatchSetterData *data); static void wdgt_renderer_set_from_resource (BgeWdgtRenderer *self, const char *resource); static void bge_wdgt_renderer_dispose (GObject *object) { BgeWdgtRenderer *self = BGE_WDGT_RENDERER (object); if (self->tick > 0) { gtk_widget_remove_tick_callback (GTK_WIDGET (self), self->tick); self->tick = 0; } g_clear_pointer (&self->spec, g_object_unref); g_clear_pointer (&self->state, g_free); g_clear_pointer (&self->reference, g_object_unref); g_clear_pointer (&self->child, gtk_widget_unparent); g_clear_pointer (&self->init_instance, state_instance_data_unref); g_clear_pointer (&self->init_watches, g_ptr_array_unref); g_clear_pointer (&self->active_state, state_data_unref); g_clear_pointer (&self->active_instance, state_instance_data_unref); g_clear_pointer (&self->active_snapshot, snapshot_data_unref); g_clear_pointer (&self->last_state, state_data_unref); g_clear_pointer (&self->last_instance, state_instance_data_unref); g_clear_pointer (&self->since_last_state, g_timer_destroy); g_clear_pointer (&self->objects, g_hash_table_unref); g_clear_pointer (&self->children, g_ptr_array_unref); g_clear_pointer (&self->allocations, g_hash_table_unref); g_clear_pointer (&self->nonchildren, g_ptr_array_unref); g_clear_pointer (&self->foreach_instances, g_hash_table_unref); g_clear_pointer (&self->state_instances, g_hash_table_unref); g_clear_pointer (&self->transition_instances, g_hash_table_unref); g_clear_pointer (&self->transition_closure_instances, g_hash_table_unref); g_clear_pointer (&self->track_transition_closure_instances, g_hash_table_unref); g_clear_pointer (&self->track_transitions, g_ptr_array_unref); g_clear_pointer (&self->bindings, g_ptr_array_unref); g_clear_pointer (&self->watches, g_ptr_array_unref); g_clear_pointer (&self->reference_notifier, g_object_unref); g_clear_pointer (&self->measure_for_size_notifier, g_object_unref); g_clear_pointer (&self->widget_width_notifier, g_object_unref); g_clear_pointer (&self->widget_height_notifier, g_object_unref); g_clear_pointer (&self->tick_time, g_timer_destroy); g_clear_pointer (&self->tick_time_notifier, g_object_unref); G_OBJECT_CLASS (bge_wdgt_renderer_parent_class)->dispose (object); } static void bge_wdgt_renderer_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BgeWdgtRenderer *self = BGE_WDGT_RENDERER (object); switch (prop_id) { case RENDERER_PROP_SPEC: g_value_set_object (value, bge_wdgt_renderer_get_spec (self)); break; case RENDERER_PROP_STATE: g_value_set_string (value, bge_wdgt_renderer_get_state (self)); break; case RENDERER_PROP_REFERENCE: g_value_set_object (value, bge_wdgt_renderer_get_reference (self)); break; case RENDERER_PROP_CHILD: g_value_set_object (value, bge_wdgt_renderer_get_child (self)); break; case RENDERER_PROP_RESOURCE: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_wdgt_renderer_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BgeWdgtRenderer *self = BGE_WDGT_RENDERER (object); switch (prop_id) { case RENDERER_PROP_SPEC: bge_wdgt_renderer_set_spec (self, g_value_get_object (value)); break; case RENDERER_PROP_RESOURCE: wdgt_renderer_set_from_resource (self, g_value_get_string (value)); break; case RENDERER_PROP_STATE: bge_wdgt_renderer_set_state (self, g_value_get_string (value)); break; case RENDERER_PROP_REFERENCE: bge_wdgt_renderer_set_reference (self, g_value_get_object (value)); break; case RENDERER_PROP_CHILD: bge_wdgt_renderer_set_child (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bge_wdgt_renderer_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { BgeWdgtRenderer *self = BGE_WDGT_RENDERER (widget); gboolean wdgt_measured = FALSE; self->current_measure_for_size = for_size; /* This will update our measurement values in self */ g_object_notify_by_pspec ( G_OBJECT (self->measure_for_size_notifier), notifier_props[NOTIFIER_PROP_VALUE]); switch (orientation) { case GTK_ORIENTATION_HORIZONTAL: if (self->measure_minimum_width > 0 || self->measure_natural_width > 0) { *minimum = self->measure_minimum_width; *natural = self->measure_natural_width; wdgt_measured = TRUE; } break; case GTK_ORIENTATION_VERTICAL: if (self->measure_minimum_height > 0 || self->measure_natural_height > 0) { *minimum = self->measure_minimum_height; *natural = self->measure_natural_height; wdgt_measured = TRUE; } break; default: g_assert_not_reached (); } if (!wdgt_measured) { GtkWidget *child = NULL; child = gtk_widget_get_first_child (GTK_WIDGET (self)); if (child != NULL) gtk_widget_measure ( GTK_WIDGET (child), orientation, for_size, minimum, natural, minimum_baseline, natural_baseline); } } static void bge_wdgt_renderer_size_allocate (GtkWidget *widget, int width, int height, int baseline) { BgeWdgtRenderer *self = BGE_WDGT_RENDERER (widget); self->widget_width = width; self->widget_height = height; g_object_notify_by_pspec ( G_OBJECT (self->widget_width_notifier), notifier_props[NOTIFIER_PROP_VALUE]); g_object_notify_by_pspec ( G_OBJECT (self->widget_height_notifier), notifier_props[NOTIFIER_PROP_VALUE]); if (self->child != NULL && gtk_widget_should_layout (self->child)) gtk_widget_allocate (self->child, width, height, baseline, NULL); for (guint i = 0; i < self->children->len; i++) { GtkWidget *child = NULL; AllocationData *allocation = NULL; int alloc_width = width; int alloc_height = height; g_autoptr (GskTransform) transform = NULL; child = g_ptr_array_index (self->children, i); allocation = g_hash_table_lookup (self->allocations, child); alloc_width = resolve_value_int ( self, allocation->width, self->active_instance != NULL ? self->active_state : self->spec->init_state); alloc_height = resolve_value_int ( self, allocation->height, self->active_state != NULL ? self->active_state : self->spec->init_state); transform = resolve_value_boxed_dup ( self, allocation->transform, self->active_state != NULL ? self->active_state : self->spec->init_state); gtk_widget_allocate ( child, MAX (alloc_width, 0.0), MAX (alloc_height, 0.0), baseline, g_steal_pointer (&transform)); } } static gboolean recurse_snapshot (BgeWdgtRenderer *self, GtkSnapshot *snapshot, GPtrArray *calls, guint *idx, ForeachData *foreach_context, ForeachData *parent_foreach, gboolean skip_foreach) { gboolean result = FALSE; guint start_idx = 0; guint n_iters = 0; ForeachData *next_foreach = NULL; ForeachInstanceData *foreach_instance = NULL; g_autoptr (GListModel) model = NULL; start_idx = *idx; if (foreach_context != NULL) { for (ForeachData *data = foreach_context->parent; data != NULL && data != parent_foreach; data = data->parent) { next_foreach = foreach_context; foreach_context = data; } foreach_instance = g_hash_table_lookup ( self->foreach_instances, foreach_context); g_assert (foreach_instance != NULL); model = resolve_value_object_dup ( self, foreach_context->model, self->active_state); if (model != NULL) n_iters = g_list_model_get_n_items (model); else { n_iters = 1; skip_foreach = TRUE; } } else n_iters = 1; for (guint i = 0; i < n_iters; i++) { if (foreach_instance != NULL) { foreach_instance->current_idx = i; g_object_notify_by_pspec ( G_OBJECT (foreach_instance->notifier), notifier_props[NOTIFIER_PROP_VALUE]); } *idx = start_idx; if (next_foreach != NULL) { result = recurse_snapshot ( self, snapshot, calls, idx, next_foreach, foreach_context, skip_foreach); if (!result) return FALSE; } for (; *idx < calls->len; (*idx)++) { SnapshotCallData *call = NULL; call = g_ptr_array_index (calls, *idx); if ((call->foreach_context != NULL || parent_foreach != NULL) && call->foreach_context == parent_foreach) break; else if (call->foreach_context != foreach_context) { result = recurse_snapshot ( self, snapshot, calls, idx, call->foreach_context, foreach_context, skip_foreach); if (!result) return FALSE; } else if (!skip_foreach) { switch (call->kind) { case BGE_WDGT_SNAPSHOT_INSTR_POP: gtk_snapshot_pop (snapshot); break; case BGE_WDGT_SNAPSHOT_INSTR_SAVE: gtk_snapshot_save (snapshot); break; case BGE_WDGT_SNAPSHOT_INSTR_RESTORE: gtk_snapshot_restore (snapshot); break; case BGE_WDGT_SNAPSHOT_INSTR_APPEND: case BGE_WDGT_SNAPSHOT_INSTR_PUSH: case BGE_WDGT_SNAPSHOT_INSTR_TRANSFORM: { GValue arg_values[ARGBUF_SIZE] = { 0 }; guint n_arg_values = 0; GValue rest_values[ARGBUF_SIZE] = { 0 }; guint n_rest_values = 0; n_arg_values = MIN (call->args->len, G_N_ELEMENTS (arg_values)); n_rest_values = MIN (call->rest->len, G_N_ELEMENTS (rest_values)); for (guint j = 0; j < n_arg_values; j++) { ValueData *value = NULL; GtkExpression *expression = NULL; value = g_ptr_array_index (call->args, j); expression = g_hash_table_lookup (self->active_state->expressions, value); result = gtk_expression_evaluate (expression, self, &arg_values[j]); if (!result) return FALSE; } for (guint j = 0; j < n_rest_values; j++) { ValueData *value = NULL; GtkExpression *expression = NULL; value = g_ptr_array_index (call->rest, j); expression = g_hash_table_lookup (self->active_state->expressions, value); result = gtk_expression_evaluate (expression, self, &rest_values[j]); if (!result) return FALSE; } call->func (snapshot, arg_values, rest_values, n_rest_values); for (guint j = 0; j < n_rest_values; j++) { g_value_unset (&rest_values[j]); } for (guint j = 0; j < n_arg_values; j++) { g_value_unset (&arg_values[j]); } } break; case BGE_WDGT_SNAPSHOT_INSTR_SNAPSHOT_CHILD: { GtkExpression *expression = NULL; GValue child_value = G_VALUE_INIT; GtkWidget *child = NULL; expression = g_hash_table_lookup ( self->active_state->expressions, call->child); gtk_expression_evaluate (expression, self, &child_value); child = g_value_get_object (&child_value); if (child != NULL) { if (gtk_widget_get_parent (child) == GTK_WIDGET (self)) gtk_widget_snapshot_child (GTK_WIDGET (self), child, snapshot); else g_critical ("Trying to snapshot a widget which is " "not a direct child of this spec! Skipping"); } g_value_unset (&child_value); } break; default: break; } } } } return TRUE; } static void bge_wdgt_renderer_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BgeWdgtRenderer *self = BGE_WDGT_RENDERER (widget); GPtrArray *calls = NULL; guint call_idx = 0; if (self->active_state == NULL || self->active_instance == NULL || self->active_snapshot == NULL) goto done; calls = self->active_snapshot->calls; recurse_snapshot (self, snapshot, calls, &call_idx, NULL, NULL, FALSE); done: if (self->child != NULL) gtk_widget_snapshot_child (GTK_WIDGET (self), self->child, snapshot); // for (guint i = 0; i < self->children->len; i++) // { // GtkWidget *child = NULL; // // child = g_ptr_array_index (self->children, i); // gtk_widget_snapshot_child (GTK_WIDGET (self), child, snapshot); // } } static void bge_wdgt_renderer_class_init (BgeWdgtRendererClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bge_wdgt_renderer_set_property; object_class->get_property = bge_wdgt_renderer_get_property; object_class->dispose = bge_wdgt_renderer_dispose; renderer_props[RENDERER_PROP_SPEC] = g_param_spec_object ( "spec", NULL, NULL, BGE_TYPE_WDGT_SPEC, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); renderer_props[RENDERER_PROP_RESOURCE] = g_param_spec_string ( "resource", NULL, NULL, NULL, G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); renderer_props[RENDERER_PROP_STATE] = g_param_spec_string ( "state", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); renderer_props[RENDERER_PROP_REFERENCE] = g_param_spec_object ( "reference", NULL, NULL, G_TYPE_OBJECT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); renderer_props[RENDERER_PROP_CHILD] = g_param_spec_object ( "child", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_RENDERER_PROP, renderer_props); widget_class->measure = bge_wdgt_renderer_measure; widget_class->size_allocate = bge_wdgt_renderer_size_allocate; widget_class->snapshot = bge_wdgt_renderer_snapshot; g_type_ensure (BGE_TYPE_WDGT_NOTIFIER); } static gboolean tick_cb (BgeWdgtRenderer *self, GdkFrameClock *frame_clock, gpointer user_data) { gboolean should_animate = FALSE; GHashTableIter iter = { 0 }; gboolean finished_all_state_transitions = TRUE; self->had_tick_since_state_switch = TRUE; g_object_notify_by_pspec ( G_OBJECT (self->tick_time_notifier), notifier_props[NOTIFIER_PROP_VALUE]); should_animate = bge_should_animate (GTK_WIDGET (self)); for (guint i = 0; i < self->track_transitions->len;) { TrackTransitionClosureData *data = NULL; double elapsed = 0.0; data = g_ptr_array_index (self->track_transitions, i); elapsed = g_timer_elapsed (data->timer, NULL); g_object_notify_by_pspec ( G_OBJECT (data->notifier), notifier_props[NOTIFIER_PROP_VALUE]); if (should_animate && elapsed <= data->spring.est_duration) i++; else g_ptr_array_remove_index (self->track_transitions, i); } if (should_animate && self->spec != NULL && self->active_state != NULL && self->active_instance != NULL && self->last_state != NULL && self->last_instance != NULL) { double elapsed = 0.0; elapsed = g_timer_elapsed (self->since_last_state, NULL); g_hash_table_iter_init (&iter, self->active_state->transitions); for (;;) { ValueData *value = NULL; TransitionData *transition = NULL; TransitionInstanceData *transition_instance = NULL; TransitionInstanceData *init_transition_instance = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &value, (gpointer *) &transition)) break; transition_instance = g_hash_table_lookup (self->active_instance->transitions, value); if (transition_instance != NULL) g_object_notify_by_pspec ( G_OBJECT (transition_instance->notifier), notifier_props[NOTIFIER_PROP_VALUE]); init_transition_instance = g_hash_table_lookup (self->init_instance->transitions, value); if (init_transition_instance != NULL) g_object_notify_by_pspec ( G_OBJECT (init_transition_instance->notifier), notifier_props[NOTIFIER_PROP_VALUE]); switch (transition->kind) { case TRANSITION_EASE: if (elapsed <= transition_instance->ease.seconds) finished_all_state_transitions = FALSE; break; case TRANSITION_SPRING: if (transition_instance->spring.est_duration < 0.0 || elapsed <= transition_instance->spring.est_duration) finished_all_state_transitions = FALSE; break; default: g_assert_not_reached (); } } } if (finished_all_state_transitions) { g_clear_pointer (&self->last_state, state_data_unref); g_clear_pointer (&self->last_instance, state_instance_data_unref); } if ((self->active_state == NULL || !self->active_state->needs_tick) && self->track_transitions->len == 0 && finished_all_state_transitions) { gtk_widget_remove_tick_callback (GTK_WIDGET (self), self->tick); self->tick = 0; return G_SOURCE_REMOVE; } return G_SOURCE_CONTINUE; } static void bge_wdgt_renderer_init (BgeWdgtRenderer *self) { self->init_watches = g_ptr_array_new_with_free_func (discard_watch); self->objects = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, g_object_unref); self->children = g_ptr_array_new_with_free_func ( (GDestroyNotify) gtk_widget_unparent); self->nonchildren = g_ptr_array_new_with_free_func ( (GDestroyNotify) g_object_unref); self->allocations = g_hash_table_new_full ( g_direct_hash, g_direct_equal, g_object_unref, allocation_data_unref); self->foreach_instances = g_hash_table_new_full ( g_direct_hash, g_direct_equal, foreach_data_unref, NULL); self->state_instances = g_hash_table_new_full ( g_direct_hash, g_direct_equal, state_data_unref, state_instance_data_unref); self->transition_instances = g_hash_table_new_full ( g_direct_hash, g_direct_equal, transition_data_unref, transition_instance_data_unref); self->transition_closure_instances = g_hash_table_new_full ( g_direct_hash, g_direct_equal, transition_data_unref, transition_closure_data_unref); self->track_transition_closure_instances = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, track_transition_closure_data_unref); self->track_transitions = g_ptr_array_new_with_free_func ( track_transition_closure_data_unref); self->bindings = g_ptr_array_new_with_free_func (discard_binding); self->watches = g_ptr_array_new_with_free_func (discard_watch); self->since_last_state = g_timer_new (); self->tick_time = g_timer_new (); self->reference_notifier = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); self->measure_for_size_notifier = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); self->widget_width_notifier = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); self->widget_height_notifier = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); self->tick_time_notifier = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); } BgeWdgtRenderer * bge_wdgt_renderer_new (void) { return g_object_new (BGE_TYPE_WDGT_RENDERER, NULL); } BgeWdgtSpec * bge_wdgt_renderer_get_spec (BgeWdgtRenderer *self) { g_return_val_if_fail (BGE_IS_WDGT_RENDERER (self), NULL); return self->spec; } const char * bge_wdgt_renderer_get_state (BgeWdgtRenderer *self) { g_return_val_if_fail (BGE_IS_WDGT_RENDERER (self), NULL); return self->state; } GObject * bge_wdgt_renderer_get_reference (BgeWdgtRenderer *self) { g_return_val_if_fail (BGE_IS_WDGT_RENDERER (self), NULL); return self->reference; } GtkWidget * bge_wdgt_renderer_get_child (BgeWdgtRenderer *self) { g_return_val_if_fail (BGE_IS_WDGT_RENDERER (self), NULL); return self->child; } void bge_wdgt_renderer_set_spec (BgeWdgtRenderer *self, BgeWdgtSpec *spec) { GBinding *name_binding = NULL; g_return_if_fail (BGE_IS_WDGT_RENDERER (self)); g_return_if_fail (spec == NULL || BGE_IS_WDGT_SPEC (spec)); if (spec == self->spec) return; g_clear_pointer (&self->spec, g_object_unref); if (spec != NULL) self->spec = g_object_ref (spec); regenerate (self); apply_state (self); if (spec != NULL) { name_binding = g_object_bind_property (spec, "name", self, "name", G_BINDING_SYNC_CREATE); g_ptr_array_add (self->bindings, g_object_ref (name_binding)); } else gtk_widget_set_name (GTK_WIDGET (self), NULL); g_object_notify_by_pspec (G_OBJECT (self), renderer_props[RENDERER_PROP_SPEC]); } void bge_wdgt_renderer_set_state (BgeWdgtRenderer *self, const char *state) { g_return_if_fail (BGE_IS_WDGT_RENDERER (self)); if (state == self->state || (state != NULL && self->state != NULL && g_strcmp0 (state, self->state) == 0)) return; g_clear_pointer (&self->state, g_free); if (state != NULL) self->state = g_strdup (state); apply_state (self); g_object_notify_by_pspec (G_OBJECT (self), renderer_props[RENDERER_PROP_STATE]); } void bge_wdgt_renderer_set_reference (BgeWdgtRenderer *self, GObject *reference) { g_return_if_fail (BGE_IS_WDGT_RENDERER (self)); if (reference == self->reference) return; g_clear_pointer (&self->reference, g_object_unref); if (reference != NULL) self->reference = g_object_ref (reference); g_object_notify_by_pspec (G_OBJECT (self), renderer_props[RENDERER_PROP_REFERENCE]); g_object_notify_by_pspec (G_OBJECT (self->reference_notifier), notifier_props[NOTIFIER_PROP_VALUE]); } void bge_wdgt_renderer_set_child (BgeWdgtRenderer *self, GtkWidget *child) { g_return_if_fail (BGE_IS_WDGT_RENDERER (self)); if (self->child == child) return; if (child != NULL) g_return_if_fail (gtk_widget_get_parent (child) == NULL); g_clear_pointer (&self->child, gtk_widget_unparent); self->child = child; if (child != NULL) gtk_widget_set_parent (child, GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), renderer_props[RENDERER_PROP_CHILD]); } void bge_wdgt_renderer_set_state_take (BgeWdgtRenderer *self, char *state) { g_return_if_fail (BGE_IS_WDGT_RENDERER (self)); if (state != NULL && self->state != NULL && g_strcmp0 (state, self->state) == 0) { g_free (state); return; } g_clear_pointer (&self->state, g_free); if (state != NULL) self->state = state; g_object_notify_by_pspec (G_OBJECT (self), renderer_props[RENDERER_PROP_STATE]); } gpointer bge_wdgt_renderer_lookup_object (BgeWdgtRenderer *self, const char *name) { ValueData *value = NULL; g_return_val_if_fail (BGE_IS_WDGT_RENDERER (self), NULL); g_return_val_if_fail (name != NULL, NULL); if (self->spec == NULL) return NULL; value = g_hash_table_lookup (self->spec->values, name); if (value == NULL) return NULL; if (!g_type_is_a (value->type, G_TYPE_OBJECT)) return NULL; return resolve_value_object_dup ( self, value, self->active_state != NULL ? self->active_state : self->spec->init_state); } static void regenerate (BgeWdgtRenderer *self) { BgeWdgtSpec *spec = self->spec; g_autoptr (GtkBuilder) dummy_builder = NULL; GHashTableIter state_iter = { 0 }; GHashTableIter setters_iter = { 0 }; g_clear_pointer (&self->init_instance, state_instance_data_unref); g_ptr_array_set_size (self->init_watches, 0); g_hash_table_remove_all (self->state_instances); g_hash_table_remove_all (self->objects); g_ptr_array_set_size (self->children, 0); g_ptr_array_set_size (self->nonchildren, 0); g_hash_table_remove_all (self->allocations); g_hash_table_remove_all (self->foreach_instances); g_ptr_array_set_size (self->track_transitions, 0); g_clear_pointer (&self->last_state, state_data_unref); g_clear_pointer (&self->last_instance, state_instance_data_unref); g_clear_pointer (&self->active_state, state_data_unref); g_clear_pointer (&self->active_instance, state_instance_data_unref); g_clear_pointer (&self->active_snapshot, snapshot_data_unref); g_ptr_array_set_size (self->bindings, 0); g_ptr_array_set_size (self->watches, 0); self->measure_minimum_width = -1; self->measure_natural_width = -1; self->measure_minimum_height = -1; self->measure_natural_height = -1; if (self->spec == NULL) return; for (guint i = 0; i < spec->foreaches->len; i++) { ForeachData *data = NULL; g_autoptr (ForeachInstanceData) foreach_instance = NULL; data = g_ptr_array_index (spec->foreaches, i); foreach_instance = foreach_instance_data_new (); foreach_instance->notifier = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); g_hash_table_replace (self->foreach_instances, foreach_data_ref (data), foreach_instance_data_ref (foreach_instance)); } for (guint i = 0; i < spec->nonchildren->len; i++) { ValueData *value = NULL; value = g_ptr_array_index (spec->nonchildren, i); spawn_nonchild (self, value); } dummy_builder = gtk_builder_new (); for (guint i = 0; i < spec->children->len; i++) { ValueData *value = NULL; value = g_ptr_array_index (spec->children, i); spawn_child (self, value, dummy_builder); } g_hash_table_iter_init (&state_iter, spec->states); for (;;) { char *state_name = NULL; StateData *state = NULL; g_autoptr (StateInstanceData) instance = NULL; GHashTableIter transitions_iter = { 0 }; if (!g_hash_table_iter_next ( &state_iter, (gpointer *) &state_name, (gpointer *) &state)) break; instance = state_instance_data_new (); instance->transitions = g_hash_table_new_full ( g_direct_hash, g_direct_equal, value_data_unref, transition_instance_data_unref); g_hash_table_replace (self->state_instances, state_data_ref (state), state_instance_data_ref (instance)); g_hash_table_iter_init (&transitions_iter, state->transitions); for (;;) { ValueData *value = NULL; TransitionData *transition = NULL; g_autoptr (BgeWdgtNotifier) notifier_object = NULL; g_autoptr (TransitionInstanceData) instance_data = NULL; g_autoptr (TransitionClosureData) closure_data = NULL; if (!g_hash_table_iter_next ( &transitions_iter, (gpointer *) &value, (gpointer *) &transition)) break; notifier_object = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); instance_data = transition_instance_data_new (); instance_data->notifier = g_object_ref (notifier_object); switch (transition->kind) { case TRANSITION_EASE: instance_data->elapsed = G_MAXINT; break; case TRANSITION_SPRING: instance_data->spring.est_duration = -1.0; break; default: g_assert_not_reached (); } g_hash_table_replace (instance->transitions, value_data_ref (value), transition_instance_data_ref (instance_data)); g_hash_table_replace (self->transition_instances, transition_data_ref (transition), transition_instance_data_ref (instance_data)); closure_data = transition_closure_data_new (); closure_data->state = state_data_ref (state); closure_data->instance = state_instance_data_ref (instance); closure_data->value = value_data_ref (value); g_hash_table_replace (self->transition_closure_instances, transition_data_ref (transition), transition_closure_data_ref (closure_data)); } for (guint i = 0; i < spec->track_transition_values->len; i++) { ValueData *value = NULL; g_autoptr (TrackTransitionClosureData) closure_data = NULL; value = g_ptr_array_index (spec->track_transition_values, i); closure_data = track_transition_closure_data_new (); closure_data->value = value_data_ref (value); closure_data->timer = g_timer_new (); closure_data->notifier = g_object_new (BGE_TYPE_WDGT_NOTIFIER, NULL); g_hash_table_replace (self->track_transition_closure_instances, value_data_ref (value), track_transition_closure_data_ref (closure_data)); } if (state == spec->init_state) self->init_instance = state_instance_data_ref (instance); } /* Separate to ensure `self->init_instance` has been set */ if (!spec->ready) { g_hash_table_iter_init (&state_iter, spec->states); for (;;) { GHashTableIter value_iter = { 0 }; char *state_name = NULL; StateData *state = NULL; if (!g_hash_table_iter_next ( &state_iter, (gpointer *) &state_name, (gpointer *) &state)) break; g_hash_table_iter_init (&value_iter, spec->values); for (;;) { char *value_name = NULL; ValueData *value = NULL; g_autoptr (GtkExpression) expression = NULL; if (!g_hash_table_iter_next ( &value_iter, (gpointer *) &value_name, (gpointer *) &value)) break; expression = ensure_expressions (spec, value, state, NULL); } for (guint i = 0; i < spec->anon_values->len; i++) { ValueData *value = NULL; g_autoptr (GtkExpression) expression = NULL; value = g_ptr_array_index (spec->anon_values, i); expression = ensure_expressions (spec, value, state, NULL); } for (guint i = 0; i < spec->foreaches->len; i++) { ForeachData *data = NULL; data = g_ptr_array_index (spec->foreaches, i); { g_autoptr (GtkExpression) expression = ensure_expressions (spec, data->model, state, NULL); } g_hash_table_iter_init (&value_iter, data->values); for (;;) { char *value_name = NULL; ValueData *value = NULL; g_autoptr (GtkExpression) expression = NULL; if (!g_hash_table_iter_next ( &value_iter, (gpointer *) &value_name, (gpointer *) &value)) break; expression = ensure_expressions (spec, value, state, NULL); } } } g_hash_table_iter_init (&state_iter, spec->states); for (;;) { char *state_name = NULL; StateData *state = NULL; StateData *snapshot_state = NULL; if (!g_hash_table_iter_next ( &state_iter, (gpointer *) &state_name, (gpointer *) &state)) break; g_hash_table_iter_init ( &setters_iter, state->setters); for (;;) { ValueData *dest = NULL; ValueData *src = NULL; if (!g_hash_table_iter_next ( &setters_iter, (gpointer *) &dest, (gpointer *) &src)) break; if (g_hash_table_contains (state->values_need_tick, src)) state->needs_tick = TRUE; } if (state->snapshot != NULL) snapshot_state = state; else /* If this state doesn't have snapshot instructions specified, fallback on using the init state */ snapshot_state = self->spec->init_state; for (guint i = 0; i < snapshot_state->snapshot->calls->len; i++) { SnapshotCallData *call = NULL; call = g_ptr_array_index (snapshot_state->snapshot->calls, i); if (call->args == NULL) /* pop, save, restore... */ continue; for (guint j = 0; j < call->args->len; j++) { ValueData *arg = NULL; gboolean found = FALSE; GtkExpression *expression = NULL; arg = g_ptr_array_index (call->args, j); expression = g_hash_table_lookup (state->expressions, arg); g_assert (expression != NULL); for (guint k = 0; k < state->snapshot_deps->len; k++) { GtkExpression *other = NULL; other = g_ptr_array_index (state->snapshot_deps, k); if (expression == other) { found = TRUE; break; } } if (found) /* Ensure we don't duplicate deps */ continue; if (g_hash_table_contains (state->values_need_tick, arg)) state->needs_tick = TRUE; g_ptr_array_add (state->snapshot_deps, gtk_expression_ref (expression)); } } } spec->ready = TRUE; } g_hash_table_iter_init ( &setters_iter, self->spec->init_state->setters); for (;;) { ValueData *dest = NULL; ValueData *src = NULL; if (!g_hash_table_iter_next ( &setters_iter, (gpointer *) &dest, (gpointer *) &src)) break; set_value ( self, self->spec->init_state, self->init_instance, dest, src, self->init_watches); } gtk_widget_queue_allocate (GTK_WIDGET (self)); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void spawn_nonchild (BgeWdgtRenderer *self, ValueData *value) { g_autoptr (GObject) object = NULL; g_assert (value->kind == VALUE_OBJECT); object = g_object_new (value->type, NULL); if (g_type_is_a (value->type, G_TYPE_INITIALLY_UNOWNED)) g_object_ref_sink (object); g_hash_table_replace (self->objects, value_data_ref (value), g_object_ref (object)); g_ptr_array_add (self->nonchildren, g_object_ref (object)); } static void spawn_child (BgeWdgtRenderer *self, ValueData *value, GtkBuilder *dummy_builder) { GtkWidget *widget = NULL; g_autoptr (AllocationData) allocation = NULL; g_assert (value->kind == VALUE_CHILD); widget = g_object_new ( value->type, "name", value->name, NULL); if (value->child.css_classes != NULL) { for (guint j = 0; j < value->child.css_classes->len; j++) { const char *class = NULL; class = g_ptr_array_index (value->child.css_classes, j); gtk_widget_add_css_class (widget, class); } } if (value->child.parent_widget != NULL) { GtkWidget *parent_widget = NULL; g_autoptr (GtkBuilder) tmp_builder = NULL; parent_widget = g_hash_table_lookup ( self->objects, value->child.parent_widget); g_assert (parent_widget != NULL); if (dummy_builder == NULL) tmp_builder = gtk_builder_new (); GTK_BUILDABLE_GET_IFACE (parent_widget) ->add_child ( GTK_BUILDABLE (parent_widget), dummy_builder != NULL ? dummy_builder : tmp_builder, G_OBJECT (widget), value->child.builder_type); } else { gtk_widget_set_parent (widget, GTK_WIDGET (self)); g_ptr_array_add (self->children, g_object_ref (widget)); } g_hash_table_replace (self->objects, value_data_ref (value), g_object_ref (widget)); allocation = allocation_data_new (); g_hash_table_replace (self->allocations, g_object_ref (widget), allocation_data_ref (allocation)); } static void apply_state (BgeWdgtRenderer *self) { BgeWdgtSpec *spec = self->spec; StateData *state = NULL; StateInstanceData *instance = NULL; GHashTableIter iter = { 0 }; if (self->had_tick_since_state_switch) { g_clear_pointer (&self->last_state, state_data_unref); g_clear_pointer (&self->last_instance, state_instance_data_unref); if (self->active_state != NULL && self->active_instance != NULL) { self->last_state = g_steal_pointer (&self->active_state); self->last_instance = g_steal_pointer (&self->active_instance); } g_timer_start (self->since_last_state); self->had_tick_since_state_switch = FALSE; } g_clear_pointer (&self->active_state, state_data_unref); g_clear_pointer (&self->active_instance, state_instance_data_unref); g_clear_pointer (&self->active_snapshot, snapshot_data_unref); g_ptr_array_set_size (self->bindings, 0); g_ptr_array_set_size (self->watches, 0); gtk_widget_queue_draw (GTK_WIDGET (self)); if (self->spec == NULL || self->state == NULL) return; state = g_hash_table_lookup (spec->states, self->state); if (state == NULL) { g_critical ("state \"%s\" doesn't exist on spec \"%s\"", self->state, spec->name); return; } instance = g_hash_table_lookup (self->state_instances, state); g_assert (instance != NULL); self->active_state = state_data_ref (state); self->active_instance = state_instance_data_ref (instance); if (state->snapshot != NULL) self->active_snapshot = snapshot_data_ref (state->snapshot); else if (self->spec->init_state->snapshot != NULL) self->active_snapshot = snapshot_data_ref (self->spec->init_state->snapshot); g_hash_table_iter_init (&iter, state->setters); for (;;) { ValueData *dest = NULL; ValueData *src = NULL; TransitionInstanceData *transition_instance = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &dest, (gpointer *) &src)) break; set_value ( self, state, instance, dest, src, self->watches); transition_instance = g_hash_table_lookup (instance->transitions, dest); if (transition_instance != NULL) transition_instance->spring.est_duration = -1.0; } g_hash_table_iter_init (&iter, spec->init_state->setters); for (;;) { ValueData *dest = NULL; ValueData *src = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &dest, (gpointer *) &src)) break; set_value ( self, state, instance, dest, src, self->watches); } for (guint i = 0; i < state->snapshot_deps->len; i++) { GtkExpression *expression = NULL; GtkExpressionWatch *watch = NULL; expression = g_ptr_array_index (state->snapshot_deps, i); watch = gtk_expression_watch ( expression, self, (GtkExpressionNotify) prop_change_queue_draw, self, NULL); g_ptr_array_add (self->watches, watch); } gtk_widget_queue_allocate (GTK_WIDGET (self)); gtk_widget_queue_draw (GTK_WIDGET (self)); if (self->tick == 0) self->tick = gtk_widget_add_tick_callback ( GTK_WIDGET (self), (GtkTickCallback) tick_cb, NULL, NULL); } static graphene_point_t * expression_create_point (gpointer object, double x, double y, gpointer user_data) { graphene_point_t *point = NULL; point = graphene_point_alloc (); point->x = x; point->y = y; return point; } static graphene_size_t * expression_create_size (gpointer object, double width, double height, gpointer user_data) { graphene_size_t *size = NULL; size = graphene_size_alloc (); size->width = width; size->height = height; return size; } static graphene_point3d_t * expression_create_point3d (gpointer object, double x, double y, double z, gpointer user_data) { graphene_point3d_t *point3d = NULL; point3d = graphene_point3d_alloc (); point3d->x = x; point3d->y = y; point3d->z = z; return point3d; } static graphene_rect_t * expression_create_rect (gpointer object, double x, double y, double width, double height, gpointer user_data) { graphene_rect_t *rect = NULL; rect = graphene_rect_alloc (); rect->origin.x = x; rect->origin.y = y; rect->size.width = width; rect->size.height = height; return rect; } static GskStroke * expression_create_stroke (gpointer object, double line_width, GskLineCap line_cap, GskLineJoin line_join, double miter_limit, gpointer user_data) { GskStroke *stroke = NULL; stroke = gsk_stroke_new (line_width); gsk_stroke_set_line_cap (stroke, line_cap); gsk_stroke_set_line_join (stroke, line_join); gsk_stroke_set_miter_limit (stroke, miter_limit); return stroke; } static void expression_coerce_type (gpointer this, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer dest_type_ptr) { GType dest_type = GPOINTER_TO_SIZE (dest_type_ptr); coerce_value (¶m_values[0], dest_type, return_value); } static gpointer expression_lookup_object (BgeWdgtRenderer *this, ValueData *value) { return g_object_ref (g_hash_table_lookup (this->objects, value)); } static gpointer expression_get_reference_notifier (BgeWdgtRenderer *this, gpointer user_data) { return g_object_ref (this->reference_notifier); } static gpointer expression_get_measure_for_size_notifier (BgeWdgtRenderer *this, gpointer user_data) { return g_object_ref (this->measure_for_size_notifier); } static gpointer expression_get_widget_width_notifier (BgeWdgtRenderer *this, gpointer user_data) { return g_object_ref (this->widget_width_notifier); } static gpointer expression_get_widget_height_notifier (BgeWdgtRenderer *this, gpointer user_data) { return g_object_ref (this->widget_height_notifier); } static gpointer expression_get_tick_time_notifier (BgeWdgtRenderer *this, gpointer user_data) { return g_object_ref (this->tick_time_notifier); } static gpointer expression_get_foreach_instance_notifier (BgeWdgtRenderer *this, ForeachData *data) { ForeachInstanceData *instance = NULL; instance = g_hash_table_lookup (this->foreach_instances, data); g_assert (instance != NULL); return g_object_ref (instance->notifier); } static gpointer expression_get_transition_instance_notifier (BgeWdgtRenderer *this, TransitionData *data) { TransitionInstanceData *instance = NULL; instance = g_hash_table_lookup (this->transition_instances, data); g_assert (instance != NULL); return g_object_ref (instance->notifier); } static gpointer expression_get_track_transition_closure_instance_notifier (BgeWdgtRenderer *this, ValueData *value) { TrackTransitionClosureData *instance = NULL; instance = g_hash_table_lookup (this->track_transition_closure_instances, value); g_assert (instance != NULL); return g_object_ref (instance->notifier); } static guint expression_get_foreach_index (BgeWdgtRenderer *this, double notify, ForeachData *data) { ForeachInstanceData *instance = NULL; instance = g_hash_table_lookup (this->foreach_instances, data); g_assert (instance != NULL); return instance->current_idx; } static gpointer expression_get_model_item (BgeWdgtRenderer *this, GListModel *model, guint idx, double notify, gpointer user_data) { return g_list_model_get_item (model, idx); } static int expression_get_measure_for_size (BgeWdgtRenderer *this, double notify, gpointer user_data) { return this->current_measure_for_size; } static double expression_get_widget_width (BgeWdgtRenderer *this, double notify, gpointer user_data) { return (double) this->widget_width; } static double expression_get_widget_height (BgeWdgtRenderer *this, double notify, gpointer user_data) { return (double) this->widget_height; } static double expression_get_tick_time (BgeWdgtRenderer *this, double notify, gpointer user_data) { return g_timer_elapsed (this->tick_time, NULL); } static gpointer expression_get_reference_object (BgeWdgtRenderer *this, double notify, gpointer user_data) { return this->reference != NULL ? g_object_ref (this->reference) : NULL; } static double expression_adjust_state_transition (BgeWdgtRenderer *this, double in, double notifier, TransitionData *data) { TransitionClosureData *closure_data = NULL; TransitionData *transition = NULL; TransitionData *last_transition = NULL; TransitionInstanceData *transition_instance = NULL; TransitionInstanceData *last_transition_instance = NULL; ValueData *last_in_value = NULL; double last_in = 0.0; double elapsed = 0.0; double progress = 0.0; double interpolated_number = 0.0; closure_data = g_hash_table_lookup (this->transition_closure_instances, data); g_assert (closure_data != NULL); g_assert (closure_data->value->type == G_TYPE_DOUBLE); if (!bge_should_animate (GTK_WIDGET (this))) return in; if (this->active_state == NULL || this->active_instance == NULL || this->last_state == NULL || this->last_instance == NULL) return in; transition = g_hash_table_lookup ( this->active_state->transitions, closure_data->value); if (transition == NULL) return in; last_transition = g_hash_table_lookup ( this->last_state->transitions, closure_data->value); transition_instance = g_hash_table_lookup ( this->active_instance->transitions, closure_data->value); g_assert (transition_instance != NULL); last_transition_instance = g_hash_table_lookup ( this->last_instance->transitions, closure_data->value); if (last_transition != NULL && last_transition_instance != NULL && last_transition->kind == TRANSITION_EASE && last_transition_instance->elapsed < last_transition_instance->ease.seconds) last_in = last_transition_instance->value; else { last_in_value = g_hash_table_lookup (this->last_state->setters, closure_data->value); if (last_in_value == NULL) return in; last_in = resolve_value_double (this, last_in_value, this->last_state); } elapsed = g_timer_elapsed (this->since_last_state, NULL); transition_instance->elapsed = elapsed; switch (transition->kind) { case TRANSITION_EASE: { BgeEasing easing = 0; double seconds = 0.0; easing = resolve_value_enum ( this, transition->ease.easing, this->active_state); seconds = resolve_value_double ( this, transition->ease.seconds, this->active_state); if (elapsed >= seconds) interpolated_number = in; else { progress = bge_easing_ease (easing, elapsed / seconds); interpolated_number = last_in + progress * (in - last_in); } transition_instance->ease.easing = easing; transition_instance->ease.seconds = seconds; } break; case TRANSITION_SPRING: { double damping_ratio = 0.0; double mass = 0.0; double stiffness = 0.0; double damping = 0.0; damping_ratio = resolve_value_double ( this, transition->spring.damping_ratio, this->active_state); mass = resolve_value_double ( this, transition->spring.mass, this->active_state); stiffness = resolve_value_double ( this, transition->spring.stiffness, this->active_state); damping = damping_ratio * (/* critical damping */ 2 * sqrt (mass * stiffness)); if (transition_instance->spring.est_duration < 0.0 || damping_ratio != transition_instance->spring.cache_damping_ratio || mass != transition_instance->spring.cache_mass || stiffness != transition_instance->spring.cache_stiffness) { if (last_transition != NULL && last_transition->kind == TRANSITION_SPRING) transition_instance->spring.velocity = last_transition_instance->spring.velocity; else transition_instance->spring.velocity = 0.0; transition_instance->spring.est_duration = spring_calculate_duration ( damping, mass, stiffness, last_in, in, FALSE); transition_instance->spring.cache_damping_ratio = damping_ratio; transition_instance->spring.cache_mass = mass; transition_instance->spring.cache_stiffness = stiffness; } if (elapsed >= transition_instance->spring.est_duration) interpolated_number = in; else interpolated_number = spring_oscillate ( damping, mass, stiffness, last_in, in, elapsed, &transition_instance->spring.velocity); } break; default: g_assert_not_reached (); } transition_instance->value = interpolated_number; return interpolated_number; } static double expression_adjust_track_transition (BgeWdgtRenderer *this, double in, double damping_ratio, double mass, double stiffness, double notifier, ValueData *value) { TrackTransitionClosureData *closure_data = NULL; guint idx = 0; gboolean registered = FALSE; double damping = 0.0; g_assert (value->type == G_TYPE_DOUBLE); if (!bge_should_animate (GTK_WIDGET (this))) return in; closure_data = g_hash_table_lookup (this->track_transition_closure_instances, value); g_assert (closure_data != NULL); registered = g_ptr_array_find (this->track_transitions, closure_data, &idx); if (!registered) { g_ptr_array_add (this->track_transitions, track_transition_closure_data_ref (closure_data)); if (this->tick == 0) this->tick = gtk_widget_add_tick_callback ( GTK_WIDGET (this), (GtkTickCallback) tick_cb, NULL, NULL); } damping = damping_ratio * (/* critical damping */ 2 * sqrt (mass * stiffness)); if (!registered || closure_data->target != in || damping_ratio != closure_data->spring.cache_damping_ratio || mass != closure_data->spring.cache_mass || stiffness != closure_data->spring.cache_stiffness) { closure_data->target = in; closure_data->last = closure_data->current; closure_data->elapsed = 0.0; g_timer_start (closure_data->timer); closure_data->spring.est_duration = spring_calculate_duration ( damping, mass, stiffness, closure_data->last, closure_data->target, FALSE); closure_data->spring.cache_damping_ratio = damping_ratio; closure_data->spring.cache_mass = mass; closure_data->spring.cache_stiffness = stiffness; } else closure_data->elapsed = g_timer_elapsed (closure_data->timer, NULL); if (closure_data->elapsed >= closure_data->spring.est_duration) { closure_data->current = closure_data->target; closure_data->last = closure_data->target; } else closure_data->current = spring_oscillate ( damping, mass, stiffness, closure_data->last, closure_data->target, closure_data->elapsed, &closure_data->spring.velocity); return closure_data->current; } static GskTransform * expression_perform_transform (gpointer this, guint n_param_values, const GValue *param_values, TransformCallFunc func) { return func (g_value_dup_boxed (¶m_values[0]), param_values + 1); } static GskPath * expression_perform_path_build (gpointer this, guint n_param_values, const GValue *param_values, ValueData *path_value) { g_autoptr (GskPathBuilder) builder = NULL; const GValue *cursor = 0; g_assert (path_value->kind == VALUE_PATH); builder = gsk_path_builder_new (); cursor = param_values; for (guint i = 0; i < path_value->path.argss->len; i++) { PathBuilderCallFunc func = NULL; GPtrArray *args = NULL; func = g_ptr_array_index (path_value->path.funcs, i); args = g_ptr_array_index (path_value->path.argss, i); func (builder, cursor); cursor += args->len; } return gsk_path_builder_to_path (builder); } static GtkExpression * ensure_expressions (BgeWdgtSpec *self, ValueData *value, StateData *state, gboolean *value_needs_tick) { GtkExpression *cached = NULL; g_autoptr (GtkExpression) expression = NULL; TransitionData *transition = NULL; gboolean need_tick = FALSE; cached = g_hash_table_lookup (state->expressions, value); if (cached != NULL) { if (value_needs_tick != NULL && g_hash_table_contains (state->values_need_tick, value)) *value_needs_tick = TRUE; return gtk_expression_ref (cached); } switch (value->kind) { case VALUE_CONSTANT: expression = gtk_constant_expression_new_for_value (&value->constant.value); break; case VALUE_OBJECT: case VALUE_CHILD: expression = gtk_cclosure_expression_new ( value->type, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_lookup_object), value_data_ref (value), value_data_unref_closure); break; case VALUE_REFERENCE_OBJECT: { GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_reference_notifier), NULL, NULL); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_OBJECT__DOUBLE, 1, (GtkExpression *[]){ notify_expression }, G_CALLBACK (expression_get_reference_object), GSIZE_TO_POINTER (value->type), NULL); } break; case VALUE_ITERATOR: { GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_foreach_instance_notifier), foreach_data_ref (value->iterator.context), foreach_data_unref_closure); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); expression = gtk_cclosure_expression_new ( G_TYPE_UINT, bge_marshal_UINT__DOUBLE, 1, (GtkExpression *[]){ notify_expression }, G_CALLBACK (expression_get_foreach_index), foreach_data_ref (value->iterator.context), foreach_data_unref_closure); if (value->type != G_TYPE_UINT) { GtkExpression *model_expression = NULL; g_assert (g_type_is_a (value->type, G_TYPE_OBJECT)); model_expression = ensure_expressions ( self, value->iterator.context->model, state, &need_tick); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_OBJECT__OBJECT_UINT_DOUBLE, 3, (GtkExpression *[]){ model_expression, expression, notify_expression }, G_CALLBACK (expression_get_model_item), NULL, NULL); } } break; case VALUE_VARIABLE: case VALUE_ALLOCATION_WIDTH: case VALUE_ALLOCATION_HEIGHT: case VALUE_ALLOCATION_TRANSFORM: case VALUE_MEASURE_MINIMUM_WIDTH: case VALUE_MEASURE_NATURAL_WIDTH: case VALUE_MEASURE_MINIMUM_HEIGHT: case VALUE_MEASURE_NATURAL_HEIGHT: { ValueData *holds = NULL; holds = g_hash_table_lookup (state->setters, value); if (holds == NULL) holds = g_hash_table_lookup (self->init_state->setters, value); if (holds != NULL) expression = ensure_expressions ( self, holds, state, &need_tick); else { GValue empty_value = G_VALUE_INIT; g_value_init (&empty_value, value->type); expression = gtk_constant_expression_new_for_value (&empty_value); g_value_unset (&empty_value); } } break; case VALUE_MEASURE_FOR_SIZE: { GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_measure_for_size_notifier), NULL, NULL); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_INT__DOUBLE, 1, (GtkExpression *[]){ notify_expression }, G_CALLBACK (expression_get_measure_for_size), GSIZE_TO_POINTER (value->type), NULL); } break; case VALUE_WIDGET_WIDTH: { GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_widget_width_notifier), NULL, NULL); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_DOUBLE__DOUBLE, 1, (GtkExpression *[]){ notify_expression }, G_CALLBACK (expression_get_widget_width), GSIZE_TO_POINTER (value->type), NULL); } break; case VALUE_WIDGET_HEIGHT: { GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_widget_height_notifier), NULL, NULL); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_DOUBLE__DOUBLE, 1, (GtkExpression *[]){ notify_expression }, G_CALLBACK (expression_get_widget_height), GSIZE_TO_POINTER (value->type), NULL); } break; case VALUE_TICK_TIME: { GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_tick_time_notifier), NULL, NULL); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_DOUBLE__DOUBLE, 1, (GtkExpression *[]){ notify_expression }, G_CALLBACK (expression_get_tick_time), GSIZE_TO_POINTER (value->type), NULL); need_tick = TRUE; } break; case VALUE_COERCION: { expression = ensure_expressions ( self, value->coercion.value, state, &need_tick); expression = gtk_cclosure_expression_new ( value->type, _marshal_DIRECT__ARGS_DIRECT, 1, (GtkExpression *[]){ expression }, G_CALLBACK (expression_coerce_type), GSIZE_TO_POINTER (value->type), NULL); } break; case VALUE_TRACK_TRANSITION: { g_autoptr (BgeWdgtNotifier) notifier_object = NULL; GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; GtkExpression *damping_ratio_expression = NULL; GtkExpression *mass_expression = NULL; GtkExpression *stiffness_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_track_transition_closure_instance_notifier), value_data_ref (value), value_data_unref_closure); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); damping_ratio_expression = ensure_expressions ( self, value->track_transition.spring.damping_ratio, state, &need_tick); mass_expression = ensure_expressions ( self, value->track_transition.spring.mass, state, &need_tick); stiffness_expression = ensure_expressions ( self, value->track_transition.spring.stiffness, state, &need_tick); expression = ensure_expressions ( self, value->track_transition.src, state, &need_tick); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_DOUBLE__DOUBLE_DOUBLE_DOUBLE_DOUBLE_DOUBLE, 5, (GtkExpression *[]){ expression, damping_ratio_expression, mass_expression, stiffness_expression, notify_expression }, G_CALLBACK (expression_adjust_track_transition), value_data_ref (value), value_data_unref_closure); } break; case VALUE_COMPONENT: { g_autoptr (GPtrArray) params = NULL; GClosureMarshal marshal = NULL; GCallback callback = NULL; params = g_ptr_array_new (); for (guint i = 0; i < value->component.params->len; i++) { ValueData *member = NULL; g_autoptr (GtkExpression) member_expr = NULL; member = g_ptr_array_index (value->component.params, i); member_expr = ensure_expressions (self, member, state, &need_tick); g_ptr_array_add (params, g_steal_pointer (&member_expr)); } if (value->type == GRAPHENE_TYPE_POINT) { marshal = bge_marshal_BOXED__DOUBLE_DOUBLE; callback = G_CALLBACK (expression_create_point); } else if (value->type == GRAPHENE_TYPE_SIZE) { marshal = bge_marshal_BOXED__DOUBLE_DOUBLE; callback = G_CALLBACK (expression_create_size); } else if (value->type == GRAPHENE_TYPE_POINT3D) { marshal = bge_marshal_BOXED__DOUBLE_DOUBLE_DOUBLE; callback = G_CALLBACK (expression_create_point3d); } else if (value->type == GRAPHENE_TYPE_RECT) { marshal = bge_marshal_BOXED__DOUBLE_DOUBLE_DOUBLE_DOUBLE; callback = G_CALLBACK (expression_create_rect); } else if (value->type == GSK_TYPE_STROKE) { marshal = bge_marshal_BOXED__DOUBLE_ENUM_ENUM_DOUBLE; callback = G_CALLBACK (expression_create_stroke); } else g_assert_not_reached (); expression = gtk_cclosure_expression_new ( value->type, marshal, params->len, (GtkExpression **) params->pdata, callback, self, NULL); } break; case VALUE_TRANSFORM: { g_autoptr (GPtrArray) params = NULL; g_autoptr (GtkExpression) next_expr = NULL; params = g_ptr_array_new (); next_expr = ensure_expressions (self, value->transform.next, state, &need_tick); g_ptr_array_add (params, g_steal_pointer (&next_expr)); for (guint i = 0; i < value->transform.args->len; i++) { ValueData *arg = NULL; g_autoptr (GtkExpression) arg_expr = NULL; arg = g_ptr_array_index (value->transform.args, i); arg_expr = ensure_expressions (self, arg, state, &need_tick); g_ptr_array_add (params, g_steal_pointer (&arg_expr)); } expression = gtk_cclosure_expression_new ( value->type, _marshal_BOXED__ARGS_DIRECT, params->len, (GtkExpression **) params->pdata, G_CALLBACK (expression_perform_transform), value->transform.func, NULL); } break; case VALUE_PATH: { g_autoptr (GPtrArray) params = NULL; g_autoptr (GtkExpression) next_expr = NULL; params = g_ptr_array_new (); g_assert (value->path.funcs->len == value->path.argss->len); for (guint i = 0; i < value->path.argss->len; i++) { GPtrArray *args = NULL; args = g_ptr_array_index (value->path.argss, i); for (guint j = 0; j < args->len; j++) { ValueData *arg = NULL; g_autoptr (GtkExpression) arg_expr = NULL; arg = g_ptr_array_index (args, j); arg_expr = ensure_expressions (self, arg, state, &need_tick); g_ptr_array_add (params, g_steal_pointer (&arg_expr)); } } expression = gtk_cclosure_expression_new ( value->type, _marshal_BOXED__ARGS_DIRECT, params->len, (GtkExpression **) params->pdata, G_CALLBACK (expression_perform_path_build), value_data_ref (value), value_data_unref_closure); } break; case VALUE_CLOSURE: { g_autoptr (GPtrArray) params = NULL; params = g_ptr_array_new (); for (guint i = 0; i < value->closure.args->len; i++) { ValueData *arg = NULL; g_autoptr (GtkExpression) arg_expr = NULL; arg = g_ptr_array_index (value->closure.args, i); arg_expr = ensure_expressions (self, arg, state, &need_tick); g_ptr_array_add (params, g_steal_pointer (&arg_expr)); } expression = gtk_cclosure_expression_new ( value->type, value->closure.marshal, params->len, (GtkExpression **) params->pdata, value->closure.func, value->closure.user_data, NULL); } break; case VALUE_PROPERTY: { g_autoptr (GtkExpression) object_expression = NULL; /* Mark subproperty values as dependencies as well */ object_expression = ensure_expressions ( self, value->property.object, state, &need_tick); expression = gtk_property_expression_new ( value->property.object->type, g_steal_pointer (&object_expression), value->property.prop_name); } break; default: g_assert_not_reached (); break; } transition = g_hash_table_lookup (state->transitions, value); if (value->type == G_TYPE_DOUBLE && transition != NULL) { GtkExpression *notifier_constant = NULL; GtkExpression *notify_expression = NULL; notifier_constant = gtk_cclosure_expression_new ( BGE_TYPE_WDGT_NOTIFIER, bge_marshal_OBJECT__VOID, 0, (GtkExpression *[]){}, G_CALLBACK (expression_get_transition_instance_notifier), transition_data_ref (transition), transition_data_unref_closure); notify_expression = gtk_property_expression_new_for_pspec ( notifier_constant, notifier_props[NOTIFIER_PROP_VALUE]); expression = gtk_cclosure_expression_new ( value->type, bge_marshal_DOUBLE__DOUBLE_DOUBLE, 2, (GtkExpression *[]){ expression, notify_expression }, G_CALLBACK (expression_adjust_state_transition), transition_data_ref (transition), transition_data_unref_closure); } g_hash_table_replace ( state->expressions, value_data_ref (value), gtk_expression_ref (expression)); if (need_tick) { /* We need to track this so we know not to remove the animation tick callback when transitions are not active */ g_hash_table_replace ( state->values_need_tick, value_data_ref (value), NULL); if (value_needs_tick != NULL) *value_needs_tick = TRUE; } return gtk_expression_ref (expression); } static void set_value (BgeWdgtRenderer *self, StateData *state, StateInstanceData *instance, ValueData *dest, ValueData *src, GPtrArray *watches) { GtkExpression *src_expression = NULL; GtkExpression *dest_expression = NULL; src_expression = g_hash_table_lookup (state->expressions, src); g_assert (src_expression != NULL); dest_expression = g_hash_table_lookup (state->expressions, dest); g_assert (dest_expression != NULL); switch (dest->kind) { case VALUE_PROPERTY: { GtkExpression *dest_obj_expression = NULL; GValue dest_obj_resolved = G_VALUE_INIT; GObject *dest_obj = NULL; dest_obj_expression = g_hash_table_lookup (state->expressions, dest->property.object); g_assert (dest_obj_expression != NULL); gtk_expression_evaluate ( dest_obj_expression, self, &dest_obj_resolved); dest_obj = g_value_get_object (&dest_obj_resolved); if (dest_obj != NULL) { gboolean resolved = FALSE; GValue src_resolved = G_VALUE_INIT; resolved = gtk_expression_evaluate ( src_expression, self, &src_resolved); if (resolved) g_object_set_property ( dest_obj, dest->property.prop_name, &src_resolved); g_value_unset (&src_resolved); } g_value_unset (&dest_obj_resolved); } break; case VALUE_ALLOCATION_WIDTH: case VALUE_ALLOCATION_HEIGHT: case VALUE_ALLOCATION_TRANSFORM: { GtkExpression *dest_widget_expression = NULL; GValue dest_widget_resolved = G_VALUE_INIT; GtkWidget *dest_widget = NULL; dest_widget_expression = g_hash_table_lookup (state->expressions, dest->allocation.widget); g_assert (dest_widget_expression != NULL); gtk_expression_evaluate ( dest_widget_expression, self, &dest_widget_resolved); dest_widget = g_value_get_object (&dest_widget_resolved); if (dest_widget != NULL) { AllocationData *allocation = NULL; allocation = g_hash_table_lookup (self->allocations, dest_widget); if (allocation != NULL) { switch (dest->kind) { case VALUE_ALLOCATION_WIDTH: g_clear_pointer (&allocation->width, value_data_unref); allocation->width = value_data_ref (src); break; case VALUE_ALLOCATION_HEIGHT: g_clear_pointer (&allocation->height, value_data_unref); allocation->height = value_data_ref (src); break; case VALUE_ALLOCATION_TRANSFORM: g_clear_pointer (&allocation->transform, value_data_unref); allocation->transform = value_data_ref (src); break; case VALUE_CHILD: case VALUE_CLOSURE: case VALUE_COERCION: case VALUE_COMPONENT: case VALUE_CONSTANT: case VALUE_ITERATOR: case VALUE_MEASURE_FOR_SIZE: case VALUE_MEASURE_MINIMUM_HEIGHT: case VALUE_MEASURE_MINIMUM_WIDTH: case VALUE_MEASURE_NATURAL_HEIGHT: case VALUE_MEASURE_NATURAL_WIDTH: case VALUE_OBJECT: case VALUE_PATH: case VALUE_PROPERTY: case VALUE_REFERENCE_OBJECT: case VALUE_TICK_TIME: case VALUE_TRACK_TRANSITION: case VALUE_TRANSFORM: case VALUE_VARIABLE: case VALUE_WIDGET_HEIGHT: case VALUE_WIDGET_WIDTH: default: g_assert_not_reached (); } gtk_widget_queue_allocate (GTK_WIDGET (self)); } } g_value_unset (&dest_widget_resolved); } break; case VALUE_MEASURE_MINIMUM_WIDTH: case VALUE_MEASURE_NATURAL_WIDTH: case VALUE_MEASURE_MINIMUM_HEIGHT: case VALUE_MEASURE_NATURAL_HEIGHT: { GValue src_resolved = G_VALUE_INIT; gtk_expression_evaluate ( src_expression, self, &src_resolved); switch (dest->kind) { case VALUE_MEASURE_MINIMUM_WIDTH: self->measure_minimum_width = g_value_get_int (&src_resolved); break; case VALUE_MEASURE_NATURAL_WIDTH: self->measure_natural_width = g_value_get_int (&src_resolved); break; case VALUE_MEASURE_MINIMUM_HEIGHT: self->measure_minimum_height = g_value_get_int (&src_resolved); break; case VALUE_MEASURE_NATURAL_HEIGHT: self->measure_natural_height = g_value_get_int (&src_resolved); break; case VALUE_ALLOCATION_HEIGHT: case VALUE_ALLOCATION_TRANSFORM: case VALUE_ALLOCATION_WIDTH: case VALUE_CHILD: case VALUE_CLOSURE: case VALUE_COERCION: case VALUE_COMPONENT: case VALUE_CONSTANT: case VALUE_ITERATOR: case VALUE_MEASURE_FOR_SIZE: case VALUE_OBJECT: case VALUE_PATH: case VALUE_PROPERTY: case VALUE_REFERENCE_OBJECT: case VALUE_TICK_TIME: case VALUE_TRACK_TRANSITION: case VALUE_TRANSFORM: case VALUE_VARIABLE: case VALUE_WIDGET_HEIGHT: case VALUE_WIDGET_WIDTH: default: g_assert_not_reached (); } g_value_unset (&src_resolved); gtk_widget_queue_resize (GTK_WIDGET (self)); } break; case VALUE_CHILD: case VALUE_CLOSURE: case VALUE_COERCION: case VALUE_COMPONENT: case VALUE_CONSTANT: case VALUE_ITERATOR: case VALUE_MEASURE_FOR_SIZE: case VALUE_OBJECT: case VALUE_PATH: case VALUE_REFERENCE_OBJECT: case VALUE_TICK_TIME: case VALUE_TRACK_TRANSITION: case VALUE_TRANSFORM: case VALUE_VARIABLE: case VALUE_WIDGET_HEIGHT: case VALUE_WIDGET_WIDTH: break; default: g_assert_not_reached (); } if (watches != NULL) { g_autoptr (WatchSetterData) watch_data = NULL; GtkExpressionWatch *watch = NULL; watch_data = watch_setter_data_new (); watch_data->self = self; watch_data->state = state_data_ref (state); watch_data->instance = state_instance_data_ref (instance); watch_data->dest = value_data_ref (dest); watch_data->src = value_data_ref (src); watch = gtk_expression_watch ( src_expression, self, (GtkExpressionNotify) reset_setter, watch_setter_data_ref (watch_data), watch_setter_data_unref); g_ptr_array_add (watches, watch); } } static int resolve_value_int (BgeWdgtRenderer *self, ValueData *value, StateData *state) { GtkExpression *expression = NULL; GValue resolved = G_VALUE_INIT; int ret = 0.0; expression = g_hash_table_lookup (state->expressions, value); g_assert (expression != NULL); gtk_expression_evaluate ( expression, self, &resolved); ret = g_value_get_int (&resolved); g_value_unset (&resolved); return ret; } static double resolve_value_double (BgeWdgtRenderer *self, ValueData *value, StateData *state) { GtkExpression *expression = NULL; GValue resolved = G_VALUE_INIT; double ret = 0.0; expression = g_hash_table_lookup (state->expressions, value); g_assert (expression != NULL); gtk_expression_evaluate ( expression, self, &resolved); ret = g_value_get_double (&resolved); g_value_unset (&resolved); return ret; } static gint resolve_value_enum (BgeWdgtRenderer *self, ValueData *value, StateData *state) { GtkExpression *expression = NULL; GValue resolved = G_VALUE_INIT; gint ret = 0; expression = g_hash_table_lookup (state->expressions, value); g_assert (expression != NULL); gtk_expression_evaluate ( expression, self, &resolved); ret = g_value_get_enum (&resolved); g_value_unset (&resolved); return ret; } static gpointer resolve_value_boxed_dup (BgeWdgtRenderer *self, ValueData *value, StateData *state) { GtkExpression *expression = NULL; GValue resolved = G_VALUE_INIT; gpointer ret = NULL; expression = g_hash_table_lookup (state->expressions, value); g_assert (expression != NULL); gtk_expression_evaluate ( expression, self, &resolved); ret = g_value_dup_boxed (&resolved); g_value_unset (&resolved); return ret; } static gpointer resolve_value_object_dup (BgeWdgtRenderer *self, ValueData *value, StateData *state) { GtkExpression *expression = NULL; GValue resolved = G_VALUE_INIT; gpointer ret = NULL; expression = g_hash_table_lookup (state->expressions, value); g_assert (expression != NULL); gtk_expression_evaluate ( expression, self, &resolved); ret = g_value_dup_object (&resolved); g_value_unset (&resolved); return ret; } static void discard_binding (gpointer ptr) { GBinding *binding = ptr; g_binding_unbind (binding); g_object_unref (binding); } static void discard_watch (gpointer ptr) { GtkExpressionWatch *watch = ptr; /* unrefs for us */ gtk_expression_watch_unwatch (watch); } static void prop_change_queue_draw (BgeWdgtRenderer *self) { gtk_widget_queue_draw (GTK_WIDGET (self)); } static void reset_setter (WatchSetterData *data) { BgeWdgtRenderer *self = data->self; /* Active state watchers are "overlayed" over the permanent init state. Thus, if this is the init state and the active state also sets this value, we should avoid touching it */ if (self->active_state != NULL /* ? */ && data->state == self->spec->init_state && g_hash_table_contains ( self->active_state->setters, data->dest)) return; set_value ( data->self, data->state, data->instance, data->dest, data->src, NULL); } static GHashTable *renderer_resource_cache = NULL; // static void // cache_weak_notify (char *resource, // GObject *where_the_object_was) // { // g_hash_table_remove (renderer_resource_cache, resource); // g_free (resource); // } static void wdgt_renderer_set_from_resource (BgeWdgtRenderer *self, const char *resource) { g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; BgeWdgtSpec *cached = NULL; gsize buffer_size = 0; gconstpointer buffer = NULL; g_autoptr (BgeWdgtSpec) spec = NULL; if (g_once_init_enter_pointer (&renderer_resource_cache)) { GHashTable *tmp = NULL; tmp = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, g_object_unref); g_once_init_leave_pointer (&renderer_resource_cache, tmp); } cached = g_hash_table_lookup ( renderer_resource_cache, resource); if (cached == NULL) { bytes = g_resources_lookup_data ( resource, G_RESOURCE_LOOKUP_FLAGS_NONE, &local_error); if (bytes == NULL) { g_critical ("failed to set renderer spec from resource: %s", local_error->message); bge_wdgt_renderer_set_spec (self, NULL); return; } buffer = g_bytes_get_data (bytes, &buffer_size); spec = bge_wdgt_spec_new_for_string (buffer, &local_error); if (spec == NULL) { g_critical ("failed to set renderer spec from resource %s: %s", resource, local_error->message); bge_wdgt_renderer_set_spec (self, NULL); return; } g_hash_table_replace ( renderer_resource_cache, g_strdup (resource), g_object_ref (spec)); // g_object_weak_ref ( // G_OBJECT (spec), // (GWeakNotify) cache_weak_notify, // g_strdup (resource)); cached = spec; } bge_wdgt_renderer_set_spec (self, cached); } /* End of bge-wdgt-spec.c */ bazaar-org-bazaar-48f93f4/bge/wdgt/bge-wdgt-spec.h000066400000000000000000000034141524000504200216430ustar00rootroot00000000000000/* bge-wdgt-spec.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #ifndef BGE_INSIDE #error "Only can be included directly." #endif G_BEGIN_DECLS #define BGE_TYPE_WDGT_SPEC (bge_wdgt_spec_get_type ()) G_DECLARE_FINAL_TYPE (BgeWdgtSpec, bge_wdgt_spec, BGE, WDGT_SPEC, GObject) BGE_AVAILABLE_IN_ALL BgeWdgtSpec * bge_wdgt_spec_new (void); BGE_AVAILABLE_IN_ALL BgeWdgtSpec * bge_wdgt_spec_new_for_string (const char *string, GError **error); BGE_AVAILABLE_IN_ALL BgeWdgtSpec * bge_wdgt_spec_new_for_resource (const char *resource, GError **error); BGE_AVAILABLE_IN_ALL const char * bge_wdgt_spec_get_name (BgeWdgtSpec *self); BGE_AVAILABLE_IN_ALL void bge_wdgt_spec_set_name (BgeWdgtSpec *self, const char *name); BGE_AVAILABLE_IN_ALL void bge_wdgt_spec_set_name_take (BgeWdgtSpec *self, char *name); #define bge_wdgt_spec_set_name_take_printf(self, ...) bge_wdgt_spec_set_name_take (self, g_strdup_printf (__VA_ARGS__)) G_END_DECLS /* End of bge-wdgt-spec.h */ bazaar-org-bazaar-48f93f4/bge/wdgt/fmt/000077500000000000000000000000001524000504200176265ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/bge/wdgt/fmt/meson.build000066400000000000000000000000461524000504200217700ustar00rootroot00000000000000bge_sources += files( 'parser.c', ) bazaar-org-bazaar-48f93f4/bge/wdgt/fmt/parser.c000066400000000000000000003302731524000504200212760ustar00rootroot00000000000000/* parser.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BGE::WDGT-PARSE" #include #include #include "../bge-wdgt-spec-private.h" #include "../util/marshal.h" #include "bge-marshalers.h" #include "parser.h" #include "util.h" #define IS_EOF(_p) ((_p) == NULL || *(_p) == '\0') #define SINGLE_CHAR_TOKENS "{}()=:;," #define EVAL_SINGLE_CHAR_TOKENS "#(),+-*/^%" #define STR_DEFARRAY "defarray" #define STR_DEFWIDGET "defwidget" #define STR_FOREACH "%FOREACH" #define STR_VARIABLE "var" #define STR_REFERENCE "reference" #define STR_INIT "init" #define STR_STATE "state" #define STR_DEFAULT_STATE "state-default" #define STR_SET "set" #define STR_TRANSITION "transition" #define STR_TRANSITION_SPRING "transition-spring" #define STR_ALLOCATE "allocate" #define STR_MEASURE "measure" #define STR_SNAPSHOT "snapshot" typedef enum { TOKEN_PARSE_DEFAULT = 0, TOKEN_PARSE_QUOTED = 1 << 0, } TokenParseFlags; typedef enum { ARGS_PARSE_PARENS = 0, ARGS_PARSE_LEFT_ASSIGN, ARGS_PARSE_RIGHT_ASSIGN, } ArgsParseKind; typedef enum { OPERATOR_ADD = 0, OPERATOR_SUBTRACT, OPERATOR_MULTIPLY, OPERATOR_DIVIDE, OPERATOR_MODULUS, OPERATOR_POWER, } Operator; static const int operator_precedence[] = { [OPERATOR_ADD] = 0, [OPERATOR_SUBTRACT] = 0, [OPERATOR_MULTIPLY] = 1, [OPERATOR_DIVIDE] = 1, [OPERATOR_MODULUS] = 1, [OPERATOR_POWER] = 2, }; typedef struct { Operator op; guint pos; } EvalOperator; BGE_DEFINE_DATA ( eval_closure, EvalClosure, { GArray *ops; gdouble *workbuf0; gdouble *workbuf1; }, BGE_RELEASE_DATA (ops, g_array_unref); BGE_RELEASE_DATA (workbuf0, g_free); BGE_RELEASE_DATA (workbuf1, g_free)); static BgeWdgtSpec * parse_string_inner (const char *string, guint *line, guint *column, GError **error); static const char * parse_widget_block (const char *p, BgeWdgtSpec *spec, GHashTable *macro_arrays, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, GError **error); static const char * parse_snapshot_block (const char *p, BgeWdgtSpec *spec, const char *state, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, GError **error); static const char * parse_eval (const char *p, BgeWdgtSpec *spec, const char *state, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, char **value_out, GError **error); static const char * parse_args (const char *p, BgeWdgtSpec *spec, const char *state, const char *enclosing_object, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, const char *const *destinations, GType destinations_types[], guint n_destinations, char ***values_out, GType **types_out, guint *n_out, ArgsParseKind parse_kind, GError **error); static char * parse_token_fundamental (const char *token, BgeWdgtSpec *spec, guint *n_anon_vals, guint *line, guint *column, GError **error); static char * consume_token (const char **pp, const char *single_chars, TokenParseFlags flags, gboolean *was_quoted, GHashTable *macro_replacements, guint *line, guint *column, GError **error); static char * consume_token_inner (const char **pp, const char *single_chars, TokenParseFlags flags, gboolean *was_quoted, guint *line, guint *column, GError **error); static gdouble eval_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data); static char * make_object_property_name (const char *object, const char *property, guint n); static char * make_widget_allocation_name (const char *widget, guint n); static char * make_widget_measurement_name (guint n); static char * make_anon_name (guint n); static gint cmp_operator (EvalOperator *a, EvalOperator *b); BgeWdgtSpec * bge_wdgt_parse_string (const char *string, GError **error) { g_autoptr (GError) local_error = NULL; guint line = 0; guint column = 0; g_autoptr (BgeWdgtSpec) spec = NULL; g_return_val_if_fail (string != NULL, FALSE); spec = parse_string_inner (string, &line, &column, &local_error); if (spec == NULL) { g_set_error ( error, local_error->domain, local_error->code, "wdgt parser error in string input " "at line:%u, offset:%u : %s", line, column, local_error->message); return NULL; } return g_steal_pointer (&spec); } static BgeWdgtSpec * parse_string_inner (const char *string, guint *line, guint *column, GError **error) { g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autoptr (BgeWdgtSpec) spec = NULL; g_autoptr (GHashTable) macro_arrays = NULL; g_autoptr (GHashTable) macro_replacements = NULL; guint n_anon_vals = 0; g_autoptr (GHashTable) type_hints = NULL; spec = bge_wdgt_spec_new (); macro_arrays = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_ptr_array_unref); macro_replacements = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, g_free); type_hints = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, NULL); #define RETURN_ERROR_UNLESS(_cond) \ G_STMT_START \ { \ if (!(_cond)) \ { \ g_set_error ( \ error, \ G_IO_ERROR, \ G_IO_ERROR_UNKNOWN, \ "%s", \ local_error != NULL \ ? local_error->message \ : "???"); \ return NULL; \ } \ } \ G_STMT_END #define EXPECT_TOKEN(_string, _token) \ G_STMT_START \ { \ if (g_strcmp0 ((_string), (_token)) != 0) \ { \ g_set_error ( \ error, \ G_IO_ERROR, \ G_IO_ERROR_UNKNOWN, \ "expected token \"%s\", got \"%s\"", \ (_token), (_string)); \ return NULL; \ } \ } \ G_STMT_END #define UNEXPECTED_TOKEN(_token) \ G_STMT_START \ { \ g_set_error ( \ error, \ G_IO_ERROR, \ G_IO_ERROR_UNKNOWN, \ "unexpected token \"%s\"", (_token)); \ return NULL; \ } \ G_STMT_END result = bge_wdgt_spec_add_measure_for_size_source_value ( spec, "%for-size%", &local_error); RETURN_ERROR_UNLESS (result); g_hash_table_replace ( type_hints, g_strdup ("%for-size%"), GSIZE_TO_POINTER (G_TYPE_INT)); result = bge_wdgt_spec_add_widget_width_source_value ( spec, "%width%", &local_error); RETURN_ERROR_UNLESS (result); g_hash_table_replace ( type_hints, g_strdup ("%width%"), GSIZE_TO_POINTER (G_TYPE_INT)); result = bge_wdgt_spec_add_widget_height_source_value ( spec, "%height%", &local_error); RETURN_ERROR_UNLESS (result); g_hash_table_replace ( type_hints, g_strdup ("%height%"), GSIZE_TO_POINTER (G_TYPE_INT)); result = bge_wdgt_spec_add_tick_time_source_value ( spec, "%tick%", &local_error); RETURN_ERROR_UNLESS (result); g_hash_table_replace ( type_hints, g_strdup ("%tick%"), GSIZE_TO_POINTER (G_TYPE_DOUBLE)); for (const char *p = string; !IS_EOF (p);) { g_autofree char *token = NULL; token = consume_token ( &p, SINGLE_CHAR_TOKENS, TOKEN_PARSE_DEFAULT, NULL, NULL, line, column, NULL); if (token == NULL) break; #define GET_TOKEN_FULL(_token_out, _flags, _single_chars, _was_quoted) \ G_STMT_START \ { \ g_clear_pointer ((_token_out), g_free); \ *(_token_out) = consume_token ( \ &p, \ (_single_chars), \ (_flags), \ (_was_quoted), \ macro_replacements, \ line, column, \ &local_error); \ RETURN_ERROR_UNLESS (*(_token_out) != NULL); \ } \ G_STMT_END #define GET_TOKEN(_token_out, _flags) \ GET_TOKEN_FULL (_token_out, _flags, SINGLE_CHAR_TOKENS, NULL) #define GET_TOKEN_EXPECT(_token_out, _flags, _expect) \ G_STMT_START \ { \ GET_TOKEN ((_token_out), (_flags)); \ EXPECT_TOKEN (*(_token_out), (_expect)); \ } \ G_STMT_END if (g_strcmp0 (token, STR_DEFWIDGET) == 0) { g_autofree char *widget_name = NULL; GET_TOKEN (&widget_name, TOKEN_PARSE_QUOTED); bge_wdgt_spec_set_name (spec, widget_name); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "{"); p = parse_widget_block ( p, spec, macro_arrays, macro_replacements, &n_anon_vals, type_hints, line, column, &local_error); RETURN_ERROR_UNLESS (p != NULL); } else if (g_strcmp0 (token, STR_DEFARRAY) == 0) { g_autofree char *array_name = NULL; guint n_elements = 0; g_auto (GStrv) elements = NULL; g_autoptr (GPtrArray) array = NULL; GET_TOKEN (&array_name, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, NULL, NULL, macro_replacements, &n_anon_vals, type_hints, line, column, NULL, NULL, 0, &elements, NULL, &n_elements, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); array = g_ptr_array_new_take_null_terminated ( (gpointer *) g_steal_pointer (&elements), g_free); g_hash_table_replace ( macro_arrays, g_steal_pointer (&array_name), g_steal_pointer (&array)); } else UNEXPECTED_TOKEN (token); } return g_steal_pointer (&spec); } static const char * parse_widget_block (const char *p, BgeWdgtSpec *spec, GHashTable *macro_arrays, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, GError **error) { g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autofree char *token = NULL; for (;;) { GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (token, "}") == 0) return p; else if (g_strcmp0 (token, STR_FOREACH) == 0) { g_autofree char *var_name = NULL; g_autofree char *iterator_name = NULL; g_autofree char *iterator_paste_name = NULL; g_autofree char *array_name = NULL; GPtrArray *array = NULL; const char *fixed_p = NULL; GET_TOKEN (&var_name, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ","); GET_TOKEN (&iterator_name, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ","); GET_TOKEN (&iterator_paste_name, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "IN"); GET_TOKEN (&array_name, TOKEN_PARSE_DEFAULT); array = g_hash_table_lookup (macro_arrays, array_name); if (array == NULL) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "macro array \"%s\" is undefined", array_name); return NULL; } GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "{"); fixed_p = p; for (guint i = 0; i < array->len; i++) { const char *element = NULL; g_autofree char *iterator = NULL; g_autofree char *iterator_paste = NULL; GValue iter_value = G_VALUE_INIT; element = g_ptr_array_index (array, i); g_hash_table_replace ( macro_replacements, g_strdup (var_name), g_strdup (element)); iterator = make_anon_name ((*n_anon_vals)++); g_value_set_uint (g_value_init (&iter_value, G_TYPE_UINT), i); result = bge_wdgt_spec_add_constant_source_value ( spec, iterator, &iter_value, &local_error); g_value_unset (&iter_value); RETURN_ERROR_UNLESS (result); g_hash_table_replace ( macro_replacements, g_strdup (iterator_name), g_steal_pointer (&iterator)); iterator_paste = g_strdup_printf ("%u", i); g_hash_table_replace ( macro_replacements, g_strdup (iterator_paste_name), g_steal_pointer (&iterator_paste)); p = parse_widget_block ( fixed_p, spec, macro_arrays, macro_replacements, n_anon_vals, type_hints, line, column, &local_error); RETURN_ERROR_UNLESS (p != NULL); } g_hash_table_remove (macro_replacements, var_name); g_hash_table_remove (macro_replacements, iterator_name); g_hash_table_remove (macro_replacements, iterator_paste_name); } else if (g_strcmp0 (token, STR_VARIABLE) == 0) { g_autofree char *name = NULL; g_autofree char *type_string = NULL; GType type = 0; GET_TOKEN (&name, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ":"); GET_TOKEN (&type_string, TOKEN_PARSE_QUOTED); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ";"); type = g_type_from_name (type_string); result = bge_wdgt_spec_add_variable_value ( spec, type, name, &local_error); RETURN_ERROR_UNLESS (result); g_hash_table_replace (type_hints, g_steal_pointer (&name), GSIZE_TO_POINTER (type)); } else if (g_strcmp0 (token, STR_REFERENCE) == 0) { g_autofree char *name = NULL; g_autofree char *type_string = NULL; GType type = 0; GET_TOKEN (&name, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ":"); GET_TOKEN (&type_string, TOKEN_PARSE_QUOTED); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ";"); type = g_type_from_name (type_string); result = bge_wdgt_spec_add_reference_object_value ( spec, type, name, &local_error); RETURN_ERROR_UNLESS (result); g_hash_table_replace (type_hints, g_steal_pointer (&name), GSIZE_TO_POINTER (type)); } else if (g_strcmp0 (token, STR_INIT) == 0 || g_strcmp0 (token, STR_STATE) == 0 || g_strcmp0 (token, STR_DEFAULT_STATE) == 0) { g_autofree char *state_name = NULL; if (g_strcmp0 (token, STR_INIT) != 0) { GET_TOKEN (&state_name, TOKEN_PARSE_QUOTED); result = bge_wdgt_spec_add_state ( spec, state_name, g_strcmp0 (token, STR_DEFAULT_STATE) == 0, &local_error); /* TODO: allow states to be redefined for macros, so they are just concatenated */ g_clear_error (&local_error); // RETURN_ERROR_UNLESS (result); } GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "{"); for (;;) { GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (token, "}") == 0) break; else if (g_strcmp0 (token, STR_SNAPSHOT) == 0) { GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "{"); p = parse_snapshot_block (p, spec, state_name, macro_replacements, n_anon_vals, type_hints, line, column, &local_error); RETURN_ERROR_UNLESS (p != NULL); } else if (g_strcmp0 (token, STR_SET) == 0) { guint n_dest_values = 0; g_auto (GStrv) dest_values = NULL; g_autofree GType *dest_types = NULL; guint n_src_values = 0; g_auto (GStrv) src_values = NULL; p = parse_args (p, spec, state_name, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, NULL, 0, &dest_values, &dest_types, &n_dest_values, ARGS_PARSE_LEFT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_dest_values == 0) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Left assignment needs at least one argument"); return NULL; } p = parse_args (p, spec, state_name, NULL, macro_replacements, n_anon_vals, type_hints, line, column, (const char *const *) dest_values, dest_types, n_dest_values, &src_values, NULL, &n_src_values, ARGS_PARSE_RIGHT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_src_values != n_dest_values) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Right assignment needs %d argument(s) " "to match the left side", n_dest_values); return NULL; } for (guint i = 0; i < n_dest_values; i++) { result = bge_wdgt_spec_set_value ( spec, state_name, dest_values[i], src_values[i], &local_error); RETURN_ERROR_UNLESS (result); } } else if (g_strcmp0 (token, STR_TRANSITION) == 0) { g_autofree char *transition_value = NULL; guint n_spec_values = 0; g_auto (GStrv) spec_values = NULL; GET_TOKEN (&transition_value, TOKEN_PARSE_DEFAULT); p = parse_args (p, spec, state_name, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_DOUBLE, BGE_TYPE_EASING }, 2, &spec_values, NULL, &n_spec_values, ARGS_PARSE_RIGHT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_spec_values != 2) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "transition spec needs 2 arguments " "(animation length in seconds, easing type), got %u", n_spec_values); return NULL; } result = bge_wdgt_spec_transition_value ( spec, state_name, transition_value, spec_values[0], spec_values[1], &local_error); RETURN_ERROR_UNLESS (result); } else if (g_strcmp0 (token, STR_TRANSITION_SPRING) == 0) { g_autofree char *transition_value = NULL; guint n_spec_values = 0; g_auto (GStrv) spec_values = NULL; GET_TOKEN (&transition_value, TOKEN_PARSE_DEFAULT); p = parse_args (p, spec, state_name, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE }, 3, &spec_values, NULL, &n_spec_values, ARGS_PARSE_RIGHT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_spec_values != 3) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "spring transition spec needs 3 arguments " "(damping-ratio, mass, stiffness), got %u", n_spec_values); return NULL; } result = bge_wdgt_spec_transition_value_spring ( spec, state_name, transition_value, spec_values[0], spec_values[1], spec_values[2], &local_error); RETURN_ERROR_UNLESS (result); } else if (g_strcmp0 (token, STR_ALLOCATE) == 0) { g_autofree char *child_value = NULL; guint n_allocation_values = 0; g_auto (GStrv) allocation_values = NULL; GET_TOKEN (&child_value, TOKEN_PARSE_DEFAULT); p = parse_args (p, spec, state_name, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_INT, G_TYPE_INT, GSK_TYPE_TRANSFORM }, 3, &allocation_values, NULL, &n_allocation_values, ARGS_PARSE_RIGHT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_allocation_values != 2 && n_allocation_values != 3) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "allocation needs 2 or 3 values, a width " "and height and one transform, got %u", n_allocation_values); return NULL; } for (guint i = 0; i < n_allocation_values; i++) { g_autofree char *allocation_key = NULL; allocation_key = make_widget_allocation_name (child_value, (*n_anon_vals)++); switch (i) { case 0: result = bge_wdgt_spec_add_allocation_width_value ( spec, allocation_key, child_value, &local_error); break; case 1: result = bge_wdgt_spec_add_allocation_height_value ( spec, allocation_key, child_value, &local_error); break; case 2: result = bge_wdgt_spec_add_allocation_transform_value ( spec, allocation_key, child_value, &local_error); break; default: g_assert_not_reached (); } RETURN_ERROR_UNLESS (result); result = bge_wdgt_spec_set_value ( spec, state_name, allocation_key, allocation_values[i], &local_error); RETURN_ERROR_UNLESS (result); } } else if (g_strcmp0 (token, STR_MEASURE) == 0) { guint n_measurement_values = 0; g_auto (GStrv) measurement_values = NULL; p = parse_args (p, spec, state_name, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT }, 4, &measurement_values, NULL, &n_measurement_values, ARGS_PARSE_RIGHT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_measurement_values != 4) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "measurement needs 4 values, a " "minimum width, " "natural width, " "minimum height, " "and " "natural height, " "got %u", n_measurement_values); return NULL; } for (guint i = 0; i < n_measurement_values; i++) { g_autofree char *measurement_key = NULL; measurement_key = make_widget_measurement_name ((*n_anon_vals)++); switch (i) { case 0: result = bge_wdgt_spec_add_measure_value ( spec, measurement_key, BGE_WDGT_MEASURE_MINIMUM_WIDTH, &local_error); break; case 1: result = bge_wdgt_spec_add_measure_value ( spec, measurement_key, BGE_WDGT_MEASURE_NATURAL_WIDTH, &local_error); break; case 2: result = bge_wdgt_spec_add_measure_value ( spec, measurement_key, BGE_WDGT_MEASURE_MINIMUM_HEIGHT, &local_error); break; case 3: result = bge_wdgt_spec_add_measure_value ( spec, measurement_key, BGE_WDGT_MEASURE_NATURAL_HEIGHT, &local_error); break; default: g_assert_not_reached (); } RETURN_ERROR_UNLESS (result); result = bge_wdgt_spec_set_value ( spec, state_name, measurement_key, measurement_values[i], &local_error); RETURN_ERROR_UNLESS (result); } } else UNEXPECTED_TOKEN (token); } } else UNEXPECTED_TOKEN (token); } return p; } static const char * parse_snapshot_block (const char *p, BgeWdgtSpec *spec, const char *state, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, GError **error) { g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autofree char *token = NULL; for (;;) { g_autofree char *action = NULL; BgeWdgtSnapshotInstrKind kind = 0; g_autofree char *instr = NULL; guint n_args = 0; g_auto (GStrv) args = NULL; guint n_pops = 0; GET_TOKEN (&action, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (action, "}") == 0) break; else if (g_strcmp0 (action, "foreach") == 0) { g_autofree char *var = NULL; g_autofree char *element_type_string = NULL; g_autofree char *idx_var = NULL; g_autofree char *model = NULL; GType element_type = G_TYPE_INVALID; GET_TOKEN (&var, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ":"); GET_TOKEN (&element_type_string, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ","); GET_TOKEN (&idx_var, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "in"); GET_TOKEN (&model, TOKEN_PARSE_DEFAULT); element_type = g_type_from_name (element_type_string); result = bge_wdgt_spec_push_foreach ( spec, model, var, idx_var, element_type, &local_error); RETURN_ERROR_UNLESS (result); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "{"); p = parse_snapshot_block (p, spec, state, macro_replacements, n_anon_vals, type_hints, line, column, &local_error); RETURN_ERROR_UNLESS (p != NULL); bge_wdgt_spec_pop_foreach (spec); continue; } else if (g_strcmp0 (action, "save") == 0) kind = BGE_WDGT_SNAPSHOT_INSTR_SAVE; else if (g_strcmp0 (action, "with") == 0) kind = BGE_WDGT_SNAPSHOT_INSTR_PUSH; else if (g_strcmp0 (action, "add") == 0) kind = BGE_WDGT_SNAPSHOT_INSTR_APPEND; else if (g_strcmp0 (action, "move") == 0) kind = BGE_WDGT_SNAPSHOT_INSTR_TRANSFORM; else if (g_strcmp0 (action, "do-child") == 0) kind = BGE_WDGT_SNAPSHOT_INSTR_SNAPSHOT_CHILD; else UNEXPECTED_TOKEN (action); if (kind == BGE_WDGT_SNAPSHOT_INSTR_SAVE) { result = bge_wdgt_spec_append_snapshot_instr ( spec, state, BGE_WDGT_SNAPSHOT_INSTR_SAVE, "save", NULL, 0, NULL, &local_error); RETURN_ERROR_UNLESS (result); } else if (kind == BGE_WDGT_SNAPSHOT_INSTR_SNAPSHOT_CHILD) { p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, NULL, 0, &args, NULL, &n_args, ARGS_PARSE_RIGHT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); result = bge_wdgt_spec_append_snapshot_instr ( spec, state, BGE_WDGT_SNAPSHOT_INSTR_SNAPSHOT_CHILD, "do-child", (const char *const *) args, n_args, NULL, &local_error); RETURN_ERROR_UNLESS (result); } else { GET_TOKEN (&instr, TOKEN_PARSE_DEFAULT); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, NULL, 0, &args, NULL, &n_args, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); result = bge_wdgt_spec_append_snapshot_instr ( spec, state, kind, instr, (const char *const *) args, n_args, &n_pops, &local_error); RETURN_ERROR_UNLESS (result); } if (kind == BGE_WDGT_SNAPSHOT_INSTR_APPEND || kind == BGE_WDGT_SNAPSHOT_INSTR_TRANSFORM) GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ";"); else if (kind == BGE_WDGT_SNAPSHOT_INSTR_PUSH) { for (guint i = 0; i < n_pops; i++) { if (i > 0) GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "then"); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "{"); p = parse_snapshot_block (p, spec, state, macro_replacements, n_anon_vals, type_hints, line, column, &local_error); RETURN_ERROR_UNLESS (p != NULL); result = bge_wdgt_spec_append_snapshot_instr ( spec, state, BGE_WDGT_SNAPSHOT_INSTR_POP, "pop", NULL, 0, NULL, &local_error); RETURN_ERROR_UNLESS (result); } } else if (kind == BGE_WDGT_SNAPSHOT_INSTR_SAVE) { GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "{"); p = parse_snapshot_block (p, spec, state, macro_replacements, n_anon_vals, type_hints, line, column, &local_error); RETURN_ERROR_UNLESS (p != NULL); result = bge_wdgt_spec_append_snapshot_instr ( spec, state, BGE_WDGT_SNAPSHOT_INSTR_RESTORE, "restore", NULL, 0, NULL, &local_error); RETURN_ERROR_UNLESS (result); } } return p; } static gdouble floor_closure (gpointer this, gdouble x, gpointer data) { return floor (x); } static gdouble ceil_closure (gpointer this, gdouble x, gpointer data) { return ceil (x); } static gdouble sin_closure (gpointer this, gdouble x, gpointer data) { return sin (x); } static gdouble cos_closure (gpointer this, gdouble x, gpointer data) { return cos (x); } static const char * parse_eval (const char *p, BgeWdgtSpec *spec, const char *state, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, char **value_out, GError **error) { g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autofree char *token = NULL; g_autoptr (GPtrArray) values = NULL; g_autoptr (GArray) ops = NULL; g_autoptr (GArray) value_types = NULL; g_autofree char *key = NULL; g_autoptr (EvalClosureData) data = NULL; values = g_ptr_array_new_with_free_func (g_free); ops = g_array_new (FALSE, FALSE, sizeof (EvalOperator)); value_types = g_array_new (FALSE, FALSE, sizeof (GType)); #define GET_TOKEN_EVAL(_token_out, _flags) \ GET_TOKEN_FULL (_token_out, _flags, EVAL_SINGLE_CHAR_TOKENS, NULL) #define GET_TOKEN_EVAL_EXPECT(_token_out, _flags, _expect) \ G_STMT_START \ { \ GET_TOKEN_EVAL ((_token_out), (_flags)); \ EXPECT_TOKEN (*(_token_out), (_expect)); \ } \ G_STMT_END for (gboolean apply_negative = FALSE;;) { g_autofree char *value = NULL; Operator op = -1; gboolean expected_value = FALSE; GET_TOKEN_EVAL (&token, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (token, ")") == 0) break; else if (g_strcmp0 (token, "(") == 0) { p = parse_eval (p, spec, state, macro_replacements, n_anon_vals, type_hints, line, column, &value, &local_error); RETURN_ERROR_UNLESS (p != NULL); } else if (g_strcmp0 (token, "#") == 0) { g_auto (GStrv) escape_args = NULL; guint n_escape_args = 0; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_DOUBLE }, 1, &escape_args, NULL, &n_escape_args, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_escape_args != 1) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "evaluation escape " "needs a single argument"); return NULL; } value = g_strdup (escape_args[0]); } else if (g_strcmp0 (token, "ceil") == 0 || g_strcmp0 (token, "floor") == 0 || g_strcmp0 (token, "sin") == 0 || g_strcmp0 (token, "cos") == 0) { GCallback cb = NULL; g_autofree char *arg = NULL; g_autofree char *math_func_key = NULL; if (g_strcmp0 (token, "ceil") == 0) cb = G_CALLBACK (ceil_closure); else if (g_strcmp0 (token, "floor") == 0) cb = G_CALLBACK (floor_closure); else if (g_strcmp0 (token, "sin") == 0) cb = G_CALLBACK (sin_closure); else if (g_strcmp0 (token, "cos") == 0) cb = G_CALLBACK (cos_closure); GET_TOKEN_EVAL_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_eval (p, spec, state, macro_replacements, n_anon_vals, type_hints, line, column, &arg, &local_error); RETURN_ERROR_UNLESS (p != NULL); math_func_key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_cclosure_source_value ( spec, math_func_key, G_TYPE_DOUBLE, bge_marshal_DOUBLE__DOUBLE, cb, (const char *const[]){ arg }, (GType[]){ G_TYPE_DOUBLE }, 1, NULL, NULL, &local_error); RETURN_ERROR_UNLESS (result); value = g_steal_pointer (&math_func_key); } else if (g_strcmp0 (token, "+") == 0) op = OPERATOR_ADD; else if (g_strcmp0 (token, "-") == 0) op = OPERATOR_SUBTRACT; else if (g_strcmp0 (token, "*") == 0) op = OPERATOR_MULTIPLY; else if (g_strcmp0 (token, "/") == 0) op = OPERATOR_DIVIDE; else if (g_strcmp0 (token, "%") == 0) op = OPERATOR_MODULUS; else if (g_strcmp0 (token, "^") == 0) op = OPERATOR_POWER; else { value = parse_token_fundamental ( token, spec, n_anon_vals, line, column, &local_error); RETURN_ERROR_UNLESS (value != NULL); } expected_value = values->len == ops->len; if (value != NULL) { GType type_double = G_TYPE_DOUBLE; if (!expected_value) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Expected operator, got \"%s\"", token); return NULL; } if (apply_negative) { GValue gvalue = G_VALUE_INIT; g_autofree char *negative_key = NULL; EvalOperator append = { 0 }; g_value_set_double (g_value_init (&gvalue, G_TYPE_DOUBLE), -1.0); negative_key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_constant_source_value ( spec, negative_key, &gvalue, &local_error); g_value_unset (&gvalue); RETURN_ERROR_UNLESS (result); g_ptr_array_add (values, g_steal_pointer (&negative_key)); g_array_append_val (value_types, type_double); append.op = OPERATOR_MULTIPLY; append.pos = ops->len; g_array_append_val (ops, append); apply_negative = FALSE; } g_ptr_array_add (values, g_steal_pointer (&value)); g_array_append_val (value_types, type_double); } else if (op >= 0) { EvalOperator append = { 0 }; if (expected_value) { if (op == OPERATOR_SUBTRACT) apply_negative = !apply_negative; else if (op != OPERATOR_ADD) /* Allow adding `+` in front of numbers for alignment with negatives etc */ { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Expected value, got \"%s\"", token); return NULL; } } else { append.op = op; append.pos = ops->len; g_array_append_val (ops, append); } } } if (values->len == 0) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Empty evaluation block"); return NULL; } if (ops->len != values->len - 1) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Invalid syntax in evaluation block"); return NULL; } if (values->len == 1) { *value_out = g_ptr_array_steal_index (values, 0); return p; } g_array_sort (ops, (GCompareFunc) cmp_operator); data = eval_closure_data_new (); data->ops = g_array_ref (ops); data->workbuf0 = g_malloc0_n (values->len, sizeof (gdouble)); data->workbuf1 = g_malloc0_n (values->len, sizeof (gdouble)); key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_cclosure_source_value ( spec, key, G_TYPE_DOUBLE, _marshal_DOUBLE__ARGS_DIRECT, G_CALLBACK (eval_closure), (const char *const *) values->pdata, (const GType *) (void *) value_types->data, values->len, eval_closure_data_ref (data), eval_closure_data_unref, &local_error); RETURN_ERROR_UNLESS (result); *value_out = g_steal_pointer (&key); return p; } static gboolean not_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { for (guint i = 0; i < n_param_values; i++) { if (!g_value_get_boolean (¶m_values[i])) return TRUE; } return FALSE; } static gboolean and_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { for (guint i = 0; i < n_param_values; i++) { if (!g_value_get_boolean (¶m_values[i])) return FALSE; } return TRUE; } static gboolean or_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { for (guint i = 0; i < n_param_values; i++) { if (g_value_get_boolean (¶m_values[i])) return TRUE; } return FALSE; } static gboolean lt_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(cmp_with < g_value_get_double (¶m_values[i]))) return FALSE; } return TRUE; } static gboolean gt_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(cmp_with > g_value_get_double (¶m_values[i]))) return FALSE; } return TRUE; } static gboolean lte_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(cmp_with <= g_value_get_double (¶m_values[i]))) return FALSE; } return TRUE; } static gboolean gte_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(cmp_with >= g_value_get_double (¶m_values[i]))) return FALSE; } return TRUE; } static gboolean eq_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(cmp_with == g_value_get_double (¶m_values[i]))) return FALSE; } return TRUE; } static gboolean neq_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(cmp_with != g_value_get_double (¶m_values[i]))) return FALSE; } return TRUE; } static gboolean aeq_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(G_APPROX_VALUE (cmp_with, g_value_get_double (¶m_values[i]), 0.00001))) return FALSE; } return TRUE; } static gboolean aneq_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { gdouble cmp_with = 0.0; cmp_with = g_value_get_double (param_values); for (guint i = 1; i < n_param_values; i++) { if (!(!G_APPROX_VALUE (cmp_with, g_value_get_double (¶m_values[i]), 0.00001))) return FALSE; } return TRUE; } static void ifelse_closure (gpointer this, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer dest_type_ptr) { if (g_value_get_boolean (param_values)) g_value_copy (¶m_values[1], return_value); else g_value_copy (¶m_values[2], return_value); } static void measure_path_closure (gpointer this, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer dest_type_ptr) { GskPathMeasure *measure = NULL; measure = gsk_path_measure_new ( g_value_get_boxed (param_values)); g_value_take_boxed (return_value, measure); } static void path_length_closure (gpointer this, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer dest_type_ptr) { gdouble length = 0.0; length = gsk_path_measure_get_length ( g_value_get_boxed (param_values)); g_value_set_double (return_value, length); } static void path_point_closure (gpointer this, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer dest_type_ptr) { gboolean result = FALSE; GskPathPoint point = { 0 }; result = gsk_path_measure_get_point ( g_value_get_boxed (¶m_values[0]), g_value_get_double (¶m_values[1]), &point); if (!result) return; g_value_set_boxed (return_value, &point); } static const char * parse_args (const char *p, BgeWdgtSpec *spec, const char *state, const char *enclosing_object, GHashTable *macro_replacements, guint *n_anon_vals, GHashTable *type_hints, guint *line, guint *column, const char *const *destinations, GType destinations_types[], guint n_destinations, char ***values_out, GType **types_out, guint *n_out, ArgsParseKind parse_kind, GError **error) { g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autofree char *token = NULL; guint n_args = 0; g_autoptr (GStrvBuilder) builder = NULL; g_autoptr (GArray) types_array = NULL; builder = g_strv_builder_new (); types_array = g_array_new (FALSE, TRUE, sizeof (GType)); for (gboolean need_comma = FALSE, get_token = TRUE, was_quoted = FALSE; ;) { if (get_token) GET_TOKEN_FULL (&token, TOKEN_PARSE_DEFAULT, SINGLE_CHAR_TOKENS, &was_quoted); get_token = TRUE; if (was_quoted) { g_autofree char *tmp_token = NULL; g_autofree char *key = NULL; GValue value = { 0 }; g_value_set_string (g_value_init (&value, G_TYPE_STRING), token); key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_constant_source_value ( spec, key, &value, &local_error); g_value_unset (&value); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if ((parse_kind == ARGS_PARSE_LEFT_ASSIGN && g_strcmp0 (token, "=") == 0) || (parse_kind == ARGS_PARSE_RIGHT_ASSIGN && g_strcmp0 (token, ";") == 0) || (parse_kind == ARGS_PARSE_PARENS && g_strcmp0 (token, ")") == 0)) break; else if (need_comma) { if (g_strcmp0 (token, ",") == 0) { need_comma = FALSE; continue; } else { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Arguments must be comma-separated"); return NULL; } } else if (g_strcmp0 (token, "_") == 0 || g_strcmp0 (token, "C_") == 0) /* gettext translations */ { gboolean have_context = FALSE; g_autofree char *context_text = NULL; g_autofree char *source_text = NULL; GValue value = G_VALUE_INIT; g_autofree char *key = NULL; have_context = g_strcmp0 (token, "C_") == 0; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); if (have_context) { GET_TOKEN (&context_text, TOKEN_PARSE_QUOTED); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ","); } GET_TOKEN (&source_text, TOKEN_PARSE_QUOTED); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ")"); g_value_init (&value, G_TYPE_STRING); if (have_context) { g_autofree char *query = NULL; query = g_strdup_printf ("%s\004%s", context_text, source_text); g_value_set_string (&value, g_dpgettext (NULL, query, strlen (context_text) + 1)); } else g_value_set_string (&value, gettext (source_text)); key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_constant_source_value ( spec, key, &value, &local_error); g_value_unset (&value); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if (g_strcmp0 (token, "#eval") == 0) { g_autofree char *key = NULL; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_eval (p, spec, state, macro_replacements, n_anon_vals, type_hints, line, column, &key, &local_error); RETURN_ERROR_UNLESS (p != NULL); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if (g_strcmp0 (token, "#not") == 0 || g_strcmp0 (token, "#!") == 0 || g_strcmp0 (token, "#and") == 0 || g_strcmp0 (token, "#or") == 0 || g_strcmp0 (token, "#<") == 0 || g_strcmp0 (token, "#>") == 0 || g_strcmp0 (token, "#eq") == 0 || g_strcmp0 (token, "#eq") == 0 || g_strcmp0 (token, "#neq") == 0 || g_strcmp0 (token, "#~eq") == 0 || g_strcmp0 (token, "#~neq") == 0) { g_autofree char *key = NULL; GCallback cb = NULL; GType all_type = G_TYPE_INVALID; guint require_n_cmp_values = 0; guint n_cmp_values = 0; g_auto (GStrv) cmp_values = NULL; g_autofree GType *all_types = NULL; if (g_strcmp0 (token, "#not") == 0 || g_strcmp0 (token, "#!") == 0) { cb = G_CALLBACK (not_closure); all_type = G_TYPE_BOOLEAN; require_n_cmp_values = 1; } else if (g_strcmp0 (token, "#and") == 0) { cb = G_CALLBACK (and_closure); all_type = G_TYPE_BOOLEAN; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#or") == 0) { cb = G_CALLBACK (or_closure); all_type = G_TYPE_BOOLEAN; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#<") == 0) { cb = G_CALLBACK (lt_closure); all_type = G_TYPE_DOUBLE; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#>") == 0) { cb = G_CALLBACK (gt_closure); all_type = G_TYPE_DOUBLE; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#eq") == 0) { cb = G_CALLBACK (gte_closure); all_type = G_TYPE_DOUBLE; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#eq") == 0) { cb = G_CALLBACK (eq_closure); all_type = G_TYPE_DOUBLE; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#neq") == 0) { cb = G_CALLBACK (neq_closure); all_type = G_TYPE_DOUBLE; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#~eq") == 0) { cb = G_CALLBACK (aeq_closure); all_type = G_TYPE_DOUBLE; require_n_cmp_values = 2; } else if (g_strcmp0 (token, "#~neq") == 0) { cb = G_CALLBACK (aneq_closure); all_type = G_TYPE_DOUBLE; require_n_cmp_values = 2; } else g_assert_not_reached (); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, NULL, 0, &cmp_values, NULL, &n_cmp_values, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_cmp_values < require_n_cmp_values) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "%s() needs at least %u argument(s), " "got %u", token, require_n_cmp_values, n_cmp_values); return NULL; } all_types = g_new (GType, n_cmp_values); for (guint i = 0; i < n_cmp_values; i++) { all_types[i] = all_type; } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_cclosure_source_value ( spec, key, G_TYPE_BOOLEAN, _marshal_BOOL__ARGS_DIRECT, cb, (const char *const *) cmp_values, all_types, n_cmp_values, NULL, NULL, &local_error); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if (g_strcmp0 (token, "#ifelse") == 0) { g_autofree char *key = NULL; GType type_hint = G_TYPE_INVALID; guint n_expr_values = 0; g_auto (GStrv) expr_values = NULL; g_autofree GType *expr_types = NULL; if (n_args < n_destinations) { if (destinations != NULL) type_hint = GPOINTER_TO_SIZE (g_hash_table_lookup ( type_hints, destinations[n_args])); if (type_hint == G_TYPE_INVALID && destinations_types != NULL) type_hint = destinations_types[n_args]; } GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_BOOLEAN }, 1, &expr_values, &expr_types, &n_expr_values, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_expr_values != 3) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#ifelse() needs exactly 3 argument(s), " "got %u", n_expr_values); return NULL; } if (type_hint == G_TYPE_INVALID) /* Use the return type of the TRUE value and coerce the FALSE value to this if necessary */ type_hint = expr_types[1]; key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_cclosure_source_value ( spec, key, type_hint, _marshal_DIRECT__ARGS_DIRECT, G_CALLBACK (ifelse_closure), (const char *const *) expr_values, (GType[]){ G_TYPE_BOOLEAN, type_hint, type_hint }, n_expr_values, NULL, NULL, &local_error); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if (g_strcmp0 (token, "#measure-path") == 0) { g_autofree char *key = NULL; guint n_expr_values = 0; g_auto (GStrv) expr_values = NULL; g_autofree GType *expr_types = NULL; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ GSK_TYPE_PATH }, 1, &expr_values, &expr_types, &n_expr_values, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_expr_values != 1) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#measure-path() needs exactly 1 argument of type %s," "got %u", g_type_name (GSK_TYPE_PATH), n_expr_values); return NULL; } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_cclosure_source_value ( spec, key, GSK_TYPE_PATH_MEASURE, _marshal_DIRECT__ARGS_DIRECT, G_CALLBACK (measure_path_closure), (const char *const *) expr_values, (GType[]){ GSK_TYPE_PATH }, n_expr_values, NULL, NULL, &local_error); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if (g_strcmp0 (token, "#path-length") == 0) { g_autofree char *key = NULL; guint n_expr_values = 0; g_auto (GStrv) expr_values = NULL; g_autofree GType *expr_types = NULL; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ GSK_TYPE_PATH_MEASURE }, 1, &expr_values, &expr_types, &n_expr_values, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_expr_values != 1) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#path-length() needs exactly 1 argument of type %s," "got %u", g_type_name (GSK_TYPE_PATH_MEASURE), n_expr_values); return NULL; } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_cclosure_source_value ( spec, key, G_TYPE_DOUBLE, _marshal_DIRECT__ARGS_DIRECT, G_CALLBACK (path_length_closure), (const char *const *) expr_values, (GType[]){ GSK_TYPE_PATH_MEASURE }, n_expr_values, NULL, NULL, &local_error); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if (g_strcmp0 (token, "#path-point") == 0) { g_autofree char *key = NULL; guint n_expr_values = 0; g_auto (GStrv) expr_values = NULL; g_autofree GType *expr_types = NULL; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ GSK_TYPE_PATH_MEASURE, G_TYPE_DOUBLE }, 2, &expr_values, &expr_types, &n_expr_values, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_expr_values != 2) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#path-point() needs exactly 2 arguments " "of types %s and %s," "got %u", g_type_name (GSK_TYPE_PATH_MEASURE), g_type_name (G_TYPE_DOUBLE), n_expr_values); return NULL; } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_cclosure_source_value ( spec, key, GSK_TYPE_PATH_POINT, _marshal_DIRECT__ARGS_DIRECT, G_CALLBACK (path_point_closure), (const char *const *) expr_values, (GType[]){ GSK_TYPE_PATH_MEASURE, G_TYPE_DOUBLE }, n_expr_values, NULL, NULL, &local_error); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else if (g_strcmp0 (token, "#transition") == 0) { g_autofree char *key = NULL; guint n_spec_values = 0; g_auto (GStrv) spec_values = NULL; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, NULL, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE }, 4, &spec_values, NULL, &n_spec_values, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_spec_values != 4) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#transition() needs 4 arguments " "(variable, damping-ratio, mass, stiffness), " "got %u", n_spec_values); return NULL; } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_track_transition_source_value ( spec, key, spec_values[0], spec_values[1], spec_values[2], spec_values[3], &local_error); RETURN_ERROR_UNLESS (result); g_strv_builder_take (builder, g_steal_pointer (&key)); n_args++; need_comma = TRUE; } else { g_autofree char *key = NULL; GType type = G_TYPE_INVALID; if (g_hash_table_contains (type_hints, token) || /* A macro placed this here */ g_utf8_strchr (token, -1, '@') != NULL) key = g_steal_pointer (&token); else { GType type_hint = G_TYPE_INVALID; gboolean expect_closing_paren = FALSE; gboolean is_child = FALSE; gboolean constant = FALSE; GValue value = G_VALUE_INIT; if (n_args < n_destinations) { if (destinations != NULL) type_hint = GPOINTER_TO_SIZE (g_hash_table_lookup ( type_hints, destinations[n_args])); if (type_hint == G_TYPE_INVALID && destinations_types != NULL) type_hint = destinations_types[n_args]; } if (g_str_has_prefix (token, "#")) { const char *type_name = token + 1; if (g_str_has_prefix (type_name, "child/")) { is_child = TRUE; type_name += strlen ("child/"); } if (*type_name == '\0') { if (type_hint == G_TYPE_INVALID) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unable to guess type for value"); return NULL; } type = type_hint; } else { type = g_type_from_name (type_name); if (type == G_TYPE_INVALID) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unknown type name \"%s\"", type_name); return NULL; } } GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); expect_closing_paren = TRUE; } else type = type_hint; if (is_child && !g_type_is_a (type, GTK_TYPE_WIDGET)) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Children must be a widget type"); return NULL; } if (type == G_TYPE_INVALID) { if (expect_closing_paren) GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); key = parse_token_fundamental (token, spec, n_anon_vals, line, column, &local_error); RETURN_ERROR_UNLESS (key != NULL); } else if (type == G_TYPE_STRING) { if (expect_closing_paren) GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); g_value_set_string (g_value_init (&value, G_TYPE_STRING), token); constant = TRUE; if (expect_closing_paren) GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ")"); } else if (type == G_TYPE_BOOLEAN) { if (expect_closing_paren) GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (token, "true") == 0) g_value_set_boolean (g_value_init (&value, G_TYPE_BOOLEAN), TRUE); else if (g_strcmp0 (token, "false") == 0) g_value_set_boolean (g_value_init (&value, G_TYPE_BOOLEAN), FALSE); else { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "a boolean value must be 'true' " "or 'false', got \"%s\"", token); return NULL; } constant = TRUE; if (expect_closing_paren) GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ")"); } else if (type == G_TYPE_INT || type == G_TYPE_INT64 || type == G_TYPE_UINT || type == G_TYPE_UINT64 || type == G_TYPE_FLOAT || type == G_TYPE_DOUBLE) { const GVariantType *variant_type = NULL; g_autoptr (GVariant) variant = NULL; if (type == G_TYPE_INT) variant_type = G_VARIANT_TYPE_INT32; else if (type == G_TYPE_INT64) variant_type = G_VARIANT_TYPE_INT64; else if (type == G_TYPE_UINT) variant_type = G_VARIANT_TYPE_UINT32; else if (type == G_TYPE_UINT64) variant_type = G_VARIANT_TYPE_UINT64; else if (type == G_TYPE_FLOAT || type == G_TYPE_DOUBLE) variant_type = G_VARIANT_TYPE_DOUBLE; if (expect_closing_paren) GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); variant = g_variant_parse (variant_type, token, NULL, NULL, &local_error); RETURN_ERROR_UNLESS (variant != NULL); if (type == G_TYPE_INT) g_value_set_int (g_value_init (&value, G_TYPE_INT), g_variant_get_int32 (variant)); else if (type == G_TYPE_INT64) g_value_set_int64 (g_value_init (&value, G_TYPE_INT64), g_variant_get_int64 (variant)); else if (type == G_TYPE_UINT) g_value_set_uint (g_value_init (&value, G_TYPE_UINT), g_variant_get_uint32 (variant)); else if (type == G_TYPE_UINT64) g_value_set_uint64 (g_value_init (&value, G_TYPE_UINT64), g_variant_get_uint64 (variant)); else if (type == G_TYPE_FLOAT) g_value_set_float (g_value_init (&value, G_TYPE_FLOAT), g_variant_get_double (variant)); else if (type == G_TYPE_DOUBLE) g_value_set_double (g_value_init (&value, G_TYPE_DOUBLE), g_variant_get_double (variant)); constant = TRUE; if (expect_closing_paren) GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ")"); } else if (g_type_is_a (type, G_TYPE_ENUM)) { g_autoptr (GEnumClass) enum_class = NULL; GEnumValue *enum_value = NULL; if (expect_closing_paren) GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); enum_class = g_type_class_ref (type); enum_value = g_enum_get_value_by_nick (enum_class, token); if (enum_value == NULL) enum_value = g_enum_get_value_by_name (enum_class, token); if (enum_value == NULL) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "\"%s\" not found in enum type %s", token, g_type_name (type)); return NULL; } g_value_set_enum (g_value_init (&value, type), enum_value->value); constant = TRUE; if (expect_closing_paren) GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ")"); } else if (type == GDK_TYPE_RGBA) { GdkRGBA rgba = { 0 }; if (expect_closing_paren) GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); result = gdk_rgba_parse (&rgba, token); if (!result) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#color() specifier failed to " "parse color from string"); return NULL; } g_value_set_boxed (g_value_init (&value, GDK_TYPE_RGBA), &rgba); constant = TRUE; if (expect_closing_paren) GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ")"); } else if (type == GRAPHENE_TYPE_POINT || type == GRAPHENE_TYPE_SIZE || type == GRAPHENE_TYPE_RECT) { g_auto (GStrv) component_args = NULL; guint n_component_args = 0; GType component_type = 0; if (!expect_closing_paren) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type %s must be wrapped in #(...)", g_type_name (type)); return NULL; } p = parse_args (p, spec, state, enclosing_object, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE }, 4, &component_args, NULL, &n_component_args, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (type == GRAPHENE_TYPE_POINT) { switch (n_component_args) { case 2: component_type = GRAPHENE_TYPE_POINT; break; case 3: component_type = GRAPHENE_TYPE_POINT3D; break; default: g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#point() specifier can have 2 or 3 arguments, got %u", n_component_args); return NULL; } } else if (type == GRAPHENE_TYPE_SIZE) { switch (n_component_args) { case 2: component_type = GRAPHENE_TYPE_SIZE; break; default: g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#size() specifier can have 2 arguments, got %u", n_component_args); return NULL; } } else if (type == GRAPHENE_TYPE_RECT) { switch (n_component_args) { case 4: component_type = GRAPHENE_TYPE_RECT; break; default: g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "#rect() specifier can have 4 arguments, got %u", n_component_args); return NULL; } } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_component_source_value ( spec, key, component_type, (const char *const *) component_args, n_component_args, &local_error); RETURN_ERROR_UNLESS (result); } else if (g_type_is_a (type, G_TYPE_OBJECT)) { if (!expect_closing_paren) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type %s must be wrapped in #(...)", g_type_name (type)); return NULL; } key = make_anon_name ((*n_anon_vals)++); if (is_child) { g_autofree char *builder_type = NULL; g_autoptr (GPtrArray) css_classes = NULL; GET_TOKEN (&builder_type, TOKEN_PARSE_QUOTED); if (*builder_type == '\0') g_clear_pointer (&builder_type, g_free); css_classes = g_ptr_array_new_with_free_func (g_free); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); for (;;) { GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (token, ")") == 0) break; g_ptr_array_add (css_classes, g_steal_pointer (&token)); } result = bge_wdgt_spec_add_child_source_value ( spec, key, type, enclosing_object, builder_type, (const char *const *) css_classes->pdata, css_classes->len, &local_error); RETURN_ERROR_UNLESS (result); } else { result = bge_wdgt_spec_add_instance_source_value ( spec, key, type, &local_error); RETURN_ERROR_UNLESS (result); } for (;;) { g_autofree char *property_name = NULL; g_autofree char *set_key = NULL; GType prop_type = G_TYPE_INVALID; g_auto (GStrv) value_args = NULL; guint n_value_args = 0; GET_TOKEN (&property_name, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (property_name, ")") == 0) break; else if (g_strcmp0 (property_name, "%set") == 0) { GET_TOKEN (&set_key, TOKEN_PARSE_DEFAULT); prop_type = GPOINTER_TO_SIZE (g_hash_table_lookup (type_hints, set_key)); } else if (g_strcmp0 (property_name, "_") != 0) { set_key = make_object_property_name (key, property_name, (*n_anon_vals)++); result = bge_wdgt_spec_add_property_value ( spec, set_key, key, property_name, &prop_type, &local_error); RETURN_ERROR_UNLESS (result); } GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "="); p = parse_args (p, spec, state, key, macro_replacements, n_anon_vals, type_hints, line, column, NULL, (GType[]){ prop_type }, 1, &value_args, NULL, &n_value_args, ARGS_PARSE_RIGHT_ASSIGN, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_value_args != 1) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "property/child assignment " "needs a single argument, got %u", n_value_args); return NULL; } if (set_key != NULL) { result = bge_wdgt_spec_set_value (spec, state, set_key, value_args[0], &local_error); RETURN_ERROR_UNLESS (result); } } } else if (type == GSK_TYPE_TRANSFORM) { g_autofree char *last_key = NULL; if (!expect_closing_paren) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type %s must be wrapped in #(...)", g_type_name (type)); return NULL; } last_key = make_anon_name ((*n_anon_vals)++); g_value_take_boxed (g_value_init (&value, GSK_TYPE_TRANSFORM), gsk_transform_new ()); result = bge_wdgt_spec_add_constant_source_value ( spec, last_key, &value, error); g_value_unset (&value); if (!result) return NULL; for (;;) { g_autofree char *instr = NULL; g_auto (GStrv) value_args = NULL; guint n_value_args = 0; g_autofree char *tmp_key = NULL; GET_TOKEN (&instr, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (instr, ")") == 0) break; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, enclosing_object, macro_replacements, n_anon_vals, type_hints, line, column, NULL, NULL, 0, &value_args, NULL, &n_value_args, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ";"); tmp_key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_transform_source_value ( spec, tmp_key, last_key, instr, (const char *const *) value_args, n_value_args, &local_error); RETURN_ERROR_UNLESS (result); g_clear_pointer (&last_key, g_free); last_key = g_steal_pointer (&tmp_key); } key = g_steal_pointer (&last_key); } else if (type == GSK_TYPE_PATH) { g_autoptr (GPtrArray) instrs = NULL; g_autoptr (GPtrArray) argss = NULL; g_autoptr (GArray) n_argss = NULL; instrs = g_ptr_array_new_with_free_func (g_free); argss = g_ptr_array_new_with_free_func ((GDestroyNotify) g_strfreev); n_argss = g_array_new (FALSE, FALSE, sizeof (guint)); if (!expect_closing_paren) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type %s must be wrapped in #(...)", g_type_name (type)); return NULL; } for (;;) { g_autofree char *instr = NULL; g_auto (GStrv) call_args = NULL; guint n_call_args = 0; GET_TOKEN (&instr, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (instr, ")") == 0) break; GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, "("); p = parse_args (p, spec, state, enclosing_object, macro_replacements, n_anon_vals, type_hints, line, column, NULL, NULL, 0, &call_args, NULL, &n_call_args, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); GET_TOKEN_EXPECT (&token, TOKEN_PARSE_DEFAULT, ";"); g_ptr_array_add (instrs, g_steal_pointer (&instr)); g_ptr_array_add (argss, g_steal_pointer (&call_args)); g_array_append_val (n_argss, n_call_args); } if (instrs->len == 0) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "not enough path builder instructions"); return NULL; } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_path_source_value ( spec, key, (const char *const *) instrs->pdata, (const char *const *const *) argss->pdata, (const guint *) (void *) n_argss->data, instrs->len, &local_error); RETURN_ERROR_UNLESS (result); } else if (type == GSK_TYPE_STROKE) { g_auto (GStrv) component_args = NULL; guint n_component_args = 0; GType types[] = { G_TYPE_DOUBLE, /* line width */ GSK_TYPE_LINE_CAP, GSK_TYPE_LINE_JOIN, G_TYPE_DOUBLE, /* miter limit */ }; if (!expect_closing_paren) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "type %s must be wrapped in #(...)", g_type_name (type)); return NULL; } p = parse_args (p, spec, state, enclosing_object, macro_replacements, n_anon_vals, type_hints, line, column, NULL, types, G_N_ELEMENTS (types), &component_args, NULL, &n_component_args, ARGS_PARSE_PARENS, &local_error); RETURN_ERROR_UNLESS (p != NULL); if (n_component_args != G_N_ELEMENTS (types)) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "%s type initializer can have %d arguments, got %u", g_type_name (GSK_TYPE_STROKE), (int) G_N_ELEMENTS (types), n_component_args); return NULL; } key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_component_source_value ( spec, key, GSK_TYPE_STROKE, (const char *const *) component_args, n_component_args, &local_error); RETURN_ERROR_UNLESS (result); } else { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Can't parse type %s", g_type_name (type)); return NULL; } if (constant) { key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_constant_source_value ( spec, key, &value, &local_error); g_value_unset (&value); RETURN_ERROR_UNLESS (result); } } for (;;) { GET_TOKEN (&token, TOKEN_PARSE_DEFAULT); if (g_strcmp0 (token, ":") == 0) { g_autofree char *property = NULL; g_autofree char *name = NULL; GET_TOKEN (&property, TOKEN_PARSE_DEFAULT); name = make_object_property_name (key, property, (*n_anon_vals)++); result = bge_wdgt_spec_add_property_value ( spec, name, key, property, &type, &local_error); RETURN_ERROR_UNLESS (result); g_clear_pointer (&key, g_free); key = g_steal_pointer (&name); } else break; } get_token = FALSE; g_strv_builder_add (builder, key); g_array_append_val (types_array, type); n_args++; need_comma = TRUE; } } if (n_out != NULL) *n_out = n_args; if (values_out != NULL) *values_out = g_strv_builder_end (builder); if (types_out != NULL) *types_out = g_array_steal (types_array, NULL); return p; } static char * parse_token_fundamental (const char *token, BgeWdgtSpec *spec, guint *n_anon_vals, guint *line, guint *column, GError **error) { g_autoptr (GError) local_error = NULL; gboolean result = FALSE; gunichar ch = 0; GValue value = { 0 }; g_autofree char *key = NULL; ch = g_utf8_get_char (token); if (ch == '-' || g_unichar_isdigit (ch)) { gboolean is_double = FALSE; g_autoptr (GVariant) variant = NULL; is_double = g_utf8_strchr (token, -1, '.') != NULL; if (is_double) variant = g_variant_parse (G_VARIANT_TYPE_DOUBLE, token, NULL, NULL, &local_error); else variant = g_variant_parse (G_VARIANT_TYPE_INT32, token, NULL, NULL, &local_error); if (variant == NULL) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unable to parse number value '%s': %s", token, local_error->message); return NULL; } if (is_double) g_value_set_double (g_value_init (&value, G_TYPE_DOUBLE), g_variant_get_double (variant)); else g_value_set_int (g_value_init (&value, G_TYPE_INT), g_variant_get_int32 (variant)); } else if (g_strcmp0 (token, "true") == 0) g_value_set_boolean (g_value_init (&value, G_TYPE_BOOLEAN), TRUE); else if (g_strcmp0 (token, "false") == 0) g_value_set_boolean (g_value_init (&value, G_TYPE_BOOLEAN), FALSE); else return g_strdup (token); if (key == NULL) key = make_anon_name ((*n_anon_vals)++); result = bge_wdgt_spec_add_constant_source_value ( spec, key, &value, error); g_value_unset (&value); if (!result) return NULL; return g_steal_pointer (&key); } static char * consume_token (const char **pp, const char *single_chars, TokenParseFlags flags, gboolean *was_quoted, GHashTable *macro_replacements, guint *line, guint *column, GError **error) { g_autofree char *token = NULL; token = consume_token_inner (pp, single_chars, flags, was_quoted, line, column, error); if (token == NULL) return NULL; if (macro_replacements != NULL) { const char *replacement = NULL; replacement = g_hash_table_lookup (macro_replacements, token); if (replacement != NULL) return g_strdup (replacement); else { const char *replace_start = NULL; replace_start = g_utf8_strchr (token, -1, '@'); if (replace_start != NULL) { const char *last_end = token; g_autoptr (GString) string = NULL; string = g_string_new (NULL); for (;;) { g_autofree char *replace = NULL; const char *with = NULL; if (replace_start - last_end > 0) g_string_append_len (string, last_end, replace_start - last_end); replace_start++; last_end = g_utf8_strchr (replace_start, -1, '@'); if (last_end == NULL) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "error in macro expansion: " "unterminated replacement"); return NULL; } replace = g_strndup (replace_start, last_end - replace_start); with = g_hash_table_lookup (macro_replacements, replace); if (with == NULL) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "error in macro expansion: " "undefined string \"%s\"", replace); return NULL; } g_string_append (string, with); last_end++; replace_start = g_utf8_strchr (last_end, '@', -1); if (replace_start == NULL) break; } if (*last_end != '\0') g_string_append (string, last_end); return g_string_free_and_steal (g_steal_pointer (&string)); } } } return g_steal_pointer (&token); } static char * consume_token_inner (const char **pp, const char *single_chars, TokenParseFlags flags, gboolean *was_quoted, guint *line, guint *column, GError **error) { const char *p = *pp; gboolean hit_non_space = FALSE; if (was_quoted != NULL) *was_quoted = FALSE; #define UNEXPECTED_EOF \ G_STMT_START \ { \ g_set_error ( \ error, \ G_IO_ERROR, \ G_IO_ERROR_UNKNOWN, \ "Unexpected EOF"); \ return NULL; \ } \ G_STMT_END #define RETURN_TOKEN \ G_STMT_START \ { \ g_autofree char *_ret = NULL; \ \ _ret = g_strndup (*pp, p - *pp); \ *pp = p; \ return g_steal_pointer (&_ret); \ } \ G_STMT_END #define RETURN_TOKEN_ADJUST_NEXT_CHAR \ G_STMT_START \ { \ g_autofree char *_ret = NULL; \ \ _ret = g_strndup (*pp, p - *pp); \ *pp = g_utf8_next_char (p); \ return g_steal_pointer (&_ret); \ } \ G_STMT_END if (IS_EOF (p)) UNEXPECTED_EOF; for (; !IS_EOF (p); p = g_utf8_next_char (p)) { gunichar ch = 0; gboolean is_whitespace = FALSE; gboolean is_quotes = FALSE; ch = g_utf8_get_char (p); if (ch == '\n') { (*line)++; *column = 0; } else (*column)++; is_whitespace = ch == '\n' || g_unichar_isspace (ch); is_quotes = ch == '"'; if (is_whitespace) { if (!(flags & TOKEN_PARSE_QUOTED) && hit_non_space) RETURN_TOKEN; } else { if (is_quotes) { if (hit_non_space) { if (was_quoted != NULL) *was_quoted = TRUE; if (flags & TOKEN_PARSE_QUOTED) RETURN_TOKEN_ADJUST_NEXT_CHAR; else RETURN_TOKEN; } else { flags |= TOKEN_PARSE_QUOTED; *pp = g_utf8_next_char (p); if (IS_EOF (*pp)) UNEXPECTED_EOF; hit_non_space = TRUE; } } else if (flags & TOKEN_PARSE_QUOTED) { if (!hit_non_space) { g_set_error ( error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Expected quote"); return NULL; } } else if (single_chars != NULL && g_utf8_strchr (single_chars, -1, ch) != NULL) { if (hit_non_space) RETURN_TOKEN; else { char buf[16] = { 0 }; g_unichar_to_utf8 (ch, buf); *pp = g_utf8_next_char (p); return g_strdup (buf); } } if (!hit_non_space) { *pp = p; hit_non_space = TRUE; } } } if (!(flags & TOKEN_PARSE_QUOTED) && hit_non_space) RETURN_TOKEN; UNEXPECTED_EOF; #undef RETURN_TOKEN_ADJUST_NEXT_CHAR #undef RETURN_TOKEN #undef UNEXPECTED_EOF } static gdouble eval_closure (gpointer this, guint n_param_values, const GValue *param_values, EvalClosureData *data) { GArray *ops = data->ops; gdouble *workbuf0 = data->workbuf0; gdouble *workbuf1 = data->workbuf1; gdouble result = 0.0; for (guint i = 0; i < n_param_values; i++) { workbuf0[i] = g_value_get_double (¶m_values[i]); workbuf1[i] = 1.0; } for (guint i = 0; i < ops->len; i++) { EvalOperator *op = NULL; guint left_idx = 0; guint right_idx = 0; gdouble left = 0.0; gdouble right = 0.0; op = &g_array_index (ops, EvalOperator, i); left_idx = op->pos; while (workbuf1[left_idx] < 0.0) { left_idx--; } right_idx = op->pos + 1; while (workbuf1[right_idx] < 0.0) { right_idx++; } left = workbuf0[left_idx]; right = workbuf0[right_idx]; switch (op->op) { case OPERATOR_ADD: result = left + right; break; case OPERATOR_SUBTRACT: result = left - right; break; case OPERATOR_MULTIPLY: result = left * right; break; case OPERATOR_DIVIDE: result = left / right; break; case OPERATOR_MODULUS: result = fmod (left, right); break; case OPERATOR_POWER: result = pow (left, right); break; default: g_assert_not_reached (); } workbuf0[left_idx] = result; workbuf1[left_idx] = 1.0; workbuf1[right_idx] = -1.0; } return result; } static char * make_object_property_name (const char *object, const char *property, guint n) { return g_strdup_printf ("prop@%u(%s).%s", n, object, property); } static char * make_widget_allocation_name (const char *widget, guint n) { return g_strdup_printf ("allocation@%u(%s)", n, widget); } static char * make_widget_measurement_name (guint n) { return g_strdup_printf ("measurement@%u", n); } static char * make_anon_name (guint n) { return g_strdup_printf ("anon@%u", n); } static gint cmp_operator (EvalOperator *a, EvalOperator *b) { int a_prec = 0; int b_prec = 0; a_prec = operator_precedence[a->op]; b_prec = operator_precedence[b->op]; return a_prec > b_prec ? -1 : 1; } bazaar-org-bazaar-48f93f4/bge/wdgt/fmt/parser.h000066400000000000000000000015701524000504200212760ustar00rootroot00000000000000/* parser.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bge.h" G_BEGIN_DECLS BgeWdgtSpec * bge_wdgt_parse_string (const char *string, GError **error); G_END_DECLS bazaar-org-bazaar-48f93f4/bge/wdgt/lookup/000077500000000000000000000000001524000504200203515ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/bge/wdgt/lookup/lookup.h000066400000000000000000000047171524000504200220440ustar00rootroot00000000000000/* lookup.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "bge.h" G_BEGIN_DECLS #define ARGBUF_SIZE 128 typedef GskTransform *(*TransformCallFunc) (GskTransform *next, const GValue args[]); typedef struct { const char *name; guint n_args; GType args[16]; gpointer func; TransformCallFunc call; } TransformInstr; gboolean lookup_transform_instr (const char *lookup_name, TransformInstr *out); typedef void (*PathBuilderCallFunc) (GskPathBuilder *builder, const GValue args[]); typedef struct { const char *name; guint n_args; GType args[16]; gpointer func; PathBuilderCallFunc call; } PathBuilderInstr; gboolean lookup_path_builder_instr (const char *lookup_name, PathBuilderInstr *out); typedef void (*SnapshotCallFunc) (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest); typedef struct { const char *name; guint n_args; guint n_rest; GType args[16]; gpointer func; SnapshotCallFunc call; /* for push instrs only */ guint n_pops; } SnapshotInstr; gboolean lookup_snapshot_push_instr (const char *lookup_name, SnapshotInstr *out); gboolean lookup_snapshot_transform_instr (const char *lookup_name, SnapshotInstr *out); gboolean lookup_snapshot_append_instr (const char *lookup_name, SnapshotInstr *out); G_END_DECLS bazaar-org-bazaar-48f93f4/bge/wdgt/lookup/meson.build000066400000000000000000000001151524000504200225100ustar00rootroot00000000000000bge_sources += files( 'path-builder.c', 'snapshot.c', 'transform.c', ) bazaar-org-bazaar-48f93f4/bge/wdgt/lookup/path-builder.c000066400000000000000000000322151524000504200231000ustar00rootroot00000000000000/* path-builder.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "lookup.h" static void path_builder_instr_add_circle (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_add_circle ( builder, g_value_get_boxed (&args[0]), g_value_get_double (&args[1])); } static void path_builder_instr_add_layout (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_add_layout ( builder, g_value_get_object (&args[0])); } static void path_builder_instr_add_path (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_add_path ( builder, g_value_get_boxed (&args[0])); } static void path_builder_instr_add_rect (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_add_rect ( builder, g_value_get_boxed (&args[0])); } static void path_builder_instr_add_reverse_path (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_add_reverse_path ( builder, g_value_get_boxed (&args[0])); } static void path_builder_instr_add_rounded_rect (GskPathBuilder *builder, const GValue args[]) { GskRoundedRect rrect = { 0 }; rrect.bounds = *(graphene_rect_t *) g_value_get_boxed (&args[0]); rrect.corner[0] = *(graphene_size_t *) g_value_get_boxed (&args[1]); rrect.corner[1] = *(graphene_size_t *) g_value_get_boxed (&args[2]); rrect.corner[2] = *(graphene_size_t *) g_value_get_boxed (&args[3]); rrect.corner[3] = *(graphene_size_t *) g_value_get_boxed (&args[4]); gsk_path_builder_add_rounded_rect ( builder, &rrect); } static void path_builder_instr_add_segment (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_add_segment ( builder, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_boxed (&args[2])); } static void path_builder_instr_arc_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_arc_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3])); } static void path_builder_instr_close (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_close (builder); } static void path_builder_instr_conic_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_conic_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4])); } static void path_builder_instr_cubic_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_cubic_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4]), g_value_get_double (&args[5])); } static void path_builder_instr_rel_arc_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_arc_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3])); } static void path_builder_instr_html_arc_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_html_arc_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4])); } static void path_builder_instr_line_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_line_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1])); } static void path_builder_instr_move_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_move_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1])); } static void path_builder_instr_quad_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_quad_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3])); } static void path_builder_instr_rel_conic_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_conic_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4])); } static void path_builder_instr_rel_cubic_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_cubic_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4]), g_value_get_double (&args[5])); } static void path_builder_instr_rel_html_arc_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_html_arc_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4])); } static void path_builder_instr_rel_line_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_line_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1])); } static void path_builder_instr_rel_move_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_move_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1])); } static void path_builder_instr_rel_quad_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_quad_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3])); } static void path_builder_instr_svg_arc_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_svg_arc_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_boolean (&args[3]), g_value_get_boolean (&args[4]), g_value_get_double (&args[5]), g_value_get_double (&args[6])); } static void path_builder_instr_rel_svg_arc_to (GskPathBuilder *builder, const GValue args[]) { gsk_path_builder_rel_svg_arc_to ( builder, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_boolean (&args[3]), g_value_get_boolean (&args[4]), g_value_get_double (&args[5]), g_value_get_double (&args[6])); } gboolean lookup_path_builder_instr (const char *lookup_name, PathBuilderInstr *out) { PathBuilderInstr instrs[] = { { "add-circle", 2, { GRAPHENE_TYPE_POINT, G_TYPE_DOUBLE, }, gsk_path_builder_add_circle, path_builder_instr_add_circle, }, { "add-layout", 1, { PANGO_TYPE_LAYOUT, }, gsk_path_builder_add_layout, path_builder_instr_add_layout, }, { "add-path", 1, { GSK_TYPE_PATH, }, gsk_path_builder_add_path, path_builder_instr_add_path, }, { "add-rect", 1, { GRAPHENE_TYPE_RECT, }, gsk_path_builder_add_rect, path_builder_instr_add_rect, }, { "add-reverse-path", 1, { GSK_TYPE_PATH, }, gsk_path_builder_add_reverse_path, path_builder_instr_add_reverse_path, }, { "add-rounded-rect", 5, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, }, gsk_path_builder_add_rounded_rect, path_builder_instr_add_rounded_rect, }, { "add-segment", 3, { GSK_TYPE_PATH, GSK_TYPE_PATH_POINT, GSK_TYPE_PATH_POINT, }, gsk_path_builder_add_segment, path_builder_instr_add_segment, }, { "arc-to", 4, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_arc_to, path_builder_instr_arc_to, }, { "close", 0, {}, gsk_path_builder_close, path_builder_instr_close, }, { "conic-to", 5, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_conic_to, path_builder_instr_conic_to, }, { "cubic-to", 6, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_cubic_to, path_builder_instr_cubic_to, }, { "html-arc-to", 5, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_html_arc_to, path_builder_instr_html_arc_to, }, { "line-to", 2, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_line_to, path_builder_instr_line_to, }, { "move-to", 2, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_move_to, path_builder_instr_move_to, }, { "quad-to", 4, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_quad_to, path_builder_instr_quad_to, }, { "rel-arc-to", 4, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_arc_to, path_builder_instr_rel_arc_to, }, { "rel-conic-to", 5, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_conic_to, path_builder_instr_rel_conic_to, }, { "rel-cubic-to", 6, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_cubic_to, path_builder_instr_rel_cubic_to, }, { "rel-html-arc-to", 5, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_html_arc_to, path_builder_instr_rel_html_arc_to, }, { "rel-line-to", 2, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_line_to, path_builder_instr_rel_line_to, }, { "rel-move-to", 2, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_move_to, path_builder_instr_rel_move_to, }, { "rel-quad-to", 4, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_quad_to, path_builder_instr_rel_quad_to, }, { "rel-svg-arc-to", 7, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_rel_svg_arc_to, path_builder_instr_rel_svg_arc_to, }, { "svg-arc-to", 7, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_path_builder_svg_arc_to, path_builder_instr_svg_arc_to, }, }; for (guint i = 0; i < G_N_ELEMENTS (instrs); i++) { if (g_strcmp0 (lookup_name, instrs[i].name) == 0) { *out = instrs[i]; return TRUE; } } return FALSE; } bazaar-org-bazaar-48f93f4/bge/wdgt/lookup/snapshot.c000066400000000000000000000731561524000504200223700ustar00rootroot00000000000000/* snapshot.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "lookup.h" static void snapshot_push_instr_opacity (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_opacity ( snapshot, g_value_get_double (&args[0])); } static void snapshot_push_instr_isolation (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_isolation ( snapshot, g_value_get_flags (&args[0])); } static void snapshot_push_instr_blur (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_blur ( snapshot, g_value_get_double (&args[0])); } static void snapshot_push_instr_color_matrix (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_color_matrix ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1])); } static void snapshot_push_instr_component_transfer (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_component_transfer ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_boxed (&args[2]), g_value_get_boxed (&args[3])); } static void snapshot_push_instr_repeat (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_repeat ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1])); } static void snapshot_push_instr_clip (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_clip ( snapshot, g_value_get_boxed (&args[0])); } static void snapshot_push_instr_rounded_clip (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { GskRoundedRect rrect = { 0 }; rrect.bounds = *(graphene_rect_t *) g_value_get_boxed (&args[0]); rrect.corner[0] = *(graphene_size_t *) g_value_get_boxed (&args[1]); rrect.corner[1] = *(graphene_size_t *) g_value_get_boxed (&args[2]); rrect.corner[2] = *(graphene_size_t *) g_value_get_boxed (&args[3]); rrect.corner[3] = *(graphene_size_t *) g_value_get_boxed (&args[4]); gtk_snapshot_push_rounded_clip ( snapshot, &rrect); } static void snapshot_push_instr_fill (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_fill ( snapshot, g_value_get_boxed (&args[0]), g_value_get_enum (&args[1])); } static void snapshot_push_instr_stroke (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_stroke ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1])); } static void snapshot_push_instr_shadow (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { guint n_shadows = 0; GskShadow shadows[ARGBUF_SIZE] = { 0 }; n_shadows = MIN (n_rest / 4, G_N_ELEMENTS (shadows)); for (guint i = 0; i < n_shadows; i++) { shadows[i].color = *(GdkRGBA *) g_value_get_boxed (&rest[i * 4 + 0]); shadows[i].dx = g_value_get_double (&rest[i * 4 + 1]); shadows[i].dy = g_value_get_double (&rest[i * 4 + 2]); shadows[i].radius = g_value_get_double (&rest[i * 4 + 3]); } gtk_snapshot_push_shadow ( snapshot, shadows, n_shadows); } static void snapshot_push_instr_blend (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_blend ( snapshot, g_value_get_enum (&args[0])); } static void snapshot_push_instr_mask (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_mask ( snapshot, g_value_get_enum (&args[0])); } static void snapshot_push_instr_copy (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_copy ( snapshot); } static void snapshot_push_instr_composite (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_composite ( snapshot, g_value_get_enum (&args[0])); } static void snapshot_push_instr_cross_fade (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_push_cross_fade ( snapshot, g_value_get_double (&args[0])); } gboolean lookup_snapshot_push_instr (const char *lookup_name, SnapshotInstr *out) { SnapshotInstr instrs[] = { { "opacity", 1, 0, { G_TYPE_DOUBLE, }, gtk_snapshot_push_opacity, snapshot_push_instr_opacity, 1, }, { "isolation", 1, 0, { GSK_TYPE_ISOLATION, }, gtk_snapshot_push_isolation, snapshot_push_instr_isolation, 1, }, { "blur", 1, 0, { G_TYPE_DOUBLE, }, gtk_snapshot_push_blur, snapshot_push_instr_blur, 1, }, { "color-matrix", 2, 0, { GRAPHENE_TYPE_MATRIX, GRAPHENE_TYPE_VEC4, }, gtk_snapshot_push_color_matrix, snapshot_push_instr_color_matrix, 2, }, { "component-transfer", 4, 0, { GSK_TYPE_COMPONENT_TRANSFER, GSK_TYPE_COMPONENT_TRANSFER, GSK_TYPE_COMPONENT_TRANSFER, GSK_TYPE_COMPONENT_TRANSFER, }, gtk_snapshot_push_component_transfer, snapshot_push_instr_component_transfer, 2, }, { "repeat", 2, 0, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_RECT, }, gtk_snapshot_push_repeat, snapshot_push_instr_repeat, 2, }, { "clip", 1, 0, { GRAPHENE_TYPE_RECT, }, gtk_snapshot_push_clip, snapshot_push_instr_clip, 1, }, { "rounded-clip", 5, 0, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, }, gtk_snapshot_push_rounded_clip, snapshot_push_instr_rounded_clip, 1, }, { "fill", 2, 0, { GSK_TYPE_PATH, GSK_TYPE_FILL_RULE, }, gtk_snapshot_push_fill, snapshot_push_instr_fill, 1, }, { "stroke", 2, 0, { GSK_TYPE_PATH, GSK_TYPE_STROKE, }, gtk_snapshot_push_stroke, snapshot_push_instr_stroke, 1, }, { "shadow", 4, 4, { GDK_TYPE_RGBA, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gtk_snapshot_push_shadow, snapshot_push_instr_shadow, 1, }, { "blend", 1, 0, { GSK_TYPE_BLEND_MODE, }, gtk_snapshot_push_blend, snapshot_push_instr_blend, 2, }, { "mask", 1, 0, { GSK_TYPE_MASK_MODE, }, gtk_snapshot_push_mask, snapshot_push_instr_mask, 2, }, { "copy", 0, 0, {}, gtk_snapshot_push_copy, snapshot_push_instr_copy, 1, }, { "composite", 1, 0, { GSK_TYPE_PORTER_DUFF, }, gtk_snapshot_push_composite, snapshot_push_instr_composite, 2, }, { "cross-fade", 1, 0, { G_TYPE_DOUBLE, }, gtk_snapshot_push_cross_fade, snapshot_push_instr_cross_fade, 2, }, }; for (guint i = 0; i < G_N_ELEMENTS (instrs); i++) { if (g_strcmp0 (lookup_name, instrs[i].name) == 0) { *out = instrs[i]; return TRUE; } } return FALSE; } static void snapshot_transform_instr_transform (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_transform ( snapshot, g_value_get_boxed (&args[0])); } static void snapshot_transform_instr_transform_matrix (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_transform_matrix ( snapshot, g_value_get_boxed (&args[0])); } static void snapshot_transform_instr_translate (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_translate ( snapshot, g_value_get_boxed (&args[0])); } static void snapshot_transform_instr_translate_3d (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_translate_3d ( snapshot, g_value_get_boxed (&args[0])); } static void snapshot_transform_instr_rotate (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_rotate ( snapshot, g_value_get_double (&args[0])); } static void snapshot_transform_instr_rotate_3d (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_rotate_3d ( snapshot, g_value_get_double (&args[0]), g_value_get_boxed (&args[1])); } static void snapshot_transform_instr_scale (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_scale ( snapshot, g_value_get_double (&args[0]), g_value_get_double (&args[1])); } static void snapshot_transform_instr_scale_3d (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_scale_3d ( snapshot, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2])); } static void snapshot_transform_instr_perspective (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_scale_3d ( snapshot, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2])); } gboolean lookup_snapshot_transform_instr (const char *lookup_name, SnapshotInstr *out) { SnapshotInstr instrs[] = { { "transform", 1, 0, { GSK_TYPE_TRANSFORM, }, gtk_snapshot_transform, snapshot_transform_instr_transform, }, { "transform-matrix", 1, 0, { GRAPHENE_TYPE_MATRIX, }, gtk_snapshot_transform_matrix, snapshot_transform_instr_transform_matrix, }, { "translate", 1, 0, { GRAPHENE_TYPE_POINT, }, gtk_snapshot_translate, snapshot_transform_instr_translate, }, { "translate-3d", 1, 0, { GRAPHENE_TYPE_POINT3D, }, gtk_snapshot_translate_3d, snapshot_transform_instr_translate_3d, }, { "rotate", 1, 0, { G_TYPE_DOUBLE, }, gtk_snapshot_rotate, snapshot_transform_instr_rotate, }, { "rotate-3d", 2, 0, { G_TYPE_DOUBLE, GRAPHENE_TYPE_VEC3, }, gtk_snapshot_rotate_3d, snapshot_transform_instr_rotate_3d, }, { "scale", 2, 0, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gtk_snapshot_scale, snapshot_transform_instr_scale, }, { "scale-3d", 3, 0, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gtk_snapshot_scale_3d, snapshot_transform_instr_scale_3d, }, { "perspective", 1, 0, { G_TYPE_DOUBLE, }, gtk_snapshot_perspective, snapshot_transform_instr_perspective, }, }; for (guint i = 0; i < G_N_ELEMENTS (instrs); i++) { if (g_strcmp0 (lookup_name, instrs[i].name) == 0) { *out = instrs[i]; return TRUE; } } return FALSE; } static void snapshot_append_instr_node (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_node ( snapshot, g_value_get_boxed (&args[0])); } static void snapshot_append_instr_texture (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_texture ( snapshot, g_value_get_object (&args[0]), g_value_get_boxed (&args[1])); } static void snapshot_append_instr_scaled_texture (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_scaled_texture ( snapshot, g_value_get_object (&args[0]), g_value_get_enum (&args[1]), g_value_get_boxed (&args[2])); } static void snapshot_append_instr_color (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_color ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1])); } static void snapshot_append_instr_linear_gradient (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { guint n_stops = 0; GskColorStop stops[ARGBUF_SIZE] = { 0 }; n_stops = MIN (n_rest / 2, G_N_ELEMENTS (stops)); for (guint i = 0; i < n_stops; i++) { stops[i].offset = g_value_get_double (&rest[i * 2 + 0]); stops[i].color = *(GdkRGBA *) g_value_get_boxed (&rest[i * 2 + 1]); } gtk_snapshot_append_linear_gradient ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_boxed (&args[2]), stops, n_stops); } static void snapshot_append_instr_repeating_linear_gradient (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { guint n_stops = 0; GskColorStop stops[ARGBUF_SIZE] = { 0 }; n_stops = MIN (n_rest / 2, G_N_ELEMENTS (stops)); for (guint i = 0; i < n_stops; i++) { stops[i].offset = g_value_get_double (&rest[i * 2 + 0]); stops[i].color = *(GdkRGBA *) g_value_get_boxed (&rest[i * 2 + 1]); } gtk_snapshot_append_repeating_linear_gradient ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_boxed (&args[2]), stops, n_stops); } static void snapshot_append_instr_radial_gradient (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { guint n_stops = 0; GskColorStop stops[ARGBUF_SIZE] = { 0 }; n_stops = MIN (n_rest / 2, G_N_ELEMENTS (stops)); for (guint i = 0; i < n_stops; i++) { stops[i].offset = g_value_get_double (&rest[i * 2 + 0]); stops[i].color = *(GdkRGBA *) g_value_get_boxed (&rest[i * 2 + 1]); } gtk_snapshot_append_radial_gradient ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4]), g_value_get_double (&args[5]), stops, n_stops); } static void snapshot_append_instr_repeating_radial_gradient (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { guint n_stops = 0; GskColorStop stops[ARGBUF_SIZE] = { 0 }; n_stops = MIN (n_rest / 2, G_N_ELEMENTS (stops)); for (guint i = 0; i < n_stops; i++) { stops[i].offset = g_value_get_double (&rest[i * 2 + 0]); stops[i].color = *(GdkRGBA *) g_value_get_boxed (&rest[i * 2 + 1]); } gtk_snapshot_append_repeating_radial_gradient ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4]), g_value_get_double (&args[5]), stops, n_stops); } static void snapshot_append_instr_conic_gradient (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { guint n_stops = 0; GskColorStop stops[ARGBUF_SIZE] = { 0 }; n_stops = MIN (n_rest / 2, G_N_ELEMENTS (stops)); for (guint i = 0; i < n_stops; i++) { stops[i].offset = g_value_get_double (&rest[i * 2 + 0]); stops[i].color = *(GdkRGBA *) g_value_get_boxed (&rest[i * 2 + 1]); } gtk_snapshot_append_conic_gradient ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_double (&args[2]), stops, n_stops); } static void snapshot_append_instr_border (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { GskRoundedRect rrect = { 0 }; float border_width[4] = { 0 }; GdkRGBA border_color[4] = { 0 }; rrect.bounds = *(graphene_rect_t *) g_value_get_boxed (&args[0]); rrect.corner[0] = *(graphene_size_t *) g_value_get_boxed (&args[1]); rrect.corner[1] = *(graphene_size_t *) g_value_get_boxed (&args[2]); rrect.corner[2] = *(graphene_size_t *) g_value_get_boxed (&args[3]); rrect.corner[3] = *(graphene_size_t *) g_value_get_boxed (&args[4]); border_width[0] = g_value_get_double (&args[5]); border_width[1] = g_value_get_double (&args[6]); border_width[2] = g_value_get_double (&args[7]); border_width[3] = g_value_get_double (&args[8]); border_color[0] = *(GdkRGBA *) g_value_get_boxed (&args[9]); border_color[1] = *(GdkRGBA *) g_value_get_boxed (&args[10]); border_color[2] = *(GdkRGBA *) g_value_get_boxed (&args[11]); border_color[3] = *(GdkRGBA *) g_value_get_boxed (&args[12]); gtk_snapshot_append_border ( snapshot, &rrect, border_width, border_color); } static void snapshot_append_instr_inset_shadow (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { GskRoundedRect rrect = { 0 }; rrect.bounds = *(graphene_rect_t *) g_value_get_boxed (&args[0]); rrect.corner[0] = *(graphene_size_t *) g_value_get_boxed (&args[1]); rrect.corner[1] = *(graphene_size_t *) g_value_get_boxed (&args[2]); rrect.corner[2] = *(graphene_size_t *) g_value_get_boxed (&args[3]); rrect.corner[3] = *(graphene_size_t *) g_value_get_boxed (&args[4]); gtk_snapshot_append_inset_shadow ( snapshot, &rrect, g_value_get_boxed (&args[5]), g_value_get_double (&args[6]), g_value_get_double (&args[7]), g_value_get_double (&args[8]), g_value_get_double (&args[9])); } static void snapshot_append_instr_outset_shadow (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { GskRoundedRect rrect = { 0 }; rrect.bounds = *(graphene_rect_t *) g_value_get_boxed (&args[0]); rrect.corner[0] = *(graphene_size_t *) g_value_get_boxed (&args[1]); rrect.corner[1] = *(graphene_size_t *) g_value_get_boxed (&args[2]); rrect.corner[2] = *(graphene_size_t *) g_value_get_boxed (&args[3]); rrect.corner[3] = *(graphene_size_t *) g_value_get_boxed (&args[4]); gtk_snapshot_append_outset_shadow ( snapshot, &rrect, g_value_get_boxed (&args[5]), g_value_get_double (&args[6]), g_value_get_double (&args[7]), g_value_get_double (&args[8]), g_value_get_double (&args[9])); } static void snapshot_append_instr_layout (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_layout ( snapshot, g_value_get_object (&args[0]), g_value_get_boxed (&args[1])); } static void snapshot_append_instr_fill (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_fill ( snapshot, g_value_get_boxed (&args[0]), g_value_get_enum (&args[1]), g_value_get_boxed (&args[2])); } static void snapshot_append_instr_stroke (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_stroke ( snapshot, g_value_get_boxed (&args[0]), g_value_get_boxed (&args[1]), g_value_get_boxed (&args[2])); } static void snapshot_append_instr_paste (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { gtk_snapshot_append_paste ( snapshot, g_value_get_boxed (&args[0]), g_value_get_uint64 (&args[1])); } static void snapshot_append_instr_paintable (GtkSnapshot *snapshot, const GValue args[], const GValue rest[], guint n_rest) { graphene_rect_t rect = { 0 }; rect = *(graphene_rect_t *) g_value_get_boxed (&args[1]); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &rect.origin); gdk_paintable_snapshot ( g_value_get_object (&args[0]), snapshot, rect.size.width, rect.size.height); gtk_snapshot_restore (snapshot); } gboolean lookup_snapshot_append_instr (const char *lookup_name, SnapshotInstr *out) { SnapshotInstr instrs[] = { { "node", 1, 0, { GSK_TYPE_RENDER_NODE, }, gtk_snapshot_append_node, snapshot_append_instr_node, }, { "texture", 2, 0, { GDK_TYPE_TEXTURE, GRAPHENE_TYPE_RECT, }, gtk_snapshot_append_texture, snapshot_append_instr_texture, }, { "scaled-texture", 3, 0, { GDK_TYPE_TEXTURE, GSK_TYPE_SCALING_FILTER, GRAPHENE_TYPE_RECT, }, gtk_snapshot_append_scaled_texture, snapshot_append_instr_scaled_texture, }, { "color", 2, 0, { GDK_TYPE_RGBA, GRAPHENE_TYPE_RECT, }, gtk_snapshot_append_color, snapshot_append_instr_color, }, { "linear-gradient", 5, 2, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_POINT, GRAPHENE_TYPE_POINT, G_TYPE_DOUBLE, GDK_TYPE_RGBA, }, gtk_snapshot_append_linear_gradient, snapshot_append_instr_linear_gradient, }, { "repeating-linear-gradient", 5, 2, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_POINT, GRAPHENE_TYPE_POINT, G_TYPE_DOUBLE, GDK_TYPE_RGBA, }, gtk_snapshot_append_repeating_linear_gradient, snapshot_append_instr_repeating_linear_gradient, }, { "radial-gradient", 8, 2, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_POINT, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, GDK_TYPE_RGBA, }, gtk_snapshot_append_radial_gradient, snapshot_append_instr_radial_gradient, }, { "repeating-radial-gradient", 8, 2, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_POINT, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, GDK_TYPE_RGBA, }, gtk_snapshot_append_repeating_radial_gradient, snapshot_append_instr_repeating_radial_gradient, }, { "conic-gradient", 5, 2, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_POINT, G_TYPE_DOUBLE, G_TYPE_DOUBLE, GDK_TYPE_RGBA, }, gtk_snapshot_append_conic_gradient, snapshot_append_instr_conic_gradient, }, { "border", 13, 0, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, GDK_TYPE_RGBA, GDK_TYPE_RGBA, GDK_TYPE_RGBA, GDK_TYPE_RGBA, }, gtk_snapshot_append_border, snapshot_append_instr_border, }, { "inset-shadow", 10, 0, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GDK_TYPE_RGBA, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gtk_snapshot_append_inset_shadow, snapshot_append_instr_inset_shadow, }, { "outset-shadow", 10, 0, { GRAPHENE_TYPE_RECT, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GRAPHENE_TYPE_SIZE, GDK_TYPE_RGBA, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gtk_snapshot_append_outset_shadow, snapshot_append_instr_outset_shadow, }, { "layout", 2, 0, { PANGO_TYPE_LAYOUT, GDK_TYPE_RGBA, }, gtk_snapshot_append_layout, snapshot_append_instr_layout, }, { "fill", 3, 0, { GSK_TYPE_PATH, GSK_TYPE_FILL_RULE, GDK_TYPE_RGBA, }, gtk_snapshot_append_fill, snapshot_append_instr_fill, }, { "stroke", 3, 0, { GSK_TYPE_PATH, GSK_TYPE_STROKE, GDK_TYPE_RGBA, }, gtk_snapshot_append_stroke, snapshot_append_instr_stroke, }, { "paste", 2, 0, { GRAPHENE_TYPE_RECT, G_TYPE_UINT64, }, gtk_snapshot_append_paste, snapshot_append_instr_paste, }, { "paintable", 2, 0, { GDK_TYPE_PAINTABLE, GRAPHENE_TYPE_RECT, }, gdk_paintable_snapshot, snapshot_append_instr_paintable, }, }; for (guint i = 0; i < G_N_ELEMENTS (instrs); i++) { if (g_strcmp0 (lookup_name, instrs[i].name) == 0) { *out = instrs[i]; return TRUE; } } return FALSE; } bazaar-org-bazaar-48f93f4/bge/wdgt/lookup/transform.c000066400000000000000000000131641524000504200225350ustar00rootroot00000000000000/* transform.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "lookup.h" static GskTransform * transform_instr_transform (GskTransform *next, const GValue args[]) { return gsk_transform_transform ( next, g_value_get_boxed (&args[0])); } static GskTransform * transform_instr_invert (GskTransform *next, const GValue args[]) { return gsk_transform_transform ( next, g_value_get_boxed (&args[0])); } static GskTransform * transform_instr_matrix (GskTransform *next, const GValue args[]) { return gsk_transform_matrix ( next, g_value_get_boxed (&args[0])); } static GskTransform * transform_instr_matrix_2d (GskTransform *next, const GValue args[]) { return gsk_transform_matrix_2d ( next, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2]), g_value_get_double (&args[3]), g_value_get_double (&args[4]), g_value_get_double (&args[5])); } static GskTransform * transform_instr_translate (GskTransform *next, const GValue args[]) { return gsk_transform_translate ( next, g_value_get_boxed (&args[0])); } static GskTransform * transform_instr_translate_3d (GskTransform *next, const GValue args[]) { return gsk_transform_translate_3d ( next, g_value_get_boxed (&args[0])); } static GskTransform * transform_instr_skew (GskTransform *next, const GValue args[]) { return gsk_transform_skew ( next, g_value_get_double (&args[0]), g_value_get_double (&args[1])); } static GskTransform * transform_instr_rotate (GskTransform *next, const GValue args[]) { return gsk_transform_rotate ( next, g_value_get_double (&args[0])); } static GskTransform * transform_instr_rotate_3d (GskTransform *next, const GValue args[]) { return gsk_transform_rotate_3d ( next, g_value_get_double (&args[0]), g_value_get_boxed (&args[1])); } static GskTransform * transform_instr_scale (GskTransform *next, const GValue args[]) { return gsk_transform_scale ( next, g_value_get_double (&args[0]), g_value_get_double (&args[1])); } static GskTransform * transform_instr_scale_3d (GskTransform *next, const GValue args[]) { return gsk_transform_scale_3d ( next, g_value_get_double (&args[0]), g_value_get_double (&args[1]), g_value_get_double (&args[2])); } static GskTransform * transform_instr_perspective (GskTransform *next, const GValue args[]) { return gsk_transform_perspective ( next, g_value_get_double (&args[0])); } gboolean lookup_transform_instr (const char *lookup_name, TransformInstr *out) { TransformInstr instrs[] = { { "transform", 1, { GSK_TYPE_TRANSFORM, }, gsk_transform_transform, transform_instr_transform, }, { "invert", 0, {}, gsk_transform_invert, transform_instr_invert, }, { "matrix", 1, { GRAPHENE_TYPE_MATRIX, }, gsk_transform_matrix, transform_instr_matrix, }, { "matrix-2d", 6, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_transform_matrix_2d, transform_instr_matrix_2d, }, { "translate", 1, { GRAPHENE_TYPE_POINT, }, gsk_transform_translate, transform_instr_translate, }, { "translate-3d", 1, { GRAPHENE_TYPE_POINT3D, }, gsk_transform_translate_3d, transform_instr_translate_3d, }, { "skew", 2, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_transform_skew, transform_instr_skew, }, { "rotate", 1, { G_TYPE_DOUBLE, }, gsk_transform_rotate, transform_instr_rotate, }, { "rotate-3d", 2, { G_TYPE_DOUBLE, GRAPHENE_TYPE_VEC3, }, gsk_transform_rotate_3d, transform_instr_rotate_3d, }, { "scale", 2, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_transform_scale, transform_instr_scale, }, { "scale-3d", 3, { G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, }, gsk_transform_scale_3d, transform_instr_scale_3d, }, { "perspective", 1, { G_TYPE_DOUBLE, }, gsk_transform_perspective, transform_instr_perspective, }, }; for (guint i = 0; i < G_N_ELEMENTS (instrs); i++) { if (g_strcmp0 (lookup_name, instrs[i].name) == 0) { *out = instrs[i]; return TRUE; } } return FALSE; } bazaar-org-bazaar-48f93f4/bge/wdgt/meson.build000066400000000000000000000003061524000504200212010ustar00rootroot00000000000000bge_sources += files( 'bge-wdgt-spec.c', 'bge-easing.c', ) bge_headers += files( 'bge-wdgt-spec.h', 'bge-wdgt-renderer.h', 'bge-easing.h', ) subdir('util') subdir('lookup') subdir('fmt') bazaar-org-bazaar-48f93f4/bge/wdgt/util/000077500000000000000000000000001524000504200200155ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/bge/wdgt/util/marshal.c000066400000000000000000000154011524000504200216110ustar00rootroot00000000000000/* marshal.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "marshal.h" void _marshal_DIRECT__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_DIRECT__ARGS_DIRECT) (gpointer data1, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_DIRECT__ARGS_DIRECT callback; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values >= 1); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_DIRECT__ARGS_DIRECT) (marshal_data ? marshal_data : cc->callback); callback (data1, return_value, n_param_values - 1, param_values + 1, data2); } void _marshal_BOXED__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gpointer (*GMarshalFunc_BOXED__ARGS_DIRECT) (gpointer data1, guint n_param_values, const GValue *param_values, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOXED__ARGS_DIRECT callback; gpointer v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values >= 1); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOXED__ARGS_DIRECT) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, n_param_values - 1, param_values + 1, data2); g_value_take_boxed (return_value, v_return); } void _marshal_BOOL__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gboolean (*GMarshalFunc_BOOL__ARGS_DIRECT) (gpointer data1, guint n_param_values, const GValue *param_values, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOOL__ARGS_DIRECT callback; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values >= 1); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOOL__ARGS_DIRECT) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, n_param_values - 1, param_values + 1, data2); g_value_set_boolean (return_value, v_return); } void _marshal_DOUBLE__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gdouble (*GMarshalFunc_DOUBLE__ARGS_DIRECT) (gpointer data1, guint n_param_values, const GValue *param_values, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_DOUBLE__ARGS_DIRECT callback; gdouble v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values >= 1); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_DOUBLE__ARGS_DIRECT) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, n_param_values - 1, param_values + 1, data2); g_value_set_double (return_value, v_return); } bazaar-org-bazaar-48f93f4/bge/wdgt/util/marshal.h000066400000000000000000000046341524000504200216240ustar00rootroot00000000000000/* marshal.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bge.h" G_BEGIN_DECLS void _marshal_DIRECT__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data); void _marshal_BOXED__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data); void _marshal_BOOL__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data); void _marshal_DOUBLE__ARGS_DIRECT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data); G_END_DECLS bazaar-org-bazaar-48f93f4/bge/wdgt/util/meson.build000066400000000000000000000000471524000504200221600ustar00rootroot00000000000000bge_sources += files( 'marshal.c', ) bazaar-org-bazaar-48f93f4/build-aux/000077500000000000000000000000001524000504200172305ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/build-aux/flatpak/000077500000000000000000000000001524000504200206525ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/build-aux/flatpak/flatpak-builder-tools/000077500000000000000000000000001524000504200250565ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/build-aux/flatpak/fuse-2.9.2-closefrom.patch000066400000000000000000000007001524000504200252670ustar00rootroot00000000000000--- fuse-2.9.2/util/ulockmgr_server.c.closefromfix 2019-01-04 05:33:33.000000000 -0800 +++ fuse-2.9.2/util/ulockmgr_server.c 2022-07-12 12:29:56.445402244 -0700 @@ -124,7 +124,7 @@ return res; } -static int closefrom(int minfd) +static int _closefrom(int minfd) { DIR *dir = opendir("/proc/self/fd"); if (dir) { @@ -384,7 +384,7 @@ dup2(nullfd, 1); } close(3); - closefrom(5); + _closefrom(5); while (1) { char c; int sock; bazaar-org-bazaar-48f93f4/build-aux/flatpak/fuse-2.9.2-namespace-conflict-fix.patch000066400000000000000000000010641524000504200276210ustar00rootroot00000000000000diff -up fuse-2.9.2/include/fuse_kernel.h.conflictfix fuse-2.9.2/include/fuse_kernel.h --- fuse-2.9.2/include/fuse_kernel.h.conflictfix 2013-06-26 09:31:57.862198038 -0400 +++ fuse-2.9.2/include/fuse_kernel.h 2013-06-26 09:32:19.679198365 -0400 @@ -88,12 +88,16 @@ #ifndef _LINUX_FUSE_H #define _LINUX_FUSE_H -#include +#ifdef __linux__ +#include +#else +#include #define __u64 uint64_t #define __s64 int64_t #define __u32 uint32_t #define __s32 int32_t #define __u16 uint16_t +#endif /* * Version negotiation: bazaar-org-bazaar-48f93f4/build-aux/flatpak/fuse-disable-sys-mount-under-flatpak.patch000066400000000000000000000011671524000504200307520ustar00rootroot00000000000000From 1ec935f4abecd08957affc7b21bae6bf5be78931 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Thu, 12 Apr 2018 01:47:57 -0700 Subject: [PATCH] libfuse: disable sys mount under flatpak --- lib/mount.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/mount.c b/lib/mount.c index 7a18c11..1667db2 100644 --- a/lib/mount.c +++ b/lib/mount.c @@ -392,6 +392,9 @@ static int fuse_mount_sys(const char *mnt, struct mount_opts *mo, int fd; int res; + /* disable in flatpak */ + return -2; + if (!mnt) { fprintf(stderr, "fuse: missing mountpoint parameter\n"); return -1; -- 2.17.0.rc2 bazaar-org-bazaar-48f93f4/build-aux/flatpak/fusermount-wrapper.sh000066400000000000000000000006431524000504200250760ustar00rootroot00000000000000#!/bin/sh set -eo pipefail echo "Running fusermount wrapper, redirecting to host..." export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/flatpak/bus binary="fusermount" if flatpak-spawn --host fusermount3 --version &> /dev/null ; then binary="fusermount3" fi [ ! -z "$_FUSE_COMMFD" ] && export FD_ARGS="--env=_FUSE_COMMFD=${_FUSE_COMMFD} --forward-fd=${_FUSE_COMMFD}" exec flatpak-spawn --host ${FD_ARGS} "$binary" "$@" bazaar-org-bazaar-48f93f4/build-aux/flatpak/io.github.kolunmi.Bazaar.json000066400000000000000000000316651524000504200263240ustar00rootroot00000000000000{ "id": "io.github.kolunmi.Bazaar", "runtime": "org.gnome.Platform", "runtime-version": "50", "sdk": "org.gnome.Sdk", "command": "bazaar-daemon", "sdk-extensions": [ "org.freedesktop.Sdk.Extension.llvm20" ], "tags": [ "nightly" ], "desktop-file-name-suffix": " (Nightly)", "finish-args": [ "--share=network", "--share=ipc", "--socket=fallback-x11", "--socket=wayland", "--device=dri", "--filesystem=/var/lib/flatpak", "--filesystem=xdg-data/flatpak", "--talk-name=org.freedesktop.Flatpak", "--system-talk-name=org.freedesktop.Flatpak.SystemHelper", "--filesystem=/var/tmp", "--filesystem=~/.var/app", "--system-talk-name=org.freedesktop.Accounts", "--talk-name=org.freedesktop.impl.portal.PermissionStore" ], "cleanup": [ "/share/zsh", "/share/gettext", "/include", "/lib/pkgconfig", "/lib/cmake", "/share/applications/mimeinfo.cache", "/share/bash-completion", "/share/zsh/site-functions", "/share/icons/hicolor/icon-theme.cache", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules": [ { "name": "bazaar", "buildsystem": "meson", "build-options": { "append-path": "/usr/lib/sdk/llvm20/bin", "prepend-ld-library-path": "/usr/lib/sdk/llvm20/lib" }, "config-opts": [ "-Ddevelopment=true", "-Dsandboxed_libflatpak=true", "-Dhardcoded_main_config_path=/run/host/etc/bazaar/bazaar.yaml", "-Dhardcoded_content_config_path=/run/host/etc/bazaar/config.yaml", "-Dhardcoded_blocklist_path=/run/host/etc/bazaar/blocklist.txt" ], "sources": [ { "type": "dir", "path": "../.." } ], "modules": [ { "name" : "libdex", "buildsystem" : "meson", "config-opts" : [ "--buildtype=debugoptimized", "-Ddocs=false", "-Dintrospection=enabled", "-Dexamples=false", "-Dtests=false", "-Dsysprof=false" ], "sources" : [ { "type" : "git", "url" : "https://gitlab.gnome.org/GNOME/libdex.git", "commit" : "26d094f2d7a4561862cce3efa00bb5aa1e4b0720", "tag" : "1.2.beta" } ] }, { "name": "md4c", "buildsystem": "cmake", "config-opts": [ "-DBUILD_MD2HTML_EXECUTABLE=Off" ], "sources": [ { "type": "git", "url": "https://github.com/mity/md4c.git", "commit": "472c417005c2c71b8617de4f7b8d6b30411d78f4", "tag": "release-0.5.3", "x-checker-data": { "type": "git", "tag-pattern": "^release-([\\d.]+)$" } } ] }, { "name": "malcontent", "buildsystem": "meson", "config-opts": [ "-Dui=disabled", "-Dinstalled_tests=false" ], "sources": [ { "type": "git", "url": "https://gitlab.freedesktop.org/pwithnall/malcontent.git", "commit": "3ba80995bb25b7aeda7e21d547f9e39ff9a81736", "tag": "0.12.0" }, { "type": "shell", "commands": [ "sed -i \"/subdir('tests')/d\" libmalcontent/meson.build", "sed -i \"/subdir('tests')/d\" meson.build", "sed -i \"/subdir('pam')/d\" meson.build" ] } ] }, { "name": "flatpak", "buildsystem": "meson", "config-opts": [ "-Dgtkdoc=disabled", "-Ddocbook_docs=disabled", "-Dtests=false", "-Dman=disabled", "-Dseccomp=disabled", "-Dselinux_module=disabled", "-Dmalcontent=enabled", "-Dsandboxed_triggers=false", "-Dsystem_helper=enabled", "-Dsystemd=disabled", "-Dsystem_install_dir=/var/lib/flatpak", "-Dsystem_bubblewrap=bwrap", "-Dsystem_dbus_proxy=xdg-dbus-proxy", "--sysconfdir=/var/run/host/etc" ], "cleanup": [ "/bin/flatpak-bisect", "/bin/flatpak-coredumpctl", "/etc/profile.d", "/lib/systemd", "/share/dbus-1/interfaces/org.freedesktop.*", "/share/dbus-1/services/org.freedesktop.*", "/share/flatpak/triggers", "/share/gdm", "/share/zsh", "/share/fish", "/lib/sysusers.d", "/lib/tmpfiles.d" ], "post-install": [ "install -Dpm0755 -t /app/bin /usr/bin/update-{mime,desktop}-database" ], "sources": [ { "type": "git", "url": "https://github.com/flatpak/flatpak", "commit": "abc06c8bf434171e931426e76a9eb0bfe17cfabd", "tag": "1.18.1", "x-checker-data": { "type": "git", "tag-pattern": "^(1\\.[0-8][02468]\\..*)$", "is-important": true } } ], "modules": [ { "name": "python3-pyparsing", "buildsystem": "simple", "cleanup": [ "*" ], "build-commands": [ "pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} pyparsing" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", "sha256": "c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", "x-checker-data": { "type": "pypi", "name": "pyparsing" } }, { "type": "file", "url": "https://files.pythonhosted.org/packages/69/59/b6fc2188dfc7ea4f936cd12b49d707f66a1cb7a1d2c16172963534db741b/flit_core-3.12.0.tar.gz", "sha256": "18f63100d6f94385c6ed57a72073443e1a71a4acb4339491615d0f16d6ff01b2", "x-checker-data": { "type": "pypi", "name": "flit_core", "versions": { "<": "4" } } } ] }, { "name": "python3-babel", "buildsystem": "simple", "cleanup": [ "*" ], "build-commands": [ "pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} --no-build-isolation babel" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", "sha256": "b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", "x-checker-data": { "type": "pypi", "name": "babel" } } ] }, { "name": "polkit", "buildsystem": "meson", "config-opts": [ "-Dlibs-only=true", "-Dintrospection=false", "-Dauthfw=shadow" ], "rm-configure": true, "build-options": { "env": { "CFLAGS": "-Wno-implicit-function-declaration" } }, "cleanup": [ "/bin/*", "/etc/dbus-1", "/etc/pam.d", "/include", "/lib/pkgconfig", "/lib/polkit-1", "/share/dbus-1/system-services/*", "/share/polkit-1" ], "sources": [ { "type": "git", "url": "https://github.com/polkit-org/polkit", "commit": "9e4894c969eecf26a3ba762f4f7a268aa0fb3e51", "tag": "127", "x-checker-data": { "type": "git", "tag-pattern": "^([\\d.]+)$" } } ], "modules": [ { "name": "ostree", "build-options": { "env": { "BASH_COMPLETIONSDIR": "/app/share/bash-completion/completions" }, "config-opts": [ "--disable-man", "--enable-introspection=no", "--with-curl", "--without-libsystemd" ] }, "cleanup": [ "/bin", "/etc/grub.d", "/etc/ostree", "/share/ostree", "/libexec" ], "sources": [ { "type": "git", "url": "https://github.com/ostreedev/ostree", "tag": "v2026.3", "commit": "867d4e000137d466e06c5173691458e0b4a38a26", "x-checker-data": { "type": "anitya", "project-id": 10899, "tag-template": "v$version", "is-important": true } } ], "modules": [ { "name": "libfuse", "build-options": { "env": { "MOUNT_FUSE_PATH": "../tmp/" } }, "config-opts": [ "UDEV_RULES_PATH=/app/etc/udev/rules.d", "INIT_D_PATH=/app/etc/init.d" ], "cleanup": [ "/bin/ulockmgr_server", "/etc" ], "post-install": [ "install -Dpm0755 ./fusermount-wrapper.sh /app/bin/fusermount" ], "sources": [ { "type": "archive", "url": "https://github.com/libfuse/libfuse/releases/download/fuse-2.9.9/fuse-2.9.9.tar.gz", "sha256": "d0e69d5d608cc22ff4843791ad097f554dd32540ddc9bed7638cc6fea7c1b4b5" }, { "type": "patch", "path": "fuse-2.9.2-namespace-conflict-fix.patch" }, { "type": "patch", "path": "fuse-disable-sys-mount-under-flatpak.patch" }, { "type": "patch", "path": "fuse-2.9.2-closefrom.patch" }, { "type": "file", "path": "fusermount-wrapper.sh" } ] } ] }, { "name": "xdg-dbus-proxy", "buildsystem": "meson", "config-opts": [ "-Dman=disabled", "-Dtests=false" ], "sources": [ { "type": "git", "url": "https://github.com/flatpak/xdg-dbus-proxy", "commit": "f0fe358bb3a864a722f348cb942f30a29aafb9b2", "tag": "0.1.8", "x-checker-data": { "type": "git", "url-template": "$version" } } ] } ] } ] } ] }, { "name": "bubblewrap", "buildsystem": "meson", "config-opts": [ "-Dman=disabled", "-Dselinux=disabled", "-Dtests=false" ], "sources": [ { "type": "git", "url": "https://github.com/containers/bubblewrap", "commit": "1b80120ef26a28e065e67f89bfef873f13bdd317", "tag": "v0.11.2", "x-checker-data": { "type": "git", "url-template": "$version" } } ] } ] } bazaar-org-bazaar-48f93f4/data/000077500000000000000000000000001524000504200162475ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/dbus/000077500000000000000000000000001524000504200172045ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/dbus/io.github.kolunmi.Bazaar.SearchProvider.service.in000066400000000000000000000001451524000504200306560ustar00rootroot00000000000000[D-BUS Service] Name=io.github.kolunmi.Bazaar.SearchProvider Exec=@bindir@/bazaar-daemon --no-window bazaar-org-bazaar-48f93f4/data/dbus/meson.build000066400000000000000000000005261524000504200213510ustar00rootroot00000000000000service_conf = configuration_data() service_conf.set('bindir', get_option('prefix') / get_option('bindir')) configure_file( input: 'io.github.kolunmi.Bazaar.SearchProvider.service.in', output: 'io.github.kolunmi.Bazaar.SearchProvider.service', configuration: service_conf, install_dir: get_option('datadir') / 'dbus-1' / 'services' ) bazaar-org-bazaar-48f93f4/data/icons/000077500000000000000000000000001524000504200173625ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/000077500000000000000000000000001524000504200210215ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/scalable/000077500000000000000000000000001524000504200225675ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/scalable/apps/000077500000000000000000000000001524000504200235325ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/scalable/apps/io.github.kolunmi.Bazaar.Devel.svg000066400000000000000000000102551524000504200320600ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/scalable/apps/io.github.kolunmi.Bazaar.svg000066400000000000000000000103051524000504200310160ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/symbolic/000077500000000000000000000000001524000504200226425ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/symbolic/apps/000077500000000000000000000000001524000504200236055ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/data/icons/hicolor/symbolic/apps/io.github.kolunmi.Bazaar-symbolic.svg000066400000000000000000000047301524000504200327150ustar00rootroot00000000000000 bazaar-org-bazaar-48f93f4/data/icons/io.github.kolunmi.Bazaar.Source.svg000066400000000000000000007446121524000504200261240ustar00rootroot00000000000000 Adwaita Icon Template image/svg+xml GNOME Design Team Adwaita Icon Template Hicolor Symbolic bazaar-org-bazaar-48f93f4/data/icons/meson.build000066400000000000000000000010731524000504200215250ustar00rootroot00000000000000application_id = 'io.github.kolunmi.Bazaar' scalable_dir = 'hicolor' / 'scalable' / 'apps' if get_option('development') icon_file = '@0@.Devel.svg'.format(application_id) else icon_file = '@0@.svg'.format(application_id) endif install_data( scalable_dir / icon_file, install_dir: get_option('datadir') / 'icons' / scalable_dir, rename: '@0@.svg'.format(application_id) ) symbolic_dir = 'hicolor' / 'symbolic' / 'apps' install_data( symbolic_dir / ('@0@-symbolic.svg').format(application_id), install_dir: get_option('datadir') / 'icons' / symbolic_dir ) bazaar-org-bazaar-48f93f4/data/io.github.kolunmi.Bazaar.desktop.in000066400000000000000000000011371524000504200250150ustar00rootroot00000000000000[Desktop Entry] Name=Bazaar GenericName=App Store Comment=Add, remove or update flatpak software on this computer Exec=bazaar-daemon %U Icon=io.github.kolunmi.Bazaar Terminal=false Type=Application Categories=GTK;Utility; Keywords=System;Package;Manager;Discover;Flatpak;Software;App;Store; StartupNotify=true MimeType=x-scheme-handler/appstream;x-scheme-handler/flatpak;x-scheme-handler/flatpak+https;application/vnd.flatpak;application/vnd.flatpak.ref;application/metainfo+xml; Actions=new-window; X-Purism-FormFactor=Workstation;Mobile; [Desktop Action new-window] Name=New Window Exec=bazaar-daemon %U bazaar-org-bazaar-48f93f4/data/io.github.kolunmi.Bazaar.gschema.xml000066400000000000000000000104531524000504200251460ustar00rootroot00000000000000 true Hide EOL Entries Hide EOL entries and entries depending on them false Only Show Free Software Hide proprietary software false Show Only Flathub Content Hide apps which do not originate from Flathub false Show Only Verified Content Hide apps which are not verified on Flathub 'accent-color' Global Progress Bar Theme Describes the look of the global progress bar (1220, 900) Saved Window Dimensions The window dimensions to be used by the next Bazaar window true Force Adwaita Icon Theme Override the icon theme with Adwaita true Show Permission Warning Banner Show a warning banner on the permissions page true Check For Ubuntu Whether to check for and warn about Ubuntu's broken apparmor permissions on startup false Automatic Updates Whether to auto check for and install app updates in the background true Auto Update Notifications Show a notification after apps are automatically updated in the background 0 Last Update Check Unix timestamp of the last update check -1 Update Check Hour Offset Randomized hour offset added to the daily update check window, to avoid all clients checking at once 0 Last Refresh Time timestamp of the last successful refresh 0 timestamp of the last "updates out of date" notification bazaar-org-bazaar-48f93f4/data/io.github.kolunmi.Bazaar.metainfo.xml.in000066400000000000000000000651561524000504200257600ustar00rootroot00000000000000 io.github.kolunmi.Bazaar CC0-1.0 GPL-3.0-or-later Bazaar Discover and install apps

A fast and modern app store for Linux with a focus on discovering and installing Flatpak apps and add-ons, particularly from Flathub.

  • Queue multiple installs and keep browsing
  • Easily view app permissions
  • Sign in to Flathub to view and manage your favorites
  • Search apps directly from GNOME Shell
pointing keyboard touch 360 The Bazaar Contributors https://usebazaar.org/ https://github.com/bazaar-org/bazaar https://github.com/bazaar-org/bazaar/issues https://l10n.gnome.org/module/bazaar/ https://github.com/bazaar-org/bazaar/blob/master/README.md https://github.com/bazaar-org/bazaar/discussions https://github.com/sponsors/kolunmi https://github.com/kolunmi https://github.com/bazaar-org/bazaar bazaar io.github.kolunmi.Bazaar.desktop #ffbe6f #c11c2b https://github.com/user-attachments/assets/e67f35f0-9566-4068-93f5-cb814db0aedd The home page displaying Flathub apps https://github.com/user-attachments/assets/3de5d9a0-9c5d-461a-964c-7d680cc5f1a2 App page for Exhibit https://github.com/user-attachments/assets/18424ebc-73a1-41b5-956e-57dcbcb592e6 Library page https://github.com/user-attachments/assets/73fa606d-9a54-4169-a692-a14375183b0c Search page https://github.com/user-attachments/assets/e38681c0-a064-4075-8a11-3d5f5d84703c Category page https://github.com/bazaar-org/bazaar/releases/tag/v0.9.4

Changes

  • Added shortcuts for zoom actions in the screenshot viewer
  • Clicking other app tiles on an app page now creates a new page
  • Fixed keyboard navigation on the "Curated" page

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.9.3

Changes

  • Display Flathub's seasonal curated topic sections
  • Many bug fixes related to the new background service introduced in 0.9.2

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.9.2

New Features

  • Added an optional auto-update system
  • Greatly reduced memory usage when the app is running in the background
  • Metainfo files can now be opened in Bazaar directly from the file manager
  • Added scrollbars to the screenshot viewer

Bug Fixes

  • Fixed an issue where EOL rebases were not handled properly
  • Reduced the clunkiness of the "Leftover User Data" page

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.9.1

New Features

  • Added a "Similar Apps" section

Bug Fixes

  • Fixed a crash when opening a second window while logged in
  • Only start on the Curated section if it is not empty
  • Stopped the carousel from changing the layout while screenshots are loading

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.9.0

New Features

  • Added three new tabs to the "We â¤ï¸ Games" section
  • App links can now span two columns
  • Improved the apps startup time
  • Improved the image viewer opening animation
  • Made many accessibility improvements

Bug Fixes

  • Fixed an issue where the app page would sometimes not update when busy refreshing

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.8.2

Maintenance Release

  • Add mobile search filter
  • Fix infinite fetching of user data folder size
  • Add Network subcategories
  • Remove tag list SEO-ism
  • Rework some UI components

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.8.1

Hot fix for an issue where updates would not show. Also adds a cancel button to the app tiles on the search page.

Other Fixes

  • Fix Flathub page svg graphics being rendered with a solid fill
  • Disable broken graphs for very new Flathub apps
  • Add workaround for KRunner sending broken app IDs

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.8.0

New Features

  • Add support for installing (.flatpak) bundles
  • New progress indicators
  • The ability to view and delete app caches

Fixes

  • Fix the download context tile not displaying a label for non-Flathub apps
  • Reduce RAM usage when no windows are open
  • Fix an issue where a window could open at the wrong size while a transaction was running
  • Many other bug fixes

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.15

New Features

  • Add support for previewing metainfo files
  • Show total installed apps number in the library view
  • Make exported desktop search provider app icon sizes adjustable

Fixes

  • Fix download timeline graph rerendering too much
  • Fix animated widget ticks not being in sync with fps
  • Fix progress animation for vertical pride flag stripes
  • Many other bug fixes

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.14

New Features

  • Rework the add-ons dialog
  • Add a gradient under the download timeline
  • Add a filter button to the search page
  • Add a button to show the EULA for some proprietary apps
  • Make the names of verified developers clickable links

Fixes

  • Fix the colours of the update card
  • Make the update banner follow the accent colour

Thanks for reading, and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.13

Changes

  • Update to GNOME 50 Runtime
  • Force Adwaita icon theme to ensure consistency
  • Add support for clickable links in app descriptions
  • Add timed lingering cache to async textures, thereby reducing image flickering
  • Add ability to sort installed apps by size in library view
  • Add BAZAAR_N_DOWNLOAD_WORKERS envvar support

Bug Fixes

  • Fix double shadow around update cards
  • Fix global progress button displaying a focus ring when invisible
  • Fix incorrect total size displayed on update tasks
  • Fix empty UI when Flathub hasn't finished syncing yet

Thanks for reading and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.11

This release contains many technical improvements. This changelog reflects roughly 2 weeks of work.

Changes

  • Respect system parental controls settings
  • Reap download workers when all windows are closed, reducing total memory usage
  • Add mnemonics to full app view
  • Many updates to language translations

Bug Fixes

  • Fix broken library page when backing installed apps model is empty
  • Fix int casting bug that was causing RetroDeck to appear to be 18.4 exabytes
  • Make "all apps" category pages respect global filters
  • Fix some text wrapping issues

Thanks for reading and have a great day!

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.10

This release fixes some bugs and greatly improves search functionality.

If you missed the previous release, in 0.7.9 we also added the ability to cancel transactions in the library view, a brand new screenshots carousel, search suggestion buttons, and app runtime size information. You can also now skip confirmation dialogs by holding shift as you start a transaction.

Thanks for reading!

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.9

**New Features**

  • Search suggestion pills
  • **Cancel installation** transactions
  • Skip dialogs by pressing shift
  • Runtime size info for app pages

**Updated**

  • Redesigned "What's New" dialog
  • Improved search results by utilizing Flathub rankings
  • Improved screenshots carousel
https://github.com/bazaar-org/bazaar/releases/tag/v0.7.8

This release lets you view and remove user-scoped installed apps from the library page in the Flatpak version of the app. Installing from user remotes is not supported yet.

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.7

This release comes with the following improvements:

  • Merges the task sidebar and install page into the library page
  • Add installed version numbers of each app on the library and app pages
  • Add donations dialog
  • Fix broken add-on and runtime eol detection
  • Add `enable-bulk-install` key to curated sections
  • Add `override-eol-markings` main config string list
https://github.com/bazaar-org/bazaar/releases/tag/v0.7.6

This release comes with the following improvements:

  • Improve context dialogs
  • Fix leftover data bar being shown prematurely
  • Have a rotation toggle for flags
  • Add hard check to prevent removing Bazaar flatpak
  • Improve download statistics tooltips
  • Add read support for flatpak bundles
  • Fix critical output sometimes during transactions
  • Fix error popover refusing to spawn in transaction sidebar
https://github.com/bazaar-org/bazaar/releases/tag/v0.7.5

Minor bugfix release

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.4

This release comes with the following improvements:

  • Fix issue where installed page is empty on opening second window
  • Fix screenshot flickering in search results
  • Fix pride flags sometimes not showing on certain locales
  • Add "Install all" to favorites page
https://github.com/bazaar-org/bazaar/releases/tag/v0.7.3

This release comes with the following improvements:

  • Trash user data instead of deleting
  • Tweaks to permissions dialog
  • Fix broken EOL filtering
  • Add text filter to installed page
  • Add optional translations mappings for string properties in YAML configs
  • Hide EOL apps by default
  • Many other minor bug fixes and improvements
https://github.com/bazaar-org/bazaar/releases/tag/v0.7.2

This small release ensures the new icon is rendered correctly on KDE Plasma.

https://github.com/bazaar-org/bazaar/releases/tag/v0.7.1

This release comes with the following improvements:

  • New market stall icon
  • Remove Flathub styling
  • Add horizontal versions of pride flags
  • Text selection in app descriptions can be made across paragraph breaks
  • Support YAML anchors and aliases in config parsing
  • Drastically reduce disk cache writes over time by skipping unchanged entries
  • Show background status in popover
  • Add app permission system
  • Add back release URLs
  • Fix sync-remotes action in shortcut dialog
  • Fix visual hiccups in comet animations
https://github.com/bazaar-org/bazaar/releases/tag/v0.7.0

This release comes with the following improvements:

  • Flathub account support with the ability to manage bookmarks
  • Flathub bookmarks replace star count; you can add or remove bookmarks from app pages
  • An "Only Show Verified" option
  • Exhaustive category pages for most categories
  • An "Adwaita" or "KDE" category shown based on desktop environment
  • Updated installed indicator for app tiles
  • 3 new flag options
  • Fixed GNOME search provider to show the app page instead of search
  • Fixed issue where flatpakref URIs did not open when the app wasn't running in the background
  • Fixed issue where some proprietary apps were marked as "Special License"
  • Fixed issue where graphs did not work with touch
https://github.com/bazaar-org/bazaar/releases/tag/v0.6.3

Another quick release to restore alphabetical sorting on the installed page

https://github.com/bazaar-org/bazaar/releases/tag/v0.6.2

Quick release to allow manual refresh if flathub is being flaky

https://github.com/bazaar-org/bazaar/releases/tag/v0.6.1

This release comes with the following improvements:

  • Fix frequent disk writes; set refresh frequency to 1 day rather than 1 hour
  • Add "Delete User Data" option when uninstalling an app
  • Version cache to prevent incompatibility between Bazaar versions
https://github.com/bazaar-org/bazaar/releases/tag/v0.6.0

This release comes with the following improvements:

  • Reworked loading to be substantially faster after first start via async loading
  • A gaming section on the Flathub page
  • Improved UI on mobile, especially on app pages
  • Verified badges next to most places where apps are shown
  • A popover that explains what verification and non-verification mean
  • An "other apps by" page for when a developer has more than 6 apps
  • Tags that show other apps with the same tag when pressed
  • An age rating dialog
  • Changed search filters into global content filters
  • 5 new pride flags
https://github.com/bazaar-org/bazaar/releases/tag/v0.5.10 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.9 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.8 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.7 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.6 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.5 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.4 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.3 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.2 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.1 https://github.com/bazaar-org/bazaar/releases/tag/v0.5.0 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.11 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.10 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.9 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.8 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.7 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.6 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.5 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.4 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.3 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.2 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.1 https://github.com/bazaar-org/bazaar/releases/tag/v0.4.0 https://github.com/bazaar-org/bazaar/releases/tag/v0.3.2 https://github.com/bazaar-org/bazaar/releases/tag/v0.3.1 https://github.com/bazaar-org/bazaar/releases/tag/v0.3.0 https://github.com/bazaar-org/bazaar/releases/tag/v0.2.3 https://github.com/bazaar-org/bazaar/releases/tag/v0.2.2 https://github.com/bazaar-org/bazaar/releases/tag/v0.2.1 https://github.com/bazaar-org/bazaar/releases/tag/v0.2.0 https://github.com/bazaar-org/bazaar/releases/tag/v0.1.0
bazaar-org-bazaar-48f93f4/data/io.github.kolunmi.Bazaar.search-provider.ini.in000066400000000000000000000002601524000504200272130ustar00rootroot00000000000000[Shell Search Provider] DesktopId=io.github.kolunmi.Bazaar.desktop BusName=io.github.kolunmi.Bazaar.SearchProvider ObjectPath=/io/github/kolunmi/Bazaar/SearchProvider Version=2bazaar-org-bazaar-48f93f4/data/io.github.kolunmi.Bazaar.service.in000066400000000000000000000002451524000504200250030ustar00rootroot00000000000000[Unit] Description=Bazaar Service PartOf=graphical-session.target [Service] Type=dbus BusName=io.github.kolunmi.Bazaar ExecStart=@bindir@/bazaar-daemon --no-window bazaar-org-bazaar-48f93f4/data/meson.build000066400000000000000000000034411524000504200204130ustar00rootroot00000000000000desktop_file = i18n.merge_file( input: 'io.github.kolunmi.Bazaar.desktop.in', output: 'io.github.kolunmi.Bazaar.desktop', type: 'desktop', po_dir: '../po', install: true, install_dir: get_option('datadir') / 'applications' ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file]) endif appstream_file = i18n.merge_file( input: 'io.github.kolunmi.Bazaar.metainfo.xml.in', output: 'io.github.kolunmi.Bazaar.metainfo.xml', po_dir: '../po', install: true, install_dir: get_option('datadir') / 'metainfo' ) appstreamcli = find_program('appstreamcli', required: false, disabler: true) test('Validate appstream file', appstreamcli, args: ['validate', '--no-net', '--explain', appstream_file]) install_data('io.github.kolunmi.Bazaar.gschema.xml', install_dir: get_option('datadir') / 'glib-2.0' / 'schemas' ) compile_schemas = find_program('glib-compile-schemas', required: false, disabler: true) test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()]) service_conf = configuration_data() service_conf.set('bindir', get_option('prefix') / get_option('bindir')) configure_file( input: 'io.github.kolunmi.Bazaar.service.in', output: 'io.github.kolunmi.Bazaar.service', configuration: service_conf, install_dir: get_option('prefix') / 'lib' / 'systemd' / 'user' ) service_conf = configuration_data() configure_file( input: 'io.github.kolunmi.Bazaar.search-provider.ini.in', output: 'io.github.kolunmi.Bazaar.search-provider.ini', configuration: service_conf, install_dir: get_option('datadir') / 'gnome-shell' / 'search-providers' ) subdir('icons') subdir('dbus') bazaar-org-bazaar-48f93f4/docs/000077500000000000000000000000001524000504200162665ustar00rootroot00000000000000bazaar-org-bazaar-48f93f4/docs/debugging.md000066400000000000000000000040301524000504200205400ustar00rootroot00000000000000# Debugging Bazaar ## Running Bazaar with Debug Messages Enabled You do this the same as with any other GLib application: ```sh pkill bazaar; env G_MESSAGES_DEBUG=all bazaar ``` This will produce a flood of output. If you know the specific log domain you want to see, you can replace `all` with that domain name, such as `flatpak` or `BAZAAR::CORE`. ## Bazaar Inspector Bazaar has its own inspector window, which you can spawn with the key combo `control+alt+shift+i`. This is meant to be useful for developers and distributors. The global debug mode toggle in this window basically just enables a bottom bar in each Bazaar window which displays useful information particular to that window and allows you to easily inspect the UI entry for the visible application. You can also disable blocklists from this window. This is a temporary internal property, not a configuration option; It will not be saved for the next Bazaar process. The rest of the contents of this window should be self-explanatory. ## Debugging Crashes ### Flatpak #### Installing the Debug Symbols This is mostly based on [flatpak docs](https://docs.flatpak.org/en/latest/debugging.html). Installing debug extensions so the stacktrace is actually useful for developers: ```sh flatpak install --include-debug --include-sdk io.github.kolunmi.Bazaar ``` You can remove all the gnome sdk and debug extensions again when you are finished with debugging. This is quite a big download, please have patience. #### Actually Start Debugging Bazaar starts a background service once started, make sure it is not running first: ```sh flatpak kill io.github.kolunmi.Bazaar ``` ```sh flatpak run --devel --command=bash io.github.kolunmi.Bazaar ``` This will get you a shell inside the flatpak sandbox: run this: `gdb /app/bin/bazaar-daemon` ```sh [📦 io.github.kolunmi.Bazaar ~]$ gdb /app/bin/bazaar-daemon ``` Actually run bazaar: ```sh $ (gdb) run ``` (reproduce the bug here so it crashes) after it crashed, retrieve the useful information: ```sh $ (gdb) thread apply all backtrace ``` bazaar-org-bazaar-48f93f4/docs/example.yaml000066400000000000000000000107101524000504200206040ustar00rootroot00000000000000rows: - banner: height: 250 image: light-uri: https://www.mibatcontrol.com/wp-content/uploads/2026/04/Raccoon-Removal-Services-1.png # regular "uri" option is also available dark-uri: https://cdn.answeroverflow.com/1233140484017487952/image.png # you can also use file:// fit: contain # contain, fill, cover or scale-down alt: "Raccoon" can-shrink: true halign: center dark-color: "#2b1f3d" light-color: "linear-gradient(135deg, #2b1f3d 0%, #778cf7 100%)" # Can also be a type of gradient # light-color: "url('file:///var/home/xander/Downloads/Conservation-Quest-at-Windsor-Great-Park-3.jpg') center / cover no-repeat" # Even an image should be possible - section: title: "Welcome to Bazaar" subtitle: string: | # Basic markdown is supported here. Discover apps you'll love. Here's one to get you started: [GNOME Calculator](appstream://org.gnome.Calculator). overflow-count: 8 # Will automatically create a "Show More" button, if there are more apps than the count (except if enable-bulk-install is true) appids: list: - org.gnome.Calendar - org.gnome.Contacts - org.gnome.Maps - org.gnome.Calculator - org.gnome.TextEditor - org.gnome.Loupe - org.mozilla.firefox - org.gnome.Boxes - org.gnome.Weather - org.gnome.clocks - org.gnome.Music - org.gnome.Showtime - org.gnome.Characters - org.gnome.Connections - org.gnome.Software - org.gnome.SimpleScan - org.gnome.font-viewer - org.gnome.Logs - articles: aspect-ratio: 1.777 # aspect ratio of the thumbnails, per articles section uri: https://usebazaar.org/curated/articles.yaml # Can be used as a feed. list: # Used only if URI fails, or is not given. - title: "Introducing GNOME 50, “Tokyoâ€" # Also used as the title on the article page subtitle: "First Half of 2026" image: https://release.gnome.org/50.webp # Always in 16:9 uri: file:///var/home/xander/test-article.md - title: "#254 Commit Graph" subtitle: "This Week in GNOME" image: https://thisweek.gnome.org/posts/2026/06/twig-254/cover.webp uri: file:///var/home/xander/twig.md - title: "Introducing GNOME 50, “Tokyoâ€" subtitle: "First Half of 2026" image: https://release.gnome.org/50.webp uri: file:///var/home/xander/test-article.md - title: "HTTPS Test" subtitle: "This Week in GNOME" image: https://thisweek.gnome.org/posts/2026/06/twig-254/cover.webp uri: https://gist.githubusercontent.com/allysonsilva/85fff14a22bbdf55485be947566cc09e/raw/fa8048a906ebed3c445d08b20c9173afd1b4a1e5/Full-Markdown.md - featured-carousel: # A carousel, like the one seen at the top of the "Explore" page disable-auto-rotate: true appids: list: - io.github.kolunmi.Bazaar - be.alexandervanhee.gradia - section: title: "Web Browsers" list-type: rich # Directly features an install button on the card, use when a section has little apps. appids: list: - org.mozilla.firefox - com.google.Chrome - com.brave.Browser - org.chromium.Chromium - section: title: "Creative & Media" appids: list: # Sections of 12 apps look nice at all window widths - org.gnome.Music - org.gnome.Showtime - org.gnome.Loupe - org.gimp.GIMP - org.inkscape.Inkscape - org.blender.Blender - org.kde.krita - org.audacityteam.Audacity - org.kde.kdenlive - com.obsproject.Studio - org.shotcut.Shotcut - com.github.PintaProject.Pinta - section: title: "Developer Tools" subtitle: string: | Install these to become the *ultimate* developer list-type: rich appids: list: - me.iepure.devtoolbox - org.gnome.Builder - com.jetbrains.IntelliJ-IDEA-Community - re.sonny.Workbench enable-bulk-install: true - banner: image: uri: https://images.unsplash.com/photo-1612287230202-1ff1d85d1bdf?q=80&w=1471&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D fit: cover can-shrink: true bazaar-org-bazaar-48f93f4/docs/overview.md000066400000000000000000000703131524000504200204620ustar00rootroot00000000000000# Bazaar Overview These docs are intended for distributors of Bazaar to learn how to configure the application. ## Features Here is a short list of some of the things Bazaar can do, beyond the basics of managing software through the GUI: * Queue an arbitrary number of transactions (a catch-all term for installations, updates, and removals) during which you may close all windows or continue to append new transactions freely * Display a "Curated" page which you may extensively customize with YAML. * This is a way to highlight applications which you believe might be of interest. * Curated configuration files are constantly monitored for filesystem events, changes immediately reflected in the GUI * Any number of curated configuration files; they will concatenate in the GUI in the order they were provided * Access data from [Flathub](https://flathub.org/), such as the latest or most popular applications, and allow users to sign in to Flathub to manage bookmarked applications * Run in the background and respond to desktop search queries with application info, using the same search routine as in-application - GNOME will work out of the box, as Bazaar implements the `org.gnome.Shell.SearchProvider2` dbus interface - KDE Plasma will require a [krunner plugin](https://github.com/ublue-os/krunner-bazaar) * Hide applications you do not want users to see with blocklists, which is useful for discouraging the use of certain packages which you deem to be broken. * Manage an arbitrary amount of windows and keep them synchronized * Communicate with, and invoke operations on, the main daemon through the command line ## CLI Usage You can start the bazaar daemon like this: ``` bazaar-daemon [ARGS] [PACKAGE PATH/URI] ``` `[PACKAGE PATH/URI]` could be a `.flatpakref` file. flatpak+https and regular https is supported. To avoid spawning an initial window, use: ``` bazaar-daemon --no-window ``` ## Comptime Configuration The only compile time meson option you should concern yourself with for production is `hardcoded_main_config_path`. This embeds a path to the main configuration file into Bazaar. If this is not defined at compile time, Bazaar will never attempt to read a main config. See the next section of this document to see an example config file. ## Environment Variables Bazaar reads the following environment variables, which may be of interest: * `BAZAAR_DESKTOP_SEARCH_PROVIDER_ICON_SIZE`: may be read as an unsigned integer from 1 to 256 to specify the square pixel size of icons sent to the desktop search provider. This should be configured to be a higher value than its default value of 24x24 when on KDE, as krunner paints result icons as much larger than gnome-shell does. This way, the images will not appear blurry. * `BAZAAR_N_DOWNLOAD_WORKERS`: may be read as an unsigned integer greater than 0 to specify the number of image download worker subprocesses that should be spawned and managed by Bazaar to fetch screenshots, icons, and other images. By default, Bazaar spawns 8 download workers. Download workers are always killed when Bazaar has no active windows and ensured when Bazaar returns to having 1 or more windows. ## Main Configuration This is the primary YAML configuration file for bazaar, as designated by the `hardcoded_main_config_path` meson option. Here, you will point bazaar to where your other configs are located. You can also define hooks in this file. See the "Hooks" section of this document for an overview of the hooks system and an example of integration into the main config. ### Example ```yaml yaml-blocklist-paths: - /path/to/yaml/blocklist.yaml - /path/to/another/yaml/blocklist.yaml # Flatpak path with host-etc permission - /run/host/etc/bazaar/blocklist.yaml txt-blocklist-paths: - /path/to/txt/blocklist.txt - /path/to/another/txt/blocklist.txt # Flatpak path with host-etc permission - /run/host/etc/bazaar/blocklist.txt curated-config-paths: - /path/to/yaml/file.yaml - /path/to/another/yaml/file.yaml # Flatpak path with host-etc permission - /run/host/etc/bazaar/curated.yaml # Make the app start on the curated page instead of the explore page, try to only use if you have an interesting news section start-on-curated: true # Hide the auto update options in the preferences dialog, useful when you want to avoid confusion if your distro handles auto-updates of Flatpaks already. hide-auto-update-options: true ``` ### EOL Overrides In this file, you can also specify a list of apps for which to hide EOL warnings and therefore prevent users from being deterred from installing them: ```yaml override-eol-markings: - com.obsproject.Studio - net.lutris.Lutris ``` (At the time of writing, the projects listed above rely on EOL runtimes but are otherwise widely used) ## Blocklists Blocklists are a way to ensure that users will never interact with a certain application inside Bazaar by searching or browsing, either on the Flathub page or via search. Blocked applications which are already installed still appear in the library or when there are updates available for them and via the system's flatpak configuration. Under no circumstance does Bazaar touch the underlying flatpak configuration in order to block or allow apps. The `flatpak` command line tool is unaffected. ### Blocklist Types There are two kinds of blocklists supported by Bazaar: #### YAML Blocklists For those who are learn more effectively by seeing an example: ```yaml blocklists: - priority: 0 block-regex: # block all ids matching this regex unconditionally - com\.place\..* - priority: -1 # lower number = more priority conditions: - match-locale: # only apply this rule if we have the Arabic locale regex: ar allow: - com.place.App3 - com.place.App5 allow-regex: - com\.place\..*\.ar - priority: -1 conditions: - match-locale: regex: en.* # invert the result of this condition; so all locales which don't match # the regex post-process: invert - match-envvar: var: PATH regex: .*/usr/local/bin.* block: - com.other.App1 allow: - com.place.App1 - com.place.App2 ``` YAML blocklists files are comprised of a list of sub "blocklists," which to Bazaar means a **list of appids to block or allow**. These are optionally **applied based on a list of provided conditions** and **composed with other blocklists in the list based on a priority**. Each blocklist may contain these fields: * `priority`: a number which tells Bazaar how to layer this blocklist with the others, or how "important" this blocklist is. **A lower number means more priority**. * `conditions`: a list of conditions to apply. Two condition types exist at the moment: `match-locale` and `match-envvar`. TODO: describe these * `block`: a list of appids to block. These are matched without regex. * `block-regex`: a list of appids to block. These allow regex syntax for special matching. * `allow`: a list of appids to allow. These are matched without regex. * `allow-regex`: a list of appids to allow. These allow regex syntax for special matching. #### Basic Newline Separated TXT Blocklists This type of blocklist is what Bazaar originally supported. They still function, but it is encouraged to use YAML blocklists if any sort of pattern matching or conditional inclusion is required. ``` # comments are supported com.jetbrains.CLion com.valvesoftware.Steam # empty lines are allowed io.neovim.nvim net.lutris.Lutris ``` Warning: **Incorrect Buzzer** TXT blocklists do not support regular expressions. This matches the literal text provided ``` com\.place\..* ``` ### Blocklist FAQ #### No Worky Check that the path of the blocklist exists and that Bazaar can access it. This command is useful for debugging this: ``` flatpak run --command=bash io.github.kolunmi.Bazaar ``` The `/etc` of the host system accessed from a Flatpak requires the `host-etc` permission. This means `/etc/bazaar/banner.png` turns into `/run/host/etc/bazaar/banner.png`. #### I want to to block a list of applications all the time, and also another list only on desktop environment X: Say you want to block Bazaar and Steam unconditionally and Kate and KWrite if the desktop is Plasma. You can use an environment variable condition to check the value of `XDG_CURRENT_DESKTOP`: ```yaml blocklists: - block: - io.github.kolunmi.Bazaar - com.valvesoftware.Steam - block: - org.kde.kate - org.kde.kwrite conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: KDE ``` Let's add another for GNOME: ```yaml blocklists: - block: - io.github.kolunmi.Bazaar - com.valvesoftware.Steam - block: - org.kde.kate - org.kde.kwrite conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: KDE - block: - org.gnome.eog - org.gnome.Extensions conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: GNOME ``` #### What about blocking an application by default, but allowing it if a condition resolves to true? Taking from the previous example, let's allow Steam on KDE and GNOME, but block it on other desktops. We'll need to give the DE-specific blocklists more priority: ```yaml blocklists: - priority: 1 block: - io.github.kolunmi.Bazaar - com.valvesoftware.Steam - block: - org.kde.kate - org.kde.kwrite allow: - com.valvesoftware.Steam conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: KDE - block: - org.gnome.eog - org.gnome.Extensions allow: - com.valvesoftware.Steam conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: GNOME ``` You could also make a new blocklist matching both `KDE` and `GNOME`: ```yaml blocklists: - priority: 1 block: - io.github.kolunmi.Bazaar - com.valvesoftware.Steam - block: - org.kde.kate - org.kde.kwrite conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: KDE - block: - org.gnome.eog - org.gnome.Extensions conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: GNOME - allow: - com.valvesoftware.Steam conditions: - match-envvar: var: XDG_CURRENT_DESKTOP regex: KDE|GNOME ``` ## Curated Section If Bazaar is provided a non-zero amount of curated configs, an extra tab will appear on the window's header bar called "Curated". This section is intended for distributors to curate applications for users with a customizable interface. Curated configs are YAML files. They are constantly monitored by Bazaar for filesystem events, so when the config changes, Bazaar will automatically reload the content. Right now, curated configs are essentially composed of a vertical list of elements which appear stacked on top of each other inside of a scrollable viewport in the order they appear in the YAML. Each element has certain properties you can customize. Bazaar maps the appids you provide to the best matching "entry group" from the table of applications it was able to pull from remote sources (Simply put, an entry group in Bazaar is a collection of applications which share the same appid but come from different sources or installations). The entry group has a designated "ui entry" which was determined to have the most useful content associated with it as it pertains to presenting things like icons, descriptions, screenshots, etc to the user, usually from Flathub when available. When the user selects an app, they are brought to a "full view" where they can see a bunch of information stored inside or referenced by the ui entry and choose to invoke transactions on the entry group, like installation or removal. ### Example An example can be found in docs/example.yaml ### Integrate the curated section + blocklist with the official Flatpak for Administrators/Vendors For more practical examples check out the configuration from [Bluefin](https://github.com/projectbluefin/common/tree/a868eba107b91c4eae60b6d1d6d2e2cdf05eb1c8/system_files/bluefin/etc/bazaar) and [Aurora](https://github.com/get-aurora-dev/common/tree/0d86028dd0d737d1d0eee08205c33fc91997f155/system_files/shared/etc/bazaar). Bazaar by default looks for a config file in `/etc/bazaar` or `/run/host/etc/bazaar` inside the sandbox, this is [configured on build time](https://github.com/flathub/io.github.kolunmi.Bazaar/blob/709faccd8c4198c5fdabf20eb4a98db98a5aa1c6/io.github.kolunmi.Bazaar.yaml#L43-L46) This needs permission to `/etc` which can be granted with the `filesystem=host-etc` permission, the build on Flathub doesn't have this permission by default. This is not super straightforward to setup currently as Flatpak doesn't support overriding permissions in `/etc` or `/usr` yet, so you have to resort to `systemd-tmpfiles` to create this permission override in `/var/lib/flatpak/overrides/io.github.kolunmi.Bazaar`. Here is how they did it: - [tmpfiles](https://github.com/get-aurora-dev/common/blob/0d86028dd0d737d1d0eee08205c33fc91997f155/system_files/shared/usr/lib/tmpfiles.d/bazaar-flatpak.conf) - [actual permission override](https://github.com/get-aurora-dev/common/blob/0d86028dd0d737d1d0eee08205c33fc91997f155/system_files/shared/usr/share/ublue-os/flatpak-overrides/io.github.kolunmi.Bazaar), the filepath for this doesn't really matter, just a way for you to ship the symlink with tmpfiles ## Article markdown Curated articles support standard markdown, rendered with GTK widgets (so its not a webview). **Supported:** - Basic markdown - Inline code - Code blocks (with syntax highlighting if language is specified) - Ordered and unordered lists - Tables - Horizontal rules - Links **Not supported**: - Raw HTML - Latex - Other weird things - Column alignment in tables ### Inline images & app tiles Regular image syntax (`![title](https://example.com/image.png)`) renders a normal image/screenshot. Two special URI schemes can be used instead to render app tiles inline: * `appstream://`: looks up a real app by its appid and renders like any other app button. * `bazaar-hook://?id=&title=&subtitle=<subtitle>&icon=<icon-uri>`: renders a fake tile that is not backed by a real app. Clicking it runs an `article-app` hook instead of opening a full app view. You can mix multiple tiles of either kind into one row by comma-separating them inside a single image tag: ```markdown ![](appstream://org.gnome.Calculator,bazaar-hook://?id=neovim&title=Neovim&subtitle=Vim-fork%20focused%20on%20extensibility%20and%20useablitiy&icon=https://gitlab.com/uploads/-/system/project/avatar/56714943/nvim-icon.png) ``` Every curated article already shows the title from the curated section at the top, so please do not include it in the markdown itself. ## Hooks Hooks are an advanced feature of Bazaar. In essence, they allow you to programmatically react to events and define dialogs with which you can query user input. Currently, these are the event signals you can subscribe to: * `view-app`: run the hook when the user clicks on an app tile or otherwise views an application in the main app page * `article-app`: run the hook when the user clicks a `bazaar-hook://` tile inside a curated article * `before-transaction`: run the hook right as the user invokes a transaction * `after-transaction`: run the hook after a transaction completes Hooks are run like a signal emission. After an event occurs, hooks that are found to be of the appropriate type are evaluated in an order of priority. Higher priority hooks have the ability to stop the emission from propagating further downwards. In the case of some events, like "before-transaction", a hook can also hint to Bazaar some action to take, in this case whether the transaction should be aborted. A shell snippet which is defined by you is evaluated with `/bin/sh -c` multiple times over the course of a hook's execution. An invocation of the shell snippet is referred to as a "stage". Your shell snippet (which of course could just invoke another script written in whatever language you prefer) will be provided a number of environment variables which together will describe the current stage. Your snippet must react accordingly by printing a response to stdout, which Bazaar will read back. This opens up a lot of possibilities for customization; here are a few examples: * You would like a certain appid to be added to steam after the user installs it, so you register a hook on "after-transaction" to query the user's permission with a custom dialog. If they confirm, your script will go forward with the task of setting up a steam shortcut. * You would like to prevent users from installing a certain appid, as some other method of installation, such as a system package, would provide a superior experience. A blocklist could achieve this, but you don't like the idea of hiding anything from the user. A hook subscribed to the "before-transaction" event could issue a warning and ask for extra confirmation. If the user decides to listen to the warning, you can signal to Bazaar that the transaction should be aborted. Here is an overview of the environment variables the shell snippet will receive: * `BAZAAR_HOOK_INITIATED_UNIX_STAMP`: the unix timestamp in seconds at which this hook was first invoked (the number of seconds that have elapsed since 1970-01-01 00:00:00 UTC) * `BAZAAR_HOOK_INITIATED_UNIX_STAMP_USEC`: the unix timestamp in microseconds at which this hook was first invoked (the number of microseconds that have elapsed since 1970-01-01 00:00:00 UTC) * `BAZAAR_HOOK_STAGE_IDX`: the number of stages this hook has run so far * `BAZAAR_HOOK_ID`: the value of the "id" mapping * `BAZAAR_HOOK_TYPE`: the value of the "when" mapping * `BAZAAR_HOOK_WAS_ABORTED`: "true" if a dialog aborted the hook * `BAZAAR_HOOK_DIALOG_ID`: if applicable, the id of the current dialog * `BAZAAR_HOOK_DIALOG_RESPONSE_ID`: if applicable, the user response given through the current dialog * `BAZAAR_APPID`: if applicable, the appid of the entry Bazaar is currently dealing with. Use this for hooks that are not related to transactions. If your hook deals with transactions, such as `before-transaction` or `after-transaction`, use `BAZAAR_TS_APPID` instead. * `BAZAAR_TS_APPID`: if applicable, the appid of the entry Bazaar is currently dealing with. Use this for hooks that are related to transactions. If your hook does not deal with transactions, such as `view-app`, use `BAZAAR_APPID` instead. * `BAZAAR_TS_TYPE`: if applicable, the type of transaction being run. Can be "install", "update", or "removal". * `BAZAAR_HOOK_STAGE`: the stage at which the hook is running. This will indicate what the shell body is instructed to do at this time. The shell body must respond by outputting to stdout with a valid answer; the structure of a valid answer will depend on the stage, and if the structure is not valid the hook will be abandoned. The shell body might be run multiple times by Bazaar over the course of a hook with this variable set to differing values in order know how to orchestrate events in the UI, so the shell body must be able to branch depending on the value. The value may be any of the following: * `setup`: the hook is starting. Respond with "ok" to continue the execution of this hook, or "pass" to skip it and move on to the next registered hook * `setup-dialog` Bazaar is ready to ask the user a question with one of the dialogs you've defined inside the "dialogs" mapping. `BAZAAR_HOOK_DIALOG_ID` will tell you which one. Respond with "ok" to spawn the dialog, or "pass" to skip the dialog. * `teardown-dialog` Bazaar has received input from the user after asking them a question with one of the dialogs you've defined inside the "dialogs" mapping. `BAZAAR_HOOK_DIALOG_ID` will tell you which one. `BAZAAR_HOOK_DIALOG_RESPONSE_ID` will tell you the response the user chose. Respond with "ok" to continue, or "abort" to stop the execution of this hook. * `catch` One of your dialogs has aborted. This is your chance to handle the error. Respond with "recover" to continue, or "abort" to confirm that the execution of this hook should indeed skip to the teardown stage. * `action` Everything so far has gone according to plan, so it is time to take whatever external action this hook exists for. Bazaar requires no response at this time. * `teardown` The hook is cleaning up. Respond with "continue" to propagate the signal emission to lower priority hooks, or "stop" to indicate the emission should stop. Alternatively, if this hook type should hint to Bazaar an action to take (such as the "before-transaction" hook), respond with "confirm" to hint that the action should be taken, or "deny" to prevent the action from being taken. Both "confirm" and "deny" imply the effect of "stop", and "stop" implies "confirm". ### Example Hooks are defined in the main yaml config as indicated by the `hardcoded_main_config_path` comptime var. Here is a basic example demonstrating how to define a hook: `hardcoded_main_config_path`: ```yaml hooks: - id: handle-jetbrains when: before-transaction dialogs: - id: jetbrains-warning title: >- JetBrains IDEs are not supported in this format # If true, render inline markup commands in body; see # https://docs.gtk.org/Pango/pango_markup.html body-use-markup: true body: >- This is a <a href="https://www.jetbrains.com/">JetBrains</a> application and is not officially supported on Flatpak. We recommend using the Toolbox app to manage JetBrains IDEs. # Determines which option will be assumed if the user hits the # escape key or otherwise cancels the dialog default-response-id: cancel options: - id: cancel string: "Cancel" - id: goto-web string: "Download JetBrains Toolbox" # can be "destructive" or "suggested" or omit for no # styling style: suggested shell: exec /absolute/path/to/bazaar-jetbrains-hook.bash # This gives you the opportunity to add a basic regex check on an incoming # appid before incurring the overhead of spawning a subprocess. This # improves performance and reduces script boilerplate for long lists of # hooks that execute on specific appids. check-appid-regex: ^com\.jetbrains\..*$ ``` `/absolute/path/to/bazaar-jetbrains-hook.bash`: ```bash #!/usr/bin/env bash handle_setup_stage() { # only proceed if the user is installing something if [ "$BAZAAR_TS_TYPE" = install ]; then case "$BAZAAR_TS_APPID" in com\.jetbrains\.*) # since the appid belongs to jetbrains, we continue # with the hook echo 'ok' ;; *) # otherwise, skip this hook echo 'pass' ;; esac else echo 'pass' fi } handle_setup_dialog_stage() { # we don't need to do anything here right now, just let Bazaar # know we should continue setting up the dialog echo 'ok' } handle_teardown_dialog_stage() { case "$BAZAAR_HOOK_DIALOG_RESPONSE_ID" in goto-web) # if the user pressed "Download JetBrains Toolbox", # continue echo 'ok' ;; *) # otherwise, let's not do anything echo 'abort' ;; esac } handle_catch_stage() { # this only happens if the `teardown-dialog` stage echoed "abort", # we could echo "recover" at this point to still go to the # `action` stage, but we have no reason to do that right now echo 'abort' } handle_action_stage() { # this is where we do the thing! it is important to use `nohup` # here so bazaar doesn't hang nohup xdg-open 'https://www.jetbrains.com/toolbox-app/' } handle_teardown_stage() { # Let's always prevent the user from installing JetBrains stuff echo 'deny' } # Branch based on the stage case "$BAZAAR_HOOK_STAGE" in setup) handle_setup_stage ;; setup-dialog) handle_setup_dialog_stage ;; teardown-dialog) handle_teardown_dialog_stage ;; catch) handle_catch_stage ;; action) handle_action_stage ;; teardown) handle_teardown_stage ;; esac # exit successfully exit 0 ``` ## Search Biases Search biases are a mechanism provided by Bazaar to influence search results. Given a regex string with which to match a search query, a bias can replace the matched text with a new string and/or adjust the scores of certain appids according to a defined function if a match occurs. This is particularly useful in the following cases: * An application is, for example, an image editor, but doesn't show up in the results for "image editor" because its metadata doesn't contain those search tokens for whatever reason. A search bias can ensure that the app appears despite this. * You want an abbreviation or phrase to be expanded into a version which is more likely to yield better results. For example, Bazaar hardcodes the expansion of the abbreviation `dl` to `download`, which is more helpful when searching metadata. ### Boost Functions Right now, there are two kinds of boost functions you can specify to influence the score of certain appids in the event of a regex match: linear and exponential: #### Linear Linear functions require a `slope` and a `y-intercept` and are evaluated like this: ``` new-score = y-intercept + (slope * original-score) ``` #### Exponential Exponential functions require a `factor` and a `y-intercept` and are evaluated like this: ``` new-score = y-intercept * (factor ^ original-score) ``` ### Examples Search biases are defined in the main yaml config as indicated by the `hardcoded_main_config_path` comptime var. Here is a basic example demonstrating how to define search biases: ```yaml search-biases: # Brief regex review: # `^` indicates the beginning of the string # `$` indicates the end of the string # `\b` indicates a word boundary # `(?i)` means case insensitive # Convert queries like "smb server" to "samba server" - regex: \b(?i)smb\b convert-to: samba # Give your favorite matrix clients a simple boost of 100.0 to their score - regex: \b(?i)matrix\b boost-appids: - org.gnome.Fractal - im.riot.Riot linear-boost: slope: 1.0 y-intercept: 100.0 # Convert the search _and_ boost appids - regex: ^(?i)deck$ convert-to: steam deck boost-appids: - com.github.Matoking.protontricks - com.steamgriddb.steam-rom-manager - com.valvesoftware.SteamLink linear-boost: slope: 1.2 y-intercept: 20.0 # Biases are applied in the order that you specify them, so in both the case # that the user types "deck" or "steam deck launcher", the following will be # applied: - regex: \bsteam deck\b boost-appids: - net.retrodeck.retrodeck exponential-boost: factor: 2.0 y-intercept: 5.0 ``` Pro tip: pressing `ctrl-alt-d` in Bazaar activates debug mode, which enables you to see the scores of app results on the search page. This is useful for debugging search biases! ## Translations in YAML Configs For any string scalar property in YAML configs parsed by bazaar, you can optionally provide a map of language code ids -> translated strings. This is for strings only, thus it doesn't apply to scalars which are explicitly parsed as numbers, etc. For instance, this is valid: ```yaml # ... category: title: "My Favorite Apps" subtitle: "These are really good and you should download them!" # ... ``` This is also valid: ```yaml # ... category: title: en: "My Favorite Apps" es: "Mis Aplicaciones Favoritas" ko: "ë‚´ê°€ 가장 좋아하는 앱들" subtitle: en: "These are really good and you should download them!" es: "¡Son realmente buenos y deberías descargarlos!" ko: "ì´ê²ƒë“¤ì€ ì •ë§ ì¢‹ìœ¼ë‹ˆ ê¼­ 다운로드하세요!" # ... ``` (I just used google translate for these, sorry if they are bad) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/funding.json��������������������������������������������������������������0000664�0000000�0000000�00000006401�15240005042�0017664�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ "$schema": "https://fundingjson.org/schema/v1.1.0.json", "version": "v1.0.0", "entity": { "type": "individual", "role": "maintainer", "name": "Adam Masciola", "email": "kolunmi@posteo.net", "phone": "", "description": "Adam is the creator and lead programmer of Bazaar.", "webpageUrl": { "url": "https://www.kolunmi.net/" } }, "projects": [ { "guid": "bazaar", "name": "Bazaar", "description": "Bazaar is a vertically-integrated App Store for Linux desktop applications, tightly integrating with Flatpak application packages and flathub.org, the central Flatpak repository. It provides a beautiful and high-performance frontend to these open standards and open infrastructure for Linux desktop apps.", "webpageUrl": { "url": "https://usebazaar.org/" }, "repositoryUrl": { "url": "https://github.com/bazaar-org/bazaar", "wellKnown": "https://github.com/bazaar-org/bazaar/blob/main/.well-known/funding-manifest-urls" }, "licenses": ["spdx:GPL-3.0"], "tags": ["app-store", "flatpak"] } ], "funding": { "channels": [ { "guid": "kolunmi-bank", "type": "bank", "address": "", "description": "Direct bank transfers to USA bank. Please e-mail me for details." } ], "plans": [ { "guid": "curation", "status": "active", "name": "Curation", "description": "Bazaar acts as both a software frontend and a curated frontend to flathub.org, which requires a small amount of continuous curation of applications (in the form of presentation layer tweaks) as they flow through Flathub.", "amount": 200, "currency": "USD", "frequency": "monthly", "channels": ["kolunmi-bank"] }, { "guid": "developer-time", "status": "active", "name": "Developer Compensation", "description": "This will cover the cost of kolunmi's full-time contribution to Bazaar and integration with other projects.", "amount": 2000, "currency": "USD", "frequency": "monthly", "channels": ["kolunmi-bank"] }, { "guid": "donations", "status": "active", "name": "Donation GUI Enhancements", "description": "Because Bazaar is increasingly the default Linux App Store, and many desktop Linux applications are F/OSS, carefully-designed donation opportunities to those projects will grow the overall Linux desktop.", "amount": 300, "currency": "USD", "frequency": "monthly", "channels": ["kolunmi-bank"] }, { "guid": "gnome-core", "status": "active", "name": "GNOME Circle and Core", "description": "This is an ongoing task to get Bazaar into GNOME Circle and, ultimately, GNOME Core. This will require code review, security concerns, code cleanup, etc. in conjunction with the GNOME Core teams. Some of this work has already begun with the GNOME Design Team. Bazaar is already the default App Store on Bazzite, Nobara, and the other Universal Blue distributions.", "amount": 500, "currency": "USD", "frequency": "monthly", "channels": ["kolunmi-bank"] } ], "history": [] } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/meson.build���������������������������������������������������������������0000664�0000000�0000000�00000011712�15240005042�0017502�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������project('bazaar', 'c', version: run_command('version.sh', 'get-vcs').stdout().strip(), meson_version: '>= 1.0.0', default_options: [ 'warning_level=2', 'werror=false', 'c_std=gnu11', ], ) # can't have statements before `project` ... bz_vcs_version = run_command('version.sh', 'get-vcs').stdout().strip() bz_version = run_command('version.sh', 'get-version').stdout().strip() bz_cache_version = run_command('version.sh', 'get-cache').stdout().strip() python3 = find_program('python3') i18n = import('i18n') if get_option('im_a_translator') subdir('po') else gnome = import('gnome') cc = meson.get_compiler('c') project_c_args = [] test_c_args = [ '-Wcast-align', '-Wdeclaration-after-statement', '-Werror=address', '-Werror=array-bounds', '-Werror=empty-body', '-Werror=implicit', '-Werror=implicit-function-declaration', '-Werror=incompatible-pointer-types', '-Werror=init-self', '-Werror=int-conversion', '-Werror=int-to-pointer-cast', '-Werror=main', '-Werror=misleading-indentation', '-Werror=missing-braces', '-Werror=missing-include-dirs', '-Werror=nonnull', '-Werror=overflow', '-Werror=parenthesis', '-Werror=pointer-arith', '-Werror=pointer-to-int-cast', '-Werror=redundant-decls', '-Werror=return-type', '-Werror=sequence-point', '-Werror=shadow', '-Werror=strict-prototypes', '-Werror=trigraphs', '-Werror=undef', '-Werror=write-strings', '-Wformat-nonliteral', '-Wignored-qualifiers', '-Wimplicit-function-declaration', '-Wlogical-op', '-Wmissing-declarations', '-Wmissing-format-attribute', '-Wmissing-include-dirs', '-Wmissing-noreturn', '-Wnested-externs', '-Wno-cast-function-type', '-Wno-dangling-pointer', '-Wno-missing-field-initializers', '-Wno-sign-compare', '-Wno-unused-parameter', '-Wold-style-definition', '-Wpointer-arith', '-Wredundant-decls', '-Wstrict-prototypes', '-Wswitch-default', '-Wswitch-enum', '-Wundef', '-Wuninitialized', '-Wunused', '-fno-strict-aliasing', ['-Werror=format-security', '-Werror=format=2'], ] if get_option('buildtype') != 'plain' test_c_args += '-fstack-protector-strong' endif foreach arg: test_c_args if cc.has_multi_arguments(arg) project_c_args += arg endif endforeach add_project_arguments(project_c_args, language: 'c') if get_option('bge_only') subdir('bge') else config_h = configuration_data() config_h.set_quoted('PACKAGE_VERSION', bz_version) config_h.set_quoted('PACKAGE_VCS_VERSION', bz_vcs_version) config_h.set_quoted('CACHE_VERSION', bz_cache_version) config_h.set_quoted('GETTEXT_PACKAGE', 'bazaar') config_h.set_quoted('APPLICATION_ID', 'io.github.kolunmi.Bazaar') config_h.set_quoted('LOCALEDIR', get_option('prefix') / get_option('localedir')) config_h.set_quoted('DONATE_LINK', 'https://ko-fi.com/kolunmi') config_h.set_quoted('RELEASE_PAGE', run_command('version.sh', 'get-gh-release').stdout().strip()) bazaar_bin_name = 'bazaar' config_h.set_quoted('BAZAAR_BIN_NAME', bazaar_bin_name) config_h.set_quoted('REFRESH_WORKER_CLI_OPTION', '--run-refresh-worker') config_h.set_quoted('UPDATE_WORKER_CLI_OPTION', '--run-update-worker') dl_worker_bin_name = 'bazaar-dl-worker' config_h.set_quoted('DL_WORKER_BIN_NAME', dl_worker_bin_name) daemon_bin_name = 'bazaar-daemon' config_h.set_quoted('DAEMON_BIN_NAME', daemon_bin_name) bazaar_bin_name = 'bazaar' config_h.set_quoted('BAZAAR_BIN_NAME', bazaar_bin_name) config_h.set_quoted('BAZAAR_BIN_PATH', get_option('prefix') / get_option('bindir') / bazaar_bin_name) if get_option('hardcoded_main_config_path') != '' config_h.set_quoted('HARDCODED_MAIN_CONFIG', get_option('hardcoded_main_config_path')) endif if get_option('hardcoded_blocklist_path') != '' config_h.set_quoted('HARDCODED_BLOCKLIST', get_option('hardcoded_blocklist_path')) endif if get_option('hardcoded_content_config_path') != '' config_h.set_quoted('HARDCODED_CONTENT_CONFIG', get_option('hardcoded_content_config_path')) endif if get_option('sandboxed_libflatpak') config_h.set_quoted('SANDBOXED_LIBFLATPAK', '1') endif if get_option('development') config_h.set10('DEVELOPMENT_BUILD', get_option('development')) config_h.set_quoted('DEVELOPMENT_EXAMPLE_YAML', get_option('prefix') / get_option('datadir') / 'bazaar' / 'example.yaml') install_data( 'docs/example.yaml', install_dir: get_option('datadir') / 'bazaar', ) endif configure_file(output: 'config.h', configuration: config_h) add_project_arguments(['-I' + meson.project_build_root()], language: 'c') subdir('bge') subdir('data') subdir('src') subdir('po') gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true, ) endif endif ������������������������������������������������������bazaar-org-bazaar-48f93f4/meson_options.txt���������������������������������������������������������0000664�0000000�0000000�00000002123�15240005042�0020771�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������option('bge_only', type: 'boolean', value: false, description: 'Whether to restrict the build to libbge') option('hardcoded_main_config_path', type: 'string', value: '', description: 'Hardcoded absolute path to a main yaml config which will be read at runtime') option('hardcoded_blocklist_path', type: 'string', value: '', description: 'Hardcoded absolute path to a package name blocklist which will be read at runtime') option('hardcoded_content_config_path', type: 'string', value: '', description: 'Hardcoded absolute path to a yaml content configuration which will be read at runtime') option('im_a_translator', type: 'boolean', value: false, description: 'Whether to set up the environment for translation work') option('sandboxed_libflatpak', type: 'boolean', value: false, description: 'Whether to treat libflatpak as being sandboxed or not') option('development', type: 'boolean', value: false, description: 'If this is a development build') ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/�����������������������������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0015754�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/.gitignore�������������������������������������������������������������0000664�0000000�0000000�00000000012�15240005042�0017735�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar.pot����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/LINGUAS����������������������������������������������������������������0000664�0000000�0000000�00000000222�15240005042�0016775�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Please keep this file sorted alphabetically. ar be bg bs cs de el es eu fa_IR fr ga hu id it ja kw nl pl pt pt_BR ru sl sv tr uk vi zh_CN zh_TW ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/POTFILES.in������������������������������������������������������������0000664�0000000�0000000�00000007433�15240005042�0017540�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# List of source files containing translatable strings. # Please keep this file sorted alphabetically. data/io.github.kolunmi.Bazaar.desktop.in data/io.github.kolunmi.Bazaar.metainfo.xml.in src/bz-addon-tile.blp src/bz-addon-tile.c src/bz-addons-dialog.blp src/bz-addons-dialog.c src/bz-age-rating-dialog.blp src/bz-age-rating-dialog.c src/bz-all-apps-page.blp src/bz-all-apps-page.c src/bz-app-permissions.c src/bz-app-size-dialog.blp src/bz-app-size-dialog.c src/bz-app-tile.blp src/bz-app-tile.c src/bz-application-map-factory.c src/bz-application.c src/bz-apps-page.blp src/bz-apps-page.c src/bz-appstream-parser.c src/bz-article-list-view.c src/bz-article-tile.blp src/bz-article-tile.c src/bz-article.blp src/bz-article.c src/bz-async-texture.c src/bz-backend.c src/bz-banner-view.blp src/bz-banner-view.c src/bz-bundle-install-dialog.blp src/bz-bundle-install-dialog.c src/bz-content-provider.c src/bz-context-tile.blp src/bz-context-tile.c src/bz-curated-view.blp src/bz-curated-view.c src/bz-data-graph.c src/bz-decorated-screenshot.blp src/bz-decorated-screenshot.c src/bz-developer-badge.blp src/bz-developer-badge.c src/bz-donations-dialog.blp src/bz-donations-dialog.c src/bz-download-worker.c src/bz-dynamic-list-view.c src/bz-entry-cache-manager.c src/bz-entry-group-util.c src/bz-entry-group.c src/bz-entry-inspector.blp src/bz-entry-inspector.c src/bz-entry-selection-row.blp src/bz-entry-selection-row.c src/bz-entry.c src/bz-error-dialog.blp src/bz-error-dialog.c src/bz-favorite-button.blp src/bz-favorite-button.c src/bz-favorites-page.blp src/bz-favorites-page.c src/bz-favorites-tile.blp src/bz-favorites-tile.c src/bz-featured-carousel-view.c src/bz-featured-carousel.blp src/bz-featured-tile.blp src/bz-flathub-category-section.c src/bz-flathub-category.c src/bz-flathub-curated-section.c src/bz-flathub-page.blp src/bz-flathub-page.c src/bz-flathub-state.c src/bz-flatpak-entry.c src/bz-flatpak-instance.c src/bz-full-view.blp src/bz-full-view.c src/bz-group-tile-css-watcher.c src/bz-hardware-support-dialog.blp src/bz-hardware-support-dialog.c src/bz-inspector.blp src/bz-inspector.c src/bz-install-controls.blp src/bz-install-controls.c src/bz-install-controls.wdgt src/bz-installed-tile.blp src/bz-installed-tile.c src/bz-library-page.blp src/bz-library-page.c src/bz-license-dialog.blp src/bz-license-dialog.c src/bz-license-dialog.h src/bz-login-page.blp src/bz-login-page.c src/bz-login-page.h src/bz-metainfo-preview.c src/bz-preferences-dialog.blp src/bz-preferences-dialog.c src/bz-progress-bar.blp src/bz-progress-bar.c src/bz-releases-dialog.blp src/bz-releases-list.blp src/bz-releases-list.c src/bz-result.c src/bz-rich-app-tile.blp src/bz-rich-app-tile.c src/bz-safety-dialog.blp src/bz-safety-dialog.c src/bz-screenshot-page.blp src/bz-screenshot-page.c src/bz-screenshot.c src/bz-screenshots-carousel.blp src/bz-screenshots-carousel.c src/bz-search-bar.blp src/bz-search-engine.c src/bz-search-filter-popover.blp src/bz-search-filter-popover.c src/bz-search-page.blp src/bz-search-page.c src/bz-search-pill-list.c src/bz-section-view.blp src/bz-section-view.c src/bz-serializable.c src/bz-share-list.c src/bz-stats-dialog.blp src/bz-stats-dialog.c src/bz-subcategory-list.c src/bz-transact-icon.wdgt src/bz-transaction-dialog.c src/bz-transaction-list-dialog.blp src/bz-transaction-list-dialog.c src/bz-transaction-manager.c src/bz-transaction-tile.blp src/bz-transaction-tile.c src/bz-transaction.c src/bz-updates-card.blp src/bz-updates-card.c src/bz-user-data-page.blp src/bz-user-data-page.c src/bz-user-data-tile.blp src/bz-user-data-tile.c src/bz-window.blp src/bz-window.c src/bz-world-map.c src/bz-yaml-parser.c src/context-tile-callbacks.c src/dl-worker.c src/env.c src/error.c src/global-net.c src/io.c src/main.c src/safety-calculator.c src/shortcuts-dialog.blp src/transaction-notification.c src/update-worker.c �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/ar.po������������������������������������������������������������������0000664�0000000�0000000�00000304051�15240005042�0016721�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Arabic translations for bazaar package. # Copyright (C) 2025 bazaar's COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Ahmed Najmawi <iramosu@protonmail.com>, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-02-14 09:05+0300\n" "PO-Revision-Date: 2026-02-14 13:41+0300\n" "Last-Translator: Ahmed Najmawi <iramosu@protonmail.com>\n" "Language-Team: Arabic\n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" "X-Generator: Poedit 3.8\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:6 #: src/bz-window.blp:111 msgid "Bazaar" msgstr "بازار" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "أضÙÙØŒ أو أزل، أو حدث برمجيات Ùلاتباك على هذا الحاسوب" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTKØ› النظام؛ مدير الحزم؛ Ø§ÙƒØªØ´Ø§ÙØ› Ùلات باك؛ البرامج؛ المتجر؛" #: data/io.github.kolunmi.Bazaar.desktop.in:15 msgid "New Window" msgstr "Ù†Ø§ÙØ°Ø© جديدة" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "Ø§Ø³ØªÙƒØ´Ù ÙˆÙ†ØµÙ‘ÙØ¨ التطبيقات" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A new app store for Linux with a focus on discovering and installing " "applications and addons from Flatpak remotes, particularly Flathub." msgstr "" "متجر تطبيقات جديد للينوكس يركز على استكشا٠وتنصيب التطبيقات ÙˆØ§Ù„Ø¥Ø¶Ø§ÙØ§Øª من " "Ùلاتباك، وبالأخص مستودع Ùلاتهَب." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. " "Bazaar features a \"curated\" tab that can be configured by distributors to " "allow for a more localized experience." msgstr "" "ÙŠÙØ´Ø¯Ù‘ÙØ¯ «بازار» على دعم المطورين الواقÙين وراء إتاحة سطح مكتب لينكس، ويضم لسانًا " "للمحتوى المنتقى يمكن Ù„Ù„Ù…ÙˆØ²Ù‘ÙØ¹ÙŠÙ† إعداده لتوÙير تجربة استخدام أكثر مواءمة." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:29 src/bz-application.c:703 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:54 msgid "The home page displaying Flathub apps" msgstr "Ø§Ù„ØµÙØ­Ø© الرئيسية وهي تعرض تطبيقات Ùلاتهَب" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:58 msgid "Exhibit app page" msgstr "ØµÙØ­Ø© معرض التطبيق" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:62 msgid "Library page" msgstr "ØµÙØ­Ø© المكتبة" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:66 msgid "Search page" msgstr "ØµÙØ­Ø© البحث" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:70 msgid "Category page" msgstr "ØµÙØ­Ø© Ø§Ù„ØªØµÙ†ÙŠÙØ§Øª" #: src/bz-addons-dialog.blp:16 src/bz-full-view.blp:708 #: src/bz-installed-tile.blp:101 msgid "Manage Add-ons" msgstr "Ø£Ø¯ÙØ± Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª" #: src/bz-addons-dialog.c:94 src/bz-full-view.blp:495 #: src/bz-installed-tile.blp:119 src/bz-transaction-dialog.c:231 msgid "Remove" msgstr "أزÙÙ„" #: src/bz-addons-dialog.c:99 src/bz-favorites-tile.c:174 #: src/bz-full-view.blp:262 src/bz-full-view.blp:482 #: src/bz-transaction-dialog.c:202 msgid "Install" msgstr "Ù†ØµÙ‘ÙØ¨" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:726 src/bz-full-view.c:338 src/bz-full-view.c:345 msgid "Age Rating" msgstr "التصني٠العمري" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "عن٠الرسوم المتحركة" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "لا توجد معلومات بخصوص العن٠ÙÙŠ الرسوم المتحركة" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "عن٠خيالي" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "لا توجد معلومات بخصوص العن٠الخيالي" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "عن٠واقعي" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "لا توجد معلومات بخصوص العن٠الواقعي" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "العن٠الذي يصور إراقة الدماء" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "لا توجد معلومات بخصوص العن٠الذي يصور إراقة الدماء" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "عن٠الجنسي" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "لا توجد معلومات بخصوص العن٠الجنسي" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "كحول" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "لا توجد معلومات بخصوص الكحول" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "المخدرات" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "لا توجد معلومات بخصوص الإشارات إلى المخدرات غير المشروعة" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "تبغ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "لا توجد معلومات بخصوص استخدام التبغ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "تعري" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "لا توجد معلومات بخصوص التعري بأي شكل" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "المواضيع الجنسية" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "لا توجد معلومات بخصوص المواضيع الجنسية" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Ø£Ù„ÙØ§Ø¸ بذيئة" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "لا توجد معلومات بخصوص Ø§Ù„Ø£Ù„ÙØ§Ø¸ البذيئة بأي شكل من الأشكال" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Ùكاهة غير لائقة" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "لا توجد معلومات بخصوص الÙكاهة الغير لائقة" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "تمييز" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "لا توجد معلومات بخصوص استخدام لغة التمييز بأي شكل" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "إعلانات" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "لا توجد معلومات بخصوص الإعلانات بأي شكل" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "مقامرة" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "لا توجد معلومات بخصوص المقامرة بأي شكل" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "شراء" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "لا توجد معلومات بخصوص القدرة على Ø¯ÙØ¹ الأمواب" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "الدردشة بين المستخدمين" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "لا توجد معلومات بخصوص الدردشة بين المستخدمين" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "المحادثة الصوتية بين المستخدمين" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "لا توجد معلومات بخصوص المحادثة الصوتية بين المستخدمين" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "معلومات التواصل" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "لا توجد معلومات بخصوص مشاركة معلومات اسم المستخدم أو البريد الإلكتروني" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "معلومات التعريÙ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "لا توجد معلومات بخصوص مشاركة معلومات المستخدم مع طر٠ثالث" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "مشاركة الموقع" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "لا توجد معلومات بخصوص مشاركة الموقع مع مستخدمين آخرين" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "دعارة" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "لا توجد معلومات بخصوص الدعارة" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "الزنا" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "لا توجد معلومات بخصوص الزنا" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "شخصيات ذات طابع جنسي" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "لا توجد معلومات بخصوص شخصيات ذات طابع جنسي" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "تدنيس" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "لا توجد معلومات بخصوص التدنيس" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "بقايا بشرية" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "لا توجد معلومات بخصوص البقايا البشرية" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "عبودية" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "لا توجد معلومات بخصوص العبودية" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "لا يتضمن إشارات إلى المخدرات" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "لا يتضمن قذÙ, شتم, وأي شكل من أشكال التعدي Ø§Ù„Ù„ÙØ¸ÙŠ" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "لا يتضمن إعلانات أو المعاملات المالية" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "لا يتضمن جنس أو تعري" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "لا يتضمن دردشة غير قابلة للتحكم" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "لا يتضمن عنÙ" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "مخدرات" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "تعدي Ù„ÙØ¸ÙŠ" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "مال" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "إجتماعي" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "عنÙ" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:676 src/bz-full-view.c:328 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:701 msgctxt "Age rating" msgid "All" msgstr "جميع الأعمار" #: src/bz-age-rating-dialog.c:737 #, c-format msgid "%s has an unknown age rating" msgstr "%s التصني٠العمري غير محدد" #: src/bz-age-rating-dialog.c:743 #, c-format msgid "%s is suitable for everyone" msgstr "%s مناسب للجميع" #: src/bz-age-rating-dialog.c:746 #, c-format msgid "%s is suitable for young children" msgstr "%s مناسب Ù„Ù„Ø£Ø·ÙØ§Ù„ الصغار" #: src/bz-age-rating-dialog.c:749 #, c-format msgid "%s is suitable for children" msgstr "%s مناسب Ù„Ù„Ø£Ø·ÙØ§Ù„" #: src/bz-age-rating-dialog.c:752 #, c-format msgid "%s is suitable for teenagers" msgstr "%s مناسب للمراهقين" #: src/bz-age-rating-dialog.c:755 #, c-format msgid "%s is suitable for adults" msgstr "%s مناسب للبالغين" #: src/bz-age-rating-dialog.c:758 #, c-format msgid "%s is suitable for %s" msgstr "%s مناسب للـ %s" #: src/bz-age-rating-dialog.c:852 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-all-apps-page.blp:13 src/bz-apps-page.blp:14 src/bz-full-view.blp:29 #: src/bz-user-data-page.blp:15 src/bz-window.blp:292 msgid "Main Menu" msgstr "القائمة الرئيسة" #: src/bz-all-apps-page.blp:18 src/bz-apps-page.blp:18 #: src/bz-user-data-page.blp:19 src/bz-window.blp:384 msgid "_Donate to Bazaar â¤ï¸" msgstr "ت_برَّع إلى بازار â¤ï¸" #: src/bz-all-apps-page.blp:25 src/bz-apps-page.blp:25 #: src/bz-user-data-page.blp:26 src/bz-window.blp:391 msgid "_Preferences" msgstr "ال_ØªÙØ¶ÙŠÙ„ات" #: src/bz-all-apps-page.blp:30 src/bz-apps-page.blp:30 #: src/bz-user-data-page.blp:31 src/bz-window.blp:396 msgid "_Login with Flathub" msgstr "_تسجيل الدخول بÙلاتهب" #: src/bz-all-apps-page.blp:36 src/bz-apps-page.blp:36 #: src/bz-user-data-page.blp:37 src/bz-window.blp:402 msgid "_Manage Leftover User Data" msgstr "_أدر معلوماتك" #: src/bz-all-apps-page.blp:41 src/bz-apps-page.blp:41 #: src/bz-user-data-page.blp:42 src/bz-window.blp:407 msgid "_Synchronize Remotes" msgstr "مزامنة" #: src/bz-all-apps-page.blp:46 src/bz-apps-page.blp:46 #: src/bz-user-data-page.blp:47 src/bz-window.blp:412 msgid "_Keyboard Shortcuts" msgstr "ا_ختصارات لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" #: src/bz-all-apps-page.blp:51 src/bz-apps-page.blp:51 #: src/bz-user-data-page.blp:52 src/bz-window.blp:417 msgid "_About Bazaar" msgstr "_عَنْ بازار" #: src/bz-all-apps-page.blp:58 src/bz-apps-page.blp:58 #: src/bz-user-data-page.blp:59 src/bz-window.blp:424 msgid "_Quit Bazaar" msgstr "_أخرج من بازار" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "مجلد النظام %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "المجلد ضمن الرئيسي %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "مجلدات نظام المستضيÙ" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "تكوين نظام المضي٠من /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "المجلد ضمن سطح المكتب %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "مجلد سطح المكتب" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "المجلد ضمن المستندات %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "مجلد المستندات" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "المجلد ضمن الموسيقا %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "مجلد الموسيقا" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "المجلد ضمن الصور %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "مجلد الصور" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "المجلد ضمن المشاركة العامة %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "مجلد المشاركة العامة" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "المجلد ضمن الÙيديو %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "مجلد الÙيديو" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "المجلد ضمن القوالب %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "مجلد القوالب" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "المجلد ضمن ذاكرة التخزين المؤقت %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "مجلد الذاكرة المؤقتة للمستخدم" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "المجلد ضمن لإعدادات المستخدم %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "مجلد إعدادات المستخدم" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "المجلد ضمن بيانات المستخدم %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "مجلد بيانات المستخدم" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "المجلد ضمن وقت تشغيل المستخدم %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "مجلد وقت تشغيل المستخدم" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "صلاحيات Ù…Ù„ÙØ§Øª النظام لـ %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "مسار مل٠النظام غير معروÙ" #: src/bz-app-size-dialog.blp:29 src/bz-app-size-dialog.blp:55 msgid "Download Size" msgstr "حجم التنزيل" #: src/bz-app-size-dialog.blp:56 msgid "Amount to download from the internet" msgstr "الكمية المطلوب تنزيلها من الإنترنت" #: src/bz-app-size-dialog.blp:76 msgid "Installed Size" msgstr "حجم التنصيب" #: src/bz-app-size-dialog.blp:77 msgid "Size on Disk" msgstr "الحجم على القرص" #: src/bz-app-size-dialog.blp:99 msgid "User Data Size" msgstr "حجم بيانات المستخدم" #: src/bz-app-size-dialog.blp:100 msgid "Caches, settings, and other app data" msgstr "الذاكرة المؤقتة, الإعدادات, ومعلومات التطبيق الأخرى" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:86 src/bz-full-view.c:287 src/bz-releases-list.c:178 msgid "Installed" msgstr "المنصَّبة" #: src/bz-apps-page.blp:142 msgid "Show All" msgstr "عرض الكل" #: src/bz-apps-page.c:243 #, c-format msgid "All \"%s\"" msgstr "كل \"%s\"" #: src/bz-apps-page.c:530 src/bz-tag-list.c:109 #, c-format msgid "%d Applications" msgstr "%d تطبيقات" #: src/bz-application.c:674 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:675 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:706 msgid "translator-credits" msgstr "" "أحمد النجماوي <iramosu@protonmail.com>\n" "أنس داوود آغا <anasagha2001@gmail.com>" #: src/bz-application.c:717 msgid "Special Thanks" msgstr "شكر خاص" #: src/bz-application.c:775 msgid "Logged Out Successfully!" msgstr "نجح تسجيل الخروج!" #: src/bz-application.c:898 msgid "Performing setup..." msgstr "يتم التنصيب..." #: src/bz-application.c:981 src/bz-application.c:990 msgid "Set Up Flathub" msgstr "Ù†ØµÙ‘ÙØ¨ Ùلاتهب" #: src/bz-application.c:984 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Ùلاتهب لم يتم تنصيبه على النظام. لن تستطيع ØªØµÙØ­ Ùˆ تنصيب تطبيقات بازار اذا لم " "توجد.\n" "\n" "يمكنك استخدام بازار Ù„ØªØµÙØ­ وحذ٠التطبيقات المحملة." #: src/bz-application.c:989 msgid "Later" msgstr "لاحقًا" #: src/bz-application.c:1399 src/bz-application.c:3116 msgid "Synchronizing..." msgstr "ÙŠÙØ²Ø§Ù…Ù†..." #: src/bz-application.c:1546 src/bz-application.c:3112 #, c-format msgid "Receiving %d entries..." msgstr "استلام %d المدخلات..." #: src/bz-application.c:1551 msgid "Checking for updates" msgstr "التحقق من التحديثات" #: src/bz-application.c:3118 msgid "Indexing Data..." msgstr "Ùهرسة البيانات..." #: src/bz-appstream-parser.c:265 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "ØµÙØ­Ø© Ùلاتهَب" #: src/bz-appstream-parser.c:286 msgctxt "Project URL Type" msgid "Project Website" msgstr "موقع المشروع" #: src/bz-appstream-parser.c:290 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "متعقب العلل" #: src/bz-appstream-parser.c:294 msgctxt "Project URL Type" msgid "FAQ" msgstr "الأسئلة الشائعة" #: src/bz-appstream-parser.c:298 msgctxt "Project URL Type" msgid "Help" msgstr "المساعدة" #: src/bz-appstream-parser.c:302 msgctxt "Project URL Type" msgid "Donate" msgstr "التبرع" #: src/bz-appstream-parser.c:308 msgctxt "Project URL Type" msgid "Translate" msgstr "الترجمة" #: src/bz-appstream-parser.c:312 msgctxt "Project URL Type" msgid "Contact" msgstr "التواصل" #: src/bz-appstream-parser.c:316 msgctxt "Project URL Type" msgid "Source Code" msgstr "المصدر البرمجي" #: src/bz-appstream-parser.c:322 msgctxt "Project URL Type" msgid "Contribute" msgstr "المساهمة" #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:68 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:61 #: src/bz-library-page.blp:59 src/bz-user-data-page.blp:86 msgid "Empty" msgstr "ÙØ§Ø±Øº" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "لا يوجد تنسيق" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "" "لا ØªØªÙˆÙØ± معلومات عن التنسيق ÙÙŠ هذا النظام. لا يزال بإمكانك ØªØµÙØ­ التطبيقات " "على Ùلاتهب" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "ØªØµÙØ­ Ùلاتهَب" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 #: src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "غير متصل" #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:49 msgid "Browser" msgstr "Ø§Ù„Ù…ØªØµÙØ­" #: src/bz-developer-badge.c:131 msgid "Developer information not available." msgstr "معلومات المطور غير متاحة." #: src/bz-developer-badge.c:137 src/bz-developer-badge.c:151 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "لم يتم التحقق من ملكية معر٠التطبيق %s وقد يكون حزمة مجتمعية." #: src/bz-developer-badge.c:155 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "تم التحقق يدويًا من ملكية معر٠التطبيق %s بواسطة ÙØ±ÙŠÙ‚ Ùلاتهب." #: src/bz-developer-badge.c:161 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "تم التحقق من ملكية معر٠التطبيق %1$s بواسطة <b>%2$s</b> ÙÙŠ <b>%3$s</b>." #: src/bz-developer-badge.c:168 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "تم التحقق من ملكية معر٠التطبيق %1$s باستخدام %2$s." #: src/bz-developer-badge.c:172 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "تم التحقق من ملكية معر٠التطبيق %s." #: src/bz-donations-dialog.blp:47 msgid "View the Release Page" msgstr "Ø£Ø¸Ù‡ÙØ± ØµÙØ­Ø© الاطلاق" #: src/bz-donations-dialog.blp:69 msgid "This Bazaar Release Was Made Possible By Users Like You!" msgstr "تم إطلاق هذا الإصدار من بازار Ø¨ÙØ¶Ù„ مستخدمين مثلك!" #: src/bz-donations-dialog.blp:77 msgid "" "I love making Bazaar, but I cannot do it alone. If you would like to help " "support further development, please consider donating to the project at my " "ko-fi:" msgstr "" "أحبّ تصميم بازار، لكنني لا أستطيع القيام بذلك Ø¨Ù…ÙØ±Ø¯ÙŠ. إذا كنتم ترغبون ÙÙŠ دعم " "تطويره، ÙŠÙØ±Ø¬Ù‰ التبرع للمشروع عبر حسابي على Ko-fi:" #: src/bz-donations-dialog.blp:87 msgid "Donate to Bazaar" msgstr "تبرَّع إلى بازار" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:156 #, c-format msgid "What's New in Version %s?" msgstr "ما الجديد ÙÙŠ هذا الإصدار %sØŸ" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "اختر تنصيبًا" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "لديك عدة إصدارات منصَّبة من هذا التطبيق. أي واحد ستشرع به؟" #: src/bz-entry-group-util.c:80 src/bz-transaction-dialog.c:201 #: src/bz-transaction-dialog.c:230 src/bz-transaction-dialog.c:275 #: src/bz-transaction-dialog.c:578 msgid "Cancel" msgstr "إلغاء" #: src/bz-entry-selection-row.blp:17 msgid "For this user only" msgstr "لهذا المستخدم Ùقط" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "هذا المستخدم" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "جميع المستخدمين" #: src/error.c:68 msgid "An Error Occurred" msgstr "حدث خطأ" #: src/error.c:89 msgid "Close" msgstr "أغلÙÙ‚" #: src/error.c:90 msgid "Copy and Close" msgstr "انسخ وأغلÙÙ‚" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "سجّل الدخول باستخدام Ùلاتهب لإدارة Ø§Ù„Ù…ÙØ¶Ù„Ø©" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "تسجيل الدخول" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "عدد Ø§Ù„Ù…ÙØ¶Ù„Ø©" #: src/bz-favorites-tile.c:172 msgid "Uninstall" msgstr "إزالة" #: src/bz-favorites-tile.blp:70 src/bz-installed-tile.blp:77 msgid "Support this application" msgstr "ادعم هذا التطبيق" #: src/bz-favorites-tile.blp:119 msgid "Remove from Favorites" msgstr "حذ٠من Ø§Ù„Ù…ÙØ¶Ù„Ø©" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:78 #: src/bz-window.blp:442 msgid "Favorites" msgstr "Ø§Ù„Ù…ÙØ¶Ù„Ø©" #: src/bz-favorites-page.blp:22 src/bz-full-view.blp:44 src/bz-window.blp:307 msgid "Open App Library" msgstr "Ø§ÙØªØ­ مكتبة التطبيقات" #: src/bz-favorites-page.blp:39 src/bz-section-view.blp:144 #: src/bz-transaction-dialog.c:579 msgid "Install All" msgstr "Ù†ØµÙ‘ÙØ¨ الكل" #: src/bz-favorites-page.blp:56 src/bz-user-data-page.blp:75 msgid "Loading" msgstr "يحمّÙÙ„" #: src/bz-favorites-page.blp:71 msgid "No Favorites" msgstr "لا يوجد ØªÙØ¶Ù„ات" #: src/bz-favorites-page.blp:72 msgid "Applications you mark as favorite will appear here" msgstr "ستظهر التطبيقات التي تضع عليها علامة \"Ù…ÙØ¶Ù„Ø©\" هنا" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "السابق" #: src/bz-featured-carousel.blp:53 msgid "Next" msgstr "التالي" #: src/bz-featured-tile.blp:88 msgid "App of the Day" msgstr "تطبيق اليوم" #: src/bz-flathub-category.c:89 msgid "Editing" msgstr "يعدل" #: src/bz-flathub-category.c:90 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:91 msgid "Mixer" msgstr "خلاط" #: src/bz-flathub-category.c:92 msgid "Music" msgstr "موسيقا" #: src/bz-flathub-category.c:93 msgid "Player" msgstr "مشغل" #: src/bz-flathub-category.c:94 msgid "Recorder" msgstr "مسجل" #: src/bz-flathub-category.c:95 msgid "Sequencer" msgstr "جهاز التسلسل" #: src/bz-flathub-category.c:96 msgid "Tuner" msgstr "موالÙ" #: src/bz-flathub-category.c:97 msgid "TV" msgstr "ØªÙ„ÙØ§Ø²" #: src/bz-flathub-category.c:102 msgid "Emulation" msgstr "محاكاة" #: src/bz-flathub-category.c:103 msgid "Action" msgstr "حماسي" #: src/bz-flathub-category.c:104 msgid "Adventure" msgstr "مغامرة" #: src/bz-flathub-category.c:105 msgid "Arcade" msgstr "آركيد" #: src/bz-flathub-category.c:106 msgid "Blocks" msgstr "مكعبات" #: src/bz-flathub-category.c:107 msgid "Board" msgstr "طاولة" #: src/bz-flathub-category.c:108 msgid "Card" msgstr "ورق" #: src/bz-flathub-category.c:109 msgid "Kids" msgstr "Ø£Ø·ÙØ§Ù„" #: src/bz-flathub-category.c:110 msgid "Logic" msgstr "منطق" #: src/bz-flathub-category.c:111 msgid "Role Playing" msgstr "لعب الأدوار" #: src/bz-flathub-category.c:112 msgid "Shooter" msgstr "رماية" #: src/bz-flathub-category.c:113 msgid "Simulation" msgstr "محاكاة" #: src/bz-flathub-category.c:114 msgid "Sports" msgstr "رياضة" #: src/bz-flathub-category.c:115 msgid "Strategy" msgstr "استراتيجية" #: src/bz-flathub-category.c:120 msgid "Audio & Video" msgstr "صوت ÙˆÙيديو" #: src/bz-flathub-category.c:120 msgid "Media" msgstr "وسائط متعددة" #: src/bz-flathub-category.c:120 msgid "More Audio & Video" msgstr "المزيد من الصوت ÙˆÙيديو" #: src/bz-flathub-category.c:121 msgid "Developer Tools" msgstr "أدوات المطوريين" #: src/bz-flathub-category.c:121 msgid "Develop" msgstr "تطوير" #: src/bz-flathub-category.c:121 msgid "More Developer Tools" msgstr "المزيد من أدوات المطوريين" #: src/bz-flathub-category.c:122 msgid "Education" msgstr "تعليمية" #: src/bz-flathub-category.c:122 msgid "Learn" msgstr "تعلَّم" #: src/bz-flathub-category.c:122 msgid "More Education" msgstr "المزيد من التطبيقات التعليمية" #: src/bz-flathub-category.c:123 msgid "Gaming" msgstr "ألعاب" #: src/bz-flathub-category.c:123 msgid "Play" msgstr "لعب" #: src/bz-flathub-category.c:123 msgid "More Gaming" msgstr "المزيد من الألعاب" #: src/bz-flathub-category.c:124 msgid "Graphics & Photography" msgstr "الرسومات والصور" #: src/bz-flathub-category.c:124 msgid "Create" msgstr "صمّÙÙ…" #: src/bz-flathub-category.c:124 msgid "More Graphics & Photography" msgstr "المزيد من الرسومات والصور" #: src/bz-flathub-category.c:125 msgid "Networking" msgstr "شبكي" #: src/bz-flathub-category.c:125 msgid "Internet" msgstr "شبكي" #: src/bz-flathub-category.c:125 msgid "More Networking" msgstr "المزيد من التطبيقات الشبكية" #: src/bz-flathub-category.c:126 msgid "Productivity" msgstr "إنتاجية" #: src/bz-flathub-category.c:126 msgid "Work" msgstr "عمل" #: src/bz-flathub-category.c:126 msgid "More Productivity" msgstr "المزيد من تطبيقات الإنتاجية" #: src/bz-flathub-category.c:127 msgid "Science" msgstr "علمي" #: src/bz-flathub-category.c:127 msgid "More Science" msgstr "المزيد من التطبيقات العلمية" #: src/bz-flathub-category.c:128 msgid "System" msgstr "نظام" #: src/bz-flathub-category.c:128 msgid "More System" msgstr "المزيد من تطبيقات النظام" #: src/bz-flathub-category.c:129 msgid "Utilities" msgstr "أدوات" #: src/bz-flathub-category.c:129 msgid "Tools" msgstr "أدوات" #: src/bz-flathub-category.c:129 msgid "More Utilities" msgstr "المزيد من الأدوات" #: src/bz-flathub-category.c:130 src/bz-flathub-page.blp:119 #: src/bz-flathub-page.blp:152 msgid "Trending" msgstr "الرائجة" #: src/bz-flathub-category.c:130 msgid "More Trending" msgstr "المزيد من التطبيقات الرائجة" #: src/bz-flathub-category.c:131 src/bz-flathub-page.blp:125 #: src/bz-flathub-page.blp:185 msgid "Popular" msgstr "الشائعة" #: src/bz-flathub-category.c:131 msgid "More Popular" msgstr "المزيد من التطبيقات الشائعة" #: src/bz-flathub-category.c:132 src/bz-flathub-page.blp:174 msgid "Recently Added" msgstr "Ø£ÙØ¶ÙŠÙت مؤخرًا" #: src/bz-flathub-category.c:132 src/bz-flathub-page.blp:131 msgid "New" msgstr "جديد" #: src/bz-flathub-category.c:132 msgid "More New" msgstr "المزيد من الجديد" #: src/bz-flathub-category.c:133 src/bz-flathub-page.blp:163 msgid "Recently Updated" msgstr "Ø­ÙØ¯Ù‘ÙØ«Øª مؤخرًا" #: src/bz-flathub-category.c:133 src/bz-flathub-page.blp:137 msgid "Updated" msgstr "حدثَّ مؤخرا" #: src/bz-flathub-category.c:133 msgid "More Updated" msgstr "المزيد من التطبيقات Ø§Ù„Ù…ÙØ­Ø¯Ù‘َثة مؤخرا" #: src/bz-flathub-category.c:134 msgid "Mobile" msgstr "جهاز الهاتÙ" #: src/bz-flathub-category.c:134 msgid "More Mobile" msgstr "المزيد من التطبيقات أجهزة الهاتÙ" #: src/bz-flathub-category.c:135 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:135 msgid "More Adwaita" msgstr "المزيد من Adwaita" #: src/bz-flathub-category.c:136 msgid "KDE Apps" msgstr "تطبيقات بيئة سطح مكتب KDE" #: src/bz-flathub-category.c:136 msgid "More KDE Apps" msgstr "المزيد من تطبيقات بيئة سطح مكتب KDE" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "لم ÙŠÙØ¶Ù Ùلاتهَب" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "لم يتم العثور على جهاز التحكم عن بعد Ùلاتهب ÙÙŠ أي من عمليات تثبيت Ùلاتباك " "الخاصة بك" #: src/bz-flathub-page.blp:35 msgid "Flathub returned an error" msgstr "حصل خطأ ÙÙŠ Ùلاتهب" #: src/bz-flathub-page.blp:41 msgid "Retry Flathub Connection" msgstr "أعد محاولة الاتصال بÙلاتهب" #: src/bz-flathub-page.blp:57 msgid "Flathub Unavailable" msgstr "Ùلاتهب غير Ù…ØªÙˆÙØ±" #: src/bz-flathub-page.blp:58 msgid "" "We could not connect to Flathub. You can still manage and search for " "applications." msgstr "" "لم نتمكن من الاتصال بـÙلاتهب. لا يزال بإمكانك إدارة التطبيقات والبحث عنها." #: src/bz-flathub-page.blp:61 msgid "Search Apps" msgstr "ابحث التطبيقات" #: src/bz-flathub-page.blp:270 msgid "On the Go" msgstr "أثناء التنقل" #: src/bz-flathub-page.blp:282 msgid "Apps for your Linux phones and tablets" msgstr "تطبيقات لأجل هوات٠لينكس وأجهزتها اللوحية" #: src/bz-flathub-page.blp:293 src/bz-flathub-page.blp:328 msgid "More Mobile Apps" msgstr "المزيد من تطبيقات هوات٠لينكس" #: src/bz-flathub-page.blp:388 msgid "We​ ♥​ Games" msgstr "نحن ♥ الألعاب" #: src/bz-flathub-page.blp:401 msgid "Games and apps to run your favorite titles" msgstr "ألعاب وتطبيقات لتشغل عناوينك Ø§Ù„Ù…ÙØ¶Ù„Ø©" #: src/bz-flathub-page.blp:435 msgid "More Games" msgstr "المزيد من الألعاب" #: src/bz-full-view.blp:65 src/bz-library-page.blp:70 #: src/bz-library-page.blp:74 msgid "No Results" msgstr "لا توجد نتائج" #: src/bz-full-view.blp:66 msgid "Try a different search query" msgstr "Ø¬Ø±Ù‘ÙØ¨ عبارة بحث Ù…Ø®ØªÙ„ÙØ©" #: src/bz-full-view.blp:72 msgid "Content" msgstr "المحتوى" #: src/bz-full-view.blp:130 msgid "Installing .flatpak bundles is not yet supported" msgstr "تثبيت حزم Ùلاتباك غير مدعوم حاليًا" #: src/bz-full-view.blp:223 msgid "Support" msgstr "ادعَم" #: src/bz-full-view.blp:246 src/bz-full-view.blp:506 msgid "Open" msgstr "Ø§ÙØªØ­" #: src/bz-full-view.blp:259 src/bz-full-view.blp:479 msgid "Download & Install Application" msgstr "نزّÙÙ„ التطبيق ÙˆÙ†ØµÙ‘ÙØ¨Ù‡" #: src/bz-full-view.blp:274 msgid "Uninstall Application" msgstr "أزÙÙ„ التطبيق" #: src/bz-full-view.blp:289 src/bz-full-view.blp:521 msgid "Install Other Version" msgstr "Ù†ØµÙ‘ÙØ¨ إصدارًا آخر" #: src/bz-full-view.blp:443 msgid "Downloads/Month" msgstr "تنزيلات\\شهر" #: src/bz-full-view.blp:540 msgid "Stopped Receiving Core Updates" msgstr "توق٠عن تلقي التحديثات الأساسية" #: src/bz-full-view.blp:554 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "يستخدم هذا التطبيق بيئة تشغيل لم تعد تتلقى تحديثات أو إصلاحات أمنية. قد يصبح " "استخدامه غير آمن." #: src/bz-full-view.blp:643 msgid "Trash Data" msgstr "بيانات المهملات" #: src/bz-full-view.blp:784 msgid "Tags:" msgstr "الوسوم:" #: src/bz-full-view.c:227 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/bz-full-view.c:234 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/bz-full-view.c:241 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/bz-full-view.c:251 #, c-format msgid "%d downloads in the last 30 days" msgstr "عدد التنزيلات %d ÙÙŠ آخر 30 يومًا" #: src/bz-full-view.c:263 src/bz-full-view.c:597 src/bz-full-view.c:614 msgid "N/A" msgstr "غير Ù…ØªÙˆÙØ±" #. Translators: . #: src/bz-full-view.c:287 msgid "Download" msgstr "تحميل" #: src/bz-full-view.c:307 msgid "Size information unavailable" msgstr "معلومات المقاس غير Ù…ØªÙˆÙØ±Ø©" #: src/bz-full-view.c:310 #, c-format msgid "Download size of %s" msgstr "حجم التنزيل %s" #: src/bz-full-view.c:343 msgid "All Ages" msgstr "جميع الأعمار" #: src/bz-full-view.c:355 msgid "Age rating information unavailable" msgstr "لا توجد معلومات للتصني٠العمري" #: src/bz-full-view.c:360 msgid "Suitable for all ages" msgstr "مناسب لجميع الأعمار" #: src/bz-full-view.c:362 #, c-format msgid "Suitable for ages %d and up" msgstr "مناسب للأعمار من %d سنوات Ùما Ùوق" #: src/bz-full-view.c:395 src/bz-full-view.c:400 src/bz-full-view.c:428 #: src/bz-full-view.c:439 msgid "Unknown" msgstr "مجهول" #: src/bz-full-view.c:405 #, c-format msgid "Free software licensed under %s" msgstr "برامج مجانية مرخصة بموجب %s" #: src/bz-full-view.c:410 msgid "Free software" msgstr "برمجية مجانية" #: src/bz-full-view.c:413 msgid "Proprietary Software" msgstr "برمجية محتكرة" #: src/bz-full-view.c:416 #, c-format msgid "Special License: %s" msgstr "رخصة خاصة: %s" #: src/bz-full-view.c:433 msgid "Free" msgstr "مجاني" #: src/bz-full-view.c:436 src/bz-license-dialog.c:132 msgid "Proprietary" msgstr "محتكرة" #: src/bz-full-view.c:441 src/bz-license-dialog.c:134 msgid "Special License" msgstr "ترخيص خاص" #: src/bz-full-view.c:461 msgid "Adaptive" msgstr "متكيÙ" #: src/bz-full-view.c:461 msgid "Desktop Only" msgstr "سطح المكتب Ùقط" #: src/bz-full-view.c:467 msgid "Works on desktop, tablets, and phones" msgstr "يعمل على أجهزة الكمبيوتر المكتبية والأجهزة اللوحية والهواتÙ" #: src/bz-full-view.c:468 msgid "May not work on mobile devices" msgstr "قد لا يعمل على أجهزة الهاتÙ" #: src/bz-full-view.c:479 msgid "No URL" msgstr "لا رابط" #: src/bz-full-view.c:497 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "هذا التطبيق مرخص تحت رخصة حرَّة، مما يعني أنه يمكن ÙØ­Øµ المصدر البرمجي أمنيًا." #: src/bz-full-view.c:498 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "هذا التطبيق مرخص تحت رخصة احتكارية، مما يعني أنه يطوَّر بشكل خاص ولا يمكن " "الوصول للمصدر البرمجي أو ÙØ­ØµÙ‡ أمنيًا بواسطة طر٠ثالث." #: src/bz-full-view.c:505 msgid "More Apps" msgstr "المزيد من التطبيقات" #: src/bz-full-view.c:506 #, c-format msgid "More Apps by %s" msgstr "المزيد من تطبيقات %s" #: src/bz-full-view.c:513 msgid "Other Apps by this Developer" msgstr "تطبيقات أخرى من هذا المطور" #: src/bz-full-view.c:515 src/bz-full-view.c:715 #, c-format msgid "Other Apps by %s" msgstr "تطبيقات أخرى من %s" #: src/bz-full-view.c:524 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "لم يتم تثبيت %sØŒ ولكن لا يزال يحتوي على <b>%s</b> من البيانات." #: src/bz-full-view.c:604 src/bz-safety-dialog.blp:31 msgid "Safe" msgstr "آمن" #: src/bz-full-view.c:606 src/bz-full-view.c:608 msgid "Low Risk" msgstr "خطورة متدنية" #: src/bz-full-view.c:610 msgid "Medium Risk" msgstr "خطورة متوسطة" #: src/bz-full-view.c:612 msgid "High Risk" msgstr "خطورة عالية" #: src/bz-full-view.c:717 msgid "Other Apps" msgstr "تطبيقات أخرى" #: src/bz-full-view.c:719 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d تطبيق" msgstr[1] "%d تطبيق" msgstr[2] "%d تطبيقات" msgstr[3] "%d تطبيقات" msgstr[4] "%d تطبيقات" msgstr[5] "%d تطبيقات" #: src/bz-full-view.c:1058 msgid "Show Less" msgstr "عرض أقل" #: src/bz-full-view.c:1058 msgid "Show More" msgstr "عرض المزيد" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "دعم الأجهزة" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "دعم لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "يتطلب استخدام لوحة Ù…ÙØ§ØªÙŠØ­" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "ÙŠÙØ¶Ù„ استخدام لوحة Ù…ÙØ§ØªÙŠØ­" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "يدعم استخدام لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "لا توجد معلومات دعم لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "دعم Ø§Ù„ÙØ£Ø±Ø©" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "يتطلب استخدام Ø§Ù„ÙØ£Ø±Ø© أو أجهزة تأشير" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "ÙŠÙØ¶Ù‘ÙŽÙ„ استخدام Ø§Ù„ÙØ£Ø±Ø© أو أجهزة تأشير" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "يدعم Ø§Ù„ÙØ£Ø±Ø© أو أجهزة التأشير" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "لا توجد معلومات دعم Ø§Ù„ÙØ£Ø±Ø© أو أجهزة التأشير" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "دعم شاشة اللمس" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "يتطلب استخدام شاشة اللمس" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "ÙŠÙÙØ¶Ù‘ÙŽÙ„ استخدام شاشة اللمس" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "يدعم شاشة اللمس" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "لا توجد معلومات دعم شاشة اللمس" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "دعم أجهزة الهاتÙ" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "يعمل على أجهزة الهاتÙ" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "قد لا يعمل على أجهزة الهاتÙ" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "دعم أجهزة سطح المكتب" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "يعمل على الشاشة كبيرة الحجم" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "يعمل %s بشكل Ø£ÙØ¶Ù„ على أجهزة محددة" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "يعمل %s على معظم الأجهزة" #: src/bz-installed-tile.blp:63 src/bz-rich-app-tile.blp:136 msgid "Stopped Receiving Updates" msgstr "توق٠عن استقبال التحديثات" #: src/bz-library-page.blp:29 msgid "Search installed apps" msgstr "ابحث ÙÙŠ التطبيقات المنصبة" #: src/bz-library-page.blp:63 msgid "No Apps Found" msgstr "لا توجد تطبيقات" #. Translators: . #: src/bz-library-page.blp:82 src/bz-window.blp:179 msgid "Library" msgstr "المكتبة" #: src/bz-library-page.blp:110 msgid "Pending Updates" msgstr "التحديثات المنتظرة" #: src/bz-library-page.blp:137 msgid "Downloads" msgstr "التنزيلات" #: src/bz-library-page.blp:180 msgid "Recently Uninstalled" msgstr "Ø­Ø°ÙØª مؤخرًا" #: src/bz-library-page.blp:231 msgid "Clear Finished Tasks" msgstr "امح٠كل العمليات المنتهية" #: src/bz-library-page.blp:242 msgid "Installed Apps" msgstr "التطبيقات المنصَّبة" #: src/bz-library-page.c:153 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "لا يوجد نتائج للبحث عن \"%s\" ÙÙŠ التطبيقات المنصبة" #: src/bz-library-page.c:166 src/bz-updates-card.c:257 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u تحديث Ù…ØªÙˆÙØ±" msgstr[1] "%u تحديث Ù…ØªÙˆÙØ±" msgstr[2] "%u تحديثات Ù…ØªÙˆÙØ±" msgstr[3] "%u تحديثات Ù…ØªÙˆÙØ±" msgstr[4] "%u تحديثات Ù…ØªÙˆÙØ±" msgstr[5] "%u تحديثات Ù…ØªÙˆÙØ±" #: src/bz-license-dialog.blp:95 msgid "Get Involved" msgstr "شارك" #: src/bz-license-dialog.c:126 msgid "Unknown License" msgstr "الترخيص غير معروÙ" #: src/bz-license-dialog.c:129 msgid "Community Built" msgstr "من إنشاء المجتمع" #: src/bz-license-dialog.c:202 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "تم تطوير هذا التطبيق من قبل مجتمع دولي.\n" "\n" "يمكنك المساعدة ÙÙŠ جعله Ø£ÙØ¶Ù„." #: src/bz-license-dialog.c:205 msgid "The license of this app is not known" msgstr "ترخيص هذا التطبيق غير معروÙ" #: src/bz-license-dialog.c:211 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "تم تطوير هذا التطبيق من قبل مجتمع دولي, وإطلاقه تحت ترخيص %s.\n" "\n" "يمكنك المساعدة ÙÙŠ جعله Ø£ÙØ¶Ù„." #: src/bz-license-dialog.c:219 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "هذا التطبيق ليس Ù…ÙØªÙˆØ­ المصدر، لذا لا يعر٠طريقة عمله إلا مطوروه. قد يكون غير " "آمن بطرق يصعب اكتشاÙها، وقد يتغير دون رقابة.\n" "\n" "قد تتمكن أو لا تتمكن من المساهمة ÙÙŠ تطوير هذا التطبيق." #: src/bz-license-dialog.c:225 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "تم تطوير هذا التطبيق بموجب ترخيص خاص %s.\n" "\n" "قد تتمكن أو لا تتمكن من المساهمة ÙÙŠ هذا التطبيق." #: src/bz-login-page.blp:5 src/bz-login-page.blp:42 msgid "Connect to Flathub" msgstr "اربط بÙلاتهب" #: src/bz-login-page.blp:32 msgid "Something Went Wrong" msgstr "حدث خطأ" #: src/bz-login-page.blp:43 msgid "Connect your Flathub account to Bazaar to manage your favorited apps." msgstr "اربط حسابك على Ùلاتهب ببازار لادارة تطبيقاتك Ø§Ù„Ù…ÙØ¶Ù„Ø©." #: src/bz-login-page.blp:108 msgid "Finish" msgstr "انتهاء" #: src/bz-login-page.c:664 #, c-format msgid "Hello, %s!" msgstr "مرحبا, %s!" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Ø§Ù„ØªÙØ¶ÙŠÙ„ات" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data sync is paused" msgstr "" "يتم تحديد ØªÙƒÙ„ÙØ© الاتصال بالشبكة - تم إيقا٠مزامنة بيانات المتجر التلقائية " "مؤقتًا" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:334 msgid "Sync Manually" msgstr "زامن" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Ùلاتر المحتوى" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "برمجيات مجانية Ùقط" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary applications when browsing and searching" msgstr "Ø¥Ø®ÙØ§Ø¡ التطبيقات المحتكرة من نتائج البحث" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "نتائج من Ùلاتهب Ùقط" #: src/bz-preferences-dialog.blp:40 msgid "" "Limit search and browse results to applications only available on Flathub" msgstr "Ù‚ÙŠÙ‘ÙØ¯ نتائج البحث إلى التطبيقات Ø§Ù„Ù…ØªÙˆÙØ±Ø© على Ùلاتهَب Ùقط" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "نتائج موثقة Ùقط" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Ø§Ø³ØªØ¨Ø¹ÙØ¯ النتائج التي ليست موثقة من Ùلاتهَب" #: src/bz-preferences-dialog.blp:49 msgid "Hide EOL Apps" msgstr "Ø¥Ø®ÙØ§Ø¡ تطبيقات نهاية العمر Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "أخ٠التطبيقات التي لم تعد مدعومة من مطوريها" #: src/bz-preferences-dialog.blp:55 src/bz-window.blp:197 msgid "Search" msgstr "ابحث" #: src/bz-preferences-dialog.blp:58 msgid "Delay Search Results" msgstr "تأخير نتائج البحث" #: src/bz-preferences-dialog.blp:59 msgid "Improve results performance by debouncing search terms" msgstr "تحسين أداء نتائج البحث عن طريق تقليل ارتداد مصطلحات البحث" #: src/bz-preferences-dialog.blp:64 msgid "Progress Bar" msgstr "شريط التقدم" #: src/bz-preferences-dialog.blp:65 msgid "Choose a theme for the progress bar!" msgstr "حدد سمة لشريط التحميل العام!" #: src/bz-preferences-dialog.blp:89 msgid "Vertical Stripes" msgstr "خطوط عمودية" #: src/bz-preferences-dialog.blp:90 msgid "Display flag colors from left to right" msgstr "اعرض ألوان العلم من اليسار إلى اليمين" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "لون النظام" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "الوان Ø§Ù„ÙØ®Ø±" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "الوان ÙØ®Ø± السحاقيات" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "ألوان ÙØ®Ø± المثليين الذكور" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "ألوان ÙØ®Ø± المتحولين جنسياً" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "ألوان ÙØ®Ø± غير الثنائيين" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "ألوان ÙØ®Ø± ثنائيي الجنس" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "ألوان ÙØ®Ø± اللاجنسيين" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "ألوان ÙØ®Ø± الجنسانية الشاملة" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "ألوان ÙØ®Ø± اللاجنسيين" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "ألوان ÙØ®Ø± الهوية الجندرية المتغيرة" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "ألوان ÙØ®Ø± تعدد الميول الجنسية" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "ألوان ÙØ®Ø± الجنس الشامل" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "ألوان ÙØ®Ø± الأرومانسيين واللا رومانسيين" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "ألوان ÙØ®Ø± اللاجنسيين" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "ألوان ÙØ®Ø± الجندر كوير" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "ألوان ÙØ®Ø± ثنائيي الجنس" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "ألوان ÙØ®Ø± الجنس الجزئي" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "ألوان ÙØ®Ø± ثنائيي الميول الرومانسية" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "ألوان ÙØ®Ø± ذوي الإعاقة" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "ألوان ÙØ®Ø± الÙيمبوي" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "ألوان ÙØ®Ø± النيوتروا" #: src/bz-releases-dialog.blp:5 src/bz-releases-list.blp:28 #: src/bz-updates-card.blp:150 msgid "Version History" msgstr "تاريخ الاصدارات" #: src/bz-releases-list.c:168 #, c-format msgid "Version %s" msgstr "الإصدار %s" #: src/bz-releases-list.c:220 msgid "No details for this release" msgstr "لا ØªÙØ§ØµÙŠÙ„ لهذه الإصدارة" #: src/bz-releases-list.c:232 msgid "Get More Information" msgstr "احصل على معلومات اضاÙية" #: src/bz-rich-app-tile.blp:153 msgid "Get" msgstr "يحصل" #: src/safety-calculator.c:82 msgid "Unknown Permissions" msgstr "أذونات غير Ù…Ø¹Ø±ÙˆÙØ©" #: src/safety-calculator.c:83 msgid "Permissions are missing for this app." msgstr "أذونات Ù…Ùقودة للتطبيق." #: src/safety-calculator.c:96 msgid "No Permissions" msgstr "لا أذونات" #: src/safety-calculator.c:97 msgid "App is fully sandboxed" msgstr "التطبيق معزول بالكامل" #: src/safety-calculator.c:103 msgid "Network Access" msgstr "اتصال بالشبكة" #: src/safety-calculator.c:104 msgid "Can access the internet" msgstr "قادر على الوصول للشبكة" #: src/safety-calculator.c:106 msgid "No Network Access" msgstr "لا يوجد وصول للشبكة" #: src/safety-calculator.c:107 msgid "Cannot access the internet" msgstr "غير قادر على الوصول للشبكة" #: src/safety-calculator.c:112 msgid "User Device Access" msgstr "الوصول لجهاز المستخدم" #: src/safety-calculator.c:113 msgid "Can access devices such as webcams or gaming controllers" msgstr "قادر على الوصول للأجهزة مثل الكاميرا وأيادي اللعب" #: src/safety-calculator.c:115 msgid "No User Device Access" msgstr "غير قادر على الوصول لجهاز المستخدم" #: src/safety-calculator.c:116 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "غير قادر على الوصول لأجهزة كالكاميرا أو كونترولر الألعاب" #: src/safety-calculator.c:121 msgid "Input Device Access" msgstr "الوصول لأجهزة الدخل" #: src/safety-calculator.c:122 msgid "Can access input devices" msgstr "قادر على الوصول لأجهزة الدخل" #: src/safety-calculator.c:128 msgid "Microphone Access and Audio Playback" msgstr "الوصول للميكروÙون وتشغيل الصوت" #: src/safety-calculator.c:129 msgid "Can listen using microphones and play audio without asking permission" msgstr "قادر على الاستماع باستخدام الميكروÙونات وتشغيل الصوت دون طلب إذن" #: src/safety-calculator.c:135 msgid "System Device Access" msgstr "الوصول إلى أجهزة النظام" #: src/safety-calculator.c:136 msgid "Can access system devices which require elevated permissions" msgstr "يمكنه الوصول إلى أجهزة النظام التي تتطلب صلاحيات موسعة" #: src/safety-calculator.c:142 msgid "Screen Contents Access" msgstr "الوصول إلى محتويات الشاشة" #: src/safety-calculator.c:143 msgid "Can access the contents of the screen or other windows" msgstr "يمكن الوصول إلى محتويات الشاشة أو Ø§Ù„Ù†ÙˆØ§ÙØ° الأخرى" #: src/safety-calculator.c:149 msgid "Legacy Windowing System" msgstr "نظام Ù†ÙˆØ§ÙØ° قديم" #: src/safety-calculator.c:150 msgid "Always uses a legacy windowing system (X11)" msgstr "دائما يستخدم نظام Ø§Ù„Ù†ÙˆØ§ÙØ° (X11) القديم" #: src/safety-calculator.c:156 msgid "Arbitrary Permissions" msgstr "أذونات تعسÙية" #: src/safety-calculator.c:157 msgid "Can acquire arbitrary permissions" msgstr "يمكن الحصول على أذونات تعسÙية" #: src/safety-calculator.c:163 msgid "User Settings" msgstr "إعدادات المستخدم" #: src/safety-calculator.c:164 msgid "Can access and change user settings" msgstr "قادر على الوصول وتعديل إعدادات المستخدم" #: src/safety-calculator.c:170 msgid "Full File System Read/Write Access" msgstr "وصول كامل لقراءة وكتابة Ù…Ù„ÙØ§Øª النظام" #: src/safety-calculator.c:171 msgid "Can read and write all data on the file system" msgstr "قادر على قراءة وكتابة جميع البيانات التي على بيانات النظام" #: src/safety-calculator.c:178 msgid "Home Folder Read/Write Access" msgstr "إمكانية الوصول للقراءة/الكتابة إلى المجلد الرئيسي" #: src/safety-calculator.c:179 msgid "Can read and write all data in your home directory" msgstr "يمكنك قراءة وكتابة جميع البيانات ÙÙŠ دليل المستخدم الخاص بك" #: src/safety-calculator.c:186 msgid "Full File System Read Access" msgstr "وصول كامل لقراءة Ù…Ù„ÙØ§Øª النظام" #: src/safety-calculator.c:187 msgid "Can read all data on the file system" msgstr "يمكن قراءة جميع البيانات الموجودة على نظام Ø§Ù„Ù…Ù„ÙØ§Øª" #: src/safety-calculator.c:195 msgid "Home Folder Read Access" msgstr "إمكانية قراءة المجلد الرئيسي" #: src/safety-calculator.c:196 msgid "Can read all data in your home directory" msgstr "يمكن قراءة جميع البيانات ÙÙŠ مجلدك الرئيسي" #: src/safety-calculator.c:204 msgid "Download Folder Read/Write Access" msgstr "إمكانية قراءة/كتابة مجلد التنزيل" #: src/safety-calculator.c:205 msgid "Can read and write all data in your downloads directory" msgstr "يمكنك قراءة وكتابة جميع البيانات ÙÙŠ مجلد التنزيلات الخاص بك" #: src/safety-calculator.c:215 msgid "Download Folder Read Access" msgstr "إمكانية قراءة مجلد التنزيل" #: src/safety-calculator.c:216 msgid "Can read all data in your downloads directory" msgstr "قادر على قراءة جميع البيانات ÙÙŠ مجلد التحميلات" #: src/safety-calculator.c:229 msgid "Can read and write all data in the directory" msgstr "قادر على قراءة وكتابة البيانات ضمن هذا المجلد" #: src/safety-calculator.c:243 msgid "Can read all data in the directory" msgstr "قادر على قراءة البيانات ضمن هذا المجلد" #: src/safety-calculator.c:258 msgid "No File System Access" msgstr "لا يوجد وصول Ù„Ù…Ù„ÙØ§Øª النظام" #: src/safety-calculator.c:259 msgid "Cannot access the file system at all" msgstr "غير قادر على الوصول Ù„Ù…Ù„ÙØ§Øª النظام على الإطلاق" #: src/safety-calculator.c:266 msgid "Uses System Services" msgstr "يستخدم خدمات النظام" #: src/safety-calculator.c:267 msgid "Can request data from non-portal system services" msgstr "يمكن طلب البيانات من خدمات النظام غير التابعة للبوابة" #: src/safety-calculator.c:273 msgid "Uses Session Services" msgstr "يستخدم خدمات الجلسة" #: src/safety-calculator.c:274 msgid "Can request data from non-portal session services" msgstr "يمكن طلب البيانات من خدمات جلسات غير تابعة للبوابة" #: src/safety-calculator.c:322 msgid "No Service Access" msgstr "لا يوجد وصول للخدمات" #: src/safety-calculator.c:323 msgid "Cannot access non-portal session or system services at all" msgstr "" "لا يمكن الوصول إلى جلسات أو خدمات النظام غير التابعة للبوابة على الإطلاق" #: src/safety-calculator.c:331 msgid "Verified App Developer" msgstr "مطور تطبيقات موثق" #: src/safety-calculator.c:332 msgid "The developer of this app has been verified to be who they say they are" msgstr "تم التحقق من هوية مطور هذا التطبيق" #: src/safety-calculator.c:341 msgid "Proprietary Code" msgstr "كود محتكر" #: src/safety-calculator.c:342 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "الكود المصدري غير متاح للعامة ويمكن مراجعته بشكل مستقل، مما يعني أن التطبيق " "قد يكون غير آمن" #: src/safety-calculator.c:352 msgid "Auditable Code" msgstr "كود قابل للتدقيق" #: src/safety-calculator.c:353 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "الكود المصدري متاح للعامة ويمكن مراجعته بشكل مستقل، مما يجعل التطبيق أكثر " "أمانًا" #: src/safety-calculator.c:493 #, c-format msgid "Use the %s System Service" msgstr "يمكنه استخدام خدمة النظام: %s" #: src/safety-calculator.c:497 #, c-format msgid "Use the %s Session Service" msgstr "يمكنه استخدام جلسة الخدمة: %s" #: src/safety-calculator.c:501 #, c-format msgid "Use the %s Service" msgstr "يمكنه استخدام خدمة: %s" #: src/safety-calculator.c:511 msgid "Can see the non-portal service" msgstr "يمكنه رؤية الخدمة غير التابعة للبوابة" #: src/safety-calculator.c:513 msgid "Can talk to the non-portal service" msgstr "يمكنه التحدث مع الخدمة غير التابعة للبوابة" #: src/safety-calculator.c:515 msgid "Can own the non-portal service" msgstr "يمكنه امتلاك الخدمة غير التابعة للبوابة" #: src/safety-calculator.c:530 msgid "Global Menu Integration" msgstr "تكامل القوائم العامة" #: src/safety-calculator.c:531 msgid "Can display its menus in a global menu bar" msgstr "قادر على عرض قوائمه ÙÙŠ شريط القوائم العام" #: src/safety-calculator.c:536 msgid "KDE Settings Integration" msgstr "تكامل إعدادات KDE" #: src/safety-calculator.c:537 msgid "Can detect when KDE desktop settings change" msgstr "قادر على تحديد التغيرات ÙÙŠ إعدادات سطح مكتب KDE" #: src/safety-calculator.c:542 msgid "KDE Global Settings" msgstr "الإعدادات العامة لـKDE" #: src/safety-calculator.c:543 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "قادر على قراءة ØªÙØ¶ÙŠÙ„ات سطح مكتب KDE مثل الخطوط والألوان" #: src/safety-calculator.c:548 msgid "Secret Storage Service" msgstr "خدمة تخزين الأسرار" #: src/safety-calculator.c:549 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "قادر على تخزين واستعادة كلمات المرور الخاصة به باستخدام سلسلة Ù…ÙØ§ØªÙŠØ­ النظام" #: src/safety-calculator.c:554 msgid "Desktop Notifications Service" msgstr "خدمة إشعارات سطح المكتب" #: src/safety-calculator.c:555 msgid "Can send desktop notifications" msgstr "يستطيع إرسال إشعارات لسطح المكتب" #: src/safety-calculator.c:561 msgid "System Tray Integration" msgstr "تكامل شريط النظام" #: src/safety-calculator.c:562 msgid "Can display an icon in the system tray" msgstr "قادر على عرض أيقونة ÙÙŠ شريط النظام" #: src/safety-calculator.c:567 msgid "KDE Connect Integration" msgstr "تكامل KDE Connect" #: src/safety-calculator.c:568 msgid "Can interact with devices paired via KDE Connect" msgstr "قادر على Ø§Ù„ØªÙØ§Ø¹Ù„ مع الأجهزة المرتبطة عن طريق KDE Connect" #: src/bz-safety-dialog.blp:7 msgid "Safety" msgstr "الأمن" #: src/bz-safety-dialog.blp:50 msgid "Details" msgstr "Ø§Ù„ØªÙØ§ØµÙŠÙ„" #: src/bz-safety-dialog.blp:53 msgid "License" msgstr "الرخصة" #: src/bz-safety-dialog.blp:63 msgid "App ID" msgstr "معر٠التطبيق" #: src/bz-safety-dialog.blp:73 msgid "SDK" msgstr "حزمة التطوير البرمجية" #: src/bz-safety-dialog.blp:101 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "يستخدم هذا التطبيق إصدارًا قديمًا من منصة البرامج (حزمة تطوير برمجية) وقد " "يحتوي على أخطاء أو ثغرات أمنية لن يتم إصلاحها." #: src/bz-safety-dialog.c:227 #, c-format msgid "%s is Safe" msgstr "%s آمن" #: src/bz-safety-dialog.c:232 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s لا يملك أذونات آمنة" #: src/bz-safety-dialog.c:237 #, c-format msgid "%s is Probably Safe" msgstr "%s آمن غالبا" #: src/bz-safety-dialog.c:242 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s يمكن أن يكون آمن" #: src/bz-safety-dialog.c:247 #, c-format msgid "%s is Unsafe" msgstr "%s غير آمن" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "لقطات الشاشة" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "لقطة الشاشة السابقة" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "لقطة الشاشة التالية" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "نسخ الصورة" #: src/bz-screenshot-page.blp:147 msgid "Reset View" msgstr "إعادة ضبط" #: src/bz-screenshot-page.blp:158 msgid "Zoom Out" msgstr "تصغير" #: src/bz-screenshot-page.blp:168 msgid "Zoom In" msgstr "تكبير" #: src/bz-screenshots-carousel.blp:5 msgid "Screenshots Carousel" msgstr "عرض لقطات الشاشة" #: src/bz-screenshots-carousel.blp:112 msgid "Open Screenshot Viewer" msgstr "Ø§ÙØªØ­ عارض لقطات الشاشة" #: src/bz-search-widget.blp:57 msgid "Search Apps, Games, Software" msgstr "ابحث عن التطبيقات, الألعاب, البرامج" #: src/bz-search-widget.blp:96 msgid "Categories Unavailable" msgstr "التصني٠غير Ù…ØªÙˆÙØ±" #: src/bz-search-widget.blp:97 msgid "Search for apps using the search bar above." msgstr "ابحث عن التطبيقات من خلال حقل البحث ÙÙŠ الأعلى." #: src/bz-search-widget.blp:181 msgid "No Applications Found" msgstr "لم يتم العثور على تطبيق" #: src/bz-search-widget.c:241 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "لا يوجد نتائج لـ \"%s\" ÙÙŠ Ùلاتهب" #: src/bz-share-list.c:64 msgid "Copied!" msgstr "Ù†ÙØ³ÙØ®!" #: src/bz-share-list.c:116 msgid "Copy Link" msgstr "انسخ الوصلة" #: src/bz-share-list.c:127 msgid "Open Link" msgstr "Ø§ÙØªØ­ الوصلة" #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "الخط الزمني" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "التنصيبات:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "العالم" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:124 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM كامل التنزيلات" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:127 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK كامل التنزيلات" #: src/bz-stats-dialog.c:129 #, c-format msgid "%'d Total Installs" msgstr "%'d كامل التنزيلات" #: src/bz-tag-list.c:96 msgid "No Results Found" msgstr "لا توجد نتائج" #: src/bz-tag-list.c:108 #, c-format msgid "Apps Tagged \"%s\"" msgstr "التطبيقات الموسومة \"%s\"" #: src/bz-tag-list.c:124 msgid "Search failed" msgstr "ÙØ´Ù„ البحث" #: src/bz-transaction-dialog.c:155 msgid "Keep Data" msgstr "Ø§Ù„Ø­ÙØ§Ø¸ على المعلومات" #: src/bz-transaction-dialog.c:156 msgid "Allow restoring settings and content" msgstr "السماح باستعادة الإعدادات والمحتوى" #: src/bz-transaction-dialog.c:165 msgid "Delete Data" msgstr "حذ٠المعلومات" #: src/bz-transaction-dialog.c:166 msgid "Permanently remove app data to save space" msgstr "أزÙÙ„ معلومات التطبيق نهائيا Ù„Ù„Ø­ÙØ§Ø¸ على مساحة التخزين" #: src/bz-transaction-dialog.c:191 #, c-format msgid "Install %s?" msgstr "أتÙÙ†ØµÙ‘ÙØ¨ %sØŸ" #: src/bz-transaction-dialog.c:196 msgid "" "Select which version to install. May install additional shared components" msgstr "حدد الإصدار الذي ترغب ÙÙŠ تنصيبه. قد تÙنصَّب مكونات إضاÙية مشتركة" #: src/bz-transaction-dialog.c:198 msgid "May install additional shared components" msgstr "قد تÙنصَّب مكونات إضاÙية مشتركة" #: src/bz-transaction-dialog.c:219 #, c-format msgid "Remove %s?" msgstr "Ø£ØªÙØ²ÙŠÙ„ %sØŸ" #: src/bz-transaction-dialog.c:222 msgid "Select which version to remove." msgstr "حدد الإصدار الذي تود حذÙÙ‡." #: src/bz-transaction-dialog.c:224 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "لن تستطيع استخدام %s بعد إزالته." #: src/bz-transaction-dialog.c:247 #, c-format msgid "“%s†is High Risk" msgstr "“%s†خطر جدا" #: src/bz-transaction-dialog.c:251 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "هذا التطبيق يملك صلاحيات كاملة على نظامك منها <b>Ù…Ù„ÙØ§ØªÙƒ, معلومات ØªØµÙØ­Ùƒ, " "كلمات مرورك المحÙوظة</b>,Ùˆ المزيد. وأيضا يملك صلاحية وصول للشبكة, قد يعني " "ذلك إرسال معلوماتك لجهات خارجية.\n" "\n" "لأن التطبيق محتكر، Ùلا يمكن تدقيقه Ù„Ù…Ø¹Ø±ÙØ© ما ÙŠÙØ¹Ù„Ù‡ بهذه الأذونات." #: src/bz-transaction-dialog.c:260 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "هذا التطبيق يستخدم نظام Ø§Ù„Ù†ÙˆØ§ÙØ° X11, مما يسمح له بـ <b>تسجيل جميع ضغطات " "الأزرار, تسجيل لقطات الشاشة, ومراقبة التطبيقات الأخرى</b>. كما يمكنه أيضا " "الوصول للشبكة, مما يعني إمكانية إرسال بياناتك الشخصية لأطرا٠خارجية.\n" "لأن التطبيق محتكر، Ùلا يمكن تدقيقه Ù„Ù…Ø¹Ø±ÙØ© ما ÙŠÙØ¹Ù„Ù‡ بهذه الأذونات." #: src/bz-transaction-dialog.c:276 msgid "Install Anyway" msgstr "Ù†ØµÙ‘ÙØ¨ على كل حال" #: src/bz-transaction-dialog.c:549 msgid "All apps are already installed" msgstr "تم تنصيب جميع التطبيقات" #: src/bz-transaction-dialog.c:551 msgid "OK" msgstr "حسناً" #: src/bz-transaction-dialog.c:567 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "أتÙÙ†ØµÙ‘ÙØ¨ %u التطبيق؟" msgstr[1] "أتÙÙ†ØµÙ‘ÙØ¨ %u التطبيق؟" msgstr[2] "أتÙÙ†ØµÙ‘ÙØ¨ %u التطبيقات؟" msgstr[3] "أتÙÙ†ØµÙ‘ÙØ¨ %u التطبيقات؟" msgstr[4] "أتÙÙ†ØµÙ‘ÙØ¨ %u التطبيقات؟" msgstr[5] "أتÙÙ†ØµÙ‘ÙØ¨ %u التطبيقات؟" #: src/bz-transaction-dialog.c:575 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "سيتم تنصيب التالي. برمجيات تشاركية إضاÙية قد يتم تنصيبها" #: src/bz-transaction-dialog.c:576 #, c-format msgid "%d addons will be installed." msgstr "%d Ø¥Ø¶Ø§ÙØ§Øª ستنصَّب." #: src/bz-transaction-dialog.c:577 msgid "Additionally, addons will be installed." msgstr "Ø¨Ø§Ù„Ø¥Ø¶Ø§ÙØ© إلى ذلك، ستنصَّب %d من بيئات التشغيل Ùˆ\\أو Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª." #: src/bz-transaction-manager.c:1251 #, c-format msgid "Finished in %.02f seconds" msgstr "انتهى خلال %.02f ثانية" #: src/bz-transaction-tile.blp:125 msgid "App Add-on" msgstr "Ø¥Ø¶Ø§ÙØ§Øª التطبيق" #: src/bz-transaction-tile.blp:154 msgid "Runtime" msgstr "وقت التشغيل" #: src/bz-transaction-tile.blp:178 msgid "In Queue" msgstr "ÙÙŠ الطابور" #: src/bz-transaction-tile.blp:202 msgid "Done" msgstr "انتهاء" #: src/bz-transaction-tile.blp:226 msgid "Error" msgstr "خطأ" #: src/bz-transaction-tile.blp:267 msgid "Open App" msgstr "Ø§ÙØªØ­ التطبيق" #: src/bz-transaction-tile.c:110 #, c-format msgid "%s Freed" msgstr "%s ذاكرة محررة" #: src/bz-transaction.c:342 msgid "Pending" msgstr "ينتظر" #: src/bz-updates-card.blp:36 msgid "Update All" msgstr "Ø­Ø¯Ù‘ÙØ« الكل" #: src/bz-updates-card.blp:161 src/bz-updates-card.blp:186 msgid "Update" msgstr "Ø­Ø¯Ù‘ÙØ«" #: src/bz-updates-card.c:293 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u تحديث وقت التشغيل" msgstr[1] "%u تحديث وقت التشغيل" msgstr[2] "%u تحديثات وقت التشغيل" msgstr[3] "%u تحديثات وقت التشغيل" msgstr[4] "%u تحديثات وقت التشغيل" msgstr[5] "%u تحديثات وقت التشغيل" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "أدر معلوماتك" #: src/bz-user-data-page.blp:89 msgid "No User Data found" msgstr "لم يتم العثور على معلومات المستخدم" #: src/bz-user-data-page.blp:94 msgid "User Data" msgstr "معلومات المستخدم" #: src/bz-user-data-tile.c:144 #, c-format msgid "Trashed User Data for %s" msgstr "معلومات المستخدم المهملة لـ %s" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "معلومات المستخدم المهملة" #: src/bz-window.blp:135 msgid "Refreshing Store Content" msgstr "تحديث محتوى المتجر" #: src/bz-window.blp:153 msgid "Curated" msgstr "المنتقاة" #: src/bz-window.blp:166 msgid "Flathub" msgstr "Ùلاتهَب" #: src/bz-window.blp:273 msgid "No background tasks!" msgstr "لا توجد مهمات ÙÙŠ الخلÙية!" #: src/bz-window.blp:325 msgid "You are running a new version of Bazaar!" msgstr "انت تشغل نسخة حديثة من بازار!" #: src/bz-window.blp:326 msgid "See What's New" msgstr "تعر٠على أحدث التطبيقات" #: src/bz-window.blp:333 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "لديك اتصال بالشبكة ولكن يتم عرض نسخة مسجلة من Ùلاتهب" #: src/bz-window.blp:449 msgid "Log Out" msgstr "تسجيل الخروج" #: src/bz-window.c:683 msgid "You can't remove Bazaar from Bazaar!" msgstr "لا يمكنك حذ٠بازار من بازار!" #: src/bz-window.c:891 src/bz-window.c:925 msgid "Can't do that right now!" msgstr "لا يمكن ÙØ¹Ù„ ذلك الآن!" #: src/bz-world-map.c:587 msgctxt "As in, \"100 Downloads\"" msgid "Downloads" msgstr "التنزيلات" #: src/gtk/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "عام" #: src/gtk/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "Ø§ÙØªØ­ البحث" #: src/gtk/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Ø§ÙØªØ­ Ø§Ù„ØªÙØ¶ÙŠÙ„ات" #: src/gtk/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Synchronize Remotes" msgstr "المزامنة" #: src/gtk/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Open Library" msgstr "Ø§ÙØªØ­ المكتبة" #: src/gtk/shortcuts-dialog.blp:30 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Ø£Ø¸Ù‡ÙØ± الاختصارات" #: src/gtk/shortcuts-dialog.blp:35 msgctxt "shortcut window" msgid "Quit" msgstr "الخروج" #~ msgid "Show Git Forge Star Counts" #~ msgstr "إظهار نجوم مستودع Ø¬ÙØª" #~ msgid "" #~ "Whether to attempt to detect and show \"star counts\" for projects in the " #~ "full view" #~ msgstr "أيظهر مقدار نجوم مستودع Ø¬ÙØª للمشروع أم لا؟" #~ msgid "Only Show Free Software" #~ msgstr "إظهار البرمجيات الحرة حصرًا" #~ msgid "Hide proprietary software when searching" #~ msgstr "يخÙÙŠ البرمجيات المحتكرة عند البحث" #~ msgid "Filter search results to only show applications available on Flathub" #~ msgstr "ÙŠØ±Ø´Ù‘ÙØ­ نتائج البحث لتظهر التطبيقات Ø§Ù„Ù…ØªÙˆÙØ±Ø© على Ùلاتهَب حصرًا" #~ msgid "Debounce Search Inputs" #~ msgstr "تجاهل ارتداد مدخلات البحث" #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "يؤخر إظهار النتائج لمنع ظهورها Ùوريًا أثناء الكتابة" #~ msgid "Global Progress Bar Theme" #~ msgstr "سمة شريط التقدم العامة" #~ msgid "Describes the look of the global progress bar" #~ msgstr "يشرح المظهر العام لشريط التقدم" #~ msgid "Saved Window Dimensions" #~ msgstr "أبعاد Ø§Ù„Ù†Ø§ÙØ°Ø© المحÙوظة" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "أبعاد Ø§Ù„Ù†Ø§ÙØ°Ø© التي ستستخدمها Ù†Ø§ÙØ°Ø© بازار التالية" #~ msgid "Nucleus app page" #~ msgstr "ØµÙØ­Ø© تطبيق «Nucleus»" #~ msgid "Manage Addons" #~ msgstr "Ø£Ø¯ÙØ± Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª" #~ msgid "Of the size of human DNA" #~ msgstr "من حجم الحمض الريبي النووي منزوع الأكسجين للإنسان" #~ msgid "3 billion base pairs" #~ msgstr "3 مليارات زوج قاعدي" #~ msgid "Of the Linux Kernel" #~ msgstr "من نواة لينكس" #~ msgid "linux-6.17.tar.xz" #~ msgstr "linux-6.17.tar.xz" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "من حاسوب توجيه أبولو 11" #~ msgid "Total ROM and RAM" #~ msgstr "إجمالي ذاكرة القراءة والذاكرة العشوائية" #~ msgid "Of the original Super Mario Bros" #~ msgstr "من لعبة «سوبر ماريو بروز» الأصلية" #~ msgid "Of the size of Wikipedia" #~ msgstr "من حجم ويكيبيديا" #~ msgid "Without any media" #~ msgstr "دون أي وسائط" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "هذه Ø§Ù„ÙˆØ¸ÙŠÙØ© معطَّلة حاليًا. ينصح بتنصيب «Ùلاتسيل» لإدارة أذونات التطبيق." #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "أحمد النجماوي" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Azenyr" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Goudarz Jafari" #~ msgstr "Goudarz Jafari" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore (Lumaeris)" #~ msgstr "Jill Fiore (Lumaeris)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "João Victor (Leal)" #~ msgstr "João Victor (Leal)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "KiKaraage" #~ msgstr "KiKaraage" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Léane GRASSER" #~ msgstr "Léane GRASSER" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Marcel Mrówka (Microwave)" #~ msgstr "Marcel Mrówka (Microwave)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Peter Dave Hello" #~ msgstr "Peter Dave Hello" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Pietro F." #~ msgstr "Pietro F." #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shinsei" #~ msgstr "Shinsei" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "camegone" #~ msgstr "camegone" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #~ msgid "Constructing Flatpak instance..." #~ msgstr "ØªÙØ¨Ù†Ù‰ نسخة Ùلاتباك..." #~ msgid "Reusing last Flatpak instance..." #~ msgstr "يعاد استخدام آخر نسخة Ùلاتباك..." #~ msgid "Flathub is not registered on this system" #~ msgstr "لم ÙŠÙØ³Ø¬Ù‘ÙÙ„ Ùلاتهَب على هذا النظام" #~ msgid "" #~ "Would you like to add Flathub as a remote? If you decline, the Flathub " #~ "page will not be available. You can change this later." #~ msgstr "" #~ "أتود Ø¥Ø¶Ø§ÙØ© Ùلاتهَب كمستودع؟ لن ØªØªÙˆÙØ± ØµÙØ­Ø© Ùلاتهَب إن Ø±ÙØ¶Øª ذلك. يمكنك تغيير " #~ "ذلك لاحقًا." #~ msgid "Add Flathub" #~ msgstr "أضÙÙ Ùلاتهَب" #, c-format #~ msgid "Identifying installed entries..." #~ msgstr "يتعر٠على المدخلات المنصَّبة..." #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "يبدأ جلب مدخلات المستودع أثناء إحالة %d قائمة حجب..." #, c-format #~ msgid "%'d of %'d" #~ msgstr "%'d من %'d" #, c-format #~ msgid "Waiting for background indexing tasks to catch up..." #~ msgstr "ينتظر اكتمال مهام Ùهرسة الخلÙية..." #, c-format #~ msgid "Completed initialization in %0.2f seconds" #~ msgstr "اكتمل التمهيد خلال %0.2f ثانية" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "لم ÙŠÙØ²ÙˆÙ‘َد بازار بإعدادات محتوى منتقى. تواصل مع قنوات دعم نظام تشغيلك للحصول " #~ "على المساعدة." #~ msgid "Entry Inspector" #~ msgstr "ÙØ§Ø­Øµ المدخلات" #~ msgid "Serialize" #~ msgstr "سَلسÙÙ„" #~ msgid "Convert to JSON" #~ msgstr "حوّÙÙ„ إلى JSON" #~ msgid "Graphics" #~ msgstr "رسوميات" #~ msgid "Office" #~ msgstr "مكتب" #~ msgctxt "Project URL Type" #~ msgid "Homepage" #~ msgstr "Ø§Ù„ØµÙØ­Ø© الرئيسة" #~ msgid "This flatpak is verified by the original developers of the software." #~ msgstr "وثَّق مطوروا البرمجية Ùلاتباك هذا." #~ msgid "Repository Star Count" #~ msgstr "نجوم المستودع" #~ msgid "Share this application" #~ msgstr "شارÙÙƒ هذا التطبيق" #~ msgid "Excludes shared components" #~ msgstr "يستبعد المكونات المشتركة" #~ msgid "Source code may not be available" #~ msgstr "قد لا ÙŠØªÙˆÙØ± المصدر البرمجي" #~ msgid "Click for details" #~ msgstr "انقر Ù„Ù„ØªÙØ§ØµÙŠÙ„" #~ msgid "Repositories" #~ msgstr "المستودعات" #~ msgid "Open in browser" #~ msgstr "Ø§ÙØªØ­ ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­" #, c-format #~ msgid "%'d Monthly Downloads" #~ msgstr "%'d تنزيل شهري" #~ msgid "%B %-d, %Y" #~ msgstr "%-Od %BØŒ %OY" #~ msgid "%B %-d" #~ msgstr "%-Od %B" #~ msgid "Bazaar Inspector" #~ msgstr "متعقب «بازار»" #~ msgid "Active Blocklists" #~ msgstr "قوائم الحجب النشطة" #~ msgid "Active Curated-Configs" #~ msgstr "ضبط التطبيقات «المنتقاة» النشط" #~ msgid "All Entry Groups" #~ msgstr "جميع مجموعات المدخلات" #~ msgid "Filter..." #~ msgstr "Ø±Ø´Ù‘ÙØ­..." #~ msgid "Decache and Inspect" #~ msgstr "امح٠الاختزان ÙˆØ§ÙØ­Øµ" #~ msgid "No Flatpaks Installed" #~ msgstr "لا حزم Ùلاتباك منصَّبة" #~ msgid "Run this application" #~ msgstr "شغّÙÙ„ هذا التطبيق" #~ msgid "Run" #~ msgstr "شغّÙÙ„" #~ msgid "Application Details" #~ msgstr "ØªÙØ§ØµÙŠÙ„ التطبيق" #~ msgid "Git Forge Star Counts" #~ msgstr "نجوم مستودع Ø¬ÙØª" #~ msgid "Not having a GitHub access token may trigger rate limits" #~ msgstr "قد ÙŠÙØ­Ø¯Ù‘ وصولك إن لم يكن لديك رمز وصول Ø¬ÙØªâ€ŒÙ‡ÙŽØ¨" #~ msgid "Show Only Flathub Apps" #~ msgstr "إظهار تطبيقات Ùلاتهَب حصرًا" #~ msgid "Wait for a brief pause to reduce system load" #~ msgstr "ينتظر وهلة لتخÙÙŠÙ Ø­Ùمل النظام عند البحث" #~ msgid "Theme" #~ msgstr "السمة" #~ msgid "Pride Rainbow Flag" #~ msgstr "علم ÙØ®Ø± قوس قزح" #~ msgid "Bisexual Flag" #~ msgstr "علم ازدواج التوجه الجنسي" #~ msgid "Asexual Flag" #~ msgstr "علم اللاجنسية" #~ msgid "Share" #~ msgstr "شارÙÙƒ" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "Ù†ÙÙ‚ÙÙ„ %s حتى الآن" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "التطبيقات التالية متاحة للتحديث. أتنصبها؟" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "ØªØªÙˆÙØ± تحديثات ل†%d من بيئات التشغيل Ùˆ\\أو Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª. أتنصبها؟" #~ msgid "Transactions" #~ msgstr "العمليات" #~ msgid "Toggle transaction sidebar" #~ msgstr "بدّÙÙ„ الشريط الجانبي للعمليات" #~ msgid "Stop Active Tasks" #~ msgstr "أوق٠المهام النشطة" #~ msgid "Clear History" #~ msgstr "امح٠التأريخ" #~ msgid "No Tasks Yet" #~ msgstr "لا توجد مهام حتى الآن" #~ msgid "Browse" #~ msgstr "تصÙÙ‘ÙŽØ­" #~ msgid "App View" #~ msgstr "منظور التطبيق" #~ msgid "Go Back" #~ msgstr "Ø§Ø±Ø¬ÙØ¹" #~ msgid "View curated applications" #~ msgstr "Ø§Ø¹Ø±ÙØ¶ التطبيقات المنتقاة" #~ msgid "View the latest on Flathub" #~ msgstr "Ø§Ø¹Ø±ÙØ¶ آخر المستجدات على Ùلاتهَب" #~ msgid "_Quit Service" #~ msgstr "Ø£_نه٠الخدمة" #~ msgid "Up to date!" #~ msgstr "Ù…ÙØ­Ø¯Ù‘ÙŽØ«!" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "قابلة ÙØ­Øµ وتنصيب Ù…Ù„ÙØ§Øª حزم .flatpak قادمة. أثناء ذلك، يمكنك تشغيل\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "ÙÙŠ الطرÙية." #~ msgid "Settings & user data will be kept" #~ msgstr "ستبقى الإعدادات وبيانات المستخدم مخزَّنة" #~ msgid "Resume Current Tasks" #~ msgstr "استأن٠المهام الحالية" #~ msgid "Pause Current Tasks" #~ msgstr "ألبث المهام الحالية" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u تنزيل" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "Ø£Ø¹ÙØ¯ التحميل" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "بدّÙÙ„ مدير المعاملات" #~ msgid "Calligraphy application page" #~ msgstr "ØµÙØ­Ø© تطبيق Â«ÙƒØ§Ù„ÙØºØ±ÙŽÙي»" #~ msgid "Download graph for Blender" #~ msgstr "تنزيل رسم بياني Ù„â€Â«Ø¨Ù„ندر»" #~ msgid "Open this image in the default image viewer" #~ msgstr "Ø§ÙØªØ­ هذه الصورة ÙÙŠ عارض الصور المبدئي" #~ msgid "Copy this image to the clipboard" #~ msgstr "انسخ هذه الصورة إلى Ø§Ù„Ø­Ø§ÙØ¸Ø©" #~ msgid "Download Statistics" #~ msgstr "إحصاءات التنزيل" #~ msgid "Show Downloads Over Time" #~ msgstr "Ø£Ø¸Ù‡ÙØ± التنزيلات عبر الزمن" #~ msgid "Remote repo name" #~ msgstr "اسم المستودع" #~ msgid "Updated Size" #~ msgstr "الحجم المحدَّث" #~ msgid "Freed Space" #~ msgstr "المساحة Ø§Ù„Ù…ÙØ±ØºØ©" #~ msgid "Transactions Will Appear Here" #~ msgstr "ستظهر العمليات هنا" #~ msgid "Halt the execution of transactions" #~ msgstr "أوقÙ٠تنÙيذ العمليات" #~ msgid "Resume the execution of transactions" #~ msgstr "استَئن٠تنÙيذ العمليات" #~ msgid "Pause the execution of transactions" #~ msgstr "أوقÙ٠تنÙيذ العمليات مؤقتًا" #~ msgid "Apps Of The Week" #~ msgstr "تطبيقات الأسبوع" #, c-format #~ msgid "Released %x" #~ msgstr "Ø£ÙØµØ¯Ùر ÙÙŠ %x" #~ msgid "Downloads Over Time" #~ msgstr "التنزيلات عبر الزمن" #~ msgid "Minimize Lower Bound" #~ msgstr "ØµØºÙ‘ÙØ± الحد الأدنى" #~ msgid "Maximize Upper Bound" #~ msgstr "ÙƒØ¨Ù‘ÙØ± الحد الأعلى" #~ msgid "Confirm Action" #~ msgstr "تأكيد الإجراء" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "أنت على وشك إزالة حزمة Ùلاتباك التالية:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "أمتأكد؟" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "أنت على وشك تنصيب حزمة Ùلاتباك التالية:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "أمتأكد؟" #~ msgctxt "Project URL Type" #~ msgid "VCS Browser" #~ msgstr "المستودع" #~ msgid "Full Application View" #~ msgstr "عرض التطبيق الكامل" #~ msgid "Change what content is shown when viewing applications" #~ msgstr "ÙŠØºÙŠÙ‘ÙØ± المحتوى المعروض عند إظهار التطبيقات" #~ msgid "" #~ "If you do not have an access token, turning this setting on may cause " #~ "GitHub to eventually rate limit you." #~ msgstr "" #~ "قد يؤدي ØªÙØ¹ÙŠÙ„ هذا الإعداد إلى حدّÙÙƒ من الوصول إلى GitHub إن لم يكن لديك رمز " #~ "وصول." #~ msgid "Type to filter" #~ msgstr "اكتب للترشيح" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Ø§Ø³ØªØ¨Ø¹ÙØ¯ النتائج ذات الرخص الاحتكارية" #~ msgid "Advanced" #~ msgstr "متقدم" #~ msgid "Open this link externally" #~ msgstr "Ø§ÙØªØ­ هذه الوصلة خارجيًا" #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "استÙلمت %'d من أصل %'d (انقضت %0.1f ثانية)" #~ msgid "Installing" #~ msgstr "ينصَّب" #~ msgid "Removing" #~ msgstr "ÙŠÙØ²Ø§Ù„" #~ msgid "Show Animated Background" #~ msgstr "إظهار الخلÙية المتحركة" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "Ø£ØªÙØ¹Ø±ÙŽØ¶ خلÙية الأيقونات المتحركة ÙÙŠ Ø§Ù„ØµÙØ­Ø© الرئيسة أم لا" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "عدد التنزيلات ÙÙŠ آخر 30 يومًا. انقر لعرض إحصائيات تنزيل هذا التطبيق." #~ msgid "How the application looks" #~ msgstr "كي٠يبدو التطبيق" #~ msgid "Appearance" #~ msgstr "المظهر" #~ msgid "Show animated background" #~ msgstr "إظهار الخلÙية المتحركة" #~ msgid "Keep the summary shorter, between 10 and 35 characters" #~ msgstr "أبق٠الملخص مختصرًا، بين 10 Ùˆ 35 حرÙًا" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Ù†Ø§ÙØ°Ø© بازار الرئيسية تعرض تطبيق بلندر" #~ msgid "Match using regular expressions" #~ msgstr "طابÙÙ‚ باستخدام التعابير النمطية" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "أخÙ٠الترشيح ÙˆØ§Ù„ÙØ±Ø² خل٠تأثير التلاشي المتداخل" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/be.po������������������������������������������������������������������0000664�0000000�0000000�00000305573�15240005042�0016717�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Belarusian translations for bazaar package. # Copyright (C) 2026 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-01 06:45+0100\n" "PO-Revision-Date: 2026-03-01 21:34+0100\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 3.8\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:6 #: src/bz-window.blp:110 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Дадавайце, выдалÑйце або абнаўлÑйце праграмы Ñž фармаце flatpak на гÑтым камп’ютары" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;System;PackageManager;Discover;Flatpak;Software;Store;СіÑÑ‚Ñма;ПакетныМенеджар;Пакеты;Магазін;Крама;Флатпак;Праграмы;ПЗ;" #: data/io.github.kolunmi.Bazaar.desktop.in:15 msgid "New Window" msgstr "Ðовае акно" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "Знаходзьце Ñ– ÑžÑталёўвайце праграмы" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A new app store for Linux with a focus on discovering and installing applications and addons from Flatpak remotes, particularly " "Flathub." msgstr "" "ÐÐ¾Ð²Ð°Ñ ÐºÑ€Ð°Ð¼Ð° праграм Ð´Ð»Ñ Linux з фокуÑам на тым, каб адкрываць Ñ– ÑžÑталёўваць праграмы Ñ– дадаткі з аддаленых Ñервераў Flatpak (у " "прыватнаÑці — Flathub)." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. Bazaar features a \"curated\" tab that can be " "configured by distributors to allow for a more localized experience." msgstr "" "Яна робіць акцÑнт на падтрымцы раÑпрацоўшчыкаў, ÑÐºÑ–Ñ Ñ€Ð¾Ð±Ñць магчымым Linux Ð´Ð»Ñ Ð½Ð°Ñтольных камп’ютараў. Bazaar вылучае ўкладку " "\"падабраныÑ\" праграмы, Ñкую могуць канфігураваць паÑтаўшчыкі Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆ цÑлаÑнага вопыту карыÑÑ‚Ð°Ð½Ð½Ñ Ð´Ñ‹Ñтрыбутывам." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:29 src/bz-application.c:699 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:54 msgid "The home page displaying Flathub apps" msgstr "Ð“Ð°Ð»Ð¾ÑžÐ½Ð°Ñ Ñтаронка паказвае праграмы з Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:58 msgid "Exhibit app page" msgstr "ДÑманÑÑ‚Ñ€Ð°Ñ†Ñ‹Ð¹Ð½Ð°Ñ Ñтаронка праграмы" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:62 msgid "Library page" msgstr "Старонка бібліÑÑ‚Ñкі" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:66 msgid "Search page" msgstr "Старонка пошуку" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:70 msgid "Category page" msgstr "Старонка катÑгорыі" #: src/bz-addons-dialog.blp:16 src/bz-full-view.blp:606 src/bz-installed-tile.blp:101 msgid "Manage Add-Ons" msgstr "Кіраваць дадаткамі" #: src/bz-addons-dialog.c:94 src/bz-install-controls.blp:78 src/bz-install-controls.blp:128 src/bz-installed-tile.blp:119 #: src/bz-transaction-dialog.c:231 msgid "Remove" msgstr "Выдаліць" #: src/bz-addons-dialog.c:99 src/bz-favorites-tile.c:159 src/bz-install-controls.blp:34 src/bz-transaction-dialog.c:202 msgid "Install" msgstr "УÑталÑваць" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 src/bz-age-rating-dialog.c:726 src/bz-full-view.c:333 #: src/bz-full-view.c:340 msgid "Age Rating" msgstr "УзроÑтавы Ñ€Ñйтынг" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Мультыплікацыйны гвалт" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "ÐÑма звеÑтак наконт ÑцÑн гвалту мультыплікацыйнага характару" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Фантазійны гвалт" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "ÐÑма звеÑтак наконт ÑцÑн гвалту фантазійнага характару" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "РÑаліÑтычны гвалт" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "ÐÑма звеÑтак наконт ÑцÑн з Ñ€ÑаліÑтычным гвалтам" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Гвалт з кровапраліццем" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "ÐÑма звеÑтак наконт ÑцÑн гвалту з кровапраліццем" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "СекÑуальны гвалт" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "ÐÑма звеÑтак наконт ÑцÑн з ÑекÑуальным гвалтам" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Ðлкаголь" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "ÐÑма звеÑтак наконт Ð·Ð³Ð°Ð´Ð²Ð°Ð½Ð½Ñ Ð°Ð»ÐºÐ°Ð³Ð¾Ð»ÑŒÐ½Ñ‹Ñ… напоÑÑž" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Ðаркотыкі" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "ÐÑма звеÑтак наконт Ð·Ð³Ð°Ð´Ð²Ð°Ð½Ð½Ñ Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ñ‹Ñ… наркотыкаў" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Табак" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "ÐÑма звеÑтак наконт Ð·Ð³Ð°Ð´Ð²Ð°Ð½Ð½Ñ Ñ‚Ñ‹Ñ‚ÑƒÐ½Ñ‘Ð²Ñ‹Ñ… вырабаў" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "ÐголенаÑць" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "ÐÑма звеÑтак наконт ÑцÑн агаленнÑ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "СекÑÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ ÑцÑны" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "ÐÑма звеÑтак наконт згадваннÑÑž або выÑÑž ÑекÑуальнага характару" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "ÐецÑÐ½Ð·ÑƒÑ€Ð½Ð°Ñ Ð»ÐµÐºÑіка" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "ÐÑма звеÑтак наконт нецÑнзурнай лекÑікі любога кшталту" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "ÐедарÑчны гумар" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "ÐÑма звеÑтак наконт недарÑчнага гумару" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "ДыÑкрымінацыÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "ÐÑма звеÑтак наконт моўнай дыÑкрымінацыі любога кшталту" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "РÑклама" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "ÐÑма звеÑтак наконт Ñ€Ñкламы любога кшталту" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "ÐÐ·Ð°Ñ€Ñ‚Ð½Ñ‹Ñ Ð³ÑƒÐ»ÑŒÐ½Ñ–" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "ÐÑма звеÑтак наконт азартных гульнÑÑž любога кшталту" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "ÐšÑƒÐ¿Ð»Ñ Ð·Ð° Ñ€ÑÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð³Ñ€Ð¾ÑˆÑ‹" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "ÐÑма звеÑтак наконт магчымаÑці траціць грошы" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Чат паміж карыÑтальнікамі" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "ÐÑма звеÑтак наконт магчымаÑці вÑÐ´Ð·ÐµÐ½Ð½Ñ Ñ€Ð°Ð·Ð¼Ð¾Ñž у чаце з іншымі карыÑтальнікамі" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "ÐўдыÑчат паміж карыÑтальнікамі" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "ÐÑма звеÑтак наконт магчымаÑці вÑÐ´Ð·ÐµÐ½Ð½Ñ Ñ€Ð°Ð·Ð¼Ð¾Ñž у аўдыÑчаце з іншымі карыÑтальнікамі" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "ÐšÐ°Ð½Ñ‚Ð°ÐºÑ‚Ð½Ñ‹Ñ Ð·Ð²ÐµÑткі" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "No information regarding sharing of social network usernames or email addresses" msgstr "ÐÑма звеÑтак наконт Ð°Ð±Ð°Ð³ÑƒÐ»ÑŒÐ²Ð°Ð½Ð½Ñ Ñ–Ð¼Ñ‘Ð½Ð°Ñž карыÑтальнікаў ÑацыÑльнай Ñеткі або адраÑоў Ñлектроннай пошты" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "ІдÑÐ½Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ð¹Ð½Ñ‹Ñ Ð·Ð²ÐµÑткі" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "ÐÑма звеÑтак наконт перадачы даных карыÑтальніка Ñтароннім аÑобам" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Ðбагульванне меÑцазнаходжаннÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "ÐÑма звеÑтак наконт перадачы фізічнага меÑÑ†Ð°Ð·Ð½Ð°Ñ…Ð¾Ð´Ð¶Ð°Ð½Ð½Ñ Ñ–Ð½ÑˆÑ‹Ð¼ карыÑтальнікам" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "ПраÑтытуцыÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "ÐÑма звеÑтак наконт Ð·Ð³Ð°Ð´Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ñтытуцыі" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "СÑÐ¼ÐµÐ¹Ð½Ð°Ñ Ð½ÑвернаÑць" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "ÐÑма звеÑтак наконт Ð·Ð³Ð°Ð´Ð²Ð°Ð½Ð½Ñ ÑÑмейнай нÑвернаÑці" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "СекÑÑƒÐ°Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ñанажы" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "ÐÑма звеÑтак наконт ÑекÑуалізаваных перÑанажаў" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Ðпаганьванне" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "ÐÑма звеÑтак наконт згадваннÑÑž пра апаганьванне" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "ПарÑшткі памерлых людзей" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "ÐÑма звеÑтак наконт бачных парÑшткаў памерлых людзей" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "РабÑтва" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "ÐÑма звеÑтак наконт Ð·Ð³Ð°Ð´Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð° рабÑтва" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Ðе ўтрымлівае згадваннÑÑž пра наркотыкі" #: src/bz-age-rating-dialog.c:426 msgid "Does not include swearing, profanity, and other kinds of strong language" msgstr "Ðе ўтрымлівае лаÑнкі, нецÑнзурнай Ñ– непрыÑтойнай лекÑікі" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Ðе ўтрымлівае Ñ€Ñкламы або грашовых аперацый" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Ðе ўтрымлівае ÑцÑн ÑекÑу або агаленнÑ" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Ðе ўтрымлівае беÑкантрольных функцый чата" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Ðе ўтрымлівае ÑцÑн гвалту" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Ðаркотыкі" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "ЛаÑнка" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Грошы" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "СувÑзь" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Гвалт" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:676 src/bz-full-view.c:323 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:701 msgctxt "Age rating" msgid "All" msgstr "УÑе" #: src/bz-age-rating-dialog.c:737 #, c-format msgid "%s has an unknown age rating" msgstr "УзроÑтавы Ñ€Ñйтынг \"%s\" невÑдомы" #: src/bz-age-rating-dialog.c:743 #, c-format msgid "%s is suitable for everyone" msgstr "\"%s\" прыдатна Ð´Ð»Ñ ÑžÑÑ–Ñ…" #: src/bz-age-rating-dialog.c:746 #, c-format msgid "%s is suitable for young children" msgstr "\"%s\" прыдатна Ð´Ð»Ñ Ð´Ð·Ñцей школьнага ўзроÑту (6+)" #: src/bz-age-rating-dialog.c:749 #, c-format msgid "%s is suitable for children" msgstr "\"%s\" прыдатна Ð´Ð»Ñ Ð´Ð·Ñцей школьнага ўзроÑту (12+)" #: src/bz-age-rating-dialog.c:752 #, c-format msgid "%s is suitable for teenagers" msgstr "\"%s\" прыдатна Ð´Ð»Ñ Ð´Ð·Ñцей ÑтарÑйшага ўзроÑту (16+)" #: src/bz-age-rating-dialog.c:755 #, c-format msgid "%s is suitable for adults" msgstr "\"%s\" прыдатна Ð´Ð»Ñ Ð´Ð°Ñ€Ð¾Ñлых (18+)" #: src/bz-age-rating-dialog.c:758 #, c-format msgid "%s is suitable for %s" msgstr "\"%s\" прыдатна Ð´Ð»Ñ %s" #: src/bz-age-rating-dialog.c:852 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-all-apps-page.blp:13 src/bz-apps-page.blp:14 src/bz-full-view.blp:29 src/bz-user-data-page.blp:15 src/bz-window.blp:285 msgid "Main Menu" msgstr "Галоўнае меню" #: src/bz-all-apps-page.blp:18 src/bz-apps-page.blp:18 src/bz-user-data-page.blp:19 src/bz-window.blp:374 msgid "_Donate to Bazaar â¤ï¸" msgstr "Па_дтрымаць Bazaar â¤ï¸" #: src/bz-all-apps-page.blp:25 src/bz-apps-page.blp:25 src/bz-user-data-page.blp:26 src/bz-window.blp:381 msgid "_Refresh" msgstr "_Ðбнавіць" #: src/bz-all-apps-page.blp:30 src/bz-apps-page.blp:30 src/bz-user-data-page.blp:31 src/bz-window.blp:386 msgid "_Preferences" msgstr "_Параметры" #: src/bz-all-apps-page.blp:35 src/bz-apps-page.blp:35 src/bz-user-data-page.blp:36 src/bz-window.blp:391 msgid "_Login With Flathub" msgstr "_УвайÑці праз Flathub" #: src/bz-all-apps-page.blp:41 src/bz-apps-page.blp:41 src/bz-user-data-page.blp:42 src/bz-window.blp:397 msgid "_Manage Leftover User Data" msgstr "_Кіраваць аÑтаткамі даных карыÑтальніка" #: src/bz-all-apps-page.blp:46 src/bz-apps-page.blp:46 src/bz-user-data-page.blp:47 src/bz-window.blp:402 msgid "_Keyboard Shortcuts" msgstr "_СпалучÑнні клавіш" #: src/bz-all-apps-page.blp:51 src/bz-apps-page.blp:51 src/bz-user-data-page.blp:52 src/bz-window.blp:407 msgid "_About Bazaar" msgstr "П_ра Bazaar" #: src/bz-all-apps-page.blp:58 src/bz-apps-page.blp:58 src/bz-user-data-page.blp:59 src/bz-window.blp:414 msgid "_Quit Bazaar" msgstr "_ВыйÑці з Bazaar" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "СіÑÑ‚ÑÐ¼Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Падпапка Ñž папцы \"ГалоўнаÑ\" %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Папкі ÑÑ–ÑÑ‚Ñмы-хоÑта" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "ÐšÐ°Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ‹Ñ ÑÑ–ÑÑ‚Ñмы-хоÑта з /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Падпапка Ñž папцы працоўнага Ñтала %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Папка працоўнага Ñтала" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Падпапка Ñž папцы \"Дакументы\" %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Папка \"Дакументы\"" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Падпапка Ñž папцы \"Музыка\" %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Папка \"Музыка\"" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Падпапка Ñž папцы \"ВідарыÑÑ‹\" %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Папка \"ВідарыÑÑ‹\"" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Падпапка Ñž папцы \"ÐŸÑƒÐ±Ð»Ñ–Ñ‡Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹\" %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Папка \"ÐŸÑƒÐ±Ð»Ñ–Ñ‡Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹\"" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Падпапка \"ВідÑа\" %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Папка \"ВідÑа\"" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Падпапка \"Шаблоны\" %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Папка \"Шаблоны\"" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Падпапка з кÑшам карыÑтальніка %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Папка з кÑшам карыÑтальніка" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Падпапка Ñž папцы канфігурацыі карыÑтальніка %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Папка канфігурацыі карыÑтальніка" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Падпапка Ñž папцы даных карыÑтальніка %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Папка даных карыÑтальніка" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Падпапка Ñž папцы карыÑтальніцкага аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Папка карыÑтальніцкага аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "ДоÑтуп файлавай ÑÑ–ÑÑ‚Ñмы да %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "ÐевÑдомы шлÑÑ… у файлавай ÑÑ–ÑÑ‚Ñме" #: src/bz-app-size-dialog.blp:29 src/bz-app-size-dialog.blp:55 msgid "Download Size" msgstr "Памер ÑпампоўваннÑ" #: src/bz-app-size-dialog.blp:56 msgid "Amount to download from the internet" msgstr "Па даных да ÑÐ¿Ð°Ð¼Ð¿Ð¾ÑžÐ²Ð°Ð½Ð½Ñ Ð· інтÑрнÑту" #: src/bz-app-size-dialog.blp:76 msgid "Installed Size" msgstr "Памер уÑталёўкі" #: src/bz-app-size-dialog.blp:77 msgid "Size on Disk" msgstr "Памер на дыÑку" #: src/bz-app-size-dialog.blp:125 msgid "Open user data folder" msgstr "Ðдкрыць папку даных карыÑтальніка" #: src/bz-app-size-dialog.blp:135 msgid "User Data Size" msgstr "Памер даных карыÑтальніка" #: src/bz-app-size-dialog.blp:136 msgid "Caches, settings, and other app data" msgstr "КÑш, налады Ñ– Ñ–Ð½ÑˆÑ‹Ñ Ð´Ð°Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Памер уÑталÑванага аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Памер Ñпрампаванага аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 src/bz-rich-app-tile.blp:103 src/bz-rich-app-tile.c:275 msgid "Verified" msgstr "Спраўджана" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:89 src/bz-full-view.c:282 src/bz-releases-list.c:178 msgid "Installed" msgstr "УÑталÑвана" #: src/bz-apps-page.blp:141 msgid "Show All" msgstr "Паказаць уÑÑ‘" #: src/bz-apps-page.c:229 #, c-format msgid "All \"%s\"" msgstr "УÑÑ‘ \"%s\"" #: src/bz-apps-page.c:498 src/bz-tag-list.c:109 #, c-format msgid "%d Applications" msgstr "КолькаÑць праграм: %d" #: src/bz-application.c:678 #, fuzzy msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:679 #, fuzzy msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:702 msgid "translator-credits" msgstr "ÐлÑкÑандр Клюеў <katoshrodingera@protonmail.ch>, 2026" #: src/bz-application.c:712 msgid "Special Thanks" msgstr "ÐÑÐ°Ð±Ð»Ñ–Ð²Ð°Ñ Ð¿Ð°Ð´Ð·Ñка" #: src/bz-application.c:770 msgid "Logged Out Successfully!" msgstr "Выхад выкананы!" #: src/bz-application.c:893 msgid "Performing setup…" msgstr "Выконваецца наладжванне…" #: src/bz-application.c:977 msgid "Set Up System Flathub?" msgstr "Ðаладзіць Flathub на ўзроўні ÑÑ–ÑÑ‚Ñмы?" #: src/bz-application.c:980 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be configured on the system Flatpak installation to browse " "and install applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Ðддалены Ñервер Flathub не наладжаны Ð´Ð»Ñ Ð³Ñтай ÑÑ–ÑÑ‚Ñмы. Ð”Ð»Ñ Ð¿Ñ€Ð°Ð³Ð»Ñду Ñ– ÑžÑÑ‚Ð°Ð»Ñ‘ÑžÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼, Bazaar патрабуе канфігурацыі Flathub " "у ÑÑ–ÑÑ‚Ñмнай ÑžÑталёўцы Flatpak.\n" "\n" "Ð’Ñ‹ ÑžÑÑ‘ ÑÑˆÑ‡Ñ Ð·Ð¼Ð¾Ð¶Ð°Ñ†Ðµ выкарыÑтоўваць Bazaar Ð´Ð»Ñ Ð¿Ñ€Ð°Ð³Ð»Ñду Ñ– Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÑžÐ¶Ð¾ ÑžÑталÑваных праграм." #: src/bz-application.c:987 msgid "Set Up Flathub?" msgstr "Ðаладзіць Flathub?" #: src/bz-application.c:990 msgid "" "Flathub is not set up on this system. You will not be able to browse and install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub не наладжаны Ð´Ð»Ñ Ð³Ñтай ÑÑ–ÑÑ‚Ñмы. Ð’Ñ‹ не зможаце праглÑдаць Ñ– ÑžÑталёўваць праграм у Bazaar, калі гÑты ÑÐµÑ€Ð²Ñ–Ñ Ð½Ðµ будзе " "даÑтупны.\n" "\n" "Ð’Ñ‹ ÑžÑÑ‘ ÑÑˆÑ‡Ñ Ð·Ð¼Ð¾Ð¶Ð°Ñ†Ðµ выкарыÑтоўваць Bazaar Ð´Ð»Ñ Ð¿Ñ€Ð°Ð³Ð»Ñду Ñ– Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÑžÐ¶Ð¾ ÑžÑталÑваных праграм." #: src/bz-application.c:996 msgid "Later" msgstr "Пазней" #: src/bz-application.c:997 msgid "Set Up Flathub" msgstr "Ðаладзіць Flathub" #: src/bz-application.c:1280 msgid "A backend error occurred" msgstr "ÐдбылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° на Ñервернай чаÑтцы" #: src/bz-application.c:1406 src/bz-application.c:3178 src/bz-window.blp:134 msgid "Refreshing…" msgstr "Ідзе абнаўленне…" #: src/bz-application.c:1552 src/bz-application.c:3176 #, c-format msgid "Loading %d apps…" msgstr "Ідзе загрузка праграм (%d)…" #: src/bz-application.c:1556 msgid "Checking for updates…" msgstr "Ідзе праверка абнаўленнÑў…" #: src/bz-application.c:1612 msgid "Failed to open .flatpakref" msgstr "Ðе ўдалоÑÑ Ð°Ð´ÐºÑ€Ñ‹Ñ†ÑŒ .flatpakref" #: src/bz-application.c:1666 msgid "An initialization error occurred" msgstr "ÐдбылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° ініцыÑлізацыі" #: src/bz-application.c:2004 msgid "Failed to check for updates" msgstr "Ðе ўдалоÑÑ Ð¿Ñ€Ð°Ð²ÐµÑ€Ñ‹Ñ†ÑŒ абнаўленні" #: src/bz-application.c:2961 msgid "Could not find app" msgstr "Ðе ўдалоÑÑ Ð·Ð½Ð°Ð¹Ñці праграму" #: src/bz-application.c:3180 msgid "Writing to cache…" msgstr "Ідзе Ð·Ð°Ð¿Ñ–Ñ Ñƒ кÑш…" #: src/bz-appstream-parser.c:304 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Старонка Flathub" #: src/bz-appstream-parser.c:325 msgctxt "Project URL Type" msgid "Project Website" msgstr "Ð’Ñб-Ñайт праекта" #: src/bz-appstream-parser.c:329 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "ТрÑкер памылак" #: src/bz-appstream-parser.c:333 msgctxt "Project URL Type" msgid "FAQ" msgstr "Пытанні Ñ– адказы" #: src/bz-appstream-parser.c:337 msgctxt "Project URL Type" msgid "Help" msgstr "Даведка" #: src/bz-appstream-parser.c:341 msgctxt "Project URL Type" msgid "Donate" msgstr "ÐхвÑраваць" #: src/bz-appstream-parser.c:347 msgctxt "Project URL Type" msgid "Translate" msgstr "ПераклаÑці" #: src/bz-appstream-parser.c:351 msgctxt "Project URL Type" msgid "Contact" msgstr "ЗвÑзацца" #: src/bz-appstream-parser.c:355 msgctxt "Project URL Type" msgid "Source Code" msgstr "Зыходны код" #: src/bz-appstream-parser.c:361 msgctxt "Project URL Type" msgid "Contribute" msgstr "Зрабіць унёÑак" #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:68 src/bz-flathub-page.blp:19 src/bz-full-view.blp:61 #: src/bz-library-page.blp:65 src/bz-user-data-page.blp:86 msgid "Empty" msgstr "ПуÑта" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "ÐÑма падборкі" #: src/bz-curated-view.blp:16 msgid "There is no curation information provided on this system. You can still browse applications on Flathub" msgstr "Ðа гÑтай ÑÑ–ÑÑ‚Ñме не падаецца інфармацыі адноÑна падабраных праграм. Ð’Ñ‹ ÑžÑÑ‘ ÑÑˆÑ‡Ñ Ð¼Ð¾Ð¶Ð°Ñ†Ðµ праглÑдаць праграмы Ñž Flathub" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "ПраглÑдзець Flathub" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "Па-за Ñеткай" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:49 src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Ð’Ñб-браўзер" #: src/bz-developer-badge.c:92 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Ðе Ñпраўджана" #: src/bz-developer-badge.c:145 msgid "Developer information not available." msgstr "ЗвеÑткі пра раÑпрацоўшчыка недаÑтупныÑ." #: src/bz-developer-badge.c:151 src/bz-developer-badge.c:165 #, c-format msgid "The ownership of the %s app ID has not been verified and it may be a community package." msgstr "Правы ўлаÑнаÑці Ð´Ð»Ñ Ñ–Ð´Ñнтыфікатара праграмы \"%s\" не Ñпраўджаны, таму, імаверна, гÑта пакет ад ÑупольнаÑці." #: src/bz-developer-badge.c:169 #, c-format msgid "The ownership of the %s app ID has been manually verified by the Flathub team." msgstr "Правы ўлаÑнаÑці Ð´Ð»Ñ Ñ–Ð´Ñнтыфікатара праграмы \"%s\" былі Ñпраўджаны ўручную камандай Flathub." #: src/bz-developer-badge.c:175 #, c-format msgid "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on <b>%3$s</b>." msgstr "Правы ўлаÑнаÑці Ð´Ð»Ñ Ñ–Ð´Ñнтыфікатара праграмы \"%1$s\" былі Ñпраўджаны <b>%2$s</b> <b>%3$s</b>." #: src/bz-developer-badge.c:182 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "Правы ўлаÑнаÑці Ð´Ð»Ñ Ñ–Ð´Ñнтыфікатара праграмы \"%1$s\" былі Ñпраўджаны з дапамогай %2$s." #: src/bz-developer-badge.c:186 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Правы ўлаÑнаÑці Ð´Ð»Ñ Ñ–Ð´Ñнтыфікатара праграмы \"%s\" былі Ñпраўджаны." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "ÐŸÐ¾ÑžÐ½Ñ‹Ñ Ð½Ð°Ñ‚Ð°Ñ‚ÐºÑ– да выпуÑку" #: src/bz-donations-dialog.blp:105 msgid "This release was made possible by users like you!" msgstr "ГÑты выпуÑк Bazaar Ñтаў магчымым дзÑкуючы такім людзÑм, Ñк вы!" #: src/bz-donations-dialog.blp:113 msgid "I love making Bazaar, but I cannot do it alone. Help support further development by donating on Ko-Fi." msgstr "" "Мне падабаецца Ñтвараць Bazaar, але Ñ Ð½Ðµ магу рабіць гÑта ўадзіночку. Падтрымайце развіццё праекта Ñž будучыні, пакінуўшы " "ахвÑраванне на Ñтаронцы Ko-Fi." #: src/bz-donations-dialog.blp:128 msgid "Donate to Bazaar" msgstr "Падтрымаць Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Што новага Ñž верÑÑ–Ñ– %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Выпушчана %e %B %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Выберыце ÑžÑталёўку" #: src/bz-entry-group-util.c:76 msgid "You have multiple versions of this app installed. Which one would you like to proceed with?" msgstr "У Ð²Ð°Ñ ÑƒÑталÑвана некалькі верÑій гÑтай праграмы. Якую з Ñ–Ñ… вы хацелі бы пакінуць на будучыню?" #: src/bz-entry-group-util.c:80 src/bz-transaction-dialog.c:201 src/bz-transaction-dialog.c:230 src/bz-transaction-dialog.c:275 #: src/bz-transaction-dialog.c:578 msgid "Cancel" msgstr "СкаÑаваць" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Толькі Ð´Ð»Ñ Ð³Ñтага карыÑтальніка" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "гÑты карыÑтальнік" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "уÑе карыÑтальнікі" #: src/error.c:69 src/error.c:88 src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:50 msgid "Details" msgstr "ПадрабÑÐ·Ð½Ñ‹Ñ Ð·Ð²ÐµÑткі" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "СкапіÑваць" #: src/bz-error-dialog.c:56 src/bz-share-list.c:64 msgid "Copied!" msgstr "СкапіÑвана!" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Ðе ўдалоÑÑ Ð°Ð±Ð½Ð°Ð²Ñ–Ñ†ÑŒ ÑÐ¿Ñ–Ñ ÑƒÐ¿Ð°Ð´Ð°Ð±Ð°Ð½Ñ‹Ñ…" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Увайдзіце Ñž Flathub, каб кіраваць абранымі" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "УвайÑці" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "КолькаÑць упадабаннÑÑž" #: src/bz-favorites-tile.c:157 src/bz-rich-app-tile.blp:171 msgid "Uninstall" msgstr "Выдаліць" #: src/bz-favorites-tile.c:357 msgid "Failed to remove favorite" msgstr "Ðе ўдалоÑÑ Ð²Ñ‹Ð´Ð°Ð»Ñ–Ñ†ÑŒ з упадабаных" #: src/bz-favorites-tile.blp:70 src/bz-installed-tile.blp:77 msgid "Support This Application" msgstr "Падтрымаць гÑту праграму" #: src/bz-favorites-tile.blp:119 msgid "Remove From Favorites" msgstr "Выдаліць з упадабаных" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:78 src/bz-window.blp:432 msgid "Favorites" msgstr "УпадабаныÑ" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:144 src/bz-transaction-dialog.c:579 msgid "Install All" msgstr "УÑталÑваць уÑе" #: src/bz-favorites-page.blp:34 src/bz-full-view.blp:44 src/bz-window.blp:301 msgid "Open App Library" msgstr "Ðдкрыць бібліÑÑ‚Ñку праграм" #: src/bz-favorites-page.blp:56 src/bz-user-data-page.blp:75 msgid "Loading" msgstr "Ідзе загрузка" #: src/bz-favorites-page.blp:71 msgid "No Favorites" msgstr "ÐÑма ўпадабаных" #: src/bz-favorites-page.blp:72 msgid "Applications you mark as favorite will appear here" msgstr "Тут будуць паказвацца праграмы, ÑÐºÑ–Ñ Ð²Ñ‹ пазначылі Ñк упадабаныÑ" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "ПапÑÑ€ÑднÑÑ" #: src/bz-featured-carousel.blp:53 msgid "Next" msgstr "ÐаÑтупнаÑ" #: src/bz-featured-tile.blp:88 msgid "App of the Day" msgstr "Праграмы днÑ" #: src/bz-flathub-category.c:89 msgid "Editing" msgstr "РÑдагаванне" #: src/bz-flathub-category.c:90 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:91 msgid "Mixer" msgstr "Мікшар" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:92 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Музыка" #: src/bz-flathub-category.c:93 msgid "Player" msgstr "Прайгравальнік" #: src/bz-flathub-category.c:94 msgid "Recorder" msgstr "Праграма запіÑу гуку" #: src/bz-flathub-category.c:95 msgid "Sequencer" msgstr "СеквенÑар" #: src/bz-flathub-category.c:96 msgid "Tuner" msgstr "Цюнер" #: src/bz-flathub-category.c:97 msgid "TV" msgstr "ТÑлебачанне" #: src/bz-flathub-category.c:102 msgid "Emulation" msgstr "ЭмулÑцыÑ" #: src/bz-flathub-category.c:103 msgid "Action" msgstr "Экшн" #: src/bz-flathub-category.c:104 msgid "Adventure" msgstr "Прыгоды" #: src/bz-flathub-category.c:105 msgid "Arcade" msgstr "Ðркады" #: src/bz-flathub-category.c:106 msgid "Blocks" msgstr "Блокі" #: src/bz-flathub-category.c:107 msgid "Board" msgstr "ÐаÑтольныÑ" #: src/bz-flathub-category.c:108 msgid "Card" msgstr "КартачныÑ" #: src/bz-flathub-category.c:109 msgid "Kids" msgstr "Ð”Ð»Ñ Ð´Ð·Ñцей" #: src/bz-flathub-category.c:110 msgid "Logic" msgstr "Ðа логіку" #: src/bz-flathub-category.c:111 msgid "Role Playing" msgstr "РолевыÑ" #: src/bz-flathub-category.c:112 msgid "Shooter" msgstr "Шутары" #: src/bz-flathub-category.c:113 msgid "Simulation" msgstr "СімулÑтары" #: src/bz-flathub-category.c:114 msgid "Sports" msgstr "Спорт" #: src/bz-flathub-category.c:115 msgid "Strategy" msgstr "СтратÑгіі" #: src/bz-flathub-category.c:120 msgid "Audio & Video" msgstr "ÐÑžÐ´Ñ‹Ñ Ñ– відÑа" #: src/bz-flathub-category.c:120 msgid "Media" msgstr "МультымедыÑ" #: src/bz-flathub-category.c:120 msgid "More Audio & Video" msgstr "Больш Ð°ÑžÐ´Ñ‹Ñ Ñ– відÑа" #: src/bz-flathub-category.c:121 msgid "Developer Tools" msgstr "ІнÑтрументы раÑпрацоўшчыка" #: src/bz-flathub-category.c:121 msgid "Develop" msgstr "РаÑпрацоўка" #: src/bz-flathub-category.c:121 msgid "More Developer Tools" msgstr "Больш інÑтрументаў раÑпрацоўшчыка" #: src/bz-flathub-category.c:122 msgid "Education" msgstr "ÐдукацыÑ" #: src/bz-flathub-category.c:122 msgid "Learn" msgstr "Ðавучанне" #: src/bz-flathub-category.c:122 msgid "More Education" msgstr "Больш з адукацыі" #: src/bz-flathub-category.c:123 msgid "Gaming" msgstr "Гульні" #: src/bz-flathub-category.c:123 msgid "Play" msgstr "ГулÑць" #: src/bz-flathub-category.c:123 msgid "More Gaming" msgstr "Больш гульнÑÑž" #: src/bz-flathub-category.c:124 msgid "Graphics & Photography" msgstr "Графіка Ñ– фатаграфіÑ" #: src/bz-flathub-category.c:124 msgid "Create" msgstr "ТворчаÑць" #: src/bz-flathub-category.c:124 msgid "More Graphics & Photography" msgstr "Больш графікі Ñ– фатаграфіі" #: src/bz-flathub-category.c:125 msgid "Networking" msgstr "Сеткі" #: src/bz-flathub-category.c:125 msgid "Internet" msgstr "ІнтÑрнÑÑ‚" #: src/bz-flathub-category.c:125 msgid "More Networking" msgstr "Больш Ñеткавага" #: src/bz-flathub-category.c:126 msgid "Productivity" msgstr "ПрадукцыйнаÑць" #: src/bz-flathub-category.c:126 msgid "Work" msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð°Ñ†Ñ‹" #: src/bz-flathub-category.c:126 msgid "More Productivity" msgstr "Больш Ð´Ð»Ñ Ð¿Ñ€Ð°Ð´ÑƒÐºÑ†Ñ‹Ð¹Ð½Ð°Ñці" #: src/bz-flathub-category.c:127 msgid "Science" msgstr "Ðавука" #: src/bz-flathub-category.c:127 msgid "More Science" msgstr "Больш навуковага" #: src/bz-flathub-category.c:128 msgid "System" msgstr "СіÑÑ‚Ñмнае" #: src/bz-flathub-category.c:128 msgid "More System" msgstr "Больш ÑÑ–ÑÑ‚Ñмнага" #: src/bz-flathub-category.c:129 msgid "Utilities" msgstr "Утыліты" #: src/bz-flathub-category.c:129 msgid "Tools" msgstr "ІнÑтрументы" #: src/bz-flathub-category.c:129 msgid "More Utilities" msgstr "Больш утыліт" #: src/bz-flathub-category.c:130 src/bz-flathub-page.blp:118 src/bz-flathub-page.blp:151 msgid "Trending" msgstr "У трÑндзе" #: src/bz-flathub-category.c:130 msgid "More Trending" msgstr "Больш у трÑндзе" #: src/bz-flathub-category.c:131 src/bz-flathub-page.blp:124 src/bz-flathub-page.blp:181 msgid "Popular" msgstr "ПапулÑрныÑ" #: src/bz-flathub-category.c:131 msgid "More Popular" msgstr "Больш папулÑрных" #: src/bz-flathub-category.c:132 src/bz-flathub-page.blp:171 msgid "Recently Added" msgstr "ÐÑдаўна дададзеныÑ" #: src/bz-flathub-category.c:132 src/bz-flathub-page.blp:130 msgid "New" msgstr "ÐовыÑ" #: src/bz-flathub-category.c:132 msgid "More New" msgstr "Больш новых" #: src/bz-flathub-category.c:133 src/bz-flathub-page.blp:161 msgid "Recently Updated" msgstr "ÐÑдаўна абноўленыÑ" #: src/bz-flathub-category.c:133 src/bz-flathub-page.blp:136 msgid "Updated" msgstr "ÐбноўленыÑ" #: src/bz-flathub-category.c:133 msgid "More Updated" msgstr "Больш абноўленых" #: src/bz-flathub-category.c:134 msgid "Mobile" msgstr "МабільныÑ" #: src/bz-flathub-category.c:134 msgid "More Mobile" msgstr "Больш мабільных" #: src/bz-flathub-category.c:135 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:135 msgid "More Adwaita" msgstr "Больш з Ñ‚Ñмай Adwaita" #: src/bz-flathub-category.c:136 msgid "KDE Apps" msgstr "Праграмы KDE" #: src/bz-flathub-category.c:136 msgid "More KDE Apps" msgstr "Больш праграм KDE" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub не дададзены" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Ðддалены Ñервер Flathub не быў знойдзены на Ñкой-небудзь з вашых уÑталёвак Flatpak" #: src/bz-flathub-page.blp:35 msgid "Flathub returned an error" msgstr "Flathub вÑрнуў памылку" #: src/bz-flathub-page.blp:41 msgid "Retry Flathub Connection" msgstr "Паўтарыце Ñпробу злучÑÐ½Ð½Ñ Ð· Flathub" #: src/bz-flathub-page.blp:57 msgid "Flathub Unavailable" msgstr "Flathub не даÑтупны" #: src/bz-flathub-page.blp:58 msgid "We could not connect to Flathub. You can still manage and search for applications." msgstr "Ðе атрымалаÑÑ Ð¿Ð°Ð´ÐºÐ»ÑŽÑ‡Ñ‹Ñ†Ñ†Ð° да Flathub. Ð’Ñ‹ ÑžÑÑ‘ ÑÑˆÑ‡Ñ Ð¼Ð¾Ð¶Ð°Ñ†Ðµ кіраваць праграмамі Ñ– шукаць Ñ–Ñ…." #: src/bz-flathub-page.blp:61 msgid "Search Apps" msgstr "Шукаць праграмы" #: src/bz-flathub-page.blp:261 msgid "On the Go" msgstr "Ðа хаду" #: src/bz-flathub-page.blp:273 msgid "Apps for your Linux phones and tablets" msgstr "Праграмы Ð´Ð»Ñ Ð²Ð°ÑˆÑ‹Ñ… Ñ‚Ñлефонаў Ñ– планшÑтаў на Linux" #: src/bz-flathub-page.blp:284 src/bz-flathub-page.blp:319 msgid "More Mobile Apps" msgstr "Больш мабільных праграм" #: src/bz-flathub-page.blp:377 msgid "We​ ♥​ Games" msgstr "Мы​ ♥​ гульні" #: src/bz-flathub-page.blp:390 msgid "Games and apps to run your favorite titles" msgstr "Гульні Ñ– праграмы Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку вашых любімых гульнÑÑž" #: src/bz-flathub-page.blp:424 msgid "More Games" msgstr "Больш гульнÑÑž" #: src/bz-full-view.blp:65 src/bz-library-page.blp:76 src/bz-library-page.blp:80 msgid "No Results" msgstr "Ðічога не знойдзена" #: src/bz-full-view.blp:66 msgid "Try a different search query" msgstr "ПаÑпрабуйце іншы запыт" #: src/bz-full-view.blp:72 msgid "Content" msgstr "ЗмеÑціва" #: src/bz-full-view.blp:130 msgid "Installing .flatpak bundles is not yet supported" msgstr "УÑталÑванне .flatpak-набораў ÑÑˆÑ‡Ñ Ð½Ðµ падтрымліваецца" #: src/bz-full-view.blp:234 msgid "Support" msgstr "Падтрымаць" #: src/bz-full-view.blp:404 msgid "Downloads/Month" msgstr "СпампоўваннÑÑž у меÑÑц" #: src/bz-full-view.blp:440 msgid "Stopped Receiving Core Updates" msgstr "Ðтрыманне абнаўленнÑÑž Ñдра Ñпынена" #: src/bz-full-view.blp:454 msgid "This app uses a runtime that no longer receives updates or security fixes. It may become unsafe to use." msgstr "" "ÐÑÑроддзе Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ Ð³Ñтай праграмы больш не атрымлівае абнаўленнÑÑž Ñ– выпраўленнÑÑž, звÑзаных з бÑÑпекай. Праграма можа Ñтаць " "небÑÑпечнай Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑтаннÑ." #: src/bz-full-view.blp:541 msgid "Trash Data" msgstr "Ð¡Ð¼ÐµÑ†Ñ†ÐµÐ²Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ" #: src/bz-full-view.blp:682 msgid "Tags:" msgstr "ЦÑтлікі:" #: src/bz-full-view.c:215 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/bz-full-view.c:222 #, c-format msgid "%.*fM" msgstr "%.*f млн." #. Translators: K is the suffix for thousands #: src/bz-full-view.c:229 #, c-format msgid "%.*fK" msgstr "%.*f тыÑ." #: src/bz-full-view.c:239 #, c-format msgid "%d downloads in the last 30 days" msgstr "СпампоўваннÑÑž за Ð°Ð¿Ð¾ÑˆÐ½Ñ–Ñ 30 дзён: %d" #: src/bz-full-view.c:251 src/bz-full-view.c:592 src/bz-full-view.c:609 msgid "N/A" msgstr "N/A" #: src/bz-full-view.c:279 #, c-format msgid "+%s runtime" msgstr "+%s аÑÑроддзе выкананнÑ" #: src/bz-full-view.c:282 msgid "Download" msgstr "Спампаваць" #: src/bz-full-view.c:302 msgid "Size information unavailable" msgstr "Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° памер недаÑтупна" #: src/bz-full-view.c:305 #, c-format msgid "Download size of %s" msgstr "Памер ÑÐ¿Ð°Ð¼Ð¿Ð¾ÑžÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ %s" #: src/bz-full-view.c:338 msgid "All Ages" msgstr "Ð”Ð»Ñ ÑžÑÑ–Ñ… узроÑтаў" #: src/bz-full-view.c:350 msgid "Age rating information unavailable" msgstr "Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° ўзроÑтавы Ñ€Ñйтынг недаÑтупна" #: src/bz-full-view.c:355 msgid "Suitable for all ages" msgstr "ПаÑуе Ð´Ð»Ñ ÑžÑÑ–Ñ… узроÑтаў" #: src/bz-full-view.c:357 #, c-format msgid "Suitable for ages %d and up" msgstr "ПаÑуе Ð´Ð»Ñ ÑžÑÑ–Ñ… узроÑтаў ад %d гадоў" #: src/bz-full-view.c:390 src/bz-full-view.c:395 src/bz-full-view.c:423 src/bz-full-view.c:434 msgid "Unknown" msgstr "ÐевÑдомы" #: src/bz-full-view.c:400 #, c-format msgid "Free software licensed under %s" msgstr "Свабоднае ПЗ пад ліцÑнзіÑй %s" #: src/bz-full-view.c:405 msgid "Free software" msgstr "Свабоднае ПЗ" #: src/bz-full-view.c:408 msgid "Proprietary Software" msgstr "Прапрыетарнае ПЗ" #: src/bz-full-view.c:411 #, c-format msgid "Special License: %s" msgstr "СпецыÑÐ»ÑŒÐ½Ð°Ñ Ð»Ñ–Ñ†ÑнзіÑ: %s" #: src/bz-full-view.c:428 msgid "Free" msgstr "ВольнаÑ" #: src/bz-full-view.c:431 src/bz-license-dialog.c:132 msgid "Proprietary" msgstr "ПрапрыетарнаÑ" #: src/bz-full-view.c:436 src/bz-license-dialog.c:134 msgid "Special License" msgstr "СпецыÑÐ»ÑŒÐ½Ð°Ñ Ð»Ñ–Ñ†ÑнзіÑ" #: src/bz-full-view.c:456 msgid "Adaptive" msgstr "ÐдаптыўнаÑ" #: src/bz-full-view.c:456 msgid "Desktop Only" msgstr "Толькі Ð´Ð»Ñ Ð½Ð°Ñтольных камп’ютараў" #: src/bz-full-view.c:462 msgid "Works on desktop, tablets, and phones" msgstr "Працуе на наÑтольных камп’ютарах, планшÑтах Ñ– Ñ‚Ñлефонах" #: src/bz-full-view.c:463 msgid "May not work on mobile devices" msgstr "Можа не працаваць на мабільных прыладах" #: src/bz-full-view.c:474 msgid "No URL" msgstr "ÐÑма URL-адраÑа" #: src/bz-full-view.c:492 msgid "This application has a FLOSS license, meaning the source code can be audited for safety." msgstr "" "ГÑта праграма мае FLOSS-ліцÑнзію (Ñвабоднае ПЗ з адкрытым зыходным кодам). ГÑта азначае, што магчымы аўдыт бÑÑпекі Ð´Ð»Ñ Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ð°Ð³Ð° " "кода праграмы." #: src/bz-full-view.c:493 msgid "" "This application has a proprietary license, meaning the source code is developed privately and cannot be audited by an " "independent third party." msgstr "" "ЛіцÑÐ½Ð·Ñ–Ñ Ð³Ñтай праграмы — прапрыетарнаÑ. ГÑта азначае, што зыходны код праграмы раÑпрацоўваецца прыватна, а незалежны аўдыт Ð´Ð»Ñ " "Ñго немагчымы." #: src/bz-full-view.c:500 msgid "More Apps" msgstr "Больш праграм" #: src/bz-full-view.c:501 #, c-format msgid "More Apps by %s" msgstr "Боль праграм ад %s" #: src/bz-full-view.c:508 msgid "Other Apps by this Developer" msgstr "Ð†Ð½ÑˆÑ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñ‹ ад гÑтага раÑпрацоўшчыка" #: src/bz-full-view.c:510 src/bz-full-view.c:700 #, c-format msgid "Other Apps by %s" msgstr "Ð†Ð½ÑˆÑ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñ‹ ад %s" #: src/bz-full-view.c:519 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "Праграма \"%s\" не ÑžÑталÑвана, але на прыладзе ÑžÑÑ‘ ÑÑˆÑ‡Ñ Ð·Ð°Ñтаецца <b>%s</b> звÑзаных з ёю даных." #: src/bz-full-view.c:599 src/bz-safety-dialog.blp:31 msgid "Safe" msgstr "БÑÑпечнаÑ" #: src/bz-full-view.c:601 src/bz-full-view.c:603 msgid "Low Risk" msgstr "ÐÑ–Ð·ÐºÐ°Ñ Ñ€Ñ‹Ð·Ñ‹ÐºÐ°" #: src/bz-full-view.c:605 msgid "Medium Risk" msgstr "СÑÑ€ÑднÑÑ Ñ€Ñ‹Ð·Ñ‹ÐºÐ°" #: src/bz-full-view.c:607 msgid "High Risk" msgstr "Ð’Ñ‹ÑÐ¾ÐºÐ°Ñ Ñ€Ñ‹Ð·Ñ‹ÐºÐ°" #: src/bz-full-view.c:702 msgid "Other Apps" msgstr "Ð†Ð½ÑˆÑ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñ‹" #: src/bz-full-view.c:704 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d праграма" msgstr[1] "%d праграмы" msgstr[2] "%d праграм" #: src/bz-full-view.c:931 src/bz-transaction-tile.c:340 msgid "Failed to launch application" msgstr "Ðе ўдалоÑÑ Ð·Ð°Ð¿ÑƒÑціць праграму" #: src/bz-full-view.c:996 msgid "Show Less" msgstr "Паказаць менш" #: src/bz-full-view.c:996 msgid "Show More" msgstr "Паказаць больш" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Падтрымка абÑталÑваннÑ" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Падтрымка клавіÑтур" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Патрабуюцца клавіÑтуры" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "РÑкамендуецца ўжыванне клавіÑтур" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "КлавіÑтуры падтрымліваюцца" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "ÐÑма звеÑтак пра падтрымку клавіÑтур" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Падтрымка мышы" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Патрабуецца мыш або ÑžÐºÐ°Ð·Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñ‹" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "РÑкамендуецца ўжыванне мышы або ўказальных прылад" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Мыш або ÑžÐºÐ°Ð·Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñ‹ падтрымліваюцца" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "ÐÑма звеÑтак пра падтрымку мышы або ўказальных прылад" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Падтрымка ÑÑнÑарнага Ñкрана" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "ПатрÑбны ÑÑнÑарны Ñкран" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "РÑкамендуецца ўжыванне ÑÑнÑарнага Ñкрана" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "СÑнÑÐ°Ñ€Ð½Ñ‹Ñ Ñкраны падтрымліваюцца" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "ÐевÑдома пра падтрымку ÑÑнÑарных Ñкранаў" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "ÐœÐ°Ð±Ñ–Ð»ÑŒÐ½Ñ‹Ñ Ð¿Ñ€Ñ‹Ð»Ð°Ð´" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Працуе на мабільных прыладах" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Можа працаваць не лепшым чынам на мабільных прыладах" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Падтрымка ÑтацыÑнарных прылад" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Добра працуе на вÑлікіх Ñкранах" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s працуе на аÑаблівым абÑталÑванні" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s працуе на большаÑці прылад" #: src/bz-install-controls.blp:32 msgid "Download & Install Application" msgstr "Спампаваць Ñ– ÑžÑталÑваць праграму" #: src/bz-install-controls.blp:54 msgid "Open" msgstr "Ðдкрыць" #: src/bz-install-controls.blp:68 src/bz-install-controls.blp:118 msgid "Uninstall Application" msgstr "Выдаліць праграму" #: src/bz-install-controls.blp:105 src/bz-updates-card.blp:161 src/bz-updates-card.blp:186 msgid "Update" msgstr "Ðбнавіць" #: src/bz-install-controls.blp:155 msgid "Install Other Version" msgstr "УÑталÑваць іншую верÑÑ–ÑŽ" #: src/bz-installed-tile.blp:63 src/bz-rich-app-tile.blp:139 msgid "Stopped Receiving Updates" msgstr "Спынена атрыманне абнаўленнÑÑž" #: src/bz-library-page.blp:31 msgid "Search installed apps" msgstr "Пошук уÑталÑваных праграм" #: src/bz-library-page.blp:48 msgid "Clear search" msgstr "ÐчыÑціць пошук" #: src/bz-library-page.blp:69 msgid "No Apps Found" msgstr "Праграм не знойдзена" #. Translators: . #: src/bz-library-page.blp:98 src/bz-window.blp:176 msgid "Library" msgstr "БібліÑÑ‚Ñка" #: src/bz-library-page.blp:126 msgid "Pending Updates" msgstr "Ðбнаўленні Ñž чаканні" #: src/bz-library-page.blp:153 msgid "Downloads" msgstr "Спампоўкі" #: src/bz-library-page.blp:196 msgid "Recently Uninstalled" msgstr "ÐÑдаўна выдаленае" #: src/bz-library-page.blp:247 msgid "Clear Finished Tasks" msgstr "ÐчыÑціць Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹Ñ Ð·Ð°Ð´Ð°Ñ‡Ñ‹" #: src/bz-library-page.blp:258 msgid "Installed Apps" msgstr "УÑталÑÐ²Ð°Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñ‹" #: src/bz-library-page.c:175 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "У ÑпіÑе ÑžÑталÑваных праграм нічога не знойдзена Ð´Ð»Ñ Ð·Ð°Ð¿Ñ‹Ñ‚Ñƒ \"%s\"" #: src/bz-library-page.c:188 src/bz-updates-card.c:257 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "ДаÑтупна %u абнаўленне" msgstr[1] "ДаÑтупна %u абнаўленні" msgstr[2] "ДаÑтупна %u абнаўленнÑÑž" #: src/bz-license-dialog.blp:95 msgid "Get Involved" msgstr "ПрынÑць удзел" #: src/bz-license-dialog.c:126 msgid "Unknown License" msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð»Ñ–Ñ†ÑнзіÑ" #: src/bz-license-dialog.c:129 msgid "Community Built" msgstr "Зборка ад ÑупольнаÑці" #: src/bz-license-dialog.c:202 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "ГÑта праграма раÑпрацоўваецца адкрытай міжнароднай ÑупольнаÑцю.\n" "\n" "Ð’Ñ‹ можаце прынÑць удзел у раÑпрацоўцы Ñ– дапамагчы палепшыць Ñе." #: src/bz-license-dialog.c:205 msgid "The license of this app is not known" msgstr "ЛіцÑÐ½Ð·Ñ–Ñ Ð´Ð»Ñ Ð³Ñтай праграмы невÑдомаÑ" #: src/bz-license-dialog.c:211 #, c-format msgid "" "This app is developed in the open by an international community, and released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "ГÑта праграма раÑпрацоўваецца адкрытай міжнароднай ÑупольнаÑцю Ñ– раÑпаўÑюджваецца пад ліцÑнзіÑй %s.\n" "\n" "Ð’Ñ‹ можаце прынÑць удзел у раÑпрацоўцы Ñ– дапамагчы палепшыць Ñе." #: src/bz-license-dialog.c:219 msgid "" "This app is not developed in the open, so only its developers know how it works. It may be insecure in ways that are hard to " "detect, and it may change without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "ГÑта праграма раÑпрацоўваецца закрытым чынам, таму толькі Ñе Ñтваральнікі ведаюць, Ñк Ñна працуе. ГÑта можа неÑці з Ñабой " "небÑÑпеку, Ñкую цÑжка выÑвіць, а Ñама праграма можа змÑнÑцца без наглÑду.\n" "\n" "У Ð²Ð°Ñ Ð¼Ð¾Ð¶Ð° Ñк быць, так Ñ– не быць магчымаÑці ўдзелу Ñž раÑпрацоўцы гÑтай праграмы." #: src/bz-license-dialog.c:225 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "ГÑта праграма раÑпрацоўваецца пад ÑпецыÑльнай ліцÑнзіÑй %s.\n" "\n" "Ð’Ñ‹ не зможаце прынÑць удзелу Ñž Ñе раÑпрацоўцы." #: src/bz-login-page.blp:5 src/bz-login-page.blp:42 msgid "Connect to Flathub" msgstr "Злучыцца з Flathub" #: src/bz-login-page.blp:32 msgid "Something Went Wrong" msgstr "Ðешта пайшло не так" #: src/bz-login-page.blp:43 msgid "Connect your Flathub account to Bazaar to manage your favorited apps." msgstr "Падключыце Ñвой уліковы Ð·Ð°Ð¿Ñ–Ñ Flathub да Bazaar, каб кіраваць Ñваімі праграмамі Ñž ÑпіÑе абраных." #: src/bz-login-page.blp:108 msgid "Finish" msgstr "Скончыць" #: src/bz-login-page.c:664 #, c-format msgid "Hello, %s!" msgstr "Вітаем, %s!" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Параметры" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "ПадключÑнне да Ñеткі з падлікам трафіка — Ð°ÑžÑ‚Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ ÑÑ–Ð½Ñ…Ñ€Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ… крамы прыпынена" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:328 msgid "Refresh Manually" msgstr "Сінхранізаваць уручную" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Фільтры змеÑціва" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Толькі Ñвабоднае праграмнае забеÑпÑчÑ" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary applications when browsing and searching" msgstr "Схаваць Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð¿Ñ€Ð°Ð³Ð»Ñду Ñ– пошуку Ð¿Ñ€Ð°Ð¿Ñ€Ñ‹ÐµÑ‚Ð°Ñ€Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñ‹" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Толькі вынікі з Flathub" #: src/bz-preferences-dialog.blp:40 msgid "Limit search and browse results to applications only available on Flathub" msgstr "Ðбмежаваць пошук Ñ– праглÑд вынікаў праграмамі, ÑÐºÑ–Ñ Ð´Ð°ÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñ‚Ð¾Ð»ÑŒÐºÑ– на Flathub" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "Толькі ÑÐ¿Ñ€Ð°ÑžÐ´Ð¶Ð°Ð½Ñ‹Ñ Ð²Ñ‹Ð½Ñ–ÐºÑ–" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Схаваць вынікі, ÑÐºÑ–Ñ Ð½Ðµ Ñпраўджаны на Flathub" #: src/bz-preferences-dialog.blp:49 msgid "Hide EOL Apps" msgstr "Схаваць праграмы напрыканцы Ñ‚Ñрміну Ñлужбы" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "Схаваць праграмы, ÑÐºÑ–Ñ Ð±Ð¾Ð»ÑŒÑˆ не падтрымліваюцца Ñ–Ñ… раÑпрацоўшчыкамі" #: src/bz-preferences-dialog.blp:55 src/bz-window.blp:191 msgid "Search" msgstr "Пошук" #: src/bz-preferences-dialog.blp:58 msgid "Delay Search Results" msgstr "Ðдкладваць паказванне вынікаў пошуку" #: src/bz-preferences-dialog.blp:59 msgid "Improve results performance by debouncing search terms" msgstr "Палепшыце ÑкаÑць пошуку з прадухіленнем пошуку памылковых значÑннÑÑž" #: src/bz-preferences-dialog.blp:64 msgid "Progress Bar" msgstr "Індыкатар выкананнÑ" #: src/bz-preferences-dialog.blp:65 msgid "Choose a theme for the progress bar!" msgstr "Выберыце Ñ‚Ñму індыкатара выкананнÑ!" #: src/bz-preferences-dialog.blp:89 msgid "Vertical Stripes" msgstr "Ð’ÐµÑ€Ñ‚Ñ‹ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð¿Ð°Ð»Ð¾ÑÑ‹" #: src/bz-preferences-dialog.blp:90 msgid "Display flag colors from left to right" msgstr "Паказваць колеры ÑцÑга злева направа" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Колер акцÑнту" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Колеры гонару" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Колеры гонару — леÑбіÑнкі" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Колеры гонару — мужчыны гомаÑекÑуалы" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Колеры гонару — транÑгендары" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Колеры гонару — Ð½ÐµÐ±Ñ–Ð½Ð°Ñ€Ð½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Колеры гонару — біÑекÑуалы" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Колеры гонару — аÑекÑуалы" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Колеры гонару — панÑекÑуалы" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Колеры гонару — Ð°Ñ€Ð°Ð¼Ð°Ð½Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Колеры гонару — Ð³ÐµÐ½Ð´Ð°Ñ€Ñ„Ð»ÑŽÑ–Ð´Ð½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Колеры гонару — поліÑекÑÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Колеры гонару — омніÑекÑÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Колеры гонару — Ð°Ñ€Ð°Ð¼Ð°Ð½Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ Ð°ÑекÑÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Колеры гонару — Ð°Ð³ÐµÐ½Ð´Ð°Ñ€Ð½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Колеры гонару — гендарквіры" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Колеры гонару — інтÑÑ€ÑекÑуалы" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Колеры гонару — дÑÐ¼Ñ–Ð³ÐµÐ½Ð´Ð°Ñ€Ð½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Колеры гонару — Ð±Ñ–Ñ€Ð°Ð¼Ð°Ð½Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ Ð°Ñобы" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Колеры гонару — аÑобы з аÑаблівымі патрÑбамі" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Колеры гонару — фембоі" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Колеры гонару — Ð¿Ð°Ð·Ð°Ð³ÐµÐ½Ð´Ð°Ñ€Ð½Ñ‹Ñ Ð°Ñобы" #: src/bz-releases-dialog.blp:5 src/bz-releases-list.blp:28 src/bz-updates-card.blp:150 msgid "Version History" msgstr "ГіÑÑ‚Ð¾Ñ€Ñ‹Ñ Ð²ÐµÑ€Ñій" #. Translators: This is a date format for timestamps from the current year. Used in the app releases section. #. * %B is the full month name, %e is the day. #. * Example: "October 1" #. * See https://docs.gtk.org/glib/method.DateTime.format.html for format options #. * Please modify to make it sound natural in your locale. #. * #: src/bz-releases-list.c:121 msgid "%e %B" msgstr "%e %B" #. Translators: This is a date format for timestamps from previous years. Used in the app releases section. #. * %B is the full month name, %e is the day, %Y is the year. #. * Example: "October 1, 2025" #. * See https://docs.gtk.org/glib/method.DateTime.format.html for format options #. * Please modify to make it sound natural in your locale. #. * #: src/bz-releases-list.c:129 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:168 #, c-format msgid "Version %s" msgstr "ВерÑÑ–Ñ %s" #: src/bz-releases-list.c:220 msgid "No details for this release" msgstr "Пра гÑта выданне нÑма звеÑтак" #: src/bz-releases-list.c:232 msgid "Get More Information" msgstr "Ðтрымаць больш інфармацыі" #: src/bz-rich-app-tile.blp:156 msgid "Get" msgstr "Ðтрымаць" #: src/safety-calculator.c:82 msgid "Unknown Permissions" msgstr "Дазволы невÑдомыÑ" #: src/safety-calculator.c:83 msgid "Permissions are missing for this app." msgstr "Ðе хапае дазволаў Ð´Ð»Ñ Ð³Ñтай праграмы." #: src/safety-calculator.c:96 msgid "No Permissions" msgstr "Ðе патрабуе дазволаў" #: src/safety-calculator.c:97 msgid "App is fully sandboxed" msgstr "Праграма цалкам выконваецца Ñž «пÑÑочніцы»" #: src/safety-calculator.c:103 msgid "Network Access" msgstr "ДоÑтуп да Ñеткі" #: src/safety-calculator.c:104 msgid "Can access the internet" msgstr "Мае доÑтуп да інтÑрнÑту" #: src/safety-calculator.c:106 msgid "No Network Access" msgstr "Без доÑтупу да Ñеткі" #: src/safety-calculator.c:107 msgid "Cannot access the internet" msgstr "Ðе мае доÑтупу да інтÑрнÑту" #: src/safety-calculator.c:112 msgid "User Device Access" msgstr "ДоÑтуп да прылад карыÑтальніка" #: src/safety-calculator.c:113 msgid "Can access devices such as webcams or gaming controllers" msgstr "Мае доÑтуп да прылад накшталт вÑб-камер або гульнÑвых кантролераў" #: src/safety-calculator.c:115 msgid "No User Device Access" msgstr "Без доÑтупу да прылад карыÑтальніка" #: src/safety-calculator.c:116 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Ðе мае доÑтупу да прылад накшталт вÑб-камер або гульнÑвых кантролераў" #: src/safety-calculator.c:121 msgid "Input Device Access" msgstr "ДоÑтуп да прылад уводу" #: src/safety-calculator.c:122 msgid "Can access input devices" msgstr "Мае доÑтуп да прылад уводу" #: src/safety-calculator.c:128 msgid "Microphone Access and Audio Playback" msgstr "ДоÑтуп да мікрафона Ñ– Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð°ÑžÐ´Ñ‹Ñ" #: src/safety-calculator.c:129 msgid "Can listen using microphones and play audio without asking permission" msgstr "Можа веÑці праÑлухоўванне праз мікрафон Ñ– прайграваць Ð°ÑžÐ´Ñ‹Ñ Ð½Ðµ пытаючы дазволу" #: src/safety-calculator.c:135 msgid "System Device Access" msgstr "ДоÑтуп да ÑÑ–ÑÑ‚Ñмных прылад" #: src/safety-calculator.c:136 msgid "Can access system devices which require elevated permissions" msgstr "Мае доÑтуп да ÑÑ–ÑÑ‚Ñмных прылад, ÑÐºÑ–Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±ÑƒÑŽÑ†ÑŒ павышанага ўзроўню дазволаў" #: src/safety-calculator.c:142 msgid "Screen Contents Access" msgstr "ДоÑтуп да змеÑціва Ñкрана" #: src/safety-calculator.c:143 msgid "Can access the contents of the screen or other windows" msgstr "Мае доÑтуп да змеÑціва Ñкрана або іншых акон" #: src/safety-calculator.c:149 msgid "Legacy Windowing System" msgstr "СаÑтарÑлы аконны інтÑрфейÑ" #: src/safety-calculator.c:150 msgid "Always uses a legacy windowing system (X11)" msgstr "ЗаўÑёды выкарыÑтоўвае ÑаÑтарÑлую ÑÑ–ÑÑ‚Ñму ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ð¾ÐºÐ½Ð°Ð¼Ñ– (X11)" #: src/safety-calculator.c:156 msgid "Arbitrary Permissions" msgstr "ÐÐ´Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ñ Ð´Ð°Ð·Ð²Ð¾Ð»Ñ‹" #: src/safety-calculator.c:157 msgid "Can acquire arbitrary permissions" msgstr "Можа атрымліваць Ð°Ð´Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ñ Ð´Ð°Ð·Ð²Ð¾Ð»Ñ‹" #: src/safety-calculator.c:163 msgid "User Settings" msgstr "Ðалады карыÑтальніка" #: src/safety-calculator.c:164 msgid "Can access and change user settings" msgstr "Можа праглÑдаць Ñ– змÑнÑць налады карыÑтальніка" #: src/safety-calculator.c:170 msgid "Full File System Read/Write Access" msgstr "Чытанне Ñ– Ð·Ð°Ð¿Ñ–Ñ Ð´Ð°Ð½Ñ‹Ñ… ва уÑёй файлавай ÑÑ–ÑÑ‚Ñме" #: src/safety-calculator.c:171 msgid "Can read and write all data on the file system" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ– запіÑу даных ва уÑёй файлавай ÑÑ–ÑÑ‚Ñме" #: src/safety-calculator.c:178 msgid "Home Folder Read/Write Access" msgstr "Чытанне Ñ– Ð·Ð°Ð¿Ñ–Ñ Ð´Ð°Ð½Ñ‹Ñ… Ñž галоўнай папцы" #: src/safety-calculator.c:179 msgid "Can read and write all data in your home directory" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ– запіÑу даных Ñž галоўнай папцы" #: src/safety-calculator.c:186 msgid "Full File System Read Access" msgstr "Чытанне даных ва ÑžÑёй файлавай ÑÑ–ÑÑ‚Ñме" #: src/safety-calculator.c:187 msgid "Can read all data on the file system" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ñ‹Ñ… ва уÑёй файлавай ÑÑ–ÑÑ‚Ñме" #: src/safety-calculator.c:195 msgid "Home Folder Read Access" msgstr "Чытанне даных у галоўнай папцы" #: src/safety-calculator.c:196 msgid "Can read all data in your home directory" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñž галоўнай папцы" #: src/safety-calculator.c:204 msgid "Download Folder Read/Write Access" msgstr "Чытанне Ñ– Ð·Ð°Ð¿Ñ–Ñ Ð´Ð°Ð½Ñ‹Ñ… у папцы Ñпамповак" #: src/safety-calculator.c:205 msgid "Can read and write all data in your downloads directory" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ– запіÑу даных у папцы Ñпамповак" #: src/safety-calculator.c:215 msgid "Download Folder Read Access" msgstr "Чытанне даных Ñž папцы Ñпамповак" #: src/safety-calculator.c:216 msgid "Can read all data in your downloads directory" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ñ‹Ñ… Ñž папцы Ñпамповак" #: src/safety-calculator.c:229 msgid "Can read and write all data in the directory" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ– запіÑу даных у каталогу" #: src/safety-calculator.c:243 msgid "Can read all data in the directory" msgstr "Мае доÑтуп да Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ñ‹Ñ… у каталогу" #: src/safety-calculator.c:258 msgid "No File System Access" msgstr "Без доÑтупу да файлавай ÑÑ–ÑÑ‚Ñмы" #: src/safety-calculator.c:259 msgid "Cannot access the file system at all" msgstr "Ðе мае доÑтупу да ÑžÑёй файлавай ÑÑ–ÑÑ‚Ñмы" #: src/safety-calculator.c:266 msgid "Uses System Services" msgstr "ВыкарыÑтоўвае ÑÑ–ÑÑ‚ÑÐ¼Ð½Ñ‹Ñ ÑÑрвіÑÑ‹" #: src/safety-calculator.c:267 msgid "Can request data from non-portal system services" msgstr "Можа запытваць Ð´Ð°Ð½Ñ‹Ñ Ð· ÑÑ–ÑÑ‚Ñмных ÑÑрвіÑаў, ÑÐºÑ–Ñ Ð½Ðµ звÑзаны з парталам" #: src/safety-calculator.c:273 msgid "Uses Session Services" msgstr "ВыкарыÑтоўвае ÑÑрвіÑÑ‹ ÑеанÑа" #: src/safety-calculator.c:274 msgid "Can request data from non-portal session services" msgstr "Можа запытваць Ð´Ð°Ð½Ñ‹Ñ Ð· ÑÑрвіÑаў ÑеанÑа, ÑÐºÑ–Ñ Ð½Ðµ звÑзаны з парталам" #: src/safety-calculator.c:322 msgid "No Service Access" msgstr "Без доÑтупу да ÑÑрвіÑаў" #: src/safety-calculator.c:323 msgid "Cannot access non-portal session or system services at all" msgstr "Ðе можа запытваць Ð´Ð°Ð½Ñ‹Ñ Ð· ÑÑрвіÑаў ÑеанÑа або ÑÑ–ÑÑ‚Ñмных ÑÑрвіÑаў, ÑÐºÑ–Ñ Ð½Ðµ звÑзаны з парталам" #: src/safety-calculator.c:331 msgid "Verified App Developer" msgstr "Спраўджаны раÑпрацоўшчык" #: src/safety-calculator.c:332 msgid "The developer of this app has been verified to be who they say they are" msgstr "РаÑпрацоўшчык гÑтай праграмы прайшоў Ñпраўджанне аÑобы" #: src/safety-calculator.c:341 msgid "Proprietary Code" msgstr "Прапрыетарны код" #: src/safety-calculator.c:342 msgid "The source code is not public, so it cannot be independently audited and might be unsafe" msgstr "Зыходны код праграмы не даÑтупны Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÑ–, Ñго нельга праверыць незалежна, таму праграма можа быць небÑÑпечнай" #: src/safety-calculator.c:352 msgid "Auditable Code" msgstr "ПравÑральны код" #: src/safety-calculator.c:353 msgid "The source code is public and can be independently audited, which makes the app more likely to be safe" msgstr "Зыходны код праграмы даÑтупны Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÑ–, Ñго можна праверыць незалежна, таму з большай верагоднаÑцю праграма бÑÑпечнаÑ" #: src/safety-calculator.c:493 #, c-format msgid "Use the %s System Service" msgstr "ВыкарыÑтоўвае ÑÑ–ÑÑ‚Ñмны ÑÑÑ€Ð²Ñ–Ñ %s" #: src/safety-calculator.c:497 #, c-format msgid "Use the %s Session Service" msgstr "ВыкарыÑтоўвае ÑÑÑ€Ð²Ñ–Ñ ÑеанÑа %s" #: src/safety-calculator.c:501 #, c-format msgid "Use the %s Service" msgstr "ВыкарыÑтоўвае ÑÐµÑ€Ð²Ñ–Ñ %s" #: src/safety-calculator.c:511 msgid "Can see the non-portal service" msgstr "Можа праглÑдаць ÑÑрвіÑ, Ñкі не звÑзаны з парталам" #: src/safety-calculator.c:513 msgid "Can talk to the non-portal service" msgstr "Можа адпраўлÑць паведамленні ÑÑрвіÑу, Ñкі не звÑзаны з парталам" #: src/safety-calculator.c:515 msgid "Can own the non-portal service" msgstr "Можа валодаць ÑÑрвіÑам, Ñкі не звÑзаны з парталам" #: src/safety-calculator.c:530 msgid "Global Menu Integration" msgstr "ІнтÑÐ³Ñ€Ð°Ñ†Ñ‹Ñ Ð· глабальным меню" #: src/safety-calculator.c:531 msgid "Can display its menus in a global menu bar" msgstr "Можа паказваць Ñвае меню Ñž панÑлі глабальнага меню" #: src/safety-calculator.c:536 msgid "KDE Settings Integration" msgstr "ІнтÑÐ³Ñ€Ð°Ñ†Ñ‹Ñ Ñž наладамі KDE" #: src/safety-calculator.c:537 msgid "Can detect when KDE desktop settings change" msgstr "Можа адÑочваць змены Ñž наладах аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ KDE" #: src/safety-calculator.c:542 msgid "KDE Global Settings" msgstr "Ð“Ð»Ð°Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ KDE" #: src/safety-calculator.c:543 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Можа чытаць Ñ‚Ð°ÐºÑ–Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ KDE, Ñк выбар шрыфтоў Ñ– колераў" #: src/safety-calculator.c:548 msgid "Secret Storage Service" msgstr "Служба Ñховішча ÑакрÑтаў" #: src/safety-calculator.c:549 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "Можа захоўваць Ñ– атрымліваць улаÑÐ½Ñ‹Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ– з дапамогай набору ÑÑ–ÑÑ‚Ñмных ключоў" #: src/safety-calculator.c:554 msgid "Desktop Notifications Service" msgstr "СÑÑ€Ð²Ñ–Ñ Ð°Ð¿Ð°Ð²ÑшчÑннÑÑž на працоўным Ñтале" #: src/safety-calculator.c:555 msgid "Can send desktop notifications" msgstr "Можа адпраўлÑць апавÑшчÑнні на працоўным Ñтале" #: src/safety-calculator.c:561 msgid "System Tray Integration" msgstr "ІнтÑÐ³Ñ€Ð°Ñ†Ñ‹Ñ Ð· панÑллю заданнÑÑž" #: src/safety-calculator.c:562 msgid "Can display an icon in the system tray" msgstr "Можа паказваць значок у панÑлі заданнÑÑž" #: src/safety-calculator.c:567 msgid "KDE Connect Integration" msgstr "ІнтÑÐ³Ñ€Ð°Ñ†Ñ‹Ñ Ð· KDE Connect" #: src/safety-calculator.c:568 msgid "Can interact with devices paired via KDE Connect" msgstr "Можа ўзаемадзейнічаць з прыладамі, Ñпалучанымі праз KDE Connect" #: src/bz-safety-dialog.blp:7 msgid "Safety" msgstr "БÑÑпека" #: src/bz-safety-dialog.blp:53 msgid "License" msgstr "ЛіцÑнзіÑ" #: src/bz-safety-dialog.blp:63 msgid "App ID" msgstr "ID праграмы" #: src/bz-safety-dialog.blp:73 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:104 msgid "" "This app uses an outdated version of the software platform (SDK) and might contain bugs or security vulnerabilities which will " "not be fixed." msgstr "" "ГÑта праграма выкарыÑтоўвае ÑаÑтарÑлую верÑÑ–ÑŽ праграмнай платформы (SDK) Ñ–, імаврна, утрымлівае памылкі або пагрозы Ð´Ð»Ñ Ð±ÑÑпекі, " "ÑÐºÑ–Ñ Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° выправіць." #: src/bz-safety-dialog.c:227 #, c-format msgid "%s is Safe" msgstr "%s у бÑÑпецы" #: src/bz-safety-dialog.c:232 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s не мае небÑÑпечных дазволаў" #: src/bz-safety-dialog.c:237 #, c-format msgid "%s is Probably Safe" msgstr "%s імаверна бÑÑпечнаÑ" #: src/bz-safety-dialog.c:242 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s можа неÑці небÑÑпеку" #: src/bz-safety-dialog.c:247 #, c-format msgid "%s is Unsafe" msgstr "%s небÑÑпечнаÑ" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "Здымкі Ñкрана" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "ПапÑÑ€Ñдні здымак" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "ÐаÑтупны здымак" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "СкапіÑваць відарыÑ" #: src/bz-screenshot-page.blp:147 msgid "Reset View" msgstr "Скінуць від" #: src/bz-screenshot-page.blp:158 msgid "Zoom Out" msgstr "Паменшыць" #: src/bz-screenshot-page.blp:168 msgid "Zoom In" msgstr "ПавÑлічыць" #: src/bz-screenshots-carousel.blp:5 msgid "Screenshots Carousel" msgstr "КаруÑель здымкаў Ñкрана" #: src/bz-screenshots-carousel.blp:112 msgid "Open Screenshot Viewer" msgstr "Ðдкрыць праглÑд здымкаў Ñкрана" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "ВідÑа" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "ОфіÑ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "КалÑндар" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Паведамленні" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Steam" msgstr "Steam" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "Paint" msgstr "МалÑванне" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:122 msgid "Minecraft" msgstr "Minecraft" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:127 msgid "Emulator" msgstr "ЭмулÑтар" #: src/bz-search-widget.blp:57 msgid "Search Apps, Games, Software" msgstr "Пошук праграм Ñ– гульнÑÑž" #: src/bz-search-widget.blp:79 msgid "Clear Search" msgstr "ÐчыÑціць пошук" #: src/bz-search-widget.blp:167 msgid "Categories Unavailable" msgstr "КатÑгорыі не даÑтупныÑ" #: src/bz-search-widget.blp:168 msgid "Search for apps using the search bar above." msgstr "Шукайце праграмы, выкарыÑтоўваючы панÑль зверху." #: src/bz-search-widget.blp:193 msgid "Browse Categories" msgstr "ÐглÑд катÑгорый" #: src/bz-search-widget.blp:316 msgid "No Applications Found" msgstr "Праграм не знойдзена" #: src/bz-search-widget.c:243 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Ð”Ð»Ñ Ð·Ð°Ð¿Ñ‹Ñ‚Ñƒ \"%s\" на Flathub нічога не знайшлоÑÑ" #: src/bz-share-list.c:116 msgid "Copy Link" msgstr "СкапіÑваць ÑпаÑылку" #: src/bz-share-list.c:127 msgid "Open Link" msgstr "Ðдкрыць ÑпаÑылку" #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "ЧаÑÐ°Ð²Ð°Ñ ÑˆÐºÐ°Ð»Ð°" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "УÑталÑваннÑÑž:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "У Ñвеце" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:124 #, c-format msgid "%.2fM Total Installs" msgstr "УÑÑго ÑžÑталÑваннÑў — %.2f млн." #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:127 #, c-format msgid "%.2fK Total Installs" msgstr "УÑÑго ÑžÑталÑваннÑў — %.2f тыÑ." #: src/bz-stats-dialog.c:129 #, c-format msgid "%'d Total Installs" msgstr "УÑÑго ÑžÑталÑваннÑў — %'d" #: src/bz-tag-list.c:96 msgid "No Results Found" msgstr "ÐÑма вынікаў" #: src/bz-tag-list.c:108 #, c-format msgid "Apps Tagged \"%s\"" msgstr "Праграмы з цÑтлікам \"%s\"" #: src/bz-tag-list.c:124 msgid "Search failed" msgstr "Памылка пошуку" #: src/bz-transaction-dialog.c:155 msgid "Keep User Data" msgstr "Пакінуць Ð´Ð°Ð½Ñ‹Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка" #: src/bz-transaction-dialog.c:156 msgid "Allow restoring personal settings & content" msgstr "Дазволіць аднаўлÑць перÑÐ°Ð½Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ Ñ– змеÑціва" #: src/bz-transaction-dialog.c:165 msgid "Delete All Data" msgstr "Выдаліць уÑе даныÑ" #: src/bz-transaction-dialog.c:166 msgid "Permanently erase user data to save space" msgstr "Ðезваротна выдаліць Ð´Ð°Ð½Ñ‹Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка, каб зберагчы меÑца" #: src/bz-transaction-dialog.c:191 #, c-format msgid "Install %s?" msgstr "УÑталÑваць \"%s\"?" #: src/bz-transaction-dialog.c:196 msgid "Select which version to install. May install additional shared components" msgstr "Выберыце, Ñкую верÑÑ–ÑŽ ÑžÑталÑваць. Могуць уÑталÑвацца Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð°Ð±Ð°Ð³ÑƒÐ»ÐµÐ½Ñ‹Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½ÐµÐ½Ñ‚Ñ‹" #: src/bz-transaction-dialog.c:198 msgid "May install additional shared components" msgstr "Можа ÑžÑталÑваць Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð°Ð±Ð°Ð³ÑƒÐ»ÐµÐ½Ñ‹Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½ÐµÐ½Ñ‚Ñ‹" #: src/bz-transaction-dialog.c:219 #, c-format msgid "Remove %s?" msgstr "Выдаліць \"%s\"?" #: src/bz-transaction-dialog.c:222 msgid "Select which version to remove." msgstr "Выберыце, Ñкую верÑÑ–ÑŽ выдаліць." #: src/bz-transaction-dialog.c:224 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Праграму %s нельга будзе выкарыÑтоўваць паÑÐ»Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð½Ñ." #: src/bz-transaction-dialog.c:247 #, c-format msgid "“%s†is High Risk" msgstr "Праграма \"%s\" нÑÑе выÑÐ¾ÐºÑ–Ñ Ñ€Ñ‹Ð·Ñ‹ÐºÑ–" #: src/bz-transaction-dialog.c:251 msgid "" "This app has full access to your system, including all <b>your files, browser history, saved passwords</b>, and more. It also has " "access to the internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with these permissions." msgstr "" "ГÑта праграма мае поўны доÑтуп да ÑÑ–ÑÑ‚Ñмы, у тым ліку да ÑžÑÑ–Ñ… <b>вашых файлаў, гіÑторыі браўзера, захаваных паролÑÑž</b> Ñ– не " "толькі. ТакÑама, Ñна мае доÑтуп да інтÑрнÑту, што азначае, што Ñна можа адпраўлÑць вашы Ð´Ð°Ð½Ñ‹Ñ Ð·Ð½ÐµÑˆÐ½Ñ–Ð¼ Ñуб’ектам.\n" "\n" "З-за таго, што праграма з’ÑўлÑецца прапрыетарнай, немагчыма правеÑці праверку таго, што Ñна робіць з гÑтымі дазволамі." #: src/bz-transaction-dialog.c:260 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record all keystrokes, capture screenshots, and monitor " "other applications</b>. It also has access to the internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with these permissions." msgstr "" "ГÑта праграма выкарыÑтоўвае ÑаÑтарÑлую верÑÑ–ÑŽ ÑÑ–ÑÑ‚Ñмы ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ð¾ÐºÐ½Ð°Ð¼Ñ– X11, у Ñкой Ñ‘Ñць дазвол на <b>запіÑванне ÑžÑÑ–Ñ… ÑпалучÑннÑÑž " "клавіш, ÑтварÑнне здымкаў Ñкрана Ñ– Ñачыць за іншымі праграмамі</b>. ТакÑама, Ñна мае доÑтуп да інтÑрнÑту, што азначае, што Ñна " "можа адпраўлÑць вашы Ð´Ð°Ð½Ñ‹Ñ Ð·Ð½ÐµÑˆÐ½Ñ–Ð¼ Ñуб’ектам.\n" "\n" "З-за таго, што праграма з’ÑўлÑецца прапрыетарнай, немагчыма правеÑці праверку таго, што Ñна робіць з гÑтымі дазволамі." #: src/bz-transaction-dialog.c:276 msgid "Install Anyway" msgstr "УÑÑ‘ адно ÑžÑталÑваць" #: src/bz-transaction-dialog.c:331 msgid "Failed to load transaction dialog" msgstr "Ðе ўдалоÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ–Ñ†ÑŒ дыÑлог транÑакцыі" #: src/bz-transaction-dialog.c:549 msgid "All apps are already installed" msgstr "УÑе праграмы ÑžÑталÑваны" #: src/bz-transaction-dialog.c:551 msgid "OK" msgstr "OK" #: src/bz-transaction-dialog.c:567 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "УÑталÑваць %u праграму?" msgstr[1] "УÑталÑваць %u праграмы?" msgstr[2] "УÑталÑваць %u праграм?" #: src/bz-transaction-dialog.c:575 msgid "The following will be installed. Additional shared components may also be installed" msgstr "Будуць уÑталÑваны наÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñ‹. Разам з імі могуць уÑталÑвацца Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð°Ð³ÑƒÐ»ÑŒÐ½Ñ‹Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½ÐµÐ½Ñ‚Ñ‹" #: src/bz-transaction-dialog.c:576 #, c-format msgid "%d addons will be installed." msgstr "Будзе ÑžÑталÑвана Ñтолькі дадаткаў: %d." #: src/bz-transaction-dialog.c:577 msgid "Additionally, addons will be installed." msgstr "ТакÑама будуць уÑталÑваны дадаткі." #: src/bz-transaction-manager.c:766 #, c-format msgid "Finished in %.02f seconds" msgstr "Завершана за %.02f Ñек" #: src/bz-transaction-tile.blp:126 msgid "App Add-On" msgstr "Дадатак да праграмы" #: src/bz-transaction-tile.blp:155 msgid "Runtime" msgstr "ÐÑÑроддзе выкананнÑ" #: src/bz-transaction-tile.blp:179 msgid "In Queue" msgstr "У чарзе" #: src/bz-transaction-tile.blp:203 msgid "Done" msgstr "Зроблена" #: src/bz-transaction-tile.blp:227 msgid "Error" msgstr "Памылка" #: src/bz-transaction-tile.blp:271 msgid "Open App" msgstr "Ðдкрыць праграму" #: src/bz-transaction-tile.blp:285 msgid "Cancel Transaction" msgstr "СкаÑаваць транÑакцыю" #: src/bz-transaction-tile.blp:409 msgid "Show Error Info" msgstr "Паказаць звеÑткі пра памылку" #: src/bz-transaction-tile.c:112 #, c-format msgid "%s Freed" msgstr "Вызвалена меÑца: %s" #: src/bz-transaction-tile.c:398 src/bz-transaction-tile.c:401 msgid "Transaction Error" msgstr "Памылка транÑакцыі" #: src/bz-transaction.c:342 msgid "Pending" msgstr "У чаканні" #: src/bz-updates-card.blp:36 msgid "Update All" msgstr "Ðбнавіць уÑе" #: src/bz-updates-card.c:293 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u абнаўленне аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ" msgstr[1] "%u абнаўленні аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ" msgstr[2] "%u абнаўленнÑÑž аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Кіраваць аÑтаткамі даных карыÑтальніка" #: src/bz-user-data-page.blp:89 msgid "No User Data Found" msgstr "Даных карыÑтальніка не знойдзена" #: src/bz-user-data-page.blp:94 msgid "User Data" msgstr "Ð”Ð°Ð½Ñ‹Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка" #: src/bz-user-data-tile.c:144 #, c-format msgid "Trashed User Data for %s" msgstr "ÐŸÐµÑ€Ð°Ð¼ÐµÑˆÑ‡Ð°Ð½Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка Ð´Ð»Ñ %s" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "ПерамÑÑціць Ð´Ð°Ð½Ñ‹Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка Ñž Ñметніцу" #: src/bz-window.blp:152 msgid "Curated" msgstr "ПадабраныÑ" #: src/bz-window.blp:164 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:266 msgid "Refresh completed!" msgstr "Ðбнаўленне Ñкончана!" #: src/bz-window.blp:319 msgid "You are running a new version of Bazaar!" msgstr "Ð’Ñ‹ запуÑцілі новую верÑÑ–ÑŽ Bazaar!" #: src/bz-window.blp:320 msgid "See What's New" msgstr "ПаглÑдзець, што новага" #: src/bz-window.blp:327 msgid "You have a network connection but are viewing a cached version of Flathub" msgstr "У Ð²Ð°Ñ Ñ‘Ñць злучÑнне з Ñеткай, але вы праглÑдаеце верÑÑ–ÑŽ Flathub у кÑшы" #: src/bz-window.blp:439 msgid "Log Out" msgstr "ВыйÑці" #: src/bz-window.c:473 msgid "Failed to load add-ons" msgstr "Ðе ўдалоÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ–Ñ†ÑŒ дадаткі" #: src/bz-window.c:763 msgid "You can't remove Bazaar from Bazaar!" msgstr "Ð’Ñ‹ не можаце выдаліць Bazaar, карыÑтаючыÑÑ Bazaar!" #: src/bz-window.c:1055 src/bz-window.c:1089 msgid "Can't do that right now!" msgstr "У гÑты момант дзеÑнне немагчымае!" #: src/bz-world-map.c:587 msgctxt "As in, \"100 Downloads\"" msgid "Downloads" msgstr "Спампоўкі" #: src/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "ÐÑноўнае" #: src/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Refresh" msgstr "Ðбнавіць" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Ðдкрыць параметры" #: src/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "Ðдкрыць дыÑлог пошуку" #: src/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Open Library" msgstr "Ðдкрыць бібліÑÑ‚Ñку" #: src/shortcuts-dialog.blp:30 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Паказаць ÑпалучÑнні клавіш" #: src/shortcuts-dialog.blp:35 msgctxt "shortcut window" msgid "Close Window" msgstr "Закрыць акно" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "ВыйÑці з Bazaar" #~ msgid "_Synchronize Remotes" #~ msgstr "Сін_Ñ…Ñ€Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ‹Ñ Ð· аддаленымі Ñерверамі" #~ msgid "Synchronizing..." #~ msgstr "Ідзе ÑінхранізацыÑ..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "Ідзе атрыманне запіÑаў (%d)..." #~ msgid "Indexing Data..." #~ msgstr "Ідзе індÑкÑаванне даных..." #~ msgid "View the Release Page" #~ msgstr "ПраглÑдзець Ñтаронку выпуÑку" #~ msgid "Close" #~ msgstr "Закрыць" #~ msgid "Copy and Close" #~ msgstr "СкапіÑваць Ñ– закрыць" #~ msgid "Keep Data" #~ msgstr "Пакінуць даныÑ" #~ msgid "Refreshing Store Content" #~ msgstr "Ідзе абнаўленне змеÑціва крамы" #~ msgid "No background tasks!" #~ msgstr "ÐÑма фонавых задач!" #~ msgctxt "shortcut window" #~ msgid "Synchronize Remotes" #~ msgstr "Ð¡Ñ–Ð½Ñ…Ñ€Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ‹Ñ Ð· аддаленымі Ñерверамі" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "ВыйÑці" �������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/bg.po������������������������������������������������������������������0000664�0000000�0000000�00000110250�15240005042�0016703�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # twlvnn kraftwerk <kraft_werk@tutanota.com>, 2025 # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-18 06:40+0200\n" "PO-Revision-Date: 2025-10-19 11:04+0200\n" "Last-Translator: twlvnn kraftwerk <kraft_werk@tutanota.com>\n" "Language-Team: Bulgarian\n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.8\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 src/bz-window.blp:51 msgid "Bazaar" msgstr "Базар" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "ДобавÑйте, премахвайте или обновете flatpak Ñофтуер на този компютър" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;System;PackageManager;Discover;Flatpak;Software;Store;ÑиÑтема;мениджър на пакети;откриване;Ñофтуер;програми;" #: data/io.github.kolunmi.Bazaar.gschema.xml:6 msgid "Show Git Forge Star Counts" msgstr "Показване на Ð±Ñ€Ð¾Ñ Ð½Ð° звездите в Git Forge" #: data/io.github.kolunmi.Bazaar.gschema.xml:7 msgid "Whether to attempt to detect and show \"star counts\" for projects in the full view" msgstr "Дали да Ñе опита да Ñе заÑече и покаже â€žÐ±Ñ€Ð¾Ñ Ð½Ð° звездите“ за проектите в Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð¸Ð·Ð³Ð»ÐµÐ´" #: data/io.github.kolunmi.Bazaar.gschema.xml:11 src/bz-preferences-dialog.blp:25 msgid "Only Show Free Software" msgstr "Показване Ñамо на Ñвободен Ñофтуер" #: data/io.github.kolunmi.Bazaar.gschema.xml:12 msgid "Hide proprietary software when searching" msgstr "Скриване на ÑобÑтвеничеÑки Ñофтуер при търÑене" #: data/io.github.kolunmi.Bazaar.gschema.xml:16 msgid "Show Only Flathub Content" msgstr "Показване Ñамо на Flathub Ñъдържание" #: data/io.github.kolunmi.Bazaar.gschema.xml:17 msgid "Filter search results to only show applications available on Flathub" msgstr "Филтриране на резултатите от търÑенето, за да Ñе показват Ñамо програмите, налични в Flathub" #: data/io.github.kolunmi.Bazaar.gschema.xml:21 msgid "Debounce Search Inputs" msgstr "ЗабавÑне на входа за търÑене" #: data/io.github.kolunmi.Bazaar.gschema.xml:22 msgid "Add a delay before searching to prevent instant replies while typing" msgstr "ДобавÑне на закъÑнение преди търÑенето, за да Ñе предотвратÑÑ‚ незабавни резултати по време на пиÑане" #: data/io.github.kolunmi.Bazaar.gschema.xml:40 msgid "Global Progress Bar Theme" msgstr "Тема за глобалната лента за напредък" #: data/io.github.kolunmi.Bazaar.gschema.xml:41 msgid "Describes the look of the global progress bar" msgstr "ОпиÑва вида на глобалната лента за напредък" #: data/io.github.kolunmi.Bazaar.gschema.xml:45 msgid "Saved Window Dimensions" msgstr "Запазени размери на прозореца" #: data/io.github.kolunmi.Bazaar.gschema.xml:46 msgid "The window dimensions to be used by the next Bazaar window" msgstr "Размерите на прозореца, които ще Ñе използват от ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† на Базар" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "Открийте и инÑталирайте програми" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "A new app store for GNOME with a focus on discovering and installing applications and addons from Flatpak remotes, particularly Flathub." msgstr "" "Ðов магазин за програми за GNOME, предназначен за откриването и инÑталирането на програми и добавки от Flatpak отдалечени хранилища, по-" "Ñпецифично Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. Bazaar features a \"curated\" tab that can be configured by " "distributors to allow for a more localized experience." msgstr "" "Той взема под внимание подкрепата на разработчиците, които правÑÑ‚ Ð›ÑƒÐ½Ð¸ÐºÑ Ð·Ð° наÑтолни компютри възможен. Bazaar разполага Ñ Ñ€Ð°Ð·Ð´ÐµÐ» „подбрани“, " "който може да бъде наÑтроен от диÑтрибуторите, за да позволи по-Ñпециализирано потребителÑко изживÑване." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:22 src/bz-application.c:496 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:47 msgid "The home view displaying Flathub apps" msgstr "Ðачалната Ñтраница, показваща програми на Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:51 msgid "Nucleus app page" msgstr "Страницата на Nucleus" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "Searching for Blender" msgstr "ТърÑене за Blender" #: src/bz-addons-dialog.blp:13 msgid "Manage Addons" msgstr "Управление на добавки" #: src/bz-app-size-dialog.c:55 msgid "Of the size of human DNA" msgstr "" #: src/bz-app-size-dialog.c:55 msgid "3 billion base pairs" msgstr "" #: src/bz-app-size-dialog.c:56 msgid "Of the Linux Kernel" msgstr "" #: src/bz-app-size-dialog.c:56 msgid "linux-6.17.tar.xz" msgstr "linux-6.17.tar.xz" #: src/bz-app-size-dialog.c:57 msgid "Of the Apollo 11 guidance computer" msgstr "" #: src/bz-app-size-dialog.c:57 msgid "Total ROM and RAM" msgstr "" #: src/bz-app-size-dialog.c:58 msgid "Of the original Super Mario Bros" msgstr "" #: src/bz-app-size-dialog.c:58 msgid "On the NES" msgstr "" #: src/bz-app-size-dialog.c:59 msgid "Of the size of Wikipedia" msgstr "" #: src/bz-app-size-dialog.c:59 msgid "Without any media" msgstr "" #: src/bz-app-size-dialog.blp:43 msgid "--- MB" msgstr "--- МБ" #: src/bz-app-size-dialog.blp:53 src/bz-full-view.blp:351 msgid "Download Size" msgstr "Размер за изтеглÑне" #: src/bz-application.c:392 msgid "This functionality is currently disabled. It is recommended you download and install Flatseal to manage app permissions." msgstr "Тази функционалноÑÑ‚ е деактивирана в момента. Препоръчваме да изтеглите и инÑталирате Flatseal, за да управлÑвате права̀та на програмите." #: src/bz-application.c:456 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:457 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:481 msgid "translator-credits" msgstr "twlvnn kraftwerk" #: src/bz-application.c:462 msgctxt "About Dialog Translator Credit" msgid "Ahmed Najmawi" msgstr "Ahmed Najmawi" #: src/bz-application.c:463 msgctxt "About Dialog Translator Credit" msgid "AtomHare" msgstr "AtomHare" #: src/bz-application.c:464 msgctxt "About Dialog Translator Credit" msgid "Azenyr" msgstr "Azenyr" #: src/bz-application.c:465 msgctxt "About Dialog Translator Credit" msgid "Goudarz Jafari" msgstr "Goudarz Jafari" #: src/bz-application.c:466 msgctxt "About Dialog Translator Credit" msgid "Jill Fiore (Lumaeris)" msgstr "Jill Fiore (Lumaeris)" #: src/bz-application.c:467 msgctxt "About Dialog Translator Credit" msgid "João Victor (Leal)" msgstr "João Victor (Leal)" #: src/bz-application.c:468 msgctxt "About Dialog Translator Credit" msgid "KiKaraage" msgstr "KiKaraage" #: src/bz-application.c:469 msgctxt "About Dialog Translator Credit" msgid "Lucosec" msgstr "Lucosec" #: src/bz-application.c:470 msgctxt "About Dialog Translator Credit" msgid "Léane GRASSER" msgstr "Léane GRASSER" #: src/bz-application.c:471 msgctxt "About Dialog Translator Credit" msgid "Marcel Mrówka (Microwave)" msgstr "Marcel Mrówka (Microwave)" #: src/bz-application.c:472 msgctxt "About Dialog Translator Credit" msgid "Peter Dave Hello" msgstr "Peter Dave Hello" #: src/bz-application.c:473 msgctxt "About Dialog Translator Credit" msgid "Pietro F." msgstr "Pietro F." #: src/bz-application.c:474 msgctxt "About Dialog Translator Credit" msgid "Shihfu Juan" msgstr "Shihfu Juan" #: src/bz-application.c:475 msgctxt "About Dialog Translator Credit" msgid "Shinsei" msgstr "Shinsei" #: src/bz-application.c:476 msgctxt "About Dialog Translator Credit" msgid "Vlastimil DÄ›dek" msgstr "Vlastimil DÄ›dek" #: src/bz-application.c:477 msgctxt "About Dialog Translator Credit" msgid "asen23" msgstr "asen23" #: src/bz-application.c:478 msgctxt "About Dialog Translator Credit" msgid "camegone" msgstr "camegone" #: src/bz-application.c:479 msgctxt "About Dialog Translator Credit" msgid "renner" msgstr "renner" #: src/bz-application.c:480 msgctxt "About Dialog Translator Credit" msgid "robotta" msgstr "robotta" #: src/bz-application.c:1019 msgid "Constructing Flatpak instance..." msgstr "Изграждане на Flatpak инÑтанциÑ..." #: src/bz-application.c:1036 msgid "Reusing last Flatpak instance..." msgstr "Преизползване на поÑледната Flatpak инÑтанциÑ…" #: src/bz-application.c:1061 msgid "Flathub is not registered on this system" msgstr "Flathub не е региÑтриран в тази ÑиÑтема" #: src/bz-application.c:1064 msgid "Would you like to add Flathub as a remote? If you decline, the Flathub page will not be available. You can change this later." msgstr "" "ИÑкате ли да добавите Flathub като отдалечено хранилище? Ðко откажете, Ñтраницата на Flathub нÑма да бъде доÑтъпна. Може да промените това по-" "къÑно." #: src/bz-application.c:1069 src/bz-update-dialog.blp:6 msgid "Later" msgstr "По-къÑно" #: src/bz-application.c:1070 msgid "Add Flathub" msgstr "ДобавÑне на Flathub" #: src/bz-application.c:1102 #, c-format msgid "Identifying installed entries..." msgstr "Идентифициране на инÑталираните запиÑи..." #: src/bz-application.c:1114 #, c-format msgid "Beginning remote entry retrieval while referencing %d blocklist(s)..." msgstr "Получаване на отдалечените запиÑи и четене от %d ÑпиÑък(а) за блокиране..." #: src/bz-application.c:1262 #, c-format msgid "Receiving Entries" msgstr "Получаване на запиÑите" #: src/bz-application.c:1263 #, c-format msgid "%'d of %'d" msgstr "%'d от %'d" #: src/bz-application.c:1273 #, c-format msgid "Waiting for background indexing tasks to catch up..." msgstr "Изчакване на задачите за индекÑиране във фона да наÑтигнат…" #: src/bz-application.c:1309 #, c-format msgid "Completed initialization in %0.2f seconds" msgstr "ИнициализациÑта завърши за %0.2f Ñекунди" #: src/bz-application.c:1314 msgid "Checking for updates..." msgstr "ПроверÑване за обновлениÑ..." #: src/bz-application.c:1353 msgid "Synchronizing..." msgstr "Синхронизиране..." #: src/bz-browse-widget.blp:11 src/bz-flathub-page.blp:11 src/bz-full-view.blp:10 src/bz-installed-page.blp:11 src/bz-window.blp:151 msgid "Empty" msgstr "Празно" #: src/bz-browse-widget.blp:15 msgid "No Curated Applications" msgstr "ÐÑма подбрани програми" #: src/bz-browse-widget.blp:16 msgid "Bazaar was not provided a curated content configuration. Contact your operating system's support channels for assistance." msgstr "Bazaar не разполага Ñ Ð½Ð°Ñтройки за подбрано Ñъдържание. Свържете Ñе Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ñ‚Ðµ за поддръжка на вашата операционна ÑиÑтема за помощ." #: src/bz-browse-widget.blp:22 src/bz-flathub-page.blp:22 msgid "Browser" msgstr "Браузър" #: src/bz-entry-inspector.blp:5 msgid "Entry Inspector" msgstr "ИнÑпектор на запиÑите" #: src/bz-entry-inspector.blp:76 msgid "Serialize" msgstr "Сериализиране" #: src/bz-entry-inspector.blp:80 msgid "Convert to JSON" msgstr "Преобразуване в JSON" #: src/error.c:68 msgid "An Error Occurred" msgstr "Възникна грешка" #: src/error.c:89 msgid "Close" msgstr "ЗатварÑне" #: src/error.c:90 msgid "Copy and Close" msgstr "Копиране и затварÑне" #: src/bz-flathub-category.c:290 msgid "Audio & Video" msgstr "Ðудио & видео" #: src/bz-flathub-category.c:292 msgid "Development" msgstr "Разработка" #: src/bz-flathub-category.c:294 msgid "Education" msgstr "Образование" #: src/bz-flathub-category.c:296 msgid "Games" msgstr "Игри" #: src/bz-flathub-category.c:298 msgid "Graphics" msgstr "Графика" #: src/bz-flathub-category.c:300 msgid "Networking" msgstr "Интернет" #: src/bz-flathub-category.c:302 msgid "Office" msgstr "ОфиÑ" #: src/bz-flathub-category.c:304 msgid "Science" msgstr "Ðаука" #: src/bz-flathub-category.c:306 msgid "System" msgstr "СиÑтема" #: src/bz-flathub-category.c:308 msgid "Utilities" msgstr "ИнÑтрументи" #: src/bz-flathub-page.blp:15 msgid "Flathub Not Added" msgstr "Flathub не беше добавен" #: src/bz-flathub-page.blp:16 msgid "The Flathub remote was not found on any of your flatpak installations" msgstr "Отдалеченото Flathub хранилище не беше намерено в нито една от вашите инÑталации на flatpak" #: src/bz-flathub-page.blp:70 src/bz-flathub-page.c:185 msgid "Trending" msgstr "ПопулÑрни" #: src/bz-flathub-page.blp:101 msgid "More Trending" msgstr "Още набиращи популÑрноÑÑ‚" #: src/bz-flathub-page.blp:117 msgid "Categories" msgstr "Категории" #: src/bz-flathub-page.blp:154 src/bz-flathub-page.c:195 msgid "Recently Updated" msgstr "ÐаÑкоро обновени" #: src/bz-flathub-page.blp:185 msgid "More Updated" msgstr "Още обновени" #: src/bz-flathub-page.blp:206 src/bz-flathub-page.c:205 msgid "Recently Added" msgstr "ÐаÑкоро добавени" #: src/bz-flathub-page.blp:237 msgid "More Added" msgstr "Още добавени" #: src/bz-flathub-page.blp:258 src/bz-flathub-page.c:215 msgid "Popular" msgstr "ПопулÑрни" #: src/bz-flathub-page.blp:289 msgid "More Popular" msgstr "Още популÑрни" #: src/bz-flatpak-entry.c:507 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub Ñтраницата" #: src/bz-flatpak-entry.c:526 msgctxt "Project URL Type" msgid "Homepage" msgstr "Ðачална Ñтраница" #: src/bz-flatpak-entry.c:529 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "СиÑтема за проблеми" #: src/bz-flatpak-entry.c:532 msgctxt "Project URL Type" msgid "FAQ" msgstr "ЧЗВ" #: src/bz-flatpak-entry.c:535 msgctxt "Project URL Type" msgid "Help" msgstr "Помощ" #: src/bz-flatpak-entry.c:538 msgctxt "Project URL Type" msgid "Donate" msgstr "Дарете" #: src/bz-flatpak-entry.c:543 msgctxt "Project URL Type" msgid "Translate" msgstr "Превод" #: src/bz-flatpak-entry.c:546 msgctxt "Project URL Type" msgid "Contact" msgstr "Контакти" #: src/bz-flatpak-entry.c:549 msgctxt "Project URL Type" msgid "Source Code" msgstr "Изходен код" #: src/bz-flatpak-entry.c:554 msgctxt "Project URL Type" msgid "Contribute" msgstr "ДопринеÑете" #: src/bz-full-view.blp:14 msgid "No Results" msgstr "ÐÑма резултати" #: src/bz-full-view.blp:15 msgid "Try a different search query" msgstr "Oпитайте различно търÑене" #: src/bz-full-view.blp:21 src/bz-window.blp:161 msgid "Content" msgstr "Съдържание" #: src/bz-full-view.blp:129 msgid "This flatpak is verified by the original developers of the software." msgstr "Този flatpak е проверен от оригиналните разработчици на Ñофтуера." #: src/bz-full-view.blp:156 msgid "Support" msgstr "Подкрепи" #: src/bz-full-view.blp:176 msgid "Repository Star Count" msgstr "Брой звезди на хранилището" #: src/bz-full-view.blp:207 msgid "Run Application" msgstr "ИзпълнÑване на програмата" #: src/bz-full-view.blp:221 msgid "Download & Install Application" msgstr "ИзтеглÑне и инÑталиране на програмата" #: src/bz-full-view.blp:224 src/bz-transaction-view.blp:108 src/bz-window.c:1071 msgid "Install" msgstr "ИнÑталиране" #: src/bz-full-view.blp:236 msgid "Uninstall Application" msgstr "ДеинÑталиране на програмата" #: src/bz-full-view.blp:251 src/bz-installed-page.blp:125 msgid "Manage Add-ons" msgstr "Управление на добавки" #: src/bz-full-view.blp:264 msgid "Install Other Version" msgstr "ИнÑталиране на друга верÑиÑ" #: src/bz-full-view.blp:279 msgid "Share this application" msgstr "Споделете тази програма" #: src/bz-full-view.blp:362 msgid "Excludes shared components" msgstr "Изключва Ñподелени компоненти" #: src/bz-full-view.blp:418 msgid "Free Software" msgstr "Свободен Ñофтуер" #: src/bz-full-view.blp:460 msgid "Proprietary" msgstr "СобÑтвеничеÑки" #: src/bz-full-view.blp:471 msgid "Source code may not be available" msgstr "ИзходниÑÑ‚ код може да не е наличен" #: src/bz-full-view.blp:526 msgid "Click for details" msgstr "ÐатиÑнете за подробноÑти" #: src/bz-full-view.blp:592 msgid "Repositories" msgstr "Хранилища" #: src/bz-full-view.blp:623 src/bz-full-view.blp:631 msgid "Project Website" msgstr "Уеб Ñайт на проекта" #: src/bz-full-view.blp:639 msgid "Open in browser" msgstr "ОтварÑне в Интернет браузър" #: src/bz-full-view.c:213 #, c-format msgid "%'d Monthly Downloads" msgstr "%'d меÑечни изтеглÑниÑ" #: src/bz-full-view.c:215 msgid "--- Downloads" msgstr "--- изтеглÑниÑ" #: src/bz-full-view.c:241 msgid "Unknown" msgstr "ÐеизвеÑтно" #. Translators: This is a date format for timestamps from previous years. Used in the app releases section. #. * %B is the full month name, %e is the day, %Y is the year. #. * Example: "October 1, 2025" #. * See https://docs.gtk.org/glib/method.DateTime.format.html for format options #. * Please modify to make it sound natural in your locale. #. * #: src/bz-full-view.c:268 msgid "%B %-d, %Y" msgstr "%-d %B, %Y" #. Translators: This is a date format for timestamps from the current year. Used in the app releases section. #. * %B is the full month name, %e is the day. #. * Example: "October 1" #. * See https://docs.gtk.org/glib/method.DateTime.format.html for format options #. * Please modify to make it sound natural in your locale. #. * #: src/bz-full-view.c:276 msgid "%B %-d" msgstr "%-d %B" #: src/bz-full-view.c:287 msgid "No URL" msgstr "ÐÑма адреÑ" #: src/bz-full-view.c:305 msgid "This application has a FLOSS license, meaning the source code can be audited for safety." msgstr "Това приложение има FLOSS лиценз, което означава, че изходниÑÑ‚ код може да бъде проверен за ÑигурноÑÑ‚." #: src/bz-full-view.c:306 msgid "" "This application has a proprietary license, meaning the source code is developed privately and cannot be audited by an independent third party." msgstr "" "Тази програма има ÑобÑтвеничеÑки лиценз, което означава, че изходниÑÑ‚ код е разработен чаÑтно и не може да бъде проверен от незавиÑими трети " "лица." #: src/bz-full-view.c:596 #, c-format msgid "Version %s" msgstr "ВерÑÐ¸Ñ %s" #: src/bz-full-view.c:621 msgid "No details for this release" msgstr "ÐÑма подробноÑти за това издание" #: src/bz-inspector.blp:5 msgid "Bazaar Inspector" msgstr "Базар инÑпектор" #: src/bz-inspector.blp:22 msgid "Active Blocklists" msgstr "Ðктивни ÑпиÑъци за блокиране" #: src/bz-inspector.blp:44 msgid "Active Curated-Configs" msgstr "" #: src/bz-inspector.blp:66 msgid "All Entry Groups" msgstr "Ð’Ñички групи за запиÑ" #: src/bz-inspector.blp:69 msgid "Filter..." msgstr "Филтриране…" #: src/bz-inspector.blp:110 msgid "Decache and Inspect" msgstr "Декаширане и изÑледване" #: src/bz-installed-page.blp:15 msgid "No Flatpaks Installed" msgstr "ÐÑма инÑталирани Flatpak програми" #: src/bz-installed-page.blp:21 src/bz-window.blp:302 src/bz-window.blp:395 msgid "Installed" msgstr "ИнÑталирани" #: src/bz-installed-page.blp:101 msgid "Support this application" msgstr "Подкрепете тази програма" #: src/bz-installed-page.blp:151 src/bz-window.c:1093 msgid "Remove" msgstr "Премахване" #: src/bz-installed-page.blp:178 msgid "More actions" msgstr "Допълнителни дейÑтвиÑ" #: src/bz-installed-page.blp:197 msgid "Run this application" msgstr "ИзпълнÑване на тази програма" #: src/bz-installed-page.blp:209 msgid "Run" msgstr "ИзпълнÑване" #: src/bz-installed-page.blp:221 src/bz-installed-page.blp:232 msgid "View Store Page" msgstr "Вижте Ñтраницата в магазина" #: src/bz-installed-page.c:649 msgid "Choose an Installation" msgstr "Изберете инÑталациÑ" #: src/bz-installed-page.c:652 msgid "You have multiple versions of this app installed. Which one would you like to proceed with? " msgstr "Имате инÑталирани нÑколко верÑии на тази програма. ÐšÐ¾Ñ Ð¾Ñ‚ Ñ‚ÑÑ… иÑкате да използвате? " #: src/bz-installed-page.c:656 src/bz-window.c:1070 src/bz-window.c:1092 msgid "Cancel" msgstr "Отказване" #: src/bz-preferences-dialog.blp:9 msgid "Preferences" msgstr "ÐаÑтройки" #: src/bz-preferences-dialog.blp:13 msgid "Application Details" msgstr "ПодробноÑти за програмата" #: src/bz-preferences-dialog.blp:16 msgid "Git Forge Star Counts" msgstr "Брой звезди в Git Forge" #: src/bz-preferences-dialog.blp:17 msgid "Not having a GitHub access token may trigger rate limits" msgstr "ЛипÑата на токен за доÑтъп до GitHub може да доведе до Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð½Ð° ÑкороÑтта" #: src/bz-preferences-dialog.blp:22 src/bz-window.blp:43 src/bz-window.blp:58 src/bz-window.blp:334 msgid "Search" msgstr "ТърÑене" #: src/bz-preferences-dialog.blp:26 msgid "Hide proprietary applications from search results" msgstr "Скриване на ÑобÑтвеничеÑките програми от резултатите от търÑенето" #: src/bz-preferences-dialog.blp:30 msgid "Show Only Flathub Apps" msgstr "Показване Ñамо на Flathub програми" #: src/bz-preferences-dialog.blp:31 msgid "Limit search results to applications available on Flathub" msgstr "Ограничаване на резултатите от търÑенето до програмите, налични в Flathub" #: src/bz-preferences-dialog.blp:35 msgid "Debounce Search Results" msgstr "ЗабавÑне на резултатите за търÑене" #: src/bz-preferences-dialog.blp:36 msgid "Wait for a brief pause to reduce system load" msgstr "Изчакване за кратко, за да Ñе намали натоварването на ÑиÑтемата" #: src/bz-preferences-dialog.blp:41 msgid "Global Progress Bar" msgstr "Глобална лента за напредъка" #: src/bz-preferences-dialog.blp:44 msgid "Theme" msgstr "Тема" #: src/bz-preferences-dialog.blp:45 msgid "Choose a fun theme for the global progress bar!" msgstr "Изберете забавна тема за глобалната лента за напредъка!" #: src/bz-preferences-dialog.blp:48 msgid "Accent Color" msgstr "Ðкцентиращ цвÑÑ‚" #: src/bz-preferences-dialog.blp:49 msgid "Pride Rainbow Flag" msgstr "Прайд ЛГБТ флаг" #: src/bz-preferences-dialog.blp:50 msgid "Lesbian Pride Flag" msgstr "" #: src/bz-preferences-dialog.blp:51 msgid "Transgender Flag" msgstr "" #: src/bz-preferences-dialog.blp:52 msgid "Nonbinary Flag" msgstr "" #: src/bz-preferences-dialog.blp:53 msgid "Bisexual Flag" msgstr "" #: src/bz-preferences-dialog.blp:54 msgid "Asexual Flag" msgstr "" #: src/bz-preferences-dialog.blp:55 msgid "Pansexual Flag" msgstr "" #: src/bz-preferences-dialog.blp:56 msgid "Aromantic Flag" msgstr "" #: src/bz-preferences-dialog.blp:57 msgid "Genderfluid Flag" msgstr "" #: src/bz-preferences-dialog.blp:58 msgid "Polysexual Flag" msgstr "" #: src/bz-preferences-dialog.blp:59 msgid "Omnisexual Flag" msgstr "" #: src/bz-search-widget.blp:69 msgid "Search Apps" msgstr "ТърÑете програми" #: src/bz-share-dialog.blp:13 msgid "Share" msgstr "СподелÑне" #: src/bz-share-dialog.c:62 msgid "Copied!" msgstr "Копирано!" #: src/bz-share-dialog.c:106 msgid "Copy Link" msgstr "Копиране на връзката" #: src/bz-share-dialog.c:117 msgid "Open Link" msgstr "ОтварÑне на връзката" #: src/bz-stats-dialog.blp:26 msgid "Timeline" msgstr "ХронологиÑ" #: src/bz-stats-dialog.blp:31 msgid "Installs:" msgstr "ИнÑталации:" #: src/bz-stats-dialog.blp:37 msgid "World" msgstr "Глобално" #: src/bz-transaction-manager.c:1140 #, c-format msgid "Finished in %.02f seconds" msgstr "Завърши за %.02f Ñекунди" #: src/bz-transaction-view.blp:95 msgid "Install Size" msgstr "Размер за инÑталирани" #: src/bz-transaction-view.blp:238 msgid "Error Details" msgstr "ПодробноÑти за грешката" #: src/bz-transaction-view.c:139 #, c-format msgid "Transferred %s so far" msgstr "Прехвърлени Ñа %s до момента" #: src/bz-transaction.c:336 msgid "Pending" msgstr "Ð’ опашката" #: src/bz-update-dialog.blp:7 msgid "Install Now" msgstr "ИнÑталиране Ñега" #: src/bz-update-dialog.blp:10 msgid "Updates Are Available" msgstr "Ðалични Ñа обновлениÑ" #: src/bz-update-dialog.blp:11 msgid "The following applications are eligible for updates. Would you like to install them?" msgstr "Следните програми имат обновлениÑ. ИÑкате ли да ги инÑталирате?" #: src/bz-update-dialog.c:134 #, c-format msgid "%d runtimes and/or addons are eligible for updates. Would you like to install them?" msgstr "%d Ñреди за изпълнение и/или добавки имат обновлениÑ. ИÑкате ли да ги инÑталирате?" #: src/bz-update-dialog.c:142 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "ОÑвен това, %d Ñреди за изпълнение и/или добавки ще бъдат обновени." #: src/bz-window.blp:80 msgid "Transactions" msgstr "Операции" #: src/bz-window.blp:95 src/bz-window.blp:414 msgid "Toggle transaction sidebar" msgstr "Превключване на Ñтраничната лента за операции" #: src/bz-window.blp:131 msgid "Stop Active Tasks" msgstr "Спиране на работещите задачи" #: src/bz-window.blp:139 msgid "Clear History" msgstr "ИзчиÑтване на иÑториÑта" #: src/bz-window.blp:155 msgid "No Tasks Yet" msgstr "Ð’Ñе още нÑма задачи" #: src/bz-window.blp:210 src/bz-window.blp:214 msgid "Offline" msgstr "ÐÑма връзка" #: src/bz-window.blp:220 msgid "Loading" msgstr "Зареждане" #: src/bz-window.blp:268 msgid "Browse" msgstr "Разглеждане" #: src/bz-window.blp:278 msgid "App View" msgstr "Изглед на програмата" #: src/bz-window.blp:292 src/bz-window.blp:388 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:322 msgid "Go Back" msgstr "Ðазад" #: src/bz-window.blp:347 msgid "Update" msgstr "ОбновÑване" #: src/bz-window.blp:377 msgid "View curated applications" msgstr "Вижте подбрани програми" #: src/bz-window.blp:381 msgid "Curated" msgstr "Подбрани" #: src/bz-window.blp:385 msgid "View the latest on Flathub" msgstr "Вижте най-новите програми във Flathub" #: src/bz-window.blp:392 msgid "View installed applications" msgstr "Вижте инÑталираните програми" #: src/bz-window.blp:437 msgid "Main Menu" msgstr "ОÑновно меню" #: src/bz-window.blp:471 msgid "_Quit Service" msgstr "_Спиране на уÑлугата" #: src/bz-window.blp:476 msgid "_Refresh Content" msgstr "_ОпреÑнÑване на Ñъдържанието" #: src/bz-window.blp:481 msgid "_Preferences" msgstr "_ÐаÑтройки" #: src/bz-window.blp:486 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: src/bz-window.blp:491 msgid "_About Bazaar" msgstr "_ОтноÑно Базар" #: src/bz-window.blp:496 msgid "_Donate to Bazaar â¤ï¸" msgstr "_Дарете за Базар â¤ï¸" #: src/bz-window.c:628 msgid "Up to date!" msgstr "Ð’Ñичко е обновено!" #: src/bz-window.c:800 msgid "" "The ability to inspect and install local .flatpak bundle files is coming soon! In the meantime, try running\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "on the command line." msgstr "" "ФункциÑта за проверÑване и инÑталиране на локални .flatpak пакетни файлове ще бъде доÑтъпна Ñкоро! Междувременно, опитайте да изпълните\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "в ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´." #: src/bz-window.c:935 msgid "Can't do that right now!" msgstr "Това дейÑтвие не може да Ñе извърши Ñега!" #: src/bz-window.c:1064 #, c-format msgid "Install %s?" msgstr "ИнÑталиране на %s?" #: src/bz-window.c:1067 msgid "May install additional shared components" msgstr "Може да инÑталира допълнителни Ñподелени компоненти" #: src/bz-window.c:1086 #, c-format msgid "Remove %s?" msgstr "Премахване на %s?" #: src/bz-window.c:1089 msgid "Settings & user data will be kept" msgstr "ÐаÑтройките и потребителÑките данни ще бъдат запазени" #: src/bz-window.c:1257 msgid "Resume Current Tasks" msgstr "ВъзобновÑване на текущите задачи" #: src/bz-window.c:1263 msgid "Pause Current Tasks" msgstr "Пауза на текущите задачи" #: src/bz-world-map.c:523 #, c-format msgid "%s: %'u downloads" msgstr "%s: %'u изтеглÑниÑ" #: src/gtk/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "Общи" #: src/gtk/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "ОтварÑне на търÑачката" #: src/gtk/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Refresh" msgstr "ОпреÑнÑване" #: src/gtk/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "Превключване на мениджъра на операциите" #: src/gtk/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показване на клавишните комбинации" #: src/gtk/shortcuts-dialog.blp:29 msgctxt "shortcut window" msgid "Quit" msgstr "Спиране на програмата" #~ msgid "Show Animated Background" #~ msgstr "Animierten Hintergrund anzeigen" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "Den animierten Hintergrund auf der Startseite anzeigen" #~ msgid "It emphasizes supporting the developers who make the Linux desktop possible." #~ msgstr "Es legt Wert darauf, die Entwickler zu unterstützen, die den Linux-Desktop möglich machen." #~ msgid "Calligraphy application page" #~ msgstr "Calligraphy" #~ msgid "Download graph for Blender" #~ msgstr "Downloadkurve für Blender" #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "%'d Einträge von %'d empfangen (%0.1f Sekunden vergangen)" #~ msgid "Apps Of The Week" #~ msgstr "Anwendungen der Woche" #~ msgid "Show More" #~ msgstr "Mehr anzeigen" #~ msgid "The number of downloads in the last 30 days. Click to view this application's download statistics." #~ msgstr "Die Anzahl der Downloads in den letzten 30 Tagen. Klicken Sie hier, um die Download-Statistiken für diese Anwendung anzuzeigen." #~ msgid "Support this developer" #~ msgstr "Diesen Entwickler unterstützen" #~ msgid "Remote repo name" #~ msgstr "Namen des Repository" #, c-format #~ msgid "Released %x" #~ msgstr "Veröffentlicht %x" #~ msgid "Edit Permissions" #~ msgstr "Berechtigungen bearbeiten" #~ msgid "How the application looks" #~ msgstr "Wie die Anwendung aussieht" #~ msgid "Appearance" #~ msgstr "Erscheinungsbild" #~ msgid "Show animated background" #~ msgstr "Animierten Hintergrund anzeigen" #~ msgid "Type to filter" #~ msgstr "Zum Filtern hier tippen" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Ergebnisse mit proprietären Lizenzen ausschließen" #~ msgid "Exclude results not originating from Flathub" #~ msgstr "Ergebnisse ausschließen, die nicht von Flathub stammen" #~ msgid "Advanced" #~ msgstr "Erweitert" #~ msgid "Open this link externally" #~ msgstr "Diesen Link extern öffnen" #~ msgid "Downloads Over Time" #~ msgstr "Downloads im Laufe der Zeit" #~ msgid "Minimize Lower Bound" #~ msgstr "Untere Grenze verringern" #~ msgid "Maximize Upper Bound" #~ msgstr "Obere Grenze vergrößern" #~ msgid "Installing" #~ msgstr "Wird installiert" #~ msgid "Updating" #~ msgstr "Wird aktualisiert" #~ msgid "Removing" #~ msgstr "Wird entfernt" #~ msgid "Transactions Will Appear Here" #~ msgstr "Transaktionen werden hier erscheinen" #~ msgid "Halt the execution of transactions" #~ msgstr "Die Ausführung von Transaktionen anhalten" #~ msgid "Clear all finished transactions" #~ msgstr "Alle abgeschlossenen Transaktionen leeren" #~ msgid "Confirm Action" #~ msgstr "Aktion bestätigen" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Sie sind dabei, die folgende Anwendung zu entfernen:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Sind Sie sich sicher?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Sie sind dabei, die folgende Anwendung zu installieren:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Sind Sie sich sicher?" #~ msgid "Resume the execution of transactions" #~ msgstr "Die Ausführung von Transaktionen fortsetzen" #~ msgid "Pause the execution of transactions" #~ msgstr "Die Ausführung von Transaktionen pausieren" #~ msgid "No description" #~ msgstr "Keine Beschreibung" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Bazaar-Hauptfenster zeigt Blender" #~ msgid "Match using regular expressions" #~ msgstr "Übereinstimmung mit regulären Ausdrücken" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "Filterung und Sortierung hinter einem Überblendungseffekt verstecken" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/bs.po������������������������������������������������������������������0000664�0000000�0000000�00000034700�15240005042�0016724�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Bosnian translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Manually modified from a previous translation, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-02 08:40+0200\n" "PO-Revision-Date: 2025-09-02 09:06+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: bs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 3.6\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Dodajte, uklonite ili ažurirajte flatpak softver na ovom raÄunaru" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Sistem;UpraviteljPaketa;Otkrijte;Flatpak;Softver;Prodavnica;" #: data/io.github.kolunmi.Bazaar.gschema.xml:6 msgid "Show Animated Background" msgstr "Prikaži animiranu pozadinu" #: data/io.github.kolunmi.Bazaar.gschema.xml:7 msgid "Whether to show the animated icon background on the home page" msgstr "Da li već prikazati animiranu pozadinu ikone na poÄetnoj stranici" #. FIXME: add descriptions and summary #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:9 msgid "Keep the summary shorter, between 10 and 35 characters" msgstr "Sažetak neka bude kraći, izmeÄ‘u 10 i 35 znakova" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:11 msgid "No description" msgstr "Nema opisa" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 src/bz-application.c:1215 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:41 msgid "Main Bazaar window showing Blender" msgstr "Glavni prozor Bazaara koji prikazuje Blender" #: src/bz-addons-dialog.blp:13 src/bz-installed-page.blp:162 #: src/bz-installed-page.blp:174 msgid "Manage Addons" msgstr "Upravljanje dodacima" #: src/bz-app-tile.blp:65 src/bz-full-view.blp:139 msgid "This flatpak is verified by the original developers of the software." msgstr "Ovaj flatpak je verifikovan od strane originalnih programera softvera." #: src/bz-application.c:1186 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:481 msgid "translator-credits" msgstr "SecularSteve" #: src/bz-application.c:1191 msgctxt "About Dialog Translator Credit" msgid "Ahmed Najmawi" msgstr "Ahmed Najmawi" #: src/bz-application.c:1192 msgctxt "About Dialog Translator Credit" msgid "AtomHare" msgstr "AtomHare" #: src/bz-application.c:1193 msgctxt "About Dialog Translator Credit" msgid "Jill Fiore" msgstr "Jill Fiore" #: src/bz-application.c:1194 msgctxt "About Dialog Translator Credit" msgid "Lucosec" msgstr "Lucosec" #: src/bz-application.c:1195 msgctxt "About Dialog Translator Credit" msgid "Shihfu Juan" msgstr "Shihfu Juan" #: src/bz-application.c:1196 msgctxt "About Dialog Translator Credit" msgid "Vlastimil DÄ›dek" msgstr "Vlastimil DÄ›dek" #: src/bz-application.c:1197 msgctxt "About Dialog Translator Credit" msgid "asen23" msgstr "asen23" #: src/bz-application.c:1198 msgctxt "About Dialog Translator Credit" msgid "renner" msgstr "renner" #: src/bz-application.c:1199 msgctxt "About Dialog Translator Credit" msgid "robotta" msgstr "robotta" #: src/bz-browse-widget.blp:11 src/bz-full-view.blp:11 #: src/bz-installed-page.blp:11 src/bz-window.blp:32 msgid "Empty" msgstr "Prazno" #: src/bz-browse-widget.blp:15 msgid "No Curated Applications" msgstr "Nema izloženih aplikacija" #: src/bz-browse-widget.blp:16 msgid "Bazaar was not provided a curated content configuration. Contact your operating system's support channels for assistance." msgstr "Bazaaru nije pružena konfiguracija izloženog sadržaja. Za pomoć kontaktirajte kanale podrÅ¡ke vaÅ¡eg operativnog sistema." #: src/bz-browse-widget.blp:22 src/bz-flathub-page.blp:11 msgid "Browser" msgstr "PretraživaÄ" #: src/error.c:45 msgid "An Error Occurred" msgstr "DoÅ¡lo je do greÅ¡ke" #: src/error.c:51 msgid "Close" msgstr "Zatvori" #: src/error.c:52 msgid "Copy and Close" msgstr "Kopiraj i zatvori" #: src/bz-flathub-page.blp:41 msgid "Apps Of The Week" msgstr "Aplikacije sedmice" #: src/bz-flathub-page.blp:85 msgid "Trending" msgstr "U trendu" #: src/bz-flathub-page.blp:117 msgid "Recently Updated" msgstr "Zadnje ažurirano" #: src/bz-flathub-page.blp:149 msgid "Recently Added" msgstr "Zadnje dodano" #: src/bz-flathub-page.blp:181 msgid "Popular" msgstr "Popularno" #: src/bz-full-view.blp:15 msgid "No Results" msgstr "Nema rezultata" #: src/bz-full-view.blp:16 msgid "Try a different search query" msgstr "PokuÅ¡ajte s drugim upitom za pretragu" #: src/bz-full-view.blp:22 src/bz-window.blp:42 msgid "Content" msgstr "Sadržaj" #: src/bz-full-view.blp:180 msgid "Run this application" msgstr "Pokreni ovu aplikaciju" #: src/bz-full-view.blp:204 msgid "Download and install this application" msgstr "Preuzmite i instalirajte ovu aplikaciju" #: src/bz-full-view.blp:222 src/bz-window.c:987 msgid "Install" msgstr "Instaliraj" #: src/bz-full-view.blp:236 msgid "Uninstall this application" msgstr "Deinstalirajte ovu aplikaciju" #: src/bz-full-view.blp:262 msgid "Share this application" msgstr "Podijelite ovu aplikaciju" #: src/bz-full-view.blp:274 msgid "The number of downloads in the last 30 days. Click to view this application's download statistics." msgstr "Broj preuzimanja u posljednjih 30 dana. Kliknite za pregled statistike preuzimanja ove aplikacije." #: src/bz-full-view.blp:316 msgid "Support this developer" msgstr "Podržite ovog programera" #: src/bz-full-view.blp:329 msgid "Support" msgstr "PodrÅ¡ka" #: src/bz-full-view.blp:387 msgid "Remote repo name" msgstr "Naziv udaljenog repozitorija" #: src/bz-full-view.blp:400 msgid "Project URL" msgstr "URL projekta" #: src/bz-full-view.blp:412 msgid "Download size" msgstr "VeliÄina preuzimanja" #: src/bz-full-view.c:214 #, c-format msgid "Released %x" msgstr "Objavljeno %x" #: src/bz-full-view.c:225 msgid "No URL" msgstr "Nema URL-a" #: src/bz-full-view.c:233 msgid "This application has a FLOSS license, meaning the source code can be audited for safety." msgstr "Ova aplikacija ima FLOSS licencu, Å¡to znaÄi da se izvorni kod može revidirati radi sigurnosti." #: src/bz-full-view.c:234 msgid "This application has a proprietary license, meaning the source code is developed privately and cannot be audited by an independent third party." msgstr "Ova aplikacija ima vlasniÄku licencu, Å¡to znaÄi da je izvorni kod razvijen privatno i ne može ga revidirati nezavisna treća strana." #: src/bz-installed-page.blp:15 msgid "No Flatpaks Installed" msgstr "Nema instaliranih Flatpak ureÄ‘aja" #: src/bz-installed-page.blp:21 src/bz-window.blp:201 src/bz-window.blp:336 msgid "Installed" msgstr "Instalirano" #: src/bz-installed-page.blp:143 msgid "More actions" msgstr "ViÅ¡e akcija" #: src/bz-installed-page.blp:187 src/bz-installed-page.blp:198 msgid "Edit Permissions" msgstr "Uredi dozvole" #: src/bz-preferences-dialog.blp:9 msgid "Preferences" msgstr "Postavke" #: src/bz-preferences-dialog.blp:13 msgid "How the application looks" msgstr "Kako izgleda aplikacija" #: src/bz-preferences-dialog.blp:14 msgid "Appearance" msgstr "Izgled" #: src/bz-preferences-dialog.blp:17 msgid "Show animated background" msgstr "Prikaži animiranu pozadinu" #: src/bz-search-widget.blp:69 msgid "Type to filter" msgstr "UpiÅ¡ite tekst za filtriranje" #: src/bz-search-widget.blp:98 src/bz-search-widget.blp:115 msgid "Search Options" msgstr "Opcije pretrage" #: src/bz-search-widget.blp:119 msgid "Exclude results with proprietary licenses" msgstr "IskljuÄi rezultate s vlasniÄkim licencama" #: src/bz-search-widget.blp:124 msgid "Exclude results not originating from Flathub" msgstr "IskljuÄi rezultate koji ne potiÄu sa Flathub-a" #: src/bz-search-widget.blp:139 msgid "Advanced" msgstr "Napredno" #: src/bz-search-widget.blp:143 msgid "Match using regular expressions" msgstr "Uparivanje pomoću obiÄnih izraza" #: src/bz-search-widget.blp:148 msgid "Hide filtering and sorting behind a crossfade effect" msgstr "Sakrij filtriranje i sortiranje iza efekta prelaza" #: src/bz-search-widget.blp:153 msgid "Debounce input to prevent instant replies" msgstr "OtodskoÄite unos kako bi se sprijeÄili brzi odgovori" #: src/bz-share-dialog.blp:13 msgid "Share" msgstr "Podijeli" #: src/bz-share-dialog.blp:64 msgid "Copy this link" msgstr "Kopiraj ovu vezu" #: src/bz-share-dialog.blp:71 msgid "Open this link externally" msgstr "Otvorite ovu vezu eksterno" #: src/bz-stats-dialog.blp:15 msgid "Downloads Over Time" msgstr "Preuzimanja tokom vremena" #: src/bz-stats-dialog.blp:31 msgid "Minimize Lower Bound" msgstr "Minimiziraj donju granicu" #: src/bz-stats-dialog.blp:36 msgid "Maximize Upper Bound" msgstr "Maksimiziraj gornju granicu" #: src/bz-transaction-manager.c:451 #, c-format msgid "Finished in %.02f seconds" msgstr "ZavrÅ¡eno za %.02f sekundi" #: src/bz-transaction-view.blp:34 msgid "Installing" msgstr "Instaliranje" #: src/bz-transaction-view.blp:63 msgid "Updating" msgstr "Ažuriranje" #: src/bz-transaction-view.blp:92 msgid "Removing" msgstr "Uklanjanje" #: src/bz-transaction.c:268 msgid "Pending" msgstr "Na Äekanju" #: src/bz-update-dialog.blp:6 msgid "Later" msgstr "Kasnije" #: src/bz-update-dialog.blp:7 msgid "Install Now" msgstr "Instaliraj odmah" #: src/bz-update-dialog.blp:10 msgid "Updates Are Available" msgstr "Dostupna su ažuriranja" #: src/bz-update-dialog.blp:11 msgid "The following applications are eligible for updates. Would you like to install them?" msgstr "Sljedeće aplikacije ispunjavaju uslove za ažuriranja. Želite li ih instalirati?" #: src/bz-update-dialog.c:135 #, c-format msgid "%d runtimes and/or addons are eligible for updates. Would you like to install them?" msgstr "%d okruženja za izvrÅ¡avanje i/ili dodaci ispunjavaju uslove za ažuriranja. Želite li ih instalirati?" #: src/bz-update-dialog.c:143 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "Pored toga, ažurirat će se i sljedeći broj runtime okruženja i/ili dodataka: %d." #: src/bz-window.blp:36 msgid "Transactions Will Appear Here" msgstr "Transakcije će se pojaviti ovdje" #: src/bz-window.blp:97 msgid "Halt the execution of transactions" msgstr "Zaustaviti izvrÅ¡enje transakcija" #: src/bz-window.blp:105 msgid "Clear all finished transactions" msgstr "ObriÅ¡i sve zavrÅ¡ene transakcije" #: src/bz-window.blp:136 src/bz-window.blp:140 msgid "Offline" msgstr "Bez mreže" #: src/bz-window.blp:146 msgid "Loading" msgstr "UÄitavanje" #: src/bz-window.blp:170 msgid "Browse" msgstr "Pregledaj" #: src/bz-window.blp:180 msgid "App View" msgstr "Prikaz aplikacije" #: src/bz-window.blp:191 src/bz-window.blp:315 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:220 msgid "Go Back" msgstr "Idi nazad" #: src/bz-window.blp:228 msgid "Refresh" msgstr "Osvježi" #: src/bz-window.blp:237 msgid "Search" msgstr "Pretraži" #: src/bz-window.blp:249 msgid "Update" msgstr "Ažuriraj" #: src/bz-window.blp:263 msgid "Checking for updates" msgstr "Provjera ažuriranja" #: src/bz-window.blp:279 msgid "View curated applications" msgstr "Pogledajte izložene aplikacije" #: src/bz-window.blp:294 msgid "Curated" msgstr "Izloženo" #: src/bz-window.blp:300 msgid "View the latest on Flathub" msgstr "Pogledajte najnovije na Flathub-u" #: src/bz-window.blp:321 msgid "View installed applications" msgstr "Pogledajte instalirane aplikacije" #: src/bz-window.blp:350 msgid "Main Menu" msgstr "Glavni meni" #: src/bz-window.blp:361 msgid "Toggle transaction sidebar" msgstr "UkljuÄi/iskljuÄi boÄnu traku transakcija" #: src/bz-window.blp:400 msgid "Up to date!" msgstr "Ažurno!" #: src/bz-window.blp:425 msgid "_Keyboard Shortcuts" msgstr "_PreÄice na tastaturi" #: src/bz-window.blp:430 msgid "_About Bazaar" msgstr "_O Bazaar-u" #: src/bz-window.blp:435 msgid "_Donate to Bazaar â¤ï¸" msgstr "_Donirajte Bazaaru â¤ï¸" #: src/bz-window.c:856 msgid "" "The ability to inspect and install local .flatpak bundle files is coming soon! In the meantime, try running\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "on the command line." msgstr "" "Mogućnost pregleda i instaliranja lokalnih .flatpak datoteka paketa uskoro stiže! U meÄ‘uvremenu, pokuÅ¡ajte pokrenuti\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "u komandnom redu." #: src/bz-window.c:927 msgid "Can't do that right now!" msgstr "To se sada ne može uraditi!" #: src/bz-window.c:940 msgid "Confirm Action" msgstr "Potvrdi radnju" #: src/bz-window.c:958 #, c-format msgid "" "You are about to remove the following Flatpak:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "Are you sure?" msgstr "" "Namjeravate ukloniti sljedeći Flatpak:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "Jeste li sigurni?" #: src/bz-window.c:966 src/bz-window.c:986 msgid "Cancel" msgstr "Otkaži" #: src/bz-window.c:967 msgid "Remove" msgstr "Ukloni" #: src/bz-window.c:978 #, c-format msgid "" "You are about to install the following Flatpak:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "Are you sure?" msgstr "" "Instalirat ćete sljedeći Flatpak:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "Jeste li sigurni?" #: src/bz-window.c:1012 msgid "More details" msgstr "ViÅ¡e detalja" #: src/bz-window.c:1138 msgid "Resume the execution of transactions" msgstr "Nastavite izvrÅ¡avanje transakcija" #: src/bz-window.c:1144 msgid "Pause the execution of transactions" msgstr "Pauzirajte izvrÅ¡avanje transakcija" #: src/gtk/help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Općenito" #: src/gtk/help-overlay.blp:14 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "Otvori dijalog za pretragu" #: src/gtk/help-overlay.blp:19 msgctxt "shortcut window" msgid "Refresh" msgstr "Osvježi" #: src/gtk/help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "UkljuÄi/iskljuÄi Upravitelja za transakcije" #: src/gtk/help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Prikaži preÄice" #: src/gtk/help-overlay.blp:34 msgctxt "shortcut window" msgid "Quit" msgstr "Odustani" ����������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/cs.po������������������������������������������������������������������0000664�0000000�0000000�00000305101�15240005042�0016721�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Czech translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Vlastimil DÄ›dek <dedek.vlastimil2@proton.me>, 2025. # Pavel Borecki <pavel@borecki.cz>, 2026. # Daniel Rusek <mail@asciiwolf.com>, 2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: https://github.com/bazaar-org/bazaar/issues\n" "POT-Creation-Date: 2026-08-11 13:49+0000\n" "PO-Revision-Date: 2026-08-12 01:14+0200\n" "Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n" "Language-Team: Czech\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Poedit 3.9\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "Obchod s aplikacemi" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "" "PÅ™idávejte, odstraňujte nebo aktualizujte software z flatpaků na tomto " "poÄítaÄi" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "Systém;Správce;BalíÄků;Discover;Flatpak;Software;Aplikace;Obchod;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Nové okno" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Objevujte a instalujte aplikace" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Rychlý a moderní obchod s aplikacemi pro Linux se zaměřením na objevování a " "instalaci aplikací a doplňků Flatpaku, zejména z Flathubu." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "ZaÅ™aÄte více instalací do fronty a pokraÄujte v prohlížení" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "JednoduÅ¡e si zobrazte oprávnÄ›ní aplikací" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "" "PÅ™ihlaste se pomocí Flathubu pro zobrazení a správu oblíbených aplikací" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Vyhledávejte aplikace přímo z GNOME Shellu" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:771 msgid "The Bazaar Contributors" msgstr "PÅ™ispÄ›vatelé aplikace Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Domovská stránka zobrazující aplikace Flathubu" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "App page for Exhibit" msgstr "Stránka aplikace Exhibit" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Stránka knihovny" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Stránka hledání" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Stránka kategorií" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Příjem aktualizací zastaven" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Odinstalovat" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Instalovat" #: src/bz-addons-dialog.blp:7 msgid "Add-on" msgstr "DoplnÄ›k" #: src/bz-addons-dialog.blp:15 src/bz-addons-dialog.blp:22 #: src/bz-addons-dialog.blp:71 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Spravovat doplňky" #: src/bz-addons-dialog.blp:81 msgid "No Add-Ons Visible" msgstr "Žádné viditelné doplňky" #: src/bz-addons-dialog.blp:82 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "VaÅ¡e aktuální nastavení filtrů skrývají vÅ¡echny známé doplňky. Zkuste je " "upravit." #: src/bz-addons-dialog.blp:89 msgid "Add-on Page" msgstr "Stránka doplňků" #: src/bz-addons-dialog.blp:205 src/bz-full-view.blp:408 msgid "Downloads/Month" msgstr "Stažení/mÄ›síc" #: src/bz-addons-dialog.blp:232 src/bz-full-view.blp:444 msgid "Stopped Receiving Core Updates" msgstr "Příjem základních aktualizací zastaven" #: src/bz-addons-dialog.blp:246 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Tento doplnÄ›k používá bÄ›hové prostÅ™edí, které již nedostává aktualizace ani " "opravy zabezpeÄení. Jeho používání nemusí být bezpeÄné." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "DoplnÄ›k pro %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Zobrazit ménÄ›" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Zobrazit více" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Statistiky stahování" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:737 src/context-tile-callbacks.c:187 #: src/context-tile-callbacks.c:194 msgid "Age Rating" msgstr "Vhodné od vÄ›ku" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Kreslené násilí" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Bez informací o kresleném násilí" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Násilí ve fantasy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Bez informací o násilí ve fantasy" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Realistické násilí" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Bez informací o realistickém násilí" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Násilí zobrazující krvácení" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Bez informací o krvácení" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Sexuální násilí" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Bez informací o sexuálním násilí" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alkohol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Bez informací o odkazech na alkohol" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Narkotika" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Bez informací o odkazech na nezákonné drogy" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabák" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Bez informací o odkazech na tabákové produkty" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nahota" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Bez informací o nahotÄ› jakéhokoliv typu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Sexuální tématika" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Bez informací o odkazech na nebo vyobrazení sexuální tématiky" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Vulgarismy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Bez informací o vulgaritách jakéhokoliv typu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "NepÅ™iměřený humor" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Bez informací o nepÅ™iměřeném humoru" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Diskriminace" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Bez informací o diskriminaÄních projevech jakéhokoliv typu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Reklamy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Bez informací o reklamách jakéhokoliv typu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Hazard" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Bez informací o hazardu jakéhokoliv typu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Nakupování" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Bez informací o možnosti utrácet peníze" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Konverzace mezi uživateli" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Bez informací o způsobech konverzace mezi uživateli" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Hlasová konverzace mezi uživateli" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Bez informací o způsobech hlasové komunikace mezi uživateli" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Kontaktní údaje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Bez informací o sdílení uživatelských jmen ze sociálních sítí nebo e-" "mailových adres" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "IdentifikaÄní údaje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "Bez informací o sdílení údajů o uživatelích se tÅ™etími stranami" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Sdílení polohy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "Bez informací o sdílení fyzické polohy s ostatními uživateli" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostituce" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Bez informací o odkazech na prostituci" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Cizoložství" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Bez informací o odkazech na cizoložství" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Sexualizované postavy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Bez informací o sexualizovaných postavách" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "ZnesvÄ›cení" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Bez informací o odkazech na znesvÄ›cení" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Lidské ostatky" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Bez informací o viditelných ostatcích mrtvých lidí" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Otroctví" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Bez informací o odkazech na otroctví" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Neobsahuje odkazy na drogy" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Neobsahuje nadávky, vulgarity ani jiné hrubé výrazy" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Neobsahuje reklamy ani peněžní operace" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Neobsahuje sex a nahotu" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Neobsahuje funkci neusmÄ›rňované konverzace" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Neobsahuje násilí" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drogy" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Hrubé výrazy" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Peníze" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Sociální sítÄ›" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Násilí" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:177 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:712 msgctxt "Age rating" msgid "All" msgstr "VÅ¡e" #: src/bz-age-rating-dialog.c:748 #, c-format msgid "%s has an unknown age rating" msgstr "Aplikace %s má neznámé vÄ›kové hodnocení" #: src/bz-age-rating-dialog.c:754 #, c-format msgid "%s is suitable for everyone" msgstr "Aplikace %s je vhodná pro každého" #: src/bz-age-rating-dialog.c:757 #, c-format msgid "%s is suitable for young children" msgstr "Aplikace %s je vhodná pro malé dÄ›ti" #: src/bz-age-rating-dialog.c:760 #, c-format msgid "%s is suitable for children" msgstr "Aplikace %s je vhodná pro dÄ›ti" #: src/bz-age-rating-dialog.c:763 #, c-format msgid "%s is suitable for teenagers" msgstr "Aplikace %s je vhodná pro dospívající mládež" #: src/bz-age-rating-dialog.c:766 #, c-format msgid "%s is suitable for adults" msgstr "Aplikace %s je vhodná pro dospÄ›lé" #: src/bz-age-rating-dialog.c:769 #, c-format msgid "%s is suitable for %s" msgstr "Aplikace %s je vhodná pro %s" #: src/bz-age-rating-dialog.c:868 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Systémová složka %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Podsložka %s v domovské složce" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Složky hostitelského systému" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Konfigurace hostitelského systému z /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Podsložka %s ve složce plochy" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Složka plochy" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Podsložka %s ve složce dokumentů" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Složka dokumentů" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Podsložka %s ve složce hudby" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Složka hudby" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Podsložka %s ve složce obrázků" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Složka obrázků" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Podsložka %s ve složce veÅ™ejnÄ› sdílených" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Složka veÅ™ejnÄ› sdílených" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Podsložka %s ve složce videí" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Složka videí" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Podsložka %s ve složce Å¡ablon" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Složka Å¡ablon" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Podsložka %s ve složce uživatelské mezipamÄ›ti" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Složka uživatelské mezipamÄ›ti" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Podsložka %s ve složce uživatelské konfigurace" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Složka uživatelské konfigurace" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Podsložka %s ve složce uživatelských dat" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Složka uživatelských dat" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Podsložka %s v uživatelské složce pro bÄ›h aplikací" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Uživatelská složka pro bÄ›h aplikací" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Přístup k souborovému systému v %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Neznámá cesta souborového systému" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Stahovaná velikost" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Instalovaná velikost" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "Velikost ke stažení z internetu" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Velikost na disku" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Otevřít složku uživatelských dat" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "VaÅ¡e uživatelská data" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "MezipamÄ›ti, nastavení a další data aplikací" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Mezipaměť" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "DoÄasná data v mezipamÄ›ti" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "Vymazat mezipaměť" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Instalovaná velikost prostÅ™edí" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Stahovaná velikost prostÅ™edí" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:394 #: src/context-tile-callbacks.c:416 msgid "N/A" msgstr "N/A" #: src/bz-app-size-dialog.c:195 src/bz-app-size-dialog.c:208 msgid "Storage" msgstr "ÚložiÅ¡tÄ›" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Ověřeno" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:136 msgid "Installed" msgstr "Nainstalováno" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:774 msgid "translator-credits" msgstr "" "Vlastimil DÄ›dek <dedek.vlastimil2@proton.me>, 2025\n" "Pavel Borecki <pavel@borecki.cz>, 2026\n" "Daniel Rusek <mail@asciiwolf.com>, 2026" #: src/bz-application.c:784 msgid "Special Thanks" msgstr "Zvláštní podÄ›kování patří" #: src/bz-application.c:842 msgid "Logged Out Successfully!" msgstr "ÚspěšnÄ› odhlášeni!" #: src/bz-application.c:1048 msgid "Ubuntu Troubles!" msgstr "Problémy s Ubuntu!" #: src/bz-application.c:1051 msgid "" "Ubuntu 25.10 and newer have messed up default security rules, making it " "<b>impossible to install apps</b> from the Flatpak version of Bazaar, please " "just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Ubuntu 25.10 a novÄ›jší mají poruÅ¡ená výchozí bezpeÄnostní pravidla, takže " "<b>není možné instalovat aplikace</b> z Flatpak verze Bazaaru. Prozatím " "prosím použijte normální balíÄek pomocí\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "Tuto Flatpak verzi pak můžete odstranit pomocí\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1057 msgid "Continue Anyway" msgstr "PÅ™esto pokraÄovat" #: src/bz-application.c:1073 msgid "Performing setup…" msgstr "Provádí se nastavení…" #: src/bz-application.c:1172 msgid "Set Up System Flathub?" msgstr "Nastavit systémový Flathub?" #: src/bz-application.c:1175 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Systémový repozitář Flathub není nastaven. Bazaar vyžaduje, aby byl Flathub " "nastaven na systémové Flatpak instalaci pro procházení a instalaci " "aplikací.\n" "\n" "Bazaar můžete i nadále používat k procházení a odstraňování již " "nainstalovaných aplikací." #: src/bz-application.c:1182 msgid "Set Up Flathub?" msgstr "Nastavit Flathub?" #: src/bz-application.c:1185 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub není v tomto systému nastaven. Pokud není k dispozici, nebudete moci " "procházet a instalovat aplikace v Bazaaru.\n" "\n" "Bazaar můžete i nadále používat k procházení a odstraňování již " "nainstalovaných aplikací." #: src/bz-application.c:1191 msgid "Later" msgstr "PozdÄ›ji" #: src/bz-application.c:1192 msgid "Set Up Flathub" msgstr "Nastavit Flathub" #: src/bz-application.c:1726 msgid "A backend error occurred" msgstr "DoÅ¡lo k chybÄ› backendu" #: src/bz-application.c:1934 src/bz-application.c:4204 msgid "Refreshing…" msgstr "Obnovuje se…" #: src/bz-application.c:2098 #, c-format msgid "Loading %d apps…" msgstr "NaÄítá se %d aplikací…" #: src/bz-application.c:2151 src/bz-application.c:2225 msgid "Failed to open file" msgstr "NezdaÅ™ilo se otevřít soubor" #: src/bz-application.c:2239 msgid "Failed to load metainfo" msgstr "NezdaÅ™ilo se naÄíst metainfo" #: src/bz-application.c:2333 msgid "An initialization error occurred" msgstr "DoÅ¡lo k chybÄ› inicializace" #: src/bz-application.c:2732 msgid "Checking for updates…" msgstr "Kontrolují se aktualizace…" #: src/bz-application.c:2788 msgid "Failed to check for updates" msgstr "NezdaÅ™ilo se zkontrolovat aktualizace" #: src/bz-application.c:3975 msgid "Malformed Link" msgstr "Å patnÄ› formátovaný odkaz" #: src/bz-application.c:3976 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Odkaz použitý k otevÅ™ení této aplikace má nesprávné velké písmeno a v " "budoucnu může pÅ™estat fungovat.\n" "\n" "To je pravdÄ›podobnÄ› způsobeno tím, že KRunner odesílá nesprávná ID aplikací" #: src/bz-application.c:3984 msgid "Could not find app" msgstr "NezdaÅ™ilo se najít aplikaci" #: src/bz-application.c:4201 #, c-format msgid "Loading %d app…" msgid_plural "Loading %d apps…" msgstr[0] "NaÄítá se %d aplikace…" msgstr[1] "NaÄítají se %d aplikace…" msgstr[2] "NaÄítá se %d aplikací…" #: src/bz-application.c:4206 msgid "Writing to cache…" msgstr "Zapisuje se do mezipamÄ›ti…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Zobrazit vÅ¡e" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "VÅ¡echny „%s“" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d aplikací" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "NezdaÅ™ilo se naÄíst Älánek" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Instalace balíÄku" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "DodateÄné závislosti mohou zabírat další místo" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Instalace této aplikace může vyžadovat pÅ™idání nového zdroje softwaru. " "Ostatní aplikace z tohoto zdroje se zobrazí v Bazaaru.\n" "\n" "Tento zdroj pÅ™idejte, pouze pokud jste si jisti, že mu důvěřujete." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "ÚspěšnÄ› nainstalováno!" #. TRANSLATORS: Button to launch an installed app #: src/bz-bundle-install-dialog.blp:438 src/bz-bundle-install-dialog.blp:524 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:300 msgid "Open" msgstr "Otevřít" #: src/bz-bundle-install-dialog.blp:448 src/bz-bundle-install-dialog.blp:534 msgid "Show App Details" msgstr "Zobrazit podrobnosti o aplikaci" #: src/bz-bundle-install-dialog.blp:499 msgid "Already Installed" msgstr "Již nainstalováno" #: src/bz-bundle-install-dialog.blp:546 msgid "Installation Failed" msgstr "Instalace se nezdaÅ™ila" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Neznámá velikost instalace" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "PÅ™ibližnÄ› %s k instalaci" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Žádná zvláštní oprávnÄ›ní" #: src/bz-curated-view.blp:27 msgid "No Curation" msgstr "Žádné vybrané aplikace" #: src/bz-curated-view.blp:29 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "V tomto systému nejsou k dispozici žádné informace o vybraných aplikacích. " "Aplikace si stále můžete prohlížet na Flathubu" #: src/bz-curated-view.blp:33 msgid "Browse Flathub" msgstr "Procházet Flathub" #: src/bz-curated-view.blp:49 msgid "Offline" msgstr "Off-line" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Neověřeno" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Informace o vývojáři nejsou k dispozici." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "Vlastnictví ID aplikace %s nebylo ověřeno a může se jednat o komunitní " "balíÄek." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "Vlastnictví ID aplikace %s bylo ruÄnÄ› ověřeno týmem Flathubu." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "Vlastnictví ID aplikace %1$s bylo ověřeno uživatelem <b>%2$s</b> na <b>%3$s</" "b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "Vlastnictví ID aplikace %1$s bylo ověřeno pomocí %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Vlastnictví ID aplikace %s bylo ověřeno." #: src/bz-donations-dialog.blp:7 msgid "Bazaar Release" msgstr "Vydání Bazaaru" #: src/bz-donations-dialog.blp:77 msgid "Full Release Notes" msgstr "Úplné poznámky k vydání" #: src/bz-donations-dialog.blp:112 msgid "This release was made possible by users like you!" msgstr "Toto vydání bylo možné díky uživatelům, jako jste vy!" #: src/bz-donations-dialog.blp:121 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Miluji vytváření Bazaaru, ale nedokážu to sám. Pomozte podpoÅ™it další vývoj " "darováním na Ko-Fi." #: src/bz-donations-dialog.blp:136 msgid "Donate to Bazaar" msgstr "PodpoÅ™it Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:228 #, c-format msgid "What's New in %s?" msgstr "Co je nového ve verzi %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:244 msgid "Released %B %-e, %Y" msgstr "Vydáno %-e. %B %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Vyberte instalaci" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Máte nainstalováno nÄ›kolik verzí této aplikace. S kterou chcete pokraÄovat?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "ZruÅ¡it" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Pouze pro tohoto uživatele" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "tento uživatel" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "vÅ¡ichni uživatelé" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:100 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Podrobnosti" #. TRANSLATORS: tooltip for a button that copies text to the clipboard #: src/bz-error-dialog.blp:48 msgid "Copy" msgstr "Kopírovat" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Zkopírováno!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "PoÄet oblíbených" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Aktualizace oblíbených se nezdaÅ™ila" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "PÅ™ihlaste se pomocí Flathubu pro správu oblíbených aplikací" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "PÅ™ihlásit se" #: src/bz-favorites-page.blp:5 src/bz-window.blp:348 msgid "Favorites" msgstr "Oblíbené" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Instalovat vÅ¡e" #: src/bz-favorites-page.blp:47 msgid "No Favorites" msgstr "Žádné oblíbené aplikace" #: src/bz-favorites-page.blp:48 msgid "Applications you mark as favorite will appear here" msgstr "Aplikace, které oznaÄíte jako oblíbené, se zobrazí zde" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "PodpoÅ™it tuto aplikaci" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Odebrat z oblíbených" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Odebrání z oblíbených se nezdaÅ™ilo" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "PÅ™edchozí" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Další" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Úprava" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mixer" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Hudba" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "PÅ™ehrávaÄ" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Záznamník" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Sekvencer" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Tuner" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Emulace" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "AkÄní" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Adventury" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arkádové" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Blokové" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Deskové" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Karetní" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "DÄ›tské" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Logické" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Na hrdiny" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "StříleÄky" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulace" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Sporty" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Strategické" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "ProhlížeÄe" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Konverzace" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "PoÅ¡ta" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Sdílení souborů" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Audio a video" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Multimédia" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Více z Audio a video" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Vývojářské nástroje" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Vývoj" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Více z Vývojářské nástroje" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "VzdÄ›lávání" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "UÄení" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Více z VzdÄ›lávání" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Hraní her" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Hraní" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Více z Hraní her" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafika a fotografie" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Vytváření" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Více z Grafika a fotografie" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Síť" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Více z Síť" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Produktivita" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Práce" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Více z Produktivita" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "VÄ›da" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Více z VÄ›da" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Systém" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Více z Systém" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Utility" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:439 msgid "Tools" msgstr "Nástroje" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Více z Utility" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:111 #: src/bz-flathub-page.blp:143 msgid "Trending" msgstr "Trendy" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Více z Trendů" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:117 #: src/bz-flathub-page.blp:176 msgid "Popular" msgstr "Populární" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Více z Populárních" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:165 msgid "Recently Added" msgstr "Nedávno pÅ™idané" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:123 msgid "New" msgstr "Nové" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Více z Nových" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:154 msgid "Recently Updated" msgstr "Nedávno aktualizované" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:129 msgid "Updated" msgstr "Aktualizované" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Více z Aktualizovaných" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Mobilní" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Více z Mobilních" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Více z Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "KDE aplikace" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Více z KDE aplikací" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:421 msgid "Games" msgstr "Hry" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:481 msgid "More Games" msgstr "Více z Her" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:427 msgid "Emulators" msgstr "Emulátory" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Více z Emulátorů" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:433 msgid "Launchers" msgstr "SpouÅ¡tÄ›Äe" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Více z Herních spouÅ¡tÄ›Äů" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Herní nástroje" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Více z Herních nástrojů" #: src/bz-flathub-curated-section.c:65 msgid "New Year, New Workflows" msgstr "S novým rokem nové postupy" #: src/bz-flathub-curated-section.c:65 msgid "Apps to take notes, track tasks, and make plans" msgstr "" "Aplikace pro poÅ™izování poznámek, udržování si pÅ™ehledu o úkolech a plánování" #: src/bz-flathub-curated-section.c:66 msgid "Staff Picks" msgstr "NaÅ¡e tipy" #: src/bz-flathub-curated-section.c:66 msgid "Apps we love right now" msgstr "Aplikace, které jsme si nyní oblíbili" #: src/bz-flathub-curated-section.c:67 msgid "Get Creative" msgstr "BuÄte tvoÅ™iví" #: src/bz-flathub-curated-section.c:67 msgid "Essential apps for drawing, editing photos, and digital design" msgstr "Nezbytné aplikace pro kreslení, upravování fotek a digitální design" #: src/bz-flathub-curated-section.c:68 msgid "Build Native Apps" msgstr "Vytvářejte nativní aplikace" #: src/bz-flathub-curated-section.c:68 msgid "Develop apps that feel at home on your system" msgstr "Vyvíjejte aplikace, které dobÅ™e zapadají do vaÅ¡eho systému" #: src/bz-flathub-curated-section.c:69 msgid "Stay in Touch" msgstr "Zůstaňte v kontaktu" #: src/bz-flathub-curated-section.c:69 msgid "Essential collaboration and communication apps" msgstr "Nezbytné aplikace pro spolupráci a komunikaci" #: src/bz-flathub-curated-section.c:70 msgid "Ready for Vacations" msgstr "PÅ™ipraveni na dovolenou" #: src/bz-flathub-curated-section.c:70 msgid "Maps, transit, weather, and trip planning apps" msgstr "Aplikace pro mapy, informace o dopravÄ›, poÄasí a plánování výletů" #: src/bz-flathub-curated-section.c:71 msgid "Smarter Every Day" msgstr "Každým dnem chytÅ™ejší" #: src/bz-flathub-curated-section.c:71 msgid "Apps to help you study, research, and write" msgstr "Aplikace pro pomoc se studiem, výzkumem a sepisováním" #: src/bz-flathub-curated-section.c:72 msgid "Get Cozy" msgstr "UdÄ›lejte si pohodlí" #: src/bz-flathub-curated-section.c:72 msgid "Great apps for reading, watching movies, and playing games" msgstr "SkvÄ›lé aplikace pro Ätení, sledování filmů a hraní her" #: src/bz-flathub-curated-section.c:73 msgid "Web Developer Essentials" msgstr "Nezbytné pro webové vývojáře" #: src/bz-flathub-curated-section.c:73 msgid "Making websites is more fun with these apps" msgstr "S tÄ›mito aplikacemi je tvorba webových stránek zábavnÄ›jší" #: src/bz-flathub-curated-section.c:74 msgid "Take Better Notes" msgstr "DÄ›lejte si lepší poznámky" #: src/bz-flathub-curated-section.c:74 msgid "Find your new favorite note taking tool" msgstr "NajdÄ›te si svůj nový oblíbený nástroj pro zapisování poznámek" #: src/bz-flathub-curated-section.c:75 msgid "Get Focused" msgstr "SoustÅ™eÄte se" #: src/bz-flathub-curated-section.c:75 msgid "Great apps for task management" msgstr "SkvÄ›lé aplikace pro správu úkolů" #: src/bz-flathub-curated-section.c:76 msgid "Make Some Noise" msgstr "BuÄte slyÅ¡et" #: src/bz-flathub-curated-section.c:76 msgid "Apps for creating and producing music" msgstr "Aplikace pro vytváření a produkování hudby" #: src/bz-flathub-curated-section.c:77 msgid "Get To Work" msgstr "Do práce" #: src/bz-flathub-curated-section.c:77 msgid "Essential office apps" msgstr "Nezbytné kancelářské aplikace" #: src/bz-flathub-page.blp:22 msgid "Flathub Not Added" msgstr "Flathub nebyl pÅ™idán" #: src/bz-flathub-page.blp:23 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Repozitář Flathubu nebyl nalezen v žádné z vaÅ¡ich instalací Flatpaku" #: src/bz-flathub-page.blp:32 msgid "Can't Reach Flathub" msgstr "Nelze se pÅ™ipojit k Flathubu" #: src/bz-flathub-page.blp:33 msgid "You can still manage and search for apps." msgstr "Stále vÅ¡ak můžete spravovat a vyhledávat aplikace." #: src/bz-flathub-page.blp:39 msgid "Search Apps" msgstr "Hledat aplikace" #: src/bz-flathub-page.blp:50 msgid "Reconnect" msgstr "Znovu pÅ™ipojit" #: src/bz-flathub-page.blp:204 msgid "App of the Day" msgstr "Aplikace dne" #: src/bz-flathub-page.blp:267 msgid "On the Go" msgstr "Na cestách" #: src/bz-flathub-page.blp:279 msgid "Apps for your Linux phones and tablets" msgstr "Aplikace pro vaÅ¡e linuxové telefony a tablety" #: src/bz-flathub-page.blp:290 src/bz-flathub-page.blp:325 msgid "More Mobile Apps" msgstr "Více z Mobilních aplikací" #: src/bz-flathub-page.blp:383 msgid "We​ ♥​ Games" msgstr "Máme ♥​ hry" #: src/bz-flathub-page.blp:396 msgid "Games and apps to run your favorite titles" msgstr "Hry a aplikace pro spuÅ¡tÄ›ní vaÅ¡ich oblíbených titulů" #: src/bz-full-view.blp:33 msgid "No Results" msgstr "Žádné výsledky" #: src/bz-full-view.blp:34 msgid "Try a different search query" msgstr "Zkuste jiný dotaz" #: src/bz-full-view.blp:103 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Toto je místní náhled, nÄ›které podrobnosti se mohou liÅ¡it od zveÅ™ejnÄ›né verze" #: src/bz-full-view.blp:106 msgid "Preview Store Appearance" msgstr "Náhled vzhledu obchodu" #: src/bz-full-view.blp:233 msgid "_Support" msgstr "_PodpoÅ™it" #: src/bz-full-view.blp:458 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Tato aplikace používá bÄ›hové prostÅ™edí, které již nedostává aktualizace ani " "opravy zabezpeÄení. Její používání nemusí být bezpeÄné." #: src/bz-full-view.blp:536 msgid "Trash Data" msgstr "Vymazat data" #: src/bz-full-view.blp:599 msgid "Add-ons" msgstr "Doplňky" #: src/bz-full-view.blp:634 msgid "More Add-Ons" msgstr "Více doplňků" #: src/bz-full-view.blp:645 msgid "Links" msgstr "Odkazy" #: src/bz-full-view.blp:676 msgid "Similar Apps" msgstr "Podobné aplikace" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Žádná adresa URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Tato aplikace má licenci FLOSS. To znamená, že její zdrojový kód může být " "ověřen pro bezpeÄnost." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Tato aplikace má proprietární licenci. To znamená, že její zdrojový kód je " "vyvíjen v soukromí a nemůže být ověřen nezávislou tÅ™etí stranou." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Více aplikací" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Více aplikací od %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Další aplikace od tohoto vývojáře" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "Další aplikace od %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "Aplikace %s není nainstalována, ale má stále k dispozici <b>%s</b> dat." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Další aplikace" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d aplikace" msgstr[1] "%d aplikace" msgstr[2] "%d aplikací" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:160 msgid "Failed to Remove User Data" msgstr "NezdaÅ™ilo se odstranit uživatelská data" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Podpora hardwaru" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Podpora klávesnice" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Vyžaduje klávesnice" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "DoporuÄuje klávesnice" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Podporuje klávesnice" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Neznámá podpora klávesnic" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Podpora myÅ¡i" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Vyžaduje myÅ¡i nebo ukazovátka" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "DoporuÄuje myÅ¡i nebo ukazovátka" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Podporuje myÅ¡i nebo ukazovátka" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Neznámá podpora myší nebo ukazovátek" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Podpora dotykových obrazovek" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Vyžaduje dotykové obrazovky" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "DoporuÄuje dotykové obrazovky" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Podporuje dotykové obrazovky" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Neznámá podpora dotykových obrazovek" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Podpora pro mobilní zařízení" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Funguje na mobilních zařízeních" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Nemusí fungovat dobÅ™e na mobilních zařízeních" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Podpora pro PC" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Funguje dobÅ™e na velkých obrazovkách" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "Aplikace %s funguje nejlépe na konkrétním hardware" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "Aplikace %s funguje na vÄ›tÅ¡inÄ› zařízení" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Nabídka inspektora" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Otevřít" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Odinstalovat aplikaci" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "Odeb_rat" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Aktualizovat" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Odebrat" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Nainstalovat %s od %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Nainstalovat %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "ZruÅ¡it" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Ruší se" #: src/bz-installed-tile.blp:80 msgid "Donate" msgstr "VÄ›novat dar" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "hledat nainstalované aplikace" #: src/bz-library-page.blp:32 msgid "No Apps Found" msgstr "Nenalezeny žádné aplikace" #: src/bz-library-page.blp:49 msgid "Search Store Instead" msgstr "Hledat v obchodÄ›" #: src/bz-library-page.blp:86 msgid "Pending Updates" msgstr "ÄŒekající aktualizace" #: src/bz-library-page.blp:113 msgid "Downloads" msgstr "Stažení" #: src/bz-library-page.blp:156 msgid "Recently Uninstalled" msgstr "Nedávno odinstalované" #: src/bz-library-page.blp:207 msgid "Clear Finished Tasks" msgstr "Vymazat dokonÄené úlohy" #: src/bz-library-page.blp:234 msgid "Sort Options" msgstr "Možnosti Å™azení" #: src/bz-library-page.blp:293 msgid "Sort By" msgstr "Řadit podle" #: src/bz-library-page.blp:307 msgid "Name" msgstr "Název" #: src/bz-library-page.blp:313 msgid "Size" msgstr "Velikost" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Žádné shody pro výraz „%s“ v seznamu nainstalovaných aplikací" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u dostupná aktualizace" msgstr[1] "%u dostupné aktualizace" msgstr[2] "%u dostupných aktualizací" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u nainstalovaná aplikace" msgstr[1] "%u nainstalované aplikace" msgstr[2] "%u nainstalovaných aplikací" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Nenalezeny žádné aplikace" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Nalezena jedna aplikace" msgstr[1] "Nalezeny %u aplikace" msgstr[2] "Nalezeno %u aplikací" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Zapojit se" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Zjistit více" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Neznámá licence" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Vybudováno komunitou" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:289 msgid "Proprietary" msgstr "UzavÅ™ené" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:291 msgid "Special License" msgstr "Zvláštní licence" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Tato aplikace je otevÅ™enÄ› vyvíjena mezinárodní komunitou.\n" "\n" "Můžete se zapojit a pomoci ji jeÅ¡tÄ› vylepÅ¡it." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Licence této aplikace není známa" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Tato aplikace je otevÅ™enÄ› vyvíjena mezinárodní komunitou a je uvolnÄ›na pod " "licencí %s.\n" "\n" "Můžete se zapojit a pomoci ji jeÅ¡tÄ› vylepÅ¡it." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Tato aplikace není vyvíjena otevÅ™enÄ›, takže o jejím fungování vÄ›dí pouze " "její vývojáři. Může být nezabezpeÄena způsobem, který je těžké odhalit, a " "může se mÄ›nit, aniž byste o tom vÄ›dÄ›li.\n" "\n" "Můžete nebo nemusíte být schopni do této aplikace pÅ™ispívat." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Tato aplikace je vyvíjena pod zvláštní licencí %s.\n" "\n" "Můžete nebo nemusíte být schopni do této aplikace pÅ™ispívat." #: src/bz-license-dialog.c:345 src/bz-license-dialog.c:364 #: src/bz-safety-dialog.blp:103 msgid "License" msgstr "Licence" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "PÅ™ipojit se k Flathubu" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "NÄ›co se pokazilo" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "PÅ™ihlaste se a synchronizujte své oblíbené aplikace napÅ™Ã­Ä zařízeními" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "DokonÄit" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Ahoj, %s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "PÅ™idat ikonu do náhledu Metainfo?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to " "select one manually?" msgstr "" "Soubory Metainfo neobsahují ikony aplikací samy o sobÄ›. Chcete jednu vybrat " "ruÄnÄ›?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "PÅ™eskoÄit" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Vyberte ikonu" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Soubory obrázků" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "PÅ™edvolby" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "PÅ™ipojení k síti je měřené – automatické obnovení dat obchodu je pozastaveno" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Obnovit ruÄnÄ›" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Aktualizace aplikací" #: src/bz-preferences-dialog.blp:33 msgid "" "Auto-updates will pause on metered networks or when power saving is on to " "save data and battery." msgstr "" "Automatické aktualizace budou pozastaveny v měřených sítích nebo pÅ™i " "zapnutém úsporném režimu, aby se Å¡etÅ™ila data a baterie." #: src/bz-preferences-dialog.blp:36 msgid "_Automatic" msgstr "_Automatické" #: src/bz-preferences-dialog.blp:37 msgid "Automatically check for and download app updates" msgstr "Automaticky kontrolovat a stahovat aktualizace aplikací" #: src/bz-preferences-dialog.blp:48 msgid "_Manual" msgstr "_RuÄní" #: src/bz-preferences-dialog.blp:49 msgid "Checking for and downloading app updates must be done manually" msgstr "Kontrola a stahování aktualizací aplikací musí být provedeno ruÄnÄ›" #: src/bz-preferences-dialog.blp:67 msgid "Automatic Update _Notifications" msgstr "Oz_namovat automatické aktualizace" #: src/bz-preferences-dialog.blp:68 msgid "Notify when updates have been automatically installed" msgstr "Oznámit, když jsou automaticky nainstalovány aktualizace" #: src/bz-preferences-dialog.blp:73 msgid "Content Filters" msgstr "Filtry obsahu" #: src/bz-preferences-dialog.blp:76 msgid "_Free Software Only" msgstr "Pouze svobodný so_ftware" #: src/bz-preferences-dialog.blp:77 msgid "Hide proprietary apps when browsing and searching" msgstr "Skrýt uzavÅ™ené aplikace z výsledků vyhledávání" #: src/bz-preferences-dialog.blp:82 msgid "F_lathub Results Only" msgstr "Pouze výsledky z F_lathubu" #: src/bz-preferences-dialog.blp:83 msgid "Limit search and browse results to apps only available on Flathub" msgstr "Omezit výsledky vyhledávání pouze na aplikace dostupné na Flathubu" #: src/bz-preferences-dialog.blp:88 msgid "_Verified Results Only" msgstr "Pouze o_věřené výsledky" #: src/bz-preferences-dialog.blp:89 msgid "Hide results that are not verified on Flathub" msgstr "Skrýt výsledky, které nejsou ověřeny na Flathubu" #: src/bz-preferences-dialog.blp:94 msgid "Hide _End-of-Life Apps" msgstr "Skrýt zastaralé aplikac_e" #: src/bz-preferences-dialog.blp:95 msgid "Hide apps which are no longer supported by their developers" msgstr "Skrýt aplikace, které již nejsou podporované jejich vývojáři" #: src/bz-preferences-dialog.blp:101 msgid "Progress Bar Theme" msgstr "Motiv ukazatele postupu" #: src/bz-preferences-dialog.c:42 msgid "Accent Color" msgstr "Barevný odstín" #: src/bz-preferences-dialog.c:43 msgid "Pride Colors" msgstr "Barvy hrdosti" #: src/bz-preferences-dialog.c:44 msgid "Lesbian Pride Colors" msgstr "Barvy lesbické hrdosti" #: src/bz-preferences-dialog.c:45 msgid "Male Homosexual Pride Colors" msgstr "Barvy mužské homosexuální hrdosti" #: src/bz-preferences-dialog.c:46 msgid "Transgender Pride Colors" msgstr "Barvy transgender hrdosti" #: src/bz-preferences-dialog.c:47 msgid "Nonbinary Pride Colors" msgstr "Barvy nebinární hrdosti" #: src/bz-preferences-dialog.c:48 msgid "Bisexual Pride Colors" msgstr "Barvy bisexuální hrdosti" #: src/bz-preferences-dialog.c:49 msgid "Asexual Pride Colors" msgstr "Barvy asexuální hrdosti" #: src/bz-preferences-dialog.c:50 msgid "Pansexual Pride Colors" msgstr "Barvy pansexuální hrdosti" #: src/bz-preferences-dialog.c:51 msgid "Aromantic Pride Colors" msgstr "Barvy aromatické hrdosti" #: src/bz-preferences-dialog.c:52 msgid "Genderfluid Pride Colors" msgstr "Barvy genderfluidní hrdosti" #: src/bz-preferences-dialog.c:53 msgid "Polysexual Pride Colors" msgstr "Barvy polysexuální hrdosti" #: src/bz-preferences-dialog.c:54 msgid "Omnisexual Pride Colors" msgstr "Barvy omnisexuální hrdosti" #: src/bz-preferences-dialog.c:55 msgid "Aroace Pride Colors" msgstr "Barvy aroace hrdosti" #: src/bz-preferences-dialog.c:56 msgid "Agender Pride Colors" msgstr "Barvy agenderové hrdosti" #: src/bz-preferences-dialog.c:57 msgid "Genderqueer Pride Colors" msgstr "Barvy genderqueer hrdosti" #: src/bz-preferences-dialog.c:58 msgid "Intersex Pride Colors" msgstr "Barvy intersexuální hrdosti" #: src/bz-preferences-dialog.c:59 msgid "Demigender Pride Colors" msgstr "Barvy demigenderové hrdosti" #: src/bz-preferences-dialog.c:60 msgid "Biromantic Pride Colors" msgstr "Barvy biromantické hrdosti" #: src/bz-preferences-dialog.c:61 msgid "Disability Pride Colors" msgstr "Barvy hrdosti invalidů" #: src/bz-preferences-dialog.c:62 msgid "Femboy Pride Colors" msgstr "Barvy hrdosti femboyů" #: src/bz-preferences-dialog.c:63 msgid "Neutrois Pride Colors" msgstr "Barvy neutrois hrdosti" #: src/bz-preferences-dialog.c:285 msgid "Bazaar needs to run in the background to check for app updates" msgstr "Bazaar musí běžet na pozadí, aby mohl kontrolovat aktualizace aplikací" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Historie verzí" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "Historie _verzí" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "dnes" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "vÄera" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "pÅ™ed %d dnem" msgstr[1] "pÅ™ed %d dny" msgstr[2] "pÅ™ed %d dny" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "pÅ™ed %d týdnem" msgstr[1] "pÅ™ed %d týdny" msgstr[2] "pÅ™ed %d týdny" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "pÅ™ed %d mÄ›sícem" msgstr[1] "pÅ™ed %d mÄ›síci" msgstr[2] "pÅ™ed %d mÄ›síci" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "pÅ™ed %d rokem" msgstr[1] "pÅ™ed %d roky" msgstr[2] "pÅ™ed %d lety" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e. %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Verze %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Žádné informace o této verzi" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Získat více informací" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Odinstalovat" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Získat" #: src/bz-safety-dialog.blp:32 src/bz-safety-dialog.c:297 #: src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Libovolná oprávnÄ›ní" #: src/bz-safety-dialog.blp:49 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a privileged, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Tato aplikace má oprávnÄ›ní, které jí nepřímo umožňuje udÄ›lit si <b>jakékoli " "jiné oprávnÄ›ní, které chce</b>, a obejít tak izolované prostÅ™edí Flatpaku.\n" "\n" "Může tedy dÄ›lat cokoli, co privilegovaná aplikace bez izolovaného prostÅ™edí, " "například pÅ™istupovat ke vÅ¡em vaÅ¡im souborům a pÅ™ipojením k internetu.\n" "\n" "Zobrazení dalších oprávnÄ›ní vám může stále poskytnout lepší pÅ™edstavu o tom, " "co aplikace pravdÄ›podobnÄ› udÄ›lá." #: src/bz-safety-dialog.blp:53 msgid "View Other Permissions" msgstr "Zobrazit další oprávnÄ›ní" #. TRANSLATORS: short app safety rating label #: src/bz-safety-dialog.blp:81 src/context-tile-callbacks.c:402 msgid "Safe" msgstr "BezpeÄné" #: src/bz-safety-dialog.blp:114 msgid "App ID" msgstr "ID aplikace" #: src/bz-safety-dialog.blp:124 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:158 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Tato aplikace používá zastaralou verzi softwarové platformy (SDK) a může " "obsahovat chyby nebo slabá místa zabezpeÄení, která nebudou opravena." #: src/bz-safety-dialog.c:283 src/bz-safety-dialog.c:317 msgid "Safety" msgstr "BezpeÄnost" #: src/bz-safety-dialog.c:377 #, c-format msgid "%s is Safe" msgstr "Aplikace %s je bezpeÄná" #: src/bz-safety-dialog.c:382 #, c-format msgid "%s has no Unsafe Permissions" msgstr "Aplikace %s nemá žádná nebezpeÄná oprávnÄ›ní" #: src/bz-safety-dialog.c:387 #, c-format msgid "%s is Probably Safe" msgstr "Aplikace %s je pravdÄ›podobnÄ› bezpeÄná" #: src/bz-safety-dialog.c:392 #, c-format msgid "%s is Possibly Unsafe" msgstr "Aplikace %s pravdÄ›podobnÄ› není bezpeÄná" #: src/bz-safety-dialog.c:397 #, c-format msgid "%s is Unsafe" msgstr "Aplikace %s není bezpeÄná" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "ZpÄ›t" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "PÅ™edchozí snímek obrazovky" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Následující snímek obrazovky" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Kopírovat obrázek" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Původní" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Oddálit" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "PÅ™iblížit" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "ProhlížeÄ snímků obrazovky" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Žádné snímky obrazovky" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Otevřít prohlížeÄ snímků obrazovky" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Snímek %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Snímek %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "Vymazat hledání" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Filtry" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "O_věřené" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Svobodné/otevÅ™ené" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "N_ezastaralé" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Filtrovat zastaralé aplikace" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Mobilní aplikace" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategorie" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "hledat aplikace, hry, software" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Filtry vyhledávání" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Procházet kategorie" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Kategorie nejsou k dispozici" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Vyhledejte aplikace pomocí vyhledávacího panelu výše." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Nenalezeny žádné aplikace" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Žádné výsledky pro „%s“ v Flathubu" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "ProhlížeÄ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Video" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Kancelář" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Kalendář" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Zasílání zpráv" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Malování" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulátor" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Stránka na Flathubu" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Stránky projektu" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Sledování problémů" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "ÄŒasté otázky" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "NápovÄ›da" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "VÄ›novat dar" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "PÅ™eklad" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Kontakt" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Zdrojový kód" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "PÅ™ispÄ›t" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifest" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Kopírovat odkaz" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "ÄŒasová osa" #. TRANSLATORS: label prefix shown in graph tooltips, for example: "Installs: 42" #: src/bz-stats-dialog.blp:48 msgid "Installs:" msgstr "PoÄet instalací:" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:58 msgid "World" msgstr "SvÄ›t" #: src/bz-stats-dialog.blp:72 msgid "Since 4/15/2024" msgstr "Od 15. 4. 2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2f mil. celkových instalací" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2f tis. celkových instalací" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d celkových instalací" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Nenalezeny žádné výsledky" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Hledání se nezdaÅ™ilo" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Ponechat uživatelská data" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Povolit obnovení uživatelských nastavení a obsahu" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Odstranit vÅ¡echna data" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Trvale odstranit uživatelská data, aby se uÅ¡etÅ™ilo místo" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Nainstalovat %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Vyberte verzi, kterou chcete nainstalovat. Může dojít k instalaci dalších " "sdílených komponent" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Může nainstalovat dodateÄné sdílené komponenty" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_ZruÅ¡it" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Instalovat" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Odebrat %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Vyberte, kterou verzi chcete odebrat." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Po odinstalování nebude možné aplikaci %s používat." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "Aplikace „%s“ je vysoce riziková" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Tato aplikace má plný přístup k vaÅ¡emu systému, vÄetnÄ› vÅ¡ech <b>vaÅ¡ich " "souborů, historie prohlížení, uložených hesel</b> a dalších údajů. Má také " "přístup k internetu, což znamená, že může odesílat vaÅ¡e data externím " "stranám.\n" "\n" "Protože je aplikace uzavÅ™ený software, nelze auditovat, co s tÄ›mito " "oprávnÄ›ními dÄ›lá." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Tato aplikace používá starší okenní systém X11, který jí umožňuje " "<b>zaznamenávat vÅ¡echny stisky kláves, poÅ™izovat snímky obrazovky a " "monitorovat další aplikace</b>. Má také přístup k internetu, což znamená, že " "může odesílat vaÅ¡e data externím stranám.\n" "\n" "Protože je aplikace uzavÅ™ený software, nelze auditovat, co s tÄ›mito " "oprávnÄ›ními dÄ›lá." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "PÅ™esto na_instalovat" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "NezdaÅ™ilo se naÄíst dialogové okno transakce" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "VÅ¡echny aplikace jsou již nainstalovány" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Budiž" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Nainstalovat %u aplikaci?" msgstr[1] "Nainstalovat %u aplikace?" msgstr[2] "Nainstalovat %u aplikací?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Následující aplikace budou nainstalovány. Mohou být také nainstalovány další " "sdílené komponenty" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "Bude nainstalováno %d doplňků." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "KromÄ› toho budou nainstalovány doplňky." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Instalovat vÅ¡e" #: src/bz-transaction-manager.c:796 #, c-format msgid "Finished in %.02f seconds" msgstr "DokonÄeno v %.02f sekundách" #: src/bz-transaction-tile.blp:130 msgid "App Add-On" msgstr "DoplnÄ›k aplikace" #: src/bz-transaction-tile.blp:159 msgid "Runtime" msgstr "ProstÅ™edí" #: src/bz-transaction-tile.blp:183 msgid "In Queue" msgstr "Ve frontÄ›" #: src/bz-transaction-tile.blp:207 msgid "Done" msgstr "Hotovo" #: src/bz-transaction-tile.blp:231 msgid "Cancelled" msgstr "ZruÅ¡eno" #: src/bz-transaction-tile.blp:255 msgid "Error" msgstr "Chyba" #: src/bz-transaction-tile.blp:314 msgid "Cancel Transaction" msgstr "ZruÅ¡it transakci" #: src/bz-transaction-tile.blp:324 msgid "Show Details" msgstr "Zobrazit podrobnosti" #: src/bz-transaction-tile.blp:439 msgid "Show Error Info" msgstr "Zobrazit informace o chybÄ›" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s uvolnÄ›no" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Chyba transakce" #: src/bz-transaction.c:344 msgid "Pending" msgstr "ÄŒeká" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "Akt_ualizovat vÅ¡e" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u aktualizace prostÅ™edí" msgstr[1] "%u aktualizace prostÅ™edí" msgstr[2] "%u aktualizací prostÅ™edí" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Správa zbylých uživatelských dat" #: src/bz-user-data-page.blp:32 msgid "No Leftover User Data Found" msgstr "Nenalezena žádná zbylá uživatelská data" #: src/bz-user-data-page.blp:33 msgid "Personal data left behind by apps that were removed will show up here" msgstr "Zde se zobrazí vlastní data, která zanechaly odstranÄ›né aplikace" #: src/bz-user-data-page.c:229 #, c-format msgid "Trashed User Data for %u App" msgid_plural "Trashed User Data for %u Apps" msgstr[0] "Uživatelská data %u aplikace byla vymazána" msgstr[1] "Uživatelská data %u aplikací byla vymazána" msgstr[2] "Uživatelská data %u aplikací byla vymazána" #: src/bz-user-data-page.c:233 #, c-format msgid "Trashed User Data for %s" msgstr "Uživatelská data aplikace %s byla vymazána" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Otevřít složku uživatelských dat" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Vymazat uživatelská data" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Obnovuje se" #: src/bz-window.blp:90 msgid "Curated" msgstr "Vybrané" #: src/bz-window.blp:102 msgid "Explore" msgstr "Procházet" #. Translators: . #: src/bz-window.blp:114 msgid "Library" msgstr "Knihovna" #: src/bz-window.blp:129 msgid "Search" msgstr "Vyhledávání" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Hlavní nabídka" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Používáte novou verzi Bazaaru!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Podívejte se, co je nového" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Máte pÅ™ipojení k síti, ale prohlížíte si verzi Flathubu uloženou v mezipamÄ›ti" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "PÅ™ipojení k síti je měřené – automatická obnovení jsou zakázána" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "Po_dpoÅ™it Bazaar" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Obnovit" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "PÅ™ih_lásit se pomocí Flathubu" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "Sp_ravovat zbylá uživatelská data" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_PÅ™edvolby" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "O _aplikaci Bazaar" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_UkonÄit Bazaar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Odhlásit se" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar – %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Aplikaci se nezdaÅ™ilo spustit" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Bazaar nelze odstranit z Bazaaru!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Toto teÄ nelze provést!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "instalace" msgstr[1] "instalace" msgstr[2] "instalací" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*f mil." #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*f tis." #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d stažení za poslední mÄ›síc" #. TRANSLATORS: %s is a formatted file size, for example: "128 MB" #: src/context-tile-callbacks.c:133 #, c-format msgid "+%s Runtime" msgstr "+ prostÅ™edí %s" #: src/context-tile-callbacks.c:136 msgid "Download" msgstr "Stáhnout" #: src/context-tile-callbacks.c:156 msgid "Size information unavailable" msgstr "Informace o velikosti nejsou k dispozici" #: src/context-tile-callbacks.c:159 #, c-format msgid "Download size of %s" msgstr "Stahovaná velikost %s" #: src/context-tile-callbacks.c:192 msgid "All Ages" msgstr "Libovolný vÄ›k" #: src/context-tile-callbacks.c:204 msgid "Age rating information unavailable" msgstr "Hodnocení vÄ›ku není k dispozici" #: src/context-tile-callbacks.c:209 msgid "Suitable for all ages" msgstr "Vhodné pro vÅ¡echny vÄ›kové skupiny" #: src/context-tile-callbacks.c:211 #, c-format msgid "Suitable for ages %d and up" msgstr "Vhodné pro vÄ›k %d a více" #: src/context-tile-callbacks.c:244 src/context-tile-callbacks.c:249 #: src/context-tile-callbacks.c:277 src/context-tile-callbacks.c:286 msgid "Unknown" msgstr "Neznámé" #: src/context-tile-callbacks.c:254 #, c-format msgid "Free software licensed under %s" msgstr "Svobodný software licencovaný pod %s" #: src/context-tile-callbacks.c:259 msgid "Free software" msgstr "Svobodný software" #: src/context-tile-callbacks.c:262 msgid "Proprietary Software" msgstr "UzavÅ™ený software" #: src/context-tile-callbacks.c:265 #, c-format msgid "Special License: %s" msgstr "Zvláštní licence: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:283 msgid "Free Software" msgstr "Svobodné" #: src/context-tile-callbacks.c:311 msgid "Adaptive" msgstr "Adaptivní" #: src/context-tile-callbacks.c:311 msgid "Desktop Only" msgstr "Pouze pro PC" #: src/context-tile-callbacks.c:317 msgid "Works on desktop, tablets, and phones" msgstr "Funguje na PC, tabletech a telefonech" #: src/context-tile-callbacks.c:318 msgid "May not work on mobile devices" msgstr "Možná nefunguje na mobilních zařízeních" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:405 src/context-tile-callbacks.c:408 msgid "Low Risk" msgstr "Nízké riziko" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:411 msgid "Medium Risk" msgstr "StÅ™ední riziko" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:414 msgid "High Risk" msgstr "Vysoké riziko" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Neznámá oprávnÄ›ní" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Pro tuto aplikaci chybí oprávnÄ›ní." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Žádná oprávnÄ›ní" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Aplikace je v plnÄ› izolovaném prostÅ™edí" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Přístup k síti" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Může pÅ™istupovat k internetu" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Žádný přístup k síti" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Nemůže pÅ™istupovat k internetu" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Přístup k uživatelským zařízením" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Může pÅ™istupovat k zařízením jako jsou webkamery nebo herní ovladaÄe" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Žádný přístup k uživatelským zařízením" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Nemůže pÅ™istupovat k zařízením jako jsou webkamery nebo herní ovladaÄe" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Přístup ke vstupním zařízením" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Může pÅ™istupovat ke vstupním zařízením" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Přístup k mikrofonu a pÅ™ehrávání zvuku" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "Může poslouchat pomocí mikrofonů a pÅ™ehrávat zvuk bez žádosti o povolení" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Přístup k systémovým zařízením" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" "Může pÅ™istupovat k systémovým zařízením, která vyžadují zvýšená oprávnÄ›ní" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Přístup k obsahu obrazovky" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Může pÅ™istupovat k obsahu obrazovky nebo jiných oken" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Zastaralý zobrazovací systém" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Vždy používá starý zobrazovací systém (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Může získat libovolná oprávnÄ›ní" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Nastavení uživatele" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Může zobrazovat a mÄ›nit uživatelská nastavení" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Plný přístup k souborovému systému pro Ätení/zápis" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Může Äíst a zapisovat vÅ¡echna data v souborovém systému" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Přístup k domovské složce pro Ätení/zápis" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Může Äíst a zapisovat vÅ¡echna data ve vaší domovské složce" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Plný přístup k souborovému systému pro Ätení" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Může Äíst vÅ¡echna data v souborovém systému" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Přístup k domovské složce pro Ätení" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Může Äíst vÅ¡echna data ve vaší domovské složce" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Přístup ke složce se staženými soubory pro Ätení/zápis" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Může Äíst a zapisovat vÅ¡echna data ve vaší složce se staženými soubory" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Přístup ke složce se staženými soubory pro Ätení" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Může Äíst vÅ¡echna data ve vaší složce se staženými soubory" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Může Äíst a zapisovat vÅ¡echna data ve složce" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Může Äíst vÅ¡echna data ve složce" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Žádný přístup k souborovému systému" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Vůbec nemůže pÅ™istupovat k souborovému systému" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Využívá služby systému" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Může si vyžádat data ze služeb systému mimo portál" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Využívá služby sezení" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Může si vyžádat data ze služeb sezení mimo portál" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Žádný přístup ke službám" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Nemůže pÅ™istupovat ke službám sezení nebo systému mimo portál" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Ověřený vývojář aplikace" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "Vývojář této aplikace byl ověřen jako ten, za koho se vydává" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "UzavÅ™ený kód" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Zdrojový kód není veÅ™ejný, takže jej nelze nezávisle zkontrolovat a nemusí " "být bezpeÄný" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "OtevÅ™ený kód" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Zdrojový kód je veÅ™ejný a může být nezávisle kontrolován, což zvyÅ¡uje " "pravdÄ›podobnost, že je aplikace bezpeÄná" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Použít službu systému %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Použít službu sezení %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Použít službu %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Může vidÄ›t službu mimo portál" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Může komunikovat se službou mimo portál" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Může vlastnit službu mimo portál" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Integrace globální nabídky" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Může zobrazit své nabídky v globálním panelu nabídek" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Integrace nastavení KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Může detekovat zmÄ›nu nastavení plochy KDE" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Globální nastavení KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Může Äíst nastavení plochy KDE, jako jsou písma a barvy" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "ÚložiÅ¡tÄ› služby utajení" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "Může ukládat a naÄítat vlastní hesla pomocí systémové klíÄenky" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Služba upozornÄ›ní plochy" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Může zasílat upozornÄ›ní plochy" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Integrace do oznamovací oblasti systému" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Může zobrazit ikonu v systémové oznamovací oblasti" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Integrace KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Může komunikovat se zařízeními spárovanými pÅ™es KDE Connect" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigace" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Otevřít stránku procházení" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Otevřít stránku knihovny" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Otevřít stránku vyhledávání" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Repozitáře" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Synchronizovat repozitáře" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Obecné" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Otevřít pÅ™edvolby" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Zobrazit zkratky" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Zavřít okno" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "UkonÄit Bazaar" #: src/transaction-notification.c:133 #, c-format msgid "%s Installed" msgstr "%s nainstalováno" #: src/transaction-notification.c:135 msgid "The app is ready to be used" msgstr "Aplikace je pÅ™ipravená k použití" #: src/update-worker.c:263 msgid "Updates Are Out of Date" msgstr "Údaje o aktualizacích jsou zastaralé" #: src/update-worker.c:264 msgid "Please check for available updates" msgstr "Zkontrolujte prosím dostupné aktualizace" #: src/update-worker.c:449 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "Byla aktualizována %u aplikace" msgstr[1] "Byly aktualizovány %u aplikace" msgstr[2] "Bylo aktualizováno %u aplikací" #: src/update-worker.c:452 #, c-format msgid "%s has been updated." msgstr "Aplikace %s byla aktualizována." #: src/update-worker.c:455 #, c-format msgid "%s and %s have been updated." msgstr "Aplikace %s a %s byly aktualizovány." #: src/update-worker.c:459 #, c-format msgid "Includes %s, %s and %s." msgstr "VÄetnÄ› %s, %s a %s." ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/de.po������������������������������������������������������������������0000664�0000000�0000000�00000274075�15240005042�0016723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # # SPDX-FileCopyrightText: 2025, 2026 renner <renner0@posteo.de> # renner <renner0@posteo.de>, 2025. # # SPDX-FileCopyrightText: 2026 min7-i <min7@noreply.codeberg.org> msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-11 17:58+0200\n" "PO-Revision-Date: 2026-06-20 14:43+0200\n" "Last-Translator: min7-i <min7@noreply.codeberg.org>\n" "Language-Team: German <>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 26.04.2\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:46 #: src/bz-window.blp:202 src/bz-window.c:373 src/bz-window.c:374 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Hinzufügen, Entfernen oder Aktualisieren von Apps auf diesem Computer" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;System;Paketverwaltung;Discover;Flatpak;Software;Store;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "Neues Fenster" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and manage applications" msgstr "Apps entdecken und verwalten" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and addons, particularly from Flathub." msgstr "" "Ein schneller und moderner App-Store für Linux mit Schwerpunkt auf dem " "Entdecken und der Installation von Flatpak-Apps und -Erweiterungen, " "insbesondere von Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "" "Melden Sie sich bei Flathub an, um Ihre Favoriten zu sehen und zu verwalten" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:784 msgid "The Bazaar Contributors" msgstr "Die Bazaar Mitwirkenden" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Die Startseite mit den Flathub-Apps" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Bibliotheksseite" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Suchseite" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Kategorienseite" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:141 msgid "Stopped Receiving Updates" msgstr "Erhält keine Aktualisierungen mehr" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Deinstallieren" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:145 #: src/bz-bundle-install-dialog.blp:159 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Installieren" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:92 msgid "Manage Add-Ons" msgstr "Erweiterungen verwalten" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Keine Erweiterungen sichtbar" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Ihre aktuellen Filtereinstellungen blenden alle bekannten Erweiterungen aus. " "Versuche Sie, sie anzupassen." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Erweiterungsseite" #: src/bz-addons-dialog.blp:202 src/bz-full-view.blp:410 msgid "Downloads/Month" msgstr "Downloads/Monat" #: src/bz-addons-dialog.blp:229 src/bz-full-view.blp:446 msgid "Stopped Receiving Core Updates" msgstr "" #: src/bz-addons-dialog.blp:243 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Diese Erweiterung verwendet eine Laufzeitumgebung, die keine Updates oder " "Sicherheitsaktualisierungen mehr erhält. Die Nutzung könnte unsicher werden." #: src/bz-addons-dialog.c:333 #, c-format msgid "Add-on for %s" msgstr "Erweiterung für %s" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show Less" msgstr "Weniger anzeigen" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show More" msgstr "Mehr anzeigen" #: src/bz-addons-dialog.c:397 msgid "Download Stats" msgstr "Downloadstatistiken" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Alterseinstufung" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Cartoon-Gewalt" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Keine Informationen über Cartoon-Gewalt" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Fantasie-Gewalt" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Keine Informationen über Fantasie-Gewalt" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Realistische Gewalt" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Keine Informationen über realistische Gewaltdarstellung" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Darstellung von Blutvergießen" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Keine Informationen über Blutvergießen" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Sexuelle Gewalt" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Keine Informationen über Sexuelle Gewalt" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alkohol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Keine Informationen über Alkohol" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Betäubungsmittel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Keine Informationen über unerlaubten Drogen/Medikamente" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Keine Informationen über Tabakprodukte" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nacktheit" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Keine Informationen über Nacktszenen irgendeiner Form" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Sexuelle Themen" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "Keine Informationen über Anspielungen oder Darstellungen sexueller Natur" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Obszönität" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Keine Informationen über Obszönität irgendeiner Art" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Unangemessener Humor" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Keine Informationen über unangemessenen Humor" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Diskriminierung" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Keine Informationen über diskriminierender Sprache irgendeiner Art" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Werbung" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Keine Informationen über Werbung irgendeiner Art" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Glücksspiel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Keine Informationen über Glücksspiel irgendeiner Art" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Einkauf" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Keine Informationen über die Möglichkeit, reales Geld auszugeben" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Mit anderen Nutzern chatten" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "" "Keine Informationen über die Möglichkeit, mit anderen Nutzern zu chatten." #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Audio-Chat zwischen Nutzern" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "" "Keine Informationen über die Möglichkeit, mit anderen Nutzern zu sprechen" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Kontaktdetails" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Keine Informationen über das Teilen von Benutzernamen und E-Mail-Adressen " "über soziale Netzwerke" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Identifizierende Informationen" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Keine Informationen über das Teilen von Benutzerinformationen mit Dritten" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Standortfreigabe" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Keine Informationen über das Teilen des physischen Aufenthaltsortes mit " "anderen Nutzern" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostitution" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Keine Informationen über die Erwähnung von Prostitution" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Ehebruch" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Keine Informationen über die Erwähnung von Ehebruch" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Sexualisierten Figuren" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Keine Informationen über sexualisierte Figuren" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Schändung" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Keine Informationen über Erwähnungen von Schändung" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Menschliche Überreste" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Keine Informationen über sichtbare menschliche Überreste" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Sklaverei" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Keine Informationen über die Erwähnung von Sklaverei" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Enthält keine Erwähnungen von Drogen" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "" "Enthält keine Schimpfwörter, Obszönitäten und andere Arten von vulgärer " "Sprache" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Enthält keine Werbung oder Geldtransaktionen" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Enthält keine sexuellen Inhalte oder Nacktheit" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Enthält keine unkontrollierte Chat-Funktion" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Enthält keine Gewalt" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drogen" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Kraftausdrücke" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Geld" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Soziales" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Gewalt" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Alle" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s hat ein unbekannte Alterseinstufung" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s ist für alle geeignet" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s ist für junge Kinder geeignet" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s ist für Kinder geeignet" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s ist für Jugendliche geeignet" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s ist für Erwachsene geeignet" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s is geeignet für %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Systemordner %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Desktop-Unterordner %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Desktopordner" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Dokumentenordner" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Musik-Unterordner %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Musikordner" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Bilderordner" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Öffentlicher Ordner" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Video-Unterordner %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Videoordner" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Vorlagenordner" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "Downloadgröße" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "Installierte Größe" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "Ihre Benutzerdaten" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "Cache" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "Cache leeren" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Installierte Größe der Laufzeitumgebung" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Downloadgröße der Laufzeitumgebung" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:392 #: src/context-tile-callbacks.c:409 msgid "N/A" msgstr "N/V" #: src/bz-app-size-dialog.c:226 msgid "App Size" msgstr "App-Größe" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:105 src/bz-rich-app-tile.c:429 msgid "Verified" msgstr "Verifiziert" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 #: src/bz-releases-list.c:206 msgid "Installed" msgstr "Installiert" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:787 msgid "translator-credits" msgstr "" "renner\n" "Mandarinoo\n" "min7-i" #: src/bz-application.c:797 msgid "Special Thanks" msgstr "Besonderer Dank" #: src/bz-application.c:855 msgid "Logged Out Successfully!" msgstr "Erfolgreich abgemeldet!" #: src/bz-application.c:993 msgid "Performing setup…" msgstr "Einrichtung wird durchgeführt…" #: src/bz-application.c:1085 msgid "Set Up System Flathub?" msgstr "" #: src/bz-application.c:1088 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" #: src/bz-application.c:1095 msgid "Set Up Flathub?" msgstr "Flathub einrichten?" #: src/bz-application.c:1098 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" #: src/bz-application.c:1104 msgid "Later" msgstr "Später" #: src/bz-application.c:1105 msgid "Set Up Flathub" msgstr "Flathub einrichten" #: src/bz-application.c:1623 msgid "A backend error occurred" msgstr "Ein Backend-Fehler ist aufgetreten" #: src/bz-application.c:1823 src/bz-application.c:4003 msgid "Refreshing…" msgstr "Wird aktualisiert..." #: src/bz-application.c:1987 src/bz-application.c:4001 #, c-format msgid "Loading %d apps…" msgstr "%d Apps werden geladen..." #: src/bz-application.c:2040 msgid "Failed to open file" msgstr "" #: src/bz-application.c:2138 msgid "An initialization error occurred" msgstr "Ein Intitialisierungsfehler ist aufgetreten" #: src/bz-application.c:2532 msgid "Checking for updates…" msgstr "Wird auf Aktualisierungen geprüft…" #: src/bz-application.c:2588 msgid "Failed to check for updates" msgstr "Prüfung auf Aktualisierungen ist fehlgeschlagen" #: src/bz-application.c:3714 msgid "Malformed Link" msgstr "" #: src/bz-application.c:3715 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" #: src/bz-application.c:3723 msgid "Could not find app" msgstr "App konnte nicht gefunden werden" #: src/bz-application.c:3754 msgid "Failed to load metainfo" msgstr "" #: src/bz-application.c:4005 msgid "Writing to cache…" msgstr "" #: src/bz-apps-page.blp:99 msgid "Show All" msgstr "Alle anzeigen" #: src/bz-apps-page.c:237 #, c-format msgid "All \"%s\"" msgstr "Alle \"%s\"" #: src/bz-apps-page.c:487 #, c-format msgid "%d Applications" msgstr "%d Apps" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Bundle-Installation" #: src/bz-bundle-install-dialog.blp:195 msgid "Additional dependencies may take extra space" msgstr "" #: src/bz-bundle-install-dialog.blp:229 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" #: src/bz-bundle-install-dialog.blp:406 msgid "Successfully Installed!" msgstr "Erfolgreich installiert!" #: src/bz-bundle-install-dialog.blp:430 src/bz-bundle-install-dialog.blp:513 #: src/bz-rich-app-tile.blp:198 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Öffnen" #: src/bz-bundle-install-dialog.blp:440 src/bz-bundle-install-dialog.blp:523 msgid "Show App Details" msgstr "App-Details anzeigen" #: src/bz-bundle-install-dialog.blp:490 msgid "Already Installed" msgstr "Bereits installiert" #: src/bz-bundle-install-dialog.blp:535 msgid "Installation Failed" msgstr "Installation fehlgeschlagen" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Unbekannte Installationsgöße" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Keine Spezialberechtigungen" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d Downloads im letzten Monat" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s Laufzeitumgebung" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Download" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Information über Größe nicht verfügbar" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Downloadgröße von %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Alle Altersgruppen" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Geeignet für alle Altersgruppen" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:284 msgid "Unknown" msgstr "Unbekannt" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Freie Software lizenziert unter %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Freie Software" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Proprietäre Software" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Besondere Lizenz: %s" #: src/context-tile-callbacks.c:281 msgid "Free" msgstr "Frei" #: src/context-tile-callbacks.c:287 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "Proprietär" #: src/context-tile-callbacks.c:289 src/bz-license-dialog.c:135 msgid "Special License" msgstr "Besondere Lizenz" #: src/context-tile-callbacks.c:309 msgid "Adaptive" msgstr "Adaptiv" #: src/context-tile-callbacks.c:309 msgid "Desktop Only" msgstr "Nur Desktop" #: src/context-tile-callbacks.c:315 msgid "Works on desktop, tablets, and phones" msgstr "Funktioniert auf Desktops, Tablets und Smartphones" #: src/context-tile-callbacks.c:316 msgid "May not work on mobile devices" msgstr "" #: src/context-tile-callbacks.c:399 src/bz-safety-dialog.blp:27 msgid "Safe" msgstr "Sicher" #: src/context-tile-callbacks.c:401 src/context-tile-callbacks.c:403 msgid "Low Risk" msgstr "Geringes Risiko" #: src/context-tile-callbacks.c:405 msgid "Medium Risk" msgstr "Mittleres Risiko" #: src/context-tile-callbacks.c:407 msgid "High Risk" msgstr "Hohes Risiko" #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 #: src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Leer" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "Keine vorgestellten Apps" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "Flathub durchsuchen" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 msgid "Offline" msgstr "Offline" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Browser" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Nicht verifiziert" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "" #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "" #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "" #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "An Bazaar spenden" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Was ist neu in %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Veröffentlicht %B %-e, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Installationsart auswählen" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Sie haben mehrere Versionen dieser App installiert. Mit welcher möchten Sie " "fortfahren?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:232 msgid "Cancel" msgstr "Abbrechen" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Nur für diesen Benutzer" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "dieser Benutzer" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "alle Benutzer" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 #: src/bz-safety-dialog.blp:46 msgid "Details" msgstr "Details" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Kopieren" #: src/bz-error-dialog.c:56 src/bz-share-list.c:364 msgid "Copied!" msgstr "Kopiert." #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Mit Flathub anmelden, um Favoriten zu verwalten" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Anmelden" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:335 msgid "Favorites" msgstr "Favoriten" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:144 msgid "Install All" msgstr "Alle installieren" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "Wird geladen" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Keine Favoriten" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Diese App unterstützen" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Aus Favoriten entfernen" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "Zurück" #: src/bz-featured-carousel.blp:54 msgid "Next" msgstr "Weiter" #: src/bz-flathub-category.c:93 msgid "Editing" msgstr "" #: src/bz-flathub-category.c:94 msgid "Midi" msgstr "" #: src/bz-flathub-category.c:95 msgid "Mixer" msgstr "" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:96 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Musik" #: src/bz-flathub-category.c:97 msgid "Player" msgstr "" #: src/bz-flathub-category.c:98 msgid "Recorder" msgstr "" #: src/bz-flathub-category.c:99 msgid "Sequencer" msgstr "" #: src/bz-flathub-category.c:100 msgid "Tuner" msgstr "" #: src/bz-flathub-category.c:101 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:106 msgid "Emulation" msgstr "Emulation" #: src/bz-flathub-category.c:107 msgid "Action" msgstr "Action" #: src/bz-flathub-category.c:108 msgid "Adventure" msgstr "Adventure" #: src/bz-flathub-category.c:109 msgid "Arcade" msgstr "Arcade" #: src/bz-flathub-category.c:110 msgid "Blocks" msgstr "" #: src/bz-flathub-category.c:111 msgid "Board" msgstr "" #: src/bz-flathub-category.c:112 msgid "Card" msgstr "" #: src/bz-flathub-category.c:113 msgid "Kids" msgstr "" #: src/bz-flathub-category.c:114 msgid "Logic" msgstr "Logik" #: src/bz-flathub-category.c:115 msgid "Role Playing" msgstr "" #: src/bz-flathub-category.c:116 msgid "Shooter" msgstr "Shooter" #: src/bz-flathub-category.c:117 msgid "Simulation" msgstr "Simulation" #: src/bz-flathub-category.c:118 msgid "Sports" msgstr "Sport" #: src/bz-flathub-category.c:119 msgid "Strategy" msgstr "Strategie" #: src/bz-flathub-category.c:124 msgid "Browsers" msgstr "Browser" #: src/bz-flathub-category.c:125 msgid "Chat" msgstr "Chat" #: src/bz-flathub-category.c:126 msgid "Mail" msgstr "E-Mail" #: src/bz-flathub-category.c:127 msgid "File Sharing" msgstr "Dateifreigabe" #: src/bz-flathub-category.c:132 msgid "Audio & Video" msgstr "Audio & Video" #: src/bz-flathub-category.c:132 msgid "Media" msgstr "Media" #: src/bz-flathub-category.c:132 msgid "More Audio & Video" msgstr "Mehr Audio & Video" #: src/bz-flathub-category.c:133 msgid "Developer Tools" msgstr "Entwicklungswerkzeuge" #: src/bz-flathub-category.c:133 msgid "Develop" msgstr "Entwickeln" #: src/bz-flathub-category.c:133 msgid "More Developer Tools" msgstr "Mehr Entwicklerwerkzeuge" #: src/bz-flathub-category.c:134 msgid "Education" msgstr "Bildung" #: src/bz-flathub-category.c:134 msgid "Learn" msgstr "Lernen" #: src/bz-flathub-category.c:134 msgid "More Education" msgstr "Mehr Bildung" #: src/bz-flathub-category.c:135 msgid "Gaming" msgstr "Gaming" #: src/bz-flathub-category.c:135 msgid "Play" msgstr "Spielen" #: src/bz-flathub-category.c:135 msgid "More Gaming" msgstr "Mehr Gaming" #: src/bz-flathub-category.c:136 msgid "Graphics & Photography" msgstr "Grafik & Fotografie" #: src/bz-flathub-category.c:136 msgid "Create" msgstr "Erstellen" #: src/bz-flathub-category.c:136 msgid "More Graphics & Photography" msgstr "Mehr Grafik & Fotografie" #: src/bz-flathub-category.c:137 msgid "Networking" msgstr "Netzwerk" #: src/bz-flathub-category.c:137 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:137 msgid "More Networking" msgstr "Mehr Netzwerk" #: src/bz-flathub-category.c:138 msgid "Productivity" msgstr "Produktivität" #: src/bz-flathub-category.c:138 msgid "Work" msgstr "Arbeit" #: src/bz-flathub-category.c:138 msgid "More Productivity" msgstr "Mehr Produktivität" #: src/bz-flathub-category.c:139 msgid "Science" msgstr "Wissenschaft" #: src/bz-flathub-category.c:139 msgid "More Science" msgstr "Mehr Wissenschaft" #: src/bz-flathub-category.c:140 msgid "System" msgstr "System" #: src/bz-flathub-category.c:140 msgid "More System" msgstr "Mehr System" #: src/bz-flathub-category.c:141 msgid "Utilities" msgstr "Dienstprogramme" #: src/bz-flathub-category.c:141 msgid "Tools" msgstr "Werkzeuge" #: src/bz-flathub-category.c:141 msgid "More Utilities" msgstr "Mehr Dienstprogramme" #: src/bz-flathub-category.c:142 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Im Trend" #: src/bz-flathub-category.c:142 msgid "More Trending" msgstr "Mehr von „Im Trend“" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:171 msgid "Popular" msgstr "Beliebt" #: src/bz-flathub-category.c:143 msgid "More Popular" msgstr "Mehr von „Beliebt“" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:161 msgid "Recently Added" msgstr "Kürzlich hinzugefügt" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:121 msgid "New" msgstr "Neu" #: src/bz-flathub-category.c:144 msgid "More New" msgstr "Mehr Neues" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:151 msgid "Recently Updated" msgstr "Kürzlich aktualisiert" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Aktualisiert" #: src/bz-flathub-category.c:145 msgid "More Updated" msgstr "Mehr von „Aktualisiert“" #: src/bz-flathub-category.c:146 msgid "Mobile" msgstr "Mobil" #: src/bz-flathub-category.c:146 msgid "More Mobile" msgstr "Mehr Mobil" #: src/bz-flathub-category.c:147 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:147 msgid "More Adwaita" msgstr "Mehr Adwaita" #: src/bz-flathub-category.c:148 msgid "KDE Apps" msgstr "KDE-Apps" #: src/bz-flathub-category.c:148 msgid "More KDE Apps" msgstr "Mehr KDE-Apps" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub wurde nicht hinzugefügt" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Flathub wurde auf keiner Ihrer Flatpak-Installationen gefunden." #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub nicht erreichbar" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Flathub nicht erreichbar" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for applications." msgstr "" #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Apps suchen" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "" #: src/bz-flathub-page.blp:198 msgid "App of the Day" msgstr "App des Tages" #: src/bz-flathub-page.blp:261 msgid "On the Go" msgstr "Unterwegs" #: src/bz-flathub-page.blp:273 msgid "Apps for your Linux phones and tablets" msgstr "" #: src/bz-flathub-page.blp:284 src/bz-flathub-page.blp:319 msgid "More Mobile Apps" msgstr "Mehr Mobile Apps" #: src/bz-flathub-page.blp:375 msgid "We​ ♥​ Games" msgstr "Wir ♥​ Spiele" #: src/bz-flathub-page.blp:388 msgid "Games and apps to run your favorite titles" msgstr "" #: src/bz-flathub-page.blp:422 msgid "More Games" msgstr "Mehr Spiele" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 #: src/bz-library-page.blp:82 msgid "No Results" msgstr "Keine Ergebnisse" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Versuchen Sie eine andere Suchanfrage" #: src/bz-full-view.blp:41 msgid "Content" msgstr "Inhalt" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "Vorschau des Store-Erscheinungsbilds" #: src/bz-full-view.blp:235 msgid "_Support" msgstr "_Unterstützen" #: src/bz-full-view.blp:460 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Diese App verwendet eine Laufzeitumgebung, die keine Updates und " "Sicherheitsaktualisierungen mehr enthält. Sie könnte unsicher zu verwenden " "werden." #: src/bz-full-view.blp:545 msgid "Trash Data" msgstr "" #: src/bz-full-view.blp:607 msgid "Add-ons" msgstr "Erweiterungen" #: src/bz-full-view.blp:642 msgid "More Add-Ons" msgstr "Mehr Erweiterungen" #: src/bz-full-view.blp:653 msgid "Links" msgstr "" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Keine URL" #: src/bz-full-view.c:199 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "Diese App steht unter einer FLOSS-Lizenz, was bedeutet, dass der Quellcode " "auf Sicherheit geprüft werden kann." #: src/bz-full-view.c:200 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "Diese App hat eine proprietäre Lizenz, das bedeute, dass der Quellcode " "privat entwickelt wird und kann nicht von einer unabhängigen dritten Partei " "überprüft werden." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Mehr Apps" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Mehr Apps von %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Andere Apps von diesem Entwickler" #: src/bz-full-view.c:217 src/bz-full-view.c:317 #, c-format msgid "Other Apps by %s" msgstr "Andere Apps von %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" #: src/bz-full-view.c:319 msgid "Other Apps" msgstr "Andere Apps" #: src/bz-full-view.c:321 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d App" msgstr[1] "%d Apps" #: src/bz-full-view.c:537 src/bz-user-data-tile.c:144 msgid "Failed to Remove User Data" msgstr "" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Hardwareunterstützung" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Tastaturunterstützung" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Benötigt Tastatur" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Tastatur empfohlen" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Unterstützt Tastaturen" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Tastaturunterstützung unbekannt" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Mausunterstützung" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Benötigt Maus oder anderes Zeigegerät" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Maus oder anderes Zeigegerät empfohlen" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Unterstützt Mäuse und andere Zeigegeräte" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Mausunterstützung unbekannt" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Touchscreen-Unterstützung" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Benötigt einen Touchscreen" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Empfiehlt Touchscreen" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Unterstützt Touchscreens" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Touchscreen-Unterstützung unbekannt" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Mobilgeräteunterstützung" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Funktioniert auf Mobilgeräten" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Könnte auf Mobilgeräten nicht gut funktionieren" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Desktop-Unterstützung" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Funktioniert gut auf großen Bildschirmen" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s funktioniert auf den meisten Geräten" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Öffnen" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "App deinstallieren" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Entfernen" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:164 #: src/bz-updates-card.c:183 msgid "Update" msgstr "Aktualisieren" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:105 msgid "Remove" msgstr "Entfernen" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Abbrechen" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Wird abgebrochen" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "Installierte Apps anzeigen" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "Suche löschen" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "Keine Apps gefunden" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:113 msgid "Library" msgstr "Bibliothek" #: src/bz-library-page.blp:128 msgid "Pending Updates" msgstr "Anstehende Aktualisierungen" #: src/bz-library-page.blp:155 msgid "Downloads" msgstr "Downloads" #: src/bz-library-page.blp:198 msgid "Recently Uninstalled" msgstr "Kürzlich deinstalliert" #: src/bz-library-page.blp:249 msgid "Clear Finished Tasks" msgstr "Abgeschlossene Aufgaben löschen" #: src/bz-library-page.blp:334 msgid "Sort By" msgstr "Sortieren nach" #: src/bz-library-page.blp:348 msgid "Name" msgstr "Name" #: src/bz-library-page.blp:354 msgid "Size" msgstr "Größe" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "" #: src/bz-library-page.c:193 src/bz-updates-card.c:433 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u verfügbare Aktualisierung" msgstr[1] "%u verfügbare Aktualisierungen" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u installierte App" msgstr[1] "%u installierte Apps" #: src/bz-license-dialog.blp:94 msgid "Get Involved" msgstr "Machen Sie mit" #: src/bz-license-dialog.blp:111 msgid "Learn More" msgstr "Mehr erfahren" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Unbekannte Lizenz" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Entwickelt von der Gemeinschaft" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:49 msgid "License" msgstr "Lizenz" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Mit Flathub verbinden" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Leider ist ein Fehler aufgetreten" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Fertigstellen" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Hallo %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Bilddateien" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Vorschau" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Einstellungen" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:235 msgid "Refresh Manually" msgstr "Manuell aktualisieren" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Inhaltsfilter" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Nur freie Software" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary applications when browsing and searching" msgstr "" "Proprietäre Apps beim Durchsuchen und in den Suchergebnissen ausblenden" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Nur Flathub Ergebnisse" #: src/bz-preferences-dialog.blp:40 msgid "" "Limit search and browse results to applications only available on Flathub" msgstr "" "Suchergebnisse und Inhalte auf nur in Flathub verfügbare Apps beschränken" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "Nur verifizierte Ergebnisse" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Apps ausschließen, die nicht von Flathub verifiziert wurden" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "Veraltete Apps ausblenden" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "Apps ausschließen, die nicht mehr aktiv weiterentwickelt werden" #: src/bz-preferences-dialog.blp:55 msgid "Progress Bar Theme" msgstr "Fortschrittsbalken-Design" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Akzentfarbe" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Pride-Farben" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Lesbian Pride-Farben" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Gay Pride-Farben" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Transgender Pride-Farben" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Nichtbinäre Pride-Farben" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Bisexuelle Pride-Farben" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Asexuelle Pride-Farben" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Pansexuelle Pride-Farben" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Aromantische Pride-Farben" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Genderfluide Pride-Farben" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Polysexuelle Pride-Farben" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Omnisexuelle Pride-Farben" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Aroace Pride-Farben" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Agender Pride-Farben" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Genderqueere Pride-Farben" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Intersexuelle Pride-Farben" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Demigender-Pride-Farben" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Bi-romantische Pride-Farben" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Pride-Farben der Behindertenbewegung" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Femboy-Pride-Farben" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Neutrois-Pride-Farben" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:155 msgid "Version History" msgstr "Versionsverlauf" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Versionsverlauf" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Heute" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Gestern" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Vor %d Tag" msgstr[1] "Vor %d Tagen" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Vor %d Woche" msgstr[1] "Vor %d Wochen" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Vor %d Monat" msgstr[1] "Vor %d Monaten" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Vor %d Jahr" msgstr[1] "Vor %d Jahren" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Version: %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Keine Details für diese Veröffentlichung" #: src/bz-releases-list.c:263 msgid "Get More Information" msgstr "Weitere Informationen erhalten" #: src/bz-rich-app-tile.blp:217 msgid "Uninstall" msgstr "Deinstallieren" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:369 msgid "Get" msgstr "Installieren" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Unbekannte Berechtigungen" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "" #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Keine Berechtigungen" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "App ist vollständig isoliert" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Netzwerk-Zugriff" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Hat Zugriff auf das Internet" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Kein Netzwerk-Zugriff" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Hat keinen Zugriff auf das Internet" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "" #: src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Willkürliche Berechtigungen" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Benutzereinstellungen" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Kein Dateisystemzugriff" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Verifizierter App-Entwickler" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Proprietärer Code" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Auditierbarer Code" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "KDE Connect-Integration" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "" #: src/bz-safety-dialog.blp:60 msgid "App ID" msgstr "App-ID" #: src/bz-safety-dialog.blp:70 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:101 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" #: src/bz-safety-dialog.c:167 msgid "Safety" msgstr "Sicherheit" #: src/bz-safety-dialog.c:226 #, c-format msgid "%s is Safe" msgstr "%s ist sicher" #: src/bz-safety-dialog.c:231 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s hat keine unsicheren Berechtigungen" #: src/bz-safety-dialog.c:236 #, c-format msgid "%s is Probably Safe" msgstr "" #: src/bz-safety-dialog.c:241 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s ist möglicherweise unsicher" #: src/bz-safety-dialog.c:246 #, c-format msgid "%s is Unsafe" msgstr "%s ist unsicher" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "Bild kopieren" #: src/bz-screenshot-page.blp:150 msgid "Reset View" msgstr "Ansicht zurücksetzen" #: src/bz-screenshot-page.blp:161 msgid "Zoom Out" msgstr "Verkleinern" #: src/bz-screenshot-page.blp:171 msgid "Zoom In" msgstr "Vergrößern" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "Filter" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Verifiziert" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Nicht-_EOL" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategorien" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "Nach Apps, Spielen und Software suchen" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "Suchfilter" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "Suche löschen" #: src/bz-search-page.blp:209 msgid "Browse Categories" msgstr "Kategorien durchsuchen" #: src/bz-search-page.blp:242 msgid "Categories Unavailable" msgstr "Kategorien nicht verfügbar" #: src/bz-search-page.blp:243 msgid "Search for apps using the search bar above." msgstr "" #: src/bz-search-page.blp:362 msgid "No Applications Found" msgstr "Keine App gefunden" #: src/bz-search-page.c:247 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Video" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Büro" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Kalender" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulator" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub-Seite" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Projekt-Webseite" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Bugtracker" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "FAQ" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Hilfe" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Spenden" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Übersetzen" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Kontakt" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Quellcode" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Mitmachen" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Link kopieren" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Zeitleiste" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Installationen:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Welt" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Seit 15.4.2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM Installationen gesamt" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK Installationen gesamt" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d Installationen gesamt" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Benutzerdaten behalten" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Alle Daten löschen" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "%s installieren?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Wählen Sie die zu installierende Version. Es können zusätzliche gemeinsam genu" "tzte Komponenten installiert werden" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "" "Es könnten zusätzliche gemeinsam genutzte Komponenten installiert werden" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Abbrechen" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Installieren" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "%s entfernen?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Wählen Sie die Version, die entfernt werden soll." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "" "Es wird nicht mehr möglich sein, %s nach der Deinstallation auszuführen." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Trotzdem installieren" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Alle Apps sind bereits installiert" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_OK" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "%u App installieren?" msgstr[1] "%u Apps installieren?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d Erweiterungen werden installiert." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Zusätzlich werden Erweiterungen installiert." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Alle installieren" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "In %.02f Sekunden abgeschlossen" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "App-Erweiterung" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Laufzeitumgebung" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "In der Warteschlange" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Abgeschlossen" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Abgebrochen" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Fehler" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Vorgang abbrechen" #: src/bz-transaction-tile.blp:436 msgid "Show Error Info" msgstr "Fehlerinformationen anzeigen" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s Freigegeben" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Transaktionsfehler" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Ausstehend" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_ Alle aktualisieren" #: src/bz-updates-card.c:211 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "" msgstr[1] "" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Benutzerdaten bereinigen" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "Keine Benutzerdaten gefunden" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "Benutzerdaten" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "Benutzerdaten löschen" #: src/bz-user-data-tile.c:150 #, c-format msgid "Trashed User Data for %s" msgstr "" #: src/bz-window.blp:71 msgid "Refreshing" msgstr "Wird aktualisiert" #: src/bz-window.blp:89 msgid "Curated" msgstr "Vorgestellt" #: src/bz-window.blp:101 msgid "Explore" msgstr "Erkunden" #: src/bz-window.blp:128 msgid "Search" msgstr "Suchen" #: src/bz-window.blp:215 msgid "Main Menu" msgstr "Hauptmenü" #: src/bz-window.blp:226 msgid "You are running a new version of Bazaar!" msgstr "Sie verwenden eine neue Version von Bazaar!" #: src/bz-window.blp:227 msgid "See What's New" msgstr "Neuerungen ansehen" #: src/bz-window.blp:234 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" #: src/bz-window.blp:279 msgid "_Donate to Bazaar" msgstr "_An Bazaar spenden" #: src/bz-window.blp:285 msgid "_Refresh" msgstr "_Aktualisieren" #: src/bz-window.blp:289 msgid "_Login With Flathub" msgstr "_Mit Flathub anmelden" #: src/bz-window.blp:295 msgid "_Manage Leftover User Data" msgstr "_Benutzerdaten bereinigen" #: src/bz-window.blp:301 msgid "_Preferences" msgstr "_Einstellungen" #: src/bz-window.blp:306 msgid "_Keyboard Shortcuts" msgstr "_Tastaturkurzbefehle" #: src/bz-window.blp:311 msgid "_About Bazaar" msgstr "_Über Bazaar" #: src/bz-window.blp:317 msgid "_Quit Bazaar" msgstr "_Bazaar beenden" #: src/bz-window.blp:342 msgid "Log Out" msgstr "Abmelden" #. Translators: %s is the title of the current page #: src/bz-window.c:376 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:596 src/bz-window.c:634 msgid "Failed to launch application" msgstr "Start der App fehlgeschlagen" #: src/bz-window.c:843 msgid "You can't remove Bazaar from Bazaar!" msgstr "" #: src/bz-window.c:1127 src/bz-window.c:1161 msgid "Can't do that right now!" msgstr "Das kann momentan nicht getan werden." #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Installation" msgstr[1] "Installationen" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigation" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Erkunden-Seite öffnen" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Bibliothek-Seite öffnen" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Such-Seite öffnen" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Remotes synchronisieren" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Allgemein" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Einstellungen öffnen" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Kurzbefehle anzeigen" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Fenster schließen" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Bazaar beenden" #~ msgid "Retry Flathub Connection" #~ msgstr "Nur Flathub-Apps anzeigen" #~ msgid "Tags:" #~ msgstr "Stichwörter:" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "" #~ "Verbinden Sie Ihr Flathub-Konto mit Bazaar, um Ihre favorisierten Apps zu " #~ "verwalten." #~ msgid "Delay Search Results" #~ msgstr "Suchergebnisse verzögern" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "Ergebnis-Performance durch Debouncing der Suchbegriffe verbessern" #~ msgid "Progress Bar" #~ msgstr "Fortschrittsbalken" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "Wählen Sie ein Design für den Fortschrittsbalken!" #~ msgid "Open Link" #~ msgstr "Link öffnen" #~ msgid "No Results Found" #~ msgstr "Keine Ergebnisse gefunden" #~ msgid "Search failed" #~ msgstr "Suchen fehlgeschlagen" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "Es legt Wert darauf, die Entwickler zu unterstützen, die den Linux-" #~ "Desktop möglich machen. Bazaar verfügt über ein „vorgestelltâ€-" #~ "Unterfenster, der von Distributoren eingerichtet werden kann, um eine " #~ "lokalisiertere Erfahrung zu ermöglichen." #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "Nucleus app page" #~ msgstr "Seite der Nucleus App" #, fuzzy #~ msgid "_Refresh Content" #~ msgstr "Store-Inhalt aktualisieren" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Synchronizing..." #~ msgstr "Abgleichen …" #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "%d Einträge empfangen …" #~ msgid "Close" #~ msgstr "Schließen" #~ msgid "Copy and Close" #~ msgstr "Kopieren und Schließen" #~ msgid "Toggle transaction sidebar" #~ msgstr "Seitenleiste für Transaktionen anzeigen" #~ msgid "Download & Install Application" #~ msgstr "Apps herunterladen & installieren" #~ msgid "Install Other Version" #~ msgstr "Andere Version installieren" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "%s bis jetzt übertragen" #~ msgid "Tasks" #~ msgstr "Aufgaben" #~ msgid "Stop Active Tasks" #~ msgstr "Aktiven Aufgaben stoppen" #~ msgid "No Tasks Yet" #~ msgstr "Noch keine Aufgaben" #~ msgid "Refreshing Store Content" #~ msgstr "Store-Inhalt aktualisieren" #~ msgid "Flathub" #~ msgstr "Flathub" #, fuzzy, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "Es sind Aktualisierungen verfügbar" #~ msgstr[1] "Es sind Aktualisierungen verfügbar" #~ msgid "Updates Are Available" #~ msgstr "Es sind Aktualisierungen verfügbar" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "Für die folgenden Apps sind Aktualisierungen erhältlich. Möchten Sie " #~ "diese installieren?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "%d Laufzeitumgebungen und/oder Erweiterungen haben neue Aktualisierungen " #~ "erhalten. Möchten Sie diese installieren?" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "" #~ "Zusätzlich werden %d Laufzeitumgebungen und/oder Erweiterungen " #~ "aktualisiert." #~ msgid "Update Now" #~ msgstr "Jetzt aktualisieren" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "Die Möglichkeit, lokale .flatpak-Bundle-Dateien zu überprüfen und zu " #~ "installieren, wird in Kürze verfügbar sein!\n" #~ "In der Zwischenzeit können Sie versuchen, folgenden Befehl in der " #~ "Befehlszeile auszuführen:\n" #~ "\n" #~ "flatpak install --bundle dein-bundle.flatpak" #~ msgid "Resume Current Tasks" #~ msgstr "Die aktuelle Ausgabe fortsetzen" #~ msgid "Pause Current Tasks" #~ msgstr "Die aktuelle Aufgabe pausieren" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "Transaktionsverwaltung umschalten" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "Beenden" #~ msgid "Hide EOL Entries" #~ msgstr "EOL-Einträge ausblenden" #~ msgid "Hide EOL entries and entries depending on them" #~ msgstr "EOL-Einträge und davon abhängige Einträge ausblenden" #~ msgid "Show Git Forge Star Counts" #~ msgstr "Git Forge Sterneanzahl anzeigen" #~ msgid "" #~ "Whether to attempt to detect and show \"star counts\" for projects in the " #~ "full view" #~ msgstr "" #~ "Ob versucht werden soll, die Sternanzahl für Projekte in der Vollansicht " #~ "anzuzeigen" #~ msgid "Only Show Free Software" #~ msgstr "Nur freie Software anzeigen" #~ msgid "Hide proprietary software" #~ msgstr "Proprietäre Software ausblenden" #~ msgid "Debounce Search Inputs" #~ msgstr "Sucheingaben verzögern" #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "" #~ "Eine Verzögerung hinzufügen, um sofortige Antworten während der Eingabe " #~ "zu verhindern" #~ msgid "Describes the look of the global progress bar" #~ msgstr "Beschreibt das Aussehen des globalen Fortschrittsbalkens" #~ msgid "Saved Window Dimensions" #~ msgstr "Gespeicherte Fensterabmessungen" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "" #~ "Die Fensterabmessungen, die vom nächsten Bazaar-Fenster verwendet werden " #~ "sollen" #~ msgid "?" #~ msgstr "?" #, c-format #~ msgid "%s is suitable for toddlers" #~ msgstr "%s ist für Kleinkinder geeignet" #~ msgid "--- MB" #~ msgstr "--- MB" #~ msgid "Of the size of human DNA" #~ msgstr "Der Größe der menschlichen DNA" #~ msgid "3 billion base pairs" #~ msgstr "3 Milliarden Basenpaare" #~ msgid "Of the Linux Kernel" #~ msgstr "Des Linux Kernels" #~ msgid "linux-6.17.tar.xz" #~ msgstr "linux-6.17.tar.xz" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "Des Apollo 11 Guidance-Computers" #~ msgid "Total ROM and RAM" #~ msgstr "Gesamt-ROM und RAM" #~ msgid "Of the original Super Mario Bros" #~ msgstr "Des ursprünglichen Super Mario Bros." #~ msgid "On the NES" #~ msgstr "Auf dem NES" #~ msgid "Of the size of Wikipedia" #~ msgstr "Der Größe von Wikipedia" #~ msgid "Without any media" #~ msgstr "Ohne jegliche Medien" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "Diese Funktion ist derzeit nicht freigeschaltet. Es wird empfohlen, " #~ "Flatseal herunterzuladen und zu installieren, um Berechtigungen von " #~ "Anwendungen einzustellen." #~ msgid "Entry Inspector" #~ msgstr "Eintragsinspektor" #~ msgid "Serialize" #~ msgstr "Serialisierung der Anfrage ist fehlgeschlagen" #~ msgid "Convert to JSON" #~ msgstr "In JSON umwandeln" #~ msgid "We ♥ Games" #~ msgstr "Wir ♥ Spiele" #~ msgid "Repository Star Count" #~ msgstr "Repository Sterneanzahl" #~ msgid "Bazaar Inspector" #~ msgstr "Bazaar-Inspektor" #~ msgid "Active Blocklists" #~ msgstr "Aktive Blocklisten" #~ msgid "Active Curated-Configs" #~ msgstr "Aktive Vorgestellte Einrichtung" #~ msgid "All Entry Groups" #~ msgstr "Alle Eintragsgruppen" #~ msgid "Decache and Inspect" #~ msgstr "Entcachen und Inspizieren" #~ msgid "No Flatpaks Installed" #~ msgstr "Keine Anwendungen installiert" #~ msgid "Display Star Count" #~ msgstr "Sterneanzahl anzeigen" #~ msgid "Open Bazaar Inspector" #~ msgstr "Bazaar-Inspektor öffnen" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %u Downloads" #~ msgid "Hide proprietary software when searching" #~ msgstr "Proprietäre Anwendungen in Suchergebnissen ausblenden" #~ msgid "Filter search results to only show applications available on Flathub" #~ msgstr "" #~ "Suchergebnisse auf Anwendungen beschränken, die auf Flathub verfügbar sind" #~ msgid "Constructing Flatpak instance..." #~ msgstr "Flatpak-Instanz wird erstellt …" #~ msgid "Reusing last Flatpak instance..." #~ msgstr "Letzte Flatpak-Instanz wiederverwenden …" #~ msgid "Flathub is not registered on this system" #~ msgstr "Flathub ist auf diesem System nicht eingerichtet" #~ msgid "" #~ "Would you like to add Flathub as a remote? If you decline, the Flathub " #~ "page will not be available. You can change this later." #~ msgstr "" #~ "Möchten Sie Flathub hinzufügen? Wenn Sie ablehnen, ist die Flathub-Seite " #~ "nicht verfügbar. Sie können dies später ändern." #~ msgid "Add Flathub" #~ msgstr "Flathub hinzufügen" #~ msgid "Identifying installed entries..." #~ msgstr "Installierte Einträge werden erkannt …" #, c-format #~ msgid "%'d of %'d" #~ msgstr "%'d von %'d" #, c-format #~ msgid "Waiting for background indexing tasks to catch up..." #~ msgstr "Warten auf Hintergrund-Indizierung …" #, c-format #~ msgid "Completed initialization in %0.2f seconds" #~ msgstr "Initialisierung in %0.2f Sekunden abgeschlossen" #~ msgid "Verified by the original developers" #~ msgstr "" #~ "Diese Anwendung wurde von den ursprünglichen Entwicklern der Software " #~ "verifiziert." #~ msgid "Manage Addons" #~ msgstr "Erweiterungen verwalten" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Azenyr" #~ msgstr "Azenyr" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Goudarz Jafari" #~ msgstr "Goudarz Jafari" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore (Lumaeris)" #~ msgstr "Jill Fiore (Lumaeris)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "João Victor (Leal)" #~ msgstr "João Victor (Leal)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "KiKaraage" #~ msgstr "KiKaraage" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Léane GRASSER" #~ msgstr "Léane GRASSER" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Marcel Mrówka (Microwave)" #~ msgstr "Marcel Mrówka (Microwave)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Peter Dave Hello" #~ msgstr "Peter Dave Hello" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Pietro F." #~ msgstr "Pietro F." #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shinsei" #~ msgstr "Shinsei" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "camegone" #~ msgstr "camegone" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "" #~ "Abfragenbeginn der Gegenstelleneinträge unter Bezugnahme auf %d " #~ "Blockliste(n) …" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "Bazaar wurde nicht mit vorgestellten Inhalten eingerichtet. Nehmen Sie " #~ "Kontakt mit den Entwicklern Ihres Betriebssystems auf, um Hilfe zu " #~ "erhalten." #~ msgid "Games" #~ msgstr "Spiele" #~ msgid "Graphics" #~ msgstr "Grafik" #~ msgctxt "Project URL Type" #~ msgid "Homepage" #~ msgstr "Startseite" #~ msgid "Excludes shared components" #~ msgstr "Gemeinsame Komponenten ausgeschlossen" #~ msgid "Source code may not be available" #~ msgstr "Der Quellcode ist möglicherweise nicht verfügbar." #~ msgid "Click for details" #~ msgstr "Klicken Sie, um Details anzusehen" #~ msgid "Repositories" #~ msgstr "Repositories" #~ msgid "Open in browser" #~ msgstr "Im Webbrowser öffnen" #, c-format #~ msgid "%'d Monthly Downloads" #~ msgstr "%'d monatliche Downloads" #~ msgid "%B %-d" #~ msgstr "%B %-d" #~ msgid "Run this application" #~ msgstr "Diese Anwendung ausführen" #~ msgid "Run" #~ msgstr "Ausführen" #~ msgid "Git Forge Star Counts" #~ msgstr "Git Forge Sterneanzahl" #~ msgid "Not having a GitHub access token may trigger rate limits" #~ msgstr "" #~ "Wenn Sie keinen GitHub-Token haben, kann dies zu Ratenbegrenzungen führen." #~ msgid "Show Only Flathub Apps" #~ msgstr "Nur Flathub-Anwendungen anzeigen" #~ msgid "Wait for a brief pause to reduce system load" #~ msgstr "EIne kurze Weile warten, um die Systemlast zu verringern" #~ msgid "Theme" #~ msgstr "Design" #~ msgid "Pride Rainbow Flag" #~ msgstr "Pride-Regenbogenflagge" #~ msgid "Bisexual Flag" #~ msgstr "Bisexuellenflagge" #~ msgid "Asexual Flag" #~ msgstr "Asexuellenflagge" #~ msgid "Share" #~ msgstr "Teilen" #~ msgid "Browse" #~ msgstr "Durchsuchen" #~ msgid "Go Back" #~ msgstr "Zurück" #~ msgid "View curated applications" #~ msgstr "Vorgestellte Anwendungen ansehen" #~ msgid "View the latest on Flathub" #~ msgstr "Das neueste auf Flathub ansehen" #~ msgid "_Quit Service" #~ msgstr "Dienst _beenden" #~ msgid "Up to date!" #~ msgstr "Auf neuestem Stand" #~ msgid "Settings & user data will be kept" #~ msgstr "Einstellungen und Benutzerdaten werden beibehalten" #~ msgid "Show Animated Background" #~ msgstr "Animierten Hintergrund anzeigen" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "Den animierten Hintergrund auf der Startseite anzeigen" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible." #~ msgstr "" #~ "Es legt Wert darauf, die Entwickler zu unterstützen, die den Linux-" #~ "Desktop möglich machen." #~ msgid "Calligraphy application page" #~ msgstr "Calligraphy" #~ msgid "Download graph for Blender" #~ msgstr "Downloadkurve für Blender" #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "%'d Einträge von %'d empfangen (%0.1f Sekunden vergangen)" #~ msgid "Apps Of The Week" #~ msgstr "Anwendungen der Woche" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "" #~ "Die Anzahl der Downloads in den letzten 30 Tagen. Klicken Sie hier, um " #~ "die Download-Statistiken für diese Anwendung anzuzeigen." #~ msgid "Remote repo name" #~ msgstr "Namen des Repository" #~ msgid "How the application looks" #~ msgstr "Wie die Anwendung aussieht" #~ msgid "Appearance" #~ msgstr "Erscheinungsbild" #~ msgid "Show animated background" #~ msgstr "Animierten Hintergrund anzeigen" #~ msgid "Type to filter" #~ msgstr "Zum Filtern hier tippen" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Ergebnisse mit proprietären Lizenzen ausschließen" #~ msgid "Advanced" #~ msgstr "Erweitert" #~ msgid "Open this link externally" #~ msgstr "Diesen Link extern öffnen" #~ msgid "Downloads Over Time" #~ msgstr "Downloads im Laufe der Zeit" #~ msgid "Minimize Lower Bound" #~ msgstr "Untere Grenze verringern" #~ msgid "Maximize Upper Bound" #~ msgstr "Obere Grenze vergrößern" #~ msgid "Installing" #~ msgstr "Wird installiert" #~ msgid "Removing" #~ msgstr "Wird entfernt" #~ msgid "Transactions Will Appear Here" #~ msgstr "Transaktionen werden hier erscheinen" #~ msgid "Halt the execution of transactions" #~ msgstr "Die Ausführung von Transaktionen anhalten" #~ msgid "Confirm Action" #~ msgstr "Aktion bestätigen" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Sie sind dabei, die folgende Anwendung zu entfernen:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Sind Sie sich sicher?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Sie sind dabei, die folgende Anwendung zu installieren:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Sind Sie sich sicher?" #~ msgid "Resume the execution of transactions" #~ msgstr "Die Ausführung von Transaktionen fortsetzen" #~ msgid "Pause the execution of transactions" #~ msgstr "Die Ausführung von Transaktionen pausieren" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Bazaar-Hauptfenster zeigt Blender" #~ msgid "Match using regular expressions" #~ msgstr "Übereinstimmung mit regulären Ausdrücken" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "" #~ "Filterung und Sortierung hinter einem Überblendungseffekt verstecken" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/el.po������������������������������������������������������������������0000664�0000000�0000000�00000175556�15240005042�0016737�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Greek translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-18 02:22+0200\n" "PO-Revision-Date: 2025-12-18 04:30+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.8\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 #: src/bz-window.blp:234 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "" "ΠÏοσθήκη, αφαίÏεση ή ενημέÏωση Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï flatpak σε αυτόν τον υπολογιστή" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "" "GTK;ΣÏστημα;ΔιαχειÏιστής πακέτων;Ανακάλυψη;Flatpak;Λογισμικό;Κατάστημα;" #: data/io.github.kolunmi.Bazaar.gschema.xml:6 msgid "Hide EOL Entries" msgstr "ΑπόκÏυψη καταχωÏήσεων EOL" #: data/io.github.kolunmi.Bazaar.gschema.xml:7 msgid "Hide EOL entries and entries depending on them" msgstr "ΑπόκÏυψη καταχωÏήσεων EOL και καταχωÏήσεων που εξαÏτώνται από αυτές" #: data/io.github.kolunmi.Bazaar.gschema.xml:11 msgid "Only Show Free Software" msgstr "Εμφάνιση μόνο δωÏεάν λογισμικοÏ" #: data/io.github.kolunmi.Bazaar.gschema.xml:12 msgid "Hide proprietary software" msgstr "ΑπόκÏυψη ιδιόκτητου λογισμικοÏ" #: data/io.github.kolunmi.Bazaar.gschema.xml:16 msgid "Show Only Flathub Content" msgstr "Εμφάνιση μόνο πεÏιεχομένου Flathub" #: data/io.github.kolunmi.Bazaar.gschema.xml:17 msgid "Hide applications which do not originate from Flathub" msgstr "ΑπόκÏυψη εφαÏμογών που δεν Ï€ÏοέÏχονται από το Flathub" #: data/io.github.kolunmi.Bazaar.gschema.xml:21 msgid "Debounce Search Inputs" msgstr "Αναζήτηση εισόδων χωÏίς αναπήδηση" #: data/io.github.kolunmi.Bazaar.gschema.xml:22 msgid "Add a delay before searching to prevent instant replies while typing" msgstr "" "ΠÏοσθέστε μια καθυστέÏηση Ï€Ïιν από την αναζήτηση για να αποτÏέψετε τις " "άμεσες απαντήσεις κατά την πληκτÏολόγηση" #: data/io.github.kolunmi.Bazaar.gschema.xml:46 msgid "Global Progress Bar Theme" msgstr "Καθολικό θέμα μπάÏας Ï€Ïοόδου" #: data/io.github.kolunmi.Bazaar.gschema.xml:47 msgid "Describes the look of the global progress bar" msgstr "ΠεÏιγÏάφει την εμφάνιση της καθολικής μπάÏας Ï€Ïοόδου" #: data/io.github.kolunmi.Bazaar.gschema.xml:51 msgid "Saved Window Dimensions" msgstr "Αποθηκευμένες διαστάσεις παÏαθÏÏου" #: data/io.github.kolunmi.Bazaar.gschema.xml:52 msgid "The window dimensions to be used by the next Bazaar window" msgstr "" "Οι διαστάσεις του παÏαθÏÏου που θα χÏησιμοποιηθοÏν από το επόμενο παÏάθυÏο " "Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "ΑνακαλÏψτε και εγκαταστήστε εφαÏμογές" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A new app store for GNOME with a focus on discovering and installing " "applications and addons from Flatpak remotes, particularly Flathub." msgstr "" "Ένα νέο κατάστημα εφαÏμογών για το GNOME με έμφαση στην αναζήτηση και " "εγκατάσταση εφαÏμογών και Ï€Ïόσθετων από απομακÏυσμένους διακομιστές Flatpak, " "ιδίως το Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. " "Bazaar features a \"curated\" tab that can be configured by distributors to " "allow for a more localized experience." msgstr "" "Δίνει έμφαση στην υποστήÏιξη των Ï€ÏογÏαμματιστών που καθιστοÏν δυνατή τη " "λειτουÏγία του Linux desktop. Το Bazaar διαθέτει μια καÏτέλα \"curated\" που " "μποÏεί να διαμοÏφωθεί από τους διανομείς ώστε να Ï€ÏοσφέÏει μια πιο τοπική " "εμπειÏία." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:54 msgid "The home page displaying Flathub apps" msgstr "Η αÏχική σελίδα που εμφανίζει τις εφαÏμογές Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:58 msgid "Nucleus app page" msgstr "Σελίδα εφαÏμογής Nucleus" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:62 msgid "Search page" msgstr "Σελίδα αναζήτησης" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:66 msgid "Category page" msgstr "Σελίδα κατηγοÏίας" #: src/bz-addons-dialog.blp:14 src/bz-full-view.blp:711 #: src/bz-installed-tile.blp:99 msgid "Manage Add-ons" msgstr "ΔιαχείÏιση Ï€Ïόσθετων" #: src/bz-addons-dialog.c:90 src/bz-full-view.blp:502 #: src/bz-installed-tile.blp:117 src/bz-transaction-view.blp:213 #: src/bz-window.c:1294 msgid "Remove" msgstr "ΚατάÏγηση" #: src/bz-addons-dialog.c:95 src/bz-full-view.blp:274 src/bz-full-view.blp:489 #: src/bz-transaction-view.blp:187 src/bz-window.c:1271 msgid "Install" msgstr "Εγκατάσταση" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:50 #: src/bz-full-view.c:373 src/bz-full-view.c:380 msgid "Age Rating" msgstr "Βαθμολογία ηλικίας" #: src/bz-age-rating-dialog.blp:40 src/bz-age-rating-dialog.c:790 msgid "?" msgstr "?" #: src/bz-age-rating-dialog.c:139 msgid "Cartoon Violence" msgstr "Βία στα κινοÏμενα σχέδια" #: src/bz-age-rating-dialog.c:140 msgid "No information regarding cartoon violence" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με τη βία στα κινοÏμενα σχέδια" #: src/bz-age-rating-dialog.c:143 msgid "Fantasy Violence" msgstr "Φανταστική βία" #: src/bz-age-rating-dialog.c:144 msgid "No information regarding fantasy violence" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με τη φανταστική βία" #: src/bz-age-rating-dialog.c:147 msgid "Realistic Violence" msgstr "Ρεαλιστική βία" #: src/bz-age-rating-dialog.c:148 msgid "No information regarding realistic violence" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με Ïεαλιστική βία" #: src/bz-age-rating-dialog.c:151 msgid "Violence Depicting Bloodshed" msgstr "Βία που απεικονίζει αιματοχυσία" #: src/bz-age-rating-dialog.c:152 msgid "No information regarding bloodshed" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με βία που απεικονίζει αιματοχυσία" #: src/bz-age-rating-dialog.c:155 msgid "Sexual Violence" msgstr "Σεξουαλική βία" #: src/bz-age-rating-dialog.c:156 msgid "No information regarding sexual violence" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με σεξουαλική βία" #: src/bz-age-rating-dialog.c:159 msgid "Alcohol" msgstr "Αλκοόλ" #: src/bz-age-rating-dialog.c:160 msgid "No information regarding references to alcohol" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές στο αλκοόλ" #: src/bz-age-rating-dialog.c:163 msgid "Narcotics" msgstr "ÎαÏκωτικά" #: src/bz-age-rating-dialog.c:164 msgid "No information regarding references to illicit drugs" msgstr "" "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές σε παÏάνομες ναÏκωτικές ουσίες" #: src/bz-age-rating-dialog.c:167 msgid "Tobacco" msgstr "Καπνός" #: src/bz-age-rating-dialog.c:168 msgid "No information regarding references to tobacco products" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές σε Ï€Ïοϊόντα καπνοÏ" #: src/bz-age-rating-dialog.c:171 src/bz-age-rating-dialog.c:358 msgid "Nudity" msgstr "Γυμνότητα" #: src/bz-age-rating-dialog.c:172 msgid "No information regarding nudity of any sort" msgstr "Καμία πληÏοφοÏία σχετικά με γυμνότητα οποιουδήποτε είδους" #: src/bz-age-rating-dialog.c:175 msgid "Sexual Themes" msgstr "Σεξουαλικά θέματα" #: src/bz-age-rating-dialog.c:176 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές ή απεικονίσεις ÏƒÎµÎ¾Î¿Ï…Î±Î»Î¹ÎºÎ¿Ï " "χαÏακτήÏα" #: src/bz-age-rating-dialog.c:179 msgid "Profanity" msgstr "Βωμολοχίες" #: src/bz-age-rating-dialog.c:180 msgid "No information regarding profanity of any kind" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με οποιαδήποτε μοÏφή βωμολοχίας" #: src/bz-age-rating-dialog.c:183 msgid "Inappropriate Humor" msgstr "Ακατάλληλο χιοÏμοÏ" #: src/bz-age-rating-dialog.c:184 msgid "No information regarding inappropriate humor" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με ακατάλληλο χιοÏμοÏ" #: src/bz-age-rating-dialog.c:187 msgid "Discrimination" msgstr "ΔιακÏίσεις" #: src/bz-age-rating-dialog.c:188 msgid "No information regarding discriminatory language of any kind" msgstr "Καμία πληÏοφοÏία σχετικά με διακÏιτική γλώσσα οποιουδήποτε είδους" #: src/bz-age-rating-dialog.c:191 msgid "Advertising" msgstr "Διαφήμιση" #: src/bz-age-rating-dialog.c:192 msgid "No information regarding advertising of any kind" msgstr "Καμία πληÏοφοÏία σχετικά με διαφημίσεις οποιουδήποτε είδους" #: src/bz-age-rating-dialog.c:195 msgid "Gambling" msgstr "ΤυχεÏά παιχνίδια" #: src/bz-age-rating-dialog.c:196 msgid "No information regarding gambling of any kind" msgstr "Καμία πληÏοφοÏία σχετικά με τυχεÏά παιχνίδια οποιουδήποτε είδους" #: src/bz-age-rating-dialog.c:199 msgid "Purchasing" msgstr "ΑγοÏές" #: src/bz-age-rating-dialog.c:200 msgid "No information regarding the ability to spend money" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με τη δυνατότητα δαπάνης χÏημάτων" #: src/bz-age-rating-dialog.c:203 msgid "Chat Between Users" msgstr "Συνομιλία Î¼ÎµÏ„Î±Î¾Ï Ï‡Ïηστών" #: src/bz-age-rating-dialog.c:204 msgid "No information regarding ways to chat with other users" msgstr "" "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με τους Ï„Ïόπους επικοινωνίας με άλλους " "χÏήστες" #: src/bz-age-rating-dialog.c:207 msgid "Audio Chat Between Users" msgstr "Ηχητική συνομιλία Î¼ÎµÏ„Î±Î¾Ï Ï‡Ïηστών" #: src/bz-age-rating-dialog.c:208 msgid "No information regarding ways to talk with other users" msgstr "" "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με τους Ï„Ïόπους επικοινωνίας με άλλους " "χÏήστες" #: src/bz-age-rating-dialog.c:211 msgid "Contact Details" msgstr "Στοιχεία επικοινωνίας" #: src/bz-age-rating-dialog.c:212 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με την κοινοποίηση ονομάτων χÏήστη " "κοινωνικών δικτÏων ή διευθÏνσεων ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου" #: src/bz-age-rating-dialog.c:215 msgid "Identifying Information" msgstr "ΠληÏοφοÏίες ταυτοποίησης" #: src/bz-age-rating-dialog.c:216 msgid "No information regarding sharing of user information with third parties" msgstr "" "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με την κοινοποίηση πληÏοφοÏιών χÏηστών σε " "Ï„Ïίτους" #: src/bz-age-rating-dialog.c:219 msgid "Location Sharing" msgstr "Κοινή χÏήση τοποθεσίας" #: src/bz-age-rating-dialog.c:220 msgid "No information regarding sharing of physical location with other users" msgstr "" "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με την κοινοποίηση της φυσικής τοποθεσίας " "σε άλλους χÏήστες" #: src/bz-age-rating-dialog.c:223 msgid "Prostitution" msgstr "ΠοÏνεία" #: src/bz-age-rating-dialog.c:224 msgid "No information regarding references to prostitution" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές σε ποÏνεία" #: src/bz-age-rating-dialog.c:227 msgid "Adultery" msgstr "Μοιχεία" #: src/bz-age-rating-dialog.c:228 msgid "No information regarding references to adultery" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές σε μοιχεία" #: src/bz-age-rating-dialog.c:231 msgid "Sexualized Characters" msgstr "Σεξουαλικοποιημένοι χαÏακτήÏες" #: src/bz-age-rating-dialog.c:232 msgid "No information regarding sexualized characters" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με Σεξουαλικοποιημένους χαÏακτήÏες" #: src/bz-age-rating-dialog.c:235 msgid "Desecration" msgstr "Βεβήλωση" #: src/bz-age-rating-dialog.c:236 msgid "No information regarding references to desecration" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές σε βεβήλωση" #: src/bz-age-rating-dialog.c:239 msgid "Human Remains" msgstr "ΑνθÏώπινα λείψανα" #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με οÏατά ανθÏώπινα λείψανα" #: src/bz-age-rating-dialog.c:243 msgid "Slavery" msgstr "Δουλεία" #: src/bz-age-rating-dialog.c:244 msgid "No information regarding references to slavery" msgstr "Δεν υπάÏχουν πληÏοφοÏίες σχετικά με αναφοÏές στη δουλεία" #: src/bz-age-rating-dialog.c:307 msgid "Does not include references to drugs" msgstr "Δεν πεÏιλαμβάνει αναφοÏές σε φάÏμακα" #: src/bz-age-rating-dialog.c:309 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "" "Δεν πεÏιλαμβάνει βÏισιές, χυδαίες εκφÏάσεις και άλλα είδη σκληÏής γλώσσας" #: src/bz-age-rating-dialog.c:311 msgid "Does not include ads or monetary transactions" msgstr "Δεν πεÏιλαμβάνει διαφημίσεις ή χÏηματικές συναλλαγές" #: src/bz-age-rating-dialog.c:313 msgid "Does not include sex or nudity" msgstr "Δεν πεÏιλαμβάνει σεξ ή γυμνότητα" #: src/bz-age-rating-dialog.c:315 msgid "Does not include uncontrolled chat functionality" msgstr "Δεν πεÏιλαμβάνει λειτουÏγία ανεξέλεγκτης συνομιλίας" #: src/bz-age-rating-dialog.c:317 msgid "Does not include violence" msgstr "Δεν πεÏιλαμβάνει βία" #: src/bz-age-rating-dialog.c:352 msgid "Drugs" msgstr "ÎαÏκωτικά" #: src/bz-age-rating-dialog.c:354 msgid "Strong Language" msgstr "ΣκληÏή γλώσσα" #: src/bz-age-rating-dialog.c:356 msgid "Money" msgstr "ΧÏήματα" #: src/bz-age-rating-dialog.c:360 msgid "Social" msgstr "Κοινωνικά" #: src/bz-age-rating-dialog.c:362 msgid "Violence" msgstr "Βία" #: src/bz-age-rating-dialog.c:564 #, c-format msgid "%s • %s" msgstr "%s • %s" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:752 src/bz-full-view.c:363 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:782 msgctxt "Age rating" msgid "All" msgstr "Όλα" #: src/bz-age-rating-dialog.c:846 #, c-format msgid "%s has an unknown age rating" msgstr "Το %s έχει άγνωστη ηλικιακή βαθμολογία" #: src/bz-age-rating-dialog.c:854 #, c-format msgid "%s is suitable for everyone" msgstr "Το %s είναι κατάλληλο για όλους" #: src/bz-age-rating-dialog.c:857 #, c-format msgid "%s is suitable for toddlers" msgstr "Το %s είναι κατάλληλο για νήπια" #: src/bz-age-rating-dialog.c:860 #, c-format msgid "%s is suitable for young children" msgstr "Το %s είναι κατάλληλο για μικÏά παιδιά" #: src/bz-age-rating-dialog.c:863 #, c-format msgid "%s is suitable for children" msgstr "Το %s είναι κατάλληλο για παιδιά" #: src/bz-age-rating-dialog.c:866 #, c-format msgid "%s is suitable for teenagers" msgstr "Το %s είναι κατάλληλο για εφήβους" #: src/bz-age-rating-dialog.c:869 #, c-format msgid "%s is suitable for adults" msgstr "Το %s είναι κατάλληλο για ενήλικες" #: src/bz-age-rating-dialog.c:872 #, c-format msgid "%s is suitable for %s" msgstr "Το %s είναι κατάλληλο για %s" #: src/bz-app-size-dialog.blp:43 msgid "--- MB" msgstr "--- MB" #: src/bz-app-size-dialog.blp:53 msgid "Download Size" msgstr "Μέγεθος λήψης" #: src/bz-app-size-dialog.c:55 msgid "Of the size of human DNA" msgstr "Του μεγέθους του ανθÏώπινου DNA" #: src/bz-app-size-dialog.c:55 msgid "3 billion base pairs" msgstr "3 δισεκατομμÏÏια ζεÏγη βάσεων" #: src/bz-app-size-dialog.c:56 msgid "Of the Linux Kernel" msgstr "Του πυÏήνα Linux" #: src/bz-app-size-dialog.c:56 msgid "linux-6.17.tar.xz" msgstr "linux-6.17.tar.xz" #: src/bz-app-size-dialog.c:57 msgid "Of the Apollo 11 guidance computer" msgstr "Του υπολογιστή πλοήγησης του Apollo 11" #: src/bz-app-size-dialog.c:57 msgid "Total ROM and RAM" msgstr "Συνολική ROM και RAM" #: src/bz-app-size-dialog.c:58 msgid "Of the original Super Mario Bros" msgstr "Από το αÏχικό Super Mario Bros" #: src/bz-app-size-dialog.c:58 msgid "On the NES" msgstr "Στο NES" #: src/bz-app-size-dialog.c:59 msgid "Of the size of Wikipedia" msgstr "Του μεγέθους της Wikipedia" #: src/bz-app-size-dialog.c:59 msgid "Without any media" msgstr "ΧωÏίς κανένα πολυμέσο" #: src/bz-app-tile.blp:84 src/bz-installed-page.blp:25 src/bz-window.blp:298 msgid "Installed" msgstr "Εγκατεστημένες" #: src/bz-apps-page.blp:14 src/bz-full-view.blp:43 src/bz-user-data-page.blp:15 #: src/bz-window.blp:443 msgid "Main Menu" msgstr "ΚÏÏιο μενοÏ" #: src/bz-apps-page.blp:17 src/bz-user-data-page.blp:18 src/bz-window.blp:522 msgid "_Donate to Bazaar â¤ï¸" msgstr "_ΔωÏίστε στο Bazaar â¤ï¸" #: src/bz-apps-page.blp:18 src/bz-user-data-page.blp:19 msgid "_Refresh Content" msgstr "_Ανανέωση πεÏιεχομένου" #: src/bz-apps-page.blp:22 src/bz-user-data-page.blp:22 src/bz-window.blp:529 msgid "_Preferences" msgstr "_ΠÏοτιμήσεις" #: src/bz-apps-page.blp:23 src/bz-user-data-page.blp:23 src/bz-window.blp:550 msgid "_Keyboard Shortcuts" msgstr "_ΣυντομεÏσεις πληκτÏολογίου" #: src/bz-apps-page.blp:24 src/bz-user-data-page.blp:24 src/bz-window.blp:555 msgid "_About Bazaar" msgstr "_Σχετικά με το Bazaar" #: src/bz-apps-page.blp:28 src/bz-user-data-page.blp:27 src/bz-window.blp:562 msgid "_Quit Bazaar" msgstr "_Κλείστε το Bazaar" #: src/bz-application.c:577 msgid "" "This functionality is currently disabled. It is recommended you download and " "install Flatseal to manage app permissions." msgstr "" "Αυτή η λειτουÏγία είναι Ï€Ïος το παÏόν απενεÏγοποιημένη. Συνιστάται να " "κατεβάσετε και να εγκαταστήσετε το Flatseal για να διαχειÏιστείτε τις άδειες " "της εφαÏμογής." #: src/bz-application.c:659 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:660 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #: src/bz-application.c:682 msgid "Adam Masciola" msgstr "Adam Masciola" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:685 msgid "translator-credits" msgstr "Xarishark-Zacharias Xenakis" #: src/bz-application.c:749 msgid "Logged Out Successfully!" msgstr "ΑποσÏνδεση με επιτυχία!" #: src/bz-application.c:855 msgid "Performing setup..." msgstr "Εκτέλεση εγκατάστασης..." #: src/bz-application.c:934 src/bz-application.c:943 msgid "Set Up Flathub" msgstr "ΡÏθμιση του Flathub" #: src/bz-application.c:937 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Το Flathub δεν είναι εγκατεστημένο σε αυτό το σÏστημα. Δεν θα μποÏείτε να " "πεÏιηγηθείτε και να εγκαταστήσετε εφαÏμογές στο Bazaar εάν δεν είναι " "διαθέσιμο.\n" "\n" "ΜποÏείτε ακόμα να χÏησιμοποιήσετε το Bazaar για να πεÏιηγηθείτε και να " "καταÏγήσετε ήδη εγκατεστημένες εφαÏμογές." #: src/bz-application.c:942 src/bz-update-dialog.blp:6 msgid "Later" msgstr "ΑÏγότεÏα" #: src/bz-application.c:1344 msgid "Synchronizing..." msgstr "ΣυγχÏονισμός..." #: src/bz-application.c:1483 #, c-format msgid "Receiving %d entries..." msgstr "Λήψη %d καταχωÏήσεων..." #: src/bz-application.c:1488 msgid "Checking for updates" msgstr "Έλεγχος για ενημεÏώσεις" #: src/bz-curated-view.blp:11 src/bz-flathub-page.blp:19 #: src/bz-full-view.blp:53 src/bz-installed-page.blp:15 #: src/bz-user-data-page.blp:52 src/bz-window.blp:183 msgid "Empty" msgstr "Άδειο" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "ΧωÏίς επιμέλεια" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "" "Δεν παÏέχονται πληÏοφοÏίες σχετικά με την επιμέλεια σε αυτό το σÏστημα. " "ΜποÏείτε να συνεχίσετε να πεÏιηγείστε στις εφαÏμογές στο Flathub" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "ΠεÏιήγηση στο Flathub" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 #: src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "Εκτός σÏνδεσης" #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:49 msgid "Browser" msgstr "ΠÏόγÏαμμα πεÏιήγησης" #: src/bz-developer-badge.c:131 msgid "Developer information not available." msgstr "Οι πληÏοφοÏίες για τον Ï€ÏογÏαμματιστή δεν είναι διαθέσιμες." #: src/bz-developer-badge.c:137 src/bz-developer-badge.c:151 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "Η ιδιοκτησία του αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï ÎµÏ†Î±Ïμογής %s δεν έχει επαληθευτεί και " "ενδέχεται να Ï€Ïόκειται για πακέτο κοινότητας." #: src/bz-developer-badge.c:155 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "Η ιδιοκτησία του αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï ÎµÏ†Î±Ïμογής %s έχει επαληθευτεί χειÏοκίνητα " "από την ομάδα του Flathub." #: src/bz-developer-badge.c:161 #, c-format msgid "" "The ownership of the %s app ID has been verified by <b>%s</b> on <b>%s</b>." msgstr "" "Η ιδιοκτησία του αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï ÎµÏ†Î±Ïμογής %s έχει επαληθευτεί από τον <b>%s</" "b> στις <b>%s</b>." #: src/bz-developer-badge.c:168 #, c-format msgid "The ownership of the %s app ID has been verified using %s." msgstr "" "Η ιδιοκτησία του αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï ÎµÏ†Î±Ïμογής %s έχει επαληθευτεί " "χÏησιμοποιώντας το %s." #: src/bz-developer-badge.c:172 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Η ιδιοκτησία του αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï ÎµÏ†Î±Ïμογής %s έχει επαληθευτεί." #: src/bz-entry-inspector.blp:5 msgid "Entry Inspector" msgstr "ΕπιθεωÏητής εισόδου" #: src/bz-entry-inspector.blp:76 msgid "Serialize" msgstr "ΣειÏιοποίηση" #: src/bz-entry-inspector.blp:80 msgid "Convert to JSON" msgstr "ΜετατÏοπή σε JSON" #: src/error.c:68 msgid "An Error Occurred" msgstr "ΠαÏουσιάστηκε σφάλμα" #: src/error.c:89 msgid "Close" msgstr "Κλείσιμο" #: src/error.c:90 msgid "Copy and Close" msgstr "ΑντιγÏαφή και κλείσιμο" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "ΠÏοηγοÏμενο" #: src/bz-featured-carousel.blp:53 msgid "Next" msgstr "Επόμενο" #: src/bz-featured-tile.blp:88 msgid "App of the Day" msgstr "ΕφαÏμογή της ημέÏας" #: src/bz-flathub-category.c:78 msgid "Audio & Video" msgstr "Ήχος & Βίντεο" #: src/bz-flathub-category.c:78 msgid "Media" msgstr "Πολυμέσα" #: src/bz-flathub-category.c:78 msgid "More Audio & Video" msgstr "ΠεÏισσότεÏα Ήχος & Βίντεο" #: src/bz-flathub-category.c:79 msgid "Developer Tools" msgstr "ΕÏγαλεία Ï€ÏογÏαμματιστή" #: src/bz-flathub-category.c:79 msgid "Develop" msgstr "ΠÏογÏαμματισμός" #: src/bz-flathub-category.c:79 msgid "More Developer Tools" msgstr "ΠεÏισσότεÏα εÏγαλεία Ï€ÏογÏαμματιστή" #: src/bz-flathub-category.c:80 msgid "Education" msgstr "Εκπαίδευση" #: src/bz-flathub-category.c:80 msgid "Learn" msgstr "Μάθηση" #: src/bz-flathub-category.c:80 msgid "More Education" msgstr "ΠεÏισσότεÏη Μάθηση" #: src/bz-flathub-category.c:81 msgid "Gaming" msgstr "Παιχνίδια" #: src/bz-flathub-category.c:81 msgid "Play" msgstr "Παιχνίδι" #: src/bz-flathub-category.c:81 msgid "More Gaming" msgstr "ΠεÏισσότεÏα παιχνίδια" #: src/bz-flathub-category.c:82 msgid "Graphics & Photography" msgstr "ΓÏαφικά & ΦωτογÏαφία" #: src/bz-flathub-category.c:82 msgid "Create" msgstr "ΔημιουÏγία" #: src/bz-flathub-category.c:82 msgid "More Graphics & Photography" msgstr "ΠεÏισσότεÏα ΓÏαφικά & ΦωτογÏαφία" #: src/bz-flathub-category.c:83 msgid "Networking" msgstr "ΔικτÏωση" #: src/bz-flathub-category.c:83 msgid "Internet" msgstr "Διαδίκτυο" #: src/bz-flathub-category.c:83 msgid "More Networking" msgstr "ΠεÏισσότεÏη ΔικτÏωση" #: src/bz-flathub-category.c:84 msgid "Productivity" msgstr "ΠαÏαγωγικότητα" #: src/bz-flathub-category.c:84 msgid "Work" msgstr "ΕÏγασία" #: src/bz-flathub-category.c:84 msgid "More Productivity" msgstr "ΠεÏισσότεÏη ΠαÏαγωγικότητα" #: src/bz-flathub-category.c:85 msgid "Science" msgstr "Επιστήμη" #: src/bz-flathub-category.c:85 msgid "More Science" msgstr "ΠεÏισσότεÏη Επιστήμη" #: src/bz-flathub-category.c:86 msgid "System" msgstr "ΣÏστημα" #: src/bz-flathub-category.c:86 msgid "More System" msgstr "ΠεÏισσότεÏο ΣÏστημα" #: src/bz-flathub-category.c:87 msgid "Utilities" msgstr "Βοηθητικά Ï€ÏογÏάμματα" #: src/bz-flathub-category.c:87 msgid "Tools" msgstr "ΕÏγαλεία" #: src/bz-flathub-category.c:87 msgid "More Utilities" msgstr "ΠεÏισσότεÏα βοηθητικά Ï€ÏογÏάμματα" #: src/bz-flathub-category.c:88 src/bz-flathub-page.blp:119 #: src/bz-flathub-page.blp:152 msgid "Trending" msgstr "Τάσεις" #: src/bz-flathub-category.c:88 msgid "More Trending" msgstr "ΠεÏισσότεÏες Τάσεις" #: src/bz-flathub-category.c:89 src/bz-flathub-page.blp:125 #: src/bz-flathub-page.blp:185 msgid "Popular" msgstr "Δημοφιλείς" #: src/bz-flathub-category.c:89 msgid "More Popular" msgstr "ΠεÏισσότεÏα Δημοφιλή" #: src/bz-flathub-category.c:90 src/bz-flathub-page.blp:174 msgid "Recently Added" msgstr "ΠÏόσφατα ΠÏοστέθηκαν" #: src/bz-flathub-category.c:90 src/bz-flathub-page.blp:131 msgid "New" msgstr "Îέες" #: src/bz-flathub-category.c:90 msgid "More New" msgstr "ΠεÏισσότεÏες Îέες" #: src/bz-flathub-category.c:91 src/bz-flathub-page.blp:163 msgid "Recently Updated" msgstr "ΠÏόσφατα ΕνημεÏωμένες" #: src/bz-flathub-category.c:91 src/bz-flathub-page.blp:137 msgid "Updated" msgstr "ΕνημεÏωμένες" #: src/bz-flathub-category.c:91 msgid "More Updated" msgstr "ΠεÏισσότεÏες ΕνημεÏωμένες" #: src/bz-flathub-category.c:92 msgid "Mobile" msgstr "Κινητό" #: src/bz-flathub-category.c:92 msgid "More Mobile" msgstr "ΠεÏισσότεÏα για κινητό" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Το Flathub δεν έχει Ï€Ïοστεθεί" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "O απομακÏυσμένος διακομιστής Flathub δεν βÏέθηκε σε καμία από τις " "εγκαταστάσεις Flatpak σας" #: src/bz-flathub-page.blp:35 msgid "Flathub returned an error" msgstr "Το Flathub επέστÏεψε ένα σφάλμα" #: src/bz-flathub-page.blp:41 msgid "Retry Flathub Connection" msgstr "Επανάληψη σÏνδεσης με το Flathub" #: src/bz-flathub-page.blp:57 msgid "Flathub Unavailable" msgstr "Το Flathub δεν είναι διαθέσιμο" #: src/bz-flathub-page.blp:58 msgid "" "We could not connect to Flathub. You can still manage and search for " "applications." msgstr "" "Δεν μποÏέσαμε να συνδεθοÏμε στο Flathub. ΜποÏείτε ακόμα να διαχειÏιστείτε " "και να αναζητήσετε εφαÏμογές." #: src/bz-flathub-page.blp:61 msgid "Search Apps" msgstr "Αναζήτηση εφαÏμογών" #: src/bz-flathub-page.blp:270 msgid "On the Go" msgstr "Εν κινήσει" #: src/bz-flathub-page.blp:282 msgid "Apps for your Linux phones and tablets" msgstr "ΕφαÏμογές για τα τηλέφωνα και τα tablet σας με Linux" #: src/bz-flathub-page.blp:293 msgid "More Mobile Apps" msgstr "ΠεÏισσότεÏες εφαÏμογές για κινητά" #: src/bz-flathub-page.blp:328 msgid "More Mobile apps" msgstr "ΠεÏισσότεÏες εφαÏμογές για κινητά" #: src/bz-flathub-page.blp:388 msgid "We​ ♥​ Games" msgstr "♥ τα παιχνίδια" #: src/bz-flathub-page.blp:401 msgid "Games and apps to run your favorite titles" msgstr "Παιχνίδια και εφαÏμογές για να Ï„Ïέξετε τους αγαπημένους σας τίτλους" #: src/bz-flathub-page.blp:435 msgid "More Games" msgstr "ΠεÏισσότεÏα παιχνίδια" #: src/bz-flatpak-entry.c:600 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Σελίδα Flathub" #: src/bz-flatpak-entry.c:621 msgctxt "Project URL Type" msgid "Project Website" msgstr "Ιστοσελίδα του έÏγου" #: src/bz-flatpak-entry.c:625 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "ΠαÏακολοÏθηση ζητημάτων" #: src/bz-flatpak-entry.c:629 msgctxt "Project URL Type" msgid "FAQ" msgstr "FAQ" #: src/bz-flatpak-entry.c:633 msgctxt "Project URL Type" msgid "Help" msgstr "Βοήθεια" #: src/bz-flatpak-entry.c:637 msgctxt "Project URL Type" msgid "Donate" msgstr "ΔωÏεά" #: src/bz-flatpak-entry.c:643 msgctxt "Project URL Type" msgid "Translate" msgstr "ΜετάφÏαση" #: src/bz-flatpak-entry.c:647 msgctxt "Project URL Type" msgid "Contact" msgstr "Επικοινωνία" #: src/bz-flatpak-entry.c:651 msgctxt "Project URL Type" msgid "Source Code" msgstr "Πηγαίος κώδικας" #: src/bz-flatpak-entry.c:657 msgctxt "Project URL Type" msgid "Contribute" msgstr "ΣυνεισφέÏετε" #: src/bz-full-view.blp:20 src/bz-window.blp:126 src/bz-window.blp:420 msgid "Toggle transaction sidebar" msgstr "Εναλλαγή πλευÏικής γÏαμμής συναλλαγών" #: src/bz-full-view.blp:57 msgid "No Results" msgstr "Κανένα αποτέλεσμα" #: src/bz-full-view.blp:58 msgid "Try a different search query" msgstr "Δοκιμάστε μια διαφοÏετική αναζήτηση" #: src/bz-full-view.blp:64 src/bz-window.blp:193 msgid "Content" msgstr "ΠεÏιεχόμενο" #: src/bz-full-view.blp:210 msgid "Support" msgstr "ΥποστήÏιξη" #: src/bz-full-view.blp:226 msgid "Favorite Count" msgstr "ΑÏιθμός αγαπημένων" #: src/bz-full-view.blp:258 src/bz-full-view.blp:513 msgid "Open" msgstr "Ανοιχτό" #: src/bz-full-view.blp:271 src/bz-full-view.blp:486 msgid "Download & Install Application" msgstr "Λήψη και εγκατάσταση εφαÏμογής" #: src/bz-full-view.blp:286 msgid "Uninstall Application" msgstr "Απεγκατάσταση εφαÏμογής" #: src/bz-full-view.blp:301 src/bz-full-view.blp:528 msgid "Install Other Version" msgstr "Εγκατάσταση άλλης έκδοσης" #: src/bz-full-view.blp:325 msgid "Size" msgstr "Μέγεθος" #: src/bz-full-view.blp:430 msgid "Downloads /mo" msgstr "Λήψεις /mo" #: src/bz-full-view.blp:547 msgid "Stopped Receiving Core Updates" msgstr "Δεν λαμβάνετε πλέον βασικές ενημεÏώσεις" #: src/bz-full-view.blp:561 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Αυτή η εφαÏμογή χÏησιμοποιεί ένα πεÏιβάλλον εκτέλεσης που δεν λαμβάνει πλέον " "ενημεÏώσεις ή διοÏθώσεις ασφαλείας. Η χÏήση της ενδέχεται να μην είναι " "ασφαλής." #: src/bz-full-view.blp:644 src/bz-window.c:1240 msgid "Delete Data" msgstr "ΔιαγÏαφή δεδομένων" #: src/bz-full-view.blp:778 msgid "Tags:" msgstr "Ετικέτες:" #: src/bz-full-view.c:289 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/bz-full-view.c:296 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/bz-full-view.c:303 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/bz-full-view.c:313 #, c-format msgid "%d downloads in the last 30 days" msgstr "%d λήψεις τις τελευταίες 30 ημέÏες" #: src/bz-full-view.c:345 #, c-format msgid "Download size of %s" msgstr "Μέγεθος λήψης του %s" #: src/bz-full-view.c:378 msgid "All Ages" msgstr "Όλες οι ηλικίες" #: src/bz-full-view.c:390 msgid "Age rating information unavailable" msgstr "ΠληÏοφοÏίες σχετικά με την ηλικιακή βαθμολογία δεν είναι διαθέσιμες" #: src/bz-full-view.c:395 msgid "Suitable for all ages" msgstr "Κατάλληλο για όλες τις ηλικίες" #: src/bz-full-view.c:397 #, c-format msgid "Suitable for ages %d and up" msgstr "Κατάλληλο για ηλικίες %d και άνω" #: src/bz-full-view.c:430 src/bz-full-view.c:435 src/bz-full-view.c:463 #: src/bz-full-view.c:474 msgid "Unknown" msgstr "Άγνωστο" #: src/bz-full-view.c:440 #, c-format msgid "Free software licensed under %s" msgstr "ΕλεÏθεÏο λογισμικό με άδεια χÏήσης %s" #: src/bz-full-view.c:445 msgid "Free software" msgstr "ΕλεÏθεÏο λογισμικό" #: src/bz-full-view.c:448 msgid "Proprietary Software" msgstr "Ιδιόκτητο λογισμικό" #: src/bz-full-view.c:451 #, c-format msgid "Special License: %s" msgstr "Ειδική άδεια: %s" #: src/bz-full-view.c:468 msgid "Free" msgstr "ΕλεÏθεÏο" #: src/bz-full-view.c:471 src/bz-license-dialog.c:118 msgid "Proprietary" msgstr "Ιδιόκτητο" #: src/bz-full-view.c:476 src/bz-license-dialog.c:120 msgid "Special License" msgstr "Ειδική άδεια" #: src/bz-full-view.c:496 msgid "Adaptive" msgstr "ΠÏοσαÏμοστικό" #: src/bz-full-view.c:496 msgid "Desktop Only" msgstr "Μόνο για επιτÏαπέζιους υπολογιστές" #: src/bz-full-view.c:502 msgid "Works on desktop, tablets, and phones" msgstr "ΛειτουÏγεί σε επιτÏαπέζιους υπολογιστές, tablet και κινητά τηλέφωνα" #: src/bz-full-view.c:503 msgid "May not work on mobile devices" msgstr "Ενδέχεται να μην λειτουÏγεί σε κινητές συσκευές" #: src/bz-full-view.c:514 msgid "No URL" msgstr "ΧωÏίς διεÏθυνση URL" #: src/bz-full-view.c:532 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "Αυτή η εφαÏμογή διαθέτει άδεια FLOSS, που σημαίνει ότι ο πηγαίος κώδικας " "μποÏεί να ελεγχθεί για λόγους ασφαλείας." #: src/bz-full-view.c:533 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "Αυτή η εφαÏμογή διαθέτει ιδιόκτητη άδεια χÏήσης, που σημαίνει ότι ο πηγαίος " "κώδικας έχει αναπτυχθεί ιδιωτικά και δεν μποÏεί να ελεγχθεί από ανεξάÏτητο " "Ï„Ïίτο μέÏος." #: src/bz-full-view.c:540 msgid "More Apps" msgstr "ΠεÏισσότεÏες εφαÏμογές" #: src/bz-full-view.c:541 #, c-format msgid "More Apps by %s" msgstr "ΠεÏισσότεÏες εφαÏμογές από %s" #: src/bz-full-view.c:548 msgid "Other Apps by this Developer" msgstr "Άλλες εφαÏμογές από αυτόν τον Ï€ÏογÏαμματιστή" #: src/bz-full-view.c:550 src/bz-full-view.c:658 #, c-format msgid "Other Apps by %s" msgstr "Άλλες εφαÏμογές από %s" #: src/bz-full-view.c:558 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "Το %s δεν είναι εγκατεστημένο, αλλά εξακολουθεί να πεÏιέχει <b>%s</b> " "δεδομένων." #: src/bz-full-view.c:660 msgid "Other Apps" msgstr "Άλλες εφαÏμογές" #: src/bz-full-view.c:662 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d ΕφαÏμογή" msgstr[1] "%d ΕφαÏμογές" #: src/bz-full-view.c:1010 msgid "Show Less" msgstr "Εμφάνιση λιγότεÏων" #: src/bz-full-view.c:1010 msgid "Show More" msgstr "Εμφάνιση πεÏισσότεÏων" #: src/bz-hardware-support-dialog.blp:6 src/bz-hardware-support-dialog.blp:47 msgid "Hardware Support" msgstr "ΥποστήÏιξη υλικοÏ" #: src/bz-hardware-support-dialog.c:69 msgid "Keyboard support" msgstr "ΥποστήÏιξη πληκτÏολογίου" #: src/bz-hardware-support-dialog.c:71 msgid "Requires keyboards" msgstr "Απαιτεί πληκτÏολόγια" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends keyboards" msgstr "Συνιστά πληκτÏολόγια" #: src/bz-hardware-support-dialog.c:73 msgid "Supports keyboards" msgstr "ΥποστηÏίζει πληκτÏολόγια" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for keyboards" msgstr "Άγνωστη υποστήÏιξη για πληκτÏολόγια" #: src/bz-hardware-support-dialog.c:76 msgid "Mouse support" msgstr "ΥποστήÏιξη ποντικιοÏ" #: src/bz-hardware-support-dialog.c:78 msgid "Requires mice or pointing devices" msgstr "Απαιτεί ποντίκια ή συσκευές κατάδειξης" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends mice or pointing devices" msgstr "Συνιστά ποντίκια ή συσκευές κατάδειξης" #: src/bz-hardware-support-dialog.c:80 msgid "Supports mice or pointing devices" msgstr "ΥποστηÏίζει ποντίκια ή συσκευές κατάδειξης" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for mice or pointing devices" msgstr "Άγνωστη υποστήÏιξη για ποντίκια ή συσκευές κατάδειξης" #: src/bz-hardware-support-dialog.c:83 msgid "Touchscreen support" msgstr "ΥποστήÏιξη οθόνης αφής" #: src/bz-hardware-support-dialog.c:85 msgid "Requires touchscreens" msgstr "Απαιτεί οθόνες αφής" #: src/bz-hardware-support-dialog.c:86 msgid "Recommends touchscreens" msgstr "Συνιστά οθόνες αφής" #: src/bz-hardware-support-dialog.c:87 msgid "Supports touchscreens" msgstr "ΥποστηÏίζει οθόνες αφής" #: src/bz-hardware-support-dialog.c:88 msgid "Unknown support for touchscreens" msgstr "Άγνωστη υποστήÏιξη για οθόνες αφής" #: src/bz-hardware-support-dialog.c:192 msgid "Mobile support" msgstr "ΥποστήÏιξη για κινητά" #: src/bz-hardware-support-dialog.c:193 msgid "Works on mobile devices" msgstr "ΛειτουÏγεί σε κινητές συσκευές" #: src/bz-hardware-support-dialog.c:193 msgid "May not work well on mobile devices" msgstr "ΜποÏεί να μην λειτουÏγεί καλά σε κινητές συσκευές" #: src/bz-hardware-support-dialog.c:198 msgid "Desktop support" msgstr "ΥποστήÏιξη επιτÏαπέζιων υπολογιστών" #: src/bz-hardware-support-dialog.c:199 msgid "Works well on large screens" msgstr "ΛειτουÏγεί καλά σε μεγάλες οθόνες" #: src/bz-hardware-support-dialog.c:233 #, c-format msgid "%s works best on specific hardware" msgstr "Το %s λειτουÏγεί καλÏτεÏα σε συγκεκÏιμένο υλικό" #: src/bz-hardware-support-dialog.c:240 #, c-format msgid "%s works on most devices" msgstr "Το %s λειτουÏγεί στις πεÏισσότεÏες συσκευές" #: src/bz-inspector.blp:5 msgid "Bazaar Inspector" msgstr "ΕπιθεωÏητής Bazaar" #: src/bz-inspector.blp:33 msgid "Background Task Info:" msgstr "ΠληÏοφοÏίες για την εÏγασία παÏασκηνίου:" #: src/bz-inspector.blp:43 msgid "Enable Global Debug Mode" msgstr "ΕνεÏγοποίηση καθολικής λειτουÏγίας αποσφαλμάτωσης" #: src/bz-inspector.blp:50 msgid "Active Blocklists" msgstr "ΕνεÏγές λίστες αποκλεισμένων" #: src/bz-inspector.blp:67 msgid "Active Curated-Configs" msgstr "ΕνεÏγές Επιμελημένες-Ρυθμίσεις" #: src/bz-inspector.blp:85 msgid "All Entry Groups" msgstr "Όλες οι ομάδες εισόδου" #: src/bz-inspector.blp:93 msgid "Filter..." msgstr "ΦίλτÏο..." #: src/bz-inspector.blp:134 msgid "Decache and Inspect" msgstr "ΚαθαÏισμός cache και Έλεγχος" #: src/bz-installed-page.blp:19 msgid "No Flatpaks Installed" msgstr "Δεν έχουν εγκατασταθεί Flatpaks" #: src/bz-installed-page.c:395 msgid "Choose an Installation" msgstr "Επιλέξτε μια εγκατάσταση" #: src/bz-installed-page.c:398 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with? " msgstr "" "Έχετε εγκαταστήσει πολλές εκδόσεις αυτής της εφαÏμογής. Με ποια από αυτές " "θέλετε να συνεχίσετε; " #: src/bz-installed-page.c:402 src/bz-window.c:1270 src/bz-window.c:1293 msgid "Cancel" msgstr "ΑκÏÏωση" #: src/bz-installed-tile.blp:61 src/bz-rich-app-tile.blp:137 msgid "Stopped Receiving Updates" msgstr "Δεν λαμβάνετε πλέον ενημεÏώσεις" #: src/bz-installed-tile.blp:75 msgid "Support this application" msgstr "ΥποστηÏίξτε αυτήν την εφαÏμογή" #: src/bz-license-dialog.blp:160 msgid "Get Involved" msgstr "Συμμετέχε" #: src/bz-license-dialog.c:107 src/bz-license-dialog.c:112 msgid "Unknown License" msgstr "Άγνωστη άδεια χÏήσης" #: src/bz-license-dialog.c:115 msgid "Community Built" msgstr "ΔημιουÏγήθηκε από την Κοινότητα" #: src/bz-license-dialog.c:148 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Αυτή η εφαÏμογή έχει αναπτυχθεί ανοιχτά από μια διεθνή κοινότητα και " "διατίθεται με άδεια χÏήσης %s.\n" "\n" "ΜποÏείτε να συμμετάσχετε και να βοηθήσετε να γίνει ακόμα καλÏτεÏη." #: src/bz-license-dialog.c:156 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Αυτή η εφαÏμογή έχει αναπτυχθεί ανοιχτά από μια διεθνή κοινότητα.\n" "\n" "ΜποÏείτε να συμμετάσχετε και να βοηθήσετε να γίνει ακόμα καλÏτεÏη." #: src/bz-license-dialog.c:161 msgid "The license of this app is not known" msgstr "Η άδεια χÏήσης αυτής της εφαÏμογής δεν είναι γνωστή" #: src/bz-license-dialog.c:165 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Αυτή η εφαÏμογή δεν έχει αναπτυχθεί ανοιχτά, επομένως μόνο οι " "Ï€ÏογÏαμματιστές της γνωÏίζουν πώς λειτουÏγεί. ΜποÏεί να είναι ανασφαλής με " "Ï„Ïόπους που είναι δÏσκολο να εντοπιστοÏν και μποÏεί να αλλάξει χωÏίς " "εποπτεία.\n" "\n" "ΜποÏεί να έχετε ή να μην έχετε τη δυνατότητα να συνεισφέÏετε σε αυτήν την " "εφαÏμογή." #: src/bz-license-dialog.c:174 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Αυτή η εφαÏμογή έχει αναπτυχθεί με την ειδική άδεια %s.\n" "\n" "ΜποÏεί να έχετε ή να μην έχετε τη δυνατότητα να συνεισφέÏετε σε αυτήν την " "εφαÏμογή." #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "ΠÏοτιμήσεις" #: src/bz-preferences-dialog.blp:23 msgid "Content Filters" msgstr "ΦίλτÏα πεÏιεχομένου" #: src/bz-preferences-dialog.blp:26 msgid "Free Software Only" msgstr "Μόνο ελεÏθεÏο λογισμικό" #: src/bz-preferences-dialog.blp:27 msgid "Hide proprietary applications when browsing and searching" msgstr "ΑπόκÏυψη ιδιόκτητων εφαÏμογών κατά την πεÏιήγηση και την αναζήτηση" #: src/bz-preferences-dialog.blp:31 msgid "Flathub Results Only" msgstr "Αποτελέσματα μόνο από το Flathub" #: src/bz-preferences-dialog.blp:32 msgid "" "Limit search and browse results to applications only available on Flathub" msgstr "" "ΠεÏιοÏίστε τα αποτελέσματα αναζήτησης και πεÏιήγησης σε εφαÏμογές που είναι " "διαθέσιμες μόνο στο Flathub" #: src/bz-preferences-dialog.blp:36 msgid "Hide EOL Apps" msgstr "ΑπόκÏυψη εφαÏμογών EOL" #: src/bz-preferences-dialog.blp:37 msgid "Hide apps which are no longer supported by their developers" msgstr "" "ΑπόκÏυψη εφαÏμογών που δεν υποστηÏίζονται πλέον από τους Ï€ÏογÏαμματιστές τους" #: src/bz-preferences-dialog.blp:42 src/bz-window.blp:313 msgid "Search" msgstr "Αναζήτηση" #: src/bz-preferences-dialog.blp:45 msgid "Delay Search Results" msgstr "Αναβολή αποτελεσμάτων αναζήτησης" #: src/bz-preferences-dialog.blp:46 msgid "Improve results performance by debouncing search terms" msgstr "" "Βελτιώστε την απόδοση των αποτελεσμάτων με την απομάκÏυνση των ÏŒÏων " "αναζήτησης" #: src/bz-preferences-dialog.blp:51 msgid "Progress Bar" msgstr "ΜπάÏα Ï€Ïοόδου" #: src/bz-preferences-dialog.blp:52 msgid "Choose a theme for the progress bar!" msgstr "Επιλέξτε ένα θέμα για τη μπάÏα Ï€Ïοόδου!" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "ΧÏώμα έμφασης" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "ΧÏώματα υπεÏηφάνειας" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Λεσβιών" #: src/bz-preferences-dialog.c:35 msgid "Transgender Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας ΤÏανς" #: src/bz-preferences-dialog.c:36 msgid "Nonbinary Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Nonbinary" #: src/bz-preferences-dialog.c:37 msgid "Bisexual Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Bisexual" #: src/bz-preferences-dialog.c:38 msgid "Asexual Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Asexual" #: src/bz-preferences-dialog.c:39 msgid "Pansexual Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Pansexual" #: src/bz-preferences-dialog.c:40 msgid "Aromantic Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Aromantic" #: src/bz-preferences-dialog.c:41 msgid "Genderfluid Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Genderfluid" #: src/bz-preferences-dialog.c:42 msgid "Polysexual Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Polysexual" #: src/bz-preferences-dialog.c:43 msgid "Omnisexual Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Omnisexual" #: src/bz-preferences-dialog.c:44 msgid "Aroace Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Aroace" #: src/bz-preferences-dialog.c:45 msgid "Agender Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Agender" #: src/bz-preferences-dialog.c:46 msgid "Genderqueer Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Genderqueer" #: src/bz-preferences-dialog.c:47 msgid "Intersex Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Intersex" #: src/bz-preferences-dialog.c:48 msgid "Demigender Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Demigender" #: src/bz-preferences-dialog.c:49 msgid "Biromantic Pride Colors" msgstr "ΧÏώματα ΥπεÏηφάνειας Biromantic" #: src/bz-releases-dialog.blp:5 src/bz-releases-list.blp:26 msgid "Version History" msgstr "ΙστοÏικό εκδόσεων" #: src/bz-releases-list.c:128 #, c-format msgid "Version %s" msgstr "Έκδοση %s" #: src/bz-releases-list.c:153 msgid "No details for this release" msgstr "Δεν υπάÏχουν λεπτομέÏειες για αυτήν την έκδοση" #: src/bz-rich-app-tile.blp:154 msgid "Get" msgstr "Λήψη" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "Στιγμιότυπα οθόνης" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "ΠÏοηγοÏμενο στιγμιότυπο οθόνης" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "Επόμενο στιγμιότυπο οθόνης" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "ΑντιγÏαφή εικόνας" #: src/bz-screenshot-page.blp:147 msgid "Reset View" msgstr "ΕπαναφοÏά Ï€Ïοβολής" #: src/bz-screenshot-page.blp:158 msgid "Zoom Out" msgstr "ΣμίκÏυνση" #: src/bz-screenshot-page.blp:168 msgid "Zoom In" msgstr "Μεγέθυνση" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "ΚαÏουζέλ Στιγμιότυπων Οθόνης" #: src/bz-screenshots-carousel.blp:104 msgid "Open Screenshot Viewer" msgstr "Άνοιγμα Ï€ÏογÏάμματος Ï€Ïοβολής στιγμιότυπων οθόνης" #: src/bz-search-widget.blp:106 msgid "Search Apps, Games, Software" msgstr "Αναζήτηση εφαÏμογών, παιχνιδιών, λογισμικοÏ" #: src/bz-search-widget.blp:150 msgid "Categories Unavailable" msgstr "ΚατηγοÏίες Μη διαθέσιμες" #: src/bz-search-widget.blp:151 msgid "Search for apps using the search bar above." msgstr "Αναζητήστε εφαÏμογές χÏησιμοποιώντας τη γÏαμμή αναζήτησης παÏαπάνω." #: src/bz-search-widget.blp:235 msgid "No Applications Found" msgstr "Δεν βÏέθηκαν εφαÏμογές" #: src/bz-search-widget.c:241 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Δεν βÏέθηκαν αποτελέσματα για το \"%s\" στο Flathub" #: src/bz-share-list.c:64 msgid "Copied!" msgstr "ΑντιγÏάφηκε!" #: src/bz-share-list.c:116 msgid "Copy Link" msgstr "ΑντιγÏαφή συνδέσμου" #: src/bz-share-list.c:127 msgid "Open Link" msgstr "Άνοιγμα συνδέσμου" #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "ΧÏονοδιάγÏαμμα" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Εγκαταστάσεις:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Κόσμος" #: src/bz-tag-list.c:96 msgid "No Results Found" msgstr "Δεν βÏέθηκαν αποτελέσματα" #: src/bz-tag-list.c:108 #, c-format msgid "Apps Tagged \"%s\"" msgstr "ΕφαÏμογές με ετικέτα \"%s\"" #: src/bz-tag-list.c:109 #, c-format msgid "%d Applications" msgstr "%d ΕφαÏμογές" #: src/bz-tag-list.c:124 msgid "Search failed" msgstr "Η αναζήτηση απέτυχε" #: src/bz-transaction-manager.c:1135 #, c-format msgid "Finished in %.02f seconds" msgstr "ΟλοκληÏώθηκε σε %.02f δευτεÏόλεπτα" #: src/bz-transaction-view.blp:95 msgid "App Add-on" msgstr "ΠÏόσθετο εφαÏμογής" #: src/bz-transaction-view.blp:120 msgid "Runtime" msgstr "ΠεÏιβάλλον εκτέλεσης" #: src/bz-transaction-view.blp:146 src/bz-transaction-view.blp:172 msgid "Install Size" msgstr "Μέγεθος εγκατάστασης" #: src/bz-transaction-view.blp:200 msgid "Update" msgstr "ΕνημέÏωση" #: src/bz-transaction-view.c:139 #, c-format msgid "Transferred %s so far" msgstr "ΜεταφέÏθηκαν %s μέχÏι τώÏα" #: src/bz-transaction.c:336 msgid "Pending" msgstr "Σε εκκÏεμότητα" #: src/bz-update-dialog.blp:7 msgid "Install Now" msgstr "Εγκατάσταση τώÏα" #: src/bz-update-dialog.blp:10 msgid "Updates Are Available" msgstr "Διατίθενται ενημεÏώσεις" #: src/bz-update-dialog.blp:11 msgid "" "The following applications are eligible for updates. Would you like to " "install them?" msgstr "" "Οι ακόλουθες εφαÏμογές είναι επιλέξιμες για ενημεÏώσεις. Θέλετε να τις " "εγκαταστήσετε;" #: src/bz-update-dialog.c:134 #, c-format msgid "" "%d runtimes and/or addons are eligible for updates. Would you like to " "install them?" msgstr "" "%d πεÏιβάλλοντα εκτέλεσης και/ή Ï€Ïόσθετα είναι επιλέξιμα για ενημεÏώσεις. " "Θέλετε να τα εγκαταστήσετε;" #: src/bz-update-dialog.c:142 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "Επιπλέον, θα ενημεÏωθοÏν %d πεÏιβάλλοντα εκτέλεσης και/ή Ï€Ïόσθετα." #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "ΔιαχείÏιση υπολειπόμενων δεδομένων χÏήστη" #: src/bz-user-data-page.blp:41 msgid "Loading" msgstr "ΦόÏτωση" #: src/bz-user-data-page.blp:55 msgid "No User Data found" msgstr "Δεν βÏέθηκαν δεδομένα χÏήστη" #: src/bz-user-data-page.blp:60 msgid "User Data" msgstr "Δεδομένα χÏήστη" #: src/bz-user-data-tile.c:144 #, c-format msgid "Removed User Data for %s" msgstr "ΔιαγÏάφηκαν τα δεδομένα χÏήστη για %s" #: src/bz-user-data-tile.blp:74 msgid "Remove User Data" msgstr "ΚατάÏγηση δεδομένων χÏήστη" #: src/bz-window.blp:66 msgid "Inspect UI Entry" msgstr "ΕπιθεώÏηση εισόδου UI" #: src/bz-window.blp:73 msgid "All Debug Actions" msgstr "Όλες οι ενέÏγειες ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÏƒÏ†Î±Î»Î¼Î¬Ï„Ï‰Î½" #: src/bz-window.blp:107 msgid "Tasks" msgstr "ΕÏγασίες" #: src/bz-window.blp:163 msgid "Stop Active Tasks" msgstr "Διακοπή ενεÏγών εÏγασιών" #: src/bz-window.blp:171 msgid "Clear History" msgstr "ΕκκαθάÏιση ιστοÏικοÏ" #: src/bz-window.blp:187 msgid "No Tasks Yet" msgstr "Δεν υπάÏχουν ακόμη εÏγασίες" #: src/bz-window.blp:258 msgid "Refreshing Store Content" msgstr "Ανανέωση πεÏιεχομένου καταστήματος" #: src/bz-window.blp:273 msgid "Curated" msgstr "Επιμελημένες" #: src/bz-window.blp:286 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:450 msgid "Network connection is metered — automatic store data sync is paused" msgstr "" "Η σÏνδεση δικτÏου μετÏάται — η αυτόματη συγχÏονισμός δεδομένων του " "καταστήματος έχει παυθεί" #: src/bz-window.blp:451 src/bz-window.blp:460 msgid "Sync Manually" msgstr "ΧειÏοκίνητος συγχÏονισμός" #: src/bz-window.blp:459 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Έχετε σÏνδεση στο δίκτυο, αλλά βλέπετε μια Ï€ÏοσωÏινά αποθηκευμένη έκδοση του " "Flathub" #: src/bz-window.blp:534 msgid "_Login with Flathub" msgstr "_ΣÏνδεση με το Flathub" #: src/bz-window.blp:540 msgid "_Manage Leftover User Data" msgstr "_ΔιαχείÏιση υπολειπόμενων δεδομένων χÏήστη" #: src/bz-window.blp:545 msgid "_Synchronize Remotes" msgstr "_ΣυγχÏονισμός απομακÏυσμένου διακομιστής" #: src/bz-window.blp:571 msgid "Open Bazaar Inspector" msgstr "Άνοιγμα ΕπιθεωÏητή Bazaar" #: src/bz-window.blp:580 msgid "Log Out" msgstr "ΑποσÏνδεση" #: src/bz-window.c:475 #, c-format msgid "%d Update Available" msgid_plural "%d Updates Available" msgstr[0] "%d Διαθέσιμη ενημέÏωση" msgstr[1] "%d Διαθέσιμες ενημεÏώσεις" #: src/bz-window.c:973 msgid "" "The ability to inspect and install local .flatpak bundle files is coming " "soon! In the meantime, try running\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "on the command line." msgstr "" "Η δυνατότητα ελέγχου και εγκατάστασης τοπικών αÏχείων πακέτων .flatpak θα " "είναι διαθέσιμη σÏντομα! Εν τω μεταξÏ, δοκιμάστε να εκτελέσετε την εντολή\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "στη γÏαμμή εντολών." #: src/bz-window.c:1100 msgid "Can't do that right now!" msgstr "Δεν μποÏεί να γίνει αυτή τη στιγμή!" #: src/bz-window.c:1231 msgid "Keep Data" msgstr "ΔιατήÏηση δεδομένων" #: src/bz-window.c:1232 msgid "Allow restoring settings and content" msgstr "ΕπιτÏέψτε την επαναφοÏά Ïυθμίσεων και πεÏιεχομένου" #: src/bz-window.c:1241 msgid "Permanently remove app data to save space" msgstr "ΔιαγÏάψτε μόνιμα τα δεδομένα των εφαÏμογών για να εξοικονομήσετε χώÏο" #: src/bz-window.c:1264 #, c-format msgid "Install %s?" msgstr "Εγκατάσταση %s?" #: src/bz-window.c:1267 msgid "May install additional shared components" msgstr "ΜποÏεί να εγκαταστήσει επιπλέον κοινόχÏηστα στοιχεία" #: src/bz-window.c:1286 #, c-format msgid "Remove %s?" msgstr "ΑφαίÏεση %s?" #: src/bz-window.c:1290 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Δεν θα είναι δυνατή η χÏήση του %s μετά την απεγκατάστασή του." #: src/bz-window.c:1353 msgid "Resume Current Tasks" msgstr "Συνέχιση Ï„Ïεχουσών εÏγασιών" #: src/bz-window.c:1359 msgid "Pause Current Tasks" msgstr "ΠαÏση Ï„Ïέχουσων εÏγασιών" #: src/bz-world-map.c:572 #, c-format msgid "%s: %'u downloads" msgstr "%s: %'u λήψεις" #: src/gtk/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "Γενικά" #: src/gtk/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "Άνοιγμα Διαλόγου Αναζήτησης" #: src/gtk/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Άνοιγμα ΠÏοτιμήσεων" #: src/gtk/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Refresh" msgstr "Ανανέωση" #: src/gtk/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "Εναλλαγή ΔιαχειÏιστή Συναλλαγών" #: src/gtk/shortcuts-dialog.blp:29 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Εμφάνιση συντομεÏσεων" #: src/gtk/shortcuts-dialog.blp:34 msgctxt "shortcut window" msgid "Quit" msgstr "Έξοδος" ��������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/es.po������������������������������������������������������������������0000664�0000000�0000000�00000265767�15240005042�0016752�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SPDX-FileCopyrightText: 2025 Spanish translations for bazaar package # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # # SPDX-FileCopyrightText: 2025 robotta <chriserizodos@gmail.com> # robotta <>, 2025. # Óscar Fernández Díaz <oscfdezdz@tuta.io>, 2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-27 10:28+0200\n" "PO-Revision-Date: 2026-06-27 21:26+0200\n" "Last-Translator: Óscar Fernández Díaz <oscfdezdz@tuta.io>\n" "Language-Team: Spanish\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 50.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:46 #: src/bz-window.blp:202 src/bz-window.c:373 src/bz-window.c:374 msgid "Bazaar" msgstr "Bazar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Añada, elimine o actualice programas flatpak en este ordenador" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Sistema;GestorDePaquetes;Discover;Flatpak;Software;Store;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "Ventana nueva" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Descubrir e instalar aplicaciones" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Una tienda de aplicaciones rápida y moderna para Linux enfocada en descubrir " "e instalar aplicaciones y complementos Flatpak, particularmente de Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Poner en cola varias instalaciones y seguir explorando" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Ver fácilmente los permisos de la aplicación" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Inicie sesión en Flathub para ver y gestionar sus favoritos" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Buscar aplicaciones directamente desde GNOME Shell" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:786 msgid "The Bazaar Contributors" msgstr "Los colaboradores de Bazar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "La página de inicio que muestra las aplicaciones de Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Página de exhibición de la aplicación" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Página de la biblioteca" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Página de búsqueda" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Página de categoría" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Dejó de recibir actualizaciones" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Desinstalar" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Instalar" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Gestionar complementos" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "No hay complementos visibles" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Sus preferencias de filtrado actuales ocultan todos los complementos " "conocidos. Intente ajustarlas." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Página del complemento" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "Descargas por mes" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Dejó de recibir actualizaciones del sistema" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Este complemento usa un entorno de ejecución que ya no recibe " "actualizaciones ni correcciones de seguridad. Puede llegar a ser inseguro " "usarlo." #: src/bz-addons-dialog.c:333 #, c-format msgid "Add-on for %s" msgstr "Complemento para %s" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show Less" msgstr "Mostrar menos" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 src/bz-section-view.blp:71 msgid "Show More" msgstr "Mostrar más" #: src/bz-addons-dialog.c:397 msgid "Download Stats" msgstr "Estadísticas de descarga" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Calificación por edades" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Violencia de dibujos animados" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "No hay información sobre violencia de dibujos animados" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Violencia fantástica" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "No hay información sobre violencia fantástica" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Violencia realista" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "No hay información sobre violencia realista" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Violencia con derramamiento de sangre" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "No hay información sobre derramamiento de sangre" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Violencia sexual" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "No hay información sobre violencia sexual" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alcohol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "No hay información sobre referencias al alcohol" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Estupefacientes" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "No hay información sobre referencias a drogas ilegales" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabaco" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "No hay información sobre referencias a productos de tabaco" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Desnudez" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "No hay información sobre desnudez de ningún tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Temas sexuales" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "No hay información sobre referencias o descripciones de naturaleza sexual" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Lenguaje soez" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "No hay información sobre lenguaje soez de ningún tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Humor inapropiado" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "No hay información sobre humor inapropiado" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Discriminación" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "No hay información sobre lenguaje discriminatorio de ningún tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Publicidad" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "No hay información sobre publicidad de ningún tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Apuestas y juego" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "No hay información sobre juego o apuestas de ningún tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Compras" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "No hay información sobre la posibilidad de gastar dinero" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Conversación entre usuarios" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "No hay información sobre formas de conversar con otros usuarios" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Conversación de sonido entre usuarios" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "No hay información sobre formas de hablar con otros usuarios" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Detalles de contacto" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "No hay información sobre compartir nombres de usuario de redes sociales o " "direcciones de correo electrónico" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Información de identificación" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "No hay información sobre compartir información de usuario con terceros" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Compartir ubicación" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "No hay información sobre compartir la ubicación física con otros usuarios" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostitución" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "No hay información sobre referencias a la prostitución" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Adulterio" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "No hay información sobre referencias al adulterio" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Personajes sexualizados" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "No hay información sobre personajes sexualizados" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Profanación" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "No hay información sobre referencias a la profanación" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Restos humanos" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "No hay información sobre restos visibles de personas fallecidas" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Esclavitud" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "No hay información sobre referencias a la esclavitud" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "No incluye referencias a drogas" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "No incluye juramentos, lenguaje soez ni otros tipos de lenguaje fuerte" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "No incluye anuncios ni transacciones monetarias" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "No incluye sexo ni desnudez" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "No incluye una funcionalidad de conversación sin control" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "No incluye violencia" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drogas" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Lenguaje fuerte" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Dinero" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Social" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Violencia" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Todas" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s tiene una clasificación por edades desconocida" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s es adecuado para todos" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s es adecuado para niños pequeños" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s es adecuado para niños" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s es adecuado para adolescentes" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s es adecuado para adultos" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s es adecuado para %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Carpeta del sistema %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Subcarpeta personal %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Carpetas del sistema anfitrión" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Configuración del sistema anfitrión desde /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Subcarpeta de escritorio %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Carpeta de escritorio" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Subcarpeta de documentos %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Carpeta de documentos" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Subcarpeta de música %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Carpeta de música" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Subcarpeta de imágenes %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Carpeta de imágenes" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Subcarpeta de compartición pública %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Carpeta de compartición pública" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Subcarpeta de vídeos %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Carpeta de vídeos" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Subcarpeta de plantillas %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Carpeta de plantillas" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Subcarpeta de caché de usuario %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Carpeta de caché de usuario" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Subcarpeta de configuración de usuario %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Carpeta de configuración de usuario" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Subcarpeta de datos de usuario %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Carpeta de datos de usuario" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Subcarpeta del entorno de ejecución de usuario %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Carpeta del entorno de ejecución de usuario" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Acceso al sistema de archivos para %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Ruta del sistema de archivos desconocida" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "Tamaño de la descarga" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "Tamaño instalado" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "Cantidad que descargar de internet" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "Tamaño en disco" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "Abrir la carpeta de datos de usuario" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "Sus datos de usuario" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "Cachés, ajustes y otros datos de la aplicación" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "Caché" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "Datos temporales en caché" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "Limpiar caché" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Tamaño del entorno de ejecución instalado" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Tamaño de descarga del entorno de ejecución" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "N/D" #: src/bz-app-size-dialog.c:226 msgid "App Size" msgstr "Tamaño de la aplicación" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Verificado" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 #: src/bz-releases-list.c:206 msgid "Installed" msgstr "Instalado" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:789 msgid "translator-credits" msgstr "" "robotta\n" "Óscar Fernández Díaz <oscfdezdz@tuta.io>" #: src/bz-application.c:799 msgid "Special Thanks" msgstr "Agradecimientos especiales" #: src/bz-application.c:857 msgid "Logged Out Successfully!" msgstr "¡Sesión cerrada correctamente!" #: src/bz-application.c:995 msgid "Performing setup…" msgstr "Realizando la configuración…" #: src/bz-application.c:1087 msgid "Set Up System Flathub?" msgstr "¿Configurar Flathub en el sistema?" #: src/bz-application.c:1090 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "El repositorio remoto Flathub del sistema no está configurado. Bazar " "requiere que Flathub esté configurado en la instalación de Flatpak del " "sistema para explorar e instalar aplicaciones.\n" "\n" "Aún puede usar Bazar para explorar y eliminar aplicaciones ya instaladas." #: src/bz-application.c:1097 msgid "Set Up Flathub?" msgstr "¿Configurar Flathub?" #: src/bz-application.c:1100 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub no está configurado en este sistema. No podrá explorar e instalar " "aplicaciones en Bazar si no está disponible.\n" "\n" "Aún puede usar Bazar para explorar y eliminar aplicaciones ya instaladas." #: src/bz-application.c:1106 msgid "Later" msgstr "Más tarde" #: src/bz-application.c:1107 msgid "Set Up Flathub" msgstr "Configurar Flathub" #: src/bz-application.c:1626 msgid "A backend error occurred" msgstr "Ocurrió un error en el motor de soporte" #: src/bz-application.c:1826 src/bz-application.c:4045 msgid "Refreshing…" msgstr "Actualizando…" #: src/bz-application.c:1990 src/bz-application.c:4043 #, c-format msgid "Loading %d apps…" msgstr "Cargando %d aplicaciones…" #: src/bz-application.c:2043 msgid "Failed to open file" msgstr "Falló al abrir el archivo" #: src/bz-application.c:2159 msgid "An initialization error occurred" msgstr "Ocurrió un error de inicialización" #: src/bz-application.c:2553 msgid "Checking for updates…" msgstr "Comprobando actualizaciones…" #: src/bz-application.c:2609 msgid "Failed to check for updates" msgstr "Falló al comprobar las actualizaciones" #: src/bz-application.c:3755 msgid "Malformed Link" msgstr "Enlace malformado" #: src/bz-application.c:3756 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "El enlace usado para abrir esta aplicación tiene mayúsculas incorrectas y " "podría dejar de funcionar en el futuro.\n" "\n" "Esto se debe probablemente a que KRunner envía identificadores de aplicación " "incorrectos." #: src/bz-application.c:3764 msgid "Could not find app" msgstr "No se pudo encontrar la aplicación" #: src/bz-application.c:3795 msgid "Failed to load metainfo" msgstr "Falló al cargar la metainformación" #: src/bz-application.c:4047 msgid "Writing to cache…" msgstr "Escribiendo en la caché…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Mostrar todo" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Todo sobre «%s»" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d aplicaciones" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Falló al cargar el artículo" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Instalación de paquete independiente" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Las dependencias adicionales pueden requerir espacio extra" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Instalar esta aplicación puede requerir añadir una nueva fuente de software. " "Otras aplicaciones de esta fuente aparecerán en Bazar.\n" "\n" "Solo añada esta fuente si está seguro de que confía en ella." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "¡Instalado correctamente!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Abrir" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Mostrar detalles de la aplicación" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Ya instalado" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Instalación fallida" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Tamaño de instalación desconocido" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Cerca de %s por instalar" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Sin permisos especiales" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*f M" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*f K" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d descargas en el último mes" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s entorno de ejecución" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Descargar" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Información de tamaño no disponible" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Tamaño de la descarga de %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Para todas las edades" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Información de clasificación por edades no disponible" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Apto para todas las edades" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Apto para mayores de %d" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "Desconocido" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Software libre licenciado bajo %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Software libre" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Software propietario" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Licencia especial: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Software libre" #: src/context-tile-callbacks.c:288 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "Propietario" #: src/context-tile-callbacks.c:290 src/bz-license-dialog.c:135 msgid "Special License" msgstr "Licencia especial" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "Adaptativo" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "Solo para escritorio" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "Funciona en escritorios, tabletas y teléfonos" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Podría no funcionar en dispositivos móviles" #: src/context-tile-callbacks.c:400 src/bz-safety-dialog.blp:79 msgid "Safe" msgstr "Seguro" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Riesgo bajo" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Riesgo medio" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Riesgo alto" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Vacío" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "Sin selección dedicada" #: src/bz-curated-view.blp:30 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "No se proporciona información de selección dedicada en este sistema. Aún " "puede explorar aplicaciones en Flathub" #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "Explorar Flathub" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "Sin conexión" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Navegador" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "No verificado" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Información del desarrollador no disponible." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "La propiedad del identificador de aplicación %s no ha sido verificada y " "podría ser un paquete de la comunidad." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "La propiedad del identificador de aplicación %s ha sido verificada " "manualmente por el equipo de Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "La propiedad del identificador de aplicación %1$s ha sido verificada por " "<b>%2$s</b> en <b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "" "La propiedad del identificador de aplicación %1$s ha sido verificada usando " "%2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "La propiedad del identificador de aplicación %s ha sido verificada." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Notas de lanzamiento completas" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "¡Este lanzamiento fue posible gracias a usuarios como usted!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Me encanta crear Bazar, pero no puedo hacerlo solo. Ayude a apoyar el " "desarrollo continuo haciendo una donación en Ko-Fi." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Donar a Bazar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "¿Qué hay de nuevo en %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Lanzado el %-e de %B de %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Elija una instalación" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Tiene varias versiones instaladas de esta aplicación. ¿Con cuál quiere " "proceder?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Cancelar" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Solo para este usuario" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "este usuario" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "todos los usuarios" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 #: src/bz-safety-dialog.blp:98 msgid "Details" msgstr "Detalles" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Copiar" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:408 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "¡Copiado!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Recuento de favoritos" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Falló al actualizar el favorito" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Inicie sesión con Flathub para gestionar los favoritos" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Iniciar sesión" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:346 msgid "Favorites" msgstr "Favoritos" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:86 msgid "Install All" msgstr "Instalar todo" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "Cargando" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Sin favoritos" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Las aplicaciones que marque como favoritas aparecerán aquí" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Apoyar esta aplicación" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Quitar de favoritos" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Falló al quitar de favoritos" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Anterior" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Siguiente" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Edición" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "MIDI" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mezclador" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Música" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Reproductor" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Grabadora" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Secuenciador" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Sintonizador" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "Televisión" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Emulación" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Acción" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Aventura" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arcade" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Bloques" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Tablero" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Cartas" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Infantil" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Lógica" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Juegos de rol" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Disparos" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulación" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Deportes" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Estrategia" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Navegadores" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Conversación" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Correo electrónico" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Compartición de archivos" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Sonido y vídeo" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Multimedia" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Más sonido y vídeo" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Herramientas de desarrollo" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Desarrollo" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Más herramientas de desarrollo" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Educación" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Aprendizaje" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Más educación" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Juegos" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Jugar" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Más juegos" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Fotografía y edición de gráficos" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Creación" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Más fotografía y edición de gráficos" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Conexiones y redes" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Más conexiones y redes" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Productividad" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Trabajo" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Más productividad" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Ciencia" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Más ciencia" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Sistema" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Más sistema" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Utilidades" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "Herramientas" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Más utilidades" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Tendencia" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Más tendencias" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "Populares" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Ver más populares" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Recién añadidas" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Novedades" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Ver más novedades" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Actualizadas recientemente" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Actualizado" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Ver más actualizadas recientemente" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Móvil" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Más para móviles" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Más Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "Aplicaciones de KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Más aplicaciones de KDE" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Juegos" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "Más juegos" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "Emuladores" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Más emuladores" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "Lanzadores" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Más lanzadores de juegos" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Herramientas de juegos" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Más herramientas de juegos" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub no está añadido" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "El repositorio remoto de Flathub no se encontró en ninguna de sus " "instalaciones de Flatpak." #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub no está disponible" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "No se puede conectar con Flathub" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Aún puede buscar y gestionar aplicaciones." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Buscar aplicaciones" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Volver a conectar" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Aplicación del día" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "Para llevar" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "Aplicaciones para sus teléfonos y tabletas con Linux" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "Más aplicaciones móviles" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "Nosotros​ ♥​ juegos" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "Juegos y aplicaciones para ejecutar sus títulos favoritos" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 #: src/bz-library-page.blp:82 msgid "No Results" msgstr "Sin resultados" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Prueba con un término de búsqueda diferente" #: src/bz-full-view.blp:47 msgid "Content" msgstr "Contenido" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Esta es una vista previa local, algunos detalles pueden diferir de la lista " "publicada" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "Vista previa de la apariencia en la tienda" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "_Soporte" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Esta aplicación usa un entorno de ejecución que ya no recibe actualizaciones " "ni correcciones de seguridad. Puede llegar a ser inseguro usarlo." #: src/bz-full-view.blp:540 msgid "Trash Data" msgstr "Enviar datos a la papelera" #: src/bz-full-view.blp:603 msgid "Add-ons" msgstr "Complementos" #: src/bz-full-view.blp:638 msgid "More Add-Ons" msgstr "Más complementos" #: src/bz-full-view.blp:649 msgid "Links" msgstr "Enlaces" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Sin enlace" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Esta aplicación tiene una licencia de código abierto (FLOSS), lo que " "significa que el código fuente se puede auditar por seguridad." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Esta aplicación tiene una licencia propietaria, lo que significa que el " "código fuente se desarrolla de forma privada y no puede ser auditado por un " "tercero independiente." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Más aplicaciones" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Más aplicaciones de %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Otras aplicaciones de este desarrollador" #: src/bz-full-view.c:217 src/bz-full-view.c:317 #, c-format msgid "Other Apps by %s" msgstr "Otras aplicaciones de %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s no está instalada, pero todavía tiene <b>%s</b> de datos guardados." #: src/bz-full-view.c:319 msgid "Other Apps" msgstr "Otras aplicaciones" #: src/bz-full-view.c:321 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d aplicación" msgstr[1] "%d aplicaciones" #: src/bz-full-view.c:537 src/bz-user-data-tile.c:144 msgid "Failed to Remove User Data" msgstr "Falló al eliminar los datos de usuario" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Soporte de hardware" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Soporte de teclado" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Requiere teclado" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Recomienda teclado" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Soporta teclado" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Soporte desconocido de teclado" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Soporte de ratón" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Requiere ratón o dispositivo de puntero" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Recomienda ratón o dispositivo de puntero" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Soporta ratón o dispositivo de puntero" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Soporte desconocido de ratón o dispositivo de puntero" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Soporte de pantalla táctil" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Requiere pantalla táctil" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Recomienda pantalla táctil" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Soporta pantalla táctil" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Soporte desconocido de pantalla táctil" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Soporte de móviles" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Funciona en móviles" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Puede no funcionar bien en móviles" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Soporte de escritorio" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Funciona bien en pantallas grandes" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s funciona mejor en hardware específico" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s funciona en la mayoría de dispositivos" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Abrir" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Desinstalar la aplicación" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Quitar" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Actualizar" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Quitar" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Instalar %s desde %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Instalar %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Cancelar" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Cancelando" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Botón de donación" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "Buscar aplicaciones instaladas" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "Limpiar búsqueda" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "No se encontraron aplicaciones" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "Buscar en la tienda en su lugar" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:113 msgid "Library" msgstr "Biblioteca" #: src/bz-library-page.blp:129 msgid "Pending Updates" msgstr "Actualizaciones pendientes" #: src/bz-library-page.blp:156 msgid "Downloads" msgstr "Descargas" #: src/bz-library-page.blp:199 msgid "Recently Uninstalled" msgstr "Desinstaladas recientemente" #: src/bz-library-page.blp:250 msgid "Clear Finished Tasks" msgstr "Limpiar tareas completadas" #: src/bz-library-page.blp:277 msgid "Sort Options" msgstr "Opciones de ordenación" #: src/bz-library-page.blp:336 msgid "Sort By" msgstr "Ordenar por" #: src/bz-library-page.blp:350 msgid "Name" msgstr "Nombre" #: src/bz-library-page.blp:356 msgid "Size" msgstr "Tamaño" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "" "No se encontraron coincidencias para «%s» en la lista de aplicaciones " "instaladas" #: src/bz-library-page.c:193 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u actualización disponible" msgstr[1] "%u actualizaciones disponibles" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u aplicación instalada" msgstr[1] "%u aplicaciones instaladas" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Participe" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Saber más" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Licencia desconocida" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Creado por la comunidad" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Esta aplicación se desarrolla en código abierto por una comunidad " "internacional.\n" "\n" "Puede contribuir a esta aplicación y ayudar a mejorarla." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Se desconoce la licencia de esta aplicación" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Esta aplicación se desarrolla en código abierto por una comunidad " "internacional, y se lanza bajo la licencia %s.\n" "\n" "Puede contribuir a esta aplicación y ayudar a mejorarla." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Esta aplicación no se desarrolla en código abierto, así que solo sus " "desarrolladores saben cómo funciona. Puede ser insegura de maneras difíciles " "de detectar, y puede cambiar sin previo aviso.\n" "\n" "Puede que no pueda contribuir a esta aplicación." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Esta aplicación se desarrolla bajo la licencia especial %s.\n" "\n" "Puede o no ser capaz de colaborar con esta aplicación." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Licencia" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Conectar a Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Algo salió mal" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "" "Inicie sesión para sincronizar sus aplicaciones favoritas entre dispositivos" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Finalizar" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "¡Hola, %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "Seleccionar archivo de metainformación" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Archivos de metainformación" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "Seleccionar icono (opcional)" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Archivos de imagen" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Vista previa" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Preferencias" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "La conexión de red es medida: se ha pausado la actualización automática de " "datos de la tienda" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:235 src/bz-window.blp:246 msgid "Refresh Manually" msgstr "Actualizar manualmente" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Filtros de contenido" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Solo software libre" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary apps when browsing and searching" msgstr "Ocultar software propietario al explorar y buscar" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Solo resultados de Flathub" #: src/bz-preferences-dialog.blp:40 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Limitar los resultados de búsqueda y exploración a aplicaciones disponibles " "en Flathub" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "Solo resultados verificados" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Ocultar los resultados que no estén verificados en Flathub" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "Ocultar aplicaciones al final de su vida útil" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "" "Ocultar aplicaciones que ya no cuentan con el soporte de sus desarrolladores" #: src/bz-preferences-dialog.blp:55 msgid "Progress Bar Theme" msgstr "Tema de la barra de progreso" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Color de realce personal" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Colores del Orgullo" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Colores del Orgullo Lésbico" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Colores del orgullo homosexual masculino" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Colores del Orgullo Transgénero" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Colores del Orgullo No Binario" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Colores del Orgullo Bisexual" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Colores del Orgullo Asexual" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Colores del Orgullo Pansexual" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Colores del Orgullo Arromántico" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Colores del Orgullo de Género fluido" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Colores del Orgullo Polisexual" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Colores del Orgullo Omnisexual" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Colores del orgullo aroace" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Colores del orgullo agénero" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Colores del orgullo genderqueer" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Colores del orgullo intersexual" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Colores del orgullo demigénero" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Colores del orgullo biromántico" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Colores del orgullo de la discapacidad" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Colores del orgullo femboy" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Colores del orgullo neutrois" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Historial de versiones" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Historial de versiones" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Hoy" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Ayer" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "hace %d día" msgstr[1] "hace %d días" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "hace %d semana" msgstr[1] "hace %d semanas" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "hace %d mes" msgstr[1] "hace %d meses" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "hace %d año" msgstr[1] "hace %d años" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e de %B de %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Versión %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "No hay detalles de este lanzamiento" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Obtener más información" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Desinstalar" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Obtener" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Permisos desconocidos" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Faltan los permisos para esta aplicación." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Sin permisos" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "La aplicación está completamente aislada en un entorno protegido" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Acceso a la red" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Puede acceder a internet" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Sin acceso a la red" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "No puede acceder a internet" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Acceso a dispositivos de usuario" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Puede acceder a dispositivos como cámaras web o mandos de juego" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Sin acceso a dispositivos de usuario" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "No puede acceder a dispositivos como cámaras web o mandos de juego" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Acceso a dispositivos de entrada" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Puede acceder a dispositivos de entrada" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Acceso al micrófono y reproducción de sonido" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "Puede escuchar usando micrófonos y reproducir sonido sin pedir permiso" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Acceso a dispositivos del sistema" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" "Puede acceder a dispositivos del sistema que requieren permisos elevados" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Acceso al contenido de la pantalla" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Puede acceder al contenido de la pantalla u otras ventanas" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Sistema de ventanas heredado" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Siempre usa un sistema de ventanas heredado (X11)" #: src/safety-calculator.c:161 src/bz-safety-dialog.blp:31 msgid "Arbitrary Permissions" msgstr "Permisos arbitrarios" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Puede adquirir permisos arbitrarios" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Ajustes de usuario" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Puede acceder y cambiar los ajustes de usuario" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Acceso completo de lectura/escritura al sistema de archivos" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Puede leer y escribir todos los datos en el sistema de archivos" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Acceso de lectura/escritura a la carpeta personal" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Puede leer y escribir todos los datos en su directorio personal" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Acceso completo de lectura al sistema de archivos" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Puede leer todos los datos en el sistema de archivos" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Acceso de lectura a la carpeta personal" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Puede leer todos los datos en su directorio personal" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Acceso de lectura/escritura a la carpeta de descargas" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Puede leer y escribir todos los datos en su directorio de descargas" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Acceso de lectura a la carpeta de descargas" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Puede leer todos los datos en su directorio de descargas" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Puede leer y escribir todos los datos en el directorio" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Puede leer todos los datos en el directorio" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Sin acceso al sistema de archivos" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "No puede acceder al sistema de archivos en absoluto" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Usa servicios del sistema" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Puede solicitar datos de servicios del sistema que no sean portales" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Usa servicios de sesión" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Puede solicitar datos de servicios de sesión que no sean portales" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Sin acceso a servicios" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "" "No puede acceder a servicios de sesión o del sistema que no sean portales en " "absoluto" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Desarrollador de aplicaciones verificado" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "" "Se ha verificado que el desarrollador de esta aplicación es quien dice ser" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Código propietario" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "El código fuente no es público, por lo que no se puede auditar de forma " "independiente y podría ser inseguro" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Código auditable" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "El código fuente es público y se puede auditar de forma independiente, lo " "que hace que la aplicación sea probablemente más segura" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Usa el servicio del sistema %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Usa el servicio de sesión %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Usa el servicio %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Puede ver el servicio que no es portal" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Puede comunicarse con el servicio que no es portal" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Puede poseer el servicio que no es portal" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Integración con el menú global" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Puede mostrar sus menús en una barra de menús global" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Integración con los ajustes de KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Puede detectar cuándo cambian los ajustes del escritorio de KDE" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Ajustes globales de KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "" "Puede leer las preferencias del escritorio de KDE como tipografías y colores" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Servicio de almacenamiento secreto" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Puede almacenar y recuperar sus propias contraseñas usando el depósito de " "claves del sistema" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Servicio de notificaciones del escritorio" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Puede enviar notificaciones del escritorio" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Integración con la bandeja del sistema" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Puede mostrar un icono en la bandeja del sistema" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Integración con KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Puede interactuar con dispositivos vinculados mediante KDE Connect" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Esta aplicación tiene un permiso que le permite indirectamente otorgarse " "<b>cualquier otro permiso que desee</b>, eludiendo el entorno protegido de " "Flatpak.\n" "\n" "Por lo tanto, puede hacer cualquier cosa que una aplicación normal sin " "aislamiento pueda hacer, como acceder a todos sus archivos y conectarse a " "internet.\n" "\n" "Ver los otros permisos aún puede dar una mejor idea de lo que es probable " "que haga la aplicación." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "Ver otros permisos" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "ID de la aplicación" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Esta aplicación usa una versión obsoleta de la plataforma de software (SDK) " "y podría contener errores o vulnerabilidades de seguridad que no se " "solucionarán." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "Seguridad" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s es seguro" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s no tiene permisos inseguros" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s es probablemente seguro" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s es posiblemente inseguro" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s es inseguro" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "Capturas de pantalla" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "Captura de pantalla anterior" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "Captura de pantalla siguiente" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "Copiar imagen" #: src/bz-screenshot-page.blp:150 msgid "Reset View" msgstr "Restablecer vista" #: src/bz-screenshot-page.blp:161 msgid "Zoom Out" msgstr "Alejar" #: src/bz-screenshot-page.blp:171 msgid "Zoom In" msgstr "Acercar" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Carrusel de capturas de pantalla" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Sin capturas de pantalla" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Abrir el visor de capturas de pantalla" #: src/bz-screenshots-carousel.c:301 #, c-format msgid "Screenshot %u %s" msgstr "Captura de pantalla %u %s" #: src/bz-screenshots-carousel.c:303 #, c-format msgid "Screenshot %u" msgstr "Captura de pantalla %u" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "Filtros" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Verificado" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Libre/Abierto" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Sin fin de vida ú_til" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Filtrar aplicaciones al final de su vida útil" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "Adaptado a _móviles" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Categorías" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "Buscar aplicaciones, juegos, programas" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "Filtros de búsqueda" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "Limpiar búsqueda" #: src/bz-search-page.blp:209 msgid "Browse Categories" msgstr "Explorar categorías" #: src/bz-search-page.blp:245 msgid "Categories Unavailable" msgstr "Categorías no disponibles" #: src/bz-search-page.blp:246 msgid "Search for apps using the search bar above." msgstr "Busque aplicaciones usando la barra de búsqueda de arriba." #: src/bz-search-page.blp:364 msgid "No Applications Found" msgstr "No se encontraron aplicaciones" #: src/bz-search-page.c:248 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "No se encontraron resultados para «%s» en Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Vídeo" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Ofimática" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Calendario" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Mensajería" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Dibujo" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulador" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Página de Flathub" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Página del proyecto" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Rastreador de problemas" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "Preguntas frecuentes" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Ayuda" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Donar" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Traducir" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Contactar" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Código fuente" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Contribuir" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifiesto" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Copiar enlace" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Línea de tiempo" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Instalaciones:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Global" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Desde el 15/4/2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2f M instalaciones totales" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2f K instalaciones totales" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d instalaciones totales" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "No se encontraron resultados" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "La búsqueda falló" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Conservar los datos de usuario" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Permitir restaurar los ajustes personales y el contenido" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Eliminar todos los datos" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Borrar permanentemente los datos de usuario para ahorrar espacio" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "¿Instalar %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Seleccione qué versión instalar. Podría instalar componentes compartidos " "adicionales." #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Puede que instale componentes compartidos adicionales" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Cancelar" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Instalar" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "¿Eliminar %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Seleccione qué versión quitar." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "No será posible usar %s después de desinstalarla." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "«%s» es de alto riesgo" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Esta aplicación tiene acceso completo a su sistema, incluyendo todos <b>sus " "archivos, historial de navegación, contraseñas guardadas</b> y más. También " "tiene acceso a internet, lo que significa que podría enviar sus datos a " "terceros externos.\n" "\n" "Debido a que la aplicación es propietaria, no se puede auditar qué hace con " "estos permisos." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Esta aplicación usa el sistema de ventanas heredado X11, lo que le permite " "<b>registrar todas las pulsaciones de teclas, capturar capturas de pantalla " "y monitorizar otras aplicaciones</b>. También tiene acceso a internet, lo " "que significa que podría enviar sus datos a terceros externos.\n" "\n" "Debido a que la aplicación es propietaria, no se puede auditar qué hace con " "estos permisos." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "Instalar de _todos modos" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Falló al cargar el diálogo de transacción" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Todas las aplicaciones ya están instaladas" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Aceptar" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "¿Instalar %u aplicación?" msgstr[1] "¿Instalar %u aplicaciones?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Se instalará lo siguiente. También se podrían instalar componentes " "compartidos adicionales." #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "Se instalarán %d complementos." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Adicionalmente, se instalarán complementos." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Instalar todo" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Terminado en %.02f segundos" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Complemento de la aplicación" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Entorno de ejecución" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "En cola" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Hecho" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Cancelado" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Error" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Cancelar transacción" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Mostrar detalles" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Mostrar información del error" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s liberados" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Error de transacción" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Pendiente" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Actualizar todo" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u actualización del entorno de ejecución" msgstr[1] "%u actualizaciones del entorno de ejecución" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Gestionar los datos de usuario restantes" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "No se encontraron datos de usuario" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "Datos de usuario" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "Enviar datos de usuario a la papelera" #: src/bz-user-data-tile.c:150 #, c-format msgid "Trashed User Data for %s" msgstr "Se enviaron a la papelera los datos de usuario de %s" #: src/bz-window.blp:71 msgid "Refreshing" msgstr "Actualizando" #: src/bz-window.blp:89 msgid "Curated" msgstr "Seleccionado" #: src/bz-window.blp:101 msgid "Explore" msgstr "Explorar" #: src/bz-window.blp:128 msgid "Search" msgstr "Buscar" #: src/bz-window.blp:215 msgid "Main Menu" msgstr "Menú principal" #: src/bz-window.blp:226 msgid "You are running a new version of Bazaar!" msgstr "¡Está ejecutando una nueva versión de Bazar!" #: src/bz-window.blp:227 msgid "See What's New" msgstr "Ver las novedades" #: src/bz-window.blp:234 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Tiene una conexión de red pero está viendo una versión en caché de Flathub" #: src/bz-window.blp:245 msgid "Network connection is metered — automatic refreshes disabled" msgstr "" "La conexión de red es medida: se han desactivado las actualizaciones " "automáticas" #: src/bz-window.blp:290 msgid "_Donate to Bazaar" msgstr "_Donar a Bazar" #: src/bz-window.blp:296 msgid "_Refresh" msgstr "Ac_tualizar" #: src/bz-window.blp:300 msgid "_Login With Flathub" msgstr "Iniciar sesión con _Flathub" #: src/bz-window.blp:306 msgid "_Manage Leftover User Data" msgstr "_Gestionar los datos de usuario restantes" #: src/bz-window.blp:312 msgid "_Preferences" msgstr "_Preferencias" #: src/bz-window.blp:317 msgid "_Keyboard Shortcuts" msgstr "Atajos del _teclado" #: src/bz-window.blp:322 msgid "_About Bazaar" msgstr "_Acerca de Bazar" #: src/bz-window.blp:328 msgid "_Quit Bazaar" msgstr "_Salir de Bazaar" #: src/bz-window.blp:353 msgid "Log Out" msgstr "Cerrar sesión" #. Translators: %s is the title of the current page #: src/bz-window.c:376 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:596 src/bz-window.c:634 msgid "Failed to launch application" msgstr "Falló al iniciar la aplicación" #: src/bz-window.c:843 msgid "You can't remove Bazaar from Bazaar!" msgstr "¡No puede quitar Bazaar desde el propio Bazaar!" #: src/bz-window.c:1132 src/bz-window.c:1166 msgid "Can't do that right now!" msgstr "¡No se puede hacer eso ahora mismo!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Instalación" msgstr[1] "Instalaciones" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navegación" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Abrir la página de exploración" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Abrir la página de la biblioteca" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Abrir la página de búsqueda" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Repositorios remotos" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Sincronizar repositorios remotos" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "General" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Abrir preferencias" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar atajos" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Cerrar ventana" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Salir de Bazaar" ���������bazaar-org-bazaar-48f93f4/po/eu.po������������������������������������������������������������������0000664�0000000�0000000�00000276146�15240005042�0016745�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Basque translations for bazaar package. # Copyright (C) 2026 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2026. # Ibai Oihanguren Sala <ibaios@disroot.org>, 2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-07-20 11:09+0200\n" "PO-Revision-Date: 2026-07-21 22:54+0200\n" "Last-Translator: Ibai Oihanguren Sala <ibaios@disroot.org>\n" "Language-Team: Basque\n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 50.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Gehitu, kendu edo eguneratu ordenagailuko flatpak softwarea" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Sistema;Pakete;Kudeatzailea;Deskubritu;Flatpak;Softwarea;Denda;Biltegia;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "Leiho berria" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Deskubritu eta instalatu aplikazioak" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Aplikazio biltegi bizkor eta modernoa Linuxerako, Flatpak aplikazio eta " "gehigarriak (bereziki Flathub-etik) deskubritu eta instalatzera bideratua." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Gehitu hainbat instalazio ilarara eta jarraitu nabigatzen" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Ikusi aplikazioen baimenak era errazean" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Hasi saioa Flathub-en zure gogokoak ikusi eta kudeatzeko" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Bilatu aplikazioak zuzenean GNOME Shell-etik" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:780 msgid "The Bazaar Contributors" msgstr "Bazaarren kolaboratzaileak" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Flathub aplikazioak erakusten dituen orri nagusia" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Aplikazio baten orria" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Liburutegi orria" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Bilaketa orria" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Kategoria orria" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Eguneratzeak jasotzeari utzi dio" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Desinstalatu" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Instalatu" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Kudeatu gehigarriak" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Ez dago gehigarririk ikusgai" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Uneko iragazki hobespenek gehigarri erabilgarri guztiak ezkutatu dituzte. " "Doitu hobespenak gehigarriak ikusteko." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Gehigarriaren orria" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "Deskarga hileko" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Oinarrizko eguneratzeak jasotzari utzi dio" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Gehigarri honek eguneratzerik edo segurtasun-konponketarik jasotzen ez duen " "exekuzio-ingurune bat darabil. Baliteke berau erabiltzea ez izatea segurua." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "%s(r)entzako gehigarria" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Gutxiago erakutsi" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Gehiago erakutsi" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Deskargen estatistikak" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Adin balorazioa" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Marrazki bizidunetako indarkeria" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Ez dago informaziorik marrazki bizidunetako indarkeriari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Fantasiazko indarkeria" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Ez dago informaziorik fantasiazko indarkeriari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Indarkeria errealista" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Ez dago informaziorik indarkeria errealistari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Sarraskia irudikatzen duen indarkeria" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "" "Ez dago informaziorik sarraskia irudikatzen duen indarkeriari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Indarkeria sexuala" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Ez dago informaziorik indarkeria sexualari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alkohola" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Ez dago informaziorik alkohola aipatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Legez kanpoko drogak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Ez dago informaziorik legez kanpoko drogak aipatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabakoa" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Ez dago informaziorik tabakoa aipatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Biluztasuna" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Ez dago informaziorik biluztasunari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Gai sexualak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Ez dago informaziorik gai sexualak aipatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Hizkera zakarra" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Ez dago informaziorik edonolako hizkera zakarrari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Umore ezegokia" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Ez dago informaziorik umore ezegokiari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Bereizkeria" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Ez dago informaziorik edonolako bereizkeriari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Publizitatea" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Ez dago informaziorik edonolako publizitateari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Jokoa (apustuak)" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Ez dago informaziorik edonolako apustuei dagokienean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Erosketak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Ez dago informaziorik diruz erosketak egiteko aukerari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Erabiltzaileen arteko txatak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "" "Ez dago informaziorik beste erabiltzaileekin berriketan aritzeko bideei " "dagokienean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Erabiltzaileen arteko audio txatak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "" "Ez dago informaziorik beste erabiltzaileekin hitz egiteko bideei dagokienean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Harremanetarako xehetasunak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Ez dago informaziorik sare sozialetako erabiltzaileak edo email helbideak " "partekatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Identifikatzeko informazioa" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Ez dago informaziorik erabiltzailearen datuak hirugarren batekin " "partekatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Kokapena partekatzea" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Ez dago informaziorik beste erabiltzaileekin kokapen fisikoa partekatzeari " "dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostituzioa" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Ez dago informaziorik prostituzioa aipatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Adulterioa" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Ez dago informaziorik adulterioa aipatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Pertsonaia sexualizatuak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Ez dago informaziorik pertsonaia sexualizatuei dagokienean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Profanazioa" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Ez dago informaziorik profanazioa aipatzeari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Giza hondakinak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Ez dago informaziorik giza hondakinak erakusteari dagokionean" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Esklabotza" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Ez dago informaziorik esklabotza aipatzeari dagokionean" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Ez die drogei aipamenik egiten" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Ez du biraorik, juramenturik edo bestelako hizkera zakarrik erabiltzen" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Ez du iragarkirik edo diru-trukerik" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Ez du sexu edukirik edo biluztasunik erakusten" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Ez du kontrolik gabeko txat funtzionalitaterik" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Ez du indarkeriarik erakusten" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drogak" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Hizkera zakarra" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Dirua" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Soziala" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Indarkeria" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Guztiak" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s(e)k adin balorazio ezezaguna dauka" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s edonorentzako da egokia" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s egokia da haur txikientzako" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s egokia da haurrentzako" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s egokia da nerabeentzako" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s egokia da helduentzako" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s egokia da %s urte bitartekoentzako" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "%s sistemako karpeta" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Karpeta nagusiko %s azpikarpeta" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Ostalari sistemako karpetak" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Ostalari sistemako konfigurazioa /etc direktoriotik" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Mahaigaineko %s azpikarpeta" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Mahaigaina karpeta" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Dokumentuetako %s azpikarpeta" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Dokumentuak karpeta" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Musikako %s azpikarpeta" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Musika karpeta" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Irudietako %s azpikarpeta" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Irudiak karpeta" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Publikoki partekatutako %s azpikarpeta" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Publikoa karpeta" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Bideoetako %s azpikarpeta" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Bideoak karpeta" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Txantiloietako %s azpikarpeta" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Txantiloiak karpeta" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Erabiltzailearen cacheko %s azpikarpeta" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Erabiltzailearen cache karpeta" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Erabiltzailearen konfigurazioko %s azpikarpeta" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Erabiltzailearen konfigurazio karpeta" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Erabiltzailearen datuetako %s azpikarpeta" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Erabiltzailearen datuen karpeta" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Erabiltzailearen exekuzio-inguruneko %s azpikarpeta" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Erabiltzailearen exekuzio-ingurune karpeta" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Fitxategi-sisteman sarbidea %s karpetara" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Fitxategi-sistemako bide ezezaguna" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Deskargaren tamaina" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Instalazioaren tamaina" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "Internetetik deskargatu beharrekoaren tamaina" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Diskoan hartzen duen tamaina" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Ireki erabiltzaile-datuen karpeta" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "Zure erabiltzaile-datuak" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Cachea, ezarpenak eta aplikazioaren bestelako datuak" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Cachea" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "Aldi baterako cacheratutako datuak" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "Garbitu cachea" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Instalatutako exekuzio-ingurunearen tamaina" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Exekuzio-ingurunearen deskarga tamaina" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "E/E" #: src/bz-app-size-dialog.c:207 msgid "App Size" msgstr "Aplikazioaren tamaina" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Egiaztatua" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:135 msgid "Installed" msgstr "Instalatua" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:783 msgid "translator-credits" msgstr "Ibai Oihanguren Sala" #: src/bz-application.c:793 msgid "Special Thanks" msgstr "Eskerrak" #: src/bz-application.c:851 msgid "Logged Out Successfully!" msgstr "Behar bezala amaitu da saioa!" #: src/bz-application.c:1042 msgid "Ubuntu Troubles!" msgstr "Arazoak Ubuntun!" #: src/bz-application.c:1045 msgid "" "The more recent versions of Ubuntu have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version of " "Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Ubunturen azken bertsioek segurtasun arau lehenentsiak nahastu dituzte, " "Bazaarren Flatpak bertsioa erabiliz <b>aplikazioak instalatzea ezinezko</b> " "bihurtuz. Oraingoz, erabili pakete arrunta honakoa exekutatuz:\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "Flatpak bertsio hau ezaba dezakezu honakoa exekutatuz:\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1051 msgid "Continue Anyway" msgstr "Jarraitu halere" #: src/bz-application.c:1067 msgid "Performing setup…" msgstr "Konfigurazioa osatzen…" #: src/bz-application.c:1159 msgid "Set Up System Flathub?" msgstr "Sistemako Flathub konfiguratu?" #: src/bz-application.c:1162 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Sistemako Flathub urruneko biltegia ez dago konfiguratuta. Bazaar erabilita " "aplikazioak arakatu eta instalatzeko, Flathub konfiguratuta egon behar da " "sistemako Flatpak instalazioan.\n" "\n" "Bestela, Bazaar soilik instalatutako aplikazioak nabigatu eta kentzeko " "erabili ahalko duzu." #: src/bz-application.c:1169 msgid "Set Up Flathub?" msgstr "Flathub konfiguratu?" #: src/bz-application.c:1172 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub ez dago sisteman konfiguratuta. Ezin izango dituzu aplikazioak " "nabigatu eta instalatu Bazaar erabilita.\n" "\n" "Bazaar dagoeneko instalatutako aplikazioak nabigatu eta kentzeko erabili " "ahalko duzu." #: src/bz-application.c:1178 msgid "Later" msgstr "Geroago" #: src/bz-application.c:1179 msgid "Set Up Flathub" msgstr "Konfiguratu Flathub" #: src/bz-application.c:1712 msgid "A backend error occurred" msgstr "Backendeko errorea gertatu da" #: src/bz-application.c:1912 src/bz-application.c:4150 msgid "Refreshing…" msgstr "Berritzen…" #: src/bz-application.c:2076 src/bz-application.c:4148 #, c-format msgid "Loading %d apps…" msgstr "%d aplikazioak kargatzen…" #: src/bz-application.c:2129 msgid "Failed to open file" msgstr "Ezin izan da fitxategia ireki" #: src/bz-application.c:2258 msgid "An initialization error occurred" msgstr "Hasieratze-errore bat gertatu da" #: src/bz-application.c:2657 msgid "Checking for updates…" msgstr "Eguneratzeak bilatzen…" #: src/bz-application.c:2713 msgid "Failed to check for updates" msgstr "Ezin izan dira eguneratzeak bilatu" #: src/bz-application.c:3852 msgid "Malformed Link" msgstr "Gaizki eratutako esteka" #: src/bz-application.c:3853 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Aplikazio hau irekitzeko erabilitako estekak maiuskulen okerreko erabilera " "dauka, eta baliteke noizbait funtzionatzeari uztea.\n" "\n" "Seguruenera hau KRunner-ek okerreko aplikazio IDak bidaltzen dituelako " "izango da." #: src/bz-application.c:3861 msgid "Could not find app" msgstr "Ez da aplikazioa aurkitu" #: src/bz-application.c:3892 msgid "Failed to load metainfo" msgstr "Ezin izan da meta informazioa kargatu" #: src/bz-application.c:4152 msgid "Writing to cache…" msgstr "Cachean idazten…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Erakutsi dena" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "\"%s\" aplikazio guztiak" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d aplikazio" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Ezin izan da artikulua kargatu" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Sortaren instalazioa" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Menpekotasun gehigarriek leku gehiago har dezakete" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Baliteke aplikazio hau instalatzeko software-iturri berri bat gehitu behar " "izatea. Iturri honetako beste aplikazioak ere Bazaarren azalduko dira.\n" "\n" "Ez gehitu iturri hau ez bazaude bere fidagarritasunaz ziur." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "Behar bezala instalatu da!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Ireki" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Erakutsi aplikazioaren xehetasunak" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Dagoeneko instalatua" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Instalazioak huts egin du" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Instalazio tamaina ezezaguna" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "%s inguru instalatzeko" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Baimen berezirik ez" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:29 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Hutsik" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "Aukeraketarik gabe" #: src/bz-curated-view.blp:30 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Ez dago aukeraketa informaziorik sistema honetan. Halere, Flathub-eko " "aplikazioak araka ditzakezu." #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "Arakatu Flathub" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "Lineaz kanpo" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Nabigatzailea" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Egiaztatu gabea" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Garatzailearen informazioa ez dago eskuragarri." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "%s aplikazio IDaren jabetza ez da egiaztatu, eta baliteke komunitateko " "paketea izatea." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "%s aplikazio IDaren jabetza eskuz egiaztatu du Flathub-eko lantaldeak." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "%1$s aplikazio IDaren jabetza <b>%2$s</b>(e)k egiaztatu du <b>%3$s</b>(e)an." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "%1$s aplikazio IDaren jabetza %2$s erabiliz egiaztatu da." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "%s aplikazio IDaren jabetza egiaztatua izan da." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Bertsio-ohar osoak" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "Bertsio hau zu moduko erabiltzaileei esker sortu da!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Maite dut Bazaar garatzea, baina ezin dut lan hau bakarrik egin. Lagundu " "aplikazioaren garapena Ko-Fi erabilita dohaintza bat eginez." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Lagundu Bazaar diruz" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Zer berri %s bertsioan?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "%Y(e)ko %Bren %-e(e)an argitaratua" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Aukeratu instalazio bat" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Aplikazio honen hainbat bertsio dituzu instalatuta. Zeinekin egin nahi duzu " "aurrera?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Utzi" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Erabiltzaile honentzat soilik" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "erabiltzaile hau" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "erabiltzaile guztiak" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:98 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Xehetasunak" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Kopiatu" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Kopiatuta!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Gogokoen kopurua" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Huts egin du gogokoa eguneratzeak" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Hasi saioa Flathub-ekin gogokoak kudeatzeko" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Hasi saioa" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:348 msgid "Favorites" msgstr "Gogokoak" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Instalatu dena" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:17 msgid "Loading" msgstr "Kargatzen" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Gogokorik ez" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Gogoko gisa markatzen dituzun aplikazioak hemen azalduko dira" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Babestu aplikazio hau" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Kendu gogokoetatik" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Huts egin du gogokoa kentzeak" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Aurrekoa" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Hurrengoa" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Edizioa" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Nahasketa" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Musika" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Erreproduzitzailea" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Grabatzailea" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Sekuentziadorea" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Afinagailua / Sintonizadorea" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TB" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Emulazioa" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Akzioa" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Abentura" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arkade" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Blokeak" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Mahai-jokoa" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Kartak" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Haurrak" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Logika" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Rol jokoa" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Tiroak" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulazioa" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Kirolak" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Estrategia" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Nabigatzaileak" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Txata" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Posta" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Fitxategiak partekatzea" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Audioa eta bideoa" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Multimedia" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Audio / bideo aplikazio gehiago" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Garapen tresnak" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Garapena" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Garapen tresna gehiago" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Hezkuntza" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Ikasi" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Hezkuntza aplikazio gehiago" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Jokoak" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Jolastu" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Joko gehiago" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafikoak eta argazkigintza" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Sortu" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Grafiko / argazkigintzako aplikazio gehiago" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Sareak" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Sareko aplikazio gehiago" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Produktibitatea" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Lana" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Produktibitate aplikazio gehiago" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Zientzia" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Zientzia aplikazio gehiago" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Sistema" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Sistema aplikazio gehiago" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Tresnak" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "Tresnak" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Tresna gehiago" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Pil-pilean" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Pil-pilean dauden aplikazio gehiago" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "Ezagunak" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Aplikazio ezagun gehiago" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Azkena gehituak" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Berriak" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Aplikazio berri gehiago" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Berriki eguneratuak" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Eguneratuak" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Eguneratutako aplikazio gehiago" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Mugikorrerako" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Mugikorrerako aplikazio gehiago" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Adwaita aplikazio gehiago" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "KDE aplikazioak" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "KDE aplikazio gehiago" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Jokoak" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "Joko gehiago" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "Emulatzaileak" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Emulatzaile gehiago" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "Abiarazleak" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Joko-abiarazle gehiago" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Joko-tresnak" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Joko-tresna gehiago" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Ez da Flathub gehitu" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Ez da Flathub urrunekorik aurkitu zure Flatpak instalazioetan" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub ez dago eskuragarri" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Ezin da Flathub atzitu" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Halere, aplikazioak kudeatu eta bila ditzakezu oraindik." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Bilatu aplikazioak" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Birkonektatu" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Eguneko aplikazioa" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "Aldean" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "Linux mugikor eta tabletentzako aplikazioak" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "Aplikazio mugikor gehiago" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "Guk ere ♥​ ditugu jokoak" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "Gogokoen dituzun jokoak eta hauentzako aplikazioak" #: src/bz-full-view.blp:34 src/bz-library-page.blp:40 #: src/bz-library-page.blp:44 msgid "No Results" msgstr "Emaitzarik ez" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Saiatu beste bilaketa batekin" #: src/bz-full-view.blp:47 msgid "Content" msgstr "Edukia" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Hau tokiko aurrebista da, baliteke xehetasun batzuk argitaratutako " "zerrendarekin bat ez etortzea" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "Aurreikusi biltegiaren itxura" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "_Babestu" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Aplikazio honek eguneratzerik edo segurtasun-konponketarik jasotzen ez duen " "exekuzio-ingurune bat darabil. Baliteke berau erabiltzea ez izatea segurua." #: src/bz-full-view.blp:539 msgid "Trash Data" msgstr "Bota datuak zakarrontzira" #: src/bz-full-view.blp:602 msgid "Add-ons" msgstr "Gehigarriak" #: src/bz-full-view.blp:637 msgid "More Add-Ons" msgstr "Gehigarri gehiago" #: src/bz-full-view.blp:648 msgid "Links" msgstr "Estekak" #: src/bz-full-view.blp:679 msgid "Similar Apps" msgstr "Antzeko aplikazioak" #: src/bz-full-view.c:181 msgid "No URL" msgstr "URLrik ez" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Aplikazio honek lizentzia libre eta irekia dauka, eta ondorioz, bere " "iturburu kodea segurtasun ikuspegitik audita daiteke." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Aplikazio honek lizentzia pribatiboa dauka, eta ondorioz, bere iturburu " "kodea pribatuki garatzen da eta ezin du hirugarren independente batek " "auditatu." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Aplikazio gehiago" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "%s(r)en aplikazio gehiago" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Garatzailearen beste aplikazioak" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "%s(r)en beste aplikazioak" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "%s ez dago instalatua, baina oraindik <b>%s</b> daude gordeta datuetan." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Bestelako aplikazioak" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "Aplikazio %d" msgstr[1] "%d aplikazio" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:141 msgid "Failed to Remove User Data" msgstr "Huts egin du erabiltzaile-datuak ezabatzeak" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Hardware euskarria" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Teklatu euskarria" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Teklatua behar du" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Teklatua gomendatzen du" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Teklatua onartzen du" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Teklatuentzako euskarria ezezaguna" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Sagu euskarria" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Sagua edo gailu erakuslea behar du" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Sagua edo gailu erakuslea gomendatzen du" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Sagua edo gailu erakuslea onartzen du" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Sagu edo gailu erakusleentzako euskarria ezezaguna" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Ukipen-pantaila euskarria" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Ukipen-pantaila behar du" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Ukipen-pantaila gomendatzen du" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Ukipen-pantaila onartzen du" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Ukipen-pantailentzako euskarria ezezaguna" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Mugikor euskarria" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Gailu mugikorretan funtzionatzen du" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Baliteke gailu mugikorretan behar bezala ez funtzionatzea" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Mahaigain euskarria" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Behar bezala funtzionatzen du pantaila handietan" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s hobeto dabil hardware batzuetan" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s(e)k gailu gehienetan funtzionatzen du" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Ikuskatze-menua" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Ireki" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Desinstalatu aplikazioa" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Kendu" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Eguneratu" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Kendu" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Instalatu %s %s(e)tik" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Instalatu %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Utzi" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Uzten" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Dohaintza botoia" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "Bilatu instalatutako aplikazioak" #: src/bz-library-page.blp:33 msgid "No Apps Found" msgstr "Ez da aplikaziorik aurkitu" #: src/bz-library-page.blp:52 msgid "Search Store Instead" msgstr "Bilatu biltegian" #. Translators: . #: src/bz-library-page.blp:62 src/bz-window.blp:114 msgid "Library" msgstr "Liburutegia" #: src/bz-library-page.blp:91 msgid "Pending Updates" msgstr "Zain dauden eguneratzeak" #: src/bz-library-page.blp:118 msgid "Downloads" msgstr "Deskargak" #: src/bz-library-page.blp:161 msgid "Recently Uninstalled" msgstr "Berriki desinstalatuak" #: src/bz-library-page.blp:212 msgid "Clear Finished Tasks" msgstr "Garbitu amaitutako atazak" #: src/bz-library-page.blp:239 msgid "Sort Options" msgstr "Ordenatze-aukerak" #: src/bz-library-page.blp:298 msgid "Sort By" msgstr "Ordenatu honela" #: src/bz-library-page.blp:312 msgid "Name" msgstr "Izena" #: src/bz-library-page.blp:318 msgid "Size" msgstr "Tamaina" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "" "Ez da \"%s\" bilaketarekin bat datorren emaitzarik aurkitu instalatutako " "aplikazioen zerrendan" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "Eguneratze %u erabilgarri" msgstr[1] "%u eguneratze erabilgarri" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "Aplikazio %u instalatuta" msgstr[1] "%u aplikazio instalatuta" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Ez da aplikaziorik aurkitu" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Aplikazio bat aurkitu da" msgstr[1] "%u aplikazio aurkitu dira" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Hartu parte" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Informazio gehiago" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Lizentzia ezezaguna" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Komunitateak eraikia" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:288 msgid "Proprietary" msgstr "Pribatiboa" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:290 msgid "Special License" msgstr "Lizentzia berezia" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Aplikazio hau nazioarteko komunitate batek eraiki du modu irekian.\n" "\n" "Parte hartuz hobetzen lagun dezakezu." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Ez da aplikazio honen lizentzia ezagutzen" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Aplikazio hau nazioarteko komunitate batek eraiki du modu irekian, eta %s " "lizentziapean askatu du.\n" "\n" "Parte hartuz hobetzen lagun dezakezu." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Aplikazio hau ez da modu irekian garatu eta, beraz, bere garatzaileek soilik " "dakite nola funtzionatzen duen. Baliteke segurua ez izatea antzemateko zaila " "den eran, eta inork ikuskatu gabe alda daiteke.\n" "\n" "Ezin dugu ziurtatu aplikazio honen garapenean lagun dezakezunik." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Aplikazio hau %s lizentzia berezipean garatu da.\n" "\n" "Ezin dugu ziurtatu aplikazio honen garapenean lagun dezakezunik." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Lizentzia" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Konektatu Flathub-era" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Zerbaitek ez du funtzionatu" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Hasi saioa zure gogoko aplikazioak gailuetan zehar partekatzeko" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Amaitu" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Kaixo, %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "Hautatu metainfo fitxategia" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Metainfo fitxategiak" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "Hautatu ikonoa (aukerakoa)" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Irudi fitxategiak" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Aurrebista" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Hobespenak" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Sareko konexioa neurtua da — biltegiko datuen berritze automatikoa pausatu da" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Berritu eskuz" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Aplikazio eguneratzeak" #: src/bz-preferences-dialog.blp:46 msgid "" "Checking for and downloading app updates uses data and power. Automatic app " "update features are therefore paused when on metered network connections and " "when power saver is on." msgstr "" "Aplikazio eguneratzeak bilatu eta deskargatzeak datuak eta argindarra " "erabiltzea dakar. Ondorioz, aplikazioen eguneratze automatikorako eginbideak " "pausatu egiten dira sareko konexio neurtua erabiltzean edo energia " "aurrezpena aktibatuta dagoenean." #: src/bz-preferences-dialog.blp:52 msgid "_Automatic" msgstr "_Automatikoa" #: src/bz-preferences-dialog.blp:53 msgid "Automatically check for and download app updates" msgstr "Bilatu eta deskargatu aplikazio eguneratzeak automatikoki\t" #: src/bz-preferences-dialog.blp:62 msgid "_Manual" msgstr "_Eskuzkoa" #: src/bz-preferences-dialog.blp:63 msgid "Checking for and downloading app updates must be done manually" msgstr "Aplikazio eguneratzeak eskuz bilatu eta deskargatu behar dira" #: src/bz-preferences-dialog.blp:78 msgid "Automatic Update _Notifications" msgstr "Eguneratze _jakinarazpen automatikoak" #: src/bz-preferences-dialog.blp:79 msgid "Notify when updates have been automatically installed" msgstr "Jakinarazi eguneratzeak automatikoki instalatu direnean" #: src/bz-preferences-dialog.blp:84 msgid "Content Filters" msgstr "Eduki iragazkiak" #: src/bz-preferences-dialog.blp:87 msgid "_Free Software Only" msgstr "Software _librea soilik" #: src/bz-preferences-dialog.blp:88 msgid "Hide proprietary apps when browsing and searching" msgstr "Ezkutatu aplikazio pribatiboak nabigatzean eta bilatzean" #: src/bz-preferences-dialog.blp:93 msgid "F_lathub Results Only" msgstr "_Flathub-eko emaitzak soilik" #: src/bz-preferences-dialog.blp:94 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Mugatu bilaketa eta nabigazioko emaitzak Flathub-en erabilgarri dauden " "aplikazioetara" #: src/bz-preferences-dialog.blp:99 msgid "_Verified Results Only" msgstr "_Egiaztatutako emaitzak soilik" #: src/bz-preferences-dialog.blp:100 msgid "Hide results that are not verified on Flathub" msgstr "Ezkutatu Flathub-ek egiaztatu gabeko emaitzak" #: src/bz-preferences-dialog.blp:105 msgid "Hide _End-of-Life Apps" msgstr "Ezkutatu bizirik e_z dauden aplikazioak" #: src/bz-preferences-dialog.blp:106 msgid "Hide apps which are no longer supported by their developers" msgstr "Ezkutatu garatzaileek mantentzen ez dituzten aplikazioak" #: src/bz-preferences-dialog.blp:112 msgid "Progress Bar Theme" msgstr "Aurrerapen barraren gaia" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Kolore orokorra" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Harrotasunaren koloreak" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Harrotasun lesbianaren koloreak" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Gay harrotasunaren koloreak" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Trans harrotasunaren koloreak" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Ez-bitar harrotasunaren koloreak" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Harrotasun bisexualaren koloreak" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Harrotasun asexualaren koloreak" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Harrotasun pansexualaren koloreak" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Harrotasun arromantikoaren koloreak" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Genero fluido harrotasunaren koloreak" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Harrotasun polisexualaren koloreak" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Harrotasun omnisexualaren koloreak" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Harrotasun arromantiko asexualaren koloreak" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Genero gabeko harrotasunaren koloreak" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Kuir harrotasunaren koloreak" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Intersex harrotasunaren koloreak" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Demigenero harrotasunaren koloreak" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Harrotasun birromantikoaren koloreak" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Ezgaitasun harrotasunaren koloreak" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Femboy harrotasunaren koloreak" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Genero neutroko harrotasunaren koloreak" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Bertsioen historia" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Bertsioen historia" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Gaur" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Atzo" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Duela egun %d" msgstr[1] "Duela %d egun" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Duela astebete" msgstr[1] "Duela %d aste" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Duela hilabete" msgstr[1] "Duela %d hilabete" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Duela urtebete" msgstr[1] "Duela %d urte" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%Y %b %e" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "%s bertsioa" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Xehetasunik ez argitaratze honentzat" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Eskuratu informazio gehiago" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Desinstalatu" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Eskuratu" #: src/bz-safety-dialog.blp:31 src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Baimen arbitrarioak" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Aplikazio honek duen baimen batek bere buruari <b>nahi duen beste edozein " "baimen</b> ematea ahalbidetzen dio, Flatpak-en isolazioa saltatuz.\n" "\n" "Ondorioz, isolatu gabeko aplikazio arrunt batek egin dezakeen edozer egin " "dezake, hala nola, zure fitxategi guztiak atzitu edo Internetera konektatu.\n" "\n" "Beste baimenak ikusteak aplikazioak egin dezakeena hobeto ulertzen lagun " "zaitzake." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "Ikusi beste baimenak" #: src/bz-safety-dialog.blp:79 src/context-tile-callbacks.c:400 msgid "Safe" msgstr "Segurua" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "Aplikazioaren IDa" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Aplikazio honek software plataformaren (SDK) bertsio zaharkitua darabil, eta " "baliteke konpondu gabeko akatsak edo segurtasun-zaurgarritasunak izatea." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "Segurtasuna" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s segurua da" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s(e)k ez dauka baimen ez segururik" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s segurua da, segur aski" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s beharbada segurua da" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s ez da segurua" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Atzera" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Aurreko pantaila-argazkia" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Hurrengo pantaila-argazkia" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Kopiatu irudia" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Berrezarri ikuspegia" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Urrundu" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Gerturatu" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Pantaila-argazkien aurkezpena" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Pantaila-argazkirik ez" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Ireki pantaila-argazki ikustailea" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "%u %s pantaila-argazkia" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "%u pantaila-argazkiak" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "Garbitu bilaketa" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Iragazkiak" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Egiaztatua" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Librea/Irekia" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Bizirik" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Ez erakutsi bizirik ez dauden aplikazioak" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Mugikorrerako egokitua" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategoriak" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "Bilatu aplikazioak, jokoak, softwarea" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Bilaketa iragazkiak" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Arakatu kategoriak" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Kategoriarik ez erabilgarri" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Bilatu aplikazioak goiko bilaketa-barra erabiliz." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Ez da aplikaziorik aurkitu" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Ez da emaitzarik aurkitu \"%s\" bilaketarentzat Flathub-en" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Bideoa" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Bulegoa" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDFak" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Egutegia" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Mezularitza" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Margoketa" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPNa" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrentak" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulatzailea" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub-eko orria" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Proiektuaren webgunea" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Akatsen aztarnaria" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "Ohiko galderak" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Laguntza" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Eman dirua" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Itzuli" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Kontaktua" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Iturburu kodea" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Lagundu" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifestua" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Kopiatu esteka" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Denbora-lerroa" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Instalazioak:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Mundua" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "2024/04/15etik" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM instalazio guztira" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK instalazio guztira" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d instalazio guztira" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Ez da emaitzarik aurkitu" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Huts egin du bilaketak" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Mantendu erabiltzaile-datuak" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Baimendu ezarpen eta eduki pertsonalak berrezartzea" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Ezabatu datu guztiak" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Ezabatu betiko erabiltzaile-datuak lekua libratzeko" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "%s instalatu?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Hautatu zein bertsio instalatu nahi duzun. Baliteke partekatutako beste " "osagai batzuk ere instalatzea." #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Baliteke partekatutako osagai gehigarriak instalatzea" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Utzi" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Instalatu" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "%s kendu?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Hautatu kendu beharreko bertsioa." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Ezin izango duzu %s erabili desinstalatu ondoren." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "\"%s\" arrisku handikoa da" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Aplikazio honek sistemara sarbide osoa dauka, zure <b>fitxategi guztiak, " "nabigatze-historia, gordetako pasahitzak</b> eta gehiago atzitzeko baimena " "barne. Internetera sarbidea ere badauka, eta ondorioz, zure datuak kanpoko " "norbaiti bidal diezazkioke.\n" "\n" "Aplikazio hau pribatiboa denez, ezin da auditatu baimen hauekin zer egiten " "duen aztertzeko." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Aplikazio honek X11 leiho-sistema legatua darabil, eta honek <b>teklatuko " "sakatze guztiak grabatu, pantaila-argazkiak atera eta beste aplikazioak " "monitorizatzea</b> ahalbidetzen dio. Internetera sarbidea ere badauka, eta " "ondorioz, zure datuak kanpoko norbaiti bidal diezazkioke.\n" "\n" "Aplikazio hau pribatiboa denez, ezin da auditatu baimen hauekin zer egiten " "duen aztertzeko." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Instalatu halere" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Huts egin du transakzioaren leihoa kargatzeak" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Aplikazio guztiak instalatu dira dagoeneko" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Ados" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Aplikazioa instalatu?" msgstr[1] "%u aplikazioak instalatu?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Ondorengoa instalatuko da. Baliteke partekatutako osagai gehigarriak ere " "instalatzea." #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d gehigarri instalatuko dira." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Gainera, gehigarriak instalatuko dira." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Instalatu dena" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "%.02f segundoan amaitua" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Aplikazioaren gehigarria" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Exekuzio-ingurunea" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "Ilaran" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Egina" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Utzita" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Errorea" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Eten transakzioa" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Erakutsi xehetasunak" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Erakutsi errore-informazioa" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s libratuta" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Transakzio-errorea" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Zain" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Eguneratu dena" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "Exekuzio-ingurunearen eguneratze %u" msgstr[1] "Exekuzio-ingurunearen %u eguneratze" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Kudeatu soberako erabiltzaile-datuak" #: src/bz-user-data-page.blp:34 msgid "No User Data Found" msgstr "Ez da erabiltzaile-daturik aurkitu" #: src/bz-user-data-page.blp:40 msgid "User Data" msgstr "Erabiltzaile-datuak" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Ireki erabiltzaile-datuen karpeta" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Bota erabiltzaile-datuak zakarrontzira" #: src/bz-user-data-tile.c:147 #, c-format msgid "Trashed User Data for %s" msgstr "%s(r)en erabiltzaile-datuak zakarrontzira bota dira" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Berritzen" #: src/bz-window.blp:90 msgid "Curated" msgstr "Aukeratua" #: src/bz-window.blp:102 msgid "Explore" msgstr "Arakatu" #: src/bz-window.blp:129 msgid "Search" msgstr "Bilaketa" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Menu nagusia" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Bazaarren bertsio berria ari zara erabiltzen!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Ikusi berritasunak" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Sareko konexioa daukazu, baina Flathub-en bertsio cacheratua ari zara ikusten" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "Sareko konexioa neurtua da — berritze automatikoa ezgaitu da" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Lagundu Bazaar diruz" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Berritu" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "Hasi saioa _Flathub-en" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_Kudeatu soberako erabiltzaile-datuak" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Hobespenak" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Teklatuko lasterbideak" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "B_azaarri buruz" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_Irten" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Amaitu saioa" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Huts egin du aplikazioa abiarazteak" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Ezin duzu Bazaar kendu Bazaar erabilita!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Orain ezin duzu hori egin!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "instalazio" msgstr[1] "instalazio" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d deskarga azken hilean" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s exekuzio-ingurunea" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Deskargatzeko" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Ez dago tamainaren informaziorik" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "%sko deskarga tamaina" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Adin guztiak" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Ez dago adin balorazioaren informaziorik" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Egokia adin guztietakoentzat" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Egokia %d urtetik gorakoentzat" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "Ezezaguna" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Software librea %s lizentziapean" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Software librea" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Software pribatiboa" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Lizentzia berezia: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Software librea" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "Moldakorra" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "Mahaigainerako soilik" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "Mahaigainean, tabletetan eta mugikorretan dabil" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Baliteke gailu mugikorretan ez ibiltzea" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Arrisku txikia" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Arrisku ertaina" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Arrisku handia" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Baimen ezezagunak" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Aplikazio honen baimenak ezezagunak dira." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Baimenik ez" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Aplikazioa guztiz isolatua dago" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Sarera sarbidea" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Internetera sarbidea dauka" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Sarera sarbiderik ez" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Ez dauka Internetera sarbiderik" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Erabiltzailearen gailuetara sarbidea" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Web kamera eta joko-aginteen erako gailuetara sarbidea dauka" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Erabiltzailearen gailuetara sarbiderik ez" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Ez dauka web kamera eta joko-aginteen erako gailuetara sarbiderik" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Sarrerako gailuetara sarbidea" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Sarrerako gailuetara sarbidea dauka" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Mikrofonora eta audio erreprodukziora sarbidea" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "Mikrofonotik entzun eta audioa erreproduzitu dezake baimenik eskatu gabe" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Sistemako gailuetara sarbidea" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "Goragoko baimenak behar dituzten sistemako gailuetara sarbidea dauka" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Pantailako edukietara sarbidea" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Pantailako edo beste leihoetako edukia ikus dezake" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Leiho-sistema legatua" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Leiho-sistema legatua (X11) darabil beti" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Baimen arbitrarioak eskura ditzake" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Erabiltza ezarpenak" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Erabiltzaile ezarpenak atzitu eta alda ditzake" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Fitxategi-sistema osoan irakurri/idazteko sarbidea" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Fitxategi-sistemako datu guztiak irakurri eta idatz ditzake" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Karpeta nagusian irakurri/idazteko sarbidea" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Karpeta nagusiko datu guztiak irakurri eta idatz ditzake" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Fitxategi-sistema osoa irakurtzeko sarbidea" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Fitxategi-sistemako datu guztiak irakur ditzake" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Karpeta nagusian irakurtzeko sarbidea" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Karpeta nagusiko datu guztiak irakur ditzake" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Deskarga karpetan irakurri/idazteko sarbidea" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Deskarga karpetako datu guztiak irakurri eta idatz ditzake" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Deskarga karpeta irakurtzeko sarbidea" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Deskarga karpetako datu guztiak irakur ditzake" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Direktorioko datu guztiak irakurri eta idatz ditzake" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Direktorioko datu guztiak irakur ditzake" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Fitxategi-sistemara sarbiderik ez" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Ezin du fitxategi-sistema inola ere atzitu" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Sistemako zerbitzuak darabiltza" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Sistemako zerbitzu zuzenei datuak eska diezazkieke" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Saioko zerbitzuak darabiltza" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Saioko zerbitzu zuzenei datuak eska diezazkieke" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Ez du zerbitzuetara sarbiderik" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Ez dauka sistemako edo saioko zerbitzu zuzenetara inolako sarbiderik" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Aplikazio garatzaile egiaztatua" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "Aplikazio honen garatzailea berak dioen hura dela egiaztatu da" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Kode pribatiboa" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Iturburu kodea ez da publikoa, ezin da era independentean auditatu, eta " "baliteke segurua ez izatea" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Kode auditagarria" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Iturburu kodea publikoa da, independenteki audita daiteke, eta aplikazioa " "segurua izatea errazten du" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "%s sistemako zerbitzuaren erabilera" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "%s saioko zerbitzuaren erabilera" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "%s zerbitzuaren erabilera" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Zuzeneko zerbitzua ikus dezake" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Zuzeneko zerbitzuarekin hitz egin dezake" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Zuzeneko zerbitzua beregana dezake" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Menu orokorrarekin integrazioa" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Bere menuak menu orokorraren barran erakuts ditzake" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "KDEren ezarpenekin integrazioa" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "KDE mahaigaineko ezarpenen aldaketak antzeman ditzake" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "KDEren ezarpen orokorrak" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "" "KDE mahaigaineko hobespenak irakur ditzake, esaterako letra-tipo eta " "koloreei buruzkoak" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Biltegiratze sekretuaren zerbitzua" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "Bere pasahitzak sistemako gako-sorta erabiliz gorde eta eskura ditzake" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Mahaigaineko jakinarazpenen zerbitzua" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Mahaigaineko jakinarazpenak bidal ditzake" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Sistemako erretiluarekin integrazioa" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Sistemako erretiluan ikono bat erakuts dezake" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "KDE Connect-ekin integrazioa" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "KDE Connect bidez parekatutako gailuekin interaktua dezake" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Nabigazioa" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Ireki Arakatu orria" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Ireki Liburutegia orria" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Ireki Bilaketa orria" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Urrunekoak" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Sinkronizatu urrunekoak" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Orokorra" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Ireki hobespenak" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Erakutsi laster-teklak" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Itxi leihoa" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Irten" #: src/update-worker.c:358 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "Aplikazio %u eguneratu da" msgstr[1] "%u aplikazio eguneratu dira" #: src/update-worker.c:361 #, c-format msgid "%s has been updated." msgstr "%s eguneratu da." #: src/update-worker.c:364 #, c-format msgid "%s and %s have been updated." msgstr "%s eta %s eguneratu dira." #: src/update-worker.c:368 #, c-format msgid "Includes %s, %s and %s." msgstr "%s, %s eta %s barne." #~ msgid "Free" #~ msgstr "Librea" #~ msgid "Clear search" #~ msgstr "Garbitu bilaketa" #~ msgid "Tags:" #~ msgstr "Etiketak:" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "" #~ "Konektatu zure Flathub kontua Bazaarrera gogoko aplikazioak kudeatzeko." #~ msgid "Delay Search Results" #~ msgstr "Atzeratu bilaketen emaitzak" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "" #~ "Hobetu emaitzak erakusteko errendimendua, bilaketako hitzak berehala ez " #~ "prozesatuz" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "Aukeratu aurrerapen barrarako gaia!" #~ msgid "Vertical Stripes" #~ msgstr "Marra bertikalak" #~ msgid "Display flag colors from left to right" #~ msgstr "Erakutsi banderen koloreak ezkerretik eskuinerantz" #~ msgid "Open Link" #~ msgstr "Ireki esteka" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "\"%s\" etiketadun aplikazioak" #~ msgid "Flathub returned an error" #~ msgstr "Flathub-ek errorea itzuli du" #~ msgid "Retry Flathub Connection" #~ msgstr "Saiatu Flathub-era berriro konektatzen" #~ msgid "User Data Size" #~ msgstr "Erabiltzaile-datuen tamaina" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Open App Library" #~ msgstr "Ireki aplikazioen liburutegia" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "Oraingoz ez dago .flatpak sortak instalatzeko aukerarik" #~ msgid "Steam" #~ msgstr "Steam" #~ msgid "Minecraft" #~ msgstr "Minecraft" #~ msgid "Refresh completed!" #~ msgstr "Berrituta!" #~ msgctxt "As in, \"100 Installs\"" #~ msgid "Installs" #~ msgstr "instalazio" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "Berritu" #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "_Donate to Bazaar â¤ï¸" #~ msgstr "_Lagundu diruz Bazaar â¤ï¸" #~ msgid "Flathub" #~ msgstr "Flathub" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/fa_IR.po���������������������������������������������������������������0000664�0000000�0000000�00000041141�15240005042�0017275�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Persian translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Goudarz Jafari <me@goudarzjafari.com>, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-14 09:23+0330\n" "PO-Revision-Date: 2025-07-14 16:34+0330\n" "Last-Translator: Goudarz Jafari <me@goudarzjafari.com>\n" "Language-Team: none\n" "Language: fa_IR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.6\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 msgid "Bazaar" msgstr "بازار" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Ø§ÙØ²ÙˆØ¯Ù†ØŒ حذ٠یا به‌روزرسانی Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÛŒ Flatpak در این رایانه" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;سیستم;مدیر بسته‌ها;Ú©Ø´Ù ;کردن;Flatpak;Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±;ÙØ±ÙˆØ´Ú¯Ø§Ù‡;" #: data/io.github.kolunmi.Bazaar.gschema.xml:6 msgid "Show Animated Background" msgstr "نمایش پس‌زمینه متحرک" #: data/io.github.kolunmi.Bazaar.gschema.xml:7 msgid "Whether to show the animated icon background on the home page" msgstr "آیا پس‌زمینه‌ی نماد متحرک در ØµÙØ­Ù‡â€ŒÛŒ اصلی نمایش داده شود" #. FIXME: add descriptions and summary #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:9 msgid "Keep the summary shorter, between 10 and 35 characters" msgstr "خلاصه را کوتاه Ù†Ú¯Ù‡ دارید، بین Û±Û° تا Û³Ûµ نویسه" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:11 msgid "No description" msgstr "بدون توضیح" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:41 msgid "Main Bazaar window showing Blender" msgstr "پنجره‌ی اصلی بازار Ú©Ù‡ Blender را نمایش می‌دهد" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:50 msgid "Release description" msgstr "توضیح‌های نگارش" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:52 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:53 msgid "List of changes" msgstr "Ùهرست تغییرات" #: src/bz-addons-dialog.blp:13 src/bz-installed-page.blp:162 #: src/bz-installed-page.blp:174 msgid "Manage Addons" msgstr "مدیریت Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§" #: src/bz-app-tile.blp:65 src/bz-full-view.blp:139 msgid "This flatpak is verified by the original developers of the software." msgstr "این Flatpak توسط توسعه‌دهندگان اصلی Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± تایید شده است." #: src/bz-application.c:1194 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:481 msgid "translator-credits" msgstr "Goudarz Jafari" #: src/bz-application.c:1199 msgctxt "About Dialog Translator Credit" msgid "Ahmed Najmawi" msgstr "Ahmed Najmawi" #: src/bz-application.c:1200 msgctxt "About Dialog Translator Credit" msgid "AtomHare" msgstr "AtomHare" #: src/bz-application.c:1201 msgctxt "About Dialog Translator Credit" msgid "Jill Fiore" msgstr "Jill Fiore" #: src/bz-application.c:1202 msgctxt "About Dialog Translator Credit" msgid "Lucosec" msgstr "Lucosec" #: src/bz-application.c:1203 msgctxt "About Dialog Translator Credit" msgid "Shihfu Juan" msgstr "Shihfu Juan" #: src/bz-application.c:1204 msgctxt "About Dialog Translator Credit" msgid "Vlastimil DÄ›dek" msgstr "Vlastimil DÄ›dek" #: src/bz-application.c:1205 msgctxt "About Dialog Translator Credit" msgid "asen23" msgstr "asen23" #: src/bz-application.c:1206 msgctxt "About Dialog Translator Credit" msgid "renner" msgstr "renner" #: src/bz-application.c:1207 msgctxt "About Dialog Translator Credit" msgid "robotta" msgstr "robotta" #: src/bz-application.c:1223 msgid "Adam Masciola" msgstr "Adam Masciola" #: src/bz-browse-widget.blp:11 src/bz-full-view.blp:11 #: src/bz-installed-page.blp:11 src/bz-window.blp:32 msgid "Empty" msgstr "خالی" #: src/bz-browse-widget.blp:15 msgid "No Curated Applications" msgstr "هنوز هیچ برنامه‌ی پیشنهادی‌ای وجود ندارد" #: src/bz-browse-widget.blp:16 msgid "" "Bazaar was not provided a curated content configuration. Contact your " "operating system's support channels for assistance." msgstr "" "هیچ پیکربندی‌ای برای محتوای انتخاب‌شده به بازار ارائه نشده است. برای Ø¯Ø±ÛŒØ§ÙØª " "Ú©Ù…Ú© با پشتیبانی سیستم‌عامل خود تماس بگیرید." #: src/bz-browse-widget.blp:22 src/bz-flathub-page.blp:11 msgid "Browser" msgstr "مرورگر" #: src/error.c:45 msgid "An Error Occurred" msgstr "یک خطا رخ داد" #: src/error.c:51 msgid "Close" msgstr "بستن" #: src/error.c:52 msgid "Copy and Close" msgstr "رونوشت Ùˆ بستن" #: src/bz-flathub-page.blp:41 msgid "Apps Of The Week" msgstr "برنامه‌های Ù‡ÙØªÙ‡" #: src/bz-flathub-page.blp:85 msgid "Trending" msgstr "محبوب‌ها" #: src/bz-flathub-page.blp:117 msgid "Recently Updated" msgstr "اخیرا به‌روزرسانی‌شده" #: src/bz-flathub-page.blp:149 msgid "Recently Added" msgstr "اخیرا Ø§ÙØ²ÙˆØ¯Ù‡â€ŒØ´Ø¯Ù‡" #: src/bz-flathub-page.blp:181 msgid "Popular" msgstr "Ù¾Ø±Ø·Ø±ÙØ¯Ø§Ø±" #: src/bz-full-view.blp:15 msgid "No Results" msgstr "نتیجه‌ای ÛŒØ§ÙØª نشد" #: src/bz-full-view.blp:16 msgid "Try a different search query" msgstr "از یک عبارت دیگر برای جستجو Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید" #: src/bz-full-view.blp:22 src/bz-window.blp:42 msgid "Content" msgstr "محتوا" #: src/bz-full-view.blp:180 msgid "Run this application" msgstr "اجرای این برنامه" #: src/bz-full-view.blp:204 msgid "Download and install this application" msgstr "بارگیری Ùˆ نصب این برنامه" #: src/bz-full-view.blp:222 src/bz-window.c:987 msgid "Install" msgstr "نصب" #: src/bz-full-view.blp:236 msgid "Uninstall this application" msgstr "این برنامه را حذ٠کن" #: src/bz-full-view.blp:262 msgid "Share this application" msgstr "هم‌رسانی این برنامه" #: src/bz-full-view.blp:274 msgid "" "The number of downloads in the last 30 days. Click to view this " "application's download statistics." msgstr "" "تعداد بارگیری در Û³Û° روز گذشته. برای مشاهده‌ی آمار بارگیری این برنامه کلیک " "کنید." #: src/bz-full-view.blp:316 msgid "Support this developer" msgstr "حمایت از این توسعه‌دهنده" #: src/bz-full-view.blp:329 msgid "Support" msgstr "پشتیبانی" #: src/bz-full-view.blp:387 msgid "Remote repo name" msgstr "نام مخزن راه‌دور" #: src/bz-full-view.blp:400 msgid "Project URL" msgstr "نشانی اینترنتی پروژه" #: src/bz-full-view.blp:412 msgid "Download size" msgstr "اندازه‌ی بارگیری" #: src/bz-full-view.c:214 #, c-format msgid "Released %x" msgstr "منتشر شده در %x" #: src/bz-full-view.c:225 msgid "No URL" msgstr "بدون نشانی اینترنتی" #: src/bz-full-view.c:233 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "این برنامه دارای مجوز FLOSS است، به این معنا Ú©Ù‡ کد منبع آن برای ایمنی قابل " "بررسی است." #: src/bz-full-view.c:234 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "این برنامه دارای مجوز مالکیتی است، به این معنا Ú©Ù‡ کد منبع آن به‌صورت خصوصی " "توسعه ÛŒØ§ÙØªÙ‡ Ùˆ توسط طر٠ثالث مستقل قابل بررسی نیست." #: src/bz-installed-page.blp:15 msgid "No Flatpaks Installed" msgstr "هیچ FlatpakÛŒ نصب نشده است" #: src/bz-installed-page.blp:21 src/bz-window.blp:201 src/bz-window.blp:336 msgid "Installed" msgstr "نصب شده" #: src/bz-installed-page.blp:143 msgid "More actions" msgstr "اقدام‌های بیشتر" #: src/bz-installed-page.blp:187 src/bz-installed-page.blp:198 msgid "Edit Permissions" msgstr "ویرایش مجوزها" #: src/bz-preferences-dialog.blp:9 msgid "Preferences" msgstr "تنظیمات" #: src/bz-preferences-dialog.blp:13 msgid "How the application looks" msgstr "ظاهر برنامه" #: src/bz-preferences-dialog.blp:14 msgid "Appearance" msgstr "ظاهر" #: src/bz-preferences-dialog.blp:17 msgid "Show animated background" msgstr "نمایش پس‌زمینه متحرک" #: src/bz-search-widget.blp:69 msgid "Type to filter" msgstr "برای Ùیلتر کردن تایپ کنید" #: src/bz-search-widget.blp:98 src/bz-search-widget.blp:115 msgid "Search Options" msgstr "گزینه‌های جستجو" #: src/bz-search-widget.blp:119 msgid "Exclude results with proprietary licenses" msgstr "حذ٠نتایج دارای مجوز مالکیتی" #: src/bz-search-widget.blp:124 msgid "Exclude results not originating from Flathub" msgstr "حذ٠نتایجی Ú©Ù‡ از Flathub منشا Ù†Ú¯Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯" #: src/bz-search-widget.blp:139 msgid "Advanced" msgstr "Ù¾ÛŒØ´Ø±ÙØªÙ‡" #: src/bz-search-widget.blp:143 msgid "Match using regular expressions" msgstr "همسان‌سازی با Ø§Ø³ØªÙØ§Ø¯Ù‡ از عبارات باقاعده" #: src/bz-search-widget.blp:148 msgid "Hide filtering and sorting behind a crossfade effect" msgstr "پنهان‌سازی Ùیلتر Ùˆ مرتب‌سازی با اÙکت محوشونده" #: src/bz-search-widget.blp:153 msgid "Debounce input to prevent instant replies" msgstr "Ù…Ú©Ø« ورودی برای جلوگیری از پاسخ Ùوری" #: src/bz-share-dialog.blp:13 msgid "Share" msgstr "هم‌رسانی" #: src/bz-share-dialog.blp:64 msgid "Copy this link" msgstr "رونوشت این پیوند" #: src/bz-share-dialog.blp:71 msgid "Open this link externally" msgstr "این پیوند را در بیرون از این برنامه باز کنید" #: src/bz-stats-dialog.blp:15 msgid "Downloads Over Time" msgstr "بارگیری‌ها در طول زمان" #: src/bz-stats-dialog.blp:31 msgid "Minimize Lower Bound" msgstr "کاهش حد پایین" #: src/bz-stats-dialog.blp:36 msgid "Maximize Upper Bound" msgstr "Ø§ÙØ²Ø§ÛŒØ´ حد بالا" #: src/bz-transaction-manager.c:451 #, c-format msgid "Finished in %.02f seconds" msgstr "اتمام در %.02f ثانیه" #: src/bz-transaction-view.blp:34 msgid "Installing" msgstr "در حال نصب" #: src/bz-transaction-view.blp:63 msgid "Updating" msgstr "در حال به‌روزرسانی" #: src/bz-transaction-view.blp:92 msgid "Removing" msgstr "در حال حذÙ" #: src/bz-transaction.c:268 msgid "Pending" msgstr "در انتظار" #: src/bz-update-dialog.blp:6 msgid "Later" msgstr "بعداً" #: src/bz-update-dialog.blp:7 msgid "Install Now" msgstr "اکنون نصب شود" #: src/bz-update-dialog.blp:10 msgid "Updates Are Available" msgstr "به‌روزرسانی‌ها در دسترس‌اند" #: src/bz-update-dialog.blp:11 msgid "" "The following applications are eligible for updates. Would you like to " "install them?" msgstr "برنامه‌های زیر واجد شرایط به‌روزرسانی هستند. آیا مایل به نصب آن‌ها هستید؟" #: src/bz-update-dialog.c:135 #, c-format msgid "" "%d runtimes and/or addons are eligible for updates. Would you like to " "install them?" msgstr "" "%d محیط اجرایی Ùˆ/یا Ø§ÙØ²ÙˆÙ†Ù‡ برای به‌روزرسانی واجد شرایط هستند. آیا مایل به نصب " "آن‌ها هستید؟" #: src/bz-update-dialog.c:143 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "علاوه بر این، %d محیط اجرایی Ùˆ/یا Ø§ÙØ²ÙˆÙ†Ù‡ به‌روزرسانی خواهند شد." #: src/bz-window.blp:36 msgid "Transactions Will Appear Here" msgstr "تراکنش‌ها اینجا ظاهر خواهند شد" #: src/bz-window.blp:97 msgid "Halt the execution of transactions" msgstr "توق٠اجرای تراکنش‌ها" #: src/bz-window.blp:105 msgid "Clear all finished transactions" msgstr "پاک‌سازی همه‌ی تراکنش‌های Ù¾Ø§ÛŒØ§Ù†â€ŒÛŒØ§ÙØªÙ‡" #: src/bz-window.blp:136 src/bz-window.blp:140 msgid "Offline" msgstr "Ø¢Ùلاین" #: src/bz-window.blp:146 msgid "Loading" msgstr "در حال بارگذاری" #: src/bz-window.blp:170 msgid "Browse" msgstr "مرور" #: src/bz-window.blp:180 msgid "App View" msgstr "نمایش برنامه" #: src/bz-window.blp:191 src/bz-window.blp:315 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:220 msgid "Go Back" msgstr "بازگشت" #: src/bz-window.blp:228 msgid "Refresh" msgstr "تازه‌سازی" #: src/bz-window.blp:237 msgid "Search" msgstr "جست‌وجو" #: src/bz-window.blp:249 msgid "Update" msgstr "به‌روزرسانی" #: src/bz-window.blp:263 msgid "Checking for updates" msgstr "در حال بررسی برای به‌روزرسانی‌ها" #: src/bz-window.blp:279 msgid "View curated applications" msgstr "مشاهده‌ی برنامه‌های منتخب" #: src/bz-window.blp:294 msgid "Curated" msgstr "منتخب" #: src/bz-window.blp:300 msgid "View the latest on Flathub" msgstr "مشاهده‌ی آخرین‌ها در Flathub" #: src/bz-window.blp:321 msgid "View installed applications" msgstr "مشاهده‌ی برنامه‌های نصب‌شده" #: src/bz-window.blp:350 msgid "Main Menu" msgstr "منوی اصلی" #: src/bz-window.blp:361 msgid "Toggle transaction sidebar" msgstr "نمایش یا پنهان کردن نوار جانبی تراکنش‌ها" #: src/bz-window.blp:400 msgid "Up to date!" msgstr "به‌روز است!" #: src/bz-window.blp:425 msgid "_Keyboard Shortcuts" msgstr "_میان‌برهای ØµÙØ­Ù‡â€ŒÚ©Ù„ید" #: src/bz-window.blp:430 msgid "_About Bazaar" msgstr "_درباره‌ی بازار" #: src/bz-window.blp:435 msgid "_Donate to Bazaar â¤ï¸" msgstr "_به بازار اهدا کنید â¤ï¸" #: src/bz-window.c:856 msgid "" "The ability to inspect and install local .flatpak bundle files is coming " "soon! In the meantime, try running\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "on the command line." msgstr "" "قابلیت بررسی Ùˆ نصب پرونده‌های محلی .flatpak به‌زودی ارائه خواهد شد! در این " "ÙØ§ØµÙ„ه، دستور\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" " را در خط ÙØ±Ù…ان امتحان کنید." #: src/bz-window.c:927 msgid "Can't do that right now!" msgstr "ÙØ¹Ù„ا امکان انجام این کار وجود ندارد!" #: src/bz-window.c:940 msgid "Confirm Action" msgstr "تایید عملیات" #: src/bz-window.c:958 #, c-format msgid "" "You are about to remove the following Flatpak:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "Are you sure?" msgstr "" "شما در حال حذ٠Flatpak زیر هستید:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "آیا مطمئن هستید؟" #: src/bz-window.c:966 src/bz-window.c:986 msgid "Cancel" msgstr "لغو" #: src/bz-window.c:967 msgid "Remove" msgstr "حذÙ" #: src/bz-window.c:978 #, c-format msgid "" "You are about to install the following Flatpak:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "Are you sure?" msgstr "" "شما در حال نصب Flatpak زیر هستید:\n" "\n" "<b>%s</b>\n" "<tt>%s</tt>\n" "\n" "آیا مطمئن هستید؟" #: src/bz-window.c:1012 msgid "More details" msgstr "جزئیات بیشتر" #: src/bz-window.c:1138 msgid "Resume the execution of transactions" msgstr "ادامه دادن اجرای تراکنش‌ها" #: src/bz-window.c:1144 msgid "Pause the execution of transactions" msgstr "توق٠اجرای تراکنش‌ها" #: src/gtk/help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "عمومی" #: src/gtk/help-overlay.blp:14 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "باز کردن پنجره جست‌وجو" #: src/gtk/help-overlay.blp:19 msgctxt "shortcut window" msgid "Refresh" msgstr "تازه‌سازی" #: src/gtk/help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "نمایش یا پنهان کردن مدیر تراکنش" #: src/gtk/help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "نمایش میان‌برها" #: src/gtk/help-overlay.blp:34 msgctxt "shortcut window" msgid "Quit" msgstr "خروج" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/fr.po������������������������������������������������������������������0000664�0000000�0000000�00000305033�15240005042�0016727�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# French translations for Bazaar. # Copyright (C) 2025-2026 The Bazaar Contributors # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Atom <29772841+AtomHare@users.noreply.github.com>, 2025. # Léane GRASSER <leane.grasser@proton.me>, 2025. # Irénée THIRION <irenee.thirion@e.email>, 2026. # Mimolet <themimolet@proton.me>, 2025-2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-07-22 17:51+0200\n" "PO-Revision-Date: 2026-07-23 00:53+0200\n" "Last-Translator: Mimolet <themimolet@proton.me>\n" "Language-Team: French <>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Gtranslator 50.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "Logithèque" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "Ajouter, enlever ou mettre à jour les applications flatpak" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "System;PackageManager;Discover;Flatpak;Software;App;Store;Système;Gestionnaire;Paquets;Applis;Logiciel;Magasin;Logithèque;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Nouvelle fenêtre" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Découvrez et installez des applis" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Une logithèque rapide et moderne pour Linux, spécialement conçue pour " "découvrir et installer des applis et des extensions Flatpak, notamment " "celles disponibles sur Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Gérez plusieurs installations en même temps tout en naviguant" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Consultez facilement les autorisations des applications" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Connectez-vous à Flathub pour consulter et gérer vos favoris" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Recherchez des applications directement depuis le Shell GNOME" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:766 msgid "The Bazaar Contributors" msgstr "Les Contributeurs de Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Page d’accueil affichant les applis de Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Page de l’appli Exhibit" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Page Bibliothèque" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Page Recherche" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Page Catégorie" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Utilise un environnement en fin de vie" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Désinstaller" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Installer" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Gérer les extensions" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Aucune extension visible" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Toutes extensions connues de cette appli sont cachés par vos préférences de " "filtrage. Ajustez les pour voir les extensions cachées. " #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Page des extensions" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "Téléchargements/mois" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Utilise un environnement en fin de vie" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "L’environnement d’exécution utilisé par cette extension ne reçoit plus de " "mises à jour ni de correctifs de sécurité.\n" "Son utilisation pourrait devenir risquée." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "Extension pour %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Montrer moins" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Montrer plus" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Statistiques de téléchargement" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Classification" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Violence animée" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Aucune information à propos de la violence animée" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Violence fantastique" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Aucune information concernant la violence fantastique" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Violence réaliste" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Aucune information concernant la violence réaliste" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Violence sanglante" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Aucune information concernant la violence sanglante" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Violence sexuelle" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Aucune information concernant la violence sexuelle" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alcool" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Aucune information concernant les références à l'alcool" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Stupéfiants" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Aucune information concernant les références à des drogues illicites" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabac" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Aucune information concernant les références aux produits du tabac" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nudité" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Aucune information concernant la nudité" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Thèmes sexuels" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "Aucune information concernant les références ou scènes à caractère sexuel" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Vulgarité" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Aucune information concernant la vulgarité" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Humour inapproprié" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Aucune information concernant l'humour inapproprié" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Discrimination" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Aucune information concernant le langage discriminatoire" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Publicité" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Aucune information concernant la publicité" # Fait parti du système d'estimation d'âge et n'est pas une catégorie # (d'où l'utilisation du singuler par rapport au pluriel) #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Jeu d’argent" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Aucune information concernant les jeux d’argent" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Achat" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Aucune information concernant les achats intégrés" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Discussions écrites entre utilisateurs" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "" "Aucune information concernant les fonctionnalités de discussion entre " "utilisateurs" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Discussions vocales entre utilisateurs" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "" "Aucune information concernant les fonctionnalités d'appels ou de messages " "vocaux entre utilisateurs" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Détails des contacts" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Aucune information concernant le partage d’identifiants ou d’adresses e-mail" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Informations personnelles" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Aucune information concernant le partage de données personnelles avec des " "tiers" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Partage de position" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Aucune information concernant le partage de localisation avec d’autres " "utilisateurs" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostitution" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Aucune information concernant les références à la prostitution" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Adultère" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Aucune information concernant les références à l’adultère" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Personnage sexualisés" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Aucune information concernant les personnages sexualisés" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Profanation" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Aucune information concernant les références à la profanation" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Restes humains" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Aucune information concernant l'affichage de restes humains" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Esclavage" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Aucune information concernant les références à l’esclavage" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Ne contient aucune référence à de la drogue" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "" "Ne contient aucune insulte, injure ou d’autres types de langage grossier" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Ne contient pas de publicité ou de transactions monétaires" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Ne contient pas de sexe ou de nudité" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Ne contient pas de fonctionnalité de discussion non modérées" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Ne contient aucune violence" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drogues" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Langage grossier" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Monétisation" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Social" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Violence" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Tout" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s a une limite d’âge inconnue" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s convient à tout le monde" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s convient aux jeunes enfants" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s convient aux enfants" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s convient aux adolescents" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s convient aux adultes" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s convient aux %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Accès au répertoire %s (Système)" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Sous-dossier %s (Dossier Personnel)" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Dossiers du système hôte" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Configuration du système hôte à partir de /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Sous-dossier %s (Bureau)" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Dossier Bureau" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Sous-dossier %s (Documents)" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Dossier Documents" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Sous-dossier %s (Musique)" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Dossier Musique" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Sous-dossier %s (Images)" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Dossier Images" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Sous-dossier %s (Public)" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Dossier Public" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Sous-dossier %s (Vidéos)" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Dossier Vidéos" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Sous-dossier %s (Modèles)" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Dossier Modèles" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Sous-dossier %s (cache utilisateur)" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Dossier du cache utilisateur" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Sous-dossier %s (configuration utilisateur)" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Dossier de configuration utilisateur" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Sous-dossier %s (données utilisateur)" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Dossier des données utilisateur" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Sous-dossier %s (environnement d’exécution utilisateur)" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Dossier d’envionnement d’exécution utilisateur" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Accès à %s dans le système de fichiers" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Chemin d’accès au système de fichiers inconnu" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Taille du téléchargement" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Taille après installation" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "Volume à télécharger depuis Internet" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Taille sur le disque" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Ouvrir le dossier des données utilisateur" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "Vos données" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Caches, paramètres et autres données" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Cache" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "Données mises en cache temporairement" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "Effacer le cache" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Taille de l'environnement d’exécution" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Taille du téléchargement de l'environnement d’exécution" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "Inconnu" #: src/bz-app-size-dialog.c:207 msgid "App Size" msgstr "Taille de l'appli" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Vérifié" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:135 msgid "Installed" msgstr "Installée" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:769 msgid "translator-credits" msgstr "" "Atom <29772841+AtomHare@users.noreply.github.com>, 2025\n" "Léane GRASSER <leane.grasser@proton.me>, 2025\n" "Mimolet <theMimolet@proton.me>, 2025-2026\n" "Irénée THIRION <irenee.thirion@e.email>, 2026" #: src/bz-application.c:779 msgid "Special Thanks" msgstr "Remerciements particuliers à" #: src/bz-application.c:837 msgid "Logged Out Successfully!" msgstr "Déconnexion réussie !" #: src/bz-application.c:1027 msgid "Ubuntu Troubles!" msgstr "À l'attention des utilisateurs d'Ubuntu" #: src/bz-application.c:1030 msgid "" "The more recent versions of Ubuntu have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version of " "Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Les versions récentes d'Ubuntu ont mis du désordre dans les règles de " "sécurité par défaut, ce qui <b>rend impossible l'installation " "d'applications</b> depuis la version Flatpak de Bazaar. Pour le moment, " "veuillez utiliser le paquet apt à la place – installez-le avec \n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "Vous pourrez ensuite enlever la version Flatpak avec\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1036 msgid "Continue Anyway" msgstr "Continuer quand même" #: src/bz-application.c:1052 msgid "Performing setup…" msgstr "Configuration en cours…" #: src/bz-application.c:1144 msgid "Set Up System Flathub?" msgstr "Configurer Flathub sur le système ? " #: src/bz-application.c:1147 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Le dépôt d'applications Flathub n’a pas été configuré sur ce système. Bazaar " "a besoin que Flathub soit configuré pour parcourir et installer des " "applications.\n" "\n" "Vous pouvez toujours utiliser Bazaar pour parcourir et désinstaller des " "applis déjà installées." #: src/bz-application.c:1154 msgid "Set Up Flathub?" msgstr "Configurer Flathub ?" #: src/bz-application.c:1157 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub n’a pas été configuré sur ce système. Vous ne pourrez pas parcourir " "et installer des applications dans Bazaar s’il est indisponible.\n" "\n" "Vous pouvez toujours utiliser Bazaar pour parcourir et désinstaller des " "applis déjà installées." #: src/bz-application.c:1163 msgid "Later" msgstr "Plus tard" #: src/bz-application.c:1164 msgid "Set Up Flathub" msgstr "Configurer Flathub" #: src/bz-application.c:1697 msgid "A backend error occurred" msgstr "Une erreur de backend est survenue" #: src/bz-application.c:1905 src/bz-application.c:4152 msgid "Refreshing…" msgstr "Actualisation…" #: src/bz-application.c:2069 src/bz-application.c:4150 #, c-format msgid "Loading %d apps…" msgstr "Chargement de %d applis…" #: src/bz-application.c:2122 src/bz-application.c:2196 msgid "Failed to open file" msgstr "Échec de l’ouverture du fichier" #: src/bz-application.c:2210 msgid "Failed to load metainfo" msgstr "Échec du chargement des métainfos" #: src/bz-application.c:2304 msgid "An initialization error occurred" msgstr "Une erreur d'initialisation s'est produite" #: src/bz-application.c:2703 msgid "Checking for updates…" msgstr "Recherche de mises à jour…" #: src/bz-application.c:2759 msgid "Failed to check for updates" msgstr "Échec de la vérification des mises à jour" #: src/bz-application.c:3925 msgid "Malformed Link" msgstr "Lien corrigé" #: src/bz-application.c:3926 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Le lien utilisé pour ouvrir cette application a une majuscule incorrecte et " "a été corrigé par Bazaar.\n" "\n" "Il s'agit très probablement de KRunner qui envoie des identifiants " "d'application incorrects." #: src/bz-application.c:3934 msgid "Could not find app" msgstr "Impossible de trouver l'application" #: src/bz-application.c:4154 msgid "Writing to cache…" msgstr "Écriture dans le cache…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Tout afficher" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Toutes les applis « %s »" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d applications" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Échec du chargement de l'article" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Installation de paquet" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "" "Des dépendances additionnelles pourraient nécessiter de l'espace disque " "supplémentaire" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Installer cette application pourrait nécessiter l'ajout d'une nouvelle " "source de logiciels.\n" "D'autres applis de cette source apparaîtront alors dans Bazaar.\n" "\n" "N'ajoutez cette source que si vous lui faites confiance." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "Application installée avec succès!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Ouvrir" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Voir les détails" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Déjà installée" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Échec de l'installation" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Taille d'installation inconnue" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Environ %s à installer" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Aucune autorisation spéciale" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:29 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Vide" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "Aucune sélection" #: src/bz-curated-view.blp:30 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Votre système ne possède pas de sélection d'applications. Vous pouvez " "toujours en chercher dans la logithèque" #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "Parcourir Flathub" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "Hors-ligne" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Navigateur" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Non-vérifié" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Informations sur le développeur non disponibles." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "La propriété de l'identifiant %s n’a pas été vérifiée et il pourrait s’agir " "d’un paquet géré par la communauté." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "La propriété de l'identifiant %s a été vérifiée par l’équipe Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "La propriété de l'identifiant %1$s a été vérifiée par <b>%2$s</b> sur " "<b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "La propriété de l'identifiant %1$s a été vérifiée en utilisant %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "La propriété de l'identifiant %s a été vérifiée." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Notes de version complètes" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "Bazaar existe grâce à vous !" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "J'adore travailler sur Bazaar, mais je ne peux pas y arriver seule. Vous " "pouvez m'aider à continuer le projet en faisant un don sur Ko-Fi." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Faire un don à Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Quoi de neuf en %s ?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Publié le %-e %B %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Choisissez une installation" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Plusieurs versions de cette application sont installées. Avec quelle version " "souhaitez-vous poursuivre ?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Annuler" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Pour cet utilisateur seulement" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "cet utilisateur" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "tous les utilisateurs" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:98 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Détails" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Copier" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Copié !" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Nombre de favoris" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Échec de la mise à jour des favoris" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Connectez-vous avec Flathub pour gérer vos favoris" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Se connecter" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:348 msgid "Favorites" msgstr "Favoris" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Tout installer" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:17 msgid "Loading" msgstr "Chargement" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Pas de favoris" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Les applications que vous marquerez comme favorites apparaîtront ici" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Soutenez cette application" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Retirer des favoris" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Échec de la suppression du favori" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Précédent" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Suivant" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Montage" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mixage" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Musique" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Lecteurs" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Enregistreurs" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Séquenceurs" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Accordeurs" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Émulateurs" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Action" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Aventure" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arcade" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Blocs" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Plateau" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Jeux de cartes" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Jeux pour enfants" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Logique" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Jeux de rôle" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Jeux de tir" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulation" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Sports" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Jeux de stratégie" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Navigateurs" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Messageries" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Emails" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Partage de fichiers" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Audio & Vidéo" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Média" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Plus d’applis audio & vidéo" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Outils de Développement" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Coder" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Plus d’outils de développement" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Éducation" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Apprendre" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Plus d’applis éducatives" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Jeux vidéos" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Jouer" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Plus de jeux" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Graphisme & Photographie" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Créer" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Plus d’applis de graphisme et photographie" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Réseau" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Plus d’applis réseau" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Productivité" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Travailler" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Plus d’applis de productivité" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Sciences" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Plus d’applis scientifiques" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Système" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Plus d’applis système" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Utilitaires" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "Outils" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Plus d’utilitaires" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Tendances" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Plus de tendances" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "Populaires" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Plus d’applis populaires" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Ajoutées récemment" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Nouveautés" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Plus de nouveautés" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Mises à jour récemment" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Mises à jour" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Plus d’applis mises à jour" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Mobile" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Plus d’applis mobiles" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Plus d’applis Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Plus d’applis KDE" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Jeux" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "Plus de jeux" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "Émulateurs" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Plus d'émulateurs" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "Lanceurs" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Plus de lanceurs de jeux" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Outils de jeu" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Plus d'outils de jeu" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub n’a pas été ajouté" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "Le dépôt Flathub n’a été trouvé dans aucune de vos installations Flatpak" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub est indisponible" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Connexion à Flathub impossible" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Vous pouvez toujours gérer et cherchez des applis." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Rechercher des applis" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Se reconnecter" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Appli du jour" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "Sur tous vos écrans" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "Applis pour vos téléphones et tablettes Linux" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "Plus d’applis mobiles" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "Nous + jeux = ♥" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "Jeux et applis pour lancer vos titres préférés" #: src/bz-full-view.blp:34 src/bz-library-page.blp:40 #: src/bz-library-page.blp:44 msgid "No Results" msgstr "Aucun résultat" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Essayez une autre recherche" #: src/bz-full-view.blp:47 msgid "Content" msgstr "Contenu" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Ceci est un aperçu local, quelques détails pourraient être " "différents du résultat publié" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "Aperçu dans la logithèque" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "_Soutenir" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "L’environnement d’exécution utilisé par cette application ne reçoit plus de " "mises à jour ni de correctifs de sécurité.\n" "Son utilisation pourrait devenir risquée." #: src/bz-full-view.blp:539 msgid "Trash Data" msgstr "Supprimer les données" #: src/bz-full-view.blp:602 msgid "Add-ons" msgstr "Extensions" #: src/bz-full-view.blp:637 msgid "More Add-Ons" msgstr "Plus d'extensions" #: src/bz-full-view.blp:648 msgid "Links" msgstr "Liens" #: src/bz-full-view.blp:679 msgid "Similar Apps" msgstr "Applications similaires" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Aucune URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Cette appli a une licence FLOSS, la fiabilité de son code source peut donc " "être vérifiée." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Cette appli a une licence propriétaire, son code source est donc privé et " "n'est pas vérifiable par un tiers indépendant." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Plus d’applis" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Plus d’applis par %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "D’autres applis de ce développeur" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "D’autres applis par %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s n’est pas installé, mais a toujours <b>%s</b> de données présentes." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "D’autres applis" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d application" msgstr[1] "%d applications" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:141 msgid "Failed to Remove User Data" msgstr "Échec de la suppression des données utilisateurs" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Support matériel" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Prise en charge des claviers" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Requiert un clavier" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Recommande l’utilisation d’un clavier" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Prend en charge les claviers" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Prise en charge des claviers inconnue" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Prise en charge des souris" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Nécessite une souris ou un pointeur" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Recommande l’utilisation d’une souris ou d’un pointeur" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Prend en charge les souris et pointeurs" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Prise en charge des souris et pointeurs inconnue" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Prise en charge des écrans tactiles" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Requiert un écran tactile" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Recommande l’utilisation d’un écran tactile" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Prend en charge les écrans tactiles" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Prise en charge des écrans tactiles inconnue" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Prise en charge des appareils mobiles" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Fonctionne sur les appareils mobiles" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Peut ne pas fonctionner correctement sur les appareils mobiles" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Prise en charge des ordinateurs" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Adapté aux grands écrans" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s fonctionne mieux sur certains appareils" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s fonctionne sur la plupart des appareils" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Menu de l'inspecteur" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Ouvrir" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Désinstaller l’application" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Désinstaller" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Mettre à jour" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Désinstaller" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Installer %s depuis %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Installer %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Annuler" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Annulation" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Bouton Faire un don" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "Rechercher des applis installées" #: src/bz-library-page.blp:33 msgid "No Apps Found" msgstr "Aucune appli trouvée" #: src/bz-library-page.blp:52 msgid "Search Store Instead" msgstr "Rechercher plutôt dans la logithèque" # "Bibliothèque" est trop long sous un format "mobile" #. Translators: . #: src/bz-library-page.blp:62 src/bz-window.blp:114 msgid "Library" msgstr "Bibliothèque" #: src/bz-library-page.blp:91 msgid "Pending Updates" msgstr "Mises à jour en attente" #: src/bz-library-page.blp:118 msgid "Downloads" msgstr "Téléchargements" #: src/bz-library-page.blp:161 msgid "Recently Uninstalled" msgstr "Désinstallées récemment" #: src/bz-library-page.blp:212 msgid "Clear Finished Tasks" msgstr "Effacer les tâches effectuées" #: src/bz-library-page.blp:239 msgid "Sort Options" msgstr "Options de tri" #: src/bz-library-page.blp:298 msgid "Sort By" msgstr "Trier par" #: src/bz-library-page.blp:312 msgid "Name" msgstr "Nom" #: src/bz-library-page.blp:318 msgid "Size" msgstr "Taille" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Aucune application installée ne correspond à « %s »" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u mise à jour disponible" msgstr[1] "%u mises à jour disponibles" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u appli installée" msgstr[1] "%u applis installées" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Aucune application trouvée" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Une application trouvée" msgstr[1] "%u applications trouvées" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "S'impliquer" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "En savoir plus" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Licence inconnue" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Créée par la communauté" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:288 msgid "Proprietary" msgstr "Propriétaire" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:290 msgid "Special License" msgstr "Licence spéciale" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Cette appli est un projet open source développé par une communauté " "internationale.\n" "\n" "Vous pouvez contribuer à son amélioration." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "La licence de cette appli est inconnue" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Cette appli est un projet open source développé par une communauté " "internationale et publié sous la licence %s.\n" "\n" "Vous pouvez contribuer à son amélioration." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Cette appli n'est pas un projet open source, donc seuls ses développeurs " "connaissent son fonctionnement. Elle est susceptible de comporter des " "failles de sécurité difficiles à détecter et peut être modifiée sans aucun " "contrôle préalable.\n" "\n" "Vous ne pourrez peut-être pas contribuer à cette application." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Cette appli est développée sous la licence spéciale %s.\n" "\n" "Vous ne pourrez peut-être pas contribuer à cette application." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Licence" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Se connecter à Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Une erreur s’est produite" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "" "Connectez-vous pour synchroniser vos applications favorites d'un appareil à " "l'autre" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Terminer" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Bonjour, %s !" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "Ajouter une icône à l'aperçu des métainfos ?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to " "select one manually?" msgstr "" "Les fichiers métainfo n'incluent pas les icônes des applis directement. " "Souhaitez-vous en sélectionner une manuellement ?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "Passer" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Sélectionner une icône" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Fichiers image" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Préférences" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "La connexion réseau est limitée — l’actualisation automatique de la " "logithèque est suspendue" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Actualiser manuellement" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Mise à jour des applications" #: src/bz-preferences-dialog.blp:46 msgid "" "Checking for and downloading app updates uses data and power. Automatic app " "update features are therefore paused when on metered network connections and " "when power saver is on." msgstr "" "Vérifier et télécharger les mises à jour des applications utilise du réseau " "et de l'énergie. Les mises à jour automatique des applications sont donc " "mises en pause si vous utilisez une connexion limitée et si votre appareil " "est en économie d'énergie." #: src/bz-preferences-dialog.blp:52 msgid "_Automatic" msgstr "_Automatique" #: src/bz-preferences-dialog.blp:53 msgid "Automatically check for and download app updates" msgstr "" "Les mises à jour des applications seront vérifiées et téléchargées " "automatiquement" #: src/bz-preferences-dialog.blp:62 msgid "_Manual" msgstr "_Manuelle" #: src/bz-preferences-dialog.blp:63 msgid "Checking for and downloading app updates must be done manually" msgstr "" "Les mises à jour des applications devront être vérifiées et téléchargées " "manuellement" #: src/bz-preferences-dialog.blp:78 msgid "Automatic Update _Notifications" msgstr "_Notifications de mise à jour automatique" #: src/bz-preferences-dialog.blp:79 msgid "Notify when updates have been automatically installed" msgstr "Notifie lorsque les mises à jour sont installées automatiquement" #: src/bz-preferences-dialog.blp:84 msgid "Content Filters" msgstr "Filtres de contenu" #: src/bz-preferences-dialog.blp:87 msgid "_Free Software Only" msgstr "N'afficher que les logiciels _libres" #: src/bz-preferences-dialog.blp:88 msgid "Hide proprietary apps when browsing and searching" msgstr "Masque les applis propriétaires pendant la navigation et la recherche" #: src/bz-preferences-dialog.blp:93 msgid "F_lathub Results Only" msgstr "N'afficher que les résultats issus de _Flathub" #: src/bz-preferences-dialog.blp:94 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Restreint les résultats des recherches aux applis disponibles sur Flathub" #: src/bz-preferences-dialog.blp:99 msgid "_Verified Results Only" msgstr "N'afficher que les développeurs _vérifiés" #: src/bz-preferences-dialog.blp:100 msgid "Hide results that are not verified on Flathub" msgstr "Masque les résultats non vérifiés sur Flathub" #: src/bz-preferences-dialog.blp:105 msgid "Hide _End-of-Life Apps" msgstr "Masquer les applications _en fin de vie" #: src/bz-preferences-dialog.blp:106 msgid "Hide apps which are no longer supported by their developers" msgstr "" "Masque les applis qui ne sont plus prises en charge par leurs développeurs" #: src/bz-preferences-dialog.blp:112 msgid "Progress Bar Theme" msgstr "Thème de la barre de progression" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Couleur d’accentuation" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Couleurs de la fierté" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Couleurs de la fierté lesbienne" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Couleurs de la fierté homosexuelle" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Couleurs de la fierté transgenre" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Couleurs de la fierté non binaire" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Couleurs de la fierté bisexuelle" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Couleurs de la fierté asexuelle" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Couleurs de la fierté pansexuelle" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Couleurs de la fierté aromantique" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Couleurs de la fierté fluide" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Couleurs de la fierté polysexuelle" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Couleurs de la fierté omnisexuelle" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Couleurs de la fierté aroace" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Couleurs du drapeau agenre" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Couleurs du drapeau genderqueer" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Couleurs du drapeau intersexe" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Couleurs du drapeau demi-genre" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Couleurs du drapeau biromantique" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Couleurs de la fierté des personnes en situation de handicap" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Couleurs de la fierté femboy" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Couleurs du drapeau neutrois" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Historique des versions" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Historique des versions" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Aujourd'hui" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Hier" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Il y a %d jour" msgstr[1] "Il y a %d jours" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Il y a %d semaine" msgstr[1] "Il y a %d semaines" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Il y a %d mois" msgstr[1] "Il y a %d mois" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Il y a %d an" msgstr[1] "Il y a %d ans" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Version %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Aucun détail à propos de cette version" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Obtenir plus d’informations" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Désinstaller" # Dans le contexte d'App Store - "Get" serait plutôt traduit en "Télécharger" ou comme ici en "Installer" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "/" #: src/bz-safety-dialog.blp:31 src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Autorisations arbitraires" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Cette appli possède des autorisations qui lui permettent indirectement de " "s'octroyer <b>n'importe quelle autorisation qu'elle souhaite</b>, " "contournant le bac à sable Flatpak.\n" "\n" "Par conséquent, elle peut agir comme une application normale, non-isolée qui " "peut accéder tous vos fichiers et se connecter à Internet, par exemple.\n" "\n" "Voir les autres autorisations peut donner une meilleure idée de ce que " "l'appli pourrait faire. " #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "Voir les autres autorisations" #: src/bz-safety-dialog.blp:79 src/context-tile-callbacks.c:400 msgid "Safe" msgstr "Fiable" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "Identifiant" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "Plateforme logicielle (SDK)" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Cette application utilise une version obsolète de la plateforme logicielle " "(SDK) et peut contenir des bogues ou des failles de sécurité qui ne seront " "pas corrigés." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "Sécurité" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s est fiable" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s n’a pas d’autorisations à risque" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s est probablement fiable" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s n'est peut-être pas fiable" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s n’est pas fiable" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Retour" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Capture d’écran précédente" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Capture d’écran suivante" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Copier l’image" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Réinitialiser l’affichage" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Zoom arrière" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Zoom avant" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Carrousel de captures d’écran" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Aucune capture d’écran" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Ouvrir la visionneuse de captures d’écran" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Captures d’écran %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Captures d’écran %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "Effacer la recherche" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Filtres" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Vérifiées" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Libres" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "À _jour" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Affiche/Masque les applications en fin de vie" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Disponibles sur mobile" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Catégories" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "Rechercher applis, jeux et logiciels" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Filtres de recherche" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Parcourir les catégories" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Catégories non disponibles" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Cherchez des applis en utilisant la barre de recherche ci-dessus." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Aucune application trouvée" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Aucun résultat pour « %s » dans la logithèque" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Vidéo" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Bureautique" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Calendrier" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Messagerie" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Dessin" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Émulateur" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Page Flathub" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Site web du projet" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Signaler un problème" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "FAQ" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Aide" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Faire un don" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Contribuer aux traductions" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Contacter" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Code Source" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Contribuer" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifeste" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Copier le lien" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Chronologie" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Installations :" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Monde" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Depuis le 15 Avril 2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2f Mio installations en tout" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2f mil. installations en tout" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d téléchargements en tout" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Aucun résultat trouvé" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "La recherche a échoué" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Conserver les données utilisateur" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Permet la restauration des paramètres et du contenu" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Supprimer les données" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "" "Supprime définitivement les données de l’appli pour libérer de l’espace" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Installer %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Sélectionnez la version à installer.\n" "Elle pourrait installer des composants partagés supplémentaire" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Pourrait installer des composants partagés supplémentaires" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Annuler" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Installer" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Désinstaller %s ?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Sélectionnez la version à désinstaller." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Il ne sera plus possible d’utiliser %s après sa désinstallation." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "« %s » présente un risque élevé" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Cette application dispose d’un accès complet à votre système, y compris à " "tous <b>vos fichiers, à l’historique de votre navigateur, à vos mots de " "passe enregistrés</b>, etc. Elle a également accès à Internet, ce qui " "signifie qu’elle pourrait envoyer vos données à des tiers.\n" "\n" "Comme cette application est propriétaire, il est impossible de vérifier ce " "qu’elle fait avec ces autorisations." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Cette application utilise l’ancien système de fenêtrage X11, qui lui permet " "d’<b>enregistrer toutes les frappes au clavier, de faire des captures " "d’écran et de surveiller d’autres applications</b>. Elle a également accès à " "Internet, ce qui signifie qu’elle pourrait envoyer vos données à des tiers.\n" "\n" "Comme cette application est propriétaire, il est impossible de vérifier ce " "qu’elle fait avec ces autorisations." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Installer quand même" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Échec du chargement du dialogue de la transaction" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Toutes les applis sont déjà installées" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "D’_accord" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Installer %u appli ?" msgstr[1] "Installer %u applis ?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Les applications suivantes seront installées. Des composants partagés " "supplémentaires pourraient également être installés" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d extensions seront installées." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Des extensions seront aussi installées." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Tout installer" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Terminé en %.02f secondes" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Extension d'application" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Environnement d’exécution" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "En attente" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Tâche terminée" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Tâche annulée" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Erreur" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Annuler la tâche" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Voir les détails" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Afficher les informations sur l'erreur" # Pluriel car on parle d'octets #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s libérés" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Erreur de transaction" #: src/bz-transaction.c:344 msgid "Pending" msgstr "En attente" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "Tout _mettre à jour" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u mise à jour d'environnement d’exécution " msgstr[1] "%u mises à jour d'environnement d’exécution " #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Nettoyer les données orphelines" #: src/bz-user-data-page.blp:34 msgid "No User Data Found" msgstr "Pas de données orphelines trouvées" #: src/bz-user-data-page.blp:40 msgid "User Data" msgstr "Données utilisateur" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Ouvrir le dossier des données utilisateur" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Mettre les données utilisateurs à la corbeille" #: src/bz-user-data-tile.c:147 #, c-format msgid "Trashed User Data for %s" msgstr "Les données utilisateur de %s ont été mise à la corbeille" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Actualisation" #: src/bz-window.blp:90 msgid "Curated" msgstr "Sélection" #: src/bz-window.blp:102 msgid "Explore" msgstr "Explorer" #: src/bz-window.blp:129 msgid "Search" msgstr "Recherche" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Menu principal" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Bazaar a été mis à jour !" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Voir les nouveautés" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Votre appareil est connecté à Internet, mais vous consultez une version hors-" "ligne de la logithèque" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "Connexion réseau limitée — l’actualisation automatique est désactivée" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "Faire un _don à Bazaar" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Actualiser" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "Se _connecter avec Flathub" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_Gérer les données utilisateurs orphelines" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Préférences" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Raccourcis clavier" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "À propos de _Bazaar" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_Quitter Bazaar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Se déconnecter" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Échec du lancement de l'application" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Vous ne pouvez supprimer Bazaar depuis Bazaar !" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Impossible de faire ceci pour le moment !" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Installation" msgstr[1] "Installations" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*f Mio." #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*f mil." #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d téléchargements au cours du dernier mois" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s d'environnement" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "À télécharger" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Informations sur la taille non disponibles" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Taille du téléchargement de %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Tout public" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Informations sur la classification d’âge non disponibles" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Convient à tout public" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Approprié dès %d ans et plus" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "Inconnue" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Logiciel libre sous licence %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Logiciel libre" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Logiciel propriétaire" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Licence spéciale : %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Logiciel libre" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "Adaptative" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "PC uniquement" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "Fonctionne sur ordinateur, tablette et téléphone" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Peut ne pas fonctionner sur les appareils mobiles" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Risque faible" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Risque moyen" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Risque élevé" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Autorisations inconnues" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Des autorisations sont manquantes pour cette application." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Aucune autorisation" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "L’application est entièrement sandboxée" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Accès au réseau" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Peut accéder à Internet" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Aucun accès au réseau" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Ne peut pas accéder à Internet" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Accès à l’appareil de l’utilisateur" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "" "Peut accéder à des périphériques tels que des webcams ou des manettes de jeu" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Aucun accès aux périphériques" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" "Ne peut pas accéder aux périphériques système qui nécessitent des " "autorisations élevées" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Accès aux périphériques d’entrée" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Peut accéder aux périphériques d’entrée" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Accès au microphone et à la lecture audio" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "A accès aux microphones connectés et peut lire des fichiers audio sans " "demander l’autorisation" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Accès aux périphériques du système" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" "Peut accéder aux périphériques du système qui nécessitent des autorisations " "élevées" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Accès au contenu de l’écran" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Peut accéder au contenu de l’écran ou d’autres fenêtres" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Système de fenêtrage ancien" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Utilise toujours un ancien système de fenêtrage (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Peut obtenir des autorisations arbitraires" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Paramètres utilisateur" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Peut accéder aux paramètres utilisateur et les modifier" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Accès complet en lecture/écriture au système de fichiers" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Peut lire et écrire tout le contenu du système de fichiers" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Accès en lecture/écriture au dossier personnel" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Peut lire et écrire tout le contenu de votre dossier personnel" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Accès complet en lecture au système de fichiers" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Peut lire tout le contenu du système de fichiers" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Accès en lecture au dossier personnel" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Peut lire tout le contenu de votre dossier personnel" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Accès en lecture/écriture au dossier Téléchargements" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Peut lire et écrire tout le contenu de votre dossier Téléchargements" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Accès en lecture au dossier Téléchargements" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Peut lire tout le contenu de votre dossier Téléchargements" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Peut lire et écrire tout le contenu du répertoire" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Peut lire tout le contenu du répertoire" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Aucun accès au système de fichiers" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Ne peut pas accéder au système de fichiers" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Utilise les services système" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Peut demander des données à des services système hors portail" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Utilise les services de la session utilisateur" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Peut demander des données à des services de session hors portail" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Aucun accès aux services" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "" "Ne peut ni accéder à des services de session, ni à des services système hors " "portail" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Développeur vérifié" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "L’identité du développeur de cette application a été vérifiée" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Code propriétaire" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Le code source n’est pas public, il ne peut donc pas être vérifié de manière " "indépendante et pourrait ne pas être sécurisé" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Code vérifiable" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Le code source est public et peut être vérifié de manière indépendante, ce " "qui rend l’application plus sûre" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Utilise le service système %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Utilise le service de session %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Utilise le service %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Peut détecter ce service hors portail" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Peut communiquer à ce service hors portail" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Peut posséder ce service hors portail" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Intégration au menu global" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Peut afficher ses menus dans une barre de menus globale" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Intégration aux paramètres KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Peut détecter lorsque les paramètres du bureau KDE changent" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Paramètres généraux KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "" "Peut lire les préférences du bureau KDE telles que les polices et les " "couleurs" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Service de stockage secret" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Peut stocker et récupérer ses propres mots de passe à l’aide du trousseau " "système" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Service de notifications sur le bureau" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Peut envoyer des notifications sur le bureau" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Intégration dans la barre d’état système" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Peut afficher une icône dans la barre d’état système" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Intégration de KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Peut interagir avec les appareils connectés avec KDE Connect" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigation" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Ouvrir la page Explorer" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Ouvrir la page Bibliothèque" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Ouvrir la page Recherche" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Sources" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Synchroniser les sources" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Général" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Ouvrir les préférences" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Afficher les raccourcis" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Fermer la fenêtre" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Quitter Bazaar" #: src/update-worker.c:358 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "%u application mise à jour" msgstr[1] "%u applications mises à jour" #: src/update-worker.c:361 #, c-format msgid "%s has been updated." msgstr "%s a été mis à jour." #: src/update-worker.c:364 #, c-format msgid "%s and %s have been updated." msgstr "%s et %s ont été mis à jour." #: src/update-worker.c:368 #, c-format msgid "Includes %s, %s and %s." msgstr "Inclus %s, %s et %s." #~ msgid "Select Metainfo File" #~ msgstr "Sélectionner un fichier métainfo" #~ msgid "Metainfo Files" #~ msgstr "Fichiers métainfo" #~ msgid "Preview" #~ msgstr "Aperçu" #~ msgid "Screenshots" #~ msgstr "Captures d’écran" #~ msgid "Free" #~ msgstr "Libre" #~ msgid "Flathub returned an error" #~ msgstr "Flathub a renvoyé une erreur" #~ msgid "Retry Flathub Connection" #~ msgstr "Réessayer de se connecter à Flathub" #~ msgid "Tags:" #~ msgstr "Étiquettes :" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "" #~ "Connectez votre compte Flathub à Bazaar pour gérer vos applications " #~ "favorites." #~ msgid "Delay Search Results" #~ msgstr "Retarder l’affichage des résultats de recherche" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "Améliore la performance des résultats en rajoutant un anti-rebond" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "Choisissez un thème pour la barre de progression !" #~ msgid "Vertical Stripes" #~ msgstr "Motifs verticaux" #~ msgid "Display flag colors from left to right" #~ msgstr "Affiche les couleurs des drapeaux de gauche à droite" #~ msgid "Open Link" #~ msgstr "Ouvrir le lien" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "Applis étiquetées « %s »" #~ msgid "Refresh completed!" #~ msgstr "Actualisation terminée !" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "Actualiser" #~ msgid "User Data Size" #~ msgstr "Taille des données utilisateur" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgctxt "As in, \"100 Installs\"" #~ msgid "Installs" #~ msgstr "installations" #~ msgid "Open App Library" #~ msgstr "Ouvrir la bibliothèque" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "L’installation de lots .flatpak n’est pas encore prise en charge" #~ msgid "Steam" #~ msgstr "Steam" #~ msgid "Minecraft" #~ msgstr "Minecraft" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/ga.po������������������������������������������������������������������0000664�0000000�0000000�00000276665�15240005042�0016731�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Irish translations for bazaar package. # Copyright (C) 2026 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2026. # # Aindriú Mac Giolla Eoin <aindriu80@yahoo.com>, 2026. msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-05-24 13:42+0100\n" "PO-Revision-Date: 2026-05-24 13:17+0000\n" "Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@yahoo.com>\n" "Language-Team: Irish <http://weblate.amgelocalnet.duckdns.org/projects/" "bazaar-translations/bazaar/ga/>\n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n" "X-Generator: Weblate 2026.5\n" #: data/io.github.kolunmi.Bazaar.desktop.in:3 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:45 #: src/bz-window.blp:199 src/bz-window.c:373 src/bz-window.c:374 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "" "Bogearraí flatpak a chur leis, a bhaint nó a nuashonrú ar an ríomhaire seo" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Córas;Bainisteoir Pacáistí;Faigh Amach;Flatpak;Bogearraí;Stór;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Fuinneog Nua" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and manage applications" msgstr "Aimsigh agus bainistigh feidhmchláir" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and addons, particularly from Flathub." msgstr "" "Siopa aipeanna gasta agus nua-aimseartha do Linux le fócas ar aipeanna agus " "breiseáin Flatpak a aimsiú agus a shuiteáil, go háirithe ó Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Cuir ilshuiteálacha i scuaine agus lean ort ag brabhsáil" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Féach go héasca ar cheadanna aipeanna" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "" "Sínigh isteach chuig Flathub chun do rogha pearsanta a fheiceáil agus a " "bhainistiú" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Cuardaigh aipeanna go díreach ó GNOME Shell" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:762 msgid "The Bazaar Contributors" msgstr "Rannpháirtithe an Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "An leathanach baile a thaispeánann aipeanna Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Leathanach aip taispeántais" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Leathanach na leabharlainne" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Leathanach cuardaigh" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Leathanach catagóire" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:141 msgid "Stopped Receiving Updates" msgstr "Stopadh ag fáil nuashonruithe" #: src/bz-addon-tile.c:167 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Díshuiteáil" #: src/bz-addon-tile.c:169 src/bz-bundle-install-dialog.blp:126 #: src/bz-favorites-tile.c:157 src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Suiteáil" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-full-view.blp:583 #: src/bz-installed-tile.blp:92 msgid "Manage Add-Ons" msgstr "Bainistigh Breiseáin" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Gan Breiseáin le Feiceáil" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Tá do chuid roghanna scagaire reatha ag cur breiseáin aitheanta i bhfolach. " "Bain triail as iad a choigeartú." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Leathanach Breiseáin" #: src/bz-addons-dialog.blp:202 src/bz-full-view.blp:381 msgid "Downloads/Month" msgstr "Ãoslódálacha/Mí" #: src/bz-addons-dialog.blp:229 src/bz-full-view.blp:417 msgid "Stopped Receiving Core Updates" msgstr "Stopadh ag fáil nuashonruithe lárnacha" #: src/bz-addons-dialog.blp:243 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Úsáideann an breiseán seo am rith nach bhfaigheann nuashonruithe ná " "socruithe slándála a thuilleadh. D’fhéadfadh sé a bheith neamhshábháilte le " "húsáid." #: src/bz-addons-dialog.c:333 #, c-format msgid "Add-on for %s" msgstr "Breiseán do %s" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:600 msgid "Show Less" msgstr "Taispeáin Níos Lú" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:600 msgid "Show More" msgstr "Taispeáin Tuilleadh" #: src/bz-addons-dialog.c:397 msgid "Download Stats" msgstr "Staitisticí Ãoslódála" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Rátáil Aois" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Foréigean Cartúin" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Gan aon eolas maidir le foréigean cartúin" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Foréigean Fantaisíochta" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Gan aon eolas maidir le foréigean fantaisíochta" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Foréigean Réalaíoch" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Gan aon fhaisnéis maidir le foréigean réalaíoch" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Foréigean a léiríonn fuildhoirteadh" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Gan aon eolas faoi fhuildhoirteadh" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Foréigean Gnéasach" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Gan aon eolas maidir le foréigean gnéasach" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alcól" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Gan aon fhaisnéis maidir le tagairtí d'alcól" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Támhshuanacha" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Gan aon fhaisnéis maidir le tagairtí do dhrugaí mídhleathacha" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tobac" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Gan aon fhaisnéis maidir le tagairtí do tháirgí tobac" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nochtacht" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Gan aon fhaisnéis maidir le nochtas de chineál ar bith" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Téamaí Gnéis" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Gan aon fhaisnéis maidir le tagairtí nó léirithe de chineál gnéasach" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Maslaí" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Gan aon fhaisnéis maidir le maslaí de chineál ar bith" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Greann Míchuí" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Gan aon eolas maidir le greann míchuí" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Idirdhealú" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Gan aon fhaisnéis maidir le teanga idirdhealaitheach d'aon chineál" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Fógraíocht" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Gan aon fhaisnéis maidir le fógraíocht d'aon chineál" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Cearrbhachas" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Gan aon fhaisnéis maidir le cearrbhachas d'aon chineál" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Ceannach" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Gan aon eolas maidir leis an gcumas airgead a chaitheamh" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Comhrá idir Úsáideoirí" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "" "Gan aon eolas maidir le bealaí chun comhrá a dhéanamh le húsáideoirí eile" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Comhrá Fuaime Idir Úsáideoirí" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Gan aon eolas maidir le bealaí chun labhairt le húsáideoirí eile" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Sonraí Teagmhála" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Gan aon fhaisnéis maidir le hainmneacha úsáideora ná seoltaí ríomhphoist " "líonraí sóisialta a roinnt" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Faisnéis Aitheantais" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Gan aon fhaisnéis maidir le faisnéis úsáideora a roinnt le tríú páirtithe" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Comhroinnt Suímh" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Gan aon fhaisnéis maidir le suíomh fisiceach a roinnt le húsáideoirí eile" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Striapachas" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Gan aon fhaisnéis maidir le tagairtí do striapachas" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Adaltranas" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Gan aon fhaisnéis maidir le tagairtí d'adhaltranas" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Carachtair Ghnéasaithe" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Gan aon fhaisnéis maidir le carachtair ghnéasaithe" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Mí-naomhú" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Gan aon fhaisnéis maidir le tagairtí do dhí-sheacracht" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Iarsmaí Daonna" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Gan aon fhaisnéis maidir le hiarsmaí daonna marbha infheicthe" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Sclábhaíocht" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Gan aon fhaisnéis maidir le tagairtí don sclábhaíocht" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Ní áirítear tagairtí do dhrugaí" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Ní chuimsíonn sé mionnú, maslaí, agus cineálacha eile teanga ghéar" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Ní áirítear fógraí ná idirbhearta airgid" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Ní chuimsíonn sé gnéas ná nochtas" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Ní chuimsíonn sé feidhmiúlacht comhrá neamhrialaithe" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Ní áirítear foréigean" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drugaí" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Teanga Láidir" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Airgead" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Sóisialta" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Foréigean" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Gach" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "Tá rátáil aoise anaithnid ag %s" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "Tá %s oiriúnach do gach duine" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "Tá %s oiriúnach do leanaí óga" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "Tá %s oiriúnach do pháistí" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "Tá %s oiriúnach do dhéagóirí" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "Tá %s oiriúnach do dhaoine fásta" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "Tá %s oiriúnach do %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Fillteán córais %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Fo-fhillteán baile %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Fillteáin chórais óstach" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Cumraíocht an chórais óstach ó /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Fo-fhillteán deisce %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Fillteán deisce" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Fo-fhillteán doiciméad %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Fillteán na ndoiciméad" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Fo-fhillteán ceoil %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Fillteán ceoil" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Fo-fhillteán pictiúr %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Fillteán pictiúr" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Fo-fhillteán Comhroinnte Poiblí %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Fillteán Comhroinnte Poiblí" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Fo-fhillteán físeáin %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Fillteán físeáin" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Fo-fhillteán teimpléid %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Fillteán teimpléid" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Fo-fhillteán taisce úsáideora %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Fillteán taisce úsáideora" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Fo-fhillteán cumraíochta úsáideora %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Fillteán cumraíochta úsáideora" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Fo-fhillteán sonraí úsáideora %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Fillteán sonraí úsáideora" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Fo-fhillteán ama rite úsáideora %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Fillteán rith-ama úsáideora" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Rochtain ar chóras comhad ar %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Cosán anaithnid córas comhad" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "Méid Ãoslódála" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "Méid Suiteáilte" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "Méid le híoslódáil ón idirlíon" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "Méid ar Diosca" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "Oscail fillteán sonraí úsáideora" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "Do Shonraí Úsáideora" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "Taisceáin, socruithe, agus sonraí eile aipeanna" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "Taisce" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "Sonraí taisceáilte sealadacha" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "Glan an Taisce" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Méid Ama Rith Suiteáilte" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Méid Ãoslódála Am Rithime" #: src/bz-app-size-dialog.c:220 msgid "App Size" msgstr "Méid an Aipe" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:105 src/bz-rich-app-tile.c:429 msgid "Verified" msgstr "Fíoraithe" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 #: src/bz-releases-list.c:206 msgid "Installed" msgstr "Suiteáilte" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:765 msgid "translator-credits" msgstr "Aindriú Mac Giolla Eoin" #: src/bz-application.c:775 msgid "Special Thanks" msgstr "Buíochas Speisialta" #: src/bz-application.c:833 msgid "Logged Out Successfully!" msgstr "Logáilte Amach go Rathúil!" #: src/bz-application.c:969 msgid "Performing setup…" msgstr "Ag déanamh an socraithe…" #: src/bz-application.c:1055 msgid "Set Up System Flathub?" msgstr "Córas Flathub a Chur Ar Bun?" #: src/bz-application.c:1058 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Níl an cianrialtán Flathub córais socraithe. Éilíonn Bazaar go mbeidh " "Flathub cumraithe ar shuiteáil Flatpak an chórais chun brabhsáil agus " "feidhmchláir a shuiteáil.\n" "\n" "Is féidir leat Bazaar a úsáid fós chun brabhsáil agus aipeanna atá " "suiteáilte cheana féin a bhaint." #: src/bz-application.c:1065 msgid "Set Up Flathub?" msgstr "Suiteáil Flathub?" #: src/bz-application.c:1068 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Níl Flathub socraithe ar an gcóras seo. Ní bheidh tú in ann brabhsáil agus " "feidhmchláir a shuiteáil i Bazaar mura bhfuil sé ar fáil.\n" "\n" "Is féidir leat Bazaar a úsáid fós chun brabhsáil agus aipeanna atá " "suiteáilte cheana féin a bhaint." #: src/bz-application.c:1074 msgid "Later" msgstr "Níos déanaí" #: src/bz-application.c:1075 msgid "Set Up Flathub" msgstr "Socraigh Flathub" #: src/bz-application.c:1431 msgid "A backend error occurred" msgstr "Tharla earráid chúltaca" #: src/bz-application.c:1631 src/bz-application.c:3790 msgid "Refreshing…" msgstr "Ag athnuachan…" #: src/bz-application.c:1795 src/bz-application.c:3788 #, c-format msgid "Loading %d apps…" msgstr "Ag lódáil %d aip…" #: src/bz-application.c:1848 msgid "Failed to open file" msgstr "Theip ar an gcomhad a oscailt" #: src/bz-application.c:1953 msgid "An initialization error occurred" msgstr "Tharla earráid tosaithe" #: src/bz-application.c:2319 msgid "Checking for updates…" msgstr "Ag seiceáil le haghaidh nuashonruithe…" #: src/bz-application.c:2375 msgid "Failed to check for updates" msgstr "Theip ar sheiceáil le haghaidh nuashonruithe" #: src/bz-application.c:3501 msgid "Malformed Link" msgstr "Nasc Mífhoirmithe" #: src/bz-application.c:3502 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Tá caipitliú mícheart ar an nasc a úsáideadh chun an aip seo a oscailt agus " "d'fhéadfadh sé stopadh ag obair amach anseo.\n" "\n" "Is dóichí gur tharla sé seo mar gheall ar aitheantais aipeanna míchearta a " "sheoladh ag KRunner" #: src/bz-application.c:3510 msgid "Could not find app" msgstr "Níorbh fhéidir an aip a aimsiú" #: src/bz-application.c:3541 msgid "Failed to load metainfo" msgstr "Theip ar an meiteafhaisnéis a lódáil" #: src/bz-application.c:3792 msgid "Writing to cache…" msgstr "Ag scríobh chuig an taisce…" #: src/bz-apps-page.blp:99 msgid "Show All" msgstr "Taispeáin Gach Rud" #: src/bz-apps-page.c:237 #, c-format msgid "All \"%s\"" msgstr "Gach \"%s\"" #: src/bz-apps-page.c:487 src/bz-tag-list.c:91 #, c-format msgid "%d Applications" msgstr "%d Feidhmchlár" #: src/bz-bundle-install-dialog.blp:8 src/bz-bundle-install-dialog.blp:14 msgid "Bundle Installation" msgstr "Suiteáil Pacáiste" #: src/bz-bundle-install-dialog.blp:147 msgid "Additional dependencies may take extra space" msgstr "D’fhéadfadh spleáchais bhreise spás breise a thógáil" #: src/bz-bundle-install-dialog.blp:181 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "B’fhéidir go mbeadh gá le foinse bogearraí nua a chur leis agus an aip seo á " "shuiteáil. Beidh aipeanna eile ón bhfoinse seo le feiceáil i Bazaar.\n" "\n" "Ná cuir an fhoinse seo leis ach amháin má tá tú cinnte go bhfuil muinín agat " "aisti." #: src/bz-bundle-install-dialog.blp:357 msgid "Successfully Installed!" msgstr "Suiteáilte go rathúil!" #: src/bz-bundle-install-dialog.blp:381 src/bz-bundle-install-dialog.blp:463 #: src/bz-rich-app-tile.blp:198 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Oscail" #: src/bz-bundle-install-dialog.blp:391 src/bz-bundle-install-dialog.blp:473 msgid "Show App Details" msgstr "Taispeáin Sonraí an Aipe" #: src/bz-bundle-install-dialog.blp:440 msgid "Already Installed" msgstr "Suiteáilte cheana féin" #: src/bz-bundle-install-dialog.blp:485 msgid "Installation Failed" msgstr "Theip ar an Suiteáil" #: src/bz-bundle-install-dialog.c:169 msgid "Unknown install size" msgstr "Méid suiteála anaithnid" #: src/bz-bundle-install-dialog.c:172 #, c-format msgid "About %s to install" msgstr "Thart ar %s le suiteáil" #: src/bz-bundle-install-dialog.c:186 src/context-tile-callbacks.c:104 #: src/context-tile-callbacks.c:392 src/context-tile-callbacks.c:409 msgid "N/A" msgstr "N/B" #: src/bz-bundle-install-dialog.c:215 msgid "No special permissions" msgstr "Gan ceadanna speisialta" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d íoslódálacha sa mhí seo caite" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s am rith" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Ãoslódáil" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Níl faisnéis mhéide ar fáil" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Méid íoslódála %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Gach Aois" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Níl faisnéis faoi rátáil aoise ar fáil" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Oiriúnach do gach aois" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Oiriúnach do dhaoine aois %d agus os a chionn" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:284 msgid "Unknown" msgstr "Anaithnid" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Bogearraí saor in aisce ceadúnaithe faoi %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Bogearraí saor in aisce" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Bogearraí Dílseánaigh" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Ceadúnas Speisialta: %s" #: src/context-tile-callbacks.c:281 msgid "Free" msgstr "Saor in aisce" #: src/context-tile-callbacks.c:287 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "Dílseánaigh" #: src/context-tile-callbacks.c:289 src/bz-license-dialog.c:135 msgid "Special License" msgstr "Ceadúnas Speisialta" #: src/context-tile-callbacks.c:309 msgid "Adaptive" msgstr "Oiriúnaitheach" #: src/context-tile-callbacks.c:309 msgid "Desktop Only" msgstr "Deasc Amháin" #: src/context-tile-callbacks.c:315 msgid "Works on desktop, tablets, and phones" msgstr "Oibríonn sé ar dheasc, táibléid agus fóin" #: src/context-tile-callbacks.c:316 msgid "May not work on mobile devices" msgstr "B’fhéidir nach n-oibreoidh sé ar ghléasanna soghluaiste" #: src/context-tile-callbacks.c:399 src/bz-safety-dialog.blp:27 msgid "Safe" msgstr "Sábháilte" #: src/context-tile-callbacks.c:401 src/context-tile-callbacks.c:403 msgid "Low Risk" msgstr "Riosca Ãseal" #: src/context-tile-callbacks.c:405 msgid "Medium Risk" msgstr "Riosca Meánach" #: src/context-tile-callbacks.c:407 msgid "High Risk" msgstr "Ardriosca" #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 #: src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Folamh" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "Gan Coimeádadh" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "" "Níl aon fhaisnéis choimeádta curtha ar fáil ar an gcóras seo. Is féidir leat " "brabhsáil a dhéanamh ar fheidhmchláir ar Flathub fós" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "Brabhsáil Flathub" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 #: src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "As líne" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:49 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Brabhsálaí" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Gan Fíorú" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Níl faisnéis forbróra ar fáil." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "Níl úinéireacht an aitheantais aip %s fíoraithe agus d'fhéadfadh gur " "pacáiste pobail atá ann." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "Tá úinéireacht an aitheantais aip %s fíoraithe de láimh ag foireann Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "Tá úinéireacht an aitheantais aip %1$s fíoraithe ag <b>%2$s</b> ar <b>%3$s</" "b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "Tá úinéireacht ID an aip %1$s fíoraithe ag baint úsáide as %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Tá úinéireacht an aitheantais aip %s fíoraithe." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Nótaí Eisiúna Iomlána" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "" "Rinneadh an eisiúint seo indéanta a bhuíochas d’úsáideoirí cosúil leatsa!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Is breá liom Bazaar a chruthú, ach ní féidir liom é a dhéanamh liom féin. " "Cabhraigh le forbairt bhreise a chothú trí bhronnadh a thabhairt ar Ko-Fi." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Tabhair síntiús don Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Cad atá Nua i %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Scaoilte %B %-e, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Roghnaigh Suiteáil" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Tá roinnt leaganacha den aip seo suiteáilte agat. Cé acu ceann ar mhaith " "leat leanúint ar aghaidh leis?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:232 msgid "Cancel" msgstr "Cealaigh" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Don Úsáideoir seo Amháin" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "an t-úsáideoir seo" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "gach úsáideoir" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 #: src/bz-safety-dialog.blp:46 msgid "Details" msgstr "Sonraí" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Cóipeáil" #: src/bz-error-dialog.c:56 src/bz-share-list.c:94 msgid "Copied!" msgstr "Cóipeáilte!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Líon na bhFear is Ansa liom" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Theip ar an rogha is fearr leat a nuashonrú" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Logáil isteach le Flathub chun na cinn is fearr leat a bhainistiú" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Logáil Isteach" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:334 msgid "Favorites" msgstr "Ceanáin" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:144 msgid "Install All" msgstr "Suiteáil Uile" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "Ag luchtú" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Gan aon Ceanáin" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Beidh feidhmchláir a mharcálann tú mar is fearr leat le feiceáil anseo" #: src/bz-favorites-tile.blp:60 src/bz-installed-tile.blp:69 msgid "Support This Application" msgstr "Tacaigh leis an bhFeidhmchlár seo" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Bain as na Ceanáin" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Níorbh fhéidir an ceanán a bhaint" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "Roimhe Seo" #: src/bz-featured-carousel.blp:54 msgid "Next" msgstr "Ar Aghaidh" #: src/bz-flathub-category.c:93 msgid "Editing" msgstr "Eagarthóireacht" #: src/bz-flathub-category.c:94 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:95 msgid "Mixer" msgstr "Meascthóir" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:96 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Ceol" #: src/bz-flathub-category.c:97 msgid "Player" msgstr "Seinnteoir" #: src/bz-flathub-category.c:98 msgid "Recorder" msgstr "Taifeadán" #: src/bz-flathub-category.c:99 msgid "Sequencer" msgstr "Seicheamhóir" #: src/bz-flathub-category.c:100 msgid "Tuner" msgstr "Tiúnóir" #: src/bz-flathub-category.c:101 msgid "TV" msgstr "Teilifís" #: src/bz-flathub-category.c:106 msgid "Emulation" msgstr "Aithris" #: src/bz-flathub-category.c:107 msgid "Action" msgstr "Gníomh" #: src/bz-flathub-category.c:108 msgid "Adventure" msgstr "Eachtraíochta" #: src/bz-flathub-category.c:109 msgid "Arcade" msgstr "Stuara" #: src/bz-flathub-category.c:110 msgid "Blocks" msgstr "Bloic" #: src/bz-flathub-category.c:111 msgid "Board" msgstr "Bord" #: src/bz-flathub-category.c:112 msgid "Card" msgstr "Cárta" #: src/bz-flathub-category.c:113 msgid "Kids" msgstr "Páistí" #: src/bz-flathub-category.c:114 msgid "Logic" msgstr "Lóighic" #: src/bz-flathub-category.c:115 msgid "Role Playing" msgstr "Rólghlacadh" #: src/bz-flathub-category.c:116 msgid "Shooter" msgstr "Lámhachóir" #: src/bz-flathub-category.c:117 msgid "Simulation" msgstr "Insamhalta" #: src/bz-flathub-category.c:118 msgid "Sports" msgstr "Spóirt" #: src/bz-flathub-category.c:119 msgid "Strategy" msgstr "Straitéis" #: src/bz-flathub-category.c:124 msgid "Audio & Video" msgstr "Fuaim & Físeán" #: src/bz-flathub-category.c:124 msgid "Media" msgstr "Meáin" #: src/bz-flathub-category.c:124 msgid "More Audio & Video" msgstr "Tuilleadh Fuaime & Físeáin" #: src/bz-flathub-category.c:125 msgid "Developer Tools" msgstr "Uirlisí Forbróra" #: src/bz-flathub-category.c:125 msgid "Develop" msgstr "Forbair" #: src/bz-flathub-category.c:125 msgid "More Developer Tools" msgstr "Tuilleadh Uirlisí Forbróra" #: src/bz-flathub-category.c:126 msgid "Education" msgstr "Oideachas" #: src/bz-flathub-category.c:126 msgid "Learn" msgstr "Foghlaim" #: src/bz-flathub-category.c:126 msgid "More Education" msgstr "Tuilleadh Oideachais" #: src/bz-flathub-category.c:127 msgid "Gaming" msgstr "Cluichíocht" #: src/bz-flathub-category.c:127 msgid "Play" msgstr "Imir" #: src/bz-flathub-category.c:127 msgid "More Gaming" msgstr "Tuilleadh Cluichíocht" #: src/bz-flathub-category.c:128 msgid "Graphics & Photography" msgstr "Grafaicí & Grianghrafadóireacht" #: src/bz-flathub-category.c:128 msgid "Create" msgstr "Cruthaigh" #: src/bz-flathub-category.c:128 msgid "More Graphics & Photography" msgstr "Tuilleadh Grafaicí & Grianghrafadóireachta" #: src/bz-flathub-category.c:129 msgid "Networking" msgstr "Líonrú" #: src/bz-flathub-category.c:129 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:129 msgid "More Networking" msgstr "Tuilleadh Líonraithe" #: src/bz-flathub-category.c:130 msgid "Productivity" msgstr "Táirgiúlacht" #: src/bz-flathub-category.c:130 msgid "Work" msgstr "Obair" #: src/bz-flathub-category.c:130 msgid "More Productivity" msgstr "Tuilleadh Táirgiúlachta" #: src/bz-flathub-category.c:131 msgid "Science" msgstr "Eolaíocht" #: src/bz-flathub-category.c:131 msgid "More Science" msgstr "Tuilleadh Eolaíochta" #: src/bz-flathub-category.c:132 msgid "System" msgstr "Córas" #: src/bz-flathub-category.c:132 msgid "More System" msgstr "Tuilleadh Córas" #: src/bz-flathub-category.c:133 msgid "Utilities" msgstr "Fóntais" #: src/bz-flathub-category.c:133 msgid "Tools" msgstr "Uirlisí" #: src/bz-flathub-category.c:133 msgid "More Utilities" msgstr "Tuilleadh Fóntais" #: src/bz-flathub-category.c:134 src/bz-flathub-page.blp:116 #: src/bz-flathub-page.blp:148 msgid "Trending" msgstr "Ag treochtáil" #: src/bz-flathub-category.c:134 msgid "More Trending" msgstr "Tuilleadh Treochtaí" #: src/bz-flathub-category.c:135 src/bz-flathub-page.blp:122 #: src/bz-flathub-page.blp:178 msgid "Popular" msgstr "Coitianta" #: src/bz-flathub-category.c:135 msgid "More Popular" msgstr "Níos Coitianta" #: src/bz-flathub-category.c:136 src/bz-flathub-page.blp:168 msgid "Recently Added" msgstr "Curtha leis le Déanaí" #: src/bz-flathub-category.c:136 src/bz-flathub-page.blp:128 msgid "New" msgstr "Nua" #: src/bz-flathub-category.c:136 msgid "More New" msgstr "Tuilleadh Nua" #: src/bz-flathub-category.c:137 src/bz-flathub-page.blp:158 msgid "Recently Updated" msgstr "Nuashonraithe le Déanaí" #: src/bz-flathub-category.c:137 src/bz-flathub-page.blp:134 msgid "Updated" msgstr "Nuashonraithe" #: src/bz-flathub-category.c:137 msgid "More Updated" msgstr "Tuilleadh Nuashonraithe" #: src/bz-flathub-category.c:138 msgid "Mobile" msgstr "Soghluaiste" #: src/bz-flathub-category.c:138 msgid "More Mobile" msgstr "Níos Soghluaiste" #: src/bz-flathub-category.c:139 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:139 msgid "More Adwaita" msgstr "Tuilleadh Adwaita" #: src/bz-flathub-category.c:140 msgid "KDE Apps" msgstr "Aipeanna KDE" #: src/bz-flathub-category.c:140 msgid "More KDE Apps" msgstr "Tuilleadh Aipeanna KDE" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Níor Cuireadh Flathub Leis" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "Ní bhfuarthas an cianrialtán Flathub ar aon cheann de do shuiteálacha Flatpak" #: src/bz-flathub-page.blp:35 msgid "Flathub returned an error" msgstr "Thug Flathub earráid ar ais" #: src/bz-flathub-page.blp:41 msgid "Retry Flathub Connection" msgstr "Déan iarracht eile ar nasc Flathub" #: src/bz-flathub-page.blp:57 msgid "Flathub Unavailable" msgstr "Flathub Gan Fáil" #: src/bz-flathub-page.blp:58 msgid "" "We could not connect to Flathub. You can still manage and search for " "applications." msgstr "" "Ní raibh muid in ann ceangal le Flathub. Is féidir leat feidhmchláir a " "bhainistiú agus a chuardach fós." #: src/bz-flathub-page.blp:61 msgid "Search Apps" msgstr "Cuardaigh Aipeanna" #: src/bz-flathub-page.blp:205 msgid "App of the Day" msgstr "Aip an Lae" #: src/bz-flathub-page.blp:268 msgid "On the Go" msgstr "Ar an mBóthar" #: src/bz-flathub-page.blp:280 msgid "Apps for your Linux phones and tablets" msgstr "Aipeanna do do ghutháin agus táibléid Linux" #: src/bz-flathub-page.blp:291 src/bz-flathub-page.blp:326 msgid "More Mobile Apps" msgstr "Tuilleadh Aipeanna Soghluaiste" #: src/bz-flathub-page.blp:382 msgid "We​ ♥​ Games" msgstr "Is breá linn ♥ Cluichí" #: src/bz-flathub-page.blp:395 msgid "Games and apps to run your favorite titles" msgstr "Cluichí agus aipeanna chun do theidil is fearr leat a rith" #: src/bz-flathub-page.blp:429 msgid "More Games" msgstr "Tuilleadh Cluichí" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 #: src/bz-library-page.blp:82 msgid "No Results" msgstr "Gan Torthaí" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Bain triail as ceist chuardaigh dhifriúil" #: src/bz-full-view.blp:41 msgid "Content" msgstr "Ãbhar" #: src/bz-full-view.blp:103 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Réamhamharc áitiúil atá anseo, d'fhéadfadh roinnt sonraí a bheith difriúil " "ón liostú foilsithe" #: src/bz-full-view.blp:106 msgid "Preview Store Appearance" msgstr "Réamhamharc ar Chuma an tSiopa" #: src/bz-full-view.blp:232 msgid "_Support" msgstr "_Tacaíocht" #: src/bz-full-view.blp:431 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Úsáideann an aip seo am rith nach bhfaigheann nuashonruithe ná socruithe " "slándála a thuilleadh. D’fhéadfadh sé a bheith neamhshábháilte le húsáid." #: src/bz-full-view.blp:518 msgid "Trash Data" msgstr "Sonraí Bruscair" #: src/bz-full-view.blp:658 msgid "Tags:" msgstr "Clibeanna:" #: src/bz-full-view.c:180 msgid "No URL" msgstr "Gan URL" #: src/bz-full-view.c:198 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "Tá ceadúnas FLOSS ag an bhfeidhmchlár seo, rud a chiallaíonn gur féidir an " "cód foinse a iniúchadh ar mhaithe le sábháilteacht." #: src/bz-full-view.c:199 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "Tá ceadúnas dílseánaigh ag an bhfeidhmchlár seo, rud a chiallaíonn go " "bhforbraítear an cód foinse go príobháideach agus nach féidir le tríú páirtí " "neamhspleách é a iniúchadh." #: src/bz-full-view.c:206 msgid "More Apps" msgstr "Tuilleadh Aipeanna" #: src/bz-full-view.c:207 #, c-format msgid "More Apps by %s" msgstr "Tuilleadh Aipeanna ó %s" #: src/bz-full-view.c:214 msgid "Other Apps by this Developer" msgstr "Aipeanna Eile ón bhForbróir seo" #: src/bz-full-view.c:216 src/bz-full-view.c:316 #, c-format msgid "Other Apps by %s" msgstr "Aipeanna Eile ó %s" #: src/bz-full-view.c:225 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "Níl %s suiteáilte, ach tá <b>%s</b> sonraí ann fós." #: src/bz-full-view.c:318 msgid "Other Apps" msgstr "Aipeanna Eile" #: src/bz-full-view.c:320 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d Feidhmchlár" msgstr[1] "%d Feidhmchláir" msgstr[2] "%d Feidhmchláir" #: src/bz-full-view.c:536 src/bz-user-data-tile.c:144 msgid "Failed to Remove User Data" msgstr "Theip ar Shonraí Úsáideora a Bhaint" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Tacaíocht Crua-earraí" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Tacaíocht méarchláir" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Éilíonn méarchláir" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Molann méarchláir" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Tacaíonn méarchláir" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Tacaíocht anaithnid do mhéarchláir" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Tacaíocht luiche" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Teastaíonn lucha nó gléasanna pointeála" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Molann lucha nó gléasanna pointeála" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Tacaíonn sé le lucha nó le gléasanna pointeála" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Tacaíocht anaithnid do lucha nó do ghléasanna pointeála" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Tacaíocht scáileáin tadhaill" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Éilíonn scáileáin tadhaill" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Molann scáileáin tadhaill" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Tacaíonn sé le scáileáin tadhaill" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Tacaíocht anaithnid do scáileáin tadhaill" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Tacaíocht shoghluaiste" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Oibríonn sé ar ghléasanna soghluaiste" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "B’fhéidir nach n-oibreoidh sé go maith ar ghléasanna soghluaiste" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Tacaíocht deisce" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Oibríonn go maith ar scáileáin mhóra" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "Oibríonn %s is fearr ar chrua-earraí sonracha" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "Oibríonn %s ar an gcuid is mó de na gléasanna" #: src/bz-install-controls.blp:62 msgid "_Open" msgstr "_Oscail" #: src/bz-install-controls.blp:77 src/bz-install-controls.blp:134 msgid "Uninstall Application" msgstr "Díshuiteáil Feidhmchlár" #: src/bz-install-controls.blp:87 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Bain" #: src/bz-install-controls.blp:121 src/bz-updates-card.c:164 #: src/bz-updates-card.c:183 msgid "Update" msgstr "Nuashonrú" #: src/bz-install-controls.blp:144 src/bz-installed-tile.blp:105 msgid "Remove" msgstr "Bain" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Cealaigh" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Ag cealú" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "Cuardaigh aipeanna suiteáilte" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "Glan an cuardach" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "Níor aimsíodh aon aipeanna" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "Cuardaigh Siopa Ina Ionad" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:112 msgid "Library" msgstr "Leabharlann" #: src/bz-library-page.blp:128 msgid "Pending Updates" msgstr "Nuashonruithe ar Feitheamh" #: src/bz-library-page.blp:155 msgid "Downloads" msgstr "Ãoslódálacha" #: src/bz-library-page.blp:198 msgid "Recently Uninstalled" msgstr "Díshuiteáilte le Déanaí" #: src/bz-library-page.blp:249 msgid "Clear Finished Tasks" msgstr "Glan na Tascanna Críochnaithe" #: src/bz-library-page.blp:334 msgid "Sort By" msgstr "Sórtáil De réir" #: src/bz-library-page.blp:348 msgid "Name" msgstr "Ainm" #: src/bz-library-page.blp:354 msgid "Size" msgstr "Méid" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "" "Níor aimsíodh aon mheaitseálacha do \"%s\" i liosta na n-aipeanna suiteáilte" #: src/bz-library-page.c:193 src/bz-updates-card.c:433 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u Nuashonrú atá ar Fáil" msgstr[1] "%u Nuashonruithe atá ar Fáil" msgstr[2] "%u Nuashonruithe atá ar Fáil" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u Aip Suiteáilte" msgstr[1] "%u Aipeanna Suiteáilte" msgstr[2] "%u Aipeanna Suiteáilte" #: src/bz-license-dialog.blp:94 msgid "Get Involved" msgstr "Bígí Páirteach" #: src/bz-license-dialog.blp:111 msgid "Learn More" msgstr "Foghlaim Tuilleadh" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Ceadúnas Anaithnid" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Tógtha ag an bPobal" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Forbraíodh an aip seo go hoscailte ag pobal idirnáisiúnta.\n" "\n" "Is féidir leat páirt a ghlacadh agus cabhrú le feabhas a chur uirthi." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Níl ceadúnas an aip seo ar eolas" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Forbraíodh an aip seo go hoscailte ag pobal idirnáisiúnta, agus eisíodh í " "faoin gceadúnas %s.\n" "\n" "Is féidir leat páirt a ghlacadh agus cabhrú le feabhas a chur uirthi." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Níor forbraíodh an aip seo go hoscailte, mar sin níl a fhios ag ach a " "forbróirí conas a oibríonn sé. D’fhéadfadh sé a bheith neamhshábháilte ar " "bhealaí atá deacair a bhrath, agus d’fhéadfadh sé athrú gan mhaoirseacht.\n" "\n" "B’fhéidir go mbeidh tú in ann cur leis an aip seo nó nach mbeidh." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Forbraíodh an aip seo faoin gceadúnas speisialta %s.\n" "\n" "B’fhéidir go mbeidh tú in ann cur leis an aip seo nó nach mbeidh." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:49 msgid "License" msgstr "Ceadúnas" #: src/bz-login-page.blp:5 src/bz-login-page.blp:42 msgid "Connect to Flathub" msgstr "Ceangail le Flathub" #: src/bz-login-page.blp:32 msgid "Something Went Wrong" msgstr "Chuaigh rud éigin mícheart" #: src/bz-login-page.blp:43 msgid "Connect your Flathub account to Bazaar to manage your favorited apps." msgstr "" "Ceangail do chuntas Flathub le Bazaar chun do chuid aipeanna is fearr leat a " "bhainistiú." #: src/bz-login-page.blp:110 msgid "Finish" msgstr "Críochnaigh" #: src/bz-login-page.c:664 #, c-format msgid "Hello, %s!" msgstr "Haigh, %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "Roghnaigh Comhad Meiteafhaisnéise" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Comhaid Meiteafhaisnéise" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "Roghnaigh Deilbhín (Roghnach)" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Comhaid Ãomhá" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Réamhamharc" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Roghanna" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Tá an nasc líonra méadraithe — tá athnuachan uathoibríoch sonraí stórála ar " "sos" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:232 msgid "Refresh Manually" msgstr "Athnuachan de Láimh" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Scagairí Ãbhair" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Bogearraí Saor in Aisce Amháin" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary applications when browsing and searching" msgstr "" "Folaigh feidhmchláir dhílseánaigh agus tú ag brabhsáil agus ag cuardach" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Torthaí Flathub Amháin" #: src/bz-preferences-dialog.blp:40 msgid "" "Limit search and browse results to applications only available on Flathub" msgstr "" "Teorainn a chur le cuardach agus torthaí brabhsála d’fheidhmchláir atá ar " "fáil ar Flathub amháin" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "Torthaí Fíoraithe Amháin" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Folaigh torthaí nach bhfuil fíoraithe ar Flathub" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "Folaigh Aipeanna Deireadh Saoil" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "Folaigh aipeanna nach dtacaíonn a bhforbróirí leo a thuilleadh" #: src/bz-preferences-dialog.blp:55 src/bz-window.blp:127 msgid "Search" msgstr "Cuardaigh" #: src/bz-preferences-dialog.blp:58 msgid "Delay Search Results" msgstr "Moill ar Thorthaí Cuardaigh" #: src/bz-preferences-dialog.blp:59 msgid "Improve results performance by debouncing search terms" msgstr "" "Feabhas a chur ar fheidhmíocht na dtorthaí trí théarmaí cuardaigh a dhí-" "bhreabadh" #: src/bz-preferences-dialog.blp:64 msgid "Progress Bar" msgstr "Barra Dul Chun Cinn" #: src/bz-preferences-dialog.blp:65 msgid "Choose a theme for the progress bar!" msgstr "Roghnaigh téama don bharra dul chun cinn!" #: src/bz-preferences-dialog.blp:89 msgid "Vertical Stripes" msgstr "Stríoca Ingearacha" #: src/bz-preferences-dialog.blp:90 msgid "Display flag colors from left to right" msgstr "Taispeáin dathanna na mbratach ó chlé go deas" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Dath Aicinn" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Dathanna Bród" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Dathanna Bród Leispiach" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Dathanna Bród Fir Homaighnéasacha" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Dathanna Bród Trasinscne" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Dathanna Bród Neamhdhénártha" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Dathanna Bród Déghnéasacha" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Dathanna Bród Neamhghnéasacha" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Dathanna Bród Panghnéasacha" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Dathanna Bród Cumhra" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Dathanna Bród Inscnefluid" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Dathanna Bród Ilghnéasacha" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Dathanna Bród Uileghnéasacha" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Dathanna Bród Aroace" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Dathanna Bród Agender" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Dathanna Bród Inscnequeer" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Dathanna Bród Idirghnéasacha" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Dathanna Bród Demi-Inscne" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Dathanna Bród Birománsacha" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Dathanna Bród Míchumais" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Dathanna Bród Femboy" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Dathanna Bród Neutrois" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:155 msgid "Version History" msgstr "Stair Leagan" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Stair Leagan" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Inniu" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Inné" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d lá ó shin" msgstr[1] "%d lá ó shin" msgstr[2] "%d lá ó shin" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d seachtain ó shin" msgstr[1] "%d seachtain ó shin" msgstr[2] "%d seachtain ó shin" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d mí ó shin" msgstr[1] "%d mí ó shin" msgstr[2] "%d mí ó shin" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d bliain ó shin" msgstr[1] "%d bliain ó shin" msgstr[2] "%d bliain ó shin" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Leagan %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Gan aon sonraí don eisiúint seo" #: src/bz-releases-list.c:263 msgid "Get More Information" msgstr "Faigh Tuilleadh Eolais" #: src/bz-rich-app-tile.blp:217 msgid "Uninstall" msgstr "Díshuiteáil" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:369 msgid "Get" msgstr "Faigh" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Ceadanna Anaithnid" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Tá ceadanna ar iarraidh don aip seo." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Gan Ceadanna" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Tá an aip bosca gainimh go hiomlán" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Rochtain Líonra" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Is féidir rochtain a fháil ar an idirlíon" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Gan Rochtain Líonra" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Ní féidir rochtain a fháil ar an idirlíon" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Rochtain Gléas Úsáideora" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "" "Is féidir rochtain a fháil ar fheistí ar nós ceamaraí gréasáin nó rialtóirí " "cearrbhachais" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Gan Rochtain ar Ghléas Úsáideora" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" "Ní féidir rochtain a fháil ar fheistí ar nós ceamaraí gréasáin nó rialtóirí " "cearrbhachais" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Rochtain ar Ghléas Ionchuir" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Is féidir rochtain a fháil ar fheistí ionchuir" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Rochtain Micreafóin agus Athsheinm Fuaime" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "Is féidir éisteacht le micreafóin agus fuaim a sheinm gan cead a iarraidh" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Rochtain ar Ghléas an Chórais" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" "Is féidir rochtain a fháil ar ghléasanna córais a bhfuil ceadanna ardaithe " "ag teastáil uathu" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Rochtain ar Ãbhar an Scáileáin" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Is féidir rochtain a fháil ar ábhar an scáileáin nó fuinneoga eile" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Córas Fuinneoige Oidhreachta" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Úsáideann sé córas fuinneoige oidhreachta i gcónaí (X11)" #: src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Ceadanna Treallacha" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Is féidir ceadanna treallacha a fháil" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Socruithe Úsáideora" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Is féidir rochtain a fháil ar shocruithe úsáideora agus iad a athrú" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Rochtain Léitheoireachta/Scríofa ar an gCóras Comhad Iomlán" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "" "Is féidir leis na sonraí go léir ar an gcóras comhad a léamh agus a scríobh" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Rochtain Léitheoireachta/Scríofa ar Fhillteán Baile" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "" "Is féidir leat na sonraí go léir i do eolaire baile a léamh agus a scríobh" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Rochtain Léitheoireachta Iomlán an Chórais Comhad" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Is féidir leis na sonraí go léir ar an gcóras comhad a léamh" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Rochtain Léitheoireachta Fillteán Baile" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Is féidir leat na sonraí go léir i do eolaire baile a léamh" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Rochtain Léitheoireachta/Scríofa ar an bhFillteán Ãoslódála" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "" "Is féidir leat na sonraí go léir i do eolaire íoslódálacha a léamh agus a " "scríobh" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Ãoslódáil Rochtain Léitheoireachta Fillteáin" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Is féidir leat na sonraí go léir i do chomhadlann íoslódálacha a léamh" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Is féidir na sonraí go léir san eolaire a léamh agus a scríobh" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Is féidir na sonraí go léir san eolaire a léamh" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Gan Rochtain ar Chóras Comhad" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Ní féidir rochtain a fháil ar an gcóras comhad ar chor ar bith" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Úsáideann Seirbhísí Córais" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Is féidir sonraí a iarraidh ó sheirbhísí córais neamh-thairsí" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Úsáideann Seirbhísí Seisiúin" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Is féidir sonraí a iarraidh ó sheirbhísí seisiúin neamh-thairseach" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Gan Rochtain Seirbhíse" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "" "Ní féidir rochtain a fháil ar sheirbhísí seisiúin nó córais neamh-thairseach " "ar chor ar bith" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Forbróir Aipeanna Fíoraithe" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "" "Tá sé fíoraithe gurb é forbróir an aip seo an duine a deir siad a bheith" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Cód Dílseánaigh" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Níl an cód foinse poiblí, mar sin ní féidir é a iniúchadh go neamhspleách " "agus d'fhéadfadh sé a bheith neamhshábháilte" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Cód Iniúchta" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Tá an cód foinse poiblí agus is féidir é a iniúchadh go neamhspleách, rud a " "fhágann go bhfuil an aip níos dóchúla a bheith sábháilte" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Bain úsáid as an Seirbhís Córais %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Bain úsáid as an tSeirbhís Seisiúin %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Bain úsáid as an tseirbhís %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Is féidir an tseirbhís neamh-thairseach a fheiceáil" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Is féidir labhairt leis an tseirbhís neamh-thairseach" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Is féidir leis an tseirbhís neamh-thairsí a bheith i seilbh" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Comhtháthú Roghchláir Dhomhanda" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Is féidir a bhiachláir a thaispeáint i mbarra roghchláir domhanda" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Comhtháthú Socruithe KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Is féidir a bhrath nuair a athraíonn socruithe deisce KDE" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Socruithe Domhanda KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Is féidir roghanna deisce KDE a léamh ar nós clónna agus dathanna" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Seirbhís Stórála Rúnda" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Is féidir leis a phasfhocail féin a stóráil agus a aisghabháil ag baint " "úsáide as eochairfháinne an chórais" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Seirbhís Fógraí Deisce" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Is féidir fógraí deisce a sheoladh" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Comhtháthú Tráidire an Chórais" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Is féidir deilbhín a thaispeáint sa tráidire córais" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Comhtháthú KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Is féidir idirghníomhú le gléasanna atá péireáilte trí KDE Connect" #: src/bz-safety-dialog.blp:59 msgid "App ID" msgstr "Aitheantas Aipe" #: src/bz-safety-dialog.blp:69 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:100 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Úsáideann an aip seo leagan atá as dáta den ardán bogearraí (SDK) agus " "d'fhéadfadh fabhtanna nó leochaileachtaí slándála a bheith ann nach ndéanfar " "a shocrú." #: src/bz-safety-dialog.c:167 msgid "Safety" msgstr "Sábháilteacht" #: src/bz-safety-dialog.c:226 #, c-format msgid "%s is Safe" msgstr "Tá %s sábháilte" #: src/bz-safety-dialog.c:231 #, c-format msgid "%s has no Unsafe Permissions" msgstr "Níl aon Cheadanna Neamhshábháilte ag %s" #: src/bz-safety-dialog.c:236 #, c-format msgid "%s is Probably Safe" msgstr "Is dócha go bhfuil %s sábháilte" #: src/bz-safety-dialog.c:241 #, c-format msgid "%s is Possibly Unsafe" msgstr "B’fhéidir go bhfuil %s neamhshábháilte" #: src/bz-safety-dialog.c:246 #, c-format msgid "%s is Unsafe" msgstr "Tá %s neamhshábháilte" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "Seat scáileáin" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "An seat scáileán roimhe seo" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "An seat scáileán eile" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "Cóipeáil íomhá" #: src/bz-screenshot-page.blp:150 msgid "Reset View" msgstr "Athshocraigh an Amharc" #: src/bz-screenshot-page.blp:161 msgid "Zoom Out" msgstr "Súmáil amach" #: src/bz-screenshot-page.blp:171 msgid "Zoom In" msgstr "Súmáil isteach" #: src/bz-screenshots-carousel.blp:5 msgid "Screenshots Carousel" msgstr "Roithleagán Seat scáileáin" #: src/bz-screenshots-carousel.blp:117 msgid "Open Screenshot Viewer" msgstr "Oscail Amharcóir Seat scáileáin" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "Scagairí" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Fíoraithe" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Saor in Aisce/Oscailte" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Neamh-_EOL" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Scag amach aipeanna atá ag deireadh a saoil" #: src/bz-search-filter-popover.blp:57 msgid "Categories" msgstr "Catagóirí" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "Cuardaigh Aipeanna, Cluichí, Bogearraí" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "Scagairí Cuardaigh" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "Glan an Chuardach" #: src/bz-search-page.blp:192 msgid "Categories Unavailable" msgstr "Catagóirí Gan Fáil" #: src/bz-search-page.blp:193 msgid "Search for apps using the search bar above." msgstr "Cuardaigh aipeanna ag baint úsáide as an mbarra cuardaigh thuas." #: src/bz-search-page.blp:219 msgid "Browse Categories" msgstr "Brabhsáil Catagóirí" #: src/bz-search-page.blp:361 msgid "No Applications Found" msgstr "Níor aimsíodh aon fheidhmchláir" #: src/bz-search-page.c:247 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Níor aimsíodh aon torthaí le haghaidh \"%s\" i Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Físeán" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Oifig" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Féilire" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Teachtaireachtaí" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Péint" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Aithriseoir" #: src/bz-share-list.c:55 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Leathanach Flathub" #: src/bz-share-list.c:56 msgctxt "Project URL Type" msgid "Project Website" msgstr "Suíomh Gréasáin an Tionscadail" #: src/bz-share-list.c:57 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Rianaitheoir Fadhbanna" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "FAQ" msgstr "Ceisteanna Coitianta" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Help" msgstr "Cabhair" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Donate" msgstr "Tabhair Síntiús" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "Translate" msgstr "Aistrigh" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Contact" msgstr "Teagmháil" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Source Code" msgstr "Cód Foinse" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Contribute" msgstr "Cuir leis" #: src/bz-share-list.c:153 msgid "Copy Link" msgstr "Cóipeáil Nasc" #: src/bz-share-list.c:164 msgid "Open Link" msgstr "Oscail an Nasc" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Amlíne" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Suiteálacha:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Domhan" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Ó 15/4/2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM Suiteálacha Iomlána" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK Suiteálacha Iomlána" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d Suiteálacha Iomlána" #: src/bz-tag-list.c:78 msgid "No Results Found" msgstr "Níor aimsíodh aon torthaí" #: src/bz-tag-list.c:90 #, c-format msgid "Apps Tagged \"%s\"" msgstr "Aipeanna atá tagáilte \"%s\"" #: src/bz-tag-list.c:103 msgid "Search failed" msgstr "Theip ar an gcuardach" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Coinnigh Sonraí Úsáideora" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Ceadaigh socruithe pearsanta & ábhar a athchóiriú" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Scrios na Sonraí Uile" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Scrios sonraí úsáideora go buan chun spás a shábháil" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Suiteáil %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Roghnaigh cén leagan atá le suiteáil. Féadfaidh comhpháirteanna comhroinnte " "breise a shuiteáil" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Féadfaidh sé comhpháirteanna comhroinnte breise a shuiteáil" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Cealaigh" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Suiteáil" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Bain %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Roghnaigh cén leagan atá le baint." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Ní bheidh sé indéanta %s a úsáid tar éis é a dhíshuiteáil." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "Tá “%s†i mbaol ard" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Tá rochtain iomlán ag an aip seo ar do chóras, lena n-áirítear <b>do chuid " "comhad go léir, stair bhrabhsálaí, pasfhocail shábháilte</b>, agus " "tuilleadh. Tá rochtain aici ar an idirlíon freisin, rud a chiallaíonn go " "bhféadfadh sí do shonraí a sheoladh chuig páirtithe seachtracha.\n" "\n" "Ós rud é gur aip dhílseánaigh í, ní féidir iniúchadh a dhéanamh uirthi " "maidir leis an méid a dhéanann sí leis na ceadanna seo." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Úsáideann an aip seo an seanchóras fuinneoige X11, rud a ligeann di <b>gach " "eochairbhuille a thaifeadadh, scáileáin a ghabháil, agus monatóireacht a " "dhéanamh ar fheidhmchláir eile</b>. Tá rochtain aici ar an idirlíon freisin, " "rud a chiallaíonn gur féidir léi do shonraí a sheoladh chuig páirtithe " "seachtracha.\n" "\n" "Ós rud é gur aip dhílseánaigh í, ní féidir iniúchadh a dhéanamh uirthi " "maidir leis an méid a dhéanann sí leis na ceadanna seo." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Suiteáil Ar Aon Slí" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Theip ar an dialóg idirbhirt a lódáil" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Tá na haipeanna go léir suiteáilte cheana féin" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Ceart go leor" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Suiteáil an aip %u?" msgstr[1] "Suiteáil %u Aipeanna?" msgstr[2] "Suiteáil %u Aipeanna?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Suiteálfar an méid seo a leanas. Féadfar comhpháirteanna comhroinnte breise " "a shuiteáil freisin" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "Suiteálfar %d breiseán." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Ina theannta sin, suiteálfar breiseáin." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Suiteáil Uile" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Críochnaithe i %.02f soicind" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Breiseán Aipe" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Am rith" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "Sa Scuaine" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Déanta" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Cealaithe" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Earráid" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Cealaigh an tIdirbheart" #: src/bz-transaction-tile.blp:436 msgid "Show Error Info" msgstr "Taispeáin Eolas Earráide" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s Saortha" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Earráid Idirbhirt" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Ar feitheamh" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Nuashonraigh Gach Rud" #: src/bz-updates-card.c:211 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "Nuashonrú Ama Rith %u" msgstr[1] "Nuashonruithe Rith-ama %u" msgstr[2] "Nuashonruithe Rith-ama %u" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Bainistigh Sonraí Úsáideora atá Fágtha" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "Níor aimsíodh aon sonraí úsáideora" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "Sonraí Úsáideora" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "Bruscar Sonraí Úsáideora" #: src/bz-user-data-tile.c:150 #, c-format msgid "Trashed User Data for %s" msgstr "Sonraí Úsáideora Bruscair do %s" #: src/bz-window.blp:70 msgid "Refreshing" msgstr "Athnuachan" #: src/bz-window.blp:88 msgid "Curated" msgstr "Coimeádta" #: src/bz-window.blp:100 msgid "Explore" msgstr "Taiscéal" #: src/bz-window.blp:212 msgid "Main Menu" msgstr "Príomh-Roghchlár" #: src/bz-window.blp:223 msgid "You are running a new version of Bazaar!" msgstr "Tá leagan nua de Bazaar á rith agat!" #: src/bz-window.blp:224 msgid "See What's New" msgstr "Féach Cad atá Nua" #: src/bz-window.blp:231 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Tá nasc líonra agat ach tá leagan taisceáilte de Flathub á fheiceáil agat" #: src/bz-window.blp:276 msgid "_Donate to Bazaar" msgstr "_Tabhair Síntiús do Bazaar" #: src/bz-window.blp:283 msgid "_Refresh" msgstr "_Athnuachan" #: src/bz-window.blp:288 msgid "_Preferences" msgstr "_Sainroghanna" #: src/bz-window.blp:293 msgid "_Login With Flathub" msgstr "_Logáil Isteach Le Flathub" #: src/bz-window.blp:299 msgid "_Manage Leftover User Data" msgstr "_Bainistigh Sonraí Úsáideora atá Fágtha" #: src/bz-window.blp:304 msgid "_Keyboard Shortcuts" msgstr "_Aicearraí Méarchláir" #: src/bz-window.blp:309 msgid "_About Bazaar" msgstr "_Maidir le Bazaar" #: src/bz-window.blp:316 msgid "_Quit Bazaar" msgstr "_Scoir den Bazaar" #: src/bz-window.blp:341 msgid "Log Out" msgstr "Logáil Amach" #. Translators: %s is the title of the current page #: src/bz-window.c:376 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:596 src/bz-window.c:634 msgid "Failed to launch application" msgstr "Theip ar an bhfeidhmchlár a sheoladh" #: src/bz-window.c:843 msgid "You can't remove Bazaar from Bazaar!" msgstr "Ní féidir leat Bazaar a bhaint as Bazaar!" #: src/bz-window.c:1127 src/bz-window.c:1161 msgid "Can't do that right now!" msgstr "Ní féidir liom é sin a dhéanamh faoi láthair!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Suiteáil" msgstr[1] "Suiteálacha" msgstr[2] "Suiteálacha" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Loingseoireacht" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Oscail an Leathanach Iniúchta" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Oscail Leathanach na Leabharlainne" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Oscail Leathanach Cuardaigh" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Cianrialtáin" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Cianrialtáin Sioncrónaithe" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Ginearálta" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Oscail Roghanna" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Taispeáin Aicearraí" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Dún an Fhuinneog" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Scoir den Bazaar" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "Leagann sé béim ar thacaíocht a thabhairt do na forbróirí a chuireann ar " #~ "chumas an deasc Linux a bheith indéanta. Tá cluaisín \"coimeádta\" ar " #~ "fáil i Bazaar ar féidir le dáileoirí é a chumrú chun eispéireas níos " #~ "logánta a cheadú." #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "Nucleus app page" #~ msgstr "Leathanach aip Nucleus" #~ msgid "User Data Size" #~ msgstr "Méid Sonraí Úsáideora" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Synchronizing..." #~ msgstr "Ag sioncrónú..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "Ag fáil %d iontráil..." #~ msgid "Indexing Data..." #~ msgstr "Ag Innéacsú Sonraí..." #~ msgid "Close" #~ msgstr "Dún" #~ msgid "Copy and Close" #~ msgstr "Cóipeáil agus Dún" #~ msgid "Download & Install Application" #~ msgstr "Ãoslódáil & Suiteáil Feidhmchlár" #~ msgid "Install Other Version" #~ msgstr "Suiteáil Leagan Eile" #~ msgid "Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród (Cothrománach)" #~ msgid "Lesbian Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Leispiach (Cothrománach)" #~ msgid "Male Homosexual Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Fir Homaighnéasacha (Cothrománach)" #~ msgid "Transgender Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Trasinscne (Cothrománach)" #~ msgid "Nonbinary Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Neamhdhénártha (Cothrománach)" #~ msgid "Bisexual Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Déghnéasacha (Cothrománach)" #~ msgid "Asexual Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Asexual (Cothrománach)" #~ msgid "Pansexual Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Panghnéasacha (Cothrománach)" #~ msgid "Aromantic Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Cumhra (Cothrománach)" #~ msgid "Genderfluid Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Inscnefluid (Cothrománach)" #~ msgid "Polysexual Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Ilghnéasacha (Cothrománach)" #~ msgid "Omnisexual Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Uileghnéasacha (Cothrománach)" #~ msgid "Aroace Pride Colors (Horizontal)" #~ msgstr "Dathanna Aroace Pride (Cothrománach)" #~ msgid "Agender Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Agender (Cothrománach)" #~ msgid "Genderqueer Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Inscnequeer (Cothrománach)" #~ msgid "Intersex Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Idirghnéasacha (Cothrománach)" #~ msgid "Demigender Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Demigender (Cothrománach)" #~ msgid "Biromantic Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Biormantach (Cothrománach)" #~ msgid "Disability Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Míchumais (Cothrománach)" #~ msgid "Femboy Pride Colors (Horizontal)" #~ msgstr "Dathanna Bród Femboy (Cothrománach)" #~ msgid "Keep Data" #~ msgstr "Coinnigh Sonraí" #~ msgid "Ongoing" #~ msgstr "Ar siúl" #~ msgid "Finished" #~ msgstr "Críochnaithe" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "Aistríodh %s go dtí seo" #~ msgid "Update Now" #~ msgstr "Nuashonraigh Anois" #~ msgid "Updates Are Available" #~ msgstr "Tá Nuashonruithe ar Fáil" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "Tá na feidhmchláir seo a leanas incháilithe le haghaidh nuashonruithe. Ar " #~ "mhaith leat iad a shuiteáil?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "Tá %d rith-am agus/nó breiseán incháilithe le haghaidh nuashonruithe. Ar " #~ "mhaith leat iad a shuiteáil?" #~ msgid "Tasks" #~ msgstr "Tascanna" #~ msgid "Stop Active Tasks" #~ msgstr "Stop Tascanna Gníomhacha" #~ msgid "No Tasks Yet" #~ msgstr "Gan aon tascanna fós" #~ msgid "Refreshing Store Content" #~ msgstr "Ãbhar an tSiopa á Athnuachan" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgid "No background tasks!" #~ msgstr "Gan aon tascanna cúlra!" #~ msgid "_Synchronize Remotes" #~ msgstr "_Sioncrónaigh Cianrialtáin" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "%d Nuashonrú Ar Fáil" #~ msgstr[1] "%d Nuashonruithe Ar Fáil" #~ msgstr[2] "%d Nuashonruithe Ar Fáil" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "Beidh an cumas comhaid phacáiste .flatpak áitiúla a iniúchadh agus a " #~ "shuiteáil ag teacht go luath! Idir an dá linn, bain triail as\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "a rith ar an líne ordaithe." #~ msgid "Resume Current Tasks" #~ msgstr "Lean ar aghaidh le Tascanna Reatha" #~ msgid "Pause Current Tasks" #~ msgstr "Cuir Tascanna Reatha ar Sos" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u íoslódálacha" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "Bainisteoir Idirbheart a Athrú" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "Scoir" ���������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/hu.po������������������������������������������������������������������0000664�0000000�0000000�00000103162�15240005042�0016733�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Hungarian translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Benedek Dévényi <rdbende@proton.me>, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-31 23:45+0100\n" "PO-Revision-Date: 2025-11-02 20:12+0100\n" "Last-Translator: Benedek Dévényi <rdbende@proton.me>\n" "Language-Team: Hungarian\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 49.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 #: src/bz-window.blp:56 msgid "Bazaar" msgstr "Bazár" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Flatpak alkalmazások telepítése, eltávolítása és frissítése" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;System;PackageManager;Discover;Flatpak;Software;Store;rendszer;csomagkezelÅ‘;felfedezés;szoftver;áruház;bolt;" #: data/io.github.kolunmi.Bazaar.gschema.xml:6 msgid "Show Git Forge Star Counts" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:7 msgid "" "Whether to attempt to detect and show \"star counts\" for projects in the " "full view" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:11 msgid "Only Show Free Software" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:12 msgid "Hide proprietary software when searching" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:16 msgid "Show Only Flathub Content" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:17 msgid "Filter search results to only show applications available on Flathub" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:21 msgid "Debounce Search Inputs" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:22 msgid "Add a delay before searching to prevent instant replies while typing" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:40 msgid "Global Progress Bar Theme" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:41 msgid "Describes the look of the global progress bar" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:45 msgid "Saved Window Dimensions" msgstr "" #: data/io.github.kolunmi.Bazaar.gschema.xml:46 msgid "The window dimensions to be used by the next Bazaar window" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "Alkalmazások felfedezése és telepítése" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A new app store for GNOME with a focus on discovering and installing " "applications and addons from Flatpak remotes, particularly Flathub." msgstr "" "Egy új alkalmazásbolt GNOME-ra, amelynek fókuszában a Flatpak adattárakból, " "kifejezetten a Flathubról származó alkalmazások és kiegészítÅ‘k felfedezése " "és telepítése áll." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. " "Bazaar features a \"curated\" tab that can be configured by distributors to " "allow for a more localized experience." msgstr "" "Hangsúlyozza a Linuxos asztali rendszereket létrehozó fejlesztÅ‘k " "támogatását. A Bazár egy „válogatott†füllel is rendelkezik, amelyet a " "disztrók konfigurálhatnak, hogy lokalizáltabb élményt nyújtsanak." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:29 src/bz-application.c:506 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:54 msgid "The home view displaying Flathub apps" msgstr "A kezdÅ‘képernyÅ‘ Flathub alkalmazásokkal" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:58 msgid "Nucleus app page" msgstr "Alkalmazásoldal a Nucleus alkalmazással" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:62 msgid "Searching for Blender" msgstr "Keresés a Blenderre" #: src/bz-addons-dialog.blp:14 src/bz-full-view.blp:527 #: src/bz-installed-page.blp:132 msgid "Manage Add-ons" msgstr "KiegészítÅ‘k kezelése" #: src/bz-addons-dialog.c:88 src/bz-installed-page.blp:158 #: src/bz-transaction-view.blp:212 src/bz-window.c:1125 msgid "Remove" msgstr "Eltávolítás" #: src/bz-addons-dialog.c:95 src/bz-full-view.blp:244 #: src/bz-transaction-view.blp:186 src/bz-window.c:1103 msgid "Install" msgstr "Telepítés" #: src/bz-app-size-dialog.c:55 msgid "Of the size of human DNA" msgstr "Az emberi DNS méretéhez képest" #: src/bz-app-size-dialog.c:55 msgid "3 billion base pairs" msgstr "3 milliárd bázispár" #: src/bz-app-size-dialog.c:56 msgid "Of the Linux Kernel" msgstr "A Linux Kernelhez képest" #: src/bz-app-size-dialog.c:56 msgid "linux-6.17.tar.xz" msgstr "linux-6.17.tar.xz" #: src/bz-app-size-dialog.c:57 msgid "Of the Apollo 11 guidance computer" msgstr "Az Apollo 11 irányító számítógépéhez képest" #: src/bz-app-size-dialog.c:57 msgid "Total ROM and RAM" msgstr "A teljes ROM és RAM" #: src/bz-app-size-dialog.c:58 msgid "Of the original Super Mario Bros" msgstr "Az eredeti Super Mario Bros méretéhez képest" #: src/bz-app-size-dialog.c:58 msgid "On the NES" msgstr "A NES-en" #: src/bz-app-size-dialog.c:59 msgid "Of the size of Wikipedia" msgstr "A Wikipédia méretéhez képest" #: src/bz-app-size-dialog.c:59 msgid "Without any media" msgstr "Minden média nélkül" #: src/bz-app-size-dialog.blp:43 msgid "--- MB" msgstr "--- MB" #: src/bz-app-size-dialog.blp:53 msgid "Download Size" msgstr "Letöltési méret" #: src/bz-application.c:401 msgid "" "This functionality is currently disabled. It is recommended you download and " "install Flatseal to manage app permissions." msgstr "" "Ez a funkció jelenleg nem elérhetÅ‘. Javasoljuk, hogy telepítsd a Flatseal " "alkalmazást az alkalmazások engedélyeinek kezeléséhez." #: src/bz-application.c:465 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:466 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:481 msgid "translator-credits" msgstr "Benedek Dévényi <rdbende@proton.me>, 2025" #: src/bz-application.c:471 msgctxt "About Dialog Translator Credit" msgid "Ahmed Najmawi" msgstr "Ahmed Najmawi" #: src/bz-application.c:472 msgctxt "About Dialog Translator Credit" msgid "AtomHare" msgstr "AtomHare" #: src/bz-application.c:473 msgctxt "About Dialog Translator Credit" msgid "Azenyr" msgstr "Azenyr" #: src/bz-application.c:474 msgctxt "About Dialog Translator Credit" msgid "Goudarz Jafari" msgstr "Goudarz Jafari" #: src/bz-application.c:475 msgctxt "About Dialog Translator Credit" msgid "Jill Fiore (Lumaeris)" msgstr "Jill Fiore (Lumaeris)" #: src/bz-application.c:476 msgctxt "About Dialog Translator Credit" msgid "João Victor (Leal)" msgstr "João Victor (Leal)" #: src/bz-application.c:477 msgctxt "About Dialog Translator Credit" msgid "KiKaraage" msgstr "KiKaraage" #: src/bz-application.c:478 msgctxt "About Dialog Translator Credit" msgid "Lucosec" msgstr "Lucosec" #: src/bz-application.c:479 msgctxt "About Dialog Translator Credit" msgid "Léane GRASSER" msgstr "Léane GRASSER" #: src/bz-application.c:480 msgctxt "About Dialog Translator Credit" msgid "Marcel Mrówka (Microwave)" msgstr "Marcel Mrówka (Microwave)" #: src/bz-application.c:481 msgctxt "About Dialog Translator Credit" msgid "Peter Dave Hello" msgstr "Peter Dave Hello" #: src/bz-application.c:482 msgctxt "About Dialog Translator Credit" msgid "Pietro F." msgstr "Pietro F." #: src/bz-application.c:483 msgctxt "About Dialog Translator Credit" msgid "Sabri Ünal" msgstr "Sabri Ünal" #: src/bz-application.c:484 msgctxt "About Dialog Translator Credit" msgid "Shihfu Juan" msgstr "Shihfu Juan" #: src/bz-application.c:485 msgctxt "About Dialog Translator Credit" msgid "Shinsei" msgstr "Shinsei" #: src/bz-application.c:486 msgctxt "About Dialog Translator Credit" msgid "Vlastimil DÄ›dek" msgstr "Vlastimil DÄ›dek" #: src/bz-application.c:487 msgctxt "About Dialog Translator Credit" msgid "asen23" msgstr "asen23" #: src/bz-application.c:488 msgctxt "About Dialog Translator Credit" msgid "camegone" msgstr "camegone" #: src/bz-application.c:489 msgctxt "About Dialog Translator Credit" msgid "renner" msgstr "renner" #: src/bz-application.c:490 msgctxt "About Dialog Translator Credit" msgid "robotta" msgstr "robotta" #: src/bz-application.c:1033 msgid "Constructing Flatpak instance..." msgstr "Flatpak példány létrehozása…" #: src/bz-application.c:1050 msgid "Reusing last Flatpak instance..." msgstr "Legutóbbi Flatpak példány újrafelhasználása…" #: src/bz-application.c:1075 msgid "Flathub is not registered on this system" msgstr "A Flathub nincs beállítva ezen a rendszeren" #: src/bz-application.c:1078 msgid "" "Would you like to add Flathub as a remote? If you decline, the Flathub page " "will not be available. You can change this later." msgstr "" "Szeretnéd engedélyezni a Flathub távoli adattárat? Ha ezt nem teszed meg, a " "Flathub fül nem lesz elérhetÅ‘. KésÅ‘bb ezt bármikor megváltoztathatod." #: src/bz-application.c:1083 src/bz-update-dialog.blp:6 msgid "Later" msgstr "KésÅ‘bb" #: src/bz-application.c:1084 msgid "Add Flathub" msgstr "Flathub engedélyezése" #: src/bz-application.c:1116 #, c-format msgid "Identifying installed entries..." msgstr "Telepített tételek beazonosítása…" #: src/bz-application.c:1128 #, c-format msgid "Beginning remote entry retrieval while referencing %d blocklist(s)..." msgstr "Távoli tételek lekérésének megkezdése, %d tiltólista hivatkozásával…" #: src/bz-application.c:1276 #, c-format msgid "Receiving Entries" msgstr "Tételek fogadása" #: src/bz-application.c:1277 #, c-format msgid "%'d of %'d" msgstr "%'d/%'d" #: src/bz-application.c:1288 #, c-format msgid "Waiting for background indexing tasks to catch up..." msgstr "Várakozás a háttérben futó indexelési feladatok befejezésére…" #: src/bz-application.c:1329 #, c-format msgid "Completed initialization in %0.2f seconds" msgstr "Az indítás %0.2f másodperc alatt befejezÅ‘dött" #: src/bz-application.c:1334 src/bz-application.c:1489 msgid "Checking for updates..." msgstr "Frissítések keresése…" #: src/bz-application.c:1373 msgid "Synchronizing..." msgstr "Szinkronizálás…" #: src/bz-browse-widget.blp:11 src/bz-flathub-page.blp:19 #: src/bz-full-view.blp:10 src/bz-installed-page.blp:15 src/bz-window.blp:161 msgid "Empty" msgstr "Üres" #: src/bz-browse-widget.blp:15 msgid "No Curated Applications" msgstr "Nincsenek válogatott alkalmazások" #: src/bz-browse-widget.blp:16 msgid "" "Bazaar was not provided a curated content configuration. Contact your " "operating system's support channels for assistance." msgstr "" "A Bazaar nem talál válogatott tartalomkonfigurációt. Segítségért fordulj az " "operációs rendszer támogatási csatornáihoz." #: src/bz-browse-widget.blp:22 src/bz-flathub-page.blp:30 msgid "Browser" msgstr "BöngészÅ‘" #: src/bz-entry-inspector.blp:5 msgid "Entry Inspector" msgstr "" #: src/bz-entry-inspector.blp:76 msgid "Serialize" msgstr "" #: src/bz-entry-inspector.blp:80 msgid "Convert to JSON" msgstr "" #: src/error.c:68 msgid "An Error Occurred" msgstr "Hiba történt" #: src/error.c:89 msgid "Close" msgstr "Bezárás" #: src/error.c:90 msgid "Copy and Close" msgstr "Másolás és bezárás" #: src/bz-featured-tile.blp:89 msgid "App of the Day" msgstr "A nap alkalmazása" #: src/bz-flathub-category.c:325 msgid "Audio & Video" msgstr "Hang és videó" #: src/bz-flathub-category.c:327 msgid "Developer Tools" msgstr "FejlesztÅ‘i eszközök" #: src/bz-flathub-category.c:329 msgid "Education" msgstr "Oktatás" #: src/bz-flathub-category.c:331 msgid "Gaming" msgstr "Játék" #: src/bz-flathub-category.c:333 msgid "Graphics & Photography" msgstr "Grafika és fényképezés" #: src/bz-flathub-category.c:335 msgid "Networking" msgstr "Hálózat" #: src/bz-flathub-category.c:337 msgid "Productivity" msgstr "Produktivitás" #: src/bz-flathub-category.c:339 msgid "Science" msgstr "Tudomány" #: src/bz-flathub-category.c:341 msgid "System" msgstr "Rendszer" #: src/bz-flathub-category.c:343 msgid "Utilities" msgstr "Segédprogramok" #: src/bz-flathub-category-section.c:137 #, c-format msgid "%d applications" msgstr "%d alkalmazás" #: src/bz-flathub-category-section.c:336 #, c-format msgid "More %s" msgstr "Még több %s" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "A Flathub nincs engedélyezve" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "A Flathub adattár nem található egyik Flatpak telepítéseden sem" #: src/bz-flathub-page.blp:80 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.c:168 msgid "Trending" msgstr "Felkapott" #: src/bz-flathub-page.blp:85 src/bz-flathub-page.blp:235 #: src/bz-flathub-page.c:198 msgid "Popular" msgstr "Népszerű" #: src/bz-flathub-page.blp:90 msgid "New" msgstr "Új" #: src/bz-flathub-page.blp:95 msgid "Updated" msgstr "Frissített" #: src/bz-flathub-page.blp:141 msgid "More Trending" msgstr "Még több felkapott" #: src/bz-flathub-page.blp:151 src/bz-flathub-page.c:178 msgid "Recently Updated" msgstr "Nemrég frissített" #: src/bz-flathub-page.blp:183 msgid "More Updated" msgstr "Még több frissített" #: src/bz-flathub-page.blp:193 src/bz-flathub-page.c:188 msgid "Recently Added" msgstr "Nemrég hozzáadott" #: src/bz-flathub-page.blp:225 msgid "More New" msgstr "Még több új" #: src/bz-flathub-page.blp:267 msgid "More Popular" msgstr "Még több népszerű" #: src/bz-flathub-page.blp:356 msgid "On the go" msgstr "Útközben" #: src/bz-flathub-page.blp:368 msgid "Apps for your Linux phones and tablets" msgstr "Alkalmazások Linux telefonokra és táblagépekre" #: src/bz-flathub-page.blp:379 src/bz-flathub-page.blp:414 msgid "More Mobile apps" msgstr "Még több mobilapp" #: src/bz-flathub-page.c:208 msgid "Mobile Apps" msgstr "Mobilappok" #: src/bz-flatpak-entry.c:552 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub oldal" #: src/bz-flatpak-entry.c:573 msgctxt "Project URL Type" msgid "Project Website" msgstr "Projekt honlapja" #: src/bz-flatpak-entry.c:577 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Hiba bejelentése" #: src/bz-flatpak-entry.c:581 msgctxt "Project URL Type" msgid "FAQ" msgstr "GYIK" #: src/bz-flatpak-entry.c:585 msgctxt "Project URL Type" msgid "Help" msgstr "Segítség" #: src/bz-flatpak-entry.c:589 msgctxt "Project URL Type" msgid "Donate" msgstr "Adományozás" #: src/bz-flatpak-entry.c:595 msgctxt "Project URL Type" msgid "Translate" msgstr "Segítség a fordításban" #: src/bz-flatpak-entry.c:599 msgctxt "Project URL Type" msgid "Contact" msgstr "Kapcsolat" #: src/bz-flatpak-entry.c:603 msgctxt "Project URL Type" msgid "Source Code" msgstr "Forráskód" #: src/bz-flatpak-entry.c:609 msgctxt "Project URL Type" msgid "Contribute" msgstr "Hozzájárulás" #: src/bz-full-view.blp:14 msgid "No Results" msgstr "Nincs találat" #: src/bz-full-view.blp:15 msgid "Try a different search query" msgstr "Próbálkozz más keresÅ‘kifejezéssel" #: src/bz-full-view.blp:21 src/bz-window.blp:171 msgid "Content" msgstr "Tartalom" #: src/bz-full-view.blp:151 msgid "Verified by the original developers" msgstr "Az eredeti fejlesztÅ‘k által hitelesítve" #: src/bz-full-view.blp:178 msgid "Support" msgstr "Támogatás" #: src/bz-full-view.blp:198 msgid "Repository Star Count" msgstr "Adattár csillagszámlálója" #: src/bz-full-view.blp:228 msgid "Open" msgstr "Megnyitás" #: src/bz-full-view.blp:241 msgid "Download & Install Application" msgstr "Alkalmazás letöltése és telepítése" #: src/bz-full-view.blp:256 msgid "Uninstall Application" msgstr "Alkalmazás eltávolítása" #: src/bz-full-view.blp:271 msgid "Install Other Version" msgstr "Másik verzió telepítése" #: src/bz-full-view.blp:295 msgid "Download" msgstr "Letöltés" #: src/bz-full-view.blp:411 msgid "Downloads/mo" msgstr "Letöltés/hó" #: src/bz-full-view.c:261 msgid "---" msgstr "---" #. Translators: M is the suffix for millions, \xC2\xA0 is a non-breaking space #: src/bz-full-view.c:265 #, c-format msgid "%.2f M" msgstr "%.2f m" #. Translators: K is the suffix for thousands, \xC2\xA0 is a non-breaking space #: src/bz-full-view.c:268 #, c-format msgid "%.2f K" msgstr "%.2f e" #: src/bz-full-view.c:277 #, c-format msgid "%d downloads in the last 30 days" msgstr "%d letöltés az elmúlt 30 napban" #: src/bz-full-view.c:298 #, c-format msgid "Download size of %s" msgstr "Letöltés mérete: %s" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-full-view.c:308 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-full-view.c:316 msgid "All Ages" msgstr "Minden életkor" #: src/bz-full-view.c:318 msgid "Age Rating" msgstr "Korhatár" #: src/bz-full-view.c:326 msgid "Suitable for all ages" msgstr "Minden korosztály számára alkalmas" #: src/bz-full-view.c:328 #, c-format msgid "Suitable for ages %d and up" msgstr "%d éves kortól ajánlott" #: src/bz-full-view.c:348 msgid "Unknown" msgstr "Ismeretlen" #: src/bz-full-view.c:351 msgid "Proprietary Software" msgstr "Zárt forráskódú szoftver" #: src/bz-full-view.c:355 #, c-format msgid "Free software licensed under %s" msgstr "Szabad szoftver a(z) %s licenc alatt" #: src/bz-full-view.c:363 msgid "Free" msgstr "Szabad" #: src/bz-full-view.c:363 msgid "Proprietary" msgstr "Védett" #: src/bz-full-view.c:383 msgid "Adaptive" msgstr "Alkalmazkodó" #: src/bz-full-view.c:383 msgid "Desktop Only" msgstr "Csak asztali" #: src/bz-full-view.c:389 msgid "Works on desktop, tablets, and phones" msgstr "Működik asztali számítógépen, táblagépen és mobiltelefonon" #: src/bz-full-view.c:390 msgid "May not work on mobile devices" msgstr "Lehet, hogy nem működik mobileszközökön" #: src/bz-full-view.c:401 msgid "No URL" msgstr "Nincs URL" #: src/bz-full-view.c:419 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "Ez az alkalmazás Szabad és Nyílt Forráskódú licenccel rendelkezik, ami azt " "jelenti, hogy által a forráskód biztonsági szempontból bárki által " "ellenÅ‘rizhetÅ‘." #: src/bz-full-view.c:420 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "Ez az alkalmazás kereskedelmi licenccel rendelkezik, ami azt jelenti, hogy a " "forráskód magántulajdonban van, és független harmadik fél nem ellenÅ‘rizheti." #: src/bz-full-view.c:676 msgid "Show Less" msgstr "Kevesebb mutatása" #: src/bz-full-view.c:676 msgid "Show More" msgstr "Több mutatása" #: src/bz-hardware-support-dialog.c:69 msgid "Keyboard support" msgstr "Billentyűzet támogatás" #: src/bz-hardware-support-dialog.c:71 msgid "Requires keyboards" msgstr "Billentyűzet szükséges" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends keyboards" msgstr "Billentyűzet ajánlott" #: src/bz-hardware-support-dialog.c:73 msgid "Supports keyboards" msgstr "Billentyűzet használható" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for keyboards" msgstr "Billentyűzet támogatás ismeretlen" #: src/bz-hardware-support-dialog.c:76 msgid "Mouse support" msgstr "Egér támogatás" #: src/bz-hardware-support-dialog.c:78 msgid "Requires mice or pointing devices" msgstr "Egér vagy mutatóeszköz szükséges" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends mice or pointing devices" msgstr "Egér vagy mutatóeszköz ajánlott" #: src/bz-hardware-support-dialog.c:80 msgid "Supports mice or pointing devices" msgstr "Egér vagy mutatóeszköz használható" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for mice or pointing devices" msgstr "Egér vagy mutatóeszköz támogatás ismeretlen" #: src/bz-hardware-support-dialog.c:83 msgid "Touchscreen support" msgstr "ÉrintÅ‘képernyÅ‘ támogatás" #: src/bz-hardware-support-dialog.c:85 msgid "Requires touchscreens" msgstr "ÉrintÅ‘képernyÅ‘ szükséges" #: src/bz-hardware-support-dialog.c:86 msgid "Recommends touchscreens" msgstr "ÉrintÅ‘képernyÅ‘ ajánlott" #: src/bz-hardware-support-dialog.c:87 msgid "Supports touchscreens" msgstr "ÉrintÅ‘képernyÅ‘ használható" #: src/bz-hardware-support-dialog.c:88 msgid "Unknown support for touchscreens" msgstr "ÉrintÅ‘képernyÅ‘ támogatás ismeretlen" #: src/bz-hardware-support-dialog.c:192 msgid "Mobile support" msgstr "Mobil támogatás" #: src/bz-hardware-support-dialog.c:193 msgid "Works on mobile devices" msgstr "Működik mobileszközökön" #: src/bz-hardware-support-dialog.c:193 msgid "May not work well on mobile devices" msgstr "Lehet, hogy nem működik jól mobileszközökön" #: src/bz-hardware-support-dialog.c:198 msgid "Desktop support" msgstr "Asztali támogatás" #: src/bz-hardware-support-dialog.c:199 msgid "Works well on large screens" msgstr "Jól működik nagy kijelzÅ‘kön" #: src/bz-hardware-support-dialog.c:233 #, c-format msgid "%s works best on specific hardware" msgstr "%s csak bizonyos eszközökön működik jól" #: src/bz-hardware-support-dialog.c:240 #, c-format msgid "%s works on most devices" msgstr "%s a legtöbb eszközön működik" #: src/bz-hardware-support-dialog.blp:6 src/bz-hardware-support-dialog.blp:47 msgid "Hardware Support" msgstr "Hardver támogatás" #: src/bz-inspector.blp:5 msgid "Bazaar Inspector" msgstr "" #: src/bz-inspector.blp:22 msgid "Active Blocklists" msgstr "" #: src/bz-inspector.blp:44 msgid "Active Curated-Configs" msgstr "" #: src/bz-inspector.blp:66 msgid "All Entry Groups" msgstr "" #: src/bz-inspector.blp:69 msgid "Filter..." msgstr "" #: src/bz-inspector.blp:110 msgid "Decache and Inspect" msgstr "" #: src/bz-installed-page.blp:19 msgid "No Flatpaks Installed" msgstr "Nincs telepített Flatpak" #: src/bz-installed-page.blp:25 src/bz-window.blp:305 src/bz-window.blp:399 msgid "Installed" msgstr "Telepítve" #: src/bz-installed-page.blp:108 msgid "Support this application" msgstr "Alkalmazás támogatása" #: src/bz-installed-page.blp:185 msgid "More actions" msgstr "További lehetÅ‘ségek" #: src/bz-installed-page.blp:204 msgid "Run this application" msgstr "Alkalmazás futtatása" #: src/bz-installed-page.blp:216 msgid "Run" msgstr "Futtatás" #: src/bz-installed-page.blp:228 src/bz-installed-page.blp:239 msgid "View Store Page" msgstr "Alkalmazásoldal megnyitása" #: src/bz-installed-page.c:649 msgid "Choose an Installation" msgstr "Telepítés kiválasztása" #: src/bz-installed-page.c:652 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with? " msgstr "" "Ennek az alkalmazásnak több verziója is telepítve van. Melyikkel szeretnéd " "folytatni?" #: src/bz-installed-page.c:656 src/bz-window.c:1102 src/bz-window.c:1124 msgid "Cancel" msgstr "Mégse" #: src/bz-license-dialog.c:115 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may not be able to contribute to this app." msgstr "" "Ez az alkalmazás zárt fejlesztésű, ezért csak a fejlesztÅ‘i ismerik a belsÅ‘ " "működését. Lehetnek olyan biztonsági hiányosságai, amelyek nehezen " "észlelhetÅ‘k, illetve a működése észrevétlenül megváltozhat.\n" "\n" "Nem tudsz hozzájárulni az alkalmazás fejlesztéséhez." #: src/bz-license-dialog.c:124 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Ezt az alkalmazást egy nemzetközi közösség nyíltan fejleszti.\n" "\n" "Te is csatlakozhatsz és segíthetsz még jobbá tenni." #: src/bz-license-dialog.c:135 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the <a href=\"%s\">%s</a> license.\n" "\n" "You can participate and help make it even better." msgstr "" "Ezt az alkalmazást egy nemzetközi közösség nyíltan fejleszti, és a(z) <a " "href=\"%s\">%s</a> teszi elérhetÅ‘vé.\n" "\n" "Te is csatlakozhatsz és segíthetsz még jobbá tenni." #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Beállítások" #: src/bz-preferences-dialog.blp:23 src/bz-window.blp:48 src/bz-window.blp:337 msgid "Search" msgstr "Keresés" #: src/bz-preferences-dialog.blp:26 msgid "Free Software Only" msgstr "Csak szabad szoftver" #: src/bz-preferences-dialog.blp:27 msgid "Hide proprietary applications from search results" msgstr "Zárt forráskódú alkalmazások elrejtése a keresési eredményekbÅ‘l" #: src/bz-preferences-dialog.blp:31 msgid "Flathub Results Only" msgstr "Csak Flathub eredmények" #: src/bz-preferences-dialog.blp:32 msgid "Limit search results to applications only available on Flathub" msgstr "Keresés korlátozása a Flathubon elérhetÅ‘ alkalmazásokra" #: src/bz-preferences-dialog.blp:36 msgid "Delay Search Results" msgstr "Keresés késleltetése" #: src/bz-preferences-dialog.blp:37 msgid "Improve results performance by debouncing search terms" msgstr "" "Keresés teljesítményének javítása a keresÅ‘kifejezések pergésmentesítésével" #: src/bz-preferences-dialog.blp:42 msgid "Application Details" msgstr "Alkalmazás részletei" #: src/bz-preferences-dialog.blp:45 msgid "Display Star Count" msgstr "Csillagszámláló mutatása" #: src/bz-preferences-dialog.blp:46 msgid "Show the star count of an application's source code repository" msgstr "Az alkalmazás forráskód-adattára csillagszámának megjelenítése" #: src/bz-preferences-dialog.blp:71 msgid "Progress Bar" msgstr "FolyamatjelzÅ‘" #: src/bz-preferences-dialog.blp:72 msgid "Choose a theme for the progress bar!" msgstr "Válassz témát a folyamatjelzÅ‘ sávoknak" #: src/bz-preferences-dialog.blp:107 msgid "" "Bazaar can fetch and display the star count from an application's source " "code repository on a remote Git forge. \n" " For projects on GitHub, rate limits may cause them not to appear." msgstr "" "A Bazár letölti és megjeleníti a csillagok számát egy alkalmazás forráskód-" "adattárából a távoli Git forge-on. \n" " A GitHubon található projektek esetében a használati korlát miatt " "elÅ‘fordulhat, hogy nem mindig sikerül betölteni." #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "KiemelÅ‘szín" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Pride színek" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Lezbikus színek" #: src/bz-preferences-dialog.c:35 msgid "Transgender Pride Colors" msgstr "Transzgender színek" #: src/bz-preferences-dialog.c:36 msgid "Nonbinary Pride Colors" msgstr "Nonbináris színek" #: src/bz-preferences-dialog.c:37 msgid "Bisexual Pride Colors" msgstr "Biszexuális színek" #: src/bz-preferences-dialog.c:38 msgid "Asexual Pride Colors" msgstr "Aszexuális színek" #: src/bz-preferences-dialog.c:39 msgid "Pansexual Pride Colors" msgstr "Pánszexuális színek" #: src/bz-preferences-dialog.c:40 msgid "Aromantic Pride Colors" msgstr "Aromantikus színek" #: src/bz-preferences-dialog.c:41 msgid "Genderfluid Pride Colors" msgstr "Genderfluid színek" #: src/bz-preferences-dialog.c:42 msgid "Polysexual Pride Colors" msgstr "Poliszexuális színek" #: src/bz-preferences-dialog.c:43 msgid "Omnisexual Pride Colors" msgstr "Omniszexuális színek" #: src/bz-releases-dialog.blp:5 src/bz-releases-list.blp:26 msgid "Version History" msgstr "Verziótörténet" #: src/bz-releases-list.c:128 #, c-format msgid "Version %s" msgstr "%s verzió" #: src/bz-releases-list.c:153 msgid "No details for this release" msgstr "Nincsenek részletek ehhez a kiadáshoz" #: src/bz-search-widget.blp:69 msgid "Search Apps" msgstr "Alkalmazások keresése" #: src/bz-share-list.c:64 msgid "Copied!" msgstr "Másolva!" #: src/bz-share-list.c:116 msgid "Copy Link" msgstr "Hivatkozás másolása" #: src/bz-share-list.c:127 msgid "Open Link" msgstr "Hivatkozás megnyitása" #: src/bz-stats-dialog.blp:26 msgid "Timeline" msgstr "IdÅ‘vonal" #: src/bz-stats-dialog.blp:31 msgid "Installs:" msgstr "Telepítés:" #: src/bz-stats-dialog.blp:37 msgid "World" msgstr "Térkép" #: src/bz-transaction-manager.c:1140 #, c-format msgid "Finished in %.02f seconds" msgstr "Befejezve %.02f másodperc alatt" #: src/bz-transaction-view.blp:94 msgid "App Add-on" msgstr "Alkalmazás kiegészítÅ‘" #: src/bz-transaction-view.blp:119 msgid "Runtime" msgstr "Futtatókörnyezet" #: src/bz-transaction-view.blp:145 src/bz-transaction-view.blp:171 msgid "Install Size" msgstr "Telepített méret" #: src/bz-transaction-view.blp:199 src/bz-window.blp:350 msgid "Update" msgstr "Frissítés" #: src/bz-transaction-view.c:139 #, c-format msgid "Transferred %s so far" msgstr "Eddig átvíve: %s" #: src/bz-transaction.c:336 msgid "Pending" msgstr "FüggÅ‘ben" #: src/bz-update-dialog.blp:7 msgid "Install Now" msgstr "Telepítés most" #: src/bz-update-dialog.blp:10 msgid "Updates Are Available" msgstr "Frissítések elérhetÅ‘k" #: src/bz-update-dialog.blp:11 msgid "" "The following applications are eligible for updates. Would you like to " "install them?" msgstr "" "A következÅ‘ alkalmazások frissítésre várnak. Szeretnéd telepíteni Å‘ket?" #: src/bz-update-dialog.c:134 #, c-format msgid "" "%d runtimes and/or addons are eligible for updates. Would you like to " "install them?" msgstr "" "%d futtatókörnyezet és/vagy kiegészítÅ‘höz érhetÅ‘ el frissítés. Szeretnéd " "telepíteni ezeket?" #: src/bz-update-dialog.c:142 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "További %d futtatókörnyezet és/vagy kiegészítÅ‘ frissítve lesz." #: src/bz-window.blp:63 msgid "Go Home" msgstr "Vissza a kezdÅ‘oldalra" #: src/bz-window.blp:86 msgid "Tasks" msgstr "Feladatok" #: src/bz-window.blp:105 src/bz-window.blp:418 msgid "Toggle transaction sidebar" msgstr "Tranzakciók megjelenítése/elrejtése" #: src/bz-window.blp:141 msgid "Stop Active Tasks" msgstr "Futó feladatok leállítása" #: src/bz-window.blp:149 msgid "Clear History" msgstr "ElÅ‘zmények törlése" #: src/bz-window.blp:165 msgid "No Tasks Yet" msgstr "Nincsenek feladatok" #: src/bz-window.blp:219 src/bz-window.blp:223 msgid "Offline" msgstr "Offline" #: src/bz-window.blp:229 msgid "Loading" msgstr "Betöltés" #: src/bz-window.blp:270 msgid "Browse" msgstr "Böngészés" #: src/bz-window.blp:280 msgid "App View" msgstr "Alkalmazás nézet" #: src/bz-window.blp:295 src/bz-window.blp:392 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:325 msgid "Go Back" msgstr "Vissza" #: src/bz-window.blp:381 msgid "View curated applications" msgstr "Válogatott alkalmazások megtekintése" #: src/bz-window.blp:385 msgid "Curated" msgstr "Válogatott" #: src/bz-window.blp:389 msgid "View the latest on Flathub" msgstr "Legújabb Flathub alkalmazások megtekintése" #: src/bz-window.blp:396 msgid "View installed applications" msgstr "Telepített alkalmazások megtekintése" #: src/bz-window.blp:441 msgid "Main Menu" msgstr "FÅ‘menü" #: src/bz-window.blp:486 msgid "_Donate to Bazaar â¤ï¸" msgstr "A Bazár _támogatása â¤ï¸" #: src/bz-window.blp:491 msgid "_Refresh Content" msgstr "Ú_jratöltés" #: src/bz-window.blp:498 msgid "_Preferences" msgstr "_Beállítások" #: src/bz-window.blp:503 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: src/bz-window.blp:508 msgid "_About Bazaar" msgstr "A Bazár _névjegye" #: src/bz-window.blp:515 msgid "_Quit Bazaar" msgstr "_Kilépés" #: src/bz-window.c:827 msgid "" "The ability to inspect and install local .flatpak bundle files is coming " "soon! In the meantime, try running\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "on the command line." msgstr "" "Hamarosan elérhetÅ‘ lesz a helyi .flatpak csomagfájlok ellenÅ‘rzésének és " "telepítésének lehetÅ‘sége! Addig is próbáld meg futtatni a\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "parancsot a parancssorban." #: src/bz-window.c:967 msgid "Can't do that right now!" msgstr "Ezt most nem lehetséges!" #: src/bz-window.c:1096 #, c-format msgid "Install %s?" msgstr "%s telepítése" #: src/bz-window.c:1099 msgid "May install additional shared components" msgstr "További megosztott összetevÅ‘k telepíthetÅ‘k" #: src/bz-window.c:1118 #, c-format msgid "Remove %s?" msgstr "Remove %s?" #: src/bz-window.c:1121 msgid "Settings & user data will be kept" msgstr "A beállítások és a felhasználói adatok megmaradnak" #: src/bz-window.c:1289 msgid "Resume Current Tasks" msgstr "Feladatok folytatása" #: src/bz-window.c:1295 msgid "Pause Current Tasks" msgstr "Feladatok szüneteltetése" #: src/bz-world-map.c:523 #, c-format msgid "%s: %'u downloads" msgstr "%s: %'u downloads" #: src/gtk/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "Ãltalános" #: src/gtk/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "KeresÅ‘ablak megnyitása" #: src/gtk/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Beállítások megnyitása" #: src/gtk/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Refresh" msgstr "Újratöltés" #: src/gtk/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "TranzakciókezelÅ‘ megjelenítése/elrejtése" #: src/gtk/shortcuts-dialog.blp:29 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Gyorsbillentyűk" #: src/gtk/shortcuts-dialog.blp:34 msgctxt "shortcut window" msgid "Quit" msgstr "Kilépés" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/id.po������������������������������������������������������������������0000664�0000000�0000000�00000316317�15240005042�0016723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Indonesian translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # # SPDX-FileCopyrightText: 2025 asen23 <andersenlim23@gmail.com> # KiKaraage <kikaraage@tuta.io>, 2025-2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-07-03 15:21+0700\n" "PO-Revision-Date: 2026-07-03 17:38+0700\n" "Last-Translator: KiKaraage <kikaraage@tuta.io>\n" "Language-Team: Indonesian\n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 50.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:386 src/bz-window.c:387 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Tambah, hapus atau perbarui aplikasi Flatpak pada komputer ini" # Added "Aplikasi" and "Pusat Aplikasi" (App Center) to search queries #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Sistem;PackageManager;Discover;Flatpak;Aplikasi;Toko;PerangkatLunak;PusatAplikasi;ManajerPaket;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "Jendela Baru" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Temukan dan pasang aplikasi" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Toko aplikasi Linux yang cepat dan modern, berfokus pada kemudahan menemukan " "serta memasang aplikasi dan modul tambahan Flatpak, terutama dari Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Pasang beberapa aplikasi sekaligus dan lanjut menjelajah" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Dapat melihat izin aplikasi secara mudah" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Masuk dengan Flathub untuk lihat dan kelola aplikasi favoritmu" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Cari aplikasi langsung dari bilah pencarian GNOME" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:787 msgid "The Bazaar Contributors" msgstr "Kontributor Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Tampilan muka dengan daftar aplikasi dari Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Tampilan halaman detail aplikasi" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Halaman pustaka aplikasi" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Tampilan pencarian aplikasi" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Tampilan kategori aplikasi" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Berhenti Menerima Pembaruan" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Hapus" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Pasang" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Kelola Modul Tambahan" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Tiada Modul Tambahan Nampak" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Opsi saringan Anda saat ini menyembunyikan semua modul tambahan. Coba atur " "ulang kembali." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Halaman Modul Tambahan" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "Unduhan/Bulan" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Berhenti Menerima Pembaruan Utama" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Modul tambahan ini menggunakan tempokerja (runtime) yang sudah tidak " "menerima pembaruan maupun perbaikan keamanan, dan kemungkinan tidak aman " "untuk digunakan." #: src/bz-addons-dialog.c:333 #, c-format msgid "Add-on for %s" msgstr "Modul Tambahan untuk %s" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:626 msgid "Show Less" msgstr "Sembunyikan" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:626 src/bz-section-view.blp:72 msgid "Show More" msgstr "Tampilkan Lebih Banyak" #: src/bz-addons-dialog.c:397 msgid "Download Stats" msgstr "Statistik Unduhan" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Peringkat Usia" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Kekerasan (Kartun)" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Tidak ada info mengenai penggambaran kekerasan berbentuk kartun" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Kekerasan (Fantasi)" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Tidak ada info mengenai penggambaran kekerasan berbentuk fantasi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Kekerasan (Nyata)" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Tidak ada info mengenai penggambaran kekerasan realistik" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Kekerasan Menggambarkan Pertumpahan Darah" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Tidak ada info mengenai penggambaran pertumpahan darah" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Kekerasan Seksual" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Tidak ada info mengenai penggambaran kekerasan seksual" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Minuman Keras" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "" "Tidak ada info mengenai penggambaran/penyebutan terkait minuman beralkohol" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Narkotika" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "" "Tidak ada info mengenai referensi terkait narkotika dan obat-obatan terlarang" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Rokok" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Tidak ada info mengenai referensi terkait rokok " #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Ketelanjangan" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Tidak ada info mengenai segala bentuk ketelanjangan" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Tema Seksual" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "Tidak ada info mengenai segala bentuk referensi atau penggambaran seksual " #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Kata-Kata Kasar" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Tidak ada info mengenai segala penggunaan kata-kata kasar" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Humor Tidak Pantas" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Tidak ada info mengenai penggunaan humor yang tidak pantas" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Diskriminasi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Tidak ada info mengenai segala penggunaan bahasa yang diskriminatif" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Iklan" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Tidak ada info mengenai semua bentuk iklan" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Judi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "" "Tidak ada info mengenai segala penyebutan dan penggambaran terkait judi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Jual Beli" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Tidak ada info mengenai kemampuan transaksi atau pembelian" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Obrolan Antar Pengguna" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Tidak ada info mengenai cara melakukan obrolan dengan pengguna lain" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Panggilan Antar Pengguna" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "" "Tidak ada info mengenai cara melakukan panggilan suara dengan pengguna lain" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Rincian Kontak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Tidak ada info terkait tindakan berbagi nama pengguna di media sosial atau " "alamat email" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Informasi Identifikasi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Tidak ada info terkait tindakan membagikan info pengguna dengan pihak ketiga " #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Berbagi Lokasi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "Tidak ada info mengenai tindakan berbagi lokasi dengan pengguna lain" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostitusi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Tidak ada info mengenai penyebutan referensi terkait prostitusi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Zina" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Tidak ada info mengenai penyebutan referensi terkait perzinaan" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Karakter yang Diseksualisasi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Tidak ada info mengenai karakter yang diseksualisasikan" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Penistaan" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Tidak ada info mengenai penyebutan referensi terkait penistaan" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Jasad Manusia" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Tidak ada info mengenai terlihatnya sisa-sisa jasad manusia" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Perbudakan" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Tidak ada info mengenai penyebutan referensi terkait perbudakan" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Tidak memuat referensi terkait obat-obatan terlarang" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Tidak memuat penggunaan kata-kata kasar dan umpatan" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Tidak memuat iklan atau transaksi keuangan" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Tidak memuat konten seksual" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Tidak memuat kemampuan obrolan tanpa moderasi" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Tidak memuat konten kekerasan" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Obat Terlarang" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Kata-Kata Kasar" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Uang" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Sosial" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Kekerasan" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Semua" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "Peringkat usia untuk %s tidak diketahui" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s cocok untuk semua usia" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s diperbolehkan untuk usia balita" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s diperbolehkan untuk usia anak-anak" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s diperbolehkan untuk usia remaja" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s diperbolehkan untuk usia dewasa" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s diperbolehkan untuk usia %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Folder sistem %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Subfolder beranda %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Folder sistem utama" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Konfigurasi sistem utama dari /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Subfolder desktop %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Folder desktop" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Subfolder dokumen %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Folder dokumen" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Subfolder musik %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Folder musik" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Subfolder gambar %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Folder gambar" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Subfolder Berkas Publik %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Folder Berkas Publik" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Subfolder video %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Folder video" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Subfolder templat %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Folder templat" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Subfolder cache pengguna %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Folder cache pengguna" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Subfolder konfigurasi pengguna %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Folder konfigurasi pengguna" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Subfolder data pengguna %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Folder data pengguna" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Subfolder tempokerja pengguna %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Folder tempokerja pengguna" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Akses sistem file ke %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Jalur sistem file tidak diketahui" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "Ukuran Unduh" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "Ukuran Terpasang" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "Ukuran yang diunduh dari internet" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "Ukuran Tersimpan" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "Buka folder data pengguna" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "Data Pengguna" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "Cache, konfigurasi, dan data aplikasi lainnya" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "Cache" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "Data cache temporer" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "Bersihkan cache" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Ukuran Tempokerja Terpasang" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Ukuran Unduh Tempokerja" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "Nihil" #: src/bz-app-size-dialog.c:226 msgid "App Size" msgstr "Ukuran Aplikasi" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Terverifikasi" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 #: src/bz-releases-list.c:206 msgid "Installed" msgstr "Terpasang" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:790 msgid "translator-credits" msgstr "KiKaraage <kikaraage@tuta.io>, 2025" #: src/bz-application.c:800 msgid "Special Thanks" msgstr "Terima Kasih Khusus" #: src/bz-application.c:858 msgid "Logged Out Successfully!" msgstr "Akun Berhasil Dikeluarkan!" #: src/bz-application.c:1038 msgid "Ubuntu Troubles!" msgstr "Masalah dengan Ubuntu!" #: src/bz-application.c:1041 msgid "" "The more recent versions of Ubuntu have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version of " "Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Versi terbaru Ubuntu telah merubah peraturan keamanan umum, sehingga " "instalasi aplikasi tidak dapat dilakukan melalui versi Flatpak pada Bazaar. " "Saat ini Anda dapat memasang ulang Bazaar dengan\n" "\n" "<tt>sudo apt install bazaar<tt>\n" "\n" "Kemudian Anda dapat menghapus versi Flatpak ini dengan\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1047 msgid "Continue Anyway" msgstr "Tetap Pasang" #: src/bz-application.c:1063 msgid "Performing setup…" msgstr "Melakukan pengaturan..." #: src/bz-application.c:1155 msgid "Set Up System Flathub?" msgstr "Atur Flathub pada Sistem?" #: src/bz-application.c:1158 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub belum diatur sebagai sumber Flatpak pada sistem ini. Bazaar " "membutuhkan Flathub terkonfigurasi sebagai sumber Flatpak sistem untuk " "mencari dan memasang aplikasi.\n" "\n" "Anda masih dapat menggunakan Bazaar untuk mencari dan menghapus aplikasi " "terpasang." #: src/bz-application.c:1165 msgid "Set Up Flathub?" msgstr "Atur Flathub?" #: src/bz-application.c:1168 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub belum diatur pada sistem ini. Anda tidak dapat mencari dan memasang " "aplikasi lewat Bazaar jika Flathub belum tersedia.\n" "\n" "Anda masih dapat menggunakan Bazaar untuk mencari dan menghapus aplikasi " "terpasang." #: src/bz-application.c:1174 msgid "Later" msgstr "Nanti" #: src/bz-application.c:1175 msgid "Set Up Flathub" msgstr "Atur Flathub" #: src/bz-application.c:1699 msgid "A backend error occurred" msgstr "Terjadi kegagalan latar belakang" #: src/bz-application.c:1899 src/bz-application.c:4114 msgid "Refreshing…" msgstr "Memuat ulang..." #: src/bz-application.c:2063 src/bz-application.c:4112 #, c-format msgid "Loading %d apps…" msgstr "%d aplikasi dimuat..." #: src/bz-application.c:2116 msgid "Failed to open file" msgstr "Gagal membuka berkas" #: src/bz-application.c:2237 msgid "An initialization error occurred" msgstr "Terjadi kegagalan initialisasi" #: src/bz-application.c:2631 msgid "Checking for updates…" msgstr "Memeriksa pembaruan..." #: src/bz-application.c:2687 msgid "Failed to check for updates" msgstr "Gagal memeriksa pembaruan" #: src/bz-application.c:3824 msgid "Malformed Link" msgstr "Format Tautan Salah" #: src/bz-application.c:3825 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Tautan untuk membuka aplikasi ini memiliki format kapitalisasi yang salah, " "dan mungkin tak berfungsi optimal di masa depan.\n" "\n" "Hal ini kemungkinan disebabkan oleh terkirimnya ID aplikasi yang tidak tepat " "oleh KRunner" #: src/bz-application.c:3833 msgid "Could not find app" msgstr "Tidak dapat mencari aplikasi" #: src/bz-application.c:3864 msgid "Failed to load metainfo" msgstr "Gagal memuat berkas metainfo" #: src/bz-application.c:4116 msgid "Writing to cache…" msgstr "Menulis cache..." #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Tunjukkan Semua" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Semua \"%s\"" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d Aplikasi" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Gagal Memuat Artikel" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Pemasangan Sekaligus" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Dependensi tambahan mungkin membutuhkan ruang tambahan" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Pemasangan aplikasi ini mungkin membutuhkan sumber aplikasi tambahan. " "Aplikasi lain dari sumber yang sama akan muncul di Bazaar.\n" "\n" "Tambahkan sumber aplikasi ini hanya jika Anda yakin mempercayainya." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "Sukses Terpasang!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Buka" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Lihat Detail Aplikasi" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Telah Terpasang" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Pemasangan Gagal" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Ukuran tidak diketahui" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Sekitar %s untuk memasang" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Tidak ada izin khusus" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fjt" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*frb" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d unduhan dalam sebulan terakhir" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s Tempokerja (Runtime)" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Ukuran Unduh" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Info ukuran apl tidak tersedia" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Ukuran unduhan %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Semua Usia" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Info panduan usia tidak tersedia" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Cocok untuk semua usia" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Cocok untuk usia %d ke atas" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "Tidak Diketahui" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Aplikasi bebas di bawah lisensi %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Aplikasi bebas" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Aplikasi dengan hak cipta khusus" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Lisensi Khusus: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Aplikasi Bebas" #: src/context-tile-callbacks.c:288 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "Proprietari" #: src/context-tile-callbacks.c:290 src/bz-license-dialog.c:135 msgid "Special License" msgstr "Lisensi Khusus" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "Adaptif" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "Hanya Desktop" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "Bekerja di desktop, tablet dan ponsel" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Mungkin tidak bekerja optimal di ponsel" #: src/context-tile-callbacks.c:400 src/bz-safety-dialog.blp:79 msgid "Safe" msgstr "Aman" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Risiko Rendah" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Risiko Sedang" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Risiko Tinggi" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Kosong" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "Pilihan Belum Tersedia" #: src/bz-curated-view.blp:30 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Info kurasi tidak tersedia pada sistem ini. Anda masih dapat menjelajahi " "aplikasi dari Flathub" #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "Jelajah Flathub" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "Tidak Ada Jaringan" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Peramban" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Tidak Terverifikasi" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Informasi pengembang tidak tersedia." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "Kepemilikan ID aplikasi %s belum diverifikasi, kemungkinan dikemas dalam " "skala komunitas." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "Kepemilikan ID aplikasi %s telah diverifikasi secara manual \n" " tim Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "Kepemilikan ID aplikasi %1$s telah diverifikasi oleh <b>%2$s</b> di <b>%3$s</" "b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "Kepemilikan ID aplikasi %1$s telah diverifikasi menggunakan %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Kepemilikan ID aplikasi %s telah diverifikasi." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Catatan Rilis Lengkap" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "Versi ini dapat rilis karena dukungan Anda!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Saya cinta Bazaar, namun saya tidak dapat mengembangkannya sendiri. Jika " "Anda ingin membantu pengembangan lebih lanjut, mari berdonasi lewat Ko-fi:" #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Donasi ke Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Apa Yang Baru di %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Dirilis pada %-e %B %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Pilih Pemasangan" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Anda telah memasang beberapa versi aplikasi ini. Versi mana yang ingin Anda " "gunakan?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Batal" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Hanya untuk pengguna ini" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "pengguna ini" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "semua pengguna" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 #: src/bz-safety-dialog.blp:98 msgid "Details" msgstr "Rincian" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Salin" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:415 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Tersalin!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Jumlah Favorit" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Gagal memperbarui daftar favorit" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Masuk dengan Flathub dan kelola aplikasi favorit" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Masuk" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:348 msgid "Favorites" msgstr "Aplikasi Favorit" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Pasang Semua" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "Memuat" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Tidak Ada Favorit" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Aplikasi yang Anda tandai sebagai favorit akan muncul di sini" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Dukung Aplikasi Ini" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Hapus dari Favorit" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Gagal melepas status favorit" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Sebelumnya" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Selanjutnya" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Penyunting" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mixer" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Musik" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Pemutar" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Perekam" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Pengurut" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Pengontrol" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Emulasi" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Aksi" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Petualangan" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arkade" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Blok" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Papan" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Kartu" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Anak-Anak" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Logika" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Bermain Peran" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Penembak" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulasi" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Olahraga" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Strategi" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Peramban Web" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Obrolan" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Surat" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Berbagi Berkas" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Audio & Video" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Putar Media" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Apl Audio & Video Lain" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Alat Pengembangan" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Kembangkan" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Apl Pengembangan Lain" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Edukasi" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Belajar" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Apl Edukasi Lain" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Permainan" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Bermain" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Permainan Lainnya" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafis & Fotografi" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Berkreasi" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Apl Grafis & Foto Lain" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Jaringan" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Apl Jaringan Lain" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Produktivitas" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Bekerja" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Apl Produktivitas Lain" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Ilmu Pengetahuan" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Apl Ilmu Pengetahuan Lain" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Sistem" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Apl Sistem Lain" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Utilitas" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "Alat" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Apl Utilitas Lain" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Sedang Tren" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Aplikasi Tren Lainnya" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "Populer" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Apl Populer Lainnya" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Baru Saja Rilis" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Baru" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Apl Baru Lainnya" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Baru Dimutakhirkan" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Diperbarui" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Apl Mutakhir Lainnya" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Untuk Ponsel" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Apl Ponsel Lainnya" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Apl Adwaita Lainnya" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "Aplikasi KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Apl KDE Lainnya" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Permainan" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "Permainan Lainnya" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "Emulator" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Emulator Lainnya" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "Peluncur" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Peluncur Permainan Lainnya" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Alat Permainan" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Alat Permainan Lainnya" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub Belum Ditambahkan" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Remote Flathub tidak ditemukan pada seluruh pemasangan Flatpak Anda" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub Tidak Tersedia" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Tidak Dapat Menjangkau Flathub" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Anda masih dapat mencari dan mengelola aplikasi." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Cari Aplikasi" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Tautkan Kembali" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Aplikasi Hari Ini" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "Di Mana Saja" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "Aplikasi untuk ponsel dan tablet Linux Anda" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "Apl Ponsel Lainnya" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "Kita ♥​ Main" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "Permainan dan aplikasi untuk memainkan judul-judul favoritmu" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 #: src/bz-library-page.blp:82 msgid "No Results" msgstr "Tidak Ada Hasil" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Coba gunakan kata kunci lainnya" #: src/bz-full-view.blp:47 msgid "Content" msgstr "Konten" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Ini merupakan pratinjau lokal, beberapa detail mungkin berbeda dari entri " "daftar setelah terbit" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "Pratinjau Tampilan Toko" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "_Dukung" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Aplikasi ini menggunakan tempokerja (runtime) yang sudah tidak menerima " "pembaruan maupun perbaikan keamanan. Aplikasi ini mungkin tidak aman saat " "digunakan." #: src/bz-full-view.blp:539 msgid "Trash Data" msgstr "Buang Data" #: src/bz-full-view.blp:602 msgid "Add-ons" msgstr "Modul Tambahan" #: src/bz-full-view.blp:637 msgid "More Add-Ons" msgstr "Lebih Banyak Modul Tambahan" #: src/bz-full-view.blp:648 msgid "Links" msgstr "Tautan" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Tidak ada URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Aplikasi ini memiliki lisensi FLOSS, sehingga kode sumbernya dapat diaudit " "untuk memastikan keamanannya." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Aplikasi ini memiliki lisensi proprietari, dikembangkan secara tertutup " "dengan kode sumber aplikasi yang tidak bisa diaudit secara independen." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Aplikasi Lainnya" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Aplikasi Lain dari %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Jelajah lebih dari pengembang ini" #: src/bz-full-view.c:217 src/bz-full-view.c:317 #, c-format msgid "Other Apps by %s" msgstr "Jelajah lebih dari %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "%s sudah tidak terpasang, namun masih memiliki <b>%s</b> data tersimpan." #: src/bz-full-view.c:319 msgid "Other Apps" msgstr "Aplikasi Lain" #: src/bz-full-view.c:321 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d Aplikasi" #: src/bz-full-view.c:506 src/bz-user-data-tile.c:144 msgid "Failed to Remove User Data" msgstr "Gagal Menghapus Data Pengguna" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Dukungan Perangkat" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Pintasan papan tik" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Membutuhkan papan tik" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Direkomendasikan menggunakan papan tik" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Mendukung papan tik" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Dukungan papan tik tidak diketahui" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Dukungan tetikus" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Membutuhkan tetikus atau alat penunjuk" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Direkomendasikan menggunakan tetikus atau alat penunjuk" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Mendukung tetikus atau alat penunjuk" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Dukungan untuk tetikus atau alat penunjuk tidak diketahui" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Dukungan layar sentuh" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Membutuhkan layar sentuh" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Direkomedasikan menggunakan layar sentuh" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Mendukung layar sentuh" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Dukungan untuk layar sentuh tidak diketahui" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Dukungan ponsel" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Bekerja di ponsel" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Mungkin tidak bekerja optimal di ponsel" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Dukungan desktop" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Bekerja optimal di layar lebar" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s bekerja optimal pada perangkat tertentu" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s bekerja baik pada sebagian besar perangkat" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Buka" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Hapus Pemasangan Aplikasi" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Hapus" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Perbarui" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Hapus" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Pasang %s dari %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Pasang %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Batal" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Membatalkan" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Tombol Sumbang" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "Cari aplikasi terpasang" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "Bersihkan pencarian" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "Tidak Ada Aplikasi Tersedia" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "Coba Cari di Toko" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:114 msgid "Library" msgstr "Pustaka" #: src/bz-library-page.blp:129 msgid "Pending Updates" msgstr "Pembaruan Tertunda" #: src/bz-library-page.blp:156 msgid "Downloads" msgstr "Unduhan" #: src/bz-library-page.blp:199 msgid "Recently Uninstalled" msgstr "Baru Dihapus" #: src/bz-library-page.blp:250 msgid "Clear Finished Tasks" msgstr "Bersihkan Transaksi Lama" #: src/bz-library-page.blp:277 msgid "Sort Options" msgstr "Opsi Saring" #: src/bz-library-page.blp:336 msgid "Sort By" msgstr "Urutkan" #: src/bz-library-page.blp:350 msgid "Name" msgstr "Nama" #: src/bz-library-page.blp:356 msgid "Size" msgstr "Ukuran" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Tidak ada hasil yang cocok untuk \"%s\" dari aplikasi terpasang" #: src/bz-library-page.c:193 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u Pembaruan Tersedia" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u Aplikasi Terpasang" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Mari Berpartisipasi" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Cek Selengkapnya" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Lisensi Tidak Diketahui" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Dibangun Bersama" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Aplikasi ini dikembangkan secara terbuka oleh komunitas dari seluruh dunia.\n" "\n" "Anda dapat berpartisipasi dan ikut membuatnya lebih baik." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Lisensi aplikasi ini tidak diketahui" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Aplikasi ini dikembangkan secara terbuka oleh komunitas dari seluruh dunia, " "dan dirilis di bawah lisensi %s.\n" "\n" "Anda dapat berpartisipasi membuat aplikasi ini lebih baik." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Aplikasi ini tidak dikembangkan secara terbuka, sehingga hanya pihak " "pengembang yang memahami penuh cara kerjanya. Pengawasan keamanan aplikasi " "ini mungkin lebih sulit, dan statusnya dapat berubah sewaktu-waktu.\n" "\n" "Anda mungkin tidak dapat berkontribusi pada aplikasi ini." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Aplikasi ini dikembangkan di bawah lisensi khusus %s.\n" "\n" "Anda mungkin dapat atau tidak dapat berkontribusi pada aplikasi ini." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Lisensi" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Hubungkan ke Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Terjadi Kesalahan" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Masuk untuk sinkronkan aplikasi favorit pada semua perangkat Anda" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Selesai" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Halo, %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "Pilih Berkas Metainfo" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Berkas Metainfo" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "Pilih Ikon (Opsional)" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Berkas Gambar" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Pratinjau" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Preferensi" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "Koneksi jaringan dibatasi — sinkronisasi data otomatis saat ini dijeda" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Segarkan Langsung" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Saringan Konten" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Sembunyikan Aplikasi Sumber Tertutup" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary apps when browsing and searching" msgstr "Hanya tampilkan aplikasi bersumber terbuka pada hasil cari/jelajah" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Hanya Tampilkan Aplikasi Flathub" #: src/bz-preferences-dialog.blp:40 msgid "Limit search and browse results to apps only available on Flathub" msgstr "Batasi hasil cari/jelajah hanya pada aplikasi dari Flathub" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "Hanya Tampilkan Apl Terverifikasi" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Sembunyikan aplikasi tanpa verifikasi Flathub" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "Sembunyikan Aplikasi Tanpa Dukungan" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "Sembunyikan aplikasi yang sudah tidak didukung oleh para pengembangnya" #: src/bz-preferences-dialog.blp:55 msgid "Progress Bar Theme" msgstr "Tema Bilah Kemajuan" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Warna Aksen" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Warna Kebanggaan" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Warna Bangga Lesbian" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Warna Bangga Homoseksual Pria" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Warna Bangga Transgender" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Warna Bangga Nonbiner" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Warna Bangga Biseksual" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Warna Bangga Aseksual" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Warna Bangga Panseksual" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Warna Bangga Aromantik" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Warna Bangga Fluiditas Gender " #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Warna Bangga Poliseksual" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Warna Bangga Omniseksual" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Warna Bangga Aromantik-Aseksual" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Warna Bangga Agender" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Warna Bangga Genderqueer" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Warna Bangga Interseks" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Warna Bangga Demigender" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Warna Bangga Biromantik" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Warna Bangga Disabilitas" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Warna Bangga Waria" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Warna Bangga Netrois" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Riwayat Versi" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Riwayat Versi" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Hari Ini" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Kemarin" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d hari lalu" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d minggu lalu" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d bulan lalu" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d tahun lalu" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Versi %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Tidak ada detail untuk rilisan ini" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Info Lebih Lanjut" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Bongkar" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Pasang" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Izin Tidak Jelas" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Izin aplikasi ini tidak diketahui" #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Tidak Ada Izin" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Aplikasi ini sepenuhnya terisolasi" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Akses Jaringan" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Dapat mengakses internet" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Tidak Ada Akses Jaringan" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Tidak dapat mengakses internet" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Akses Perangkat Pengguna" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Dapat mengakses perangkat seperti kamera atau pengontrol mainan" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Tidak Ada Akses Perangkat Pengguna" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Tidak dapat mengakses perangkat seperti kamera atau pengontrol mainan" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Akses Perangkat Masukan" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Dapat mengakses perangkat masukan" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Akses Mikrofon dan Pemutaran Suara" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "Dapat mengakses mikrofon dan memutar suara tanpa permintaan izin" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Akses Perangkat Sistem" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "Dapat mengakses perangkat sistem yang membutuhkan izin lebih lanjut" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Akses Konten Layar" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Dapat mengakses konten dari layar, termasuk jendela aplikasi lain" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Sistem Jendela Lawas" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Selalu menggunakan sistem jendela lawas X11" #: src/safety-calculator.c:161 src/bz-safety-dialog.blp:31 msgid "Arbitrary Permissions" msgstr "Izin Sewenang-wenang" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Dapat memperoleh izin sewenang-wenang" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Akses Konfigurasi Pengguna" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Dapat mengakses dan mengubah konfigurasi pengguna" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Akses Baca/Tulis Penuh pada Sistem Berkas" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "" "Memiliki akses baca dan tulis untuk semua data pada sistem perangkat ini" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Akses Baca/Tulis Direktori Rumah" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "" "Memiliki akses baca dan tulis untuk semua data pada direktori Rumah " "perangkat ini" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Akses Baca Penuh dalam Sistem Berkas" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Memiliki akses baca untuk semua data pada sistem perangkat ini" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Akses Baca Direktori Rumah" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "" "Memiliki akses baca untuk semua data pada direktori Rumah perangkat ini" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Akses Baca/Tulis Folder Unduhan" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "" "Memiliki akses baca dan tulis untuk semua data pada direktori Unduhan " "perangkat ini" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Akses Baca Folder Unduhan" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Memiliki akses baca untuk semua data di direktori Unduhan Anda" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Memiliki akses baca dan tulis untuk semua data pada direktori ini" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Memiliki akses baca untuk semua data pada direktori ini" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Tidak Ada Akses Sistem Berkas" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Tidak dapat mengakses sistem berkas sama sekali" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Menggunakan Layanan Sistem" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Dapat meminta data dari layanan sistem di luar portal XDG" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Menggunakan Layanan Sesi" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Dapat meminta data dari layanan sesi di luar portal XDG" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Tidak Ada Akses Layanan" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Tidak dapat mengakses layanan sistem atau sesi non-portal sama sekali" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Pengembang Terverifikasi" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "Pengembang aplikasi ini sudah terverifikasi oleh Flathub" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Kode Proprietari" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Kode sumber aplikasi ini tidak bersifat publik, sehingga aplikasi ini tidak " "dapat diaudit secara independen dan mungkin tidak aman" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Kode Dapat Diaudit" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Kode sumber aplikasi ini bersifat publik dan dapat diaudit secara " "independen, sehingga kemungkinan besar aplikasi ini aman" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Menggunakan Layanan Sistem %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Menggunakan Layanan Sesi %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Menggunakan Layanan %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Dapat melihat layanan di luar portal XDG" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Dapat berkomunikasi dengan layanan di luar portal XDG" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Dapat memiliki layanan di luar portal XDG" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Integrasi Menu Global" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Dapat menampilkan opsi aplikasi pada bilah menu global" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Integrasi Pengaturan KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Dapat mendeteksi ketika terdapat perubahan konfigurasi desktop KDE" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Pengaturan Global KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Dapat membaca preferensi desktop KDE, seperti font dan tema warna" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Layanan Penyimpanan Sandi" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Dapat menyimpan dan mengambil kata sandi menggunakan penyimpanan kunci sistem" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Layanan Notifikasi Desktop" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Dapat mengirim notifikasi desktop" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Integrasi Baki Sistem" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Dapat menampilkan ikon pada baki sistem" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Integrasi KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "" "Dapat berinteraksi dengan perangkat yang terkoneksi melalui KDE Connect" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Aplikasi ini memiliki izin yang secara tidak langsung memungkinkannya " "mendapatkan <b>izin sewenang-wenang</b>, melewati isolasi Flatpak.\n" "\n" "Maka aplikasi ini dapat <b>melakukan aksi apapun tanpa isolasi</b>, seperti " "mengakses berkas Anda atau berkomunikasi melalui jaringan internet.\n" "\n" "Anda dapat melihat detail izin lainnya untuk mendapatkan gambaran apa saja " "yang dapat dilakukan aplikasi ini." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "Lihat Izin Lainnya" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "ID Aplikasi" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Aplikasi ini menggunakan versi platform aplikasi (SDK) usang dan mungkin " "memiliki gangguan atau kerentanan keamanan yang tak diperbaiki." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "Keamanan" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s aman untuk dipasang" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s tidak memiliki izin berbahaya" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s mungkin aman untuk dipasang" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s mungkin tidak aman untuk dipasang" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s tidak aman untuk dipasang" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Kembali" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Tangkapan Layar Sebelumnya" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Tangkapan Layar Selanjutnya" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Salin Gambar" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Kembalikan Skala Tampilan" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Perkecil Tampilan" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Perbesar Tampilan" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Karosel Tangkapan Layar" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Tidak Ada Tangkapan Layar" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Tampilkan Tangkapan Layar" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Tangkapan Layar %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Tangkapan Layar %u" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "Saring" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Terverifikasi" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Bebas/Terbuka" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Tidak _Kedaluwarsa" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Sembunyikan aplikasi tanpa dukungan" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Ramah Telepon" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategori" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "Cari Aplikasi dan Permainan" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "Saringan Pencarian" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "Bersihkan Pencarian" #: src/bz-search-page.blp:209 msgid "Browse Categories" msgstr "Jelajahi Kategori" #: src/bz-search-page.blp:245 msgid "Categories Unavailable" msgstr "Kategori Tidak Tersedia" #: src/bz-search-page.blp:246 msgid "Search for apps using the search bar above." msgstr "Cari aplikasi menggunakan bilah pencarian di atas. " #: src/bz-search-page.blp:364 msgid "No Applications Found" msgstr "Tidak Ada Aplikasi Tersedia" #: src/bz-search-page.c:248 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Tidak ada hasil untuk \"%s\" di Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Video" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Perkantoran" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Kalender" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Komunikasi" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Seni Lukis" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulator" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Halaman Flathub" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Situs Web Proyek" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Pelacak Masalah" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "Pertanyaan Jamak" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Bantuan" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Sumbang" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Terjemahkan" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Kontak" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Kode Sumber" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Berkontribusi" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Berkas Manifes" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Salin Tautan" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Linimasa" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Jumlah Pemasangan:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Dunia" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Sejak 15/4/2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM Pemasangan Total" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2frb Pemasangan Total" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d Pemasangan Total" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Tidak Ada Hasil" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Pencarian gagal" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Simpan Data Pengguna" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Izinkan pemulihan data & pengaturan personal" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Hapus Semua Data" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Hapus permanen data aplikasi untuk menghemat ruang" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Pasang %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Pilih versi pemasangan. Mungkin membutuhkan pemasangan komponen tambahan" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Mungkin membutuhkan pemasangan komponen tambahan" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Batal" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Pasang" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Hapus %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Pilih versi aplikasi yang akan dihapus." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Setelah dihapus, aplikasi %s tidak akan bisa digunakan." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "\"%s\" memiliki risiko tinggi" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Aplikasi ini memiliki akses penuh pada sistem Anda, termasuk semua <b>file, " "riwayat peramban, kata sandi tersimpan</b>, dan data lainnya. Aplikasi ini " "juga memiliki akses internet, yang memungkinkannya mengirim data Anda ke " "pihak luar. \n" "\n" "Karena kode sumbernya tidak terbuka, aplikasi ini tidak dapat diaudit " "terkait penggunaan izin-izin tersebut." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Aplikasi ini menggunakan sistem jendela lawas X11, yang memungkinkannya " "<b>merekam semua penekanan tombol, mengambil tangkapan layar, dan memantau " "aplikasi lain</b>. Aplikasi ini juga memiliki akses internet, yang " "memungkinkannya mengirim data Anda ke pihak luar.\n" "\n" "Karena kode sumbernya tidak terbuka, aplikasi ini tidak dapat diaudit " "terkait penggunaan izin-izin tersebut." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Tetap Pasang" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Gagal memuat dialog" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Semua aplikasi sudah terpasang." #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Ya" # %u is the number of apps to install, so the strings might have singular and plural versions depend on your language. #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Pasang %u Aplikasi?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Aplikasi berikut akan dipasang, termasuk komponen tambahan jika tersedia" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d komponen tambahan akan dipasang." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Selain itu, komponen tambahan juga akan dipasang." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Pasang Semua" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Selesai dalam %.02f detik" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Modul Aplikasi" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Tempokerja (Runtime)" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "Dalam Antrian" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Selesai" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Dibatalkan" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Terjadi Kesalahan" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Batalkan Proses" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Lihat Rincian" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Tampilkan Info Galat" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s Bebas" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Terjadi Kegagalan" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Ditunda" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Perbarui Semua" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u Tempokerja Baru" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Kelola Sisa Data Pengguna" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "Data Pengguna Tidak Ditemukan" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "Data Pengguna" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "Hapus Data Pengguna" #: src/bz-user-data-tile.c:150 #, c-format msgid "Trashed User Data for %s" msgstr "Data aplikasi %s telah dihapus." #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Memuat ulang" #: src/bz-window.blp:90 msgid "Curated" msgstr "Pilihan" #: src/bz-window.blp:102 msgid "Explore" msgstr "Jelajah" #: src/bz-window.blp:129 msgid "Search" msgstr "Cari" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Menu Utama" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Versi terbaru Bazaar telah terpasang!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Lihat Yang Baru" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "Saat ini Bazaar belum memuat halaman Flathub terbaru" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "Koneksi jaringan dibatasi — pemuatan ulang otomatis dinonaktifkan" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Donasi ke Bazaar" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Muat Ulang" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "_Masuk Dengan Flathub" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_Kelola Sisa Data Pengguna" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Pengaturan" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Pintasan Papan Tik" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "_Tentang Bazaar" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_Tutup Bazaar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Keluar" #. Translators: %s is the title of the current page #: src/bz-window.c:389 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:609 src/bz-window.c:647 msgid "Failed to launch application" msgstr "Gagal menjalankan aplikasi" #: src/bz-window.c:860 msgid "You can't remove Bazaar from Bazaar!" msgstr "Anda tidak dapat menghapus Bazaar dari dalam Bazaar." #: src/bz-window.c:1166 src/bz-window.c:1200 msgid "Can't do that right now!" msgstr "Tunggu hingga Bazaar selesai memuat" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Pemasangan" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigasi" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Buka Halaman Jelajah" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Buka Halaman Pustaka" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Buka Halaman Pencarian" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Sumber Aplikasi" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Sinkronkan Sumber Aplikasi" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Umum" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Buka Pengaturan" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Tampilkan Pintasan" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Tutup Jendela" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Keluar dari Bazaar" #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "_Donate to Bazaar â¤ï¸" #~ msgstr "_Donasi ke Bazaar â¤ï¸" #~ msgid "User Data Size" #~ msgstr "Ukuran Data Pengguna" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Open App Library" #~ msgstr "Buka Pustaka Aplikasi" #~ msgid "Flathub returned an error" #~ msgstr "Terdapat kesalahan pada Flathub" #~ msgid "Retry Flathub Connection" #~ msgstr "Hubungkan Kembali Flathub" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "Saat ini pemasangan bundel .flatpak belum didukung" #~ msgid "Tags:" #~ msgstr "Label:" #~ msgid "Free" #~ msgstr "Bebas" #~ msgid "Download & Install Application" #~ msgstr "Unduh & Pasang Aplikasi" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "" #~ "Hubungkan akun Flatpak ke Bazaar untuk mengelola aplikasi favorit Anda." #~ msgid "Delay Search Results" #~ msgstr "Tunda Hasil Pencarian" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "" #~ "Tingkatkan performa pencarian dengan menunda pemuatan istilah pencarian" #~ msgid "Progress Bar" #~ msgstr "Bilah Kemajuan" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "Pilihlah tema favorit Anda!" #~ msgid "Vertical Stripes" #~ msgstr "Strip Vertikal" #~ msgid "Display flag colors from left to right" #~ msgstr "Tampilkan warna bendera dari kiri ke kanan" #~ msgid "Steam" #~ msgstr "Steam" #~ msgid "Minecraft" #~ msgstr "Minecraft" #~ msgid "Open Link" #~ msgstr "Buka Tautan" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "Aplikasi Berlabel \"%s\"" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgid "Refresh completed!" #~ msgstr "Penyegaran berhasil!" #~ msgctxt "As in, \"100 Downloads\"" #~ msgid "Downloads" #~ msgstr "Unduhan" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "Muat ulang" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "Bazaar menekankan pentingnya mendukung para pengembang yang telah " #~ "memajukan desktop Linux. Bazaar juga memberi ruang distributor untuk " #~ "melakukan kurasi aplikasi \"pilihan\" untuk pengguna. " #~ msgid "_Synchronize Remotes" #~ msgstr "_Sinkronkan Dengan Server" #~ msgid "Synchronizing..." #~ msgstr "Mengsinkronkan..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "%d entri tersisa..." #~ msgid "Indexing Data..." #~ msgstr "Mengindeks Data..." #~ msgid "Install Other Version" #~ msgstr "Pasang Versi Lain" #~ msgid "Keep Data" #~ msgstr "Simpan Data" #~ msgid "Open App" #~ msgstr "Buka Aplikasi" #~ msgid "Refreshing Store Content" #~ msgstr "Memuat Ulang Konten Bazaar" #~ msgid "No background tasks!" #~ msgstr "Tidak ada proses latar belakang!" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "Keluar" #~ msgid "Nucleus app page" #~ msgstr "Tampilan halaman detail aplikasi" #~ msgid "Close" #~ msgstr "Tutup" #~ msgid "Copy and Close" #~ msgstr "Salin dan Tutup" #~ msgid "Toggle transaction sidebar" #~ msgstr "Tampil/sembunyikan bilah samping transaksi" #~ msgid "Ongoing" #~ msgstr "Saat Ini" #~ msgid "Finished" #~ msgstr "Selesai" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "Telah mentransfer %s sejauh ini" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "%d Pemutakhiran Tersedia" #~ msgid "Updates Are Available" #~ msgstr "Terdapat Pemutakhiran" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "Aplikasi berikut memiliki pemutakhiran. Apakah anda ingin memasangnya?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "%d tempokerja dan/atau modul tambahan memiliki pemutakhiran. Apakah Anda " #~ "ingin memasangnya?" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "" #~ "Selain itu, %d tempokerja dan/atau modul tambahan akan dimutakhirkan." #~ msgid "Update Now" #~ msgstr "Mutakhirkan Sekarang" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "Tampilkan/sembunyikan Manajer Transaksi" #~ msgid "Hide EOL Entries" #~ msgstr "Sembunyikan Aplikasi Tanpa Dukungan" #~ msgid "Hide EOL entries and entries depending on them" #~ msgstr "Sembunyikan aplikasi dan dependensi tanpa dukungan mutakhir" #~ msgid "Show Git Forge Star Counts" #~ msgstr "Tunjukkan Jumlah Bintang Repo" #~ msgid "" #~ "Whether to attempt to detect and show \"star counts\" for projects in the " #~ "full view" #~ msgstr "" #~ "Deteksi dan tampilkan data \"jumlah bintang\" repositori git saat memuat " #~ "halaman detail aplikasi" #~ msgid "Only Show Free Software" #~ msgstr "Sembunyikan Aplikasi Sumber Tertutup" #~ msgid "Hide proprietary software" #~ msgstr "Hanya tampilkan aplikasi dengan lisensi sumber terbuka" #~ msgid "Debounce Search Inputs" #~ msgstr "Tunda Masukan Pencarian" #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "" #~ "Tunda masukan saat mengetik untuk mencegah hasil pencarian muncul terlalu " #~ "cepat" #~ msgid "Describes the look of the global progress bar" #~ msgstr "Pilih tampilan bilah kemajuan Bazaar" #~ msgid "Saved Window Dimensions" #~ msgstr "Dimensi Jendela Tersimpan" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "Dimensi jendela saat membuka jendela Bazaar berikutnya" #~ msgid "?" #~ msgstr "?" #, c-format #~ msgid "%s is suitable for toddlers" #~ msgstr "%s cocok untuk usia batita" #~ msgid "--- MB" #~ msgstr "--- MB" #~ msgid "Of the size of human DNA" #~ msgstr "Dari ukuran DNA manusia" #~ msgid "3 billion base pairs" #~ msgstr "3 miliar pasangan basa" #~ msgid "Of the Linux Kernel" #~ msgstr "Dari ukuran kernel Linux" #~ msgid "linux-6.17.tar.xz" #~ msgstr "linux-6.17.tar.xz" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "Dari ukuran RAM dan ROM komputer pemandu Apollo 11" #~ msgid "Total ROM and RAM" #~ msgstr "Pada misi pendaratan manusia pertama di Bulan" #~ msgid "Of the original Super Mario Bros" #~ msgstr "Dari ukuran gim Super Mario Bros asli" #~ msgid "On the NES" #~ msgstr "pada konsol NES" #~ msgid "Of the size of Wikipedia" #~ msgstr "Dari ukuran seluruh artikel Wikipedia" #~ msgid "Without any media" #~ msgstr "Tanpa file media sama sekali" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "Fitur ini sedang dinonaktifkan. Silahkan unduh dan pasang Flatseal untuk " #~ "mengatur perizinan aplikasi. " #~ msgid "Entry Inspector" #~ msgstr "Periksa Masukan" #~ msgid "Serialize" #~ msgstr "Serialisasikan" #~ msgid "Convert to JSON" #~ msgstr "Ubah ke JSON" #~ msgid "More Mobile apps" #~ msgstr "Aplikasi Ponsel lainnya" #~ msgid "We ♥ Games" #~ msgstr "Kami ♥ Main" #~ msgid "Repository Star Count" #~ msgstr "Jumlah Bintang Repositori" #, c-format #~ msgid "%.2fM" #~ msgstr "%.2fM" #, c-format #~ msgid "%.2fK" #~ msgstr "%.2fK" #~ msgid "Bazaar Inspector" #~ msgstr "Pemeriksa Bazaar" #~ msgid "Enable Global Debug Mode" #~ msgstr "Nyalakan Mode Debug Global" #~ msgid "Active Blocklists" #~ msgstr "Daftar Blok Aktif" #~ msgid "Active Curated-Configs" #~ msgstr "Konfigurasi Kurasi Aktif" #~ msgid "All Entry Groups" #~ msgstr "Seluruh Grup Masukan" #~ msgid "Decache and Inspect" #~ msgstr "Hapus Cache dan Periksa" #~ msgid "No Flatpaks Installed" #~ msgstr "Tidak Ada Flatpak Terpasang" #~ msgid "Display Star Count" #~ msgstr "Tunjukkan Jumlah Bintang Repo" #~ msgid "Show the star count of an application's source code repository" #~ msgstr "Tunjukkan jumlah bintang dari repositori sumber aplikasi" #~ msgid "" #~ "Bazaar can fetch and display the star count from an application's source " #~ "code repository on a remote Git forge. \n" #~ " For projects on GitHub, rate limits may cause them not to appear." #~ msgstr "" #~ "Bazaar dapat mengambil dan menampilkan jumlah bintang dari repositori Git " #~ "sumber kode aplikasi.\n" #~ "Untuk aplikasi dari GitHub, terdapat potensi terbatasnya muatan yang " #~ "mungkin menghambat munculnya data ini." #~ msgid "Inspect UI Entry" #~ msgstr "Periksa Masukan Antarmuka" #~ msgid "All Debug Actions" #~ msgstr "Semua Tindakan Debug" #~ msgid "Tasks" #~ msgstr "Proses" #~ msgid "Stop Active Tasks" #~ msgstr "Hentikan Proses Aktif" #~ msgid "No Tasks Yet" #~ msgstr "Tidak ada proses berlangsung" #~ msgid "Sync" #~ msgstr "Sinkronisasi" #~ msgid "Open Bazaar Inspector" #~ msgstr "Buka Pemeriksa Bazaar" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "Kemampuan membuka dan memasang file .flatpak secara lokal segera hadir! " #~ "Saat ini, coba jalankan\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "pada baris perintah." #~ msgid "Resume Current Tasks" #~ msgstr "Lanjutkan Proses Ini" #~ msgid "Pause Current Tasks" #~ msgstr "Jeda Proses Ini" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u unduhan" #~ msgid "Show Animated Background" #~ msgstr "Tampilkan Animasi Latar Belakang" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "Tampilkan animasi ikon latar belakang pada halaman utama" #~ msgid "Keep the summary shorter, between 10 and 35 characters" #~ msgstr "Buat ringkasan pendek berkisar antara 10-35 karakter" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Jendela utama Bazaar yang menampilkan Blender" #~ msgid "This flatpak is verified by the original developers of the software." #~ msgstr "Flatpak ini telah diverifikasi oleh pengembang perangkat lunak asli" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore" #~ msgstr "Jill Fiore" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "Konfigurasi kurasi konten Bazaar saat ini belum tersedia. Hubungi sistem " #~ "operasi anda untuk mendukung fitur ini." #~ msgid "Apps Of The Week" #~ msgstr "Aplikasi Minggu Ini" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "" #~ "Jumlah unduhan pada 30 hari terakhir. Klik untuk melihat statistik " #~ "unduhan aplikasi ini." #~ msgid "Remote repo name" #~ msgstr "Nama repo remote" #~ msgid "How the application looks" #~ msgstr "Tampilan aplikasi" #~ msgid "Appearance" #~ msgstr "Tampilan" #~ msgid "Show animated background" #~ msgstr "Tampilkan animasi latar belakang" #~ msgid "Type to filter" #~ msgstr "Ketik untuk mencari" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Sembunyikan aplikasi berlisensi proprietari" #~ msgid "Advanced" #~ msgstr "Opsi Lanjutan" #~ msgid "Match using regular expressions" #~ msgstr "Cocokkan dengan ekspresi reguler (regex)" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "Sembunyikan hasil pencarian dan sortir di balik transisi pemuatan" #~ msgid "Share" #~ msgstr "Bagikan" #~ msgid "Open this link externally" #~ msgstr "Buka tautan ini secara eksternal" #~ msgid "Downloads Over Time" #~ msgstr "Unduhan seiring waktu" #~ msgid "Minimize Lower Bound" #~ msgstr "Perkecil batas bawah" #~ msgid "Maximize Upper Bound" #~ msgstr "Perbesar batas atas" #~ msgid "Installing" #~ msgstr "Sedang dipasang" #~ msgid "Removing" #~ msgstr "Sedang dihapus" #~ msgid "Transactions Will Appear Here" #~ msgstr "Transaksi akan muncul di sini" #~ msgid "Halt the execution of transactions" #~ msgstr "Hentikan proses transaksi" #~ msgid "Browse" #~ msgstr "Telusuri" #~ msgid "View curated applications" #~ msgstr "Lihat aplikasi pilihan" #~ msgid "View the latest on Flathub" #~ msgstr "Lihat yang terbaru dari Flathub" #~ msgid "Up to date!" #~ msgstr "Versi terkini sudah dimuat!" #~ msgid "Confirm Action" #~ msgstr "Konfirmasi Aksi" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Anda akan menghapus Flatpak berikut:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Apakah Anda yakin?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Anda akan memasang Flatpak berikut:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Apakah Anda yakin?" #~ msgid "Resume the execution of transactions" #~ msgstr "Lanjutkan proses transaksi" #~ msgid "Pause the execution of transactions" #~ msgstr "Hentikan sementara proses transaksi" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/it.po������������������������������������������������������������������0000664�0000000�0000000�00000131743�15240005042�0016741�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Italian translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Pietro F. <pfwork@tutamail.com>, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-11 10:39+0100\n" "PO-Revision-Date: 2025-11-11 11:25+0100\n" "Last-Translator: Pietro F. <pfwork@tutamail.com>\n" "Language-Team: Italian\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 49.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 #: src/bz-window.blp:225 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "" "Aggiunge, rimuove o aggiorna le applicazioni flatpak su questo computer" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" #: data/io.github.kolunmi.Bazaar.gschema.xml:6 msgid "Hide EOL Entries" msgstr "Nascondi voci EOL" #: data/io.github.kolunmi.Bazaar.gschema.xml:7 msgid "Hide EOL entries and entries depending on them" msgstr "Nascondi voci EOL e voci che dipendono da esse" #: data/io.github.kolunmi.Bazaar.gschema.xml:11 msgid "Show Git Forge Star Counts" msgstr "Mostra il numero di stelle su Git Forge" #: data/io.github.kolunmi.Bazaar.gschema.xml:12 msgid "" "Whether to attempt to detect and show \"star counts\" for projects in the " "full view" msgstr "" "Se tentare di rilevare e mostrare il “numero di stelle†per i progetti nella " "vista completa" #: data/io.github.kolunmi.Bazaar.gschema.xml:16 msgid "Only Show Free Software" msgstr "Mostra solo Free Software" #: data/io.github.kolunmi.Bazaar.gschema.xml:17 msgid "Hide proprietary software when searching" msgstr "nascondi software proprietario durante la ricerca" #: data/io.github.kolunmi.Bazaar.gschema.xml:21 msgid "Show Only Flathub Content" msgstr "Mostra solo i contenuti di Flathub" #: data/io.github.kolunmi.Bazaar.gschema.xml:22 msgid "Filter search results to only show applications available on Flathub" msgstr "" "Filtra i risultati della ricerca per mostrare solo le applicazioni " "disponibili su Flathub" #: data/io.github.kolunmi.Bazaar.gschema.xml:26 msgid "Debounce Search Inputs" msgstr "Ricerca senza rimbalzo" #: data/io.github.kolunmi.Bazaar.gschema.xml:27 msgid "Add a delay before searching to prevent instant replies while typing" msgstr "" "Aggiungere un ritardo nell'elaborazione dei dati per evitare risultati " "immediati" #: data/io.github.kolunmi.Bazaar.gschema.xml:45 msgid "Global Progress Bar Theme" msgstr "Tema barra di avanzamento globale" #: data/io.github.kolunmi.Bazaar.gschema.xml:46 msgid "Describes the look of the global progress bar" msgstr "Descrive l'aspetto della barra di avanzamento globale" #: data/io.github.kolunmi.Bazaar.gschema.xml:50 msgid "Saved Window Dimensions" msgstr "Dimensioni finestra salvate" #: data/io.github.kolunmi.Bazaar.gschema.xml:51 msgid "The window dimensions to be used by the next Bazaar window" msgstr "" "Le dimensioni della finestra da utilizzare per la prossima finestra Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "Scopri e installa applicazioni" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A new app store for GNOME with a focus on discovering and installing " "applications and addons from Flatpak remotes, particularly Flathub." msgstr "" "Un nuovo app store per GNOME incentrato sulla ricerca e l'installazione di " "applicazioni e componenti aggiuntivi dai repository remoti Flatpak, in " "particolare Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. " "Bazaar features a \"curated\" tab that can be configured by distributors to " "allow for a more localized experience." msgstr "" "Sottolinea l'importanza di supportare gli sviluppatori che rendono possibile " "il desktop Linux. Bazaar presenta una scheda “Consigliate†che può essere " "configurata dai distributori per consentire un'esperienza più personalizzata." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:29 src/bz-application.c:494 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:54 msgid "The home page displaying Flathub apps" msgstr "La schermata iniziale che mostra le app di Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:58 msgid "Nucleus app page" msgstr "Pagina dell'app Nucleus" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:62 msgid "Search page" msgstr "Pagina di Ricerca" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:66 msgid "Category page" msgstr "Pagina delle Categorie" #: src/bz-addons-dialog.blp:14 src/bz-full-view.blp:582 msgid "Manage Add-ons" msgstr "Gestisce estensioni" #: src/bz-addons-dialog.c:88 src/bz-transaction-view.blp:212 #: src/bz-window.c:1101 msgid "Remove" msgstr "Rimuovi" #: src/bz-addons-dialog.c:93 src/bz-full-view.blp:289 #: src/bz-transaction-view.blp:186 src/bz-window.c:1077 msgid "Install" msgstr "Installa" #: src/bz-app-size-dialog.c:55 msgid "Of the size of human DNA" msgstr "Delle dimensioni del DNA umano" #: src/bz-app-size-dialog.c:55 msgid "3 billion base pairs" msgstr "3 miliardi di coppie di basi" #: src/bz-app-size-dialog.c:56 msgid "Of the Linux Kernel" msgstr "Del kernel Linux" #: src/bz-app-size-dialog.c:56 msgid "linux-6.17.tar.xz" msgstr "linux-6.17.tar.xz" #: src/bz-app-size-dialog.c:57 msgid "Of the Apollo 11 guidance computer" msgstr "Del computer di bordo dell'Apollo 11" #: src/bz-app-size-dialog.c:57 msgid "Total ROM and RAM" msgstr "ROM e RAM totali" #: src/bz-app-size-dialog.c:58 msgid "Of the original Super Mario Bros" msgstr "Dell'originale Super Mario Bros." #: src/bz-app-size-dialog.c:58 msgid "On the NES" msgstr "Su NES" #: src/bz-app-size-dialog.c:59 msgid "Of the size of Wikipedia" msgstr "Delle dimensioni di Wikipedia" #: src/bz-app-size-dialog.c:59 msgid "Without any media" msgstr "Senza alcun media" #: src/bz-app-size-dialog.blp:43 msgid "--- MB" msgstr "--- MB" #: src/bz-app-size-dialog.blp:53 msgid "Download Size" msgstr "Dimensione Download" #: src/bz-application.c:416 msgid "" "This functionality is currently disabled. It is recommended you download and " "install Flatseal to manage app permissions." msgstr "" "Questa funzionalità è attualmente disabilitata. Si consiglia di scaricare e " "installare Flatseal per gestire le autorizzazioni delle app." #: src/bz-application.c:479 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:480 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:497 msgid "translator-credits" msgstr "Pietro F. <pfwork@tutamail.com>, 2025" #: src/bz-application.c:1069 msgid "Constructing Flatpak instance..." msgstr "Creazione dell'istanza Flatpak..." #: src/bz-application.c:1086 msgid "Reusing last Flatpak instance..." msgstr "Riutilizzo dell'ultima istanza Flatpak..." #: src/bz-application.c:1111 msgid "Flathub is not registered on this system" msgstr "Flathub non è registrato su questo sistema" #: src/bz-application.c:1114 msgid "" "Would you like to add Flathub as a remote? If you decline, the Flathub page " "will not be available. You can change this later." msgstr "" "Vuoi aggiungere Flathub come repository remoto? Se rifiuti, la pagina " "Flathub non sarà disponibile. Puoi cambiare questa impostazione in un " "secondo momento." #: src/bz-application.c:1119 src/bz-update-dialog.blp:6 msgid "Later" msgstr "Dopo" #: src/bz-application.c:1120 msgid "Add Flathub" msgstr "Aggiungi Flathub" #: src/bz-application.c:1152 msgid "Identifying installed entries..." msgstr "Identificazione delle voci installate..." #: src/bz-application.c:1176 msgid "Receiving Entries" msgstr "Ricezione delle voci" #: src/bz-application.c:1333 #, c-format msgid "%'d of %'d" msgstr "%'d di %'d" #: src/bz-application.c:1346 #, c-format msgid "Waiting for background indexing tasks to catch up..." msgstr "" "In attesa che le attività di indicizzazione in background vengano " "completate..." #: src/bz-application.c:1388 #, c-format msgid "Completed initialization in %0.2f seconds" msgstr "Inizializzazione completata in %0.2f secondi" #: src/bz-application.c:1393 src/bz-application.c:1548 msgid "Checking for updates..." msgstr "Controllo degli aggiornamenti..." #: src/bz-application.c:1432 msgid "Synchronizing..." msgstr "Sincronizzazione..." #: src/bz-browse-widget.blp:11 src/bz-flathub-page.blp:19 #: src/bz-full-view.blp:53 src/bz-installed-page.blp:15 src/bz-window.blp:174 msgid "Empty" msgstr "Vuoto" #: src/bz-browse-widget.blp:15 msgid "No Curation" msgstr "Non ci sono Applicazioni Consigliate" #: src/bz-browse-widget.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "" "Non sono disponibili informazioni sulle app consigliate per questo sistema. " "È comunque possibile sfogliare le applicazioni su Flathub" #: src/bz-browse-widget.blp:18 msgid "Browse Flathub" msgstr "Esplora Flathub" #: src/bz-browse-widget.blp:29 src/bz-browse-widget.blp:33 #: src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "Nessuna connessione" #: src/bz-browse-widget.blp:39 src/bz-flathub-page.blp:40 msgid "Browser" msgstr "Browser" #: src/bz-entry-inspector.blp:5 msgid "Entry Inspector" msgstr "Ispettore delle voci" #: src/bz-entry-inspector.blp:76 msgid "Serialize" msgstr "Serializza" #: src/bz-entry-inspector.blp:80 msgid "Convert to JSON" msgstr "Converti in JSON" #: src/error.c:68 msgid "An Error Occurred" msgstr "Si è verificato un errore" #: src/error.c:89 msgid "Close" msgstr "Chiudi" #: src/error.c:90 msgid "Copy and Close" msgstr "Copia e Chiudi" #: src/bz-featured-tile.blp:88 msgid "App of the Day" msgstr "App del Giorno" #: src/bz-flathub-category.c:66 msgid "Audio & Video" msgstr "Audio & Video" #: src/bz-flathub-category.c:66 msgid "Media" msgstr "Media" #: src/bz-flathub-category.c:66 msgid "More Audio & Video" msgstr "Più Audio & Video" #: src/bz-flathub-category.c:67 msgid "Developer Tools" msgstr "Strumenti per Sviluppatori" #: src/bz-flathub-category.c:67 msgid "Develop" msgstr "Sviluppa" #: src/bz-flathub-category.c:67 msgid "More Developer Tools" msgstr "Più Strumenti per Sviluppatori" #: src/bz-flathub-category.c:68 msgid "Education" msgstr "Educazione" #: src/bz-flathub-category.c:68 msgid "Learn" msgstr "Impara" #: src/bz-flathub-category.c:68 msgid "More Education" msgstr "Più Educazione" #: src/bz-flathub-category.c:69 msgid "Gaming" msgstr "Gaming" #: src/bz-flathub-category.c:69 msgid "Play" msgstr "Gioca" #: src/bz-flathub-category.c:69 msgid "More Gaming" msgstr "Più Gaming" #: src/bz-flathub-category.c:70 msgid "Graphics & Photography" msgstr "Grafica & Fotografia" #: src/bz-flathub-category.c:70 msgid "Create" msgstr "Crea" #: src/bz-flathub-category.c:70 msgid "More Graphics & Photography" msgstr "Più Grafica & Fotografia" #: src/bz-flathub-category.c:71 msgid "Networking" msgstr "Networking" #: src/bz-flathub-category.c:71 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:71 msgid "More Networking" msgstr "Più Networking" #: src/bz-flathub-category.c:72 msgid "Productivity" msgstr "Produttività" #: src/bz-flathub-category.c:72 msgid "Work" msgstr "Lavoro" #: src/bz-flathub-category.c:72 msgid "More Productivity" msgstr "Più Produttività" #: src/bz-flathub-category.c:73 msgid "Science" msgstr "Scienza" #: src/bz-flathub-category.c:73 msgid "More Science" msgstr "Più Scienza" #: src/bz-flathub-category.c:74 msgid "System" msgstr "Sistema" #: src/bz-flathub-category.c:74 msgid "More System" msgstr "Più Sistema" #: src/bz-flathub-category.c:75 msgid "Utilities" msgstr "Utilità" #: src/bz-flathub-category.c:75 msgid "Tools" msgstr "Strumenti" #: src/bz-flathub-category.c:75 msgid "More Utilities" msgstr "Più Utilità" #: src/bz-flathub-category.c:76 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:142 msgid "Trending" msgstr "In Tendenza" #: src/bz-flathub-category.c:76 msgid "More Trending" msgstr "Più In Tendenza" #: src/bz-flathub-category.c:77 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:175 msgid "Popular" msgstr "Popolari" #: src/bz-flathub-category.c:77 msgid "More Popular" msgstr "Più Popolari" #: src/bz-flathub-category.c:78 src/bz-flathub-page.blp:164 msgid "Recently Added" msgstr "Aggiunte Recentemente" #: src/bz-flathub-category.c:78 src/bz-flathub-page.blp:121 msgid "New" msgstr "Nuove" #: src/bz-flathub-category.c:78 msgid "More New" msgstr "Più Nuove" #: src/bz-flathub-category.c:79 src/bz-flathub-page.blp:153 msgid "Recently Updated" msgstr "Aggiornate Recentemente" #: src/bz-flathub-category.c:79 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Aggiornate" #: src/bz-flathub-category.c:79 msgid "More Updated" msgstr "Più Aggiornate Recentemente" #: src/bz-flathub-category.c:80 msgid "Mobile" msgstr "Mobile" #: src/bz-flathub-category.c:80 msgid "More Mobile" msgstr "Più Mobile" #: src/bz-flathub-category-section.c:132 src/bz-search-widget.c:314 #, c-format msgid "%d applications" msgstr "%d applicazioni" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub non aggiunto" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "Il repository remoto Flathub non è stato trovato in nessuna delle tue " "installazioni Flatpak" #: src/bz-flathub-page.blp:48 msgid "Flathub Unavailable" msgstr "Flathub non disponibile" #: src/bz-flathub-page.blp:49 msgid "" "We could not connect to Flathub. You can still manage and search for " "applications." msgstr "" "Impossibile connettersi a Flathub. È comunque possibile gestire e cercare le " "applicazioni." #: src/bz-flathub-page.blp:52 msgid "Search Apps" msgstr "Cerca Applicazioni" #: src/bz-flathub-page.blp:266 msgid "On the go" msgstr "On the go" #: src/bz-flathub-page.blp:278 msgid "Apps for your Linux phones and tablets" msgstr "App per il tuo telefono o tablet Linux" #: src/bz-flathub-page.blp:289 src/bz-flathub-page.blp:324 msgid "More Mobile apps" msgstr "Più App Mobile" #: src/bz-flathub-page.c:204 msgid "Mobile Apps" msgstr "App Mobile" #: src/bz-flatpak-entry.c:554 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Pagina Flathub" #: src/bz-flatpak-entry.c:575 msgctxt "Project URL Type" msgid "Project Website" msgstr "Sito del Progetto" #: src/bz-flatpak-entry.c:579 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Segnala un problema" #: src/bz-flatpak-entry.c:583 msgctxt "Project URL Type" msgid "FAQ" msgstr "FAQ" #: src/bz-flatpak-entry.c:587 msgctxt "Project URL Type" msgid "Help" msgstr "Aiuto" #: src/bz-flatpak-entry.c:591 msgctxt "Project URL Type" msgid "Donate" msgstr "Dona" #: src/bz-flatpak-entry.c:597 msgctxt "Project URL Type" msgid "Translate" msgstr "Traduci" #: src/bz-flatpak-entry.c:601 msgctxt "Project URL Type" msgid "Contact" msgstr "Contatta" #: src/bz-flatpak-entry.c:605 msgctxt "Project URL Type" msgid "Source Code" msgstr "Codice Sorgente" #: src/bz-flatpak-entry.c:611 msgctxt "Project URL Type" msgid "Contribute" msgstr "Contribuisci" #: src/bz-full-view.blp:20 src/bz-window.blp:117 src/bz-window.blp:394 msgid "Toggle transaction sidebar" msgstr "Mostra o Nasconde il menu delle operazioni" #: src/bz-full-view.blp:43 src/bz-window.blp:417 msgid "Main Menu" msgstr "Menu Principale" #: src/bz-full-view.blp:57 msgid "No Results" msgstr "Nessun risultato" #: src/bz-full-view.blp:58 msgid "Try a different search query" msgstr "Prova con una ricerca diversa" #: src/bz-full-view.blp:64 src/bz-window.blp:184 msgid "Content" msgstr "Contenuto" #: src/bz-full-view.blp:196 msgid "Verified by the original developers" msgstr "Verificato dagli sviluppatori originali" #: src/bz-full-view.blp:223 msgid "Support" msgstr "Supporta" #: src/bz-full-view.blp:243 msgid "Repository Star Count" msgstr "Numero di stelle del repository" #: src/bz-full-view.blp:273 msgid "Open" msgstr "Apri" #: src/bz-full-view.blp:286 msgid "Download & Install Application" msgstr "Installa questa applicazione" #: src/bz-full-view.blp:301 msgid "Uninstall Application" msgstr "Disinstalla questa applicazione" #: src/bz-full-view.blp:316 msgid "Install Other Version" msgstr "Installa altra versione" #: src/bz-full-view.blp:340 msgid "Size" msgstr "Peso" #: src/bz-full-view.blp:456 msgid "Downloads /mo" msgstr "Download /mo" #: src/bz-full-view.c:284 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/bz-full-view.c:288 #, c-format msgid "%.2fM" msgstr "%.2fM" #. Translators: K is the suffix for thousands #: src/bz-full-view.c:291 #, c-format msgid "%.2fK" msgstr "%.2fK" #: src/bz-full-view.c:300 #, c-format msgid "%d downloads in the last 30 days" msgstr "%'d download negli ultimi 30 giorni" #: src/bz-full-view.c:321 #, c-format msgid "Download size of %s" msgstr "Dimensioni Download di %s" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-full-view.c:331 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-full-view.c:339 msgid "All Ages" msgstr "Tutte le Età" #: src/bz-full-view.c:341 msgid "Age Rating" msgstr "Fascia d'Età" #: src/bz-full-view.c:349 msgid "Suitable for all ages" msgstr "Adatto per tutte le età" #: src/bz-full-view.c:351 #, c-format msgid "Suitable for ages %d and up" msgstr "Adatto per %d anni in sù" #: src/bz-full-view.c:375 msgid "Unknown" msgstr "Sconosciuto" #: src/bz-full-view.c:378 msgid "Proprietary Software" msgstr "Software Propietario" #: src/bz-full-view.c:382 #, c-format msgid "Free software licensed under %s" msgstr "Free software sotto licenza %s" #: src/bz-full-view.c:390 msgid "Free" msgstr "Free" #: src/bz-full-view.c:390 msgid "Proprietary" msgstr "Propietario" #: src/bz-full-view.c:410 msgid "Adaptive" msgstr "Adattiva" #: src/bz-full-view.c:410 msgid "Desktop Only" msgstr "Solo Desktop" #: src/bz-full-view.c:416 msgid "Works on desktop, tablets, and phones" msgstr "Funziona su desktop, tablet e telefoni" #: src/bz-full-view.c:417 msgid "May not work on mobile devices" msgstr "Potrebbe non funzionare su dispositvi mobili" #: src/bz-full-view.c:428 msgid "No URL" msgstr "Nessun URL" #: src/bz-full-view.c:446 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "Questa applicazione ha una licenza FLOSS, il che significa che il codice " "sorgente può essere controllato per sicurezza." #: src/bz-full-view.c:447 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "Questa applicazione ha una licenza proprietaria, il che significa che il " "codice sorgente è sviluppato privatamente e non può essere verificato da una " "terza parte indipendente." #: src/bz-full-view.c:454 msgid "Other Apps by this Developer" msgstr "Altre App di questo Sviluppatore" #: src/bz-full-view.c:456 #, c-format msgid "Other Apps by %s" msgstr "Altre App di %s" #: src/bz-full-view.c:828 msgid "Show Less" msgstr "Mostra di meno" #: src/bz-full-view.c:828 msgid "Show More" msgstr "Mostra di più" #: src/bz-hardware-support-dialog.c:69 msgid "Keyboard support" msgstr "Supporto per le tastiere" #: src/bz-hardware-support-dialog.c:71 msgid "Requires keyboards" msgstr "Richiede le tastiere" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends keyboards" msgstr "Raccomanda le tastiere" #: src/bz-hardware-support-dialog.c:73 msgid "Supports keyboards" msgstr "Supporto per le tastiere" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for keyboards" msgstr "Supporto sconosciuto per le tastiere" #: src/bz-hardware-support-dialog.c:76 msgid "Mouse support" msgstr "Supporto Mouse" #: src/bz-hardware-support-dialog.c:78 msgid "Requires mice or pointing devices" msgstr "Richiede mouse o dispositivi di puntamento" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends mice or pointing devices" msgstr "Raccomanda mouse o dispositivi di puntamento" #: src/bz-hardware-support-dialog.c:80 msgid "Supports mice or pointing devices" msgstr "Supporto per mouse o dispositivi di puntamento" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for mice or pointing devices" msgstr "Supporto sconosciuto per mouse o dispositivi di puntamento" #: src/bz-hardware-support-dialog.c:83 msgid "Touchscreen support" msgstr "Supporto per schermi touchscreen" #: src/bz-hardware-support-dialog.c:85 msgid "Requires touchscreens" msgstr "Richiede schermi touchscreen" #: src/bz-hardware-support-dialog.c:86 msgid "Recommends touchscreens" msgstr "Raccomanda schermi touchscreen" #: src/bz-hardware-support-dialog.c:87 msgid "Supports touchscreens" msgstr "Supporto touchscreen" #: src/bz-hardware-support-dialog.c:88 msgid "Unknown support for touchscreens" msgstr "Supporto sconosciuto per schermi touchscreen" #: src/bz-hardware-support-dialog.c:192 msgid "Mobile support" msgstr "Supporto per dispositivi mobili" #: src/bz-hardware-support-dialog.c:193 msgid "Works on mobile devices" msgstr "Funziona su dispositivi mobili" #: src/bz-hardware-support-dialog.c:193 msgid "May not work well on mobile devices" msgstr "Potrebbe non funzionare su dispositivi mobili" #: src/bz-hardware-support-dialog.c:198 msgid "Desktop support" msgstr "Supporto Desktop" #: src/bz-hardware-support-dialog.c:199 msgid "Works well on large screens" msgstr "Ottimizzato per grandi schermi" #: src/bz-hardware-support-dialog.c:233 #, c-format msgid "%s works best on specific hardware" msgstr "%s funziona al meglio su hardware specifico" #: src/bz-hardware-support-dialog.c:240 #, c-format msgid "%s works on most devices" msgstr "%s funziona sulla maggior parte dei dispositivi" #: src/bz-hardware-support-dialog.blp:6 src/bz-hardware-support-dialog.blp:47 msgid "Hardware Support" msgstr "Supporto Hardware" #: src/bz-inspector.blp:5 msgid "Bazaar Inspector" msgstr "Ispettore di Bazaar" #: src/bz-inspector.blp:22 msgid "Enable Global Debug Mode" msgstr "Abilita Modalità di Debug globale" #: src/bz-inspector.blp:29 msgid "Active Blocklists" msgstr "Blocklist attive" #: src/bz-inspector.blp:46 msgid "Active Curated-Configs" msgstr "Configurazioni attive per Consigliate" #: src/bz-inspector.blp:64 msgid "All Entry Groups" msgstr "Tutti i gruppi di voci" #: src/bz-inspector.blp:72 msgid "Filter..." msgstr "Filtra..." #: src/bz-inspector.blp:113 msgid "Decache and Inspect" msgstr "Elimina la cache ed Ispeziona" #: src/bz-installed-page.blp:19 msgid "No Flatpaks Installed" msgstr "Nessun Flatpak Installato" #: src/bz-installed-page.blp:25 src/bz-window.blp:319 msgid "Installed" msgstr "Installate" #: src/bz-installed-page.c:406 msgid "Choose an Installation" msgstr "Scegli un installazione" #: src/bz-installed-page.c:409 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with? " msgstr "" "Hai installato più versioni di questa app. Con quale desideri procedere? " #: src/bz-installed-page.c:413 src/bz-window.c:1076 src/bz-window.c:1100 msgid "Cancel" msgstr "Annulla" #: src/bz-license-dialog.c:115 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may not be able to contribute to this app." msgstr "" "Questa app non è sviluppata in modo trasparente, quindi solo i suoi " "sviluppatori sanno come funziona. Potrebbe essere insicura in modi difficili " "da rilevare e potrebbe cambiare senza preavviso o supervisione." #: src/bz-license-dialog.c:124 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Questa app è sviluppata apertamente da una comunità internazionale.\n" "\n" "Puoi partecipare e contribuire a renderla ancora migliore." #: src/bz-license-dialog.c:135 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the <a href=\"%s\">%s</a> license.\n" "\n" "You can participate and help make it even better." msgstr "" "Questa applicazione è sviluppata apertamente da una comunità internazionale " "e rilasciata con licenza <a href=\"%s\">%s</a>.\n" "\n" "Puoi partecipare e contribuire a migliorarla." #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Preferenze" #: src/bz-preferences-dialog.blp:23 src/bz-window.blp:334 msgid "Search" msgstr "Cerca" #: src/bz-preferences-dialog.blp:26 msgid "Free Software Only" msgstr "Solo Free Software" #: src/bz-preferences-dialog.blp:27 msgid "Hide proprietary applications from search results" msgstr "Nascondi applicazioni proprietarie dai risultati di ricerca" #: src/bz-preferences-dialog.blp:31 msgid "Flathub Results Only" msgstr "Solo risultati da Flathub" #: src/bz-preferences-dialog.blp:32 msgid "Limit search results to applications only available on Flathub" msgstr "" "Limita i risultati della ricerca alle applicazioni disponibili su Flathub" #: src/bz-preferences-dialog.blp:36 msgid "Delay Search Results" msgstr "Mostra Risultati di Ricerca" #: src/bz-preferences-dialog.blp:37 msgid "Improve results performance by debouncing search terms" msgstr "" "Migliorare le prestazioni dei risultati applicando il debouncing ai termini " "di ricerca" #: src/bz-preferences-dialog.blp:42 msgid "Application Details" msgstr "Dettagli dell'app" #: src/bz-preferences-dialog.blp:45 msgid "Display Star Count" msgstr "Mostra conteggio stelle" #: src/bz-preferences-dialog.blp:46 msgid "Show the star count of an application's source code repository" msgstr "" "Mostra il numero di stelle del repository del codice sorgente di " "un'applicazione" #: src/bz-preferences-dialog.blp:71 msgid "Progress Bar" msgstr "Barra di avanzamento" #: src/bz-preferences-dialog.blp:72 msgid "Choose a theme for the progress bar!" msgstr "Scegli un tema per la barra di avanzamento!" #: src/bz-preferences-dialog.blp:98 msgid "End of Life Apps" msgstr "App Obsolete" #: src/bz-preferences-dialog.blp:101 msgid "Hide EOL Apps" msgstr "Nascondi App obsolete" #: src/bz-preferences-dialog.blp:102 msgid "Hide apps which are no longer supported by their developers" msgstr "Nascondi le app non più supportate dagli sviluppatori" #: src/bz-preferences-dialog.blp:116 msgid "" "Bazaar can fetch and display the star count from an application's source " "code repository on a remote Git forge. \n" " For projects on GitHub, rate limits may cause them not to appear." msgstr "" "Bazaar può recuperare e visualizzare il numero di stelle dal repository del " "codice sorgente di un'applicazione su una piattaforma Git remota.\n" "Per i progetti su GitHub, i limiti di richieste potrebbero impedirne la " "visualizzazione." #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Colore d'accento" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Colori Pride" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Colori lesbian pride" #: src/bz-preferences-dialog.c:35 msgid "Transgender Pride Colors" msgstr "Colori transgender pride" #: src/bz-preferences-dialog.c:36 msgid "Nonbinary Pride Colors" msgstr "Colori nonbinary pride" #: src/bz-preferences-dialog.c:37 msgid "Bisexual Pride Colors" msgstr "Colori bisexual pride" #: src/bz-preferences-dialog.c:38 msgid "Asexual Pride Colors" msgstr "Colori asexual pride" #: src/bz-preferences-dialog.c:39 msgid "Pansexual Pride Colors" msgstr "" "Non sono disponibili informazioni sulla curatela per questo sistema. È " "comunque possibile sfogliare le applicazioni su Flathub" #: src/bz-preferences-dialog.c:40 msgid "Aromantic Pride Colors" msgstr "Colori aromantic pride" #: src/bz-preferences-dialog.c:41 msgid "Genderfluid Pride Colors" msgstr "Colori genderfluid pride" #: src/bz-preferences-dialog.c:42 msgid "Polysexual Pride Colors" msgstr "Colori polysexual pride" #: src/bz-preferences-dialog.c:43 msgid "Omnisexual Pride Colors" msgstr "Colori omnisexual pride" #: src/bz-releases-dialog.blp:5 src/bz-releases-list.blp:26 msgid "Version History" msgstr "Cronologia delle Versioni" #: src/bz-releases-list.c:128 #, c-format msgid "Version %s" msgstr "Versione %s" #: src/bz-releases-list.c:153 msgid "No details for this release" msgstr "Nessun dettaglio per questa versione" #: src/bz-rich-app-tile.blp:103 msgid "Get" msgstr "Ottieni" #: src/bz-search-widget.blp:105 msgid "Search Apps, Games, Software" msgstr "Cerca App, Giochi, Software" #: src/bz-search-widget.blp:149 msgid "Categories Unavailable" msgstr "Categorie non disponibili" #: src/bz-search-widget.blp:150 msgid "Search for apps using the search bar above." msgstr "Cerca le app digitando nella barra di ricerca superiore." #: src/bz-search-widget.blp:233 msgid "No Applications Found" msgstr "Nessuna Applicazione Trovata" #: src/bz-search-widget.c:225 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Nessun risultato per \"%s\" in Flathub" #: src/bz-share-list.c:64 msgid "Copied!" msgstr "Copiato!" #: src/bz-share-list.c:116 msgid "Copy Link" msgstr "Copia Link" #: src/bz-share-list.c:127 msgid "Open Link" msgstr "Apri Link" #: src/bz-stats-dialog.blp:26 msgid "Timeline" msgstr "Cronologia" #: src/bz-stats-dialog.blp:31 msgid "Installs:" msgstr "Installazioni:" #: src/bz-stats-dialog.blp:37 msgid "World" msgstr "Mondiale" #: src/bz-transaction-manager.c:1140 #, c-format msgid "Finished in %.02f seconds" msgstr "Finito in %.02f secondi" #: src/bz-transaction-view.blp:94 msgid "App Add-on" msgstr "Estensioni dell'App" #: src/bz-transaction-view.blp:119 msgid "Runtime" msgstr "Runtime" #: src/bz-transaction-view.blp:145 src/bz-transaction-view.blp:171 msgid "Install Size" msgstr "Dimensione di Installazione" #: src/bz-transaction-view.blp:199 src/bz-window.blp:355 msgid "Update" msgstr "Aggiorna" #: src/bz-transaction-view.c:139 #, c-format msgid "Transferred %s so far" msgstr "Trasferito %s finora" #: src/bz-transaction.c:336 msgid "Pending" msgstr "In attesa" #: src/bz-update-dialog.blp:7 msgid "Install Now" msgstr "Installa ora" #: src/bz-update-dialog.blp:10 msgid "Updates Are Available" msgstr "Sono disponibili aggiornamenti" #: src/bz-update-dialog.blp:11 msgid "" "The following applications are eligible for updates. Would you like to " "install them?" msgstr "Le seguenti applicazioni possono essere aggiornate. Vuoi installarle?" #: src/bz-update-dialog.c:134 #, c-format msgid "" "%d runtimes and/or addons are eligible for updates. Would you like to " "install them?" msgstr "" "%d I runtime e/o i componenti aggiuntivi possono essere aggiornati. Vuoi " "installarli?" #: src/bz-update-dialog.c:142 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "Inoltre, verranno aggiornati %d runtime e/o componenti aggiuntivi." #: src/bz-window.blp:66 msgid "Inspect UI Entry" msgstr "Ispeziona voci UI" #: src/bz-window.blp:73 msgid "All Debug Actions" msgstr "Tutte le Azioni di Debug" #: src/bz-window.blp:98 msgid "Tasks" msgstr "Attività" #: src/bz-window.blp:154 msgid "Stop Active Tasks" msgstr "Interrompi attività attive" #: src/bz-window.blp:162 msgid "Clear History" msgstr "Cancella cronologia" #: src/bz-window.blp:178 msgid "No Tasks Yet" msgstr "Nessuna attività ancora" #: src/bz-window.blp:293 msgid "Curated" msgstr "Consigliate" #: src/bz-window.blp:306 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:481 msgid "_Donate to Bazaar â¤ï¸" msgstr "_Dona a Bazaar â¤ï¸" #: src/bz-window.blp:486 msgid "_Refresh Content" msgstr "_Ricarica Contenuto" #: src/bz-window.blp:493 msgid "_Preferences" msgstr "_Preferenze" #: src/bz-window.blp:498 msgid "_Keyboard Shortcuts" msgstr "_Scorciatoie da tastiera" #: src/bz-window.blp:503 msgid "_About Bazaar" msgstr "_Info su Bazaar" #: src/bz-window.blp:510 msgid "_Quit Bazaar" msgstr "_Chiude Bazaar" #: src/bz-window.blp:519 msgid "Open Bazaar Inspector" msgstr "Apri Ispettore di Bazaar" #: src/bz-window.c:819 msgid "" "The ability to inspect and install local .flatpak bundle files is coming " "soon! In the meantime, try running\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "on the command line." msgstr "" "La possibilità di ispezionare e installare i file bundle .flatpak locali è " "in arrivo! Nel frattempo, provate a eseguire\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "alla riga di comando." #: src/bz-window.c:941 msgid "Can't do that right now!" msgstr "Non posso farlo adesso!" #: src/bz-window.c:1070 #, c-format msgid "Install %s?" msgstr "Installare %s?" #: src/bz-window.c:1073 msgid "May install additional shared components" msgstr "È possibile installare componenti condivisi aggiuntivi" #: src/bz-window.c:1092 #, c-format msgid "Remove %s?" msgstr "Rimuovere %s?" #: src/bz-window.c:1096 #, c-format msgid "" "It will not be possible to use %s after it is uninstalled.\n" "\n" "Settings and user data will be kept." msgstr "" "Non sarà possibile usare %s dopo la disinstallazione.\n" "\n" "Le impostazioni e i dati utente verranno conservati." #: src/bz-window.c:1262 msgid "Resume Current Tasks" msgstr "Riprendi attività correnti" #: src/bz-window.c:1268 msgid "Pause Current Tasks" msgstr "Sospendi attività correnti" #: src/bz-world-map.c:523 #, c-format msgid "%s: %'u downloads" msgstr "%s: %'u download" #: src/gtk/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "Generali" #: src/gtk/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "Apre la barra di ricerca" #: src/gtk/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Apri le Preferenze" #: src/gtk/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Refresh" msgstr "Ricarica" #: src/gtk/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "Mostra o Nasconde menu delle operazioni" #: src/gtk/shortcuts-dialog.blp:29 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra scorciatoie da tastiera" #: src/gtk/shortcuts-dialog.blp:34 msgctxt "shortcut window" msgid "Quit" msgstr "Esce" #~ msgid "Searching for Blender" #~ msgstr "Ricerca di Blender" #~ msgid "Manage Addons" #~ msgstr "Gestione delle estensioni" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Azenyr" #~ msgstr "Azenyr" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Goudarz Jafari" #~ msgstr "Goudarz Jafari" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore (Lumaeris)" #~ msgstr "Jill Fiore (Lumaeris)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "João Victor (Leal)" #~ msgstr "João Victor (Leal)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "KiKaraage" #~ msgstr "KiKaraage" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Léane GRASSER" #~ msgstr "Léane GRASSER" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Marcel Mrówka (Microwave)" #~ msgstr "Marcel Mrówka (Microwave)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Peter Dave Hello" #~ msgstr "Peter Dave Hello" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Pietro F." #~ msgstr "Pietro F." #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shinsei" #~ msgstr "Shinsei" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "camegone" #~ msgstr "camegone" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "" #~ "Avvio recupero delle voci remote facendo riferimento a %d blocklist..." #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "Non è stata fornita alcuna configurazione di contenuti consigliati per " #~ "Bazaar. Per assistenza, contattare il supporto del sistema operativo." #~ msgid "Games" #~ msgstr "Giochi" #~ msgid "Graphics" #~ msgstr "Grafica e Fotografia" #~ msgid "Office" #~ msgstr "Produttività" #~ msgctxt "Project URL Type" #~ msgid "Homepage" #~ msgstr "Sito del Progetto" #~ msgid "Share this application" #~ msgstr "Condividi questa applicazione" #~ msgid "Excludes shared components" #~ msgstr "Esclude componenti condivisi" #~ msgid "Source code may not be available" #~ msgstr "Il codice sorgente potrebbe non essere disponibile" #~ msgid "Click for details" #~ msgstr "Clicca per maggiori dettagli" #~ msgid "Repositories" #~ msgstr "Repository" #~ msgid "Open in browser" #~ msgstr "Apri nel browser" #, c-format #~ msgid "%'d Monthly Downloads" #~ msgstr "%'d Download Mensili" #~ msgid "%B %-d, %Y" #~ msgstr "%B %-d, %Y" #~ msgid "%B %-d" #~ msgstr "%B %-d" #~ msgid "Support this application" #~ msgstr "Supporta questa applicazione" #~ msgid "Run this application" #~ msgstr "Avvia questa applicazione" #~ msgid "Run" #~ msgstr "Avvia" #~ msgid "View Store Page" #~ msgstr "Mostra dettagli nello Store" #~ msgid "Git Forge Star Counts" #~ msgstr "Numero di stelle Git Forge" #~ msgid "Not having a GitHub access token may trigger rate limits" #~ msgstr "" #~ "La mancanza di un token di accesso GitHub può causare limiti di velocità" #~ msgid "Show Only Flathub Apps" #~ msgstr "Mostra solo applicazioni da Flathub" #~ msgid "Wait for a brief pause to reduce system load" #~ msgstr "Attendere una breve pausa per ridurre il carico del sistema." #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Pride Rainbow Flag" #~ msgstr "Bandiera arcobaleno" #~ msgid "Bisexual Flag" #~ msgstr "Bandiera bisessuale" #~ msgid "Asexual Flag" #~ msgstr "Bandiera asessuale" #~ msgid "Share" #~ msgstr "Condividi" #~ msgid "Error Details" #~ msgstr "Dettagli dell'errore" #~ msgid "Transactions" #~ msgstr "Transazioni" #~ msgid "Loading" #~ msgstr "Caricamento" #~ msgid "Browse" #~ msgstr "Esplora" #~ msgid "App View" #~ msgstr "Vista dell'App" #~ msgid "Go Back" #~ msgstr "Vai indietro" #~ msgid "View curated applications" #~ msgstr "Visualizza applicazioni consigliate" #~ msgid "View the latest on Flathub" #~ msgstr "Visualizza le ultime novità di Flathub" #~ msgid "View installed applications" #~ msgstr "Visualizza applicazioni installate" #~ msgid "_Quit Service" #~ msgstr "_Esce dal servizio" #~ msgid "Up to date!" #~ msgstr "Aggiornato!" #~ msgid "Settings & user data will be kept" #~ msgstr "Le impostazioni e i dati utente saranno conservati" #~ msgid "Calligraphy application page" #~ msgstr "Pagina dell'applicazione Calligraphy" #~ msgid "Download graph for Blender" #~ msgstr "Grafico dei download di Blender" #~ msgid "Open this image in the default image viewer" #~ msgstr "Apri questa immagine nel visualizzatore di immagini di default" #~ msgid "Copy this image to the clipboard" #~ msgstr "Copia questa immagine negli appunti" #~ msgid "App Details" #~ msgstr "Dettagli dell'app" #~ msgid "License" #~ msgstr "Licenza" #~ msgid "Download Statistics" #~ msgstr "Statistiche di Download" #~ msgid "Show Downloads Over Time" #~ msgstr "Mostra download nel tempo" #~ msgid "Remote repo name" #~ msgstr "Nome del repository remoto" #~ msgid "Updated Size" #~ msgstr "Dimensione dell'aggiornamento" #~ msgid "Freed Space" #~ msgstr "Spazio liberato" #~ msgid "Transactions Will Appear Here" #~ msgstr "Le operazioni appariranno qui" #~ msgid "Halt the execution of transactions" #~ msgstr "Ferma l'esecuzione delle operazioni" #~ msgid "Clear all finished transactions" #~ msgstr "Cancella tutte le operazioni completate" #~ msgid "Resume the execution of transactions" #~ msgstr "Riprende l'esecuzione delle operazioni" #~ msgid "Pause the execution of transactions" #~ msgstr "Mette in pausa l'esecuzione delle operazioni" #~ msgid "Downloads Over Time" #~ msgstr "Download nel tempo" #~ msgid "Confirm Action" #~ msgstr "Conferma Azione" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Stai per disinstallare il seguente Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Sei sicuro?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Stai per installare il seguente Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Sei sicuro?" #~ msgid "Apps Of The Week" #~ msgstr "Applicazioni della Settimana" #, c-format #~ msgid "Released %x" #~ msgstr "Rilasciata il %x" #~ msgid "Minimize Lower Bound" #~ msgstr "Minimizzare il limite inferiore" #~ msgid "Maximize Upper Bound" #~ msgstr "Massimizzare il limite superiore" #~ msgctxt "Project URL Type" #~ msgid "VCS Browser" #~ msgstr "Sfoglia il codice sorgente" #~ msgid "Full Application View" #~ msgstr "Vista completa dell'applicazione" #~ msgid "Change what content is shown when viewing applications" #~ msgstr "" #~ "Modifica i contenuti visualizzati durante la visualizzazione delle " #~ "applicazioni" #~ msgid "" #~ "If you do not have an access token, turning this setting on may cause " #~ "GitHub to eventually rate limit you." #~ msgstr "" #~ "Se non disponi di un token di accesso, attivando questa impostazione " #~ "GitHub potrebbe eventualmente limitare la tua velocità di accesso." #~ msgid "Type to filter" #~ msgstr "Digita per cercare" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Escludi risultati con licenza proprietaria" #~ msgid "Exclude results not originating from Flathub" #~ msgstr "Escludi risultati non provenienti da Flathub" #~ msgid "Advanced" #~ msgstr "Avanzate" #~ msgid "Open this link externally" #~ msgstr "Aprire questo link in un'applicazione esterna" #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "Ricevute %'d voci su %'d (%.1f secondi trascorsi)" #~ msgid "Finished Tasks" #~ msgstr "Operazioni Completate" #, c-format #~ msgid "%s to install" #~ msgstr "%s da installare" #~ msgid "Open in Image Viewer" #~ msgstr "Apri nel Visualizzatore Immagini" #~ msgid "Installing" #~ msgstr "Installazione" #~ msgid "Updating" #~ msgstr "Aggiornamento" #~ msgid "Removing" #~ msgstr "Rimozione" #~ msgid "Show Animated Background" #~ msgstr "Mostra sfondo animato" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "Mostrare o nascondere lo sfondo animato sulla pagina iniziale" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "" #~ "Il numero di download negli ultimi 30 giorni. Clicca per vedere le " #~ "statistiche." #~ msgid "This application does not provide a donation link" #~ msgstr "Questa applicazione non fornisce un link per le donazioni" #~ msgid "Edit Permissions" #~ msgstr "Modifica le autorizzazioni" #, c-format #~ msgid "" #~ "\"%s\" does not provide a donations link. This does not mean you cannot " #~ "support them! Try looking at their <a href=\"%s\">project page</a> for " #~ "more information." #~ msgstr "" #~ "“%s†non fornisce un link per le donazioni. Ciò non significa che non " #~ "puoi sostenerli! Prova a consultare la loro <a href=\"%s\">pagina del " #~ "progetto</a> per ulteriori informazioni." #, c-format #~ msgid "" #~ "\"%s\" does not provide a donations link. This does not mean you cannot " #~ "support them! Try finding their project page for more information." #~ msgstr "" #~ "“%s†non fornisce un link per le donazioni. Ciò non significa che non " #~ "puoi sostenerli! Prova a cercare la pagina del loro progetto per " #~ "ulteriori informazioni." #~ msgid "How the application looks" #~ msgstr "Aspetto dell'applicazione" #~ msgid "Appearance" #~ msgstr "Aspetto" #~ msgid "Show animated background" #~ msgstr "Mostra sfondo animato" #~ msgid "Keep the summary shorter, between 10 and 35 characters" #~ msgstr "Mantenere la descrizione breve, tra i 10 e i 35 caratteri." #~ msgid "No description" #~ msgstr "Nessuna descrizione" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Finestra principale di Bazaar nella pagina di Blender" #~ msgid "Match using regular expressions" #~ msgstr "Corrispondenza tramite espressioni regolari" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "" #~ "Nascondere il filtro e l'ordinamento con un effetto di dissolvenza " #~ "incrociata" �����������������������������bazaar-org-bazaar-48f93f4/po/ja.po������������������������������������������������������������������0000664�0000000�0000000�00000434524�15240005042�0016722�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SPDX-FileCopyrightText: 2025 Japanese translations for bazaar package # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # # SPDX-FileCopyrightText: 2025 camegone <hoge_huga@example.com> msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-07-29 14:19+0900\n" "PO-Revision-Date: 2026-07-29 17:12+0900\n" "Last-Translator: camegone <hoge_huga@example.com>\n" "Language-Team: Japanese <kde-i18n-doc@kde.org>\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.0.1\n" #: data/io.github.kolunmi.Bazaar.desktop.in:3 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "App Store" msgstr "アプリストア" #: data/io.github.kolunmi.Bazaar.desktop.in:5 msgid "Add, remove or update flatpak software on this computer" msgstr "Flatpakã®ã‚½ãƒ•トウェアをã“ã®ã‚³ãƒ³ãƒ”ューターã«è¿½åŠ ã€å‰Šé™¤ã—ã¾ã™" #: data/io.github.kolunmi.Bazaar.desktop.in:11 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "" #: data/io.github.kolunmi.Bazaar.desktop.in:18 msgid "New Window" msgstr "æ–°ã—ã„ウィンドウ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "アプリケーションを検索ã—ãŸã‚Šã€ç®¡ç†ã—ãŸã‚Šã™ã‚‹" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Linux 用ã®é«˜é€Ÿã§ãƒ¢ãƒ€ãƒ³ãªã‚¢ãƒ—リストアã§ã™ã€‚Flatpak ã®ã‚¢ãƒ—リケーションやアドオ" "ンを検索ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã«ç‰¹åŒ–ã—ã¦ã„ã¦ã€ä¸»ã« Flathub を利用ã—ã¾ã™ã€‚" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "ダウンロードタスクをキューã«å…¥ã‚Œã¦ã€ãƒ–ラウジングを続行ã—よã†" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "ç°¡å˜ã«ã‚¢ãƒ—ãƒªã®æ¨©é™ã‚’表示ã—ã¦ã€ç·¨é›†ã™ã‚‹" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Flathub ã«ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãŠæ°—ã«å…¥ã‚Šã‚’管ç†ã€è¡¨ç¤ºã™ã‚‹" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "GNOME シェルã‹ã‚‰ç›´æŽ¥æ¤œç´¢ã™ã‚‹" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Flathub ã®ã‚¢ãƒ—リを表示ã—ã¦ã„るホームページ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Exhibit ã®ã‚¢ãƒ—リページ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "ライブラリーページ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "検索ページ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "カテゴリーページ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:79 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:101 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:162 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:187 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:212 msgid "<em>New Features</em>" msgstr "<em>新機能</em>" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:83 msgid "Added a \"Similar Apps\" section" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:85 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:111 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:248 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:278 msgid "<em>Bug Fixes</em>" msgstr "<em>ãƒã‚°ä¿®æ­£</em>" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:89 msgid "Fixed a crash when opening a second window while logged in" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:90 msgid "Only start on the Curated section if it is not empty" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:91 msgid "" "Stopped the carousel from changing the layout while screenshots are loading" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:93 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:117 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:135 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:154 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:179 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:204 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:229 msgid "Thanks for reading, and have a great day!" msgstr "読んã§ãれã¦ã‚りãŒã¨ã†! 良ã„一日を!" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:105 msgid "Added three new tabs to the \"We â¤ï¸ Games\" section" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:106 msgid "App links can now span two columns" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:107 msgid "Improved the apps startup time" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:108 msgid "Improved the image viewer opening animation" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:109 msgid "Made many accessibility improvements" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:115 msgid "" "Fixed an issue where the app page would sometimes not update when busy " "refreshing" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:125 msgid "<em>Maintenance Release</em>" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:129 msgid "Add mobile search filter" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:130 msgid "Fix infinite fetching of user data folder size" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:131 msgid "Add Network subcategories" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:132 msgid "Remove tag list SEO-ism" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:133 msgid "Rework some UI components" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:143 msgid "" "Hot fix for an issue where updates would not show. Also adds a cancel button " "to the app tiles on the search page." msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:146 msgid "<em>Other Fixes</em>" msgstr "<em>ãã®ä»–ã®ä¿®æ­£</em>" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:150 msgid "Fix Flathub page svg graphics being rendered with a solid fill" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:151 msgid "Disable broken graphs for very new Flathub apps" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:152 msgid "Add workaround for KRunner sending broken app IDs" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:166 msgid "Add support for installing (.flatpak) bundles" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:167 msgid "New progress indicators" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:168 msgid "The ability to view and delete app caches" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:170 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:195 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:222 msgid "<em>Fixes</em>" msgstr "<em>ãƒã‚°ä¿®æ­£</em>" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:174 msgid "" "Fix the download context tile not displaying a label for non-Flathub apps" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:175 msgid "Reduce RAM usage when no windows are open" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:176 msgid "" "Fix an issue where a window could open at the wrong size while a transaction " "was running" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:177 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:202 msgid "Many other bug fixes" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:191 msgid "Add support for previewing metainfo files" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:192 msgid "Show total installed apps number in the library view" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:193 msgid "Make exported desktop search provider app icon sizes adjustable" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:199 msgid "Fix download timeline graph rerendering too much" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:200 msgid "Fix animated widget ticks not being in sync with fps" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:201 msgid "Fix progress animation for vertical pride flag stripes" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:216 msgid "Rework the add-ons dialog" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:217 msgid "Add a gradient under the download timeline" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:218 msgid "Add a filter button to the search page" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:219 msgid "Add a button to show the EULA for some proprietary apps" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:220 msgid "Make the names of verified developers clickable links" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:226 msgid "Fix the colours of the update card" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:227 msgid "Make the update banner follow the accent colour" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:237 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:269 msgid "<em>Changes</em>" msgstr "<em>変更点</em>" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:241 msgid "Update to GNOME 50 Runtime" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:242 msgid "Force Adwaita icon theme to ensure consistency" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:243 msgid "Add support for clickable links in app descriptions" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:244 msgid "" "Add timed lingering cache to async textures, thereby reducing image " "flickering" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:245 msgid "Add ability to sort installed apps by size in library view" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:246 msgid "Add BAZAAR_N_DOWNLOAD_WORKERS envvar support" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:252 msgid "Fix double shadow around update cards" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:253 msgid "Fix global progress button displaying a focus ring when invisible" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:254 msgid "Fix incorrect total size displayed on update tasks" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:255 msgid "Fix empty UI when Flathub hasn't finished syncing yet" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:257 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:287 msgid "Thanks for reading and have a great day!" msgstr "読んã§ãれã¦ã‚りãŒã¨ã†! 良ã„一日を!" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:265 msgid "" "This release contains many technical improvements. This changelog reflects " "roughly 2 weeks of work." msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:273 msgid "Respect system parental controls settings" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:274 msgid "" "Reap download workers when all windows are closed, reducing total memory " "usage" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:275 msgid "Add mnemonics to full app view" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:276 msgid "Many updates to language translations" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:282 msgid "Fix broken library page when backing installed apps model is empty" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:283 msgid "" "Fix int casting bug that was causing RetroDeck to appear to be 18.4 exabytes" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:284 msgid "Make \"all apps\" category pages respect global filters" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:285 msgid "Fix some text wrapping issues" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:295 msgid "This release fixes some bugs and greatly improves search functionality." msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:299 msgid "" "If you missed the previous release, in 0.7.9 we also added the ability to " "cancel transactions in the library view, a brand new screenshots carousel, " "search suggestion buttons, and app runtime size information. You can also " "now skip confirmation dialogs by holding shift as you start a transaction." msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:306 msgid "Thanks for reading!" msgstr "読んã§ãれã¦ã‚りãŒã¨ã†!" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:314 msgid "**New Features**" msgstr "**新機能**" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:316 msgid "Search suggestion pills" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:317 #, fuzzy msgid "**Cancel installation** transactions" msgstr "ç¾åœ¨é€²è¡Œä¸­ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’åœæ­¢" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:318 msgid "Skip dialogs by pressing shift" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:319 msgid "Runtime size info for app pages" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:321 msgid "**Updated**" msgstr "**更新点**" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:323 msgid "Redesigned \"What's New\" dialog" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:324 msgid "Improved search results by utilizing Flathub rankings" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:325 #, fuzzy msgid "Improved screenshots carousel" msgstr "スクリーンショット カルーセル" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:332 msgid "" "This release lets you view and remove user-scoped installed apps from the " "library page in the Flatpak version of the app. Installing from user remotes " "is not supported yet." msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:341 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:355 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:377 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:389 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:410 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:429 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:460 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:471 msgid "This release comes with the following improvements:" msgstr "ã“ã®ãƒªãƒªãƒ¼ã‚¹ã«ã¯ä»¥ä¸‹ã®æ”¹å–„点ãŒå«ã¾ã‚Œã¦ã„ã¾ã™:" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:343 msgid "Merges the task sidebar and install page into the library page" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:344 msgid "Add installed version numbers of each app on the library and app pages" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:345 #, fuzzy msgid "Add donations dialog" msgstr "年齢レーティングダイアログ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:346 msgid "Fix broken add-on and runtime eol detection" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:347 msgid "Add `enable-bulk-install` key to curated sections" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:348 msgid "Add `override-eol-markings` main config string list" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:357 msgid "Improve context dialogs" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:358 msgid "Fix leftover data bar being shown prematurely" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:359 msgid "Have a rotation toggle for flags" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:360 msgid "Add hard check to prevent removing Bazaar flatpak" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:361 #, fuzzy msgid "Improve download statistics tooltips" msgstr "ダウンロードã®çµ±è¨ˆ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:362 msgid "Add read support for flatpak bundles" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:363 msgid "Fix critical output sometimes during transactions" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:364 msgid "Fix error popover refusing to spawn in transaction sidebar" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:371 msgid "Minor bugfix release" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:379 msgid "Fix issue where installed page is empty on opening second window" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:380 msgid "Fix screenshot flickering in search results" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:381 msgid "Fix pride flags sometimes not showing on certain locales" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:382 msgid "Add \"Install all\" to favorites page" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:391 msgid "Trash user data instead of deleting" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:392 msgid "Tweaks to permissions dialog" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:393 msgid "Fix broken EOL filtering" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:394 msgid "Add text filter to installed page" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:395 msgid "" "Add optional translations mappings for string properties in YAML configs" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:396 msgid "Hide EOL apps by default" msgstr "更新終了ã®ã‚¢ãƒ—リをデフォルトã§éžè¡¨ç¤º" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:397 msgid "Many other minor bug fixes and improvements" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:404 msgid "" "This small release ensures the new icon is rendered correctly on KDE Plasma." msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:412 msgid "New market stall icon" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:413 msgid "Remove Flathub styling" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:414 msgid "Add horizontal versions of pride flags" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:415 msgid "Text selection in app descriptions can be made across paragraph breaks" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:416 msgid "Support YAML anchors and aliases in config parsing" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:417 msgid "" "Drastically reduce disk cache writes over time by skipping unchanged entries" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:418 msgid "Show background status in popover" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:419 msgid "Add app permission system" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:420 msgid "Add back release URLs" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:421 msgid "Fix sync-remotes action in shortcut dialog" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:422 msgid "Fix visual hiccups in comet animations" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:431 msgid "Flathub account support with the ability to manage bookmarks" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:432 msgid "" "Flathub bookmarks replace star count; you can add or remove bookmarks from " "app pages" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:433 msgid "An \"Only Show Verified\" option" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:434 msgid "Exhaustive category pages for most categories" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:435 msgid "An \"Adwaita\" or \"KDE\" category shown based on desktop environment" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:436 msgid "Updated installed indicator for app tiles" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:437 msgid "3 new flag options" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:438 msgid "Fixed GNOME search provider to show the app page instead of search" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:439 msgid "" "Fixed issue where flatpakref URIs did not open when the app wasn't running " "in the background" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:440 msgid "" "Fixed issue where some proprietary apps were marked as \"Special License\"" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:441 msgid "Fixed issue where graphs did not work with touch" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:448 msgid "" "Another quick release to restore alphabetical sorting on the installed page" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:454 msgid "Quick release to allow manual refresh if flathub is being flaky" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:462 msgid "" "Fix frequent disk writes; set refresh frequency to 1 day rather than 1 hour" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:463 msgid "Add \"Delete User Data\" option when uninstalling an app" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:464 msgid "Version cache to prevent incompatibility between Bazaar versions" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:473 msgid "" "Reworked loading to be substantially faster after first start via async " "loading" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:474 msgid "A gaming section on the Flathub page" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:475 msgid "Improved UI on mobile, especially on app pages" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:476 msgid "Verified badges next to most places where apps are shown" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:477 msgid "A popover that explains what verification and non-verification mean" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:478 msgid "An \"other apps by\" page for when a developer has more than 6 apps" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:479 msgid "Tags that show other apps with the same tag when pressed" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:480 msgid "An age rating dialog" msgstr "年齢レーティングダイアログ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:481 msgid "Changed search filters into global content filters" msgstr "" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:482 msgid "5 new pride flags" msgstr "" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "æ›´æ–°ã®æä¾›çµ‚äº†" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "アンインストール" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "インストール" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "アドオンを管ç†ã™ã‚‹" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "表示ã§ãるアドオンãŒã‚りã¾ã›ã‚“" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "ç¾åœ¨ã®ãƒ•ィルターã®è¨­å®šã§ã¯ã€å…¨ã¦ã®ç¾å­˜ã™ã‚‹ã‚¢ãƒ‰ã‚ªãƒ³ãŒéžè¡¨ç¤ºã«ãªã£ã¦ã„ã¾ã™ã€‚設" "定を変更ã—ã¦ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。" #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "アドオン ページ" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:408 msgid "Downloads/Month" msgstr "月ã‚ãŸã‚Šã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰æ•°" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:444 msgid "Stopped Receiving Core Updates" msgstr "ã‚³ã‚¢ã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆã®æä¾›çµ‚äº†" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "ã“ã®ã‚¢ãƒ‰ã‚ªãƒ³ã¯æ›´æ–°ã‚„ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¿®æ­£ã®æä¾›ãŒçµ‚了ã—ãŸãƒ©ãƒ³ã‚¿ã‚¤ãƒ ã‚’使用ã—ã¦ã„ã¾" "ã™ã€‚ å°†æ¥çš„ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒå®‰å…¨ã§ãªããªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "%s 用ã®ã‚¢ãƒ‰ã‚ªãƒ³" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "折り畳む" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "ã‚‚ã£ã¨è¦‹ã‚‹" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "ダウンロード状態" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:187 #: src/context-tile-callbacks.c:194 msgid "Age Rating" msgstr "年齢レーティング" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "ã‚«ãƒ¼ãƒˆã‚¥ãƒ¼ãƒ³èª¿ã®æš´åŠ›" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "ã‚«ãƒ¼ãƒˆã‚¥ãƒ¼ãƒ³èª¿ã®æš´åŠ›ã«é–¢ã™ã‚‹æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "ãƒ•ã‚¡ãƒ³ã‚¿ã‚¸ãƒ¼é¢¨ã®æš´åŠ›" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "ãƒ•ã‚¡ãƒ³ã‚¿ã‚¸ãƒ¼é¢¨ã®æš´åŠ›ã«é–¢ã™ã‚‹æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "ãƒªã‚¢ãƒ«ãªæš´åŠ›" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "ãƒªã‚¢ãƒ«ãªæš´åŠ›ã«é–¢ã™ã‚‹æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "æµè¡€è¡¨ç¾ã‚’å«ã‚€æš´åŠ›" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "æµè¡€è¡¨ç¾ã«é–¢ã™ã‚‹æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "性的暴力" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "性的暴力ã«é–¢ã™ã‚‹æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "アルコール" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "アルコールã«é–¢ã™ã‚‹æå†™ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "麻薬" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "麻薬ã«é–¢ã™ã‚‹æå†™ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "ã‚¿ãƒã‚³" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "ã‚¿ãƒã‚³ã«é–¢ã™ã‚‹æå†™ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "ヌード" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "ã‚らゆるヌードæå†™ã«é–¢ã™ã‚‹æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "性的ãªãƒ†ãƒ¼ãƒž" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "性的ãªè¦ç´ ã‚„æå†™ã«é–¢ã™ã‚‹æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "ä¸é©åˆ‡ãªè¨€è‘‰" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "ã‚らゆるä¸é©åˆ‡ãªè¨€è‘‰ã€è¡Œå‹•ã«é–¢ã™ã‚‹æå†™ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "ä¸é©åˆ‡ãªãƒ¦ãƒ¼ãƒ¢ã‚¢" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "ä¸é©åˆ‡ãªãƒ¦ãƒ¼ãƒ¢ã‚¢ã«åã™ã‚‹æå†™ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "差別" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "ã‚らゆる差別的ãªè¨€è‘‰ã«é–¢ã™ã‚‹æå†™ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "広告" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "ã‚らゆる広告ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "ギャンブル" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "ã‚らゆる種類ã®ã‚®ãƒ£ãƒ³ãƒ–ルæå†™ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "購入" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "ãŠé‡‘を払ã†ã“ã¨ãŒã§ãã‚‹ã‹ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "ユーザーåŒå£«ã®ãƒãƒ£ãƒƒãƒˆ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ãƒãƒ£ãƒƒãƒˆã‚’ã™ã‚‹æ–¹æ³•ãŒã‚ã‚‹ã‹ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "ユーザーåŒå£«ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ä¼šè©±ã‚’ã™ã‚‹æ–¹æ³•ãŒã‚ã‚‹ã‹ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "連絡先" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "SNS ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒãƒ¼ãƒ ã‚„ã€e-メールアドレスを共有ã™ã‚‹ã“ã¨ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾" "ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "特定å¯èƒ½ãªæƒ…å ±" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æƒ…報を第三者ã¨å…±æœ‰ã™ã‚‹ã“ã¨ã«é–¢ã—ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "ä½ç½®æƒ…å ±ã®å…±æœ‰" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ç‰©ç†çš„ãªä½ç½®æƒ…報を共有ã™ã‚‹ã“ã¨ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "売春" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "売春ã«é–¢ã™ã‚‹æå†™ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "姦通" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "姦通 (ä¸å€«) ã«é–¢ã™ã‚‹æå†™ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "性的特徴付ã‘られãŸã‚­ãƒ£ãƒ©ã‚¯ã‚¿ãƒ¼" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "性的特徴付ã‘られãŸã‚­ãƒ£ãƒ©ã‚¯ã‚¿ãƒ¼ã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "冒涜" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "" "å†’æ¶œçš„ãªæå†™ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã®å†’æ¶œçš„ãªæå†™ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "äººã®æ­»ä½“" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "äººã®æ­»ä½“ã«é–¢ã™ã‚‹è¡¨ç¤ºã«ã¤ã„ã¦ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "奴隷制度" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "奴隷ã«é–¢ã™ã‚‹æå†™ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã®æƒ…å ±ã¯ã‚りã¾ã›ã‚“" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "ãƒ‰ãƒ©ãƒƒã‚°ã®æå†™ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "汚ã„言葉やä¸é©åˆ‡ãªè¨€è‘‰ã€ä¹±æš´ãªè¨€è‘‰ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "広告やアプリ内ã§ã®å–引ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "性的æå†™ã‚„ヌードã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "無制é™ã®ãƒãƒ£ãƒƒãƒˆæ©Ÿèƒ½ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "暴力æå†™ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "ドラッグ" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "乱暴ãªè¨€è‘‰" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "ãŠé‡‘" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "ソーシャル" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "暴力" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:177 #, c-format msgid "%d+" msgstr "" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "全年齢" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s ã®å¹´é½¢ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã¯ä¸æ˜Žã§ã™" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s ã¯å…¨ã¦ã®å¹´é½¢ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s ã¯å°ã•ãªå­ä¾›ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s ã¯å­ä¾›ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s ã¯ãƒ†ã‚£ãƒ¼ãƒ³ã‚¨ã‚¤ã‚¸ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s ã¯å¤§äººã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s 㯠%s ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "システムフォルダー %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "ホームã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "ホストシステムã®ãƒ•ォルダー" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "/etc ディレクトリã«ã‚るホストシステムã®è¨­å®š" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "デスクトップ内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "デスクトップã®ãƒ•ォルダー" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "ドキュメント内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "ドキュメントã®ãƒ•ォルダー" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "ミュージック内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "ミュージックã®ãƒ•ォルダー" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "ピクãƒãƒ£å†…ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "ピクãƒãƒ£ã®ãƒ•ォルダー" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "公開フォルダー内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "公開フォルダー" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "ビデオ内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "ビデオã®ãƒ•ォルダー" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "テンプレート内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "テンプレートã®ãƒ•ォルダー" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "ユーザーキャッシュ内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "ユーザーã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ•ォルダー" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "ユーザー設定内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "ユーザー設定ã®ãƒ•ォルダー" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "ユーザーデータ内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "ユーザーデータã®ãƒ•ォルダー" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "ユーザーランタイム内ã®ã‚µãƒ–フォルダー %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "ユーザーランタイムã®ãƒ•ォルダー" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "%s ã¸ã®ãƒ•ァイルシステム アクセス" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "䏿˜Žãªãƒ•ァイルシステムã®ãƒ‘ス" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "ダウンロードサイズ" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "インストール済ã¿ã®ã‚µã‚¤ã‚º" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "インターãƒãƒƒãƒˆã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®é‡" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "ディスク上ã®ã‚µã‚¤ã‚º" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "ユーザーデータã®ãƒ•ォルダーを開ã" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "キャッシュや設定ã€ãã®ä»–ã®ã‚¢ãƒ—リデータ" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "キャッシュ" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "一時的ãªã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ‡ãƒ¼ã‚¿" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "キャッシュを削除" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "インストール済ã¿ãƒ©ãƒ³ã‚¿ã‚¤ãƒ ã®ã‚µã‚¤ã‚º" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "ランタイムã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚µã‚¤ã‚º" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:394 #: src/context-tile-callbacks.c:416 msgid "N/A" msgstr "利用ä¸èƒ½" #: src/bz-app-size-dialog.c:207 msgid "App Size" msgstr "アプリã®ã‚µã‚¤ã‚º" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "èªè¨¼æ¸ˆã¿" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:136 msgid "Installed" msgstr "インストール済ã¿" #: src/bz-application.c:766 msgid "The Bazaar Contributors" msgstr "Bazzar ã®è²¢çŒ®è€…ãŸã¡" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:769 msgid "translator-credits" msgstr "camegone, 2025, 2026" #: src/bz-application.c:779 msgid "Special Thanks" msgstr "スペシャルサンクス" #: src/bz-application.c:837 msgid "Logged Out Successfully!" msgstr "正常ã«ãƒ­ã‚°ã‚¢ã‚¦ãƒˆã•れã¾ã—ãŸ!" #: src/bz-application.c:1027 msgid "Ubuntu Troubles!" msgstr "Ubuntu ã®ãƒˆãƒ©ãƒ–ル!" #: src/bz-application.c:1030 msgid "" "The more recent versions of Ubuntu have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version of " "Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Ubuntu ã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ãƒ‡ãƒ•ォルトã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã®ã›ã„ã§ã€Flatpak 版" "ã® Bazaar ã§<b>アプリをインストールã™ã‚‹ã“ã¨ãŒä¸å¯èƒ½</b>ã«ãªã£ã¦ã„ã¾ã™ã€‚ãã®ãŸ" "ã‚ã€ä»Šã¯é€šå¸¸ã®ãƒ‘ッケージを以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ä½¿ç”¨ã—ã¦ãã ã•ã„\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "ãã®å¾Œã«ã€Flatpak 版を次ã®ã‚³ãƒžãƒ³ãƒ‰ã§å‰Šé™¤ã—ã¦ãã ã•ã„\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1036 msgid "Continue Anyway" msgstr "ãれã§ã‚‚続行ã™ã‚‹" #: src/bz-application.c:1052 msgid "Performing setup…" msgstr "セットアップã®å®Ÿè¡Œä¸­â€¦" #: src/bz-application.c:1144 msgid "Set Up System Flathub?" msgstr "システム㫠Flathub をセットアップã—ã¾ã™ã‹?" #: src/bz-application.c:1147 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub リモートã¯ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ ã§ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã•れã¦ã„ã¾ã›ã‚“。Bazaar ã§ã‚¢ãƒ—" "リを検索ã—ãŸã‚Šã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ãŸã‚ã«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã« Flathub をセットアップã™ã‚‹" "å¿…è¦ãŒã‚りã¾ã™ã€‚ \n" "\n" "ã‚ãªãŸã¯å¼•ãç¶šã Bazaar ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®ã‚¢ãƒ—リを検索ã—ãŸã‚Šå‰Šé™¤ã™ã‚‹ã“ã¨ãŒ" "ã§ãã¾ã™ã€‚" #: src/bz-application.c:1154 msgid "Set Up Flathub?" msgstr "Flathub をセットアップã—ã¾ã™ã‹?" #: src/bz-application.c:1157 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub ã¯ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ ã§ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã•れã¦ã„ã¾ã›ã‚“。Flathub ãŒåˆ©ç”¨ã§ããª" "ã„å ´åˆã€ã‚¢ãƒ—リを検索ã—ãŸã‚Šã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n" "\n" "ã‚ãªãŸã¯å¼•ãç¶šã Bazaar ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®ã‚¢ãƒ—リを検索ã—ãŸã‚Šå‰Šé™¤ã™ã‚‹ã“ã¨ãŒ" "ã§ãã¾ã™ã€‚" #: src/bz-application.c:1163 msgid "Later" msgstr "後ã§" #: src/bz-application.c:1164 msgid "Set Up Flathub" msgstr "Flathub をセットアップã™ã‚‹" #: src/bz-application.c:1697 msgid "A backend error occurred" msgstr "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: src/bz-application.c:1905 src/bz-application.c:4152 msgid "Refreshing…" msgstr "å†èª­ã¿è¾¼ã¿ä¸­â€¦" #: src/bz-application.c:2069 src/bz-application.c:4150 #, c-format msgid "Loading %d apps…" msgstr "%d 個ã®ã‚¢ãƒ—リをロード中…" #: src/bz-application.c:2122 src/bz-application.c:2196 msgid "Failed to open file" msgstr "ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-application.c:2210 msgid "Failed to load metainfo" msgstr "メタ情報ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" #: src/bz-application.c:2304 msgid "An initialization error occurred" msgstr "åˆæœŸåŒ–中ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: src/bz-application.c:2703 msgid "Checking for updates…" msgstr "更新を確èªä¸­â€¦" #: src/bz-application.c:2759 msgid "Failed to check for updates" msgstr "æ›´æ–°ã®ç¢ºèªã«å¤±æ•—ã—ã¾ã—ãŸ" #: src/bz-application.c:3925 msgid "Malformed Link" msgstr "正常ã§ãªã„リンク" #: src/bz-application.c:3926 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "ã“ã®ã‚¢ãƒ—リを開ããŸã‚ã«ä½¿ã‚れãŸãƒªãƒ³ã‚¯ã¯èª¤ã£ãŸç®‡æ‰€ãŒå¤§æ–‡å­—ã«ãªã£ã¦ãŠã‚Šã€å°†æ¥çš„" "ã«å‹•作ã—ãªããªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n" "\n" "ã“れã¯ãŠã‚‚ã« KRunner ãŒèª¤ã£ãŸã‚¢ãƒ—リ ID ã‚’é€ä¿¡ã™ã‚‹ãŸã‚ã«èµ·ã“りã¾ã™" #: src/bz-application.c:3934 msgid "Could not find app" msgstr "アプリãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-application.c:4154 msgid "Writing to cache…" msgstr "キャッシュを書ãè¾¼ã¿ä¸­â€¦" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "ã™ã¹ã¦è¡¨ç¤º" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "å…¨ã¦ã®ã€Œ%sã€" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç·æ•°: %d" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "記事ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "ãƒãƒ³ãƒ‰ãƒ«ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "追加ã®ä¾å­˜é–¢ä¿‚ãŒã€è¿½åŠ ã®ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ã‚’使用ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "ã“ã®ã‚¢ãƒ—リをインストールã™ã‚‹ãŸã‚ã«ã¯ã€æ–°ã—ã„ソフトウェアã®ã‚½ãƒ¼ã‚¹ã‚’追加ã™ã‚‹å¿…" "è¦ãŒã‚りã¾ã™ã€‚ãã®ã‚½ãƒ¼ã‚¹ã«å«ã¾ã‚Œã‚‹ä»–ã®ã‚¢ãƒ—リ㌠Bazaar ã«è¡¨ç¤ºã•れるよã†ã«ãªã‚Š" "ã¾ã™ã€‚\n" "\n" "ã“ã®ã‚½ãƒ¼ã‚¹ã‚’確実ã«ä¿¡ç”¨ã§ãã‚‹å ´åˆã®ã¿ã€è¿½åŠ ã—ã¦ãã ã•ã„。" #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ã¾ã—ãŸ!" #. TRANSLATORS: Button to launch an installed app #: src/bz-bundle-install-dialog.blp:438 src/bz-bundle-install-dialog.blp:524 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:299 msgid "Open" msgstr "é–‹ã" #: src/bz-bundle-install-dialog.blp:448 src/bz-bundle-install-dialog.blp:534 msgid "Show App Details" msgstr "アプリケーションã®è©³ç´°ã‚’é–‹ã" #: src/bz-bundle-install-dialog.blp:499 msgid "Already Installed" msgstr "ã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿" #: src/bz-bundle-install-dialog.blp:546 msgid "Installation Failed" msgstr "インストールã«å¤±æ•—" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚µã‚¤ã‚ºä¸æ˜Ž" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "インストールã¾ã§ã‚㨠%s" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "ç‰¹åˆ¥ãªæ¨©é™ãªã—" #: src/bz-curated-view.blp:27 msgid "No Curation" msgstr "特é¸ã‚¢ãƒ—リãªã—" #: src/bz-curated-view.blp:29 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "特é¸ã‚¢ãƒ—ãƒªã®æƒ…å ±ãŒã“ã®ã‚·ã‚¹ãƒ†ãƒ å‘ã‘ã«æä¾›ã•れã¦ã„ã¾ã›ã‚“。ã§ã™ãŒ Flathub ã®ã‚¢ãƒ—" "リを閲覧ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã™" #: src/bz-curated-view.blp:33 msgid "Browse Flathub" msgstr "Flathub を閲覧" #: src/bz-curated-view.blp:49 msgid "Offline" msgstr "オフライン" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "èªè¨¼ãªã—" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "開発者ã«é–¢ã™ã‚‹æƒ…å ±ãŒã‚りã¾ã›ã‚“。" #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "ã“ã®ã‚¢ãƒ—リ IDã€%s ã®æ‰€æœ‰æ¨©ã¯æ¤œè¨¼ã•れã¦ãŠã‚‰ãšã€ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã®ãƒ‘ッケージã§ã‚ã‚‹" "å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "ã“ã®ã‚¢ãƒ—リ IDã€%s ã®æ‰€æœ‰æ¨©ã¯ Flathub ã®ãƒãƒ¼ãƒ ãŒæ‰‹å‹•ã§æ¤œè¨¼æ¸ˆã¿ã§ã™ã€‚" #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "ã“ã®ã‚¢ãƒ—リ IDã€%1$s ã®æ‰€æœ‰æ¨©ã¯ <b>%3$s</b> ã«æ‰€å±žã™ã‚‹ <b>%2$s</b> ã«ã‚ˆã£ã¦æ¤œ" "証済ã¿ã§ã™ã€‚" #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "ã“ã®ã‚¢ãƒ—リ IDã€%1$s ã®æ‰€æœ‰æ¨©ã¯ã€%2$s を使ã£ã¦æ¤œè¨¼æ¸ˆã¿ã§ã™ã€‚" #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "ã“ã®ã‚¢ãƒ—リ IDã€%s ã®æ‰€æœ‰æ¨©ã¯æ¤œè¨¼æ¸ˆã¿ã§ã™ã€‚" #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "更新履歴ã®å…¨æ–‡" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "ã“ã®æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã‚ãªãŸã®ã‚ˆã†ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãŠã‹ã’ã§å®Ÿç¾ã—ã¾ã—ãŸ!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "ç§ã¯ Bazaar ã®é–‹ç™ºãŒå¥½ãã§ã™ãŒã€ãれã¯ç§ä¸€äººã ã‘ã§ã¯ã§ãã¾ã›ã‚“。もã—ã‚ãªãŸãŒ" "å°†æ¥çš„ãªé–‹ç™ºã®ç¶™ç¶šã‚’支æ´ã—ãŸã„ãªã‚‰ã€ko-fi ã§ãƒ—ロジェクトを支æ´ã™ã‚‹ã“ã¨ã‚’検討" "ã—ã¦ãã ã•ã„。" #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Bazaar ã«å¯„付ã™ã‚‹" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s ã§ã®å¤‰æ›´ç‚¹ã¯ä½•?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "リリース日: %Y/%0m/%0d" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "インストールã®é¸æŠž" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "ã‚ãªãŸã¯ã“ã®ã‚¢ãƒ—リã®è¤‡æ•°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インストールã—ã¦ã„ã¾ã™ã€‚ã©ã‚Œã‚’é¸æŠžã—ã¦" "ç¶šã‘ã¾ã™ã‹?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "キャンセル" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:98 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "詳細" #. TRANSLATORS: tooltip for a button that copies text to the clipboard #: src/bz-error-dialog.blp:48 msgid "Copy" msgstr "コピーã™ã‚‹" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "コピーã—ã¾ã—ãŸ!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "ãŠæ°—ã«å…¥ã‚Šã•ã‚ŒãŸæ•°" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’æ›´æ–°ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Flathub ã«ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãŠæ°—ã«å…¥ã‚Šã‚’管ç†ã™ã‚‹" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "ログイン" #: src/bz-favorites-page.blp:5 src/bz-window.blp:348 msgid "Favorites" msgstr "ãŠæ°—ã«å…¥ã‚Š" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "å…¨ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: src/bz-favorites-page.blp:47 msgid "No Favorites" msgstr "ãŠæ°—ã«å…¥ã‚ŠãŒã‚りã¾ã›ã‚“" #: src/bz-favorites-page.blp:48 msgid "Applications you mark as favorite will appear here" msgstr "ã‚ãªãŸãŒãŠæ°—ã«å…¥ã‚Šãƒžãƒ¼ã‚¯ã‚’ã¤ã‘ãŸã‚¢ãƒ—リãŒã“ã“ã«è¡¨ç¤ºã•れã¾ã™" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "ã“ã®ã‚¢ãƒ—リケーションを支æ´ã™ã‚‹" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰å‰Šé™¤" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "å‰ã¸" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "次ã¸" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "編集" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "ミキサー" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "音楽" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "プレーヤー" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "レコーダー" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "シーケンサー" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "ãƒãƒ¥ãƒ¼ãƒŠãƒ¼" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "テレビ" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "エミュレーター" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "アクション" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "アドベンãƒãƒ£ãƒ¼" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "アーケード" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "ブロック" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "ボードゲーム" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "カードゲーム" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "å­ä¾›å‘ã‘" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "è«–ç†" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "ロールプレイング" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "射撃系" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "シミュレーション" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "スãƒãƒ¼ãƒ„" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "戦略" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "ブラウザー" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "ãƒãƒ£ãƒƒãƒˆ" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "メール" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "ファイルã®å…±æœ‰" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "映åƒã‚„音楽" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "メディア" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "映åƒã‚„音楽をもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "開発ツール" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "開発" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "開発ツールをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "教育" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "å­¦ã¶" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "教育アプリをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "ゲーム" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "éŠã¶" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "ゲームをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "ç”»åƒã‚„写真" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "創作ã™ã‚‹" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "ç”»åƒã‚„写真関連ã®ã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "インターãƒãƒƒãƒˆ" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯é–¢é€£ã®ã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "生産性å‘上" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "åƒã" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "生産性å‘上アプリをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "ç§‘å­¦" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "科学アプリをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:142 msgid "System" msgstr "システム" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "システムアプリをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "便利ツール" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:434 msgid "Tools" msgstr "ツール" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "便利ツールをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:106 #: src/bz-flathub-page.blp:138 msgid "Trending" msgstr "話題ã®ã‚¢ãƒ—リ" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "話題ã®ã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:112 #: src/bz-flathub-page.blp:171 msgid "Popular" msgstr "人気ã®ã‚¢ãƒ—リ" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "人気アプリをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:160 msgid "Recently Added" msgstr "最近追加ã•れãŸã‚¢ãƒ—リ" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:118 msgid "New" msgstr "æ–°ã—ã„アプリ" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "æ–°ç€ã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:149 msgid "Recently Updated" msgstr "最近更新ã•れãŸã‚¢ãƒ—リ" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:124 msgid "Updated" msgstr "æ›´æ–°ã•れãŸã‚¢ãƒ—リ" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "æ›´æ–°ã•れãŸã‚‚ã®ã‚’ã‚‚ã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "モãƒã‚¤ãƒ«" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "モãƒã‚¤ãƒ«å¯¾å¿œã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Adwaita ã‚’ã‚‚ã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "KDE アプリ" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "KDE ã®ã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:416 msgid "Games" msgstr "ゲーム" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:476 msgid "More Games" msgstr "ゲームをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:422 msgid "Emulators" msgstr "エミュレーター" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "エミュレーターをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:428 msgid "Launchers" msgstr "ランãƒãƒ£ãƒ¼" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "ゲームランãƒãƒ£ãƒ¼ã‚’ã‚‚ã£ã¨è¦‹ã‚‹" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "ゲーム用ツール" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "ゲーム用ツールをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-page.blp:22 msgid "Flathub Not Added" msgstr "Flathub ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: src/bz-flathub-page.blp:23 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "ã“ã®ã‚³ãƒ³ãƒ”ューター上ã®ã©ã® Flatpak ã«ã‚‚ Flathub リモートレãƒã‚¸ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚Š" "ã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-flathub-page.blp:32 msgid "Can't Reach Flathub" msgstr "Flathub ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-flathub-page.blp:33 msgid "You can still manage and search for apps." msgstr "アプリã®ç®¡ç†ã¨æ¤œç´¢ã¯ä»Šã§ã‚‚ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" #: src/bz-flathub-page.blp:39 msgid "Search Apps" msgstr "アプリ検索" #: src/bz-flathub-page.blp:50 msgid "Reconnect" msgstr "å†æŽ¥ç¶š" #: src/bz-flathub-page.blp:199 msgid "App of the Day" msgstr "今日ã®ã‚¢ãƒ—リ" #: src/bz-flathub-page.blp:262 msgid "On the Go" msgstr "ã©ã“ã§ã‚‚一緒" #: src/bz-flathub-page.blp:274 msgid "Apps for your Linux phones and tablets" msgstr "Linux フォンやタブレットå‘ã‘ã®ã‚¢ãƒ—リ" #: src/bz-flathub-page.blp:285 src/bz-flathub-page.blp:320 msgid "More Mobile Apps" msgstr "モãƒã‚¤ãƒ«å¯¾å¿œã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-flathub-page.blp:378 msgid "We​ ♥​ Games" msgstr "" #: src/bz-flathub-page.blp:391 msgid "Games and apps to run your favorite titles" msgstr "ã‚²ãƒ¼ãƒ ã‚„ãŠæ°—ã«å…¥ã‚Šã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’éŠã¶ãŸã‚ã®ã‚¢ãƒ—リ" #: src/bz-full-view.blp:33 msgid "No Results" msgstr "çµæžœç„¡ã—" #: src/bz-full-view.blp:34 msgid "Try a different search query" msgstr "別ã®èªžå¥ã§æ¤œç´¢ã—ã¦ã¿ã¦ãã ã•ã„" #: src/bz-full-view.blp:103 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "ã“れã¯ãƒ­ãƒ¼ã‚«ãƒ«ã®ãƒ—レビューã§ã™ã€‚ç´°ã‹ãªéƒ¨åˆ†ã¯å…¬é–‹ã®ãƒªã‚¹ãƒˆã®ãƒšãƒ¼ã‚¸ã¨ç•°ãªã‚‹å¯èƒ½" "性ãŒã‚りã¾ã™" #: src/bz-full-view.blp:106 msgid "Preview Store Appearance" msgstr "ストアã®å¤–観をプレビュー" #: src/bz-full-view.blp:233 msgid "_Support" msgstr "支æ´ã™ã‚‹(_S)" #: src/bz-full-view.blp:458 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "ã“ã®ã‚¢ãƒ—ãƒªã¯æ›´æ–°ã‚„ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¿®æ­£ã®æä¾›ãŒçµ‚了ã—ãŸãƒ©ãƒ³ã‚¿ã‚¤ãƒ ã‚’使用ã—ã¦ã„ã¾" "ã™ã€‚ å°†æ¥çš„ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒå®‰å…¨ã§ãªããªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/bz-full-view.blp:536 msgid "Trash Data" msgstr "データをゴミ箱ã«ç§»å‹•" #: src/bz-full-view.blp:599 msgid "Add-ons" msgstr "アドオン" #: src/bz-full-view.blp:634 msgid "More Add-Ons" msgstr "アドオンをã•らã«è¡¨ç¤º" #: src/bz-full-view.blp:645 msgid "Links" msgstr "リンク" #: src/bz-full-view.blp:676 msgid "Similar Apps" msgstr "ä¼¼ãŸã‚¢ãƒ—リ" #: src/bz-full-view.c:181 msgid "No URL" msgstr "URL ãŒã‚りã¾ã›ã‚“" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "ã“ã®ã‚¢ãƒ—リケーションã¯ãƒ•リー㮠FLOSS ライセンスã§å…¬é–‹ã•れã¦ãŠã‚Šã€å®‰å…¨ã®ãŸã‚ã«" "ソースコードを確èªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "ã“ã®ã‚¢ãƒ—リケーションã¯ãƒ—ロプライエタリãªãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã§å…¬é–‹ã•れã¦ãŠã‚Šã€ã‚½ãƒ¼ã‚¹" "コードã¯ãƒ—ライベートã§é–‹ç™ºã•れã¦ã„ã‚‹ãŸã‚ã€ç‹¬ç«‹ã—ãŸç¬¬ä¸‰è€…ã«ã‚ˆã‚‹æ¤œæŸ»ã‚’å—ã‘ã‚‹ã“" "ã¨ãŒã§ãã¾ã›ã‚“。" #: src/bz-full-view.c:207 msgid "More Apps" msgstr "アプリをもã£ã¨è¦‹ã‚‹" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "%s ã®ã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "ã“ã®é–‹ç™ºè€…ã®åˆ¥ã®ã‚¢ãƒ—リ" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "%s ã®åˆ¥ã®ã‚¢ãƒ—リ" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "%s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“ãŒã€<b>%s</b> ã®ãƒ‡ãƒ¼ã‚¿ã¯æ®‹å­˜ã—ã¦ã„ã¾ã™ã€‚" #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "ä»–ã®ã‚¢ãƒ—リ" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç·æ•°: %d" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:160 msgid "Failed to Remove User Data" msgstr "ユーザーデータを削除ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®ã‚µãƒãƒ¼ãƒˆ" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "キーボードã®ã‚µãƒãƒ¼ãƒˆ" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "キーボードã®ä½¿ç”¨ãŒå¿…é ˆ" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "キーボードã®ä½¿ç”¨ã‚’推奨" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "キーボードãŒä½¿ç”¨å¯èƒ½" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "キーボードã®ã‚µãƒãƒ¼ãƒˆçжæ³ãŒä¸æ˜Ž" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "マウスã®ã‚µãƒãƒ¼ãƒˆ" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "マウス等ã®ãƒã‚¤ãƒ³ãƒ†ã‚£ãƒ³ã‚°ãƒ‡ãƒã‚¤ã‚¹ã®ä½¿ç”¨ãŒå¿…é ˆ" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "マウス等ã®ãƒã‚¤ãƒ³ãƒ†ã‚£ãƒ³ã‚°ãƒ‡ãƒã‚¤ã‚¹ã®ä½¿ç”¨ã‚’推奨" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "マウス等ã®ãƒã‚¤ãƒ³ãƒ†ã‚£ãƒ³ã‚°ãƒ‡ãƒã‚¤ã‚¹ãŒä½¿ç”¨å¯èƒ½" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "マウス等ã®ãƒã‚¤ãƒ³ãƒ†ã‚£ãƒ³ã‚°ãƒ‡ãƒã‚¤ã‚¹ã®ã‚µãƒãƒ¼ãƒˆçжæ³ãŒä¸æ˜Ž" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "タッãƒã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã®ã‚µãƒãƒ¼ãƒˆ" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "タッãƒã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã®ä½¿ç”¨ãŒå¿…é ˆ" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "タッãƒã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã®ä½¿ç”¨ã‚’推奨" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "タッãƒã‚¹ã‚¯ãƒªãƒ¼ãƒ³ãŒä½¿ç”¨å¯èƒ½" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "タッãƒã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã®ã‚µãƒãƒ¼ãƒˆçжæ³ãŒä¸æ˜Ž" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "モãƒã‚¤ãƒ«ç«¯æœ«ã®ã‚µãƒãƒ¼ãƒˆ" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "モãƒã‚¤ãƒ«ç«¯æœ«ã§ä½¿ç”¨å¯èƒ½" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "モãƒã‚¤ãƒ«ç«¯æœ«ã§ã¯å‹•ã‹ãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "デスクトップã®ã‚µãƒãƒ¼ãƒˆ" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "大ããªç”»é¢ã§å¿«é©ã«å‹•作ã—ã¾ã™" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s ã¯ç‰¹å®šã®ãƒ‡ãƒã‚¤ã‚¹ãŒæ­è¼‰ã•れãŸç«¯æœ«ã§å¿«é©ã«å‹•作ã—ã¾ã™" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s ã¯ã»ã¨ã‚“ã©ã®ãƒ‡ãƒã‚¤ã‚¹ã§å‹•作ã—ã¾ã™" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "インスペクターã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "é–‹ã(_O)" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "ã“ã®ã‚¢ãƒ—リケーションをアンインストール" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "削除ã™ã‚‹(_R)" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "æ›´æ–°" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "削除ã™ã‚‹" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "%s ã‚’ %s ã‹ã‚‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "%s をインストール" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "キャンセル" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "キャンセル中" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "寄付ボタン" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "インストール済ã¿ã®ã‚¢ãƒ—リを検索" #: src/bz-library-page.blp:32 msgid "No Apps Found" msgstr "アプリケーションãŒã‚りã¾ã›ã‚“" #: src/bz-library-page.blp:49 msgid "Search Store Instead" msgstr "代ã‚りã«ã‚¹ãƒˆã‚¢ã‚’検索" #: src/bz-library-page.blp:86 msgid "Pending Updates" msgstr "実行待ã¡ã®æ›´æ–°" #: src/bz-library-page.blp:113 msgid "Downloads" msgstr "ダウンロード一覧" #: src/bz-library-page.blp:156 msgid "Recently Uninstalled" msgstr "最近アンインストールã•れãŸã‚¢ãƒ—リ" #: src/bz-library-page.blp:207 msgid "Clear Finished Tasks" msgstr "完了ã—ãŸã‚¿ã‚¹ã‚¯ã‚’削除" #: src/bz-library-page.blp:234 msgid "Sort Options" msgstr "ソート設定" #: src/bz-library-page.blp:293 msgid "Sort By" msgstr "ソート順" #: src/bz-library-page.blp:307 msgid "Name" msgstr "åå‰" #: src/bz-library-page.blp:313 msgid "Size" msgstr "サイズ" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "" "インストール済ã¿ã®ã‚¢ãƒ—リ一覧ã«ã¯ã€ã€Œ%sã€ã¨ã„ã†å˜èªžã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u ä»¶ã®åˆ©ç”¨å¯èƒ½ãªã‚¢ãƒƒãƒ—デート" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u ä»¶ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®ã‚¢ãƒ—リ" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "アプリケーションãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "å‚加ã™ã‚‹" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "詳細を表示" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "䏿˜Žãªãƒ©ã‚¤ã‚»ãƒ³ã‚¹" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "コミュニティーã«ã‚ˆã£ã¦ä½œã‚‰ã‚Œã¾ã—ãŸ" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:289 msgid "Proprietary" msgstr "プロプライエタリ" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:291 msgid "Special License" msgstr "特別ãªãƒ©ã‚¤ã‚»ãƒ³ã‚¹" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "ã“ã®ã‚¢ãƒ—リã¯å›½éš›çš„ãªã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã«ã‚ˆã£ã¦ã‚ªãƒ¼ãƒ—ンã«é–‹ç™ºã•れã¦ã„ã¾ã™ã€‚\n" "\n" "ã‚ãªãŸã¯é–‹ç™ºã«å‚加ã—ã¦æ©Ÿèƒ½æ”¹å–„ã®æ‰‹åŠ©ã‘ãŒã§ãã¾ã™ã€‚" #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "ã“ã®ã‚¢ãƒ—リã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã¯ä¸æ˜Žã§ã™" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "ã“ã®ã‚¢ãƒ—リã¯å›½éš›çš„ãªã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã«ã‚ˆã£ã¦ã‚ªãƒ¼ãƒ—ンã«é–‹ç™ºã•れã¦ã„ã¦ã€%s ライセン" "スã®ã‚‚ã¨ã§å…¬é–‹ã•れã¦ã„ã¾ã™ã€‚\n" "\n" "ã‚ãªãŸã¯é–‹ç™ºã«å‚加ã—ã¦æ©Ÿèƒ½æ”¹å–„ã®æ‰‹åŠ©ã‘ãŒã§ãã¾ã™ã€‚" #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "ã“ã®ã‚¢ãƒ—リã¯ã‚ªãƒ¼ãƒ—ンソースã¨ã—ã¦é–‹ç™ºã•れã¦ã„ãªã„ãŸã‚ã€é–‹ç™ºè€…ã—ã‹ã©ã‚“ãªå‡¦ç†ã‚’" "行ã£ã¦ã„ã‚‹ã‹ã‚’知るã“ã¨ãŒã§ãã¾ã›ã‚“。ã“れã«ã‚ˆã£ã¦ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®è„…å¨ã‚’発見ã™" "ã‚‹ã“ã¨ãŒé›£ã—ããªã£ãŸã‚Šã€å¤–部ã®ç›£è¦–ç„¡ã—ã«æ‚ªæ„ã®ã‚るコードã«å¤‰æ›´ã•れるå¯èƒ½æ€§ãŒ" "ã‚りã¾ã™ã€‚\n" "\n" "ã‚ãªãŸã¯ã“ã®ã‚¢ãƒ—リã«å¯¾ã—ã¦ã®è²¢çŒ®ã‚’行ã†ã“ã¨ãŒã§ããªã„ã‹ã‚‚ã—れã¾ã›ã‚“。" #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "ã“ã®ã‚¢ãƒ—リã¯ç‰¹åˆ¥ãªãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã€%s ã®ä¸‹é–‹ç™ºã•れã¦ã„ã¾ã™ã€‚\n" "ã‚ãªãŸã¯ã“ã®ã‚¢ãƒ—リã«å¯¾ã—ã¦è²¢çŒ®ã‚’行ã†ã“ã¨ãŒã§ããªã„ã‹ã‚‚ã—れã¾ã›ã‚“。" #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "ライセンス" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Flathub ã«æŽ¥ç¶šã™ã‚‹" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "ログインã—ã¦ã€ãŠæ°—ã«å…¥ã‚Šã®ã‚¢ãƒ—リをデãƒã‚¤ã‚¹é–“ã§åŒæœŸã—よã†" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "完了" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "よã†ã“ãã€%s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "アイコンをメタ情報ã®ãƒ—レビューã«è¿½åŠ ã—ã¾ã™ã‹?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to " "select one manually?" msgstr "" "メタ情報ファイル自体ã«ã¯ã‚¢ãƒ—リアイコンãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。手動ã§é¸æŠžã—ã¾ã™ã‹?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "スキップ" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "ã‚¢ã‚¤ã‚³ãƒ³ã‚’é¸æŠž" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "ç”»åƒãƒ•ァイル" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "設定" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "従é‡èª²é‡‘ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã—ã¦ã„ã¾ã™ — ストア情報ã®è‡ªå‹•読ã¿è¾¼ã¿ã¯ä¸€æ™‚åœæ­¢ã•" "れã¦ã„ã¾ã™" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "手動ã§åŒæœŸã™ã‚‹" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "ã‚¢ãƒ—ãƒªã®æ›´æ–°" #: src/bz-preferences-dialog.blp:46 msgid "" "Checking for and downloading app updates uses data and power. Automatic app " "update features are therefore paused when on metered network connections and " "when power saver is on." msgstr "" "自動ã§ã‚¢ãƒ—ãƒªã®æ›´æ–°ã‚’確èªã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ã®ã¯é€šä¿¡é‡ã¨é›»åŠ›ã‚’ä½¿ç”¨ã—ã¾ã™ã€‚ã" "ã®ãŸã‚ã€ã‚¢ãƒ—リã®è‡ªå‹•更新機能ã¯å¾“é‡èª²é‡‘制ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã—ã¦ã„ã‚‹ã¨ãã‚„ã€" "çœé›»åŠ›æ©Ÿèƒ½ãŒã‚ªãƒ³ã«ãªã£ã¦ã„ã‚‹ã¨ãã«ã¯ä¸€æ™‚åœæ­¢ã•れã¾ã™ã€‚" #: src/bz-preferences-dialog.blp:52 msgid "_Automatic" msgstr "自動(_A)" #: src/bz-preferences-dialog.blp:53 msgid "Automatically check for and download app updates" msgstr "自動ã§ã‚¢ãƒ—ãƒªã®æ›´æ–°ã‚’確èªã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™" #: src/bz-preferences-dialog.blp:62 msgid "_Manual" msgstr "手動(_M)" #: src/bz-preferences-dialog.blp:63 msgid "Checking for and downloading app updates must be done manually" msgstr "ã‚¢ãƒ—ãƒªã®æ›´æ–°ã®ç¢ºèªã¨ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’手動ã§è¡Œã†å¿…è¦ãŒã‚りã¾ã™" #: src/bz-preferences-dialog.blp:78 msgid "Automatic Update _Notifications" msgstr "è‡ªå‹•ã®æ›´æ–°ã‚’通知(N)" #: src/bz-preferences-dialog.blp:79 msgid "Notify when updates have been automatically installed" msgstr "æ›´æ–°ãŒè‡ªå‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸæ™‚ã«é€šçŸ¥ã—ã¾ã™" #: src/bz-preferences-dialog.blp:84 msgid "Content Filters" msgstr "コンテンツフィルター" #: src/bz-preferences-dialog.blp:87 msgid "_Free Software Only" msgstr "フリーã®ã‚½ãƒ•トウェアã®ã¿è¡¨ç¤º(_F)" #: src/bz-preferences-dialog.blp:88 msgid "Hide proprietary apps when browsing and searching" msgstr "プロプライエタリã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’æŽ¢ç´¢ã‚¿ãƒ–ã‚„æ¤œç´¢çµæžœã‹ã‚‰é™¤å¤–ã™ã‚‹" #: src/bz-preferences-dialog.blp:93 msgid "F_lathub Results Only" msgstr "Flathub ã‹ã‚‰ã®æ¤œç´¢çµæžœã®ã¿è¡¨ç¤º(_L)" #: src/bz-preferences-dialog.blp:94 msgid "Limit search and browse results to apps only available on Flathub" msgstr "æŽ¢ç´¢ã‚¿ãƒ–ã‚„æ¤œç´¢çµæžœã‚’ Flathub ã§åˆ©ç”¨å¯èƒ½ãªã‚¢ãƒ—リã®ã¿ã«é™å®šã™ã‚‹" #: src/bz-preferences-dialog.blp:99 msgid "_Verified Results Only" msgstr "検証済ã¿ã®æ¤œç´¢çµæžœã®ã¿è¡¨ç¤º(_V)" #: src/bz-preferences-dialog.blp:100 msgid "Hide results that are not verified on Flathub" msgstr "Flathub ã§æ¤œè¨¼ã•れã¦ã„ãªã„アプリケーションをéžè¡¨ç¤ºã«ã™ã‚‹" #: src/bz-preferences-dialog.blp:105 msgid "Hide _End-of-Life Apps" msgstr "更新終了ã—ãŸã‚¢ãƒ—リをéžè¡¨ç¤º(_E)" #: src/bz-preferences-dialog.blp:106 msgid "Hide apps which are no longer supported by their developers" msgstr "開発者ã«ã‚ˆã‚‹ã‚µãƒãƒ¼ãƒˆãŒçµ‚了ã—ãŸã‚¢ãƒ—リをéžè¡¨ç¤ºã«ã™ã‚‹" #: src/bz-preferences-dialog.blp:112 msgid "Progress Bar Theme" msgstr "プログレスãƒãƒ¼ã®ãƒ†ãƒ¼ãƒž" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "アクセントカラー" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "プライドカラー" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "レズビアン プライド カラー" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "男性 ホモセクシャル プライド カラー" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "トランスジェンダー プライド カラー" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "ノンãƒã‚¤ãƒŠãƒªãƒ¼ プライド カラー" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "ãƒã‚¤ã‚»ã‚¯ã‚·ãƒ¥ã‚¢ãƒ« プライド カラー" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "アセクシュアル プライド カラー" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "パンセクシュアル プライド カラー" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "アロマンティック プライド カラー" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "ジェンダーフルイド プライド カラー" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "ãƒãƒªã‚»ã‚¯ã‚·ãƒ¥ã‚¢ãƒ« プライド カラー" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "オムニセクシュアル プライド カラー" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "アロエース プライド カラー" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "アジェンダー プライド カラー" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "ジェンダークィア プライド カラー" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "インターセックス プライド カラー" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "デミジェンダー プライド カラー" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "ãƒã‚¤ãƒ­ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ プライド カラー" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "ディスアビリティー プライド カラー" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "フェムボーイ プライドカラー" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "ニュートロワ プライド カラー" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³å±¥æ­´" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³å±¥æ­´(_V)" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "今日" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "昨日" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d æ—¥å‰" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 週間å‰" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d ヶ月å‰" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d å¹´å‰" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%Y/%0m/%0d" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "ã“ã®ãƒªãƒªãƒ¼ã‚¹ã®è©³ç´°æƒ…å ±ãŒã‚りã¾ã›ã‚“" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "詳細情報を確èªã™ã‚‹" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "アンインストール" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "入手" #: src/bz-safety-dialog.blp:31 src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "ä»»æ„ã®æ¨©é™" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "ã“ã®ã‚¢ãƒ—リ㯠Flatpak ã®ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ã‚’迂回ã—ã¦ã€<b>ä»»æ„ã®å–å¾—ã—ãŸã„権é™</b>" "を自らã«ä»˜ä¸Žã§ãる権é™ã‚’æŒã£ã¦ã„ã¾ã™ã€‚\n" "\n" "ãã®ãŸã‚ã€ã“ã®ã‚¢ãƒ—リã¯ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹åŒ–ã•れã¦ã„ãªã„ä»–ã®ã‚¢ãƒ—リãŒã§ãる通常ã®ã“" "ã¨ãŒã™ã¹ã¦ã§ãã¾ã™ã€‚例ãˆã°ã€ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ ã®ã™ã¹ã¦ã®ãƒ•ァイルã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸ" "りã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«æŽ¥ç¶šã—ãŸã‚Šãªã©ã§ã™ã€‚\n" "\n" "権é™ã®ä¸€è¦§ã‚’見るã“ã¨ã§ã€ã“ã®ã‚¢ãƒ—リãŒä½•ã‚’ã™ã‚‹ã‹ã‚’予測ã™ã‚‹åŠ©ã‘ã«ãªã‚Šã¾ã™ã€‚" #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "ä»–ã®æ¨©é™ã®ä¸€è¦§ã‚’見る" #. TRANSLATORS: short app safety rating label #: src/bz-safety-dialog.blp:79 src/context-tile-callbacks.c:402 msgid "Safe" msgstr "安全" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "アプリ ID" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "ã“ã®ã‚¢ãƒ—リã¯å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚½ãƒ•トウェア開発キット (SDK) を使用ã—ã¦ãŠã‚Šã€ãƒã‚°" "や脆弱性ãªã©ã®ä¿®æ­£ãŒæä¾›ã•れãªã„ã¾ã¾ã«ãªã£ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "安全性" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s ã¯å®‰å…¨ã§ã™" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s ã¯å±é™ºãªæ¨©é™ã‚’使用ã—ã¦ã„ã¾ã›ã‚“" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s ã¯ãŠãらã安全ã§ã™" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s ã¯ãŠãらã安全ã§ã¯ã‚りã¾ã›ã‚“" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s ã¯å®‰å…¨ã§ã¯ã‚りã¾ã›ã‚“" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "戻る" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "å‰ã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆ" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "次ã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆ" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "ç”»åƒã‚’コピー" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "表示をリセット" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "ズームアウト" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "ズームイン" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "スクリーンショット カルーセル" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "スクリーンショットãªã—" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "スクリーンショットビューアを開ã" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "スクリーンショット %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "スクリーンショット %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "検索を削除" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "フィルター" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "èªè¨¼æ¸ˆã¿(_V)" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "フリー/オープン(_F)" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "サãƒãƒ¼ãƒˆä¸­(_E)" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "更新終了ã—ãŸã‚¢ãƒ—リを除外ã™ã‚‹" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "モãƒã‚¤ãƒ«å¯¾å¿œ(_M)" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "カテゴリー一覧" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "アプリã€ã‚²ãƒ¼ãƒ ã€ã‚½ãƒ•トウェアを検索" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "検索フィルター" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "カテゴリー一覧" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "カテゴリーãŒåˆ©ç”¨ä¸èƒ½ã§ã™" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "ç”»é¢ä¸Šå´ã«ã‚る検索ãƒãƒ¼ã‚’使用ã—ã¦ã‚¢ãƒ—リを検索ã™ã‚‹ã€‚" #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "アプリケーションãŒã‚りã¾ã›ã‚“" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "「%sã€ã¨ã„ã†æ¤œç´¢èªžå¥ã«åˆè‡´ã™ã‚‹ã‚¢ãƒ—リã¯ã€Flathub ã«ã‚りã¾ã›ã‚“ã§ã—ãŸ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "ブラウザー" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "å‹•ç”»" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "オフィス" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "カレンダー" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "メッセージ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "ãŠçµµæã" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "エミュレーター" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub ページ" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "プロジェクトã®ã‚¦ã‚§ãƒ–サイト" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "ãƒã‚°ãƒˆãƒ©ãƒƒã‚«ãƒ¼" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "よãã‚る質å•" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "ヘルプ" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "寄付" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "翻訳" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "連絡先" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "ソースコード" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "貢献ã™ã‚‹" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "マニフェスト" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "リンクをコピーã™ã‚‹" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "時系列" #. TRANSLATORS: label prefix shown in graph tooltips, for example: "Installs: 42" #: src/bz-stats-dialog.blp:48 msgid "Installs:" msgstr "インストール数:" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:58 msgid "World" msgstr "地域別" #: src/bz-stats-dialog.blp:72 msgid "Since 4/15/2024" msgstr "2024/04/15 ã‹ã‚‰" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "ç·ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å›žæ•°: %.2fM 回" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "ç·ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å›žæ•°: %.2fK 回" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "ç·ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å›žæ•°: %'d 回" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "æ¤œç´¢çµæžœç„¡ã—" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "検索ã«å¤±æ•—ã—ã¾ã—ãŸ" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ã‚’ä¿æŒ" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "設定やコンテンツをã¾ãŸä½¿ã†ã“ã¨ã®ã§ãるよã†ã«ä¿æŒã™ã‚‹" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’削除" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "アプリã®ãƒ‡ãƒ¼ã‚¿ã‚’永久ã«å‰Šé™¤ã—ã¦å®¹é‡ã‚’確ä¿ã™ã‚‹" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "%s をインストールã—ã¾ã™ã‹?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "ã©ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インストールã™ã‚‹ã‹ã‚’é¸æŠžã—ã¦ãã ã•ã„。追加ã®å…±æœ‰ã®ã‚³ãƒ³ãƒãƒ¼ãƒ" "ントãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れるã“ã¨ãŒã‚りã¾ã™" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "追加ã®å…±æœ‰ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れるã“ã¨ãŒã‚りã¾ã™" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "キャンセル(_C)" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "インストール(_I)" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "%s を削除ã—ã¾ã™ã‹?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "削除ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸æŠžã—ã¦ãã ã•ã„。" #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "%s をアンインストールã—ãŸå¾Œã¯ã€åˆ©ç”¨ã§ããªããªã‚Šã¾ã™ã€‚" #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "「%sã€ã¯é«˜ãƒªã‚¹ã‚¯ã§ã™" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "ã“ã®ã‚¢ãƒ—リã¯ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ ã«å®Œå…¨ãªã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã§ã‚りã€ã“れã¯<b>ã‚ãªãŸã®" "ファイルã€ãƒ–ラウザã®é–²è¦§å±¥æ­´ã€ä¿å­˜ã—ãŸãƒ‘スワード</b> ã«ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ãªã†ãˆã€ã‚¤" "ンターãƒãƒƒãƒˆã«æŽ¥ç¶šã—ã¦ç¬¬ä¸‰è€…ã¸ã‚ãªãŸã®ãƒ‡ãƒ¼ã‚¿ã‚’é€ä¿¡å¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¾" "ã™ã€‚\n" "\n" "ã“ã®ã‚¢ãƒ—リã¯ãƒ—ロプライエタリã§ã‚りã€å–å¾—ã—ãŸæ¨©é™ã§ä½•を行ã£ã¦ã„ã‚‹ã‹ã‚’検査ã™ã‚‹" "ã“ã¨ãŒã§ãã¾ã›ã‚“。" #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "ã“ã®ã‚¢ãƒ—リã¯å¤ã„ X11 ウィンドウシステムを使用ã—ã¦ãŠã‚Šã€<b>å…¨ã¦ã®ã‚­ãƒ¼ã‚¹ãƒˆãƒ­ãƒ¼" "クを記録ã—ãŸã‚Šã€ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆã‚’æ’®ã£ãŸã‚Šã€ä»–ã®ã‚¢ãƒ—リケーションを監視ã™ã‚‹" "</b>ã“ã¨ãŒã§ãã¾ã™ã€‚ã•らã«ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«æŽ¥ç¶šå¯èƒ½ãªãŸã‚ã€ç¬¬ä¸‰è€…ã«ã‚ãªãŸã®" "データをé€ä¿¡å¯èƒ½ãªã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚\n" "\n" "ã“ã®ã‚¢ãƒ—リã¯ãƒ—ロプライエタリã§ã‚りã€å–å¾—ã—ãŸæ¨©é™ã§ä½•を行ã£ã¦ã„ã‚‹ã‹ã‚’検査ã™ã‚‹" "ã“ã¨ãŒã§ãã¾ã›ã‚“。" #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "ãれã§ã‚‚インストールã™ã‚‹(_I)" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "ファイルæ“作ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "å…¨ã¦ã®ã‚¢ãƒ—リãŒã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã§ã™" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "OK(_O)" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "%u 個ã®ã‚¢ãƒ—リをインストールã—ã¾ã™ã‹?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "以下ã®ã‚‚ã®ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã™ã€‚追加ã®å…±æœ‰ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れ" "ã‚‹ã“ã¨ãŒã‚りã¾ã™" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d 個ã®ã‚¢ãƒ‰ã‚ªãƒ³ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã™ã€‚" #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "追加ã§ã€ã„ãã¤ã‹ã®ã‚¢ãƒ‰ã‚ªãƒ³ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã™ã€‚" #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "å…¨ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«(_I)" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "%.02f ç§’ã§å®Œäº†ã—ã¾ã—ãŸ" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "アプリ アドオン" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "ランタイム" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "順番待ã¡" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "完了" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "キャンセル済" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "エラー" #: src/bz-transaction-tile.blp:313 msgid "Cancel Transaction" msgstr "ファイルæ“作をキャンセル" #: src/bz-transaction-tile.blp:323 msgid "Show Details" msgstr "詳細を開ã" #: src/bz-transaction-tile.blp:438 msgid "Show Error Info" msgstr "エラーã®è©³ç´°ã‚’表示" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s を解放ã—ã¾ã—ãŸ" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "ファイルæ“作ã®ã‚¨ãƒ©ãƒ¼" #: src/bz-transaction.c:344 msgid "Pending" msgstr "ä¸€æ™‚åœæ­¢ä¸­" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "å…¨ã¦æ›´æ–°(_U)" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u ä»¶ã®ãƒ©ãƒ³ã‚¿ã‚¤ãƒ ã®ã‚¢ãƒƒãƒ—デート" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "残存ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ã‚’管ç†" #: src/bz-user-data-page.blp:32 msgid "No Leftover User Data Found" msgstr "残存ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: src/bz-user-data-page.blp:33 msgid "Personal data left behind by apps that were removed will show up here" msgstr "削除済ã¿ã®ã‚¢ãƒ—ãƒªãŒæ®‹ã—ãŸå€‹äººç”¨ãƒ‡ãƒ¼ã‚¿ãŒã“ã“ã«è¡¨ç¤ºã•れã¾ã™" #: src/bz-user-data-page.c:229 #, c-format msgid "Trashed User Data for %u Apps" msgstr "%u 個ã®ã‚¢ãƒ—リã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ã‚’ゴミ箱ã«ç§»å‹•ã—ã¾ã—ãŸ" #: src/bz-user-data-page.c:230 #, c-format msgid "Trashed User Data for %s" msgstr "%s ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ã‚’ゴミ箱ã«ç§»ã™" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "ユーザーデータã®ãƒ•ォルダーを開ã" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "ユーザーデータをゴミ箱ã«ç§»å‹•" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "å†èª­ã¿è¾¼ã¿ä¸­" #: src/bz-window.blp:90 msgid "Curated" msgstr "特é¸ã‚¢ãƒ—リ" #: src/bz-window.blp:102 msgid "Explore" msgstr "探索" #. Translators: . #: src/bz-window.blp:114 msgid "Library" msgstr "ライブラリー" #: src/bz-window.blp:129 msgid "Search" msgstr "検索" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "メインメニュー" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Bazaar ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæ–°ã—ããªã‚Šã¾ã—ãŸ!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "変更点を見る" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã•れã¦ã„ã¾ã™ãŒã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•れ㟠Flathub を表示ã—ã¦ã„ã¾ã™" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "" "従é‡èª²é‡‘ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã—ã¦ã„ã¾ã™ — ストア情報ã®è‡ªå‹•読ã¿è¾¼ã¿ã¯ä¸€æ™‚åœæ­¢ã•" "れã¦ã„ã¾ã™" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "Bazaar ã«å¯„付ã™ã‚‹(_D)" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "å†èª­ã¿è¾¼ã¿(_R)" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "Flathub ã«ãƒ­ã‚°ã‚¤ãƒ³(_L)" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "残存ã—ã¦ã„るユーザーデータを管ç†(_M)" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "設定(_P)" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "キーボードショートカット(_K)" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "Bazaar ã«ã¤ã„ã¦(_A)" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "Bazaar を終了(_Q)" #: src/bz-window.blp:355 msgid "Log Out" msgstr "ログアウト" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "アプリケーションã®èµ·å‹•失敗" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Bazaar を使ã£ã¦ Bazaar を削除ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "今ã™ãã«ã¯ã§ãã¾ã›ã‚“!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "ä»¶ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "éŽåŽ»1ヶ月ã®é–“ã« %d ダウンロード" #. TRANSLATORS: %s is a formatted file size, for example: "128 MB" #: src/context-tile-callbacks.c:133 #, c-format msgid "+%s runtime" msgstr "+%s ランタイム" #: src/context-tile-callbacks.c:136 msgid "Download" msgstr "ダウンロード" #: src/context-tile-callbacks.c:156 msgid "Size information unavailable" msgstr "ã‚µã‚¤ã‚ºã®æƒ…å ±ãŒã‚りã¾ã›ã‚“" #: src/context-tile-callbacks.c:159 #, c-format msgid "Download size of %s" msgstr "ダウンロードサイズ: %s" #: src/context-tile-callbacks.c:192 msgid "All Ages" msgstr "全年齢" #: src/context-tile-callbacks.c:204 msgid "Age rating information unavailable" msgstr "å¹´é½¢ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã®æƒ…å ±ãŒã‚りã¾ã›ã‚“" #: src/context-tile-callbacks.c:209 msgid "Suitable for all ages" msgstr "å…¨ã¦ã®å¹´é½¢ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/context-tile-callbacks.c:211 #, c-format msgid "Suitable for ages %d and up" msgstr "%d 歳以上ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #: src/context-tile-callbacks.c:244 src/context-tile-callbacks.c:249 #: src/context-tile-callbacks.c:277 src/context-tile-callbacks.c:286 msgid "Unknown" msgstr "䏿˜Ž" #: src/context-tile-callbacks.c:254 #, c-format msgid "Free software licensed under %s" msgstr "%s ライセンスã®ã‚‚ã¨å…¬é–‹ã•れã¦ã„るフリーソフト" #: src/context-tile-callbacks.c:259 msgid "Free software" msgstr "フリーã®ã‚½ãƒ•トウェア" #: src/context-tile-callbacks.c:262 msgid "Proprietary Software" msgstr "プロプライエタリ ソフトウェア" #: src/context-tile-callbacks.c:265 #, c-format msgid "Special License: %s" msgstr "特別ãªãƒ©ã‚¤ã‚»ãƒ³ã‚¹: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:283 msgid "Free Software" msgstr "フリーã®ã‚½ãƒ•トウェア" #: src/context-tile-callbacks.c:311 msgid "Adaptive" msgstr "幅広ã„デãƒã‚¤ã‚¹ã«å¯¾å¿œ" #: src/context-tile-callbacks.c:311 msgid "Desktop Only" msgstr "デスクトップã®ã¿" #: src/context-tile-callbacks.c:317 msgid "Works on desktop, tablets, and phones" msgstr "デスクトップã€ã‚¿ãƒ–ãƒ¬ãƒƒãƒˆã€æºå¸¯é›»è©±ã§å‹•ãã¾ã™" #: src/context-tile-callbacks.c:318 msgid "May not work on mobile devices" msgstr "モãƒã‚¤ãƒ«ç«¯æœ«ã§ã¯å‹•ã‹ãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:405 src/context-tile-callbacks.c:408 msgid "Low Risk" msgstr "低ã„リスク" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:411 msgid "Medium Risk" msgstr "中間ã®ãƒªã‚¹ã‚¯" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:414 msgid "High Risk" msgstr "高ã„リスク" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "䏿˜Žãªæ¨©é™" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "ã“ã®ã‚¢ãƒ—リã®å‹•作ã«å¿…è¦ãªæ¨©é™ãŒè¨±å¯ã•れã¦ã„ã¾ã›ã‚“。" #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "使用ã™ã‚‹æ¨©é™ãªã—" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "アプリã¯å®Œå…¨ã«ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹åŒ– (隔離) ã•れã¦ã„ã¾ã™" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アクセス" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "インターãƒãƒƒãƒˆã«æŽ¥ç¶šã™ã‚‹" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アクセスãªã—" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "インターãƒãƒƒãƒˆã«æŽ¥ç¶šã—ãªã„" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "ユーザーデãƒã‚¤ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "ウェブカメラやゲーム用コントローラーã®ã‚ˆã†ãªãƒ‡ãƒã‚¤ã‚¹ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "ユーザーデãƒã‚¤ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãªã—" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" "ウェブカメラやゲーム用コントローラーã®ã‚ˆã†ãªãƒ‡ãƒã‚¤ã‚¹ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "入力デãƒã‚¤ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "入力デãƒã‚¤ã‚¹ã¸ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "マイクã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¨éŸ³å£°å†ç”Ÿ" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "マイクã®å…¥åŠ›ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¨éŸ³å£°å†ç”Ÿã‚’許å¯ãªã行ãˆã¾ã™" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "システムデãƒã‚¤ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "ç‰¹æ¨©ã‚’è¦æ±‚ã•れるシステムデãƒã‚¤ã‚¹ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "ç”»é¢ã®å†…容ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "ç”»é¢ã‚„ä»–ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«è¡¨ç¤ºã•れã¦ã„る内容ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒã§ãã¾ã™" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "å¤ã„ウィンドウシステム" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "常ã«å¤ã„ウィンドウシステム (X11) を使用ã—ã¾ã™" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "ä»»æ„ã®ã‚らゆる権é™ã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "ユーザー設定" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "ユーザーã®è¨­å®šã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¨å¤‰æ›´ãŒã§ãã¾ã™" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "ファイルシステム全体ã®èª­ã¿æ›¸ãアクセス" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "ファイルシステム上全ã¦ã®ãƒ•ァイルã®èª­ã¿æ›¸ããŒã§ãã¾ã™" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "ホームフォルダーã®èª­ã¿æ›¸ãアクセス" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "ã‚ãªãŸã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã®å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’èª­ã¿æ›¸ãã§ãã¾ã™" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "ファイルシステム全体ã®èª­ã¿è¾¼ã¿ã‚¢ã‚¯ã‚»ã‚¹" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "ファイルシステム上全ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã¿ã§ãã¾ã™" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "ホームフォルダーã®èª­ã¿è¾¼ã¿ã‚¢ã‚¯ã‚»ã‚¹" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "ã‚ãªãŸã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã®å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã®èª­ã¿è¾¼ã¿ãŒã§ãã¾ã™" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "ダウンロードフォルダーã®èª­ã¿æ›¸ãアクセス" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "ã‚ãªãŸã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ ディレクトリ内ã®å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’èª­ã¿æ›¸ãã§ãã¾ã™" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "ダウンロードフォルダーã®èª­ã¿è¾¼ã¿ã‚¢ã‚¯ã‚»ã‚¹" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "ã‚ãªãŸã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ ディレクトリ内ã®å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿ã“ã¿ã§ãã¾ã™" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã®å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’èª­ã¿æ›¸ãã§ãã¾ã™" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã®å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã®èª­ã¿è¾¼ã¿ãŒã§ãã¾ã™" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "ファイルシステムã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãªã—" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "ファイルシステムã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯å…¨ã行ã„ã¾ã›ã‚“" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "システムサービスを使用" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Portal 以外ã®ã‚·ã‚¹ãƒ†ãƒ ã‚µãƒ¼ãƒ“スã¸ãƒ‡ãƒ¼ã‚¿ã‚’リクエストã§ãã¾ã™" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "セッション サービスを使用" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Portal 以外ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ サービスã¸ãƒ‡ãƒ¼ã‚¿ã‚’リクエストã§ãã¾ã™" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "サービスã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãªã—" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "" "Portal 以外ã®ã‚·ã‚¹ãƒ†ãƒ ã‚„セッションã®ã‚µãƒ¼ãƒ“スã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’å…¨ã行ã„ã¾ã›ã‚“" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "検証済ã¿ã‚¢ãƒ—リ開発者" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "ã“ã®ã‚¢ãƒ—リã®é–‹ç™ºè€…ã¯ãªã‚Šã™ã¾ã—ã§ã¯ãªã„ã“ã¨ãŒç¢ºèªã•れã¦ã„ã¾ã™" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "プロプライエタリãªã‚³ãƒ¼ãƒ‰" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "ソースコードãŒå…¬é–‹ã•れã¦ã„ãªã„ãŸã‚ã€å€‹åˆ¥ã«ç›£æŸ»ã™ã‚‹ã“ã¨ãŒã§ããšã€è„†å¼±ã§ã‚ã‚‹å¯" "能性ãŒã‚りã¾ã™" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "検査å¯èƒ½ãªã‚³ãƒ¼ãƒ‰" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "ã“ã®ã‚¢ãƒ—リã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯å…¬é–‹ã•れã¦ãŠã‚Šã€è‡ªä¸»çš„ã«æ¤œæŸ»å¯èƒ½ãªãŸã‚ã€å®‰å…¨ãªå¯èƒ½" "性ãŒé«˜ã„ã§ã™" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "システムサービス %s を使用" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "セッション サービス %s を使用" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "サービス %s を使用" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Portal 以外ã®ã‚µãƒ¼ãƒ“スを見るã“ã¨ãŒã§ãã¾ã™" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Portal 以外ã®ã‚µãƒ¼ãƒ“スã¨é€šä¿¡ã§ãã¾ã™" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Portal 以外ã®ã‚µãƒ¼ãƒ“ã‚¹ã‚’ä¿æœ‰ã§ãã¾ã™" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "グローãƒãƒ« メニュー統åˆ" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "グローãƒãƒ«ãªãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã«è¿½åŠ ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’表示ã§ãã¾ã™" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "KDE 設定統åˆ" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "KDE デスクトップã®è¨­å®šãŒå¤‰æ›´ã•れãŸã¨ãã«æ¤œçŸ¥ã§ãã¾ã™" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "KDE ã®ã‚°ãƒ­ãƒ¼ãƒãƒ«è¨­å®š" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "KDE デスクトップã®è¨­å®š (フォントやカラーãªã©) を読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "シークレット ストレージ サービス" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "システムã®ã‚­ãƒ¼ãƒªãƒ³ã‚°ã‚’使用ã—ã¦ã€ãƒ‘スワードをä¿å­˜ã¾ãŸã¯å¼•ã出ã™ã“ã¨ãŒã§ãã¾ã™" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "デスクトップ通知サービス" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "デスクトップã«é€šçŸ¥ã‚’é€ä¿¡ã§ãã¾ã™" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "システムトレイ統åˆ" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "システムトレイã«ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã§ãã¾ã™" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "KDE コãƒã‚¯ãƒˆçµ±åˆ" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "KDE コãƒã‚¯ãƒˆã§ãƒšã‚¢ãƒªãƒ³ã‚°ã•れãŸãƒ‡ãƒã‚¤ã‚¹ã¨é€šä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "ナビゲーション" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "探索ページを表示" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "ライブラリ ページを開ã" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "検索ページを表示" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "リモート" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "リモートã¨åŒæœŸ" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "一般" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "設定を開ã" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "ショートカットを表示" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "ウィンドウを閉ã˜ã‚‹" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Bazaar を終了" #: src/update-worker.c:358 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "%u 個ã®ã‚¢ãƒ—ãƒªãŒæ›´æ–°ã•れã¾ã—ãŸ" #: src/update-worker.c:361 #, c-format msgid "%s has been updated." msgstr "%s ã¯æ›´æ–°ã•れã¾ã—ãŸã€‚" #: src/update-worker.c:364 #, c-format msgid "%s and %s have been updated." msgstr "%s 㨠%s ã¯æ›´æ–°ã•れã¾ã—ãŸã€‚" #: src/update-worker.c:368 #, c-format msgid "Includes %s, %s and %s." msgstr "%s ã€%s 㨠%s ã‚’å«ã‚€" #~ msgid "Free" #~ msgstr "フリー" #~ msgid "Empty" #~ msgstr "空" #~ msgid "Loading" #~ msgstr "読ã¿è¾¼ã¿ä¸­" #~ msgid "Flathub Unavailable" #~ msgstr "Flathub ãŒåˆ©ç”¨ä¸å¯" #~ msgid "Content" #~ msgstr "内容" #~ msgid "Clear search" #~ msgstr "検索を削除" #~ msgid "Select Metainfo File" #~ msgstr "ãƒ¡ã‚¿æƒ…å ±ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" #~ msgid "Metainfo Files" #~ msgstr "メタ情報ファイル" #~ msgid "Preview" #~ msgstr "プレビュー" #~ msgid "User Data" #~ msgstr "ユーザーデータ" #~ msgid "Add pending state to the global progress bar" #~ msgstr "全体ã®ãƒ—ログレスãƒãƒ¼ã«ä¸­æ­¢ã®çŠ¶æ…‹ã‚’è¿½åŠ ã—ã¾ã—ãŸ" #~ msgid "More improvements:" #~ msgstr "改善点:" #~ msgid "Some improvements:" #~ msgstr "改善点:" #~ msgid "This release includes:" #~ msgstr "今回ã®ãƒªãƒªãƒ¼ã‚¹ã«å«ã¾ã‚Œã‚‹å¤‰æ›´:" #~ msgid "User Data Size" #~ msgstr "ユーザーデータã®ã‚µã‚¤ã‚º" #~ msgid "Open App Library" #~ msgstr "アプリ ライブラリを開ã" #~ msgid "Flathub returned an error" #~ msgstr "Flathub ãŒã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¾ã—ãŸ" #~ msgid "Retry Flathub Connection" #~ msgstr "Flathub ã¸ã®æŽ¥ç¶šã‚’å†è©¦è¡Œ" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "" #~ ".flatpak å½¢å¼ã®ãƒãƒ³ãƒ‰ãƒ«ã‚’インストールã™ã‚‹æ©Ÿèƒ½ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" #~ msgid "Tags:" #~ msgstr "ã‚¿ã‚°:" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "" #~ "ã‚ãªãŸã® Flathub アカウントを Bazzar ã¸æŽ¥ç¶šã—ã¦ã€ãŠæ°—ã«å…¥ã‚Šã®ã‚¢ãƒ—リを管ç†" #~ "ã—よã†ã€‚" #~ msgid "Delay Search Results" #~ msgstr "検索ã®é…å»¶" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "" #~ "入力ã‹ã‚‰æ¤œç´¢ã¾ã§ã‚’ã‚ãšã‹ã«é…å»¶ã•ã›ã‚‹ã“ã¨ã§æ¤œç´¢ã®ãƒ‘フォーマンスをå‘上ã•ã›ã‚‹" #~ msgid "Progress Bar" #~ msgstr "プログレスãƒãƒ¼" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "プログレスãƒãƒ¼ã‚’好ããªãƒ†ãƒ¼ãƒžã§å½©ã‚Šã¾ã—ょã†!" #~ msgid "Vertical Stripes" #~ msgstr "垂直ã®ã‚¹ãƒˆãƒ©ã‚¤ãƒ—" #~ msgid "Display flag colors from left to right" #~ msgstr "æ——ã®è‰²ã‚’å·¦ã‹ã‚‰å³ã¸ã¨è¡¨ç¤ºã—ã¾ã™" #~ msgid "Steam" #~ msgstr "Steam" #~ msgid "Minecraft" #~ msgstr "Minecraft" #~ msgid "Open Link" #~ msgstr "リンクを開ã" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "\"%s\" ã‚¿ã‚°ã®ã¤ã„ãŸã‚¢ãƒ—リ" #~ msgid "Refresh completed!" #~ msgstr "å†èª­ã¿è¾¼ã¿å®Œäº†!" #~ msgctxt "As in, \"100 Installs\"" #~ msgid "Installs" #~ msgstr "インストール" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "å†èª­ã¿è¾¼ã¿" #~ msgid "_Donate to Bazaar â¤ï¸" #~ msgstr "Bazaar ã«å¯„付ã™ã‚‹â¤ï¸(_D)" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgctxt "As in, \"100 Downloads\"" #~ msgid "Downloads" #~ msgstr "ダウンロード" #~ msgid "Download & Install Application" #~ msgstr "アプリケーションをダウンロードã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "Linux ã®ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—を開発ã—ã¦ã„る開発者ãŸã¡ã‚’支æ´ã™ã‚‹ã“ã¨ã¯é‡è¦ã§ã™ã€‚" #~ "Bazaar ã§ã¯ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューターãŒç®¡ç†ã§ãる「特é¸ã‚¢ãƒ—リã€ã‚¿ãƒ–ã«ã‚ˆã£ã¦ãƒ¦ãƒ¼" #~ "ザーã®ä½“験を最é©åŒ–ã™ã‚‹ã“ã¨ã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚" #~ msgid "Install Other Version" #~ msgstr "ã»ã‹ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インストール" #~ msgid "%e %B" #~ msgstr "%0m/%0d" #~ msgid "Keep Data" #~ msgstr "ãƒ‡ãƒ¼ã‚¿ã‚’ä¿æŒ" #~ msgid "Open App" #~ msgstr "アプリを開ã" #~ msgid "Support this application" #~ msgstr "ã“ã®ã‚¢ãƒ—リケーションを支æ´ã™ã‚‹" #~ msgid "Manage Add-ons" #~ msgstr "アドオンを管ç†ã™ã‚‹" #~ msgid "_Login with Flathub" #~ msgstr "Flathub ã«ãƒ­ã‚°ã‚¤ãƒ³(_L)" #~ msgid "_Synchronize Remotes" #~ msgstr "リモートã¨åŒæœŸ(_S)" #~ msgid "Synchronizing..." #~ msgstr "åŒæœŸä¸­..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "%d ä»¶ã®ã‚¨ãƒ³ãƒˆãƒªã‚’å—信中..." #~ msgid "Indexing Data..." #~ msgstr "データをインデックス中..." #~ msgid "View the Release Page" #~ msgstr "リリースページを表示" #~ msgid "Close" #~ msgstr "é–‰ã˜ã‚‹" #~ msgid "Copy and Close" #~ msgstr "コピーã—ã¦é–‰ã˜ã‚‹" #~ msgid "Refreshing Store Content" #~ msgstr "ストアã®å†…容をå†èª­ã¿è¾¼ã¿ä¸­" #~ msgid "No background tasks!" #~ msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¿ã‚¹ã‚¯ãŒã‚りã¾ã›ã‚“!" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "アプリを閉ã˜ã‚‹" #~ msgid "Nucleus app page" #~ msgstr "Nucleus アプリページ" #, fuzzy #~ msgid "Better track installed versions of apps" #~ msgstr "インストール済ã¿ã®ã‚¢ãƒ—リを検索" #~ msgid "Toggle transaction sidebar" #~ msgstr "ダウンロードã®ã‚µã‚¤ãƒ‰ãƒãƒ¼ã‚’表示/éžè¡¨ç¤º" #~ msgid "Ongoing" #~ msgstr "進行中" #~ msgid "Finished" #~ msgstr "完了済ã¿" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "%s è»¢é€æ¸ˆã¿" #~ msgid "Tasks" #~ msgstr "タスク" #~ msgid "Stop Active Tasks" #~ msgstr "ç¾åœ¨é€²è¡Œä¸­ã®ã‚¿ã‚¹ã‚¯ã‚’åœæ­¢" #~ msgid "No Tasks Yet" #~ msgstr "タスクãŒã‚りã¾ã›ã‚“" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "%d ä»¶ã®æ›´æ–°ãŒåˆ©ç”¨å¯èƒ½ã§ã™" #~ msgid "Updates Are Available" #~ msgstr "æ›´æ–°ãŒåˆ©ç”¨å¯èƒ½ã§ã™" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "以下ã®ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ãŒæ›´æ–°ã®å¯¾è±¡ã«ãªã£ã¦ã„ã¾ã™ã€‚インストールã—ã¦ã‚‚よã‚ã—" #~ "ã„ã§ã™ã‹?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "%d 個ã®ãƒ©ãƒ³ã‚¿ã‚¤ãƒ ã‚„ã‚¢ãƒ‰ã‚ªãƒ³ãŒæ›´æ–°ã®å¯¾è±¡ã«ãªã£ã¦ã„ã¾ã™ã€‚インストールã—ã¦ã‚‚" #~ "よã‚ã—ã„ã§ã™ã‹?" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "ã•ら㫠%d 個ã®ãƒ©ãƒ³ã‚¿ã‚¤ãƒ ã‚„ã€ã‚¢ãƒ‰ã‚ªãƒ³ãŒæ›´æ–°ã•れã¾ã™ã€‚" #~ msgid "Update Now" #~ msgstr "今ã™ãæ›´æ–°" #~ msgid "Resume Current Tasks" #~ msgstr "中止中ã®ã‚¿ã‚¹ã‚¯ã‚’å†é–‹" #~ msgid "Pause Current Tasks" #~ msgstr "ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã‚’ä¸€æ™‚åœæ­¢" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "ダウンロードマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®è¡¨ç¤º/éžè¡¨ç¤º" #~ msgid "Pride Colors (Horizontal)" #~ msgstr "プライドカラー (æ°´å¹³)" #~ msgid "Lesbian Pride Colors (Horizontal)" #~ msgstr "レズビアン プライド カラー (æ°´å¹³)" #~ msgid "Male Homosexual Pride Colors (Horizontal)" #~ msgstr "男性 ホモセクシャル プライド カラー (æ°´å¹³)" #~ msgid "Transgender Pride Colors (Horizontal)" #~ msgstr "トランスジェンダー プライド カラー (æ°´å¹³)" #~ msgid "Nonbinary Pride Colors (Horizontal)" #~ msgstr "ノンãƒã‚¤ãƒŠãƒªãƒ¼ プライド カラー (æ°´å¹³)" #~ msgid "Bisexual Pride Colors (Horizontal)" #~ msgstr "ãƒã‚¤ã‚»ã‚¯ã‚·ãƒ¥ã‚¢ãƒ« プライド カラー (æ°´å¹³)" #~ msgid "Asexual Pride Colors (Horizontal)" #~ msgstr "アセクシュアル プライド カラー (æ°´å¹³)" #~ msgid "Pansexual Pride Colors (Horizontal)" #~ msgstr "パンセクシュアル プライド カラー (æ°´å¹³)" #~ msgid "Aromantic Pride Colors (Horizontal)" #~ msgstr "アロマンティック プライド カラー (æ°´å¹³)" #~ msgid "Genderfluid Pride Colors (Horizontal)" #~ msgstr "ジェンダーフルイド プライド カラー (æ°´å¹³)" #~ msgid "Polysexual Pride Colors (Horizontal)" #~ msgstr "ãƒãƒªã‚»ã‚¯ã‚·ãƒ¥ã‚¢ãƒ« プライド カラー (æ°´å¹³)" #~ msgid "Omnisexual Pride Colors (Horizontal)" #~ msgstr "オムニセクシュアル プライド カラー (æ°´å¹³)" #~ msgid "Aroace Pride Colors (Horizontal)" #~ msgstr "アロエース プライド カラー (æ°´å¹³)" #~ msgid "Agender Pride Colors (Horizontal)" #~ msgstr "アジェンダー プライド カラー (æ°´å¹³)" #~ msgid "Genderqueer Pride Colors (Horizontal)" #~ msgstr "ジェンダークィア プライド カラー (æ°´å¹³)" #~ msgid "Intersex Pride Colors (Horizontal)" #~ msgstr "インターセックス プライド カラー (æ°´å¹³)" #~ msgid "Demigender Pride Colors (Horizontal)" #~ msgstr "デミジェンダー プライド カラー (æ°´å¹³)" #~ msgid "Biromantic Pride Colors (Horizontal)" #~ msgstr "ãƒã‚¤ãƒ­ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ プライド カラー (æ°´å¹³)" #~ msgid "Disability Pride Colors (Horizontal)" #~ msgstr "ディスアビリティー プライド カラー (æ°´å¹³)" #~ msgid "Femboy Pride Colors (Horizontal)" #~ msgstr "フェムボーイ プライドカラー (æ°´å¹³)" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "ローカル㮠flatpak ãƒãƒ³ãƒ‰ãƒ«ãƒ•ァイルを表示ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹æ©Ÿèƒ½ã¯è¿‘日追加" #~ "予定ã§ã™! ã—ã°ã‚‰ãã®é–“ã¯ä»£ã‚りã«ã€\n" #~ "\n" #~ "flatpak install --bundle ãƒãƒ³ãƒ‰ãƒ«ãƒ•ァイルå.flatpak\n" #~ "\n" #~ "をコマンドラインã§å®Ÿè¡Œã—ã¦ãã ã•ã„。" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u ダウンロード" #~ msgid "Hide EOL Entries" #~ msgstr "更新終了ã®ã‚¨ãƒ³ãƒˆãƒªã‚’éžè¡¨ç¤º" #~ msgid "Hide EOL entries and entries depending on them" #~ msgstr "æ›´æ–°ãŒçµ‚了ã—ãŸã‚¨ãƒ³ãƒˆãƒªã‚„ã€ãれã«ä¾å­˜ã—ã¦ã„るエントリをéžè¡¨ç¤ºã«ã™ã‚‹" #~ msgid "Only Show Free Software" #~ msgstr "フリーã®ã‚½ãƒ•トウェアã®ã¿è¡¨ç¤º" #~ msgid "Hide proprietary software" #~ msgstr "プロプライエタリ ソフトウェアをéžè¡¨ç¤º" #~ msgid "Show Only Flathub Content" #~ msgstr "Flathub ã®å†…容ã®ã¿è¡¨ç¤º" #~ msgid "Debounce Search Inputs" #~ msgstr "検索ã®é…å»¶" #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "" #~ "入力ã—ã¦ã‹ã‚‰æ¤œç´¢ã•れるã¾ã§ã«é…延を設ã‘ã€å³åº§ã«çµæžœãŒè¡¨ç¤ºã•れãªã„よã†ã«ã™ã‚‹" #~ msgid "Describes the look of the global progress bar" #~ msgstr "全体ã®ãƒ—ログレスãƒãƒ¼ã®è¦‹ãŸç›®ã‚’変更ã™ã‚‹" #~ msgid "Saved Window Dimensions" #~ msgstr "ä¿å­˜ã—ãŸã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚µã‚¤ã‚º" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "次回 Bazaar ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’表示ã™ã‚‹æ™‚ã«ä½¿ç”¨ã•れるウィンドウã®å¯¸æ³•" #, c-format #~ msgid "%s is suitable for toddlers" #~ msgstr "%s ã¯å¹¼å…ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é©ã—ã¦ã„ã‚‹" #~ msgid "Of the size of human DNA" #~ msgstr "人間ã®DNAã®ã‚µã‚¤ã‚ºã«å¯¾ã™ã‚‹å‰²åˆ" #~ msgid "3 billion base pairs" #~ msgstr "30億塩基対" #~ msgid "Of the Linux Kernel" #~ msgstr "linuxã®ã‚«ãƒ¼ãƒãƒ«ã«å¯¾ã™ã‚‹å‰²åˆ" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "ã‚¢ãƒãƒ­11å·ã®ã‚¬ã‚¤ãƒ€ãƒ³ã‚¹ã‚³ãƒ³ãƒ”ュータã«å¯¾ã™ã‚‹å‰²åˆ" #~ msgid "Total ROM and RAM" #~ msgstr "ROMã¨RAMã®åˆè¨ˆ" #~ msgid "Of the original Super Mario Bros" #~ msgstr "åˆä»£ã‚¹ãƒ¼ãƒ‘ーマリオブラザーズã«å¯¾ã™ã‚‹å‰²åˆ" #~ msgid "On the NES" #~ msgstr "ファミコン版" #~ msgid "Of the size of Wikipedia" #~ msgstr "Wikipedia ã®ã‚µã‚¤ã‚ºã«å¯¾ã™ã‚‹å‰²åˆ" #~ msgid "Without any media" #~ msgstr "ç”»åƒã‚„音声ãªã©ã‚’除ã„ãŸã‚µã‚¤ã‚º" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "ã“ã®æ©Ÿèƒ½ã¯ç¾åœ¨ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚ã‚¢ãƒ—ãƒªã®æ¨©é™ã‚’管ç†ã™ã‚‹ãŸã‚ã«ã¯ã€" #~ "Flatseal をインストールã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚" #~ msgid "Serialize" #~ msgstr "シリアライズ" #~ msgid "Convert to JSON" #~ msgstr "JSON ã«å¤‰æ›ã™ã‚‹" #~ msgid "More Mobile apps" #~ msgstr "モãƒã‚¤ãƒ«å¯¾å¿œã‚¢ãƒ—リをもã£ã¨è¦‹ã‚‹" #~ msgid "Bazaar Inspector" #~ msgstr "Bazaar インスペクター" #~ msgid "Enable Global Debug Mode" #~ msgstr "全域ã®ãƒ‡ãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã‚’有効化" #~ msgid "Active Blocklists" #~ msgstr "有効ãªãƒ–ラックリスト" #~ msgid "Active Curated-Configs" #~ msgstr "有効ãªç‰¹é¸ã‚¢ãƒ—リã®è¨­å®š" #~ msgid "All Entry Groups" #~ msgstr "å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚°ãƒ«ãƒ¼ãƒ—" #~ msgid "No Flatpaks Installed" #~ msgstr "Flatpak ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“" #~ msgid "Inspect UI Entry" #~ msgstr "UI エントリを検査" #~ msgid "All Debug Actions" #~ msgstr "ã™ã¹ã¦ã®ãƒ‡ãƒãƒƒã‚°ã‚ªãƒ—ション" #~ msgid "Open Bazaar Inspector" #~ msgstr "Bazaar インスペクターを開ã" #~ msgid "Show Git Forge Star Counts" #~ msgstr "Git Forge ã®ã‚¹ã‚¿ãƒ¼æ•°ã‚’表示" #~ msgid "" #~ "Whether to attempt to detect and show \"star counts\" for projects in the " #~ "full view" #~ msgstr "ã€Œã‚¹ã‚¿ãƒ¼ã®æ•°ã€ã‚’プロジェクトã®è©³ç´°ç”»é¢ã§è¡¨ç¤ºã™ã‚‹ã‹ã©ã†ã‹" #~ msgid "Repository Star Count" #~ msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼ã®ã‚¹ã‚¿ãƒ¼æ•°" #~ msgid "Display Star Count" #~ msgstr "ã‚¹ã‚¿ãƒ¼ã®æ•°ã‚’表示" #~ msgid "Show the star count of an application's source code repository" #~ msgstr "アプリã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãŒã‚るリãƒã‚¸ãƒˆãƒªã®ã‚¹ã‚¿ãƒ¼ã®æ•°ã‚’表示ã™ã‚‹" #~ msgid "" #~ "Bazaar can fetch and display the star count from an application's source " #~ "code repository on a remote Git forge. \n" #~ " For projects on GitHub, rate limits may cause them not to appear." #~ msgstr "" #~ "Bazzar㯠Git forge ã®ãƒªãƒ¢ãƒ¼ãƒˆã«ã‚るアプリケーションã®ãƒªãƒã‚¸ãƒˆãƒªã«ä»˜ã‘られ" #~ "ãŸã‚¹ã‚¿ãƒ¼ã®æ•°ã‚’å–å¾—ã—ã¦ã€è¡¨ç¤ºã§ãã¾ã™ã€‚\n" #~ "GitHub ã®ãƒ—ロジェクトã§ã¯ã€ãƒ¬ãƒ¼ãƒˆåˆ¶é™ã«ã‚ˆã‚Šè¡¨ç¤ºã•れãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚" #~ msgid "Mobile Apps" #~ msgstr "モãƒã‚¤ãƒ«å¯¾å¿œã‚¢ãƒ—リ" #~ msgid "Verified by the original developers" #~ msgstr "オリジナルã®é–‹ç™ºè€…ã«ã‚ˆã£ã¦æ¤œè¨¼æ¸ˆã¿ã§ã™" #~ msgid "Hide proprietary software when searching" #~ msgstr "æ¤œç´¢çµæžœã‹ã‚‰ãƒ—ロプライエタリã®ã‚½ãƒ•トウェアを除外ã—ã¾ã™" #~ msgid "Filter search results to only show applications available on Flathub" #~ msgstr "æ¤œç´¢çµæžœã‚’ Flathub ã§åˆ©ç”¨å¯èƒ½ãªã‚¢ãƒ—リã®ã¿ã«é™å®šã™ã‚‹" #~ msgid "Constructing Flatpak instance..." #~ msgstr "Flatpak ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆä¸­..." #~ msgid "Reusing last Flatpak instance..." #~ msgstr "Flatpak ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å†åˆ©ç”¨ä¸­..." #~ msgid "Flathub is not registered on this system" #~ msgstr "Flathub ãŒã‚·ã‚¹ãƒ†ãƒ ã«ç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“" #~ msgid "" #~ "Would you like to add Flathub as a remote? If you decline, the Flathub " #~ "page will not be available. You can change this later." #~ msgstr "" #~ "Flathub をリモートã®ãƒªãƒã‚¸ãƒˆãƒªã«è¿½åŠ ã—ã¾ã™ã‹? æ‹’å¦ã—ãŸå ´åˆã€Flathub ページ" #~ "ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。ã“れã¯ã€ã‚ã¨ã‹ã‚‰å¤‰æ›´å¯èƒ½ã§ã™ã€‚" #~ msgid "Add Flathub" #~ msgstr "Flathub を追加" #, c-format #~ msgid "Identifying installed entries..." #~ msgstr "インストール済ã¿ã®ã‚¨ãƒ³ãƒˆãƒªã‚’特定中..." #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "" #~ "%d ä»¶ã®ãƒ–ロックリストをå‚ç…§ã—ãªãŒã‚‰ãƒªãƒ¢ãƒ¼ãƒˆã®ã‚¨ãƒ³ãƒˆãƒªã®å–得開始中..." #, c-format #~ msgid "%'d of %'d" #~ msgstr "%'d / %'d" #, c-format #~ msgid "Waiting for background indexing tasks to catch up..." #~ msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹å‡¦ç†ãŒçµ‚了ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™..." #, c-format #~ msgid "Completed initialization in %0.2f seconds" #~ msgstr "%0.2f ã§åˆæœŸåŒ–を完了ã—ã¾ã—ãŸ" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "Bazaar ãŒèª­ã¿è¾¼ã‚る特é¸ã‚¢ãƒ—ãƒªã®æƒ…å ±ãŒã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ã‚ãªãŸãŒä½¿ç”¨ã—ã¦ã„" #~ "ã‚‹ OS ã®ã‚µãƒãƒ¼ãƒˆãƒãƒ£ãƒ³ãƒãƒ«ã«é€£çµ¡ã—ã¦ãã ã•ã„。" #~ msgid "Run this application" #~ msgstr "ã“ã®ã‚¢ãƒ—リケーションを実行ã™ã‚‹" #~ msgid "Run" #~ msgstr "実行" #~ msgid "Git Forge Star Counts" #~ msgstr "Git Forge ã®ã‚¹ã‚¿ãƒ¼æ•°" #~ msgid "Not having a GitHub access token may trigger rate limits" #~ msgstr "" #~ "GitHub ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒˆãƒ¼ã‚¯ãƒ³ç„¡ã—ã§ã¯ãƒ¬ãƒ¼ãƒˆåˆ¶é™ã®åŽŸå› ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™" #~ msgid "Show Only Flathub Apps" #~ msgstr "Flathub ã®ã‚¢ãƒ—リã®ã¿è¡¨ç¤º" #~ msgid "Wait for a brief pause to reduce system load" #~ msgstr "システムã®è² è·ã‚’減らã™ãŸã‚ã€å°‘ã—ã®å¾…ã¡æ™‚間を追加ã™ã‚‹" #~ msgid "Go Home" #~ msgstr "ãƒ›ãƒ¼ãƒ ã«æˆ»ã‚‹" #~ msgid "Browse" #~ msgstr "ブラウズ" #~ msgid "View curated applications" #~ msgstr "厳é¸ã•れãŸã‚¢ãƒ—リケーションを表示ã™ã‚‹" #~ msgid "View the latest on Flathub" #~ msgstr "Flathub ã®æœ€æ–°ã®ã‚¢ãƒ—リを表示ã™ã‚‹" #~ msgid "Settings & user data will be kept" #~ msgstr "設定ã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ã¯ä¿æŒã•れã¾ã™" #~ msgid "Pride Rainbow Flag" #~ msgstr "プライドレインボー フラッグ" #~ msgid "Bisexual Flag" #~ msgstr "ãƒã‚¤ã‚»ã‚¯ã‚·ãƒ¥ã‚¢ãƒ« フラッグ" #~ msgid "Asexual Flag" #~ msgstr "アセクシュアル フラッグ" #~ msgid "_Quit Service" #~ msgstr "_サービスã®åœæ­¢" #~ msgid "Graphics" #~ msgstr "グラフィック" #~ msgctxt "Project URL Type" #~ msgid "Homepage" #~ msgstr "ホームページ" #~ msgid "Excludes shared components" #~ msgstr "共有ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’除ã" #~ msgid "Source code may not be available" #~ msgstr "ソースコードを入手ã§ããªã„ã“ã¨ãŒã‚りã¾ã™" #~ msgid "Click for details" #~ msgstr "クリックã§è©³ç´°ã‚’é–‹ã" #~ msgid "Repositories" #~ msgstr "リãƒã‚¸ãƒˆãƒªãƒ¼" #~ msgid "Open in browser" #~ msgstr "ブラウザーã§é–‹ã" #, c-format #~ msgid "%'d Monthly Downloads" #~ msgstr "月間 %'d ダウンロード" #~ msgid "Theme" #~ msgstr "テーマ" #~ msgid "Share" #~ msgstr "共有" #~ msgid "Manage Addons" #~ msgstr "アドオンを管ç†ã™ã‚‹" #~ msgid "%B %-d" #~ msgstr "%0m/%0d" #~ msgid "Up to date!" #~ msgstr "最新ã§ã™!" #~ msgid "Calligraphy application page" #~ msgstr "カリグラフィーã®ã‚¢ãƒ—リケーションページ" #~ msgid "Download graph for Blender" #~ msgstr "Blender ã®ã‚°ãƒ©ãƒ•をダウンロード" #~ msgid "Open this image in the default image viewer" #~ msgstr "ã“ã®ç”»åƒã‚’デフォルトã®ç”»åƒãƒ“ューアーã§é–‹ã" #~ msgid "Copy this image to the clipboard" #~ msgstr "ã“ã®ç”»åƒã‚’クリップボードã«ã‚³ãƒ”ーã™ã‚‹" #~ msgid "Show Downloads Over Time" #~ msgstr "éŽåŽ»ã®æœŸé–“ã«å¯¾ã™ã‚‹ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰æ•°ã®ã‚°ãƒ©ãƒ•を表示ã™ã‚‹" #~ msgid "Remote repo name" #~ msgstr "リモートã®ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã®åå‰" #~ msgid "Updated Size" #~ msgstr "更新後ã®ã‚µã‚¤ã‚º" #~ msgid "Freed Space" #~ msgstr "解放ã•れãŸå®¹é‡" #~ msgid "Transactions Will Appear Here" #~ msgstr "ダウンロードã¯ã“ã“ã«è¡¨ç¤ºã•れã¾ã™" #~ msgid "Resume the execution of transactions" #~ msgstr "ダウンロードをå†é–‹ã™ã‚‹" #~ msgid "Pause the execution of transactions" #~ msgstr "実行中ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’ä¸€æ™‚åœæ­¢ã™ã‚‹" #~ msgid "Downloads Over Time" #~ msgstr "ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰æ•°ã®æŽ¨ç§»" #~ msgid "Minimize Lower Bound" #~ msgstr "グラフã®ä¸‹é™ã‚’最å°åŒ–" #~ msgid "Maximize Upper Bound" #~ msgstr "グラフã®ä¸Šé™ã‚’最大化" #~ msgid "Confirm Action" #~ msgstr "æ“作ã®ç¢ºèª" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "ã‚ãªãŸã¯ä»¥ä¸‹ã® Flatpak をアンインストールã—よã†ã¨ã—ã¦ã„ã¾ã™:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "アンインストールã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "ã‚ãªãŸã¯ä»¥ä¸‹ã® Flatpak をインストールã—よã†ã¨ã—ã¦ã„ã¾ã™:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "インストールã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹?" #~ msgid "Apps Of The Week" #~ msgstr "今週ã®ã‚¢ãƒ—リ" #~ msgctxt "Project URL Type" #~ msgid "VCS Browser" #~ msgstr "VCS ブラウザー" #~ msgid "Full Application View" #~ msgstr "アプリケーションページã®è¡¨ç¤º" #~ msgid "Change what content is shown when viewing applications" #~ msgstr "アプリケーションを見ã¦ã„ã‚‹ã¨ãã«è¡¨ç¤ºã•れる内容を変更ã—ã¾ã™" #~ msgid "" #~ "If you do not have an access token, turning this setting on may cause " #~ "GitHub to eventually rate limit you." #~ msgstr "" #~ "ã‚ãªãŸãŒã‚¢ã‚¯ã‚»ã‚¹ãƒˆãƒ¼ã‚¯ãƒ³ã‚’æŒã£ã¦ã„ãªã„å ´åˆã€ã“ã®è¨­å®šã‚’オンã«ã—ã¦ã„る㨠" #~ "Github ã‹ã‚‰ãƒ¬ãƒ¼ãƒˆåˆ¶é™ã‚’ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚" #~ msgid "Type to filter" #~ msgstr "入力ã—ã¦æ¤œç´¢" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "プロプライエタリãªãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã®çµæžœã‚’除外" #~ msgid "Advanced" #~ msgstr "高度ãªã‚ªãƒ—ション" #~ msgid "Open this link externally" #~ msgstr "ã“ã®ãƒªãƒ³ã‚¯ã‚’外部ã§é–‹ã" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/kw.po������������������������������������������������������������������0000664�0000000�0000000�00000312472�15240005042�0016746�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Cornish translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Flynn Peck <cirilla@tuta.io>, 2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: https://github.com/bazaar-org/bazaar/issues\n" "POT-Creation-Date: 2026-07-29 19:11+0000\n" "PO-Revision-Date: 2026-07-30 16:52+0100\n" "Last-Translator: Flynn Peck <cirilla@tuta.io>\n" "Language-Team: kw\n" "Language: kw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 50.0\n" "X-DL-VCS-Web: https://github.com/bazaar-org/bazaar\n" "X-DL-Lang: kw\n" "X-DL-Module: bazaar\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: Translating\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Basar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "Gwerthji App" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "Keworra, dilea, po nowedhi medhelweyth flatpak war'n amontyell ma" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "System;DyghtyerFardellow;Trovya;Flatpak;Medhelweyth;App;Gwerthji;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Fenester Nowydh" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Trovya ha lea appys" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Gwerthji appys snell hag arnowydh rag Linux gans fog war drovya ha lea appys " "hag ystynansow Flatpak, dres oll dhyworth Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Lostya meur a leyansow ha pesya ow peuri" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Gweles kummyasow app yn es" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Omgelmi dhe Flathub rag gweles ha dyghtya agas appys drudh" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Hwilas appys dhyworth GNOME Shell didro" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:766 msgid "The Bazaar Contributors" msgstr "An Kevriysi Vasar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "An folen dre ow tispletya appys Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Folen app diskwedhyn" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Folen lyverva" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Folen hwithrans" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Folen glass" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Nowedhys Namoy" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Dilea" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Lea" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Dyghtya Ystynansow" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Nyns eus Ystynansow Weladow" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Agas dewisyow sidhlans a-lemmyn yw ow kudha oll ystynansow aswonys. " "Assayewgh ow chanjya dhedha." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Folen Ystynnans" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:408 msgid "Downloads/Month" msgstr "Iskargow/Mis" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:444 msgid "Stopped Receiving Core Updates" msgstr "Ow Receva Nowedhyansow Kolonnen Na Fella" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "An app ma a dhevnydh kerghynnedh nag ow receva nowedhyansow po ewnheansow " "sawder na fella. Yth a yll bydh diantel dhe dhevnydhya." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "Ystynnans rag %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Diskwedhes Le" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Diskwedhes Moy" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Statystygyon Iskargow" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:187 #: src/context-tile-callbacks.c:194 msgid "Age Rating" msgstr "Gwiwder Bloodh" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Garowder Komik" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Nyns eus kedhlow yn-kever garowder komik" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Garowder Fantasi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Nyns eus kedhlow yn-kever garowder fantasi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Garowder Gwirvosek" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Nyns eus kedhlow yn-kever garowder gwirvosek" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Garowder rag Krow" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Nyns eus kedhlow vyth yn-kever krow" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Garowder Reydhel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Nyns eus kedhlow yn-kever garowder reydhel" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Las" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Nyns eus kedhlow yn-kever kampollans dhe las" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Droggya Anlaghel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Nyns eus kedhlow yn-kever kampollans dhe droggya anlaghel" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tobacko" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Nyns eus kedhlow yn-kever kampollans dhe wara tobacko" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nothedh" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Nyns eus kedhlow yn-kever kampollans dhe nothedh" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Themow Reydhel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Nyns eus kedhlow yn-kever kampollans dhe bo portrayansow a nas reydhel" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Koss" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Nyns eus kedhlow yn-kever kossyans" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Hwarthuster Anwiw" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Nyns eus kedhlow yn-kever hwarthuster anwiw" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Disfaveryans" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Nyns eus kedhlow yn-kever keskows disfaveryans a neb eghen" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Argemynnow" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Nyns eus kedhlow yn-kever argemynnow" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Hapwaryans" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Nyns eus kedhlow yn-kever hapwaryans" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Prenyans" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Nyns eus kedhlow yn-kever prenyans" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Keskows ynter Devnydhyoryon" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Nyns eus kedhlow yn-kever keskows ynter devnydhyoryon" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Galow Pellgows ynter Devnydhyoryon" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Nyns eus kedhlow yn-kever keskows ynter devnydhyoryon" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Kedhlow Kestav" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "Nyns eus kedhlow yn-kever kevrans a henwyn devnydhyer po ebost" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Kedhlow Privedh" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Nyns eus kedhlow yn-kever kevrans a gedhlow privedh gans partiow-tressa" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Kevrans Tyller" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "Nyns eus kedhlow yn-kever kevrans tyller gans devnydhyoryon erel" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Horyans" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Nyns eus kedhlow yn-kever kampollans dhe horyans" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Avoutri" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Kedhlow vyth yn-kever kampollans dhe avoutri" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Warioryon Reydhel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Nyns eus kedhlow yn-kever warioryon reydhel" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Defolyans" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Nyns eus kedhlow yn-kever kampollans dhe dhefolyans" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Korf Marow" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Nyns eus kedhlow yn-kever korf marow gweladow" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Kethneth" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Nyns eus kedhlow yn-kever kampollans dhe gethneth" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Nyns eus kampollans dhe dhroggys ynno" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Nyns eus kossya ynno" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Nyns eus argemynnow po treuswriansow monesek ynno" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Nyns eus kyjyans po nothedh ynno" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Nyns eus keskows heb musur ynno" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Nyns eus garowder ynno" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Droggys" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Koss" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Mona" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Kowethasek" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Garowder" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:177 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Oll" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "Yma gwiwder bloodh ankoth dhe %s" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s yw gwiw rag oll" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s yw gwiw rag fleghes yowynk" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s yw gwiw rag fleghes" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s yw gwiw rag degowogyon" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s yw gwiw rag tevesigesow" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s yw gwiw rag %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Restrenva system %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Isrestrenva dre %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Restrenvaow system ost" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Selyans system ost dhyworth /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Isrestrenva dhesktop %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Restrenva dhesktop" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Isrestrenva skrifow %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Restrenva skrifow" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Isrestrenva ilow %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Restrenva ilow" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Isrestrenva skeusennow %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Restrenva skeusennow" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Isrestrenva Gevren Poblek %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Restrenva Gevren Poblek" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Isrestrenva wydhyowyow %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Restrenva wydhyowyow" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Isrestrenva ensamplys %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Restrenva ensamplys" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Isrestrenva sorn devnydhyer %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Restrenva sorn devnydhyer" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Isrestrenva selyans devnydhyer %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Restrenva selyans devnydhyer" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Isrestrenva dhata devnydhyer %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Restrenva Dhata Devnydhyer" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Isrestrenva gerghynnedh devnydhyer %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Restrenva gerghynnedh devnydhyer" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Hedhas restrenva dhe %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Tyller restren ankoth" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Braster a'n Iskarg" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Braster pan Leys" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "Myns dhe iskarga dhyworth an kesrosweyth" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Braster war Blasen" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Ygeri restrenva dhata devnydhyer" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "Agas Data Devnydhyer" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Sornow, settyansow, ha data app erel" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Sorn" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "Data yn sorn yn servadow" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "Dilea Sorn" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Braster Leys Kerghynnedh" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Braster Iskarg Kerghynnedh" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:394 #: src/context-tile-callbacks.c:416 msgid "N/A" msgstr "Ankavadow" #: src/bz-app-size-dialog.c:207 msgid "App Size" msgstr "Braster App" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Gwirhes" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:136 msgid "Installed" msgstr "Leys" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:769 msgid "translator-credits" msgstr "Flynn <cirilla@tuta.io>" #: src/bz-application.c:779 msgid "Special Thanks" msgstr "Grassow Arbennik" #: src/bz-application.c:837 msgid "Logged Out Successfully!" msgstr "Omdhigelmys yn Sewen!" #: src/bz-application.c:1027 msgid "Ubuntu Troubles!" msgstr "Kudynnow Ubuntu!" #: src/bz-application.c:1030 msgid "" "The more recent versions of Ubuntu have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version of " "Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "An versyons moy diwettha a Ubuntu re skombla an rewlys diogeledh defowt, ow " "kul <b>analladow dhe lea appys</b> dhyworth an versyon Flatpak a Vasar, " "devnydhyewgh an fardel normal rag lemmyn mar pleg ow devnydhya\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "Hwi a yll dilea an versyon Flatpak ma gans\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1036 msgid "Continue Anyway" msgstr "Pesya yn Neb Kas" #: src/bz-application.c:1052 msgid "Performing setup…" msgstr "Ow kwruthyl selyans…" #: src/bz-application.c:1144 msgid "Set Up System Flathub?" msgstr "Selya Flathub System?" #: src/bz-application.c:1147 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "An withva system Flathub nag yw selys na hwath. Res yw dhe Vasar rag Flathub " "bos selys war'n leyans Flatpak system dhe peuri ha lea appys.\n" "\n" "Hwi a yll devnydhya Basar hwath rag peuri ha remova appys leys seulabrys." #: src/bz-application.c:1154 msgid "Set Up Flathub?" msgstr "Selya Flathub?" #: src/bz-application.c:1157 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub nag yw selys war'n system ma. Ny yllowgh peuri ha lea appys yn Basar " "mars ankavadow yw.\n" "\n" "Hwi a yll devnydhya Basar hwath rag peuri ha remova appys leys seulabrys." #: src/bz-application.c:1163 msgid "Later" msgstr "Wosa Henna" #: src/bz-application.c:1164 msgid "Set Up Flathub" msgstr "Selya Flathub" #: src/bz-application.c:1697 msgid "A backend error occurred" msgstr "Yth esa error a-bervedh" #: src/bz-application.c:1905 src/bz-application.c:4152 msgid "Refreshing…" msgstr "Ow Tisegha…" #: src/bz-application.c:2069 src/bz-application.c:4150 #, c-format msgid "Loading %d apps…" msgstr "Ow karga %d appys…" #: src/bz-application.c:2122 src/bz-application.c:2196 msgid "Failed to open file" msgstr "Ny yllir ygeri restren" #: src/bz-application.c:2210 msgid "Failed to load metainfo" msgstr "Ny yllir karga metakedhlow" #: src/bz-application.c:2304 msgid "An initialization error occurred" msgstr "Yth esa error dalleth" #: src/bz-application.c:2703 msgid "Checking for updates…" msgstr "Ow checkya rag nowedhyansow…" #: src/bz-application.c:2759 msgid "Failed to check for updates" msgstr "Ny yllir checkya rag nowedhyansow" #: src/bz-application.c:3925 msgid "Malformed Link" msgstr "Gorgrevren Gamm" #: src/bz-application.c:3926 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Yma lytherennans anewn y'n worgevren devnydhys rag ygeri an app ma hag yth a " "yll astel owth oberi yn termyn a dheu.\n" "\n" "Dell yw gwirhaval, hemm yw drefen KRunner ow tanvon IDys app anewn" #: src/bz-application.c:3934 msgid "Could not find app" msgstr "Ny yllir kavos app" #: src/bz-application.c:4154 msgid "Writing to cache…" msgstr "Ow skrifa dhe sorn…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Diskwedhes Oll" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Oll \"%s\"" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d Appys" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Ny Yllir Karga Erthygel" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Leyans Fardel" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Medhelweyth serghek keworransel a yll kemeres moy spas" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Ow lea an app ma a yll rekwirya ow keworra devedhyans medhelweyth nowydh. " "Appys erel dhyworth an devedhyans ma a wra diskwedhes yn Basar.\n" "\n" "Keworra an devedhyans ma hepken mar sur owgh hwi a'n fydhya." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "Leys yn Sewen!" #. TRANSLATORS: Button to launch an installed app #: src/bz-bundle-install-dialog.blp:438 src/bz-bundle-install-dialog.blp:524 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:299 msgid "Open" msgstr "Ygeri" #: src/bz-bundle-install-dialog.blp:448 src/bz-bundle-install-dialog.blp:534 msgid "Show App Details" msgstr "Diskwedhes Manylyon App" #: src/bz-bundle-install-dialog.blp:499 msgid "Already Installed" msgstr "Leys Seulabrys" #: src/bz-bundle-install-dialog.blp:546 msgid "Installation Failed" msgstr "Leyans re Fyllis" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Braster leyans ankoth" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "A-dro dhe %s rag lea" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Nyn eus kummyasow arbennik" #: src/bz-curated-view.blp:27 msgid "No Curation" msgstr "Nyns eus Dyghtyans" #: src/bz-curated-view.blp:29 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Nyns eus kedhlow dyghtyans provys war'n system ma. Hwi a yll peuri appys war " "Flathub hwath" #: src/bz-curated-view.blp:33 msgid "Browse Flathub" msgstr "Peuri Flathub" #: src/bz-curated-view.blp:49 msgid "Offline" msgstr "Dhywarlinen" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Na Wirhys" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Kedhlow awtour nag yw kavadow." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "An berghenogeth a'n %s ID app nag yw gwirys ha martesen fardel gemeneth yw." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "An berghenogeth a'n %s ID app re beu gwirys dre dhorn gans an bagas Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "An berghenogeth a'n %1$s ID app re beu gwirys gans <b>%2$s</b> war <b>%3$s</" "b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "An berghenogeth a'n %1$s ID app re beu gwirys ow tevnydhya %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "An berghenogeth a'n %s ID app re beu gwirys." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Notennow Dyllans Leun" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "An dyllans ma o gwrys possybyl gans devnydhyoryon avel hwi!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "My a gar ow kwruthyl Basar, mes ny allav vy gul henna yn unsel. Gweresewgh " "skoodhya displegyans pella gans owth argevri war Ko-Fi." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Argevri dhe Vasar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Pyth yw Nowydh yn %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Dyllys %-e ves %B, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Dewis Leyans" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Yma dhywgh versyons liesek a'n app ma leys. Pyneyl a vynnowgh procedya gans?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Hedhi" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Rag An Devnydhyer Ma Hepken" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "an devnydhyer" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "oll devnydhyoryon" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:98 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Manylyon" #. TRANSLATORS: tooltip for a button that copies text to the clipboard #: src/bz-error-dialog.blp:48 msgid "Copy" msgstr "Kopia" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Kopys!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Somm Drudhyow" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Ny yllir nowedhi drudh" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Omgelmi gans Flathub rag dyghtya drudhyow" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Omgelmi" #: src/bz-favorites-page.blp:5 src/bz-window.blp:348 msgid "Favorites" msgstr "Drudhyow" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Lea Oll" #: src/bz-favorites-page.blp:47 msgid "No Favorites" msgstr "Drudhyow Vyth" #: src/bz-favorites-page.blp:48 msgid "Applications you mark as favorite will appear here" msgstr "Appys hwi a verkya avel drudh a wra diskwedhes omma" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Skoodhya An App Ma" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Dilea Dhyworth Drudhyow" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Ny yllir remova drudh" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Kyns" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Nessa" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Ow Pennskrifa" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Kemyskell" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Ilow" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Gwarier" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Rekordyer" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Kevreser" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Tonyer" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "Pellwolok" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Omhevelians" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Gwrians" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Aventur" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arkade" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Stockow" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Bordh" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Karten" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Fleghes" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Lojyk" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Gwari Rann" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Sether" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Hevelebyans" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Sportys" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Strateji" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Peurellow" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Keskows" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Post" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Kevrennans Restren" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Son & Gwydhyow" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Media" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Moy Son & Gwydhyow" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Toulys Amontydh" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Displegya" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Moy Toulys Amontydh" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Adhyskans" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Dyski" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Moy Adhyskans" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Gwariow" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Gwari" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Moy Gwariow" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafek & Skeusenieth" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Gwruthyl" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Moy Grafek & Skeusenieth" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Rosweythyans" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Kesrosweyth" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Moy Rosweythyans" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Askorruster" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Ober" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Moy Askorruster" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Godhonieth" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Moy Godhonieth" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Kevreyth" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Moy Kevreyth" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Lesow" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:434 msgid "Tools" msgstr "Toulys" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Moy Lesow" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:106 #: src/bz-flathub-page.blp:138 msgid "Trending" msgstr "Gerys-da Lemmyn" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Moy Gerys-da Lemmyn" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:112 #: src/bz-flathub-page.blp:171 msgid "Popular" msgstr "Gerys-da" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Moy Gerys-da" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:160 msgid "Recently Added" msgstr "Keworrys A-dhiwedhes" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:118 msgid "New" msgstr "Nowydh" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Moy Nowydh" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:149 msgid "Recently Updated" msgstr "Nowedhys A-dhiwedhes" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:124 msgid "Updated" msgstr "Nowedhys" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Moy Nowedhys" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Gwayadow" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Moy Gwayadow" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Moy Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "Appys KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Moy Appys KDE" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:416 msgid "Games" msgstr "Gwariow" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:476 msgid "More Games" msgstr "Moy Gwariow" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:422 msgid "Emulators" msgstr "Omhevelyellyow" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Moy Omhevelyellyow" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:428 msgid "Launchers" msgstr "Lonchyoryon" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Moy Lonchoryon Gwariow" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Toulys Gwari" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Moy Toulys Gwari" #: src/bz-flathub-page.blp:22 msgid "Flathub Not Added" msgstr "Flathub nag yw Keworrys" #: src/bz-flathub-page.blp:23 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "An gwerthji Flathub nag o kevys war neb a'gas leyansow Flatpak" #: src/bz-flathub-page.blp:32 msgid "Can't Reach Flathub" msgstr "Ny Yllir Drehedhes Flathub" #: src/bz-flathub-page.blp:33 msgid "You can still manage and search for apps." msgstr "Hwi a yll dyghtya ha hwilas appys hwath." #: src/bz-flathub-page.blp:39 msgid "Search Apps" msgstr "Hwilas Appys" #: src/bz-flathub-page.blp:50 msgid "Reconnect" msgstr "Dasjunya" #: src/bz-flathub-page.blp:199 msgid "App of the Day" msgstr "App a'n Jydh" #: src/bz-flathub-page.blp:262 msgid "On the Go" msgstr "Gwayadow" #: src/bz-flathub-page.blp:274 msgid "Apps for your Linux phones and tablets" msgstr "Appys rag agas klapkodhow ha leghennow Linux" #: src/bz-flathub-page.blp:285 src/bz-flathub-page.blp:320 msgid "More Mobile Apps" msgstr "Moy Appys Gwayadow" #: src/bz-flathub-page.blp:378 msgid "We​ ♥​ Games" msgstr "Ni ♥ Gwariow​" #: src/bz-flathub-page.blp:391 msgid "Games and apps to run your favorite titles" msgstr "Gwariow hag appys rag eksekutya agas titlys dhrudh" #: src/bz-full-view.blp:33 msgid "No Results" msgstr "Sewyansow Vyth" #: src/bz-full-view.blp:34 msgid "Try a different search query" msgstr "Assayewgh hwithrans aral" #: src/bz-full-view.blp:103 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Hemm yw ragwolok leel, nebes manylyon a yll bos dihaval dhe'n rolyans dyllys" #: src/bz-full-view.blp:106 msgid "Preview Store Appearance" msgstr "Gis Gwerthji Ragwolok" #: src/bz-full-view.blp:233 msgid "_Support" msgstr "_Skoodhya" #: src/bz-full-view.blp:458 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "An app ma a dhevnydh kerghynnedh na fella ow receva nowedhyansow po " "ewnheansow sawder. Yth a yll bydh rag devnydh." #: src/bz-full-view.blp:536 msgid "Trash Data" msgstr "Data Atal" #: src/bz-full-view.blp:599 msgid "Add-ons" msgstr "Ystynansow" #: src/bz-full-view.blp:634 msgid "More Add-Ons" msgstr "Moy Ystynansow" #: src/bz-full-view.blp:645 msgid "Links" msgstr "Kevrennow" #: src/bz-full-view.blp:676 msgid "Similar Apps" msgstr "Appys Haval" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Gorgevren Vyth" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Yma leshyans rydh dhe'n app ma, ytho an goden a yll bos arhwilys rag " "salowder." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Yma leshyans perghenogel dhe'n app ma, ytho an goden yw displegys yn privedh " "ha ny yllir bos arhwilys gans parti tressa anserghek." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Moy Appys" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Moy Appys gans %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Appys Erel gans an Awtour ma" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "Appys Erel gans %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s nag yw leys, mes yma <b>%s</b> a dhata remenant hwath." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Appys Erel" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d App" msgstr[1] "%d Appys" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:160 msgid "Failed to Remove User Data" msgstr "Ny yllir remova data devnydhyer" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Skoodhyans kalesweyth" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Skoodhyans bysowek" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Bysowegi a res" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Bysowegi komendys" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Bysowegi skoodhys" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Skoodhyans ankoth rag bysowegi" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Skoodhyans logosen" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Logosen po devisyow boyntya a res" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Logosen po devisyow boyntya komendys" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Logosen po devisyow boyntya skoodhys" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Skoodhyans ankoth rag logosen po devisyow boyntya" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Skoodhyans tochskrin" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Tochskrinyow a res" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Tochskrinyow gomendys" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Tochskrinyow skoodhys" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Skoodhyans ankoth rag tochskrinyow" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Skoodhyans klapkodh" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Gweythresek war dhevisyow wayadow" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Martesen angweythresek war dhevisyow wayadow" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Skoodhyans amontyell" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Gweythresek war skrinyow vras" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s gweythresek gwella war galesweyth komparek" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s yw gweythresek war an rann vrassa a dhevisyow" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Rol Hwithrer" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Ygeri" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Dilea App" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Remova" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Nowedhyans" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Remova" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Lea %s dhyworth %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Lea %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Hedhi" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Ow Hedhi" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Boton Argevri" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "Hwilas appys leys" #: src/bz-library-page.blp:32 msgid "No Apps Found" msgstr "Nyns eus Appys Kevys" #: src/bz-library-page.blp:49 msgid "Search Store Instead" msgstr "Hwilas Gwerthji Yn Le" #: src/bz-library-page.blp:86 msgid "Pending Updates" msgstr "Nowedhyansow Ow Gortos" #: src/bz-library-page.blp:113 msgid "Downloads" msgstr "Iskargow" #: src/bz-library-page.blp:156 msgid "Recently Uninstalled" msgstr "Dileys A-Dhiwedhes" #: src/bz-library-page.blp:207 msgid "Clear Finished Tasks" msgstr "Dilea Oberennow Deu" #: src/bz-library-page.blp:234 msgid "Sort Options" msgstr "Dewisyow Sortya" #: src/bz-library-page.blp:293 msgid "Sort By" msgstr "Sortya Orth" #: src/bz-library-page.blp:307 msgid "Name" msgstr "Hanow" #: src/bz-library-page.blp:313 msgid "Size" msgstr "Braster" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Nyns eus parow rag \"%s\" y'n rol appys leys" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u Nowedhyans Kavadow" msgstr[1] "%u Nowedhyansow Gavadow" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u App Leys" msgstr[1] "%u Appys Leys" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Nyns eus appys kevys" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Unn app kevys" msgstr[1] "%u appys kevys" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Bos Omvyskys" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Dyski Moy" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Leshyans Ankoth" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Byldys gans an Gemeneth" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:289 msgid "Proprietary" msgstr "Perghenogel" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:291 msgid "Special License" msgstr "Leshyans Arbennik" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "An app ma yw gwrys y'n poblek gans kemeneth geswlasek.\n" "\n" "Hwi a yll kemeres rann ha gweres dhe wellhe." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "An leshyans rag an app ma yw ankoth" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "An app ma yw gwrys y'n poblek gans kemeneth geswlasek, ha dyllys a-woles " "dhe'n leshyans %s.\n" "\n" "Hwi a yll kemeres rann ha gweres ow kwellhe." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "An app ma nag yw gwyrs y'n poblek, ytho an awtours hepken a aswon fatel yth " "a ober. Martesen, yth yw andhiogel yn agwedhow kales dhe helergi, hag yth a " "yll chanja heb ankov.\n" "\n" "Ny wodhon mar hwi a yll kevri dhe'n app ma." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "An app ma yw gwyrs a-woles dhe'n leshyans arbennik %s.\n" "\n" "Ny wodhon mar hwi a yll kevri dhe'n app ma." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Leshyans" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Junya dhe Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Yth esa Hager Vargen" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Omgelmi rag kettermynyegi agas appys drudh yntra devisyow" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Finsya" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Dydh dha, %s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "Keworra Arwodhik dhe Ragwolok Metainfo?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to " "select one manually?" msgstr "" "Ny gomprehend restrennow Metainfo arwodhigow app y'ga honan. A vynnowgh " "dewis onan dre dhorn?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "Skyppya" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Dewis Arwodhik" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Restrennow Skeusen" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Dewisyow" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Junyans kesrosweyth yw strothys — diseghans awtomatek synsas gwerthji yw " "powesys" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Disegha dre Dhorn" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Nowedhyansow App" #: src/bz-preferences-dialog.blp:46 msgid "" "Checking for and downloading app updates uses data and power. Automatic app " "update features are therefore paused when on metered network connections and " "when power saver is on." msgstr "" "Yma data ha gallosedh a res rag checkya hag iskarga nowedhyansow app. Rag " "henna, nasyow awto-nowedhi yw powesys war junyansow rosweyth finwethys ha " "dres Sawya Batri." #: src/bz-preferences-dialog.blp:52 msgid "_Automatic" msgstr "_Awtomatek" #: src/bz-preferences-dialog.blp:53 msgid "Automatically check for and download app updates" msgstr "Checkya hag iskarga nowedhyansow app yn awtomatek" #: src/bz-preferences-dialog.blp:62 msgid "_Manual" msgstr "_Dre Dhorn" #: src/bz-preferences-dialog.blp:63 msgid "Checking for and downloading app updates must be done manually" msgstr "Checkya hag iskarga nowedhyansow app dre dhorn" #: src/bz-preferences-dialog.blp:78 msgid "Automatic Update _Notifications" msgstr "_Gwarnyansow Nowedhyans Awtomatek" #: src/bz-preferences-dialog.blp:79 msgid "Notify when updates have been automatically installed" msgstr "Gwarnya pan vo leys nowedhyansow yn awtomatek" #: src/bz-preferences-dialog.blp:84 msgid "Content Filters" msgstr "Sidhlow Synsas" #: src/bz-preferences-dialog.blp:87 msgid "_Free Software Only" msgstr "Medhelweyth _Rydh Hepken" #: src/bz-preferences-dialog.blp:88 msgid "Hide proprietary apps when browsing and searching" msgstr "Kudha appys perghenogel hag ow peuri hag ow hwilas" #: src/bz-preferences-dialog.blp:93 msgid "F_lathub Results Only" msgstr "Sewyansow F_lathub Hepken" #: src/bz-preferences-dialog.blp:94 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Finwetha sewyansow hwithrans ha peuryans dhe appys kavadow war Flathub hepken" #: src/bz-preferences-dialog.blp:99 msgid "_Verified Results Only" msgstr "Sewyansow _Wirhes Hepken" #: src/bz-preferences-dialog.blp:100 msgid "Hide results that are not verified on Flathub" msgstr "Kudha sewyansow nag yw gwirhes war Flathub" #: src/bz-preferences-dialog.blp:105 msgid "Hide _End-of-Life Apps" msgstr "Kudha Appys _Marow" #: src/bz-preferences-dialog.blp:106 msgid "Hide apps which are no longer supported by their developers" msgstr "Kudha appys skoodhys na fella gans aga awtours" #: src/bz-preferences-dialog.blp:112 msgid "Progress Bar Theme" msgstr "Thema Barr Avonsyans" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Liw Devnydhyer" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Liwyow Wooth" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Liwyow Wooth Lesbian" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Liwyow Wooth Gourkethreydhel" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Liwyow Wooth Treusreydhek" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Liwyow Wooth Andhewek" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Liwyow Wooth Dewreydhel" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Liwyow Wooth Anreydhel" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Liwyow Wooth Pubreydhel" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Liwyow Wooth Anromansek" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Liwyow Wooth Reydh Linyel" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Liwyow Wooth Liesreydhel" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Liwyow Wooth Ollreydhel" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Liwyow Wooth Anromansek hag Anreydhel" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Liwyow Wooth Anreydh" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Liwyow Gooth Reydhkwir" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Liwyow Wooth Kesreydh" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Liwyow Wooth Hanterreydh" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Liwyow Wooth Dewromansek" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Liwyow Wooth Evredhyon" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Liwyow Wooth Maw-Gwregel" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Liwyow Wooth Newtroys" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Istori Dyllansow" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "Istori _Dyllansow" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Hedhyw" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "De" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Nans yw %d dydh" msgstr[1] "Nans yw %d dedhyow" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Nans yw %d seythen" msgstr[1] "Nans yw %d seythennyow" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Nans yw %d mis" msgstr[1] "Nans yw %d misyow" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Nans yw %d bledhen" msgstr[1] "Nans yw %d bledhynnyow" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Dyllans %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Nyns eus manylyon rag an dyllans ma" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Kerghes Moy Kedhlow" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Dilea" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Kerghes" #: src/bz-safety-dialog.blp:31 src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Kummyas Siansek" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Yma dhe'n app ma kummyas neb a as dhe wrontya dh'y honan <b>neb kummyas " "aral</b>, ow skyppya an lestryn Flatpak.\n" "\n" "Ytho y hyll gul neppyth app normal heb lestryn a yll gul, kepar hag ow " "trehedhes oll a'gas restrennow hag ow junya dhe'n kesrosweyth.\n" "\n" "Ow kweles an kumyasow erel a yll ri tybyans gwella a'n pyth an app yw " "gwirhaval dhe wul." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "Gweles Kumyasow Erel" #. TRANSLATORS: short app safety rating label #: src/bz-safety-dialog.blp:79 src/context-tile-callbacks.c:402 msgid "Safe" msgstr "Saw" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "ID App" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "An app ma a dhevnydh dyllans anterrus a'n kerghynnedh medhelweyth (SDK) hag " "a yll synsi kudynnow po goliadewderow sawder may na vydh ewnhys." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "Sawder" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s yw Saw" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "Nyns eus Kummyasow Dhiantel dhe %s" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s yw Saw Dell Hevel" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s yw Saw Martesen" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s yw Diantel" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Dehweles" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Skeusen Gyns" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Skeusen Nessa" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Kopia Skeusen" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Dasgorra Gwel" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Lehe" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Moghhe" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Res A-dro Skeusennow" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Skrinskeusennow Vyth" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Ygeri Gwelell Skeusennow" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Skrinskeusen %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Skrinskeusen %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "Dilea Hwithrans" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Sidhlow" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Gwirhes" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Rydh/Ygor" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "_Anmarow" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Sidhla rag appys Varow" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Klapkodh-Kowethek" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Klassys" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "Hwilas Appys, Gwariow, Medhelweyth" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Sidhlow Hwithrans" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Peuri Klassys" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Klassys Ankavadow" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Hwilas rag appys gans an barr hwithrans a-ugh." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Appys Kevys Vyth" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Sewyansow kevys vyth rag \"%s\" yn Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Peurell" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Gwydhyow" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Buro" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Kalender" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Messajys" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Liwa" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Keynres" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Omhevelians" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Folen Flathub" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Gwiasva Ragdres" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Rol Gudynnow" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "Govynnow Gemmyn" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Gweres" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Argevri" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Treylya" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Kestava" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Pennfenten God" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Kevri" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Rol" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Kopia Gorgevren" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "Linen Dermyn" #. TRANSLATORS: label prefix shown in graph tooltips, for example: "Installs: 42" #: src/bz-stats-dialog.blp:48 msgid "Installs:" msgstr "Leyansow:" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:58 msgid "World" msgstr "Bys" #: src/bz-stats-dialog.blp:72 msgid "Since 4/15/2024" msgstr "A-dhia 15/4/2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM Somm Leyansow" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fk Somm Leyansow" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d Somm Leyansow" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Sewyansow Kevys Vyth" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Hwithrans re fyllis" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Gwitha Data Devnydhyer" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Alowa ow taskor settyansow & synsas personel" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Dilea Oll Data" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Dilea yn fast data devnydhyer rag erbysi dalghuster" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Lea %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Dewis py dyllans dhe lea. Martesen a wra lea darnow gevrennys keworransel" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Martesen a wra lea darnow geworransel poblek" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Hedhi" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Lea" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Remova %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Dewis py dyllans dhe remova." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Ny vydh galladow dhe dhevnydhya %s wosa dileys yw." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "\"%s\" yw Peryl Ughel" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Yma hedhas leun dh'gas system dhe'n app ma, ow synsi oll <b>a'gas " "restrennow, istori peurell, geryow-tremena sawys</b> ha moy. Ynwedh, yma " "hedhas dhe'n kesrosweyth, ytho yth a yll danvon agas data dhe bartiow " "tressa.\n" "\n" "Drefen perghenogel yw an app, ny allas bos arwhilys rag an pyth yth a wul " "gans an gummyasow ma." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "An app ma a dhevnydh an system fenestri anterrus X11, ytho yth a yll " "<b>rekordya oll jynnskrifow, kemeres skrinskeusennow, ha helerghi appys " "erel</b>. Ynwedh, yth a yll drehedhes an kesrosweyth, ytho yth a yll danvon " "agas data dhe bartiow tressa.\n" "\n" "Drefen perghenogel yw an app, ny allas bos arwhilys rag an pyth yth a wul " "gans an gummyasow ma." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Lea yn neb Kas" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Ny yllir karga fenester negys" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Oll appys yw leys seulabrys" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Da Lowr" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Lea %u App?" msgstr[1] "Lea %u Appys?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "An pyth a sew a vydh leys. Ynwedh, darnow gevrennys keworransel a vydh leys " "martesen" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d ystynansow a vydh leys." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Ynwedh, ystyanansow a vydh leys." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Lea Oll" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Deu yn %.02f eylennow" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Ystynnans rag App" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Kerghynnedh rag App" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "Yn Lost" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Deu" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Hedhys" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Error" #: src/bz-transaction-tile.blp:313 msgid "Cancel Transaction" msgstr "Hedhi Negys" #: src/bz-transaction-tile.blp:323 msgid "Show Details" msgstr "Diskwedhes Manylyon" #: src/bz-transaction-tile.blp:438 msgid "Show Error Info" msgstr "Diskwedhes Kedhlow Error" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s Rythhes" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Error Negys" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Ow Gortos" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Nowedhi Oll" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u Nowedhyans Kerghynnedh" msgstr[1] "%u Nowedhyansow Gerghynnedh" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Dyghtya Data Devnydhyer Remenant" #: src/bz-user-data-page.blp:32 msgid "No Leftover User Data Found" msgstr "Gesigow Data Devnydhyer Kevys Vyth" #: src/bz-user-data-page.blp:33 msgid "Personal data left behind by apps that were removed will show up here" msgstr "Data personel gesys gans appys neb o removys a vydh omdhiskwedhes omma" #: src/bz-user-data-page.c:229 #, c-format msgid "Trashed User Data for %u Apps" msgstr "Data Devnydhhyer Removys rag %u Appys" #: src/bz-user-data-page.c:230 #, c-format msgid "Trashed User Data for %s" msgstr "Data Devnydhhyer Removys rag %s" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Ygeri Restrenva Dhata Devnydhyer" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Remova Data Devnydhyer" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Ow Tisegha" #: src/bz-window.blp:90 msgid "Curated" msgstr "Dyghtys" #: src/bz-window.blp:102 msgid "Explore" msgstr "Trovya" #. Translators: . #: src/bz-window.blp:114 msgid "Library" msgstr "Lyverva" #: src/bz-window.blp:129 msgid "Search" msgstr "Hwithrans" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Pennrol" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Owth eksekutya owgh hwi dyllans nowydh a Vasar!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Pyth yw Nowydh" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Yma dhywgh junyans kewrosweyth mes ow kweles owgh hwi dyllans koth a Flathub" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "Junyans kesrosweyth yw strothys — diseghansow awtomatek yw marow" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Argevri dhe Vasar" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Disegha" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "_Omgelmi gans Flathub" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_Dyghtya Data Devnydhyer Remenant" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Dewisyow" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Kesunyansow Vysowek" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "_A-dro dhe Vasar" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_Kwytya Basar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Omdhigelmi" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Basar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Ny yllir lonchya app" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Ny yllowgh remova Basar dhyworth Basar!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Ny yllir gul an re na y'n eur ma" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Leyans" msgstr[1] "Leyansow" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d iskargow y'n mis yw passys" #. TRANSLATORS: %s is a formatted file size, for example: "128 MB" #: src/context-tile-callbacks.c:133 #, c-format msgid "+%s Runtime" msgstr "+%s Kerghynnedh App" #: src/context-tile-callbacks.c:136 msgid "Download" msgstr "Iskarg" #: src/context-tile-callbacks.c:156 msgid "Size information unavailable" msgstr "Kedhlow braster ankavadow" #: src/context-tile-callbacks.c:159 #, c-format msgid "Download size of %s" msgstr "Braster iskarg a %s" #: src/context-tile-callbacks.c:192 msgid "All Ages" msgstr "Oll Bloodh" #: src/context-tile-callbacks.c:204 msgid "Age rating information unavailable" msgstr "Kedhlow gwiwder bloodh ankavadow" #: src/context-tile-callbacks.c:209 msgid "Suitable for all ages" msgstr "Gwiw rag oll bloodh" #: src/context-tile-callbacks.c:211 #, c-format msgid "Suitable for ages %d and up" msgstr "Gwiw rag %d bloodh hag a-ugh" #: src/context-tile-callbacks.c:244 src/context-tile-callbacks.c:249 #: src/context-tile-callbacks.c:277 src/context-tile-callbacks.c:286 msgid "Unknown" msgstr "Ankoth" #: src/context-tile-callbacks.c:254 #, c-format msgid "Free software licensed under %s" msgstr "Medhelweyth rydh a-woles dhe'n leshyans %s" #: src/context-tile-callbacks.c:259 msgid "Free software" msgstr "Medhelweyth rydh" #: src/context-tile-callbacks.c:262 msgid "Proprietary Software" msgstr "Medhelweyth Perghenogel" #: src/context-tile-callbacks.c:265 #, c-format msgid "Special License: %s" msgstr "Leshyans Arbennik: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:283 msgid "Free Software" msgstr "Medhelweyth Rydh" #: src/context-tile-callbacks.c:311 msgid "Adaptive" msgstr "Desedhadow" #: src/context-tile-callbacks.c:311 msgid "Desktop Only" msgstr "Amontyell yn Unnik" #: src/context-tile-callbacks.c:317 msgid "Works on desktop, tablets, and phones" msgstr "Gweythresek war amontyellow, leghennow, ha klapkodhow" #: src/context-tile-callbacks.c:318 msgid "May not work on mobile devices" msgstr "Martesen angweythresek war dhevisyow wayadow" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:405 src/context-tile-callbacks.c:408 msgid "Low Risk" msgstr "Peryl Isel" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:411 msgid "Medium Risk" msgstr "Peryl Kresek" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:414 msgid "High Risk" msgstr "Peryl Ughel" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Kummyasow Ankoth" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Kummyasow yw fyllis rag an app ma." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Kummyasow Vyth" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "App yw kontaynys yn leun" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Hedhas Kesrosweyth" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "A yll drehedhes an kesrosweyth" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Hedhas Kesrosweyth Vyth" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Ny yllir drehedhes an kesrosweyth" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Hedhas Devis Devnydhyer" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "A yll drehedhes devisyow kepar ha kameras po konsolen wariow gwydhyow" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Hedhas Devis Devnydhyer Vyth" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" "Ny yllir drehedhes devisyow kepar ha kameras po konsolen wariow gwydhyow" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Hedhas Devis Ynworrans" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "A yll drehedhes devisyow ynworrans" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Hedhas Korrgewsell ha Seni Son" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "A yll goslowes ow tevnydhya korrgewsellow ha seni son heb ow peji" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Hedhas Devis System" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "A yll drehedhes devisyow system may a rekwir kummyasow ughelhys" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Hedhas Synsas Skrin" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "A yll drehedhes an synsas a'n skrin po fenestri erel" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "System Fenester Anterrus" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "A dhevnydh prest system fenester anterrus (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "A yll kavos kummyasow siansek" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Settyansow Dhevnydhyer" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "A yll drehedhes ha chanjya settyansow dhevnydhyer" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Hedhas rag Redya/Skrifa System Restrenva Leun" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "A yll redya ha skrifa oll data war'n system restrenva" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Hedhas rag Redya/Skrifa Restrenva Dre" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "A yll redya ha skrifa oll data y'gas restrenva dre" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Hedhas rag Redya System Restrenva Leun" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "A yll redya oll data y'n system restrenva" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Hedhas rag Redya Restrenva Dre" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "A yll redya oll data y'gas restrenva dre" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Hedhas rag Redya/Skrifa yn Restrenva Iskargow" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "A yll redya ha skrifa oll data y'gas restrenva iskargow" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Hedhas rag Redya yn Restrenva Iskargow" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "A yll redya oll data y'gas restrenva iskargow" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "A yll redya ha skrifa oll data y'n restrenva" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "A yll redya oll data y'n restrenva" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Hedhas System Restrenva Vyth" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Ny yllir drehedhes an system restrenva banna" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "A dhevnydh Gonisyow System" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "A yll govyn data dhyworth gonisyow anportal system" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "A dhevnydh Gonisyow Esedhek" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "A yll govyn data dhyworth gonisyow anportal esedhek" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Hedhas Gonis Vyth" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Ny yllir drehedhes gonisyow anportal system po esedhek banna" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Awtour App Gwirhes" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "An awtour a'n app ma yw gwirhes rag bos piw i onwul" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Kod Perghenogel" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "An kod nag yw poblek, ytho ny allas bos arhwilys yn anserghek ha martesen " "diantel yw" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Kod Arhwiladow" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "An kod yw poblek hag a yll bos arhwilys yn anserghek, ytho an app ma yw saw " "moy gwirhaval" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Devnydhya an Gonis System %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Devnydhya an Gonis Esedhek %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Devnydhya an Gonis %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "A yll gweles an gonis anportal" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "A yll kewsel dhe'n gonis anportal" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "A yll perghenna an gonis anportal" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Oberyans Rol Olldalghus" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "A yll diskwedhes rolyow yn barr rol olldalghus" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Oberyans Settyansow KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "A yll helerghi pan settyansow KDE chanjya" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Settyansow Olldalghus KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "A yll redya settyansow desktop KDE kepar ha fontow ha liwyow" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Gonis Gwithyans Kevrinyow" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "A yll gwitha ha kerghes an eryow-tremena y honan ow tevnydhya an alhwedhow-" "kylgh system" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Gonis Gwarnyansow Dhesktop" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "A yll danvon gwarnyansow dhesktop" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Oberyans Tallyour System" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "A yll diskwedhes arwodhik y'n tallyour system" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Oberyans KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "A yll keskomunya gans devisyow junys dre KDE Connect" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigacyon" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Ygeri Folen Drovya" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Ygeri Folen Lyverva" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Ygeri Folen Hwithrans" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Pellwithvaow" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Kettermynyegi Gwerthjiow" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Ollgemmyn" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Ygeri Dewisyow" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Diskwedhes Kesunyansow Vysowek" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Degea Fenester" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Kwytya Basar" #: src/update-worker.c:358 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "%u App Nowedhys" msgstr[1] "%u Appys Nowedhys" #: src/update-worker.c:361 #, c-format msgid "%s has been updated." msgstr "%s re beu nowedhys." #: src/update-worker.c:364 #, c-format msgid "%s and %s have been updated." msgstr "%s hag %s re beu nowedhys." #: src/update-worker.c:368 #, c-format msgid "Includes %s, %s and %s." msgstr "A gomprehend %s, %s, hag %s." #~ msgid "Free" #~ msgstr "Rydh" #~ msgid "Empty" #~ msgstr "Gwag" #~ msgid "Loading" #~ msgstr "Ow karga" #~ msgid "Flathub Unavailable" #~ msgstr "Flathub Ankavadow" #~ msgid "Content" #~ msgstr "Synsas" #~ msgid "Clear search" #~ msgstr "Dilea hwithrans" #~ msgid "Select Metainfo File" #~ msgstr "Dewis Restren Vetakedhlow" #~ msgid "Metainfo Files" #~ msgstr "Restrennow Metakedhlow" #~ msgid "Preview" #~ msgstr "Ragwolok" #~ msgid "User Data" #~ msgstr "Data Devnydhyer" #~ msgid "Flathub returned an error" #~ msgstr "Flathub ros tre error" #~ msgid "Retry Flathub Connection" #~ msgstr "Assaya Junyans Flathub Arta" #~ msgid "Tags:" #~ msgstr "Taggys:" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "Junya agas akont Flathub dhe Vasar rag dyghtya agas appys dhrudh." #~ msgid "Delay Search Results" #~ msgstr "Delatya Sewyansow Hwithrans" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "Gwellhe skavder sewyasow gans ow kesunya geryow hwithrans" #~ msgid "Progress Bar" #~ msgstr "Barr Avonsyans" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "Dewis thema rag an barr avonsyans!" #~ msgid "Vertical Stripes" #~ msgstr "Linennow Plommwedhek" #~ msgid "Display flag colors from left to right" #~ msgstr "Diskwedhes liwyow vaner a-gledh dhe a-dhyghow" #~ msgid "Open Link" #~ msgstr "Ygeri Gorgevren" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "Appys Taggys avel \"%s\"" #~ msgid "User Data Size" #~ msgstr "Braster Data Devnydhyer" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Installing" #~ msgstr "Ow Lea" #~ msgid "Refresh completed!" #~ msgstr "Diseghans deu!" #~ msgctxt "As in, \"100 Installs\"" #~ msgid "Installs" #~ msgstr "Leyansow" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "Disegha" #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "_Donate to Bazaar â¤ï¸" #~ msgstr "_Argevri dhe Vasar â¤ï¸" #~ msgid "Open App Library" #~ msgstr "Ygeri Lyverva Appys" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "Ow lea fardellow .flatpak yw anskoodhys hwath" #~ msgid "Download & Install Application" #~ msgstr "Iskarga & Lea App" #~ msgid "Steam" #~ msgstr "Steam" #~ msgid "Minecraft" #~ msgstr "Minecraft" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgctxt "As in, \"100 Downloads\"" #~ msgid "Downloads" #~ msgstr "Iskargow" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "Yth posleva ow skoodhya an awtours neb a gul an ekokevreyth Linux. Basar " #~ "omdhiskwedhes an tabb \"dyghtys\" dre konfigurys gans lesrenyadesow dhe " #~ "alowa rag eksperyans leel." #~ msgid "%e %B" #~ msgstr "%e %B" #~ msgid "Install Other Version" #~ msgstr "Lea Versyon Aral" #~ msgid "Support this application" #~ msgstr "Skoodhya an app ma" #~ msgid "Manage Add-ons" #~ msgstr "Dyghtya Ystynansow" #~ msgid "Keep Data" #~ msgstr "Gwitha Data" #~ msgid "Open App" #~ msgstr "Ygeri App" #~ msgid "_Login with Flathub" #~ msgstr "_Omgelmi gans Flathub" #~ msgid "Nucleus app page" #~ msgstr "Folen app Nuklesen" #~ msgid "_Synchronize Remotes" #~ msgstr "_Kerghes Gwerthjiow" #~ msgid "Synchronizing..." #~ msgstr "Ow Kettermynyegi..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "Ow receva %d enworrans manylyon..." #~ msgid "Indexing Data..." #~ msgstr "Ow Kevernya Data..." #~ msgid "Bazaar is a Passion Project" #~ msgstr "Basar yw Ragdres Passyon" #~ msgid "Support the Future of Linux App Distribution" #~ msgstr "Skoodhya an Termyn a Dheu a Lesrannans Appys Linux" #~ msgid "Disable the donations banner on startup" #~ msgstr "Ungallosegi an baner argevrohow dres dalleth" #~ msgid "Close" #~ msgstr "Kwytya" #~ msgid "Copy and Close" #~ msgstr "Dasskrifa ha Kwytya" #~ msgid "Refreshing Store Content" #~ msgstr "Ow Diseghow Dalgh Gwerthji" #~ msgid "No background tasks!" #~ msgstr "Oberennow vyth yn kilva!" #~ msgid "See More" #~ msgstr "Gweles Moy" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "Dewis Dyghtyer Treuswrians" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "Kwytya" #~ msgid "Ongoing" #~ msgstr "Didorr" #~ msgid "Finished" #~ msgstr "Deu" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "Treusperthi %s bys lemmyn" #~ msgid "Tasks" #~ msgstr "Oberennow" #~ msgid "Stop Active Tasks" #~ msgstr "Hedhi Oberennow Byw" #~ msgid "No Tasks Yet" #~ msgstr "Oberennow Vyth Hwath" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "%d Nowedh Kavadow" #~ msgstr[1] "%d Nowedhow Kavadow" #~ msgid "Updates Are Available" #~ msgstr "Nowedhow Kavadow" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "An appys a sew yw dewisadow rag nowedhow. A vynnsowgh lea y's?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "%d kerghynnedhow ha/po ystynnans yw dewisadow rag nowedhow. A vynnsowgh " #~ "lea y's?" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "Dres hemma, %d kerghynnedhow ha/po ystyannans yw nowedhys." #~ msgid "Update Now" #~ msgstr "Nowedhi Lemmyn" #~ msgid "Resume Current Tasks" #~ msgstr "Daskemeres Oberennow A-Lemmyn" #~ msgid "Pause Current Tasks" #~ msgstr "Powes Oberennow A-Lemmyn" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "An Gallos dhe hwithra ha lea restrennow .flatpak leel ow tos yn skon! Yn " #~ "kettermyn, tria owth eksekutya\n" #~ "\n" #~ "flatpak install --bundle agas-gronn.flatpak\n" #~ "\n" #~ "yn an linen arghadow." #~ msgid "Hide EOL Entries" #~ msgstr "Keles appys marow" #~ msgid "Hide EOL entries and entries depending on them" #~ msgstr "Keles appys marow hag appys serghek" #~ msgid "Only Show Free Software" #~ msgstr "Diskwedhes appys dhe wari hepken" #~ msgid "Hide proprietary software" #~ msgstr "Keles appys perghenogel" #~ msgid "Show Only Flathub Content" #~ msgstr "Diskwedhes synsas Flathub hepken" #~ msgid "Hide applications which do not originate from Flathub" #~ msgstr "Kudha appys may na dalleth dhyworth Flathub" #~ msgid "Show Only Verified Content" #~ msgstr "Diskwedhes Dalgh Flathub Hepken" #~ msgid "Hide applications which are not verified on Flathub" #~ msgstr "Kudha appys may na gwirys war Flathub" #~ msgid "Debounce Search Inputs" #~ msgstr "Kesunya Ynworransow Hwithrans" #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "" #~ "Addya unn ardak dherag hwilas rag preventya gorthebow desempis dres " #~ "jynnskrifa" #~ msgid "Describes the look of the global progress bar" #~ msgstr "Deskrifa an mir a an Barr Avonsyans Olldalghus" #~ msgid "Saved Window Dimensions" #~ msgstr "Sawys Braster Fenester" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "An braster fenester rag devnydh gans an fenester Basar nessa" #~ msgid "?" #~ msgstr "?" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "An nas ma usi evredhek y'n eur ma. Y usi komendya dhe iskarga ha lea " #~ "Flatseal dhe dyghtya grontow appys." #~ msgid "Serialize" #~ msgstr "Kedreylya yn Baytys" #~ msgid "Convert to JSON" #~ msgstr "Kedreylya yn JSON" #~ msgid "More Mobile apps" #~ msgstr "Moy Appys Gwayadow" #~ msgid "Bazaar Inspector" #~ msgstr "Hwithrer Basar" #~ msgid "Background Task Info:" #~ msgstr "Kedhlow Oberennow Kilva:" #~ msgid "Enable Global Debug Mode" #~ msgstr "Gallosegi Prevessa Olldalghus" #~ msgid "Active Blocklists" #~ msgstr "Rol a Lettys Byw" #~ msgid "Active Curated-Configs" #~ msgstr "Settyansow Dyghtys Byw" #~ msgid "All Entry Groups" #~ msgstr "Oll Bagasow Enworrans Manylyon" #~ msgid "Decache and Inspect" #~ msgstr "Dissorn ha Hwithra" #~ msgid "No Flatpaks Installed" #~ msgstr "Vyth Flatpakow Ynstallys" #~ msgid "Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth (Gorwelyek)" #~ msgid "Lesbian Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Lesbian (Gorwelyek)" #~ msgid "Male Homosexual Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Gourkethreydhel (Gorwelyek)" #~ msgid "Transgender Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Treusreydhek (Gorwelyek)" #~ msgid "Nonbinary Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth na Den na Ben (Gorwelyek)" #~ msgid "Bisexual Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Dewreydhel (Gorwelyek)" #~ msgid "Asexual Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Anreydhel (Gorwelyek)" #~ msgid "Pansexual Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Pubreydhek (Gorwelyek)" #~ msgid "Aromantic Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Anromansek (Gorwelyek)" #~ msgid "Genderfluid Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Reydh Chanjus (Gorwelyek)" #~ msgid "Polysexual Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Liesreydhek (Gorwelyek)" #~ msgid "Omnisexual Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Ollreydhek (Gorwelyek)" #~ msgid "Aroace Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Anromansek hag Anreydhel (Gorwelyek)" #~ msgid "Agender Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Anreydh (Gorwelyek)" #~ msgid "Genderqueer Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth na Den na Ben (Gorwelyek)" #~ msgid "Intersex Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Hermaphroditek (Gorwelyek)" #~ msgid "Demigender Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Hanterreydh (Gorwelyek)" #~ msgid "Biromantic Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Dewromansek (Gorwelyek)" #~ msgid "Disability Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Evredhyon (Gorwelyek)" #~ msgid "Femboy Pride Colors (Horizontal)" #~ msgstr "Kolors Gooth Maw-Gwregel (Gorwelyek)" #~ msgid "Inspect UI Entry" #~ msgstr "Hwithra Elven Ynterfas" #~ msgid "All Debug Actions" #~ msgstr "Oll Gwriansow Prevessa" #~ msgid "Open Bazaar Inspector" #~ msgstr "Ygeri Hwithrer Basar" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u iskargow" #, c-format #~ msgid "%s is suitable for toddlers" #~ msgstr "%s usi fytti rag fleghes vyghan" #~ msgid "--- MB" #~ msgstr "--- MB" #~ msgid "Of the size of human DNA" #~ msgstr "a an braster a DNA den" #~ msgid "3 billion base pairs" #~ msgstr "3 bilvil koplow ben" #~ msgid "Of the Linux Kernel" #~ msgstr "a an Bewyn Linux" #~ msgid "linux-6.17.tar.xz" #~ msgstr "linux-6.17.tar.xz" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "a an amontyell Apollo 11" #~ msgid "Total ROM and RAM" #~ msgstr "Somm rag ROM ha RAM" #~ msgid "Of the original Super Mario Bros" #~ msgstr "a Super Mario Bros" #~ msgid "On the NES" #~ msgstr "yn an NES" #~ msgid "Of the size of Wikipedia" #~ msgstr "a an braster rag Wikipedya" #~ msgid "Without any media" #~ msgstr "Heb neb media" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/meson.build������������������������������������������������������������0000664�0000000�0000000�00000000047�15240005042�0020117�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������i18n.gettext('bazaar', preset: 'glib') �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/nl.po������������������������������������������������������������������0000664�0000000�0000000�00000251662�15240005042�0016741�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Dutch translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 14:01+0200\n" "PO-Revision-Date: 2026-06-06 15:40+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 #: src/bz-window.blp:46 src/bz-window.blp:202 src/bz-window.c:373 src/bz-window.c:374 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Voeg Flatpak software toe, verwijder deze of update deze op deze computer" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Systeem;Pakketbeheer;Ontdekken;Flatpak;Software;Winkel;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "Nieuw venster" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and manage applications" msgstr "Ontdek en installeer applicaties" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and installing Flatpak apps and " "addons, particularly from Flathub." msgstr "" "Een snelle en moderne appstore voor Linux, gericht op het ontdekken en installeren van applicaties en " "add-ons van Flatpak, specifiek van Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Zet meerdere installaties in een wachtrij en ga door met bladeren" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Bekijk eenvoudig de app-toestemmingen" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Log in met Flathub om je favorieten te beheren" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Zoek apps rechtstreeks vanuit GNOME Shell" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:762 msgid "The Bazaar Contributors" msgstr "De bijdragers aan Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "De startpagina met Flathub-apps" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Exhibit app-pagina" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Bibliotheekpagina" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Zoekpagina" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Categoriepagina" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 src/bz-rich-app-tile.blp:141 msgid "Stopped Receiving Updates" msgstr "Ontvangt geen updates meer" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Verwijderen" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:145 src/bz-bundle-install-dialog.blp:159 #: src/bz-favorites-tile.c:157 src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Installeren" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 src/bz-addons-dialog.blp:70 #: src/bz-installed-tile.blp:92 msgid "Manage Add-Ons" msgstr "Add-ons beheren" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Geen add-ons zichtbaar" #: src/bz-addons-dialog.blp:81 msgid "Your current filter preferences are hiding all known add-ons. Try adjusting them." msgstr "Jouw huidige filters verbergen alle bekende add-ons. Probeer ze te aan te passen." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Add-onpagina" #: src/bz-addons-dialog.blp:202 src/bz-full-view.blp:410 msgid "Downloads/Month" msgstr "Downloads/maand" #: src/bz-addons-dialog.blp:229 src/bz-full-view.blp:446 msgid "Stopped Receiving Core Updates" msgstr "Onvangt geen core-updates meer" #: src/bz-addons-dialog.blp:243 msgid "" "This add-on uses a runtime that no longer receives updates or security fixes. It may become unsafe to " "use." msgstr "" "Deze add-on gebruikt een runtime die geen updates of beveiligingsupdates meer ontvangt. Deze app kan " "onveilig worden om te gebruiken." #: src/bz-addons-dialog.c:333 #, c-format msgid "Add-on for %s" msgstr "Add-on voor %s" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show Less" msgstr "Minder weergeven" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show More" msgstr "Meer weergeven" #: src/bz-addons-dialog.c:397 msgid "Download Stats" msgstr "Downloadstatistieken" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 src/bz-age-rating-dialog.c:736 #: src/context-tile-callbacks.c:186 src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Leeftijdsadvies" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Cartoongeweld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Geen informatie over cartoongeweld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Fantasiegeweld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Geen informatie over fantasiegeweld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Realistisch geweld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Geen informatie over realistisch geweld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Geweld met bloedvergieten" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Geen informatie over geweld met bloedvergieten" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Seksueel geweld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Geen informatie over seksueel geweld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alcohol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Geen informatie over verwijzingen naar alcohol" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Drugs" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Geen informatie over verwijzingen naar illegale drugs" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Geen informatie over verwijzingen naar tabaksproducten" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Naaktheid" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Geen informatie over enige naaktheid" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Seksuele thema’s" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Geen informatie over seksuele verwijzingen of afbeeldingen" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Grof taalgebruik" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Geen informatie over grof taalgebruik" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Ongepaste humor" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Geen informatie over ongepaste humor" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Discriminatie" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Geen informatie over discriminerend taalgebruik" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Reclame" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Geen informatie over enige reclame" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Gokken" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Geen informatie over gokken" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Aankopen" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Geen informatie over de mogelijkheid om echt geld uit te geven" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Gesprekken tussen gebruikers" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Geen informatie over mogelijkheden om met andere gebruikers te chatten" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Audiogesprekken tussen gebruikers" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Geen informatie over mogelijkheden om met andere gebruikers te praten" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Contactgegevens" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "No information regarding sharing of social network usernames or email addresses" msgstr "Geen informatie over het delen van gebruikersnamen van sociale netwerken of e-mailadressen" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Identificerende informatie" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "Geen informatie over het delen van gebruikersinformatie met derden" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Locatie delen" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "Geen informatie over het delen van de fysieke locatie met andere gebruikers" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostitutie" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Geen informatie over verwijzingen naar prostitutie" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Overspel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Geen informatie over verwijzingen naar overspel" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Geseksualiseerde personages" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Geen informatie over geseksualiseerde personages" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Heiligschennis" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Geen informatie over verwijzingen naar heiligschennis" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Menselijke overblijfselen" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Geen informatie over zichtbare overblijfselen van dode mensen" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Slavernij" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Geen informatie over verwijzingen naar slavernij" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Bevat geen verwijzingen naar drugs" #: src/bz-age-rating-dialog.c:426 msgid "Does not include swearing, profanity, and other kinds of strong language" msgstr "Bevat geen scheldwoorden of ander grof taalgebruik" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Bevat geen reclame of geldtransacties" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Bevat geen seks of naaktheid" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Bevat geen niet-gecontroleerde gespreksfunctionaliteit tussen gebruikers" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Bevat geen geweld" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drugs" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Grof taalgebruik" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Geld" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Sociaal" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Geweld" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Alle" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s heeft een onbekende leeftijdsclassificatie" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s is geschikt voor iedereen" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s is geschikt voor jonge kinderen" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s is geschikt voor kinderen" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s is geschikt voor tieners" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s is geschikt voor volwassenen" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s is geschikt voor %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Systeemmap %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Home-submap %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Systeemmappen van host" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Systeemconfiguratie van host in /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Bureaublad-submap %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Bureaubladmap" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Bureaublad-submap %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Documentenmap" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Muziek-submap %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Muziekmap" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Afbeeldingen-submap %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Afbeeldingenmap" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Openbare submap %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Openbare map" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Video’s-submap %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Video's-map" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Sjablonen-submap %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Sjablonenmap" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Cache-submap %s van de gebruiker" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Cachemap van de gebruiker" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Configuratie-submap %s van de gebruiker" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Configuratiemap van de gebruiker" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Gegevens-submap %s van de gebruiker" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Gegevensmap van de gebruiker" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Runtime-submap %s van de gebruiker" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Runtime-map van de gebruiker" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Toegang tot %s in bestandssysteem" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Onbekend bestandspad" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "Downloadgrootte" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "Geïnstalleerde grootte" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "Te downloaden hoeveelheid van internet" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "Grootte op schijf" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "Open gebruikersgegevensmap" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "Jouw gebruikersgegevens" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "Caches, instellingen en andere app-data" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "Cache" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "Tijdelijke gecachte data" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "Cache legen" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Grootte geïnstalleerde runtime" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Downloadgrootte runtime" #: src/bz-app-size-dialog.c:220 msgid "App Size" msgstr "App-grootte" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 src/bz-rich-app-tile.blp:105 #: src/bz-rich-app-tile.c:429 msgid "Verified" msgstr "Geverifieerd" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 src/bz-releases-list.c:206 msgid "Installed" msgstr "Geïnstalleerd" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:765 msgid "translator-credits" msgstr "" "Alexander Vanhee, 2025\n" "SKBotNL, 2026" #: src/bz-application.c:775 msgid "Special Thanks" msgstr "Speciale dank" #: src/bz-application.c:833 msgid "Logged Out Successfully!" msgstr "Succesvol uitgelogd!" #: src/bz-application.c:969 msgid "Performing setup…" msgstr "Setup aan het uitvoeren…" #: src/bz-application.c:1055 msgid "Set Up System Flathub?" msgstr "Flathub van het systeem instellen?" #: src/bz-application.c:1058 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be configured on the system Flatpak " "installation to browse and install applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "De Flathub-bron van het systeem is niet ingesteld. Bazaar vereist dat Flathub is geconfigureerd in de " "Flatpak-installatie van het systeem om applicaties te kunnen bladeren en installeren\n" "\n" "Je kunt Bazaar nog steeds gebruiken om reeds geïnstalleerde apps te bladeren en verwijderen." #: src/bz-application.c:1065 msgid "Set Up Flathub?" msgstr "Flathub instellen?" #: src/bz-application.c:1068 msgid "" "Flathub is not set up on this system. You will not be able to browse and install applications in Bazaar " "if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub is niet ingesteld op dit systeem. Je kunt geen applicaties in Bazaar bladeren en installeren " "als het niet beschikbaar is.\n" "\n" "Je kunt Bazaar nog steeds gebruiken om reeds geïnstalleerde apps te bladeren en verwijderen." #: src/bz-application.c:1074 msgid "Later" msgstr "Later" #: src/bz-application.c:1075 msgid "Set Up Flathub" msgstr "Flathub instellen" #: src/bz-application.c:1431 msgid "A backend error occurred" msgstr "Er is een backend-fout opgetreden" #: src/bz-application.c:1631 src/bz-application.c:3783 msgid "Refreshing…" msgstr "Verversen…" #: src/bz-application.c:1795 src/bz-application.c:3781 #, c-format msgid "Loading %d apps…" msgstr "%d apps laden…" #: src/bz-application.c:1848 msgid "Failed to open file" msgstr "Kan bestand niet openen" #: src/bz-application.c:1946 msgid "An initialization error occurred" msgstr "Een initialisatiefout is opgetreden" #: src/bz-application.c:2312 msgid "Checking for updates…" msgstr "Controleren op updates…" #: src/bz-application.c:2368 msgid "Failed to check for updates" msgstr "Het controleren op updates is mislukt" #: src/bz-application.c:3494 msgid "Malformed Link" msgstr "Onjuiste link" #: src/bz-application.c:3495 msgid "" "The link used to open this app has incorrect capitalization and may stop working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "De link die wordt gebruikt om deze app te openen, bevat fouten in het gebruik van hoofdletters en werkt " "in de toekomst mogelijk niet meer.\n" "\n" "Dit wordt hoogstwaarschijnlijk veroorzaakt doordat KRunner onjuiste app-ID’s verstuurt" #: src/bz-application.c:3503 msgid "Could not find app" msgstr "Kan app niet vinden" #: src/bz-application.c:3534 msgid "Failed to load metainfo" msgstr "Het laden van de metainfo is mislukt" #: src/bz-application.c:3785 msgid "Writing to cache…" msgstr "Schrijven naar cache…" #: src/bz-apps-page.blp:99 msgid "Show All" msgstr "Toon alle" #: src/bz-apps-page.c:237 #, c-format msgid "All \"%s\"" msgstr "Alle \"%s\"" #: src/bz-apps-page.c:487 #, c-format msgid "%d Applications" msgstr "%d applicaties" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Bundelinstallatie" #: src/bz-bundle-install-dialog.blp:195 msgid "Additional dependencies may take extra space" msgstr "Extra afhankelijkheden kunnen extra ruimte in beslag nemen" #: src/bz-bundle-install-dialog.blp:229 msgid "" "Installing this app may require adding a new software source. Other apps from this source will show up " "in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Voor het installeren van deze app moet je mogelijk een nieuwe softwarebron toevoegen. Andere apps uit " "deze bron worden dan in Bazaar weergegeven.\n" "\n" "Voeg deze bron alleen toe als je er zeker van bent dat je deze kunt vertrouwen." #: src/bz-bundle-install-dialog.blp:406 msgid "Successfully Installed!" msgstr "Successvol geïnstalleerd!" #: src/bz-bundle-install-dialog.blp:430 src/bz-bundle-install-dialog.blp:513 src/bz-rich-app-tile.blp:198 #: src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Openen" #: src/bz-bundle-install-dialog.blp:440 src/bz-bundle-install-dialog.blp:523 msgid "Show App Details" msgstr "Appgegevens tonen" #: src/bz-bundle-install-dialog.blp:490 msgid "Already Installed" msgstr "Al geïnstalleerd" #: src/bz-bundle-install-dialog.blp:535 msgid "Installation Failed" msgstr "Installatie mislukt" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Onbekende installatiegrootte" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Ongeveer %s om te installeren" #: src/bz-bundle-install-dialog.c:185 src/context-tile-callbacks.c:104 #: src/context-tile-callbacks.c:392 src/context-tile-callbacks.c:409 msgid "N/A" msgstr "N.v.t." #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Geen speciale machtigingen" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d downloads in de afgelopen maand" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s runtime" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Download" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Grootte-informatie onbeschikbaar" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Downloadgrootte van %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Alle leeftijden" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Leeftijdsclassificatie niet beschikbaar" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Geschikt voor alle leeftijden" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Geschikt voor %d-jarigen en ouder" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:284 msgid "Unknown" msgstr "Onbekend" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Vrije software gelicentieerd onder %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Alleen vrije software" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Propriëtaire software" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Speciale licentie: %s" #: src/context-tile-callbacks.c:281 msgid "Free" msgstr "Vrij" #: src/context-tile-callbacks.c:287 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "Propriëtair" #: src/context-tile-callbacks.c:289 src/bz-license-dialog.c:135 msgid "Special License" msgstr "Speciale licentie" #: src/context-tile-callbacks.c:309 msgid "Adaptive" msgstr "Adaptief" #: src/context-tile-callbacks.c:309 msgid "Desktop Only" msgstr "Alleen desktop" #: src/context-tile-callbacks.c:315 msgid "Works on desktop, tablets, and phones" msgstr "Werkt op desktop, tablets en telefoons" #: src/context-tile-callbacks.c:316 msgid "May not work on mobile devices" msgstr "Werkt mogelijk niet op mobiele apparaten" #: src/context-tile-callbacks.c:399 src/bz-safety-dialog.blp:27 msgid "Safe" msgstr "Veilig" #: src/context-tile-callbacks.c:401 src/context-tile-callbacks.c:403 msgid "Low Risk" msgstr "Laag risico" #: src/context-tile-callbacks.c:405 msgid "Medium Risk" msgstr "Gemiddeld risico" #: src/context-tile-callbacks.c:407 msgid "High Risk" msgstr "Hoog risico" #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:46 src/bz-flathub-page.blp:19 #: src/bz-full-view.blp:30 src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Leeg" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "Geen gecureerde apps" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still browse applications on Flathub" msgstr "Er is geen curatie-info beschikbaar op dit systeem. Je kan nog steeds apps op Flathub bladeren" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "Flathub bladeren" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 msgid "Offline" msgstr "Offline" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:61 src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Browser" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Niet geverifieerd" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Ontwikkelaarsinformatie niet beschikbaar." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "The ownership of the %s app ID has not been verified and it may be a community package." msgstr "Het eigendom van het %s app-ID is niet geverifieerd en het kan een communitypakket zijn." #: src/bz-developer-badge.c:237 #, c-format msgid "The ownership of the %s app ID has been manually verified by the Flathub team." msgstr "Het eigendom van het %s app-ID is handmatig geverifieerd door het Flathub-team." #: src/bz-developer-badge.c:253 #, c-format msgid "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on <b>%3$s</b>." msgstr "Het eigendom van het %1$s app-ID is geverifieerd door <b>%2$s</b> op <b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "Het eigendom van het %1$s app-ID is geverifieerd met %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Het eigendom van het %s app-ID is geverifieerd." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Volledige release-opmerkingen" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "Deze release is mogelijk gemaakt door gebruikers zoals jij!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further development by donating on Ko-Fi." msgstr "" "Ik vind het geweldig om Bazaar te maken, maar ik kan het niet in mijn eentje. Steun de verdere " "ontwikkeling door een donatie te doen via Ko-Fi." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Doneer aan Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Wat is er nieuw in %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Uitgebracht op %B %-e, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Kies een installatie" #: src/bz-entry-group-util.c:76 msgid "You have multiple versions of this app installed. Which one would you like to proceed with?" msgstr "Je hebt meerdere versies van deze app geïnstalleerd. Met welke wil je verdergaan?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:232 msgid "Cancel" msgstr "Annuleren" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Alleen voor deze gebruiker" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "deze gebruiker" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "alle gebruikers" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 src/bz-safety-dialog.blp:46 msgid "Details" msgstr "Details" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Kopiëren" #: src/bz-error-dialog.c:56 src/bz-share-list.c:364 msgid "Copied!" msgstr "Gekopieërd!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Aantal favorieten" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Updaten van favorieten is mislukt" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Log in met Flathub om favorieten te beheren" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Log in" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 src/bz-window.blp:335 msgid "Favorites" msgstr "Favorieten" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:144 msgid "Install All" msgstr "Alles installeren" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "Laden" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Geen favorieten" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Applicaties die je als favoriet markeert verschijnen hier" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Deze applicatie steunen" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Van favorieten verwijderen" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Verwijderen van favorieten is mislukt" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "Vorige" #: src/bz-featured-carousel.blp:54 msgid "Next" msgstr "Volgende" #: src/bz-flathub-category.c:93 msgid "Editing" msgstr "Bewerken" #: src/bz-flathub-category.c:94 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:95 msgid "Mixer" msgstr "Mixer" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:96 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Muziek" #: src/bz-flathub-category.c:97 msgid "Player" msgstr "Muziekspeler" #: src/bz-flathub-category.c:98 msgid "Recorder" msgstr "Geluidsrecorder" #: src/bz-flathub-category.c:99 msgid "Sequencer" msgstr "Muzieksequencer" #: src/bz-flathub-category.c:100 msgid "Tuner" msgstr "Tuner" #: src/bz-flathub-category.c:101 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:106 msgid "Emulation" msgstr "Emulatie" #: src/bz-flathub-category.c:107 msgid "Action" msgstr "Actie" #: src/bz-flathub-category.c:108 msgid "Adventure" msgstr "Avontuur" #: src/bz-flathub-category.c:109 msgid "Arcade" msgstr "Arcade" #: src/bz-flathub-category.c:110 msgid "Blocks" msgstr "Blokken" #: src/bz-flathub-category.c:111 msgid "Board" msgstr "Bord" #: src/bz-flathub-category.c:112 msgid "Card" msgstr "Kaart" #: src/bz-flathub-category.c:113 msgid "Kids" msgstr "Kinderen" #: src/bz-flathub-category.c:114 msgid "Logic" msgstr "Logica" #: src/bz-flathub-category.c:115 msgid "Role Playing" msgstr "Rollenspel" #: src/bz-flathub-category.c:116 msgid "Shooter" msgstr "Shooter" #: src/bz-flathub-category.c:117 msgid "Simulation" msgstr "Simulatie" #: src/bz-flathub-category.c:118 msgid "Sports" msgstr "Sport" #: src/bz-flathub-category.c:119 msgid "Strategy" msgstr "Strategie" #: src/bz-flathub-category.c:124 msgid "Browsers" msgstr "Browsers" #: src/bz-flathub-category.c:125 msgid "Chat" msgstr "Chat" #: src/bz-flathub-category.c:126 msgid "Mail" msgstr "Mail" #: src/bz-flathub-category.c:127 msgid "File Sharing" msgstr "Bestanden delen" #: src/bz-flathub-category.c:132 msgid "Audio & Video" msgstr "Audio & video" #: src/bz-flathub-category.c:132 msgid "Media" msgstr "Media" #: src/bz-flathub-category.c:132 msgid "More Audio & Video" msgstr "Meer audio & video" #: src/bz-flathub-category.c:133 msgid "Developer Tools" msgstr "Ontwikkeltools" #: src/bz-flathub-category.c:133 msgid "Develop" msgstr "Ontwikkel" #: src/bz-flathub-category.c:133 msgid "More Developer Tools" msgstr "Meer ontwikkeltools" #: src/bz-flathub-category.c:134 msgid "Education" msgstr "Educatie" #: src/bz-flathub-category.c:134 msgid "Learn" msgstr "Leren" #: src/bz-flathub-category.c:134 msgid "More Education" msgstr "Meer educatie" #: src/bz-flathub-category.c:135 msgid "Gaming" msgstr "Gaming" #: src/bz-flathub-category.c:135 msgid "Play" msgstr "Spelen" #: src/bz-flathub-category.c:135 msgid "More Gaming" msgstr "Meer gaming" #: src/bz-flathub-category.c:136 msgid "Graphics & Photography" msgstr "Grafisch & fotografie" #: src/bz-flathub-category.c:136 msgid "Create" msgstr "Creëren" #: src/bz-flathub-category.c:136 msgid "More Graphics & Photography" msgstr "Meer grafisch & fotografie" #: src/bz-flathub-category.c:137 msgid "Networking" msgstr "Netwerken" #: src/bz-flathub-category.c:137 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:137 msgid "More Networking" msgstr "Meer netwerken" #: src/bz-flathub-category.c:138 msgid "Productivity" msgstr "Productiviteit" #: src/bz-flathub-category.c:138 msgid "Work" msgstr "Werk" #: src/bz-flathub-category.c:138 msgid "More Productivity" msgstr "Meer productiviteit" #: src/bz-flathub-category.c:139 msgid "Science" msgstr "Wetenschap" #: src/bz-flathub-category.c:139 msgid "More Science" msgstr "Meer wetenschap" #: src/bz-flathub-category.c:140 msgid "System" msgstr "Systeem" #: src/bz-flathub-category.c:140 msgid "More System" msgstr "Meer systeem" #: src/bz-flathub-category.c:141 msgid "Utilities" msgstr "Hulpprogramma’s" #: src/bz-flathub-category.c:141 msgid "Tools" msgstr "Hulpmiddelen" #: src/bz-flathub-category.c:141 msgid "More Utilities" msgstr "Meer hulpprogramma’s" #: src/bz-flathub-category.c:142 src/bz-flathub-page.blp:109 src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Trending" #: src/bz-flathub-category.c:142 msgid "More Trending" msgstr "Meer trending" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:115 src/bz-flathub-page.blp:171 msgid "Popular" msgstr "Populair" #: src/bz-flathub-category.c:143 msgid "More Popular" msgstr "Meer populair" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:161 msgid "Recently Added" msgstr "Recent toegevoegd" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:121 msgid "New" msgstr "Nieuw" #: src/bz-flathub-category.c:144 msgid "More New" msgstr "Meer nieuwe" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:151 msgid "Recently Updated" msgstr "Onlangs bijgewerkt" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Bijgewerkt" #: src/bz-flathub-category.c:145 msgid "More Updated" msgstr "Meer bijgewerkt" #: src/bz-flathub-category.c:146 msgid "Mobile" msgstr "Onderweg" #: src/bz-flathub-category.c:146 msgid "More Mobile" msgstr "Meer onderweg" #: src/bz-flathub-category.c:147 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:147 msgid "More Adwaita" msgstr "Meer Adwaita" #: src/bz-flathub-category.c:148 msgid "KDE Apps" msgstr "KDE-apps" #: src/bz-flathub-category.c:148 msgid "More KDE Apps" msgstr "Meer KDE-apps" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub niet toegevoegd" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "De Flathub-bron is op geen van je Flatpak installaties teruggevonden" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub is onbeschikbaar" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Flathub is niet bereikbaar" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for applications." msgstr "Je kunt nog steeds applicaties beheren en zoeken." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Apps zoeken" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Opnieuw verbinden" #: src/bz-flathub-page.blp:198 msgid "App of the Day" msgstr "App van de dag" #: src/bz-flathub-page.blp:261 msgid "On the Go" msgstr "Onderweg" #: src/bz-flathub-page.blp:273 msgid "Apps for your Linux phones and tablets" msgstr "Apps voor je Linux-telefoons en -tablets" #: src/bz-flathub-page.blp:284 src/bz-flathub-page.blp:319 msgid "More Mobile Apps" msgstr "Meer mobiele apps" #: src/bz-flathub-page.blp:375 msgid "We​ ♥​ Games" msgstr "Wij​ ♥​ games" #: src/bz-flathub-page.blp:388 msgid "Games and apps to run your favorite titles" msgstr "Spellen en apps om je favoriete titels te spelen" #: src/bz-flathub-page.blp:422 msgid "More Games" msgstr "Meer spellen" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 src/bz-library-page.blp:82 msgid "No Results" msgstr "Geen resultaten" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Probeer een andere zoekterm" #: src/bz-full-view.blp:41 msgid "Content" msgstr "Content" #: src/bz-full-view.blp:106 msgid "This is a local preview, some details may differ from the published listing" msgstr "Dit is een voorvertoning, sommige details kunnen afwijken van de gepubliceerde vermelding" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "Voorvertoning winkel openen" #: src/bz-full-view.blp:235 msgid "_Support" msgstr "_Steunen" #: src/bz-full-view.blp:460 msgid "" "This app uses a runtime that no longer receives updates or security fixes. It may become unsafe to use." msgstr "" "Deze app gebruikt een runtime die geen updates of beveiligingsupdates meer ontvangt. Het kan onveilig " "worden om te gebruiken." #: src/bz-full-view.blp:548 msgid "Trash Data" msgstr "Gegevens verwijderen" #: src/bz-full-view.blp:610 msgid "Add-ons" msgstr "Add-ons" #: src/bz-full-view.blp:645 msgid "More Add-Ons" msgstr "Meer add-ons" #: src/bz-full-view.blp:656 msgid "Links" msgstr "Links" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Geen URL" #: src/bz-full-view.c:199 msgid "This application has a FLOSS license, meaning the source code can be audited for safety." msgstr "" "Deze applicatie heeft een FLOSS licentie, wat betekent dat de broncode gecontroleerd kan worden op " "veiligheid." #: src/bz-full-view.c:200 msgid "" "This application has a proprietary license, meaning the source code is developed privately and cannot " "be audited by an independent third party." msgstr "" "Deze applicatie heeft een propriëtaire licentie, wat betekent dat de broncode privé wordt ontwikkeld en " "niet gecontroleerd kan worden door een onafhankelijke derde partij." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Meer apps" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Andere apps van %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Andere apps van deze ontwikkelaar" #: src/bz-full-view.c:217 src/bz-full-view.c:317 #, c-format msgid "Other Apps by %s" msgstr "Andere apps van %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s is niet geïnstalleerd, maar heeft nog <b>%s</b> aan gegevens." #: src/bz-full-view.c:319 msgid "Other Apps" msgstr "Andere apps" #: src/bz-full-view.c:321 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d applicatie" msgstr[1] "%d applicaties" #: src/bz-full-view.c:537 src/bz-user-data-tile.c:144 msgid "Failed to Remove User Data" msgstr "Verwijderen van gebruikersgegevens is mislukt" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Hardwareondersteuning" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Toetsenbordondersteuning" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Vereist toetsenbord" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Toetsenbord aanbevolen" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Ondersteunt toetsenborden" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Onbekende ondersteuning voor toetsenborden" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Muisondersteuning" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Vereist muis of aanwijzingsapparaat" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Muis of aanwijzingsapparaat aanbevolen" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Ondersteunt muis of aanwijzingsapparaten" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Onbekende ondersteuning voor muis of aanwijzingsapparaten" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Touchscreen-ondersteuning" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Vereist touchscreen" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Touchscreens aanbevolen" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Ondersteunt touchscreens" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Onbekende ondersteuning voor touchscreens" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Mobiele ondersteuning" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Werkt op mobiele apparaten" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Werkt mogelijk niet goed op mobiele apparaten" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Desktopondersteuning" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Werkt goed op grote schermen" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s werkt het beste op specifieke hardware" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s werkt op de meeste apparaten" #: src/bz-install-controls.blp:62 msgid "_Open" msgstr "_Openen" #: src/bz-install-controls.blp:77 src/bz-install-controls.blp:134 msgid "Uninstall Application" msgstr "Applicatie verwijderen" #: src/bz-install-controls.blp:87 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Verwijderen" #: src/bz-install-controls.blp:121 src/bz-updates-card.c:164 src/bz-updates-card.c:183 msgid "Update" msgstr "Updaten" #: src/bz-install-controls.blp:144 src/bz-installed-tile.blp:105 msgid "Remove" msgstr "Verwijderen" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Annuleren" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Bezig met annuleren" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "Geïnstalleerde apps zoeken" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "Geschiedenis wissen" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "Geen applicaties gevonden" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "In plaats daarvan in winkel zoeken" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:113 msgid "Library" msgstr "Bibliotheek" #: src/bz-library-page.blp:128 msgid "Pending Updates" msgstr "Wachtende updates" #: src/bz-library-page.blp:155 msgid "Downloads" msgstr "Downloads" #: src/bz-library-page.blp:198 msgid "Recently Uninstalled" msgstr "Onlangs verwijderd" #: src/bz-library-page.blp:249 msgid "Clear Finished Tasks" msgstr "Afgeronde taken wissen" #: src/bz-library-page.blp:334 msgid "Sort By" msgstr "Sorteren op" #: src/bz-library-page.blp:348 msgid "Name" msgstr "Naam" #: src/bz-library-page.blp:354 msgid "Size" msgstr "Grootte" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Geen resultaten gevonden voor \"%s\" in de lijst met geïnstalleerde apps" #: src/bz-library-page.c:193 src/bz-updates-card.c:433 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u beschikbare update" msgstr[1] "%u beschikbare updates" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u geïnstalleerde app" msgstr[1] "%u geïnstalleerde apps" #: src/bz-license-dialog.blp:94 msgid "Get Involved" msgstr "Doe mee" #: src/bz-license-dialog.blp:111 msgid "Learn More" msgstr "Leer meer" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Onbekende licentie" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Door de community gebouwd" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Deze app wordt openbaar ontwikkeld door een internationale community.\n" "\n" "Je kunt dus deelnemen en helpen om de app nog beter te maken." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "De licentie van deze app is niet bekend" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Deze app wordt openbaar ontwikkeld door een internationale community en uitgebracht onder de %s " "licentie.\n" "\n" "Je kunt deelnemen en helpen om de app nog beter te maken." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it works. It may be insecure in " "ways that are hard to detect, and it may change without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Deze app wordt niet in het openbaar ontwikkeld, dus alleen de ontwikkelaars weten hoe het werkt. De app " "kan op moeilijk te detecteren manieren onveilig zijn en kan zonder toezicht veranderen.\n" "\n" "Je kunt mogelijk niet bijdragen aan deze app." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Deze app is ontwikkeld onder de speciale licentie %s.\n" "\n" "Je kunt mogelijk niet bijdragen aan deze app." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:49 msgid "License" msgstr "Licentie" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Verbinden met Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Er ging iets mis" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Log in om je favoriete apps op al je apparaten te synchroniseren" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Voltooien" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Hallo, %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "Selecteer een metainfo-bestand" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Metainfo-bestanden" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "Selecteer een icoon (optioneel)" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Fotobestanden" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Voorbeeld" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Voorkeuren" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "De netwerkverbinding is gelimiteerd — automatisch vernieuwen van de winkelgegevens is gepauzeerd" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:235 msgid "Refresh Manually" msgstr "Handmatig verversen" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Contentfilters" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Alleen vrije software" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary applications when browsing and searching" msgstr "Verberg propriëtaire applicaties bij bladeren en zoeken" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Alleen resultaten van Flathub" #: src/bz-preferences-dialog.blp:40 msgid "Limit search and browse results to applications only available on Flathub" msgstr "Beperk de zoek- en bladerresultaten tot applicaties die alleen op Flathub beschikbaar zijn" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "Alleen geverifieerde resultaten" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Verberg resultaten die niet geverifieerd zijn op Flathub" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "Verberg end-of-life-apps" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "Verberg apps die niet langer ondersteund worden door hun ontwikkelaars" #: src/bz-preferences-dialog.blp:55 msgid "Progress Bar Theme" msgstr "Voortgangsbalkthema" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Accentkleur" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Pride kleuren" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Lesbische pride kleuren" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Mannelijke homoseksuele pride kleuren" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Transgender pride kleuren" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Nonbinaire pride kleuren" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Biseksuele pride kleuren" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Aseksuele pride kleuren" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Panseksuele pride kleuren" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Aromantische pride kleuren" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Genderfluïde pride kleuren" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Polyseksuele pride kleuren" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Omniseksuele pride kleuren" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Aroace pride kleuren" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Agender pride kleuren" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Genderqueer pride kleuren" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Intersekse pride kleuren" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Demigender pride kleuren" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Biromantische pride kleuren" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Disability pride kleuren" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Femboy pride kleuren" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Neutrois pride kleuren" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:155 msgid "Version History" msgstr "Versie geschiedenis" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Versiegeschiedenis" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Vandaag" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Gisteren" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag geleden" msgstr[1] "%d dagen geleden" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d week geleden" msgstr[1] "%d weken geleden" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d maand geleden" msgstr[1] "%d maanden geleden" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d jaar geleden" msgstr[1] "%d jaren geleden" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Versie %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Geen details voor deze versie" #: src/bz-releases-list.c:263 msgid "Get More Information" msgstr "Meer informatie" #: src/bz-rich-app-tile.blp:217 msgid "Uninstall" msgstr "Verwijderen" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:369 msgid "Get" msgstr "/" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Onbekende machtigingen" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Machtigingen ontbreken voor deze app." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Geen machtigingen" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "App is volledig gesandboxt" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Netwerktoegang" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Heeft toegang tot het internet" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Geen netwerktoegang" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Heeft geen toegang tot het internet" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Toegang tot gebruikersapparaten" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Heeft toegang tot apparaten zoals webcams of spelcontrollers" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Geen toegang tot gebruikersapparaten" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Heeft geen toegang tot apparaten zoals webcams of spelcontrollers" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Toegang tot invoerapparaten" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Heeft toegang tot invoerapparaten" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Toegang tot microfoon en audio-afspelen" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "Kan audio opnemen en afspelen zonder toestemming te vragen" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Toegang tot systeemapparaten" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "Heeft toegang tot systeemapparaten waarvoor verhoogde rechten vereist zijn" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Toegang tot scherminhoud" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Heeft toegang tot de inhoud van het scherm of andere vensters" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Verouderd venstersysteem" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Gebruikt een verouderd venstersysteem (X11)" #: src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Alle mogelijke machtigingen" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Kan alle mogelijke machtigingen verkrijgen" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Gebruikersinstellingen" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Kan gebruikersinstellingen bekijken en wijzigen" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Lees- en schrijftoegang tot het volledige bestandssysteem" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Kan alle gegevens op het bestandssysteem lezen en schrijven" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Lees- en schrijftoegang tot de persoonlijke map" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Kan alle gegevens in jouw persoonlijke map lezen en schrijven" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Leestoegang tot het volledig bestandssysteem" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Kan alle gegevens op het bestandssysteem lezen" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Leestoegang tot de persoonlijke map" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Kan alle gegevens in jouw persoonlijke map lezen" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Lees- en schrijftoegang tot de downloadmap" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Kan alle gegevens in jouw downloadmap lezen en schrijven" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Leestoegang tot de downloadmap" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Kan alle gegevens in jouw downloadmap lezen" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Kan alle gegevens in de map lezen en schrijven" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Kan alle gegevens in de map lezen" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Geen toegang tot het bestandssysteem" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Heeft geen enkele toegang tot het bestandssysteem" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Gebruikt systeemdiensten" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Kan buiten het portaal om gegevens opvragen van systeemdiensten" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Gebruikt sessiediensten" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Kan buiten het portaal om gegevens opvragen van sessiediensten" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Geen diensttoegang" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Heeft buiten het portaal om geen enkele toegang tot sessie- of systeemdiensten" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Geverifieerde app-ontwikkelaar" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "De ontwikkelaar van deze app is geverifieerd en zijn wie ze zeggen dat ze zijn" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Propriëtaire code" #: src/safety-calculator.c:365 msgid "The source code is not public, so it cannot be independently audited and might be unsafe" msgstr "" "De broncode is niet publiek, dus het kan niet onafhankelijk gecontroleerd worden en kan onveilig zijn" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Controleerbare code" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the app more likely to be safe" msgstr "" "De broncode is publiek en kan onafhankelijk gecontroleerd worden, wat de app waarschijnlijk veiliger " "maakt" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Gebruikt de %s-systeemdienst" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Gebruikt de %s-sessiedienst" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Gebruikt de %s-dienst" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Kan buiten het portaal om de dienst zien" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Kan buiten het portaal om praten met de dienst" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Kan buiten het portaal om eigenaar zijn van de dienst" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Globale menu-integratie" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Kan menu’s in de globale menubalk tonen" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "KDE-instellingen integratie" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Kan detecteren wanneer de instellingen van het KDE-bureaublad veranderen" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Globale KDE-instellingen" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Kan KDE-bureaubladvoorkeuren zoals lettertypen en kleuren lezen" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Beveiligde opslagservice" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "Kan zijn eigen wachtwoorden opslaan en ophalen via de systeemsleutelbeheerder" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Bureaubladnotificatiedienst" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Kan bureaubladmeldingen sturen" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Systeemvakintegratie" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Kan een icoon tonen in het systeemvak" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "KDE Connect-integratie" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Kan communiceren met gekoppelde apparaten via KDE Connect" #: src/bz-safety-dialog.blp:59 msgid "App ID" msgstr "App ID" #: src/bz-safety-dialog.blp:69 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:100 msgid "" "This app uses an outdated version of the software platform (SDK) and might contain bugs or security " "vulnerabilities which will not be fixed." msgstr "" "Deze app gebruikt een verouderde versie van het softwareplatform (SDK) en kan bugs of " "beveiligingskwetsbaarheden bevatten die niet zullen worden opgelost." #: src/bz-safety-dialog.c:167 msgid "Safety" msgstr "Veiligheid" #: src/bz-safety-dialog.c:226 #, c-format msgid "%s is Safe" msgstr "%s is veilig" #: src/bz-safety-dialog.c:231 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s geeft geen onveilige machtigingen" #: src/bz-safety-dialog.c:236 #, c-format msgid "%s is Probably Safe" msgstr "%s is waarschijnlijk veilig" #: src/bz-safety-dialog.c:241 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s is mogelijk onveilig" #: src/bz-safety-dialog.c:246 #, c-format msgid "%s is Unsafe" msgstr "%s is onveilig" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "Schermafbeeldingen" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "Vorige schermafbeelding" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "Volgende schermafbeelding" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "Afbeelding kopiëren" #: src/bz-screenshot-page.blp:150 msgid "Reset View" msgstr "Weergave resetten" #: src/bz-screenshot-page.blp:161 msgid "Zoom Out" msgstr "Uitzoomen" #: src/bz-screenshot-page.blp:171 msgid "Zoom In" msgstr "Inzoomen" #: src/bz-screenshots-carousel.blp:5 msgid "Screenshots Carousel" msgstr "Schermafbeeldingen-carrousel" #: src/bz-screenshots-carousel.blp:117 msgid "Open Screenshot Viewer" msgstr "Schermafbeeldingsviewer openen" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "Filters" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Geverifieerd" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Vrij" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Niet-_EOL" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Verberg end-of-life-apps" #: src/bz-search-filter-popover.blp:57 msgid "Categories" msgstr "Categorieën" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "Apps, games en software zoeken" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "Zoekfilters" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "Zoekopdracht wissen" #: src/bz-search-page.blp:209 msgid "Browse Categories" msgstr "Categorieën bladeren" #: src/bz-search-page.blp:242 msgid "Categories Unavailable" msgstr "Categorieën zijn niet beschikbaar" #: src/bz-search-page.blp:243 msgid "Search for apps using the search bar above." msgstr "Zoek naar apps met de zoekbalk hierboven." #: src/bz-search-page.blp:360 msgid "No Applications Found" msgstr "Geen applicaties gevonden" #: src/bz-search-page.c:247 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Geen resultaten voor \"%s\" op Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Video" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Kantoor" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Agenda" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Berichten" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Tekenen" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulator" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub-pagina" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Projectwebsite" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Probleemtracker" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "Veelgestelde vragen" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Hulp" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Doneer" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Vertalen" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Contact" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Broncode" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Bijdragen" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifest" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Kopieer link" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Tijdlijn" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Installaties:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Kaart" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Sinds 15/4/2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM totale installaties" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK totale installaties" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d totale installaties" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Gebruikersgegevens behouden" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Herstel van persoonlijke instellingen en inhoud toestaan" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Alle data verwijderen" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Gebruikersgegevens permanent verwijderen om ruimte te besparen" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "%s installeren?" #: src/bz-transaction-dialog.c:195 msgid "Select which version to install. May install additional shared components" msgstr "" "Selecteer de versie die je wilt installeren. Mogelijk worden er extra gedeelde componenten geïnstalleerd" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Mogelijk worden er extra gedeelde componenten geïnstalleerd" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 src/bz-transaction-dialog.c:274 #: src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Annuleren" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Installeren" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "%s verwijderen?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Selecteer de versie die je wilt verwijderen." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Het zal niet mogelijk zijn om %s te gebruiken na deïnstallatie." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "“%s†heeft een hoog risico" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, browser history, saved passwords</" "b>, and more. It also has access to the internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with these permissions." msgstr "" "Deze app heeft volledige toegang tot je systeem, inclusief al <b>je bestanden, browsergeschiedenis, " "opgeslagen wachtwoorden</b> en meer. Het heeft ook toegang tot internet, wat betekent dat het je " "gegevens naar externe partijen kan versturen.\n" "\n" "Omdat de app propriëtair is, kan het ook niet gecontroleerd worden wat het doet met deze machtigingen." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record all keystrokes, capture " "screenshots, and monitor other applications</b>. It also has access to the internet, meaning it could " "send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with these permissions." msgstr "" "Deze app maakt gebruik van het verouderde X11-venstersysteem, waardoor deze <b>alle toetsaanslagen kan " "registreren, schermafbeeldingen kan maken en andere applicaties kan monitoren</b>. De app heeft ook " "toegang tot het internet, wat betekent dat deze je gegevens naar derden zou kunnen verzenden.\n" "\n" "Omdat de app propriëtair is, kan er geen controle worden uitgevoerd op wat deze met deze machtigingen " "doet." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "Toch _installeren" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Het laden van de transactievenster is mislukt" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Alle apps zijn al geïnstalleerd" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_OK" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "%u app installeren?" msgstr[1] "%u apps installeren?" #: src/bz-transaction-dialog.c:573 msgid "The following will be installed. Additional shared components may also be installed" msgstr "" "Het volgende wordt geïnstalleerd. Mogelijk worden er ook nog extra gedeelde onderdelen geïnstalleerd" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "Er worden %d add-ons geïnstalleerd." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Daarnaast worden er add-ons geïnstalleerd." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "Alles _installeren" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Geslaagd in %.02f seconden" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "App-add-on" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Runtime" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "In wachtrij" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Gereed" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Geannuleerd" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Fout" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Transactie annuleren" #: src/bz-transaction-tile.blp:436 msgid "Show Error Info" msgstr "Foutinformatie tonen" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s vrijgemaakt" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Transactiefout" #: src/bz-transaction.c:344 msgid "Pending" msgstr "In afwachting" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "Alles _updaten" #: src/bz-updates-card.c:211 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u runtime-update" msgstr[1] "%u runtime-updates" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Achtergebleven gebruikersgegevens beheren" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "Geen gebruikersgegevens gevonden" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "Gebruikersgegevens" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "Gebruikersgegevens verwijderen" #: src/bz-user-data-tile.c:150 #, c-format msgid "Trashed User Data for %s" msgstr "Gebruikersgegevens verwijderd voor %s" #: src/bz-window.blp:71 msgid "Refreshing" msgstr "Verversen…" #: src/bz-window.blp:89 msgid "Curated" msgstr "Gecureerd" #: src/bz-window.blp:101 msgid "Explore" msgstr "Ontdekken" #: src/bz-window.blp:128 msgid "Search" msgstr "Zoeken" #: src/bz-window.blp:215 msgid "Main Menu" msgstr "Hoofdmenu" #: src/bz-window.blp:226 msgid "You are running a new version of Bazaar!" msgstr "Je gebruikt een nieuwe versie van Bazaar!" #: src/bz-window.blp:227 msgid "See What's New" msgstr "Zie wat er nieuw is" #: src/bz-window.blp:234 msgid "You have a network connection but are viewing a cached version of Flathub" msgstr "Je hebt een netwerkverbinding maar bekijkt een gecachte versie van Flathub" #: src/bz-window.blp:279 msgid "_Donate to Bazaar" msgstr "_Doneer aan Bazaar" #: src/bz-window.blp:285 msgid "_Refresh" msgstr "Ve_rversen" #: src/bz-window.blp:289 msgid "_Login With Flathub" msgstr "_Inloggen met Flathub" #: src/bz-window.blp:295 msgid "_Manage Leftover User Data" msgstr "Overgebleven _gebruikersgegevens beheren" #: src/bz-window.blp:301 msgid "_Preferences" msgstr "_Voorkeuren" #: src/bz-window.blp:306 msgid "_Keyboard Shortcuts" msgstr "Snel_toetsen" #: src/bz-window.blp:311 msgid "_About Bazaar" msgstr "_Over Bazaar" #: src/bz-window.blp:317 msgid "_Quit Bazaar" msgstr "Bazaar _sluiten" #: src/bz-window.blp:342 msgid "Log Out" msgstr "Uitloggen" #. Translators: %s is the title of the current page #: src/bz-window.c:376 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:596 src/bz-window.c:634 msgid "Failed to launch application" msgstr "Het opstarten van de applicatie is mislukt" #: src/bz-window.c:843 msgid "You can't remove Bazaar from Bazaar!" msgstr "Je kan Bazaar niet verwijderen vanuit Bazaar!" #: src/bz-window.c:1127 src/bz-window.c:1161 msgid "Can't do that right now!" msgstr "Dit is nu niet mogelijk!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Installatie" msgstr[1] "Installaties" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigatie" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Ontdekpagina openen" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Bibliotheekpagina openen" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Zoekpagina openen" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Bronnen" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Bronnen synchroniseren" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Algemeen" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Voorkeuren openen" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Sneltoetsen tonen" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Venster sluiten" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Bazaar sluiten" ������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/pl.po������������������������������������������������������������������0000664�0000000�0000000�00000356013�15240005042�0016737�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SPDX-FileCopyrightText: 2025 Polish translations for bazaar package # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # # SPDX-FileCopyrightText: 2025-2026 Microwave <micro.mail88@gmail.com> msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-07-22 17:51+0200\n" "PO-Revision-Date: 2026-07-24 20:01+0200\n" "Last-Translator: Marcel Mrówka <micro.mail88@gmail.com>\n" "Language-Team: Polish <>\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 |" "| n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 26.04.1\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "Sklep z aplikacjami" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "ZarzÄ…dzaj oprogramowaniem flatpak na tym komputerze" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "" "System;Package;Manager;Discover;Flatpak;Software;Store;Marketplace;Pakiet;Pacz" "ka;ZarzÄ…dzanieOprogramowaniem;Odkryj;Odkrywaj;Odkrywca;Oprogramowanie;Sklep;Ba" "zar;AppStore;Play;Aplikacja;Aplikacje;Rynek;Targ;Bazar;GieÅ‚da;Apki;Apka;Progra" "m;Programy;Pobieranie;Pobierz;Instalowanie;Instaluj;Instalacja;Flathub;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Nowe okno" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Odkrywaj i zarzÄ…dzaj aplikacjami" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Nowoczesny, szybki sklep z aplikacjami na Linuxa z naciskiem na odkrywanie " "oraz instalowanie aplikacji i dodatków z repozytoriów Flatpak, głównie z " "Flathuba" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Ustawiaj w kolejce kilka instalacji i dalej przeglÄ…daj" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Åatwo przeglÄ…daj uprawnienia aplikacji" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Zaloguj siÄ™ do konta Flathub, aby zarzÄ…dzać ulubionymi" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Wyszukuj aplikacje proÅ›ciutko z GNOME Shell" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:766 msgid "The Bazaar Contributors" msgstr "Kontrybutorzy Bazaaru" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Widok domowy pokazujÄ…cy aplikacje z Flathuba" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Strona aplikacji Exhibit" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Strona biblioteki" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Strona wyszukiwania" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Strona kategorii" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Zatrzymano otrzymywanie wystÄ…pieÅ„" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Odinstaluj" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Zainstaluj" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "ZarzÄ…dzaj dodatkami" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Brak widocznych dodatków" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Twoje aktualne preferencje filtrowania ukrywajÄ… wszystkie znane dodatki. " "Spróbuj dostosować je." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Strona dodatków" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "PobraÅ„/m-c" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Nie otrzymuje podstawowych aktualizacji" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Ten dodatek wykorzystuje bibliotekÄ™, która już nie otrzymuje aktualizacji " "lub poprawek zabezpieczeÅ„. Może siÄ™ stać niebezpieczny." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "Dodatek dla aplikacji %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Pokaż mniej" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Pokaż wiÄ™cej" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Statystyki pobraÅ„" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Próg wiekowy" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Kreskówkowa przemoc" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Brak informacji o wystÄ™powaniu kreskówkowej przemocy" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Fantastyczna przemoc" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Brak informacji o wystÄ™powaniu fantastycznej przemocy" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Realistyczna przemoc" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Brak informacji o wystÄ™powaniu realistycznej przemocy" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Przemoc z ukazaniem krwawienia" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Brak informacji o wystÄ™powaniu przemocy z krwawieniem" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Przemoc seksualna" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Brak informacji o wystÄ™powaniu przemocy seksualnej" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alkohol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Brak informacji o wystÄ™powaniu odniesieÅ„ do alkoholu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Narkotyki" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Brak informacji o wystÄ™powaniu odniesieÅ„ do narkotyków" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "TytoÅ„" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Brak informacji o wystÄ™powaniu odniesieÅ„ do tytoniu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nagość" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Brak informacji o wystÄ™powaniu nagoÅ›ci" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Motywy seksualne" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "Brak informacji o wystÄ™powaniu odniesieÅ„ lub przedstawieÅ„ natury seksualnej" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Wulgaryzmy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Brak informacji o wystÄ™powaniu wulgaryzmów" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Nieodpowiedni humor" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Brak informacji o wystÄ™powaniu nieodpowiedniego humoru" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Dyskryminacja" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Brak informacji o wystÄ™powaniu dyskryminacji" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Reklamy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Brak informacji o wystÄ™powaniu reklam" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Hazard" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Brak informacji o wystÄ™powaniu hazardu" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Zakupy" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Brak informacji o możliwoÅ›ci robienia zakupów" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Rozmowy miÄ™dzy użytkownikami" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Brak informacji o możliwoÅ›ci rozmawiania z innymi użytkownikami" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Rozmowy gÅ‚osowe miÄ™dzy użytkownikami" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "" "Brak informacji o możliwoÅ›ci prowadzenia rozmów gÅ‚osowych z innymi " "użytkownikami" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Przekazywanie informacji kontaktowych" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Brak informacji o przekazywaniu nazw użytkowników na portalach " "spoÅ‚ecznoÅ›ciowych, czy też adresów e-mail" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Przekazywanie danych osobowych" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Brak informacji o wysyÅ‚aniu osobom trzecim danych osobowych użytkowników" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "UdostÄ™pnianie lokalizacji" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "Brak informacji o udostÄ™pnianiu lokalizacji użytkownika z innymi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostytucja" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Brak informacji o wystÄ™powaniu odniesieÅ„ do prostytucji" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Cudzołóstwo" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Brak informacji o wystÄ™powaniu odniesieÅ„ do cudzołóstwa" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Seksualizowanie postacie" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Brak informacji o wystÄ™powaniu seksualizowanych postaci" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Profanacja" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Brak informacji o wystÄ™powaniu odniesieÅ„ do profanacji" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "ZwÅ‚oki" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Brak informacji o wystÄ™powaniu zwÅ‚ok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Niewolnictwo" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Brak informacji o wystÄ™powaniu odniesieÅ„ do niewolnictwa" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Nie zawiera odniesieÅ„ do narkotyków" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Nie zawiera przekleÅ„stw, profanacji i innych rodzajów mocnego jÄ™zyka" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Nie zawiera reklam i możliwoÅ›ci wykonywania zakupów" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Nie zawiera seksu i nagoÅ›ci" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Nie zawiera niekontrolowanej funkcji chatu" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Nie zawiera przemocy" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Używki" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Mocny jÄ™zyk" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "PieniÄ…dze" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "SpoÅ‚eczność" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Przemoc" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "3+" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "Aplikacja %s nie posiada progu wiekowego" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "Aplikacja %s jest odpowiednia dla wszystkich" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "Aplikacja %s jest odpowiednia dla mÅ‚odszych dzieci" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "Aplikacja %s jest odpowiednia dla dzieci" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "Aplikacja %s jest odpowiednia dla nastolatków" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "Aplikacja %s jest odpowiednia dla dorosÅ‚ych" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "Aplikacja %s jest odpowiednia dla %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Folder systemowy %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Podfolder katalogu domowego %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Foldery systemu hostowego" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Konfiguracja systemu hostowego z /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Podfolder pulpitu %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Folder pulpitu" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Podfolder dokumentów %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Folder dokumentów" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Podfolder muzyki %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Folder muzyki" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Podfolder obrazów %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Folder obrazów" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Podfolder publicznego udostÄ™pniania %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Folder publicznego udostÄ™pniania" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Podfolder filmów %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Folder filmów" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Podfolder szablonów %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Folder szablonów" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Podfolder pamiÄ™ci podrÄ™cznej użytkownika %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Folder pamiÄ™ci podrÄ™cznej użytkownika" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Podfolder konfiguracji użytkownika %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Folder konfiguracji użytkownika" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Podfolder danych użytkownika %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Folder danych użytkownika" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Podfolder bibliotek użytkownika %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Folder bibliotek użytkownika" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "DostÄ™p systemu plików do %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Nieznana Å›cieżka systemu plików" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Rozmiar do pobrania" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Rozmiar po instalacji" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "Ilość do pobrania z internetu" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Rozmiar na dysku" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Otwórz folder danych użytkownika" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "Twoje dane użytkownika" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Pamięć podrÄ™czna, ustawienia i inne dane aplikacji" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Pamięć podrÄ™czna" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "Tymczasowo przechowywane dane w pamiÄ™ci podrÄ™cznej" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "Wyczyść pamięć podrÄ™cznÄ…" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Rozmiar bibliotek po instalacji" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Rozmiar bibliotek do pobrania" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "NiedostÄ™pne" #: src/bz-app-size-dialog.c:207 msgid "App Size" msgstr "Rozmiar aplikacji" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Zweryfikowano" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:135 msgid "Installed" msgstr "Zainstalowano" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:769 msgid "translator-credits" msgstr "Marcel Mrówka (Microwave) <micro.mail88@gmail.com>, 2025, 2026" #: src/bz-application.c:779 msgid "Special Thanks" msgstr "Specjalne podziÄ™kowania" #: src/bz-application.c:837 msgid "Logged Out Successfully!" msgstr "Wylogowano pomyÅ›lnie!" #: src/bz-application.c:1027 msgid "Ubuntu Troubles!" msgstr "KÅ‚opoty Ubuntu!" #: src/bz-application.c:1030 msgid "" "The more recent versions of Ubuntu have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version of " "Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Niedawne wydania Ubuntu spartaczyÅ‚y domyÅ›lne zasady bezpieczeÅ„stwa, " "spowodowaÅ‚o to, że <b>aplikacje sÄ… niemożliwe do zainstalowania</b> z " "Flatpakowej wersji Bazaaru, na razie proszÄ™ używać normalnego pakietu " "uruchamiajÄ…c w terminalu komendÄ™\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "FlatpakowÄ… wersjÄ™ aplikacji można usunąć komendÄ…\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1036 msgid "Continue Anyway" msgstr "Kontynuuj mimo to" #: src/bz-application.c:1052 msgid "Performing setup…" msgstr "Konfigurowanie…" #: src/bz-application.c:1144 msgid "Set Up System Flathub?" msgstr "Skonfigurować Flathub systemowo?" #: src/bz-application.c:1147 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Repozytorium Flathuba na poziomie systemu nie jest skonfigurowane. Bazaar " "wymaga Flathuba skonfigurowanego na systemowej instalacji Flatpaka, aby móc " "przeglÄ…dać oraz instalować aplikacje.\n" "\n" "Nadal można używać Bazaaru do przeglÄ…dania i usuwania już zainstalowanych " "aplikacji." #: src/bz-application.c:1154 msgid "Set Up Flathub?" msgstr "Skonfigurować Flathub?" #: src/bz-application.c:1157 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub nie jest skonfigurowany na tym urzÄ…dzeniu. Nie bÄ™dziesz mógÅ‚ " "przeglÄ…dać i instalować aplikacji w Bazaarze, jeÅ›li jest niedostÄ™pny.\n" "\n" "Nadal można używać Bazaaru do przeglÄ…dania i usuwania już zainstalowanych " "aplikacji." #: src/bz-application.c:1163 msgid "Later" msgstr "Później" #: src/bz-application.c:1164 msgid "Set Up Flathub" msgstr "Skonfiguruj Flathub" #: src/bz-application.c:1697 msgid "A backend error occurred" msgstr "WystÄ…piÅ‚ błąd w backendzie" #: src/bz-application.c:1905 src/bz-application.c:4152 msgid "Refreshing…" msgstr "OdÅ›wieżanie…" #: src/bz-application.c:2069 src/bz-application.c:4150 #, c-format msgid "Loading %d apps…" msgstr "Åadowanie %d aplikacji…" #: src/bz-application.c:2122 src/bz-application.c:2196 msgid "Failed to open file" msgstr "Otwieranie pliku nie powiodÅ‚o siÄ™" #: src/bz-application.c:2210 msgid "Failed to load metainfo" msgstr "Åadowanie metainfo nie powiodÅ‚o siÄ™" #: src/bz-application.c:2304 msgid "An initialization error occurred" msgstr "WystÄ…piÅ‚ błąd inicjalizacji" #: src/bz-application.c:2703 msgid "Checking for updates…" msgstr "Sprawdzanie dostÄ™pnoÅ›ci aktualizacji…" #: src/bz-application.c:2759 msgid "Failed to check for updates" msgstr "Sprawdzanie dostÄ™pnoÅ›ci aktualizacji nie powiodÅ‚o siÄ™" #: src/bz-application.c:3925 msgid "Malformed Link" msgstr "ZnieksztaÅ‚cone złącze" #: src/bz-application.c:3926 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "ÅÄ…cze użyte do otwarcia ma niepoprawnÄ… kapitalizacjÄ™ i może przestać dziaÅ‚ać " "w przyszÅ‚oÅ›ci.\n" "\n" "Jest to prawdopodobnie spowodowane KRunnerem nie dajÄ…cym poprawnych " "identyfikatorów" #: src/bz-application.c:3934 msgid "Could not find app" msgstr "Nie można znaleźć aplikacji" #: src/bz-application.c:4154 msgid "Writing to cache…" msgstr "Zapisywanie do pamiÄ™ci podrÄ™cznej…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Pokaż wszystkie" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Wszystkie aplikacje dot. „%sâ€" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d aplikacji" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Otwieranie artykuÅ‚u nie powiodÅ‚o siÄ™" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Instalacja pakietu" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Dodatkowe zależnoÅ›ci mogÄ… zająć dodatkowe miejsce" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Instalacja tej aplikacji może wymagać dodania nowego źródÅ‚a oprogramowania. " "Inne aplikacje z tego źródÅ‚a bÄ™dÄ… pojawiać siÄ™ w Bazaarze.\n" "\n" "Tylko dodaj to źródÅ‚o, majÄ…c pewność, że można mu zaufać." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "PomyÅ›lnie zainstalowano!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Otwórz" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Pokaż szczegóły aplikacji" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Już zainstalowano" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Instalacja nie powiodÅ‚a siÄ™" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Nieznany rozmiar instalacji" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "OkoÅ‚o %s do zainstalowania" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Brak specjalnych uprawnieÅ„" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:29 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Puste" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "Brak polecanych" #: src/bz-curated-view.blp:30 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Plik konfiguracji polecanych nie jest dostÄ™pny na tym urzÄ…dzeniu. Nadal " "można przeglÄ…dać aplikacje na Flathubie." #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "PrzeglÄ…daj Flathuba" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "Offline" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "PrzeglÄ…darka" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Nie zweryfikowano" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Informacja o twórcy jest niedostÄ™pna" #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "WÅ‚asność identyfikatora aplikacji %s nie zostaÅ‚a zweryfikowana, wiÄ™c może " "być pakietem zbudowanym przez spoÅ‚eczność." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "WÅ‚asność identyfikatora aplikacji %s zostaÅ‚a zweryfikowana rÄ™cznie przez " "zespół Flathub" #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "WÅ‚asność identyfikatora aplikacji %1$s zostaÅ‚a zweryfikowana przez <b>%2$s</" "b> na <b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "" "WÅ‚asność identyfikatora aplikacji %1$s zostaÅ‚a zweryfikowana przy użyciu " "%2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "WÅ‚asność identyfikatora aplikacji %s zostaÅ‚a zweryfikowana." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "PeÅ‚ne notatki o wydaniu" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "To wydanie byÅ‚o możliwe dziÄ™ki użytkownikom takim jak ty!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Kocham tworzyć Bazaar, lecz nie mogÄ™ robić tego bez niczyjej pomocy. Wspomóż " "dalszy rozwój aplikacji, przekazujÄ…c darowiznÄ™ na Ko-Fi." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Wesprzyj Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Co nowego w wersji %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Wydano %-e %B, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Wybierz instalacjÄ™" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Masz zainstalowanych kilka wersji tej aplikacji. Z którÄ… chciaÅ‚byÅ› " "kontynuować?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Anuluj" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Tylko dla tego użytkownika" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "ten użytkownik" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "wszyscy użytkownicy" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:98 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Szczegóły" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Kopiuj" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Skopiowano!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Liczba polubieÅ„" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Aktualizacja polubienia nie powiodÅ‚a siÄ™" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Zaloguj siÄ™ do konta Flathub, aby zarzÄ…dzać ulubionymi" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Zaloguj" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:348 msgid "Favorites" msgstr "Ulubione" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Zainstaluj wszystkie" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:17 msgid "Loading" msgstr "Åadowanie" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Brak ulubionych" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Aplikacje oznaczone jako ulubione bÄ™dÄ… siÄ™ tutaj ukazywać" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Wesprzyj tÄ™ aplikacjÄ™" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "UsuÅ„ z ulubionych" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "UsuniÄ™cie z ulubionych nie powiodÅ‚o siÄ™" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Wstecz" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Dalej" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Edytowanie" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mikser" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Muzyka" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Gracz" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Nagrywarka" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Sekwencer" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Tuner" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "Telewizja" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Emulacja" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Akcja" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Przygoda" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Automatowe" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Klocki" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Planszówki" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Karciane" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Dla dzieci" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Logiczne" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "RPG" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Strzelanki" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Symulacja" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Sporty" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Strategiczne" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "PrzeglÄ…darki" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Rozmowy" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Poczta" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "UdostÄ™pnianie plików" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Audio i wideo" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Multimedia" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "WiÄ™cej aplikacji multimedialnych" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "NarzÄ™dzia programistyczne" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Programowanie" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "WiÄ™cej narzÄ™dzi programistycznych" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Edukacja" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Ucz siÄ™" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "WiÄ™cej aplikacji dot. edukacji" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Gry" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Graj" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "WiÄ™cej gier" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafika i fotografia" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Twórz" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "WiÄ™cej aplikacji dot. grafiki i fotografii" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "NarzÄ™dzia sieciowe" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "WiÄ™cej narzÄ™dzi sieciowych" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Produktywność" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Pracuj" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "WiÄ™cej aplikacji dot. produktywnoÅ›ci" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Nauka" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "WiÄ™cej aplikacji dot. nauki" #: src/bz-flathub-category.c:142 msgid "System" msgstr "System" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "WiÄ™cej aplikacji dot. systemu" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "NarzÄ™dzia" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "NarzÄ™dzia" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "WiÄ™cej narzÄ™dzi" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "TrendujÄ…ce" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "WiÄ™cej trendujÄ…cych" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "Popularne" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "WiÄ™cej popularnych" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Niedawno dodane" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Nowe" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "WiÄ™cej nowych" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Niedawno zaktualizowane" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Zaktualizowane" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "WiÄ™cej zaktualizowanych" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Mobilne" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "WiÄ™cej mobilnych" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "WiÄ™cej aplikacji Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "Od KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "WiÄ™cej aplikacji od KDE" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Gry" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "WiÄ™cej gier" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "Emulatory" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "WiÄ™cej emulatorów" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "Launchery" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "WiÄ™cej launcherów gier" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "WiÄ™cej narzÄ™dzi" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "WiÄ™cej narzÄ™dzi do gier" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub nie zostaÅ‚ dodany" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Nie znaleziono Flathuba na żadnej z twoich instalacji flatpaka" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub jest niedostÄ™pny" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Nie można osiÄ…gnąć Flathuba" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Nadal można zarzÄ…dzać i wyszukiwać aplikacje." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Wyszukuj aplikacji" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Połącz ponownie" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Aplikacja dnia" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "W biegu" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "Aplikacje na twoje urzÄ…dzenia mobilne z Linuxem" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "WiÄ™cej aplikacji mobilnych" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "My ♥ gry" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "Gry i aplikacje do uruchamiania twoich ulubionych pozycji" #: src/bz-full-view.blp:34 src/bz-library-page.blp:40 #: src/bz-library-page.blp:44 msgid "No Results" msgstr "Brak wyników" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Spróbuj wyszukać coÅ› innego" #: src/bz-full-view.blp:47 msgid "Content" msgstr "Zawartość" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "To jest lokalny podglÄ…d, niektóre szczegóły mogÄ… siÄ™ różnić od opublikowanej " "pozycji" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "WyglÄ…d podglÄ…du sklepu" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "We_sprzyj" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Ta aplikacja wykorzystuje bibliotekÄ™, która już nie otrzymuje aktualizacji " "lub poprawek zabezpieczeÅ„. Może siÄ™ stać niebezpieczna." #: src/bz-full-view.blp:539 msgid "Trash Data" msgstr "PrzenieÅ› dane do kosza" #: src/bz-full-view.blp:602 msgid "Add-ons" msgstr "Dodatki" #: src/bz-full-view.blp:637 msgid "More Add-Ons" msgstr "WiÄ™cej dodatków" #: src/bz-full-view.blp:648 msgid "Links" msgstr "ÅÄ…cza" #: src/bz-full-view.blp:679 msgid "Similar Apps" msgstr "Podobne aplikacje" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Brak adresu URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Ta aplikacja ma licencjÄ™ FLOSS — oznacza to, że jej kod źródÅ‚owy może być " "audytowany pod kÄ…tem bezpieczeÅ„stwa." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Ta aplikacja ma licencjÄ™ wÅ‚asnoÅ›ciowÄ… — oznacza to, że jej kod źródÅ‚owy jest " "tworzony prywatnie i niezależne osoby trzecie nie mogÄ… go audytować." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "WiÄ™cej aplikacji" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "WiÄ™cej aplikacji od %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Inne aplikacje od tego twórcy" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "Inne aplikacje od %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "Aplikacja %s nie jest zainstalowana, lecz nadal ma <b>%s</b> obecnych danych." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Inne aplikacje" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d aplikacja" msgstr[1] "%d aplikacje" msgstr[2] "%d aplikacji" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:141 msgid "Failed to Remove User Data" msgstr "UsuniÄ™cie danych użytkownika nie powiodÅ‚o siÄ™" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Wsparcie sprzÄ™tu" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Wsparcie klawiatury" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Wymaga posiadania klawiatury" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Zaleca posiadanie klawiatury" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Wspiera klawiaturÄ™" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Wsparcie klawiatur jest nieznane" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Wsparcie myszki" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Wymaga myszki lub innego urzÄ…dzenia wskazujÄ…cego" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Zaleca korzystanie z myszki lub innego urzÄ…dzenia wskazujÄ…cego" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Wspiera myszki i inne urzÄ…dzenia wskazujÄ…ce" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Wsparcie myszek i innych urzÄ…dzeÅ„ wskazujÄ…cych jest nieznane" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Wsparcie ekranów dotykowych" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Wymaga ekranu dotykowego" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Zaleca korzystanie z ekranu dotykowego" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Wspiera ekrany dotykowe" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Wsparcie ekranów dotykowych jest nieznane" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Wsparcie urzÄ…dzeÅ„ mobilnych" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "DziaÅ‚a na urzÄ…dzeniach mobilnych" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Może nie dziaÅ‚ać najlepiej na urzÄ…dzeniach mobilnych" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Wsparcie komputerów" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Doskonale dziaÅ‚a na dużych ekranach" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "Aplikacja %s dziaÅ‚a najlepiej na konkretnym sprzÄ™cie" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "Aplikacja %s dziaÅ‚a na wiÄ™kszoÅ›ci urzÄ…dzeÅ„" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Menu inspektora" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Otwórz" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Odinstaluj aplikacjÄ™" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_UsuÅ„" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Aktualizuj" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "UsuÅ„" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Zainstaluj aplikacjÄ™ %s ze źródÅ‚a %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Zainstaluj aplikacjÄ™ %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Anuluj" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Anulowanie" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Przycisk „Przekaż darowiznÄ™â€" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "Wyszukuj wÅ›ród zainstalowanych aplikacji" #: src/bz-library-page.blp:33 msgid "No Apps Found" msgstr "Nie znaleziono aplikacji" #: src/bz-library-page.blp:52 msgid "Search Store Instead" msgstr "W zamian wyszukaj w sklepie" #. Translators: . #: src/bz-library-page.blp:62 src/bz-window.blp:114 msgid "Library" msgstr "Biblioteka" #: src/bz-library-page.blp:91 msgid "Pending Updates" msgstr "Aktualizacje w toku" #: src/bz-library-page.blp:118 msgid "Downloads" msgstr "Pobrania" #: src/bz-library-page.blp:161 msgid "Recently Uninstalled" msgstr "Niedawno odinstalowane" #: src/bz-library-page.blp:212 msgid "Clear Finished Tasks" msgstr "Wyczyść zakoÅ„czone zadania" #: src/bz-library-page.blp:239 msgid "Sort Options" msgstr "Opcje sortowania" #: src/bz-library-page.blp:298 msgid "Sort By" msgstr "Sortuj wg" #: src/bz-library-page.blp:312 msgid "Name" msgstr "Nazwy" #: src/bz-library-page.blp:318 msgid "Size" msgstr "Rozmiaru" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Brak wyników dla „%s†na liÅ›cie zainstalowanych aplikacji" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u aktualizacja dostÄ™pna" msgstr[1] "%u aktualizacje dostÄ™pne" msgstr[2] "%u aktualizacji dostÄ™pnych" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u zainstalowana aplikacja" msgstr[1] "%u zainstalowane aplikacje" msgstr[2] "%u zainstalowanych aplikacji" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Nie znaleziono aplikacji" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Znaleziono jednÄ… aplikacjÄ™" msgstr[1] "Znaleziono %u aplikacje" msgstr[2] "Znaleziono %u aplikacji" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Miej wkÅ‚ad" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Dowiedz siÄ™ wiÄ™cej" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Nieznana licencja" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Stworzone przez spoÅ‚eczność" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:288 msgid "Proprietary" msgstr "WÅ‚asnoÅ›ciowe" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:290 msgid "Special License" msgstr "Licencja specjalna" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Ta aplikacja jest tworzona jako wolna przez miÄ™dzynarodowÄ… spoÅ‚eczność.\n" "\n" "Możesz mieć wkÅ‚ad w proces tworzenia i ulepszania jej." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Licencja tej aplikacji jest nieznana." #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Ta aplikacja jest tworzona jako wolna przez miÄ™dzynarodowÄ… spoÅ‚eczność i " "jest wydawana z licencjÄ… %s.\n" "\n" "Możesz mieć wkÅ‚ad w ulepszaniu jej." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Ta aplikacja nie jest tworzona jako wolna, zatem tylko jej twórcy wiedzÄ… jak " "dziaÅ‚a. Może być niewykrywalnie niebezpieczna, oraz zmieniać siÄ™ bez " "ostrzeżenia.\n" "\n" "Nie bÄ™dziesz mógÅ‚ mieć wkÅ‚adu w procesie tworzenia tej aplikacji." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Ta aplikacja jest tworzona i wydawana pod licencjÄ… specjalnÄ… %s\n" "\n" "Nie wiemy, czy bÄ™dziesz mógÅ‚ mieć wkÅ‚adu w procesie tworzenia jej." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Licencja" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Połącz z Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "CoÅ› poszÅ‚o nie tak" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "" "Zaloguj siÄ™, aby synchronizować swoje ulubione aplikacje pomiÄ™dzy " "urzÄ…dzeniami" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "ZakoÅ„cz" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Cześć, %s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "Dodać ikonÄ™ do podglÄ…du Metainfo?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to " "select one manually?" msgstr "" "Pliki Metainfo nie zawierajÄ… same w sobie ikon. Czy chcesz wybrać jakÄ…Å› rÄ™czni" "e?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "PomiÅ„" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Wybierz ikonÄ™" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Pliki obrazów" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Preferencje" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Wykryto taryfowe połączenie internetowe — zatrzymano automatyczne " "odÅ›wieżanie danych sklepowych" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "OdÅ›wież rÄ™cznie" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Aktualizacje aplikacji" #: src/bz-preferences-dialog.blp:46 msgid "" "Checking for and downloading app updates uses data and power. Automatic app " "update features are therefore paused when on metered network connections and " "when power saver is on." msgstr "" "Sprawdzanie dostÄ™pnoÅ›ci i pobieranie aktualizacji zużywa dane oraz energiÄ™. " "Automatyczne aktualizowanie zatem jest wyłączone, gdy włączone jest " "oszczÄ™dzanie i/lub wykryto taryfowe połączenie internetowe." #: src/bz-preferences-dialog.blp:52 msgid "_Automatic" msgstr "_Automatycznie" #: src/bz-preferences-dialog.blp:53 msgid "Automatically check for and download app updates" msgstr "Automatycznie sprawdzaj dostÄ™pność i pobieraj aktualizacje" #: src/bz-preferences-dialog.blp:62 msgid "_Manual" msgstr "_RÄ™cznie" #: src/bz-preferences-dialog.blp:63 msgid "Checking for and downloading app updates must be done manually" msgstr "" "Sprawdzanie dostÄ™pnoÅ›ci oraz pobieranie aktualizacji musi być zrobione " "rÄ™cznie" #: src/bz-preferences-dialog.blp:78 msgid "Automatic Update _Notifications" msgstr "Powiadomie_nia o automatycznych aktualizacjach" #: src/bz-preferences-dialog.blp:79 msgid "Notify when updates have been automatically installed" msgstr "Powiadom o automatycznym zainstalowaniu aktualizacji" #: src/bz-preferences-dialog.blp:84 msgid "Content Filters" msgstr "Filtry zawartoÅ›ci" #: src/bz-preferences-dialog.blp:87 msgid "_Free Software Only" msgstr "Tylko _wolne oprogramowanie" #: src/bz-preferences-dialog.blp:88 msgid "Hide proprietary apps when browsing and searching" msgstr "Ukrywaj aplikacje wÅ‚asnoÅ›ciowe podczas przeglÄ…dania i wyszukiwania" #: src/bz-preferences-dialog.blp:93 msgid "F_lathub Results Only" msgstr "Tylko wyniki z F_lathuba" #: src/bz-preferences-dialog.blp:94 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Limituj wyniki wyszukiwania i przeglÄ…dania, tak aby pokazywać tylko " "aplikacje dostÄ™pne na Flathubie" #: src/bz-preferences-dialog.blp:99 msgid "_Verified Results Only" msgstr "Tylko _zweryfikowane wyniki" #: src/bz-preferences-dialog.blp:100 msgid "Hide results that are not verified on Flathub" msgstr "Ukrywaj niezweryfikowane aplikacje" #: src/bz-preferences-dialog.blp:105 msgid "Hide _End-of-Life Apps" msgstr "Ukrywaj aplikacj_e z brakiem wsparcia" #: src/bz-preferences-dialog.blp:106 msgid "Hide apps which are no longer supported by their developers" msgstr "Ukrywaj aplikacje nie otrzymujÄ…ce już aktualizacji od swoich twórców" #: src/bz-preferences-dialog.blp:112 msgid "Progress Bar Theme" msgstr "Motyw paska postÄ™pu" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Kolor akcentowy" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Kolory dumy" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Kolory dumy lesbijek" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Kolory dumy mężczyzn homoseksualnych" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Kolory dumy osób transpÅ‚ciowych" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Kolory dumy osób niebinarnych" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Kolory dumy osób biseksualnych" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Kolory dumy osób aseksualnych" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Kolory dumy osób panseksualnych" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Kolory dumy osób aromantycznych" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Kolory dumy osób genderfluidalnych" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Kolory dumy osób polyseksualnych" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Kolory dumy osób omniseksualnych" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Kolory dumy osób aromantyczno-seksualnych" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Kolory dumy osób bezpÅ‚ciowych" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Kolory dumy osób genderqueerowych" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Kolory dumy osób interseksualnych" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Kolory dumy osób półpÅ‚ciowych" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Kolory dumy osób biromantycznych" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Kolory dumy osób niepeÅ‚nosprawnych" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Kolory dumy fembojów" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Kolory dumy osób neutroidalnych" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Historia wersji" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "Historia _wersji" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Dzisiaj" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Wczoraj" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dzieÅ„ temu" msgstr[1] "%d dni temu" msgstr[2] "%d dni temu" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d tydzieÅ„ temu" msgstr[1] "%d tygodnie temu" msgstr[2] "%d tygodni temu" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d miesiÄ…c temu" msgstr[1] "%d miesiÄ…ce temu" msgstr[2] "%d miesiÄ™cy temu" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d rok temu" msgstr[1] "%d lata temu" msgstr[2] "%d lat temu" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Wersja %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Brak szczegółów dla tego wydania" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Dowiedz siÄ™ wiÄ™cej" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Odinstaluj" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Pobierz" #: src/bz-safety-dialog.blp:31 src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Samowolne uprawnienia" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Ta aplikacja ma uprawnienie do pozwalajÄ…ce jej okrężnie przyznać sobie " "<b>jakiekolwiek inne uprawnienia</b>, obchodzÄ…c piaskownicÄ™ Flatpaka.\n" "\n" "Zatem może ona robić wszystko co normalna niesandboxowana aplikacja w tym " "mieć dostÄ™p do twoich plików oraz łączyć siÄ™ z internetem.\n" "\n" "Obejrzenie innych uprawnieÅ„ nadal jest dobrym pomysÅ‚em, by dowiedzieć siÄ™ co " "aplikacja najprawdopodobniej bÄ™dzie robić." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "Pokaż inne uprawnienia" #: src/bz-safety-dialog.blp:79 src/context-tile-callbacks.c:400 msgid "Safe" msgstr "Bezpieczna" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "Identyfikator aplikacji" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Ta aplikacja wykorzystuje przestarzałą wersjÄ™ Å›rodowiska programowania (SDK) " "i może zawierać błędy i luki bezpieczeÅ„stwa, które nie zostanÄ… naprawione." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "BezpieczeÅ„stwo" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "Aplikacja %s jest bezpieczna" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "Aplikacja %s nie posiada niebezpiecznych uprawnieÅ„" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "Aplikacja %s jest prawdopodobnie bezpieczna" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "Aplikacja %s jest prawdopodobnie niebezpieczna" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "Aplikacja %s jest niebezpieczna" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Wstecz" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Poprzedni zrzut ekranu" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "NastÄ™pny zrzut ekranu" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Kopiuj obraz" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Zresetuj widok" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Oddal" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Przybliż" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Karuzela zrzutów ekranu" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Brak zrzutów ekranu" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Otwórz przeglÄ…darkÄ™ zrzutów ekranu" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Zrzut ekranu numer %u podpisany %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Zrzut ekranu numer %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "Wyczyść wyszukiwanie" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Filtry" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Zweryfikowane" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Wolne" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Wspi_erane" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Odfiltruj aplikacje z brakiem wsparcia" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "Przyjazne ko_mórkom" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategorie" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "Wyszukuj aplikacje, gry i oprogramowanie" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Filtry wyszukiwania" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "PrzeglÄ…daj kategorie" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Kategorie sÄ… niedostÄ™pne" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Wyszukuj aplikacji korzystajÄ…c z powyższego paska wyszukiwania" #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Nie znaleziono aplikacji" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Brak wyników dotyczÄ…cych „%s†na Flathubie" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Filmy" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Biuro" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Kalendarz" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Komunikatory" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Rysowanie" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulator" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Strona na Flathubie" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Strona projektu" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Åšledzenie problemów" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "FAQ" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Pomoc" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Przekaż darowiznÄ™" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "TÅ‚umacz" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Skontaktuj siÄ™" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Kod źródÅ‚owy" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Miej wkÅ‚ad" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifest" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Kopiuj łącze" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "OÅ› czasowa" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Instalacje:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Åšwiat" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Od 15.04.2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "Suma instalacji: %.2f mln" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "Suma instalacji: %.2f tys." #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "Suma instalacji: %'d" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Brak wyników" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Wyszukiwanie nie powiodÅ‚o siÄ™" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "UsuÅ„ dane użytkownika" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Pozwól na przywracanie ustawieÅ„ i zawartoÅ›ci" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "UsuÅ„ wszystkie dane" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "UsuÅ„ dane aplikacji na zawsze, aby zaoszczÄ™dzić miejsce" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Zainstalować aplikacjÄ™ %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Wybierz wersjÄ™ do zainstalowania. Może zainstalować dodatkowe współdzielone " "komponenty" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Może zainstalować dodatkowe współdzielone komponenty" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Anuluj" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "Za_instaluj" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Usunąć aplikacjÄ™ %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Wybierz wersjÄ™ do usuniÄ™cia." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Nie bÄ™dzie można korzystać z aplikacji %s po odinstalowaniu jej." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "Aplikacja %s jest wysokim zagrożeniem" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Ta aplikacja ma peÅ‚ny dostÄ™p do twojego systemu, w tym <b>twoich plików, " "historii przeglÄ…dania, zapisanych haseÅ‚</b> i wielu innych. Posiada również " "dostÄ™p do internetu, co oznacza, że może wysyÅ‚ać twoje dane do osób " "trzecich.\n" "\n" "Ponieważ ta aplikacja jest wÅ‚asnoÅ›ciowa, nie może być audytowana pod " "wzglÄ™dem tego co robi z tymi uprawnieniami." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Ta aplikacja wykorzystuje przestarzaÅ‚y system okien X11, który pozwala jej " "na <b>rejestrowanie wszystkich wciÅ›nięć klawiszy, robienia zrzutów ekranu i " "monitorowania innych aplikacji</b> Posiada również dostÄ™p do internetu, co " "oznacza, że może wysyÅ‚ać twoje dane do osób trzecich.\n" "\n" "Ponieważ ta aplikacja jest wÅ‚asnoÅ›ciowa, nie może być audytowana pod " "wzglÄ™dem tego co robi z tymi uprawnieniami." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "Za_instaluj mimo to" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Åadowanie okna transakcji nie powiodÅ‚o siÄ™" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Wszystkie aplikacje sÄ… już zainstalowane" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_OK" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Zainstalować %u aplikacjÄ™?" msgstr[1] "Zainstalować %u aplikacje?" msgstr[2] "Zainstalować %u aplikacji?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "NastÄ™pujÄ…ce zostanÄ… zainstalowane. Dodatkowe współdzielone skÅ‚adniki mogÄ… " "również być zainstalowane." #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "Dodatki do zainstalowania: %d" #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Dodatkowo, nastÄ™pujÄ…ca liczba dodatków zostanie zainstalowana: %d." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "Za_instaluj wszystkie" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "UkoÅ„czono w %.02f sek." #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Dodatek aplikacji" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Biblioteka" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "W kolejce" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Gotowe" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Anulowane" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Błąd" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Anuluj transakcjÄ™" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Pokaż szczegóły" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Pokaż szczegóły błędu" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "Zwolniono %s" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Błąd transakcji" #: src/bz-transaction.c:344 msgid "Pending" msgstr "OczekujÄ…ce" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "Akt_ualizuj wszystkie" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u aktualizacja biblioteki" msgstr[1] "%u aktualizacje bibliotek" msgstr[2] "%u aktualizacji bibliotek" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "ZarzÄ…dzaj pozostaÅ‚ymi danymi" #: src/bz-user-data-page.blp:34 msgid "No User Data Found" msgstr "Nie znaleziono pozostaÅ‚ych danych" #: src/bz-user-data-page.blp:40 msgid "User Data" msgstr "Dane użytkownika" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Otwórz folder danych użytkownika" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "PrzenieÅ› do kosza dane użytkownika" #: src/bz-user-data-tile.c:147 #, c-format msgid "Trashed User Data for %s" msgstr "Przeniesiono do kosza dane użytkownika aplikacji %s" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "OdÅ›wieżanie" #: src/bz-window.blp:90 msgid "Curated" msgstr "Polecane" #: src/bz-window.blp:102 msgid "Explore" msgstr "Odkrywaj" #: src/bz-window.blp:129 msgid "Search" msgstr "Wyszukaj" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Menu główne" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "OdpaliÅ‚eÅ› nowiutkÄ… wersjÄ™ Bazaaru!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Zobacz co nowego" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Masz połączenie z internetem, ale przeglÄ…dasz wersjÄ™ Flathuba, która zostaÅ‚a " "zapisana w pamiÄ™ci twojego komputera" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "" "Wykryto taryfowe połączenie internetowe — zatrzymano automatyczne odÅ›wieżanie" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Wesprzyj Bazaar" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_OdÅ›wież" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "Za_loguj siÄ™ do Flathub" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "ZarzÄ…dzaj pozostaÅ‚y_mi danymi" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Preferencje" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "Skróty _klawiszowe" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "O _aplikacji Bazaar" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_ZakoÅ„cz Bazaar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Wyloguj siÄ™" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Uruchomienie aplikacji nie powiodÅ‚o siÄ™" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Nie można usunąć Bazaaru z poziomu Bazaaru!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Nie można tego teraz zrobić!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "instalacja" msgstr[1] "instalacje" msgstr[2] "instalacji" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*f mln" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*f tys." #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d pobraÅ„ w ciÄ…gu zeszÅ‚ego miesiÄ…ca" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s bibliotek" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Rozmiar do pobrania" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Informacja o rozmiarze jest niedostÄ™pna" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Rozmiar do pobrania aplikacji %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Próg wiekowy" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Informacja o progu wiekowym jest niedostÄ™pna" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Odpowiednie od 3 lat" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Odpowiednie od %d lat" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "Nieznane" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Wolne oprogramowanie pod licencjÄ… %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Wolne oprogramowanie" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Oprogramowanie wÅ‚asnoÅ›ciowe" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Licencja specjalna: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Wolne" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "" "Na różne\n" "urzÄ…dzenia" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "" "Tylko na\n" "komputery" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "DziaÅ‚a na komputerach, tabletach i telefonach" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Może nie dziaÅ‚ać na urzÄ…dzeniach mobilnych" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Niskie ryzyko" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Åšrednie ryzyko" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Wysokie ryzyko" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Nieznane uprawnienia" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Brakuje uprawnieÅ„ tej aplikacji." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Brak uprawnieÅ„" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Aplikacja jest w peÅ‚ni uruchamiana w Å›rodowisku piaskownicy" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "DostÄ™p do sieci" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Ma dostÄ™p do internetu" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Brak dostÄ™pu do sieci" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Nie ma dostÄ™pu do internetu" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "DostÄ™p do urzÄ…dzeÅ„ użytkownika" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "" "Może uzyskać dostÄ™p do urzÄ…dzeÅ„ takich jak kamerki internetowe i kontrolery " "do gier" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Brak dostÄ™pu do urzÄ…dzeÅ„ użytkownika" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" "Nie może uzyskać dostÄ™p do urzÄ…dzeÅ„ takich jak kamerki internetowe i " "kontrolery do gier" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "DostÄ™p do urzÄ…dzeÅ„ wprowadzania" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Ma dostÄ™p do urzÄ…dzeÅ„ wprowadzania" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "DostÄ™p do mikrofonu i odtwarzania dźwiÄ™ku" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "Może sÅ‚uchać przy użyciu mikrofonów i odtwarzać dźwiÄ™k bez proszenia o " "pozwolenie" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "DostÄ™p do urzÄ…dzeÅ„ systemowych" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" "Może uzyskać dostÄ™p do urzÄ…dzeÅ„ systemowych, które wymagajÄ… wysokich " "uprawnieÅ„" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "DostÄ™p do zawartoÅ›ci ekranu" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Ma dostÄ™p do zawartoÅ›ci ekranu i innych okien" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "PrzestarzaÅ‚y system okien" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Zawsze wykorzystuje przestarzaÅ‚y system okien (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Może uzyskać samowolne uprawnienia" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Ustawienia użytkownika" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Ma dostÄ™p do ustawieÅ„ użytkownika i może je zmieniać" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "PeÅ‚ny dostÄ™p do systemu plików" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Może odczytywać i zapisywać wszystkie dane na systemie plików" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "DostÄ™p do katalogu domowego" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Może odczytywać i zapisywać wszystkie dane w twoim katalogu domowym" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "PeÅ‚ny dostÄ™p do odczytu systemu plików" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Może odczytywać wszystkie dane na systemie plików" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "DostÄ™p do odczytu katalogu domowego" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Może odczytywać dane w twoim katalogu domowym" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "DostÄ™p do folderu pobranych" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Może odczytywać i zapisywać wszystkie dane w twoim folderze pobranych" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "DostÄ™p do odczytu folderu pobranych" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Może odczytywać dane w twoim folderze pobranych" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Może odczytywać i zapisywać wszystkie dane w katalogu" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Może odczytywać wszystkie dane w katalogu" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Brak dostÄ™pu do systemu plików" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Absolutnie nie ma dostÄ™pu do systemu plików" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Wykorzystuje usÅ‚ugi systemowe" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Może prosić o dane z poza-portalowych usÅ‚ug systemowych" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "UsÅ‚ugi sesji użytkownika" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Może prosić o dane z poza-portalowych usÅ‚ug" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Brak dostÄ™pu do usÅ‚ug" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Absolutnie nie ma dostÄ™pu do usÅ‚ug systemowych, ani sesji" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Zweryfikowany twórca aplikacji" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "" "Twórca tej aplikacji zostaÅ‚ zweryfikowany pod wzglÄ™dem czy sÄ… kim za kogo " "siÄ™ podajÄ…" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "WÅ‚asnoÅ›ciowy kod" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Kod źródÅ‚owy nie jest publiczny, wiÄ™c nie może być niezależnie audytowany, " "co sprawia, że aplikacja może być niebezpieczna" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Audytowalny" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Kod źródÅ‚owy jest publiczny i może być niezależnie audytowany, co sprawia, " "że aplikacja jest raczej bardziej bezpieczna" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Korzysta z usÅ‚ugi systemowej %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Korzysta z usÅ‚ugi sesji %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Korzysta z usÅ‚ugi %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Może widzieć poza-portalowe usÅ‚ugi" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Może rozmawiać z poza-portalowymi usÅ‚ugami" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Może posiadać poza-portalowe usÅ‚ugi" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Integracja z globalnym menu" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Może wyÅ›wietlać swoje menu w globalnym pasku menu" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Integracja z ustawieniami KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Może wykryć kiedy ustawienia pulpitu KDE siÄ™ zmieniajÄ…" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Globalne ustawienia KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Może odczytywać preferencje pulpitu KDE, rzeczy jak czcionki i kolory" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "UsÅ‚uga tajemnej pamiÄ™ci" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Może przechowywać i otrzymywać swoje hasÅ‚a korzystajÄ…c z systemowego pÄ™ku " "kluczy" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "UsÅ‚uga powiadomieÅ„ pulpitowych" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Może wysyÅ‚ać powiadomienia pulpitowe" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Integracja z zasobnikiem systemowym" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Może wyÅ›wietlać ikonÄ™ w zasobniku systemowym" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Integracja z KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Może komunikować siÄ™ z urzÄ…dzeniami połączonymi przez KDE Connect" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Nawigacja" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Otwieranie strony „Odkrywajâ€" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Otwieranie strony biblioteki" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Otwieranie stronÄ™ wyszukiwania" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Repozytoria" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Zsynchronizowanie repozytoriów" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Ogólne" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Otwieranie preferencji" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Pokazanie skrótów klawiszowych" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "ZamkniÄ™cie okna" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "KoÅ„czenie pracy Bazaaru" #: src/update-worker.c:358 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "%u aplikacja zaktualizowana" msgstr[1] "%u aplikacje zaktualizowane" msgstr[2] "%u aplikacji zaktualizowanych" #: src/update-worker.c:361 #, c-format msgid "%s has been updated." msgstr "Zaktualizowano aplikcjÄ™ %s." #: src/update-worker.c:364 #, c-format msgid "%s and %s have been updated." msgstr "Zaktualizowano aplikacje %s and %s." #: src/update-worker.c:368 #, c-format msgid "Includes %s, %s and %s." msgstr "Obejmuje aplikacje %s, %s oraz %s." #~ msgid "Select Metainfo File" #~ msgstr "Wybierz plik Metainfo" #~ msgid "Metainfo Files" #~ msgstr "Pliki Metainfo" #~ msgid "Preview" #~ msgstr "PodglÄ…d" #~ msgid "Clear search" #~ msgstr "Wyczyść wyszukiwanie" #~ msgid "Free" #~ msgstr "Wolne" #~ msgid "Tags:" #~ msgstr "Identyfikatory:" #~ msgid "Progress Bar" #~ msgstr "Pasek postÄ™pu" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "Wybierz motyw paska postÄ™pu!" #~ msgid "Open Link" #~ msgstr "Otwórz łącze" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "Aplikacje z identyfikatorem \"%s\"" #~ msgid "Flathub returned an error" #~ msgstr "Flathub zwróciÅ‚ błąd" #~ msgid "Retry Flathub Connection" #~ msgstr "Spróbuj ponownie połączyć siÄ™ z Flathub" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "" #~ "Zaloguj siÄ™ swoim kontem Flathub w Bazaarze, aby zarzÄ…dzać swoimi " #~ "ulubionymi aplikacjami." #~ msgid "Delay Search Results" #~ msgstr "Opóźniaj wyniki wyszukiwania" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "Ulepsz wydajność wyszukiwania opóźniajÄ…c wyniki" #~ msgid "Vertical Stripes" #~ msgstr "Pionowe paski" #~ msgid "Display flag colors from left to right" #~ msgstr "WyÅ›wietlaj kolory flag od lewej do prawej" #~ msgid "User Data Size" #~ msgstr "Rozmiar danych użytkownika" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Open App Library" #~ msgstr "Otwórz bibliotekÄ™ aplikacji" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "Instalowanie pakietów .flatpak nie jest jeszcze wspierane" #~ msgid "Steam" #~ msgstr "Steam" #~ msgid "Minecraft" #~ msgstr "Minecraft" #~ msgid "Refresh completed!" #~ msgstr "UkoÅ„czono odÅ›wieżanie!" #~ msgctxt "As in, \"100 Installs\"" #~ msgid "Installs" #~ msgstr "zainstalowaÅ„" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "OdÅ›wież" #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "_Donate to Bazaar â¤ï¸" #~ msgstr "Przekaż _darowiznÄ™ â¤ï¸" #~ msgid "Hide EOL Apps" #~ msgstr "Ukrywaj aplikacje z brakiem wsparcia" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgid "Download & Install Application" #~ msgstr "Pobierz i zainstaluj aplikacjÄ™" #~ msgctxt "As in, \"100 Downloads\"" #~ msgid "Downloads" #~ msgstr "PobraÅ„" #~ msgid "%e %B" #~ msgstr "%e %B" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "PodkreÅ›la też potrzebÄ™ wspierania twórców aplikacji na Linuxa. Bazaar " #~ "posiada stronÄ™ \"polecane\", która może być konfigurowana przez " #~ "dystrybutorów pozwalajÄ…c na bardziej lokalne doÅ›wiadczenia." #~ msgid "Install Other Version" #~ msgstr "Zainstaluj innÄ… wersjÄ™" #~ msgid "Keep Data" #~ msgstr "Zachowaj dane" #~ msgid "Open App" #~ msgstr "Otwórz aplikacjÄ™" #~ msgid "_Synchronize Remotes" #~ msgstr "Z_synchronizuj repozytoria" #~ msgid "Synchronizing..." #~ msgstr "Synchronizowanie..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "Otrzymywanie %d wystÄ…pieÅ„..." #~ msgid "Indexing Data..." #~ msgstr "Indeksowanie danych..." #~ msgid "Refreshing Store Content" #~ msgstr "OdÅ›wieżanie zawartoÅ›ci" #~ msgid "No background tasks!" #~ msgstr "Brak zadaÅ„ w tle!" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "Wyjdź" #~ msgid "View the Release Page" #~ msgstr "Pokaż stronÄ™ wydania" #~ msgid "Close" #~ msgstr "Zamknij" #~ msgid "Copy and Close" #~ msgstr "Kopiuj i zamknij" #~ msgid "Nucleus app page" #~ msgstr "Strona aplikacji Nucleus" #~ msgid "Toggle transaction sidebar" #~ msgstr "Włącz pasek boczny transakcji" #~ msgid "Ongoing" #~ msgstr "TrwajÄ…ce" #~ msgid "Finished" #~ msgstr "ZakoÅ„czone" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "Do tej pory przeniesiono %s" #~ msgid "Tasks" #~ msgstr "Zadania" #~ msgid "Stop Active Tasks" #~ msgstr "Zatrzymaj aktywne zadania" #~ msgid "No Tasks Yet" #~ msgstr "Brak zadaÅ„" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "%d aktualizacja dostepna" #~ msgstr[1] "%d aktualizacje dostÄ™pne" #~ msgstr[2] "%d aktualizacji dostÄ™pnych" #~ msgid "Updates Are Available" #~ msgstr "DostÄ™pne sÄ… aktualizacje" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "NastÄ™pujÄ…ce aplikacje majÄ… dostÄ™pne aktualizacje. Czy chcesz je " #~ "zainstalować?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "Jest dostÄ™pna nastÄ™pujÄ…ca liczba aktualizacji dla bibliotek i/lub " #~ "dodatków: %d. Czy chcesz je zainstalować?" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "" #~ "Dodatkowo, nastÄ™pujÄ…ca liczba bibliotek i/lub dodatków zostanie " #~ "zaktualizowana: %d." #~ msgid "Update Now" #~ msgstr "Aktualizuj teraz" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "Możliwość wyÅ›wietlania i instalowania lokalnych plików .flatpak bÄ™dzie " #~ "niedÅ‚ugo dostÄ™pna! Tymczasem, możesz uruchomić z poziomu terminala\n" #~ "\n" #~ "flatpak install --bundle twoj-pakiet.flatpak" #~ msgid "Resume Current Tasks" #~ msgstr "Kontynuuj wykonywanie zadaÅ„" #~ msgid "Pause Current Tasks" #~ msgstr "Zapauzuj wykonywanie zadaÅ„" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "Włącz menedżera transakcji" #~ msgid "Pride Colors (Horizontal)" #~ msgstr "Kolory dumy (poziome)" #~ msgid "Lesbian Pride Colors (Horizontal)" #~ msgstr "Kolory dumy lesbijek (poziome)" #~ msgid "Male Homosexual Pride Colors (Horizontal)" #~ msgstr "Kolory dumy mężczyzn homoseksualnych (poziome)" #~ msgid "Transgender Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób transpÅ‚ciowych (poziome)" #~ msgid "Nonbinary Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób niebinarnych (poziome)" #~ msgid "Bisexual Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób biseksualnych (poziome)" #~ msgid "Asexual Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób aseksualnych (poziome)" #~ msgid "Pansexual Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób panseksualnych (poziome)" #~ msgid "Aromantic Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób aromantycznych (poziome)" #~ msgid "Genderfluid Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób genderfluidalnych (poziome)" #~ msgid "Polysexual Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób polyseksualnych (poziome)" #~ msgid "Omnisexual Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób omniseksualnych (poziome)" #~ msgid "Aroace Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób aromantyczno-seksualnych (poziome)" #~ msgid "Agender Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób bezpÅ‚ciowych (poziome)" #~ msgid "Genderqueer Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób genderqueerowych (poziome)" #~ msgid "Intersex Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób interseksualnych (poziome)" #~ msgid "Demigender Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób półpÅ‚ciowych (poziome)" #~ msgid "Biromantic Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób biomantycznych (poziome)" #~ msgid "Disability Pride Colors (Horizontal)" #~ msgstr "Kolory dumy osób niepeÅ‚nosprawnych (poziome)" #~ msgid "Femboy Pride Colors (Horizontal)" #~ msgstr "Kolory dumy fembojów (poziome)" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u pobraÅ„" #~ msgid "Hide EOL Entries" #~ msgstr "Ukrywaj wystÄ…pienia z brakiem wsparcia" #~ msgid "Hide EOL entries and entries depending on them" #~ msgstr "Ukrywaj wystÄ…pienia z brakiem wsparcia" #~ msgid "Only Show Free Software" #~ msgstr "Pokazuj tylko wolne oprogramowanie" #~ msgid "Hide proprietary software" #~ msgstr "Ukrywaj oprogramowanie wÅ‚asnoÅ›ciowe" #~ msgid "Show Only Flathub Content" #~ msgstr "Pokazuj tylko zawartość z Flathuba" #~ msgid "Hide applications which do not originate from Flathub" #~ msgstr "Ukrywaj aplikacje nie pochodzÄ…ce z Flathuba" #~ msgid "Show Only Verified Content" #~ msgstr "Pokazuj tylko zawartość zweryfikowanÄ…" #~ msgid "Hide applications which are not verified on Flathub" #~ msgstr "Ukrywaj aplikacje nie bÄ™dÄ…ce zweryfikowane na Flathubie" #~ msgid "Debounce Search Inputs" #~ msgstr "Opóźniaj wyszukiwanie podczas wpisywania" #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "" #~ "Dodaj opóźnienie przed wyszukiwaniem, aby zapobiec natychmiastowym " #~ "odpowiedziom podczas wpisywania" #~ msgid "Describes the look of the global progress bar" #~ msgstr "OkreÅ›la wyglÄ…d paska postÄ™pu w caÅ‚ej aplikacji" #~ msgid "Saved Window Dimensions" #~ msgstr "Zapisane wymiary okna" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "" #~ "Wymiary okna, które zostanÄ… użyte przy nastÄ™pnym uruchomieniu Bazaaru" #~ msgid "?" #~ msgstr "?" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "Ta funkcja jest na ten moment wyłączona. Zalecamy, abyÅ› zainstalowaÅ‚ " #~ "Flatseal, aby zarzÄ…dzać uprawnieniami twoich aplikacji." #~ msgid "Serialize" #~ msgstr "Serializuj" #~ msgid "Convert to JSON" #~ msgstr "Przekonwertuj na JSON" #~ msgid "More Mobile apps" #~ msgstr "WiÄ™cej aplikacji mobilnych" #~ msgid "Bazaar Inspector" #~ msgstr "Inspektor Bazaaru" #~ msgid "Background Task Info:" #~ msgstr "Informacje o zadaniu w tle:" #~ msgid "Enable Global Debug Mode" #~ msgstr "Włącz globalny tryb debugowania" #~ msgid "Active Blocklists" #~ msgstr "Aktywne listy blokowania" #~ msgid "Active Curated-Configs" #~ msgstr "Aktywne konfiguracje strony \"Polecane\"" #~ msgid "All Entry Groups" #~ msgstr "Wszystkie grupy wystÄ…pieÅ„" #~ msgid "Decache and Inspect" #~ msgstr "Wyczyść pamięć podrÄ™cznÄ… i inspektuj" #~ msgid "No Flatpaks Installed" #~ msgstr "Nie zainstalowano żadnych Flatpaków" #~ msgid "Inspect UI Entry" #~ msgstr "Zbadaj element interfejsu" #~ msgid "All Debug Actions" #~ msgstr "Wszystkie dziaÅ‚ania debugowania" #~ msgid "Open Bazaar Inspector" #~ msgstr "Otwórz inspektora Bazaaru" #, c-format #~ msgid "%s is suitable for toddlers" #~ msgstr "%s jest odpowiednie dla maÅ‚ych dzieci" #~ msgid "--- MB" #~ msgstr "--- MB" #~ msgid "Of the size of human DNA" #~ msgstr "rozmiaru DNA czÅ‚owieka" #~ msgid "3 billion base pairs" #~ msgstr "3 miliardy par zasadowych" #~ msgid "Of the Linux Kernel" #~ msgstr "jÄ…dra Linuksa" #~ msgid "linux-6.17.tar.xz" #~ msgstr "linux-6.17.tar.xz" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "komputera naprowadzajÄ…cego Apollo 11" #~ msgid "Total ROM and RAM" #~ msgstr "RAMu i ROMu razem" #~ msgid "Of the original Super Mario Bros" #~ msgstr "oryginalnej wersji Super Mario Bros" #~ msgid "On the NES" #~ msgstr "na konsoli NES" #~ msgid "Of the size of Wikipedia" #~ msgstr "rozmiaru Wikipedii" #~ msgid "Without any media" #~ msgstr "bez żadnych multimediów" #~ msgid "Show Git Forge Star Counts" #~ msgstr "Pokaż ilość gwiazdek na git" #~ msgid "" #~ "Whether to attempt to detect and show \"star counts\" for projects in the " #~ "full view" #~ msgstr "" #~ "Stwierdź, czy Bazaar ma próbwać wykryć i pokazać \"ilość gwiazdek\" dla " #~ "projektów w peÅ‚wnym widoku" #~ msgid "Mobile Apps" #~ msgstr "Aplikacje mobilne" #~ msgid "Repository Star Count" #~ msgstr "Liczba gwiazdek repozytorium" #, c-format #~ msgid "%.2fM" #~ msgstr "%.2f mln" #, c-format #~ msgid "%.2fK" #~ msgstr "%.2f tys." #~ msgid "Display Star Count" #~ msgstr "Pokaż liczbÄ™ gwiazdek repozytorium" #~ msgid "Show the star count of an application's source code repository" #~ msgstr "Pokaż licznik ukazujÄ…cy liczbÄ™ gwiazdek repozytorium aplikacji" #~ msgid "" #~ "Bazaar can fetch and display the star count from an application's source " #~ "code repository on a remote Git forge. \n" #~ " For projects on GitHub, rate limits may cause them not to appear." #~ msgstr "" #~ "Bazaar może pokazywać ilość gwiazdek z repozytorium aplikacji na " #~ "serwisach Git. Projekty z repozytoriamu na GitHubie, mogÄ… zostać " #~ "ograniczone,\n" #~ "wiÄ™c licznik może siÄ™ nie pokazać." #~ msgid "Hide proprietary software when searching" #~ msgstr "Ukrywaj oprogramowanie wÅ‚asnoÅ›ciowe podczas wyszukiwania" #~ msgid "Filter search results to only show applications available on Flathub" #~ msgstr "" #~ "Filtruj wyniki wyszukiwania, tak aby pokazywać tylko aplikacje dostÄ™pne " #~ "na Flathubie" #~ msgid "Verified by the original developers" #~ msgstr "Zweryfikowane przez oryginalnych twórców " #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Azenyr" #~ msgstr "Azenyr" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Goudarz Jafari" #~ msgstr "Goudarz Jafari" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore (Lumaeris)" #~ msgstr "Jill Fiore (Lumaeris)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "João Victor (Leal)" #~ msgstr "João Victor (Leal)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "KiKaraage" #~ msgstr "KiKaraage" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Léane GRASSER" #~ msgstr "Léane GRASSER" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Marcel Mrówka (Microwave)" #~ msgstr "Marcel Mrówka (Microwave)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Peter Dave Hello" #~ msgstr "Peter Dave Hello" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Pietro F." #~ msgstr "Pietro F." #~ msgctxt "About Dialog Translator Credit" #~ msgid "Sabri Ünal" #~ msgstr "Sabri Ünal" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shinsei" #~ msgstr "Shinsei" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "camegone" #~ msgstr "camegone" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #~ msgid "Constructing Flatpak instance..." #~ msgstr "Przygotywywanie instancji Flatpaka..." #~ msgid "Reusing last Flatpak instance..." #~ msgstr "Ponowne wykorzystywanie ostatniej instancji Flatpaka..." #~ msgid "Flathub is not registered on this system" #~ msgstr "Flathub nie jest zarejestrwowany na tym komputerze" #~ msgid "" #~ "Would you like to add Flathub as a remote? If you decline, the Flathub " #~ "page will not be available. You can change this later." #~ msgstr "" #~ "Czy chcesz dodać Flathub do listy repozytoriów flatpak? JeÅ›li tego nie " #~ "zrobisz strona \"Flathub\" nie bÄ™dzie dostÄ™pna. Możesz to zmienić w " #~ "dowolnym momencie." #~ msgid "Add Flathub" #~ msgstr "Dodaj Flathub" #, c-format #~ msgid "Identifying installed entries..." #~ msgstr "Identyfikowanie zainstalowanych wystÄ…pieÅ„..." #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "" #~ "Rozpoczynanie otrzymywania zdalnych wystÄ…pieÅ„ odnoszÄ…c siÄ™ do %d list(y) " #~ "blokowania..." #, c-format #~ msgid "%'d of %'d" #~ msgstr "%'d z %'d" #, c-format #~ msgid "Waiting for background indexing tasks to catch up..." #~ msgstr "Oczekiwanie na zakoÅ„czenie indeksowania w tle..." #, c-format #~ msgid "Completed initialization in %0.2f seconds" #~ msgstr "ZakoÅ„czono inicjalizacjÄ™ w %0.2f sek." #~ msgid "Run this application" #~ msgstr "Uruchom tÄ… aplikacjÄ™" #~ msgid "Run" #~ msgstr "Uruchom" #~ msgid "Settings & user data will be kept" #~ msgstr "Ustawiania i dane użytkownika zostanÄ… zachowane" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "Nie dołączono konfiguracji polecanych aplikacji do Bazaaru. Skontakuj siÄ™ " #~ "z kanaÅ‚ami pomocy swojej dystrybucji, aby uzyskać pomoc." #~ msgid "Visual" #~ msgstr "Grafika" #~ msgid "Git Forge Star Counts" #~ msgstr "Licznik gwiazdek na git" #~ msgid "Not having a GitHub access token may trigger rate limits" #~ msgstr "" #~ "Nie posiadanie tokenu dostÄ™pu Githuba może spowodoać blokowanie próśb" #~ msgid "Show Only Flathub Apps" #~ msgstr "Pokazuj tylko aplikacje z Flathuba" #~ msgid "Wait for a brief pause to reduce system load" #~ msgstr "Poczekaj przez chilkÄ™, aby zmniejszyć obciążenie systemu" #~ msgid "Pride Rainbow Flag" #~ msgstr "TÄ™czowa flaga dumy" #~ msgid "Bisexual Flag" #~ msgstr "Flaga osób biseksualnych" #~ msgid "Asexual Flag" #~ msgstr "Flaga osób aseksualnych" #~ msgid "Go Home" #~ msgstr "Powróć do strony domowej" #~ msgid "Browse" #~ msgstr "PrzeglÄ…daj" #~ msgid "View curated applications" #~ msgstr "PrzeglÄ…daj polecane aplikacje" #~ msgid "View the latest on Flathub" #~ msgstr "PrzeglÄ…daj najnowsze z Flathuba" #~ msgid "_Quit Service" #~ msgstr "_ZakoÅ„cz usÅ‚ugÄ™" #~ msgid "Graphics" #~ msgstr "Grafika" #~ msgctxt "Project URL Type" #~ msgid "Homepage" #~ msgstr "Strona domowa" #~ msgid "Excludes shared components" #~ msgstr "Wyklucza współdzielone komponenty" #~ msgid "Source code may not be available" #~ msgstr "Kod źródÅ‚owy, może nie być dostÄ™pny" #~ msgid "Click for details" #~ msgstr "Kliknij, aby uzyskać informacje" #~ msgid "Repositories" #~ msgstr "Repozytoria" #~ msgid "Open in browser" #~ msgstr "Otwórz w przeglÄ…darce" #, c-format #~ msgid "%'d Monthly Downloads" #~ msgstr "%'d miesiÄ™cznych pobraÅ„" #~ msgid "Theme" #~ msgstr "Motyw" #~ msgid "Share" #~ msgstr "Podziel siÄ™" #~ msgid "Calligraphy application page" #~ msgstr "Strona aplikacji Calligraphy" #~ msgid "Download graph for Blender" #~ msgstr "Wykres pobraÅ„ Blendera" #~ msgid "Manage Addons" #~ msgstr "ZarzÄ…dzaj dodatkami" #~ msgid "Open this image in the default image viewer" #~ msgstr "Otwórz ten obraz w domyÅ›lnej przeglÄ…darce zdjęć" #~ msgid "Copy this image to the clipboard" #~ msgstr "Skopiuj ten obraz do schowka" #~ msgid "Show Downloads Over Time" #~ msgstr "Pokaż pobrania na przestrzeni czasu" #~ msgid "Remote repo name" #~ msgstr "Nazwa repozytorium" #~ msgid "%B %-d" #~ msgstr "%-d %B" #~ msgid "Downloads Over Time" #~ msgstr "Pobrania na przestrzeni czasu" #~ msgid "Updated Size" #~ msgstr "Rozmiar po aktualizacji" #~ msgid "Freed Space" #~ msgstr "Zwolnione miejsce" #~ msgid "Transactions Will Appear Here" #~ msgstr "Tutaj pojawiÄ… siÄ™ transakcje" #~ msgid "Halt the execution of transactions" #~ msgstr "Zatrzymaj wykonywanie transakcji" #~ msgid "Up to date!" #~ msgstr "Wszystko zaktualizowane!" #~ msgid "Confirm Action" #~ msgstr "Zatwierdź zadanie" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Masz zamiar usunąć nastÄ™pujÄ…cy Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Czy na pewno chcesz to zrobić?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Masz zamiar zainstalować nastÄ™pujÄ…cy Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Czy na pewno chcesz to zrobić?" #~ msgid "Resume the execution of transactions" #~ msgstr "Wznów wykonywanie transakcji" #~ msgid "Pause the execution of transactions" #~ msgstr "Zatrzymaj wykonywanie transakcji" #~ msgid "Apps Of The Week" #~ msgstr "Polecane w tym tygodniu" #~ msgid "Minimize Lower Bound" #~ msgstr "Zminimalizuj dolnÄ… granicÄ™" #~ msgid "Maximize Upper Bound" #~ msgstr "Zmaksymalizuj górnÄ… granicÄ™" #~ msgctxt "Project URL Type" #~ msgid "VCS Browser" #~ msgstr "PrzeglÄ…darka VCS" #~ msgid "Full Application View" #~ msgstr "PeÅ‚ny widok aplikacji" #~ msgid "Change what content is shown when viewing applications" #~ msgstr "ZmieÅ„ co siÄ™ pokazuje podczas wyÅ›wietlania aplikacji" #~ msgid "" #~ "If you do not have an access token, turning this setting on may cause " #~ "GitHub to eventually rate limit you." #~ msgstr "" #~ "JeÅ›li nie posiadasz tokenu dostÄ™pu włączenie tego ustawienia może " #~ "sprawić, że Github może zacząć blokować twoje żądania" #~ msgid "Type to filter" #~ msgstr "Pisz, aby filtrować" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Odrzuć wyniki z licencjami wÅ‚asnoÅ›ciowymi" #~ msgid "Advanced" #~ msgstr "Zaawansowane" #~ msgid "Open this link externally" #~ msgstr "Otwórz to łącze w przeglÄ…darce" #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "Otrzymano %'d z %'d wystÄ…pieÅ„ (minęło %0.1f sek.)" #~ msgid "VCS Forge Star Count" #~ msgstr "Licznik gwiazdek na VCS" #~ msgid "This application does not provide a donation link" #~ msgstr "Ta aplikacja nie posiada łącza do strony przekazywania darowizny" #, c-format #~ msgid "" #~ "\"%s\" does not provide a donations link. This does not mean you cannot " #~ "support them! Try looking at their <a href=\"%s\">project page</a> for " #~ "more information." #~ msgstr "" #~ "\"%s\" nie posiada łącza do strony przekazywaina darowizny. Oznacza to, " #~ "że nie możesz wesprzeć tej aplikacji. Zajrzyj do a href=\"%s\">strony " #~ "projektu</a>, aby dowiedzieć siÄ™ wiÄ™cej." #, c-format #~ msgid "" #~ "\"%s\" does not provide a donations link. This does not mean you cannot " #~ "support them! Try finding their project page for more information." #~ msgstr "" #~ "\"%s\" nie posiada łącza do strony przekazywaina darowizny. Oznacza to, " #~ "że nie możesz wesprzeć tej aplikacji. Spróbój znaleźć stronÄ™ projektu tej " #~ "aplikacji, aby dowiedzieć siÄ™ wiÄ™cej." #~ msgid "Installing" #~ msgstr "Instalowanie" #~ msgid "Removing" #~ msgstr "Usuwanie" #~ msgid "Show Animated Background" #~ msgstr "Pokaż animowane tÅ‚a" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "" #~ "Wybierz czy chcesz, aby pokazywać animowane tÅ‚a ikon na stronie domowej" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "" #~ "Jest to liczba pobraÅ„ z ostatnich 30 dni. NaciÅ›nij, aby zobaczyć " #~ "statystyki pobraÅ„ tej aplikacji." #~ msgid "How the application looks" #~ msgstr "Jak aplikacja siÄ™ prezentuje" #~ msgid "Appearance" #~ msgstr "WyglÄ…d" #~ msgid "Show animated background" #~ msgstr "Pokaż animowane tÅ‚a" #~ msgid "Keep the summary shorter, between 10 and 35 characters" #~ msgstr "ProszÄ™ skrócić podsumowanie, powinno mieć miÄ™dzy 10 a 35 znaków." #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Główne okno Bazaaru pokazujÄ…ce Blendera" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Microwave" #~ msgstr "Microwave" #~ msgid "Match using regular expressions" #~ msgstr "Porównywaj używajÄ…c zwyczajnych wyrażeÅ„" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "Ukryj filtrowanie i sortowanie za efektem przejÅ›cia" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/pt.po������������������������������������������������������������������0000664�0000000�0000000�00000256052�15240005042�0016751�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Portuguese translations for bazaar package # Tradução portuguesa (Portugal) para o pacote bazaar. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-01-27 19:32+0000\n" "PO-Revision-Date: 2025-07-15 11:36+0100\n" "Last-Translator: Eduardo Correia (Azenyr)\n" "Language-Team: Portuguese (Portugal)\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 #: src/bz-window.blp:233 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Adicionar, remover ou atualizar software flatpak neste computador" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Sistema;GestorDePacotes;Discover;Flatpak;Aplicações;Loja;" #: data/io.github.kolunmi.Bazaar.desktop.in:15 msgid "New Window" msgstr "Nova Janela" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "Descobrir e instalar aplicações" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 #, fuzzy msgid "" "A new app store for Linux with a focus on discovering and installing " "applications and addons from Flatpak remotes, particularly Flathub." msgstr "" "Uma nova loja de aplicações para Linux com foco em descobrir e instalar " "aplicações e extensões (add-ons) a partir de repositórios Flatpak, " "principalmente do Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 #, fuzzy msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. " "Bazaar features a \"curated\" tab that can be configured by distributors to " "allow for a more localized experience." msgstr "" "Prioritiza o suporte aos desenvolvedores que juntos tornam o Linux em " "computadores possível. O Bazaar apresenta a secção \"Recomendadas\" que pode " "ser configurada pelos distribuidores para permitir uma experiência mais " "personalizada." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:29 src/bz-application.c:706 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:54 #, fuzzy msgid "The home page displaying Flathub apps" msgstr "A vista inicial a demonstrar apps do Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:58 msgid "Nucleus app page" msgstr "Página da app Nucleus" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:62 #, fuzzy msgid "Search page" msgstr "Página de pesquisa" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:66 msgid "Category page" msgstr "Página das categorias" #: src/bz-addons-dialog.blp:14 src/bz-full-view.blp:701 #: src/bz-installed-tile.blp:99 #, fuzzy msgid "Manage Add-ons" msgstr "Gerir Extensões" #: src/bz-addons-dialog.c:90 src/bz-full-view.blp:488 #: src/bz-installed-tile.blp:117 src/bz-transaction-dialog.c:242 #: src/bz-transaction-view.blp:277 msgid "Remove" msgstr "Remover" #: src/bz-addons-dialog.c:95 src/bz-favorites-tile.c:174 #: src/bz-full-view.blp:255 src/bz-full-view.blp:475 #: src/bz-transaction-dialog.c:213 src/bz-transaction-view.blp:225 msgid "Install" msgstr "Instalar" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:726 src/bz-full-view.c:346 src/bz-full-view.c:353 msgid "Age Rating" msgstr "classificação etária" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Violência em desenhos animados" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Sem informação sobre violência em desenhos animados" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Violência em fantasia" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Sem informação sobre violência em fantasia" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Violência realista" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Sem informação sobre violência realista" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Violência que mostre sangue" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Sem informação sobre violência que mostre sangue" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Violência sexual" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Sem informação sobre violência sexual" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Ãlcool" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Sem informação sobre referências a álcool" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Narcóticos (Drogas)" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Sem informação sobre referências a drogas" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabaco" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Sem informação sobre referências a produtos de tabaco" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nudez" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Sem informação sobre nudez de qualquer tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Temas sexuais" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Sem informação sobre referências ou representações de temas sexuais" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Linguagem obscena" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Sem informação sobre uso de linguagem obscena de qualquer tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Humor inapropriado" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Sem informação sobre uso de humor inapropriado" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Discriminação" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Sem informação sobre liguagem discriminatória de qualquer tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Publicidades" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Sem informação sobre publicidade de qualquer tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Apostas (Jogos de azar)" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Sem informação sobre apostas ou jogos de azar de qualquer tipo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Compras" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Sem informação sobre a possibilidade de gastar dinheiro" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Conversas entre utilizadores" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "" "Sem informação sobre a possibilidade de conversar com outros utilizadores" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Conversas por áudio entre utilizadores" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Sem informação sobre conversas por áudio entre utilizadores" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 #, fuzzy msgid "Contact Details" msgstr "Detalhes de contacto" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Sem informação sobre a partilha social de nomes de utilizador ou emails" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Informação pessoal identificável" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "Sem informação sobre a partilha de informação pessoal com terceiros" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Partilha de localização" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Sem informação sobre a possibilidade de partilhar a localização física com " "outros utilizadores" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostituição" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Sem informação sobre referências a prostituição" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Adultério" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Sem informação sobre referências a adultério" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Conteúdos sexualizados" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Sem informação sobre referências a conteúdos sexualizados" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 #, fuzzy msgid "Desecration" msgstr "Profanação" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Sem informação sobre referências a profanação" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Visibilidade de restos humanos" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Sem informação sobre restos humanos visíveis" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Escravidão" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Sem informação sobre referências a escravidão" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Não inclui referências a uso de drogas" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "" "Não inclui liguagem palavrões, asneiras, ou qualquer outro tipo de liguagem " "obscena" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Não inclui publicidade ou transações monetárias" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Não inclui sexo nem nudez" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Não inclui capacidade de conversas por chat sem controlo" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Não inclui violência" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drogas" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Linguagem obscena" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Dinheiro" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Social" #: src/bz-age-rating-dialog.c:479 #, fuzzy msgid "Violence" msgstr "Violência" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:676 src/bz-full-view.c:336 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:701 msgctxt "Age rating" msgid "All" msgstr "Todas as idades" #: src/bz-age-rating-dialog.c:737 #, c-format msgid "%s has an unknown age rating" msgstr "%s tem uma classificação etária desconhecida" #: src/bz-age-rating-dialog.c:743 #, c-format msgid "%s is suitable for everyone" msgstr "%s é apropriado para todas as idades" #: src/bz-age-rating-dialog.c:746 #, c-format msgid "%s is suitable for young children" msgstr "%s é apropriado para crianças pequenas" #: src/bz-age-rating-dialog.c:749 #, c-format msgid "%s is suitable for children" msgstr "%s é apropriado para crianças" #: src/bz-age-rating-dialog.c:752 #, fuzzy, c-format msgid "%s is suitable for teenagers" msgstr "%s é apropriado para adolescentes" #: src/bz-age-rating-dialog.c:755 #, fuzzy, c-format msgid "%s is suitable for adults" msgstr "%s é apropriado para adultos" #: src/bz-age-rating-dialog.c:758 #, fuzzy, c-format msgid "%s is suitable for %s" msgstr "%s é apropriado para %s" #: src/bz-age-rating-dialog.c:852 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-all-apps-page.blp:13 src/bz-apps-page.blp:14 src/bz-full-view.blp:43 #: src/bz-user-data-page.blp:15 src/bz-window.blp:483 msgid "Main Menu" msgstr "Menu Principal" #: src/bz-all-apps-page.blp:17 src/bz-apps-page.blp:17 #: src/bz-user-data-page.blp:18 src/bz-window.blp:556 msgid "_Donate to Bazaar â¤ï¸" msgstr "_Efetuar uma doação para o Bazaar â¤ï¸" #: src/bz-all-apps-page.blp:18 src/bz-apps-page.blp:18 #: src/bz-user-data-page.blp:19 #, fuzzy msgid "_Refresh Content" msgstr "_Recarregar conteúdo" #: src/bz-all-apps-page.blp:22 src/bz-apps-page.blp:22 #: src/bz-user-data-page.blp:22 src/bz-window.blp:563 #, fuzzy msgid "_Preferences" msgstr "_Definições" #: src/bz-all-apps-page.blp:23 src/bz-apps-page.blp:23 #: src/bz-user-data-page.blp:23 src/bz-window.blp:584 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de teclado" #: src/bz-all-apps-page.blp:24 src/bz-apps-page.blp:24 #: src/bz-user-data-page.blp:24 src/bz-window.blp:589 msgid "_About Bazaar" msgstr "_Acerca do bazaar" #: src/bz-all-apps-page.blp:28 src/bz-apps-page.blp:28 #: src/bz-user-data-page.blp:27 src/bz-window.blp:596 #, fuzzy msgid "_Quit Bazaar" msgstr "_Sair do bazaar" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Pasta do sistema %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Subpasta pessoal %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Pastas do sistema principal" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Definições do sistema principal provenientes de /etc" #: src/bz-app-permissions.c:169 #, fuzzy, c-format msgid "Desktop subfolder %s" msgstr "Subpasta do ambiente de trabalho %s" #: src/bz-app-permissions.c:170 #, fuzzy msgid "Desktop folder" msgstr "Pasta do computador" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Subpasta documentos %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Pasta documentos" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Subpasta música %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Pasta música" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Subpasta imagens %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Pasta imagens" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Subpasta partilha %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Pasta partilha" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Subpasta vídeos %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Pasta vídeos" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Subpasta templates %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Pasta templates" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Subpasta cache do utilizador %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Pasta cache do utilizador" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Subpasta das definições do utilizador %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Pasta das definições do utilizador" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Subpasta dos dados do utilizador %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Pasta dos dados do utilizador" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Subpasta runtime do utilizador %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Pasta runtime do utilizador" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Acesso ao sistema de ficheiros para %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Caminho de localização desconhecido" #: src/bz-app-size-dialog.blp:29 src/bz-app-size-dialog.blp:55 #, fuzzy msgid "Download Size" msgstr "Tamanho da transferência" #: src/bz-app-size-dialog.blp:56 msgid "Amount to download from the internet" msgstr "Tamanho para transferência da internet" #: src/bz-app-size-dialog.blp:76 #, fuzzy msgid "Installed Size" msgstr "Tamanho da instalação" #: src/bz-app-size-dialog.blp:77 msgid "Size on Disk" msgstr "Tamanho no disco" #: src/bz-app-size-dialog.blp:99 #, fuzzy msgid "User Data Size" msgstr "Dados de utilizador" #: src/bz-app-size-dialog.blp:100 msgid "Caches, settings, and other app data" msgstr "Ficheiros temporários, definições e outros dados da app" #. Translators: As in 'The app is installed'. #. Translators: . #: src/bz-app-tile.blp:86 src/bz-full-view.c:295 src/bz-installed-page.blp:86 #: src/bz-window.blp:299 msgid "Installed" msgstr "Instalado" #: src/bz-apps-page.blp:110 msgid "Show All" msgstr "Mostrar tudo" #: src/bz-apps-page.c:243 #, fuzzy, c-format msgid "All \"%s\"" msgstr "Todas de \"%s\"" #: src/bz-apps-page.c:530 src/bz-tag-list.c:109 #, fuzzy, c-format msgid "%d Applications" msgstr "%d aplicações" #: src/bz-application.c:677 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:678 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:709 msgid "translator-credits" msgstr "" #: src/bz-application.c:720 msgid "Special Thanks" msgstr "Agradecimentos especiais" #: src/bz-application.c:778 msgid "Logged Out Successfully!" msgstr "Sessão terminada com sucesso!" #: src/bz-application.c:906 msgid "Performing setup..." msgstr "A configurar..." #: src/bz-application.c:985 src/bz-application.c:994 #, fuzzy msgid "Set Up Flathub" msgstr "Adicionar o Flathub" #: src/bz-application.c:988 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "O Flathub não está configurado neste sistema. Pode ainda assim navegar e " "instalar apps no Bazaar.\n" "\n" "Pode mesmo assim utilizar o Bazzar para navegar e remover apps já instaladas." #: src/bz-application.c:993 src/bz-window.c:875 msgid "Later" msgstr "Mais tarde" #: src/bz-application.c:1393 src/bz-application.c:3072 msgid "Synchronizing..." msgstr "A sincronizar..." #: src/bz-application.c:1534 src/bz-application.c:3068 #, fuzzy, c-format msgid "Receiving %d entries..." msgstr "A receber %d itens..." #: src/bz-application.c:1539 #, fuzzy msgid "Checking for updates" msgstr "A procurar atualizações..." #: src/bz-application.c:3074 msgid "Indexing Data..." msgstr "A indexar dados..." #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:75 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:53 #: src/bz-installed-page.blp:63 src/bz-user-data-page.blp:52 #: src/bz-window.blp:183 msgid "Empty" msgstr "Vazio" #: src/bz-curated-view.blp:15 #, fuzzy msgid "No Curation" msgstr "Sem Aplicações Recomendadas" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "" "De momento, não existe sistema de recomendações configurado neste sistema. " "Pode mesmo assim navegar e instalar aplicações na tab Flathub." #: src/bz-curated-view.blp:18 #, fuzzy msgid "Browse Flathub" msgstr "Navegar pelo Flathub" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 #: src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "Sem Ligação (Offline)" #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:49 msgid "Browser" msgstr "Explorador" #: src/bz-developer-badge.c:131 msgid "Developer information not available." msgstr "Informações de desenvolvedor não disponíveis." #: src/bz-developer-badge.c:137 src/bz-developer-badge.c:151 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "A propriedade do ID da app %s não foi verificada pelo que poderá ser uma " "aplicação da comunidade." #: src/bz-developer-badge.c:155 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "A propriedade do ID da app %s foi verificada manualmente pela equipa do " "Flathub." #: src/bz-developer-badge.c:161 #, fuzzy, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "A propriedade do ID da app %s foi verificada por <b>%s</b> em <b>%s</b>" #: src/bz-developer-badge.c:168 #, fuzzy, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "A propriedade do ID da app %s foi verificada usando %s" #: src/bz-developer-badge.c:172 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "A propriedade do ID da app %s foi verificado." #: src/bz-entry-group-util.c:73 #, fuzzy msgid "Choose an Installation" msgstr "Escolha uma instalação" #: src/bz-entry-group-util.c:76 #, fuzzy msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Parece que tem múltiplas versões desta app instaladas. Com qual delas " "gostaria de continuar? " #: src/bz-entry-group-util.c:80 src/bz-transaction-dialog.c:212 #: src/bz-transaction-dialog.c:241 src/bz-transaction-dialog.c:286 #: src/bz-transaction-dialog.c:595 msgid "Cancel" msgstr "Cancelar" #: src/bz-entry-selection-row.blp:17 msgid "For this user only" msgstr "Apenas para este utilizador" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "este utilizador" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "todos os utilizadores" #: src/error.c:68 msgid "An Error Occurred" msgstr "Ocorreu Um Erro" #: src/error.c:89 msgid "Close" msgstr "Fechar" #: src/error.c:90 msgid "Copy and Close" msgstr "Copiar e Fechar" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Entre com a conta Flathub para gerir os seus favoritos" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Entrar" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Contagem de favoritos" #: src/bz-favorites-tile.c:172 #, fuzzy msgid "Uninstall" msgstr "Desinstalar" #: src/bz-favorites-tile.blp:70 src/bz-installed-tile.blp:75 #, fuzzy msgid "Support this application" msgstr "Apoiar esta aplicação" #: src/bz-favorites-tile.blp:119 msgid "Remove from Favorites" msgstr "Remover dos favoritos" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:85 #: src/bz-window.blp:614 msgid "Favorites" msgstr "Favoritos" #: src/bz-favorites-page.blp:22 src/bz-full-view.blp:20 src/bz-window.blp:126 #: src/bz-window.blp:460 msgid "Toggle transaction sidebar" msgstr "Alternar a barra lateral de transações" #: src/bz-favorites-page.blp:46 src/bz-transaction-dialog.c:596 #, fuzzy msgid "Install All" msgstr "Instalar" #: src/bz-favorites-page.blp:63 src/bz-user-data-page.blp:41 msgid "Loading" msgstr "A carregar" #: src/bz-favorites-page.blp:78 msgid "No Favorites" msgstr "Sem favoritos" #: src/bz-favorites-page.blp:79 msgid "Applications you mark as favorite will appear here" msgstr "Aplicações que marque como favoritas irão aparecer aqui" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "Anterior" #: src/bz-featured-carousel.blp:53 msgid "Next" msgstr "Seguinte" #: src/bz-featured-tile.blp:88 msgid "App of the Day" msgstr "App do Dia" #: src/bz-flathub-category.c:89 #, fuzzy msgid "Editing" msgstr "Edição" #: src/bz-flathub-category.c:90 msgid "Midi" msgstr "MIDI" #: src/bz-flathub-category.c:91 msgid "Mixer" msgstr "Mixagem" #: src/bz-flathub-category.c:92 msgid "Music" msgstr "Música" #: src/bz-flathub-category.c:93 #, fuzzy msgid "Player" msgstr "Jogar" #: src/bz-flathub-category.c:94 msgid "Recorder" msgstr "Gravador" #: src/bz-flathub-category.c:95 #, fuzzy msgid "Sequencer" msgstr "Sequenciador" #: src/bz-flathub-category.c:96 msgid "Tuner" msgstr "Sintetizador" #: src/bz-flathub-category.c:97 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:102 #, fuzzy msgid "Emulation" msgstr "Emulação" #: src/bz-flathub-category.c:103 #, fuzzy msgid "Action" msgstr "Ação" #: src/bz-flathub-category.c:104 msgid "Adventure" msgstr "Aventura" #: src/bz-flathub-category.c:105 msgid "Arcade" msgstr "Arcada" #: src/bz-flathub-category.c:106 msgid "Blocks" msgstr "Blocos" #: src/bz-flathub-category.c:107 msgid "Board" msgstr "Tabuleiro" #: src/bz-flathub-category.c:108 msgid "Card" msgstr "Cartas" #: src/bz-flathub-category.c:109 msgid "Kids" msgstr "Crianças" #: src/bz-flathub-category.c:110 msgid "Logic" msgstr "Lógica" #: src/bz-flathub-category.c:111 msgid "Role Playing" msgstr "Atuação (Role Playing)" #: src/bz-flathub-category.c:112 msgid "Shooter" msgstr "Tiros" #: src/bz-flathub-category.c:113 #, fuzzy msgid "Simulation" msgstr "Simulação" #: src/bz-flathub-category.c:114 #, fuzzy msgid "Sports" msgstr "Desporto" #: src/bz-flathub-category.c:115 msgid "Strategy" msgstr "Estratégia" #: src/bz-flathub-category.c:120 msgid "Audio & Video" msgstr "Ãudio e Vídeo" #: src/bz-flathub-category.c:120 msgid "Media" msgstr "Multimédia" #: src/bz-flathub-category.c:120 msgid "More Audio & Video" msgstr "Ver mais áudio e vídeo" #: src/bz-flathub-category.c:121 msgid "Developer Tools" msgstr "Ferramentas para desenvolvedores" #: src/bz-flathub-category.c:121 msgid "Develop" msgstr "Desenvolver" #: src/bz-flathub-category.c:121 msgid "More Developer Tools" msgstr "Ver mais ferramentas para desenvolvedores" #: src/bz-flathub-category.c:122 msgid "Education" msgstr "Educação" #: src/bz-flathub-category.c:122 msgid "Learn" msgstr "Aprender" #: src/bz-flathub-category.c:122 #, fuzzy msgid "More Education" msgstr "Ver mais educação" #: src/bz-flathub-category.c:123 msgid "Gaming" msgstr "Jogos" #: src/bz-flathub-category.c:123 msgid "Play" msgstr "Jogar" #: src/bz-flathub-category.c:123 #, fuzzy msgid "More Gaming" msgstr "Ver mais jogos" #: src/bz-flathub-category.c:124 msgid "Graphics & Photography" msgstr "Gráficos e fotografia" #: src/bz-flathub-category.c:124 msgid "Create" msgstr "Criar" #: src/bz-flathub-category.c:124 msgid "More Graphics & Photography" msgstr "Ver mais gráficos e fotografia" #: src/bz-flathub-category.c:125 msgid "Networking" msgstr "Redes e comunicações" #: src/bz-flathub-category.c:125 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:125 msgid "More Networking" msgstr "Ver mais redes e comunicações" #: src/bz-flathub-category.c:126 msgid "Productivity" msgstr "Produtividade" #: src/bz-flathub-category.c:126 msgid "Work" msgstr "Trabalhar" #: src/bz-flathub-category.c:126 msgid "More Productivity" msgstr "Ver mais produtividade" #: src/bz-flathub-category.c:127 msgid "Science" msgstr "Ciência" #: src/bz-flathub-category.c:127 #, fuzzy msgid "More Science" msgstr "Ver mais ciência" #: src/bz-flathub-category.c:128 msgid "System" msgstr "Sistema" #: src/bz-flathub-category.c:128 msgid "More System" msgstr "Mais sistema" #: src/bz-flathub-category.c:129 msgid "Utilities" msgstr "Utilitários" #: src/bz-flathub-category.c:129 msgid "Tools" msgstr "Ferramentas" #: src/bz-flathub-category.c:129 #, fuzzy msgid "More Utilities" msgstr "Ver mais utilitários" #: src/bz-flathub-category.c:130 src/bz-flathub-page.blp:119 #: src/bz-flathub-page.blp:152 msgid "Trending" msgstr "Tendências" #: src/bz-flathub-category.c:130 #, fuzzy msgid "More Trending" msgstr "Mais tendências" #: src/bz-flathub-category.c:131 src/bz-flathub-page.blp:125 #: src/bz-flathub-page.blp:185 msgid "Popular" msgstr "Populares" #: src/bz-flathub-category.c:131 #, fuzzy msgid "More Popular" msgstr "Mais Populares" #: src/bz-flathub-category.c:132 src/bz-flathub-page.blp:174 msgid "Recently Added" msgstr "Adicionadas Recentemente" #: src/bz-flathub-category.c:132 src/bz-flathub-page.blp:131 msgid "New" msgstr "Novas" #: src/bz-flathub-category.c:132 #, fuzzy msgid "More New" msgstr "Ver mais adicionadas recentemente" #: src/bz-flathub-category.c:133 src/bz-flathub-page.blp:163 msgid "Recently Updated" msgstr "Atualizadas Recentemente" #: src/bz-flathub-category.c:133 src/bz-flathub-page.blp:137 #, fuzzy msgid "Updated" msgstr "Atualizadas" #: src/bz-flathub-category.c:133 #, fuzzy msgid "More Updated" msgstr "Ver mais atualizadas recentemente" #: src/bz-flathub-category.c:134 msgid "Mobile" msgstr "Mobile" #: src/bz-flathub-category.c:134 #, fuzzy msgid "More Mobile" msgstr "Ver mais mobile" #: src/bz-flathub-category.c:135 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:135 #, fuzzy msgid "More Adwaita" msgstr "Ver mais adwaita" #: src/bz-flathub-category.c:136 msgid "KDE Apps" msgstr "Apps KDE" #: src/bz-flathub-category.c:136 #, fuzzy msgid "More KDE Apps" msgstr "Ver mais apps KDE" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "O repositório Flathub não foi adicionado" #: src/bz-flathub-page.blp:24 #, fuzzy msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "O repositório Flathub não foi encontrado em nenhuma das suas instalações " "Flatpak" #: src/bz-flathub-page.blp:35 msgid "Flathub returned an error" msgstr "O Flathub devolveu um erro" #: src/bz-flathub-page.blp:41 #, fuzzy msgid "Retry Flathub Connection" msgstr "Tentar novamente a conexão com o Flathub" #: src/bz-flathub-page.blp:57 #, fuzzy msgid "Flathub Unavailable" msgstr "Flathub não disponível" #: src/bz-flathub-page.blp:58 msgid "" "We could not connect to Flathub. You can still manage and search for " "applications." msgstr "" "Não foi possível conectar com o Flathub. Pode ainda assim gerir e pesquisar " "por aplicações." #: src/bz-flathub-page.blp:61 #, fuzzy msgid "Search Apps" msgstr "Pesquisar aplicações" #: src/bz-flathub-page.blp:270 #, fuzzy msgid "On the Go" msgstr "Fora de casa" #: src/bz-flathub-page.blp:282 msgid "Apps for your Linux phones and tablets" msgstr "Apps para o seu telemóvel e tablet Linux" #: src/bz-flathub-page.blp:293 src/bz-flathub-page.blp:328 #, fuzzy msgid "More Mobile Apps" msgstr "Mais apps mobile" #: src/bz-flathub-page.blp:388 msgid "We​ ♥​ Games" msgstr "Todos ♥ Jogos" #: src/bz-flathub-page.blp:401 msgid "Games and apps to run your favorite titles" msgstr "Jogos e apps para gerir e correr os seus jogos favoritos" #: src/bz-flathub-page.blp:435 #, fuzzy msgid "More Games" msgstr "Ver mais jogos" #: src/bz-full-view.blp:57 src/bz-installed-page.blp:74 #: src/bz-installed-page.blp:78 msgid "No Results" msgstr "Sem Resultados" #: src/bz-full-view.blp:58 msgid "Try a different search query" msgstr "Tente termos de pesquisa diferentes" #: src/bz-full-view.blp:64 src/bz-window.blp:193 msgid "Content" msgstr "Conteúdo" #: src/bz-full-view.blp:123 msgid "Installing .flatpak bundles is not yet supported" msgstr "A instalação de pacotes .flatpak ainda não é suportada." #: src/bz-full-view.blp:216 msgid "Support" msgstr "Apoiar" #: src/bz-full-view.blp:239 src/bz-full-view.blp:499 msgid "Open" msgstr "Abrir" #: src/bz-full-view.blp:252 src/bz-full-view.blp:472 #, fuzzy msgid "Download & Install Application" msgstr "Transferir e instalar a aplicação" #: src/bz-full-view.blp:267 #, fuzzy msgid "Uninstall Application" msgstr "Desinstalar a aplicação" #: src/bz-full-view.blp:282 src/bz-full-view.blp:514 msgid "Install Other Version" msgstr "Instalar outra versão" #: src/bz-full-view.blp:436 #, fuzzy msgid "Downloads/Month" msgstr "Transferências/Mês" #: src/bz-full-view.blp:533 msgid "Stopped Receiving Core Updates" msgstr "Deixou de receber atualizações base" #: src/bz-full-view.blp:547 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Esta app usa um runtime (serviço de execução) que já não está a receber " "atualizações nem correções de segurança. Pode tornar-se perigoso a usar no " "futuro." #: src/bz-full-view.blp:636 #, fuzzy msgid "Trash Data" msgstr "Dados de utilizador" #: src/bz-full-view.blp:776 msgid "Tags:" msgstr "Etiquetas:" #: src/bz-full-view.c:235 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/bz-full-view.c:242 #, c-format msgid "%.*fM" msgstr "%.*f M" #. Translators: K is the suffix for thousands #: src/bz-full-view.c:249 #, c-format msgid "%.*fK" msgstr "%.*f mil" #: src/bz-full-view.c:259 #, c-format msgid "%d downloads in the last 30 days" msgstr "%d transferências nos últimos 30 dias" #: src/bz-full-view.c:271 src/bz-full-view.c:605 src/bz-full-view.c:622 msgid "N/A" msgstr "N/A" #. Translators: . #: src/bz-full-view.c:295 #, fuzzy msgid "Download" msgstr "Transferir" #: src/bz-full-view.c:315 #, fuzzy msgid "Size information unavailable" msgstr "Classificação etária não disponível" #: src/bz-full-view.c:318 #, fuzzy, c-format msgid "Download size of %s" msgstr "%s de tamanho da transferência" #: src/bz-full-view.c:351 msgid "All Ages" msgstr "Todas as idades" #: src/bz-full-view.c:363 msgid "Age rating information unavailable" msgstr "Classificação etária não disponível" #: src/bz-full-view.c:368 msgid "Suitable for all ages" msgstr "Adequado a todas as idades" #: src/bz-full-view.c:370 #, c-format msgid "Suitable for ages %d and up" msgstr "Adequado a %d anos ou acima" #: src/bz-full-view.c:403 src/bz-full-view.c:408 src/bz-full-view.c:436 #: src/bz-full-view.c:447 msgid "Unknown" msgstr "Desconhecido" #: src/bz-full-view.c:413 #, c-format msgid "Free software licensed under %s" msgstr "Software livre licenciado sob %s" #: src/bz-full-view.c:418 #, fuzzy msgid "Free software" msgstr "Software livre" #: src/bz-full-view.c:421 msgid "Proprietary Software" msgstr "Software proprietário" #: src/bz-full-view.c:424 #, c-format msgid "Special License: %s" msgstr "Licença Especial: %s" #: src/bz-full-view.c:441 msgid "Free" msgstr "Livre" #: src/bz-full-view.c:444 src/bz-license-dialog.c:132 msgid "Proprietary" msgstr "Proprietário" #: src/bz-full-view.c:449 src/bz-license-dialog.c:134 msgid "Special License" msgstr "Licença Especial" #: src/bz-full-view.c:469 msgid "Adaptive" msgstr "Adaptável" #: src/bz-full-view.c:469 msgid "Desktop Only" msgstr "Apenas computador" #: src/bz-full-view.c:475 msgid "Works on desktop, tablets, and phones" msgstr "Funciona em computador, tablets e telemóveis" #: src/bz-full-view.c:476 msgid "May not work on mobile devices" msgstr "Poderá não funcionar em telemóveis" #: src/bz-full-view.c:487 msgid "No URL" msgstr "Sem URL" #: src/bz-full-view.c:505 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "Esta aplicação tem uma licença livre de código aberto (FOSS), o que " "significa que o código fonte pode ser auditável para verificações de " "segurança." #: src/bz-full-view.c:506 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "Esta aplicação tem uma licença proprietária, o que significa que o código " "fonte é privado e não pode ser auditável nem verificado por terceiros." #: src/bz-full-view.c:513 #, fuzzy msgid "More Apps" msgstr "Mais apps" #: src/bz-full-view.c:514 #, fuzzy, c-format msgid "More Apps by %s" msgstr "Mais apps de %s" #: src/bz-full-view.c:521 msgid "Other Apps by this Developer" msgstr "Outras apps deste desenvolvedor" #: src/bz-full-view.c:523 src/bz-full-view.c:723 #, c-format msgid "Other Apps by %s" msgstr "Outras apps de %s" #: src/bz-full-view.c:532 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s não está instalado(a), mais ainda tem <b>%s</b> de dados presentes." #: src/bz-full-view.c:612 src/bz-safety-dialog.blp:31 msgid "Safe" msgstr "Seguro" #: src/bz-full-view.c:614 src/bz-full-view.c:616 msgid "Low Risk" msgstr "Baixo Risco" #: src/bz-full-view.c:618 msgid "Medium Risk" msgstr "Médio Risco" #: src/bz-full-view.c:620 msgid "High Risk" msgstr "Alto Risco" #: src/bz-full-view.c:725 msgid "Other Apps" msgstr "Outras apps" #: src/bz-full-view.c:727 #, fuzzy, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d aplicação" msgstr[1] "%d aplicações" #: src/bz-full-view.c:1066 msgid "Show Less" msgstr "Mostrar menos" #: src/bz-full-view.c:1066 #, fuzzy msgid "Show More" msgstr "Mostrar mais" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 #, fuzzy msgid "Hardware Support" msgstr "Suporte de hardware" #: src/bz-hardware-support-dialog.c:62 #, fuzzy msgid "Keyboard support" msgstr "Suporte de teclado" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Requer um teclado" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Recomenda um teclado" #: src/bz-hardware-support-dialog.c:66 #, fuzzy msgid "Supports keyboards" msgstr "Suporta teclados" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Suporte a teclados desconhecido" #: src/bz-hardware-support-dialog.c:69 #, fuzzy msgid "Mouse support" msgstr "Suporte a rato" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Requer um rato ou dispositivo de apontar" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Recomenda um rato ou dispostivo de apontar" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Suporta ratos ou dispostivos de apontar" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Suporte a ratos ou dispostivos de apontar desconhecido" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Suporte a ecrã táctil" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Requer ecrã táctil" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Recomenda ecrã táctil" #: src/bz-hardware-support-dialog.c:80 #, fuzzy msgid "Supports touchscreens" msgstr "Suporta ecrãs tácteis" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Suporte a ecrãs tácteis desconhecido" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Suporte a dispositivos móveis" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Funciona em todos os dispositivos móveis" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Pode não funcionar perfeitamente em alguns dispositivos móveis" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Suporte a computador desktop" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Funciona bem em ecrãs grandes" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s funciona melhor em hardware específico" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s funciona bem na maior parte dos dispositivos" #: src/bz-installed-page.blp:28 #, fuzzy msgid "Search installed apps" msgstr "Ver as aplicações instaladas" #: src/bz-installed-page.blp:67 #, fuzzy msgid "No Apps Found" msgstr "Não foram encontradas aplicações" #: src/bz-installed-page.c:157 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Sem resultados para \"%s\" na lista de apps instaladas" #: src/bz-installed-tile.blp:61 src/bz-rich-app-tile.blp:136 #, fuzzy msgid "Stopped Receiving Updates" msgstr "A transferir itens" #: src/bz-license-dialog.blp:95 msgid "Get Involved" msgstr "Envolver-se" #: src/bz-license-dialog.c:126 #, fuzzy msgid "Unknown License" msgstr "Licença desconhecida" #: src/bz-license-dialog.c:129 msgid "Community Built" msgstr "Feito pela comunidade" #: src/bz-license-dialog.c:202 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Esta app é desenvolvida em código aberto por uma comunidade internacional de " "desenvolvedores e apoiantes como você.\n" "\n" "Poderá participar e ajudar a tornar esta app ainda melhor." #: src/bz-license-dialog.c:205 msgid "The license of this app is not known" msgstr "A licença desta app não é conhecida" #: src/bz-license-dialog.c:211 #, fuzzy, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Esta app é desenvolvida em código aberto por uma comunidade internacional de " "desenvolvedores e apoiantes como você, e publicada sob a licença %s.\n" "\n" "Poderá participar e ajudar a tornar esta app ainda melhor." #: src/bz-license-dialog.c:219 #, fuzzy msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Esta app não é desenvolvida com o código aberto, pelo que apenas os seus " "desenvolvedores têm acesso à forma como a mesma funciona. Isto pode ser " "inseguro em certas formas difíceis de detectar, e o funcionamento pode mudar " "sem aviso prévio.\n" "\n" "Poderá ou não conseguir contribuir para o desenvolvimento desta app." #: src/bz-license-dialog.c:225 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Esta app foi desenvolvida sub a licença especial %s.\n" "\n" "Poderá ou não conseguir contribuir para o desenvolvimento desta app." #: src/bz-login-page.blp:5 src/bz-login-page.blp:42 #, fuzzy msgid "Connect to Flathub" msgstr "Navegar pelo Flathub" #: src/bz-login-page.blp:32 msgid "Something Went Wrong" msgstr "Algo correu mal" #: src/bz-login-page.blp:43 msgid "Connect your Flathub account to Bazaar to manage your favorited apps." msgstr "" "Conecte a sua conta Flathub ao Bazaar para gerir as suas apps favoritas." #: src/bz-login-page.blp:108 msgid "Finish" msgstr "Terminar" #: src/bz-login-page.c:663 #, c-format msgid "Hello, %s!" msgstr "Olá, %s!" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Definições" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data sync is paused" msgstr "" "A conexão de internet atual está definida como limitada - a sincronização " "automática de dados da loja foi pausada" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:494 msgid "Sync Manually" msgstr "Sincronizar manualmente" #: src/bz-preferences-dialog.blp:31 #, fuzzy msgid "Content Filters" msgstr "Filtragem de Conteúdo" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Apenas software livre" #: src/bz-preferences-dialog.blp:35 #, fuzzy msgid "Hide proprietary applications when browsing and searching" msgstr "Ocultar software proprietário dos resultados de pesquisa" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Apenas resultados do Flathub" #: src/bz-preferences-dialog.blp:40 #, fuzzy msgid "" "Limit search and browse results to applications only available on Flathub" msgstr "Limitar a pesquisa e navegação apenas a apps disponíveis no Flathub" #: src/bz-preferences-dialog.blp:44 #, fuzzy msgid "Verified Results Only" msgstr "Apenas apps verificadas do Flathub" #: src/bz-preferences-dialog.blp:45 #, fuzzy msgid "Hide results that are not verified on Flathub" msgstr "Excluir da pesquisa resultados que não sejam do Flathub" #: src/bz-preferences-dialog.blp:49 msgid "Hide EOL Apps" msgstr "Ocultar apps em fim de vida (EOL)" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "" "Ocultar apps que já não estejam a receber suporte dos seus desenvolvedores" #: src/bz-preferences-dialog.blp:55 src/bz-window.blp:314 msgid "Search" msgstr "Pesquisar" #: src/bz-preferences-dialog.blp:58 msgid "Delay Search Results" msgstr "Atrasar resultados de pesquisa" #: src/bz-preferences-dialog.blp:59 msgid "Improve results performance by debouncing search terms" msgstr "" "Melhorar o desempenho da lista de resultados ao atrasar a entrada de texto " "da pesquisa" #: src/bz-preferences-dialog.blp:64 msgid "Progress Bar" msgstr "Barra de progresso" #: src/bz-preferences-dialog.blp:65 msgid "Choose a theme for the progress bar!" msgstr "Escolha um tema para a barra de progresso" #: src/bz-preferences-dialog.blp:89 msgid "Vertical Stripes" msgstr "Riscas Verticais" #: src/bz-preferences-dialog.blp:90 msgid "Display flag colors from left to right" msgstr "Mostrar as cores das bandeiras da esquerda para a direita" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Cor de destaque" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "" #: src/bz-releases-dialog.blp:5 src/bz-releases-list.blp:28 msgid "Version History" msgstr "Histórico de versões" #: src/bz-releases-list.c:136 #, c-format msgid "Version %s" msgstr "Versão %s" #: src/bz-releases-list.c:173 msgid "No details for this release" msgstr "Sem detalhes sobre esta versão" #: src/bz-releases-list.c:185 #, fuzzy msgid "Get More Information" msgstr "Obter mais informações" #: src/bz-rich-app-tile.blp:153 msgid "Get" msgstr "Obter" #: src/safety-calculator.c:82 #, fuzzy msgid "Unknown Permissions" msgstr "Permissões Desconhecidas" #: src/safety-calculator.c:83 msgid "Permissions are missing for this app." msgstr "As permissões estão em falta para esta app." #: src/safety-calculator.c:96 #, fuzzy msgid "No Permissions" msgstr "Sem Permissões" #: src/safety-calculator.c:97 msgid "App is fully sandboxed" msgstr "A app é completamente sandboxed (isolada do sistema)" #: src/safety-calculator.c:103 msgid "Network Access" msgstr "Acesso à internet" #: src/safety-calculator.c:104 msgid "Can access the internet" msgstr "Pode aceder à internet" #: src/safety-calculator.c:106 msgid "No Network Access" msgstr "Sem acesso à internet" #: src/safety-calculator.c:107 msgid "Cannot access the internet" msgstr "Não pode aceder à internet" #: src/safety-calculator.c:112 msgid "User Device Access" msgstr "Acesso a dispositivos do utilizador" #: src/safety-calculator.c:113 msgid "Can access devices such as webcams or gaming controllers" msgstr "Pode aceder a dispositivos como câmaras ou comandos de jogos" #: src/safety-calculator.c:115 msgid "No User Device Access" msgstr "Sem acesso a dispositivos do utilizador" #: src/safety-calculator.c:116 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Não pode aceder a dispositivos como câmaras ou comandos de jogos" #: src/safety-calculator.c:121 msgid "Input Device Access" msgstr "Acesso a dispositivos de introdução" #: src/safety-calculator.c:122 msgid "Can access input devices" msgstr "Pode aceder a dispositivos de introdução como rato e teclado" #: src/safety-calculator.c:128 msgid "Microphone Access and Audio Playback" msgstr "Acesso a microfone e reprodução de áudio" #: src/safety-calculator.c:129 msgid "Can listen using microphones and play audio without asking permission" msgstr "Pode aceder a microfones e reproduzir som sem necessitar de permissão" #: src/safety-calculator.c:135 msgid "System Device Access" msgstr "Acesso a dispositivos de sistema" #: src/safety-calculator.c:136 msgid "Can access system devices which require elevated permissions" msgstr "" "Pode aceder a dispositivos de sistema que requeiram permissões elevadas" #: src/safety-calculator.c:142 msgid "Screen Contents Access" msgstr "Acesso ao conteúdo do ecrã" #: src/safety-calculator.c:143 msgid "Can access the contents of the screen or other windows" msgstr "Pode aceder ao conteúdo do ecrã ou de outras janelas" #: src/safety-calculator.c:149 msgid "Legacy Windowing System" msgstr "Sistema de janelas antigo (legacy)" #: src/safety-calculator.c:150 #, fuzzy msgid "Always uses a legacy windowing system (X11)" msgstr "Usa um sistema de janelas antigo (legacy)" #: src/safety-calculator.c:156 #, fuzzy msgid "Arbitrary Permissions" msgstr "Permissões arbitrárias" #: src/safety-calculator.c:157 msgid "Can acquire arbitrary permissions" msgstr "Pode obter permissões arbitrárias" #: src/safety-calculator.c:163 msgid "User Settings" msgstr "Definições do utilizador" #: src/safety-calculator.c:164 msgid "Can access and change user settings" msgstr "Pode aceder e alterar definições do utilizador" #: src/safety-calculator.c:170 msgid "Full File System Read/Write Access" msgstr "Acesso completo de leitura e escrita ao sistema de ficheiros" #: src/safety-calculator.c:171 msgid "Can read and write all data on the file system" msgstr "Pode aceder, alterar ou apagar quaisquer dados no sistema de ficheiros" #: src/safety-calculator.c:178 msgid "Home Folder Read/Write Access" msgstr "Acesso de leitura/escrita à pasta pessoal (Home)" #: src/safety-calculator.c:179 msgid "Can read and write all data in your home directory" msgstr "Pode aceder, alterar ou apagar quaisquer dados na pasta pessoal" #: src/safety-calculator.c:186 msgid "Full File System Read Access" msgstr "Acesso de leitura a todo o sistema" #: src/safety-calculator.c:187 msgid "Can read all data on the file system" msgstr "" "Pode ler e aceder (mas não alterar/apagar) a quaisquer dados em qualquer " "parte do sistema de ficheiros" #: src/safety-calculator.c:195 msgid "Home Folder Read Access" msgstr "Acesso de leitura à pasta pessoal (Home)" #: src/safety-calculator.c:196 msgid "Can read all data in your home directory" msgstr "" "Pode ler e aceder (mas não alterar/apagar) a quaisquer dados na pasta " "pessoal do seu utilizador" #: src/safety-calculator.c:204 msgid "Download Folder Read/Write Access" msgstr "Acesso completo de leitura/escrita à pasta Transferências" #: src/safety-calculator.c:205 msgid "Can read and write all data in your downloads directory" msgstr "" "Pode aceder, alterar ou apagar quaisquer dados na sua pasta Transferências" #: src/safety-calculator.c:215 msgid "Download Folder Read Access" msgstr "Acesso de leitura à pasta Transferências" #: src/safety-calculator.c:216 msgid "Can read all data in your downloads directory" msgstr "" "Pode ler e aceder (mas não alterar/apagar) a quaisquer dados na sua pasta " "Transferências" #: src/safety-calculator.c:229 msgid "Can read and write all data in the directory" msgstr "" "Pode aceder, alterar ou apagar quaisquer dados nesta pasta ou diretório" #: src/safety-calculator.c:243 msgid "Can read all data in the directory" msgstr "" "Pode ler e aceder (mas não alterar/apagar) a quaisquer dados nesta pasta ou " "diretório" #: src/safety-calculator.c:258 msgid "No File System Access" msgstr "Sem acesso completo ao sistema de ficheiros" #: src/safety-calculator.c:259 msgid "Cannot access the file system at all" msgstr "Não pode aceder de todo ao sistema de ficheiros" #: src/safety-calculator.c:266 msgid "Uses System Services" msgstr "Usa serviços de sistema" #: src/safety-calculator.c:267 msgid "Can request data from non-portal system services" msgstr "Pode pedir dados para serviços de sistema fora do portal" #: src/safety-calculator.c:273 msgid "Uses Session Services" msgstr "Usa serviços de sessão" #: src/safety-calculator.c:274 msgid "Can request data from non-portal session services" msgstr "Pode pedir dados para serviços de sessão fora do portal" #: src/safety-calculator.c:322 msgid "No Service Access" msgstr "Sem acesso a serviços" #: src/safety-calculator.c:323 msgid "Cannot access non-portal session or system services at all" msgstr "" "Não pode de todo aceder a serviços fora do portal sejam de sistema ou de " "sessão" #: src/safety-calculator.c:331 #, fuzzy msgid "Verified App Developer" msgstr "" "Este flatpak foi verificado pelos desenvolvedores originais do software." #: src/safety-calculator.c:332 msgid "The developer of this app has been verified to be who they say they are" msgstr "O desenvolvedor desta app foi verificado como sendo quem realmente diz" #: src/safety-calculator.c:341 #, fuzzy msgid "Proprietary Code" msgstr "Código Proprietário" #: src/safety-calculator.c:342 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "O código-fonte não é público, pelo que não pode ser verificado nem testado " "por terceiros e poderá ser inseguro" #: src/safety-calculator.c:352 msgid "Auditable Code" msgstr "Código-fonte auditável" #: src/safety-calculator.c:353 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Este código-fonte é público e pode ser testado e verificado de forma " "independente o que ajuda a verificar se esta app é segura" #: src/safety-calculator.c:493 #, c-format msgid "Use the %s System Service" msgstr "Usa o serviço de sistema %s" #: src/safety-calculator.c:497 #, c-format msgid "Use the %s Session Service" msgstr "Usa o serviço de sessão %s" #: src/safety-calculator.c:501 #, c-format msgid "Use the %s Service" msgstr "Usa o serviço %s" #: src/safety-calculator.c:511 msgid "Can see the non-portal service" msgstr "Pode ver o serviço fora do portal" #: src/safety-calculator.c:513 msgid "Can talk to the non-portal service" msgstr "Pode comunicar com o serviço fora do portal" #: src/safety-calculator.c:515 msgid "Can own the non-portal service" msgstr "Pode ser proprietário do serviço fora do portal" #: src/safety-calculator.c:530 #, fuzzy msgid "Global Menu Integration" msgstr "Integração com o menu global" #: src/safety-calculator.c:531 msgid "Can display its menus in a global menu bar" msgstr "Pode mostrar os seus próprios menus na barra de menu global" #: src/safety-calculator.c:536 msgid "KDE Settings Integration" msgstr "Integração com as definições do KDE" #: src/safety-calculator.c:537 msgid "Can detect when KDE desktop settings change" msgstr "Pode detectar quando definições do KDE são alteradas" #: src/safety-calculator.c:542 msgid "KDE Global Settings" msgstr "Definições globais do KDE" #: src/safety-calculator.c:543 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Pode ler personalizações do KDE como fontes ou tema de cores" #: src/safety-calculator.c:548 #, fuzzy msgid "Secret Storage Service" msgstr "Serviço de armazenamento secreto" #: src/safety-calculator.c:549 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "Pode guardar e obter as suas próprias passwords através do chaveiro do sistema" #: src/safety-calculator.c:554 msgid "Desktop Notifications Service" msgstr "Notificações do ambiente de trabalho" #: src/safety-calculator.c:555 msgid "Can send desktop notifications" msgstr "Pode enviar notificações de ambiente de trabalho" #: src/safety-calculator.c:561 msgid "System Tray Integration" msgstr "Integração com a barra de estado" #: src/safety-calculator.c:562 msgid "Can display an icon in the system tray" msgstr "Pode mostrar um ícone na barra de estado" #: src/safety-calculator.c:567 msgid "KDE Connect Integration" msgstr "Integração KDE Connect" #: src/safety-calculator.c:568 msgid "Can interact with devices paired via KDE Connect" msgstr "Pode interagir com dispositivos via KDE Connect" #: src/bz-safety-dialog.blp:7 msgid "Safety" msgstr "Segurança" #: src/bz-safety-dialog.blp:50 msgid "Details" msgstr "Detalhes" #: src/bz-safety-dialog.blp:53 msgid "License" msgstr "Licença" #: src/bz-safety-dialog.blp:63 msgid "App ID" msgstr "ID da app" #: src/bz-safety-dialog.blp:73 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:101 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Esta app usa uma versão de software de desenvolvimento (SDK) desatualizada e " "pode por isso conter problemas ou vulnerabilidades de segurança que nunca " "serão resolvidas." #: src/bz-safety-dialog.c:227 #, c-format msgid "%s is Safe" msgstr "%s é seguro(a)" #: src/bz-safety-dialog.c:232 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s tem permissões inseguras" #: src/bz-safety-dialog.c:237 #, c-format msgid "%s is Probably Safe" msgstr "%s é provavelmente seguro(a)" #: src/bz-safety-dialog.c:242 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s poderá ser inseguro(a)" #: src/bz-safety-dialog.c:247 #, c-format msgid "%s is Unsafe" msgstr "%s é inseguro(a)" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "Capturas de ecrã" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "Captura anterior" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "Captura seguinte" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "Copiar imagem" #: src/bz-screenshot-page.blp:147 msgid "Reset View" msgstr "Redefinir vista" #: src/bz-screenshot-page.blp:158 msgid "Zoom Out" msgstr "Afastar o zoom" #: src/bz-screenshot-page.blp:168 msgid "Zoom In" msgstr "Aproximar o zoom" #: src/bz-screenshots-carousel.blp:5 msgid "Screenshots Carousel" msgstr "Carrossel de capturas de ecrã" #: src/bz-screenshots-carousel.blp:103 msgid "Open Screenshot Viewer" msgstr "Abrir o visualizador de capturas de ecrã" #: src/bz-search-widget.blp:57 msgid "Search Apps, Games, Software" msgstr "Procure apps, jogos e software" #: src/bz-search-widget.blp:96 #, fuzzy msgid "Categories Unavailable" msgstr "Categorias não disponíveis" #: src/bz-search-widget.blp:97 msgid "Search for apps using the search bar above." msgstr "Pesquise por apps usando a barra de pesquisa acima." #: src/bz-search-widget.blp:181 #, fuzzy msgid "No Applications Found" msgstr "Não foram encontradas aplicações" #: src/bz-search-widget.c:241 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Sem resultados para \"%s\" no Flathub" #: src/bz-share-list.c:64 msgid "Copied!" msgstr "Copiado!" #: src/bz-share-list.c:116 #, fuzzy msgid "Copy Link" msgstr "Copiar a ligação" #: src/bz-share-list.c:127 msgid "Open Link" msgstr "Abrir a ligação" #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "Linha do tempo" #: src/bz-stats-dialog.blp:46 #, fuzzy msgid "Installs:" msgstr "Instalações:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Mundo" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:124 #, c-format msgid "%.2fM Total Installs" msgstr "%.2f milhões de instalações totais" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:127 #, c-format msgid "%.2fK Total Installs" msgstr "%.2f mil instalações totais" #: src/bz-stats-dialog.c:129 #, c-format msgid "%'d Total Installs" msgstr "%'d instalações totais" #: src/bz-tag-list.c:96 #, fuzzy msgid "No Results Found" msgstr "Sem Resultados" #: src/bz-tag-list.c:108 #, c-format msgid "Apps Tagged \"%s\"" msgstr "Apps etiquetadas com \"%s\"" #: src/bz-tag-list.c:124 #, fuzzy msgid "Search failed" msgstr "A pesquisa falhou" #: src/bz-transaction-dialog.c:166 msgid "Keep Data" msgstr "Manter dados" #: src/bz-transaction-dialog.c:167 msgid "Allow restoring settings and content" msgstr "Permitir o restauro de definições e conteúdo" #: src/bz-transaction-dialog.c:176 msgid "Delete Data" msgstr "Apagar dados" #: src/bz-transaction-dialog.c:177 msgid "Permanently remove app data to save space" msgstr "Remover permanentemente todos os dados da app para poupar espaço" #: src/bz-transaction-dialog.c:202 #, fuzzy, c-format msgid "Install %s?" msgstr "Instalar %s ?" #: src/bz-transaction-dialog.c:207 #, fuzzy msgid "" "Select which version to install. May install additional shared components" msgstr "Poderá instalar componentes adicionais" #: src/bz-transaction-dialog.c:209 msgid "May install additional shared components" msgstr "Poderá instalar componentes adicionais" #: src/bz-transaction-dialog.c:230 #, fuzzy, c-format msgid "Remove %s?" msgstr "Remover %s ?" #: src/bz-transaction-dialog.c:233 msgid "Select which version to remove." msgstr "Selecione qual versão a remover." #: src/bz-transaction-dialog.c:235 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Não será mais possível usar %s após ser desinstalado(a)." #: src/bz-transaction-dialog.c:258 #, c-format msgid "“%s†is High Risk" msgstr "“%s†é de alto risco" #: src/bz-transaction-dialog.c:262 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Esta app tem acesso completo de leitura e escrita ao sistema, incluindo " "<b>todos os seus ficheiros, históricos, passes guardadas</b>, e muito mais. " "Também tem acesso à internet, pelo que poderá enviar estes e quaisquer dados " "para terceiros.\n" "\n" "Por a app ser proprietária de código fechado, não se pode verificar o que é " "que a mesma faz com estas permissões e estes dados." #: src/bz-transaction-dialog.c:271 #, fuzzy msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Esta app tem acesso completo de leitura e escrita ao sistema, incluindo " "<b>todos os seus ficheiros, históricos, passes guardadas</b>, e muito mais. " "Também tem acesso à internet, pelo que poderá enviar estes e quaisquer dados " "para terceiros.\n" "\n" "Por a app ser proprietária de código fechado, não se pode verificar o que é " "que a mesma faz com estas permissões e estes dados." #: src/bz-transaction-dialog.c:287 #, fuzzy msgid "Install Anyway" msgstr "Instalar mesmo assim" #: src/bz-transaction-dialog.c:566 msgid "All apps are already installed" msgstr "As apps já estão todas instaladas" #: src/bz-transaction-dialog.c:568 msgid "OK" msgstr "OK" #: src/bz-transaction-dialog.c:584 #, fuzzy, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Instalar %s ?" msgstr[1] "Instalar %s ?" #: src/bz-transaction-dialog.c:592 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "Os seguintes itens serão instalados. Componentes partilhados adicionais " "também poderão ser instalados, conforme necessário." #: src/bz-transaction-dialog.c:593 #, c-format msgid "%d addons will be installed." msgstr "%d extensão(ões) será(ão) instalada(s)." #: src/bz-transaction-dialog.c:594 #, fuzzy msgid "Additionally, addons will be installed." msgstr "" "%d serviços de execução (runtimes) e/ou extensões relacionados(as) também " "serão atualizados(as)." #: src/bz-transaction-manager.c:1150 #, c-format msgid "Finished in %.02f seconds" msgstr "Concluído em %.02f segundos" #: src/bz-transaction-view.blp:95 msgid "App Add-on" msgstr "Extras da app" #: src/bz-transaction-view.blp:120 msgid "Runtime" msgstr "Serviço de execução (Runtime)" #: src/bz-transaction-view.blp:146 src/bz-transaction-view.blp:172 #, fuzzy msgid "Install Size" msgstr "Tamanho da instalação" #: src/bz-transaction-view.blp:187 src/bz-transaction-view.blp:238 #: src/bz-transaction-view.blp:264 src/bz-transaction.c:342 msgid "Pending" msgstr "Pendente" #: src/bz-transaction-view.blp:199 msgid "Ongoing" msgstr "Em andamento" #: src/bz-transaction-view.blp:212 msgid "Finished" msgstr "Terminado" #: src/bz-transaction-view.blp:251 msgid "Update" msgstr "Atualizar" #: src/bz-transaction-view.c:135 #, c-format msgid "Transferred %s so far" msgstr "%s transferidos até agora" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Gerir Dados Obsoletos(as)" #: src/bz-user-data-page.blp:55 msgid "No User Data found" msgstr "Não foram encontrados dados de utilizador" #: src/bz-user-data-page.blp:60 msgid "User Data" msgstr "Dados de utilizador" #: src/bz-user-data-tile.c:144 #, fuzzy, c-format msgid "Trashed User Data for %s" msgstr "Removido os dados de utilizador de %s" #: src/bz-user-data-tile.blp:74 #, fuzzy msgid "Trash User Data" msgstr "Dados de utilizador" #: src/bz-window.blp:107 msgid "Tasks" msgstr "Tarefas" #: src/bz-window.blp:163 msgid "Stop Active Tasks" msgstr "Parar as tarefas ativas" #: src/bz-window.blp:171 msgid "Clear History" msgstr "Limpar o histórico de tarefas" #: src/bz-window.blp:187 msgid "No Tasks Yet" msgstr "Ainda sem tarefas" #: src/bz-window.blp:257 #, fuzzy msgid "Refreshing Store Content" msgstr "Recarregar o conteúdo da loja" #: src/bz-window.blp:273 msgid "Curated" msgstr "Recomendadas" #: src/bz-window.blp:286 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:435 msgid "No background tasks!" msgstr "Sem tarefas de fundo!" #: src/bz-window.blp:493 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Tem uma conexão à internet ativa mas está a ver uma versão anterior em cache " "do Flathub" #: src/bz-window.blp:568 #, fuzzy msgid "_Login with Flathub" msgstr "_Entrar com uma conta no Flathub" #: src/bz-window.blp:574 msgid "_Manage Leftover User Data" msgstr "_Gerir dados deixados para trás" #: src/bz-window.blp:579 msgid "_Synchronize Remotes" msgstr "_Sincronizar os repositórios" #: src/bz-window.blp:620 msgid "Log Out" msgstr "Terminar sessão" #: src/bz-window.c:440 #, fuzzy, c-format msgid "%d Update Available" msgid_plural "%d Updates Available" msgstr[0] "%d atualização disponível" msgstr[1] "%d atualizações disponíveis" #: src/bz-window.c:734 msgid "You can't remove Bazaar from Bazaar!" msgstr "Não pode remover o Bazaar pelo Bazaar!" #: src/bz-window.c:871 msgid "Updates Are Available" msgstr "Estão Disponíveis Atualizações" #: src/bz-window.c:872 msgid "" "The following applications are eligible for updates. Would you like to " "install them?" msgstr "" "As seguintes aplicações têm atualizações disponíveis. Deseja instalá-las " "agora?" #: src/bz-window.c:873 #, c-format msgid "" "%d runtimes and/or addons are eligible for updates. Would you like to " "install them?" msgstr "" "Existe(m) %d serviços de execução (runtimes) e/ou extensões com atualizações " "disponíveis. Deseja atualizá-los(as) agora?" #: src/bz-window.c:874 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "" "%d serviços de execução (runtimes) e/ou extensões relacionados(as) também " "serão atualizados(as)." #: src/bz-window.c:876 #, fuzzy msgid "Update Now" msgstr "Atualizar agora" #: src/bz-window.c:1036 src/bz-window.c:1086 msgid "Can't do that right now!" msgstr "Não é possível fazer isso neste momento!" #: src/bz-window.c:1161 msgid "Resume Current Tasks" msgstr "Retomar as tarefas atuais" #: src/bz-window.c:1167 msgid "Pause Current Tasks" msgstr "Pausar as tarefas atuais" #: src/bz-world-map.c:587 #, fuzzy msgid "Downloads" msgstr "Transferir" #: src/gtk/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: src/gtk/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "Abrir a Janela de Pesquisa" #: src/gtk/shortcuts-dialog.blp:14 #, fuzzy msgctxt "shortcut window" msgid "Open Preferences" msgstr "Abrir as definições" #: src/gtk/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Synchronize Remotes" msgstr "Sincronizar os repositórios" #: src/gtk/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "Alternar o Gestor de Transações" #: src/gtk/shortcuts-dialog.blp:29 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar os Atalhos" #: src/gtk/shortcuts-dialog.blp:34 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #~ msgid "Hide EOL Entries" #~ msgstr "Ocultar apps em fim de vida (EOL)" #~ msgid "Hide EOL entries and entries depending on them" #~ msgstr "Ocultar apps em fim de vida (EOL) e items que dependam destas" #~ msgid "Only Show Free Software" #~ msgstr "Mostrar apenas software livre" #, fuzzy #~ msgid "Hide proprietary software" #~ msgstr "Ocultar software proprietário" #~ msgid "Show Only Flathub Content" #~ msgstr "Mostrar apenas conteúdo do Flathub" #, fuzzy #~ msgid "Hide applications which do not originate from Flathub" #~ msgstr "Ocultar apps que não sejam do Flathub" #, fuzzy #~ msgid "Show Only Verified Content" #~ msgstr "Mostrar apenas apps verificadas" #~ msgid "Hide applications which are not verified on Flathub" #~ msgstr "Ocultar apps que não estejam verificadas no Flathub" #~ msgid "Debounce Search Inputs" #~ msgstr "Suavizar a entrar de texto na pesquisa" #, fuzzy #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "Atrasar a entrada de texto para evitar resultados instantâneos" #~ msgid "Global Progress Bar Theme" #~ msgstr "Tema da barra de progresso global" #~ msgid "Describes the look of the global progress bar" #~ msgstr "Descreve o aspeto da barra de progresso global" #~ msgid "Saved Window Dimensions" #~ msgstr "Guardar dimensões da janela" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "As dimensões a serem usadas por novas janelas do Bazaar" #~ msgid "?" #~ msgstr "?" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "Esta funcionalidade está atualmente desativada. É recomendado que " #~ "transfira e instale a aplicação Flatseal para gerir as permissões das " #~ "aplicações Flatpak." #~ msgid "Entry Inspector" #~ msgstr "Inspetor de Itens" #~ msgid "Serialize" #~ msgstr "Serializar" #~ msgid "Convert to JSON" #~ msgstr "Converter para JSON" #~ msgid "More Mobile apps" #~ msgstr "Mais apps mobile" #, fuzzy #~ msgctxt "Project URL Type" #~ msgid "Flathub Page" #~ msgstr "Página do Flathub" #, fuzzy #~ msgctxt "Project URL Type" #~ msgid "Project Website" #~ msgstr "Página do Projeto" #~ msgctxt "Project URL Type" #~ msgid "Issue Tracker" #~ msgstr "Issue Tracker" #~ msgctxt "Project URL Type" #~ msgid "FAQ" #~ msgstr "Perguntas Frequentes (FAQ)" #~ msgctxt "Project URL Type" #~ msgid "Help" #~ msgstr "Ajuda" #~ msgctxt "Project URL Type" #~ msgid "Donate" #~ msgstr "Donativos" #~ msgctxt "Project URL Type" #~ msgid "Translate" #~ msgstr "Traduções" #, fuzzy #~ msgctxt "Project URL Type" #~ msgid "Contact" #~ msgstr "Contacto" #~ msgctxt "Project URL Type" #~ msgid "Source Code" #~ msgstr "Código-fonte" #~ msgctxt "Project URL Type" #~ msgid "Contribute" #~ msgstr "Contruibuir" #~ msgid "Size" #~ msgstr "Tamanho" #~ msgid "Bazaar Inspector" #~ msgstr "Inspector do Bazaar" #~ msgid "Background Task Info:" #~ msgstr "Info da tarefa em plano de fundo:" #~ msgid "Enable Global Debug Mode" #~ msgstr "Ligar o Modo de Depuração Global" #~ msgid "Active Blocklists" #~ msgstr "Listas de bloqueio ativas" #~ msgid "Active Curated-Configs" #~ msgstr "Configurações ativas de recomendações de apps" #~ msgid "All Entry Groups" #~ msgstr "Todos os grupos de itens" #~ msgid "Filter..." #~ msgstr "Filtrar..." #~ msgid "Decache and Inspect" #~ msgstr "Retirar da cache e inspeccionar" #~ msgid "No Flatpaks Installed" #~ msgstr "Não Existem Flatpaks Instalados" #~ msgid "Connect with Flathub" #~ msgstr "Conectar com o Flathub" #, fuzzy #~ msgid "Remove User Data" #~ msgstr "Remover os dados de utilizador" #~ msgid "Inspect UI Entry" #~ msgstr "Inspecionar o item de UI" #~ msgid "All Debug Actions" #~ msgstr "Todas as ações de depuração" #, fuzzy #~ msgid "Open Bazaar Inspector" #~ msgstr "Abrir o inspector do Bazaar" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "A funcionalidade de verificar e instalar ficheiros/conjuntos .flatpak " #~ "está a caminho! Enquanto não está disponível, experimente executar o " #~ "comando\n" #~ "\n" #~ "flatpak install --bundle <nome_do_ficheiro>.flatpak\n" #~ "\n" #~ "a partir do terminal." #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u transferências" #~ msgid "Show Git Forge Star Counts" #~ msgstr "Ver o total de estrelas do Git Forge" #~ msgid "" #~ "Whether to attempt to detect and show \"star counts\" for projects in the " #~ "full view" #~ msgstr "" #~ "Tentar detectar e mostrar a contagem de estrelas para projetos na vista " #~ "completa" #~ msgid "Hide proprietary software when searching" #~ msgstr "Ocultar software proprietário ao pesquisar" #~ msgid "Filter search results to only show applications available on Flathub" #~ msgstr "" #~ "Mostrar apenas resultados de pesquisa para aplicações disponíveis no " #~ "Flathub" #~ msgid "Of the size of human DNA" #~ msgstr "Do tamanho do ADN humano" #~ msgid "3 billion base pairs" #~ msgstr "3 mil milhões de pares-base" #~ msgid "Of the Linux Kernel" #~ msgstr "Do Kernel do Linux" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "Do computador guia Apollo 11" #~ msgid "Total ROM and RAM" #~ msgstr "Memória ROM e RAM total" #~ msgid "Of the original Super Mario Bros" #~ msgstr "Do Super Mario Bros original" #~ msgid "On the NES" #~ msgstr "Na consola NES" #~ msgid "Of the size of Wikipedia" #~ msgstr "Do tamanho da Wikipedia" #~ msgid "Without any media" #~ msgstr "Sem nenhuma multimédia" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Azenyr" #~ msgstr "Eduardo Correia (Azenyr)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore (Lumaeris)" #~ msgstr "Jill Fiore" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #~ msgid "Constructing Flatpak instance..." #~ msgstr "A construir a instância Flatpak..." #~ msgid "Reusing last Flatpak instance..." #~ msgstr "A reutilizar a última instância Flatpak..." #~ msgid "Flathub is not registered on this system" #~ msgstr "O Flathub não está configurado neste sistema" #~ msgid "" #~ "Would you like to add Flathub as a remote? If you decline, the Flathub " #~ "page will not be available. You can change this later." #~ msgstr "" #~ "Gostaria de adicionar o repositório Flathub a este sistema? Se recusar, a " #~ "página do Flathub ficará indisponível. Pode alterar esta escolha mais " #~ "tarde." #~ msgid "Add Flathub" #~ msgstr "Adicionar o Flathub" #, c-format #~ msgid "Identifying installed entries..." #~ msgstr "A identificar conteúdo instalado..." #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "" #~ "A iniciar a obtenção de dados dos repositórios enquanto se referencia %d " #~ "lista(s) de bloqueio..." #, c-format #~ msgid "%'d of %'d" #~ msgstr "%'d de %'d" #, c-format #~ msgid "Waiting for background indexing tasks to catch up..." #~ msgstr "" #~ "A esperar que as tarefas de indexação a decorrer de fundo avancem..." #, c-format #~ msgid "Completed initialization in %0.2f seconds" #~ msgstr "Inicialização terminada em %0.2f segundos" #~ msgid "Repository Star Count" #~ msgstr "Contagem de estrelas do repositório" #, c-format #~ msgid "%.2f M" #~ msgstr "%.2f M" #, c-format #~ msgid "%.2f K" #~ msgstr "%.2f K" #~ msgid "Run this application" #~ msgstr "Executar a aplicação" #~ msgid "Run" #~ msgstr "Executar" #~ msgid "View Store Page" #~ msgstr "Ver a página na loja" #~ msgid "Application Details" #~ msgstr "Detalhes da aplicação" #~ msgid "Display Star Count" #~ msgstr "Mostrar a contagem de estrelas" #~ msgid "Show the star count of an application's source code repository" #~ msgstr "Mostrar o total de estrelas do repositório do código da aplicação" #~ msgid "" #~ "Bazaar can fetch and display the star count from an application's source " #~ "code repository on a remote Git forge. \n" #~ " For projects on GitHub, rate limits may cause them not to appear." #~ msgstr "" #~ "O Bazaar pode obter e mostrar a contagem de estrelas do respetivo " #~ "repositório Git de código fonte de uma aplicação. \n" #~ "Para projetos do Github, poderão ser aplicados limites de pedidos pelo " #~ "mesmo que poderão fazer com que as estrelas deixem de aparecer " #~ "temporariamente." #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "Recarregar" #~ msgid "Show Animated Background" #~ msgstr "Mostrar Imagem de Fundo Animada" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "Mostrar o ícone de imagem de fundo animada na página inicial" #~ msgid "Calligraphy application page" #~ msgstr "Página da aplicação Calligraphy" #~ msgid "Download graph for Blender" #~ msgstr "Gráfico de transferências para o Blender" #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "" #~ "Foram recebidos %'d itens de um total de %'d (%0.1f segundos decorridos)" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "O Bazaar não tem uma definição para conteúdo recomendado. Contacte os " #~ "canais de suporte do seu sistema operativo para mais ajuda. " #~ msgid "Apps Of The Week" #~ msgstr "Aplicações da Semana" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "" #~ "Número de transferências dos últimos 30 dias. Clique para ver as " #~ "estatísticas desta aplicação." #~ msgid "Remote repo name" #~ msgstr "Nome do repositório remoto" #, c-format #~ msgid "Released %x" #~ msgstr "Lançado a %x" #~ msgid "How the application looks" #~ msgstr "A aparência da aplicação" #~ msgid "Appearance" #~ msgstr "Aparência" #~ msgid "Show animated background" #~ msgstr "Mostrar imagem de fundo animada" #~ msgid "Type to filter" #~ msgstr "Escreva para procurar" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Excluir da pesquisa resultados com licenças proprietárias" #~ msgid "Advanced" #~ msgstr "Avançado" #~ msgid "Share" #~ msgstr "Partilhar" #~ msgid "Open this link externally" #~ msgstr "Abrir a ligação externamente" #~ msgid "Downloads Over Time" #~ msgstr "Transferências ao Longo do Tempo" #~ msgid "Minimize Lower Bound" #~ msgstr "Minimizar o limite inferior" #~ msgid "Maximize Upper Bound" #~ msgstr "Maximizar o limite superior" #~ msgid "Installing" #~ msgstr "A Instalar" #~ msgid "Removing" #~ msgstr "A Remover" #~ msgid "Transactions Will Appear Here" #~ msgstr "As Transações Irão Aparecer Aqui" #~ msgid "Halt the execution of transactions" #~ msgstr "Interromper a execução das transações" #~ msgid "Clear all finished transactions" #~ msgstr "Limpar as transações finalizadas" #~ msgid "Browse" #~ msgstr "Explorar" #~ msgid "App View" #~ msgstr "Vista de Aplicação" #~ msgid "Go Back" #~ msgstr "Voltar" #~ msgid "View the latest on Flathub" #~ msgstr "Ver as novidades do Flathub" #~ msgid "Up to date!" #~ msgstr "Atualizado!" #~ msgid "Confirm Action" #~ msgstr "Confirmar Ação" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Irá a remover a seguinte aplicação Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Deseja continuar?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Irá instalar a seguinte aplicação Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Deseja continuar?" #~ msgid "Resume the execution of transactions" #~ msgstr "Retomar a execução das transações" #~ msgid "Pause the execution of transactions" #~ msgstr "Colocar a execução das transações em pausa" #~ msgid "Keep the summary shorter, between 10 and 35 characters" #~ msgstr "Mantenha o resumo curto, entre 10 e 35 caracteres" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Janela principal do Bazaar a mostrar o Blender" #~ msgid "Match using regular expressions" #~ msgstr "Corresponder através de expressões regulares" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "" #~ "Ocultar filtragem e ordenação através de um efeito visual de transição " #~ "crossfade" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/pt_BR.po���������������������������������������������������������������0000664�0000000�0000000�00000335424�15240005042�0017335�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Portuguese translations for bazaar package # Traduções em português brasileiro para o pacote bazaar. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Rin Koito <mouichidouryuuseigun@gmail.com>, 2025-2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-21 09:59-0400\n" "PO-Revision-Date: 2026-06-21 14:39-0400\n" "Last-Translator: Rin Koito <mouichidouryuuseigun@gmail.com>\n" "Language-Team: Brazilian Portuguese\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Gtranslator 50.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:46 #: src/bz-window.blp:202 src/bz-window.c:373 src/bz-window.c:374 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "Adicione, remova ou atualize flatpaks neste computador" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;Sistema;GerenciadorDePacotes;Discover;Flatpak;Aplicativos;Loja;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "Nova Janela" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Descobrir e instalar aplicativos" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Uma loja de aplicativos rápida e moderna para Linux, focada em descobrir e " "instalar aplicativos e extensões Flatpak, particularmente do Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Enfileire múltiplas instalações e continuar navegando" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Veja permissões de aplicativos facilmente" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Faça login com o Flathub para ver e gerenciar seus favoritos" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Pesquise aplicativos diretamente do GNOME Shell" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:786 msgid "The Bazaar Contributors" msgstr "Contribuidores do Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "A página inicial exibindo aplicativos do Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Exibir página do app" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Página da Biblioteca" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Página de Pesquisa" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Página de Catergorias" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Parou de Receber Atualizações" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Desinstalar" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Instalar" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Gerenciar Extensões" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Sem Extensões Visíveis" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "As suas preferências de filtro atuais estão escondendo todos as extensões " "conhecidas. Tente ajustá-las" #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Página de Extensões" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "Downloads/Mês" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Parou de receber atualizações críticas" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Esta extensão utiliza um runtime que não recebe mais atualizações ou " "atualizações de segurança. Talvez se torne insegura para uso." #: src/bz-addons-dialog.c:333 #, c-format msgid "Add-on for %s" msgstr "Extensão para %s" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show Less" msgstr "Mostrar Menos" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show More" msgstr "Mostrar Mais" #: src/bz-addons-dialog.c:397 msgid "Download Stats" msgstr "Estatísticas de Download" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "Classificação Indicativa" # https://pt.wikipedia.org/wiki/Sistema_de_Classifica%C3%A7%C3%A3o_Indicativa_Brasileiro #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Violência Caricata" # https://pt.wikipedia.org/wiki/Sistema_de_Classifica%C3%A7%C3%A3o_Indicativa_Brasileiro #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Sem informações acerca de violência caricata" # https://pt.wikipedia.org/wiki/Sistema_de_Classifica%C3%A7%C3%A3o_Indicativa_Brasileiro #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Violência Fantasiosa" # https://pt.wikipedia.org/wiki/Sistema_de_Classifica%C3%A7%C3%A3o_Indicativa_Brasileiro #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Sem informações acerca de violência fantasiosa" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Violência Realista" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Sem informações acerca de violência realista" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Violência com Presença de Sangue" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Sem informações acerca de violência com presença de sangue" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Violência Sexual" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Sem informações acerca de violência sexual" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Ãlcool" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Sem informações acerca de referências à álcool" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Narcóticos" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Sem informações acerca de referências a drogas ilícitas" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tabaco" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Sem informações acerca de referências a produtos de tabaco" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nudez" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Sem informações acerca de nenhum tipo de nudez" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Temas Sexuais" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "Sem informações acerca de referências ou retratações a nenhum tipo de " "natureza sexual" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Profanidade" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Sem informações acerca de nenhum tipo de profanidade" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Humor Inapropriado" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Sem informações acerca de humor inapropriado" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Discriminação" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Sem informações acerca de nenhum tipo de linguagem discriminatória" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Propaganda" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Sem informações acerca de nenhum tipo de propaganda" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Apostas ou Jogos de Azar" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Sem informações acerca de nenhum tipo de apostas ou jogos de azar" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Compras" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Sem informações acerca de possibilidades de gastar dinheiro" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Mensagens Entre Usuários" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Sem informações acerca de formas de se comunicar com outros usuários" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Comunicações de Ãudio Entre Usuários" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "" "Sem informações acerca de formas de se comunicar por áudio com outros " "usuários" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Detalhes de Contato" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Sem informações acerca de compartilhamento de nomes de usuário de redes " "sociais ou endereços de e-mail" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Informações de Identidade" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Sem informações acerca de compartilhamento de informações de usuário com " "terceiros" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Compartilhamento de Localização" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Sem informações acerca de compartilhamento de localização com outros usuários" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostituição" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Sem informações acerca de referências a prostituição" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Adultério" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Sem informações acerca de referências a adultério" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Personagens Sexualizados" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Sem informações acerca de personagens sexualizados" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Profanação" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Sem informações acerca de referências a profanação" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Restos Humanos" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Sem informações acerca de restos humanos mortos visíveis" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Escravidão" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Sem informações acerca de referências a escravidão" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Não inclui referências a drogas" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "" "Não inclui linguagem de teor ofensivo, profanidade e nenhum outro tipo de " "linguagem inapropriada" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Não inclui anúncios ou transações monetárias" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Não inclui sexo ou nudez" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Não inclui funcionalidade não controlada de comunicação" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Não inclui violência" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Drogas" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Linguagem Imprópria" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Dinheiro" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Social" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Violência" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Livre" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s possui classificação indicativa desconhecida" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s é adequado para todos" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s é adequado para crianças pequenas" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s é adequado para crianças" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s é adequado para adolecentes" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s é adequado para adultos" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s é adequado para %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Pasta do Sistema %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Subpasta da Pasta pessoal %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Pastas host do sistema" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Configurações host do sistema de /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Subpasta do Desktop %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Pasta do Desktop" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Subpasta de Documentos %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Pasta de Documentos" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Subpasta de Músicas %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Pasta de Músicas" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Subpasta de images %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Pasta de imagens" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Subpasta de Compartilhamento Público %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Pasta de Compartilhamento Público" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Subpasta de Vídeos %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Pasta de Vídeos" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Subpasta de Modelos %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Pasta de Modelos" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Subpasta de cache de usuário %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Pasta de cache de usuário" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Subpasta de configuração de usuário %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Pasta de configuração de usuário" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Subpasta de dados de usuário %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Pasta de dados de usuário" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Subpasta de runtime de usuário %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Pasta de runtime de usuário" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Acesso ao sistema de arquivos para %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Diretório do sistema de arquivos desconhecido" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "Tamanho do Download" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "Tamanho Instalado" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "Quantidade a ser baixada da internet" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "Tamanho no Disco" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "Abrir pasta de dados de usuário" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "Seus Dados de Usuário" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "Caches, configurações e outros dados do app" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "Cache" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "Dados de cache temporários" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "Limpar Cache" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Tamanho do Runtime Instalado" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Tamanho de Download do Runtime" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "N/A" #: src/bz-app-size-dialog.c:226 msgid "App Size" msgstr "Tamanho do App" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Verificado" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 #: src/bz-releases-list.c:206 msgid "Installed" msgstr "Instalado" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:789 msgid "translator-credits" msgstr "" "João Victor <victorsouzaleal@gmail.com>, 2025\n" "Rin Koito <mouichidouryuuseigun@gmail.com>, 2025" #: src/bz-application.c:799 msgid "Special Thanks" msgstr "Agradecimentos Especiais" #: src/bz-application.c:857 msgid "Logged Out Successfully!" msgstr "Desconectado com Sucesso!" #: src/bz-application.c:995 msgid "Performing setup…" msgstr "Realizando configuração..." #: src/bz-application.c:1087 msgid "Set Up System Flathub?" msgstr "Configurar Flathub do Sistema?" #: src/bz-application.c:1090 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "O repositório Flathub do sistema não está configurado. O Bazaar precisa que " "o Flahub esteja configurado na instalação Flatpak do sistema para navegar e " "instalar aplicações.\n" "\n" "Você ainda pode utilizar o Bazaar para navegar e remover aplicativos já " "instalados." #: src/bz-application.c:1097 msgid "Set Up Flathub?" msgstr "Configurar Flathub?" #: src/bz-application.c:1100 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub não configurado neste sistema. Você não poderá navegar e instalar " "aplicativos no Bazaar se estiver indisponível.\n" "\n" "Você ainda pode utilizar o Bazaar para navegador e remover aplicativos já " "instalados." #: src/bz-application.c:1106 msgid "Later" msgstr "Depois" #: src/bz-application.c:1107 msgid "Set Up Flathub" msgstr "Configurando Flathub" #: src/bz-application.c:1626 msgid "A backend error occurred" msgstr "Ocorreu um erro no backend" #: src/bz-application.c:1826 src/bz-application.c:4006 msgid "Refreshing…" msgstr "Atualizando..." #: src/bz-application.c:1990 src/bz-application.c:4004 #, c-format msgid "Loading %d apps…" msgstr "Carregando %d aplicativos..." #: src/bz-application.c:2043 msgid "Failed to open file" msgstr "Falha ao abrir arquivo" #: src/bz-application.c:2141 msgid "An initialization error occurred" msgstr "Ocorreu Um Erro de Iniciazalição" #: src/bz-application.c:2535 msgid "Checking for updates…" msgstr "Procurando por atualizações..." #: src/bz-application.c:2591 msgid "Failed to check for updates" msgstr "Falha ao procurar por atualizações" #: src/bz-application.c:3717 msgid "Malformed Link" msgstr "Link Malformado" #: src/bz-application.c:3718 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "O link usado para abrir este aplicativo possui capitalização incorreta e " "pode parar de funcionar no futuro.\n" "\n" "Isto costuma ocorrer quando o KRunner está enviando incorretamente IDs de " "aplicativos" #: src/bz-application.c:3726 msgid "Could not find app" msgstr "Não foi possível encontrar o app" #: src/bz-application.c:3757 msgid "Failed to load metainfo" msgstr "Falha ao carregar metainfo" #: src/bz-application.c:4008 msgid "Writing to cache…" msgstr "Escrevendo no cache" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Mostrar Tudo" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Todos \"%s\"" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d Aplicativos" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Instalação de Bundle" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Dependências adicionais podem ocupar mais espaço" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Instalar este aplicativo pode exigir adicionar uma nova fonte de software. " "Outros aplicativos desta fonte aparecerão no Bazaar.\n" "\n" "Somente adicione esta fonte se você tem certeza de que confia nela." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "Instalado com Sucesso!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Abrir" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Mostrar Detalhes do App" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Já Instalado" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Falha ao Instalar" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Tamanho de instalação desconhecido" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Cerca de %s para instalar" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Sem permissões especiais" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d downloads no último mês" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s runtime" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Download" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Informação sobre o tamanho não disponível" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Tamanho do download de %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Todas as idades" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Classificação indicativa indisponível" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Adequado para todas as idades" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Adequado para idades de %d anos ou mais" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "Desconhecido" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Software livre sob a licença %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Software Livre" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Software Proprietário" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Licença Especial: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Software Livre" #: src/context-tile-callbacks.c:288 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "Proprietário" #: src/context-tile-callbacks.c:290 src/bz-license-dialog.c:135 msgid "Special License" msgstr "Licença Especial" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "Adaptativo" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "Somente Desktop" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "Funciona em desktops, tablets e celulares" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Talvez não funcione em dispositivos móveis" #: src/context-tile-callbacks.c:400 src/bz-safety-dialog.blp:79 msgid "Safe" msgstr "Seguro" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Baixo Risco" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Médio Risco" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Alto Risco" #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "Vazio" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "Sem Recomendações" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Não há informação curada provida para este sistema. Você ainda pode navegar " "por aplicativos no Flathub" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "Navegar Flathub" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 msgid "Offline" msgstr "Offline" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Navegador" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Não Verificado" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Informações sobre desenvolveres não está disponível" #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "A propriedade do ID do aplicativo %s não foi verificada e talvez seja um " "pacote da comunidade." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "A propriedade do ID do aplicativo %s foi manualmente verificada pelo time do " "Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "A propriedade do ID do aplicativo %1$s foi verificada por <b>%2$s</b> em " "<b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "A propriedade do ID do aplicativo %1$s foi verificada utilizando %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "A propriedade do ID do aplicativo %s foi verificada." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Notas de Lançamento Completas" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "Esta versão do Bazaar foi possível graças a usuários como você!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Eu amo fazer o Bazaar, mas eu não consigo fazê-lo sem ajuda. Ajude o " "desenvolvimento doando para o projeto no Ko-Fi:" #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Doar para o Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "O Que Tem de Novo na %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Lançado em %B %-e, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Escolha uma Instalação" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Você tem várias versões deste aplicativo instaladas. Com qual você gostaria " "de prosseguir?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Cancelar" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Somente Para Este Usuário" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "este usuário" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "todos os usuários" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 #: src/bz-safety-dialog.blp:98 msgid "Details" msgstr "Detalhes" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Copiar" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:408 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Copiado!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Contagem de Favoritos" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Falha ao atualizar favorito" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Faça login com o Flathub para gerenciar seus favoritos" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Entrar" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:335 msgid "Favorites" msgstr "Favoritos" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:144 msgid "Install All" msgstr "Instalar Todos" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "Carregando" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Sem Favoritos" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Aplicativos que você marcar como favoritos aparecerão aqui" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Apoiar Esta Aplicação" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Remover dos Favoritos" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Falha ao remover favorito" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Anterior" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Próximo" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Editação" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mixagem" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Música" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Reprodutor de Mídia" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Gravador" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Sequenciador" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Sintonizador" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Emulação" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Ação" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Aventura" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arcade" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Blocos" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Tabuleiro" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Carta" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Crianças" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Lógica" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Role Playing" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Tiro" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulação" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Estportes" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Estratégia" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Navegadores" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Chat" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "E-mail" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Compartilhamento de Arquivos" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Ãudio & Vídeo" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Mídia" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Mais Ãudio e Vídeo" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Ferramentas de desenvolvedores" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Desenvolver" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Mais Ferramentas de desenvolvedores" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Educação" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Aprender" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Mais Educação" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Jogos" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Jogar" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Mais Jogos" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Gráficos e Fotografia" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Criar" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Mais Gráficos e Fotografia" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Conectividade" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Comunicação" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Mais Comunicação" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Produtividade" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Trabalho" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Mais Produtividade" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Ciência" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Mais Ciência" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Sistema" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Mais Sistema" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Utilitários" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "Ferramentas" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Mais Utilitários" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Em Alta" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Mais Em Alta" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "Populares" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Mais Populares" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Recentemente Adicionados" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Novos" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Mais Novos" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Recentemente Atualizados" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Atualizados" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Mais Atualizados" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Aplicativos Móveis" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Mais Aplicativos Móveis" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Mais Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "Aplicativos KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Mais Aplicativos KDE" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Jogos" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "Mais Jogos" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "Emuladores" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Mais Emuladores" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "Inicializadores de Jogo" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Mais Inicializadores de Jogo" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Ferramentas de Jogo" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Mais Ferramentas de Jogo" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub Não Adicionado" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "" "O repositório do Flathub não foi encontrado por nenhuma de suas instalações " "de Flatpak" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub Indisponível" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Falha ao se conectar ao Flathub" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Você ainda pode gerenciar e procurar por aplicativos" #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Procurar Aplicativos" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Reconectar" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Aplicativo do Dia" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "Em movimento" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "Aplicativos para seus telefones e tablets Linux" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "Mais Aplicativos Móveis" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "Nós♥Jogos" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "Jogos e aplicativos para rodar seus títulos favoritos" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 #: src/bz-library-page.blp:82 msgid "No Results" msgstr "Sem Resultados" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Tente outro termo de pesquisa" #: src/bz-full-view.blp:47 msgid "Content" msgstr "Conteúdo" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Esta é uma pré-visualização local, alguns detalhes podem estar diferentes da " "listagem publicada" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "Pre-visualizar Aparência da Loja" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "_Apoiar" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Este aplicativo utiliza um runtime que não recebe mais atualizações ou " "atualizações de segurança. Talvez se torne inseguro para uso." #: src/bz-full-view.blp:540 msgid "Trash Data" msgstr "Deletar dados" #: src/bz-full-view.blp:603 msgid "Add-ons" msgstr "Extensões" #: src/bz-full-view.blp:638 msgid "More Add-Ons" msgstr "Mais Extensões" #: src/bz-full-view.blp:649 msgid "Links" msgstr "Links" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Sem URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Este aplicativo tem uma licença livre e de código aberto (FLOSS), o que " "significa que o código fonte pode ser auditável por segurança." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Este aplicativo tem uma licença proprietária, o que significa que o código " "fonte é desenvolvido de maneira privada e não pode ser auditável " "independentemente por terceiros." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Mais Aplicativos" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Mais Aplicativos de %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Outros Aplicativos Deste Desenvolvedor" #: src/bz-full-view.c:217 src/bz-full-view.c:317 #, c-format msgid "Other Apps by %s" msgstr "Outros Aplicativos de %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s não está instalado, mas ainda possui <b>%s</b> de dados presentes." #: src/bz-full-view.c:319 msgid "Other Apps" msgstr "Outros Aplicativos" #: src/bz-full-view.c:321 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d Aplicativo" msgstr[1] "%d Aplicativos" #: src/bz-full-view.c:537 src/bz-user-data-tile.c:144 msgid "Failed to Remove User Data" msgstr "Falha ao Remover Dados de Usuário" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Suporte a Hardware" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Suporte a Teclado" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Precisa de teclado" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Teclado recomendado" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Suporta teclados" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Suporte a teclado desconhecido" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Suporte a mouse" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Precisa de mouse ou dispositivo de indicação" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Recomenda mouse ou dispositivo de indicação" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Suporta mouse ou dispositivo de indicação" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Suporte para mouses ou dispositivos de indicação desconhecido" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Suporte a tela sensível ao toque" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Precisa de tela sensível ao toque" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Recomenda tela sensível ao toque" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Suporta tela sensível ao toque" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Suporte a telas sensíveis ao toque desconhecido" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Suporte a dispositivos móveis" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Funciona em dispositivos móveis" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Talvez não funcione bem em dispositivos móveis" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Suporte a Desktop" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Funciona bem em telas grandes" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s funciona melhor em hardwares específicos" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s funciona na maioria dos dispositivos" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Abrir" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Desinstalar Aplicativo" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Remover" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:164 #: src/bz-updates-card.c:183 msgid "Update" msgstr "Atualizar" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Remover" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Cancelar" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Cancelando" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Doar Button" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "Pesquisar aplicativos instalados" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "Limpar pesquisa" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "Nenhum App Encontrado" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "Tentar Pesquisar na Loja" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:113 msgid "Library" msgstr "Biblioteca" #: src/bz-library-page.blp:129 msgid "Pending Updates" msgstr "Atualizações pendentes" #: src/bz-library-page.blp:156 msgid "Downloads" msgstr "Downloads" #: src/bz-library-page.blp:199 msgid "Recently Uninstalled" msgstr "Recentemente Desinstalado" #: src/bz-library-page.blp:250 msgid "Clear Finished Tasks" msgstr "Limpar Tarefas Finalizadas" #: src/bz-library-page.blp:277 msgid "Sort Options" msgstr "Opções de Filtro" #: src/bz-library-page.blp:336 msgid "Sort By" msgstr "Ordenar Por" #: src/bz-library-page.blp:350 msgid "Name" msgstr "Nome" #: src/bz-library-page.blp:356 msgid "Size" msgstr "Tamanho" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "" "Nenhum resultado encontrado para \"%s\" na lista de aplicativos instalados" #: src/bz-library-page.c:193 src/bz-updates-card.c:433 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u Atualização Disponível" msgstr[1] "%u Atualizações Disponíveis" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u Aplicativos Instalados" msgstr[1] "%u Aplicativos Instalados" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Envolva-se" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Aprender Mais" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Licença Desconhecida" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Feito pela Comunidade" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Este app é desenvolvido em aberto por uma comunidade internacional.\n" "\n" "Você pode participar e ajudar a torná-lo ainda melhor." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "A licença deste app é desconhecida" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Este app é desenvolvido em aberto por uma comunidade internacional e é " "distribuído sob a licença %s.\n" "\n" "Você pode participar e ajudar a torná-lo ainda melhor." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Este app não é desenvolvido em código aberto, então somente os " "desenvolvedores sabem como ele funciona. Ele talvez seja inseguro de formas " "que são difíceis de detectar e pode mudar sem supervisão.\n" "\n" "Você talvez não possa contribuir para este app." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Este app é desenvolvido sob a licença especial %s.\n" "\n" "Você talvez não possa contribuir para este aplicativo." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Licença" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Conectar-se ao Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Algo Deu Errado" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "" "Conecte-se para sincronizar seus aplicativos favoritos entre dispositivos" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Finalizar" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Olá, %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "Selecionar Arquivo de Metainfo" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Arquivos de Metainfo" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "Selecionar Ãcone (Opcional)" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Arquivos de Imagem" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Pré-visualizar" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Preferências" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Sua conexão é limitada — atualização automática de dados da loja pausada" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:235 msgid "Refresh Manually" msgstr "Atualizar Manualmente" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "Filtros de Conteúdo" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "Somente Software Livre" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary apps when browsing and searching" msgstr "Ocultar aplicativos proprietários dos durante navegação e pesquisa" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "Somente Resultados do Flathub" #: src/bz-preferences-dialog.blp:40 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Limitar resultados de navegação e pesquisa a aplicativos disponíveis no " "Flathub" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "Somente Resultados Verificados" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "Ocultar resultados que não são verificados no Flathub" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "Ocultar Aplicativos em fim-de-vida (EOL)" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "" "Ocultar aplicativos que não são mais suportados por seus desenvolvedores" #: src/bz-preferences-dialog.blp:55 msgid "Progress Bar Theme" msgstr "Tema da Barra de Progresso" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Cor de destaque" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Cores de Orgulho" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Cores do Orgulho Lésbico" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Cores do Orgulho Homossexual Masculino" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Cores do Orgulho Transgênero" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Cores do Orgulho Não Binário" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Cores do Orgulho Bisexual" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Cores do Orgulho Asexual" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Cores do Orgulho Pansexual" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Cores do Orgulho Arromântico" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Cores do Orgulho Gênero Fluído" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Cores do Orgulho Polissexual" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Cores do Orgulho Omnissexual" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Cores do Orgulho Aroace" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Cores do Orgulho Agênero" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Cores do Orgulho Genderqueer" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Cores do Orgulho Intersexo" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Cores do Orgulho Demigênero" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Cores do Orgulho Birromântico" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Cores do Orgulho da Deficiência" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Cores do Orgulho Femboy" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Cores do Orgulho Neutrois" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:155 msgid "Version History" msgstr "Histórico de Versão" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Histórico de Versão" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Hoje" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Ontem" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Há %d dia" msgstr[1] "Há %d dias" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Há %d semana" msgstr[1] "Há %d semanas" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Há %d mês" msgstr[1] "Há %d meses" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Há %d ano" msgstr[1] "Há %d anos" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Versão %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Não há detalhes para este lançamento" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Obter mais informações" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Desinstalar" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Obter" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Permissões Desconhecidas" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Estão faltando permissões para este app." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Sem Permissões" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "O app é completamente isolado" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Acesso à Internet" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Pode acessar a internet" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Sem Acesso à Rede" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Não pode acessar a internet" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Acesso a Dispositivos de Usuário" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Pode acessar dispositivos como webcams ou controles de jogos" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Sem Acesso a Dispositivos de Usuário" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Não pode acessar dispositivos como webcams ou controles de jogos" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Acesso a Dispositivos de Entrada" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Pode acessar dispositivos de entrada" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Acesso a Microfone e Tocar Ãudio" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "Pode ouvir usando microfones e tocar áudio sem pedir permissão" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Acesso a Dispositivo do Sistema" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "Pode acessar dispositivos do sistema que requerem permissões elevadas" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Acesso a Conteúdos da Tela" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Pode acessar os conteúdos da tela e de outras janelas" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Sistema de Janelas Legado" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Sempre usa um sistema de janelas legado (X11)" #: src/safety-calculator.c:161 src/bz-safety-dialog.blp:31 msgid "Arbitrary Permissions" msgstr "Permissões Arbitrárias" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Pode adquirir permissões arbitrárias" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Configurações de Usuário" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Pode acessar e mudar configurações de usuário" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Acesso Total de Leitura/Escrita ao Sistema de Arquivos" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Pode ler e escrever todos os dados no sistema de arquivos" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Acesso de Leitura/Escrita à Pasta Pessoal" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Pode ler e escrever todos os dados na sua pasta pessoal" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Acesso Total de Leitura ao Sistema de Arquivos" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Pode ler todos os dados no sistema de arquivos" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Acesso de Leitura à Pasta Pessoal" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Pode ler todos os dados na sua pasta pessoal" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Acesso de Leitura/Escrita à Pasta de Download" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Pode ler e escrever todos os dados na sua pasta de downloads" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Acesso de Leitura à Pasta de Downloads" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Pode ler todos os dados na sua pasta de downloads" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Pode ler e escrever todos os dados na sua pasta de downloads" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Pode ler todos os dados no diretório" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Sem Acesso ao Sistema de Arquivos" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Não pode acessar o sistema de arquivos de maneira alguma" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Usa Serviços do Sistema" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Pode solicitar dados de serviços do sistema que não utilizam portais" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Usa Serviços de Sessão" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Pode solicitar dados de serviços de sessão que não utilizam portais" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Sem Acesso a Serviços" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Não pode acessar servições de sessão ou do sistema de maneira alguma" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Desenvolvedor do App Verificado" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "O desenvolvedor deste app foi verificado e é quem diz ser" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Código Proprietário" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "O código fonte não é público, então não pode ser auditado independentemente " "e pode ser inseguro" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Código Auditável" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "O código fonte é público e pode ser auditado independentemente, o que torna " "o app potencialmente seguro" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Usa o Serviço do Sistema %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Usa a Serviço de Sessão %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Usa o Serviço %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Pode ver serviços que não usam portais" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Pode se comunicar com serviços que não utilizam portais" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Pode ter um serviço que não utiliza portais" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Integração de Menu Global" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Pode mostrar seus menus em uma menu de barra global" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Integração de Configurações do KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Pode detectar quando configurações do desktop KDE mudam" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Configurações Globais do KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Pode ler preferência do desktop KDE como fontes e cores" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Serviço de Armazenamento Secreto" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Pode guardar e recuperar suas próprias senhas usando o keyring do sistema" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Serviço de Notificações do Desktop" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Pode mandar notificações de desktop" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Integração com a Bandeja do Sistema" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Pode mostrar um ícone na bandeja do sistema" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Integração com KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Pode interagir com dispositivos pareados via KDE Connect" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Este aplicativo possui uma permissão que, indiretamente, o autoriza " "conseguir </b>qualquer outra permissão que este aplicativo quiser</b>, " "burlando o isolamento do Flatpak.\n" "\n" "Portanto, ele pode fazer qualquer coisa que uma aplicação normal e sem " "isolamento consegue fazer, como acessar todos os seus arquivos e conectar à " "internet.\n" "\n" "Verificar as outras permissões pode esclarecer o que este aplicativo " "provavelmente fará." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "Ver Outras Permissões" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "ID do App" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Este app utiliza uma versão desatualizada da plataforma de software (SDK) e " "pode conter bugs ou vunerabilidades de segurança que talvez não estejam " "consertadas." #: src/bz-safety-dialog.c:278 msgid "Safety" msgstr "Segurança" #: src/bz-safety-dialog.c:344 #, c-format msgid "%s is Safe" msgstr "%s é Seguro" #: src/bz-safety-dialog.c:349 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s não possui Permissões Inseguras" #: src/bz-safety-dialog.c:354 #, c-format msgid "%s is Probably Safe" msgstr "%s é Provavelmente Seguro" #: src/bz-safety-dialog.c:359 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s é Possivelmente Inseguro" #: src/bz-safety-dialog.c:364 #, c-format msgid "%s is Unsafe" msgstr "%s é Inseguro" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "Capturas de tela" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "Captura de tela anterior" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "Próxima captura de tela" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "Copiar Image" #: src/bz-screenshot-page.blp:150 msgid "Reset View" msgstr "Redefinir Visualização" #: src/bz-screenshot-page.blp:161 msgid "Zoom Out" msgstr "Diminuir Zoom" #: src/bz-screenshot-page.blp:171 msgid "Zoom In" msgstr "Aumentar Zoom" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Carrossel de Capturas de Tela" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Sem Capturas de Tela" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Abrir Visualizador de Capturas de Tela" #: src/bz-screenshots-carousel.c:301 #, c-format msgid "Screenshot %u %s" msgstr "Captura de tela %u %s" #: src/bz-screenshots-carousel.c:303 #, c-format msgid "Screenshot %u" msgstr "Captura de tela %u" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "Filtros" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Verificado" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Livre/Aberto" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Não-_EOL" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Filtrar aplicativos em fim-de-vida (EOL)" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Amigável para Dispositivos Móveis" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Catergorias" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "Pesquisar Aplicativos, Jogos e Softwares" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "Filtros de Pesquisa" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "Limpar Pesquisa" #: src/bz-search-page.blp:209 msgid "Browse Categories" msgstr "Navegar por Categorias" #: src/bz-search-page.blp:245 msgid "Categories Unavailable" msgstr "Atualizações Indisponíveis" #: src/bz-search-page.blp:246 msgid "Search for apps using the search bar above." msgstr "Pesquise aplicativos utilizando a barra de pesquisa acima." #: src/bz-search-page.blp:364 msgid "No Applications Found" msgstr "Nenhuma Aplicação Encontrada" #: src/bz-search-page.c:248 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Sem resultados para \"%s\" no Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Vídeo" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Produtividade" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Calendário" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Mensagens" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Pintura" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emuladores" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Página do Flathub" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Site do Projeto" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Rastreador de problemas" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "Perguntas Mais Frequentes" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Ajuda" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Doar" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Traduzir" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Contatar" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Código Fonte" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Contribuir" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifesto" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Copiar Link" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Linha do tempo" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Instalações:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Mundo" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "Desde 15/04/2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM de Instalações Totais" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK de Instalações Totais" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d de Instalações Totais" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Nenhum Resultado Encontrado" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "A pesquisa falhou" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Manter Dados de Usuário" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Habilitar restauração de configurações pessoais & conteúdos" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Excluir Todos os Dados" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Remover permanentemente dados de usuário para liberar espaço" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Instalar %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Selecione qual versão para instalar. Talvez haja a instalação de componente " "compartilhados adicionais" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Pode instalar componentes compartilhados adicionais" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Cancelar" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Instalar" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Remover %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Selecione qual versão para remover." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Não será possível utilizar %s após ser desinstalado." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "\"%s\" é de Alto Risco" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Este app possui acesso total ao seu sistema, incluindo todos <b>os seus " "arquivos, histórico de navegação, senhas salvas<b> e mais. Também possui " "acesso à internet, o que significa que também pode enviar seus dados para " "terceiros.\n" "\n" "Por este app ser proprietário, não é possível auditar o que faz com estas " "permissões." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Este app utiliza o sistema de janelas legado X11, o qual permite <b>gravar " "todas as teclas pressionadas, capturar tela e monitorar outros " "aplicativos<b>. Também possui acesso à internet, o que significa que também " "pode enviar os seus dados para terceiros.\n" "\n" "Por este app ser proprietário, não é possível auditar o que faz com estas " "permissões." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Instalar de Qualquer Maneira" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Falha ao carregar o diálogo de transação" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Todos os aplicativos já estão instalados" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_OK" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Instalar Aplicativo %u?" msgstr[1] "Instalar Aplicativos %u?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Os seguintes aplicativos serão instalados. Componentes compartilhados " "adicionais também podem ser instalados" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d addons serão instalados." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Adicionalmente, %d addons serão instalados." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Instalar Todos" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Concluído em %.02f segundos" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Extensões do App" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Runtime" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "Em Fila" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Concluído" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Cancelado" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Erro" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Cancelar Transação" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Mostrar Detalhes" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Mostrar Informações do Erro" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s Liberados" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Erro de Transação" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Pendente" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Atualizar Todos" #: src/bz-updates-card.c:211 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u Atualização de Runtime" msgstr[1] "%u Atualizações de Runtime" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Gerenciar Dados de Usuário Restantes" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "Nenhum Dado de Usuário Encontrado" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "Dados de Usuário" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "Apagar Dados de Usuário" #: src/bz-user-data-tile.c:150 #, c-format msgid "Trashed User Data for %s" msgstr "Apagar Dados de Usuário de %s" #: src/bz-window.blp:71 msgid "Refreshing" msgstr "Atualizando" #: src/bz-window.blp:89 msgid "Curated" msgstr "Recomendados" #: src/bz-window.blp:101 msgid "Explore" msgstr "Explorar" #: src/bz-window.blp:128 msgid "Search" msgstr "Pesquisa" #: src/bz-window.blp:215 msgid "Main Menu" msgstr "Menu Principal" #: src/bz-window.blp:226 msgid "You are running a new version of Bazaar!" msgstr "Você está utilizando a nova versão do Bazaar!" #: src/bz-window.blp:227 msgid "See What's New" msgstr "Veja O Que Há de Novo" #: src/bz-window.blp:234 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Você possui conexão à internet, mas está vendo uma versão em cache do Flathub" #: src/bz-window.blp:279 msgid "_Donate to Bazaar" msgstr "_Doar para o Bazaar" #: src/bz-window.blp:285 msgid "_Refresh" msgstr "_Atualizar" #: src/bz-window.blp:289 msgid "_Login With Flathub" msgstr "_Entrar com Flathub" #: src/bz-window.blp:295 msgid "_Manage Leftover User Data" msgstr "_Gerenciar Dados de Usuário Restantes" #: src/bz-window.blp:301 msgid "_Preferences" msgstr "_Preferências" #: src/bz-window.blp:306 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de Teclado" #: src/bz-window.blp:311 msgid "_About Bazaar" msgstr "_Sobre o Bazaar" #: src/bz-window.blp:317 msgid "_Quit Bazaar" msgstr "_Sair do Bazaar" #: src/bz-window.blp:342 msgid "Log Out" msgstr "Desconectar" #. Translators: %s is the title of the current page #: src/bz-window.c:376 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:596 src/bz-window.c:634 msgid "Failed to launch application" msgstr "Falha ao iniciar a aplicação" #: src/bz-window.c:843 msgid "You can't remove Bazaar from Bazaar!" msgstr "Você não pode remover o Bazaar pelo Bazaar!" #: src/bz-window.c:1127 src/bz-window.c:1161 msgid "Can't do that right now!" msgstr "Não é possível fazer isso agora!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Instalação" msgstr[1] "Instalações" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navegação" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Abrir a Página Explorar" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Abrir a Página da Biblioteca" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Abrir a Página de Pesquisa" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Repositórios" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Sincronizar Repositórios" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Abrir Preferências" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar Atalhos" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Fechar Janela" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Sair do Bazaar" #~ msgid "Free" #~ msgstr "Livre" #~ msgid "Tags:" #~ msgstr "Etiquetas:" #~ msgid "Progress Bar" #~ msgstr "Barra de Progresso" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "Escolha um tema para a barra de progresso!" #~ msgid "Open Link" #~ msgstr "Abrir Link" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "Aplicativos com a etiqueta \"%s\"" #~ msgid "Flathub returned an error" #~ msgstr "Flathub retornou um erro" #~ msgid "Retry Flathub Connection" #~ msgstr "Tentar conexão ao Flathub novamente" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "" #~ "Connect sua conta do Flathub ao Bazaar para gerenciar seus apps favoritos." #~ msgid "Delay Search Results" #~ msgstr "Atrasar Resultados de Pesquisa" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "" #~ "Melhorar resultados de performance utilizando debouncing nos termos " #~ "pesquisados" #~ msgid "Vertical Stripes" #~ msgstr "Listras Verticais" #~ msgid "Display flag colors from left to right" #~ msgstr "Mostrar as cores das bandeiras da esquerda para a direita" #~ msgid "User Data Size" #~ msgstr "Tamanho dos Dados de Usuário" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Installing" #~ msgstr "Instalando" #~ msgid "Refresh completed!" #~ msgstr "Atualização completa!" #~ msgctxt "As in, \"100 Installs\"" #~ msgid "Installs" #~ msgstr "Instalações" #~ msgctxt "shortcut window" #~ msgid "Refresh" #~ msgstr "Atualizar" #~ msgid "_Donate to Bazaar â¤ï¸" #~ msgstr "_Doar para o Bazaar â¤ï¸" #~ msgid "Open App Library" #~ msgstr "Abrir Biblioteca de Apps" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "Instalar bundles .flatpak ainda não é suportado" #~ msgid "Steam" #~ msgstr "Steam" #~ msgid "Minecraft" #~ msgstr "Minecraft" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "Isso enfatiza o apoio aos desenvolvedores que tornam o desktop Linux " #~ "possível. Bazaar provê uma seção de \"recomendados\" que pode ser " #~ "configurada por distribuidores para entregar uma experiência mais " #~ "localizada." #~ msgid "_Synchronize Remotes" #~ msgstr "_Sincronizar Repositórios" #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "Synchronizing..." #~ msgstr "Sincronizando..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "Obtendo %d entradas" #~ msgid "Indexing Data..." #~ msgstr "Indexando Dados..." #~ msgid "View the Release Page" #~ msgstr "Visualizar Página de Lançamento" #~ msgid "Close" #~ msgstr "Fechar" #~ msgid "Copy and Close" #~ msgstr "Copiar e Fechar" #~ msgid "Download & Install Application" #~ msgstr "Baixar & Instalar Aplicativo" #~ msgid "Install Other Version" #~ msgstr "Instalar Outra Versão" #~ msgid "Keep Data" #~ msgstr "Manter Dados" #~ msgid "Open App" #~ msgstr "Abrir App" #~ msgid "Refreshing Store Content" #~ msgstr "Recarregando o Conteúdo da Loja" #~ msgid "No background tasks!" #~ msgstr "Sem atividades em segundo plano!" #~ msgctxt "As in, \"100 Downloads\"" #~ msgid "Downloads" #~ msgstr "Downloads" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "Sair" #~ msgid "Nucleus app page" #~ msgstr "Página do aplicativo Nucleus" #~ msgid "Toggle transaction sidebar" #~ msgstr "Alternar barra lateral de transações" #, fuzzy #~ msgid "Finished" #~ msgstr "Tarefas finalizadas" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "%s transferidos até agora" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "%d Atualização Disponível" #~ msgstr[1] "%d Atualizações Disponíveis" #~ msgid "Updates Are Available" #~ msgstr "Atualizações Estão Disponíveis" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "Os seguintes aplicativos podem ser atualizados. Você gostaria de instalá-" #~ "los?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "" #~ "%d runtimes e/ou extensões podem ser atualizados. Você gostaria de " #~ "instalá-los?" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "Adicionalmente, %d runtimes e/ou extensões serão atualizados." #~ msgid "Update Now" #~ msgstr "Atualizar Agora" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "Alternar Gerenciador de Transações" # https://pt.wikipedia.org/wiki/Fim_de_vida_(produto) #~ msgid "Hide EOL Entries" #~ msgstr "Esconder entradas em fim de vida (EOL)" # https://pt.wikipedia.org/wiki/Fim_de_vida_(produto) #~ msgid "Hide EOL entries and entries depending on them" #~ msgstr "Esconder entradas em fim de vida (EOL) e entradas dependentes delas" #~ msgid "Show Git Forge Star Counts" #~ msgstr "Exibir a contagem de estrelas de plataformas Git" #~ msgid "" #~ "Whether to attempt to detect and show \"star counts\" for projects in the " #~ "full view" #~ msgstr "" #~ "Se deve fazer a tentativa de detectar e mostrar a \"contagem de " #~ "estrelas\" para projetos na visualização completa" #~ msgid "Only Show Free Software" #~ msgstr "Mostrar apenas softwares livres" #~ msgid "Hide proprietary software" #~ msgstr "Ocultar softwares proprietários" #~ msgid "Show Only Flathub Content" #~ msgstr "Mostrar Apenas Conteúdos do Flathub" #~ msgid "Debounce Search Inputs" #~ msgstr "Entrada de Pesquisa com Atraso" #~ msgid "Add a delay before searching to prevent instant replies while typing" #~ msgstr "" #~ "Adiciona um delay antes de pesquisar para evitar múltiplas respostas " #~ "enquanto digita" #~ msgid "Describes the look of the global progress bar" #~ msgstr "Descreve a aparência da barra de progresso global" #~ msgid "Saved Window Dimensions" #~ msgstr "Dimensões da Janela Salvas" #~ msgid "The window dimensions to be used by the next Bazaar window" #~ msgstr "" #~ "As dimensões da janela a serem utilizadas pela próxima janela do Bazaar" #~ msgid "?" #~ msgstr "?" #, c-format #~ msgid "%s is suitable for toddlers" #~ msgstr "%s é adequado para crianças de um a três anos" #~ msgid "--- MB" #~ msgstr "--- MB" #~ msgid "Of the size of human DNA" #~ msgstr "Do tamanho do DNA humano" #~ msgid "3 billion base pairs" #~ msgstr "3 bilhões de pares de bases" #~ msgid "Of the Linux Kernel" #~ msgstr "Do Kernel Linux" #~ msgid "linux-6.17.tar.xz" #~ msgstr "linux-6.17.tar.xz" #~ msgid "Of the Apollo 11 guidance computer" #~ msgstr "Do computador de orientação da Apollo 11" #~ msgid "Total ROM and RAM" #~ msgstr "Total de ROM e RAM" #~ msgid "Of the original Super Mario Bros" #~ msgstr "Do Super Mario Bros original" #~ msgid "On the NES" #~ msgstr "No NES" #~ msgid "Of the size of Wikipedia" #~ msgstr "Do tamanho da Wikipedia" #~ msgid "Without any media" #~ msgstr "Sem nenhuma mídia" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "" #~ "Esta funcionalidade está atualmente desativada. É recomendado baixar e " #~ "instalar o Flatseal para gerenciar permissões de aplicativos." #~ msgid "Entry Inspector" #~ msgstr "Inspetor de entrada" #~ msgid "Serialize" #~ msgstr "Serializar" #~ msgid "Convert to JSON" #~ msgstr "Converter para JSON" #~ msgid "More Mobile apps" #~ msgstr "Mais Aplicativos Móveis" #~ msgid "Repository Star Count" #~ msgstr "Contagem de Estrelas do Repositório" #~ msgid "Bazaar Inspector" #~ msgstr "Inspetor do Bazaar" #~ msgid "Enable Global Debug Mode" #~ msgstr "Habilitar Modo de Depuração Global" #~ msgid "Active Blocklists" #~ msgstr "Listas de Bloqueio Ativas" #~ msgid "Active Curated-Configs" #~ msgstr "Configurações de Listas Recomendadas Ativas" #~ msgid "All Entry Groups" #~ msgstr "Todos os Grupos de Entradas" #~ msgid "Decache and Inspect" #~ msgstr "Limpar Cache e Inspecionar" #~ msgid "No Flatpaks Installed" #~ msgstr "Sem Flatpaks Instalados" #~ msgid "Display Star Count" #~ msgstr "Mostrar Contagem de Estrelas" #~ msgid "Show the star count of an application's source code repository" #~ msgstr "" #~ "Mostrar a contagem de estrelas do repositório código fonte da aplicação" #~ msgid "" #~ "Bazaar can fetch and display the star count from an application's source " #~ "code repository on a remote Git forge. \n" #~ " For projects on GitHub, rate limits may cause them not to appear." #~ msgstr "" #~ "Bazaar pode verificar e mostrar a contagem de estrelas do repositório " #~ "código fonte da aplicação em uma forja git externa.\n" #~ " Para projetos no GitHub, limites de taxa talvez façam com que elas não " #~ "apareçam." #~ msgid "Inspect UI Entry" #~ msgstr "Inspecionar Entrada de UI" #~ msgid "All Debug Actions" #~ msgstr "Depurar todas as ações" #~ msgid "Tasks" #~ msgstr "Tarefas" #~ msgid "Stop Active Tasks" #~ msgstr "Parar Tarefas Ativas" #~ msgid "No Tasks Yet" #~ msgstr "Nenhuma Tarefa Ainda" #~ msgid "Open Bazaar Inspector" #~ msgstr "Abrir Inspetor do Bazaar" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "A funcionalidade de inspecionar e instalar pacotes .flatpak está chegando " #~ "em breve! Por enquanto, insira\n" #~ "\n" #~ "flatpak install --bundle seu-pacote.flatpak\n" #~ "\n" #~ "em seu terminal." #~ msgid "Resume Current Tasks" #~ msgstr "Retomar Tarefas Atuais" #~ msgid "Pause Current Tasks" #~ msgstr "Pausar Tarefas Atuais" #, c-format #~ msgid "%s: %'u downloads" #~ msgstr "%s: %'u downloads" #~ msgid "We ♥ Games" #~ msgstr "Nós ♥ Jogos" #, c-format #~ msgid "%.2fM" #~ msgstr "%.2fM" #, c-format #~ msgid "%.2fK" #~ msgstr "%.2fK" #~ msgid "Sync" #~ msgstr "Sincronizar" #~ msgid "Filter search results to only show applications available on Flathub" #~ msgstr "" #~ "Filtra resultados de pesquisa para exibir apenas aplicativos disponíveis " #~ "no Flathub" #~ msgid "Manage Addons" #~ msgstr "Gerenciar Extensões" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Azenyr" #~ msgstr "Azenyr" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Goudarz Jafari" #~ msgstr "Goudarz Jafari" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore (Lumaeris)" #~ msgstr "Jill Fiore (Lumaeris)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "João Victor (Leal)" #~ msgstr "João Victor (Leal)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "KiKaraage" #~ msgstr "KiKaraage" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Léane GRASSER" #~ msgstr "Léane GRASSER" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Marcel Mrówka (Microwave)" #~ msgstr "Marcel Mrówka (Microwave)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Peter Dave Hello" #~ msgstr "Peter Dave Hello" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Pietro F." #~ msgstr "Pietro F." #~ msgctxt "About Dialog Translator Credit" #~ msgid "Sabri Ünal" #~ msgstr "Sabri Ünal" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shinsei" #~ msgstr "Shinsei" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "camegone" #~ msgstr "camegone" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #~ msgid "Constructing Flatpak instance..." #~ msgstr "Construindo instância de Flatpak..." #~ msgid "Reusing last Flatpak instance..." #~ msgstr "Reutilizando última instância de Flatpak..." #~ msgid "Flathub is not registered on this system" #~ msgstr "Flathub não está registrado neste sistema" #~ msgid "" #~ "Would you like to add Flathub as a remote? If you decline, the Flathub " #~ "page will not be available. You can change this later." #~ msgstr "" #~ "Você gostaria de adicionar o repositório do Flathub? Se recusar, a página " #~ "do Flathub não estará disponível. Você pode alterar isso depois." #~ msgid "Add Flathub" #~ msgstr "Adicionar Flathub" #, c-format #~ msgid "Identifying installed entries..." #~ msgstr "Identificando entradas instaladas..." #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "" #~ "Iniciando a obtenção de entradas remotas, consultando %d lista(s) de " #~ "bloqueio..." #, c-format #~ msgid "%'d of %'d" #~ msgstr "%'d de %'d" #, c-format #~ msgid "Waiting for background indexing tasks to catch up..." #~ msgstr "Aguardando tarefas de indexação em segundo plano..." #, c-format #~ msgid "Completed initialization in %0.2f seconds" #~ msgstr "Inicialização completada em %0.2f segundos" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "" #~ "O Bazaar não recebeu uma configuração de conteúdo recomendado. Contate os " #~ "canais de suporte do seu sistema operacional para receber assistência." #~ msgid "Graphics" #~ msgstr "Gráficos" #~ msgctxt "Project URL Type" #~ msgid "Homepage" #~ msgstr "Página Inicial" #~ msgid "This flatpak is verified by the original developers of the software." #~ msgstr "" #~ "Este flatpak foi verificado pelos desenvolvedores originais do software." #~ msgid "Excludes shared components" #~ msgstr "Exclui componentes compartilhados" #~ msgid "Source code may not be available" #~ msgstr "O código-fonte pode não estar disponível" #~ msgid "Click for details" #~ msgstr "Clique para mais detalhes" #~ msgid "Repositories" #~ msgstr "Repositórios" #~ msgid "Open in browser" #~ msgstr "Abrir no navegador" #, c-format #~ msgid "%'d Monthly Downloads" #~ msgstr "%'d Downloads Mensais" #~ msgid "%B %-d" #~ msgstr "%-d de %B" #~ msgid "Run this application" #~ msgstr "Executar este aplicativo" #~ msgid "Run" #~ msgstr "Executar" #~ msgid "Git Forge Star Counts" #~ msgstr "Contagem de Estrelas de Plataformas Git" #~ msgid "Not having a GitHub access token may trigger rate limits" #~ msgstr "Não ter um token de acesso do GitHub pode acionar limites de taxa" #~ msgid "Show Only Flathub Apps" #~ msgstr "Mostrar Apenas Apps Flathub" #~ msgid "Wait for a brief pause to reduce system load" #~ msgstr "Aguarde uma breve pausa para reduzir a carga do sistema" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Pride Rainbow Flag" #~ msgstr "Bandeira do Orgulho Arco-Ãris" #~ msgid "Bisexual Flag" #~ msgstr "Bandeira Bissexual" #~ msgid "Asexual Flag" #~ msgstr "Bandeira Assexual" #~ msgid "Share" #~ msgstr "Compartilhar" #~ msgid "Browse" #~ msgstr "Navegar" #~ msgid "Go Back" #~ msgstr "Voltar" #~ msgid "View curated applications" #~ msgstr "Ver aplicativos recomendados" #~ msgid "View the latest on Flathub" #~ msgstr "Ver os últimos do Flathub" #~ msgid "_Quit Service" #~ msgstr "_Sair do Serviço" #~ msgid "Settings & user data will be kept" #~ msgstr "As configurações e os dados do usuário serão mantidos" #~ msgid "Calligraphy application page" #~ msgstr "Página de aplicativo de caligragia" #~ msgid "Download graph for Blender" #~ msgstr "Gráfico de Downloads para o Blender" #~ msgid "Open this image in the default image viewer" #~ msgstr "Abra essa imagem no visualizador de imagens padrão" #~ msgid "Copy this image to the clipboard" #~ msgstr "Copiar para área de transferência" #~ msgid "Apps Of The Week" #~ msgstr "Aplicativos da Semana" #~ msgid "Show Downloads Over Time" #~ msgstr "Mostrar downloads ao longo do tempo" #~ msgid "Remote repo name" #~ msgstr "Nome do repositório remoto" #~ msgid "Downloads Over Time" #~ msgstr "Downloads ao Longo do Tempo" #~ msgid "Minimize Lower Bound" #~ msgstr "Minimizar o Limite Inferior" #~ msgid "Maximize Upper Bound" #~ msgstr "Maximizar o Limite Superior" #~ msgid "Updated Size" #~ msgstr "Tamanho Atualizado" #~ msgid "Freed Space" #~ msgstr "Espaço Liberado" #~ msgid "Halt the execution of transactions" #~ msgstr "Interromper a execução das transações" #~ msgid "Up to date!" #~ msgstr "Já está atualizado!" #~ msgid "Confirm Action" #~ msgstr "Confirmar Ação" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Você está prestes a remover o seguinte Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Você tem certeza?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "Você está prestes a instalar o seguinte Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Você tem certeza?" #~ msgid "Resume the execution of transactions" #~ msgstr "Retomar a execução de transações" #~ msgid "Pause the execution of transactions" #~ msgstr "Pausar a execução de transações" #~ msgctxt "Project URL Type" #~ msgid "VCS Browser" #~ msgstr "Navegador" #~ msgid "Full Application View" #~ msgstr "Visualização Completa do Aplicativo" #~ msgid "Change what content is shown when viewing applications" #~ msgstr "Mudar qual conteúdo é mostrado ao visualizar aplicativos" #~ msgid "" #~ "If you do not have an access token, turning this setting on may cause " #~ "GitHub to eventually rate limit you." #~ msgstr "" #~ "Se você não tiver um token de acesso, ativar esta configuração pode fazer " #~ "com que o GitHub eventualmente limite suas requisições." #~ msgid "Type to filter" #~ msgstr "Digite para filtrar" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "Excluir resultados com licenças proprietárias" #~ msgid "Advanced" #~ msgstr "Avançado" #~ msgid "Open this link externally" #~ msgstr "Abrir este link externamente" #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "" #~ "%'d entradas recebidas de um total de %'d (%0.1f segundos decorridos)" #~ msgid "VCS Forge Star Count" #~ msgstr "Contagem de Estrelas da Plataforma de VCS" #~ msgid "This application does not provide a donation link" #~ msgstr "Este aplicativo não provê um link para doações" #, c-format #~ msgid "" #~ "\"%s\" does not provide a donations link. This does not mean you cannot " #~ "support them! Try looking at their <a href=\"%s\">project page</a> for " #~ "more information." #~ msgstr "" #~ "\"%s\" não provê um link para doações. Isso não quer dizer que você não " #~ "possá apoiá-lo! Tente procurar na <a href=\"%s\">página do projeto</a> " #~ "para mais informações." #, c-format #~ msgid "" #~ "\"%s\" does not provide a donations link. This does not mean you cannot " #~ "support them! Try finding their project page for more information." #~ msgstr "" #~ "\"%s\" não provê um link para doações. Isso não quer dizer que você não " #~ "possá apoiá-lo! Tente procurar na página do projeto para mais informações." #~ msgid "Removing" #~ msgstr "Removendo" #~ msgid "Show Animated Background" #~ msgstr "Mostrar Plano de Fundo Animado" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "Se deseja mostrar ícone de plano de fundo animado na página inicial" #~ msgid "Keep the summary shorter, between 10 and 35 characters" #~ msgstr "Mantenha o resumo curto, entre 10 e 35 caracteres" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Janela principal do Bazaar mostrando o Blender" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "" #~ "O número de downloads dos últimos 30 dias. Clique para ver as " #~ "estatísticas de download deste aplicativo." #~ msgid "How the application looks" #~ msgstr "Como o aplicativo se parece" #~ msgid "Appearance" #~ msgstr "Aparência" #~ msgid "Show animated background" #~ msgstr "Mostrar plano de fundo animado" #~ msgid "Match using regular expressions" #~ msgstr "Corresponder utilizando expressões regulares" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "" #~ "Ocultar filtragem e ordenação usando um efeito de transição crossfade" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/ru.po������������������������������������������������������������������0000664�0000000�0000000�00000337233�15240005042�0016755�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Russian translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # # SPDX-FileCopyrightText: 2025, 2026 Jill Fiore <contact@lumaeris.com> # Jill Fiore <contact@lumaeris.com>, 2025-2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: https://github.com/bazaar-org/bazaar/issues\n" "POT-Creation-Date: 2026-07-19 11:41+0300\n" "PO-Revision-Date: 2026-07-19 12:40+0300\n" "Last-Translator: Vladimir Kosolapov\n" "Language-Team: \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "" "УÑтановка, удаление или обновление приложений Flatpak на Ñтом компьютере" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;СиÑтема;УправлениеПакетами;Discover;Flatpak;ПриложениÑ;Магазин;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "Ðовое окно" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "ПоиÑк и уÑтановка приложений" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "БыÑтрый и Ñовременный магазин приложений Ð´Ð»Ñ Linux Ñ Ð°ÐºÑ†ÐµÐ½Ñ‚Ð¾Ð¼ на поиÑке и " "уÑтановке приложений Flatpak и дополнений, в первую очередь Ñ Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "" "ДобавлÑйте Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² очередь уÑтановки и продолжайте проÑмотр" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "С лёгкоÑтью проÑматривайте Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "" "Войдите в Flathub и управлÑйте избранными приложениÑми" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Ðаходите Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ñмо из GNOME Shell" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:780 msgid "The Bazaar Contributors" msgstr "Разработчики Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница, Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Страница Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Exhibit" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Страница библиотеки" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Страница поиÑка" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Страница категорий" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Больше не получает обновлений" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Удалить" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "УÑтановить" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Управление дополнениÑми" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Ðе найдено дополнений" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Ваши параметры фильтрации Ñкрывают вÑе извеÑтные дополнениÑ. Попробуйте " "внеÑти изменениÑ." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Страница дополнениÑ" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "Загрузок в меÑÑц" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Больше не получает оÑновных обновлений" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Это дополнение иÑпользует Ñреду выполнениÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ не получает " "обновлений и иÑправлений безопаÑноÑти. Его иÑпользование может Ñтать " "небезопаÑным." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "Дополнение к %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Показать меньше" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Показать больше" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "СтатиÑтика загрузок" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "ВозраÑтной рейтинг" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Мультипликационное наÑилие" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Ðет информации о мультипликационном наÑилии" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "ФÑнтезийное наÑилие" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Ðет информации о Ñ„Ñнтезийном наÑилии" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "РеалиÑтичное наÑилие" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Ðет информации о реалиÑтичном наÑилии" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Кровопролитие" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Ðет информации о кровопролитии" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "СекÑуальное наÑилие" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Ðет информации о ÑекÑуальном наÑилии" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Ðлкоголь" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Ðет информации об упоминании алкоголÑ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Ðаркотики" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Ðет информации об упоминании наркотичеÑких ÑредÑтв" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Табак" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Ðет информации об упоминании табачных изделий" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Ðагота" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Ðет информации о наготе любого рода" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "СекÑуальные темы" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "" "Ðет информации об упоминании или изображении Ñцен ÑекÑуального характера" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "ÐÐµÐ½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ð»ÐµÐºÑика" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Ðет информации о ненормативной лекÑике в любом виде" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Ðеприемлемый юмор" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Ðет информации о неприемлемом юморе" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "ДиÑкриминациÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Ðет информации о диÑкриминации в любом виде" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Реклама" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Ðет информации о рекламе в любом виде" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Ðзартные игры" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Ðет информации об азартных играх в любом виде" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Покупка" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Ðет информации о возможноÑти тратить деньги" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Общение между пользователÑми" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Ðет информации о возможноÑти Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ пользователÑми" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Ðудиочат между пользователÑми" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Ðет информации о возможноÑти разговаривать Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ пользователÑми" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "ÐšÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Ðет информации о передаче имён пользователей ÑоцÑетей или адреÑов " "Ñлектронной почты" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸Ñ†Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Ðет информации о передаче пользовательÑких данных третьим лицам" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Передача меÑтоположениÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Ðет информации о передаче физичеÑкого меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ пользователÑм" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "ПроÑтитуциÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Ðет информации об упоминании проÑтитуции" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "ПрелюбодеÑние" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Ðет информации об упоминании прелюбодеÑниÑ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "СекÑуализированные перÑонажи" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Ðет информации о ÑекÑуализированных перÑонажах" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "ОÑквернение" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Ðет информации об оÑквернении" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "ЧеловечеÑкие оÑтанки" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Ðет информации об изображении человечеÑких оÑтанков" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "РабÑтво" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Ðет информации об упоминании рабÑтва" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Ðе Ñодержит упоминаний наркотичеÑких ÑредÑтв" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "" "Ðе Ñодержит ругательÑтв, ненормативной лекÑики и других видов грубой речи" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Ðе Ñодержит рекламы и денежных операций" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Ðе Ñодержит Ñцен ÑекÑа и наготы" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Ðе Ñодержит немодерируемого чата" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Ðе Ñодержит Ñцен наÑилиÑ" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Ðаркотики" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Ð“Ñ€ÑƒÐ±Ð°Ñ Ñ€ÐµÑ‡ÑŒ" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Деньги" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Общение" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "ÐаÑилие" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Ð’Ñе" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s имеет неизвеÑтный возраÑтной рейтинг" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s подходит Ð´Ð»Ñ Ð²Ñех возраÑтов" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s подходит Ð´Ð»Ñ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… детей" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s подходит Ð´Ð»Ñ Ð´ÐµÑ‚ÐµÐ¹" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s подходит Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ñтков" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s подходит Ð´Ð»Ñ Ð²Ð·Ñ€Ð¾Ñлых" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s подходит Ð´Ð»Ñ %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Подпапка %s домашней папки" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "СиÑтемные папки хоÑта" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ…Ð¾Ñта из /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Подпапка рабочего Ñтола %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Папка рабочего Ñтола" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Подпапка документов %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Папка документов" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Подпапка музыки %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Папка музыки" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Подпапка изображений %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Папка изображений" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Подпапка общего доÑтупа %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Папка общего доÑтупа" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Подпапка Ñ Ð²Ð¸Ð´ÐµÐ¾ %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Папка Ñ Ð²Ð¸Ð´ÐµÐ¾" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Подпапка шаблонов %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Папка шаблонов" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Подпапка пользовательÑкого кÑша %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Папка пользовательÑкого кÑша" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Подпапка пользовательÑкой конфигурации %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Папка пользовательÑкой конфигурации" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Подпапка пользовательÑких данных %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Папка пользовательÑких данных" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Подпапка пользовательÑкой Ñреды Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Папка пользовательÑкой Ñреды выполнениÑ" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "ДоÑтуп к файловой ÑиÑтеме в %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "ÐеизвеÑтный путь файловой ÑиÑтемы" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "Размер ÑкачиваниÑ" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "Размер уÑтановки" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "Размер ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· интернета" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "Размер на диÑке" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "Открыть папку пользовательÑких данных" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "Ваши пользовательÑкие данные" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "КÑш, наÑтройки и другие данные приложениÑ" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "КÑш" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "Временные кÑшированные данные" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "ОчиÑтить кÑш" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Размер уÑтановленной Ñреды выполнениÑ" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Размер ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ñреды выполнениÑ" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "Ð/Д" #: src/bz-app-size-dialog.c:208 msgid "App Size" msgstr "Размер приложениÑ" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Подтверждено" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:135 msgid "Installed" msgstr "УÑтановлено" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:783 msgid "translator-credits" msgstr "" "Jill Fiore <contact@lumaeris.com>, 2025, 2026\n" "Vladimir Kosolapov https://github.com/vmkspv" #: src/bz-application.c:793 msgid "Special Thanks" msgstr "ОÑÐ¾Ð±Ð°Ñ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ð½Ð¾Ñть" #: src/bz-application.c:851 msgid "Logged Out Successfully!" msgstr "Выход из аккаунта выполнен уÑпешно!" #: src/bz-application.c:1042 msgid "Ubuntu Troubles!" msgstr "Проблемы в Ubuntu!" #: src/bz-application.c:1045 msgid "" "The more recent versions of Ubuntu have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version of " "Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Ð’ поÑледних верÑиÑÑ… Ubuntu нарушены Ñтандартные правила безопаÑноÑти, из-за " "чего уÑтановка приложений из Flatpak-верÑии Bazaar Ñтала <b>невозможной</b>. " "ПожалуйÑта, пока иÑпользуйте обычный пакет, уÑтановив его командой:\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "ПоÑле Ñтого Flatpak-верÑию можно удалить:\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1051 msgid "Continue Anyway" msgstr "Ð’ÑÑ‘ равно продолжить" #: src/bz-application.c:1067 msgid "Performing setup…" msgstr "ВыполнÑетÑÑ Ð½Ð°Ñтройка…" #: src/bz-application.c:1159 msgid "Set Up System Flathub?" msgstr "Добавить ÑиÑтемный Flathub?" #: src/bz-application.c:1162 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "СиÑтемный репозиторий Flathub не наÑтроен. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра и уÑтановки " "приложений Bazaar требуетÑÑ, чтобы Flathub был наÑтроен в ÑиÑтемной " "уÑтановке Flatpak.\n" "\n" "Ð’Ñ‹ по-прежнему можете иÑпользовать Bazaar Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра и ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑƒÐ¶Ðµ " "уÑтановленных приложений." #: src/bz-application.c:1169 msgid "Set Up Flathub?" msgstr "Добавить Flathub?" #: src/bz-application.c:1172 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub не наÑтроен в Ñтой ÑиÑтеме. Пока он недоÑтупен, вы не Ñможете " "проÑматривать и уÑтанавливать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Bazaar.\n" "\n" "Ð’Ñ‹ по-прежнему можете иÑпользовать Bazaar Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра и ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑƒÐ¶Ðµ " "уÑтановленных приложений." #: src/bz-application.c:1178 msgid "Later" msgstr "Позже" #: src/bz-application.c:1179 msgid "Set Up Flathub" msgstr "Добавить Flathub" #: src/bz-application.c:1712 msgid "A backend error occurred" msgstr "Произошла внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°" #: src/bz-application.c:1912 src/bz-application.c:4150 msgid "Refreshing…" msgstr "Обновление…" #: src/bz-application.c:2076 src/bz-application.c:4148 #, c-format msgid "Loading %d apps…" msgstr "Загрузка %d приложений…" #: src/bz-application.c:2129 msgid "Failed to open file" msgstr "Ðе удалоÑÑŒ открыть файл" #: src/bz-application.c:2258 msgid "An initialization error occurred" msgstr "Произошла ошибка инициализации" #: src/bz-application.c:2657 msgid "Checking for updates…" msgstr "Проверка обновлений…" #: src/bz-application.c:2713 msgid "Failed to check for updates" msgstr "Ðе удалоÑÑŒ проверить обновлениÑ" #: src/bz-application.c:3852 msgid "Malformed Link" msgstr "Ðеверный формат ÑÑылки" #: src/bz-application.c:3853 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Ð’ ÑÑылке, по которой было открыто Ñто приложение, неверно раÑÑтавлены " "заглавные буквы, и в будущем она может переÑтать работать.\n" "\n" "Скорее вÑего, Ñто ÑвÑзано Ñ Ñ‚ÐµÐ¼, что KRunner отправлÑет неверные ID " "приложений" #: src/bz-application.c:3861 msgid "Could not find app" msgstr "Ðе удалоÑÑŒ найти приложение" #: src/bz-application.c:3892 msgid "Failed to load metainfo" msgstr "Ðе удалоÑÑŒ загрузить метаданные" #: src/bz-application.c:4152 msgid "Writing to cache…" msgstr "ЗапиÑÑŒ в кÑш…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Показать вÑе" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Ð’Ñе «%s»" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d приложений" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Ðе удалоÑÑŒ загрузить Ñтатью" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "УÑтановка пакета" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Дополнительные завиÑимоÑти могут занÑть больше меÑта" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Ð”Ð»Ñ ÑƒÑтановки может потребоватьÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ новый иÑточник приложений. " "Другие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð· Ñтого иÑточника будут отображатьÑÑ Ð² Bazaar.\n" "\n" "ДобавлÑйте Ñтот иÑточник, только еÑли вы уверены, что доверÑете ему." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "УÑпешно уÑтановлено!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Открыть" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Показать ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ приложении" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Уже уÑтановлено" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Ошибка уÑтановки" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "ÐеизвеÑтный размер уÑтановки" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Ð”Ð»Ñ ÑƒÑтановки потребуетÑÑ Ð¾ÐºÐ¾Ð»Ð¾ %s" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Ðет Ñпециальных разрешений" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:29 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "ПуÑто" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "Ðет подборок" #: src/bz-curated-view.blp:30 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Ð’ Ñтой ÑиÑтеме нет информации о подборках. Ð’Ñ‹ по-прежнему можете " "проÑматривать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° Flathub" #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "Открыть Flathub" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "Ðет интернета" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Браузеры" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Ðе подтверждено" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ разработчике недоÑтупна." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "Владелец ID Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %s не подтверждён — Ñто может быть пакет, Ñобранный " "ÑообщеÑтвом." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "Владелец ID Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %s был вручную подтверждён командой Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on <b>" "%3$s</b>." msgstr "" "Владелец ID Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %1$s был подтверждён <b>%2$s</b> через <b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "" "Владелец ID Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %1$s был подтверждён Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Владелец ID Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %s был подтверждён." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Полный ÑпиÑок изменений" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "Этот выпуÑк ÑоÑтоÑлÑÑ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ñ Ñ‚Ð°ÐºÐ¸Ð¼ пользователÑм, как вы!" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Мне нравитÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ над Bazaar, но в одиночку мне не ÑправитьÑÑ. " "Поддержите дальнейшую разработку пожертвованием на Ko-Fi." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Поддержать Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "Что нового в %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Выпущено %-e %B %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Выбор уÑтановки" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "У Ð²Ð°Ñ ÑƒÑтановлено неÑколько верÑий Ñтого приложениÑ. С какой из них " "продолжить?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Отмена" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Только Ð´Ð»Ñ Ñтого пользователÑ" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "Ñтот пользователь" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "вÑе пользователи" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:98 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Детали" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Скопировать" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Скопировано!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "ЧиÑло добавлений в избранное" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Ðе удалоÑÑŒ обновить избранное" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Войдите в Flathub Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Войти" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:348 msgid "Favorites" msgstr "Избранное" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "УÑтановить вÑе" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:17 msgid "Loading" msgstr "Загрузка" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Ðет избранного" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "ЗдеÑÑŒ будут отображатьÑÑ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, добавленные в избранное" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Поддержать Ñто приложение" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Удалить из избранного" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Ðе удалоÑÑŒ удалить из избранного" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Предыдущий" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Следующий" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Монтаж" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Микшеры" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Музыка" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Проигрыватели" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "ЗвукозапиÑÑŒ" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "СеквенÑоры" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Тюнеры" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "ТВ" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "ЭмулÑторы" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Экшен" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "ПриключениÑ" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Ðркады" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Блоки" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "ÐаÑтольные" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Карточные" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Ð”Ð»Ñ Ð´ÐµÑ‚ÐµÐ¹" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "ЛогичеÑкие" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Ролевые" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Шутеры" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "СимулÑторы" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Спортивные" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Стратегии" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Браузеры" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Общение" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Почта" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Обмен файлами" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Ðудио и видео" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Медиа" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Больше приложений Ð´Ð»Ñ Ð°ÑƒÐ´Ð¸Ð¾ и видео" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "ИнÑтрументы разработчика" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Разработчикам" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Больше приложений Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Образование" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Обучение" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Больше образовательных приложений" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Игры" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Игры" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Больше игр" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Графика и фотографиÑ" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "ТворчеÑтво" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Больше приложений Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ¸" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Сеть" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Сеть" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Больше Ñетевых приложений" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "ПродуктивноÑть" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Работа" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Больше приложений Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð¸Ð²Ð½Ð¾Ñти" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Ðаука" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Больше научных приложений" #: src/bz-flathub-category.c:142 msgid "System" msgstr "СиÑтема" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Больше ÑиÑтемных приложений" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Утилиты" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "ИнÑтрументы" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Больше утилит" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Ð’ тренде" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Больше трендовых" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "ПопулÑрное" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Больше популÑрных" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Ðедавно добавленные" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Ðовое" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Больше новинок" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Ðедавно обновлённые" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Обновлённые" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Больше обновлённых" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Мобильные" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Больше мобильных приложений" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Больше Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Больше приложений KDE" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Игры" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "Больше игр" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "ЭмулÑторы" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Больше ÑмулÑторов" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "Лаунчеры" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Больше игровых лаунчеров" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "ИнÑтрументы Ð´Ð»Ñ Ð¸Ð³Ñ€" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Больше инÑтрументов Ð´Ð»Ñ Ð¸Ð³Ñ€" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub не добавлен" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Репозиторий Flathub не найден ни в одной из ваших уÑтановок Flatpak" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub недоÑтупен" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Ðевозможно подключитьÑÑ Ðº Flathub" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Ð’Ñ‹ по-прежнему можете иÑкать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ управлÑть ими." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "ПоиÑк приложений" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "ПереподключитьÑÑ" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Приложение днÑ" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "Ð’Ñегда под рукой" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ð°ÑˆÐ¸Ñ… телефонов и планшетов на Linux" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "Больше мобильных приложений" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "Мы ♥ игры" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "Игры и Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка ваших любимых проектов" #: src/bz-full-view.blp:34 src/bz-library-page.blp:40 #: src/bz-library-page.blp:44 msgid "No Results" msgstr "Ðет результатов" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "Попробуйте изменить поиÑковый запроÑ" #: src/bz-full-view.blp:47 msgid "Content" msgstr "Содержимое" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Это локальный предпроÑмотр — некоторые детали могут отличатьÑÑ Ð¾Ñ‚ " "опубликованной Ñтраницы" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "ПредпроÑмотр Ñтраницы в магазине" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "_Поддержать" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Это приложение иÑпользует Ñреду выполнениÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ не получает " "Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº безопаÑноÑти. Оно может Ñтать небезопаÑным " "Ð´Ð»Ñ Ð¸ÑпользованиÑ." #: src/bz-full-view.blp:539 msgid "Trash Data" msgstr "Отправить в корзину" #: src/bz-full-view.blp:602 msgid "Add-ons" msgstr "ДополнениÑ" #: src/bz-full-view.blp:637 msgid "More Add-Ons" msgstr "Больше дополнений" #: src/bz-full-view.blp:648 msgid "Links" msgstr "СÑылки" #: src/bz-full-view.blp:679 msgid "Similar Apps" msgstr "Похожие приложениÑ" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Ðет URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Это приложение имеет лицензию FLOSS, а значит, его иÑходный код можно " "проверить на безопаÑноÑть." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Это приложение имеет проприетарную лицензию, а значит, его иÑходный код " "разрабатываетÑÑ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¾ и не может быть проверен незавиÑимой третьей " "Ñтороной." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Больше приложений" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Больше приложений от %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Другие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñтого разработчика" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "Другие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "%s не уÑтановлено, но на диÑке вÑÑ‘ ещё оÑтаётÑÑ <b>%s</b> его данных." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Другие приложениÑ" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d приложение" msgstr[1] "%d приложениÑ" msgstr[2] "%d приложений" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:141 msgid "Failed to Remove User Data" msgstr "Ðе удалоÑÑŒ удалить пользовательÑкие данные" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Поддержка оборудованиÑ" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Поддержка клавиатуры" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "ТребуетÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð°" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "РекомендуетÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð°" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Поддерживает клавиатуру" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Поддержка клавиатуры неизвеÑтна" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Поддержка мыши" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "ТребуетÑÑ Ð¼Ñ‹ÑˆÑŒ или указательное уÑтройÑтво" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "РекомендуетÑÑ Ð¼Ñ‹ÑˆÑŒ или указательное уÑтройÑтво" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Поддерживает мыши и указательные уÑтройÑтва" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Поддержка мыши и указательных уÑтройÑтв неизвеÑтна" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Поддержка ÑенÑорного Ñкрана" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "ТребуетÑÑ ÑенÑорный Ñкран" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "РекомендуетÑÑ ÑенÑорный Ñкран" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Поддерживает ÑенÑорные Ñкраны" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Поддержка ÑенÑорных Ñкранов неизвеÑтна" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Поддержка мобильных уÑтройÑтв" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Работает на мобильных уÑтройÑтвах" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Может плохо работать на мобильных уÑтройÑтвах" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Поддержка наÑтольных компьютеров" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Хорошо работает на больших Ñкранах" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s лучше вÑего работает на определённых уÑтройÑтвах" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s работает на большинÑтве уÑтройÑтв" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Меню инÑпектора" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Открыть" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Удалить приложение" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Удалить" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Обновить" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Удалить" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "УÑтановить %s из %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "УÑтановить %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Отмена" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "ОтменÑетÑÑ" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Кнопка пожертвованиÑ" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "ПоиÑк уÑтановленных приложений" #: src/bz-library-page.blp:33 msgid "No Apps Found" msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ найдены" #: src/bz-library-page.blp:52 msgid "Search Store Instead" msgstr "ИÑкать в магазине" #. Translators: . #: src/bz-library-page.blp:62 src/bz-window.blp:114 msgid "Library" msgstr "Библиотека" #: src/bz-library-page.blp:91 msgid "Pending Updates" msgstr "Ожидают обновлениÑ" #: src/bz-library-page.blp:118 msgid "Downloads" msgstr "Загрузки" #: src/bz-library-page.blp:161 msgid "Recently Uninstalled" msgstr "Ðедавно удалённые" #: src/bz-library-page.blp:212 msgid "Clear Finished Tasks" msgstr "ОчиÑтить выполненные задачи" #: src/bz-library-page.blp:239 msgid "Sort Options" msgstr "Параметры Ñортировки" #: src/bz-library-page.blp:298 msgid "Sort By" msgstr "Сортировка" #: src/bz-library-page.blp:312 msgid "Name" msgstr "Ðазвание" #: src/bz-library-page.blp:318 msgid "Size" msgstr "Размер" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Ðет результатов по запроÑу «%s» в ÑпиÑке уÑтановленных приложений" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "ДоÑтупно %u обновление" msgstr[1] "ДоÑтупно %u обновлениÑ" msgstr[2] "ДоÑтупно %u обновлений" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u уÑтановленное приложение" msgstr[1] "%u уÑтановленных приложениÑ" msgstr[2] "%u уÑтановленных приложений" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ найдены" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Ðайдено %u приложение" msgstr[1] "Ðайдено %u приложениÑ" msgstr[2] "Ðайдено %u приложений" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "ВнеÑти вклад" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Узнать больше" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Сделано ÑообщеÑтвом" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:288 msgid "Proprietary" msgstr "Проприетарное" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:290 msgid "Special License" msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Это приложение разрабатываетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¾ международным ÑообщеÑтвом.\n" "\n" "Ð’Ñ‹ можете внеÑти Ñвой вклад и Ñделать Ñто приложение ещё лучше." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ñтого Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтна" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Это приложение открыто разрабатываетÑÑ Ð¼ÐµÐ¶Ð´ÑƒÐ½Ð°Ñ€Ð¾Ð´Ð½Ñ‹Ð¼ ÑообщеÑтвом и " "выпуÑкаетÑÑ Ð¿Ð¾Ð´ лицензией %s.\n" "\n" "Ð’Ñ‹ можете внеÑти Ñвой вклад и Ñделать Ñто приложение ещё лучше." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Это приложение не разрабатываетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¾, поÑтому только его разработчики " "знают как оно работает. Оно может быть небезопаÑным в некоторых меÑтах, " "которые Ñложно опознать, и оно может изменитьÑÑ Ð±ÐµÐ· предупреждениÑ.\n" "\n" "Ð’Ñ‹ можете не иметь возможноÑти внеÑти вклад в Ñто приложение." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Это приложение разрабатываетÑÑ Ð¿Ð¾Ð´ Ñпециальной лицензией %s.\n" "\n" "Ð’Ñ‹ можете не иметь возможноÑти внеÑти вклад в Ñто приложение." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "ЛицензиÑ" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Подключение к Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Что-то пошло не так" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "" "Войдите, чтобы Ñинхронизировать избранные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ уÑтройÑтвами" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Завершить" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "ПриветÑтвуем, %s!" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "Выбрать файл метаданных" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Файлы метаданных" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "Выбрать иконку (необÑзательно)" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "Файлы изображений" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "Предварительный проÑмотр" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Параметры" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Сетевое Ñоединение ограничено — автоматичеÑкое обновление данных магазина " "приоÑтановлено" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Обновить вручную" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹" #: src/bz-preferences-dialog.blp:46 msgid "" "Checking for and downloading app updates uses data and power. Automatic app " "update features are therefore paused when on metered network connections and " "when power saver is on." msgstr "" "Проверка Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð¸ загрузка обновлений раÑходуют трафик и Ñнергию. ПоÑтому " "автоматичеÑкое обновление приложений приоÑтанавливаетÑÑ Ð¿Ñ€Ð¸ иÑпользовании " "Ñетей Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð½Ð¾Ð¹ тарификацией и при включённом режиме ÑнергоÑбережениÑ." #: src/bz-preferences-dialog.blp:52 msgid "_Automatic" msgstr "_ÐвтоматичеÑки" #: src/bz-preferences-dialog.blp:53 msgid "Automatically check for and download app updates" msgstr "ÐвтоматичеÑки проверÑть наличие обновлений и загружать их" #: src/bz-preferences-dialog.blp:62 msgid "_Manual" msgstr "_Вручную" #: src/bz-preferences-dialog.blp:63 msgid "Checking for and downloading app updates must be done manually" msgstr "" "Проверку Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð¸ загрузку обновлений необходимо выполнÑть вручную" #: src/bz-preferences-dialog.blp:78 msgid "Automatic Update _Notifications" msgstr "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ð± _автоматичеÑких обновлениÑÑ…" #: src/bz-preferences-dialog.blp:79 msgid "Notify when updates have been automatically installed" msgstr "УведомлÑть, когда Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ уÑтановлены автоматичеÑки" #: src/bz-preferences-dialog.blp:84 msgid "Content Filters" msgstr "Фильтры Ñодержимого" #: src/bz-preferences-dialog.blp:87 msgid "_Free Software Only" msgstr "_Только Ñвободные приложениÑ" #: src/bz-preferences-dialog.blp:88 msgid "Hide proprietary apps when browsing and searching" msgstr "Скрыть проприетарные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ обзоре и поиÑке" #: src/bz-preferences-dialog.blp:93 msgid "F_lathub Results Only" msgstr "Только результаты из F_lathub" #: src/bz-preferences-dialog.blp:94 msgid "Limit search and browse results to apps only available on Flathub" msgstr "Ограничить обзор и результаты поиÑка только приложениÑми из Flathub" #: src/bz-preferences-dialog.blp:99 msgid "_Verified Results Only" msgstr "_Только подтверждённые результаты" #: src/bz-preferences-dialog.blp:100 msgid "Hide results that are not verified on Flathub" msgstr "Скрыть приложениÑ, которые не ÑвлÑÑŽÑ‚ÑÑ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¼Ð¸ на Flathub" #: src/bz-preferences-dialog.blp:105 msgid "Hide _End-of-Life Apps" msgstr "Скрыть _неподдерживаемые приложениÑ" #: src/bz-preferences-dialog.blp:106 msgid "Hide apps which are no longer supported by their developers" msgstr "Скрыть приложениÑ, которые больше не поддерживаютÑÑ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°Ð¼Ð¸" #: src/bz-preferences-dialog.blp:112 msgid "Progress Bar Theme" msgstr "Тема полоÑÑ‹ прогреÑÑа" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Цвет акцента" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Цвета гордоÑти" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Цвета гордоÑти леÑбиÑнок" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Цвета гордоÑти мужчин гомоÑекÑуалов" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Цвета гордоÑти транÑгендеров" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Цвета гордоÑти небинарных людей" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Цвета гордоÑти биÑекÑуалов" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Цвета гордоÑти аÑекÑуалов" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Цвета гордоÑти панÑекÑуалов" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Цвета гордоÑти аромантиков" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Цвета гордоÑти гендерфлюид" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Цвета гордоÑти полиÑекÑуалов" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Цвета гордоÑти омниÑекÑуалов" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Цвета гордоÑти ароÑйÑ" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Цвета гордоÑти агендеров" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Цвета гордоÑти гендерквиров" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Цвета гордоÑти интерÑекÑ" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Цвета гордоÑти демигендеров" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Цвета гордоÑти биромантиков" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Цвета гордоÑти людей Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð½Ñ‹Ð¼Ð¸ возможноÑÑ‚Ñми" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Цвета гордоÑти фембоев" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Цвета гордоÑти нейтроиÑ" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²ÐµÑ€Ñий" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²ÐµÑ€Ñий" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "СегоднÑ" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Вчера" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d день назад" msgstr[1] "%d Ð´Ð½Ñ Ð½Ð°Ð·Ð°Ð´" msgstr[2] "%d дней назад" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d неделю назад" msgstr[1] "%d недели назад" msgstr[2] "%d недель назад" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d меÑÑц назад" msgstr[1] "%d меÑÑца назад" msgstr[2] "%d меÑÑцев назад" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d год назад" msgstr[1] "%d года назад" msgstr[2] "%d лет назад" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "ВерÑÐ¸Ñ %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Ðет Ñведений об Ñтом выпуÑке" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Получить дополнительную информацию" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Удалить" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Скачать" #: src/bz-safety-dialog.blp:31 src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Произвольные разрешениÑ" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Это приложение имеет разрешение, которое коÑвенно позволÑет ему выдавать " "Ñебе <b>любые другие разрешениÑ</b>, Ð¾Ð±Ñ…Ð¾Ð´Ñ Ð¿ÐµÑочницу Flatpak.\n" "\n" "ПоÑтому оно может делать вÑÑ‘ то же, что и обычное приложение вне пеÑочницы, " "например получать доÑтуп ко вÑем вашим файлам и подключатьÑÑ Ðº интернету.\n" "\n" "Тем не менее проÑмотр оÑтальных разрешений может дать предÑтавление о том, " "что приложение, Ñкорее вÑего, будет делать." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "ПоÑмотреть другие разрешениÑ" #: src/bz-safety-dialog.blp:79 src/context-tile-callbacks.c:400 msgid "Safe" msgstr "БезопаÑно" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "ID приложениÑ" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Это приложение иÑпользует уÑтаревшую верÑию платформы разработки (SDK) и " "может Ñодержать ошибки или уÑзвимоÑти, которые не будут иÑправлены." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "БезопаÑноÑть" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s безопаÑно" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s не имеет небезопаÑных разрешений" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s, вероÑтно, безопаÑно" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s, возможно, небезопаÑно" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s небезопаÑно" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Ðазад" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Предыдущий Ñкриншот" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Следующий Ñкриншот" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Скопировать изображение" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "СброÑить вид" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Отдалить" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Приблизить" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "КаруÑель Ñкриншотов" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Ðет Ñкриншотов" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Открыть проÑмотрщик Ñкриншотов" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Скриншот %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Скриншот %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "ОчиÑтить поиÑк" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Фильтры" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Подтверждённые" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Свободные" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "П_оддерживаемые" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Отфильтровать неподдерживаемые приложениÑ" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Ð”Ð»Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ñ‹Ñ…" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Категории" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "ПоиÑк приложений, игр, ПО" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Фильтры поиÑка" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Обзор категорий" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Категории недоÑтупны" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Ищите Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñтроки поиÑка выше." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ найдены" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Ðет результатов по запроÑу «%s» в Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Видео" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "ОфиÑ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Календарь" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Общение" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "РиÑование" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Торрент" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "ЭмулÑторы" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Страница Flathub" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Веб-Ñайт проекта" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "ОтÑлеживание ошибок" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "ЧаÑто задаваемые вопроÑÑ‹" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Помощь" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Пожертвовать" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Перевод" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "СвÑзатьÑÑ" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "ИÑходный код" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "ВнеÑти вклад" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "МанифеÑÑ‚" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Скопировать ÑÑылку" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑˆÐºÐ°Ð»Ð°" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "УÑтановок:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Карта мира" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "С 15 Ð°Ð¿Ñ€ÐµÐ»Ñ 2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "Ð’Ñего уÑтановок: %.2f млн" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "Ð’Ñего уÑтановок: %.2f тыÑ." #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "Ð’Ñего уÑтановок: %'d" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Результаты не найдены" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Ошибка поиÑка" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "ОÑтавить пользовательÑкие данные" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "ПозволÑет воÑÑтановить личные наÑтройки и данные" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Удалить вÑе данные" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Безвозвратно удалÑет пользовательÑкие данные, оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°Ñ Ð¼ÐµÑто" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "УÑтановить %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Выберите, какую верÑию уÑтановить. Также могут быть уÑтановлены " "дополнительные общие компоненты" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Также могут быть уÑтановлены дополнительные общие компоненты" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_Отмена" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_УÑтановить" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Удалить %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Выберите, какую верÑию удалить." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "ПоÑле ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ñпользовать %s будет невозможно." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "«%s» — приложение выÑокого риÑка" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Это приложение имеет полный доÑтуп к вашей ÑиÑтеме, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²Ñе <b>ваши " "файлы, иÑторию браузера, Ñохранённые пароли</b> и многое другое. Оно также " "имеет доÑтуп к интернету, а значит, может отправлÑть ваши данные третьим " "лицам.\n" "\n" "Так как приложение проприетарное, невозможно проверить, что оно делает Ñ " "Ñтими разрешениÑми." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Это приложение иÑпользует уÑтаревшую оконную ÑиÑтему X11, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет " "ему <b>запиÑывать вÑе Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ, делать Ñнимки Ñкрана и Ñледить за " "другими приложениÑми</b>. Оно также имеет доÑтуп к интернету, а значит, " "может отправлÑть ваши данные третьим лицам.\n" "\n" "Так как приложение проприетарное, невозможно проверить, что оно делает Ñ " "Ñтими разрешениÑми." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Ð’ÑÑ‘ равно уÑтановить" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Ðе удалоÑÑŒ загрузить диалог транзакции" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Ð’Ñе Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑƒÐ¶Ðµ уÑтановлены" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_ОК" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "УÑтановить %u приложение?" msgstr[1] "УÑтановить %u приложениÑ?" msgstr[2] "УÑтановить %u приложений?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Будет уÑтановлено Ñледующее. Также могут быть уÑтановлены дополнительные " "общие компоненты" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "Будет уÑтановлено дополнений: %d." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Также будут уÑтановлены дополнениÑ." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_УÑтановить вÑе" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "Завершено за %.02f Ñ" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Дополнение к приложению" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Среда выполнениÑ" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "Ð’ очереди" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Готово" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Отменено" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Ошибка" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "Отменить транзакцию" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Показать детали" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Показать информацию об ошибке" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "ОÑвобождено %s" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Ошибка транзакции" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Ð’ ожидании" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Обновить вÑе" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u обновление Ñреды выполнениÑ" msgstr[1] "%u Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñред выполнениÑ" msgstr[2] "%u обновлений Ñред выполнениÑ" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Управление оÑтавшимиÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкими данными" #: src/bz-user-data-page.blp:34 msgid "No User Data Found" msgstr "ПользовательÑкие данные не найдены" #: src/bz-user-data-page.blp:40 msgid "User Data" msgstr "ПользовательÑкие данные" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Открыть папку пользовательÑких данных" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Отправить в корзину" #: src/bz-user-data-tile.c:147 #, c-format msgid "Trashed User Data for %s" msgstr "ПользовательÑкие данные %s отправлены в корзину" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Обновление" #: src/bz-window.blp:90 msgid "Curated" msgstr "Курируемое" #: src/bz-window.blp:102 msgid "Explore" msgstr "Обзор" #: src/bz-window.blp:129 msgid "Search" msgstr "ПоиÑк" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Главное меню" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Ð’Ñ‹ иÑпользуете новую верÑию Bazaar!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "ПоÑмотреть что нового" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Сетевое подключение еÑть, но вы проÑматриваете кÑшированную верÑию Flathub" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "" "Сетевое Ñоединение ограничено — автоматичеÑкое обновление отключено" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Поддержать Bazaar" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Обновить" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "_Войти в Flathub" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_УправлÑть оÑтавшимиÑÑ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "П_араметры" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "_О приложении" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_Завершить Bazaar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Выйти" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Ðе удалоÑÑŒ запуÑтить приложение" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Ð’Ñ‹ не можете удалить Bazaar из Bazaar!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ñто Ñделать нельзÑ!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "уÑтановка" msgstr[1] "уÑтановки" msgstr[2] "уÑтановок" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*f млн" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*f тыÑ." #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d загрузок за поÑледний меÑÑц" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s на Ñреду выполнениÑ" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "Скачивание" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ размере недоÑтупна" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "Размер ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ %s" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Ð”Ð»Ñ Ð²Ñех" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ возраÑтном ограничении недоÑтупна" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Подходит Ð´Ð»Ñ Ð²Ñех возраÑтов" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "Подходит Ð´Ð»Ñ Ð»Ð¸Ñ† Ñтарше %d лет" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "ÐеизвеÑтно" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "Свободное программное обеÑпечение, лицензированное под %s" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Свободное программное обеÑпечение" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Проприетарное программное обеÑпечение" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Свободное приложение" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "Ðдаптивное" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "Только Ð´Ð»Ñ ÐŸÐš" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "Работает на наÑтольных компьютерах, планшетах и телефонах" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Может не работать на мобильных уÑтройÑтвах" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Ðизкий риÑк" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Средний риÑк" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Ð’Ñ‹Ñокий риÑк" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "ÐеизвеÑтные разрешениÑ" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÑутÑтвуют." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Ðет разрешений" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Приложение полноÑтью изолировано" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "ДоÑтуп к Ñети" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Может получить доÑтуп к интернету" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Ðет доÑтупа к Ñети" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Ðе может получить доÑтуп к интернету" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "ДоÑтуп к уÑтройÑтвам пользователÑ" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "" "Может получить доÑтуп к таким уÑтройÑтвам, как веб-камеры или игровые " "контроллеры" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Ðет доÑтупа к уÑтройÑтвам пользователÑ" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" "Ðе может получить доÑтуп к таким уÑтройÑтвам, как веб-камеры или игровые " "контроллеры" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "ДоÑтуп к уÑтройÑтвам ввода" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Может получить доÑтуп к уÑтройÑтвам ввода" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "ДоÑтуп к микрофону и воÑпроизведение звука" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "Может проÑлушивать звук через микрофон и воÑпроизводить аудио, не Ð·Ð°Ð¿Ñ€Ð°ÑˆÐ¸Ð²Ð°Ñ " "разрешениÑ" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "ДоÑтуп к ÑиÑтемным уÑтройÑтвам" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" "Может получить доÑтуп к ÑиÑтемным уÑтройÑтвам, требующим повышенных " "разрешений" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "ДоÑтуп к Ñодержимому Ñкрана" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Может получить доÑтуп к Ñодержимому Ñкрана или других окон" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "УÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ð¾ÐºÐ¾Ð½Ð½Ð°Ñ ÑиÑтема" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Ð’Ñегда иÑпользует уÑтаревшую оконную ÑиÑтему (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Может получить произвольные разрешениÑ" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "ПользовательÑкие наÑтройки" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Может проÑматривать и изменÑть пользовательÑкие наÑтройки" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Полный доÑтуп к файловой ÑиÑтеме на чтение/запиÑÑŒ" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Может читать и запиÑывать вÑе данные в файловой ÑиÑтеме" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "ДоÑтуп к домашней папке Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ/запиÑи" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Может читать и запиÑывать вÑе данные в вашей домашней папке" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Полный доÑтуп к файловой ÑиÑтеме на чтение" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Может читать вÑе данные в файловой ÑиÑтеме" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "ДоÑтуп на чтение домашней папки" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Может читать вÑе данные в вашей домашней папке" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "ДоÑтуп Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ/запиÑи в папку загрузки" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Может читать и запиÑывать вÑе данные в вашей папке загрузки" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "ДоÑтуп на чтение папки загрузки" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Может читать вÑе данные в вашей папке загрузки" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Может читать и запиÑывать вÑе данные в папке" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Может читать вÑе данные в папке" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Ðет доÑтупа к файловой ÑиÑтеме" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Ðе может получить доÑтуп к файловой ÑиÑтеме" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "ИÑпользует ÑиÑтемные Ñлужбы" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Может запрашивать данные у ÑиÑтемных Ñлужб, не отноÑÑщихÑÑ Ðº порталу" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "ИÑпользует Ñлужбы ÑеанÑа" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Может запрашивать данные у Ñлужб ÑеанÑа, не отноÑÑщихÑÑ Ðº порталу" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Ðет доÑтупа к Ñлужбам" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "" "Ðе имеет доÑтупа к Ñлужбам ÑеанÑа или ÑиÑтемным, не отноÑÑщимÑÑ Ðº порталу" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Подтверждённый разработчик приложениÑ" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "" "Разработчик Ñтого Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¸Ð», что ÑвлÑетÑÑ Ñ‚ÐµÐ¼, за кого ÑÐµÐ±Ñ " "выдает" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Проприетарный код" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "ИÑходный код не ÑвлÑетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼, поÑтому не может быть подвергнут " "незавиÑимому аудиту и может быть небезопаÑным" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "ПроверÑемый код" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "ИÑходный код ÑвлÑетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ и может быть подвергнут незавиÑимому аудиту, " "что повышает вероÑтноÑть того, что приложение безопаÑно" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "ИÑпользует ÑиÑтемную Ñлужбу %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "ИÑпользует Ñлужбу ÑеанÑа %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "ИÑпользует Ñлужбу %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Может проÑматривать Ñлужбу, не отноÑÑщуюÑÑ Ðº порталу" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Может обращатьÑÑ Ðº Ñлужбе, не отноÑÑщейÑÑ Ðº порталу" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Может быть владельцем Ñлужбы, не отноÑÑщейÑÑ Ðº порталу" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ меню" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Может показывать Ñвоё меню в глобальной панели меню" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ñ Ð½Ð°Ñтройками KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Может определÑть изменение в наÑтройках рабочего Ñтола KDE" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Глобальные параметры KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "" "Может читать параметры рабочего Ñтола KDE, такие как шрифты и цвета" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Служба Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñекретов" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Может ÑохранÑть и получать Ñвои пароли, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÑиÑтемную ÑвÑзку ключей" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Служба уведомлений рабочего Ñтола" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Может отправлÑть ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ð° рабочий Ñтол" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ñ ÑиÑтемным треем" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Может отображать значок в ÑиÑтемном трее" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ñ KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "" "Может взаимодейÑтвовать Ñ ÑƒÑтройÑтвами, ÑопрÑжёнными через KDE Connect" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "ÐавигациÑ" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Открыть Ñтраницу обзора" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Открыть Ñтраницу библиотеки" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Открыть Ñтраницу поиÑка" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Репозитории" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Синхронизировать репозитории" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Общее" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Открыть параметры" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показать комбинации клавиш" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Закрыть окно" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Завершить Bazaar" #: src/update-worker.c:358 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "Обновлено %u приложение" msgstr[1] "Обновлено %u приложениÑ" msgstr[2] "Обновлено %u приложений" #: src/update-worker.c:361 #, c-format msgid "%s has been updated." msgstr "Приложение %s обновлено." #: src/update-worker.c:364 #, c-format msgid "%s and %s have been updated." msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %s и %s обновлены." #: src/update-worker.c:368 #, c-format msgid "Includes %s, %s and %s." msgstr "Ð’ том чиÑле %s, %s и %s." #~ msgid "Clear search" #~ msgstr "ОчиÑтить поиÑк" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/sl.po������������������������������������������������������������������0000664�0000000�0000000�00000304030�15240005042�0016732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Slovenian translation for bazaar. # Copyright (C) 2026 bazaar's COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Martin <miles@filmsi.net>, 2026. # msgid "" msgstr "" "Project-Id-Version: bazaar main\n" "Report-Msgid-Bugs-To: https://github.com/bazaar-org/bazaar/issues\n" "POT-Creation-Date: 2026-08-11 13:49+0000\n" "PO-Revision-Date: 2026-08-12 03:02+0200\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || " "n%100==4 ? 3 : 0);\n" "X-Generator: Poedit 3.8\n" "X-Poedit-SourceCharset: UTF-8\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "Trgovina programov" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "" "Dodajajte, odstranjujte in posodabljajte programsko opremo flatpak na tem " "raÄunalniku" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "" "sistem;paket;upravitelj;odkrij;Flatpak;pogramska oprema;aplikacija;trgovina;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Novo okno" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Odkrijte in namestite programe" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Hitra in sodobna trgovina s programi za Linux, namenjena predvsem odkrivanju " "in namestitvi programov ter dodatkov v obliki Flatpak, zlasti iz Flathuba." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Postavite veÄ namestitev v vrsto in nadaljujte z brskanjem" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Enostavno preglejte pravice programa" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "VpiÅ¡ite se v Flathub, da vidite in upravljate svoje priljubljene" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Programe iÅ¡Äite neposredno iz lupine GNOME" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:771 msgid "The Bazaar Contributors" msgstr "Avtorji prispevkov Bazarja" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "DomaÄa stran, ki prikaže programe Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "App page for Exhibit" msgstr "Stran predstavitve programa" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Stran knjižnic" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Iskalna stran" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Stran kategorij" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Ne prejema veÄ posodobitev" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Odstrani namestitev" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Namesti" #: src/bz-addons-dialog.blp:7 msgid "Add-on" msgstr "Dodatek" #: src/bz-addons-dialog.blp:15 src/bz-addons-dialog.blp:22 #: src/bz-addons-dialog.blp:71 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Upravljaj dodatke" #: src/bz-addons-dialog.blp:81 msgid "No Add-Ons Visible" msgstr "Dodatki niso vidni" #: src/bz-addons-dialog.blp:82 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "VaÅ¡e trenutne nastavitve filtrov skrivajo vse znane dodatke. Poskusite jih " "prilagoditi." #: src/bz-addons-dialog.blp:89 msgid "Add-on Page" msgstr "Stran dodatkov" #: src/bz-addons-dialog.blp:205 src/bz-full-view.blp:408 msgid "Downloads/Month" msgstr "prenosov na mesec" #: src/bz-addons-dialog.blp:232 src/bz-full-view.blp:444 msgid "Stopped Receiving Core Updates" msgstr "Ne prejema veÄ jedrnih posodobitev" #: src/bz-addons-dialog.blp:246 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Ta dodatek uporablja izvedbeno okolje, za katero se ne izdajajo veÄ " "posodobitve ali varnostne popravke. Njegova uporaba lahko postane nevarna." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "Dodatek za %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Pokaži manj" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Pokaži veÄ" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Statistika prejemov" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:737 src/context-tile-callbacks.c:187 #: src/context-tile-callbacks.c:194 msgid "Age Rating" msgstr "Ocena starosti" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "‧Risano nasilje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Ni podatkov o risanem prikazovanju nasilja" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "‧Fantazijsko nasilje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Ni podatkov o fantazijskem prikazovanju nasilja" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "‧RealistiÄno nasilje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Ni podatkov o realistiÄnem prikazovanju nasilja" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "‧Prelivanje krvi" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Ni podatkov o prikazovanju prelivanja krvi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "‧Spolno nasilje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Ni podatkov o prikazovanju spolnega nasilja" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alkohol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Ni podatkov o omenjanju alkoholnih pijaÄ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "‧Droge" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Ni podatkov o omenjanju prepovedanih drog" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "‧Tobak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Ni podatkov o omenjanju tobaÄnih izdelkov" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "‧Golota" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Ni podatkov o prikazu kakrÅ¡nekoli golote" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "‧Spolne teme" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Ni podatkov o kakrÅ¡nemkoli sklicevanju ali prikazovanju spolnosti" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "‧Preklinjanje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Ni podatkov o kletvicah in preklinjanju" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "‧Nekorekten humor" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Ni podatkov o neprimernem humorju" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "‧Diskriminacija" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Ni podatkov o kakrÅ¡nemkoli diskriminatornem namigovanju" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "‧OglaÅ¡evanje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Ni podatkov o kakrÅ¡nemkoli oglaÅ¡evanju" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "‧Igre na sreÄo" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Ni podatkov o sklicevanju na igre na sreÄo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "‧Nakupovanje" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Ni podatkov o sklicevanju na zapravljanje" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "‧Klepet med uporabniki" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Ni podatkov o možnostih klepeta z drugimi uporabniki" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "‧ZvoÄni klepet med uporabniki" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Ni podatkov o možnostih pogovora z drugimi uporabniki" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "‧Podrobnosti stikov" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Ni podatkov o možnosti objavljanja uporabniÅ¡kih imen družbenih omrežij ali " "elektronskih naslovov" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "‧DoloÄevalne podrobnosti" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "" "Ni podatkov o možnostih objavljanja uporabniÅ¡kih podrobnosti tretjim osebam" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "‧Objavljanje mesta" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "" "Ni podatkov o možnosti objavljanja geolokacijskih podatkov drugim uporabnikom" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "‧Prostitucija" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Ni podatkov o sklicevanju na prostitucijo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "‧Nezvestoba" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Ni podatkov o sklicevanju na nezvestobo" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "‧Spolno izraženi posamezniki" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Ni podatkov o spolno izraženim lastnostih likov" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "‧Skrunitev" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Ni podatkov o sklicevanju na skrunjenje ÄloveÅ¡kega telesa" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "‧Ostanki ÄloveÅ¡kih teles" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Ni podatkov o prikazovanju ostankov mrtvih ljudi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "‧Suženjstvo" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Ni podatkov o sklicevanju na suženjstvo" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Ni omenjanja prepovedanih drog" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Ne vkljuÄuje preklinjanja, žaljivk in drugih vrst ostrega jezika" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Ne vkljuÄuje oglasov ali napeljevanja na kupovanje" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Ne vkljuÄuje golote ali spolnosti" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Ne vkljuÄuje nenadzorovane možnosti klepeta med uporabniki" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Ne vkljuÄuje nasilja" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "‧Droge" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Ostro jezikovno izražanje" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "‧Denar" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Družbena omrežja" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "‧Nasilje" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:177 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:712 msgctxt "Age rating" msgid "All" msgstr "Vsi" #: src/bz-age-rating-dialog.c:748 #, c-format msgid "%s has an unknown age rating" msgstr "Program %s nima podatka o starostni omejitvi" #: src/bz-age-rating-dialog.c:754 #, c-format msgid "%s is suitable for everyone" msgstr "Progam %s je primeren za vse uporabnike" #: src/bz-age-rating-dialog.c:757 #, c-format msgid "%s is suitable for young children" msgstr "Progam %s je primeren za majhne otroke" #: src/bz-age-rating-dialog.c:760 #, c-format msgid "%s is suitable for children" msgstr "Progam %s je primeren za otroke" #: src/bz-age-rating-dialog.c:763 #, c-format msgid "%s is suitable for teenagers" msgstr "Progam %s je primeren za najstnike" #: src/bz-age-rating-dialog.c:766 #, c-format msgid "%s is suitable for adults" msgstr "Progam %s je primeren za odrasle" #: src/bz-age-rating-dialog.c:769 #, c-format msgid "%s is suitable for %s" msgstr "Progam %s je primeren za skupino %s" #: src/bz-age-rating-dialog.c:868 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Sistemska mapa %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Podrejena osebna mapa %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Sistemske gostiteljske mape" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Nastavitve gostiteljevega sistema iz /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Podrejena mapa namizja %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Mapa namizja" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Podrejena mapa dokumentov %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Mapa dokumentov" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Podrejena mapa glasbe %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Glasbena mapa" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Podrejena mapa slik %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Mapa s slikami" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Podrejena mapa javne souporabe %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Mapa javne souporabe" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Podrejena mapa videa %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Mapa video posnetkov" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Podrejena mapa predlog %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Mapa predlog" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Podrejena mapa uporabnikovega predpomnilnika %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Uporabnikova mapa predpomnilnika" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Podrejena mapa uporabniÅ¡kih nastavitev %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Mapa uporabniÅ¡kih nastavitev" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Podrejena mapa uporabnikovih podatkov %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "UporabniÅ¡ka podatkovna mapa" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Podrejena uporabnikova izvedbena mapa %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "UporabniÅ¡ka izvajalna mapa" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Dostopa do datoteÄnega sistema %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Neznana pot datoteÄnega sistema" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Velikost prejema" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Velikost namestitve" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "KoliÄina za prejem iz interneta" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Velikost na disku" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Odpri uporabniÅ¡ko podatkovno mapo" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "VaÅ¡i uporabniÅ¡ki podatki" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Predpomnilniki, nastavitve in drugi podatki programa" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Predpomnilnik" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "ZaÄasni podatki predpomnilnika" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "PoÄisti predpomnilnik" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Velikost nameÅ¡Äenega progama" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Velikost prejetega programa" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:394 #: src/context-tile-callbacks.c:416 msgid "N/A" msgstr "ni na voljo" #: src/bz-app-size-dialog.c:195 src/bz-app-size-dialog.c:208 msgid "Storage" msgstr "Shramba" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Overjeno" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:136 msgid "Installed" msgstr "NameÅ¡Äeno" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:774 msgid "translator-credits" msgstr "Martin Srebotnjak <miles@filmsi.net>" #: src/bz-application.c:784 msgid "Special Thanks" msgstr "Posebne zahvale" #: src/bz-application.c:842 msgid "Logged Out Successfully!" msgstr "UspeÅ¡no odjavljeni!" #: src/bz-application.c:1048 msgid "Ubuntu Troubles!" msgstr "Težave z Ubuntujem!" #: src/bz-application.c:1051 msgid "" "Ubuntu 25.10 and newer have messed up default security rules, making it " "<b>impossible to install apps</b> from the Flatpak version of Bazaar, please " "just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "V Ubuntu 25.10 in novejÅ¡ih razliÄicah so privzeta varnostna pravila napaÄno " "nastavljena, zaradi Äesar <b>ni možno namestiti programov</b> iz razliÄice " "Bazar za Flatpak; zaenkrat prosimo, da uporabite obiÄajni paket s pomoÄjo " "ukaza\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "To razliÄico za Flatpak lahko nato odstranite z ukazom\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1057 msgid "Continue Anyway" msgstr "Vseeno nadaljuj" #: src/bz-application.c:1073 msgid "Performing setup…" msgstr "Izvajanje namestitve …" #: src/bz-application.c:1172 msgid "Set Up System Flathub?" msgstr "Ali želite nastaviti sistemski Flathub?" #: src/bz-application.c:1175 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Sistem Flathub remote ni nastavljen. Bazar za brskanje po programih in " "njihovo namestitev zahteva, da je Flathub prilagojen v sistemski namestitvi " "Flatpak.\n" "\n" "Bazar lahko Å¡e vedno uporabljate za brskanje po že nameÅ¡Äenih programih in " "njihovo odstranjevanje." #: src/bz-application.c:1182 msgid "Set Up Flathub?" msgstr "Ali želite nastaviti flathub?" #: src/bz-application.c:1185 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Sistem Flathub ni nastavljen na tem sistemu. V Bazarju ne boste mogli " "brskati po programih in jih nameÅ¡Äati, Äe ni na voljo.\n" "\n" "Bazar lahko Å¡e vedno uporabljate za brskanje po že nameÅ¡Äenih programih in " "njihovo odstranjevanje." #: src/bz-application.c:1191 msgid "Later" msgstr "Kasneje" #: src/bz-application.c:1192 msgid "Set Up Flathub" msgstr "Nastavi flathub" #: src/bz-application.c:1726 msgid "A backend error occurred" msgstr "PriÅ¡lo je do napake zaledja" #: src/bz-application.c:1934 src/bz-application.c:4204 msgid "Refreshing…" msgstr "Poteka osveževanje …" #: src/bz-application.c:2098 #, c-format msgid "Loading %d apps…" msgstr "Nalaganje %d programov …" #: src/bz-application.c:2151 src/bz-application.c:2225 msgid "Failed to open file" msgstr "Odpiranje datoteke ni uspelo" #: src/bz-application.c:2239 msgid "Failed to load metainfo" msgstr "Nalaganje metapodatkov je spodletelo" #: src/bz-application.c:2333 msgid "An initialization error occurred" msgstr "PriÅ¡lo je do napake inicializacije" #: src/bz-application.c:2732 msgid "Checking for updates…" msgstr "Preverjanje posodobitev ..." #: src/bz-application.c:2788 msgid "Failed to check for updates" msgstr "Preverjanja obstoja posodobitev ni bilo uspeÅ¡no" #: src/bz-application.c:3975 msgid "Malformed Link" msgstr "NapaÄno oblikovana povezava" #: src/bz-application.c:3976 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Povezava, uporabljena za odpiranje tega programa, ima nepravilno doloÄene " "velike zaÄetnice in lahko v prihodnje preneha delovati.\n" "\n" "Vzrok je najverjetneje KRunner, ki poÅ¡ilja nepravilne ID-je programa" #: src/bz-application.c:3984 msgid "Could not find app" msgstr "Programa ni možno najti" #: src/bz-application.c:4201 #, c-format msgid "Loading %d app…" msgid_plural "Loading %d apps…" msgstr[0] "Nalaganje %d programov …" msgstr[1] "Nalaganje %d programa …" msgstr[2] "Nalaganje %d programov …" msgstr[3] "Nalaganje %d programov …" #: src/bz-application.c:4206 msgid "Writing to cache…" msgstr "Pisanje v predpomnilnik …" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Pokaži vse" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Vse »%s«" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d programov" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Prispevka/Älanks ni možno naložiti" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Namestitev svežnja" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Dodatne odvisnosti lahko zavzamejo dodaten prostor" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Za namestitev tega programa bo morda treba dodati nov vir programske opreme. " "Drugi programi iz tega vira se bodo prikazali v trgovini Bazar.\n" "\n" "Ta vir dodajte le, Äe ste prepriÄani, da mu zaupate." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "UspeÅ¡no nameÅ¡Äeno!" #. TRANSLATORS: Button to launch an installed app #: src/bz-bundle-install-dialog.blp:438 src/bz-bundle-install-dialog.blp:524 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:300 msgid "Open" msgstr "Odpri" #: src/bz-bundle-install-dialog.blp:448 src/bz-bundle-install-dialog.blp:534 msgid "Show App Details" msgstr "Pokaži podrobnosti o programu" #: src/bz-bundle-install-dialog.blp:499 msgid "Already Installed" msgstr "Že nameÅ¡Äeno" #: src/bz-bundle-install-dialog.blp:546 msgid "Installation Failed" msgstr "Namestitev je spodletela" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Velikost nameÅ¡Äenega ni znana" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "O programu %s, ki bo nameÅ¡Äen" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Ni posebnih dovoljenj" #: src/bz-curated-view.blp:27 msgid "No Curation" msgstr "Ni kurirano" #: src/bz-curated-view.blp:29 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Na tem sistemu niso podani podatki o kuriranju. Kljub temu lahko prebrskate " "programe na Flathubu" #: src/bz-curated-view.blp:33 msgid "Browse Flathub" msgstr "Prebrskaj Flathub" #: src/bz-curated-view.blp:49 msgid "Offline" msgstr "Brez povezave" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Nepreverjeno" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Ni podatkov o razvijalcih." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "LastniÅ¡tvo ID programa %s ni bilo preverjeno in lahko da gre za skupnostni " "paket." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "LastniÅ¡tvo ID programa %1$s je roÄno preverila ekipa Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "LastniÅ¡tvo ID programa %1$s je preveril <b>%2$s</b> na <b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "LastniÅ¡tvo ID programa %1$s je bilo preverjeno s pomoÄjo %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "LastniÅ¡tvo programa %s je bilo preverjeno." #: src/bz-donations-dialog.blp:7 msgid "Bazaar Release" msgstr "Bazar - izdaja" #: src/bz-donations-dialog.blp:77 msgid "Full Release Notes" msgstr "Celotne opombe ob izdaji" #: src/bz-donations-dialog.blp:112 msgid "This release was made possible by users like you!" msgstr "To izdajo so omogoÄili uporabniki, kot ste vi!" #: src/bz-donations-dialog.blp:121 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Zelo rad ustvarjam Bazaar, a sam tega ne zmorem. Pomagajte podpreti " "nadaljnji razvoj s prispevkom na Ko-Fi." #: src/bz-donations-dialog.blp:136 msgid "Donate to Bazaar" msgstr "Donirajte Bazarju" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:228 #, c-format msgid "What's New in %s?" msgstr "Kaj je novega v %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:244 msgid "Released %B %-e, %Y" msgstr "IzÅ¡lo %-e. %B %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Izberite namestitev" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Na vaÅ¡em napravi je nameÅ¡Äenih veÄ razliÄic tega programa. Katero želite " "uporabiti?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "PrekliÄi" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Samo za tega uporabnika" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "ta uporabnik" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "vsi uporabniki" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:100 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Podrobnosti" #. TRANSLATORS: tooltip for a button that copies text to the clipboard #: src/bz-error-dialog.blp:48 msgid "Copy" msgstr "Kopiraj" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Kopirano!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Priljubljeni Å¡tevec" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Priljubljenih ni bilo možno posodobiti" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Prijavite se s Flathuba, da upravljate prljubljene" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Prijavi" #: src/bz-favorites-page.blp:5 src/bz-window.blp:348 msgid "Favorites" msgstr "Priljubljeni" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Namesti vse" #: src/bz-favorites-page.blp:47 msgid "No Favorites" msgstr "Ni priljubljenih" #: src/bz-favorites-page.blp:48 msgid "Applications you mark as favorite will appear here" msgstr "Programe, ki jih oznaÄite kot priljubljene, se pojavijo tukaj." #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Podprite ta program" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Odstrani iz priljubljenih" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Odstranitev iz priljubljenih ni uspela" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Predhodni" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Naslednji" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Urejanje" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "MIDI" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "MeÅ¡alnik" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Glasba" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Predvajalnik" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Snemalnik" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "SekvenÄnik" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Radijski sprejemnik" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Posnemanje" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Akcijske igre" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Avantura" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arkadne igre" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Bloki" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Namizne igre" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Karte" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Za otroke" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Logika" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Igra vlog" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Streljanje" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulacija" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Å port" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "StrateÅ¡ke igre" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Brskalniki" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Klepet" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "PoÅ¡ta" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Skupna raba datotek" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Zvok in video" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "VeÄpredstavnost" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Dodatno za zvok/video" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Razvojna orodja" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Razvoj" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Dodatna razvojna orodja" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Izobraževanje" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "UÄenje" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Dodatno za izobraževanje" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Igre" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Predvajanje" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "VeÄ iger" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafika in fotografija" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Ustvarjanje" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Dodatno iz grafike in fotografije" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Omrežja" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Dodatno iz omrežij" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Produktivnost" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Delo" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Dodatno iz produktivnosti" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Znanost" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Dodatno iz znanosti" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Sistem" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Dodatna sistemska orodja" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "PripomoÄki" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:439 msgid "Tools" msgstr "Orodja" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Dodatni pripomoÄki" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:111 #: src/bz-flathub-page.blp:143 msgid "Trending" msgstr "V trendu" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Dodatni v trendu" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:117 #: src/bz-flathub-page.blp:176 msgid "Popular" msgstr "Priljubljeni" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "NajpriljubljenejÅ¡i" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:165 msgid "Recently Added" msgstr "Nedavno dodano" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:123 msgid "New" msgstr "Novo" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Dodatni novi" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:154 msgid "Recently Updated" msgstr "Nedavno posodobljeni" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:129 msgid "Updated" msgstr "Posodobljeno" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Dodatne posodobljene" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Mobilne naprave" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Dodatni za mobilne naprave" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Dodatni z Adwaito" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "Programi KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Dodatni programi KDE" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:421 msgid "Games" msgstr "Igre" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:481 msgid "More Games" msgstr "Dodatne igre" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:427 msgid "Emulators" msgstr "Posnemovalniki" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Dodatni posnemovalniki" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:433 msgid "Launchers" msgstr "Zaganjalniki" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Dodatni zaganjalniki iger" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Orodja za igre" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Dodatna orodja za igre" #: src/bz-flathub-curated-section.c:65 msgid "New Year, New Workflows" msgstr "Novo leto, novi naÄini dela" #: src/bz-flathub-curated-section.c:65 msgid "Apps to take notes, track tasks, and make plans" msgstr "Programi za izdelavo zapiskov, sledenje nalogam in naÄrtovanje" #: src/bz-flathub-curated-section.c:66 msgid "Staff Picks" msgstr "Po izboru naÅ¡ih zaposlenih" #: src/bz-flathub-curated-section.c:66 msgid "Apps we love right now" msgstr "Programi, ki so nam trenutno zelo vÅ¡eÄ" #: src/bz-flathub-curated-section.c:67 msgid "Get Creative" msgstr "Ustvarjajte" #: src/bz-flathub-curated-section.c:67 msgid "Essential apps for drawing, editing photos, and digital design" msgstr "" "Osnovni programi za risanje, urejanje fotografij in digitalno oblikovanje" #: src/bz-flathub-curated-section.c:68 msgid "Build Native Apps" msgstr "Izdelajte domorodne programe" #: src/bz-flathub-curated-section.c:68 msgid "Develop apps that feel at home on your system" msgstr "Razvijajte programe, ki se poÄutijo na vaÅ¡em sistemu domaÄe" #: src/bz-flathub-curated-section.c:69 msgid "Stay in Touch" msgstr "Ostanite v stiku" #: src/bz-flathub-curated-section.c:69 msgid "Essential collaboration and communication apps" msgstr "Osnovni programi za sodelovanje in komuniciranje" #: src/bz-flathub-curated-section.c:70 msgid "Ready for Vacations" msgstr "Pripravljeni na poÄitnice" #: src/bz-flathub-curated-section.c:70 msgid "Maps, transit, weather, and trip planning apps" msgstr "Programi za zemljevide, prevoze, vreme in naÄrtovanje potovanj" #: src/bz-flathub-curated-section.c:71 msgid "Smarter Every Day" msgstr "PametnejÅ¡i vsakdan" #: src/bz-flathub-curated-section.c:71 msgid "Apps to help you study, research, and write" msgstr "Programi, ki pomagajo Å¡tudirati, raziskovati in pisati" #: src/bz-flathub-curated-section.c:72 msgid "Get Cozy" msgstr "Naj vam bo v užitek" #: src/bz-flathub-curated-section.c:72 msgid "Great apps for reading, watching movies, and playing games" msgstr "Krasni programi za branje, ogled filmov in igranje iger" #: src/bz-flathub-curated-section.c:73 msgid "Web Developer Essentials" msgstr "Osnove za spletni razvoj" #: src/bz-flathub-curated-section.c:73 msgid "Making websites is more fun with these apps" msgstr "Izdelava spletiÅ¡Ä je zabavnejÅ¡a s temi programi" #: src/bz-flathub-curated-section.c:74 msgid "Take Better Notes" msgstr "Delajte boljÅ¡e zapiske" #: src/bz-flathub-curated-section.c:74 msgid "Find your new favorite note taking tool" msgstr "PoiÅ¡Äite svojo naslednjo najbolj priljubljeno orodje za zapiske" #: src/bz-flathub-curated-section.c:75 msgid "Get Focused" msgstr "OsredotoÄite se" #: src/bz-flathub-curated-section.c:75 msgid "Great apps for task management" msgstr "Krasni programi za upravljanje zadolžitev" #: src/bz-flathub-curated-section.c:76 msgid "Make Some Noise" msgstr "Naj bo naglas" #: src/bz-flathub-curated-section.c:76 msgid "Apps for creating and producing music" msgstr "Programi za ustvarjanje glasbe in glasbeno produkcijo" #: src/bz-flathub-curated-section.c:77 msgid "Get To Work" msgstr "Spravite se k delu" #: src/bz-flathub-curated-section.c:77 msgid "Essential office apps" msgstr "Osnovni pisarniÅ¡ki programi" #: src/bz-flathub-page.blp:22 msgid "Flathub Not Added" msgstr "Flathub ni dodan" #: src/bz-flathub-page.blp:23 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Oddaljeni Flathub ni najden na nobeni od vaÅ¡ih namestitev Flatpak" #: src/bz-flathub-page.blp:32 msgid "Can't Reach Flathub" msgstr "Ni možno doseÄi Flathuba" #: src/bz-flathub-page.blp:33 msgid "You can still manage and search for apps." msgstr "Å e vedno lahko upravljate in iÅ¡Äete programe." #: src/bz-flathub-page.blp:39 msgid "Search Apps" msgstr "Iskanje programov" #: src/bz-flathub-page.blp:50 msgid "Reconnect" msgstr "Ponovno poveži" #: src/bz-flathub-page.blp:204 msgid "App of the Day" msgstr "Program dneva" #: src/bz-flathub-page.blp:267 msgid "On the Go" msgstr "Na poti" #: src/bz-flathub-page.blp:279 msgid "Apps for your Linux phones and tablets" msgstr "Aplikacije za vaÅ¡e telefone in tablice Linux" #: src/bz-flathub-page.blp:290 src/bz-flathub-page.blp:325 msgid "More Mobile Apps" msgstr "Dodatni programi za mobilne naprave" #: src/bz-flathub-page.blp:383 msgid "We​ ♥​ Games" msgstr "♥​ igre" #: src/bz-flathub-page.blp:396 msgid "Games and apps to run your favorite titles" msgstr "Igre in programi za izvajanje vaÅ¡ih najljubÅ¡ih naslovov" #: src/bz-full-view.blp:33 msgid "No Results" msgstr "Ni najdenih zadetkov" #: src/bz-full-view.blp:34 msgid "Try a different search query" msgstr "Poskusite uporabiti drugo iskalno poizvedbo" #: src/bz-full-view.blp:103 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "To je krajevni predogled, nekatere podrobnosti se lahko razlikujejo od " "objavljenega opisa" #: src/bz-full-view.blp:106 msgid "Preview Store Appearance" msgstr "Predogled videza trgovine" #: src/bz-full-view.blp:233 msgid "_Support" msgstr "_Podpri" #: src/bz-full-view.blp:458 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Ta program uporablja izvajalnik, ki ne prejema veÄ posodobitev ali " "varnostnih popravkov. Za uporabo lahko postane niÄ veÄ varen." #: src/bz-full-view.blp:536 msgid "Trash Data" msgstr "Vrzi podatke v smeti" #: src/bz-full-view.blp:599 msgid "Add-ons" msgstr "Dodatki" #: src/bz-full-view.blp:634 msgid "More Add-Ons" msgstr "VeÄ dodatkov" #: src/bz-full-view.blp:645 msgid "Links" msgstr "Povezave" #: src/bz-full-view.blp:676 msgid "Similar Apps" msgstr "Podobni programi" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Ni naslova URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Ta program ima dovoljenje FLOSS, kar pomeni, da lahko izvorno kodo preverite " "glede varnosti." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Ta program ima lastniÅ¡ko dovoljenje, kar pomeni, da izvorno kodo razvijajo " "zasebno in je ne more preveriti nobena neodvisna tretja stran." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Dodatni programi" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Dodatni programi %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Dodatni programi tega razvijalca" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "Drugi programi %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "Program %s trenutno ni nameÅ¡Äen, a ima Å¡e vedno prisotne podatke (<b>%s</b>)." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Dodatni programi" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d programi" msgstr[1] "%d program" msgstr[2] "%d programa" msgstr[3] "%d programi" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:160 msgid "Failed to Remove User Data" msgstr "Odstranjevanje uporabniÅ¡kih podatkov ni uspelo" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Strojna podpora" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Podpora tipkovnice" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Zahteva tipkovnico" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "PriporoÄa tipkovnico" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "OmogoÄa uporabo tipkovnice" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Neznana podpora za tipkovnico" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Podpora za miÅ¡ko" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Zahteva miÅ¡ko ali kazalno napravo" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "PriporoÄa uporabo miÅ¡ke ali kazalne naprave" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Podprta je uporaba miÅ¡ke ali kazalne naprave" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Neznana podpora za miÅ¡ke in kazalne naprave" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Podpira zaslone na dotik" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Zahteva zaslon na dotik" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Svetuje rabo zaslona na dotik" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Podpira veÄdotiÄne zaslone" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Neznana podpora za zaslone na dotik" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Podpora za mobilne naprave" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Deluje na mobilnih napravah" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Morda ne deluje dobro na mobilnih napravah" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Podpora za namizja" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Deluje dobro na velikih zaslonih" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "Program %s deluje najbolje na doloÄenih napravah" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "Program %s deluje na veÄini naprav" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Meni nadzornika" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Odpri" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Odstrani program" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "O_dstrani" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Posodobi" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Odstrani" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Namesti %s z %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Namesti %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "PrekliÄi" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Poteka preklic …" #: src/bz-installed-tile.blp:80 msgid "Donate" msgstr "Doniraj" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "IÅ¡Äi med nameÅ¡Äenimi programi" #: src/bz-library-page.blp:32 msgid "No Apps Found" msgstr "Ni najdenih programov" #: src/bz-library-page.blp:49 msgid "Search Store Instead" msgstr "Namesto tega iÅ¡Äi po trgovini" #: src/bz-library-page.blp:86 msgid "Pending Updates" msgstr "Pripravljene posodobitve programov" #: src/bz-library-page.blp:113 msgid "Downloads" msgstr "Prejemi" #: src/bz-library-page.blp:156 msgid "Recently Uninstalled" msgstr "Nedavno odstranjeno" #: src/bz-library-page.blp:207 msgid "Clear Finished Tasks" msgstr "PoÄisti konÄane naloge" #: src/bz-library-page.blp:234 msgid "Sort Options" msgstr "Možnosti razvrÅ¡Äanja" #: src/bz-library-page.blp:293 msgid "Sort By" msgstr "Razvrsti po" #: src/bz-library-page.blp:307 msgid "Name" msgstr "Ime" #: src/bz-library-page.blp:313 msgid "Size" msgstr "Velikost" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Ni zadetkov za »%s« na seznamu nameÅ¡Äenih programov" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "Na voljo je %u posodobitev" msgstr[1] "Na voljo je %u posodobitev" msgstr[2] "Na voljo sta %u posodobitvi" msgstr[3] "Na voljo so %u posodobitve" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u nameÅ¡Äenih programov" msgstr[1] "%u nameÅ¡Äeni program" msgstr[2] "%u nameÅ¡Äena programa" msgstr[3] "%u nameÅ¡Äeni programi" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Ni najdenih programov" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Najdenih %u programov" msgstr[1] "Najden %u program" msgstr[2] "Najdena %u programa" msgstr[3] "Najdeni %u programi" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Sodelujte" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "VeÄ podrobnosti" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Neznano dovoljenje" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Vzdržuje skupnost" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:289 msgid "Proprietary" msgstr "LastniÅ¡ko" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:291 msgid "Special License" msgstr "Posebno dovoljenje" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Ta program razvija vsem na oÄeh mednarodna skupnost.\n" "\n" "Sodelujete lahko in jo pomagate izboljÅ¡ati." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Program je objavljen pod pogoji neznanega dovoljenja" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Ta program je odprtokoden in ga razvija mednarodna skupnost prostovoljcev, " "objavljen pa je z dovoljenjem %s.\n" "\n" "Vsakdo lahko sodeluje pri zasnovi in razvoju." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Program ni prosta programska oprema, zato delovanje poznajo le razvijalci. " "Morda je nezanesljiva na naÄine, ki jih je težko odkriti, in se lahko " "spreminja brez nadzora.\n" "\n" "K razvoju tega programa morda lahko, morda ne morete prispevati." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Program je objavljen pod pogoji posebnega dovoljenja %s.\n" "\n" "Morda je, morda ni možno prispevati k razvoju tega programa." #: src/bz-license-dialog.c:345 src/bz-license-dialog.c:364 #: src/bz-safety-dialog.blp:103 msgid "License" msgstr "Dovoljenje" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Poveži se s flathubom" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Nekaj je Å¡lo narobe" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Prijavite se, da uskladite svoje priljubljene programe med napravami" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "KonÄaj" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Pozdravljeni, %s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "Ali želite dodati ikono v predogled metapodatkov?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to " "select one manually?" msgstr "" "Datoteke metapodatkov same po sebi ne vkljuÄujejo ikon programov. Ali jo " "želite izbrati roÄno?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "PreskoÄi" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Izbor ikone" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Slikovne datoteke" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Nastavitve" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Omrežna povezava je plaÄljiva — samodejno osveževanje podatkov trgovine je " "prekinjeno" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "RoÄno osveži" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Posodobitev programa" #: src/bz-preferences-dialog.blp:33 msgid "" "Auto-updates will pause on metered networks or when power saving is on to " "save data and battery." msgstr "" "Samodejne posodobitve bodo zaustavljene na plaÄljivih omrežjih po prometu " "ali ko bo vklopljeno varÄevanje z energijo, da prihrani pri prenosu podatkov " "in baterijah." #: src/bz-preferences-dialog.blp:36 msgid "_Automatic" msgstr "_Samodejno" #: src/bz-preferences-dialog.blp:37 msgid "Automatically check for and download app updates" msgstr "Samodejno preveri obstoj in prejmi posodobitve programov" #: src/bz-preferences-dialog.blp:48 msgid "_Manual" msgstr "_RoÄno" #: src/bz-preferences-dialog.blp:49 msgid "Checking for and downloading app updates must be done manually" msgstr "" "Preverjanje in prejemanje posodobitev programov mora biti opravljeno roÄno" #: src/bz-preferences-dialog.blp:67 msgid "Automatic Update _Notifications" msgstr "Obvestila _samodejnega posodabljanja" #: src/bz-preferences-dialog.blp:68 msgid "Notify when updates have been automatically installed" msgstr "Pokaži obvestilo, ko so posodobitve samodejno nameÅ¡Äene" #: src/bz-preferences-dialog.blp:73 msgid "Content Filters" msgstr "Filtri vsebine" #: src/bz-preferences-dialog.blp:76 msgid "_Free Software Only" msgstr "Samo _prosto programje" #: src/bz-preferences-dialog.blp:77 msgid "Hide proprietary apps when browsing and searching" msgstr "Med brskanjem in iskanjem skrij lastniÅ¡ko programsko opremo" #: src/bz-preferences-dialog.blp:82 msgid "F_lathub Results Only" msgstr "Samo zadetki s F_lathuba" #: src/bz-preferences-dialog.blp:83 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Omeji iskanje in brskaj po rezultatih samo med programi, ki so na voljo na " "Flathubu" #: src/bz-preferences-dialog.blp:88 msgid "_Verified Results Only" msgstr "Samo _overjeni zadetki" #: src/bz-preferences-dialog.blp:89 msgid "Hide results that are not verified on Flathub" msgstr "Skrij zadetke, ki niso overjeni na Flathubu" #: src/bz-preferences-dialog.blp:94 msgid "Hide _End-of-Life Apps" msgstr "Skrij programe na _koncu življenjske dobe" #: src/bz-preferences-dialog.blp:95 msgid "Hide apps which are no longer supported by their developers" msgstr "Skrij programe, ki nimajo veÄ podpore svojih razvijalcev" #: src/bz-preferences-dialog.blp:101 msgid "Progress Bar Theme" msgstr "Tema kazalnika napredka" #: src/bz-preferences-dialog.c:42 msgid "Accent Color" msgstr "Barva poudarkov" #: src/bz-preferences-dialog.c:43 msgid "Pride Colors" msgstr "Barve ponosa" #: src/bz-preferences-dialog.c:44 msgid "Lesbian Pride Colors" msgstr "Barve ponosa - lezbiÅ¡tvo" #: src/bz-preferences-dialog.c:45 msgid "Male Homosexual Pride Colors" msgstr "Barve ponosa - moÅ¡ka homoseksualnost" #: src/bz-preferences-dialog.c:46 msgid "Transgender Pride Colors" msgstr "Barve ponosa - transspolnost" #: src/bz-preferences-dialog.c:47 msgid "Nonbinary Pride Colors" msgstr "Barve ponosa - nebinarnost" #: src/bz-preferences-dialog.c:48 msgid "Bisexual Pride Colors" msgstr "Barve ponosa - biseksualnost" #: src/bz-preferences-dialog.c:49 msgid "Asexual Pride Colors" msgstr "Barve ponosa - aseksualnost" #: src/bz-preferences-dialog.c:50 msgid "Pansexual Pride Colors" msgstr "Barve ponosa - panseksualnost" #: src/bz-preferences-dialog.c:51 msgid "Aromantic Pride Colors" msgstr "Barve ponosa - aromantiÄnost" #: src/bz-preferences-dialog.c:52 msgid "Genderfluid Pride Colors" msgstr "Barve ponosa - fluidni spol" #: src/bz-preferences-dialog.c:53 msgid "Polysexual Pride Colors" msgstr "Barve ponosa - poliseksualnost" #: src/bz-preferences-dialog.c:54 msgid "Omnisexual Pride Colors" msgstr "Barve ponosa - omniseksualnost" #: src/bz-preferences-dialog.c:55 msgid "Aroace Pride Colors" msgstr "Barve ponosa - aroace" #: src/bz-preferences-dialog.c:56 msgid "Agender Pride Colors" msgstr "Barve ponosa - aspolnost" #: src/bz-preferences-dialog.c:57 msgid "Genderqueer Pride Colors" msgstr "Barve ponosa - genderqueer" #: src/bz-preferences-dialog.c:58 msgid "Intersex Pride Colors" msgstr "Barve ponosa - interseksualnost" #: src/bz-preferences-dialog.c:59 msgid "Demigender Pride Colors" msgstr "Barve ponosa - demiseksualnost" #: src/bz-preferences-dialog.c:60 msgid "Biromantic Pride Colors" msgstr "Barve ponosa - biromantiÄnost" #: src/bz-preferences-dialog.c:61 msgid "Disability Pride Colors" msgstr "Barve ponosa - nezmožnost" #: src/bz-preferences-dialog.c:62 msgid "Femboy Pride Colors" msgstr "Barve ponosa - femboy" #: src/bz-preferences-dialog.c:63 msgid "Neutrois Pride Colors" msgstr "Barve ponosa - neutrois" #: src/bz-preferences-dialog.c:285 msgid "Bazaar needs to run in the background to check for app updates" msgstr "" "Bazar se mora izvajati v ozadju, da preverja dosegljivost posodobitev " "programov" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Zgodovina razliÄice" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Zgodovina razliÄic" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Danes" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "VÄeraj" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "pred %d dnevi" msgstr[1] "pred %d dnem" msgstr[2] "pred %d dnevoma" msgstr[3] "pred %d dnevi" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Pred %d tedni" msgstr[1] "Pred %d tednom" msgstr[2] "Pred %d tednoma" msgstr[3] "Pred %d tedni" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Pred %d meseci" msgstr[1] "Pred %d mesecem" msgstr[2] "Pred %d mesecema" msgstr[3] "Pred %d meseci" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Pred %d leti" msgstr[1] "Pred %d letom" msgstr[2] "Pred %d letoma" msgstr[3] "Pred %d leti" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e. %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "RazliÄica %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Za to objavo ni podrobnosti" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Pridobiti veÄ informacij" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Odstrani namestitev" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Get" #: src/bz-safety-dialog.blp:32 src/bz-safety-dialog.c:297 #: src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Dovoljenja po potrebi" #: src/bz-safety-dialog.blp:49 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a privileged, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Ta program ima dovoljenje, ki ji posredno omogoÄa, da si sam dodeli " "<b>poljubno drugo dovoljenje, ki ga želi</b>, s Äimer zaobide Flatpakov " "peskovnik.\n" "\n" "Zato lahko poÄne vse, kar lahko poÄne privilegirani program, ki ni omejen s " "peskovnikom, npr. dostopa do vseh vaÅ¡ih datotek in se poveže z internetom.\n" "\n" "Pregled drugih dovoljenj vam lahko kljub temu ponudi boljÅ¡o predstavo o tem, " "kaj bo program verjetno poÄel." #: src/bz-safety-dialog.blp:53 msgid "View Other Permissions" msgstr "Pokaži druga dovoljenja" #. TRANSLATORS: short app safety rating label #: src/bz-safety-dialog.blp:81 src/context-tile-callbacks.c:402 msgid "Safe" msgstr "Varno" #: src/bz-safety-dialog.blp:114 msgid "App ID" msgstr "ID programa" #: src/bz-safety-dialog.blp:124 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:158 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Ta program uporablja zastarelo razliÄico programske platforme (SDK) in lahko " "vsebuje napake ali varnostne ranljivosti, ki ne bodo odpravljene." #: src/bz-safety-dialog.c:283 src/bz-safety-dialog.c:317 msgid "Safety" msgstr "Varnost" #: src/bz-safety-dialog.c:377 #, c-format msgid "%s is Safe" msgstr "Program %s je varen za uporabo" #: src/bz-safety-dialog.c:382 #, c-format msgid "%s has no Unsafe Permissions" msgstr "Program %s ne zahteva pravic, ki niso varne" #: src/bz-safety-dialog.c:387 #, c-format msgid "%s is Probably Safe" msgstr "Program %s je najverjetneje varen za uporabo" #: src/bz-safety-dialog.c:392 #, c-format msgid "%s is Possibly Unsafe" msgstr "Program %s morda ni povsem varen" #: src/bz-safety-dialog.c:397 #, c-format msgid "%s is Unsafe" msgstr "Program %s ni varen" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Nazaj" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Predhodna zaslonska slika" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Naslednja zaslonska slika" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Kopiraj sliko" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Ponastavi pogled" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Oddalji" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Približaj" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Vrtiljak posnetkov zaslona" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Ni zaslonskih slik" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Odpri pregledovalnik zaslonskih slik" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Posnetek zaslona %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Posnetek zaslona %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "PoÄisti iskanje" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Filtri" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "Pre_verjeno" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Prosto/odprta koda" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "_Ne-opuÅ¡Äeno" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "IzloÄi programe na koncu življenjske dobe" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "Prijazno _mobilnim napravam" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategorije" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "PoiÅ¡Äite programje, igre, aplikacije" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Filtri iskanja" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Prebrskaj kategorije" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Kategorije niso na voljo" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "PoiÅ¡Äite programe z uporabo zgodnje iskalne vrstice." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Ni najdenih programov" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Ni zadetkov za »%s« v Flathubu" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Brskalnik" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Video" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Pisarna" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Koledar" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "SporoÄanje" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Slikanje" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Posnemovalnik" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Stran na flathubu" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "SpletiÅ¡Äe projekta" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Sledilnik težav" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "Pogosta vpraÅ¡anja" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "PomoÄ" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Doniraj" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Prevedi" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Stik" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Izvorna koda" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Prispevajte" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifest" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Kopiraj povezavo" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "ÄŒasovnica" #. TRANSLATORS: label prefix shown in graph tooltips, for example: "Installs: 42" #: src/bz-stats-dialog.blp:48 msgid "Installs:" msgstr "Namestitve." #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:58 msgid "World" msgstr "Cel svet" #: src/bz-stats-dialog.blp:72 msgid "Since 4/15/2024" msgstr "Od 15. 4. 2024" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM vseh namestitev" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK vseh namestitev" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d vseh namestitev" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Ni najdenih zadetkov" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Iskanje je spodletelo" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Ohrani uporabniÅ¡ke podatke" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "OmogoÄi obnavljanje osebnih nastavitev in vsebine" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "IzbriÅ¡i vse podatke" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Trajno izbriÅ¡i uporabniÅ¡ke podatke za prihranek prostora na disku" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Ali želite namestiti %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Izberite, katero razliÄico želite namestiti. Lahko namesti Å¡e dodatne " "komponente v skupni rabi" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Lahko namesti dodatne komponente v skupni rabi" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "Pre_kliÄi" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Namesti" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Ali želite odstraniti %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Izberite razliÄico, ki jo želite odstraniti." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Programa %s po odstranitvi ne bo možno veÄ uporabljati." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "»%s« predstavlja visoko tveganje" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Ta program ima neomejen dostop do vaÅ¡ega sistema, vkljuÄno z vsemi <b>vaÅ¡imi " "datotekami, zgodovino brskanja, shranjenimi gesli</b> in Å¡e veÄ. Ima tudi " "dostop do interneta, kar pomeni, da lahko vaÅ¡e podatke poÅ¡ilja zunanjim " "strankam.\n" "\n" "Ker gre za lastniÅ¡ki program, ni mogoÄe preveriti, kako ta uporablja ta " "dovoljenja." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Ta program uporablja zastareli okenski sistem X11, ki mu omogoÄa <b>snemanje " "vseh pritiskov na tipke, zajemanje posnetkov zaslona in spremljanje drugih " "programov</b>. Ima tudi dostop do interneta, kar pomeni, da bi lahko vaÅ¡e " "podatke poÅ¡iljal zunanjim strankam.\n" "\n" "Ker je program lastniÅ¡ki, ni mogoÄe preveriti, kako ravna s temi dovoljenji." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "Vseeno _namesti" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Nalaganje pogovornega okna transakcije je spodletelo" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Vsi programi so že nameÅ¡Äeni" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "V _redu" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Ali želite namestiti %u programov?" msgstr[1] "Ali želite namestiti %u program?" msgstr[2] "Ali želite namestiti %u programa?" msgstr[3] "Ali želite namestiti %u programe?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Naslednje bo nameÅ¡Äeno. Dodatne skupne komponente bodo tudi morda nameÅ¡Äene" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d dodatkov bo nameÅ¡Äenih." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Poleg tega bodo nameÅ¡Äeni Å¡e dodatki." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "Namesti _vse" #: src/bz-transaction-manager.c:796 #, c-format msgid "Finished in %.02f seconds" msgstr "KonÄano v %.02f s" #: src/bz-transaction-tile.blp:130 msgid "App Add-On" msgstr "Dodatek za program" #: src/bz-transaction-tile.blp:159 msgid "Runtime" msgstr "Izvajalni program" #: src/bz-transaction-tile.blp:183 msgid "In Queue" msgstr "V vrsti" #: src/bz-transaction-tile.blp:207 msgid "Done" msgstr "KonÄano" #: src/bz-transaction-tile.blp:231 msgid "Cancelled" msgstr "Preklicano" #: src/bz-transaction-tile.blp:255 msgid "Error" msgstr "Napaka" #: src/bz-transaction-tile.blp:314 msgid "Cancel Transaction" msgstr "PrekliÄi transakcijo" #: src/bz-transaction-tile.blp:324 msgid "Show Details" msgstr "Pokaži podrobnosti" #: src/bz-transaction-tile.blp:439 msgid "Show Error Info" msgstr "Pokaži podatke o napaki" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s sproÅ¡Äenega" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Napaka transakcije" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Na Äakanju" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "Posodo_bi vse" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u posodobitev izvajalnikov" msgstr[1] "%u posodobitev izvajalnika" msgstr[2] "%u posodobitvi izvajalnikov" msgstr[3] "%u posodobitve izvajalnikov" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Upravljaj preostale uporabniÅ¡ke podatke" #: src/bz-user-data-page.blp:32 msgid "No Leftover User Data Found" msgstr "Preostalih uporabniÅ¡kih podatkov ni mogoÄe najti" #: src/bz-user-data-page.blp:33 msgid "Personal data left behind by apps that were removed will show up here" msgstr "" "Tukaj se bodo prikazali osebni podatki, ki so jih za seboj pustile " "odstranjeni programi" #: src/bz-user-data-page.c:229 #, c-format msgid "Trashed User Data for %u App" msgid_plural "Trashed User Data for %u Apps" msgstr[0] "V koÅ¡ vrženi uporabniÅ¡ki podatki za %u programov" msgstr[1] "V koÅ¡ vrženi uporabniÅ¡ki podatki za %u program" msgstr[2] "V koÅ¡ vrženi uporabniÅ¡ki podatki za %u programa" msgstr[3] "V koÅ¡ vrženi uporabniÅ¡ki podatki za %u programe" #: src/bz-user-data-page.c:233 #, c-format msgid "Trashed User Data for %s" msgstr "V koÅ¡ vrženi uporabniÅ¡ki podatki za %s" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Odpri mapo z uporabniÅ¡kimi podatki" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Vrzi uporabniÅ¡ke podatke v koÅ¡" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Poteka osveževanje …" #: src/bz-window.blp:90 msgid "Curated" msgstr "Kurirano" #: src/bz-window.blp:102 msgid "Explore" msgstr "RaziÅ¡Äi" #. Translators: . #: src/bz-window.blp:114 msgid "Library" msgstr "Knjižnica" #: src/bz-window.blp:129 msgid "Search" msgstr "PoiÅ¡Äi" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Glavni meni" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Poganjate novo razliÄico Bazarja!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Poglejte, kaj je novega" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Imate omrežno povezavo, vendar si ogledujete razliÄico Flathuba iz " "predpomnilnika" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "Omrežna povezava je plaÄljiva - samodejne osvežitve so onemogoÄene" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Doniraj Bazarju" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "Osve_ži" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "_Prijavi prek flathuba" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_Upravljaj preostanle uporabniÅ¡ke podatke" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Nastavitve" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Tipkovne bližnjice" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "_O programu Bazar" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_KonÄaj Bazar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Odjavi" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Zagon programa ni uspel" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Ne morete odstraniti Bazarja v Bazarju!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Tega zdaj ni možno narediti!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "namestitev" msgstr[1] "Namestitev" msgstr[2] "Namestitvi" msgstr[3] "Namestitve" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*f K" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d prenosov v zadnjem mesecu" #. TRANSLATORS: %s is a formatted file size, for example: "128 MB" #: src/context-tile-callbacks.c:133 #, c-format msgid "+%s Runtime" msgstr "+ %s izvajalnika" #: src/context-tile-callbacks.c:136 msgid "Download" msgstr "Prejmi" #: src/context-tile-callbacks.c:156 msgid "Size information unavailable" msgstr "Podatki o velikosti niso na voljo" #: src/context-tile-callbacks.c:159 #, c-format msgid "Download size of %s" msgstr "Velikost prejema %s" #: src/context-tile-callbacks.c:192 msgid "All Ages" msgstr "Vse starosti" #: src/context-tile-callbacks.c:204 msgid "Age rating information unavailable" msgstr "Ni podatkov o starostno pogojeni vsebini" #: src/context-tile-callbacks.c:209 msgid "Suitable for all ages" msgstr "Primerno za vse starosti" #: src/context-tile-callbacks.c:211 #, c-format msgid "Suitable for ages %d and up" msgstr "Primerno za starost %d let in veÄ" #: src/context-tile-callbacks.c:244 src/context-tile-callbacks.c:249 #: src/context-tile-callbacks.c:277 src/context-tile-callbacks.c:286 msgid "Unknown" msgstr "Neznano" #: src/context-tile-callbacks.c:254 #, c-format msgid "Free software licensed under %s" msgstr "Prosto programje je izdano pod dovoljenjem %s" #: src/context-tile-callbacks.c:259 msgid "Free software" msgstr "Prosto programje" #: src/context-tile-callbacks.c:262 msgid "Proprietary Software" msgstr "LastniÅ¡ka programska oprema" #: src/context-tile-callbacks.c:265 #, c-format msgid "Special License: %s" msgstr "Posebno dovoljenje: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:283 msgid "Free Software" msgstr "Prosto programje" #: src/context-tile-callbacks.c:311 msgid "Adaptive" msgstr "Prilagodljivo" #: src/context-tile-callbacks.c:311 msgid "Desktop Only" msgstr "Le za namizja" #: src/context-tile-callbacks.c:317 msgid "Works on desktop, tablets, and phones" msgstr "Deluje na namizju, tabliÄnih raÄunalnikih in pametnih telefonih" #: src/context-tile-callbacks.c:318 msgid "May not work on mobile devices" msgstr "Morda ne deluje na mobilnih napravah" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:405 src/context-tile-callbacks.c:408 msgid "Low Risk" msgstr "Nizko tveganje" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:411 msgid "Medium Risk" msgstr "Srednje tveganje" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:414 msgid "High Risk" msgstr "Visoko tveganje" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Neznana dovoljenja" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Temu programu manjkajo ustrezne pravice." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Ni posebnih dovoljenj" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Program se v celoti izvaja v peskovniku" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "Zahteva dostop do omrežja" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "OmogoÄen je dostop do interneta" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Ne zahteva dostopa do omrežja" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Ni omogoÄenega dostopa do omrežja" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "UporabniÅ¡ki dostop do naprave" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Lahko dostopa do naprav, kot so spletne kamere in igralne konzole" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Ne zahteva dostopa do povezanih naprav" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Nima dostopa do naprav, kot so spletne kamere in igralne konzole" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Dostop do vhodne naprave" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Lahko dostopa do vhodnih naprav" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Dostop do mikrofona in predvajanja zvoka" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "OmogoÄen je dostop do mikrofonov in predvaja zvok brez spraÅ¡evanja za " "dovoljenje" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Dostop do sistemske naprave" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "Lahko dostopa do sistemskih naprav, ki zahtevajo viÅ¡ja dovoljenja" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Dostop do vsebine namizja" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "OmogoÄen je dostop vsebine zaslona ali drugih oken" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Uporablja opuÅ¡Äen zaslonski sistem" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Vedno uporablja opuÅ¡Äen zaslonski sistem (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Zahteva dovoljenja po potrebi" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "UporabniÅ¡ke nastavitve" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Uporablja in spreminja nastavitve uporabnika" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Poln dostop za branje/pisanje vsebine datoteÄnega sistema" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Bere in zapisuje vse podatke datoteÄnega sistema" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Dovoljenje za branje/pisanje vsebine v osebno mapo" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Bere in zapisuje vse podatke v osebni mapi" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Poln dostop za branje vsebine datoteÄnega sistema" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Bere vse podatke datoteÄnega sistema" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Dovoljenje za branje vsebine osebne mape" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Bere vse podatke v osebni mapi" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Dovoljenje za branje/pisanje vsebine v mapo prejema" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Bere in zapisuje vse podatke v mapi prejemov" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "Dovoljenje za branje vsebine mape prejema" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Bere vse podatke v mapi prejemov" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Lahko prebere in zapisuje vse podatke v mapi" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Lahko prebere vse podatke v mapi" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Ne zahteva dostopa do datoteÄnega sistema" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Ne zahteva in nima dovoljenj za dostop do datoteÄnega sistema" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Uporablja sistemske storitve" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Lahko zahteva uporabo sistemskih storitev, ki niso portalske" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Uporablja storitve seje" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Lahko zahteva dostop do storitev seje, ki niso portalske" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Brez dostopa do storitve" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Sploh ni mogoÄe dostopati do neportalne seje ali sistemskih storitev" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Razvijalci programa so preverjeni" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "Istovetnost razvijalca tega programa je bila preverjena" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "LastniÅ¡ka programska koda" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Izvorna koda ni javna, je ni mogoÄe preveriti, zato je program morda ni varen" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Koda je odprta za pregled" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Izvorna koda je javno dostopna in jo je mogoÄe skrbno pregledati, kar naredi " "program veliko bolj varen" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Uporabi sistemsko storitev %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Uporabi storitev seje %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Uporabi storitev %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Lahko vidi storitev, ki ni portalska" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Lahko se pogovarja s storitvijo, ki ni portalska" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Lahko je lastnik storitve, ki ni portalska" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Integracija v globalni meni" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Lahko prikaže svoje menije v glavni, sploÅ¡ni menijski vrstici" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "Integracija nastavitev KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Lahko zazna, kdaj se nastavitve namizja KDE spremenijo" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "SploÅ¡ne nastavitve KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Lahko prebere nastavitve namizja KDE, kot so pisave in barve" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Storitev skrivne hrambe" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Lahko shranjuje in pridobi lastna gesla z uporabo sistemske zbirke kljuÄev" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Storitev namiznih obvestil" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Lahko poÅ¡ilja namizna obvestila" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Integracija v sistemsko vrstico" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Lahko prikaže ikono v sistemskem pladnju" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Integracija KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Je lahko v interakciji z napravami, povezanimi prek KDE Connect" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Krmarjenje" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Odpre stran raziskovanja" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Odpri stran knjižnice" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Odpri stran iskanja" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Oddaljeni" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Uskladi oddaljene" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "SploÅ¡no" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Odpre nastavitve" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Pokaže tipkovne bližnjice‫" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Zapre okno" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "KonÄa Bazar" #: src/transaction-notification.c:133 #, c-format msgid "%s Installed" msgstr "%s (nameÅ¡Äeno)" #: src/transaction-notification.c:135 msgid "The app is ready to be used" msgstr "Program je pripravljen za uporabo" #: src/update-worker.c:263 msgid "Updates Are Out of Date" msgstr "Posodobitve programske opreme so zastarele" #: src/update-worker.c:264 msgid "Please check for available updates" msgstr "Preveri za razpoložljive posodobitve" #: src/update-worker.c:449 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "%u posodobljenih programov" msgstr[1] "%u posodobljeni program" msgstr[2] "%u posodobljena programa" msgstr[3] "%u posodobljeni programi" #: src/update-worker.c:452 #, c-format msgid "%s has been updated." msgstr "Program %s je posodobljen." #: src/update-worker.c:455 #, c-format msgid "%s and %s have been updated." msgstr "Programa %s in %s sta posodobljena." #: src/update-worker.c:459 #, c-format msgid "Includes %s, %s and %s." msgstr "VkljuÄuje %s, %s in %s." ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/sv.po������������������������������������������������������������������0000664�0000000�0000000�00000271654�15240005042�0016763�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Swedish translation for bazaar. # Copyright © 2026 bazaar's COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Anders Jonsson <anders.jonsson@norsjovallen.se>, 2026. # msgid "" msgstr "" "Project-Id-Version: bazaar main\n" "Report-Msgid-Bugs-To: https://github.com/bazaar-org/bazaar/issues\n" "POT-Creation-Date: 2026-08-10 09:14+0000\n" "PO-Revision-Date: 2026-08-10 14:28+0200\n" "Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.9\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "Programbutik" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "Lägg till, ta bort eller uppdatera flatpak-programvara pÃ¥ denna dator" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "System;Paket;Hanterare;Upptäck;Flatpak;Programvara;App;Store;Butik;Affär;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Nytt fönster" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Upptäck och installera program" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "En snabb och modern programbutik för Linux med fokus pÃ¥ upptäckt och " "installation av Flatpak-program och tillägg, främst frÃ¥n Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Köa flera installationer och fortsätt bläddra" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Se lätt programrättigheter" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Logga in med Flathub för att visa och hantera favoriter" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Sök program direkt frÃ¥n GNOME Shell" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:771 msgid "The Bazaar Contributors" msgstr "Bidragsgivarna till Bazaar" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Startsidan som visar Flathub-program" # TODO: Translatornote om att det är ett namn pÃ¥ https://flathub.org/en/apps/io.github.nokse22.Exhibit #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Programsida för Exhibit" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Bibliotekssida" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Söksida" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Kategorisida" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Har slutat ta emot uppdateringar" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Avinstallera" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Installera" #: src/bz-addons-dialog.blp:7 msgid "Add-on" msgstr "Tillägg" #: src/bz-addons-dialog.blp:15 src/bz-addons-dialog.blp:22 #: src/bz-addons-dialog.blp:71 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Hantera tillägg" #: src/bz-addons-dialog.blp:81 msgid "No Add-Ons Visible" msgstr "Inga tillägg synliga" #: src/bz-addons-dialog.blp:82 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Dina aktuella filterinställningar döljer alla kända tillägg. Försök justera dem." #: src/bz-addons-dialog.blp:89 msgid "Add-on Page" msgstr "Tilläggssida" #: src/bz-addons-dialog.blp:205 src/bz-full-view.blp:408 msgid "Downloads/Month" msgstr "Hämtningar/mÃ¥nad" #: src/bz-addons-dialog.blp:232 src/bz-full-view.blp:444 msgid "Stopped Receiving Core Updates" msgstr "Har slutat ta emot kärnuppdateringar" #: src/bz-addons-dialog.blp:246 msgid "" "This add-on uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Detta tillägg använder en exekveringsmiljö som inte längre tar emot " "uppdateringar eller säkerhetsfixar. Det kan bli osäkert att använda." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "Tillägg för %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Visa mindre" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Visa mer" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Hämtningsstatistik" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:737 src/context-tile-callbacks.c:187 #: src/context-tile-callbacks.c:194 msgid "Age Rating" msgstr "Ã…ldersklassificering" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Tecknat vÃ¥ld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Ingen information angÃ¥ende tecknat vÃ¥ld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Orealistiskt vÃ¥ld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Ingen information angÃ¥ende orealistiskt vÃ¥ld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Realistiskt vÃ¥ld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Ingen information angÃ¥ende realistiskt vÃ¥ld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "VÃ¥ld som skildrar blodsutgjutelse" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Ingen information angÃ¥ende blodsutgjutelse" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Sexuellt vÃ¥ld" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Ingen information angÃ¥ende sexuellt vÃ¥ld" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alkohol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Ingen information angÃ¥ende referenser till alkohol" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Narkotika" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Ingen information angÃ¥ende referenser till illegala droger" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tobak" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Ingen information angÃ¥ende referenser till tobaksprodukter" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Nakenhet" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Ingen information angÃ¥ende nakenhet av nÃ¥got slag" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Sexuella teman" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Ingen information angÃ¥ende sexuella referenser eller skildringar" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Svordomar" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Ingen information angÃ¥ende svordomar av nÃ¥got slag" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Olämplig humor" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Ingen information angÃ¥ende olämplig humor" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Diskriminering" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Ingen information angÃ¥ende diskriminerande sprÃ¥kbruk av nÃ¥got slag" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Annonser" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Ingen information angÃ¥ende annonser av nÃ¥got slag" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Hasardspel" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Ingen information angÃ¥ende hasardspel av nÃ¥got slag" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Köp" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Ingen information angÃ¥ende möjlighet att spendera pengar" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Chatt mellan användare" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Ingen information angÃ¥ende sätt att chatta med andra användare" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Röstchatt mellan användare" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Ingen information angÃ¥ende sätt att prata med andra användare" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Kontaktdetaljer" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email addresses" msgstr "" "Ingen information angÃ¥ende delning av e-postadresser eller användarnamn pÃ¥ " "sociala nätverk" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Identifierande information" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "Ingen information angÃ¥ende delning av användarinformation med tredje part" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Platsdelning" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "Ingen information angÃ¥ende delning av fysisk plats med andra användare" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "Prostitution" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Ingen information angÃ¥ende referenser till prostitution" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Otrohet" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Ingen information angÃ¥ende referenser till otrohet" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "Sexualiserade figurer" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Ingen information angÃ¥ende sexualiserade figurer" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Skändning" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Ingen information angÃ¥ende referenser till skändning" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "Mänskliga kvarlevor" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Ingen information angÃ¥ende synliga kvarlevor av människor" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Slaveri" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Ingen information angÃ¥ende referenser till slaveri" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Inkluderar inte referenser till droger" # TODO: grovt in gnome-software as well #: src/bz-age-rating-dialog.c:426 msgid "Does not include swearing, profanity, and other kinds of strong language" msgstr "Inkluderar inte svärande, hädelse och andra typer av grovt sprÃ¥k" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Inkluderar inte annonser eller pengaöverföring" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Inkluderar inte sex eller nakenhet" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Inkluderar inte okontrollerad chattfunktion" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Inkluderar inte vÃ¥ld" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Droger" # TODO: grovt in gnome-software as well #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Grovt sprÃ¥k" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Pengar" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Socialt" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "VÃ¥ld" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:177 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:712 msgctxt "Age rating" msgid "All" msgstr "Alla" #: src/bz-age-rating-dialog.c:748 #, c-format msgid "%s has an unknown age rating" msgstr "%s har okänd Ã¥ldersklassificering" #: src/bz-age-rating-dialog.c:754 #, c-format msgid "%s is suitable for everyone" msgstr "%s passar för alla" #: src/bz-age-rating-dialog.c:757 #, c-format msgid "%s is suitable for young children" msgstr "%s passar för unga barn" #: src/bz-age-rating-dialog.c:760 #, c-format msgid "%s is suitable for children" msgstr "%s passar för barn" #: src/bz-age-rating-dialog.c:763 #, c-format msgid "%s is suitable for teenagers" msgstr "%s passar för tonÃ¥ringar" #: src/bz-age-rating-dialog.c:766 #, c-format msgid "%s is suitable for adults" msgstr "%s passar för vuxna" #: src/bz-age-rating-dialog.c:769 #, c-format msgid "%s is suitable for %s" msgstr "%s passar för %s" #: src/bz-age-rating-dialog.c:868 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Systemmapp %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Hemundermapp %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Värdsystemmappar" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "Värdsystemkonfiguration frÃ¥n /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Skrivbordsundermapp %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Skrivbordsmapp" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Dokumentundermapp %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Dokumentmapp" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Musikundermapp %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Musikmapp" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Bildundermapp %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Bildmapp" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Delningsundermapp %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Delningsmapp" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Videoundermapp %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Videomapp" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Mallundermapp %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Mallmapp" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Användarcacheundermapp %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Användarcachemapp" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Användarkonfigurationsundermapp %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Användarkonfigurationsmapp" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Användardataundermapp %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Användardatamapp" # TODO: in gnome-software as well #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Användarexekveringsmiljöundermapp %s" # TODO: in gnome-software as well #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Användarexekveringsmiljömapp" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "FilsystemsÃ¥tkomst till %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Okänd filsystemssökväg" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Hämtningsstorlek" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Installerad storlek" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "Mängd att hämta frÃ¥n internet" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Storlek pÃ¥ disk" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Öppna användardatamapp" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "Dina användardata" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Cachar, inställningar och andra programdata" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Cache" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "Tillfälligt cachade data" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "Töm cache" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Installerad storlek för exekveringsmiljö" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Hämtningsstorlek för exekveringsmiljö" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:394 #: src/context-tile-callbacks.c:416 msgid "N/A" msgstr "-" #: src/bz-app-size-dialog.c:195 src/bz-app-size-dialog.c:208 msgid "Storage" msgstr "Lagring" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 src/bz-rich-app-tile.blp:106 #: src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Verifierat" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:136 msgid "Installed" msgstr "Installerat" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:774 msgid "translator-credits" msgstr "" "Anders Jonsson <anders.jonsson@norsjovallen.se>\n" "Skicka synpunkter pÃ¥ översättningen till <tp-sv@listor.tp-sv.se>" #: src/bz-application.c:784 msgid "Special Thanks" msgstr "Tack till" #: src/bz-application.c:842 msgid "Logged Out Successfully!" msgstr "Loggade ut!" #: src/bz-application.c:1048 msgid "Ubuntu Troubles!" msgstr "Ubuntu-problem!" #: src/bz-application.c:1051 msgid "" "Ubuntu 25.10 and newer have messed up default security rules, making it " "<b>impossible to install apps</b> from the Flatpak version of Bazaar, please " "just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Ubuntu 25.10 och nyare har felaktiga standardsäkerhetsregler, vilket gör det " "<b>omöjligt att installera program</b> frÃ¥n Flatpak-versionen av Bazaar, använd " "för närvarande det vanliga paketet genom att använda\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "Du kan sedan ta bort denna Flatpak-version med\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1057 msgid "Continue Anyway" msgstr "Fortsätt ändÃ¥" #: src/bz-application.c:1073 msgid "Performing setup…" msgstr "Genomför konfiguration…" #: src/bz-application.c:1172 msgid "Set Up System Flathub?" msgstr "Konfigurera systemets Flathub?" #: src/bz-application.c:1175 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Systemets Flathub-fjärr är inte konfigurerad. Bazaar kräver att Flathub är " "konfigurerat i systemets Flatpak-installation för att bläddra bland och " "installera program.\n" "\n" "Du kan fortfarande använda Bazaar för att bläddra bland och ta bort redan " "installerade program." #: src/bz-application.c:1182 msgid "Set Up Flathub?" msgstr "Konfigurera Flathub?" #: src/bz-application.c:1185 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub är inte konfigurerat pÃ¥ detta system. Du kommer inte kunna bläddra " "bland och installera program i Bazaar om det är otillgängligt.\n" "\n" "Du kan fortfarande använda Bazaar för att bläddra bland och ta bort redan " "installerade program." #: src/bz-application.c:1191 msgid "Later" msgstr "Senare" #: src/bz-application.c:1192 msgid "Set Up Flathub" msgstr "Konfigurera Flathub" #: src/bz-application.c:1726 msgid "A backend error occurred" msgstr "Ett bakändesfel inträffade" #: src/bz-application.c:1934 src/bz-application.c:4205 msgid "Refreshing…" msgstr "Uppdaterar…" #: src/bz-application.c:2098 #, c-format msgid "Loading %d apps…" msgstr "Läser in %d program…" #: src/bz-application.c:2151 src/bz-application.c:2225 msgid "Failed to open file" msgstr "Misslyckades med att öppna fil" #: src/bz-application.c:2239 msgid "Failed to load metainfo" msgstr "Misslyckades med att läsa in metainfo" #: src/bz-application.c:2333 msgid "An initialization error occurred" msgstr "Ett initieringsfel inträffade" #: src/bz-application.c:2732 msgid "Checking for updates…" msgstr "Letar efter uppdateringar…" #: src/bz-application.c:2788 msgid "Failed to check for updates" msgstr "Misslyckades med att leta efter uppdateringar" #: src/bz-application.c:3976 msgid "Malformed Link" msgstr "Felformaterad länk" #: src/bz-application.c:3977 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Länken som används för att öppna detta program har oriktig versalisering och " "kan sluta fungera i framtiden.\n" "\n" "Detta orsakas troligen av att KRunner skickar felaktiga program-ID:n" #: src/bz-application.c:3985 msgid "Could not find app" msgstr "Kunde inte hitta program" #: src/bz-application.c:4202 #, c-format msgid "Loading %d app…" msgid_plural "Loading %d apps…" msgstr[0] "Läser in %d program…" msgstr[1] "Läser in %d program…" #: src/bz-application.c:4207 msgid "Writing to cache…" msgstr "Skriver till cache…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Visa alla" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Alla â€%sâ€" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d program" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Misslyckades med att läsa in artikel" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Installation av bunt" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Ytterligare beroenden kan ta extra utrymme" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps from " "this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Att installera detta program kan kräva tillägg av en ny programvarukälla. Andra " "program frÃ¥n denna källa kommer visas i Bazaar.\n" "\n" "Lägg endast till denna källa om du är säker pÃ¥ att du litar pÃ¥ den." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "Installerades!" #. TRANSLATORS: Button to launch an installed app #: src/bz-bundle-install-dialog.blp:438 src/bz-bundle-install-dialog.blp:524 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:299 msgid "Open" msgstr "Öppna" #: src/bz-bundle-install-dialog.blp:448 src/bz-bundle-install-dialog.blp:534 msgid "Show App Details" msgstr "Visa programdetaljer" #: src/bz-bundle-install-dialog.blp:499 msgid "Already Installed" msgstr "Redan installerat" #: src/bz-bundle-install-dialog.blp:546 msgid "Installation Failed" msgstr "Installationen misslyckades" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Okänd installationsstorlek" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Ungefär %s att installera" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Inga speciella rättigheter" #: src/bz-curated-view.blp:27 msgid "No Curation" msgstr "Inget urval" #: src/bz-curated-view.blp:29 msgid "" "There is no curation information provided on this system. You can still browse " "apps on Flathub" msgstr "" "Ingen urvalsinformation tillhandahÃ¥lls pÃ¥ detta system. Du kan fortfarande " "bläddra bland program pÃ¥ Flathub" #: src/bz-curated-view.blp:33 msgid "Browse Flathub" msgstr "Bläddra pÃ¥ Flathub" #: src/bz-curated-view.blp:49 msgid "Offline" msgstr "FrÃ¥nkopplad" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Inte verifierad" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "Utvecklarinformation är inte tillgänglig." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a community " "package." msgstr "" "Ägarskapet till program-ID:t %s har inte verifierats, det kan vara ett " "gemensamhetspaket." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub team." msgstr "" "Ägarskapet till program-ID:t %s har verifierats manuellt av Flathub-gruppen." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on <b>%3$s</" "b>." msgstr "" "Ägarskapet till program-ID:t %1$s har verifierats av <b>%2$s</b> pÃ¥ <b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "Ägarskapet till program-ID:t %1$s har verifierats med %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Ägarskapet till program-ID:t %s har verifierats." #: src/bz-donations-dialog.blp:7 msgid "Bazaar Release" msgstr "Bazaar-utgÃ¥va" #: src/bz-donations-dialog.blp:77 msgid "Full Release Notes" msgstr "Fullständiga kommentarer till utgÃ¥va" #: src/bz-donations-dialog.blp:112 msgid "This release was made possible by users like you!" msgstr "Denna utgÃ¥va gjordes möjlig av användare som du!" #: src/bz-donations-dialog.blp:121 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Jag älskar att skapa Bazaar, men kan inte göra det själv. Stöd vidare " "utveckling genom att donera pÃ¥ Ko-Fi." #: src/bz-donations-dialog.blp:136 msgid "Donate to Bazaar" msgstr "Donera till Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:228 #, c-format msgid "What's New in %s?" msgstr "Vad är nytt i %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:244 msgid "Released %B %-e, %Y" msgstr "Släppt %-e %B, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Välj en installation" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like to " "proceed with?" msgstr "" "Du har flera versioner av detta program installerade. Vilken vill du fortsätta " "med?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "Avbryt" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Endast för denna användare" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "denna användare" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "alla användare" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:100 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Detaljer" #. TRANSLATORS: tooltip for a button that copies text to the clipboard #: src/bz-error-dialog.blp:48 msgid "Copy" msgstr "Kopiera" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 src/bz-share-list.c:364 msgid "Copied!" msgstr "Kopierad!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Antal favoriter" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Misslyckades med att uppdatera favorit" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Logga in med Flathub för att hantera favoriter" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Logga in" #: src/bz-favorites-page.blp:5 src/bz-window.blp:348 msgid "Favorites" msgstr "Favoriter" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Installera alla" #: src/bz-favorites-page.blp:47 msgid "No Favorites" msgstr "Inga favoriter" #: src/bz-favorites-page.blp:48 msgid "Applications you mark as favorite will appear here" msgstr "Program som du märkt som favorit kommer visas här" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Stöd detta programm" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Ta bort frÃ¥n favoriter" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Misslyckades med att ta bort favorit" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "FöregÃ¥ende" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Nästa" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Redigering" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mixer" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Musik" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Spelare" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Inspelare" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Sequencer" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Stämapparat" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Emulering" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Action" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Äventyr" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Arkad" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Klossar" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Brädspel" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Kort" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Barn" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Logik" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Rollspel" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Skjutspel" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulering" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Sport" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Strategi" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Webbläsare" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Chatt" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "E-post" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Fildelning" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Ljud och video" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Media" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Mer ljud och video" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Utvecklarverktyg" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Utveckla" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Mer utvecklarverktyg" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "Utbildning" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Lär dig" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Mer utbildning" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Spelande" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Spela" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Mer spelande" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafik och fotografi" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "Skapa" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Mer grafik och fotografi" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Nätverk" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Mer nätverk" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Produktivitet" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Arbete" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Mer produktivitet" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Vetenskap" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Mer vetenskap" #: src/bz-flathub-category.c:142 msgid "System" msgstr "System" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Mer system" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Nyttoprogram" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:434 msgid "Tools" msgstr "Verktyg" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Mer nyttoprogram" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:106 #: src/bz-flathub-page.blp:138 msgid "Trending" msgstr "Trendande" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Mer trendande" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:112 #: src/bz-flathub-page.blp:171 msgid "Popular" msgstr "Populärt" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Mer populärt" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:160 msgid "Recently Added" msgstr "Senast tillagt" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:118 msgid "New" msgstr "Nytt" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Mer nytt" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:149 msgid "Recently Updated" msgstr "Senast uppdaterat" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:124 msgid "Updated" msgstr "Uppdaterat" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Mer uppdaterat" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Mobil" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Mer mobil" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Mer Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "KDE-program" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Mer KDE-program" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:416 msgid "Games" msgstr "Spel" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:476 msgid "More Games" msgstr "Mer spel" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:422 msgid "Emulators" msgstr "Emulatorer" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Mer emulatorer" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:428 msgid "Launchers" msgstr "Startare" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Mer spelstartare" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Spelverktyg" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Mer spelverktyg" #: src/bz-flathub-page.blp:22 msgid "Flathub Not Added" msgstr "Flathub lades inte till" #: src/bz-flathub-page.blp:23 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Flathub-fjärren hittades inte pÃ¥ nÃ¥gon av dina Flatpak-installationer" #: src/bz-flathub-page.blp:32 msgid "Can't Reach Flathub" msgstr "Kommer inte Ã¥t Flathub" #: src/bz-flathub-page.blp:33 msgid "You can still manage and search for apps." msgstr "Du kan fortfarande hantera och söka program." #: src/bz-flathub-page.blp:39 msgid "Search Apps" msgstr "Sök program" #: src/bz-flathub-page.blp:50 msgid "Reconnect" msgstr "Anslut igen" #: src/bz-flathub-page.blp:199 msgid "App of the Day" msgstr "Dagens program" #: src/bz-flathub-page.blp:262 msgid "On the Go" msgstr "I farten" #: src/bz-flathub-page.blp:274 msgid "Apps for your Linux phones and tablets" msgstr "Program för dina Linux-telefoner och plattor" #: src/bz-flathub-page.blp:285 src/bz-flathub-page.blp:320 msgid "More Mobile Apps" msgstr "Fler mobilappar" #: src/bz-flathub-page.blp:378 msgid "We​ ♥​ Games" msgstr "Vi​ ♥​ spel" #: src/bz-flathub-page.blp:391 msgid "Games and apps to run your favorite titles" msgstr "Spel och program för att köra dina favorittitlar" #: src/bz-full-view.blp:33 msgid "No Results" msgstr "Inga resultat" #: src/bz-full-view.blp:34 msgid "Try a different search query" msgstr "Försök med en annan sökning" #: src/bz-full-view.blp:103 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Detta är en lokal förhandsgranskning, vissa detaljer kan skilja sig frÃ¥n den " "publicerade posten" #: src/bz-full-view.blp:106 msgid "Preview Store Appearance" msgstr "Förhandsgranska butiksutseende" #: src/bz-full-view.blp:233 msgid "_Support" msgstr "_Stöd" #: src/bz-full-view.blp:458 msgid "" "This app uses a runtime that no longer receives updates or security fixes. It " "may become unsafe to use." msgstr "" "Detta program använder en exekveringsmiljö som inte längre tar emot " "uppdateringar eller säkerhetsfixar. Det kan bli osäkert att använda." #: src/bz-full-view.blp:536 msgid "Trash Data" msgstr "Kasta data i papperskorgen" #: src/bz-full-view.blp:599 msgid "Add-ons" msgstr "Tillägg" #: src/bz-full-view.blp:634 msgid "More Add-Ons" msgstr "Mer tillägg" #: src/bz-full-view.blp:645 msgid "Links" msgstr "Länkar" #: src/bz-full-view.blp:676 msgid "Similar Apps" msgstr "Liknande program" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Ingen URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for safety." msgstr "" "Detta program har en FLOSS-licens (fri programvara med öppen källkod), vilket " "betyder att källkoden kan säkerhetsgranskas." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Detta program har en proprietär licens, vilket betyder att källkoden utvecklas " "privat och inte kan granskas av en oberoende tredje part." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Mer program" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Mer program av %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Andra program av denna utvecklare" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "Andra program av %s" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s är inte installerat men har fortfarande kvar <b>%s</b> data." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Andra program" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d program" msgstr[1] "%d program" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:160 msgid "Failed to Remove User Data" msgstr "Misslyckades med att ta bort användardata" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "HÃ¥rdvarustöd" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Tangentbordsstöd" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Kräver tangentbord" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Rekommenderar tangentbord" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Stöder tangentbord" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Okänt stöd för tangentbord" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Musstöd" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Kräver möss eller pekdon" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Rekommenderar möss eller pekdon" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Stöder möss eller pekdon" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Okänt stöd för möss eller pekdon" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Pekskärmsstöd" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Kräver pekskärmar" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Rekommenderar pekskärmar" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Stöder pekskärmar" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Okänt stöd för pekskärmar" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Mobilstöd" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Fungerar pÃ¥ mobila enheter" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Kanske inte fungerar bra pÃ¥ mobila enheter" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Skrivbordsstöd" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Fungerar bäst pÃ¥ stora skärmar" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s fungerar bäst pÃ¥ specifik hÃ¥rdvara" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s fungerar pÃ¥ de flesta enheter" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Inspektörsmeny" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "Ö_ppna" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Avinstallera program" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Ta bort" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "Uppdatera" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Ta bort" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Installera %s frÃ¥n %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Installera %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "Avbryt" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "Avbryter" #: src/bz-installed-tile.blp:80 msgid "Donate" msgstr "Donera" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "Sök installerade program" #: src/bz-library-page.blp:32 msgid "No Apps Found" msgstr "Inga program hittades" #: src/bz-library-page.blp:49 msgid "Search Store Instead" msgstr "Sök i butiken i stället" #: src/bz-library-page.blp:86 msgid "Pending Updates" msgstr "Väntande uppdateringar" #: src/bz-library-page.blp:113 msgid "Downloads" msgstr "Hämtningar" #: src/bz-library-page.blp:156 msgid "Recently Uninstalled" msgstr "Senast avinstallerade" #: src/bz-library-page.blp:207 msgid "Clear Finished Tasks" msgstr "Rensa utförda uppgifter" #: src/bz-library-page.blp:234 msgid "Sort Options" msgstr "Sorteringsalternativ" #: src/bz-library-page.blp:293 msgid "Sort By" msgstr "Sortera efter" #: src/bz-library-page.blp:307 msgid "Name" msgstr "Namn" #: src/bz-library-page.blp:313 msgid "Size" msgstr "Storlek" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Inga matchningar för â€%s†i listan över installerade program" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u uppdatering tillgänglig" msgstr[1] "%u uppdateringar tillgängliga" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u program installerat" msgstr[1] "%u program installerade" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Inga program hittades" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Ett program hittades" msgstr[1] "%u program hittades" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Engagera dig" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Läs mer" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Okänd licens" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Gemenskapsbyggd" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:289 msgid "Proprietary" msgstr "Proprietär" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:291 msgid "Special License" msgstr "Speciell licens" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Detta program utvecklas öppet av en internationell gemenskap.\n" "\n" "Du kan bidra och hjälpa till att göra det ännu bättre." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Licensen för detta program är okänd" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and released " "under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Detta program utvecklas öppet av en internationell gemenskap, och är släppt " "under licensen %s.\n" "\n" "Du kan bidra och hjälpa till att göra det ännu bättre." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Detta program utvecklas inte öppet, sÃ¥ endast dess utvecklare vet hur det " "fungerar. Det kan vara osäkert pÃ¥ sätt som är svÃ¥ra att upptäcka, och det kan " "ändras utan att du kan se vad som ändrats.\n" "\n" "Du kommer kanske inte kunna bidra till detta program." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Detta program utvecklas under den speciella licensen â€%sâ€.\n" "\n" "Du kan kanske, eller kanske inte bidra till detta program." #: src/bz-license-dialog.c:345 src/bz-license-dialog.c:364 #: src/bz-safety-dialog.blp:103 msgid "License" msgstr "Licens" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Anslut till Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "NÃ¥got gick fel" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Logga in för att synkronisera dina favoritprogram mellan enheter" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Slutför" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Hej, %s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "Lägg till ikon till Metainfo-förhandsgranskning?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to select " "one manually?" msgstr "" "Metainfo-filer inkluderar inte programikoner av sig själva. Vill du välja en " "manuellt?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "Hoppa över" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Välj ikon" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Bildfiler" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Inställningar" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "" "Nätverksanslutningen har datakvoter — automatiska uppdateringar av butiksdata " "är pausade" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Uppdatera manuellt" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Programuppdateringar" #: src/bz-preferences-dialog.blp:33 msgid "" "Auto-updates will pause on metered networks or when power saving is on to save " "data and battery." msgstr "" "Automatiska uppdateringar kommer pausas pÃ¥ nätverk med datakvot eller när " "strömsparare är pÃ¥ för att spara data och batteri." #: src/bz-preferences-dialog.blp:36 msgid "_Automatic" msgstr "_Automatiskt" #: src/bz-preferences-dialog.blp:37 msgid "Automatically check for and download app updates" msgstr "Sök och hämta programuppdateringar automatiskt" #: src/bz-preferences-dialog.blp:48 msgid "_Manual" msgstr "_Manuellt" #: src/bz-preferences-dialog.blp:49 msgid "Checking for and downloading app updates must be done manually" msgstr "Sökning och hämtning av programuppdateringar mÃ¥ste göras manuellt" #: src/bz-preferences-dialog.blp:67 msgid "Automatic Update _Notifications" msgstr "_Aviseringar för automatiska uppdateringar" #: src/bz-preferences-dialog.blp:68 msgid "Notify when updates have been automatically installed" msgstr "Meddela dÃ¥ uppdateringar har installerats automatiskt" #: src/bz-preferences-dialog.blp:73 msgid "Content Filters" msgstr "InnehÃ¥llsfilter" #: src/bz-preferences-dialog.blp:76 msgid "_Free Software Only" msgstr "Endast _fri programvara" #: src/bz-preferences-dialog.blp:77 msgid "Hide proprietary apps when browsing and searching" msgstr "Dölj proprietär programvara vid bläddring och sökning" #: src/bz-preferences-dialog.blp:82 msgid "F_lathub Results Only" msgstr "Endast F_lathub-resultat" #: src/bz-preferences-dialog.blp:83 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Begränsa sök- och bläddringsresultat till bara program som finns pÃ¥ Flathub" #: src/bz-preferences-dialog.blp:88 msgid "_Verified Results Only" msgstr "Endast _verifierade resultat" #: src/bz-preferences-dialog.blp:89 msgid "Hide results that are not verified on Flathub" msgstr "Dölj resultat som inte är verifierade pÃ¥ Flathub" #: src/bz-preferences-dialog.blp:94 msgid "Hide _End-of-Life Apps" msgstr "Dölj program som _passerat slutet pÃ¥ sin livstid" #: src/bz-preferences-dialog.blp:95 msgid "Hide apps which are no longer supported by their developers" msgstr "Dölj program som inte längre stöds av utvecklarna" #: src/bz-preferences-dialog.blp:101 msgid "Progress Bar Theme" msgstr "Tema för förloppsindikator" #: src/bz-preferences-dialog.c:39 msgid "Accent Color" msgstr "Accentfärg" #: src/bz-preferences-dialog.c:40 msgid "Pride Colors" msgstr "Pridefärger" #: src/bz-preferences-dialog.c:41 msgid "Lesbian Pride Colors" msgstr "Lesbisk pride-färger" #: src/bz-preferences-dialog.c:42 msgid "Male Homosexual Pride Colors" msgstr "Manlig homosexuell pride-färger" #: src/bz-preferences-dialog.c:43 msgid "Transgender Pride Colors" msgstr "Transgender-pridefärger" #: src/bz-preferences-dialog.c:44 msgid "Nonbinary Pride Colors" msgstr "Ickebinär pride-färger" #: src/bz-preferences-dialog.c:45 msgid "Bisexual Pride Colors" msgstr "Bisexuell pride-färger" #: src/bz-preferences-dialog.c:46 msgid "Asexual Pride Colors" msgstr "Asexuell pride-färger" #: src/bz-preferences-dialog.c:47 msgid "Pansexual Pride Colors" msgstr "Pansexuell pride-färger" #: src/bz-preferences-dialog.c:48 msgid "Aromantic Pride Colors" msgstr "Aromantisk pride-färger" #: src/bz-preferences-dialog.c:49 msgid "Genderfluid Pride Colors" msgstr "Genderfluid-pridefärger" #: src/bz-preferences-dialog.c:50 msgid "Polysexual Pride Colors" msgstr "Polysexuell pride-färger" #: src/bz-preferences-dialog.c:51 msgid "Omnisexual Pride Colors" msgstr "Omnisexuell pride-färger" #: src/bz-preferences-dialog.c:52 msgid "Aroace Pride Colors" msgstr "Aromantisk asexuell pride-färger" #: src/bz-preferences-dialog.c:53 msgid "Agender Pride Colors" msgstr "Agender-pridefärger" #: src/bz-preferences-dialog.c:54 msgid "Genderqueer Pride Colors" msgstr "Genderqueer-pridefärger" #: src/bz-preferences-dialog.c:55 msgid "Intersex Pride Colors" msgstr "Intersex-pridefärger" #: src/bz-preferences-dialog.c:56 msgid "Demigender Pride Colors" msgstr "Demigender-pridefärger" #: src/bz-preferences-dialog.c:57 msgid "Biromantic Pride Colors" msgstr "Biromantisk pride-färger" #: src/bz-preferences-dialog.c:58 msgid "Disability Pride Colors" msgstr "Funktionshinder-pridefärger" #: src/bz-preferences-dialog.c:59 msgid "Femboy Pride Colors" msgstr "Femboy-pridefärger" #: src/bz-preferences-dialog.c:60 msgid "Neutrois Pride Colors" msgstr "Neutrois-pridefärger" #: src/bz-preferences-dialog.c:280 msgid "Bazaar needs to run in the background to check for app updates" msgstr "Bazaar behöver köras i bakgrunden för att söka programuppdateringar" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Versionshistorik" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Versionshistorik" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "I dag" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "I gÃ¥r" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag sedan" msgstr[1] "%d dagar sedan" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d vecka sedan" msgstr[1] "%d veckor sedan" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d mÃ¥nad sedan" msgstr[1] "%d mÃ¥nader sedan" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d Ã¥r sedan" msgstr[1] "%d Ã¥r sedan" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Version %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Inga detaljer för denna utgÃ¥va" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "FÃ¥ mer information" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Avinstallera" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "/" #: src/bz-safety-dialog.blp:32 src/bz-safety-dialog.c:297 #: src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "Godtyckliga rättigheter" #: src/bz-safety-dialog.blp:49 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a privileged, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app is " "likely to do." msgstr "" "Detta program har en rättighet som indirekt lÃ¥ter det ge sig själv <b>vilken " "annan rättighet som helst som det vill ha</b>, vilket Ã¥sidosätter Flatpak-" "sandlÃ¥dan.\n" "\n" "Det kan därmed göra vad som helst som ett privilegierat program utan sandlÃ¥da " "kan göra, som att komma Ã¥t alla dina filer och ansluta till internet.\n" "\n" "Att se de andra rättigheterna kan ändÃ¥ ge en bättre idé om vad programmet kan " "förväntas göra." #: src/bz-safety-dialog.blp:53 msgid "View Other Permissions" msgstr "Visa andra rättigheter" #. TRANSLATORS: short app safety rating label #: src/bz-safety-dialog.blp:81 src/context-tile-callbacks.c:402 msgid "Safe" msgstr "Säkert" #: src/bz-safety-dialog.blp:114 msgid "App ID" msgstr "Program-ID" #: src/bz-safety-dialog.blp:124 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:158 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Detta program använder en gammal version av programvaruplattformen (SDK) och " "kan innehÃ¥lla fel eller säkerhetssÃ¥rbarheter som inte kommer fixas." #: src/bz-safety-dialog.c:283 src/bz-safety-dialog.c:317 msgid "Safety" msgstr "Säkerhet" #: src/bz-safety-dialog.c:377 #, c-format msgid "%s is Safe" msgstr "%s är säkert" #: src/bz-safety-dialog.c:382 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s har inga osäkra rättigheter" #: src/bz-safety-dialog.c:387 #, c-format msgid "%s is Probably Safe" msgstr "%s är troligen säkert" #: src/bz-safety-dialog.c:392 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s är potentiellt osäkert" #: src/bz-safety-dialog.c:397 #, c-format msgid "%s is Unsafe" msgstr "%s är osäkert" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "BakÃ¥t" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "FöregÃ¥ende skärmbild" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Nästa skärmbild" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Kopiera bild" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Ã…terställ vy" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Zooma ut" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Zooma in" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Skärmbildskarusell" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Inga skärmbilder" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Öppna skärmbildsvisare" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Skärmbild %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Skärmbild %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "Töm sökfält" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Filter" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Verifierade" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Fria/öppna" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Vars _livstid inte är slut" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Filtrera bort program som passerat slutet pÃ¥ sin livstid" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Mobilvänliga" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategorier" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "Sök program, spel" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Sökfilter" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Bläddra kategorier" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Kategorier är inte tillgängliga" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Sök efter program med sökfältet ovan." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Inga program hittades" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Inga resultat hittades för â€%s†i Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Webbläsare" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Video" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Kontor" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Kalender" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "Snabbmeddelanden" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "MÃ¥la" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Emulator" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub-sida" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Projektwebbplats" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Ärendehanteringssystem" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "FrÃ¥gor och svar" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Hjälp" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Donera" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Översätt" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "Kontakt" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Källkod" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Bidra" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifest" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Kopiera länk" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "Tidslinje" # Antalet installationer #. TRANSLATORS: label prefix shown in graph tooltips, for example: "Installs: 42" #: src/bz-stats-dialog.blp:48 msgid "Installs:" msgstr "Installationer:" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:58 msgid "World" msgstr "Världen" #: src/bz-stats-dialog.blp:72 msgid "Since 4/15/2024" msgstr "Sedan 2024-04-15" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM installationer totalt" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK installationer totalt" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d installationer totalt" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Inga resultat hittades" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Sökning misslyckades" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Bevara användardata" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "TillÃ¥t Ã¥terställande av programinställningar och innehÃ¥ll" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Ta bort alla data" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Ta permanent bort data för att spara utrymme" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Installera %s?" #: src/bz-transaction-dialog.c:195 msgid "Select which version to install. May install additional shared components" msgstr "" "Välj vilken version som ska installeras. Kan installera ytterligare delade " "komponenter" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Kan installera ytterligare delade komponenter" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "A_vbryt" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Installera" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Ta bort %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Välj vilken version som ska tas bort." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Det kommer inte vara möjligt att använda %s efter borttagning." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "â€%s†har hög risk" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, browser " "history, saved passwords</b>, and more. It also has access to the internet, " "meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Detta program har fullständig Ã¥tkomst till ditt system, inklusive alla <b>dina " "filer, webbläsarhistorik, sparade lösenord</b> med mera. Det har ocksÃ¥ Ã¥tkomst " "till internet, vilket betyder att det skulle kunna sända dina data till " "utomstÃ¥ende.\n" "\n" "Eftersom programmet är proprietärt sÃ¥ gÃ¥r det inte granska vad det gör med " "dessa rättigheter." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record all " "keystrokes, capture screenshots, and monitor other applications</b>. It also " "has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Detta program använder det äldre X11-fönstersystemet, vilket tillÃ¥ter det att " "<b>spela in alla tangenttryckningar, ta skärmbilder, och övervaka andra " "program</b>. Det har ocksÃ¥ Ã¥tkomst till internet, vilket betyder att det skulle " "kunna sända dina data till utomstÃ¥ende.\n" "\n" "Eftersom programmet är proprietärt sÃ¥ gÃ¥r det inte granska vad det gör med " "dessa rättigheter." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Installera ändÃ¥" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Misslyckades med att läsa in transaktionsdialog" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Alla program är redan installerade" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_OK" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Installera %u program?" msgstr[1] "Installera %u program?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "Följande kommer installeras. Ytterligare delade komponenter kan ocksÃ¥ " "installeras" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d tillägg kommer installeras." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Ytterligare kommer tillägg att installeras." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Installera alla" #: src/bz-transaction-manager.c:796 #, c-format msgid "Finished in %.02f seconds" msgstr "Slutförde pÃ¥ %.02f sekunder" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Programtillägg" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Exekveringsmiljö" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "I kö" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Färdig" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "Avbruten" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Fel" #: src/bz-transaction-tile.blp:313 msgid "Cancel Transaction" msgstr "Avbryt transaktion" #: src/bz-transaction-tile.blp:323 msgid "Show Details" msgstr "Visa detaljer" #: src/bz-transaction-tile.blp:438 msgid "Show Error Info" msgstr "Visa felinfo" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s frigjort" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Transaktionsfel" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Väntar" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Uppdatera alla" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u exekveringsmiljöuppdatering" msgstr[1] "%u exekveringsmiljöuppdateringar" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Hantera kvarblivna användardata" #: src/bz-user-data-page.blp:32 msgid "No Leftover User Data Found" msgstr "Inga kvarblivna användardata hittades" #: src/bz-user-data-page.blp:33 msgid "Personal data left behind by apps that were removed will show up here" msgstr "" "Personliga data som lämnats kvar av program som tagits bort kommer visas här" #: src/bz-user-data-page.c:229 #, c-format msgid "Trashed User Data for %u App" msgid_plural "Trashed User Data for %u Apps" msgstr[0] "Kastade användardata för %u program i papperskorgen" msgstr[1] "Kastade användardata för %u program i papperskorgen" #: src/bz-user-data-page.c:233 #, c-format msgid "Trashed User Data for %s" msgstr "Kastade användardata för %s i papperskorgen" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Öppna användardatamapp" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Kasta användardata i papperskorgen" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Uppdaterar" #: src/bz-window.blp:90 msgid "Curated" msgstr "Utvalt" #: src/bz-window.blp:102 msgid "Explore" msgstr "Utforska" #. Translators: . #: src/bz-window.blp:114 msgid "Library" msgstr "Bibliotek" #: src/bz-window.blp:129 msgid "Search" msgstr "Sök" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Huvudmeny" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Du kör en ny version av Bazaar!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Se vad som är nytt" #: src/bz-window.blp:235 msgid "You have a network connection but are viewing a cached version of Flathub" msgstr "Du har en nätverksanslutning men tittar pÃ¥ en cachad version av Flathub" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "" "Nätverksanslutningen har datakvoter — automatiska uppdateringar är inaktiverade" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Donera till Bazaar" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Uppdatera" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "_Logga in med Flathub" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_Hantera kvarblivna användardata" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Inställningar" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "_Om Bazaar" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "A_vsluta Bazaar" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Logga ut" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Misslyckades med att starta program" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Du kör inte ta bort Bazaar frÃ¥n Bazaar!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Kan inte göra det just nu!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "installation" msgstr[1] "installationer" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d hämtningar senaste mÃ¥naden" # TODO: %s är storleken #. TRANSLATORS: %s is a formatted file size, for example: "128 MB" #: src/context-tile-callbacks.c:133 #, c-format msgid "+%s Runtime" msgstr "+%s exekveringsmiljö" #: src/context-tile-callbacks.c:136 msgid "Download" msgstr "Hämta" #: src/context-tile-callbacks.c:156 msgid "Size information unavailable" msgstr "Storleksinformation är inte tillgänglig" #: src/context-tile-callbacks.c:159 #, c-format msgid "Download size of %s" msgstr "Hämtningsstorlek för %s" #: src/context-tile-callbacks.c:192 msgid "All Ages" msgstr "Alla Ã¥ldrar" #: src/context-tile-callbacks.c:204 msgid "Age rating information unavailable" msgstr "Ingen information för Ã¥ldersklassificering tillgänglig" #: src/context-tile-callbacks.c:209 msgid "Suitable for all ages" msgstr "Lämpligt för alla Ã¥ldrar" #: src/context-tile-callbacks.c:211 #, c-format msgid "Suitable for ages %d and up" msgstr "Lämpligt för Ã¥ldern %d och uppÃ¥t" #: src/context-tile-callbacks.c:244 src/context-tile-callbacks.c:249 #: src/context-tile-callbacks.c:277 src/context-tile-callbacks.c:286 msgid "Unknown" msgstr "Okänt" #: src/context-tile-callbacks.c:254 #, c-format msgid "Free software licensed under %s" msgstr "Fri programvara licensierad under %s" #: src/context-tile-callbacks.c:259 msgid "Free software" msgstr "Fri programvara" #: src/context-tile-callbacks.c:262 msgid "Proprietary Software" msgstr "Proprietär programvara" #: src/context-tile-callbacks.c:265 #, c-format msgid "Special License: %s" msgstr "Speciell licens: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:283 msgid "Free Software" msgstr "Fri programvara" #: src/context-tile-callbacks.c:311 msgid "Adaptive" msgstr "Adaptivt" #: src/context-tile-callbacks.c:311 msgid "Desktop Only" msgstr "Endast skrivbord" #: src/context-tile-callbacks.c:317 msgid "Works on desktop, tablets, and phones" msgstr "Fungerar pÃ¥ skrivbord, plattor och telefoner" #: src/context-tile-callbacks.c:318 msgid "May not work on mobile devices" msgstr "Kanske inte fungerar pÃ¥ mobila enheter" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:405 src/context-tile-callbacks.c:408 msgid "Low Risk" msgstr "LÃ¥g risk" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:411 msgid "Medium Risk" msgstr "Medelrisk" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:414 msgid "High Risk" msgstr "Hög risk" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Okända rättigheter" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Rättigheter saknas för detta program." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Inga rättigheter" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Programmet körs fullständigt i sandlÃ¥da" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "NätverksÃ¥tkomst" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Kan ansluta till internet" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Ingen nätverksÃ¥tkomst" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Kan inte ansluta till internet" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Ã…tkomst till användarenheter" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Kan komma Ã¥t enheter som webbkameror eller spelkontroller" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Ingen Ã¥tkomst till användarenheter" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Kan inte komma Ã¥t enheter som webbkameror eller spelkontroller" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Ã…tkomst till inmatningsenheter" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Kan komma Ã¥t inmatningsenheter" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Ã…tkomst till mikrofon och ljuduppspelning" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "Kan lyssna pÃ¥ mikrofoner och spela upp ljud utan att be om tillÃ¥telse" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Ã…tkomst till systemenheter" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "Kan komma Ã¥t systemenheter som kräver höjda rättigheter" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Ã…tkomst till skärminnehÃ¥ll" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Kan komma Ã¥t innehÃ¥llet pÃ¥ skärmen eller andra fönster" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Gammalt fönstersystem" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Använder alltid ett gammalt fönstersystem (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Kan erhÃ¥lla godtyckliga rättigheter" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Användarinställningar" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Kan visa och ändra användarinställningar" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Läs/skrivÃ¥tkomst för hela filsystemet" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Kan läsa och skriva alla data pÃ¥ filsystemet" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Läs/skrivÃ¥tkomst för hemmapp" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Kan läsa och skriva alla data i din hemkatalog" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "LäsÃ¥tkomst för hela filsystemet" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Kan läsa alla data pÃ¥ filsystemet" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "LäsÃ¥tkomst för hemmapp" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Kan läsa alla data i din hemkatalog" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "Läs/skrivÃ¥tkomst för hämtningsmapp" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Kan läsa och skriva alla data i din hämtningskatalog" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "LäsÃ¥tkomst för hämtningsmapp" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Kan läsa alla data i din hämtningskatalog" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Kan läsa och skriva alla data i katalogen" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Kan läsa alla data i katalogen" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Ingen filsystemsÃ¥tkomst" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Kan inte komma Ã¥t filsystemet alls" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Använder systemtjänster" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Kan begära data frÃ¥n systemtjänster utan portal" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Använder sessionstjänster" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Kan begära data frÃ¥n sessionstjänster utan portal" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Ingen tjänsteÃ¥tkomst" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "" "Kan överhuvudtaget inte komma Ã¥t sessions- eller systemtjänster utan portal" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Verifierad programutvecklare" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "Utvecklaren av detta program har bekräftats vara den de pÃ¥stÃ¥r sig vara" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Proprietär kod" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and might " "be unsafe" msgstr "" "Källkoden är inte offentlig, sÃ¥ oberoende granskning kan inte utföras och koden " "kan vara osäker" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Granskningsbar kod" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the app " "more likely to be safe" msgstr "" "Källkoden är offentlig, sÃ¥ oberoende granskning kan utföras, vilket gör " "programmet mer troligt att vara säkert" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "Använd systemtjänsten %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "Använd sessionstjänsten %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "Använd tjänsten %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Kan se tjänsten utan portal" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Kan prata med tjänsten utan portal" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Kan äga tjänsten utan portal" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Global menyintegration" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Kan visa sina menyer i en global menyrad" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "KDE-inställningsintegration" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Kan upptäcka när KDE-skrivbordsinställningar ändras" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Globala KDE-inställningar" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Kan läsa KDE-skrivbordsinställningar som typsnitt och färger" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Lagringstjänst för hemligheter" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "Kan lagra och hämta sina egna lösenord med systemnyckelringen" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Skrivbordsaviseringstjänst" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Kan skicka skrivbordsaviseringar" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Aktivitetsfältsintegration" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Kan visa en ikon i aktivitetsfältet" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "Integration med KDE-anslut" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Kan interagera med enheter som parats genom KDE-anslut" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigering" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Öppna sidan Utforska" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Öppna bibliotekssida" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Öppna söksida" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Fjärrar" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Synkronisera fjärrar" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Allmänt" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Öppna inställningar" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Visa kortkommandon" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Stäng fönster" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Avsluta Bazaar" #: src/transaction-notification.c:133 #, c-format msgid "%s Installed" msgstr "%s installerades" #: src/transaction-notification.c:135 msgid "The app is ready to be used" msgstr "Programmet är redo att användas" #: src/update-worker.c:263 msgid "Updates Are Out of Date" msgstr "Uppdateringar är inaktuella" #: src/update-worker.c:264 msgid "Please check for available updates" msgstr "Sök efter tillgängliga uppdateringar" #: src/update-worker.c:449 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "%u program uppdaterades" msgstr[1] "%u program uppdaterades" #: src/update-worker.c:452 #, c-format msgid "%s has been updated." msgstr "%s har uppdaterats." #: src/update-worker.c:455 #, c-format msgid "%s and %s have been updated." msgstr "%s och %s har uppdaterats." #: src/update-worker.c:459 #, c-format msgid "Includes %s, %s and %s." msgstr "Inkluderar %s, %s och %s." #~ msgid "Donate Button" #~ msgstr "Donera-knapp" ������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/tr.po������������������������������������������������������������������0000664�0000000�0000000�00000270126�15240005042�0016751�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Turkish translation for io.github.kolunmi.Bazaar. # Copyright (C) 2025-2026 io.github.kolunmi.Bazaar's COPYRIGHT HOLDER # This file is distributed under the same license as the io.github.kolunmi.Bazaar package. # # Sabri Ünal <yakushabb@gmail.com>, 2025-2026. # msgid "" msgstr "" "Project-Id-Version: io.github.kolunmi.Bazaar master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-07-22 18:51+0300\n" "PO-Revision-Date: 2026-07-25 23:14+0300\n" "Last-Translator: Sabri Ünal <yakushabb@gmail.com>\n" "Language-Team: Turkish <takim@gnome.org.tr>\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.9\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "Uygulama MaÄŸazası" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "Bu bilgisayara flatpak yazılımı ekle, kaldır ya da güncelle" #: data/io.github.kolunmi.Bazaar.desktop.in:10 #| msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "System;Package;Manager;Discover;Flatpak;Software;App;Store;Paket;Yönetici;KeÅŸfet;Yazılım;Uygulama;MaÄŸaza;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Yeni Pencere" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Uygulamaları keÅŸfet ve kur" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and installing Flatpak apps and add-ons, " "particularly from Flathub." msgstr "" "Özellikle Flathubʼdan Flatpak uygulamalarını ve eklentilerini keÅŸfetmeye ve kurmaya odaklanan, Linux için hızlı " "ve modern uygulama maÄŸazası." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Birden çok kurulumu kuyruklar ve gezinmeye devam et" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Uygulama izinlerini kolayca görüntüle" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Gözdelerinizi görüntülemek ve yönetmek için Flathub ile oturum açın" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Uygulamaları GNOME Shell üstünden ara" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:766 msgid "The Bazaar Contributors" msgstr "Bazaar Katkıcıları" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Flathub uygulamalarını görüntüleyen ana görünüm" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "Uygulama sergisi sayfası" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Kitaplık sayfası" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Arama sayfası" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Kategori sayfası" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Güncellemelerin Alınması Durduruldu" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Kaldır" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 src/bz-bundle-install-dialog.blp:162 #: src/bz-favorites-tile.c:157 src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Kur" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 src/bz-addons-dialog.blp:70 #: src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Eklentileri Yönet" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "Görünün Eklenti Yok" #: src/bz-addons-dialog.blp:81 msgid "Your current filter preferences are hiding all known add-ons. Try adjusting them." msgstr "Geçerli süzgeçleriniz, bilinen tüm eklentileri gizliyor. Süzgeç ayarlarını düzenleyin." #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "Eklenti Sayfası" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "İndirme/Ay" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "Çekirdek Güncellemelerinin Alınması Durduruldu" #: src/bz-addons-dialog.blp:245 msgid "This add-on uses a runtime that no longer receives updates or security fixes. It may become unsafe to use." msgstr "" "Bu eklenti, artık güncelleme ya da güvenlik düzeltmesi almayan bir çalışma zamanı kullanıyor. Kullanımı güvenli " "olmayabilir." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "%s Eklentisi" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Daha Az Göster" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Daha Çok Göster" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "İndirme İstatistikleri" # Arayüzde sığmadığı için new line eklendi #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 src/bz-age-rating-dialog.c:736 #: src/context-tile-callbacks.c:186 src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "" "YaÅŸ\n" "Derecelendirmesi" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Çizgi Dizisi Åžiddeti" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Çizgi dizisi ÅŸiddetiyle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Fantezi Åžiddeti" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Fantezi ÅŸiddetiyle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "Gerçekçi Åžiddet" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Gerçekçi ÅŸiddetle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "Kan Dökülmesini Betimleyen Åžiddet" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Kan dökülmesiyle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "Cinsel Åžiddet" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Cinsel ÅŸiddetle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Alkol" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Alkole atıflarla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "UyuÅŸturucu" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Yasadışı ilaçlara atıflarla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Tütün" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Tütün ürünlerine atıflarla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "Çıplaklık" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Herhangi biçimde çıplaklıkla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "Cinsel Temalar" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Cinsel doÄŸaya atıf ya da betimlemelerle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Sövgü" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Herhangi türde küfürlerle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Uygunsuz Mizah" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Uygunsuz mizahla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "Ayrımcılık" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Herhangi türde ayrımcı dille ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Reklam" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Herhangi türde reklamla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Kumar" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Herhangi türde kumarla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Satın Alım" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Para harcama yeteneÄŸiyle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Kullanıcılar Arası Sohbet" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "DiÄŸer kullanıcılarla sohbet etme yollarıyla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "Kullanıcılar Arası Sesli Sohbet" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "DiÄŸer kullanıcılarla konuÅŸma yollarıyla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "KiÅŸi Ayrıntıları" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "No information regarding sharing of social network usernames or email addresses" msgstr "Sosyal aÄŸ kullanıcı adlarının ya da e-posta adreslerinin paylaşımıyla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "Tanımlayıcı Bilgiler" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "Üçüncü ÅŸahıslarla kullanıcı bilgisi paylaşımıyla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "Konum Paylaşımı" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "DiÄŸer kullanıcılarla fiziksel konum paylaşımıyla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "FuhuÅŸ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "FuhÅŸa atıflarla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "Zina" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "EÅŸ aldatmaya atıflarla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "CinselleÅŸtirilmiÅŸ Karakterler" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "CinselleÅŸtirilmiÅŸ karakterlerle ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "Saygısızlık" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Kutsala saygısızlığa atıflarla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "İnsan Kalıntıları" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Görününür ölü insan kalıntılarıyla ilgili bilgi yok" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "Kölelik" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "KöleliÄŸe atıflarla ilgili bilgi yok" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Yasadışı ilaçlara atıf içermez" #: src/bz-age-rating-dialog.c:426 msgid "Does not include swearing, profanity, and other kinds of strong language" msgstr "Küfür, sövgü ve diÄŸer türlerde sert dil içermez" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Reklam ya da parasal iÅŸlemler içermez" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Cinsellik ya da çıplaklık içermez" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Denetimsiz sohbet iÅŸlevi içermez" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Åžiddet içermez" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "UyuÅŸturucu" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Sert Dil" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Para" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "Sosyal" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "Åžiddet" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "Tümü" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s yaÅŸ derecelendirmesi bilinmiyor" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s, herkese uygundur" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s, küçük çocuklara uygundur" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s, çocuklara uygundur" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s, ergenlere uygundur" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s, yetiÅŸkinlere uygundur" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s, %s için uygundur" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "Sistem klasörü %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Ev alt klasörü %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "Ana makine sistem klasörleri" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "/etc dizininden ana makine sistem yapılandırması" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Masaüstü alt klasörü %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Masaüstü klasörü" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Belgeler alt klasörü %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Belgeler klasörü" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Müzik alt klasörü %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Müzik klasörü" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Resimler alt klasörü %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Resimler klasörü" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Paylaşılanlar alt klasörü %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Paylaşılanlar klasörü" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Videolar alt klasörü %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Videolar klasörü" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Åžablonlar alt klasörü %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Åžablonlar klasörü" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Kullanıcı ön bellek alt klasörü %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Kullanıcı ön bellek klasörü" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Kullanıcı yapılandırma alt klasörü %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Kullanıcı yapılandırma klasörü" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Kullanıcı verisi alt klasörü %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Kullanıcı veri klasörü" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Kullanıcı çalışma zamanı alt klasörü %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Kullanıcı çalışma zamanı klasörü" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "Dosya sistemi eriÅŸimi %s" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Bilinmeyen dosya sistemi yolu" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "İndirme Boyutu" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Kurulum Boyutu" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "İnternetten indirilecek miktar" # Kasten daha açıklayıcı bir çeviri kullanıldı #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Diskteki kapladığı alan" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Kullanıcı veri klasörünü aç" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "Kullanıcı Veriniz" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Önbellekler, ayarlar ve diÄŸer uygulama verileri" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Önbellek" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "Geçici önbellekli veri" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "ÖnbelleÄŸi Temizle" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Çalışma Zamanı Kurulum Boyutu" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Çalışma Zamanı İndirme Boyutu" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 src/context-tile-callbacks.c:104 #: src/context-tile-callbacks.c:393 src/context-tile-callbacks.c:410 msgid "N/A" msgstr "Yok" #: src/bz-app-size-dialog.c:207 msgid "App Size" msgstr "Uygulama Boyutu" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "DoÄŸrulanmış" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 src/context-tile-callbacks.c:135 msgid "Installed" msgstr "Kurulu" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:769 msgid "translator-credits" msgstr "Sabri Ünal <yakushabb@gmail.com>, 2025-2026" #: src/bz-application.c:779 msgid "Special Thanks" msgstr "Özel TeÅŸekkürler" #: src/bz-application.c:837 msgid "Logged Out Successfully!" msgstr "Oturum Kapatıldı!" #: src/bz-application.c:1027 msgid "Ubuntu Troubles!" msgstr "Ubuntu Sorunları!" #: src/bz-application.c:1030 msgid "" "The more recent versions of Ubuntu have messed up default security rules, making it <b>impossible to install " "apps</b> from the Flatpak version of Bazaar, please just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "Ubuntuʼnun son sürümlerinde öntanımlı güvenlik kurallarının bozuk olmasından kaynaklı Bazaarʼın Flatpak " "sürümünden <b>uygulama kurmak imkansız</b> hale gelmiÅŸtir. Lütfen ÅŸimdilik aÅŸağıdaki komutu kullanarak normal " "paketi kullanın:\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "Ardından bu Flatpak sürümünü aÅŸağıdaki komutla kaldırabilirsiniz:\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1036 msgid "Continue Anyway" msgstr "Yine De Sürdür" #: src/bz-application.c:1052 msgid "Performing setup…" msgstr "Kurulum gerçekleÅŸtiriliyor…" #: src/bz-application.c:1144 msgid "Set Up System Flathub?" msgstr "Sistem Flathubʼı Kurulsun Mu?" #: src/bz-application.c:1147 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be configured on the system Flatpak " "installation to browse and install applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub sistem uzağı kurulmamış. Bazaar, uygulamalara göz atmak ve kurmak için Flatpak kurulumunda Flathubʼın " "sistem geneli olarak yapılandırılmış olmasını gerektirir. \n" "\n" "Yine de Bazaarʼı kullanarak zaten kurulmuÅŸ uygulamalara göz atabilir ve kaldırabilirsiniz." #: src/bz-application.c:1154 msgid "Set Up Flathub?" msgstr "Flathub Kurulsun Mu?" #: src/bz-application.c:1157 msgid "" "Flathub is not set up on this system. You will not be able to browse and install applications in Bazaar if its " "unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub bu sistemde kurulmamış. Bu sebeple Bazaar uygulamalara göz atamaz ve kuramaz.\n" "\n" "Yine de Bazaarʼı kullanarak zaten kurulmuÅŸ uygulamalara göz atabilir ve kaldırabilirsiniz." #: src/bz-application.c:1163 msgid "Later" msgstr "Sonra" #: src/bz-application.c:1164 msgid "Set Up Flathub" msgstr "Flathubʼı Kur" #: src/bz-application.c:1697 msgid "A backend error occurred" msgstr "Arka uç hatası oluÅŸtu" #: src/bz-application.c:1905 src/bz-application.c:4152 msgid "Refreshing…" msgstr "Yenileniyor…" #: src/bz-application.c:2069 src/bz-application.c:4150 #, c-format msgid "Loading %d apps…" msgstr "%d uygulama yükleniyor…" #: src/bz-application.c:2122 src/bz-application.c:2196 msgid "Failed to open file" msgstr "Dosya açılamadı" #: src/bz-application.c:2210 msgid "Failed to load metainfo" msgstr "Metainfo yüklenemedi" #: src/bz-application.c:2304 msgid "An initialization error occurred" msgstr "İlklendirme hatası oluÅŸtu" #: src/bz-application.c:2703 msgid "Checking for updates…" msgstr "Güncellemeler denetleniyor…" #: src/bz-application.c:2759 msgid "Failed to check for updates" msgstr "Güncellemeler denetlenemedi" #: src/bz-application.c:3925 msgid "Malformed Link" msgstr "Hatalı BaÄŸlantı" #: src/bz-application.c:3926 msgid "" "The link used to open this app has incorrect capitalization and may stop working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "Uygulamayı açmak için kullanılan baÄŸlantıda büyük harf kullanımı hatalı ve ileride çalışmayabilir.\n" "\n" "Bunun en olası nedeni, KRunnerʼın hatalı uygulama kimliÄŸi göndermesidir" #: src/bz-application.c:3934 msgid "Could not find app" msgstr "Uygulama bulunamadı" #: src/bz-application.c:4154 msgid "Writing to cache…" msgstr "Ön belleÄŸe yazılıyor…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Tümünü Göster" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "Tüm \"%s\"" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d Uygulama" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Makale Yüklenemedi" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Derleme Kur" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Ek bağımlılıklar fazladan alan kaplayabilir" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps from this source will show up in " "Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Bu uygulamayı kurmak için yeni yazılım kaynağı eklemeniz gerekebilir. Bu kaynaktan gelen diÄŸer uygulamalar " "Bazaarʼda görünecek.\n" "\n" "Bu kaynağı yalnızca güveniyorsanız ekleyin." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "Kuruldu!" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 src/bz-rich-app-tile.blp:199 #: src/bz-transaction-tile.blp:298 msgid "Open" msgstr "Aç" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "Uygulama Ayrıntılarını Göster" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "Zaten Kurulu" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "Kurulamadı" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Kurulum boyutu bilinmiyor" # size_str = g_format_size (installed_size); # return g_strdup_printf (_ ("About %s to install"), size_str); #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Yaklaşık kurulum boyutu: %s" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Özel izin yok" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 #: src/bz-full-view.blp:41 src/bz-library-page.blp:29 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "BoÅŸ" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "Uygulama Seçkisi Yok" #: src/bz-curated-view.blp:30 msgid "There is no curation information provided on this system. You can still browse apps on Flathub" msgstr "Bu sistemde uygulama seçkisi bilgisi saÄŸlanmamaktadır. Flathubʼda uygulamalara yine de göz atabilirsiniz" #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "Flathubʼa Göz At" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "Çevrim Dışı" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 src/bz-search-pill-list.c:67 msgid "Browser" msgstr "Tarayıcı" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "DoÄŸrulanmamış" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "GeliÅŸtirici bilgisi yok." #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "The ownership of the %s app ID has not been verified and it may be a community package." msgstr "%s uygulama kimliÄŸinin sahipliÄŸi doÄŸrulanmadı ve topluluk paketlemesi olabilir." #: src/bz-developer-badge.c:237 #, c-format msgid "The ownership of the %s app ID has been manually verified by the Flathub team." msgstr "%s uygulama kimliÄŸinin sahipliÄŸi Flathub ekibi tarafından elle doÄŸrulandı." #: src/bz-developer-badge.c:253 #, c-format msgid "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on <b>%3$s</b>." msgstr "%1$s uygulama kimliÄŸinin sahipliÄŸi <b>%2$s</b> tarafından <b>%3$s</b> sitesinden doÄŸrulandı." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "%1$s uygulama kimliÄŸinin sahipliÄŸi %2$s kullanılarak doÄŸrulandı." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "%s uygulama kimliÄŸinin sahipliÄŸi doÄŸrulandı." #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "Tam Sürüm Notları" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "Bu sürüm, sizin gibi kullanıcılar sayesinde mümkün oldu!" #: src/bz-donations-dialog.blp:116 msgid "I love making Bazaar, but I cannot do it alone. Help support further development by donating on Ko-Fi." msgstr "" "Bazaar uygulamasını geliÅŸtirmeyi çok seviyorum, yine de bunu tek başıma yapamam. Ko-Fi ile bağış yaparak " "geliÅŸtirilmesine destek olun." #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "Bazaarʼa Bağış Yap" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "%s ile neler yeni?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "Yayın tarihi: %-e %B %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Kurulum Seç" #: src/bz-entry-group-util.c:76 msgid "You have multiple versions of this app installed. Which one would you like to proceed with?" msgstr "Bu uygulamanın birden çok sürümü kurulu. Hangisiyle devam etmek istersiniz?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "İptal" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Yalnızca Bu Kullanıcı İçin" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "bu kullanıcı" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "tüm kullanıcılar" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:98 src/error.c:69 src/error.c:88 msgid "Details" msgstr "Ayrıntılar" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "Kopyala" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 src/bz-share-list.c:364 msgid "Copied!" msgstr "Kopyalandı!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "Gözde Sayısı" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Gözde güncellenemedi" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Gözdeleri yönetmek için Flathub ile oturum aç" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Oturum Aç" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 src/bz-window.blp:348 msgid "Favorites" msgstr "Gözdeler" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Tümünü Kur" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:17 msgid "Loading" msgstr "Yükleniyor" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "Gözde Yok" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "Gözde olarak imlediÄŸiniz uygulamalar burada görünecek" # "Bu Uygulamayı Destekle" diye de çevirmek mümkün fakat bağış daha doÄŸru ve yerelleÅŸtirilmiÅŸ çeviri olacaktır. İşin içinde zaten para var. #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Bağış Yap" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Gözdelerden Kaldır" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Gözdelerden kaldırılamadı" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Önceki" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Sonraki" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Düzenleme" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "Midi" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "Mixer" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Müzik" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Oynatıcı" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "Kaydedici" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "Ardışımlayıcı" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "İnce Ayar" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "TV" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "Öykünme" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Aksiyon" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Macera" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Atari" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Bloklar" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "Tahta" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Kart" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "Çocuk" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Mantık" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Rol Yapma" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "Atış" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "Simulasyon" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Spor" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Strateji" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Tarayıcılar" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "Sohbet" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Posta" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "Dosya Paylaşımı" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Ses ve Video" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Ortam" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Ses ve Video" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "GeliÅŸtirici Araçları" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "GeliÅŸtir" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Daha Çok GeliÅŸtirici Araçları" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "EÄŸitim" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "Öğren" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "EÄŸitim" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Oyun" # Oyun Oyna anlamında Oyna, Oynat deÄŸil! #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Oyna" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Daha Çok Oyun" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Grafikler ve FotoÄŸrafçılık" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "OluÅŸtur" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Daha Çok Grafikler ve FotoÄŸrafçılık" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "AÄŸ" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "İnternet" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "AÄŸ" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "Verimlilik" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "İş" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Daha Çok Verimlilik" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Bilim" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Bilim" #: src/bz-flathub-category.c:142 msgid "System" msgstr "Sistem" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Sistem" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Araçlar" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "Araçlar" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Daha Çok Araçlar" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 src/bz-flathub-page.blp:141 msgid "Trending" msgstr "Trend" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Daha Çok Trend" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 src/bz-flathub-page.blp:174 msgid "Popular" msgstr "Popüler" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Daha Çok Popüler" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "Son Eklenenler" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "Yeni" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Daha Çok Yeni" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "Son Güncellenenler" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "Güncellendi" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Daha Çok Güncellenenler" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Mobil" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Daha Çok Mobil" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Daha Çok Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "KDE Uygulamaları" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Daha Çok KDE Uygulaması" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "Oyunlar" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "Daha Çok Oyun" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "Öykünücüler" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Daha Çok Öykünücü" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "BaÅŸlatıcılar" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Daha Çok Oyun BaÅŸlatıcı" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Oyun Araçları" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Daha Çok Oyun Aracı" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub Eklenmedi" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Flatpak kurulumlarınızda Flathub uzağı bulunamadı" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub Kullanılamıyor" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "Flathubʼa BaÄŸlanamadı" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "Yine de uygulamaları yönetebilir ve arayabilirsiniz." #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "Uygulamaları Ara" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "Yeniden BaÄŸlan" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "Günün Uygulaması" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "Hareket Halindeyken" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "Linux telefonlarınız ve tabletleriniz için uygulamalar" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "Daha Çok Mobil Uygulama" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "Oyunları ♥​ Severiz" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "SevdiÄŸiniz oyunları çalıştırabileceÄŸiniz oyunlar ve uygulamalar" #: src/bz-full-view.blp:34 src/bz-library-page.blp:40 src/bz-library-page.blp:44 msgid "No Results" msgstr "Sonuç Yok" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "BaÅŸka arama deneyin" #: src/bz-full-view.blp:47 msgid "Content" msgstr "İçerik" #: src/bz-full-view.blp:106 msgid "This is a local preview, some details may differ from the published listing" msgstr "Bu, yerel bir ön izlemedir; kimi ayrıntılar yayınlanan listelemeden farklı olabilir" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "MaÄŸaza Görünümünü Ön İzle" # Bkz: Support This App çevirisiyle ilgili not. #: src/bz-full-view.blp:236 msgid "_Support" msgstr "_Bağış Yap" #: src/bz-full-view.blp:461 msgid "This app uses a runtime that no longer receives updates or security fixes. It may become unsafe to use." msgstr "" "Bu uygulama, artık güncelleme ya da güvenlik düzeltmesi almayan bir çalışma zamanı kullanıyor. Kullanımı " "güvenli olmayabilir." #: src/bz-full-view.blp:539 msgid "Trash Data" msgstr "Çöp Verisi" #: src/bz-full-view.blp:602 msgid "Add-ons" msgstr "Eklentiler" #: src/bz-full-view.blp:637 msgid "More Add-Ons" msgstr "Daha Çok Eklenti" #: src/bz-full-view.blp:648 msgid "Links" msgstr "BaÄŸlantılar" #: src/bz-full-view.blp:679 msgid "Similar Apps" msgstr "Benzer Uygulamalar" #: src/bz-full-view.c:181 msgid "No URL" msgstr "URL Yok" #: src/bz-full-view.c:199 msgid "This app has a FLOSS license, meaning the source code can be audited for safety." msgstr "" "Bu uygulama Özgür ya da Açık Kaynak Yazılım lisansına sahip, yani kaynak kodu güvenlik açısından denetlenebilir." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed privately and cannot be audited by an " "independent third party." msgstr "" "Bu uygulama sahipli lisansa sahip, yani kaynak kodu özel olarak geliÅŸtirilmiÅŸtir ve bağımsız üçüncü tarafca " "denetlenemez." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Daha Çok Uygulama" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Daha Çok %s Uygulamaları" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Bu GeliÅŸtiricinin DiÄŸer Uygulamaları" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "DiÄŸer %s Uygulamaları" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s kurulmamış, ancak yine de <b>%s</b> verisi var." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "DiÄŸer Uygulamalar" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d Uygulama" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:141 msgid "Failed to Remove User Data" msgstr "Kullanıcı Verisi Kaldırılamadı" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Donanım DesteÄŸi" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Klavye desteÄŸi" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Klavye gerektirir" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Klavye kullanımı önerilir" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Klavyeleri destekler" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "Klavye desteÄŸi bilinmiyor" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Fare desteÄŸi" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Fare ya da iÅŸaretleme aygıtları gerektirir" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Fare ya da iÅŸaretleme aygıtları önerilir" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Fare ve iÅŸaretleme aygıtlarını destekler" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "Fare ya da iÅŸaretleme aygıtları desteÄŸi bilinmiyor" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Dokunmatik ekran desteÄŸi" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Dokunmatik ekran gerektirir" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Dokunmatik ekran önerilir" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Dokunmatik ekranı destekler" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "Dokunmatik ekran desteÄŸi bilinmiyor" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Mobil desteÄŸi" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Mobil aygıtlarda çalışır" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Mobil aygıtlarda iyi çalışmayabilir" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Masaüstü desteÄŸi" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Büyük ekranlarda iyi çalışır" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s belirli donanımlarda daha iyi çalışır" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s çoÄŸu aygıtta çalışır" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "İnceleyiciyi Menüsü" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_Aç" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Uygulamayı Kaldır" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Kaldır" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 src/bz-updates-card.c:187 msgid "Update" msgstr "Güncelle" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Kaldır" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "%s, %s kaynağıdan kur" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "%s kur" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "İptal" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "İptal ediliyor" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "Bağış Yap Düğmesi" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "Kurulu uygulamaları ara" #: src/bz-library-page.blp:33 msgid "No Apps Found" msgstr "Uygulama Bulunamadı" #: src/bz-library-page.blp:52 msgid "Search Store Instead" msgstr "MaÄŸazada Ara" #. Translators: . #: src/bz-library-page.blp:62 src/bz-window.blp:114 msgid "Library" msgstr "Kitaplık" #: src/bz-library-page.blp:91 msgid "Pending Updates" msgstr "Güncellemeler Bekliyor" #: src/bz-library-page.blp:118 msgid "Downloads" msgstr "İndirmeler" #: src/bz-library-page.blp:161 msgid "Recently Uninstalled" msgstr "Son Kaldırılanlar" #: src/bz-library-page.blp:212 msgid "Clear Finished Tasks" msgstr "Tamamlanan Görevleri Temizle" #: src/bz-library-page.blp:239 msgid "Sort Options" msgstr "Sıralama Seçenekleri" #: src/bz-library-page.blp:298 msgid "Sort By" msgstr "Sırala" #: src/bz-library-page.blp:312 msgid "Name" msgstr "Ad" #: src/bz-library-page.blp:318 msgid "Size" msgstr "Boyut" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Kurulu uygulamalar listesinde \"%s\" ile eÅŸleÅŸen hiçbir öge bulunamadı" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u Güncelleme Var" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u Uygulama Kurulu" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Hiçbir uygulama bulunamadı" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "%u uygulama bulundu" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "Katılım SaÄŸlayın" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "Daha ÇoÄŸunu Öğren" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Bilinmeyen Lisans" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Topluluk İnÅŸası" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:288 msgid "Proprietary" msgstr "Sahipli" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:290 msgid "Special License" msgstr "Özel Lisans" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Bu uygulama, uluslararası bir topluluk tarafından açık ÅŸekilde geliÅŸtirilmiÅŸtir. \n" "\n" "Katılarak daha iyi olmasını saÄŸlayabilirsiniz." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Uygulamanın lisansı bilinmiyor" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Bu uygulama, uluslararası bir topluluk tarafından açık ÅŸekilde geliÅŸtirilmiÅŸ ve %s lisansıyla dağıtılmıştır.\n" "\n" "Katılarak daha iyi olmasını saÄŸlayabilirsiniz." #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it works. It may be insecure in ways " "that are hard to detect, and it may change without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Bu uygulama açık olarak geliÅŸtirilmemiÅŸtir, nasıl çalıştığını yalnızca kendi geliÅŸtiricileri bilir. Saptanması " "zor biçimde güvensiz olabilir ve gözetimsizce deÄŸiÅŸebilir.\n" "\n" "Bu uygulamaya katkıda bulunabilir ya da bulunamayabilirsiniz." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Bu uygulama özel “%s†lisansı altında geliÅŸtirilmiÅŸtir.\n" "\n" "Bu uygulamaya katkıda bulunabilir ya da bulunamayabilirsiniz." #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "Lisans" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "Flathubʼa BaÄŸlan" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "Bir Åžeyler Yanlış Gitti" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Gözde uygulamalarınızı aygıtlar arasında eÅŸzamanlamak için oturum açın" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Bitti" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Merhaba, %s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "Metainfo Önizlemesine Simge Eklensin Mi?" #: src/bz-metainfo-preview.c:108 msgid "Metainfo files don't include app icons by themselves. Would you like to select one manually?" msgstr "Metainfo dosyaları kendi baÅŸlarına uygulama simgeleri içermez. Elle bir tane seçmek ister misiniz?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "Atla" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Simge Seç" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Resim Dosyaları" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Tercihler" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "AÄŸ baÄŸlantısı ölçülü — kendiliÄŸinden maÄŸaza verilerinin yenilenmesi duraklatıldı" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "Elle Yenile" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "Uygulama Güncellemeleri" #: src/bz-preferences-dialog.blp:46 msgid "" "Checking for and downloading app updates uses data and power. Automatic app update features are therefore " "paused when on metered network connections and when power saver is on." msgstr "" "Uygulama güncellemelerini denetlemek ve indirmek veri ve pil tüketir. Bu sebeple, kotalı aÄŸ baÄŸlantılarında ve " "pil tasarrufu kipi etkinken kendiliÄŸinden uygulama güncelleme duraklatılır." #: src/bz-preferences-dialog.blp:52 msgid "_Automatic" msgstr "_KendiliÄŸinden" #: src/bz-preferences-dialog.blp:53 msgid "Automatically check for and download app updates" msgstr "Uygulama güncellemelerini kendiliÄŸinden denetle ve indir" #: src/bz-preferences-dialog.blp:62 msgid "_Manual" msgstr "_Elle" #: src/bz-preferences-dialog.blp:63 msgid "Checking for and downloading app updates must be done manually" msgstr "Uygulama güncellemelerinin denetlenmesi ve indirilmesi elle yapılmalıdır" #: src/bz-preferences-dialog.blp:78 msgid "Automatic Update _Notifications" msgstr "KendiliÄŸinden Güncelleme _Bildirimleri" #: src/bz-preferences-dialog.blp:79 msgid "Notify when updates have been automatically installed" msgstr "Güncellemeler kendiliÄŸinden kurulduÄŸunda bildir" #: src/bz-preferences-dialog.blp:84 msgid "Content Filters" msgstr "İçerik Süzgeçleri" #: src/bz-preferences-dialog.blp:87 msgid "_Free Software Only" msgstr "Yalnızca Ö_zgür Yazılımlar" #: src/bz-preferences-dialog.blp:88 msgid "Hide proprietary apps when browsing and searching" msgstr "Göz atarken ve arama yaparken sahipli uygulamaları gizle" #: src/bz-preferences-dialog.blp:93 msgid "F_lathub Results Only" msgstr "Yalnızca _Flathub Sonuçları" #: src/bz-preferences-dialog.blp:94 msgid "Limit search and browse results to apps only available on Flathub" msgstr "Arama ve gözatma sonuçlarını yalnızca Flathubʼda bulunan uygulamalarla sınırla" #: src/bz-preferences-dialog.blp:99 msgid "_Verified Results Only" msgstr "Yalnızca _DoÄŸrulanmış Sonuçlar" #: src/bz-preferences-dialog.blp:100 msgid "Hide results that are not verified on Flathub" msgstr "Flathubʼda doÄŸrulanmamış sonuçları gizle" #: src/bz-preferences-dialog.blp:105 msgid "Hide _End-of-Life Apps" msgstr "Ömrünün _Sonuna GelmiÅŸ Uygulamaları Gizle" #: src/bz-preferences-dialog.blp:106 msgid "Hide apps which are no longer supported by their developers" msgstr "GeliÅŸtiricilerince artık desteklenmeyen uygulamaları gizle" #: src/bz-preferences-dialog.blp:112 msgid "Progress Bar Theme" msgstr "İlerleme ÇubuÄŸu Teması" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Vurgu Rengi" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Pride Colors" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Lesbian Pride Colors" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "Male Homosexual Pride Colors" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "Transgender Pride Colors" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "Nonbinary Pride Colors" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "Bisexual Pride Colors" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "Asexual Pride Colors" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "Pansexual Pride Colors" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "Aromantic Pride Colors" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "Genderfluid Pride Colors" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "Polysexual Pride Colors" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "Omnisexual Pride Colors" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "Aroace Pride Colors" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "Agender Pride Colors" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "Genderqueer Pride Colors" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "Intersex Pride Colors" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "Demigender Pride Colors" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "Biromantic Pride Colors" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "Disability Pride Colors" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "Femboy Pride Colors" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "Neutrois Pride Colors" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "Sürüm GeçmiÅŸi" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_Sürüm GeçmiÅŸi" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Bugün" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Dün" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d gün önce" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d hafta önce" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d ay önce" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d yıl önce" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "Sürüm %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Bu sürüm için ayrıntı yok" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Daha Çok Bilgi" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Kaldır" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Al" #: src/bz-safety-dialog.blp:31 src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "İsteÄŸe BaÄŸlı İzinler" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any other permission it wants</b>, " "bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, such as accessing all your files and " "connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app is likely to do." msgstr "" "Bu uygulamanın, Flatpak korumalı alanını atlayarak <b>istediÄŸi herhangi bir izni</b> kullanma izni var.\n" "\n" "Bu nedenle, korumalı alanda çalışmayan bir uygulamanın yapabileceÄŸi her ÅŸeyi, tüm dosyalarınıza eriÅŸmek ve " "internete baÄŸlanmak gibi, yapabilir.\n" "\n" "DiÄŸer izinleri görüntülemek, uygulamanın yapabilecekleri hakkında daha iyi fikir verebilir." #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "DiÄŸer İzinleri Görüntüle" #: src/bz-safety-dialog.blp:79 src/context-tile-callbacks.c:400 msgid "Safe" msgstr "Güvenli" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "Uygulama KimliÄŸi" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" # SDK vurgusu hatalı. Yazılımları genelde Platform ile paketleniyor, SDK ise derlenirken kullanılıyor. #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might contain bugs or security " "vulnerabilities which will not be fixed." msgstr "" "Bu uygulama, çalışma ortamının eski sürümünü kullanıyor ve düzeltilmeyecek hatalar ya da güvenlik açıkları " "içerebilir." #: src/bz-safety-dialog.c:287 msgid "Safety" msgstr "Güvenlik" #: src/bz-safety-dialog.c:347 #, c-format msgid "%s is Safe" msgstr "%s Güvenilir" #: src/bz-safety-dialog.c:352 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s Güvenli Olmayan İzinleri Yok" #: src/bz-safety-dialog.c:357 #, c-format msgid "%s is Probably Safe" msgstr "%s Muhtemelen Güvenli" #: src/bz-safety-dialog.c:362 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s Güvenilir Olmayabilir" #: src/bz-safety-dialog.c:367 #, c-format msgid "%s is Unsafe" msgstr "%s Güvenilir DeÄŸil" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Geri" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Önceki Ekran Görüntüsü" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "Sonraki Ekran Görüntüsü" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Resmi Kopyala" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Görünümü Sıfırla" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "UzaklaÅŸtır" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "YakınlaÅŸtır" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "Ekran Görüntüsü Sergisi" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Ekran Görüntüsü Yok" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Ekran Görüntüsü Görüntüleyiciyi Aç" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Ekran görüntüsü %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Ekran görüntüsü %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "Aramayı Temizle" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "Süzgeçler" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_DoÄŸrulanmış" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "Ö_zgür/Açık Kaynak" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "_YaÅŸam Döngüsünde" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "Ömrünün Sonuna GelmiÅŸ Uygulamaları Süz" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "_Mobil Uyumlu" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Kategoriler" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "Uygulamaları, Oyunları, Yazılımları Ara" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "Arama Süzgeçleri" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Kategorilere Göz At" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Kategoriler Kullanılamıyor" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Yukarıdaki arama çubuÄŸunu kullanarak uygulamaları ara." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Uygulama Bulunamadı." #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Flathubʼda \"%s\" için sonuç bulunamadı" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Video" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "Ofis" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Takvim" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "İletiÅŸim" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "Boyama" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "Öykünücü" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub Sayfası" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "Proje Web Sitesi" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Sorun İzleyici" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "SSS" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Yardım" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Bağış" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Çevir" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "İletiÅŸim" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Kaynak Kodu" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "Katkı Ver" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifesto" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "BaÄŸlantıyı Kopyala" # Konumu gereÄŸi baÅŸlık düzeni kullanıldı. Ayrıca Zaman Çizgisi yerine Zaman Çizelgesi çevirisi yeÄŸlendi. #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "Zaman Çizelgesi" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Kurulum Sayısı:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Dünya" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "15 Nisan 2024 tarihinden beri" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM Toplam Kurulum" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK Toplam Kurulum" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d Toplam Kurulum" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Hiçbir Sonuç Bulunamadı" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Arama baÅŸarısız" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Kullanıcı Verisini Tut" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "KiÅŸisel ayarların ve içeriÄŸin geri yüklenmesine izin ver" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Tüm Verileri Sil" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Disk alanını korumak için kullanıcı verisini sil" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "%s Kurulsun Mu?" #: src/bz-transaction-dialog.c:195 msgid "Select which version to install. May install additional shared components" msgstr "Hangi sürümün kurulacağını seç. Ek paylaşımlı bileÅŸenler kurabilir" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Ek paylaşımlı bileÅŸenler kurabilir" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 src/bz-transaction-dialog.c:274 #: src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "İ_ptal" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Kur" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "%s Kaldırılsın Mı?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Hangi sürümün kaldırılacağını seç." #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "Kaldırıldıktan sonra %s artık kullanılamayacak." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "“%s†Çok Riskli" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, browser history, saved passwords</b>, and " "more. It also has access to the internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with these permissions." msgstr "" "Bu uygulama, <b>tüm dosyalarınız, tarayıcı geçmiÅŸiniz, kaydedilmiÅŸ parolalarınız</b> ve daha fazlası üzerinde " "sisteminize tam eriÅŸimi var. Ayrıca internete de eriÅŸebilir, yani verilerinizi dış taraflara gönderebilir.\n" "\n" "Uygulama sahipli olduÄŸundan, bu izinlerle ne yaptığı denetlenemez." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record all keystrokes, capture " "screenshots, and monitor other applications</b>. It also has access to the internet, meaning it could send your " "data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with these permissions." msgstr "" "Bu uygulama, <b>tüm tuÅŸ darbelerini kaydetmeye, ekran görüntülerini yakalamaya ve diÄŸer uygulamaları izlemeye</" "b> izin veren eski X11 pencere sistemini kullanır. Ayrıca internete eriÅŸimi var, yani verilerinizi dış " "taraflara gönderebilir.\n" "\n" "Uygulama sahipli olduÄŸundan, bu izinlerle ne yaptığı denetlenemez." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "Yine De _Kur" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "İşlem iletiÅŸim kutusu yüklenemedi" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "Tüm uygulamalar zaten kurulmuÅŸ" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Tamam" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "%u Uygulama Kurulsun Mu?" #: src/bz-transaction-dialog.c:573 msgid "The following will be installed. Additional shared components may also be installed" msgstr "AÅŸağıdakiler yüklenecek. Ek ortak bileÅŸenler de kurulabilir" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d eklenti kurulacak." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Ayrıca, uzantılar kurulacak." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "Tümünü _Kur" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "%.02f saniyede bitti" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "Uygulama Eklentisi" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "Çalışma Zamanı" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "Kuyrukta" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "Bitti" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "İptal edildi" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "Hata" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "İşlemi İptal Et" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "Ayrıntıları Göster" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "Hata Bilgisini Göster" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s Temizlendi" # Transaction dese de para ile ilgisi yok. O sebeple sadece İşlemler diye çevirdim. #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "İşlem Hatası" #: src/bz-transaction.c:344 msgid "Pending" msgstr "Beklemede" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "Tümünü _Güncelle" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u Çalışma Zamanı Güncellemesi" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Artık Kullanıcı Verisini Yönet" #: src/bz-user-data-page.blp:34 msgid "No User Data Found" msgstr "Kullanıcı Verisi bulunamadı" #: src/bz-user-data-page.blp:40 msgid "User Data" msgstr "Kullanıcı Verisi" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Kullanıcı Veri Klasörünü Aç" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "Kullanıcı Verisini Çöpe Taşı" #: src/bz-user-data-tile.c:147 #, c-format msgid "Trashed User Data for %s" msgstr "%s İçin Kullanıcı Verisi Çöpe Taşındı" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "Yenileniyor" #: src/bz-window.blp:90 msgid "Curated" msgstr "ÖzelleÅŸtirilmiÅŸ" #: src/bz-window.blp:102 msgid "Explore" msgstr "KeÅŸfet" #: src/bz-window.blp:129 msgid "Search" msgstr "Ara" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Ana Menü" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Bazaarʼın yeni bir sürümünü kullanıyorsunuz!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "Neler Yeni Gör" #: src/bz-window.blp:235 msgid "You have a network connection but are viewing a cached version of Flathub" msgstr "AÄŸ baÄŸlantınız var ancak Flathubʼın önbelleklenmiÅŸ sürümünü görüntülüyorsunuz" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "AÄŸ baÄŸlantısı ölçülü — kendiliÄŸinden yenilenmeler devre dışı bırakıldı" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "Bazaarʼa _Bağış Yap" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_Yenile" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "Flathub İle _Oturum Aç" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "Artık Kullanıcı Verisini _Yönet" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_Tercihler" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "Bazaar _Hakkında" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "Bazaarʼdan Çı_k" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Oturumu Kapat" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Uygulama baÅŸlatılamadı" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Bazaarʼı Bazaar ile kaldıramazsınız!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Åžimdi yapma!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Kurulum" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "Son ay içinde %d indirme" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s çalışma zamanı" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "İndirme Boyutu" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "Boyut bilgisi yok" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "%s İndirme Boyutu" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "Tüm YaÅŸlar" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "YaÅŸ derecelendirme bilgisi yok" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "Tüm yaÅŸlar için uygun" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "%d ve üstü yaÅŸlar için uygun" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 src/context-tile-callbacks.c:276 #: src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "Bilinmiyor" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "%s altında lisanslanmış özgür yazılım" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "Özgür yazılım" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "Sahipli Yazılım" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "Özel Lisans: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "Özgür Yazılım" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "Uyarlanır" # Arayüzde sığmadığı için new line eklendi #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "" "Yalnızca\n" "Masaüstü" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "Telefonlarda, tabletlerde ve masaüstülerde çalışır" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "Mobil aygıtlarda çalışmayabilir" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "Düşük Risk" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "Orta Risk" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "Yüksek Risk" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Bilinmeyen İzinler" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Bu uygulama için izinler eksik." #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "İzin Yok" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "Uygulama tümüyle yalıtılmış alandadır" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "AÄŸ EriÅŸimi" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "İnternete eriÅŸebilir" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "AÄŸ EriÅŸimi Yok" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "İnternete eriÅŸemez" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "Kullanıcı Aygıtı EriÅŸimi" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "Web kameraları veya oyun denetçileri gibi aygıtlara eriÅŸebilir" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Kullanıcı Aygıtı EriÅŸimi Yok" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "Web kameraları veya oyun denetçileri gibi aygıtlara eriÅŸemez" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "Girdi Aygıtı EriÅŸimi" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Girdi aygıtlarına eriÅŸebilir" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "Mikrofon EriÅŸimi ve Ses Oynatımı" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "İzin istemeden mikrofonlarla dinleyebilir ve sesleri oynatabilir" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "Sistem Aygıtı EriÅŸimi" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "YükseltilmiÅŸ izinler gerektiren sistem aygıtlarına eriÅŸebilir" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "Ekran İçerikleri EriÅŸimi" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Ekranın ya da diÄŸer pencerelerin içeriklerine eriÅŸebilir" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "Eski Pencereleme Sistemi" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Daima eski pencereleme sistemi kullanır (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "İsteÄŸe baÄŸlı izinler edinir" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "Kullanıcı Ayarları" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Kullanıcı ayarlarına eriÅŸebilir ve deÄŸiÅŸtirebilir" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Tüm Dosya Sistemini Okuma/Yazma EriÅŸimi" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Dosya sistemindeki tüm veriyi okuyabilir ve yazabilir" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "Ev Klasörü Okuma/Yazma EriÅŸimi" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Ev dizininizdeki tüm veriyi okuyabilir ve yazabilir" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Tüm Dosya Sistemini Okuma EriÅŸimi" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Dosya sistemindeki tüm veriyi okuyabilir" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "Ev Klasörü Okuma EriÅŸimi" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Ev dizininizdeki tüm verinizi okuyabilir" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "İndirilenler Klasörü Okuma/Yazma EriÅŸimi" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "İndirilenler dizininizdeki tüm veriyi okuyabilir ve yazabilir" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "İndirilenler Klasörü Okuma EriÅŸimi" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "İndirilenler dizininizdeki tüm veriyi okuyabilir" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Dizindeki tüm veriyi okuyabilir ve yazabilir" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Dizindeki tüm veriyi okuyabilir" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Dosya Sistemi EriÅŸimi Yok" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Dosya sistemine asla eriÅŸemez" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "Sistem Hizmetlerini Kullanır" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Kapı dışı sistem hizmetlerinden veri isteyebilir" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "Oturum Hizmetlerini Kullanır" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Kapı dışı oturum hizmetlerinden veri isteyebilir" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Hizmet EriÅŸimi Yok" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Kapı dışı oturum ya da sistem hizmetlerine asla eriÅŸemez" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "DoÄŸrulanmış Uygulama GeliÅŸtiricileri" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "Bu uygulamanın geliÅŸtiricisinin söylediÄŸi kiÅŸi olduÄŸu doÄŸrulandı" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "Sahipli Kod" #: src/safety-calculator.c:365 msgid "The source code is not public, so it cannot be independently audited and might be unsafe" msgstr "Kaynak kod halka açık deÄŸildir, bu nedenle bağımsızca denetlenemez ve güvenilir olmayabilir" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "Denetlenebilir Kod" #: src/safety-calculator.c:376 msgid "The source code is public and can be independently audited, which makes the app more likely to be safe" msgstr "Kaynak kod halka açıktır ve bağımsızca denetlenebilir, bu uygulamayı daha güvenilir kılar" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "%s Sistem Hizmetini Kullan" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "%s Oturum Hizmetini Kullan" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "%s Hizmetini Kullan" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Kapı dışı hizmetleri görebilir" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Kapı dışı hizmetlere konuÅŸabilir" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Kapı dışı hizmet edinebilir" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "Küresel Menü TümleÅŸimi" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Menülerini genel menü çubuÄŸunda görüntüleyebilir" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "KDE Ayarları TümleÅŸimi" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "KDE masaüstü ayarları deÄŸiÅŸtiÄŸinde algılayabilir" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "KDE Genel Ayarlar" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "KDE masaüstü tercihlerini (yazı tipleri ve renkler gibi) okuyabilir" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Gizli Depolama Hizmeti" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "Sistem anahtarlığı kullanarak kendi parolalarını saklayabilir ve geri getirebilir" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "Masaüstü Bildirim Hizmeti" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Masaüstü bildirimleri gönderebilir" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "Sistem Tepsisi TümleÅŸimi" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Sistem tepsisinde simge gösterebilir" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "KDE Connect TümleÅŸimi" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "KDE Connect aracılığıyla eÅŸleÅŸtirilen aygıtlarla etkileÅŸime girebilir" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "Gezinti" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "KeÅŸfet Sayfasını Aç" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Kitaplık Sayfasını Aç" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Arama Sayfasını Aç" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Uzaklar" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "Uzakları EÅŸzamanla" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Genel" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Tercihleri Aç" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Kısayolları Göster" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Pencereyi Kapat" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Bazaarʼdan Çık" #: src/update-worker.c:358 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "%u Uygulama Güncellendi" #: src/update-worker.c:361 #, c-format msgid "%s has been updated." msgstr "%s güncellendi." #: src/update-worker.c:364 #, c-format msgid "%s and %s have been updated." msgstr "%s ve %s güncellendi." #: src/update-worker.c:368 #, c-format msgid "Includes %s, %s and %s." msgstr "%s, %s ve %s içerir." ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/uk.po������������������������������������������������������������������0000664�0000000�0000000�00000355435�15240005042�0016752�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Ukrainian translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # # SPDX-FileCopyrightText: 2025-2026 faoquad <faoquad@noreply.codeberg.org> # SPDX-FileCopyrightText: 2026 Yuri Chornoivan <yurchor@ukr.net> msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: https://github.com/bazaar-org/bazaar/issues\n" "POT-Creation-Date: 2026-08-12 08:59+0000\n" "PO-Revision-Date: 2026-08-12 20:25+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=" "2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 25.12.1\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:47 #: src/bz-window.blp:203 src/bz-window.c:387 src/bz-window.c:388 msgid "Bazaar" msgstr "Базар" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "App Store" msgstr "ÐšÑ€Ð°Ð¼Ð½Ð¸Ñ†Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "Ð’Ñтановлюйте, видалÑйте та оновлюйте пакунки Flatpak на Ваш компʼютер" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "System;Package;Manager;Discover;Flatpak;Software;App;Store;" msgstr "" "System;Package;Manager;Discover;Flatpak;Software;App;Store;ÑиÑтема;пакунок;ке" "руваннÑ;виÑвленнÑ;програми;заÑтоÑунок;крамницÑ;" #: data/io.github.kolunmi.Bazaar.desktop.in:17 msgid "New Window" msgstr "Ðове вікно" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "Пошук Ñ– вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "Швидка та ÑучаÑна ÐºÑ€Ð°Ð¼Ð½Ð¸Ñ†Ñ Ð·Ð°ÑтоÑунків Ð´Ð»Ñ Linux, зоÑереджена на знаходженні " "та вÑтановленні заÑтоÑунків Ñ– розширень зі Ñховищ Flatpak, зокрема Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "Шукайте та завантажуйте водночаÑ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "Легко переглÑдайте дозволи заÑтоÑунків" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "Увійдіть із допомогою Flathub, аби керувати вподобаннÑми" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "Шукайте заÑтоÑунки безпоÑередньо з оболонки GNOME" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:775 msgid "The Bazaar Contributors" msgstr "ВнеÑники Базару" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка із заÑтоÑунками з Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "App page for Exhibit" msgstr "Сторінка програми Ð´Ð»Ñ Exhibit" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "Сторінка бібліотеки" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "Сторінка пошуку" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "Сторінка пошуку з категоріÑми" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "Більшe не отримує оновлень" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "Видалити" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "Ð’Ñтановити" #: src/bz-addons-dialog.blp:7 msgid "Add-on" msgstr "Додаток" #: src/bz-addons-dialog.blp:15 src/bz-addons-dialog.blp:22 #: src/bz-addons-dialog.blp:71 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "Керувати розширеннÑми" #: src/bz-addons-dialog.blp:81 msgid "No Add-Ons Visible" msgstr "Ðе видно жодного розширеннÑ" #: src/bz-addons-dialog.blp:82 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "" "Ваші Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÑÑ–ÑŽÐ²Ð°Ð½Ð½Ñ Ñховали вÑÑ– відомі розширеннÑ. Спробуйте " "відкоригувати Ñ—Ñ…." #: src/bz-addons-dialog.blp:89 msgid "Add-on Page" msgstr "Сторінка розширень" #: src/bz-addons-dialog.blp:205 src/bz-full-view.blp:408 msgid "Downloads/Month" msgstr "зав/міÑ" #: src/bz-addons-dialog.blp:232 src/bz-full-view.blp:444 msgid "Stopped Receiving Core Updates" msgstr "Більше не отримує оновлень Ñередовища виконаннÑ" #: src/bz-addons-dialog.blp:246 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "Це Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовує Ñередовище виконаннÑ, котре більше не отримує " "оновлень або безпекових виправлень. Він може Ñтати небезпечним до " "викориÑтаннÑ." #: src/bz-addons-dialog.c:346 #, c-format msgid "Add-on for %s" msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 msgid "Show Less" msgstr "Згорнути" #: src/bz-addons-dialog.c:360 src/bz-full-view.c:618 src/bz-section-view.blp:72 msgid "Show More" msgstr "Розгорнути" #: src/bz-addons-dialog.c:410 msgid "Download Stats" msgstr "Звіт щодо завантажень" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:737 src/context-tile-callbacks.c:187 #: src/context-tile-callbacks.c:194 msgid "Age Rating" msgstr "Вікове обмеженнÑ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "Ðнімована жорÑтокіÑть" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "Без даних щодо Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð¾Ð²Ð°Ð½Ð¾Ñ— жорÑтокоÑті" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "Вигадана жорÑтокіÑть" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "Без даних щодо Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð³Ð°Ð´Ð°Ð½Ð¾Ñ— жорÑтокоÑти" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "РеаліÑтична жорÑтокіÑть" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "Без даних щодо Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€ÐµÐ°Ð»Ñ–Ñтичної жорÑтокоÑти" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "ЖорÑтокіÑть із зображеннÑм кровопролиттÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "Без даних щодо Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÑ€Ð¾Ð²Ð¾Ð¿Ñ€Ð¾Ð»Ð¸Ñ‚Ñ‚Ñ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "СекÑуальне наÑильÑтво" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÑекÑуального наÑильÑтва" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "Ðлкоголь" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð»ÐºÐ¾Ð³Ð¾Ð»ÑŽ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "Заборонені речовини" # Тут понÑÑ‚Ñ‚Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ” Ñк заборонені, так Ñ– незаборонені речовини (алкоголь, тютюн тощо) #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ê¼Ñнких речовин" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "Тютюн" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚ÑŽÑ‚ÑŽÐ½Ð¾Ð²Ð¸Ñ… виробів" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "ОголеннÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "Без даних щодо Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¾Ð³Ð¾Ð»ÐµÐ½Ð½Ñ" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "СекÑуальні теми" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÑекÑуального характеру" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "Лайка" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "Без даних щодо грубощів або недоречного гумору" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "Ðедоречний гумор" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "Без даних щодо викориÑÑ‚Ð°Ð½Ð½Ñ Ð½ÐµÐ´Ð¾Ñ€ÐµÑ‡Ð½Ð¾Ð³Ð¾ гумору" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "ДиÑкримінаціÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "Без даних щодо викориÑÑ‚Ð°Ð½Ð½Ñ Ð´Ð¸Ñкримінаційної мови" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "Реклама" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "Без даних щодо рекламного вміÑту" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "Ðзартний вміÑÑ‚" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "Без даних щодо азартного вміÑту" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "Покупки" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "Без даних щодо можливоÑті витрачати гроші" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "Розмови між кориÑтувачами" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "Без даних щодо можливоÑті ÑпілкуватиÑÑ Ð· іншими кориÑтувачами" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "ГолоÑові розмови між кориÑтувачами" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "Без даних щодо голоÑового звʼÑзку з іншими кориÑтувачами" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "Контактні дані" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Без даних щодо Ñ€Ð¾Ð·Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ñ… даних Ñоцмереж або Ð°Ð´Ñ€ÐµÑ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ñ— " "пошти" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "ВиÑвні дані" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "" "No information regarding sharing of user information with third parties" msgstr "Без даних щодо Ñ€Ð¾Ð·Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувацьких даних третім Ñторонам" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "МіÑцезнаходженнÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "Без даних щодо Ñ€Ð¾Ð·Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½ÑˆÐ¸Ð¼ кориÑтувачам" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "ПроÑтитуціÑ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñтитуції" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "ÐŸÐ¾Ð´Ñ€ÑƒÐ¶Ð½Ñ Ð·Ñ€Ð°Ð´Ð°" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ñ€ÑƒÐ¶Ð½ÑŒÐ¾Ñ— зради" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "СекÑуалізовані перÑонажі" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "Без даних щодо Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÑекÑуалізованих перÑонажів" # По-нашому не «кощунÑтво». #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "БлюзнірÑтво" # По-нашому не «кощунÑтво». #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "Без даних щодо блюзнірÑтва" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "ЛюдÑькі рештки" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Без даних щодо Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð»ÑŽÐ´Ñьких решток" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "РабÑтво" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "Без даних щодо згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð°Ð±Ñтва" # Тут понÑÑ‚Ñ‚Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ” Ñк заборонені, так Ñ– незаборонені речовини (алкоголь, тютюн тощо) #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "Ðе міÑтить згадок або Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ê¼Ñнких речовин" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Ðе міÑтить грубощів або недоречного гумору" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "Ðе міÑтить реклами або грошових операцій" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "Ðе міÑтить оголеноÑти або ÑекÑу" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "Ðе має можливоÑті ÑпілкуватиÑÑ Ð· іншими кориÑтувачами" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "Ðе міÑтить жорÑтокоÑти" # Тут понÑÑ‚Ñ‚Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ” Ñк заборонені, так Ñ– незаборонені речовини (алкоголь, тютюн тощо) #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "Речовини" # Як розумію, це включає лайливу мову та інші форми міцної мови. #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "Грубощі" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "Гроші" # Тут маєтьÑÑ Ð½Ð° увазі чат та інші види звʼÑзку з іншими людьми. #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "СпілкуваннÑ" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "ЖорÑтокіÑть" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:177 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:712 msgctxt "Age rating" msgid "All" msgstr "Без обмежень" #: src/bz-age-rating-dialog.c:748 #, c-format msgid "%s has an unknown age rating" msgstr "%s не вказує вікове обмеженнÑ" #: src/bz-age-rating-dialog.c:754 #, c-format msgid "%s is suitable for everyone" msgstr "%s паÑує вÑім" #: src/bz-age-rating-dialog.c:757 #, c-format msgid "%s is suitable for young children" msgstr "%s паÑує малим дітÑм" #: src/bz-age-rating-dialog.c:760 #, c-format msgid "%s is suitable for children" msgstr "%s паÑує дітÑм" #: src/bz-age-rating-dialog.c:763 #, c-format msgid "%s is suitable for teenagers" msgstr "%s паÑує підліткам" #: src/bz-age-rating-dialog.c:766 #, c-format msgid "%s is suitable for adults" msgstr "%s паÑує дороÑлим" #: src/bz-age-rating-dialog.c:769 #, c-format msgid "%s is suitable for %s" msgstr "%s паÑує %s" #: src/bz-age-rating-dialog.c:868 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "СиÑтемна тека %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ð¿Ñ–Ð´Ñ‚ÐµÐºÐ° %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "СиÑтемні теки приÑтрою" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "СиÑтемні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою з /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "Підтека Ñтільниці %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "Тека Ñтільниці" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "Підтека з документами %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "Тека з документами" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "Підтека з музикою %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "Тека з музикою" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "Підтека зображень %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "Тека зображень" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "Прилюдна підтека %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "Прилюдна тека" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "Підтека відео %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "Тека відео" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "Підтека шаблонів %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "Тека шаблонів" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "Підтека кориÑтувацького кешу %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "Тека кориÑтувацького кешу" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "Підтека налаштувань кориÑтувача %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "Тека налаштувань кориÑтувача" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "Підтека даних кориÑтувача %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "Тека даних кориÑтувача" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "Підтека Ñередовища Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "Тека Ñередовища Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "ДоÑтуп до %s у файловій ÑиÑтемі" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "Ðевідомий шлÑÑ…" #: src/bz-app-size-dialog.blp:30 src/bz-app-size-dialog.blp:71 msgid "Download Size" msgstr "Розмір завантаженнÑ" #: src/bz-app-size-dialog.blp:40 src/bz-app-size-dialog.blp:99 msgid "Installed Size" msgstr "Розмір вÑтановленнÑ" #: src/bz-app-size-dialog.blp:72 msgid "Amount to download from the internet" msgstr "ОбÑÑг даних до завантаженнÑ" #: src/bz-app-size-dialog.blp:100 msgid "Size on Disk" msgstr "Розмір на диÑку" #: src/bz-app-size-dialog.blp:203 msgid "Open user data folder" msgstr "Відкрити теку кориÑтувацьких даних" #: src/bz-app-size-dialog.blp:213 msgid "Your User Data" msgstr "Ваші кориÑтувацькі дані" #: src/bz-app-size-dialog.blp:214 msgid "Caches, settings, and other app data" msgstr "Кеш, налаштуваннÑ, та інші дані заÑтоÑунку" #: src/bz-app-size-dialog.blp:234 msgid "Cache" msgstr "Кеш" #: src/bz-app-size-dialog.blp:235 msgid "Temporary cached data" msgstr "ТимчаÑово кешовані дані" #: src/bz-app-size-dialog.blp:247 msgid "Clear Cache" msgstr "ОчиÑтити кеш" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "Розмір вÑтановленого Ñередовища виконаннÑ" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "Розмір Ñередовища Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ завантаженнÑ" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:394 #: src/context-tile-callbacks.c:416 msgid "N/A" msgstr "Ð/Д" #: src/bz-app-size-dialog.c:195 src/bz-app-size-dialog.c:208 msgid "Storage" msgstr "Сховище даних" #: src/bz-app-tile.blp:56 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "Підтверджено" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:87 src/bz-releases-list.c:206 #: src/context-tile-callbacks.c:136 msgid "Installed" msgstr "Ð’Ñтановлені" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:778 msgid "translator-credits" msgstr "faoquad <faoquad@noreply.codeberg.org>, 2025" #: src/bz-application.c:788 msgid "Special Thanks" msgstr "ОÑобливі подÑки" #: src/bz-application.c:846 msgid "Logged Out Successfully!" msgstr "Ви вийшли з Flathub" #: src/bz-application.c:1052 msgid "Ubuntu Troubles!" msgstr "Проблеми з Ubuntu!" #: src/bz-application.c:1055 msgid "" "Ubuntu 25.10 and newer have messed up default security rules, making it " "<b>impossible to install apps</b> from the Flatpak version of Bazaar, please " "just use the normal package for now by using\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "You can then remove this Flatpak version with\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" msgstr "" "У Ubuntu 25.10 та новіших верÑÑ–ÑÑ… порушені Ñтандартні правила безпеки, що " "робить <b>неможливим вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼</b> з верÑÑ–Ñ— Bazaar Ð´Ð»Ñ Flatpak. " "Будь лаÑка, поки що викориÑтовуйте звичайний пакунок, вÑтановивши його " "командою\n" "\n" "<tt>sudo apt install bazaar</tt>\n" "\n" "Потім ви можете вилучити цю верÑÑ–ÑŽ Flatpak за допомогою команди\n" "\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>" #: src/bz-application.c:1061 msgid "Continue Anyway" msgstr "Продовжити попри це" #: src/bz-application.c:1077 msgid "Performing setup…" msgstr "Ðалаштовуємо…" #: src/bz-application.c:1176 msgid "Set Up System Flathub?" msgstr "Ðалаштувати Ñховище Flathub вÑеÑиÑтемно?" #: src/bz-application.c:1179 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Сховище Flathub не налаштовано на цій ÑиÑтемі. Базар вимагає налаштованого " "Ñховища Flathub у ÑиÑтемі Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ та вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°ÑтоÑунків.\n" "\n" "Проте, Ви зможете кориÑтати Базар Ð´Ð»Ñ Ð¾Ð³Ð»Ñду та ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ вÑтановленими " "заÑтоÑунками." #: src/bz-application.c:1186 msgid "Set Up Flathub?" msgstr "Ðалаштувати Flathub?" #: src/bz-application.c:1189 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub не налаштовано на цій ÑиÑтемі. Ви не зможете шукати та вÑтановлювати " "заÑтоÑунки в Базарі. Проте, Ви зможете кориÑтати Базар Ð´Ð»Ñ Ð¾Ð³Ð»Ñду та " "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ вÑтановленими заÑтоÑунками." #: src/bz-application.c:1195 msgid "Later" msgstr "Пізніше" #: src/bz-application.c:1196 msgid "Set Up Flathub" msgstr "Ðалаштувати Flathub" #: src/bz-application.c:1730 msgid "A backend error occurred" msgstr "Виникла помилка на боці Ñерверу" #: src/bz-application.c:1938 src/bz-application.c:4208 msgid "Refreshing…" msgstr "ОÑвіжаємо…" #: src/bz-application.c:2102 #, c-format msgid "Loading %d apps…" msgstr "Провантажуємо %d заÑтоÑунків…" #: src/bz-application.c:2155 src/bz-application.c:2229 msgid "Failed to open file" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл" #: src/bz-application.c:2243 msgid "Failed to load metainfo" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ метадані" #: src/bz-application.c:2337 msgid "An initialization error occurred" msgstr "Виникла помилка ініціалізації" #: src/bz-application.c:2736 msgid "Checking for updates…" msgstr "Шукаємо оновленнÑ…" #: src/bz-application.c:2792 msgid "Failed to check for updates" msgstr "Помилка пошуку оновлень" #: src/bz-application.c:3979 msgid "Malformed Link" msgstr "Хибне поÑиланнÑ" #: src/bz-application.c:3980 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "ПоÑиланнÑ, за котрим було відкрито цей заÑтоÑунок, міÑтить хибне " "викориÑÑ‚Ð°Ð½Ð½Ñ Ð¼Ð°Ð»Ð¸Ñ… Ñ– великих літер та може переÑтати працювати в " "майбутньому.\n" "\n" "Ðайвірогіднішою причиною може бути KRunner, котрий надÑилає хибні ID " "заÑтоÑунків." #: src/bz-application.c:3988 msgid "Could not find app" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ заÑтоÑунок" #: src/bz-application.c:4205 #, c-format msgid "Loading %d app…" msgid_plural "Loading %d apps…" msgstr[0] "Завантажуємо %d заÑтоÑунок…" msgstr[1] "Завантажуємо %d заÑтоÑунки…" msgstr[2] "Завантажуємо %d заÑтоÑунків…" msgstr[3] "Завантажуємо %d заÑтоÑунок…" #: src/bz-application.c:4210 msgid "Writing to cache…" msgstr "Кешуємо…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "Показати вÑÑ–" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "УÑÑ– «%s»" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d заÑтоÑунків" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñтаттю" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑƒ" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "Додаткові залежноÑті можуть зайнÑти більше міÑцÑ" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ заÑтоÑунку може потребувати Ð´Ð¾Ð´Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ джерела Ð´Ð»Ñ " "завантажень. Інші заÑтоÑунки з цього джерела Ñтануть доÑтупні в Базарі.\n" "\n" "Додавайте це джерело лише Ñкщо довірÑєте йому." #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "УÑпішно вÑтановлено!" #. TRANSLATORS: Button to launch an installed app #: src/bz-bundle-install-dialog.blp:438 src/bz-bundle-install-dialog.blp:524 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:300 msgid "Open" msgstr "ЗапуÑтити" #: src/bz-bundle-install-dialog.blp:448 src/bz-bundle-install-dialog.blp:534 msgid "Show App Details" msgstr "Докладніше про заÑтоÑунок" #: src/bz-bundle-install-dialog.blp:499 msgid "Already Installed" msgstr "Вже вÑтановлені" #: src/bz-bundle-install-dialog.blp:546 msgid "Installation Failed" msgstr "Помилка вÑтановленнÑ" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "Ðевідомий розмір вÑтановленнÑ" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "Близько %s до вÑтановленнÑ" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "Без оÑобливих дозволів" #: src/bz-curated-view.blp:27 msgid "No Curation" msgstr "Жодного підібраного вміÑту" #: src/bz-curated-view.blp:29 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "" "Ваша операційна ÑиÑтема не надає підібранoго вміÑту. Ви вÑе ще можете шукати " "заÑтоÑунки на Flathub" #: src/bz-curated-view.blp:33 msgid "Browse Flathub" msgstr "ОглÑнути Flathub" #: src/bz-curated-view.blp:49 msgid "Offline" msgstr "Поза мережею" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "Ðе підтверджено" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "ВідомоÑті щодо розробників недоÑтупні" #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "Ð’Ð¾Ð»Ð¾Ð´Ñ–Ð½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ цього заÑтоÑунку %s не було підтверджено. Можливо, " "цей пакунок було вивантажено Ñпільнотою." #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "" "Ð’Ð¾Ð»Ð¾Ð´Ñ–Ð½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %s було підтверджено влаÑноруч командою Flathub." #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "" "Ð’Ð¾Ð»Ð¾Ð´Ñ–Ð½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %1$s було підтверджено <b>%2$s</b> Ñтаном на " "<b>%3$s</b>." #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "Ð’Ð¾Ð»Ð¾Ð´Ñ–Ð½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %1$s було підтверджено з допомогою %2$s." #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Ð’Ð¾Ð»Ð¾Ð´Ñ–Ð½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %s було підтверджено." #: src/bz-donations-dialog.blp:7 msgid "Bazaar Release" msgstr "ВипуÑк «Базар»" #: src/bz-donations-dialog.blp:77 msgid "Full Release Notes" msgstr "Повна примітка до випуÑку" #: src/bz-donations-dialog.blp:112 msgid "This release was made possible by users like you!" msgstr "" "ВипуÑк цієї крамниці Ñтав можливим завдÑки таким Ñамим кориÑтувачам, що Ñ– Ви!" #: src/bz-donations-dialog.blp:121 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "Я люблю Ñтворювати Базар, та не можу робити це без допомоги. Підтримайте " "подальшу розробку гривнею на Ko-Fi." #: src/bz-donations-dialog.blp:136 msgid "Donate to Bazaar" msgstr "Пожертвувати Базару" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:228 #, c-format msgid "What's New in %s?" msgstr "Що нового у %s?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:244 msgid "Released %B %-e, %Y" msgstr "Випущено %-e %B %Y Ñ€." #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "Оберіть вÑтановленнÑ" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "" "Ви маєте декілька вÑтановлених верÑій цього заÑтоÑунку. З котрою з них Ви " "бажаєте продовжити?" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "СкаÑувати" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "Лише Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ кориÑтувача" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "цей кориÑтувач" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "уÑÑ– кориÑтувачі" #: src/bz-error-dialog.blp:36 src/bz-safety-dialog.blp:100 src/error.c:69 #: src/error.c:88 msgid "Details" msgstr "Докладніше" #. TRANSLATORS: tooltip for a button that copies text to the clipboard #: src/bz-error-dialog.blp:48 msgid "Copy" msgstr "Копіювати" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:446 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "Скопійовано!" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "КількіÑть уподобань" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ вподобані" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "Увійдіть із допомогою Flathub, аби керувати вподобаннÑми" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "Увійти" #: src/bz-favorites-page.blp:5 src/bz-window.blp:348 msgid "Favorites" msgstr "Вподобані" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:87 msgid "Install All" msgstr "Ð’Ñтановити вÑÑ–" #: src/bz-favorites-page.blp:47 msgid "No Favorites" msgstr "Ðічого не вподобано" #: src/bz-favorites-page.blp:48 msgid "Applications you mark as favorite will appear here" msgstr "Вподобані заÑтоÑунки опинÑтимутьÑÑ Ñ‚ÑƒÑ‚" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "Підтримати цей заÑтоÑунок" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "Прибрати з уподобаних" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ з уподобаних" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "Ðазад" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "Далі" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "Редактори" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "MIDI" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "МікшуваннÑ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "Музика" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "Програвачі" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "ЗапиÑ" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "СеквенÑори" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "Тюнер" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "ТБ" # Сторінка повертає різні ігрові емулÑтори #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "ЕмулÑтори" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "Бойовики" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "Пригоди" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "Ðркади" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "Блоки" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "ÐаÑтільні" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "Карткові" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "ДитÑчі" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "Головоламки" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "Рольові" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "СтрілÑнки" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "СимулÑтори" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "Спортивні" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "Стратеґії" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "Ðавігатори" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "СпілкуваннÑ" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "Пошта" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "ÐžÐ¿Ñ€Ð¸Ð»ÑŽÐ´Ð½ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "Звук та відео" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "Медіа" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "Показати більше" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "Розробка" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "Розробка" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "Показати більше" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "ОÑвіта" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "ОÑвіта" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "Показати більше" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "Ігри" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "Ігри" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "Показати більше" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "Графіка та фотографіÑ" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "ТворчіÑть" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "Показати більше" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "Мережа" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "Інтернет" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "Показати більше" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "ПродуктивніÑть" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "Робота" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "Показати більше" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "Ðаука" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "Показати більше" #: src/bz-flathub-category.c:142 msgid "System" msgstr "СиÑтема" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "Показати більше" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "Утиліти" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:439 msgid "Tools" msgstr "Утиліти" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "Показати більше" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:111 #: src/bz-flathub-page.blp:143 msgid "Trending" msgstr "Ðабирають популÑрніÑть" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "Показати більше" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:117 #: src/bz-flathub-page.blp:176 msgid "Popular" msgstr "ПопулÑрні" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "Показати більше" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:165 msgid "Recently Added" msgstr "Ðещодавно додані" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:123 msgid "New" msgstr "Ðові" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "Показати більше" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:154 msgid "Recently Updated" msgstr "Ðещодавно оновлені" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:129 msgid "Updated" msgstr "Оновлені" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "Показати більше" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "Мобільні приÑтрої" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "Показати більше" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "Показати більше" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "ЗаÑтоÑунки KDE" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "Показати більше" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:421 msgid "Games" msgstr "Ігри" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:481 msgid "More Games" msgstr "Показати більше" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:427 msgid "Emulators" msgstr "Імітатори" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "Інші імітатори" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:433 msgid "Launchers" msgstr "ЗаÑоби запуÑку" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "Інші заÑоби запуÑку ігор" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "Ігрові інÑтрументи" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "Інші ігрові інÑтрументи" #: src/bz-flathub-curated-section.c:65 msgid "New Year, New Workflows" msgstr "Ðовий рік, нові робочі процеÑи" #: src/bz-flathub-curated-section.c:65 msgid "Apps to take notes, track tasks, and make plans" msgstr "Програми Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ñ‚Ð°Ñ‚Ð¾Ðº, ÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° завданнÑми та плануваннÑ" #: src/bz-flathub-curated-section.c:66 msgid "Staff Picks" msgstr "Вибір перÑоналу" #: src/bz-flathub-curated-section.c:66 msgid "Apps we love right now" msgstr "Програми, Ñкі нам зараз подобаютьÑÑ" #: src/bz-flathub-curated-section.c:67 #| msgid "Create" msgid "Get Creative" msgstr "ПроÑвіть творчіÑть" #: src/bz-flathub-curated-section.c:67 msgid "Essential apps for drawing, editing photos, and digital design" msgstr "" "Базові програми Ð´Ð»Ñ Ð¼Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ, Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ð¹ та цифрового дизайну" #: src/bz-flathub-curated-section.c:68 msgid "Build Native Apps" msgstr "Збираємо вбудовані програми" #: src/bz-flathub-curated-section.c:68 msgid "Develop apps that feel at home on your system" msgstr "РозроблÑйте програми, Ñкі будуть природними у вашій ÑиÑтемі" #: src/bz-flathub-curated-section.c:69 msgid "Stay in Touch" msgstr "Тримаємо зв'Ñзок" #: src/bz-flathub-curated-section.c:69 msgid "Essential collaboration and communication apps" msgstr "Базові програми Ð´Ð»Ñ Ñпівпраці та ÑпілкуваннÑ" #: src/bz-flathub-curated-section.c:70 msgid "Ready for Vacations" msgstr "ГотуємоÑÑ Ð´Ð¾ відпуÑтки" #: src/bz-flathub-curated-section.c:70 msgid "Maps, transit, weather, and trip planning apps" msgstr "" "Карти, міÑький транÑпорт, подорожі, погода та програми Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð´Ð¾Ñ€Ð¾Ð¶" "ей" #: src/bz-flathub-curated-section.c:71 msgid "Smarter Every Day" msgstr "Розумніше щоднÑ" #: src/bz-flathub-curated-section.c:71 msgid "Apps to help you study, research, and write" msgstr "" "Програми, Ñкі допомагають у навчанні, доÑлідженнÑÑ… та пиÑьменницькій Ñправі" #: src/bz-flathub-curated-section.c:72 msgid "Get Cozy" msgstr "ВмощуємоÑÑ Ð·Ñ€ÑƒÑ‡Ð½ÐµÐ½ÑŒÐºÐ¾" #: src/bz-flathub-curated-section.c:72 msgid "Great apps for reading, watching movies, and playing games" msgstr "Чудові програми Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ, переглÑду відео та гри" #: src/bz-flathub-curated-section.c:73 #| msgid "More Developer Tools" msgid "Web Developer Essentials" msgstr "База Ð´Ð»Ñ Ð²ÐµÐ±Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸" #: src/bz-flathub-curated-section.c:73 msgid "Making websites is more fun with these apps" msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñайтів Ñтане приємнішим із цими програмами" #: src/bz-flathub-curated-section.c:74 msgid "Take Better Notes" msgstr "Занотовуємо краще" #: src/bz-flathub-curated-section.c:74 msgid "Find your new favorite note taking tool" msgstr "Знайдіть вашу улюблену програму Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ñ‚Ð°Ñ‚Ð¾Ðº" #: src/bz-flathub-curated-section.c:75 #| msgid "Get Involved" msgid "Get Focused" msgstr "ЗоÑередженнÑ" #: src/bz-flathub-curated-section.c:75 msgid "Great apps for task management" msgstr "Чудові програми Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми" #: src/bz-flathub-curated-section.c:76 msgid "Make Some Noise" msgstr "Трохи шуму" #: src/bz-flathub-curated-section.c:76 msgid "Apps for creating and producing music" msgstr "Програми Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ– Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ¸" #: src/bz-flathub-curated-section.c:77 msgid "Get To Work" msgstr "До роботи" #: src/bz-flathub-curated-section.c:77 msgid "Essential office apps" msgstr "Базові офіÑні програми" #: src/bz-flathub-page.blp:22 msgid "Flathub Not Added" msgstr "Flathub не додано" #: src/bz-flathub-page.blp:23 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Сховище Flathub не було знайдено на жодному з Ваших вÑтановлень" #: src/bz-flathub-page.blp:32 msgid "Can't Reach Flathub" msgstr "Ðе вдалоÑÑ Ð·Ê¼Ñ”Ð´Ð½Ð°Ñ‚Ð¸ÑÑ Ð· Flathub" #: src/bz-flathub-page.blp:33 msgid "You can still manage and search for apps." msgstr "Ви вÑе ще можете шукати заÑтоÑунки та керувати ними." #: src/bz-flathub-page.blp:39 msgid "Search Apps" msgstr "Шукати заÑтоÑунки" #: src/bz-flathub-page.blp:50 msgid "Reconnect" msgstr "ЗʼєднатиÑÑ Ð·Ð½Ð¾Ð²" #: src/bz-flathub-page.blp:204 msgid "App of the Day" msgstr "ЗаÑтоÑунок днÑ" #: src/bz-flathub-page.blp:267 msgid "On the Go" msgstr "Ðа ходу" #: src/bz-flathub-page.blp:279 msgid "Apps for your Linux phones and tablets" msgstr "ЗаÑтоÑунки Ð´Ð»Ñ Ð’Ð°ÑˆÐ¸Ñ… Ñмартфонів та планшетів на Linux" #: src/bz-flathub-page.blp:290 src/bz-flathub-page.blp:325 msgid "More Mobile Apps" msgstr "Показати більше" #: src/bz-flathub-page.blp:383 msgid "We​ ♥​ Games" msgstr "Ми​ ♥​ ігри" #: src/bz-flathub-page.blp:396 msgid "Games and apps to run your favorite titles" msgstr "Улюблені ігри та заÑтоÑунки Ð´Ð»Ñ Ð½Ð¸Ñ…" #: src/bz-full-view.blp:33 msgid "No Results" msgstr "Ðічого не знайдено" #: src/bz-full-view.blp:34 msgid "Try a different search query" msgstr "Спробуйте інший запит" #: src/bz-full-view.blp:103 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "" "Це передпроглÑд на приÑтрої; деÑкі дрібниці можуть відрізнÑтиÑÑ Ð²Ñ–Ð´ " "оприлюдненої верÑÑ–Ñ—" #: src/bz-full-view.blp:106 msgid "Preview Store Appearance" msgstr "ПередпроглÑнути виглÑд у крамниці" #: src/bz-full-view.blp:233 msgid "_Support" msgstr "_Підтримати" #: src/bz-full-view.blp:458 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Цей заÑтоÑунок викориÑтовує Ñередовище виконаннÑ, котре більше не отримує " "оновлень або безпекових виправлень. Він може Ñтати небезпечним до " "викориÑтаннÑ." #: src/bz-full-view.blp:536 msgid "Trash Data" msgstr "ПереміÑтити дані в Ñмітник" #: src/bz-full-view.blp:599 msgid "Add-ons" msgstr "РозширеннÑ" #: src/bz-full-view.blp:634 msgid "More Add-Ons" msgstr "Більше розширень" #: src/bz-full-view.blp:645 msgid "Links" msgstr "ПоÑиланнÑ" #: src/bz-full-view.blp:676 msgid "Similar Apps" msgstr "Подібні заÑтоÑунки" #: src/bz-full-view.c:181 msgid "No URL" msgstr "Без URL" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "Цей заÑтоÑунок має вільну ліцензію. Це означає, що початковий код може бути " "перевірено на безпечніÑть." #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "" "Цей заÑтоÑунок має невільну (влаÑницьку) ліцензію. Це означає, що початковий " "код не Ñ” публічно доÑтупним Ñ– не може бути перевіреним на безпечніÑть." #: src/bz-full-view.c:207 msgid "More Apps" msgstr "Більше заÑтоÑунків" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "Більше від %s" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "Більше від розробників" #: src/bz-full-view.c:217 src/bz-full-view.c:309 #, c-format msgid "Other Apps by %s" msgstr "Більше від %s" # Трохи довший переклад, аби зберегти Ñтатеву нейтральніÑть назви Ñамого заÑтоÑунку. #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "" "ЗаÑтоÑунок %s не вÑтановлено, проте він має <b>%s</b> залишкових даних." #: src/bz-full-view.c:311 msgid "Other Apps" msgstr "Інші заÑтоÑунки" #: src/bz-full-view.c:313 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d заÑтоÑунок" msgstr[1] "%d заÑтоÑунки" msgstr[2] "%d заÑтоÑунків" msgstr[3] "%d заÑтоÑунок" #: src/bz-full-view.c:498 src/bz-user-data-tile.c:160 msgid "Failed to Remove User Data" msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувацькі дані" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "Підтримка приÑтроїв" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "Підтримка клавіатури" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "Вимагає клавіатуру" # Позначає, що заÑтоÑунок ліпше працює з такими приÑтроÑми # Стан підтримки загалом опиÑуєтьÑÑ Ñ–Ð½ÑˆÐ¸Ð¼ Ñ€Ñдком #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "Бажана клавіатура" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "Підтримує клавіатуру" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "СуміÑніÑть із клавіатурами на вказана" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "Підтримка миші" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "Вимагає мишу або вказівний приÑтрій" # Позначає, що заÑтоÑунок ліпше працює з такими приÑтроÑми # Стан підтримки загалом опиÑуєтьÑÑ Ñ–Ð½ÑˆÐ¸Ð¼ Ñ€Ñдком #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "Бажані миша або вказівний приÑтрій" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "Підтримує мишу або вказівний приÑтрій" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "СуміÑніÑть із мишами або вказівними приÑтроÑми не вказана" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "Підтримка ÑенÑорних екранів" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "Вимагає ÑенÑорний екран" # Позначає, що заÑтоÑунок ліпше працює з такими приÑтроÑми # Стан підтримки загалом опиÑуєтьÑÑ Ñ–Ð½ÑˆÐ¸Ð¼ Ñ€Ñдком #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "Бажаний ÑенÑорний екран" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "Підтримує ÑенÑорний екран" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "СуміÑніÑть із ÑенÑорними екранами на вказана" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "Підтримка мобільних приÑтроїв" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "Працює на мобільних приÑтроÑÑ…" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "Обмежена підтримка на мобільних приÑтроÑÑ…" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "Підтримка Ñтільниць" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "Працює добре на великих екранах" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s найліпше працює на певних приÑтроÑÑ…" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s працює на більшоÑті приÑтроїв" #: src/bz-inspector.blp:23 msgid "Inspector Menu" msgstr "Меню інÑпектора" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "_ЗапуÑтити" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "Видалити цей заÑтоÑунок" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_Видалити" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "ОновленнÑ" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "Видалити" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "Ð’Ñтановити %s з %s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "Ð’Ñтановити %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "СкаÑувати" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "СкаÑовуємо" #: src/bz-installed-tile.blp:80 msgid "Donate" msgstr "Пожертви" #: src/bz-library-page.blp:17 msgid "Search installed apps" msgstr "Шукати вÑтановлені заÑтоÑунки" #: src/bz-library-page.blp:32 msgid "No Apps Found" msgstr "Ðе знайдено жодного заÑтоÑунку" #: src/bz-library-page.blp:49 msgid "Search Store Instead" msgstr "Шукати в крамниці" #: src/bz-library-page.blp:86 msgid "Pending Updates" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð² черзі" #: src/bz-library-page.blp:113 msgid "Downloads" msgstr "Завантажень" #: src/bz-library-page.blp:156 msgid "Recently Uninstalled" msgstr "Ðещодавно видалені" #: src/bz-library-page.blp:207 msgid "Clear Finished Tasks" msgstr "ОчиÑтити завершені завданнÑ" #: src/bz-library-page.blp:234 msgid "Sort Options" msgstr "Параметри упорÑдковуваннÑ" #: src/bz-library-page.blp:293 msgid "Sort By" msgstr "УпорÑдкувати за" #: src/bz-library-page.blp:307 msgid "Name" msgstr "Ðазва" #: src/bz-library-page.blp:313 msgid "Size" msgstr "Розмір" #: src/bz-library-page.c:181 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "Жодного збігу за «%s» у переліку вÑтановлених заÑтоÑунків" #: src/bz-library-page.c:194 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "ДоÑтупне %u оновленнÑ" msgstr[1] "ДоÑтупні %u оновленнÑ" msgstr[2] "ДоÑтупні %u оновлень" msgstr[3] "ДоÑтупне %u оновленнÑ" #: src/bz-library-page.c:204 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u вÑтановлений заÑтоÑунок" msgstr[1] "%u вÑтановлені заÑтоÑунки" msgstr[2] "%u вÑтановлених заÑтоÑунків" msgstr[3] "%u вÑтановлений заÑтоÑунок" #: src/bz-library-page.c:629 src/bz-search-page.c:786 msgid "No applications found" msgstr "Ðе знайдено жодної програми" #: src/bz-library-page.c:629 src/bz-search-page.c:788 #, c-format msgid "One application found" msgid_plural "%u applications found" msgstr[0] "Знайдено %u заÑтоÑунок" msgstr[1] "Знайдено %u заÑтоÑунки" msgstr[2] "Знайдено %u заÑтоÑунків" msgstr[3] "Знайдено один заÑтоÑунок" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "ДолучитиÑÑ" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "ДізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "Ðевідома ліцензіÑ" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "Розроблено Ñпільнотою" #: src/bz-license-dialog.c:133 src/context-tile-callbacks.c:289 msgid "Proprietary" msgstr "ВлаÑницька ліцензіÑ" #: src/bz-license-dialog.c:135 src/context-tile-callbacks.c:291 msgid "Special License" msgstr "ВлаÑна ліцензіÑ" # Згідно перекладу на Flathub #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Цей заÑтоÑунок розроблÑєтьÑÑ Ñƒ відкритому доÑтупі міжнародною Ñпільнотою.\n" "\n" "Ви можете долучитиÑÑ Ð´Ð¾ проєкту та зробити його ліпшим." #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ Ñ†ÑŒÐ¾Ð³Ð¾ заÑтоÑунку невідома" # Згідно перекладу на Flathub #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "Цей заÑтоÑунок розроблÑєтьÑÑ Ñƒ відкритому доÑтупі міжнародною Ñпільнотою та " "випуÑкаєтьÑÑ Ð¿Ñ–Ð´ %s.\n" "\n" "Ви можете долучитиÑÑ Ð´Ð¾ проєкту та зробити його ліпшим." # Згідно перекладу на Flathub #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Цей заÑтоÑунок не розроблÑєтьÑÑ Ñƒ відкритому доÑтупі, тому лише його " "розробники знають, Ñк він працює. Він може мати вразливоÑті, Ñкі важко " "виÑвити, Ñ– може змінюватиÑÑ Ð±ÐµÐ· наглÑду.\n" "\n" "Ви можете не мати можливоÑті долучитиÑÑ Ð´Ð¾ проєкту." #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "Цей заÑтоÑунок розроблÑєтьÑÑ Ð½Ð° умовах влаÑної ліцензії %s.\n" "\n" "Ви можете не мати можливоÑті долучитиÑÑ Ð´Ð¾ проєкту." #: src/bz-license-dialog.c:345 src/bz-license-dialog.c:364 #: src/bz-safety-dialog.blp:103 msgid "License" msgstr "ЛіцензіÑ" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "ЗʼєднатиÑÑ Ð· Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "ЩоÑÑŒ трапилоÑÑŒ" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "Увійдіть, аби Ñинхронізувати уподобані заÑтоÑунки між приÑтроÑми" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "Завершити" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "Вітаємо, %s!" #: src/bz-metainfo-preview.c:105 msgid "Add Icon to Metainfo Preview?" msgstr "Додавати піктограму до переглÑду метаданих?" #: src/bz-metainfo-preview.c:108 msgid "" "Metainfo files don't include app icons by themselves. Would you like to " "select one manually?" msgstr "" "Файли метаданих Ñамі не міÑÑ‚Ñть піктограм програм. Хочете вибрати піктограму " "вручну?" #: src/bz-metainfo-preview.c:111 msgid "Skip" msgstr "ПропуÑтити" #: src/bz-metainfo-preview.c:112 src/bz-metainfo-preview.c:163 msgid "Select Icon" msgstr "Виберіть піктограму" #: src/bz-metainfo-preview.c:166 msgid "Image Files" msgstr "Файли зображень" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "ÐалаштуваннÑ" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "Платне Ð·Ê¼Ñ”Ð´Ð½Ð°Ð½Ð½Ñ â€” автоматичне оÑÐ²Ñ–Ð¶ÐµÐ½Ð½Ñ Ð²Ð¼Ñ–Ñту крамниці призупинено" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:236 src/bz-window.blp:247 msgid "Refresh Manually" msgstr "ОÑвіжити влаÑноруч" #: src/bz-preferences-dialog.blp:31 msgid "App Updates" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" #: src/bz-preferences-dialog.blp:33 msgid "" "Auto-updates will pause on metered networks or when power saving is on to " "save data and battery." msgstr "" "Ðвтоматичні Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÑтимутьÑÑ Ñƒ тарифікованих мережах або коли " "увімкнено режим енергозаощадженнÑ, щоб заощадити на передаванні даних та " "зарÑді акумулÑтора." #: src/bz-preferences-dialog.blp:36 msgid "_Automatic" msgstr "_Ðвтоматично" #: src/bz-preferences-dialog.blp:37 msgid "Automatically check for and download app updates" msgstr "Ðвтоматично шукати Ñ– отримувати Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" #: src/bz-preferences-dialog.blp:48 msgid "_Manual" msgstr "Ð’_ручну" #: src/bz-preferences-dialog.blp:49 msgid "Checking for and downloading app updates must be done manually" msgstr "Пошук Ñ– Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ програми має бути виконано вручну" #: src/bz-preferences-dialog.blp:67 msgid "Automatic Update _Notifications" msgstr "С_Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ автоматичних оновлень" #: src/bz-preferences-dialog.blp:68 msgid "Notify when updates have been automatically installed" msgstr "Показувати ÑповіщеннÑ, коли програма автоматично вÑтановлює оновленнÑ" #: src/bz-preferences-dialog.blp:73 msgid "Content Filters" msgstr "ВідÑÑ–Ñти вміÑÑ‚" #: src/bz-preferences-dialog.blp:76 msgid "_Free Software Only" msgstr "Лише _вільне ліцензуваннÑ" #: src/bz-preferences-dialog.blp:77 msgid "Hide proprietary apps when browsing and searching" msgstr "Ховати влаÑницькі (пропрієтарні) заÑтоÑунки з оглÑду та пошуку" #: src/bz-preferences-dialog.blp:82 msgid "F_lathub Results Only" msgstr "ÐÐ°Ð´Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ з F_lathub" #: src/bz-preferences-dialog.blp:83 msgid "Limit search and browse results to apps only available on Flathub" msgstr "" "Обмежити Ð½Ð°Ð´Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñƒ пошуку та оглÑді лише до тих, що походÑть з Flathub" #: src/bz-preferences-dialog.blp:88 msgid "_Verified Results Only" msgstr "Лише під_тверджені надходженнÑ" #: src/bz-preferences-dialog.blp:89 msgid "Hide results that are not verified on Flathub" msgstr "Ховати надходженнÑ, котрі не Ñ” підтвердженими на Flathub" #: src/bz-preferences-dialog.blp:94 msgid "Hide _End-of-Life Apps" msgstr "Сховати _оÑиротілі заÑтоÑунки" #: src/bz-preferences-dialog.blp:95 msgid "Hide apps which are no longer supported by their developers" msgstr "" "Сховати заÑтоÑунки, котрі більше не підтримуютьÑÑ Ð²Ð»Ð°Ñними розробниками" #: src/bz-preferences-dialog.blp:101 msgid "Progress Bar Theme" msgstr "ВиглÑд Ñмужки поÑтупу" #: src/bz-preferences-dialog.c:42 msgid "Accent Color" msgstr "Ðкцентний колір" #: src/bz-preferences-dialog.c:43 msgid "Pride Colors" msgstr "Барви ГордоÑті" #: src/bz-preferences-dialog.c:44 msgid "Lesbian Pride Colors" msgstr "ЛеÑбійÑький прапор" #: src/bz-preferences-dialog.c:45 msgid "Male Homosexual Pride Colors" msgstr "Барви ГордоÑті чоловічої гомоÑекÑуальноÑті" #: src/bz-preferences-dialog.c:46 msgid "Transgender Pride Colors" msgstr "ТранÑґендерний прапор" #: src/bz-preferences-dialog.c:47 msgid "Nonbinary Pride Colors" msgstr "Ðебінарний прапор" #: src/bz-preferences-dialog.c:48 msgid "Bisexual Pride Colors" msgstr "БіÑекÑуальні барви ГордоÑті" #: src/bz-preferences-dialog.c:49 msgid "Asexual Pride Colors" msgstr "ÐÑекÑуальні барви ГордоÑті" #: src/bz-preferences-dialog.c:50 msgid "Pansexual Pride Colors" msgstr "ПанÑекÑуальний прапор" #: src/bz-preferences-dialog.c:51 msgid "Aromantic Pride Colors" msgstr "Ðромантичний прапор" #: src/bz-preferences-dialog.c:52 msgid "Genderfluid Pride Colors" msgstr "Òендерфлюїдний прапор" #: src/bz-preferences-dialog.c:53 msgid "Polysexual Pride Colors" msgstr "ПоліÑекÑуальний прапор" #: src/bz-preferences-dialog.c:54 msgid "Omnisexual Pride Colors" msgstr "ОмніÑекÑуальний прапор" #: src/bz-preferences-dialog.c:55 msgid "Aroace Pride Colors" msgstr "Прапор ароейÑ" #: src/bz-preferences-dialog.c:56 msgid "Agender Pride Colors" msgstr "Ðґендерний прапор" #: src/bz-preferences-dialog.c:57 msgid "Genderqueer Pride Colors" msgstr "Òендерквірний прапор" #: src/bz-preferences-dialog.c:58 msgid "Intersex Pride Colors" msgstr "ІнтерÑекÑуальний прапор" #: src/bz-preferences-dialog.c:59 msgid "Demigender Pride Colors" msgstr "Деміґендерний прапор" #: src/bz-preferences-dialog.c:60 msgid "Biromantic Pride Colors" msgstr "Біромантичний прапор" #: src/bz-preferences-dialog.c:61 msgid "Disability Pride Colors" msgstr "Барви ÐезламноÑті" #: src/bz-preferences-dialog.c:62 msgid "Femboy Pride Colors" msgstr "Барви ГордоÑті фембоїв" #: src/bz-preferences-dialog.c:63 msgid "Neutrois Pride Colors" msgstr "Барви ГордоÑті нейтроїв" #: src/bz-preferences-dialog.c:285 msgid "Bazaar needs to run in the background to check for app updates" msgstr "" "«Базар» має працювати у фоновому режимі, щоб мати змогу шукати Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ " "програми" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð²ÐµÑ€Ñій" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð²ÐµÑ€Ñій" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "Сьогодні" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "Учора" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d день тому" msgstr[1] "%d дні тому" msgstr[2] "%d днів тому" msgstr[3] "%d день тому" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d тиждень тому" msgstr[1] "%d тижні тому" msgstr[2] "%d тижнів тому" msgstr[3] "%d тиждень тому" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d міÑÑць тому" msgstr[1] "%d міÑÑці тому" msgstr[2] "%d міÑÑців тому" msgstr[3] "%d міÑÑць тому" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d рік тому" msgstr[1] "%d роки тому" msgstr[2] "%d років тому" msgstr[3] "%d рік тому" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "ВерÑÑ–Ñ %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "Без подробиць" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "Докладніше про випуÑк" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "Видалити" # Сирець підказує, що це кнопка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "Завантажити" #: src/bz-safety-dialog.blp:32 src/bz-safety-dialog.c:297 #: src/safety-calculator.c:161 msgid "Arbitrary Permissions" msgstr "ВлаÑні дозволи" #: src/bz-safety-dialog.blp:49 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a privileged, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° має права доÑтупу, Ñкі опоÑередковано дозволÑють їй надавати " "Ñобі <b>будь-Ñкі інші права доÑтупу</b>, минаючи піÑочницю Flatpak.\n" "\n" "Таким чином, вона може робити вÑе, що може робити привілейована програма без " "піÑочниці, наприклад, отримувати доÑтуп до вÑÑ–Ñ… ваших файлів та " "вÑтановлювати з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· інтернетом.\n" "\n" "ПереглÑд інших прав доÑтупу може дати краще уÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ те, що програма, " "ймовірно, робитиме." #: src/bz-safety-dialog.blp:53 msgid "View Other Permissions" msgstr "ПереглÑнути інші права доÑтупу" #. TRANSLATORS: short app safety rating label #: src/bz-safety-dialog.blp:81 src/context-tile-callbacks.c:402 msgid "Safe" msgstr "Безпечний" #: src/bz-safety-dialog.blp:114 msgid "App ID" msgstr "ID заÑтоÑунку" #: src/bz-safety-dialog.blp:124 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:158 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "Цей заÑтоÑунок кориÑтує заÑтарілу верÑÑ–ÑŽ Ñередовища Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (SDK) Ñ– може " "міÑтити помилки та/або прогалини безпеки, котрі вже не будуть полагоджені." #: src/bz-safety-dialog.c:283 src/bz-safety-dialog.c:317 msgid "Safety" msgstr "БезпечніÑть" #: src/bz-safety-dialog.c:377 #, c-format msgid "%s is Safe" msgstr "%s Ñ” безпечним" #: src/bz-safety-dialog.c:382 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s не має небезпечних дозволів" #: src/bz-safety-dialog.c:387 #, c-format msgid "%s is Probably Safe" msgstr "%s радше безпечний" #: src/bz-safety-dialog.c:392 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s імовірно небезпечний" #: src/bz-safety-dialog.c:397 #, c-format msgid "%s is Unsafe" msgstr "%s Ñ” небезпечним" #: src/bz-screenshot-page.blp:41 msgid "Back" msgstr "Ðазад" #: src/bz-screenshot-page.blp:71 msgid "Previous Screenshot" msgstr "Попередній знімок" #: src/bz-screenshot-page.blp:81 msgid "Next Screenshot" msgstr "ÐаÑтупний знімок" #: src/bz-screenshot-page.blp:97 msgid "Copy Image" msgstr "Копіювати знімок" #: src/bz-screenshot-page.blp:160 msgid "Reset View" msgstr "Відновити маÑштаб" #: src/bz-screenshot-page.blp:171 msgid "Zoom Out" msgstr "Віддалити" #: src/bz-screenshot-page.blp:181 msgid "Zoom In" msgstr "Ðаблизити" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "КаруÑель знімків" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "Ðемає знімків" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "Відкрити переглÑдач знімків" #: src/bz-screenshots-carousel.c:308 #, c-format msgid "Screenshot %u %s" msgstr "Знімок %u %s" #: src/bz-screenshots-carousel.c:310 #, c-format msgid "Screenshot %u" msgstr "Знімок %u" #: src/bz-search-bar.blp:55 msgid "Clear Search" msgstr "ОчиÑтити пошук" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:66 msgid "Filters" msgstr "ВідÑÑ–Ñти" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_Підтверджені" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_Вільні/Безкоштовні" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "Без _оÑиротілих" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "ВідÑÑ–Ñти оÑиротілі заÑтоÑунки" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "З_ручний Ð´Ð»Ñ Ð¼Ð¾Ð±Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "Категорії" #: src/bz-search-page.blp:45 msgid "Search Apps, Games, Software" msgstr "Шукайте заÑтоÑунки, ігри та програми" #: src/bz-search-page.blp:52 msgid "Search Filters" msgstr "ВідÑÑ–Ñти пошук" #: src/bz-search-page.blp:170 msgid "Browse Categories" msgstr "Шукати в категоріÑÑ…" #: src/bz-search-page.blp:206 msgid "Categories Unavailable" msgstr "Категорії недоÑтупні" #: src/bz-search-page.blp:207 msgid "Search for apps using the search bar above." msgstr "Шукайте заÑтоÑунки за допомогою Ñ€Ñдка згори." #: src/bz-search-page.blp:325 msgid "No Applications Found" msgstr "Жодного підібраного заÑтоÑунку" #: src/bz-search-page.c:249 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Ðе знайдено збігів Ð´Ð»Ñ Â«%s» на Flathub" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "ОглÑдач" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "Відео" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "ОфіÑ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "Календар" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "СпілкуваннÑ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "МалюваннÑ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Торент" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "ЕмулÑтори" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Сторінка Flathub" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "URL проєкту" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "ВідÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "ЧаПи" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "Допомога" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "Пожертви" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "Переклад" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "ЗвʼÑзок" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "Початковий код" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "ДолучитиÑÑ" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "МаніфеÑÑ‚" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "Копіювати поÑиланнÑ" # https://slovotvir.org.ua/words/taimlain #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "ЧаÑорÑд" #. TRANSLATORS: label prefix shown in graph tooltips, for example: "Installs: 42" #: src/bz-stats-dialog.blp:48 msgid "Installs:" msgstr "Ð’Ñтановлень:" #. TRANSLATORS: page in the statistics dialog #: src/bz-stats-dialog.blp:58 msgid "World" msgstr "Світ" #: src/bz-stats-dialog.blp:72 msgid "Since 4/15/2024" msgstr "Від 15 ÐºÐ²Ñ–Ñ‚Ð½Ñ 2024 Ñ€." #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM вÑтановлень загалом" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK вÑтановлень загалом" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "%'d вÑтановлень загалом" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "Ðічого не знайдено" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "Помилка пошуку" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "Лишити кориÑтувацькі дані" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "Ðадає можливіÑть відновити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° вміÑÑ‚ у майбутньому" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "Видалити уÑÑ– дані" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "Ðазавжди видалити кориÑтувацьку дані цього заÑтоÑунку" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "Ð’Ñтановити %s?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "" "Оберіть верÑÑ–ÑŽ до вÑтановленнÑ. Також може бути вÑтановлено додаткові " "компоненти." #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "Можуть бути вÑтановлені додаткові компоненти" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_СкаÑувати" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_Ð’Ñтановити" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "Видалити %s?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "Оберіть верÑÑ–ÑŽ до видаленнÑ" #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "%s не можна буде кориÑтати піÑÐ»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ." #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "«%s» має виÑокий ризик" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Цей заÑтоÑунок має повний доÑтуп до Вашої ÑиÑтеми, Ñ–Ñторії оглÑдача, " "збережених паролів, тощо. Він також має доÑтуп до мережі, що Ñтворює йому " "можливіÑть надÑилати Ваші дані Ñтороннім оÑобам.\n" "\n" "ОÑкільки заÑтоÑунок Ñ” закритим (влаÑницьким), то неможливо перевірити, що " "він робить із цими дозволами." #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "Цей заÑтоÑунок кориÑтує заÑтарілий Ñервер ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÐ½Ð°Ð¼Ð¸ X11, що дозволÑÑ” " "заÑтоÑунку запиÑувати уÑÑ– натиÑÐºÐ°Ð½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ, отримувати знімки екрану, та " "Ñтежити за іншими заÑтоÑунками. Він також має доÑтуп до мережі, що дає йому " "можливіÑть надÑилати Ваші дані Ñтороннім оÑобам.\n" "\n" "ОÑкільки заÑтоÑунок Ñ” закритим (влаÑницьким), то неможливо перевірити, що " "він робить із цими дозволами." #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_Ð’Ñтановити попри це" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ віконце операцій" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "УÑÑ– заÑтоÑунки вже вÑтановлені" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_Гаразд" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "Ð’Ñтановити %u заÑтоÑунок?" msgstr[1] "Ð’Ñтановити %u заÑтоÑунки?" msgstr[2] "Ð’Ñтановити %u заÑтоÑунків?" msgstr[3] "Ð’Ñтановити %u заÑтоÑунок?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "" "УÑе зазначене буде вÑтановлено. Також може бути вÑтановлено додаткові " "компоненти." #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "Буде вÑтановлено %d розширень." #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "Крім того, будуть уÑтановлені розширеннÑ." #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_Ð’Ñтановити вÑÑ–" #: src/bz-transaction-manager.c:796 #, c-format msgid "Finished in %.02f seconds" msgstr "Завершено за %.02f Ñек" #: src/bz-transaction-tile.blp:130 msgid "App Add-On" msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð·Ð°ÑтоÑунків" #: src/bz-transaction-tile.blp:159 msgid "Runtime" msgstr "Середовище виконаннÑ" #: src/bz-transaction-tile.blp:183 msgid "In Queue" msgstr "У черзі" #: src/bz-transaction-tile.blp:207 msgid "Done" msgstr "Готово" #: src/bz-transaction-tile.blp:231 msgid "Cancelled" msgstr "СкаÑовано" #: src/bz-transaction-tile.blp:255 msgid "Error" msgstr "Помилка" #: src/bz-transaction-tile.blp:314 msgid "Cancel Transaction" msgstr "СкаÑувати дію" #: src/bz-transaction-tile.blp:324 msgid "Show Details" msgstr "Показати подробиці" #: src/bz-transaction-tile.blp:439 msgid "Show Error Info" msgstr "Докладніше про помилку" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "Звільнено %s" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "Помилка дії" #: src/bz-transaction.c:344 msgid "Pending" msgstr "У черзі" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "_Оновити вÑÑ–" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñередовища виконаннÑ" msgstr[1] "%u Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñередовищ виконаннÑ" msgstr[2] "%u оновлень Ñередовищ виконаннÑ" msgstr[3] "%u Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñередовища виконаннÑ" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "Керувати залишковими даними" #: src/bz-user-data-page.blp:32 msgid "No Leftover User Data Found" msgstr "Ðе знайдено залишкових даних кориÑтувача" #: src/bz-user-data-page.blp:33 msgid "Personal data left behind by apps that were removed will show up here" msgstr "Тут буде показано оÑобиÑті дані, залишені вилученими програмами" #: src/bz-user-data-page.c:229 #, c-format msgid "Trashed User Data for %u App" msgid_plural "Trashed User Data for %u Apps" msgstr[0] "КориÑтувацькі дані %u заÑтоÑунка було переÑунуто до Ñмітника" msgstr[1] "КориÑтувацькі дані %u заÑтоÑунків було переÑунуто до Ñмітника" msgstr[2] "КориÑтувацькі дані %u заÑтоÑунків було переÑунуто до Ñмітника" msgstr[3] "КориÑтувацькі дані %u заÑтоÑунка було переÑунуто до Ñмітника" #: src/bz-user-data-page.c:233 #, c-format msgid "Trashed User Data for %s" msgstr "КориÑтувацькі дані %s було переÑунуто до Ñмітника" #: src/bz-user-data-tile.blp:92 msgid "Open User Data Folder" msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ‚ÐµÐºÐ¸ даних кориÑтувача" #: src/bz-user-data-tile.blp:103 msgid "Trash User Data" msgstr "ПереÑунути кориÑтувацькі дані до Ñмітника" #: src/bz-window.blp:72 msgid "Refreshing" msgstr "ОÑвіженнÑ" #: src/bz-window.blp:90 msgid "Curated" msgstr "Підібрані" #: src/bz-window.blp:102 msgid "Explore" msgstr "ОглÑд" #. Translators: . #: src/bz-window.blp:114 msgid "Library" msgstr "Бібліотека" #: src/bz-window.blp:129 msgid "Search" msgstr "Пошук" #: src/bz-window.blp:216 msgid "Main Menu" msgstr "Головне меню" #: src/bz-window.blp:227 msgid "You are running a new version of Bazaar!" msgstr "Ви запуÑтили нову верÑÑ–ÑŽ Базару!" #: src/bz-window.blp:228 msgid "See What's New" msgstr "ОглÑньте зміни" #: src/bz-window.blp:235 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "" "Ви маєте Ð·Ê¼Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· мережею, але переглÑдаєте кешовану верÑÑ–ÑŽ Flathub" #: src/bz-window.blp:246 msgid "Network connection is metered — automatic refreshes disabled" msgstr "Тарифіковане з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· мережею — автоматичні Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾" #: src/bz-window.blp:292 msgid "_Donate to Bazaar" msgstr "_Пожертувати Базару" #: src/bz-window.blp:298 msgid "_Refresh" msgstr "_ОÑвіжити" #: src/bz-window.blp:302 msgid "_Login With Flathub" msgstr "_Увійти з допомогою Flathub" #: src/bz-window.blp:308 msgid "_Manage Leftover User Data" msgstr "_Керувати залишковими даними" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_ÐалаштуваннÑ" #: src/bz-window.blp:319 msgid "_Keyboard Shortcuts" msgstr "_Клавіатурні ÑкороченнÑ" #: src/bz-window.blp:324 msgid "_About Bazaar" msgstr "_Про Базар" #: src/bz-window.blp:330 msgid "_Quit Bazaar" msgstr "_Вийти" #: src/bz-window.blp:355 msgid "Log Out" msgstr "Вийти" #. Translators: %s is the title of the current page #: src/bz-window.c:390 #, c-format msgid "Bazaar — %s" msgstr "Базар — %s" #: src/bz-window.c:635 src/bz-window.c:673 msgid "Failed to launch application" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити заÑтоÑунок" #: src/bz-window.c:925 msgid "You can't remove Bazaar from Bazaar!" msgstr "Ви не можете видалити Базар у Базарі!" #: src/bz-window.c:1238 src/bz-window.c:1272 msgid "Can't do that right now!" msgstr "Ðаразі цього не можна зробити!" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "Ð’ÑтановленнÑ" msgstr[1] "Ð’ÑтановленнÑ" msgstr[2] "Ð’Ñтановлень" msgstr[3] "Ð’ÑтановленнÑ" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*f млн" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*f тиÑ." #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "%d завантажень за оÑтанній міÑÑць" #. TRANSLATORS: %s is a formatted file size, for example: "128 MB" #: src/context-tile-callbacks.c:133 #, c-format msgid "+%s Runtime" msgstr "+Ñередовище Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ %s" #: src/context-tile-callbacks.c:136 msgid "Download" msgstr "Завантажити" #: src/context-tile-callbacks.c:156 msgid "Size information unavailable" msgstr "Дані про розмір недоÑтупні" #: src/context-tile-callbacks.c:159 #, c-format msgid "Download size of %s" msgstr "Розмір Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ %s" #: src/context-tile-callbacks.c:192 msgid "All Ages" msgstr "Без обмежень" #: src/context-tile-callbacks.c:204 msgid "Age rating information unavailable" msgstr "Дані щодо вікового Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупні" #: src/context-tile-callbacks.c:209 msgid "Suitable for all ages" msgstr "Без обмежень за віком" #: src/context-tile-callbacks.c:211 #, c-format msgid "Suitable for ages %d and up" msgstr "%d та Ñтарше" #: src/context-tile-callbacks.c:244 src/context-tile-callbacks.c:249 #: src/context-tile-callbacks.c:277 src/context-tile-callbacks.c:286 msgid "Unknown" msgstr "Ðевідомо" #: src/context-tile-callbacks.c:254 #, c-format msgid "Free software licensed under %s" msgstr "Вільне ПЗ за ліцензією %s" #: src/context-tile-callbacks.c:259 msgid "Free software" msgstr "Вільне ПЗ" #: src/context-tile-callbacks.c:262 msgid "Proprietary Software" msgstr "ВлаÑницька ліцензіÑ" #: src/context-tile-callbacks.c:265 #, c-format msgid "Special License: %s" msgstr "ВлаÑна ліцензіÑ: %s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:283 msgid "Free Software" msgstr "Вільне ПЗ" #: src/context-tile-callbacks.c:311 msgid "Adaptive" msgstr "Ðдаптивний" #: src/context-tile-callbacks.c:311 msgid "Desktop Only" msgstr "Лише Ð´Ð»Ñ Ñтільниць" #: src/context-tile-callbacks.c:317 msgid "Works on desktop, tablets, and phones" msgstr "Працює на ÑтільницÑÑ…, планшетах Ñ– Ñмартфонах" #: src/context-tile-callbacks.c:318 msgid "May not work on mobile devices" msgstr "Може не працювати на мобільних приÑтроÑÑ…" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:405 src/context-tile-callbacks.c:408 msgid "Low Risk" msgstr "Ðизький ризик" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:411 msgid "Medium Risk" msgstr "Помірний ризик" #. TRANSLATORS: short app safety rating label #: src/context-tile-callbacks.c:414 msgid "High Risk" msgstr "ВиÑокий ризик" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "Ðевідомі дозволи" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "Цей заÑтоÑунок не має дозволів" #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "Ðемає дозволів" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "ЗаÑтоÑунок повніÑтю закритий у піÑочниці" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "ДоÑтуп до мережі" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "Може доÑтупатиÑÑ Ð´Ð¾ мережі" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "Без доÑтупу до мережі" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "Ðе може доÑтупатиÑÑ Ð´Ð¾ мережі" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "ДоÑтуп до приÑтроїв" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "" "Може доÑтупатиÑÑ Ð´Ð¾ таких приÑтроїв, Ñк вебкамера або ігрові контролери" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "Без доÑтупу до приÑтроїв" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "" "Ðе може доÑтупатиÑÑ Ð´Ð¾ таких приÑтроїв, Ñк вебкамера або ігрові контролери" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "ДоÑтуп до приÑтроїв уведеннÑ" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "Може доÑтупатиÑÑ Ð´Ð¾ приÑтроїв уведеннÑ" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "ДоÑтуп до мікрофону та Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "" "Може доÑтупатиÑÑ Ð´Ð¾ мікрофону та програвати звуки без додаткових запитів" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "ДоÑтуп до ÑиÑтемних приÑтроїв" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "" "Може доÑтупатиÑÑ Ð´Ð¾ ÑиÑтемних приÑтроїв, котрі вимагають підвищених " "повноважень" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "ДоÑтуп до вміÑту екрану" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "Може доÑтупатиÑÑ Ð´Ð¾ вміÑту на екрані та інших вікон" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "ЗаÑтаріла ÑиÑтема вікон" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "Завжди кориÑтує заÑтарілу ÑиÑтему вікон (X11)" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "Може набувати влаÑних дозволів" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "Може доÑтупатиÑÑ Ð´Ð¾ та правити кориÑтувацькі налаштуваннÑ" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "Повний доÑтуп до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу з/до файлової ÑиÑтеми" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "Може читати та запиÑувати будь-Ñке міÑце у файловій ÑиÑтемі" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "ДоÑтуп до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу домашньої теки" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "Може читати та запиÑувати будь-Ñке міÑце Вашої домашньої теки" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "Повний доÑтуп до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ñ— ÑиÑтеми" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "Може читати будь-Ñке міÑце у файловій ÑиÑтемі" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "ДоÑтуп до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð¾Ð¼Ð°ÑˆÐ½ÑŒÐ¾Ñ— теки" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "Може читати будь-Ñке міÑце Вашої домашньої теки" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "ДоÑтуп до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу теки завантажень" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "Може читати та запиÑувати до Вашої теки завантажень" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "ДоÑтуп до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÐ¸ завантажень" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "Може читати з Вашої теки завантажень" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "Може читати та запиÑувати будь-Ñке міÑце у теці" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "Може читати будь-Ñке міÑце у теці" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "Без доÑтупу до файлової ÑиÑтеми" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "Ðе може доÑтупатиÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ñ— ÑиÑтеми" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "КориÑтує ÑиÑтемні ÑервіÑи" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "Може запитувати дані від ÑиÑтемних ÑервіÑів у обхід порталів" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "КориÑтує ÑеÑійні ÑервіÑи" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "Може запитувати дані від ÑеÑійних ÑервіÑів у обхід порталів" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "Без доÑтупу до ÑервіÑів" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "Ðе може запитувати дані в обхід порталів" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "Підтверджені розробники" #: src/safety-calculator.c:355 msgid "" "The developer of this app has been verified to be who they say they are" msgstr "ПриналежніÑть заÑтоÑунку до заÑвлених розробників було підтверджено" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "ВлаÑницький код" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "" "Початковий код не оприлюднено, відтак не може бути перевіреним та може бути " "небезпечним" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "ДоÑтупний коду" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "" "Початковий код Ñ” оприлюдненим, що дозволÑÑ” перевірити його на безпечніÑть та " "збільшує імовірніÑть, що він Ñ” безпечним" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "КориÑтує ÑиÑтемний ÑÐµÑ€Ð²Ñ–Ñ %s" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "КориÑтує ÑеÑійний ÑÐµÑ€Ð²Ñ–Ñ %s" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "КориÑтує ÑÐµÑ€Ð²Ñ–Ñ %s" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "Може бачити ÑÐµÑ€Ð²Ñ–Ñ Ñƒ обхід порталу" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "Може звʼÑзуватиÑÑ Ñ–Ð· ÑервіÑом поза порталом" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "Може володіти ÑервіÑом поза порталом" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "СуміÑніÑть із глобальним меню" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "Може показувати влаÑні меню на глобальній панелі" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "СуміÑніÑть із налаштуваннÑми KDE" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "Може бачити зміни у налаштуваннÑÑ… Ñтільниці KDE" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "Загальні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ KDE" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "Може читати деÑкі Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñтільниці KDE, Ñк-от шрифти та кольори" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "Ð¡ÐµÑ€Ð²Ñ–Ñ Ñ‚Ð°Ñ”Ð¼Ð½Ð¾Ð³Ð¾ Ñховку" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "" "Може зберігати та отримувати влаÑні паролі з допомогою ÑиÑтемної звʼÑзки " "ключів" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "СповіщеннÑ" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "Може надÑилати Ñтільничні ÑповіщеннÑ" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "СуміÑніÑть із ÑиÑтемним лотком" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "Може показувати іконку в ÑиÑтемному лотку" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "СуміÑніÑть із KDE Connect" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "Може взаємодіÑти з приÑтроÑми, зʼєднаними через KDE Connect" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "ÐавігаціÑ" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "Відкрити оглÑд" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "Відкрити бібліотеку" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "Відкрити вікно пошуку" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "Віддалені Ñховища" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "ОÑвіжити віддалені Ñховища" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "Загальні" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "ÐалаштуваннÑ" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показати клавіатурні ÑкороченнÑ" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "Закрити вікно" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "Вийти з Базару" #: src/transaction-notification.c:133 #, c-format msgid "%s Installed" msgstr "%s вÑтановлено" #: src/transaction-notification.c:135 msgid "The app is ready to be used" msgstr "Програма готова до викориÑтаннÑ" #: src/update-worker.c:263 msgid "Updates Are Out of Date" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ‚Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ актуальніÑть" #: src/update-worker.c:264 msgid "Please check for available updates" msgstr "Будь лаÑка, виконайте пошук доÑтупних оновлень" #: src/update-worker.c:449 #, c-format msgid "%u App Updated" msgid_plural "%u Apps Updated" msgstr[0] "Оновлено %u програму" msgstr[1] "Оновлено %u програми" msgstr[2] "Оновлено %u програм" msgstr[3] "Оновлено %u програму" #: src/update-worker.c:452 #, c-format msgid "%s has been updated." msgstr "Оновлено %s." #: src/update-worker.c:455 #, c-format msgid "%s and %s have been updated." msgstr "Було оновлено %s Ñ– %s." #: src/update-worker.c:459 #, c-format msgid "Includes %s, %s and %s." msgstr "Включає %s, %s Ñ– %s." #~ msgid "Exhibit app page" #~ msgstr "Сторінка заÑтоÑунку Exhibit" #~| msgctxt "Project URL Type" #~| msgid "Donate" #~ msgid "Donate Button" #~ msgstr "Кнопка пожертв" #~ msgid "Free" #~ msgstr "Вільна ліцензіÑ" #~ msgid "Empty" #~ msgstr "Порожньо" #~ msgid "Loading" #~ msgstr "Шукаємо" #~ msgid "Flathub Unavailable" #~ msgstr "Flathub недоÑтупний" #~ msgid "Content" #~ msgstr "ВміÑÑ‚" #~ msgid "Clear search" #~ msgstr "ОчиÑтити пошук" #~ msgid "Select Metainfo File" #~ msgstr "Оберіть файл metainfo" #~ msgid "Metainfo Files" #~ msgstr "Файли metainfo" #~ msgid "Preview" #~ msgstr "ПередпроглÑд" #~ msgid "User Data" #~ msgstr "КориÑтувацькі дані" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/vi.po������������������������������������������������������������������0000664�0000000�0000000�00000137575�15240005042�0016754�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Vietnamese translations for bazaar package. # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # Loc Huynh <https://github.com/hthienloc>, 2025. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-02 18:34+0700\n" "PO-Revision-Date: 2025-12-10 18:23+0700\n" "Last-Translator: Loc Huynh <https://github.com/hthienloc>\n" "Language-Team: Vietnamese <https://github.com/linux-l10n-vi>\n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 49.0\n" #: data/io.github.kolunmi.Bazaar.desktop.in:3 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:5 #: src/bz-window.blp:234 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:4 msgid "Add, remove or update flatpak software on this computer" msgstr "Thêm, xóa hoặc cập nhật phần má»m Flatpak trên máy tính này" #: data/io.github.kolunmi.Bazaar.desktop.in:10 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "" "GTK;System;PackageManager;Discover;Flatpak;Software;Store;Trình quản lý gói; " "Khám phá; Phần má»m; Cá»­a hàng;" #: data/io.github.kolunmi.Bazaar.gschema.xml:6 msgid "Hide EOL Entries" msgstr "Ẩn các mục EOL" #: data/io.github.kolunmi.Bazaar.gschema.xml:7 msgid "Hide EOL entries and entries depending on them" msgstr "Ẩn các mục EOL và các mục phụ thuá»™c vào chúng" #: data/io.github.kolunmi.Bazaar.gschema.xml:11 msgid "Show Git Forge Star Counts" msgstr "Hiển thị số sao trên Git Forge" #: data/io.github.kolunmi.Bazaar.gschema.xml:12 msgid "" "Whether to attempt to detect and show \"star counts\" for projects in the " "full view" msgstr "" "Có cố gắng phát hiện và hiển thị \"số sao\" cho các dá»± án trong chế độ xem " "chi tiết hay không" #: data/io.github.kolunmi.Bazaar.gschema.xml:16 msgid "Only Show Free Software" msgstr "Chỉ hiển thị phần má»m miá»…n phí" #: data/io.github.kolunmi.Bazaar.gschema.xml:17 msgid "Hide proprietary software" msgstr "Ẩn phần má»m độc quyá»n" #: data/io.github.kolunmi.Bazaar.gschema.xml:21 msgid "Show Only Flathub Content" msgstr "Chỉ hiển thị ná»™i dung Flathub" #: data/io.github.kolunmi.Bazaar.gschema.xml:22 msgid "Hide applications which do not originate from Flathub" msgstr "Ẩn các ứng dụng không có nguồn gốc từ Flathub" #: data/io.github.kolunmi.Bazaar.gschema.xml:26 msgid "Debounce Search Inputs" msgstr "Trì hoãn tìm kiếm" #: data/io.github.kolunmi.Bazaar.gschema.xml:27 msgid "Add a delay before searching to prevent instant replies while typing" msgstr "Thêm độ trá»… trước khi tìm kiếm để tránh phản hồi tức thì khi Ä‘ang gõ" #: data/io.github.kolunmi.Bazaar.gschema.xml:51 msgid "Global Progress Bar Theme" msgstr "Chá»§ đỠthanh tiến trình toàn cục" #: data/io.github.kolunmi.Bazaar.gschema.xml:52 msgid "Describes the look of the global progress bar" msgstr "Mô tả giao diện cá»§a thanh tiến trình toàn cục" #: data/io.github.kolunmi.Bazaar.gschema.xml:56 msgid "Saved Window Dimensions" msgstr "Kích thước cá»­a sổ đã lưu" #: data/io.github.kolunmi.Bazaar.gschema.xml:57 msgid "The window dimensions to be used by the next Bazaar window" msgstr "Kích thước cá»­a sổ sẽ được sá»­ dụng cho cá»­a sổ Bazaar tiếp theo" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install applications" msgstr "Khám phá và cài đặt ứng dụng" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A new app store for GNOME with a focus on discovering and installing " "applications and addons from Flatpak remotes, particularly Flathub." msgstr "" "Má»™t cá»­a hàng ứng dụng má»›i cho GNOME tập trung vào việc khám phá và cài đặt " "ứng dụng cùng tiện ích mở rá»™ng từ các remote Flatpak, đặc biệt là Flathub." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:14 msgid "" "It emphasizes supporting the developers who make the Linux desktop possible. " "Bazaar features a \"curated\" tab that can be configured by distributors to " "allow for a more localized experience." msgstr "" "Nó nhấn mạnh việc há»— trợ các nhà phát triển làm nên môi trưá»ng desktop " "Linux. Bazaar có tab \"chá»n lá»c\" có thể được nhà phân phối cấu hình để mang " "lại trải nghiệm địa phương hóa tốt hÆ¡n." #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:29 src/bz-application.c:661 msgid "Adam Masciola" msgstr "Adam Masciola" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:54 msgid "The home page displaying Flathub apps" msgstr "Trang chá»§ hiển thị các ứng dụng Flathub" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:58 msgid "Nucleus app page" msgstr "Trang ứng dụng Nucleus" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:62 msgid "Search page" msgstr "Trang tìm kiếm" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:66 msgid "Category page" msgstr "Trang danh mục" #: src/bz-addons-dialog.blp:14 src/bz-full-view.blp:668 msgid "Manage Add-ons" msgstr "Quản lý tiện ích mở rá»™ng" #: src/bz-addons-dialog.c:90 src/bz-full-view.blp:505 #: src/bz-transaction-view.blp:212 src/bz-window.c:1125 msgid "Remove" msgstr "Gỡ bá»" #: src/bz-addons-dialog.c:95 src/bz-full-view.blp:277 src/bz-full-view.blp:492 #: src/bz-transaction-view.blp:186 src/bz-window.c:1102 msgid "Install" msgstr "Cài đặt" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:50 #: src/bz-full-view.c:385 src/bz-full-view.c:392 msgid "Age Rating" msgstr "Xếp hạng độ tuổi" #: src/bz-age-rating-dialog.blp:40 src/bz-age-rating-dialog.c:790 msgid "?" msgstr "?" #: src/bz-age-rating-dialog.c:139 msgid "Cartoon Violence" msgstr "Bạo lá»±c hoạt hình" #: src/bz-age-rating-dialog.c:140 msgid "No information regarding cartoon violence" msgstr "Không có thông tin vá» bạo lá»±c hoạt hình" #: src/bz-age-rating-dialog.c:143 msgid "Fantasy Violence" msgstr "Bạo lá»±c giả tưởng" #: src/bz-age-rating-dialog.c:144 msgid "No information regarding fantasy violence" msgstr "Không có thông tin vá» bạo lá»±c giả tưởng" #: src/bz-age-rating-dialog.c:147 msgid "Realistic Violence" msgstr "Bạo lá»±c thá»±c tế" #: src/bz-age-rating-dialog.c:148 msgid "No information regarding realistic violence" msgstr "Không có thông tin vá» bạo lá»±c thá»±c tế" #: src/bz-age-rating-dialog.c:151 msgid "Violence Depicting Bloodshed" msgstr "Bạo lá»±c có máu" #: src/bz-age-rating-dialog.c:152 msgid "No information regarding bloodshed" msgstr "Không có thông tin vá» cảnh đổ máu" #: src/bz-age-rating-dialog.c:155 msgid "Sexual Violence" msgstr "Bạo lá»±c tình dục" #: src/bz-age-rating-dialog.c:156 msgid "No information regarding sexual violence" msgstr "Không có thông tin vá» bạo lá»±c tình dục" #: src/bz-age-rating-dialog.c:159 msgid "Alcohol" msgstr "Rượu bia" #: src/bz-age-rating-dialog.c:160 msgid "No information regarding references to alcohol" msgstr "Không có thông tin vỠđỠcập đến rượu bia" #: src/bz-age-rating-dialog.c:163 msgid "Narcotics" msgstr "Ma túy" #: src/bz-age-rating-dialog.c:164 msgid "No information regarding references to illicit drugs" msgstr "Không có thông tin vỠđỠcập đến ma túy" #: src/bz-age-rating-dialog.c:167 msgid "Tobacco" msgstr "Thuốc lá" #: src/bz-age-rating-dialog.c:168 msgid "No information regarding references to tobacco products" msgstr "Không có thông tin vỠđỠcập đến sản phẩm thuốc lá" #: src/bz-age-rating-dialog.c:171 src/bz-age-rating-dialog.c:358 msgid "Nudity" msgstr "Khá»a thân" #: src/bz-age-rating-dialog.c:172 msgid "No information regarding nudity of any sort" msgstr "Không có thông tin vá» cảnh khá»a thân" #: src/bz-age-rating-dialog.c:175 msgid "Sexual Themes" msgstr "Chá»§ đỠtình dục" #: src/bz-age-rating-dialog.c:176 msgid "No information regarding references to or depictions of sexual nature" msgstr "Không có thông tin vỠđỠcập hoặc mô tả tính chất tình dục" #: src/bz-age-rating-dialog.c:179 msgid "Profanity" msgstr "Ngôn từ thô tục" #: src/bz-age-rating-dialog.c:180 msgid "No information regarding profanity of any kind" msgstr "Không có thông tin vá» ngôn từ thô tục" #: src/bz-age-rating-dialog.c:183 msgid "Inappropriate Humor" msgstr "Hài không phù hợp" #: src/bz-age-rating-dialog.c:184 msgid "No information regarding inappropriate humor" msgstr "Không có thông tin vá» hài không phù hợp" #: src/bz-age-rating-dialog.c:187 msgid "Discrimination" msgstr "Kỳ thị" #: src/bz-age-rating-dialog.c:188 msgid "No information regarding discriminatory language of any kind" msgstr "Không có thông tin vá» ngôn ngữ kỳ thị" #: src/bz-age-rating-dialog.c:191 msgid "Advertising" msgstr "Quảng cáo" #: src/bz-age-rating-dialog.c:192 msgid "No information regarding advertising of any kind" msgstr "Không có thông tin vá» quảng cáo" #: src/bz-age-rating-dialog.c:195 msgid "Gambling" msgstr "Cá» bạc" #: src/bz-age-rating-dialog.c:196 msgid "No information regarding gambling of any kind" msgstr "Không có thông tin vá» cá» bạc" #: src/bz-age-rating-dialog.c:199 msgid "Purchasing" msgstr "Mua hàng" #: src/bz-age-rating-dialog.c:200 msgid "No information regarding the ability to spend money" msgstr "Không có thông tin vá» khả năng chi tiêu tiá»n" #: src/bz-age-rating-dialog.c:203 msgid "Chat Between Users" msgstr "Trò chuyện giữa ngưá»i dùng" #: src/bz-age-rating-dialog.c:204 msgid "No information regarding ways to chat with other users" msgstr "Không có thông tin vá» cách trò chuyện vá»›i ngưá»i dùng khác" #: src/bz-age-rating-dialog.c:207 msgid "Audio Chat Between Users" msgstr "Trò chuyện âm thanh giữa ngưá»i dùng" #: src/bz-age-rating-dialog.c:208 msgid "No information regarding ways to talk with other users" msgstr "Không có thông tin vá» cách nói chuyện vá»›i ngưá»i dùng khác" #: src/bz-age-rating-dialog.c:211 msgid "Contact Details" msgstr "Thông tin liên hệ" #: src/bz-age-rating-dialog.c:212 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "" "Không có thông tin vá» việc chia sẻ tên ngưá»i dùng mạng xã há»™i hoặc địa chỉ " "email" #: src/bz-age-rating-dialog.c:215 msgid "Identifying Information" msgstr "Thông tin nhận dạng" #: src/bz-age-rating-dialog.c:216 msgid "No information regarding sharing of user information with third parties" msgstr "Không có thông tin vá» việc chia sẻ thông tin ngưá»i dùng vá»›i bên thứ ba" #: src/bz-age-rating-dialog.c:219 msgid "Location Sharing" msgstr "Chia sẻ vị trí" #: src/bz-age-rating-dialog.c:220 msgid "No information regarding sharing of physical location with other users" msgstr "Không có thông tin vá» việc chia sẻ vị trí thá»±c vá»›i ngưá»i dùng khác" #: src/bz-age-rating-dialog.c:223 msgid "Prostitution" msgstr "Mại dâm" #: src/bz-age-rating-dialog.c:224 msgid "No information regarding references to prostitution" msgstr "Không có thông tin vỠđỠcập đến mại dâm" #: src/bz-age-rating-dialog.c:227 msgid "Adultery" msgstr "Ngoại tình" #: src/bz-age-rating-dialog.c:228 msgid "No information regarding references to adultery" msgstr "Không có thông tin vỠđỠcập đến ngoại tình" #: src/bz-age-rating-dialog.c:231 msgid "Sexualized Characters" msgstr "Nhân vật tình dục hóa" #: src/bz-age-rating-dialog.c:232 msgid "No information regarding sexualized characters" msgstr "Không có thông tin vá» nhân vật tình dục hóa" #: src/bz-age-rating-dialog.c:235 msgid "Desecration" msgstr "Báng bổ" #: src/bz-age-rating-dialog.c:236 msgid "No information regarding references to desecration" msgstr "Không có thông tin vỠđỠcập đến báng bổ" #: src/bz-age-rating-dialog.c:239 msgid "Human Remains" msgstr "Xác ngưá»i" #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "Không có thông tin vá» hiển thị xác ngưá»i chết" #: src/bz-age-rating-dialog.c:243 msgid "Slavery" msgstr "Nô lệ" #: src/bz-age-rating-dialog.c:244 msgid "No information regarding references to slavery" msgstr "Không có thông tin vỠđỠcập đến chế độ nô lệ" #: src/bz-age-rating-dialog.c:307 msgid "Does not include references to drugs" msgstr "Không đỠcập đến ma túy" #: src/bz-age-rating-dialog.c:309 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "Không chứa chá»­i thá», ngôn từ thô tục và các loại ngôn ngữ mạnh khác" #: src/bz-age-rating-dialog.c:311 msgid "Does not include ads or monetary transactions" msgstr "Không chứa quảng cáo hoặc giao dịch tiá»n tệ" #: src/bz-age-rating-dialog.c:313 msgid "Does not include sex or nudity" msgstr "Không chứa tình dục hoặc khá»a thân" #: src/bz-age-rating-dialog.c:315 msgid "Does not include uncontrolled chat functionality" msgstr "Không có chức năng trò chuyện không kiểm soát" #: src/bz-age-rating-dialog.c:317 msgid "Does not include violence" msgstr "Không chứa bạo lá»±c" #: src/bz-age-rating-dialog.c:352 msgid "Drugs" msgstr "Ma túy" #: src/bz-age-rating-dialog.c:354 msgid "Strong Language" msgstr "Ngôn ngữ mạnh" #: src/bz-age-rating-dialog.c:356 msgid "Money" msgstr "Tiá»n bạc" #: src/bz-age-rating-dialog.c:360 msgid "Social" msgstr "Xã há»™i" #: src/bz-age-rating-dialog.c:362 msgid "Violence" msgstr "Bạo lá»±c" #: src/bz-age-rating-dialog.c:564 #, c-format msgid "%s • %s" msgstr "%s • %s" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:752 src/bz-full-view.c:375 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:782 msgctxt "Age rating" msgid "All" msgstr "Má»i lứa tuổi" #: src/bz-age-rating-dialog.c:846 #, c-format msgid "%s has an unknown age rating" msgstr "%s có xếp hạng độ tuổi không xác định" #: src/bz-age-rating-dialog.c:854 #, c-format msgid "%s is suitable for everyone" msgstr "%s phù hợp vá»›i má»i ngưá»i" #: src/bz-age-rating-dialog.c:857 #, c-format msgid "%s is suitable for toddlers" msgstr "%s phù hợp vá»›i trẻ mẫu giáo" #: src/bz-age-rating-dialog.c:860 #, c-format msgid "%s is suitable for young children" msgstr "%s phù hợp vá»›i trẻ nhá»" #: src/bz-age-rating-dialog.c:863 #, c-format msgid "%s is suitable for children" msgstr "%s phù hợp vá»›i trẻ em" #: src/bz-age-rating-dialog.c:866 #, c-format msgid "%s is suitable for teenagers" msgstr "%s phù hợp vá»›i thiếu niên" #: src/bz-age-rating-dialog.c:869 #, c-format msgid "%s is suitable for adults" msgstr "%s phù hợp vá»›i ngưá»i lá»›n" #: src/bz-age-rating-dialog.c:872 #, c-format msgid "%s is suitable for %s" msgstr "%s phù hợp vá»›i %s" #: src/bz-app-size-dialog.blp:43 msgid "--- MB" msgstr "--- MB" #: src/bz-app-size-dialog.blp:53 msgid "Download Size" msgstr "Kích thước tải vá»" #: src/bz-app-size-dialog.c:55 msgid "Of the size of human DNA" msgstr "Kích thước cá»§a DNA ngưá»i" #: src/bz-app-size-dialog.c:55 msgid "3 billion base pairs" msgstr "3 tá»· cặp base" #: src/bz-app-size-dialog.c:56 msgid "Of the Linux Kernel" msgstr "Kích thước cá»§a Linux Kernel" #: src/bz-app-size-dialog.c:56 msgid "linux-6.17.tar.xz" msgstr "linux-6.17.tar.xz" #: src/bz-app-size-dialog.c:57 msgid "Of the Apollo 11 guidance computer" msgstr "Kích thước cá»§a máy tính dẫn đưá»ng Apollo 11" #: src/bz-app-size-dialog.c:57 msgid "Total ROM and RAM" msgstr "Tổng ROM và RAM" #: src/bz-app-size-dialog.c:58 msgid "Of the original Super Mario Bros" msgstr "Kích thước cá»§a Super Mario Bros gốc" #: src/bz-app-size-dialog.c:58 msgid "On the NES" msgstr "Trên NES" #: src/bz-app-size-dialog.c:59 msgid "Of the size of Wikipedia" msgstr "Kích thước cá»§a Wikipedia" #: src/bz-app-size-dialog.c:59 msgid "Without any media" msgstr "Không có media" #: src/bz-application.c:556 msgid "" "This functionality is currently disabled. It is recommended you download and " "install Flatseal to manage app permissions." msgstr "" "Chức năng này hiện bị tắt. Khuyến nghị bạn tải và cài Flatseal để quản lý " "quyá»n ứng dụng." #: src/bz-application.c:638 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:639 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:664 msgid "translator-credits" msgstr "Loc Huynh <huynhloc.contact@gmail.com>, 2025" #: src/bz-application.c:788 msgid "Performing setup..." msgstr "Äang thá»±c hiện thiết lập..." #: src/bz-application.c:817 src/bz-application.c:826 msgid "Set Up Flathub" msgstr "Thiết lập Flathub" #: src/bz-application.c:820 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub chưa được thiết lập trên hệ thống này. Bạn sẽ không thể duyệt và cài " "đặt ứng dụng trong Bazaar nếu nó không khả dụng.\n" "\n" "Bạn vẫn có thể dùng Bazaar để duyệt và gỡ bá» các ứng dụng đã cài." #: src/bz-application.c:825 src/bz-update-dialog.blp:6 msgid "Later" msgstr "Äể sau" #: src/bz-application.c:1225 msgid "Synchronizing..." msgstr "Äang đồng bá»™ hóa..." #: src/bz-application.c:1364 #, c-format msgid "Receiving %d entries..." msgstr "Äang nhận %d mục..." #: src/bz-application.c:1369 msgid "Checking for updates..." msgstr "Äang kiểm tra cập nhật..." #: src/bz-curated-view.blp:11 src/bz-flathub-page.blp:19 #: src/bz-full-view.blp:54 src/bz-installed-page.blp:15 src/bz-window.blp:183 msgid "Empty" msgstr "Trống" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "Không có lá»±a chá»n" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "" "Không có thông tin chá»n lá»c trên hệ thống này. Bạn vẫn có thể duyệt ứng dụng " "trên Flathub" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "Duyệt Flathub" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 #: src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "Ngoại tuyến" #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:40 msgid "Browser" msgstr "Trình duyệt" #: src/bz-developer-badge.c:131 msgid "Developer information not available." msgstr "Thông tin nhà phát triển không khả dụng." #: src/bz-developer-badge.c:137 src/bz-developer-badge.c:151 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "" "Quyá»n sở hữu ID ứng dụng %s chưa được xác minh và có thể là gói cá»™ng đồng." #: src/bz-developer-badge.c:155 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "Quyá»n sở hữu ID ứng dụng %s đã được đội ngÅ© Flathub xác minh thá»§ công." #: src/bz-developer-badge.c:161 #, c-format msgid "" "The ownership of the %s app ID has been verified by <b>%s</b> on <b>%s</b>." msgstr "Quyá»n sở hữu ID ứng dụng %s đã được <b>%s</b> xác minh trên <b>%s</b>." #: src/bz-developer-badge.c:168 #, c-format msgid "The ownership of the %s app ID has been verified using %s." msgstr "Quyá»n sở hữu ID ứng dụng %s đã được xác minh bằng %s." #: src/bz-developer-badge.c:172 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "Quyá»n sở hữu ID ứng dụng %s đã được xác minh." #: src/bz-entry-inspector.blp:5 msgid "Entry Inspector" msgstr "Trình kiểm tra mục" #: src/bz-entry-inspector.blp:76 msgid "Serialize" msgstr "Chuyển thành chuá»—i" #: src/bz-entry-inspector.blp:80 msgid "Convert to JSON" msgstr "Chuyển sang JSON" #: src/error.c:68 msgid "An Error Occurred" msgstr "Äã xảy ra lá»—i" #: src/error.c:89 msgid "Close" msgstr "Äóng" #: src/error.c:90 msgid "Copy and Close" msgstr "Sao chép và đóng" #: src/bz-featured-tile.blp:88 msgid "App of the Day" msgstr "Ứng dụng cá»§a ngày" #: src/bz-flathub-category.c:78 msgid "Audio & Video" msgstr "Âm thanh & Video" #: src/bz-flathub-category.c:78 msgid "Media" msgstr "Äa phương tiện" #: src/bz-flathub-category.c:78 msgid "More Audio & Video" msgstr "Thêm Âm thanh & Video" #: src/bz-flathub-category.c:79 msgid "Developer Tools" msgstr "Công cụ phát triển" #: src/bz-flathub-category.c:79 msgid "Develop" msgstr "Phát triển" #: src/bz-flathub-category.c:79 msgid "More Developer Tools" msgstr "Thêm Công cụ phát triển" #: src/bz-flathub-category.c:80 msgid "Education" msgstr "Giáo dục" #: src/bz-flathub-category.c:80 msgid "Learn" msgstr "Há»c tập" #: src/bz-flathub-category.c:80 msgid "More Education" msgstr "Thêm Giáo dục" #: src/bz-flathub-category.c:81 msgid "Gaming" msgstr "Trò chÆ¡i" #: src/bz-flathub-category.c:81 msgid "Play" msgstr "ChÆ¡i" #: src/bz-flathub-category.c:81 msgid "More Gaming" msgstr "Thêm Trò chÆ¡i" #: src/bz-flathub-category.c:82 msgid "Graphics & Photography" msgstr "Äồ há»a & Nhiếp ảnh" #: src/bz-flathub-category.c:82 msgid "Create" msgstr "Sáng tạo" #: src/bz-flathub-category.c:82 msgid "More Graphics & Photography" msgstr "Thêm Äồ há»a & Nhiếp ảnh" #: src/bz-flathub-category.c:83 msgid "Networking" msgstr "Mạng" #: src/bz-flathub-category.c:83 msgid "Internet" msgstr "Internet" #: src/bz-flathub-category.c:83 msgid "More Networking" msgstr "Thêm Mạng" #: src/bz-flathub-category.c:84 msgid "Productivity" msgstr "Năng suất" #: src/bz-flathub-category.c:84 msgid "Work" msgstr "Công việc" #: src/bz-flathub-category.c:84 msgid "More Productivity" msgstr "Thêm Năng suất" #: src/bz-flathub-category.c:85 msgid "Science" msgstr "Khoa há»c" #: src/bz-flathub-category.c:85 msgid "More Science" msgstr "Thêm Khoa há»c" #: src/bz-flathub-category.c:86 msgid "System" msgstr "Hệ thống" #: src/bz-flathub-category.c:86 msgid "More System" msgstr "Thêm Hệ thống" #: src/bz-flathub-category.c:87 msgid "Utilities" msgstr "Tiện ích" #: src/bz-flathub-category.c:87 msgid "Tools" msgstr "Công cụ" #: src/bz-flathub-category.c:87 msgid "More Utilities" msgstr "Thêm Tiện ích" #: src/bz-flathub-category.c:88 src/bz-flathub-page.blp:110 #: src/bz-flathub-page.blp:143 msgid "Trending" msgstr "Thịnh hành" #: src/bz-flathub-category.c:88 msgid "More Trending" msgstr "Thêm Thịnh hành" #: src/bz-flathub-category.c:89 src/bz-flathub-page.blp:116 #: src/bz-flathub-page.blp:176 msgid "Popular" msgstr "Phổ biến" #: src/bz-flathub-category.c:89 msgid "More Popular" msgstr "Thêm Phổ biến" #: src/bz-flathub-category.c:90 src/bz-flathub-page.blp:165 msgid "Recently Added" msgstr "Má»›i thêm gần đây" #: src/bz-flathub-category.c:90 src/bz-flathub-page.blp:122 msgid "New" msgstr "Má»›i" #: src/bz-flathub-category.c:90 msgid "More New" msgstr "Thêm Má»›i" #: src/bz-flathub-category.c:91 src/bz-flathub-page.blp:154 msgid "Recently Updated" msgstr "Má»›i cập nhật gần đây" #: src/bz-flathub-category.c:91 src/bz-flathub-page.blp:128 msgid "Updated" msgstr "Äã cập nhật" #: src/bz-flathub-category.c:91 msgid "More Updated" msgstr "Thêm Äã cập nhật" #: src/bz-flathub-category.c:92 msgid "Mobile" msgstr "Di động" #: src/bz-flathub-category.c:92 msgid "More Mobile" msgstr "Thêm Di động" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub chưa được thêm" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "Remote Flathub không được tìm thấy trong bất kỳ cài đặt Flatpak nào" #: src/bz-flathub-page.blp:48 msgid "Flathub Unavailable" msgstr "Flathub không khả dụng" #: src/bz-flathub-page.blp:49 msgid "" "We could not connect to Flathub. You can still manage and search for " "applications." msgstr "" "Không thể kết nối đến Flathub. Bạn vẫn có thể quản lý và tìm kiếm ứng dụng." #: src/bz-flathub-page.blp:52 msgid "Search Apps" msgstr "Tìm kiếm ứng dụng" #: src/bz-flathub-page.blp:261 msgid "On the Go" msgstr "Di động" #: src/bz-flathub-page.blp:273 msgid "Apps for your Linux phones and tablets" msgstr "Ứng dụng cho Ä‘iện thoại và máy tính bảng Linux" #: src/bz-flathub-page.blp:284 msgid "More Mobile Apps" msgstr "Thêm Ứng dụng di động" #: src/bz-flathub-page.blp:319 msgid "More Mobile apps" msgstr "Thêm ứng dụng di động" #: src/bz-flathub-page.blp:379 msgid "We ♥ Games" msgstr "We ♥ Games" #: src/bz-flathub-page.blp:392 msgid "Games and apps to run your favorite titles" msgstr "Trò chÆ¡i và ứng dụng để chạy các tá»±a game yêu thích" #: src/bz-flathub-page.blp:426 msgid "More Games" msgstr "Thêm Trò chÆ¡i" #: src/bz-flatpak-entry.c:574 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Trang Flathub" #: src/bz-flatpak-entry.c:595 msgctxt "Project URL Type" msgid "Project Website" msgstr "Trang web dá»± án" #: src/bz-flatpak-entry.c:599 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "Theo dõi lá»—i" #: src/bz-flatpak-entry.c:603 msgctxt "Project URL Type" msgid "FAQ" msgstr "Câu há»i thưá»ng gặp" #: src/bz-flatpak-entry.c:607 msgctxt "Project URL Type" msgid "Help" msgstr "Trợ giúp" #: src/bz-flatpak-entry.c:611 msgctxt "Project URL Type" msgid "Donate" msgstr "Quyên góp" #: src/bz-flatpak-entry.c:617 msgctxt "Project URL Type" msgid "Translate" msgstr "Dịch thuật" #: src/bz-flatpak-entry.c:621 msgctxt "Project URL Type" msgid "Contact" msgstr "Liên hệ" #: src/bz-flatpak-entry.c:625 msgctxt "Project URL Type" msgid "Source Code" msgstr "Mã nguồn" #: src/bz-flatpak-entry.c:631 msgctxt "Project URL Type" msgid "Contribute" msgstr "Äóng góp" #: src/bz-full-view.blp:21 src/bz-window.blp:126 src/bz-window.blp:380 msgid "Toggle transaction sidebar" msgstr "Bật/tắt thanh bên giao dịch" #: src/bz-full-view.blp:44 src/bz-window.blp:403 msgid "Main Menu" msgstr "Menu chính" #: src/bz-full-view.blp:58 msgid "No Results" msgstr "Không có kết quả" #: src/bz-full-view.blp:59 msgid "Try a different search query" msgstr "Thá»­ truy vấn tìm kiếm khác" #: src/bz-full-view.blp:65 src/bz-window.blp:193 msgid "Content" msgstr "Ná»™i dung" #: src/bz-full-view.blp:211 msgid "Support" msgstr "Há»— trợ" #: src/bz-full-view.blp:231 msgid "Repository Star Count" msgstr "Số sao kho lưu trữ" #: src/bz-full-view.blp:261 src/bz-full-view.blp:516 msgid "Open" msgstr "Mở" #: src/bz-full-view.blp:274 src/bz-full-view.blp:489 msgid "Download & Install Application" msgstr "Tải xuống & cài đặt ứng dụng" #: src/bz-full-view.blp:289 msgid "Uninstall Application" msgstr "Gỡ cài đặt ứng dụng" #: src/bz-full-view.blp:304 src/bz-full-view.blp:531 msgid "Install Other Version" msgstr "Cài đặt phiên bản khác" #: src/bz-full-view.blp:328 msgid "Size" msgstr "Kích thước" #: src/bz-full-view.blp:433 msgid "Downloads /mo" msgstr "Lượt tải/tháng" #: src/bz-full-view.blp:550 msgid "Stopped Receiving Core Updates" msgstr "Ngừng nhận cập nhật lõi" #: src/bz-full-view.blp:564 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "Ứng dụng này dùng runtime không còn nhận cập nhật hoặc vá bảo mật. Có thể " "trở nên không an toàn khi sá»­ dụng." #: src/bz-full-view.blp:735 msgid "Tags:" msgstr "Thẻ:" #: src/bz-full-view.c:301 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/bz-full-view.c:308 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/bz-full-view.c:315 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/bz-full-view.c:325 #, c-format msgid "%d downloads in the last 30 days" msgstr "%d lượt tải trong 30 ngày qua" #: src/bz-full-view.c:357 #, c-format msgid "Download size of %s" msgstr "Kích thước tải vá» %s" #: src/bz-full-view.c:390 msgid "All Ages" msgstr "Má»i lứa tuổi" #: src/bz-full-view.c:402 msgid "Age rating information unavailable" msgstr "Thông tin xếp hạng độ tuổi không khả dụng" #: src/bz-full-view.c:407 msgid "Suitable for all ages" msgstr "Phù hợp vá»›i má»i lứa tuổi" #: src/bz-full-view.c:409 #, c-format msgid "Suitable for ages %d and up" msgstr "Phù hợp từ %d tuổi trở lên" #: src/bz-full-view.c:440 msgid "Unknown" msgstr "Không xác định" #: src/bz-full-view.c:443 msgid "Proprietary Software" msgstr "Phần má»m độc quyá»n" #: src/bz-full-view.c:447 #, c-format msgid "Free software licensed under %s" msgstr "Phần má»m miá»…n phí theo giấy phép %s" #: src/bz-full-view.c:455 msgid "Free" msgstr "Miá»…n phí" #: src/bz-full-view.c:455 src/bz-license-dialog.blp:135 msgid "Proprietary" msgstr "Äá»™c quyá»n" #: src/bz-full-view.c:475 msgid "Adaptive" msgstr "Thích ứng" #: src/bz-full-view.c:475 msgid "Desktop Only" msgstr "Chỉ máy tính để bàn" #: src/bz-full-view.c:481 msgid "Works on desktop, tablets, and phones" msgstr "Hoạt động trên máy tính để bàn, máy tính bảng và Ä‘iện thoại" #: src/bz-full-view.c:482 msgid "May not work on mobile devices" msgstr "Có thể không hoạt động tốt trên thiết bị di động" #: src/bz-full-view.c:493 msgid "No URL" msgstr "Không có URL" #: src/bz-full-view.c:511 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "" "Ứng dụng này có giấy phép FLOSS, nghÄ©a là mã nguồn có thể được kiểm tra để " "đảm bảo an toàn." #: src/bz-full-view.c:512 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "Ứng dụng này có giấy phép độc quyá»n, nghÄ©a là mã nguồn được phát triển riêng " "tư và không thể được kiểm tra bởi bên thứ ba độc lập." #: src/bz-full-view.c:519 msgid "More Apps" msgstr "Thêm Ứng dụng" #: src/bz-full-view.c:520 #, c-format msgid "More Apps by %s" msgstr "Thêm Ứng dụng từ %s" #: src/bz-full-view.c:527 msgid "Other Apps by this Developer" msgstr "Ứng dụng khác từ nhà phát triển này" #: src/bz-full-view.c:529 src/bz-full-view.c:629 #, c-format msgid "Other Apps by %s" msgstr "Ứng dụng khác từ %s" #: src/bz-full-view.c:631 msgid "Other Apps" msgstr "Ứng dụng khác" #: src/bz-full-view.c:633 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d ứng dụng" #: src/bz-full-view.c:972 msgid "Show Less" msgstr "Thu gá»n" #: src/bz-full-view.c:972 msgid "Show More" msgstr "Hiện thêm" #: src/bz-hardware-support-dialog.blp:6 src/bz-hardware-support-dialog.blp:47 msgid "Hardware Support" msgstr "Há»— trợ phần cứng" #: src/bz-hardware-support-dialog.c:69 msgid "Keyboard support" msgstr "Há»— trợ bàn phím" #: src/bz-hardware-support-dialog.c:71 msgid "Requires keyboards" msgstr "Yêu cầu bàn phím" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends keyboards" msgstr "Khuyến nghị bàn phím" #: src/bz-hardware-support-dialog.c:73 msgid "Supports keyboards" msgstr "Há»— trợ bàn phím" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for keyboards" msgstr "Há»— trợ bàn phím không xác định" #: src/bz-hardware-support-dialog.c:76 msgid "Mouse support" msgstr "Há»— trợ chuá»™t" #: src/bz-hardware-support-dialog.c:78 msgid "Requires mice or pointing devices" msgstr "Yêu cầu chuá»™t hoặc thiết bị trá»" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends mice or pointing devices" msgstr "Khuyến nghị chuá»™t hoặc thiết bị trá»" #: src/bz-hardware-support-dialog.c:80 msgid "Supports mice or pointing devices" msgstr "Há»— trợ chuá»™t hoặc thiết bị trá»" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for mice or pointing devices" msgstr "Há»— trợ chuá»™t hoặc thiết bị trá» không xác định" #: src/bz-hardware-support-dialog.c:83 msgid "Touchscreen support" msgstr "Há»— trợ màn hình cảm ứng" #: src/bz-hardware-support-dialog.c:85 msgid "Requires touchscreens" msgstr "Yêu cầu màn hình cảm ứng" #: src/bz-hardware-support-dialog.c:86 msgid "Recommends touchscreens" msgstr "Khuyến nghị màn hình cảm ứng" #: src/bz-hardware-support-dialog.c:87 msgid "Supports touchscreens" msgstr "Há»— trợ màn hình cảm ứng" #: src/bz-hardware-support-dialog.c:88 msgid "Unknown support for touchscreens" msgstr "Há»— trợ màn hình cảm ứng không xác định" #: src/bz-hardware-support-dialog.c:192 msgid "Mobile support" msgstr "Há»— trợ di động" #: src/bz-hardware-support-dialog.c:193 msgid "Works on mobile devices" msgstr "Hoạt động trên thiết bị di động" #: src/bz-hardware-support-dialog.c:193 msgid "May not work well on mobile devices" msgstr "Có thể không hoạt động tốt trên thiết bị di động" #: src/bz-hardware-support-dialog.c:198 msgid "Desktop support" msgstr "Há»— trợ máy tính để bàn" #: src/bz-hardware-support-dialog.c:199 msgid "Works well on large screens" msgstr "Hoạt động tốt trên màn hình lá»›n" #: src/bz-hardware-support-dialog.c:233 #, c-format msgid "%s works best on specific hardware" msgstr "%s hoạt động tốt nhất trên phần cứng cụ thể" #: src/bz-hardware-support-dialog.c:240 #, c-format msgid "%s works on most devices" msgstr "%s hoạt động trên hầu hết thiết bị" #: src/bz-inspector.blp:5 msgid "Bazaar Inspector" msgstr "Trình kiểm tra Bazaar" #: src/bz-inspector.blp:33 msgid "Background Task Info:" msgstr "Thông tin tác vụ ná»n:" #: src/bz-inspector.blp:43 msgid "Enable Global Debug Mode" msgstr "Bật chế độ gỡ lá»—i toàn cục" #: src/bz-inspector.blp:50 msgid "Active Blocklists" msgstr "Danh sách chặn hoạt động" #: src/bz-inspector.blp:67 msgid "Active Curated-Configs" msgstr "Cấu hình chá»n lá»c hoạt động" #: src/bz-inspector.blp:85 msgid "All Entry Groups" msgstr "Tất cả nhóm mục" #: src/bz-inspector.blp:93 msgid "Filter..." msgstr "Lá»c..." #: src/bz-inspector.blp:134 msgid "Decache and Inspect" msgstr "Xóa bá»™ đệm và kiểm tra" #: src/bz-installed-page.blp:19 msgid "No Flatpaks Installed" msgstr "Chưa cài Flatpak nào" #: src/bz-installed-page.blp:25 src/bz-window.blp:298 msgid "Installed" msgstr "Äã cài đặt" #: src/bz-installed-page.c:395 msgid "Choose an Installation" msgstr "Chá»n cài đặt" #: src/bz-installed-page.c:398 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with? " msgstr "" "Bạn đã cài nhiá»u phiên bản cá»§a ứng dụng này. Bạn muốn tiếp tục vá»›i phiên bản " "nào? " #: src/bz-installed-page.c:402 src/bz-window.c:1101 src/bz-window.c:1124 msgid "Cancel" msgstr "Há»§y" #: src/bz-license-dialog.blp:77 msgid "Community Built" msgstr "Do cá»™ng đồng xây dá»±ng" #: src/bz-license-dialog.blp:176 msgid "Get Involved" msgstr "Tham gia" #: src/bz-license-dialog.c:115 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may not be able to contribute to this app." msgstr "" "Ứng dụng này không được phát triển công khai, chỉ nhà phát triển biết cách " "nó hoạt động. Có thể không an toàn theo cách khó phát hiện và có thể thay " "đổi mà không được giám sát.\n" "\n" "Bạn có thể không đóng góp được cho ứng dụng này." #: src/bz-license-dialog.c:124 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "Ứng dụng này được cá»™ng đồng quốc tế phát triển công khai.\n" "\n" "Bạn có thể tham gia và giúp nó tốt hÆ¡n." #: src/bz-license-dialog.c:135 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the <a href=\"%s\">%s</a> license.\n" "\n" "You can participate and help make it even better." msgstr "" "Ứng dụng này được cá»™ng đồng quốc tế phát triển công khai và phát hành theo " "giấy phép <a href=\"%s\">%s</a>.\n" "\n" "Bạn có thể tham gia và giúp nó tốt hÆ¡n." #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "Tùy chỉnh" #: src/bz-preferences-dialog.blp:23 msgid "Content Filters" msgstr "Bá»™ lá»c ná»™i dung" #: src/bz-preferences-dialog.blp:26 msgid "Free Software Only" msgstr "Chỉ phần má»m miá»…n phí" #: src/bz-preferences-dialog.blp:27 msgid "Hide proprietary applications when browsing and searching" msgstr "Ẩn ứng dụng độc quyá»n khi duyệt và tìm kiếm" #: src/bz-preferences-dialog.blp:31 msgid "Flathub Results Only" msgstr "Chỉ kết quả Flathub" #: src/bz-preferences-dialog.blp:32 msgid "" "Limit search and browse results to applications only available on Flathub" msgstr "Giá»›i hạn kết quả tìm kiếm và duyệt chỉ ở ứng dụng có trên Flathub" #: src/bz-preferences-dialog.blp:36 msgid "Hide EOL Apps" msgstr "Ẩn ứng dụng EOL" #: src/bz-preferences-dialog.blp:37 msgid "Hide apps which are no longer supported by their developers" msgstr "Ẩn ứng dụng không còn được nhà phát triển há»— trợ" #: src/bz-preferences-dialog.blp:42 src/bz-window.blp:313 msgid "Search" msgstr "Tìm kiếm" #: src/bz-preferences-dialog.blp:45 msgid "Delay Search Results" msgstr "Trì hoãn kết quả tìm kiếm" #: src/bz-preferences-dialog.blp:46 msgid "Improve results performance by debouncing search terms" msgstr "Cải thiện hiệu suất kết quả bằng cách trì hoãn từ khóa tìm kiếm" #: src/bz-preferences-dialog.blp:51 msgid "Application Details" msgstr "Chi tiết ứng dụng" #: src/bz-preferences-dialog.blp:54 msgid "Display Star Count" msgstr "Hiển thị số sao" #: src/bz-preferences-dialog.blp:55 msgid "Show the star count of an application's source code repository" msgstr "Hiển thị số sao cá»§a kho mã nguồn ứng dụng" #: src/bz-preferences-dialog.blp:80 msgid "Progress Bar" msgstr "Thanh tiến trình" #: src/bz-preferences-dialog.blp:81 msgid "Choose a theme for the progress bar!" msgstr "Chá»n chá»§ đỠcho thanh tiến trình!" #: src/bz-preferences-dialog.blp:116 msgid "" "Bazaar can fetch and display the star count from an application's source " "code repository on a remote Git forge. \n" " For projects on GitHub, rate limits may cause them not to appear." msgstr "" "Bazaar có thể lấy và hiển thị số sao từ kho mã nguồn ứng dụng trên git forge " "từ xa.\n" "Äối vá»›i dá»± án trên GitHub, giá»›i hạn tốc độ có thể khiến chúng không xuất " "hiện." #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "Màu nổi bật" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "Màu cá» LGBT+" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "Màu cá» Lesbian" #: src/bz-preferences-dialog.c:35 msgid "Transgender Pride Colors" msgstr "Màu cá» Transgender" #: src/bz-preferences-dialog.c:36 msgid "Nonbinary Pride Colors" msgstr "Màu cá» Nonbinary" #: src/bz-preferences-dialog.c:37 msgid "Bisexual Pride Colors" msgstr "Màu cá» Bisexual" #: src/bz-preferences-dialog.c:38 msgid "Asexual Pride Colors" msgstr "Màu cá» Asexual" #: src/bz-preferences-dialog.c:39 msgid "Pansexual Pride Colors" msgstr "Màu cá» Pansexual" #: src/bz-preferences-dialog.c:40 msgid "Aromantic Pride Colors" msgstr "Màu cá» Aromantic" #: src/bz-preferences-dialog.c:41 msgid "Genderfluid Pride Colors" msgstr "Màu cá» Genderfluid" #: src/bz-preferences-dialog.c:42 msgid "Polysexual Pride Colors" msgstr "Màu cá» Polysexual" #: src/bz-preferences-dialog.c:43 msgid "Omnisexual Pride Colors" msgstr "Màu cá» Omnisexual" #: src/bz-preferences-dialog.c:44 msgid "Aroace Pride Colors" msgstr "Màu cá» Aroace" #: src/bz-preferences-dialog.c:45 msgid "Agender Pride Colors" msgstr "Màu cá» Agender" #: src/bz-preferences-dialog.c:46 msgid "Genderqueer Pride Colors" msgstr "Màu cá» Genderqueer" #: src/bz-preferences-dialog.c:47 msgid "Intersex Pride Colors" msgstr "Màu cá» Intersex" #: src/bz-preferences-dialog.c:48 msgid "Demigender Pride Colors" msgstr "Màu cá» Demigender" #: src/bz-preferences-dialog.c:49 msgid "Biromantic Pride Colors" msgstr "Màu cá» Biromantic" #: src/bz-releases-dialog.blp:5 src/bz-releases-list.blp:26 msgid "Version History" msgstr "Lịch sá»­ phiên bản" #: src/bz-releases-list.c:128 #, c-format msgid "Version %s" msgstr "Phiên bản %s" #: src/bz-releases-list.c:153 msgid "No details for this release" msgstr "Không có chi tiết cho bản phát hành này" #: src/bz-rich-app-tile.blp:137 msgid "Stopped Receiving Updates" msgstr "Ngừng nhận cập nhật" #: src/bz-rich-app-tile.blp:154 msgid "Get" msgstr "Tải" #: src/bz-search-widget.blp:105 msgid "Search Apps, Games, Software" msgstr "Tìm kiếm ứng dụng, trò chÆ¡i, phần má»m" #: src/bz-search-widget.blp:149 msgid "Categories Unavailable" msgstr "Danh mục không khả dụng" #: src/bz-search-widget.blp:150 msgid "Search for apps using the search bar above." msgstr "Tìm kiếm ứng dụng bằng thanh tìm kiếm phía trên." #: src/bz-search-widget.blp:234 msgid "No Applications Found" msgstr "Không tìm thấy ứng dụng" #: src/bz-search-widget.c:241 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "Không tìm thấy kết quả cho \"%s\" trên Flathub" #: src/bz-share-list.c:64 msgid "Copied!" msgstr "Äã sao chép!" #: src/bz-share-list.c:116 msgid "Copy Link" msgstr "Sao chép liên kết" #: src/bz-share-list.c:127 msgid "Open Link" msgstr "Mở liên kết" #: src/bz-stats-dialog.blp:28 msgid "Timeline" msgstr "Dòng thá»i gian" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "Cài đặt:" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "Thế giá»›i" #: src/bz-tag-list.c:96 msgid "No Results Found" msgstr "Không tìm thấy kết quả" #: src/bz-tag-list.c:108 #, c-format msgid "Apps Tagged \"%s\"" msgstr "Ứng dụng có thẻ \"%s\"" #: src/bz-tag-list.c:109 #, c-format msgid "%d Applications" msgstr "%d ứng dụng" #: src/bz-tag-list.c:124 msgid "Search failed" msgstr "Tìm kiếm thất bại" #: src/bz-transaction-manager.c:1132 #, c-format msgid "Finished in %.02f seconds" msgstr "Hoàn thành trong %.02f giây" #: src/bz-transaction-view.blp:94 msgid "App Add-on" msgstr "Tiện ích mở rá»™ng ứng dụng" #: src/bz-transaction-view.blp:119 msgid "Runtime" msgstr "Runtime" #: src/bz-transaction-view.blp:145 src/bz-transaction-view.blp:171 msgid "Install Size" msgstr "Kích thước cài đặt" #: src/bz-transaction-view.blp:199 src/bz-window.blp:346 msgid "Update" msgstr "Cập nhật" #: src/bz-transaction-view.c:139 #, c-format msgid "Transferred %s so far" msgstr "Äã truyá»n %s" #: src/bz-transaction.c:336 msgid "Pending" msgstr "Äang chá»" #: src/bz-update-dialog.blp:7 msgid "Install Now" msgstr "Cài đặt ngay" #: src/bz-update-dialog.blp:10 msgid "Updates Are Available" msgstr "Có bản cập nhật" #: src/bz-update-dialog.blp:11 msgid "" "The following applications are eligible for updates. Would you like to " "install them?" msgstr "" "Các ứng dụng sau đủ Ä‘iá»u kiện cập nhật. Bạn có muốn cài đặt chúng không?" #: src/bz-update-dialog.c:134 #, c-format msgid "" "%d runtimes and/or addons are eligible for updates. Would you like to " "install them?" msgstr "" "%d runtime và/hoặc tiện ích mở rá»™ng đủ Ä‘iá»u kiện cập nhật. Bạn có muốn cài " "đặt chúng không?" #: src/bz-update-dialog.c:142 #, c-format msgid "Additionally, %d runtimes and/or addons will be updated." msgstr "Ngoài ra, %d runtime và/hoặc tiện ích mở rá»™ng sẽ được cập nhật." #: src/bz-window.blp:66 msgid "Inspect UI Entry" msgstr "Kiểm tra mục giao diện" #: src/bz-window.blp:73 msgid "All Debug Actions" msgstr "Tất cả hành động gỡ lá»—i" #: src/bz-window.blp:107 msgid "Tasks" msgstr "Tác vụ" #: src/bz-window.blp:163 msgid "Stop Active Tasks" msgstr "Dừng tác vụ Ä‘ang chạy" #: src/bz-window.blp:171 msgid "Clear History" msgstr "Xóa lịch sá»­" #: src/bz-window.blp:187 msgid "No Tasks Yet" msgstr "Chưa có tác vụ" #: src/bz-window.blp:258 msgid "Refreshing Store Content" msgstr "Äang làm má»›i ná»™i dung cá»­a hàng" #: src/bz-window.blp:273 msgid "Curated" msgstr "Chá»n lá»c" #: src/bz-window.blp:286 msgid "Flathub" msgstr "Flathub" #: src/bz-window.blp:330 msgid "Sync" msgstr "Äồng bá»™" #: src/bz-window.blp:466 msgid "_Donate to Bazaar â¤ï¸" msgstr "_Quyên góp cho Bazaar â¤ï¸" #: src/bz-window.blp:473 msgid "_Preferences" msgstr "_Tùy chỉnh" #: src/bz-window.blp:478 msgid "_Keyboard Shortcuts" msgstr "_Phím tắt" #: src/bz-window.blp:483 msgid "_About Bazaar" msgstr "_Giá»›i thiệu Bazaar" #: src/bz-window.blp:490 msgid "_Quit Bazaar" msgstr "Thoát _Bazaar" #: src/bz-window.blp:499 msgid "Open Bazaar Inspector" msgstr "Mở Trình kiểm tra Bazaar" #: src/bz-window.c:844 msgid "" "The ability to inspect and install local .flatpak bundle files is coming " "soon! In the meantime, try running\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "on the command line." msgstr "" "Khả năng kiểm tra và cài đặt tập tin .flatpak bundle cục bá»™ sẽ sá»›m có! Trong " "lúc chỠđợi, hãy thá»­ chạy\n" "\n" "flatpak install --bundle your-bundle.flatpak\n" "\n" "trên dòng lệnh." #: src/bz-window.c:966 msgid "Can't do that right now!" msgstr "Hiện không thể thá»±c hiện!" #: src/bz-window.c:1095 #, c-format msgid "Install %s?" msgstr "Cài đặt %s?" #: src/bz-window.c:1098 msgid "May install additional shared components" msgstr "Có thể cài đặt thêm thành phần chia sẻ" #: src/bz-window.c:1117 #, c-format msgid "Remove %s?" msgstr "Gỡ bá» %s?" #: src/bz-window.c:1121 #, c-format msgid "" "It will not be possible to use %s after it is uninstalled.\n" "\n" "Settings and user data will be kept." msgstr "" "Sẽ không thể sá»­ dụng %s sau khi gỡ bá».\n" "\n" "Cài đặt và dữ liệu ngưá»i dùng sẽ được giữ lại." #: src/bz-window.c:1286 msgid "Resume Current Tasks" msgstr "Tiếp tục tác vụ hiện tại" #: src/bz-window.c:1292 msgid "Pause Current Tasks" msgstr "Tạm dừng tác vụ hiện tại" #: src/bz-world-map.c:523 #, c-format msgid "%s: %'u downloads" msgstr "%s: %'u lượt tải" #: src/gtk/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "Chung" #: src/gtk/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Dialog" msgstr "Mở há»™p thoại tìm kiếm" #: src/gtk/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Preferences" msgstr "Mở tùy chỉnh" #: src/gtk/shortcuts-dialog.blp:19 msgctxt "shortcut window" msgid "Refresh" msgstr "Làm má»›i" #: src/gtk/shortcuts-dialog.blp:24 msgctxt "shortcut window" msgid "Toggle Transaction Manager" msgstr "Bật/tắt quản lý giao dịch" #: src/gtk/shortcuts-dialog.blp:29 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Hiển thị phím tắt" #: src/gtk/shortcuts-dialog.blp:34 msgctxt "shortcut window" msgid "Quit" msgstr "Thoát" �����������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/zh_CN.po���������������������������������������������������������������0000664�0000000�0000000�00000254575�15240005042�0017337�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # <>, 2025-2026. # msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-05-06 14:13+0800\n" "PO-Revision-Date: 2026-05-09 19:20+0800\n" "Last-Translator: <>\n" "Language-Team: Abkhazian\n" "Language: ab\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Gtranslator 50.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:45 #: src/bz-window.c:374 src/bz-window.c:375 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "添加ã€å¸è½½å’Œæ›´æ–°æ­¤ç”µè„‘上的 Flatpak 软件" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "新窗å£" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and manage applications" msgstr "å‘现和管ç†åº”用" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and addons, particularly from Flathub." msgstr "" "一款专为 Linux 设计的快速且现代的应用商店,致力于从 Flatpak 远程仓库(特别是 " "Flathub)中å‘现并安装应用程åºåŠæ’件。" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "排队安装多个程åºï¼ŒåŒæ—¶ç»§ç»­æµè§ˆ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "è½»æ¾åœ°æ£€æŸ¥åº”用æƒé™" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "登录 Flathub ä»¥ç®¡ç†æ”¶è—项目" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "直接从GNOME Shell中æœç´¢åº”用" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:30 src/bz-application.c:758 msgid "The Bazaar Contributors" msgstr "Bazaar 的贡献者们" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "展示 Flathub 应用程åºçš„主页" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "展示应用页é¢" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "库" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "æœç´¢é¡µ" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "分类页" #: src/bz-addon-tile.blp:49 src/bz-installed-tile.blp:64 #: src/bz-rich-app-tile.blp:140 msgid "Stopped Receiving Updates" msgstr "åœæ­¢æŽ¥æ”¶æ›´æ–°" #: src/bz-addon-tile.c:155 src/bz-favorites-tile.c:157 #: src/bz-rich-app-tile.blp:172 msgid "Uninstall" msgstr "å¸è½½" #: src/bz-addon-tile.c:157 src/bz-favorites-tile.c:159 msgid "Install" msgstr "安装" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-full-view.blp:606 #: src/bz-installed-tile.blp:101 msgid "Manage Add-Ons" msgstr "管ç†é™„加组件" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "æ— å¯è§é™„加组件" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "您当å‰çš„过滤å好设置éšè—了所有已知的附加组件。请å°è¯•调整它们。" #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "附加组件" #: src/bz-addons-dialog.blp:202 src/bz-full-view.blp:404 msgid "Downloads/Month" msgstr "次下载/月" #: src/bz-addons-dialog.blp:229 src/bz-full-view.blp:440 msgid "Stopped Receiving Core Updates" msgstr "åœæ­¢æŽ¥æ”¶æ ¸å¿ƒæ›´æ–°" #: src/bz-addons-dialog.blp:243 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "此应用使用的è¿è¡Œæ—¶çŽ¯å¢ƒå·²ä¸å†æŽ¥æ”¶æ›´æ–°æˆ–安全修å¤ï¼Œç»§ç»­ä½¿ç”¨å¯èƒ½å­˜åœ¨å®‰å…¨éšæ‚£" #: src/bz-addons-dialog.c:330 #, c-format msgid "Add-on for %s" msgstr "%s 的附加组件" #: src/bz-addons-dialog.c:344 src/bz-full-view.c:568 msgid "Show Less" msgstr "显示更少" #: src/bz-addons-dialog.c:344 src/bz-full-view.c:568 msgid "Show More" msgstr "显示更多" #: src/bz-addons-dialog.c:394 msgid "Download Stats" msgstr "下载状æ€" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "年龄分级" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "å¡é€šæš´åŠ›" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "æ— å¡é€šæš´åŠ›ç›¸å…³ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "幻想暴力" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "无关于幻想暴力的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "写实暴力" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "无关于写实暴力的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "暴力æç»˜æµè¡€åœºé¢" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "无关于血腥的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "性暴力" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "无关于性暴力的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "é…’ç²¾" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "无关于酒精的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "毒å“" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "æ— ä½¿ç”¨éžæ³•è¯ç‰©çš„ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "烟è‰" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "无关于烟è‰äº§å“的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "裸露" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "无任何ç§ç±»çš„裸体信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "性主题" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "无关于æåŠå’Œæç»˜æ€§çš„ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "è„è¯" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "ä¸å«ä»»ä½•ç§ç±»çš„è„è¯ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "ä¸é€‚当幽默" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "无关于ä¸å½“幽默的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "歧视" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "无关于歧视语言的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "广告" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "无任任何广告信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "赌åš" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "无任何赌åšå†…容" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "è´­ä¹°" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "无关于花钱能力的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "用户间交æµ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "æ— å…³äºŽä¸Žå…¶ä»–ç”¨æˆ·æ–‡å­—äº¤æµæ–¹å¼çš„ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "用户è§è¯­éŸ³äº¤æµ" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "æ— å…³äºŽä¸Žå…¶ä»–ç”¨æˆ·è¯­éŸ³äº¤æµæ–¹å¼çš„ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "è”系详情" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "未æä¾›æœ‰å…³åˆ†äº«ç¤¾äº¤åª’ä½“ç”¨æˆ·åæˆ–电å­é‚®ä»¶åœ°å€çš„ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "识别信æ¯" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "未æä¾›ä¸Žç¬¬ä¸‰æ–¹å…±äº«ç”¨æˆ·ä¿¡æ¯çš„相关信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "ä½ç½®å…±äº«" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "未æä¾›ä¸Žå…¶ä»–用户共享物ç†ä½ç½®çš„ä¿¡æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "å–æ·«" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "未æåŠæœ‰å…³å–淫的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "通奸" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "没有关于通奸相关信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "性化角色" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "未æä¾›æœ‰å…³æ€§åŒ–角色的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "亵渎" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "没有关于亵渎行为的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "人类é—骸" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "没有关于å¯è§çš„人类é—骸的信æ¯" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "奴隶制" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "ä¸å«æåŠå¥´éš¶åˆ¶çš„ä¿¡æ¯" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "ä¸åŒ…括对毒å“çš„æåŠ" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "ä¸åŒ…括咒骂ã€è„è¯åŠå…¶ä»–类型的强烈言辞" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "ä¸åŒ…括广告或货å¸äº¤æ˜“" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "ä¸åŒ…嫿€§å†…容或裸露镜头" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "ä¸åŒ…å«ä¸å—控制的èŠå¤©åŠŸèƒ½" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "ä¸åŒ…嫿š´åŠ›" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "è¯å“" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "粗俗语言" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "金钱" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "社交" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "暴力" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "所有" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s 的年龄分级未知" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s é€‚åˆæ‰€æœ‰äºº" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s 适åˆå¹¼å„¿ä½¿ç”¨" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s 适åˆå„¿ç«¥" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s 适åˆé’å°‘å¹´" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s é€‚åˆæˆäººç”¨æˆ·" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s é€‚åˆ %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "系统文件夹 %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "用户主文件夹 %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "主机系统文件夹" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "主机系统é…ç½®æ¥è‡ª /etc" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "桌é¢å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "æ¡Œé¢æ–‡ä»¶å¤¹" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "æ–‡æ¡£å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "文档文件夹" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "音ä¹å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "éŸ³ä¹æ–‡ä»¶å¤¹" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "å›¾ç‰‡å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "图片文件夹" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "å…¬å…±å…±äº«å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "公共共享文件夹" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "è§†é¢‘å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "视频文件夹" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "模æ¿å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "æ¨¡æ¿æ–‡ä»¶å¤¹" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "ç”¨æˆ·ç¼“å­˜å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "用户缓存文件夹" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "用户é…ç½®å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "用户é…置文件夹" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "用户数æ®å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "ç”¨æˆ·æ•°æ®æ–‡ä»¶å¤¹" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "用户è¿è¡Œæ—¶å­æ–‡ä»¶å¤¹ %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "用户è¿è¡Œæ—¶æ–‡ä»¶å¤¹" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "对 %s 的文件系统访问" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "未知文件系统路径" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:52 msgid "Download Size" msgstr "下载大å°" #: src/bz-app-size-dialog.blp:53 msgid "Amount to download from the internet" msgstr "从互è”网下载的大å°" #: src/bz-app-size-dialog.blp:73 msgid "Installed Size" msgstr "已安装å ç”¨" #: src/bz-app-size-dialog.blp:74 msgid "Size on Disk" msgstr "硬盘å ç”¨" #: src/bz-app-size-dialog.blp:121 msgid "Open user data folder" msgstr "æ‰“å¼€ç”¨æˆ·æ•°æ®æ–‡ä»¶å¤¹" #: src/bz-app-size-dialog.blp:131 msgid "User Data Size" msgstr "用户数æ®å¤§å°" #: src/bz-app-size-dialog.blp:132 msgid "Caches, settings, and other app data" msgstr "缓存ã€è®¾ç½®å’Œå…¶ä»–应用数æ®" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "已安装è¿è¡Œæ—¶å ç”¨" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "è¿è¡Œæ—¶ä¸‹è½½å¤§å°" #: src/bz-app-size-dialog.c:204 msgid "App Size" msgstr "应用大å°" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:104 src/bz-rich-app-tile.c:304 msgid "Verified" msgstr "已验è¯" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 #: src/bz-releases-list.c:206 msgid "Installed" msgstr "已安装" #: src/bz-application.c:737 msgctxt "About Dialog Developer Credit" msgid "Adam Masciola <kolunmi@posteo.net>" msgstr "Adam Masciola <kolunmi@posteo.net>" #: src/bz-application.c:738 msgctxt "About Dialog Developer Credit" msgid "Alexander Vanhee" msgstr "Alexander Vanhee" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:761 msgid "translator-credits" msgstr "Shinsei <shinsei@anche.no>, 2025" #: src/bz-application.c:771 msgid "Special Thanks" msgstr "特别感谢" #: src/bz-application.c:829 msgid "Logged Out Successfully!" msgstr "登出æˆåŠŸï¼" #: src/bz-application.c:968 msgid "Performing setup…" msgstr "正在执行设置..." #: src/bz-application.c:1054 msgid "Set Up System Flathub?" msgstr "在系统é…ç½® Flathub?" #: src/bz-application.c:1057 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "未设置 Flathub 远程仓库。Bazaar 需è¦åœ¨ç³»ç»Ÿ Flatpak 安装中é…ç½® Flathub æ‰èƒ½æµ" "览和安装应用程åºã€‚\n" "\n" "您ä»ç„¶å¯ä»¥ä½¿ç”¨ Bazaar æ¥æµè§ˆå’Œç§»é™¤å·²å®‰è£…的应用。" #: src/bz-application.c:1064 msgid "Set Up Flathub?" msgstr "注册 Flathub?" #: src/bz-application.c:1067 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "此系统未设置 Flathub。如果 Flathub ä¸å¯ç”¨ï¼Œæ‚¨å°†æ— æ³•在 Bazaar 中æµè§ˆå’Œå®‰è£…应用" "程åºã€‚\n" "\n" "您ä»å¯ä½¿ç”¨ Bazaar æµè§ˆå’Œå¸è½½å·²å®‰è£…的应用程åºã€‚" #: src/bz-application.c:1073 msgid "Later" msgstr "ç¨åŽ" #: src/bz-application.c:1074 msgid "Set Up Flathub" msgstr "注册 Flathub" #: src/bz-application.c:1291 src/bz-application.c:1778 msgid "Checking for updates…" msgstr "正在检查更新" #: src/bz-application.c:1411 msgid "A backend error occurred" msgstr "åŽç«¯å‘生错误" #: src/bz-application.c:1611 src/bz-application.c:3655 src/bz-window.blp:69 msgid "Refreshing…" msgstr "正在刷新……" #: src/bz-application.c:1775 src/bz-application.c:3653 #, c-format msgid "Loading %d apps…" msgstr "正在加载 %d 应用" #: src/bz-application.c:1833 msgid "Failed to open file" msgstr "文件打开文件失败" #: src/bz-application.c:1918 msgid "An initialization error occurred" msgstr "一个åˆå§‹åŒ–错误å‘生了" #: src/bz-application.c:2339 msgid "Failed to check for updates" msgstr "无法检查更新" #: src/bz-application.c:3373 msgid "Could not find app" msgstr "无法找到应用" #: src/bz-application.c:3406 msgid "Failed to load metainfo" msgstr "无法加载元信æ¯" #: src/bz-application.c:3657 msgid "Writing to cache…" msgstr "正在写入缓存" #: src/bz-apps-page.blp:86 msgid "Show All" msgstr "展示所有" #: src/bz-apps-page.c:229 #, c-format msgid "All \"%s\"" msgstr "所有 \"%s\"" #: src/bz-apps-page.c:478 src/bz-tag-list.c:91 #, c-format msgid "%d Applications" msgstr "%d 个应用" #: src/bz-appstream-parser.c:303 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub 页é¢" #: src/bz-appstream-parser.c:324 msgctxt "Project URL Type" msgid "Project Website" msgstr "项目网站" #: src/bz-appstream-parser.c:328 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "问题追踪器" #: src/bz-appstream-parser.c:332 msgctxt "Project URL Type" msgid "FAQ" msgstr "FAQ" #: src/bz-appstream-parser.c:336 msgctxt "Project URL Type" msgid "Help" msgstr "帮助" #: src/bz-appstream-parser.c:340 msgctxt "Project URL Type" msgid "Donate" msgstr "æåŠ©" #: src/bz-appstream-parser.c:346 msgctxt "Project URL Type" msgid "Translate" msgstr "翻译" #: src/bz-appstream-parser.c:350 msgctxt "Project URL Type" msgid "Contact" msgstr "è”ç³»" #: src/bz-appstream-parser.c:354 msgctxt "Project URL Type" msgid "Source Code" msgstr "æºä»£ç " #: src/bz-appstream-parser.c:360 msgctxt "Project URL Type" msgid "Contribute" msgstr "贡献" #: src/bz-bundle-install-dialog.c:240 msgid "Installing" msgstr "正在安装" #: src/bz-bundle-install-dialog.c:254 msgid "Installed!" msgstr "已安装ï¼" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "过去 30 天内下载 %d 次" #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:389 #: src/context-tile-callbacks.c:406 msgid "N/A" msgstr "N/A" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s è¿è¡Œæ—¶" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "下载" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "大å°ä¿¡æ¯ä¸å¯ç”¨" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "%s 的下载大å°" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "全年龄" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "年龄分级信æ¯ä¸å¯ç”¨" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "适åˆå…¨å¹´é¾„段" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "适åˆå¹´é¾„为 %d å²åŠä»¥ä¸Š" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:284 msgid "Unknown" msgstr "未知" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "æ ¹æ® %s 许å¯è¯æŽˆæƒçš„自由软件" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "自由软件" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "专有软件" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "特殊许å¯è¯ï¼š %s" #: src/context-tile-callbacks.c:281 msgid "Free" msgstr "自由" #: src/context-tile-callbacks.c:287 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "专有" #: src/context-tile-callbacks.c:289 src/bz-license-dialog.c:135 msgid "Special License" msgstr "特殊许å¯" #: src/context-tile-callbacks.c:309 msgid "Adaptive" msgstr "自适应" #: src/context-tile-callbacks.c:309 msgid "Desktop Only" msgstr "仅桌é¢ç«¯" #: src/context-tile-callbacks.c:315 msgid "Works on desktop, tablets, and phones" msgstr "适用于å°å¼æœºã€å¹³æ¿ç”µè„‘和手机" #: src/context-tile-callbacks.c:316 msgid "May not work on mobile devices" msgstr "å¯èƒ½æ— æ³•在移动设备上使用" #: src/context-tile-callbacks.c:396 src/bz-safety-dialog.blp:31 msgid "Safe" msgstr "安全" #: src/context-tile-callbacks.c:398 src/context-tile-callbacks.c:400 msgid "Low Risk" msgstr "低风险" #: src/context-tile-callbacks.c:402 msgid "Medium Risk" msgstr "中等风险" #: src/context-tile-callbacks.c:404 msgid "High Risk" msgstr "高风险" #: src/bz-curated-view.blp:11 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 #: src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "空" #: src/bz-curated-view.blp:15 msgid "No Curation" msgstr "无精选应用程åº" #: src/bz-curated-view.blp:16 msgid "" "There is no curation information provided on this system. You can still " "browse applications on Flathub" msgstr "该系统未æä¾›ç­–展信æ¯ã€‚您ä»å¯åœ¨ Flathub 上æµè§ˆåº”用程åºã€‚" #: src/bz-curated-view.blp:18 msgid "Browse Flathub" msgstr "æµè§ˆ Flathub" #: src/bz-curated-view.blp:29 src/bz-curated-view.blp:33 #: src/bz-flathub-page.blp:30 src/bz-flathub-page.blp:34 msgid "Offline" msgstr "离线" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:39 src/bz-flathub-page.blp:49 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "æµè§ˆå™¨" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "未验è¯" #: src/bz-developer-badge.c:210 msgid "Developer information not available." msgstr "无法获å–å¼€å‘者信æ¯" #: src/bz-developer-badge.c:216 src/bz-developer-badge.c:230 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "该 %s 应用 ID 的所有æƒå°šæœªéªŒè¯ï¼Œå¯èƒ½æ˜¯ä¸€ä¸ªç¤¾åŒºåŒ…。" #: src/bz-developer-badge.c:234 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "该 %s 应用 ID 的所有æƒå·²ç”± Flathub 团队手动验è¯ã€‚" #: src/bz-developer-badge.c:250 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "%1$s 应用 ID 的所有æƒå·²éªŒè¯ä¸ºæ˜¯ <b>%3$s</b> 上的 <b>%2$s</b>。" #: src/bz-developer-badge.c:257 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "%1$s 应用 ID 的所有æƒå·²é€šè¿‡ %2$s 验è¯ã€‚" #: src/bz-developer-badge.c:261 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "该 %s 应用 ID 的所有æƒå·²é€šè¿‡éªŒè¯ã€‚" #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "完整å‘布说明" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "æ­£æ˜¯æœ‰äº†åƒæ‚¨è¿™æ ·çš„用户,Bazaar æ‰èƒ½é¡ºåˆ©å‘行ï¼" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "æˆ‘çƒ­çˆ±å¼€å‘ Bazaarï¼Œä½†æˆ‘ä¸€ä¸ªäººçš„åŠ›é‡æœ‰é™ã€‚å¦‚æžœæ‚¨æ„¿æ„æ”¯æŒåŽç»­çš„å¼€å‘工作,请考虑" "在 Ko-Fi æåŠ©æˆ‘ï¼š" #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "å‘ Bazaar æåŠ© â¤ï¸" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "看看 %s 更新了啥" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "å‘布于 %B %-e, %Y" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "选择和安装" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "您已安装此应用的多个版本。您希望用哪一个继续?" #: src/bz-entry-group-util.c:80 msgid "Cancel" msgstr "å–æ¶ˆ" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "仅适用于当å‰ç”¨æˆ·" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "当å‰ç”¨æˆ·" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "所有用户" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 #: src/bz-safety-dialog.blp:50 msgid "Details" msgstr "详细信æ¯" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "å¤åˆ¶" #: src/bz-error-dialog.c:56 src/bz-share-list.c:62 msgid "Copied!" msgstr "å·²å¤åˆ¶ï¼" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "æ”¶è—æ•°" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "无法更新已收è—" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "登录 Flathub ä»¥ç®¡ç†æ”¶è—项目" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "登录" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:360 msgid "Favorites" msgstr "æ”¶è—" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:144 msgid "Install All" msgstr "安装全部" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "加载中" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "æ— æ”¶è—" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "您标记为收è—的应用程åºå°†åœ¨æ­¤å¤„显示" #: src/bz-favorites-tile.blp:70 src/bz-installed-tile.blp:78 msgid "Support This Application" msgstr "æ”¯æŒæ­¤åº”用程åº" #: src/bz-favorites-tile.blp:119 msgid "Remove From Favorites" msgstr "从收è—中移除" #: src/bz-favorites-tile.c:357 msgid "Failed to remove favorite" msgstr "无法从收è—中移除" #: src/bz-featured-carousel.blp:31 msgid "Previous" msgstr "上一页" #: src/bz-featured-carousel.blp:54 msgid "Next" msgstr "下一页" #: src/bz-flathub-category.c:93 msgid "Editing" msgstr "编辑" #: src/bz-flathub-category.c:94 msgid "Midi" msgstr "MIDI" #: src/bz-flathub-category.c:95 msgid "Mixer" msgstr "调音" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:96 src/bz-search-pill-list.c:77 msgid "Music" msgstr "音ä¹" #: src/bz-flathub-category.c:97 msgid "Player" msgstr "播放器" #: src/bz-flathub-category.c:98 msgid "Recorder" msgstr "录音" #: src/bz-flathub-category.c:99 msgid "Sequencer" msgstr "ç§‘å­¦" #: src/bz-flathub-category.c:100 msgid "Tuner" msgstr "è°ƒè°å™¨" #: src/bz-flathub-category.c:101 msgid "TV" msgstr "电视" #: src/bz-flathub-category.c:106 msgid "Emulation" msgstr "模拟器" #: src/bz-flathub-category.c:107 msgid "Action" msgstr "动作" #: src/bz-flathub-category.c:108 msgid "Adventure" msgstr "冒险" # ä¸ç”¨â€œè¡—机“éµä»Ž https://flathub.org/zh-Hans/apps/category/game/subcategories/ArcadeGame 的翻译 #: src/bz-flathub-category.c:109 msgid "Arcade" msgstr "游ä¹ä¸­å¿ƒ" #: src/bz-flathub-category.c:110 msgid "Blocks" msgstr "æ–¹å—" #: src/bz-flathub-category.c:111 msgid "Board" msgstr "图æ¿" #: src/bz-flathub-category.c:112 msgid "Card" msgstr "å¡ç‰‡" #: src/bz-flathub-category.c:113 msgid "Kids" msgstr "å„¿ç«¥" #: src/bz-flathub-category.c:114 msgid "Logic" msgstr "逻辑" #: src/bz-flathub-category.c:115 msgid "Role Playing" msgstr "角色扮演" #: src/bz-flathub-category.c:116 msgid "Shooter" msgstr "射手" #: src/bz-flathub-category.c:117 msgid "Simulation" msgstr "模拟" #: src/bz-flathub-category.c:118 msgid "Sports" msgstr "体育" #: src/bz-flathub-category.c:119 msgid "Strategy" msgstr "战略" #: src/bz-flathub-category.c:124 msgid "Audio & Video" msgstr "音频与视频" #: src/bz-flathub-category.c:124 msgid "Media" msgstr "媒体" #: src/bz-flathub-category.c:124 msgid "More Audio & Video" msgstr "更多音频与视频" #: src/bz-flathub-category.c:125 msgid "Developer Tools" msgstr "å¼€å‘者工具" #: src/bz-flathub-category.c:125 msgid "Develop" msgstr "å¼€å‘" #: src/bz-flathub-category.c:125 msgid "More Developer Tools" msgstr "更多开å‘者工具" #: src/bz-flathub-category.c:126 msgid "Education" msgstr "教育" #: src/bz-flathub-category.c:126 msgid "Learn" msgstr "学习" #: src/bz-flathub-category.c:126 msgid "More Education" msgstr "更多教育" #: src/bz-flathub-category.c:127 msgid "Gaming" msgstr "游æˆ" #: src/bz-flathub-category.c:127 msgid "Play" msgstr "游玩" #: src/bz-flathub-category.c:127 msgid "More Gaming" msgstr "更多游æˆ" #: src/bz-flathub-category.c:128 msgid "Graphics & Photography" msgstr "图形与摄影" #: src/bz-flathub-category.c:128 msgid "Create" msgstr "创造" #: src/bz-flathub-category.c:128 msgid "More Graphics & Photography" msgstr "更多图形与摄影" #: src/bz-flathub-category.c:129 msgid "Networking" msgstr "网络" #: src/bz-flathub-category.c:129 msgid "Internet" msgstr "互è”网" #: src/bz-flathub-category.c:129 msgid "More Networking" msgstr "更多网络应用" #: src/bz-flathub-category.c:130 msgid "Productivity" msgstr "生产力" #: src/bz-flathub-category.c:130 msgid "Work" msgstr "工作" #: src/bz-flathub-category.c:130 msgid "More Productivity" msgstr "更多生产力" #: src/bz-flathub-category.c:131 msgid "Science" msgstr "ç§‘å­¦" #: src/bz-flathub-category.c:131 msgid "More Science" msgstr "更多科学" #: src/bz-flathub-category.c:132 msgid "System" msgstr "系统" #: src/bz-flathub-category.c:132 msgid "More System" msgstr "更多系统" #: src/bz-flathub-category.c:133 msgid "Utilities" msgstr "实用工具" #: src/bz-flathub-category.c:133 msgid "Tools" msgstr "工具" #: src/bz-flathub-category.c:133 msgid "More Utilities" msgstr "更多实用工具" #: src/bz-flathub-category.c:134 src/bz-flathub-page.blp:116 #: src/bz-flathub-page.blp:148 msgid "Trending" msgstr "飙å‡" #: src/bz-flathub-category.c:134 msgid "More Trending" msgstr "更多飙å‡åº”用" #: src/bz-flathub-category.c:135 src/bz-flathub-page.blp:122 #: src/bz-flathub-page.blp:178 msgid "Popular" msgstr "人气" #: src/bz-flathub-category.c:135 msgid "More Popular" msgstr "更多人气应用" #: src/bz-flathub-category.c:136 src/bz-flathub-page.blp:168 msgid "Recently Added" msgstr "最近添加" #: src/bz-flathub-category.c:136 src/bz-flathub-page.blp:128 msgid "New" msgstr "新应用" #: src/bz-flathub-category.c:136 msgid "More New" msgstr "更多新应用" #: src/bz-flathub-category.c:137 src/bz-flathub-page.blp:158 msgid "Recently Updated" msgstr "最近更新" #: src/bz-flathub-category.c:137 src/bz-flathub-page.blp:134 msgid "Updated" msgstr "最近更新" #: src/bz-flathub-category.c:137 msgid "More Updated" msgstr "更多最近更新应用" #: src/bz-flathub-category.c:138 msgid "Mobile" msgstr "移动应用" #: src/bz-flathub-category.c:138 msgid "More Mobile" msgstr "更多移动应用" #: src/bz-flathub-category.c:139 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:139 msgid "More Adwaita" msgstr "更多 Adwaita 应用" #: src/bz-flathub-category.c:140 msgid "KDE Apps" msgstr "KDE 应用" #: src/bz-flathub-category.c:140 msgid "More KDE Apps" msgstr "更多 KDE 应用" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "Flathub 未添加" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "您的 Flatpak 安装中未找到 Flathub 远程仓库" #: src/bz-flathub-page.blp:35 msgid "Flathub returned an error" msgstr "Flathub 返回错误" #: src/bz-flathub-page.blp:41 msgid "Retry Flathub Connection" msgstr "é‡è¯• Flathub 连接" #: src/bz-flathub-page.blp:57 msgid "Flathub Unavailable" msgstr "Flathub ä¸å¯ç”¨" #: src/bz-flathub-page.blp:58 msgid "" "We could not connect to Flathub. You can still manage and search for " "applications." msgstr "我们无法连接到 Flathub。您ä»ç„¶å¯ä»¥ç®¡ç†å’Œæœç´¢åº”用程åºã€‚" #: src/bz-flathub-page.blp:61 msgid "Search Apps" msgstr "æœç´¢åº”用程åº" #: src/bz-flathub-page.blp:200 msgid "App of the Day" msgstr "æ¯æ—¥åº”用" #: src/bz-flathub-page.blp:264 msgid "On the Go" msgstr "éšæ—¶éšåœ°" #: src/bz-flathub-page.blp:276 msgid "Apps for your Linux phones and tablets" msgstr "适用于您的 Linux 手机和平æ¿ç”µè„‘的应用" #: src/bz-flathub-page.blp:287 src/bz-flathub-page.blp:322 msgid "More Mobile Apps" msgstr "更多移动应用" #: src/bz-flathub-page.blp:378 msgid "We​ ♥​ Games" msgstr "我们 ♥ 游æˆ" #: src/bz-flathub-page.blp:391 msgid "Games and apps to run your favorite titles" msgstr "è¿è¡Œæ‚¨å–œçˆ±çš„æ¸¸æˆå’Œåº”用" #: src/bz-flathub-page.blp:425 msgid "More Games" msgstr "更多游æˆ" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 #: src/bz-library-page.blp:82 msgid "No Results" msgstr "无结果" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "å°è¯•ä¸åŒçš„æœç´¢å…³é”®å­—" #: src/bz-full-view.blp:41 msgid "Content" msgstr "内容" #: src/bz-full-view.blp:105 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "这是一个本地预览,部分细节å¯èƒ½ä¸Žå·²å‘布的列表有所ä¸åŒ" #: src/bz-full-view.blp:108 msgid "Preview Store Appearance" msgstr "预览商店外观" #: src/bz-full-view.blp:234 msgid "_Support" msgstr "_支æŒ" #: src/bz-full-view.blp:454 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "此应用使用的è¿è¡Œæ—¶çŽ¯å¢ƒå·²ä¸å†æŽ¥æ”¶æ›´æ–°æˆ–安全修å¤ï¼Œç»§ç»­ä½¿ç”¨å¯èƒ½å­˜åœ¨å®‰å…¨éšæ‚£" #: src/bz-full-view.blp:541 msgid "Trash Data" msgstr "垃圾数æ®" #: src/bz-full-view.blp:681 msgid "Tags:" msgstr "标签:" #: src/bz-full-view.c:180 msgid "No URL" msgstr "无链接" #: src/bz-full-view.c:198 msgid "" "This application has a FLOSS license, meaning the source code can be audited " "for safety." msgstr "该应用程åºå…·æœ‰ FLOSS 许å¯è¯ï¼Œè¿™æ„味ç€å¯ä»¥å®¡æ ¸æºä»£ç çš„安全性。" #: src/bz-full-view.c:199 msgid "" "This application has a proprietary license, meaning the source code is " "developed privately and cannot be audited by an independent third party." msgstr "" "该应用程åºå…·æœ‰ä¸“有许å¯è¯ï¼Œè¿™æ„å‘³ç€æºä»£ç æ˜¯ç§äººå¼€å‘的,ä¸èƒ½ç”±ç‹¬ç«‹çš„第三方审" "核。" #: src/bz-full-view.c:206 msgid "More Apps" msgstr "更多应用" #: src/bz-full-view.c:207 #, c-format msgid "More Apps by %s" msgstr "æ¥è‡ª %s 的更多应用" #: src/bz-full-view.c:214 msgid "Other Apps by this Developer" msgstr "该开å‘者的其他应用" #: src/bz-full-view.c:216 src/bz-full-view.c:315 #, c-format msgid "Other Apps by %s" msgstr "æ¥è‡ª %s 的其他应用" #: src/bz-full-view.c:225 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s 未安装,但ä»å­˜åœ¨ <b>%s</b> 的数æ®ã€‚" #: src/bz-full-view.c:317 msgid "Other Apps" msgstr "其他应用" #: src/bz-full-view.c:319 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d 个应用" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "ç¡¬ä»¶æ”¯æŒæƒ…况" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "é”®ç›˜æ”¯æŒæƒ…况" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "需è¦é”®ç›˜" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "推è键盘" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "支æŒé”®ç›˜" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "é”®ç›˜æ”¯æŒæƒ…况未知" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "é¼ æ ‡æ”¯æŒæƒ…况" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "需è¦é¼ æ ‡æˆ–指针设备" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "推è鼠标或指针设备" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "支æŒé¼ æ ‡æˆ–指针设备" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "é¼ æ ‡æˆ–æŒ‡é’ˆè®¾å¤‡æ”¯æŒæƒ…况未知" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "è§¦æŽ§æ”¯æŒæƒ…况" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "需è¦è§¦æŽ§" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "推è触控" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "支æŒè§¦æŽ§" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "è§¦æŽ§æ”¯æŒæƒ…况未知" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "ç§»åŠ¨è®¾å¤‡æ”¯æŒæƒ…况" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "å¯è¿è¡ŒäºŽç§»åŠ¨è®¾å¤‡" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "å¯èƒ½ä¸æ”¯æŒç§»åŠ¨è®¾å¤‡" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "桌é¢ç«¯æ”¯æŒæƒ…况" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "大å±ä¸Šè¿è¡Œè‰¯å¥½" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s 在特定硬件上è¿è¡Œæœ€ä½³" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s 在大多数设备正常工作" #: src/bz-install-controls.blp:62 msgid "_Open" msgstr "_打开" #: src/bz-install-controls.blp:77 src/bz-install-controls.blp:134 msgid "Uninstall Application" msgstr "å¸è½½æ­¤åº”用程åº" #: src/bz-install-controls.blp:87 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "_å¸è½½" #: src/bz-install-controls.blp:121 src/bz-updates-card.c:161 #: src/bz-updates-card.c:180 msgid "Update" msgstr "æ›´æ–°" #: src/bz-install-controls.blp:144 src/bz-installed-tile.blp:114 msgid "Remove" msgstr "å¸è½½" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "æœç´¢å·²å®‰è£…的应用程åº" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "清除历å²" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "未找到应用程åº" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "在商店中æœç´¢" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:111 msgid "Library" msgstr "库" #: src/bz-library-page.blp:128 msgid "Pending Updates" msgstr "等待更新" #: src/bz-library-page.blp:155 msgid "Downloads" msgstr "下载" #: src/bz-library-page.blp:198 msgid "Recently Uninstalled" msgstr "最近å¸è½½" #: src/bz-library-page.blp:249 msgid "Clear Finished Tasks" msgstr "清除所有已完æˆçš„事务" #: src/bz-library-page.blp:334 msgid "Sort By" msgstr "筛选" #: src/bz-library-page.blp:348 msgid "Name" msgstr "åç§°" #: src/bz-library-page.blp:354 msgid "Size" msgstr "大å°" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "在已安装应用列表中未找到与 “%s†匹é…的项目" #: src/bz-library-page.c:193 src/bz-updates-card.c:426 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u 个å¯ç”¨æ›´æ–°" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u 已安装应用" #: src/bz-license-dialog.blp:94 msgid "Get Involved" msgstr "å‚与进æ¥" #: src/bz-license-dialog.blp:111 msgid "Learn More" msgstr "了解更多" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "未知许å¯è¯" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "社区共建" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "æ­¤åº”ç”¨ç”±ä¸€ä¸ªå›½é™…ç¤¾åŒºä»¥å¼€æºæ–¹å¼å¼€å‘而æˆã€‚\n" "\n" "您å¯ä»¥å‚与进æ¥ï¼Œå¸®åŠ©å®ƒå˜å¾—更好。" #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "此应用的许å¯è¯æœªçŸ¥" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "此应用由国际社区开放开å‘ï¼Œå¹¶æ ¹æ® %s 许å¯è¯å‘布。\n" "\n" "您å¯ä»¥å‚与进æ¥ï¼Œå¸®åŠ©å®ƒå˜å¾—更好。" #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "此应用未采用开放开å‘ï¼Œå› æ­¤åªæœ‰å¼€å‘者知é“å…¶è¿ä½œæœºåˆ¶ã€‚它å¯èƒ½å­˜åœ¨éš¾ä»¥å¯Ÿè§‰çš„安全" "æ¼æ´žï¼Œä¸”å¯èƒ½åœ¨ç¼ºä¹ç›‘管的情况下进行更改。\n" "\n" "您å¯èƒ½æ— æ³•为本应用åšå‡ºè´¡çŒ®ã€‚" #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "本应用基于特殊许å¯è¯ %s å¼€å‘。\n" "\n" "您å¯èƒ½æ— æ³•为本应用åšå‡ºè´¡çŒ®ã€‚" #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:53 msgid "License" msgstr "许å¯è¯" #: src/bz-login-page.blp:5 src/bz-login-page.blp:42 msgid "Connect to Flathub" msgstr "连接到 Flathub" #: src/bz-login-page.blp:32 msgid "Something Went Wrong" msgstr "å‘生错误" #: src/bz-login-page.blp:43 msgid "Connect your Flathub account to Bazaar to manage your favorited apps." msgstr "将您的 Flathub 账户连接到 Bazaarï¼Œä»¥ä¾¿ç®¡ç†æ‚¨æ”¶è—的应用程åºã€‚" #: src/bz-login-page.blp:110 msgid "Finish" msgstr "完æˆ" #: src/bz-login-page.c:664 #, c-format msgid "Hello, %s!" msgstr "你好,%sï¼" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "é€‰æ‹©å…ƒä¿¡æ¯æ–‡ä»¶" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "å…ƒä¿¡æ¯æ–‡ä»¶" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "选择图标(å¯é€‰ï¼‰" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "图片文件" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "预览" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "å好设置" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "正在使用计费网络 - 自动储存数æ®åŒæ­¥å·²æš‚åœ" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:258 msgid "Refresh Manually" msgstr "æ‰‹åŠ¨åŒæ­¥" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "内容筛选" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "仅自由软件" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary applications when browsing and searching" msgstr "æµè§ˆå’Œæœç´¢æ—¶éšè—专有软件" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "ä»…åŒ…å« Flathub 结果" #: src/bz-preferences-dialog.blp:40 msgid "" "Limit search and browse results to applications only available on Flathub" msgstr "é™åˆ¶æœç´¢å’Œæµè§ˆçš„应用仅å¯ä»Ž Flathub 获å–" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "仅显示已验è¯ç»“æžœ" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "éšè—未在 Flathub 上验è¯çš„结果" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "éšè—终止支æŒçš„应用" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "éšè—å¼€å‘者ä¸å†æ”¯æŒçš„应用" #: src/bz-preferences-dialog.blp:55 src/bz-window.blp:126 msgid "Search" msgstr "æœç´¢" #: src/bz-preferences-dialog.blp:58 msgid "Delay Search Results" msgstr "延迟æœç´¢ç»“æžœ" #: src/bz-preferences-dialog.blp:59 msgid "Improve results performance by debouncing search terms" msgstr "通过防抖æœç´¢è¯æå‡ç»“果性能" #: src/bz-preferences-dialog.blp:64 msgid "Progress Bar" msgstr "进度æ¡" #: src/bz-preferences-dialog.blp:65 msgid "Choose a theme for the progress bar!" msgstr "为进度æ¡é€‰æ‹©ä¸»é¢˜ï¼" #: src/bz-preferences-dialog.blp:89 msgid "Vertical Stripes" msgstr "ç«–æ¡çº¹" #: src/bz-preferences-dialog.blp:90 msgid "Display flag colors from left to right" msgstr "ä»Žå·¦è‡³å³æ˜¾ç¤ºæ——帜颜色" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "强调色" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "骄傲色" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "å¥³åŒæ€§æ‹éª„傲色彩" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "ç”·åŒæ€§æ‹éª„傲色彩" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "跨性别骄傲色" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "éžäºŒå…ƒæ€§åˆ«éª„傲色彩" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "åŒæ€§æ‹éª„傲色彩" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "无性æ‹éª„傲色" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "泛性æ‹éª„傲色" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "无浪漫倾å‘骄傲色" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "性别æµåŠ¨éª„å‚²è‰²" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "多性æ‹éª„傲色" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "全性æ‹éª„傲色彩" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "无浪漫无性æ‹è€…骄傲色" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "无性别骄傲色" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "性别酷儿骄傲色" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "åŒæ€§æ‹éª„傲色" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "åŠæ€§åˆ«éª„傲色" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "åŒæµªæ¼«éª„傲色" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "残疾人骄傲色" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "伪娘骄傲色" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "中性骄傲色" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:152 msgid "Version History" msgstr "版本历å²" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "_版本历å²" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "今天" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "昨天" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d 天å‰" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 周å‰" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d 月å‰" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d å¹´å‰" #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%e %B %Y" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "版本 %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "未æä¾›å˜æ›´æ—¥å¿—" #: src/bz-releases-list.c:263 msgid "Get More Information" msgstr "获得更多信æ¯" #: src/bz-rich-app-tile.blp:157 msgid "Get" msgstr "获å–" #: src/bz-rich-app-tile.blp:185 src/bz-transaction-tile.blp:296 msgid "Open" msgstr "打开" #: src/safety-calculator.c:82 msgid "Unknown Permissions" msgstr "未知æƒé™" #: src/safety-calculator.c:83 msgid "Permissions are missing for this app." msgstr "此应用缺少必è¦çš„æƒé™ã€‚" #: src/safety-calculator.c:96 msgid "No Permissions" msgstr "没有æƒé™" #: src/safety-calculator.c:97 msgid "App is fully sandboxed" msgstr "应用已完全沙盒化" #: src/safety-calculator.c:103 msgid "Network Access" msgstr "网络访问" #: src/safety-calculator.c:104 msgid "Can access the internet" msgstr "å¯è®¿é—®ç½‘络" #: src/safety-calculator.c:106 msgid "No Network Access" msgstr "无网络访问" #: src/safety-calculator.c:107 msgid "Cannot access the internet" msgstr "ä¸èƒ½è®¿é—®äº’è”网" #: src/safety-calculator.c:112 msgid "User Device Access" msgstr "用户设备访问" #: src/safety-calculator.c:113 msgid "Can access devices such as webcams or gaming controllers" msgstr "å¯ä»¥è®¿é—®ç½‘络摄åƒå¤´æˆ–æ¸¸æˆæŽ§åˆ¶å™¨ç­‰ç¡¬ä»¶è®¾å¤‡" #: src/safety-calculator.c:115 msgid "No User Device Access" msgstr "无用户设备访问" #: src/safety-calculator.c:116 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "应用ä¸èƒ½è®¿é—®ç½‘络摄åƒå¤´æˆ–æ¸¸æˆæŽ§åˆ¶å™¨ç­‰ä»»ä½•ç”¨æˆ·è®¾å¤‡" #: src/safety-calculator.c:121 msgid "Input Device Access" msgstr "输入设备访问" #: src/safety-calculator.c:122 msgid "Can access input devices" msgstr "å¯ä»¥è®¿é—®è¾“入设备" #: src/safety-calculator.c:128 msgid "Microphone Access and Audio Playback" msgstr "麦克风访问和音频播放" #: src/safety-calculator.c:129 msgid "Can listen using microphones and play audio without asking permission" msgstr "无需请求æƒé™å³å¯ä½¿ç”¨éº¦å…‹é£Žæ”¶å¬å’Œæ’­æ”¾éŸ³é¢‘" #: src/safety-calculator.c:135 msgid "System Device Access" msgstr "系统设备访问" #: src/safety-calculator.c:136 msgid "Can access system devices which require elevated permissions" msgstr "å¯ä»¥è®¿é—®éœ€è¦æå‡æƒé™çš„系统设备" #: src/safety-calculator.c:142 msgid "Screen Contents Access" msgstr "å±å¹•内容访问" #: src/safety-calculator.c:143 msgid "Can access the contents of the screen or other windows" msgstr "å¯ä»¥è®¿é—®å±å¹•或其他窗å£çš„内容" #: src/safety-calculator.c:149 msgid "Legacy Windowing System" msgstr "过时窗å£ç³»ç»Ÿ" #: src/safety-calculator.c:150 msgid "Always uses a legacy windowing system (X11)" msgstr "始终使用过时的窗å£ç³»ç»Ÿï¼ˆX11)" #: src/safety-calculator.c:156 msgid "Arbitrary Permissions" msgstr "ä»»æ„æƒé™" #: src/safety-calculator.c:157 msgid "Can acquire arbitrary permissions" msgstr "å¯ä»¥èŽ·å–ä»»æ„æƒé™" #: src/safety-calculator.c:163 msgid "User Settings" msgstr "用户设置" #: src/safety-calculator.c:164 msgid "Can access and change user settings" msgstr "å¯ä»¥è®¿é—®å’Œæ›´æ”¹ç”¨æˆ·è®¾ç½®" #: src/safety-calculator.c:170 msgid "Full File System Read/Write Access" msgstr "完全的文件系统读写æƒé™" #: src/safety-calculator.c:171 msgid "Can read and write all data on the file system" msgstr "å¯ä»¥è¯»å–和写入文件系统上的所有数æ®" #: src/safety-calculator.c:178 msgid "Home Folder Read/Write Access" msgstr "主文件夹读写æƒé™" #: src/safety-calculator.c:179 msgid "Can read and write all data in your home directory" msgstr "å¯ä»¥è¯»å–和写入您主目录中的所有数æ®" #: src/safety-calculator.c:186 msgid "Full File System Read Access" msgstr "完整文件系统读å–访问" #: src/safety-calculator.c:187 msgid "Can read all data on the file system" msgstr "å¯ä»¥è¯»å–文件系统上的所有数æ®" #: src/safety-calculator.c:195 msgid "Home Folder Read Access" msgstr "ä¸»æ–‡ä»¶å¤¹è¯»å–æƒé™" #: src/safety-calculator.c:196 msgid "Can read all data in your home directory" msgstr "å¯ä»¥è¯»å–您主目录中的所有数æ®" #: src/safety-calculator.c:204 msgid "Download Folder Read/Write Access" msgstr "下载文件夹读写æƒé™" #: src/safety-calculator.c:205 msgid "Can read and write all data in your downloads directory" msgstr "å¯ä»¥è¯»å†™ä¸‹è½½æ–‡ä»¶å¤¹ä¸­çš„æ‰€æœ‰æ•°æ®" #: src/safety-calculator.c:215 msgid "Download Folder Read Access" msgstr "ä¸‹è½½æ–‡ä»¶å¤¹è¯»å–æƒé™" #: src/safety-calculator.c:216 msgid "Can read all data in your downloads directory" msgstr "å¯ä»¥è¯»å–您下载目录中的所有数æ®" #: src/safety-calculator.c:229 msgid "Can read and write all data in the directory" msgstr "å¯ä»¥è¯»å†™ç›®å½•中的所有数æ®" #: src/safety-calculator.c:243 msgid "Can read all data in the directory" msgstr "å¯ä»¥è¯»å–目录中的所有数æ®" #: src/safety-calculator.c:258 msgid "No File System Access" msgstr "无文件系统访问æƒé™" #: src/safety-calculator.c:259 msgid "Cannot access the file system at all" msgstr "完全无法访问文件系统" #: src/safety-calculator.c:266 msgid "Uses System Services" msgstr "使用系统æœåŠ¡" #: src/safety-calculator.c:267 msgid "Can request data from non-portal system services" msgstr "å¯ä»Žéžé—¨æˆ·ç³»ç»ŸæœåŠ¡è¯·æ±‚æ•°æ®" #: src/safety-calculator.c:273 msgid "Uses Session Services" msgstr "ä½¿ç”¨ä¼šè¯æœåŠ¡" #: src/safety-calculator.c:274 msgid "Can request data from non-portal session services" msgstr "å¯ä»Žéžé—¨æˆ·ä¼šè¯æœåŠ¡è¯·æ±‚æ•°æ®" #: src/safety-calculator.c:322 msgid "No Service Access" msgstr "æ— æœåŠ¡è®¿é—®" #: src/safety-calculator.c:323 msgid "Cannot access non-portal session or system services at all" msgstr "完全无法访问éžé—¨æˆ·ä¼šè¯æˆ–系统æœåŠ¡" #: src/safety-calculator.c:331 msgid "Verified App Developer" msgstr "软件开å‘者已验è¯" #: src/safety-calculator.c:332 msgid "The developer of this app has been verified to be who they say they are" msgstr "软件开å‘者的身份已通过验è¯ï¼Œä½¿åº”用更安全" #: src/safety-calculator.c:341 msgid "Proprietary Code" msgstr "专有代ç " #: src/safety-calculator.c:342 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "æºä»£ç æœªå…¬å¼€ï¼Œå› æ­¤æ— æ³•进行独立审计,å¯èƒ½å­˜åœ¨å®‰å…¨éšæ‚£" #: src/safety-calculator.c:352 msgid "Auditable Code" msgstr "å¯å®¡è®¡ä»£ç " #: src/safety-calculator.c:353 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "æºä»£ç å…¬å¼€ä¸”å¯ç‹¬ç«‹å®¡è®¡ï¼Œè¿™ä½¿å¾—此应用更å¯èƒ½å®‰å…¨å¯é " #: src/safety-calculator.c:493 #, c-format msgid "Use the %s System Service" msgstr "使用 %s 系统æœåŠ¡" #: src/safety-calculator.c:497 #, c-format msgid "Use the %s Session Service" msgstr "使用 %s ä¼šè¯æœåŠ¡" #: src/safety-calculator.c:501 #, c-format msgid "Use the %s Service" msgstr "使用 %s æœåŠ¡" #: src/safety-calculator.c:511 msgid "Can see the non-portal service" msgstr "å¯ä»¥çœ‹åˆ°éžé—¨æˆ·æœåŠ¡" #: src/safety-calculator.c:513 msgid "Can talk to the non-portal service" msgstr "å¯ä¸Žéžé—¨æˆ·æœåŠ¡è¿›è¡Œå¯¹è¯" #: src/safety-calculator.c:515 msgid "Can own the non-portal service" msgstr "å¯ä»¥æ‹¥æœ‰éžé—¨æˆ·æœåŠ¡" #: src/safety-calculator.c:530 msgid "Global Menu Integration" msgstr "全局èœå•集æˆ" #: src/safety-calculator.c:531 msgid "Can display its menus in a global menu bar" msgstr "å¯åœ¨å…¨å±€èœå•æ ä¸­æ˜¾ç¤ºå…¶èœå•" #: src/safety-calculator.c:536 msgid "KDE Settings Integration" msgstr "KDE 设置集æˆ" #: src/safety-calculator.c:537 msgid "Can detect when KDE desktop settings change" msgstr "坿£€æµ‹ KDE 桌é¢è®¾ç½®ä½•æ—¶å‘生å˜åŒ–" #: src/safety-calculator.c:542 msgid "KDE Global Settings" msgstr "KDE 全局设置" #: src/safety-calculator.c:543 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "å¯è¯»å– KDE 桌é¢å好设置,如字体和颜色" #: src/safety-calculator.c:548 msgid "Secret Storage Service" msgstr "秘密存储æœåŠ¡" #: src/safety-calculator.c:549 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "å¯ä½¿ç”¨ç³»ç»Ÿå¯†é’¥ç®¡ç†å™¨å­˜å‚¨å’Œæ£€ç´¢è‡ªèº«å¯†ç " #: src/safety-calculator.c:554 msgid "Desktop Notifications Service" msgstr "桌é¢é€šçŸ¥æœåŠ¡" #: src/safety-calculator.c:555 msgid "Can send desktop notifications" msgstr "å¯ä»¥å‘逿¡Œé¢é€šçŸ¥" #: src/safety-calculator.c:561 msgid "System Tray Integration" msgstr "系统托盘集æˆ" #: src/safety-calculator.c:562 msgid "Can display an icon in the system tray" msgstr "å¯åœ¨ç³»ç»Ÿæ‰˜ç›˜ä¸­æ˜¾ç¤ºå›¾æ ‡" #: src/safety-calculator.c:567 msgid "KDE Connect Integration" msgstr "KDE Connect 集æˆ" #: src/safety-calculator.c:568 msgid "Can interact with devices paired via KDE Connect" msgstr "å¯ä¸Žé€šè¿‡ KDE Connect é…对的设备进行交互" #: src/bz-safety-dialog.blp:7 msgid "Safety" msgstr "安全性" #: src/bz-safety-dialog.blp:63 msgid "App ID" msgstr "App ID" #: src/bz-safety-dialog.blp:73 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:104 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "此应用使用了过时的软件平å°ï¼ˆSDK)版本,å¯èƒ½åŒ…嫿— æ³•ä¿®å¤çš„é”™è¯¯æˆ–å®‰å…¨æ¼æ´žã€‚" #: src/bz-safety-dialog.c:227 #, c-format msgid "%s is Safe" msgstr "%s 是安全的" #: src/bz-safety-dialog.c:232 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s 没有ä¸å®‰å…¨æƒé™" #: src/bz-safety-dialog.c:237 #, c-format msgid "%s is Probably Safe" msgstr "%s 很å¯èƒ½å®‰å…¨" #: src/bz-safety-dialog.c:242 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s å¯èƒ½ä¸å®‰å…¨" #: src/bz-safety-dialog.c:247 #, c-format msgid "%s is Unsafe" msgstr "%s 是ä¸å®‰å…¨çš„" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "å±å¹•截图" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "上一个截图" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "下一个截图" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "å¤åˆ¶å›¾ç‰‡" #: src/bz-screenshot-page.blp:150 msgid "Reset View" msgstr "é‡ç½®è§†å›¾" #: src/bz-screenshot-page.blp:161 msgid "Zoom Out" msgstr "缩å°" #: src/bz-screenshot-page.blp:171 msgid "Zoom In" msgstr "放大" #: src/bz-screenshots-carousel.blp:5 msgid "Screenshots Carousel" msgstr "截图轮播" #: src/bz-screenshots-carousel.blp:117 msgid "Open Screenshot Viewer" msgstr "打开截图查看器" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "筛选" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "_已验è¯" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "_自由åŠå¼€æ”¾æºä»£ç " #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "éžå·²ä¸­æ­¢æ”¯æŒ" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "筛掉已中止支æŒçš„应用" #: src/bz-search-filter-popover.blp:57 msgid "Categories" msgstr "分类" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "æœç´¢åº”ç”¨ã€æ¸¸æˆã€è½¯ä»¶" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "æœç´¢ç­›é€‰" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "清除æœç´¢" #: src/bz-search-page.blp:192 msgid "Categories Unavailable" msgstr "分类ä¸å¯ç”¨" #: src/bz-search-page.blp:193 msgid "Search for apps using the search bar above." msgstr "使用上方æœç´¢æ æœç´¢åº”用。" #: src/bz-search-page.blp:219 msgid "Browse Categories" msgstr "æµè§ˆåˆ†ç±»" #: src/bz-search-page.blp:361 msgid "No Applications Found" msgstr "未找到应用" #: src/bz-search-page.c:247 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "在 Flathub 中未找到 “%s†的结果" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "视频" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "办公" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "日历" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "通讯" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "绘画" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "模拟器" #: src/bz-share-list.c:123 msgid "Copy Link" msgstr "å¤åˆ¶é“¾æŽ¥" #: src/bz-share-list.c:134 msgid "Open Link" msgstr "打开链接" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "时间线" #: src/bz-stats-dialog.blp:45 msgid "Installs:" msgstr "安装:" #: src/bz-stats-dialog.blp:54 msgid "World" msgstr "世界" #: src/bz-stats-dialog.blp:68 msgid "Since 4/15/2024" msgstr "自2024å¹´4月15日开始" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:125 #, c-format msgid "%.2fM Total Installs" msgstr "%.2fM 总安装é‡" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:128 #, c-format msgid "%.2fK Total Installs" msgstr "%.2fK 总安装é‡" #: src/bz-stats-dialog.c:130 #, c-format msgid "%'d Total Installs" msgstr "%'d 总安装é‡" #: src/bz-tag-list.c:78 msgid "No Results Found" msgstr "无结果" #: src/bz-tag-list.c:90 #, c-format msgid "Apps Tagged \"%s\"" msgstr "标记为 “%s†的应用" #: src/bz-tag-list.c:103 msgid "Search failed" msgstr "æœç´¢å¤±è´¥" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "ä¿ç•™ç”¨æˆ·æ•°æ®" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "å…许æ¢å¤ä¸ªäººè®¾ç½® & 内容" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "删除所有数æ®" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "永久删除用户数æ®ä»¥èŠ‚çœç©ºé—´" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "安装 %s ?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "选择你è¦å®‰è£…的版本。å¯èƒ½è¿˜è¦å®‰è£…共享组件" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "å¯èƒ½è¿˜è¦å®‰è£…é¢å¤–的共享组件" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "_å–æ¶ˆ" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "_安装" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "å¸è½½ %s ?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "选择你è¦å¸è½½çš„版本" #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "å¸è½½åŽå°†æ— æ³•使用 %s" #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "“%s†是高风险的" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "此应用拥有对您系统的完全访问æƒé™ï¼ŒåŒ…括<b>æ‚¨çš„æ‰€æœ‰æ–‡ä»¶ã€æµè§ˆåކå²ã€å·²ä¿å­˜å¯†ç </" "b>等。它还能访问互è”网,这æ„味ç€å®ƒå¯èƒ½å°†æ‚¨çš„æ•°æ®å‘é€ç»™ç¬¬ä¸‰æ–¹ã€‚\n" "\n" "由于该应用是专有的,其如何利用æƒé™ä¹Ÿæ— æ³•审查。\t" #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "此应用使用传统的 X11 窗å£ç³»ç»Ÿï¼Œè¿™ä½¿å…¶èƒ½å¤Ÿ<b>è®°å½•æ‰€æœ‰æŒ‰é”®ã€æˆªå–å±å¹•截图并监控" "其他应用程åº</b>ã€‚åŒæ—¶ï¼Œè¯¥åº”用具备网络访问æƒé™ï¼Œè¿™æ„味ç€å®ƒå¯èƒ½å°†æ‚¨çš„æ•°æ®å‘é€" "给外部。\n" "\n" "由于该应用是专有的,其如何利用æƒé™ä¹Ÿæ— æ³•审查。" #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "_åšæŒå®‰è£…" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "æ— æ³•åŠ è½½äº‹åŠ¡å¯¹è¯æ¡†" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "所有应用都已ç»è¢«å®‰è£…" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "_好的" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "安装 %u 应用?" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "下列组件会被安装。å¯èƒ½è¿˜è¦å®‰è£…共享组件" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "%d 附加组件将被安装" #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "此外,附加组件将被安装" #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "_安装全部" #: src/bz-transaction-manager.c:784 #, c-format msgid "Finished in %.02f seconds" msgstr "在 %.02f 秒内完æˆ" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "应用附加组件" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "è¿è¡Œæ—¶" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "队列中" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "已完æˆ" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "å–æ¶ˆ" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "错误" #: src/bz-transaction-tile.blp:310 msgid "Cancel Transaction" msgstr "撤销事务" #: src/bz-transaction-tile.blp:434 msgid "Show Error Info" msgstr "显示错误信æ¯" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "%s 已释放" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "事务错误" #: src/bz-transaction.c:344 msgid "Pending" msgstr "等待中" #: src/bz-updates-card.blp:22 msgid "_Update All" msgstr "_更新全部" #: src/bz-updates-card.c:208 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u 个è¿è¡Œæ—¶çŽ¯å¢ƒæ›´æ–°" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "管ç†é—留用户数æ®" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "未找到用户数æ®" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "用户数æ®" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "清除用户数æ®" #: src/bz-user-data-tile.c:144 #, c-format msgid "Trashed User Data for %s" msgstr "已删除 %s 的用户数æ®" #: src/bz-window.blp:87 msgid "Curated" msgstr "精选" #: src/bz-window.blp:99 msgid "Explore" msgstr "探索" #: src/bz-window.blp:219 msgid "Refresh completed!" msgstr "刷新完æˆï¼" #: src/bz-window.blp:238 msgid "Main Menu" msgstr "主èœå•" #: src/bz-window.blp:249 msgid "You are running a new version of Bazaar!" msgstr "你正在è¿è¡Œæ–°ç‰ˆæœ¬çš„ Bazaarï¼" #: src/bz-window.blp:250 msgid "See What's New" msgstr "看看更新了啥" #: src/bz-window.blp:257 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "您已连接网络,但正在查看 Flathub 的缓存版本" #: src/bz-window.blp:302 msgid "_Donate to Bazaar" msgstr "_å‘ Bazaar æåŠ© â¤ï¸" #: src/bz-window.blp:309 msgid "_Refresh" msgstr "_刷新" #: src/bz-window.blp:314 msgid "_Preferences" msgstr "_首选项" #: src/bz-window.blp:319 msgid "_Login With Flathub" msgstr "_用 Flathub 登录" #: src/bz-window.blp:325 msgid "_Manage Leftover User Data" msgstr "_管ç†é—留用户数æ®" #: src/bz-window.blp:330 msgid "_Keyboard Shortcuts" msgstr "_键盘快æ·é”®" #: src/bz-window.blp:335 msgid "_About Bazaar" msgstr "_关于 Bazaar" #: src/bz-window.blp:342 msgid "_Quit Bazaar" msgstr "_退出 Bazaar" #: src/bz-window.blp:367 msgid "Log Out" msgstr "登出" #. Translators: %s is the title of the current page #: src/bz-window.c:377 #, c-format msgid "Bazaar — %s" msgstr "Bazaar - %s" #: src/bz-window.c:586 src/bz-window.c:624 msgid "Failed to launch application" msgstr "å¯åŠ¨åº”ç”¨ç¨‹åºå¤±è´¥" #: src/bz-window.c:825 msgid "You can't remove Bazaar from Bazaar!" msgstr "你无法用 Bazaar å¸è½½ Bazaarï¼" #: src/bz-window.c:1110 src/bz-window.c:1144 msgid "Can't do that right now!" msgstr "现在还ä¸èƒ½è¿™ä¹ˆåšï¼" #: src/bz-world-map.c:603 msgctxt "As in, \"100 Installs\"" msgid "Installs" msgstr "安装" #: src/shortcuts-dialog.blp:6 msgctxt "shortcut window" msgid "General" msgstr "一般" #: src/shortcuts-dialog.blp:9 msgctxt "shortcut window" msgid "Open Search Page" msgstr "打开æœç´¢é¡µ" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "打开库" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Refresh" msgstr "刷新" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Open Preferences" msgstr "打开å好设置" #: src/shortcuts-dialog.blp:30 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "展示快æ·é”®" #: src/shortcuts-dialog.blp:35 msgctxt "shortcut window" msgid "Close Window" msgstr "关闭窗å£" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "退出 Bazaar" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "其强调支æŒé‚£äº›ä½¿ Linux æ¡Œé¢æˆä¸ºå¯èƒ½çš„å¼€å‘者。Bazaar 设有一个\"精选\"标签," #~ "å¯ç”±å‘行商é…置,以æä¾›æ›´æœ¬åœ°åŒ–的体验。" #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "Nucleus app page" #~ msgstr "Nucleus 应用页" #~ msgid "_Donate to Bazaar â¤ï¸" #~ msgstr "_å‘ Bazaar æåŠ© â¤ï¸" #~ msgid "_Synchronize Remotes" #~ msgstr "_åŒæ­¥è¿œç¨‹" #~ msgid "Synchronizing..." #~ msgstr "åŒæ­¥ä¸­â€¦â€¦" #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "正在接收 %d 个æ¡ç›®..." #~ msgid "Indexing Data..." #~ msgstr "正在索引数æ®â€¦â€¦" #~ msgid "Close" #~ msgstr "关闭" #~ msgid "Copy and Close" #~ msgstr "å¤åˆ¶å¹¶å…³é—­" #, fuzzy #~ msgid "Open App Library" #~ msgstr "打开应用库" #~ msgid "Installing .flatpak bundles is not yet supported" #~ msgstr "安装 .flatpak åŒ…æš‚ä¸æ”¯æŒ" #~ msgid "Download & Install Application" #~ msgstr "下载并安装应用程åº" #~ msgid "Install Other Version" #~ msgstr "安装其他版本" #~ msgid "Keep Data" #~ msgstr "ä¿ç•™æ•°æ®" #~ msgid "Open App" #~ msgstr "打开" #~ msgid "Refreshing Store Content" #~ msgstr "正在刷新商店内容" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgid "No background tasks!" #~ msgstr "æ— åŽå°ä»»åŠ¡ï¼" #~ msgctxt "As in, \"100 Downloads\"" #~ msgid "Downloads" #~ msgstr "次下载" #~ msgctxt "shortcut window" #~ msgid "Synchronize Remotes" #~ msgstr "ä»Žè¿œç¨‹ç«¯åŒæ­¥" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "退出" #~ msgid "Toggle transaction sidebar" #~ msgstr "切æ¢äº‹åС侧颿¿" #~ msgid "Install Size" #~ msgstr "安装大å°" #~ msgid "Ongoing" #~ msgstr "进行中" #~ msgid "Finished" #~ msgstr "已完æˆ" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "ç›®å‰å·²ä¼ è¾“ %s" #~ msgid "Tasks" #~ msgstr "任务" #~ msgid "Stop Active Tasks" #~ msgstr "åœæ­¢å½“å‰ä»»åŠ¡" #~ msgid "No Tasks Yet" #~ msgstr "当剿— ä»»åŠ¡" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "%d 个更新" #~ msgid "Updates Are Available" #~ msgstr "有å¯ç”¨æ›´æ–°" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "以下应用å¯è¿›è¡Œæ›´æ–°ã€‚您想è¦å®‰è£…它们å—?" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "%d 个è¿è¡Œæ—¶å’Œ/或æ’ä»¶å¯è¿›è¡Œæ›´æ–°ã€‚您è¦å®‰è£…它们å—?" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "此外,%d 个è¿è¡Œæ—¶å’Œ/或æ’件也将被更新" #~ msgid "Update Now" #~ msgstr "ç«‹å³æ›´æ–°" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "检查和安装本地 .flatpak 包文件的功能å³å°†æŽ¨å‡ºï¼åœ¨æ­¤æœŸé—´ï¼Œè¯·å°è¯•在命令行è¿" #~ "行\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "以上命令。" #~ msgid "Resume Current Tasks" #~ msgstr "æ¢å¤å½“å‰ä»»åŠ¡" #~ msgid "Pause Current Tasks" #~ msgstr "æš‚åœå½“å‰ä»»åŠ¡" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "切æ¢äº‹åŠ¡ç®¡ç†å™¨" #~ msgid "Show Animated Background" #~ msgstr "展示动画背景" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "是å¦åœ¨é¦–页展示动画图标背景" #~ msgid "Keep the summary shorter, between 10 and 35 characters" #~ msgstr "ä¿æŒæ‘˜è¦ç®€çŸ­ï¼Œåœ¨ 10 至 35 字之间" #~ msgid "Main Bazaar window showing Blender" #~ msgstr "Bazaar ä¸»çª—å£æ­£åœ¨å±•示 Blender" #~ msgid "This flatpak is verified by the original developers of the software." #~ msgstr "æ­¤ Flatpak 已由软件原开å‘者认è¯ã€‚" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore" #~ msgstr "Jill Fiore" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "Bazaar 未被æä¾›ç²¾é€‰å†…容é…置。è”系您的æ“作系统的支æŒé¢‘é“寻求å助。" #~ msgid "Apps Of The Week" #~ msgstr "本周热门应用程åº" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "过去 30 天的下载次数。点击查看此应用程åºçš„下载统计信æ¯ã€‚" #~ msgid "Remote repo name" #~ msgstr "远程仓库å" #~ msgid "No Flatpaks Installed" #~ msgstr "没有已安装的 Flatpak" #~ msgid "How the application looks" #~ msgstr "这个应用程åºçœ‹èµ·æ¥æ€Žä¹ˆæ ·" #~ msgid "Appearance" #~ msgstr "外观" #~ msgid "Show animated background" #~ msgstr "展示动画背景" #~ msgid "Type to filter" #~ msgstr "输入以筛选" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "排除有专有许å¯è¯çš„结果" #~ msgid "Advanced" #~ msgstr "高级" #~ msgid "Match using regular expressions" #~ msgstr "使用正则表达å¼åŒ¹é…" #~ msgid "Hide filtering and sorting behind a crossfade effect" #~ msgstr "éšè—äº¤å‰æ·¡å…¥æ·¡å‡ºæ•ˆæžœèƒŒåŽçš„过滤和排åº" #~ msgid "Debounce input to prevent instant replies" #~ msgstr "消除输入抖动以防止立å³å›žå¤" #~ msgid "Share" #~ msgstr "分享" #~ msgid "Open this link externally" #~ msgstr "在外部打开链接" #~ msgid "Downloads Over Time" #~ msgstr "下载趋势" #~ msgid "Minimize Lower Bound" #~ msgstr "调低下é™" #~ msgid "Maximize Upper Bound" #~ msgstr "调低上é™" #~ msgid "Removing" #~ msgstr "正在å¸è½½" #~ msgid "Halt the execution of transactions" #~ msgstr "åœæ­¢æ‰§è¡Œäº‹åŠ¡" #~ msgid "Browse" #~ msgstr "æµè§ˆ" #~ msgid "Go Back" #~ msgstr "返回" #~ msgid "View curated applications" #~ msgstr "查看精选的应用程åº" #~ msgid "View the latest on Flathub" #~ msgstr "在 Flathub 查看最新的" #~ msgid "Up to date!" #~ msgstr "最新ï¼" #~ msgid "Confirm Action" #~ msgstr "确认æ“作" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "您将è¦å¸è½½ä»¥ä¸‹ Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "您确定å—?" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "您将安装以下 Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "您确定å—?" #~ msgid "Resume the execution of transactions" #~ msgstr "æ¢å¤äº‹åŠ¡æ‰§è¡Œ" #~ msgid "Pause the execution of transactions" #~ msgstr "æš‚åœäº‹åŠ¡æ‰§è¡Œ" �����������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/po/zh_TW.po���������������������������������������������������������������0000664�0000000�0000000�00000300477�15240005042�0017362�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Traditional Chinese translations for bazaar package # Copyright (C) 2025 THE bazaar'S COPYRIGHT HOLDER # This file is distributed under the same license as the bazaar package. # Automatically generated, 2025. # # SPDX-FileCopyrightText: 2025–2026 Shihfu Juan <xlion@xlion.tw> # SPDX-FileCopyrightText: 2025 Peter Dave Hello <hsu@peterdavehello.org> # SPDX-FileCopyrightText: 2026 Kisaragi Hiu <mail@kisaragi-hiu.com> msgid "" msgstr "" "Project-Id-Version: bazaar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-26 02:45+0900\n" "PO-Revision-Date: 2026-06-25 22:43+0900\n" "Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n" "Language-Team: none\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 26.07.70\n" #: data/io.github.kolunmi.Bazaar.desktop.in:2 #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:7 src/bz-window.blp:46 #: src/bz-window.blp:202 src/bz-window.c:373 src/bz-window.c:374 msgid "Bazaar" msgstr "Bazaar" #: data/io.github.kolunmi.Bazaar.desktop.in:3 msgid "Add, remove or update flatpak software on this computer" msgstr "新增ã€ç§»é™¤æˆ–更新此電腦上的 Flatpak 軟體" #: data/io.github.kolunmi.Bazaar.desktop.in:9 msgid "GTK;System;PackageManager;Discover;Flatpak;Software;Store;" msgstr "" "GTK;System;PackageManager;Discover;Flatpak;Software;Store;套件管ç†;探索;軟體;" "商店;" #: data/io.github.kolunmi.Bazaar.desktop.in:16 msgid "New Window" msgstr "新視窗" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:8 msgid "Discover and install apps" msgstr "æŽ¢ç´¢èˆ‡å®‰è£æ‡‰ç”¨ç¨‹å¼" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:10 msgid "" "A fast and modern app store for Linux with a focus on discovering and " "installing Flatpak apps and add-ons, particularly from Flathub." msgstr "" "為 Linux 打造的高效能ç¾ä»£æ‡‰ç”¨ç¨‹å¼å•†åº—ï¼Œè‘—é‡æŽ¢ç´¢èˆ‡å®‰è£ä¾†è‡ª Flatpak é ç«¯ï¼ˆç‰¹åˆ¥" "是 Flathub)的應用程å¼èˆ‡é™„加元件。" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:15 msgid "Queue multiple installs and keep browsing" msgstr "å°‡è¦å®‰è£çš„æ‡‰ç”¨ç¨‹å¼åŠ å…¥ä½‡åˆ—ç„¶å¾Œç¹¼çºŒç€è¦½" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:16 msgid "Easily view app permissions" msgstr "è¼•æ˜“æª¢è¦–æ‡‰ç”¨ç¨‹å¼æ¬Šé™" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:17 msgid "Sign in to Flathub to view and manage your favorites" msgstr "登入至 Flathub ä»¥æª¢è¦–èˆ‡ç®¡ç†æœ€æ„›" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:18 msgid "Search apps directly from GNOME Shell" msgstr "直接從 GNOME Shell æœå°‹æ‡‰ç”¨ç¨‹å¼" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:55 msgid "The home page displaying Flathub apps" msgstr "展示 Flathub 應用程å¼çš„首é " #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:59 msgid "Exhibit app page" msgstr "展示應用程å¼é é¢" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:63 msgid "Library page" msgstr "程å¼åº«é é¢" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:67 msgid "Search page" msgstr "æœå°‹é é¢" #: data/io.github.kolunmi.Bazaar.metainfo.xml.in:71 msgid "Category page" msgstr "分類é é¢" #: src/bz-addon-tile.blp:64 src/bz-installed-tile.blp:55 #: src/bz-rich-app-tile.blp:142 msgid "Stopped Receiving Updates" msgstr "å·²åœæ­¢æŽ¥æ”¶æ›´æ–°" #: src/bz-addon-tile.c:168 src/bz-favorites-tile.c:155 msgctxt "Install Controls" msgid "Uninstall" msgstr "解除安è£" #: src/bz-addon-tile.c:170 src/bz-bundle-install-dialog.blp:148 #: src/bz-bundle-install-dialog.blp:162 src/bz-favorites-tile.c:157 #: src/bz-install-controls.wdgt:29 msgctxt "Install Controls" msgid "Install" msgstr "安è£" #: src/bz-addons-dialog.blp:14 src/bz-addons-dialog.blp:21 #: src/bz-addons-dialog.blp:70 src/bz-installed-tile.blp:96 msgid "Manage Add-Ons" msgstr "管ç†é™„加元件" #: src/bz-addons-dialog.blp:80 msgid "No Add-Ons Visible" msgstr "沒有å¯è¦‹çš„附加元件" #: src/bz-addons-dialog.blp:81 msgid "" "Your current filter preferences are hiding all known add-ons. Try adjusting " "them." msgstr "您目å‰çš„éŽæ¿¾è¨­å®šä½¿å¾—所有已知附加元件皆已被隱è—ã€‚è«‹è©¦è‘—èª¿æ•´éŽæ¿¾è¨­å®šã€‚" #: src/bz-addons-dialog.blp:88 msgid "Add-on Page" msgstr "附加元件é é¢" #: src/bz-addons-dialog.blp:204 src/bz-full-view.blp:411 msgid "Downloads/Month" msgstr "æ¯æœˆä¸‹è¼‰æ¬¡æ•¸" #: src/bz-addons-dialog.blp:231 src/bz-full-view.blp:447 msgid "Stopped Receiving Core Updates" msgstr "å·²åœæ­¢æŽ¥æ”¶æ ¸å¿ƒæ›´æ–°" #: src/bz-addons-dialog.blp:245 msgid "" "This add-on uses a runtime that no longer receives updates or security " "fixes. It may become unsafe to use." msgstr "" "此應用程å¼ä½¿ç”¨çš„執行環境已ä¸å†æŽ¥æ”¶æ›´æ–°æˆ–安全修補,使用上å¯èƒ½å­˜åœ¨å®‰å…¨é¢¨éšªã€‚" #: src/bz-addons-dialog.c:333 #, c-format msgid "Add-on for %s" msgstr "%s 的附加元件" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 msgid "Show Less" msgstr "顯示更少" #: src/bz-addons-dialog.c:347 src/bz-full-view.c:657 src/bz-section-view.blp:71 msgid "Show More" msgstr "顯示更多" #: src/bz-addons-dialog.c:397 msgid "Download Stats" msgstr "下載統計數據" #: src/bz-age-rating-dialog.blp:7 src/bz-age-rating-dialog.blp:31 #: src/bz-age-rating-dialog.c:736 src/context-tile-callbacks.c:186 #: src/context-tile-callbacks.c:193 msgid "Age Rating" msgstr "年齡分級" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:88 msgid "Cartoon Violence" msgstr "å¡é€šæš´åŠ›" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:90 msgid "No information regarding cartoon violence" msgstr "未æä¾›ä»»ä½•關於å¡é€šæš´åŠ›çš„è³‡è¨Š" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:94 msgid "Fantasy Violence" msgstr "幻想暴力" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:96 msgid "No information regarding fantasy violence" msgstr "未æä¾›ä»»ä½•關於幻想暴力的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:100 msgid "Realistic Violence" msgstr "寫實暴力" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:102 msgid "No information regarding realistic violence" msgstr "未æä¾›ä»»ä½•關於寫實暴力的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:106 msgid "Violence Depicting Bloodshed" msgstr "嫿µè¡€æå¯«çš„æš´åЛ內容" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:108 msgid "No information regarding bloodshed" msgstr "未æä¾›ä»»ä½•關於æµè¡€å ´é¢çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:112 msgid "Sexual Violence" msgstr "性暴力" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:114 msgid "No information regarding sexual violence" msgstr "未æä¾›ä»»ä½•關於性暴力的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:118 msgid "Alcohol" msgstr "é…’ç²¾" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:120 msgid "No information regarding references to alcohol" msgstr "未æä¾›ä»»ä½•關於酒精相關內容的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:124 msgid "Narcotics" msgstr "毒å“" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:126 msgid "No information regarding references to illicit drugs" msgstr "未æä¾›ä»»ä½•é—œæ–¼éžæ³•藥物的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:130 msgid "Tobacco" msgstr "è¸è‰" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:132 msgid "No information regarding references to tobacco products" msgstr "未æä¾›ä»»ä½•關於è¸è‰è£½å“的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:136 src/bz-age-rating-dialog.c:475 msgid "Nudity" msgstr "裸露" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:138 msgid "No information regarding nudity of any sort" msgstr "未æä¾›ä»»ä½•關於裸露內容的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:142 msgid "Sexual Themes" msgstr "性相關主題" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:144 msgid "No information regarding references to or depictions of sexual nature" msgstr "未æä¾›ä»»ä½•關於性相關æå¯«æˆ–暗示的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:148 msgid "Profanity" msgstr "粗俗用語" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:150 msgid "No information regarding profanity of any kind" msgstr "未æä¾›ä»»ä½•關於粗俗用語的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:154 msgid "Inappropriate Humor" msgstr "ä¸ç•¶å¹½é»˜" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:156 msgid "No information regarding inappropriate humor" msgstr "未æä¾›ä»»ä½•關於ä¸ç•¶å¹½é»˜çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:160 msgid "Discrimination" msgstr "歧視" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:162 msgid "No information regarding discriminatory language of any kind" msgstr "未æä¾›ä»»ä½•關於歧視性言語的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:166 msgid "Advertising" msgstr "廣告" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:168 msgid "No information regarding advertising of any kind" msgstr "未æä¾›ä»»ä½•關於廣告內容的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:172 msgid "Gambling" msgstr "è³­åš" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:174 msgid "No information regarding gambling of any kind" msgstr "未æä¾›ä»»ä½•關於賭åšå…§å®¹çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:178 msgid "Purchasing" msgstr "付費購買" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:180 msgid "No information regarding the ability to spend money" msgstr "未æä¾›ä»»ä½•關於金錢花費功能的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:184 msgid "Chat Between Users" msgstr "使用者之間的文字èŠå¤©" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:186 msgid "No information regarding ways to chat with other users" msgstr "未æä¾›ä»»ä½•關於與其他使用者èŠå¤©æ–¹å¼çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:190 msgid "Audio Chat Between Users" msgstr "使用者之間的語音èŠå¤©" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:192 msgid "No information regarding ways to talk with other users" msgstr "未æä¾›ä»»ä½•關於與其他使用者語音交談方å¼çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:196 msgid "Contact Details" msgstr "è¯çµ¡è³‡è¨Š" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:198 msgid "" "No information regarding sharing of social network usernames or email " "addresses" msgstr "未æä¾›ä»»ä½•關於分享社群帳號或電å­éƒµä»¶åœ°å€çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:202 msgid "Identifying Information" msgstr "å¯è­˜åˆ¥å€‹äººèº«åˆ†çš„資訊" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:204 msgid "No information regarding sharing of user information with third parties" msgstr "未æä¾›ä»»ä½•關於與第三方分享使用者資訊的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:208 msgid "Location Sharing" msgstr "ä½ç½®åˆ†äº«" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:210 msgid "No information regarding sharing of physical location with other users" msgstr "未æä¾›ä»»ä½•關於與其他使用者分享實際ä½ç½®çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:214 msgid "Prostitution" msgstr "性交易" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:216 msgid "No information regarding references to prostitution" msgstr "未æä¾›ä»»ä½•關於性交易相關內容的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:220 msgid "Adultery" msgstr "通姦" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:222 msgid "No information regarding references to adultery" msgstr "未æä¾›ä»»ä½•關於通姦相關內容的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:226 msgid "Sexualized Characters" msgstr "性化角色" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:228 msgid "No information regarding sexualized characters" msgstr "未æä¾›ä»»ä½•關於性化角色的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:232 msgid "Desecration" msgstr "褻瀆" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:234 msgid "No information regarding references to desecration" msgstr "未æä¾›ä»»ä½•關於褻瀆相關內容的資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:238 msgid "Human Remains" msgstr "人類éºéª¸" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:240 msgid "No information regarding visible dead human remains" msgstr "未æä¾›ä»»ä½•關於å¯è¦‹äººé¡žéºéª¸çš„資訊" #. TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:244 msgid "Slavery" msgstr "奴役" #. TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ #: src/bz-age-rating-dialog.c:246 msgid "No information regarding references to slavery" msgstr "未æä¾›ä»»ä½•關於奴役相關內容的資訊" #: src/bz-age-rating-dialog.c:424 msgid "Does not include references to drugs" msgstr "ä¸åŒ…å«ä»»ä½•與毒å“相關的內容" #: src/bz-age-rating-dialog.c:426 msgid "" "Does not include swearing, profanity, and other kinds of strong language" msgstr "ä¸åŒ…å«é«’話ã€ç²—俗用語或其他強烈語言" #: src/bz-age-rating-dialog.c:428 msgid "Does not include ads or monetary transactions" msgstr "ä¸åŒ…å«å»£å‘Šæˆ–金錢交易" #: src/bz-age-rating-dialog.c:430 msgid "Does not include sex or nudity" msgstr "ä¸åŒ…嫿€§å…§å®¹æˆ–裸露æå¯«" #: src/bz-age-rating-dialog.c:432 msgid "Does not include uncontrolled chat functionality" msgstr "ä¸åŒ…嫿œªå—控管的通訊功能" #: src/bz-age-rating-dialog.c:434 msgid "Does not include violence" msgstr "ä¸åŒ…嫿š´åЛ內容" #: src/bz-age-rating-dialog.c:469 msgid "Drugs" msgstr "毒å“" #: src/bz-age-rating-dialog.c:471 msgid "Strong Language" msgstr "強烈語言" #: src/bz-age-rating-dialog.c:473 msgid "Money" msgstr "金錢" #: src/bz-age-rating-dialog.c:477 msgid "Social" msgstr "社交" #: src/bz-age-rating-dialog.c:479 msgid "Violence" msgstr "暴力" #. Translators: Age rating format, e.g. "12+" for ages 12 and up #: src/bz-age-rating-dialog.c:686 src/context-tile-callbacks.c:176 #, c-format msgid "%d+" msgstr "%d+" #: src/bz-age-rating-dialog.c:711 msgctxt "Age rating" msgid "All" msgstr "所有年齡層" #: src/bz-age-rating-dialog.c:747 #, c-format msgid "%s has an unknown age rating" msgstr "%s 的年齡分級未知" #: src/bz-age-rating-dialog.c:753 #, c-format msgid "%s is suitable for everyone" msgstr "%s é©åˆæ‰€æœ‰å¹´é½¡å±¤" #: src/bz-age-rating-dialog.c:756 #, c-format msgid "%s is suitable for young children" msgstr "%s é©åˆå¹¼ç«¥" #: src/bz-age-rating-dialog.c:759 #, c-format msgid "%s is suitable for children" msgstr "%s é©åˆå…’ç«¥" #: src/bz-age-rating-dialog.c:762 #, c-format msgid "%s is suitable for teenagers" msgstr "%s é©åˆé’å°‘å¹´" #: src/bz-age-rating-dialog.c:765 #, c-format msgid "%s is suitable for adults" msgstr "%s é©åˆæˆäºº" #: src/bz-age-rating-dialog.c:768 #, c-format msgid "%s is suitable for %s" msgstr "%s é©åˆ %s" #: src/bz-age-rating-dialog.c:862 #, c-format msgid "%s • %s" msgstr "%s • %s" #: src/bz-app-permissions.c:160 #, c-format msgid "System folder %s" msgstr "系統資料夾 %s" #: src/bz-app-permissions.c:162 #, c-format msgid "Home subfolder %s" msgstr "家目錄å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:164 msgid "Host system folders" msgstr "主機系統資料夾" #: src/bz-app-permissions.c:166 msgid "Host system configuration from /etc" msgstr "來自主機系統 /etc 中的系統設定" #: src/bz-app-permissions.c:169 #, c-format msgid "Desktop subfolder %s" msgstr "桌é¢å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:170 msgid "Desktop folder" msgstr "桌é¢è³‡æ–™å¤¾" #: src/bz-app-permissions.c:173 #, c-format msgid "Documents subfolder %s" msgstr "文件å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:174 msgid "Documents folder" msgstr "文件資料夾" #: src/bz-app-permissions.c:177 #, c-format msgid "Music subfolder %s" msgstr "音樂å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:178 msgid "Music folder" msgstr "音樂資料夾" #: src/bz-app-permissions.c:181 #, c-format msgid "Pictures subfolder %s" msgstr "圖片å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:182 msgid "Pictures folder" msgstr "圖片資料夾" #: src/bz-app-permissions.c:185 #, c-format msgid "Public Share subfolder %s" msgstr "公開資料夾å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:186 msgid "Public Share folder" msgstr "公開資料夾" #: src/bz-app-permissions.c:189 #, c-format msgid "Videos subfolder %s" msgstr "影片å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:190 msgid "Videos folder" msgstr "影片資料夾" #: src/bz-app-permissions.c:193 #, c-format msgid "Templates subfolder %s" msgstr "模版å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:194 msgid "Templates folder" msgstr "模版資料夾" #: src/bz-app-permissions.c:197 #, c-format msgid "User cache subfolder %s" msgstr "使用者快å–å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:198 msgid "User cache folder" msgstr "使用者快å–資料夾" #: src/bz-app-permissions.c:201 #, c-format msgid "User configuration subfolder %s" msgstr "使用者設定å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:202 msgid "User configuration folder" msgstr "使用者設定資料夾" #: src/bz-app-permissions.c:205 #, c-format msgid "User data subfolder %s" msgstr "使用者資料å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:206 msgid "User data folder" msgstr "使用者資料資料夾" #: src/bz-app-permissions.c:209 #, c-format msgid "User runtime subfolder %s" msgstr "使用者執行環境å­ç›®éŒ„ %s" #: src/bz-app-permissions.c:210 msgid "User runtime folder" msgstr "使用者執行環境資料夾" #: src/bz-app-permissions.c:212 #, c-format msgid "Filesystem access to %s" msgstr "å° %s 的檔案系統存å–" #: src/bz-app-permissions.c:214 msgid "Unknown filesystem path" msgstr "未知的檔案系統目錄" #: src/bz-app-size-dialog.blp:26 src/bz-app-size-dialog.blp:60 msgid "Download Size" msgstr "下載大å°" #: src/bz-app-size-dialog.blp:33 src/bz-app-size-dialog.blp:81 msgid "Installed Size" msgstr "安è£å¤§å°" #: src/bz-app-size-dialog.blp:61 msgid "Amount to download from the internet" msgstr "從網際網路下載的大å°" #: src/bz-app-size-dialog.blp:82 msgid "Size on Disk" msgstr "ç£ç¢Ÿä¸Šçš„大å°" #: src/bz-app-size-dialog.blp:133 msgid "Open user data folder" msgstr "開啟使用者資料資料夾" #: src/bz-app-size-dialog.blp:143 msgid "Your User Data" msgstr "您的使用者資料" #: src/bz-app-size-dialog.blp:144 msgid "Caches, settings, and other app data" msgstr "å¿«å–ã€è¨­å®šä»¥åŠå…¶ä»–應用程å¼è³‡æ–™" #: src/bz-app-size-dialog.blp:165 msgid "Cache" msgstr "å¿«å–" #: src/bz-app-size-dialog.blp:166 msgid "Temporary cached data" msgstr "暫時快å–的資料" #: src/bz-app-size-dialog.blp:176 msgid "Clear Cache" msgstr "清除快å–" #: src/bz-app-size-dialog.c:99 msgid "Installed Runtime Size" msgstr "安è£å¾Œçš„執行環境大å°" #: src/bz-app-size-dialog.c:99 msgid "Runtime Download Size" msgstr "執行環境的下載大å°" #: src/bz-app-size-dialog.c:111 src/bz-bundle-install-dialog.c:185 #: src/context-tile-callbacks.c:104 src/context-tile-callbacks.c:393 #: src/context-tile-callbacks.c:410 msgid "N/A" msgstr "N/A" #: src/bz-app-size-dialog.c:226 msgid "App Size" msgstr "應用程å¼å¤§å°" #: src/bz-app-tile.blp:57 src/bz-developer-badge.c:98 #: src/bz-rich-app-tile.blp:106 src/bz-rich-app-tile.c:443 msgid "Verified" msgstr "已驗證" #. Translators: As in 'The app is installed'. #: src/bz-app-tile.blp:88 src/context-tile-callbacks.c:135 #: src/bz-releases-list.c:206 msgid "Installed" msgstr "已安è£" #: src/bz-application.c:786 msgid "The Bazaar Contributors" msgstr "Bazaar è²¢ç»è€…" #. Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 #: src/bz-application.c:789 msgid "translator-credits" msgstr "" "Shihfu Juan <xlion@xlion.tw>, 2025,2026\n" "Peter Dave Hello <hsu@peterdavehello.org>, 2025\n" "Kisaragi Hiu <mail@kisaragi-hiu.com>, 2026" #: src/bz-application.c:799 msgid "Special Thanks" msgstr "特別感è¬" #: src/bz-application.c:857 msgid "Logged Out Successfully!" msgstr "å·²æˆåŠŸç™»å‡ºï¼" #: src/bz-application.c:995 msgid "Performing setup…" msgstr "正在進行設定…" #: src/bz-application.c:1087 msgid "Set Up System Flathub?" msgstr "設定系統 Flathub?" #: src/bz-application.c:1090 msgid "" "The system Flathub remote is not set up. Bazaar requires Flathub to be " "configured on the system Flatpak installation to browse and install " "applications.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "未設定系統 Flathub é ç«¯ã€‚Bazaar 需è¦ç³»çµ± Flatpak 有設定好 Flathub æ‰èƒ½ç€è¦½èˆ‡" "å®‰è£æ‡‰ç”¨ç¨‹å¼ã€‚\n" "\n" "您ä»å¯ä½¿ç”¨ Bazaar 來ç€è¦½æˆ–移除已安è£çš„æ‡‰ç”¨ç¨‹å¼ã€‚" #: src/bz-application.c:1097 msgid "Set Up Flathub?" msgstr "è¦è¨­å®š Flathub 嗎?" #: src/bz-application.c:1100 msgid "" "Flathub is not set up on this system. You will not be able to browse and " "install applications in Bazaar if its unavailable.\n" "\n" "You can still use Bazaar to browse and remove already installed apps." msgstr "" "Flathub 未在此系統上設定完æˆã€‚若無法使用 Flathub,您將無法在 Bazaar 中ç€è¦½æˆ–" "å®‰è£æ‡‰ç”¨ç¨‹å¼ã€‚\n" "\n" "您ä»å¯ä½¿ç”¨ Bazaar 來ç€è¦½æˆ–移除已安è£çš„æ‡‰ç”¨ç¨‹å¼ã€‚" #: src/bz-application.c:1106 msgid "Later" msgstr "ç¨å¾Œ" #: src/bz-application.c:1107 msgid "Set Up Flathub" msgstr "設定 Flathub" #: src/bz-application.c:1626 msgid "A backend error occurred" msgstr "發生後端錯誤" #: src/bz-application.c:1826 src/bz-application.c:4024 msgid "Refreshing…" msgstr "釿–°æ•´ç†ä¸­â€¦" #: src/bz-application.c:1990 src/bz-application.c:4022 #, c-format msgid "Loading %d apps…" msgstr "正在載入 %d 個應用程å¼â€¦" #: src/bz-application.c:2043 msgid "Failed to open file" msgstr "開啟檔案失敗" #: src/bz-application.c:2141 msgid "An initialization error occurred" msgstr "發生åˆå§‹åŒ–錯誤" #: src/bz-application.c:2535 msgid "Checking for updates…" msgstr "正在檢查更新…" #: src/bz-application.c:2591 msgid "Failed to check for updates" msgstr "檢查更新失敗" #: src/bz-application.c:3735 msgid "Malformed Link" msgstr "䏿­£ç¢ºçš„連çµ" #: src/bz-application.c:3736 msgid "" "The link used to open this app has incorrect capitalization and may stop " "working in the future.\n" "\n" "This is most likely caused by KRunner sending incorrect app IDs" msgstr "" "用來開啟此應用程å¼çš„連çµçš„大å°å¯«ä¸æ­£ç¢ºï¼Œå¯èƒ½åœ¨æœªä¾†æœƒä¸å†èƒ½å¤ ä½¿ç”¨ã€‚\n" "\n" "這通常是因為 KRunner 傳é€äº†ä¸æ­£ç¢ºçš„æ‡‰ç”¨ç¨‹å¼ ID 所造æˆçš„" #: src/bz-application.c:3744 msgid "Could not find app" msgstr "找ä¸åˆ°æ‡‰ç”¨ç¨‹å¼" #: src/bz-application.c:3775 msgid "Failed to load metainfo" msgstr "載入 metainfo 失敗" #: src/bz-application.c:4026 msgid "Writing to cache…" msgstr "正在寫入快å–…" #: src/bz-apps-page.blp:97 msgid "Show All" msgstr "顯示全部" #: src/bz-apps-page.c:214 #, c-format msgid "All \"%s\"" msgstr "全部 「%sã€" #: src/bz-apps-page.c:462 src/bz-subcategory-list.c:89 #, c-format msgid "%d Applications" msgstr "%d 個應用程å¼" #: src/bz-article.blp:86 msgid "Failed to Load Article" msgstr "載入文章失敗" #: src/bz-bundle-install-dialog.blp:21 src/bz-bundle-install-dialog.blp:27 msgid "Bundle Installation" msgstr "Bundle 安è£" #: src/bz-bundle-install-dialog.blp:198 msgid "Additional dependencies may take extra space" msgstr "é¡å¤–ä¾è³´å¯èƒ½æœƒéœ€è¦æ›´å¤šç©ºé–“" #: src/bz-bundle-install-dialog.blp:232 msgid "" "Installing this app may require adding a new software source. Other apps " "from this source will show up in Bazaar.\n" "\n" "Only add this source if you're sure you trust it." msgstr "" "å®‰è£æ­¤æ‡‰ç”¨ç¨‹å¼å¯èƒ½éœ€è¦åŠ å…¥æ–°çš„è»Ÿé«”ä¾†æºã€‚加入後此來æºçš„æ‡‰ç”¨ç¨‹å¼æœƒå‡ºç¾åœ¨ " "Bazaar 當中。\n" "\n" "è«‹ç¢ºå®šåƒ…åœ¨ä¿¡ä»»è©²ä¾†æºæ™‚æ‰å°‡å®ƒåŠ å…¥ã€‚" #: src/bz-bundle-install-dialog.blp:412 msgid "Successfully Installed!" msgstr "æˆåŠŸå®‰è£ï¼" #: src/bz-bundle-install-dialog.blp:437 src/bz-bundle-install-dialog.blp:522 #: src/bz-rich-app-tile.blp:199 src/bz-transaction-tile.blp:298 msgid "Open" msgstr "開啟" #: src/bz-bundle-install-dialog.blp:447 src/bz-bundle-install-dialog.blp:532 msgid "Show App Details" msgstr "顯示應用程å¼è©³ç´°è³‡è¨Š" #: src/bz-bundle-install-dialog.blp:498 msgid "Already Installed" msgstr "已安è£" #: src/bz-bundle-install-dialog.blp:544 msgid "Installation Failed" msgstr "安è£å¤±æ•—" #: src/bz-bundle-install-dialog.c:168 msgid "Unknown install size" msgstr "未知安è£å¤§å°" #: src/bz-bundle-install-dialog.c:171 #, c-format msgid "About %s to install" msgstr "安è£éœ€è¦å¤§ç´„ %s" #: src/bz-bundle-install-dialog.c:214 msgid "No special permissions" msgstr "無特殊權é™" #: src/context-tile-callbacks.c:68 msgid "---" msgstr "---" #. Translators: M is the suffix for millions #: src/context-tile-callbacks.c:75 #, c-format msgid "%.*fM" msgstr "%.*fM" #. Translators: K is the suffix for thousands #: src/context-tile-callbacks.c:82 #, c-format msgid "%.*fK" msgstr "%.*fK" #: src/context-tile-callbacks.c:92 #, c-format msgid "%d downloads in the last month" msgstr "在éŽåŽ»ä¸€å€‹æœˆå…§æœ‰ %d 次下載" #: src/context-tile-callbacks.c:132 #, c-format msgid "+%s runtime" msgstr "+%s 執行環境" #: src/context-tile-callbacks.c:135 msgid "Download" msgstr "下載" #: src/context-tile-callbacks.c:155 msgid "Size information unavailable" msgstr "大å°è³‡è¨ŠæœªçŸ¥" #: src/context-tile-callbacks.c:158 #, c-format msgid "Download size of %s" msgstr "下載 %s 的大å°" #: src/context-tile-callbacks.c:191 msgid "All Ages" msgstr "所有年齡層" #: src/context-tile-callbacks.c:203 msgid "Age rating information unavailable" msgstr "年齡分級資訊未知" #: src/context-tile-callbacks.c:208 msgid "Suitable for all ages" msgstr "é©åˆæ‰€æœ‰å¹´é½¡å±¤" #: src/context-tile-callbacks.c:210 #, c-format msgid "Suitable for ages %d and up" msgstr "é©åˆ %d 歲以上" #: src/context-tile-callbacks.c:243 src/context-tile-callbacks.c:248 #: src/context-tile-callbacks.c:276 src/context-tile-callbacks.c:285 msgid "Unknown" msgstr "未知" #: src/context-tile-callbacks.c:253 #, c-format msgid "Free software licensed under %s" msgstr "ä¾ %s 授權的自由軟體" #: src/context-tile-callbacks.c:258 msgid "Free software" msgstr "自由軟體" #: src/context-tile-callbacks.c:261 msgid "Proprietary Software" msgstr "專有軟體" #: src/context-tile-callbacks.c:264 #, c-format msgid "Special License: %s" msgstr "特殊授權:%s" #. TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis" #: src/context-tile-callbacks.c:282 msgid "Free Software" msgstr "自由軟體" #: src/context-tile-callbacks.c:288 src/bz-license-dialog.c:133 msgid "Proprietary" msgstr "專有" #: src/context-tile-callbacks.c:290 src/bz-license-dialog.c:135 msgid "Special License" msgstr "特殊授權" #: src/context-tile-callbacks.c:310 msgid "Adaptive" msgstr "支æ´å¤šè£ç½®" #: src/context-tile-callbacks.c:310 msgid "Desktop Only" msgstr "åƒ…é™æ¡Œé¢" #: src/context-tile-callbacks.c:316 msgid "Works on desktop, tablets, and phones" msgstr "å¯åœ¨é›»è…¦ã€å¹³æ¿èˆ‡æ‰‹æ©Ÿä¸Šä½¿ç”¨" #: src/context-tile-callbacks.c:317 msgid "May not work on mobile devices" msgstr "å¯èƒ½ç„¡æ³•在行動è£ç½®ä¸Šä½¿ç”¨" #: src/context-tile-callbacks.c:400 src/bz-safety-dialog.blp:79 msgid "Safe" msgstr "安全" #: src/context-tile-callbacks.c:402 src/context-tile-callbacks.c:404 msgid "Low Risk" msgstr "低風險" #: src/context-tile-callbacks.c:406 msgid "Medium Risk" msgstr "中度風險" #: src/context-tile-callbacks.c:408 msgid "High Risk" msgstr "高風險" #: src/bz-curated-view.blp:24 src/bz-favorites-page.blp:46 #: src/bz-flathub-page.blp:19 src/bz-full-view.blp:30 src/bz-full-view.blp:41 #: src/bz-library-page.blp:67 src/bz-user-data-page.blp:30 msgid "Empty" msgstr "無內容" #: src/bz-curated-view.blp:28 msgid "No Curation" msgstr "未經人工策é¸" #: src/bz-curated-view.blp:30 msgid "" "There is no curation information provided on this system. You can still " "browse apps on Flathub" msgstr "此系統未æä¾›äººå·¥ç­–é¸è³‡è¨Šã€‚ä½ ä»å¯ç€è¦½ Flathub 上的應用程å¼" #: src/bz-curated-view.blp:34 msgid "Browse Flathub" msgstr "ç€è¦½ Flathub" #: src/bz-curated-view.blp:47 src/bz-curated-view.blp:51 msgid "Offline" msgstr "離線" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-curated-view.blp:57 src/bz-flathub-page.blp:61 #: src/bz-search-pill-list.c:67 msgid "Browser" msgstr "ç€è¦½" #: src/bz-developer-badge.c:94 src/bz-developer-badge.c:98 msgid "Not Verified" msgstr "未驗證" #: src/bz-developer-badge.c:213 msgid "Developer information not available." msgstr "無法å–得開發者資訊。" #: src/bz-developer-badge.c:219 src/bz-developer-badge.c:233 #, c-format msgid "" "The ownership of the %s app ID has not been verified and it may be a " "community package." msgstr "æ‡‰ç”¨ç¨‹å¼ ID %s 的所有權尚未經éŽé©—證,å¯èƒ½ç‚ºç¤¾ç¾¤æä¾›çš„套件。" #: src/bz-developer-badge.c:237 #, c-format msgid "" "The ownership of the %s app ID has been manually verified by the Flathub " "team." msgstr "æ‡‰ç”¨ç¨‹å¼ ID %s 的所有權已由 Flathub 團隊人工驗證。" #: src/bz-developer-badge.c:253 #, c-format msgid "" "The ownership of the %1$s app ID has been verified by <b>%2$s</b> on " "<b>%3$s</b>." msgstr "æ‡‰ç”¨ç¨‹å¼ ID %1$s 的所有權已由 <b>%2$s</b> æ–¼ <b>%3$s</b> 驗證。" #: src/bz-developer-badge.c:260 #, c-format msgid "The ownership of the %1$s app ID has been verified using %2$s." msgstr "æ‡‰ç”¨ç¨‹å¼ ID %1$s 的所有權已é€éŽ %2$s 驗證。" #: src/bz-developer-badge.c:264 #, c-format msgid "The ownership of the %s app ID has been verified." msgstr "æ‡‰ç”¨ç¨‹å¼ ID %s 的所有權已完æˆé©—證。" #: src/bz-donations-dialog.blp:74 msgid "Full Release Notes" msgstr "完整發行註記" #: src/bz-donations-dialog.blp:108 msgid "This release was made possible by users like you!" msgstr "é€™å€‹ç‰ˆæœ¬ç”±å¦‚åŒæ‚¨çš„使用者支æŒè€Œè®Šå¾—å¯èƒ½ï¼" #: src/bz-donations-dialog.blp:116 msgid "" "I love making Bazaar, but I cannot do it alone. Help support further " "development by donating on Ko-Fi." msgstr "" "我熱愛製作 Bazaar,但我沒辦法é è‡ªå·±ä¸€å€‹äººç¨è‡ªå®Œæˆã€‚請到 Ko-Fi ææ¬¾ä¾†æ”¯æŒæŒçºŒ" "的開發。" #: src/bz-donations-dialog.blp:131 msgid "Donate to Bazaar" msgstr "ææ¬¾çµ¦ Bazaar" #. Translators: the %s format specifier will be something along the lines of "0.7.6" etc #: src/bz-donations-dialog.c:227 #, c-format msgid "What's New in %s?" msgstr "%s 有什麼新功能?" #. Translators: this is a release date label, like "Released February 9, 2026" #: src/bz-donations-dialog.c:243 msgid "Released %B %-e, %Y" msgstr "æ–¼%Yå¹´%m月%d日釋出" #: src/bz-entry-group-util.c:73 msgid "Choose an Installation" msgstr "鏿“‡è¦ä½¿ç”¨çš„安è£é …ç›®" #: src/bz-entry-group-util.c:76 msgid "" "You have multiple versions of this app installed. Which one would you like " "to proceed with?" msgstr "æ‚¨å·²å®‰è£æ­¤æ‡‰ç”¨ç¨‹å¼çš„多個版本。è¦ç¹¼çºŒä½¿ç”¨å“ªä¸€å€‹ç‰ˆæœ¬ï¼Ÿ" #: src/bz-entry-group-util.c:80 src/bz-rich-app-tile.blp:233 msgid "Cancel" msgstr "å–æ¶ˆ" #: src/bz-entry-selection-row.blp:17 msgid "For This User Only" msgstr "僅此使用者" #: src/bz-entry-selection-row.c:112 msgid "this user" msgstr "這個使用者" #: src/bz-entry-selection-row.c:112 msgid "all users" msgstr "所有使用者" #: src/bz-error-dialog.blp:36 src/error.c:69 src/error.c:88 #: src/bz-safety-dialog.blp:98 msgid "Details" msgstr "詳細資訊" #: src/bz-error-dialog.blp:47 msgid "Copy" msgstr "複製" #: src/bz-error-dialog.c:56 src/bz-screenshot-page.c:408 #: src/bz-share-list.c:364 msgid "Copied!" msgstr "已複製ï¼" #: src/bz-favorite-button.blp:14 msgid "Favorite Count" msgstr "æ”¶è—æ•¸é‡" #: src/bz-favorite-button.c:388 msgid "Failed to update favorite" msgstr "æ›´æ–°æ”¶è—失敗" #: src/bz-favorite-button.c:434 msgid "Log in with Flathub to manage favorites" msgstr "登入至 Flathub ä»¥ç®¡ç†æœ€æ„›" #: src/bz-favorite-button.c:440 msgid "Log In" msgstr "登入" #: src/bz-favorites-page.blp:5 src/bz-favorites-page.blp:56 #: src/bz-window.blp:335 msgid "Favorites" msgstr "æ”¶è—" #: src/bz-favorites-page.blp:17 src/bz-section-view.blp:86 msgid "Install All" msgstr "安è£å…¨éƒ¨" #: src/bz-favorites-page.blp:34 src/bz-user-data-page.blp:19 msgid "Loading" msgstr "載入中" #: src/bz-favorites-page.blp:49 msgid "No Favorites" msgstr "沒有收è—" #: src/bz-favorites-page.blp:50 msgid "Applications you mark as favorite will appear here" msgstr "您所收è—的應用程å¼å°‡æœƒé¡¯ç¤ºåœ¨é€™è£¡" #: src/bz-favorites-tile.blp:60 msgid "Support This Application" msgstr "æ”¯æ´æ­¤æ‡‰ç”¨ç¨‹å¼" #: src/bz-favorites-tile.blp:109 msgid "Remove From Favorites" msgstr "從收è—中移除" #: src/bz-favorites-tile.c:353 msgid "Failed to remove favorite" msgstr "移除收è—失敗" #: src/bz-featured-carousel.blp:32 msgid "Previous" msgstr "上一個" #: src/bz-featured-carousel.blp:55 msgid "Next" msgstr "下一個" #: src/bz-flathub-category.c:95 msgid "Editing" msgstr "編輯" #: src/bz-flathub-category.c:96 msgid "Midi" msgstr "MIDI" #: src/bz-flathub-category.c:97 msgid "Mixer" msgstr "混音" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-flathub-category.c:98 src/bz-search-pill-list.c:77 msgid "Music" msgstr "音樂" #: src/bz-flathub-category.c:99 msgid "Player" msgstr "播放程å¼" #: src/bz-flathub-category.c:100 msgid "Recorder" msgstr "錄音機" #: src/bz-flathub-category.c:101 msgid "Sequencer" msgstr "音åºå™¨" #: src/bz-flathub-category.c:102 msgid "Tuner" msgstr "調諧器" #: src/bz-flathub-category.c:103 msgid "TV" msgstr "電視" #: src/bz-flathub-category.c:108 msgid "Emulation" msgstr "模擬器" #: src/bz-flathub-category.c:109 msgid "Action" msgstr "動作" #: src/bz-flathub-category.c:110 msgid "Adventure" msgstr "冒險" #: src/bz-flathub-category.c:111 msgid "Arcade" msgstr "街機" #: src/bz-flathub-category.c:112 msgid "Blocks" msgstr "方塊" #: src/bz-flathub-category.c:113 msgid "Board" msgstr "棋盤" #: src/bz-flathub-category.c:114 msgid "Card" msgstr "å¡ç‰‡" #: src/bz-flathub-category.c:115 msgid "Kids" msgstr "å…’ç«¥" #: src/bz-flathub-category.c:116 msgid "Logic" msgstr "é‚輯" #: src/bz-flathub-category.c:117 msgid "Role Playing" msgstr "角色扮演" #: src/bz-flathub-category.c:118 msgid "Shooter" msgstr "射擊" #: src/bz-flathub-category.c:119 msgid "Simulation" msgstr "模擬" #: src/bz-flathub-category.c:120 msgid "Sports" msgstr "é‹å‹•" #: src/bz-flathub-category.c:121 msgid "Strategy" msgstr "ç­–ç•¥" #: src/bz-flathub-category.c:126 msgid "Browsers" msgstr "ç€è¦½å™¨" #: src/bz-flathub-category.c:127 msgid "Chat" msgstr "èŠå¤©" #: src/bz-flathub-category.c:128 msgid "Mail" msgstr "郵件" #: src/bz-flathub-category.c:129 msgid "File Sharing" msgstr "檔案分享" #: src/bz-flathub-category.c:134 msgid "Audio & Video" msgstr "影音" #: src/bz-flathub-category.c:134 msgid "Media" msgstr "媒體" #: src/bz-flathub-category.c:134 msgid "More Audio & Video" msgstr "更多影音" #: src/bz-flathub-category.c:135 msgid "Developer Tools" msgstr "開發者工具" #: src/bz-flathub-category.c:135 msgid "Develop" msgstr "開發" #: src/bz-flathub-category.c:135 msgid "More Developer Tools" msgstr "更多開發者工具" #: src/bz-flathub-category.c:136 msgid "Education" msgstr "教育" #: src/bz-flathub-category.c:136 msgid "Learn" msgstr "學習" #: src/bz-flathub-category.c:136 msgid "More Education" msgstr "更多教育" #: src/bz-flathub-category.c:137 msgid "Gaming" msgstr "éŠæˆ²" #: src/bz-flathub-category.c:137 msgid "Play" msgstr "éŠçŽ©" #: src/bz-flathub-category.c:137 msgid "More Gaming" msgstr "æ›´å¤šéŠæˆ²" #: src/bz-flathub-category.c:138 msgid "Graphics & Photography" msgstr "å½±åƒèˆ‡æ”å½±" #: src/bz-flathub-category.c:138 msgid "Create" msgstr "創作" #: src/bz-flathub-category.c:138 msgid "More Graphics & Photography" msgstr "更多影åƒèˆ‡æ”å½±" #: src/bz-flathub-category.c:139 msgid "Networking" msgstr "網路" #: src/bz-flathub-category.c:139 msgid "Internet" msgstr "網際網路" #: src/bz-flathub-category.c:139 msgid "More Networking" msgstr "更多網路" #: src/bz-flathub-category.c:140 msgid "Productivity" msgstr "生產力" #: src/bz-flathub-category.c:140 msgid "Work" msgstr "工作" #: src/bz-flathub-category.c:140 msgid "More Productivity" msgstr "更多生產力" #: src/bz-flathub-category.c:141 msgid "Science" msgstr "ç§‘å­¸" #: src/bz-flathub-category.c:141 msgid "More Science" msgstr "更多科學" #: src/bz-flathub-category.c:142 msgid "System" msgstr "系統" #: src/bz-flathub-category.c:142 msgid "More System" msgstr "更多系統" #: src/bz-flathub-category.c:143 msgid "Utilities" msgstr "工具程å¼" #: src/bz-flathub-category.c:143 src/bz-flathub-page.blp:437 msgid "Tools" msgstr "工具" #: src/bz-flathub-category.c:143 msgid "More Utilities" msgstr "更多工具程å¼" #: src/bz-flathub-category.c:144 src/bz-flathub-page.blp:109 #: src/bz-flathub-page.blp:141 msgid "Trending" msgstr "近期熱門" #: src/bz-flathub-category.c:144 msgid "More Trending" msgstr "更多近期熱門" #: src/bz-flathub-category.c:145 src/bz-flathub-page.blp:115 #: src/bz-flathub-page.blp:174 msgid "Popular" msgstr "æœ€å—æ­¡è¿Ž" #: src/bz-flathub-category.c:145 msgid "More Popular" msgstr "æ›´å¤šæœ€å—æ­¡è¿Ž" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:163 msgid "Recently Added" msgstr "最近新增" #: src/bz-flathub-category.c:146 src/bz-flathub-page.blp:121 msgid "New" msgstr "最新" #: src/bz-flathub-category.c:146 msgid "More New" msgstr "更多最新" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:152 msgid "Recently Updated" msgstr "最近更新" #: src/bz-flathub-category.c:147 src/bz-flathub-page.blp:127 msgid "Updated" msgstr "已更新" #: src/bz-flathub-category.c:147 msgid "More Updated" msgstr "更多更新" #: src/bz-flathub-category.c:148 msgid "Mobile" msgstr "行動è£ç½®" #: src/bz-flathub-category.c:148 msgid "More Mobile" msgstr "更多行動è£ç½®" #: src/bz-flathub-category.c:149 msgid "Adwaita" msgstr "Adwaita" #: src/bz-flathub-category.c:149 msgid "More Adwaita" msgstr "更多 Adwaita" #: src/bz-flathub-category.c:150 msgid "KDE Apps" msgstr "KDE 應用程å¼" #: src/bz-flathub-category.c:150 msgid "More KDE Apps" msgstr "更多 KDE 應用程å¼" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:419 msgid "Games" msgstr "éŠæˆ²" #: src/bz-flathub-category.c:151 src/bz-flathub-page.blp:479 msgid "More Games" msgstr "æ›´å¤šéŠæˆ²" #: src/bz-flathub-category.c:152 src/bz-flathub-page.blp:425 msgid "Emulators" msgstr "模擬器" #: src/bz-flathub-category.c:152 msgid "More Emulators" msgstr "更多模擬器" #: src/bz-flathub-category.c:153 src/bz-flathub-page.blp:431 msgid "Launchers" msgstr "啟動器" #: src/bz-flathub-category.c:153 msgid "More Game Launchers" msgstr "æ›´å¤šéŠæˆ²å•Ÿå‹•器" #: src/bz-flathub-category.c:154 msgid "Game Tools" msgstr "éŠæˆ²å·¥å…·" #: src/bz-flathub-category.c:154 msgid "More Game Tools" msgstr "æ›´å¤šéŠæˆ²å·¥å…·" #: src/bz-flathub-page.blp:23 msgid "Flathub Not Added" msgstr "尚未加入 Flathub" #: src/bz-flathub-page.blp:24 msgid "The Flathub remote was not found on any of your Flatpak installations" msgstr "在您的任何 Flatpak 安è£ä¸­éƒ½æ‰¾ä¸åˆ° Flathub é ç«¯" #: src/bz-flathub-page.blp:30 msgid "Flathub Unavailable" msgstr "Flathub 無法使用" #: src/bz-flathub-page.blp:34 msgid "Can't Reach Flathub" msgstr "無法連線至 Flathub" #: src/bz-flathub-page.blp:35 msgid "You can still manage and search for apps." msgstr "您ä»å¯ç®¡ç†æˆ–æœå°‹æ‡‰ç”¨ç¨‹å¼ã€‚" #: src/bz-flathub-page.blp:41 msgid "Search Apps" msgstr "æœå°‹æ‡‰ç”¨ç¨‹å¼" #: src/bz-flathub-page.blp:52 msgid "Reconnect" msgstr "釿–°é€£ç·š" #: src/bz-flathub-page.blp:202 msgid "App of the Day" msgstr "ä»Šæ—¥ç²¾é¸æ‡‰ç”¨ç¨‹å¼" #: src/bz-flathub-page.blp:265 msgid "On the Go" msgstr "隨時隨地" #: src/bz-flathub-page.blp:277 msgid "Apps for your Linux phones and tablets" msgstr "é©ç”¨æ–¼æ‚¨çš„ Linux 手機與平æ¿çš„æ‡‰ç”¨ç¨‹å¼" #: src/bz-flathub-page.blp:288 src/bz-flathub-page.blp:323 msgid "More Mobile Apps" msgstr "更多行動應用程å¼" #: src/bz-flathub-page.blp:381 msgid "We​ ♥​ Games" msgstr "我們 ♥ éŠæˆ²" #: src/bz-flathub-page.blp:394 msgid "Games and apps to run your favorite titles" msgstr "用來執行您最愛作å“çš„éŠæˆ²èˆ‡æ‡‰ç”¨ç¨‹å¼" #: src/bz-full-view.blp:34 src/bz-library-page.blp:78 #: src/bz-library-page.blp:82 msgid "No Results" msgstr "æ²’æœ‰çµæžœ" #: src/bz-full-view.blp:35 msgid "Try a different search query" msgstr "請嘗試ä¸åŒçš„æœå°‹é—œéµå­—" #: src/bz-full-view.blp:47 msgid "Content" msgstr "內容" #: src/bz-full-view.blp:106 msgid "" "This is a local preview, some details may differ from the published listing" msgstr "這是本地é è¦½ï¼Œä¸€äº›ç´°ç¯€å¯èƒ½èˆ‡ç™¼ä½ˆå¾Œçš„é é¢ä¸åŒ" #: src/bz-full-view.blp:109 msgid "Preview Store Appearance" msgstr "é è¦½å•†åº—外觀" #: src/bz-full-view.blp:236 msgid "_Support" msgstr "贊助(_S)" #: src/bz-full-view.blp:461 msgid "" "This app uses a runtime that no longer receives updates or security fixes. " "It may become unsafe to use." msgstr "" "此應用程å¼ä½¿ç”¨çš„執行環境已ä¸å†æŽ¥æ”¶æ›´æ–°æˆ–安全修補,使用上å¯èƒ½å­˜åœ¨å®‰å…¨é¢¨éšªã€‚" #: src/bz-full-view.blp:540 msgid "Trash Data" msgstr "將資料移至垃圾桶" #: src/bz-full-view.blp:603 msgid "Add-ons" msgstr "附加元件" #: src/bz-full-view.blp:638 msgid "More Add-Ons" msgstr "更多附加元件" #: src/bz-full-view.blp:649 msgid "Links" msgstr "連çµ" #: src/bz-full-view.c:181 msgid "No URL" msgstr "沒有網å€" #: src/bz-full-view.c:199 msgid "" "This app has a FLOSS license, meaning the source code can be audited for " "safety." msgstr "" "此應用程å¼å…·æœ‰ FLOSS(自由且開æºï¼‰æŽˆæ¬Šï¼Œé€™æ„味著其原始碼å¯ä¾›å¯©æŸ¥ä»¥ç¢ºä¿å®‰å…¨" "性。" #: src/bz-full-view.c:200 msgid "" "This app has a proprietary license, meaning the source code is developed " "privately and cannot be audited by an independent third party." msgstr "æ­¤æ‡‰ç”¨ç¨‹å¼æŽ¡ç”¨å°ˆæœ‰æŽˆæ¬Šï¼Œè¡¨ç¤ºå…¶åŽŸå§‹ç¢¼ç‚ºç§æœ‰ï¼Œç„¡æ³•由第三方ç¨ç«‹å¯©æŸ¥ã€‚" #: src/bz-full-view.c:207 msgid "More Apps" msgstr "更多應用程å¼" #: src/bz-full-view.c:208 #, c-format msgid "More Apps by %s" msgstr "更多由 %s 製作的應用程å¼" #: src/bz-full-view.c:215 msgid "Other Apps by this Developer" msgstr "其他由此開發者製作的應用程å¼" #: src/bz-full-view.c:217 src/bz-full-view.c:317 #, c-format msgid "Other Apps by %s" msgstr "å…¶ä»–ç”± %s 製作的應用程å¼" #: src/bz-full-view.c:226 #, c-format msgid "%s is not installed, but it still has <b>%s</b> of data present." msgstr "%s 並未安è£ï¼Œä½†ä»ä¿ç•™ <b>%s</b> 的資料。" #: src/bz-full-view.c:319 msgid "Other Apps" msgstr "其他應用程å¼" #: src/bz-full-view.c:321 #, c-format msgid "%d Application" msgid_plural "%d Applications" msgstr[0] "%d 個應用程å¼" #: src/bz-full-view.c:537 src/bz-user-data-tile.c:144 msgid "Failed to Remove User Data" msgstr "移除使用者資料失敗" #: src/bz-hardware-support-dialog.blp:7 src/bz-hardware-support-dialog.blp:31 msgid "Hardware Support" msgstr "硬體支æ´" #: src/bz-hardware-support-dialog.c:62 msgid "Keyboard support" msgstr "éµç›¤æ”¯æ´" #: src/bz-hardware-support-dialog.c:64 msgid "Requires keyboards" msgstr "需è¦éµç›¤" #: src/bz-hardware-support-dialog.c:65 msgid "Recommends keyboards" msgstr "建議æ­é…éµç›¤ä½¿ç”¨" #: src/bz-hardware-support-dialog.c:66 msgid "Supports keyboards" msgstr "支æ´éµç›¤" #: src/bz-hardware-support-dialog.c:67 msgid "Unknown support for keyboards" msgstr "éµç›¤æ”¯æ´æƒ…æ³æœªçŸ¥" #: src/bz-hardware-support-dialog.c:69 msgid "Mouse support" msgstr "滑鼠支æ´" #: src/bz-hardware-support-dialog.c:71 msgid "Requires mice or pointing devices" msgstr "éœ€è¦æ»‘é¼ æˆ–æŒ‡å‘æ€§è£ç½®" #: src/bz-hardware-support-dialog.c:72 msgid "Recommends mice or pointing devices" msgstr "建議æ­é…æ»‘é¼ æˆ–æŒ‡å‘æ€§è£ç½®" #: src/bz-hardware-support-dialog.c:73 msgid "Supports mice or pointing devices" msgstr "æ”¯æ´æ»‘é¼ æˆ–æŒ‡å‘æ€§è£ç½®" #: src/bz-hardware-support-dialog.c:74 msgid "Unknown support for mice or pointing devices" msgstr "æ»‘é¼ æˆ–æŒ‡å‘æ€§è£ç½®æ”¯æ´æƒ…æ³æœªçŸ¥" #: src/bz-hardware-support-dialog.c:76 msgid "Touchscreen support" msgstr "觸控螢幕支æ´" #: src/bz-hardware-support-dialog.c:78 msgid "Requires touchscreens" msgstr "需è¦è§¸æŽ§èž¢å¹•" #: src/bz-hardware-support-dialog.c:79 msgid "Recommends touchscreens" msgstr "建議æ­é…觸控螢幕" #: src/bz-hardware-support-dialog.c:80 msgid "Supports touchscreens" msgstr "支æ´è§¸æŽ§èž¢å¹•" #: src/bz-hardware-support-dialog.c:81 msgid "Unknown support for touchscreens" msgstr "è§¸æŽ§èž¢å¹•æ”¯æ´æƒ…æ³æœªçŸ¥" #: src/bz-hardware-support-dialog.c:160 msgid "Mobile support" msgstr "行動è£ç½®æ”¯æ´" #: src/bz-hardware-support-dialog.c:161 msgid "Works on mobile devices" msgstr "å¯åœ¨è¡Œå‹•è£ç½®ä¸Šä½¿ç”¨" #: src/bz-hardware-support-dialog.c:161 msgid "May not work well on mobile devices" msgstr "在行動è£ç½®ä¸Šçš„使用體驗å¯èƒ½ä¸ä½³" #: src/bz-hardware-support-dialog.c:166 msgid "Desktop support" msgstr "桌é¢é›»è…¦æ”¯æ´" #: src/bz-hardware-support-dialog.c:167 msgid "Works well on large screens" msgstr "在大螢幕上é‹ä½œè‰¯å¥½" #: src/bz-hardware-support-dialog.c:201 #, c-format msgid "%s works best on specific hardware" msgstr "%s 在特定硬體上å¯ç™¼æ®æœ€ä½³æ•ˆèƒ½" #: src/bz-hardware-support-dialog.c:209 #, c-format msgid "%s works on most devices" msgstr "%s å¯åœ¨å¤šæ•¸è£ç½®ä¸Šä½¿ç”¨" #: src/bz-install-controls.blp:58 msgid "_Open" msgstr "開啟(_O)" #: src/bz-install-controls.blp:73 src/bz-install-controls.blp:128 msgid "Uninstall Application" msgstr "移除應用程å¼" #: src/bz-install-controls.blp:83 src/bz-transaction-dialog.c:230 msgid "_Remove" msgstr "移除(_R)" #: src/bz-install-controls.blp:115 src/bz-updates-card.c:168 #: src/bz-updates-card.c:187 msgid "Update" msgstr "æ›´æ–°" #: src/bz-install-controls.blp:138 src/bz-installed-tile.blp:109 msgid "Remove" msgstr "移除" #: src/bz-install-controls.c:638 #, c-format msgid "Install %s from %s" msgstr "從 %2$s å®‰è£ %1$s" #: src/bz-install-controls.c:640 #, c-format msgid "Install %s" msgstr "å®‰è£ %s" #: src/bz-install-controls.wdgt:32 msgctxt "Install Controls" msgid "Cancel" msgstr "å–æ¶ˆ" #: src/bz-install-controls.wdgt:35 msgctxt "Install Controls" msgid "Cancelling" msgstr "æ­£åœ¨å–æ¶ˆ" #: src/bz-installed-tile.blp:80 msgid "Donate Button" msgstr "ææ¬¾æŒ‰éˆ•" #: src/bz-library-page.blp:32 msgid "Search installed apps" msgstr "æœå°‹å·²å®‰è£çš„æ‡‰ç”¨ç¨‹å¼" #: src/bz-library-page.blp:50 msgid "Clear search" msgstr "清除æœå°‹" #: src/bz-library-page.blp:71 msgid "No Apps Found" msgstr "找ä¸åˆ°ä»»ä½•應用程å¼" #: src/bz-library-page.blp:90 msgid "Search Store Instead" msgstr "改æœå°‹å•†åº—" #. Translators: . #: src/bz-library-page.blp:100 src/bz-window.blp:113 msgid "Library" msgstr "程å¼åº«" #: src/bz-library-page.blp:129 msgid "Pending Updates" msgstr "待處ç†çš„æ›´æ–°" #: src/bz-library-page.blp:156 msgid "Downloads" msgstr "下載次數" #: src/bz-library-page.blp:199 msgid "Recently Uninstalled" msgstr "最近解除安è£" #: src/bz-library-page.blp:250 msgid "Clear Finished Tasks" msgstr "清除已完æˆçš„作業" #: src/bz-library-page.blp:277 msgid "Sort Options" msgstr "排åºé¸é …" #: src/bz-library-page.blp:336 msgid "Sort By" msgstr "排åºä¾æ“š" #: src/bz-library-page.blp:350 msgid "Name" msgstr "å稱" #: src/bz-library-page.blp:356 msgid "Size" msgstr "大å°" #: src/bz-library-page.c:180 #, c-format msgid "No matches found for \"%s\" in the list of installed apps" msgstr "在已安è£çš„æ‡‰ç”¨ç¨‹å¼æ¸…單中找ä¸åˆ°ç¬¦åˆã€Œ%sã€çš„é …ç›®" #: src/bz-library-page.c:193 src/bz-updates-card.c:437 #, c-format msgid "%u Available Update" msgid_plural "%u Available Updates" msgstr[0] "%u 個å¯ç”¨æ›´æ–°" #: src/bz-library-page.c:203 #, c-format msgid "%u Installed App" msgid_plural "%u Installed Apps" msgstr[0] "%u 個已安è£çš„æ‡‰ç”¨ç¨‹å¼" #: src/bz-license-dialog.blp:87 msgid "Get Involved" msgstr "åƒèˆ‡è²¢ç»" #: src/bz-license-dialog.blp:114 msgid "Learn More" msgstr "了解更多" #: src/bz-license-dialog.c:127 msgid "Unknown License" msgstr "未知授權" #: src/bz-license-dialog.c:130 msgid "Community Built" msgstr "社群打造" #: src/bz-license-dialog.c:203 msgid "" "This app is developed in the open by an international community.\n" "\n" "You can participate and help make it even better." msgstr "" "此應用程å¼ç”±åœ‹éš›ç¤¾ç¾¤ä»¥é–‹æ”¾æ–¹å¼é–‹ç™¼ã€‚\n" "\n" "您å¯ä»¥åƒèˆ‡è²¢ç»ï¼Œå”助讓它變得更好。" #: src/bz-license-dialog.c:206 msgid "The license of this app is not known" msgstr "此應用程å¼çš„æŽˆæ¬Šè³‡è¨ŠæœªçŸ¥" #: src/bz-license-dialog.c:212 #, c-format msgid "" "This app is developed in the open by an international community, and " "released under the %s license.\n" "\n" "You can participate and help make it even better." msgstr "" "此應用程å¼ç”±åœ‹éš›ç¤¾ç¾¤ä»¥é–‹æ”¾æ–¹å¼é–‹ç™¼ï¼Œä¸¦ä»¥ %s 授權釋出。\n" "\n" "您å¯ä»¥åƒèˆ‡è²¢ç»ï¼Œå”助讓它變得更好。" #: src/bz-license-dialog.c:220 msgid "" "This app is not developed in the open, so only its developers know how it " "works. It may be insecure in ways that are hard to detect, and it may change " "without oversight.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "此應用程å¼ä¸¦éžä»¥é–‹æ”¾æ–¹å¼é–‹ç™¼ï¼Œå› æ­¤åªæœ‰é–‹ç™¼è€…知é“å…¶é‹ä½œæ–¹å¼ã€‚它å¯èƒ½å­˜åœ¨é›£ä»¥å¯Ÿ" "覺的安全風險,且å¯èƒ½åœ¨ç¼ºä¹ç›£ç£çš„æƒ…æ³ä¸‹è®Šæ›´ã€‚\n" "\n" "您å¯èƒ½å¯ä»¥ï¼Œä¹Ÿå¯èƒ½ç„¡æ³•å°æ­¤æ‡‰ç”¨ç¨‹å¼åšå‡ºè²¢ç»ã€‚" #: src/bz-license-dialog.c:226 #, c-format msgid "" "This app is developed under the special license %s.\n" "\n" "You may or may not be able to contribute to this app." msgstr "" "æ­¤æ‡‰ç”¨ç¨‹å¼æŽ¡ç”¨ç‰¹æ®ŠæŽˆæ¬Š %s 開發。\n" "\n" "您å¯èƒ½å¯ä»¥ï¼Œä¹Ÿå¯èƒ½ç„¡æ³•å°æ­¤æ‡‰ç”¨ç¨‹å¼åšå‡ºè²¢ç»ã€‚" #: src/bz-license-dialog.c:356 src/bz-safety-dialog.blp:101 msgid "License" msgstr "授權" #: src/bz-login-page.blp:6 src/bz-login-page.blp:45 msgid "Connect to Flathub" msgstr "連çµè‡³ Flathub" #: src/bz-login-page.blp:35 msgid "Something Went Wrong" msgstr "發生å•題" #: src/bz-login-page.blp:46 msgid "Log in to sync your favorited apps across devices" msgstr "登入來在è£ç½®ä¹‹é–“åŒæ­¥æ‚¨æ”¶è—哪些應用程å¼" #: src/bz-login-page.blp:113 msgid "Finish" msgstr "完æˆ" #: src/bz-login-page.c:665 #, c-format msgid "Hello, %s!" msgstr "您好,%sï¼" #: src/bz-metainfo-preview.c:84 msgid "Select Metainfo File" msgstr "é¸å– Metainfo 檔案" #: src/bz-metainfo-preview.c:87 msgid "Metainfo Files" msgstr "Metainfo 檔案" #: src/bz-metainfo-preview.c:141 msgid "Select Icon (Optional)" msgstr "é¸å–圖示(éžå¿…è¦ï¼‰" #: src/bz-metainfo-preview.c:144 msgid "Image Files" msgstr "å½±åƒæª”案" #: src/bz-metainfo-preview.c:231 msgid "Preview" msgstr "é è¦½" #: src/bz-preferences-dialog.blp:19 msgid "Preferences" msgstr "å好設定" #: src/bz-preferences-dialog.blp:25 msgid "Network connection is metered — automatic store data refresh is paused" msgstr "ç›®å‰çš„網路連線為計é‡é€£ç·š —— 已暫åœå•†åº—è³‡æ–™çš„è‡ªå‹•é‡æ–°æ•´ç†" #: src/bz-preferences-dialog.blp:26 src/bz-window.blp:235 msgid "Refresh Manually" msgstr "æ‰‹å‹•é‡æ–°æ•´ç†" #: src/bz-preferences-dialog.blp:31 msgid "Content Filters" msgstr "內容篩é¸" #: src/bz-preferences-dialog.blp:34 msgid "Free Software Only" msgstr "僅顯示自由軟體" #: src/bz-preferences-dialog.blp:35 msgid "Hide proprietary apps when browsing and searching" msgstr "在ç€è¦½èˆ‡æœå°‹æ™‚éš±è—專有應用程å¼" #: src/bz-preferences-dialog.blp:39 msgid "Flathub Results Only" msgstr "僅顯示 Flathub çµæžœ" #: src/bz-preferences-dialog.blp:40 msgid "Limit search and browse results to apps only available on Flathub" msgstr "在ç€è¦½èˆ‡æœå°‹æ™‚僅顯示在 Flathub 上æä¾›çš„æ‡‰ç”¨ç¨‹å¼" #: src/bz-preferences-dialog.blp:44 msgid "Verified Results Only" msgstr "åƒ…é¡¯ç¤ºå·²é©—è­‰çš„çµæžœ" #: src/bz-preferences-dialog.blp:45 msgid "Hide results that are not verified on Flathub" msgstr "éš±è—æœªç¶“ Flathub é©—è­‰çš„çµæžœ" #: src/bz-preferences-dialog.blp:49 msgid "Hide End-of-Life Apps" msgstr "éš±è—已終止支æ´çš„æ‡‰ç”¨ç¨‹å¼" #: src/bz-preferences-dialog.blp:50 msgid "Hide apps which are no longer supported by their developers" msgstr "éš±è—å·²ä¸å†ç”±é–‹ç™¼è€…支æ´çš„æ‡‰ç”¨ç¨‹å¼" #: src/bz-preferences-dialog.blp:55 msgid "Progress Bar Theme" msgstr "進度列主題" #: src/bz-preferences-dialog.c:32 msgid "Accent Color" msgstr "強調色" #: src/bz-preferences-dialog.c:33 msgid "Pride Colors" msgstr "驕傲旗é…色" #: src/bz-preferences-dialog.c:34 msgid "Lesbian Pride Colors" msgstr "女åŒå¿—驕傲旗é…色" #: src/bz-preferences-dialog.c:35 msgid "Male Homosexual Pride Colors" msgstr "ç”·åŒå¿—驕傲旗é…色" #: src/bz-preferences-dialog.c:36 msgid "Transgender Pride Colors" msgstr "跨性別驕傲旗é…色" #: src/bz-preferences-dialog.c:37 msgid "Nonbinary Pride Colors" msgstr "éžäºŒå…ƒæ€§åˆ¥é©•傲旗é…色" #: src/bz-preferences-dialog.c:38 msgid "Bisexual Pride Colors" msgstr "雙性戀驕傲旗é…色" #: src/bz-preferences-dialog.c:39 msgid "Asexual Pride Colors" msgstr "無性戀驕傲旗é…色" #: src/bz-preferences-dialog.c:40 msgid "Pansexual Pride Colors" msgstr "泛性戀驕傲旗é…色" #: src/bz-preferences-dialog.c:41 msgid "Aromantic Pride Colors" msgstr "無浪漫傾å‘驕傲旗é…色" #: src/bz-preferences-dialog.c:42 msgid "Genderfluid Pride Colors" msgstr "性別æµå‹•驕傲旗é…色" #: src/bz-preferences-dialog.c:43 msgid "Polysexual Pride Colors" msgstr "多元性å‘驕傲旗é…色" #: src/bz-preferences-dialog.c:44 msgid "Omnisexual Pride Colors" msgstr "全性å‘驕傲旗é…色" #: src/bz-preferences-dialog.c:45 msgid "Aroace Pride Colors" msgstr "無浪漫ï¼ç„¡æ€§æˆ€é©•傲旗é…色" #: src/bz-preferences-dialog.c:46 msgid "Agender Pride Colors" msgstr "無性別驕傲旗é…色" #: src/bz-preferences-dialog.c:47 msgid "Genderqueer Pride Colors" msgstr "性別酷兒驕傲旗é…色" #: src/bz-preferences-dialog.c:48 msgid "Intersex Pride Colors" msgstr "雙性人驕傲旗é…色" #: src/bz-preferences-dialog.c:49 msgid "Demigender Pride Colors" msgstr "åŠæ€§åˆ¥é©•傲旗é…色" #: src/bz-preferences-dialog.c:50 msgid "Biromantic Pride Colors" msgstr "雙浪漫傾å‘驕傲旗é…色" #: src/bz-preferences-dialog.c:51 msgid "Disability Pride Colors" msgstr "身心障礙驕傲旗é…色" #: src/bz-preferences-dialog.c:52 msgid "Femboy Pride Colors" msgstr "女性氣質男性驕傲旗é…色" #: src/bz-preferences-dialog.c:53 msgid "Neutrois Pride Colors" msgstr "中性性別驕傲旗é…色" #: src/bz-releases-dialog.blp:5 src/bz-updates-card.c:159 msgid "Version History" msgstr "版本紀錄" #: src/bz-releases-list.blp:27 msgid "_Version History" msgstr "版本紀錄(_V)" #. Translators: something happened less than a day ago #: src/bz-releases-list.c:122 msgid "Today" msgstr "今天" #. Translators: something happened more than a day ago but less than 2 days ago #: src/bz-releases-list.c:125 msgid "Yesterday" msgstr "昨天" #. Translators: something happened days ago #: src/bz-releases-list.c:128 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d 天å‰" #. Translators: something happened weeks ago #: src/bz-releases-list.c:131 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 週å‰" #. Translators: something happened months ago #: src/bz-releases-list.c:134 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d 個月å‰" #. Translators: something happened years ago #: src/bz-releases-list.c:137 #, c-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d å¹´å‰" # æœƒè®Šæˆ "2026å¹´6月25æ—¥"。(%B 是漢字數字「六月ã€ï¼Œ%b 是å‰é¢æœ‰ç©ºæ ¼ä½†è£¡é¢æ²’有的 " 6月")--Kisaragi #. TRANSLATORS: This is the date string with: day number, month name, year. #. i.e. "22 March 2026" #: src/bz-releases-list.c:155 msgid "%e %B %Y" msgstr "%Yå¹´%m月%dæ—¥" #: src/bz-releases-list.c:196 #, c-format msgid "Version %s" msgstr "版本 %s" #: src/bz-releases-list.c:251 msgid "No details for this release" msgstr "此版本沒有詳細資訊" #: src/bz-releases-list.c:264 msgid "Get More Information" msgstr "å–得更多資訊" #: src/bz-rich-app-tile.blp:218 msgid "Uninstall" msgstr "解除安è£" #. Translators: If you can't find a short enough translation, use "/" to use an icon instead. #: src/bz-rich-app-tile.c:383 msgid "Get" msgstr "å–å¾—" #: src/safety-calculator.c:87 msgid "Unknown Permissions" msgstr "未知的權é™" #: src/safety-calculator.c:88 msgid "Permissions are missing for this app." msgstr "此應用程å¼ç¼ºå°‘權é™è³‡è¨Šã€‚" #: src/safety-calculator.c:101 msgid "No Permissions" msgstr "無權é™éœ€æ±‚" #: src/safety-calculator.c:102 msgid "App is fully sandboxed" msgstr "此應用程å¼å·²å®Œå…¨æ²™ç®±åŒ–" #: src/safety-calculator.c:108 msgid "Network Access" msgstr "網路存å–" #: src/safety-calculator.c:109 msgid "Can access the internet" msgstr "å¯å­˜å–網際網路" #: src/safety-calculator.c:111 msgid "No Network Access" msgstr "無網路存å–" #: src/safety-calculator.c:112 msgid "Cannot access the internet" msgstr "無法存å–網際網路" #: src/safety-calculator.c:117 msgid "User Device Access" msgstr "使用者è£ç½®å­˜å–" #: src/safety-calculator.c:118 msgid "Can access devices such as webcams or gaming controllers" msgstr "å¯å­˜å–如網路æ”å½±æ©Ÿæˆ–éŠæˆ²æŽ§åˆ¶å™¨ç­‰è£ç½®" #: src/safety-calculator.c:120 msgid "No User Device Access" msgstr "無使用者è£ç½®å­˜å–" #: src/safety-calculator.c:121 msgid "Cannot access devices such as webcams or gaming controllers" msgstr "無法存å–如網路æ”å½±æ©Ÿæˆ–éŠæˆ²æŽ§åˆ¶å™¨ç­‰è£ç½®" #: src/safety-calculator.c:126 msgid "Input Device Access" msgstr "輸入è£ç½®å­˜å–" #: src/safety-calculator.c:127 msgid "Can access input devices" msgstr "å¯å­˜å–輸入è£ç½®" #: src/safety-calculator.c:133 msgid "Microphone Access and Audio Playback" msgstr "麥克風存å–與音訊播放" #: src/safety-calculator.c:134 msgid "Can listen using microphones and play audio without asking permission" msgstr "å¯åœ¨æœªè©¢å•權é™çš„æƒ…æ³ä¸‹ä½¿ç”¨éº¥å…‹é¢¨æ”¶éŸ³ä¸¦æ’­æ”¾éŸ³è¨Š" #: src/safety-calculator.c:140 msgid "System Device Access" msgstr "系統è£ç½®å­˜å–" #: src/safety-calculator.c:141 msgid "Can access system devices which require elevated permissions" msgstr "å¯å­˜å–需è¦è¼ƒé«˜æ¬Šé™çš„系統è£ç½®" #: src/safety-calculator.c:147 msgid "Screen Contents Access" msgstr "螢幕內容存å–" #: src/safety-calculator.c:148 msgid "Can access the contents of the screen or other windows" msgstr "å¯å­˜å–螢幕或其他視窗的內容" #: src/safety-calculator.c:154 msgid "Legacy Windowing System" msgstr "舊å¼è¦–窗系統" #: src/safety-calculator.c:155 msgid "Always uses a legacy windowing system (X11)" msgstr "一律使用舊å¼è¦–窗系統(X11)" #: src/safety-calculator.c:161 src/bz-safety-dialog.blp:31 msgid "Arbitrary Permissions" msgstr "ä»»æ„æ¬Šé™" #: src/safety-calculator.c:162 msgid "Can acquire arbitrary permissions" msgstr "å¯å–å¾—ä»»æ„æ¬Šé™" #: src/safety-calculator.c:168 msgid "User Settings" msgstr "使用者設定" #: src/safety-calculator.c:169 msgid "Can access and change user settings" msgstr "å¯å­˜å–並變更使用者設定" #: src/safety-calculator.c:175 msgid "Full File System Read/Write Access" msgstr "完整檔案系統讀å–ï¼å¯«å…¥æ¬Šé™" #: src/safety-calculator.c:176 msgid "Can read and write all data on the file system" msgstr "å¯è®€å–與寫入檔案系統中的所有資料" #: src/safety-calculator.c:183 msgid "Home Folder Read/Write Access" msgstr "家目錄讀å–ï¼å¯«å…¥æ¬Šé™" #: src/safety-calculator.c:184 msgid "Can read and write all data in your home directory" msgstr "å¯è®€å–與寫入您家目錄中的所有資料" #: src/safety-calculator.c:191 msgid "Full File System Read Access" msgstr "å®Œæ•´æª”æ¡ˆç³»çµ±è®€å–æ¬Šé™" #: src/safety-calculator.c:192 msgid "Can read all data on the file system" msgstr "å¯è®€å–檔案系統中的所有資料" #: src/safety-calculator.c:200 msgid "Home Folder Read Access" msgstr "å®¶ç›®éŒ„è®€å–æ¬Šé™" #: src/safety-calculator.c:201 msgid "Can read all data in your home directory" msgstr "å¯è®€å–您家目錄中的所有資料" #: src/safety-calculator.c:209 msgid "Download Folder Read/Write Access" msgstr "下載資料夾讀å–ï¼å¯«å…¥æ¬Šé™" #: src/safety-calculator.c:210 msgid "Can read and write all data in your downloads directory" msgstr "å¯è®€å–與寫入您下載資料夾中的所有資料" #: src/safety-calculator.c:220 msgid "Download Folder Read Access" msgstr "ä¸‹è¼‰è³‡æ–™å¤¾è®€å–æ¬Šé™" #: src/safety-calculator.c:221 msgid "Can read all data in your downloads directory" msgstr "å¯è®€å–您下載資料夾中的所有資料" #: src/safety-calculator.c:242 msgid "Can read and write all data in the directory" msgstr "å¯è®€å–與寫入該目錄中的所有資料" #: src/safety-calculator.c:266 msgid "Can read all data in the directory" msgstr "å¯è®€å–該目錄中的所有資料" #: src/safety-calculator.c:281 msgid "No File System Access" msgstr "ç„¡æª”æ¡ˆç³»çµ±å­˜å–æ¬Šé™" #: src/safety-calculator.c:282 msgid "Cannot access the file system at all" msgstr "å®Œå…¨ç„¡æ³•å­˜å–æª”案系統" #: src/safety-calculator.c:289 msgid "Uses System Services" msgstr "使用系統æœå‹™" #: src/safety-calculator.c:290 msgid "Can request data from non-portal system services" msgstr "å¯å‘éžå…¥å£ï¼ˆnon-portal)的系統æœå‹™è«‹æ±‚資料" #: src/safety-calculator.c:296 msgid "Uses Session Services" msgstr "使用工作階段æœå‹™" #: src/safety-calculator.c:297 msgid "Can request data from non-portal session services" msgstr "å¯å‘éžå…¥å£ï¼ˆnon-portal)的工作階段æœå‹™è«‹æ±‚資料" #: src/safety-calculator.c:345 msgid "No Service Access" msgstr "ç„¡æœå‹™å­˜å–權é™" #: src/safety-calculator.c:346 msgid "Cannot access non-portal session or system services at all" msgstr "完全無法存å–éžå…¥å£ï¼ˆnon-portal)的工作階段或系統æœå‹™" #: src/safety-calculator.c:354 msgid "Verified App Developer" msgstr "已驗證的應用程å¼é–‹ç™¼è€…" #: src/safety-calculator.c:355 msgid "The developer of this app has been verified to be who they say they are" msgstr "此應用程å¼çš„開發者身分已通éŽé©—證,確èªèˆ‡å…¶æ‰€è²ç¨±çš„身分相符" #: src/safety-calculator.c:364 msgid "Proprietary Code" msgstr "專有程å¼ç¢¼" #: src/safety-calculator.c:365 msgid "" "The source code is not public, so it cannot be independently audited and " "might be unsafe" msgstr "原始碼未公開,無法進行ç¨ç«‹ç¨½æ ¸ï¼Œå¯èƒ½å­˜åœ¨å®‰å…¨é¢¨éšª" #: src/safety-calculator.c:375 msgid "Auditable Code" msgstr "å¯ç¨½æ ¸çš„程å¼ç¢¼" #: src/safety-calculator.c:376 msgid "" "The source code is public and can be independently audited, which makes the " "app more likely to be safe" msgstr "原始碼已公開,且å¯é€²è¡Œç¨ç«‹ç¨½æ ¸ï¼Œä½¿æ­¤æ‡‰ç”¨ç¨‹å¼æ›´å¯èƒ½æ˜¯å®‰å…¨çš„" #: src/safety-calculator.c:516 #, c-format msgid "Use the %s System Service" msgstr "使用 %s 系統æœå‹™" #: src/safety-calculator.c:520 #, c-format msgid "Use the %s Session Service" msgstr "使用 %s 工作階段æœå‹™" #: src/safety-calculator.c:524 #, c-format msgid "Use the %s Service" msgstr "使用 %s æœå‹™" #: src/safety-calculator.c:534 msgid "Can see the non-portal service" msgstr "坿Ÿ¥çœ‹éžå…¥å£ï¼ˆnon-portal)æœå‹™" #: src/safety-calculator.c:536 msgid "Can talk to the non-portal service" msgstr "å¯èˆ‡éžå…¥å£ï¼ˆnon-portal)æœå‹™é€šè¨Š" #: src/safety-calculator.c:538 msgid "Can own the non-portal service" msgstr "坿“有éžå…¥å£ï¼ˆnon-portal)æœå‹™" #: src/safety-calculator.c:553 msgid "Global Menu Integration" msgstr "全域é¸å–®æ•´åˆ" #: src/safety-calculator.c:554 msgid "Can display its menus in a global menu bar" msgstr "å¯å°‡é¸å–®é¡¯ç¤ºæ–¼å…¨åŸŸé¸å–®åˆ—" #: src/safety-calculator.c:559 msgid "KDE Settings Integration" msgstr "KDE 設定整åˆ" #: src/safety-calculator.c:560 msgid "Can detect when KDE desktop settings change" msgstr "å¯åµæ¸¬ KDE 桌é¢è¨­å®šçš„變更" #: src/safety-calculator.c:565 msgid "KDE Global Settings" msgstr "KDE 全域設定" #: src/safety-calculator.c:566 msgid "Can read KDE desktop preferences like fonts and colors" msgstr "å¯è®€å– KDE 桌é¢å好設定(如字型與色彩)" #: src/safety-calculator.c:571 msgid "Secret Storage Service" msgstr "祕密儲存æœå‹™" #: src/safety-calculator.c:572 msgid "Can store and retrieve its own passwords using the system keyring" msgstr "å¯ä½¿ç”¨ç³»çµ±é‘°åŒ™åœˆå„²å­˜ä¸¦å–回自身的密碼" #: src/safety-calculator.c:577 msgid "Desktop Notifications Service" msgstr "桌é¢é€šçŸ¥æœå‹™" #: src/safety-calculator.c:578 msgid "Can send desktop notifications" msgstr "å¯å‚³é€æ¡Œé¢é€šçŸ¥" #: src/safety-calculator.c:584 msgid "System Tray Integration" msgstr "系統匣整åˆ" #: src/safety-calculator.c:585 msgid "Can display an icon in the system tray" msgstr "å¯åœ¨ç³»çµ±åŒ£ä¸­é¡¯ç¤ºåœ–示" #: src/safety-calculator.c:590 msgid "KDE Connect Integration" msgstr "KDE Connect æ•´åˆ" #: src/safety-calculator.c:591 msgid "Can interact with devices paired via KDE Connect" msgstr "å¯èˆ‡é€éŽ KDE Connect é…å°çš„è£ç½®äº’å‹•" #: src/bz-safety-dialog.blp:48 msgid "" "This app has a permission that indirectly allows it to grant itself <b>any " "other permission it wants</b>, bypassing the Flatpak sandbox.\n" "\n" "It can therefore do anything a normal, non-sandboxed application can do, " "such as accessing all your files and connecting to the internet.\n" "\n" "Viewing the other permissions may still give a better idea of what the app " "is likely to do." msgstr "" "這個應用程å¼çš„其中一個權é™é–“接å…許其æä¾›è‡ªå·±<b>任何其他的權é™</b>ï¼Œä¸¦ç¹žéŽ " "Flatpak 沙箱機制。\n" "\n" "因此它å¯ä»¥åšä»»ä½•éžæ²™ç®±åŒ–應用程å¼èƒ½å¤ åšçš„äº‹æƒ…ï¼Œåƒæ˜¯å­˜å–您的所有檔案或是連線到" "網際網路。\n" "\n" "å…¶ä»–å®ƒæ‰€æ˜Žç¢ºè¦æ±‚的權é™å¯èƒ½é‚„是值得åƒè€ƒä»¥å¾—知它比較有å¯èƒ½æœƒåšçš„事情。" #: src/bz-safety-dialog.blp:52 msgid "View Other Permissions" msgstr "檢視其他權é™" #: src/bz-safety-dialog.blp:112 msgid "App ID" msgstr "æ‡‰ç”¨ç¨‹å¼ ID" #: src/bz-safety-dialog.blp:122 msgid "SDK" msgstr "SDK" #: src/bz-safety-dialog.blp:156 msgid "" "This app uses an outdated version of the software platform (SDK) and might " "contain bugs or security vulnerabilities which will not be fixed." msgstr "" "此應用程å¼ä½¿ç”¨éŽæ™‚的軟體平å°ï¼ˆSDK),å¯èƒ½åŒ…å«ä¸æœƒå†ä¿®å¾©çš„éŒ¯èª¤æˆ–å®‰å…¨æ¼æ´žã€‚" #: src/bz-safety-dialog.c:278 msgid "Safety" msgstr "安全性" #: src/bz-safety-dialog.c:344 #, c-format msgid "%s is Safe" msgstr "%s 是安全的" #: src/bz-safety-dialog.c:349 #, c-format msgid "%s has no Unsafe Permissions" msgstr "%s 沒有ä¸å®‰å…¨çš„æ¬Šé™" #: src/bz-safety-dialog.c:354 #, c-format msgid "%s is Probably Safe" msgstr "%s å¯èƒ½æ˜¯å®‰å…¨çš„" #: src/bz-safety-dialog.c:359 #, c-format msgid "%s is Possibly Unsafe" msgstr "%s å¯èƒ½ä¸å®‰å…¨" #: src/bz-safety-dialog.c:364 #, c-format msgid "%s is Unsafe" msgstr "%s ä¸å®‰å…¨" #: src/bz-screenshot-page.blp:5 msgid "Screenshots" msgstr "螢幕截圖" #: src/bz-screenshot-page.blp:61 msgid "Previous Screenshot" msgstr "上一張截圖" #: src/bz-screenshot-page.blp:71 msgid "Next Screenshot" msgstr "下一張截圖" #: src/bz-screenshot-page.blp:87 msgid "Copy Image" msgstr "複製圖片" #: src/bz-screenshot-page.blp:150 msgid "Reset View" msgstr "é‡è¨­æª¢è¦–" #: src/bz-screenshot-page.blp:161 msgid "Zoom Out" msgstr "縮å°" #: src/bz-screenshot-page.blp:171 msgid "Zoom In" msgstr "放大" #: src/bz-screenshots-carousel.blp:6 msgid "Screenshots Carousel" msgstr "螢幕截圖輪播" #: src/bz-screenshots-carousel.blp:104 msgid "No Screenshots" msgstr "沒有螢幕截圖" #: src/bz-screenshots-carousel.blp:128 msgid "Open Screenshot Viewer" msgstr "開啟截圖檢視器" #: src/bz-screenshots-carousel.c:301 #, c-format msgid "Screenshot %u %s" msgstr "螢幕截圖 %u %s" #: src/bz-screenshots-carousel.c:303 #, c-format msgid "Screenshot %u" msgstr "螢幕截圖 %u" #: src/bz-search-filter-popover.blp:18 src/bz-search-page.blp:83 msgid "Filters" msgstr "éŽæ¿¾å™¨" #: src/bz-search-filter-popover.blp:35 msgid "_Verified" msgstr "已驗證(_V)" #: src/bz-search-filter-popover.blp:42 msgid "_Free/Open" msgstr "自由/é–‹æº(_F)" #: src/bz-search-filter-popover.blp:49 msgid "Non-_EOL" msgstr "沒有終止支æ´" #: src/bz-search-filter-popover.blp:52 msgid "Filter out End-of-Life apps" msgstr "éŽæ¿¾æŽ‰å·²çµ‚止支æ´çš„æ‡‰ç”¨ç¨‹å¼" #: src/bz-search-filter-popover.blp:57 msgid "_Mobile Friendly" msgstr "行動è£ç½®å‹å–„(_M)" #: src/bz-search-filter-popover.blp:64 msgid "Categories" msgstr "分類" #: src/bz-search-page.blp:58 msgid "Search Apps, Games, Software" msgstr "æœå°‹æ‡‰ç”¨ç¨‹å¼ã€éŠæˆ²èˆ‡è»Ÿé«”" #: src/bz-search-page.blp:70 msgid "Search Filters" msgstr "æœå°‹éŽæ¿¾å™¨" #: src/bz-search-page.blp:100 msgid "Clear Search" msgstr "清除æœå°‹" #: src/bz-search-page.blp:209 msgid "Browse Categories" msgstr "ç€è¦½åˆ†é¡ž" #: src/bz-search-page.blp:245 msgid "Categories Unavailable" msgstr "分類無法使用" #: src/bz-search-page.blp:246 msgid "Search for apps using the search bar above." msgstr "請使用上方的æœå°‹åˆ—æœå°‹æ‡‰ç”¨ç¨‹å¼ã€‚" #: src/bz-search-page.blp:364 msgid "No Applications Found" msgstr "找ä¸åˆ°ä»»ä½•應用程å¼" #: src/bz-search-page.c:248 #, c-format msgid "No results found for \"%s\" in Flathub" msgstr "在 Flathub 中找ä¸åˆ°ç¬¦åˆã€Œ%sã€çš„çµæžœ" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:72 msgid "Video" msgstr "影片" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:82 msgid "Office" msgstr "辦公室" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:87 msgid "PDF" msgstr "PDF" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:92 msgid "Calendar" msgstr "行事曆" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:97 msgid "Messaging" msgstr "訊æ¯" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:102 msgid "Paint" msgstr "塗繪" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:107 msgid "VPN" msgstr "VPN" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:112 msgid "Torrent" msgstr "Torrent" #. Translators: Search suggestion: the english text will be used for the #. search regardless of what you put here, so don't worry about the string #. yielding poor search results. Focus on correctness and friendliness, #. etc #: src/bz-search-pill-list.c:117 msgid "Emulator" msgstr "模擬器" #: src/bz-share-list.c:58 msgctxt "Project URL Type" msgid "Flathub Page" msgstr "Flathub é é¢" #: src/bz-share-list.c:59 msgctxt "Project URL Type" msgid "Project Website" msgstr "專案網å€" #: src/bz-share-list.c:60 msgctxt "Project URL Type" msgid "Issue Tracker" msgstr "å•題追蹤器" #: src/bz-share-list.c:61 msgctxt "Project URL Type" msgid "FAQ" msgstr "FAQ" #: src/bz-share-list.c:62 msgctxt "Project URL Type" msgid "Help" msgstr "幫助" #: src/bz-share-list.c:63 msgctxt "Project URL Type" msgid "Donate" msgstr "ææ¬¾" #: src/bz-share-list.c:64 msgctxt "Project URL Type" msgid "Translate" msgstr "翻譯" #: src/bz-share-list.c:65 msgctxt "Project URL Type" msgid "Contact" msgstr "è¯çµ¡æ–¹å¼" #: src/bz-share-list.c:66 msgctxt "Project URL Type" msgid "Source Code" msgstr "原始碼" #: src/bz-share-list.c:67 msgctxt "Project URL Type" msgid "Contribute" msgstr "è²¢ç»" #: src/bz-share-list.c:68 msgctxt "Project URL Type" msgid "Manifest" msgstr "Manifest" #: src/bz-share-list.c:326 msgid "Copy Link" msgstr "複製連çµ" #: src/bz-stats-dialog.blp:27 msgid "Timeline" msgstr "時間軸" #: src/bz-stats-dialog.blp:46 msgid "Installs:" msgstr "å®‰è£æ¬¡æ•¸ï¼š" #: src/bz-stats-dialog.blp:55 msgid "World" msgstr "å…¨çƒ" #: src/bz-stats-dialog.blp:69 msgid "Since 4/15/2024" msgstr "2024å¹´4月15日以來" #. Translators: M is the suffix for millions #: src/bz-stats-dialog.c:126 #, c-format msgid "%.2fM Total Installs" msgstr "ç¸½å®‰è£æ¬¡æ•¸ %.2fM" #. Translators: K is the suffix for thousands #: src/bz-stats-dialog.c:129 #, c-format msgid "%.2fK Total Installs" msgstr "ç¸½å®‰è£æ¬¡æ•¸ %.2fK" #: src/bz-stats-dialog.c:131 #, c-format msgid "%'d Total Installs" msgstr "ç¸½å®‰è£æ¬¡æ•¸ %'d" #: src/bz-subcategory-list.c:78 msgid "No Results Found" msgstr "æ²’æœ‰æ‰¾åˆ°çµæžœ" #: src/bz-subcategory-list.c:100 msgid "Search failed" msgstr "æœå°‹å¤±æ•—" #: src/bz-transaction-dialog.c:154 msgid "Keep User Data" msgstr "ä¿ç•™ä½¿ç”¨è€…資料" #: src/bz-transaction-dialog.c:155 msgid "Allow restoring personal settings & content" msgstr "å…許還原個人設定與內容" #: src/bz-transaction-dialog.c:164 msgid "Delete All Data" msgstr "刪除所有資料" #: src/bz-transaction-dialog.c:165 msgid "Permanently erase user data to save space" msgstr "永久移除應用程å¼çš„使用者資料以節çœç©ºé–“" #: src/bz-transaction-dialog.c:190 #, c-format msgid "Install %s?" msgstr "è¦å®‰è£ %s 嗎?" #: src/bz-transaction-dialog.c:195 msgid "" "Select which version to install. May install additional shared components" msgstr "é¸å–è¦å®‰è£å“ªå€‹ç‰ˆæœ¬ã€‚å¯èƒ½æœƒå®‰è£é¡å¤–的共用元件" #: src/bz-transaction-dialog.c:197 msgid "May install additional shared components" msgstr "å¯èƒ½æœƒå®‰è£é¡å¤–的共用元件" #: src/bz-transaction-dialog.c:200 src/bz-transaction-dialog.c:229 #: src/bz-transaction-dialog.c:274 src/bz-transaction-dialog.c:576 msgid "_Cancel" msgstr "å–æ¶ˆ(_C)" #: src/bz-transaction-dialog.c:201 msgid "_Install" msgstr "安è£(_I)" #: src/bz-transaction-dialog.c:218 #, c-format msgid "Remove %s?" msgstr "è¦ç§»é™¤ %s 嗎?" #: src/bz-transaction-dialog.c:221 msgid "Select which version to remove." msgstr "é¸å–è¦ç§»é™¤çš„版本。" #: src/bz-transaction-dialog.c:223 #, c-format msgid "It will not be possible to use %s after it is uninstalled." msgstr "解除安è£å¾Œå°‡ç„¡æ³•å†ä½¿ç”¨ %s。" #: src/bz-transaction-dialog.c:246 #, c-format msgid "“%s†is High Risk" msgstr "「%sã€å±¬æ–¼é«˜é¢¨éšªæ‡‰ç”¨ç¨‹å¼" #: src/bz-transaction-dialog.c:250 msgid "" "This app has full access to your system, including all <b>your files, " "browser history, saved passwords</b>, and more. It also has access to the " "internet, meaning it could send your data to outside parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "此應用程å¼å°æ‚¨çš„ç³»çµ±å…·æœ‰å®Œæ•´å­˜å–æ¬Šé™ï¼ŒåŒ…括所有<b>檔案ã€ç€è¦½ç´€éŒ„ã€å·²å„²å­˜çš„密碼" "</b>ç­‰ã€‚åŒæ™‚也å¯å­˜å–網際網路,代表å¯èƒ½æœƒå°‡æ‚¨çš„資料傳é€çµ¦ç¬¬ä¸‰æ–¹ã€‚\n" "\n" "由於此應用程å¼ç‚ºå°ˆæœ‰è»Ÿé«”,無法å°å…¶å¦‚何使用這些權é™é€²è¡Œç¨ç«‹å¯©æ ¸ã€‚" #: src/bz-transaction-dialog.c:259 msgid "" "This app uses the legacy X11 windowing system, which allows it to <b>record " "all keystrokes, capture screenshots, and monitor other applications</b>. It " "also has access to the internet, meaning it could send your data to outside " "parties.\n" "\n" "Because the app is proprietary, it can not be audited for what it does with " "these permissions." msgstr "" "此應用程å¼ä½¿ç”¨èˆŠå¼çš„ X11 視窗系統,這使其能夠<b>記錄所有éµç›¤è¼¸å…¥ã€æ“·å–螢幕畫" "é¢ï¼Œä¸¦ç›£æŽ§å…¶ä»–應用程å¼</b>ã€‚åŒæ™‚也å¯å­˜å–網際網路,代表å¯èƒ½æœƒå°‡æ‚¨çš„資料傳é€çµ¦" "第三方。\n" "\n" "由於此應用程å¼ç‚ºå°ˆæœ‰è»Ÿé«”,無法å°å…¶å¦‚何使用這些權é™é€²è¡Œç¨ç«‹å¯©æ ¸ã€‚" #: src/bz-transaction-dialog.c:275 msgid "_Install Anyway" msgstr "ä»è¦å®‰è£(_I)" #: src/bz-transaction-dialog.c:330 msgid "Failed to load transaction dialog" msgstr "載入作業å°è©±æ¡†å¤±æ•—" #: src/bz-transaction-dialog.c:547 msgid "All apps are already installed" msgstr "所有應用程å¼çš†å·²å®‰è£" #: src/bz-transaction-dialog.c:549 msgid "_OK" msgstr "確èª(_O)" #: src/bz-transaction-dialog.c:565 #, c-format msgid "Install %u App?" msgid_plural "Install %u Apps?" msgstr[0] "è¦å®‰è£ %u 個應用程å¼å—Žï¼Ÿ" #: src/bz-transaction-dialog.c:573 msgid "" "The following will be installed. Additional shared components may also be " "installed" msgstr "將會安è£ä»¥ä¸‹é …目,並且å¯èƒ½åŒæ™‚安è£é¡å¤–的共用元件" #: src/bz-transaction-dialog.c:574 #, c-format msgid "%d addons will be installed." msgstr "å°‡æœƒå®‰è£ %d 個附加元件。" #: src/bz-transaction-dialog.c:575 msgid "Additionally, addons will be installed." msgstr "此外,還會安è£é™„加元件。" #: src/bz-transaction-dialog.c:577 msgid "_Install All" msgstr "安è£å…¨éƒ¨(_I)" #: src/bz-transaction-manager.c:795 #, c-format msgid "Finished in %.02f seconds" msgstr "æ–¼ %.02f 秒完æˆ" #: src/bz-transaction-tile.blp:129 msgid "App Add-On" msgstr "應用程å¼é™„加元件" #: src/bz-transaction-tile.blp:158 msgid "Runtime" msgstr "執行環境" #: src/bz-transaction-tile.blp:182 msgid "In Queue" msgstr "在佇列中" #: src/bz-transaction-tile.blp:206 msgid "Done" msgstr "完æˆ" #: src/bz-transaction-tile.blp:230 msgid "Cancelled" msgstr "已喿¶ˆ" #: src/bz-transaction-tile.blp:254 msgid "Error" msgstr "錯誤" #: src/bz-transaction-tile.blp:312 msgid "Cancel Transaction" msgstr "å–æ¶ˆä½œæ¥­" #: src/bz-transaction-tile.blp:322 msgid "Show Details" msgstr "顯示詳細資料" #: src/bz-transaction-tile.blp:437 msgid "Show Error Info" msgstr "顯示錯誤資訊" #: src/bz-transaction-tile.c:107 #, c-format msgid "%s Freed" msgstr "已釋出 %s" #: src/bz-transaction-tile.c:360 src/bz-transaction-tile.c:363 msgid "Transaction Error" msgstr "作業錯誤" #: src/bz-transaction.c:344 msgid "Pending" msgstr "等待中" #: src/bz-updates-card.blp:23 msgid "_Update All" msgstr "更新全部(_U)" #: src/bz-updates-card.c:215 #, c-format msgid "%u Runtime Update" msgid_plural "%u Runtime Updates" msgstr[0] "%u 個執行環境更新" #: src/bz-user-data-page.blp:5 msgid "Manage Leftover User Data" msgstr "ç®¡ç†æ®˜ç•™çš„使用者資料" #: src/bz-user-data-page.blp:33 msgid "No User Data Found" msgstr "找ä¸åˆ°ä½¿ç”¨è€…資料" #: src/bz-user-data-page.blp:38 msgid "User Data" msgstr "使用者資料" #: src/bz-user-data-tile.blp:74 msgid "Trash User Data" msgstr "將使用者資料移至垃圾桶" #: src/bz-user-data-tile.c:150 #, c-format msgid "Trashed User Data for %s" msgstr "已將 %s 的使用者資料移至垃圾桶" #: src/bz-window.blp:71 msgid "Refreshing" msgstr "釿–°æ•´ç†ä¸­â€¦" #: src/bz-window.blp:89 msgid "Curated" msgstr "ç²¾é¸" #: src/bz-window.blp:101 msgid "Explore" msgstr "探索" #: src/bz-window.blp:128 msgid "Search" msgstr "æœå°‹" #: src/bz-window.blp:215 msgid "Main Menu" msgstr "主é¸å–®" #: src/bz-window.blp:226 msgid "You are running a new version of Bazaar!" msgstr "您已更新到新版本 Bazaarï¼" #: src/bz-window.blp:227 msgid "See What's New" msgstr "查看更新內容" #: src/bz-window.blp:234 msgid "" "You have a network connection but are viewing a cached version of Flathub" msgstr "æ‚¨ç›®å‰æœ‰ç¶²è·¯é€£ç·šï¼Œä½†æ­£åœ¨æª¢è¦– Flathub 的快å–版本" #: src/bz-window.blp:279 msgid "_Donate to Bazaar" msgstr "ææ¬¾çµ¦ Bazaar(_D)" #: src/bz-window.blp:285 msgid "_Refresh" msgstr "釿–°æ•´ç†(_R)" #: src/bz-window.blp:289 msgid "_Login With Flathub" msgstr "使用 Flathub 登入(_L)" #: src/bz-window.blp:295 msgid "_Manage Leftover User Data" msgstr "ç®¡ç†æ®˜ç•™çš„使用者資料(_M)" #: src/bz-window.blp:301 msgid "_Preferences" msgstr "å好設定(_P)" #: src/bz-window.blp:306 msgid "_Keyboard Shortcuts" msgstr "éµç›¤å¿«æ·éµ(&K)" #: src/bz-window.blp:311 msgid "_About Bazaar" msgstr "關於 Bazaar(&A)" #: src/bz-window.blp:317 msgid "_Quit Bazaar" msgstr "退出 Bazaar(&Q)" #: src/bz-window.blp:342 msgid "Log Out" msgstr "登出" #. Translators: %s is the title of the current page #: src/bz-window.c:376 #, c-format msgid "Bazaar — %s" msgstr "Bazaar — %s" #: src/bz-window.c:596 src/bz-window.c:634 msgid "Failed to launch application" msgstr "啟動應用程å¼å¤±æ•—" #: src/bz-window.c:843 msgid "You can't remove Bazaar from Bazaar!" msgstr "您無法在 Bazaar 中移除 Bazaar 本身ï¼" #: src/bz-window.c:1127 src/bz-window.c:1161 msgid "Can't do that right now!" msgstr "ç›®å‰ç„¡æ³•執行此動作ï¼" #. Translators: As in, "1 Install" / "100 Installs" #: src/bz-world-map.c:604 msgid "Install" msgid_plural "Installs" msgstr[0] "次安è£" #: src/shortcuts-dialog.blp:5 msgctxt "shortcut window" msgid "Navigation" msgstr "導覽" #: src/shortcuts-dialog.blp:8 msgctxt "shortcut window" msgid "Open Explore Page" msgstr "開啟探索é é¢" #: src/shortcuts-dialog.blp:14 msgctxt "shortcut window" msgid "Open Library Page" msgstr "開啟程å¼åº«é é¢" #: src/shortcuts-dialog.blp:20 msgctxt "shortcut window" msgid "Open Search Page" msgstr "開啟æœå°‹é é¢" #: src/shortcuts-dialog.blp:25 msgctxt "shortcut window" msgid "Remotes" msgstr "é ç«¯" #: src/shortcuts-dialog.blp:27 msgctxt "shortcut window" msgid "Sync Remotes" msgstr "åŒæ­¥é ç«¯" #: src/shortcuts-dialog.blp:33 msgctxt "shortcut window" msgid "General" msgstr "一般" #: src/shortcuts-dialog.blp:36 msgctxt "shortcut window" msgid "Open Preferences" msgstr "開啟å好設定" #: src/shortcuts-dialog.blp:41 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "顯示快æ·éµ" #: src/shortcuts-dialog.blp:46 msgctxt "shortcut window" msgid "Close Window" msgstr "關閉視窗" #: src/shortcuts-dialog.blp:52 msgctxt "shortcut window" msgid "Quit Bazaar" msgstr "退出 Bazaar" #~ msgid "" #~ "It emphasizes supporting the developers who make the Linux desktop " #~ "possible. Bazaar features a \"curated\" tab that can be configured by " #~ "distributors to allow for a more localized experience." #~ msgstr "" #~ "è‘—é‡æ”¯æ´è®“ Linux æ¡Œé¢æˆçœŸçš„開發者。Bazaar æä¾›ã€Œç²¾é¸ã€åˆ†é ï¼Œç™¼è¡Œå•†å¯è¨­å®šä»¥" #~ "æä¾›æ›´åœ¨åœ°åŒ–的體驗。" #~ msgid "Adam Masciola" #~ msgstr "Adam Masciola" #~ msgid "Nucleus app page" #~ msgstr "Nucleus 應用程å¼é é¢" #~ msgid "_Refresh Content" #~ msgstr "釿–°æ•´ç†å…§å®¹(&R)" #~ msgid "User Data Size" #~ msgstr "使用者資料大å°" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Adam Masciola <kolunmi@posteo.net>" #~ msgstr "Adam Masciola <kolunmi@posteo.net>" #~ msgctxt "About Dialog Developer Credit" #~ msgid "Alexander Vanhee" #~ msgstr "Alexander Vanhee" #~ msgid "Synchronizing..." #~ msgstr "åŒæ­¥ä¸­..." #, c-format #~ msgid "Receiving %d entries..." #~ msgstr "正在接收 %d 筆項目…" #~ msgid "Indexing Data..." #~ msgstr "正在索引資料…" #~ msgid "Close" #~ msgstr "關閉" #~ msgid "Copy and Close" #~ msgstr "複製並關閉" #~ msgid "Toggle transaction sidebar" #~ msgstr "切æ›ä½œæ¥­å´é‚Šæ¬„" #~ msgid "Flathub returned an error" #~ msgstr "Flathub 回傳了錯誤" #~ msgid "Retry Flathub Connection" #~ msgstr "釿–°å˜—試連線至 Flathub" #~ msgid "Download & Install Application" #~ msgstr "ä¸‹è¼‰ä¸¦å®‰è£æ‡‰ç”¨ç¨‹å¼" #~ msgid "Install Other Version" #~ msgstr "安è£å…¶ä»–版本" #~ msgid "Tags:" #~ msgstr "標籤:" #~ msgid "" #~ "Connect your Flathub account to Bazaar to manage your favorited apps." #~ msgstr "將您的 Flathub 帳號連çµè‡³ Bazaarï¼Œä»¥ç®¡ç†æ‚¨åŠ å…¥æ”¶è—的應用程å¼ã€‚" #~ msgid "Delay Search Results" #~ msgstr "å»¶é²é¡¯ç¤ºæœå°‹çµæžœ" #~ msgid "Improve results performance by debouncing search terms" #~ msgstr "é€éŽå»¶é²è™•ç†æœå°‹è¼¸å…¥ä»¥æå‡çµæžœæ•ˆèƒ½" #~ msgid "Choose a theme for the progress bar!" #~ msgstr "鏿“‡é€²åº¦åˆ—的主題ï¼" #~ msgid "Vertical Stripes" #~ msgstr "垂直æ¢ç´‹" #~ msgid "Display flag colors from top to bottom" #~ msgstr "由上而下顯示旗幟é…色" #~ msgid "Open Link" #~ msgstr "開啟連çµ" #, c-format #~ msgid "Apps Tagged \"%s\"" #~ msgstr "標記為「%sã€çš„æ‡‰ç”¨ç¨‹å¼" #~ msgid "Keep Data" #~ msgstr "ä¿ç•™è³‡æ–™" #~ msgid "Ongoing" #~ msgstr "進行中" #~ msgid "Finished" #~ msgstr "已完æˆ" #, c-format #~ msgid "Transferred %s so far" #~ msgstr "ç›®å‰å·²å‚³è¼¸ %s" #~ msgid "Tasks" #~ msgstr "工作" #~ msgid "Stop Active Tasks" #~ msgstr "åœæ­¢é€²è¡Œä¸­çš„工作" #~ msgid "No Tasks Yet" #~ msgstr "ç›®å‰å°šç„¡å·¥ä½œ" #~ msgid "Refreshing Store Content" #~ msgstr "æ­£åœ¨é‡æ–°æ•´ç†å•†åº—內容" #~ msgid "Flathub" #~ msgstr "Flathub" #~ msgid "No background tasks!" #~ msgstr "沒有背景工作ï¼" #~ msgid "_Synchronize Remotes" #~ msgstr "åŒæ­¥é ç«¯(_S)" #, c-format #~ msgid "%d Update Available" #~ msgid_plural "%d Updates Available" #~ msgstr[0] "有 %d é …æ›´æ–°å¯ç”¨" #~ msgid "Updates Are Available" #~ msgstr "有å¯ç”¨çš„æ›´æ–°" #~ msgid "" #~ "The following applications are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "下列應用程å¼å¯æ›´æ–°ã€‚是å¦è¦å®‰è£ï¼Ÿ" #, c-format #~ msgid "" #~ "%d runtimes and/or addons are eligible for updates. Would you like to " #~ "install them?" #~ msgstr "%d å€‹åŸ·è¡Œç’°å¢ƒèˆ‡ï¼æˆ–é™„åŠ å…ƒä»¶å¯æ›´æ–°ã€‚是å¦è¦å®‰è£ï¼Ÿ" #, c-format #~ msgid "Additionally, %d runtimes and/or addons will be updated." #~ msgstr "此外,還有 %d å€‹åŸ·è¡Œç’°å¢ƒèˆ‡ï¼æˆ–附加元件將會更新。" #~ msgid "Update Now" #~ msgstr "ç¾åœ¨æ›´æ–°" #~ msgid "" #~ "The ability to inspect and install local .flatpak bundle files is coming " #~ "soon! In the meantime, try running\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "on the command line." #~ msgstr "" #~ "æª¢è¦–èˆ‡å®‰è£æœ¬æ©Ÿ .flatpak å°è£æª”的功能å³å°‡æŽ¨å‡ºï¼åœ¨æ­¤ä¹‹å‰ï¼Œè«‹æ–¼å‘½ä»¤åˆ—執行下列" #~ "指令:\n" #~ "\n" #~ "flatpak install --bundle your-bundle.flatpak\n" #~ "\n" #~ "。" #~ msgid "Resume Current Tasks" #~ msgstr "繼續目å‰çš„工作" #~ msgid "Pause Current Tasks" #~ msgstr "æš«åœç›®å‰çš„工作" #~ msgctxt "shortcut window" #~ msgid "Toggle Transaction Manager" #~ msgstr "切æ›ä½œæ¥­ç®¡ç†å™¨" #~ msgctxt "shortcut window" #~ msgid "Quit" #~ msgstr "離開" #~ msgid "Show Animated Background" #~ msgstr "顯示動畫背景" #~ msgid "Whether to show the animated icon background on the home page" #~ msgstr "是å¦åœ¨é¦–é é¡¯ç¤ºå‹•態圖示背景" #~ msgid "Calligraphy application page" #~ msgstr "書法應用程å¼é é¢" #~ msgid "Download graph for Blender" #~ msgstr "Blender 的下載圖表" #~ msgid "This flatpak is verified by the original developers of the software." #~ msgstr "æ­¤ Flatpak 已由該軟體原始開發者驗證。" #~ msgid "" #~ "This functionality is currently disabled. It is recommended you download " #~ "and install Flatseal to manage app permissions." #~ msgstr "此功能目å‰åœç”¨ã€‚å»ºè­°ä¸‹è¼‰ä¸¦å®‰è£ Flatseal ä»¥ç®¡ç†æ‡‰ç”¨ç¨‹å¼æ¬Šé™ã€‚" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Ahmed Najmawi" #~ msgstr "Ahmed Najmawi" #~ msgctxt "About Dialog Translator Credit" #~ msgid "AtomHare" #~ msgstr "AtomHare" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Azenyr" #~ msgstr "Azenyr" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Goudarz Jafari" #~ msgstr "Goudarz Jafari" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Jill Fiore (Lumaeris)" #~ msgstr "Jill Fiore (Lumaeris)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "KiKaraage" #~ msgstr "KiKaraage" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Lucosec" #~ msgstr "Lucosec" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Léane GRASSER" #~ msgstr "Léane GRASSER" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Marcel Mrówka (Microwave)" #~ msgstr "Marcel Mrówka (Microwave)" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Pietro F." #~ msgstr "Pietro F." #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shihfu Juan" #~ msgstr "Shihfu Juan" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Shinsei" #~ msgstr "Shinsei" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Vlastimil DÄ›dek" #~ msgstr "Vlastimil DÄ›dek" #~ msgctxt "About Dialog Translator Credit" #~ msgid "asen23" #~ msgstr "asen23" #~ msgctxt "About Dialog Translator Credit" #~ msgid "renner" #~ msgstr "renner" #~ msgctxt "About Dialog Translator Credit" #~ msgid "robotta" #~ msgstr "robotta" #~ msgctxt "About Dialog Translator Credit" #~ msgid "Peter Dave Hello" #~ msgstr "Peter Dave Hello" #~ msgid "Constructing Flatpak instance..." #~ msgstr "正在建立 Flatpak 執行個體..." #~ msgid "Reusing last Flatpak instance..." #~ msgstr "正在沿用上一個 Flatpak 執行個體..." #~ msgid "Flathub is not registered on this system" #~ msgstr "此系統未註冊 Flathub" #~ msgid "" #~ "Would you like to add Flathub as a remote? If you decline, the Flathub " #~ "page will not be available. You can change this later." #~ msgstr "" #~ "是å¦è¦åŠ å…¥ Flathub 作為é ç«¯ï¼Ÿè‹¥é¸æ“‡ç•¥éŽï¼Œå°‡ç„¡æ³•使用 Flathub é é¢ã€‚之後ä»å¯" #~ "變更。" #~ msgid "Add Flathub" #~ msgstr "加入 Flathub" #, c-format #~ msgid "" #~ "Beginning remote entry retrieval while referencing %d blocklist(s)..." #~ msgstr "é–‹å§‹æ“·å–é ç«¯é …目,並åƒè€ƒ %d 份å°éŽ–æ¸…å–®..." #, c-format #~ msgid "Received %'d entries out of %'d (%0.1f seconds elapsed)" #~ msgstr "已接收 %'d 個項目,共 %'d 個(耗時 %0.1f 秒)" #, c-format #~ msgid "Waiting for background indexing tasks to catch up..." #~ msgstr "正在等待背景索引作業追上進度..." #, c-format #~ msgid "Completed initialization in %0.2f seconds" #~ msgstr "åˆå§‹åŒ–完æˆï¼ˆ%0.2f 秒)" #~ msgid "" #~ "Bazaar was not provided a curated content configuration. Contact your " #~ "operating system's support channels for assistance." #~ msgstr "未æä¾› Bazaar 的精é¸å…§å®¹è¨­å®šã€‚è«‹è¯çµ¡ä½œæ¥­ç³»çµ±çš„æ”¯æ´ç®¡é“以å–å¾—å”助。" #~ msgid "Apps Of The Week" #~ msgstr "æœ¬é€±ç²¾é¸æ‡‰ç”¨ç¨‹å¼" #~ msgid "" #~ "The number of downloads in the last 30 days. Click to view this " #~ "application's download statistics." #~ msgstr "éŽåŽ» 30 天的下載次數。請點é¸ä»¥æª¢è¦–此應用程å¼çš„下載統計資料。" #~ msgid "VCS Forge Star Count" #~ msgstr "VCS 平尿˜Ÿæ˜Ÿæ•¸" #~ msgid "Remote repo name" #~ msgstr "é ç«¯å„²å­˜åº«å稱" #~ msgid "No Flatpaks Installed" #~ msgstr "未安è£ä»»ä½• Flatpak" #~ msgid "How the application looks" #~ msgstr "應用程å¼çš„外觀" #~ msgid "Appearance" #~ msgstr "外觀" #~ msgid "Show animated background" #~ msgstr "顯示動畫背景" #~ msgid "Type to filter" #~ msgstr "輸入以篩é¸" #~ msgid "Exclude results with proprietary licenses" #~ msgstr "æŽ’é™¤å…·æœ‰å°ˆæœ‰æŽˆæ¬Šçš„çµæžœ" #~ msgid "Advanced" #~ msgstr "進階" #~ msgid "Debounce input to prevent instant replies" #~ msgstr "å°è¼¸å…¥å¥—用去抖動,é¿å…ç«‹å³å›žæ‡‰" #~ msgid "Share" #~ msgstr "分享" #~ msgid "Open this link externally" #~ msgstr "在外部開啟此連çµ" #~ msgid "Downloads Over Time" #~ msgstr "下載趨勢" #~ msgid "Minimize Lower Bound" #~ msgstr "é™ä½Žä¸‹é™" #~ msgid "Maximize Upper Bound" #~ msgstr "æé«˜ä¸Šé™" #~ msgid "Installing" #~ msgstr "正在安è£" #~ msgid "Removing" #~ msgstr "正在移除" #~ msgid "Halt the execution of transactions" #~ msgstr "åœæ­¢åŸ·è¡Œä¸­çš„作業" #~ msgid "Browse" #~ msgstr "ç€è¦½" #~ msgid "Go Back" #~ msgstr "上一é " #~ msgid "View curated applications" #~ msgstr "æª¢è¦–ç²¾é¸æ‡‰ç”¨ç¨‹å¼" #~ msgid "View the latest on Flathub" #~ msgstr "檢視 Flathub 最新內容" #~ msgid "Up to date!" #~ msgstr "已是最新ï¼" #~ msgid "Confirm Action" #~ msgstr "確èªå‹•作" #, c-format #~ msgid "" #~ "You are about to remove the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "å³å°‡ç§»é™¤ä¸‹åˆ— Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "是å¦ç¢ºå®šï¼Ÿ" #, c-format #~ msgid "" #~ "You are about to install the following Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "Are you sure?" #~ msgstr "" #~ "å³å°‡å®‰è£ä¸‹åˆ— Flatpak:\n" #~ "\n" #~ "<b>%s</b>\n" #~ "<tt>%s</tt>\n" #~ "\n" #~ "是å¦ç¢ºå®šï¼Ÿ" #~ msgid "Resume the execution of transactions" #~ msgstr "æ¢å¾©åŸ·è¡Œä¸­çš„作業" #~ msgid "Pause the execution of transactions" #~ msgstr "æš«åœåŸ·è¡Œä¸­çš„作業" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/��������������������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0017676�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/bazaar-dark.png�����������������������������������������������0000664�0000000�0000000�00000646570�15240005042�0022605�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��c��¶���LùZ���sRGBÙÉ,���gAMA��± üa��� cHRM��z&��€„��ú���€è��u0��ê`��:˜��pœºQ<���bKGD�T�T�T3cÁõ��� pHYs�� �� �šœ���tIMEêžÕ�� �IDATxÚìÝwœu½ÿñ÷Ìœ²½gÓ릑Nè ‚€Šˆ….½ök¹^»xýÉEA¥‰€¨ˆˆ¢ -Ô$@BÒI¯[²ý”™ïï9çì9Û²»Ùž×óñÏž9sæÌÎ ›Çyûù~¾��������������������������������hÃâ����À0cóÁY�����æU8cq�����à 2àÁŒ5„>ŸÀ�����tÆôѶ½Ê¤Ÿk “ß�����téçýõ{(c ¢Ï³Ñq����€¡ÉôÁk½ª?C«ë­Ap¼�����`è0ÝXoº¹^Õ_áFW«ï�����ºº˜¼§×õG¸ÑÐÅêÆûâw�����§»ý_L~îÊó^Õ×FW‚—®„1TÉ�����€ÖöWÙ²¿Ÿ»Ðôš¾ 4ö¬t¶®;¡L_ÿ�����`ðèJ¿—΂—î„2}ÈXý°Ï®„.]}ÜßqÊ�����0<uµé®9ÀÇÎöÙ+z;¼è(4iïñ@¦Á����ààÑÕ)©{Àt%œÙß1tK OLgC‹öÆ´÷³ÝÎ{ÚÛ¿º°����� mÝž”|ôÒžù¹éâgY­öÕÕ÷î—ÕûèJðÒÑkv;ëív>‡†¾�����|ºÚ°·u“\×QEŒQתe:;Ž.;Ðʘ®VÃtô¼õ’¼Ø¼¿õgµ÷����� Oû›¾Ú¨%SH`,e/¦Õ{;ª|éõ*™ž†1=­†é(€Iÿ9yÂZ?v·™/�����žö×´×kç1=ŒñÔy0ÓÑg¦‡0VDz_= 2ºÄt%„I.V«Ÿ¥¶!ÒÖÈñ����€¡/=ñZýœº(íg¯ÕÏ…25½2l©»•11]†”¼8j?I¯Šé¨— �����€Ô~o˜ôª˜ö‚W~ÆÐzû®|VëaJݶÔ0¦§ALë G™!Œ“¶$­ßk‰!J�����À×^uJú’ Yâ’b‰G7m±Õʸ­öáuðyV«Ÿ{ÈhϘöšövÖ Æig JÊ’œ1cÖñápøð@À™cŒ5Á²T¬ÌaI������ûã£jË2›ãq÷H$²xõê•/ÊešÉ&™]¸j©š±Õ~(ÓºoùZ=Ø®+=bÒƒ˜dL íç`âçìüüüâ‰+΃çÆãñÒx<®x<.ÏódŒáö�����ÝfY–lÛV H.•±XìÁM›Öÿ±®®®ZR“ü�&¦– ™xÚÏ]iöÛ^™ý†] cö7<iÍyÓƒ˜€Z†"åÌš5ï#ápøKÑh´4Êu]î�����ÐëÇQ(R(ªŒD"7¯\¹ìIIj”Æ” dºÚäWêfC_§ ÇÛÕª˜özôÄdIÊ;wÁ—ÇùbcccN4¥ �����ôcŒ£qrÂáðÉåå#óvïÞ¹$ñrúp¤ô¡Gû YÚkã²_û cºSÓÞLIÉ&ù˜%)gÁ‚ÿëyÞÙ „0����� ßcF ç3nôÎÛ©{³)uE§áLwÂ˜ŽªbÚ«ˆIöŠI1ÁÄ’3wî‚/{žwvcc#w������±XLŽãÌ9rTîîÝ;_WæŒJÉÇô&½õ…évuLOØýUÅ´®Œ JÊ>äyg:Žó…††®:�����P±XLápx^IɈ­{÷îZ¯öûÃHÝlл?Mmus•¶¿Ö¡L0??¿8++üŦ¦&®6�����ššš”•þb~~~±ZfNÏ5¤–"©ûyIv­³ ™Ö?·×;&4qbÅyÑh´”“�����À`Ắ¢ÑhéĉçI )3ŒI/<é(i/3é”ÝÃcµ:ù¹õ°%GR8 žF¹Ê�����`PI4ô=WRX-aLë>¹IÝ_Z³ðx;šâ:cˆÒŒ³Ž‰ÇãTÅ�����€AÇu]ÅãñÒ3f£ö‡*¥çRC˜¤@7¶ílšëŽ^·$9¡Pèˆx<ÎÕ�����Ýâ8ŽÂá°B¡€lÛ<Ï(+*‰è@ @âñ¸B¡Ð’žSÛj)3ÿHŸeI­ÖïWGaÌþžŽ‚—öÊxœ`00»¹9Â�����ºÄqåææ*++Üîë¶m) * *//WÍÍ544ô8”‰ÇãÊÎÏ–_Ó^ÎÑ“�¦Ý×»RÓ^O˜ö^k½.ÆcMð<; �����ìWvv¶òóóºõž¬¬°²²Âª««WOfrö<OÆX”ÆHg¦Õë¦×Úe÷Â9ê¨J&•"Y–Š1ÜM����� S999ÝbÒåçç)''§Ûï3ÆÈ²T¬¶=b:®Ôcv/«Ž°·?����� SÙÙÙÊËË=àýäåå*;;»'oí(¿Ø_îÑ+Ò]é+cõÇÅ*--ÕãÿE>øî\�����† Çq¨"¦µüü<9ŽÓÓ·w%ÓèqæÑW+½6ÝÓþ”––ê÷¿¿WsæÌV8æî����`ÊÍÍ,ûlÝ ·×hcuq]Ÿ())Ñý÷ÿNÓ§OÓúõtÕUŸáî����`ˆq§ÃY“DVVø@ªc’z=ûèíʘ~ b~ÿû{5cÆt­_¿A^x‘öìÙË ����À³¿‘.¯¼ò’~ó›_©¨¨(µ®°°P·ÝöK½òÊK´ï.êÕ¼Ãî…ƒè—áHéb�����>B¡P§¯oذQóçÏÓ­·Þ¢¢¢"ê—¿ü¹.<T›6m: }wC{ùG²@/PŸ#ˆ����`x :'¾øÅ/ë¶Û~¡ŠŠ Ýzë-2Fš:µB;vìпø•Úw7Y’ÌîdÈM9}Ï=wiÆŒéZ³f­Î?ÿÓ1����� q¶ÝyÇîÝ»uÝuŸÓÖ­[UQQ¡©S+´k×.ÝpÃçµcÇŽÚ÷€ü¾Cíc¸K����8ÈÄb1E"‘ÔóH$ªH$:$—!Æ\~ùUZ½z¦OŸ¦?þñ÷*/Á ����Àæy^”––è¶Û~©ŠŠ mÚ´I›6mÒ„ ãuë­·¨´´ä€ö=†\SUU¥Oú­^½FSôûßßG ����ÀÇ;}ýæ›ÿO“'OÒ¦M›tÝu7èºënЦM›4qâDýìg?= }{(^$�����†h´óáFÓ§O×ÚµkuÝu7¨²²J••Uºîº´víZM›6í€ö=¬.¬·”9}“%?ÄI>&'±KHRPRÑÂ…G¼ZS³¯×¾õÌJŸþôÅÚ½{w1�����Cˆã8ûnÔS••Ur]·KÛjéÒ7Ž–T#)&)*)žXÜÄâ¥-&í19*ýg©Ù—ì¡|±ªªªtÑE—jÍšµª¨˜¢;îø w0�����CŒëºjnŽôú~››#]bú“=Ô/Xee¥>ýéK´|ù;]•����ÀÐÑÐÐ0$öÙÃá‚UVVꬳ>É ����À庮êêꕟŸ×+û«««”U1Ò0¨Œ�����ÃCSS“ê뼚¥¾¾AMMMƒö÷$Œ�����ƒFcc£êêê{üþººz566êß1Àe�����ƒISS“¢Ñ¨rss••îÒ{š›#jhh´C“ÒÆ�����€AÇu]ÕÖÖª¡ÁQ8V(R m[’$Ï3ŠÇãŠF£ŠD"C"„I"Œ�����ƒ–ëºjllôCºƒž1������ýˆ0����� Æ������ô#Â�����€~D�����Ðc������úa �����@?"Œ�����èG„1������ýˆ0����� Æ������ô#Â�����€~D�����Ðc������úa �����@?"Œ�����èG„1������ýˆ0����� Æ�����€ƒ†ç55E´sg¥šš"ò<ÓïÇ@�����‘HTcÇŽÑ)§¼_cÇŽQ$í÷c Œ����� Ïó4fÌ(IÒ˜1£äy^¿a �����@?"Œ�����èG„1������ýˆ0����� Æ������ô#Â�����€~D�����Ðc������úa �����@?"Œ�����èG„1������ýˆ0����� Æ������ô#Â�����€~à`01Æp†�˲8 ����ÐC„1PƘԂ¡Ç²¬Ô����è ˜ Œ>5ºHU¢©yYÊqziÔÜ­÷÷í_Qßëim}³žØY¥‡wV+ΨG����è ˆ2GºcÁTMÏËâd Q9Ž­ù…9š_˜£O)ÕgÞÞ J—ó����ûÃÿ•þ¿é\Ww,¨ ˆFfægëöùSd¹qN����ìï{1§�ýÉOç+#ˆ†fægëܱe2Æãd����@'cЯ\×Ó# 9ÃÔ#‹äº„1����ÐÂôÆ$K¹TÅ WÓò²$YÌŽ���� ŒA?3Ê 8œ†aÊ¿¶1����ÐÂ�����€~ÄÔÖè [98¯¹eY}²ïï~÷󼏢 ;|Ýu]ÕÔÔhûözñÅ—ôàƒÖÖ­Û¸(����*c� ;Žã¨´´TsçÎÑg?{ž~ú)]pÁùœ����ƒa €a/ëûßÿŽN8áýœ ����ŽaJ�†…%K–¦~./¡ñãÇg¼nY–®¹æj=ÿü œ,����Š0À纮Î9'sÒÉ'Ÿ¤_ÿúV9NËì]sæÌæd���p„1�†¥gžyV¯¾úšŽ;îØ´µí7ž7o®Î=÷luÔQ*/¡P(¤êê­\¹RO>ù”ü¯r]7ã=_üi}ç;ßêòñüð‡?Ò=÷Ü›±.++KçwŽN9ådM:UÅÅEŠD"Ú²e«^yåUýáÔ† ;ÜgOŽû‡?üžÎ?ÿ¼Ôó·Þz[çœs¾>ÿùôÉO~\#GŽÔwÜ¥Ÿüäÿ¸‰���€>B`ØÊËËËx¾xñ’Œç–eé›ßü†.½ôâ63?•—Pyù :ñÄtÙeëÊ+?£]»v÷ڱ͘1]wß}‡FùG9ÐÌ™34sæ ]tÑ…ºñÆë¾ûîïÓãþú׿ªË/¿”���è'4ð0¬X–¥ñãÇëÛßþ¦æÏŸ—ZFõÓŸÞœ±í5×\­Ë.»d¿SpÏš5K¿ùͯdÛ½ó'³  @÷ÝwO› ¦µ@  ï|çtòÉ'õÙq—––ê ™i ���èOTÆ�òÇÑúõ«;|}ýú úæ7¿¥wÞY‘Z—••¥Ï~öÚŒíÖ­[¯‡~DÍÍÍúÔ§>™ÑcfÞ¼¹:î¸cõâ‹/I’6oÞ¢ÿû™6ŸeÛ¶>ð3‚’ÆÆÆŒÆÁ—\r‘ÊÊÊRÏ]×ÕC=¢eË–©¢¢B—\r‘–?Ï×^{µžyæÙ^9îÖÆ—:†7J²ÔÔÔÄM���ô!Â�ÃÚš5kuï½÷iÅŠë‹‹‹õð謬Lee¥ÊÏÏ×…^¤}ûj%IO>ù”^ýåŒPeîÜ9©Pã¹çž×sÏ=ßæó¾þõ¯ê¤“>±îßøŸŒÞ/»wïÖÃ?¢#F¨¬¬TO>ù”n¿ýÎÔëÁ`P_üéÔó9sæÈ²,cø¸Û³zõ]}õ5Úºu7 ���Ðc� kÓ§OÓ7þ@ŸûÜ ºúêkRÕ1;vìÐ÷¾÷ƒvß uÌ1G·ÔºMk§Ÿþ!]uÕëî¿ÿýíoOf¬{ðÁ‡ôàƒµ»1cÆhÆŒémŽ' )‰ôÉqõ«_'ˆ���úa €!Ïu]]pÁE©çYYY:úè£tÅ—) I’FŽ,×wüZúÐGTWW—Ú6ëÃ>] .ÐŒ34fÌh•——gL‰ÝS§Vè'?ùqƺåËßÑ7þo‡ï™>}šN?ý4rÈLMž<I#GŽT~~~—>¯·Ž»±±1cø���€¾G`Xh=SÒK/-Ò–-[ô£ý0µnäÈ‘úøÇ?¦ûîû½$¿’å»ßývFÿ–žÈÍÍÕ¯}›rrrRëöí«Õõ×N±X¬Íöùùùºé¦ëƒ<¥GŸ×[Ç-ùa ���€þÅlJ�†­¿ÿýmÖ-\x¨$iæÌºå–Ÿµ 4Ö­[§G}\ßúÖw»TÜtÓ5eÊäÔscŒþ뿾ÖáПýè‡m‚˜††½ôÒ"ÝqÇ]zè¡G:ü¬Þ<n����ƒÊ�ÃVYYi›uÉê•sÏ=;cHÏÎ;uÉ%Whݺu©ußøÆW÷û×\sµ>ô¡S3ÖÝqÇ]©ÙZ+..Öi§enûíwêæ›®x<.IºòÊË;ü¼Þ:n����‡Ê�ÃRII‰¾ýíÿi³~ûö’¤ñãÇg¬þù33¦g ;jÏqÇ«/}é ë^ý ýô§?ëð=ãÆ•mgþé½÷ÞûSAŒÔR½ÓžÞ8n����‹Ê�Cžã8züñ¿¤žçææjܸ± ƒm¶}úéI’êëë3ÖŸtÒtüñïÓÚµë4kÖ!úÖ·þ»ÓÏ3fŒn¹åæ6 s-ËÒ/~Ñ6Œyýõź÷ÞûÚ|®$]ýµºë®{8:ï¼sÛTÚ¤;Ðã���0ðc� sæÌÞï6Ï?ÿ‚^~ùIÒ+¯¼ª~ôŒÔk#F”éw¿»;cûÆÆÆ«L®¸â2·Yć·»}$•$mÞ¼EÛ·oט1cR¯]pÁùºà‚óSÏ”››Ûî~ô¸��� <†)8(<÷ÜóúÜ羘zþ裷™)Ýí·ß©U«ÞíðõîN!亮¾ûÝÈuÝv_¯®®Ö÷¿c‡ï?Ðã���0ðc� KMMMÚ²e«ž|òïúÌg®ÕW\1Ä'ꢋ.ÕM7ýT«V½«ÆÆ&íÛW«·Þz[_úÒWtÓM?í³c{æ™gõÉOž£§žú§öîÝ«X,¦-[¶è¡‡Ñgœ¥;vtøÞ<n����½ÃêÂz+íyòg;í1¹8‰%XB’‚’Š.<âÕšš}œíƒ˜1F’_ðîÉóûöÃn½¿o÷ýE'f>óvªjIJ,n~����ƒJCC“Ž:ª¥½Àk¯-Vnn¶$©¨¨PK—¾q´¤I1IQIñÄâ&/m1i&ù8ígµúY•1������ýŠ0����� Æ������ô#Â�����€~D�����Ðc������úa �����@?"Œ�����èG„1������ýˆ0����� Æ������ô#Â�����€~D�����Мô/K•oïTŽÕ79`³eT¿iƒ‚á¬>ÙÜrU°¶ZÁ¦XŸì?©nûm§oößܨ¢å»2VŸì¿Þó$YÜæ@7… ÊUñÁϪtê1’¤Êµ/kÝ¿~¥hÝN��À0Dƒ~f´;îjR°o˜:Û¨¾¦Z%#G÷ÉþS 8W…M5}²ÿÚÂ<Õ{®Jú(Œ©¯©–m•õQ³Ûu%ns  ,' 1 ÏTqÅ‘*3K¡¼’Ôkås>¨Â‰ U·c•ª×½¦ío>!ãÆ9i���Ãa úçK‡eÉ#Ë’¶¸1M ûäs*mO{wôYÓ`G¥Ñ…*ÜÞ7aLei¡ã•B}²ÿš½»s\•y}†m‰ÇeY-×¼/”N?NsÏû¾¾oËr½yϵ5ÿÚzêõzé¦÷êçÿõË µT^ÅšjUµöe­ûç-Š5Õ Éÿ>Cy%šôþËU:ýX² Ô\½];Þ|BÛ?:`ÀØ#?©ñÇœ¯%w]¥XCµŽþü#ÚòÊ´íõG†ÇßD' yüTÅ“ëp›p~©ÂùïSÙô÷©ìµì/Ëx2���Ãa ú÷ ˆeéùæfŸ•Ó'û_Š)öÎUÌ^Ø'ûßjíSxá$_²©oŽÿ)Š4Õ©"+¿Oö¿fùbe…âšë›0ì…H£,«o[QÕlzK‹ï¸,õüÐK¥mo<¢Ý+ž‘$¹Ñ¦>¿7½x¯ö¬zN’”U8J¼N3Ïú––ÿñ«Cî¿ÉpÁH-¼ü׊Gêµé…ß©¹vòGÏÐÄ÷_®‚qsµò/ß‘LïU;Íþä÷äy®V=úýN·«ß¹V•«_”ièÕß÷Ø/ÿUÿs§v,}b@Ïû˜C?ÚiÓZñäÃ4záÚ¾ø1þ!��cЯ,ËÖóш¾aŒœ^®œð$­ ÆdÞzC<û Ùvï†Æ’¶¨N:bšŽ»ûÙ^ïÇñl[ËgO•ÛP¯Ù½|~ŒçiíÛoÈ Æu¦z¿{wÜ=Ê 8}z¹‘Õï\Ûò{W‘º=ëúZ¤¶åó’sÎù‘œ`¶ÜXÓúorÚé_T¬±Voþî¹ÑfIRÕºWT¹övÕ*]~¬*×,ê÷ãÚ·y™öm^6lÿ–TÙý÷L9’0��`˜ ŒA¿ÛkI6ÔëSy½[ýñz8ª}¶‘ª÷jÙ+ÏjÁq§ôêþ×Z•ªWL^IžV8K³Ÿ]Ñ«ûõȹªÎÏ—éͺVPÜ«ûsÑ¿UWS)ÙÒâpTGFzw(ÔÃõõª´$gÝoc<[ã9W¡¼RÕnyG«Ÿø‘šªw¤^/›þ>M:ñrå”NTsínm_ü¨¶½þ°Œñºüž—1®ŒqSëF/øˆÆ}®²KÆ)Z_¥oþU›^¼O’”?f¦»ò®6û©ß¹N‹ï¸T’T8a¾&Ÿx…òÇÌ”qãÚóî‹Zÿô/ÔK’²ŠFiò®VIÅ‘²ƒYÚ·i™Öýë—jܳQ’4ócß”e;òb•Ïý 6>{‡¶¾öçŒÏ å–¨tú±Zñà§‚˜–cY­µ¿YÆk99e“5õÔT8a®ŒÓÞ5/iýÓ¿L Ï5ÿÚtâZÿô/5åäk.(WíÖz÷¯7ª¹f§Ž¾áAe•$œ{ª–=ðe5VnÒÑŸ{X«û¡&¾ïbs‹µè¦ÓÛff;!Í<ó*Ÿ}ŠâÑí|ëïÚðìRâ¼·7”iÁÅ¿TÝŽwµõµ‡tÌþ"IšqÆ×4㌯é…$/UÙŒ÷iÒ —+§l’¢ ÕÚ±ô m^t¿Œçvz.‹&ª)§\«¼QÓä6×këÑæïÝï½.(WþØÙncܘv-Z£æXɱùcg+”?‚¦¾���Ã�S[£ß${ˆ8Ž£ÛêjÕày½¶ïfËè_Ù‘ÔóŸø“¢‘Þ«PˆÉÕÛÖNÏ’ñ,½|ö±Šfõ^˜Ñë§'×XòŒ­g*÷*Ò‹ç'Òܨÿö`êù¿²›±z¯²§Þót{cÇɸÖ-] òY'êÝÇnÔ²¾¢P~™f|ô©×‹§¡Ùçܨ]ËžÖâ;/׆g~­I'^®I'^ÑåÏÈ)›¬Š^«]Ëþ)/õƒ†y§iÚG¾¢í‹Õâ;.ÓÆgïÐÄã/Uùl? lܳIoþåÝÇ~ ã¹Ú¹ì)IRvÉ8-¸ø5ìÙ 7ï¹Vïüù›*ž´@SN¹&ñ“£ùŸþ¹Â#´üO_×›¿½FÆ‹iÎÙ7fÛˆ™'(ÖT«7ûí\ö6Çž7jš,ËVõÆ%íþnÛ—<¦ªu¯øÁM^‰^v›â‘z½uïõzçÏßTNÙ$Í»ðg’ÕÁ…óJ4böÉZþǯjñW(•§ég|M’´äî«UóÞ›ªÞ¸D/ß|¦ªßkùÜ Ç^ uOÿBKᆰÃs=Ḡ©Ý­%w_¥uÿø¹Æ,<SSO½®K×)Z·W/ß|¦$iãîÒË7Ÿ)/UIÅ‘š}öÚ³ê-¹ëJmø×­wä'UñÁë;=—ÁœBÍ»àÿTóÞR½~ëùZñð·5U>wÿ!pÅ?›Ñ¬·=ž½SþsWFÀÎ/UÅ)×ò ��À0@e ľ £/UíѯJËx¸’±¤?å6©În /jkªôèÿ§³¯ûæW22zÑޢϕ‘ä©¶(OO|þ#úøMðp%cYºÿ‚¨&?WžgÉ©:×¶oÕ%cÇðp%c<=þÛ[T¿¯ºåüÛFä5êÒºÜNd=I_­Ü£}Ž=èÒ]c<-ðŠ7ÕJ’6=fžåW9ÏÕÄ÷]¬­¯ýY[^ý“’ìݤ#4é„+õÞswwXá0íô/jêiŸ—%Ér‚ªÛ¾Jÿsgêõ]Ëþ¡š‹©Û›Úï˜ÃÏRá„yÚ½âßrcM©!8v ¤i§}^•kië«~`ÖTµU¯ÜrvFÄ®wþ¥²™ïOüb®–Üu•ŒKU´l}íÏšÑ- æ*Ö¸O’Ô°÷=mxæ×žŸ`v¡ŒëÒЪ±‡\ñh“Vþå{©J”wüºŽù£*vtËP&ËÖê¿þ¯Üh£$ió¢ûuÈÇ¿-Y–bûk¨’繊ÖWµ nWÕºW;=†Úm+µâP¦�� �IDATñ¹»ýßm÷9á\Mûдñ?w´©ìiï^ˆÖW)ÚP¥hCeêó'¼ïbí^ñŒ6½ø»Ô~Œf}â»ÚôÂoSU?­ÏenùÙÁ°ö¬üš÷íTó¾zíç¤*—:“œ¾º#Õ—hË«jþ§o–egþ3]:íþ�� Œº'9«’mÛz-×kªôâÒ‰7–ôל&­ ÅÚ¼¶nÅ›ú÷C÷èƒç\Ö㦲FFoX;´Iu2Æ’ñü0Æx–ÖÍ¢g/<Q'?ðœ¬2Ʋô—¤e3§Êx–<ù½R=OZYߨ'víÖ™#Ë{\ibŒ§ýù·Z»ì6¯½Œë‰œ&Ù”­žÉx’~T]©—M\'˜ºÆƒ…Û\Ÿ b$)R·G–íÈvBr½&M:TE“Õè…mù£Γ$9YyïM·éÅßi÷Šgý@#§P“O¼R ¯¼[‹o¿D±F¦­pÁ^øQ匘¢œ’qÊY¡ÆÊÍí;_R +_ï>þùŒõ¶ãhÜÑç*Ô4eUþ¨éŠÖïM¿¸qÈI*7KÙÅã”7jj"Ü §6i®ÙÑéù‰5í“å»Ôë&oÔtÕnY– b$)Z_¥¦ª­Ê==Ƹ‘†TãoS-ËÈv‚©Ê¡ö4×lßïõ¬Ýº2óù–岃aeSý®u=ºGòGÏЮåÿÊX·oÓ2Yv@¹åSU³éÍvÏeÞÚóîóZpémªÙð†ª7½¥½«žïRcZMÿn<W¯Ýv¦žz½Š&Ì×»ý@ã>·[ ~��@tíæ ôçh³¶íÝ¥›JF(·›,Í–Ñs›´ª &éÿ<©}U{ô±Ë?¯P8»[ûÉÕ ömQŒç‡$þbÉ$B“7NY¨ÊÒB}ü7W¨9Ú½ãÏ ëþóÏÐòC¦úûWÚgÈfž¯ªÑžX\——tûø#ÍzìîŸkÝòÅn³(+ªjÇèüúl…M÷B”zÏÓUîÕË^LÁ>šª¼¯yñ¨6þçNíYõŸ¶AN'³øDë«Õ¸·eF­eü/û…GU>çdm{ý?æM:ñríXú„ªÖ¼¤­•[4ñøKÚìgÔükä¼iéÝ×d|‰/š¸@s/ø?U­Y¤ªKÕüöS*7W£œž€ŠtØ•w)Z¿W»W<«Êµ¯È¸qÍ»ð§Ý»†;×ÊOÅ“ÓÞ5/µy}Ìag©yß.¨R'!›1sýŒºpÏö l K:ùŌъ?Sùcfª¤â(•M?NSN¾F+þ–ö®~©ÓýW­{55dM’,ÛÑØÃ?®Ky#§*˜[ª)'µ?\«rí+üã��0 Ð3ý.½r" êãéC;·êþºZÅ»ð­ÎXÒÒPT7ÖwÄ$­yûuÝöÍkõÆžÌhFÚñw,O¬j=æ¬ÑfS'ÏSb±üž.‰ç®‘\ciõü©úůÒk'/”×…@ÉØ–6[?ü¯+µì©r_mã%*b<cù럱l_}·ù«Ïé7ß¹¡Ó &ie0¦ÿWX§EYQu¥K'é¯ uúðÎmzUnF3˜ªbº¢nû*eTsÍÎÔb³Ì)J5oíj¨6Ê úÙ¨§iÛëkÝ?oÑÎeÿTí¶• å—e¼'oäTMÿð—µî·¨~çêŒ×FÌ:Iõ»ÖkÅ#ßÑŽ¥«zã²òZšI .¡·ïÿ‚¶¾ögU®Y$Ûé~ m¨Råš—5éÄ+儲2oÔtMûð—d%ú�ÕïX­‚qseÙ-ýaB¹%Ê.§†nÌdeÔóä¦püìVÏçÉ5«©j«$É6(”[šv?ÚÊ.Ýú�2ï«U8a^ƺ¢ óe¼¸v¯ïðXœPŽ ÆÎRÝöwµéÅ{õÖ}ŸSåšEsØYûý=ÖÿëWŠÔUf¬ÌyšrÒ5jªÞ¦YŸø¶¬v®g¤®Rëÿýkþ��¨ŒÁ€sGM¶­›êtw]î9mŠw6)ÜW¸)î É(’Pͨ=°i£?kR74Ö×êéïÖ+ÿ|LÓ©©sWqi¹ Šý/nµÕ•ªÙ»Kk—/Ñš·_WÁO>ïIò¬TŸ˜äð¡TõJ¢¿‹ñ¤ú¼l=yÞIzáÔ#5óÍuš¾|½JöÖª°ÆæRST ÊÒB­<¤BËfOUu~?$ÉkÙ·1-Ô2ªpL÷¿®¦²[ç§Þ6z<§IÏe5ë‚ “:=ÿ—>õ¦ªl[Áp¨×§'ïo›^ºWsÏû‰"µ{U¹öeeÖ´Ó¾¨š÷–èÝ¿þo‡ï ŒPÞ¨iþÑpžF-8]áüª\ëÕiÜ»Y¥ÓŽÕÞÕ/É6hÜ‘ŸRNé„Ô4Øpžæœs£ölPý®µ*ç‡ ÆóT·}•+7iÔ¼©tÆûÔ´w³Š§©Q >"·¹6µËv4æðO¨rí"唌WÅ©×÷è¬}êg:ìŠßháwhëk)R»Gù£§kÜÑçiïêSö/yLcŽø¤9ë´ùå?)ÎÖ”“¯QÃîuÚÛjHí^O9B¹#&©¹fW·Ž5·¼B“?p¥v¯xV¹#¦hÊÉ×hûâÇäÆü~15ï½¥1‡Ÿ¥ú«©Û£±G~*¥¨ú=*7Gû6/SãÞMÚ¼è>Í=ï&5î}O•k)§t‚¦þ%m_ühª_L{òGÏÐü‹oѺü\Õ+§t‚ ÇÏÓ®v%·=»U¿}¥Â3ŽoÈŒ;êìŒÀ+]í¶w˜I ��€0è¹dï˜ôç¡PP5qK»¦äkהާ½Þ·¥çÿÏz]M¥–<÷”–<÷T§Ûå™ô¤%„Iö‹ñ!LKPãWÌÔækÑ ‡ê¥ãM¼ÏJ{_˶möiÒöÙj]z1LW¿§öÙf¿ç¿&P(h÷š5Uë^×;þ·&p™&p¹Üh£v¼õw½÷üݾoâñ—¤†¹Ñf5ì^§åüªvûÓJ¯þÛÿÓŒ~] .ºEñæZm[òWU­}9õþâ©G)«x¬²ŠÇjáå·§Ö»Ñf½øãS´ýGÊ-ÕÌ3ÿ[’¥ªu¯hË˿ט…þl@ »7hå#ßÖ”S®Ó¤/WÝöwµáß¿Öìsnìö9ˆÔîÒ’»®Ò¤.Óä.W «@MÕÛ´ùÅû´õ‡Sc"u•zóžë4õÔt襷&¦¶^¤õOÿ"£Ìþl}õO*;K‡]}Ö<ñcÕl~»Ëï}ï…{ý÷^q§âÑíXúWmxöŽÔ럽C¡ÜÍüø·o®×¦~—QQ$Iëþy«f|ôk:bî©zí¶óý{à¡ojò —kÒû/S´¡JÛÞø‹6/º¿Óc©Ùô¦V=úM8îÓªøàõŠ5Õj×òjÃîèÒïR¹þ5•¶ c$uÄHRõú7øÇ��`¸|'îÂz+íyòg;í1¹8‰%XB’‚’Š.<âÕšš}œmd0í Ir]W¿¾êèNß÷—–õù±úÍZ‚O™U,iÏ; \’5‰m\/-pi̤B™dߘ´°'¹ý¸_}­ß®Ë'Þ?¯Óׯ½óÕÔÖC=Œì_' yü´ËMz«7,Ö²?|EÆ‹sò���PCC“Ž:êðÔó×^[¬Ü\¿¢º¨¨PK—¾q´¤I1IQIñÄâ&/m1iéÍÓ¿ð¶ùòKe îËH«ê˜ÁÄõZ‚7=@‘2ƒYíTÏd1©uíUä.~À“Ø(ñš;4®%€®3n\Ëø²F/<C%G©`ìl…òJ2¶‰ÔUªnûJU­{M;ÞüA ��À0B´Ã{2¶¨~±RáHˬJ­—´`ÆkÜÓ*pQfàÒ2‹’Õ©© Ðì¦MoÌѤ÷ߢÂ`™BV¶\Ϩ>V¯êæÝÚ]¿Y[kÞÑ–Ê¥jŽR} %Æ‹kûâÇ´}ñc åPÅ)תtú±’¤Ê5/ký¿M��€aŠ0j0TÇ„KŸZP¨Ù‡){dXŠ5¬x@ïÆFés> f;تyof?d±Z=o5|I­*d”Y!“Þ$xz4O§6”kN<_¶ñgRy©LÜ“‰{râž "å„ 4"¿BÓG¨ˆçê½½KôΖǵ·öÝ~¿†�L´nV=ú}N��ÀA‚0µqyÝpååNÉñ‡ÅLÔSA–ѱš¹òÝ=ú#ÚY<"sHRr‘Z.ò§»n©‚I«‘Õ².ýý‰×ËÜÎo¯¹n¡äXþ‰kdKƱäÙ–œ˜'ÅýÙwŒ$Ïv4±ìp*=L›+—ê­õ¿Ucón.0���� B„1r*FõÊ~ËÒ•g—(gV®Ÿ˜Ä©Šcù–”W*]±íIÝ”sƒYU-Íw[õ†iz”ÖCÆt¼îÈæb]Ô<QÙ€¬ %Y–ß";±s7© ƶüPÇ1FÄtØž‘\Ë’c¤±%‡ª¤à'Úº÷ÕÕ3û ���� 66§�«Ï +÷\YŽ%Ù‰ðò”ucY–,I¹EžÎzû_ò<“˜jÚ’—l¾+?ñ‹—¢ä7þu“ëL«íÒÞwjãH]™¬œPPvØñ—lGv–#;+ +vd…Ù![VЖ´el,KË’cùá’cI¶,œ,q¹Š‹?Æ…���€A†Ê”F„¥)'Ë‹YÆÈ2~5Œ1F&½É‹$ËHóŠviÄšÍÚš;2s*j¯ÕTÔ^òÑjiì›\g¬ŒçÆH ŽÓYyce‡Y![vБ´%ÇJÆ´TÅËz,O’kd9F–ãÉŽÙ–%Û$-#ÛøE…RÌ‹ª~ßS\t����$¨ŒÁ€ˆ°§‘+,)fd¢F^Ô“‰¿gŒëO'í%ÂyF¶íéü½/úÕ0žä¹‰Å³2Ÿ··.Îd>—ŽV™>–=^VÀò— -+dËJUÇd‡~P“¨„±–_É“¶Ø–%[~ELòÑåä:…EQ8ç°así����`¨#ŒÁAgF¾¥²¹ùRÔHQOŠø‹‰z2q?‘ë7ÈU¼eêê ¥õ:|窴ÀÅXÜŒ&3tq=Kžke„0ž+•yYº(<Ù•X,Ç\ì ¢äd1Ž-ËöÃ˶dÙ~b+5ÂÊL_¡L^Éy²¥\|����cppÝðÆÒñGåË$*bLÄó—hb‰xRܯ’1n"˜I„3žkôñØbY®iU Ó~åK*„qÓ«iüpæB{œ²l;˜¤’”d0°ý &¼¤§+Jü¬Ä{”zH=i]¯b[Y }Š�����ÃwSN&Çv”=*$Å<¿*&-„1QOеTÈXQ#Ïõ¡Œ$WÊÏŠêÌÍ‹Z…0‰ ¯uèÒ̸Éuž4ÍËÓ»0cÖ¥Ô/9{’'/âúSZ{&±R}ldÿ“þ4É´zžx=5[V¸‚›�����a ¹ŽÑìCó¤d˜¨ç?F’¡Œ‘õ+fóäÅ=ºëVU2¬VQS]»Ã’•/mÖ¥õ‘9Í+k= “À¸žÂÄ<yÍ®¿D\™˜¿Þ¸ž̤µLµ­–<'Ĥ¯óŸÙ¹àF����€ÆlJrJò²zô¾Ëœ ü Ç’±?•µü<ÄÈO6,Ïoâ+Ï“‰«e¨RÜŸ¯:hy:Ûsºe™íΠÔ2ËRÛ”ò¼ æØ-Š›œ-ÉH¶'#˯li=›R<ÈÄýç‰y³ýáSÆøÙŽÒ¿ΘT0ceÍRQ~©lÓÀ����„0…¶§Q“Â2#9’“ê»bR Vü0Æ$¦Ž6^2ðLÌb’3.Í nÕŒêÍZ™7¡MãO}mµ jüu³M¾?CSÜó§«v,Û’gûejž‘,׋$K2ÉÀÆó+dbnK•Lb•_dÓê1Ȥ?úÁŒ¥¨3CYñ¥Ü����0@¦„ƒÂa#-<O¢WL²qoÆlJÍ-=düíM~£ž?åu41õuÌ“ízºpÏsþlILcí¶³®Âd+nŒ?mv"`ñbnbÈ”?,É‹$†(5Çå5Çe"q™ˆ+uSpûC™LÜ“kŒâÆ$ eüGÏ´ b<Ó22*˜Â ����ˆÊ {S˜ KÂò"ž,G’mÉX–,ËÈX-Sc$ãW£x‰¡J–gü¡JÉF¾1%ÆY5:qÇR=S¶°Ý!IžIW²•1Ò;¬¸‘lcŠyò¬´ŠÏÈŠ{²«ev¥DS_ã&zÊ$ƒ˜˜'×5Š%˜¸ŒÆ(̤=¶1~ÕŒkà¦����€Dƒá}ƒ£Ye¶_ãX’#Û;<K’e”>JÉd’MuÁ‹'¿OK²š%ÑGÆÄ=Ýøš^(œ«&+”Ö'&­‡LF(#ZÅ‘•%Œz-AŒkRSY§¦±6~£ÞÔg»iAŒ—Æ“hm“V)“̹JTÏXÅÜ����0ßU9Îæ91…ƒTÓ^9–ü$¤%ðð«$ iËï~›ê“ûã÷Žq¬¸‘—d ÜF³å9Ý3öTæ¢TeŒ•Ê´TÈØK1ã)Ù$ÆH Ä<Ùn²*Æ–eûÇ•dR³-ùÕ1n"„ioIVÉøŒI ]JþìÉ(¦ð°¿îÁ° YÊuBʲl§eZpte)î¹jö\5¸QÕÆ›U‹ôÉGeÙÙ Û9 Ùa¬€+à¤CêtYrM\qWÔ‹(â5ªÙkâ>��@ [yžÑ„bËïãH–ëO’-)½úD‰éŸó@c$¯¥y®åIžçÉŠ+Q¡â÷ޱâþë§4/×S ‡i[¸4U “Ùз¥ÁoÜEedäùeɵ,Œ%ǵd[žd[éYLbF^¢º%YýK{Œyé2i•2É`FJô—ñ‡«òp®ÊÃy [Næ 1=gŒ–­<ÇVžÔÈP®"ÆÕîH½vGzgV®¼@òœ9 ¶úh3O—‘-G!ËQÈ +Ï)«˜êÝZÕÇk¹Ÿ��� ‰0ÃØ¡ŠÈq-yÆögP²å—ÀØÉ~1‰‘@JL#-?Œ±¼–áJÆM&”˜†Zž¤¸'/ÑC&èÆuéæ§õƒ)d IJΠ”>£R­çʱ­ÄÌFþ®’A‰mYþ$OÆ’•þåNiý^Ú Z’Õ¢Uʤ-~v×:Ç j|v‘òœ 7~?[ŽÆgª8˜£-M5jtc=ÚOÐ «(Xª5¼«µUè”*ÛÎSM¬R1á&��8ÈÆ`X‹iDŽ‘‰H–ãQ2vbx’hØ’˜`ÉJ>&“|ôÚöŽ‘›èã%fVJ4ó]ànÔW×üL;s:¬À— NgùÅ7®%9–Qܲä$˘¶aŒü@&½L2”i _¼vB˜´>2òvܪau­‹ƒÙš’[BõË�Ès‚:$¿\ªTëÞPœl;O¥¡ò!YýÒS!+¬‘ᱪŒîV“WÏ ��p#ŒÁ°cÉh~<*M IrL¢WŒRC€<Ëo“ b”ªd%Æ%ÃùÏ]v¥d…Lò¹åúu“fE´+»Ð ÕæØ9ñþtÓ²äÊ’c,9–ÄØ‰ &½6Æø5;‰¶5-=`’•1ñÖ1^û2Éǰ·{Ø\ëâ`¶¦äÄ $c4%§XÕå@&ÛÎSIpÄAÄ´œ.£’àUÅD ��p#ŒÁ°3µ>¢\ÇHÑDãÊŸÊÚö«bL²An"wI”1²ŒßÈWž?DÉJ WRjV#I®—jè›lê›—&U7kcIv‡Ç‰®S0ëp?ˆ1ÉžÂFޱd[þ€)[JÍòd”lec’ß2;’é L«!KñŒj)Ûl×9Ç R3ˆLÉ-ѪºÝû²´Â]EL{JCåÚ‰1d ��à Eƒa%äzšÈ8–Œ-YŽ%“¨ˆñe4îõ{Ƥr˜D0“¬ˆi©Ž1ÉJ×kiô÷Õ1ž< ¦ïiЖ°âŽÝîñÅ¢«Ôì¹ ZŽ\ËÈITÆØ–‘ düÏNUë(1=¶ü¡FéÕZEj3Ã’çe<wM\îšaq­ÇgÄ &Æh|v‘V×ïét³¢`i·‚Ûr47ïMÌž®Ý~o™¨Ñ–æõZV÷ª\ã‘ÓeT,Õžèvî��€ƒa ×9 õ±l[ÆóÚ}mVu£BqOƶü¦½‰0Ʋ-]¢y¯dµôŒ‘ÿèCò¿TZ²d¼– ™´²¿oŒçQ’›6l)ntÙV¯å :øV§ht¥¼Ðl¹Æ’cIv¢2Æ’i™äIi³<¥ Sòd2†+%›òÆÕ¶:¦õp¥¸1ÊñÖ(¨ÆŽ¿øÚV§×Æëà¼÷·òp.Íz¡<'¨òpn‡³,å ºÝ¬wNÞš–;·ÓmBvX9³$IoÖ.2ç+d…•(`–%��€ƒa 7æÊ u|kf…‚jjn[ÚŸß׸ºˆ? ÉI›Aɶdl/1u"l°Z5ñ•ZÊPU(ÆKΤ$x’I†1‰õ®_“ñ—ÆïlÐÆ9ªÏnÿwˆ7='70Kn¢Ʊ,ÙÉ &1“’¥–Ê–™—L›@&Þj¸R¼áIéC–ÊÝ—;=÷Y¡P§¯Çãƒ%ŒÉëö{¦å–éãcfirn©êã½ZµYݱJFÒé#§ëø²‰*dkkÓ>=¶c…Þ©ÝÕ¥ýW:Q'–Mј¬y2ÚÔP­'w½«Uu{Êÿ~ËÃy‡1NA·÷7!{ª$éÙÊÇUk¿ßQA D§–}R²+ôVíˉø²-KREÎlMÎ>DùÅML;#Û´¢þu5¸~ÿ–OŒ¼\vë©ÑVÖ/ÑÊú¥þqeMÕô¼yÊwŠõ"ÚÞ¼Qï4,VÌ‹vë÷Ësc���c€A wê$Œ)ÌÏU$•çe~áš»£NVÌ]Œë%†(%›÷¿gŒ•¶”èÓR{’L>¬d“mbˆ’?N(Ñ´7Q!ã%fTòûÈ˜Ô KV\šµ¦J¯Ï/oÿ a|£b‘•Їñ÷ËA•¨ŽIZòLÛ@&½‘¯_Ó6i=l)7þ® ÌæÏ«mÛ**ì<äˆÄã~à wðe¹³ æKÓŽW ƳtÚÈéš‘7Bž<Uä–¦¶˜S¤*ŽÕ­ë_ÑòÚî÷££Ñ™£‘$UE›°lÍÈ¡éy#tËúEZQ·kHý·7#„¾2õxÕÄšô_ï<Õ£}„-GÁ°jc™i–-GݯfJMª‰ííp›Úx•<y Za¿ª­ƒ0fNþQš‘;Ož<ÕÄö*ÇÉÓ„ì Ò?÷<¤¸‰©&^%ÛÊfXàɶœÔ~§æÌÑ‚‚cŸ]£'W¹³U*×*ÿšèðÔ5Ž‚Ê²³Õì5ñÇ��€08õMÊËéx(C0ÐȲRÕÔÕ)Ò•gŒFW5©¤6"϶e%fO2qKv¢2F¶ü©­eµôŒIühü¬&Ñ;Ư€±ýbŒ,YžI듨˜I eLÜï#“þX¶ÇUùîfí.Ïjÿ Xóãj L’ce¥úÅ$‡)ÉX­¦¶6©F¾É)®=%‚¥2ÉEÊ c<#Ï4k’iÿ˵mYÊ ‡TT˜'Çvö{m<Œ duû=3+Ĥ›œ[Üþ9‘¥³FÏê4Œq,[§š.IºóR½Pùž,Y:oÜ<4¢B§š>d˜ÎŒž^£ÖaLØÎàßÑÖ´œÙ’¤EUÿЮè69V@§–­\'O£Â´µy½ž­|,ã}¹NN+;GFFÛšßSÈknþ’¤¥µ/iCã*e;9:¹ô* ŽÐ¤œéÚØøn·Ž-lçÆ���Æ�«¶±I£LQfyHë×±UVTزb´ôöìÁõ{„%ït‹ÛàˆÊ{ün#©®¡yÀÏk®êö{&æwû=㳋äÈ’ÛAH´l:Í^<qŽŒþ²c…ž¯Ü(7Ñ_ç‚ñ ô²)ú÷îuzpÛ2IÒ)#¦êÜqó´¢n—~¾n‘+«k&¥ UzaïF1r¦òa-¯Û¥¶¼©úxTy~6÷ IÒMk_йãæiT8_››öé[ÞÒæ¦šÔ±Q4N9]£³óÕkYí=²ýÕÇý!4ßyŠÆfè[ÞÒ eSTÊÑ[ÞÒ“—$³u硟Ð}›—êÅÊ÷zåuÔ|·K7žuàÛyzt×ïR?K’ICT‡³ÍÌ[ ˲´­ù=ÕÆ«5>kŠ+ f¯IWI’šÜF½×´Z3sh\xr·Ã˜Ÿ��� Y6§�ƒM,‘ÿ—x°©khRÌø™j²l§ÛïiˆG»ÿ/Úa#ùÌêD_˜+&¡ë+ŽÑI#*”ç„´½©V»"õÝþÌQá|5z–Ö7T©ÙÄuxÑX]7åØ6Û]5éHín®×žh½¦æ–èËSß§‚ ÿ…þý¥“tõä#5.»Pëêö*êÅõ¾ÒIúÚ´juîÎ3[ÙNP››j´'Ú ÊhKsçW*7kg¤®×®QÀøìßøý4*<^Gž¨SG|JÙNžÖ7®Ô®ÈÖ6Ûç8yš˜=M’´*Ñ+&?à{ûb•wGM´R’Tì~ð7Î ���úa ¥ªÚ†nM‹¾å£êÚúAq,„1¯Tmîö{^Þ»i¿Ûüæ½×ôjÕyFš_0Z盯Ï>MWO>RYv÷¿`‡í€n^û’îÚô†~¶v‘§]“!�� �IDATŒ‘¦æ–hBvQÆvïX©Ûß{]?Zýœ*£Ê „tTñxÙ²tæV¡?o]¦Ÿ­_¤ï½ûŒªc••§cJ&fìgeÝn}}Å?tÓÚ´¾¡R÷l^â ±&ývób­­¯ìµkäô8pHü°¬^ÚN* –jbö4å9…jtëT¯i·¨fFî|Ù²µ#²Y5qÿ\-¿ïML™_òyÐê~å–C��pÐ!ŒÁ w]Uî«—Èc…êÚzÅ]oÈÿßv­ÒŠÚÝ]ÞþÝú=zlçŠýnWêîMoèËËÿ¦Ûß{]/WnRÌótDÑ8]0~A·sw¤^;Õ(Ûš÷iOÔÀÆdeÎB´lßIRÔsµ²nwj›âP¶ =uïó+=š½¸ÞÙç÷®™œ›ê,©ÙÖ«½búBòè¬^ÚN’V׿¥¿ì¼[ÏU=¡€Ôü‚c5=/ózeÙÙš”=#q?¼™Z31IRP™¡KòyÌDùƒ��€ý"ŒÁ Õ©¡9‰`õMÍjŠÄÍñĽî•ŠyžnݰH¯VmÙï¶Kk¶ë–u/+æu>ÎÊש#§é˜’ jtcZ\½U÷l^¢ßm^,Iš_0*c{+­bñÛÿÓk·ªêp’³úX¦Ã}Æ»©˜ÌýÇ×o×È5;WÐ «,8òÿ³wßñQÀ?{5½š„ÞA:iþ¤÷.)¢`Ã"bÁ‚ €4Q¤"Jï %ô$$@IH%ÉåÊÞ>\räR/ír!Ÿ÷ëu»ÝÛ237;ûÝÙYx)Mã&aÄcÝ#Ü×›òSe9ÂS=çç!äˆÔ…#&Ã#µ“DÓØ<îÊr•é‰\OôqùÞ¶’N""""²=cÈ®i´:htz°‹LÉHÕé‘jG�H5l܃$aUØ9lx3ÇyEcyèi¤¼×á(SbXå&xÍ·%j¹˜NĨîT� MÛN­h:Ñ®éTr ‰k…l—é£rAÍ´ï×vöB9•#�à&Ñb¾vž¾��¹ ÜLË OMDœNƒƒiå–îU��r¥†î¦ä(0¦g‚¼ÈóÈPÀ€CzÏ!C I€`Êi¾ŒdNxÑ«?þç5�Þ*SÚȼU•Ò¶9Ù<¯Jæ€N¦G–ßJ+&Ý#m8 ’2'ó<Žr'Ôp4=YëAjhÊ&ƒ1DDDDe oT'»'Š" ¢ 2A™L`‚Ø€$I00ØÁ€½™%‹:¸È•>±ßñè&RD†Wij^D‚„oaÇ£›V/+$%7ŸD£«7>©Óq: T2œ¦mÛÀ4.KÏ uQÃÙß4ê A Ë¡×ƨÇäZ/à^jj8zB€€ÛIñ@“�ÅÓÛbºùÔÁóá­r†›R$Q‡€Ø{0BÂöˆíÛß{MÝ+ÃÇÁåTŽx”š„S±¹ƒóX« . >®Û {âjbdò(3Q •¼pO R *<çX µA%S#Ts!)7‘"æ=Ðð1á©wQÅ¡:yöB’12'(5 ’·’.›ç­ãÔ A‰ÇºGˆÖ=Ê´©¸žtM]Û¢…[Ôvj '¹3‚ñú„jó½_:#{�•5 ÆP©a”$hRõ$ ™ r™ 2… ršÂ% Fƒ¢d„A4B¨•ö[5$RQAå\¨eŠFŒ^ƒ Õ[CVß;‹€Øù^ÎO!'Ñ«B]´ô|å•Î0JF„$ÇâßÇ!æAƒo>‰Â_×Ðͧ6œåJ\ˆÀµ'‘˜P½u–åÅêR°/ê6V2=§ý\ܬ¿)Ë|?‡Á°ÊMà¤P!(9<¸d~lõ±˜Pè$Ý}ê ®«RENÆ„aKÄ5èòèU§OÁÆWЫB=ÔtòBUGc Y®5¦ÀEî–ïe¥ÿº[{þ•T¾ O;tÖwnŠzNÏã¡ödé·k ȱ#]@üaÔsn _Ç:p–»Ã é® ÅäóH0Ä�”2%j;›A¾™|1ÛåÜI¾ Q‹ºNMà¢p‡Î˜Š{Ú \{rFäÿÖ/­1…ƒ1D%I€Þ`„C$‘$)íÖ´:=RuúR=°¬]TrTJ8¨”P«UpPåÜëDk0º!R‹1£×B+‰PòVšKñø1è?È!í¤è-Cg±íáMl{˜{š}‘·±/ò¶Åggⲿætìý<Ƕ¹Ÿ9‡sœž×2fÞ:˜ã´ÃÑÁ8\àtÕJ"õY{z¤5¡‡ùëÕ”~ûQuuH0"B†”›%j86ÀsÕQÙ¡Z†$çòi„7“/æd�½Qm‘kóÜ®0Ím„inº<‹Ð#Õ¨aEDDDDTÖÎØd_$<ÑŠpubJØ£¤Tìaüž(mª:¸z9}t3åž79–1îr¯|/S#&#,5wSn Y|ºühÝC\LT£ªcMÔvj7E¹Ò÷›YhˆˆˆˆÊ cÈ.‚�I’ @BŠ•=±G )ó8+B Þ¥M†§Ò©ÀcÇPñHõˆÒ&ç<ÝG™ T‚õcÇœŒ?ˆh]8$)û  ^Ò"$å&î¦ÜByUE%±Ô¤—NÒ"ÉÀ` QYÄ` ÙA¥Aƒ*L ;t7:‚`a»¯‰GW@*ýOÚ:Ž ·æ:O’A—ç<%üãÅ}M|ž³ÅëcPA]%ÇàJfQZëÆò‘ !Z÷°TÕuñ:öÌ""""*«øhk²³B§Â(ñQÖöÆh”p÷±¶D{Äd”"ê’ËŒ±!ɱHó~ º^Ò"FUæÓ+F½Ä§(•U ÆÝÑ€Ëa L;s14©û ’Åé5I‰øD­’#I‰CœÞúAh5Æ$Äê£í&°gÛ䫆ƘIJCDDDT†1Cvu’�r¹Çc¡Õ‹L;¡Õ‹8¹\n‘Wö N¯ÁÍ'QH²¢W­$Q›O¢òˆI§1&!R]ꢓ´ˆÔ†3CDDDD Æ}ÒK2l:uŸ·+ÙI’°ùô}èŒöÛ‹!EÔ#0)÷S •Ä+nZIÄýÔ&E[ukRοs-¢uHc âÙ ¦‰Ð#AŒA´.‚·&�àKv&ý©J2™ a±Zl?÷�ÃÛ×È:“Ê&$I¶³“ …BiÎ#{¥MF”6nJ5Üp–«à “C!“?ý–УˆT£ˆdQ‡DC*õEPH2$"É™#Ô2'¨dj(ä‚Âê~í©% ’:£Zc R–#""""²À` ÙoáT(p6$‰)·ñF÷pP±¸§Ì§¼+ö߯Èd(•¥ëÒ‰zm‘ ¨ø¥5 \QÙ8ße½Iï�J¥w¢4˜±á,z·ðEÛºÞL b&INFbËéPhEÁ"#p \"""""¢Bc0†ìRÆ€Œ\.‡A’aKÀ}ì½p_jQ!E¼a©ð$@/ŠÐ§Hˆˆy‚?N†#Y/A©TB.,ò„ˆˆˆˆˆˆ Á*A€J¥„Æ`€Z©�œ¡R*á v€Vo€Vo€Ng0ÿ­Õ‹æ¿ÿ>ÿ2YÙ«Úh4â×·;e›.é镬Õ[|®MiMDDDDDDŃÁ²[{Ç<ýLÎ�™•4ôz ŽŽŽËËf0FùN/Ae›DDDDDDT4øhk²k™ƒ�‚ áþãd«¿Ÿj€ He8ý Ÿ^ Ä-cÈîe ‚ '#­þîýXm¶==ÊNÚ.½ˆ!"""""*z ÆP©gCbq;"1ÏïD&ê™$ZP¡T½¬Ý§‚¦1DDDDDDŃÁ*5Òƒ …¿ºÀˆ„ç KÅ© (ª—Uà†½¥‡5ûPôb †ˆˆˆˆˆ¨øp�_*UÒõ•d üz(u+¹¢±¯;Ü•ÐëED&¤àfxîÇ¥B­VgùnYHŸt?ÎOz1CDDDDDT¼Œ¡R'=X vp@Èc-n? 7A€B¡„ƒƒC–ùËj:I’A¬J/bˆˆˆˆˆˆŠƒ1T*=½eIžíc«TÈ>-ärär5ÓŠˆˆˆˆˆ¨1C¥ƒ L+"""""¢Ò„øÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6¤`åM¨Õj¨T*Èår(r‚`Óm$ ƒQ¡Óé Õj!I3‡åƒå¤ €»R„‹B„£Ì•L‚B›å 0Q€Æ(C’A޽"‹F™©Xǰ|1™Ç¬;ˆì ƒ1D¹@Éåpvv†ƒƒÚ.ÈJ¥J¥"m{\‘šªErr2DQdf•ñòÁrbŸåFx« ðR‰Y¶lƒJ’¹�8Ê%8Ê(§4@p£“#Z«€FdGÙg½n`ÃòÅüe³î ²/ ÆåÀÅÅNNŽv½j88¨‘’¢ARR3åƒåÄŽTvÐÃG­`ÛÀ‹µ$IB9¥å”Di•ˆHU2ÓÊXÝÀ:†å‹ùË<fÝATrŒ!ÊD.—ÃÍÍ Jeéùy899B©T"11‘WX>XNJ˜£Ü_GåÆR³Í>j=\"îiTì%SëÖ1,_Ì_æ1ë"Ûc‹‹(¥R‰rå<KåP©T¤m;¯n³|°œ”…µµ¥*“ÎQnÚv…‘YëÖ1,_Ì_æ1Ë‘m1C”F.—ÃÃýT®(<<Ü!—Ë™¡,,'6æ(7¢†“r¡ôH($Ôp*Á$Ö ¬cX¾˜¿ÌcÖD¥ ƒ1DiÜÜÜž™m777f(Ëˉù:êJu Æ|b HðuÔ1CËhÝÀ:†å‹ùË<fÙ"² cˆ`,íYêªT*àââÂŒeù`9±‘Êúgª7‰£ÜˆÊzfl­Xǰ|1™Ç,[DÅ¿~*óärù39j½““#4 B³“ò1qâ4h $IÂîÝ{°lÙ èõúBm×¾}»!—ËÑ»w?h4–“â(7šŸš”5«x¢kÛêhRÇå=œ I¢bSpåvž¹‹{Kt¿|ÔzÄéåзŒ;x,bùbþ2Y¶ˆlƒÁ*óœó5¿§§'F‰ŽÛ£bÅŠÐëõ¸{÷.vïÞ‹íÛwØÕAÃÙÙ‰‰‰Ìd–œôë××Üíö•WF@,\¸ØêïËd28;;ÃËË uêÔÆàÁÍÛ¶|ùlܸ 7oÞBLL ž<yÂrbCÞjC¾æW*d˜0¸9^jS™{¦W­è†ªÝЫc-ì;‚ÕÛ®À s\ÎÈ^ѱEUxº9XL Á7¿žDRŠ®Ðûv/EÅL.†º¡|y/¨Õj‹Ï¢£C§³Í-bÞÞÞP©¬(3&&©©©<ÙqùòðpÇ«¯ŽB‡íQ©R%èt:cÛ¶íØ·o?$I*ÖmeþÚ_»¸¸Àß4^zéEøøø )) /^ÂÚµëxÛªu6hÐ�þþ¯¢qãÆpuuAdd$<Œ?þØhñ(êN:bîÜo�sæ|ƒ]»v›§9::`ùò¥¨[·.�à‡þýµ…e‹€`ÅçB†÷éË2üŸþ’§½i/�%�-ZŸŽO`j“ýý�ÞÞåóÕx]¹r*TðÉvú‰'1uê´bmôäWtôc»Úžg¹|�¦'"L˜ð:zõê�ؽ{/~ùåW”+W …*ø`ɒňG¯^}­Zæ/¿üŒFæk;®]»† &²œ3¹�<ï®±:í” ¾x³#Ö4•«³×¢¢—3ªV|z|BR*\Õ ®EaÎÏ'² ÈŒÐ}:ÕÎq]wÄcæŠã… È‚€+ ŽY4 ]7¤sssÃÿýß|4l˜õ7­×ë1oÞرcg–i …uêÔ‹KÞ'pIIɸsç †¬ÂF⫯f¡råJVo³ÑhĶmÛ1þ»uLñ•¯J•*aÅŠ¥ðööÎvúæÍaÁ‚ÙÖ(CyìåUK—.¯oÕ,󊢈3>ÇÑ£Çr]g§N1gÎWÙ>Ý($$ï¼3qqq¹cd2¾ûîtìØ�°aÃF,^üËÙ…äd üüZ™ßœƒ³³©·š‡‡;.\8Û@<�=��CÚKL{3¼¤ ÿ§ØŒ#Óߦc;³Ê²ÌW%ó2jÔ+æ@ÌêÕkðÏ?ÛáììŒ>ú�-Z4Gûö/ M›6°«},ÌM–ü™0áuŒ=ÊüÞßÿU�À²eË�+VÈ÷2õz]Ú VâââŽ#GþÅôéÓ��3g~…nݺ¢jÕª(WÎ...Ðéô,'6à®óÕH?¨Ö,d?¬;¤d>›`j¤FÇ%ÃËà Ÿ,:‚ÚÏ•Ã[/·@“Ú>3àyü²õR–eunå I¦-<ŒàûqæÏ˹9`Ö¤N¨ñœÖÌîgñ˜x Ÿ Åæ· ZqR-IÜ•"bu|²Eaë†tÆ EÆ qêÔi´lÙ*•©çѵk×P¹reL™ò!öíÛoÑCÆÉÉ Ë—/E:µ­^Ï;A˜4ém$''[|þÕW³àããC‡ãÉ“$«–Õ¼yS 4×®]ÇîÝ{x,²³ò5qâðöö†ÑhÄo¿­Æ©S§áææ†·Þš„ÚµkaèÐ!ؼù/Ü¿ÿ Ëw[´hŽ-šãÁƒpìÝ»mg$?þx*|}«B’$üóÏ6\¼x •*UÂèÑ£àââ‚éÓ§áäÉS9Þ.íîîŽ3¦C©TB£IŲeËŠ>}z£Gî¨Y³&Þ{ïÌš5;×í~ï½w̘Çয়–°l1Cd’Þ¶–‡‡�À`0à—_V™oIÚ°á´hÑ<mw»ÛGÄlS>� W¯žiA™‰?ÿ¼ ½{÷IJeËQ¯^],Zdºr•± o^&MzãÆ�¬ZµÚüyz0fß¾ýØ·o?�d;ËIñqQX[bµJîèÚ¦:Œ’„ïWŸÂµ hth^n.jDD=Á”‡°á»èß¹.bâ5Øy,C»ÖGjbßÉÜdÙUÛÅÉT>¿ÿ%«·ÁËÃú7€(Iؼÿ¦ÕûÈ`Láë†téÙùó@­ZµÐ¤I¤¦jð÷ßÛðöۓЧOo”/ï…ˆˆ‡æïôèÑuêÔÆ±cÇv/ï²VÍ:uDϞݱeËßæÏË—÷BåÊ•ðï¿GñÙg_X½Í5kÖÄúõkñüóM ŒaS|åëڵ눈ˆÀ£G‘ضmûÓß®‹ ¾új&A@… r ÆŒ?… Æ0í'«V}:u�¬_¿K–,3ÏöìYÔ©S�àààc0¦wï^æ[«/þ ÿý�àܹó¨R¥ 7n„=ºcÑ¢ŸÌ½cÒ¥_ 4h †9mû¯aÖ¬Ùêá²E Æ=£äòü`>|=zt‡B¡À+¯ŒÀÖ­ÃÅÅC† �$&&" àL®Y�ÇСÃÍÓš4i‚Ÿ6,CBîbÔ¨Ñ:t>úèó<z½AAAX¸p1._¾RlûH…M;SCC¡P˜ÇIo|ÄÆÆáæÍ[¸pá"V¬ø9_K}ñÅÎ$)Ï ‹µó±œ G™õ·ltñ«A&àØù0\ ŠÆs\ÑÕ¯ºé$ÙÓ £û5Ab’¿þ} éíÕJÞ.èм*ºøUÇêmY÷zƒ#¦ýmõ64©ãƒ™;âÅVÕ¬ÆägY7äÏñãÿáøñÿ²œÄdV®\9�À¦M›qþü…<—Û¬Y3têÔÑü=s£OaºÝ %%%_Û™>v·+°Ž)ùòµyó_ïe2jÕª‰—_�xüø1nܸY*~ÌãÂçqÛ¶mÍóíÚµ¯½æîÝ»ÁÛ»<°nÝz;v<×õùùµ`ºE1c.ý!7‚ hÓ¦µùbP:£ÑˆfÍš™Û°<ÀÔ©Ó <Ë1Cô¬þ�ù«à;Ž/¿œ…ñãÇâí·'áí·'™§œÁ¢E¦±@ò’~UáÚµë�€îÝ»A¯×gÛÐ=þo£J•ÊèܹæÍ›‹þýY}• ¿ûH…K»]»vãµ×ü±lÙÓ{¢wî4õ‚‰ŽŽÆë¯¿‘ïe–/ï… *˜ÿ~ü8¦P󱜕Ìú«|MëšòæÈÙ{P*d˜ývg¸9›ºª«”røVtÇó ãùøÁ€Pth^MëT(’í½u÷1�ÀËݱXö‘u1ÍJ6­fÏž…®]»�0 ràÀA¬Xñ³E�ÎÇÇÇ|‚[©R%óÿé@TTT¾HÀüµŸ<®Q£º9p2~üXó¼�иqcÌû-¾ûî{‹6™U¬X�™åi!!!YæËÈÅÅsæ¼m.cÓ§Ï@aÆeÙ¢gŸWIeš ù< (ЪUK‹Kºúõë¡Y³fy.ãÒ%ÓØ=zt7ýe2téò?\¹r5Ûùÿ‹ÿ„O>ù×®]‡««+¼¼¼Šm©pi÷Ë/«°jÕoxôè=z„_5½€Ÿ^†S§þÃÑ£‡±xñBÔ¬YÓªe¶mÛgΜÅÙ³çàççWèùXNаA£hyS�ÄA%ÇÜ÷_2bÒ]¹‰ø'Z‹Ïî?25`½=KÅ>²n ¦™ý¤•\.G³fMѾ}ûLÇ©غu3¶n݌޽{�|}}ÍŸmݺ>>>ÌßRšÇ...æu´më‡iӦ㥗ºâç@£1]È{ï½wàààãr]\\ K �RRž~æêê’eúL†—×Ó^yýúõeÝA”6±ˆòáÃßG¿~}¡P(°dÉ2¼ôR7ôï?'Nœ„»»;¦NýÝ»wËuÑÑqïÞ=tíÚr¹mÚ´†§§'.\¸˜íüJ¥ŽŽŽhܸ1ªW¯†Û·o#""‚™a§ V®üƒ Å ACñË/«ÌO41M= T*Zµj‰ß~ûŪ€L»vmqêÔiœ:uíÚµ-ô|T2ÒoAquRÁËÝ)ËtŸrÎæ[Ûz¶¯‰U³ú`ÉôžL8"²Ú矉:Ãß .\¸ooo|ðÁdóþèÙÏãŒãÀ¬^½ÇއF“ŠS§NcÅŠ�Lƒ‚7mú|ŽëHJz�ppÈz!ÀÉéégÙ .“ÉeKfذ¡hÙ²3Ž( ÆOެäêêŠú�N:ß_Fƒèèh|þùæƒßðáÃr]Ž\.DZcÇáááæÍ›¡sçÎ�€Ó§³ÓÛoOÂáðrår$''cîÜùùÚn>Ð6å�jÕª…Å‹âèÑÃ8uê¿,½`&N| íÚu@·n=±sç.¨T*|ðÁäÜ+i™ -[¶À™3gpúôi´nÝ*Ûû§­å¤hò1œJL‚éŠä£˜d¼ýíÞ,«îâW¯ôl�x±U5¸»8ÀAmº›8:NS*ö‘uƒ½o·Ñ|ʹ\Vèýfc»´EwîaÆŒÏÍŸ¥÷Æ€þý¡]»h×®~ýu� ÀüY»vððáCæo)Í㌷(ß¾}Ûâ{ÁÁ!íÚœ<z À4ร£eš5j˜ÿŽŒŒÌöû“'ˆ÷Þ{ƒ‚ à³Ï>…““ë"cˆ2œd¬¿ÚÙÙ2™Ì|̼cÚcbÓGŸÏ‰ Ø¿ÿ � U«–hݺ%BBîâîÝ»ÙοiÓfLœø¦M›Ž” –.]ŒúõëË>RÁÓ®V­ZXµj%Zµjiñ”„ìzÁ$%%aÑ"Ó˜2Ï?ß$×å¾úê(¤¤h Óé¡×’’‚‘#Gx>–“¢¥3Zß}úr ©ÑÚ¡yU$¥è Ï&ÊQ>ív$•ÒòdùòÈR±¬ì[tôc$''£m[? þ2ìoÕkÒ¤‰�€Ðа2—fö^¾œœœ°gÏ.ìÝ» 3g~‘¥ÝbnðËäüM”‘<¾råé`ïMšX¶1š6mjþ;ãÛ2;sæLÚ2eèÑ£‡E¶OŸ^æ ÉÙ³g³|÷Ÿ¶!44AAÁX½zmZP§"Þÿ=–-¢L8€/•i¢(B©´îg…ˆˆ‡¨\¹Ú·C‡ÁÞ½ûàì쌷ߞµÚ4þùsy?éâÎ;¸{7;wB•*U°|yÎOÖ‰ˆxh~zÒsÏUÁ»ïoÍp�� �IDAT¾ƒöíÛãÖ­@«÷‘Š¿||ðÁd¨T*ìØ±‹ý„¤$S×]Lžü.úöíƒ>˜Œwß5õ„yòä‰9X“›qãÆB­Vaß¾§Â?~Ö­[_ ùXNŠ–Æ(ƒ£Üº®#ÏÜE¯ŽµÐÕ¯œÎ>øê׸ ¦ø›óMg”$Ìa~[í#¼n°'F£?þ¸Ÿ|òq¾OŒîÜ 2?Þ¶ iFE_¾RRRކ ¢GîHMMÅñãÿÁÃÃcǾfž/§'=å6“}äñéÓG•*U0nÜÄÇÇãüù hݺ%Æ�¸wïnÞ4=}©Gî˜1c:‚‚‚ðÖ[ï"55»wïÁ˜1¯ÁÕÕï½÷.ÔjBCï¡wïžhܸ±é˜vðbbb³loúÃ)�`ÍšµèܹêÔ©~ýúâèÑc8qâ$˃1D€N§ƒƒƒÚêFììÙs°`Á|8::â£>°xô4�›ïÇÍËðÆÒhsœ¯cÇðññ³³ºtyÉÌÉÏ>Rñ—&ML“Œài/˜¾}ûdésùò•<»ßΘñüýG£V-S¯š»X³fmçc9)ZI9Ê) VÍ{ïa"ö A¯öµ0ãõöPȳ9Ô ´kúœÅg{þ ƃÈ'Y×¢ƒ³£ 5«x"$<Ϊm¨_½<� 6Q“¯}¤‚× 9„¬ùŸÞû2sµpâÄ ÄÄ<FXØ=«–ýàÁ}Ìû=og™¶sç.\¼x Mš4¶z>|„ .ZŒEQ4£â)_ß}÷=–,Yl¾:ý–êtçÎÏòhät¦ñêVáÁƒðBo3ÙG‹¢ˆ/¿œ…… ÿÎÎΘ:õ#‹y“““1sæWæöG¯^= T*Ñ AÔ­[W®\E||¾þú[Ìž= ŽŽxÿ}Ë[ªCCC±pá¢<·Û`0`ö쯱jÕJ( |òÉ4Œ5‰‰‰,[D ÆPY§Õj¸Z=ÿ¥K—ñÊ+¯bôèWáç×>>>0  »‡Ã‡`óæ¿Ò–™·ýûMÁ˜ë×o <<ŽŽÙ?-¥eËhÙ²ŒF#"##±zõ;v<ŸûHÅ]>Ò{¸d Ĥ˩Ìĉoå¹Ü'NZuÉÚùXNŠV‚^ÁI°úžöÕÛ®à9W4©cÝ“J®ÜŽÄšW²öïù0ôíXó>|)ßÛ}äL¨• zc {ìÈ|�sç~ƒØXË ZãÆ””„èèh�¦Ç OŸ>Í<ý¥—ò—×éóûí\‹1@ÂÃÃ'''Lš4Õªùf{´uëß8yòT¦Gùºs'£FùÃßÿU´k×>>>Ðjµ ¹‹={öbûöæ[©³ Æäô�æoéÍãë×o`̘ñ;ö5´iÓˆ‹‹C@À¬^½ááO±mÛ4jÔ·-z]=z o¾ùüý_E“&Màêê‚G"qäȬ_ÿ‡¹m“÷¶ßÁÚµë0nÜX”/ï…©S?ÂçŸɲE@°âs!Ãûô¿eþOÉÓ^Š´— €€G‹­OæùòDÅÉÍÍ­ÐW8íUjª6_W¨àåcùò¥$ “&½] éÖøå—ŸÑ¨QÃ\ç¹ví&L˜ÈrbC¾N:«{Ç�€B.Ø죂 5!Ëá‘FIžÿ‚±fLjbö¥B†‘½£SK_x¸ZW‡Å&hp( ›Ü‚hÌûöªX½÷RTÌä"<v¨Õj|öÙ§èÔ©c–�íÇ1þs�DL›6½{÷‚R©Ì÷ºôz=öìÙ‹ï¾û>Û€áøñãðúëãr©RÑ«W_¤¦¦òXĶ ó—íO–-z¦$'kàç×Êü> àœMÇ=<ÜqáÂÙ¶�âèè�Ò^bÚ˘á%eø?ý€›ñodú›Á"ÀôT /¯rÏä¾ÅÄÄò^Ûg¨|,[öš5k–ë<.\ÄÛo¿ËrbCŽr#ê¹äÿdµjE7tñ«Ž¦u*À§œé)Q±)¸|;îf{k’­&9@#r̘²vìైå‹ùË<fÙ¢g=cx›•y¢("%E''Çgj¿RR4<€=cåcÒ¤wXNìF”!J«„:ãiÜ”ˆÕÛ®Øí~Ei• Ä”Ácë–/æ/ó˜e‹È6ØÊ"‚iœ½ÞðÌì^oÈvìbù`9)©ÏVàB#Ê‘ªdƖѺu Ëó—y̲ETüŒ!J“˜˜hõ œöL’$Þ_ËòÁrRîiT%¡Ôï‡( ¸§á81eµn`ÃòÅüe³lÙƒ1Dé' ¢ˆøø„R}@”$ ññ ìÖÉòÁrR4¢ wSÔ¥: #Jy{R­Xǰ|1™Ç,[D¶ÃÖQz½±±q¥²Ë¨^oHÛv=3’åƒå¤„$dJ.Á hÚö$›e±n`ÃòÅüe³lÙ[\D™ˆ¢ˆ¸¸8¤¤hJÍ6§¤hÇ+ ,,'v@#ʘä€(més%J«ä““ÊpÝÀ:†å‹ùË<fÝAd{|šQ’’’ Ñhàìì µ]ncjªÉÉÉ<x±|°œØ¡ˆT%âôrx« ðR‰v×]ÄèäˆÖ*„)£uë–/æ/ó˜uQÉa0†(¢("11OžP«ÕP©TËåP(äÛŽ !I ¢(B§ÓA«Õòþb––;§e¸—¢B¸pWŠpQˆp”¡’IPÈ`³¼# 3 ÐeH2È‘ —CdÑ(3uë–/æ/ó˜u‘}a0†ÈÊHjj*RSS™ÄòAùoXK@¬NŽXœ‰Áºˆå‹˜ÇDÄ1cˆˆˆˆˆˆˆˆl‰Á""""""""b0†ˆˆˆˆˆˆˆÈ†Œ!"""""""²!cˆˆˆˆˆˆˆˆlˆÁ""""""""b0†ˆˆˆˆˆˆˆÈ†Œ!"""""""²!cˆˆˆˆˆˆˆˆlˆÁ""""""""b0†ˆˆ¨µmë‡7ßœ�AJ|[ªV­Š?|žžžÌ˜g󚈊’ƒƒnܸ‚N:01ˆ¬Ä` •Iþþ¯"88Ðüºpá,~ÿ} ^|±s‰lZ­Fpp †Vlë8?žÂÌ·±óç,ÊZú«bÅŠL;µdÉ"â·ß~Í2ÍËË AA·ˆ¾}ûÉï±S§Ž1âe¨T*›í[úëâųX±bªW¯�¨W¯.††ªUŸËsY[¶l‚óY`òañâ…ħŸ~’ç¼µjÕDpp :uêX$ëîÔ©#ÆŽ}Íü>?yM¶S»v-âöíYe:uDpp ªU«–íûœ¼úêHbûö­L`¶‹­Ýèç×’$! à,êÖ­cN«æÍ›e™÷óÏg 88ì-²í9òtëÖÕüþã§àر#,¼Ä` ‘½š0a"†‰éÓg ..¿þú3^ye†ŠÔŽ;1pà‹×ãdzVÈ2VÉö"&&;¶‡¯¯¯ÅçC‡FTTt‘®ëûïçãÿë­Vk“}»{7Á AC1}úg¨_¿V­Z ™L†ƒÁϯ=®\¹ÊBPÄ<<ÜѵëK8vì? <J¥Ò¦ëïܹÆŽc~ϼ¶OÆ Å7€AƒÙ2û5BÆ ™Èl7‹_ì„Ó§,Že1115ê‹ùÔj5 ˆÈȨ"]ÿÈ‘#н{Wf•*lùS™vîÜyœ;wûöíÇ»ïNÆŸnƧŸNƒ““#� |ùòX¸p.]:‡Ë—ÏcéÒÅæ “&½‰›7¯ÂÑÑ4o¯^=ˆ¡C‡��”J%®^½„?œl¾‚1~üXlܸ7n\ÁÞ½;ѬYÓ·mРØ·o7nÞ¼Šƒ÷aĈ—-¦¿úêH8°7o^Å¡Cû1xð ó4gggÌ›÷®\¹€sçNcذ!Ìì=±ÅÕ«×,^ƒ<ìŧŸ~‚k×.aРP(˜2åCœ:õ._>_ý5jT7/+¯éT4oãÁƒpŒ9Üü™ 1âe9by¥-¯<Éë÷øñÇSpòä1�Ù_éž7ï;lÛ¶Õbzÿþýpøð~\ºtþþ£Ñ©SGìß¿7n\Á²e?™ë°ì¤¦¦âêÕk¸rå*öî݇_]…jÕª¡R¥ŠYÖ_µêsX¹r9Ο?ƒÓ§Oà›oæÀÙÙ9Ë2±eË&ìØñÜÝÝX€²1`À�ˆ¢ˆ9s¾†§§'ºuëb1½fÍذanܸ‚öâù矷˜^µjU,[öΟ?ƒ«W/bùò%(W®œùä&88o¾97®Ç­[×°wïNóUûyó¾Ã˜1þ¨R¥2‚ƒÑ«W‹¼þàƒÉ¸qã \\\Ìë<x‚ƒQ»v­´cÒ@ìß¿ׯ_Æöí[y+B1Ëå8°?öï?ˆC‡ŽI¯‡zõê¢qãFX¾|îß¿Ÿe™NNŽøöÛ¯qùòyœ?¯¼2GŽÀôéÓÌó4kÖþ¹×®]¿ÿÄØ±¯™o«trrĬY_âĉ£¸téV¯þÕÜÓŽíÆg§ÝhM>wîÜ G·øìàÁÃèÝ»<<ÜÍŸõéÓJ¥óæ–vy¥Ç±cGРA}s½•±WÙ€ýpòäq\¹r3g~Á _Ä` ‘½úý÷ prrB«V­ V­ú5ÂoL¸qP«V-¬Y³ …û÷€J¥BÛ¶~�€:¤ýÿ� U«–prrÄþýÍË=z-ú ƽ£QÂ÷ß—ívtíÚóç={öbàÀ!øûïðõ׳1`@?�@“&ñÞ{ïà×_W¡gϾضm;¾ÿþ[4hP�0kÖ—èÓ§7¦Oÿ cÇ¾Žž={p\�;U­š/\\\0zô9ò/>ýt^ye8¦OŸ—_~‚ à?ÖÃÉÉ �òœNEwR´cÇN :Ä|ûP‡¦ž2{ö쳘7¯<)Žßcûöí0vì,^¼3f|‚×_‡·Þzo½õ.þ÷¿áï?ÚªåT¨àƒž={àÉ“'xü8&Ëô… ÿžž1bÆŽfÍš¢gÏó888`åÊåpqqÁk¯CBB" P6†Œ£G!88—.]ÆË/³è­Zµ>>>;öu|ñÅLLšô¦Å÷ßÿ=¸¹¹Áß,FŽúõëaΜYó¼ùæXºtºtéŽ[·±lÙOðõõÅœ9ß`ïÞ}EíÛwÆ‘#G-¾·iÓf(•Jôêõ4oìóç/ ((Ý»wÃ÷ß‹õëÿ@ÿþƒpôèqüòËϹžRþ½ôÒÿP¾|yìÛ·»wïAíڵѼyóB-óå—‡!&&çÎÇîÝ{Ñ¿_888˜§ùåç4h�¾øb&ÆŒ‡îÝ»ZÜF[¹re¬]ûBCC1pàPÌ›·�Ó¦MÅøñc�ï¾ûúõë‹?œŠ>}úC«Õ™§±Ýøì´óÊg___T«V G³Ø®Ã‡@’$sÀ �FŽŽƒB¯×›?Ë+íòJ!C†!>>'OžBûö‘��¨X±Ú´iƒ÷ßÿk×þŽÑ£G¡W¯ž¬lˆÁ"{ �ðò*‡-š£Q£Føê«98sæ,Ο¿€/¿œ…Úµká…Ú"88!!wÍW;thU«V£}û :th‡âÚµëæåoܸ 'OžÂõë×±aèU«f¶ãDøû¿ŠK—.ãÇ!0ð6–,Y†€€3=úU�ÀÕ«×Ð¦Í Ø´é/èõzÜ»w‚  víÚP©TèÛ·7Ö¬Y‡]»vãêÕkøè£!—Ë™Á%dÌ‹{Í—,Ydž–ššŠÏ?ÿ/^Bbb"^~y–,Y†ÿ=ŠÀÀÛ˜>ý3x{—Çÿþ× …"×éT´Á˜M›6ÃÃý{÷Lk@ŽÀ¹sçjq[ž×ïqÍšu Æ ¡P(°gÏ>ãßâîÝÐ\{K5hPß\Ož<?¿6˜<ùÃlo“...pqqAPP0z÷î‡-[žŽ;¡T*±lÙO¨U«&üýÇ 66–…'¦ÛC`ûö�€mÛv }ûP¥Je�@Ë–-PµjUÌžý5ÎàÔ©ÓX°àG‹e|ôÑTŒå°°0èõzDD<Dݺu3U6áØ±ÿO?ý r¹ýúõABB"=ŠL{=BjjªÅ÷ÂÃ#pâÄI 8À¤k×®-þüs3�ÓõÇÿÅš5k‚~ø?<xðÀâÊ:Þ°aCx·oßÁ‰'ñøñãBõŽQ*•0 víÚ Q±mÛv¸¹¹™ƒnJ¥ýúõÅÚµ¿cÛ¶¸zõ¦L™fÑ.4ÈÔ£kúôÏ„]»vcëÖ0lØÐ´:P«UpuuEBB"Þ|s>ÿ|&ÛÏX»1¯|~ñÅN CXX˜Åv¥¤¤`×®Ý9rA@ýúõмyslÞ¼ÅbÐú¼Ò.¯ôˆŽ~Œ‡áÑ#ÓËh4�ôz=¾ürΜ9‹ùó >> 6`eCvCÁ$ z*ýjPLL *W65’ƒƒƒÍÓo€yÚÁƒ‡Ð¥ËK¨^½*V¬€eËV`Ĉá¨_¿:vlY,?..Îü·F“j>™EÑb¾Ê•+ãÂ… ŸÝ¾}Ý»w�øøxcöìYxá…vˆŒŒ2ŸÊå2xzz@©T"$$ÄüÝøøx‹u“mmß¾+W> 61ñiϤ¤$sþ—+ç GGG̘1o¾9!K™Èk:Apÿþ?~/¿< ÇŽý‡.]^´iÓ-æË+OŠë÷˜œœ�æ§N§3OE1×nØZ­C‡‡««+6lX‡Ý»÷f¹š™1�0uêGX»Ötuòĉ“˜3焆šÜ骈ˆÄÄ0““1cL=•–.] QÍ'9Æ Å?.B… ��!!wÍß ±XÆðáÃ0qâpuuEhh\]] —[æóƒáN‚4ˆŽŽ†UÛøçŸ›°xñBTªT }úôBJJ vïÞ�hذ<==pÂ<ùòå-¶— ÇÛ»<ºty)íx#í˜.ǰaC0{ö×HNNÎ÷2»uëOOOøûƨQ#ÍŸÏŸÿ=þþ{Ê•ó„Z­Æ;wÌÓbbb,ê§Ê•+ÁÍÍ §N·Èûôàí’%Ëáààˆ9s¾‚—W9ܸq?üð8vì8ÛÏP»1¯|6Ý¢t,Ûcéü‰!C£M›ÖèÑ£îÝ»‡S§N[Œ‰dMÚå–%$$À`0X;3ö´!b0†ÈŽŒõ ’““qöìy4jdä®V­Z��Ô­[Ç|â�û÷Äo¼Ž~ýúâÌ™³ˆÅÉ“§Ðµk4hÐ�ß}7¯@ÛñðáCÔ¬YÓ⳺uë˜×ûÞ{ï ^½ºèÔé%ÄÅÅ¡råÊ8~üÅ´U<t:j׮ᄱoS*A±±q¸qãfžóÅÅÅC’$¬]»Ë–­Ètò ½Þët*z6ü%KaèÐÁHJJÆîÝ{áí]Þê<3Ä|ýÓÎÎNNÒ¼‹tŸBBîšËãüù ðÑG aƸqãF–yÃÂîaòäa0аa,]ú¾új&üýÇš—õñÇÓ±~ý̘1³fÍf¡ÉD­V£[·®8þ>ûì óçK—þ„¡CcÑ¢ŸÌW×ëÔ©û÷ï§ý]ËâDý›oæà믿ŪU«�sç~ƒ6mZg:N<í)ãááDEY7H懇ž=»£wï^ؾ}4ù¤ÎÝÝcÆŒ³øNN'@”齌ƎG"Íù¹páôë×7nÊ÷2‡  QÑ·ïÓ“Þ×^#†£FꈈxQQµjUótWWWxxxdh<� 0¢øô¤V’Lÿ?yòsçÎÃÌ™_¡jÕç0sæXºt1š5keqÌvcén7æ–Ï2™ ~~m°nÝúl·íâÅK¸qã&zôè†îÝ»aݺõÒ P†íÏ+툞E¼M‰Ê´V­Z¢uëVèÙ³–,Y„áÇá믿…F£Á… qãÆM|ñÅgðókƒ6mZ㫯¾DppNž< �¸t颢¢1~üX9ò/�àÈ‘1fÌkxò$ g¬ÚƒÁ�QѰaCxxx`ݺõhÞ¼>ø`26l€·ßž?¿6X¿~�Ó•µÚ¾¾UQ¿~=‹Ç¤êt:ìܹ þþ¯¢_¿¾hÒ¤1æÍûŽæR@¯×cݺõ4h Ú´iwww 2›7o„››{žÓ©è>|?Æ´iSñÏ?ÿd¹•'¯<Éïï1((¢(bÊ”áç×&¼Ž¦MŸ/¶ý[½z-?ŽÁÔ©e™&—Ëqüø¿Xºt1êÔ© ™LI’ðäÉó<W¯^ÃÅ‹ñå—³àïÿ* ÈB“I÷îÝàêꊹsçáöí;æ×·ßÎE¥J•бcœ;waaaøüóOáç×íÚµÅäÉï>m¬¥¥½|}}ѯ__ôèÑ=˺ è‡Aƒ I“Æø¿ÿ›ƒÁ€;w0õÈ+_Þ ­Zµ„««k¶Ç¡-[þưaCñüóM°qãfó´µkG½zu1tèxzz¢E‹ؼùO´lÙ’\D†‚'NâØ±ÿÌedçÎ]¸~ýºy|¡ôú§eËpppÈò>£ * C‡öX¸p±E¹›7oôz=^~y´Z-vïÞƒ±cÇ k×.¨S§¾ýöks;�øçŸmHIIÁ´iSP±bET«V Ë–-ÁèÑ£�˜×¾wï.´lÙÂü„°””‹e°ÝXú۹峟_Èd²\·ý?þÄk¯ùÃÛÛý•õëÖ¤]^Q¿~=4jÔˆƒôƒ1D¥Áʕ˱qãz|ýõl¸¸¸`ìØñæ{äF#Æ{7nÜÀŠK±rår„„ÜÅk¯3_í‘$ ‡‚««+>b>¨zx¸ãÈ‘³t#͉(ŠX³f†Œ‰ßÀþý0eÊ4ôìÙ[¶l A1cÆøûïm�€~øW®\ÅÚµ¿aÅŠe8tè°Åò¾üò+ìØ±sæÌÂÒ¥‹±sç.<zôˆ^ |óÍwøã?1cÆtlÛ¶}ûöÁܹóÌù—×t*Z¢(šë„?þØT <ËÏï1**Ÿ~ú9êׯ_~1=•)}œ‘â Ñh°dÉRtêÔ~~m²ìûĉoÁÙÙ›7oÄš5«pùòe|ñŬ,ËÙ¼y 6nü_ý5jÄ‚“Á°aCpÿþ}œ?oy Á¿ÿ5 "Š"Æ>ªU+ñé§Ÿ`Þ¼ÌóFFFáã§£Gnصkúôé…;²–‹åËF¿~}±aÃï¨T©"Þ|ó-ó7nÂÍ›·ðûïkЧO¯l·uӦͨW¯.nÞ¼…ëןŽ[±wï>L›ö)€mÛ¶búôiزekŽ··Qþ´lÙ5kÖ0ã3ú믭hÚôyÔ«W—/_A@À|ûí´oÿB–÷–ÁÁÿüc¹Ìøøx:tƒ›žÞ÷ùç3±oß~,X07®Ç‰'Í=s�Ó­oþþcQ©R%lܸK–,Bhh(Ö¬Y�˜={.]º„eË~ÂÎÛàää„×_ó™ Æ”Õvcnùܹs'œ5÷¤ËζmÛ‘’¢Á‡“u°xkÒ./‹/««+¶lù“O™¤RC°âs!Ãûô¿eþOÉÓ^Š´— €€G‹­OÇÇ'0µ‰ˆˆˆŠ˜Z­ÆWðé§Ÿ™O ‰¬¥P(,NxÏŸÀúõ°`ÁB&åéÀ½Ø°áüöÛ&•*ÉÉøùµ2¿8ggÓ£ç=<ÜqáÂÙ¶�âèè�Ò^bÚ˘á%eø?ý>¼Œ#Óߦú—Ù@DDDDTö¼ÿþ{èÕ«¾øb""bðàððð°úÖ¢nÝø¨h¢‚b0†ˆˆˆˆ¨ úý÷ xî¹*øñÇðôô@XX¦Ný§O0qˆˆŠƒ1DDDD¥˜V«E­Zõ˜”o?Æ”)Ó˜DD%€øÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC ÆÙƒ1DDDDDDDD6Ä` ‘ 1CDDDDDDDdC [¬¤z•JxâêÂÔ&""""""¢‹ç*ø˜ß‡z•Cïr��W7W\¸PüÛ`“`LXè=$ÄÇ3ljˆˆˆˆˆˆ¨D%¥ha~…”' ��w›loS""""""""²!cˆˆˆˆˆˆˆˆlˆÁ""""""""b0†ˆˆˆˆˆˆˆ,Uæl�� �IDATȆŒ!"""""""²!cˆˆˆˆˆˆˆˆlˆÁ""""""""b0†ˆˆˆˆˆˆˆÈ†Œ!"""""""²!cˆˆˆˆˆˆˆˆlˆÁ""""""""b0†ˆˆˆˆˆˆˆÈ†Œ!"""""""²!cˆˆˆˆˆˆˆˆlˆÁ""""""""b0†ˆˆˆˆˆˆˆÈ†Œ!"""""""²!cˆˆˆˆˆˆˆˆlˆÁ""""""""b0†ˆˆˆˆˆˆˆÈ†L"¢’#AÊös‚Å´Ìïóú¼ 2.ËÚõåôÂnWa—[”ÛbMzç¶ŽâJ£Â–ƒâ*SÖî¯-ÊtAö×eº¸òÎV¿5{©lõ[+Ê2]õ‘5۟ݲ<Hçuü–˜D¥÷7 H’”ý{É6?ncˆˆŠ#¸"ÑròÚåIkÆeY»¾œ¾SØí*ìr‹r[ ›Å•F…-ÅU¦¬Ý_[”邬Ïeº¸òÎV¿5{©lõ[+Ê2]õ‘5۟ݲ$HÈapÆòĈ¨°Œ!"bˆˆ(›ƒ[Æ?ÓÞéÿ•àLæc<{Å=?lË@´$™ë{ÆÙ{5ûƘeÅÎt""¢RL0ý#d:®¥÷œy–ƒ2óéKé‰P4a‰¨„3_ÒßÓÞŒ!"²ãZ¦{L‘¹ÁfÙš#""z6d ÎHÏnPÆ|…P©Tprr‚«›”JÁ´¿‚ñ;¦÷Yÿ R–ϳ®3C2[|ïé÷3¯3ó÷2NÏî{Ù­;§åf·MÖNϸ¯ÙïSÁÒ*ó>e]oÎieúL°h˜å4=ûmËi›²ßל¦ç'ÿ2okvëÎizú÷­Ýö¬Û•¾þ§ËÉë{Ù¥`Ê“‚¦Uzžæ–VÙ•å¼ÒêQT,|«U3Ïvÿ!*ú”ƒ$nn®¸tã*ƒ1DDv×@Ë|Ÿ½ô´f@2f¬ìs¬1½1—Þè!×®‘™çÏižŒÓóû¾°ë,È6æwJKº”¶¼+HÞ°L³L³L?ûeZ� È„´“)­{ÿÓå@$Azf21’Èäª×¨½z¡QãÆpuu… “?ݤž¦«é,Ñò3)SP kþfίìʃ < XžhfÿݧßËþûù¯Ç,£tÖîCÆíxšÈe;sÛÿ¬ëÎí{™×c¾¤–Cþåž—RÆeŽ¿Ùœ~o9 ¬ýÝf—·/sdÝ')ÛòcM“yýéyS}i™çȱüæç8”[úåUo ‚€C‡þEÿþ½ÍŸUö­‰®]^4I lÙþƒ1DDv„‘²þ­P*áâêŠÚuêÀ××*µ*ËÛšF_N€ŒÓ26Zò³üœ——ÿeX»üܾ“ŸíÍ©ATØåç–îM—œÓÚ²¡Tؼ³6?Š"Ý‹:m‹*Ýsj¤UÞe™Î|²Q\yWÔi[\y—]c¼ài[°ú#ÿËËýd»°ë²E}TØã€N«CXX‚ïÜÁ“'O`ÐëMËJïóŒd$Hþ “ hÓ¶->úx*ž«ê µZ ™LV$啈JNàí Ô¨YÓü¾jÕçаQÃÕ Æ Í"#ÈdP«ÕhÞ²%^ó 4hÐ�*•ÚÔ0Ítµ ä68·àEÉo[vWKl¾%Y¶¡$ÓNú`q¥2óȬ÷¿ –5_Ÿå¼Ì쯞"‡u³Lgw…°ÄJ’Ý”ikò®$ÒÅ~·Í¾ò.­^2:·nÝÄ/+Vâ¹sÐjµŒFËj¥´Ç(¤§ÿ+• T¯YN™‚ÚuêÀÑщm!¢g„R©„J¥²x¯V«mº ÆY× }ÚFKk¨©ÕjôÐïN~žåÊóJÙÉXi{:— ,ûDe€ƒƒZ·ñCÍšµðÓ¢Eعm;R5Ëž7(½½c2ë%�N.ÎèÖ£;ªV«Æ@ 9cˆˆ¬k¡¥Ÿ)‚é^Ò–­[á÷ÞƒWyo(J¦Š(Š0 Чwý/%Ò1 … …r¹¼ KAz¯½(!I+Á JpR pT ¥ÇDD%,íç]¾¼7Þ™<#Âpê4 ÃÓ Ì³Ð;&m\7774nÒÄæWˉ¨l`0†ˆ(Ï&YÖ[7\\]1nÂë ÄP‘0HMM…V«…Ñh,•û K»mÏÉÉ)ÿ½dÒ†`ÒŒ8¦Ç¹0-RtFTt—£C-ÔôV@Îh QÉ 3ô~Q(ðòòÂØ×Çãúµëˆ‹7_¬H?n–ê±cÒûJ¥òÿÙ{Óç8Î;Ïóó<Ouá € ’ x¤nK”L[¶,«mË–[-·=íÞž]ïDô‹ÞŽØˆíŽW±1ûììôLÌFlOwôF·ûðÕ:}è²(Q¦H]¼À n ÎÌ|ž}‘U…ƒ Š7ùûDªP•™õÔ“OfþžoþZ[ÛÐZ_tÑb±Èèè(7n¼är‚pkÙŽJ¥B­ZÃ9GKk ÆœsDQ„B¡µÆó=&'& Ã�”"“É`K¹\&Ì„õ›02î?µí$] ‚°ZÛlÁyhË=lݺýŽ+å)Üâ8Ns/¸Û·ºµ–jµJEW¾²rD‰cÿÉÿõyF¦b<£ùûþ¿_—85Ë „ë}s®y‹Eæææ(‹T«U’$¹ð°E±mÛv†¶ Ѹmq©ê·É…~ÉK¥Ú˜fçÕj•ýû÷óꫯ޶Bºpwbm©“§ùÿáÿæ¿ü—ÿ‡¹ÙyjÕˆJ¹Ê‰ã#¼úêÏ)KDµ˜Ÿþôg>ü!¿~ëmJÅ2““Süò—¿âüØ8'Nœ¸­m—›xÆ‚ \q–þ£Ü@†(-bŒpõ 8Ž/›+&I’º±¿4dG)ÕÌWÔØÆò¤Ësº4˶֗»TuçܪïöZk‰¢ß÷›ß{¹ßÞH\¬ÂSÇ'b²æÁjlyït•Îùlè0Ͷ.î«[-_µvIÿBê5´¼Ë5Úÿi+ý\n wÏy¤y\¸Q¤16Vs [k)•JDQ´DXÐZãû>¹\nI¢ÒŠ0 äí·ÞÒóÓÝBE¼öÚkŒŒŒðÌ3ψWŒp›‰1–™ÙÖ­[ÇÞ½1;;ÇÇó<FFFeçÎ8瘜œäÀ9r„íÛ·3??Ï÷¿ÿ}2Ùßû½E>Ÿ—ëˆ1‚ ×Y”©ÇÂû~ ášO¤.Åøóÿ÷/Èårü«ßûd~®ÈS_þëÖõáyI’P­V©V«Í.�A4_;çšÂN’$cÒ*`+ÜÑn„Me2™UO4Vƒ.5™‰¢ÏóˆM”¤Y; `”Â:(U#*G¤%eOŸ>MWWW³mßv+ìÇR©Ä?ýÓ?ñòË/£”â‹_ü"_úÒ—hoo_²\¹\¦Z­AàûþŸS¢("ŽcÂ0ü”¹z„;ibU*•¨Õ"l² ô/ Ìf³—<†Ö¯­øY­–†2 …%ÛQJ5Å׿uòV*u÷·ß~›|PrÊ·çy#Iç“O>桇æÝwßå­·Þâÿð9qâkÖ¬áàÁƒ>|˜Çß÷ñ<—^z ­5;vì T.Þ2×`cAî"D‹n$¯ýê Μ9‹çy¼þÚDQÄ믿ÁÙ³gùŸÿíÑÖÖÆää$ßÿþ÷9sæ ­­­ìÝ»—7ß|“?üÃ?¤\.“$ aràÀjµJ)Ž?Î3Ï<C&“iN¼Œ1DQÄßýÝß144ÄöíÛikk#®Ùðúã?þcžþòÓlÛ¹›.Ò™ éi81Ó•7ôµj>~󧘓¾üôSø¾ÏO~òSÖ­ëãĉ|õ«_¥«« ¥Õjµ)jT«Õ¦ˆ4??©‡d³Ùæwçóùkz7Û9ÇücŽ=ÊŸüÉŸP­VùÑ~Ä»ï¾Ëã?Þ4XgggùáÈ{ï½GGGßûÞ÷hiiiŠ3a6se³Y¬µÄqŒïûMï£l6Ë‹/¾H±Xäñǧ»»;õÖ“Ó]Ë‹/¾È+¯¼J'M%Äó5_ùÊWøâ¿xÉu¤"ìøø8ù|žb±Ø[ã‹…‡»y¸)¥xòÉ'y뭷ؾ};ù|^¡p[ß ñ}c år Ï󚥞{{{Ù°acccõe*• ÇŽ£³³“J¥Âºuë8zôˆt¦ˆ1‚ ‚pg³eËGÃ÷}††63:6ÆððN>ó™‡Éd2Í|…BÏ}îslÛ¶óçÏ“$ ÓÓÓ|ôÑGLLL°yóf^yå¢(bxx˜‘‘~üã³yóf|ßgvv–þþ~Nœ8ÁÔÔ$}”pìØ1†‡‡¹ÿþû¯©FÇ‹%Nž:Íò3¾ð¥§y¸s§kÝL•òÜ»ÁçKÛBþªµÖZ¬MÚ*• ###üìg?£¯¯ÞÞ^Þzë×lß¾ c §OŸ¦¥¥…­[·òÿølݺ•b±Èðð0�ìÝ»÷š‡¼óÎ;|ï{ßcýúõXk¹ÿþû9þ<Åb‘ÖÖVœsÌÌÌ055Å}÷ÝG&“avv–ßüæ7ŒŽŽ²fÍvìØÁ¡C‡˜žž¦½½0 9yò$CCC?~Ïóèííenn®¹_wïÞÍÞ½{åå]<±zôÑGÙ¶mÖ.x¹£›bååŽÅFèÜìì,ßÿþ£­­•ÙÙYžþyzzzšË]Ô ä.ð†YŒïû c­åå—_æù矗P%á¶ÁÃÆƒÄñcXk Ãçž{Žçž{Žééièìì$—Ëqß}÷ÑÕÕEoo/ÖZúûû™˜˜ §§‡ŽÎvÉ#bŒ ‚ ÜÙ¬ë_ÇúõýAÀàÆAúÖ­c×ð0ša„’ {>ŸÇZËìì,GŽáܹs”J%ÚÚÚH’„l6K&“Á÷}:DOOçÏŸ'›Í222B­---¼òÊ+<ðÀ×öG¹…°©¨Q)ÎÒ×z‚}†}{ŸdM{†¬¯8T_&Ž´Nxÿà!~øa<ãÓRhå_þå¾ò•¯prä${ÝˡÇ8yò$ÇŽãßü›>Ž?Á“_ü‡æðáØ¿?¿ÿÝßG«k?qÊårŒÑ××G­Vcjjꂜ…B;v022©S§X»v-?üáéëëãüùóò½ëûß~‡]»vQ©V™Ÿ+òÞßðüóÏS‹jà¹\žÀyõÕ_°wï^9PîbΞ=ˇ~„³®®‹(´†Ý{vÓÕÕuéCqQ¨d†tuuòâ‹/òùϾé5·špÊ»‰FˆÖŽ;X·n1Âm7~[Z[¸÷ÞÝXç0Z£ë7[º×t5sÑår tuu ´Fmí­õmljnO1FAîH½ˆÃ‡£µfëÖ­ôõõqöì9²Ù¹Üó€L&COO[¶larr’R©Ä™3g˜˜˜Àó<¢(¢­­±±ó8çèîîfppƒây'Nœ@kM¥RA)(•ŠXk—æ…¸væ ]¯JæÀ9Ú[ò¼ùæ›ô|í‹2¦>ùSœ9}šƒ¿yŸúEµ155Vœ¢££“|¾ÀÔdú^¥RÅZG{[ƒƒñ<Ÿ¿ýÛ¿¥V܈6\ãê/O>ù$?øÁ8yò$•J…×_'žxb‰ÇÊüü<cccär9Nœ8Á¦M›ê¹{Z[[cff–ÎÎNjµˆ$±ôöôÑß¿žjµÆÌÌ,³³³€bݺ~Ö¬éæäÉSrÜå ÐÞÞ[TÔGhkk[ÕĬA©TbllŒ'Ÿ|’ÑÑѦ€+‰¢W&›Í’Íf¥#„ÛNŒñ<Þ…Þ®KJUKÙjcAáng¾Xd~¾XÏR¤X,25=M±XçÐÚP(fÍš5¬]»–ÎÎN}ôQÖ¬YÃ<€µ–®®.Ö®]Ëèî»›ÞÞ^�î¹çžf^™B¡@±˜&曜œä©§žºæ¿IÝŒQo$îíí% CÆÆÆš9¶n½‡jµÂéÓ§éîîæ‰'ž`pp°Y½á±Ç#“ɽ½½Üwß}‹EÖ¯_O___3ñàúõý8çØ·o_š[æ:·÷ß?===¼ÿþûär9¾ýíoóæ›oò›ßü†‡z­5===ìÞ½›O>ù„o~ó›<øàƒlß¾#GްqãFzÖöbŒGKK 7n¤¯¯B¡ÀæÍ›ùÎw¾Ãèèhê-S©'…Bg‘;ów1Î9^~ùe^xá’x¡’’6ðì³Ïò¥/}é’BŠçyc°ÖÒÙÙÉw¿û]Â0¤V«ÑÒÒ’¯õªJ‚ ‚ˆ1‚ ‚p×ðЃP«Fh­xà{ikkgݺ>ÚÛ;0^šœ¶P(°gÏžæDÌó<žzê)¬µlß¾}Éd¬¯¯¯9ÁRJÑߟ ËEç\3O̵¾+îyÏëyz{zÙ²e ýýýôôôðÌ3ÏÐÒ҂á•fÏž= ïD©´­›7oÂ9^r·~hh­5<òÖ&õ÷}}½$‰å¥—^"—ËñÈ#\áB©´Ôïàà ýýýͶ 6“£6–fûöíÍþokkcçÎõ-i¾öµ¯aE¡–”/衇šû- I@9†6o¯…»¥_ùÊWxê©/c“†Z+<ß»ìØhTI©Õjø¾Oww÷Û_\¡MA1FAÔ娵{;‡w6'øJ)ZÛZQ* öA¥Ûi„õ46©”ºlÒÝ…õ®®‹Û¶šmÏ3Ï|uI›•R¬íé®oÀb<…6Þ*·ëЊfì{m _ùêÓüÖW¾\3(wÝöçb‚ úOk}YAȰð€r˜ú6”‚t—™+GÂ{ à ¸°´üjŽI­5¹\­5µz²ìÆv1—+-‚ \"Æ‚ Â;{Zk¬µŸ˜³ªJFË']« _‹‰üâ0†Õloµ»+ÍUq±eo”X±š}ðiÛ²|’-ŸæYNÃ.—Ëáû>Q5ÅÏóð}_„A„kmÿI‚ ÂÍDyžG&“¡R©\R¹ÕG†xž'" ܆Ç/¤iK<»äxA¸>ˆ#‚ 7‘ÆÝçl6Û¬vÔ(!{;L‚œsh­/¸{~»´_„¥Ç3ˆ�#‚p#1FAn" ‰X¾ïßvÕJOÞ$„FAauˆ#‚ 7‘K݉¾TRÝ[MìXœX„AA„K#bŒ ‚ Ü¢Ü.¢†jVøFAa5HZtAA>5"À‚ ‚ \9"Æ‚ ‚ ‚ ‚ Ü@DŒAáš!ž2‚ ‚ —GrÆ‚ ‚p͸TÒaAî ÆÇÇQJøF:CáS"bŒ ‚ ‚ «&Š"�|/#!‚ð)‘0%AAAA„ˆxÆ‚ ÜD$¤CA¸YHŽ'A„›‡ˆ1‚ 7 k-ÖZ’$†(£ÔÂëkùÂ÷.m]_ßåoÆwJ¿Ü¾ý"ûNúEöÝ-Ù/Æó0Z£´8Ê ‚ Ü DŒA¸Á¸8ÆV*päÌáØÑQ° …Â-y¾À–^ô9P¬j½ËÚè,èW²½åË]ìùJÚÑü}WÓçpji?-ßÖªÚ³x;Ë÷ã•ü®U´çŠÚÅÊ“²+íëúJͶ]m{®f,|Ú}~Ùö,êû+Ó×¢=—ÚΕÃ+ÝWkÇ•loñ2WÓWkÇ•no5ûü¦®bŸ_‹í­¸žR¸ž^’è¡!t&ƒòdZ ‚ bŒ Â*ÄXK<7‡úå/ðÞ|5?Ö^ýOAAX-JáFFP‡ÞÇ>ò(vßç0­­©÷ŒpçÙKl Eã®ÀMÛÝnQSá.FÄA„b÷*l’W*ðÞü×~å²1wú~¯?¬t… ·Öì•$èbýúkT[Zq?ŒÉd$léŽÛÕ®þhØ# ^‘‹K¹,Ît%ùìV“whùöœ[Ða$o‘p7#bŒ Â2†¬ÅNMá> Å¢ˆ0w˾—.áÖ¼0MPóóx"Ú²ÝÓ#bÌH”8¦‹1c³-CgÞ§Õ\©kŠsîS‹'qb©D–s3Î:: í9ϤãMDánDÄA„bó:\’ÌÌž;+BÌݲߥ A¸UQ`q(çÐçΑÌÌ`ººPÆÈÄøN²=œž¬òßÞ-stÜxޝ ‡<²) ZáV'`L*ÏÔb‹¯ëˆjØ›¤¹íŒï¡LúðŒÂ:p <­H’4_“¯SH)…§¡ÅÌU,¿ø¨Ä/%$vö*¾ýP ­9£e¼ w'"Æ‚ Ü ¬µØ(‚JE:CA¸É(+T*بvEá)Âmb{8Ç¿*rèléÍpv&æÕ+äLÄÙ¢á3CfJ1'&÷o9;]æÜlÌýë|ΞžbnäAyŽ(¶ÄÆÃäó[»éîëdcO–÷NGô´(Ö´¼{²Ê¦NM!뱤ʎƒïiÞ‰UÌ?ŒØÜ›%JàGk<:Xb熌¾ü”Ô9‡µvÉuΡµÆ³âò‡Öº)0.ߤ^9ºî¶x½Åï Âõ@ÄA„‰“1‚ ­vmr"ÄÜq»ta&q„³†$qX›†MGµ˜8òÀªÕ q \¢)NM1óñ9N¾s;>Cd5ó: fBj&$2Ö/“K¬-l \ªb³>Îj¢j—’ØÕj¸Ä#vš8ª˜g-ÎAâ ±`»ê@©jµÊ¹sç8{ö,Q …b`p€ xsÍÍÍqöìY<Ï£¿¿ŸL&ƒµ–ééiÞxã ºººèííe~~žîînººº0ÆE###8p€‡zˆÁÁALÂuCÄAAA„; ç Çã[BÎMÏqf<ÁÚ˜û=v ¶±=ŽÉç:ò>ë[KèÙqÖü†àÈQl ‘ˆuHÍST”¡¦=ªÖ#‰5¥Óó”‚ivoi¡·+K6ôøì=Y|ßÇ3Š'¶BxFÓšR¤9;3Ã{çŠX«ØÕ³¾««.¢¤Õ.EE¼ð‹¼üÒË(­Éf³àà«_ý*=k{�ÐZãHC«æfçù³?ûÏ ïÜÉ׿ñõtâëyÄqÂG}̦M1år…¿ûÛ¿ãþõ¿&fÉd3X똚œæƒ>dp`#SS3>|˜{îÙž=»ñ<O¼e„k†ˆ1‚ ‚ ‚ w(C=Yþ»G-ŸœšdmGžõk ä3ZàÀÅ1ÙÊó/ÿ !kJ^–H+å‘(X{Ô´—zÇhŸØzœ:ZbVey¶C¡•¢%Ÿi~gk![¥h+d)XËï<ÜÎŽã8kÙ´®ƒ¶¼V ^<J)”R+zi%IB¥\¥V‹ùîwM›6¢”¢½½_ÿúmâ8fÛ¶mŒŒœäüù1úûû)Η˜™™åýï>;‡‡Q(6ÒÚÒFµRcnnž™é~þó_°qãFÖ¯_O.Ÿçž-[©Tª¼üãŸòƯ³gÏn:;;1F¸fˆ#‚ ‚ ‚p‡áœ#Iâ¸F%¶ži££-"‰J‹e”ÒÇè© ¢Ÿü3œëጠ§Vieˆ•G¤|ª: ªÊÎãÅJÉßÜãQ ¹x{»8pXÇébHd›](ò1:\’óåÒárŽ(ªqâÄ jµ¹\–L&Ëìì,þçξ}ûxï½÷سg6l Z­òú믳ÿ~*Õ*>ð�_ÿú×y饗ؾ};ƒƒƒ‹Eþâ/þ­år…gŸ}–|>Ï /¼À¾}û8wî,QTãìÙ³Œ³~ýzXÂ5Cd=AAA„;„FZk-¥Ò<¥ùYBÊ<¸®J{&&®•¨”‹TJsD§ãýô‡øÇ¢ªÕ´Üù²Z€‹E™Xj: ê¥9dæ#ÅO?rüÍþ*§Æ‹‹ó”Ks”Kó”Ësé£4O¹<O­Zd¨3b{w•™Ÿ›¦R)§ylꕟ.Mê9óÆoðꫯò«_½F±X䡇¢§§‡Ÿýì_˜žžfß¾}äry<cà[¿û-úz{yë­·¨T*ÄqLÇ8—†R}ö³Ÿåw¿ýmòù<ßÿþÒ:qL6›åþûï'“Érï½÷²mÛ¶“ §E<cAAAî0â8¦XœÇÙ˜@;ú ŽÀ¤Þ*Î:T­BöЯñ|€‹=”Ñ(æ™i< îßâRQÆ*E¢5±ö¨:Ÿš…JÍñ“5Ö|ùžˆ|ÃCf™¸â€ÎLºA¥,qœP.—‚,Z.™;¦¾-Ïóùƒ?ø††6cŒ¡­­¥CCC|øá‡ø~š°wnvÏ÷ØÀžÝ»øäãOøðñÖ.ùÏóÙ´iëׯ§¥¥•3gÎ’Ô A@gg'A’/Èår¢$\SDŒA„kŽZ°»Ð"½[¬”ì6A¸Îç„%³JA¸î8lÝÓe²løùñ½Öæ-ž‹Éœù˜ÌÈ!”­¢h,Šíì’‡"}hÚ9”§:²èª¥¨F𣠕¾¹3"ë/YJ±öŸó©ÆŠ½*øâ$ÂÚçôe¯CÎA­Vå׿þ5##'�صk7aòâ‹/qÏ=÷055Å /¼Àðððâ \sý…zî)¥R‘ýèÇôô¬åÔ©“lÞ¼ÏóP*½.†aH’Ä\èjÁ�� �IDATùä###lذ dh ×cAáZš¾©SŸn¹æ´ëV—:¬• ¢ \-+ç Õb–Ì á:]ƒ\óyqþ•–вw BGÖ¡±è¸JþÈk˜ê N%h—`\‚Á¥ÏÍÿ<—à9‹±1Æ&ø6Æj¸1G.òH€ªïQªi^9¦À9žÞÓ™]*Èh`kW€¯7çìeWtt´³víZŽ;Æ©S§�hoogtôûvðì7¾Á+¯¾Ê‡}ÀöÛèìj§«»“B¡@Ww›6 ÒÝÝEgW;k{ÖÐÝÝEOO/ƒƒ|üÉGÜ{ß¾ño011Nww'kÖt188È»ïÞÏèØccc È ®"Æ‚ Â53‚ŒaË"ƒøÓnOºTn—£¿a¡ê’Œ"}­ê(�¥-F¸å=ÐÊ¡mLvâc‚¹Sàª$^êåbl‚×x¸¤þŒgc|Ø‘õHbƒ‹`v"&ï…8ëÀ9ª¾Ç<š>ñÉð…M1íY· @ªT„aáßU„Ï~óYž~úi’$¡qÀù‡ï{8ç0ưsx'•Jß÷ùwÿîÃ9‡ïû<ÿüó|ík_#“Éð§ú¿’$­<þý¿ÿ?Ò$ÇID&“Á÷}††6óàƒbŒ!›ÍòGÿÓa­% S®)"Æ‚ µ˜Š¹úƒTˆ±ÖbëÖ­9±Å‰#·×I .¶,1©gŒQ* {XxW<d„ëŽr œSeëÇ3<6Xa_%œü­#œoÑFᔟÏFxnA€‰’_Çx6·†01¸šÂž®’/*¬oQÖ¡œÅ¸ eåSrš<ì3_UüÐOkáàX¦ôØ@…À¬>Œ×ó<òy|.»d•Ž£|>Á{a’Ëå–†B¹ÅŠ]QRJÑÚÚºäA¸Vˆ#‚ W5S8Ò*Ö9,±sDIB $(’¦ öò —7Cˆ‹Œ Ün“`¥ÐuÁÅ8…xZa´B¡Ñ ”Sˆ›ŒpÝÆà’+ ´g-_ÚR"çCPš&¨¢<‡ó ]±˜8ÆKb<᫾öñm•81„JcÑØXÁDLrJÓªT¦.ú�Ú)”s”‚€*Š_œ0~kkD[& YÚÝ¡põ0%…rjy—KW\•wÙBÊ’/V«_O®"Æ‚ ÂUZ¼ÎAâ,‰³Tª6¸þõC›1…–TtiØrõ»ç &ò¥HCLφ‡ÍÅ*N,¥Œ5«]÷RË^Ëu/ÖÎ+ù¾ù]Wð}‹öõ•÷ÿ§Ùw‹?¿šßy½û“¾k5ýr±‰ÓÍÓ+¿¯�ÂÎÍQ9ò úìYÂ$Á‹Gš0C‹#\WÜ’ÓQ±¦Èx “9ŒCy Ê�÷ ±‹ðm ßzø‰G  ‰õHµàŠ1ö¸%3â‚Øtãºî…£RQÊx«šŸ~ì‘ `ß`D{ÖQ‹Ö)r~ÒlžÜoDŒAáÊMÝz’ÄÄYjÎRv ÷ì¦í™oàµw€ç§bŠr Ieë®b&ž1×aZ²X$Y.˜\éÿ+0rU€EC,Š©MŽ3ûÿ@é7ï“·¥¡î;#áJ a¦¢ùÕH†Ç+´Ùt„ *pè�’ÐA”àE5ë[ÄzØÄ`•Ië)Uª‡Ê˜P·¤‘=õ|1Ú)t]”‡VYJJQtмïS‹áÙá‡Ç=j‰âñ„@»Ô³ô&®ñGœÔ„›„ˆ1‚ ‚pUÆœk扉Ð$ýëé|ö·ñººÁ™˜ßd¬sT*â(ÂÚ +v8·*ÿ¤ÕOÀë³p£5A†a:”º@ŒîÄóiu˜æ€PhÏ'ì]Gûoÿç'¦¨ž:…ÁA}"ÚÈãDÈ®#¹„¯m+‡+æIÂ,&˜C.ÍhÄ›DĺVb4‰…¸T¦t´ˆ™ÖøäQÆKKa+çФyc¸P.À…U4G'¥šâþÞž†@³?ií¯ÅŽbÍ’4Gl!ë§!Ö9j x: ¼ôAª¨YË\Åòæñ ïŸIèmÕÜ·ÁgS·OÞ7\*nêJüW¸:\䪢–mX®"Æ‚ ‚pÙ‰Wš¸7MÒá½»0í(ÏkÞ·Ö6+=7–$Ž©V«õêK˜ÆÄ7Iâ8Æ9‡çyWµŸ”R©§T]€ñ|Ïóšó%ãÇ9â8&I|ßGkÝ\qe‚~“sçšãÇ9‡Öº¹¯VZ®±OµÖø¾1åyxídwï$>}*Mò Íd¿‚p½‰Å™YC_‹% »¨å×ã'ÐaŒª9ˆ*²èHáUk‰&qŠ(N`fŠøt 5éðUgbp6}`Óð$\úš4TIÛFÈ’£†TkŽR Ò¤¹}- Wr¦Mì?Ñ•×td5µÄÒÛê1_sB˜­XB£±r¢X…–ŒÂ:˜)[ÚsŠ\ºÀT"ÇÏ>¨ñëã5ë˜,)NM'üÎýš{ÖèUK*Wn1\NâFÄAAVo[)WcÀj…×Ý™ 1‹¨V«ŒŽŽ200 e1oð$º11¾”×ÁÄÄ'Ož$IÚÚÚ"IªÕ*Æx8gÉçó«E{ÚXkWôÆY¼ìéÓ§y÷Ýwyä‘GX»v-ÆJ¥333´¶¶âœ£¥¥EvæÍœÄÆ1GŽ¡V«áœ£½½ÞÞ^‚ hމ†S.—›Ë)¥‚ -—ëù(ãc:»¨éôN¾k¦ð9F¸þÌÕ Î…ä‚*Ù\âšÇÉÎ}‚ŠfP±ƒ$AE(Lì’*µZDetšÊÈ,¶âatgb¬KKK+×`ê¢sh :uüJEkñððcEœÀ±YÄ)Öä´NÕJ¡—Š&¥š¥-£8p:¢%£øpÔ²±Ksl<¦§Å0]J¥Î©rÃ!Ñqô¼å±!­gfŽœ©Äó÷¬ñxçTÌéé„-k<®kú‹òÊ]p£@1FA„KZU ë4ˆiZZÖZªÕ*ããã¼ñÆ´¶¶’Ïç ÃPºî1Ë=Lš6ï¢ tµZåĉÌÎ΢”bjjŠöövjµ¤³³k-(¥Èd2M/šuëÖ‘ÍfWÜöraf¥ö•Ëe:Ä_ÿõ_ÓÖÖFKK ù|ýû÷377GGG“““lÛ¶ ­5år™ ‚€ùùyÂ0$ŽcÚÛÛY³fÍŠÞÂÕc­eff†b±ØôŒY³fÍËEQD­Vã“O>¡\.ãy;vìÀó<<ã”N}$dM¸Átfc¾¶-N«)C5ÛÏùÁߥuäøöÊú$6!²Uj.a~¦ÌÌä,µ™í4~ lê ãphº.(6Kh;×e–{δ%Z3†‡ 5Œ¦YMiµaJ©ªâxdcÀ/?©âkÃ謣¿MóÁÙ„î¼b¦äì„ÄÂñ‰S¿÷‘XhÍèzž&0Êb´£-£î3>—¤íP w}¥˜Kj¯rþ1FA„O!É,<&YI’pâÄ 8ÀÁƒÉf³ìÙ³‡7J§]kûV-Lp/ ñYÙýÛÕóÉDQÄúõë ‚€ññqÆÇÇÑZ366ƱcÇhmmellŒîînÂ0äüùó ¾ñoÍf?µXtæÌNž<IµZåäÉ“ °ys­5çÏŸgrr’ÉÉIÊå •J™$IÈf³ŒŽŽ’$ISذaâuu½Žo瘘˜`~~ça. {k,“$ ÖZ’$áïÿþïù¾zÍÙºgŽF0‡H1¦kŽNyll(à´O”ßÄôº}„É_¡õIÙ˜J’Pó,* ¦ ðƒs ªâpq*®Ä€ÂÖ˜…‘­”K߯‹0ÚA` K²æìœ!¶0Øã]Aâ\£ÝyC>Ðì\çc- ÷)櫎=ý>yM!„É¢£·UÓ]€8q´ç4óUKKF7#E{[5[Öx¼wªÊ¡s1qëÛ=ÖµñSDŒA„ÛY”i^d=¡¡!Z[[‰¢ˆ/|á d2é¨ Ì,eVΫ”¢P( ”b||œŽŽFFFxâ‰'˜ŸŸgÇŽœ9s†L&ƒ1†žž´Ö8çÈf³Íu?m{zzhiiáÉ'Ÿ¤½½®®®¦7UEtttÉdX»v çÎc~~ž­[·rúôi¶lÙB&“¡\.DZìôë(Ä(¥ð< pÎáûþû])ÕôLŠ¢ˆçž{Ž(Š�ÐJ<–„›O)Ò|2áÑ‹Éù£Ng‰Û 1ü#ÿ;ÎN’X‹² “ø8 Niœv -j(;t’žW®é±¢eQX´KPΦ–P ŠýŒ†³ó†j¬XßcÔêC”|£Ø²ÖÇhêö°nAfWó<Šuí­¹T|1 ¢Ä`ôBÚ®\ ùòŽÖÞ;³¶ yd³Ï†]÷‹¹F |/±p#Ù·œDŒAá1+M¸}ß§££ƒ‡~xÕyG„«Ÿ</f.&ˆxžÇîÝ»9zô(ÓÓÓìÛ·ŽŽÚÚÚèííe÷îÝ@ªÒ˜p7^{Þ§7£BÐÓO?ÍË/¿Ìç?ÿy …Zk{ì1|ðA‚ ÀZ‹1¦éuáû>CCCÍïn|n¤r×uA)…1†­[·R­Vhii!‚ – ‚€(ŠnŽCß÷ñü´¼½»ƒüa¿_ÆÜíCg. Sò‰N:‹+ oúSÌÉÿˆQ¢´N˯k‡R:õvQ¥¢´ tTdQ6A¹…#"­¤ÔQ \úÆ)Z[|6ôûhåx°¯–Š$Z¥áM«>SaE‘®«—­ëêŠIU¢ô¹¾^°ìK´†|høüÖ,ŸÝ’.ãkÐZ]²’ŽÕ•¢¿ŒbãVq}DŒAáÉdغu«^×Y„YnÜ6”‡0­D>Ÿg×®]‹ uÝœ„¯$ð¬Fèil§áI³ÒòZk:::øæ7¿¹¤­a®8Ùm´c¥œC2¶®£±ìy 4÷A#lyŸcÈårÔj5¬µèzyó4_Ì 3±ÛybßÙ™&,.e€Ü&”jšÃç}¶v×h Ý‚¨ 4è IëƒÐÿ?`쟡ÕžŠë‚ŒIÓ©º¡@Í% ‰­ËŒ\R/ëÞÈ“Š¾V ?ÚC¾EƒƒãÓ‘…­]Þž¶Ô2qæ‚ÏÔÊ ¯´¬Q`®¦W±ü’ Öjñyaµj bŒ ‚ «³Çĸºa‚Ìò¾ö<L&CE7,ijCT ‚à²++åy¹X9kG7ÕåãI½¥<ÏkŽE•ÆNÜqIbÄC· µD3^Ô ¶+\¸l@* &OÒþ8ÎkÅ;úbô(JǨzi$¥ h•Š4XÔ¼ƒ„EL=ŒKP€o íÃ]toÌài&™Ùª¢–¨zl{u‡Ær”ë}œ©«]uY³E^8®ñÙŠ¢Œd™ºS1FA„;f‚ؘ/Îõ¡µ& Ãz™éë;\< —êFw b ìwáV£#óå{b´}±ái²ØÂ.jƒÿ þÈÿ…¶G@ŸF<QýyÁK¦EP±E9KSytIêÅ·¦þ/¬!ÈP©–soo-=?*PNz}ùEGÝûñ:véw,È*?8”kº¥ï5W°+\»Ò¾ip,Mt&§“;cA„ &³—Xâ–Ÿ 2†?7Äc Z›ë~'ßIBÆ»~ì­xÚt”•á¦1WÕ8²«§J{Ö^DQ 3Ø–(õþdÏü'´:ާ-èš^2eÒ×Ps" *õŒÑ‚ÞNº¿>Dn]U²>šð©ÆŠ]=5|ý)m‹fùÂ4êFåcR€kx¼©…w‹n°àûâê"QúXégªzhW=rý­´U3ôjI±mw›˜cª1FAX2‘¼Ôÿ·ßäHö©pcǃ1‚ ÜŠX§ˆÃ^î²® Ê+`[f.qäGÿ OÃPK=c…*5þWÊÁœƒD¡L€ëÏSxî^ò÷tãg¼%çÅØ6ô„F¶u¥?¢W‹°ÕeíBàÏ•:ºb hcÀ3h߃Àà ZÕÅ–º 㑃r-¡ZsD¬§í«W¡r ¡¥~ó€´,¸§ž¯Éøš¬¯ÒJPK¼eä:s§ bŒ ‚p)«Lº@áª'ÂkíUQI¸½hÏ$<±)a‰SÇÅ®üJá­ÔZb&¶´ÿøî4ZY”± bP®¾¤(­ £·ô>ÿÙ¡ d 9ŒYc´‚]k£f)ꦕáVik8‡›-ãfçqÕlšsÆÝ@SÅÖ{ÏzUÈ Ú 4ÊݧrJ9qŒÍ&ÌT’„%ib.›ã¦.Ö(,¡¯XS0´ç žFî0݈#‚ ¬dï¤FEÝP°Ö.M*ç.óÜØHã½ oå÷~aC.\w¥Ïëˤ±ìº¹¼x*‚psϧŽjµJT«.º}/7–éŠæ­ÓYè«Ò™‹/ž7¦>fµ1øÙV’ö‡-“ÿŸ“ƒ2Í%´‚LH¼¦·í1‚#×·Ž0›ÁoŠu[ÂÁ{£!µDq__Õã”]… âp•vr’8bœK]m’eên' ðLÃxÁEIj F_‹#:}Š’ÙFT‡AiS8Ëè\Â\Ù‘ÔC¨¦‹–Ãçb¬…š…¡n  a³ÖA”غ‰£Ð*õ†!rœ±d|E.HßDŒAîx!&}Nœ¥V,c犨$¹zûåzÛJáÂ�¿µ€õ¤~r3I„›K’$DQ´Bn ÖA-ç,ÕØ%ŠÐ»t~8¥ÀŸL¾çbVÕhý{L4¦†ö<l˜'nï¤æm¢ºþ3dÖo!ßÞI&›E/«$×ÐMb›æP©% ã9V-X‹›-A’¤?È:¨ÔH><¥*ªÁ+˜ Ýèõ]©=P‰°ŸÅyÓÛ*dšƒ´4·IoÞ¸¸.ÚÔU*WçRFá,P­A5†ÎÊè4)q¸bÕšÃisP3e›†ƒÕ»ø—GjäE[V“T‡ÏŬk3x¢ÄqfÚrj:¦¯ÕprÚ²¡ÃcC‡F+°‰cl.aC‡‡62–EŒAîA&5–*3sØÑ ¨TQÖÞú W ç*•*¬í"‚zR=dA„»“ØÂ‰iŇç-Śⳃ°¶pÉKiý9­H—o]K-|ŠùÖØòYâê<6QĶ€ »ñòÝtåó„™Ì’°¤%ZŠƒñ¢âý³©FÑ–Ñlé´4³Ô^Î.‰b¨Tq.-Šu¸‰9ì;Gq3¥ÔCG)ìÈ8á·£ TÅžÇl]‡›+cOO ×wcÏN¦aN•øèkˆß9†Ê˜¡>Ül‰äÌzM+x;9Ÿ¶áô$ÞÓ÷¡ Ùf“]œàj1Ê7$&‹›,öS”jŽ{×û¬k÷8?—pø\„u…a²˜ðË#Uœsd<Å|År~>a]›Æ7©lT©Ab©ÿ/ˆ#‚ ÜÉJ Î9¢Z ;>Å2jy¸Ðâç[ ½ áJ•XÜÄ ålˆßÑŽ2¦ñ‘¤ÀAî®K:ðá¸æŸ?ÊÐ’óùõÙ„(©òôÖ„(Qäü´ u©¦Èç•H‘ ,Ö)ª1ä|EMµP ·’Ém ©Z Y_QsÆóоf6Òx ÆQŠ4žvÆQŒ4søÇ<ŠI€¿z7âß>féZílÔ¥Œª‡P+­P-YTg n¾Ö¢Úò˜=ƒ©0c>º§øÐ)to®£»ÛpÓ%¨F˜¡^ìùYÜt •X”ï“:Êámì!>tºZ0›{ \K“õÞ…¶DÝq@-q«þ9qbyÿtÌÚ|tÞÑjJáâ3 ûP|êDŒAîà Õr [0Ëó²ø>*B‚1Š4Î^¨z,Î#³œ‹~æHË5,ÿl‘ªb-nn*•cÈJ’™"¶½œ®ßxS¢Å‚ wJáP5 4ý!Ž˜(Õ87o81åóðú2³UÍñ)Ÿûú*œ/ÆŠ{z+ŒLŠ‘fxMÄÑé�£`K§ÇÑI¶Œ#&|4°¾5FË{£[»bBϱÿlÀžžˆJ oŸñéÈ$œžÕìð¨ÆŠCń٪¢+¿Ê+³Öà\œ¤Õ›HÅïÁ!b£q³%ÌîA̦žÔFP. CÒ:õpq¤áE“sÍMÚùºíà›ÔS¦TEu·@¹ŠšGwäq¾¡Ÿæ„qÓÍbHiÿÖZ7Í™¬¯˜­,UOb çf,Óåˆr䈒´Š’EÑÝ¢93íÐ*MïúŠÀcINŸÕ$]DŒAî IF[{a]ÏCoÄûï¿‹Þµ¼+¼Œ,¿ásá  +j#¥2ñ_ý ÉÏ^ÂÍÏCÒ¸äê>²'¯¸Wë¶ØÍ¼ñÚI‡ ‚ ÜâúKZ^¥°’IJ¥ŒZޝ26›ð@ô·Æôb²¾%ç[:2 ß±¾-bm!T6uÄÄVxŽ­]ÖoÃkc”J=`öôÖ0Êákx°¯†oFÁgÖU ½ôõÞ ŽÙ ¬-(ŽŒ¥Û´‰£ԯ嫸´(Ïà2!ªš€KR±ÅhT'~W;_A·çSÏ•º¡ ظ£@…~ë'¨µm$œ†Ö,º¿´F…>f[?ª#Ÿæ‰’4°VéºÖb¶ö£Œ©—ä®—¥ö<ðÒ|1FAg^s~Þ’,º^ÖbÇ£1;û '§,¡Q(¥ðâÞ »×ÃLÙ’õSárd…‘XkcA„»˜ÀGmÆû½oa¸|ÿæ†*9 ñ¾ûmÈdH~ø#ÜÜÜjí:a‘øbU)�­õñþϵÖÒa‚ · µZ•óããléèä¹–÷ÇbvvÁÞ y!œ"Vgþ°þÚ÷\½X3xžkú¥z~ýµ‚¼ïšÛÈ 1ZôÂëVõ¿3ñÖIKd{Ö%äL•RÑÒÖÚ„—þ1F§‰rKÕ´$QCìP ²:ô¹ D”§¡=×ôŽ­_ôP‰Ål[my”oÀ:ÌîATWçTà±ÄýE©TiiÍâê¹iTÝ#F·dêË«ºˆ¢èÎ&Š q= ð³÷fñÂÓ°­×áiU[ê!W@k&]?04ûV+ð¢§Å["Î"Æ‚ w JÑèñ¾ó-Ìý÷B˜¹e|fU[+ÞóߥHþáÇ0=ƒÈ1«gjjŠC‡1::F ïfý†õõ*æéNŽã˜·÷¿Íðð.òù\ZEB©ú£^ŠsGA¸—íÔ;Æ:ÇìÌ,aà1Ô2Oõ ”K—K¤v-?OÝ`;<xb mŸÁ1=9‡g<úûõj~*ô0Ý­ØÙ®R…UP+5Ó9ToÇBüµ¾«®»¨ÕµÅ÷Q-(d—ܘ2@WA£•cºl‰-tÌ¢ÞXÉ>¹ h 9_Ó‘3„ž„)Ý©ˆ#‚ ¬Â�Ê`ö=†Ùûðo±K‡1¨Ö¼g~ wü$ÉÏ•†q;1^V×}† xýµ×ù⟤X,ñÊ˯†!÷Üs'Nœ`bbœýûß!Ÿ+055@ww7Åb‘¡-›8uêÛ¶m#—ˉ #‚p‹ 3´·w23=Íüü,Åbé&…›j!Ä ÐÆËæ1~Ȇ aØø/¿¬.ŸAg}\5•jõ<u—0a¸·g|Ï€—–ïvK›HÆWô¶jºòŠ™Jš#f¡Ûݲ¶©%ÿ(íÈ‡Šœ¯ñŒZ´ž\_ï4DŒA.ÀN¥irº¶0 Iên-ß•&nÉËλB …›6m"ŸÏ³uëVÞzë-¦¦¦PJqâÄ NŸ>ÍÞ½{™ŸŸgzjšóçÏóî»Ø·ï³¼ùæ|!z‚ÑÑQ†‡‡¥3áBµdº%×yÌ)E†lݺ•³gNáy!APÂÙFè‘»d ·+ýÿJŽm4ù\5=½ôõõ£µ·¤PãÅô"Gºã´AeuZL`­P×㈮—侨·+­ñtVú=î²-[œ´7õF•1}'"bŒ ‚pYX‹‹ã´¢À&Ù•×b]µô=k!I°V“®­5¾ïãžç1??O{{;år™ÉÉ �Ö¯_ïûŒœadd„ùùYZZZÈç ¼úê«|îsŸ# CéLA¸¾ï£pT¥+„„R c …B¬íé#Žâ‹ˆ ¥™¯´î`ÓXì¸á.Ô.Ÿ+@)ñ ¹\ÏóÐzAÚ¹”çNs)µT¹u÷ÁÅš¨®x_ w&"Æ‚ —6´œ#Ž#ÆNžaâ÷êÞ2ªi„-~}¡¹±ô³•Ö[ɨS‹îÙ­´ ·ÄÍW¡œÅ«TX;>A—ì²%m³²VHj¼ïû›7o¤Ð’ãñÏîå?ÿ…–Ÿyä‹<x×^û%›6ÒßßG×hïh¥£³mÛïá7Þ`ëÖ­ÒáÂUÕ•ÆæÅ&e·ÛÄD)…xž¡ÚL`!±pcÆžRŠ0“!¸Œ`¾øx»QÇØâÜcR¬O¸1FAXÁBª?¹Ô@«UküøG?áå—_]Qr©›r‹þw«øìrË^ê;–~¦#g-ß)—ù¼¸ó.™Ð^̰^ø 2™ Ï>û <ϧµµ•ÁÁÁÔHð<¶lÙB’$Xkñ<G÷>J’$Ôj5Ž9Âç?ÿyÚÚڤÅ««+Í;ç@^ä 7å[íñt½sÊ,o‡x}w3"Æ‚ K ±e“�ëq}înÁé„|k±I";p#w¹çÁr£ÛC6›[òÿå¨V«<ðÀtuu‘É~@Û�� �IDATdnˆ/2y„[ï˜ù4Û_|]Z|ó@î&DŒAVi9¥nÄîJÜëª×•äòÕÝ"wœåë^l–nZl¹ÕÊ‹KS§ÿ'uCxqÜþŶ•>G__oݽÜÖóõ¸eëɤY¸Ô˜LÇKc"¶0LÕ céÂ1ب¼"⌠\¿ëÅÚ¾ÇÂ݈ˆ1‚ Â53®´nN÷qNaíÂÄJ鋬ìt}vUŸ€á�‹Ò4cÉ3ç.[ÅRXܵ+xÄ,ÏÚç,Æt}~Ú;”Zk1¨…+Ÿ ÂÊâ×—ÃZ[Ïe•ÔǬŒ9A¸VÇäÍÈg$^1ÂÝŠˆ1‚ ÂUãû>7ðÛ¿ý,;wnãØñüíß|ŸÃ‡>Ä:Gkk ÝkºÐËcŵ¢¯¯›|! &&¦9ôþŠÅ¹\†Ï}n_ýêÓ à¥_ág?{¹¹¢xÀ¬Š‹' mx"X›z´£I’„©©)Êå2µZ$I.™gÀZÛoÛìîµUDaU“/¥ß w—ÍsÔÀÓLðÇ­Y2Aø”W[¼:‘ Üiˆ#‚ \5íím<óÌWyð¡ûÈ„>­m»H’„³gÿÓÓÓ(ƨzùÊ´J/CAàœÃ÷}´Öh¥Ø²eˆï|ç[´µ·€s|ë[Ï12r’ýo q—Ë Ó¨ÀtWOw/:¡]Z5#Èž={–¿üË¿dlt”÷ߟR©ÔìCµ$ý¨[’ˆTi Îáù>¿ÿû¿Ïw¾óòù¼Âe&}+'ñ\œçèrë§Œ¸Ê Âmueº U›áVEÄAáªéìì gm7¾gÐZ¡”¦£­µkÖ073‹r å©^—°µØÄ¦ï×ÊVŠ{¶l!› Roa°yÓF¼{ëìÊ“5µXŠ÷™KM‚ž1 ƒ±s£¥âýï091Ù\NkÝ oj,ßxÝø àÈ‘#T*r¹Ü Oȸب¿ÑÕ@„k3A[Èse•_$ÄAn¿k "Æ‚ ×€™éÆÇÇÙ¼y#Z+’Ø233ÇÔäÎY../p*­ÞtâÄqþöÞ,F®,½ïü»Æ½±/¹3“™Ü‹UÅÚKÝ]Kw©ÔínKd÷Hƒ™†m <@ÀÀ°Œý2/z= æmŒy²Ç€4c¸muK²¤v«»º[*©Ôµ±ªH™\“¹gFDÆv×3q3rc’,2™,žÈÌ7îrî9ßùŸoé´;Ø–EÇt:>·nÎ!cµþ0à .`­V+™àƽëÝKÚ.Æô_Blw<Ï£^¯£iNÃ0Èd24›MLÓ¤Ýn“N§1 #Ù¯¦ièºÎÊÊ ÃÃÃÉ~4MCÓ4â8&êUÌjµZd2 Ã@×uÍf˲ð<]×Éd2¤R)VVV‚ É‹Óÿ\2_­V±,‹(Šp'9f!–eÝИþ9[–uW§÷7AÛ«ú—B¡P(_&”£P(Š/ÌêêòÇÿ™\.Ï™3§˜åOþäOYYYM&ó{ašæŽmQóÙgùÃ?ü#~ý7þ.aðÓŸüŒÏ>»H†IQ%Åþì?±íŠ'Apùòeêõ:Nç OˆÛí6.\ Õjaš&™L†v»M§ÓÁ¶mVVV˜˜˜Hf³I±Xdrr’7nP.—Y]]åòåËèºN>Ÿ§ÝnÓl6aIJ,ŠÅ"GŽáâÅ‹,,,P(ð}ŸR©ÄÐЕJ…[·n±°°@&“Á²,„躞-‹‹‹´Z-Ž9‚eYT«U¤”èºNE„aˆëºÉ1œ8q‚B¡ ×µQ…B¡P(¾|(1F¡P(_˜0 ¹pé ÿûïý˜¦It:a!€ÚF“f{[µ”n¥¤+³7¶x\ARÒjwøÁÿ”ÿòãwˆãÏó»"š³ÝƒaIƒy96C;zåéz¶„a¸g؇”ÝjWBƒlZâØ­¶E«Û57MÓp×ui4´Z-Â0$•JÑéxd2Yæç±,+ht]§ÓéžçqëÖ-––V( ¬¯ß N³¸¸D&“&›Íây«««ŒŽŽ²²²’$^^^Nœþqt:<Ï#Ÿ/†kk«LNN233C«Õ& cêõù|ŽL&ÇÒÒ Ÿ V«Ñl¶©×AÀÈȨc Í*ŠƒçA†ý†gù~Ïç°öCw:ŸÇ¥ïü2œƒc …BqhˆcI‡Ôjõƒ. ãx_™íDQL«ÕJÉ*¼!Ô-Úíõía#›ÛÉóg=¾÷›5þàY~ú®³#ªmÛLNN¢ë:Íf€Z­t6×jœ:U¡^¯S(äBà8©TŠr¹ÌçŸÎÈȦiS*•ð}Ÿ\.K±XÀqt]§Ýnáº.†apîÜ9¢(bhh(ù×uÑuÑÑQR©¾ïcÛ)jµ:££#d2YZ­6ãããT*CèºN*•BÈårH“Ï( =¨CÅd³YÕˆ Ûï(ŠˆãÃ0”0£P žçáyuó® jöƒ™Û·Ï¥ÅÎß²Lì”mY¤@SI|Ï£Óñ’Ú]yÛfMÓ°S©”}¨ÂQûyÞºâhk"dÓ4I96¦y¸ûÍ0ˆñ¼žçoæüÝ%!ÓìµÛÜ×.QbŒB¡P(ŠC+¶ìg´lõŽÙå0ñªé½½Z׸pÅd½fnzÅ ìÆ²,†††RR,˜˜˜¸« ù©S§’óßòz¹\ÚQCÁØØXò¿mÛ[>S,) »®Æ ~ïök6xŪ2ʯÝö'„—/_æ©§žR‚ŒBq@“üzƒj­J§ÝéyH~±ýš¦AÊqÈçòäò4M;g¹Ÿk¬º^§Ùlây^’kìnB`§lÒ®K©TÂNY¼Š¢ˆv»MµZ¥ÙláoTÓ4q›B±@&sp×ûné IëkUÚí¾ïoY  Ã$•²Érd³Ù$·Ûnã³c …Bñ¨L'r™©_BÖ¶LÒ®ƒbÇ‚’Øö÷ݼöàö!@JRq„Lj |â[ÈnFË^Û±»-7*‘.]µ¸r=GÄ»T´Ù­Tñ–ï»U®;‰!wUúÛ=‚öÚÿöãV<šIÇìì,ÇŽKò)Ї7I®V«Üž[ îy±ö¶÷_ïÿ=؇î÷\FQ„çùÔku&™ —Ï£ë÷Y–R†!‹ ‹ll4ˆ¢8ÙE1QbšæŽccI…I’÷°Òj¶h4šLÏLašæ–ÊjñII§ÓannŽv»Ý½?QLÉ-6Z†x^‡F³ÁØØù|þÐxöôÏáöíÛtÚAî‰î&ðïz Ö7ê9r„B!ÿ¥_üPbŒB¡P<~S탞ٓ²mÞúÕ¯sîåAh;'1ÐŽM"·ü‡©ýÀ®ÄO[n¾?y¯Ä1z«ÍÄþüíæ:=flzzôd-¹»p±ósÝß¾/ˆc MÛý½}£¸¿òÕétÐut:M†t:R©¦in ƒÚyA „ Ýn£iétz‹¨†!Bˆ-«hw:–0 q'Ù®ë:aEAÉd”ð(z¶^ØÜgŸ}Æ'Ÿ|ÂÔÔÏ=÷œº0 ÅC¤Ùl²´´”„ò„aÈÂÂÙl˲X\\dhhÃ0X[[CÑõéy î7Î�,..cV7ÄS<¼ŠˆQ³¶ºN½¾AË-âÑòòŸ~ú)¯¾új2†!ˆ¢ˆF£Á§Ÿ~ÊÌÌ ÃÃÃÉØãùËK+ŒŒŒ íÀÍŠ®ˆ±°°€çyÈXÐl´ùè£XZZBJ‰ëºœ8q‚™™„Ð ƒ˜¥Åel;E:íŠ6+Ëk´šÝâ�·oßæÃ?Ä÷ý$Yþðð0O=õT׋5–,--c[6éŒû¥~þ”£P( ±”Ä"¡ ó€V ݲ¾ÇŽÍpâ+¯Àaœ Ê6„¿ü©šÊ®ÝvÏ‘±Âw§]ÄqL½^'Ž»9V|ß§Ñh`š&õzß÷i6›†AEDQD:ÝMÌÛ/s-¥¤Õj±´´ÔKüÛ!ŸÏã8­V‹F£‘ˆ0º®ãy®ë’ÉdvËòò2abÛv²"'¥dii‰t:ÍÆÆRJR©žç144¤Ä˜ƒîãâ˜F£®ëŒŒŒ i­V‹t:­BÃî@ÇÄR¢ ~ Åög.ð¤ì Õ—.]âç?ÿ9Ï?ÿ<žçñÑGñöÛoÓét8þ<š¦qöìÙ$OW,‰Â(+úÉÚûb»ïûT«U2™ÌC5!‚  Z­õ¼Fºß{åÊ>ýìS¦&§¸uëgÏž%Nݪù—ÉòÊ2s·æ˜%NóíoÛ¶‰£˜jµF©TÞSìØc÷ÆÆN'—Z­·nÝâÔÉSt¼Ÿþ9/^äw~çwÐu½ç…âÑn·qœÔ¡è;ÛídÜ]\\$Žã$¯\Ûü|·""?`ee…tfêŽöŒc …Bñðd ’’ÏÖëü‡+Wù_^|¶'ÆLÈ’M×0 ã¤(Ž‘ºN¬iDª¹ì+¸ ®Ê~y*ÑÕÙ4 „±)¶ þ}·hš†eYA$ñ-•J‰J>Ÿgii‰f³Éää$N'1Ükµ…B(ЍÕj4 ,ËJVi³Ù,N‡z½žxSضMÇA@*•Jž~Ùìµµ52™ Žã°¼¼L¥RÁó<šÍ&ív»;™ˆ"|ßß3¿Œâá³°°Àüü<Ùl–ÙÙY …®ëª sÂXò»¿<Ïo8ÂéBC娸«‰~×KÑ#–1 õú͘‘‘šÍ&®ëâº.ëëë\ºt©'¦ˆ¤­Õj\¾|™cÇŽ1;;‹ëº‰—ͳÏ>ËèèhÒGA@EèB{h‚L³Õ" ú®ža2;;KÊNñÉ'ŸP,1 ƒ0Œ0ŒnHR.—c||œv«ÍsÏ=Ç…‹ /ð„axÀâ›÷Èó|d,“ÿƒ À²,fŽÍ°¶¶Æ… X]]í¯è×’z½F>Ÿ;bLµºNF‰]¢iccc<ûì³Ø¶çyø¾ï{Ég¢(Âóý/ýs¨Ä…B¡8äÄHü(â—ËËüÇÙ[ü“³§0“8àÃlr?ÈɬšZÜ·=OËàk›Ûd/qž¤RŠAJd‚vZm‰Zï}bǾ·äa[¿#Úí6¶mã8ΖÕÈ••²Ù,š¦Ñl6±m›(ŠÐ4b±˜|—ëºø¾ŸxÊô'–e‘Ïw«0ù¾eYIì|_êG*•J’¯®®bšÝJ ¦i&ûè݆aJ¥”'Æ#@Ó4NŸ>͉'’6¥ÂÅöÇÒ5¾wê(ÿúÓ‹üæ±)^ÆÒ44¡=à~Xñe£/Z#»ýeY?~ŒÅÅœ”ÃÌÌ W®\I’¯ —.]bjjŠjµÊ|@ÇüèG?â™gžáòåË”ËeÆÆÆNò–ì}„A@¼-Éøø8çÏŸgrr’8ŽùÅ/~Á믿N>Ÿ§Z­Òjµ( èºÎÒÒù\ß÷qgÓ‹»cãÁ«1€ì-šH‘\·ååe~øÃ>###ÉØÙÏéàyþ=W±|Xx¾¿% þ=2ûæzSbŒB¡P(ò¤>]«òç7çù¯NL3Í¢ð $ãü�Ùîì: JºFJ„FÔ­Qø¦�; 5‰&% äÖ奈Áó TÉ{ïJÚÚEœÑ„à•s—®D²OciUçòu8Ö‘rgâÜ~bÇÝʆ !Èf³¤Óé¤dtÿóÅb‘l6‹®ë‹Å$f|»û±¦iäóù¤”tßàÔul6›„#m7Ö³_]i||œ8Ž“²É}Af||<•ú?»%xT º®ªr²šLg³ü×'føáõ[8ºÉs•²bwõ¼úÖŠ5É&Ûq²Ùlâ%ÒIã8¦R©pñâEÊårvšÉd¨ÕjÄqœ<ÏÉ~¢¢ÑO´Û¯žÔÏ3::Êúú:ÇŽãÃ?$ +À¯¬¬0?¿�Àüü<¥R‰Ë—/óôÓO'Ç®u]FÙ3%’1QËå( X–…뱺ºÊ׿þõãsʶÍ¢Bʶé´;[ªZ]½z•f³‰®ëÄqÌêê*Ï>ûì®gþe•£P(‡^Œ‘4‚�SÓHé:ÛF ò<¢_¼‹\XèŬl³¤$‚Ï2Y®;)b!èzÕ 4!’•ªí•DïµÝª' R<Î6›Ã½ç®‹& 0Œ|Ÿøó˪Áܧ8#ÑX®MÐòjäŠ9âP’Jw‡ÕÕ¬­­¡ë:•J…Z­†ßs!v‡›7on¹oƒ u·‡L z®ìghõ½#Eqy1úûÜÇnß­DÅc÷üöÚmJ7°4FЫR¢Ú²bŸ>Ñ0 ì”¶!ˆ{ãi_$w]Ó4¡T*ñ+¿ò+¼óÎ;X–Åk¯½†iš¸®ËÔÔóóóŒ'9N<Ï£\.ôùÓ4Ñõ‡›7Ncšæ–J=ããã¼øâ‹,//S¯×yóÍ7Éf³É‚Á‘#Gh6›\»vÑÑQŠÅ"“““×HÇ0ôGãŸ+–e"4 ¢n˜O&“áå—_æ'?ù õz™™&&&v,BäQ5¥B±H£Ñ$êÃÑ£GY[[caa!Y�yæ™g8rdr‹`ÛÖ—~ŒVbŒB¡Pr4!xa¨L;ŒøÃk×I›“™ ¦&ö.‚†Äï@üáG»~_Œà¶móãáa®¥SHò[& i®¯ózµŠ3$pà »JNâ¡ñèV°¶» ËX°^/Ðhù´¼!Â(¤ÑZòšV§R©Ðét=£Êå2qcYV’ßennnÇýÞ¯ÜôýLô>”øòx·aE7ïÍFƒï_½ÁËÃ^*¸÷¤â1µ/4l6C½Vëæ&‘ÝP¥çŸ>Ñßxã$LôèÑ£‰ÞÏû166¶åY|ñÅoǾ@`Y&…bnG1ÆiY‹E:nÕžB¡À«¯¾Šã8¸®›$qïŸC6›åĉܾ}›R©„a=z”´›ѽ>…bÃ4¶ºåØýä 9ÖÖW C)»‹ ÓÓÓŒŒŒàyÙlÃ0<C©”ƒë8‡Æ3ÆI¥Èd2Iõ¤|>Ϲsç’D¾–eqâĉ-ÇkY•¡¡/ý3¨Ä…B¡x ĘŒiñúø)Cç._埞;‹©™w¢Ã@À”Iˆv?…ÆÅlŽy]Ç%ð`ã”ëÞw\^\YÇ Â}"9(Å<ÁºÌ~'›$‚ë×oR«Õ˜_XH*eÄqÌ/ùˤÄôââbREóóó½/%n(m{?Žø·—®ðæø¯ ã†Ê²¥¸k\×exd˜…ù%‚ H¬nCúÌv1g¿gÒ4MFÇF$·¦ …N‡Z­„Tiš¶E´è_>Ÿ'“É$çÝ IÃ0p]‡J¥ÒõèyD}š®ëLLLpãÆM:m/9Î~råÁû¤i¦i244„ÕCŸ¨ë:år™ h4H))—ËI²üþýéÿ6M“ÑÑQRvJ‰1 …B¡8“ ÀÑ ¾6:ÂWGGxØfAW̸û¼j\uÚš@#ðT ’eËâšc“‹<Œ}òèuíµj¾ß„µûwW8;}êo¾ù&W¯^% C]ï&ǽä¼Ý’Jƒ†l’Ȱl›¯}í5U†XñÐé·ßî/¹eÛ“ˆ­éü‹Îu'nª’’â>&ÊÝDæµjŽ×!Žâ/4‚ @ÓuR)›B¾@6›9™~XÑÈÈ0¦itËv‡a/)ýÝcš&éL†b±€mÛþ·m&aeu•N»C8PR¼½u]ǶínN¶\.©ªt(ìMrlÆÆFYYY¡Ýé „’ ¶EÛ¶)úmæËŸ„\‰1 …Bñ˜  q ®ç}#ŒcD/iî'FÀœb>ewM°‡0xjH!ù ŸçL«Åw˜ptÓúÆ*„aWfðww{·üg¡Xä_þ«•T_¸Ÿzº¡o©œ¡P<,úey»©QÄí‘ehý*+ªz’âþèæ‰)Ëu“ôÞKž½¼/t]Ç0ŒÎ["X¶ÉÈè0å°DF]»` `Ò_È­ O¢W€ 쇥_Ñ4 7írÄI†aâµÚ¿þý÷üõ¾ûû¢iÇM1qd<9‡Áþ|÷6#÷÷¾_‰1 …B¡Ø•v D1™ž‰¿ûð m]çf*EÕ0‘âÞ<jîe —Hf]‡EËæh§w˜ìGQD3É«‰ÉžÂÈ`|yR«‰®{v"ØÜë÷„aõ<“úñab[‹w¼Ïw÷¹{ù0-ôÝ~ÿÝÏÝç^ŸaËûvœw»q¯ßëu¾ÿçùÞÚÁÎkEÝÊXªò»´Q…âþ'ý‡Áä<½ÅýDò÷:föEÞÃ4áï‡ðô«î7Þƾq¿sxÒús%Æ( …bÓ^ ƒ )IÅm×À#A, .%7ƒ€êFýá“”´¥ä’‰ãyÇÎ H'ŠM”Ãþ¾è½²¦aõrý(¯ÅaŸ0ösQôÿV(FÀPç³3WÎadît‡]ˆù²¶³/‚c …B±ë@YÈ8l¸~uƒŽïÑð¼m“tA,«†Á²Ð¨‡áÃ=&À”’¹7êè[Ęn[7ȧl<Ë$]Ì#45àïoõ«^l /R‚Œâ°Ò`¶ôÝüGÊÈW(î¸Wp·D½ûMþ÷õs9X=ð~ÂC¿²×9|‘ózÇ÷òËÝé8¶æ«»s» •Ûë|¿ (1F¡P(»M’”a0<9Ê‚r5Æób¢-ÑÕR@ ÀÔ5òšØ7ða¿ í¯±m›N7oNÐ’wlQ¬L§HT(æ³èBCHµ ³™Ù3t¶Lb»°UÛýNîõúnû•;Žçî¶)žØ»ëó,Õs®PÜ'¾ï3;;KµZ%•JñôÓOï›3%ŽcjµZwñ¦PØs¿‹‹‹ ?Òð§õõu._¾Œ®ëœ>}št:½oÑ ‹WL³ÙäúõëxžÇèè(ããã�4 æænsâÄñû Ézmgqq‘……,ËâØ±cd2™ÉþÍf“R©D†!H¥R{^Û+W®°¾¾N6›ezzÇqRR«Õð<‘‘%Æ( …âË=Ùɹ)ÜãGYoa!Rƽ¼0ý ² �ücñC ê~«6”CÛÃkÃÐ4ŠvŠœi¢ïRšSq¯“ÝÝ®Ý~Ûîôº¸Ç÷ï·M¡P(_xt•’›7obÕjo‹'¬ÆÔÔ/^Ä2MfŽãÒÅ‹Mcbb‚êú:ívÓ4™žžæÊì Ý T*qõêUjõßúÖ7©ÓétxçwxñÅ©×ë¼÷Þ{8ŽC£Ñ R©ëëëœ:uŠÉÉI4M;tFƒÙÙYòù< ‹,-.Óh4°,‹óçÏcš³³W(—K<ÿüóVÕ0Š"®]»F*•bee…t:Íùóç©×7xæ™g¸xá"vʦT*ñчqúÌiÖ×Ö™ššâÖ­[¤3i&Æ'8ÿÉyœ”Ó=v]pýúuÒnšÞÿÃ0¹ví:†®3==ÍÇç?æ¥_B7t<ÏãèÑ)%Æ( …âKc–%ˆ� ÆÒé®a"AŠÍ©±Üñ© öúBѯ'"”�£P( ÅÝŽ«=/…ÉÉIÂ0äûßÿ>o¾ù&–eñáS«ÖX[[gmm…‘‘Q<ÏçÊ•+ U†¸xñ“““ø~À¥KŸS¯×YXX ^¯óõ¯ ‰ãGëÙ(¥¤ÙlrùòeŽ=JÇüìg?#›Í2??ÏçŸÎÐЦi211q`BƽÏ癞žæ½÷ÞcllË´™ŸŸg||œgŸ=Ç¥‹—¸qó:?øÁrîܹ;)»¡Î§N¢^¯3;;ËýÑqêäiêµ nܸÁ /¼ÀÊò*?úÑák_{ C7¹qã&###\¼x‘À¹=7O6›eccÃÔ¥\*såÊUÖV×Y]Y¥Z­222Š¡›üÍß¼‡”’o|ãÍÇúÙSbŒB¡P(¶d[À1°*Ô×Ý.жsØõ? P<Nì·*ýeË P<j4MãÊ•+ø¾Ïw¾ó–——i6›¼ýöÛüâ¿àøñc ‘Éd¢ÝncÛ6cccø¾a˜¦‰ã8LOO#„`}}!ºþhÅT*ÅK/½Ä7¾ñ |ß§ÓéðòË/ãû>•J…r¹Œ‚©©©CZZ­Õj•™™jµ:™t–™™2™4®›&—ËaÛÏ=wî@Å$]×q‡÷ߟ xá…h4d39&&ŽP(X\\ä…^à;ßùsssd2Êå2W®\!›Í222Â_ÿõ_“Ëåp—tÆáâÅ‹¬¯¯3>>Îðð0ž×!Nãº.®ëâû>A`ZÖcýÜ)1F¡P([å‹-ÉCÄ>bÇa<þ]·ª«P<®ýÐ}¼®P(îmB}æÌ<ÏÃq2™L’“£X,ñkß|]׉ãÛ¶IgN0=sÓ4)—KDq„”Û²èt:IùâŽç!„ÀqœGz~®ëòÆoàº.¦i233ñcÇX__Çu]NŸ>M­V#—ËÚ¾%—ËñôÓOãû>NÊé ¦‰n躎ŒcÊ•"¶mè9†ÁÉ“'Y__OÄ’×^{(ŠHÙ)²Ù4¦eacã£ø¾¼ì�� �IDATÕP†‡+ض¦ë?>Ã+¯¾Š›v0 ƒ^xŽã`¥R0а- ;eñþ/Éo¾žìëqE‰1 …B¡¸CÒTš—Ý?Õj•[·n111A»Ýfyy™§žz ]×·taÒh4ÐuL&³cR<X…éý÷ßçäÉ“d³Ùg)¥*G¬Ø¿ç‘Ê›M¡8H1¦\.oÙV©T’¿K¥â]ï+›Ën ‡äüÇI¡ÁÉûØØXò·ëº‡ú™¦I©Tºã{Ü´ûHÚN&“Ùb¤R©äït&½çgóù\Òßçï~gK%¯t:M:Þó<¿ù­oî›dz?Êå2³³³;vŒÙÙÙÏÀA Ä…B¡P<Ö¨ùÚ#Š"Þ}÷]Ž;ƧŸ~ÊÌÌLR£R©Ðn·YZZ"›ÍòÓŸþ˲xë­·’ª¹\ŽÅÅEÒ½¼BžçñýïŸï}ï{IÅ Û¶‰¢ˆr¹Ìüü<ÃÃÇÞðU<êçZ=Ø …Bñ¤ô÷÷²HÓï'^xá9ÞÿCþù?ÿü³ö?ò Ïø¹+1F¡P(jBô“Ïçy饗øßÿO´ÛmÎ>õ ÿúÿú¿q\‡gž~†O?ý”b±ˆëº¬­­!‘üÁïÿxžÇòò2o¼ùïüôΞ=ËÜÜår™µÕ*7oÌñÙgŸQ­V9sæ ×®]ã×ý×ùÙÏÞá{ßûoï«mI©Ê[+ …Bñ¤Û›Â>Íçs|ãoðo¼ñÈÎ[S·^¡P(Š']×9yò$ŽëòÕ¯~•f³A£Ñ Žbâ8&—ËQ­V‰¢ˆññq²™,ÕZ•V«…eY4MFGG™žž&—Ëñâ‹/bõòø¾ßM4˜ÉÇ1ögÆôô ¶BJyÏ? …B¡P(_”gŒB¡P(O0B,ËâÔÉ“LOÏN§©Õê8ŽÃñãÇI¥RT«Ut]gll MÓz• <�N:…mÛ=z”ÅÅE®]»Æôô4ŽãP(ÈårŒŽŽÒjµøùÏÎoÿöocšÊüP( …Bñd£¬!…B¡P(žpt]çµ×¾†m§°m›\.ƒ Æ'ÆØØØ ŸÏ£ë:íÖ ì”M½^Ç0 ò¹<ãcäóy¾þõ7iwÚ¼òÊ˸i—S§Ov ÃàâÅ ¼öú×® 4þ¦¸3ªtµB¡P(¾ì(1F¡P(Š'MÓ¨ mVÎJþvÓ.åòf‡\¯RF¡O¶¥3Ýd¼åÊÖJÅb7p†¼ýk¿J:N¼bTØ‘ânØ­lhߣÄ…B¡P<.(1F¡P( 5Ù%Žã‡ H¤ìNû%9£(R°û´ÉÝ·÷«g VÑPâ‹B¡P(W”£P(Š-ÄR²lýiŽ.4Ò†AÚ4º¡»ÜO#h…9ËÄÑ: ¤$–M´»<&Ånßnr\]×’ÿï—{)M©Pܹ]n–­ïþí¤ìЇq,H‰S…b×vÇ„~›Àk¢ üùŠ'ƒƒS”£P(Š-óFðï.]áßÏ^EC‚œeñÚè(ÿøQ&ÒiLíNÅøºŸi†¿ù*|ýÿôÜS¼6:†©ßíà&“É×^Ün¶øl½ÊT&ͱ\S [îã çÀnÕˆ„Äq·b’®kÄqÄíÛ·©Õjıì݃-ŸØeÛækº®111A©TR“cÅÃ4‘{mY'Â-m}ðo…âÁ!ƒ:Ò[Cb!•£P<!CÍÁVbŒB¡P(6'ñtW¤ý(¢á¼udŒÇá£Õu~4w›BÊâ›F0ßjÓ " ¶Éˆë`ëaS÷}æ[-b)i!í0Ä‹"Â8" f¾Ñ¦Fä-ƒ7!4bSó}[m�FÝ;@+ YjwhiÃd"ãÆ’?¿5Ç¿»t…ׯ†ùû33œ*fi‡·›-")J9Tœ¦Ðž¸°˜½&¤}af7æææø½ßû=nܸAE[ÛÅ“ÜÁí†aðÝï~—ï~÷»¤Óiõ0):š¦E¡Jö«xx})`1¶c(1F¡xrþ@‰1 …B¡Øsâþí©)^.óã¹þÏ>áúFƒ¹°Ä/—Öh!Å”Åß™çWLp»Ñäß^ºÌÕúÓÂ#"wž8æWoðÎíùžcòÓGys|”«õ:pù*Wëc®ÃÿðôSdL‹^¿É»‹‹l®aòòp™¯ ñ³Û 4ƒ€w—‰¤à>Æï_¾Ê¥jXJ*ŽÃ?<yšç*ô'8Œi7˜ÝÞsùòe~ðƒ°¸¸HE‰Ðr·¿†‡‡ùö·¿ã8躮"ÅC뛺íºy‰v¶E…â÷¤ê(ŠŽc …B±ç$¾†¬{«5b)Héï.,ñÇ×nQq^­ðã[·ù£ë79’vùÉí~>¿Äd6Ë‘ŒËß.¯ ÄHÞ_^æ?Ì^'cêœ+ùd­Ê¿¿r—‡Ê\X¯²Úñx¡Ra±ÕæƒåU~xíoŽóÃk7È[¿61Á‡«ë\©Öø•á!Î \ªÖ9‘ËñÕ‘ ,¯òWóKœ*ä9S,ðÑê:®®ðüPA哹Ã=†î6‚ Š"¢8B]1%ŽAFÑÖ¬ª„¡#ÈH@Ï“Æ÷}â8î}.¦Õj†Q/ *Fʘ\.G³Ù" CâX⺆¡'¡MqÜ\7 \×EÓ°öÇ1Íf“L&ƒiDQ´%oˆE1AÐjµÉå²[rÙH)ÙØØÀó<r¹š¦%ÂQ†š&дÍP®ååUr¹l·¼w»ƒã¤0MM½&ß÷©V«är9R){ób%¹ÍãkµÚhš`c£A:í’Éd¡aóÞlNã8fuu )»UªLÓL¶×j5LÓ¤PÈ?AbDÿº£B+@ˆ‘JQ(JŒQ( ÅÁ™ŸÿÛ{  AKF]—§Šyþvi••v‡ÿé…§9S(Ɉ?»y›+µ ~¹¼F'ŠøGgŽs"—Ãðç·æ‰¥ä/n/ãÇo™âïMåRµJ;ŒÐ…Æ·'p¶”瓵×61Ül4â˜HJ–Z®Öš¼1:ÂkcCT\›¹f‹?½9Ç™bž¯Ž ñã¹¼(æf£ÁDÚåÌå+c•~ÚOP’Ì!f·\2�ºk“=3‘wi^˜£½PEFïÓ…§± š×–iÍ."ÃxË>â8æúõܺu‹r¹D*•B×u\7Í… ©Õj‰øpìØ BlÛf~~ž I¥R¤R)1M“J¥Âúú:…B?þ˜“'OpæÌi—¸uë““SÌÏÏ344„®ë|üñÇlll066ÆÌÌ kkk”Ëer¹,ñ?abb‚f³‰”’\.‡a|òÉ'¼ôÒK´Z-Nœ8ï{ܸqƒL&Ã_ýÕ»¼õÖ[\½z•7n066ÆéÓ§ÙØØ@Ó4ÆÇÇ9þ<–e1;{•r¹ŒçyضÍÊÊ ÃÃC¬®®qæÌ|ßã³Ï.àyår™V«ÅÔÔµZL&C£Ñ`llŒ«W¯R*•ð< øôÓO9~ü8KKKèºNÇhšÆÜÜ'Ož$ŸÏ=1bŒ[Eå£8˜QQµ3…B¡Ä…B¡P<ìÉpºcÈq(Ù6¯ ñT©ÄËk $¶¦÷æåHA(%¢÷9Chˆþk=ã5–ÀÐ4BSqRQŒGü›K³üìö"“Ù ‘Œ0´î{G]‡ï:Á{KK¬z-þÍ¥þß+Wù__>GËm@ãÕá!VOx|²¶Î‡+ëüxn‘§où—/ŸÃ5 ´Š,OäýÜs²ºs»fK¢ëdµšãâyq'ûi^XÀË9¤¦K´®-[ÅÏói44 LÓDÊ®çI­V£Ñhàû>A0==ÍÅ‹—H¥R¸®KµZ¥Óéà8Ùl!F€ Èd2èºÁÚÚ:KKË¡qþüy\×eee…ññqòù<a2<<Ì|@§Óæøñ¤Ó.SSS,,,P.—ñ}Ÿ••,Ë"ŸÏóñÇS©T˜ŸŸÇ÷}�—˜žž&ŸÏQ(äY]M3>>ÎG}D½^gllŒ\.—xØ,//EõúétM6ê jµW®\áùçŸç•W^áÂ… †W®\!Š"jµív›F£ÁÊÊ ­V‹õõuJ¥###�,,,0>>ÎÜÜù|ž—_~ù óŠÙ:A~ð%ÙŠ=Z›jk`ŒR÷IñhÆ%Æ( …âQZFüã3§øÚèpw&³iÒ¦ÁnÍñ|eˆó«ëT›‰´ËT.ÃF“¿˜»ÍíBž‹ÕZ7‚s•®.óáÊŽ¡óÎíE6ü€ÿù…gø›ÅUÒ¦É[c\©Õ¹Vo‚èVdšk6yºTd(eóÿ\ºÊº×a¾ÕAצ&¸Ýjòy­†A; y}l”šçñƒ7™­×ðãW w÷Lì…T¬43G'ét:Ôj5<Ïë +’j­ÆJ½z‡ÅbI±X ›ÍB„ MLL†µZv»ÍØØ(ívMŒŒ !¦ià8BˆD¸‰ãˆ\.G&“¦P(`Û6¹\–ååeŽ=Ц £û¹B!O*eS,™˜˜Àó:”J% ÃÀ0t*• ¹\–õõ*ŽãÏç±m›ÑÑ4M§Réz¬,//säÈ¢(ì 69&&Æ)•Št:ÊåÙlŽl6C¥Rauu•ééiÚí6…BÏóI9(òäó9 CG×SŒ1??OÇLLŒÓl¶ C§X,öB¥t\×¥X,&%È'E¥R&ŠB2™,Ùl7dëË4áí š¦ÝEW¥¼oBÇ1QF¤jkZ€¬ü}[CÞwß1èñ¹ë~v³¤ÓÓÝ×½|~3ö¡}þŽ÷c·ÏßëùÉ/øù‡ô}B%ðU( ÅCÒXºy¶¥;ÞhôɆäÍñ–:mþfa…wWH›ß9z„3¥"–¡±æuøéíy>[¯uK` ‰&¯p«Ñâùy>^]#g™|kjœ1×ååá ?_Xä?Ì^Ã5 ºN/¦¦!¥äÏnÞ&ˆc‚(æ«£C<S*°ÒépªXàý•5ÚQÈ?<u†¹V›wæ—H²†Éß9:IÆ´ÔdíFð®+ˆ²kÄjšNÊN‘Íf9{öl&ðÙ… ¬ÿ`O‹Åu]Nœ8¾iKzù_º9Ov‘Ú™_¥û™ÚÐÍåÒ?þ\.ÇÌÌôƒ>—;Óû¼¤\.vÛo¯-?ûì3)p¶&€¼6¥R‘‰‰ñ-ûššbrr T*•äô…ÌÌezzjàœwVùéçµBcll”Ñё߷¢ÃèèÈ–óú²1žçqíÚ5Ž?®Ê¤+)q,ñ|Ÿv§C$ÍC#Æ|ѹ÷¡8Vº®£kš®#z 7RÈû4¤”ÝœgQDÜt¿ü2•Ëè!]Yí`Š(1F¡P(ž¤Á¥o õ ¹mYC p oNNp¢çD>·ÍÍfùÞÉã¼62B; )X3¹EÛâéR‰ßyú,· \ÓÂÖ46‚€ãù,EÛâ¿9yœ—†J´£ˆŒip¦XÀ2t¾{|š‡ÊqLÎ2Ù –Íãð['¦ye¸B#q él†×!oYü÷Ob±ÕÆÖ5N²ü“§Nq³Ñ –’¼eqºXè…L©ÉÜ ÁºUØû½NÛ¶iµ»¡2õz=Iô;77×kPbW³{û$ú‹TºÙM,é£ëÐصÙMôx÷ ÿ=_&!åÁL~cÚí6Ÿþ9SSS躮ÄÅ###–Wjdó똆q_ß½uyWï—½±y°¿îz+ˆ­}n/ɰÜ}Ôß|mŸùûà÷ß‹ãƒØãøÅ€oEòZ¯Â¡n¤]‹L:Eʲ»Ï{ïÝw;nK)‰¥$ C<ßÇóÂX…уcÄÀÙí²–œéÃÖGz•亡±JŒyhúÁÈ$JŒQ(Š'F‰‘Ä€½•'¡íÃ…�K×9[*òT©¸«)dj‚ÉLš#™Lbô&G7xªXàL±°Í@ìþ5â »£;Œ­#™4G2é-‡Óÿî¬i1‘Θ˜1´©ñL©ÄÓ¥ž©*bNrœ,äÎG*·ò} Ù½­ê( Ñ4‘$¸íçu±,‹‰Z…êÊ®BÌvÑ¡?ÉîW5ܾßD»²¢õ¼¤¶¶×Í Kw³Ÿí•жKß[ça �J\¸³sùòe®]»Æ•+W8{ö¬º(ŠG†ç…|ry冡?¨•òžˆ"wFÄn È@~4­û‘ô#b@ü”;Bh;ú@)ºùÛäÏÃm}¥Ø½—ÛXlùnÏ¡uEfÛ2Ñ„ £¤ê-Ýürٌɉ£y&†r8N Ã0öS±vˆGQÒîxtB ÓÁDÇ蟜ÜS›ÚûöÈ;¨K»ŒobÀÝGÆqWlbwuk»Ò»»É;+]º®“ɤ»wF‚”ñ@UA5Æ<.ã´c …≙u‹ä—†2Þ&•ì>öï4{6Á½Þ%îøß@8‰¼Óç¶Z+›¯i»î©í܇bö50vµ7z³”1F£—d}}F£eY,.-õÊXïnÑFQÄêê*qã8N’$wtt”Z­F½^'“ÉÉd’ÐÇq°m»7éЈ¢ˆjµÊêê*…BF£‰”03s”0 ñ}?É)ÓÍc ëz¯<õ¦ðÒétX\\IJ¬¤õÈÈÈ@ÉêÕj•8Ž1 ƒl6C¹\NªÔEõîU¿D¸®ëø¾mÛʃHñH"ÉFÓîwÐÐJ¹”Ú¦ ³§0Ð ‰=¡C ¾ã„;ñ<Ùöº”Ý™Xö¼jäÎ`» ¥Dxµì)-õBŸ5 C£RÎQ®1tzmƒ¥¥u:¾OK SǶº}tËit:aD!cbZš¦%ÏûÝxTÊ8&ˆB:~Œž*¡™4!xàJ½‹Ól6Øh4pR)Â(BZOlŠ“Ð¨±±±Þ7ö=nD/LW×tRN–(Šèt:x^ˆa8)Ë2·Œ÷’ƒKq°(1F¡P(ž´‰¸”]ϘžVÑUd¯’¼ã绫_ñS–w-üì%ËHvô ¼;ÜÇL&K©T"Š»ÂJ«Õ¢Ýn“Ëå|ÿŽIû¥ª=Ï£V«áû>š¦%ešËå2kkk,,,àºnb$Z–E³Ù$“É$Õ…Â0¤Z­öòÎèDQÄòò2KKKhš†eYضM»Ý&›Í266–ä°,+©N”Ë刢ˆt:M½^Çu]šÍ&žç%¹ºÇì'ùiGÇ\»v›7o2==ÍÇL*•âèÑ£êâ(IŸùÅû„(Ƀ5){#;G¼îkÉH}ÇqSl&±JÆÙ¾GŒ –]o˜¤ï–[Gb¹í3;žQ$šÜ&Ä 8€hšA©Xàø±)¿ƒ”’ññ –mqýÆ<Apdl˜á¡<ÁíÅU–WÖÙhÆ´¼€lƒyïc˜”‚Xj˜Z7Gœ¼Ãâì§(Ž˜»}›«W¯²±±Áðð0aÝ1Iã8)~ó73©®÷ è…ÝÅ‚lï%Q,i4[ܸqƒµµ5r¹,GŽLP,1M¤¤ãy\¿~ÉÉIÒé´zˆ•£P(ŠG£ÄH¢8¢æ”,_J6|‚mcô\—ÛQ€cX{1D±D×÷ë4Ð\bÉR«Íã`hÚ¾vS$cV:m2¦…k˜ìåÐÄacë:šÐÔtúFì~´;æçç™96ƒaIÅ¡8Ž©V«Ìo SÚ¹ÿ0 ‚�˲’ Ó41 ƒF£ã8�‰Ó÷héÿ¯iÙl·S¿<¶çy!H§Ó 'ž1¶mãºnb�÷½d„¤R)òù<¦ia’Éd0M³[zZëºôû¾e™X–òò>xt]çôéÓÌÌÌ ¥ì†:(¯Å“2D†õr‚ÈP›nhÜ·_O]¶ˆ(½ð$Ù]ÎØž¹edÞ[ —[$¤E•M­]Ó®”ˆŸÙËWŸé£GÉç3˜–”’¡J–å¥:C#cÔj b {^%÷šçEr0Ézû×¶R©$‹ ¶m£ëaQ.—±l<Ä¥ïÑ9x}„ÄqL³Ùä½÷Þ#ŸÏséÒE²ÙL2¾ùAÀ¥K—ØØØàÖ­[¼ýöÛ*„I‰1 …B¡x4³oˆ%|¼ºÆccøQÌr»C,¡êûä-‹wø•‘ÚaDª7‘m…>ºÐw]ª~À¥j“ù,A€Žf3qL' q ƒ•އ­k¬u<†œ�)Ý`ÝëÆ ëÃŽÍùµu®Õ7xk|œùV‹‚máè:¦¦ÑCb`Í (§,Úaˆ¥iÜj6Yl­r¦PÄ1u‚(f4í`j `¡Õ!¥i¬vÚhšÆ‰\Žv±îyä-‹”nP|жMÕóp ƒõŽÇHÚÅ5Œ'·a좘é®I+øà³ó\úü†aàyº®£é-±‡2hBvUºmŽì}Ä4ÍÄCƲ,,Ë"—Ëáy¶m“Ïç ÃnÙèþçú9t]'ŸÏãºn×°ô}4MGÓ42™ ©T*1T'캮oqsO¥R½ÊG]#4 CÒé4RÊ^)k­çI†®ë(ƒõÑo# Åaê"¥do‘bÄ[›“æm¯$jƦ·‹Ø–4¤ëÒëŒåæe_øônÙ+ùK’IFö˜^/rÛ9ìxº)¼Ä=Ù-_#Å€0!D7ÔT×ôîáŽó–’8îþH 2î…ßlËçuJ¶6õî"Œçy´ÛmLÓL’‹ëº²{m‡‡‡1-]×ðJ40}!¡N‚ ØÅÛF&ý¦®ëضµåFQÀ/~ñ Î;§že%Æ( …âÑ!ˆ¥d¥í!?ŠXétXíx2ÆÐ`±í±îyÌ5›XšÎR»Ãñ\ŽËõß<r„HJ:qÈÕÍ0À14ü8fÂu¸T­’3-ÛªžÏ¨ëp³Ñ `YŒ¹iÞ]Z"НOŒɘ ßg2“f±Õ¦áG\ª®0™IÓ †]‡÷WV8žËòñê ÃNŠc¹ MÕŽGÕõ¹Ñð eŒ©Ã°“æ/—s~ÌR»”?й±ÑàHÆe¶¶ÁxÚáÕ5ΖŠ\ÝØ`ÂMãEyÛÂ5Œ^Ø–�ùdW'ˆ:a­0u:^‡êò 2(9­é¸GK˜®Eûæ*2ŠwìCÓ´-.Ñ}ï�Û¶·ü'tprnš›qð}Oš»1bu]ÇuÝ]_w]gǤJ 1 …bsºÛÏﲿ âc¤Ü+·_ÎPvCÝœ0ƒ9>$½Iþf¿Úö´‚Íñjs·ÝÌjbS@Ù KÛÎL Cm 6âNÊÔæµÉyv÷! K+ äÔ™Ó %†©qûö*¾ç…!ó +LŒ k×n.áù>¶¥Ó=êûu¹}ø%ž›Í&sssT*Z­aâ8V¯ TµºŽ®‹<ÏÛ’ðþ‹¢ë:•JeK>~5¥L&ÃW¾ò•Þ‚‡I±XHr¯õó´}ë[ߢ\.«‡Y‰1 …B¡x”ÄB)ñ¢ˆNâE#®Ëû+«dLK×Yëx\X¯s$ãÒ FÜ×66ðãKd ‹…V‹Élš‚mpµÞâh&M'Œ¹Õ¨òÊÐ0?mÌ“³r¬û>AH&Ø,M§œ²ˆ%غNÁ²9¿V¥˜BÃ"®n4˜ÊféD!9Ë¢æÍfp “vâ:±Œùd½JÞ28™Ï"¥d&“åƒÕRšÎPÊÁéyé4ü´aÒ bn7ÛØºÁ‡+kÉd(¦,Þ]XfÈIQHÙèr üç“ÜN:ÍëË]s/Š»BÌàjjѺµŽGawµö.D‘;ýwööÃI”óO˜•¦xxjÌ]·?Ø* ôšÁv){"ÌÞårº^$qRň$§½$¾Ú^zßì^ ˆe’vÇwöòcI)“&¹Wr~¹)ò9Xªº7vÄ’Z­ÉÅK×(sèºN«Ùbaq•(Š–Wk¬×›hBà!RÆ€~hoÿÞ¥ÓéÄ#&›Í}ïƒ0 qœabÛ6©TjÓsæC?¬w³-‰^È®ƒ®ws×èz?tJO"*• Åb1©f¨PbŒB¡P(!5?ä?Í^'o›¤tÅV‹ÀC &&mèBK†ºùWD7ÜÈï0šNñW‹KXBã;ÓGÐ…ÆXÚa®Ù"k¤ WÖ8‘Ïs³Ùàr­ŽchØ†Ž††Db !‘ i!9Ë$eŒ8)2¦Ž.tþfi™r*…¥ël]#kYÜj´sj¾®éHàz£‰£ l]Ç1 µL~¹²ÂÉ|f'àT1ÇOo/ðt©ÈÕúF/Üêáº9?ô Ç®ñØ=êÙê[ܬ{«¢Q÷šièWwxÈ%¡Šý&L Å#Õmî”p…­aAbÀ»e³HõV}%–r—†Ý-»ûêÈ­#Y/„H|nð d?ïöD¾ñnÏXßÓfÛq&¢L·Z“„,,¬²¶Vë…ìDÝrÏ=‚0" £¤:”ØötHÙ;„R`í’uøA÷I»UBì†õšd2F’t¾¿½ÿ™) )”£P(Š/bLè:ÿÝ™ý…04 ’’¯¢Ï”J á•¡áÍAøµ#ãÝÕ8!xk|œXÆ<S*!�SÓˆ¤4Ζ 8¦ÁoLO!è&ù=W)v]®è½r›:ð\¥Œ”’#¹4Q,ÑèBã™R‰ä·ŽÏl BCðí©ÉÄØíË'¦¦1á�� �IDAT¡_ݲ:.€™|6Y]½íxªXD‚ŠcóÂP©·í‰õˆÑ4'Nðúë¯sûöm¢(JÊ:ws%ì–°çEÔ{M×u^}õU2™ŒJ¸ªP(ž(ᥟ |W79 ]ˆ EJdâå÷úؾâÑ•6ú^1[¥oöÄ~7Ñdz ,ýJM›BŠØq|RöòÅÈÍ>pÒƒ¥¢{ùezÇ.·)3I$žïwË0ýTú[¼:Žý‹È»]õ~)çÝÊ{†ƒÝ‹`rç÷>:1¸” ­Ä…B¡Prt!з Ø÷:š`»Kq,»BÏh:…¥kû–ž,¿ÙUv6»—vcüCDS �=z”ßýÝßí–ç IÚÅ`Ý^Í¡ŸtwzzzÏÜ, ŃžK)ÕÅPìÄWö… ¹™˜·Ÿde›÷Ë–ñN”’îWJúzyX6ß&{åšã$‹tE!{ž¬»Ë¢'uh‰83P;IþÛ;†^bÿx ¹oÿÿAµ£V%]ydw1gó{%ÝÚšèîCëeÞ)Éä|¤† v»Í¥K—'“É$Uü<Ï#Š¢$¡|?¹»¦iÊ{D¡Ä…B¡P<¾èš`2ã&ÉÝ!`||œÑÑÑûÞK¿*‘š$+&Iå—8&Ž»“S…â�Z^R Iìxe°uâÜBß71˜Kf· v›e§ãž—J$%q¼)”@O„]QfËqôrÅ1àiÒl´%DʾïÊf²Þþ÷Ų[õ(îUL¬aÝÄ´¾3¸Ÿ3F“½$ýp% ”½ðgÑKƒÜ–z×£úôà’ï ºÕòÞ}÷]f¦%ùSçÿgïÍ‚$»îóÎß9wÍ¥²2««z_ª»±@$h"i‘”†¶¬±fB!YŠ˜p8&Âáe†Š¡,Sv„Í šy°Â/~r8b&‡g(CâÈ#)(‚¶( +Et赺kËõ®çÌÃ]òfVV£¨ê®ÏG6ª*—›7Ï=÷Üs¾ûý¿¯Fš¦ôú}Z­£áÑh„R óí6gÏžãÈ‘ÃF]bpÇaȃ]™�™IÌÁFQZdîìûñFL£š±Ç`ï ¨üŸÜþX¦ UÖ%K2ñR=¹ù fgLh”Ö!£Å–——†¾U…Œ.b²s©Î<½T¡Ì©l{s]1"<7ðÕrj³OQB焌žü>ùvd¾-INú(Ðr{]ܰÉö?ÿ©w7ÀPJɱcÇR2 iµZAHŒˆ¢˜$N°m‡4„áÊ KKK,--šëŸÁ‡!c Æ>/e<êgÇ q*‡(¤ì{µLÖÃÃÜýŽÈ˜ˆ™"VÄÄP9&*ƒæÁRx¶(­Qª(ÒcBDgþjÕ+U+‚²ìG–c‚¤ZBUl_kAŠ.=bT• ©8øNªX²ÿü“¨¼¦P÷LN"÷o‘¹¢§š:U”PéÝÍ0ô}Ÿ/|á %I›)6ÉS›@ˆœ*Ò¥ý\-c¼Î î c``````@¥¬\ G)J'ÕÛ*È«·D)#­)ó;§w°zĨ# ö¶¤MëÙ¿WÓ¬‹°¡L¥¢ÇåB ÒâŪø‘:™I~áß•m»ð‰Ió‰)KæCS)‡R¢¤WÔ„‘oÅpXÉY!*aPhtfæ›ï¦Ì÷³(ŸBé’zº0I£µµkå­–eÝ–wYñÚƒp ©úµ|4`Èúݘ·_íÒRƾ³” UNƒ°A}ÎÆõdùØvìí&“·3Ù4Þ4w}\%}‡Ö¢|NTX=sDÕ¥oVšT(c&u‹—¾0…Inž^z¬„A£•)dL)_(U7j&?¯êQœmC”×¥N©¼ dþýµ%³¿Ç×1Ñjåvy,/ÊÅDÆwõ›Ìú¹ã­Ïü;߆ØÒ{vÜ×rÅ”ÁG†Œ1000000 ‰*-5ò¥ä}§òq­5:™,þOÓ”8Ž‘R2ð<¥ZkjµÚDĨÊo g±Ú²¬ÝO’Û¶ËT§ê{Ò4%I¤”¸®kîì=ù2-o©/TÈ“±¸DÏ|oe#mZI3RR½•t.ˆ*ÄŒÈMwe¡LAB„*ì³Ç”Rã%=eêËd)ÑY òÒ"]¡*¤½¨>‘³DRe„Lñ}…Î ·«ªËìå»K0ø¾‡çyH)>BýÒTÑï÷ !cȃŠÌÓÜ ŸL‹ñ´{ëäM¨#Ö¢5êÔ9ªkåÔ])Åêê—/_¦V«‘$IIº¸®Ë‘#‡ËØQ˲X__GJIÅ� ‡#lÛ¢ÛíÒl6éõz´Ûmâ8æÐ¡Côz=Ò4%MSlÛæÔ©“†Œ100ØýE0”¾*Õ…ñäH˜ýWU^[}ØŽÔ)˜•‚)J“Ô˜,Qz*3[1×é" c\)R„hBj„Ξ/ˆ”¬4)Sͨê~Šñ÷,ÿ`œ|E¬vu7ò«CA •l”Èù©Ü;Lg%K²ÒÓQ×åç~hÂ"ó‚ÉR”ä»&l޽@'YsHŽ„…†Ä³Ò±°,›4Œ2Ô1Gq4#L†Ã>Žmãyþ¶Z…bE¯ñ\úIÏsŸ>\>!ï¼ó.W¯^Á÷kœ={– .`YI’à86£Ñˆ Ξ=Ë`0À¶m67»\¼øçÏŸçå—_¦Ñh0??Ï`0`}}ƒ¥¥%^|ñ%†Ã!išrèÐ!šÍ&'Ož0ÇÐÀÀ`)™b±/&üN ¡H"*ÓŠò²1•²´·¹.U1b\ªT)-*>ªˆ‡."¤äéEY©¹¢FP1™:¦ØDª§• 6¤ü^¿¯ÂŒæVm’ÇB)ƒÔÈ|[Jd¿——˜ü³²ÍŠmÈ­¬ŠKVAØË–ÆÊJÈüe gúXH)¯Ò°>Hù8âù !£XÑ®ÛÜ{Äa±)9·hñàQÇfÚÌÀ1ww±¡Qv» .½ƒß^D,,!¤FY)³4 !©¢²nõ˜Kjo„ÌзVó°m‹F£Æõëר×}l;›z´Z-æççYXXÀ¶m”R\»v !$Žã°¶¶FEœ>}ŠF£N‡X–Í¡C.]z—8ñ<ß÷ËɶÁïÆœÒ`_÷OʘéBQ"*¹ªBÄž/UÒBTù ÄAi¤[ÄY—ž.Zƒ§Ýi¡ =Lfœ›'Q3…JE•-…Li\G¹çWFÄl-J­ºªL¤Få¿ 1Ebˆ©²§œ”)“”rr'SðLXøî>Á¡«««\ºt‰v»Ïóð}Ÿ7näŠÊSlnn"¥¤ßïcYsssܸqƒ¥¥%FyÍÚK±æÏÞ ø¿Ÿïq³Ÿ¢´ä|Êão>VÃuúƈv]pzÁ1'¢!c >ª„Ls¼„x÷]úíaÝ%ö-R­ÑžíÕp<Ys¹&7x>y·¦SïL,¢}ßçÁäþûïx_ϘãÇÓn·±,›¥¥.?øÁ¸çžó|ìc!¥äôéÓ!p‡§žzŠ8μd,ËF)CÆ|P˜|¦iÊh4¢Ñh˜ãj°ß†È²œhÒX7K0Òj\ 4V.L‘Œš‰Hv]’rB£”Ê+GÇÞ-eœ{%UI‰ÂÀ·`CÆBG1A$鱟Mnš;ÄÓyuR5'‰’Š©è*DÈö-gj´`¬®)ÎÉ"ÆÜŠ2Øz¼M½7ãIQ"ë8.««k4)ï½w)/‡ÕÔë úý~YV;?ßââÅw8yò/^äܹsÌÍÍÝ‘®u½›&+@%iIj.øŽähK²>Pœ^0§ !c >ª«aZCˆû¢7?OœÆ¬D×xã\ŸÖ…~ìãQcÞêd­Æ¡ÃÇ86lã9Þ„2(eÞZkšÍæÄ$yz‘íy®ëÐh48zô0BˆÒÈ×qÆw-ËÂ÷)—B8fÑþÂp8ä»ßý.ŸûÜçpsl î>S–²ädLa€+Êç3>AiMª2RfìÁRŒ{•l%1Yè”o¥4íUZ•ê›1ß3vk) Í¥˜ô±Ñ9ÓSú·ˆÌ4wˆÊv«¤Ðòh²”h “¤ÇƼºð†A$åØ@XëÜô·(y•Ò¨r_÷†Œñ<ååejµ:¾ïã8F£ôB”ª™z½N½^çèÑ£(•¢”*¯?{ KÂ#'ž»hg¦ÍJóꥀóK.¾“pm-àÉ{çþ™”ûÆÿªD¥²œ3ü$ù†Œ1000000(çÙ½~ÕÁ€@H67n°Öx[_ágüe<åÑ©/pϱ±=Kú&‚÷8團ëW'^Õß ¦XØLO¸Š¿-K`YrË6¦_7ýYÛ=>ëïêk§›H<™Aì”Rܸqƒ••VVV8~ü¸iƒ»>.d‰ÎÕ EùPa®[%cÊHêª:F4ÌXÙ2IÄ0áá¢*ÆÓdL9–R$'&¼Åø¥**œj2Ò8ÖºJ UŸ¯>¢g(x˜ ç9Ù#Šñ3'x”ÒIÞ^…%Í´mïŒÙe¸®ËáÙ—ÙÜ\vC`~~>?â–¤Áâââ{\[ðä9Ÿ†+xíJD€-5¯^QwŸº·ÉbÓ:ا‘ÖÄqL¿ßgss“n·Kšf†ý¶mÓhÌ1??OǼþúë¼ù曼û®®2¨×ë:tˆÓ§Osÿý÷óØc±°p°åB†Œ1000000@�©J¹øÎ_òü„R ¢n±þ€Ãâºçϳmp²µÀ|뽤Ï_òGzsj.l!=”Rôz= S½lnnâ8ív›~¿O·Û¥ÕjQ¯×QJ•Ö…BRŠ~¿O¿ß§ÑhRJ:TÞaÓZ—ñÖE$ö´ébš¦ôz=,Ë"Š"Â0¤Óé0p]ß÷¹yó&N‡0 év»!p]—N§3¡Ê1ØÛɺ֚õõu®^½Ê`00‰!û¦oRÆMgD‰ÒL¤ž2©Òåï…J•‡3^&Ș±aïØ`W”ê=5bâ•óŠÙÚïÑz’øÑ³©‘“Û‘×UâZŠ1‘S5–yªRõ#²R&½g$Ç´iæµNÀû%7ÝiX�¶<xÜãüa·‹ž ß‘yL÷Á“$áʕ˼òÊË£ƒÁ€••â8²DE¥4o¼ù&ï½w‰v»ƒëº[®åÅ|àwÞáÙgŸàñÇç‹_ü">ú¨!c .Ò4å½+—êAAÓæfÍãÓÃû¹çнôF=ÚÍnF«<{ù¿pá̀όÎâ´ìmU)I’0 ØÜÜ,eàÃáÏóØØØ`uu×uÑZÓjµp‡ ð}¥ƒÁ€7n”)Lý~ŸN§Ãææ&h­q×u ‚€F£Á¡C‡J´ëº!ˆã˜(ŠÊ&Èaˆçy ‡C¢(b4Ç1Zkêõ:sss¥œÝ`ï¼?úÑxóÍ7±m›^x¡,300¸;rìCA(=6è­.:/1Jõ˜X)ŸÈ$ÅÊ[0& Âc’ˆ“ž4ùïºJèˆ)åÊ-H«rJ•Ê Ë\]õ†)M /§­ž1Šr¤âŸ,AÅŸ&7ò%…tË}ÝqDåîÉmÜv$8î,ªFÏL}:Hs‹Ë—¯ðãÿ×±óøqßlnnòüóßçÒåË–´üZY¶ü~xá…xá…xüñÇùÕ_ýUNœ8XÉŠ†Œ1000000ȦÈRœÒD§ZzÈÈÆ›\J/Ñ]Ù�¯õ^cÕîq}°‚Zm0ì-rݾÆòás“ÓÇÜï%I’$¡ÝnÓëõHÓ¬_Q5§N"Š"lÛžP¼f®µZ hµZ¬¯¯—D‹)eI°H) Ã$I&ïÜJ‰mÛÄqŒeY æææp‡(в ‘mO;…b§øƒ½‡”’x€x`¢ÜýÁq¬Œ)JˆŠ´¤*™’êq‰’šd*}ylú;±`ÕÕR¤qÉ’.Ê•&„Eæ·"Dc]¼Æ9S%m s_QUȈJ¦þ_e TI×L«c²mIDFé"U©š¨¤K³_Qm×=8½‹ëÂ^ø½Ü}2ä`އZkF£!Ø–ƒc;X–Å…‹oóÝ¿x­Çg‹¶2òævÛú…^àÅ_äïü¿ÃÏþìÏ2ÆÀÀÀÀ`› ©Y\|´ŽçT ýA^q¶ïRK|ZÙ„}(Ž`”&ÙÝX©i*wá4"µXkô!¾HkØâ¸hLL¾Ò4%Ié÷û?~œz½ŽeYôz=Ž=JE$IB³Ù,‰“z½^–*u:™\¹Ñh09qâ¶m377‡çy%©cYVùž,ei<O’¤$bZ­®ë²°°ÀúúzYÞtèÐ!Z­–e•*×uñ<Ïtó;yFUH´&#*AÇb_¶½ÁV.&3ë÷ëDU1Ç-/üdÒ w"©(cf¨K²ÔèqI’Òc%KY~¤E-­EFŒÈ¢éqŒuF„K,K ¥À¶,ê5—šïàºÒ²¨û6¶-ÙØ±º1d£Dié3ÑCuùc’¦b¼[ôh•c’!óHëüA•ç( @’3IbWÏ„±]ÎØ,vZÝ86¥¼vL“³Î‡»ŽLeLaЛ±e}ú¯¼Ìk¯½6îmºÒÑ> ”Rü›óoX]]å—ù— c````0uArlp]Lc컇-þê±ÏÅ1J+D5Õ T•ù¤Zi…@`Ë,^Úu½‰I””’N§SþÝhŒ‰šZ­†ïûe‚Åv“]!F£|ou¾ïãg‘JèYfÛ¶9räÈ–ï\;iO†¸“ä̾€ë"ò«!e¦ÆFÍD”u‘r”/"¦0õ-«åñð¨f/$+&èÅgdc³Þf-®(ÚM#‡çi4|j¾KÍwiÔ<ÏÎ|¸l‰ï9x®…mK,iá:– F!ÝAÄF7àÆÚ€õnÀz7`8  Qœ’$)išïEÕXlbÊ”< e%ú»ZêU1’g÷ϦñF»Ý.ׯ_Dz¬’\‚×uév»DQL«ÕÂó\ƒ!¶öýþ€ZÍg0°´´XÞ ØKÞiiš–ÊâšVÜÄ8¨R–7O�^yå^ýõ-ž0E_ÿ°‰JßøÆ7�!cȃ;·º@4š¤K‡±77M{ì»E¡’Fmކ?iºXL’D•ZYZT}>Èb»j¹ xcøj`pûH—#šM„e™Æ`’û/ŠÇÞ1…gLª™ðaQªx½˜0ÔU#í6cT}—üPñ]©4º|©@0ÂÓ]"áÜ‘“9Öa¡=‡ë8X¶…eI¤ˆªúCÀóó5Ž“+^òò«0J¸¹ÑçÊJŸw¯lrm¥ÇzoHkÒT‘¦ UFwW}LtiØ›¥'em µÈʶdfê;Áœä¤Î^ÚRJ®_¿N­V#Š"æææÈz½Á•+W8|ø0++׉ã­5¶m3 ‘R–eµµZFüï%R$ %I‚ëºÄqœ§ eþfQÑn·,!cÛ6G¥Ùlòƒü€W_}uËõ:KS(!©ÕjšüúÆ7¾Á¡C‡ö}É’!c î,Û&iµˆï¹ëÊeDPÜeÈ,›Y1qÔÅ„0¡¦92^¶ˆ’¨¹=rf7ï8š»úû}q/&—úÜUuŒ”hß'¾÷^ä|;ûû#["öÁ 4¤yT³ª$*¥šœ|©¤iò²%56ð%+ËÕ‘3÷y)z€‚FݧÕpi4\æç|‚ !ˆÒD‘*Ew²²6,½W¤Ö$*euuÍõ¼õ£·ñ\¿æÑškÒYh³´ØáèÑ#>¼ÈÜ\Ë’ tYb¤«N1"«&ò|‹c‡[>4ÇÃ÷!ŠR‚0a0Šè÷CV7FÜXrýfëC†Ãˆ4U Àη¡‹ä¦¼=„©«¾7¢ôÑ™e&¼[ׂF£Áã?N’$8ŽS–¡Ú¶ÍéÓ'q—4MÈ$I"SIå¯7o®ÒjÍoQpìÒ4ÅuÝ<æ¹Á`0"I2ϲ0Œ‰ãôÀ’1EÉqaÌ^”ˆíZM’–,÷?,þí¿ý·ÜÿýûÚÔ×1wèB„ea5›$<B´¹ûÒKS®d°O`9`9‚(¨”ûÜÆSH°lA¦´7 9ƒ;6ºŽ{á~%&"§L\ïö®yá#’|ìaÜZ-7‚5ço¥S•ÉHBj˜ìgaâ[¨U2µH®QYz`YוxŽëZØ–M«éÒnÕ¨Õ\:­õšC½fSóm\Gâ:’8ÉT(IªP©âõ·oòŸ¿s•VK2¢F%1a1�ëpUÜÀ±-<ߣÙlКkÒnÏqøÈKK‡XèÌãû.õz Û¶ÇdCNY–À²ÀÅ¢î;å‚Y)E+Â(a0ŠéöCºý€k7z¬m¬oˆã˜0ÌÊ›´Rc3_-Ñ•¾/JUÑÞô7¥a¢µ¦V«•ßQNŽY¬r½^Ëã•Uyý³,‹Ã‡—z½>®ëbY²4u/^kÛÙrºjŸµSŒçy%7“*'] ûEÑ„J¦:‡´¬ƒ}^Z–ÅóÏ?_~Ÿâ;OÙ¶DiºüûÿïùêW¿jÈCÈdé2,"úÙ/’œ<…ûúkX×®e–ò>ÙÌ¥n>y)ó%Ç¯ßæÆê–íM½N†‚bÆÂAÜbÆ«Š÷ÝÞm}F.kžÞçYmùŒ]\ؼßöŠçK)6šT+HR@ —TkHÓq$¨Ø2¿¿¥óû=¿Ã5ĶåýÅd°¨KOÓ„úœÍ}¶ ’¬‘Åm¬uv7k~Á¡HSS*d°÷ÈJ&&½ö/“Ýÿ×® ÙâݤÂB‹©ä1E6Ýr >QßìÉMÇ¥D;NøÀ¨ûîÇi6±,)²2sW›:÷‰A£t5òYb[dåB2#±¤-±- KJ\ϱ-:ó>‡—æ8Ô©st±I«éãçþ-ÙÀ¬P:…4Í—kh™Z#„ÅÊzKʼÏW8¾‰øë|µ&Œa³±ÑÍæR"- DZé´[œ<u„sgO³´´H£QÇu]\7SåMlY( <ÏÂu-æG—eÿNÒ”þ0äÚJKW»üø›\»Ñ+¯•jŠ,ÍJ¾DÙÆ»Ýë”Rôz=úý>¶mS«e„Kh­óŸãùÙ¡C‹t»›ÄqR>fÛ6JeÄ’ç¹4›™‘¼mÛe2 eYÌÍÍqýúõòûÅqŒ”ãr›F£QÃû¾O„aH­V£ÓéP«e¤X¯×c0EB\×AA«Õ*IŸƒŠþð‡\¸pa‹/Ü,Òf7ñ /ðòË/óè£2ÆÀÀÀÀ2Ûó¶Mòø y4» €?ƒý³Î*–8>™¥âÆææÄÄr7È•CÊd}ï–+Å,—C‚;§ßg17kq—m|„¦ܑє§ÀÒÀÙsx¿ñ¿�ý»ô  ¤À²mlÇÁsœ,U,_|›3xò)5&`t®tñm‡f³Æb§Nk®ÆÒBƒfÓÃ÷l<϶$®K©fÈCƒ²¶ ©JPq…8«ÝÞ-Q† aÓžob[àØ‚(®˜åÉNZW³gÁTe*š4IX‰bn®®óÚk?Æ÷=êõ:¾ï²°Ðâø±#œ>u‚…C¼\dLn$I’'¥F³yöiª˜ojšçxNÊúæˆ L²²*U|ÿ,HIçž1J妿»<²,‹N§ÃÜÜ\N$eÉyF£ô+IÓ4WhdÆÕŽc#¥dÏIKÅw. å'I¥LS”ÂTÉá‚Xp]·l»bŠç‹Ïp‡N§S*bÆŸ!°íƒïåô­o}«l÷Y*Æâ±B1óÕ¯~Û¶ù×ÿú_Óëõ>Ôgÿñÿ±!c ˜ÉÊü®‹ÎgS…Êb'érvw“3Á6000øÉ†`\¤¥UÿLÂ÷–Ou8wÏYÚó j¾E³ááû6¶“•9¶Ä²s剨\oµš(Ë)Ó–”&Iâ8f4Š GôûCº›}ÖÖ»ÜX]çúõ5Vn®2Œxྒྷü¿þß!eö¥Ê¤b,\n½…™^ü*@§™'ŽF£õõ.¶mqõê .\¸Â‹µ×8³|‚ûî[Æ’²$'Šífj‘¸ü>Q¡”Ê|YdVö£QI£4Jh¡RVb°§Qíz_Ïóð<o¢=¶ëçÙk< åªÚ®úûvÊr>·Í¾ïÛn_ŠsÐuÝmöíàbmm_|ñ}¿S•ÈÊ|}Nó•¯|…õ¯þÕ‡"d^xáÖÖÖXXX0dŒA˶‘zrâ´“ ƒÁn,V͵æÖhÔ\ž|â,>tÏu¤EÊØü6[D¦$©F«Ìë%NR’$S¶ÄqÂp8b4 èõ‡¬¯wYßèråê ®]_çÊÕ¬­oÒë £˜T)@g‘Ôž`XÂ.•6Zi@¯•¤¥I‚f’P˜¥L(<P’$%IFŒ†#º¶Ks®ÎÆf¡q„!q^>$1 q×u²rkÏ¥Ý>„çº(å©S¬Ì#FåÜ”¤^ÜWºÛýPÌ<?ª¿Ïš£í&Q²Ý¶t^ªxPýœ^z饙„KµoÏÅqLüÞïý_ýáê\é�� �IDATêW9yò$¿ñ¿ÁïýÞï±9#‰TTj;…ؾ½øâ÷ùÙ¿ú³YY¡ØýÍ1ûn2ü~dŒI¹00000Ø­…ž¹žì Ýȼ‰’TÎ|–’PPAÄÆF«×nðöÛ—xçÒUÞyç ë›}ú½!Af欹)o”¦aQð':3²¤@ëlé1*UH)°-™'B—5IŒ¹]þœ¥Œ)ŽwUU]M|©NÑ*% †ô6n"„ım<+3’u ËöBcI iI@"„Äul„Äñ¸[kA*té£!cfòˆ%½Ç¡b;éç;9ªíVÌÇn÷ºÕëÅ”_TÑ,™“>°ç7ß|s‚œîŸÅÏ4MY__'F¸®Ë?úG¿É¿ø¿Ã™3gøÿàðõ¯ÿs666Æý¹ raD]<NåØ!øþ÷¿Ï“Ÿú$žçcÛYÍ c````°ó ÃnËUÍdÜÀÀÀ`÷ÆÓýZR`ÆúHÆhR)a¨Ž67zllöØÜ쳺¶ÁúFÕ›ë¬otY[Û ×1 "‚ "#Â(̲¦l›oÈŒêõô±ÊŠŽFaL¢Tæµ"Ƒѓ¤‹fÖZ½ªà™î›Õ›;Ó(™?LJYjM$Üdþ7cÓbQa’t¬Ê‰cMªD©Ö:K˜RJg/´$30ÖeâµØÅã6X]]enn®LWª×ë$I2Q$¥äÆ›xž‡ïû8ŽM†Ø¶eYDQD¿ßÇ÷},ËÂ÷}êõú.ö±ìç{)—×S‚(E#p,AÓÜsØ¡éÜó÷ÝwßE)5á3TíSE2Uš¦¹ùqvüVV®ó[ÿè7ùÝÿõcyy™öÏþ9¿ýÛ_cc}}‚Á*Ê/'ÔCSê—ÿú_ÿ çΞÁqœ2>ü§?óYÇ1dŒÁ­'Íw+)DoI?0Î3{ÑÆf¡d``ˆƒý‡8޹páo¿s•õõ V×6¸vý&×WÖ¸¹¶ÉÆF(LPiF0d ÌÂÒML”2Q<NÕø]”ĬK€Ö„i¢n¦Œ) –\i¢õX3&`¶^³Ç¿Îî£E¹RöÚ¼J)<ßGN)iD%ְꋌBüºÂâT‘*•&åeUBÈ á"(P2+eÚåSGkÍÍ›7¹qãAÇ1ÝnÏó‰ã˜f³‰ï{DQÄÂÂW¯^ËS•!„.S«”Jév»APÆbßsÏ=eRÒn@i¸¼ó|wÀ÷.†aÊñŽÍOŸ«ÑiHÖ‡)å¼oœyBš¦$qÌ(qñâEÖÖVév»Äq\Ž—"?!4Y_ËÒ©$–´Ê¶ÝØÜäk_û-~÷w3Bæé§Ÿæk_ûmÖ×WÇÝyV ÜÄC‚ÕÕU677°mÇq’$6dŒÁö ô;±Í[KfljÕ$…Œ¤™uÕ»UÄêvYɳ·¸ºêÊóÕŸÌØ±ÍïÛmóVßeÖçÝî÷ÜŸ±d7Ÿ®›…ÜÌ>hÌE B?•¹\¾š²®%æÜùà þ¿?ùs¾ÿÃ1Ù5QˆŒiX¸‡môu…5Rh„ –+@ ÒP!Ô˜É\`¦n´TJ‹¶ccÂ0$ISjRàØ²\}jµ•XÑy,võR2MÂTýc¶¾w¿—=‘>ÈlÑ<íYR¨hâ8‹îõG4ç ‘1J#ÈJ±¤P(kr+ZkÒ¢Öj9¥Fƒf³‰‚(Š�˜›k†!®ëÑhÔèõz8ŽÃÒÒ"ŽãÒínÒlÎáû5’$¥ßïãº>ss­Œ(°¬r›»… ÑüÙ[!ßykÄú0­ø»?3Ï_{¤Ž-áÏÞri-ážÃξ=W¦ç/½^—7ß|ƒ·Þ|ýè-Â0$ ’8* ›‹k»˶¨ùµÜ:WÍäý°ÛíòOÿéoóôÓ¿ËéÓgøú×ÿ9_ùÊÿ¼ 39·dfåišR¯×qX–M’¤w}Œ4dŒÁOÐbáƒLfâ8Î&ƒ9c°û ¸ânj1q6k§jewi“$%MÕ‡êÏ{ )%¶mãyŽãÜõ~z;Ÿo äg·Ÿë»´ÎÕ8rz·aã/Øø –+q›.מ_Çöm´R´NÔq6—¾³ÊåïÜ$¥cäV,ƒ`¦†ÒYRQ’$¶-ËçcÜ _]%aÆdõ³ýÍJµ‚eIFAÀÆzšyÂhЩBH‰´$Zé,"]ÊÜPXÓiwÊòŸ0J2o)idNHIHP¹¾F+ªDsïV’¢Œµ¶, ­5Ng¢Ñ-K2??Ö:›?~´²#ºœ÷T㪠…Ì´ ò=oªqH¦� ©VxR` M§Àþ$c ãÝ7V¸vý*«««¬­®2ö FB€ë8Ø–…ª×Ç´r³EVo¼%qܪOˆmÛ²(WÊã²ôRiY8ŽWÙgE·»I­Vöï%bȃm‰˜ ‚`ËdäÃLÔ§·ñ“vç¶Pù¾O­–Õ¦W'wãv2¤LµÍ’$!Bƒ¡Y0Þèô]N£°Øy_ã˜4Mñ}Ï󯯍wi‘´“óŨòfCJAk®A˯qìsm,ÇBØ`×’0Ás9öd‡ZËcã½>"…þÕ!½«Tª&Çô[>zûãF1I’äDŸœ$Zr_™1µ2Ð8þ�=áI³¹¨xÒØ¶…%%*ÍJG¤%¹2IJ-lÛ*Ë—Š÷%©]ö³8ɽ`”FUm<´F(BåÞ1y™Ò­›â¡ßïÇqyu§Œw]­5¶m“¦)…ZµÚöYuFv ‡C”RÔj5|ßg4ÊLfã8;>…NkçyÔëõmc°·,È%üÔi‡—ßsyûFZòÃË!Ççmš®&ˆRŽÍûûö<IÓ”••žûÞw¹yóIœdT›!ñ<Ÿ0 ‘y{l%YªäàV¢p~~žßù§9}ú —.½Ç׿þu ÕË4 # ?#!'2Ïˈ˜$Ió¾`ãyþ]¿®2ÆÀÀÀÀ`ö0 wˆùI_@mY«ùÌÍ5·Ô*Wï¶ý¤/~«“â")Áq²ZïMãµ³‡}tú¯!bn¿ï¦iÊh4À÷ïÞ„§Ÿ»1½ 2FÒš«“\H­Ô:uêm·a3\W¨8%¸qñ¯qãõM¢õ•P3ÚR–¼;?VZk¢8! ¤8ŽV”J“,ɱU3Íølœ'"†ضMg¡Å\ÝÚÑþf¥@1¾Ò91“{Æþ3²H‚¡u¶hF€TTE·»ià+„Àqúý>Zkêõ:q£r¥Žã0 Bæ7J<â8.ßkYÃáÑhTªY…¤iJ†ŒF#Ò4-/J·<ÏÛ1ãÚ‚GNzüÓ¿fs£—’&B…cÁç¬ã9’ý§T1/¼“·XÒ¶²›MµZ0+J˜©¾Ä¤zLO1O?ý»œ9³Ì¥Kïñµ¯}õõµqO)U0)d¦Ü’r|¾å¢«f³I'lln27×â§?óNgÇÇÈ1w I’†á– Û´zãÃLŠß‹m~Ô|ÙMãº6óó­™²XS&0Ù‹ƒü.e½^CkÅÆÆ& w­_dÃß÷ )¸KÄV%‘x`ŽõV2¦Ùl¢ðç|ü¶Çú…:Ò„ÛIOsóµÁZ©`KNsaPz[M+J#`•f¥JBd¥Ce¹¹£·/[1Ř:©ºÜnÜÌÌTS’8¬[÷•EqÌ`Ól¥yrNæ]£§Æu¥ò±J_­Ô¸}vi(·,‹ùùy�Z­ÖÄ~OÏC²çE™Uõ×b\ÊT1ÕmlGl}E\§!™¯É-nt–%¶U3í—qÃó<DEå¤TJ’(P¯7XY¹1s|GQO&! óíy~çwªDÌo³±±²ô“)Ê‘dYÞ$¦ˆM'H!yõÕ×HÒ”'žx‚ÅÅÅ»ªZ4dŒÁ¶ áBv;}ÁÜoõb,„(Õ"A0Ë ðÜÜÜŽëxu^W_ô¹®[JR÷K›f7M£Qßö{íÕB( ºÝ¶mS«Õp]wÇ“BžmÛ6®ëÞ‘ÅÚv¶¾ïãû!£QPzÜm¤iZ.¼m;‹Eµ,k_õÃ[&Ê{¨š(ÒJ2OŒ¼¼!ŽËÙíú£ëº·EpÄqLÇ·u·z·úEÇå9·ñ n—Œ45’®âÂ^Á«»t¯ H‡)Q/&ØLÐi¦T™0Ô•¤!±Õ•VTIQ.ý§_Ö™—Hf×6ǶÊÇE©'¨$6Mû1#Ê„§êÏ*qS4U”Qà{ãE²R Žc¢8ƶìLù¢–mÓ¨Ï!¥…F¤™BD“GykÁôU§ØóªġﭺŒOžu>Ìú}똰U8kÜ–ÌÊÕqèú7£ Tš@kÍ~TÇH)Ëò­~¿?ž÷ä„ÈÂÂ/^œHìz¿ñ©ÝnóôÓ¿Ëòò2ï¾û.¿õ[¿U*b2™“^blø[ŸÒ<J;ŠB¢(ë«£á¿^Ë|}162ÆÀÀÀÀ`ËâašˆÙ‹ ~uišrážþyâ8¦Õjñ¥/}©L,+%$ÕÔ¡B‘¦)W®\á•W^áØ±ct:Î;71‰ª&E¦¹wšŒ‘Râûµµåî-¢4ï½w‰?øƒ?¤Óépþü9>ùÉOâ8ÎDIJµmª“L¥ò'ÊÙ³Ë<øàƒ3 ’zðv‰™¢MlÛÆ÷}†ÃѾYl&I³Ï>‹ëº|úÓ…ïÿEæççyè¡ó¶œ!Í®Lð÷ó‚yoÉ®ìü}ùå—iµZ,..òñ|æ3Ÿ¡ÙlNô/•O®Ÿyæ¾øÅ/–fœBnÞ¼‰Ö𥥥 eUAø^¸pk×®ñéOúŽËÒ óó»¥à2%}n‘ÙhÔIú)+ßYEUBd$Œž\¤k‘G?çõC…NF~»9‡"ªŒ„ܺ/\Œ‚�”³åĵL‹Rw2C£·nOLþ,úÅôc¡´¹Ñ¥ßíf~5¹Qo½áÓhø´Ûó¹R§²ßÒψG Je‹q¥³r¤ª¯MõÚ¬ò¿õ.·»]~²7çòîÐU{qžŸŸgqq‘ ‚ ÈûEvÝ;zôè„Êu's§Ÿ~š³gÏrñâE~ó7“19%–Ö™A/UFWÊDƒRá-…dii)3äv]šÍæ¾PÅ2ÆÀÀÀÀ`&iðAïè|ÐE¶eY,..277Çõë×Y^^æµ×^£ßï3??OÇlllðÀ†!ï¾û.RJΟ?Öš7Þxƒ^¯Ç… XXX`mmË—/“$ išòØcñÞ{ï±¶¶F„<õÔg˜ŸŸ¿£“5¥¾_CJ±m;T'&»µpÒZ°¹Ùåæ5Nž<É3Ïü!çÎçµ×^£Ûí²¼¼L†lnn2 x衇Ð:#iÂ0¯¼òƒ¼­.\ ÙlræÌi^|ñ%:<úè£:tèŽ÷™ý¢Š)Å×_«W®Ñškóö/°°ÐÁ²$—.]¦^¯±°°@·Û¥^¯—FÎív›S§Ní›(ä[‘`{5æ¤iÊ»ï¾ËáÇ©Õj¼öÚkœ={–·ß~×uiµZœ?ŸõÙ0 yî¹çx衇xõÕW‰ã˜ååežyæ”RüÒ/ýW¯^¥ÛíòðÃ#„àå—_ææÍ›!xâ‰'Ê´—;Ù7ÆýTcîEÆš ¯·«cs©"›òEzS¤KþR1Ë8WƒbFÜ4©Œ”Jqœl«ËÿV`È=côLõÆ­"­g=ç¹s-¥Cs™!jþa…AjV*2¹¥Ç\N"j!¥5Rd J"Oa*I)& |w“k8hdQQ6ûº¦÷ñy’•r}þóŸgqq‘gžy&+Q¢(GÌÏ·¹qc¥<‡ªÿf· xë­·ø'ÿäŸL1“M¡Ëÿ©T†Q’*5Ñï;F»Ý.“î ¢ß1û’y¿ëÝœàÛj·;9r”(Š9}ú4ðÈ ?àÄɼþúëÄqÄ{ï½Ç±cÇøÑ[Ig¡C¿7`ee˶pl‡(Œ¹xñ\Çᇯ¾ÊSŸyŠ^ø>asåòe: ¾óÿÂ'>ñ‰²†üN¶«m¿ÿ‚{/&ZkFÁ(/Urxã7ù³o}›å³g¸té2k«k,.-â86ßøÆ78{öžçÒíöp»Œ7_]]åÕW_çúµëüÂßøëü‡ÿðùûÿïÞ• oaX,>îö¤»Pmœ?¿ÿû¿ÏÑ£GI’„K—/±¾¶ÎúÆ?ÿó?dzÏ>Ë©“§ˆã˜µõ5~á¯ÿu3æä~JI’’$)qœ°¾¶ÁþÁ7ùò_û2o¿}Ë—®påÊÎ?G„ ‡#._ºÂ… X_Û(£ÏÿòG?æÏ¿ûç(¥Gt»Ý²Ê’V¾8¼óßo¼00טƒ!z «»g@]!dr²M¿?©0í R%F&ÇÍpff³–(Vëe’RA¼ßb}Úãdû13OSru×±·ì´È ™ñggÛO”ÊÆJ— âL(²ˆk‘El ])ÇQ{ç…R½Å—i¢ªJ°íöÛA¢4›CÅŸ½ðÚ•¥5 ‹cm›NMpϒá9IÝ•ûr )« Üwß}SFÉ­gÎœæÆ•óK±åº‚øÿ§ ³ßñq±§5R‹òšÇI’nñÞ“RrϽ÷`ÙÈÌ”9‹1ß'D–f fMLîâä '›'NÒi/pøða¾ô¥/ñàƒbÛ§NæÌéeF£€••,Ÿ9˱cÇ3uA>ų¤Å£>ÊÒÒa®\¾‚”{èaõâ_þÆ“½»cÀ§”¦ßïÓhÔù[ëWéõzX–Å#„0Œ ‡?~œ}ìc\¾|¥ô׈¢°œ8 ‡#Þ|ó-šÍF©8ªÕê<ùä“´Ûí»´ˆßçÎ#|œ¥¥%Þxã úý>IœòÉO~ŠÏþÌg9wî<i¢èõú ‡#67º>|xß©bfõݽÜ?!¶e±¹Ñec}3'LRZ<pÿƒ8¶ËÅ‹ïÐlÎñðÇ>Z°zs›7WétŽ=ΑÃGH’”ÅCK|ù¿ù2gN/síêuî½ç>Nž8ÅÝ’÷séƒ}=ÌH‰¢ZÖ°M,´ÅâRß’„Qå?F ¦<J&”-Àp¢´Â±%GFžbk‰Q±[õ½í¼O2òD#%X¶U’¥JéÌ·Hµ&ŠRR©ÒDQB’ ÇC PZ'j"b[Oí×ø1P{`…¢µf4±²²Â`0d8±¶¶NÇ\»vK—.qíÚ5z½½^õõuºÝ.aÎ 0ØKÄ)<1àÿó>ðÊo¾Ð 4Ÿvø©S5þüí«}µ…¼ØoÈJ±ýò_­V£Ñ¨Ól6Y^^æÄ‰¥¯Z¦nµó²ñ1!–¦Š4MÊ9Hv<¢LõÅ¥_Q'„aÄp8d0ÇÉÄ5«øœcÇŽ1??ÏúÆQaY¾¿bÂ2ÆÀÀÀÀ`_1–%q]×up]—zÃg®ÕàÞûÎóÞ¥wøö·¿Íg>ó|ßC)•×­×xê©§øã?þcŽ9B³Ù¤Þhäw>šÔjujµsssܸqƒ?ú£?¢×ëݵ MEh­˜•N±wÇ\Çáàçþçh4?~Œ—^z‰ÿçßà‰ÇŸ@ xùå—X[[çñ©×kü§ÿô RJ>ýéOóðÃó½ï}¸Ÿ÷ÞËJÄæšMšÍúm™ï.Á”¥}ìÃqêõ:­V‹_ûµ_ã_þËÉòò2�Ï=÷‹‹‹|þóŸç(ãT[­ÍæÜ¾"bfÕóï%¡PÄÇ~â§>Áø¿þ#Ï=÷O=õ­V !ßüæ7i·Û|éK_â[ßúÏ<ó óómæææ h­9|ø0gΜá›ßü&çϟǶm¾ýíoó…/|/~ñ‹üÑý­V‹cÇŽíØ|·(Ưå@_iÏÏcY—Iãd’´¨¼FŒx'4…ê‚ÂnWL& U˜”íʇ£•jG’ª•¦¹‹BËŒœÉ-â¶Ï÷­Ÿ™Q@AEC0èðk5RÇ­V Ûs°m»¼ÑàØNæ‹$$:I3òFgß6‹.xªIâ'K!Þýñ%Žc._¾Ìp8¤ß0$I©S'xûí·‡8ŽW–ŒÚ¶,Ë¢OŸ>ÍÂÂÂ3`O•æ­k £ Eäþ9Ÿ8éplÞÁ¶àÞ%—ÞPÃÂÁ˜Cº®[¶k•|øá‡YYY™êwâ}ˆÂIös|Êd}5›艱¶ð ‹¢ˆv»Íêê*õz˲pg_ë2ÆÀÀÀÀ` cYÖñ™$c,žxüqžxü š_ù•_)ŸûÛûoßb6)øÂ¾PüQ>ü7~á�Á¯ýÚ¯±¹¹ÉøC677P*¥ÑhÜq©oáÁ¢”ºãÆ‚}âQûÄ£åß‹‹‡øú×ÿ�£áˆ÷ïþO~æ³OñÄ?Uª4>ûÙŸ™ØÆ/ÿò?ÝðüôOÿ•=™Dïd‘©sÔ]Y\Ï‚çyü½¿÷÷rwNÁÓO?]>÷‹¿ø‹åï¿þ뿾¥÷³À^—€w0Ïž=Ë?þÇÿ8'ÚR.^|‡¥¥E¾ò•¯”çË#<2ñÞÏ}îsêSŸàóŸÿüÄãO>ùä]mïbÁj™{ad¾=‡%e™b¤+f¼¢² Ü¦ˆ ]ð4Zl‰zžŽY®’2‰# G(¥p̰´ˆôµt’“·&b¦}anu^kÅi;¶‹ãø8žÇB­S–I ƒá�ßóèvc––ŽF žã`ÉBI£ÐªÈÑÖeŠbLZiA´Kiåb=›Çt:r•LFÆX–Å}÷ÝÇêê*–e!J¥ÌÏÏãû>Zk666X\\¼sc„<|Òå[? ÄšTiž»8ädGâ9‚7.õùÂc3“t“dÌÜÜ<ò/¿üò–r¢éyèväÌôk²¹ª˜(EK’„0 Y^^¦ÝnS«Õ¨ÕjX–U&J2ÆÀÀÀÀ`_BJ‰ã8Äq|çåõ‚Û_(‰[-®4BjæZ Î_æúõë<þÄOÑlÖïxš’‚4Õt»}ÚûGÑáº|þ¯~–v»}›wðEþqGïYŒyL¿?ØŸ \±¿É•L¤«Çñ޶¯ÈdøBÂÒáCüÍ_ú›HküøAlËba²_’; >Øql·›HË*É”¬@H�rËÙ^„ZOø¹äê‘÷»FL.>EÉ[ †#R•â¹ER‘B P$YLÓ‡8MgÙÏuð\—Ѩë:¹H‚ï¹Ô\ :¤»Ù£Ó9Äh±rmóçŽc' I"KSÞj©R§@h 2'ªö`È,‚¶Ã‘#G¶}îØ±cwôœumÁc§=~å“Mþë_ŽHRÅæ0å[¯÷YlÂ£Ë æýƒAæn—dU2gÏž% CÞxã‰Ç§I™Y×¥÷»n%IR¦×9s†ååeZ­®ë–7šæçç÷ÍMCÆ̼¨9Žs÷™=ø>¶msâÄ Nœ8qW¸Bƒž—•´ì‡šm[Ü{ï½»F¢ì5“¦)››Y]¿Qì>Ç™ZÞùD!sss<öØ£¾=mÛÆqÓGò5DB»ÝÄ*Ë!*1ÔyI‰Å •ò£òuÓƒÙôß5ó\ËÊŸ‚ M<ÇÍsJ+â$DYë6»×LNå:eÛR€ ¦YÏú¯ç¸€[–%ÅI’— ÂÜ\ƒZ­†ðlÖdH²ªsSít†ï”È”<+g$Jï/ÂõN_›¥€VMðß>Zãçòò´ó¬½™‘5ÓIŒûu¾UUÆTûZ1 !øøÇ?Ž”’×_=+mË ¥ÔŽ|ʪ¦ËÅ¿$É|f„Üwß}œ={ $b 2¦Õjí«ØsCÆlA!åTJ‘$‰i]"(,Ë"IbÖÖÖPJÑl6÷ÕóBÈÜÉ$£0 ÙØØ`4 Jã?ƒÝ'c¦ç¬IµÁΈ˜BoÚñ�CC{þ}p9G£Ç'ÍØ>F‹ãÄ$•S–.m7žêœì ‚Ì4½n¡Tš•» ÐE9qfì»UÞvý¯úÙRZh Ž#Â4ÍÌE™’%QJ寫2O†Ûd08qê(66A£ÔdŸ¯ªíJâGŽâ'ý¬°„Àrž#oûØí·ùN•Œ)ö»è/Eßùò—¿Ìââ"Ï>ûlÙ7,Ëzß4ÏYmR(ºµÖ<øàƒœ={¶$-Ëšð’i·Û†Œ100008ÓF£Á`0 MÓ‰;if1ñÁÚ4“ïÚ¤iÂÚÚƒÁˆF£Žïû&tÕ‰VfÄ8è÷(•bYv9Á:H“ÔƒÓæúÀ-�öË9^ŒŽãP«ÕJ¥ÑN¢‡ öéqÕ0?ßBZr‚P©$fEKŒY¡R^nTUÍÑ×Ó™KÅ6¶2d~,I¢p=+WÞ(4™‰ùn„ãN°2ßÉ4MHã×õ° )–-B¢44 ´Ö\¹rasüø\W'Š$MKï¹j l9žä~1©PûNcðáàyÞ–ÈðB3 8vìO>ùd9·|ýõ×YYY)¯ë!³Ó=…¦ÓéàyÞé3AþåªKCÆB¦Õj†a.“NÍÂìC"»;”% ŒF#ƒAž ¤&ÒvzŒfÛm·Û}ýN·±WûXÜÕ*~Z–…m;¦4É`_Ÿßžçe%¦”” QÓwÚÅÚíV®Ñ)fÒjcÚX"3AÄ”„ÌÔ¦C݈�� �IDATû´˜|b¢ŸEÇ$iŠëXùu)"v1°4ø%+qÝn£ž·q$µR)I¢BRó}~ê/û’*R•…u‹Þêµ­º0–2/¿¹‹§Ävå˜Û̼ÿX¯×'®å†!Ãá'N°¼¼ÌŸþéŸÒétøô§?Íüc®_¿Îúúú‰s«¶×ZsôèQî»ï>~îç~Žï}ï{ŒF£ò}…§ú÷~S$2ÆÀÀÀÀà– i!žçáyI’LÔè|¸ `µNzV»N“»¡JÚI©Än•S|Øý¯JÚgÝáÚIâÂû)ºvòšÓ.;ùÎ;m—ÛÝ¿~ç´Ýnõ™Ò'vã¸ìô5ï·oÛ½¦JN÷Óé ƒƒ‡zÍÇõܼhÊ7†)¦¬AÓœNfzž—é\8£ÑePUa“ùÎ� ¢0&Ž#,)qm+ó\Q ÂÚÁXPMUúæ,jhLEQL¯PoÔH“ÇõHÓ\õ`Y8¶àÌBs†J‚0%ˆb¢8Â’Õs¢÷Î>SiéÞ¨ïâ8æúõëh­ ‚Á`X~ïNgáp@FܼyÏó8wî,›››$IJ«5Ç`0$IbÒ4åüù{hµš¹ówv´¹Øñë·G]×Ý’¤µ&Žcêõ:‹‹‹ôû}z½ [ µäÈ‘#t:jµ\½z•~¿O†¥L¡8l·Û9r„……,ë»V«mQã(¥&<ЊR¦i¢Ü1ûÅ]j !c>=1©]}4xiúwƒƒØ‡ Ç¢Ù¨ç¥GcþbÂû¥BFä£}þÜT “G]—ª˜IÊf‚Ñ91…RhlTš¢u (’í¤%·"23¨(¶šÜ†”Ù·ÙlãæqÏžççs€ñulv¿Î¢™ËR¬„&‚̃Fh•¦{rÜ¢("Š"Þyç=‚ àÈ‘ÃY‰•RlllróæÍÒ[d4 ˆ¢Û¶ISEEy‚Tš—ƒí=1’¦)QMÜœ±,«,½ÙËqi'D̬ùʬ¿ b¤ø»øgÛ6Ífß÷yë­·Ð*Ų$iª°r/"­5ËËËœ>}š ¨Õj3oÆØ¶Íh4" ÃRSý¬jŒ{ñþb[Ûݤ0dŒÁYL˜ÅÅiKƒ& ÑúÑ€ëÚ4›ñ¢µ¤Yrò%?ÌZ�ÅÝyƵGÅ{„(¢œuIÊTI˜í®q†!M³^ÃuCÒ8ÉIž­dõÖ›ÙÑÚÛ-À¥”Ì͵XXX¹ý5j»÷k­¹GZ5íFkBãØŽí”m%åî{x8ŽÃ¹sçòI>A0âÁ,ÛëÌ™3yûLÆnowÞN¿æÃŽÓDHÇ„aˆeYÄqL¿ß/½S&íöü®2ÛíÃvÄ]•„™&dÒÜܹº¥¾ïO¨!+Yk44 úý>/^D)ûèEåq)Ú¢?]l¿š¶T}ζíœ8S3÷µ dêõzY>MÊ2ÆÀÀÀÀÀÀÀÀÀà#FƲõàömêZ®qÉd-Z§DÁ$Ž&”BÚHÇÁõX¶Ã´~FW÷EíR^LTjhÆKÄì·8QDa–lèØ­Bk6…ð­K §í‚ UÌÖ¾Y–…V¼\v®$ÐyìuJ'Äq¶È¶,«’Ô–m+IÓ|Q,ˆc »L\*•©[¤”ÌÏÏÑl6X__£V«†Q^¢±¬ŒàH’$O<L°mÛ¶óDÉ”$Is~‰ëº¤¹9ñh4Âó<'K÷+Ò' Ò  +lÛ& Ã< <SÀ4›MÚívI°$I‚çyضëºAHF!‚(Jð}wWǦ[•œWŸ.«®–Hñ3I’- P¶C¼ôâ÷éõºeì´Ö“$S’$eIQÇ[”1Óã«”’ H’¤,§/¶Qœ®ëR¯×ËíWûpÕ`øN׆Œ1000000000ØÌRµÌA;ˆàØÍF-/Ò(•ÄÑ=Å+Щ‚ÜkįÍaÙn®”¡$´ž"e2:¥¤_Æ”E¶�M•f†h Ž¥A§"mD’+6DI†líoÕ…¬ži.=î¯Ù¿É½™½X¯z&M?—•ŽŒ |3bb¼í‚𑹑ïnCkÍp8Ì•)ý~˲ðý£Ñˆn·K«Õ$Št¹à¯îëüü<Ýn—4ÍÔqœ’¸�z½.ƒE­æS«Õ eÜwï, ÈNgž«W¯–M±_ív{b ò&­$Q ñ¡ÚbZ-R‹f=_}]Q>TUæ¤Ìô¶¦Éš­ãŸâæÍ›YêœëVTcb‚ð)ÇqÞöÖ–Ï+~w]—õõu‚ (Ã&¤¤žKÌØc®^¯AùwAÈçG•¹S¤Œ!c î2¶sò7¸ó‹¦ñäâÃË‘ vû<)ää³ï\íĈÖàÎif<»õx¿ŸÇ@s=š>hE‰E­ôŒ‰£€8N(O„™ÙJ¾˜L¢Po¶«Œ´Ö…ïdR¦Š)‰™ÊÇ H’”0Œ�ï;H Pi «;„@¥‚4USãeNéÉ í[â¢ÈŠŠz¦ôË©²TŠœ±—LšjR•¢µB)=Aô(5&e¤”H!÷¤L©@EŒFAîU’y¯4u¤´ضã8„aˆëºø¾_ú¶8Ž‹)¾Ÿ)VºÝ.¾ïcÛV™Ä$Ju1oÛAÒh4°m‡'NÐív©Õj¥Ìt¹Í`0À÷}z½J©ü5ÐhÔq{GãË,o—i²eÚÏeú5!U”ôض+X¶–)UÕ%Ueûë´Àó|â8ª$†‰- cÅ|L)µí5½hkÏó¸|ù2Ýn7'ol--R«eåRB:¥ï`0ÈI31Axù¾Ö`Y2÷·q c```ð“´8™¾àì-¦k¯«ÇhúPM߉1¸s‹Ãéß·KPš&]ªwÍ îÞqÛÉXhŒ¬ïîqª.Ì y¹…‡ÉÎ’f£–)ZÒ˜8 rJ¦x‘–Åüü<ŸúÔ§xñÅYYYÉ”IL…¸nmlâ+ôdôõ”ðâNeЉ Ph|ׯs$BºF€Ê¡Ä²²Ò" AÅ%A2IˆL_ã¶&C%JY¢“®ÖT1öŸÑeÌv68Ž•§Ceê¡T¥™•/æ…ØÚ*Û*I… Šö&jØq”RÌÏÏ3ŽH’„Á ëºùO§,Mò}Ÿ8Žh·Û¥’¢:f‹û‚ˆò}oâó ¢¥Ú¶B CNù<ëôýÌ 9I:Nù9B«lf{óǶÚg %KA¦sžio—‚ð¨¾Æ¥FÕ¤¬äÿgïMƒì<³û¾ßó<ïv×Þ74 4@ขäl”g±\$G§Ù±¬’eÙ·¤\®$NUÊ©J9•|ÈRVÅ–ì¤,{di$–‘-iFÖp†ÃáN‚$�‚Ø—F£÷î»ßû.Ï“ïÒ÷6ºI®sOU£Ñ}ow¿ïûlçüÏ9ÿö¼¿»ú%Š¢ìgRðæÖ3Ûds5·ÔVÅX<kzÔ%ßÔÙºæ Þzë-Çfÿì e\ÏÅèXN;ŒâÏo¾y†çž{ßoã:.®ã`%U7JJ¤’I;•"—´4õÁ˜¾õ­o}û'Ýe˜ý@äÃȶ;(»É<¦åÃýqú ×ÍVˆÒ-o½ÓÚÚŒU³\~{Ýö¬ïN{aw0Ð:?xKƒ¬í{`ßz ŒÑXJQÈç0FaºŽe)¼\Ž/}ùKtÚ:N&KmŒF‡>ÚvB¶ê’ì¿fg~–4@ #M§ÝA,¹”rÊè®÷j¤q@©uÌm“fû{aŸ[å®Ó}7›&mÛÑ£F„A†HaÅ­<B’Ï›$ 7(i!U„0…!aR ¡¤Dˆ8èµU´Û–õ¾Ìï(Š’ ËŠ••£££€¡ÑhP*•h4¸®›í]JÝN¥ŽxO{ãÛ]oÊ«òN~ËÖ׺çŒK÷Ñô¾»ÏÍîj—nòÚ´ý(ý™ôZ{T[ûzê»ú¾@»ÝFJ™)(¥¿¿¬y§jVƒÙõlß-Q¹u¯!óó×±m‹™™½ ”q]‡0Ô´Ûä¾ ív›3gΆ!…|ž|¡€ëzXÊŠ+µR&g Úòù\Œé[ßúÖ·O* q©®É²LïâX—ïÿH„i;\óíÜÇ–"Å»gÑ㜼9\Úç®”ìQ]سˆÌ‘~o ÃÇ-ºkÞ陼×{½±ÚÊ�nÏôš`~~Ü×âíÜ‹Øåyî¼nvжÆÊ ¥è ̼·÷:vŸ¤ñ¼ý=0Ïú•d·`1hmJ‘Ëç" Z»ª”eñ…/~ÙÙ}üæ×“­gŒIÀÓ }l[:‚í q\C63"%jJš±A×2´;>9;å°ÑH©ߘ¸ÅEª¸eHÐlw¯Û‚àt>h­i4}êÆ@jl;‡Öq%Žã¸·«t:MlÛÃqA¨éø>Qß»R ‰ŠŸˆ�ŒFÄHR)¬Æœ;uF †††²¯ã¶¢-+—ËÙóøHÌýwÓ¶ž®Ýîj¶î1îÞ{»ÛÓJ–î6¤hI¡ø`ºAóôg!®J¯% cÒæ0 n©Tížo·ÜßvY²mgÉn*OÆÄײ,ÆÇDzV£F£M„IrFi(Û¶½%+o ÚhŒÙ“6'Ê_}0¦o}ë[ß>Y–X–¥°m«ïø~ÈN1’ ³`¤Û J丟\õe¨?ô±2D‘¦Óñ±,ë–l~úIO¸ÓEt¸Åiðnáng¾o¼§g†Q¢¤¢2>ˆíUfŽcõ8æïuœúcö£ï©’ÌÎý„=¥,õ×vh‹(ɪñ ­fÇv‘r‹dc0B é&ïMùb¶À´X&…ÔL&™½ßèHÓîøDFhÁfS ­¾nÓhV(æ%¶ @HƒDe:ÑÓÞ­t'³•B ï‡ÌÏ/Ól:?‘¦†¼—'çy ÇA ’ÓEIå¯N@ÙD¾:%jU ~ƒH ”‰0NŒÎ�°Ê>JûÅ­àÅîט¾AV8 n÷^ÛÝVÔ]=š'J©¬G‘€)AÆÃ²]-)U!J+xº!A°ººÊòòJÖòսǛm„|b<¦{~vƒ1Û«'SŸ ý-Ë&Š4ÍV\™¦£Hd�TÌùc%À“H*ÁD¼nñæ|0±Æô­o}ëÛxÈÆY ~$ ¦ˆÜY'ÌqlZ­vOv¸»"&«þóý(ŒU,ja¢‚@¶®Â0¤P($ÎÕV–ëÆìíÖÓí˹öm»¬nÜUÚ’°ÕB¦ã�î]´Çì¨|\­ò¸9NL4š‚d}@¦{Þmñ­¸žãØXÊ&èšïaòƒü€|>ÏÃ?Ìææ&Õj5KôK¹U cv'[ Ìöú�c ‘Ö´Û>:!ç #M‚HPëHW6*» 9×Á²ãª)$R ´yûu±ÇDH‰@¢ Aˆï'< 2V ±”E†T*•Lž8—÷J†(2XR‘³,ì°ƒn g"š–MNk:Ž‹Q —óÞm×Ï'öœ»ý­lIÁ”´Z%áÒÏÝ>M*ùœ‚)éZO)eêø¾Ÿi5M*Ñ‚6JÅäËJI*Õ*×®^eii‘¥¥%´ÞN¼að­àçvë¾Æî5Ñ]Õ—Ëå3îŸ-£Þ½¬€J+€º?º©Ò÷öÁ˜¾õ­o}û²éÁáy^?Høˆ9?¶mÑju2&-Ý3÷Ü"£Ø·s¬l|?ØÊú&ëÊqœ‰ï|pÖŸ·~¤­Q¤{8â€_d*!·óLû<&ïÿ˜Y–E»Ýé1;̽4‰â¹®k£,;æIÁÏ‚¼f³ÉŸÿùŸsìøñŒ{@H‰TVĈž6:º(dLO*e©˜ÆµÌ16: <ÏÉ*l7‡íäƒA7ñjMJ¹å’G>ï`©(k‰ÖZlSX¢K9p›Ò’#bM%­ –R„¡&Œ Às=JÅb;quØÂÃv·ÓF>ù0 ’ŠH)j*Od4¾í Eü\,)ÑBýXέt~íÔ&˜‚'»µÆíÓ[U»ÝÒÜiuK†ÙçôÌLÁ›ÔßéömÒN§“;qõM˜ok««¬­¯Òn·p]b¡€Á°²²B½Ö`mmååeÆÆ'È÷àŠž½4a²½Eu;ÿÍvÀ¨ûù¤Ï.õÒne«nÐ4U¨J¦»•vëÛ¦X*ôÁ˜¾õ­o}û$ºqÐbY2sxÒt˜1!¶ÈF·gHz3ÐÙÏ bâ¿wd{ø(†„¸­Ë1„nF¼¯Y³˜”.ºåÀ ´ç—9’ò™Þ{élûB|T†©{$>ÄÀqëswO{äó¥Û ${2sI1l·Ñ´š†ñts\D>*‘I°±›lœÙù™Ä­A–YMAiË’=r·ç×ã”kÞ\‡êDìDê(”ʈ¡„eßÀôÇi÷y«”Dëc¬>à¸m¦r×uð\7æ8±ÝäyEY�\«Õøá3Ïtíûe9X–ÝŒ(ÝrÖÂdˆŒI¥Û–ìᑎðÄ£÷³ßƒEÛ!—s�Cø8ÂRY§ŸÍ ÍÂÅy†ËŠññ<ÏÁµm¢( ºÍ­çÏö?!ï5Éù‡Œ!­falá…b!Ÿâß+èjíj¨ñQ´ò¹­VE@eRÛšÀhGža~Ìæ•ïû4›Íl½ …¬â³ÓéÐn·3ð P(ìJ*œú—Ý•†)Ñ­p”V¾u·b§`D nÄÀM@¥²I³Ù¤V«á¸µZ•••eÚÍ&F“z½†eY Ðiµh4›¬®®R¯5h4Z4-¢®Ê’̇MI¬Ùòùn·1éµn¯Œ Ã0dºï­”Úþþn ¦„‘¤%)s r¹Åb©Æô­o}ëÛÜJ¦GRš¹Ú:Œâ2é˜ >¤Ztüøk%Ž ¥"ä<…¥dBˆùîén2·TÒ°Ýn'*ï½­ª»ô=s’{ZohB cE‰”ÆÒÆôäO> `{勹sðCÄ¡ucZ(5ˆVÖô<_#c9Ñ],u¬º“Èï8NiæVJI.—{GÐÂÐÆÐ ëMMÙä‰â#ÝZê|ûn¼Iæ¸ |üµUÂkWè\¿N¸0ëk˜v;vÐJ%ÔØ8Öô ÖÌ>œ™YìRaY1Tö.ÖÃöòñÝ”†vëíêÛŸEúû»_OÍÂXmwŠog¸²q5ñº 77ÐöMä¯@à#to$˜8ú3”":pâ«ÿ9ÖÌÒM¥,¼Û3©o=A\fŠ<žç"„BÙ.¶1~;dL’é¸8^> @w˜ƒ W…m[”Š&'†Ù»gœýû&9t`𙽠)óH)étB–V6¸zm)V3üŽak_qsy„Éáxy°ÉÕ›xv“rÞ¢wni‘Þ­eIŠ051ÿK8¶ÃääÊ’XV¬Ö±B‘m+,[b[‘Ñ!Qž‡èøa�±ƒDH‘ý ¥®ãà9w^¹& ä],ì[­V¶Oº®KEI«ÂNäãçÜa}}ÁÁAFFF’ö×÷¶—A@¥R¡P(P¯×)•J¸®‹Ne[­N×u³1„X¡hmmõõuöîÝ‹”’B¡pKÛO7'L†YõGjiËQ7!s÷yÔ]yív›«W¯píÚUjµp £… ~»ƒRŠr¹ŒRŠÍÍMÖ×6¨Öêñߎ4~ÄÕ4]¤Á=‰Å—Bzb7�³›Ú^ÊIãûþ-ÜcÛçuÊwãºn²Ž=òù9Ï#—ó°mÛ¶°,;ã’ù ÎÏ>Ó·¾õ­oš“—TØ¥.ÓöÕ¹>ïsö‚áÚ¼¡Vt:iPŠEÃôÜsìŸq),„Ün ¢µ¦Ñhð¯ÿõ¿& #ffføìg?ÃåË—™˜˜àÀ»feºÚìòåËœ?ž/|á ™šÁJ-ä•yŸs‹A‡Çmœ±™²²’í­rñ=%»[¥³æGdL,/êû›hÿ{ ×ѹŸÄv÷Æ`œéM²¥»ÿÕMþâ/¾Ë7Bð䓟caa/ùË;:«««|ç;ßáÀ<üðÃØ¶½«Œ$@.­¼r-àúFÄp^rτͣûKðaƶÆô<¾³ý5­5­å%šßýÁ+/]»‚Ù\G„aVm‘r&h% \91Agî.ìÇ?‹÷У8¥¼‹²ú¥¥%žzê)–––8zô(Ÿÿüç{Hß.‚€7Þx!GÍ€ÑtÝù¾Ï÷¿ÿ}N:ÅÄÄÇçæÍ›ÌÍͱÿþwý|·_Ï�2¶g4Ó1¼EP£û}]ÁB´±Føí?Àý£\YDDáVuŒ1`"D«f¨Wž£Óiþ—¿Œ56ƒgïy?Hœ³¢¸ž £Ä|Lk“¨²'c$B(l7‡Š(ôÑ:Üjõ eÙ(ÇE¨­3- ÇÆsmÊåãcƒ˜fv߇æf˜™dh°”´ôi|?`c³N¥Ò`e­Æ¹+뜿²‰ß‰É奱LBXŠÖ(ËB9^\Ñgç©W7hm4ñjuÊ…¼ƒJwÛ”¥â+)Èç]¤´“ªTàØ Û‰9¼lÛÊ䥔àÇ׫Ni"¾Æxa#‰É~…±üõûk­YYYAkÍ7h·;‹EÀ066ÆÂÂBÆw“&”R,--±¶¶ÆsÔju޹ç=+¥ ‹”’µµµ IAß÷ÙÜÜdppÏó2pEkMµZåüùóŒÁ-k)È$¥ÌÚ¶ËY÷‚7¦Gæ:nÚí6`hµÚT«U^~ù æõêt:4[MšQ‘s]ÆÆÇq;ûû¾øñç0 ‰Âø¾º«W{÷˜Ý”obRp3ýÜM&Üét‚ ´Ù)!!•DII©T¤<Pbdh˜b±H¾Ãéá¶È{!"„èsÆô­o}ëÛ'ÚÄVËxW5LJÊAhX\jóÃCÞ<««‚ZC`ôÇ—€3ç 'OÁ]s$bß^ב=œ'»;±Ãù½§žæ—ÿÞßeaagžyÏó(KÌÏßàÚÕkLïfbb‚K—.QÙÜäS÷݇”‚Ë—/‚¹¹œ;w>Ë>t:mÞzë/^âÉ'ŸÌ�³‹ÿéL‹z[c,lD£™´i•ˆ1˜^Ð÷{DîH ³]2~-" Ú?Ƴž|:­1¤DZyŒȬ-ɼ㕴[-.]¼ÌØø Š4õz“Ë—¯°²¼ÂäÔ$arãÆ <ÈÙ³oñÌ3Ï200ȵ«×¹>ýûçÈç=VVV3Õ„ƒçRRiiž½Øáåk>íPãHÉr5bÏ€dÿ¨”™¨aãÛÍ·>ƒ‰""ß§öúIšßümÂÓo`6ÖbyÕdAŠî>(‘t”uÚèZ…ðÚU¢soœ{“ü_þ îô^¤e#2Yæƒw­5ßþ³?§Õnrß}G9}êMfföáy×®]ãÀ qóæ"7oÞäÀý rêÔ)Ç¡ÝnsùÒ”¥˜Ý7¯/ÏåÞ{ ”âô©3¼üò«<úè#ÌÏÏó½ï=MF,/­°¼¼Âý÷å­·ÎaŒ¡T*R©Tð;÷½………Œ€S I½ÑàŽS¯×8wî<SS“LOOcÛö{–Þm€ob\üÅëˆ3¯`šmXšÇýþwP«‹àû D¤SvÕ¸B& F#7Ö°ÿô÷Ÿhæ�‘ë¡>Œsà"—[å¦(Џté2W®\%—ó˜;p€±ñ± 8{'àj§ï#X­Gœ¹ésa%äà˜Å‘I‡Ñ¢ÄR%TFôœK}Ûš~€18¶…—K¸©„À ±ÜÊõºömCø‚xO7€ÐˆDU,ï¹<tüOœ¸—G¾‡ñÑaÛF™å|?`y­Âüü KKëøaH©èrc±Í‹§Ö’J™µû¨´-C:A‡v§IEäóyÇÅß‚N‹ùÕ›„ÍkÌîI@Ÿ[“6Bˆ¬•ж-ffÇã@>•¼N+[¶Iw·¿lVèT¥P¬„‹CÄ­£¤ÍÄǶŒq¸Ó­¹¶m³ÿþäïªÕ*ÇŽÝ1GÒìì,–eõ´ùc8pà@"ÜÀ÷ƒ]×ÿí^Ãèè(ZköîÝ›q›¥€I±XÌ*^º u…LOO36Ë5ï”@1ÆÐn·©Õj!ÎνîJß÷3 ©»½'ýlÛv2Μyƒ……ë”JeÊår RDšz½«®yÛŽ[—G144ÄÈð0‘Ö4M–––Y\\¦Ýi¡»T¶'TØŽ1=;é5¦÷ÐýZ†YUÑÖ÷·�Ë‹J¥ÃÃÃä¼¹\Û¶²Š¢”˜;atæŸú€F£Žm;}0¦o}ë[ß>ÙNYXoõED Μ­ó[¿/X^•áîÙó´½Ñ´Z‚7 ¯öùÏ~ªÅÖpl«ç¸{»ìŽçåx챜;wž_|‰å夔ü›óÜ}ø666yù¥W8óæ›ŒŽŽð‹/±oß o¼ñAòéO?ÁÓOÿ€ááaÆÆF9{ö,¶íbÒŒ°ÖМ]ô©45–<²ÏáÜrÈ¥••JÈø€…Òr‘”çýÆîœ²ÕNò‹: hVž~ÿ‘“�� �IDAT§lý$ †(ü6íú~ ¥{@Z‘¨2òœ]ï[Ä™Æv»1šÍ Ï?÷"íV‡Ó§OóØã'8yò$³³³üöoýé ?*•*ÿò_þ:Gï¿o~óøÚ×þ:¯¾r’·Þ:Çßþ…¿•ýúÅjÄkó:¡&o)ž˜sxñšÏÉyŸ½ÃJ~˜ÛÛ·¹ì6&A»MåOÑü7ÿ }õ2DQdÞ†´²sý*áÍÔ®]%ü;üÌ,VYçN·Ñhpýú<?ó3Ø–ÍÒâ/¼ø"Žcó›¿ùïù‡ÿðð/þÅ¿`ïÞžþy†††yýõ×9xpŽ‹.qÏ=GÈås|ã¿G«Õ ¹ví:?ñOröì[>|˜'NðÄssa‘¯ýß³¾±ÁwŸú>?ÿóÿßÿÞÓä 9”RÔj5:í6/¼ð"®ëqåêÂ0bbbœK/Ñj59uê­VÜ®õ•¯ü‡ßuG3×o·ÜLÑ^¼Šûkuñ$„´<¨Dóe¥Á°É¤|‰¶ªÉì•E¬ßþW±T®R„Ó³´þ»ÿïÓ©'عeŽÏ=û—/_&—÷xõÕ×ø_û9FFGnÉðnÿ¶W Ëo65¿²Ák×;„ÚðÚuÉܘÏßx¸ÀžAÅGOB¦ÆôÌ K:kcp‹¼hÚô¶“Èç"bÐB*E!ç2³w‚ƒû§Ù·w’}³ìcxpBÁÃum0P©5ØÜ¬³Q©Óh´ £ÛV4›ÍkŸ«7Û¬n¡&:¤•6v§sÎs=Œã&2ÁaÄû޲°-—ÑÑi -—æú&׫XŽ`` O!ïö¬”ŒW*‰£ìždŽÉÉdâ5¨£˜äum£ÊúFJSPkFQÌ©# ®R‰BSWÌ�X–˜ˆN§sÇ%­Óv$Çq8xð� ’ʦ-2øö\.n™*ò=¼qïÅRu¢í×¥”"ŸÏ'gx"îyÙäóù¬}I)µ£ðCL^+¶d®c2îv67»ÉÓ›ÍfÆ c[­fƒ›7X]]¡V«Ð¨×(—ŠTk5\×ÍȨcà&$Œ´‰ø F´ýd®Ä­y#£# yJ¥<¹|®'Aµý|¾¨éôRÞœ”³©›&}-æÚÉS((”(äóär9òù¶W;ÅÕ¤2«6ËxjŒ! ãVµ0Šb²ù´ýÛÄÚ}0¦o}ë[ß>ù®^ÏEšvÛðÂ+~÷[.ÕZœô5à¤_ã0E‡‚Õu‹¯ÿž¤Ùªðø£ƒäsŠwŠ¥„DZ³¹Y¡R©d%ÐFŽ?Ϋ¯¼FÇï†3{÷òÙÏ~š yæ™r÷ÝwÓn·YZZ"|>ó™O³°p“©©)f÷Írúô›ÙýZ2î“/º‚GgsTÚÍ©%cgÖ|ŒÒ³Fh¿ÒBXù¤ Aô´:µ›«ä:ßD˜fêrಀnÿ;Zêàä¦PÊŽÛ“¾œ· ÒÌZ„a„*qÂGî=ÂèèÍf“7np×]w1<<Ìþýq«ÙÀÀ�>ú0/\¤Ùlâ¸BH†‡‡³¹(Xîw˜²yîR©À’1ÑÝÇìL²^QDÐjRùÁ÷©ý¿¿óW!Qšx§2€[À­ãÊŒW^ ùÈ¿ÿÈMN¡g×ßå8B –WVh·;<÷ìó áº.=v‚S§NsöìY,Ëæ±ÇNðüó/pñâEî¾û0<ò.\Œ3œQÄ¥K—ð<Á¡òù<–¥(•K,--³¾¾Æææ&—/_¡<Pæ¾OÝË+¯œd}}×uxøá‡xã78tè ¹\žoÿÙ·yà8rä+Ë+;~4ã7¸té2…BÑÑÑ[TªÞÏñ2Æà/\@}ãB]y6…™Ú‡:uh6b@f|Ü÷F xó5Äù3…Ï/7ç×.A»‰uéúWÿüB ÷¾ãˆ]4C†”J%FF‡i6šüá}‹«W¯rèÐA\×ãå—_æØ±c¬®®räÈ&''øƒ?øCî¿ÿ(ÏüàÆÆÇùÅ_ü; ¡‘\ß¹±b�Çì’ܬ\]0¦oeÓI¦ÜƒeY 9 n‰‹÷‰RǶÈå\JÅ<ccC:0Í]‡ö13=ÎìÌ$ƒƒ%,KemO­¶ÏÒò•JjµN«Ù!ˆ ÊR„‘ Ñ†›‹UÖ7kTêAh¢øô°”DƒÖQ`I%“Š•¤ýObb A‡tÈ·Z„ÊÆ‘ Ýy§„ÖÐhש-U(Z ”òx®ƒmwUѲJ‚0Šƒ߯¿Þè°¸´J­Þaaqz3¤”;@*”TI…Cˆ5¾!¥ÂN‚\!–²‘Jâ9wFe2KiE:æíIªxzU}vOÂt/QÒ–ÊZ+”deYärù X‹˜¸:6nŸ²’Ö"Ñ¥(´Õ²K:»x‘*% !²öN§ƒmÛ„aH»ÝŽ+a,E¤5Ë‹‹Ü\¼A­V£Õj!Ž1ÐnµiÔq‹Y’¸ðýR ü ÈêÀzù‡ê.Ë¡\Ķí*²o•¸Þ ¤ Ãß÷©×ë‰4¼Èª¼ ùåRL²ë¸.…B>!Ü- e¢<Eo{Vü¡“us …Q„ц0áêö­\ÛfŒé[ßúÖ·cŒ¡Ó‰8ùj‹ßý–ÍFåÖ÷Þ¶©¡Z—üî·\¤¬óØÃ ëm])%CCƒ|ûÛß¡ÕjÆüÊ"ŸÏ³¶¶Ê±cGi¶šLŒ±pó&ÿé/¾‹ëºÌÎîãÔ©Sø¾Ïc=ÆÊÊ X–Å[oåü… är^–mÊKîž°9{3à•ù6µ¶&ïHŒYŒ–UvˆŠDYâ#íÇÄ¢µE‚Ë„.Ä™~5ÐAU܃±BIX}Ï¿ÆÇ‰Pa"râ ÍÚoÐ1?››D('–AÝFd·“7½g÷»Ÿ£G?ÅÉ“¯32:L©T"Ò³³û˜›;Ààà í¶Ïøø8£#ÃØ¿Ÿ……^|ñ%”¥(bu޽3Ó¬¬¬pàÀ~„Œ—$Ÿš²99²P‰èD0]²¸oÚF~œ€2c0aHãìjßø:úâ¹Ý{ÿÄHSêôu¯;kͦæ·'_¢þï~ùw~…ÜÄž]{ÇqxâñÇxúO3::F©\â±ÇãôéS¼ôÒKÌÌìåþûïçôé3œ<y’‘‘8Àk¯½†eDkÍðð•J…#÷!ð}J¥"ãØ¶Í<ÀoýÖoóGôGlnV8|øn†)•JŒŽP,äbppÇsúôi:ŸÇŸxÇqbþ‚(¢\*366ÊÀ@™‡zˆF£ÎØØØ®¤Ðï×xé‹/c_züV\W,!¾ô7á+ÿ-FHX[Š÷†‰i°lDJò»xÑiÂøt¼§þÇ߆_ýgˆù+¿ºôþKO>‚帻,¯XáåÊÕ«´ZMÆÇÇi¶šìÛ·¿ö×~–ïïæäúõœ›ã¹gŸcdt”ÉÉIΜ~“ññ Ö××™Ÿ¿Áà`#$›-MÃ7ìPL(«šºoØlêþø1ÙCÚ¾ÑqG©”GÈx«PJâºcÃÌíŸæÄ‰û8ñð§˜Ý;‰TŠ´KÉhƒï¬­WY]ÝäÚõEªÕ&A©œ£T,P(:\º¾Á¹Ë+,­5‘²L&`‹eRáX‰F ˆ°ˆŒƒÑš0è Æqllžöñ¢6^äJ‹H*VKcDÀfàÇ€Že£”¤œ$Ô“ll.sõ­+L—˜ž! â�µÕnÑéøllTYYÝäâ¥\¾¶Ä¥+‹´|(ŽR( ãx„tp,éƒ1>Q¯M!Dú; WI€1p`ºÉ”¶#*ï ‰÷÷F£I¡ÏxqÞ+ò^€˜î÷îôóÝÿï&­MùPÒ×»_‹¢øµ0Œ2š4é“’¼o)Ø‘µV¹®‹ïû=RÕËK«Ü¼y“z½žN‡0ŒÛâ¿Ñfss#ƒ @'71‡Rúu+%m^Z,ÛÉªŠ¶sñ¥Ü,Ûýß”£/–Óö CǵϱÁ¸Bˆ˜Ó-ö¯ôÖï3"®Âf«å?}>AM©ÔwÚ¦»æÇÉ„DòZŒé[ßúÖ·O°m•nŠì€:ÑçO¾/¨7ä-§vØŽéñ=zÇnkuàϾ+)—Z<x,¿«ŠKœ9ÊñË¿üKÃÃ#LLŒsðà…|cDz°°ÀÐÐÃÃÃ,..ÑhÔÙ¿?ÞÓ ~jjŠéé=LLL`Û6ÃÃCYÙlVª+ŸÚ÷‡Ÿ_ö3ß{§ì. &ý÷ç¾Kpì¶|+¸øµU¢Wÿ?Üß qèi™ œ›ß£mAîø/!•CÐé ª§QZ;êÂòúj‡Íúãä‹ã8…C(eØãg` ÌçŸü,!˜›ÛÏÏýÜÏR.�011ÎOÿôWY^^fÏž=¸®›õNï?0ËÍ›7ùâcBå™™éÌ IªÁ¼âó‡sŒæ7"FŠŠ¹1›½ §ÏÇ%ˆÒZÓ®UYúãßE;“]{FöGÂ{ %ÆsP“S¨„ˆÀ_BF+`ˆik2 PH…Yø:oL` ý¶ãfü1ÛÕJ>ý™'Ø7;CµZezzšááaææö³¼¼Ìää$Åb‘_üÅ_`ccƒ‰‰ ªÕ:—.]b}}}ûöñ™Ï>A£Ñ`hhˆÅÅE”²8p`?–e³gÏ$ûoÿM®]»ÆÀÀ�ãããlllP,Ÿ#—ËqðÐÃÃÃ<xÙÙ}„aÈìì,H)ñ}Ÿr¹ÌøÄÅb‘‡zˆùùy}ßÁ˜î}+E–ư6o",óðWŸþ€A47ÀUPMÚ$ÇÛƒÊT7^ñÅŸÁ\»‚ù·ÿQ¯ í;ª¾­“W˜yžG«Ý&B†‡ ø~‡§ŸŽÛ½<Ïãž#‡yî¹g©T*üÝ_þ%žþ–––8|÷a¦¦&“¬<Ì +ÆK’•ªÆVš…͉‹Ù‹VKy× ÿ¾bt„ëØÌLñȃ‡™šeîÀ^öNO0>:ÄÐP™œçâ:I£Õb³Rg}­Ææf-ã±-…£;¬mÔxëŠC­ih·uRý¢‰´�ZØJàX2i_Õ&Diƒkò‘cB¤$æõAMË@ËÊ£Ý!$#:ÙÀlÛM*]B‚¤ B(†Èy:a‹+‹mV+xó‘‘‘ ÕŽB´\„erÿD×üíÄ¢(æÚ±”…Jø¦Ò=$•NÁ‡0 ü66IÛá6ÓÊÔ0 ©TªŸ8Rj!Èž_Úf“¶Ë¥Ö)ŸJš ð<×u©T*\¹r…Í|ß§Z­R­Ö¶üPâqs‡±Ñ"­QJ Dœ¨óý•J5!&«TÙžàHù^º ƒ{�™.?ª—äW ¥Š £#xž“€.%$RH ٫DŸÓ]ë4Šb¢m­uʘ¤'ªº}à´'666X¸qƒV»3<ð@Œé[ßúÖ·'‡o³ðÂIÍüMI¢Z™¨Ë‚‰qÉèˆd~!bqY#eL‰0:"™Qllj—4›š0ŒÝÁÒ*<û’fvÆgtÄCì䧇öC=Øóýn5–´/ààÁ¹ž÷•J¥ìÿ‡Îþ×]wíx¿#ÅgIŽLÚh 㥘,Ðìâ||”ü̉:ø¯}‹ü©o¢Ä2òÚ3påNí"͉‡ñ«ZË›ç;¨…}TåãäÆV)Í]Ç𖈹.Œ&§Ÿ§QݤÞÚGYå¹½YyõNæº.ûöí˾dpp°ç=SSSLMMe_—ËåìóäääŽãšš­sc6Sƒ›MÍ@N³e –}ŒÀ˜@‡¼zó4×NñHès ŸRP(`Ýó)œGGLïƒb ¤Æ —°Z§k† .#t;^p¢+‹':ú~å ¬Ñû8=`O÷x:t¨çOOLL011‘}===Íôôt¶<úè#„aÈÞ½ÓLNNf¿oddä–{íÇt=¦­gÝÖ½> …BÏkÝïì¹·'�¿s&ý2 â±™8„øÉÿÊcpå$œþ.fã&Gà®ÇàØ@HÌËÏ"^z– PBœø<ø8üõ_€·Þ€ïý)"ðQÍÆÛgRJNœ8Áðð¶m333ƒ1&!$wøéŸþ«4[MÊå2{÷Nó׿öst:mœÃqlΟ¿ÀÀ@9)—ƒˆ©ŧº¼xÅçÚzÄ=“÷ïuØ;ÔwÁ?.ûˆß‰ƒ¼\ÞåÉÏ>̉‡>E©\¤\.b'°AÒîø¬­­R©ÖÙØ¬Ñh$$¦Zƒ0T+UVV–XY]¥R­Ññ#P#„ÖFÄ’Ùðµ�BGHBTôÚÆ'‚RÐÄ6BZ*‡PË“DÚ&2iM¤##¬DÍIê(†*´ÁH‘eÿE×z°/W@ë–ߦ±WäXvÌK#ݸm9 C”"#ù•I•BZýjb¤“€"Ý’ÍÛÕ}âu§î¸šÒ;©<~<ÑsoZGW§|*ÝÕi¢%mSZ]]Å÷}0±Ìs¡Q¯7ÑF£¤DH…´mòùÞ¶±(Šh4Ôë üvã’ù(Ý\Cݻ鸧DÂÙš’ôTótÿxx˜¡¡!r¹\—ï'bŸÁ¤S9%ÝÁ–ë¤@Q6/·ž_7'ÖšV«E£ÑàìÙ³DaóÄÐQH­Vëƒ1}ë[ßúöãbA ¹x9àÜCœ@Kzˆ•à¾#ŸyÌ¡X¸´Ú†v'U‹×|NàÐh^xÅ祓ivJ†pùšäÍs!'Òärò#qÏBF‹ªpù ûtgHG!¥käŸÿM”_×"¿ú"³Põç¿~Ú«£„›*x)ž rš¼ÅÜÿ„áý×QžF(eZÄE•°6ˆ² a—?°�x—»Å³“eÉǃÉLC­Uç7þ‚êœÍÔ%¹¥fï ÿÊÏâ~ù+\b‚ï^ˆ¸|^c[‚ã3GxòSŸaL}®þoXÕÿÚO MJ$«­ËtV¿EX>„“sz‚¸÷:v££#|ö³Ÿ¹Åü°æû±&Ólª¸örý:Âr_þ˜¾”…Ù{/o>yê7àúY8|¤‹ø¿ƒxíÌ¿ Ÿÿ+0½òEL®€øÿž µ± g^%úÜ—P¹ù#lÛæÈ‘#>|wdvå‰ÇAë­lï£>’`zŠýû°oß¾ì5™”ay¶à‘ýG¦šÈ»‚‚#q¬>QîÇŒéø!‘Ö8®ÃÞé‰D–X!ÕjõÍ*KK묮Ui·;XJ’Ϲ¸¶d½¶ÉÅ‹—¹xé2›haÛŽcã8ga Úf„Èx Á6H¥CÊAi4R@Å.Z.ÕÂÆ#2€Ø,G¢Cƒ2V,Š4ív­5–m¡„B%\p–WðõHGA¬äæKIP+0è„§$æ/±,7«jˆe–¥’9û%1�ZK"ÇÆkEƼ1‰”t*÷mÙ=¡whÿŸTy°$!Õ7ÁÉák‘ ÏË‘ó<"«Í¥*)8†!ëëX–¢÷(—cÕ¤´š&Úz«—ÒýO©˜ ·ÕjBÂc³]B;]3·´iùzFo]×Ögm;”ËelÛξŸŽ£Öi¢D› lÙ„dà·Û¸÷´.¹\ŽË—/Ój5ˆ•¥Äu½l(û`LßúÖ·¾}ˆN^ú¹ÕŽ8)duÃJZb¢ÔÑÁÃÇmöLn¡ûž·ó!ãyP* ޵¹¹¤™¿¥#Tª’ó—B>uOˆç©· ¸¶«&lÆÞsóNéö—vjñø Á‡Û/Ð~^ø¬õ5„€…’>alIIžf<øu6ë—¨5ˆŠ„Ú5ˬvZ†{ÿê34{”eÈËFEíú'v»>Ã÷:&ïôó½ãÿ£Ííí¿w§y÷>®0έ]âtí*шÅsw—Ù»æã¤Á´—ÃþÌO æçùúY‡ßz9`¹® Âx*|û¬æ÷^“ü£/ÞÅwÿŸè3 §ý:èvÒÜ”>£6ªñ2aó¶7°£2Sê�ÞîÜÞÉÁý°÷©ìïù>&Œ€FöÄ*5J! #˜\Ff`ÿqÄŸýKLa�ÚÄÀú¿ùŸ‘G†¡¸ª~3: B"¢üXU¼MðÖˆìdÝ/ugó•?Eï®"p-kIF åéÎÊ ’Îi?ðéø|ß§Ùj³¼¸ÁÚz…j½AFx®…ëÚ” «K7¹zíkkk4›MÚtΉD¢ØÂó<r9ÏËQÈyäò\Ç%¨EÌßlÒðÂñˆ„Ū;œpÏHŒqµI”He …m;D: ˆÚ¶c$ˆ8v=Dä)«˜*–Ñlµˆ¤s?nÛ𠂸ýÏJ@“TÞ^lÛ»”’ŒåÙ3Qdßô®ë°Ym3s“k7Öhµ¤�ÏsQRÆêKš,ضm;Ý®“ù'É4¾ûö6§D–‡¥5ÙªaZ5Âbc»ª Ì(—Ë;vŒüàÔj5Úí6J)lËÂólŠÅB\bR°1ÈÈ‚ãýN`YŠÍ :™Ý­?ÝûaZyâ8NèbŒD z*xÒ3¦X, ”ʪpº+kÒª«¬åMˆLb½û<}»JÎîj¬n¥X,011A©˜ÃqÜŒ<¹T,öÁ˜¾õ­o}ûqqö*ÕˆKW5QصAÛ‚Ãs{§åmÅBÀÔ„äî»,VV¡Ñ ÂÈpu^³¶12¼sp¯µ¦^¯ãû>–÷n© šÍfv0º®ûŽbYæáv‚Jß÷‰¢hG Ç;a©<bJl÷£¸Aí5œ3Ï#š\…q4Â(ÐÑ1XÔÙ»ï?âz›\xã¿¢ºt7Q;”c÷_`ö'žF:aÓBYid¥¯Qm,`{û0"V„ØîX¤c†±´e©TÚµÌ;L2I™Ó›Î¹J%ëéÎårÙëq?¸É$-wš¯Aì( ±“U©TPJõ\W»Ý¦Õj#¥$ŸÏÝ"÷y§×”6š×–Þ¢¥}:¼1“çØ{n¶PBaíÁúÚ/ð­‹9~í™6˵^BÕ–oظ¢ùþPñ­ÈÝþ æü¯ ü›[±±|¬ô¯¡›ç0ƒw#¤êA±RyëV«;¾Ip£”Úõc¨×ëäóù·îH éûYUÈöñLqß÷Éåò£w÷ Híht–¨0Œ]½¿óO1`ê0FÚe“ƒÚ2LiÒ˜ƒ÷Àõ˘G?‡P2p´†å%ø_ÿ1´[å!¢™9œ\þ£ÕûØ·´i­i5Û\¸¼À…K tÚ10c´A©¸JrþúM®]½ÂââÕj•V«W£$ F.ïá¹1�“Ëå’—\ Êär¸Ž‹À¡åÔY»Z'Hd‹·ÚU5c0¡!®Ì éø×qp•EH,5m[K)@ÆjŒÉ~eŒ! CBßï|³óE<79'D ¼Wĸvt'Ü"ƒ†Cû8rp„¡ÓSÃq‹žeøšÍZ›SgyóÂ2+kq[V|æÄ;h…t:-”T„‘êâÂwdoKÉØo7aðq3ÇuÀµã*>![.ÊRèz•`s,Y,ÇÕPI[ÚÈÈwß}7/¾ø"õz3‘~V´Ú Ƕñ¼¸jKI…òâ3*‚Ì/ô<!Õj˲{�™nà$­Ž±“×·ˆ†%‘(sE«~ b)+S€J×O÷<MyÞâ¹ÊމÝ »1 ¥PÈ¡dJl­@Xï«ÒcúÖ·¾õí#Äc¨7"–WÚl¹"9Wpÿ½–J‘þ^Ðeëwô~_Y‚{î²xí€f+-6¬oªU½k¦Û÷}žþyΜ9Ãìì,>ø`Öo\,yê©§˜ššB)ÅáÇc‰ÁB!+AmµZYÿíØØ ÌÏÏóÀP­V)‹Y–$ÍÀu›çÎãÊ•+?~œÑÑQ´Öllld@A§Ó¡Ùl2<<Œã8T*:år9»Žf³ÉÚÚår™\.G§ÓÁu]jµW¯^% CŽ=º£ÌåíWR‚»po£„Œw4ÀŒ*È9 „qÝÄÈSäöþ_¼þü¯°pöÓˆ@Ñ:ý�ið©¯üÊõM Ó1ÄÜBEDÍ«˜áGwå/®Õj|÷»O“<øàqZk ‚€Z­F±Xäܹs„aÈC=Ô¸|ó›ßdjjŠV«ÅáÇÉœ jµÊÜܹ\LØW.—X__Ï2l§NâÞ{ïe``€õõuõc ‹‹‹üþïÿ>|õ«_͸j¾ÿý§iµZ1¡ìÁƒLMMfD³årùŽs„aÈùÚUBa"Ãü Ãs‡ÊLmŒ’ü’y†øæ«6šf7Üùuͯ>ðüµÃ¨ÁÏÃò7�Ý%=.á&º½@¤5Bªž! ógÏòì³Ï266–ñ€àСC †!««« P.— ‚€o}ë9qâù|Ž‘‘êõ:µZ‰‰ *• Zk …BbÔëuhµZX–•¬¹¹\ŽÍÍ ¢(b`` [G###cxýõ×ñ}ŸÃ‡344DµZ¥\.ãû>««kÔj5^}õ$Ÿþô§9{öM|ð.¢; ȈÉC˜Á ¨.ÀüÄoücÌÏýpðÑ[Œ#�� �IDATX]­]…ïü+xè§I+„™Ú‡ü·ÿ=æ¡'à¨7®ÁÿóÏOý)„!fhæ#mçmïz½Îòò2J)†††Þvnvƒ¤ÍfÜ’Ïç{Þÿ£}»ýlET«U”R”Ëe*•J¶OŠ>Ðt‡÷‘ˆµµu~øÌËÌÎîax°„$bu}…«W®sñÒejÕØVR¡,•Í®ë&À‹G>—ÃKþïy.žëຎëapè„’µªO3°°Æ|+AÜänµI”% u„6®ãÑh£ "K ”!a!,—ÈZÍ&Ž\§ëº8¶Š9_Œ!ŒtÒ’çâ&mu–eé(Œ_„Èp×kT7 4UÆÇ™˜fxpɱQîÚ?Ê£‹U¾õç§9ýÖ"Ae@¶Lø<Â0¤ã·¹S=Jie…1Ïó20 ]Oq›Y\ñÑpwKFÇï'«vÝUKËÚj'ÂqA)¬‘ ¢NÓ¨Õ6ˆ‚€Ðv1BÑ #öLNphnŽ×O½A³' ,Ë·š­6–Š ÌǶ®ëáy^ò½¸'>ê´>T±:VÌ;#³j˜Tn;õû¤”()Ñ‘Æ÷; åò�–mc’¤ïûÙ¸mßÿL2G·Ç ´€IŸU7·MJpŒÑ åŒ Šâ5ÐcúÖ·¾õí“¿ìÆøM½¡0:AúeLÌ;9.³²øFÃpãfD¡ ™šˆ¿E°¼¢Ù¬j¦'¥’@I‘Œ)VV5&‘ûk4%­¶Î¹í–ËåøÜç>G«ÙâøÇq‡Ë—¯pãÆ Ž=ŠïAH³Ùâä«'9xè`F�jŒa~þW¯^¡T*qéÒe&''ðý€+W®R©l²¼¼Â#<ÂÍ›7DëˆC‡e×Òn·™Ÿ¿A„?~œv»ÅÒÒRJ<Ï£Z­%$™¹ûî»8sæ ¾ï311Áý÷ßÖš3gÞ¤Z­à8SS{X\\äÞ{ïåäÉרT*Ï=÷Üó#hbyÑÐH°Ħ†|€qÚ¶ sy6Zû©w¦htö²è î¸H!:W^¿—ñÃÏSzd)L;mú×[¡äè°w,·MÉîFFF˜¡Ùlòæ›ob Ap_¹rß÷9vì¶moõ Åc=Æë¯¿ÁÚÚ:§NfÏž=LNN°¾¾A]`zzš×_û￟³gÏf ÂÙ³o111Ák¯½^ŽcÇŽá86a±ººÆØØxZB»Ýfppááa<Ïãڵ묬¬°¾¾ÎW¾òSwŒIU&–ý„ÐÆÐQš÷ç8zÝchQc?t‚K›pf!"Ð]™g¶�Qø!üàbÄr³Ìtá8RüNÜ2Ð%{-t¡73nÁn³m›£G²¼¼Ì¡C‡ç‡?ü!•J•ååež|òó¼öÚh‘Ïç¹÷Þ{q› ¹pážç1<¼ÆââZGÔë b^7¤¤”¼þúëüå¿ü“œ>}Š¡¡a666£\.óÖ[gQÊbrr’ùùy …B¦ÄU¯×“Œ~cÇŽñ /ð¥/}‘k×®Q©TÉårALfxúôæææÞW0ÆÛG4º3ÿ:"hÁé§nóµ “‡ Ý€vsãâïC(áÜiŒaeß ×àßþsÄŸ š5Œè±IÌÁ{IeÜnëêüùó\¹r%Q„s2iïîì.+++ÌÍ@)Åüü<¾p×][{Z£Ñd}}ññq<ÏëiWËÊéÕn~šÔnÜXÀq&''n!ÓüáŸexx˜Ç;Á«¯¾Ê±cDz1½gS߶椲,šÍW¯\ç\§ÍêÊ"õFÀ÷ÑÆ/°“*×u³À5Ÿ�/¹œC.cJÅ"ÅÒ�M_píF…ù 5ª ŸVG†0Ôas~°Õ $\.éGw@ž0™ÑñÛ‰òŒÂQÚD´[>‘6 E Ǻ9¶íb[NB²«ñý:*©’Y»Á˜€F3JÀ&‰i0½…äì:9w“ùù%J¥c£ƒÌÎìaÿþ=Œ ±wj€GOsîÂMêõ62 Ú¥H¥°l‹|FتAèøï¿Gk6›üáþ!arðàÁ¬ÊSA êõ:õz=Kù¾O½^Ï€ c ø¾ã88ŽÃ¡C‡Èår™¹™&Âv›,Ë"*”Ñ^Zµ‚ëØ¸¶:zs™ƒ#EVF†¹±¼FFD‘Æ÷cÀɶ-ÂÈ Ú ™´ض…ãØ‹EŠÅ"ÓÓ{céóV‹Z­ÎÊÊ*zƒJ­'%P/‚ ðRJÅ€¥JÁŸÁ¡ò…"B|ßÇ÷ý TN÷ÊÔ‡x; º÷õÚ“Èdº»Á˜ØWH²^ÆdRׯ€eõ+cúÖ·¾õí“ ÇìÀÕiAvóÀìŒDÈ­ª˜ç^òyãLÈÀ ä'ÿ’ËžIÉêšæ»OwX\ÖÜ5gñW¾ä ”ˆ%U§%oa|°„‘$Œn#“@|ø­­­³¼¼ÂåËWFkƒ1‚—_~•={¦xð¡{úskµ–åpÏ=Gøæ7ŸR©„Ö†ååeªÕ/¼ð"÷ß? ‹T+U&§&{PÛv˜™™Áu=nÞ\¤Ùl°ºúÿ³÷Þ?–^çççœ7Ýœ*çÔ9°ÙÍL*™¤%‘”fdaÉc 0Ø1vÿ€Áþ<¿,fƒÅ,Ö Œ!Œ­Ãز=¦"EIT3´Ø cåt«n~ãÙÞP·B7›b“j[õîºU÷Ö½ï9ï9Ïó=ßçû]¥Ù ÝK*• àÛþäó9LÓ¢X,Ñnwð¼$ºví:Ï=÷,¯¾ú”¬®®pàÀªÕ Êå2¹\–T*õÑŠlÚШ LÚämªkc>ÍrŽW/|™›Õ§°Õ _F5Ë¡øôÑ´›ª³=x4R` ÈøÐ– ·QÊ¿§d ÌÍÍãûkkkôôô°¸¸„‚ññqšÍ&©Tz[v³Ùæ»ßý¹\ž™™in\¿É¡C™››§Óé�‚¹¹yJ¥"kkkÌÍ-`Ûz{ûF×M~ðƒræÌ Ã`ff†B!ÏåË—cee•k×®søð!2™ Ÿþô§¸}{–……EªÕ*J)VVVyã7xñÅL lßAù>JøÀjVòÃCym6èëfá=‰¯ö¶PW]_{¾Æ\Íd$;€±É–«>ByI+À6êÿÅ]è†5Ƶk7h4šüÃßÿN=üPd5>F¹\ŽÆnßw¹zõ*€ƒ‡ðæ›oqæÌ:6‹‹K�,//á8/^Â÷ÚíKKË�\¼x‘¥¥%òùº®S­V9qâ8©T*J|M&&&q]—ëׯsûv*lll²¶¶N.—KX8cc£ |¬ú?F&Gsì!Ô»ÿv\Þqö¯àù¥¡˜ùÉ_Áþ÷¨–€á£ðïþ=œ~¤„³¯ þú[P«†ŽWº7<Õ?„¸ Ë%^dž††9~ü¾¯xå•S­V9xð ù|ž×_ÞÞ^lÛæÝwßåßø½ÈŽ<Ô`øÞ÷¾Ÿ„ƒƒƒüä'?åù矣V«Q¯×1M“ñññˆ]vœwÞy—\6NŸ>ÍÅ‹©V«ÌÌLóþB¥\á_~ýkIkhÜZvùò:ÈÆÆ K=êÜ}Ÿ}@fgx>l4$B‹E©<ÌT¬0|M L#ãMY1ð’ÂJÅ@L†T*C€¯t6}æ/­°¾Ñ¡VoÓluÂÂV¢â7·ï-]×náÔ¤ M¥\!𤆡¤¬ Èð¶°,|Ö"Ÿ³(—r^ÀÂrÕjƒf«ƒãy8¶î+‘F‡&5„ �$e˜_„­ >Õ¦F]Ó0›–`n6X\m1·TãÆÜ #ÃC ,Þ|gÛ Âœ&Z?ã–“¸àGì]Lèâ6ÆJ¥)è86¹\~à™N§Ñ4 ×u"ÜCã¢?•J%ND𦱰°@&“yàÌG%¶‹+¥kë HesQÞ£0u•ÉQn68(ö{lÖ긞‡ˆ€ˆ°5Õíj?¸^è¦i2y\× ƒ|>G®ëbÛ6õz#ÔKêØÉõu]Ïuñ„Î)†©ÓÛ×®i »:fÏìu­»[϶î I¬w Houô©. &Ô*Úf±­T”×*” ¶41h³ÆìÇ~ìÇ~üú@4o4á¦28 “œ$`n!dÀ8¬W†%›µ€•µ€Íºâ欿­e©¯7dÏx~˜û„Â{wñ °”’¥¥%JÅ"ét:qñ<—#Gް¸¸@µZŲ,´h#UJ±ººJ­Vöm àÓiã8.CCCId™&ËË«œ8y"aihš†i˜ò¬”…çz¼ûî{<öØ£\¹rmx3™,2ÒÝ{óÛèºbh˜¦ÁÊÊ JärYΟ?ÏÚÚ›››ô÷÷ß—qR<[GÙ&"0 ÝÊ7Pxíʼzå Æ¤ò膅…‡%|,<ŒÀÏ¥]õ�%AÖ5”ô!p ‹  ïÔ¥‰Î嘘gxxˆ—_þ.ƒÉµÏfsLMe8wîO=õ$8Ž8ɈmdqòäIzz*XVŠ|>O:¶Xd³YLÓâÒ¥‹<ôÐ ÞxãMX]]Å0t|ßÃ4 òù<ããcضM*•BJÉüü?|Š7ß|“·Þ:ÇñãÇ�øîw¿Ç©S§Bpûö,år‰¾¾ÞD“dvv6iuj·Ûôôôûz;9Tôßùa‹×'aÒw0µ±+Ržì,Lc›¯�K÷A9($àwµ))ZôøA³-—é•Ï¢6=I¥§‡ÑÑÑ0qN¥Ð´ðgWV–I§ÓH)1-‹L&K¥Raii Ë {û¥”ø~ÀO<Áw¾ówüÎïüµZ©©IÞ}÷]fff°m›‘‘²ÙlÔ:‘IZBm§6­V‹©©ILÓLXKš¦#蚎ëzèºA«Õ¢Õj‘ÏçX\\d||œÅÅE¦¦¦>òÝ%�a˜£¬ 4×#Ål t#d¢~ rýÐòÁvá…?@Ìœ„t*¤êJ „R!+&›Ã?pŒ´iîÒóé“âDüÍ7ߢZÝàøñc‹%VWWyå•óØc±²²Ê ŸÁm'åJܾ=Ë3Ï<Í­[·Y\\btt„z½ÎùóïÍf˜Ÿ_ˆ„\ ÊåÕj•Ó§OñÚk?çâÅ‹¼õÖ9òù<KKË S*¦MLýÿý÷™šš$NsãÆM|ßÛVDìÇý ߇چCÐÑɦzÊ@i¬L]ºèZ@.c‘ËZ¤RfÔÊaaZ)„4i;‚•ºd~¹ÉÜâ&›u»«�Œ‹¾°ƒØ:qìRWhšD)ð}Ïs‘B"µPL\°Åj0ôÐÝÈÐ52™ý=û3ôVR ÷*ãy6¾ï³ºnóîåE~ñÞ-Ö7ÚtìPëM¶›ˆˆQ³SP|Ë9Iáø>m[!: 50uÁj½ÍÜÊo_ÜÀötêMßWX†…ø(?;€µ%âû|-ËâË_þò.õ¸Èï›Á­'NìpÒ’vêr¹œ´Û<ˆƒq>åû>N‡\.aböL 5ôLŽL*Ãp®Èi‘âõ×ßH4ä¶@ž­V®ð³G-FšŒr]'Í5T*íQ=±%â­f‹ŽÝÁóB "¥Zbƺjñï ßF·è}¬?N¤;´Ì$Âë"b¸~ ?ØÄ„‡”ñûÛ ÒÄkí>³û±ûñkRH#€ÀB JE¹¥J!`r\cnÁ§XŒ …Éù@ŸFOYRoø> £i[‚u…œ@È­ç뺟èÏÜ)4MãÐÁƒ ENž<É›o¾É©S1::ŠmÛ,..ròäqž|â1.]¾Ä¹sç8qâÃÃÃ!`’ÉðÚÏ~Æ×¾öÕ$‘ñ<ÅÅ%¾ô¥—(äó”+%t]g` Ÿ?ù“?áw÷wI§ÓôöõΤ¢À€Á¡AΟ?ÏñãDZ,‹b±ˆe™<þØ#ÌÌLS«Õ¸qããc¡l¡PäÉ'žäìëg9vìSS“8ŽÃµk×xâ‰Çèçòå+´Ûí;ŠÓÞ+ ãÇ$ðt¤çC`"°¢QmZ¬5<ìl ¥ûèZÓ×Éx×õ±é´Ñ©¢5Â3PM=-T[ ÚJä¸Ûé`*•bjj’r¹Œ®ë<óÌ3|ï{ßc ¿r¥‚¦i\ºt‰/~ñó”ËÖ××yùåï144È™3§Ñ4G=ÃääDb#yôè,+l‰¨TÊQ+KJ¥‡çž{–¿òcFGG¤cÛ´Ûmþðÿ€³gÏrôèŠÅЊûk_û*ßýîËŒŽŽ2::J§ccš&¿ñŸãÕW_%Ÿ/ðÒK/°°°ÈÍ›7yá…/&¢¿q²Ûl6)>šµ·’Œ2·õ–+ a ¾}ºÀ‹ 7˜ì9…a€ãŠ”Ùè HYŠ™¹> R YôÊ‹¾²°’Äp/0æÀ”Ëå„ýbš&ºnP,–øÃ?ø}^ýÉ«‘†L… ð9yòx¢ýó™Ï|†Õ•UJ¥Ï?ÿ,?ýéÏp]—Ç Û¶cbbœZ­ÆèÈ0s.\˜çsŸû,##£œ;wŽf³Éää$Ùl–t:d‡éºÎôôï¿¡¡A<H?o½õ£££d2YR)‹©éInܸÁ‰Ǹ}ûv4ï4666 ÑhÜ¿µPÓÑ&Oâ¥òH@ ùTß$BÀÍ€L1ðõmT©L#9#¨ÔFøù"þáÛ¬Pï4¯„<ýôS=z”‹/1;{›ãÇOð÷ÿ÷LNNN§yûí·&—ËîXKÂSõžž µZN§M¥RA×u&''xôÑGi·;ÔëµÄݤX,ÒÛÛ›M333<þøcø~À¥‹—ÈF#q‘ä8ßûÞ÷0ÍP ëÔ©‡#‘î­¢s_7æ>†øºEM¤Øì(„#CAT)ÐDŠrÆÃ25Òé<=½yòùµ–ι÷¸97O»ã&Àº”:BH4©¡¢C±­�înÓˆ—£øÔ>t¤!ÿ6@ãØ˜†‰aºŽeé ôæ9yl„“‡†è)§I¥ LCC×d Ãæ¦ÇúÚ&“#=ÌLVøÍÏáÇgoñÓׯ²¾ÑˆŠf°<<x‘Ia*p]!5 ÓHœpl×à  ãh¸H º¸†º¦!u=rV [u¿«õS|Ä|JÞC;Q˜+u ÛïµèºÎèèèi“º©Ä²zmm\.zEí«ñ¼‰÷Ö  ʲ,Ž?FǶùùÏŽë¸{k¬(…ãzÑU )BàÏ@×5|?À¶ÝD`·ëœ"\®5 ÓJ‘J‡-Ÿ(ë¹xAx¨Ñl6˜x¾+%b\%ºî*ùwü¸”[ï#ÆGˆ„ADfï‡ÀLºì¾t?ƒ[û̘ýØýØ_›\OÍê”ó-–ƒ¸WZ—ÛòAž|ÔààŒN!/HYán—Í ¾ö¥µ†¢\Üî i]£BQÈ{ä³Ö]µ94MãÀ™ä—>ûìo$'J�ÓÓSHM"…äÑGåG¯üˆÑ‘Q„äó9rÙ,SSSf˜à”K%‚ˆ’,¥F£^§Z]ç¡“á8.GÃ0ÍPÿ¤·—J¥’$J)ÆÆF“k'B<z†µµuÖ׫†ÉäÔ¦&¯ý}|þ󿙸Õ<òÈ™mïÿñÇ»‹;Í=$ZQ± ÷Ñj÷PRu„žÜ«@€¯q¦ÿ=~ªŸ¢aK|áàzme€'C¡^·MozŽ^c½ªÀ×!Û�Ï… t :¥~ Ò¸ã{²,‹‰‰‰äšd2^zñŰ“!$ÓÓS¹CðÌ3Osýú L#|MMjœ<y2jƒèºàðáC(¥èïëŠZA¹\ “ @ñù/|!rÐaQÓK/½¸Mh/›Íð /žäjɵ/•J¼øâ‹ÉÏåóùd®I)y衇v%ÔåžÒu¡t?ïÔ®!‚ˆù3U=à[ëoð‘£<Ääû<ZÎ×Z(Š)Á=if‘ öR‰S¡‘x²L` l{ÏÛO‘%ÓÓÓÉï ¯·!éTŠ_x©…šÄ'µ~œLçs¹$AþÔ3Ï$cÏçéíéE¡xúé§�˜˜g||,|RòØc&üJ¥œ°tt]gllŒááá.§4“/|áóÛî;¥##û>[oo/�Ç¿/k¡"<·ršƒ'0—®¢±¹Œ¸þx¬ jùüèÛˆ7ÿš ê6|ýßÀð8iÁ¥w‹óàûa‹RßúÌáí¿kÍMÓ(‹d³Y Cgp°ŸÙÙÛ\½z•ááa666xï½wèëëáÀi^}õU666$›Í`Y&}d2¡&¦…¢â¹\Žz½Ák¯ýË29rä0¾ï¡ë}}Òé½½&&&¸zõ*?øÁ÷9qâNsöìYJ¥†a099‰RŠÑÑQ¾úÕ¯²¾¾Îüü<®k“JY¼úê«<ñÄwiÅü€ÅmßÚzÏ9ˆpÏCJü Às<¤ÔФ`¥®Qm n¯7)ÚvVÇ£Ýqñ¼�¥4 tÅb‹}'„¤»Õ±›­aÛv²Ç !$–1Õt‰iêä2•RšR1MOž‘¡2Ù”N6­òÑd‹ùù†Gɤò¶áùÏÆff˦Ù^ıtÃàá#eŽxœ‹WW¹pe‘¹Å M!dhwí(4¶-I)Ñ5 =• ?ƒá5ÒHXžë#E@ ‚¤õ))x»ÖG]×ɤ³]lÃûqÀ³¹óúWË<‹™±þ‰‚ÍÍd=‹E¼c¶q¼ÆÅ L7ÓÍ|¡V;ÌÅ —pœ°ÝQÝ!3Š!5?Ç!œBn9Žç­”‚ Px~7»E$S¿cÛt:N¤Ó#ñîû„¶íGÝöÖš®c˜)+…¦ëÑõ± 7e|ß߯€¹†ès‡¹ŸÓpŒÙýØýx�À˜\F2<¨X­‚ï‡gHÍVØãÒ=¡ÙRä²+:ö£ïY)A6€FS¡¡€o@»­w&)¡¿' X¸ûéN\„Û¡Bjw>5’šÆsÏ?Ÿ|}xa\¹ø(UʼøÒKÉ×O=õÔ¶ _Þ£o_ûÚW’$dë3iÛÀ–»zýRc¥‹é©Aêéqòë‹HÝ'ôÈ `l¥Î_åï>ÍZÝ'ÐÛ8èà ´äƒM޽Á€XAlHÈ: T]Ø7‹,ŽÇ<Ü»ŽSœ*hºÆnÁC¹-•:tøÐÖó5¹û“i»Sáäk-1{Úö=…ÚEÝ–RbY»…ï>iŠ·¦i-Móýå³Ê‹@ÁˆÊÏ?¬üœ“gøú#³ÞTœ»íãx*aH9Kð›Gu~ûŒŽ½ú²óáµá q˜ºé`ô#RcwtÛHÀÄèdOíHì3 TÑiyì̲sþÝmnî,ºÓïZéÛÆæã´Ò¾—µP‰®øŸD½ûw× E{_ùÓ°ÂÊÂ埂–E}õß‚#á­7à?ý˜: ¥^Äwþ V—¢•tŽ&—ËoÓLÚ ìÓ4Ó§O'_ò¥/½´ígwÝGãããÉ¿= ÀÉ“'8vìè¶ç=ôÐÉm_ONNðÜsÏð¹Ï}`W»×àà ×®]K,ȳÙ,ßøÆ7"0>ËØØO<ñ¾ï³¶¶¶Çš¸½ léRȨÈsñ£Â°ã(ZÉÊF#)Ã?±thEQ+±Ö}ûÛÀÁx­ ‚�Ê)ÓÀ²L2)“bÞ¢¿7OO)CoŽJ)M¥œÅî4¨TÊl¬Wi67 ­£ ¤Ôk 6Ö«äsyÖ«,-¯¢ëA” †‰S«(t*Íã§9z°Ÿ W–xóüm–Wktlç…íEñ>Z*GºˆKõ°à–ºŽÂVß÷ðºÚƒâ{OÓ4D䮲îc«ë¤Rf²Vó¬›íßÙ[ ñÉ1ñ¯bëëøýx^@«ÕÚÒƒérŠ™È1è çvë˜u³eÇIÜ2ì1\Çåúõ‘fܽ¼Ïpf _l¸¥”]@¢Ø}PK­HÛ†H«Ï­-4Ftí¡[̱ t#º¡nƒmÛ8޽ ŒÙ‹£¶(…¿2¸mŒÙýØýx�"ŸÓ˜™Ô¸xÕ§ÙÒq]ÅOϺ¸>Œj躠V‡w/8™ŒÀО¯h·¶'Žêò ×…ÙyŸ7Ϲ8NX\šFÀ䘤TÒ>0IPø*ÀW7ISt%ºÔÐ…|ÀG*LjÒ•ËŸ:DãO®Ï»h@x Ýõùtê ٌϭCÜô†i«å2n¬rºt…“Å díʺ‚M% üvŽÍÞI²å¡è$u/§€­Ü! P O¨;¦÷·(“4)Ñ„@> 'é¡(¤äôà1 W³¬zö¶ÕWU»Æ·Þÿ+þèDšÿùÙƒ¼zYçÍ›K5…!a²WòäŒÁgy\_ù>'«ÿ©:QV¼5o&¾9–™ú€™® ]Iî6Z÷s®Jš¡çou2R">Žo¦‘n;'­ÎÁwþO8ò4âÙ?‚ƒO¢2e„õÜ×áý_Àßüò[ÿ7tÚQY¨@“¨ÓO"#Ü;ÝO;‹Œ?·—ðú‡+°~9€DÓ4FFF>$“Rò©�mÏñ�� �IDATO}jßÞúc*Ž}?@ TжȄ…›Ý,ÎpQ1î½¾ï†BÀ !"-Ž-]hºÄ2MŠùãÃ9NŸbz¼Ÿþ¾,íVN«ÃÂÂ"ÍFåÅ6R‚mw˜%“£ZÝàÆÍYtCçý÷/ÑÛÛÃòJË2`n~žV³ÃÀ@?N‡l6‹ï4›-fçæâÙgðÙ'rö7ùÞ«X«¶|•hr„�axè!#„IÆ…¶ïãù~bi³e|ßO�˜¤E+T[½Oc¥"‹ùttMïÿúôñÏ7uÇßk¡C‘ã8‘ȳÚnm…Fƒ ]–i6›t:òù|æ!xâ‰'ñ<Ÿ«W¯&n^÷´6Æï± p ­ö"ÛbÇ"Áv6Xé»ìÚ ¢µmw{iø9]×Bà-0ÆÆó\<ÏíjïÛ:ŒÙ¥¯¥öÞ?©utŒÙýØýø�©”ÎÁi¡óWojø>\¼ê±QSŒJÎèØ¶â÷½£ƒ® ü�\LFG¯¸rÍçú-Ÿ¥•�ßO®zÊ>GI2ãŽi\¤nzmÏÅ ü®äP$}»[¦¿{œ;¿§¶ýk³ýè%u©‘Õ RÒ@"ïC¸¦úÀßïßFÊ¢ð…‡XùË·6jhà{H_qOèט²VX1JØBÇ”=Ú&}f•tÐv¨ª¬ ¯£mTPŸÆÊW'­;Y:z* éÛ´}'DT„ n4V÷Ò}¿—@°ºÛXE?/…$­dõP+GüŠî›*NÇ{Fxªò³ð#À{Æ£ï۞Åêþßóßâ ÓŸå+<Ƨ§¨µš€ž|€¦Íñòp¤õ·dS‹áçzøZ $¾VÄÉ>C1Ó{‡b_á+EËwhxü@DsMjw‰Ý×]ÝÓv‡cJœf¡Iq_[î÷xn%ú’Ôà$­¾ƒ[?GܬÝB)È–ÁH‡v¥RC+È¥h5Áõ ””¸ÙÚÉGš~Os'jµKKK8p i'q]¹¹9Š…Dí^A°´´D1:¿Óë/..’ËåÉf3Z{BJyOBÖBˆ(R¾/þ{Ç9¡|´ˆµ%„ž�±�ºn{»…¢*jµˆÆSh ¨cDÌ´lƤ¿7Ï`_¾J–þÞ…œ…!Ò)ßsÈZ.º¦X[[…ÀÓý…~Ú)Ëbyeå•U„ä Yr¹LMOàû=• ¶mS,ì£V«³ººŽi8®ÍäÈN›LÖ¢XÌ#„O¡á3ONshª—|寽qÑa‘D…°³Í� ¼ÝÎhèbÞª ¸B uŸ¦à«Dt1KÔï» Pwl>iP3º.1›%“É$L—6ÎÝî}1ó%ÖPñ¼p-ìt:4dL …BâÐ??ŸÏñðçð}ŸÙÙYÜ®÷p7Àh×ú½cçŠß®¿Ï=ö6ºX‹;GdGÎ[a‡“Gi)Ù¶C,&íû¾ïmî_v1;5rº÷ðb±¸ÆìÇ~ìÇ~üº�2º.™·8zÈavÁŶM|O±°ä³²pþ½P ±ÝQÑ)ب„ªéŠ¿ýMS8x^,v¦0 ŸCÓ.‡0tyÇ#P5·CÃë0_[åõÙ÷)Y9=BÚ´ºœ~¹Sá»=W)p;ð(‚Œ4HÎEüþ5]£gj„Õß’ÍÿXGT}²ù6š)À“-ÀІ´ƒZ=/ J!Ý�¡4”+²$Ž›ÃmW¨Ÿ>„yøz*u×ë hø5§Íz§ÆÏn¾ƒ¯>5ñÅt.ìÝ'jy¹Ã•Tb‹™´½$‹ª»€„­?9=…¶eÿñÀ„’¬™æ_ú<?^|“UUÅ;{o§Í[Ëïs±zƒ¾ÔçXÏ!Æ ƒØžË•k×¹²q#ú2_¹IõJ*âœ$¶œÆìÿš–Ú<CÐô:ÔÜ6 ׿ç·Þ£f785rÑb_eIÁ]®yÜì ¶Áe±MÚÇ8'ò¼°¢“kõ‘æÿÇ~I‰™ÉÓ<öÜ:»µHø.Ì]„ÿç…þžûŸÂOøã—ÿñC]½ˆˆ¬^‚@Ó©=C®·ÏȽØ*žçsîÜÛ\½z…b±DOOJ)Z­¯ýì5:ŠÅžçqþü;;v”ÁÁÁm_÷š÷Þ{ï355e ëÚÌ\Ùdö^KÂ"Wm;” eb—ž¸"iÓ[Ų¦…lM×HY:¦!I§ †úóŒ –(Óߟ#mJ²)v«¦iܾ=‡!‹xž‹ë¦i·C'3Ç �ÍfƒZ-jQªÖð½�×s8’?ÈèØ½½4]#—Ë7oÜfii™b±ˆë: `;6žëÓÓSBˆ Ë ×3Ï]irY‹ÞJ&’£–¥BÖOw{f\ìîa¶º²K´8bqØvç¾ÎáØÍgcc#rË' ‘D A°7nÒÛÛî~¢½Òh4H§ÓÉXÆ6×EËìƒr¤€1 #a°„"½¡ë]%çß¾~ívƒ‹A\ß÷“¿Ûívbç ¡.‘ëºI‹j¬ïÒßßÏ“O>ÁõëýÌÎα^­Òétvw[GïvDp¯kß6À¤+Q ¤DuÝg¡uvØŠÏÉðÚxQj[KÒ^ŸG×tÊå§NÚcöc?öc?~}�Èd,žz´ÅÛ—®š8NxÂáà¸;6)B‰¤ØV¾ Ó ¶9B†TgÅèÃgž’d2fdG¹wþÒñ=êžÍÕµ9þòr¸oœ…Æ/_=Ëh¡Ÿ‡†p³º�FK}J¨Æ1ít¾¶JÆÌPJenÅ¥ÕÛôfKœ›¿Àç¦ iË2t”ðÏ÷xkáOŽ�mßÅúݲ$¤@·L&¾ô8W/-Àû^P#›m¢›RóÀ Z�Z€AHQ’*´Þ%ü;;ƒãõјÂ}üiz‡†‘w9ÅBàùmßæÖæ"ÿõÜw9Ü?Ž¥üÃåŸ3˜«ð¹™3\^½‚¡|OX ˆFîGýä¶ç²Ü¬2œïIlQ›N‹K+sT2yrfŠr¦�€©* n·XiTéË•)§ Ô¼)Í@ }ËJúª35Mcr`œ¯Ž?˹õn3¤$'ɘ ße³Sçfm.iç S9|ib‚æ;'Eå I 4JÀ@¾!÷n#q†gÓôþ÷}‹ñr?=¹"go½ËÍl™GÇŽ#…âìí÷9=rRG‹ÆH)EËíà+Ÿb*õé+j&Õv¶k3U!ŸÊàù^Ô–$±}‡×g/ð©ÉSÝWR#¥™,hº0L䣿EûÇÿ©ÆÒs¶l®×n·ÿܾ ¢€øoŠº=‹rì­é'^®ˆó•o¢§Rp‡{ig TÀÍ›7™˜˜äúõ븮ËßþíwÐ4I³Ñdhxˆsç~Áëoœåé§Ÿ¡ÙlR«Õ¹ví:W®\¥§§‡Ï}î³üÕ_ý%B<H£Ñd~~žüÇä_ÿëoÞƒÓË~<ˆÕ–«‹Úö-ö€H� MÓ„÷¢®K2i“LÆ \ÎòðÑÏ 06T$e…­N–e¢Ixûü®­WÉårôö”9xhË4i4´ZmÞ»p™r©‡V«‰¡nëxT«5 C'›Ípùò#ÃCd3Yò…<›¸®K£Þdii•ññÖ×Öèí­P*CÆV(þ‚ïxžO»íÒî8ÔK+ Þ~o‰÷.Íawˆ´Â COÀ¦$‘‰ÖWÛ¶Ñ5-ržÚ\QQ:)…`ŒŒm‰ @DøèÚUAP­VYZZÂu]òù<kkk(¥¨T*8p€z½A§cGmWa{K­V£ÙlQ«mbY)òù`jjêcc dÆ„.{:†aÐjµfKÜš®[N\BÈ„ÝÒ ŒÄìšF£A*•¢\.oo‹4VjµZȲJ¥"€J£¿¿Z­6óóóœûŹèš4CÝ `ÊÄw†¼KóA�ÌÝÆ4?»§ÂïÅ‚Øjo–M Ðt:í¤q !Èò<òÈ#»ô»öÁ˜ýØýØÖ`L¸# xéùUjõ³óYüàö«±`žŠ«ßˆ]€A@¥ÍW¾à1>Öwz¼�'ðéxçæ/slpŠÇÇŽqiåwñg<öä1¼ÀçêÚ,›W«sÔ;MÆJ”¬ï,]cºw”ï¼÷*e+ϋǞæ —éË–¸º¶À‰Ái^¾|–“3œ_¸‚®˜ä½å›4í&ï,^åÌÈat]Çö=-ˆØ¿’Ѹ§ñÒLì`…Á?x–¥ ÷‡W°× 2ù–åbH©û ¤ &×1°7s8v™ö‘ê/|ŠÑÓ'0-sÏÓÄîDËÜÀçõÛ868ÉéáÃØžÃŸ½ý]&J(W×f‘Bò³[ïPNå©d dŒWªsŒæû¨wšüèê9^<ö +­*)Íd¬ÜÇÙÙ÷˜é&k¤ðý€M§ÉS'˜¯­raù&nàóôÄ Š©\ئ mñiPj;à^“±û}OI)I›/û ®7fùþÒYÕmß¹EQ(lßI’²´ øb‡ã‡´ O…Œ?‰«ò,[¿OïØgRÛóþRJá>Nàqöö;Œ—úøÔäÃ^¾|6»D€í¹üðê[¸Ïrc¡B‡{ÇyùòYz3Ešn›ëÕ¾xäI.-߯ \†s½,5ªl´käSYÞ[¼Æz{“ÉòšÔ¸¸z‹ŸÜx›§ÆO K/pƒ€”ä7ÍB uƒüè k¿ño)ÿð?‘Þ¸‚p~ù>¬/ÁŸýPWÐ�aw9ªJ‰›/²òåoPú̳M¿çö ¸è€°daa§Ÿ~ŠÁÁAþüÏÿ!gΜæðáÃ|ç;G:beeÇqøíßþ:ñÉåËWH¥R¼9œ]¾ü×¼òÊ+üñÿ»VØÜ•ßߌwWˆ¾‡ç¹ Ï£n­ŽpÞÊÈéH’ÏYLö1>\ft°DOO𔥓¶ –——Ñ‚o¿}¾Þ|ß§·¯B!—gldˆÁ>fç®^½E¥Rbnnžr¹BÊÊ`ÛÇqÈfÁq]Jå"NÏ÷™žždu­Š•²Ð5jµJ.—¢XÊóÈ£a™:º>‚ÊJÑé8¸®O³Ùai¥ÆÍ¹*³ ¬®7Ù¬µiÛŽ#ð}‰aÂC ÷ZÞµö[–•XW{ž›XuKêã1Š4Ë |ÆÇý›ƒš¦100@>ŸÇ²,<Ïcxx˜N§C&¶ Dã¦%‡Uív›µµõÄ)-ÙËÜâæáXt°,‹N§“ˆvC(j®ëFrb›gß’Ö¤¬h·ÛI{S±XLÚ‘âü!ÖˆÐå0fåø¾mÛ!¦ëø~@oo…Ïÿæó8ŽÃÊÊ*++«Ü¼u‹z½¾å¼t‡}~'óDt+ ¦ûubé·jî²èîÒ…¹“&•²˜žšâرc ôaYÆ'²Äìƒ1û±û±¿b�¦{3Ò4É¡½|ýKËüÃ÷ë\¾‘Æqô¤)IV" &<I¢Ó¦8ÙQèºÏÔX›/>ëqâø Ú]Ú“bÒµŠN\ße½eó×ï½BÃnq¤‚÷—nðÔÄ Š†Ý¢n·xzòþ‹—yþàãÔí6ëÍMú²eŽ Lsµ:²(šUjŠ)”Ü®­ðó¹ Œäûh¹f7—ùâ‘§xíö»á©„%üJNî9qÍÞƒ#ü<ÕÁöËqæÖ0¤ixh†‹.ýˆQ¨@#$žmâºiìlö“#ˆõ£Ÿ=I&—ÙFíÞ™4ìš3"dH|çâO¨wZ zY¨­mû™óóWøÚÉÏq³º¹sè\Z¹Å“Çé_-cûŽçòêµ·ùÓÏàã>ï,]Ã:º¦óãosmmŽÏNŸáêúÜö©(ö� Õ–+Ð%Z{¢£ —ù½ã¿…ë{¼¶vžº×LÒ¼mom ™aÜòy¡Ü¦×P(! ›FÒ¦Ÿzæ‹”g¾i¦±å]÷XW÷VÓuÈX¾{ùu>RjT[ <?@!påF•þl…óóWH&k­MÒ†…’#}l´x¾Ç­Í%jí&…TŽ�¨¶j|ûïóüÁGùÁµ·Ê÷Ò—+% {tw‡Éè? &.ôT†Òsßd3[ÄþÙ·ÈÍþÝ®m}†è³m¹¥J<ä=s„ö¿Nî·þf¾€Ð´c” …1Ïž=ËÐÐPÈ$hÔ1M‹ÙÙ9êõz"9?¿€çyôõõ!´Zíð^;]×)•Š´Ûm.\¸@±XÄ4 N:Źsç(—Käóù[dW‰}\¦»$†õÑ"'ºÎiš&Ég->>Ìá™&G{Ég R–F±&e,,¬²Y[‡ÀÁó}††Ð5‰i¥¸ukŽ‘áafgçÈçsÔj r¹<++k˜–A±XÂîØQËŒA§cÓÛ×C§Ýfh¨¥ ¯¯‚í8ŒÑj6I¥Lòù…b6iQQJṦM«ãR«uX\ÙàúíU––›¬¬Õ©Õ;´:Þ0r«‘RGH‰ÀŒ!i–F¼–Š®4Bmè•!Å®6¦˜9ƒ ä}[Kòù<ù|þŽûP©´{¢‹E*• J©„¥òI„a´Ûíd­‰[!BÝ(]ßX…@—Ol†³g„Û4¬b°&fÆÄ)¥0 ß÷#ki•€8N'¹~RJòù<…BÉÉ Ž9Ìüü·nÝbm}=Žl»ï®ö¥.á{§ö\v.»~.^Tüÿîv¥®ö^]×Éd29r„cGR,â“ËYöÁ˜ýØýب‘RbpâXÙÌ?úY‹w.lÖRøè²8ÜQï R¡IE>ksä Ãgž28|°}³«ˆ^K—CÓ™ª óó[ï¢i•L‘…ÍU>=y*,ŽdØ3µ2ôeK(iÃbµ¹.5Ê™77Ѥäfu‰B*CJ7Yin3ÒT[5Zn‡M»ÁtÏšÔ¸¾>OÚ0‘BF-ÚRˆ/!f&ÅàÉŒb–ÕCC¬÷}Ì·çI¯¶íðQˆÈY@选“KÑ>TF<5Eꥣ  ûÓ¥¸c"Óý¸”MH&Jƒübþ2và‘6SØžËLÏh˜ó ‰.5Ò†Eo¦Äb}´ar³ºÈrmƒÏÌ<Œ,Ö×¹±¾@˵IéµN ?ðñEËiâøS•!Ö›5ëk šI"³åÒ#èÖxîÖ1ùUžB$`&džñ‡ü ²ï¦ùþòYš^ ?*$ºOÏ$ðtÁæá¼‡Ñec­„NK ÐÊÿ™‘¯Î–ÃeE|[¢%$ºÐ810ÅŸ¾õ?*ôÒ°ð}ú{ÊšŽã¹èR#ge(T¸¸r‹”aá>׫ î§nwpý€+ks¸Ê£']Àñ]<å³Þ®“ÒM.­Ü¦/[F×4–U4©%¶¡2ú,ÿtBêVe€Âg~›Æà k¯þWJoÿ f³ ÒGÄ~oB 4 /“cý‘OÁW¿IæégIŠHMûP:ƒ?~!àÖ­ÛèºÆÂÂ"J){ì1†††›ÙG9ƒã8Ôj5 Ã`ii‰‡>ÅððGM4NŸ>M¹\âÊ•«w<ÕÝw_Ö4 ©éHAàí9Ÿ¤P” ‡'r<vb€VVÖ¹uë&­ž ½ôöU0 ôø u Ýä¿x‡R©Äâü*™t× PJb&‹KËdÒi,Óduu|>G½Vgddˆz=ü[ʰðö× [ùò…ƒe¡}µçû8ŽO§nSo´Yßh2»°Á¥ëËܸ¹ÆòÚ&ÛÆÔM Ý@Óõ­vÚìaõŽÂ —{åøj[Q¯I‰fê]®9^"vœ0M„ØJdîˆvG¢\w¢¶Ozž™¦‰iš `r§ý¿<îtB 8T²Ùl" ìºî.'¢nMšø{ñšÔn·q]—L&C.—CÓ4Z­N‡N§“èì‹z{{8zô0kkë\»~ÙÛ³lln`ÛvÄ8UÛôƒî6. Àt¿†ÚM¬ÙË )j…ÛÚÚÕ®¼WÈ0çàĉ:x0ÒÐQZh}ŒÙýØýøg’ôʼn€a¦§*T*NiòÖù.^KQÝÈ¡” ¢cn!C·R¶Îé6§Êpp¦@¥œF×ÅžBz{l¤¥AÖ°898 ®WçI/yŠáB/Á™‘#˜F“…T–ožyrºÀ×N~–Œ™B—u»EÆHñØØati K‰‡{GÈši÷M II%g¦g!Så!,Ý ai„ο²qøàqÚI½ÕuÞ±!²_+Qâ�µKs,_œÃ¿´Œ\ª#œ�%”Ò0ÑCúøÅCÔ&ûÉ”r膾ë´ð®›·”XšÁ‰iLÍàÂÊ-¥8Ô7Ê‘Þ ‚GF L”*ôRLgñŸ£}“ø ä*|åø§15ƒÇÇŽÐñ&JCüîÿIÑÌ⌅n®çÓ›Ëstp’¶ã`j:•t]HÒÒH´}’·,î$}R N7ÃBAÊ´81z„J¶Ä±Ë3|ûòßsÍžÇW~wþ†&`Ê x¾ìSÔ4T p1©ª3Èþ¯’ï?™.!w´'íül!uRšÁp¡/ÿ4—VnaJÉdyˆãƒ3Xš.5¾qú RYÒFŠ/Í‘·2|ùøg04IÎÊÐr ©ñÐÈ4 ÈêéÈÖÜ'­›í%H)¤4 @!¸ij†ÔîhãùaÖ¨û>ë¾Ç¤”XÙ<úɧé N±:óÖ?þ_”gßGà ç›Ô¨ޱñ/þˆÂ¿BjtÍJ…§ø÷˜T !0 ƒÓ§N~~z:Ô ÛF“Ô6ç¥33ÓQÑ)xä‘Gv]³žžžO4ÉßûUÙoÍYM“‘ˆ¾¿ãŠz£ÃÅK³4uczrˆ“'Ñi{œ?¾¾^:• ÄÜì¹|]7±m›l.K ‚Ð]ÉÐèt:ŒpóÖ,éLšÑ±!*•2Ê÷1M‹¾Þ–e„¶ÒR¢i*ÈDº/–‹ãv¨7lnέqåÆ ó ¬­5i´l×Ç÷\?@Ó 2i#K¾ëbj2d”mÕU×õpAyø4„0"¡c/iÉ]rD$([š& ê@ ëa>£º/¸øH Ë^BÚÿd@èÔ¥Ùî  4›M ÃÛÄbçÅH8v’2lqp‡V«•0ebQ|Í2™L2VñkA@£ÑÀ4Múúz)ò;z„ëׯS«ÕX^^aeuÏ Eþ÷bø~ ;fÇ>õÁ&;’TWòîV©ÁXâÈ‘#a+Z6K§ÓЬ¾u4MKôzöÁ˜ýØýØ_șޞ ùœÉ™,Ë+-nÏ®17°Y8®Â4Å, ꌎ¦$›ÕHYÆž…ýÝ6@MHzŒ R)=Ìáþq ©“6,´¨ÀèÉ”¶=ç@ÏXXdd·,�û³å¸ôØQ˜†{â@nkk,¦r‰þ†$£[d4õ²ó 2Ýv˜[«;šÎì•èi†F¶%•MSš ïé#¸õ6^£Cà‡ŸÅH[¹f>™2ÃDz§Ó„ø`Fަ$-…°àäÀ&ËC( g¦#{kèÍ„cÒ‰ðfÝ'}Óåá]ŽÆtg”�‘ )ÓIF3ÈëÖ¯LÙçn ™ØãšÆNã½#|-ÿENOœà•‹¯ñ£ù7¸Ù^ Ø(²ZÀç{ä ”0èy6ü¼Ò³T†&•D7̈Ù9fÛ�' lçŒ4BHŽô3QÀõ\Ò†…¥‡ ´3=#Ékä"'“b:»uu?¬ækND'ÚSÓ)4>Y ࣴ§Å‰R ©é©‘ÇüÜשeþoÿ3ƒ?ÿ{¤ X=ñþ7ÿz:…YìIœ“b¶á/[}4ùOpç‰Öµ»¸°ýÚã2j˪7d ÉfÓãêlÇu©×[T×k?>M©§T.ráÂzñ\ŸÁˆQ%# ê9RÖëkëôéúúÊ,--sâÄ2) Â4uÒ醡'­‘10ÔîøØ¶K½Ña³Þæö|•›sëܘ]¥ºÑ Õöp=*b5Æ IÄHIÄý%¨Hä5lÞáÞ•¶AàGëªB!…BGˆ4B¸ b!^µ | éº òHÄ×q쮢Y}äu'v¶ú8€äâN˲B%vÕ!˜%žç%mi1 É÷} ÃH�!ËËËQ+¥¹‹QÓ½Æ×4•J%¯íº.Õjçਵµ5nݺÍÚú:­f ×uC«÷»hÌìÂ|˜=EípKŒ˜îC)%¹\–ÑÑ1N:E©T"e™[KÐétpÝhŠ«}0f?öc?öãŸ×zG¡Oq‡¢Ü²t,K§RÎpø`O¢/„ˆýmé¦Uîi%y/'ÃQQØkåÈ›)ÜTÛ'֩ѤD—:)at±•E¤Qüñôîîb1ìÁxù0,™­ MK…4ç• ‘Úã5ïFCþ °4CfÉ™)zRÙ®JñqJ´!0¥Ž)4’Qw¿¶÷3!ޝáöÖ;¶%\{ÙÝßϧs>ÄáÁi~¯ùn-ÌòîâenÕæ‚&Oô–)²hN$Ù—¤�� �IDAT“«ÌÐ×?„aÄÀ‰LwG‰‚”º™&mx¦¿åäpáÃÝ%ò/WX›BÇÐ5´OØÉ€[UßÝîá^•š†™ÉS9þ­‘Ü<óÊñèyôSôôô€¦!¥Ö5OÄ'ÊÆú§^ÜmÎû×k¯}*œÛA°ÅòPà*¸®`nÕ¡Þòk†ÀÈzµÎÃbb|„|>Ë»ç/âz.£#ÃŒŒŒ01>Êêj•TʲLR)‹TÚbrò87®ß„À'ŸË’ÉZ¡ö‡‚ÀÛñèt\Zm‡Z“Õõ&s \¾¾ÂÙu66[¨$7¨ ,Ê¥Öe-M(ñ"º–p …º.¾ïã8n—NN|kèºÑ¥õBؾ¤JYa‰©„ð€ i±Tä-I‹”÷O—%25ØÖõ�Ïé»1>ö¿Uj{NfY©ÄÆ; …BjµN‡t:mÛ ‹*¶µ‚€ÞÞÞ¨‰Ù3ñÜŽ5Ýš3ñ~ï©ñsMÓLZ¥Êå2<xjµÊõë7˜_X Z Û˜b ïÎZ/¿üuÜþš]‡eš†eYTÊeNœ8ÁÔô)ËJæ¦É䳯º=Ÿ”ëÝ>³û±ûñ §uÝ›ÚÎöŽ'ìÄ'Kâ.¥›øÀ×¼—H,a`é÷Q´NÜ¡Êd{»‚èÊ3b&ØùCcB´ó±»à|@Oú@I°Dø(`E îXh˜³ËÃ^CùaOÎw&Åi)¤ZwÝrÏûêÎ`ÎÖ)™Q08’Ér`r†@…:$zôšB„ZBÈm- {±Ív·(u#E!O"%tÐtÔ':Vâ·ß  ê6Òø0�ë.@E„¥o¦Xaü³/„NVRn1•v�rûÀ½EÈ"¸³öѯ펵hhÉÜÚÔô=)5‚Íf@ç¶ÍF# ã¬°Yëp`fˆc‡'øô§çæÍÛ\¼x™‘Ña¦¦Ç0-ƒt&E¹\¤¯¿L:m‘2Mž‰ÞƒÄvBG'ÛvÙ¨u¸~{• W¹vs…Z½CÇvq½PV7P Eb¯13B)… žç&,A!DÆ ØÆJQ$,)š&ñýPÑ»Ÿ+‰ "^ÒŽdG  X(¡MT2 ¤‘u¸ Rh{,ž¿ìús÷üçA™ß±‹Q7{¥›ábۡ嶮똦¹k] ™+!àƒ1(d€„º/1S¯×©Õj¤R)2™ ù|>ùÝ1ÿ¾ø54-l™K¥R8Ž“°ešÍ&AN§›˜-£i›››!( œ<y‚Ó§fuuÙ¹y®_¿ÎÆF5rcêZ细~§¶Öå »Û”èb$ÃCÃ<ôÐI‡Èå³hÑ=!¥Àqœ„1dÛ6Búúú>1ç»}0f?öc?öã+PªÑm‘yOEÈKrî[½„Ø*ãøÈ•ãη§îüv»M<bJô'‘Å¢Kø$TDëÕ?h°×˜Ý/�fÛó’ö}ñÉ7Dl×î­Òÿ0×äÎcê!Ä'ÓqÄ c6›½ã=³Ðßc–iba&½æ Œ!~9€s‹µ½”�¡º\¦ö¼>^@äWQhø¾iklÉÂuOì³½×BfH4#Ôš /l7KëWéäõàïI[Žëºtá]ûÑuûJ!“yµsÆ‚úš¦¨�å‡f@G²¸PoºlÔÍ%sâè$CCƒ”JEê&èap¨Ë4C‹ÛõétÂçml¶Y]o0¿¼ÉüÂs‹›ll¶i¶:´;vHŠÐšYˆ b°ˆ$ÇPJ!…  K=B†m —Í"¶ ¿n1!5@)RÉ­µNtY'…´ ¼H¸ÞàÿgïMƒìÈÎô¼çäz·ºµU@a_Kw½ws8C6ÉRÃ!ÇšU ŽlK#…dKV„ÿù§#d‡Ãv8а#Ë¡K#JÃ!9$5í6{ïF/@£n4ÖÂV(ÔroÝ-·sü#óäÍ{« Kcé-?tUÞ¼™yNžs¾÷¼ßû ÃÆ !$=V„!ÏííxQÑn·‘RâºnOÙ¾·NÇ#ŠbQáb±ˆL@(€b±˜·r ZüVqy‘ ÃÄ¡­;ÆéïkµZ´Zqyfhh]˜l„aˆe™ËÀ ÍZÑ?×cñØØXjcÝjµRQ^ €èg¤Ù.ȉ¢X[Í÷}år9ý¬pÂ0Lï­Z­¦ ŒfÙŒQ¬²uÇVÎ]>ËÌåšó-š&N'-ŸZyÌV×`ºÇ¥:q–ÉÈèÛwîbûöm‹¥äúºÏ§Óé`Û6¾ï§@L©Tº©òÖŒÉ#<òøÄ,| LÓÂ÷CL3²ŒU“øO n=Á½îYo÷Â\\ûW=÷~1aâûÝéxñI²£äcÛÖM-ÈîZ,îLóÜô5¨;ßFz¡*¥¢Ùlõìì†eYt:m,ËÇu›JÆï‹Bô/!UH#ÄGÞzw¼½:NºèÍ ”‡aH§ãQ(¸7üÌW>Nd´(ò¸õ1Ð\fÙœÇÊós¿®˜R1¨”D†%$R„‘¤íKêí€zÓca1döìÞÌÆ ëP"Í BI»ÐiÔ®.4¸tyéKó\¸TçÒ•:µ¥aź`I;™¦“°8#”23Àe¯x©ê+ÛB$ ºL¦i¤îcËK>ãyQƒHF©lúnKý<dwnÂ�ÓP@§ÂŽÇB$‚¨ëx}º\†œ9s†(ŠÆ0aáy®ëR­Vi4ÌÌÌàû>CCCi›¶ZMöìÙCµZ½¥k‚€¹¹99wîÃÃÃLLL`Q¥lŒB¡ÐSúæyW¯^åܹsìß¿?µØÎöÁ<énèsjqiÍ®Ñ/ƒƒƒØ¶¶.WÒ@‹išéZ§{þxêyN'vÙéù¾lÉR?»fhh(þ.ßà <U|&¶¬aÛÖ-xõ€ù¹®\™¡V«Óh4ð}ßRÝŸlI“R²@Ì̦i`Y6år‰R©ÌÚ›'Ö0¾~N©€éØÈ¤d2)«Š]©bÀÌuÝ[àr0&<òÈãc ÆtkoÛíXµÝ²ÌU|½?_é|}×âS´ ¬â›–âÎÒ‰ƒ ¤Ýn#„‘Šàé?–eEF“R©˜ÚAæ‰Êò¦w°Ûé…X¼Ë'÷ÙE©NðmÛN“×unÊNsµd? ,ÜìùV»—[=ÇÇ9YÕ!¥¢ÝŽGÛvzÀ½[ëy±`g¡àÞ} 3t^‰¢0y¯b½«\gg¥1N¥]V',NX£®Mn¢'e`&Ú( ” —çj Éb#¢Ùòhw|î¿o¶íà‡! µ6ïp‰£Ç/qâôk­øˆ©6Äš¸f?`&bGEDa„”ъɤNÀu‚­x @F’HF‰®ÔuD¾EìD£ÇåX{$JÆ`ý®ë±ÓˆŸ‰Htw1B °‘ª€!|Pьւ²1ÏHgCCÃH?žç111É¥K—’’›XP8£nèœ%‚¤,gù¸¿ C¯cÆšHA‰Õæ©ÁsàÓéÐjµ(—Ë Ç!‚´ÝLÓÄqœ”Ù¢Ù2šÉR*•Ø1Ôn·S§%ýY}oz½”-“ ÃB¡Ð£c£PDNÄ‹L˜kQmE³ÑÄ‚M7°}Û–Ô†½Ñh #Éb­ÆÂ­V )%Ífƒ¥¥Qaš&kÆÇ�E©T¢Z­211㸠$ï RbÑÜEü¥æÐQy»X"JJÑ›Íf i€I¯s0&<òÈãSÆhM‹ XZZJê±ÍäÿVÁŸ†¯‡$¯RñǶc{Ð~½½X /i+cÙ¢éF“ëOsb£„@ܱ~»|ÈÄÝòœ”nÞ¿3 ì´ZmÚív*:y·Þ‹å»æI¶{#6žŸ’ñMßr¼k¥‹ýþ÷JƒiqÂÐLDcVAwŒ=šfÆ…*Ìs’ŠH† EOycÜŸµ¨iW¤ˆUœ\Ê�eÒñÓ—;4[!¡ºÈ•EÉâ’ϥˋÌÎ7h4=:? C B`"a–\.1¬Øº^[òö‹ùë³gìTdæ6E…H)zúB”VRõŒs1›B¯adâ6•°kè– aÄó„ɼ[c+e!¥M$ÍÛ^µiY6;vìHž‡ &'×R,–veüFF†B01±6ÃxR·,à*„ P(°cÇLÓdݺu} ÜxHƒÕf†•ä8ÃÃÃ<xB!6è_Äm"ºš@ £F3]— ™ër"è2a´&Œçy ¦lN§“Šòj†>‡ïûé†:5iÇ%íÈ$ A'êЦMGµg ;²±K6Vb!­Ù; ÖÇðÐ ¶í066š²‡â¾kžçQ,)‹é=ègf¤Z0n Bš®ƒoYØÃ“ÈÐÃh/6k1ÀÓj3492ÂLôÇúK¾r0&<òÈãS’¨dwô„¦wªbQËnþv+Éë'?AÈÜ‹JõðoÇ™3‹YeZŽ‘ªè÷/²»mUÀ²l¢¨k÷¹üZ¯}Ÿî\\Ý1å!J˜¦ØI÷'ŒÙòýwüNÅÚ2ýîw£ßö÷áOêî„®—ö­š¥Âɉ³G–Š.s,æ.ÌEÝ1Ð0L')OÉË“®9+)c}®út* Õÿ™$áÁœ…A$—ç|æë—à­Ëx~˜–]tKNLLË@J³c$}ßÙðfô©ôϳB®q ’¹Ú”˜é‰.L~§Z1(¤VØýZ2ú»¥Œµ T”‰]¬Ìw‰D¤?.«ŠE~¤a!qn_GëøXÖ*wÂ<' dôÏ–e÷8ý鵡‚ôQo ¥€XZk;f-¬5h´x¯H4[E÷›¬ ’fšj¶‰._ƒ®FÎJ¥Rª±§™/Yh %Í Aƒ.#bKÄÀ¯Öè ÃR©„”2e !hµš8Žƒë:ض•º@¬]»6½f×™MÙg¥¯+ îËS¡³´TYªâ-Õ¡Yc°RÆh-5k¥ Êv1MòîÚ¬ƒ1yä‘Gw`PË@= /[XåqÇÛ ¿-VÓêÉ.8 C¦ ›<î^ô'?ײ®Î&”zÑ™¿[w7iÕÉÙj6ãÙ6Ô»Ây[ÝývZm ÌcåçeZV¬t"ÕjùOÄe1É36ãÄU»Ñ˜¦™º~Å,’¬µxœlk ˆËˆÂ$YΖ£t¿+ž“„!b‡"ÓÀT]7%]v±LK©D4?ë„ÔeÅÄe5˶±m«§Ü°g,NÎaÝ´2 C eŸJd4ß2ì–KÅ@±öm¨wÉuAˆa8ÿ~eZË@ ”º®Ùƒ˜uKú̧¹¹«)366F¹\Æq:Žã¤ýDƒZ¸Yný F³Ù¤^¯399™–éòª0 ©×ëH)©T*=¥<±p”`XWƒ«4Û ›‰Èµv²›'Ðý]©TJE‹Ûí6F#Õµ1 ƒÑÑÑ`)‹´Z­t]¦¦B¡@£ÑÀuÝô~S›  Ùja¹JCÃiù–)À»zsö�{tЍ[[ç‘Gy|ê¿+-†óäî·ÁJÉýjm‘e^dk³ó¸»mw­dqU{éüýúHÚi5«ø•¹ìkÞVwŒÉãú¡’ÿA ÈÔöÙXÖ¿³,†6Ê”žt™+ ÃP}ºTNèݤ1LeˆXÛ%VúÝŽ´3™è3iÓ¿K ˜&%”Z G[Wk`H³1ôRÆ@G¦Ì¦ÇU¯k0… ›¤ÇeO SFvs£d¿m€F£çÙŸg°^=.Ýÿ4 ‘è<ÏÃ÷ý´¯iŒÖžÉ2¤´[’‚z½žö­5kÖ ¥L,ÙMŽÁÁÁÔ2«5S*•bñ`"Ú²'=le³¹´ ¢Äj]u]Œ4+2«?”ÕkÑýO—ã8ضŠíêßeŃû’²4ú<ív×uS¡ÞHJDR¢çŽN Ç1d„ô:˜^#còÈ#<>u‹º>G†¸”B—)å‰ÈOBÒ¥ ‚yîºâ?y;ÝíÄQ/ª²”îkE·üOõ8Ÿ\¿óç}«mµ’¶Òj‰¿|ìÚ™fýÀ³q½ÿ^õŠnòs·úûÛ}ž[½ÿþc{ÿ—hæåIׂ"éíŽI¤»õýs{:×$šgYÐA³²àHÿø#26Úݵ‚JÏ•M^…ÖUKO"R†Iè0’’Ïn"i"¤.ΰx2 »H.F³f¤RˆLiJVtWeÜâ”è:ßÄÖà�ZOÆXÆÌÒŸ¿=mÕxoU€÷ãÄhqå¬z©TNK­”uÒn·S¦,0—uéR³ÙLÊKÝÔÐ`šþL–ɤA þ!h¶šH!i›m,Û•.Õb•À böMØu]r]—v»2Z²÷ãû~ ºh-™jµšêúéw.kîºî²ûÓ,Ý´±Ö™ÉêìÄŸ5QÂ@ Û²Ý"¶qwÆÅŒÉ#<ò¸ã�LwBíZôÆš¦i¦“e¯¶Eÿ¿³ éþcVúûV–2«}ÇJÇÜ©ëYéó+]Gÿ¢E¬ðßj…ãc L»†¹¢u©vˈ¢0úuòý¤BRª”b½¢ö½®K–ebYö‡H2s4æVÛ*¦³G)~µÐZ1¦i,³#¿ýÉŒ¸‰cV;þZç¹Ùï¸ÙãÔ*cÞ‡yÝqQJ•ó´® žåÁ2K¶ôhYÙ—Z>¦d­¥5 “ý¬þ³`L·ÌB¤6Šºl$Ë4I¿Mõ2M´ó¢žë¢(Ö±M 'ÑnÒÇe™ ­U“€wF×!¨_‡F J¦¿ú÷†ˆõ9Ó÷Þ0¦è¼nc|¬q¿=:)$Ñ`D­VKºuß³m;ª¨T*©Øº.MÒ6ÖÙÍ*Í¤Ñ J*r, 4©…5TŒ¶[vñÚ^Ú·u{8Ž“.Y@N[L벩z½žÚgAL˲ÒR&¥N‡¥¥%Â0L‘bG¬®®Žçy´Z-FFFzú¬E³åç², u—úPÆä‘GyÜy8&]ØêÁ_–Ùïö.´oæß«ý}+€ ×9§¸ ×#®sÿ׺îë}¿�Œtâ"ä÷ $Æ`M¼àÈu>ÊE'XV,¨Eûµ~4¸»N¬®tíD+/A»]IB…ø¾—ŠTfÛBƒÑŽc÷ìêæq·ÛIašž×;æí±rôÛ ëÒ£, ¯g<Éìô3?4%+®š-݉Ø>(~‰Ò±Ê0»ì²4±…G ^v` ¬¤Œ‰äŽEÒãßgY7=à]R•$2 Ekg"Ã00Ì„ý’\«²%U¨ÄèzP'›g¥ŒzXRQá8Nâ(h222’êI)©Õj©›vlÒŒ“¬Û’E4¸¡×CZ[&uU’>5oÃ6(eJ%,ÓBFñwú¾O­Vc`` =§î[¾ïS(Òs´Z-šÍ&Õjµ¤ÔbÃÚÉ) îèr:­Ól6{®Õ¶m†‡‡S@'[~ÕÊèçw7™ê9“Gyäq&Ì,ŽãfDûòøH ²d‹Ýy„a„e‰ž<¥…‚{M-Œ<îlˆÌÎl¼XŠ]² &¥$ž×¡\.§Ž$Ùè›éy|øvê>sm›*‰¢�°{�iír¡˜)=Ëãδı%®Ìã•@%€¢¿¯êg¶RéQ\¶ÓfVÞí+=Ê–P¬ôZ,â%6â÷O¡½¥L);!jbaáQ’(R©`pé”Ht` ‘0fô;_«ì"ÎzKõ³M»k¢¸œI)…Œ¢´dêöÍú>oëÃÝwÆË–ovíèuÿÉŽ¡ó<¯§Dzbw;ÏóRW"Ã0R½™¬æŠ#4h¢®Á(аl ‰¤#Û\ñ¯0êŒB p .Fâ¨'T*Õj•v»M»ÝNmº=ÏK-°õæŠÖtKõd²šb¶m÷°c³Pú÷RJZ­–e1;;K±XLmÁƒ HY?zý Á-ìºnêH¥]¥r0&<òÈãSôë¿£(ÄqìL‚™ÇGˆ¤;<~ÐÓfRFéÒµ/•ößV½{Ÿ7'’Ù[Ú/z!ï$ËÛÌu]fZîÝ%lÛéÍVJ²ïc¿Øf6ùˆ¯zà©qHÞ&×dô¿ãW™.¬õÚ0¶mæB²“6ÓmåûqÙ¦i˜Ÿ~7ö›CˆDä“ÝŒz‰,C&)¾I˜1=â¾}ÚJý%ÌýZ4+–*ó™2b ÔÄ0»çîeº–2i€&dzp=üI¥ºKÏoe®[ö|Þ+[Ú÷_·èŠãÁíƒ.]’bѽåJâ¿ýëÇ^ ¡0Œ¨×—’þ`ôl>h†‹f~d[­�•J%9Úí6­V+ÕŠénNuzú§>§ïûX¶E,EK4£&“î:T¨p\§§TXƒår9=´ˆîââ"¶mÓétBày^j=22–•"ú:4cFø˜µqï®LNNbÛvÊÎÑ,6mƒ»nÅ`hôïƒ Hµhr0&<òÈãSÈèIÊ4 ëûnìR¯T×þQF¼ˆéô$øñä.®ß®�ÉbT¢$íkì¢õ>_µârïF&>ƒoBÐÓVaR,–WLî¯%«ÿŽ¢(q‰E*L#qÿ0Ít·/Ûr�ëöí, ¼?½ÙçדüfQ³L#>í²š³×Ç=,Ë¢h<äL¥åó•PýVW¬¼Ñ㊡Ç#-¼j,®Í~> &Ç,%c#3Ë‚ÈþÌÈØ ëï73¬˜^𔥣1ÿì;ÙS6eˆ´©ß½÷ºx’*Bi—§þ²·˜’RÆȆi×Ô—ú0ï ë:jœùhÇzJÞtëç¿§fÊr‰A;»Ç]©_äV»iÀ%+š[©TR€Dƒ3žçaYVZB§Ù(RJ„)h„ –Â%Êf‰qÆ1•‰á ºº.Y;í´/&ç+‹‹ÅôÚšÍfÊž)‹éµér©ì9³ýSÿ;�“û~Qjñ-„ P(P,Sç'€v»”’B¡>·lÿÑ"Â9“Gyäñ)c²;^%ríkT};i«/²@Â\sB Ao´h ôGŸ@ö×ýßPÅŠ’ °Ílç4mYgÐ\GÕÇ6m a"’éêß½ð"2ÌŒ<Vz7²ýU37sž0Šh·;œ:s–ÃGŽñþɳ\½º@Ç‹w몕 ““ãìÙ½ƒûïÝËÚñ1,ÛJœ›Iº³ý곤=ÔßVý Ê­d-]¦A·,B]ºÙqðfÛ*«Ý‘¢>YÉ ê‚ùp³| †žR¼¬ÆÊJÏQJÕˆdN³Œ­·8E2µ«Î‚<Ù¾™«Ór¢d’ÂÐÁ`¹ÓS¦•ûßÍž²©>íÕ�OCëÊdõñ"¹"“H(0„‰¶—!Œën|\*îŽ :¡×@{FضÕóNjðB'â½6å e¯…¸�4#Ë–¼]ïžv€ŠÙžAà§cÜÀ@×u{˜0½}D¤ì(­†±Ps±XH™Y€..Å.†!år ÇºÓé`˜^äá ?ôY[\Kà8vr>a¦Œ èf-àûm¦µ ÀÚµkRM¸r¹Ü#¬?£-¨ÉŽ·A¤"ÿ®ë¦¬f½6ÐŒ¯¬K”îZ#GŸ ò2¥<òÈ#OaRr=°%`mj78ëØ…lQèóÔÏŸ“““ìÚµ3™ü»»ÛAôØeNOO£¤bó–M];ÌU½× Ç/ù¹à˜‚û6Øl·±Íºl+®Ë¾ÑD1KC"Ÿ³Ãný –(ÊjŒ1{+k팸ëq¬†0“?ºn_s*Y'²‹]'q}àL/,–QØoz‡^%‹Ð.s)Âýøì’gË Õ™LÙã}?Þ)<òîq¾óýŸñæá£ÌÍ/P¯7èt¼tfÛ6Åb¡ÁÖ®]ÓŸ”¯õ‹l˜ZãXX–yÃïÝâbÃoF¡¸ÿþûpÝBºÃÙßN+•Qõ?ƒc‚¿R9ÅJ»øÙÄïZ÷Ñÿ™PE„2—ÈgΫ1-!„`ب0ê R°]\ÃÆ&Ù$8C¯óØ´žÍ[o¾M§Óf×î]ŒŽŽ®XNÒßOž<E§ã1<4ÄSO?Ãç>÷8Û·o»-ãóݵ…r™™Aï ¬à¶·ÒxÛ3gt)e¥ñy%0VU=ÀK?;%=òi²ÚQ/O„õÝI™h’íœd¤èú¾S–a¤ ´ž~½šMv³ÏEÿéÚf‹D¹ÕÉ¡[^ŒAˆR’«W¯¦ÌjµÚÜ7Kt:år9eqè’Ê R`òL––H)Àql ÃÄuÝë¼ÓjùE^s æ¥Ú'J šÍfÊΈ݂{„uã{é¦òš%Òjµèt:©>‹BÂ0ì™s4°¡ï4€¢×}­v+¬¬ˆÅNR…{(Ëéé¿ú™e™ÅÝp¿G“F‘–(e„‹Åbê|”s …BzÝÑÂÏZH:‚”é¢Kœ²@vHÒ ¸ˆéëñ}ŸF£‘^¯ÎÁ˜<òÈ#ÏÒ¢/«-£$¿ƒTÛ´q-'Ý•º‹{¥$ív›óoþ-_ÿ­¿Åë¯baá }ô‘tb»pá"?úáæÞûîå™gžåË_~’ ç/F!ëÖO¦“c¶†WïÖ ‘‚·¦}þô¥¥DðÏà…S>ÿà‰ûÖ»˜âãÖ×_<?Ãy�� �IDATJ¥h†KœlfFN#‰é¾˜ŽÞÂð JKì±v±Áº‰Â.J…2¦°bZ·‘èä;”‚l*$®q}aÅ Ï8Ð`Ø�5+Ÿ"K^ıK>ãƒ#ÎÇ�(»™´I¬úNé?—g®ð¯þäßñï¿óc:íhFT’¸èf¢–×d¾ÖâÔôe^;ôßù«ŸðßüÿËßúõ/0<T½!ñY¥ú§ÊR½0 ^|áe¦¦Ö30Páë¿õ›i²¢™YQBý;½;j"]P~\g!VPþ°L? h-^^:Ζ^ãUy’%Õî:Ô(¨Š"™Ûøzå!©ÞàSÁÀÀŒMwQB\“¡¦ËÝžzêi~òãŸ1¹n‚£ï¾Ë7¿ùMFF†{Þ%ÝNRJ¾÷½ïS*•yèÁ)—Jüò—/°¸¸ÈèèhØä'K'‡czž„Š7Hº`¯BÊ^Ðd5&Ôòr ±*Ø«£2–Ùª‡Ñ°ª£Xl—dÌ0�™&†aÄ�MŒ^cºªž5FúþñÏ"‹÷—sh¡Ü¬kT–a«™ýŽOY`k%€çfIеî6M“V«•8)lÛ!Š$õÚR,ÆœZ‹Ç¿ó<Ÿ ˆp;ž#™–ê(a(qÝBòÞK<ÏGƒ0Œ–ÇýmªÛ$n÷»KÏóS††fx�´Û:N̸Jæm­ç‹z½ÎÐÐ@ é±Íqœ0ÑŸ×�MöçZï¥T)qµ=(Ö”×Ði´©‹ÃÃ#i)›ëº=ëÐ.‹éæ|ßO@°¸®›>»r¹L½^OïY¿3¶msõêU,ËJ™;AP*•h·ÛÉóòR‘^×uiµZ=VÞY ' Jú¾ŸÚdkW¦(ŠXXX T*¥öß9“GyäñYe€V£Éÿ1ÿ# –Í”ã+Ã+W‘ š^„ʘ Ž%(»æui¾×K´pàÄĵZ )%ÿé?}‡ééi@qðÀ¼þú\›cúÜy~ðƒràþ´Zm~úÓŸñÒK/ãº.üÇÌŸýÙŸÑn·yôÑGxòÉ') „šî`…e ÖT f/ŸöÙ»ÎùD&� E3¨3œÇW2^t E$bJ³"ó4üW9¼IÑ«0²´‰qk £ÎFÊÎ E£Šk–° aÄ©£’¤‚‘+E«Õæé§Ÿæå—_¡\.ówþÎ299A½^ÇqùÞ÷¾Ï7¿ù[ Q.— ÃÏóÒ:jí¸P.—1-‹ R<w¢ÃÏwèÛ4¸w}È×ö®XâãÝ×D͇Þ:Ê¿ü¿ÿœ_?B»»ÇtS.±üELu•¡P¼ú"ÿãÿú'|púßúý¯³qÃ$N²£x-¶[©T"Š${÷ìÁ²~öÓŸQ((W*<ýôÓ(¥øâ¿@¥Ráé§Ÿ¡ÓéðÇü÷ùÿâfûöí´ÛmlÛ¦T*ñþÑ?¤T*~ F¹ë¿[ArÕ[䵿ûüeã%Þ §i)€HÉL.&X¤É3ÑQ^­Ÿb_sŠÿbà1©ìbԌ߭aâdÄ Z­²oï^6lÜÀ_üÅwXª/Ññ:ìÚµ‹7ðüó/àû_úÒ—yù¥×£^_bqq‘3§OÓlµyöÙ_pêÔ)žxâqNœ8ÁW¿úŒçÜ'´§Š  "Òäzå÷=Þ2Ý\©"ˆb>[ÎÓ÷³kºâÀQ iЙ¼dô`´¸®.cÑl p›ÂHÇNÑ­Ÿê‚&]K¤Ǩn‰Tò¦ª¸L(ûõkÌô�MY†Oråê)ÕWI¾Ëó<Ú­Nú|Pk,ñÁ†!Ûwlgpp0óü$(A¡è¦®R¨Õj\¸pJ¥ÂÄÄDÊɶÝJqêÔiZÍ•Ê�ë§&S ækE»Ýfzzšz­ÁÖm[\VB¥Û*臫Õj*¸›íWºäH—â辦 ^H³²}áÓòÛí"EQDIIaÐEJÉÒÒRø¢Y+ºŸj—$]r5‹EƒEú:tYU@QJQ,iµZ §`Žf¬ÌÏÏ'¢ã~ê ¥Ë¤ŠÅb¦Œ+t²�fÄhëk Bi}mƒ3còÈ#<>‹ ¿dwËë´ù¯Ô#¨ ^`ÙA„Œ"$‚ŽÍsìRˆÇ2Ù¾Æâ {‡påe 7³ /Ö"NŸ>M»ÝâÊ•YNž<ÉýÑ·øÎwþ’óÎóàƒ¹ÿÀý<û̳|ùË_âô™3,..põêÆÆÆè´;œ>Óõ·lÞB¡P$ (¥b® e×`ÓˆE).«ˆËõ(-Èú¤µ•’’Zgž¹à ¡èj "Þ›B¡0…xtd“E1ÃéðUœN‰A1Á˜½•1g#ö%k„¢UÅ6, ec°2«¥ÕjqîÜy¶mÛÎøø8N‡7Þx“÷Þ{¡¡!&ÖN°¸°ÈK/¾L<þøãLOŸgff†±ÑQÖ¬]ÃË/¿Ìž=÷ðàƒR4-æš’§ßó˜o†Ø†‰mÀá {×YTK&†)>mÒefhQáû¯¼~„ÿå_þ[^ûmÏKz›±b¿Ó;·†X¶‰e˜aˆI.Î,ò'ö}jµÿý?ý{¬›Xƒe­.z*¥äàÁƒœ=sŽ_þòEJ¥"{÷îÁqlN<E¹<ÀÄÄZÞ{ï}î¿ÿ~vïÞÍ3Ï<ËÙ³ç‰BÉûpìøq6oÚÈ+¯¾F@ñã?ŽÝÄÏW:.ŒB.´®ðŸãí׸¬¯ ÜDJ!ñTÈóò8ïÌŸã÷½Çùƒ¡_c²8†e Ìkކa°mÛ6êyçNž:ÅâBM›6±{÷nþõ¿þ<ÀîÝ»èt<Þ}÷]¸¡áa,+¦ÚïÙ»Ã0xøá‡8uê$¿øÅ/¸çž{È'¸OpÄ.SÆMõÿ,ßC‹ÜJ)reÆX9\.„ ÅgJmRVŒèÊÆ÷°#…ìqÌJj¤b#)„ª'Éï3Ëf$�”qÕ’¾ÏxÞ3®ÉʲæâÒ'#-ÙRÜj’JËÀtƒOÝó^¹r…7ß|3MÜ÷íÛ×3èÇnTNÏX.eÌ>|ø0ÃÃà Þ¨púÔi‹‹5Æ×ŒÞ0ó /06:N¡è28X]õØØ)¨“0€$¥R©Çâ9 îiÐ$Û?ûÅu¥’(CÑ”M:²Ã3„-lT¨0m—0Œ zèR#í¾¤K¢²çÔ¥IªV«iûè>¯›¬KR–Í£Á ¦4T€·R©¤¿×ŽHÙµ€fœj¡Þ,@£”ô56›MJ¥RÊ>½[,ÆŒÉ#<òøX%1’ ÓÄž}…Bg„BaB´™ÐÙ‡4 D%JÉÄ于ð‘Q@dX)»%ž€µú~·~võÉE¤Î ¾ï†ÅbÑÑž{î9‚ `ëÖ-¼ÿþ ._¾De Ì¡7±aÚÍ&ããã,..26>ÆÔÔÖ¯_Çù ç €ûî»—ª8–âÀ”ÃSÇC®6"^ì<ôØVç#§îk]‰¸nÀA)ùãG>—ZçiK¿›Ð¥‚‹Zï"]ïŸÒ©‘èà‹sÌ8å¿DÙ¦bŒ1`¯aÄÚÀ”{ƒ…5˜†µlq[*•¸÷Þýœüà$ïjµÂw¿û}¾ô¥/1=}Ž+3³ø~Àºõëxö™_Òjv8{ö,•Ê�|pŠG~ˆ>8Å×¾öÕtñr©á’±²ÁÔEÓS\ªG\\”ì[÷ 2éêé÷À÷}޼{‚ÿëÿýK^{ûA¨ÂZåݤ|rÍïÝÁÖM“\‡ÅzƒcïáíwOÑêxü§ï?C¹\æŸý£?d|lxÕ$D)8}ú4W®\¡:XÁqªƒLOO366Æìì,¾ï±{÷.Ξ=ËéÓ§A)lËĶ- ×up]Ë2?e.·¢]¥ˆÅ•O5/òÿÌÿ”Ÿú‡iª›¡‹ÇçX¤ÉŸ·žg6\⟌|©ÒšD¯éÚ×xñâEΜ9²ÆjLOO37?ÇÎ];Ù¸q#'Nœ ÕjñðÃÓé´9u꣣c©ŽešT«lݺgžy†/}éI …BîPô b²÷‹èöƒÁ]½˜•ǨT·=Ò/P¾ZIR.[§ú.=ÖòÂ0S`9½Ã�©õQ̸îùnC¤29ÙëªKÌ–ÂýÏ•®Aúõq²¥"Qa ÕW û!ßqí1(ë&¯‰V²’îm4˲˜˜˜�`ëÖ­ Ýð{„!µÅ“““7üÛ¶™˜˜dæòöîݳª0½.³q'e‚˜¦I½^GA©TJÁ ÍTÑ€œ.CÒ%=–e€Èˆ˜ëÌ3R¡¤ÊXI‘§éš‰Ë’”]ÑãÔ‰) Cp]7ëtŸŸŸO-«³eLº¼H—Ði†ŽIô÷hö‹f׆‘º2A̪×ë ô€9ÙÏêséç¡5u´¥öÂÂããã)P“ulÊÁ˜<òÈ#Ï £Qˆå=ÞÀ jñ‚GxKåq<{Œc÷m°),ÇÂó%v ¤Ëìì vÓ2ql˶ÆMêiûxÙÿv›þÏÿQ$)—Klݺ•½{÷2;;Ë<ÀÔÔzÖ¯_‚ýû÷±¸Xcrr‚uë&)K,,ÌS(âá‡Â÷}FGG@° Áƒ›,ê›®D • öNÚÜàÞ°@ñǪ½t¢çÛgñ£x!˜u‡†HÿÛH3`ˆDÿC(B!dx4d“Yq+4)‰.·Nðùñ?°—'àapõê,–e1;;ËåË38ŽÃÒÒAâ:.J‘ùµp\Û¶(– ¸Ž‹0CCCLMM¥‹Òuƒ&eWF‚¦3K–!Ø0lòÉkž.Ey©ÑäÏþã_óÂkGñtC­²ü(lÓdë¦ þð·¿È÷í¤T*à‡EÇåòÌUžzþ?üéË\oðçß}š-›¦øÖï DZW\¼Y–ÅÃ?ÄÙ³g˜šÚ€mÛlݺ…ÁÁ!6oÞŒ”’7°uëV¶mÛ ÀæÍ›ø¯ÿþÉÔÔkÖ®¡T*2¹n×u?cÛɈš·Ä¿]|ŠûoÓTdvË{™¥u& ËäÀ E]µøÿMŠ‹ÿÔü:cæðuí¯÷îÝ›&iSSSüðM©\bûö­lذXÐ9|vïÞM„¬_¿Žb±„mYqù¨i$;®’uëÖ±aÃÆˆùÔ3±øm²Ü#PtÆ® {Šˆ•ÿÕ@˜•ŽMõ9’²!#uø}nˆ*eËdÁC ÓL]ËA ˜µ"Qª×z[ëéâ¢ØÉ¨¸JE}Ū::B„Ÿ%Ö ùpÖŠ‚„•C”aÅÏCÊØ5¯^¯á8?þRF %ŠÅbÆ!©`ó<ÙÙxžýüç?mÛÔëu|ßghhhU¦K,,,°oï^</Ö%‰Â(OV )%­V‹f³ÉöíÛØ¹sÕÁj ¬ô ÇÁ¶Í”…¤eJÚmH3F²½YÇ Û±ñ¥O'ꀣîF``fÚ¢(Ķl"¥ŽDQ¥€‡‘‰¢ˆV«•>!D `é~é8NZ2­Ù*Y—$ ¦è>®ïA)E»ÝÆ4MŠÅbúy ÎA€ïû=#Ú)* éïÖÎUív›áááÔÒúzåg9“Gyäñé„b�ð[5¬™×°‚V*Â'”Äi_ 5ó. …]é")Íêõ:FµÊÅé ,ÌÍcÛ6nÁÅ-¨”Ë8‰PÚj@Œ¦˜~îsŸë©ýaÛ¶­éqÃÃÃé$§[·nÝ2ˆ{ïÝ¿lQhX[5ùíû+xa¼ø+رæÍ'1OQ(–:u.zÓ$"})ó%Ö B%€L²øí)e")e X£PH!KÆçäÛx¾‡cz`J)Êå2û÷ïçÈ‘wøÜçžà‘GᑇåõC¯sàþûÙ´i#SSSD2â×¾ðk<øàLOOsæô¶nÛšî¤eéè#eƒ'wù›wÚœ[0<´ÉfÈ…i|2¨·KÂ0â­7Þç{ÿù-O/ÛYmÅ/„bhp€ü÷¾ÁΛyö…·xþ•#xa@¹àð;_ÿU¾õ»_% à/ÿúEæ›üñs~õ‰lÙ´~Å]LÔ¯[·®çY·n ù¹JÔ›6mLY»v-J)&&&PJ±~ýú›²ðþ$ÒíÐç¯_ã12a´À²êËÄt³ö%s è(ŸŸtÞbÛâÇýbF°t{^Ã`hhˆÇ{4mƒ<ÀÐà;vnOuFF†{‘ññ±eÉr³Ù¢T*ñ»¿û;ŒŽŽäSÜ'ég4 #WdΈ>g£.¸Ñko–ìd4b²Â¸Ý% 2¬ Î(èa§ô:8¥Ô—ž‘¯{Þø˜øºc™XB¥;_-Ó±ÑVÖÉÆƒvÊ–P­T}ÜëB¥@ÅöÛ¶ebj†Mö™«÷ãkT±Üf¼V[äíÇ© 022B»ÝN“ö}ûö¥ ‹eÀpñÖ[obšƒƒƒ)ä^¯ó¹Ï}nÕëñ}ŸcÇŽQ,– ü€‘‘Î_˜fÆ)&''Wûêõ:G¥Õj±víZfggcÛ¶m+<»åemš]¢¯S3IÂ0Ä÷}\×M•¬°¤–(šE\UÀ6¬DÂHâºNZò•uÈÒ€ŒÞpÐÏK‘ ‹E¤”©›R¬£Á!}Y‹iýe<MÓ¤V«¥¶ÕZtXƒ[º<  Óé¤@P³ÙIJ¬T,X»3iqÞz½NµZM?¯…Œó2¥<òÈ#Ï ÓS»!¯žÀ]:fb™¬D "ì+‡F×P]›î X–CDx­‹3Œüé·)ÎÏbm¬’ƒUr ~å‹„O~;©=^ÍÕCO¢ý?û0‘u\È®fMCPv¡ì~òÛ.’’sõS,¨Œ¦Ћ"Ýnd1"y¤àT\3¯bPÆâŨ©E�sÍÊ–e±eËf6mÚˆ’ ˶` &×­Á0 ,ÓbÝúÉ*üÐÐû÷ïKûœf`è5¯e<¶­ÀÞõ.ïÍ„ŒU 6Ž˜8¦øD¨ùôöç8iYj4ù¿ÿü‡,5:ÈH ¸¶fˆiY<xïÜ·‹§~ù&Óføoÿþ×ää©‹üì—oS(¸|éWòò¡œ<s‰³ÓWøÑO_ä|ë颴ÿz´ÓØÊïÊ­¿oŸ†1o9ÛºÌÚ‡˜— "?‚®´P'—P3m䜇ð“ñÑ2Œ¸ˆõ%Ø\ªƒp pM„)†dŽ%~â½ÅÍ=lªL`‹Õ—¿ýãà#<‚R²ÇÅêzí¦%¾ò•/ß°›YŸ F-ZcöEÆ=P÷Á2W?ñ2q;ŠûXï1š¹¨Kµ½or.2 lÿÌ–6©eceWŒ8.A †•”³h›ë®ÔnVÔXô<!b®lRž½÷¬¥w<7Å�mYŒ P*ÚñµuÓzw¦a „DÊ(qà=›J?ô Rª„Mâû†!z쩳¢ÂŠøØGy4Õ>ÑíœuüY) …»víB%fJ•J?£\.]sÜfÏž==çqg™öPÖšºX,% H×–ºÙlöØZëÒ›Z­Fø àa²d.1bŽ"½ˆÒ@1öGÇ¢ÙjS,ºÈ(Äfú µð­.õÑåOÍf“Z-ÖÙÒZ2†a°´´Äìì,ÃÃÃ4dýj¥¥C`Ѻ/ºÄ* CJ¥333© ¶J¥R ¶dÐr¹[r'÷Ýh4˜ŸŸÇ²,†‡‡YZZ²,ÃÃÃ)ƒ¦Ñhôô‡»ÅÉÁ˜<òÈ#I„a„Q;ƒÙ™C”ÊÑ7@AÙ»BÕô¨âËñd˜DA�KMÂÿý_1vî,VÑFTLßÏÂûËÿH#R þí¿îŠäÉÁíH"%'—NᇑJ¢ c$ÔC Т-I(Eʘ1’Ý<à “F$ßâlmiÞ³»*R@æZ ˜c:7u?†�ÇŒUcçÜ.1{BJÉÑã§yíÐ{(‹_^óþ AÁuyìá{˜¯3·°Äo~å1öîÚŒm[L®#R‚×ßú€ßþêãlß:Ź Wi4;¼øÊ»|ý×…r9w¾…v £ˆW:'8^$ŒBĹáÿtyºŽÐÎWJ¡Œ^‘æ4M¶ Ä– ÆÃk0Gl¨ÀˆK$$gÂ+¼Ø:ÎDqÛ¸ñåo¬cÞ40¸Òû™Ç'/ ®Å¦uÔ*YW¡!_ºÚ)ªO‡D,Çr=L—´˜')Jëš–>ñ14Ù_êù<s !Â0z¾7f²ÄÇwË8R'²¨d.ɺFéù‰žŠÀ,ãgEÈ^ÄÚu= ‘ gN3 Áäø�Ý»žj¥ŒmÙ™±úzk ¸X¦IѱðüT 0°Ì…eZ” ºR¬‡-d2�ÓP„~D”&ãŠJÉIÛ7ûaÐB†+#wJ)ª•BFãGb[BùøþuŸºPŠá¡Rò}ZgNâ{K«Ž—¢ñ]!~Gb¾×H\¦d\æ lS‚‚Z}–FØÀÄ` PE‚v³F$#¢0Äq] Ä4 :-Cü„ñÕôš1X"%Q[¥¾ÄëxH% ÕX@*…Œ$–mae—Vc!N·à¦:6^'NP’v«mÅ,€¹Ùå¾×ˆ52~®z!À÷:1S'Œ0 Aè+Œ„iêwX–IÁ†¢¶8KE,¶Ú ãw˜¦A½ÓÀ0 Ú­–iÞÕ1&Ÿ)òÈ#<>&!¥Ä[*@i{ÊÌÂK )ÒŒ—€Ú)!ùcÍ\Á:s&ùŒJ5Bµ:òðQÂo|cÕ]ZMežž&ë©¥^@ Y\\d` Êâ⸮ËÌÌ ¥R©GÌ-­V‹0Œ(—K«2>ì3ìt:,--Q­Vo»hfK… ™clPÛ˜æhM"#H¨Ý ‹IscÖ8µp¥pž–±Dhy(%eJCJ„êÒ¬¥˜Êfª´;@Ìã&Û‰˜2ýüËïÐñ#„0¯[ješ£CUvn"ðB,Ãbdd0}gLÃdtdç‡ Vb;Ì0âì…«¼ê<[7¯Çdy›ÍÏÏS.—S[ñQ±°°îÞÈñsss˜¦™Zu^«O·ÛmÂ0L)Ûw}üSŠ¿ÎñÎyêª2@µ"”!;ªˆaQµEå$÷)ð"T3DÔ|˜óQ3m¢¿:‡|æ2ÆþaŒ/L"§fµ8Ú9Ë“Á}”­â5Ÿ[­V£V«188Èàà`ú¼•Rxž‡ïû©¾@±X¼íÏ«Ñh�P.—¯kÙ¾L46ÛÕJßüÂ=lÜ4•�l©ß}š˜_Ë%,[ÒÛ=nyin Êdì¢Sà¥ßyiåYqÝšžnIÒjÒ,˺Pßqú;®å}¸ìy$óœJ€"!ŒžóÚŽÍpµÄÈ`‰BRFs³}YƒŸÅAˆÖP˜*Þ…2o Þ)„(pwG ÍÈŸ÷r.S”…\õŒýÏ9WùŒJt´™”©.;+ìÑ’ —Œÿ2ÂPVBÞ"RˆX˜9q„“JᇱӕïÇ@•Ô̪LTšåd± “T2Â2 "¯¦IÉdm·¹T*”B©È3bfXÒù£HkÑ@©s˜c"¯‰Eæ²÷H*EÄ1R1¨i™V¢C220”©°… =ж‚`%%aœ.¹—@3¾Œ»Êä`Lyä‘ÇÇ!yL©Æñ4 Ŭ †Á¸„‘(ž~… Q¤„0Š÷k•R­f,k½¼Rˆ €N'¥ÚöºÎt'í0 ùùÏŸâž{îáâÅKlݺ¥G£¢á/„Àó<Žy‡}ûöñÒK/±qã&ö칇_þòyyäaªÕjêæ”Ò¤•âÂ… t:¶mÛŽë:Ër+±w² G–ž]ø…aÄ©S§©×êì¿wßcI%™k-0îL0R£5™óg™í\áJ8KÛlQ´Šø{†ö²ØY`ΟåJç";g9§> 4½®ã’ê.Z¥€9Èäàæaã~Æ(’= AVŸ§ß½âzý®W´±Ws û|µEfÍ~Ë ìoÛk}öfÞ#}ÍañÎñsHBX†Ê¬±EO"¸ŽÅ7~ã16m˜àê\ Ã0X\l±níJ ‚0b~¡IÑu) ԛؕD(ææ—8a)C c¹ïáÃGØ·oo ЬDÎ>ë•Ú/ C^ýu>ÿùϧTê˜:¯Òs•$;¦ÓÅ_yåÕØÍl` §>ûÏÎÎÒh´|ŸF£Á½÷í_ö¾®TúpÛß)$W£y¢$ýÛ0þh[\Ž´¦�C¢l¥Ì�< �æ}˜i#Ï-¡Þ«¡Þ«ýò2òª‡spŒÀŠ8]a6¬±Ž±ûš”’¥¥%^|ñ%*‚0dß¾}Œ¥‰ÍÕ«sÌÍÍQ©”À¶íž11¶ÒU=Z4³¿¿w“kz¬}—–âð,˜œ=—î Ôj±[K¶OôÓ9Póá£Ttصu’]»7á:NÒNê#¹–>^ÌMÔêc÷l`š¦a`ÃøðnqZ‡Ä4MÜ($’RuYGꆴgºW¦”ú„õÔ¬žû]~›Æ õ¦Þ~h~ˆkrV„°ÔµJ‰ûºÿ2-÷eÎX+3|+Ń?r0&<òÈã³Ä”ÀQÇä/  ¶EŠßlL Dj×�� �IDAT„ŠC§}^<Õá±mEîOf%Õ§\IL{Íèü®š Ç5éŠZm‰ýû÷qôè»=ú.—.]bÏž=üâϱk×.^|ñE …">ø�›7oJ“ƒ'Nàûï½÷>ƒƒƒ´Ûm.^¼Ì¹sÓÔj5<Ïcbb’Í›7ñüóÏS«ÕÙ´i#ArâÄ8ŽÃúõë°mÏóX\\ä¾ûîãðáÔËe.^¼È=÷ÜÃîÝ»PJqäÈ;œ<y’Í›7322Âo¼7nàðá#‹Eöì½çŽ´“¶´~eæ/Í¿‚kºŒÛ#LÙ“<PÞBÁ.Ðì4dÀ®‘]  Q­VÙÀ</gë§©Ï,1#/ P˜¢TÌcÆ&ÊÅʪ o0ÎÎ^ŲL~õW•W^y™o|ã+‚+ý€Š>&¶™Œx÷Ý£Œ311ÑøË�ÇŽcçÎØ¶Í¯¾úµZ¯}íkT*塽•v곌¢V«Åôô4ãã㌌Œ¤Iëj ܇¤R´;Žå€JæRöî2'ÿï8&=¸‹o|õ1†Ë”J.ë'Gùé³oE’‰ñŽ?Ã[GOóë¿v€¥F›sæ� C4; µæ²ç¦ïe~nÏóÓú…^¤Óîpààý=zŒ'Ÿü5.]šáâÅ‹4›MZ­…B‘ÇŒçŸÏÓÖ×çøÁ~ˆRŠ/|á œ9s†S§N³nÝ:¦¦ÖóÜsÏqÿý÷sðà>¡×ß`óæM=zŒz½ÆæÍ›q]—S§N²uëVöìÙÃ{ïà­·Þfû¶mœ8ñ'>8ÁºuëØ¸qG޼C£ÑàK_z’ÑÑÑ;È(¥ˆ”d>\b.Zêv{×D<0 sÔÉ%xµ\ðQ0®«+ˆáÆD ±¹Ç0CÕ<8×Dž‡ 0ÉÕ¨N-l®Bjvà¡C‡X3¾–-[7óÆoréâ%ž{î9J¥2Aà³eËêõ: ŒŽŽòóŸ?E¥R¡T*±oß>Þ|óMšÍ&kÖ¬á‘GÆ0 ž{î—ÔjõTçÀu&&&°m›©©õüô'?cßþ}¼ýöÛLLL „`pp¥¥‡½Áðð0ÜÏš5ãÌÌÌð‹_ü‚Je�)%ï¿ÿ>_þò—yóÍ·˜˜XËÔÔo½õ6k×®áàÁƒ aš9ó¡!b‹yÇÁuìüÜîç›”SÝа €Ú˜Êú*y|¼ÞýŒÉ#<òøl‚3ÀS¶Á–/`A(v˜ã ‚H2¿ð‹÷aë¸Ë[ç=F̈R¨°Õµ©µ×ûV¥õZŸýìçt:[¶láêÕ9<Ïgzú<6lÀu]Ö­›`ff† bÚöøø8/½ô2{÷îáØ±ã>|˜;vÐé´YZZ¢X,±ÿ~¾ûÝïáû>kÖ¬all ¥à…^à›ßü&óós:ô&›6mâüùóÔjµDôÔbff†b±ÄððH*dxùòe Ãdll”—^z…8ˆiš¼ð lذjµJ©TêQ®FÝDÖ@Ûëpxþ;³DDœç9j¾OÙ*2n²£¼#û,%‹C3.'+ظRÈÈ&"Œ©Î"FÌ !P†ÁúÒ6lcõ’–  ‚€]»vråÊ,gΜáܹi<ÏçìÙ³\¾|™½{÷röìYî½w ˆ­_¿>ô«×ë>|$qm¸ÊììUŽ}—G}„ 9vìcc£H)ùö·¿Í·¾õ-vîÜÉììUÂ0äòåÚí6•J)%ív›wÞy¥÷Ýwï¿ÿ>©]gÆe6Û·oãêÕ9Êå2 ‹œ9s† =z”©©)‚ äìÙ³<øàƒŒŽŽ|¨63üÿÝïðÔ/ð³çsúÜe|?$LØ$©k‚M›Æù»¿óEÖMŒâ8®ëð…_9€ãøÉ/Þ¢¶Ôdbl˜¯=ù ›7Nð§ñ —f—PÂB˜ŠH)üP&¬ˆ€¡„ÛwÚŒ¯á7ÞäÌ™³œ9s6u蘙™¡\.³gÏ~ò“Ÿ²aÃ�zèD¤ÐàÑGáäÉS¼úê«\¾<(ž}öY¾ùÍoàº6oÞ ÀúõëÙ¼y3Õê —.½ÎO<ÎéÓgi6Œ±yóf àZ`óæÍ”Ëe6l˜âÞûöóì³Ïâû>|ðRJ>¾ðk7Änº@¦vhËNÌS±e.oÌ£þýId­ ‚Hv‰ Fü¾(Ë@¹&Æ– âñµˆûGáÀ(Æþa„m Ìø#¨C+ò®y333ܳ{¥R‘J¹LÇó8þ¿÷{¿ÇñãÇ™žž¦R©¤"™.\ä÷ÿ÷8}ú4/¾ø".\ \.sôèQ|ðA@Ðnwغu ó7?æ÷~ïw9vìçÎctt”5kÖpæÌYÖN¬¡Õj3>>ÎåË—iµZ<ýô3üöoÓ4qœX»bqq‘Ë—/ó+¿²3u9)Š4›MöïßÇüS<¯Ã¥K—Ø´i#ƒƒÕÔšøvµÕg*!K�aÓ0nkImw¦/fÙyäqk)còÈ#<>³`L¶NX?‚ïjòJPÇ)Uù£Çøw¯´ù?QcËñ) vïynö›×e׮ݼÿþû¬Y³†¹¹«´Ûm</V˯T*”Ë:Nœ ŽãÒét(\ŠÅï¾{Œ'žxœcÇŽ±“ÀððpR ,7ƒXé^‹·†ÅððJI|ߣZàøñãüÁüŽÇ;ïáÕW_á+_ù2…B‘ƒrìØñ”¡¡Ýj,Ë¢\*Q,RÛŬõ¨>îÃ.�U’4^iÌqÙŸÃñ¢µ Áef9ךfØ`rxr™%j‰ ›ýˆÈbÁ¼J€O(”Bà„%ÖƉ²!Œ­ú¹Ù¶M»Ý¢\Þ€R±Mãüü<õúo¿}˜'ÞgíÚ5¼÷Þ{ìØ±3] ú¾Ïw¿û]{ô ––,,Ô( LMMñWõC<€eÙ:ô&<ò¥R)µäâµ×^gçÎ8ÉNq†¼ð ˜¦E³Ùäùç_Àu]ž{îyî½w?çÎM³cÇ&&&øÑþšíÛ·qöì9®\¹ÂøÿáÛ<öØ£œ>}†R©Â|Àþýûøö·¿Í?ù'ÿøÃ1†ÁÖÍ“lœZÃïÿöçxù“|ÿǯðîû¨7Úa„m›”Šûë¿ÂƒvPtí”8362Èoýú£üÖW#’’0ð¹ºØà?;ÄOž;BÓ¶J»*›«‚¡¬jµZÌÌÌðæ›o²fÍ8Ží`&­V ˆKS*‰pllŸ\(E¡à244LµZåêÕ9¦¦¦ØµkgRc044˜:v‹EÊ• ŽãbY…BÓŒK¤(—Ë1¥ßu)‹Ø¶ÍÀ@…LÓ¢\.sðàA¦¦¦Rkæ˜I¦à‰.¹º-œ,£uâN®RÂ’jK+Á–2b]QpâgÝ Q—[ÈêˆÙ6òµ«¨çg[*˜¿³ãñµP´R¹ ûJ¿S†a°}ûv޾û.ûöíen~žõë×S*¤R©P¯×Ã0e9ŽÃèè(—.]¦ÓñؽûvìØA…ض…”q»U«±žV¹\Jma}ß§^¯£ yŸ ¼öÚëX–•ºY–…m[©«ÍÔÔ¿ñ¿Áo¼EE¬]»Û¶(‹”J%FFFØ»w/Žã066’ŒÍ…Ô^b7˜Ï¢sׇOðÉ˽îôºG­ Yó1yòøŒ¾ø9“GyäñÙ øu/¢aD4 Á–H²; 1¥äøÅ6¯4: øß~Rãü‚âÊUï¢T↘ÕôXÇa÷îlß¾À( (—Ë9r„ÑÑQ™˜XËððPjkÛF±wï=Œqÿý@Q.—¡PpÄu¶üÿì½y\×uæù»÷m¹/µï @a'@€ .")R$EQ‹µÛ3w¸5á »ûw8äžž°{‰Û=퉙é{l-Ù’mY¶(Q¶µP)@ˆ ÂJlU(TjÍÚr{Ë?^fVV¡�@�¨÷EdTUV®ï¼{ß=ß=çûº;Ù¸q#ûöíÃó<:;;yüñÇØ¿¦iòÀ»!‘ˆ“L&9rä¦irîÜY²Ùº»»1MPŒŽŽ’ÉLÑÑÑÎ}÷ÝÇáÇB°{÷nl»ˆiš;vŒ–––Òk&( ´´´N§ßsÂxrö™b‘¢ç·Ž Ò-¹(¡È ÐEˆ‚SD ­Ô†Stm&ìIšÛét»)äòL§S—˜QÓä½õz#‰PMjW]#ÌÍÍ39ÙO__íím€/Â:44ÄÔÔ4­­-Üÿý¼úê^ß ¨¹iI¼‹Å" õØvб±1z{×ÐÑÑξ}o055Í… CŒM †UIÞNž<Ž;îe``¿øó¿ä·þÕÿÀÂÂSD›0 ÇqI¥Rœ??H}}]ÅV´LÕ×דH$ˆÇã(¥hll¢X,’™žáø±“444UlRod1.„À²L,Ë䉇6sÿö5œ:}‰WÞ<Á¹‹—èh©§¹1Í÷¬%lYè†V|ô<_ƒèüð'Î^bdlš‡ÏpøÄ Ù¬ÒÍJy½¡ë„ÂÖ×néš$Gösöl„žž°m‡x"ÎCïáµ×Þ ‹ÑÒÒB"'‹ÑÙÙAOO7ÃÃùùÏκuëhiiÁ²,R©$}}ë|]œþ£ÔÖÖÒÕÕAccCÅÅ'ÑÒâ×¶¶V>B[[õõõÄã± )YWWËÈÈš.ih¬' ÓÑÑF[[+ÇçÈ‘Ã<üðþ‹ÆÂX–E.—£¦¦†ááavíÚõÞç=!k!a–ˆO :ˆ‡›Ð¶×¢t‰ÐKsœ[jí”e‡`"‡ÛŸAš@]Ìâ¾0ˆX—DÄ}ÂP ˆ ‹°f]1Q“R²}ûv^zé'ìÝû õôôt166Še™ÔÔ¤1 ßUÓôÒqïÄ0tjjÒ¤RÛºH?ét’îî.„𨫫%ÓÝÝI$¡±±X,Ι3g8~ü8ÝÝ]ÌÌÌrñâmm­„ÃajjÒ|üãϳoß>jkkÙ²es%'Ož$‘ˆÓÙÙÉÄ„_©ÖÖÖB$aëÖ-9r„t:M*•ä•W~ÊSO=Å›o¾I[[žçÑÓÓ\hü"æ½Üyçþ*î¯22«ü.«~–oeï?½t3HÝ»åž}3™Lp´pW¢Z_@)…’Ï~áóüΗ¿L8²:7 ²A±˜'‘H\&Š«”¢X, ëÒk¨HŠq]c\ =Em±@v.Ç—ßÞÍK ÷¢Ì$!ËÀÔ%¢0ϺwÂïùK’!‰5‘Q-f MÂ¥œm÷ù¿eY+ y1Vd2³X–…&u\ÏÁuB!«Ô"*+…bÿ§ÿoxyì ®²K–U …çÛR kÛÙT³ž¶Hõá4 3F&?Ã×Oÿ ç ƒ´XM´E[i 5'‚( Š^x$Άæ ÄB± ©Pý|͘cÇŽÓÞÞNss…Bï|ç6lØÀÀÀ †¡“J¥Ø¸q#_ùÊŸ°gÏz{{Ðu?,‹ìÝ»Ë a³³s¬_¿Ž¦¦FþþïÿÖÖ6l»Èää»wßÇOú =ö!Z[[9~üÃÃ#ŒŽŽ2==Å¿ü—¿Ž¦iœ8q‚éé ŽãÐÓÓÃùóçq‡h4ʉã'éìê@×ulÛÆ²,tÝ`vv†x<Îää$}}}ŒÓÞÞÎñãljÅâhšdçÎ{—1J)æææ‘Ò¯ ò«N²¥Ê*UÑ1²m›Lf¦"‚Z9|J PÌÌù•(‡Ž 2:5Úö¶­oÇ0üž–¹…<‡Žò—ßÝÇÞ·NbÛ¾ËÃrÕ@)ÉXˆßþOó/>ó!4]¯T4c ²Ù¶íV„º‹Å"†¡UâRžÿlÏáèìyþ`âÛì÷Þ-e{0’E gaÎöoyÇ—45ˆ¶ a_ä·àâ½=…š. ?ÔŒ¨µ�0ÐØJÿ¶á³ìH­[q\-žc¿xI¢çyÌÎÎù•TšÁjŒÜ\×%—çþàùÛoþ ªT…xµc{7]ï=¥XÛÛÉú¿Í¦ k—ˆÍàƒÎ’hÉ5» `EÀ)ÝÜÒÍ«º©ªŸÕ&ZÕ‹†Ë¶LƒÊ˜�¸¯@½§¨õTEdÔÒÏ+VƒN`š~Å…½ £GãèÇÕåjòÁ¡¼©p•ÇÄ C ãd»â†„PH„/Ä+AáðfæGfOSc$© %©3S¸žËéì9•ç´{óù‹èB'¥ÇH)º"í<ïòEg¯@Ā߂²~ýzÂáPI`Òà‰'ž@Q©ºˆD" Q__O_ßz†††*-º®óàƒ266^àÕ‡CèºÎc}ˆP(Äìì,}}:étš§žz Ãð— ½½kH$ôööTÚ4McýúõLNNâ8.„Ã¡Š¶ÆÙ³çèîîFJICCÙl)ýD|ff†-[¶ ¥_¥F ‡ÃÌÌdhll¼¡„Îo9Ñ›š™£½)®ùã¥<0jÓ \×cÛ†NÄ© üàãÔÕ$ioJ1>=Ï /¿Ã‹?}‡ó§pÑA/íC)µd}%uºú$­Í5>ÑI@Àܤ4é)Zµ¤+p…o…¢& ˆ¿DõOú‡?ª# ¤À+º¨yÇטI˜ÈÎÜ[‹¸§ÖÁ”U ^­ž:-¹š”|Ùl @€�Ü|dL€�Ü¡dL¹üJø®Õ;ÛÃhí¬ˆ¯; ¤$; “C¬\ #Jiŵi…ï¾TÖz\YÿîfÓ;eÛ'Qr}’TÛ5ßið<ùQÆó ]*mIÿw)@xà…-l°™*Îs.;ŒŽoßé ×okÂE!ŠÌ9Y.Æ):6»êv\Ó’V×uR©Å¤RÓ4êëë–<Æq”òøÈGž$ÒÕÕY©òÑ4p8LGG{åX—w„H&“UäO¨ò»iš´µµ^ö™LÓ¬èÊT¿Žiš<þø‡¨««Ã0ŒË^¯¦¦¦ò{Yt¹¶¶¦¢SrÃcH Çå¾ñ ë»xâ¾õlèj"2Ñu¿É0­a‹X,Ì™Ñi¿€‚ÿë[¯°ïí³ŒMΗxe$UÎÜRhtC£³µžÞŽFßêz…Ñ"*fgjÑjuY’/nådRÒcܹÕpAÚJ°No&‘3#s(*¢Ã}uˆM)D… •Ú•„ðÛ•²êRut÷ÍqÄñ ò£mðL¢ÊE(á…Ùdu²â•ö²«ÍnºMy‹±¹ìöeî^åñ´n @@Æ @€÷J”’9Ÿ°X$WÊ+u¯’ð-O-÷ï¯EˆÒ+åœ"ónÛs/ÛVU÷ˆÌMªó‹rÂ!¤Ä: =Œ!ä»]tNÏ 3™Ëb{­Q"b¤ð!„,ýï&p=…‹æ‰’¤+?¾,}‘4Ò$Í$RÈ›bó™L&ñ<Äb±ËÚ}¼ª¶‚r»H¹í¦-4tý†+\Þ!hkmÄulþòoó·?ígko3¿öÑûسµËÔ‘¥ïnšÉD”Ùùoô_à‡ož¡`;xUm ⲑU"â!vlꤹ¡öŠ”ŠBQt]æÜ<§ˆþy£*ŸtYkLéuÔ #L V¼¥ç ÀÒ ÂºIDW$!Þo”?“©ì õòÃì;ô‹ ñqî¯Cx %DI,Y,9¶Âù¡f˜Î£^E„%JA»VÇá>šɊ¾sª4§ °ñÈÚò^W•çQµÈÀ]Îu­j^\é~eÿ?MhÄt‹°ô{ƒªœ�Ü øî~ª" ´ÔdL€�¸sµEy©œ_,_õ ºŽgèx×ÒµQ࢘wòLç™-dY(äBE15Mj¥ýü+_¸ËÕÕÿWJU%‡+<Wrláâz)#Œ)µ;²ÝÃó\&ó Ì;Ž«Uª\@¡‰j× ðÊÄŒçWÍ®,¹X—ˆYvy` ƒ³d(±ÄEéJ )_ƒ¨Xqˆ²m×u±, ˲ð<o~ó›€@Ótz{{Ù²e3®ë ë:¹\ŽýèÇ<ýôG0M“ÑÑQ>̳Ï>[y-Ó4KvÌ:ŽãTt>®7Ñ~?zR ¢‘0_xj;‡ÿìef {109Ïû7µÌç ´ÔÄ1M‰Ì<Nòɇ6ó·/½ƒ-%ž¾4¡_ú«_]¢KAks-Ù½‘e^vÆ–I–œk3]Ì’),0[˜õI3LÄaHßíÇ+‘+k˜¨JÒ¾t\ùçžD\^FQ"×\åRô”&ª™%îÈŠ‹ò÷^›hçÉ™Í ¸cL ÇÿʺDù’¾—Í/(…ÒAYŠÂ§»š¨T—hB’ò"<nldMªíŠcË'{Š®Ãdq¹ÂÓ…9”R„ “¨ÆÐô%'•bUM²\kø$»‡B(ÇvQFˆˆ0ÐD`¥ @€÷°v,i•çšr{ðÜÜ<ç/ÒP_C]mM¥jÕñ<P ½´f,oÒx¥k¦ÉË^WV]ã¯Dò”Ý-{ø€Œ  @€»y+î|S%«®ªrÄÅ]ÛÊ¿5Âú ÌÖfðÚ[ˆ]%(x3Å<óüðÔ†gÇ15ƒ{ZÖ²±±‹¦x™Ü<š”¤Ãñ?_&?GH·f%‘[˜&lXŒÌN°¦¶ ½*ÁBà)ÁÌ(©FòžÍ‚«aÈÐMÓi ×’1Ü)\á³+ðJ1>Ñ¢|2¦ì´TzŒ¬$Ü‹mM‰‚”¥1Ü€i\Û&ضmΜ9ËÅ‹CD"Qz{×°wïkÄb1Ùºu Žãà8.Ÿüä'§¿ÿ(¡Å¥K£˜¦Ewwcccì߀x<N$¡P(255ÅÑ£Gq]—5kz¢»»›ÁÁî¿ÿþŠ[ψåöß!ÓàÁëyä­Óüàð0ù¢ÇÅLž?ýç·øðŽþqÿ)LK'3—csO ÃÓó¼vê"ži§®\áP"Ô"!ïéc]w3¦.“ëªÏââ±à™-æxñä^ÎM ‚žšV¶·®¥«¶ É…éqÚS‚®z1³ xÊ#j†BC)…bŽl1í:ÔF“„ k äâ1˜¹DWºy§€!$–4îèé/¢‡øDíôžç‡¢GR!Q¾•¼\±bŸá ûç§W"ÍL¥³G­ã™ô. ½dé,Vžv]¥˜w ̳¼1ØÏÁc(¥è¬m¦3ÝÈ®¶ œ"y»H2+‘3ˈRå16?ES¼®R­XtŠŒ/Ì6L\Ï¥!–^$uDI@<ï?µ‘$³v]HBZ A @€‡ëz\›`fnîŽÂáJ)^߈¯ãzºÛù­ßøêQJqñâ(33slÞ¸)ž§Èdf¸0<J]Mš¶Ö¦ÒÄáÂð(®ëÑÙÞŒeúU¤—Æ'§­¥š_«Íó<NžÀ0tz»Ûƒ*œ€Œ  @€;6•D)PÕ¥ÌOgU!úÅC”ÒUb`‰…r]œh 'kã™ÖU].Š‚gSôlŽž%b˜üÊŽ§žçµó‡iIÖQMsdä4³…j" Ï¥&'fFš£!^ËçPK±±¡› ™K¤ÂqŽc[s/ùÖø×Ž—Îcj:é&ÎM�ŠWϾÍo?òB†EÑsñ”ŸWÝ)—ìòn·¥<Ö¾„ qtj s e'™pæÈª"®òÂÃÃ*ÂÅ+¥^ÕdL™’d(Mkd±çjÚsssœ={–5kzxó̓466qîìy>úܳ ’ϯ®«8xð ™L†X,Æàà kÖôpâÄI� ä½½þþ£477£”âÌ™³8ŽK8ftt”P(Ì_ýÕ7xâ‰ÇoÈbúý&e±¿úô.Æóû9pvW¾ûÖr ¶v5 €T2Æ¥Ù/¾ÜϬ'QVÈ/iQËÆ!þ`“†ä¹üÒ£[|‚j…¢è9䜧&Î3š™à[E)Åþ£ d.Ñžn¢àù»Ã/ñhï½ÌäæH…ã´$êé=KÜŒs Ld3ÜӲޡÌ8 °a2>?M&·Àž®­\Z˜Æõ\Òá8†¦32;ÉOíç?<õëÒÀQ.¶r±„qÇÆ |{éÚD _*<ƒ3é±—Sä¤WL¾IÍR’Z"ˆz!ö8kùRÃÓ4'êç¿•fá)óvÑÙINŒç¹  ExùÌ[»4ÀŽÖõ\œçìÔ0†¦1Ãd 967­a 3‚«<¢f˜íå—·?ÍðÌŽrI†£9MWº‘ñ¹Ö7v06;Ms²àÂÌX‰À©å‰Þ¸¥ó&¤Áe1@€�ïeõ‚§<”òJ-Ë> …¢“íT®W®ë¡”_É"¥Bá–ZmÇY²&RžByÊ[¼PºŽ‹ÇõJ•¡‹Ž¡ÊóÏ€Œ  @€;RJrù"¢èbz KŽ¥tÁó”BVi}”ws=ákÊxB”Dp%ÂSDìGÍP°å5íF•ò/º“ÙYt©ñ³³o3™¡1QÇÄB†îšVl×a|~š‹³ã¬«kçO¾ÁÎÖ>öãÁ®­d²sÄCa&³ %b…p<¢kc»ƒÓ£üã‰× [š×0:7ɶæµdí<Žç—±zÊ»s/šR£>‘æÉèœ&T¹�� �IDAT.öä6qivŠ¡ùIfÆ873Êé¹Q†í óp•ƒ‡ð+fÊäL•(gYcF0Ði°j©Ö¬r¡â?Æq¼ŠîN*&‹aY¡J+’^iâÅu}{fÇqJ.H²²@“Râ8B\wñ¾\.G2™$—ËÝ}ô¦ºÆÖÞ6~õ‰æìw81‘#ç)¾wx€ƒ“Ô'",䋌NgÉm<M‡•*©…çë7 AÔ<±¾Žßxî>jSH©]1nžòp•ËÐ̽õí¼vî®òЄ$ïp<O¹Ìsœ@“Ç.çÁîÍüàä>¶4­!‰“+æ™+dy{ø$ã Óô5t6, ®ÍD6Ãwÿ”úxÇsé­kÃ:yÛ'Šê‰âNW†õÛ¿4új»øMù1â?æe÷=‡·˜^\qT’¸cña¶ð+õ±¶¶S3®:–Å=å‘s ›Á™1Þ=sÆXšáÙI<Ïo¥,:6.ã¡îm¼3rC7xkèñP˜Mk˜ÌÎPt‹œàìôE¶6¯ÅvŠ®ÃL~ž—Þ=È\!G]4E&?ÇŽ–õ§¤Ó%�/¸(à=¯+kÒ)’‰8¦¹èÒ¸±¯—=rk×tHÄKkIC} éT¢²~BLÄ1 £â¨ ëMu(¥Ð«î¯I'‰DÂDJN¾³¡¤µ¹)å]³¡1𠆲ÃM>ÚMfðûDBxN%õP(<4&œ-äì¤Qªt”mS˜ŸGzÒv P„ÐBÓðÒ5$¶o¿F{‰@‰&%M‰ZNŽ ÐQÓD[º‘Ÿž~‹=][ÐJ¢²RHj" 67­á•s‡¨‹¥èkêdtn‚°iQIrtôÝ5-LåfÉ;Yl×E¡JÕ4 65õ E¹0=JM$AÞ)VD)äo#¢i±hŒp8L{C3÷Ú¹bžÙb–KÓ¼;>ÄáÉó¼›cÜ] ˆÞñ^ßQ „ðФAW´…ˆYÕû'“ úúú8þ<›7o"NÓ×·žX,JKK3†a i7ö±yó&æç#Ž088H{{;k×öbÛ6¬YÓCGG;““tuuqúôiÇ¡³³“ááa>ûÙOóî»§±m«JÔö®XŒ AIJxtëZL]㿾|œwF³Ø\Ê9Œågñ(!Q†µHN.SÄöV1žßØÈ¯=¶•ö¦:4)¯rº t¡ah›{ø³ßåÃëv1WÈ3¹ÁÒLt¡a+ ŠÒ™nb|aOyìîÚL¶X`&¿@"çäØyÖÖµ#¥ o14Çs±=G¹ìîÚÈ¥ÙiO‘ù-1‹Äƒ?Æït"¦²@ÕtÖÖtð[æÇÙ<ÖÁßçöqÆš ‡oe­V b¤’˜Jcm¡O…îçÑÆí4ÅêЄ¶*2Z&5bf˜°aáá±¾¡B±Xj[¬~ҥƺÚv†gÆAÀúÆ.ÎN\ÀÃÂQ³…Zõ8®ƒíÚ�\Cêlnî&Žñúù~’á(禪›’ $-x/ðµ["%÷Âê9°wM=Ý— öG#á%•B`Y&¦i\¶Š–Ü«§Ôp8\rK\Ô&ó XŽ€Œ  @€;4Y”~u‚”’ô†‡™Lw‘ÉLBÙͨl³¢hz˜ˆnÔ³ÓÂÚ±þë×õ[j”B”.²¡XŒÆ®®+»ä”ZgšAX3ÙÒÒËØ|†Ÿ:Jñü–GèH5Rt¦›H…cX†IÔ óhϽÔFR LÒÛØN:gÿ`?{º·rxø4›zˆY!r9>±éQ !Ùݵ…¢c³¹±›ˆaqjlçúÄ:IX3ÐT•>Ζ$Vÿ.¥Ä�B†E<¡ÎKÑ™nd{çz>ZÈ3>=É©± ?ÃÑÜ—Ô¶òwוP8€†‡iFX—hÇ4ŒÊNÒU/ÞºNWWg•5µd÷îûBH$R¢”âþûïCÓ4âñ8 ¥žðÎÎ4ÍONzhOå; !øÈGžòÛDjk*çdssBvî¼÷®ß«nRB‘ˆ†ylûzšÓ1þï—óÊp‚ãâx¥Ž$¿ðeÑŽº¼˜ kASDò¹-üÒ›h®I¢i²2®*ç…*iœ¿ªM–0èH5ó܆‡øÛ#?F)ØÙÚÇ=-ë04ßnü¡îm´&ë© 'ØÕÞGwª•¡™)Zq64tqbì<këÚ81zŽÍk¨‰$(¸¶ë`H_ÛùQN²µuÁñ±ó|xÝNŸˆ@bJí®Š›) Ú|*ü(»2ëÙ;v„—#œ O’—ÎQܰgГ­åam7î %Õ@H7ÑKÇ÷jDÌâ¢XÓMãivwnæ;ý/3™¥·¶ÿá¾gЄFm$ uEH„clm^K2c`j„Þú:ÒÍ<¶æ^òvž õäì"»87=LWª…Ù\–MM=;GK¬Ž_»÷£¼rö}õ´$ê€!µ;^Ûç&UP,ºŠ+7ÉU†ý/ŒºÏ{ù®ÕϽ]Çì½¾ç[qÅï·òÒI±’¡ëº×ø~bÙ««Ëî÷è«_eùãŲ«ªºìQwâØRÝæH^ù~±ì(ŠÒlTþY¾i¥›^º™€¤îÝrϾ™L&˜Ñp—.ÆTå§*‘ŸýÂçù/™p$²ªU)Ur¿É/I–«õA€JO­*µìPJèÊ¿«+MÝåǬ°],…@ÈÅñÝmJ˜¾ëË.%Ý…¯R#|ãk¥VÌžXù«¸U=MaÍ$n„0„v[7ð•Rd2³X–…&u\ÏÁuB! ]×/רYö}«ÏÀw([â*…ã:ÌÎÍqîÒoáÈÜíifß±jGª‹ßÛýË$âq´«´¼¬vu_êvµü{¬tÿÖß]v‚RÃ0 <Ï#—Ë’N§®ø™«ûÖ]Ïc~!ËOß9Å?§ÊfÆvÈ»`WÉÄh¥ELÄ€Ú°Á#M!>¹½“-=혆¹Ä-b©»ÏåC´à9dì<·Pq ¸â1_¾ª~ ‚Cj$a©ßöxf³9lÛ­TT‹E C»¦3Wµ¾¯y pñÈ-d™˜šb4;ɸ;‹DP«ÅiŽÖQ“ND}B“¥ñ¹ê÷VåÁŸrJ-^ „»d ,®âe½$)*Ï +Ä©òY–½–CÓIêai o£›’çyÌÎÎašºf°šÂ×uÉeçù£?øCþö›ƒ*µÏ®–üºÓ¯÷žRôööðïÿÓï³qã†Ò9ü‹@¹,?koõßnOLo] V¸_]áñj•´Ã !áXj7l 8¥›[ºyU7UõS]»,AeL€�¼}õïe¢çjšâßçJ•Ë—Fai YqònqQ³@á ßÂõ“@`J4ЄD ß±¦ÜŽðþ\ÂŪbWMª•ã¨-K°5)©M¥I&lê^Ë\.ËÈÌçf.‘u‹ìné#^æ¤síØ^ßY±<öWJ–î¾$êêçwõ}š”Ä¢žÜ¹™ëæ852Á‰±y.Ì™.@Áõ"š¤>,éJYliJÓÓROØ2±t!W™l–LÎL©‘6Â䤆­ÜÛzd ¡’†ÔÞ·¥ËßV\×¹*‘%Í%‰ GiS­x¥ö.¿½H–¬[åõ“„ò™)$5F”œ0(*§Džù{¿>³Ê¤F]×ñÏM! ISj‹Ò2³H ͈¢[qtË H€�n*2&@€�nsÒ¸¼ˆ¤œÌW™kíâÞ$èòÜÈwþ ¡ÒôÅ\B±è$s«¡|!âËš[üæKŽ»¨®XzÇ´Šœ€Ô4tM#d˜ÄÂQškêÙÁ†“Ôå,V:eÅŠ1¼V¬*šaHȤ­¾†G‡B¡@¡PÀu}]×±B–e!ÅÒÿjɾ/’[ÕŸ¯üäÛ¦~ÿ˜zÞr…T×Ô+¹ŠUt ¤¼âöZÄóÕ™òY¥!‰!V· |¥//.êõ̃·9`~¨îôÆ�ø`! càv%ÂÐôlÌ%âf«MîoWb»$¸­â-%½!üdDÜžýaÛ¶Kñ©N—ZA^O¡²<Æ«x~€+'ø®ë¡i‹ º®käóù«¶¾\)¹WJaº®‰D.û5°š-ÑŽ)µ¡ÜïGœÜ’EêÒvß­ku ÿŒ‡›7†ÄHñÞÞövWÆ”Ôüù*˜gàv càvåB¥…®¯™ SvæXž *¥nÙûßiip‹mxUÉ&¼P(–ŽOuÕƒ¬ÄêŠâÇ×8Þ·*–¿¨ð<l6·Ä"Ów"ÓÉçs˜¦yÝ-*Wµ;^¡Êâzb*”/¬~›N”òINÏó0 } ©å8¶mcÆûL¶Xœ %—·àØ ÀíBà› @€�·…c•ÖÇqYXÈâ•ÄzWzÜ­¸Ý=ÙÁíIºÊIH6›Åu½%B½åXyž"›ÍâyjUU1nmÒ˜Ëå|‚L7*„LÙ}JJ¹¹¹RÕŵÇâòv£ë!o®JÈ,7›P <ßž¾ZHøVßÞïXÙv‘l6‡¦i÷®ê˜e³YÇ Ë;€ˆñç@]7î¾ëE€�ÜÅ*cà/WÒJÐ4 Ó4±m›ùùLÓ¨¸1U™&]ç‚úòç\­ äJ_üœ7þ¾7ó3ÝÈ{¯þ~QÙ ö<…išKª-ÀßÁ/ÇjvvË2Ñuíº?Ïõ;7ïø\ï¹t+Ï£kŸ«N繋E<Oa&š®!e•(¯¦ašŽc3??išèº^5ƒ„ÿÏz•*¥(l\×ñy–%øåù®XT•9Ð0ÌJœndž¸YóÇ­ž»®6ÏÞÌï°º9aùh]6 @€€Œ  @€» +1Õú!ºî·½Ø¶M>_Àu½«dÜ¢´±ªJI×uLså6¤2y&„Àu] …" Îe:2nm¬Ê ¢®ëX–qYÂXŽ›a•˜bÑ&—Ëãºn0®n[¬üÖ>)%†a`Y¡“ûò¸², ×uq‡|~Ïó‚±u‡ÍàÖ" cà6/‚Áß–RâyÆÓZð‹ƒêv•r –kˆ”c¥iZ¥¬?ÀíU9Q¼Z …RªBø-f^0®no´båX­³òã4MÃ0Œ%± ô–îŒ90@€�ÜZdL€�Ü\ËÎrŠåIG„Üždd¥xT'õˉŸ<ó‚2þÛ˜,^iì\O\ƒñtâUÈQ¨%"°×r¶ªX¿ ¨eBæ´—½s`@È À­G@Æ ÀML¯”�.&‹ Üå1«MƒEòõ£úØ®ä³üïå;ÄÕ1 ’ûÛ³ë!b–Ç(ˆ×mŠªâF¶ÚØVÑBPÉâuó¯MKç¿ÕÍàÖ# cà%ýWJ’>‚[õ¼RJs AS!DÐ&sCqY<®¾ðåbâX.Õ¯&`–—í;ŽSzN,ÞÎxA™Äô¯n©&kÊãb±LQ¶2ZŒWÉÚhq4qíÊ‹ëyÎj^ï=¥ÕK¾×Í{ì<÷òǔǕR~l4MrE‚º¿²NÌò±TfÜŠ±Ä’8-Æqå90@€�ÜzdL€�ÜôÅïÊ‹Y¡K…„Yꤤ‚ñ[‹«%®ëR,ÚK,wc¥J ¾W‰U–Û?ŽÊ?}ç—"JQ±!¯NÞ=ÏÅó< C¯ú9ùŽçí„ç)ŠEÏsÐ4½ƒ¥d´ë:èº/ä[=&ƒXÝÎ1Fɩ̮ˆ/מ�¸}ßà&ãj£žç»»†¾¢#ÌÕžàÆbqåhšÄ4u<Ï­8ï”ürõRÙÒ:Ëû3ŽªE|-ËüJ¥j²Æó<Ç®¸Ã,>w‘ˆQ¥Ê³j~Nš$·fq)–e 8޽ä®ëVˆÃ0.“n'|},Ó4*s`€�¸×Ëà ÀMXÒ®¢uE)…ëºhšDÓV·8-Ýú„¿ì–TmƒìïÜ»•òýÛuޏv¼,ËÄq-ÆËmd¾“’~x)J´ŒµtŒ]íàú¡ëzeÞ[ZmÆÒìFÇSŸ÷>žÊâ䚦áºn¥Ý/@€�܆ëdpàæ,j«îåIFu’¯ëÚu%îÕ½ü+½v€Oæ“Fƒb±ˆRz%NeW¥ÕŠ’®æ½‚¾÷qVn¥¨NîÇ!‹¬Øê§”¢¬¤UR;Y6®V3¾¬~L•ö?×u+•€þ¸%¥{í•b¶ÒØ âv ®“ÏÞ3I @€�®cî A€�ÜÜdq%ÊÅ\wU Ýå®KÕ¨vYÉãÎ^H«›BnܬX-&àºÞ’Ö—Ý^’4:6v!‹çRGGš†D{ÏUe›íEñÚE§”jAÛjビì«%6ãÕÉþŠq.v¢ê4¬nQR,j:-}.Èk­wúñºÝŸw%"º|.ú祋”úuÇüJYË-è—ÏÃ׳j‚¯¬_SÝFµü3]ϱ½Òçñ<ðJçž I±ô\½M1óÅÍ—Ž«�wï<¹x³Døüz_£üü÷Õ×0)e©ÊΫŒË²æÞ'ð\!—^—o~äd€€Œ  @€»Œ¹RRr½‹øjw‹êdĶ …¦iTt®•ÝDÌEȬî3ߨçUÀìð)2/þ{ŒáŸâê1ôOý9 vƒñÞ‘®ë2??O8Æ0 fff1M“b±@,Ç0tŠÅ" ¸®G$&}`49”ZNR®<N*d(jÉéç …ð@!PÊ£èz\…í*׺XºÄÒ$†¶ÔÅénYœ/­ZòŸÛò=V2gÕóÀeN®KѶ) ¦Š¦X–åχ¥ŠœIb³Ù, !0M !áphÉ<ëëÞ¸†±ª÷)·Òår9"‘H¥ýÑS°P´õ8=I§)¡aêò} Ѫçè�w;3??ÏÌÌ �‰x‚x"~]ëŽ|>Ïìì,étÓ4ß—ïQ,™™™AJt:M±Xd||€x,F*•òÇß Ž¥<.‰DH¥’K¾ÿÂB–|>O:•B7‚t9@@Æ À]·º’£ÒjD‹–¯þâßq=ær Nræâg†&élN³®=I{s Ñp¨" ¼ÜúwµÉÂÄÄ ضM6›%‹­j!6;;‹ã8$“Éw«<¥˜Í{Lg=ò6ÔD$©ˆÄÐòŽÍkÕ{Š¿ëÚ,\x5v€˜˜AÉ,÷ý5Ý[‘ºqÕ„õZ˜˜˜à[ßú;w§‡?øƒ?äK_úùêW¿Êÿüo—x"Îk¯½Î믿‚µk×òÜsωD>À»|âŠD@Ù€y1±WØŽËDÖæÂœÍ»™çg.å<²žDâ’0$-uIIg2D{Ü 204y]ãÊu]&''Éçó�X–E}}=𦡔"—Ë‘Íf©­­½%±q=EÁö˜\Pd‹SR„L Ëæ£›EÐ܌שÞÝ·m›B>G¡Çó<4©ˆRaù½ŠÅ…b]×1Mó²–›«}¦r¬^øÎ <øÍ--ô®éáÂÐ>ýéO‹EÉf³„Ã8{ö<ð�†¡“Ïç‰ÇãX–E&“A)E:]ƒmûÉd8æâÅa¾õ­oñ»¿ûe4MÃSÉzüÃÛYŽÛØüì´dÏ‹GzÃÄCÁn|€C¡PàÍ7ß䥗^Æq4©ñk¿ö«´··ûë))ØÕd¢”²2ÞØ»w/Ï?ÿ<uuu8ŽS©F) =—+.ËZC–eUô¼LÓĶ}ñnÃðÛ€…躎ëº"Õ¶í%¯S&* …ßþö·9vôBj|òŸÀó_ÿú׉D"D"aܳ‡GyË´|jÏ«\¶…~Å‹H)JŽaÃ0*kª……þä+ÂÎ;yæÙ§+ŸË¶m~~ð-Ž?Îg>óR©¤ÿ?)0M#8ÁdL€�Üñiáý«ÙY¯¥ô<?™››çÄÙ!Ž Î󿻳\È7@ü^¸p–C§ÙÙ›dK»ÅÆ5m$“É’VƒXÕg*¿g>Ÿçkñu~ó·~“ÑÑQŽ=Êý÷ßGCCÃ5‰‘‘òù|)Ù—•ª²½ð\Þå‡Gsœ¼d“É)Ö5<Ü¢·ÁÀÔ?xI‡RŠb>Oqô$Úü"ä"5 ÷ü~²™qÌh¢¢[r#‡ÃÄã Μ9Kfz†––6bÑù\žbÑfvvŽŸýl/Ï<ó4=zŒùùB¡0š&îêqµrûØÕxTÕÍSŠù\ž·.åyeØæÍI›±¢ÀöJç¸ò[T „ƒ%¡3”ãÑ&“=-aúê"˜ºŽ” ÊÐUÞ;ŸÏóÎ;‡9|ø„Ðèë[Ïc}ˆP(„RŠAì“_ùï¾xÍ*‹r+Ëòo§ÔJc\THÝŸäÙwÎáÒœKsBcW§Æ½ôeï÷^[ç®Tx=sdõëyžG.—caaǶ‘R ù¾RÉQn±ñuh‰ç¹äó9 ÃÀ2-?ù\Åg*“Þëׯç‰'ömÎ;O¡PàèÑcLMM‰Dã­·ÑÔÔÄáÇI¥Rtvv`š'Ož$›Írß}»(mŽ9L"‘¤®¶ŽB¾€mÛ˜¦‰«à؈͉Q‡¹¼"b$pp Èº“x(h pcp]—©©)\×å‰ÇŸà…^àõ×÷ÑÜ<P"[ ¬]·–'N ë:7näÔ©wiii&™L²oß>êëë ‡ÃLLL044Ä™3ghii¡®®ž£GûÙ´içϧ££ƒù…yFFFxî¹ç8yò$gΜá±Çãð;‡™œšdÇŽ=zÇqX·n¦i200ȦMÙ»w/ är9fffhnnæž{îa~~×uyäÑGÙ¿ï�¯¾ú3¶lÙÂðð0ÿîùwzëm¾ùo²óÞ àwÞatt!uõux®G6›eóæÍ‹EŽ;†¦iôõõ‹Ey÷ÝÓLLLpòä)š[š™ššâç‘ÏçX·n“““ŒŒŒ0==Í©S§¸xñ"mm­lݶ…p8´òȘ�¸Û’H?‘\]Y¾çyþÎýÔ4??z–·/8 ,$-4 [!T ˜ÆL¶qÉèâÅÁ Þ¡ãØ ¶5KîÝÔEc} ¦¡!¥¶ªÈq\:ÌÂÂSSSœ??HKK /¿ü ù|žõë×aÛ6gÏžeÆ œ?žl6dž }‹Eòùù¼Ÿ´Äb1>ô¡GhhhÀqG/:¼v:OÑ…!9;n£IhNéws3´b*IäüsŽFªùŠ"‡™8F+ãã$Zz*ùû$À¡Pˆ5kÖðö¡wèï?ΓO>i™(%p]'—Ãó\Òé4ºnÐÝÝE(ú�[/ÕY1.ž‡§2 ¼p.Ë«#sPt=<Ûg–¿BAÀ†Ï;¼59Ë3E>Ô§&l"J€àÊäk(¢¯o=ÇÇ4,º»»Ø¿ÿ�çΧ³³)5N?ÉÀÀ û÷ïÇó<xàFGG9vì‰D‚††æææ¸té;wîäøñã8ŽËÆ}Œ ’ËåÈdfhjn¢PÈóÀ»ijj¡1•õøÁñ<“s¦cs/rékQ“Ü,nîfºŽ•ÇÐÂÂ< (Ï­"[ Ÿj-Œj{lQJ”»ˆë¸D"Q–ë¯üy}bëâÅ‹é?J}}=žç'·ýýGÉç ärYZ[Zhnj!•J100ÈÈÈ…B‘‰‰ fgg‘RÒß Ã08sæù|Ý÷ß_Ñ¥*ϱ9Ç… MQS02ë‘Éz,½à¢à=ÃÐur9Ÿ”ô<—W_}•ááaî¹g?Û»—‰‰ r¹»víàСCÔÖÖò³WÆÇ?ñqöíÛO<–à¯ÿú¯©«¯#ŸËóä“Oò½¿Çùóœ9s†¶ÖV¤ÔˆD"8Ž‹m;üà? ¾¾ï½ø"‘p„wO½Ët&ƒ”’üà‡|ìcãàÁƒ444ðÝï~72“É008ÀÇ>ö16oÚL}}ŸúÔ/ñÂw^àܹs|îsŸ+9ætvtâØ¯¿þ³³³(¥8ðæö½±x<^úŽ÷páÂ~øaΞ=‹eYضÍo¼Áž={øîw¿KSS™L†…ù,ßüæ_³ßÒF–ÆG>òJ)†‡‡ùã?þcÖ­[ÇÙ³gI$¬í]‹iim}2&@€�îÖÔq1ÇêŠéÌ,?þÙ>Þ¸ dÜ$„k!d¢<—ìô»Œüêv|ŠXû=ˆD;Ã^g'8¶0Ç˧²«Éå™GwRS“B_…Ðçy y¾ò•?annË ±ïœ<uŠt:MÿQº»»RráÂ'NœäÁà'?ù 55µ†Á~t‚‡~]ט£¡¡OAÿ°‹ã)šaSc6ïqbÔ![ôHG>x;LÊó˜Ë™JmCkÝBA‚í)2Ó6Ùy›.×}O®%º®ÓÑÑÁ¾}û¹ték{× ëùBŽ#ýG*;œÿüÏÿLss ccc|á ŸçîÑê¹¹ð”‡ã).ÍdùóãóüdÄaÖ. §^}Aí.`»Š·mÉæ(:.Ï®Iµ 4 ÚUâ¨ë:õõ $“)B¡š¦óã½DѶ9tèO<ña …¯¿þ:,Œb �� �IDATþ¼dÓ­±wï^žzê)Ξ=ËÄÄ$ãcôö®Á4Mr¹gΜarr’Lf†Í›7qâä)tÃO¾Nž<E}}=R“u™+(b!AsBc®�ÓY“—\ŒéwܼX&b²Ù,sss <_Dy™˜®/̼´Th¹Ø®”Û¶Éår„#ák’FBøZ3íílß~ÅbÛ.2>>ÁÑþ£ìÞ}?çæ GÂ)Éç D£Q"‘ÃÃÃhš$‰ø9–Źsg‰D"äó„ds9æçýöO!íi¨%™^PÅÔ‚GkN*¤ À{ÅÅ‹Éç ôôtsßý÷1>1Acc#<òöÕ?£­µD"AoïZÚÛÚùÚ×¾ÆÔä46l •L#…F¡P¤X,ÒÑÞI4¥±±‘Úš:Nž8EWWýýý¤Ói>óÙÏ …FG{mmm|ó›M!_à¡çæG?üO?í·ýéŸþ)®ãáØ.ù\ÇvQhšAWW{öìÁ4-¦¦¦º0Ć ™˜˜ä•W^a×®](å‘Í.0==M>Ÿ/iD tÍ¿&nݺ•þð‡|ñ‹_äk_ûÃÃ9wî_úÒ—˜ŸŸçßøMMM´´´ðì³ÏrøðaÇadd„¦¦&ŸÄ®š‰=ö'Nœ ›Í291IO÷š»Kú.@@Æ @€+-þ/¿šÛŽÃÿúGÿGë>¬íÅD)¯0ÏÄñï3¼ï«hÑ(VSz8‰Ð ”^Ï,u,ÐÁéóïò³ŸüGþÏÿýC†B—µ-­Ó4ùÒ—~sçÎóÆ˜›Ÿ§£½ƒÇŒÑÑQ.ÑÔÔˆ®D"aÚÛÛyå•W‰Å|†™™ZZš—}GhNI_„!00åÑQc`hÌÕŒë)¦gPÑz¼t’¢8®Âs¦˜ÏÉf³Äãñ~})%--Í<ôÐ6oÚLm]-JÁƒ>ÀØ¥1"‘0Ÿÿüç8~üóóó<ÿüÇH¥’«:>h¤gÙ%ib¾À_œœãÇÃ6sEO­~_³¼î¶=¸˜Uü§ Äe†'zkÑŒë!}-!Ã4ÙóÐC˜¦Ž*¹éär9Ö¯_Çúõ}$“I^|ñEº»»˜˜˜ X( [¬YÓé“§9}ú õõòy”R´µµRS“¦®®ŽÙÙYr¹\ÅÒ»-­¡ A*,±tÉù)M´¥µ;2^eÍŠÙ™i�4J9SòÃåV¥e„L™dÓ¤F¡GÓ5LÓ¼j ©¦ilÙ² )%­­-€àÑG! óË¿üæææY¿~=­­-œ={Ó4øð‡?Ìàà�}}}466rèÐ[är9}ôQzzº¸paÃ0ظqRòù¬ÿ^B°±ÙàĈÉ;CEf ɰ`g‡IC< cÜ8¤”˜¦IWWŸÿü¨­­ÁS.±h”D"Imm-=Ý=ضaÄ¢1ººº0M“LfšO|âã(åë[¥ÓiÚÚÚI¥RäóyR©4<ò0ÿôOÿĺuë$ ÓÕéoÔD"üq~ÿ÷þ?þ8ú60|q˜þþ~,ËdÛ¶m´´´ÏçxõÕŸáº.áp×uÑ ­$J¯“ËfùÑ„®éLMMQ__O,CJÉ‹/~ŸññqvîÜIM¯ÍdY&ñx‚T*E2™¤¶¶†h4J:fÛ¶­ô÷÷S,Ù¹s'Û¶mãûßÿ>DA"‘ ‘H000€ahšFmm ŽãÉd°m›m÷l£ÿH?ž§‚¥� @€�ôäqa!G.e£kH^¡<—Ba”ñƒßÆ)d™8üO¤¶”pl½o«$.à*£`n~¥VWònY&-­Äb1Òé µ¬_ßÇK/½Ä‹ßÿÛ·o§¾¾–T*É–-[8~ü8õWÅ}÷íÂ4- …<Ÿù̧ù»¿û6µµi¾øÅ/úÉlmÕ98`0:ç ýÅB‚­m1ëF(³¾Xt˜œ˜"âI¡I<ÏÁ°BäóÆ'¦ˆF£•6‹!ñ Ã`×®¸®‡aè(¥øâ?_YŒ !hll¬hyü¢- +•fJ‘+ØìšåÇ ÌÎGŸ«00UðJ7!ãó‚ÿv2Çúº9ºjâ+Ú/YléÉdÓ4ijjfË–M¼ñÆklذ]»vŽX466rôèQ8À3Ï<ÍGžzš?ý¿J<gMo7u–I"™À´LÞ<x€…ì<­­-,,dI$âÔ××W·rÒ"¤¢5%Y×âÌx±yCô64%ÅÓ¶¶Üªz~~~ño!¥#¥<\Û'Oa>ƒ“›EMJÕcY1” ‰*Ûâ …¦ù$ˆ®ë•ñ±’–”’mÛ¶.3÷ïÞu™u<@Gg{…ôÙ¶m š¦¡i=öJ)4McÓ¦MôõõUÆã³Ï>ƒe÷'ˆ˜’OïŒðh_ˆÁI—µ éˆôí­¸AhšFoo/ ´´6ÅXÈ.°k×®R¥^Ïüc:t]×éí]C$æÙgŸ!›ËÒ»¶—|.ÏGž~Š5kÖð«¿úßóîéwYÓÛCWW'õõuDcQ:;;‰Å¢$’ ë‘R :–"‰pßý»hkkáŸü8û÷íÇSÏ}ì9jÒ5<ýÌÓ\º4Æ'?õIš››*ä±išHMÒÞÞΓO>É»§NÑÞÑÆž÷Ëåxö£Ïây÷゚{wìÀ ™¡Ø¾c;s³sÔÕÕñ̳O‰Dxøá‡ˆÅb44ÔsðàÏÑu{¶ßC<ÇuFFGyþãϳ¡¯ŽÎöîÝ‹çyô®é¥¶¶©I¢Ñ>ø�ƒ<ÿñqÏömè†ækŠp Vq¿¨ú»ü»¬úY¾i¥›^º™€¤îÝrϾ™L&8Ú¸«“ºŠÍ´”|ö Ÿçw¾üeÂ%›ÒÕ¼†ëºäóy’Éøe‰[õ{m‡¯üÙŸó§L;?‡’‹¼¹rŠä/½Ë‰ÿòKgưê»XûëB¤c+šfR–¤J1ÿÎwy¾öÿæ_ý–i-j.\ç÷^ÞFU¾ïJí—½‡òâ¡i‡c#“ .šuÖ7šDLyG$„ž§˜™™Å²¬Š£„ë:„BÖªÛ‰”òK-Ïcrrœ7¼Ecc“ŸkÇq™›Ÿgzr’†º4[7o" ÝT’än²]~/ßqnn¡¢PyM§“—«J)ŠŽÇ¹ÉyþóÁI^W«&'ýs¹d£½ä¼V†„Ovjüë]Í$Ã&r•„×j4‰ŠE›×_©©i2™ ›7obÇŽí2aå…›(ÕŠ,~vÿý “ó8<TdhÚ£=-ÙÒf kUcïÖ3ÙlÇq+U)…BÃÐ ‡C—gžG>Ÿcf&ã»—T‹B€r S#d†Ž‘›º„r|·¡éÄêÛ¨íÞJüÿgï̓+;Ïô¾ßÙï¾ß àbk�FïÙÅ7Q”8¢=#qFÎ,.k*•ñÄIUœe*©T%•x*±'N¥§Êù#v*qEilIcí”H‰âÞdï+º4öå¸ûzÖüqî= 4»›MŠ’¨Ñ}«P¾¸gÿ¾ï|ïó=ïóô!Š2öVKlÛÆ²müþà¶>÷Iê+N›~%ü ûU©TFU~̳,‹F½Ê_üãÂ×ÿÍ×pî²ÿu‹¶i9ã»ÆùGÿó?fßþ}hšöks []Š$I¶l,Û] QÅ«6Lð,Ú;ŽG>gw܉\W&Iò¶í¼ï,Ûu@’e×Éqm-ÇÿþÏþ9™t†¿óû_&“I»ã°®{@‘ ž=|¸ìôɨ鎃:¦iB¤q‡V«Õ¸eï¼;ó+ÇvŸ™( (²‚a8Žƒ,ËÛÜœ@À²Lïø6L«¥#.›N”Dïïóí0޼wãoV¨ª|( fûÇjÿØ[~œ-ÿ:wfÀÛ–vÞ7è2cºÑntãÛ­¨áÀÞݯ~[vpDgû(®iHÁ”rH0ަbËà*qÞù®±1Í¡'ryÑ>§óÿd‰dc2½Q7I’DYþÆ Ê:Žc蔦Ï\|ŸºÙîEPü¶I°¼†¾:C+ 5Ô‹Ï—ýØÛQ7¶‡aÛ¼»\æJÑÆ¶°¶X[ú— ¸vë²(ôËìŠk †®l´¸²ÙÀ°ÇÁpà'«Ÿ[+ql8 ÂÃaóŒdYæÈ‘ÃÌÍÍ …è÷’˜w5កRÄ'qjÔç•[IŸà¾§ë:VÛFwÛãP__`sæ"‹3Õ<‚c¹`™(QÊoÒjTésLÂ=;$¨Û ”†¦iŸHвÛu»ñq¾TUÝö™(‰ˆÒvëŽÍs'|>ß’RuÛ¶÷‹p8Ìù_ýà8CA¯ÿÞ½ïË[y÷uÜ}Îë½×9mÝÖï÷ßuü÷/¢þ}ŽÝèÆÏÝVÖnt£Ÿ¸ŒF†ñ×Ö°G¼ã âààø$äp‚qÐT,ÙÁ‘lÏFp,”ê2ã£_tnÅõ^ÂÂ|Èíî Ü€|Güáû¹{Û‡ýì“Æ8˜z“üÙïÓ;÷M• š?‰¨ªˆ²Õ( -Ø´³Ô#’Î~¤kéhkt&ºö]+Òïle7=H+ã^ÏðAÏõ^¬®­¿ß­Ûq¯c]úÇ Ýäg‹uª:86.{ÌqÚü–;\Api¾²�é€Ì©þ ÇûìIúè Èü«Ëy®mÔq,G�Ç(4L^]¬sdÀB¤´Øk•$‘X,F,ûXî$ò‰/}ÙªcÛ¶>uî™Ñ¨P]»ÍêÜMŠ+‹(Š„Ï§á86­F‹b±Œn™øÃq´`5’~ŸÃ™·¢ÿ€sèh uJ’:ŸmeÓÜ«_ÜIx¿¿yLËm}e;Hv¯6s÷>>¨w£¿Ìüï5ºÑntÁ˜nt£ÝøÄ& wO¢EQ  3Ögª´Œ˜DèØS ¶*!E“îwƒŸ‚-Ù8²c»º2N-OÜG,nOî?ŽéÐù;ç´µüêƒ&úD§³BµU e{ÒñÁûØÊ�èÐ;4æÎùuÎéÔøÜüü04ǦQ)Ó¸öâRÿÆ>AD’DŸ€í˜´ê"kù"õÕYì=ÇÚ÷äÕMlnnréÒ%OàÛßþ6$“IÆÆÆ7ÞxƒÙÙYAàôéÓ oK·êbthØʸ{ßmΞ=ËÀ@?çÎã¹çžó(ïm<zx;y½zõ*š¦±sçÎm×r/0íîDö¡kc;Õzƒ«yÝÝÒQhc–vG‰i<?áñé€LXÑ$Óv¨¶,¬vq3u‡–)piS§¥ë(’ÿm{kBÿ°ýêã8~4ƒ:çºXôîc£W6¨l¬²¾¶Šª $5<c™l,Þ¦9}ž|n•ôú2¡ž ”pê} ‰mÙ^¹Á½Ú¤eYœ?žk×nðâ‹_D×u¾þõ¿âù矧§'ãM[ûÏý�—­÷½óü;}«P(òæ›o²¹¹I2™àñÇOóöÛïðÔSO I2¢èîïòåËìÙ³g[ÙÐÖý›¦É…  ›ÍvA™nt£Ýè‚1ÝèF7ºÑŸ'A@QîÝ͕՛ø2YEnç$¶¦"†c€ƒŠ€OÖÉ lÓF_¿ÍøŽ~|>í¡õN,ËâÇ?þ1­V‹ááaz{{Ñu¾¾>˜Ù:Ùß lLOOsþüdYæäÉž=¤ T«UVWW= “”nÝi𬮮ríÚ5FGG`zzš¥¥%öìÙCOO–eñî»ï¢ë:GÝÆè”$Ü}~ßkµ:ëôõõ½²üq$’àê‘lL]B®-"F,Ûºƒƒ™‚à rcƒÊÒMôF_0‚ Ýœ»W¸Z) ‹†N4¥V«á÷û1M“¥¥%ªÕ*Ÿýìg±m›k×®1<<Œ®ܸ1ÉÒÒ"ccc¬¬,388Èàà .\ P(pêÔ)šÍ&×®]gfæ6±XŒp8J½^çúµëH²ÄÞ½{ …Bض͙3ïÒh4èï T* h4œ={¿ßO,#‰Ç9þ<\¾|…H$ÂŽ;¸ys’z½ÎO<ñ±ƒc–e±¼Q¢è¨X¶8¶[Ì# ²àŠ¥îŠk|yO‚Óƒ!ü²ˆaÛœ]«3QÙ“ôc9óå¦ea;‚#`aã °aÙ(VúïOñ?{ö,Ùl–T*Åúú:ªª’H$îÁ4ºSj¸•1ÑIì·YîßÜ+Ý ŽmeL8ŽÃÏ~ö3vîÜÉààà'>Q߯ô`˽qÀnÕ©U˪Ÿ‰gÿ.;÷Bõùq, £Õäæ•ý\ù/©” ÍÚ¶{°.} 3ƶmJ¥KKK¬®®±¾¾Îúú:–e²°°ÈÍ›“LLìÆq666Èçóœ>ý8F“K—.’Éô0::ÂÜÜ<SSSŒŒŒÐßßÏìì,…Bž“'O¡(JÛýEãØ±c ôc&›› E&''‰F£ø|>¾úÕà /¼@  R)“Íff~~ž©©ivïž X,‹Å¹téÃÃÃÄãñîK´ÝèF7º`L7ºÑnt㣂1šªq`ßnôwåà§é,j;‚€£ªˆ± …¢8>GpĶ‹ˆeÓ\ŸaüÈ 'Hû0aW®\åþè¹téׯ_§¯/K4£Ñhxâ}²,ãói”Ëe"‘²,³¹éZO<xp8ÄÆÆ†Ç¢�Eɵ«-Wƒ/ZZZâÍ7ßäСCœ={AÈårÌÏÏsàÀΜ9ÃxóÍ7" ñÎ;ïpúôiü~?­V‹r¹Œ(Jíÿ7]«LY& R.—ÙØØ`ff†h4ú c\6IîÂ+(舸I»+íæ–> ‚$9h²Meú"õ|Õ@ø®J~¿Ÿh4ÊÚÚ¹\ŽÇ;Åôô´W²”Ëåèïï'#Š"Ÿþô§h6›¼õÖ[|þóŸã«_ý*Ï?ÿy¦¦¦¹víªªFùÚ×¾Æàà‘HÓ4iµtΞ=ËÈÈjuW\UUU8€mÛ¼ñÆ›<÷Üsܺu‹jµÂøøN–——±m‡ÕÕU–——Ñ4]»&¸téRÛ*ÔdnvÛ²ùñ^á?þÿã Úå&«5Û´°m«]˜š ¿Ìá/N$x´7ˆOh˜·ò ¾v£Èþ”§‡]f™íÀ|¹å2cÀ±=ØÄÐ[2ƒ¶Óöa~Û8þ/½ôò'ÂÜÜ<Á +üm&š¦š¦b²,cÁ`Y–iµZ”Je$I" ’ÏçÛ}ÐO³ÙD’D¯š¦I¥RA×u|>ÓÓ3ÌÍÍqäÈ‘_‹±ÏÕvikøl³’pK5eÍÇÄ_bÏ‘cȲ‚(I ËȪ̾GN�Õ™3÷ebÙ%Þ,0<<Ì¥K— üîqD‘‹/‘L&y÷Ý÷ED"I(æÇ?~™±±1dYáòå+ &'oòøãŸâ§?}•ÁÁAÇ& ñýïŸçŸÞµZߨ`~~žÝ»w³gÏÇ¡X, gÏžã‰'>M4#›Íòæ›o±oß^Μ9C(âêÕkÄã Þzë"‘ï¼ó©T’ýû÷w_ ÝðXSp¿Ã¬z˜1v+‹ëƒúêVØ}Ï¿®aY–'&¼µ¬¶3×±mÛ›+H’´ýÚÙÿGÕnÙº¯ê\x¿ýÞïzž±ïî2Ê­ÂÆÞ<£}ß; ä5¶r6¦mÛ躎,Ëú~ß]6ý RÊÎâÛ‡}®ºç?/óôaÛ|ŒéF7ºÑß ¦^Œ ¢V¿B KVï$˜š„ƒB$Šão ø 6 àˆ&Bi…±¡ýÞ$ìƒ^Ú—©®”JeADn³ÙlðÊ+?Á²L¢Ñ¡P;wòÒK/ñðnh˜ä7 är9ü~_ûÚ_±k×.t]'“ɰ¾žÃ0t.^¼D:fllŒ;†½cW*52™0M Ã09wî<_þò—‰Å¢¬¬¬R¯7(—«:t˜b±H ¤Õj¡ªkkë¼öÚkX–Åðð0ù|MSY_ßàsŸ{Ž—_~¥íaâ|ÌŽ”ÞÄÑr¨×lVôÆz¥Žh¶ÝÚÎ<š„R4 Tm¶mÄ©#I‰D‚µµ¶m{à’®ë†A4eyy™L&ã%è{öìA‰Á`x<A"‘¤P(±¹™Ç¶ËÔë R© ¶mG‰F#(Š Ž@¥\am5G¡°ÉÐРwíªª‡Úަi‘Ë­³¶–£R)311Áúú:ï¼s†cÇŽ399I£ÑD‘UU£·×e*•ËeOœÑ¶mdYFÓ´<v2Ð-Ëv³ÀA¥ƒüñ¡$G{ƒ„T ÛÙ’Á«s%^]¨ðÜhœßÞC•Dš¦ÍR©…iÙ´É(î¿‚ƒiÙ–ýÀ¼H$†mÛüô§¯‹Å©ÕjLNÞ¤X,áóùèííEÓT–—VdccƒgžyMÓ¸qc’×_{ Ixæ3Oóµ¯}S§NÒÛÛÇ… çiµt¾ð…ß"N‘ÏxõÕŸ¡i*ñx‚ÅÅE*•*†aüÚŒ–å^Ò–:AQüa"É^2C#n"Ò)g@t$DI&;4ÂZiY nK\: €íài³Üoü•$‘T*ÉÜÜ<ƒƒƒ$q@`m-G½Þ ^¯ ééÉ ™e}}\n B¡ ©Tª ˜FÐõ››yâqt:ݾ&Èd2d³YúûûÝó³L …KKˬ¯¯wH; 24›-666©”km†ååvìØá]o³Ùô’;UuA¾Žj·Œéo~˜¦ÉÍ›7™ŸŸ'rðàA‚ÁàC=ûjµJ.—ó˜¬:F¡P@Ó4jµ‰Dâžãu¥RáÍ7ß ··¿ßÏÂÂ}}}”J%J¥ñxœÝ»w‹ÅÈçóÞâÏ£££¤Óét …–e¡( ‘HäcI¶Ç¡ÙlÒh4¶±þqÏbuu•BÁuÐëíí%™L’H$¶µZ«W¯rèÐ!oAëa÷ßjµ÷<gÃ0øéOÊîݻٱcLJ:wÃ0XYYAQÒé´÷×uµµ5‰~¿ß+Ó,‹ÌÌÌpâĉ‡>ÆÊÊŠ·Ÿ{}=G6ÛÐvìSJô\`Üçó¹Î—¿‚rÞ.Ónt£ŸÀE‘p(À@Te©¾‰ÓÎAcq×¥(r5cD71 »V%)$"¡‡~u¢Õj±ººJ8&OP­V)Kd2 àѨÓl¶¸rå ýýýHmw£=1[_ß ¯¯p8rä0W¯^¥PÈcYW¯^cÏž=ìÜ9æ: l DQÄ0 Z­KKËD"aüþ�ÍfAˆup(—¥Ð.%X[[# …ØÜÜddd„õõuVWWéÉdØ`?ù—_£V«áói<x›7o~¬®%wÊBllËb5—£<xŒp_Šš9 çQ[dÉDTEtÙGÅŽRéí£(±T¨Óg;(mFÀÞœ(Šd³}LOO“ÍfÑ4P(Äòò2‚ ÍfÉår\¹rÇqèíím[|JÞd)›ÍâóùˆÇc$ ŠÅ"‚ L&0 ƒ……Å6Ø¢’íïC’%É¡p€p»=ºmFgzzšp8L*•¢Z­á÷ûH&“D£Q¯äâüù ŒŽŽ¢ª*«««hšh4Bo_Oûx Äb1o…. ÒÓÓóÑÁ˜v£ É"ŽcyàŒ$€_X­LåÄ|2“ù?˜.1oò•C)¾¸;ŽO�ËqX(ëÔtÔÙêY&E|@‚²$ñäOòï~—`pƒp8„$ÉLLL°¶¶ÆØØ(?øÁ‘$‰¹9›¡¡¡6sÆ ·–#•Jâø°,‹`0À#<Âââ"Ùl?ׯ_£ÙlbÛ6ÕjMS9qâ/^d` Ÿd2ñ± ÿ2¢Ùj‚ã (ò–•V_,C0¼Hm}žH"ƒ$Éb[Üqh5êÔ×ç FhÑôûô‘ Ã@7Ì–) ‚@,C–EAÓ4†‡‡Q™@ @:òØLÁ`�ŸÏG&“n'!)4Medd„™™nݺE³Ùb÷îݤR)lÛi?W×7N‘ɤ …‚èºA0Àq’É„ç>3::J.—£Ùl277G*•B–e¢Ñˆ×WÂá0{öL03s›J¥B$¡P(`Íf“D"A¡P •JÇ»`Ìo@ضM±X¤¯¯f³É¨ªÊðð0×®]#‰´`—ðûýìܹ“[·nÑh4P…±±1677¹|ù2š¦122µk×q›S§Naš&/½ôýýý†$Id2.¿±±A<gÏž=ž ÷…B4›M²Ù,W¯^ŶmNž<I³ÙäöíÛ9r„Z­æó7oÞdmmT*Åèè(·nÝb``€ÙÙYB¡ýýýܸqŸÏÇÀÀ�–e¡i}}}ˆ¢H­V£P(pñâE^xáü~?7oÞ¤^¯“J¥<kìõõu …~¿ŸD"A©TƲL4M#›ÍrëÖ-Ç¡¯¯©©)úúú8þ<O>ù$³³³ô÷÷322B¡P`qq‘jµêŸ}}}ܸqQéííevvI’@Ó\ùP(D0äÊ•+ø|>nܸ,ËX–Å… hµZœ:u UU9sæ ¢(2??Ïúú:Á`]×)•JŒŽŽ²¼¼ìéì±ZÕµq�� �IDAT±±ÁÊÊ {÷îåêÕ«>|˜Ë—/“J¥Ø½{7@�˲˜™™áµ×^#°¼¼Œßï2/-Ë¢¿¿ŸJ¥B½^Gt]çÈ‘#ø|>Þzë-oLíééA×Ýù@½Þ`bbÅb‘÷Þ{cÇŽ133C¥Ra||œÙÙYŽ;FµZåöíÛ”ËeÆÆÆÈårÔëuYYYÁ0 B¡ßýîw9}ú4>ŸJ¥B&“¡ÑpÁqUÕxã×ùíßþm2™ gΜ!›ÍR¯×i6›d2FFFh4\¿~Ó4b~~UÕƒƒA.^¼ˆ®ëìÞ½››7o>Ð]¬ Æt£ÝèÆßÀØ*dŠààÓTƳiæóËÙo("„£ˆ B0ˆ­Jž®‚#8ØÕuã~B퇵ە$‰h4Ê£>Š,Klnæyýõ7ðù4®]»F*•" Óߟå•W~—¿ü{w„%Û«E¥R‰b±H£á–ÃX–E6›eccƒññq.\¸Èêê##;Ð4žž ªªÒÓ“fj꯾úFƒ±±QR©¯¿þ&>ŸÖfôpàÀ~üãljŢ‚Àúú:kkk(í$JnO²dYÆï÷S«Õ¸xñ¢Guý8@Œ±-SGo¶X\\Dö‡0£§)$ tD³…$"èŽHÕ)×Mìb™¥åeîÝ…„ƒ¬(’„(>€¦i>ú’ä–fíÚµ‹t:í=ÇcÇŽ‘ÏçQ…d2é–¿iG& ðøã …ñûý(ŠB¹\A×[¤Ói,Ë$“I#n Ìg>ót ‹!"ÑhÄ[åJ¥RŒ‰DÐ4b±è­p*Š‚išœ={ŽcÇ%ð³sçX;©”Cœ<y›L«ªê­îo-ýHý ×Ah0B²×]'%Àt~:[âÂZž€L@ÉÕM*-›ÿá‰,Ÿ¢É‚�ZŽÃöFLÛ…I@À'Xd"ĸI’D(â·~ë·øæ7¿ÉÄÄ.êõ:¹œ ´$“ |šÁVVVH&“hš†mÛôeûXY]CQeÂáp›Ý�ëëÌÎÎb&¢è²HB¡F“×_ƒÞÞ‚Á †¡âÅ{·F½^GîØÌv�Å&œÝIaî*¹Éw öŒˆ%°©— ”W¦1ëeâCûPü¡»ÀÒöjv³õÀ1PEÆÇDZÍ4±1M�ûÜç>K³Ù$¶Á·ôøqWD»R©z@Ëõë7ÈåÖ‰ÅbŒ£ë:­V‹t:…$I„ÃaÆÆv¢ª*¢(¢i*O<ñš¦R¯7Eh4Æ3Ï<E.·N"‘`çÎq‰8Á`€'Ÿ|]o ÛÅ*ýÞjp<߯Œñù|?ˬ¿^Ñiï·oßà‘GAfgg±m›+W®pòäI&''™œœÄ¶m"‘‹‹‹ Q­Vq‡÷Þ{x<Îüü<Á`R©ˆ¢(äóy�Š¢x@~__ï¼ó†a Š"›››ÃbuuÓ4yä‘GH¥Rüà? NS*•ñù|D"Þ}÷]oìwËc[4›MO#)‰P«Õ<fÇ­[·Ã0äÒ¥Kd2oáÁqFƒp8ì‰ÔÏÍÍ ½r^I’˜™™aaa^x¹¹9ÖÖÖ8xð ï¾û.²,Óh4H§Ó\¿~Ý:�Õj•ÅÅE1 ƒR©„eYŒŒŒ0;;ËÅ‹yòÉ'iµZ¼ùæ›<þøãT«Uz{{Y[[#påʾô¥/088H­Vczzš}ûöQ,ºRÕj•½{÷’L&‘e™‘‘VWW=à`xx˜ šÍ&?üáùÃ?üCêõ:š¦y€V"‘@UU®\¹ÂO<iš^iT&“ñJ]³Ù¬§]Ç9sæ ÇGEŠÅ"ßøÆ7ؽ{7Š¢péÒ%>õ©O‘Ïç©T*¼ýöÛ:tˆ\î´Z-âñx»¤VâÂ…ó bY–e±±±ÁíÛ·9pà� 4 †††øéOJOO`éºÞ^Ô»Š(ŠÜºu‹;w‰D˜™™Áq‰¶m“N§ñù|ÌÏÏ3<<Lµê²C«Õ* ìÚµ‹ÉÉI$IbÇŽ‘ö{Ôà?øãããÞ÷÷îÝÓcºÑntã7€¹_"©) ã=üh~Q¶½åx‚>¤t6+Æ-Qp*ë ÅC¾{Zß÷… ËüÑý¡—¥Ó)žzê dY¡¿?‹$I¨ªÊúú:CCÄã1ö{äèaFFGÐ4•@ H0èçèÑ£¨ªŠßïDzÌ6 #î‘?nݺE,EÓ4b±§O?N¥RAUUb±‚ ´iþápˆH$B(t”b±„mÛ„BAÂá0¶msêÔIªÕª›´)2ªªá÷ûxñÅ/ ùìgŸmÛåÊÛX?cc[&͵iŒëß'_n²¶BMôƒ¬á¨AtEi'yR;±3±šM£‚¬4Ù\_çæ7ÿORQÑá]„÷?å%’ uÄ: ÙÊ ‚÷јeI"L$p�UUÚÏ;¹å›Ê6:p§Mt>síÒdIæoÿ­ˆD£(² [’è@À¥ 7›-Nž<N$AißÞÞ;+Nþ¶ðíÇÍÞè�Œéx”>iiCÃvLL`­b±Viy7K•Š-°±dÁ[LËáÆf ÛvÚ¥Nw4™ÑaH3ˆ„‚ð*xê©'P5•d2ÁW¾ò÷…Ü»F£Ù¶‚ ð·þöeÃ0ˆDž†ÂØØñx¼ ²EøÝßý]4MãðáCLLŒ{“O·=Äxúiwòß¹ßúü_‡D\E Ý@×[m†ÊvŒ(ŠSYÅOyî"ùé÷(*`c›&’ª‘ÙëAÜʦI¹\A| «[Ðê<dgëxœÔî ŠªîçáPÃ0yâÓ§1- MU ƒ„B¡míC”EYÙÖV{2·DcÉÊïw©ó.ƒ&ì– ™Ì½Ê6¶ö×íýþ—µÂÛONȲÌèè(‚ páÂlÛ&â8dnnÎQÏd2d2®\¹B­VóÀÛp8L©TÂqEñ´Þ:úÑh”F£A4%‘H´™]I…¨ÕjŒŒŒpòäIソgÏÖÖrèz‹Û·ocšf›QëöÁ|>O4EEêÌ%–——=‹iš³T*Q.—=`DÓ´mÛ¹s…‰‰ .^¼H¡P  ¹Œ9]GÊå²·€U¯×½ù«ÛU" aYáp˜@ à±sæçç=�4·&wžR.—ÉårÞ8 ¹s™H$Âõë×B–]-¾Î>:Z:ñ¿#„/I>Ÿ@ €ßï§Z­z/A}EQPU•T*E­Vã;ßù{÷î%`¦irâÄ nß¾í•ÈvžUçš"‘Á`˲¨V«(ŠB,CÓ4Z­†ax:@Š¢P©T¼ë ‡Ã¬¯¯£ë-oALUUZ­.\  {÷Õ0 O«¥R©�n9U±X"p¸ápQ‰ÇãØ¶ÍÀÀ�ápØ[d …B„B!‰Íf³½H£^¯P*•¼÷H0¤¿¿Ÿ÷Þ{l6K«Õ¢P(xÚ<ýýýŒ³cÇŽ6#¬ËŒéF7ºÑßìÉ”(²#@›¼FS²plÛÒl[‘{°| ºUC$ÉeVPÍ3Ú'à{x‘ÚŽ˜Z:ò’¶£Âq"7É×u¹¹9{ì14íNrF½Õ'€“'OÒÛÛó¾2©Þ^_ÛÙ¨Æøø¸·Ê%I’纳u¿§§g›kSgÒ9çN’‰„ …‚Û@ AH¥’ídDÛ–pý¼á2bl¬f•ú»ÿÞøç¬—bØ£ÿR²QpË'ÇÄö¿ímmÉÑÓÔ™üÖ¿ÄÒ X{!F2Ä&NxǸ/X×Èëü<¤ÎÇ%—ã8¢ ˆxš÷C#4Íþ²�»m³}ŠÌ£½~æçLtóþw eÂ?}{™×ÊüO2÷£É"–ãp}­†eÛXöíEQâxOÀ+×»_DcÑ-TîL»-‰Çï<ãT*åUªm½O~¿¾¾^ï³Nb­iÑhÄkÓ‰±»ç×Îæ¸3øü~VW—éííñ4Sî”3Ê„b‰ÏЬhVò.Œ c8‚„ƒki¾Œ©Õj¬ol0<<òкŽ€«Ñõaúã² ’éÔ–£  ;÷…ê¸Ówœ÷wTI’Þ7.v£ UUÙ¿?ÍfA£Ùl"Š¢ìÚµ‹`0H¥Ri—¾E9}ú4ŽãxàÅáÇ=1þx<îiùý~dYæÄ‰´Z-ü~?~¿Ÿ§Ÿ~UUÑuÝc\†Ãa:ä[Ò©ÑÑÑm¾±ùžžž¶XyÈsP”e™D"á1S©àtúóÐÐñxœÅÅE@ ··Ç+]Êf³Þ9'“IŽ?N @×uqñöÛo“N§Éd2T*’É$Ï<ó ápØÓmé€7Á`'\F§¢(»§sªª²cÇ"‘Ñh”t:͉'¼ù”Ïç£^¯³¸¸È‹/¾ˆ¦¹ ¹D"A(â+_ù étY–©V«ÞBˆ$ILLLÐ4J¥âiNuæEfK:&ó{¿÷{p&î»bxx˜‘‘øý*• ñxUUyñÅI$Ž9B½^ǶmvîÜI(Âï÷ ùÓ?ýSâñ8²,óùϾÍî»Sr•Ïç½ûæ–hºL×çŸ˲èéé!‘H ( }}}„ÃaLÓ$ Òl61M“‘‘Þ{®s>÷œeYàÜi{Ð) «V«ÄãqLÓôî—$IŒŒŒÍf ‡ÃÔj5Ea``ÀÓáH$=z´­ÓÕcºÑntã72: C*#£‰L•7@‘©ü‹ÿ [×ãI¤á1—Þ¤þÚwLˆügÿ=’ éèôF2Ȳô¡iÛ6•JEq™w'�>Ÿ#G޼O¹~«²¿ã8=zô¾À‡ã8hš†aÞÊFge⃎{%—Ïî•dýB“QÇÆ¨°ç^Ãl4hnäwPÓä šh Jà¸Ì, Áj!5|™Å7h•rèacc†Öâe̱G% AÈØŽéØ4mݲ\A|Ù™Ÿ’PD M”‘ñ¡<¿xPàþ–Å>Eæ™1~²œ£¢» öý¢a[¼µPâ?úv‹ÿðh§‡cÔM‹É\Ó²=f €, û žK =D»½ûH’ðÐýò~�B§AUUøüU0wƒav rÙ]KKKŒŒŒ´Ëk¶»¡¢ˆ?–ÆIºà‹e»âØÜqÝè�1­V‹ùùy,Óò¾—X¶MÓ1ÑMÃs`Új·ýñö[Ú„ â”v©¢ð‹úñ72$I"™LbY–÷ˆ¢H,óúÁVFb¿'xÝaYôöö"¶ßEèÎ{){,VÇqÈf³X–µmÌêˆÆwÚq§dv«ãÎV×#EQèééñ�Ú}º$Ëü²mÛc”J%O÷f~~¿ß‡mÛžhq4õÆ…Ž(îVǦV«Å‘#‡Û%ºû÷ï÷ÊfA ‰ls€ê�A€wަsM– @$yߨ\©TxüñÇ ‡Ãž«Ïçó€Î~\åÎv6¬¦iÞ÷îŽXÜ“  †<öOgMEÆÆÆ¼ï¸`t›{S‡å²wï^ïœßæóyÆÇÇÚÆÊÛÚÖ:çî²}ü^™ïÖûÙ‰*î\cç™nV¶:=©ªJoo¯·ÝVqäÎ9uúI‡mÚcºÑntã78DQ$JÒÔ¸¾¹Œà÷c¬ÎaUËHµ êÐæò<æÚ2‚¤a–Ö±ý!’¢AO&…¼e2ô°¡ë:¯ýìuú²>|ø#%ÖúŽ+¤i2==Íüü¢(²sç;vìøõK:›fîJñ&-,à ¶øq ¡t )»AK h!DYÁv,0먕uœÍyŒ[ïQ™¾Áª©ƒèàTs˜«70š5¤@x[Úw7(ã8-Û¢l¶¨èu–J€Co$‰*)H?Ô:ÿýBADd"ŠUTød<¹;Œ¨­€€*KÈ&x¢7ÏW§›¶ðÀ=4l‹ëUþÑÏZ<6PÄr&¦å2.Üc€& üÁxˆþdQ%íײ,–—–éíí% ~2žÂG¼çňÅâln®£iZ{ÕÒ·}lÙúcÛ.Mi ·U'fvv–••†††Û`Œto­ìví™e[£A®Z¤a¶H¢„4ÿ/ü ÔDˆâ# *Ûš.(Óˆvn$I$ ±ººŠã8Ç·±[;Àe.—óØkkk8ŽC<î:Àéºî%èÕj•X,æ%­ÏÖÖÖe™l6‹®ëø|>O/DQŠÅ¢ÈttÖ××iµZ °±±A¡P ’ɸ,ÂÎÿEÁqt]gaaÃ0Èf³^ ‘išÞuuJž;,ŸN©b"‘À²,Ïq,—Ë‘L&äöíÛD£Q†‡‡·Ù.;ŽÃòò²wÞ®N“rßûß1î|¿Ñhl[Üþþ~²Ùìû�ì­ca±X$ y×ýQÇâûmë‚ÛÇλǚÎ}‹F£^yRG«êîc‚€ßïçäÉ“Þ5ÜëØmlÛ¦Ñh ëúûÊ”ï~е¸çj`ÛÛAÃŽ–O§Ô÷ƒîU±X¤T*188øK³ºî‚1ÝèF7ºñ ŒÎÊR<g@2Ñß~ís¿ƒÿ+ÿ‰»ú[ؤõ“¢~vDzâQô×~Lº¹AOæÙý"鸱LMM#ˆ»¹pá‚ xV@€L&Ãââ¢W nY&ssó8ŽÃøøNnßvÝúúú0 \nÝ«SÖ4×Igii™;w¢ë:33·ñûܺu EQdrò&¡`]ס­§E¹qã:ŽãŠÕ5 –——=Êí/åÅÙq=rÀ2uœ¹—‘©#J Ê¶í •çñßZF]ü‚EP‚Hš ¢ä4 UÄ®×( Á"¤9„à š(͛ؕߎ$ºöåw­" ‚€éØTÌ&ËÕMÞœ½„i[È¢ÄR%G*g"=Èz­ˆ€@ÔtKŠ¡}ê`Ú65½AHó»`M³ÅF­„_ÑPe… âóÀphš:ÕV€ê'¤ø�‡„&#sgâô«J·–÷l½_’(Šøya"õü"óMóƒ÷WlüpjÓ³C¶;Z1AUà³}2ŸÛ?„"‹ˆ¢ð@ò½÷ÞÃ4MšÍ–— ôôô0??O³Ù¤¿�¿_ãöíY"‘©T’™™ÛH’ä9YlllÉdH&“\¹rAÀ«“W5Wö±XÌ+kšŸŸÇ4,dEæÈ‘Ã?· ò/ÀéˆL Q(X_Ï!Š™L†PèÎ n‡Åçl)#rÚº>¶gç>;;Ëââ"Á`;v´¨N;·1¶ãP1[l6+\[»ÍÔæ"ª¬ %8Ú?AË4hš:a-€,J€(ˆíò(˶¨´êÄüa\m%Ã4ب—ñ)*¶m“ Æ<0Èm[¥V H£T&Š*´Î.Óº®sùò¯E£®põÔÔ§OŸæ•W^áñǧ§§g[Ò=99éé£8p�˲X[[£¿¿Ÿ—^z‰S§Nxûí·‰Åbœ?žçŸÞ+3™™™ñsßzë-‚Á {÷îE’$^~ùe&&&Èår?~UU±,›Û·o³¼¼L8æöíÛäóyY\\l— »â¾Ç÷Ê| …“““9r„r¹ÌÊÊ étšï}ï{ xãÃèè¨Çª(—˼ýöÛ<ûì³4›M¦§§Éår º L‡I355E>¿É¾}û½’˜F£Áùóço[  ‚ž6eY˜¦éM­V‹—^z‰çž{Î+‡Ú:öú|>Tê°6�Ï‚^EZ­çÎã‘G!‰xå;¹áVfeY“i뻯#ÚÝъ錙š¦yâ½>ŸÏ3m ˜Î¶—/_fdd„©©)Ž=JµZE]±rEQ¼ëߪ)ÓÑ+s]tÝmƒšª¡jŽmSoÔ™›ciy‰Ó§O#‰†éêÈhª†n8Ž"+¨šê†ž>¢ã.HtX5årÙ½ïëó@° .]ºÄñãÇñi>Õ=ßÎÜʲm4MEÓ4KKK‚À~ô#Oç¨ Æt£ÝèÆohtÄ$ dÉüõ¿'gê¨ç+±Æ…÷0o£F^@zä´êßüÚÏ~ÀÁßý2™ôÒñ·c î Õ•+W™˜˜@–%–——¸qãûöíçüùó;vœåå$I¦^¯sëÖëëœ8qŒÍÍMAàüù‹D"TUâܹóD£LÓ¤^o°¸¸ÈŽÃ‹Å¶“R—/_öìK¥33î¤èêÕkœ>}š÷Ξeß¾},,.pùÊÖÖV‘Û·g‰Çã vìöh´¿èdÓi¯¶ØŽE«YCZ{AÖ „z“P*‚ä˜È¶‰Ül!V H€¬€(; ˜&¨‚@@‘¬CvH@ €(LáT¦±“£ˆŽzß’#Ó¶hÚg®SmÕ8Ú¿‡ïÝx‹ÃûqäFnERPD7QLb„µ�S› dBIòµ"WnñÄèQ6ëeRÁ’(òúìcbþ² QÓìÝI±YåêÚ M£Å¾ÞQüÑZމåØH‚ø+bî%X³õ\4UáÐ`Š¿[¨ð\,r³da9NW»78週寂# Š  ð©¤ÄÍ’ˆ¥nw7oÞddd„³gÏòØcŸbee…©)·ÿH’Ä¥K—9~ü7n¸ ÆÆÆ&çÏŸ÷]w­ÆggçÚËiªÕJÛŽ\$ rùÒž~æIffn·û#ø|.]¼Ì¶­ôþâ°JgÛŠæG)S’$×~½¿¿Ÿ……9677±,‹dÒ ! ‚×·–8ضeÙèz‹µµ5fffXÏ­#J"û÷ï'™J~àñ­6³^+p~ù&GúwÖ¼2u–T(ÆÞ1Öªy–Jë5""é!æ «è¶ À&ßãKŸ¢¡7i-bç—n’&©¶êìëc¾°Êp¼—€¬ñÞÒ$ºeõ‡H£èŽEË6QE¥û"ìÆG7E¦\.ÓÓÓC<÷,«]ǵ†aÜsÎѱŽD"´Z-Q©T<@ Z­ †\Áíö~¶²Ei[«8Žß$rýúu&&&¶�6ׯ_çÈ‘#Äb1¾ÿýïS,I¥RT«Ut]÷\p:å#£^¯{`F£ÑðÜ—zzzøÞ÷¾G:æÀÛÀ¦F£á zw\Ÿ±XŒ\.ÇÀÀ�±XŒo|ãìÝ»ÏcÔ\¾|™þþ~Î;Ç‘#G�¸ukŠÅÅEO<¶R©ÏçG}”ùùy^}õUÉd2‹%r¹5z{{9pà�†apæÌr¹œW^%Š"}}}¬­­‰DØÜÜô,êÏ;G³ÙD×uyì±ÇږЉ8–ey, ‘‘677éëë#N355ÅÚÚ¥R‰Z­Æ³Ï>ËÙ³g‘e™ññqVVVðûýž³Ö§>õ)†‡‡] @–‰Åbܼy˲¸|ù²'º[,yî¹ç8þ¼ç|tåÊêõ:‰D‚ÍÍ<›y‰o½ý‡fÇŽavMLP©Tyç3¬®®¢ª*ÿ÷¿úøô§OS«ÕY]]!s˜\aãÄ0 Î;ÏêÊ*»wï¦T.Q.•‰D#òydYahhˆtª‡R©È“T« ùÿúÿýÿxôÑGÛý¢‚ϧ177ÏØØ(ÁPˆ]»ÆQU…ááa¦§§i4¼ûî»]0¦ÝèF7~Ó'T²,óÔ“OÒ2LþÙÿõ/Yø'·ÿá‹N¢~á·a ‹Q\ÃüÿñéküÉïÿ>¿÷Åßñ„q?L†Áo¼N:Ýã: È®{R6Û‡¦iô÷gÑõW¯^% ²{÷nnݺE½îNò>Ì»ï¾GOO¿ßÏÔÔ4étŠd2I½^§V«ny.—£X,’NgxùåWðùü8Û„òúûûÜUþ•å ù§N=F8ìÒ‘UUáÖ­i._¾â‰þýRbl só&~ë6NÀBQ¡×ñ˜C³ ¶ ‚åx✶ ‚‚- KK@"ã Eä� ;HÒ õòUó1Åï¹ÂÜ}].#À¦Ü¬Q×u.­Î¯—q›BÍu%¨µš(²ÁOgÎóÄèQfó+Tõ}¡-à'œ iêÔô†eòï.½Âg'N¯—ˆúÌl,óE°›…ÂË•M&ÒCäjEÆMÓ$µ çWT¦ó°ýÈqÂ~ÏEd†zv¹š€n;(ÚÚ^Ò% âžì‘ø§Ø;F‘DWèõÂçóÑ×ׇ¢¨mË+++ìÝ»—ÁÁjµºg%>99ÉÁƒxæ™Ï099Ék¯½ŽªªÞ îÆÆGŽfss“ÕÕÕö) „#aúûûÉårT*UˆÅâ\¿~ý—~¯`®3îu˜s…ü&µZÛ^§R© ñû}hšI±,Ã0h4äóy/ñÐuMÓØ½s7;wîD¥‹b#`;îjs]o²^-°RÙäjnÛ±™+¬`96-S§Ô¬ðæì%>=z„sK7(7«Lå—Ù™$ŠPÔkø$™©ò:œÊ¼q�� �IDAT«•M‚Z€b³JÔ`¥¼ÉzµHPó³\Ú`©œã`vœ››ó켦gÚv÷%Ø–ÜÉ2ƒƒƒ¬®®’Ëå°,‹h4êi³m]€é0ú$I"“É`Û6SSSž¾Rç½jù|ž`0è$###žvÊÖ2@ ÀþýûYYYñt¶vîÜÉ«¯¾ÊÈȈ§AÓåï0<: j¹\¦Ùl’ÏçiµZÞ÷·–¨ÔëuÖ×]ûøZ­æ•2†á‰ÐvÀšÎut´êªÕ*>ŸÏcà¸,œ;eS—F×YYYÙ¦©×)Cêïï§X,z×÷ío›½{÷¶mìÓ<x—_~™gŸ}–·ß~‹/|á žFK§tIÓ4ðûý¤Ói …çÎãÏþìÏxõÕW= «§§‡V«Åêê*Åb‘r¹ìkFƒÑÑQOø‡?ü!ãããLLLx¶£££üèG?"{Ì–S§ã7^gtt”þþ~¾õ­oñÔSOQ(ôØ/‡æÏÿüÏyñŹzõ*Ï=÷óóóܼy]×iµZ8–L&Ù½{7­V‹üfD"A©T¢QoL&xã7øëÿ-®_»F±XtâÚÏûõ7~F­VÃ4M màH4ê¹vJ¦œ6“'c··×4ÍÓŽéÉdP5rôÈ#lnºBïéLÛ²âí·ß¦V«qà€ë,V.•‰ÅÝcuØCº®wÁ˜nt£ÝøM`:%¯T)åw^ø©D‚?ÿ_þ‚é?ÿ¯ÿþŠòü ˆ+ËXñßÑ·¶ÂóŸÿC>ÿ¹Ï¸Kx÷a“¢B¡ÀÐÐ_ü♟Ÿg}}AÛVŠATUm;$YXX —[ÇçÓ¸qãׯßÀ4-öïßÇO~ò|>ûöíÅq\'#Ûv$IôÆï~÷»4›-žþyLÓàúõkí—àn¿§¢ïóih>•“§NòÖ[o!Ї¢X,rëÖMvïžø¥1®ø«ƒm5!÷ ²¦»¶â6(¦€ª„€–¶î`›îf¢, k²O@PIÀj˜p3‚¨:Rõ=lý÷°üIÄ»’ÇN²+Š"‚ã¶Þp‚KkS8¶Íñ¡ý¬W íïvRLŠf(7ªìíáFnŽÙÍ%þÞ£_@‘d–ÊëLm.²ZÉ·Kr, *«å<~Ycgfˆb³ÂŽx/5½á‰‹ÞA§~õñ áXA%ˆT~ëèNúƒ"ÿë™U.”%†åÚ];wyÞ´•E„¸&ò…~‰?>6ÌHŸrÇvùƒÚ^G˜1 àó¹ýèàÁƒÜº5Å7<×’óçω¸ Åùóïb:»wï&—ËqóæMdYæ‰'žà[ßúkDQdttŸOCUe­M·VI$â\¾|Ó´PÙ£qÿ²Ç±º­›8ùØ¿?×®]£Z©¶©ðÍfË2(‹mú½E£Ñ$¿¹ÉæfÓ4Ð4ªªð%™+—¯âóûÈöÉdÞÏreA%‰¨?DµÕ`¾°Æç'NñW_Æ-æÜ2EÇb(ÖÃÌæšª‘ 'xíö9¾°ûSh¢HÓ283Ó±™H #8n‘[ËÒ™-lÐ| G{X¯Md)5*Û€!QèNÑ»ñѶmr¹ï¾û.¢(211ái¶tþþÊ+¯022J6ë²'‚Á ››œ={Çq…‚T«xÛ(ŠÂÌÌ ’$‡Ù¿_›¡Wõt`‚Á ;wîô€Ô×_ééi:D:&rÙ4×®]cppp8̾}ûxõÕW©Õj<õÔS¼÷Þ{,..¡ªnYô;#¦iضÍää$øý~8xð …BÁ+ãL$LNNrúôi–——Y\\äöíÛ=z”h4ÊØØ_ÿú×Q…çž{Ž3g\f† dùáˆ(Š<ýôÓÌÎÎ200€a$“I>Ìêê*‹‹KLMM1<<Ìää$CCC„B!|>Ÿgý­( ›››¼þúë|úÓŸF–e>ûÙçxíµ×Èf³<þøã�,//“Ïçéïï÷©ÇáñÇç[ßú€W¶ÔƒƒAlÛf~~Þs¬ Ȳì¹užÙV§£Îù…ÃaÿößþŸûÜç°, EQxä‘G˜åÙg?Ã7øÿÙ»ïø6êûà/ÝiK²,ïÛ±ã8‹$Í ‰Ca„MYm¡-¥”QÊ(-#-e–/¥e ”«@ ”„‘&„ìá8ÃŽ÷ÞZÖ–î÷Çé>–¼b;‰HÂûùÀÄÖ¸;ÝçNºÏ[ŸÏûŸŸÏðj4 ¤§§ã“O>Abb"–,Y‚ýë_�ÄD¾jµuuuزe 233ÑÚÚŠ`0¹\òò28XŽp( V‹`0�‡Ó¿ß¥R ¹œ'“ÁçõÂëóA®PÀçƒO:–]{y½„‚!¨Ôb0^&är~¿^˜LF8N„l6¼µçM¼þúk˜<i2rsÇÁl6£¼¼{öìÅbAKK V®\‰¼ü<O@(ÄÎ;ÑÒÒ‚ñãdzòØÇüór·Ë¢þ–~ç¢þ•~øÈ<ò£ �`š1yÚ·öHäBN4ý“BÊ8—]yîºçh´Úå*‘¾qñz½0 ‡íÀõOR‡áqà`yì1l¬k€«h"´Õ˜n2âî;ïÄ)§LƒR! LŒ¦ºJôëͶ Ö"íz$Ën™ÑÛz$ÀpX€Ý.~»Âq\dÊCjµ*&׆XÒ:·£ü–ë¡r~übGK!Ü+@ðŠÁ)¿hTd¤¯³/È È@ÅKÄ@Œ €œ‡_“‰@É[P'ÿ ¶‚LÔ6Â!tzQgkÅGåëaÒˆ¹í®\4q!2LÉØ\_9ÏcWsÎ*œƒª®&¸>t»ìð‡ý8·x>9°MºÝôx\¸tÚb|¼g=Æ'gÃáëE0D׉…㦣ÁÞŽC °è0/g*2ŒIPq XT(ã8MI8½,‰¢4LÝl6ÆTúè|°i- …ÑÕcÇš²j|VïE¥#€Nw�Þ €  6…‚t ©Z9&™8\XhÁœ¢\èõ‘;ƒä¨Íq>Ô’þÛÜÿ¾¶¶v466Âãñ@¥RböìÙÞ+Z[[ÑÝ݃žB¡ æÏŸwLrÆî½�Ün‚ÁËA 柒C£Q»Ÿ¤éGÒ°üîînð¼ *¥‚ Žæóû}ðù|¬L­Ïçcy ¤iáp­“'OCQQÛ–þB‚€ž€;6TïBeW¬z3ªºšpIÉ"äXRÑâèDƒ­ UÝM8wÂ<ìl:“Ö€êÎ&ô¼8-o:¾¨ÜŒ©i…ØÕ\ ¤”|Ôu·¢$=[ê÷bbò8Tt6 Øš™ŒCYÛ!¨åJ”¤äaVÖDÈe<,JT|ü’c ‚ø¨TªF|¬„B!xÜ.<þècxïíw!DF÷äãáó>,_8xäQ”L*‰Ix{¼c¤sA}"å4‘Ê%K#FöíÛ‡I“&A«ÕÂëõ"ðC&ãXB\qÊ“‡ƒuÚe2J¥<Ï£«« ápV«^¯ …r¹œ•”…BP©Tlj‹B¡ÀêÕ«±`Áèt:¶RÎi*Žôþ.Mâ8Žu’£÷•§;ýý“ÏnÛ¶ ‹/�ø|>ôöö²êsRi›¥åÊd2ìÛ·Ó¦MÏóðù|,·ŠÇãŒÈó´H× Òô'éúAÚÒ²C¡«n¥ÑhØc¤ü*Òg™´,ŸÏ¹\Îî“®!¥iaÒò¤`™Äv¹\(//Ç´iÓXéoiZ–4ÚGª®X rñ½ÚÍî—ö¿t}+•¹–ö‡B¡€R©d éË:©ý”J%�Ö¯_wÞyáp(²l>ò9-N+•ªTI£—ÂáPä6�@Îó0$$ˆ¹îB!�båHi_÷»ap϶YÊ“Ãqâz¯¾ú”––" ÁçóbãÆM˜?´Z]ä3E¬0%å¿ ƒ°XÌs�Ø��ø#?¡ÈO8êGˆúWˆúZ'úƒ\ ` !„Á˜Ã•p¬ó …àóûQ[Wÿ÷ö;ؼ};¦L,Æ/¿&A¥R !B8Ž~0&,„Ð]_Ù¦Aáo†Lô]Ââǵ,4LÛñâ'§L%ƒ ú>e9‚29ü“_AbÁ™àå|$�è C€'@·Ï…ÕÝM aŒ·dAI, ‡YY^ö:#£?Ä„½bÂQ–ÔW&æ¿bûRõ 9ÇC€€PXÌ#çx¨xŒ 5T¼JLà‹ø$ð=\0&:H0X`C:C¡0¼ :z¨n·¡ªÇ‹Ž^?zƒap2Œ*)zеÈIµÀ¨Ó@!çÁs²H ñøw8¥jd‡UB€ÜÜ6M ú1^¯ ðûý?~<û†ô»xïôx¼c ÆD—ž ƒ°Ûí°Ûíb‡G&v|‚ ?Á� ‚Á@¤âGìJ­Áĉ“Øþ¬ÝÂàaó÷Âîs£¦§='Æ%¦!YgfI°ÃBaA`%Í¥Ž» „Ye-é¶0ÄÛ8Èb®Âe1Wê}ç™F®„ŽWAÏ«[2‚1Œ9Ò×èr¹Ø¨Š±,G œHï/ýlˆ¹Fß¿#^§ô~]nûp()ð áóù¼Gµé5Hï7 l}RðE:®£_óñÄårÁívÇ”·évF6B¡PÌ´¶±X¹òc¼÷Þ{c~~ àg£;yþè|™p饗₠–Áï÷ÃápÀlNÏsCž#*•â˜ch $!„Ä‘4uäð“ ÈpZÂñ¸å¦ŸciM ²²2‘–š:è ÄŒµdýºK¹ÊˆNãÕ€ßBÉ"µr1°"cŽnx–ßCü/rAÌFˈ Œš¬a·ƒ ZN ™Ê�ƒBƒ4½%2Œ7ú€‰îöõï ƒ¾®¨ $„Ô·~^ÆAÍ+ á‘dªñ=Þ¢G¥ ×™lŠ—t›\ÎC/ç¡S%!75 Ãaƒ„BáÈýrÈå|ßT¤¨“ïsL&“A©T`âĉÃ>F£Ñ °°ð;ïð >êçðç^ôs¥!úIII0™Lp»ÝðzÄÑ6áp(Òi#ƒ!B86±¯ @* X,IÃv.8È âä0+uPóJX4 , ¼Œƒ†W@ÅÉÁƒ£7crLÎK)KJJ ôzýåwR*•,¯JWWŠ‹‹¡P(àñxXÂÞ„„„˜çH¹=F" ²2ÑÒTáÔ××C§Ó!)) <ϳjJÃéèè€Z­fù\A€ÃáˆÙÎîînìß¿'Caaz{ÝÈÊÊŒßéQì/µZÍFÕÕÕ ûyˆ‘òá8Øl6¤¦¦ÆTÜŠ~¬4Šg¨÷Óµk×Q è›fåóù¡ÑÈø¸x÷Ýw¡×ë1qbIäzAôõù|>¨Tʸ´c!$¾Ý)6ÝfäA~‡¤$ Ìfûæb¨iI#™F@bã%}ûq¨@ƒ% Šy×# ‚}·=lŸMè‘ há8¨4zpüÀQ1ÑadÐp ¨9yä[y!NûI LðÒ±&‡ ^íÎDlÜ©ÿôºÁFÂDŸÎ ®¯#Ìóª!ÏÁ¾<9'î·þßEÇoàq9º`tô~–òUHßtyÌ 3s2¸|Ó+ƒ N¹LŽ0 ŽÁ1Ð)ûNÊY BüÎarl…B!ttt ¾¾<ÏC§ÓÁãñ@©T¢  �íííhhh`Óo�1ïG{{;Ün7233ÑÑÑŸÏF¹\Ž®®.X,äåå!àСCP«ÕذafÏžP(„ææf:tµµµp¹\HMMEBBêêê V‹¹ ‚Á ***Øt¡ÞÞ^dggÃfë߀N§ƒÏçƒËåB €ÏçCss3T*ÒÒÒÐÒÒ‚äädÔ××C¯×#==ÕÕÕhllÄÔ©Sa±X°cÇ8ËåHKK‡Ëå„Óé„Á ŽPv¹\p¹\ÈÌÌÄ®]»`0®®.¤§§ÇŠ‹‹Áó<***ÑÖÖŠŒŒ ø|>ôôô !!MçQ«UP(”èîî† ÈÍÍEmm-AÀôéÓ‡±k×.¨Õj–H¹¨¨p:HNNfÉl5 t:Kü›ŽŽÔÕÕEªW*ÑÞÞ­V‹²²2dff"#77¨©+ìIÕ´œN'T*ÐÐЀÔÔTdff²jXN§mmm‡Ãhhh€ÕjEkk«˜}„B!”——#;;µµµP(ÈÌÌÄÖ­[a±X`6›ñ׿>ÃŽ¹„„Øíbõ?žçÀq<äržUù ‡…È—,bŽ»Ýžç¡×ëøa·Û¡T*¡Ñ¨Áq<\.'‚Á’““#ïéü~19³´ÏÄiJ¡¨)m„Ã!üßÿýn¿ýX,TUUçyäææ¢¼¼ƒYYYؽ{÷€)ÀŒ!„“¤Ã …Àq²1wæÄù¯òA‡øRql‚Áà€À‡x7xGŒW(¡•+VqÄŽ‘ó—œ &ëtéÿBt×:¾£b‚Á ú.°¤ê9ý;ôÃÆ\¡óld¤ŽPÿãYÊ0Ò},[ÑS!Æz~¤ý¸Èè5N�dÜ÷c„J(¤cû$ Æx½^47·àÀý())ANNºººšš ŸÏ¦¦&ÔÕÕaΜ9èèè@vv6:ŽãP__¦¦&¨Õj˜ÍfTUU¡²²‹2™ 999,“B¡@CCB¡ ¬V+�1ɬ8EÑ­V‹ŽŽ|ûí·ƒèîîFaa!�ÚÚÚ`µZ±yófhµZ477#11V«{öìÏçÄ àv»ñùçŸ�:;;±téRx<lÙ²]]]ðx<˜2e2x^ÎrEÀîÝ»QXX—Ë…¬¬,ìÚµf³:„ÃáÀÌ™3Y£ÎÎôöº±|ùòHrð !Mý1›ÍèîîÇq0X·nJJJÐØØˆ––˜L&£¥¥ÀìÙ³QWW—Ë…úúz´´´ ¨¨�°yófÌ™3]]]ÈËËCSS\.jjjP]]ñãǃçyìÞ½v»3g΄×ëEff&PQQY³faÿþýhiiN§ƒÃa‡R™Ç¦wÖÕÕÁl§X~ñÅÈËËCII l6l6ªªª˜˜ÈF´··#`Æ ˜;w.¶oߎîîn$$‘””ƒÁ�½^‡ÃÁ86› ›6mÂòåËñƯ£½½å¾é«„äD(Br²~¿<¯†Ûílj9¾’’,èêê†Ùl‚Ãá@b¢v»€€ŽŽdddÀïÀnï„Á`@WW;’’,‘<;@8‚ÏçCWW',–¤H OœÚÖÝݵZ Žã`³ÙðŸÿügu6n܈ÜÜ\ƒAìÚµ ¥¥¥Øµk׈FaQ0†BNÈ`ŒØi”¦?I‡‚:G)¸5ï=zj�øý~(ò!§» Öa<™‘?ø»)f$‹tVAˆ­ª$;ömåõú “õå&J!{½^v5òœ‡O2MF¦‹=‚Á AˆÉA"“É ‰ %Gš›¤ÿh§#­Ö4ˆ£85Mˆïö]¼g‹&ÿ¨¾“ã;SSSÃ:¢r¹‹…uоj&“ áp‰‰‰8pà��’““ÑÞÞ…BÁ§z½ÅÅÅ0›Í‘ʈ<Kð«V«¡Ñha4#ÕwÄü+Z­IIIèééÁ`€Õj…Á ŽäJHFäææ"%%&“)’ÇÃÌF‹H ku:2331cÆ V•Éçó!55Z­Ç¡§§'æV(0›ÍP*•0™L¨¯¯cû :‘m8†R©Ä„ Ŭ2‘×ëEKK ÒÓÓ¡Õj¡R©P__†††H#=222°víZ466B«ÕF¦¶¨˜˜I°.–G–ÉdP©T(**Âĉ¡Õjáv»Áq›ÂeµZ±{÷n8¤§§£¢¢&“‰}¶i4´¶¶báÂ…P*•ÈÎΆÓéÄÿû_Lž<'N„ÙlByù>6‚çùÈè=KàËq\äÛ4-- ÍÍÍHMMÏó¬Dµ ÈÌÌD}}=A@QQ’““‘œœ �Ðjµ¬m¤|;R®¬¬ jµšåàß×Ä©Áâ¾V! £¥¥•%ËK£Y¥ã8ÉáŠT…RŠ•)#í¬=9ŽCo¯›µÔþ'ƒF£…Íf™–´ÿ>Ì;™™™˜:u*ÒÓÓ±oß>Fttt !!!nU)C!GùBz°‹÷è„o¡P>Ÿ?R²pôoöñîœÌ¤ªbU%»; VéA*/¶Ó2ã|L ÌF' ¼ãì—@ ¯×ÇÚJ œ‰n·êHÉËÁ·–Ë;qô’×ëg©½ÄŠax½>¨Õ2ÈåüÈ×pÇûûg¼·Oze*b‚ÒäĤP(PTT‡Ã¼¼<6u$º|ò”)SPPP€ääd˜L&hµZÌœ9“uÚóòòPWWÇ>ÿÎ>ûløý~Fð<ÌÌÌH`5“É„‚‚h4šHŽ' ‘äädFäå塳³“MyÒh4(((€N§ƒZ­†×ë…Ùœ“ɵZY³f±€nzz:¦M›†îîn¨Õj˜L&ƒAäææ¢µµ•å”jllDjj*R#yôN=u,–D„B!h4L›v «b”’’ @¿ß‚‚Ftvv²é;ùùù1ÕŠÎ=÷\477ƒçy¤¦¦²�ÉâÅ‹¡Ñhàóù‘‘½Þ�‹ÅÂö…TUIj)ÇqX²d ÒÓÓ‘œœŒ„„””L‚ÇãF(BJJ ’““!“É0wî\øý455B­V³�XNN²²² ×ëYð§´´N§‰‰‰à8sçÎ…ÕjE8Æ’%KàõzÙô'³Ù •JƒÁ�FÃ*™Íf‚�¥R —Ë•Jł҈l“ÉÄ5Ëår$%%aéÒ¥8xð ´Z-Ôj5‚Á�äò¾Ò艉øâyq?H_lù|>pÇrý(•J( èt:„BA(•*¨TbÒ÷ÄÄD8N6"6Âd2A¯×G*O‰±ôµø“˜˜žçYu/ž—ÃçóañâÅ,(¹hÑ"¤¤¤@§ÓEªE©âöÉy¸Û©š!ä{m$Õ”F’›EJ*) ËJß S‡1~F±ƒG*²D†"÷ÆH߸~p¥R“K&}&ê!rÁ××Vb[ÄǤjeÒ·bINŽÎ«ïàÜ;P!ömåáÚJ©”ƒãx œÅíó¬/‘¼ô ÁóŠQc¨šÒÉ!º¼p´ªª*Ô××#??©©©G<uƒ]CE#ý§,Ž6¼ëñ]i´¯'uÌ÷_ww7víÚÔÔŒhÿEWvŠn—-[¶`âĉ,wÌPÏ‹ÞýIÓÄÊÊÊ••…¼¼¼AKשÒ¨¡öù`ÛñØcbïÞ½£zN(‚Ëåb£„B¡Ün753ÔëP©”P*U,85Z“&MÂÝwß3ìc”J9US"„“) #}ðIÃ,}>äC4 ðrìâ…€ŒuFd2D¾Aá\LqǦQ„B!HòØè¶¢F;Öü¾aÎ2(ʘ ý“»JÃßÅ’ÆÑ¨ÔNÇþü’±ó è«„1Xç*º­ü~ñÚVz$ñj«¾éâ{ œ¦)}Otww³%’üü|äååQ #šßï‡ßïg…p8 ÇÃ~¤RÒ‡+E}]å÷ûáõz¡ÓéÆTž[ š¨Õê!íßãñÀëõú|£Ñˆ9sf³\%#át:ÙÈ!)KVVfÍšÅÚa°Ñs‚ Àív³@·Åb°N¹\Žääd,^¼xØ6 ƒ(//G~~>ŒFã ÷û|>èõú÷566ºL)À]Y+úóÀh4²QzR%Ãp8<h0FzGj¨m7 ÆBÈ1¸Ðíÿa}Çq‘oîù˜ò«Ò· 䨶ô¯ÔQ¬³=F ÊHÉH©âKjŸè1ý/$£§ÀHçUô¹Eâw~EŸWƒ]ð÷•—G/ ÔVÇA[Qæä ÑÑÑÖÖV¤§§£¾¾™™™P*•¬„±^¯GKK �J¥ ‡‚ÕjEVV:;; ‘™™ ¹\ŽššŒ7Žå¢ÉÏχÛíF[[&OžÌF ù|>´µµ¡¹¹™%µZ­hjjb¹OÊËËqÎ9ç ¹¹™MéêêBkk+¦L™Â:É@�ùùùÐh4�IHÜ̦^Ùl6´··#33ÝÝÝHKKCuu5¬V+ŒF#***——Çr€Ô××#77@� HOO‡Éd¡C‡`³ÙP\\ µZöövÔ××£  �MMM‘)M)°X,¨­­…Z­Frr2ššš “É`2™PQQ¦¦&Ì™3:f³ÐétØ´iòóóYNi›ü~?ªªA.W 55•-O•"åliiiB¡@]]-ÒÓ3 ÑhÀó<l6”J%êëëQTT½^}ûö¡¶¶)))HHH€Åb^¯Gmm-Ù覯¿þJ¥¹¹¹P©T¨­­eÓÚ››áñxðÕW_á’K.ÁÁƒaa|WÛ�� �IDATµZa6›QWWƒÁ€ÚÚZ,\¸.—‹M³Ùlhhh€J¥BOO 9 †V¡Éáp@­VÁápF¦1Y®é 1‡ÃIDì@B‚‡2™xæñ¸¡×"Á=z{Ý,xçr¹ Õj"yådÐé´P(”‡C‘€P8’›&„pX¡YYY ¯×‹qãÆA«ÕÂåráàÁƒHNNf¹u(C!'P�f°@Lt&z˜®T–š:!ßI‹¨¢Uÿ’áÜ÷¤²Êñ@ì<ª£/eèÜŠ;ntEtûIm$W±m%Mßnçá¦xöMK<²åô_ÖØÞs¢öÂ×1’}rôÚŠœ˜¤ ‰F£Áþýû¡Óé°zõjÌœ9‚  ¦¦jµJ¥’åL“ªñTVV¢¬¬ óçÏGUUZZZ””„uëÖ!??½½½¨®®f#8l6¬V++»\__””ìß¿6› Ó¦MCee%�°²ôv»===ظq#/^É@o¯ --­ðz½°Z­p»Ý,ãóù°k×.¤¥¥¡££ûöíCVV¶lÙ‚ÔÔTlÙ²f³Û·oÇÌ™3ÑÐЀ¢¢"ƒAtvv�¾üòK$&&bܸqؾ};Ün7f̘ææføý~x<ÔÖÖÂjµâÛo¿EMM æÎ‹úúz„ÃáHõ¡jœvÚB´´´°|)Ryï@ €ºº:ÔÖÖ"''ápz½Z­–Uí©©©ÁäÉ“ÑÞÞ§Ó»ÝÎòÞ˜ÍfôôôÀét²v©¬¬„ß/æ\½z5 0~üxìܹ“%f.//g•–ôz=û2bÍš5˜3gššš°}ûv\vÙeP(Xµj%.¹äR|óÍ7(((€ÝnÇš5kpúé§Ãív³ ÍW_}…SN9•••àyf³---HMMEcc#8ŽCww7êë‘‘¯¿þv»‰‰fØl6X,‰läÏ‹‰ƒÛÚÚY%&·»iié1ïG ¨­­Err2ÚÚÚ‘˜h†ËÕ @@BBººº ÕŠÁ—ÎÎ.Fx½x<^pœ .— ]ÈÌÌ„Ûí†ÁÀ# ± —Ëå„Íf”waíÚµÈÊÊb9•ª««!—ËqèÐ!¸Ýn ÆBȉØéßIªÃ=‡–.ˆOŒö¥vúnö{ô¹2ÔÜóÁ*[ȹ+Nä Ùá1Cµ%; 9:”Je¤üo+]ìtŠ¥…¥ÛT*4 ¼^/rssa2™`·ÛÁqrss±gÏ´µµC.—³ŠE½½½p80™Lèêê‚ÍfcÉQÃá0’’’`±X�›Í—Ë…öövX,6]§½½íííhiiaÕŒB!1Ï”Óé„ÑhdÛ'¾GÈ ¡Ñh’’ª´%%%aÏž=ÐjµèììÄøñhll„×ëEZZ”J%�:::ÐÕÕ…žžäææ²­Rž½^©Ôç…V«eIŽ�K.ÛÔÔ„ÎÎN44Ô£·· Ðét,!­Á`@NN¾üòK<xÓ§OG €Á``#„t:¼^/�Àf³¡©© >Ÿjµééé0 ,pYY+ •Ò6›ÍƒØ¿?òó °ÿ>pǦ—) h4èt:Lž<7nD{{;ìv; Ò�`£Bº»»ÐÞž�§Ó‰¤¤$p«Õ ‹Å­V ‡ÃÆÆF 8NdffB¯×C§Ó¡££€8ÅM¯×± Qâ �ÇÉ ÕŠ¯WÚG€”ØÝ)oŸØÆaBß^r¹f³‡Rn+™L¯×Ǫ ‚ø¥‹˜`Y€×ë‰Éí§Ó‰”B¡0d21˜'k:‚ ÀårÁãñ°�–TÖÛçóyÚc!ä8é<öÎD'M†|·úÚ‹Ê m1šRÈtŽ_¤‘€Ô6„;<Ï#-- :&“ ÄâÅ‹¡V«QQQ’’$&&¢ªª >Ÿ‰‰‰¬ŠŒÉd‚J¥‚Z­Æ¸qã››‹ÊÊJLœ82™ ÈÏχÇãaù=*++Y5%©’PNNŒF#RSSŧ\ÎF†äääÀï÷cîܹ0™Llª¢N§Ç´iÓÐÞÞŽžž6¢äÌ3Ï„^¯Gnn.:::P\\ �¨««ÃÒ¥KÑÚÚŠñãÇ£±±%%%HKKƒZ­fS!SSS!—Ë‘™™‰ôôt$$$ ¨¨3gÎDMM Ìf3Ìf3t:ù3}út444 ¹¹ãÇGb¢X•é?øÒÓÓQWW‡@ �«Õ …Bžžôöö‚ã8œ~úéläsNN:;;‘œœ ›Í†ÂÂBð<ŒŒ ôôô° LSSºººœœ FƒÂÂBèt:h4$&&¢ºº“&M‚ÕjŦM›››N‹ºº:¤§§C¡P`„ 8tèP¤’™3g";;r¹‰‰fhµZ�âÈ©ŽŽ,^|: *++QXXˆÄÄÄHa fΜ‰ŒŒ TVV"-- ÉÉɨ®®†Ù,.G Y­V¨T*(•JÌ›7Ÿ}ößÈ(ŸDVZZ¡Ãíö )) ƒ8õH¥ê+}  “qlĸ4Å-55M[R*•p8Ä ’LÆçÅQ4N§:&“™å#ây±Ý55k‡pØ…p8Œ„#?0ôX¸p!�L&xžGaa!ªªªP\\ ŸÏŸ>Ãn§jJ„êŒcøjJ„BÈ÷ US:~_C(by¤²ÄÒh)爔/£¤¤V«uÀ4j@Éà÷û¡V«YÂ\•JÅÅz<8NäääÄL7ìŸOZž4Êa° FÑÕ ¥DìRðGÚviJt¿F£aUÁ‚Á ”J%Ëñ&Mƒ lÈåò˜©‘RU7©rôX¥R‰Ï?ÿÓ§O I£<¤²ÛR’)nYY&Ož £Ñ“FZ¿”Ø\Ú~iôEt%©h@t•&)¿ŠB¡@ � ·¥e(ŠÈº‚„p¤Lu¡P½i_¿ú꫸ðÂeHH0Æ´…´�°uD·MtûI¹¦B¡Ë÷â÷ûñ“Ÿü2™TµMs<ˆÇ‡PH,8$`d21áûå—_ŽùóçÃd2 {|Ûl6¬_¿ï¾û.ü~?Û>1¼4‹y)Ví"·KãðòËg¯›çy6=L¡P@&45US"„“5ÀCß B!äh’‚ R°C§Ó±Ž©8­HNNFrrò€Î¸TMÂlê‹ôAØT#©"š^¯‡Õj°þè¤ÐCUÿ‘ CÑh4¬úŽL&ƒR©dÓ]¤õKËè?¥$:øpA4)'$ºüôÙgŸ=ì~î_ªZ©TbÁ‚¶c°õ‹ƒ†î†÷¿/úïèõFß.®«ï>…B…bà:n¸á†ÃC# <FÓ¢«FE_ÞöÏ·7ؘ—^zÎ;ï¼­Ód2Ⴀ· „ñöÛïDïíAH×ɨýã…‚1„rŒ‚,ý§&ÑÔ B!„ëëqäJ 2MDŸÏžçÙ¨–@ €p8 µZ —Ë…>ø�Ë—/‡F£Çqðx<P©T,gŠR©Œ©f$刑F¡‚�¹\Îò¹H#°|0RpGL¤êBCC¦NJ£‹ JKÅ Öï?Kø<”ÂÂñX±bJKKûcNLŒ!„‘êéô!ƒ$¥j.„BNÖFö¹Gß1B¡ÚÚÚQSSp8ŒÔÔTôôô )) yyyðx<(//‡Ãá@iii$©ªUUUP*•°X,¨®®†J¥BJJ šššX¦ººn·Vk2ÚÚZÙt )ŠËåB0„J¥Brr2ôz=`³ÙÀó<’’’"%µÅé)ÑS˜È÷—45©²²ï¼ó6»½µµ·Ýv{Ìc+*Ä`Ùl>)^;¥­'„1ðûý‡Gd¡*<„BNFRN’¾<Ú'ÇC›tuu¢±±[¶lÝngÕ€A@oo/êëë±eË–sCddd ¡¡---hmmÅŽ;PSS½^³Ù §Ó‰ 6 11»Æv'Áó<¼^/”J%ŒF#öîÝË’Ú¶µµÁårA¡P ¾¾µµµHL4³m¥/¬H‡+Vüa@ ædDÁB�õuuðù|ÂtA!äûG ðùüh¨¯‡˜—2ºæùÎÚ%R¦9##:*• ãÆCgg'B¡+é,%™åyjµµµµP(hmmEJJ2 0›ÍhkkÃÞ½{a0pî¹çb÷îÝðú|èêêFggT*ŒF#T*ìv;ª««QXXˆîîn6ÂÆd2A§ÓA­VÃãñ°mikkƒÓé¤F#1žzê)ÜvÛ­())9é_+MS"„ÑE®3!ƒ,rÁYuè**à³fA,$G „B¾G~¨¨8€ªCUìóQý¹y’6„pƒA9~;wr9 ÐÕÕ…¬¬,˜Íf´··cîܹ¬ìµL&C~~>T*Âá0–,Y‚p8Œ¼¼<¨T*tuu!'' ÐëõÐëõP*•HOO‡×ë…ÝîÀþ}û‘€’’$%Y P( ×ëÁqÑÙÙÉòÔHIv­V+Æ·ÛÍE'J•*­­­8pà ž~ú/¸í¶[ñôÓÁ¾}ûbsÅWž4¯—‚1„râ%¦Ð“�—Ó‰W_~ùùùHJ²B©6@!„œì‚Á ºººð¿¿—Ó)Ö²í÷¹y‚~à³A>2A,ñk·;"åxO <Ï#11‰‰‰ì6£ÑÈ~×jµÈËË‹yNVVVÌßR£þϾÍh4B¡PÀhL`NÇ“M' 5ijÒ¾}ûðôÓÁµ×^ƒ{î¹÷¤}½Œ!„Q] É�A@0Äö­Ûð·gžÁ/oý,+dAÆÑB!''!,@€€®®N<û—g°mËVA1ôr$ò•¾|Aäõ8”ï-Ãô™Ó¡Õjé�ˆÐétÐj´bЊrâ‘#ÔÓÓ³ÙŒ ŠpàÀAvû¾}ûpÏ=÷Âd2aüø‚¥§ý~?*+Áf³°¯‚1„2Š 4�!˜ñù|XõÑJ475㆟ý&C©TE.Nއ+Rñë=©¬vÿòÚqÝ’ëböÏñ¼mÇCÛ}§[¶AÚ/ßåþ9Üqs<o[üÛl`ÛÑûÑñ·N„cZ¾€ßïÃÁð÷—^Âö­Ûàóù!}ÜÉ¢>/O†Ï|@@¯ËÏW¯ÆÂE‹ R©¡Ñhè‚‘Â<aÈѱnÝ:\xá…xðÁcn—¦# Ä�€R©DAA¶mÛFÁBùDd�!˜‘‰ßz½lùv3ö—ïCþøäää@¡Tޏ“!´¢VÐÿâ»ÿ…øX.Ìû/Ga²,¬ˆëêÛOÒïc½€ì[ÎÀ}1¶}+vêp˜å­ý>ü¾=ü¾î5 G¸/Ð/`ƒ~ûftÇtôkøºúï‹‘íÛØå ×>Ãï÷уGsß›cºï5 ·oßv÷ÛÈéÃ/#z?Š>û~û1=²};Ö÷éÑ·Ý‘Ó#o7¿Ïºº:T:‡Ã‰` Àž ‹ê¤Ÿ,ŸõÁ`�••øóãOàλïBVv6”J%8Ž£!„ôm:ß{ïý áp .„Åb°<…BpXÀ7ß|ó¼yóæEîÛzc*Á xoÏùMÁBñõ™ ‚LˆdÄ P‚�zzº±mËVlߺULø' ª3*öÍ^zÌh?Ôc¢ïíßGºÎ±lãh_ɲ_N´¶KÛÐ1MÇ4Óßcšã¢‚«R^•˜€ÎÉœè +þ غù[Üw÷Ý8ëœsP2i2 d‘€Lt SÚ‚Ð7kKú[ t‰Ë “ Ù ¹á‚býï‹^ŽpØàšôûPÏ?\ yàýÑí/ xîȶC܆þû)z;û¯7zû[÷pϸžèàíÀöëß–Ñ·IÏí¿ýƒ½Þþ÷÷ßC%‰~9Û/vû†~~ô¾ïüîø‹9["Ï—ÉØíöaCíÃ…â_|ñ%¼øâKî�Ç �°Ûí1kêv ³žèû÷ï+püIûH.—Çéýæð·Gש“~ç¢þ•~øÈ<ò£ �`š1yÚ·öx.!„ô'H£èKê;àoB!ä$Á/²S‘NÆQ"R J Ì(” hµZÄĵÒk>\°#º+z¸àBÿ�N_@l`g»ǹ° 6 &c‹Á:ÙC *äþý¦¡.CÝ}¬I÷¾ÞØûcb»åCÝ?ø¶®ý†º4í×[‡ 0 v¿ôü‘nûÀíŠ=~÷¼²}{‡ˆ¾DoÐ ~¿�œ}Î9ШՃF/ܽn¬^½zð(Ì`˜¨uN)™4dûêõ|¸ò?s�Ø��ø#?¡ÈO8êGˆúWˆÚ a¸ˆŒ!„1^”ÆŒ’‰ž0áÞv !„æÃn`0¦ßý2œœÓud‘ѯ²Èè¿ß¿Ïž¢¿€!„ˆ\Nç1Yî†uë0cæÌ˜j]�ÐÛÛ‹íÛ¶y½•+†¼Ïd2ÅeŸQ0†BÆ|*`„~e²è+XšRN!ääû�<iƒ0ƒ~Î û_mmmøô“OŽþù=̈>ÊC!'ØÅ€¾’˜ô!„“烮ïóîûøò#£d;–ïõû„ì„;¯ÇrßÑDÁB9ª×«4"†B9)?ßé‹BÈQDÁB!„B!úâ…Á΋l{‡ý§‘16„B!„B+Žãh[G»tØB!„B!d¬ä¼œ¶u”(C!„B!„1S*´­£DÁB!„B!„Œ™J©¢m% ÆB!„B!dÌä<µJ}Üo§Z¥†œç‹m¡` !„B!„BŽˆN£¥m ÆB!„B!äˆÈy :Ãq»} :Ãq3* ` !„B!„BŽZ ½VwÜm—^«ƒF}|M£¢` !„B!„BŽ F{\IÐŽË)Tr:T!„B!„r´hÔj( ôzÜðú¼ßÉ6¨Ujè4ÚãjjR4 ÆB!„B!䨒ó<ŒzqTŠÏïƒ?@0D8>&ëã8r^¥B•RuÜaØþ¡C„B!„B!Ç‚œç!×h¡ÓоˆF9c!„B!„B∂1„B!„B!qDÁB!„B!„8¢` !„B!„BHQ0†B!„B!$Ž(C!„B!„GŒ!„B!„B‰#y<V’“› §ÃL{›B!„B!Ç-C‚ÛËvóõÄ%SÛÔ›ÍN­J!„B!„ã–ÉdŒËzhš!„B!„BHQ0†B!„B!$Ž(C!„B!„GŒ!„B!„B‰# ÆB!„B!„Äc!„B!„B∂1„B!„B!qDÁB!„B!„8¢` !„B!„BHQ0†B!„B!$Ž(C!„B!„GŒ!„B!„B‰# ÆB!„B!„Äc!„B!„B∂1„B!„B!qDÁB!„B!„8¢` !„B!„BHQ0†B!„B!$Ž(C!„B!„GŒ!„B!„B‰# ÆB!„B!„Äc!„B!„B∂1„B!„B!qDÁB!„B!„8¢` !„B!„BHQ0†B!„B!$Ž(C!„B!„GŒ!„B!„B‰# ÆB!„B!„Äc!„B!„B∂1„B!„B!qDÁB!„B!„8¢` 9î%%%aúôSÀó<í BNyyãP\<¶‰B!„|/Q0†ÄÅúõkQUu0æ§¢b¾þúxóÍ×qÙe—@«Õ x^AAÖ®ýÿú×;xõÕ—iGž�V­úˆµñƒÞO;ä{*'''æ|Ÿ7ïTvßòåaÍšÿbÕªð‹_üü¸ØÞãq›!„BÈÉ‹‚1ä;Ãó<ÒÒÒ0wî<òÈÃX¹ò#Æ<fæÌÐjµ�€SOK£c9 ”–·L&�,X0?në½öÚ«që­·àÖ[o°Þïj›!„BÈ÷cÈwÂétÂëõÆÜ–››ƒ·Þz))Éì¶Ï>û ;vì„ÛíÆÓOÿ¡Pˆv!'¸üãu466¡³³/¼ðRÜÖ{Í5WãW¿ú%~õ«_bþüyÇÅ6B!„ï'9ío¯½öþð‡‡�ÉÉV\qÅåøå/žça2±bŃøÙÏ~�°Ùì¸ôÒ+h§rÙ½{.\LÛD!„B¾·hd ùNµ·wà™gþ†gŸ}žÝ¶xñ"6:æòË/É;=MiîÜ9xá…g±iÓ×8x°»vmÃ{ォ¯¾jÐéLx䑇±nÝWØ¿¿ ;vlÅßÿþ"fÏž5è¶-X0/½ô<6múû÷—aƵxòÉÇb|._~QÌöMœ81f×\óØ9Vk�qŠÖx%>øà=ìܹåå»ñé§+qË-7C§ÓÅ,cãÆõlW]u%~üãë±yó7¨ª:•J5ä¾7ïT¼øâóزe#Ø‹ÿýïK<÷Ü_¼Þè}üé§+¡T*q÷Ý¿Á×_ÿåå»ñÁï¡´tà´ÜÜüõ¯Áöí[PV¶O?ýg˜L¦·ýSO=ÉÖû›ßüùxíµWP^¾ëׯť—^ �ÈÊÊÄ3ÏüvìØŠ²²øÇ?þ޼¼q1ËâyW\q9Þ}÷-ìÚµ {÷îÂêÕŸbÅŠ‘››3äzxàwHMM¼ŽÍصk^|ñùÏ€qãrñÈ#cýúµØ¿¿ ß~û Þz럸è¢eËƵçÌ™·Þú'ÊÊvaëÖM¸ãŽÛ —ËcŽ— /¼ æ9¥¥ ðÊ+/aóæopàÀ^¬[÷þøÇ‡••5¢}:Ò6ÞÿøÇ+ÈÊÊ«¯¾ŒòòÝØ¶í[<õÔ“HKKò8üùÏŠSO‹O>ùìņ kqçw {<µþ÷Þ{;æ>“Ɉ;}¶ ee»PV¶ ~ø/,_~Ñ çõH^ó’%g ªê`Ìqsà ?FUÕAÜqÇm‡Ý&£1·ß.mÓNìܹÿþ÷û¸îºk´}ô~:ë¬31}ú)x÷Ý·PV¶›7ƒø=›z}ü^~ù¥xë­bûö-8x°[¶lÄË/¿€ÒÒôAA!„r¢‘1ä¸ðÖ[oã–[n†L&Çq8í´…x÷Ý ùø+®¸?¼"æ6ƒÁ€3¦cÆŒéX¸°?ýéM�pƧã/y jµš=^©TbÑ¢Ó°hÑixùåWð裳û~ýëÛ$ñLOOÇE]ˆóÎ[Š»ï¾}´«W¯ÁŠ@£“Ÿ~ú"ìÛ·/&°Ô×IÛ„ŽŽN(•J¼òÊK8õÔ¹1Ë/**DQQ!.¸à|\qÅÑÕÕ5HÇs.Î>û¬ÃîÏo¼÷Üó›˜Û²²2‘••‰³Î:Ï>ûžzê/ž§P(ð§?ý]t!»mÚ´©xå•—qÝu?ÆÆ›�ˆÉY?üð} ìq矲³³Ç”×'++o¾ù Ved¤ã‘GFO +V<3u­´tÞ~ûMœuÖRØl6p‡çŸÿN?}q¿à[> òqÙe—àç?¿ÿûߺë5ðú믢  ŸÝvÆ‹1}ú4œsÎùèìì�Ìž= ¯¼òkg�°Z“`µ&aöìY¸ä’‹qíµ?bÓèÎ8c1ž{îol_hµÜ|óMHL4¹î¸ã6Ü|óM1·effàÊ+¯ÀœÿøFlÛ¶ý¨·¹Ñ˜€·ßþ' ¾¨Õj,[v>N=u.–-»mmížsÊ)ÓpÇ·±×—žžŽ›nú¦O?W_}Âáð˜ÞrssðϾ†ôôô˜Û§N‚©S§àòË/Å5×\¿ßD¯y4rrÄmÊȈݦ)S&cÊ”É8ÿü¥¸îº£··wÀsKJ&âG?ºž%'×jµ¸öÚ«QTTˆþðZöþôç??ŽóÏ?/湋‹/ÂâÅ‹ðè£Oàå—ÿN„B!'CŽ èììŠ | yÐrî¾ûNö÷Ž;ñûß?ˆgžùë¤I�HIIÁŸÿü8 Ä8N¬Zõ 8Õ‘ý fΜÁžˆ©««ÃÊ•«ÐÝݰø#rssÐÛÛ‹/¿üŠ=6:  Ñhb¾ÿè£#î[Y Æãñàõ×ßÀ믿Ž±ãŸ—7nÈ*DgŸ}‚Á öî-Guu ëÌõïŒþæ7w°¿×¬ù<ò ¤�À/~q²²2í _pÁùؼyKLP‰ã8üêW¿dßÿ}1˜ŠŠJ¬[·%%QX8~Ôí¿té¹HL4£¥¥…Ý&“Éðâ‹Ï!%%mmí¬m±Üùœ�X¶ì|¶ß�ÞxãŸxì±'PWWÇÚ롇t½Ë–¹dûm�� �IDAT´´T¬_ÿ5š››Ù퉉‰¸æš²íxôчY ¦¼¼>úDL°pΜٸðÂel}üãb‚R[¶lÅŽ;q啃O¹;í´…1˜U«>ÁóϿȎQN‡§Ÿþ3”JåÁ¬±¶ùÔ©S P(ðÚko`ýú¯c‚Mwß}× ë;ãŒÓQQQ‰W^ù***Ùí³gÏb#šÆâé§Ÿbç~(—_~…o¾ÙÈîŸ9sn¼ñ†Q¿æššZ¼øâÀjl/¾ø2¶nÝ6ì6ýå/O±@L(Â_|…Í›·Ä¦~÷»ßúÜ›núœNþ÷¿up¹\1ûiΜّ€MIL æ£VâÞ{ïÃ|Èn»óÎÛG5êŒB!„ÿhd 9n¸\.62b¸Ž‡^¯GBBBTÇõS¼õ–8­`çÎÐh´¨­­Em­Ø¿ä’åÐëõ¬3ué¥W¢²²<Ïãý÷ßÅ”)“‡QZº�Û¶mÇõ×_Ë–]__óÎ[·ÛƒŒŒt¬^ý)4 Ôj5®ºêJüéOâ£Vâ¼ó–�&M*Ar²íí˜7ïT6mÃãñ`õêÏ¡V«c:ä÷ßÿ>üðß�€·ß~Ÿ}¶ �pÖYK`4&Ànwļv»Ý«¯¾ûöírÿôôØpõÕ×!== Z­Ží›U«>Å7߬c†ââb444tÝwßýxçw�Ï>û ‰3eÊdÖ6ÑÕf¾üò+üìg¿€ (-]€ücôßàû|>,[v1*++Œvxòɧðüó/bܸ\¬Zõ ªåççG]wÝ‘žž†®®nkooÇŸÿü�q„É`ûS\|ñ娬¬„V«ÁêÕŸ²`À”)SØ>¹í¶_#== iiixÿýápˆË™;w6²³³#êb|ð8}N:Ž£·�î¹ç.ÜxãO¼þýè:öû|ˆ»îº7²ÿŸÇš5â6¥¥¥¡´t>¾øâ«£Úæ¡PW]u ªªª�/¼ð,–,9�pæ™g@­VH¶][[‡K.¹^¯Z­ŸþRSS�\pþ°£Ú†2cÆtLž<)æÜŽÃßþöüä'?�,X0Ï>ûܨ^óš5ŸãñÇŸÄ’%g°©Jÿû«xüñ'GµM<°o¿ý�àÁïg»‹.Z†Ç{6›-æùuuõX¶l9z{{1aBV­úˆUlš:u 6múéé±ÓÁ^zée8pï½÷>¾ýv :;;Q[[ÇŽ9B!„BÁBŽ*)`"v.{†|œÃá@UU5ëŒßÿ}¸öÚ«±wï^ìÝ»ß|ó ¬`Ÿ>ýöûÁƒQYYÉ:¡¿þõo T*QSS ŸÏ7àñ_|ñÜn� ©©;vìļy§²Ž�¬[·===0›ÍÉdX¼xÞy罘)JŸþÜn7¦L™ó:ŸxâQ<ñÄ£^#Ïó(,,ð­ýÊ•«† ÄHA­-[¶Âd2aÆŒéøéOo@zzú€¼!C²øïÿË~_·n= ƨT*(•JŒ7.fÔLJþ‡ÐY¿~jkë͹2œÊÊC¬]¾ú꫘`Ì'ŸˆÛSSS‹C‡ª0iRIÌö·µµ£­­ÙÙÙ˜2e2n¹åfdddà´ÓöõF¯×íö`Ë–m,‹ÁÐÀÛ½{öï?€3¦ã —!##ÅÅX &zùÑ9…�à½÷Þg¿ÿóŸoŒ‘Ž%�¸øâ司âåƒî§ & Œ9’6/+ÛË1â±ú% Æh4dd¤ÇÜ�«W¯a·Ûƒ7aùò‹� fÊ×hLŸ>=æïU«>a¿¿ðÂKøï?CUU5 Jéq~¤Û´rå*ŒQ(˜2e2Ö¯ßóøõë׳éKD[[ Z �@yù>( �ÀÇÿû÷@yù>ìÙS†C‡ªbFmB!„ ÆrÔX­IHJ²°¿£§« æöÛïÄßþö4ë çææ 77'2Bå7Ø´é[Ü|ó-°Û0›ûòt47·Æ,§ºº&æoµZ“¤ÿvDÿm±$²ÎúªUŸ²ŽÙ¢E§áwÞÃi§•²Çþç?â¥èmMpJb·ÛGôÜ[o½?ýé 19rFÊåêË}=5GDOO÷ilG±««kÔÁ)�Á`lùòèmƒž«ÑhðÔSO`É’3بƒ‘êŸç#z]ÑËZ²ä üáÅŒxŠÙÜ7ªËãñÄäþinx\÷?æF{Li›÷qÑÞ›#Æh4ö8ŒÎ+3Öé4Ñùt\.WÌ´žîîn6MðhçcÙ&§Óõ^û^"½ u. u|577ãž{~‹+„N§Ïó˜4©“&•àòË/E8Æo¼É*ÐB!„ ÆrÔ\uÕ•¬s‡M¶­¼¼K–œƒü`&æÌ™‰‹qÊ)ÓX°cîÜ9¸ãŽÛñÀÅŒ²IOOYNQQ!ôz=jjjÑÝÝ ¯× ÇÃ:Çý+ÊDÿÝÕÕ×9ü裕,3kÖPP””œøúëo�`À4†éÓ0`êÌ‘ºè¢e,¿K8Æ¿þõ6oÞŒòò}X½úÓ#^~ÿÎ{FF:öì)cG‰‡ø=Î<sI$HàÀ›oþ?ìÝ[•J…§Ÿþó/?''Ï<ól„ņ _ã³ÏÖàÀ¸ï¾{cFRõï€k4èõzX,PÑÿ˜»é¦_bÍšÏãÖæýÛ+;;kØÀËàÏéû»ÿ1>RÝÝ}ç©^¯ÙoVkŠŠŠP]]ƒ––‚pÌóÁ¶É`0°€LZZì{IôûÁhýç?ã‹/¾Â‚ó0cÆ LœXŒ©S§@­Vƒã8\ýµØ¾};>ýô3ú° „B9IP_òJJJÂ/ù‹˜ä¥k×þoÐ .’””\sÍqï½wãŠ+.Ã_ÿú,n¼ñç˜3g>víÚÍ7~|�1Áo_ð¥ãÇ‹ fyžÇ£þ ï½÷6¶nÝ„ßÿþ¾?ýôE¬“œžžÓñÞ¾}û}çΨ¯¯�$$$ÄäYµêVe§²²’M{€sÎ9›ýn4&àx×_-N=uÀ¼yób‚D¿ýíïðÑG+áóùJ›UWW³×ˆå½¥@Ú¢E§hôÈÑ4þ©ì÷GyO=õ4Ö¬ùjµê¨,Ö¬™,ÓÒÒ‚ë¯ÿ Þyç]ìÙSÆnÑjjjcþ^´è4öûyç;è:¢ƒYý«eÝyçøÅ/~Ž3ÎX<`TÒÑhóÜÜ6µG.—ÇTÒr»=hllðœ%KN‡Å"ŽdKMM)}.%ôíŸ\úpÓ…vìØówtRÛo¼¯¿þ*6lX‹•+ÿ3æ×½M#)ÃÝ›–.=7ª-—²ß@LŽFII n¼ñ'¸÷Þ»P\\Œ?þñO¸êªkPZº8fĘô¾E!„BN42†ÄÝõ×_‹‹/¾r¹|Àô »ÝßÿþÁaŸÏó<~÷»ßB._«ÕŠO>ùF£‘`�1�¼ÿþ‡øéOo€^¯Ïóx÷Ý·°víÿPX8'³ÇK£^{í –&''üoìÞ½ ÌgÛëóùXÂÐèá-·Ü �1Iz¥)JRçöý÷?Àµ×^ �xè¡P\\Œžž,]z.K.Z[[‡3Î8kLû×ãq³ßçÌ™…¥KÏR©Pª{¬l6;6løšådY¼x>ûlZ[ÛX…˜xŠn]tÑ…èêêFnnn»íWG}ùÉÉɸöÚkÐÖÖ†Ë.»d@¹c@̳ãv»¡Õj#¢?bÖ¬™ày9–/¿pÐu¼ñÆ›, ²lÙùÐé´Ø³g/æÌ™Å*o…B!œ~ú™ƒŽ¤:Ò6ýõW±iÓfäæfÇŒrY½zuL@@b±XðÙg«°gO¦M›ÆòŸHç�tvv@¨»ë®;aµ&ÅäЉ¶}û”•íe szè~”–·Z­Fié‚çéX^sGGË5µlÙù0›MX¹ò|ñÅ—#Ú¦+@ié|èt:ÌŸß ú÷¿?óˆ ¼¼q¸çž»bޱ]»v£¨¨0&`T^^N„B!'C¾ƒa@ ¦¶¶W^ùC´µµ ûÜææf<üð£ì[îÙ³gaÅŠñë_ßN@üvþ¹ç^��´µµá׿¾‹%5pá…Äb^}õ5V®ö«¯Ö²çJ¥‹.ºIIâˆ@ €{ï½Ukêë„~<`[kjj|cþøãO²Ñ7r¹W_}n¹åfˆq:¸óλ-[=«V}Šp8 @œVõÌ3OãÉ'C8B{{ÇQi¿+†ÍÖ7}¥  �óçÏCEEELIìxøøã•ì÷Ù³gáå—_À}÷݋ݻ÷•åoØð5ëhó<øž{5kvîÜ5àñ.—+&¿‡F£ÁUW]‰Ë/¿+W®ŠU$ùÿìÝy\OÙÿÀñÙ÷]Ö0b„QHÙ‰a"{²Ý˜Œ±Q²L²'!!ŠìR ­ •¥Èh0£bQhñûƒ>ú´~2M³üÞÏÇã>ú,çÞ{î¹çž{?ïî9÷Ì™³8::)Þ÷ìÙCéèïß¿gùò•Yž„TûüæÍ›<zô˜.]:)bâââs|Úйsç)W®ݺu¥R¥OcÊøû(žöa@ä`ÅwMšh2jÔÈ\ó2{öÅDjjjôêõµR &4ôšâÕŸ³ÍgΜU¼®P¡††ý”ž –3³9<~ü)O½{÷R Ä\»v•+W}vý:qâ$§OÊ×СÆXZ.WlÓÓd7p³B!„`Œù–ššÊ“'OdÁ‚Eôï?Pé)H¹qrÚËÈ‘£9sæ,qqñ¤¤¤ðêÕ+®_¿••5ÆÆC•ÆŠñô¼ÀÀÆ>|„G“œœÌË—/¹té2cÆŒÇÒrµÒò×­[ϸqßrá‚ññOINNæ×_ÅÍíƒUü÷?¯À‹»û±,é’’’9r4Ë—[rýú ^¼xIrr2>dÿþôë7 Ûùª bÚ´ܸÆ›7oøã?8uê ãÆMäÍ›¤Ùw111åÔ©3<þ‚¤¤$Μ9Ëøñ“x÷.¹P둽ýVÖ®µá矜œÌo¿ýÆŽ;Y´hi,ÿåË—Œ1š ¼HHH 11ñã#Ð'p÷î½lç9tÈ•)S¦qíÚ5“øí·ßpttbÉ’ÿ)¥KNþ4 ñŠ–L™2 _ž>}JJJ OŸ>åÌ™³ >Š}ûœÿ’}þæÍ[LMÇáí}Q1ï±c <4Ç ÆÝ»÷3f<·oß!99™ÇeË–m|ûídE€ÀÜ|.nnLj%%%…òåËç:Èòƒ1ôïoÄæÍ[¸wI¼yó†›7o²`Á"FŒ0QÜ©ó9Û¼oŸ3«VY}Ÿ·oß’˜˜¤¸Ã.·ºÞ¿ÿ@6o¶Wt3LHH ,,œ+,1Â$Ë@Ðùñþý{fÍš…Å|ƒxþü©©©üþûïøú^fÖ,sfÏž+' !„Bˆÿ˜"*|^$Ãûô×E3üMŸÔ>NÅ>N%€â@¥Ö­u2þ]!þëJ”(A­Zµˆ‰ùtU­Zµ¸|ù¢âý!#¸víZ¡çÍÖÖ†ûºâ 62Ïyüü|cälÞ¼[Û ²“…B!ÄN¥J ÖžÉÀ; åã”úqJË0½Ïð7½{CÆ×dz Ș1BQ J•*Åñãn4lØ€¢E‹âî~œàà«”*U’áÇ)Ò=zô˜°°0)0!„B!þ’`ŒB 7oÞpèÐa~üñ�ŒŒ`d4@)Mbb"ææs³?F!„Bñß'Á!„(`;w:ÁèÑ&´n­MÕªU?Ž­ò˜K—®°s§CžU !„B!þ»dÌ!„B!„B oÌyš’B!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`Œ(Tjjj„„qïÞÊ”)£Ò<zzí8{ö$7oÞ K—Îÿêí×ÒjFtt$êêê{^Æ‹·÷y©”ÿ µjÕbß¾=DD\gΜÙºì;·±iÓú¿ß´i=NN»ÿUå•WžëÖ­Ctt$Mšhþ¥ù(Q¢«V­äÚµ`Ø'9SûRºti¼¼Î1sæŒýv3šK—¼©Zµê¿2ÿÛ¶Ù³zµe¶ßµjõþþ—éܹÓß–¿ìŽY__oÆŒ]¨uiÒ¤o‰ŽŽÌvÊ._'kk+6oÞ$N.®_¿Š‘Ñ€B;–ò“Fñÿ›cD¡êرïß§ñøñ¯ôêÕS¥y6oÞÄa˜˜Œ!8øêŸÎÃ_4":: Ù!BɨQ#ñóóýÛÖ¿páT¨PSÓñìÛ·¿P×}åŠ/úü«öWæ<^aøð¡…žáÇbhØ3³9,X°H¤LÞ¾}˹sžÜ¸ö¯ß–[·nsþ¼'¯^½úÏí§'Ob9Þ“_~yX`Ë,èc²0ëÒóçÏéßß(Ëôo=¿!„øç)&E Ó€ýññ¹Ä«W¯8p�îîÇsM_¢D *W®Œ‡ÇI®_¿!(þÓÔÕkâë{™k×®úº<ü¯+¯JžÕÕÕ‰ŠŠÂ×÷’Tâl¤¥¥aeµö?±-W¯†põjÈr?ÅÆÆ²dÉ2©K¥¤¤pëÖm9€…BüeäÎQhJ•*E¯^=ñòòâÂ… tìØjÕªå˜~õjKnßÀÑq—R÷ž¡C9uʃ[·Âðññbúô©JóêéµãèÑÃܾNP3gΠhÑ¢ àܹÓ�xyãÈ‘CÙ®»L™ÒÌkޝ¯7·o‡ãááÆ×_º“ÇØx0¾¾Þ|óMo¼¼ÎqëVÎÎ{©[·ŽÒr† 1æÂ…sܾ޳ó^jÔ¨‘kY[[akkƒ¹¹ÁÁþ\ºäM§NÑ××ÃÃÛ7opèÐêׯ¯4_Ïžxx¸qëV¾¾Þ̘1555Å÷ÅŠcþ| ‚‚üˆˆ¸Ž¥årŠ/®´Œ"EŠ0yòD||¼¿Ž«ëAºuëše›MMM òcëÖÍŠ<[[[af6“à`Âï±víjJ–,™ãvÖ­[[[‚ƒý‰ˆ¸ÎîÝ»ÐÔÔT*kk+¦OŸJHHaa¡ØÙmRê JšìŒ= oïóDFÞÄÛû¼b¿®^mÉŠ˨Y³&Ñё̛÷=�åË—gÕª•\½@xøuöìq Y³/ó,—råÊai¹‚«W fÛ6{7þ"Û< ::m¦M›Btt¤â–êÆ³{÷.ÂïÈÚµ«©T©b–:³jÕJ""®3~üØÏ:>3ÞêžÞU {÷n¸ººpëVçΦS§ŽJÛ˜å¸‹ŽŽ¤L™2¨©©áêêÂÎÛßkjjrçN}úôβþš5kpïÞ:th¯ølñâ…DGGR½ú§vâÀ}¬\ù?¥<«««IµjÕXµj%ÑÑ‘Jõ¯}ûöœ<yœÛ·Ã9wîtžÝ0òj_2a¢£#™:u2:::DGG*nIÏ«ÞdÞ·AA~¬^mIÅŠßg× ÂÙy/?þøCžm]NT©Où=žUi_2oK^ùΫlr+_MMÍÇ“ŽR¦OŸŠ¿ÿeEÛØ£‡¢]õô<ËøñcyH? 2âüù3„†g[ï?l—)?ý´‘ððë\aâÄ Jë­\¹2›6­çÆBB™0a¶¶6¹v_ÐÕmËþýN„……ˆ•Õ*Ê—/Ÿ¯õV¯^ {ûŸ %8ØŸÑ£GåZï3wR¥.Ô©S›mÛì ¿Fxø5lmm¨X±B®Ç¤ªÇWN2Ö%UÏÅýûrþüî܉ààAgÚ·×/ð.ù×r:¿¤o‹­­ 7oÞ 0ð s•Îßy/3kß^Ÿˆˆë dôYm\z=èÔ©#®®.ܹ§çY¥å©’æsÚ'Uò•Ûy @GGGñý… çhÛ¶Mžû.¯:©Ê±¤JU¯'r«Ï%K–déÒEùqçN‡ȵ>!$#ÄÇ ß©áí탟_�¯^½¦_¿¾9¦·´\M×®�Ìk¾~Gâââ4ȈåË—áì|€þýX·n=ß}7CÃ~Š _‡øûУGofΜ͸qc0ÀÓ§Ï2j”)�ÇâÛo'e»î¥Kcd4€åËWп¿ÞÞ>ØÙm¤víÚŠ45jT§_¿¾Lœ8…)_¾<––+ß÷ëׇիWrðà!ŒŒŒ9|øË–-ɳœÚ·×çáÃGôìÙ'§ýØÚZcnn†¹¹½x÷î––Ëé;w½gΜgР!XY­aìØÑ,X0_‘fÉ’E b̲eË16Ƴg¿3iÒ·Jë57ŸÅ”)“X¹rFFƒ9Þ“;¶*ýp­Q£::ubÊ”é,]ú)ß|óáÇõ€ƒ™6í;z÷îŷߎÏvûÔÔÔØ³g7êê5™2e:C‡Ž %%{ûŸ2˜zP·n]úõÀàÁC©\¹;”.äTI“Q÷îÝX¼x!66ëéÚµÛ¶íä§Ÿ6P¯^],-W³i“©©©èëwÄÎΞ"EаcÇV¾úª%³f™3b„ ñññ¸¸ìÏR2–Kú|Í›k1eÊtFŽ4!))‰C‡\² >}}ýŽ<~ü+‡¹¢¯ß‘Ó§ÏR½z5ÜOBB#GŽfúô™4nÜGG¥‹õÞ½¿æùóç 27·cvÌš›ÏÂÒr ½à§Ÿ6Pºti•æMMMeîÜÐ××£_¿>)R++KΞ=ÇéÓg³¤ãæÍ[téò©¾uêÔ‘äädÅÅvÙ²eiÝZ‡ ¼•æ‹‹C_ÿC[ÛèëwäíÛ·ŠïgÍúŽbèÐÄÄÄ`g·1Ç1«òj_²[ïÑ£nüòË/èëwÄÒrµJõ&ó¾53›Ã—_6eÇŽm*ïŸÜÚºì¨ZŸòs<«Ú¾ä'ßy•M^å{÷î]³Œ1p`ÜÜÜIMM¥S§ŽlÙb‡»ûq ÄÚµ6˜™ÍdöìYJóLšô-+W®bР!9nÏŒS9sæ,=z|Í–-ÛøñÇhÝúC ¨hÑ¢ìܹ &OžÆøñÑ××S :f¦¡¡Á¾}{ˆŠŠbذ‘LŸ>==]~øá{•׫¦¦†££µk×fÒ¤©|ûíd:wîL›6­óÕäU6oþ‰%J`ddÌ ACiÐ@ƒùóÈñ˜ÌÏñ¥ª¼ÎÅݺueݺµ¸ºaàÀÁ<x˜•+—èõM^çµìÎ/éÌÌfBçÎÝ™9s6FFWUÏ—éZ·Öaûö-¬\¹77÷?ÕÆ-[¶„õë7Ñ¡C¶lÙ†••%={öP9M~Û'Uó•Ûy©^½º89í&&æ!C†Œ`Ù²åüøã¹ž·òZ¯*Ç’*iòs=‘[}677ÃÀÀ€©Sg``Ћ»wï±e‹R.„ø÷nJ¢Ð П‹}HLLàÌ™³ ØŸ={œ²MÿêÕ+’““ˆJ|üS�ÜÜÜñóó#66€èèû˜˜Œ¤mÛ6œ8q’5ªSªT)NŸ>ï¿þʯ¿þJ·n=HHH�àéÓ§Še>þ"Ûu/\¸„ *ðûï¿`ggÏÔ©“iÕª%¿þú«â"{þü¼~ý€­[·akkC‘"Exÿþ=&ŒÇÝýÛ·ï 22Šš5k`a17×rzüø1®®G�صË ‹9¸¹¹sïÞ=�\\)c¦OŸÊ‰§Ø¼Ù^±ž÷ïß³aƒ-?ýdGJJ*Æ aáÂ%œ:uF‘¦eË–4hðá›2eJ3aÂxfÍ2ÇËË[Q®_}Õ’Ñ£M¸té²b›¿ÿ~ž¢,Óݽ{?\þöÛo;æAûöúØÛoÍöGú ACHII&11 €Ý»÷°w¯#•+Wæ?þ�àÝ»w,^¼”ÔÔT�¾ÿþ._¾ˆž^;üýTN“Q½zõxñâ^^Þ$%%áâr“'O)¶'>þ)OŸ~ªkúúzèê¶ÅÀ 111�XXÌçÔ)ÆŽ5eõê5Ù–‹ž^;¾úª%;wWÔ¡¹sçáççËÀýqppTÊ×Û·o‰K||üÇéÃúML¦ðúu"ææsÛ8eÊ4®\ñ¥k×.Š}uï^4k×Úø1»nÝE—©U«¬02@óæZ*wÓˆ‰‰aÍk,˜O•*U¨]»vŽP�OÏ |óMo¬¬¬©Y³&uêÔfÇŽ]têÔ 7·ctìØäädüüü•æKKKSì»§O?•_ºùópþ¼'�‹-ÁÏï-[¶ 00(Kòj_²[oÆIÕzcb2*˾6í;´µ[¡¦¦¦ø,¯¡¹µu™e·ÎìêS~ŽçråÊåÙ¾ä7ßy•®nÛ<Ë÷ðá#Ì™cÆŠ–¤¤¤Ð¼ys7nÌ´iß)ÚÍÝ»÷°k×nÅ~VW¯ÉìÙflØði0T[||rçãèQwNž<Àž=NŒ5‚öíÛpx7�� �IDATz ]ݶhk·¢[·ž<|øðãï9\¾ì“ëqÓ¥‹±±±ŠÏ<<NЫ××*¯·cÇ|ùeSºv5àÑ£Ç�Ìžûz³“W]¨W¯'Nœ$:ú>�£GáíÛw9“ù9¾Tþ¯bçâÉ“'rüø ¶mÛ¡¨ŸÕ«WSÜ’“jÕª) Ø °i“¢<ò{^Ë|~IÄþý� ú®\Ž­íz“T:_´hч¬[·—ƒ9n—ªûÀÉiW®øpäÈQtuÛ2qâ<=/¨”&¿í“ªùÊí¼4räž={ЅŤ¥¥)®%]]?¿<T9–TI£§×Nåë‰ÜêsýúõˆŠŠ"4ôÚÇ`ø2J–,¡Ò9C!ÁñÿTÅŠèÚµ sçZ(]\þá?iÄäkyêêê > MMM4ÐàË/›rÿþÏ�DEÝåìÙs¸¸ìçÊ?ƒ8sæ\Ž�Ùyÿþ=::Ú´k§K£F ÑÔlŒšššÒíÙ Š“å‡ Ï3Š+F‰%xûö-Mš4áðaW¥åæ¹îŒàiii¤¦¦òâÅ ¥î%J”Pº�;vÌCiÁÁ!+VŒ¦M›’˜˜HñâÅ É”—�Å¥FQºtivìØªTNåË—WÒ·9»rüí·ß”Þ?{öŒæÍµr-ß>}ú ­ýŠÛt3–ï;‘J¿ýöññOiÚ´‰"ТJšŒNž<…©© /zâë{ ÿ@ÎËù‰R-Z4'..^qᔞ÷«W¯Ò²e‹Ë¥eË”*U /¯sJË+_¾<õêÕS¹6o®Ehh¨Ò6ÆÇ?åÁƒZ´h®øñüèÑ£¿ä¸Í¸_Ÿ={ö1pW&_ËØ·Ï™qãÆ²lÙ&Nœ’c�àÂ/fÏžEÕéܹ¡¡×¸|ù 7~x T—.¸rÅOé®UƒBŸŽ¯ÜeË–ý¬öEªÔ›ìöí“'O8sæ‰ÊëÉo[§j}ÊÏñܰaƒ<Û—üæ;¯²Q¥|=<N°pá|ºvíÂ… ^ $$T±õôÚ¡§×NipÙôn@*|ê¥Ê±•]y•-[F‘×øø§Š@ @RRׯ_Ïu™Å‹c„qhi5£~ýú4o®E\\œÊëmÚ´ ±±qІéë ûì6 »º°y³=óçÏ£G‚‚‚ñô¼@xxÄgŸ¿?G^çâ-šãá¡èÉîüÙóçÏ15§ôY||üŸ:¯e'"â¦Òû7Â(Uªܾ}G¥å6kö%ÇŽ%66GG§?u õ)_YòÕ»÷×*§ùœk1Uò•Ûy©IM®]»®Ä�\»v7oÞ|vy¨r,©’&?×¹ÕgGG'¶oßÂÙ³§¸rå —.]‘ñÊ„`Œ¹ëÓçŠ/ΦMX¿~€¢+ÉÀ²ýOSN&Mšˆ™Ùw<x///~þù3fLS:¹MŸ>“–-[Ð¥Kgzô0ÀÂb.3gšáéé¥Ò:¶m³§iÓ&<x77w"#£r_&wE”ß)R(åýþý{Åßôuf^wvy8p0ÏŸ?Wú,99¥@óV¥JÜÜ\‰ãäÉÓx{û’’ÂîÝ;3ý)ží”ü¦ÉüC¢OC:thO‡úL™2 ‹¹ :\é"J•ý•^Æ9‰Ê!ò|þêÕkÕkÏŸXÿß!»ü–,YRøÈ8æEvnݺͯ¿þJûöútèО˗¯JéÒ¥hÔ¨!;vÈö”WûRPûísÛ‚Œóå·­û+êS~ÚUóWÙ¨² œ={žûãí}CÃ~ØÚ®W jÛÚnàÌ™³Ùþ¸/W®lÔ§¢EÕHMÍÚ†¦¤äü_ìvítqpØ——7~~=ꎎŽC† Ê×¹'ûr*Øsƒƒ#gÏžÃÀ ;íÚµãС‰888bm½î/;¾ò¿ŠfÙ¹•ÿ§4ªà«êy-Û ñbÅr|¯êr544pw?ÎÀýéÝ»gÏžûÓm\æókvçÖÜÒä·}*¨¶7»¶(·6#ïõªr,妠Úß  `ºt1 [·®èéé²víj¢£ï3zôXRRRBü»È˜1¢P Пk׮ѧ!††14Hß¾ý¹pÁ‹ûçkYÆÆFìÙ³—+,qs;Æõë7”Æ-[¶,ÚÚ­`óæ-˜˜ŒÁËË›Q£FªtÒ«\¹2Ý»wcáÂÅØÙÙsêÔâãŸæûŽ€ÈÈH:tÐWú¬}{ý/Ûˆˆ›Y¨ÓÕmKJJ QQQDGß'99™öíÛ瘗û÷æÍ›7Ô©S‡G+¦:uêP¬XÁöCÖÓÓ¥V-uLMdz{÷¼¼¼³ ª|ùå—”*UJñ¾Q£†TªT‰Û·ïä+MF5kÖ aÆøú^ÂÊÊš¾}ûS´húöí“mÝ FêYîfiÓ¦ 7oÞÊqoÞ¼EåÊ•xûö­Ry~ùeS¥ÿØ©²outt”ú‚W«V 4þö§|$&¾¦|ùòJ寡‘õNˆyóæòäɦNÁÿþ·„ZµjåºÜ ¼i×N==]|||IIIáÊ? ûQ·n]¼½}r¹ ýóÛ•Wû¢ UêMvûV]]#†)î|KL|MõêÕ•~TÖ«WWå¶®0ê“*íKfyå;¯²Qõ¸<|Ø•îݻӱcÊ•+ÇÉ“§ß………S§Nm¥ã³té2T®\¹@o÷¿wïêêêÔ¬YSél«V_å8Oß¾}¸s'’Y³Ìqq9ˆŸŸ¿ÒàŪîP£Fu¥AÃË”)ëzóKMM âââÙ»w?3gš±zõÆ“ã1YÇWþ÷A4ÚÚÚYΑ…}^ËéÚCGG;K=NJJâÁƒ•Ï—çÏ{2w®;vìÂÆf 7þÓmœ¶v«LùjåÜš[šü¶OQ7î܉¤uëÖJw éèhçzwR^ëUåXR%Íç^OdÖ¸qcJ—.Åñã,\¸“1èê¶Íõnd!„cÄÿc5kÖDW·-Û·ï"*ê®Ò´yó444òu}ŸîÝ»¡££C“&šXZ.§Q£†Šï[´hÎáÃ.˜ššÐ¨QCzô0 M›6DFFîXHKK£cÇJƒ¦¥{ùò%OŸ>ÅØx0M›6AGG‡-[ìòýŸã]»èׯ/Ó§O¥IM 2ÂÈh`—ï–-[0ÀiӦдi¾ù¦7Ë–-aÿ~gž?Áëׯqq9Äüùôíû M›6aΜÙJ ‰‰‰888²bÅ2 ûѤ‰&#GŽ`÷î´k×®@ó{ÿþϨ©©1z´ _|ш= ”N—’’̆ ëhÙ²úúzlܸž°°p‚ƒ¯æ+MF#F gß>GºwïF£F 11IåÊ•‰Šº |µJ•*hk·¢jÕªÊæÍÑ××CKK +«UÔ©S'§½9nc``ׯß`ûö­tèÐ-­f,Z´�;»MT®\Yå²rv>@¹råX·n-Í›7§];]¶nµãÎ;\¼è“ï²/_¾ZZÍ”¦Ï}šHhè5ÒÒÒXµj%ZZZöcòäIY~›˜ŒbÉ’eœ?ïI@@ ÖÖV¹þ‡ðÂ/úôù0àoú1{ñ¢ãÇåÆ0ŘOÙ‰‹‹¥uk¾ø¢Ñg×ϼÚU¨Ro2îÛ-š£§×;» 6”wïÞĨQ#éÝ»ÚÚ­°±Y«4e^mÝ_]Ÿ�•Ú—ÌòÊw^e£êqȳgÏX´h§NRŒW`o¿…Q£F2uêdš6m‚AwvîÜ–ç‡òëÒ¥Ëܽ{;»05ÇÆfM®Aîû÷٘ž={ШQCÆŒ1eÈã|­÷ÊnݺͦMcX­_oË›7I¶meÊ”ÁÑq'Ë–-ASS“Ö­uèßßP©þe>&ó:¾Ò»°hk·RtKHH iÓ¦Ô¬ùyA›]»v3dÈ`ƃ¦¦&ýúõÅÔÔäOoÆ|©r^Ë|~I§¥Õ ss3š6m‚¡a?,,æâììBRR’ÊçËô�¢-¡¡×غusŽw"ªÚÆ >#£4i¢ÉôéSéÛ·bŒ%UÒä·}*ˆ¶÷À*W®„ÍZ´´´èÔ©# Ì'))é³Û|UŽ%UÒ|îõDfË—/ÅÎnÚÚ­hÚ´ cÇŽ!11‰‡ÿšîÊB ƈ¹þýû‘”””í ˆ7n„ñË/¿dyêEn,XăØ·ÏGÇ]<y‹·÷E¥ÂsæX0bÄpNœ8ÆŠÿãØ±ãØÚnP\@­X±Š9sÌØ¿O¶5cÆŒ§Aƒ¸»ÁÊÊGG§,ÝwòrúôYæÍû‘!Csü¸C‡³hÑ’/__ßËLŸ>“¾}¿ÁÍÍ•… ç³oß~,-­iV®\…³ó–-[ÂÑ£‡©Zµj–î¶¶ؾ}'sçÎÆÃÃ)S&ò¿ÿ­Èñ‰ Ÿ+22ŠY³fcjj±cG™8qB¶ƒÏ_Åß?GÇ]lß¾…˜˜_˜8qŠÒ%ª¤ÉÈÞ~+..‡Xºt§Ny`j:šE‹–(~ˆ^¼èÉ'Ù»wß?‡´´4¾ýv2·°³ÛÈÁƒÎÔ®]‹#L²íÖ”îÓ|¬_oÃÑ£‡iÝZ‡Q£L•ú‹ç%..žáÃGQ±b%\\ö±e‹?ÿü€1cÆÖï»t鄇‡»ÒôÝwŸ×E 66só¹´n­«« C‡³jÕ§:W®\9Ö®]Í®]» ûðˆú%K–¡¥¥Å„ ãr\®¿�¥K—ÂÇçSx_*T¨ Ó$'––V´mÛ–“'gy´mAµ/ªP¥ÞdÜ·ìcóæMܻ̈́ ËY·n=þþ¬[·{{;®^ áÚµë*·uu}ÊOû’9X™[¾ó*UË÷ïßãêz„Æ¿àðá#YÚÍ©Sgлw/ÜÜ\Y³f§OŸQzJ\AHIIaìØ <{ö ‡89}8²<:ݾ}Î89ícÍšÕ¸ºB[»Û¶mÏ×zSSS™0a"<`ÇŽ­ìÞ½“Ë—/T`Û–€‰É6lÀáÃppØAllÓ§ÏÌñ˜Ìëøzñâ%ŽŽN,]ºX0Ù¶mß|Ókë5Ÿ•O,^¼”±cMñðpcìXS,-WÿéíϘ/UÎk™Ï/é¶oßIÍš59zô0‹/ÀÅå kÖXçë|™q¿›™™S¬X1lm­³ |«ÚÆ-[¶‚#†sü¸ÆÆƒ™7o>.x©œ&¿íSA´½=f̘ñÔª¥Ž«« Ë—/ÅÊj-/_¾üì6_•cI•4Ÿ{=‘Ù¬Yæ<|øˆ­[íqssES³1ãÆMP<,à‡,ðññBñïPD…Ï‹dxŸþºh†¿é“ÚÇ©ØÇ©P¨Ôºµn@nƒ6 !DFÖÖV”)S†3fý©4Bñw+^¼¸âÉ€éöïwâÖ­ÛùßíÚéràÀ>ZµjëW¯þ¶|ùúz³sç.œœöýcʪnÝ:øøxѧ¡â®ÑÏI#þÛ¶m!>>ŽE‹–Jañ'TªT‘ÐÐ`}à9 ¼R>N©§´ Óû Ó»Sd|M¦×€Ü#„Bñ—Nœpgùòe4i¢I£F ™:u2ººm•,þ:ƒ ÄÓó,_Ý“zõꢯ¯ÇÂ…?ø·b„ø+|ñE#|}/KAñ/!OSB!„ø $''3gμÝb(W®÷îÝcöì9¹vUÇÃã$µkׯÂb.uëÖáÕ«W\¼èÃêÕk¥pÄŠššµk×RéÑíBˆé¦$„B!„BtSB!„B!„øO’`ŒB!„B!D!’`ŒB!„B!D!’`ŒøÏ)]º4^^ç˜9sF-ÓØx0!!ÿˆå”(Q‚U«VríZ0üýÜ4é[¢£#³àÃ#0££#iÒDó³×QË€ÃÞ¼y“$B!„Bˆ¿•<MIüëmÚ´ž””TæÌù€·oßrîœ'7n„ý'·wøð¡öå»ïÌxøðá?"OÏŸ?ÇÔtÜ_¶O…B!„â¿D‚1â?'-- +«ÿî#+ÕÕÕ‰ŠŠÂ×÷Ò?&O)))ܺu[*ŸB!„B¨@º)‰Báëë͘1£±µµáæÍ^ÁÂb.jjjŠ4uëÖÁÖÖ†à`""®³{÷.45?uK±¶¶ÂÖÖ†U«VqñãÇâí}ž~ýú2p`¢£#éÒ¥³ÒúÒ5nܘݻw~  ?V¯¶¤bÅ Šõf×&::ƒî9nÓСƜ:åÁ­[aøøx1}úT¥m‰ŽŽdÐ #Ο?Chhp–ù555‰ŽŽDGGGéó3¦áïY©làC&::’©S'£££Ctt$«W[*¶wÆŒi8;ï%*êZZÍ�èÙÓ�7nÝ û˜fºÒrÓËÔÜÜŒà`.]ò¦S§ŽèëëáááÆÍ›78tè�õë×/Ðú «Û–ýû %$$+«U”/_ Ç} о}{Nž<ÎíÛáœ;wšÎ;)¾Ë® ˜ž^;¢£#)S¦ŒÒçãÇ%$$°°Pìì6QµjU9H…B!„Œÿ=ff3 ¡sçîÌœ9#£üøã�¨©©±gÏnÔÕk2eÊt†AJJ2öö?)-£wï¯yþü9C† ÇÍíƒ#00??ôõ;âïe½Õ«WãàÁý$$$0rähÌÌæðå—MÙ±cÛgoË AF,_¾ gçôïoĺuëùî»éöSJ7iÒ·¬\¹ŠAƒ†dYÆÝ»w gРJŸ8�77wRSS•>‹‹C_¿#GºñË/¿ ¯ßKËÕJw÷côécÈýû?Ó¹s'ìíí8sæ<ƒ ÁÊj cÇŽfÁ‚ùJËmß^Ÿ‡ѳgoœœöckk¹¹ææôâÝ»wXZ./°z ¡¡Á¾}{ˆŠŠbذ‘LŸ>==]~øáC—¤Üöé¬Yß±qãO :‚˜˜ìì6f ´äEO¯íÚé2nÜ·Lž<úõëâà°ƒ¢E¥9B!„Bé¦$ M``û÷� (èwlllY¹r9¶¶ëILLbР!¤¤$“˜˜ÀîÝ{ػבʕ+óÇ�pï^4k×Ú(-÷éÓ§¤¤¤ÿ4Ûõš˜ŒâõëDÌÍç*Ó¦}‡¶v«,wŸ¨ÊÍÍ???bcã�ˆŽ¾‰ÉHÚ¶mÉ'élllñññÍq9‡aîÜÙ,_¾’””¾úª%_|ш)S¦eI›––F|üS¥)£#GÜ8tÈUñ~úô©œ8qŠÍ›íˆŒŒâýû÷lØ`ËO?Ùñüù �?~Œ«ë�vírÀÂbnnîÜ»w�—CycªU«¦°7ݦMvlÜøS–´111téb@ll¬â3ôêõ5�üñGŽûtþüœ?ï À¢EKðó»DË–- Ryß)R„Ù³çòöí[�fÎ4ÇËëzzí² æ !„B!DA“`Œ(47•Þ߸F©R¥ÐÐÐàöí;¼ÿž>}ú ­ý4kö%�%K–TÌóèÑ£|¯·ys-BCC•î4yòä gÎ<ùSÛ£®®ÎðáÃÐÔÔ¤A ¾ü²)÷ïÿ¬”&¯üzxœ`áÂùtëÖOÏ 4«WCøùçùÎÏãǕ޷hÑœcÇ<”> ¡X±b4mÚTÀÈIKK#55•/^(>{ûö-%J”ÈuÝÙ àŸcúâÅ‹1aÂ8´´šQ¿~}š7×"...ÏmŒ‰‰Q¼N„•-[6_åtëÖmE &}™Ïž=£iÓ&ŒB!„B ƈ«lÅŠåø¾J•*¸¹¹ÇÉ“§ñöö!%%…Ý»wþéõ)R¤Àç™4i"ffßqðàa¼¼¼øùç̘1-ßëIHHàìÙó ÄÛû"††ýX³Ææ/Ûïß¿Wú[Pò3€o»vº88ìÀËË?¿�ŽuGGG‡!Cøöf·UýL!„B!þ²ßÇR¢°èèh+½oÓ¦ III<xC·n]¨UKo¾éGRÒ‡nJ=zä+À“ˆˆ› d„šššâîuuuºuëÂÑ£î¼~@5ˆŠº ç€µÆÆFìÙ³këuŠÏjÔ¨ÁÓ§Ïò].‡»²}ûVºtéL©R¥8uêT”wDÄMÚ¶mƒ‹ËAÅgººmIII!**êo«}ûöáÎHfÍ2W|Ö­[×|íÓì$&¾¦|ùò”*UŠ7oÞ� ¡‘u?6kÖŒ’%K*îŽiذUªTáöí;r !„B! …ŒX) –V3ÌÍÍhÚ´ ††ý°°˜‹³³ IIIÜ¿ÿ3jjjŒmÂ_4¢Gƒ,Íæ$66ަM›Ð¸ñÙæêì|€råʱnÝZZ´hŽž^;ìì62lØPÞ½{ÇüATÔ]~øá{Ú¶mC‡íY¾|©Ò2(W®-Z4§xñâDGß§{÷nèèèФ‰&––ËiÔ¨ažyͼ€€€@ž={ÆÂ…?râÄ)Ř9Ö–-[0ÀiӦдi¾ù¦7Ë–-aÿ~gÅx1…!!!�míVT¨Pû÷٘ž={ШQCÆŒ1eÈã|íÓ섆^#--U«V¢¥¥…¡a?&Ož”%ÝÛ·oظі–-[ ¯¯Ç¦M '8ø*�ýûröì©‚”B!„B¤“`Œ(4Û·ï¤fÍš=z˜Å‹àâr5k¬ƒËΚ5SSŽ;Êĉ² Ô›“]»xõêîôîýu–ïãââ>|+VâÀ}lÞ¼‰{÷¢™0a¢"™™9ïÞ%³w¯#‹-ÀÎÎ^)(réÒeBBBqu=ˆ¶v+,XăØ·ÏGÇ]<y‹·÷Å<óšy9ðá.W×#4l؀Ç] ¬¼}}/3}úLúöý77W.œÏ¾}û±´´*ÔýþâÅKXºt1¦¦&ìÛ猓Ó>Ö¬Y«ë!´µ[±mÛö|íÓìÄÆÆan>—Ö­µquuaèPcV­Êº­W®øáã.¶oßBLÌ/Lœ8…´´4�Ê•+GõêÕ•Æ*B!„Bˆ‚TD…Ï‹dxŸþºh†¿é“ÚÇ©ØÇ©P¨Ôºµn@aþ'^üóøúz³sç.œœöIadcÆŒi ä믿‘ÂB!„Bˆ¿I¥J ÖžÉÀ; åã”úqJË0½Ïð7}¼…Œ¯Éô1c„ø[Õ¬Y“¦M›0v¬)¶¶¤@„B!„âÿ Æñ7š9s:††ýpw?ΡC®R B!„Bñÿ€tSB!„B!„ ðº)É�¾B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1B!„B!„…H‚1â?AKK‹­[7sõj�aa¡<èLÏž=þ_—IݺuˆŽŽ¤IÍÓlÚ´'§ÝºÌ¼äwkk+6oÞ”ãûŠñãÇâí}^åíø§ø§æ+³V­¾Âßÿ2;w’FT!„B* ƈ½Î;áêêBñâÅYºôÌ™ó=wïÞeË;¦L™$ôѨQ#ñóóUúìÊ?.^ô)Ô|ô:³Û.!TñäI,çÏ{òË/¥0„B!D¡*&E þÍJ—.ÍÚµV¸»gÁ‚EŠÏ==½ˆˆ¸ÉòåËðö¾HTÔ])¬l<xøÿÅ:…ÈNll,K–,“‚B!„…NîŒÿjÝ»w¥jÕ*¬]kå;—CüüóÏÀØx0!!JiôôÚI™2eŸõèa€‡‡7oÞÀÓó,ãÇ¥hчJNÝt¢£#10è®x߸ñìÞ½‹ððkøùù²téb*V¬ãvX[[akkƒ¹¹ÁÁþ\ºäM§NÑ××SäåСÔ¯__1¯¯7cÆŒVZ޳ó^~üñ‡,Ë_½Ú’+–Q³fM¢£#™7ï{ÅzÓ»“¤o[§NquuáÎ<=Ï2hQ®ûàs¶5ó:»w« ·n…qîÜi:uê¨4ÏèÑ£ðö>OdäM¼½Ïóõ×=sÝ®ºuë`kkCp°?×Ù½{ššªw­*Y²$K—."(È;w"8tè@®ó—)Sš¹sÍñõõæöíp<<ÜyL¯{¾¾Þ|óMo¼¼ÎqëVÎÎ{©[·Ž"M±bŘ?ß‚  ?""®ci¹œâÅ‹çëxhß^ŸˆˆëŠ}V¤H&Ožˆáá×qu=H·n]óµÿÒë™­­ 7oÞ 0ð sQSSË3?ãÇ%$$°°Pìì6QµjU¥åΘ1 gç½DEÝBK«ÙÇü4Vä'$$µkWS©RE� èÏíÛá”.]Z±œ3gNpáÂ9ÅûR¥JqëV††ý�¨S§6Û¶Ù~ððkØÚÚ(¶/óñlmm…µµff3 ö'<ük×®¦dÉ’Šå«©©1gŽW¸yók×®ÆÔÔ$×îdB!„z-.�� �IDATBH0Füã•,Y’#†3iÒDjÖ¬‘kÚ-Zpûöž?‘í÷þþ´lÙBåuwêÔ‘-[ìpw?΀ƒX»Ö3³™Ìž=KåeT«V —ý<{ö”!C†3sæltuÛ²cǶ<H?|øˆž={ãä´[[kÌÍÍ07·ÀÀ ïÞ½ÃÒrùg•©¥åj6m²#55}ýŽØÙÙç˜vÙ²%¬_¿‰º°eË6¬¬,sçs·53sóYXZ®ÁÀ ááüôÓÅîîÝ»±xñBllÖÓµk¶mÛÉO?m ^½ºÙn—šš{öìF]½&S¦LgèФ¤$coÿS>òc†S§ÎÀÀ wïÞcË»K—.ÆÈh�Ë—¯ #¼½}°³ÛHíÚµijÔ¨N¿~}™8q S¾|y,-W(¾_²dC†³lÙrŒ‡ñìÙïLšô­ÊynÝZ‡íÛ·°råjÜÜÜå:eÊ$V®\…‘Ñ`Ο÷dÇŽ­Š1RTÝff3 ¡sçîÌœ9#£Ùý2:ÛµÓeܸo™<yõë×ÅÁa‡"°™¬qw?FŸ>†Ü¿ÿ3Õ«WãàÁý$$$0räh¦OŸIãÆqtt@MM‹}PSSCO¯�U«V¥Q£FÔ«W—Zµj)Ö[¬X1|}/°yóO”(Q##c JƒÌŸŸsÞ¿ù¦÷ÇÀÏ`¦MûŽÞ½{ñí·ãß[XÌÁÄdË—¯ÀØx±±qLŸ>Mn!„B‘/ÒMIüãlݺ™.]:`jj‚‘‘1¿ÿþ{¶i+V¬Èü‘ã²^¼xAÅŠU^÷ôéSÙ½{»v}`6:ú>êê5™=ÛŒ TÔÄd$¿üòyó~$-- €9s¾çôéhiiqëÖ­lç{üø1®®G�صË ‹9¸¹¹sïÞ=àÃ>ŸŒyõêññOyúô)ññOsMëä´+Wü�8rä(ººm™8qžž l[3[·n×®]`Õ*+ŒŒм¹W¯†P¯^=^¼x——7III¸¸ääÉS$$$�d»]ƒ !%%™ÄÄ$�vïÞÃÞ½ŽT®\9×ú’®~ýzDEEzíc d%K– 555Ûô .¡B… ŠzjggÏÔ©“iÕª%¿þú+�E‹eþü¼~ýúc=߆­­ EŠ¡lÙ² 6„… —pêÔ�"#£hÙ²% ÔÏ3¿-Z4ÇÁaëÖ­ÇÅå ðán Æ3k–9^^ÞŠúüÕW-=Ú„K—.«¼ÿƒØ¿ÿ��AA¿cccËʕ˱µ]¯(ãÌŠ)ÂìÙsyûö-�3gšãåu=½vøû|¬_n:䪘gêÔɼ~ˆ¹ù\EYO™2+W|éÚµ ^^Þ_¥K—N\¼èCçÎ BMMÎ;rè+]»v&((˜—/_P¯^=Nœ8Itô}�FÃÛ·ïr,Ë»wï±qã‡ÀÝo¿ýƱc´o¯½ýVJ—.ÍèÑ&üï+ûéÎHZ´hNƒÒx !„B ƈ§zõê*1ð¡‹AwE"»`K‹Ís\^ÅŠyñâ…Êë×Ók‡ž^;†ªø¬|ùò�T¨PA¥e´hÑœV­¾"44Hé‡iúüœ±±±Š×iii¤¦¦*åýíÛ·”(Qâ/ßJïoÜ£wï¯ t[3ûí·ß¯Ÿ={ö1˜ð¡ëØÉ“§055áâEO|}/áïȹs¹w yÿþ=}úôA[û+444hÖìK�¥î&¹qttbûö-œ={Š+W®péÒÅ9­OGG›vítiÔ¨!ššQSSSZ_BB‚"ðôé3Š+F‰%hذÅ‹'$$Di¹ycš5û’cÇŽ‹££“âóFQºtivìØª\¥×çô�Ÿªû/"âf–:QªT)444¸}ûN¶ùºuë¶"ógÏhÚ´‰"óøñc¥yš7×"44T)èÿ”bhÑ¢9^^Þxz^`Ô¨‘À‡;ÙQSS£S§Á˜Î;ãì|@1ÿæÍöÌŸ?=  ÆÓóáá*ÕÅôúؼ¹–R™†„„*¥ñó `ŒB!„`Œø÷zöìw•Æpyøða®ƒ‰'P©REž?A¥J11Åñã<|øˆöíõ¸x1ç'í¤ÿðÌð°µÝÀ™3g³¤MHH \¹²y.àüyOV®\•åóœîð)(Ùå%¿2SR¼xîÍÄ_½­Ïž=£OC:thO‡úL™2 ‹¹ :œGgI_¥JÜÜ\‰ãäÉÓx{û’’ÂîÝ;U^gPP0]ºЭ[WôôtY»v5ÑÑ÷=z,)))YÒoÛfOÓ¦M8xð0nnîDFFqäÈ¡|ï·ÌûO•ý©¡¡»ûqìOïÞ½8{öœÒ÷æùóçJŸ%'§äkÿ+¦\2¿Wµ.æµ=¹}ÿþý{�<=/°hÑjÖ¬I‡íÙ»w?ðá©Zêêê4jÔOO/Å|Žœ={ƒî´k׎C‡&âààˆµõº|×E5µ]¬RR”ïJMM‘Æ[!„B䋌#þQ™6í;~ûí7^½z…••5A9¦÷ööá÷ßÿ`Þ< �ž?AíÚµÙ´i¦¦&4lØ£GÝ>.û5åË—§T©R~È*ßuN:µyôè±b*]º •+W&55•ׯ¨QãÓX6Õ…wÔ­[—ÇU,ãÕ«W4jÔˆwï’ °¬^S½zõOsÑ¢Ô«W7ϳyÑÖn¥ô¾M›Ö¹ÞýðWokÍš5hذ!¾¾—°²²¦oßþ-Z„¾}ûd»]zzºÔª¥Ž©éxvïÞƒ——w¾Âmܸ1¥K—âøq.\‚‰ÉtuÛ*îȨråÊtïÞ… cggÏ©SgˆªPÌKtô}’““iß¾½ÒçíÛëç9ïùóžÌkÁŽ»°±YCãÆ¸ÿgÞ¼yC:u”ês:u(VL-_ûOGG;ShCRRÄ䘯fÍš)ÝÔ°aªT©’c]‚wàèèè(ÍS­Z54ÐàÖ­Û�<|øˆ»wï2t¨1%J” <<‚ððÔÔŠ2lØîÝ»§઩©¡££C\\<{÷îgæL3V¯^øqc>«.>xCJJ ::ÊLj®n[i¼…B!D¾È1âçòå+têÔM¥´IIIÌ›÷Û¶m¡Fê=ꆟŸ?#F 㫯Zbm½ŽÈÈ(�BC¯‘––ƪU+Ù¹ÓF2yò$¥åÙÛoaÇŽmÄÆÆáí}‘:uê°tébøá‡üñÇDEÝ凾çÍ›7”(Q‚)S”—±¿3£GÂÚz NN{)V¬ææf¨««Ó§a•S@@£F$"â&±±±Œcªô”™ô®)ÚÚ­xò$–¸¸8ªT©‚¶v+>|¤è”ÙðáC‰åÖ­ÛôìÙƒ¾}û0uêŒl—YÛ:bÄpFÁüù ‰‰‰¡S§ŽT®\Yñ¸òÌÛuÿþϨ©©1z´ ^^^4hЀ æ+-3!!/¿ü’ 4xð &ËûåË—R¼xq,-W“””Ę1¦$&&ñðá£,ù{ùò%OŸ>ÅØx0±±q”)S–ï¿7W9øðúõk\\1¾ÏŸÿAtô}úõëKãÆ_ðîÝ»\çMïÒccc‹–V3¶nÝÌ ACHHHÀÁÁ‘+–Q¼xq¢¢¢hÓ¦ ‹/`áÂ%¸¹¹«¼ÿ´´šannÆ©S§ÑÔÔÄÂb.ÎÎ.$%%嘯·oß°q£-›7o¡lÙ²,\ø#aaá_Íqg瘚ŽfݺµìØá@Ù²e˜7o.wîÜáâEE:OO/&LÏÅ‹>бn|}/3~üXœ]éÊ”)ƒ£ãNNœ8…££åË—£CE›_/_¾ÄÕõóçÿ@bb111ôìÙƒ¶mÛðêÕ+i¼…B!„ÊäÎñ¯çë{™aÃF’––ÆŠÿÃÊÊRñÃ(ãØ±±q˜›Ï¥ukm\]]:Ô˜U«¬²,kêÔôîÝ 77WÖ¬YÅéÓgXºôÓÀ¹ffæ¼{—ÌÞ½Ž,Z´�;;{¥ALãââ6l$+V`ï^GöìÙÍ«W¯05—m—ϵnÝzüýX·n-ööv\½µk×ß¿xñGG'–.]üqÌNœ8ÉÞ½{øþû99.wÙ²Œ1œãÇÝ06̼yó¹pÁ+ÛeƶÚÛoÅÅåK—.âÔ)LMG³hÑÅóÌÛŬY³155áØ±£Lœ8µkm”–éârˆ²eËàááNñâų¼Ÿ5Ëœ‡±u«=nn®hj6fܸ Ùv½JMMe̘ñ4hÐ�w÷#XYYâè蔥kP^V®\…³ó–-[ÂÑ£‡©Zµ*öö[Už?5533sŠ+†­­5EŠÁÖvÛ·ïdîÜÙxx¸3eÊDþ÷¿Ч-©ºÿ¶oßIÍš59zô0‹/ÀÅå kÖX皟+Wüð÷ÄÑqÛ·o!&æ&Nœ¢žd'..žáÃGQ±b%\\ö±e‹?ÿü€1cÆ+#ãéyŠ+àëû© âÅ‹>T¨PAQWÓƒn&&chذ‡ÀÁaÇǧÍüìú¸lÙ <<N°jÕ ÜÜ\iذ۷X!„BäK>/’á}úë¢þ¦Oj§b§@q RëÖº9=zXˆ¿Ê˜1£™>}ýú Èñ.ñIݺuðññ¢OCÅ]'Bøúz³sç.œœöIaða\555¥`ÕÌ™3èÕ«'ýû’B!„ø—«T©"¡¡ÁúÀs x¤|œR?Ni¦÷þ¦ßŸñ5™^rgŒøsrÚ‡¾~G Ä! ̪U+qrÚMëÖ:Ô¯_Ÿ~ýú0nÜÎó”ÂB!„*“1c„B­[·ž9sf³q£-Õ«WçÉ“'8::±yó)!„B¡2é¦$„B!„BtSB!„B!„øO’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒB!„B!D!’`ŒøWkÙ²ÑÑ‘ÙNÝ d›6­ÇÉi7�uëÖ!::’&M4ÿ’í)]º4ÿ×Þ}GEu´a�–¥#{%š{ïXP“X©6»bE±b76EcÁ.` @P,ˆŠH³€(è’5*ňJ)ûý¡lXvE‘óüιgïÎÎ;wî\<û:3ëïïƒ9sfñæ–³qãÌpõj�ªU«V¡Ê"""""¢¯2›€¾Ó§ÏŸþ)•öøñ“2)ûúõ`hii•ËudeeÁÇÇwîÜåM-g11÷áë뇴´´ U}}Œ¡¯B||<D¢ø/RöÉ“®åvyyy°µµã ý„‡G <<¢Â•EDDDDD_NS¢¯ž¦¦,°BPP�îß‚—— •ÇÌ̾ˆ½‡€�_©Ï7o¶…ƒÃ™r…B!BB®cÆ ©ôŽ;@$ŠEÓ¦MeŽqpØgçCRijjj¸s'ff¦�€  �Œg&ù¼R¥JذaÂÃC†}ûv£iÓï��ÇÃýûQÐÐÐä÷ö>‡Ë—}$ïÕÕÕsC‡‘Û>õë×ÃÖ­[vÑÑ·áätÍš5“ºþÍ›m1sætDD„âîÝHìÚµCj Ž"y Sô˜þýõàåå{÷îÀÏï&N%¥¿ÿt`Ö¬pq9Џ¸´hñ£d:Ù€ýáævQQ·±cÇ6hkkcíÚ5 »ððLŸ>MRޱ±""nJÞ׫WûöíFTÔ-DEÝÂÖ­[P¹ò7’Ï»ví‚Ó§]qÿ~BCƒ1gÎ,I½ —%`a1—sçÎÁ A?K]ç‡ûnŽ;·#*ê6BB®cÊ”I ÷S"""""b0†è“©©©aôèQ˜:u jÕªùÙå­^½ñví: f€€€+صk;êÖ­ �èׯ/V®\Ž-[¶¡OŸþØ·ï vîü Ô/¶ÜÜÜ\xzzÂÀ@_*ÝÐP·oßÁ£GdŽquuGÝQ£FuIÚ€zPQQÁÙ³çdò 8°-[¶€…ÅLŒ3™™™8uêªU«†ÀÀ+ …èÚµ � ZµjhÒ¤ 4¨:uêH‚ÊÊÊ º*7 tø°j×® ‹™1b4rr²±{÷N©|ôGýúõ1dÈp@•*:pt< Q$Oa%Ó«WOìÙ³ žžg1|¸!ìì¶`îÜ9˜7ÏRªœ‰ÇÃÓó  Šøø?$é&&F°²Zˆáà мysxzº#!!þ‚U«Ö`Á+têÔQnÝvBUUÆ04FÂÚz � J•*pt<€7BпÿϘ3g&LáÇÊ-ËÊj.,,¦ÁÞ~ MpæÌYlß¾M&˜2kÖtx{_Bÿþ±gÏ>,]º:´ÿ¬~JDDDDD§)Q…³w¯z÷Ö�˜›…1þúë¯bññ¹(õþíÛ·h×®�`ùòUøæ›o$eìÚµÓ§OCÛ¶­ñìÙ34hÐ�¯_¿†¿�233qâÄIœ?oß¾-±®§N¹aêÔ)hÙ²%îÝ» <vv[äæ¿zõRRR0lØP8::�ôõ‡ÃÇÇoÞ¼‘ÉߥKg´iÓººý$õ_°`1‚ƒƒ ¯? ŽŽÎ GïÞ½xºº=qóf(„B!tu{âÔ)7ô飋ÐÐ0¹åçææÂÐÐ99ÙÈÈÈ�89ÆÑ£Î¨R¥ ^½z�xÿþ=V®\ÜÜ\�ÀÂ…KpíZ ºví‚7BÎSXIÇÌœ9NN‡qèЇ”E¢xÔ®] óæÍÅo¿í@^^�ÀÝݧN¹É”ïârOž|X;ÈËëÆŒ-)ëÂoXYÍC›6­åN)jРÎ;/™þff6YYï�5kÖ€ºº:.^ôƳgÏðìÙ3ôíÛ_nŸÑÔÔÀ¤I°nÝxy}¸ÅÆÆ¡^½z˜={&|}ý$yOŸöÄùó��‡©éhtïÞ‘‘·>«Ÿƒ1DEjР¾$|˜*¢§×nnîÅWxßü/÷� ‹Ñ¾};téÒMš4F³fM! ¡¦¦�8þÌÍÇ"0ÐAAWqãÆMøøø*Tßøø?pëÖ-êãÞ½{ÐÓëUUœ;w^nþÜÜ\œ>í ƒáptt†ŽŽúôéI“¦ÊÍߺu+¨««ÃßßG*][[ 4��øù]†©é�F’„„Ü„P(D¯^‚1ºººpq9^ä5ˆÅb 4íÚµAÆ ñãÍ@Ò>�ðàA¬T›>þÉÉ)øá‡ï%EòVÒ1]»vA×®]0jÔ©k€o¾ù©©©� ³xs¾/%ûÙÙÙxóæµÔçYYYPUU•{¬ƒÃnX[/Fÿþz ƒŸßeDEE�âââÒ%œ8ñ;®_ÆÍ›¡ðöö‘iÒ¤ 444&•SÓÑPRR’•ž?.•çåË—ÐÒÒüì~JDDDDD ÆéåË¿‘‘MMMIZþȆâƒ"E/à»oßnüðÃ÷8yÒžˆƒ»û)©/¼ƒ EÝÑ£G7XXLÅ¢E 0bÄ(<}úg‰çvuu‡•Õ<ØØl‚¡¡>¼½/û+:®®î˜>}¾û® ºuëŠÄÄ$ß(2rr LLFʤ§¥¥K‚1+V,C­ZµÐ£Gw=ú;�ÀÔt j×®&MÃÏÏ_nÙU«V…‡‡’““pþüE\ANNœœJåSQQ‘9VEE¹Ôyd?/þ˜¬¬,lÝú¼½/ÉäûÒ#Bqé’ôôú¡K—.8uj ±y³=Äb1fΜƒÖ­[¡wo]ô﯇E‹`Μ¹2m-ÊèÙø¼~JDDDDD׌¡ %##3fÌÆóçÏ‘––[Û͸y3ô“Ë«R¥ úõë‹åËWb׮ݸpÁÉÉ)RÁžZµj¢qãÆ º [ÛÍ<x””<xBç8wî´´´Ð³gôî­ W×âGñ$$$ <<ƒý‚ÁƒÁÝý4Äb±Ü¼÷îÅ JdeeáéÓ?%[óæ?HFS<yò>ĈÆPUUETT4¢¢¢!*aäH<zô¨È€V×®Q§Nm˜›O„“ÓaøûÈ 4oÞêêê’÷Mš4†ŽŽîßPª<¥-÷îÝ(Ô«WWêÚ544Q¥J©5eM(¢}ûöHJJÆÑ£¿cΜ¹°±Ù„ Æ�´´´Ð®][DEEÃÁaÆŽÿ�É¥‚D"233eÖ¦éÔ©#<x ¹%ùÜ~JDDDDDGÆP…síÚuôêÕ·TÇ4iÒDjZ ðaêÊ›7o’’cc#$&&ASS ZI?FSÓѰ¶^Ž„„ôêÕUªTA\ÜC™óäÆh×®-^¼HÄ›7ožžooo¬Zµ/^¼™Ž"««;fΜŽúõëaÉ’¥Eæ»y3·oßÁþý{±y³=RSSadd33SüüóÉ:0~~þ˜4i"¯H¾Ü]Ãĉãáâr¢Èòããÿ€P(„™ÙXøûû£Q£FX¶ÌZ&_NN6~ûÍ{ ¥¥…åË—âîÝ(„……—*OiËݽ{؇ÄÄ$¢^½zX½z%BBB°dɲ/Ö555áì|çÎ]€³óhkW°aC�hÕª%Ž;Œµk×ãúõ`4nÜ;v„‡‡§LY™pv>këÅÈÈÈÄÇÑ«WO˜šŽ†¥¥•Âu*M?%"""""cˆ¾¸½{dÒ,XOϳ7n"ììláééŽÇŸ`Ë–­’Ÿ†þð…/”””°zõ Ô®]Ož<ÅŠ«xE¦ÌׯßÀÙùV¯^‰5jÀÁa€ ùÂÞ~[‘£\ ºxñ"ììl^쓼¼<Lž< K–,Ķm[P¹reÄÄ܇©©9$ùüü.cÆ IÒ¯ÀÀ`8._ö/²üØØ8XZÎÃ’%‹1wîlDEEÃÎn‹Ì¯)………#44η ¢¢‚  kX½úW©QŠä)¬¤c‚‚®aúôY°´œ KËÙHOO‡»»~ûmÇíOo߾Ũ±ã°l™5\]?¬·síZ0Ö¯ßàClþüE˜>}–.]‚ÔÔ×8sæ,¶nýMnyööÛ––†Å‹¢f͉â1oÞ|\ºä£pJÓO‰ˆˆˆˆ¨b(.(ð>_©Àkþ&ü¸)ÜT¨�ÐéСsHjêk¶6}µ:vì€ãÇAW·¿ªkÛ¼Ùššš˜5Ëò³ò”Å1DDDDDD_’ŽNeDF†u À{�9·Ü[^M\à5ÿæ î£Ð>�ŽŒ!ú,ZZZhÞüX[/Æùó¾º@ •=.àKôú÷×ÃÑ£ÎHOOÇúõ6l""""""*§)¡ü¦)qd Q9b0†ˆˆˆˆˆˆˆ¨1CDDDDDDDTŽŒ!"""""""*G Æ•#cˆˆˆˆˆˆˆˆÊƒ1DDDDDDDDåˆÁú׫Q£:lm7"44÷ïGÁÛûLMÇH>oÛ¶ nܸ]Ý^_¬ð÷÷Áœ9³þñö8xpD¢X™ÍÅå(� ~ýz‰bñý÷Í>ùeQ�`Ü8³ ×§*Òýü\'ŽG@€/ÿPT@ªªªØ¸q=nÝ ÃñãÇþѺŒg†«WP­Z5Þ"""¢r Ì& û—™ãÇGzz:V­úIIIèÒ¥3V®\†J•´°ÿA¼x‘__?<~üä‹Õ#++ >>~¸sçî'—ñÝwMàãszz?!!!á³êt ›7o‘JKOÏøäòvìØ†œœ\ÌŸ¿ð¿ç¦¦c0{ö ôèÑ»BßO¢’Œ5C‡ÆìÙsñäÉ“´.11÷áë뇴´´ ÷Ì}Œ¡µ^½z¢aÃoѱcW¼yó�y ÙÙÙèÙ³öï?ˆÄÄD¬Zµæ‹Ö#//¶¶v¦]Þ¾}ƒ˜˜ûì _Éý¤¯SíÚµ‡  «ÿx]ÂÃ#Á›BDDDTN8M‰þÕrrr ¤¤„ªU«H¥:ä„I“¦?¥fذ¡ðõõƃÑ8yÒÝ»wƒH‹Úµk�6o¶ÅæÍ¶˜;wÂÂn *êììl ¦¦Vd] N¹É?g¿~}áæv11wáãs½zõ”{¬Ápøø\�øûûÀÝý�@ ÀÂb*/#&æ.Î;ƒAƒ~.óvìܹ~ÿýîÞDDÄMØÚn„¶¶6� ÀC† †¾þ0ˆD±èÝ[Wr\÷îÝqþüYÜ¿Ÿ‹RSÁŒqSê<]»vH MMMIšªª*6mÚˆ{÷îàæÍëX´h„B¡ÜzÚØlÀºukP«V-ˆD±X¼xá'µ“ƒÃ8;’JSSSÃ;033•¹Ÿ�дéòº ;�� �IDATwpr:„¨¨[ÂêÕ+Q¹ò7�€áÇáþý(hhhHò{{ŸÃåË>’÷êêꈉ¹‹¡C‡È­Sýúõ°uë„…Ý@tôm89B³f÷YEú¤²²2¬­!44ÑÑ·±aÃZ¨¨¨{0eÊ$ìØñîÞ„‡‡êÕ«‹qãÌxÑÑ·±u먫«+Ô_þn;sìܹQQ·rS¦LR¸Ï€P(Äüùsr÷îÝ ÌÍÇJM¹˜6m ®\ñGTÔm¸¹Dß¾}JußÕÕե¶66n\ððDEÝÆáÃŽøñÇæ¥ê×AA˜5k\\Ž"..-Zü(„‰b1}ú4´oß"Q,ll6”ØÆ3ÃíÛá2‡vÄÎÛzòÿ6À×ב‘a2×UÔ3_Ü3ÿ ­^½¡¡Áxð §N—êÃDDDDÄ` U`jjj=z¦N‚Zµj›78ønß¾OOw,X`…víÚBI©ønÝ·oØÛÛÁÍÍúúF8yÒëׯ•É÷Ë/?ü¢m„3fãçŸÂäÉKu-VV–ذaôô~BTT4vîüMê {¾‹/ÁÔÔ�0j”)&Ožúñø¹°°˜{ûm044Á™3g±}û6 8 ÌÚ»aÆ8vì0âââ0räÌœ9]»vÆ’%FF#qóf(‚ƒo [·ž¸q#Dr¬¥ållß¾#FŒFBBvíÚ.hQ„…ÅT<þFF#°vízŒ=K—.‘›wÃìØ± ¹¹¹èÖ­'víÚýIíäêêŽ=º£Fê’´ô ¢¢‚³gÏÉä¯^½:Nœø/_¦ÀÄdæÌ™‡Î;áÀ}�€ÀÀ+ …èÚµ � ZµjhÒ¤ 4¨:uêH¾°+++Ë! qø°j×® ‹™1b4rr²±{÷ÎRõÉU«VÀÄÄkÖ¬…±ñH¼|ù¦N\â=022ÄáÃGЧOüùç39âŒöíÛbÔ¨19r ºwï†É“')Ô_òÍš5Þޗпÿ@ìÙ³K—.A‡í.cÑ¢ù;Ök×®ƒ±ñH$&&aæÌ2Ï—…ÅT¬_¿FðõõÃ{‹\*ÿ¾×¬Y£À}ï/¹ï�ìE›6­aii…Ñ£Ç"99'NüŽºuë–ª_Oœ8žžg0hÐPÄÇÿ!õYRRºuë‰Ó§=ðøñctëÖ6Ø”ØΜ9 555ôïßORVÕѽ{7¸ºº•êY˜:u2Ö¯ßCC9ýAö™/éÈ?·žž¦OŸ=½Ÿððá#ìÙ³«Èà*ѧ)Q…³w¯ƒäbÍÍÇÂÀÀýõ—ܼ9993Æ ãÆ™ÁÈÈ3gNGbbœœÃÑÑ ¹¹¹2ÇL›6gϞþ}��±±q¨Q£ºd”E¾‡aûö_‚ž?Ž3g¼Ð½{7ìÞ½Wák±·ÿ ·nÝ�lÜh ƒáhÙ²…Ìt€¬¬,¤¤¤��’“Sšúšš˜4iÖ­Û�/¯s’ºÖ«W³gÏ„¯¯_‘ç2d0† ,•fjjŽ›7Ceò&$$ wo=$&&JÒ¼¼Îá§Ÿ�^½z…””äää"99EêXkëe’z¬X± ÁÁWѺu+¹ç)Ê;wñÛo;$×W©R%¬Zµ[·nCFF¦TÞ´´4$'§ %%ER—Oi§«W¯!%%Æ …££3�@_8|||%ÓÝ ;v ?~‚Å‹—"//�0þB\¼x-Z´@LL ÂÂÂÑ»w/^®nOܼ ¡P]Ýž8uÊ }úè"44Lnù¹¹¹044ANN¶äšœãèQgT©R¯^½*±OVªT #Gš`ùòU¸pÁ[Ò­[·F£Fß{ �8rä(Ž?†É“§"11 ‰‰I¸|ù2Ú´i­PÉwú´'Ο¿��8|øLMG£{÷¼Ub03‹_]'¹–bѪUK4jÔ°À}ŸKK+øû��D¢x´iÓffcqõêµbïû¡CN��CC}É}ïÖ­+:wî$µnÓ¢EÖ¸pÁ ãÇ›ÃÆf“ÂýÚÝݧN¹Éý,//ÉÉ)R[¾’ú¯¯ôõõ%í2|ø0$''ãÚµë¥z¶lÙŠ+W‚äÖOÞ3¯È3ðí· ‡ÈÈ[ƒƒk ¦¦*÷ï0ƒ1DHƒõ¥¦ÁÔ«Wzzýàææ^ä1ïß¿ÇÁƒŽ8xÐ 4ÀðáÃ`i95Äòå+eò·jÕ^^ç¥Ò ŽöÈ÷üùs©÷/_¾DË–-Ju=ËxùòåÇ/‘ŠiÒ¤ 444&•SÓÑPRR’|)*LÞ¾ÿû_Ñ‹«¨(cÒ¤ hÑâG|ûí·hÙ²’’’J¬cÁ…†?ä×ÒÒ*UݺuGê}DD$ÔÕÕѰaCÜ¿ÿà‹´Snn.NŸö„Áp8::CGG}úô–Lm“×gÚ¶mƒÈÈ¿ƒL��ðí· ?¿Ë’_ñêÕ«'BBnB(¢W¯Á]]]¸¸/ò:Äb1 „víÚ aÆ’©1§¤×'7nDDHúBBBJ Æ Šdgg�^¿~S Xøªªª¥ê/òꪥ¥©Pù÷4?@”/88DŒÉÏsàÀ^¼}ûV’G[[=’{ßw}:ä„jÕªAW·&L˜,¹ÏIIÉRýZ,#<<­[·*U¿þóÏ??éo`IýÀÕÕNe¤¦¾†Áp¸»{ //O¡g!ßÓ§OKU/Ežgç#Ø¿.]º€ëׯãêÕëb=""""cˆJðòå_ÈÈÈ X”æWFž<y‡Ýxúô ¶l±ÃÚµëeò())!77G*-'§âýÏmþOQš|»té GÇð÷@ppNŸöDûöíabbX.×T8I P*—vruuÇôéÓðÝwMЭ[W$&&!8øF‘ù}}ý°~ýF™ôüQ[~~—±bÅ2ÔªU =ztÇÑ£¿øðëOµk×F“&áçç/·ìªU«ÂÃà ÉÉI8þ"® ''NNKÝ…ÛãsúÑ—ê/%•!*É}. ?·� ¯o„ÔÔT©´ììœbïûŒhÖ¬zöìŽçÏ_H‚±Åµ•X,þ"ÏjiûÁõëÁHJJÂàÁƒqóæMüøã˜5kî¹×¥}BCÃл·úö탮];ÃÎÎ"Q<ÌÌÆ#''‡ÿÀ1CUFFf̘ [Û ÐÖÖÆ®]{Šò²l™5úôéAƒ†J~¨T©rrrä~xôH„víÚIM!èܹÓ?~í…¿ì‰D"dff¢S§ŽøãÿIÒ;uêˆ9*¦´„baii%I+¼jq_D‹¾—éÐÖÖ†ºº:Þ½{�hØPv„Fûöí¤ÞwìØ™™™EŽä)«vJHH@xx úÝ»wƒ»ûé"¯3&æ>ú÷×ß>“äÑÑ©Œ6mÚàÅ‹£Jž<yЇbÄc¨ªª"**ZX9Ò=*2°ØµkgÔ©S¿ü2™™¦§ôï¯Wªö‰â‘îÝ»KµC÷îÝÊ´Ÿ*Ò_>·Œÿý/999hß¾-?~,÷9ÿïÞ½C½zõ}¯@[v)vÔGBBÂÂÂñóÏÑ«WO©ûš5k AƒR÷ªcÇŽ¸víz©úõ§P¤äååáôiO ü ªU«ŠÐÐ0I•åߌÂÏ‚"Ï@Ó¦Mñöíœ=ë…³g½pøðQ\¼x-[¶àÏÄ1Cݵk×Ñ«W_…òº¹¹cìØ1pr:ˆcÇ\žžŽ.]:ÃÂb*Žs‘»VÁ¡CN°··C\\®_¿ï¿osó±ÿøu''§ //={ö@vv6ž={gç#°¶^ŒŒŒL<|ø½zõ„©éh©/±¥•?¥£]»¶xñ"ñññ04ÔÇ€ý^½zÁÄį_ÿ=Ú 11 ={ö@Ó¦ßáÙ³ç '2òòòò°qãz<èˆ&McÚ4Ùi@Í›ÿ�+«¹¸pá"š5k†Å‹ÂÅå„äËhaIII¨Zµ*Úµk‹'OžâåË—ŸÜN®®î˜9s:êׯ‡%K–™ï÷ß]`ffŠÍ›7áÈ‘£PVV†•Õ\Ô®]ƒ •äóóóǤIxEòÅ7(è&N—E–ÿ„B!ÌÌÆÂßß5²eÖ¥º¯ééé8q⬭!5õD¢x 2M›~‡÷ïß—Y?U¤¿|noÞ¼››;¬­— ## 0 ?:uꈴ´´A‘ 8::cݺ5PQQA\\:v숕+—aùòUððð,ö¾Ïž=uëÖÅ‚‹$é¡¡aˆˆˆ„ƒÃvlܸ o޼Ÿqf¨W¯.Ž9Zª~ýim«X?psû0ª«N:’E¬?´If™ýÍ(üÌ+ò ¬]»***ذÁ™™™7Ιxòä)ÿa#"""*„¿¦Dÿjqqajj޼<16o¶Å¡Cû1hÐϰ·ß[[;¹ÇxyÃÊ•«1~¼9¼¼<0~¼96l°ùǯåíÛ·X·n#æÏŸ‹ß? �°·ß†añâ…8sæ4ŒŒ 1oÞ|\ºäóÉçyýú œ`õê•07‹cÇ\päÈ1lÚd7·Sh×®-öíÛ_(€åˆ´´4xyyâçŸ*üeÎÊj:th7·1Â7ÚÊäÛ¹s7jÕª…Ó§]±rå2œ8q›6m.²ÜÀÀ+8wî<Ž=Œ… çV;]¼x5Ä­[·ñôiÑk|$%%cäÈ1¨\ù=êŒÃ‡––só R£¯üü.£råo$Ußo¾ù—/ûY~ll,-çÁÜ|,Μ9)S&ÁÎnK©ïíúõáârkÖ¬ÂéÓ®¨V­Z©œV„"ý¥,ÊX³f¼¼ÎaãÆuððpCãÆ°¿ô´­­[Ãþý±`Á<xyyÂÂb ~ýu]±˜üûþí·ß"""þùL’ž——‡É“§!::»vmÇÉ“.¨[·F+éŠöëO¡h?xòä)nß¾ƒFÂÛû’Ôgeõ7£ð3¯È3`ii…'OžbïÞÝððpC³fM1a¤"`'"""ú/(.(ð>_©Àkþ&ü¸)ÜT¨�ÐéСsHjêk¶6U***’…JkX?~ mÛþý?ïDôþã$@(J»æÌ™…Ÿ~€aÃ>o=#uuuܼyË—¯Â¹sçÙØDDDD$¡£S‘‘aÝ�¤Èð@ÎÇ-÷ã–W`xÍŸë]p…öpd ýêÃÏï€ ê£[·®X¾|)BBn2CTAlܸGŽ8¡C‡öøöÛo1dÈ L˜0>>~ŸUn›6­±bÅR¼z•úY#̈ˆˆˆˆ>׌¡ÿ/¯ó¨[·.-Z€úõë!-- W`ccÇÆ!ª ìí·aþüyؾ}+jÔ¨/^ÀÙùö|r™uêÔÁÉ“.HHH€¥å<©ÑqDDDDDå‰Ó”ˆˆˆˆˆˆˆˆÀiJDDDDDDDD_%cˆˆˆˆˆˆˆˆÊƒ1DDDDDDDDåˆÁ"""""""¢rÄ` Q9b0†ˆˆˆˆˆˆˆ¨1CDDDDDDDTŽŒ¡½5ªÃÖv#BCƒqÿ~¼½ÏÁÔtL…¨ÛæÍ¶ppØñÕ¶}‹?B$ŠEíÚµ�;vlÑ#Nå^úõëA$ŠÅ÷ß7û¬r&L‡àà ܺ†Ê•¿©m<t踻ŸBTÔmDD„bË–M’öÎ7uêdˆD±˜6mŠÜãE¢X…B©ô_~ù®®'u aa7àà°Í›ÿ •§uëV‰b$s|>‡‰b1}ú4IZTÔmˆD±2ÛÒ¥KмNXZÎF@€/<ˆÆµk°¶^ MM2}žŒq³È÷DDDDDåA™M@ÿfªªª8~üw¤§§cÕª_‘””„.]:cåÊe¨TI û÷d#•£ë׃¡¥¥õÅϳcÇ6äääbþü…eVf³fͰrår¬]»xýúÍ?ÞžóçÏÃôéÓpìØïpp؃ʕ+cÒ¤ñ8þ, ŒñäÉ©üsçÎÁ¥K¾HHH(¶ÜÙ³gÂÒr6~ÿÝ{÷†FŽ4›ÛIL™béàDÕªUÑ«WO\¹$•®£Sýûë!77Wæ{àí}I*íåË—EÖÉÆf=z÷ÖÅÖ­¿!.î!7n ++K|ÿ}3Lš4•}UŒ¡µ^½z¢aÃoѱcW¼yóáËsdä-dgg£gÏ Æ”³“']ÿµu¯S§�ÀÅå8²³³ÿñú´mÛ3gNÇÂ…‹áéyV’~ñ¢7\]OÀÖvÆŽ'IúôOhh¨ÃÆf=ÆŽ±X,·ÜV­ZbîÜ9X´h‰T¹çÏ_€½ýflÙ² ýú ”jƒ«W¯aÄ™`ÌðáÃðôéŸrÏóâE"bbî+t­ZZZ00Ї…ÅL\¾ì/yŽ?~ŒuëÖ zõêHIIáFDDDD_ NS¢µœœ())¡jÕ*Ré‡9Iýoz¥J•°aÃ:„‡‡ 22 ûöíFÓ¦ßI3b„1.\ðBLÌ]\¹â™3§K>ËŸchh�__oDF†�,,¦"0ð2îÝ»ƒ3gNcàÀR媩©aýú_†¨¨[°³³ššZ‘פ©© ¬€û÷£àåå!U¦±±‚‚зo^FLÌ]¸ºž@Û¶mJ•GMM «W¯@hh0<ˆÆ©SÇѬYñÓ|LLŒqù²îß‚‹ËQÔ¬YSêó‚ÓHŠk³iÓ¦àÊDE݆›ÛIôíÛGªœ¦M›ÂÉ颢n!4466$Ó†|1dÈ`èëƒH‹Þ½u¥Ž … ¹Ž3,¤Ò;vì�‘(M›6•¹®€�_89�<x€�_Éõlݺ7®GtômLœ8^¦~7aggÊR턟~ˆÀ@?ܾŽiÓ¦ ~ýzpt<€»w#áïïƒ>}zÙÖÆÆFˆ‰‰‘ ˜�À»wï°eËV¨©©B[[[’ž——‹­[·£k×.5jD‘åŽa‚û÷ïË”+‹acc‹ZµjAW·—Ôg¾¾~0@:::RéFF†ðö¾eåÏ‹ë‹Åy‹Å¨^½šTzXX8~ùe¨T ¦¤çI‘gˆˆˆˆˆÁ¢BÔÔÔ0zô(L:µjÕ,6opð ܾ}žžîX°À íÚµ…’’t·8p`/Z¶l ‹™3f,233qêÔ T«öáËŸ¡¡Ö®]—ã6Ì�ööÛ0{öL :Dª¬©S'cýú044�XYÍ……Å4ØÛoƒ±ñH\¸p»vmGïÞ™íׯ/�`üø‰X±b$wm|«W¯„Áp¬]»Æ à víÚŽºuëJòT¯^ Ó¦MÁ´iÓѯß�ܽ…£GQ§N…óXYÍ…žž¦OŸ=½Ÿððá#ìÙ³«ÈµA† ›õ8yò ŒáêêŽ5kV•x?eÛÌS±~ýFÁ××ì•�jÔ¨Ž“'ÇÛ·o1fŒæÎæÍÀû>�FâæÍPß@·n=qãFˆÔùrssáéé }©tCC}ܾ}=’©£‘ÑH,^¼�гg”|öóÏ‘šš “Qðð8#S¿™3ç iÓ¦pvv”j;míoо};ÂÌ™s0wîìÞ½ÎÎG «Û>>~رc444ä¶[«V-qã†üµL®\ ‚‰Éh¼}û¶Às£ŽS§\qûöX[/.òÙ)®ÜääˆD"´jÕR*ýÚµ`¼{÷úúÃ%iÍš5CëÖ­pö¬—Ì3WZ™pv>‚õë×bÓ¦èÓ§7ÔÕÕåæ-îyRäY'""""b0†H޽{°aÃZX[/‚«ëIT­ZµÈ¼9993Æ »víFÿþzpw?…k×®`êÔ)’/Æ]ºtF›6­1iÒTDDD"66 ,Fvö{èë�xxx¢oßþ8vÌ"Q<ΞõBTT4:uê(u¾-[¶âÊ• $$$@SS“&MÀ¦Mvðò:‡b±oßÌš5Ož<•sÿþ¬X±QQÑ8sÆ gÎx¡{÷nE^Óòå« ¯o ??<z$®]»!жmk©€Õ¯¿®C\ÜC$&&aýúHIIÁèÑ#Îóí· ‡ÈÈ[xöìV­Zƒáà ä®ÿ�“&M„§çìß±±qðððĉ'K¼Ÿ²m6‹YÃ××"Q<öí;�_˜™�ŒkŠôô XY-@tô=ܸ‚3fÃÑÑB¡¯^½BJJ ’“?lò¦:冦M¿CË–‚ ***<x0\]ÝåÖñÕ«WHNNþHÆ«W¯$Ÿ=z$‚Ý<x‹ÔÔT™úݼ ‹hÑâG©‘.jjªØ¹s^¾|) ŠDñ ºŠ×¯ßàÐ!GTªT 7–[§Ê•+#55UáçF(TB^^–.] üúëj¹ùtttŠ-75õµÔ(�ÈÎ~/¯s011’¤"**qqå–³nÝ™|[´ø±ÈónØ`KËy¨[·.Ø‹°°¬[·UªHz+îyRäY'""""ª¸f U( Ô—švR¯^]èéõƒ››{‘Ǽÿ:âàAG4hÐ�ǃ¥ål4jÔË—¯DëÖ­ ®®©ã´µµÑ AÉûÚµkcÔ¨‘hÖ¬5jˆæÍ@|üRÇ<}úw¥I“&ÐÐÐ@hh˜T??©÷…SMJJ’yPX,FûöíÐ¥Kg4iÒÍš5…P(”šŠ‘••…‡I~ø^á<ÎÎG°ÿ\ºtׯ_ÇÕ«×tµÈz}ÿý÷puu“J+¼Ð«<òÚìÀ½R£:´µµ%#VZ¶lÈÈH© Ð‹/àíýBá~ÿnݺCC}Ü»wzzý ªª‚sçΗºO¬QõKNNÁÿþ—€V­ZÂß?��ðöí[dddè§ÙR‹ge½—mäyýúµÌ´ 3gNãÇ›KÞOž< W¯^“Ê÷{öìÜ9³0hÐÏr‚-©2åJk*#5õµÜ�—©é´hѱ±±Ð׎ݻ÷Y޼| ?O…]¼x /^BåÊß`àÀ˜3g:tè�#£ÈÊÊ*ñyRôY'""""b0†¨€—/ÿBFF455%i…1¦8Ož<ƒÃn<}ú[¶ØaíÚõ’/Ë&&#eò§¥¥�¦N‚¹sgãäIWøûûã?þ‡Y³f{.@ðEÚ`ß¾Ýøá‡ïqò¤+<<<w÷SRy„B¡Ìù ¯ÛQRžÐÐ0ôî­‡¾}û k×ΰ³³H3³ñÈÉÉ)êªË¤ ôõdFgdgç”i»ºººÃÊjll6ÁÐPÞÞ—––öÙåW¿¢ÍýÑÑ÷н{W©´9sæA]] 5kÖÄáÃŽ’þ+/2hÐ/X¹r¶ný­ÄróÕ¨Qß}÷¢£ïÉ|b1|øPU†ŽNexy+²þ¥YÀ·°×¯ßÀÍÍW¯^Cppºté,t*JIÏ:QEÀiJT¡ddd`ÆŒÙxþü9ÒÒÒ`k»7o†™Ù2k\ºtAfÍŠJ•*!''999¸w/Uªè ++ OŸþ)Ùš7ÿyyy��cc>|ëÖm€‡Çܾ}GfqÚÂD"233e¦2 2-Z´ø¤ë¯R¥ úõë‹åËWb׮ݸpÁÉÉ)RÁ©ü JëÖ­¤/mÛ¶ÁýûÎÓ´iShh¨ãìY/,_¾ cÇŽCçÎв¥üºÇÆÆ¢GééUÅM·’'>þ¼{÷õêÕ“ºõêÕƒ²²P,hß¾½Ôú+µkׯèÑ#¡ªªªpÐãܹ ÐÒÒBÏž=л·n‘S”>%HR¸~Õ«WG£F ?9ø »ûi´hц†¯}óøñcÄÅ=D›6­‘žžŽ¸¸8¹ÇfggcéÒå¨Q£:ÌÌL¥>suuÃ?þƒáRé�K—Z#11±ÈÀ‡««~úi�~úi |}/ËAó) 蘘»Rë"€¶v%�@ff¦Bå(ò¬UCεk×Ñ«W_…òº¹¹cìØ1pr:ˆcÇ\žžŽ.]:ÃÂb*ŽsAnn.nÞ ÅíÛw°ÿ^lÞlÔÔTÂÌÌ?ÿ<oÞ¼H~ýúÂÏÏééi?ÞMš4.öËuþ¢£ÖÖ‹‘‘‘‰GAW·-Z� ‹™ˆ‰)ýµ¿yó)))066Bbb45µ°p¡•Lðáýû÷X±b)¶mÛÔÔ×°°˜mmmœ8qJá<k×®†ŠŠ 6l°Aff&Æ3GFF¦Ôz7:äˆ]»vàÁƒXøù]FË–-eÉ-IFF±nݨ¨¨ ..;vÄʕ˰|ù*xxxÂÅå8ÌÍÍ`oo‡ƒ¡¥¥…E‹@IIIR÷ÄÄ$ôìÙM›~‡gÏžK¦<µk \^�� „IDAT×/^$âÍ›7HOO‡··7V­Z/^ÈL'ûTëwà€#´´4±xñ<xð�WÊì9¸sç.öìÙ‡M›lжm[\½z �ýúõÅÈ‘&øõ×uHO/z´Gdä-;æ‚qãÌd‚I;w:ÀÎÎmÛ¶Áիס¡¡‘#MЩSGL™bQäO{{zž…µõb˜›ÅĉSŠ­íÚµdÖˆyõ*ÏŸ?—É{õê5¼xñG:ÃÁaž>}ЦM›bΜYˆŽ¾‡ÈÈ[ µ™"ÏúÛ·oQ©R%´jÕ±±q2ï+ÂÏšƒ1DZ\ÜC˜ššcÞ¼¹Ø¼Ùjjjxüø1ìí·ÁÉé0� //“'OÃ’% ±mÛT®\11÷ajj.YbÙ²°±Ù€cÇœñúõk?~%žßÞ~ÒÒÒ°xñBÔ¨Q"‘––VŸü¥<77ãÆM„-<=ÝñøñlÙ²Uæ§y322°yóVØÚn@­Zµsó HLLT8¥¥–-³ÆÞ½»ñÍ7ÚˆŽ¾‡ &᯿þ’[·‹/añ⥘5k:,-g#2òV¬X…ãÇ•ê·ný ¯_¿Æ‚k}þü9~ýu<<<�IIÉ5ÊË—/ÅñãÇ••??ØÚn’ µmÛ^^žX¶l<<ÎÀÙùV¯^‰5jÀÁáÃZ&§N¹ÁÈÈööÛÊl QÁú8q ïß¿‡¿�6l°)rñãOeo¿ qq1~¼9Œ ‘——‡{÷b`a1S²6Mq6o¶Ç€z2#NvìØ‘('އ‰‰ Þ¿ÏBXX8FŒ]l�255>>~èÔ©#®_.öܳfÍ™êwê”–.].“7++ cƘaÁ+,Y²:::HII·÷%lß¾CáQ-Š<ëW¯^CDD$ÜÜNÂÜ|‚Ìû°°pþa%"""¢/N @º Àûü}¥¯ù›ðã¦üqS @§C‡Î!e5œè¿ÎØØË–-AÇŽ]?+ÏAÇŽpüø1èêö“ TÉ££S‘‘aÝ�¤Èð@ÎÇ-÷ã–W`xÍÿà‚û(´€#cˆè+¤¥¥…æÍ€µõbœ?"""""ªP¸€/}uú÷×ÃÑ£ÎHOOÇúõ6l"""""ªP8M‰ˆˆˆˆˆˆˆå7M‰#cˆˆˆˆˆˆˆˆÊƒ1DDDDDDDDåˆÁ"""""""¢rÄ` Q9b0†ˆˆˆˆˆˆˆ¨1CDDDDDDDTŽ ƈÙTDDDDDDDDÅR(~‘1DDDDDDDDåˆÁ"""""""¢rÄ` Q9b0†ˆˆˆˆˆˆˆ¨1CDDDDDDDTŽÊ*Ã_["""""""¢¯]™Ä?”ÊàäⲬQ$/þñI±¥/T1"""""""¢¯E™Æ;”¾@e!""""""¢¯E™Ç>”¾`E9}‰ˆˆˆˆˆˆˆþm Æ3¾HLC© *WÜç ÄÑ¿"1OŽy(•q%‹ªHï#UpEÅ/JŠ{”JYcÄÅTP O,Æ+@À[JDDDDDDD’@ €XŒWø)Û(è³2Šc ÿdSI?áTxnU®@ ~¬¤¤Ä;KDDDDDDD’’’ñc�¹(y-ÜÒÆJ¤ÏUDziçEIFÁzÈÍÎ駬¬Ì;KDDDDDDD’²²2²³sîA:#/ÎQÐ'­+Sšá*EP\Ìçb�¹ïß¿c0†ˆˆˆˆˆˆˆ**eee¼ÿ> ²#cò)QÈçÎ*<%)?Z”¿åÈŽ¹¡¬¬üR(òîQ…" ¡¬¬ü266æ€l|ˆgŒo^?æ³ÖùÔ`Œ¸˜ýÂÃxrdeggŸTUUå&""""""¢ EUUÙÙÙ'dáï@LQÓ“Jµ>Œ<ŠcäH\Ä~Á çcÞ'$ˆN¨ªªrt UB¡ªªª/D'�¼‡ô¨˜üøPt¤ÔÁ™â‚1âR¦¬ ÌT¥·oß¾z÷.k›††ï4Ux÷.kÛÛ·o_Aþ%àïÀ Púx‰Œ’†©äì JÈ#(b_œ’’ø¿š5kURQQi“Í;NDDDDDDDÿMMM�âc÷îÝq çã–?¸$1ßÂÓ• ¯!S*¥ Æ|/€t°(>(#‘”ô"¼nÝúu„Bá ÈÑ?ASSÊÊÊgïÞ´Á‡@Ì{Hb /à (ö+K%RdEFÇÈKÈyÀ‹ϮתU[KMM­Mnn.Äb1{}qB¡ZZZ�ÄÇ bòî-¸õkJŠŒŠ)6ÐQÚ`LÁ÷È!Søq¡÷y�r“’^„U«V㉦¦f;%%%M±XÌ  }B¡êêêÐÐÐx™½áÞ½;‡¤ãï19ø„É#/SØ'ýÔµàòÉñRxS*°/üø^¹À¾ÊÇ} mmí* ~7FEEeTNNNµœœäää //Á"""""""ú$�JJJPVVÎß^fggŸLHÿ¸Xo&>þèþžšTpšR~�¦¨‘1À'þ¢’ 4×!g_Ñ€ŒÒÇM(gS @å‡Z誩©uRV¶‹ß ¨Å~›ˆˆˆˆˆˆˆ�òÄb¼Äsrr£³²²Âccc®âCàåþþÕ¤¢¦&}±@ ðéÁ˜‚ïåý‚RqA™ü Œ¼�2>g”å[Òt("""""""úï·nÁ-?’ƒÁ—üiH…/ß+„S‡)—ò"å­“"A'̓t %ÿ¢ò1ù^pMþh¥é€ü€ ý· äRò ¼Ï+”^ø“Š À”i (]0&¿àâ2%É+?+pQ*P~á5(ž""""""¢ÿ¦‚±ˆ¼BûG¸�ÒA˜‚û%`™š$ï}±>5˜¡ÈÏX7u©¤µe çUP¹‰ˆˆˆˆˆˆè¿¡¨`HÁÑ1…_™†¤ÈH˜Ï Ä�ŸÈ³//Sø½¼À j’ ˜z3 CDDDDDDôßP\0¤p0%Oξ"ÁyÁàë•§,‚Ÿ:JFÞgòÖ†Q’sÁº"""""""ª¸Ä%¤ST`FÑ�L™†)¨,ŠŽ’‘—&o¿¸éI‚r¸"""""""ª8Ä ¤5]©¸`‹¼ÀK™†)¨¬ƒŠŒ’É(GÞkIõf@†ˆˆˆˆˆˆèë"Vð3ñ'¼–”G‘:”Ê—\·ž‹à3_Kª71DDDDDDD_'±‚éâÏ|-®Ì2ñ%ƒ‚ö Ò·_^×ADDDDDDDGi¦+Ü+ðYqûeæK1J3JFÑýòª;UlŠ.è[Ô~¹†)¨<‚R¼ÿœŸ¯fp†ˆˆˆˆˆˆèë&.å犎x)·@ P~ EF¶>á"""""""" äQ2м/*­L ˱QJ³Þ ƒ.DDDDDDDTâR¤‹KYF™*ï ‡à |FDDDDDDD”Oü>+SÿT£¼×a0‡ˆˆˆˆˆˆèßA\Îå‰Ëûÿé …à_TW"""""""ªØÄ_(o™ª(Zˆˆˆˆˆˆˆ¨<ˆÿé TÄ 3DDDDDDDT–Ä©2ÿ†Àƒ3DDDDDDDTb6Ñ¿Ìÿ ¥ s^nH����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/bazaar-light.png����������������������������������������������0000664�0000000�0000000�00000647543�15240005042�0022774�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��c��¶���LùZ���sRGBÙÉ,���gAMA��± üa��� cHRM��z&��€„��ú���€è��u0��ê`��:˜��pœºQ<���bKGD�T�T�T3cÁõ��� pHYs�� �� �šœ���tIMEê0!È´�� �IDATxÚìÝy˜U½7ðï©êêmöL&3Ù'ûž°%@ ì«l¢÷ªWE¯ðàÊ"òÜû¾zEP.ˆ^ß+ú *("B @€„„ì!û¾Í>ÓÓ[UóþQÕ=Ý=ݳe¦gÉ÷ó<mwWwW×TÕL¬/¿ó;�µ#¸DDDDDDD4Ĩ¼q‚ÛDDDDDDDDCÜ€ g·ƒˆˆˆˆˆˆˆN ý̈Aôý lˆˆˆˆˆˆˆ¨#ªÞÛ«Ä�ý^1D~N"""""""ê•çõå=”èûÄ�ÚN"""""""œT¼Ö«òrˆn,`{‰ˆˆˆˆˆˆhðPÝX®º¹Ž^•¯p£+‹èÁgˆˆˆˆˆˆˆˆ€®….ªŸéuù7ººˆn|®?~"""""""ê?Ýíÿ¢ºð¸+Ï{U_] ^ºưJ†ˆˆˆˆˆˆˆ2uVÙÒÙãî4½¦/΂•Ž–u'”é럃ˆˆˆˆˆˆˆŽ®ô{é(xéN(Ó'ŒÈÃ:»ºtõ¾³íf(CDDDDDD44uµé®:ÎûŽÖÙ+z;¼Èšd»?ž@†Ó`8º:%uO˜®„3mC·xzqÇt4´¨³0&Ûc-Ëg²­]XNDDDDDDDƒ[w†'%îeÊs'7P]ü.‘±®®~¶S¢ÖÑ•à%×kZ–åZ–ïaC_""""""¢OWöf†0‰e¹*bºV-ÓÑvtÙñVÆtµ&×óÌ[jð¢åø|æwe{NDDDDDDDCSgÓW+´e ©Œ@zð¢2>›«ò¥×«dzÆô´&W�“ú8±Ã2ï»ÛÌ—ˆˆˆˆˆˆˆ†¦ÎšöÊ,÷©aŒDÇÁL®ïL aDŽméTO‚Œ®1] a7‘ñhÒ eùñl? ~©!ˆÌxœº å±Ìxœ+”ÉÔôʰ¥îVÆtÄtuRjð¢#{ “Z“«— ½7LjUL¶ Ɔ“1d¾¿+ß•9L©[ÖºÆô4ˆÉ¬pÑ‘Âè)7�ýÏü¬�‡(‘#[uJê-²X�L÷ÞN¹ih eìŒuÈß'2÷(9Þž1ÙšövÔ FÏr3�øË—¯X2{öŒS‚ÁÂÙ^¯gœ”ª éÃ’ˆˆˆˆˆˆˆˆ:#5M4ÄãÖ¾p8´qãÆ-«—.]²N(uï!L"»°ÑV5£!{(“ÙÀ·G|EÞו1©AL¢ Æ“òØp–.]Zöä“¿ÿlUUåõRªrž/DDDDDDDÔÛ4MÔ9rôéo¼áË—/o�À˜h«±Rw¥Ùo¶2†3] c:žÔYsÞÔ Æƒ¶¡HÁuëÖ]:kÖ¬o1„!""""""¢|Ð4Q·iÓ¦‡æÍ›÷7�a´ aJ cJ2]mò t³¡owÃ˜Žªb²õ†ÉÄøjjj¾URRz#O"""""""Ê·¦¦Æ'+**‚S!Eö@&1t)W• Ѓê˜Î˜îTÅd›))Â$îý�‚MMMÿ¯à¡'""""""¢þ‰„ÿZRRòŸp*dŒôf¿™31wuLwšãfkÚ›xžúZj(“Zc�ð×ÔÔ|‹A õ·@ xEMMÍ·àN,'¿HÍ3Rs ã™ž»<ãsOg*Êœjº£ž1ɪ˜µk×^Æ¡IDDDDDDD4P”””Þ¸víÚËà2©“%n™™²<ï–ŽÂÑÍe"e}™aŒqöÙg—Í™3ç›<ÌDDDDDDD4Ì™3ç›gŸ}vÚfNÍ5€öÕ1™ºº¬ã»q¯ÈØl•0:ÚÊ{¼� 8xóˆ#þ‡˜ˆˆˆˆˆˆˆšcÇŽ=6fÌèÿÐ §oŒ‰ö½c2ú¹{ÇdíÓÓ0&WãÞÔ¦½‰>1>�%–e½Â)¬‰ˆˆˆˆˆˆh Ò4Qçñx.Ð †öS^§Î¬ÔÕF¾YÃí8·5××iC”–/_±ˆA  TRªò+V,Bö¡JÙzÆô˜§ïí¬[p®Y–ôY³¦ŸÊÃJDDDDDDDÝeÛ6b±LÓ„mÛÒ¤it]‡aðù|Ðuý¸¿kúôé§XŽÎgMR)÷ÈXÞ©\aLg O®à%sÚ'@/((šÅÓ‡ˆˆˆˆˆˆˆºÊ¶m„ÃaÄb±¬¯K)!¥„iš‡Ãðù|ƒÇÊÍ‚S“-çèI�“õõ®TÆdöŽ9^Ë\– c¼^Ï8)Ï$"""""""êT4E(êÖgb±b± á÷û{ô½gÒà wö¡2^WY^ËJë…}”«J&™"I©Êx*QgÂáp·ƒ˜T¡Páp¸GŸuó‹Ì1¹†+õ˜ÖKû*×öö÷ÑF{¤¤ ‡ÃˆF£=ùh®ü¢³Ü£W¾¤+ºÒWFäã`Õ××ãóŸÿn¾ùßyæ B¶mWEL¦P(Û¶{úñ®d=Î<úªb¥×¦{êL}}=n¹åغu+âq“g/Ñ Ô1½´ÎÌ^¸½îxÃÑÅe}¢¡¡·ÞúMìÚµ ãÇÇü˜g/Ñ “˜¾º·Åb±ã©ŽIèõ죷+còÄÜrË7°sçNŒ?=öß(//çLDDDDDD4ÈtÄ\tÑeøö·ï@SSSrYss3n¿ý.\tÑeǵî.êÕ¼Cë…ÈËp¤T bˆˆˆˆˆˆˆ†Óì¸íÈøñã°iÓ&ÜqÇÝhjjBss3î¼óûX¿~ÆŽs\ëî†lù‡8žu´<s¬”@Û4OZÊMwo÷æ`�(ÇÍ÷{ë'gCDDDDDD4´Ô××CJ™óõÚÚZÜ~û]8tè0ª««!„ÀîÝ»QYY‰ûïÿ*++s~VÓ4 6¬ËÛâõ 40ÄXîÍvo2å¦Rî7¤Üg>v¶i° o~󻨹s'&Nœˆ_üâ1DDDDDDDƒ\GA � >÷ß/F‰={ö`÷îÝ1¢÷Ý×qÓ•u÷‡AÆ!x–`<¼^_ò¹a0 Ï üY]óÐC÷cÒ¤Iصk¾öµ[Q[[Ë3’ˆˆˆˆˆˆhÓ´Žã‰††ÜqÇ÷°gÏŒ;cÇŽÁÁƒ‡pçw£¡¡á¸ÖÝ/?ï`;@eeexôÑŸaÒ¤IØ»w/¾þõÛÈ bº®wøú÷¿ÿŸØ»wÆŽƒûï¿÷ß/ÆŽƒýûàî»ÿã¸ÖÝ´ÁxÈ †atøz¢wìý÷ß‹²²2”••áþûïÅĉ±k×®ãZwèêlJ™3*õÛlJ©2gVúùÏÆðáÃy "¶mw:ܨ§ÊÊʺUsœ³)!ã10fSÊÜ¡<òSLœ8{÷îÅw¿{Ï`""""""¢AF×uø|¾^_¯Ïçã0¥¾0lØ0<úèÏ0cÆ x½Ï`""""""¢A( Šuö†A=L‰ˆˆˆˆˆˆˆ†Žh4ŠP(Ô+ë*,,„ßïïöç8L‰ˆˆˆˆˆˆˆN~¿¿WªY‚Á`‚˜|aCDDDDDDDF0Daaa?_XX8`‡'%xx˜‰ˆˆˆˆˆˆh ñûý0 áp±X¬KŸñù|ƒ²ao&†1DDDDDDD4à躎¢¢"ƒAÄb1˜¦ Û¶!¥�hš]×aÆ€5)†1DDDDDDD4`éº>à‡u{ÆåÃ"""""""¢<bCDDDDDDD”G cˆˆˆˆˆˆˆˆòˆa Q1Œ!"""""""Ê#†1DDDDDDDDyÄ0†ˆˆˆˆˆˆˆ(ÆåÃ"""""""¢<bCDDDDDDD”G cˆˆˆˆˆˆˆˆòˆa Q1Œ!"""""""Ê#†1DDDDDDDDyÄ0†ˆˆˆˆˆˆˆ(ÆåÃ"""""""¢<bCDDDDDDD”G cˆˆˆˆˆˆˆˆòˆa Q1Œ!"""""""Ê#†1DDDDDDDDyÄ0†ˆˆˆˆˆˆˆ(ÆåÃ"""""""¢<bCDDDDDDD”G cˆˆˆˆˆˆˆˆòˆa Qy¸ h PJq' "Bî"""""¢`Cý†áËÐ:~ gˆˆˆˆˆˆº†a õûE|o¿ŸzWWC–Äqb(CDDDDDÔ1†1”7…* \çq˼0”!"""""êÃê× z4ƒGwƒ¥"""""¢,ÆPŸËªd.cð28c"lÉÊ0!"""""ja åõ¾»Ïi`ÊÂd eÈ¥cC}¦£ %ñ8Ã4MH)3ÞÏPf`j U„Ð4 ^¯†a$—%Ž/"""""¢ìÆP^d1RJ4;¼ó:×"P_Ý2{çËý]ßþ0·ÜÔ·ë$Ûo{ ÄËG yö|`ñ2”UŒ€¦i9""""""r0Œ¡>ÑQÃ^Û¶qdËF”?ýøêŽrg Rºe"pô G"¶n_ÿETMŸ]×ÙЗˆˆˆˆˆ¨wõµD0£”‚R G@ùÓ3ˆB|µG1ì©ÇqìÐÁäqN=öDDDDDDÔ†a õºŽ.ÀÃá0ŒÞ†¯îwÔã¯; Ïû+‡{tn(ÆPŸÊ¬ˆD"ð­_Í3DùÖ¯B$Éz쉈ˆˆˆˆÈÁ0†òF)˲hªç΢u°,› QÆP¯Ê6}uê2)%<¶Å5Dyl RÊÏ"""""¢Ã"Ê+3DDDDDt¢ãÔÖÄ pê³cÞWSY?ðÀOñÌ3Ïæ|]Ó4”–– ²² §Ÿ~*®¼òrŒ9’…ˆˆˆˆˆVÆÑ#¥D}}¶lÙ‚ßþö \ý xî¹ç¹cˆˆˆˆˆh@`CyÃêëþÇqÿýbåÊ÷ypˆˆˆˆˆ¨ßq˜åõ¢œÌ‰yÌûj¸Rª¹sç$×ÖÖáСCí¶ã‰'žÄ¢E yˆˆˆˆˆ¨_1Œ!¢AOÓ4üêW¿H[¶bÅ;¸óλaÛvrÙ'ŸlãÎ"""""¢~Ç0†ú+`(Û9‘ ™„%KcÁ‚“°jÕGž—[¶lÅ /¼ˆ>Zƒºº:˜¦‰’’bL:Ë–-ÃE]�]×Ó>óÌ3Ïâ~ÚåíùÆ7nÅg>s}Ú²X,†çŸ+V¼‹Ý»w£©©^¯£FÂ)§œŒ«¯¾ãÆË¹Îžl÷ü<ÿü Éç³fͯ~õþßÿû5^~ùÔÔÔâÆoÀ׿þUž´DDDDD}„a  Y­­‘´çóæÍI{®”ÂÃ?ЧŸþS» ¦¶¶µµuxï½÷ñôÓƃÞ‡ŠŠŠ^Û¶;wá[ßúŽ=–¶Ü²,ìØ±;vìÀ3Ï<‹Ûn»×]wmŸn÷#<†§žzš' Qž°/ )J):t=ô06oÞœ\îõzñÕ¯ÞœöÞ'žxO=õt§•\Û¶mÃí·RÊ^ÙÆ––Üzëm킘L–eáÁ†+Þé³í®¯¯Ç_þòO""""¢<be  zRJ,\¸8çëãÇÇ]wÝŽéÓ§%—Åb1üö·O¤½¯ºº—_~ |>^zélݺ5ùÚ–-[°jÕjœ~úi�€Q£FᬳgÝ–wß]™”ƒAœqÆ¢äó?ýéÔ×7$Ÿkš†Ë/¿ ³fÍÀîÝ{ñç??˲’¯?ñÄ“X²dq¯lw¦Ã‡�t]Ǹqã ”‚ßïãIEDDDDÔ‡ÆÑ6qâD\ýµ˜6mjÚòÆÆF\zé%hh¨G}}B¡Vüü磸¸�°lÙ¹¸ä’+ÒB•-[¶&C3ÎX”°$<òÈcxç÷Ò–Ýu×i½_**†ã²Ë.E]]-êëqÞyçছnL¾nš&žyæÙäó­[?IöÜ9ÞíÎfÒ¤IxàcäÈ‘<aˆˆˆˆˆò€a  i»ví½÷ÞÿýßÇñ“ŸÜ—¬Ž©¬¬Äw¾óͬŸ1M«W¯i7 ¨µ5Üáw½ñÆrüþ÷H[víµ×àüó—¥-»âŠËqÅ—g]Ç‘#G±k×®vÛcš&¼^oŸl÷=÷|A Q1Œ!¢AOÓ4üâ&ŸÇb1|ôÑüñO#�jjjqûíwâø “ïÇãxýõ7°aÃFìܹGEMMm·ûÃìÙ³?üáҖ͘1·ÝvKÎÏìÚµo¼ñ&¶oߎ}û ¦æB¡Ö.}_omw0L¾EDDDDD}a  óæÍM{~Úi§bôèQøÑîK.;v¬¯¾úw\{í5�œJ–x0­KO„ÃaÜ~û]‡Û*PŠ‹‹ð£ý_†Ñîý¡P?øÁá­·Vôèûzk»°? Q?àlJD4d{î9í–­_¿�°cÇNÜsÏ´ 4&L˜€‹/¾wÜñƒÁ.}Ï~ð_Ø·o_ò¹÷ÜswΡ?÷Þ{_» & â´ÓNÁ7Þ€Ë.»4çwõævQÿ`e  Y í+G"‘�à…^„mÛÉå#FTàᇊ ª“Ëyä±N¿ã‰'žÄ›o¾•¶ìÆoHÎ~”©±±±ÝûoºéFÜ|ó—àñ8’ÿð‡?æü¾ÞÚn"""""ê?¬Œ!¢!©¡¡=ô³vË++«��‡L[¾pá´@cçÎ]iÃŽ²Yµj5~ùË_¥-›?ÿ$|ík_Éù™Ã‡´ëërÝuW'ƒ�ذacÎÏ÷ÆvQÿbe  zRJ|þó_J>ommÅ‘#G`šf»÷ž}ö�@AAAÚòwß}|ð!&L¨Æ¶mÛñÓŸþw‡ßyäÈQÜsÏ´ V”R¸ûî{Ú½þü“ðéO_‡Â‚v¯ýæ7Oà†>Û–xî¹ÚUΤ:Þí&""""¢þÇ0†ˆ†„­[·vúžE‹NÇ©§ž�8唓ñÚk¯'_«««Çm·}+íýÁ`0g•Éÿø4›Ú-ÿøãuYßïó9rGªªJ9r4ùÚsÏ=çž{¾Kß{¼ÛMDDDDDýÔˆè„pÆ ñÃþßäó‹.º°Ý L©nºéFLž<)çë©}[ºõGWÓðíoš–ýÏoii ¾õ­Ûr~þx·›ˆˆˆˆˆú+cˆhHòûý(++ÃìÙ3qÁç·k¨ëõzñÈ#?ÃSOý ÿøÇ?qàÀ†cÇŽÃu×]ƒ /<7ßüï}²mK–,Ưý+üîwOâãס¥%„ŠŠ ,X0_ùÊ¿aïÞ}9?ÛŸÛMDDDDD½Cta¹Hyžx¬¥Ü'nº{ó¸7/�@i<n¾Ï]}bPJå¼WJáðá#õ_ßîÛxôw}»þ[nâöwàÐÝbäÈ*! „ó§#×=Ñ@ãõ 40ÄXîÍvo2å¦RîUâÒ8å12à0%"""""""¢¼bCDDDDDDD”G cˆˆˆˆˆˆˆˆòˆa Q1Œ!"""""""Ê#†1DDDDDDDDyÄ0†ˆˆˆˆˆˆˆ(ÆåÃ"""""""¢<bC}BÁ@<'ˆˆˆˆˆˆ²`CDDDDDDD”G cˆˆˆˆˆˆˆˆòˆa õ)M!žDDDDDDé<Ü”Oš¦¡eK=<¦Õ'ë …ÐÞ]0|þ>Y¿%loo€1ûdý1Ÿ-‡öÃÐô¾Y4ŒÒ GáU}˜†McÆKÔ]‰gÖD°éó·eö(×, 4Àß'"""¢¡ˆa åš& QØÔÜ'ßÑ¢)„0¬rdŸ¬? ž²”DûdýÍ%…IÃú(Œ 56@ Ãû(Œ‰¡ë«aˆºÀ’ ïìˆcÓaûêm4EdòµU{ãØv̸a:f4pæd/<¯ˆˆˆˆ† †1”B(¥àñxÐRZÒgaL&®=ÜgaL«F– äPß„1uå%[1 óxûdýµGaê6†Ë¾ù¯í‘ÒRézò˜÷…õM<öV(çë“*<øîùEX¹+Žg×FðÀ5%½úý·ý©1K%ŸøæŒòâº~øgCSDâåQ¬;`"l*Tj8s’gMé¿�àÍm1¼¶9Š».*B±_Ã÷^hÆù3|8gªoHüM´¤Â£Ë[±õˆÙáqÙpPbÃAk˜¸ui!tÊ c¨W%B—\¼^/§MÁˆ½ûûäû·xM˜?¤Y údýD| ª1ö£½}³ý3&"iÁ$QŸ¬Û†Õð{-L3¾¹¨Ÿ>Ã}¾NÏ‘ã1e„w_\œ|þÀ?ZpÎ4NçX~£ïÃKfû1¬ó}õ­6žYÁoß—øúÙ…ƒîw¶!,qßß[ð—Í  $ °¿ÁÆK"ØYcáK‹ Л{ôßi…¦_<£ Ã÷-Ó1¬@/ÏÛŸkÂsX<ÉÛ¯ûýÝñƒ˜L[˜xgg gOaщŽÿúLâ¢;õâÛï÷C-\ÕUÀfÃĶWAJÙëëWØì8u dT HMÆY“±¥5ÙA Õãí—Û×­ÂfÂìƒã-…€Zx|)aL¶sàx ±ezò¦i@I@K>¯(ìû?k¥)ß7oŒ×.`ãA1S ºßÓ?® £Ð'pç…ÅX<Ù‹9£ \2Ûoœ[„5ûãØpÐì—íš\áÁ§OÂЇæÐœÍ‡»¿_·¶@DDDDC+c(¿'œÇƒÊÙ3°wÚToÝÖ«ëþÐG“¦€†Z¬_ùN:ó¼^]ÿvQ‡LÈa…زt&f½±©W×ÿþisÐPT7±¶¥'—õêú×¾û:Zë� Xí‹ã´XïVì1 #ç̆Ç3°þ¬¼ñI ÿØEKLab¹Ž]T€ò‚¶ÀfÃA]ÁÑf‰Ò ÀÙSü8wšÝÉ4! i@jïâ÷vÆñÏO¢8Ö"QìX<Ù‡‹g9¥÷ÖÛ¸÷ÕöCõÆ”êøþ%NÕÏöc^ÚÁÞzM`îh®[DÀëlX]«Ä ë"ØrÄBÌR˜RáÁ5 Uâ ûíÊ0¤RðêÀ‡{M\97€eÓÓ«*š#™ø÷³ áó¤ÿÀã†éøÜ©éU1‡›$žYÆŽ †.0g´×Î$‡g­ÜÇ‹¢¸nYAcDaBÊ>¿ç¯M¨ 9Qà‡{â¸ui!ªJtÜýB>¿(ˆW6:Çé¡kK³3³là‰÷[±z¯ ¿WàŒ‰^\>'º“m(ÓC¯·`|¹ŽeÓý¸ó¹&�À“´âÉZñÈõ¥0tõM¼¸>‚#ÍE~ ‹'yqÑ,?™k®}¹í¨…¿|ÆF‰ !pÖ.íïôÜiŒHì©·;þ[©§U{±rW‰ˆow…ƈdS_"""¢!€ÿŽò&QQQQºK/†eôÞP™¨PøG –|¾âŧEzmý&l¬G ¤€’ï]wâþÞ 3¢>^=ïLØJ@* ÿ¬«E¬«{bÑ0V¼ôtòù?QÄDïUq˜†úK/FyyyÚ±îo¡˜ÄÚýq|aQn9»‰'ÞoM¾¾ù°‰_¼ÂéÕ>|ïâb\=?€—6Fð↮Ÿ;‡›$þòq§W{“UïïŽá«Ã8k²w_\ŒOÍ àåQ¬Þ�TiøÎùEÉÛ¡ `áD'D¨ IüìŒ*ÕñÝó‹ð•ÅØ~̹ð�[¿Ñ‚ƈÄW—àöó‹ kÀÿ¼ÞKçãý& |§Ohÿû¶¿Á†RÀÔÙ´%n¥ àô/yðõø oŸçlÓá&ÿýf¶L xl¬Úkâ–¥E¸ë¢"DL…'?t¶ûŽ ‹0u„Ó« ÜwU ¦Uµ}ï?¶ÄpÝÉAÜuQqÎ}ýÚ–(†h¸ãÂ"\r�ïìˆ'÷IgJüî»Ê v®˜À}W•ÀÐ66ñË·C˜?Ö‹;/,µóýX¾-†gÖ„;Ü—¡˜Ä£ËC˜^eà—ãKgàÍmQ|¸7Öé¶<³&’Ö¬7›+æpż@ZÀבxvM„ÿ˜ ¬Œ¡> ]}cS—y<Ì^º«>Ù†…{â8‡ä(<UA‹ÖvqÓÜXç~õ�®ûúÝÇ=Õ²‚ m?Z¥ @* ¹´/Þv)®úÉóÐäñn¿Àï>w)‹ ¥€R@ƒeá‡à_G…vœÁ†R/<þ0BM mušÂï Ãø|KÁq'²J¬9ÿ\œtÖ™Ðu=í<È fòÒܼ¤�…nåÆåsøÍÊVHhxuS˦ûpÞ '©*ö¢a®Â‹ë#¸|N g…ÃS«ÃøÓš , T—ë¸r^ ùú >̨2PâV0T{ñÖövÔX8e¼>C`r…óç×´þôQsG{qž[¹RQ¨á¿®,I«€8µÚ‹µû0G×€;/'ÚÌ�� �IDAT,†®!YÑrî4~öF¡˜Lþ¼U%®:)sÿ„ã  ðu¡/ËŠ1x=_<£ Y‰òµ³ q×óMØtØÄ\7´‘ ø—ÓƒÉÞ=Íòãñ÷Z¡�ú4ûµäвÄo�\9/€Ù£:h«Ëu\6ÇùyF—ꈘÀŸV‡qÅÜ@»ÊžlçBI@C±{K|ÿ+›¢8e¼—Ìö'× üúÝV\:»­)sæ¾<Øh#n+,ëEYPCYPÃ//IV.u$1}u.Ó« ,›îÇ#ËÓƒ.�ØtØä?2DDDD cˆzÔ”””`§¯Æú†Ì}ïƒ2J� F°ÙÛþeǦµxýÏ¿ÁùŸþ„èYä  °JÆ^´@)%‹M%vÌ™ˆ7nXŠe¿_!{ºý¹ò\¬Ÿ>J H�JR›Ca¼xô®¨ÑãC)‰üéql_¿ªÝk[ /#¸"@O‹d”XwÆéwý5())é—À¥#^-L�ΟT€i)ø mÇ,l;fáñä{"qgg´ÆeÚgS]2ÛSÆ;ÁI(&ñâú~ôj ¾qŠüÎgÂ+vÄp¨I¢¦ÅÆF•ÅZÖ`'Wøæ¹Á´å¶^ßÃ5!ûëm”R‚-�kö™Ø]g¡¦Eâ@£3ìÅJ¹x//èxŠô WÀ’@ÌT2ûêmL®§ÍæSÐ0¢Hþz+ƽZZå"Ÿ[–­:ìÿ2¼ ½~&”§ÿ“5¹Âƒ¸­PÓ"1¦¬gÓÁï«·qZuúð­ÉÃ=°%p°Qbj¥–u_Ž*ÕqÒX/x½3*=˜RiàäqF—˜̎Ț�þÏå%xfÓ4ù ‹‚øçÖh·üâ¬LfÅLuu5¢ÿz#Þ/.©¯/‡ÇìÞ…GT(ü± ‚-ÞÜŸ[õæßÐT_ƒ+¿x¼¾@·ÖoÂÆÛÚ~ìG ”tBç& ÜÐdÕy PW^‚«~ù2¼Ñx÷¶ßïÃï>{6̘ì¬)ß'˜y«¾5¦…1¬ÛÛ‹†ñü¯†Vç|Ï»þ8t…φð©î…(¦a`Õ²s0êê+0a„¬0)˜ÉÆÐ®˜À‚qF– "w8Pì×P• V4|}i!¾÷|3Vï3qÎT^ÛÅK£X<É‹y£=QäÃ+›¢íÖ³rWì1qûùEiñÛYxdysG˜Ve`á»jm¬Üå i‰Jüøï-( h8yœ³GÐðÈòP·~þ±e:„�¶³’ÑR­ØGi@`Îhª;éBÉÌl»ÒèºG9£HœÇ¿å«K °·ÞƦC&6Œãùu|eqA2˜ÊeÖH#9dÍù9€·¶EñåÅAl”hŠ(üu}$çg‰ˆˆˆhðcÏê³�¦+¯MŸ> Ó?ÞúâMØ1{&d.Þ•�ÖxãøII¨Ã &aÛºñ󻿆Uoþ ª }X”’Ø%ð¼¾ ûT ¤„{NO÷¹­�[ |2o2þûÇ_ÆË@vaH”ÒVŸ< ?üî—°~ÆdØÊ¹“nEŒTÂYæ~Çú¦P··ÃûËñËÿ¸µÃ &a³aâ¾’¼ëwi–%%öNž„_¸3¾p#¦OŸÖíã>PT—ë¨Û(/Ð’·˜¥Š)tgÂ,C0t$gSZ¹;†s§ùð铃8}‚†{ИÑ#ä@ƒ?® ãÓ 7,½êâ£}qŒ.Õñ¥ÅX2Ù‹éUÂñ¶Ïo¯±Ð–øÆ¹…X6݇¹£ ô¤8«8 aÎ(/¬‹ f¥¯`ƒ?¬j…tãŒñÃt쪵Ҿ§9"q¬Ebü°nT¥Çi°§>}6¡56¼EÎïϣМ²Ÿ•jC²Ã¯7LÇŽšÌõZÐ5`TIîß稩°»ÖÂøa:.™íÇ7—aÎ(ooï¼g̵ )ô¯oáù#^¨áñ÷BiN % ×,€ˆˆˆˆ?VÆPÞ™lÕ1J)TUUaÙ5WaûÜ9xu嘱þ5”‰À±à‹8I±€± UAü~ïngÖ¤n‡šñÚÓ¿ÆÊ¿?©'†ÉsNAYù—9 g›êÐX{Û7|„më>Dñý·9C’¤Hö‰I JV¯¸ý]”B…üí3çâí NÃôµ;0uÃN «mFI£3cNci1êÊK°yÆ$¬Ÿ5 EÅÎ$Ù¶n¥Ú†)¥Uá¨îoKc]·öOHSx!ÁrŸWÝáþß4{ªO9çÌœ¿ßß.h,U1€ÓÏä±·B(ñk˜3Ú@]«ÄӫØVéÁ¿,,Èù¹ÆˆÄþgXP$®°rw M‰¹cœª…ªb6tú¨ø 7?‰âh³ÄXw(M$®ð?+BUªaL™r�άLÕå:*‹u|°;Žuã¨*ò`óaï튣À­ž©,Ò!°|[ sÇxQÓbãÏkÂ=ÚŸ=5ˆûþÞ‚ÿ½˦PØß`ãõ­QÌãÅÜÑN£ê%“}xs[ ¿y¯çÏð#f)<÷qcÊtÌìFµFi@`Ë Gš%ÊÝ;Gö×ÛxqC Æzq¸ÉÆs‡qÖd/¼n¿˜i•ÞÞÃøa:JÞ܃ig»jLL®ð ªXÃE³üøùòªŠ5ÌmàX‹§VGpö_²_L6ûêmüô\r3ªœÏíªµ°p‚· û@Cõ0ëÊvÌŸÄrk†{8“â®0½&„€ÏçìY3QPP€}¡•8:±(çz›ö÷¼anKc>Zþ >ZþJ‡ï+T©!I[“è#ݦ-¨q*fKŠðîÙóñÎ’ùîçDÊçÚÞÛn*eËR‹aººý=Õ¤)XÔáþŸþy¨®!D—›óÔ`fÖH_]Rˆ¿mŒào£ð '¸|nÇÕ/oŒâåΰ#ŸG`t©Ž¯Ÿ]˜œVúÆÓƒøÝaüìŸ!½Î´ÖsFµ}~Ó5!‰špÿk-Éå>Àß.ÅÒ)>4G$žx? ¥€Ù£ \8Ówv8U£Ku|yqž]ë ‡?LÇÕ'ðË­ÝÞeA w]T„—6DðÒúÂq…Š" Ï `é4o²’¤$ á;çã™5a<øz ]`ö(×-ð§õ‘éÌù3üØS׊¾ÒŒ›N `òˆ®9—Î `w­‰ûþÞ¿W`Éd®H9VWÎ  9¢ðøÊ0†À¥³ýˆ˜é/®Ä“¶â×›ð./Á¬‘n>«�/­wŽi¡Oà¬É>\ì6ôÍej¥_<£�¯nŠâÙµ½§U¸|®¿K?ËÌQÖl_Ù×Q…ÓÌ*þ“MDDD4d®—»°\¤<O<ÖRî7ݽyÜ›€ 47ßç®>q¥2‰ÇJ©v•R8rä(¶=uO‡ëûËÛëû|›«~ùƒ¶ E"½Š%åyÎÀ%QQã¾Ç–)KF0“ e}cRžÄûÇ<vGÞŽ×ÕgÍíø"ô3?@UUe2ŒI­„3( –Txtyk—›ôΨ2pËÒÂn_DDDDÔ3^¯±@#�@€åÞl÷&Sn*å>qñ›úÈÒÊÿ™úMfåÌ@ºh·e[pb§(@zð‘¥z&=ˆI.ËV “¸8OJ`÷5{`»ŽžQÇ<šÀ­K ñÎÎ6¶°§ÎBSF_¡’€†êrfôàÌI>1DDDDCéÿrP>.Ü3ûÄd.sHS°- ¥inõ‹H†#m³*e.)ÁŒÌn”Ê\¸´Í¢$Ú"U[ÌŠcj8ˆê³F‰1^€-Bf Ñc8Ú‡±¿n ¢ñ¦¼×ÎzÅ0¤!ÊM×€³§øpö#Ï®‰`ãa§RfÎ(WϰG ÑÅ0†úUG}eòŧ \{R f\Š@¥°Z7ý[Í*¼:ûD5#£yoz'dÏ3†/!£Bé2©M‚§Æ qAëÌ¶Š )gö(Œ(‡²$”%¡[%z)‚ÞbTMÂÔª¥ˆI{j?ÂÆý/ ¶ykÞ!ŸÒ€†;³€;‚ˆˆˆèÁ0†òvÁÞ•Ð%ßöc =¸õKãP01è ²T\¢Ø¯pªyÓ7ÿ¿y)Ž”U¤IJ #BFàgºë¶*˜” ˆ¶e©Ÿw_n{ñÙðX̱K�]8¿î›•­ t¥ HM@7%`J:KMÇøá§ ªüdì«[ƒw>ŽpôXŸËÞ|щ†a å]¶¡JݹxŸ4²´W¶C_ºn‚3 œÄÄtS]8÷(,þíàßð“àç6üiU-iÍw3zô =Jé!£r/;-Z†›¢ãðx á´ÈvW®,• b4á„:ºRð¸ÓaKØB@WÀèaó1¬ø~¨ý=ZB«úìf{Î�†ˆˆˆˆˆ¨sŒNB\Ä_2Û‡‚º�47ü‰MB@�((•øÔº@JåN5- Íwá!Ò Xdrˆ’Óø×N,SïKùÜáJ|96A¯ͧ;·€ͯCó{ |ŸáÕ¡y5Cƒfh !àºpÂ%]�<º#+¾ˆ²²+‡Ô1#""""" XC'¤ 0ñÜ2HKA(¡œj¥Tj“�BsK¢bÛ>(¨LŸŠZfLE-÷¢­±ob™iÏ•®4ÆàS…£¡ùt¯ÍÐ! Ð…[ÓV£„ô ÀVº‚Ð%4KAšrï…‚¦œûÒ’ aÊ8BM¯ð  ¬Œ¡¼ÉUIÑœZ�x`*¨¸‚ŒK(S9=clg:ié†3 š&ñÙÚN5Œ¤íÞ¤Hžm™Τ?b8® Œ…ðçfh^ "Yãæó8A[ #<©äI¹iB@ƒS“¸wF99NIé¥ðOòÇ”ˆˆˆˆˆh°`C'œiEÃçqÄ%sn*.¡,'í4È…Õ6uõ¸òN9²%%pq;-„I]l) m‘ÂH.ý¸É7ÁåÞ„î.š¡¹C”ôô F× 4'Œš€ÐœÐCCr„•sŸzsC™ÂaŸæ)çÁ'"""""�ÆÐ‰uÂ+%§A¹1*&[ܽÅ$`9U2Êvƒ7œ‘¶ÂUæj[eTÂd¯|I†0vj5ÎÜ _Ó’I2II3Í bÁKjº÷1ÜÏ y—|’Y—¢ ?|¥×ò """""צÜt"9s¤Ž@•0¥S“¨¸̶ W¶tC�6PäãŠ}ïf„0n…ŒÌ ]Ú‚;±LSd!fk%i³.%ŸÈÄìI2f;SZKå¾É>6Pîÿ¤>MPÏÝ×=þY¾I< ˆˆˆˆˆˆúÃ:aè ³æ‰1qéÜÇ¡Œ‚Œ;30%¤%é®3ªdÎñ|‚ÒHKÖáG‰Ê—vËRúÈ\$‡gNÃä0¶tBSBFm糡Lg¹²¥Ì$oh›jmyN"ˆI]æ<WÐ Îá‰@DDDDDÔÏ8› :à ý=úÜÒ º§FPšr¦²†“‡(8ɆN_H e¡m¨’åÌWm‰Ï\އÇ]‘u¥¶Y–ÚÏ T( ÌÖŠÛ;1[’4 áT¶dΦd¹Œå<wçÍv†O)åd;H¹w'œQÉ`Føg¢´¨šjå‰DDDDDDÔOÆÐ ¡B“¨ªöAÅ ÐU²ïŠJ6XqÂåN­d"ð�”é1‰—æ0­a6ŽkÂ8S_‹Œ ÆY6K934YÒ™®ZPš€Ôœ25©�a;a �•l¤S!cÚmU2î*§È&ãÞ dRï`F ®OƒßZÓ‚ˆˆˆˆˆ¨Ÿp˜N®Îx·WL¢qoÚlJѶ2ÎûÜ&¿qéLyw§¾6%4[↚åÎlI9¦±¶³,›¤°”r¦ÍviÚî)gX’Œ¹C”¢dÔ‚ŠYP1*n»Sp;C™”%a+K)·Pƹ—ª}#UÛȨ˜g"O"""""¢~ÄÊò&ë&J†ù cB  (! „‚mS)¥�åT£Hw¨’ʪ”häk½W#±ôðüsø‚¬C’¤J Wne P¡ù`)@S ^SBДЩ , ¡‹¶Ù•ܦ¾Êv{Ê$‚S¶L7Œ± œ0n0“rßÄ8U3¶¨àIADDDDDÔÆÐÐ>Á•ÂÌášS£ @”æ„R� ©£”œ@&ÑT× ^$œ>-‰j·Œ²$® €·Kæ "¼)}bRzȤ…2@‰ðÀR Â%eÄe[c«äTÖÉi¬•Ó¨7ùÝvJ#SÂ¥ÜÖ6)•2iÁŒ‚ ·zF”ñÄ """""êÏkUîÊæê&|†'Ù´º€“„´Ò]8SH §ûm²wŒ;öÇéc+KAºL±Ƨ÷/ÇoF_àÌ\”¬Œ)¡L[…Œæ0•D¢IŒà1%4;Q£AhÎv%¨älKNuŒí†0Ùn‰*'QÉ¡K‰Ç &|Cþ¸«p Ç "q nAÙ²mZpê! t ðz ^ èƒöÍ9k1 ™ˆ‡MX1ÒRN@:¨v—ó{îñéð ø øŠ žGDDDD”†a Y…Ra\™púÀ耰áIÐ�¤VŸÀþÙZ)ȶæ¹BRJ n…ŠÓ;FXÎëçE7à•Ö“qÐWž¬†IoèÛÖà×R q((H'°¶ð(ÝЄ4‘šÅ¸ëSnuK¢úÅL¹7ej…LJ¥L"˜Üþ2ÎýÕÔ ÙÐ 3ù Ð[”‚²lÀ²«®Âg@++�J zå+ÂõQ„j"0£öØ] ¶©`›±‰–c€á×QX@p˜Ÿç`CCØ|Ä ÛRiÎ Jœ-Ñ/Æ wi8aŒmÕ”2LȆ€%!Ý2†máóû^Ã&~.mHRb¥Ô•š¥ ]îÌFΪA‰&„3É“©wHé÷’%hI WŠçª”I¹9ALlèåÑ8TM³Pßïï˜ ûH#Ds¢¢ÂïíÑzâa ͇[ íðÌŒÚhØB¸!†â‘ðùO/щŽÿ†¤JÓDEPAÅ�¡;C””æOÒ܆-îK"qï&$*q/Û÷ŽíöŒ‘îÌJn3ß“ìݸ}ÛOq$Øñpáù6âÆ8HáߨÐ…‚%t7Jµcà2©=`¡L[ø"³„0)}dà<Öíú!u¬esêH#‡!õŽAí«…¨*…VìÖgà 14î ºaHÇ#2Q»£ ¥c ,óñ"""":1Œ¡!G@až‡Š»C’tåöŠArN£˜dƒÄP%áŽ1J„1pžÛÎìJ‰ ™Äsa;ua3c­8(q†Bå5C÷Œu¦›†€ ] è b47ˆI­QNÍŽÛ¶¦­L¢2ÆÊ¬ˆ‘Ù+d÷>ylÈkÙ†:ÜÀ“¾?)u¸èr nˆ¡a_Ë º»Tògg CDDDtâbCCÎäP ºâncÙÊZsªbT¢A®›»¤ÞC)å4ò…t†( w¸’³°e²¡o¢©oT7D±{X ç¶Åâ;`øOq‚•è)¬ +M8¦4 9Ë“B¢•J|}ÛìH*Gÿ˜Œ!KVZµ P»‡ÆEm4îTÄÐÀ8G¡¼žN‡,ÅÃ÷‡NøýÕ¸?ä6ùå?ÃDDDD'"þ¿@R¼¶Ääx JP tåVÄ87¤5îuzÆ$s7˜ITÄ´UǨD¥Œ-Û½XÒ­Ž‘Î L­iÅþ,]˺}f| ¢Ò†!tØBAw+c4¡ %结Õ:p§Ç†3Ô(u¸RæP¤v3,I™öÜVŠímCã⿦™C“ÔQP5Íc‡wø¶æÃ­Ýš$-…Í/ïÆµµˆ·fï-ã x0z~f^Z ÝÐÉîRh>ÜŠá“Jxî€ÆÐ€c+½ƒ¡>BÓ ¤ÌúÚ̆0¼–„Ò„Ó´× c„&œenó^@´õŒsï\!9•J¶UȤ”¥8}c¤3D vʰ%KÁ°f aøâW`-ˆÇ7CzgÁVº�4·2F@µMò„”YžR†)I¨´áJ‰¦¼ÚWÇdW²”BPnƒpÎ}«i¢ã ãû=ïšZÙ¬w  áÐÔšs–¥p}´ÛÍz·¼º»Þ9Üá{â »ß; ¥æ^5iÐì¯XÈD¸>ÊY–ˆˆˆˆN@ chÀ±Mº7÷©é÷ˆDÛ_ˆE-Œi‰9Ãô””4¥Iw:k7lM|¶2· EÉÄLJp†'©Dã.·Ê˜´{ {¤»+‚²ÿ Vd9lÏLØn5Œ.´DãΤ$ÐV9Ð6ó’jÈXÕ¬,ÓR‡,°ßëpßû½1±¬ÆÈ†Öîæ`ìw·@i^èÓÇB_4€€½j;䦽P¡8DE1<gN‡V=¢kçë¦}°×íêZ�]@Œ(…~úhc+NÈß_ÙÐ -Gª‰t{}ÖÖ�–Ü2e㊲¾§åHo>´?®ÁÜOMrdŠJ*ìYy{>8†ÖÚ0<^SË0óâñ¸ý[^úÞ{VöÊiçÅ´óÇ9Ûµ¦;ß>ˆPMÞ€U³Ë1ã¢qðø»÷Ïj¨&Â0†ˆˆˆˆa Qÿ‹[6¼„1%EˆÅã2ý‚iÎáÓ ]”-Ý!J‰æ½Êé#ÜaKnϘ¶Ú“ÄÕšH4iq–ºC”œqBnÓ^·BFº3*9}dTr†%a3·ÕãÃyÙ/æ…µfl3,ï §q¯Î*·:&¹i‰MRí™ÔF¾NeLû@&sØRµÅj_ÎýªiJK ;<61Ëê÷óC…cP±îUWȃu0Ÿ]é 3€Pöêíjœs"¥ °:Öóù`|êôNkå'°ßÿÄ9®E([Bí¯…<PãS ¡U®@F¨ƒùçw! ýð~ù‚žŸ˜ ŽAÓ›ÓÆZL˜Q»ûÂÎ9W:º ç{Šª‚º3bCI ‘c˜àæWöbç[!t ¥£ iŒáàÇ5¨ÛÝ„s¿³�ŸŽâ‘…¡c¨& i)7ÌÝõÎ!lü«Ó{©hDá¦v¿wõûZpÖ-s¿5]dFmÄZLøŠ þñ'"""bCÔBá ƒ¹g1<T/GcK bÑ8¤RYÁ°æ¤¦A¸³')K@s+c Á™Ú¢­gŒûP9YÛ;Æ©€n¿!UJï·b&%”Q–ÓG&õ~xÇ¢86"ûñÖ£/ ⩆.üÉ~1‰aJP"cjk•l䛘âZ bÈ$n@z#¤Š¢Z½’=„~Ÿ¥%…Ð5½ÓcÓïz0<É~wK[“ºos5�V Ö»[àí(Œ‘ öêíÎÒóæBŸS (Àzsìu»a´}ð„1‰ÆI½yŒ2ØnOêõQ*ì~÷�`Ñg`ø”RXqo>¸‘†ŽnmÀèyÃqÖ­sÓ>×ZÁ?Y  jN9â [_uBÍy×LÆøÓ+mŽá­‡×£é@ûVÃøÓ*»µm±Ã""""†1Dý¬9A•*íðâУk^šÒør$°nÖÀú9|�ÆvøŽŸ÷Ãèñ§€–Öhÿç‘x÷?s´©ûŸ©i¤„“èeyÝ´·‚BxÝ ièKf@›7ÂýœõæØï†>"<Kg�ì5»`½µZuŒ«An;óo«!F–BŸS ûým@$1¡ƹ³€ˆÄûåß�ÆugÂzk#PF”À8gĈ¶ßùÉ!X«w@Õ·�^ô‰•ð,žá¬@ü‰7¡êZà9gìõ{€–<çÎ…ùêçg Eûé_á9oô9ã{tŒ2}ãáž…1"FŠó¢ÎÞ'4K¸(ùpªÁ4·ŠÆ›cXáö7B)…‘³ËQ\ÄÁk`ÅmøŠ¼wªóûä/öaü©•ØöÆ~Z_Ûí0¦§û†ˆˆˆˆ/»€Ó²Ñ2*0(MKk¦m÷ÿ†Ä{0Tª“é–³ÆÈÄ�€ðy )wÎÙWÖÀ|áXkw‘8´òbˆ²Âî‡õ­°ßÛ 1² Ê«Cn;ˆø_Wµÿyå#ˆ’ˆÒ¨Cõˆ?ó^²bÈÞ°æË«¡jš¡áÑao܇øÓïB™éûÎzo+· F”@”@·MË®Ï 1¬°×Ž‘ëÿsGhÎ÷G?iÀÚ§·ã͇Ö"ÜÄ3F¢bji»÷GcØ¿¦�0u™­¶sþ6•Œ ¦ G*å £j9îöv „}CDDDDùÅ0†¤úæîMK}K*…†æÐ€Øew¿‰°6cL·?£Ï×é{ŒËN6}   È]Ga/߈ø¯_wÂXB£¸ ãš3`\r2Œ«9ýlÕCK¯ìñ,šã²SàùÌbˆâ 3ao=à ¯Zéô°ñ,ãšE0n\ Qä‡jAn9˜¾_Æ€÷ß·qÝ™#Ëà¹pZúá¹p>´Ñå½vŒr5Åí”èå÷h>ÔŠýCkmÁ2 ‡û¡ˆv,?eKTÎ( ݯ�� �IDATC‰Û³ÆŠ:ÇU÷¥éK<·zЧÇû†ˆˆˆˆ-†14 Y¶º¦PJg]êO Í!X¶´ÛïY4 Úø®÷oÑÆ ‡çÌé¿1àƒqñøn¾Æe§@Ÿ9Ð5g˜Ð›ºŸ;”$«Q´áÅ%A�€ªkI¿ðŸXå¼ßð$.U×ÕZ }ê(ç=>´jgØŒ:RŸ¾ž©#{·WLŸHl ê¥÷S΃Ëï]„Å_›;ncÃ_wcÇ[éAU¬%޽�L=·mÀab¶$;£š%ñÜã×ùƒˆˆˆˆ:¿æà. ~¹¼_Fã&Z£1î¬~ŠDéÂìE]9¦½rîè=ø³¥k0®<Ý©béìâä‘ð\¹Ð™½ª¾öG;`oÞø hSFÁsá|Î�È]G2>òXæ¶2«ÁïËØµ*õó‰¬Kû?ã=š–·c¤yú7õ1#6êw7£aoKr‡M(ƨ¹NõÏÑ­ iïßùöAHKbø”R”o›R»h„3”«ùp8­š¦éP«ûz°ûÿ{ÿÐ`ÆÐ€‰Å‰›`‰LÿˆÆMDc¬¹¨·‡}Çu ÆE  /œ–û-ó'¸ìOþ4Æ,Xoo†õÚ:ÈCnʼn¤;C“0Üíô8÷òH½®(¹çXÖUªÆÖä4Ûò`T‹Û;©¼8í}rË÷$;±®ò"ˆ"?Pà4éµ·93©¸•ü>QUÖñÏäfÊV½~Œ<¾žUŒ$2&•š_)´Ƙõ}©çrsïübVü|=jv8þ¬¸Ð�@ ¸­¯P<la÷ûNUÌ´eé^ÅÔ2膆hsûVs×ÃÞðmäìîíêé¾!"""¢Á‹³)Ñ€gÛ6,[ƒ&4hÿ r>(¥ ¥„e¼Æ¢"à… ÷°bJ8C–DÀ€µ|S[%Š�ôÓ§Á³hZ×W5² ÚØ Èý50Ÿ~¢0�eÙ@Ô™íI_0 � {õv¨#ˆ?þÿÙ»ïð(ª5 àïÌ–l6!R …Þ{ U @š  ¢¢^ô‚í"J èµ¢R¼RDA¥I ½ƒ ¨iÒK¤%„„ômsÿØì°›ºi› yÏ3Ï–™rÎÙ33ßœ9³ÇIP*ó bèÖèï év b/Äj@ƃm6D_†éj¤ä4sǽ®j(Ö�ÊŽ `Ø}†§aº )9RJowˆj¼Mnæ€LFô«…¢]]ˆµü‹•G¹6M«*ñã­õéÜ:•€«¿Ü‚.À 6~¨�­·K¡¿­âïŠêÍ|qëTŽ|sî~dÞ×AŸa„B%¢n÷A—ˇn˜e„O-øÖö̱J4ìŠ3›¯âĺK¸rè2’³`È2³ºBÛý‰ej-kMDDDTÙ0Cå{b-vwÔk’$ddê!I”¢…(BTŠP Д„Q’`2˜`”L0M.*e‘òС´.@Ž>TŠJѲ6„*Zè·$ ª>-!6(z'¿ÊÁí`üãLoAJN7?Î:ÀŠ5ÍýÇ�CªAÙµ1 Ñ—L=ÄzCý ßv,×üDW(ÚÖ…á×sæÏõªCÞ<×tªGÛÀpðoH™zÕ} êÑL~lµ¢YM*% Ç.Át3P)¡h e×&@!ù*TÑ@ñHSÿ¼Ó­{ïÞŠŒ6wpÄÅ]…”;Å«#�àØOçqçì=˜¬Zí\Úw—÷ß„_Coù–!©€Vt­Ÿj�ê7q#úÒâ3¡tQ °©/ô†G`v½Y\ûí6� AxÞ§¯Óµ:Ô®J\>t iñP¹*Ôªõ -Ömt.î Æ1CTŽDQ„ æ_,%IʾuF‡,™:}…îXÖ)*…ZZ54êN *ˆbùÞÝ(h] ¸¨ •ðö)±N�TCÃ�£1¤jñÖE¥„²SC SÁý*ÚÖ…¢m]Ûð†y·RA]Hß6¢Ÿ'ÔOwË|!óPê‘yhUÊVµ‹Ÿ?.*ycª¨ Ò( /âÓ†¤ìX_ìéD¢€€&¾íà…JDÌÑ8Ü>¸³:& ˆíŠJõÃP?<ÿ´Qº(Ñïý°B×+¸­‚Ûú•¸<«4 ¸Ta0†ˆˆˆ¨Ò‡1 ÈY‚�Q ¸hcÄ ‰jW(¢ã[Ãä\o7³ûf)Ñ|Šùèf*8oòã^Í÷®ýé5‚Úø¡VX�\­nIªZÇúŒ:¸u2W~½…”Øô —^îÕ\Yhˆˆˆˆ*!cÈ)XnWR*•Pºz�© Æ8#•Ö …Bγrãéá~FñûŽ¡²ùk]�Ïüƒ1Z Òïe©ï˜ö£¢j]Ï|Ë›ÊUÐþmïø+ÉÅ{ÚV9qqWAë£aÁ!"""ª„Œ!Çž¬ÒGŒZ­F•ÀºH»ÇÄrBÕëÁÅÅ¥Ð<vHYªæéŸøÜƒ®€ÄúÕáRPÁ¹ºÀeü gþsC¨æQx tCü¥d»ûŠªVÏËÎå›[ÊT¤ºÐÒO U>|´5•ëÉHΓwFƒÆ<§–œ)ÇܸM0&¯<tØÚhÔ¼˜-ÎR:¼ hÔ…N§Ö*áì^éÓË+Øj-¯‡UV ÆSQ*•¨Ý ¾µ™Ζ7Õê¢nÃ&P*çRôÐBôfð®< ‚ù1ßZ»¢õvwH•rï{¨|’K€wH»ÇMDDDD/cÈ©NR� Zµjjˆ¼jì<5…A­#àëëk“WN±jZˆ!Uó|‚•ñVë1¤j‘1ZoT­ëY©ëìâ®BÕºž ă1T'pV'òyÝæ¢T*Ñ®cg(jva‹'¡¨Ù mÃ:Ê÷æ—wå¤4jˆÁU¡ð‚àÂÇ—yz»¨ ð‚\Õ®[“ò£Ö*QµŽ'¼ƒÝ¡Ò(ÚôRiðvGÕ:ž¼5‰ˆˆˆˆÌç½Lrª“¼ì~===Ñ©Ï`ŽJ’ÎæžŽIå0¿æèñ<==å<rZžn=ÝÌOYJÏ‚”¡tHFÓCÑÑo9ý)ÍO(R+!¸ª­K©·BÒúh õÑ +E¬T=téz²Œ0$»;úu¦:LT Pº( Öªà⮂K‰ˆˆˆÈƒ1ä'/’$Ù<iI„††"#|Ný².I§!HF&VÊyÊkH÷o…–]ú fÍš…¶hrª2¥u1 ˜­ŠK.ˆˆˆˆ¨r`0†Êçd¹€G\[kذ<==pô×�ˆwþ† »ÊÄs€ ×@š£kçn ´É›‚ò”ˆˆˆˆˆˆì8'¶ã{Áê³å½hõjÙƒ2{PPðÒéôG˜Ô”SÎ`Œå³õ«å}VV.\¸ˆ3Çÿ„ǽHIÏ@F–é:èl1SJQ„B)’ˆûYî2õ›¶@“&¡ÑhÌ|AÈÕ&gð…Á"""""z¨Õª0�I�ô�t� Ùƒ1{0Y ’Õ«å$×ú=ûF¶Œ¡ò“_똜·+I’µZ¦M›ÀÝÝWÖ´®P«Tиh¥7 Ko€NgßgéòûÖý>>Þ9–ñp¦iÎäLL¼‡ê±»óLKz¥eém¾Þ­jÖ µÉ¼ÞçÌ3""""""²ƒ1T®ò ¼äg9Ñ—$ ®®®0 ˜ƒ’…S(Ôᅦ¾%G^-ââîàÌÊ}EJ/WWW9}ìiÃ@ QÑ0CN%gg¾92*•• »k×ü´>~P«Uý­5ÖidýY­V9½T*e·%1øBDDDDDT2 ÆP¹+¨ELΧ,¹ººB¨ZRš}Á…Fí Õj $TôàBÎ@Œµ¢¦WhcszåLöCDDDDDTzD&9ƒÂú"±´ÔpssCP‹n0h| §[Õ tèù¨9 ‘£¥‡õ`½¬Š4ä·ÞÖßiµZÔhÞéŒ=ûËÁ«ÂZÂ0CDDDDDT< ÆÓȯ’œAÆõqoµÕò—¶j0Ú÷…Æç PX¿Ï+¸Q‘Ò« @Œå½9½" I¯´ïÿ,7nœgšôžˆˆˆˆˆˆŠ†·)‘ÓÊ«s_A P(УW~¯â…›çþ�b/AH½Q4BãY¾õQ·eGtèÐJ¥²À�ÂÃÔgL~Û£T*Ñ=¼7~w÷Ä­óæ™^õZuD‡ P( ÄQ Ïwíø^°úly/Z½ZEö ÌÔ�T�¼t:ý&55°×gË{Ëk\Üܼy©©©��wwwÔ¨Qþþ~ùöÀBAéWXzÙˆa`†ˆˆˆˆˆfjµ* @�=�̧5�0f&«A²zµœ|Y¿GŽ÷æóª|–Í` 9m@¡ q *㣭 ›¦°ta †ˆˆˆˆˆ*Gcx›9¥üž°d(èÖœ‚‚k@¡ t)NZ1CDDDDDT6Œ!§•W@°/°ßüJ2ÞÙäÕÊ%¯t*ê¶U¦�Qy`0†œZ΀Œå; ÿ`D^Óu\EIkù¥SIÓŠ"""""¢ÒÅ` 9½¼2–ï‹;¿‡5�0­ˆˆˆˆˆˆœœÈ$ Š 4‚‚ TŠàBim'1DDDDDDeƒ-c¨Â(ÊíIyýŽéÅô""""""r ÆP…Ã`Ó‹ˆˆˆˆˆ¨"ãmJDDDDDDDDÄ` ‘1CDDDDDDDä@ Æ9ƒ1DDDDDDDDÄ` ‘1CDDDDDDDä@ Æ9ƒ1DDDDDDDDÄ` ‘1CDDDDDDDä@ Æ9ƒ1DDDDDDDDÄ` ‘1CDDDDDDDä@ Æ9ƒ1DDDDDDDDÄ` ‘1CDDDDDDDä@ Æ9’I@T8I’ Óé ×ëa0`4!I’C×A( (•J¨T*¨Õj‚ÀÌaù`9©LF˜Rã!e$CÊL…¤ÏL‡•A�Q A¥ q‡àê ѽ* *˜7•¤n`ÃòÅüe³î r²ÿ…ß VŸ-ïE«WˠȔك€ €—N§?¤¦ŠÈ`0 33™™™N¹~J%ãª,,'Ny •SÒM˜’cî�Zˆž½j@pqcfUºu Ëó—y̺ƒ(ojµ* @�=��Cö`ÌLVƒdõj9à³~ïÍÇbù£åxÏ` U:iiiÈÈȨëêêê 77žL±|°œ8ãÝ+0&^¯ëªð †¢ZmfZ%­Xǰ|1™Ç¬;ˆl9"Ã0$Qƒ©©©0 f322 ×ëáîîΫ ,,'åLÊJƒ1ö<L™)f‰×!¥'AЀ­d*aÝÀ:†å‹ùË<fÝAäxìÀ—ÈŠ^¯Grrr…Ü $''C¯×3#Y>XNʉ”‘ Ãõ*caÊLáú HÉÌÈJX7°Žaùbþ2Y¶ˆ‹Á"«Àýû÷+t犒$áþýû<!`ù`9)tÍJƒáæHÆŠ{ )õæmÈJc†Vºu Ëó—y̲Eä8 ÆeKMM}hN´SSS™¡,,'fŒ=_¡1rÙ0êaŒ=Ï ­¤uë–/æ/ó˜e‹È1Œ!‚¹³´‡) o0–Æ+Û,,'Žb¼{¥BÞš”Sf Œw¯0c+iÝÀ:†å‹ùË<fÙ"*{ì!‰Xá e¯õpqqaGhNR>–-û[·nƒ èÕ«ž{nT‰òÆh4bäÈga4š°|ùwpuÕ°œ”)+­XOMʸy G¶"õâqîÝDjŸ�¸×k Ÿ°G¡ ¨Y®ÛeL¼ÑßúV²}÷E,_Ì_æ1Ë‘c°tS¥—™™Y¤é“’’ñóÏëqôè¸sçT*BBBгgwôéÓ …©¶ÍÝÝ™ìÀò‘Ÿ;wÉÍnׯßI^|ñ_vÿÞd2!==÷îÝÕ+W°mÛ¤¥¥�&OŽÄàÁƒP¿~=x{{ÃÝÝåÄLI7‹6½^‡[ëç#ñ÷í@ަ陱×{ ¿l€Oç¨>èe e¾ó‰Û¶IÇ÷@?Ñfœ[hcÔ|q:Ú*%Þ6…}frÔ ‰‰‰Ðét6ßùúúB¥R9dý¡×ëìšÖÛÛ...Ü9qùºÿ>Ö­[£GG\ܨÕjÔ¬о}û {÷nÇ•,ÓÒÒ°fÍ:üúëo¸{7îînhÒ¤ FŒ†:ujÛµÌ .bíÚu8wîRSSQ­Z5tíÚC† ¶yõ‘#GñÑGŸ��Þxã?èÕ«§ÍvNš‰+W®�ÆŽ} ôgÙ" Øñ½`õÙò^´zµ ŠìA™=¨¨�xétú#LjrF’$!!!¡H¯o½5 ñññyŽo×®-þûßiezÐST¾¾¾Nµ>sù�ÌWºV¬X‰½{÷�zöìgžy ÷î݃Á`D||<"#߆§§~øa™]ó|ë­I8þB‘Ö£aƘ=ûS–“2Ä¡¿ô«Ý÷û› z\ýz2Ò®œ�x4í]ü-dÆ^“§Qº{Á˜v’d‚{½V¨õÒ'ydnmøñ‡~ÎwY®AuQ{̬dA€ªng@T0¯KX7X¤¤¤âÝwßÇ… sS©”xùå1ˆˆègÝråÊU¤§§º ­V‹ÚµkåyEùüù ˜5ë3ÄÆÆÙ½Î¢(¢oߌûoˆbñîpgSvå+.î&Mš‚„„Ä<ÇØcƼÄcJ”Ç÷îÝÔ)Ópóæ­\Ó* L™2;†¸Ì#GŽâÓOgåyUhh(¦Oÿ�^^žcL&¦OÿGþ�2d0F~e‹*µZ €€€!{0f&«A²zµZ¿GŽ÷æc>&3Uf9¯JæçŸ×˘'ž†¾}û == ~ƒS§Nã?þÄñã¡uëVNµ%¹¢ÉòQ4+V¬ÄÚµN×®]�xþùg�wïÞ-ò<-WÊÝÜÜàéé‰À@tîÜ óæ-��L˜ð&8ˆ[·n!))iiiP©”,'ŽˆÅ¤Æ©ãÅÛë¿@Ú•“P¸º#äÙ·¡tóÀÕE‘æ¾·?ôIwQwÜȸ~×W}†Ô‹ÇqkãBÔúZ®yÝ;¶ Ô·�Úà­WôÉ ¸òÕdܸ„3ï ±-KžÕàÓ¾/ü"ž`G€E’$˜Rã!zø3³KX7XlÞ… .¢mÛÖ8qâ”ü׆ "66_}µ=zt·i!“žžÉ“§âêÕ«v/§V­Z˜1c:´Z­Í÷³f}†øøtíÚÙæÊvANŸ>ƒ­[·£AƒúïÉ}‘“•¯eË~@BB"DQÄ“OŽ@›6­‘’’Šï¾[†k×®!*j+ìêÕ«çúí©S§qêÔi¢GGx¬ñäñ‚ qóæ-‚€~ýú iÓ&ˆ‹‹Ãڵ둖–†yó mÛ6ù¶ÄKIIÁœ9óa0 ÑhðÜsÏ 88»wïÁþýƒ%K¾Å[o/p½—,Y*b:wî„ýëy–-"cˆ²OZôE{òIrr²ù£Tbäȧä[’† ŒS§N�îßOqºmäNÌ1å€Ü"föìO!I&NŒÄÞ½ûðüóÏâòå+xûíw�½z…Û=ÏO?Ž\ �xê©ò÷–`L÷îÝн{7�Ès:–“²#e$Û=mæí+H8º‚ "ôù÷à^·%’¢÷– —jÁ¨÷ÖBœžÒw¬Ê«ªu{q»W ñ·Mðí4 W2Æts]siÎ+öçsò]ÄíZ(Dø÷~Öþmd0¦ÄuƒÅ;æ€ìرcƒ³gÏÁÅEƒ~ýúà»ï¾ÇîÝ{‘ˆ€€i¾ÿ\½z:t@ppB—qãÆM9rûö@ÿþýäï‡NÂ0yòD»×9&&¯¾:ÿ}¶ØÁÖ1eW¾6¬‡€€jðóóGŸ>ZU¥¥¥bÖ¬ÿA’$ܽŸo0fåʟкu«c˜¿Î“Ç·nÝ‘#G�C‡Á /Œ’§oÙ²¥ÔÍÊÒåŒÙ½{Ÿ|kõ¿þõ<}´/� E‹æˆÃ¹sç±ÿAŒý/¹uŒ…¥ËÖ­Û±qãæìõoˆ Æ«… Ë1Cô*jö]ºtÆþýa0°aÃFôë×éééØºu�ÀÝÝ­Zµ(ð`�ðÍ7 åqgÏžÅĉæ«ã¡¡!X°`¢¢¶`áÂoäiT*%jÕª…_ü7nTfÛH¥“vƒQîÄrìáåå…zõê¢Y³¦xöÙ§‹4¿Ã‡Ûd±w:–“R ÆdÚÿøÍÄ£Û�I‚W›^p¯ÛYq1HüÝ\wèïÝÁí¨EPºy¢Æc¯É…&+á&’¢÷"ñ÷m¨>èå\óUj4ýt«Ýëzñ8®,œˆ{ì²?“ÉGŒ–Õÿ¥C‡öèС½õiLžÓ%%%�€æÍ›:ßÓ§ÏàÈ‘£òï¬ë%�puu-ÒzººjK¡NdSVi5pà�›Ï&“ 111ؼy �ÀÇÇõêÕ«ÿ æqÉ󸨱hyº^½zbõê58pàŒaÆ ,¬CË;~ü¸y#ŠèÑ£»U E@Ïž=pîÜyH’„¿þ:!_ ’÷K¢§OŸÁ×_“}̈ÿþwj±ûÃbÙ"cˆRF£±HÓ‡…uÀĉã±råj,]º K—>èó£U«–xñÅÁÓÓ³Ðùܾ‹sçΣaÃ�€A¥RB¯Ï½ÃiÞ¼êÔ©ØØX>||ð¾ÿþ[»¯u©di׫W8V¯^ƒ)S¦ÉßõîmnãëëƒÏ>›Yäy&&&ÊWÓáããS¢éXNJ1£·¿Æ” Ç��Þí"`ÒëpiÁ›0¦™[Ö˜ Yȼ}õ'.~½àÓ¾’¢÷"õü±RY_mÍ&æƒÛûñe²¬ˆiV¾i5cÆl:ô �sß ÝºuèQ#¡Õ>ÀÅÇ'Èˈ‹‹Ë~½ƒ¸¸;ò4U«úéÌ_çÉãë×oÈ“•+’§€sçÎá£>Á믿jÓÂ&§;wÌe¡Zµª¹žÖX³f¨Õt¹ûžJKKÅ·ß~'oã´i“áááÁºƒˆÁ¢'Eèë0GçOœ8-¼X»té2Μù¡¡!ΣiÓ&8}ú öï?ˆ† Àd2á—_~E£Fpòä©\ÓwèЃ�L˜0çÎGbâ=”É6RÉÒnäÈ' PˆØ³g¯œ1b�`âÄ)8{öT*7nŒÿû_ -tžÑÑÇѪUK�¢£ÿ²yJAq¦c9)E&û¯Øé“Ì2SV.Í}UÄX¸×keo›ï,·&éîÝ©ÛȺ˜fΓVF£gΘû³³nYñÖ[su{óæMŒýoùó’%‹àïïÇü­€yœšš./#:ú8Þ~;-[¶ÀéÓãÓOg"33‹‹îÝ»å{aÏò´F&w+:F“k:k‹-Éd’?ïØ±cƼȺƒ("“€È~‹-ÆÎ»`4ñ £°fÍOøþûoѾ};¤¤¤àË/âÀÎÃÇÇ5jÔÀ¡C‡`4qüø $%%£Y³¦yNo0è‘‘‘‰sçÎáúõ¨]»–M_ä\”J%ž~ú)|ûí7øöÛo0rä“òM,÷Jëõzœ8qo¼1111…ÎóÏ?£Ñ¶mk´iÓÇŽ+ñtT^Ìùoȸ}Rî–)ú{±ò£®~Ý„¿ß†sŸŒb²‘Ý&Ož€×aþüÏѬYS$$$âë¯Ëý™ÑßÇ*ÕƒM#F CXXh4´mÛ£F™o‘ÎÈÈÀߟÍwnnæ[³²r·Œ´~$·e:k&“ ¾¾¾r_2QQ[ò¼ØHD ÆPe?5*BGb©©iؾ}'� M›Öxüñ¡puÕÀ×ד&½%?½fãÆ¨çc2ÖÉÉ÷qúô¹6mZç9ýÒ¥Ë0|ø“˜0a ´ZW¼öÚ+EZo>Ð1å�®]‹Á´iÿÅ!Ã1`Àc0à1 2Ó¦½‹˜˜Ìœù ¢¢6`Õªлw/èõz,Zôm!åÅ„'N¢U«–hÓ¦Ž?‘g“]{§c9)í½¨ý LU^Õ��.¾ÕÑpê²\«N<º ±Û¿`~R’!5 ¦¬ �€ÚÛ¯Bl#ë'/®¢y½‹Úìßd2–x»YÇ8.­ jÕª…)StÒ¼ÿƒ Eßÿ-¢¢6 *jFŽ|�кu+ù»¨¨ EjÃüu®<öö~p‹r:µm~gÝzÛÒAo^ªU3ï¯îܹk|€˜˜¬¦Ë»œ|ôÑûøè£÷¡T*!IæÌ™‡ôô ÖD ÆÙîÌ앞ž.7»Ìù;…BA0ÿRR îìR’Lxä‘®�€'Náĉ“ ApppžÓ8�3g~‚·ßŽ„««+¦L™†K—.—É6RñÓîÚµŒ?~üŽ”�� �IDAT'Nœ´yJB^­`ÜÜÜ0zô �€¿ÿþ»Àù®[·Z­+T*5”J\]]±~ý¦bOÇrRÊÔ*ÝÓV©ß�½ m*u®iôÙ·#™tY6ß»7hS!¶‘uƒsóññV«Å±cDZqãflß¾Ó®áûï—�‚ƒƒ*]š9ÿ±IFŽ…§žz³gÿ/×8 ëÛFøŸx¸ó¸qã†òwgÏž³™þÌ™­aüýóoeݺu+yžûö°:†•°gÏ>9HÒ²eó\¿íׯ‚ƒƒP³fMù6í;wîbñâoY¶ˆràå.ªÜ�¥Òî^Ú«VõE@€?bcãðÇ"*j zôèŽôôt,]º:�ТEáOº¨]»BB‚qøðaܾ+7ÍK@€¿üô¤Û·c±dÉRüþû¨[·ŽÝÛHe_>-Z ½^ˆˆÞ=úy¸¹¹�ÒÒÒ°xñRìÚµ‹}‹éÓß7Ÿ\»»ÉÁš‚üøã*èt:<õÔ3òw+WþˆaÆk:–“RThÜLûgïö(~Ù€Äß·Á'¬žÓ$Ÿþ¦eYÈŒ½ú`‚ß–ï6R±ëg"Š"þýïј?ÿK|óÍ’"ý¶V­Zèׯo‰ÒŒJ¿|iµ®ðÇ… ±ÿA¸¸¸È­oW­Z-OgîO¬l×™œ#Û´iÀÀ�ܾ‹Ÿ~Z OOO4oÞ ýu?ýdž¾F¨W¯.�`ÿþƒ˜;wjÕª…O>ù...ïU«V#55 K–,…^¯CPPöìÙsçÌž®]»ÂÛÛ;×ú6hÐ@~?bÄ0>|W¯^Åλбc´k×–e‹ˆÁ"@¥Råj~YÐAìøñãðÞ{ ## ~cóèiÀÜÃü¨QÏØ5¿nݺaÅŠ²ßwÍwº£GG||<ÒÓÓñË/¿ÉÁœ¢l#•}ù°\}²Ä�ZÁìÚµ;W+˜ÆÚü62rÖ¬Y‹k×þ$™›?ñİbOÇrRÊ WO é¶]Ójj§ó@$ü²×–L ¹q¦¬ $Ÿ8hóo—ÁpñÏÝѳB[ÆŒTdܼ×ö=¶6ýÚs~{øm©ØuC~òê”R’ÌW¶sÖ íÛ·ƒ‚‚jØ5ïêÕñÚk¯äºE0w*Þ¤Iœ;wYYYvÍÏßßÍš5-ÑI똲+_¯¿þ "#ßFjjvìØ…;vÙŒoÑ¢ ço›5kŠ‘#ŸD```‰×™œ# &Lxï¼óÒÓÓñå— sw´˜0a¼\ÏìÝ»z½.\Ä•+WѨQCxxx`ܸ×1cÆldffbÑ"Ûàmpp^zé»)ãÇÿo¾9ƒóç‰ æ¡Jw–-"c¨²S«ÕEš¾I“ÆøòËùX»ögDGÿ…øøx(•JÕ@—.0pà�»çÙ½{W¬Xñ4¨€€�ddä½S>yòNž<QQ­ZU<ñÄp„…u(³m¤â¥¥…‹u Æ"¿V03g~Rè|Ûµkk×U${§c9)]¢{U‚`÷ÓªzYqÿ õâq»¦w¯×Çä9λmâ®ÃÅÿ½\äõöj×Ǿ@Œ @t¯ÊŒ.ÅÿKHˆù–ÔéÓ?———͸óçÏÃÍÍ ¾¾æ>ââî`þüòø_~ùµH˲Lÿúë¯Úô€ÀÀ�¤§g`Ù²å¸qãfž'@ýû÷CÛ¶mÊ=ÍX¾ V«V-,X0k֬ñcǵÚ!!ÁèÙ³úôé Qó Æä÷�æoÅÍã êcîÜÏðÓO«qüø Ü¿žžhݺ5žxb<‘³OŸœ?uêÔ¶iuݱcfÎük×®Ãٳ瑚š ?¿jèܹ3†}L>¶)LíÚµ0|øãøñÇUHLLÄ—_.ÄäÉX¶ˆ`y´CÁß VŸ-ïE«WˠȔك€ €—N§?¤&g•ššZâ+œÎJ£ÑÀÝ·8¢|Lš A0cÆÇÅo·Þš„óç/8MÆ 1{ö§,'dŒ»�£­c�@2pkãB$þ¶In ‘;"·Ë`“«£_ “^‡¸mKq/z )‰v-[åY>íûÁ/âbá÷á+¼¡ð¯ÏL.Å}‡N§ÃçŸÏÑ#GshýýýðòËcä�ˆ$Iøâ‹/±gϾbÝ¥T*ѳg¼þzÞ¿¯\ùV®ü)ßß»¸¸`åÊeù>þ–u M˜¿<þdÙ¢‡•Z­ @@À=³“Õ Y½Z®ÐY¿GŽ÷ Æ€Á`@RRÒC¹m^^^¼×ö!*S¦LÃéÓg œ¦Y³¦øä“XNHÊJƒþÚŸEþ]fì5$þ¾ ©çAw/μã÷ö‡{ƒ¶ðíÐ/Ï[“MU³-7fr%Ûwp_ÄòÅüe³lQeÇ` ‘ƒ¤¥¥!##ã¡Ú&WW×<o™!––“Òg¼{ÆÄëÕ6)|‚¡¨V›™[IëÖ1,_Ì_æ1ËUfŽÆðÑÖD0÷óñ0EÞ•J%w`,,'¤¨V¢¦ÊC³=¢¦ 1•¸n`ÃòÅüe³l9àx‹I@dæîî^è“m*Ax-ËËI9P4€ ¨øO}*(0C+iÝÀ:†å‹ùË<fÙ"r cˆ²)•JxxxTè¢ ðððàU––“òHW7(k4©ÐA¡2oû‰©”uë–/æ/ó˜e‹ÈqŒ!²¢R©àééY!wJ¥žžžP©TÌH––“ò:tõ„2¸E…¼eIÔT2¸WOfd%¬Xǰ|1™Ç,[D>n´ã{vàK•REêTœ±|°œ8ŸŠÔ©/;ë­Üuë–/æ/ó˜u‘->M‰¨œ dff"33Ó)×O£Ñ@£Ñðj,Ëˉ“’²Ò`Jº Sr,$Irªu¢g�D¯¼-©’Ö ¬cX¾˜¿ÌcÖDyc0†ÈYN¨$ :z½ƒF£Ñá'V‚ @¡P@©TB¥RA­Vóþb––“ŠÂd„)5RF2¤ÌTHúLÀdpX9•Tw®žÝ«¢‚ySIêÖ1,_Ì_æ1ë"cˆˆˆˆˆˆˆˆœ’#‚1ìÀ—ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆÊѱcÑX¾|$I*÷u¹uë.\„¤¤$fÌCŽyMD¥)++ ݺõÄ‘#G™Dvb0†*¥µk×!,¬‹<DDôÃk¯Ão¿.—õÑét ë‚M›6—Ù2}t ,XÈÌw°>}µ)k–áÎ;L'9 aa]ðÆoæ—˜˜ˆŽ»",¬ víÚS*ÿÇ#G~dž ›¡×ë¶m–¡wリ8q2®_¿�¸té26mڌ۷c ×èÑcðÞ{°ÀÁ´iï ,¬ æÎý¢ÐicbþAXX>|¤T–}øðüôÓ*ùsQòšçÚµ„…uA§NÝrÊ>‚°°.¸qãFžŸó³nÝÏ ë‚çžÍæqc™7FG‡ hݺ®\¹*§ÕéÓgrMûùçóÖ#FŒ,µõ]¿~8(^°`!† ÆÂK Æ9«Ù³gà믿DdädxzzàÍ7'bÆL*U½°téb›ÁÇÇ'×t&“‰‰å$||¼qôè¸yó¦Í÷[¶lEÕª¾¥º¬W_‹uëVA­V;dÛ‚ƒƒår8uj$.]º‚ñã'Âd2¡[·®Øºu35jÈBPÊîß¿C‡~EXX{lÛ¶Í!Á7kGŽüŽU«ÖÈŸ™×ÎiÓ¦(Ô¯_žžؾ}G©Ìsóæ­ kóçÏãÂ…‹Ld7–‰ß~;‚6mZÙìË||¼ñóÏëm¦ÓétضmªU«ZªËÿùç8xð3‚*c¨RkÑ¢9Z´hŽ=ºcúô1hÐ@Ì›·��ÌWÁßyç]ôêÕáሌœ&·høþûåèÖ­'233�{÷îGXXDEm�èõzôèÑ_ý|ãÇÂØ±¯¢[·žxê©gqæÌßù®Û¶m;ðä“Ï [·ž>ü)lܸÉfüºu?cĈ‘òø-[¶ÉãÒÓÓñá‡Óѳgúöí/¯•oo4jÔÐfP*•X°`!FŒ‰¹s¿@÷î½°mÛv |õÕ×0`0ÂÃ#ðæ›äV � O¥£NÚÀúõþw’$aÆÍèܹ³Í´…åIaÿÇ bР!�ò¾Òýá‡Óñüó/ڌ߱c† {½zõÁš5kqøð<ñÄÓèÖ­'¦L™*×ayÑh4r9ìÑã<ýô“¸qãââîäZþíÛ·1aÂ$DDôCÿþƒðñÇ3žžžkžééé=z ž}öÜ¿Ÿ(Û·ï€(Š?þ $%%ãàÁ_lÆÿóÏ?xå•×Ñ­[OŒ12×þáÖ­[˜2e*""ú¡gÏLž‰{÷îÉ'7aa]°|ù Œû*ºví§žzV¾jÿá‡Ó±jÕjܾ‹°°.Ø»w¿M^/Z´ݺõDZZš¼¼-[¶!,¬ ®]‹�lݺO<ñ4y$Ï=7š·"”£ÑˆíÛ·ã‘Gº¢sçÎØ¸1ªÄó¼|ù Î;‡çž…êÕ«cãFÛ–˜>ýS„‡G "¢6l؈Çóæ-§9sæoŒó ºwï…¡CGà§ŸVÉ·Ufdd`Ö¬ÿaР!èÕ«ÆÿPï“*ëq£=ù|øðtìfó]—.]°{÷^›ý®]{ ×кu+›i J»ÂÒcÈa¸xñ¢\oY·*Û¾}'| ={F`öìÏyዌ!rVÆ Ezz:þúë$IÂøñqîÜÌš5Ÿþ®^Áþó& ºw:ÇŽE�Žý�ðûï��Nœ8‰ŒŒ <òH7yþkÖüŒÑ£_À7ß,„(Šøàƒéy®ÇÁƒ‡ðþû"<¼–.]Œþýûá“Ofbûö�€³gÏaÉ’¥xúé'±rå2ôéÓ}ô1.^¼�˜5ë3ìÚµ‘‘“ñùçŸaïÞ}HNæ ’3ºqãÒÒÒðÅsÑ©SGÌ›·�6lÄÔ©S°hÑBH’„±c_•O€ O¥Ã`0¢OŸÞˆŠŠ‚N§“ÿÛ7oÞDÏžÝm¦-,OÊâÿøÇbΜÙ=úÌûV®ü3f|ŒO?Ž_=Œ5kÖÙ5Ÿ»wïbÏž}pwwƒ¯oîÖZÓ¦½‹ääûøúë¯0gÎÿpæÌߨ·o¿Í4YYYxë­IHKKüyÿƒ‡‡ P6oÞŠŽ; 44Mš4Á¦M›lzo¼1wïÆcîÜÿaÒ¤·ðý÷Ëm~ÿÍ7K’’ŠùóçbÁ‚y¸xñ2fΜm3Íòå?àùçGaõêQ¯^L™2 7oÞĸq¯£GG Š"6mú;w´ùÝÀ`0lòvûöíhÞ¼jÖ ÅþýðÑGãñÇòeKѱc¼ùæÄO ©è~ùåW$&ÞCÝÞW¯^Å©S§K4ÏM›¢àãã-š#<¼'vî܉¬¬,yügŸÍÁöí;0qâÌû98ˆ»wïÊãccãðúëoÈ-ê^~y ,Xˆü �°dÉwصkÞÿ],_þ=Ôj5V®\ÅãÆ‡ì¸±°|¾yó&nܸ‘G0¦A° îlذݺuR©’¿+,í KÅ‹¿†§§ÚµkƒM›~–÷Cqqwpüø_øàƒ÷0|øãX»vöìÙÇʆŒ!rF–Û’’’qêÔiœ?o¾9­ZµDóæÍ0q⛸víþüóBCC‚#GìLŸ|ò üñÇŸ$ ¿ÿþüýýаayþ=6íÚµEƒõ1tè`ÄÄÄÈ'zÖÖ¬Y‹&Mšà¥—F£NÚxþùQhÕª%Ö®5Ÿ`5jÔ[·nÆÀ TªP£F H’„«W¯A§Óa÷î½1b8z÷G£F ñî»ïÀh42ƒËɪU«mî5Œœ&Óh4˜2e"š6m‚*Uª`Ó¦Íxá…çЩSGÔ©S‘‘“‘ˆß~;ƒÁPàx*=&“ ƒDrò}ùÀmýú hÑ¢9‚ƒƒlN¢ Ê“²ú?>ñÄpaÈÇ`0Þ5k†¢S§ŽÆ?ÿäeúâÅ‹rY8pŽÿ ~ø~ž·II’„ÔÔ4¤¦¦¢fÍPüðÃ÷èßÿQy¼^¯Ç”)Sƒùó?‡··7 OΟ¿€‹/""¢7� oßÞøãcr-'OžÂ­[·äýMÛ¶m0vì¿mæñî»ï`Á‚y ª•J?\ºtÅfšAƒ!,¬9ƒ»v퇇üüüáïï???¸¸¸Øü.00�íÚµÁ¶m;ä ݱcÇ1xð@�æ+ê;wĈ±cÿêÕ«Û\Y§’‹ŠÚ‚:uê víZhß¾||¼sµd) ½^;v <<¢(¢oߤ¤¤bïÞýòø;waذÇÑ·o5jˆwÞ™fs\²}û("¦NŒZµj¢wïpôë×›6m± Èê’’*˜5k&OžÀãÆ‡ð¸± |>|ø‚‚‚dóWWWôꎟÞI’péÒeœ:uôð ÓúÂÒ®°ôðõõ…ŸŸ?üüÌuœ(šOqU*&N|­ZµÄË/§§.^ä­zä<”L¢îÞ�x{{!66�P³fMy|:µ�qqæqݺuÅ¡C¿àúõë¸{÷.ž{îlܸ —.]ÆÑ£ k×®6ó÷òò´9 ·œÌ)•¶ÅØØ;hÞ¼™ÍwuêÔÁ��ñññ˜9s6þü3¾¾¾ 1ïüŒF#’““¡×ëQ³fˆü[OOO›e“cõéÓÏ<ó´üÙÝÝÍæ½å !)) ™™™˜3g>–-[a3¸¸ØBÇSé‘$ èС6oŽBXX{:ô+Þ~{ªÍt…åIYý]]Íõ‡õ§…B¡€$åß [­VcÉ’EHIIÁ+¯¼Žðð¹®fZ¼ÿþ;øòË…7Î|u²]»6xãÿ 88�ä@U@€?1X½ÚÜWKdäÛEQn&µ/½4ZÞ÷„†>('5k†ÚÌcÓ¦ÍøþûHKKEPPÒÒÒs5· ô·9 ªZÕWžwaŒiÓÞA\\öìÙ WW ÂÃ{fð.!))>:Pž>1ñBCƒ™¹¥$!!‡ý �èÔÉÜ2Âd2!*j Þ|s´Zm‘çyðà/HJJÆš5k±nÝÏVÿëѯ_$%%A§Ó¡NZò8›ú)66))©0`°MÞ[‚·Ï?ÿ,2331cÆ,Ü»—„úõëc̘ó­SxÜX1 Ëçß~;œož2[¶lÅ_À¾}P£F ´mÛÆ¦O${Ò® ôȯÏ5OO›´Òjµ0xq’Œ!rJëÖ­‡V«EË–-pþü�Àµk×��¸zõ�Àßß|ÀûÈ#]±bÅعs7Zµjooo´mÛÂÅ‹ñÚk/k=ücóÝ•+Wäå.^¼—.]ÁÏ?¯†——ù�à×_—w jµW®\“{ïÞ=$%%3ƒË‰——7êÕ«[ètžžžÇÃsÏ=c3N«ÕB©T8žJß!!2òmlÙ²nnZ„‡÷@BB‚Ýy¦P(Šô´4fddÊßÅÇÇ—ê6…††Êåñå—Ç`áÂE¸pá"êׯ—kÚ   |ðÁ{P*•¸pá""#§aæÌÙ˜?.� $$ï¼3¯¾úÌ™3&Œg¡ÉA§ÓáÀƒhÞ¼¦L™$?yòTDEmÁèÑ/ÀϯZv=Õ«W—ß[Ÿ¨üñ ¼ñÆëxòÉ'��}ô ŽÿËfY—/?øMrr2âãìî$³[·.ðòòľ}û±{÷>DDDÈ';µkׯýû)˜;÷3›ßX©d¶n5·2š3ç3øùùeçç¼óλصk7TäyFEEA¡P`ùòffik±aÃF\¿~þþþP(¸qãAGå©©©6·§XÊæwß-B¡¿�àîîŽ×^{&ŒÇíÛ·1kÖgˆŒ|»woÏ0àqcÅ=n,(ŸM&¢£ÿ°aç¹nM›6A½zõ°oß8p�Æ •Ë…¿¿_¡iGô0âmJT©8qRŽÔGFNæM›ñƯC£Ñ Y³¦¨W¯þ÷¿¹ˆŽ>ŽãÇÿÂÌ™Ÿ!44mÛ¶‘w0U«úâÇBçÎ��;wªU«áîî–«s²ü(•Jˆ¢ˆóç/"99?>§OŸÁ¢E‹qñâ%|÷Ý2DGÇãµ:ÀÏ­[·qéÒeÌ›7_þ^­V£wïp¬]»;wîÆÙ³çðá‡Óö¤*>•J…ÇŠmÛ¶!:ú/¤¤¤bË–mx饗‘’’Rèx*}]»vAÕª¾øâ‹¯Ð·oß\ÿ£Âò¤¨ÿÇZµjBE|ùåWˆŽ>Ž+~Àߟ-³í{â‰áðññÆ—_~•kœÑhÄàÁC9 W¯^Ëî°S€»»»<MãÆ Ñ¬YSLšôÖ®]‡­[·³Ðä°ÿA¤¦¦áµ×^AíÚµäá?ÿyqqwpôèïhÞ¼‚‚‚ðùçó}þy ‹+ÏÃd2Aܽ›€›7obçÎÝØ¿®eíØ±Û¶íÀÙ³çðÞ{@©T¢W/së–*UÜ‘ˆ'N"555ÏýУ>ŠÍ›·âìÙ³xì±'ÿÇÃåË—µÉÉ÷qòä)¼øâXœ<yŠ\J6oÞŠvíÚ ,¬ƒ\Fz÷Gƒ äŽ|-·—8q YYY¹>[»sçŽý/½4ڦܽüò¿¡R©°qcÔj5ÂÃ{`Õª58xð®^½†?þTnq�ýúõV«Å‚_áλ¸qã&&OžŠµkÍ-m¦M{O=õ,Nž<%?!L«uµ™+þqcAù|üø_0™L®ûСƒ±zõ$$$ÚÜêjaOÚÆÝÝ /^ÆùóØI/UlC•Ú„ “�UаaÌ™óÂÂ:�07ÿŸ3g6æÌ™‡I“¦@’$´k×ãÇ“¯ö‚€.]º`ÆòNµS§ŽøôÓYèׯÍU¤‚ˆ¢ˆ#†cýú Ðh4xýõWðßÿ¾eËV`ÅŠ•ð÷÷Ç”)ѯ_�À˜1/"!!¯¿>žxé¥Ñò=à�ðÖ[ã˜1c&ªT©‚1cþ˜>q§"7î5¸ººbÞ¼ù¸?!!!xíµWä+¥…§Ò%Š" ˆÅ‹¿Å!ƒ‹•gEù?V­ZS§NÆ×_ƒ·Þš„Þ½{!""¢Ì:JÕh4xá…ç0{ö爎>n3N¡P`æÌO1oÞx饱P(D„…uÀøñãrÍgÀ€þ8}úo|úéLÔ©S Ôgá‘O²7£zõê¹n!èÔ©#||¼±iÓftì†Ï?Ÿ…O>™‰ñã' $$¯¼2'N�T«V o¿=ß~û֯߀víÚ wïÞrÇŸ£F=‹;w⯿N" �3f|,÷á0hÐ�>|¯½6&ŒÏ³Î<x�~øa%êÕ«g“‡=z<‚·ßŽÄòå+±dÉRøúúbÀ€GÑ©SGfp)8yòþùç<ÿü¨\ã|³gŽË—¯ I“ÆhÕª%>ùd<<ª }ûv6Ÿ»ví"ÿnëÖí$ }úDØÌÏÓÓ]ºtÂÖ­[1vìK˜4i Þ{ïC(• ¼òÊXœ={Nž>00óæ}Ž/¾øcǾ 77-ÂÂ:`øps+ˆñãÇaîÜù˜2e*RSÓФIc|öÙ¬‡6SY ÊçÇ¢uë–rKº¼ôéyó cÇðññÉs{ J»¼úÉÉiôèðñÇ3ðâ‹c°bÅ÷¬X¨Bìø^°úly/Z½ZEö ÌÔ�T�¼t:={–$"""*:ݺõÄÔ©“1hÐ@&IÎ>HúôyC‡Á˜1/1q¨P#FŒÄСƒå[(‰jµ* @�=��Cö`ÌLVƒdõjéÚú=r¼À–1DDDDD•Ò7ß,ÁÞ½û1qâ›ðÇÖ­Û‘œ|ßî[CˆV¯^ÉD *&cˆˆˆˆˆ*¡Ç‚Û·oã¿ÿ}ÉÉ÷„wÞ™†6mZ3qˆˆÊoS""""""""ÊæˆÛ”ø4%""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""ã™äu�� �IDAT""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆH鈅Ä^û&£‘©MDDDDDDDNKT(²‡c‚ƒª’‰¹JDDDDDDDÎKpÌ D¼M‰ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆˆˆˆˆˆˆÈŒ!"""""""r cˆˆˆˆˆˆˆˆˆÁ""""""""b0†ˆ¨$Ib"Q‘0CDT‚ 0ˆˆˆˆˆ¨H”L"""""¢Â±E,Q¥ø§;d) Æ•Ó興ÈÙå×´2¶ µÞoÛ³ç~ž¨¢V|ŽY ƒ1DDeppfïX~Ó ‚`3.çç¾/î·e^ö./¿ß”t½J:ßÒ\{Ò» e”U•´”U™²w{Q¦‹³½Ž(Óe•wŽú¯9K}ä¨ÿZi–éò¨ìYÿ¼æe ¶H’T`àåaÊX§‹Éd²ù¾°¼Ìk4ïn&b0†Á"¢R Àä ÂØwŬ ƒlÉ® Miž´ÚsÅ/ç÷ùý¦¤ëUÒù–溔4Ê*JZʪLÙ»½Ž(ÓÅYž#ÊtYå£þkÎR9ê¿Všeº<ê#{Ö?¯yYaò ÈX‚8k@&çþÝŒ1™$»ö÷ùˈȹå</+ Æó�8¯4I‚Õû²mÂ\Ú-¬ª ›oÎi {-î:”d¾¥µN¥‘îeµe‘.ewÎ�VyËtIæW™ËtqÖ±´Ëki–éœÁAäïA€( •"¨` ÄXöñ–�Œù½ &Éþ}=U°`Œ¨`0†ˆÈ™Î 2ò+$›é‰ˆˆ*"Q! ¢”1™›@Ž(ŠòûŠ ÉyK’$I0M00šŒ00™¤ìW÷ñDm½Ç` ‘Ó¤Y_%“$Èd&É$_-3m¯–ñ@ˆˆ*îI‰(·ˆEQΈ¢…BI2ÊA™‡¥µŒÜúÅ$A¯×Ã`4À`0Â`4ïûMä}½õSW$ÉÜ'̃WKË£œßçÝwŒõáB^Ó[ÆçümÎà Ëxëõ�„|—ß|óZ'{Çç\ç‚¶Éž×Âæ›ßøœãrÊo¼£Ö©°üËù}^ËÎo¼õòìYw{׫ ßVf‹“VymS~e2¿ß5JÞ¦DD䘼‚1FcvàÅd„Á`>H³¼éõ†2ë#€ˆˆÈ‘,…BQ T*¡PX1 Eö Iž¾"er^p1MÐôÐéôÈÊÒÁ.ZO¨5Z�Bž'vö§iÁ'˜Å™OqæQ¿/(ÐQ”u(îoK²ì’Σ4ò¯$éç ùÿ°–?GÕa ÆÙq€Ø6Y6 0 Ðë ÐéôÐLP¹h (\ &ä솽àŽ-{Áê³Pè8û;M,h~v§B¿ÉoþŠ×½”} +eïh…|Ö!ÿùžÞB!énÏ| [§œi«íŠ‘î¶ó3ÀEÌ«‚ÒJ*0-Š6G”iä³,û:-<ï¬Ë`é”é¢ý— .×yÿ®ð2]´´Í?ïrÿ?Q†eºheðÁ|¤¦EQÒV*Ãt/n=-˜EIoQ4XŒF=²Ò³ RŠP©”0©LPš”P*•�D�&ˆ¢èðšÒÞç›L ó>>##P¨àãQáQ!ò" 1CDTÖd9Ÿ¤` Äè zèõdfé (Ôð „ÚÅ‚|ï|IOÞJe ò=A-ÙÉIé­[ÎN$Ë+Ÿmס<ÓV'“N–lƒ9ƒÈã$®¨ßå?Ïœå9ïæõË´ÍI»s<aÆyÊ´=yWéâ¼ëæ\ygUg›LÐë2 CfŒF#4ÈAs=.»"d´~5Â`4_l1J"ªV ‚R­ (²·ÇHDÄ` ‘ÃÐ,öYвtz(]ÜàëATBDyZg䌖u*Ïus†uÈYÖ,AógKPÄÞ�ˆPêß=X¶`µNÖiX>·%8ó ‘3¬Ó§xËf}TÀú)Dh´UP­º+â®#++Uî+F¥Te×R… ÄØÞ¢ôàvdƒÑ›'J9CDTZŒ!"²ó@íA1Fètz@Tg7[VÙœÄ ¼dFÅ`4³›Åë+TxK F©Tf÷%Qœ–­nôF ©Y F Z®*¢ ðJ4‘Jøúãî­+ÈÊÒe÷'cîÔ×d’ä€L…ÝßKæV°D¸h´DV@DTúŒ!"²çÀÌdÕtÙ`€Þ`DÕê¹1DÅa2™™™‰¬¬,˜L¦Šyr&ŠpqqV«-úI˜d¾ Bg0áÏ=þŒÉBºÎ„�OºÔÑ v5%ŒÆ•û¾ÐòߢB O_Äߺ½^oîÔWTTÈÛ“òª“-aPH‹˜´´4ÄÅÅ¡fÍš6ýå9w—™™ ]–’$¡ŠG¹Sn½^掻•*%áâ¢&£ pѸÈzSñ0CDT„ƒ3s§~F¨\\¡R»2Q¨T deeUèN!M&²²² R© V«‹öcA‚Þ !úº˦ÁÍE@€‡OdâÆ=F…iê«bA!*C–Ûtôz= L&sg¼–VoyTj ”j FóS¦ È«Ÿ8ëÏyM¯ÓéË—/#$$„Áª@ûl#n\¿‰µk×B­VcôèÑÐjµ0¸qãþùç´k×Z­;wîBݺu‘––†Ö­[#==ÑÑÑhööÞìIŽë¾÷üœsr©­÷F/@£Mp§D¢D‰Z,YeZ²hËö½£¹z˜˜ëˆyð¼ÎÓüq}ïÓ8ìq„^Y–­…&EÒ’¸I$A�7l¥ÑÞ»kÍÌsæ!«ª«FƒØß'"»ª³2³²NžÌüoþ–ýû©EU¶oß&^áŸcA6hœ9\ói™6i޹ùW£Åq¼®ÑiSê5³2d§Qv¶ñ4º1µöÍÕ9]Zëå{ilk£Œ´´{„ïûÍïÝÈù¥«pðtĉé˜l yp$¤[Þ=Såýs>[»Ls_[Ûêf+£Û¸F´¶s#|c­åûÿI~Cë±–k‘\Gšç…ÇÊóc#ç°µ–R©DE+<ô´Öø¾O.—[†˜n[£­EÍûäBE¼ú꫌ñõ¯]„ác,ó ólÞ¼™caa‘ƒ255…çyŒ111Á¾}ûpÎ133ÃÁƒ9zô(wß}7KKK<÷Üsd²!ò'L>Ÿ—ûˆ1‚ W׸]ËØµÖ‚u ¸å]±…›k µä¯ÿß¿!—ËñÇò,‡bi±È—¾üE6oÄó<’$¡Z­R­V›O³‚ h¾o„ÛYkI’c Aƒ¨FØT&“Ùð@c-1h½ÁLExžGœh¢$M^Å¥°JÕˆJÅ!ZkΜ9COOOsß¿íf8Ž¥R‰ý×套^B)žð¾øÅ/ÒÙÙ¹b¹r¹LµZ%‚ À÷ý˾–4<Â0ü„¹z„Ûi`U*•¨Õ"l²,ô/ Ìf³ëžÃËë×Öü¬VKC …Bs;Î-ß/æUr;ßsüö·¿å¡‡" Cé„­wÝH¦¦¦øøãxøáGxçwxóÍ7ùÁ~ÀÉ“'Ù´i‡âÈ‘#<þøãø¾çyüâ¿@kÍÞ½{)•‹7Í=XÄA„;@˜ÙÈÀY®6¯þúuΞÇó<^{õu¢(âµ×^g||œÿý¿þottt033ÃsÏ=ÇÙ³giooçÀ¼ñÆüà? \.“$ arðàAjµJ)Nœ8Á׿þu2™LsàeŒ!Š"þéŸþ‰;wr÷ÝwÓÑÑAWmpÕðú‹¿ø ¾ò寰gß~zTHw&¤¿3àätLOÞ0Ø®ùèŸcNeøòW¾„ïûüìg?góæANž<É×¾ö5zzzPJ5äï"ÒÒÒƤž5Ùl¶ùÝù|þª>ÍvÎñÓŸþ”cÇŽñ—ù—T«U~ò“ŸðÎ;ïðøã7 Ö……~ô£ñî»ïÒÕÕÅ÷¿ÿ}ÚÚÚšâL†ÍBÙlkÓd¢¾ï7½²Ù,/¾ø"Åb‘ÇœÞÞ^Â0qøæÅ_äå—_!‰¹Ì<_óÕ¯~•/|á ë®Ûö a§¦¦Èçó‹Åfßj$_-<¬õàâN@)ÅSO=Å›o¾ÉÝwßM>Ÿ—N(ÜRý7B|ßÇC¹\Âó¼f˜ñÀÀ�[·nerr²¾l@¥RáøñãtwwS©Tؼy3ÇŽ•Æ1FAnovíÚɱcÇñ}Ÿ;w019Éèè>>õ©GÈd2M¯­B¡Àg?ûYöìÙÃùóçI’„¹¹9>üðC¦§§Ù±c/¿ü2Q1::ÊØØ?ýéOÙ±c¾ï³°°À–-[8yò$³³3|øaÂñãÇ帪qS,–8uú ?ýÙó|þ‹_á‘î휩õ2[ÊsßVŸ/î 9ô+¨ÖjͼMJA¥RallŒçŸžÁÁAxóÍßp÷Ý{0ÆpæÌÚÚÚØ½{7?þñÙ½{7Åb‘ÑÑQ¦§§8pàÀU-xûí·ùþ÷¿ÏÐÐÖZxàΟ?O±X¤½½çóóóÌÎÎrÿý÷“ÉdXXXàw¿ûlÚ´‰½{÷røðaæææèìì$ CN:ÅÎ;9qâžç100Àââbó¸îß¿ŸÈÊ;x`õ裲gϬ]CŒÑM±òRçb#tnaaçžûŸtt´³°°À·¿ýmúûû›Ë]Ì d¥gÌíßæ¾ï3::е–—^z‰oûÛª$Ü2cضm„8~ k-aòÌ3ÏðÌ3Ï077Çðð0ÝÝÝär9î¿ÿ~zzzÀZË–-[˜žž¦¿¿Ÿ®îNy@)bŒ µCî1ÂÍÀæ-›ÚBŒlapófîeëðp3G‹sŽjµÚ°çóy¬µ,,,pôèQÎ;G©T¢££ƒ$IÈf³d2|ßçðáÃô÷÷sþüy²Ù,cccÔjAÐÖÖÆË/¿Ìƒ>x•O®å°©¨Q).0Ø~’.}–'<ŦΠY_q¸YÉ,Aë„÷æ‘GÁ3>m…vþýß_à«_ý*§ÆNqàÑ>r˜S§NqüØqþËäĉ“<õ…/räÈŽyŸ·Þz‹?ýÞŸ¢ÕÕ8år9&''¤V«1;;{AÎŽB¡ÀÞ½{ãôéÓôõõñ£ýˆÁÁAΟ?O!_àð{G°ÎñÖoßæž{î¡R­²´Xä݃¿ãÛßþ6µ¨N‘Ëå üW^ù%åf||œ>øgÓÌ-i5Øï~zzz.qŸ[RÂ0¤§§›_|‘Ï}îsM¯9ñ ]‰R ß÷Ù»w/›7o!F¸åúo[{÷Ý·ëFktýaK咽f.º\. „ž.”Ö( £³½¾íÍí "Æ‚ ÂmÉá÷säÈ´ÖìÞ½›ÁÁAÆÇÏ‘ÍæÈå¶Òd2úûûÙµk333”J%Ξ=Ëôô4žçELNžÇ9Goo/###:tÏó8yò$Zk*• JA©TÄZÛ|®²9ˆB£P e†Î¶<o¼ñý¿ÿ Sü)Ξ9á߽ÇððpýÉ¿¢Z˜C+NÑÕÕM>_`v&W©T±ÖÑÙÑÅÈÈ6<Ïçÿñ©U#FF¶¡W9áèSO=ÅøCN:E¥Ráµ×^ãÉ'Ÿ\á±²´´Äää$¹\Ž“'O²}ûözööv&&&™Ÿ_ »»›Z-"I,ýƒlÙ2DµZc~~……@±yó6mêåÔ©Ór’Üá ÓÙÙ…[ν‹6ÐÑѱ¡YƒR©Äää$O=õMWE¯M6›%›•êŠÂ­'ÆxžïBo×¥ª¥lµˆ1‚ ‚p§³T,²´T¬ç@)R,™›£X,‚shm( ŒŽŽ²iÓ&úúúèîîæÑGeÓ¦M<øàƒXkéé顯¯ƒÒÛÛKoo/�Üu×]ͼ2…Bb1MÌ733×¾ô¥«þ›´ÑÍõF’áÂ0drr²™ƒa÷V+œ9s†ÞÞ^ž|òIFFFšÕ{ì12™ A000Àý÷ßO±XdhhˆÁÁÁfâÁ¡¡-8çxâ‰'ÒÜ2×À¸}àèïïç½÷Þ#—ËñÝï~—7Þxƒßýîw<üðÃh­éïïgÿþý|üñÇ|ë[ß⡇âî»ïæèÑ£lÛ¶þ¾ŒñhkkcÛ¶m R(رcÏ>û,©·L¥BœD yœEžÌßÁ8çx饗xá…HâåJJÚÀÓO?Í¿øÅu…Ïó0Æ`­¥»»›ï}ï{„aH­V£­­-=_ëU•A„«d7l`¾jù¿ñ^·¼6&SŸ¼ú�>ÐéJç_[!Ó ‚ Ü4âç“$­:Å•J•R©ŒòômÙŽÖFž W<ˆ*•J”Ëåu—;øÎA~ýë×ÑZñ{¿÷e:::Y\\¤³³‹\>MT»ºäs£7ÊÔ®ÕW×*‹½zÿybË®G&“!—Ë]ò)zRUãg?û9ýLOO³eËúûû™žž¦¯¯žÞ´ÒÄqL’ÄÍròJ¥áƒ«Ë:7ÂÒßœÔç§Ë'‰åùçŸçðáÃüÙŸý½½½éSAå®Éµ#Žãæ¾>}š8Ž›0–*O’dEû·p`E¡V”/O’¤y,Òã•€r( ÚˆçÂ|¿ªV«Äq‚M×�ÐZáùÞ%“;[k)‹ÍªI ê <[“^§yª"&ÏœÀEe²Ù aøÆŒÑºfÜ,×áÆµ2ŽjQR©L-¶´÷ ‘+´¡µT,„;‰ ðæ€¨q}Jê“m™\Ëkã"ÚúÖpÅ1FAÄáÊå2¥RiÝåå¨üV¡A¡šwêFXZñÿú\(\|¹K}Þc6²|ãkÝçVa¥ñþrÊä®÷[ZŦk9H¼Xu™Õ¿érhãÖm­Þ†\‹îìëHëÔÚVç,ZïS©T¨Õ“e7¶ÓðˆÉf³+x‹#‚ˆ1W&ÆH˜’ ‚ Ü`<Ïkzt\ŒtpséÁÀêÏFBWcÀÔư‘ím4¬ærsU\lÙë5(ÜÈ1ø¤û²z-ŸäYKŒ0ÆËåð}Ÿ(ŠšbŒçyø¾/ap‚ WÛþ“&A„;ˆò<L&C¥RYW¹ÙG†xž'" Ü‚ç/¤i+rÃÈù,‚pm1FAn §ÏÙl¶YíèrÂrn†ý×Z_ðôüVÙAVžÏ Œ Âõ@ÄAA¸´&Þõ}ÿ–«V²V>Ì ‚ ‚ ¬ˆ1‚ ‚pYïIôzI^o6±£5¡¬1‚ ‚ ë#bŒ ‚ ܤÜ*¢Fk$AAáÒHZtAA>1"À‚ ‚ \>"Æ‚ ‚ ‚ ‚ \GDŒAáª!ž2‚ ‚ —FrÆ‚ ‚pÕX/é° ·SSSchkËIc‚ |BDŒAAaÃDQD’$8—•ÆAø„H˜’ ‚ ‚ ‚ ÂuD<cAn Ò!‚ Ü($Ç“ ÂCÄA„„µk-I’@C”Qjùý²µ|á¼õ­ëk»üøNi—[·]äØI»È±»)ÛÅxFk”GyA„ˆ1‚ ×ÇØJŽ~Œ9r316Á¡P¸¯ØÒ-Ÿã�ņֻ¤Î²~9Û[½ÜÅ^/g?š¿ïJöÇ9œZÙN«·µ¡ýiÝÎêãx9¿kûsYûÅÚƒ²ËmëúJÍ}»Òý¹’¾ðIù%÷§¥í/·O_ýYo;—{Ü.Ö/÷X]l?.g{­Ë\I[]l?.w{9æ7ìztÇüjloÍõ”ÂõìEí܉ÎdPž ADŒA¸]…k‰Q¿ú%Þ¯£––ÀÚ+â)‚ E)ÜØêð{ØO?Š}ⳘööÔ{F¸ýl6†¢ñTà†nײ+‚p#bŒ Âu±{6Iˆ+x÷ þ«¿†rY„˜Ûý¸×'+M!ÂÍ5:G% ºXD¿ö*Õ¶vÜ#`2 [ºíµ«O {dÙ+²µ”Kkþ ËÉg·‘¼C«·çܲ#y‹„;cA®—1d-vvïÈ(E„¹S޽4 7ç l‚ZZÂ{ÿ0Ñ®]èþ~cnC¢Ä1WŒ™\ˆh˺ó>…¬ær]SœsŸX<‰K%²œ›pÖÑUðèÌyx&ío"Êw""Æ‚ \›×á’„d~žðܸ1wÊq—&áfEÅ¡œCŸ;G2?ééA#ãÛÉöppf¦Êÿ|§Ì±)Kà9~4äÓÛ³ žÑhqƤòL-¶ø°Ž¨M°IšÛÎøʤ“gÖSàiE’¤ùš| @J)< Õ(f±bùå‡%~u<!q°o@ñ݇ÛhÏù-ýM¸31Fá:a­ÅFT*Ò‚  FшX¡RÁFµË OnÛÃ9þýp‘Ãç`×@†ñù˜W>ª3ãEç¶…Ì—bNÎ8Ø2>WæÜBÌ›}ÆÏ̲8vŽ ¼H[bãaòyŠí½ôv³­?Ë»g"úÛ›ÚÞ9Ue{·¦õxk¬ÊÞ~ƒïi~;ª˜;±c K”À/Õxt¤Ä¾­m}é!©skíŠ>êœCk1fÍå“Öº)0®Þ¤^9ºîÖº^ë|A¸ˆ#‚p=q’#FA¸ÙîMN„˜Ûî.Ï$ŽpÖ$kÓ°é¨GXCµZ!®K4ÅÙYæ?:Ç©·Ï`§æ‰¬fIÔLHÍ„D&Âúe’b‰¾ÂVÊ¥*6ëã¬&ªVq‰!‰Q­†K<b§‰£IpÖâ$ 6±”ªV«œ;wŽññq¢( ÅðÈ0ÃÃ[/ðæZ\\d||Ïóزe ™Lk-sss¼þúëôôô000ÀÒÒ½½½ôôô`Œ!Š"ÆÆÆ8xð ?ü0###Ò™„k†ˆ1‚ ‚ ‚ ·Î9ŽÇw…œ›[äìT‚µ1÷xÜ3ÒÁÝqL>Е÷j/¡¦Ø<ö;‚£Ç°1D: Ö!5OQQ†šö¨Z$Ö”Î,Q æØ¿«ž,ÙÐã3weñ}Ï(žÜ AàM{J‘f|~žwϱVqOoÌPOO]DI«;­GE¼ð‹¼ô‹—PZ“ÍfÁÁ×¾ö5úûúÐZãHC«–ø«¿úŒîÛÇ7¾ùtàëyÄq‡~Äöí1år…úÇâÏÿÓ"fÉd3X똙ãý÷?`dx³³ó9r„»îÚŽ÷îÇó<ñ–®"Æ‚ ‚ ‚ ܦììÏògZ>>=C_Wž¡¾ùŒ‡Ö8pqL¶²ÈÒKÿÇÇÈÚ€’—%ÒŠDy$Ê#Ö5í¥Þ1Ú'¶§•XPYžîRh¥hËgšßÙ^ÈÖß): Y Öò‡t²÷Ä4ÎZ¶oî¢#ï£Õ²R ¥Ôš^ZI’P)W©Õb¾÷½?aûöm(¥èììä7¿ù-q³gÏÆÆNqþü$[¶l¡¸Tb~~·ßz‡ ðÙ7:ŠB12¼ö¶ª•‹‹KÌÏÍóÿñK¶mÛÆÐй|ž»ví¦R©òÒOÎ믿ƽ÷î§»»‹ááac„«†ˆ1‚ ‚ ‚ ·Î9’$!ŽkTbË‘ùº:"’¨D±XF) qŒž&úÙ¿ÁÙI°Îø8À¡pJa•&Q†XyDʧªª* ì<^ü0¡”,ò­{= ¡c9o«·‹‰uœ)†DV±ÃÕˆ"£Ã9_Ö—sDQ“'OR«ÕÈå²d2Yøë¿þkžxâ Þ}÷]î½÷^¶nÝJµZåµ×^ã­·Þ¢R­òЃòo|ƒ_üâÜ}÷ÝŒŒŒP,ù›¿ù´V”Ëž~úiòù</¼ðO<ñçÎE5ÆÇÇ™ššbhhH:–pÕYOAAá6¡‘€ÖZK©´Dii2m®Ò™‰‰k%*å"•Ò"Ñ™x?ÿþ‰c¨j5-w¾ª`«(kCMT½4‡ÌR¤øù‡Žx«Êé©"ÅâåÒ"åÒåòb:•–(——¨U‹ì쎸»·ŠÊ,-ÎQ©”Ó<6õÊOë“zμþúë¼òÊ+üúׯR,yøá‡éïïçùçÿ¹¹9žxâ r¹<ž1 ó?úƒ¼ùæ›T*â8&ŽcœKC©>ó™ÏðGßý.ù|žçžûašC'ŽÉf³<ðÀd2Yî»ï>öìÙ³f²`Aø¤ˆgŒ ‚ ‚ ÂmFÇ‹K8hÇ`Á˜Ô[ÅY‡ªUÈþ þÑ÷q±‡2¥Ó<3 êþ-.e¬R$Zkªó©Y¨Ô?ûHhÍ—ïŠÈ7<dV‰+èΤTÊÇ år‰ È¢µaÝÜ1õmyžÏŸÿùŸ³sçŒ1ttt¢”b3[¸Î�� �IDATçÎ|ðÁø~š°wqaÏ÷Þʽûïáã>æƒ>ÀZ»â;<Ïgûöí ÑÖÖÎÙ³ã$õDÃAÐÝÝM„ä r¹œ„( WcA᪣–mGç.´HoÆ=VJ› \ãkŠQ¥ \s¶îé2S6üljÃúòÏÅdÎ~Dfì0ÊVÑ4E‚vvŤH'C;‡rà”BG]U Õ~ò‘¡’À·öEdýÖ¥ëà­s>ÕXq`kß@œDX㜾ä}È9¨Õªüæ7¿alì$�÷ܳŸ0 yñÅ_p×]w1;;Ë /¼Àèèhë ®¹þr=÷”R©ÈO~òSúûû8}ú;vìÀó<”Jï‹a’$1G?>ÊØØ[·n%éZÂUAÄAA¸š¦oªÀÔ‡[®9ìºÙ¥ke€(WÊZçùrµ˜ãBA¸F÷ ×|mÍ¿ÒZ WèÊ:4WÉ}SÇ©íŒK0¸ôµù‚ç<g16ÆØ߯øQ 7éÈEIPõ=J5ÍËÇ8ÇWöÄtgW 2ØÝàë†ÇÃ9{Éß]]ôõõqüøqNŸ> @gg'ç½g/Oó›¼üÊ+|ðáûܽwÝ=ôôvS(èéíbûöz{{èî餯½½=ô÷022ÌGÈ}÷ßË7¿ùM¦§§èíífÓ¦FFFx瘘œdrr’ááaédÂ5½g¬ž¯Zþo¼×-¯ÉÔ'¯>€tºÒùרÀI&‚ps Nm=ù%I¢8¢R©R*•ÑAž¾-ÛÑÚlÈ£À9G\©Pýà} ÷ÿ¡*iàÛVˆI·¥Å þ¤Û“&„[åìoFX¨ºÙœͪ.¾Ôç*u·ÀM±÷Ù,‹Ïþ1™=wãe2—¼¯£µ¦»»ƒ©ñ1\T&›Í†`ŒÁÖú–ðºkäW±6 ©E5J¥2µØÒÞ3D®ÐV£¹uÄk-Õj…ééI–(Åš¢8BW#?ù¯?ÓU’%ERö)ë,E?OÉËSôó½<e?GÉËSòr”¼,E/GYç¨F!çŽÅ,x!K™¥L*Èài2¾¾/âóÛc:³®)@:`±š†ù‹V Ogga˜Y·¿ÄqL¥R£R®$ Î<|ßÃ9‡1ç•Jß÷›ÿû¾OÇ”Ëe2™ JA’X´òp.µñâ$"“Éàû>Ö¦óŒ1d³i‚`k-AÉd$oÌBxs@Ô€¸>%õɶL®åÕµ˜qn=³N<cAá* 1Î¥¾0–ºaXç°ní8øK‰-NäA¸µ.J5Ÿ\ªº�£”¨T”QËsÅCF¸æ(Ê9P0[6¼r"Ãc#6ûU™Ð:ÂùmNYŒKðl„çb<ãÛˆ(‰ñuŒg#|kƒ«)ì™*ù¢ÂúeÊYŒËPV>%§ùñŸ¥ªâî‰ýT±M¦aJ WÌÆÃx=Ï#Ÿ÷Èç²+ÖXë<ÊçóÌ Ã\.·Rìq­ù_ìšn J)ÚÛÛWü/W cAáŠ` GZÂ:G‚%vŽ(IêOIÓ;tu…ŠK›¡ ÄEFnµA°RèºàbœÂ<­0Z¡ÐhÊ©›?~Q¸uûàŠ; tf-_ÜU"çCPš#¨M <‡ó ]±˜8ÆKb<᫾öñm•81„JcÑØXÁtLrZÓ®T¦.ú�Ú)”s”‚€*Š_ž4~owDG& YÚß¡põ0%…rju—uÎ+š‚ç'=/WÎpk¶Ø%ׄ«„ˆ1‚ ‚p…¯s8Kâ,U ª nËÁΘB[*º4l¹úÓóey=ÒЇeÓ³áas±Š«ç¯•±f£ë®·ìÕ\÷bûy9ßw=¿ë2¾¯åX_~û’c×úù•üÎkÝž¬ñ]i—‹ œntŸ^{~ϯ°‹‹TŽ~Œ'Lœ±x¤ 3´¨1Â5Å­¸kŠŒ:YÄØE”— |P8|›»ßÖ𭇟xÚX$ÑX ®cOX2 !.ÈÕ3ºî…£RQÊx«šŸä‘ à‰‘ˆÎ¬£+¬Säü¤¹{ò¼A1FA„Ë7uëIg©9KÙ¾w?_ÿ&^gx~*¦(·œT¦±îÆaâs †%­"ÉjÁärÿ_C€‘§¨´t±(¦63Å¿ü ¥ß½GÞZ”†ºïŒ„+ ×…ùŠæ×c©ÐacÐ*p¨À¡HBQ‚Õ¬Gl=ëaƒU&­§TM¨.cæ=BÝ–FöXWcº.Ê€C«,%¥(:Åßó©Åðôh#SµDñøpB ]êYzƒÎ×ø#Nj BÄAA¸"cÎ5óÄDh’-Ct?ýx=½`Œ Ìo0¶žÌ1Ž"¬½°˜€sòOÚø�¼> 7Za¦}@© Ä8áv¼V‡iv…ö|ÂÍtþÁr~z–êéÓÔ¢ü1N„<áÒ•Køý=%ãpÅ<I˜Å‹¨À¥yc ¡ƒØb“ˆX×êBŒ&±—Ê”Ž1sŸ<Ê8pi)låš4oL#�Wʸ0 ŠæØŒ¢TS<0PÃÓh–ó'm`ÿk±£X³äÃ[ÈúiÈŸuŽZžNÃ×?I5kY¬XÞ8Qá½³ íšû·úlïõÉû†õâ¦.Çop»ÃEî*jÕ†å^!bŒ ‚ —x¥‰{Ó$½Þw¦³ åyÍGãÊ\Ráú“Ä1Õjµ^}c¥�Óø&IBÇ8çð<“R*õ”ª 0žïãy^s`¾¢ÿ8GÇ$I‚ïûÍJ"­%i•R2@¿Ñç¹sÍþãœC뵫5–kS­u³¢‹ò<¼®N²û÷Ÿ9&ùfeÉRA¸–ĉâì‚a°Í†=ÔòCøÅit£jb‡Š,:RxÕA¢Iœ"Š˜Ÿ%>SBÍ8|•Ç™œM'lžT/&£HC•´m„,9*aHµæ(Õ !Mš;Ø–p9WÚÄÁ[§"zò𮬦–XÚ=–jŽB Kh4ÖA.P«Ð–QXóeKgN‘ R˜Jäxþý¿9Q#±Ž™’âô\Â> ¹k“Þ°¤rùÃ¥$aDŒAaã¶•ru1¬Vx½Ý©ÓBµZebb‚ááa´ÖÒn×qݯçu0==Í©S§H’„ŽŽvîÜI’$T«UŒIKŸæóù —±oÐ(•»Þ²gΜáwÞáÓŸþ4}}}c(•JÌÏÏÓÞÞŽs޶¶69˜7rÇ=z”Z­†sŽÎÎN‚ Ù'BL¹\n.§”j–Âõ=e|Lw5>ÉwÍÞ"ÇמŚáà¹\P%›+PÜô8ÙÅQÑ<*v$¨H£…‰AR¥V‹¨LÌQ[ÀV<Œ.àLŒuiiiåL]XtmA§Ž_©Hc-~¬ˆ8¾à‘8Ŧ|‚Öé9°Q "ôRѤT³tdÏD´eLX¶õhŽOÅô·æJ©Ô9[n8$:Ž·<¶ÓGkÇÙù„£çc*1ä|Å]›<Þ>sf.a×&u-ÏÉ‹òÊ]ð @1FA„u­ªåušNÄ4--k-Õj•©©)^ýuÚÛÛÉçó„a(Mw„˜Õ&M›·e�]­V9yò$ (¥˜¥³³“Z­Æ¡C‡èîîÆZKWWJ)2™LÓ‹fóæÍd³Ù5·½Z˜YkÿÊå2‡æïÿþïéèè ­­|¾À[o½Åââ"]]]ÌḬ̀gÏ´Ö”Ëe‚ –––Ã8ŽéììdÓ¦MkzkW޵–ùùyŠÅbÓ3fÓ¦M,EµZ?þ˜r¹ŒçyìÝ»ÏóðŒhP:õ5á:Óùý=qZÅHªÙ-œù#ÚÇ~ˆoO£¬Ob"[¥æ–æËÌÏ,P›ÑNã'ʦž0‡F¡ë‚b³„¶sMQfµçLG’¡=cx¤PÃhšÕ”6¦”ª*ŽOo øÕÇU|m˜Xpléм?žÐ›WÌ—#ÝX81cêÏ> í]ÏÓFYŒvtd£ƒ†#ç’t?”Â][)f]íU®ß"Æ‚ ‚ð $™åiy•$ 'OžäàÁƒ:tˆl6˽÷Þ˶mۤѮ¶}«–¸†ø¬íþíêùd¢(bhhˆ ˜ššbjj ­5“““?~œööv&''éíí% CΟ?O¡Pà›ßü&Ùlö‹EgÏžåÔ©ST«UN:Åðð0;väÑZsþüyfff˜™™¡\®P©”I’„l6ËÄÄI’4­[·ÒÝÝ-^W×êüvŽééi–––pΆáа·Æ2I’`­%IþùŸÿ™Ïþó©×œ­{fáhsˆ#\oª±æØ¬Ç¶ÎˆB�NûDùíÌm~‚0ù;´>E¢b"SIjžEeÁ^bp.AU.NÅ•Pغ�³Ü³•réüº£z´!hÆ ±…‘Îï2ç­èÍòfßfkatP±Tuܻŧ;¯)„0St ´kz 'ŽÎœf©jiËèf¤è@»f×&wOW9|.&N`¨Ócs‡?5AÄAA¸•E™æMÖóعs'íííDQÄç?ÿy2™Œ4ÔufVŠ2kçÎUJQ(PJ155EWWccc<ùä“,--±wï^Ξ=K&“ÁC?Zkœsd³Ù溟tûûûikkã©§ž¢³³“žžž¦7UEtuu‘ÉdèëÛĹsçXZZb÷îÝœ9s†]»v‘Éd(—ËÄq,ý 1J)<Ï#œsø¾ÁqWJ5=“¢(â™gž!Š"�´%áÆSŠ4O{ôæbr¾Ã(…ÓYâŽILÿèÿ…³3$Ö¢¬Â$>ƒS§h‹šÊ¤×U…kz¬hgAY픳i…%…‚bï– FÃø’¡+†:bŒÚxˆ’o»ú|Œ†½Ö-ËìªqG±¹Ó¡•¢+—Š/FA”Œ^NÛ• 4_ÞÒ»gbú šOïðÙÚ¥ë~1W)ï: 7’}˵AÄAA®‚³Ö€Û÷}ºººxä‘G6œwD¸òÁójaæb‚ˆçyìß¿ŸcÇŽ177ÇO<AWW °ÿ~ Ui ¸ï=ï“›Q !è+_ù /½ôŸûÜç( h­yì±Çx衇‚�k-Ƙ¦×…ïûìܹ³ùÝÏTîº&(¥0ư{÷nªÕ*�mmmApÁrAE£££Í~èû>žŸ–·w·‘?Lw‹ÑKÔ¼QÂ)@gq…Qâíÿ'æÔèPZ§å×µC)z»(ƒRQZº*²(› \‚‘VRj„(.ýãím>[·øhåxh°–Š$Z¥áM>SaE‘®«W­ëêŠIU¢ôµ¾^°êK´†|høÜî,ŸÙ•.ãkÐZ­[I ÇÆJÑ_B±q¸? "Æ‚ ‚pÈd2ìÞ½[ ¯k,¬6naJ­!Lk‘Ïç¹çž{Z uÝ„¯%ðlDèil§áI³ÖòZkºººøÖ·¾µb_Ã0löWç i|~¹û"\±ìy 7A#lu›cÈårÔj5¬µèzyó4_Ì#±[y`ßÝ]Á¯¬[…RMsä¼ÏîÞí¡[”!i¶ü/ûWh5†§âº cÒtGª.D(P @ÉBbë2£—Ô˺7òŤ¢‡¯£ö“oÓààÄœGdawO„w™—-µJœ¹à3µöÂk-k˜+Ù+X~EkÕz]بÚ#ˆ#‚ ÂÆì11®®› ³º­=Ï#“ÉEÑuKšÚU‚ ¸¤ÇÊZy^.VÎZúÑccùxRo)Ïóš}Q¥±·]’Õâu ÜÔÍTQ3Ò©p᪩4˜<Içã8¯ïØÿÑ(£ê¥‘”4 U*Ò`QKZ˜zþ— �ß:G{èÝ–ÁÒL2 UE-Qõ"ØöÊNÕ(×ú<SWºêªf-^8®ñÙš¢Œd™º]1FA„Ûf€Ø·æúÐZ†a½Ì´º¦ÈÖA¸„qÜi¸‘BŽ»psÑ•ùò]1Z¾X÷4Yláj#ÿþØÿƒ¶GAŸF<QýuÙK¦EP±E9KSytIêÅ·©ƒ-ŸßD7 R-ç¾Zz}T œþäú†s-GÝûñŸvéw,Ë*¿8”kº¥óš+Ø5î]iÛ4‹�8V&:“ËÉm‹ˆ1‚ ƒÙu–¸éC‚ôáÖ׆8bŒAksÍŸä;IÈxÇ÷½5/›Î²âJ"Ü0«šƒã!÷ôWéÌÚ‹2 tÛö ¥ÿ•ìÙÿŽV'ð´CÓKÆ¡LújÑBdA¥ž1ZC0ÐMï7v’ÛœCÕ샧}ª±âžþ¾þ„¶E³|au½ò1)À5<ÞÔò\GËC�–}_\]$J§µ~¦ª‡vÕ“!×g¥m¨š¡W+Šm»[Ä6„ˆ1‚ Šäzÿßzƒ#9¦Âõí"Ä‚p3b"v{©Ûº2(¯€m„ÅÄ‘Ÿø+<uC-õŒi Ujü¯”ƒE‰B™�·%Oá™ûÈßÕ‹ŸñV\cÛÐÙfÔåþˆb\-ÂVc”µË?—Uêè² $ Ï }g4hU[ꂌSDʵ„jÍY°œnì_½ •k-õ‡¤eÁ=­ð|MÆ×d}•V‚Zá-#÷™ÛcA„õ¬2iA„+;¬µ·UE%áÖ¢3“ðäö„N»ó+…´Sk˜ùØÒqþ¿á»3heQÆ‚ŠA¹fø’R ´‚ZŒÞ5@øí/‘ݹ•L!‡1ËbŒVpO_Ô,EÝ´2Üm çp eÜ®MsθëhªØzëYÏ  Tg‚F¹ûTN)'ŽÉ…„ùJB’°"MÌ%sÜÔÅ…%ô› †ÎœÁÓȦÛcA„µìÔ¨¨ ÖÚ•IåÜ%^iÌ[¶ðÖžßúù…;ráºk}^_&e×ÍåÅSA„{=uT«U¢Zµåñ½ \_æ*š7Ïdyp°Jw.¾xÞ˜zŸÕÆàgÛI:a*¶tÏü|Nat Ê4C–Ð 2!ñ¦~ÜžÇzŒÜàfÂl¿)RÔm ïN„ÔŃU|U7Rv*ˆÃUjØ™EHâTˆq.uµI”©»(À3 ã%©m`4}5Îèô%NHJmP]¥5NAâ,‹ ‹eGR¡š+ZŽœ‹±jvözlíZ›µ¢ÄÖM…V©7 ‘c|Þ’ñ¹ /ˆ#‚ ÜöBLúš8K­XÆ.QIråö˵¶#”Â…~{? êIýäa’ 7–$Iˆ¢h9/„ \G¬ƒZÎYª±#J¡·~~8¥ÀŸL¾ çfAÕh_øgL4¦†ö<l˜'îì¦æm§:ô)2C»Èwv“ÉfÑ«*É5t“ئ9Tj‰ÂxŽ Ë#ÖâJ$é²*5’ÎB©Š*d°Å fk/z¨'µ*ö£qœ§1]¨B¦i8HKs›ôá‹ë¢M]¥rõx.eÎÕTcè. ŒNч+VPí9œÖ8ÕÈ1_¶i8X½‰u´F.Ptd5IÕqä\Ìæƒg Jgç,§çbÛ §æ,[»<¶vi´›8&¶vyh#}YÄAádRc©2¿ˆ˜†JeíÍ¿ãJá<C¥R…¾‚ ¨'ÕAFA¸3‰-œœS|pÞR¬)>3}…uo¥õ×´"]¾½Zø%–Ú÷aËãÄÕ%l¢ˆmöâå{éÉç 3™aI+´SEÅ{ã©FÑ‘Ñìê¶4³Ô^Ê.‰b¨Tq.-Šu¸éEìÛÇpó¥ÔCG)ìØáw£ TÅžšÂìÞŒ[,cÏL£‡z±ã3i˜S%B>zÛ&â·£rfç n¡Drv½©<YJ÷áÌ ÞWîG²Í]vq‚«Å(ßX˜):lÒêÿ¦(Õ÷ ùlîô8¿˜pä\„u…a¦˜ð«£Uœsd<ÅRÅr~)as‡Æ7©lT©Ab©ÿ/ˆ#‚ ÜÎJ Î9¢Z ;5 Å2ju¸PëëM°¿ËáJ•XÜô<ålˆßÕ‰2¦ñ‘¤ÀAî¬[:ðÁ”æß>ÌЖóùÍxB”TùÊî„(Qäü´ u©¦Èç•H‘ ,Ö)ª1ä|EMµQ w“Ém%©Z Y_QsÆóоf!Òx ÆQŠ4žvÆQŒ4‹øñûÅ$Àß½ñ_³ôlt4êRFÕC¨•V¨¶,ª» ·TkQy̽#©0c>º¿“øðiô@®£{;ps%¨F˜Øó ¸¹*±(ß'9|”ÃÛÖO|øô´avôC¹–&ë ¼ m‰º â€Zâ6üsâÄòÞ™˜¾|xÞÑjJak‚™åc(>u"Æ‚ wˆá†ƒj¹†­F˜ÕyY|• ! Á˜ Eg/T=ZóȬ梟9Òr «?kQU¬Å-.A¥²l 9PIB2_Äv¶ƒÓõoJ´AáÎA)Š#”fKWH #¦K5Î-NÎú<2Tf¡ª91ësÿ`…óEÃdÑãÞ cs†b¤Ýql.À(ØÕíqlÆ£#ãÈ… N µÇhcyw"`wOLè9Þ¸·?¢ÃoÏúteÎ,hö{TcÅábÂBUÑ“ßàYkð .NÒêM¤bŒ÷ÐNb£q %ÌþÌöþÔFP. CÒ:õpq¤áE3‹ÍMÚ¥ºíà›ÔS¦TEõ¶A¹Š]Bwåq¾¡Ÿæ„qsÍbHiûÖ'­›æLÖW,TVª'±…só–¹rD9rDIZEÉ¢èmÓœsh•¦÷}Eà±"§ÏF’. "Æ‚ ·‘$£­½0®ç¡·àýçï¡ïÙÞeÞFV?ð¹ðÐeí#¥2ñßýÉó¿À--AÒx~äê>r$/»UëÖêfÞxï¤AAnrý%-¯ŒRXIbÙÕ ',ÇÏW™\Hxp¶´Çôb²¾%ç[º2 ß1ÔÑWH•í]1±UžcwO„uàÇh_ŒR©̽5Œrø¬á‡Qð©ÍUB/}`«c¡}ÅÑÉt›6q‚ú½|·å\&DUpI*¶ÚÒßSÀ.UÐùÔs¥n`¨B¶õa¨ÐOc}âÕ×AòþhÏ¢·tƒÖ¨ÐÇìÙ‚êʧùc¢$M¬Uº®µ˜Ý[PÆÔKr×ËR{xi¾£ ;¯9¿dIZî—µØñþD̾AéYKhJ)|£¸okÀþ!˜/[²~*ÜÀrb€l 0k-bŒ ‚pøè;ðþä;˜ïß¿±¡JC¼ï}2’ý·¸¸Q»Nh_l£* µ¾ Þ¿ñ¹ÖZLá¡V«r~jŠ]]Ý<³ÏòÞd̾8°5"ï/çS¤ÂJãÊÖßûž«kÏsM¿Tϯ¿W÷]sù !æC›^~ß®²žâG#Þ<e‰¬âÞÍ 9S¥T´t´wáú?Æè4Qn©š–$jˆJA6@‡>”ˆò4tæšÞ±õ›*±˜=›¡#ò X‡Ù?‚ê)à<ƒ <V¸¿(•*-íY\=7ª{Äè¶L}yUQ½yÃt1!®'~ú¾,¾Qxö 8<­êbK=ä hϤë†fÛj¾Qô·y+ÄAÄAáNA)0½mÞ³ßÁ<p„™›ÆgVu´ã}û[ É¿üææ9fãÌÎÎrøða&&& ‚€Ñ}£ mªW1OrÇüö­ß2:zù|.­"¡T}ª—â\CÄAnÄm;õŽ±Î±0¿@xìlΧú„Ê¥K%R»šŸ§n°]<9œîŸÁ17³ˆg<¶lÑùQ¨ÐÃô¶cJ¸J6PX@­µ›Î¡º–㨡žºî¢6¶/¾jË@!»âÁ”z ­seKl¡·`ZZc-ûä‚DkÈùš®œ!ô$LévEÄAaPóÄc˜Ÿÿ&»uƒjoÃûúïáNœ"ù_§aÜNŒ—5Ÿ!^{õ5¾ð…§(K¼üÒ+„aÈ]wÝÅÉ“'™žžâ­·Þ&Ÿ+0;; @oo/Åb‘»¶súôiöìÙC.—AFá&!fèììf~nŽ¥¥ŠÅÒ 7Õ4Bˆ !—Ícü­[‡ °)𯿬.ŸAg}\5•jõ<uë˜0\ƒÇ3¾‡ÎgÀKËw»•»HÆW ´kzòŠùJš#f¹Ùݪ}S+þPÚ‘9_ãÕ²žÜ_o7DŒA.ÀN¥“‚49]G˜å$u7—ï‰J ·ååà]&…BíÛ·“ÏçÙ½{7o¾ù&³³³(¥8yò$gΜáÀ,--17;Çùóçyçƒ<ñÄgxã×ù|ô$ŒŽŽJc Â:Bµb¸%׸Ï)E†ìÞ½›ñ³§ñ¼ (ál#ôÈ­›Âírÿ¿œsAM>W`Sÿ�ƒƒ[ÐÚ[Q¨ñbz‘# ÝqÚ ²:-&°½P×⌮—侨·+­ñôÖú=î’{Öš´7õF•>};"bŒ ‚pIX‹‹ã´¢À&ÙåWc]µržµ$X+áI—‹Öß÷ñƒ�ÏóXZZ¢³³“r¹ÌÌÌ4�CCCø¾ÏØ©1ÆÆÆXZZ ­­|¾À+¯¼Âg?ûYÂ0”Æ„‹àû> GUšB¸N(¥0ÆMu>n�� �IDATP(ÞF_ÿ q_D¼X.Í|¹u›ö@«ã†»P»h|®�¥4Æ3äry<ÏCëeig=ÏæRj¥ róƒ‹í¢ºìc)Üžˆ#‚ ¬oh9GGLž:ËôÛïÖ½eTÓk}¡¹±ò³µÖ[˨S-ÏìÖÚ†[áæ«PÎâU*ôMMÓ#‡l…AÛ¬¬Á…’ó}ßcÇŽmÚr<þ™üò?~I¡­À§>ý:Ä«¯þŠí;Fزe(®ÑÙÕNWw{×_Ý»wKƒ WÔW×ê›”Ýj¥~ày†j3…ÇÂõé{J)ÂL†à‚yëùv½Î±ÖÜcR¬O¸1FAXÃBª¿¸Ô@«Uküô'?㥗^YSr©›r-ÿ» |v©e×ûŽ•ŸiçÈY˳å2ŸwÞÚ‹ÖËŸA&“áé§¿‰çù´··322’ žÇ®]»H’k-žçñèGI’„Z­ÆÑ£GùÜç>GGG‡4¸pE}uí¾yûœÈ-Ž‚pCαžO×:§Ìêý¯áNFÄAa¥!¶jð�`#®ÀÝM8œÐ€o-6Iä�®aä®ö<XmtcÈfs+þ¿Õj•|žž2™Ìu1âAo‚pó3Ÿdû­÷¥Ö‡‚p'!bŒ ‚°AË)u#v—ã^ïT½®$—®æèZÜqV¯{±eX¹i±å6f(·–¦NÿOê†pkÜþŶ•¾Çàà@ݽÜÖóõ¸UëÉ YX¯O¦ý¥1[î¦j¾talT^qF®Ýýâzm_ÎcáNDÄAáªWZ7‡û8§°vy`¥ôEVvº>ºªÀp€Eiš±ä™s—¬b)´6í1«çY›àœÅƒ®ÀOú„Rk-µpýsYXi})¬µõ\VI½ÏJŸ„«uNÞˆ|Fâ#Ü©ˆ#‚ \1¾ï³mÛ0ðO³oߎŸ8É?þÃs9üÖ9ÚÛÛèÝÔƒ^+®ƒƒ½ä Yp0==Çá÷ŽR,–Èå2|ö³Oðµ¯}üâÅ—yþùX\,Š̆¸x’І'‚µ©G‹1š$I˜¥\.S«ÕH’dÝ<ÖÚ¦xÓØfoo/ííí"Ê|)Õú4Ü]2ÏQcL3Áo[´fE_áÞ5nòêD‚p»!bŒ ‚pÅtvvðõ¯‡¾ŸLèÓÞqI’0>þß™››C)0FÕËW.£Uz ‚�ç¾ï£µF+Å®];yöÙïÐÑÙÎñï<ÃØØ)ÞúíAw©Ü0 Lwôp÷¢Ú•U3Òìøø8û·ËäÄï½÷¥R©Ù†jEúQ·"©ÒœÃó}þôOÿ”gŸ}–|>/'…p‰AßÚI<[ó]jýT€W9A¸¥îL7 j“ ܬˆ#‚ \1ÝÝ]ô÷õâ{­Jiº::èÛ´‰Åù”S(×HõÒZÂÖb›Î¯OÊVŠ»ví"› Roa°cû6¾sëìÚƒ5Õ*EˆûÌzƒà†gLÃÃ`òÜFivîÜÉÛo½ÍÌôLs9­u3¼©±|ã}ã3€£GR©TÈår×=!c«Q½«Wg€¶œ;æò*¿Hˆƒ Üz÷ ADŒA®ósóLMM±cÇ6´V$±e~~‘Ù™Yœ³\ÜGE]^àTZ½éäÉTÊ ÀZK¥Rãô©38+O¯qóþûïãy¥R©9Àµõön„%­cŸ)¥Vˆ;Õj•……´ÖT*<Ï£P(P,ñ}Ÿr¹L>ŸÇó¼ævµÖc˜šš¢¯¯¯¹­5ZkìÿÏÞ›ÅH–w~¿s׸±o¹WfeÖÞÕ {Én6EµÈ!G@3´dØÄÌÀÀ^æÁ€aÆÌ‹_ô`=~óÀO3@²âŒHI#‰C‘MRj©ÅÞª»«ªk¯ÊÊ=3"2¶»?܈›¹TVUWeeUÈÌ7îrî9ßùŸo‰"Â^Ŭv»M6›Å0 t]§ÙlÒjµ°, ×uÑul6K*•buuß÷“¼8ýÏõ'óµZ ˲ÃÇq’cB`Y‡ÆôÏÙ²¬»ª8¥¸¿ Ú^Õ¿ …B¡x’PbŒB¡P(¾0kkëüÙŸþgòùgΜâÊ•+üÙŸý9««kÉd~/LÓܱ-Œ">ûìüÇÂoüæ?$|~ú“ŸñÙg‚ )ª¤ØŸý'¶±xâ>—.]¢ÑhÐív¿ð„¸ÓépþüyÚí6¦i’Ífét:t»]lÛfuu•©©©D�iµZ”J%¦§§¹qã•J…µµ5.]º„®ë :­V+F,Ë¢T*qäÈ.\¸Àââ"ÅbÏó(—ËŒŒŒP­V¹uë‹‹‹d³Y,ËB®ë‰Ð²´´D»ÝæÈ‘#X–E­VCJ‰®ë„aH¤ÓéäNœ8A±XTëÀÚ¨B¡P(OJŒQ( Å&Î_¼Ìÿþûÿ¦iâû>Ý®K… ¾Ùb³ÕÙV-%®”tùÊ! ß@JÚ.?øáŸó_~üQáº^,¨9Û=1–4˜—c+´£W˜Ø³%‚=Ã>¤Œ«] r‰cû´;í.l×Ü4MÃqÒé4Íf“v»M¤R)º]—l6Ç–e%®ët»]|ßÇu]nݺÅòò*Åb‘d2–––Éf3är9\×emmññqVWW“ÄÃ+++‰€Ó?Žn·‹ëº E‚ d}}ééiæææh·;AD£Ñ¤PÈ“ÍæY^^$““SÔëuZ­Fß÷WbÌ´Y…Bqð<Ȱ¿Ãð,ßïùÖ~èNçó¸ôOÂ9(1F¡P(‡†(’DQ@½ÞØ9è2ŠöõÙNF´Ûí$‘¬âÁBýТÝ^ß6²µM€¼xÖå{¿Uçã§ï:;Ò¨Ú¶Íôô4º®Ójµ�¨×ë@œ°¹^ßäÔ©*Fƒb±€ÇqH¥RT*>ÿüsÆÆÆ0M›r¹Œçyäó9J¥"Žã ë:N›t:a¼ð „aÈÈÈHò=ét]×'•Jáy¶¢^o0>>F6›£Ýî099Iµ:‚®ë¤R)„€|>”…B‘b±Øˆº„aD.—Sè²ÝøÃ(Š0 C 3 Åâº.®ëâ{aœwmP³Ìܾ}.-vü–eb§llËz$šÂPâ¹.Ý®›„ÐîzÌÛ6kš†²H¥ìCŽÚÏóW<ô‰ÂáDȦi’rlLóp÷›áº]\×ÛÊù%â%!ÓìµÛÜ×.QbŒB¡P(ŠC+¶ìg´ {Çì¿r˜xÕôÞ^khœ¿l²Q7·¼bvcY###H))•J�LMMÝÕ„üÔ©SÉyLNN½^©”wTãB011‘üoÛöÐgJ¥Åbq×Õ¸ÁïÝ~ͯã`¢XUFùáµÛþ„ðÒ¥K<óÌ3JQ(h’¿ÙhR«×èvº=É/¶_Ó4H9…||!‹¦iò,÷sÕ6´Z-\×MrÝ Bì”M&¦\.c§¬GÞ…aH§Ó¡V«Ñjµü`‡7ªiš8ŽM±T$›=¸ë}·ô…¤õNÏ󆃄�Ã0I¥l Å<¹\.Éí¶Ûø¬Ä…B¡P<*Ó‰ƒ\fê—µ-“LÚA ±cAIlûûn^{pû %©(ÄŒ"„<õ-d7£e¯m‰ØÀÝ–•H ¯Z\¾ž' ¢]*ÚìVªxèûîc•ëNbÈD•þ¶A ½ö¿ý¸fÒqåÊŽ;–äR(o’\«Õ¸=¿HÔóbí'lï¿Þÿ{°Ýï¹ Ã×õhÔL3E¾P@×î³,¥$–—ØÜl†Q²= #Â0À4ÍÇE’0 ’$ïA3 ÝjÓl¶˜›Á4Í¡ÊjñII·Ûe~~žN§ߟ0" å®Û¥Ùj211A¡P84ž=ýs¸}û6ÝŽ‹ï;B¢ãþ±jc³Á‘#G( Oüâ‡c …âñ›jôÌž”mó_û:/¼ú2mÇá$ÚÀ±IäÐÿw˜ÚìJÜù´åÖû“÷j@¡·;LýçÁßðh®ÓcÆ–§GOÖ’» ;?ÿö<AihÚîïíÅý•¯n·‹®ëd2‚  Ûí’J¥0Ms[ÔÎãð}!NMÓÈd2C¢N!†VÑît,Aà8N²]×u‚ C|ß'›Í*àQôl½°¹Ï>ûŒO>ù„™™¾ô¥/© £P<DZ­ËËËI(O,..’Ëå°,‹¥¥%FFF0 ƒõõu„±ÇHÏq¿q`iiðâOñð*"†AÄúÚÆ&Q$‡Ä£••e>ýôS^ýõd B†!Íf“O?ý”¹¹9FGG“±Çõ\V–WCÚ›±ˆ²¸¸ˆëºÈHÐjvøè£X^^FJI:æÄ‰ÌÍÍ!„NàG,/­`Û)2™ô¡hc²º²N»¸}û6~ø!žç%ÉòGGGyæ™gb/ÖH²¼¼‚mÙd²é'úùSbŒB¡P<&DRIeˆ&4ÌZ-Äe}›ãÄ—_ƒÃ8A•l6 ~ù!R5•] ºíž#b…ïN»ˆ¢ˆF£AÅ9V<Ï£Ùlbš&FÏóhµZ†A†„aH&'æí—¹–RÒn·Y^^î%þíR(p‡v»M³ÙLD]×q]—t:M6›Ýq,+++A€mÛÉŠœ”’ååe2™ ›››H)I¥R¸®ËÈȈcº‹"šÍ&º®366†¦i´Ûm2™Œ »~I‰.ú]x,(ÛŸ9ßó‘2ª/^¼ÈÏþs^|ñE\×å£>âí·ß¦ÛírîÜ94MãìÙ³Iž®þXa"Vô“µ÷ÅvÏó¨Õjd³Ù‡jBø¾O­VïyÄß{ùòe>ýìSf¦g¸uëgÏž%“É�qÕ¿¿þë¿feu…ù[ó\¹r…L&÷¿ýmlÛ& #jµ:åreO±ÿaÝ›››t»ÝD\j·Ûܺu‹S'OÑu»|þùç\¸pßýÝßE×õžŠK§ÓÁqR‡¢ïìtºl67“qwii‰(Š’¼rým qED$øžÏêê*™ìÌí%Æ( …âáÈ@(%Ÿm4ø£ËWùŸ_~¾'ÆLÈ’M×0 ã¤(ŠºN¤i„ª¹ì+¸ ®Ê~y*ëlšBH„Ø[ÿ¾[4Mò,|ßO’ø–ËåÄ¥P(°¼¼L«Õbzzšn·›îõzb±H†ÔëušÍ&–e%«´¹\Žn·K£ÑH¼)lÛ&Š"|ß'•J%O¿löúú:ÙlÇqXYY¡Z­âº.­V‹N§O&ÂÏóöÌ/£xø,..²°°@.—ãÊ•+‹EÒé´º0w ˆ$¿÷Ësüö‰#œ.–0„P~Š»šèÇ^Š.‘Œ�­×oFŒÑjµH§Ó¤Ói666¸xñbOLI[¯×¹téÇŽãÊ•+¤ÓéÄËæùçŸg||<é£}ß' Ct¡=4A¦Õnø>}WÏ ¸rå );Å'Ÿ|B©TÂ0 ‚ Ä0â¤|>Ïää$v‡/}éKœ¿p>úO ¾u\×CF2ùß÷},ËbîØëëëœ?žµµµÞñŠÞx-i4ê ùC!ÆÔj„A˜Ø%š¦111ÁóÏ?mÛ¸®‹çyxž›|& C\Ï{âŸC%Æ( Å!'Bâ…!¿\Yá?^¹Å¿8{ 3‰>Ì&÷ƒœÌª©ÅýqÛó´ ¾¶µMöçIªå¤DF èt¡Ý‘¡õÞ'vì{(‹þß÷ét:ضã8C«‘«««är94M£ÕjaÛ6a¢i¥R)ù®t:çy‰§L2`Y…B\…Éó<,ËJbçûBPÿ8R©T’Dxmm ÓŒ+5˜¦™ì£ot†A*•Rž�MÓ8}ú4'NœHÚ” ÛK×øÞ©£ü›O/ð[ÇfxedKÓЄö€ûaÅ“F_´FÆýeY?~Œ¥¥Eœ”ÃÜÜ—/_N’¯ŽŒŒàû>/^dff†Z­Æ|@EüèG?â¹çžãÒ¥KT*&&&Mò–ì}¾O´-Éää$çÎczzš(ŠøÅ/~Á›o¾I¡P V«Ñn·)‹èºÎòò2…|ÏópgË‹â±ñàÕ@öM¤H®ÛÊÊ ?üáñ}±±±dììçtp]ïž«X>,\ÏJ‚†Ì¾¹Þ”£P(Ї<©†O×küåÍþ«³Ìærh<(É(ÏGvº»ˆ’ØH Ñã…_` °ÓPÓ‘hR¢B¯@ e® JÞ{WÒÖ.âŒ&¯½àrñrH1Òu5–×t.]׉")w&Îí'vÜ­l¨‚\.G&“IJF÷?_*•ÈårèºN©TJbÆ·»kšF¡PHJI÷ N]×ÉårI8Òvcmð8ûÕ•&''‰¢()›Üd&''Q©ÿ³[‚GÅÁ ëú¡*'û8  Ál.Ç}bŽ^¿…£›|©ZQBŒâ®ž7C®X“üh"¸Ç!—Ë%^"}‘4Š"ªÕ*.\ R©$a§Ùl–z½NEÉóœì÷!*ýD»ýêIý\0ãããlllpìØ1>üðC|ßb~uu•……E�(—Ë\ºt‰gŸ}69v-v}dÏ”HÆDA>Ÿ§X,bYéôkkk|ýë_ß1>§lûÐ,*¤l›n§;TÕêêÕ«´Z-t]'Š"ÖÖÖxþùçw=ó'y<VbŒB¡Pz1FÒô}LM#¥ëls@85Èu ñ.rq±³²ÍB’P>Ëæ¸î¤ˆ„ öªhB$+UÛ+!‰Þk»UO¤è»œmµ(zÏ]M@4`yÑç—Tƒ¹OqF¢±RŸ¢íÖÉ—òD$•é29 kku¦¦¦X__G×uªÕ*õz¯çBì87oÞºoƒ u·‡L z®ìghõ½#Eqy1úûÜÇnß­DÅc÷üöÚmJ7°4¦ß«R¢Ú²bŸ>Ñ0 ì”¶)ˆzãi_$O§Ó˜¦ÉØØår™_ù•_áwÞÁ²,Þxã LÓ$N333Ó““IŽ×u©T*}¾À4Mtýá&ÁÍd2˜¦9T©grr’—_~™••o½õ¹\.Y08rä­V‹k×®1>>N©Tbzzzàé†þhüs…À²L„¦A‡ùd³Y^}õU~ò“ŸÐh4˜››cjjjÇ"DþUS*–J4›-ÂÞ9=z”õõu“çž{Ž#G¦‡ìÛ¶žø1Z‰1 …BqÈф॑ ä¯]'cLg³˜šØCºxbL½ÿчíú}‚Û¶ÍGG¹–I!ÈxlÙ  µ±Á›µÎ@’ÀƒŒ•œÄCãÑ­`=.lw–‘`£Q¤Ùöh»#a@³½Že 4­AµZ¥Û=£*• QaYV’ße~~~ÇýÞ¯ÜôýLô>”øòx·aEœÀ÷f³É÷¯ÞàÕÑ*/”Ü{Rñ˜ÚšF.—¥Q¯Ç¹Idªôâ‹/&"ú×¾öµ$LôèÑ£‰ÞÏû1111ô,¾üòˉ·c_ °,“b)¿£ãƒÆ´,J¥Ýn\µ§X,òúë¯ã8ét:IâÞ?‡\.lj'¸}û6årÃ08zô(™tD|}Š¥†i »åØýŠyÖ7Ö)ãE…ÙÙYÆÆÆp]—\.‡až¡‚TÊ!í8‡Æ3ÆI¥Èf³Iõ¤B¡À /¼$òµ,‹'N ¯eYTGFžøgP‰1 …Bñˆ1YÓâÍÉ1R†Î^ºÊ¿|á,¦f>܉CRB(!Ü=þ8ryt/ÀƒSnHxßIóòêŽìkÉA)æ)Öeöó8Ùº@ \¿~“z½ÎÂâ@R)#Š"~ùË_&%¦—––’¢0 YXXè­x)qCñhÛûÓ(ÐxQÈ¿»x™·&Çxmt”´a¨,[Š»&N3:6ÊâÂ2¾ï' V·!}f»˜³ß3iš&ãã’ˆ[ÓÅb‘n·K½^HBª4M-úÇW(Èf³ÉyÇ!I`é´CµZ=zQŸ¦ë:SSSܸq“nÇM޳Ÿ\yð>iš†išŒŒŒ`õD§ÃÐ'êºN¥RÁ÷}šÍ&RJ*•J’,¿ú¿MÓd||œ”RbŒB¡P(Á$ptƒ¯Žñ•ñ1¶Y‹w?€×,ƒ«i‡Ž&DÈ<ˆ„dŲ¸æØäCcŸ<z±]¢VÍ÷›°ÆÇÂÙéS§xë­·¸zõ*a€ˆ½›dõ’óÆ%• Ù$‘/`Ù6_ýêª ±â¡Óo¿ñ/9´íiÄÖtþ——^ˆ'nª’’â>&Êq"sz­N×í…ÑA é:©”M±P$—ËHÈL?¬hllÓ4â²ÝAÐKJ÷˜¦I&›¥T*bÛö£Æm›é#GX][£Ûé ”ï_o]×±m;ÎÉ–Ï'U•…Ý¡ RŽÍÄÄ8«««tº]ÂP²Á¶hÛ6Åb¿Í<ùIÈ•£P( šâzÞ×1‚(Bô’æÞqbÌÛ)R6Ql‚=„ÁSC É…gÚMô0ºÃ„#N멆]˜Áßñö¸üg±Tâ_ýëT_¸Ÿzº¡UÎP(ý²¼qjñT{dZ¿ÊŠªž¤¸?â<1Eòù8Iï½TáÙËûB×u Ã8à¼%¡e›ŒR ÊAÛ�“þB/<‰^‚þ±–~EÓ4Ò™4GœA$^«ýëßÏÁ_/š&pÒ)¦ŽL&ç0ØŸïÞfä¾ãÀãÞ÷+1F¡P(»Ò‰€0"Û3ñw^¡£ëÜL¥¨&RÜ›Gͽ äÉ•´Ã’es´Û…;LöÃ0¤åÔÄdOad0¾¼?©ÕDìž6÷ú=AH„=Ϥ~|˜ØÖbÄïóÝ}î^þL }·ßÿE÷s·Ç¹×gzßNƒón÷#îñõ{½Î÷ÿ<ß[;ØyMÂ0®Œ¥*_±KU(îÒ<AÈSÑKPÜO$¯cf_ä=Lþ~O¿à~ãýaì÷;‡§­?WbŒB¡P(v1íÂ0Ø”’T$Ñv <DRrÓ÷©m6î1IIGJ. Á‘(˜w윀tÃÀ4@9ìï‹Þ+k!a/×òjQö c?Eÿo…Bñ` u>;så&AæNÇqØ…˜'µ}”£P(Š]ÊbÖa3íàÕ6éz.M×Ý6IDB°f¬F<ÜcL)™ßlr£±‰>$ÆÄIdlÝ ²q-“L©€ÐÔ€¿¿AÔ¯z1^¤Åa¥/À ôqþ#eä+÷GÔ«F¸[¢Þý&ÿû ú¹¬x?a‡¡_Ùë¾Èy=Èc‹zùåîtÃùêîÜ.Cåö:ß'%Æ( …b£I’2 F§ÇYÔ@®E¸žOD8]-øL]£ ‰}ö ÙþÛ¶éÄysº€–¼cëˆ" d&Ef¬J©CBªU˜}ÌÌž¡³Ý`{Ü…aAn÷;¹×ë»íWî8ž»Û¦xj[ì®Ï³TϹBqŸxžÇ•+W¨Õj¤R)ž}öÙ}s¦DQD½^oŠÅ=÷»´´Äèèè# ÚØØàÒ¥KèºÎéÓ§Éd2ûö}Áà°xÅ´Z-®_¿ŽëºŒ399 @³Ùd~þ6'N¿¯¬Ñv–––X\\IJ,Ž;F6›Ý‘ì¿ÙlÒjµ(—ËA€‚T*µçµ½|ù2är9fggq)%õz×uSbŒB¡P(žìÉN>"}ü(Ë“m,?@ʨ—¦?A. zè!Añ·j#y´=¼6 M£d§È›&ú.¥9÷:ÙÝíÚí·íN¯‹{|ÿ~Û …Bñ…GW)¹yó&†aP«Õp‡<a5fff¸pá–i2wì/\@hSSSÔ66èt:˜¦Éìì,—¯\ÆÐ Êå2W¯^¥Þ¨ó­o}ó‘Š1Ýn—wÞy‡—_~™F£Á{gã84›MªÕ*¾ï³±±Á©S§˜žžFÓ´CçÑl6¹rå …BÅÅ%–—Vh6›X–Źsç0M‹+W.S©”yñŬªa†\»vT*Åêê*™L†sçÎÑhlòÜsÏqáüì”M¹\æ£?âô™Ól¬o033í[·Èd3LMNqî“s8)'>v]pýúu2é ¼ÿ!†aríÚu ]gvv–Ï}Ì+/¿‚n踮ËÑ£3JŒQ( Åc–%ˆ� &2™Ø0‘ ÅÖÔXîøÔ{}¡è×J€Q( …ânÇÕž—Âôô4AðýÞz ˲øðƒ©×꬯o°¾¾ÊØØ8®ëqùòeFª#\¸p‘ééi<ÏçâÅÏi4,..Òh4øú׿ŽïDÑ£õl”RÒjµ¸téG%Š"~ö³Ÿ‘ËåXXXàóÏ?gddÓ4™šš:0!ã^( ÌÎÎòÞ{ï111‰eÚ,,,099ÉóÏ¿ÀÅ ¹qó:?øÁó /Ø9H‡:Ÿ:uŠF£Á•+Wø“?ùN<M£¾É7x饗X]YãG?ú/|õ«o`è&7nÜdllŒ .à{·çÈårlnnb˜:ãããTÊ._¾ÊúÚk«kÔj5ÆÆÆ1t“¿û»÷Rò«¿úÖcýì)1F¡P(CÙP8V…úñºÛE‘Ãv»þ§BŠÇ‰ýV¥Ÿ´¼ë5 ú�� �IDAT Å£FÓ4._¾Œçy|ç;ßaee…V«ÅÛo¿Í/~ñ Ž?ÆèèÙl–‘‘:¶m311çy†iš8ŽÃìì,B666B ëVÜH¥R¼òÊ+üê¯þ*žçÑívyõÕWñ<jµJ¥RAÁÌÌÌ!- ív›Z­ÆÜÜõzƒl&ÇÜÜÙl†t:C>ŸÇ¶-¾ô¥TLÒuÇqxÿý÷ñ}Ÿ—^z‰f³I.›gjêÅb‘¥¥%^zé%¾óï0??O6›¥R©pùòer¹cccüíßþ-ù|ÇI“É:\¸p &''Åu»d2Òé4étÏóð}Ó²ëçN‰1 …B¡–/†’‡ˆ}ÄŽÃxü»nU7V¡x\û¡ûx]¡PÜÛ„úÌ™3¸®‹ã8d³Ù$'G©Tæ×¿ù6º®E¶m“Éž`vî(¦iR©” £)%¶eÑív“òÅ]×Eã8ôüÒé4_ûÚ×H§Ó˜¦ÉÜÜÇŽcccƒt:ÍéÓ§©×ëäóùCÛ·äóyž}öY<ÏÃI9±ašè†®ëÈ(¢R-aÛöžƒaœ<y’D,yã7Ô"—Ë`Z¦a019ŽçyX=et´ŠmÛhºÎñãs¼öúë¤3†aðÒK/±¹ÙÄqLà\.„!¶ea§,Þÿå/ùÚ[o&ûz\QbŒB¡P(îÀã4U æe÷O­VãÖ­[LMMÑétXYYá™gžA×õ!ƒ.šÍ&º®“ÍfwLŠ«0½ÿþûœ<y’\.·câ,¥Tåˆû÷<Ry³))ÆT*•¡mÕj5ù»\.Ýõ¾rùÜ–€pHÎÏqœDœ¼OLL$§ÓéC}LÓ¤\.ßñ=éLú‘´l6;d¤R©äïL6³çg …|Òßç~g¨’W&“!“ÉìyžßüÖ7÷M2ý8 Ä…B¡P<Ö¨ùÚ# CÞ}÷]Ž;ƧŸ~ÊÜÜ\R£Z­ÒétX^^&—ËñÓŸþ˲øÆ7¾‘TÝÈçó,--‘éår]—ïÿû|ï{ßK*VضM†T*=ô†¯âQ?×êÁV(Ч¥¿¿—Ešþ{Ÿ„qB‰1 …B¡P¢§˜B¡À+¯¼Âüþ¢Óépö™çø7ÿ×ÿ“vxîÙçøôÓO)•J¤ÓiÖ×בHþðþ?\×eee…¯½õ5Þùé;œ={–ùùy*• ëk5nÞ˜ç³Ï>£V«qæÌ®]»ÆoüÆo𳟽Ã÷¾÷ßÞWÛ’R•·V( …âi·7ŸûTS·^¡P(Ч]×9yò$N:ÍW¾òZ­&Íf“(Œˆ¢ˆ|>O­V# C&''ÉesÔê5Úí6–eÑj¶gvv–|>ÏË/¿ŒÕËày^œh0›%Š"þâ/þ‚ÙÙ9l;…”òž …B¡P(ž”gŒB¡P(O1B,ËâÔÉ“ÌÎΑÉd¨×8ŽÃñãÇI¥RÔj5t]gbbMÓz• \�N:…mÛ=z”¥¥%®]»Æìì,ŽãP,ÉçóŒÓn·ùùÏÎïüÎï`šÊüP( …Bñt£¬!…B¡P(žrt]ç7¾Šm§°m›|>‹çû”ŠE&§&ØÜܤP( ë:ö ì”M£ÑÀ0 ù“S ¾þõ·èt;¼öÚ«¤3iN>†Á… çyãͯ22ZEh*üMqgTéj…B¡P<é(1F¡P(ЧMÓ¨ŽlUÎIþNgÒT*[ò½JÅb!Ù–ÉÆÉx+ÕáJ¥Rœ8Þþõ_#“É$^1*ìHq7ìÖN¶ 4ƒïQâB¡P(”£P( …šìEÑCH$RÆä~IÎ0 U,Å>mr÷íýêƒU4”ø¢P(ŠÇ%Æ( …bˆHJ6}ŸMß§?ÍÑ…FÆ0ȘF<ºËý4}Ÿv’·LÝx “ðPJ")Ñ„@»ËcRì6ñ“ã꺖ü¿ÜKiJ…âÎír«l}ü[ ´W2£H>1%N‡°F×Áw54MCùó)O5¦(1F¡P(Có¦ïóï/^æ?\¹Jlz ò–ÅããüããG™Êd0µ;ã‹?Ó |þàÒUþôú-þå ÏðÆø¦~·ƒ›L&_{q»Õæ³3Ù Çò9L% ÝÇAÏݪ !ˆ¢¸b’®kDQÈíÛ·©×ëD‘ì݃¡Oì²më5]טšš¢\.«É±âašÈ½¶¬ãûÁP[ü[¡x0„H¿t]¤¦!•£P<%CÍÁVbŒB¡P(¶&ñÄ+Ò^Òô|¾qd‚1Çᣵ ~4›bÊ⟛E°ÐîÐöCжÉXÚÁÖ ‚(¢áy,´ÛDRÒö:A€†QˆOÄB³C+)Xcé †ÐˆdDÝóXjw�O§(Ú)�ÚAÀr§KÓ÷É&SY‡ ’üå­yþýÅ˼11Ê?ž›ãT)G'¹ÝjJÉHÊ¡ê¤0…öÔ…Åì5!í 3»1??ÏïÿþïsãÆ Â0n{Lr·†Áw¿û]¾ûÝï’ÉdÔäxèhšF*Ù¯âáõ¥€eDØF„¦í&R+Š'öá?�”£P(Š='îßž™áµÑ ?ž_äÿüè®o6¹Ñlò׋Ëüry¶PJYüƒ™I~íÈ·›-þÝÅK\ml’5-¼($”Q,ðD?¸zƒwn/ôēߜ=Ê[“ã\m4øÃKW¹ÚØD˜H;üÏ>CÖ´øáõ›¼»´Ä¦ï“6L^­ðåÑ~v{‘–ïóîÒ ¡ü³ÓÇøƒKW¹X«IIÕqø§'Oó¥jý)cÚÍ#f·÷\ºt‰üà,--†a"´Üío€ÑÑQ¾ýíoã8º®«‡HñÐú¦¸ÝAœ—hg[T(pOzp³3…BñÔ Ä…B¡Pì9‰ï®Ë…ZH RºÁ»‹Ëüéµ[T‡×Ç«üøÖmþäúMŽdÒüäö"?_Xf:—ãH6Í߯¬"DHÞ_Yá®\'kê¼P)ñÉzÿpù¯ŽT8¿Qc­ëòRµÊR»Ã+küðÚ Þšœä‡×nP°,~}jŠ×6¸\«ó+£#œ)¹Xkp"Ÿç+cU>XYão–9U,p¦T䣵 >\[åÅ‘¢2¡ïp!žÀú¾ïû„aH…#S¢dgU !@†zž4žçEQïsív‡ {aPRFäóyZ­6AE’tÚÁ0ô$´)ŠâÉu³Ù$N£iØ {Š¢ˆV«E6›Å4 Â0Ê"„a„ïû´ÛòùÜP.)%›››¸®K>ŸGÓ´D8ò}Ã0BCÓš¶ʵ²²F>Ÿ‹Ë{wº8N Ó4Ñ4ÑËa"ñ<Z­F>Ÿ'•²·.V²š¾u|ívMln6ÉdÒd³ÙDhغ7$Ÿ¢ˆµµu¤Œ«T™¦™l¯×똦I±XxŠÄˆþuG%„V€£¼b …c …Bq€æçÿöÞèBF’ñtšgJþ~yÕN—ÿñ¥g9S,Ê¿¸y›ËõM~¹²N7 ùggŽs"ŸÇð—·ˆ¤ä¯n¯àE!o™áÍåb­F'Ñ…Æ·§p¶\à“õ:×6›øÜl6ñ£ˆPJ–Û]®Ö[|m|Œ7&F¨¦mæ[mþüæ<gJ¾26ÂçqÈ›Í&S™4ÿdî(_ž¨öÓ~¢V5w 1»å’ÐÓ6¹3S…4­óótkÈpà}š øò,V1KëÚ í+KÈ ÚGE\¿~ƒ[·nQ©”I¥RèºN:áüù ÔëõD|8vl!¶m³°°€ï¤R)R©KKK˜¦IµZeccƒb±ÈÇÌÉ“'8sæ4KKËܺu‹ééA×u>þøc677™˜˜`nnŽõõu*• ù|Ž¿ú«Ÿ055E«ÕBJI>ŸÇ0 >ùä^yåÚí6'NœÀó\nܸA6›åoþæ]¾ñopõêUnܸÁÄħOŸfssMÓ˜œœäܹsX–Å•+W©T*¸®‹mÛ¬®®2::ÂÚÚ:gΜÁó\>ûì<®ëR©Th·ÛÌÌÌP¯×Éf³4›M&&&¸zõ*år×uñ}ŸO?ý”ãdz¼¼Œ®ëDQ„¦iÌÏÏsòäI …üS#Æ1,Â(ÅÁŒŠª) %Æ( …âaOv€ÓÅ<#ŽCÙ¶ycb„gÊe>XY!±5½7/×@ )½ÏBCô_믑”†¦Ȉª“Â#¼(äß^¼ÂÏn/1ËÊC‹ß;žvøÞ©¼·¼ÌšÛæß^\åÿ½|•ÿõÕ#9  h¼>:ÂÚ —OÖ7øpuƒÏ/ñì­ÿêÕHÚ@E–§ò~î9Yݹ]³ ˆ$á rZ ÍIãº.Q%ûi_ÄÍ;¤fË´¯­�ÃbŒëz4›MšÍ&¦i"eìyR¯×i6›xž‡ïûÌÎÎráÂER©étšZ­F·ÛÅqr¹BšÍ&�›››,..’ÍfÑuƒõõ –—WBãܹs¤ÓiVWW™œœ¤P(£££|ðÁt»Ž?A&“fff†ÅÅE*• žç±ººŠeY >þøcªÕ* xžÀÒÒ2³³³ yŠÅkk&''ùè£h4LLLÏ盕•Â0¤ÑØ$“É  Áf£I½^çòå˼øâ‹¼öÚkœ?žÑÑ‚ äòåË„aH½^§ÓéÐl6Y]]¥Ýn³±±A¹\fll €ÅÅE&''™ŸŸ§P(ðꫯ>e^1Ãä_’]¡Ø£µ©¶öÆ(uŸflQbŒB¡P(¥eÄ??sНޯ«Ð$0Ë1 ~tkž«#œ[Û êØLeÒÌä³Üh¶ø«ùÛÜ.¸P«Çy¼P-òáÚ ®®ã:ïÜ^bÓóùŸ^zŽ¿[Z#cš|cj‚Ëõ×-qE¦ùV‹gË%FR6ÿÏÅ«l¸]Ú]tM`j‚ÛíŸ×ëx!t‚€7'Æ©».?¸q“+:^’VÃÝ=¹U+ÃÜÑiºÝ.õz×u{ФV¯³Ú¨Ýa±XR*Éårø¾$!CSSSO½Þ Óé011N§ÓEÓcc£ø~€i8Žƒ"n¢($ŸÏ“Íf(‹Ø¶M>Ÿcee…£G¢iÈ?W,H¥lJ¥SSS¸n—r¹Œa†NµZ%ŸÏ±±QÃq …¶m3>>†¦éT«±ÇÊÊÊ GŽ! ƒž`“gjj’r¹D·Û¥R)“ËåÉå²T«UÖÖÖ˜¥ÓéP,p]”ã b±@¡Ç0tt=Åää DQÄÔÔ$­V!À0tJ¥R/TJ'NS*•’䎓¢Z­†ÙlŽ\.Ùz’&¼}áOÓ´»èª”·‚âáMÈ¢(ŠÃ!% U[{ÐÌ`å?èÛò¾ûŽAÏ]÷³Û˜õ ž¾è¾îåó[°íów¼»}þ^ÏO~ÁÏ?¤ï*¯B¡P(’ÆçYØ6–îx  Ð&C’·&ÇXîvø»ÅUÞ]Z%c|çèΔKX†ÆºÛå§·øl£—ÀMÞœãV³Í; |¼¶NÞ2ùÖÌ$é4¯ŽVùùâtåiÈ^4LMCJÉ_ܼEøaÄWÆGx®\dµÛåT©Èû«ët€zê óíï,,#ä “ptš¬i©ÉÚŒà]WelÄjšNÊN‘Ëå8{öl&ðÙùó¬Ÿû`O‹%NsâÄñ-£XÒËÿç<Ù=Djg~•ø-21´!ÎåÒ?þ|>ÏÜÜìƒ>Ÿ?Óû¼¤R)Åí·×–Ÿþ¹8à `¯M¹\bjjrh¿333LOÏ�’jµšœ¾‚¹¹£ÌÎÎ œóÎ*?ý¼6BhLLŒ3>>¶ãûïVt:¯'Eˆq]—k×®qüøqU&]ñH‰"‰ëy@ˆÐÄ¡c¾èÜûP«�]×Ñ5 M×½…)ä} RÊ8çYõÝ'ßCF r=¤+«L%Æ( ÅÓ4¸ô¡ž¡#·-kŽ¡óÍé)N œ(ä·ÙC‚£¹ß;yœ7ÆÆè„EËb.Ÿ§d[<[.ó»ÏžåV³IÚ´°5Mßçx!GɶøoNç•‘20$kœ)± ïŸåå‘ ~‘·L6}Ÿ¢e3â8üö‰Y^­ÒôCg6—e,íP°,þûgN±Ôî`ë'‹9þÅ3§¸ÙlIIÁ²8]*öB¦ÔdnÐ`ö~o·ÛÁ¶mÚ8T¦Ñh$‰~ççç{ JìjvoŸD‘J7»‰%}t]�Ú»6»‰ãô¿çIRÌä7¢ÓéðùçŸ333ƒ®ëJŒQ<2ü dsµ…ÐEoÎ{ïß½uyWï—½±y°¿Ž½ÄpŸÛK2,wõ·^Ûgþ>øý÷âø ö8~1à[‘¼Ö«p¨™´E6“"eÙñóÞ{÷ÝŽÛRJ") ‚�×óp=Ÿ „AøàÅ1pv»¬%$gú°õ‘^%¹84V‰1M?™D‰1 …BñÔ(1’²·ò$´c¸`é:gË%ž)—v5…LM0Íp$›MŒ€¾ÑäèÏ”Šœ)·ˆñ_ciƒÑôøcëH6Ñlfèpúß3-¦2¹3B ‘15ž+—y¶Ü3UEÄ©bž“ÅÂÀùHåV¾¯!»·Uš&’·ý¼.–e1U¯³X[ÝUˆÙ.:ô'ÙýªFƒÛ÷›h÷CV´ž—Ôp{ݪ°t7ûÙ^©hû±ô½u¶� Ä…;‹1—.]âÚµk\¾|™³gϪ‹¢xd¸nÀ'—6hu=dô &½=Eî"ŒˆÝühZü‘ô#b@ü”;Bh;ú@)âümrÈóp[_)vïÇå¶CßMâÙ"´Xd¶-M‚ LªÞÉÑç—ËeMN-05’ÇqR†±ŸŠµC< ƒ€N×¥h˜ö&:FÿääžÚÔÞ·GÞA]Úe|î>2Šb±IˆÝÕ­íJìî>$ï¬téºN6›‰ïŒ)£ª‚jŒy\Æi%Æ( ÅS3ëÉ/ d´M*Ù}ìßiölƒ{½KÜñ¿py§Ï [+[¯i»î©í܇bö50vµ7z³”Íf £—dccƒf³‰eY,-/÷ÊXïnцaÈÚÚQá8N’$w||œz½N£Ñ ›Í’Íf“ÐÇq°m»7éÐÃZ­ÆÚÚÅb‘f³…”07w” ð</É)ç‚1Ðu½WžzKxév»,--aYVR‚zlll dužZ­FE†A.—¥R©$aUŠê¢z÷ª_"\×u<ÏömåA¤x$ø¡d³å²Ùr‰¢Õε-AfO` 3!zB‡@tÇ wây²íu)ã™Hö¼jäÎ`» ¥Dxµì)-õBŸ5 C£ZÉS©–0tF}“åå ºžGI SǶâ>ºí4»]ü ¤˜51-MÓ’çýn<*eá‡]/BO•ÑÌ,š<ð¥ÞÅiµšl6›8©A¢ ­'6EIhÔÄÄÄïû7¢¦«k:)'G†t»]\7À0 œ”ƒe™Ccà½äàR,JŒQ(Чm".eìÓÓ*ú¢ŠìUC’wü|¼ú}0ey×ÂÏ^²ŒTaGÒÀ»Ã}Ìfs”ËeÂ(VÚí6N‡|>ïywL²Ø/Uíº.õzÏóÐ4-)Ó\©TX__gqq‘t:‰–eÑjµÈf³Iu¡ ¨Õj½¼3:a²²²Âòò2š¦aY¶mÓétÈårLLL$ù,ËJªåóyÂ0$“ÉÐh4H§Ó´Z-\×Mr ÄÇì%ùiGE\»v›7o2;;ËÇL*•âèÑ£êâ(IŸùÅû„0 w ‹”=‘#^üZ2RßqÜ[I¬’q¶ïÁ!ˆdì “ôÝrx$–Û>³ãE¢ÉmBÌ€ˆ¦”KEŽ›Á÷ºH)™œ¬bÙ×o,àû>G&F) Ü^ZceuƒÍVDÛõÉ…˜÷>†I)ˆ¤†©Å9âä½÷`?…QÈüíÛ\½z•ÍÍMFGG ‚ÀÇ$I„ã¤ø­ßú­¤ºÞƒ ?Æ‹¹Þ9JÂHÒlµ¹qãëëëäó9Ž™¢T*aš&HI×u¹~ý:ÓÓÓd2õ+1F¡P(F‰‘„QHÝó)[6ž”lz.EÛÆè¹.wBǰö6"#‰® î×i ¹F’åv‡ÇÁд}í¦PF¬v;dM‹´a²—C‡…Q„­ëhBSÓé;±ûÑévYXX`îØ†a$‡¢(¢V«±0¦´sÿAàû>–e%!A¦ibÍfÇq�1¦ïÑÒÿ_Ó4r¹¸S¿<¶ëº!Èd2ŒŽŽ&ž1¶m“N§¸ï%#„ •JQ(0Mß÷ ‚€l6‹išqéi-vé÷<Ë2±,åå}ðèºÎéÓ§™››CJ‡:(¯ÅÓ2D†õr‚ÈP›8´GîÛ¯'‹.C"J/<IÆËCá™C#óÞ½’U¶´"tMc´Z&ô=®\ºŒï{Ì=J¡Å´ ¤”ŒTs¬,/Òív› ^oIÙó*¹×</’ƒIÖÛ¿¶Õj5Y\°m]7üJ¥‚e›€|à!.}ÎÁë#„ Š"Z­ï½÷…B‹/Ëe“ñÍó}.^¼Èææ&·nÝâí·ßV!LJŒQ( Å£™}C$áãµu¾61F¬tºDjžGÁ²xwi‘_£„¤zÙvà¡ Étššçs±Öàd!Ǧï#£¹,~Ñ Ò†Áj×ÅÖ5Ö».#N €”n°áv "ÐuQÇæÜú×›|cr’…v›¢máè:¦¦Ñ "`Ýõ©¤,:A€¥iÜjµXj¯q¦XÂ1uü0b<ã`jMßg±Ý%¥i¬u;hšÆ‰|žN²áº,‹”nÐð=J¶MÍuI]—±Lš´a<½ cÅLO›´#Ÿ>;ÇÅÏ/b®ë¢ë:šnàÛ{$‹&d¬Òmsdï‹ ¦i&2–eaYù|×u±m›B¡@Äe£ûŸëç ÐuB¡@:Ž KÏCÓt4M#›Í’J¥Cup®ëú›{*•êU>ŠÐ Èd2H){¥¬µž'M@„¤ÓŽ2Xý6¢P¦.RJö)öH¼µ5iÞöJ¢fly»ˆmICbï”^g,·>(ûÂÇ wË^É_’L2²'Àìôz‘ÛÎaïÀÓ-á%êyÈ}ÂHˆq¨©®éñáE½ó–’(ФõÂo¶åóºG¥‚[›zwÆu]:¦i&ÉÅu]_ÛÑÑQLË@×5‚ ˆC‰Æ¢/$Ô ïû»xÛȤßÔuÛ¶†®a†�üâ¿à…^Pϲc …BñèDR²Úq‘€†¬v»¬u]|ah°ÔqÙp]æ[-,Mg¹Óåx>Ï¥Fo9B(%Ý(àêf“Vàã^1•v¸X«‘7-–:]j®ÇxÚáf³IѲ˜Hgxwy™0¼95F(#6=él†¥v‡¦r±¶Êt6CË÷M;¼¿ºÊñ|Ž×VuRËçYl¹¬u]jiM@F˜:Œ:þzi™‰´CÓ‹XîtRà…76›ɦ¹Rßd2ãðáê:gË%®nn2•Îà†!Û"m½°-òé®Nv}‚zaêtÝ.µ•Õ䕡餖1Ó›kÈpg2MÓ†\¢ûÞ1�¶mý'tprnš[qð}Oš»1bu]'Nïúz:íì˜T)!F¡PlMwÅ]Oôå@|Œ”{ãöËÊ8ôç„Ìñ!éMò·úÝж' lW[»3« €Ú KÛÎL Cm 6âNÊÔÖõÉyÆ{ñý€ÅåUFFNrêÌiÃÔ¸}{ Ïõƒ€…ÅU¦&ÇÐ5k7—q=ÛÒ‰ú~]n~‰çV«Åüü<Õj•v»M8ŽƒÕ«U«m ë¥R×u‡ÞQt]§Z­åÓéWSÊf³|ùË_î-x˜”JÅ$÷Z?OÛ·¾õ-*•Šz˜•£P(ŠGI$!7 é†n2–NóþêYÓÀÒuÖ».ç7ɦi>cé×67ñ¢Kä ‹Åv›é\†¢mpµÑæh6C7ˆ¸Õ¬ñÚÈ(?m.·òlx›~@Ö÷Ùô},M§’²ˆ$غNѲ9·^£ø˜Bà C®n6™Éåè†yË¢îùÍeI&0 mèD2â“Ëàd!‡”’¹lŽÖVIi:#)§ç¥Óô2†IÛ¸Ýê`ë®®s$›¥”²xwq…'E1e£ËòŸOs;éú´®¯Äæ^ÅBÌàjjÒ¾µ…A¼Z{¢Èþ¿;{ûáŠ$J„yŒ'ÌJHS<<5æ®Û (}f°]Êž³w¹œØ‹$Jª‘ät£—ÄWÛ«"PﻢÝK!‘LÒîïøÎ^~,)eÂ$÷JÎ/·D!KU÷ÆŽHR¯·¸pñåR]×i·Ú,.­†!RÂÊZF M<?@ÊÐííïß»L&“xÄär9 ïýc„Ž“"lÛ&•JmyÎ< cè‡õnµ%Ñ ÙuÐõ8w®÷C§ôd!¢Z­R*•’j† %Æ( …âR÷þÓ•ël“”®³Ôn³é»hB DDdL]hIØPœEÄáF^—ñLŠ¿YZÆß™=‚.4&2ó­69Ë eè|¸ºÎ‰B›­`o%¡�� �IDAT&—ê CÃ6t44$Ch)e@ËÈ[&)Ã`ÌI‘5ut¡ówË+TR),]Ç`ë9ËâV³ÍDÚ¡îy蚎®7[x!8šÀÖuÃÀ>9Ëä—««œ,iu}N•òüôö"Ï–K\mlö­®›óã@ßpŒÇ~èQÏVr³î­Š†ñ5ÓЯîðKB+ûM˜ŠGªÛÜ)á ÃaAbÀ»e«Hõ°¾I¹K ÃxËîþ:rx$ë…ÉÏ ~ìgàÝžÈ7Úíë{Úl;ÎD”‰«5y~Àââëëõ^ÈN—{îá!A&Õ¡Äö°§CÊÞ!”k—¬ÃºOÚ­bÖk’ÍIÒùþöþg¤(¤PbŒB¡P(¾ˆ1¡ëüwgNôÂЀPJ¾:1Ž<W.ƒ„×FF·uà×LÆ«qBðÉI"ñ\¹Œ�LM#”Ð8[)☿9;ƒ NòûBµ»\ Ð{å6uàKÕ RJŽä3„‘D  çÊ%$’ß>>·% MÀ·g¦c·/Ÿ˜š†|}r|hu\�s…\²º(zÛ%ðL©„&UÇæ¥‘roÚSë£i'NœàÍ7ßäöíÛ„a˜”uŽs%ì–°çEÔ{M×u^ýu²Ù¬J¸ªP(ž*ᥟ |W79 ]ˆ EJdâåõúؾâK}¯˜a©D …DD[=ñ€ß Bô™ÞK¿RÓ–"vŸ”½|1r«ÏœôÃ`©è^~™Þ±ËmÊŒDJëyqf ŸJÈ«càØ¿ˆl±ÛUï—rÞ­¼÷`8ؽ&w~û÷G ÒJŒQ( Å!G}Û€}¯¡ ¶»G2zÆ3),]Û·ôô`ùÍX ØiØìv\ÚŒ ó> ]L%�pôèQ~ï÷~/.Ï9’´‹Áº½šC?éîìììž¹YŠ= –Rª‹¡8؉¯ì r+1o?ÉÊ6ï—¡ñN”’îWJúzyX¶Þ&{嚣$‹Ä"Œ=OÖÝå�Ñ“:´Dœ(ˆ$ÿíC/±4Ü·ÿÿ ÚÑ«ƒ®<2^ÌÙú^‰F\B[ñ>´^ÆáLÎ÷Ajèt:\¼x‘ÉÉI²ÙlRÅÏu]Â0LÊ÷“»kš¦¼GJŒQ( Åã‹® ¦³é$¡â±›b LNN2>>~ß{éW%R“dÅÃ$©üEDQ<9U( å%¥ÄŽWKP'Î-ô}Sƒ¹dv«`·Uv:êy©„RE[B ôD‹2CÇÑË#Ä€§IO°Ñ”)û¾+[ÉzûßɸêQÔ«˜4Xúÿˆi}9f )p?gŒ&{I†{áJ){áÏ¢—¹/,õ®Gúôà’ï âjyï¾û.s³Ç’ü)Žã†!›Í&ù|žN»M§Ó!Š Å"ssÇUÞ%ŠG‰1 …B¡x 2boú¡EjuPqèû1œUõ=Ї‡Dõ~î0�&U†6ËD%z«Þý²³%H")cAFŠoOúzÈÈ~™ìž©ŒszE}Ïœ}o•¹î 1¢·½—ÀWjÛŽ1þ–HÈž #‡Ï§·­·/žèÔ¶Ê^÷lâãïý–¶€¡¦iLLL i­V›|>O·ëÒívð<ŸÀ0 “0lÑu»¸ËËŒŒŒ02RUãŸâÀùÿÙ{óË®û¾ósÎ]ßRo©®ÞÙÝÕÝ\%Š”LÊb"Z–-ÉyÉØ‚qÌü  ÉŒ‘cÈ1â蟘ž B€Aþ2ÄÈ <F9´5Û‘E'’)R\$²IÊb7Ù{u-¯Þ~·s滼û^½ê…¬ê®¢Î—¬®ª÷^Ýwß¹çž{Î÷~߯!c &>/E<êmÎŽ§“T‘KÙ vk™¬5†‡1¸÷‘ 3C¬ˆ©¡rB>”Í)‚%÷lQZ£T^2¤'„ˆNýÕÊoW¨VEÙ-'I¹„*ß¾Ö‚]xĨ2ASrðV±¤ÿåü“(½&W÷LN"óo‘™¢§œ:•—PéÍ0ô}ŸÏ|æ3I›*6ÉR›@ˆŒ*Ò¥ýL-c¼Î î c``````@&¬\ F JM&ÕÛ*ÈË·D)íÃE)³;§w±zĨ# ö¶¤Mëù?—Ó¬ó°¡T¥¢'åB ’üÅ*ÿ–:©I~îß•n;÷‰I²‰KêCS*‡R¢ WÔ”‘oÉpXOÈY"JaPhtjæ›í¦Ìö3/ŸBé‚z¶0I£µµcå­–eÝ‘wYþÚýp )ûµ|0`Èú݈·_뎒BÆ~{)ª˜ŽƒÕדÅcÛM°·›LÞÉdÓxÓÜórN–”ôZ‹â9Qb]ôÜU¾iiR®Œ™6ÖÍ_šûÂä&¹Yz5Rè‰B Tª0£|¡PÝL©e˜~¿²Gqº QD\>ü9¤²6Ùç×”LŸ\ ÄT«[Øá±</_SßåO2ïûmo}îg¸ýmˆ-½ç¶ûZ¦˜2øàÀ1Ä¡B%…F¾¼ß®|\kާ‹ÿ“$!Š"¤”ŒF#<ÏC)…ÖšJ¥21ª²[Ãi¬¶,j÷ã8ƶí"Õ©ü7I’Ç1RJ\×5w vŸ|™•·”ˆJäÉD\¢çþm¥#mRJ3R½•t.ˆJÄŒÈLwe®LAäB„ÊíÓÇ”R“%=cêËt)ÑY ²Ò"]¢J¤½(?‘±DR¥„Lþy…N ·ËªËôå;K0ø¾‡çyH)>@ý’DÑï÷ !cȃòÌÓÌ ›L‹É´{ëäM CÖÃuªT9¢+ÅÔ])ÅÚÚ:—/_¦R©ÇqAº¸®ËáÃ‡ŠØQË²ØØØ@JIF� ‡#lÛ¢ÛíR¯×éõz´Z-¢(âÀôz=’$!IlÛæÄ‰û c``°ó‹`(|UÊ ãé‘0ýW•^[~ØŽÔÉ™•œÉK“Ô„,Qz&3[ä1×)é"rc\*R„hBj„NŸÏ‰”´4)Uͨò~ŠÉç,~a’|y¬vy7²«CN l”Èø©Ì;L§%K²Ô³Q×Åû¾oÂ"õ‚IS”ä¾»&l޽±"ŠÓæ ‹5‰g ¤caY6Ie¨!c >8+Žü.hJ˜ ‡}ÛÆóüm'´ ÅŠ^çùä»<–œåA}¨xn<xçw¹zõ ¾_áôéÓœ?˲ˆãDZFt:NŸ>Í`0À¶m67»\¸ðgÏžå•W^¡V«Ñl6 llt8xð /½ô2Ãá$I8pà�õzûî;nŽ¡Á.R2ùb_Lùä$BžDT¤ee?b&ei;os]¨bĤT©TZ”¿UGH ÈÒ‹ÒR%2E 'bRuL¾‰DÏ$*ålHñ¹J~_¹ÍÍÚ$ûŒ¹R©‘Ù¶”H..1Ù{¥›Û[ïÿXå—¬œ°Ÿ”-M”•úËäÎì±RÞ5S_¥acðÿ}oÄ çF‘¢Uµyà°ÃR]rfÉâ‘#.ŽÍ.µ™!c îíbC+Â8 èv\z¿µ„X<ˆOd¥LÓ(„`¤^ ¿Ç†Õc!®”¼RCßJÅö-jµ ׯ_£Zõ±ítêÑh4h6›,..bÛ6J)®]»†ÇqX__' CNž<A­V%Š,ËæÀ6—.½KxžïûÅdÛ`Ÿ÷@cNi°§û'EÌt®(%‡\U"brÏ—2i!Êüb†Î 0ÒÍ㬠O­AOÒî´P¹&5Î͉ÈÉ™\¥¢&ʖܦ0ÎÉ£Ìó+%b¶¥–]U¦R£²…˜!1ÄLÙSFÊIJ¹“*x¦,|wžàPеµ5.]ºD«ÕBçyø¾Ï72Eå 677‘RÒï÷±,‹……nܸÁÁƒ©ÕjÅ5k71Ž4þÖ˜ÿBÕ~‚Ò’ÿùi_øh×üÙ#ZUÁÉEÇœˆ†Œ1000000ø 2ýÍ :ß}ñî»ô[ ‚ªKä[$Z£=Û«àx>²ârMvx!~‘´¥]mO-¢}ßç‘Gᡇ¸¥g̱cÇhµZX–ÍÁƒ]¾ûÝïrÿýgùð‡?„”’“'O"„Àqž~úi¢(õ’±,¥ óA@nò™$ £ÑˆZ­fŽ«Á^"‹r¢icÝ4ÁH«I)ÐD¹0C2j¦"ÙuAFÈ)EŒR*«x·qî¥T%%rßœ ™Å‘¤'~6™iî$OgÕIåœ$ *¦¤ÿ)5"Ý·Œ©Ñ‚‰º¦x8#‹˜Dp+Š`ëÉ6õîŒ'y‰¬ã¸¬­­S«%\¼x)+‡ÕT«5úý~QVÛl6¸páî»ï8.\àÌ™3,,,Ü•®u½›Ä)@ÅnH*.øŽäHC²1Pœ\4§ !c >¨«a툇>D¯Ù$J"VÂk¼q¦Oãü?òñ¨Ð´ÚDƒY©pàÐQŽ[xŽ7¥Œ ™·Öšz½>5Iž]d{ž‡ëº�Ôj5Ž9„¢0òuœÉA˲ð}ŠåŽY´€0ùÖ·¾Åÿøã8æØÜ{¦ðVÉȘÜ�Wϧ|‚ÒšD¥¤Ìă%÷JÙJbºÐ)ÛJaÚ«´*ÞsÂ÷LÜZrCs)¦}ltÆôþ-"5Íò²¡´Ý2)´…<š.%ÚÂ$é‰1¯Î½aDJI91Ö:3ýÍKžD©4ªØ×Ý!c<Ïcyy™J¥Šïû8ŽC­V+¼Æ„…j¦Z­R­V9räJ%(¥ŠëÏnÃ’ðØ}Ï_°SÓf¥yíÒ˜³]|'æÚú˜O<°°ÿϤÌ7.ÿ*•BÈbÎðÃ4æ2ÆÀÀÀÀÀÀ ˜g÷ú=ÖÆB²Ù¹ÁzkÌÛú ?æ/ã)vu‘û>‚íy\Ò«.rÂ9>%×/O¼Ê?ç$L^£?;áÊ·,eÉ-Û˜}Ýì{m÷ø¼ß˯}l*ñdqd°{PJqãÆ VVVXYYáØ±c¦ý îù¸˜“%:SƒäåC¹¹n™Œ)"©Ëê‘Ó0eË4Ô‡‹*EÏ’1ÅXJžœ”›ðæã—*©pÊÉH“Xë2T~¾üˆž£àa&œ[ddÈÇÏŒàQJ#$Y{å–4³¶½sÞd‡áº.‡¥^f é f³™qSÒ`iié®=®-øÄŸš+xýJÈ8[j^»<¢ê(~ô:KukŸFZEý~ŸÍÍMºÝ.I’öÛ¶M­¶@³Ù$Š"Î;Ç›o¾ÉÅ‹Y]]e8P­VYZZâĉ<ôÐC|ô£eqqË… c``````€�•pá¿â{ß}¥bDÕbãa‡¥ ÏoÒ ;Ü×X¤Ù8@/îóW\äpoõÅ-¤‡RŠ^¯¤ª—ÍÍMÇ¡ÕjÑï÷év»4 ªÕ*J©"Â:WB!PJÑï÷é÷ûÔj5Æã1RJ8PÜaÓZñÖy$ö¬éb’$ôz=,Ë" C‚  Ýn3p]ß÷Y]]¥ÝnÝn!®ëÒn·§T9»;Y×Z³±±ÁÕ«W &1Ä`õÍ<n:%J”f*u(÷”I”.~νPÊ<„(™ñ2EÆL {'»¢P§è™;¿¨ŒÏPÌОú­§‰=ŸjY±y]&®¥˜9eca™¥*•ß"-eÒ»Fr̪‘æ^ëÜ*¹énÀ°¥à‘cg¹¥XôôXøŽÌbº÷çxÇ1W®\æÕW_a<0 XYY!Š MTTJóÆ›orñâ%Z­6®ën¹–çó .ðÜsÏðÄOðÙÏ~–ÇÜ1ûI’pñÊe†zÀ8 ¡n³Zñxjø÷x€Þ¨G«¾Èj¸Æs—ÿ+çO øäè4NÃÞV•Ç1ƒÁ€ÍÍÍB>ñ<N§ÃÚڮ뢵¦Ñhà8ãñß÷QJ1 ¸qãF‘ÂÔï÷i·ÛlnnÒétÐZã8®ë2©Õj8p A»®‹‚(ŠðHa‚ô®ixžÇp8$ CF£Q¡µ¦Z­²°°PÈÙ vÁûýïŸ7ß|Û¶yñÅ‹2ƒ{Ó)K19A¢ôÄ ·D¸è¬Ä(Ñb¥x"Sä+oÁ„È i"FL{Òä„P™Ð3Ê•›:Så*•9–¹ºì S˜ç^N[=cräåHù—,AÉŸ&3ò…tÓ}݉qDeîÉûmÜv$8î<ªFÏM}ÚOs‹Ë—¯ðƒü�×±³øqßlnnò ßáÒåË–´û•¢lùVxñÅyñÅyâ‰'ø¥_ú%Žß_ÉŠ†Œ1000000H§ÈRŸÐ„'Œõ‘2Œ6¹”\¢»Ò¯÷^gÍîq}°‚Z«1ì-qݾÆò¡3ÓÓÇÌï%Žcâ8¦ÕjÑëõH’´_Q5'Nœ ClÛžR¼äf®•J…ñxL£Ñ`cc£ Z„H) ‚EJIÄq<}çVJlÛ&Š",Ëb0°°°€ã8„a˜Nˆl{ŠÜÉ;ùûì>¤”<üðÃ<üðÃSýÈÀàÞŽºP¡ä%DyZR™LIô¤DIM3¥¾<1ýZ°êr)Ò¤dIçåJSÂ"õ["±Îÿ~Î9S&mrs_QVȈR¦Sþ_E TA×̪cÒmIDJé<U©œ¨¤ ³_Qn×]8½óëÂnø½Ü{2dއZkF£!NÛrpl˲8ám¾õ—Ï£õälÑVJÞÜi[¿øâ‹¼ôÒKü½¿÷÷øÉŸüICÆls!5‹‹Öñœ©¡ßÏ+!Àö]*±ƒO#°ÒŒ’8½+5uåã.žD$ëµ>Dh µ©ÉW’$ÄqÌÒÒý~ŸcÇŽQ­V±,‹^¯Ç‘#GÃ8Ž©×ëqR­V‹R¥v;•+×j5†Ã!ÇǶmð<¯ u,Ë*þ&MYšLÄã8.ˆ˜F£ëº,..²±±Q”78p€F£eY…ŠÆu]<Ï3ÝünžQ%íƒIĈRбؓmo°•‹Q唣’©®*™ãæç~2I‰;‘””1sÔ%ijô¤$I鉒¥(?Ò¢ˆ–Ö"%FdÞô$Æ:%Â%–%R`[ÕŠKÅwp] iYT}Û–t6G¬u†tzã0)<p¦z¨.ÞbBÒ”Œwó­²}”rBò di=¨²%H2&Iìè™0±Ë™˜ÅΪ'²׎Yò`ÞùpïÏ‘ý©ŒÉ zÓ"¶´O÷ÕWxýõ×'½M—:Ú{„RŠßùßamm¿õ·þ–!c f.HŽ ® £‘i ƒ=·à°¥ÃOýqÂ(Bi…(§d‘ª2›T+­l™ÆK»®75‰’RÒn·‹ßkµ QS©Tð}¿H°Øn²+„ V«[Þ†ïûøi¤ÒÔzÞ„Ù¶m>¼å3çÆŽÀTÚ“!î&9³'ຈlÁjH™™±Q—É–I²R’{¼”ˆ˜ÜÔ·x¬t”'ãš¿,™ éM0]P4µPU­ºÇáCMj5ŸŠïRñ]jϳS.[â{žkaÛKZ¸Ž…%ƒQ@wÒ鎹±>`£;f£;f8 cÂ(!Ž’$Û‹²1°ØÅ”*y@ËRôw©Ô«00.‘<;6M6Úív¹~ý:–eäúxàº.Ýn—0Œh4xžË`0ĶS¾ßP©ø \*nì&rï´$I eH~MËobìWH)‹›'�¯¾ú*çÎÛâ “÷õ÷›¨ôÕ¯~`_2†Œ1000¸{« D­Nrðöæ¦iƒ=·(BR«,Pó§MóI’È£RKK‹²¯À{Yl—M"wbo _ îÉÁCˆzaY¦1˜æ>&Lo=ñŒI4S>,Jå¯S†ºjj¤ÝfŒÊ£¯³’J¾+e‚F/FxºKMÄœ9|‡¶Yl-à:–maY)$¢¬þГp³Yá™â%+¿ ˜ÕNŸ++}Þ½²Éµ•½!A¤IE’(TÝ]ö1Ñ…aošž”¶Ö"-Û’©©ïs’‘:»5jK)¹~ý:•J…0 YXX BªÕW®\áСC¬¬\'Šb´ÖضÍ`0DJY”ÕV*)ñ¿›dHž4Ç1®ëEQ–6”ú›…aH«ÕÚ·„ŒmÛ9r„z½Îw¿û]^{íµ-×ë4}L¡„¤R©¼oòë«_ý*Øó%K†Œ1000¸K°l›¸Ñ ºÿ~¬+—ã1EѹÁ=†L³I‘%GO˜Ñ3jš “e‹(ˆš;#gvòŽ£¹«o°×÷bz©Ï=UÇH‰ö}¢@6[éïØ±÷¥!Q“¥<Q)ÑdäK)ýH“•-©‰/iY†(œ™ÏKÞ¤Ôª>šK­æÒ\ðcÆaL+¥èVÖ‡…÷ŠÔšX%¬­­³¹qƒ·¾ÿ6žëàW< uÚ‹-.µ9rä0‡-±°Pò$]”é²SŒH«‰<ßâ衇,ðèC‡ Äq3…ôûk76†\_íqccÈp’$ ØÙ6tžÜ”µ‡Ð uÙ÷F>:óÌ„wêZP«Õxâ‰'ˆãÇqŠ2TÛ¶9yò>Ç%Ib‚ $Ž„HU’yùëêêFs‹‚c7$ ®ëf1Ï5ƒqœz–AD%û–ŒÉKŽscö¼D,o×rz”´da¼ÿ~ñ•¯|…‡zhO›ú2ÆÀÀÀà.]ˆ°,¬zø±Ç7;¸/¿Œ0åJ{––#Ç¥rŸ;Xb –-H•öf!gp×F×I/Ü«$ÂTòŒ‰ë½Þ5Ï#xìqâ?Š[©dF°æü-uª")7íM2ULþ{®VIÕ"™D¥éAR€eI\Wâ96®ka[6ºK«Q¡Rqi7*T+ÕŠMÅ·q‰ëH¢8U¡Ä‰B%Šso¯òŸþâ<*)—þ¤DŠ#‚ d0�6સc[x¾G½^£±P§ÕZàÐáƒ<x€Åvßw©V+ض=!2’Ȳ–.Uß)ÌJ)¢H„1ƒQD·Ðí¹v£ÇzgÌÆæ€(Š‚´¼I+51óÕ]êû¢PíNSJZk*•Jñåá˜Æ*W«•,^Y×?˲8tè B@¯×Çu],K¦îùkm;]N—ãÓvŠð<oªäfZå¤ £á|ßÂ0œRɔ疵¿ÏK˲xá…ŠÏ“æÙ1ûý–(Íößû½ßã _ø‚!c !“¦Ë°x€ð'?K|ß Üs¯c]»–NXŠûds—ºÙä¥È—œ¼~›«[¶7ó: Š9 q“}˜¬*n¹½;zLÖ<»ÏóÛò;¸°¹Õöòç )6šD+ˆ@ —DkH’I$¨Ø2¿¿©ó­ž¿Í5Ķåýùd0¯KO’˜ê‚̓7 ⴑŬuz7«¹è‚P$‰)2Ø}¤%ÓÞ {—ŒIïÿk×…ÅÅtñn a¡ÅLr˜!›n:†Îž¨·"{2Óq)QG<ü0êÁ‡pêu,ËFŠ´LÆœÁå¦Ö…ŒÒåÈg‰m‘– ɔǶĶ,,)q= Ƕh7}\à@»Ê‘¥:ºŸù·¤³Bé’$%xtV®¡eJ`h+U,)³>_âø¦â¯³=Öš TaD§ÓMçR"- DZi·Üwâ0gNŸäàÁ%jµ*®ë⺩z$/obËBYày®k±Pó8r°Vôï8Iè®­ô¸tµËÞYåÚ^q­T3diZò%Š6Þé^§”¢×ëÑï÷±m›J%%\Æã1Zëìûd~vàÀÝî&QÙ¶R)±äy.õzj$oÛv‘ hY \¿~½ø|Q!å¤Ü¦V«Æð¾ï3 ‚€J¥B»Ý¦RII±^¯Ç`0 C„¸®ƒ‚F£Q>ûßûÞ÷8þü_¸y¤ÍNâÅ_ä•W^áñÇ7dŒ!d¶ç!l›ø‰'>öxzA1~{g•/q|RKÅÎææÔÄr'È•÷Cʤ}ï¦+Å4—C‚» o±˜›·¸K7>† Ó îÊhʾS`iàô¼_ù߈þ=úR`Ù6¶ãà9Nš*–-¾Í<}È”_˜LéâÛõz…¥v•ÆB…ƒ‹5êuß³ñ< Û’¸.…š! JÛ^Ä$*FE%â¬dt›{·„QDÄQD«YǶÀ±aT2ËÍ“´.%fÏ?‚‰JU4I³F¬®mðúë?À÷=ªÕ*¾ï²¸ØàØÑÜ<qœÅí¬\dBnÄqœ%%SF³YöI¢hÖ5õ³5<'acsÄ8ˆÓ²*•þ4HIgž1Je¦¿;<²,‹v»ÍÂÂBF$¥ÉyµZ­ð+I’$Sh¤ÆÕŽc#¥¤ÏåIKùgÎ å§I¥T“—”ÉáœXp]·h»|òçó÷p‡v»](b&ï!°íýïåôõ¯½h÷y*Æü±\1ó…/|Û¶ù×ÿú_ÓëõÞ×{ÿÉŸü‰!c ˜’ÉÊ쮋ÎfS¹Êâv&ÒÅìî&/f‚m```ðà Á$þ8OK+LÃ÷–O´9m¦Võ¨øõš‡ïÛØNZRäØËΔ'¢t½Õjª,§H[Rš8މ¢ˆÑ(d0ÑïénöYßèrcmƒë××YY]c8ñðƒ÷ñ?ýÝ¿‰”é{*“bÑ_Ú>z !3»øU€NR%NÅŒF]lÛâêD«�� �IDATÕœ?…—*¯sjù8>¸Œ%eANäÛMÕ"QñyÂ0D)•ú²È´ìG£R’Fi”Ð %B)¤,Å`3I£Úñ¾.žçáyÞT{l×ÏÓ×xä&Êeµ]ùçí”Å|n›}Éÿn»}ÉÏA×u·Ù·ý‹õõu^zé¥[~¦2‘•úúœä—ù—ùWÿê_½/BæÅ_d}}ÅÅECƤ°l©§'N·3a000000؉Ū¹ÖܵŠË'ž<_uÓ.’’"eb~›."âD£UêõÅ qœ*[¢(f81éõ‡lltÙèt¹rõ×®opåê Ö76éõ‡aD¢ ÓHjO0±„](m´Ò€š,^KIKÓÍ4¡0O™{ ÄqB Gtm—úB•Îf ¡Q2¢¬| Ž#@ã8®ë¤åÖžK«u�ÏuQ*ÌR§4X©GŒÊ¸) ¥ýÍï+Ýë~(æžåŸçÍÑv’(Ùn[:+Uܯ~N/¿üò\Â¥Ü7óç¢(b<óå/™/|á Üwß}üʯü _þò—Ùœ“D*JµBlß^zé;üäOüdZV(öB3dŒÁž› ߊŒ1);µÐ3דÛh7Ro"5·­ÊªÅxÒéô¸zío¿}‰w.]åw®°±Ù§ß2©9kfÊ&IæEÄ™@`IÖéÒ;G¨D!¥À¶d–]Ô$1á^tñ}ž2&?ÞeTy<1ñ$:A«„p<¤×YE‰cÛxVj$ë8–í#„Æ’Ò’€D‰ëØ!ˆ¢I ¶Ö‚DèÂ'FCÊÌdKz—CÅn§ŸßΩPn·|>v§çÐÍ^/fü¢òfI}œô¾•8¿ùæ›SDàlÿÌ¿'IÂÆÆãñ×uù'ÿäWùÿâ·8uêÿèý#¾ô¥N§Ó™ôc@d&ȹuþ8¥c#„à;ßùŸøÑãy>¶öÑ,qÀ1·?aØi¹ª™ŒìÜxºWK ÌXÿÉ­ ×áhÌf§Gg³ÇæfŸµõk«ltº¬¯wèõFŒÆ!ãqÈ8  M<J#˜Òm–¼y4"5ª×³Ç*-:±R©×Š˜DFO“.šykõ²‚g¶o–oîÌz ¤þ0 q8æðÁÆTÂMê31-%!N&ªœ(Ò$Jj¡Ó„)¥túr¡AKRc]$^‹<n£Ñˆµµ5Št¥jµJÇSå@RJnÜXÅó<|ßÇql‚ À¶m,Ë" Cúý>¾ïcY¾ïS­Vw°¥ß/v.o$ŒÃÀ±uOpÿ!‡º·Ïß‹/¢”šò*÷©<™*I’Ìü8=~++×ùµò«üöÿþ°¼¼Ìoþæ?ç×ý‹t66¦¬¼ürJ=4£~ùoÿí¿ræô)Ç)âÃÿú'?…ã8†Œ10000¸ù¤ù^%…è-éÆyf7ÚØ,” c°÷E—Î_åíw/³²²ÊÚz‡k×W¹¾²Îêú&N0ˆQIJ0¤ ÌÜÒML•2‘?NÙø]ļK€Ö0B’X!ÝTS,™ÒDë‰"fBÀl½fO~œßGór¥ôµY ”Rx¾œQÒˆR¬aÙg< ð« ˆE¢tZš”•U !K„‹@ @É´”i‡O­5«««Ü¸qƒñxLEt»]<Ï'Š"êõ:¾ï†!‹‹‹\½z-KU:€ºH­R*¡Ûí2‹Xìûï¿¿HJÚ ( —;¿û­ß¾0޵mþú™ íšdc˜ð×Îúøöþ™'$IBEŒÆ#Ο?ÏúúÝn—(ŠŠñRd'„&íki:•Ä’VѶÍM¾øÅ_ã·;%džyæ¾øÅ_gccmÒçÊM=$X[[cs³ƒm;8ŽÃh4&Ž#CÆl¿@¿Û¼¹dv’8PNRHIšyW½›E¬n—•<ïqq“««.=_þΜ}Ûü¼Ý6oöYæ½ß~Þéý™Hv³éºYÈÍíƒÆ\Ô`?ôS™ÉåË ){áZbÎ÷ŽÁpÌþÓoòïÿèOÙÜì§×D!Rb¤fá²Ñ×:ÐH¡.X®�%H…P$u™¹ÑR*-ÚŽ ‚€8I¨HcËbõ©ÕVbEg±ØåKÉ, SöÙú·“ø½ôé”ôA¦‹æYÏ’\EE©r¨×Qoæ4:%c”F–bI¡PÖôV´Ö$y­Õr2J)jµõz!a°°Ð \×£V«Ðëõp‡ƒ—p—nw“z}߯Ç ý~×õYXh¤DeÛÜ)ŒcÍŸ¿ðoØ& ÿàÇšüÌcUl þÖKë1÷röì¹2;éõº¼ùæ¼õæ9¾ÿý·‚€ GaaØœ_Û¥X¶Eůd&Йj&ë‡Ýn—ßø_ç™g~›“'Oñ¥/ýs~ù—ÿ×m˜é¹ 5+O’„jµŠã¸€À²lâ8¹çc¤!c ~ˆ ïe2EQ:̈ƒ_ÀåwSó‰³Y;•Û(½KÇ I¢ÞW60ØmH)±mÏópçž÷Ó;yc ?¿ý\ߥq¦ÂâÑnÍÆ_´ñ=,WâÖ]®½°íÛh¥h¯âÖl.ýÅ—ÿb•x”Lh›± ‚¹>J§IEq#ض,žLp§L|u™„™ýåkÌö7G(Ô –%Çt6’ÔFƒNBJ¤%ÑJ§éRf†Âšv«]”ÿaœzãèTI#3BJ*@‚Êô5ZiT)š{§ê”„E¬µeYh­i·ÛSnY’f³‰Ö:‹›;v¤´#º˜÷”ãªs…̬ ò{=o¨IH¦�1‰VxR` Í8J€½IÆäÆ»7n¬píúUÖÖÖX_[c8ì3\ÇÁ¶,Tµ:餥›-²|ã%/‰ãf}BlÛ–y¹Rš—¦—JËÂq¼Ò>+ºÝM*• ¶}ï(CÆlKÄŒÇcÆãñ–ÉÈû™¨Ïnã‡íÎm®,ò}ŸJ%­M/Oî&ídH™r›ÅqÌx0 Í‚ñ.,@gïr…Åí÷Õ(ŠH’ß÷ñ<obŒzI·s¾UÞ|H)h,Ôh«°ô©:–c!l°+qã.¸ýD›Jãs±H uHïê�•¨é1ýf§Þþ¸aDÇÑ'§‰–ÌWfB­Ì&4NÞ@OyÒÀ¼C.Jž4¶maI‰JÒÒiID¦ ±l Û¶Šò¥üïâÄ.úYg^0J£Ê6Z#¡2LéæMñžÐï÷‰¢¨¸Æ:ŽSÄŠ»®‹ÖÛ¶I’„\­Znû4Ž:%»†Ã!J)*• ¾ï3¥&³Q”Ÿ\ §µÆó<ªÕê¶1Ø[ä~ä¤Ã+]Þ¾‚–|ïrÀ±¦MÝՌÄ£MÏž'I’°²²Âóßþ««7ˆ£8¥Ú„@‰çùA€ÌÚc+ÉR&·…Íf“ßú­g8yò—.]äK_ú¹êe–…‘¹Ÿ‘S™ç¥DL'Y_°ñ<ÿž_× c````0;NÄü°/ ó¶¬T|ê[j•ËwÛ~Ø¿åIqž”à8i­w§³i¼vv±ÎÞá5DÌ÷Ý$IF�øþ½›ðßîûîFL‘4ªÄ›1£õ1•v•jËí٠7*J¯†\ø£kÜ8·I¸¡bjN[êÜ’÷ö•Öš0Š ‚)Žc£…Eg$KNrlUÆÌ2>Û穈a¶mÓ^l°PµnkÓR _錘É<crÿ™'AÐ:‹  eÑíNø !p‡~¿ÖšjµJE¨ÌŸD)…ã8 „Ù(ŠŠ¿µ,‹ápÈh4*Ô¬B’$!F£I’ç¥[žçÝ6ãÚ‚ÇîóøŸ±¹ÑKHbF!„±àÓTñÉ^SÊɘ çßÉÚ ,ia[éͦj¥J0JJ˜™¾Ä´zLÏ1Ï<óÛœ:µÌ¥Kùâ¿ÈÆÆú¤§*2UnI99ß2ÑU½^'Šb:››,,4øëŸ|šv»}ÛÇÈ1w qÁ– Û¬zãýLòŸóm~Ð|éMãº6Ífc®,Ö” L·ÃÔâ »KY­VÐZÑélrÇú¥AŠ ð}ß‚;DlÇã‚HÜ0Çz+S¯×Ñcð|ü–ÇÆù:ÔájHÜÓ¬¾Þc¼C"Ø’Óœ”ÞQÓŠÂX%i©’iéPQnDNîè-ÄËVEL>¦N«.·7S3Õ„8ŠëæýD§eFa1FÔI–œ“z×è™q]©ll‡ÂÀW+5iŸÊ-Ë¢ÙlÐh4¦ö{v’>/Ф¨²¿Ž“R¦œŒ)oc;bë½(âÚ5I³"·¸ÑY–ØVÍ´WÆ Ïó%•Sš@¦@@¥ZåúÊÊÜñeE=„$4[M~ë·ÊD̯ÓétB~2y9’,Ê›Ä £‰¢)$¯½ö:q’ðä“O²´´tOU‹†Œ10000Øv!œËng/˜;±à-_Œ……Zd<3‹ ðÂÂÂm×ñꬮ>7ès]·¤î•6M'nšZ­ºíçÚ­…PŒév{ضM¥RÁuÝÛž„äòlÛ¶q]÷®,Ö¶›°åð}߯…À½F’$ÅÂÛ¶ÓXT˲öT?¼]aËDyUyZIꉑ•7DQ!»]t]÷ŽŽ(Šˆ¢èŽîVïT¿ˆ¢¨8çïu"žÁ’1‚z­BÜUœÿO+xU—îµÉ0!ìEŒ7ct’*U¦ uE)iHlu¥eÒAKÿÙW uê%éµÍ±­âqQè J‰M3Ç~Bƈ"á©ü½LÜä$MÙe4ã{“E²R Š"Â(¶ìTù¢–mS«. ¥…F'©BD“EykÁìU'ßó²gÌûï­ºˆOžw>Ìûy똰U8oÜ–ÌÊÔqïéú7§ T’@kÍ^TÇH)‹ò­~¿?™÷d„Èââ".\˜JìºÕøÔjµxæ™ßfyy™wß}—_ûµ_+1©ŒÌH/11ü͉O I¥†a˜öÕÑp„_­dF¾Îž c````°eñ0KÄìÆ¿¼$I8þ</¼ðQÑh4øÜç>W$L”’rêP®ˆH’„+W®ðꫯrôèQÚí6gΜ™šD•“"rÓÜ»MÆH)ñýÊmµåÎ-¢4/^âÿðh·Ûœ={†üã8Ž3U’Rn›ò$S)ÅŸþéŸqúô2<òÈ\‚ä½Þ¼Sb&oÛ¶ñ}Ÿáp´g›qóÜsÏáº.O=õ×øÎw^¢Ùlò¡=’µåivi‚¿—Ì»Kv¥çï+¯¼B£Ñ`ii‰¿ü˿䓟ü$õz}ª©lrýì³ÏòÙÏ~¶0ãB°ººŠÖšƒN)«rÂ÷üùó\»v§žzê®ËÒsóó{¥à2%}ïo‘Y«U‰û WÞZA•B¤$Œž^¤k‘E?gõC¹NFæ~»‡"ÊŒ„ܺ/Œ\ŒÆcP Ï–S×2- ÝÉuŒÞº=1ý=ï³å„Òf§K¿ÛMýj2£ÞjͧVóiµš™R§´ßÒO‰G J¥‹q¥Ór¤²¯MùÚ¬²ßõ·{]~²;çòÎÐU»qn6›,--ÑétÇY¿H¯{GŽ™R¹ÞÎ\ç™gžáôéÓ\¸p_ýÕ_¥ÓéLÈ)!°´N z)“0ºT&:.ÞRH<˜r».õz}O¨b c````0—4x¯wtÞë"Û²,–––XXXàúõë,//óúë¯Óï÷i6›DQD§Óáá‡&Þ}÷]¤”œ={­5o¼ñ½^óçϳ¸¸Èúú:—/_&Žc’$á£ý(/^d}}ñ8àé§?I³Ù¼«“5¥¾_AJ±m;”'&;µpÒZ°¹ÙeõÆ:÷ÝwÏ>ûGœ9s–×_n·Ëòò2A°¹¹É`0àCúZ§$M€àÕW¿›µ•àüùóÔëuN:ÉK/½Ìâb›ÇœÜõ>³WT19¡xîÜ9®^¹Fc¡ÅÛ?8ÏâbË’\ºt™jµÂââ"Ýn—jµZ9·Z-Nœ8±g¢oF‚íÖ˜“$ ï¾û.‡¢R©ðúë¯súôiÞ~ûm\×¥ÑhpölÚgƒ àùçŸçCú¯½öQ±¼¼Ì³Ï>‹RŠ_üÅ_äêÕ«t»]}ôQ„¼òÊ+¬®®"„àÉ'Ÿ,Ò^îfߘôSaŒ¹÷#¨×¼bÜ.Í…ŠlÆoTäéEÌ.ÙKÅ<ã\ Š9qÓ¤¤Æx4F©ÇI¸ºø·ìCæ£çª7ni=ï9ÏuXhx<°¢fo–¤¦¥"Ó{PxÌe$R®RZ#Eš $²¦‚”‘bÊÀw'¹†ýF@æeó¯kzŸ'i)×§?ýi–––xöÙgÓ%òrtA³ÙâÆ•â*Í;nãñ˜·Þz‹úOÿé3ݺøO%Š  ƒ€D©©~ôèQZ­V‘t—ý†Œ10000Ø“„Ì­"¬wr‚“o«ÕjsøðÂ0âäÉ“üáþƒþ€ã÷çܹsDQÈÅ‹9zô(ßë¯h/¶é÷¬¬¬`ÙŽí.¼ƒë8|ïµ×xú“Oóâ‹ß!"®\¾L{±Í_üÅåcûXQC~7ÛÕ¶o½àÞÉ£ÖšÑx”•*9¼ñÆ›üù׿ÁòéS\ºt™õµu–.á86_ýêW9}ú žçÒíöp»ˆ7_[[ãµ×ÎqýÚu~îç–ßÿýÇ?ü‡ÿàžLxsÀ|ñq¯'ݹjãìÙûùƒ?øŽ9BÇ\º|‰õ 6:~ú§Šçž{Ž÷ Š"Ö7Öù¹ŸýY3æd~JqœÇ Q³±Þáþðk|þg>ÏÛoŸçò¥+\¹r…3gÏ0 ‡#._ºÂùóçÙXïÑçõýðÍo}¥4Ãáˆn·[”@YÒʇwÿóM泟 „ V­`åc÷ܨK„LF¶é[“ ³¾ ebdzlÑ GAj6k‰|µ^$)å$Ì­ë³'Û™Yš’ãP«z¸Ž½e§EFÈLÞ;Ý~¬Tº0VºX§Â@‘F\‹4b[èR9ŽÚ=/”œìÍo¼ÌUe‚m§o„Ü b¥Ù*þü­1¯_ QZ³X³8Ú²iW÷t8° ©ºrOŽ!¹buqq‘|pÆ(Y£µâÔ©“ܸ±2g~)¶\×Aðÿñÿ2eö;9."%ö´FjQ\3¢($Ž“-Þ{RJîà~,Û™š2§1æ{„È2ìÁ¼‰É=܃ládsüø}´[‹:tˆÏ}îs<òÈ#ضÉ'9ur™ÑhÌÊÊ –OæèÑc©º ›âYÒâñÇçàÁC\¹|)->ü¡G©Ukˆ»|ù›LöîŸRš~¿O­Våoÿí_¢×ëaY}ä1‚ d0rìØ1>üásùò•Â_# ƒbâ4ŽxóÍ·¨×k…â¨R©ò‰O|‚V«uñ{ïÜyì±pðàAÞxã úý>q”ðñÿ(Ÿú±OqæÌY’XÑëõGlvº:thÏ©bæõÝÝÜ?!¶e±ÙéÒÙØÌ”?ôŽíráÂ;Ôë <úာ­®³ººF»½Èh4æè‘c>t˜8NX:pÏÿwŸçÔÉe®]½Î÷?È}ÇOp¯äýÆ\z_SR¢‚(—5l -d¾¸Ô7%aTñ%ÐÔŒGÉ”²”V8¶²ÈèÜ“Cl-1Ê·q³¾·÷IJžh¤˶ ²T)ú–�‰Ö„aB¢ Qš0Œ‰ãxJk¢XMElë™ýš<j¬P´ÖŒF#VVV † ‡#Ö×7ˆ¢ˆk×®qéÒ%®]»F¯×£×ë±±±A·Û%‚¹»‰(.Œù7ßìó‡¯ùÚ«czcÍ'~äD…o¾=b­¯¶{ i)¶_|U*jµ*õzååeŽ?^øª¥êV;+ŸbI¢H’¸˜ƒ¤Ç#LU/aTøEQL„ ‡CƒQO]³ò÷9zô(Íf“N‡0 ±, ßß;1áFc````°'ÈË’¸®‹ë:¸®Kµæ³Ð¨ñÀƒg¹xé¾ñoðÉO~ß÷PJeuëž~úiþäOþ„ÇS¯×©ÖjÙ:•J•J¥ÂÂÂ7nÜàÿøéõz÷lB†!Z+æ¥SìÞñ×qxøá‡ùéŸþ)jµÇŽåå—_æ?|õ«<ùÄ“¯¼ò2ëëü¿ñ7¨V+üÇÿø,RJžzê)}ôQ¾ýíoóðÃqñbZ"¶P¯S¯WïÈ xg ¦4íc¯ŽãP­Vi4ü¿ówø—ÿò_²¼¼ ÀóÏ?ÏÒÒŸþô§yøá‡‹8ÕF£A½¾°§ˆ˜yõü»I(äñ±û‘ñûÿï¿ãùçŸçé§Ÿ¦Ñh „àk_û­V‹Ï}îs|ýë_çÙgŸ¥Ùl±°°À`0@kÍ¡C‡8uê_ûÚ×8{ö,¶móo|ƒÏ|æ3|ö³Ÿåÿøi4=zô¶MÁwzbüZöõU‘V3õGI¢xš´(½FLœx§4¹ê‚ÜnWL' •˜”íʇ£�•hG’¨•$™‹BË”œI-âŽÏ÷­ï™R@ãñ˜0tê˜A„_©è”8n4ØžƒmÛÅÇvR_$!Ñq’’7:ý´iltÎSM?i ñÎ/Qqùòe†Ã!ýþ€ÑhLÇœ8qœ·ß~›ápˆãxEɨmË¢,úäÉ“,..Þ5öDiÞº3'ˆÌ?çc÷9m:Ø<pÐ¥7Ô°¸?æ®ëíZ&}ôQVVVfú¸Q8Í~NN™´¯¦ó=5Öæ^aaÒjµX[[£Z­bYŽãì)c}q—¥òŸeé{þee_vöåÐÒÃߺ'ºPƒ÷¹Ø›°ô QòxéÖ8tü4RZ¸Iv’$ ƒ"™èK¸ƒ‰™._¦ô–Ë™RŠÍÍM¾÷½ï±¹Ùáµ×^ãïÿý@£Y¿kž1¹TZkÅÑ£GöTÌíh8âßþÛÿ‡<öž|òGî@¥¡A 4úž$Äôz}Ö×7°m{o-vµ¸C¢OßYße¤ ªÚÜØÝo;™½ .¼Ãïþî¿áŸý³ßÜáóôî··çyÅBàƒ„T1±rù:Q©øxž‹ë¸Ù]o¹oˆ¨¼<W)E'„QÈp8bŒÀÿóË_áÏþË7ŽCb¢êùÙ.ØîÌ×BLÈ-¶D=Ï’0³¿K!ùÅŸÿ÷—~ž„ÿûÙW #PeŠÕCdå Óó—y¤Ë­¾§‹Zŧ~ì Žmâ{RZEÙ‘”¾ç1G<x$#?b<ÇÁ’’A˜ðþóÛ\¼Ú/©ë²vÊÚL ,6<þÇŸ»Ÿã‡ÛÔª~:·âÖ×­5Q3 Cú…[;Œe{8ÐFkM§Ó)9Óh,Ç1kkkX–Åx TB³ÙÄ÷}´Öt»]î¿ÿþ»v­Gšoþ`Ìÿõ_º\ÛŒI”ægõø›«ã9‚o¿Ïg>ÚæP]Òë Š´¾V«¹Å‡î^ŸGN‡¯|å+ ƒBY«Š’5Íùóçyå•W¶íÿÛÌžå�¥ÔT)Z’$AÀòò2gÏž¥R©P©¤)J§Nâ~á ø[KO B ξ’ìK•¾té».MJõì,· £Œ10000˜‚”Çqˆ¢èîËëÅÜkÕ-þæfúfš…F3g—¹~ý:O<ù#ÔëÕ»ž¦$„ I4ÝnŸÅÅÖÞQt¸.Ÿþ‰OÑjµîpá$²ÿç›Aîf[†aD¿?Ø%uwÚ÷>fI˜»Ú¾"¸ à~ñÖäñýØ–¹\~¯$w¼·ãØjÕ‘–U)iPz_ZÏ»ŒÍú¹dê‘[]#¦Ÿ™/0ŽHT‚çæIE B§1Mïã4?fK<×Ás]F£>®ëd 1¾çRq%è€îfvû�£QÈʵ Ξ9†Çı,LyË¥JEœ6¡5È”ÐÚ©F °>¼ísG½«ç¬k >zÒãøxÿöW#âD±9Løú¹>Kux|¹FÓß7þ¶K²ÊɘӧOo¼ñÆÔãÛ17{|öù8Ž‹ôºS§N±¼¼L£ÑÀuÝâFS³Ù¼' Éí`ȃ-5Çqî!³ ŸÇ¶mŽ?ÎñãÇïéWÁ`0ÀóÒ’–½°@³m‹x`ÇH”Ý&b’$as3­ëÏ%ò¦dçP¾|¯"‘…,,,ðÑ>¾ïÛÓ¶mÇ1}t?_C$´Zu¬¢¢¤ÉJJ„Ó·Â æALœÌf¨¹çZZþ4I’Ïq3ã\ÒŠ(P–ƺÃî5{nÏ*glÛB DÔ«iÿõp‹²¤(޳RAXX¨Q©TžÍº ˆ×tfªÌñ‘¶›V„Dí± Š»}m–Áÿx…Ÿú—¥§íåÈ”¬ÙK ˜›Ýùœ«Ü·Êã¡‚|ä#H)9wî\ZÚ–2J©Ûò)+›.ç_qœúÌ!xðÁ9}ú4@AÄädL£ÑØS*ECÆleYT*•L²›Ù!‚²,â8b}}¥õz}OÝ1/„ÌÝ,c ‚€N§Ãh4.Œÿ vžŒÙ®dÂÑÞ9S©TЉ¿iÇ} ­æ-pG£''ÍÄ>FOjÄ4•“Eo#¯3²g0§¦éU ¥²² !:É—óL*$nˆ¹ÙX.¥…¢($H’tÁœ—)YΙ �� �IDAT¥Tf¼*³d¸Mƒ1ÇOÁÆfG(5ÝçËj»‚ø‘“†øa?+,!°çÈ;>v{m¾S&còýÎûKÞw>ÿùϳ´´ÄsÏ=Wô ˲n™æ9¯MrE·ÖšGy„Ó§OD eYS^2­VË1ûãbZ«Õ ™ßÉäNšYL¼·6Må»6I³¾Þa0Q«Uñ}ʄΠ<ÑJG£ýþ�¥,Ë.&Xûi’ºÚ\ï»À^9ÇóñÑq*•J¡4ºèaƒ=z\54› ¤%§•ic=)ÙÌË’Èãó¦U3yôõlæR¾-„ „1q¬p=+SÞ(4©‰ùN„ãΰ2ÛÉ$‰I¢×õ° )–-B¢4Ôj5´Ö\¹rá8âØ±Ã¸®$Šq’*cRrGn%#EÊ%Bí9eŒÁûƒçy["ÃsÌ`0àèÑ£|âŸ(æ–çÎcee¥¸®ç„ÌíÞèÉÕ0ívÏó¦HŸ)ò/S]2ÆÀÀÀÀ`ß2Fƒ 2™tbfïéÝ¡4i`4&wù×´ï<bìfdÙ¾þv·±[û˜ßÕÊ¿[–…m;¦4É`OŸßžç¥%S¦” QÓw÷ÛÅZ­F¦Ñ)æÒjScÚD"3EÄ„ÌÌßi1ýÄT?Š Šˆ“×±²ë RRDì`2`þ¾š´dÄu+¸µjöÙ&‘ÔJ%ıBIÅ÷ù‘}¤èÿq¢HTÖ/zË×¶òÂXʬüæžÛ•cÞÌ`Ùàæc`µZº–çDL ‡CŽ?Îòò2ögF»Ýæ©§žâ?øׯ_gcccŠÄ¹•ó‘#GxðÁù©Ÿú)¾ýío3Š¿ËÕ8åß÷š"Ù17]H !ð<ÏóˆãxªF×àýM�ËuÒóÚu–´Ø UÒí”JìT9ÅûÝÿ²¤}Þ®›Mžç;óÞûv^ó~Úåv>óí¶Ëîßí~æÛi»ê3ï¥OìÄq¹Ý×Üjß¶{M™0œí§³%ûÕŠë¹Y!ÐŒo 3LQƒ$f9,,0óKÉ„3™ÛŠ)…Mê;(ƒˆ( ±¤Äµ­ÔsEÅë6Æ‚¢hªÔ7çQCÚ( #z½1ÕZ…$Žq\$ÉT–…c N-Öç¨a$ŒÃˆ0 ±dùœÈýÓ÷TZA²;ê»(Џ~ý:ZkÆã€Á`X|îv{‘áp@„¬®®âygΜfss“8Nh4 †ÄqD’$œ={?FýwþÎ6·ýúíÆQ×u·$$i­‰¢ˆjµÊÒÒý~Ÿ^¯ƒc ´–>|˜v»M¥R¡ÓépõêUúý>A^0¹â°ÕjqøðaÓ¬ïJ¥²E£”šò@ËK™f‰rCÆìyäw5\×Ývákp[KsÊs€IÊ„iËÛ!f60Ø}Ø`ÿÁq,êµjVz4á/¦¼_JdD6ÚgÏÍ”0é,Aˆ’*fš²™âEtFŒ„AˆÛ•$h d;iÉ͈̔�Ê‹­¦·!eºÀ­×[¸YܳçùÙ`r›ß¯5‰Ò“R¬9„&‚ÔƒF¤Qó*Iv帅aH†¼óÎEÆã1‡JK¬”¢ÓÙduuµðÆ„a„mÛ$‰" Ã,A*ÉÊÁvŸI’„0 §nÎX–U”Þìæ¸t;D̼ùʼßsb$ÿ=ÿ²m›z½Žïû¼õÖ[h•`Y’$QX™‘ÖšååeNž<Éx<¦R©Ì½cÛ6£Ñˆ  Lù½ •Wæ)#„(¶µÝM CÆì›Å„Y\ì\›š¶40ø`­ ¸®M½^›,Z š%#_²Ã¬ßgR{”ÿy”³.H™2 ³Ý• C‚ @ ©W+¸n@Åɳ•¬ÞZb3?Z{»¸”’……‹‹AnÚîïµÖˆÌ#­œv£µ¡qlÇvж’rç=<ÇáÌ™3Ù$ŸñxÄ#<R´×©S§²ö™ŽÝÞî¼}Íûf‰(Š‚�˲ˆ¢ˆ~¿_x§ÔjuZ­æŽ2ÛíÃvÄ]™„™%d’Ìܹ¼¥¾ïO©!-Y«ÕjÔj5úý>.\@)ùè…ÅqÉÛ¢?o¿œ¶T~ζíŒ8Ss÷5'dªÕjQ>KÊ2ÆÀÀÀÀÀÀÀÀÀàFƲuÿömªµJ¦qIe-Z'„ã!qN);„´‘ŽƒëÕ°l‡YýŒ.-îóÚ¥¬˜¨ÐÐL–ˆéOQ¬ƒ4ÙбZ)„Ö lr+à›—ÎÚ窘­}³( -y¹Ü¾’@g±× QEé"Û²¬RR[º­8I²E± Š$ì0q©Tªn‘RÒl.P¯×ØØX§R©aV¢±¬”àˆã8K<Œ±mÛ¶³DÉ„8N2~‰ëº$™9ñh4Âó<'M÷ËÓ'sÒ '+lÛ&‚, <UÀÔëuZ­VA°ÄqŒçyض뺌ÇA"„`<ÃßwwtlºYÉyùñÙ²êr qN€äßã8ÞBÐ�E;Dᘗ_ú½^·ˆÖzšdŠã¸()Š¢h‹2fv|•R2‰ã¸(§Ï·‘Ÿ®ëR­V‹í—ûpÙ`øn׆Œ1000000000ØÌSµÌ~;ˆàØõZ%+Ò(•ŽDá=Å+Љ‚Ìkį,`Ùn¦”¡ ´ž!eR:¥ _&”Eº�M”fh Ž¥A' mDœ)6DA†líoå…¬žk.=é¯é×ôÞÌ_¬—=“fŸKKG&¾)11ÙvNøÈÌÈw§¡µf8fJ‹„~¿eYø~…ÑhD·Û¥Ñ¨†ºXð—÷µÙlÒívI’´AÇ)ˆ›Ñh @¯×e0°¨T|*• ƒÁ ˆûNã%AÒn7¹zõjAÐäûÕjµ¦ö7'o’RÕ„pï«-fÕ"å±hÞóå×ååCeeNNÊÌnk–¬Ù:þ)VWWÓÔ9×-©ÆÄá“#Š¢¬í­-ï—ÿìº.ŒÇã"lB Aâ¹DL<æªÕ*ãñ¸ø='äòó£LÈÜ-RÆ1÷Û9ùÜýEÓdrñþåÈ;}žäròùw®nLjÖàîif<»ùx¿—Ç@s=š=hy‰E¥ðŒ‰Â1Q0œRž!R³•l1‡#Æ@µÞ¬"ÒZç¾ÓuJ©*¦ fJo/ Ž‚ 4¾ï -@%Y$t¦î•’DÍŒ—I¤§ƒ´ovˆó"+Jê™Â/§ÌRM)r&^2I¢IT‚Ö ¥ôÑ£Ô„”‘R"…Ü•2¥a23¯’Ô{¥V«"¥Åh4À¶mÇ!\×Å÷ý·Åq\„HðýT±Òívñ}Û¶2ÿœÔ$6'QÊ‹yÛvjµ¶ípüøqºÝ.•J¥ð‚™-· ø¾O¯×C)•½jµ*ŽcßÖø2ÏÛe–l™õs™}MNHå%=¶mg –­eJeuI™DÙþ:-ð<Ÿ( K‰abKÂX>SJm{MÏÛÚó<._¾L·ÛÍÈ›—¨TÒr)!ÂÀw0d¤™˜"¼|ßGk°,™ùÛ8†Œ1000øaZœÌ^p v³µ×åc4{¨fïÄܽÅáìÏÛ%(Í’.å»f÷î¸ÝÎXhŒ¬ïíq*/Ì y¹…‡ÉÎ’z­’*Z’ˆ(g ”Tñ"-‹f³ÉþèòÒK/±²²’*âˆ0 pÝÊÄÄWèéèë3à-ÄJã`ŒBã»6ž#Ò…$Tv %–•–Y¢0*’iBdö·5*/QJt¹¦Š‰ÿŒ.b¶Óù‹Àq¬,*U%*Iɬl1/„ÀÖV±ØVID"a¸;QÃŽã ”¢Ùl2Žˆã˜Á ëºÙw§(Mò}Ÿ(Š�hµZ…’¢<få‹ûœˆò}oêýr¢¥Ü¶Bä CNù<ïôýÔ 9ŽcÚívñ>B©læ{óäǶÜgr%KN¦äsžYo—œð(ÿ LJÊIYqO½¾¬~I’¤ø›œ¼ÙzÍÖE_MÉ-k¢K{ÍTºä­IÉ>ollðæ›oâº˧NÐl6ð|­Ò8í8I¿Ÿ;÷:ßúÖ·øÿÙ{Ï ;ÏìÎï÷<o¼±sBw£Ñ $8D`ÃJ¤-FÁÒÈek× %iµZ°kkËöºÊµ®r­ËþàP«²¢]’vFG3£]i‚4†a&A�Ad4ÓÍ÷¾áyüá }o£›I9÷T5Ý÷v÷û¾O:çÎùÿ=¯‰c;8¶WÝR" ·Sdâ–¦.Óµ®u­kÃऽ ³ˆ|x�Ùve7™Ç¤|¸;NôºÙ QÚå­wZ[ÛP²jvƒËc¯ÛžõÝi/lº@çoIµ}ìZÇAeÉ ƒ\6ƒÖŠÀ:ÔuLÓÀÍdøü>O«Ù¢Õj¥²ÔZ+Tà¡,!$l«.Iÿ«wægIÔ T´š-„†Þ‚C!c²±bhÕö^…­B (•Џm’l'ìs½Üu²ï¦sB'm; ­U ÂHü -ðƒ�)̨•GH²YäCšH#Dhƒ€ ®„0¤Dˆ(赌(h·Ló}™ßaÆ.¦)+Õj5M­V£P(P«Õp'Ý» ãF*uÄ»Úßêz^•·ó[¶¾Vg\²&÷Ý~n¶W»´“×&íGÉÏ$×Ú™ ÚÚ×ßÕó<�šÍ&RÊTA)ùýí`ÍÛU³jô®gûn‰Ê­{ ˜›»Še™LNNÐÛSÄql‚@Ñl¶âûÖ4›MNŸ>Mä²Y²¹ŽãbfT©•09£QZ“Ífº`L׺ֵ®}\A€$�‰JuušezÇú;|ÿ-¦ípÍ7r[Š7ïžE‡sòVäpIŸ»aÈÕ…í1‹Héw:|Ôb ¹æžÉ»½×«­ àöL¯þ�æçG}-ÞȽˆ]žçÎëf7�mk¬4RжÀ@ßÄ{{·c÷qÏßð¬[IvƒRË2Éd3­mÕ†iòÙÏ}–©©½üéWþ”­gŒŽÁÝ}l[:‚í qTC43iBÆjJŠ¡^ÇÔ4[+á°QHiľ…‰ÖQ‹‹4¢–!Ag°Ý¾nw ‚“ù ”¢V÷¨Öh A °¬ JE•8¶í UÔ®ÒjÕ±,Ûø¢åy„Atï†a 1¢'"�­R„4 ÌÆœ›uF úúúÒ¯£¶¢-+‹éóèéé¹%æþ;i[OÖn{5[û·ï½íí‡I%K{R´$€ÐN|0í yò³U%×isø×Uª¶Ï·ëîo»,Ù¶³d7•'­£¿kš&ÃÃCi«Q­ÖÄ÷ƒ89£•J ”-ËÚ’•×¥Z‰ô ŠH›cå¯.Óµ®u­k/K,Ó4°,³ëø~ÈNÖßÒ`¤Ý J䨟ÜèÊPèc¥ CE«åašæuÙü ðâžp»èp‹Óà8ÂíÎ|×xWÏ.ÂXIÅHù ¶W™Ù¶ÙᘿÛqêŽÙ{ß%™›!û1{Ji êÚ6ŽeÓ1P’Vãiõ&¶å åÉ(Z£…@ÑNÞ›ðÅl!I±L©éT2{ ¾Q¡¢ÙòµÀW‚ͺ@™9<Õ¤V/‘ÏJ,!A€‰‘V<¨XO{· ÐÌ2 ¤x^ÀÜÜ2õ†¦ÕòbijȺY2®K.—öm¤R £bÂ0®üU1(ËW'D­†‚œW#TC‡h;Z¥�Øe·Ò~q=x±û5&¯û¾Ÿ‚vL†Û¾×¶·µW&À‰ai%Ž"Sü”‡e»ZR¢B”Tð´5B|ßguu•åå•´å«}×ÛùÄxLûülc¶WO&>Aú›¦E*ê¨2M…!*‘H¨ˆóÇŒ'W‚‰xÝâÍù`&bŒéZ׺ֵð²¼' ¦ˆÜ\'̶-fGv¸½"&«îó½Æ*’G5ñý VA ]WAËåbçj+ËõvcöVëéÆå\»¶]V7j‹ˆÆ*iIØj!SQ�÷Úcv T>*Ö­<n¶& YiŸw¤U0ŽkaÛ¦aá·Í÷ xê©§Èf³Üwß}lnnR.—ÓD¿”[µ0z7q"±Êl¯ÐZ*E³é¡brÞ T„Æ•–dqeƒ¾¢C>g“qlL+ªÊ‘B"•@é·^ÛyL„”$Jƒïx^Ì"#Ó0 ‚€R©”Êg².Ò0�MjLi1M¬ …jú £Cê¦EF)Z¶ƒ6 <nÆ}§]?ÛsîFö·v°%S’j•„K>·û4‰äs¦$k= ¤”)¨ãy^ `$Õ4‰DwÚFD¾l’R¹Ìì•+,--²´´„RÛ‰‚w" ¾üÜníר¾&Ú«ú2™lÊý³ÅaÔ¹—µPIPûG;u@òÞ.Óµ®u­k£C698\×í ·˜ócY&F+u`’ÒÝ(sÏu2Š]û0ÇÊÂóü­¬o¼®lÛÞ‘ñægÝ9p#àGÒꆪƒC øEªr#Ï´Ëcòþ™iš4›­.³ÃÜK’(®cã8†iE<)xiW¯×ùîw¿ËÑcÇRî�!%Ò0S Ft´ÑÑF!£;ÂP ¦ñÑ8ƒ½†ûA€ëÚiE€åd°ì ßËâæ"n¥N!Ó XpÉfmL#L[¢•Û–hSܦ´$A‹HSI©ˆ3'Aèø>®ãRÈçc€ÜŽª Ä4[8­&Â÷È>¡4 ƒŠ‘%Ô Ï²‘"z.¦”(aüPέd~íÔ&˜€'»µFíÓ[U»íÒÜIuKéçäÌLÀ›Äßi÷m’V«•‚;QõM‚ok««¬­¯Òl6p—|.‡F³²²BµRcmmååe††GÈvàŠŽ½$a²½Eu;ÿÍvÀ¨ýù$Ï.ñ’ve«vÐ4Q¨J~¦½•vëlË"_ÈuÁ˜®u­k]û8ºQÐ`š2ux’t˜Ö!¶ÈF·gH:3PéÏ "â¿·e{¸HMLÜÖæÂ7#Þ׬YDJ^wàG„‹ïíù%DŽ$¼@ºó^:„Û¾·Ê0µÄ‡8n}nïi÷}Ÿl¶pCdGf.Î"Í&ªVƒF‚ šn¶ƒÈf1rydlì¦Ûgv~&Q럟fVPÚ4eÇ£Üíùu8åJ¡6ס¼a;‘:J EDß�´® `ºã´û¼5 ‰R!Z›]ÀqÛ Â(Cî86®ãD'–?¯0 €+• ?xúé¶}_`˜6¦éB;#J»œµÐ)"£cAieI&ƸÿîC<üÀöí£§7mÙd26 ñ}[Ø€@&¹Þ1ßcÓo2aŽþ¢Áðp®kãXa˜ÝúúógûŽ“÷êø|ŒBÆ€F½†Ð¾ðð}Ÿ\>ƒOÑïT•f@9Px4²™­VEÀH¥¶¾çÓ }\'DÿÍ+Ïó¨×ëézËåriÅg«Õ¢Ùl¦àA.—Û•T8ñ/Û+  ¢]á(©|koÅNÀˆ܈€ŸRi“z½N¥RÁvl*•2++Ë4ëujµ:ÕjÓ4ééé¡ÕhP«×Y]]¥Z©Q«5¨×„m•%©›X³åó]nc’kÝ^A È´ß[;(µýýí@L;#HSRÈgÈård2òùBŒéZ׺ֵ†9‘.Lޤ$sµuE}¬|@¹*hyÑ׆Øòq LCÆ„˜ïÜ‘n'sK$ ›Íf¬BðîÛªÚKßS' ¾§õš"P0”—H I,­uGþäB�¶W¾è›?Ä@ŒV!JµÐºaô"¤™‚5ÏWËHNtK«vç$$²;ŽS’¹•R’Éd޴ДִÍz]QtY[bqKàC×—:߸¯ã9®}om•`ö2­«W æç`} ÝlFZ¡€14Œ9>‰9¹{r «PD˜f•½ƒõ°½||7¥¡ÝÆz»:Åög‘üþö×góV«íNñ W:®:Z7Áæê[!_|¡Âh#AGÑŸÖ`„Ów ¾ôŸcNN“l*]`ážI]ëâü Uäq]! ËÁÒßkÆ€ŒîàCB"mÛÍÆès0檰,“B>ÇèH?{†Ù·w”ÓãLNŒÐÛ“§Ï"¥¤Õ XZÙàÊìR¤fx-ÍÖ¾âd²Áv³A+ ¸VbÖ$—µ¯k‘Þ­eIŠ0ÕÿKàûØ–Íèè†)1ÍH­ "…"Ë20-‰eº„Z¡…Äp]DËÇ |Àü$BŠôo†cÛ¸öÍW® ‚ n‹�ûF£‘ã†aÜjc`ÅòÆÑsn±¾¾Noo/qûë»ÛK}ß§T*‘Ëå¨V« ÇAÅ„²FƒV«…ã8éB¤P´¶¶Æúú:H)Éår×µý´sÂAV$–´µ2·ŸGí•'¾ïÓl6¹rå2³³W¨T"À%T Ñx͆aP,1 ƒÍÍMÖ×6(WªÑßžïGÕ4m¤Á‰Å—B‡zb;�³›Ú^ÂIãyÞuÜcÛçuÂwã8N¼Ž]²Ù ×%“q±, Ë21M+å’ù ÎÏ.Óµ®u­kš“WÃè¥.“Ã¶Ñ ¸:çqæ¼fvNS© Z-l òyÍøÜqì›tÈåL„Üh ¢”¢V«ñ‡ø‡AÈää$ŸúÔ'¹té###LOOïš•i?hw²K—.qîÜ9>ûÙϦj+•€—ç<Î.úø!¶¸gÒb¼ÏLK¶·ÊeÄ4t”ìn•Îê÷ÈèH^Ôó6QÞ÷A­£2?ŽåLD`œî³¥»ÿÕMþñ¿Çµk×Bð裟f~~ž/|á ;:«««|ç;ßazzšûî»˲v•‘ðCÍÅ5Ÿ—g}®n„ôg%wŒX<°ÏÆ6fl«u'ÁãÛ1Û_SJÑX^¢þ½ïà¿ü"áìeôæ:"Òj‹„3Aßq‘##´fnÃzèS¸÷>€](À;(«_ZZâñÇgii‰Ã‡ó™Ï|¦ƒ4ñ­‚`ß÷yýõ×BpøðáMÖçy<ñÄœ<y’‘‘Ž;ÆÂÂ333ìÛ·ï?ßí×s3€ŒíÍd ¯Ôh_[°n¬|ûop¾ñgÈ•EDlUÇh :D‘j†ñò³´ZM‚ÿò70‡F#ðì�2ï‰sZ×tt˜‚)¥cUm'`ŒDËÉ ¤Ax(lµzHô0lali �aÛ®cQ,æêezjœ©½#˜™djr”¾ÞBÜÒ§ð<ŸÍ*¥R•µ g/¯sîò&^+"——BFj01a)Ja˜&†íF}V–jyƒÆF·R¥§è’ËÚ±Bàn{€aQ‹•d³RZqU@`[–qxY–™ÊK)Á‹®;RRDtÑÂF‘ý )"ùë÷ 8VJ±²²‚RŠk×®Ñl¶Èçó€fhhˆùùù”ï&I:†ÁÒÒkkkLOÏP©T9tèŽw­4–€.RJÖÖÖR€$E<Ïcss“ÞÞ^\×MÁ¥år™sçÎ1<<Œïû×U¬% “”2mCÚ.gÝ Þè™ë¸i6›€¦ÑhR.—y饗ˆ×«ÕjQoÔ©×j„aHÆqƶ­ôï{žïEŸƒ0 ¢ûj¯^íÜcvS:¼ˆIÀÍäs;™p«ÕÂ÷ýÐf§„„4$†” yŠ=úúÉçódsì6n‹¼|?Dˆ.gL׺ֵ®}¬MlµŒ·UÃ$¤làšÅ¥&?x!às°º*¨ÔZíp| 8}Vsâ$Ü6Óâ¡ûCöNØ8¶ìà<ÙÝ™ˆÎï?þ$¿ñÏùùyž~ú\×%Ÿ/07wÙ+³ŒOŒ322ÂÅ‹)mnò‰»îBJÁ¥K—�ÁÌÌ4gÏžK³­V“7ß<Ë… yôÑGSÀãÌ¢Ï?œnPm*4‚ù­£½&2©ÑÝ)ú~ÈM d¶Ë@F¯…~¿ö·¸æ“€G«1„”½H3‹™¶%é·½’f£ÁÅ —bÿþiÂPQ­Ö¹té2+Ë+ŒŽ×®]cÿþýœ9ó&O?ý ==½Ì^¹ÊÕ¹Yöí›!›uYYYMUöïŸAJI©¡xæB‹—f=šÂ–’årÈžɾA+.3ÿPÃÆ· š¯þ†„žGåµÔû ‚S¯£7Ö"yÕxAŠö>(w”µš¨J‰`ö áÙ7ðϾAöǾˆ3>4-D*˼sð®”âÛßú.f»î:Ì©“o09¹×u™ezzšþþ>YXX`zz==½œ<yÛ¶i6›\ºxÃ4˜Ú;­/×áÎ;a§Nžæ¥—^áîgnnŽïÿI dyi…ååŽ9Ì›ožEkM¡§T*áµ|î:|óóó)§’j­ÆÝw£Z­pöì9ÆÆFDz¬w,½Ó�_G:¹x‹W§_F×›°4‡óÄw0VÁó@ùˆP%ºÃQ…L ´Bn¬aýý_ãûáä4¡ã¢߇=}�‘ɾ¥rS†\¼x‰Ë—¯É¸ÌLO34<”go\íô}­«ÕÓ çWö™µÌKLãVBeDǹԵ­ùèù>hm™¸™˜›J4ÓÉ`8nÛ¾-#_íé «Še]‡{âáãwòÀ}w0<ØmY!Ó¼ƒçù,¯•˜›[aii/(ä®-6yáäZ\i#Óv#iË‚–ߢ٪†!ÙlÛvp‡÷€¿Õ`nu >ËÔ Ýo¶�� �IDATÄ@ ú\Ÿ´B¤­„–e295ò‰äuRÙ²Mª¸½ýe³TC%*…B`Æ\"z0(Æm&–e£µÍÍn͵,‹}ûöÅGS.—9zôBDISSS˜¦ÙÑæ£µfzz:–G®áyþ®ëÿF¯app¥)·Y˜äóù´â¥PWÁøø8CC‘\óN ­5Íf“J¥‚‚þþþôÜk¯„ñ</šÚÛ{’Ï–eÅãÑâôé×™Ÿ¿J¡P¤X,F E¨¨Vk‘êš«°¬¨uɶ úúúèï'TŠZ­ÎÒÒ2‹‹Ë4[ T› Òö„ ;Â1º£b'¹ÆäÚ_ ‚ ­*Úúþ�cš‚|>G¡£¿¿ŸŒ›!“É`YfZQ”¨%E ŒJýS¯åS«U±,» Æt­k]ëÚÇÛÉ#% 묾 Áé3Uþük‚åU‰ìž=OzÐkuA£!¸¶ yõ”Çö î»§€m™ÇÝ[ew\7ÃçìÙs¼ð‹,/¯ ¥äþè¹ýàlllòÒ‹/sú7àù^dïÞI^ýu|?à‘GæÉ'Ÿ¢¿¿Ÿ¡¡AΜ9ƒe9è$ã�¬Õg=Ju…iîßksv9àâJÀJ)`¸ÇDI¹HÂŒóþc7OÙj'ùEúÔKÏQ4ÿ#’M|›fu¹Â M´ˆU)yή÷-¢Lc³ÙDkÅæF‰çž}f£Å©S§xð¡ãœ8q‚©©)þâÏÿ’ýì�‚R©ÌïþîïsøÈ]<öØßðå/ÿ<¯¼|‚7ß<Ë/ýò?Kýb9äÕ¹­@‘5 ž±yaÖãÄœÇD¿‰!?̈í­Û\v¿Ù¤ôÔãÔÿèPW.AÆ@æ H+kÀ÷ÐW¯,\£2{…àWþ9ÙÉ)Ì6²Îþn­VãêÕ9~ú§X¦ÅÒâÏ¿ð¶mñ§úgüËù[üÎïü“<÷ÜsôõõóÚk¯±ÿ Î_äŽ;‘ÉføêWÿšF£F1;{•ù‘G9sæM<ÈñãÇyøá‡X˜_ä+_ù3Ö76øÞãOð‹¿ø_ðÄ÷Ÿ$›Ë`•J…V³ÉóÏ¿€ã¸\¾r™ æâ…‹4uNž<I£µk}ñ‹?ÁÁƒ·ÝÔÌõ[-7†4¯àüÞ¿À¸p.T5" ‰ø²’`X§R¾„[ÕdÖÊ"æ_üA$•kãS4þ»ÿ÷‘ív®›#¾Ï³Ï<Ï¥K—Èd]^yåU~áË?ÇÀàÀuÞíàßöJ"!"9ãͺâk'j¼zµE 4¯^•Ì yüÂ}9öôÜz2]4¦c^¨HÒYim›dÝ(@Sº³¥˜X>Ò0Èe&'FØ¿oœ½£ìab|ˆþÞ^r9DZ@C©Rcs³ÊF©J­Ö$C,Ë ^oQ«·X+y\Yh²ºáã ßo‘TÚX1 œÌ9×qѶˇ¾í;†‰e: Ž“k8Ô×7¹ZÞÀ´==YrY§cm$d¼Ò؆ՑÌ">™t´U‘¼®m”YߨRª *õ?Œ8uDÕBF¬ÐD3�¦i uH«Õºé’ÖI;’mÛìß? ˆ¸²i‹ ~§} “‰Z¦r¹loÜ»±Dhûu†A6›ÏðX:ÝuÓ1Èf³iû’a; ?Däµ’ÁÁA`Kæ:"ãn¦s³<½^¯§Ü0–iÒ¨×XX˜guu…J¥D­Z¡XÈS®Tp'%£Ž€›€ ôQ:$¢*Ñôâ¹µæ Ëe)²d²™ŽÕöóùz ¦ÐKxsU£v~˜äµˆk'K.—£ØS —Í’ÉdÈf3XfTíU“Ê´Ú,å©Ñš ˆZÕ‚0ŒÈæ“öohwÁ˜®u­k]ûø»zT*šMÍó/—ø«o:”+QÒWk€·“~ÂV×M¾ò×’z£ÄCô’ͼ],%„ TŠÍÍ¥R)-ÖJsìØ1^yùUZ^‹ 𙜘àSŸz?xúépûí·Ól6YZZÂ÷=>ùÉG˜Ÿ_`llŒ©½Sœ:õFz¿¦ŒúäóŽà© ¥fÈF=`¬ÇÆ‘3«?BéY­|”Wi"Ìl܆ :ZšõU2­Çºž¸8Ì£šÿ†ñ[Ø™1 Êړb¾œ· ’ÌZøAˆF섺óƒƒÔëu®]»Æm·ÝF?ûöE­f===<ðÀ}\8z½ŽíØ!éïïOç¢`J¸}Øf²ÏâÙ‹-¤¦Œˆî>`gœõ CüFÒSOPùæ®@¬4ñve�×3JE•/?O=ôÿâ_‘ðí]—mÛ)X^Y¡Ùlñì3ÏÑß߇ã8<øàqNž<Å™3g0M‹<ÎsÏ=Ï… ¸ýöƒÜÿýœ?!Êp†!/^Äu]zûzÈf³˜¦A¡X`ii™õõ5677¹té2Åž"w}âN^~ùëë8ŽÍ}÷ÝË믿ÎûÉd²|û[ßæî»ïæÐ¡C¬,¯pôØá”ßàâÅKär9¯S©z?ÇKk7ã«ÿÆåçA0Ðc{}Ça£ õZÈ ï»îGKo¼Š8wÂ�íºàfaa1{šuÌ‹gQ¿ý¿àå 8wCì  iü  P(00ØO½Vçëßø&W®\áÀý8ŽËK/½ÄÑ£GY]]åСCŒŽŽð7óuŽ9ÌÓO=ÍÐð0¿ú«¿B ÉÕ€k›°MÁDŸd¡äse=ˆÁ˜®ÝʦâL¹ÖÓ4Éå2@ÔíÃØ–I&ãPÈgêãÀô8·ØËäø0S“£ôö0M#m{j4=––7(•ª”ËUõ~¨1Lƒ Ôš°°Xf}³B©êã?ŒNÓ(­Q*$ }Licȸb%nÿ“èHPø-²aaKPN¬]@)¨5«T–Js z Y\ÇÆ²Úªh5i%A†~€çE×_­µX\Z¥Rm1¿¸FµÐô†ÓƒÒˆ+T ð¼) ¬8ÈB`Ò¸öÍQ™LSZ¡Šx{â*žNUŸÝ“0íßK@”¤¥r§ÖÊ÷’ì1M“L&›kUÇFíSfÜZ$Ú…¶Zv"Ig'/¥$!DÚ¾Ójµ°,‹ h6›Q%Œi*Åòâ" ‹×¨T*4 |? ÕòК&µj-j1‹ž×BJçûiX'ÿPLÝeÚ‹½X–µCEöõ×;4AàyÕj5–†i•w.›¡XˆHvmÇ!—ËÆ„»9¤Œ•§èlÏŠ>T¼n"¤ ÑJÄÜAí¾•àƒkÛì‚1]ëZ׺v‹�1ZkZ­¯4ø«oZl”®ï ; ÊUÉ_}ÓAÊ*Þ—#—3ßÒ…‘RÒ××Ë·¿ýzÄOa˜d³YÖÖV9zô0õF‘á!æø‡üŽã05µ—“'Oây>ø +++ôôô`š&o¾y†sçϓɸi¶­/+¹}ÄâÌ‚ÏËsM*MEÖ–L™ ô±²Ä-íGÄ¢•EüKß@öc?Šk(¿Š‘߃‘BIP~×» ÚCk‰0$B‡dÄiê•?¦¥'3Š0ìHu‘ÝNNÜøž=9z„Ç?Á‰¯10ØO¡P T!SS{™™™¦··—fÓcxx˜Á~¦÷íc~~ž^xÃ4Èå"uމÉqVVV˜žÞ‡‚á‚äc'ææK!­Æ &w[ÈP¦5:¨9Må«_A]8»{ï¿€iJœ¾öu§#­ÙļòÄ‹TÿÃï#å7ÉŒìÙÕ±·m›‡z'Ÿz’ÁÁ! Å>ô §NäÅ_drr‚#GŽpêÔiNœ8ÁÀÀ�ÓÓÓ¼úê«˜æ ”Rô÷÷Q*•8tç!|Ï£PÈ322ŒeYÜ}÷ÝüùŸÿßøÆ7ØÜ,qðàíôõöR( ŸËÒ××Goo/äÔ©S´Z=ü¶mGüaH±Pdhhžž"÷Þ{/µZ•¡¡¡]I¡ß¯ñR^ºøx¨*._@|þŸÂÿ[´°¶í #ã`Zˆ„äwñ¢U‡áñhOýO¿ýïs—^ãâ›x/>Ixð¦íì²¼"…—ËW®ÐhÔ¦Þ¨³wï^~ög†'¾ÿ43Óû¹zõûgfxö™gdtt”Ó§Þ`xx„õõuææ®ÑÛ[D ÉfCQó4{z F{ ËŠª§Ù¬«îøÙCšž‡VQG¡EÈh«0 ‰ãØ õ÷0³oœãÇïâø}Ÿ`jbi$]JZi<Ïgm½Ìêê&³W)—ë …b†B>G.osñêg/­°´VGÊ"~ƒ-¦FJÛÔH†€“PÛh¥üJ+lÛÂBà*7lâ†4 ¥ÁjaˆØô½Ð1- CRÌö¨Q66—¹òæeƇ ŒøQ€Úh6hµ<66ʬ¬nráâ5.Í.qñò" нƒä ýØn!mlÓFz µGFkSƒþvÌUâ#Dèv2¥íˆÊ»Bc¢ý½V«“ËeS^œw ¤¼ ¦ý½;ý|ûÿÛIk>”äõö×Â0z-”ƒ&Iú$$ï[ v¤­UŽãày^‡TõòÒ* T«ÕôhµZAÔý&››)èèû>*渉8”bЯ]‘(nóRJcZvZU´‹/áfÙîÿ&}‘œ¶GxØŽÅÐÐ`tŽõöDBDœn‘¥¶~ŸQ6[-ÿÉóñƒhJ¤¾“–0ÕF0oÛv*Œ â׺`L׺ֵ®}Œm«tS¤Ô¹ ÷„ Z“×Úb;ºÃ÷èpÛ­Ñ‚o}OR,4¸çhvW—(s”á7~ã×úûfÿþrÙGf~~ž¾¾>úûûY\\¢V«²o_¼'AüØØãã{Á²,úûûÒ²Ù´TW>±'ê?·ì¥¾wŽYm@LòïM Ï}‡àØ ø:Rpñ*«„¯ü8×¾JíÀ¯ÒÐ#Ø ß§iBæØ¯! ¿ÕB”O"ÂØ”vä¨ -Ȫ穔l6«‘Ícç`&ˆÝ9~zzŠ|æÑOÑÓÓƒ‚™™}üÜÏý Åb�##ÃüÔO}‰ååeöìÙƒã8iïô¾é)øÜç"BåÉÉñÔ IœªÞ¬ÁgfÈûÌm„ ä f†,&bNŸJ¥”¢Y)³ô·…qötzí)Ù1ï”hׯÃèéAˆ¼%d¸‚P>š0–¶& …4ÐóGëõ̾_ò”?f»ZÉ#Ÿ|˜½S“”ËeÆÇÇéïïgffËËËŒŽŽ’ÏçùÕ_ýe666¡\®rñâEÖ××Ù»w/ŸüÔÃÔj5úúúX\\Ä0L¦§÷aš{öŒòK¿ôO™¥§§‡ááa666Èçó ‘ÉdØ`†þþ~öïßÏÔÔ^‚ `jjŠ ¤”xžG±Xdxdˆ|>Ͻ÷ÞËÜܽ½½ ¾ï`Lû¾ N! C˜› ÓBß÷%Ä#¿�hD}Šƒq›Dìxk CPÚ€ò&ÂÍ">÷ÓèÙËè?ù÷ˆj•°·ŸpïˆPõ-ì¨ÂÌu]Í&¾ÐߟÃóZ<ùdÔîåº.w:ȳÏ>C©Tâ×ã×xî¹çYZZâàí³ò0Ùo0\¬”–¡˜ß é1™0¹µZ‚ô;ý8Àð¼�­BÛbr|ˆûï9ÈØÈ 3ÓLŒ0<ØG__‘ŒëàØ6I­Ñ`³Te}­Âæf%å±LCh´j±¶QáÍË6•º¦ÙTqõ‹"Th`Ût‘qûªÒŠ€Pií“ =l %¯G�J+fåô!h!PñfYN\éàÇUB@.×GÆÍÑ \^l²Z:Ïç—µÄfˆ(¤é ä £ûFÚæo{ î†׎i˜1ßT²‡$Ò ø„>¾×¤Õ$n;|oó0©L ‚€R©ü±#¥‚ôù%m6I»\"að©$É�×uq‡R©ÄåË—ÙÜXÁó<Êå2åreË%7Û¶ T Ã%ê</C©TŽÉ„I+U¶'8¾—vÂà@¦Íê$ùHiD‰„Á\׎A!$RH?Þ«DÓmë4 #¢m¥T Êè¸'ªÚ}à¤Ç÷}666˜¿vF³™3wß}wŒéZ׺ֵ&‡o³äóü ÅÜ‚$V­ŒU ½EÁȰdp@27²¸¬2¢DLMll*—›Š ˆÜÂÒ*<ó¢bjÒcpÀEìä'‡ö½÷ÞÓñýv5–¤/`ÿþ™Ž÷ …ôÿLÿÛm·íx¿9ƒOµP † Y ÞÅù¸•üÔ‰ð[x¯~“ìÉÇ0Ä2röi¸|»rúÈ}xåeŸÍs-Œù½”åCd†V)Ì\Åêñ¦ˆ¸.´"£ž£VÞ¤ÚØKÑÈ 2iyõNæ8{÷îM¿îíí¥···ã=cccŒ¥_‹ÅôóèèèŽãš˜ef†,ÆzM6늞Œ cÉ,û1¾ xeáÖNràqŸa@.‡yÇ'°ï1¾ò 3XÂlœB¬} é_B¨f´àD[OTøU¼Ò؃GØ`Oûx8p ãOŒŒ022’~=>>Îøøxº<ðÀýAÀÄÄ8£££éï¸î^;Æ1YIëY»µ¯Ï\.×ñZûû{{{;îã­ ÀožI¯† ýhlF ~ü¿†â\>§¾‡ÞX€ü�Üö ý,‰~éÄ‹OÃÒ<ä ˆãŸ†{‚Ÿÿexóuøþß#|£^{ËàLJÉñãÇéïÀ²,&''ÑZÇ„ä6?õS?I½Q§X,211ÎÏùçhµšìß?ƒm[œ;wžžžb\.c=ìwxá²ÇìzÈ£6G&l&úº.øGeñZQç:6~ê>Žßû Å<Åb+&€õý€fËcmm•R¹ÊÆf…Z-&1U „¦\*³²²ÄÊê*¥r…–‚1@`¡E$™ 1_ Tˆ$Àˆƒ^K{„BPðëxÂBMÃÈ éJBej•"T!!f¬æ$UAJ£¥H³ÿ¢m=X¶‹›É¡T@ÃkR[‹*rL+⥑NÔ¶†AJò+ã*…¤úUGH :EÚ%›·«ûDëθéjJo§òøÑbDǽ)Bè#dTEœð©´W$‰–¤MiuuÏó@G2Ϲ\HµZGi…!%BHË"›íl ÃZ­FµZÃk¶Ð©ÒÎ5ÔN°›Œ{B$œ®)IG5Oûÿûûûéëë#“É´ù~"YPÑL2•ÒÝ|QI¹N¥órëùµsÒ(¥h4Ôj5Μ9CøOŒT*•.Óµ®u­k?,æûŠ —|Ξ×D ´¸‡ØÜuÈä“ÚäsdžFSÓl%j1àØÍ<j5Íó/{¼x"ÉN ‚�.ÍJÞ8pü^E&#o‰{B0˜7:�—²O÷½8C* ¨-Í’}îO1¼8&ÙÕŽ€Œ‰QÍqî+³T^$Ø41üG‘âaB»N~úMf>÷wôﻊá*„aaè9qß[%¨ôbX?°ŠX�¼ËÝ⚂Ѣä#„Á¤¦´¦Ò¨òÕkÿHyÆbì¢ËÌR½ó{zÈ~ñgp¾ðE.2Â÷·\:§°LÁ±ÉC<ú‰O2d|®üo˜å�åÅ„"!’Uæ%Z«ß$(ÀÎØAÜ»»ÁÁ>õ©O^ç@~XóýƒX“I6U̾Ž\¿Š0Ä~Æï�ÃDOÜ ¹^ÄO¢ÿc¸zé þã_"^}ý¹/Ágþ Œï…lÉ!~ëßÀscl¬ÂéW?ýyŒÌÎü–eqèÐ!¼= 2ÛÇòøƒ÷£ÔV¶÷î1=ƒ}û¦Ù»woúšŒË°\Kpÿ>—Cc6õdAΖØf—(÷£Æ´¼€P)²ŽÍÄøH,K¬ðý€r¹Êúf™¥¥uV×Ê4›-LC’Í88–d½²É… —¸pñ›(bY6¶maÛ69{a šz€P» ÀÒ!H©Š~ ©R@É*˜åÜ�Z |-R€ØL[¢2R, Íf¥¦eb#æ‚3­¨‚Gë°Cê8ô#õ '[ˆƒZFÅ<%‰i:iUC$ l`šF<ç#¿$ @)I¨"âØh­Èˆ7&–’Nä¾Mˤ£3ô&í_âã*'„Âê&Ø<¥ÐÒÀu3d\—PEjsI…JŽAÀúú¦i˺‹‘jRRMmÕKÉþgn£Q‡˜Çf»„v²f®kR*õõ´Úº®­Ï ˲)‹X–•~?G¥*T„±„7)زÉ6Ào·qïh]ò}2™ —.]¢Ñ¨Óß×) J‰ã¸ØPvÁ˜®u­k]û¼äs£rîbÀꆷ ED©ƒ‚ûŽYìÝB÷]wçCÆu¡;l±°¤˜»&#”Ê’s>qG€ëopmWMØŒ½çæíÒí/íÔâñA‚76^ ¼<ÿw˜ëkC�&†ô€mI òÃþï³YýuÂÆ"Ì(MX/²vÊÆohîüÉ¿¥oê MV6ÐFˆßüwiå¹ë3|·còv?ß9þïmnoÿ½;Í»÷q…qví"§*WLž½½ÈÄš‡Ónë“?‚úé_ä+glþü%ŸåªÂ¢©ðí3Š¿~Uò¯>wwßþ¢Nÿ3ìæk šqsSòŒšµ—ê×°Üž•™ðFçöNO}`ÏóÐA„0°'R©1 Dn�)ÂÀ$ì;†øÖï¢s=Ðl!zúPÿÍÿŒ<|ôôEU5€ôšèÁQàE2¨â-‚·ö@d'k©=›o"å§èÜUŽ)pLÉ@îV>‘n®¬ðÇéœö|–×Âñlê&Ë‹¬­—(WkAˆë˜8ŽE!g³º´À•ÙYÖÖÖ¨×ë4[Éœ±D±‰ëºd2.®›!—qÉds8¶ƒ_ ™[¨SóÂv …ɪÓsÏH´QµIKe ˲ •ú4[ ,´– ¢ Øq]b‘§´bF‘Œ¶`«E$™ûQÛ†‡ïGíf š$òöbÛÞe’Á¾,{FòìÀql6ËMæ6™½¶F£é#¸®ƒ!e¤¾¤Hƒm˲’í:ž’Tã»koqºBhº˜Ja¢‘ ºQ!ÈÑ–ƒF`´Åb‘£GòÔSOQ©Th6›†eš¸®E>Ÿ‹ªBt6ú)Yp´ß LÓ`s£„ŠçF{ëOû~˜TžØ¶Ýºh-‘‚Ž žäŒÉçs†‘Vá´WÖ$UWiË›©ÄzûyúV•œíÕXí>J>Ÿcdd„B>ƒm;)yr!Ÿï‚1]ëZ׺öÃâì•Ê!¯( mƒ¶gL&Æå ÅBÀ؈äöÛLVV¡V‚PseN±¶2пsp¯”¢Z­ây¦÷n© hêõzz0:Žó¶¢ïûiæáF‚JÏóÃpG Ç›a‰<bBl÷^Ü æÆöéçu޶B 4¢¥1©2±÷?ḛœý¿¢¼t;a3‹”!CGÎ3õ#O"í nb˜i‚ dCÍR®Íc¹{Ñ"R„ØîX$c‘´e¡PصÌ;ˆ3I©Ó›Ì¹R)íéÎd2éëQ?¸N%-wš¯¾ïï( ‘“U*•0 £ãºšÍ&F)%Ùlæ:¹Ï›½¦”V¼ºô& åѲáõÉ,G÷¸Ü±ÐÀæÄ$æ—™o^Èð{O7Y®tª6<ÍÆeÅÿðuƒÿûËynŸþ7ès¿‰ð¶b"ùXéÍ¢êgѽ·#¤Ñb%òÖF#r|ãàÆ0Œ]ŸÖšjµJ6›}K`চž—V…lÏÄ÷<L&‹Öj×qÏP@ìh‡ƒS„¹~¬ò5øË‹™†±ƒhi! ì T–at?H …Þ\½„~àÓCF�ŽR°¼ÿ뿆f¿ØG89ƒÉÞZ½]»¥M)E£Þäü¥y|/ ÕŒ€­4†UIÎ]]`öÊe—(—Ë4ͨ%12Y׉�˜L&8dP&“Á±6 »ÊÚ•*~,[¼Õ®s¨i4Qe^@ËS8¶c˜DRÓ–©1 ‘c¼_i­ ƒ€Àó:�ßô|×‰Ï /ZE1ŽÝ1·Z#¤æÀÞí ¯'ÃøXÔ¢gZøžb³Òää™EÞ8¿ÌÊZÔ–9ц­VC¡ÑÆ…'nÊÞ–±ßhÂà£f¶cƒcEU|B4 Ó@UËø›ë`ZÈ|1ª†ŠÛÒ¸ýöÛyá…¨Vë±ô³A£i`[®UmÒÀp£3Ê÷ýÔ/t]!år Ó´:�™và$©Ž±â×·ˆ†%+s…©~õôôbfª�•¬Ÿöyšð¼Es•»%vb@088H.—Á ±µÂ|_}”.Óµ®u­k·£µ¦Z Y^(½åŠdÁ‘;ML#Aú;A—­ßÑù}ÃÜq›É«¯ûÔIÙ°f}CP.«]3ÝžçñÜsÏqúôi¦¦¦¸çž{Ò~ã|>Ïã?ÎØØ†apðàÁHb0—KKPFÚ;44Äüü<sssÜ}÷Ý”Ëeòù|š%I2píÁæÙ³g¹|ù2ÇŽcpp¥)PÐjµ¨×ëô÷÷cÛ6¥R‰V«E±XL¯£^¯³¶¶F±X$“ÉÐjµp‡Íl]�� �IDATJ¥Â•+W‚€Ã‡ï(sycã—àÎ_Åݨ@+&ãôуdl0QÝÄÀôI2ÿ¯=÷›ÌŸyá4Nݯk|⋃áxˆº‰niˆcna„„õ+èþvå/®T*|ï{ãû>##£ÜsÏ1jµJ)z{{ñ}ŸJ¥B>ŸçìÙ³AÀ½÷ÞÛ¸<öØcŒÑh48xð ©T.—™™™!“‰ûŠÅëëëi†íäÉ“Üyçôôô°¾¾No¬Þ£µfqq‘¯}íkôôôð¥/})åªyâ‰'i4¡ìþýŒ¦D³Åbñ¦sAÀ¹Ê¢CÍ\¯Í³ŠŒmú ù’ìç~œ9úxì•u½îÆÜºâ·÷ù?~ö Fïg`ù«€j“ˆ`Õœ'T !Ž! ‚€3gÎðÌ3Ï044”ò€àÀô÷÷«««ôôôP,ñ}Ÿo~óo9~ü8Ùl†ªÕ*•J…‘‘J¥J)r¹\ bT«Uzzzh4˜¦¯¹™L†ÍÍ Â0¤§§']Gh­yíµ×ð<ƒÒ××G¹\¦X,ây««kT*^yå<ògμÁ=÷ÜÝÁEt³1z�Ý;åy˜;øãþ¹ÿö?©«5Ëð?€{·Bè±½È?ùïÑ÷> ·F‡-¸6 ÿÏ¿C<þ÷è¾A˜9ˆ´ì· ¼«Õ*ËˈA__ß[ÎÍv´^ÚA²ÙlÇûßKзÛφaH¹\Æ0 ŠÅ"¥R)Ý'EhºÉûHÈÚÚ:×سg˜þÞ’Õõ®\¾Ê…‹—¨”#`Û†i¤`³ã81ðâ’Ídpãÿ»®ƒëØ8Ž‹í¸hlZd­ìQ÷MLÛBߊø×¹[íAÔ*DiÇvA+”Vø¡B i „0Âa:„ZÓ¨×iµ<¬ø:ÇÁ¶ŒˆóEk‚PÅ-yNÜVgš&¡ ƒè5A€ Ö¸vµBy3G½Vfx¨—‘‘~ú{{ä¶}ƒ<°Xæ›ß=Å©7ñƒ0²eÌç-¯ÉÍêQJ*+´Ö¸®›‚ÉzŠÚÌ¢Šö€»]2:z?iµ›h¯Ê¸,Ls«ÛÃÀ!lµÐµ2aeƒÐ÷ ,- AÈžÑÌÌðÚÉשף$išx¦O½ÑÄ4"sÛ6±,Çqq]7þ^ÔÆ U5@‘:VÄ;#Ój˜Dn;ñû¤”R¢B…絊ÅLËBÇIÏóÒqÛ¾ÿéxŽnŒh;�“<«vn›„à­bÊAFk  Æt­k]ëÚÇ~ÙŒñZŠjÍ@«é—1ïè°LËâk5͵…\N26}? ayE±YVŒ CÂЀdxÈ`eU¡c¹¿Z]ÒhªÔ‘Ûn™L†OúÓ4ê ŽÝ} Û¶¹té2×®]ãðáÃxžïÔë N¼r‚ýö§ Zkææ®qåÊe …/^bttÏó¹|ù ¥Ò&ËË+Üÿý,,,ÐÛÛ‹R!H¯¥Ùl27w ß8vìÍfƒ¥¥%¤”¸®K¹\‰I2/pûí·qúôi<Ïcdd„#GŽ ”âôé7(—KØ¶ÍØØ¹óÎ;9qâUJ¥¾ïqÇw¼g�M,/#j | ¦ØTõѶ@YA&ËFcÕÖµÖ‹Þ4UÛAêÑr¹üÚ |ŽÂýsˆÐ@7“¦…¶ ¹*�¬Ëm²»¦¦&©×ë¼ñÆh ===ø¾ŸÜ—/_Áó<Ž=ŠeY[ýãÂàÁäµ×^gmm“'O±gÏFGGX_ß Ï3>>Îk¯½Æ‘#G8sæL "œ9ó&###¼úêkQ`áf8zô(¶m!««k w¨%4›Mz{{éïïÇu]fg¯²²²Âúú:_üâOÜT0&Q™Xö"BiMËP¼°/Ãá«.}‹ ëÞã\Ü„Óó!¾jË<³ˆ‚À à© !Ëõ"ã¹cHñ—QË@›ìµP5„ÚL¹ÛͲ,>Ìòò2`xx˜üà”Je–——yôÑÏðꫯ£TH6›åÎ;ïĶ-|?àüùó¸®Kÿ‹‹K(R­Ö˜ŸŸxœ(’RòÚk¯ñc?öãœ:u’¾¾~666¢X,òæ›g0 “ÑÑQæææÈår©WµZ3úŽ=ÊóÏ?Ïç?ÿ9fgg)•Êd2|?"3<uê4333ï+cí%܇ž{ á7àÔã'‹þò¿…ÑЬA³Š¾vñúH8{ ­XY„ƒwÁü,üÉ¿G|÷›P¯ …D ¢÷߈+ãv[WçÎãòå˱"œJ{·gwAP«ÕXYYaffÃ0˜››Ãó|n»mkO«Õ꬯¯1<<Œëºíji9}¬úÑÎO“صkóضÍèèÈudš?øÁ3ô÷÷óàƒÇyå•W8zôh:¦7ãlêÚÖœ4L“zi“+—¯r¶Õdue‘j­Šïy(­ÉærXqŒã8iàš—LÆ&ƒ1…|ž|¡‡º'˜½Vbî|…rÍ£ÑRø¾&~àGœlµÂù1—KòÑÇLf´¼f¬<c`&J‡4¡Ò E Gº9–å`™vL²«ð¼*F\%!Òv!Ö>µzƒM!“`6"z' ÈXU2Î&ssK †{™šÜþ}{èïcb¬‡ŽsöüÕjíR ¤a`Z&Ù”°UPÑß—V¯×ùú׿Nìß¿?­òBàû>¹\ŽjµJµZM“DžçQ­VS`BkMOOžçaÛ6¶msàÀ2™Ì-37“DØN`“iš„¹"ÊÍQ)—pl Ç2¡VEm.³ ÏÊ@?זׂ0Tx^8Y–IjŒfL&-–ebÛù|ž|>ÏøøD$}ÞhP©TYYY¥V­QªT¢¤D êù¾Ÿ^†aD€¥‘€1½}=dsy„xž‡çy)¨œì•‰ñV@uçë;µ'‘Êt·ƒ1‘¯g½´N¥®µÓìVÆt­k]ëÚÇŽÙ«#T‚0h瀩I‰[U1Ͼèñú逞^Éÿ¨ÃžQÉêšâ{O¶X\VÜ6còO>oc"’T—¼yNàÑÁ„’ ¼LÑá·¶¶Îòò —.]¦¿¿¥4Z ^zéöìãž{ïéèÏ­T*˜¦Íwâ±Ç¾F¡P@)Íòò2år…çŸ#GŽ0?¿H¹Tftl´ã�µ,›ÉÉIÇeaa‘z½Æêê*µZ¤^ÒßßÏø«¿ü…BÛvèéé¥ÑhHtñâ%>ûÙåé§€Ö‚ÕÕ8ÀÆÆ&ÿ?{ïkÙuži>kíxò97§º¡rd±Š™T (ZIÙ’ºe·aÙm3h 1mÌüŸÆüî?ƒ`€1èÁx€îÚv£m-K-*R´DC‰ÅP9ޜν'ï¸æÇ÷ÜPd‘*[÷#/êÆöZ{­ï{×û½o¥R!ŸÏaÛöÇ+F°î@K Â(i“·ª®î hVò¼zþ·¸Q} G T³‰ßÉ�MA»™¥:Ý‹@`àBÃK@6€¶½RÁ=%c X[[cff– YYY¡··—ùù„ŒÓl6±í̦þìf³Í~ðCòùûöíåúµ<x€™™Y: ˜™™¥\.±²²ÂÌÌŽÓ¡¯¯ŸáátÝäÇ?þ §OŸÆ0 öíÛG±XàÒ¥KŒíaii™«W¯qèÐA²Ù,Ÿýìg¸ukš¹¹yªÕ*J)–––yóÍ7yñÅL¨BœÀEJ„ÀrNò“ƒ®7èaî}I v¶PW]_ûÆLÍd47ˆ‰Ɇ«Bùi+À&êÿÅ]䆵‡«W¯Óh4ùÞwÿ'~(¶ßC¥R‰Çn‚ ð¸rå**„÷óÖ[osúôi:6óó �,..àº..\$BÚí ‹�\¸p…… …"º®S­V9~ü¶mlj¯ÉÄÄ$žçqíÚ5nÝŠ@…µµuVVVÉçó) gÏž1?Qý#›§¹ç!Ô{ß§ ž¼‚8ó×ðü¿‚òpÌüÃ_Ãø·¨–€‘#ðoþ-œz¤„3¯ þæÛP«FŽWº?250Œ¸Ë%Ydž‡G8vì(A x啟Q­V9pà�…B7Þxƒ¾¾>Çá½÷Þã[ßú½ØŽ<Ò`øá”„CCCüÃ?üœçŸÿ"µZz½ŽišŒÇì²c¼ûî{äsYpêÔ).\¸@µZeß¾½üä'¯ÐSéáŸóikhÒZvéÒe<ÀÚÚss 9âÞ}Ÿ]@fkø¬5$Ͷ€ÐE*Ó.’aà IiDb¼¶•�/6–�1Yl;KˆA tæÖf/.±ºÖ¡VoÓlu¢¢Vââ7·Mî-]×SnáÔ´ M¥B<!𥆡ØVdt[X–F!gQÈ[TÊyB?dn±ÆrµA³ÕÁõ}\ljö•X£C“BŠ�’2Ê/¢VЀjS£®i˜ÍË 1×Ì/·˜Y¨q}f‰Ñ‘ao½;‹ã‡QN¯ŸIËIRð#v.¦?tqcårÄt]‡|¾° ðÌd2hš†çyí¡IÑoÛvêD¤isssd³ÙÎ\ uTb³Ø¸R*µ¶Ã;—ó…©›¨lžJ³ÁéPÑpÞg½VÇó}D DD­©^Wû‘Àó#·0M“é÷uÝ X4(ò ôãyŽãP¯7"½¤Ž“^_Ïóñ=_xÑœ`˜:}ýèš–²«öÌN׺»õlãÞ$zW‰€ôFGŸêb"­¢MÛJÅy­B©pH“€6»`ÌnìÆnìÆ¯DƒÉFm*Cƒ2ÍIÂfæ"ŒëÃj5ddH²^ YZ Y¯+nL›Z–úû"öŒD¹O$¼wçW‘œ�K)YXX \*‘ÉdRß÷8|ø0óósT«U,ËB‹7R¥ËËËÔj5ÇÁ0 :6®ë1<<œ&@–i²¸¸ÌñÇS–†¦i˜†I±PIJ-|Ïç½÷Þç±ÇåòåË@dÃ›Íæ±îFÔ›ßF×øCÃ4 –––P*$ŸÏqîÜ9VVVX__g``ྌ“à;:Ê1¡I䶨PÊÂk—ŸàÕËOÐ0FÁ. >–°ð1B|vMÖC”Y×P2€ÐC4,B@Þ®K)Ë311ÎÈÈ0/¿ü‡ÒkŸË噚ÊröìYžzêIÖÖÖp]'>q’1ÛÈâĉôöö`Y6…BL&j±Èår˜¦ÅÅ‹xè¡ã¼ùæ[ ²¼¼Œaèi ÆÇ÷à8¶m#¥dvvއ>É[o½ÅÛoŸåر£�üà?ääÉ“!¸ukšJ¥L_ªI2==¶:µÛmz{{É ½­Î*þï܈Å“0¸˜šMâŠ'[ ÓÄæ+ÄÒP. ]mJ …ÿö Ù†ËNÄô*Šq›ž¤§·—±±±(q¶m4-úÝ¥¥E2™ RJLË"›ÍÑÓÓÖõöK) ‚'žx‚ï|çïùßùjµSS“¼÷Þ{ìÛ·Çq%—ËÅ­Ù´õ!ÒvjÓjµ˜ššÄ4Í”µ¤i:®éxž®´Z-Z­…BžùùyÆÇÇ™ŸŸgjjêcß]†I8ñ0ÊÊBs5VÌöÁ0A7"&Ú¡§ ?�­�^øCľ±#Z¡n ¤@(±bry‚ýGɘæ6=Ÿn0)IÄßzëmªÕ5Ž;J©Tfyy™W^ù=öKKËì߀0 ÚtR®TÈ­[Ó<óÌÓܼy‹ùùÆÆF©×ëœ;÷.¹\–ÙÙ¹XÈÕ R)S­V9uê$¯½ö:.\àí·ÏR(XXXddd„r©”2mêÿ|ÀÔÔ$™L†ë×oþ¦"b7î_ÔÖ\Væ=L-@· ”‘ÁÊÐ¥‡®…ä³ùœ…m›q+‡…iÙiÒvKuÉìb“™ùuÖëNW˜}Q;‰tê.Ø-¤®Ð4‰R>¾ï!…Dj‘˜¸`ƒÕ`è‘»‘¡kd³6½= déë±(2:\Á÷‚ `yÕá½Kóüòý›¬®µé8‘Ö› j71£f« ø†s’ ÚŽBt@j`ê‚åz›™¥Þ¹°†ãëÔ›>A ° ? PA1vD=jCÄ÷c øZ–ÅoýÖomQOŠün±ÙÜ:~üøç -m§®T*i»Íƒ häSAÐétÈç#&aÏ„aRCÏæÉÚYFò%N ›7Þx3ÕÛ�y6Z¹¢÷·i2Î!D|d<×tl;ïQ½±!â†!­f‹ŽÓÁ÷# "¥Z b&ºjÉsE/£[ô>ÑŒI¾O¬;´̤Âë"f¸„!A¢ˆœà ÜÄD‡”ÉëÛ Ò$kí.³»±»ñkR†H#„ÐB Ê%¹¡J!`r\cf. TŒGÉù`¿FoERoÚ¯£i‚uż@È¿×õ ÕŸ¹]hšÆÁ(Kœ8q‚·Þz‹“'bll Çq˜ŸŸçĉc<ùÄc\¼t‘³gÏrüøqFFF"À$›åµ_ü‚o|ãëi"ãû>óó |õ«/Q,¨ô”ÑuÁÁþìÏþŒßýÝß%“ÉÐ×ßK&kÇ'€!CÃCœ;wŽcÇŽaY¥R Ë2yü±GØ·o/µZëׯ3¾'²“-K<ùÄ“œyã Gejj×u¹zõ*O<ñ8ƒƒ\ºt™v»}[qÚ{d\£Hèš„¾ŽôM–4ªM‹•†“«¡ô�]Ëb:Y_ây–ë Ý6:U´†Bøª) ·…j T[C‰<w:´m›©©I*• º®óÌ3ÏðÃþÁ~*==hšÆÅ‹ùÊW¾D¥ÒÃêê*/¿üC†‡‡8}úš¦ñ裧™œœHm$9ŒeE-==•¸•¥HOO/_üâsü앟166ÊðÐÇ¡ÝnóGô‡œ9s†#GS*EVÜßøÆ×ùÁ^fllŒ±±1:Ó4ùžåÕW_¥P(òÒK/077Ï7xá…¯¤¢¿I²Ûl6)?žµ·’¬27õ–+ a þòT‘ç®3Ù{Ã�×)(³ ÐAa[Š}½ru¤±èU#eb¥‰áN`Ìþýû©T*)ûÅ4MtÝ T*óGø¼ú¯Æ2=„aÀ‰ÇRíŸÏ}îs,/-S.yþùçøùÏçy<þøc8ŽÃž={˜˜§V«16:ÂŒ€óçgyöÙÏ3::ÆÙ³gi6›LNN’ËåÈd"v˜®ëìÝ;Åœgxxˆ000ÀÛo¿ÍØØÙlÛ¶˜Ú;Éõë×9~ü(·nÝŠçÆÚÚƒƒƒ4û·j:Úä |»€¤PPèEõO"ôLÑ È–"ßÀA•{Á4ÒCQ18ŠE­UAAP(:¾É õvóJÁÓO?Å‘#G¸pá"ÓÓ·8vì8ßýîw™œœ “ÉðÎ;ï022B>ŸÛ²–D§ê½½=Ôj5:6===èºÎää>ú(ív‡z½–º›”J%úúúÒ¢iß¾}<þøcAÈÅ ÉÅ#I‘äº.?üá1ÍH ëäɇc‘î¢sW7æ>†ºEMظáÊHU 4aSÉúX¦F&S ·¯@¡P¦ÖÒ9ûÁ7ffiw¼X—RG‰&5a|#6ÀÝmÉr”œÚGŽ4Äâß(p]Ó01 C×±,Á¾'ŽŽrâà0½• vÆÀ44tMÆÀ0¬¯û¬®¬39Ú˾É~ãó‡ùÙ™›üü+¬®5⢙,^dZ‡aˆ C<ÏEH Ã4R'ÇóñCèø R„¨.®¡®iH]•"ÁÖF=èjý3Ÿ’÷ÐNåJÝÂö;­º®366ö@ÚdGnD*µ¬^YY!ŸÏG‡^qûj2o’½5 Ȳ,‹cÇŽÒq^ýu<×ÛYcE)\ϯZtHº®!Žã¥»]çÑr­i˜–‰Z>QÏ÷ðÃèP£Ùl¦:1É|WJ$¸J|ÝUúyò})7^G"Œ)ƒ,ŒÍ ˆ€™tÙ |éþ^ní2cvc7vc7~mr=A.§S)´Xt ’^i]nÊyòQƒûtŠmE»].'øÆWmj E¥´Ù9@Óº$F…¢Xð)ä¬;jshšÆþýûÒ'}î¹/¤'J�{÷N!5‰’Gy”Ÿ¾òSÆFÇRP(äÉçrLMMa˜Q‚S)— cJ²”zju•‡N<„ëz9zÃ4#ý“¾>zzzÒD@)Åž=cé5J¡G=ÍÊÊ*««U ÃdrjÓŒ’×Á~¾ô¥ßHÝjyäô¦×ÿøãÝÁæ­¸ØGúiµ{)«:"ˆNîU( Ð8=ð>?×OÒp$pñü6¡2À—‘P¯×¦/3CŸ1^Uèk€ïÁZ:ò�EiÜö5Y–ÅÄÄDzM²Ù,/½øbTˆI’½{§br‡à™gžæÚµë˜Fô˜šÔ8qâDÜ'ÐuÁ¡CQJ1Ð?µ‚J¥'J‚BÅ—¾üåØACDEm<N/½ôâ&¡½\.Ë /¼Ht’«¥×¾\.óâ‹/¦¿W(Ò¹&¥ä¡‡Ú–Pœ{J×5†3¼[»ŠcæK ÌTõo¯¾É ‡ðüa“÷i¹;\k¡(Ù‚?~Ò Ã<aí5¤ &¡B#ñe…ÐÜôš7Ÿ"KöîÝ›>ÿèÈ(�ý}ý!ÈØ6/¾ðR‹4INjƒ0=™.äói‚ü™gžIǺP(Ð×Û‡BñôÓO011ÎøøžèuHÉc=šRð{z*)KG×uöìÙÃÈÈH—SšÉ—¿ü¥M÷RŠÑÑ‘mï­¯¯€cÇŽÝ—µPŠ[ù"͡㘠WP¡‡X_D\{ö?Vµx~ú—ˆ·¾Mu¾ù¯`dœÐ´àâ»ÈùY‚¨E©}ß¡Íϵƒæ€¦i”J%r¹†¡344Àôô-®\¹ÂÈÈkkk¼ÿþ»ô÷÷²ÿ^^}õUÖÖÖ"—ËbY&ƒƒýd³‘&¦E¢âù|žz½Ák¯½Že™>|ˆ ðÑuþþ2›¾¾&&&¸rå ?þñ8~ü8ûìåÌ™3”ËE Ã`rr¥ccc|ýë_guu•ÙÙY<ÏÁ¶-^}õUžxâ‰;´bÞeqÛµ¶ÞqN†"²•F3Âßõ‘RC“‚¥ºFµ-¸µÚ¤T i;5ZŸvÇÃ÷C”Ò€ÈOˆ ö’îVÇn¶†ã8é~œ0„XfÌTÓ%¦©“ÏZô”3”Kz ŒWÈÙ:¹Œ*@“-fg—"k"jà €µõ:Í–C³=ë¸è†ÁÇ+Ýÿ8®,sþò<3ók4š.BÈÈîÚUh"j[’R¢kºÞƒH!A#eaø^€!¡ÓÖ§´àíZu]'›Éu± ïÇWÂFä>Îë_-ó,ar$ú'BÖ××Òõ,ñNØÆÉ—€2Ý@L7óeÏØ(µÚ!.œ¿ˆëFíŽê6™Q©aH躸.Ñ|r“Èq2o¥„¡ÂºÙ-"úÇ¡ÓqcA„tß' D¸i?ê¶·Ötô°-M×ãëã†^ ÊA°‰s;6 ñûŽr>5¦á.³»±»ñ�€1ù¬ddH±\… ˆÎš­¨Ç5¢{B³¥ÈçV|8Ä?³lA.„FS¡‘€oB»­Rw&)a 7¤T¼óéNRDÛ¡Bj·?5’šÆŸ>ýúиr ðQî©ðâK/¥_?õÔS›6|y6¾ý|ã_K“÷¤m[îtêõ‘Æ*N3SCÔ3ãVç‘z@ä*aÈž¥:_z•¿Ÿû,+õ€Poã¢C Ð:P×92ü&ƒb ±&!ç‚QuIèt¼²4žðpï8NIª éÛå¦Têࡃ¯ÉíïLÛž §_k©ÙÓ¦Ÿ)Ô6ê¶”ËÚ.|÷iS¼5MãHy/?Z<C¨üŒ©Ü|oéuNLœæ›<ÌjSqöV€ë«”a ä-ÁoÑùíÓ:ÎòÉ5ÎE×JD'ÄQꦃ1€°÷ÜÖm#ã“=µ%±ÌX,Pŧå‰3ËÖùw§¹¹µlèþž~[ÐJß46Ÿ¤•ö½¬…BHtÝ 8ð$꽿Gx~$ÚûÊŠz ¬\ú9h9Ô×ÿ5¸Þ~þôßÁÔ!(÷!¾óç°¼?¨¤sôù|a“fÒN`Ÿ¦iœ:u*ýzhhˆ¯~õ¥M¿s¨ë>O??rä�'Nœ�àèÑ#›þNlúzrr€/~ñ‹�<ûì³�ÛÚ½†††¸zõjjAžËåøÖ·¾ƒñ9öìÙÃO<A¬¬¬ì°&îÆÇ¯‚º2.ò<‚¸0츊VG²´ÖH‹Åè#±‚ެ¨Ã0n%Öºoÿp8˜¬•a"cPÙ6 ,Ë$k›” }zËYúòô”3ôTr8==ÖV«4›ëDÖÑR êµk«U ù«Õ5—Ñu0N ÃÄ­Õ•OÆÎðøÉ!ŽàüåÞ:w‹ÅåGàûQ{Q²F–Êq.’R=*¸¥®#¨Õ#|ü®ö äÞÓ4 »ëD¬†ûXàê:¶m¦k5weÝlþyÄ¾ØøžŸ“<­_'¯Ç÷CZ­Ö†L—ëPÂDN@—D8·[Ǭ›-㺴ƒ¼%�� �IDATnê–ùøcá¹×®]5ãîåuF3[ŠpÀ-¥ìÅöƒŠXjÅÚ6ÄZ…ˆdnm 1¢kÝ`ƈM ñõˆtk\ÇÁuM`ÌN,µA)ü•Ám»`ÌnìÆnìÆ…¼Æ¾I Wš-ÏSüüŒ‡Àø˜†® jux+Í ]àŠv[á¸püˆN± ð<˜ž x묇ëFÅ¥i„Lî‘”ËÚ]“ôE BòI“4EWÒ¡K ]È|¤¢¤&ÓSdñ3iüÙe -ˆÐ_¡{Ÿµ/“˼Ù:È „¶²É*qc™SåËœ('ç´PNˆÐ¬ë(a´ó¬÷M’« Ç'©;9lä!!¡Rø*DÝ6¸¿E™D I‰&ò=ID!%§†ŽR¼’cÙw6¨ ©:5¾ýÁ_óÇÇ3üÏàÕK:oÝðY¨) “}’'÷|î Ïµ¥q¢ú‘ªgÅóVa˜{ѲSw™9à©È•äN£u?çªD   q>ð÷V #%òÀãféµ#qÒê |ç‡ÃO#žûc8ð$*[A(P_ü&|ðKøÛ?G~ûÿ„N;. huêId,€{»ûik‘±õ÷v^ÿpÖGH4Mcttô® ™”’Ï|æ3»öÖŸPqaÜv-2e!$Åf7‹3ša\ÌG{ox¸®ÛHˆX‹cC—E�š.±L“RÁf|$ÏÉcSì` ?G»U§Óê077O³Qcq¾”à8&öŒ‘Íî¡Z]ãúitCçƒ.Ò××ËâRË2dfv–V³Ãàà�N‡\.Gà‡4›-¦gfæ¹göóù'pæ—7øá«çY©¶•jrD�atè!c„I&…vàAjiœ°e‚ H˜´E+R[½Oc¥b‹ùL|MïÿúôÉÏ7uÛç5ŒÈ¡ÈuÝXäYm·6ÀBŸF£A†©.KÈ4›M:…B!s„<ñÄ“ø~À•+WR7¯{Z“ר¸D€ÇF{DíN‰c‘`3,Œõ]¶íñÚ¶½½4zŸžç‘@ðãàû¾ïuµ÷mÆlÓ×R;ïÇŸÖ:º ÆìÆnìÆnüŠ �ÛÖ9°WgøœÏ•A�®ø¬Õãc’ûtGñî~Ä€ÑA×Až¦ c£‚0P\¾pífÀÂRHD'W½•€Ã%Ù¬qÛ4)R×ý6®ïá…AWr(Ò¾Ý Óß Î­?S›>Ûál?~H]jä4[Hä=c÷oÃTw}ždÿ6l‹â—bé¯ÞF¬9©A¨Aà#AÖS<¡_eÊZbÉ(ãSúôjëô›U2aÚ‘ª²r50tüvž¶ÑƒzøV¡'uÒº¥£¯BšC;p#ADE”àÆcu/Ý÷; «;UüûRH2šAN´rį边[q:Þ;ÊS=ñ·s?‚¨g<þ¹ã»œ¯^æÿ>÷m¾¼÷ó|í‘Çøì!›Z[  è-„hÚ /_ÿ1‡[GΞާУÇ"% ´nîJÙ¾ÛûŠ@)ZKÃ0¦˜kR»ÃHl¿îêžF° 8ŒÁSêä5 MŠûÚ p¿Çs#Ñ—ØC“´úPj½#x-X¹‰2lÈUÀÈDv¥RC•z sÐjBé()ñrE´ 4ýžæN†Ôj5Ø¿ÚNây>333”ŠEˆÛ½Â0daaR,t~»ÇŸŸŸ'Ÿ/Ëe?´ö„”òž„¬…S¤|Wü÷¶sBqá¨!„ž±�ºn†;»E¢*nµˆÇSh)¨cÄÌ´\Öd ¯ÀP‘þž}yŠy C†dlƒÀwÉYº¦XYY„À3ÅÚ¶e±¸´ÂâÒ2BH Åù|žµµ5¦öN>½==8ŽC©\bp¨ŸZ­Îòò*¦iàz“£t:m²9‹R©€Åb–Ï=¹—ƒS}|ÿ•‹¼öæ5T\DGE~Âî&€Dðv3£¡‹y«B‚ Zõ„åy¦à«Dt1KÔmï»0T·l>mP3º. ›%›Í¦L—­6ÎÝî} ó%ÑPñýh-ìt:4tLŠÅbêЕü}¡çá‡OÓÓÓx]¯áN€Ñ¶õ{ËΕ¼\-y;ìmt±·>G dÇÎ[Q‡“Ok)9ŽK"&>Aàoî_¶1[5rº÷ðR©´ ÆìÆnìÆnüº�2º.™·8rÐezÎÃqL_1·°´rîýH ±ÝQñ)8¨”ª„Š¿ûž‡¦)\|?;SFÀÁ½‡ö1tyÛ#T!5¯CÃï0[[æé([y;LÆ´ºœ>Ú©ðþV)pC'ô©‚¬4HÎEòú5]£wj”å?x’õ_GTr…6š)À—-ÄÐC†µCZ=/ J!½¡4”'²$®—Çk÷P?uóÐItÛ¾ãuQ4—šÛfµSã7Þ%P!Ÿ™xˆR&õî·¼ÜæJ*±ÁLÚ\’% ÕGÀ £ÖŸ¼n£mØ<0!…$gføç¿ÄÏæßbYU bÇŽÔÞÛmóöâ\¨^§ßþÿ8Ú{=Å!ßãòÕk\^»Êa}‘oŽÞŒ¥z%sN!GîÅø2šfï ž!húj^›†çðúÍ÷©9 NŽ`¬ÔCYEx‡kž4;ˆMpYb“vÛ1Ž‡Ä £„¼ ¬øäZ}¬ùÿ‰ßcRbf 4~nžÙX$f.Àÿõ?Á _üï¢wø³—ÿþA]¹€ˆ­^‚PÓ©9M¾o`ÇÈØ*¾pöì;\¹r™R©Loo/J)Z­¯ýâ5<�J¥"¾ïsîÜ»=z„¡¡¡M_÷š÷þû05µËE×µ˜¹² Èì¼–$:ªëP‚”I\z’vˆ´MClËš±A4]ötLC’± † ŒU¬00'cJr¶N»Õ@Ó4nÝšÁ%|ßÃó2´Û‘“™ëF €f³A­·(Uk~ˆç».`lÏ(}}=hºF>Ÿ% Cn\¿ÅÂÂ"¥R ÏsÄq|/ ··Œe–­g~¹Òäs}=ÙHŽ[J”ŠX?Ýí™I±»„ÙTèÊ.Ñâ˜Åá8û:‡7ŸµµµØý­2D"-Á®_¿A___\¸©öJ£Ñ “ɤc™Ø\-³»åH �cFÊ`‰Dz#×»žXœóúµÝ .qƒ Hÿm·Û©7DºDžç¥-ª‰¾ËÀÀ�O>ù×® 0==ÃjµJ§ÓÙjÜi½ÓÁ½®}›�“®D1”ÕuŸEÖÙQ+Z2'£µ3ð¢Ô¦–¤Þ®éT*eNž<¹ ÆìÆnìÆnüú�2ÍZ<õh‹ë·|.^1qÝè„à Áõ¶lR„i±­A§nr„Œ¨Îбa—Ï=%ÉfÍØŽrçü¥øÔ}‡++3üÕ»?áPÿ8s^¾r†±â� ïçFuŒ•û C•RÚélm™¬™¥lgSnÅÅå[ôåÊœ=ϳ{‰hË2r”ðÃ�?ðy{î"Oî9Ú‡%ôºeIHn™L|õq®\œƒÿòKü°F.×D7}¤æƒ"µ´!È¢$Ud½Kôo(5:N×ï§±oïñ§éAÞá_ø´‡›ëóüç³?àÐÀ8–nð½K¯3”ïáÙ}§¹´| !Ã…Þ¨<ˆûÉßc±Ye¤Ð›Ú¢6Ý—fèÉÈ›6•l�S3UHÝi±Ô¨ÒŸ¯PÉ©ùlÍ@ }ÃJúª35Mcrpœ¯?Ǽù^3¢$§É˜ÂCÜÀc½SçFm&mç CS¹|ub…¢æ“8'Åå I(‹4ÊÈ`¡!wn#ñBŸ†ïÐô]þן~›ñÊ�½ùgn¾Ç\…G÷C Å™[pjô 0¤Ž‘RŠ–×!P%»÷é+j&Õv¶ç0Õ3JÁÎâ~Ü–$q—7¦Ïó™É“ßWRÃÖÌ H5]„@&òÑߤý³ÿ»1‡ôÝ ›ë•ð—ÿnÝ�QDü—ÿ„º5ré'~¾„ûµßG·m¸Í½´µ�P*äÆLLLríÚ5<Ïãïþî;hš¤Ùh2<2ÌÙ³¿ä7ÏðôÓÏÐl6©Õê\½zË—¯ÐÛÛ˳Ï~ž¿þë¿BÁh4šÌÎÎòýïŸù/ÿœ^vãA„¨6\]Ô¦Ÿl°D Phš† ºu]’͘d³•JއŒrhß {†KØVÔêdY&š„wÎçêj•|>O_o…÷b™&FƒV«Íûç/Q)÷Òj5"Ò ò\Ÿjµ†aèärY.]šctd˜\6G¡X`mmÏóhÔ›,,,3>>ÊêÊ }}=”+¥ˆ±‰¿ÄíXí¶G»ãRk¸,,5xçýÞ¿8ƒÓq!Ö 3 =›ÒD&^_ÇA×´ØyjCpUÄEuä¤12±%&ðñµ«Â0¤Z­²°°€çy VVVPJÑÓÓÃþýû©×t:NÜvµ·Ôj5šÍµÚ:–eS(äÙ¿?SSSŸ3&rÙÓ1 ƒV«•2[’Ö¤híØpâB¦ì–n`$a×4 lÛ¦R©ln‹5VjµZIJ²í ÒègppV«Íìì,gy6¾&ÍH7è.L™äÎwÈaîÀÜiLð³ûx*úY"ˆ­vfÙ$�MסÓV·‚B±À#<²M¿kŒÙÝØÝø' ÆD;ÂÈp‘—ž_¦Vo0=›#oc¿š橤úM€Ñ„ ô´ùÚ—}Æ÷ Ü™/À :¾ËÙÙKšâñ=G¹¸t“¿¿ð {ò(~peešõNƒ+Õê&{ʃ”­<ï.\eoßßyÿU*V>Í/ç.ÑŸ+seeŽãC{yùÒN îãÜÜetÍàÈà$ï/Þ é4ywþ §G¡ë:NàjaÌ>ø•ŒÆ=—fêä†zúÃçXXsñ~rgÅ [haY†ô‘z€!JªQ*ð\g=ëTh¤þÂg;uÓ2w<MìN´‚0Ä Þ¸už£C“œ9„ã»üù;?`¢<ˆBqee)$¿¸ù.»@O¶HÖ°¹\a¬ÐO½Óä§WÎòâÑgXjU±5“=•~ÎL¿Ï¾Þr†M„¬»Mžš8Îlm™ó‹7ð€§'ŽS²óQ›N‚¶Á§A©mì€{MÆî÷=%¥$cZ¼tô \kLó£…3¸ªÛ¾sƒ$¢P8›&eò…R‡cY—ŒŒ€O…Œ?‰§ ,Z@ßžÏ#¤¶ãý¥” ÜÐçÌ­w/÷ó™É‡„¼|éLv‰Ç÷øÉ•·ñÂ€ÅÆ*ÃÅ~õóò¥3ôeK4½6תs|åð“\\¼…zŒäûXhTYk×(Ø9ÞŸ¿Êj{ÉÊ0šÔ¸°|“¸þOG—:~â…!¶ä7ÍB uƒÂØ>V¾ð¯©üäOɬÝB„a4¿‚�VàÏÿ7¨+h€pºU¥Ä+”Xú­oQþÜsM¿çö ¤è€¨dnnާŸ~Š¡¡!þâ/þ!§OŸâСC|ç;O&c³´´„ëºüöo“ÿú_ÿŠK—.cÛ6/Æg—.ý ¯¼ò ò'ÿf‹öwåw7ãí"aàÇ›í¨»µ:¢y+c§#I!o15ÖÏøH…±¡2½½lK'c,..¢… Þyçý}½A@_Å|=£Ã ö3=3@påÊMzzÊÌÌÌR©ô`[Y§ƒ@âº.¹¸žG¹R¢Óiã{÷N²¼RŲ-tM§Z­’ÏÛ”Êyô!,SG×G#PY):Ï h6;,,Õ¸1SeznåÕ&ëµ6mÇÇuA 1ÌBøHl_Ë»Ö~˲Rëjß÷R«n)"}bF‘f™‘€oÊø¸sPÓ4) X–…ïûŒŒŒÐétÈf£–Á¡¡ÁxÜ´ô°ªÝn³²²š:¥åc{ùOZÜ<‹–eÑétRÑnˆDÍuÝH¯QbóaÚš”€ív;mo*•Ji;R’?$1¹&¬œ p'Òt éëëáK¿ñ<®ë²´´ÌÒÒ27nÞ¤^¯o8/ÝfŸßÊ<݊Ĉé~œDºÍ­š¤Û,º»tan§ÉcÙ{§¦8zô(ƒƒýX–ñ©,1»`ÌnìÆnìÆ¯€éÞŒ4Mrpßüê"ßûQK×3¸®ž¶#¥ÉJŒÁD'Éa|Ú”$; ]˜ÚÓæ+Ïù?6„v‡ö¤„t­âÓ/ðXm9üÍû¯ÐpZ˜àƒ…ë<5q…¢á´¨;-žž<É_üòež?ð8u§Íjsþ\…£ƒ{¹RXÍ*µN ÅJ nÕ–x}æ<£…~Z^‡éõE¾rø)^»õ^t*¡@ ¿’“û&®Ùw`”ðOž§:TÄyùîÌ †t0 ÍðÐe1 j„¡ÄwL</ƒ“+Ò~rñ/aìó'Èæ³›¨Ý[“†msFD ‰ï\øê#Å>æj+›~çÜìe¾qâYnTçcw‹K7ybòËœÀÅõ=^½ú¿sê9Bü0àÝ…«RG×t~vý®®Ìðù½§¹²:³y*Š€Bµá t·DëOt4ƒ‘ò¿wì7ñŸ×VÎQ÷›iš·é¥m 3Œ[/TÚô %$"eÓHÚ PÏ~…ʾoašv*¶¼íëêÞjz.Y+Ë.½"@Jj«„(nè³Ø¨2ëáÜìe2†ÉJkŒa!…äpÿkí~àss}Z»IÑÎÕV¿|÷G<àQ~|õm† }ôçËiÂßÝQ2ú�ˆIŠÝÎRþâﳞ+áüâÛ䧉îÔ6ÞCüÞ6ÜR%¾aÒÞw˜öW¾Iþ7ÿf¡ˆÐ´»‚1JE˜gΜaxx8b4꘦Åôô õz=‹œÃ÷}úûûZ­vt¯;‡®ë”Ë%Úí6çÏŸ§T*aš'OžäìÙ³T*e …ƒ-²«Ä..Ó]Æó#´Ø‰n«sš¦I 9‹‡phß “c}r¶¥Q*f°-ƒ¹¹eÖk«ºøAÀðð º&1-››7gazz†B!O­Ö Ÿ/°´´‚i”JeœŽ·Ìt:}ý½tÚm†‡P úû{p\—ññ=´šMlÛ¤PÈS,åÒ¥¾çÓh:´:µZ‡ù¥5®ÝZfa±ÉÒJZ½C«ãoð�c·)u„”Ì’&ei$k©ØâJ#Ôf^)RlkcJ˜3(JÞ·µ¤P(P(n»•ËÛ'z©T¢§§¥TÊRù4Â0 ÚívºÖ$À­‘n”®o¬" + 1ÃKØ3BˆMV X“0c’ï)¥0 ƒ bki•‚8N'½~RJ …Åb‘ÉÉ >Äìì7oÞdeu5ŽÂ`³ï¶ö¥.á{§v\¶.Û~/^Tòÿöv¥®ö^]×Éf³>|˜£GŽP*•âÓËYvÁ˜ÝØÝب‘Rbpüh?¹ì?ýE‹wϬ×l‚PtYn©÷H©Ð¤¢s8|ÀåsO:Ћ¾ˆÙVÄ¥K‰¡éLõŒðúÍ÷Ð4žl‰¹õe>;y2*ŽdÔ3³²ôçÊ(Ãb¹¹†.5*Ù<7ÖæÑ¤äFu¢ÅÖM–škä ÕV–×aÝi°·wMj\[%c˜H!ã í©Ä]ÇK™µ:±£”cùà0«?ø�óY2Ë-d;:A"vP:`âæmÚ+ˆ§¦°_:ÂБ©¨?]ŠÛ&2Ýß—R¢ ÉDyˆ_Î^ }2¦ã{ìë‹r^!Ñ¥FưèË–™¯¯’1LnTçY¬­ñ¹}ã‡!óõU®¯ÎÑòlÝ¢Öi„A¨h¹MÜÀgªg˜Õfùú (…&dšÈl¸ôº5ž»uL~U…§ X†ÉÑáƒüÿŒÜ{~´x†¦ß"ˆ ‰îÓ3 d<]tx¸àctÙX+¡ÓRƒ´ ¿Ivôkdr•¨@ÙBß”h ‰.4ŽNñŸÞþo ûh8.½ MÇõ=t©‘·² {¸°tÛ°ðÀkÕ9 ŒSw:xAÈå•<åÓ›)â¾ Xm×±u“‹K·èÏUÐ5ÅFMj©m¨†ŒßË?žºÕ3Hñs¿Mch+¯þgÊïü-f³ 2@$~oB 4 ?›gõ‘ÏÀןìÓÏaKHMûP:ƒƒC;v !àæÍ[èºÆÜÜ<J){ì1†‡‡S›ÙG9ëºÔj5 Ã`aa‡>ÉÈÈ0GŽI5N:E¥Ræòå+·=ÕÝw_ŽX:º.CÇù$…¢RÔ84‘ç±ãƒ ö²´´ÊÍ›7hõö08ØG_†¡‘bm­Ž¡›üò—ïR.—™Ÿ]&›Éáy!JI Ãd~a‘l&ƒeš,/¯R(ä©×ꌎS¯GÿJÞAèãyQ+_¡˜gp¨‚ ²¯öƒ�× èÔê6«kM¦çÖ¸xm‘ë7VX\Y§ã8˜º‰¡hº¾ÑNƒ"ªþ"á#ÐQXÑr¯<À'$„@m*ê5)ÑL½Ë5ÇOÅŽS¦‰‰ÌýÑîàHt×u'nÛù´ç™iš˜¦™&·Ûÿ»ÁãN'‚@%—˥ʞçms"êÖ¤I~–¬IívÏóÈf³äóy4M£ÕjÑétèt:©ÎN©T¤¯¯—#G±²²ÊÕkט¾5ÍÚúŽãÄŒSµI?èNãrw�¦û1ÔvbÍNnHq+ÜÆÖ®¶å½BF9÷àà ÇçెŽúÐBëŸD¦¹åvã "þ]ÿ&Zü¡Ç&`�eÕZújwóÙÝØ\‘ôAÔcëùŽC«ÕFš9F§bw…»/ØÉ©šã´)‹wÜh“ßY[ïpåj“·Ï5¸pÕ¦º–G)#ýI‰¸•suöïmsê¡,öåé©dÐu±£ÞÖMIÙ#¯x-ªíçæ®p­:Kư8з‡Cýã ëí:ßE“•L[k T2Eª:YÓF—u§EÖ°iº-ti K‰Ž×&gf¨9m4)éɨ¶‘[à1Õ3‚&$e#G^7SÚO#”R¬­Õ°, MÓ‚€ °m3u¸S ”"ðÚ­6õÙejgX»0Cpq¹PG¸!J(g`¢—̱QJG(O-çÑøÄñNãÔý\„T½6«í—oq~é&¡RìãpßYÓf¥µŽ@Pm×.öÑtÛa€ëû„ z™«¯`j®ïÒ \&ÊÃL×–(™¹X 7ÄóúòÚKÛu15žL‰œn‘ÕMÊf ±ã Ø“ª~_6­¸4Rqžžò¦S·îÏW/ð™­ÎóÊ¥×ùËKßåª3‹iÿ¸ ¦€CvÈÿ<Ùât!• &UN#¾Naàf¦Œ¦éwµ •¢ê6©ù.,ßäâÒMÚn›ÉÊ0džö‘73*äfuž¢#cØT[u V–¥Ö†&É[YZ®‹!5Z~›P…äôLlkÑMš^” cØH)hº:žÃáþ‰Øýʤld>–ÓG»f³…ïX±µ´ã8†N&cßuœÓÏŸÀ÷è,ÍQ?û#¬ïÿT¦?@[÷¢6¥–F½gkÿì)~åkØc“h–YdKyÏ–ÖÉs&¿—|ÝMÅßpUS›œsº Ð ííÏÙmçú íwµZ˲ѤνL“ÈFØcqæ:Êk“ÉØX–‰i˜1€!·1HÔH,‘¶ë¹´Zm.\åOÿߟrc¶Šç@˜›ÝïMjÐ[48¾·ÄØH‰C÷°wrÛ2è´}>¸p™þþ>:=½enÞ˜&_(°0¿Œah8ŽGÿ@íf‡rO‰›7¦åÆÍiöïŸB©žž *0M M“X–ÙJK‰¦ TµÀA0^@½ápcf…Ë×—˜[ce¥I£åâxAâ‰Ø)é¨P˜šŒ€Ì®ƒ‡íã(BhaÄBÇ~ Øl¸ä$"³ÝŽŒÉýªC×é¯äùïç4cC½d34MnÈ–ßÑæû´]—F3ÄÌ ¢é½½•M÷Ù?»w¥õzƒv»%­|IîcÃ0°,+fri›ÀÏóÈd2¸®›>^«ÕJÙ3ÝzVÝk[²&"ÃNÓ4±mÇqp]—k×®Q«ÕX\\biyß‹DþwÚGîÊŽùvÓÛ’TWòöV©ˆÁXæðáÃQ+Z.‡iê±Õw¤ãû>{÷î}X<Àüø#ˆ?®Õõo·°”Ú~üÙu`³[níÆnìÆn<xš‚¾Þ,…¼Éþ}9—ZÜš^af6d½.p=…i(J9ÒË044D.§a[ÆŽ Ô6@MHz,R);Ä¡q ©“1,´¸ÀèÍ–7ýÍþÞ=�ôæ6,�r•ø³Þí(¿‚ÁüÆnT²ó©þ†$«[d5÷²§‚Ÿx‚³y£Þj¼sQÚ] i†F®˜ÃÎe(O Òÿôa¼z¿Ñ! ¢÷bd,Œ¼YÈ`Úf”HoušwgähJRÔl„'÷3YFy3Û[C_6“ÞX„7gl/~÷VF¶}ïP<¦[£ ˆ\D™H²šAA·~eÊ>wJÈÄ×4qÂïå…¯pjâ8¯\xŸÎ¾ÉöíÐ!D‘ÓB¾Ôë²?o „A',°ìÃ/?GÏÈÃØ¹!tÃÜÄEg\w�� �IDATÞˆR‘ÀvÞÈ „äpÿ8åA<ß#cXXzdU*…ƾÞÑô1ò±“I)“Û¸ºVó5/â4©éTŒì6ÐìÓº&!5!5²Cã˜Ï~“úøfÿî?0ôúw‘2dùø#¿ÿ?ÒûÐIÌRoêœôa­¿ûñ4"ä?Â'^×îàÂöëJmXõFÌB¢!Yoú\™®ãzõz‹êjcÇöR.(WJœ?™ÁÁ>|/`ph0fTÉØ‚zÛfue•~½‡þþ ‹?~˜¬m!P˜¦N&“Ç06@àÈ]1 Ý pz£Ãz½Í­Ù*7fV¹>½Lu­A«íãù TÌjL¬ŸcFJ*î/AÅ"¯Qëô÷ž¤â ƒx]ÕA(¤ðAè‘AT"Ä»án?SW‹µ‚XÄ×u-õëÇ[wg«j`L÷û‰�nµéÀ(:¬hàû~Ú––°‚ À0ŒPB°¸¸·RšÛ5ÝëarMmÛNÛó<ªÕ*ÍÁýû÷§.P+++ܼy‹•ÕUZÍžçEVïwИ¹s/{ŠÚâ–˜�1Ýî^RJòùcc{8yò$årÛ2c¶– Óéày LÓL«O:vÁ˜ÝØÝØO9ٽЧ¸MQnY:–¥ÓSÉrè@oª/„Hümé¦Uîh%y‰ˆˆ‹Â>+OÁ´ñì"Ÿ´=N¢S£I‰.ulat±•E¬QüÉôîîtb½Ulîn—m+@×54ÍŽhν*"µÃcÞ‰†|·°4CæÈ›6½v®«€R|’-BL©c t”įíýLˆE×IëÆ÷Ø”píTdwÿ¼Éslä ‡†öò{ͯqsnš÷æ/q³6C6y¢W°H‰ys/ùž}ô c p"SÓçQª 0¥†nfȾ¹ÁÄá‡ÛKäVX›BÇÐ54>]¦ÙöÖÈDôT|ä{Ujf¶@ϱÇhîçÆé—P®O¡··4 )µ®y"î ë×bgê²lÞ½^;ïS‰ÛVn¡ªpH<O0³ìRoìiFÀÈjµÎÃdb|”B!Ç{ç.àùc£#ŒŽŽ21>ÆòrÛ¶°,Û¶°3““Ǹ~í„…|ŽlÎŠØ Â�×§Óñhµ]ÖjM–W›ÌÌ­qéÚ×§WY[o¡ÒÜ@¢Â¨(—Z—µ4‘Ä‹›[ Ð"]— p]¯K''¹‡5tÝèÒz!bÃ(RVTbª!|6‘ª0Í[Ò6–˜åxŸ»ín éAÓ[ó‡Û囀6~ײìÔÆ;öu­V£ÓéÉdbFbÄ¢Jl­Ã0¤¯¯/j’–¥dn'¶ÚÝš3É~šì©Éßš¦™¶JU*9pà�Õj•k×®3;7Gµµ1%@ßíµ^>úuÜü˜]‡eš†eYôT*?~œ©½SØ–•Î;M“é{Mt{>-×»]0f7vc7vãSNëº7µ­íZ=Äm{ªÕŽ%Û‡b6®H,a`é÷Q´NܦÊd³›èÊ3&ØúKŸ`B´õ{w>À¹KOú@I°Dø8`EîXh˜Ÿ°ËÃNCùaOη&Çi)²·ì.ºåŽ÷ÕíÁœS2£hp8›cÿä>Béèñc ¡E¬ qûv—Û%ÓbRñ$l¡ƒ¦£>Õ±ŸºåøN�U·‘ƇX·*"*}³¥Æ?ÿBäd%åSi · ,Ü[D,‚ÛkýÚîØq‹ÆÆº±3¨ø>Rj(ëÍÎ-‡µFHÇ]b½Öaÿ¾aŽšà³Ÿ}œ7nqáÂ%FÇF˜Ú»Ó2Èdm*•ý2 Û49th_ü$Ž9:9ŽÇZ­Ãµ[Ëœ¿<ÏÕKÔê:އçG²º¡-{M˜J)T¨ð}/e !"0Á&VŠ"e1H)Ð4ID€ŠÞý·’Ø@ æàÅ›¶NÌP€…aØD…Ó@ ÛYGk°@ …¶ÃâùQן;ç?ÊüN\ŒºÙ+Ý lj,·u]Ç4ÍmëZÄ\‰�·LØ@$Ò}I€˜z½N­Vöm²Ù,…B!}îdŽ'Ï—<†¦it:lÛÆuÝ”-Ól6Ó¶¦Dç&aËhšÆúú:BŠÅ"'NçÔ©‡Y^^azf–k×®±¶VݘºÖù®¡ßª­u·¼a{›]@Œddx„‡:ÁÐÐ0ùB-¾'¤¸®›2†ÇAAÿ§æ|· ÆìÆnìÆn|jJÔâQ@5¸K/ô½ên­²îC‚Ñ%¾*n |¤ê=ù\Ýþåv›x$”èO#!J6®µ ULëÕ?h°Ó˜Ý/�fÓߥÆ?âÓoˆØ®Ý[¥ÿa®ÉíÇ*ÒCHN¦“HÆ\.wÛ{f' 3¹Ç,ÓÄÂL{ÍSC|4€sƒµFª¶'T—ËÔŽ7Ã' ˆü* D{)ÎÒÂ5Ò1¼——¹}-h†D3ôèÄ=å…mgiý*¼ü=i£Àñ<.¼k7ºn_)d:¯¶ÎÃDP_Ó4B¢‚È ¨ãJæWBêMµšK£±dŽ™dxxˆr¹D½ÑD�ƒƒ½ ÷óÿ³÷æArw~ç'óuvõ tݸI€7©ÑŒDI3’G#ÍzN;4Þ]{ì°wíuÄþ·n„wccwcÃáˆÝñzÃ3keFÒHòŒ.¢x“àHgãj4ú¨êºÞ•¹¼—¯^Uwã  ë§€�vW½z•™/3ßüþ¾ßœëÆ, ^ÑnÇï[ª¶¸²PçÂå*..qþR•¥j‹F³M«íÅ€¤ˆ­™…P ƒE¤{ ­5R”[Ú)ƒ4t1\b6‹è~í0!b ,­"¤ÐH-;sÈX§‰t„Va"\ï ¤ƒ!=V„ ‹çæ<£'¦”"—Ë­ÐBÐn{DQ,*\(R­@€B¡åŒø­*Œ~V†‰C[gŽ3Ÿ×l6i6›©Æ €ëº+®†!¶m­�/ kÅüÜÌÅccc©u³ÙLEy �bÚȰ] E±•¹ïûÔëuJ¥Rú^à„a˜~·J¥’‚2†e3>>Fe°Â¶Û8{é ³—fi,4iÔ´Ûí´|jõ9[_€é¼ÎômÞ¶aÇ®ÝìØ±B¡˜Ü_§}Úí6Žãàû~ Ä‹ÅÛªëÕcúÑ~ôã¶m|%–eãû!–aÛrÍ$þúˆžà^óª7{c.®þ«®ï~1aâûéxóIr¢äã8ö mÈn[,nM÷Üð=è[ßGf£ª”¦ÑhvìJ)±m›v»…mûärî %ã·ŒE!z·º ¤âcï½[Þ_ív;Ýô¦¥FR†!í¶G>Ÿ»î6_ýu"£EÑ>ZwŒàîÇÑN+×ê¬[K j­P¡B …Ò’0R´|E­Pkx,.ŀ̞»¶°izZ€Rš T´ZíV@­ÞæÊb‹—™¹¸Àù‹5.^®Q]n†Q¬ –ô“e¹ ‹3Bk+\v‹—êž²=!D’ «”aÑÞU{ãuQI¤¢Tì8}¶•iÕY›„DH°¤&Ö?µA8ñ\ˆBu¯oÁ ÃÓ§OECCÃH)ÃÏóÈårT*êõ:³³³ø¾ÏÐÐPÚ§Ífƒ={öP©T>Ò=AÀüü<ƒƒƒœ={–ááa&&&REQÊÆÈçó]¥ožçqåÊΞ=ËþýûS‹íì1O:æšÆÅͰkŒÆËàà Žã¤}gÊ• ÐbYVº×é\?Þ§zžG»ÝŽ]6GFº>/[²ÔË®Š?Ë÷ð@DeŸ‰­ëؾm+^-`a~‘Ë—g©VkÔëu|ßÃ÷ƒT÷'[Ò¤µê3ëƒeIlÛ¡T*R,–X?gËÄ:Æ7NãóX®ƒJJæÐ ’²ªØ•*Ìr¹ÜGàú`L?úÑ~|bÁ˜Ním«Õ$ŸÏcÛÖš€L÷ÏW»^ŵø'vQJÜZ:q„´Z-„©žùcÛ6QQ¯7( ©d?QYÙUâ;³‹O9ãä>»)5 ¾ã8iòŸË¹7d§¹V²ŸnôzדÐ}Z“U¥4­Vœ8:‰³Ži?sZëy±`g>Ÿ»ý@f?Òu%ŠÂ乊õ®ú:;«Íq:efuÂâ„5êØä&zR+ÑFÑ A¨¹4P­+–ê¦G«ísß½»q? Y¬¶xÿƒ‹9v‘ã§.³TmÆ×2¦ÚkâZ½€™³J¢0B©hÕdÒ$à&Á–RÆ¢­€Š‘Š]©kˆ|‹Ø‰ÆÌ˱öH”ÌÁæY7s§ŒÛD$º;„HR4Jç‘ÂÝ2Áh#(3ñd"8«F©xþñ<‰‰I.^¼˜”ÜÄ‚ÂñõÑι¹9‚ HÊrVÎû«±0Ì~1f¬‰”Xkê<—’v;v[*•Jäóy\×%‚´ß,ËÂuÝ”ÙbØ2†ÉR, Ø1ÔjµÐZ§eM02š2YÉ\+ŸÏwéØh4‘±ÈÖztKÓ¨7B°yÓ4;¶oMmØëõ:*R,U«,..Òl6QJÑhÔY^®§.QëÆÇ�M±X¤R©011ëæHž” <¢ù øËU¬¡¢ÒN¡H””¢742�“ÙöÁ˜~ô£ýø”1FÓ"–——“zlk…uêÍHˆîävJ¿‹¸u"¾Z‹ÔÒqœz#f³^ÒWrŦéz“ëOsb£…@ܲq»|¨ÄÝöݔnÞ{2 ì4›-Z­V*:y»ž‹ì¸Íº)q=6žŸ’ùÍ|åø$ÖN7û½Ï•Óâ„¡‘ˆ(vì ûq»ÀÑ¥Iae\¨ú‘i'¥‰THF]åñx6¢¦‘j v Ôqr)µmÑö43—Ú4š!¡¾Àå%ÅÒ²ÏÅKKÌ-Ô©7<Úm? CB`I‘0K®½–HÛŠ?3 Ó×fK+M‚Ù5wj2k›&ŠB”]c! Jk¥»æ¹˜Ma¥âƱÛT®¡S~$„Œ× ¡’u=�¢µR‘²nzÕ¦m;ìܹ3iALN®§P(&ìʸFF†B01±>ÃxÒYÀUA>ŸgçÎX–ņ z¸ñ!«­ +Éu]†‡‡9xð ù|lлÿˆûDt4Faº ®27åDÐaÂMÏóLÙ:ív;å5 !s ß÷Ó+ uj2ŽKÆ‘IHA;jÓ¢E[·g 'rpжe§š6阆‡q—±±Ñ”=­Xó<B¡@¡PH¿ƒi3™jÁäRÒʹø¶3<‰ =dk™°Qžf‹¡É)PV¢?Ö[òÕcúÑ~ôãS’¨dOÌ‚fNªbQËNþöQ’×;?AÈ|êáߌ+g6³Û²‘®LUô{7Ù¾ÊcÛQÔ±û\y¯W¿ÇOw.®o™ò‰­%–åà$vÒ½ c¶üÅü?S±¶L¯ûÄí·½cøÓ_D£;'áR’ËÅ¥}«f©prâì‘¥¢«>sÖ¢Î(¥…ë&å)ýò¤«®ß:Ã*Y­„gµ’a$¼1˜¡‘DJpiÞg¡vÞ¼„ç‡iÙE§äIJ%J阣@ö|fÀ›Ñ§2?Ï ¹Æ%HÖZKbf\$º0 øjÅ A‘Za÷jɘÏV*Ö‚Ò S&v±–™Ï‰H\V‹ü(i£poÞ�ÇèøHlûú•[až“2z× ÛvºœþÌÞÐ�Afh†R@,­³64F¼×�$†­bÆMÖÉ0M ÛÄ”¯AG£Æ�ç�Åb1ÕØË [h4-4 N&9\FÄ(¶ˆ_£Ñ†!Åb¥TÊBÐl6p]—\ÎÅqìÔ `ýúõé=çr1³)ÛVæ¾Â0ì¸<å 1KK—PÅ Þr UË%ds™¨QEËh'‡e9HÛ¾m«vŒéG?úÑÛ0è ŒY„Wl¬úqËû ·/ÖÒêÉn8¥T鯦·/z“Ÿ«YWgÊŽmÿÙºI«IÎÖ²Ïö¡9î÷Õíï§µæÀ~¬Þ^¶m£t,ì¾FþßqYLÒÆVœ¸7˲Rׯ˜E’µ“m£qQ˜$ËÙr”ÎgÅk’"v(²$–î¸)™²‹úXZ'¢ùY'¤+&.«QØŽƒãØ]å†]sqr KvÒÊ0 ‘Z_Jd4ß5*ì�[1PDl}ê]Er_A"¥û‰W–e¯�i PšËY]ˆY§4¬Ã|šŸ¿’‚1ccc”J%\×¥Ýnãºn:N xa„› àÖ j4 jµ“““i¹‘)¯ ÃZ­†RŠr¹ÜUÊ 'LÒ–\ ®Ð›lÎoF$"×ØÉž@çwÅb1-nµZÔëõT×FJÉèèh ° šÍfº/3�S>Ÿ§^¯“ËåÒï›jÜf;—§84œ–oY¼+°æÎpF§ˆò}kë~ô£ýøÔm~WÛ ÷Ûß«%÷kõE–y‘­ÍîÇíí»«%‹kÚK÷Ÿ¯¥ŸÖ²Š_-‘Ëž°öûêöƒ1ý¸vèäqÒ(S&Wv-È–ò˜ÿ–Æh(SzÒa®h¤Ô=ºTNè>¤‘–DKk»$ÀJ¯Û‘q&=&mæw)`c�Ó¤„Òˆ~ëj 6†i¥T tdÊlº\õ:S:Iz\ö¤±„DÊìáF/È~Ó7�õzÏs>%Î`Ýz\fü@" Ðyž‡ïûéX3,£=“eH·$!µZ-[ëÖ­C)•2X²‡ƒƒƒ©eVk¦X,ÆâÁD´T Oy8ÚaKq3D‰Õºî¸VdV(«×bÆŸù,×uq'Û5¿ËŠ÷:$ehÌuZ­¹\.ê”B$%z¹Ñ ôà8RE(¯åÕû`L?úÑ~|ê6u=ŽIq)…)Sê'"·> Iÿ•n®§ÝM?Åúýt»G³©ÊRº¯ò?Ýå|rí~î·÷Gí«Õ´•ÖJüàcÇÎ4ëžíŒký÷šwtƒïû¨¿¿Ù×ù¨ß¿÷µÝÿŽK4ûåI×nÁ´èîIOë{×öt­I4ϲ ƒa%dÁ‘ÞùGdl´;{^+›¼ £«–^D¤ “Îýʤ䳓ÈcYeŠ€3,žLÂ.’›1¬¥5"Sš’ÝÕ·8-:Î7±58€Ñ“‘+˜Yæý7§¯:�ïGàý¤1F\9+†^,–ÒRk e´Z­Ô) ÌeçcSºÔh4’òÒ\ j0ͼ'Ëd2 „4š ”P´¬¶c“S9*… Ä웰㺔ËåhµZ)£%û}|ßOA£%S©TR]?óÌe-Ãs¹ÜŠïgX:f,!b£3“ÕÙ‰ßk¡…D Ƕ sy{æÅ>Ó~ô£·€é,¨‹ÞXÓ²¬t±ìÖ¶èýwv#ÝûšÕþþ([™µ>cµ×ܪûYíý«ÝGï¦E¬òßz•×Ç@˜qÒZ”uú*"ŠÂDè×íè!RJ§ëUµèv]²m Ûv>D’ÙGc>j_Åtö(¥À¯F+Ʋä ;ò›ŸÌˆxÍZ¯¿Úunô3nôuz9ïôAg^TJgÄ<ík‚gý`‹%[z´¢ìK¯œS²ÖÒɾ×�ÿY0¦Sf!RES6’eš¤Ÿ¦»™&ÆyѬuQk‹8–›h7™×e™£U“€w²ãÔ«C#(­R_ó{)bdsÍô¹—ÂÝ€×MŒÏƒ5w¢K'Å€$Œ¨V«©@·{Žã¤@Õââ"år9[7¥IÆÆ:{Xe˜4DIEŽ4‚Õ°ŠnƒlIr¥^ËKǶé×uSÀ% È‹iS6U«ÕRûñ,ˆiÛvZʤµ¦Ýn³¼¼L†©#RìˆÕÑÕñ<f³ÉÈÈHט5 h¶üÜ�B¶m£oÓêƒ1ýèG?úqëá˜tck&!Xa¿Û½Ñ¾‘¯õ÷Gd¸Æ5Åm¸qïµû¾Öç @¦ o™$¿[ 1kâ G_WáãÜt‚mÇF$°WëÇ€k±ëÄÚ:@WO´ú%h7+Iˆ¢ß÷R‘Êl_0Úu®SÝ~Üî~ÒX–ÄóºçÀ~¬½ö¦ô(ËÂëšO2ç½ÌÃ@ÉŠ«fKwâ¶Š¢t®’V‡]–&¶ÐåÔÍŒ•”1‘€Ü±Hzüû,ë¦ ¼Kª’D†¡hbãL$¥DZ û%¹WeKªÐ‰Ñõ* N?nlžU*êbIEQ„뺉£ ÅÈÈHªW¤”¢Z­¦nvƱÉ0N²nK1à†Ùm™ÔUIùT½%¤#)%ŠElËFEñgú¾OµZe`` ½¦[¾ï“ÏçÓk4›M•J¥ ¤4bÃÆÉ) î˜r:£Óh4ºîÕq†‡‡S@'[~Õ Ê˜ö»Lõ>Ó~ô£·aÁÌÒñA㺹Œh_?>ˆ,Ù ÆbwaaÛ¢ëOkM>Ÿ»ªF?nmˆÌÉl¼YŠ]²&­ž×¦T*¥Ž$ÙèýøðýÔisc›ªˆ¢�pº�iãra€˜ë)=ëÇ­é3ˆbK\ÕOŒWa´ŠKtÖÐÚ1m¶ZéQ\¶ÓfVÞí)=Ê–P¬öX¬â%6âçO£QÝ¥L);!jbaáÑŠ(Ò©`poé”Ht`4‘0fÌ3ß«ê"ÎzKõ²M;{¢¸œIkŠ¢´dêæ­æ{ÞÔ'†Û-ßìØÑ›ñ“C 0æy^W)ŽmÇîvžç¥®DRÊTo&«¹bÀš˜Ÿp#Š"lÇF¡h«—ýËŒº£rù2qÔÊå2õzJ¥B«Õ¢Õj¥6Ýžç¥ØæpÅhºŒ¥z2YM1ÇqºØ±Y(ó{¥ÍfÛ¶™››£P(¤¶àA¤¬³0àŽ Îår©#•q•êƒ1ýèG?úñ)HúÍßQâºN&ÁìÇLj¤'<~ÐÕgJEé ÒÕ/µñßÖÝgŸ7&’Ù]Úoz¡?HVöY.—£^o¤5ìÆ]ÂqÜ.Ðlµ$ û<öŠmf“ø÷ºkž‡ôû䚀Œùw|âªÒµÙ@K)p«/$û é3ÓW¾—mZÒúô»±ß@HãÄÒ£“S²‰ß%Å7 3¦KÜ·G[©·„¹W‹f5ÀRgž˲Rf@ „ZH«sín¦ i)“hb@¦;7ÓŸÒºó¶ôúvæ¾U×û¥XÝÒ¾÷¾EG‡ nt‘è’ ¹[P®$nñóØ»ìÖ ÈZm9²ëðÁ0\ ó#ëüØl6(—Ë)ÈÑjµh6›©VLçpªÝ5>Í5}ßÇvl‚0`9Z¦5˜Ìm@‡7çv• ð£T*¥ ‡Ñ]ZZÂqÚí6B<ÏK­³GFFb€Â¶W<sˆ‘RvY÷ΡÎää$Žã¤ìÃb36رëV €Æü>‚T‹¦Æô£ýèǧ1‹”eå?Ñ9öí8¥^­®ýãŒxÓîJðãÅ]\»_’ͨB#H(ÚW9Eën_½êvïz&>ƒOBÐÕWaR(”VMî¯&kþŽ¢(q‰E*,™¸XVzÚ—}�kŽí, ¼7½ÑöëJ~³¨Y&‹Ÿ€~YËÙë“¶mÓJ4úL¥ÕÖ+½Æ,½r¾1óŠ4ó‘^•+…k³ïÏ‚É1KI®`dfYٟɌͰù|+Êé¡IY:óÏ>“]eSR¤%H½6èÝ÷-SàIém\žzËÞ`J)[ K‰%åUõ¥>Ì3˜Ë¹jžùxçºJÞL›öŸS+e¹Ä Óå®Ô+rk܇ à’Í-—Ë)@bÀÏó°m;-¡3l¥ÂÔÃ:Ëá2%«È8ãXÚBºtG×%k§ŽÅäz…BB¡Þ[£ÑHÙ3…B!½7S.•½fv|š§�`ò}c†_”Z| !Èçó …Ôù  Õj¡”"ŸÏ§í–?FD¸Æô£ýèǧ ŒÉžx}œ`ÈÕïQ÷œ¤­½qÈ ×sÏ sÐ&1è?ì­û¿®Š­@kÚa‹¹ö)ZªÆ µŠ;Žc9Ha!’ éÚŸ½ð"2ÌŒ~¬öldÇ«fnä:aÑjµ9yú ‡ß>Êû'ÎpåÊ"m/>­«”ËLN޳ç®ÜwÏ^Öa;všàÜHÒWŸ%í¡Þ¾êU>JÖÒatÊ"ôU€¡o´¯²ÚY êÎJu:O÷¡˜U&jè*ÅËj¬¬ÖŽJé.@$s™l½ÕÀ™(R©]uäÉŽÍìZ–%‹lÆ€’•NO™^î}6»Ê¦zl´×<¥Ñ•ÉêãEjU&‘Ð …„DÛK y̓k/Å9Á$ôhÃDZ»žI^˜D¼Û¦”ê¶7�€acdÙ’7ëÙ3P1Û3"ütŽ(“Ë庘0ÝcD¤ì(£†±Ps¡P�H™Y€..ÅΆ!¥R  ËºÝn#-‰yxÂÃ}ÖÖx®“\A…)#Ç�ºY ø^›i£°~ýz€T®T*u ›÷F‹j²óm©È.—KYÍfo`_Y—(3ŒFŽù<@õË”úÑ~ôãS˜”\ lIØD[Ƥò:Wý»ñ- }žüù“ `rr’Ý»w%‹çt;‚.»Ì™™´ÒlÙº¹c‡¹J¢jNãÚæØEŸ·/¸–àÞi‡íãŽõq—mÅuÙ×›(fièAäs¦~˜ÃÍ¿¡Í2y™§¤Çs¶±ÞÝÁHn#®G +ùcêö ÷X “Íq"»Øqâ×ÎÌÆb…ý†Oèu² í0—bŸ‡�� �IDAT!ÜOÎ)yv¹2Z›É”}½ïÇ'…o¿{Œï|ÿg¼qøó ‹ÔjuÚm/Ý€9ŽC¡ghp€õë×ñÄçáë_ý"ÓSq]Û¶®û¹[Zªrø­Ãh4÷Ýw/¹\>=áìí§ÕʨzÛà“˜à¯VN±Ú)~6ñ»Ú÷è}O¨#Bá«€vä3ïUYˆ–B0,ËŒºƒä9é` ‰E6 NàÐk4›Ñ³yó·h·[ì¾k7£££«–“ôŽÃ'NÒn{  ñäSOó¹Ï=ÆŽÛoÊü|;çAc¡ÜÌÊ`NVë«Í·]óqV@W“2QV›ŸWcaUݼô²SÒ닎w,økì¨W&ÂæÛ)•h’ãœ$Stó½S–”)­k\¯…f“Ýl»˜?Ûl‘€(uqè”#A¢µâÊ•+)3¤R©t÷õú2í¶G©TJY¦¤2‚ذm‹åå:J)p])-r¹Ü5žéÕØTWÛƒy©ö‰Ö‚F£‘²3b· Á.aÝø»tRyÃi6›´ÛíTŸÅ�!av­9Ø0Îw@1û¾f«VvÄR»Ê@±Ìˆ3‚4®ív_ÓfYfq§ÜïÒ¤B¤%JYáB¡:eÁœ|>ŸÞ·dŒð³’‚ eº˜§,d’ ä$.bæ~|ß§^¯§÷kÄ…û`L?úÑ~|–6}Ym­hûm”V8–CÎvÓS©[±¹×ZÑjµø7ÿæßòõßú[¼öÚ!ç‘GN¶óç/ð£þgî¹÷ž~ú¾üå'8îa²aãdº8fkxÍi BixsÆçO_\Nÿ$ÏŸôùÙ·1‡%>i}qíݡҚF¸Ì‰úafÕ Š˜îksž™èM¤').³ÎÞÍ´}/ùÝó%,aÇ´n™èä'”‚l*$®raÅÏ80`Øõ�5«_" Ë^ÄÑ‹>ãeɦ÷�”ÝHÚ$Ö|¦ÌŸK³—ùWòïø÷ßù1íV #*I\L·QHÓk°Pmrræ¯z‡ïüÕOøoþáßåoýúª\—ø¬Öš?ýÓ?e¹VGHÉ Ï¿ÄÔÔFÊ|ý·~3MVÌ&3+Jh~gNG¥é†ò“ 8 ±¶€ò‡eªøQ@=hòÒò1~´ü*¯¨,ëVÇ¡FCExÐÚÎ×ËòpånÝ2‰›î¢…¸*CÍ”»=ùäSüäÇ?crÃGÞ}—o~󛌌 w=K¦Ÿ”R|ï{ß§X,ñàP*ùå/Ÿgii‰ÑÑÑ.±É;K§Çtµ„ŽH:à‹F©nÐd-&ÔÊr ±&Ø­£3–Ùº‹Ñ°jFb±]’9C*M:¥”1@£×ØÒŒOݵÇHŸ_ÿ,R ‘è’ô~¶s²Ú8æw†‰Ðëø”e­ðÜh' :ÖÝ–eÑl6!ã¸D‘¢V]Fi•±çy>AáºN¼F*-ÕÑÂP‘Ëå“ç^áy>BHÂ0Z÷ö©é“¸ß¯ï[zžŸ24 àÕjÓn·cÆU²F›h³^Ôj5†††�R°ÈÌm®ë¦€‰y¿h²?7z/År‘+­y@³®´Žv½EMTIKÙr¹\—ź´ …Bzxg�$ß÷¬ÎÀÀ�¹\.m»R©D­VK¿³yfÇáÊ•+ض2w‚  X,Òjµ’öòR‘Þ\.G³Ùì²òÎ=YPÒ÷ýÔ&Û¸2EQÄââ"Åb1µÿîƒ1ýèG?úñYe€f½Áÿ±ð#ò¶Ã”ã+Ã+UP^„ª˜ ®-(å¬kÒ|¯•áÀ‰‰ ªÕ*J)þÓú333€æàûyíµ×¹2?ÏÌÙsüà?äÀ}h6[üô§?ãÅ_"—ËñÇüÇüÙŸý­V‹Gy˜'žx‚|!OÁ¡™6RhlK°®"™«G¼tÊgï÷ŽL�4šFPc68‡¯U¼éšHÄ”f‰& ÔýW8¼AÁ+3²¼™q{+£î&Jî Y!g±¥qê¨Ul!ºV4›-žzê)^zéeJ¥çïü!““Ôj5\×eqq‰ï}ïû|ó›¿ÅÐÐ¥R‰0 ñ</­£6Ž ¥R ˶ "ͳÇÛüüX›v p,É=C¾¶7ÏpÙFŠOvO\ ©7šzóÿòÿþs^xímZÍØ=¦“r‰•bª«,…æýSøÿ×?áƒSçùÖïMÓ“¸É‰âÕØnÅb‘(RìݳÛqùÙOF¾§T.óÔSO¡µæ‹_üår™§žzšv»Íÿñßç_ü‹ÿ™;vÐjµp‡b±È?úGÿb±ð)˜å®ýlQÈo‰Wïó—õy'œ¡©=B"­2¹˜`‰OGGx¥v’})þ‹Gy¸¼›Qw0~¶®c†‰“I¥RaßÞ½Lošæ/þâ;,×–i{mvïÞͦMÓ<÷Üóø¾Ç—¾ôe^zñUÆÇǨՖYZZâô©S4š-žyæœ<y’ÇŒãÇóÕ¯þãããýî©"¨ˆ4¹^ýyO·Ì0R tQ ÂgËyzÁã^vMG8ê4í:“瀌Œ×5e,†ManKÈtîú©hÒ±DêrŒê”H%OªŽË„²ÏQ¯ÆLДeø$w®?b'¥ú*ÉgyžG«ÙNÛWÕú2|ða²cç3í§@ ò…\ê*e�jµÊùóç)—ËLLL¤Ì‘lß­'Ož¢ÙhR.°qj2µ`¾Z´Z-fff¨UëlÛ¾•¡¡Á%T¦¯bp.p¸R©¤‚»ÙqeJŽL)Žk 1à…Ò1+Û>M¿EÁ)P´Räs(¥X^^î_ kÅŒSã’dÊ}ŒP®a±°È܇)«Ê(Zk …Íf“áááÌ1Œ•………DtÜO]¡L™T¡PÈ”qÅ€N 1Œc}m@(£¯cl°û̘~ô£ýø,nü’Ó-¯Ýâ¿Ò£ƒxƒå*ŠPž?ºÀÑ‹!Z\ÛbÇ:›/ì"'W–5ÜÈ)l¼Y‹8uê­V“Ë—ç8qâôGßâ;ßùKÎ?Çä¾÷ñÌÓÏðå/‰S§O³´´È•+—£ÝjsêTL×ߺe+ù|0 'Tšù”r’Í#6a¤¹¤#.Õ¢´ ëNë+­ÕöóÁeBÑÑ">›B¡±„x´Uƒ%1Ë©ðÜv‘A1Á˜³1w3#ÎE{„‚]Á‘6R;HVgµ4›MΞ=Çöí;§ÝnóúëoðÞ{ï144ÄÄú –—xñ…—€Ç{Œ™™sÌÎÎ26:ʺõëx饗سçnxà –Í|CñÔ{ GZ8Ÿ÷Ø»Á¦R´–¸#ú¤ÃÌ0 £Æ÷^~ímþ—ùoyí­£´</mrÕqgNn¥ØŽ…--‚0Äf—ø“?û>ÕjÿþŸþ=6L¬Ã¶×=UJqðàAΜ>Ë/ùÅb½{÷àº'Oœ¤T`bb=ï½÷>÷ÝwwÝuO?ý gΜ# î;ÀÑcÇØ²y/¿ò*a�…Oþ<v?_íuar¾y™ÿ°ô,?h½Ê%½tUà&Òš…§CžSÇxgá,¿ï=Æ ý“…1l)AXWÿ¤”lß¾ÅÅo¿ó'Nždi±ÊæÍ›¹ë®»ø×ÿúO8pð�wݵ›vÛãÝwßåÀ{ƶcªýž½{‘RòÐCròä ~ñ‹_p÷Ýw300Ð_àîà@âzÇ–ïaDn•Rµ:c¬·®7Š…â3¥6)+Ftdã»Ø‘Bu9f%5R±ÆŠL ¡…îJò;ÀÌÊŸÉàQ*®Z2ß3^÷äUBYÖ\\ú$Ó’-ÍG­SÒi˜IÂcð©sÝË—/óÆo¤‰û¾}ûº&ýØÊíšË•ŠYÇfxx˜ÁÁÁëU�N<B²´Te|Ýèuƒ1Ï?ÿ<c£ãä 9+k¾6v j' E±Xì²x΂{4ÉŽÏ^q]¥ZjªA[µr‡p„ƒ5–“# c€Å€¦Ôȸ/™’¨ì5Mi’‚*•JÚ?fÌÀ&ë’”eó°Ä€)õz=à-—Ëéï#Rv/`§F¨7 Ð'%sFƒb±˜²Oo‹±Æô£ýèÇ'*‰QíÎÜËäÛK 4 ¢-„î>”•'j/SL¦\Nâ DÒNÙ-ñlÔ÷;õ³k/."uNð}Ÿ0Œ(òŒŽŽðì³ÏÛ¶måý÷séÒEÊ%½~ˆééiããã,--16>ÆÔÔ47nàÜùsaÀ½÷ÞÃ�\[s`ÊåÉc!Wêu/vzt›û±S÷®DÜ ×á ”üñ#Ÿ‹Ís´”ßIèRÁE£÷‘©÷OéÔšH´ñÅY‚óœô_¤$‡)Ë1œuŒØÓLåîf0¿KÚ+6·Åb‘{îÙωNðÞ±÷¨TÊ|÷»ßçK_ú33g¹<;‡ïlظgžþ%ÍF›3gÎP.ðÁ'yø¡ùàƒ“|ík_M7/«^ +I¦†lžæb-âÂ’b߆;Ȥ£Odžß÷yûÝãü_ÿï_òê[Ç Bö×è$å“ëF8xÏN¶mž$ŸsYªÕ9úÞiÞz÷$ͶÇúþÓ”J%þÙ?úCÆÇ†×LB´†S§Nqùòe*ƒe\×¥28ÀÌÌ cccÌÍÍáûwݵ›3gÎpêÔ)ÐǶp›|>G.ç’Ëå°mëŽ(sù(ÚUšX\ùdãÿÏÂOù©˜†¾ºx|%üyó9æÂeþÉÈט*®Kôš®~.\àôéS)kli±ÊÌÌ ó óìÚ½‹M›6qüøqšÍ&=ôív‹“'O2::–êÙ–E¥2À¶mÛyúé§ùÒ—ž ŸÏ÷Šî` &ûw¯ˆn/ÜÑ‹Y}ŽJÅq{Ø#½åk•$ué²%ÀqªïÒe-/ÒJåôûH Êè£X)pÝõÙR¤¶ÊÙûPºCÌ–ÂÊÞ¶@§{^}œl©HEXB÷”Â~ÈçD\}ʺ Å{¢Õ¬¤»;Ͷm&&&�ضmCCC×ýaHu©Êäääu¿Çq&&&™½t™½{÷¬)LoÊl\×M™ –eQ«ÕBP,SpÃ0U gÊLImÛ ’óíFJ#u ;)ò´rVâ²ä TGôx`` ub ÃÅÅEr¹\:×™1¾°°ZVg˘Ly‘)¡3 ’˜Ï1ìî‘R¦®L3„jµ]`Nö½æZ¦=Œ¦Ž±Ô^\\d||<j²ŽM}0¦ýèG?>3@ŒFE!þå÷X|;¨Æ!ñÚ JãxλÆîvÈçm\ׯóíVT޹¹YÚ­6–má:9lÇaxx˜\ROÛ»ÁËþ·ë:üóþψ"E©TdÛ¶mìÝ»—¹¹9î¿ÿ~¦¦6²qãF„ìß¿¥¥*““lØ0I¡Pdqq|>ÏÈÈ=ô ¾ï3::ÊÀÀ�B€-l¶©µ>¸1T’ìt88»nâOT¡hGmεÎàGñF0ë%¤Hÿ[¦Œ"ÑÿšPDuÕ`NœÃ-Šb„KÍã|~üÎÊ< ®\™Ã¶mæææ¸ti×uY^^&Brn­I„üš¸9DZ)óäÜB †††˜ššJ7¥-J9A >Ì.GØR0=lqçuO‡¢¼\oðgÿñ¯yþÕ#x¦£ÖØþ4Že±móøÛ_äþ{wQ,æñÈ‚›ãÒìž|î?üéK\Y¨óçß}Š­›§øÖï ×uVݼٶÍC=È™3g�˜ššÆq¶mÛÊàà[¶lA)ŦMÓlÛ¶íÛ·°eËfþë¿ÿ_255źõë( Ln˜$—ËÝsÛõ¿6RUo™»ô$?öߢ¡Û¨ì‘÷ KëL–É5ššnò7þ–\þ©õuƬákÚ_ïÝ»7MÒ¦¦¦øáþšb©ÈŽÛ˜žžf` tŸ»îº‹ Ù¸q…BǶãòQK&'®Š 60=½©Ä|êÀ™Xü¶7Yî¨NcG=EÄê‰ÿZ Ìj¯Mõ9’²!™:üˆ7D²e²`‹iY©+¢`%³VZw[o½3S\;õ�W©¨¯XSGG°â«Ä$ÎZQ°rˆ2Ì ¸=”Š]ójµ*®ëòØc£TD>Ÿ§^_¦P(d’º6Ï󘛋×ÙÏþó8ŽC­VÃ÷}†††ÖdºAÀââ"ûöîÅób]’(ŒRðdµPJÑl6i4ìØ±]»vR¬¤ Ájmèº.Žc¥, -S2nC†1’èÍ:9®ƒ¯|ÚQ$ŒæFÄ’V:~¢(ı"¥ŽDQ¥€‡‘‰¢ˆf³™¶ƒ"°Ì¸t]7-™6l•¬K’SÌ7ßAkM«Õ², …Bú~ÎA€ïû]#Æ)* ™Ï6ÎU­V‹áááÔÒúZåg}0¦ýèG?>P �~³Š=û*vÐLEø„V¸­ó4gße1¿;Ý$¥¢y@­VCV*\˜9ÏâüŽãËçÈåó”K%ÜD(m- ÆPL?÷¹ÏuÕþŽŒŒ°}û¶ôuÃÃÃé"g^·aÆ.÷ܳŦP X_±øíûÊxa¼ùË;±æÍ˜§h4Ëí¼‘¾”ùë¡@&Ùüv•2‘”2‰¬Ñhše9ÏYõžïáÚù® ˜ÖšR©ÄþýûyûíwøÜççáGæá‡áµC¯qà¾ûؼySSSD*â×¾ðk<ðÀýÌÌÌpúÔi¶mß–ž¤eéè#%É» üÍ;-Î.XÜì0=bcÉ;£ƒºÇ·" #Þ|ý}¾÷ŸŸ§Þô̶µvüBh†øÇïìÚ¹…gž“ç^~/ (å]~çë¿Ê·~÷«„üå_¿ÀÂRƒÿï/~ί>~€­›7®zŠi’ú 6t=#6L$?×é†zóæMékÖ¯_Öš‰‰ ´Ölܸñ†,¼ïD@ºúüõÒ«<í½CC·b F% ŒXÖ=™˜éÖždNmíó“ö›l_šàï侘,]ÅžWJ†††xôÑGÒ>¸ÿ ±s׎T'add¸+[‘,7MŠÅ"¿û»¿ÃèèH‰»ã˜ÞyÆ�2jUæŒèq6ê€ÝöÖiÉNF#&+ŒÛ)Q2 ÃêàŒ†.vJ·ƒSJ}éšù:×_ßw¬#K¨tÖ«:6ÆÊ:9x0®QÙªÕª»]¨4èØ~Û±-,ðɶ¹¾¾y?¾G+mÆ«Õ%Þ:|˜ÊÀ�###´Z­4iß·o_ʰX Go¾ù–e388˜2LjµŸûÜçÖ¼ß÷9zô(…B‰ÀáÜù¦§§˜œœ\sî«Õj9r„f³Éúõë™››cllŒíÛ·¯Òv+ËÚ »Äܧa’„aˆïûär¹èÐÉþ1ÐËz™‚U §ó8ÒNy!Œ¹œ›–|e² cL{™9rqq‘B¡€R*uSеÓâ×pÈ|¬Å´y†²Nž–eQ­VSÛj#:lÀ-SžÐn·S ¨Ñh`Ûv*lÜ™Œ8o­V£R©¤ï7BÆý2¥~ô£ýø¬@0]µ»êÊqrËgÁJì “ˆ$¹|ˆ`tåÑõé©€m»„A„W¯Ó¼0ËÈŸ~›ÂÂVÁÁ.ºØÅÁ¯|‘ð‰¯à$µÇk¹z˜E´÷g&V¯­XRPÊA)wç÷]¤gk'YÔuo„-a6E¦ßÈ0bDÒ¤àT\3¯cPF ñfÔÒ‚‚?€µnuÛ¶Ùºu ›7oB+íØ0“Ö!¥Ä¶l6lœì¢Â ±ÿ¾t̆ÙóÚ–äÑíyönÌñÞlÈXY²iĵÄ¡æÓ=žã¤e¹Þàÿþó²\o£"àêš!–móÀ={8pïnžüåÌœŸå¿ýû_gtx'/ð³_¾E>ŸãK¿z—çÄ鋜™¹Ì~úÿà[ßH7¥½÷cœÆVV>úóöi˜Ið–3ÍKü¨uˆU'ò#Xôár}b=ÛBÍ{?™m‰pa$‡ØX„-e¨¸ˆœ„œ…°J*æYæ'Þ›<ÞØÃæòŽX{ûÛ;>üðÃh­º\¬®ÕO1`Zä+_ùòu»™õãN�bô  5f_dÜÍø¬`qõ)1/Q‰ÛQ<ƺ_c˜‹¦ÙØûö&ç"“ÀöŽÏli“^1WvĈã”�!%vRÎbl®;R»YQcÑÕBÄ]Ù¤<ûݳ–ÞñÚ<Žm32<@±àÄ÷"ô ëÝYR"„B©(qà]‡J=ø�Jé„MâûRŠ.{ꬨ°&~íÃ?’jŸ˜~Î:þ¬ù|žÝ»w£3¥r¹„ŒQ*¯:ï ³gÏž®ë¸®»B{(kM](P¤cKÝh4ºl­MéMµZ%|†‡Gð0 Y¶–±FQ^Dq  û#®kÓh¶(r¨(ÄVÚ†FøÖ”ú˜ò§F£Aµël-)%ËËËÌÍÍ1<<L½^Oö¯vZ:d�£ûbJ¬Â0¤X,2;;›Ú`ЩX,¦`K-•J±%wò½ëõ: ضÍðð0ËËËØ¶M½^gxx8eÐÔëõ®ñp»2}0¦ýèG?>!†²z«=(– £o€†’w™ŠåQ$W(Å ´ˆ‚�–„ÿû¿bìì삃(»X¾ž÷—ÿ‘z¤üÛ;=é'7#‰TœX>‰FD:Ùˆ&@ŒL¨1RËhщ–Œ"T"eÌÈä4OJ‘0iDbñm3!îÆ1–æ]§«"d®‚¹–{CßG pmÁXY0Vvïà~‰ÙJ)Ž;Å«‡ÞCëXüòªß_ ò¹>t7s 5æ—ùͯ<ÊÞÝ[p›ÉõcDZðÚ›ðÛ_}ŒÛ¦8{þ õF›^~—¯ÿú¯0P*õ]?B¿…QÄËíã/F!âlð:Œ:UCç+­Ñ²[¤9M“m‰ØZF>´ùÐ8bº #9"¡8^æ…æ1& #8òú·¿±ŒuCß%kéÛ;;ò9›Í†É»²Ç}Tx^':*Ý:$b%–#èbº¤Å<I©PZ×´ð‰_c@‘ý¥YÏ3/”B ¤ìúܘÉ¿¾SÆ‘Â8E'kIÖ5ʬOtUf?«Bö"Ö®ë]kš”‚Éñ¼g#•r Çv™¹úZ{¸Ø–EÁµñüEt ØV„Dc[6Åü€©ëb YRÅà`IMèGDi2®)Ý´³ŸMT¸:r§µ¦RÎg4~Žm#´ßî}S§Õ…Ö “Ï3:s ß[^s¾l‹ˆï !ðÛ KJ|¯ž¸L©¸ Ì8– ÕÚõ°Ž…d _AÉ6A«Q%RQâær„AˆeIÚM)~Âøjx,QŠ(ˆ­Ò_áµ=”VŒЬ/¢´FE Û±±dÄ@)G³¾„‚z»N.ŸKul¼v œ ­f ÇŽY*�ósUJy|¯3jTÜ®õZ!À÷Ú1S'ŒRú™0MývÛ¶È»)5Õ¥9¢(b©Ùbxd¿]Dz$µviIZÍ6¶eÝÖ9¦¿Rô£ýèÇ'$”RȰ‰ÔÚØSf6^EF¼4N É{ö2öéÓÉ{tʨ¨ÖP‡~ãkžÒ*ëÌÌ A088ÈØØXW-õê�RÈÒÒ–– —Ë1;;K±XìsËF³Ù$ #J¥âu;T\o¶Ûm–——©T*7]4³Ë¥B †¬1¦õv‚yZ²A$ƒ„Ú­q°™´¦³Ç©†‹,‡ 4å2¡í¡E””) ¤RÝ¡Y+!°´ÃTñ®T�±7ØOÄ”éç^z‡¶!„uÍR+Ë’ŒUصmŠÀ ±¥ÍÈÈ`úÌXÒbtdÄóC†˱fqæüÞ?yŽm[6b±²Ï(•J©­ø‡‰(ŠX\\LO¯çõóóóX–•Zu^mL·Z-Â0L)Û·}þÓšE¿Æ±ö9jº…– ›Z ÄÎ b8‡¨8ˆ‚…v“ïið"t#DT}˜÷ѳ-¢¿:‹zúrÿ0ò “ˆ‡Æ©ÚMŽ´ÏðDp/%»pÕv«V«T«ULÛ[kçyø¾Ÿê  …›Þ^õz€R©tMËö¢±ý¸©Q)çùÍ/ÜM¤U4É@½¥#«Y»^³š÷vW Êdì¢Sà¥×yiåYqÍšžNIÒZÒ,+†PÏëÌg\ÍûpE{$ëœN€"!d×u×a¸Rdd°H>)£¹Ñ±lÀÏBdâ‡Ut–ŽA@£­ë¨w ! \ÃÝÑ@3jÕö^ ÂeвPk^±·“yq÷èDG+PIÙ‘î°³Â.} •�yÉü¯",%!à-¡„ˆ…™G8¥5~;]ù~ T)ìJÀDmXNRÆ.LJ#U„-%‘×Ë"ŠT²·Œû\iZ£uHäɘ– þ(2Z42us¥ òQd­xŽ”ÖAÜŒ‘ŽAMÛ²"P‘Dj J㉠= ކ`­a\.ù.a|ÉÛÊôÁ˜~ô£ýø$$)Õ8^æ#¡™“°(%ã F¢xù:D+P Â(>¯ÕZ#›XÖ’Ý ¼Öˆ €v;¥Úv»Îtí0 ùùÏŸäî»ïæÂ…‹lÛ¶µK£¢wã/„Àó<Þ~ûöíÛÇ‹/¾È¦M›Ù³çn~ùËçxøá+Îñ·�� �IDAT‡¨T*©›SJ“ÖšóçÏÓn·Ù¾}¹œ»b#·{'›pdiáÙ_Fœ<yŠZµÆþ{öÝ2ÒŠùæ"ãî#•1ZQƒy޹öe.‡s´¬&»ÀÁϱgh/KíEæý9.·/p¡}†³úBËë8.éΦU PƒLné6î`ŒOi»µz²}•nܯcÜu‹6vkdÛ×XdvÑìW°¼ÊÞ¾½Ú{oä92÷†ï;‹Ò „”:³Ç] ˆsm¾ñ²yz‚+óU¤”,-5Ù°~ ­A±°Ø ËQÌç©5Ú±+‰ÐÌ/,sîüJ…H¹RÈ÷ðá·Ù·oo ЬFζõjý†!¯½öŸÿüçS*uL×鉹N’ËŠéâ/¿üJìf60ÐUŸ}Žçææ¨×›¾O½^çž{÷¯x^W+}¸éÏŠËa• ÑQ’~ˆÈ?Ú—#­ËË(Ù)3�OA=€f[¨³Ëè÷ªè÷jD¿¼„ºâá#°#NG—™ «l`lÕ±¦”byy™^x‘r™ Ù·occcibsåÊ<óóó”Ë%p§kNŒ­tu—ƆÍìïäš.kßååø$< &g¯eÆÇââ"ÕjìÖ’½ót¨ùðQ,¸ìÞ6‰›·‘B&ý¤?–{éáÅÜ @­?qm+�˲±¤Ä’)?¼[œÑ!±,‹\©¥;¬#}]Ú3;ÓZßa#õz»ëû®üšòºFS÷8´>Ä=¹«BXúj¥Ä=Ã…–û g¬Õ¾åÂõÁ}0¦ýèG?>k@Œ0I q-þ"ïR—°=Òüf#`J‚ Ô:åóÂÉ6n/pÏx²*éåJbÚkFçwÍ=®I×T«Ëìß¿#GÞåÈ‘w¹xñ"{öìá¿x–Ý»wó /ÏxàûÙ²esš?~ßxï½÷¤ÕjqáÂ%Ξ¡Z­ây“lÙ²™çž{ŽjµÆæÍ›‚ãÇ?Àu]6nÜ€ã8xžÇÒÒ÷Þ{/‡¦T*qáÂî¾ûnîºk7ZkÞ~ûNœ8Á–-[áõ×_GɦMÓ>ü6…B={ï¾%ýd,­_ž=Ä‹ /“³rŒ;#L9“Ü_ÚJÞÉÓh× TÀî‘Ý  Q©T˜fÏßË™Ú)j³Ë̪óh4–€(ó„dLn¦T(¯¹ñ6 ãÜÜlÛâWõWyùå—øÆ7¾±*¸Ò ¨˜×Ä6“ï¾{„ññq&&&:`ãèÑ£ìÚµ ÇqX\\ä•W^¥Z­òµ¯}r¹Ô%´·ÚI}–QÔl6™™™a||œ‘‘‘4i] „û° €ÒšV;Àµ]ÐÉÆ\©îSæäÿ]×âÑvó¯>ÊÐ`‰b1ÇÆÉQ~úÌD‘bb|„·æÍ#§øõ_;Àr½ÅÙóó@œ 5Ú‹ÕÆŠv3ßea~ÏóÓúùç_ Ýjsàà}9r”'žø5.^œåÂ… 4 šÍ&ù|Ç{”çž{Ï3Ö×gùÁ~ˆÖš/|á œ>}š“'O±aæ¦6òì³Ïrß}÷qðà~›C¯½Î–-›9rä(µZ•-[¶Ëå8yòÛ¶mcÏž=¼÷ÞqÞ|ó-vlßÎñãpüƒãlذM›¦yûíw¨×ë|éKO0::zË�­5‘V,„ËÌGËaŸ³÷Â|}b^i¡}t;Œëêò1œGN[ʰi ë1tÕƒ³ Ôá˜.ƒ%P(®D5ªacUÒ°:ĺñõlݶ…×_ƒ‹.òì³ÏR,–Ÿ­[·R«ÕX\\dtt”ŸÿüIÊå2Åb‘}ûöñÆoÐh4X·n?üRJž}ö—T«µTç —s™˜˜Àq¦¦6òÓŸüŒ}û÷ñÖ[o111‚ÁÁA–—ë:ô:ÃÃÃ8pëÖ3;;Ë/~ñ Êå”R¼ÿþû|ùË_æ7Þdbb=SSS¼ùæ[¬_¿Žƒ244„eõÁ˜ [Ì»îéú÷‰oߤœêf€†�ÔÁÒö¨ôã“õì÷Á˜~ô£ýøl‚3À“Žä[â Xš–d\C)–~ñ>lÏñæ9+¢j}ujíµ>UkM­Zåg?û9í¶ÇÖ­[¹reÏó™™9Çôô4¹\Ž &˜ezz Û¶çÅ_bïÞ==zŒÃ‡³sçNÚíËËË EöïßÏw¿û=|ßgݺuŒ¡5<ÿüó|ó›ßdaažC‡Þ`óæÍœ;wŽjµšˆžÚÌÎÎR(I… /]º„”cc£¼øâËÜÿA,ËâùçŸgzzšJ¥B±XìQ®FÝ@Ö@Ëksxá(ÚsDDœç8b½OÉ.0n²³´#û, %›C+.'Ë;äÚy­Q‘CDSEŒ˜I!ÐR²±¸G®]Ò!A°{÷.._žãôéÓœ=;ƒçùœ9s†K—.±wï^Μ9Ã=÷ìO±7¦‚~µZÇßN\®07w…#GÞå‘G&BŽ=ÊØØ(J)¾ýíoó­o}‹]»v17w…0 ¹ti–V«E¹\B)E«ÕâwÞAkͽ÷ÞËûï¿ÏÄÄDj׆q™ÍŽÛ¹režR©Äââ§OŸæÀGŽajjŠ 9sæ <ð�££#ªÏ¤€ÿá¿ûžüåÛüìÙÜ:{ ß 6Iê†`óæqþîï|‘ £¸®M.çò…_9€›Ëó“_¼Iu¹ÁÄØ0_{â¶lšàOÿâi.Î-£…°4‘Öø¡JX«�C 3"¶ït_Ç믿ÁéÓg8}úLêÐ1;;K©TbÏž=üä'?ezz€¼?)”<òÈÜ8q’W^y…K—fÍ3Ï<Ã7¿ù r¹<[¶l`ãÆlÙ²…Je‹_ãñÇãÔ©34uÆÆÆØ²e RJ*•¶lÙB©TbzzŠ{îÝÏ3Ï<ƒïû|ðÁ(¥8|øm¾ð…_».vÓGdša›–jÇ,1[æòúúߟ@U[hˆT‡˜ ãçEÛ³[ˈÇÖ#î…£ÈýÃG¢­ø-õ¨M3ò®ú=fgg¹û®=‹Ê¥mÏãܹóüÞïýÇŽcff†r¹œŠdž?ßÿýßãÔ©S¼ð œ?žR©Ä‘#Gxà�A«ÕfÛ¶­üÍßü˜ßû½ßåèÑ£œ={–ÑÑQÖ­[ÇéÓgX?±Žf³Åøø8—.]¢ÙlòÔSOóÛ¿ýM,ËÂuc튥¥%.]ºÄ¯üÊ®Ôå$Ÿ/Ðh4Ø¿?þñOñ¼6/^dóæM VRkâ›ÕWŸ©„,„­ÛÀû¬‚]7ûz×*ëG?®o0õÁ˜~ô£ýøÌ‚1Ù:aDü¾w¨ÁËA ·Xáàß½ÜâÿüE•­Çšüa¤É;Ý×¹ÑOvs9vヒ÷ߟuëÖ1?…V«…çÅjùår™R©L»ÝŽs!)qÝív›|>G¡çÝwòøãqôè1 vNjUâf+Ýñ6)m†‡‡ÐZáû•Ê�ÇŽãþàh·=Þyçm^yåe¾ò•/“Ï8xð GKƭƶmJÅ"…|>µ]ÌZš×}Ø  N’ÆËõy.ùóø¡F!^T§Ô¹Äg›3 ÛLO®°D-Rf‹¿ Ù,ZWð E€ )nXdã`œ(K!WÝ´švs‡V«I©4Ö±MãµÚ2o½u˜ãÇßgýúu¼÷Þ{ìܹ+Ý ú¾Ïw¿û]}äq–—ë,.V)òLMMñWõC<€m;:ô?ü Åb1µäâÕW_c×®]¸n<àÂ0äùçŸÇ²lÏ=÷<¹\ŽgŸ}Ž{îÙÏÙ³3ìܹ“‰‰ ~ô£¿fÇŽíœ9s–Ë—/sàÀþÃø6>ú§N¦X,óÁ°ÿ>¾ýíoóOþÉ?þp`Œ”lÛ2ɦ©uüþoŽ—^?Á÷ü2゙Z½EF8ŽE±àò·¿þ+<p`'…œ“gÆFù­_„ßúÊ£DJ>W–êüàg‡øÉ³oÓð#”cƒ6®ÊÖš`¨«šÍ&³³³¼ñƬ[7Žë¸X‰E³ÙâÒ”r"Û'çó@“Ïç¦R©påÊ<SSSìÞ½+©±L; …¥r×ÍaÛ6ù|ËŠK¤(•J1¥?—£X(à8e°,›R©ÄÁƒ™ššJ­™c&U˜‚'¦äê£hádÁ£{rP –}tKÁX¶– ˆ¼·u#D_j¢>¨!æZ¨W¯ Ÿ›El-cýÎVäcë¡`§:j ö•y¦¤”ìØ±ƒ#ï¾Ë¾}{™_X`ãÆ‹)—ËÔjUÂ0LY`®ë2::ÊÅ‹—h·=îºënvîÜI…8ŽRq¿U*±žV©TLma}ß§V«¡!yžò¼úêkضºÙ¶ãØ©«ÍÔÔ¿ñ¿Á믿IE¬_¿DZ) ‹EFFFØ»w/®ë266’ÌÍùÔ^b7˜>°p# >ýr¯[½ïÑ«hÖ|‚@ž~|Fü>Ó~ô£Ÿ½À¯{uQ—‚­‘â®0ÄRŠcZ¼\o3<”çûI•s‹úÿgï̓ä8Ï3Ïß—gÝGß÷…и à‘I‘"i‘”dÉ:ì]…'<Úð†=óÇÌãÙÙðìLÄîììn¬7öyÖÖÚ’-Ù–e‹e[E‘I�„hœÄÑÝht7úîê:óúö¬ª®n4€ÆI€Ê'"£»««*«òÍïËï}ò}Ÿ‡Éé¥1 OŠ510WÒc1 ƒõô÷÷¡(àº6Ñh”£GR__O2™¤¥¥™t:Uµ5ôm#SlÙ²‰††î»/H¢Ñ(õõu„B&ÉdÓ4èíífóæÍìß¿Ïóèîîæ‰'çÀý†ÁC=Èøø8‰Dœd2ÉÑ£G1 ƒóçÏ‘ÏçèííÅ0 @211Áüü,]]Üÿý9r!>ø ¶maǧ­­­üž J¥mmm¤Óé›NOeÎ3oYXžß:&(nÙE IQ€&B” E¨¨å6˵™¶ghmî¤Ûí¥T(2gÍ2)/± ç(zµf¡$ª¢^u°¸˜eff:;;�_„utt”ÙÙ9ÚÛÛxàxýõ}¾Pk˲x[–ESs#¶brr’þþutuu²ÿÛÌÎÎqáÂ(““Ótݬ&o§Næc»>ÆððþgÁïÿ‹ÿ€\.Çôô,‘p„ææt]Ãq\R©CC#466TmE+ÄQcc#‰D‚x<Ž”’ææ,Ëb~nÇOÑÔÔRµI½‘ŸÓ40Mƒ'?¾•v®ãô™K¼öÎIÎ_¼DW[#­Íiºo=aÓDÓÕªà£çùDCcÓœ<w‰ñÉ99Ë‘“#äó6R3ªåõº¦ ›W\»¥ë’;6ȹsúúúhnn¶â‰8d/o¾ù6±XŒ¶¶6‰8±XŒîî.úúz»È/ùK6lØ@[[¦i’J%Øàëâ £¾¾žžž.š››ª.>ápˆ¶6¼vt´säÈQ:::hll$UIɆ†zÆÇÇQ5…¦æF"‘0]]tt´sâÄ Ž=Â#<â»här cš&…Bºº:ÆÆÆØ³gÏÍÏ{BVMBÂ(Ÿ h iAÝYÔ„VžãÜrk§Rqˆ¦ ¸ƒóÈÃÓÈ‹yÜ—F’ˆ¸O 1aVÍ+&jŠ¢°sçN^yåçìÛ÷&MMôõõ099iÔÕ¥ÑußUUµòqïF×5êêÒ¤R;½Èàà ét’ÞÞ„ðhh¨'ÓÛÛM$¡¹¹‰X,ÎÙ³g9qâ½½=,,d¸xq”ŽŽvÂá0uui^|ñöïßO}}=Û¶m­ÆàÔ©S$qº»»™žö+Õ::ÚˆD"lß¾£G’N§I¥’¼öÚ/xúé§yçwèèèÀó<úúú‚ m€_ż7@€»ïÜ_Ãã5FfÕß•šŸ•­âý§•7ДÌOíGzÁÑ À=…ÊO×õp]Û±)Käó#JS{ïšç*z–U$‘H\&Š+¥Ä²Jˆ#ß¼ô&2’bJS™RÍž¤Þ*‘_,ðoÞ{WrCIB¦Ž¡)ˆR– üœ?<ú$C ZÔ@‰¨1ÅP)]ZÀÙq?‘ÿøï1MsU!Ï_uøåÿLÓDU4\ÏÁuB!³Ü"ª+%«Äÿ=ø×¼:yWÚeË*P„çÛR «&;›ÙR·‘ŽH á4 #Æ|qoùk†J#´™-tDÛiµ'‚°–W"‰³©u±P¬J*Ôþ_3æøñtvvÒÚÚB©Tâû߉M›61<<‚®k¤R)6oÞÌ׿þÇìÝ»—þþ>4ÍO -Ëbß¾}˜f]×ÉdÙ¸q--ÍüÝßý=ííضÅÌÌ,>x?¿øÅk<þø'hooçĉ“Œ311ÁÜÜ,ÿüŸÿªªròäIæææq‡¾¾>†††p‡h4ÊɧèîéBÓ4lÛÆ4M4M'“Y 333ÃÀÀ�SSStvvrâÄ b±8ªª°{÷Ç–‘1RJ³(Š_äWäË•U²ªcdÛ6óó UÔêᓉdaѯD9||„‰ÙÖu6±cc'ºî÷´,æŠ>1Â_ü`?ûÞ=…mû.+UEŒ…øWÿìþÙ>ªiÕŠ¦`lA>_À¶ÝªP·eYèºZKeþ³=‡c™!þÓô÷8à}P 6Òö`<ËâíoEÇ—4Tˆë6Ma_ä·äâ½7‹œ+¡|¢Qo £².þmÓo°+µaÕqµtŽýê%‰žç‘É,ú•TªÎZŒÜü9ÑfòâÒ.‡0MïøRUTU¹¢ƒßÝx ¨´:Ž‹e[äó,«H2a ›A5Q€�¿R,‰Šž\÷ 0Ø€8åÍ-o^Í&k~ÖšhÕ..»eTÆ ÀÝx �=I½'«"£¦*xaWŒ=±:´pÃð+.윆£—«É‡ò–•Ó¹FsSä»ê†„(_ˆW‰Ã;óÇ9š9Cž¤!”¤ÁHáz.gò£d‘3фFJ‹‘ÖSôD:y8Þã‹Î^ˆ¿eãÆ„Ã¡²À¤Î“O>‰¢Zu‰D¥±±‘ŒŽŽV[*4Mãá‡frrª,À«‡Ð4Çÿ¡PˆL&ÃÀ€F:æé§ŸF×ý%Cÿ:‰ýý}ÕvUUÙ¸q#3338ŽKss3áp¨ª­qîÜyz{{Q…¦¦&òù<Šâ'â lÛ¶ Eñ«4¢Ñ(áp˜……yš››o(‘ó[NT&g3 èlI£©þx© Œút×õر©qú?~û uI:[RLÍeyéÕ÷yùï3tq ´ò}()—­¯M¥¡1I{kŸx07E(´h)ÚÕ:Wà ß EΔ7‚œñTCè*(Ïr‘YÇטI(Ý1øX=â¾:”°†R³àUéRiP“kIÍWÌÆ À­G@Æ À]JÆTÊA"…ïZ½»3ŒÚÁŒøºBQÈg`æbU]ýäi‰ï¾TÑz\]ÿîVÓ;Û'Qv}R¨µk¾ÛàyÃÙ ¦Š9,—j[’Àÿ] <p„Ä69lf­,çóchøö®pý¶&\„pÂbÑÉs±4…åØìiØuMKZMÓH¥–’JUUillXöÇqÒãSŸzŠh4JOOwµÊGUUÂá0]]Õc]Ñ“inn ™LÖ?¡êï†aÐÑÑ~Ùg2 £ª+Sû>†aðÄŸ ¡¡]×/{¿ºººêïÑåúúºªNÉ !Eà8.ÿùÛ¯±±§‰'ïßȦžÂ!MóÛ‘tCÐ6‰Åœ˜ãЉ !ø?¿ûûß;ÇäL¶rÀ«#©zæ–C£é*Ýíôw5ûV׫ŒQ5;“KV«+’|q;'“²ƒàî­†S¤Í´VÅ0 J‰@F4¸¿±%…¨3‘¡r»’~»RÞA^* Íá¾3…81òkðl¢ÆE(á…Ùbv‘2ãÕö²«ÍnUºMzK±¹ìöeî^•ñ´n @@Æ @€R”“9Ÿ°X"W*+u¯šð­L-–îß_;‹åw*8Y·„í¹—Ý–5ˆÌMjó‹JÂ!Ch$´0ºPîÚ{Ñ–ëpfaŒ™BÛSPËqe"F~ „ð¥ÿÝ®'±qQ=Qƒô·Êó+ÒI=MÒH¢å–Ø|&“I<ϱXì²vŸŠ¸qm»È­n+Ð4í†+\nŽƒt´7ã:6ñã÷ø›_ ²½¿•ßþµûÙ»½ÓÐPÊßÝ0t’‰(™l‰·/ð“wÎR²¼rkÍeçmÍ™‰‡Øµ¥›Ö¦ú+R*‰åº,ºEJŽ…þy#«ŸtEkLù}ä*#L V}|µ× ÀTušADѯHB|ب|&CÓÙêç'ù÷°ðq h@x)DY,Y,;¶Âå­0WD¾:ëË*”‚Nµ‡Â„UƒU}çdyN`ã‘·K= WVæQ¹ÄÀ]Îu­i^\í~eÿ?U¨Ä4“°â öU9¸ð[òdU<h© Ș�p5>æj‹òr9¿X¹ê hž®á©êµv€‹$뙵²dJyr¥Š$BQ UGUÔòýü+_¸+Õµÿ—RÖ$‡«¼V‚tláâz)=Œ¡¨we»‡ç¹ÌsdÇU«U. QE­ëxbÆó«fW)»X—‰¥âò$À:MFÉPb™‹Ò•R¾‘Uuˆ²m×u1MÓ4ñ<ï|ç;€@U5úûûÙ¶m+®ë i…BŸþôg<ó̧0 ƒ‰‰ Ž9ÂsÏ=W}/Ã0ÊvÌŽãTu>®7Ñþ0zŠ"ˆFÂ|ùéùÓWÉ”öex&Ëù×õd‹%Úêâ†Æô|–ƒg&øìÇ·ò7¯¼­(xÚò„~ù¯~u‰¦Ú[ëùÔƒ› ™Æegl…d)¸6sVžùRŽL)ã“8F˜ˆBW|·¯L¬®a"«IûòqåŸ{ âò2Š2¹æJËsz˜¨j ¤¸++.*ß{}¢“§¶2ìN2#ÿ+k Ò—ô½l~AJ¤ÒTPBQø|/BÕêU(¤¼Oè›Y—jC½âØòÉËu˜±r,–rÌ•‘RÒ ¢z]Õ–WŠU-Ér­9Pà“ì!]ÛEê!"BG½CÖªøˆ®¥ï"W™k*íÁ‹‹Y†F.ÒÔXGC}]µjÕñ<­¼f¬Ü¤ñÊ× UU.{_¥æ%’§ân©ªÁœ1p÷3/pÅ;ßÔȪ˚qé®mõߪJiã&2õóxmÄ®’�”<‡«ÈXfšŸœ>ÈXf CÕ¹¯m=››{h‰70_È¢* ép|ÕÏ7_\$¤™„t£šÈNææë&ã™iÖÕw Õ$B<é12?AWª™¢g“sUt%tW†FU5ÚÃõ¤EŒœ;‹+|vE�^¹"Æ'Z¤OÆTœ–ÊÏQª ÷R[BA AJÒnÂЯmlÛ6gÏžãâÅQ"‘(ýýëØ·ïMb±ÍÍÍlß¾ Çqp—Ï~ö³LMM18xŒPÈäÒ¥ ä··‡ÉÉI8H<'‰P*YÌÎÎrìØ1\×eݺ~FGGéííedd˜x êÖs7b¥ýwÈÐyx×F}÷ ?>2FÑò¸8_äOþé]>¹«8pÃÔ˜_,°µ¯±¹,ož¾ˆg˜àÉ+W8” µHHãŽlèmÅД¥äºæ³¸xä\‹ŒUàåSû8?= úêÚÙÙ¾žžúVT.ÌMÑ™j®tµ‹é‚]“Q#„*Rzä¬y«ˆí:ÔG“„tsäâ12‰žt+.Y§„.LE¿«§¿ˆâ3õ181ÄOÄ ŽB•FúVòʪCø gØ??½2ifH½rϦ÷ keKg±ú´ëJIÖ-‘±ò¼=2ÈÁ‘ãH)é®o¥;ÝÌžŽM”‹¢m‘ ÅÊäÌ ¢TzLfgi‰7T«-Çb*·@X7p=—¦Xz‰Ôeñ¢OüÔG’dìšP©Q€�n®ëqirš…Ž]m„Ã!¤”¼uà0ßúöKôõvòû¿û[475"¥äâÅ Ùºy=Š"ð<ÉüüÆ&h¨KÓÑÞR^ƒ8\›Àu=º;[1 ¿ŠôÒÔ ãSt´5QWçkµyžÇ©3ÃèºFogP…1pצ’H ²V£ œù áßY•”*ýâ!Êi‰,30KÄŒDº.N4†“·ñ sÙ]Š•C‰¤äÙXžÍñ‰sDtƒßÚõ c S¼9t„¶d Ñ4GÇÏ)娋$p<—ºpœ˜a43IS¼ž·‡ŽÒK±¹©— ó—H…ãŸ<ÏŽÖ~þâÝó/ù"'/ a¨]éÎÏŽ’×ϽǿzôË„tËsñ¤ŸWÝ-—ìÊÝnSÓy¼s %ıÙ.,N3šŸaÚY$/-\é!„‡‡5„‹WN½jɘ !# ($CiÚ#Kí<WÓöX\\äܹs¬[×Ç;¹…óç†øµO?ÇÈÈÅâ@⺒C‡1??O,cdd„œsoô�� �IDATuëú8yò�ºnÐÙÙÉàà1Z[[‘Rröì9Ç%311A(æ/ÿòÛ<ùä÷Œ›HíqKÄ"|õ™=LpðÜ ®üàݳ$lïiB©dŒK™/¿:HÆSfÈ/i‘+Æ!þ`Së ŸÞÕů?¶Í'¨VÑù‘H,Ï¡à”8==ÄÄü4ŸÙöRJ cxþéJžÅßy…Çú?ÆBa‘T8N[¢‘Á‰sħÄt~žûÚ60:?…Ä#¬Leç˜/äØÛ³K¹9\Ï%Ž£«ã™~rú�ÿáéßAWtébKSèwm¬À·—®OÔñµÒ³83û8MA±ñ*‚ÉW"©YNR+¢^ˆ½Îz¾Öô ­‰Æ¥ùoµ™EøDJÖ.1‘™áääŸÞô0±P„WϾËñKÃìjßÈÅ…)ÎÍŽ¡«#L¾T`kË:†çÇq¥GÔóòñ}üæÎg[˜Æ‘.Ép”#ãgèI73µ¸ÀÆæ.&3s´&.,L– œzžìß[>oBª\p3«<é!¥WnYöQ*•–œìl§z½r])ýJEÑAHÜr«³í8ËÖDÒ“HÏCzKJ×qBà¸^¹2tÉ1T–J2& c஄¢(ŠÂr1<‰À¥êÞR¾àyR¢Ôh}TîæzÂ×”ñ„(‹à*O9x�9¹@ÉV®jåZ¹¸ºžÇL>ƒ¦¨¼qî=fò 4'˜ÎÍÓ[׎í:Le縘™bCC'ÿpêmv·p`ä8÷lg>¿H<f&?ÏÁ‘cDÌŽça¹6¶ë027Á?œ|‹n²­u‹3ìh]OÞ.âx~«'½»÷¢©¨4&Ò<ÝÃÞÂ.efÍÎ0¼0Éù… Î,N0fÏ“¥„+<„_1S!gjD9+3B€ŽF“YOc´n ÿ9ŽãUuwRé4±X Ó U[‘üóJ­/®ëÛ3;ŽSvARª 4EQp!®»ôX¡P ™LR(î=zStMe{_}2Ç¢ý>'§ <É spd†ÆD„\Ñbb.OÞ²ñT V«¤ž¯ß$Q]áÉ üî§ï§©>uU‹{Oz¸Òeta’þÆNÞ<Wz¨B¡è”p<Oº,ZNO£**Ç/ ñpïV~|j?ÛZÖ‘ŽÄ)XEKyÞ;ÅTnަnºIɵ™ÎÏóý#¿ 1žÆñ\ú:Тí„zUõDr·+Ãúí_*õ=üžò<ñéŸñª{œy­€·”^\qT* qÇä“lã·g}}†ª_u¬ˆ{Ò£à”(96# “|pöͱ4c™<Ïo¥´›ƒŽóñÞ¼?~]Óywô$ñP˜-Íë˜É/`¹§¦†97w‘í­ë±]ËuX(fyåƒC,– 4DSÌÙÕ¶‘’cã”uºààÅ�Üôº²."™ˆcK.›úùÄ£÷³~]‰D¼¼&Qhj¬#JT×B’‰8º®W4M¥¥¹)%ZÍãué$‘H˜HÙéÑw6ThomBQ”À> càîM@TU¥íe~äGDFxN5õH<T¦mì&½\éHÛ¦”Í¢xŠí@É‚ÐBUñÒu$vî¼F{‰@UQhIÔsjr˜®º:ÒÍüâÌ»ìíÙ†Z•U„B]$ÁÖ–u¼vþ0 ±-ÝL,N6Lê#IŽMœ§·®ÙB†¢“Çv]$²\M“`KK±P” sÔE«š *B¹ëmDTU%‡éljåc¶CÁ*’±ò\š›æƒ©QŽÌ ñAq’)7‡…Þ2ñ^ßQ „ðPžh3²¦ý'“ bëÖ-¤Ói6‹EikkE×uTUeóæ¶nÝB6›cjj’p8ÂÈȬ_ßmÛLOO³n]]]ÌÌLÓÓÓÙ3gp‡îînÆÆÆøßø<|pÛv0kDmï‰Å¨DL“Ƕ¯ÇÐTþŸWOðþDÛƒK‡ÉbO‚ R7—ÈɊؾÀª ¦Ã ››ùíÇ·ÓÙÒ€ª(W9]šPÑU-Í}üéÁðÉ {X,™ÉÍcªšP±¥‡@EéN·0•[À“öl%o•X(æH„㜚b}C'Š"(Úºªãx.¶çâH—{6s)3‡ãI!¿%f‰xðÇøÝNÄT¨ªÆúº.~ßx‘­“]ü]a?gÍi øVÖr"F‘ †TY_jâs¡x¬y'-±T¡®‰ŒB **1#LX7ñðØØÔIɲÊícKÕO𢲡¾“±…)°±¹‡sÓЕˆnâHL)G[¢Çu°]€’k£+[[{I†c¼54H2åüœCmS’.‚¤%@€�7_»%Rv/¬û×õÐ×Ûu™`4^ö\ELÓÀ0ôËÖ@Ѳûa픇Ën‰KÚd>¡ ÂqÅUµ¯•s¯u[­ü¬ljyÓÊ›è@Jæ§ö#†?@€�÷¼rI¥ëz¸®‹íØ‹%òùŠ¥©½÷ªwÄW.ô}ÁÕ"‰D¢zw ’�Tªìü"3ÈÍÏ@Åͨb³¢êxZO3AQ—²éùL±®ë·ÔH‰(_dC±Í==˜‰øê–Éå÷)J‡™b–‰Â,¯œ>Ä‘c %/l{”½ÝÛAJÎÏŽ±PÌbê½é6\8Ά†NÞ=IO]épœ#ƒÜ×¾#cghNÔ3Cä ¤„Tœca96;Û7pnvŒ‹ó“¤Ã1îÙAX3‰ë!ªY&eîÐ’EJæç3˜¦‰ªh¸žƒë:„BfÕºò¼•¯«ýÝó<\ÏÅvr¥"Ss3œž¼Àᩳ+ŒsI.bKWzHák’¨x´…ÓüÁÖ_gW×f U¿æÝ#ÿ¼t«çJU<ü»a•Ï£ªjõùµù0nu±TqTR¥,ÂçUj•÷­¼îC]^–ÅEE×u<Ï£PÈ“N§®˜ØKOâz.–ãprè"ÿ×+Gxm¬DÉqq<_<Wú…/KvԕŬ�MUдD¾¸­™_h ­uITU¹ìùŽg²z<])™³ò,:EÞ¹pŒ¿9ú3¤„Ýí<µájËß¾óïÓžl¤.œàüÜëêÚycø( #̦¦NNÑœ¨çäÄyR‘u‘%×Áv U%¢™œža[û'&‡�çö¢«¦¢“ÒªvGÛÿòù¶íVI<˲ÐuõšbЕùWJIÎ.pa~‚}“GyÕ9ʹð EÅY&Šötúòõ<¢nâ‰æ]´¥šišª]Ó*¾r^I$óvéb†“Ã|ðUfòúë;ùêýÏRB,³Ìä˜Èΰ«}€¡Ùq’áóã\‹]m9:þéHœéÅ ¶Å¦æÎÏÑ_ßÁ‘ñ3liéãÄäy65õ7£¼vî0m‰zÚlhèDW5êô†¢Ý1ÍÏóÈd1 MÕY äÏ'6“‡vp8ä'nºQWn¹;ÛíœW*óžã¸X¶E>_ T* k„ÃÆU…Õ%¿:ÞW7ó]k_{§ŽÙÍîó¸â÷[=Á—\I‹ðêßO¬xwyÙã~½\AÔ>_¬¸ªÊËžu7Ž¡¨D7>Ì6`NysË›W³ÉšŸò ^dL€�Ü%dLmïl%©¯ôÔÊrËB,‘1B¬¸„-ÛÁêÓ|E—DYº#¾jRRÆô]_r¸”uO$¾Jð¯åj×òÚÏx½k‰š—iB%¬ÄõºPïè üµ’1«‘0ËâWþé• 1Y‰½ëY\äü¥QÞ<ËÑÅ ŒØsdß±jWª‡?|ð7IÄã¨ÊÚ Y{^ûó—»]­ü«=~·%Rk!cV‹Wes=l.Ï/Þ?Íߟ˜bpÖfÁv(º`×ÈĨåELD‡ú°Î£-!>»³›m}º±Ì-â2rsÅ!+yóv‘’[ª:P\ñ˜‹+-Ùn,AP„‚®¨$õaE»ãñ¼2¦ú»,ÏÅxry¦gg™ÈÏ0åfPÔ«qZ£ Ô¥ÓD#Q¿‚åñ¹ê÷–•ÁŸurå/Â]¶Wñ²^–Uæ„UâTý,+ÞK®j$5“°¢£ÜA7¥€Œ¹cÙÄR „#Ñ2Iþ«@¹¬<ko÷ßîLLožø¹|ò»ÂÂóªßBŽ¥n;´) À‡8Ñ×þ.ËÕ,WÓt7¸Ÿ•ûºÒÒ+¬è¨fœ¢k-iH|áÛ¸~ E#¤è¨BA ß±¦ÒŽðá\ÂÅšbWKªU⨮H°UE¡>•&™H°¥w=‹…<ã Óœ_¸DÞµx°m€X4z™“εc{}gÅÊØ_)Iº÷ö®~~×>¦* ±h„§voe׆ENOsr2Ë…¬Å\ J®‡" ¢*4†zR&ÛZÒôµ56 LMC(bmÇ©lrf(*i=LAQ±¥{GŒ.TBŠŽ®¨Z‹Òå»×u®*(eÍ%-'ŽÒ!ÛñÊí]~{‘R¶n½¶>Öj§>3¢…:=JAèXÒ)“gþ½_ŸŒYcR#¯ë€øç¦P):†¢.JwËÌ¢¨¨zÍŒWõ·àV! cà'+‹H*É|•¹Ö]Ü[D�]žùÎ?!4Bª¶”KH–œdn7¤/D|YBs›w¾ì¸‹ÚŠ¥›8¦5äŒ�UESUBºA,¥µ®‘]lZ5I]YÁ`µSV¬ÃkŪªùV‰„ :ëxÔq(•J”J%\××YÑ4 3dbš~ËœX¥²lubS– Ìòs¤Ÿ|BÅÐÃÞ“Â.W@•1q­A½š«Xmž¶†ñx]ãG,U* 1=ÄÚî_éË‹Ë_z=óà˜ª»½q @€�>ZȘ�¸SÉ£ð4}'c™¸ÙZ“û;•Ø.Ë®³úâ¦3Ærò%ýŒöŽìÙ¶ír|jÆåVדð_F¨¬Œñ^àÊ ¾ëz¨êR‚®i*Åbñª­/WJ躎¦iD"‘Ëþ_K�¬%FË´cÊm(wEDŇ'·l‘º¼¢ÀwëZ[Â#ãáÖ!qãRÜÜnïteLÅIÍŸ¯‚y&@€�î2&@€�îT.T^èúš gŽ• ¢”ò¶íÿ8HËó€ÛlÃ[Ñ (•¬òñ©­zPª±º݃¥ €�· žçùšM5™¾™F±XÀ0ŒënQ¹ªÝñ*U×S!) 5ÿê5H铜žç¡ëÚ2RËqlÛF×õ™l °4––‰€ @€ÛÀ7/@€�îÇ ª­Žã’Ëå«Á«=ïvl÷Nvpg’®J’Ïçq]o™Po%Vž'Éçóxž\SUL€Û›4 Ÿ Óô*!#„(ÿ®²¸¸X®º¸öX\Ùnt=äÍU ™•f„ç;õÔ ßîíÃŽ•]@õ…\Õš8ù1Ëçó8Ž–wãÏ.š¦ß{׋�¸‡TÆ Àm ^®¤• ª*†a`Û6ÙlÃÐQUµ¼0®<ïzÔ—¿æj%WzþÒç¼ñýÞÊÏt#û^ûã¢z7Øó$†a,«¶�ÿ~%V™Ì"¦i iêužë;wnÝñ¹ÞsévžG×:>WÿœÏs±, ϓ躪©(J(¯ªb&Žc“Íf1 MÓjÆaðßæY¯C)%¥’ë:¾3ÏŠ¿2ßY–¬ÎºnTãt#óÄ­š?n÷ÜuµyöV~‡µÍ +ç@ó²90@€�dL€�ÜSXˆ©ÕÑ4¿íŶ}«l×õV­’ p›ÒÆš*%MÓ0ŒÕÛ*ä™×u)•,r9ç2™�·7V•QÓ4LS¿,a¬ÄM×õj ŒeÙ E\× ÆÕ‹•ßÚ§( º®cš¡U“ûʸ2M×uq‡b1[µp÷Ìàö" cà/‚Á¿;¬( ž§ß5­¿Š1¨mW©Ä`¥†H%VªªVËúÜÙXUÅ«µPH)«D€ßbæãêÎF !VÕj1«<OUUt]_«@oéî˜ ÀíE@Æ À-Àõ¸ì¬Ô©X™tIÈIFV‹GmR¿’˜ñÉ3/(㿃Éâ•ÆÎõÄ5Ow ^e‰\&{-g«ªõ»P�¹BÈ‚ö²o ™�¸ýȘ�¸…Éã•À¥¤ci»²"f­Ic°H¾~ÔÛÕrVþ½òqmŒ‚äþÎÆìzˆ˜•1 âu‡b…¬º‘­5¶µD´TE²ƒxÝúkÓòùoms`€�¸ýȘ�¸MIÿ•’E ¬àÖ¼®œÒ\CÐT´ÉÜP\–Ž«/|¹”8VJõk ˜•eûŽã”_$‹w2^P!1ýßk[`jɚʸXj#“T¬Œ–âU¶6ZM\»òâz^³–÷»©´zÙ÷ºuϽ‘×^þœÊ¸’Òª*€²*A]‰_E'fåØ *3nÇXbYœ–â¸ú @€�n?2&@€�nùâwõŬ¿Ð¥JÂ,wR’A‰ømŠÅÕ’N×u±,{™åîR¬d9Á÷ª± ÂrçÇQå§ïüb!%UòÚäÝó\<ÏC×µšÿW’ÿàxÞIxžÄ²l<ÏAUµr –“Ñ®ë i¾oí˜ bu'Çe§2»*¾\{àÎ!h| @€[Œ« Œzžïî¢ëÚªŽ0W{}€‹Å•7PUÃÐð<·ê¼SIð+ÕKKë ,Î8ªñ5Mð+•jÉÏóp»ê³ôÚ%"F–+Ïjù9h’ܞť"0M!Àqìeÿs]·JÄèº~Ù˜ p'áëc†^ À¼^‡ @€�nÁ’v ­+RJ\×EUTumw §¥ÛŸðWÜ’jmý;÷nµ|ÿN#®/Ó4pœ%‹ñJ™ï¤¤]#^’2-ãÇC.cWÛ\?4M«Î{Ë«ÍXFšÝèx âsóã©"N®ª*®ëVÛý À¸N‡ @€�nÍ¢¶6á^™dÔ&ùš¦^Wâ^ÛË¿Ú{¸ñdn)iÔ±, )µjœ*®Jk%]˾‚Þü8«´RÔ&÷Žã‹EVmõ“RRQ’„,«¬WkßÖ>¦€jûŸëºÕJ@\‰²ƒÒ½÷j1[mlq»Ž„@Ó(K7M’ @€ë˜{ƒC @€�·6Y\M„ré®»¦…îJ×¥ZÔºŽ¬æŒqw/¤å-!7nU¬–’Fp]oYëËÞ^–4:6v)çXEC GªŠ‚zÓU›í%ñÚ%§”ZAÛZ㣓ìËe6ãµÉþªq.Ÿv¢æ4¬mQ’,i:--(× Zïöãu§?ïjDtå\ôÏKEÑ®;æWrÈZiA¿r¾ž˜Õ|ýšÚ6ª•ŸézŽí•>çW>÷„�UËÏÕ;3_Ü|ù¸ pïΓKç1˄ϯ÷=*¯ÿ0P{ S¥\eçUÇeEsïÆx®‹P–_WÞü ÈÉ� @€�÷!s¥¤äzñµîµÉˆm;”J% C¯ê.\+)º;ˆ˜»‹YÛg¾±Ï+ÌØiæ_þÐÇ~«ÅÐ>÷g4mzô›[Dº®K6›%£ë:  ÃÀ²JÄbqt]ò,r¹®ë‰„‰FcM)W’”«“*Š\vúyB"<¤ô°\’+±]‰ãz @S¦¦`ª ººÜÅé^Yœ/¯ZöŸ;ò=V2gÍóÀeN®‹eÛ”J¥ª SUSHLÓôçÃrEÎ$±ù|ž\.‡Ã0B‡–ͳ¾î‹®ëkÚO¥•®P(‰Dªíž„œe3‘ñ83岩E£%¡bhʇ@¢ÕÎÑîu2&›Í²°°�@"ž žˆ_׺£X,’ÉdH§Ó†ñ¡|˲XXX@QTÒé4–e155@<#•JùãïÇŠ”—&'‰D"¤RÉeß?—ËS,I§Rhz.Ș�¸çCWrTZë‚hÉòÕ_ü;®G6W`tb†³9;:Cwkš I:[눆CUaà•Ö¿kM¦§§ijj¶mòù<±XlM ±L&ƒã8$“ÉUïVyR’)zÌå=Š6ÔER](wm^+o*þ®k“»ð>rò 1±€Tò\Üÿ·ÔõnGÑô«&¬×Âôô4ßýîwÙ½{7}}}ü§ÿô?óµ¯ý7|ãßà¿û·@<çÍ7ßâ­·ÞFÁúõëùô§Ÿ#‰|„ïò‰+æ¥Ä^b;.Óy› ‹6Ì—Ê8\*xä=—„®ÐÑØTèN†èŒë$B:ºª\׸r]—™™ŠÅ"�¦iÒØØˆªªH)) äóyêëëoKl\OR²=fr’¼å1ꣂ¡ÀŠùèV4·â}jïîÛ¶M©X T*âyª¢‚ˆrae_–U¢dYhš†a—µÜ\í3UbõÒ÷_âСwimk£]F/ðùÏžX,J>Ÿ'Ž022̹sçy衇Ðub±H<Ç4Mæçç‘R’N×aÛ~2‡¹xqŒï~÷»üÁüTUÅ“0Ÿ÷øû÷ò³±=xãŒÂÞu&ö‡‰‡‚»ñn ¥R‰wÞy‡W^yÇqP•ßþí¯ÒÙÙ鯅 ]K&*ŠRoÃÃÃìÛ·^x††Ç©V£T„ž+—­!Ó4«z^†a`Û¾x·®ûmÀB4MÃuÝ*‘jÛö²÷©•¥R‰ï}ï{?v¡¨|ö3ŸÁó$ßúÖ·ˆD"D"aÞ»—G}Ó0}jÏ«^¶…~Å‹PPQv èº^]Sår9þøëÌîÝ»yö¹gªŸË¶m~yè]Nœ8Á¾ðR©¤ÿ?E`zp‚Ș�¸ëÓÂ+,ú×rg½V”Òóüddq1ËÉs£ÉòÎ.› þ1¸p¶ÃgØÝŸd[§Éæu$“ɲVƒXÓgªì³X,òÍ?ÿ¿÷û¿ÇÄÄÇŽãî§©©éšÄÎøø8Åb±œì+ÕU{áÅ¢ËOŽ8uÉf¾ ÙФóHˆþ&Cûè%RJ¬bkâjvrQTwè�ùù)Œh¢ª[r#‡ÃÄã Ξ=ÇüÜmmĢЅ"–e“É,òÆûxöÙgèîîâØ±ãd³9B¡0ª*îéqµzûØÕxdÍæII¶PäÝKE^³ygÆfÒØ^ù—~‹ B‚p0èx¬Å`o[˜††¦¡( *ÐUö],yÿý#9ò>B¨ läñÇ?A(BJÉðð¼ÃoýW_¹f•E¥•eå·“rµ1.ª¤î/‡‹ì?ïpiÑ¥5¡²§[å¡þÚŠýÝlëÜ•ª¯gެ}?Ïó( ärYÛFQªà«••_‡F€Pð<—b±€®ë˜†é'ŸkøLÒ{ãÆ<ùäãØ¶ÍùóC”J%Ž;Îìì,‘H„©©IÞ}÷0---9r„T*Eww†arêÔ)òù<÷ß¿˲9zô‰D’†úJŶmc®„ãã6''‹’ˆ.P€CÚ â¡ U(ÀÁu]fggq]—'Ÿx’—^z‰·ÞÚOkëp™l)±~ÃzNž<‰¦ilÞ¼™Ó§? ­­•d2Éþýûill$3==Íèè(gÏž¥­­††FŽdË–- ¢««‹l.Ëøø8Ÿþô§9uêgÏžåñÇçÈûG˜™a×®];v Çqذa†a0<<–-›Ù·oMMM hmmå¾ûî#›Íâº.>ööäõ×ß`Û¶mŒñïþûÇáwßã;ßþ»?¶$¼ÿþûLLL „ ¡±ÏõÈçólݺ˲8~ü8ªª200@,åƒÎ0==Í©S§imkevv–_:L±X`Æ ÌÌÌ0>>ÎÜܧOŸæâÅ‹tt´³}Ç6ÂápÐÊ cà^K"ýDrmeùžçùwîgçøå±s¼wÁa8—`¢Ô„Hl‡P +?‡‘ìà’ÞÃË#Ó¼3±@×ñ“ìhUøØ–šë0tEQ×”�9ŽËáÃGÈårÌÎÎ244B[[¯¾úÅb‘7`Û6çÎcÓ¦M ‘ÏØ´i�˲(K‹~Ò‹ÅøÄ'¥©© Ç•»èðæ™"– !]áÜ”ª@kJ»«È˜[¡SM"³‹,:*©Öû°D2pôv¦¦¦I´õUó÷I€C¡ëÖ­ã½Ãï38x‚§žzÃ4RàºN¡€ç¹¤Ói4M§··‡P(ô¶^®+²j\<OJ.Ìçxé|ž×Ç.Àr=<–ÚgV¾CIÀYƆÞÉðl—Å':ãÔ… D™�\™| …B läĉºIooäüù!º»»P•“'N1<<Âð<‡zˆ‰‰ Ž?N"‘ ©©‰ÅÅE.]ºÄîÝ»9qâŽã²yó�ãc æçhim¡T*òÐCÒÒÒBe6ïñãEf= &=^9í2Т>¦p«¸¹[é:VC¹\–\.‡ôܲe‰ð©Õ¨µÇåDɱ-\Ç%‰²R/xõÏë[/^äèà1ñ<?¹<F±X¢PÈÓÞÖFkK©TŠááÆÇÇ)•,¦§§Éd2(ŠÂààqt]çìÙó‹%|àª.Uå{N.:8.ljщ‚ñŒÇ|Þ#gyÁE3ÀMC×4 Ÿ”ô<—×_jrR‡�� �IDAT±±1î»ooìÛÇôô4…B={ö�pøðaêëëyãõ7xñ3/²ÿâ±õWECcÅB‘§žzоüC†††9{ö,íí(ŠJ$Áq\lÛáÇ?þ1Müðå—‰„#|púææçQ…ÿø'<ÿüó:tˆ¦¦&~ðƒ²yófæçæùçŸgë–­466ñ¹Ïý:/}ÿ%Ο?Ï¿øÅ²cžNwW7ŽíðÖ[o’ÉdRrðƒì{?ñx¼üïãÂ… <òÈ#œ;wÓ4±m›·ß~›½{÷òƒü€––æççÉeó|ç;ÅýË7²T>õ©§‘R266ÆýѱaÃÎ;G"™`}ÿz S%hë 1p¯¦Ž«ˆ9Ö¶PÌÍgøÙûyû‚`\t1ï&!\!é¹äç>`òÐ_Ó°ësÄ:ïC$:óZ¸˜™æxn‘WÏcO‹Ë³í¦®.…¶¡;Ïó(•Š|ýëÌââ"¦bÿÛ9uú4étšÁÁcôöö ( .Œròä)~ø!~þóŸSWW®ëüô§'yä‘GÐ4•Lf‘¦¦&< ƒc.Ž'iM¨„ •LÑãä„CÞòHG>zw˜¤ç±X´˜Mí@mßFIÛ“ÌÏÙä³6=®{S®%š¦ÑÕÕÅþý¸téëûסi:ÅR£ƒG«w8ÿéŸþ‰ÖÖ6&''ùò—¿Ä½£ÕskáIÇ“\ZÈóg'²ü|Ü!cW„S¯¾ ö�°]É{6Œç XŽËsëÒDMUõ*qÔ4ÆÆ&’É¡PUÕøÙO_Á²m>Ì“O~’R©Ä[o½Å¡C¿,Ût«ìÛ·§Ÿ~šsçÎ1==ÃÔä4ýýë0 ƒB¡ÄÙ³g™™™a~~­[·pòÔi4ÝO¾N:Mcc#ŠªpbÂe±$‰…­ •ÅÌå=N]ry8¦Ýuób…ˆÉçó,..‚ô|åbº¾0óòR¡•b»Š¢`Û6…Bp$|MÒH_k¦³«“;ïò,lÛbjjšcƒÇxðÁÎŽ„ŠB±X"‰DCU"‘ˆ_‘cšœ?ŽH$B±XB(‚|¡@6ë· !èLkDM…¹œ¤äHfsíu©J€�7‹‹/R,–èëëåþîgjzšææf}ôQþôJG{'‰D‚þþõtvtòÍo~“Ù™96mÚD*™F*¥’…eYtuvEinn¦¾®S'OÓÓÓÃàà étš/üÆP„JWg|ç;E©Xâã/<ÂOòSžyÆoú“?ù\Çñ]Š…"Ží"=PUžž>öîÝ‹a˜ÌÎÎ1za”M›63==Ãk¯½Æž={Ò#ŸÏ177G±X,kD 4Õ¿&nß¾Ÿüä'|å+_á›ßü&cc9þ<_ûÚ×Èf³|ûÛߦ¥¥…¶¶6ž{î9Ž9‚ã8ŒÓÒÒâ“Ø5óQ"‘àñÇçäÉ“äóyf¦gèë]woIßȘ�p¥ÅÿåWsÛqøÿóÿƱ†Ï£Ô÷ã @AJ¯”eúÄÛÿ Ôh³¥-œDh:Rk$C9º83ôoüü?òü¯ÿJ(tYÛÒj0 ƒ¯}íw8~ˆ·ß>Èb6KWgO<ñ8\¥¥¥MÓ‰DÂtvvòÚk¯‹ù: ´µµ®øŽÐšR8rBº ¬Ãð¬GWŽ®~4W3®'™ËäÑF¼tK8®ÄsfÉ-òù<ñxü†ß_QÚÚZùøÇ÷²uËVêê‘~ø!&/M‰„ùÒ—¾È‰'Éf³¼ðÂó¤RÉ55Ò³â’4-ñç§ù٘͢åáɵß׬¬»m.æ%ÿß™qež'ûëQõë!}-!Ý0Øûñc²ì¦S(ظq7L&yùå—éííazz«T"6Y·®Ó§ÎpæÌYš)‹H)éèh§®.MCC™L†B¡PµôîH«hB +˜šÂЬª :Òê]¯ŠfEfa�•òÁ_IÄ”ý°D¥Ui!S!ÙTE¥T*¢j*†a\µ…TUU¶mÛ‚¢(´··‚Ç{”H$Ìoþæ—Y\̲qãFÚÛÛ8wî<†¡óÉO~’‘‘ahnnæðáw) <öØcôõõpáÂ(º®³yó!(óþ¾„`s«ÎÉqƒ÷G-2%dX°»Ë )1nŠ¢`===|éK_¦¾¾OºÄ¢Q‰$õõõôõöaÛ6º®‹ÆèééÁ0 æççøÌg^DJ_ß*NÓÑÑI*•¢X,’J¥yôÑGøÇüG6lØÀÈÈ‘H˜žnÿFM$á‰'žàßÿáà‰'ž`ÓÀ&Æ.Ž188ˆiìØ±ƒ¶¶6ŠÅ¯¿þ®ë‡q]MWË¢ô…|žŸþì§hªÆìì,Äb1Eáå—ÄÔÔ»w瑩Î×f2Mƒx<A*•"™LR__G4%N³cÇv±,‹Ý»w³cÇ~ô£qèÐ!„$ ‰ÃÃÃ躎ªªÔ××á8óóóض͎ûv0xtÏ“A‹R€€Œ  @€zò˜Ë(¤l4UEÿ?/‘žK©4ÁÔ¡ïá”òLùGR;pl£o+\À•GÂb6‡”k+y7Mƒ¶öfb±étЦ¦z6nà•W^áåý;wÒØXO*•dÛ¶mœ8q‚¿üË¿äþû÷`&¥R‘/|áóüíß~úú4_ùÊWüdH¶·kÖ™Xô…þb!Áö˜ù#¤³Þ²f¦g G£xŠP<ÏA7C‹%¦¦g‰F£Õ6‹!ñt]gϞݸ®‡®kH)ùÊW¾T]Œ !hnn®jyüª- «•fRR(ÙìÍð³ %Kg™£ÏU˜xåMÁTVð_NØØ°HO]|Uûãe‹-M%™Œc--­lÛ¶…·ß~“M›6±gÏ“ææfŽ;ÆÁƒyöÙgøÔÓÏð'ÿï7ˆÇã¬ëï¥Á4H$¦Á;‡’Ëgioo#—Ë“HÄill¬n•¤E(’ö”†–g§JLftMÐߤӒwMÛÚJ«êl6»ô·ˆr‘”®í‚S¤”Ç)dB`F“„R˜f ©ƒDAVlq…DU}DÓ´êøXMKQvìØ¾lÌ<ðàžË¬ãºº;«¤ÏŽÛPUUUyüñÇ‘R¢ª*[¶la`` :Ÿ{îY„Rq‚ˆ¡ðùÝ12ã²¾I%Q|{ë�nªªÒßßOSS3mí­Äc1rù{öì)Wê5ð‹Ïsøða4M£¿‘H˜çž{–|!Oÿú~Š…"ŸzæiÖ­[ÇW¿ú_óÁ™X×ßGOO7 DcQº»»‰Å¢$’ ššQ¦k˜FˆH$Âýì¡££Ï|öEì?€'=>ýü§©K×ñ̳ÏpéÒ$ŸýÜgimm©’dža ¨ <õÔS|pú4]ì}x/…Bç~í9<Ïãàc»va† „ìܵ“ÅÌ" <ûÜ3D"yäãÄb1šš9tè—hšÆ};ï#ãºã¼ðâ l «»‹}ûöáyýëú©¯¯GQ¢Ñ?üÃ#üðâóÜ·sš®úšb܈5<.jþ®ü®Ôü¬ljyÓÊ›è@Jæ§ö#ƒþ×�Ü[ðÊ‹y×õp]Û±)Käó#JS{/Š¢^—«J±X$™Œ_–¸ÕêX¶Ã×ÿôÏøóÓ‰Ý_D*K¼¹t,Š—>àäÿþëX “˜=¬ÿ?&ÒµU5¨HÒ)ɾÿ^¨¿À¿þ¿‹i˜Kš ×™ ­l£ª<v¥öŽËö!ý„xtÎáø¸ÃLÎeS«ÆÆfƒˆ¡Ü ¡çI2˜¦Yu”p]‡PÈ\s;‘”~©…ãyÌÌLñöÁwinnñcUÁq\³YæffhjH³}ëB¡Ð-%Iî%Ûå›ùŽ‹‹¹ª~@Eä5N^v®J)±ó3Yþ—C3¼5%×LNúçrÙF{Ùy-t>Û­ò/÷´’ (k$¼Ö¢IdY6o½õ³³sÌÏϳuëvíÚY%V_¸‰r­ÈÒg÷÷ó#££si…mÿ?{o$×ufùýÞžûZ™µW¡6ö H„@J-Q¢ÄžnIÝšéVwLwØî 'Âã¥m‡ÃvØî°cÆã°Çãðø{¶Ãš–:FR·vJ¤Dq v  µï•••ûúVÿñ2ª@�)Š¢ZùEdTUV¾—o¹÷¾û{¾sb~iWßûåµ™Z­ŽiZ+¥Ùl¢(2~¿ïÀ™mÓhÔ) ®{É.`QÀ±Lš¹ «7¨ç¶pL×­EdB©’#G ÷ !Š2önKlÛÆ²müþàž>÷Qê+N‹~%ü ûU±XBUßÛ˜gÛ™µE£ŽßïCÓTTEmSâûœçßn+¦i¡:µZÝ´‰$„Â{ô×>êç²Û¥H’$lËÆ²ÝÅEQ\±jÃÏ¢½íxÔ¾gvÛHÀue’$oÛöóβ]$Yv·¶2ü/ÿü_N¥ù»ðÒé”;ëº ‚àÙ÷ËvŸlƒšî8¨cš&´@Çqh6›-€[öŽ»=¿rlÛqEEV0LÇqey›X–é}› Ólê‚˦%ÑûûxÛŒ£ïøÛª*Ÿ €è€ÙzY­—½ëåìúéÜ™ïYÚyÇ ÃŒéD':щ@ìµ¢†#÷c¼ô]lÙÁ½£¸¦!cPÌ Â8šŠ-ƒ«Äyç³FvŽcOäþò¢ï~Lïåïd‰ôÅdz¢n’$‰²(ü­”uÇÐ)ÎM\} ŸzÙîAPü¶I°´…¾9O3 9ÔƒÏ×÷·£Nì öyk½Äµ‚m;`!ì°võ/ApíÖeQ é—y$®1V¸–mrm§Ža;ŽƒáÀO7>»UäÔp „‡Ãæɲ̉ÇYZZ" 30Ðï%1îjÂ=¥ˆOą̂Ï+·’>Â}O×u¬–îž—ãPÛ^agþ2ÙÕyŒJÁ±\°L”(ævhÖ+ô:&áî}’ ÔíJ Ã@Ó´$hÙéºø ŸªªîyO”DDi¯uÛæ¹>ŸïI©ºgÛûE8æ?úÿCp‚¡ ×ïÞ÷ƒ€åÝßy÷yÜ}Ìíó½×1íÞÖï÷ßõýïÖÿ{>ÆNtâN+ëD':щ\F#Cƒø«[Ø‚Ž#Þqqpp|r8 HÁ8h*–ìàH¶g #8Je‰Ñ/º@·âz/aaÞãv÷n@¾#þðÀýܽíþ÷Ñ�cL½AîÂèYúárÍŸDTUDÙÆªçÑVòìØ}ÔŽœ"’ê{_çÒ^ÅmOtwÿ¾û3»ÙMÒʸ×=|Ð}½«k÷ïwëvÜë»ßÍ.ýƒŠºnòóÕ—=æ8-~Ë.‰ ¸4_Y€T@æLÇ{Húè Èü««9ndk8–#€ãäë&/­Ö81`! Ò»ÚÇ?ì¹J’H,#‹} ×@ùÈ—¾ìÖ‹±mÛŸÚ×̨—©l-°¹4CacE‘ðù4ǦYoR(”Ð-8ŽŒ¢FRïp8óVôp m¡vIRû½Ýlš{õ‹û1 ï÷¿öko_Ù ’Ý«Íܽwëßèć€ÿ F':щÓ‰Nt¢ÙäîI´( D"aÆúãÌ×»ÚôhÁÁV%¤hÒýl0‚ãS°%G¶qlWWÆ©æèûˆE­Éý»Ã1mŠvû˜$éá,±ÛÛZ–å­Pí¦¦ïM:Þ}»�múq›ÆÜ>¾ö1½—Ÿ»“Ÿ_††ãØÔË%ê7~J\ÊàÏnáD$Y@ô ØŽI³&²•+PÛ\Ä>pªuMÞ[ÙÄÎÎW®\ñ4�¾óï000@2™dll AxõÕWY\\DΞ=Ëðððž$p·.F›†Ý¦Œ·Ëó.\¸ÀÀ@?/^ä™gžñ(ïím<zx+y½~ý:š¦1>>¾ç\î¦ÝÈþ2tmlÇ¡R«s=g¢›¢[º" -ÌÒnëÂ"" #1gÇ"<9" «"š$bÚ•¦…Õê#n¦îÐ4®ìè4uEò?°mïNè¶_}P�ǯƒfÐî2‘whð86z9K9»ÉöÖ&ª$4r”®áIË$»º@cnŠ\f“Ôö:¡î,J¸ë ‰Ý*9½WéL»-OMMqãÆ-¾üå/¢ë:ßøÆ_ñì³ÏÒÝöƦÝýç~€ËîëÞ¾ÿí¾•Ïxíµ×ØÙÙ!™Lðä“gyã7yúésH’Œ(ºû»zõ*ØS6´{ÿ¦iréÒ%èëëë€2èD':Ñc:щNt¢¿H‚€¢*=¸Ÿk›3øÒ}ŠÜÊIlME Ç�)Ÿ†- ’ئ¾½Àľ~|>í=iÚüä'?¡Ùl2<<LOOº®ÓÛÛë3»'û»¹¹9¦¦.!Ë2§O?áÙC ‚@¥RassÓ ÚIéîý˜¦Éææ&7nÜ`tt”¡¡!�æææX[[ãÀtwwcYo½õº®sòäÉ=ÌvIÂÝÇ×þ½Z­‘ÍnÓÛÛûÊò‘H‚«G’½‚\]EŒX¶u3ÁAäz–òÚ z½‚/AîÎÝ+\­‡••U C'R­Vñûý˜¦ÉÚÚ•J…Ï|æ3ضÍ7F× nÝšfmm•±±166ÖdppK—.‘Ïç9sæ Fƒ7n2?¿@,#ŽR«Õ¸yã&’,qðàAB¡¶msþü[Ôëuúû(Kƒêõ:.\Àï÷‹ÅˆD"Äãq¦¦¦˜œœäêÕkD"öíÛÇÌÌ4µZsçÎ}àà˜eY¬g‹ËÖÁv‹y$ÁA\±ÔGâ_9àì`¿,bØ6¶j ET$ýXŽÃr©‰iYØŽƒàXØ8dÍ ÙB™ ÿþÿ .Ð××GWWÛÛÛ¨ªJ"‘¸ÓèN©ánÆD;±ß d¹ÿsÏt78¶›1á8?ÿùÏgppð#Ÿ¨ïaz°ëÚ8`7kT+%ÕÏä§ÿ˜ñCÇP}~ËÂh6˜¹v˜›/ü%åR£QÝs vÁ¥dÆØ¶M±XdmmÍÍ-¶··ÙÞÞÆ²LVVV™™™frr?ŽãÍfÉårœ=û$õzƒ+W.“Nw3::ÂÒÒ2³³³ŒŒŒÐßßÏââ"ù|ŽÓ§Ï (JËýEãÔ©S ôc&;ÙòùÓÓÓD£Q|>_ûÚ¿æ¹çž#P.—èëëcxx˜ååefgçØ¿’B¡H,çÊ•+ Ç;ÑNt¢è€1èD':щ÷ ÆhªÆ‘CûÑÿÍy”£Ÿ ½¨íŽª"ƺ@�)Åñ©8²€#¶\D,›Æö<'=AÚ‡ Ã0¸ví:ôG_åÊ•+ܼy“ÞÞ>¢ÑõzÝï“eŸO£T*‰De™×zòèÑ£„Ã!²Ù¬Ç¢�Eɵ«-•ƒ/Z[[ãµ×^ãØ±c\¸pAÈd2,//säÈΟ?Ï‘#Gxíµ×" ñæ›oröìYü~?Íf“R©„(J­¿®U¦, )•Jd³Yæçç‰F£¿0ÆÁe“d.½ˆ‚Žˆ›´»Ònné"H’ƒ&Û”ç.SËeP}„÷(ré÷û‰F£lmm‘ÉdøØÇÎ077ç•,e2úûû‰Ç㈢È'>ñ �¯¿þ:ŸûÜgùÚ׾ƳÏ~ŽÙÙ9nܸªªD£Q¾þõ¯388D$Å4MšM .02²jÍWUU•#GŽ`Û6¯¾úÏ<ó ·oߦR)311Îúú:¶í°¹¹Éúú:š¦ñÈ#“\¹r¥ej²´¸„mÙüäÇ/òïþÃðÁ­r“ͪŽmZضÕ*LM†„_æx·/O&x¬'ˆO¨›·su¾~«Àá.Ÿv™e¶Ë¥¦ËŒq�Çö`Co’¯Ë ÚNˇùmcjêÏ?ÿ<ögÆÒÒ2Á`�I’0 MSMS1 Y–1 ƒ`0ˆ,Ë4›MŠÅ’$ Éår­>è§Ñh I¢×MÓ¤\.£ë:>Ÿ¹¹y–––8qâĝŨçj»´4|öXI¸¥š²æcòÜ—8pⲬ JÈ2²*sèÑ'�‹Êüùû2±ì‡oæÊ•«~÷{D‘Ë—¯L&yë­·ED"I(æ'?y±±1dYáêÕkäóy¦§gxòÉ󳟽Äàà Žc †øÁ~À³Ï>ëZ­g³,//³ÿ~8€ã8 yAàÂ…‹œ;÷ ¢Ñ}}}¼öÚë:tóçÏ …¸~ýñx‚×_“H$›o¾IWW’Çw ðXSmp¿Í¬z˜1v7‹ëÝúênØ}οs®aY–'&¼»¬¶=×±mÛ›+H’´‡ýÚÞÿûÕnÙ½¯RHº}ü´øþÝe”»…½yF뺷ÈïilåþlLÛ¶ÑuY–ßóõ¾»lúA¥”íÅ·÷z_tÍQæéöùÓ‰Nt¢¿!@L¼D­|„&–¬ÞI05 )„HÇßðl@ÀM„âcC‡½IØ»=´ÛS]7(K‚ˆÜúÎF£Î‹/þË2‰Fc„BAÆÇÇyþùçùÃ?üC7 4Lr;y2™ ~¿¯ý¯xä‘GÐut:ÍövÃй|ù ©Tб±1öíö¾»\®’Nw300€iZ†ÉÅ‹S|å+_!‹²±±I­V§TªpìØq …@f³‰ªjlmmóòË/cYÃÃÃär94Me{;Ëg?û /¼ðbËÂÄù€)½‰£åP«ÕÙ)×é‰u#JÑl¹;´œy4 )¤`@±R'lÛˆïQ7F’$‰[[lÛöÀ%]×1 ƒh4Êúú:étÚKÐ8€ $ ‚Á ñx‚D"I>_dg'‡m—¨Õêtu¥±m›x<J4AQdpÊ¥2[›òù††½sWU…p8„ÐrÜ0M‹Lf›­­ år‰ÉÉI¶··yóÍóœ:õ8ÓÓÓÔë YEQ5zz\¦R©TòÄmÛF–e4M{ßh Ý2±l×1 $AàX*ÈŸKr²'HH•°X,¼´T䥕2ÏŒÆùGb¨’ˆã@ôY+61-›Åý)8˜–aÙ,Á‹DbضÍÏ~ö±XœjµÊôô …BŸÏGOO𦲾¶ÁÐð Ùl–O}ê“hšÆ­[Ó¼òòëH’À§~ë“|ýëßàÌ™ÓôôôréÒͦξðyR©.r¹</½ôs4M%O°ººJ¹\Á0Œ_›1в\ÀKÚUB'"Š?L$ÙCzhÄMDÚåŒˆŽ„(Éô °U\EÖ‚{—v`;xÚ,÷%I¤«+ÉÒÒ2ƒƒƒ$q@`k+C­V§V« éîN Y\\d{{›Lf›l6K(¤«««˜FÐõ&;;9âqT*Õ:'H§ÓôõõÑßßïŸe’ÏY[[g{{¸#@Ú•A Ñh’ÍîP.U[ ëëìÛ·Ï;ßF£á%wªê‚|m1ÔNÓßþ0M“™™–——‰F£=z”`0øP÷¾R©Éd<&냾#ŸÏ£iÕj•D"qÏñº\.óÚk¯ÐÓÓƒßïgee…ÞÞ^ŠÅ"Åb‘x<Îþýû‰Åbär9oñgee…ÑÑQR©Ôûºù|˲P…H$ò$ÛŽãÐh4¨×ë{Ø¿ø¸g±¹¹I>ï:èõôôL&I${@ƒjµÊõë×9v옷 õ°ûo6›{³aüìg?cÿþýìÛ·ï=»alll ( ©TÊ{ŽëºÎÖÖ‰D¿ßï•i æççyâ‰'ú;666¼ýÜëû··3ôõõ´û”‡½÷ù|®ó寠œ·Æt¢èÄG0DQ$ 0UY«í „ôr@dÄXÜu) …\ÍÑM Á®VHʉHè¡Fíh6›lnn‡‰ÇT* …"étÃ0¨×k4M®]»F?RËÁhM̶·³ôöö'Nçúõëäó9,Ëâúõ8p€ññ1×e�!Š"†aÐl6Y[[' ã÷h4êB¬C¹,…V)ÁÖÖÑh”P(ÄÎÎ###loo³¹¹Iw:Íá#‡ùË¿ü:ÕjŸOãèÑ£ÌÌÌ| ®%wÊBllËb3“¡4xŠpoUsAÏ¡6ËÈ’‰¨Šè²²¥ÜÓKAb-_£×vPZŒ€‡=8Qéëëenn޾¾>4M# ±¾¾Ž ôõõ‘Éd¸víŽãÐÓÓÓ²ø”¼ÉR__>Ÿx<F"‘ P( ÉdÃ0XYYm-*}ý½H²D"#nµG·ÍèÌÍ͇éêê¢R©â÷ûH&“D£Q¯äbj꣣£¨ªÊææ&šæ#ÐÓÛÝú¾b±˜·B éîî~ÿ`L«Ñ„dDZ<pFÀ/ lV fsub>™é\“ΙË5ø“c]|qŸ""�–ã°RÒ©ê.¨³Û³LŠø€dIâ©sOñÝï}`0K8B’d&''ÙÚÚbll”þðGH’ÄÒ’ÍÐÐP‹9cÙÊÐÕ•ÄðaYÁ`€G}”Õâåÿ�� �IDATÕUúúú¹yóFÛ¶©T*hšÊO<ÁåË—è'™L|`BÀF4š pEÞµÒ*â‹¥ †W©n/I¤‘$Al ‚;ÍzÚö2Áh-šz‡>’aè†ùÀ2%AˆÅbȲ‚¢(hšÆðð0Š"H¥º<6S0Àçó‘N§ZIHš¦222Âüü<·oߦÑh²ÿ~ººº°m§u_]{ÜTª‹t:E(D× ‚Á�ŽãL&<÷™ÑÑQ2™ Fƒ¥¥%ºººe™h4âõ•p8Ì“ÌÏ/P.—‰D"äóy àÑhH$ÈçótuuÇ;`Ìo@ضM¡P ··—F£ÁÊÊ ÙlUUæÆD"‘ì ~¿Ÿññqnß¾M½^GQÆÆÆØÙÙáêÕ«hšÆÈÈ7nÜÄqlΜ9ƒiš<ÿüóô÷÷c’$‘N»@~6›%sàÀOûÈ‘#„B!}}}\¿~Û¶9}ú4Fƒ……Nœ8AµZõ€ù™™¶¶¶èêêbtt”Û·o300Àââ"¡Pˆþþ~nݺ…Ïçc``�˲Ð4ÞÞ^DQ¤Z­’Ïç¹|ù2Ï=÷~¿Ÿ™™jµ]]]ž5ööö6ù|¿ßO"‘ X,aY&š¦Ñ××ÇíÛ·q‡ÞÞ^fggéííejjЧžzŠÅÅEúûû!ŸÏ³ººJ¥RñÀÏÞÞ^nݺ…(Šôôô°¸¸ˆ$I  i®|(" ríÚ5|>·nÝB–e,ËâÒ¥K4›MΜ9ƒªªœ?QY^^f{{›`0ˆ®ë‹EFGGY__÷töÆÆÆÈf³lllpðàA®_¿Îñãǹzõ*]]]ìß¿Ÿ@ €eYÌÏÏóòË/X__Çïw™—–eÑßßO¹\¦V«!º®sâÄ |>¯¿þº7¦vww£ëî| V«39ù…B·ß~›S§N1??O¹\fbb‚ÅÅEN:E¥RaaaR©ÄØØ™L†Z­Æàà †A(â{ßûgÏžÅçóQ.—I§ÓÔë.8®ª¯¾ú ¿ó;¿C:æüùóôõõQ«Õh4¤ÓiFFF¨×ëܼyÓ4byy UÕƒƒA._¾Œ®ëìß¿Ÿ™™™º‹uÀ˜Nt¢ø[»…L|šÊD_ŠåÜ:Bß¾ö§@ÂQÄ@!ÄV%OWÁìÊ6ƒq?¡Ö ÈÃÚíJ’D4å±ÇC–%vvr¼òÊ«ø|7nÜ ««‹H$L/¾øS¾ò•ß¿#,ÙZ-*‹ êu·Ʋ,úúúÈf³LLLpéÒe67·Ù‡¦itw§QU•îî³³·y饗©×ëŒÒÕÕÅ+¯¼†Ï§µØÝ9r„Ÿüä'�Äãqb±(‚ °½½ÍÖÖJ+‰’[“,Y–ñûýT«U._¾ìQ]?Æcl ÇÔÑMVWW‘ý!ÌèYJ Ñl"‰€º#R1dJ5»Pbm}£AÂAVIB@Ó4Ç{IrK³yäR©”wO:E.—CQ’ɤ[þ¦iœ<yœ`0À“O~ŒP(ŒßïGQJ¥2ºÞ$•JaY&ét ApK`~ë·>Ùèb‚H4ñV¹ººº˜˜˜ ‰ i…BÁ[áTÓ4¹pá"§N=F àg||¬•TJƒ!NŸ~›L«ªê­îï-}_ý ×Ah0B²·]'%Àt~¶XäÒV•î€L@ÉÔLÊM›ÿú\¿5E“�´‡[Ù:öFLË…I@À'X¤#ĸI’D(âóŸÿ<ßúÖ·˜œ|„Z­F&ã-ÉdŸæc`p€ ’É$š¦aÛ6½}½lln¡¨2áp¸Ån€íí,‹‹‹†‰(º,’P(D½Þà•W^¥§§›`0ˆaèyñÞÝQ«Õ…;6³m@Fñ‡ ÷“_ºNfú-‚Ý£bIlj¥<¥9ÌZ‰øÐ!è.°´µšÝh>p E‘‰‰ Al1MlLÓÀ>ûÙÏÐh4‚-°Ä-}üqWD»\®x@ËÍ›·Èd¶‰ÅbLLL ë:Íf“Tª I’‡ÃŒ£ª*¢(¢i*çÎCÓTjµ:¢(ÆøÔ§ž&“Ù&‘H0>>A"' ðÔSO¡ëM‚Á`Ë¢Xe` ß[ ŽÇã{˜1>Ÿïb™uâ×+Úí}aa€G}AX\\Ķm®]»ÆéÓ§™žžfzzÛ¶‰D"¬®®244D¥RÁqÞ~ûmâñ8ËË˃AŠÅŠ¢Ëå(Šâù½½½¼ù曆(Šìììx ‹ÍÍMLÓäÑG¥««‹þð‡¤R)ŠÅ>ŸH$Â[o½åýnyl“F£ái$E"ªÕªÇì¸}û6‚ `ƒƒƒ\¹r…t:í-<8ŽC½^§^¯‡=‘ú¥¥%‚Á WÎ+Ióó󬬬ðÜsϱ´´ÄÖÖGå­·ÞB–eêõ:©TŠ›7oz@G  R©°ººÊàà †aP,±,‹‘‘¹|ù2O=õÍf“×^{'Ÿ|’J¥BOO[[[®]»Æ—¾ô%�©V«ÌÍÍqèÐ! WCªR©pðàA’É$²,322Âææ¦<� “Ífi4üèG?â«_ý*µZ MÓ<@+‘H ª*×®]ãܹs˜¦é•F¥Ói¯Ôµ¯¯ÏÓ®ŠÇãœ?žÇQ) |ó›ßdÿþý(ŠÂ•+WøøÇ?N.—£\.óÆopìØ12™[d³YšÍ&ñx¼UR+qéÒƒƒƒX–…eYd³Y8rä+++Ôëu†††øÙÏ~Fww·`éºÞZÔ»Ž(ŠÜ¾}›ññq"‘óóó8ŽC"‘À¶mR©>Ÿååe†‡‡©T\vh¥Raee…Gy„ééi$Ibß¾‘ÖsÔà‡?ü!Þç<Ðc:щNtâ7€¹_"©) ÝüxyQ¶½åx‚>¤T-VŒ[¢$à”·Ї|÷´"¾ïA–ù£?úª—¥R]<ýô9dY¡¿¿I’PU•íím††ˆÇcí÷ÄÉãŒŒŽ i*@`ÐÏÉ“'QU¿ße™-FÜ#ܾ}›X,ЦiÄb1Ξ}’r¹ŒªªÄb1AhÑü Âá‘H„Pè$…BÛ¶ …‚„ÃalÛæÌ™ÓT*7iSdTUÃï÷ñå/‰`0Èg>óé–]®¼‡Õñ‹16¶eÒØšÃ¸ùr¥[Ùj¢d G ¢+J+É“Z‰‰Õh ed¥ÁÎö63ßúßéŠúˆ?BøðÓ^"ù0�Z[¬S�"á0‘Ý *xY–$bÑ(�ÉDPU¥u¿“»>©ì¡·ÛDû=×.ÝA–dþÎo?G$E‘eØ•D.e¸ÑhrúôãD"”Öõèé¹³âäo ß~Ðì6À˜ŠGé•V˜34lÇÁ´Á¶Ê[å¦w±TI`¥ÐtÛA\°Å´níT±m§UêtG“Y†4ƒH(ø�¯2§Ÿ>‡ª©$“ þäOþ>¡[bW¯7ZV°~ûï|YV0 ƒH$ìi(ŒÇ[ [„ßû½ßCÓ4Ž?Æää„7ùtÛCŒO~Òü·¯w»>ÿ×!EC7Ðõf‹¡r‡#Š"Á®>ÅOié2¹¹·)(`c›&’ª‘9ŒëAÜʦI©TA| «[Ðjßdg÷xœÔî ŠªîûáPÃ09÷‰³˜–…¦ªƒAB¡Ðžö!Ê"Ьìi«Ýé´Û¢1då÷»Ôy—AvKtú^e»ûëÞ~ÿa­ðv⣲,3::Š \ºt Û¶‰F£8ŽÃÑ£GYZZòDÔÓé4étšk×®Q­V=ð6S,qEQ<­·¶>G4¥^¯FI$-fWÒcaªÕ*###œ>}Ú{î8p€­­ ºÞdaaÓ4[ŒZ·ær9¢Ñ(¢(zÀP{.±¾¾î±XLÓô˜Åb‘R©ä#š¦íÙÎ(LNNrùòeòù<¡PÈeÌé:‚ P*•¼¬Z­æÍo\Ý®"¡P˲‡Ã³¼¼ì áp¸4¹ó”R©D&“ñƱPÈËD"nÞ¼ÉÐвìjñµ÷ÑÖÒiÿm!|I’ðù|ü~?•JÅÓxi ê+Š‚ªªtuuQ­Vùîw¿ËÁƒ †iš<ñÄ,,,x%²í{Õ>§H$B0IJ,*• Š¢‹ÅÐ4f³‰až¢(”ËeïüÂá0ÛÛÛèzÓ[SU•f³É¥K—…ÂÞu5 ÃÓj)—Ë€[NU( \n8FEâñ8¶m300@8öÙB¡¡PˆD"A£Ñh-ÒŨÕj�‹Eï9 éïïçí·ß¦¯¯f³I>Ÿ÷´yúûû™˜˜`ß¾}-F؇3n ñ¾°ëïöï⮟í—ÔzÉ­— (@Ì©m¿cwFÆNt¢¿VÑÖ°Zv¨†iÐh4Ý•K5Hºä¡Y íUÊF£A4¾or´[¸®^¯óâ˯ð_¼rƒÆs‚cÛØ–Ž`;è3W(þëÿÐs„ïÄ“H‚„ )²?ÿkþQÄßûíÏ„½ Π»k·�¸5À7nÜ ··—îînے`jjŠ£GÞ³LÊu6ªR­V=ªðÝÂtw~·øÛÝÖÖ»¯Ùîãßm7»ûî%ägÛÅbÉ<vm¶M|>í /ɳ-Ìz‰âOþ¼ú/˜/Ƙý{'ž Oá‘dA¸#´gš&õZFµJ¡P ³µAò'ÿ3ãZž®Çèúê?!6ùÄCƒhwÊq>ôĹňjkp÷a†|Жâm!— x}%Þóžç*uþû§ùæ’IÕp8!R%‘'úCü7O 2÷£É"Ýâßþ›Û¼ºZF·vµ#ŠÄr4ÀŸC•åûŠDîn·íûÚÖ°ÙÛ¶ÚZµ{Eïʼ»ÏÞËMéîëý«cjµ:¦iyz%n=¿ìp»¯mÛÌḬ̀¸0ÇÁƒ=懧ÓÙph”ó4Ê9H FPƒ1AÂÁµ4ßm•]*•˜›cxx„ññq|Ð5i÷«÷Ô³œ;bÞk×¾G¬Ø¹ÿù HïׯŠÅªª=4+ͽÆ™µE£ŽßïCÓTTEm‰â/ý¸?Èóo·Ó´Ð Z­ŽnÚD’BaDQâ×!,Ë"ŸÏÓh4<¡ÔF£(Š@"IÁ`r¹ìÙlÇqðûý$“Iêõº'ÆÇ©×눢ˆßïG–e*• Íf¿ßßï'“É ª*º®{�‚eY”J%oá —ËÑh4Z®bw„}ãñ¸'Æïj/…(—Ëž"‘ ^¯£iù|p�Ús+W®xÇ800HOO7Õj˲<}Y–ÉçóT*�º®{Œ‹7Þxƒsçε´/pøða|>ŸHx ©T*ø|>J%—ÝFÑuÝ[´¨Õj¨”Ïçi6›$“IÇÁçóQ«ÕøÎw¾Ã—¿üeÂa h6›èºÎÚÚ©TÊ»Æ.�›F’$J¥@€f³I¹\öªí…Ó4Éf³ cš&¹\ÎΡ våE¿?@¹\f``�€ÅÅE‰@€F£A­Vöm½ÔÖY]]ettMÓX[[k±ûÜqckk‹\.ÇÆÆ‡n•hºL×\Î-Yïîî¦R©J¥<ÆŠišƒA¦iz€²¦i”ËeLÓôÆ˲¼ÿ˲L­Vó®A0«T*èºîí+‹y×£Ùl‡©V«^9jûÚ$“IÊårK[/z(� ã®å˜€ÕzÙ»^ήŸÎÝÓ´ûòfL':щN|£=‰ïŠÅHk"³¥,(2åùßaë:b<‰4<FýÊkÔ^þ.‚ ‘ÿ¿B$žHY–ÞówÚ¶M¹\FQ\fÄ݉„ÏçãĉïP®ß­ìï8'Ož¼/ä8š¦a†·²Ñ^™x×Äå“úö{÷çû¥&ŽQÍc/½ŒY¯ÓØ1Èo¢¦ÒÈA 4Ð@”Àq™1X‚ÕD4ªøêÒ«¯Ò,fÐÃFvžæêU̱G‘% ¡4Ý×ýÀ±1›†m¢[–ëB#ˆ!;ó‹7Š(¡‰2’ >ƒç—ŸŒÝ߲اÈ|j_ŒŸ®g(ë®ê¶Åë+Eþï4ù·Nvsv8FÍ´˜ÎÔ1-ÛcÆ�È’À°ÏੱÒC´Û»¯$ Ý/ï'<Ù.GPUÕ>Õ‰ïÝ Ó{ƒ\v—ÀÚÚ###­òš½ ª Šøc)|‘¤;ûµlW{(Û1šÍ&ËËËX¦å¹‹½cÙ6 ÇD7 Ïi·Ýö;Øïj‚ˆOTPZ ¿ð+Ñ:ñë’$‘L&±,Ë{·ËQDQ$‹yý`7#±¿¿ß[€i³,zzz¼E6 Ú~.…ÃaÅê8}}}X–µgÌj‹Æ·Ûq»dön°¹=n(ŠBww· ´ZÚ@¸Ì¯6p&IÅbÑÓ½Y^^Æï÷aÛ¶'ZF½q¡-Š»{§ÙlrâÄñV‰®Åáǽ²YAˆD"ïXìqµñŽîn;Žã±L�"‘È;Æær¹Ì“O>I8ö\…|>Ÿ|´÷ã‚(w¶kƒZš¦yŸ»;ººº¼ßïÅCû§]Â%Š"cccÞg4Mó˜Tíëßf¹<xÐ;¦ÁÁÁ=ûVU•\.ÇÄÄCCC{Xy»ÛZûØ]¶ß+óÝ}=ÛñnBÅíslßÓ¶ÁÁÝ‹ªªÒÓÓãm·[¹}Lí~Òf›~Ñc:щNtâ#¢(’êJÒÔ¸¹³Žà÷cl.aUJHÕ4êÐæú2æÖ:‚¤a·±ý!’¢Awº y×dèaC×u^þù+ôôqüøñ÷•X?è3®¦ÉÜÜËË+ˆ¢ÈøøûöíûõK:›Fæ6Ja†¦–a[}•ˆ¸†P<…ÔwAK h!DYÁv,0k¨åmœeŒÛoSž»Å¦©ƒèàT2˜›·0U¤@xOÚw7(ã8MÛ¢d6)ë5ÖŠYÀ¡'’D•”$Î/Æ¢ ¢ 2Ň**|4îÜ;Q�ª,q¤/Á¹ž_›k`ØÂ÷P·-nf+ü·?oò±©70-—qá~h¢ÀN„èOÆ…_Íê¿eY¬¯­ÓÓÓC0üÈ�Éïw;ÇqˆÆbÄbqvv¶Ñ4$É·wlÙý²m—¦´ Û­³¸¸ÈÆÆCCÃ-0Fº·Vv«ö̲- F²Q'S)P7›t¢„4ÿ/ý TEˆâ# *{š(Ó‰÷ˆ¶n$I$ ±¹¹‰ã8ÇÑ4mï3¥Ù$“É ( >Ÿ­­-Ç!wàt]÷ôJ¥B,ó’Öö{[[[ȲL__º®ãóù<½EQ(  Óf oooÓl6 ›Í’Ïç‰F£¤ÓiAðþn³hu]geeÃ0èëëóJˆLÓôΫ]òÜ.Qj—*& ¥ì8™L†d2ÉÀÀ D£Q†‡‡÷Ø.;ŽÃúúºwÜmVæý¢-bÜþ|½^ß³¸%ýýýôõõ½ÀÞ= B¡wÞïw,¾ß¶.ȱwì¼{¬i_·h4ê•'µ‹w‡ øý~NŸ>ý&󽎫ÍjÕuýeÊw?Çßí\Üc5°í½ a[˧]êûnתP(P,üЬ®;`L':щN|£½²ÇLô7^@ûìïâÿ“Ï]ýÍïÐüéÐÎ~ ߎe!Ä£è/ÿ„T#KwúÓïùAÒvc™C&'÷séÒ¥]¥ @€t:ÍêêªW nY&KKË8ŽÃÄÄ8 ®[@oo/†¡“Él{uÊšæ:鬭­3>>Ž®ëÌÏ/à÷¸}û6Š¢044Èôô ¡`È¥ý¶ô¢±(·nÝÄq\±ºz½Îúú:ÃÃÃŒŒìûpœm×#,SÇYz™¢ªì–žh¥eü·×QWŒ D” ’&ƒh#9uh°kUòyC°iá0ƒ&Jc»¼‚ã›Ä‘D×¾ü®UDA0›²Ù`½²Ãk‹W0m Y”X+gè Ä™L ²]- õ½2/WsH�LÛ¦ª× i~L@ a6ÉV‹ø UV*>|‡†©SiÖ¨~BŠpHh22Â=ËÜ>Ü>Ã;Ê»ÇAº"~ž›Ls#·ÊåœEÃ|÷ýê?šÝñìmçŽVLPøL¯Ìg¡È"¢(<„|ûí·1M“F£é%ÝÝÝ,//Óh4èïÀï×XXX$‰ÐÕ•d~~I’<'‹l6K:&™LríÚu¯N^Õ4^úùËÄb1ü~½½=,//c²"sâÄñ_XùÃ�pÚ"ÓƒCCä y¶·3ˆ¢@:&º³‚Ûfñµ²œV×tu}lÏÎ}qq‘ÕÕU‚Á ûöík%Pív*îblÇ¡l6Ùi”¹±µÀìÎ*ª¬%8Ù?IÓ4h˜:a-€,Jn; ¶Ê£l,ۢܬó‡pµ• Ó [+áSTlÛ¦+óÀ ·m9›Up +¥b4PT¡tv@˜N¼·Ðu«W¯ym,u…«ggg9{ö,/¾ø"O>ù$ÝÝÝ{’îééiOåÈ‘#X–ÅÖÖýýý<ÿüóœ9s†@ Ào¼A,cjjŠgŸ}–p8ŒišÌÏÏ{‚¹¯¿þ:Á`ƒ"I/¼ð“““d2üqTUŲlX__'³°°@.—cppÕÕUDQôÄ}üq¯Ì'ŸÏ3==͉'(•JlllJ¥øþ÷¿ÏÀÀ€7>ŒŽŽz¬ŠR©Äo¼Á§?ýisssd2]¦Í¤™%—ÛáСÃ^IL½^gjjЉ‰‰–r@ èiÓX–µ§Œ¦ÙlòüóÏóÌ3ÏxåP»Ç^ŸÏçJ»KPÛô¢(Òl6¹xñ">ú(‘HÄ+ßiÏ w3ƒ,Ëò˜L»Ÿ}mÑî¶VL{ÌÔ4Íïõù|Þ˜ ìaÀ´·½zõ*###ÌÎÎròäI*• ¢èŠ•+ŠâÿnM™¶^™ë⨠ënÔT UÓpl›Z½ÆÒâkëkœ={I”0LWGFS5tÃÀqlYAÕT0ôôwA¢Íª)•J®è}o¯‚e³Y®\¹Âã?ŽOó¡¨îñ¶çV–m£i*š¦Q¯×Y[[C~üã{:G0¦èD'~C£-&yd ô_ÿ SGý»‚‹a\zsu5òÒ£O@³†ñ­¯£ýü‡ý½ß%N½§Zýö Õµk×™œœD–%Ö×׸uë‡fjjŠS§g}}Irktoßže{;ËOœbggA˜šºL$AU%.^œ"`š&µZÕÕUöí¦P(´œ”º¹zõªgŸX,™Ÿw'EׯßàìÙ³¼}á‡beu…«×®±µµ‰ ˆ,,,ÇÉçóìÛ7ìÑhÙɦÓZm±‹f£Š´õ‚¬;ô$¡X�É1‘m¹ÑD¬ä]15DÙÉ-(6MP€#}}CZ�Da§<‡EtÔû–™¶EÃ6¸°r“J³ÊÉþý88|ÿÖë<1|‡AneQ$EtÅd FX 0»³B:”$W-pyã6çFO²S+ÑŒ ‰"¯,^c0–&æ! U½ÎÑžq ×·æiMõŒâvÓtL,ÇFÄ_)s/ ¼ÝÇ¢© Ç»øã|™ÿõr™¢…å8m\íÞà¤Æ®ÿ Ž€(‚*ÀÇ“z²D$€,½{»›™™add„ .ð±}œ fgÝþ#IW®\åñÇOqë–›`d³;LMMy ®»Vã‹‹K-‹å•J¹eG. ¹zåŸüÔSÌÏ/´ú#ø|®\¾Ê‘#Gö¬ôþò°JgÏŠæû)S’$×~½¿¿Ÿ••%vvv°,‹dÒ ! ‚×w—8¸:O6ºÞdkk‹ùùy¶3Ûˆ’ÈáÇIv%ßõû­³]Í3µ>ÉþGk^œ½@W(Æ‘ž1¶*9ÖŠÛ5""“©!–ò›è¶ À§ßæKGŸ¦®7hMbSk3ôE“Tš5õŒ±œßd8ÞC@Öx{mÝ2ˆúCt£èŽEÓ6QE¥ó ìÄû7E¦T*ÑÝÝíi©(ŠÒr\«cÆ=çm[áH$B³ÙôØårÙ*• Á`ÈÜníg7ËAQ”–å°ŠãØøýA¢Ñ(7oÞdrrr``sóæMNœ8A,ã?ø…B®®.Oó£­)Ò.iƒµZÍ3êõºç¾ÔÝÝÍ÷¿ÿ}R©GŽÙ6ÕëuOлíúT¯×‰Åbd2ˆÅb|ó›ßäàÁC£æêÕ«ô÷÷sñâENœ8ÀíÛ³¬®®zâ±år™\.‡ <öØc,//óÒK/188H:¦P(’ÉlÑÓÓÑ#G0 ƒóçÏ“Éd¼ò*Qéííekk‹H$ÂÎÎŽgQñâEº®³ººÊÇ>ö±–%t™D"ŽeY hdd„z{{I¥RÌÎβµµE±X¤Z­òéOš . Ë2lllà÷û=g­üã »@,‹Å˜™™Á²,®^½ê‰î žy榦¦<ç£k×®Q«ÕH$ììäØÉæH$¼þÆë?vœ}û†ydr’r¹Â›ožŒÅ.�� �IDATgssUUù¿þÕÿÍ'>q–jµÆææ±˜ëÀäêÅ8rä(†ipñâ››ìß¿Ÿb©H©X"Ïåe…¡¡!R]Ý‹nÝš¦R)“ÏùÿŸÿÇ{¬Õ/Êø|KKËŒ …xä‘ TUaxx˜¹¹9êõ:o½õVŒéD':щßô •,Ë<ýÔS4 “þüŸ¬ü“ÛÈÿø?GH%Q¿ð;0ЇQØÂü—ÿñ¹üÙü¿ÿÅßõìßK†Á«¯¾B*Õí: È®{R__/š¦Ñß߇®7¹~ý:¡Pýû÷sûömj5w’wüøqÞzëmº»Óøý~fgçH¥ºH&“Ôj5ªÕ*àÖ™g2 …©Tš^xŸÏãÜ©áu] z ÜUþõ ò¹<gÎ|ŒpØ¥#«ªÂíÛs\½zÍþ0À�À¶0wfð[ 8 E…?ÄcØ&–ã‰sÚ6¶€(€,A,‰´ƒ€ì IÔJ×qÌ!(~Ïæ^"È6¥F•š®sesž\­„ãØä«®+AµÙ@‘ ~6?Źѓ,æ6¨èuzC]4 ƒîp‚†©SÕë–É¿¹ò"Ÿ™|‚\­HÔ`>»BÌÁvlVò[¬—w˜L ‘©˜0 ÚÒ¦–cáâGšuá8a¿ÆçŽ"2Ï?»°ÍRU@·$к·¤K@Ä/ <Õ-ñÏ pp …"‰8qÚ>ŸÞÞ^E¥··—F£ÎÆÆdpp€jµæY‰OOOsôè>õ©ßbzzš—_~UU½Ül6ˉÇÙÙÙass³uˆáH˜þþ~2™ år…ÁÁb±87oÞüЯõ/̵ǽ6s.ŸÛ¡Z­aÛÛž¨¢+ëC’D,ËÆ0 êõ:¹\ÎK<t]GÓ4öïg||I”¨Á$ `;îjsMo°]ɳQÞázfÛ±YÊo`96MS§Ø(óÚâ>1z‚‹k·(5*ÌæÖOÒŠPЫø$™ÙÒ6›å‚Z€B£BÔ`£´Ãv¥@Pó³^̲VÊp´o‚™eÆÅ¯é™vÇø¢ï3¹“eÙÜÜ$“É`YÑhÔÓfÛ½�ÓfôI’D:ƶmfgg=}¥ösÕ0 r¹Á`ÐHFFF<í”Ýe@€Ã‡³±±áélóÒK/122âiЂàé¿´…hÛ‚ÛFÃ[m~w‰J­Vc{Ûµ¯V«^)“ažm¬iŸG[«®-¾Ûfà¸,œ;eSm—F×ÙØØØ£©×.Cêïï§P(xç÷ï|‡ƒ¶lìS=z”^xOúÓ¼ñÆë|á _ð4ZÚ¥K𦱲²‚ßï'•J‘Ïç¹xñ"þçÎK/½ä]ÝÝÝ4›M677) ”J%X«×댎ŽzÂÀ?úј˜˜`rrÒ¶åÇ?þ1ápØc¶œ9ó1^}õFGGéïïçÛßþ6O?ý4ù|žÁÁAýrüøqþâ/þ‚/ùË\¿~gžy†ååefffÐuf³écÉd’ýû÷Ól6ÉíäI$‹Eêµ:Éd‚W_}•¿þ›osóÆ …‚»׺߯¼úsªÕ*¦i’Ïå‡ÃD¢Qϰ]2å´˜<¡p»µ½¦ižvLw:ªi9r”“'egÇzO¥SØ–Íàào¼ñÕj•#G\g±R±D,î~W›=Ôdî€1èD':ñÀ´'J^©R4Êï>÷º þâø§ÌýÅŠøþʳÏ!n¬cýÓÿ’Þ­ þ³ÿàó¹Ï~†À]»›åóy†††øâ¿Èòò2ÛÛÛ‚زR ¢ª.•³«+ÉÊÊ ™Ì6>ŸÆ­[·¸yó¦iqøð!~úÓŸâóù8tè Ž>Ÿ†m»Ž’$z ã÷¾÷=&Ï>û,¦ipóæÖCp?€;I ø|šOåô™Ó¼þú눢À±cÇ( ܾ=Ãþý“㊿:ØV2/"kºk+nƒb ¨Š@8X`é`ë¶én&ʲæ û¬&ˆ —1#ˆ€ª#UÞÆÖËŸD¼+yl'»¢("8nûè '¸²5‹cÛ<>t˜íJ¾õÙvŠ CÑ4¥z…ƒÝ#ÜÊ,±¸³Æßì (’ÌZi›ÙU6˹VIŽ…ã@¾^a³”Ã/kŒ§‡(4Êì‹÷PÕ랸ètêWŽY‚h@åó'ÇéŠüç7¹T’¨–kwÝrÁá®ó’E„¸&ò…~‰?=5ÌH ŸrÇvùÝÚ^[˜1 àó¹ýèèѣܾ=Ë­[·8~ü8Ùl–©©‹D"nB15õ†¡³ÿ~2™ 333Ȳ̹sçøö·ÿQÁçÓPU™@@kÑ­U‰8W¯^Å4-EöhÜö8ö~·u'‡æÆTÊ•ޠѨaY…B¡E¿·¨×ävvØÙÉaššæCU5þ�²$síêu|~}ý¤Óéw²„\ÙDDdI"êQiÖYÎoñ¹É3üÕåp‹ù·LѱŠu3¿³†¦jô…¼¼p‘/ìÿ8š(Ò° Î/_Ãtl&»†Z®cMKg1¿C@ó1íf»V`4ÑG±^Þ ‰BgŠÞ‰÷¶m“Édxë­·E‘ÉÉIO³¥ýÿ_|‘‘‘Qúú\öD0dg'Ë… p‡P(H¥‚·¢(ÌÏÏ#Iáp˜Ã‡µzO& 2>>¼ò sss;vŒT*E(ä²inܸÁàà áp˜C‡ñÒK/Q­Vyúé§yûí·Y]]CUݲè7ß|MÓ°m›ééi&''ñûý pôèQòù¼WÆ™H$˜žžæìÙ³¬¯¯³ººÊÂÂ'Ož$266Æ7¾ñ Eá™gžáüy—™áA~ô£!Šÿ?{÷ßFyÿüswÚË’å½â•8Î ƒ@ „0CYeÏÚåW:è¢ãE”.ZÚ2ÛR ¥ì•¶Œ2’@iÈÙ‰áØ±-OÙ²µ¬}w¿?N÷X²åÄq‚IÂ÷ýÂD–¥ÓÝ=wÒ=_=Ï÷ËcñâÅhnnFII âñ8œN'fΜ‰®®.´µµãÀ˜0aöíÛ‡²²2X, Vú[«ÕÂãñ`Íš5X¸p!4 Î?ÿ¬^½EEEX°`� ££}}}(..f©dYÆ‚ ðÆo��›¶¤&6›Í0›Í$ ­­­Ðjµ¬Ô¶F£$I¨®®fm–ZéH]?«ÕŠp8ŒeË^Ç…^Q¡Õjqê©§¢¹¹ç·{÷îEUUKÀk4aµZQTT„wÞyÙÙÙ8ï¼óðúë¯Pù ´´´`Ó¦M())AWW‰4-êêvaï¾:H¢£É„D"ÀX,NF�ÏqˆF"ˆD£ÐhµˆÆ”à“Ùlb×^‘HbB„Þ ã9ÐhÄbQôôD`·g)U¸¼^¼´ó<ûìß1}Út”—WÀáp ®®;wî„ÓéDgg'Þ~ûmTVU¢¶v2D)mÛ¶¡³³'Ndå±?õÏËQÜO¥­ !ŸÛ šñ.m©c©®K,žÀÞ}ûñëßüëZ\ÖL©i?fÛ³pÏ÷¾‡Y³fB§Õ¤&ޤºJjòË#Y·L0Vî˜}úp¹LËL]×£é�޶´µZÒ:äï„°éKÐÖñ˜ÒÑ’9H2䈌Qó‹¦DF;û2™“=>[V1�€˜±ñ©/ÁwZz™”uˆK"<ñ´x»ðfÝǰ•‹\w°WLY„b{6¶ÖA#ØÞ±Lš‡FO;Bñ(ú‚>Ĥ.®=ïì]§Ñ†¾ýá ®ž¹oíüóÊà !%Ð `QÅl¸|nèqÁi¶áÌ 3Pœ•=¯…So…n§)¦´õР&k»dî—„(ÁÓïÊ]Mx¿5‚½¡8"  Yi ­�˜µ< LL³ó¸|’ójÊa±$sìdÈQs$ÇùH#H†®óпuw»ÑÖÖ–,óªÃܹs‡½Wtuu¡¯¯ýý^ˆb œù©äŒ9Ü{0ºÒÖ™ö“úþ«Ëïëëƒ pÐë´0 ee4_,e%aÕoiÕ¼ê4I’`4™1}úLÔÔÔ°uJ”eôÇCè û°ºi;<.äZhô´ãª©ç`‚³�þ^¸¼ÝhìkÇÅ“ÏĶö}°›¬hêmÇ@<‚³+gテ˜Q8 Û;ö#!‹˜–_…–¾.L-ªÂ¦Öݘ’Wý½.ÔæN�ÇñØÕ}�Só+qzéh8Nzaü’cSië“§´µ$Iì\PGŸ¨9MÔrÉꈑúúzL›6•3ŽÇcà8ž%ÄU¦<iá÷ûY§ãxètZ‚�ÇI’››ËJVk4ȲÌJKëõz6µE«Õbùòå8묳`6›Ùzª9[Ô©8êû»:UˆçyÖINM<XžZéôM>»yóf,^¼�F100ÀªÏ©9HÔuV—Ëqêëë1sæLVrZÍ­G’#ò”<-ê5ƒ:ýI½~P÷…ºlQYu+£ÑÈ£æWQ?ËÔeE£Qh4ö7õR¦.O –©Aì`0ˆºº:Ìœ9“•þV§e©£}ÔêZñxF£‘-# ±¿«û_Íŧ–¹V÷‡V«…N§c õË:µýt:âñ8>þøc¼òÊË$1¹l!ù9­L+U«T©£—$ILÞDZRÓA€ÕfSr݉"�¥r¤º¯Ïa </°uVóäð¼òº7Ýt3.\ˆDBD4Áºuë±`Á™0™ÌÉϥ”šÿ&‘HÀét|ꥭ)C!ŸA0æp%œ3uÞDQD4CsK+^|ùlܲ§L©Å×^‹É“k ×뇡 Ç>#É"úZëÀ­ÿ2´±pr|0è")לxˆ¶À Ê''§ç käÁOYžC‚Ó 6ýidWŸA#$Pé. 2ÂR}Ñ úÃ4õµC”%Lt–Â’L,*J+Ë˶39úCIØ«$eI}9%ÿ… ‘}ì«Õƒ4¼�2DIÉ£áè-²´è½’Àã“À÷pÁ˜Ô A¦À†”E ‘x=ý~4¹½hì g †„žã¥oÑ¢&Û„ Nd™Ðj<—,!Îû9¦V#;p ² ”—O`ÓR‰Dàr¹‹Å0qâDö égÑÁ ‡#c Ƥ–žM$ðù|ðù|J‡‡S:>‰xñx ñDñx‰D<Yñ#ý¶,KÐŒ˜2eÛ™ÚM‚Œ˜”€76�_4„ƒýèP‘]ˆ<³ƒ%Á–d ’,³’æj^Y–Xe-õ> Ê}<¸´«p.íJ}ð<3jt0 zXýaK¦S0†‚1cÝVõß`0ÈFUŒe9jàD}š`@Zr}åý;0ê×T߯SËmæºM BD£Ñaï‘#½†º êûÍfc¯§_Ô÷üÔm>žƒA„B¡´òÖ£]ÏÔÀ†(ŠiÓÚÆâí·ßÂk¯½6æçÇã16ºSŽÍ— W_}5.½ô2Äb1øý~8Ù~ÄsD¯×~êÁI!ãH:røÇqÃ2<ÏÃh0`ÒÄj|ãίaéÁƒ(--AaAAÆ0ˆkqCºKÃ> ½Y7± 8ˆà¸d­\Y ¬p¬±¥Ô†gù=”ÿ’Äl´Œò8Iæ‘e,=äúñà`âuàôVXµFZœÉa¼©Lj·oh7Pθ])+’!„4øúÇà haäµÉdªã{¼¥ŽJ9Tg>Ó/õ>F€E#À¬ÏAyAI‰8DQJþ]FœŠ”ÒbêbÇûã8:S¦L9äcŒF#&Mšô™wø2ú9ü¹—ú\uˆ~NNìv;B¡"ae´$‰É ‡IR‚!²”žØWN µZ-œÎœCv.xpÐó8tfœF HŽãa´Ðóàé͘|*祚%??‹å¨ò;ét:–WÅãñ ¶¶Z­áp˜%ìµÙliÏQs{ŒF"‘`e¢Õ©:‡ÒÚÚ ³ÙŒœœ‚Àª)JOO Ëç"Ë2ü~ÚzöõõaÏž=ày“&Õ`` „ÒÒ’ñ›"}ûË`0°ÑF---‡ü¼H Ĩùpü~?¼^/ Ò*n¥>VÅ3ÒûéG}tT`pšU4ƒÑ¨9êã>ãÕW_…ÅbÁ”)S“× rÆí‹F£ÐëuãÒfŒ!„ñíN±é6£ éœp<rrœp8ì웋‘¦%fI— îÇ‘!<¬ÎBhÏü$1öÝö!ûlò 7r …ç¡7ZÀ ÃGŤ†M8p0òZxMò[yyœö“˜ÔcM–¼:Ö‰ô¸ÓÐéu™F¤žÃÎ ~°#,úÏÁÁ<9ã?"æDîø ?.,ºŸÕ|ê7Ý#óòðÄÌ<ÇÅ7½8hy 4œd`ƒ1J “ûLÊYËòøÃäÓ%Š"zzzÐÚÚ A`6›‡¡ÓéP]]p8 ·Û —ËŦß�JÞ·ÛP(„’’ôôô Âh4B£ÑÀãñÀét¢²²ñx@<‡Á`ÀêÕ«1wî\ˆ¢ˆŽŽ8p�ÍÍ̓(((€ÍfCKK %T"‘ÀþýûÙt¡”••ÁëíG,‡ÙlF4E0D<G4EGGôz= ÑÙÙ‰¼¼<´¶¶Âb± ¨¨MMMhkkÃŒ3àt:±uëV8Ðh4(,,B0@ €ÕªŒPƒƒ())ÁöíÛaµZQVVǃ¢¢¢´àBmm-A€ßïÇþý èîîBqq1¢Ñ(úûûa³ÙØtƒA­V‡¾¾>ȲŒòòr477C–eÌž=’$aûöí0 ,‘rMM ÚÚÚ——Ç’ÙF˜Íf–ø·¬¬ ===hiiIV¯ÔÁívÃd2a×®]())$I(//GOOT*ì©Õ´�ôz=l6\. PRRªatwwC’$¸\.äææ¢««KIˆ>y2DQD]]ÊÊÊÐÜÜ ­V‹’’|òÉ'p:p8xì±GÙ1g³ÙÇáó)Õÿ”s4Uù’$9ù%‹’ãÆçóAX,fÄã1ø|>èt:ð¼€`0€DBD^^^ò=]F,¦$gV÷™2MIL™Ò‡$‰x衇p÷ÝßÓéDcc#A@yy9êêê`µZQZZŠ;v ›LÁB9I:ü¢(‚ç¹1wæ”ù¯šŒC|©ƒ86‰DbXàC¹ˆËÜ´:˜4ÚŒÓ*Ž:БP8d{r�/+ÉDÇu:ƒú9µk=¾£b‰ú®°Ôê9C;ô‡1&)¸BçÙ訡¡Ç³š;a´ûX=·R§BŒõüMûñÉÑk¼ püçc„Š(&èØ>‰‚1‘HØ»w¦NŠ &Àãñ   �Ñh íííhiiÁ¼yóÐÓÓƒ²²28p�<Ï£µµííí0 p8hllDCCœN'8ŽÃ„ X'­V —ËQL 77€’dV™¢†ÉdBOO6lØ€D"¾¾>Lš4 ñxÝÝÝÈÍÍÅÆa2™ÐÑÑììläææbçΈF£˜<y2B¡V®\ �èííÅÒ¥K‡±iÓ&x<„ÃaœrÊt‚†åŠ€;v`Ò¤Iƒ(--ÅöíÛàp8`6›±oß>øý~Ì™3‡U0êííÁÀ@W^ye29x‚ÎP§þ8ôõõçydeeaÕªU˜:u*ÚÚÚÐÙÙ »ÝŽÚÚZtvvaïÞ½˜;w.ZZZ ÑÚÚŠÎÎNÔÔÔ��6n܈yóæÁãñ ²²íííƒ8xð ššš0qâD‚€;vÀçóaΜ9ˆD"())ËåÂþýûqúé§cÏž=èìì„Ùl†ßïƒNWɦw¶´´ÀáP¦X~ðÁ¨¬¬ÄÔ©SáõzáõzÑØØˆììl6’0Ãív#cõêÕ˜?>¶lÙ‚¾¾>ØlYÈÉÉÕj…Åbßïg¯×‹õë×ãÊ+¯ÄsÏ= ·ÛÍrß VB @Eäåå"‹A Ê´^Éñ•“ã„ÇӇÿßìl|>?�===(..F,‡Ï× «Õ Çœg2Ï I"¢Ñ(<ž^89É@Ÿ2µ­¯¯ƒ<ÏÃëõâ7ÞÀ\€uëÖ¡¼¼‰DÛ·oÇÂ… ±}ûöQ¢` !„œÁ¥Ó¨N8šuQp!eÞ{êÔ�ˆÅbÐj5#NwÉÔa<™Ñ?ø³)fÄ%;«²,§WUâ>ý¶ŠD¢à¸ÁÜj)äH$Â. FŸÏåðI¦É‘„éÒχD"Y–ÓrpQTJŽ67ÉÐÑNG[­i”Gejš<¾gØgñž­tšbG”ðßÁ˜ƒ²Ž¨F£Óédt`°Z£Ýn‡$IÈÎÎÆÞ½{Ç‘——·Û ­V˧‹µµµp8ÉʈKðk0`4š•••¬¾£ä_1™LÈÉÉA?¬V+rssaµ*#9ÔÒYYY(//G~~>ìv{2‡ƒQÖšÍf”””àÔSOeU™¢Ñ( `2™Àó<úûûÓŽa­V ‡ÃN»ÝŽÖÖ¶RÙJ’N‡É“kYe¢H$‚ÎÎNÁd2A¯×£µµ.—+YÁÈ‚ââb|ôÑGhkkƒÉdJNmÑ#;;;™`])Ìqôz=jjj0eʘL&„B!ð<ϦpåææbÇŽðûý(**Âþýûa·ÛÙg›ÑhDWW-ZN‡²²2¼÷Þ{˜>}:¦L™‡ÃŽººz6‚PÉÛ$Àb±°¾<Ï'¥M ÑÑÑ‚‚‚ÀJT˲Œ’’´¶¶B–eÔÔÔ //yyy��“ÉÄÚFÍ·£ávíÚƒÁÀrð)ïkÊÔ`e_ë!Š:;»X’a¥ ¹:šU=Ž¥d?1YJ§T¦L¶ ³öäy!Öjûó<£Ñ¯×—6-iÏžzÌŸ?%%%˜1cŠŠŠP__¬¬,ôôôÀf³[BJàK!#KßL¹^R—Ç!Š ètºdÉBºðý¬ÛX©Æ‡6™tRmCQ“£-´¬¼d¦NÌÉÖ1;žƒfñx¡P˜u0Ô6E1Y}B€!YòrXÏšŒÛ%¥,‰Dáp” O+I¯ 4vÝqðVu9’ |”À÷ø“H$àv»á÷ûFát:‘Í:õ²,Ããñ  ¡¨¨±XŒ`Q;í:---l”Mmm-b±²²²›«Œlhoo‡(аÛíðù|(//‡F£A"‘@GG"‘ŠŠŠFÁó<z{{a4Q\\ŒD"¯× ³Ù ¯×‹H$‚ìl'dY‚Á`@ww7 èªe£ûúú`0`·ÛÙ¨•®®.–Sª­­ ’$¡  �YYYhll‚Ó™ Qa4áóùX#ƒA€c_Ädee¡··z½ž£DQDII ´Z-|>:::  ‰Dب!£ÑÈ*ºY,Vää8 …ÐÔÔ„H$¿ß¹sçÂï÷ƒçy6£±±EEEˆÇã°ÙlèëëG8‚(*¹° Áqººº‹ÅÑÞÞ†%K–€ã8ô÷÷£··’$Áb±°àF£A @vv6’›› I’pðàAV1*£¬¬ ¡PV«999$‰UÇ’e:Á`z½ž9Ô©[~¿Ÿ­›F£ANNš››±oß>üãË’çQ69+p8ªf‰b±Xœ}±ÕßßÏFð‚�·Û ›ÍƉ &bV§Rõ÷÷¡´´ñxv»Uæ’e%ࣔ¾V¾¬AÄ .¹äÌŸkÓŽŽäçç#°’áv»ª)BȉŒMnõbOþª”-T¿¦ãøveHR²"Kò¢N«Õ±oÕÔ¶RJBÆÀót:mZ.™ñøÂœb1HVæl+¥-Òƒc©Á3µ«¡ój¼Ï-¥%²o+×V:&¥“KíõéÉ«ïq¢˜€ hÙ” ÆœÜÕ”2]ë�çÿ566¢µµUUU(((8ê©j©ÔÑ+C§,éñ’ú…ÈX³Ô Lc9f†N/Võõõaûö((ÈGuuõ¨ö_je§ÔvÙ´i¦L™ÂrÇŒô¼Ôý˜)H××ׇ]»v¡´´•••«×©ê¨‘öy¦õøÍoÀîÝ»è9¢(" ²QB¢(" ±Q3#m‡^¯ƒN§g£³ŽÔ´iÓpÏ=?<äct: US"„“ãx°ÄcêðØh4–ü• S?äSl(ëŒp’ß Ã.¦xžgÓ(Ôoó•䱩mEöiwð‡9sÐjui†&wU‡¿+%S/P©>ýó‹cç0X #Sç*µ­b1åÚV}$ãÕVƒÓ”÷@ MSúœŠÇãèëëCA²2£ªªª •••GèH¥ŒB±€‚$I‡ÃìG-%}¸RÔ©×U±X ‘Hf³yLå¹Õ ‰:úæHAáp89Òføó³²²0oÞ\–«d4�4 ŒF#ËßRZZŠÓO?µC¦¹²,# ±@·ÓéöšyyyX¼xñ!Û4‘H ®®UUUÈÊÊÊø÷h4ü—°ˆ�� �IDAT ‹Å2ìommm—©XR+k¥~dee±Qzj%CI’2cÔí8Z#­ëx£` !„| ºC?,Sïãy>ùͽV~Uý„|ºm£þ«v3uSsǨAõ[Sj§ñ¥¶OjŽ˜¡’êmu޼ÚNò8V™"ÃÏ«Lüƒ¥Å5ÉÄ‹2µÕqÐV„9y$ ôôô «« EEEhmmEII t:+al±XÐÙÙ @†N§Ç››‹ÒÒRôöö"‘H ¤¤DEEËESUU…P(„îînLŸ>åèˆF£èîîFGG›r’››‹ööv–û¤®®]t:::`4¡×ëáñxÐÕÕ…SN9…u’ãñ8ªªª`4 ™¸~¿•••ðz½p»Ý())A__ ÑÔÔ„ÜÜ\deeaÿþý¨¬¬d9@Z[[Q^^Žx<—Ë…¢¢"Øív8p�^¯µµµ0 p»ÝhmmEuu5ÚÛÛ‰DŸŸ§Ó‰ææf äå塽½ÇÁn·cÿþýhooǼyó`6›áp8ÐÛÛ ³ÙŒõë×£ªªŠå´Q×)‹¡±ñ�4- ØòÔQ)jΖÎÎNhµZ´´4£¨¨F£‚ ÀëõB§Ó¡µµ555°X,¨¯¯Gss3òóóa³Ùàt:a±XÐÜÜŒììl6ºiÍš5Ðét(//‡^¯Gss3ìv; :::‡ñŸÿüW]uöíÛ‡ÜÜ\8´´´Àjµ¢¹¹ñx‹-B0D[[ àõzár¹ ×ëÑßß­V«ÕƦùý~ zøý 6zRÃqü~2±6›~¿F£§\‡…Ã!X,Ödp/Š ÞƒA˜LÆd^9f³ Z­’$&BR27IRFh644 ‰ ¢¢&“ Á`ûöíC^^Ë­CÁB90™1©A˜ÔaºjYjê„|&-6ªŠVCK†óŸ“Ê*Çc�-Óy6RG_ Êй5þít¸Ñ©í§¶‘z^¥·•:}óPÓ87ÅspZâÑ-gè²Æöž“²Æø£Ù'Ç®­È‰I šFìÙ³f³Ë—/Çœ9s Ë2<ƒÁ�N‡X,QY5ž††ìÚµ ,@cc#:;;‘““ƒU«V¡ªª hjjb#8Ôœ$jÙåÖÖVäççcÏž=ðz½˜9s&�€•¥÷ù|èïïǺuë°xñâäHÆ8‚èììB$Ann.B¡ ÆD£Qlß¾………èééA}}=JKK±iÓ&`Ó¦Mp8زe æÌ™—Ë…šš$ ôöö�>üðCdgg£¢¢[¶lA(©§žŠŽŽÄb1„Ãa477#776lÀÁƒ1þ|´¶¶B’¤dõ¡&œ}ö"tvv²’Ùjyïx<Ž––477c„ ,Ÿ‹ÉdbU{<ˆéÓ§Ãív#Âçó±¼7‡ýýý¬]‹Å Óé°|ùrTWWcâĉضmKÌ\WWÇ*-Y,öeÄŠ+0oÞ<´··cË–-¸æšk Õjñï¿«®ºk×®Euu5|>V¬XsÏ=¡PˆiþóŸÿ`Ö¬Yhhh€ p8èììDAAÚÚÚÀó<úúúÐÚêBqq1Ö¬YŸÏ‡ìl¼^/œÎl6rH”ÄÁÝÝnV‰)@aaQÚû‘ÍfCss3òòòÐÝíFv¶Áà��6› &“|éíõ ++ ‘Háp<Ï! ¢·×ƒ’’’d>‰„È‚\Á`�^¯/Y:<ˆ>ú¥¥¥p80hjj‚F£Á …(C!'bgdh'q¤cêZº >1Ú—Úé³Ùï©çÊHsÏ3U¶}U%r,ƒf‡ ČԖì$äØÐétÉò¿Vº8PJ «÷éõzFD"”——³D¼j’Ù;w¢»Û FÃ* Àï÷Ãn·ÃãñÀëõ";;›HÌÉÉÓé„Ífƒ×ëE0„Ûí†ÓédÓuÜn7Ün7:;;Y5#QTòLdee±õSÞ#8$ Fäçç³*m999عs'L&z{{1qb5ÚÚÚ‰DPXXN‡x<Žžžx<ô÷÷£¼¼f³Z­–å)±X,ÉJ}˜L&–äXI4Î!¢½½½½½p¹Z100À’˪Ɏ­V+&L˜€?üûöíÃìÙ³ÇaµZÙ!³ÙŒH$�ðz½hooG4…Á`@QQ¬V+¢Ñ(Š‹‹±k×.–V-¥íp8H$°gÏTUUcÏžzð<Ϧ—iµZF˜ÍfLŸ>ëÖ­ƒÛí†ÏçcA�lTH_Ÿn· @�999ày¹¹¹p:0™LðûýhkkƒÕjE @II , Ìf3zzz�(SÜ,3«¥|ð<“IÙ^uʨ­H$ 5oŸÒÆdyð /F‡Ã¿ß5·ÇqˆD¢¬˜,ƒ%‡dD"á´Ü~f³RAI%pœÌS5³ÙŒp8 Y– ‡Y�K-ë­Ÿ0ÉH™Š—À7ÓÌ } ÷ýä_¡ùÚ„ÚQHF”HˆˆÇàÌ68.ó—ÔNÇÐàÌЄsôóÙýÉq@eNþhK!ÓÏñw. ¶Œeäxûœ”0ðRZ­’ëAõ©Ž><QÚvð³^†()Ÿõ¢$Co²A«Ó³<;'Êû¦ÝnG^^ZZZ0cÆ äææ¢··EEE˜0azzzX@¢¤¤ÙÙÙ°X,°Z­(--…N§Ãĉ0mÚ46ªeÊ”)0 ‡Ãp:p»Ý°Ûí†åoÉÊÊBii)+÷\]]P(„ &°²Ôåååe99Ê#‡UR+?)£7ªØ(ºþþ~TTT°)5gœq8ŽCuu5:::P^^Ž¢¢"èt:dee±²É<Ï£¤¤ÅÅÅlJÎ)§œ‚ææfØl6Âf³!£¹¹S§NEcc#xžGEEJKK ‘ŸŸÚÚZH’„¼¼< †d�ÀŒŽŽ̘1ƒ•ŠV«8 x½^TVVÂd2±`ÐäÉ“Q]]D£QäååÁjµB¯×#''6› åå僘:u*jjjÐÖÖ†©S§Àn·c``�•••°Ùl°Z­ƒp:p8²Ȩªª‚$I(/Ÿ€‚‚ð<åË—#//sçÎEYY¢Ñ(ªªª››Ë‚-ÇaÁ‚ˆD"(--ÅÔ©SÑÕÕ£ÑȦYÙívhµJµ$§Ó ½^5kVÃd2ã”ÒæêûA4ªTCr:ˆÅb0M0ô0™LÅDÚTIŽã`2™`0 …`2™’”4 ,k29¸€èõzV€Áb±B«ÕÂbQFÏhµ:6½I Äh44-l6+n¼ñ&˜Íf”––&«û)Õ¨jkk‘••…'žøóS�"Pó¦&ì•3ü�cxP5%BÁXJ[B!Ÿ@ US:^·EEV‘G-K¬ŽöPsލù2¦NŠÜÜÜaÓ¨e$C,ƒÁ`` sõz=K‡0a„´é†Cóá©ËSG9dª`”ZÍPMÄÞÓÓƒªª*¶îê” õïF£‘UK$Ðét,Ç›À‰Çãlh4š´©‘jU7µrúXN‡•+WböìÙ°ÛíiLJN§ce·Õ$ÿjÝ]»vaúôéÈÊÊJË£¾¾šØ\]uôEj%µh@j Zͯ¢ÕjÇ(ÁmuZ­6ùZ Ȳ½^DB„(&Øö¨ûúoû.¿ü2ØlYim¡î�ì5RÛ&µýÔ\S¢(²|/±X ·ß~8N­ÚÆ¥ÊqÅC•X†úe&Ç) ߯½öZ,X°�v»ýÇ·×ëÅǯƫ¯¾ŠX,ÆÖOI�¯NAçÓF^ª%­•ûÕÇñøë_ŸbÛ­îDQ„V«ÇF£J[BÈÉŒM)lB!„‚1Œë6 vTÓ§¦þ®^ë¤VD“eiX»¥ FcèkeZ7ššxr¹ùæ›Æô¼n¸—^ú…#zΛo¾‰—_~å¨Ö÷ùç_8äß©´5!„œ€§™r". !„Bȱ¸QF®ÄÁóJ.‘h4 Aب–x<I’`0 ñüW^y%ŒF#xžG8†^¯g9St:]Z5#5GŒ: Ej¤æsQ+F`ù`Ô¼&J"Õ \.f̘‘±|1ù|Y¸ð,�À½÷þ”%|ɤIqÿý÷cáÂ…GŒ9P0†Bƒã†ç6P¾íËôØá¹a¨š !„“óó19šbHîú¾á³#Š"º»Ý8x° ’$¡  �ýýýÈÉÉAee%Âá0êêêà÷û±páÂdRÕ¡Óéàt:ÑÔÔ½^üü|´··³ MSSB¡rsóÐÝÝŦÅãqäææ" "‘H@¯×#//‹.— ^¯‚ '''YR[™ž’:…‰|~©S“ðÊ+/³û»ººðíoßöØýû•`Ãá8)¶Æ†BÈ!.23ݧ»–¥#K&J!„œLŸ‘²$9¡3ùtH’§mmmØ´i|>«$Ë2ÐÚÚŠM›6±œ²,£¸¸.— èêêÂÖ­[qðàAX,8¬^½ÙÙÙðû|ȲÙá÷àrµAD"–8w÷îÝèïïÇÀÀ�º»» ¡ÕjÑÚÚŠææfdg;غÒVd(¿ßûïÿù°@ÌɈ‚1„r˜‹Mõ_ƒšb"–,ÇG„B>X‚V1>8j”ã)s´K$Aqq1Ìf3ôz=***ÐÛÛ QY%5ɬ 0 hnn†V«EWWòóó`³Yáp8ÐÝÝÝ»wÃjµââ‹/ÆŽ;‰Fáñô¡·×½^¬¬,èõzø|>455aÒ¤Ièëëc#lìv;Ìf3«Â¤®Kww7�5Ió‡?üßþö·0uêÔ“~[iš!„†ra)'GÅpÐh„ÂÄcaƒ9Í !„Ïx,ŒD, £AÇJY~nžˆŸõÃ×]Ù®¨s§Ñ ºº¥¥¥p8p»Ý˜?>A@aa!8ŽCUUôz=$IÂyçI’PYY ½^ǃ Êa³Ù`±X`±X ÓéPTT„H$ŸÏ=õ{`³Ù0uêTää8“%…-àyÙÙÙèííeyjÔŠ5¹¹¹˜8q"B¡ éõz:‘ÓÕÕ…½{÷áá‡Á·¿ý-<üð#¨¯¯O{Ìu×]Òl/c!ä0g©ybAPÊjðöv"¯¸¼@ò !„|¾Hb>O74Â`iØ}º’ºÎjé^Aà KR²T ‚ ;;ÙÙÙ쾬¬,vÛd2¡²²2í9¥¥¥i¿Ûl¶ŒÏM½/++ Z­YY6P1›Íì1eeet’#¦NMª¯¯ÇÃ?‚[n¹?üáNÚí¥` !„ŒââŒç9È2 ÑHÐé´G¢ès·!;¯¼ £E!äsAãðt» Æ#0èuÐj5x!Ä8±GŨӒ5 b ±hF³•=…Ùl†Éh8ªIŽ^?&O®ÁÞ½ûØýõõõøá»Ýމ«¡Ó¥_kÇb144€×ë=a·‚1„rˆ‹35'ŒA™'¯“!IâÑôt4ÞS­ÎŽç“e¬€VÒz$©¯£>'Ó}êc‡.3óße¶C/8S7ô¹#=nèsµ¾#m[ʽHÚ5šçêuF{_¦ý7üqò°¶í>šCèPûåHÚîpÛp$û`ìËTÛ,½íFóÜc}LüºGßv£=¦‡·gúk–m7üœÝ~©í2ÓŸÖûÑÑî—#y?é¸ú4Žé¡ës¨cúX¿f¿ŒðÉÄÎyedˆ2J$ ÃÛÛ)¡bôz4‚†bNôD¾ƒ#ayðÈ€f«ZžÇQºM´(CŽU«VáòË/Ç}÷Ý—v¿:©ºzx �t:ª««±yóf ÆBÈÉzÁ1ôM£Ñ° M(!¡¯«¼ …$)®£Kî›ú.C bh'ax§aôÔ©¯w´ËàF±ü±¬ëH¯u,–›iýpˆí:–Ë;VûýpûàpÛp¨¿ËG¹/2µW¦õí1}¸çŒ´ßÇr¶íä1ƒÇrß~ZÇôHçްí·­£=¦G»ÏŽäýèhÎÁ#Ù·Gû^r$Ë8Úcztû›ç•©;’‡A#ð0 Ðj5Ðj´Míú¹yâb’Ÿõ‚z½ 1NŽ‚-Fk q„Œêšvô–-[Y–±hÑ¢´éuêòôz%³víÚ´çyæ™É¿íu%I¤` !„œ8h<� \²ZÇq<¯eDQ„”C%H’òC!„œð],ž§Ñ@à9èzjž^Hb¸´@̉>2FxÖM’2¢ÑúÝ­ÐmÐ-H¹(7¤C8R�òˆ×™ƒàãùü£ëˆýµS_ÿh*[rG¹ÿq ÖÿDnÿÁç'ñ1=?‘HàÅ_À‹/¾ñQ¢˜�€aËE1ybL댸íãõþEÁBÅ…™:Ä›gÓ”7nžW†1K¥Ìµ„Qþ¥²×„BNÍàèXYdŽ Äœ Õ”ÔÏvYV*€ ðH$D$bA„¢S>ãeY:Ä”°ôÎj¦)cCŸÇºæ–3tJñHÇáS ¹dÐhä)µ™–;tÙGò÷ÃmÓ‘þ{¸åŽô÷‘¦FŽôÜ#Y×c±N‡k¿¡÷gzí‘þžiêâ¡Ö}´ë5ÒóâÑðˆcH7#ü] Ó0îÜô`L<†H4‚x4”1<–iœnêkú=í#¶/ÇÏ”D ÆBÈ^¤©A Ìð<Ï‚/ê$K#^¸B!'Ògutè`à%5?Œú·=™ëÐ`’º !Q!ŠDlô«,SB�@ø”Îÿ††ý˜8q CÚý‘H ûÇüº:ÍÈç.Ï ã²Ï(C!c¸PSo«ÁŽã¡Æ]Rƒ2„Bȉþ¹7RâDÎs¸ÏùÁ‘°$IÇi!H$AJûÒ…¢4ŸN�#ðcëÖÍÇüuM&ãÈï42†BŽï µÔÛéŽ1„BNXJõ¤áŸ{#ý{²Ö+Ó±$ð<YÒ¾p¡Ï{Bü VmL«Ñâü§` !„÷iCçÏfš7L!„œèŸw#}®}^2êH™ÔÏ~ Ä’r¾ð'Ö{æP#j(C!'Ö…Úh.LéÂBȉòÙ6R"ÑÃ}Ö¬ûäP‰n ù¼’tbœ<¯$ ù„§` !„œp®Çêq„Bȉôùv2o?x%äð²¬6x}¾f]yNSikB9±®D !„r<£Ï­Ìûö !Õ–Áë÷0ëz<c¨!„|Šo©?„B!„œŒ¦L®¡u=BŒ!„B!„BȘ>g­ë¢` !„B!„BƬ° gÎ;ý¸_Ï3çŽÂ‚üãb](C!„B!„£råeKÁsÇoˆçx\yÙÒãg}è!„B!„BÈÑ(,ÈÇm·ÞpÜ®ßm·ÞpÜŒŠ(C!„B!„c`ñ¢¸ö‹—wëuí/ÇâE Ž«u¢ÒÖ„B!„B9&.»äBX­üíÙ— ÉÒgº.<Çã¶[o8î1�c!„B!„r -^´�µ5ñÏ7ßÁÚ ›>“u8sÞé¸ò²¥ÇÕÔ¤TÜ(îçR~Woó)ÿª?BòG“üÑаˡž øŒ#b„B!„B_]ÝØ´yê÷­~à˜˜á96›¥%E˜2¹§Ï™5ö ǃ3åÎàHþˆÉ)åGNùWN.%õ6†ÜV^f¤—r›‚1„B!„B9¹S0†øB!„B!„Œ# ÆB!„B!„Œ# ÆB!„B!„Œ# ÆB!„B!„Œ# ÆB!„B!„Œ# ÆB!„B!„Œ# ÆB!„B!„Œ#Íx¼ˆ«­’(ÒÞ&„B!„BÈq‹„qyq Æ”O¡%„B!„BMS"„B!„BWŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!„B!„BGŒ!ǽ¾¾>ìÚµ¢(ÒÎ ä$ÑÚÚŠ††´N„B!äsIC»€Œ‡+®¸ ]i÷ ‚€œ'JKKqÁçaÉ’sa4Ósð`3n¿ý …púésðè£ÓÎ<ÎÝ|ó—ÑÐÐ��¸êª/â{ß»›vÊçP[[®ºê:öûc=ŒÓN›�xç÷ð‹_ü ²,ãk_û|éK·|æë{<®!„B9yÑÈò™EÝÝnlÞ¼¿üå¸å–ÛÐØØ”ö˜;v  �6oÞJ£c9 lܸ²,'oo·×]¶ìxê©¿á©§þ6ìu?«u"„B!ŸOŒ!Ÿ ‹Å ½^ŸvŸËåÂw~===ì¾Å‹ÏÁôéÓ`2™ðÕ¯ÞAhçr‚»îºkQXXˆìln¹å¦q{Ý×^K Æ|r\¬!„Bù|¢iJdÜ]{í5¸ûîo�z{{ñÆoá™gž…(ŠðûxðÁßã·¿}��`³Ùð׿>A;“È”)µø×¿^§u"„B!Ÿ[Œ!Ÿ©œœ|å+·�žzêo�€5kÖ¡§§¹¹¹xë­·ñ«_ý†=~íÚUltÌæÍ[ðúëËPWW¯×ƒAÊÊJ\pÁy¸üòˆ¢9x°/½ô 6oÞǃAéӧᦛnĬY3‡­ÛÆ›°lÙ?°gÏ^øýdg;0{ö,\ýu˜8±€’gâç?ÿ%{ÎsÏ=ƒI“&²ß—-û~÷»‡��<Ïãí·ÿ§Ó I’ðÆoâwÞGkk b±8JJJ°xñÙ¸þúka2™Ø2.½ô ¸ÝÊh¡{îù¢Ñ(ž{îôõõããÿN—qß~òÉf¼öÚ먫«G DNN&Ož„«¯¾ ³gÏbKÝÇUUUx晿âÉ'ŸÆÊ•+áõúP]]¯~õ6Ì›77mù.— O<ñ$>ùd3  œï~wôùaî»ï~¼ÿþ �À-·Ü„‹/¾=ô0¶o߉ìln¿ý˸䒥èììÄŸþô6nÜ„DBÄŒÓq÷ÝßBYY[–$Ixë­·ñÞ{ËÑØØˆDBDAAA²½®AiiiÆ×½úê«póÍ7à‘GÃæÍ[ Š"fÍš‰o~ó®´ç¨ÛûÜs/bóæÍðxú`µZPVV†K/ýÎ;ï\h4éo§[¶lÅSOý {÷îƒÁ Çe—]Н|å6,Xp6{Ìÿýß½¸è¢ Øïë×oÀë¯/ÃÞ½ûX›Í{:n¹åFvŸŽ¶ÍS÷Á¼y§ã?ø|ð÷غu;ŒFæÍ›‹;ï¼ùùùÃÿý߯¡¶v2yäq´´´ÀéÌÆœÛoÿòˆÇãHmÊ)Óñä“fóûýxùåWñßÿ~Œ®.%ÏTEE¾øÅ+pÑE€çù#ÞæU«>Æ=÷ü8íy/½ô2^zée|éK·àk_ûŸÃ®Ó+¯¼†>Z…îîn’’R\tÑù¸òÊ+ÒÚ>u?ýú׿@NNüOhh8�ƒAÅ‹ãÿ÷Ž´s\’$üûßï°ã7 Ãf³bÊ”Z|ñ‹WbþüyôaA!„BÁB޽+®¸ O?ý dY†$IX¿~.½ô #>þ7ÞÄ<˜v_0˜Àλ°sç.¬_¿>øp�øøãÕ¸÷ÞûFÙãc±Ö®]µk×ãÆoÀ7¾ñ¿ìoO<ñ$þþ÷çÒ–ßÕÕwß}+W~ˆŸüäG¸ðÂóqÎ9‹ðàƒ¿G$�¬^½&-³ví:vû´ÓN…ÓéD,Ãw¿û}|òÉ–´å766¢±±Ë—¯ÄO<ŽìììaÛ½iÓ'øè£U‡ÝŸ/¼ð"üÏi÷uvv¢³³}´ _þò­lÝ1ä�� �IDAT¸ãޝ{^<Çüï¾û>»¯®®ßùÎ÷ñÈ#` XÛÚÚpûíÿ¿?À·bÅhkëS^ŸÎÎN|ýë߀ÇÓ—ü½ ¿üå°ÙlxðÁߣ§§7%`±ûö}/¿ü²²² Iî¹çGX½zmÚ2›››ÑÜÜŒ·ßþ7~ó›_áŒ3æ{Ý`0€o~ó;hnnf÷­^½»w×áÅŸcm°mÛvÜ}÷÷X;€ÇÓ§Û¶mÇ¿ÿý}ô!�\½z î¹çÇ$ �‡ñ÷¿?¯×7â>ÈtÌuvvâ7ÞÄŠ+ñÐC¿ÃŒ§ó6÷ûƒ¸óλÐÝí�D£Q¼ÿþ |òÉfüýïO#77wØsvïÞ¿ü寬­»ººñì³Ïc×®ÝxüñG†LFËåráßø6ºººÓ¯G}}=Þzëm<öØÃ,à3Öm>mmmøÆ7¾=,ùž={°gϬXñ}ô¡´àŠjß¾ý¸ÿþ_"�B¡–-ûšššðÇ?>ÊÞŸî»ï~¬XñAÚsûúú±fÍ:¬Y³wÝu'nºéFú  „B9‰PÎr\p:ÈÎv¤>F"IþøÇÁØôéÓpÏ=ßÃW¾rë¤)¥sîv»ñ³Ÿýœb,3Î;ï\TWW³e¼øâKرcgò¹kÓ:Å%%%8ÿü%p8ì,`ñë_ÿ.— &“ gu&{ìš5ƒÁ—H$‚-[¶±ß/¼ðB�À“O>Í1ƒ×\s5®¹æj8JÇ¿µµ¿ÿýC·ý£VA£Ñ`òäÉi#C†vFÿô§¿°ßÏ>{!¾ùͯã´ÓNe÷ýýïÏ¡³³3cÇsùò•˜5k&&Mš”¶ÏŸ~úöûþðpZ ¦²²óçÏÅþýûÑÔÔtÄí¿rå‡èï÷"??Ý'Ë2~ðƒ¡§§¹¹9i#.úúú±bÅJ�Àòå+Y F«ÕâꫯÂ]w݉’’Ö^>ø‡Œ¯»|ùJ¸ÝnÌ›w: Gô÷{±lÙ?Ùzüâ¿f˜ššÜu×iÁÂ-[¶âý÷—§´Ô@ �Ìš5Ó§OÃo¼™q=Ö­[ŸvÌwÞ¹¸õÖ›Ù1 …ðÓŸÞ‡X,vÌÛ¼¾¾ñx×^{ æÍ;=-Ø”zž¥úøã5¨¬¬Äõ×_‡ÊÊJvÿÖ­Ûðï¿3æ÷Ÿþô~vîó<³Î:3mvìØ‰_|ùˆ·¹¬¬ 7ß<<ÌÍ7ß”qT\ª{ïý Ĩë”:Êh÷î:<ôУŸûÜs/ÀjµàŒ3æÁl6¥í§-[¶²€Mj æÂ ÏÇO~òC,]zqJ î¯ðù|ôAA!„r¡‘1ä¸a2™ÙÈŸÏ?âãÓ:®W\q9�`Ú´©‡Ã(++Ci©Ò÷Ý÷10 Tdýë_PQQI’pûíw`Ïž=àyë×oÀŒ§àÕW_cË...ÆóÏ?£ÑˆÎÎ.\ýMˆD"ˆF£øç?ßÄ·¾u.¸à|¬\ù!�`ïÞ½èííENN6mú„už -: Ñhÿú׿Øò¿ÿýïbéÒ‹�(£ƒ®¿þ&tñûý°ÙliÛn³YñÇ?>ƦIeb³ÙðÇ?>Š®®nD"a¶o–,9—^z% 0ìÛ·………Ã]?üá÷qùå—�~ô£Ÿ°‘8õõ{’mãÆ ƒÕfÎ:ëLüö·€ã8¬_¿wßý½#n{N‡gŸý**ʇv¸óÎ;pë­7Ãårᦛ¾Ä‚jÍÍ­�€9sfãÑGBww7ìv;Î:kA2À—ƒŸýìç¬ãžir‡§Ÿ~å‡Ã¸þú›X0 ¾¾ží«Ÿÿü>tuuÃíîÆÒ¥Ãjµ² L{{{²SÝ€¥K‘œ×7lýà±Çþ„_|iØö¿òÊ«ìöÒ¥ãÞ{•)5_þò­¸îºÑÕÕîn76nÜĶïXµ¹ øóŸÿˆ ”àÞ=÷ü«V­�ü÷¿#K¶]ZZЧžzz½áp×^{›š³|ùÊCŽjÉλ°gÏöû~ð]v>òÈãxùåW�(Ó¿üå[h›Ï>{¾þõ¯aÕªÑÚª77Üp=¾þõ¯y~÷»‡°lÙ?��ï¿¿wÝu'²²²Òž_\\ŒgŸ}&“ 4âæ›¿Ä*6Õ×ïÁœ9§²©Xª›nºÕÕUøÂ.ÁìÙ³í@YY);æ!„Bc9¦B¡vÛnÏñqV«&L@KK �àx¯¿þOLž< 55“0wî\TUU¦t¨v²ÛUUU¨¨( |Ëý³ŸÝ‹X,޲²R6òb×®º”@ÃF�@aa¦OŸÊFµìܹ �0þ<ØíYðz}ek×®Ãe—]š6JfÑ¢³`2™°gÏ^€Ÿÿü—i9gRƒ"MM1s挴ûÏ;ï¼Cb�Àl6cÖ¬™ðù|عs^xáEtu¹±uë¶´ÇÅ㉌Ï_¼øvûŒ3æ³`L,C,Ck«+mÔÇÅ_̦[ÌŸ?¥¥¥p¹\GÔö•••¬]Î:무`Ì’%‹Y� ¢¢{÷îeë�¹¹¹ÈÍÍE{{;êë÷âé§ŸAggÖ¯_?d{ãÃ^·¢¢‚½®ÑhĬY3ñÞ{Ê—`p€'S¦Ô¢ºº ;wîÂûï/Ggg7ö³@Lêú8p í5¾ð…¥ìöUW]™1³sçnvûwÞÅ;ï¼›q?54ÈŒ9š6Ÿ<y2 Ä�ÀÂ…g±`L$AWWwÚßàì³±�ÑhÄi§ÍÁ;ï¼�8xðà˜ÎÿÔóT9Ö—°Û·Ür#Î=÷L˜PÆ‚G{œe–,9—Ý>ÿü%,ÇQ_¿gXn—ùóç±éKÕÕUÈÍÍaA«`P (×ÔÔ@«Õ²ãóÖ[oÃĉ1iÒDL™2i£¶!„Bc9f<úúúÙï©ÓU2¹ÿþÿÃ|/ë »\.¸\.¬\ù!üϘ3çTüêW?‡Ífƒ×ëOYnzþ‹¡S}¢ÑhZ^‚‚ôõÈÏ/`·ûû•õK– vÌÔ`̆ Øc/¼PIÒêõzG½O2¢,£zîSOý Ï?ÿbZŽœÑ2›Íƒoí°¿´ß‡vûctºÁׄôÙ“Zmê߆—6D"¸ï¾û±jÕj6ê`´L&cúbÊö¦.jÕªñÛßþ.mÄËH|¾Áýc0ÒrÿdêT=æ}L„Žy›ÛléÇTNNNÚï~¿ÿˆž“:}íH¤ž§f³)í8t8p8Çô8Ë:Y,ƒÛ——7ä±¾Ã_Z­nØñUPÿø‡xðÁß# AEìÝ»{÷îÅ[o½ žçqõÕW± t„B!„‚1„3ÿú×›¬#Íóüa«‡ÔÔL«¯¾ˆíÛw`ëÖmØ¿?vï®c¢Í›·à/y ßÿþw`·NMéîîI[NccPZZ‡Ã½^ƒÁÀ:Ç]]î´Çwww¥uU\p ÆlÛ¶ÍÍ-ìðìlN?ý4�6aÅŠw‡M9Zï½·œU¦ây—\²³gÏÂäÉ5¸îº£O:tºDggjk'³ßSG‹Œ‡ßýî!ü÷¿'ƒV\yå˜<¹±X?ýé}G½ü¶¶6Ü{ï`¾–¹sOÃ9眉'âá‡Å®]»Gì€G" °ÀB¦¼C¹ø%Î>{Ѹµy[[GÚïCÛ/Óñy¨çØlc›N“zž „Òö›ÇãAccÊÊÊŸŸŽã>õã<Ó:ƒAq»ÝC›5æ×¹è¢ °pálÜø vîÜ…}ûö¡¾~¢Ñ($I«¯¾†SN™ŽsÏ=‡>,!„B(CÈÑëëëÃo¼…gžy–Ýwæ™ó3VpQ¹Ýn|üñj¸\íèëóàÿþï^h4$ ÜqÇ×QW§L3RÉžrÊ)X·nC2øÒˆƒ›YΘ_üâ×,'ĵ×^ƒ»ïþfÚT¤5kÖâk_û* ºººÓ¦0rÊtv{úôi(..F{{; ^ye0ïÌ’%KØˆŽŠŠrFV]å£þ‹Ë.»€2áÏ~ååe¨¬¬ÄìÙ³2Ž9œM›6¥‰~üã{��ǤÍ&L(ÏólªÒ»ï¾‹sÎYŽã°víºQ9–>ùävû›ß¼ —\¢L :šD²©¶oßÁ1ùùyxä%¹²$Ièííöø¡%±×®]óÏW¦Ü|ðÁ‡_cÊ”Z6½æ¿ÿ]•ŒùóŸÿ£ÑˆªªJ̘qJÆàÈÑ´¹ËåÂÖ­Û0{ö,$‰´JZF£……Þ³zõjÜqÇW ·Û 6²¿©SÕ©kª‘’žOé•¢V®ü€ågyá…—YΘ‰'âùçŸÓ6§®ÓáÖ'Ó:}ðÁ‡lR“îjµZL™R;¦ãkß¾ýؼy3\®vØíYøö·¿ÁÞ/¿ü*¶žÊô/ ÆB!„P0†1zõÕ×ðÎ;ï ‘‡Mϰ٬øþ÷¿{ÈçK’Œ‡~ ‰„’ ÂãéÃ’%‹á÷ÒòUÔÔÔ��.¾øB<ÿü P¦�ÜqÇ8óÌ3pà@Øã-:‹eÔ`L[[n¹å6L›66ldë«Óépå•—¥­×…žÏ*¥VÍ¹è¢ Ò:·K—^ÌFÑ<øà°ÿØíYX¹òC–\´´´¯½öÒ˜ö¯Á082cëÖmøàƒÿ ‹ +›<V6› óæÎ\k֬à 7Ü‚Ü\'¶nÝ>îÇSêö¾ûîû°ÛíhkkÓO>}L–¯×ØíÞ^^}rrrðöÛÿVî�Î8CÉ )SŠ~õ«°mÛvˆ¢ˆ÷Þ{?ãk\}õU,óþû+ …P[[‹­[·²cQ,[öJÆ`ÌѶù·¾õœzê,¸\íi£\Î9gQZ+U__ÿÿ³wßq9îÿÇ_M!¡a‡Œc;Ç:¢¥BÊHdïN!3²Ò ;2’=‘ŽŽã82²)*ŠÓ‘y¬CËïtŸn­;ßNgüÞÏÇãztÏ}]Ÿu­w×õ¹è×o õêÕåÚµëŠñu2#íÐ××GMMMqÅÛŠÁ<}ú”Î;åøhD½zõÁÑ sæÌYÞ½{ÇéÓg³­§ŸRfCCÅXS‡æ÷ߟӮ][,--TÎÓÙ³¼~ýšˆˆóYÖ}»lW½©êÞ½x‚‚V*õ±† ësçN¬RÀ¨NÏdç!„Bñ"¶‹W¯^g ijjÕŠlc1|¬B…òŒë®ø/÷Å‹‘ÌŸ¿ˆààÅ p5<8ã 6åÊ•cÖ¬ŠG_¼xÉwßV ÄôîÝKñ¸Zss3¨ø.>>žƒ)Æ´ÑÒÒÂËkJ¶+ :thŸ-¯ÆÆÆJ·ð�¸» Q£†�¤¦¦²gOëÖmPbtuK2kÖôlW¨ª}û¶¨«g¬Ú&1}úL||üÐÐÐÀÐРPÚoüx¥ÛQââ∈8O5”‰]ììÚ)”OœèI`` Ô+”ù›š~IéÒ´´4- dêÔéDF^¦aÃÙÒ—,YRi|·oß²wï7ìßÿ­RÛdemmE¯^=ïúégV¯^£Ĩ©©1~üØlOB*Œ6¯S§*TàÌ™¥@Œ¡¡#Gæü´¡6m,yýú ¿ürFiŒ˜æÍ›áàñt°Ì‘3ÅÆÆ¶/ϼøøÌTŒ«“––Æ?þ¤ˆiÔ¨!öÿä2[[ÿyÅÑË—¯8rägÏžË3O¾¾³W¥¥¥qüø ¥@LÆ þ§ñ\Úµ³ÅƦâýá,Pl3Óä4p³B!„`Œ¦¡¡A¹rF4kÖ//O6o^¯ô¤¼ôèá̪U˱¶¶ÂÐÐ�MMMJ–,Aƒ pwÁºu«)S¦Œ"½¥¥7®£S§ŽT¬X---J•Ò¥eË*n Èäæ6Œ¥Kcaa†>ZZZT¨P{{;Ö¯_“GàE9�õª˜L:::¬ZµœñãÇÒ AôôJ¡¥¥E¥J•èÖ͉-[6åx’¯ª&M¾`Þ¼9Ô¯_ŸbÅŠQ¦Lilm­ \¨t•Çÿ¢J•*¬[‚­­5zz¥ÐÑÑÁÚÚŠÀÀ…Jî…Áƒ2j”ÆÆÆhiiQ¾|9ú÷ç¤B™©R¥^‰……ºº%)Q¢ŸÞ˜¥Kcbb’ão:wîÄ‚4jÔâÅ‹S¾|9zõê™íª/MÍ?/N7n ЪUKôõË¢©©‰¾~Y¬­­X½z%Ý»wûKÚ¼X1m–/Ä̬•â·Wy…dÌ7SõêÕY¶l µk×FKK‹Š+0hÐ�/^ lš={&ööv”+g„¦¦&¯^½Êseccc6oÞÀàÁ111¡xñâ+VŒ:uêàååIpð Å•:ŸRæîÝ»1v¬;ÕªUC[[›âÅ‹+®°Ë«¯oÚ´ž!C)ò¤«[’zõê1nÜ‚ƒW(ž˜ô)ÔÔÔðóóaÆŒi4mÚ=½RhhhP¶lLM¿Ä×w6>>Þ²ÃB!„øQSásµ,ï3_«gù›9i|˜4?LÚ€P&99åŒTµâÿ“ääd’’’¨R¥Šâ³‡âèØ]ñ~Íš`ÅUREÉÛÛ‡C‡¾2nÅ Y•ïoºtqR J=xð@Ü܆I# !„Bˆÿ$mm-Sà9$©¦´Sz–é}–¿™ÿyÌúš^2fŒBªwïÞ1p  ¤§§cooÇçŸ7æÝ»wìÛw@‘®bÅŠ4hP_*L!„Bˆÿ‡$#„…¨X±b8:vbÙ²@Æc§¿ûî°Rš%Jàã3+Çñc„B!„ÿ}ŒBˆBÖ·oêÕ«Ghè®^½Æ³gÏ?ŒgSž–-¿¤oß^ùT-„B!„øï’1c„B!„B!>(Š1cäy!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$Á!„B!„Bˆ"$ÁQ¤ÒÓÓißÞžV­,xóæJ¿‰Œ¼DŸ>°²²åôé3ÿêòß¾}SSs’’’þö¼ìر“îÝ{I§üyøð!îîciÓ¦-ÁÁ!…:ï &1cƬ\¿Ÿ1c£GýWÕW~yNLLÄÔÔœØØ¸¿4ÉÉÉÌ™3ví:0b„»tä¶/oß¾ÅÙ¹7ëÖmø×—+4t]»vçéÓ§ÿÊüOž<ÿ€¿»qã&:9rölÄß–¿œÖY''gBC÷i_Ú¶m;¦¦æ9N9åëïäëëÏÔ©Ód£“‡¶míøî»ÃE¶.$âÿ7M©Q”Ξ@]] *pâÄIìííòýÍÔ©Ó033cúô©Ô¬YãÎý{ñôêÕ—ÐÐT©REE(ìÝû 6lbÿþ½Ëò—. âåËWR±b…"]v‹ÍUþS|œg‡Î¸¹ £K—ÎEšýû¿åèÑcøûûP¥JeY‘>¢­­••%õë×û×—¥víÚXZZ¢««ûŸk'CC,--©\¹R¡Í³°×É¢ìK¥Kë±|ù²ÿÌþE!Ä?cD‘úþû#´jeJ‰%ùþûïó Æ$''óüùï´oß– êKŠÿ´¤¤G˜š~I£F ‹|ÙEÀø/å9)é5kÖ U+SéÄ9PWWgôè‘ÿ‰²|þyc>ÿ¼ñ²Ê•+Çäɤ/} ¡¡AíÚµdBñ×íפ DQy÷î'NœÄÌÌ 3Ξ=—ç¥ÞþþXZÚ�0vìx¥Û{§_¿AXZÚàäÔƒ7+ýöâÅH\\†aiiƒƒCgÖ­Û@zz:ß}w˜^½úàìÜ›¯¾žã²ÿøã‚ƒCprrÆÒÒ†]8qâ'Å÷ááqrræøñ8;÷ÆÒÒ†#ÜILLTšÏáôèÑKKFŽÍ£Gò¬#__¼½} Y‹½}'ºvíNDÄ9.\¸ÈÀ.XYÙ2lØ<x ô»“'fà@—õá̆ ›HOOW|ŸššÊòå«ppèL›6m X@jjªÒ<Þ¿ÏÖ­Ûprêµu;\]‡óË/§³•94tñôœªÈ³¯¯?k×®ÇÞ¾66íñõCrrr®åLLLÄÛÛ{ûN´iÓñÄÅÝUª__6nÜLûööØØ´ÇËkºRQ%MNöì £{÷^˜›·¡{÷^Švõ÷`Þ¼…"æ¬X À«W¯˜3g:tÄÚºcÆxpûö|ëåõë×Ì;Ÿ:Ò¾½=“'OáîÝ{9æé»ïcjjεk×Ù´i ¦¦æŠKªãâîâá1›öØÙ9àë;‡/^dë3sæÌ£M›¶ìرó“ÖϬ—ºgÞ*pêÔ/ ꆥ¥ ½zõ#"âœR¹íì²­w¦¦æ¼yó†ôôt†uc„IŠïãâîbaaÍ?ü˜mù=¢U+ Î;¯ølÉ’e˜ššóäÉÅg#F¸°@)ÏIII˜ššóôé3æÌ™‡©©¹Rÿ;þ<ýûV”#¿Û0òÛ¾ü„ÉXîæÍ[¹zõ¦¦æŠKÒóë7·­ƒCgüý”Ú6§Û FŒpgÙ²ùnër£J*èú¬Êöåã²ä—ïüê&¯ú‹»‹©©9W¯^SÊÃÆ›éÔÉQ±œÌí¦••-=zôaÇŽŠï2׃ѳg_Ú··Ï±ß;99³{w(Ó¦ÍÀÚº;vaûö¯•–ûüùsf̘…­mFïØ±ooŸ<o_¸té2£FQ´“Ÿß\^½zU å>yò„©S§acÓ{ûNìÙ–g¿ÿø!UúBbâoLž<›öØØ´ÇÛÛ‡/^ä¹Nªº~å&k_Ru_üý÷GéÙ³/Ö >’óç/ú-Ãyí×rÛ¿d–ÅÛÛ++[:³re0iii*ï/?vþüÚ´iËÁƒ‡>i—Ù""Î1t¨ÖôèÑGi~ª¤ù”í“*ùÊk¿põê5Å÷=zôáòå+ù¶]~}R•uI•4ªOäÕŸ“““Y´(‡ÎXXX3l؈<ûƒB‚1B|8ð=EZZ­[›Ò¼y3tuKrôè±\Ó{xŒfïÞÝ�Ìš5ƒðð}rðà!æÏ_D·nŽlÙ²7·a¬_¿‘#GŽ)|Ç›HóæMÙµëküü|عs‡ÁÖÖš•+ƒ�X½z%K–,ÈqÙ‹rèÐaÆ÷`óæ ´nmÊ´i3ùí·‡Š4?áèÑ£,^<ŸM›ÖóêÕkæÎ§øþèј3gŽŽØ°a-:udÁ‚ÅùÖÓùó¨T©";wnÇÙ¹›"83{öLvïþmmmæ+ÒŸ=§§ÖÖVlذw÷QìÞÊÒ¥Ëi/^ʘ0a<ëÖ…P¦Li¶mS>p YË–-ÛððÍÆë°²²`âDO¥×ÇŸpölóç0aÂ8ÅçÇŸøp²³Ž€�~üñG¶oß‘cùÒÒÒ3f<II˜??€5k‚ÑÔÔÄÓÓK)ÝO?ä×_Ùºuëׯá÷ß_0~üd¥9UÒduêÔ/,Y² 7·a„…íbÀ€¾LŸ>‹ÄÄD<<Fãêꂺº:ááû2d ïß¿gâDOnÞ¼…¯ïl‚ƒW`hhˆ›ÛÈl}!k½dþ.:ú6óç°jÕ ttt6Ì-Ç`‘­­5ááû¨X±;w"<|¶¶Ö<yò7·‘èêê²resçúw—±c'(¬?~‚Ò¥K³víjìí;Ú:²Ž1cÜ ÝAýúu™6moß¾Um碮άYÓ¹p!’£Gàýû÷øùÍ¥MKllÚdKoddD:u8{öœRßÖÒÒ"""#@óæÍ®^½†……™Òo ßÀðáC ߇¶¶¶âûµk×ãê:„UWÆËkz®·då·}Éi¹;ÚS¹reÂÃ÷áá1Z¥~óqÛúøxsçN 'zªÜ>ymërRþ¤êú¬êö¥ ùίnò«_“êÔ«WC‡¾WZîáÃG°··G]]ˆˆsxzzaoߞ͛70j”k×®'$d­Òo¶mûšqãÆ°~ýš\˳aÃ&Ú´iÃîÝ_3hÐ�–-[¡¥§§3a‚' X°`‹¹pá¢RÐñc÷ïßÇÝ},5jÔ $dsˆŒ¼Äòå«T^nZZcÇNà·ß’X´h>‹/äÌ™³\¹rµ@Û€üú‚—× RRRذa-ëÖ…Ÿ  •¹®“Y¿T•ß¾ø—_NãííCçÎlܸŽ.]:3oÞÂB=¾Éo¿–Óþ%Óš5ëhܸß|Š¿¿/‡&(heö—Y“'OÅÃc4þ§mÜ‚‹6Ì•ýûÃ<x�sæðÓO'UNSÐ퓪ùÊk¿”˜˜È˜1ã¨R¥2k×®fâÄq,[¶‚·oßåÚvù-W•uI•49žÈ«?¯^½–Ÿ>żysÙ½{&&&Lž<5Ï —âŸKnSEæûï¿§ukS©Û%�� �IDATJ”(@›6m8tè={öÈ1}É’%ÑÒÒúpÒc€�hÑ¢FFF�T«V•°°½\¾|…vílyòä)ïÞ½ÃÆÆš ÊS¡ByÂÂv+îñÏœ>zzz9.{Ê”I¼|ù’²eËàâ2˜Í›·rãÆM*T(¯ØùN›6UQžAƒàííÃû÷ïQSSãë¯wbooGÿþý�¨Y³?fåÊà<ë©B… têÔ€¾}û°jUÇwÀĤ:�ŽŽ]øsÇœqeH[† ¤XŽšš3gzóÕWƒÑÐÐàÛo0eÊ$lm­?¤Æ­[·HHÈ¸Âæ?þàë¯wâç7sóŒÝúsãÆMBC÷в嗊2Ïš5#Ûx Õ«WÇÕÕ€òåËcggÇ… <x`¶òihh°~}ššš/^€^½z2z´ÏŸ?§L™2�hiiáé9 �fΜ†£cw.^Œ¤yóf*§Éê×_EO¯fèèèе«#mÛÚféúJ}íÂ…‹\ºtYi|¡3¦qëV4»v…2f̨ëåâÅHnܸÉ7ß„*úЬY3èܹ+߄޽•NÖÖÖÆÀÀ�}} ôË û†%J0{ö,E,˜KçÎNœ>}FÑV&&&ŒåVè묛ÛPÅ-S£Gâ»ï­òmUªTÁÝ}Ë–ñüù3>ü-×�(€……ÇŸÀÝ}IIIüöÛoôëׇˆˆìí툈8‡¦¦&-Z4ÏøÉ¨¿²Jõ—iÚ´©XYYàé9‰Î¸u+ЦM›dËC~Û—œ—«Ünªô›œÚvÞ<®_¿IZZšâ³¼ä·­û˜ªý© ëóëׯóݾ4ßùÕÍ¥K—ó­ß.]:²zõƃ¦¦&QQÑÄÅÅ1ož¿"Ñ»w/úôé­hçDz–aÃ\y1bX¾·Ÿ988(úFÏž= ÛÇùóhÔ¨!—.]æúõë„…í¢R¥Œ±X|}gÓ¥‹SžëMXØ.Ê•+§ø¬}û¶üøãO*/7"âwîÜaïÞÝT¬XQ¥åæ$¿¾ðàÁ}ÚµHµjUX±b)ÅŠËu,ÈúU@H^ûâ-[¶ag׎ú+ö‘OŸ>Q\’›§OŸ) Ø àêꢨ‚î×>Þ¿djÚ´ ݺe´KÙ²e1€€ù îJñâÅUÚ_ܺŸq>Ü•®]ó诪µAÏžÝÛÚŽˆŒ¼Ìöí;°´´P)MA·Oªæ+¯ýRXØ>Ê–-ËŒÓPWWWKººÿäúPe]R%ÍÅ‹‘*OäÕŸýõ5kš(ê`òä $''+Ê+„`ŒÙ¼xñ‚Ó§Ï2kÖ ¥ƒËýû¿%!!ccãÍïÑ£ÇìÛ÷-qqqÄÇß'&&†ªU3kÔ0ÁÚÚ 7·Q|ùesš6mB›6m 4࢚š×®]'2ò2ññ÷ˆ½Kzz:ïÞýùß•R¥t;K�}ý²¤¦¦’’’‚¶¶6±±±téÒQi¾Íš5ÍwÙFF†J'{”*¥—åÄ]‹””?oˆŠŠÆÎ®Ò<¾ø¢1©©©ÄÄÄ¢££CJJ 7Ê–—Ì“¥{÷âyûö-'z¢«[R‘æÕ«×˜˜˜(•9§z,_ÞHé½¾~Y¢¢¢ó¬ß~8εk7¸?;wb�”.¯U«¦Ò iùòå10Ð'&&FhQ%MV¶¶6ìÞF·n=hÕÊ”¦M›Ò¦e®ùŒŠŠÂÐÐ@i g555>ÿ¼1·nÝʵ^nݺŻwïèÑ£·Òü^½zÍýû¿ªÜ£¢¢hÔ¨¡R 066æÖ­(ÅÉsÅŠåÿ’õ¶|ùòYÚT ÀƒüvïÞ;CY¸p ‹ÍÏ5� `iiÁš5ëxüø1çhÔ¨-[~Éôé38s&‚/¿l®tÕ‹*²n_2¸ó*G^ÛUÛ-¿~“SÛ–+WNé<?ÝÖ©ÚŸ ²>ÇÇ'ä»})h¾ó«Uê·]»¶qúô,,2nûkܸ‘¢##/y‰ýû÷+­Ÿ�/_¾T|–@É;€®ÜfeË–áÍ›?y50ÐWšŽŽ 6È7À°cÇN¢£osÿþ¢¢¢144Ty¹±±±*N 3—[б×òë ..ƒ ZÉÉ“§hÒä ,,Ì©W¯î'ï¿?E~ûâœö‘Í›7Ïw¾9 ૯_öÚ¯å¤N:Jï4¨Ç»wï¸ÿµk×Ri¾·oÇ0xðW”+gD¯^=ÿ§c¨Luë*·cÆõ9qâ„Êi>åXL•|åµ_Š¡Q£J‰† P¬X±O®UÖ%UÒäx"¯þܳg&Mò¤wïþ|ùe Z¶l©iK9ÑB‚1BäîøñIIIaúô™Ìœé d\² —ŽçôŸ¦Ülݺµk7àèØsssªV5fÆJ;·¹sý¹yógÏFpòä)V®\¿¿æ*-còä)ÄÄÄÒ¥Kgìíí©U«&_}5´ÀåÎ,cnïÿN9eeãÆu”.­|²¬Êè âÙ³g¸¸ ÃÐÐ�[[kÌÌZ¡¡¡Á¸q•Ò¥¦¦eûíÇãP¨’Fù@ZŸíÛ7sîÜy.\ˆdË–m¬ZÌš5ÁJQª´—ššZžå40ÐgíÚÕÙ>ÏzUÐþSåÿ=}*{~“““yóæµÒÉnnj×®E… å9þ"çÏ_ eËŒÁŒß¾}K||<çÎWº¼ÿ¯ßö¥°Ú­0¶ÝÖeÊ«xùå;¿ºQ¥ºººX[[ñý÷G03kÍÑ£Gqs–%¨­›ÛP¬­Ûäpr_ªÐž,–ÛUNymW##/1nÜD,,ÌhÖ¬)öö¸ví:,PÌ©ž {Ô»w/¬¬¬8uê‘‘—غu;½{÷däH·¿lý*¨ôôôlõ­Ê~­ øªº_ËI^û5Uç{ÿþ}ìíí8tè{Žÿ1Ç~]Ð6Èž¯Ô¥)èö©°¶½9wåÕïó[®*ë’ªi cûÛ¤ÉìÝÊ/¿œ!2ò~~s¨V­Ë—/ESSNë„ø·‘kÚD‘8|ø5dûö-lݺ‰­[7±mÛf,,̲ÝןŸððCôìé̸qc°··£Aƒú<~üç8oÞ¼áúõÔ«W—Áƒ²bÅ2ÌÌZ¶÷ÃN/ïù?þœS§N3eÊd\\ckk¾~YÅUU³f .\¸¨ôÙùó ½nëÔù,Û�u—/_ESS“š5kP­ZU´´´²-ûüù?Ç,¨ZÕ˜bÅŠ‘˜˜HÅŠÓo¿=$-­pïCŽŒ¼ÌÇ ¤wï^˜››åxwçÎ¥+‘âããùý÷Ô®]»@i²zôè ÷iÕÊw÷lÛ–1Ðñ±c?äx@T·n]?~¯¿*_ÍråÊU>ûì³\ËøÙgŸñûï/ÐÖÖVªÏ;wb t)qݺu¹zõºÒ½àOŸ>%!!Ï>«ý·®ÓÅ‹—àÕ«×JõÿñÀÒ�+VS®\yæÍ›ÃÂ…‹xøðažó577çÒ¥Ë\¼I«V­ÐÔÔäË/[ðý÷GILL¤uëVi@!¿í‹ªí–_¿É©m“’’Ø·o¿â?Þ::Åyüø‰ÒIeÖyæ·­+Šþ¤Êöåcùå;¿ºQu½ìÔ©#?ÿü çÎçõë7ØØX+¾«_¿‰‰•ÖÏ·oßñüùï…z¹¿‰‰ II”ŠMIIáÆ›¹þæØ±ãÔªU_ßÙtíêH‹Íyñâe–[«V-?~¢4høü‘çr?%Ðtõê5 pv¿/cÆŒbçÎݹ®“…±~}J\½z]é³K—.ù~-·íÓõë×?êÇWÐÑÑÁظŠÊûK++ fÍšA¿~}ñõ“瀮ª¶Áµk×>:®¸B­ZµTNSÐíSaôZµjqõê5¥«†®]»žçÕIù-W•uI•4Ÿz<ñ±¸¸»¼}û;»vL™2‰+‚¸té2ÑÑ·ådC Æ‘]RR—.]¦_¿>Ô¨a¢4 2˜û÷ïè�±zõªœ:uš«W¯G@ÀâããßߺÅСn„†î!>>ž“'æÊ•«Ô¬™q€ ¯¯ºº:çÎW4-“žžúúe ?HLL,W¯^cÊ”i>@ïÛ·GŽcãÆÍÄÆÆqðà!År Ó A8|ø›6m!&&–ãÇO°pá"ºusBOO%JàèØ…  •;vœ˜˜X‚ƒC”J”(AŸ>½X°`GŽ#66Žo¾ÙÇØ±ã‰Œ,܃ÖjÕª’žžNhèîÝËhŸ¬O‡É¤©©ÉÌ™Þܼy‹ .2mÚ,êÕ«Ç_|^ 4YíÛ÷-£FæÔ©_ˆgïÞoxþüwjÔ¨dܲñìÙs®_¿ÁÓ§OiÒä 7nÄÔ©3¸pá"ÑÑ·ñó›Ëo¿%Ò³g÷\ËØ´i4¨ÏĉS8wî<·oß!00/¯üþûï*ו““#¯_¿ÂÛÛ‡¨¨h"#/áééEíÚµó Jäæå˗ܾ}GiúÔ§‰d^ >wî<¢£osäÈ1¶lÙž-ø¶—É“'`eeI³fMñõ“ç-,Ìøá‡M€Ö­[±sç.êׯ§¸,='††F\¹r{÷â?¹æ·}Q…*ý&kÛÞºÅÅ‹‘xyÍ`ß¾ŠÛ°š5kJXØ^Žÿ‘ë×oàãã§4€r~Ûº¿º?en;òÛ¾|,¿|çW7ª®—Íš5¥L™2,Y² [[¥«ÒÈ޽߰yóVbbbùùçSŒ?‰={öêö®eË/111aÚ´™\ºt™¨¨h||ü”LΩÆÅÅñÓO'‰g÷îPÂÃà ´Ü-šS»vm¦M›Idä%nÞ¼ÅÌ™ÞèèèZÙþøã<<Ƴpáââîrõê5>BÍš5s]'ó[¿J–,©PdÞ.V²¤.·oÇäû4ÂÜôéÓ‹ððƒìܹ‹¸¸»9rŒÝ»ÃþçògÍ—*ûµ÷/™¢¢¢ YKLL,GŽcåÊ`œœº¢£££òþ2óødäÈá4lXŸÉ“§*=}ëS¶qûöà»ïÇÆ›9vì8}ûöV9MA·O…±íurrä÷ß_0{¶/ÑÑ·‰ˆ8ÇÒ¥Ayöûü–«Êº¤JšO=žøØüù ñòšÁõë7ˆ‰‰eçÎÝ/^œŠ+È ‡Œ"»£G¡££“ãÁ~ýúõ¨\¹r‚S§zRµjÜÝÇâá1##CÌÌZ){{Ïä›o¾¥ÿÁÌŸ¿;;;†Ï”QWW—qãÆ°zõF“ãAMPÐR0dˆ+þþôì錞^©•ÛÆ¦ 3fxqàÀA rQ rYØLM[àϱcÇ2Ä•¥K—ѽ{7<<F+ÒxxŒ¦[7'-ZŒ‹ËPž={žm0ÎáÇҿ_‚ƒC8p›7ocâÄq¹>‘áSÕ¬Y??öìÙË A.lß¾ƒ‘#³®÷ùçiÖ¬)ã™4i ÆÆ•Y´hžRPL•4®ºvudÑ¢@úõÄ®]{˜:u²¢o𙵦];[ÜÝDzjUêêê,^¼€:u>cÚ´ >’‡#8xeŽ·5eíC‹/ nÝ:Ìš5—¡\¹r••+ƒ”îÏ¡¡!«W¯âÅ‹ŒáΔ)^T­jLPÐ’Oº}ìÌ™ ¬4­_¿é“ÚÑÈȈٳgqåÊ5\]‡óí·ß* „Œ]ýüæÐ§OoÅ“&M :::ÏÇo7kÖ”·oßѲeK¥>þòå+Ř&¹ñðÍåËWèßP¶GÛÖöE¥« ý&kÛŽ9/¯éT¯^ÀÀ?Ÿòâæ6”æÍ›1{¶S¦xñùç•ÆÉo[÷W÷§‚l_>Væ•ïüêFÕõRMMÎ;r÷î]:wî˜m»9oÞŽ?ña;?k&M_¨Û;MMM–-[Œ¾~YÆ›ÈèÑc©_¿Mš|‘ëoºus¢Ggüüæàê:œë×o0`@¿-WCCƒÀÀ…T­Z… &ãá1ž–-¿ÌqÐêO¥««ËŠA$$$0tèpÆ›€‘‘!~¹®“ù­_zzzôêÕ“… —(côãøñãøøø}R>Û·o‹§çDvíÚÃÀCؽ;Tiÿø©²æK•ýÚÇû—¬óIJz„‹ËP–, ÄÑÑw÷Ú_fÝöøùùššªôõS·q&x°oß~ r!<ü;f̘–íö¢¼ÒtûTÛÞŠ+²lÙ>LÂÕu8óç/bôèQy¿å·\UÖ%UÒ|êñÄÇüý}¨\¹“'OaÈWâââXºt±âaË—¯ÂÉ©‡œ|ñ/¡¦ÂçjYÞg¾VÏò7sÒø0i~˜´- LrrÊ©j!„ª|}ýyóæ sçúÿOi„âï–’’¢x2`¦Q£ÆP»víB ˆ‚·Adä%FŒpçØ±ÃŠ«qþNNÎôë×gçîÿ˜ºJLLÄɩ۷o¡F “ON#þ“&yb``ø—üóOˆÿo´µµLç@ ¤~˜Ò>LéY¦÷YþfF³¾æ£×€\#„Bñ—taþüEÄÆÆÏæÍ[‰Œ¼„••…TPøî»ÃôìÙ—'~"11‘ .²térš5kú·b„ø+ܽ©é—RBüKȰÛB!„---¼½g°zu£Fæõë7T¯^_ßÙyÞª$ O»v¶<|ø•+W“˜˜ˆ®nIZµjÅèÑ#¥rÄJZZ>¤yófRBüKÈmJB!„B!„ÈmJB!„B!„ÿ1ŒB!„B!„(BŒB!„B!„(BŒÿ9oß¾ÅÙ¹7ëÖm(´y†‡ÄÎÎá1ŸäädæÌ™G»v1Âýo¯ïmÛ¶cjjžãÀ455'66î“—Qó€ŒÇaO:MV!„B!ÄßJž¦$þõf̘…††ÞÞ3ÐÖÖÆÊÊ’úõëý'Ë»ÿ·=z ªT©üÈSéÒz,_¾ì/kS!„B!„ø/‘`ŒøÏQWWÿO?²2)é5kÖ U+ÓLž444¨]»–t>!„B!„På¼Uª@''gBC÷àí탕•-Y¹2˜´´4EšÄÄD¼½}°·ïD›6mñðO\Ü]Å÷¾¾þx{û0gÎ<Ú´iËŽ;éÞ½GŽãСï155çôé3JËËwñØØ´ÇÁ¡3þþ¼xñB±Üœn155ççŸOåZ¦Âé×o––689õ`ãÆÍJe155çàÁCôìÙ—öíí³ý>.î.¦¦æ\½zMéó7Ó©“#éééJŸ'%%ajjÎæÍ[¹zõ¦¦æøû(Ê»qãfFŽ™™·oßàäÉŸ8ÐåCÙ°a“Ò|3ë4$d-ööèÚµ;ç¸pá"º`ee˰a#xðàA¡ö‡K—.3jÔllÚcg瀟ß\^½zk›œ?žþýciiC¯^ý8{6Bñ]N·€]¼‰©©9oÞ¼Qú|ÇŽØÙ9`cÓ/¯é<}úTVR!„B!„cÄÏš5ëhܸß|Š¿¿/‡&(h%�iiiŒ3ž¤¤GÌŸÀš5Áhjjâéé¥4ãÇOPºtiÖ®]½}Ö­[M“&_ТE3ÂÃ÷Ѽy³lË}òä nn#ÑÕÕeåÊ ||¼¹s'†‰=?¹,bþüEtëæÈ–-qsÆúõ9rä˜RºmÛ¾fܸ1¬_¿&Û<LLªS¯^=¾ûî°Òçß}w{{{ÔÕ•WOCCCÂÃ÷ѱ£=•+W&<|£• öövlß¾…ªU9{6OO/¬­­Ø°a-îî£Ø½;”¥K—+Í÷üù TªT‘;·ãìÜMœ™={&»w¶¶6ó ­Ü¿w÷±Ô¨QƒUÌ!2òË—¯ȳM×®]«ëBBVal\/¯éÙ-ù‰Œ¼Ä¥K— \Ì‚<xÈøñ“³¿„B!„â¯"·)‰"Ó´iºus lÙ²ŒáF@À|†w¥xñâ¬_‚¦¦&Å‹ W¯žŒíÁóçÏ)S¦Ì‡�† £F¹}¤0@CCƒ—ö %J”`öìŒqH�æÍóçúõ›JW愃CZ´h†‘‘�ÕªU%,l/—/_¡];[Eº#†åy;Q—. aüø±hjjróæ-îÝ»G—.ÙÒª««c``€¾¾úÙÊëàà@çÎï7nÜLûöm2d�5kÖ@MM™3½ùê«ÁèééP¡B:uê@ß¾}Xµ*„áÃ;`bR�GÇ.Ì˳>ž>}¦°7“«« ®®.ÙÒV©R…°°]”+WNñYûömùñÇŸ�(S¦L®m:mÚT¬¬,ðôœDçÎNܺEÓ¦MTn»÷ïßããã¶¶6�þþ³qvîÍÅ‹‘9ó„B!„¢°I0F™:uê(½oРïÞ½ãþýÔ®] 555~øá8×®Ýàþýî܉2ž”©bÅò^nTT5Tb�Ê•+§ ø=fß¾o‰‹‹#>þ>111T­ZU)M¥J•òœG»vm â—_NciiÁÁƒ‡øüóÆ8?•*Uø¨ÜÑØÙµSúì‹/“ššJLL,Mš|€‘‘¡â{uuu444(UJOñ™¶¶))©y.;§|õõËæš>--;v}›û÷¡¡a¾eÌZ/™°‚^óÙgµÈéë—%&&F‚1B!„Bˆ"!ÁQdRSS?zÿçU)Ïž=ÃÅe††ØÚZcfÖ Æ›ø?/÷ýû÷…þ›­[·±ví»`nnNÕªÆlذ±ÀËÑÕÕÅÚÚŠC‡cfÖš£G2jÔˆ]Ûd�ßÈÈKŒ7 3š5kн}®]»Î =_9µcNMû)}D!„B!>•cD‘¹~ýºÒû+W® ££ƒ±q~ùå >ä믷 ££d >[êÖ­ËÁƒ‡HOOWŒÃ’””ÄéÓg°·ï ¸-êñãÇÔ¨aáá‡èÙÓ™‘#ÿ¼eêñã§”-«_àüuêÔ‘I“¦pæÌYÞ½KÆÖÖ¦PÊ]§Îg\¾|…®]Ÿ]¾|MMMjÖ¬ñ·õƒcÇŽS«VM|}g+>ûå—3ÿó|‹/Á«W¯y÷îÅŠ˵£££INNV\“À³gÏ©]»¶¬¤B!„Bˆ"!øŠ"MHÈZbbb9rä+WãäÔªU«Jzz:¡¡{¸w/ž“'fÙ²*Í×ÐЈ;wb¹{÷^Ž·¬899òúõ+¼½}¸u+Š‹#ñòšÁ¾}ÐÖÖ¦L™2Ô¨QƒåËWqùòÎ;Ïüù •æQ²dI^¿~í[Q¤¤¤P½zUN:Íի׈# `ñññùæõãù�4kÖ”2eÊ„­­"8ô¿4h�‡aÓ¦-ÄÄÄrüø .\D·nNŠñbŠBÉ’%Œ`ÜË—/©^½*qqqüôÓIâããÙ½;”ðððµiN5j€ºº:sçÎ#:ú6GŽcË–íÙÒéèè0cÆ,n޼Ņ ñòšI½zõøâ‹Ïøþû£ôîݿП %„B!„™$#ŠÌ€ýHJz„‹ËP–, ÄÑÑw÷Œ[rjÖ¬ŸŸ{öìeÐ ¶oßÁÈ‘ÃUšoß¾½(Y²áĉ“Ù¾744dõêU¼xñ‚‘#Gãå5êÕ«øgÀÅÏo6ZZZŒíA``..C”‚"¦¦-iÔ¨!C‡ºqýú ¦Nõ¤jÕ*¸»ÅÃc<FF†˜™µÊ7¯Ï@MMÎ;’@—. ­¾MM[àϱcÇ2Ä•¥K—ѽ{7¥'0===zõêÉÂ…Kسg/ݺ9Ñ£‡3~~spuÎõë70 _Ú4'FFFÌž=‹+W®áê:œo¿ý–1cFeK×¢Esš5kЇÇx&Mš‚±qe-š§¸jêÍ›×<}ú„ääYi…B!„ 5>WËò>óµz–¿™“ƇIóä he’“SÎHUÿÿæääL¿~}pvî.•‘ƒ7sðà!víÚ.•!„B!„#mm-Sà9$©¦´Sz–é}–¿™ƒQf}ÍG¯3Fˆ¿URR11±ìÚµ›áÇJ…!„B!ÄÿŒâo´~ý&Ž=J‡èܹ“TˆB!„Bü? ·) !„B!„B|P·)É�¾B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1B!„B!„EH‚1â?!:ú6žžSéС#66í>|$?ýtòÿu$&&bjjNll\®if̘ÅèÑc užù)è2ÿ ¾¾þL:-×÷ÿ;vì¤{÷^*—ãŸâŸš¯Ý¸q“N9{6B6¢B!„¢HI0Füë=«ëpRRR˜8q³gÏÄxV_Ò�� �IDATÄÄ„)S¦±eËV© öîý†.]œ”>kÑ¢9ff­‹4…½ÌœÊ%„* °´´¤råJRB!„¢HiJˆ³·oßâëëO‡vxyy*>·°0§^½:Ì›·333jÔ0‘ÊÊA—.ÿ_,Sˆœ”+WŽÉ“'HE!„Bˆ"'WƈµS§NóìÙsÜÝGdûÎѱ ÕªUãÀƒ�„‡ÄÎÎA)ÍÅ‹‘˜ššóæÍÅg'OþÌÀ.XYÙÒ£GvìØIzz:ûm:¦¦æüüó)Åû»wïáá1›ötéâÄÂ…KxñâE®åðõõÇÛÛ‡µØÛw¢k×îDDœãÂ…‹Š¼ 6‚(~ãääLhè¥ùŒáβe+²Íßß?€yó’”ôSSsV¬V,7óv’̲EDœcèP7,,¬éÑ£ʳ >¥¬/óÔ©_:Ô KKzõêGDÄ9¥ßìÙF÷î½07oC÷î½8qâ§<Ë•˜˜ˆ··ööhÓ¦-㉋»«r¿JNNfÑ¢@:caaͰa#òüýüAppNNÎXZÚ0p ‹"™}ÏÉÉ™ãÇOàìÜKKFŒp'11Q‘&55•åËWáàЙ6mÚ°€ÔÔÔ­çÏ_ M›¶Š6{ÿþ=[·nÃÉ©ÖÖípuÎ/¿œ.Pûeö3oo¬¬lqpèÌÊ•Á¤¥¥å›Ÿ;vbgç€M{¼¼¦óôéS¥ùnܸ™‘#GcffÅíÛw�ˆ‹»«È¾¾sù9|ø––6¼}ûV1Ÿ>}УGÅûwïÞaiiÑ#Ç>ô…ߘ<y 66í±±i··b~¯Ï¾¾þøúú³vízìí;acÓ_ß9$''+柞žÎêÕkèØ± VV¶øúÎ!4tOž·“ !„B!Áñ—œœÌ7ßìcëÖm<zô(Ï´·nEQ»vmôôôrü¾Y³¦ÜºuKåeGDœÃÓÓ {ûölÞ¼Q£ÜX»v=!!kUžÇÓ§Oqs‰¾¾>kÖãççÃåËW˜8Ñ3ßéJ•*²sçvœ»)‚3³gÏd÷î¯ÑÖÖ& `þ'Õ©‡Çh\]]PWW'<|C† Ì5í‚‹6Ì•ýûÃ<x�sæä:þΧ–õc!!ë3ÆÐÐÔ¯_—iÓf(N¸Oú…%K–áæ6Œ°°] ЗéÓg‘˜˜˜c¹ÒÒÒ3f<II˜??€5k‚ÑÔÔÄÓÓKåü¬^½–Ÿ>żysÙ½{&&&Lž<U”ûØ¢E:t˜ñã=ؼy­[›2mÚL~ûí¡"ÍãÇO8zô(‹ÏgÓ¦õ¼zõš¹sç)¾_¼x)`„ñ¬[B™2¥Ù¶ík•ó|õê5&OžŠ‡Çh:|¨×µlÙ² Ñlܸ++ &NôTŒ‘¢jû­Y³ŽÆñÍ7¡øûûrèÐa‚‚V晟ÈÈK\ºt™ÀÀÅ,XÀƒ‰Œ?Y©wìØ‰½½Û·o¡jUcž<y‚›ÛHtuuY¹2ˆ¹sý‰‹»ËرHKK£ukSÒÒÒ¸x1R‘ÿøøx<xÀÇu}ñb$iii˜š~ €—× RRRذa-ëÖ…?ϼ?~€×àÏ?þÈöí;߯\¹š°°½Œ?ŽuëB022dãÆÍ²áB!„"·)‰OÏ©œ>}€={ö²~ýÊ–-›cÚ/^Pºt©\祧WŠ/^ª¼ì 6Ñ»w/úôé @µjUyüø1!!k6ÌU¥y„…}C¥J•™>Ý uõŒxçìÙ3éÛw�ÑÑ·ùì³Ú9þ®B… têÔ€¾}û°jUÇwÀĤ:q¥O@À¼OªÓ’%Kb` ¡¡y¦íÙ³;-Z4 cG"#/³}û,-- ­¬ssJ£F =zß}w˜¨¨h>ÿ¼1¿þú+zz¥°°0CGG‡®]iÛÖ]]]€˵~}ššš/^€^½z2z´ÏŸ?§L™2ùæç×_P³¦‰"O“'O 99YQÆM™2‰—/_*ú©‹Ë`6oÞÊ7©P¡<�iiiL›6•%J�0hÐ�¼½}xÿþ=oÞ¼áÛo0eÊ$lm­¨Ys·nÝ"!áA¾ù½u+Šqã&0|¸+]»:Wë|ýõNüüfcnnÀ€ý¹qã&¡¡{hÙòK•Û¯iÓ&të–1.OÙ²e1€€ù ã½ÿo´µµð÷Ÿ³so.^Œ¤yóf�888йs'Åo6oÞJ‰%˜={‚ƒséÜÙ‰Ó§Ï`nnÆ_|Ι3´nÝŠ³gÏѴ餥¥qŽÎ;qúôYš4ù‚R¥2¶ ܧ]»T«V€+–R¬X±\ë²zõ긺º�P¾|yììì¸páƒäíÛ·„†îaâÄqŠvªU«&QQQÄÇß—·B!„`ŒøwJLLTb2ÞÿÆ©S¿(‚Ùƒ-zDEEç:¿/^¢§WJååGF^"2òû÷ïW|öêÕk�^¾T-¨sëÖ-nܸAûööJ'¦'†¿æ 022T¼VWWGCCƒR¥þ¼âG[[‹””Ô¿¼ êÖ­«ô¾aÃúœ8q¢PËú±òåË+^ëëë(n³µµa÷î0ºuëA«V¦4mÚ”6m,󜟚š?üpœk×npÿ~wîÄ�(Ýn’w@ª“&yÒ»w¾ü²-[¶ÀÔ´ežË»ví:‘‘—‰¿Glì]ÒÓÓy÷î"M©RºŠ@LF9Ë’ššJJJ ññ ¤¤¤Ð¸q#¥ù6kÖ4ß`ÌíÛ1 üåÊÑ«WOÅç÷îÅóöí[&NôDW·¤R611)PûÕ©SGi™ ÔãÝ»wÜ¿ÿ€Úµk嘯Ï>«­Ä�T©R}ý²ÄÄÄ(‚1•*UPúMTT5Tb2‚msëVææfXX˜¶€sçÎѬY3RSSÁ˜3gÎÒ­›£â÷..ƒ ZÉÉ“§hÒä‹ãIÕÍ£/)½××/«ØÆdÖiNí$Á!„B!Áñ¯UºtiJ”(¡4†K¥J•òÔaûö¯yñâzzz¼xñ‚°°o°³kGÅŠ¹pá"­Z™æúûÌÏ?Ú¸¹ ÅÚºM¶´¥J•RÊWnó�°²²ÀÃcL¶ÏU¹*ãïöñ8%ù[òW—U__ŸíÛ7sîÜy.\ˆdË–m¬ZÌš5ÁT¬X1[úgÏžáâ2 CClm­13k…††ãÆMTy™Mš|ÁÞ½¡üòË"#/áç7‡jÕª±|ùR45³o6'OžBLL,]ºtÆÞÞžZµjòÕWCÿç²çе²¹ÿ>ööv:ô=Çÿ˜­ïnܸŽÒ¥•oãËìP¥ý²÷‰´OÊûû| ”×÷jjjòkI``IIIœ?gçî@ÆSµ’’’ˆWºŠ«wï^XYYqêÔ)"#/±uëvz÷îÉÈ‘nnÌ[¬²ÖcŸB!„"/2fŒøG)Q¢þ”/_Ž’%Kàî>‚¦M›äšÞ̬eÊ”fùòU@Æ•2‰‰¿áå5“ÐÐ=Ü»wŽ3þë_¼x ^½z­tµBÖqêׯGbâC*V¬¨˜Þ¾}Çóç¿£®®®¸%ãñãǹÎã³Ï>ã×_£B… Šy”,Y’»wï¡¥¥Uhu¥£SœÇŸ((þúë¯ùžÌæçÚµkJï/_¾B­Z¹]ýð×—õÑ£G$$ܧU+SÜÝG°mÛ&ÒÓÓ9vì‡Ëy™‡HïÞ½077+ð@¸qqwyûö-vví˜2e+VqéÒe¢£ogKûüùsN:Í”)“qqŒ­­5úúeyóæ•—W­ZU´´´8þ‚ÒççÏŸÏ÷·VVÌš5ƒ~ýúâë;G1ÐpÕªÆ+VŒÄÄD¥þüÛoIKK/Pû]¿~]i™W®\AGGcã*¹æ+::ZéJ¤„„ž={NíÚ¹_-U·n]®^½®4®ÌÓ§OIHHP\¥S±bELLL8pà ÉÉÉÔ­[‡ºuëžžÎþý011QpÓÒÒ¸zõ††8;wÇßß—1cF±sçîOê‹UªTFSS“«W•ëãҥ˲ñB!„"ÿÎÿ8_~Ù‚}ûÂT Hè0cÆ4&OžÊ“'qpp yófìÛ·Ÿ›7o2r¤5kÖ� Q£¨««3wî<úöíý{ñlÙ²]i~ƒdâDOŒŒ 13kMbb"‹Ò¬YS¦OŸJ™2e¨Q£Ë—¯b„b$''³eËV¥ytëÖ•={Âðññ£gϤ¦¦²†‡±}{á ôÙ¬YSÂÂöR§Îg”+WŽÝ»C•ž2S²dIʼn´‘‘!<{öœë×oP±bÅí@Û·ï�††FÔ©ó?ýt’cÇŽ3oÞœçYeÝ·ï[ÂÂö2mÚTŒ«qŽçϧFŒvý¸\ÕªU%==ÐÐ=XXXŸí S%Kê}‡„„Œ³½Ÿ?!©©©xxŒAGG‡]»B)^¼8+VÈ–?===ôõË~###Þ¼yCppH®ãËä¤D‰8:v!(h%zz¥©^½GŽýÑÎó·™Ë9r8ÑÑQLž<• Ö ««KŸ>½X°`©©iÔ¬Yƒ+W®°xñR¦L™LÅŠTn¿¨¨hBBÖbkkCll+WãäÔ|ÖÍY <ˆ7oÞD½zõøâ‹Ïsý““#»w‡âííC¿~}yóæ +WS»vmZ·n¥HgiiÎŽ;iݺ•¢ü¦¦-Ù¹sNN]éþøã<<ÆÓ¶m[z÷îÉ«W¯8|ø5kÖü¤¾XªT):uêÈòå+(^\ccc~úé$—/_¡D‰’²ñB!„*“+cÄ¿ž©iKV¯^‰ºº:óç/`îÜy”,™16GÖ±!ŒŒŒ˜={W®\ÃÕu8ß~û-cÆŒÊ6¯yóæpüø † qÅß.66ÖLš4^‘ÆÏo6ZZZŒíA``..C”1544$$$˜—/_âî>†1cÆQ²dI–/,ÔÛÜ܆Ҽy3fÏöcÊ/>ÿ¼1 6P ôêÕ“… —°gÏ^ÌÌZÓ®-îîcYµ*$×ùN˜àÁ¾}û4È…ððï˜1cæ9γ(Ê:hÐ�ºvudÑ¢@úõÄ®]{˜:u²âäüãrÕ¬Y??öìÙË A.lß¾ƒ‘#‡+ͳk×.üñÇ ô)))ÙÞûûûP¹r%&OžÂ!®ÄÅűtéâ’VWW'(h) >ô™�zöt.ÐXEñÄ«nÝœX´h1..Cyöì9ƒT}c®®ŽŸŸ©©©Š‡Jÿþ} aàÀ!lÞ¼‰Ç)ž¶¤jû Ф¤G¸¸ eÉ’@s|œ|V-Z4§Y³¦xxŒgÒ¤)WfÑ¢yy© Y½z/^¼`Äw¦Lñ¢jUc‚‚–(ÝdiiÁ‹/iÙòÏq|ZµjÅË—¯}@WW—+‚HHH`èÐáŒ7##Cü>¹?N˜àA»ví˜Ï!®$$$п_Ù !„BˆQSásµ,ï3_«gù›9i|˜4?LÚ€P&99åŒTµ(j¡¡{ذa[¶lÌõ*ñ§ÄÄDœœz°}ûjÔ0‘ �899Ó¯_ÅØ,ÿß½ÿž´´4¥`Õºu8qâ$›7¯— B!„øÐÖÖ2ž)@2úaJû0¥g™Þgù›9bÖ×|ô۔Ƴsw9Bª9sæqÿþ}FŽtC_¿,7oF±k×nzöì!•#„B!T&Á!„BE#F #8x 3fÌâÉ“§ѳg† $•#„B!T&·) !þ¯½û¯ùzà8þND* ‚Z)¥¶QIDBcS5B5ªZ»F+ö®=bµ R?ZUU«ö,ETS4j†DÆïr››Ü$7Dšêçõ<ßçÞû½çž{¾+žûqÎùŠˆˆˆˆˆÈ™1LIøŠˆˆˆˆˆˆˆd"…1""""""""™HaŒˆˆˆˆˆˆˆH&R#"""""""’‰ƈˆˆˆˆˆˆˆd"…1""""""""™HaŒˆˆˆˆˆˆˆH&R#ÿj§OŸÁÅÅÕäòÃ{2ä;FŽü˜¾}ûŽ‹‹+¿þzñ¹lÏÇiÙ²- .ÖÁÍdÁÁëyë­ܼy3KÕ%"""""/+íyLœ8ŽÂ… ­+\Ø)Cê®^ý "##3e;¬­­©SÇ×^+§ƒšÉJ—.»»;¹sçÎRu‰ˆˆˆˆÈ‹GaŒ¼J”(AñâÅžKÝM›úfÚvXZZÒ·ooÐ@åÊ•¨\¹R–«KDDDDD^<¦$/¼0gÎ<üüZâîîI§N]Ùµë{£2ë×o E‹6¸ºzТE£÷Ç2|øˆdõÆÆÆÒ¸qS¾øb™ÑúcÇŽãââÊÅ‹—’}føðôï?Àh]tt4õêy±~ý�üüZ¼Þðþýû÷?~5ÆËË›!C†qéÒe�BC·ãîîÉÇ åÛµëH«Ví ¯£¢¢pw÷dûö&÷Oxx8£FÆÛ» õ hÔöÀÀ±ŽeÉ’¥xyyãééÅ|h4Çœ2I™û™Ý» S§®Ô©SV­Ú±zõâââ ïûùµdÉ’¥ôîÝ—ÚµëðË/ç Ãɾÿ~7ݺõ¤nÝŒù1÷îÝcÒ¤)x{7¡Q£Æ,]ºÜPOHÈ6ôI´_þ`ÈaxzzáééŨQ£¹sçŽáýŸ>L×®=pw÷ÄÇÇ—… Ú•´®øøx–-[ŽŸ_+ÜÝ=騱 ;w~g´~~-Y·.˜#FR·n7nÊÊ•«Ì>OEDDDDDaŒÈS‹ŽŽfÓ¦Í,_¾‚7n<s}S¦|ƶm¡ ÀÒ¥‹yóMFŒøˆ?þ¸Àž=?2mÚtüý{°aÃZ:vlχ~LxxxªõfË– ooo¶n 5Z¿eË6Ê—/OÉ’%’}Æ×· """°îûïàÑ£¼¼$+ÏàÁC9wî&MšÀìÙ3É™3'=zøsóæMÞ|Ó…ØØX~þù0�7oÞ$,,Œ«W¯ríÚ5Ch‹‹K “R¿~¹~ý“&M`þü9XYY1tèFå¾ÿ~7¿ÿÎòå_°hÑ|nß¾ÃÀCŒBsÊ$•Ögöï?ÀСàííÅÒ¥‹yï=,Xļy ŒêY½z ÞÞ Y¹rÅŠ½l°Œý1K—.âܹótéÒ—_.š5+yÿýÁÌ™3£G™lÛŒäÑ£G,^¼€… çöAA³�¸uë æ7ª±ví*ƌ͚5k Ýn²®¹sç³lÙ zõêÉâÅ hÔèq8”4LY¼ø <<<X·nï¼Ó‘éÓgrüø‰g:OEDDDD$ëÑ0%Ér†ÎÞ½û�X¿~#‹Í祗^Jõ3mÚ´7z;·-ÿûßãdذ÷¹{÷®¡Ž®];³térN:M¡Bùý÷ß±³Ëƒ›[mræÌÉ[o5£~ýzfÍ÷Ñ´ic–/_ÁÙ³çxõÕ2<zôˆ;wÒ»·¿Éò..5qp°gûöÿѶm�BCCñðp'Ož<ÉÊ>|„S§N³iS°¡ý<_ß·øæ›í´mÛ†*U*óÓOûyóÍZìÛw€jÕªÇþýðõmÂÞ½û¨ZµŠÉú³eËÆ¢Eó°²²"W®\Oöekúö àÖ­[äË—€ìÙ³3tè`²eËÀG Y³üüóaÞxãu³Ë$•Ög/þ‚¶mÛЮ][�Š/ÆŸþɼy èÑ£––ód|}›$«ßÏï-Ã\B^^õÙ´i³¡®zõê2wî|NŸ>mrHÑÕ«¿Ñ A'Ãð·™3?'GŽ�DDÜ$** OϺ*TB… ²aÃ:“ç̃X½z-öÇË«>�ÎÎ¥¿ÆâÅK©SÇÝPÖÇLJ êкu+6lØÌÁƒ‡¨X±Â3§"""""¢0F$Eááᆠæñë?سçGš4iœêç’Nà›ð#À‚'NrøðQÂÂ.ó믗ˆ‹‹#**êÉrOÖ­Û@óæ­¨UË…jÕªááánV{‹+FÅŠغ5”W_-Ã?ì!:ú Ô7YÞÒÒoïFlÝú mÛ¶áöíÛìÝ»iÓ&›,æÌ¢¢¢hÕª­Ñú{÷îóÛo¿àæV› 6pàÀ^ýubbb aÌO?í£yóf)nƒ……;w~ˉ§øí·+œ?xÜC)Á+¯8€‚ boŸŸ .‚sÊ$•Ög>ÂáÃGøòË/¶àîÝ»äÍ›€Â… ™¬¿@FÁOîÜÆTŽ9ˆŽ~dò³]»v&(h»wï¡jÕ*¸¹¹R®\Y�J•*Iݺuð÷5Þ Zµªxxx˜ F._ãáÇT­ZÅh}åʕذa#qqq†óµP¡Fe^z)‘‘žù<…1")Ê›7/666Fw/Jz—$SR›ÀwÈa\¸ð+M›úâííÍ+¯8óî»Ý ïçÏŸŸ•+—ràÀA:̲e+˜={óçÏÁÉ)í;2ùú6fîÜùôë÷Û¶…âéé­­mªå—.]ÎåËa:tGG‡à �{ûü,X07Ùz�êÔqç³Ï‚¸~ý:¢eË�lܸ‰ëׯ†»»›Éºÿúë/ºv탃=õêÕ¥víZdË–•‹‰‰MöÙ˜˜˜t—Iþ~꟱¶¶Æß¿;uëz$+gª§OFjÛ¶ uêÔaÏž=>|„åËWÒ¶mkz÷öÇ‚ñãÇrúôöíÛÏîÝ{˜5k.cÇŽÆÍÍÕ¨žøøø iϳž§"""""’uhÎÉRlll˜0a, ÀÖÖ†>}zQ­ZÕ§®ïÖ­[ìÙ³—aÆеkgêÕ«Kþü/z�ܸqƒ+W~£V-úôéÅŠ_ÇŽ;ÍúŽúõëù€}ûö³wï>“Ãe+Z´(•+WbÇŽìØñ-û`aaa²l™2e¸}ûÖÖÖ899–óç/zS899Q²dI¾þz ÑÑÑ”-û*e˾J\\_~ù5%K–L1Ð:|ø(×®]#(è3Ú¶mƒ«km“Êùóç =‰�¸}û¥K—NW™ôÖûÚkå¿f´íFqëÖm£ÞO-66–ãÇOàà`OË–-;6~ýÞcÍšu�DFFròä)Ê•+KçΘ9s:µk×bÆÉê*Q¢89sæL67ÍÑ£Ç(]º´ÙÛñ¬ç©ˆˆˆˆˆdê#YNÕÙ¼yCº>séÒ%£a5� ÀÎÎŽüù_"$d ŽŽŽDFF2gÎ<£À›7ņ 1b8/¿\”ýûpëÖmJ•*•ì{z¼œ<yGGòäɃ žžLú9  J•Êi¶××·1K–,#<<œ?žb¹jÕªR¾ük <ŒÞ½{’/_>BB¶²~ýV­ZfèâîîÊêÕkxóÍZ†msq©Éš5kñó{+Åú‹/F\\ÁÁëqss#,,ŒéÓg&ÿCaeÅG¢sçwˆŒŒä³Ï‚(W®œÑ¶šS&½õvî܉Áƒ‡âèè@íÚoΔ)ŸñúëÕRÝoÏêÁƒ ¤~ýú´mÛš{÷îºggg�Μ9KŸ>ý8°?5jTçòå0Ž;Ž··w²ºråÊE›6­ šIŽ9qv.ÅþýûÙ´i3£ÌnSzÎSQ#òÜ%½û<žèÖÛ»!AAŸ8Ž.]ºQ¸pazõêÁÅ‹ åÞy§#qqqL™ò7nÜÀÉɉáÃ‡ðæ›µ’ÕiggG›6­™<y7éܹӓp¥ !![ñ÷ï‘b/—Ä<=ë8Ž*U*§:ÄÄÒÒ’©S?eÆŒÙ|üñ'ܽ{Ò¥K3kVE‹5”swwã‹/–Q³fMúZµj±ukh²a3‰9;—b̘ÑÌœ9‹ S®\Yz÷îÉðá•«\¹U«V! ` ÅàâRƒÁƒ…Zæ”I*­Ï¸¸ÔdâÄq,X°˜ akkƒ=z¼û\ϧܹs3sfÓ§Ï {÷žÀã0  ð8$5ê#–.]Îôé3ɛ׎† Ò³g7“õùû÷ÀÖÖ–Y³æAñâÅ=z”ÉáW)IÏy*"""""Y›…ë-½Nxn™è1aÉöd±z²XÙ|ÑÑ~Ò®–Ù±cÇñ÷M›‚&}Ž%22’ñãÇ>S™ŒøŒˆˆˆˆˆÈófmݸ<¢˜'Kì“%.ÑŸè1aÂÈÄÏIòPÏ‘gÉùó šIƒõ^¸ FDDDDDD2ž&ðy»wï¡OŸþØØä¢ÿ¾Ú!""""""’& Sy"3†)©gŒˆˆˆˆˆˆˆH&R#"""""""’‰ƈˆˆˆˆˆˆˆd"…1""""""""™HaŒˆˆˆˆˆˆˆH&R#"""""""’‰ƈˆˆˆˆˆˆˆd"…1ò¯Á˜1ãñññÅÝÝ“ví:²qã&Ãû§N¦I“fìÛ·ÿ¹µááÇ´lÙ–… ÿãûcР÷qqqM¶ôêÕ€ððp\\\ùõ…ñõ*�� �IDAT׋OýQ€Ÿ_K‚ƒ×g¹s*+ÏgµzõZ´h£?YPtt4ãÆM¤AƒF†ë󟼞·ÞjÁÍ›7u`DDDD2•vüÛÌøû÷ÁÖÖ–÷ߌƒƒ=‡aÚ´éÜ¿ŸÞÆÁÁwwwŠ)üÜÚammM:î¼öZ¹§®ãòå0Ú´iOpðjŠ-úLíqq©Á{ïõ6Z—+WΧ®oäÈÉ–-£F}ôó7±xñ|ùåÆ,}<EÒòå—_ñ¿ÿí`ìØÑ-ZämKéÒ¥qww'wîÜYîšy)Œ‘µýûpõêUBCCÈ“'�+V {v+öï?@‡oS @† ô\ÛaiiIß¾½³Ì~É“'¥K¿¢ä9žòbº~ýÎÎ¥¨UËåoKåÊ•¨\¹’ŠˆˆˆHfýæÐ.³lٲǭ[·ŒÖ·k×–iÓ¦�¦‡Ô|óÍÿhݺ=nnuéÙ³7ÂÅÅ•ëׯ8–ÀÀ±,X°oï&xzz8ŽèèèÛ’xÈMÂwîÙó#Ý»ûãîîI›6o³ÿ“ŸÝº5”6mÚвe[Þ}·'�ñññ,[¶?¿V¸»{Ò±cvîü.Ã÷ã‘#Gyï½~xzzѰ¡cÆŒçÞ½{�´hцíÛw°mÛ7¸¸¸²wïO†Ï<x:¶/ñP°-4lècô=?ÿ|W"## 뢣£3f<uêÔÃÇÇ—Y³æk²cÇN`âÄÉ\¿~WfΜóTûiøðôï?Àh]tt4õêy±~ý†dÇàÒ¥Ë ÄÓÓ‹¦Mý˜<ywîÜ 4t;îîž<|ø0Ñ9Ø‘V­Ú^GEEáîîÉöí;L¶)<<œQ£FãíÝú äâÅK†÷Í9'cbb˜1c6>>¾xxÔg„O‰‰‰IõØûùµdåÊU|øáGxzzÑ¥KwÂÃÿ`ݺ`üüZááQŸQ£FeÖù’PçºuÁŒ1’ºuиqSV®\eö9Çܹóiܸ)uêÔ#0pÁÁë†\ÅÇdz|ù üüZQ·nºuëÉ?îM×qŠŠ2:î÷îÝcܸ‰4jÔ˜ºuЯ_�¿ür>]絟_K–,YJïÞ}©]»ŽÑç‡0×qqqeéÒå?~WÆŽæy¼žúõ&û;Ô¯_�#FŒ4ëZHøÛ´eË6Z·n——w²íJéšOíH¸†¦Lù _ÜÜêÒ£G/£sXDDDDÆHͦM›Y¾|7nÜHµlõêoP¾|yºtéÆœ9ó8yòqqq©~æÇ÷2jÔh|}}X²d!M›ú2qâädå¾ýv�K–,d„±|÷Ýw¬\¹:]Û2oÞBúõëCpðj^{­,#FŒ4úÁž ^½ºÌšÀܹ³˜6íÓ'Ïç³lÙ zõêÉâÅ hÔ¨#G~Ì®]ßgØþþí·ßèÓ§?¥J•bÞ¼ÙL˜0ŽÃ‡0cÆl�.œKÕªU¨^ýuBB6óƯ>»`Á"ºuë¼y³yùå"|ðÁ‡FA‹9–-[AÁ‚X´h>`óæ/ še²l@@_ºu능¥%!!›éÒ¥ÓSí'_ß&8pˆˆˆúï¿ÿGbðòj¬üÍ›7ñ÷ïMþüù™?cÆŒæèÑc <€7ßt!66–Ÿ>l(ÆÕ«W¹víšá{ll,..5’ÕK¿~¹~ý“&M`þü9XYY1tèé:'§Nýœ¯¿þšAƒ²pá<òåËËŠ«Ò<!!Ûhݺ6¬ÅÉ© ýú àĉ“Ì›7‹ùóçpðà!Ã÷¤u¾$X¼ø <<<X·nï¼Ó‘éÓgrüø ³ë˜5k.6ldàÀ,\8GG–,YšäúZÀ²e+èË’% ©SÇÁƒ‡¦8?TÂqÿóÏ?M÷øøxÊéÓg ü„9sfâàà€¿oþøãZºÎëÕ«×àíÝ•+—Q¬ØËFï988²™Æ½)R¤!!› è›æyàåÕ€èèGìÞ½ÇPWDDþL“&Óu-¬X±Šú±hÑüdm7uͧu <þîüðÃ&NϺu«)Y²$C† Oóo²ˆˆˆÈ‘†)I–3tèpöîÝÀúõY´h>/½ô’éØÊŠÙ³ƒ^OHÈ6–,YŠ££mÚ´¢]»¶dË–Íäÿ† бc�œKqóf„¡—E‚%JЭ[W� ,HÆ 9tè;w2{[üý»S±b�úö}­[C9{ö\²á�ÖÖÖØÛÛ`oŸ;;;<xÀêÕk8°?^^õ m ¿ÆâÅK©SÇ=Åïݾ}G²³fQ­ZÕde‹-ʆ k)P €a—W}¾ûîñ·|ùòáà`O¶lÙ mL0bÄpC;†}__?Μ9kò{RòÚkåèÞý]ÃöEFÞgÊ”ÏèÙ³¹rå2*kkk‹½}~ì myšýäâR{¶oÿmÛ>îiЇ‡»a¸[b6l¢pá"|øáXZ>ΰ?ùä#Ú·ïȹs¿P¦LiªT©ÌO?íçÍ7k±oߪU«Bllû÷À×· {÷î£jÕ*&ëÏ–-‹ÍÃÊÊʰÍmÚ´¦oß�nݺE¾|ùÒ<'ïß¿ÏW_}ͰaïS¯^Ý'û¡gΜáÊ•«©ƒÚµkQ©RE�ZµjI¯^}˜:uŽŽŽ8::âêêÊ©S§Ì:_øøøÐ A=€'AÏf<DÅŠÒ¬ãáǯgðà†myågΞ=KXØo†ã¾jÕÆŒùW×Ú�tìØS§N¼žš5k¤zÜÛµk ÀÖ­[ ÇýСŸ9rä¨Ñ¼M#GŽàÌ™s¬]L¿~ï™}^ûøøàëÛÄä{–––ØÛÛ“?¿=ööù®«´Îƒ:uÜØ¶m›a¿|óÍvì©Y³Fº®…^½z¤8<ÊÔ5oÎ5ðûïWqv.iø›7dÈ ¢££ åEDDDDaŒdQááᆠæñë?سçGÃÿúšbmmMûöíhß¾¿ÿþ;¡¡ÛY¸p W®\eøð!ÉÊŸ={ކ {?¼ñÆÉÊ,èhô:þ—8{ö\º¶§`Á‚‰>ŸÀìž#—/‡ñðáCªV­b´¾råJlذ‘¸¸¸䘚À7µ ŒcccY½z çÎýÂo¿]åìÙs888¤ÙÆ—_þûüÓµ} *T¨`ôºR¥JDEEñÛoWÍš÷æiö“¥¥%ÞÞØºõÚ¶mÃíÛ·Ù»wÓ¦M6ùgΜáÔ©S†!ðx8ÀÕ«¿S¦LiÜÜj³aÃf�8À믿NLLŒ!Œùé§}4oÞ,Åí°°°`çÎo9qâ¿ýv…óç/� IIíœ »Â£G ¡J‚×_¯–fS ÀßõfÏžÀ(4Ê‘#=J×ùR¨P£×/½”ÈÈfÕ‘pLMmKB“Pfðà¡äÎmk(sïÞ}J–,™bâí݈-[Bi×®-7oÞdß¾|öÙ”'Îâà`o4¶……•+WâÌ™3é:¯ .ôTÓ:š4iÌ AC¸sçvvvlÝú >>ÞXZZšu-üݾôMhnÎ5кu+Þ(mÛv FêÔ¬Y—šú‡MDDDDaŒduyóæÅÆÆÆè}z~4.\˜.]ÞÁÉɉѣÇ0hP@²2qqqÉz̘êAóOKø¡ó4Ò3ïáÃG0`0nnµyýõjx{7âĉ“|ýõ–LÙ¦¤ëÒ»ÝO»Ÿ|}³tér._ãСC8:: ÁJªN7ú%[ŸÐk¥Nw>û,ˆëׯsðà!Z¶l<¾ûÓõë× ÃÝÝÍdÝýõ]»öÀÁÁžzõêR»v-²eËÆ€ƒ3`Ÿgì1̈ó%­:Bƒ¤×¥•Uò²–,YHÞ¼vf_Ͼ¾ùâ‹e\¼x‰ýû÷S @ÃqOí\²°°x.×jzσêÕßÀÁÁž;vR­Z5~ùåÆÌÐv<í5Pµj6n æÇâðá#Œ3ŽâÅ‹3cÆç&ˆˆˆˆÂ‘,ÂÆÆ† Æ2vìãÉ<»ty'Õ!/Ÿ>ƒ½{båÊ¥F½"#ïceeeò@É’%9~ü¤Ñ‚#GŽüãÛžô·^‰ÅÉ™3'G3êrôè1J—.a]ÿwìø–W^q&0ðúüé™ë͕ˆ{÷îEŽ9�¸z5y'N½>zô(9sæäå—‹šõ£øi÷SÑ¢E©\¹;vìäСŸiÜØ'ÅÜeÊ”a÷î=*TÈPæÎ;œ<yŠêÕ÷*qrr¢dÉ’|ýõ¢££)[öUC°ðå—_S²dɃÅÇríÚ5V­ZFΜoA¾{÷éÚßÅ‹#{öì<xÈh?<x0CÏÓŒ8_Òª£hÑ"XYYqüøIŠ)’è:=jx^¬ØËäÈ‘ƒððpþNz J¹WJÑ¢E©R¥2ß~ûû÷ qcoÃ1-[¶,þÁï¿ÿnt¬Ž;NÕÓu^? sÎKKK||¼Ù±ã[nÞü‹*U*öÑóü›aÎ5pñâ%rç¶¥aÃ4lØ€Ö­[†1é6ñ"""" c$‹«Q£:›7o0«¬¯oc6lØH@À@Z´hŽ GŽeÙ²4oîgòÇG»vmøä“@œKR£F Ο¿ÀºuþñíΟ??–––8p+«ì*T6mZ4“9râì\Šýû÷³iÓfG=õ÷ØÚ>ÒqòäI(Q¢[·nåûïwS¢DqöíÛOHHyòüÝÛÀÁÁ‘réÒe£!-©©X±<–––Œ?‘öíÛqùrË–­LVîüù Ì›·€zõ<ùõ׋̚5?¿· ?F“²··ç¯¿nqòä)œœ ‘?þ§ÞO¾¾Y²dááá|øáðË5oþë×o`ôè1´nÝŠ˜˜æÍ›Ïµk7X¹òïIeÝÝ]Y½z o¾YËpÔdÍšµøù½•jGpðzÜÜÜ cúô™é:®6664kÖ”  YØÙå¥D‰âlßþ?.]ºLöìÖvžšs¾<kyòä¡I“ÆÌ˜1“\¹ròòË/óý÷»9zô66¶†ím×® Ÿ~:…˜˜XœKqìØ1¦NýœaÆàäÔ(Õã¾hÑ\»v?iX_µj*UªÈðá#é×ï=òäÉÃÚµÁüñG8­[·H×yý4Ì=zu]»v.]Þ1¬Ï•+W†ýÍHzÍ›s Lš4™˜˜ú‘3gNÖ® &W®\89Ò?l""""IhV=ùW+Uª$³gÏÀÒÒ’ÀÀ± 4„;¿Ãß¿{Š“mzyÕgèÐÁ¬]»žNº°n]0}ÿñmÉ;7ôcîÜù¼÷Þã¡�þþ=xûíöÌš5‡Îß%$d£G¢n]§þ;;;Ú´iÍäÉÓX¿~#Í›ûѪUKÆŒG·n=9yò;¾mô™öíÛ`kkC§N]صk·YßãèèÈ'Ÿ|̱c'èÖ­'_}õ•ÉcÒµkg®_¿A׮ݙ6í3š5kFŸ>½R¬·ví7iР}úôgöìyÏ´Ÿ<=ëråÊ*T(““S*?L˜7owïÞ¥OŸ~ôë7�[[[fÌøÌ¨÷•»»wîÜ¥fÍ¿çɨU«wïÞÃÍÍ5ÅúK1fÌhÖ¯ßÈ;ïteåÊÕôîÝ3ÝÇ6  /Í›û1eÊTºvíÎ_ÝJׄӿ0ç|Ɉ:  AƒL˜0‰.]ºqåÊ:thoT¦gÏîtèО9sæÑ©S–.]ÁàÁðñi”æq¿zõ*•*U4 ,--™:õS^}µ #FŒ¤gÏÞ\»ösæÌ2œæž×OÃÜóÀÉɉòå_ãÊ•+xzŸãõ7#é5oÎ50vìhŠ)Ì!ÃèÒ¥/^äóϧ¦8»ˆˆˆÈ™…ë-½Nxn™è1aÉöd±z²XÙ|ÑÑ~Ò®–¬äÑ£G†‰JáñІ^½ú°cG¨¡çˆˆüsâãã‰5 ».\Ì®]»YºtÑ3Õ…/Æ 5ÜñIDDDD$µuvàðˆbž,±O–¸DK|¢Ç„Iü?'És@Ôä?hëÖPæÍ[@@@ß'·c '(h¯¿^MAŒH1nÜD~ûí7z÷ö'þ—8}ú,k×®£uëVÏTïéÓgؼù+ììòâáá®-""""ÿõŒ‘ÿœ˜˜–/_ÉÖ­¡„‡‡“;·-µjÕ¢oßÞ†»‚ˆÈ?ëæÍ›Ì™3Ÿýû÷qGGG7ö¦K—wžz"Úk׮ѪU;Š)ÂG \¹²ÚÑ""""’LfôŒQ#"""""""òDf„1šÀWDDDDDDD$)ŒÉD cDDDDDDDD2‘‘L¤0FDDDDDDD$)ŒÉD cDDDDDDDD2‘Âù׋ˆˆ`̘ñøøøâîîI»vÙ¸qS–h[`àX†ñÂîû_~9‹‹+ׯ_`äÈéÛ·¦·#<<W~ýõâ3Õ³fÍZš6õ£AƒFܹs'KìãíÛwðî»=©[·^^ÞŒ=ư¿¬X±W–/_aòó..®ÄÆÆ­ÿöÛ]tïî§§ÞÞM>|çÏ_0*súô\\\iÚÔ¸¸8“í>|..®,]ºÜ°®nݸ¸¸&[¦OŸ™âv>zôˆ Ñ¢EÜÜêÒ¬Ys‚‚fñàÁƒ ½žBB¶Ð°¡OНEDDDD2ƒ•vü›EGGãïß[[[Þ0ö>|„iÓ¦sÿþ}:tx[;)U¯þ‘‘‘Ïý{FŽü˜lÙ²1jÔGVçÅ‹—˜6m:ö§R¥JØÙÙýãûsΜy,]ºœ–-[Ð¥K'îܹËêÕkéÐá–,YHáÂ…ÊÏŸ¿:-Z4Õz-Zò$øhN§Nxø0Š/¿ü’nÝz2eÊ$^½šQù¿þºÅ¾}û©UËÅhý;wøá‡É–-[²ïèܹõêy­Ë—/oŠm?~"?ý´ž=»SªT)˜7o¿þziÓ¦è⑊ÂùWÛ¿ÿ�W¯^%44„<yò�P±b²g·bÿþ c2YÓ¦¾ÿÚ¶_»v �?¿·Èž=û?ÞžS§NóÅËøè£ñönhX_¯^]ºuógìØ Ìœ9ݰÞÉɉ¨¨‡Œ7‘™3§caaa²Þ3gβ`Á"FŽaToýúž|òI £G!8xÑ>¨Y³:_}õu²0æ›o¶S¨P!“ßS°`J—~ŬmŒŒdëÖP&M››«á:.R¤'NææÍ›äÏŸ_˜ˆˆˆˆ¼04LIþÕ²eËF\\·nÝ2Zß®][£ÿM¿ÿ>ãÇO¢Q£Æxyy3dÈ0.]ºlô™¯¿áí·ßÁÝÝ?¿V,Y²Ôð^Â0˜-[¶Ñºu{¼¼¼ˆgÙ²åøùµ¢NztîÜ]»¾7ª7::š >ÅËËOO/Çâ6=xð€9sæáç×wwO:uêjTgHÈüüZòã{ñók…»»'Ý»ûsêÔét•‰ŽŽfÊ”ÏðññÅÍ­.=zôââÅK©îﯿ¡U«v¸»{Ò»w_nܸaô~âa$©í³åËWàç׊ºuЭ[O~üq¯Q=/^" ` žž^øøø2vìð¡-Ú°}û¶mûWöîýÉè³±±±4nÜ”/¾Xf´þر㸸¸šÜÆ-Ú0�7·º´hÑÆ°=£Ffܸ‰xxÔgõê5ÉÚ×°¡㌆5…„l¡iS?¾ûnÍ›·¦~ý†,_¾‚ððp „§§-[¶MÖvã}½…2eÊ&�9rä wïžDGGsïÞ½¿ÿ˜[ZÒ£G7~þù0_~ùUŠõ~õU¥K—NV¯……}û¾Ç²oß~£÷êÔqg÷î=ܾ}Ûh}HÈ6<==ˆ‰‰y¦ëØÂ þúë/£õUªTfÕªeFALZד9׺ˆˆˆˆˆÂ‘$¢££Ù´i3Ë—¯Höc?©êÕß |ùòtéÒ9sæqòä©ds[ÄÇÇ3xðPÎû…I“&0{öLræÌIþܼy€-[¶1iÒš7oƲeKð÷ïÁ¢EKؾ}‡Q]+V¬bÀ€~,Z4€¹sç³lÙ zõêÉÂ…ó¨Wσ#>â§Ÿö>³gÏã áóϧ1dÈ`vìØÉ²e+Rܦ)S>cÛ¶P `éÒżù¦ #F|Ä\3”‰ˆ¸Éòå+™2eëׯáµ×^£OŸþ†Þæ”™;w?ü°‡‰dznÝjJ–,É!ÃSœäÿÛɸqiÖ¬ ‹/ I“Æ|úéÔ4gÒ}6oÞ–-[A@@_–,YH:n <Ô�DDDàïߛܹs3kV£Gâüù <€… çRµjªWͼñÆëÉ:ooo¶n 5Z¿eË6Ê—/OÉ’%’µqṌù�_~¹… çÞûöÛ]äÍ›— æâíÝ(YûÆËÅ‹—èßѼ,wïÞãĉS,X0‡ñãÇ2þ"† ûÖ­[±iS0uê¸óá‡ñðáC“ûíÌ™³É† %¨UË…ùóç;wîD×MM›úR¾|y‚‚f¦xí¤V¯½½=Å‹çÌ™³I®³êäÈaMhè7FÙéÓ§iØÐ ˆ¦k>W®\´nÝŠ >e̘ñìÝûQQQ&˦v=™s­‹ˆˆˆˆ(Œ1aèÐáL˜ð)3f̦G^Éþ·<1+++fÏ¢k×ÎìÞ½‡wßíA³fÍY¾|…á‡ñáÃG8uê4S§N¢R¥Š8;—âãGbeeÅ7ßlÀǧëׯ¡E‹æ/^Œ† P®\YŽ=fô}½zõ V-Š-ʃX½z-}úôÆË«>¯¼âLÇŽ?~ EŠü=—GéÒ¥6ì}Ê•+K£F^4lèÅÁƒ‡RܦaÃÞgñ⸹¹R¢DqºvíL\\\²^-ƒ  T©’8::Зüùó³yóWf—ùý÷«8;—¤bÅ *T!C±té",-MÿYXµj ÞÞ éÐámœKáãÓ?¿fiϤûlÕª5Œ9‚:uÜ)^¼;v N7‚ƒ×°aÃ&llløä“)[öUÞxãu&NK»vm‰%_¾|88Øcoÿx15¤¨iÓÆ\ºt‰³gÏ'‡Ý¹s'¾¾¦'jÍ—/Ÿ¡÷…½½=ùòå3¼W²dIÞ{ÏŸW^q&oÞ¼ÉÚW­ZU>ýt<gÏž5êéÅ»ïv&þüT¯þ*”§D‰bÔªå‚íÛ·áþýH®˜lÓÝ»wÉ›×üykbcc±´´dĈa<|Åäɦƒ²;wî¤ZoÞ¼vܹs×h]öìV4hЀ¯¾ÚbX÷õ×[(W®¥J•4YÏĉ““MàûË/çSüÞ€€¾Œ3šk×þ`ðà¡4jÔ„‰''ëõ–Úõdε.""""’hÎÉRÂÃÃÙ»w_¢×°gÏ4iÒ8ÅÏX[[Ó¾};Ú·oÇï¿ÿNhèv.\•+W>|gΜ!**ŠV­Ú}îÞ½ûüöÛï†×7nüÉæÍ_qñâEÂÂ~ãÂ… +VÌè3‰'L½|9Œ‡Rµj£2 s^$(ZÔx’UGGCH`Š……'Nœäðᣄ…]æ×_/gÔSÀÚÚÚ¨‡‡……åʽʅ Ì.Óºu+Þ(mÛv FêÔ¬Y—š)¶ë×_¥iSããR‹´öÙàÁCÉÛÖèX”,ùøGýÙ³g©X±‚Ѥ°  @fŸGÅŠ£bÅ lÝÊ«¯–á‡öýˆ ê§ûœtr*hôÚTûìííyùå—9sæ,®®µÈ“'7¹rå2 4òä±3:> ¡™)yòäáömã;:uîÜsçþ>w¦M›LÍš5ŒÊ”*U’wÞéÈÂ…‹Ù¹ó»dõÚÙÙ%«7±Û·ï`g—ÇDÀÕ„7qîÜ/¼òŠ3¡¡¡tîÜ)ÅzLMà[¬ØË©îkOO<==¸sçß¿›… —püø -šgØ_©]Oæ^ë""""" cDÉ›7/666FwäIzǘ´~øwéòNNNŒ=†AƒžüXÎÏ‚s“•·±±`ùò,X°˜fÍšâêêJ±b/³xñ’T¿+>>þ¹ìƒ!C†qá¯4mê‹··7¯¼âÌ»ïv7*—ìû“ÎÛ‘V™ªU«°qc0?þø‡a̘q/^œ3>ÇÊÊʬm~Ú}°dÉÂd½3Œگ¾¾™;w>ýú½Ç¶m¡xzz`kkûÌõ¦Ö¾”&Í}e˾ʡC?­;ö¢¢¢ùóÏ?é×o€áü5„ìØñ-Ó¦}FÏžÝÓ¬7ADD—/_¦lÙW“½W®\Y^yåBC·sûömîܹ‹—WƒÛŸž |“²³³£I“ÆÔ¨Q¦M›søð‘d¡SJÒºÖEDDDD² S’,ÅÆÆ† ÆR°`lmmèÓ§ÕªUM±üçŸÏ mÛÉæ9‰Œ¼••VVV”)S†Û·ï`mm“““a9þ‚aHNHÈ6Z·nÉ€ýðönHùò¯ñ矩Ï1Q¢DqræÌ™l(Óöí;8wî·~Å1�� oIDAT—§Úþ[·n±gÏ^† B×®©W¯.ùó¿Ddäƒd¡Jây=bcc9uê4¥K—6»ÌÅ‹—xøð! 6`ذ÷™93ˆ#GަØvgçRÉ~ħ6ÜÊ”bÅ^&GŽ„‡‡‹?þ¸FllÜ“° ,ÇŸ4:¦×¯_góæ/Sø8©úõëù€}ûö³wï>|}›dPH’¼}7oÞäÊ•+”)S:î…&M|8wîœÑÜ7EŠ¡T©’œ:uœK™ülöìÙ1b7Y¿~“Ñ{¾¾ùå—_’Í©OPÐLR >|}}صë{víÚ»»k†Ýþûûïwãîîi4/ÒãëøñyŸ3gN³ê1çZÉ Ô3F²œ5ª³yó³Êúú6fÆ ¤E‹æØØØpäÈQ–-[Aóæ~XZZR­ZUÊ—Áƒ‡Ñ»wOòåËGHÈVÖ¯ßÀªUËÈ“'%JcÏž½¸¹¹bkkËÚµÁ„……¥ú?û¹rå¢M›VÍ$GŽœ”*U’}ûö1kÖ\&MÿT?ÌíììÈŸÿ%BB¶àèèHdd$sæÌKöCÒÚÚšÏ>›Nݰ³³cùòÜ»w¦M›˜]fÒ¤ÉÄÄÄМ9s²vm0¹råÂÉÉô­ŠÛ·oÇ|ˆ³³3îînœ9s6Ùú´ØØØÐ®]>ýt 11±8;—âØ±cLú9Æ ÁÉéñ<4ëÖ3jÔhÚ·oGdd$³fÍ!..žfÍšàààȹté2 8z¼œ<yGGòäɃ žžLú9  J•Êr~&nßÛo·7´¯téÒ¼ùf­ »^{­ï¼Ó‘ÀÀ±œ<yŠš5«Ïž={ùꫯ4( ÕÞ+V ys?Ã\<‡I¯ÒµkgÇrêÔij֬΃ùꫯ8zô8S¦LJñÖÞ5dƌٯgÚ´É©¶ÿÚµëÉæˆ±³ËCÁ‚“•uq©IèÛ7€Î;Q¸°—.]báÂÅ”-[–Š+˜µÏ̹Ömmm¹?’3gÎâì\*Ùë¬p[sQ#’¥•*U’Ù³g0oÞ|Çýˆ"EŠàïß¶mßžØÒÒ’©SOüñÇŸp÷î=J—.ͬYA-Z€áÇ2~üDúôéOÞ¼v4kÖ”ÚµÓþaíïß[[[fÍšCDD%J” 0pÔSÿ(·´´$(èsÇÑ¥K7 .L¯^=¸xñb’ ('½{û3fÌxnܸÁ«¯–aÆŒéFóª¤UfìØÑLŸ>ƒ!C†q÷î=Ê–}•Ï?ŸÊK/½d²mžžŒù‹/eáÂÅT¨PžaÃÞ§W¯>éÚÆž=»cg—‡9sæqíÚ5 (ÀàÁðñiô$hq`îÜÙ|þùtz÷uv\]]é×ï½DÁPN:E§N]>|(ÞÞ iÓ¦5“'O#"â¦a._ß&„„lÅß¿G† !Jܾ^½ú=»®®µéß¿¯Ñ<2Áß¿¥J•bíÚulÙ² ‹Ç½?&Mo˜›&5½{÷ä‡~HÖã¤[·®/^œ5kÖòõ×!X[g§J•Ê,X07Õ�2oÞ¼Ô©ãÆÑ£ÇÒ6´dÉR£ÛÃ'#†%+kmmÍìÙAÌ™3Ÿ™3gqçÎ]òç zôx×ì^-æ\ë..5©X±Ý»ûôY²×Ú‰ˆˆˆˆ¤ÆÂŒõ‰^'<·Lô˜°d{²X=Y¬ì@¾èèG?iW‹dŒ-LŸ>ƒÐÐ-ÏTæ¿àرãøû¿Ç¦MÁéš�XDDDDDþ»¬­³»�·€G@4ód‰}²Ä%Zâ=&L0™ø9Ižê#"/ ÈÈHΟ¿@PÐL4¨§ FDDDDD²Íh("/œÝ»÷ЧOllrÑ¿_íÉR4LIDDDDDDDä‰Ì¦¤ž1""""""""™HaŒˆˆˆˆˆˆˆH&R#"""""""’‰ƈˆˆˆˆˆˆˆd"…1""""""""™HaŒˆˆˆˆˆˆˆH&27Œ‰×®I•Yù‰zƈˆˆˆˆˆˆˆd"…1""""""""™HaŒˆˆˆˆˆˆˆH&R#"""""""’‰ƈˆˆˆˆˆˆˆd¢Œ ct·%yÑeHþa™_Ÿ‘ É‚LåO•…X>§†‰ˆˆˆˆˆˆˆ¼(24ï°|Q #"""""""/Š Ï>,ŸcC5|IDDDDDDDþmçÏ%Ӱ̀ƥö¾‚ù·1'ÓxêÌÃ2ƒ™RCâtEDDDDDD$‹K)¿H+÷H—ŒcâSi`<giiñ—ާˆˆˆˆˆˆˆdeOò‹8’g‰=s cN“ô–MiÝÂ)éØªØèè˜0RÉÊbbb€XÒž 7½Y‰‘”˜ôŽ‹2ô‚IòÄÞ¿÷¤©ˆˆˆˆˆˆˆdewïÞ=‰qc*çHì©æ•IÏ0¥”¾0>•÷ãØ“'ÏÐ!‘¬ìÌ™3HÞ3&99ˆY,Ì|Ï"ÑcÒÅ2Ñc¶'‹Õ“%;ȳ5..Þ^‡VDDDDDDD²KK‹+++oà6<bž,±OS=e’Î-“楧À7>•çI»ñÄQüqm­ˆˆˆˆˆˆˆdEOr‹(R]¤k~SÌ cL}Q| Ï78!Œ‰~ûíö«---"txEDDDDDD$+±´´ˆxûíö«hþcçr’îp&µ0&>ë70ã0æÑ®]»þ:~üø4bÉJŽ?>m×®]ñxhRâ0&qÎaîÝ•R[¤>gLÒ÷-L<&ž3&ñ¼1ü=oL6Ï“°½qãÆà¼yóuС‘ÚíÛ·–;::Nîó8ŒId拉Çxè’©áKéê%ó4wSJé®I`z¾˜¸'<tttœúàAä—:Ü"""""""òOzð òKGGÇ©ÀCþž°7qž‘8ç�óî²”¦´Â˜ø4Þ3µ$¢”x‰äÍ›wÔíÛ·–ë°‹ˆˆˆˆˆˆÈ?áöí[ËóæÍ; xÀß÷&^ç)e )I5˜IïÝ”Òe*”I¸TB÷ž‡À=GGÇɧOŸ¡I}EDDDDDD$³XZZDœ>}jÄ“¡I÷xœS$¾…uBïS!LRéîæ…1OÓ;ÆÔ0¥„ Š~²Ü­\¹òæúõë¿uýúõY eDDDDDDDäy±´´ˆ¸~ýú¬úõë¿U¹råÍÀ]þÎ(’1IçˆÉ°^1ö¾)•Mi2ßÄKÒ‰}&÷MºdrÙ¿ûn·[… åÞ°±É]ÁÚÚªX\\üK¤¿÷Žˆˆˆˆˆˆˆü·ÅYZZüyïĉ§zx¸íæÉ|¶ü=IoJC“LMÔ›4ˆyê[[?m“øµé eBSÃ+ŸµH¥ """""""òß’Ò †’) 7Jèý’4xIüÚÜ&µ›¥É*iaâuÂY¤ð¥q) •Ä$lxâ4 ½a,­ÓŒˆˆˆˆˆˆˆü·%Hß)áu\’õ‰‡"%½kRjÃ’ž9ˆô…1 §Ȥ%.Qù„%qàb™¨þ¤=jH´>‚‘ÿ¦ÄYD\’ç‰{¸€q“ôNÐñf.A <}˜‘Ú¥„ÇÔ†.¥5· &-ÒønùoH) IÜ;&é£9ÃÌé óLA <{a‘ÊsSaLÒצ‚0=4É"•v+ùoH- I¦Ä™xnNøb*Œ§˜¬×”Œ1ž¶—Œ©÷LÍ ciâ{,žÓ¶ˆˆˆˆˆˆˆH֟ƺ¤=cR fÌ `2¬7Lb`˜ÛKÆÔ:SÏSžd‘ Û#"""""""YG¼ëS®”ZØb*xÉðÞ0‰etxaN/™„G 3ʘzL«Ý dDDDDDDD^,ñf¾ÿi•1§ éò<‚‹Ôæs±xÆÇ´Ú­ FDDDDDDäÅoæúøg|L­Î ñ<à ‹4ž›Ò¤ö<³¶CDDDDDDD²Žô WJü<ÞŒ÷R{žažwˆ‘ž^2æ>Ϭ¶‹ˆˆˆˆˆˆHÖf)=Ï´Þ0‰eF a‘Ž×Ïrûj…3"""""""/¶øt¾on—L b ó sz¶X<ÅgDDDDDDDD í^2æ¼Ni]†Ê–‰;%=ó½(t‘ôˆOÇúøtÖ‘¡2;ô°xˆˆˆˆˆˆ$ˆïe¨*äÈìù_戈ˆˆˆˆˆü;Ägr}ñ™½ÿtHañ/j«ˆˆˆˆˆˆˆdmñÏ©l†Ê*‡‚É ñÿt²b¢`FDDDDDDD2R|VjÌ¿!øP8#"""""""é¯] """"""""""""""""""""""""""""""""""""""""""ò/óãzG¸%´£����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/categories.png������������������������������������������������0000664�0000000�0000000�00001732403�15240005042�0022543�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��²��à���~ßèë�´ÊIDATxœìÝœTåùöñ{;KïE@A¤ˆŠŠ"ŠŠ½÷nbbLÔ$*¶¨±·Øþ¾IŒ%v5Æ^° ‚݈Šbì"‚" *} Ëî¾s=ËÎÌÎÌÎî”=3ûû~>‡™9Ógžsv˜çšû.4������������ � �������������‚,������������‚,������������‚,������������‚,������������‚,������������‚,������������‚,������������„bC¾(0�����������Ú®zCÎ#ü¼®�����������ä?Â3iFà¢åxí�����������@<„\Z€0Frx�����������@ª·4€Fl¼.����������� Ó¶D!°‰×�����������d–5nð�����������€àhÓ¡–¶âÈæs',����������@îËfȤMZÚbÀ"Ï™  �����������ÈDø¤MZÚR�#]ϕР�����������HVº‚(m"ÐÒVB©<ÏL½Fb�����������®LGR¹Ý¼³´…0EKžcª¯ !�����������ò_ªÁ’–\?¯Ã,ù¸ÈF€¥5_?Â2�����������ÄךæÞ7–5ò5 ќ畩˦ãz����������� 8ZiÎõ2uÙœ‹dŸSk].]Ç�����������_¶CÉÞ_k].'ä["]¡“dn'—Ú����������€Ôd¢]P}Šç7÷r—OáŠTÃ'­nI÷õ����������@ó¥Éth%·Ÿò!8‘É�K*Á—æ^�����������_:ª¤dâ¼æ\&°r=d‘Jˆ¥¹ëS9/•Ë����������€ÖÑœPHºÃ)Í]ßÜËR.*ZÚ (Óë›:/×�����������éÑ’ðG6*- ´äd˜%WÃé ±¤².ÑúdÏO!�����������R—ŽpGK$õi^—h}²çN.$ZR ¥¥a•Ö®Ò�����������‚!“ÕW2hÉ©0K®…+šiiX¥%—ij}²ç����������€àÈd–t]&ÞºdÎ ”\ U´$RæÓ©®kÉe�����������@ë¨oáeZº.ÕÓñÖ5çüV— aŠT«°dútsÖµä2����������� »2bÉôéxë’9¯Õ=H‘ÎKKÏKætsÖ5ç|�����������}-©l’îKKÏK´.™óZUƒÍ ±4çtk‡[šs>�����������ȾtY2ZIGµ–dÎk5A Rdª Ks's^¢ó›ZßÔy����������� u´$�8Iwp¥¥á–xë’9/낤HW–Lo*¸Òܪ,Y�����������žæ?šZWoé «¤«ZK²çeUP‚©TaI&Ð’Jh%Ùê-Ñ׋wkÆù����������� ûšÓZ¨Þ’ ²DO%ÜÒ’ê.‰Ö%s^V!H‘É*,-9¿ Éë5õØâ­Kæ¼TŽ����������´%™ _¤Z•ÅTILIt™–Zr¶:Kk†š[­¤¥mš ­x ãÜNa‚ÛO¦B‹5c}²«�����������дTCõÍXŸl+¡ºf¬O^Iwë!kæùÑZˆtWaiîºX”Xᕦ‚+Mµ8Jg…ð �����������-×’`F¢ KS-}’ ¶ÔŸLsÃ+ͩԒÌédÏˈl‡#2Y…¥9–x¡•èó£«±Ä ²4¤±ç����������€àkª*K¼ I¢ K]‚Ë'ªÌ’‰J-±N[3ÏO›l†*ÒbiN`%ÑatEx%Þñ–VciÎëMà����������€ÌiN8#^+¡æTe©kâx½5®ÊÒÒæÖEuÚšy~Zd+,ÑœVBÑëÒXñÆ ¨DFW\iêq4õ˜£'Bˆ����������€ÌK6œ‘l•“¦‚%‰*°Dú×§é0ÑñDë’9/-²˜hNˆ%ÞéTÃ,ñ*°$Z¢ï7ÙJ-Ñ׋µ.B,�����������dOsÃ,MU=©Kâxt %™Å,µj-ñÖ%s:ÙóR–éÐD:C,ñÂ!ÉYb-þê+…Q×KT™%^À%ú¼X§)Y�����������ÈžT‚,ÞéxA–DA”èj+u1Ž7j‰w˜Lˆ%a–bËœ–†XÒY}ſΠ«øC+…1®“l‹¡èÀKôùѲ�����������<Í ²ÄZï?¯ êòñ‚,Þå¼ÐJ‘ÅÅÔ[d8&Þc(ð6u~}ŒÇY`ŸG¼çœè¼”d*4‘íK2UXü•BkºJ‹ÿ°È·Ä ÁXÔõ,Éõ±f���������� óšƨKr½F©ó_ë[ꢮ—¨úJ]—3³”Z%:ët²çµH&- ±øO§^ñŽG‡U c¬hñ‚+%¶6¼ÒTÀ&^«¡h-y½ µ�����������>- _$ºN¬VBfñ#^ ¥ÆÖ[bX¢×ŹL¢ûmI¨%™ÓÉž×lA ²´4ÄÒT–è *…?ÔRj o½uìØ±S¿~6l׮݈ÂÂâ!……60tVß‚‚‚.¡÷¢4�����������kÕ›TÕ××/ ý¾®ÎæÖÕ­žUUUõÅ‚ó>_±bÅòµ—saZVYüðJt{¡:kº:K:+´Ä:ìyÍ–îFk†Xbµü‰ÕFÈ«¸â?¿,´{—íÝ»_¯^½zîTVV¶cèäX�����������H‹úwª««_]´èÇW.\°ÈÖ†TV‡–j‹ ªÄªØd‰n=d–Ãa–tYÒbñŽ·4Äâ¯ÂRd±[ yëU¥Ì»ÌС÷êСãA………»û‹­^]kµµµ¡ÃÕVWWgõõõá�����������À¯   ¼Zqq±…‹".WWW÷âÊ•+ž˜9sÆ»¶6p¢0Ë*kdñ‡Wj½›ð-fÍ³Ä ®´j˜¥5‚,MO¶…øÃ)ÞéXmƒŠ¢Ö«úJ»5ë]€¥S§NÇø«¯¬ZUc555.¼B`�����������¤JÁ…ZJJJ¬´´ÄwNý;Ë—/¿ÛhQP¥Êª´øƒ,µ¿ýYã6D-i9”ìñh ²d²¥Pôñ¦B,Ñ–XUXb)èÕ«_ïuÖébQQÁ~ºººz«®®¶U«V^�����������£PKii©•••YaaC¢¶¶þéï¾›Ó¢E ZC0Da–XÕY¢-É„YZÒj(úx¬ÓÉž—”LYÒbP%^ˆ¥0΢�‹‚,n8jÏòòvç‡^Ãr…Vªªª]ˆ����������� ›fi׮̅[Ì *++«®øüóž·†`ˆ‚, ´ÔÅY…Y’­Î’è0úx¬ÓM­OZ‘¥®%ÕXâZâ…Yb…Xüa–¦B,zžåÖb)ÜtÓѧ—––œ:^¢B®…�����������@¶ÕÖÖZMMZQQaIIIñν{÷íðà ޱµÙ‡º7áÏaÔÇ8¯Þ’ËpÄ»Íd¥\P%“A––VcIt<:ȯP¬KIÇ6ÚôªÂÂB×J¨¢¢Òªªªh#�����������Z•² ³ÔÕÕ[II‰ŽêÛ·ÿð+–ýwÕªUj%¤üCm¬«®9L6DRÐÄñ‚&®ï2i‘j%ÕX’ ³$S…%^ˆEí„JzôèÓ}ýõ‡\SPP°umm­\¹’*,����������� Pª³¬¶ââb+,,Ô½{ÏÍkjj߬¬\Ym±+³xWü§=‰*{$bÉzU–LYÒU%VK¡DUYŠ,2ТKiÇŽ;¯¿þ¿l¶zu­k%TW—¨â�����������@ëPuç(**V«¡¾]ºtµbŲWW­Z¥ŠÊEx•Ybµ ª·øUZµjTeI%È’Éj,ñZ ™5¯D/^ˆ¥4´”éôFmz¥*±(Ä¢J,´�����������AæµRe…Yºwï5øûï¿›b ™TÁ#ºK£›±Øá³ä²fY®Ê’ K*ÕXâµòŽ{ßbÑRZʵnÔ¨ÍO½¡û©*±b�����������¹B•YŠ‹K\›¡^½útøá‡ïß±†l„ª²x!ÿ¡?ÜRu~<-­Ê’v©ÜAsÛ Å ´$[%º½P¬*,Þ¡B,¥n¸É^ååíþ¢[¾|…ë#������´†¢¢"+++µ’’¯4´düû? ïèÇŠúábmíj÷ëÔêêU|÷ ��€¼§ÿSvêÔѯ¬¬ºèóÏ?ž:ºJ'­¡2KmÔ¡ñª²ÔEúÃ/±N›E`b­‹uº©õ µ´"KkTcñ‡YŠ¢ŽùÎw-…zõêÛ»Gž7„Ž—TTTº„������måååÖ±cG÷…cii©+ ]XHˆh)m;Ú†´-i›jß¾ÜJJJÝz¾��@¾R »®®Þý8"´l½zuí3+ª,2¬â¯¾]‰ÅN‰'QÆ#Þå’½½¤µv¥©0K¬*,±Z y‹Z µ×ñ¡C‡ŸUXX°ÑªU5VUUe������@6•••Y—.]¬¼¼ûå€Ìñ*••µ }¹_G…���ä%}Î-,,R…Ï’Ž;uùᇯYCîC‰îXÕUW¢Ï‹—õȺtY’m+ÔœÖB±-^¯‹·NÕXJ6Ø`ØVååå§+‘TQQá’I������@¶têÔÉ:vìàªF�ÈmsíÚ•¹/÷W­Ze���@¾Q˜E• CŸ}‡uèÐñßþé;‹läñª²Äjä?Œ—óhê¼dÖ·H&ÿ'Ýœò2±ž|tõ•xAÿåd)èܹóÑZYUUíÒ÷������@6¨*D×®]]�­GÛ ¶Eª!�� ß(¡,„¬ÉF(/¡¬„—±0‹_D$VA¿æU2Vµ¥%A–t=˜d_ÿù±^T¯­P‰7Ø`ؘÐê±ê U]]m������@6hÂ\­„JKK @ëÓ¶¨m’0 ���ò²ÊD(Ñ‘X›™°È,E¬¢!ñ47ѬfßN:+²4·ÝP¼ó ’¸L¬ËëM)èØ±Ó:ƒ ������²I턊‹™0‚DÛ¤¶M��� ßx™ˆŽ;h¾Ì„µ<s‘è2–àtSë›-›Mz Z°Þ_}%:9ä_ô Aa¯^}{î®+Óÿ������Ù¢‰r*±�Á¤m“0 ���ò—‰(,,ÜMY óe',qÆ¢© -ª4%SA–TKÒ4÷(-…½{÷ÚA'V­ª±úúz������2­¬¬ÌÊËÛ€àÒ6ªm���ÈÊD(!k²Ê[ó¤šÝÈH¸¥¹A–L&lš*Wã?ÝÇɽ¡ÿˆ¸ KMM������ÙСC|l«���È7^6ÂËJXCv":Oa–\#Óy¤57“ªD}”üëc-…Q‡þõECB'ÇêV¯^m������@¦•——[qq‘>m«Úf+++ ���(**²’’·è¸–ÂÂ+(hˆ2¨âI]]½ÕÖÖºE¡-:k³c•™X±bÅrkÈPÔYd¦¢nÍa½5·¬YÍ¿>Þe2"]A–¦z$¥’܉W©Åÿ¢[ß¾ël¨ÃÕ«ki+�����€¬ U [´Íd��h» ­]»²ÐçÂvVR’8.¡@KQ‘EJÂ-ekjV[uu•UUU[]]µ&e#”‘Ph[™‰¯¾úò]k\ÄÏ[×ÒP…wÝdÂ/-–íŠ,ÑÒQšF?y)(/o?T'‚”~�����@þÒ¯õJKK @îÐ6«m—ï‘��Ú}lß¾}8Œ’ `JJ:ššÆTVVYEEE«~¾Ô}7Tt™‰iÖ¡¨±ÔdµK´B˾¦z-5n‰ÕZÈ ‹6Ð!m…������ ee¥ ÷°í��´- °ôèÑ=-!–hºMݶx /3aq2 Dç5 œŸ™¨ÈÒÒ'Qä}Y÷&Ú@ÑÚ¥{������Ð6¨:€ÜÓ°íÒ^�� ß[§Nšl!”;vpm,—/_žõâ^FbMf"œ¡°ø‹Xm‡¼ã-©Â’öê-­Q‘EZv)H°>´öÑ õ€������2­¨¨µ»vh ¶]��€ü×®];ëÞ½[VB,Ý—îS÷Mk3.3«¢Š'9ŒÊf%SOÐÝnAAAd�����@6µÖoÄ�¤‚m�� ¿µo_n;w²Ö¢ûÖcÈ/#áe&,ÃÙŒlhÎ'öæ>¨‚ Ÿu¹zk"È�����€l}Ih�rÛ.��@þR€¤cÇŽÖÚô²fY›‘¨÷JÁ43k‘±ó[|ùtÔÑI÷ƒoê¶bõrò���˜:ØN;íhÛl³µ¹¡ Ðß:wîìÎ[¶l™Í;Ï>ÿüs{ë­·í•W^µŠŠ ��­cÝuÚøñãm«­ÆXïÞ½B‹ëèm þZÙ»ïN³×^{Íýý���€ PKŸ „X<z,uuõVUUeY+Cá_ÒU¤©ÛJù¾šþH¶RA‡±Â(ÞRã°xÍ¡–"ߢӪ T4zô˜©º¡%K–���€`èÕ«§M˜p’|ðAIÿ¡¢¢Ò&Nœh·Ür{h‚l®�T yä“õ×_ßN<ñ¶í¶ã’ºü´iïÙ7Þd3f|i@®Q( ���ù£¸¸ØºwïfAôóÏ‹mõêÕ–I]»6tš>}Ú6¡ƒÚв<´Ô­9î-uk–Õkëcz‹Eö¯KthqN7µ>B‘%/A–dÃ,þP‹·Ä[W¦ãýúõ?N7RUUm����ZWii©M˜p¢]wÝ?l‹-F[IIIÒ×Õe7Þxc;ê¨_¸_Qh’¬®®Î�äMþï±Çvćۂ ì§Ÿ~2 ©âX>(**²ÓN;Å.¼ð|[wÝu“¾^ÿþëØþûï窬éï5-¿‘KV®¤ ��@>éÒ¥Kèÿ6…DÅÅ%¯Ê¢ïQeÁ‚ïî´†°È*kD‰T1‹ ˜ÄʆdµCN:Z ¥CAÔñ£U���“ºuëf7Þx½»•¥B–Nøƒ»N˜`?þø£È}m´‘=ñÄ#nâ\T¹é¤“N± 8p€1Â>ýô3ûî»ï ÈG*u}å•—Û˜1[ZKÚGfë¯?ØÎ;ï[±b…���@6µoß>ô]bP¢é±é1°z¬\F:[µXÞÍ–†W¼����1lØP»óÎÛluÖitž&'Ožb¯¾úšÍ›7ß¾ÿþ{·¾oß¾6`@Ûi§m·Ývµ~ýúE\oôèÍíñDZßýîxûꫯ @ëxä‘Ýöè÷þûÓíðÃaÍQP`á‹l³Í6îtmm­ÉÞ{ïiÿøÇß]iâU«VÙ„ §ÚK/½l@>Ѷ/ÄòÎ;ïº1ÿá‡Ù¢E ݺ^½zÛf›mj;ï¼S£ÀªnC·uúégn{���rÙ¬Y3,›† n¹Dÿ¯éØ1øÕ2õ«««³õÿ¥Tr(µÙœ'Lk¡XÇ“i-ÝN(ú°ÈÖ¶*ò-:ÝY‡£G™ª^²d©���Ⱦº‰nUWðSÛk¯½ÁžxâÉ&ÿ£¦ÿx|ð®½.~óçgxˆýüóÏ– µ?øàƒiÖºÿ?þÄ‚èý÷ß±®]»†OÿùÏçÚc=n@ºÄû⬹_p©zûï¾åª7y:èPûè£-]bmçÇÿG{ùåW’½ ›8ñqW=ÆÚQå©=÷Ü#|úñÇŸ°³Î:Çж¨MV.;ýôSCãú°ˆusæÌ±«®ºÚXÙtÓQvÞyç4jEôÐC„þî_g™6`À�Ûe—më­Çºl·n]]èLŸfÌøÒg_ýŒ÷¡ÏE )@ìyàí†þimÍÂ…‹ �� dI¬S§NV^ÞÎrAee•-_¾Ü2¡k×.îpúôiÛ„Ô§}ÙšÃZßRç[§Ãú‡ÍmEä¾Ä;nI¬Ì&Q����rJYY™ÝtÓ B,/¼ð¢í¾û^öè£%õk]æ‘G³ÝvÛËUoñëßwj9 w(à¦/Ý´<ü𬮮ÎÞ~û݈Ël·Ý¶4‹ýuš Oä—áÇ١‡±N­ãŽûC“!ÑeŽ=ö÷î:~‡vˆ 6Ì2¥´´Ôp|ðßöÇ?þÞUˆéÓ§·[¯6I Ö¨ÂÛW\f÷Ýw· Ü����ÈOú±L®„XDUMkW‰V@���@žùÃŽ·‘#7ŒXwçwÙI'b•Ö\ê{ ì®»î‰X¯¶'Ÿ|’ÈþvD[l1Ú¾ùæ#.³í¶ã,h.¹ä2›6í=«¬¬´©Sß¶Ë.»Ò€|rÒI'F|ªJ,çœsž­X±"éÛÐeuo¿ý6¼N·yÒI'X&(¬ò׿^íªÈø[”Å3hÐ »þúkÃû����ù¥]»2Ë5¹ø˜­2Å����)èÙ³§ü±ë^|q²kKP_ß¼–ªj'tÌ1GÛ¡‡ìZ€œsÎù6`@÷Ëjîëᇱyóæ[ºL™òrèöæ5y¹üÉ�ĦÊ+^h%º O´7ß|3â´&™Û·/oQð-SæÎkGy”ùhàÀ.ê§¿ÛÍ ±xt]÷æ›o ¯Ûj«1¶îºíÛoçZ:wܱî¶ýTåiÆŒ¶`Á÷®"ËСD´.SøåÒK/±C9Ìõ£���rM®µúɦ²²–Wc™:µá»‰~XhûÛßýè&Ú–[nú®òlW5Z¶Ùf;k =æ }ÿTÙ ²¤3¡Sµ����hE&œš€n>ýý÷ßÛgü¹Y!µ7P@e¿ýöµââ†ÿ¦Œ?ÞMNé¶&Ožd}úôqë5!¥ 0^x‰¥ËC=ì‚3H½‡zï´ íˆUy%Ñ8p ;­–aúBèõ×ß44æUžH¦E[ºh_»jÕ*C~Úa‡"N¿óλIµŠçÿûÐÞ}wZDÈdûí·³ÿû?–.Ú:耈uóçggõgûúëoÂë´?ùÕ¯~i¿ÿýñáu=zt·=÷ÜÞzj¢å"U¹)((Èê>����:ý¡¤$õ¸ƒZ•^}õUv饗¹çŲõÖcÝeôåTé1ë±gáó}¦rº­æýz±r­"KA’ë����d*(rÈA뮽öz×(š¸V(e§vt4~?þ„;\¹r¥]wÝ vå•—‡Ï;ðÀíª«þ_Ò÷“n=zô°É“Ÿ·.]:‡×ýç?Ú\q¹òòòЀŸ³uÖY'¼îÑG³³Ï>Ï?úè_ÙÅ_>ïóÏ¿°}÷=ÀýR^-”¶Ûn;ëÞ½›-\¸È>úèc»÷ÞûÜDaªÊÊÊBz»Ûìoƒ²Þ½{»×rÁ‚6uê;®âͬY³c^7ú1¿õÖTûõ¯qUsô^Ž1Ü=ïÝwß+â64 ·ûî»…îs?5jWÉG¿Œÿî»ïìí·ßu¯ßŒ_ÚýÒé¿82|zܸq ²ÜxãõnâÛ£}ÒYgÓäõ4¾ÕVEû·víÚ…ÆøWæî»ïs­[¢ 6Ô&Mz&|Z_d 6ÒmK§Ÿ~ZèvF[×®]]xïÖ†ôå™¶§]wÝÅ6Þx#WBÂE‹öÏ<ó\h?5%f¨0ú¹]sÍuvË-·Ú±ÇþÖ;ìPWIcÉ’%6vì¶¡}üÁöÿþßU×ß{ïýân¯jWó§?>­ÖLºíËÑUM^zéeK•¡þÛ3fLZƒ,ýû÷wWüî¼óΈ‹ÔÔÔ¸Ö„[l±ED¨N¡ÙxFŽé¶§Í6ÛÌ}‰­Ï$?ýô“}òɧöüó/¸¿uM<xû»ªPŸ*Ì)ä«q¯¶KúÛ=qâÓî—žÑÖ_ýÐëtoø´B Ûn;Þ6Ø`ˆ ãhŸÒ¥K—Ðvø7{â‰'£®;Ø…€uŸú[®×géÒe6sæL{å•WÝcoN mذa®2Þæ›of:t°üÑÞ{ïýоçAûæ›o ���…ØS±téR÷Y[ô½ÕE]`«W¯nôc·í¶ÛÖ}/é¿¿–T³ôÓme8È’ó¹ Z ���h±vÚ)¢‹‚?þdÂëè{íµ§«À¢É×X4 uÏ=k'u}ôq;å” nbH Ùa‡íC“¿/XkÐäÖ_ÿúw»üòKÃë?ü0»ï¾GLîžxâ#B,?ÿü³ à$¢Éëÿüç~ëÜymHF%Kµìµ×vÇÿ²«¯þk‹«è5¿ñÆ\Ë&?M¸wïÞÝ6Úh#;î¸ßÙí·ßéžc2ÿ©>ì°Cìÿþïʸç+øsà ׆&³·ŠX¯Ê-C‡u‹~=ß}÷ÛWüŸûÒ�ùï¿ÿ}+"È¢/†rÝÎ;ïd·Ürc¸‚Šh¢Y‹öþó¹öì³Ï5y;n8Âzè7‘˦›Ž mS×…Ëû©Ê–}öÙÛUÉ8ñÄ 1'Ï£]}õ•vÐA6Z?iÒ$»ä’ #öõ ÁÄ ²ì»ïÞ§5‘Nˆ%x¼*gžTª±x4ÞüúõëkéT\\Ôh]aaQÜË_|ñ%¡/¥»†OLJú;¤à¨¶Ïhýúõs‹‚šÓ§úRûâÐßÿŸcÞ†>£zè!B¹ú[¾ñÆ»åW¿:*´ÝþÓ}¦iŠÚ#ÝrËMÛ]ô}N˜p’qDãÇ­ê3=zŒu¿=úè_Û…^䂲MQæÚk¯‰ør^Ï_A½_|©½þú���EªA–›o¾ÕÎ9çÏáÓú¿ü_þr‰;î…YÆß>ôýß_Ý×]wÝm©ÐíUUUâ+4����h¡m¶qzòä—6ß|s{é¥ìºë®‰b•þ÷O¼ê6§Ly9ê¾·±ÖôàƒÙ|>­ÿìžþ¹áÓšHV ÄïŠ+®rUâéÔ©“{mü!–hºÍNøƒµ„~aýÈ#6 ±Ä¢ Ñõ×ÿ£ÉËuíÚ%49fÜóUµæ‰'mb‰¦É?M¸©L+ÚU8ðï/âêÕ«§åªž={¹0ˆ?Äâ§°˜¶oUjiÊyç7Ä¢* ÷ßOÌK´Í6ÛÔî¸ãÖ&¿Ü3f‹˜!QßîI“žXç¯æýØTaÆï‘G3Oô¶¦J>©Z¸paÔ}ô²tRu£èê"ª¶É&›Ä¼¼B'³gÏ/?üðC£ËèW•±B,Ñò¸á†ëcn—gŸ}–«db‰¦*Jgœñ'xkÊ)§œ7Ä"W\qYÌK4í'^<xPÂËéoùUW]w_¡ý—~ªª/���@PÄûÿw²ôý£*Kû+™ê6/»ìRWUX¤õÙ;ús²~d¦ª…©Hõ±·ùR‘…öB���@+1bDÄéW_}-îeõ´k¯ý{“! ýçñŽ;îj´^·­ªU,H—ƒ>¨ÉÉå×^{ÝÞyç]ó?Nµš8ñ‰ð>·Ývœk« §ž:!¢o®Ú¨<ùäÄ„÷á½6o¼ñ¦kǰlÙ2�ùýïsíz<&œºßglîܹ–,MˆýãxLª|¢VGï¿ÿuëÖ54)v¸ ²~ø|MVyä.´Ú1È’%Kíå—_¶üɵAY¹²¡íÓå—_1á®Ò«·Ür›M›öž{,ú•÷¯}TxðÀ÷·)S¦´ZµdÚ_|úég®m†h ( ¦ö¹hüøíÜ¡Úp(xWXXà¶!ïù‰ž£ªí¶Ûž1[þˆö'ãÆmã*Si¿§vååímÞ¼†íý‚ ΋˜àVëë¯ÿ§ýï¹jUj5äÑiÕãxúégâ>öí·oxìß|3Çíô«0M\{{ì ×bÈ£°ÊàÁƒµtÙwß}"N{-U<ñÆ_*TŠ;Rz¿®Ó¸TE#èJa™Ûn»ÙfÎüÊý>}ºk”Ì/ÕÑû¢×äÉ'Ÿr-yÔúnÔ¨Qö›ßü:ÜÎhðàAöÇ?þÁþþ÷kÂ×Q¥•èq?eÊKîqª- ª1üq®]—Gá›èRå~zõ™Dû€©SßvëÛµ+wA9ôЃݯBýÔ¶LûNíW7Ù¤á1yŸMôùAÓN˜÷>÷Þ{/w¨Ê-Ÿ}ö¹«ê¢ýÿ3ƒB<jtûíw���éƒ<ôÐÃîð´ÓN ¯óÚ éÿª†èwçÿrKª2dÑÆÒÿŸ¾,k­ Ksÿ'KP��� ÿČ̛7/îeÕæÂ jhröüó/rÿ1¼òÊË"&’tÞÌ™3]?:´¡Š'颖=MQ¨Äd‘/¾˜aÿú×Ý®z‰Gÿñ½à‚‹lÿý÷ ¯Ó„Ú…^bÉx饗Ce'…[é>Õòá_ÿº=|M,éöo¼ñ&K–.?pà€ˆu§œrº½ð‹áÓú5ÉÜ1ñ®öHúO}¢IOU¦9î¸?¸0‹ßàÁƒB“c{†OkRî—¿<Ú>ýôÓð:Uåøî»ï"J¹j¢ KÛ öBþñ¶í¶¹d‘øOĶ®]jÕ±Ï>{…× <ȶØb´ ¼Ä³xñb;ꨣµïQF¿ÓD½Bgë­·ž|ò©6kÖìðeSÅ+µñŒ;&aEî¿ÿûË_.YUKaíƒýû]µˆ»é¦[".§ý¼ŸZ¨d"0Ô)t¸îºkQ „(x”Šž=#«¼,]ºÄÒM­yÖ_}×^ËO­x´üö·¿qkhyíµ7ÜßTýýަϪæwÍ5ÿˆhûóÑG»¿o·ÝvK8¤sÀû¹ ‡w›+W®pA²õÖ[×m_}5+"è¢J0z­o¾ùŸáuë®»® ŠÄjSäÑßÓ N mÛ³=î_ÿúWë>ûì3;é¤SÂá…hôÙAÕf<›m¶™ 4ÈãâQYõ{ï½/|Z¯ówÞjS¸– ��@öÍš5òiÈá– ô’tðÂ,§žzrø‡V±‚&ªÄ’Ž‹¤ë±·PK²YÿÏ=­…����´˜÷+e~}Ïñǯ­pÞyÚ÷ßï }øiâ7«!éÔ©£Áõ×ßàž‡G“<wÝugÄxo¸áƤ'ÿú×kÂ!Ot5Ù}÷]­94ùæ§_yûC,RYYiW_ý׈uª¦ÒTµš³Ï>¯Qˆ¥á>÷8ýüó/D„X<wß}oh2peø´&ás¹Å ’§ ‹Ÿ?Ô–k4±}ÕUÿ/b¶åK/½ÌM¬û©Q"×\s]£‹(òÄOÙßþv«®°÷ÞûE„X<Ú–ýzôèa‰¨åJ¼‹w¿ªÊâ·çž»GœV•,UŸðè¹G_ÁÝfGm¨Rµùæ‘·1gNjÁ˜X*+«\ÀC•½–/_ó2*û=vìXW…äÉ'sU¿¢«Å¨Õž¿MŽZ+ůª¥p˜ÿ¶UyÍ£ªDÿùσöÿ÷ÿBÛäI!Ouuãê0ݺu³Dn»íöF!–X[n¸á¦FhTUFûW- §\tÑ%öóÏñƒ3 "ûC,¢Î3Ï<±®wïô¶‹���RÑT{ÏæP˜åºënˆûcŒt†X$=_åKk!����¦–;^ šhþÿ¸©òHt`#è***ÝDõ­·Þ^çoŸ¤Éhýg7j«¼þú.$ë>’1bDä¯iâµÒ„B%j!à>|XÄDžŸ&ÆbM¤ÇºÏýöÛ7Fë‰þû“aÆ…&4ä7U%Ñ6¤–8Ò§O†˜=ûkË5ÚwUTT4ZÿÓO?Ùôé4kûM¶ª3©2Ël`ýúõµþýû»Jj-âo»ó¨½X¼‹çñÇŸˆøuÚFmäª<ÍÛP‰+º‹Ú¼(°ˆ`Òx3fËðé]vÙ9åjH;ï¼sÄé>øŸe‚ÚâÝsϽ®í×ÒoôèÑªŽ‰Úêœxâ 6tèP»øâKÃ_Jo°ÁˆË©"Í_þrIÌûóo»¢mNíƒbéÙ³‡«d¢mQ¡U_ñ_<‰·Éÿý/öký¸õ÷ú£>ŠyÙ3Ïü³%Kæb‰ÞûÛ���ùFßËéÿ Ñ!­‹þ1�2/‚,Ä‘���€€Z±b…•••…OkÒ&Ö/¤;îØˆÓj'tÁ[QQ¡]vÙ¥áõwÜ»‹ôéù äåËWXºüíå—_±–š2åå¸ç©âŒ&Ý’‘¨¢Mô„p—.]\ŸÞdn[O;wŽXç¯"ã§Éì ¾˜,S¸ ý:>žX׋žìާ©_«#?¨R‰Â,ãǯ­Ä²ÝvÛædeþüïâž§¶<þÉpMš'RUU™ð|Ue8昣m=vw"RÕÔý‰žßÛo¿cÛl³uxîß êùÛ'É#<j®×_Ý&L81|Za Ueùßÿ>´–Pë0F_ôªšX&UWW»¿ÝÞßïîÝ»»¶]ãÇoo;î¸CD/{UARxGmw$Ö6¸ë®»X2ºvíqº}ûö®}ßÁ3LÓUUÕ1×G?n}nˆ®âÖ«V­jÖz��� b…NZJáþK/½8æAtçwŽûÿ÷O<ié€6¼Ï`P‘���@‹}ûí܈–lTCU9¶ß~Ûˆuš`zóÍW#ÖÍ™3Ç^xarÜûÒ¯šý41Ñ-–üFŒáª1$Ã?éÖø¼Ô'«[ª¥_ ¤òe‚? …üöÖ[oEYTaáÞ{ï·\“¨¿u¬_sµÔoû;ÿüscn_ ¢Í˜1#ôXŠUDJ‡Ç{<"È¢‰YTqË¿^²d‰Mžü’!¸TIG•üÕBÎ=÷l;öØß»jstêÔÉ]×ïý÷§Û7ß|cÙ¤ a“'Oq‹%×_­õíÛ7|þò­*!yjQE¶u×ó²‹/¶O>ù4mÓø½��@[4dHúÿ—êêê­¨(õÏÈú‘ÆE]bñãÞ:ýüÌ3ÿä~Ý‚³%ôØ‘X¦ƒ,üï ���Èc_|ñ…« àQ@%ºeª±4hP(åôÓÏLØÚB·í÷ùç_XPœuÖqÏûóŸÏ°)S¦$¬¶âéßÐÀ‹b¾Ñ“dK—.MºÒKee¥«”£ÉƵ÷»µ‰î_-JüZZ>õ‡Ú&›¬=ý÷¿ÿÃnºéüÔ‚ÆOA‰d« I¼mJ ˆ¬Ò rÅ-¡°ˆþ}ª^¿'Ÿ|ʵq™7o¾{Ý.¹ä¢ŒYžþEwÛ^xO<Tñi§vŒ¸ÜSOMt_î!Øn¼ñfÛrË-Â_Ìj|]}õUvöÙç&fÑß]Çÿ7J_øÞ|ó­–nÇ÷;×"È£Š/Ï=7)æeÔyì±'줓N¯4hPøxô6¨PÏ©§žnÍuòÉ'E<w½n?ü¨M›6Íy–,Yj]»v±I“Rÿ¢[-Šü,¡juzÿÒQ•���È5úþLÕžS¡ê^x~DˆE?>ùÛß®qÿ¯ÕÿÁ½ót˜®Ê,Mµ÷Íúr"c‰œÔÞÙø°����mÀÔ©oGœÞm·]\ÂÓ¯_?Ûo¿}â^_¿R>å”Óm—]ö°?ü(îåt›»îºsĺ·ÞšjA ‰Ü_þòÈði…7¼V¢I¾‹/¾0©ÛêСƒm»í6ÖkÒz÷ÝwX§j8Íü‰žxö¨ý‰‡ß_̰–˜9sfÄiè ðh|-Z´vRYão*Gl½õ؈°˜§W¯ž6zôæëZZQJÛ­ûÁØ1Çúí©Ð¤ùœpø'Q•¨T(÷ÜsχOëË;=·wq¹GyÌ|_~ùe£Pz?ï¼óv×*¨)Ú§ßqÇmöí W}öÙg–n={ötmƒ¼E{c•ýö¬³N¿ˆÓþv=_Ù¾LÁ¯DUÑ≮´¢¶‰·ß~‡kѤ‹DÿMMÅW_}qZmâýmU¥˜ûî»Ç…Ï~ý룶 ���rQªa…XôyÙÿÿl…į¼òÿ\PE•W®ºêêˆà¸W™E×MEžY<Ɇd*È���  xå•W­¢¢"|Z%ü=ôàðiµÀˆ51¤–¿ÿý vÀ»2ÿMýçí°Ã˜€Ñ}¾þúÖÚôÝ+®¸,b"íÖ[o·›nºÙ–-[^·çž{4 âÄsî¹ç4š ×ëèÿºL™òrÄéèV%Ñ­yžzêéˆÓ ¬ìµ×ëTYáì³ÏŠX7þwöÞ{ï[KLœyŸªª£û6xð Ð}¼m?þHèË‚Ëíè£ñ%ò›ÆîÛoG†â¶ÛnœåMV_xáyÕR´o¸øâ‹\àÃ/zûM–*;øiûŒÞöÕê$^P-}42¤¢öB›n:*|úÓO? TÅ,$và 7ºj$~ª0róÍÿt­yÔŽgðàAn|kÑq­»á†ëBëþ³¥ÎvÛmúû²§¥ÛG}qzÈ!îKçèíBÛÝ~ûíë?«£iÓÞs­ˆ<;wv{¢iÛ½÷Þ»íßÿ¾Ïþò—KÜezõ꾟èÊ‚ ÝÆÞ{ïeé¢ÊKÑUY&L8)ô÷»]Ä:}FÚÄ6Ø`ˆ+“~â‰'¸¿ñ���@>Iµè)§LhÔNHÁë Xa]G×MUL›–éÖB����òXEE¥+ݯ_úzN=õäÐòž³•+WÚì^¯ÿ )Ø j%_~93éûÐ$QôU}À I•~Õ­IŸ¦Üyç]•Ž=ö·í;Ô>èÁ²êêj÷<ÿô§ÓÂç]zéÅ6uê;îuIdذ¡6iÒÓöøãOº0̘1c…`tû'NŒX·re…uëÖ-|ú¿8"´n…{­5©¬×þü½ ¸¶Åɵ×^cÛoÿ„«êеk7;üðCmýõGÜ®ZEO”'K÷­VS^[(ýGÿ®»î°ýënWÍG&UÞøýïu]‹&Äœ¹÷Þû mÇÿûVĤó¶ÛŽsìé”Ìv®€ÜË/¿b-uÈ!‡&Ž7°É“§¸@‹Âb#GŽŒ¸Ì¬Y³múô¬%¢'Éõ 0m·/¼ð¢«6±Å£í‚ Îk4±ŸN "ªúË Aë¹ÓÑ“ÿTcÉ-ÚŸþ…vùåi43fK·4—öõ‡2iÒó–./¾89ô÷âx×NÇ£m@cf̘a?þø“µk×Î?{ôèÞèúþê3úú´ N ¯;þøãl½õÖ³—^zÙµï8p yäá.0#úû¨Žþ>{·¡E½{¯}<þó™ö÷¿_㪦õìÙÃöß;昣-]tŸ÷Þ{ŸqÆŸÂëô9äž{îvçõ¸µÏ‰®†§}Ž?È���äƒTà ªúèñÚ ùC,o¿Íÿº-A¥iA²Ð¢���¸þó¦ÐäíA®¼½¨rÊ5×üÕN8a‚½ñÆ›6nÜ8{ꩉv÷Ý÷¸¶;Í¡ÿ^sÍß"&­V­Ze·Þz›¥S²Õ ôW/È2`@ÿF›üãZ2…5&Q{%Qµš3Ï<Ý.½ôò¸·¯ Ì?.r“P'tBÜË]ý?Cc^Ä:µfÒcòŒ¹¡{í{ìñÐÄÚ¹.øsúég„&îî³ÒÒRwUË9âˆÃÜËóÏ¿à‚9©Ð}?ýô“á÷P•bN8án‰Eóüó/2´-o¼ñ߈Ójo¢ö8+V¬°tIf;Wx¬¥A–×_Ó¶ÚjKÆòW(ñÓ$ô¹çžñK®æ˜<ù%תL“õ¢í骫®p‹Ÿ?h’ Ú¯œqÆéÖ7„ìž6ämggœq– u~øa ÛõÄ¢ñ¬˜ÚìxÕ´2fQë¬ .¸(ô7ðÕET5eã7Nx]ý=Óg¿ø êø<»ï¾›[âùë_ÿ±_Rhí¨£~>­0ÙD1UùEÛjºZ =úèã¡}ÍVmR÷¹AÚ«¯þ���äókjV‡þOZäAu}צÏ÷ñè;AýŸWߦbY”ÖBÊb´ì×kY@k!����)Ñön¿ýΈuj5qÞyç¸øqÛ‡&PþÚ¢ËùçŸÛ¨Ém·ÝáÚi´6µðO¤)Hâ¯DPYYéJúýêWGÅàýã´ÓΰŸ~ú)îeÔºHK´›o¾ÅÝg´Í6Û,|\- ;ìH›7o¾5EeN9åtK•žËAêª84Eë¿ø•}õÕW†¶åûï¿·Ù³¿ŸÖdøV[±\2{ölWÙ"Þ—QUUU6a©Im ñ,^¼8´_='á^S¦¼d·Ür«e’*RÄ ãèK¿¥K—rÆÔu×Ý`Çó;{çw’ºŽ~±¨¶DÇ÷к䒿DŒM/Ì’Î6CŸ|ò‰xâûüóÏ“º¼¾h¾ë®{ì²Ë®hT]L§Ï:ël{òɧš¼ÊʪÐßýËmÒ¤"Ößyç¿ÜcJtÿzm–/_nétÞyØÃ?ÒäåæÏŸz½Nvb���»fÍš‘Õ%—TWWYKm³ÍvnÙo¿†X<ºŒ.ë]¯¥RyÌm ­…����¤ì–[nsåöõKdÏoûW!äO:«Ùm€ô«eU‰±L›öž«�ÓÚöÝwÛa‡ñáÓš Ó^ô$Ù³ÏNr¿Ôö~í­I½+¯¼Üößÿ ¸Ñj;²ß~Ù)§œä*HtïÞÝUjQPæž{îumwbQû C9ÜU:Q�@¿ÑĹÂ-ª¼¢_²Ë'Ÿ|j{ì±·í¹çîvÀûÛàÁƒ\[½Gj[¢öGšûê«Y–.?üðƒ ¨¨]ÌÁhn¸¡õíÛÇýŠ^óŸ~ú™kå ÉqJ«¶]j/äom¥ñ’J›ŸÖðä“Ý„ñ‰'þÑFmíÚ•¹àÝ›o¾iÿú×=­ÉZJû•/¿üʵ6Ûf›­CÛo/·}Ϙñ¥Û†TEé ƒ´LRðHï—¿"„ÐV(÷Íœù• TöïßßµâÒßUZëÕ«§ ˜-^¼$4Æ¿uÁÈ×^{ÝæÌ™¾®BTrÉ%e´2Ë_ÌÿßÛÖ[µqã¶qÑîÝ{XçÎÜß%K–ºÇøÎ;ﺿ-‹-Š{[º¼Â¶ÚvöÙgïÐv»Yè¹ör¡>™3ç[{÷Ýwí‰'žt·M—?þñ¤Ð6w@è3Ë®n¦«ª°è3‹Úä鱤›¶ùüã:{ê©§CŸ)öuU¬zõêzÜ\e©™3Zû=÷Üó®’���¯ÔfWŸßs‰3š–lëž‚$Ï+Hâ° Îio)ôzKÑšuEQ‹Îë¬ÃѣǼ¥ŒõŸJ����™×­[·ÐDÏ#6pàÀˆõ 1\ý¡ ÎG›,›© /…+Î:댈vB¢É`UöHT­$×}ô¯\›žãøñ;Dñ~•5dÈð˜ç7µ>š*9ÝzëÚ š&b÷Üs_C0]}õ•v衇„O÷Ýw¶Ã»´¸mR®R‘´-ûÃ,¢qqá…ç\8 ùMAa��€\í*)ñþßT:u²òòv– †OwÅFO×®]ÜáôéÓÆ…ôŸóekk£–ú5‡u¾¥Þw½XœÓ‰£Gk²¥Y����¤…*kü ö¯Ýf묳Nx½~É}ű N°É“_r¿ž7ož-Xð½;¿_¿¾6`À�W}d·Ýv±¾}û6ºm<~÷»ãó*Ä ÒÔ©o»*ª $C‡uûUÿ@°(t¨Š3~>úx› ± ¶x•YN;í‚,����ÒNU†s%ÈÒܪÕmA����i£ ûï°Ýxãõáv:ž~ýú¹ $Zšcúôì„&Ø?þh�ò×Ê•+í£>v-2<Æm@% ´OßrË-]hQmßüm Ôºäþc€'V˜E¿<���Ð|¹V!%ÛTzÅŠ•®Õfé16U­kd���Všä<æ˜cíä“O²ã?ÖJJJ¬%41zûíwØ 7Üd555 u½ÿþtÛb‹È*ï½÷~Ìó“Y‹Z1Â>üðC{å•Wí­·Þ6Ã/y¤í»ï>1Ï»ùæ[mÑ"†ˆ¤0KuuµvÚ©¶zu]~ùU����™ J'eee¡ï!ƒ¨©YM5–f*HÃå bOtXç´·ú½¥hͺ¢¨EçuÖáèÑcÞÒ .Y²Ô����ÃÀí<Þößkß¾<©ëè?uO=5Ñn¹å6›7o¾å3U§¹øâ çÕBiüø �‚D5Þ{ïmëܹs£óžzêi;묳Ûì¯Êz÷îe�rÓÂ…‹ ���ùC­Š»wïfAôóÏ‹];åLêÚµ‹;œ>}Ú¸Ðzÿ.[sXµÔ¯9¬ó-õ¾ÃèÅâœNt}<Z¢ó*²����Ș¹sçÚùç_dW\ñ¶ÓN;ØÖ[µ‘#GÚÀ¢˖- ]nž}öÙg6uêÛöꫯYEE¥�‚¡oß>6{ö×6hÐzÖ©S'·ßþøãO졇±çŸÁ�����hm Š,[¶<ôc' =¦L‡XòY������€ " »¨È��ŸTºcÇŽ+V¬ÈÚöò­"K¡������h¶úú&¿{@l»���ùKÁHZ[6C,ùˆ ������еµu ÷°í��ä7HÔÒ§µè¾ ±¤¦Ø�������4[míj+..2�¹EÛ.���ò[UU•­^½Ú:uêd%%Ù‰EÔÔ¬¶åË—»ûEj¨È������´@MMÈ=l»���mƒ%‹/¶+VZ¦é>t_„XÒƒŠ,������@ TW¯²Ž @ŽÑ¶ ��€¶£¢¢"ô°ÚÚ·ooååí,*+«Üí×ÖÖÒ‡ ������Ðú¢rÕª+--1�¹AÛ,“ ���m>ªíÏÊ•+­]»2++k×â–Cj!T]]eUUÕVWWgH?‚,������@ éW}Y€Ü¡m���m—‚'•n)**²’’·è¸–ÂÂ+((p—­¯¯]¾Þ…`´¨E¥‚Ñ™G������h¡ÊÊJ+//·ââ"l«W׺m���/ RUUe–B������Ðb*M øØV��€Ü@������HZ•TVò > È´ÒV���È Y������€-_¾ÜV­ª1�Á£mSÛ(���€Ü@������HM”¯^]k�‚CÛ$!��� ·d������Ò ¶¶Ö–.]Je ´-j›Ô¶ ��� wd������ÒDæK–,±ÊÊ*Ðz´ j[$Ä���äžb������Vje²jÕ*ëСƒ€ìP+¡•+WZuuµ���ÈMY������€ ÐDº–òòr+++³ÒÒj#¤í­²²Ò����ä6‚,������@ib]KQQ‘•••ZIIIèxqh)´‚‚Ð<õõõV[[ZV[M,«h!���ä‚,������@h¢½¢BÕ"¨����@<…�������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������A������������B±���hS ­¨¨ÈŠ‹‹Ýñ†¥À CK���ÙV__Zꬮ®>´Ô¹eõêÕV[[ëŽ���h;²����m@IIÉšEá•"���‚Dê‚‚¢ÐgÕÆçÕÕÕZMÍêÐRã����ù ���§\)--u ���«Ä.+ÓRæN¯ZµÊ-„Z���€üD���È3íÚµ }É_Jå���ä%/¬­J-ÕÕ«¬ªªÊ����ä‚,���@ž(//w¿RUYv��� ß)¸­ÏÀ rWWW[ee¥���È}Y���€§_£¶o_n…���´5 r{U +**]Û!����¹‹ ���£ŠŠ~ZRRb���@[§`w‡\Ð[ÕYjkk ���@î!È���ä µjß¾½���ˆ¤ ·–ŠŠ ×r���@n!È���äXd���Ÿ>7«Š¡-����rA��� G6”J/.æc<��� ÀfY¹r¥ÕÕÕ���€à+4����§/ß;uêHˆ���h&}†Ögi}¦���|Y���€€óB,……|ñ���´„>Kf���rA��� À¼KAÝ��€Tè35a��� øø6���¨ÂÂBëØ±!��� MôÙZŸ±õY���@0ñi���¨:ÐN���H3}ÆÖgm����ÁD��� öíÛ[qq±���H?}ÖÖgn����ÁC���˜²²2·����È>w���ÁD���¢¢"~ ���d‰>{ë38���€à È���Hyy¹���È>ƒ���ÁB���ˆÒÒR+))1����Ù£Ïàú,��� ²����Ѿ=¿���ZŸÅ��€à È���€Ê™ðñ���h ú,N‹!��� ø¦���€²²2���ÐzøL���A��� •µk×Î ���@ëÑgr}6���ÐºŠ ���@«*++µl[wÝumÇw°­·ÞÊz÷îm}úôvëøa¡-\¸ÐÞ~û]{õÕWíÛoç���ÐVè³yUU•���h=Éþì³ Éó ’8,ˆsÚ[ }‡ÞR´f]QÔ¢ó:ëpôè1oé—,Yj���@®())±Ž;Z¶ 2Ä&L8Á¶ß~»¤.ÿî»Óìúëÿi_|1Ã���€¶`ÅŠVSSc���@®èÚµ‹;œ>}Ú¸ÐA]hY¶æ°6j©_sXç[ê}‡Ñ‹Å9è0úx´Dç9´���ZQiivª±Ù™gþÉ|ðþ¤C,²ÕVcìÞ{ï²3Î8ÝÝ���ï²õ���@lY���€V”/É;uêd7Üp­yäáVPlQƵ í¿8Â݆n ���ÈgY���€ÖUl����Z…Ú ešª¨\}õ•®²J´·ß~Ç&O~Éþ÷¿máÂ…n]ïÞ½móÍ7µ]wÝŶÞzlÄåuº­“O>Íjkk �4a;hÐzÖ¥K·ÿñÇŸlÞ¼yVWWg�ÐVé³:í…���€ÖA���h%Ù²œ~ú©B,ß|3Ç.¿üJ`‰6gη<ùäDÛl³Mí ϳõÖ[/|¾në´ÓN±¿ÿý–m;v´ 7aƒr“­ååí¬ºz•-_¾"ôœ¾±/¾øÂ~þy±a­ƒ>ÈÖ]w -^¼Øî¹ç>˦>}ú¸J>žgŸ}ÎfÎüÊ:UV<x° >Ô½ÎÚ6´®ªªÊ-ZÚ†¿µÏ>û<´}T‚§¸¸x;l°õìÙÃ:tèàÂ#+V¬´ï¾ûÎf̘asçγlÑcÙi§#ªh,ÝvÛ�mA��� õd���ZIIIf?Ž1Ü?üЈuï½÷¾yæÙ¡ ÓM^_A—cŽ9Îþú×ÿ³-·Ü"¼þˆ#³gžy64Ùú¥e˘1[ÚØ±[¹ `¿òòr·ôîÝË=Æ?üÈÞxãMª€&Ç#OoH% 4Öwß}7ëÙ³g£óˆÐ2hÐ 7n›:õm›>ýCp <ÈvÙeg>òSõ¬îÝKCK7Ûxã\ ð…&[EE…eÒ€ýÝxòÚέZµÊ- <zûÑ£Žú…õêÕ˾ûn=üð#�mE¦?«���ˆOã���@+(,, -E–I§œ2ÁÝG“ɆX<Ë—/·³Î:Çî¾ûŽpeݦnû¤“N±lØvÛq.È"šXÕóPÕU›hß¾½õéÓÛU6ÐãÚ|óÍÜDþsÏM2´½ÇsÇ5ù½Î:ý\Û’öíËC󕆖<xí»ï>.ô ÚæÍ›oK–,vÕ‰ŽP0¡S§NîWäãÇooýúõ³I“ž'Ü�ë¯?8ôþíÞ÷ÿý÷®zÎÊ•+]5”nݺÚСCÝqío=ôQu”L5jT8Ä2eÊKöÉ'Ÿ� ö×úLÃßP��� û²����­À›ˆÎµ“‰n)tùåW6+ÄâQ˜åò˯²Ûo¿%¼NÕQÖ]w]ûöÛo-“Tu ±,[¶Ìµ<úùçŸ]®sçÎn‚_Õ*† j_~ù¥}õÕ,CëPEUÊ‘×^{ÝŽ8âP74bÄ*„´¶…}öÙ;¼ïPë ·ÞšÚh›V(Aaˆ]wÝÙ"†Ý t™íÜû€Ö£÷mçwrÛÁêÕ«mÒ¤lÖ¬Æû(½O;í´“«h¤ê,[o=Ö^}õ5Ë”®]»¸Ã¥K—b€´ÿ&È���d_¡���Ⱥè9é¶ãŽ;Fœ~ûíw\« –úàƒÿÙ;ï¼±n‡¶·L9rm{šgŸ3Ä" ¹<óÌ3ቆ‘#74´ïõÿùçÅöÃ?ؼyßE¬Góí¶Û.áýÆÿû–½øâä˜Á´úúzäzüñ']‹Q¥¢X­ˆ=ë­·n¸Z>Å ±ÈªU56yò[¼x±;Ý¢+ݼj,+Wf¶…�äªLf���ŸÄ��€Vàoù“ [o½UÄéÉ“_²T©í„*±xtü¾ûþm™ÔµkWwXSSã‰,[¶Ü^yåUk×®UTÄŸ”Õ/k7Úh¤k}£Éý’’b«ªªvm>>ÿü WÉEa€DÔÒhã7r•GT5¡´´ÄµÌY¼xIèú_¹Êµµµ1¯{ê©'»Éc…‹5j“ÐãÙȵQ;˜ýënÌñSÅ™M7å*íè¸&Utµ•ùøãmáÂE– µ]Úb‹ÑîqwîÜÉ.\èBNjÙ”eee®Žx“õ:Ôc×ë­ª9M=^ÿk¤euÖ±-·ÜÂúõë몌(À¡ñ Ç­ÖE™¾Ïúë¯ï‚º¾Ú$ÕÔ¬v•,fÍšíÂ^^p$ÝÔ’¦OŸ>îøœ9slÚ´÷š¼ŽÆ³ž³Ú ‰ÆÏK/½ó²ƒ²#†»6D#»+V¬t-¼>üðC[´èǘ×SÕ§qã¶qǯ¿þŸn\ª‚’¶­Ž;¸p„¶)so{иÓ{ 1¨ûR‹°yóæ¹çï~¢«¶½¾}ûZyy;÷üøãn»ýôÓO]$¿M6ÙÄàî_4æÎkï¿ÿ{?3ÁÛ—Éܹó^V<UféÕ«—;­×UU\bÑXT{ o›Ö¾A¯‡öC±Ú|òIª‚©ý×i§­m÷ÙgŸÙÈ‘#^ææ›ouïŸÞï½öÚÓ­SÀJÕ‚¢éoÞ 'üÁíãôün¹å¶˜Û‹îs÷ÝwuÇŸ{îyÊòÓãÖ6¸ÁCÜë£1 ¶Zª¦}˜¶åxûÿƒ>Èí‡æÏŸo<ò˜kw6zôæ¡1ÑÛýÝxñÅ)îyûi;ßl³M]û:½‡zj¥1ûÑGŸ¸í @~Ëôgv����±d���ZA¦¿ïÛ·OÄéTª±x4Qï§ ÔLó&o5ù©ðH¢€Š|üñ' ÏïÔ©“í¿ÿ¾á bn[!-š |î¹I.˜˰aÃÂm[üTmA‹&È7ÙdcW£©Ç»ï¾{Û!C^FA—wܡјéÖ­›[t_zo^ý„Mt|ð.hâѹZÞ}wškU“*Mj{“ä^{'î´ÓŽî¸&ª.L¾UŠbÛÓ¥K·è½Hæ¹§z;zöÛo[o½õ"Ö—•¹Ip-Þ{¯jP*6Üpm%›×_3éë}øáGá_’WV6ÏÃjæ§÷¯{÷RÒRèK¡Š¦ö!Ú†Ðu<ÚÞvQ�@Û”îG¯£¶gÿõôú+˜ðÌ3“löìÙ1o_IïßðáÃ#Öë=èß¿¿[Jxæ™çâ†ÞÆÛÚÆŒ®Bâñ¶%dÔògæÌ¯,ÝüAµóQ€,…2…Ë´?Ð~(:l¢÷[¯©‚> Mšô|ÚBj–à±*œ¢Ç¤pH¬ Kÿþë„ßw]nÀ€1ßëAƒÆ¢nO¡-?á4^ý¡ Q3-Úµ¿œ8ñÂJDUŠvØa|ÂË Ðßµ¬SÈÅOaB½îZ´]h¿AÛ d���ZA��� X&õìÔX´h¡¥*zâµW¯Þ–i_ý›ä–=÷ÜݵR€–ÐdäGnï1{ö×®zŠÂ&špWÛU¤Ðëìo?üh£ª*š¤Ýk¯=ÜD¸_|1#ô¿v!òòö6bÄ0†Ñ„ë{ìfO<ñTÜÇ£ûÓ„¨*¨’„ª(h¢×8ÐļWQCÕ Ôùá½õî>žÐ®&e5‘úƱC ì³Ï^î2ª|¡÷²  aÒYÕ ô|8P…—o¿ýÖRáµÒóñª` ‰eUDQÐ%Ù‰_UOP(kÉ’%öî»ïÙ÷ß/]¯ÞUÕÐãÕk ç^__—0à‘êíì¼óNáKC%†Ým)¤÷[ÕN4®4é}ÿýÿNû¤¶¿üôÓOnI–ƯJ±è=?ðÀ\• ÑóÑøúñÇŸÜØîÓ§·_šðטITµFa+Uayÿýé®BŠª(£€È°aC](AcY‚zýTÉBA½~z~……En›¹óλbVêP�F+Y´h‘«6¢ê)z|ƒ²¡C‡ºíø ƒ°|Ø=?…¶Úª¡¢”®§Ç©Ê@Ú+ô¡q }Ä{ì+¥“Âz]õºo·Ý¶îuN%ô¤@‡^;Ѷ¦×T­¼Úµ+s¡mןڗ=õÔĈ0ËþóyYž£Žú¥;TÕ«‡~$|íg½ðb¼Ëè´wÙùó¿s!>…•¼ý£_tL­–¢ƒ,ºžªÒíù÷õÚ¾9ä ÷~‹¶CíõÜÞÑõFÚØ½‡zmî¾ûÞ¸’„Ñ{ ë*ì¥J@ºo¯“h»PðOãR!$UjQ‹´Õ«k¬{÷în›×xSµyõÕäÃy�rK¦?³���ˆ ���Ð "ȬzK·èÇ\…ïõgÌøÒM†+\¢‰Êßþö7nûË/g6YÑ š&ã5ª VU]ˆnY¡I|U Ñ¥ª—èpúô".£°ƒ&<ëêj]H%ºEˆns·Ývq­‚4q«vAñ&ÄbѯùãM€j²tÛmǹãšpU+ µÏX{_3Ýã;ôЃ]C¡µqÑ$|¬ûÒÄþý÷?àB%þÇ«@‚²é¦›¤dÑóU(@¢«ZhÒYA–†àÁàpÛ¡DtyMö+Täo‘¢ç¢ ’&šu™Í7ß<tû_Ʃ܎Â� ˆÂO>91b’^c@¯ùn»íêZ»(DÐTë˜æÐ˜õªè(h”.zœ «ˆcÏ<ólDpKã@ïá¯}” Bi{HdÑĿƗ¿-–ƧÂcÚžôúh»yôÑÇ#nGÛÀøñÛ…Æïh÷<tŠ®¬¤}€bÑåU!ÆÿhÜ6˵·QA™‰ŸŽ¸ /p ñ¯ ‡èñÌ™ó­ýâG¸çªPL¼�PKéuÑmª%›¶Ç_ýên¬iüöÛ¹Í ?éõðB,zïž~ú™ˆë«"ÊÇêÆµÂBzíï½÷þp0Ä¿P(HªæhÜÚiy—±5ãkdÑë¯÷;ºåŽ‚+¢q¥}¹wÚO×óªŸD‡\óB,ªýþh;VpNA$U¤‰5Ž< Y-X° ´2f+ª†ê?»¹‹Æ‹öõþ×L÷¥àBS ?jl)è’l‹7�¹%óŸÙ���ÄÂ'q��� d8fHGõ”^½zFœ^²d©eš&gŸzêi7I(šäÜrË-ì—¿<Ò~ÿûã\u¯ò@"š¸1¢¡%‰&×£C,M{•Z‰¦ MMÖ?õÔ3qà ÚxÔê"ž+V¸Ê$ñèþ½=Ï?ÿBDˆÅ£ÉøÉ“_r•TY Q{—_~5"ÄâÑ„¬WåcàÀ–  œ/¾ø"â<od6ÚÐ’õò˯D„<ª’0yò7F´=©¥H&nGáo{UØ!Öküé§ŸÙC=l7ÝtKZC,¢±ë‰õþµ”B1·Þz›kùó /6ª>$ÚTùB2Häí·ß‰±ˆ^Ó÷Þ{?|Za¦XaUÉñ(”MÛ¼(bñh|)Ð"ë¯?صŒòS;QE£Xã@Û€ÞÃ[n¹-í!ÏÔ©o»m^cN! …3Tç„þ:Üßmó ¹4e‹-^UoRë X!ïµÿþ/SfÍZ<‰©´o_nçööÛïºCUEѶå翞ÿöDïÉí·ßéžo¼÷GÁG¯JLSãUûÍX!Q»7¯}Ñ”)/Å ªÚË /L¿ö ÁÈOTd���ZY���€<ôý÷?„[4Èæ›oêªI¤B?üR½½dibòŧ¸J ª ¡IFZ~u?Ü- H̘1ÓM¦«mH´¡C7ODxí2bѤ¤&÷Ùfk×6¢{÷n.$â§IÍX› @1žùóçǭ ö+z̢ʉ*a¨ Á½÷Þg‰è5œ;wnÂÛèÑ£‡«Þ 6šho o²\¯Ytå…ÔÞD•$ÔÒHÕüm”bQx'QU»ÑëÓ¿ÿиXßM:§ûvüá=?•bµ,Y°à{Ë/Ì$±M¼sÌÑ–ÈM7Ý1y¯ã €$âg¯F<ñ^_ÿöØÐ«1=/-Ú®£ïGÁµ'm»‰ÂZzo¼ÖV E(¤åQpLUŽ èïcµõ‰Wm$¤SàBû2U QàF-ÅTqF‹*Giß ÐK¬×TBí—$ÞXôh_¶ýöÛ¹×UûI…Ý2Eï³^S½¶ªFõÎ;ï†ÏóÚ )è¤c:T`G£üÁ?íD·Šm‹zíÑxÕëY^Þ.îet;‰Ú: >Ô*È¥Š7ñè|¯¥R¬ 3����� å²����yHŽ­¶>­Öj‰’Š]wÝ%âttÛLSÛýŠþ¥—^q•NÖ]w ›øTKU7PeM ¿ùæ=655¼_ÛÇâWtíÚ8Èâ§àGÏž=Üí©L—.Ã-PD”xâUUPðZl¤£Â‡&n�V¬XÖÐ$pK‚,šÌõªIDWcñhb]A½_ …$ ‰YMQÈG ôšÅ {¤r;•¡Éó. q§öV ¨:‹Â/M…qRåFyc"ôR¨BA„N:º÷RU4´I¢±,ñB6þq«ê‹Ç uEßÛUh#Ѷë ^øÅ£±¶Ë.;»mVm}¾új– V)ˆ+ü–IÚÕG‹Úq©’öe |(¸¤qx衇¸q§ŸÿuóW¬IN½¦ Ãl°Á·ŸÊ4UQÑøéׯ¯«’åµ2òB•ÞãÕ¡Ú¯ùƒ,º¼×–,ºK,zèÑûܰïíâÚeyÛˆö1ñ$ ÿˆW=¦©ñ&Þö¯Ð¢ÆVS· �����’C���ÈC¯¾úšrÊ„ðé±c·rm+š Ä£j,þ`Œ&§_yåUk šœUÛ -j1¡Ð‡B,cÆlé&CÇßÞ***\¿=KSU+übýª_µ›m6ÊV’iÒþÇ«J©JbI½…"ü§=þÂ&›lÒäx¬¬¬°¦è½öèu‹¨Hõv¦LyÙ=§aƹ ‹ªih¾ùæ›Ð„ü' CO-å¯ãÿJ{î¹ç­ßzë±á µµ‘€ô~è}1b„ (ä4þç|Àû'}½èÊ.ü‰[§}¡Bz/µˆ^ão¿kŸþ¹;Ì&UÒ¢ê1¥¥%®âÔ˜1cÜ{¦ðTC뫵‚ü¯G¬vcѼˤZm)³gÏvûam+ @Íœù•[ï…¡æÌ™>l²¬me¦ã^Õ,ÝN, ©xU¹pÊT»¯’–‚kÍû{QN����€4!È���´ 25 'šŒUkMÚz.¸àÜФÜqIM~úuîÜÉ]×oÚ´÷¶\È&MB¿÷ÞûnÒô—¿<Ò…YÆÛ&"ÈÒÒ×:zbäÈ‘¶ë®;EüÚ_á…%KÛÒ¥Ëì§Ÿ~rÕ9ä`K—l„PR¥×iƒ 6ŸVk¦¦h¢^Õ%µiò·ÕiÍ˨5“B"g ¨úŒ»‚ zZS… mé¤ “*[h\«âD< m‚·]ÙtÓMBÿvsU=ü•=l8ôЃÝd½G÷£÷CcYmS.\¸¦ÒÑpk-éÚvEÁ·Ï>ûÜ='UéÛ·«@ä…á´¨RˤIÏ'¬“)zUµHû²C9Èúõëçö9ï¼3-f«dø÷™ü›#ª|¤@˜‚ z}õ<Ô²L¯¯Ç·ß~ë.§CV0EµtÒ6%º~¬6]½{÷²< ¢]›¶ µÒx]¼x±«ª´÷Þ{¦0Lç˜ûrás���ø_6���Ð êëëB“eMO®§âúëÿi÷Ýww¸ †ÚVüíoWÛ™gžt˜E!–¿ýíÿ…[Cˆ*¢ÜxãÍ4 ¨ǨQ£ÜDfûöå®-ŒxU-ôkù›nºÅZBí+¼‹ªu¼þú›6kÖ¬pû O:ª´ø«p¨ÍKÐ º F4×È‘†^Ç7➯׼):u ÷¿n™¸µ·Ò"š´VB­’FÚÄÞvÛq.Ì4{ö×–Nj/ÕЦ§«¤Éûdè1ymR¢¯³ÝvãÂ!Þ}÷](ˆæU-i-þ÷âþ~ý[Já…´hߨ£Gw·oÜl³MÝ8Ñë¼í¶Û¸í»µ¨jŠª)È¢P…Æ™d‰Ü7trÕ\ñƵö} de’&{UHá¯ÚÊ€ýÝá?ü®r¤C…¤úôé:€w4\þë¯co;{ ±è>¦M›füi³C™ÉÒk¬ý¸*ÃLœøŒhÛô™���@öd���ZA]]½ùº¬dÄŒ_Úƒ>쪔x¶Øb´ÝsÏvùåWÙôé$¼¾Ú ©‹?Ä"o¼ñ¦}úég–iúþvÛmçŽÏœ9ÓµiŽ‚‚µ/ðO?5Lâ+lÑœ €ßzë­®Ä2eÊK®rC,eeÍtDÓDª&{U± a‚÷턗ׄ¼F­Åk#¤IæÛo¿3¢MO,¿ûÝ1n¢xĈáöæ›ÿûØ5‘ßÔs8°a¼²²2f[¡tÞŽŸÂóæÍwËW_}e‡~˜[¯6=é²¨Šˆ2~üvöä““ºžÞ/`4gηç <ت˳Ï>÷6Úµ+³Öäm»Ò·oß”ƒ,~ Qhùä“Oíè£åÂzÓdÑØ;ð@µE*pÕ›^~ùÕæ\=¢Bˆ‚R…@µBÒõ¼ É?þdÙ0kÖ×.ÈÒ¥K êß¿áþ¿ùfNÄåTÑKA¯¿U^û+]?šnKûmùðÃì­·âïµÏL•ÆœöOoz ©Æ�´múÌ��� û2üÕ9���€X²:¸îº\‹!?Sn»íf»é¦ìàƒ´õ×ìZ?hÑq­ÓyºLtˆE¶ß~;ÛgŸ½-ÓT9A¿êײù曇+ËÄ£ {¯½ªø+|ùåÌðqµ€ID¿ª²¡V.~jAâQ;¡x† b©ÒøP• Yg~Ö¯_߸—U•ŽOü£{ß¼öÙ¤qã…@æÎÛdˆE¾øâ w¨ÐÀ A뎜ÞÓ6÷|]×›�,Jõv4¡½ñÆÙøñÛǽ¾Zš(Ø"™~¨J…*X4<ÖA¶ÕVcš¼Ž&ÿµ­ŠÆÓG}q¾pI4–u…%Z“*y¨Ú’¨òM¢ý€Þ+UùñW×…† j;î¸CÜê< /-ZÔ’‰ÞöS¥×_÷«}™Æ’Þ›¦èyxÔ6Ç£ wz“M6½G%qocà 7´òòrw\Õª²aΜ9á¶L묳ŽÛIt+:/Ø¢ó½–Yºž×~È/rß?„¨}wK*CEóZtiÿ4tèЄ—>|˜ ã$Ó¾ @njÍ 0���Жd���ZA¶¾×ÄàÙgŸgo¿ýN£ó4~ÞyçØÃÿÇ^{í%·è¸Ö%š(×DòÅ_ñ0‹Úya… öÞ{¯¸ÌšVC]½E-(¼ÉIMþjB<Þíì»ï>¶ÿþûÚ1Ç19¹dÉÚj¥‹&ªÇŒÙÒÒA­E¼ á½öÚ³Ñä¼h‚~=vs-d&I¦’Hº©ê‡W1â‹/’›,ÿüó/ÂÇU½!‘í¶ÛÖU牦Ю»î⎫bÂÇœ‘ÛQ @ç«BQ¼0Œ.£÷@Tá$Ýô¸&OžËŒ·kµkLˆ‚XGyxxRÿ¿ÿ}+ÜšÆãgMþǪb¡ç£ûHG0 Uï¿?Ý*´µÛn»Æ (ì Ç»ûî»Ù±Çþ6â½îÙ³‡Û¨}Ú?ÅÒ£G¼Õ“tQ%QU§Ø/\a$š^ïÝvÛÅ–DAžè*4ï½÷¾;THeÏ=÷ŒîQµ“wïŽ+Ô—ì¶‹×’H­æš¢1ª@›Œ1ÌxTåÈ byô¼´¾¡Îp·NUƒ¼1î·lÙÒpUU&Šõ|õØôÞ§ƒþîxÛË.»ìãDÓcѾù°ÃÉJ¸@ë È���´Z ���­ Öd]¦¨²É©§þ)´LMnÑde“húÿÕW_·vØ><ì…Y$Q[’T½ñÆ®‰&C5i¨ö>úe¿*'¨êŠ&ru¾BÞóRàÝw§5º-µóP‹Mþï¼óNnòT--rQ@¦wïÞ.äâÞzkj8H"já¡ÉM¶ÙfëÐÄww›5kvh2¶Ê:thoƒr¿ÞWµ„x“ÔÍ¡Ê ¨ˆîó׿>Ê>ùä“ÐðBÓœn¯^=ÝãõBÓ¦½çZ¤d›W9B¯U¢ª(~‹/qÙšl_ýAî9Ä á|óMCû‘#Ž8ܵ³úî»ï\‰ÿ>}z¯©FѲPÐ!QË™TnG¡(UñÑQ EcM­ƒªª&áUÅȫڠ ÿ>ø°ÑýrÈÁáj9÷Üs¯{þÍ¥÷ö¹ç&¹ sm‡¿ª1wî<×®¦ªª:´tpT4^< 0xA?UhÙm·>î9uÔ/\ÐBÛŽ‚ ~¨rˆnGã0ã9z¬ vèµVpJÛ¼Ú-é±i»ïÚµ«mºé(WHT}Äÿ>Οÿ-X°Àmÿº~—.Ý8ð¶}­×óõ*h[Š6vìVn»——^z¹Ù­ÎtyUŒÒ8Ðë©íYï—ºo½îzž^`Oû8µ1‹¦Ç>dÈú.°¤×D¡;ݾÂI%%¥Ö¿ÃóÔ{é… ª««­¥ôú)ä£ý°¶Ù³g»Ç«ÀG¬ ^m ï×úî´*ÑíytZë5޽*Vª<˪U5n_­ËªJØá‡ê^ƒ¥K—¹VnÞû§}*ByÆ–ÒßççŸÁ=ô`÷^zè!®}Ø7ß|z¯*Üë ý€ªüx—Ÿ:uªÈOÙüÌ���`-‚,���@+ð$²u×\s=óÌsvòÉ'…'dÑD£!7ÞxKhÒø3Û}÷]í²Ë.Íj˜eÙ²åöÈ#¹ª#šHÕä©&½ Äh³fÍr“̱&m”xðÁ‡m¿ýö±¾}û®i{±N£ËiböÍ7ÿÛh¢ZëŸ~ú;øàƒ\€fذanñÓDò¤IÏÛQGýÒÒaúôÜŠZ¢(l1zô蘗SÅXUw2Má/ä ÉkM¼'KA…K4Ù®@†W±Âoùò¡×ஂ…ªèΤ£×HŸDR¹U³Ðû®J= Üh2Ý« á§ ôgŸäÂѼ¶E Bµ$ÄâÑküÐC»ÊªN¢J8^û­hÚæ5ŽUÙ'¼�€Â]ªXM××y­d‘gžyÖUÇØh£\pEUibQˆeòäÈð‡öezoôþ÷êÕ+Á¶_k¯¿þf¸”Ÿ÷ŠÚç4—öO=5ÑvÞyGW…(Ñ{' éyÄ §i_î½ Ū4£íQá'¯OK}ðÁ.£�‡Æ‹Y²ä!H‹¦€ŸÂ‚žx­÷oKßñ¼üò+î=Ð>Gûo-~ ‘iß«}eªAQ»°G}Üm÷º½Xû{QI÷Û!B�Ù‘íÏì����d���Z&55iªIülúòË™vòɧ¹v";ì0ÞÆŽšìãÚp豨²ƒ~u®‰ËW^y5bôŧ¸Ãl‡Y–.]j?ü¨ ´ž«h 6šX,--qU(4˜7o~hòy¦›|LD—Õm <84¼¡› ×D½&)2P…„ÿýïCwŸ±h²òÞ{ïwmfT AÈšÖuõÚ* «íI*TBïƒ*NhÒ[ít LèyôÑG «‘d’WE h½^ªò£q§–=±‚,òí·ßÚþó«ˆÑ¿ÿ:®B‚ÞÇï¿ÿÞ½WM½ç鸽Îwß}¯{45nJJŠÝøSxI÷ >Å ò(€äU QŠTé½¾ÿþ•`´ýj kL(À¥*%/ ªèù%¢jª®¡`‚‚íÚ•…nc•«¢±¬ç½ÓN;ZhŸ©`ÇÇj›l²‘ á(X¡}BDªòé§ŸºÇ‹*SéýW CA8Zô|kjV»íW—´­ÅÛö»ukó¨â’v-¡Pšö£ )¡ SzÞãX¹²ÂµàQ Oc*Q; ïõÐû<jÔ(W]Hã@=UGÒ˜LG»1µySp›mƺJ+ òi¬«O¬ ‹Æž‡B'^å•X¼J-Ú‡êvWÝŸƒ*( >ÜUÄÒ6¨×L·£*:ñÞ»–Ò>AÛ½WýHûÞöíË]…mgª¦ýVs|�r‹>«ÓZ���hi¸\AŒã‰ âœö–Bß¡·­YWµè<ÕL.=zŒûéÜ’%éýâ���È…1¼¹$º2‹èKþsϽÀUCRuê©'»ÉmMħ2¦Òu;©P@äÈ#wÇŸ~úYR@î9é¤\E(…P^{íu�ä?D–���rA×®]ÜáôéÓT¶U‰ìekk£–ú5‡u¾¥Þw½XœÓ‰£GKtžSh����Z…~9Ÿ‹TQà /Ž(µ®ªgœqºˆäµ¤QØkîܹ†Ü£Ê# ±HKÚ �rS®~V���ò­…���€V’Ë_ŽÇj3TUUi�"uëÖdQ #Zä&¯­Â{ñZ�òA��� õd���Z‘&¶KKK-)ÌRUUmgžyºû¢ÿÒK/7�‘zôhA|ó •<r•÷Ο?ßV¯^m�€üGø���h]Y���€V”ËAyýõ7Ü 6¯" A–ÜÅ{�mA��� ud���Z‘*™ÔÕÕZaa‘È?÷ÜsŸ!·½ôÒËn�´ úlN[!��� ud���ZYuõ*+//7� ®»îK‡tÝ��h;ôÙ���@ë*4����­ªªªÊêëë ���@ëÑgr}6���к²����P]]m����ZŸÉ��€` È���@ee¥Õ××���€ìÓgq}&���Ðú²����QQÁç���@kà³8���Y���€€Xµj•ÕÔÔ���€ìÑgp}��� Y���€�¡œ9���]|���‚… ��� µµµVQQa����2OŸ½õ���@pd���¦ººÚ-����2‡ÏÝ���@0d���H¿ ]½zµ���H?}Ö¦"���LY���€€Z¹r¥ÕÕQæ���H'}ÆÖgm����ÁD���¨ºº:[±b¥Õ××���€Ôé³µ>cë³6���€`"È���Xmm­-_¾‚0 ���"}¦Ögk}Æ���\Y���€€óÂ,´���ZFŸ¥ ±����¹ ���¼0ËêÕ« ���@òôš ���;²����9¢®N¥Ð—[uuµ���hš>;ë3´>K���È Å��� §TTT¸_“¶oßÞ����ĦÏÍ„À��€ÜC���ÈAúB^%ÒËËË­¤¤Ä����4¨©©±ÊÊJZ ���9Š ���£ôÅüŠ+¬´´ÔÚ·/·‚:‡�� íª¯¯³ŠŠJ[µj•���È]Y���€§/굨:KYY™���ÐVÔ×׻ЅªÂ��� ÷d���ò„¾¸×Ò®];+++µÂÂ"���òU]]­UW¯²ªª*���?²����yF_äk)))qm‡´����ù«HXSSc����òA��� Oé‹}-+W®t¡–†¥˜J-���È)ª¼RS³:üù���@~#È���´þ/ý ­¨¨ÈŠ‹‹Ýñ†¥À CK���ÙV__Zꬮ®>´Ô¹eõêÕV[[ëŽ���h;²����mŒ71À¯Y�������ASh������������@�d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ d�����������@ €¤”””¸¥¸¸ØŠŠŠÜRP`¡¥À{êëëC‹Ymm­[V¯^m555ni‹ßéÁ¸ŠÄ¸J/ÆW$ÆWf0Î"µ•qÆû‰ýKÛÆö‰íÙÀv‰í.6ÆI¤¶:N‘Ø_ã4ã´mb;�Y€Úµkgee¥VZZÊ«<£÷Soiaaq胴v…en½>`­ZµÊª«WYUU•å3Æwú1®W™Äøb|eã¬mŽ3Þwö/X‹ííÙÇvÇv— Æ ãDŒƒ\À8eœ‚í�@z$û¤ Éó ’8,ˆsÚ[ }‡ÞR´f]QÔ¢ó:ëpôè1oé—,Yj@*”Ö­òòòÐY>dµeuuõVYYé>P)5œß­q…Lb|!gmï;°–¾|­¨`{�²‰íÉàó „ýrãÈÏ¿Û@këÚµ‹;œ>}Ú¸ÐA]hY¶æ°6j©_sXç[ê}‡Ñ‹Å9è0úx´Dç9Y€5”mß¾½uèÐÞ€h+WV„þsQáþ“‘‹ßÁĸB&1¾ Œ³¶‰÷X‹íÈ>¶;$ƒqa 0NÜ߀ È· ­…�k(u×±cG’ˆKÄ•&_±bEΕ¼c|ã ™ÄøB60ÎÚ&Þw`-¶ ûØî Æ „q€\À8r{;�9YÐæuêÔ)ô²MÑòÎ;YII‰-_¾Ürã;øWÈ$ƲqÖ6ñ¾k±=�ÙÇv‡d0N ŒäÆ)›Û€Ì"È‚6K=;wîú£Èf€æÑôââb[¶lY`{72¾sã ™ÄøB60ÎÚ&Þw`-¶ ûØî Æ „q€\À8rc;�…´Aú#Ø­[7>l¡Å4v4†4–‚†ñ»WÈ$ƲqÖ6ñ¾k±=�ÙÇv‡d0N ŒäÆ)ìí�@ödA›£?|]»v¥o#R¦1¤±¤SŒïÜǸB&1¾ z/»ucœµ5ì_€µØÙÇß!$ƒqáï4rû+ ˜Û€ì"È‚6Eeïø°…tò>Lilµ6Æwþ`\!“_Ȇ‚ÆY[ÄþX‹ý }üB2'þN#°¿‚µ�È>‚,hSÔ»‘[H7)­ÖÆøÎ/Œ+dã ÙÀ8k›xߵ؀ìc»C2'ÆrãÎv� û² ÍèÔ©½‘1[c­…ñŸWÈ$ƲqÖ6ñ¾k±=�ÙÇv‡d0N ŒäÆ)ÐúÛ€ÖAmB»ví¬¼¼™¤1¦±–mŒïüƸB&1¾ Œ³¶‰÷X‹íÈ>¶;$ƒqa 0NÖÛ�´‚,È{êyÚ±cG²AcMc.[ßmã ™ÄøB60ÎÚ&Þw`-¶ ûØî Æ „q€\À8²¿�h]Y÷Ú·oOÿFdÆšÆ\¶0¾ÛÆ2‰ñ…l`œµM¼ïÀZl@ö±Ý!Œã�¹€q d;�к² ¯Y‡üQCviÌiìeã»ma\!“_ÈÆYÛÄû¬Åö�dÛ’Á80 §@ö¶�­¯Ø€<F¿<´½•+WZ&1¾ÛÆ2‰ñ•œž={Øo~óÛn»q¡ã=­ªªÊ>ýôS;ýô3­¾¾>|¹ 7a¿þõ¯lóÍ7³N:ÙâÅKì™gž±[o½ÝÚ2ÆYÛÄû¬Åö�dÛ’Á80 §@v¶�­ òZyy¹eÒ‰'žš¤:*îù555öóÏ?Û7ß|c¯¼òš=÷Ü$·ù¯}ûòŒÊÔøîÑ£»Mœø¤ºIÙƒ:Ô~øá‡¤¯ÑEØ^{íéŽ?ùäSvõÕuLJfùË%ÖµkW»á†CºÏZKŒ³¥]ýµîøÓO?cW^ùÖVè=ÏÕqå‰ÞoVVVÙ¾ûîoI߯¾ûîcçŸnĺ#<ÊæÌ™cA¢ž­W]u…m´ÑH{þùì¯ý{DÐ!hòa|Å2vìXÛm·]lã7²Þ½ûXII±-[¶ÌfÏþÚÞ~ûm{öÙI¶dÉ’¤nk½õÖ³[n¹)´ë^×Л·0â½Ýe—ÝþNûQ0UUÕáÓÚOžzêɶ|ùòÐ~óRûüóÏ­-È忞¦>ÿéùýôÓOöÕW³ì…^´7ßü¯ÕÕÕżìwÜæö±ÔÖÖºÛš?ÿ;–z饗íÿûÐR}|±<ôÐ#víµ×Y¦äëþeë­µÙÕ½‡Ú¿…ö/ËCïýWöÎ;ïºÏþK—.µLº÷Þ»mèÐ ÜñÝvÛÓV¬Xa¹î8ÞŽ9æ7îø¥—^æþ†æ“|Üæóç¹|‘kŸKÓ-ÿ­9Ÿ?R•¯Ÿcsyœdê{œÒÒR{íµ—ã^OŸWõ½ç¢E‹ì¿ÿj“&=o ,ˆyY}núÇ?þ>}Ï=÷†þou›%óÜžyf¢;®ÏU{î¹eR®ÿ¾ì²Km×]w±–zýõ7ìì³Ï5[[ø»K®Ï|ü¿[kÊÆv� õÑZyK‰ÌÖîáXRRb}úôq“hçœóçЇ•»Ü$ò_AAAF“ë™ß?ýô³›|==öØ=éëêKŽñã·ŸÖ—žßýî·¶îºëZçÎíŒ3Nw·æÑ{ž«ã*žòòv¶ûî»6ë:û￯å‚}öÙ˶Ür ÷«ƒ:Ð6ÜpC ²|_C† ±ýëöÐäüßCïÅÞîï¯Æ[qq±uïÞݽ7&œd?þ¨ûòÄ:‰çÌ3ÿ±è […éžzj¢[<êÓ«¿ùÞíÍž=;tO„ö‡/Ø+¯¼¾ÜŸþtšuéÒÅ `Ǭµ¹ü÷1Y:tpïvÞy§Ð$ÀUvÓMÿ´Þ½{[s©L®þfªºÏ¡‡b7ß|£ÝvÛͶþúƒ-×äÛþE_>Þu×n2fï½÷ ï_ôÙ_“-cÇne§œ2!4ô˜ýò—Gò™òq?˜ÏŸçòE®}.M·|üT´t}þHF6>Ç*(:uê›nÑdg6äò8ÉÔ÷8MÑçÕ^½zÙÈ‘#ÝXxðÁ»}L2~õ«£ÂºAÒþ¿‚ôÑgo_¥)dK[ø»†–9ûì³ÂcRÂ|–éí�@0P‘y«¬¬Ô²I¿ýì³È_¡”––ØÀl‹-¶pgƒ ²¿ýíjûÍo~׬_«!7i ªåD¦n;“ô âm¶ÙÚßsÏ=ìÞ{ïKêzÛn;Î}&óçÏ·>ú8|ž&s½/Gt¼-ý0ry\ųÿþû…&û&&uYMn²É&– Tñã}þ÷ßoA—/ãKû/ý긬¬,¼Nï*[è×ýúõu_ìëKJM¾éËñ7ÞØ.¸à¢¸•Óôï[ŒvÇ«««í˜cŽu¿<Œ¦ñ©_=Ë—_~i¿ýíq1 «ñ1jTÃXž5k–µ%ù´‹þü§¼‚&v6Ø`ˆ 6Ì­ÛtÓQvÝu׸1£±ÏÌ™_¹Ê+M6jb`ðàAÖ­[7·NãëÎ;o·óÏ¿ÐÞzkª5E‡?ÿü‹&/÷ÁX¦åËû®Ï:W^y¹Û'x¼ý‹~%Ü»w¯ÐçÿáI“Ož`Çw•E2õËxä>ÏåÎç¹|‘‹ŸKÓÏé“ÏŸcù'ò{?}ŽyðÁ‡#Öéó>ûèÿIº þóŸÏtcN'…`Î=÷;î¸ßî3R.ýAÁ¦X;ìð.}ô1«­müº·µÿ›æ²|ú»–ìÿ[Ÿˆ–Éí�@0dAÞò¹œ S§N ý'ñþ˜ç)ÌróÍ7¹”¶~±¢_†?òÈ£†ü–É1˜éñ­R*o¨ÉØÁƒ¹/Ã4!ÛýjÊ£ê~·ß~§}ûí·¡/غڳÏ>gh™\WÑô%YÿþýÝ/BõK,Mâ6e¿ýÖþz÷믿qã3¨¦M{/4yª¹ah›zÓUðº|_C‡±Ì›7Ïí^~ù[½zuørúŪ*%pÀþî´‚vguFÜve xUÆ‹b‘îÝ»…k ÄûRöŒ3ÎrŸT’=ßÚf4%ŸöcÿŸ½³€—›èÚø¹·B[ ¥Txq)´@q÷âîîî.îîîî¼Hq‡ww×E*P£’oŸ¹7{“ì$9›Mv³{Ÿÿ¯Û»ÉœIf眑̜ÌDõÿ† "§v²YÎÌ;\}õ5¡×:ûìsä£>.9A~L0`»•9çœÓ8GÀ‘b=öŽm›_~ùåÐôU›FÐûÀóùœX~üõ˵fµ%oýG9Ô/[l±¹©7ÖXcõB]ô³‘%°?W?ý¹F¡û¥iÃþGz4r?–ã8áúÄ6B—\r©5 ýS¬ÔãÖïXÉÒM <#Á¡+nµÕrûíwJž¨g;ÀŠ:a«êl²ÉFEGlùýï¿ÿ ©_©]ËÓs+©/ªm«„êí…HC‚e½ó´„7¹/ºèââ1–'l¶˜6Õ°o<Ì>ýtÛ>Èk­¿,-Þ¾ÁD›Kp@ ¹óλ̀IF=ÛU l¹à-Þ8°²Õ:ë´ìÛýå—_Êü!yç­·Þ6ãß}÷Ôõn_”;î¸cŠN,ï¾ûžì²Ëîòä“Où&™ëÎ<ól9ùä¶U0ð¶ôªwë¡ &F¦¡M.ü­ êÞu×ÝæMÅö¶JC#ÕcQ¼÷Þ{>Ç(lë ÙÂ*& P_î¶ÛžÅUX`ãG}T¢ëÕŠz×;ŠP¿¸eï¼ón¡~ÙMžzêé’úeĈrá…ËÙgŸ[\nÇ·—þýû !€ý¹úêÏ5 õÖ/Mö?Ò£‘û±ÇI昄ç<[}òÉ'æ+ ºj¨ü “ß~a¾ï¾ûn2`@Éí¥¾ õ í”ìÊ!$?pEÒä±ñò¾a;ãŒ3–„tв喛›ïÿå—_d‡¶—•VZIúöY>ÿüs3˹bÿY¼!:óÌ}eâÄ …¸¿&:^1K;1€ñÈ#JÏž=ÍÀú:ë¬'£F.¹î{ì.;ï¼£ùŽI¼q×zôч̶¼Xo½ eäÈ‘>,‰¿Ùf›˜‰Á~ýú™·4Fcn1èñ¿ÿ½ Q@—˜X:t5™k®9¥[·n2fÌ³Ü &&ŸyæY3Ácãæ›o4oŽ?AV]uh!þ\²ÓN;È"‹,bVǹí¶ÛåÒK/—,Aúö©¨äšÕ�úÙh£–• V_}u“WQƒT+­´bqrKBâíL/Xí�{uƒ»îº§0Ás‘õ:ÐÍ&›l"+¬°¼™ðA‡ôûï¿—ûï&?üˆh©Äv¼”[ƪA=Û•,‰ á1,}÷FÐòË/WÜ^o¿/¹ä¡²¸æSOµ¼…„7ƒwØa§PY·®�«¯¾–õ­±$uY9iðÚYß¾}óžÃ‡ÿ,¯¿þ¦Ü{ï½…ï¿Hµ¨gûZmµU‹ºDÛ†íWâçà`7×\s˶ÛnmŽ÷Øc7yíµ×Í÷ÁƒÉ5×\Ug‘E†˜ý†]°Ú˪«®R"·ë®»˜Ë&›lnÚwàm÷<òÿ|^`GxãuµÕV)Ø^ÿBûÝÃØÞgŸ}&O<ñ¤©Ëâ&ðFîf›mZ¤^Æly‚IDÔ]ï½÷<øàƒ¦,V›F©Çâp—öFÛ†U:fžyæ¢ ”ËøñãåÄO–;î¸Í\o¾ùæ•e—]F^zée©êYïèO`E0jÔ(S¿„½eì‚Il+„þaP/¾¸ôMf8&¡\yå•dî¹ç6åu¶þxë­wL;àNö$%>5¶NZk­uM½„ß‚:OÐéwß}oúiøÄm‰­/¶Ür Óö¡L`ò [dÜrË­ÆQC%y–‡gÀþ\|ÎK¥}{<SÀ^°BV%ANôë_{í5ãl¶€Í¡,¯¸âŠf¥ƒé§ŸÞlWˆežþyó¬õ»aspôÁjxÆA0bÄï…øßšöüùçÿÛžwïÞÝôWYeeSöð<þÃ?Úò‡dذMç·YôOO9å´bܸ~iÚå|ÖYÿcÊù¢‹.búÎØfäÓO?-”¯;Ìê0øØ~œzêéU[±“ý?p`XsÍ5 ebÂóNocÃpÆDŒ6ìã?±^?ªë}î?ï¼ Ìö%è;oµÕ–¦MìÕ«g¡ú§¼ñÆrûíw˜¿¼\xáy²ÔR~Çòí·ßÖ|�ÆöÜsoÉŽã$÷yøáG=l!¶å\ss¹êª«äøã3ÏÖGu¤Y5*O´—ú"<;ÂNðLŠ­QW`ìÛj¢ýÂ'ìo}p饗žcî’Í7߬0~¼®i'«­¶ºé“$}´ZõqwØa;Ù{ï½|×4hß8Áò˯¤w¬„ön§ÞþÍ‹/¾Tè[eV#Ûe—d‰%7ÎzÐ!ž3ð‚Ë! ›~ ¶áÃ5Ð'{饗äÆo6ÏzA´cÚåŒFÑ»÷Œ¦ßˆöpöÙg3Îý5Ò¬8Œß‰¾Æ¼¼ðÂs%º»à‚óŠßo¼ñ¦B½[ºBl}ã7.ôÉ7ý”y<S}ðÁGrß}÷Çó0ù¹Š’èÈB4¸y£wïÞÅïþùg¤,ÕN9ådß MMþ7h0öÿw¤tðÒµk㤂å9·Ûn[9㌳ÌC… ,1¨±Î:k›Á¼%–XÂבsAgÏäiðmS BÀ‰` #èÄ‚åIñ¶0J½ 3† >˜ü䌭³¯sÏ=«8ià‚ 9 ¸àƒÁ£>6vo ^pÁ¹¾´ó4 ²°ÅjÙ÷‡~h:ÈØ :ÞÇt c5¼ËÑ>&IX|ñÅÌ– èø{ÁRåøàÃkÏa¤a;IËX5¨g» ‚°µ×^ËèŽ�Qo€y—¡öÙç ¸ËJ5¨´.‹"ÌÎ��ñÁ>Ö˜ªÖ–tõl_^¹îºëKÚ¥0°Üú†®oìu &Y¿úªö{/£N<õÔ“‹m­ Úê²- 6t¬™t° ÂÓN;¥¤^E=‰ÏÚk¯iœyÎ:ël3ÉT-©‹ƒ˜€Î�úƒIY�&êo¼ñF9ôÐCÌ1êÏzrd©g½cÀÝåÚk¯³pÚ¸ï¾û ¹CÌ÷þýKß6Ʋÿ§Ÿ~ŠÙšÅ žðA„vàä“O5“þIH«O‰w n^uÕ忝 Vᔂ&:0©6h§Á}÷ÝÇ÷–'ÚÂe–YÚ8‹†mïæ%Í<«Õ3`Nߟ«Ô†1‰qöÙg§ /ôF›O‹cÅQfµ¥ sÎ9‡œþy»ïã;ö!øl¸á†rà—l=[?à€ýÌdIðíflAŒú’xÎ:ꨣeܸqbv}Þyg€\àžÕ®½öz©”4Ê9êË£Ž:Â\Ëå“1øœwÞù…¸µYŃýà…>¦wÜÀ¡åe z¼õÖÛä²Ë®¤tèÐlœºwÛmßy8sm´Ñ†ævÿÆoJžà8Nrpoï8hŒ«<þø“…özs3¶‚çØ\9//eM{©/¢ÀK6gŸ}†Ù¾× äð“&­<òhÅ6VM¦-ö®�äž·¡é£å©[+h§mÀÁ}½óÎ;Çg7p´8ùäžÑG…“ V‚ò‚9ôÕ†*{î¹—qÔªháì §,/è‡âƒzΤ‡rxÅ«ì¡|ì¿ÿ¾%+·¡LáÇH¬À†—1â®í¹Š’XÂICâ0Éè ¸«›�›ãˆt ЂÇëk¯½aÞöÄ*.�;çœ³ŠƒèDc5�t^ºtéZxXØ ta°èÄ7tÞ‡ALxÀ‘`‚+˜ \à-5<`<Ø,QëÅ»ERpo ãÞøíDÁàæË/¿b~Ël³Í*›nº©TÁ@çO?ý,W\q¥/>:®½ö*óàaø¹çþgœ€ð°„‡m<ã÷â‹/, ŽìúÖ}§NåØcÿÏ Êà-û?þØt¾4û·WJ¶XMûƾºnçoX† €À±cñÅ[ìùÞålµàÁžânçÐx3«@ç°¼‚·£HÃv*-cYSïvå‚|{úégÌÄ€#AØÄVDq·|AÙÅ*=ÍšJë²(´v†|Â~ãxË顇–¬©WûB>a"  ŽÇ›WZðö)êw¢íYð†èñÇŸhÎõë××÷Æ•{Œ=ÊÄX¾Ý}‹Ûy'•FÒ9Ö� N\xáùżÃ×xc«±Ì2Ë�óV9ÖðÆãÅ_PègìZ|“Ͷuþù篷汭�&É0)‡·Ö0È�g–i¦élV˜¨Ri@?Êe„ñR)Ï?ÿB¡N8¸Õ!yq©'êUïèC™´Ô/Ï©ã¢ÍÚrËm¬a|GùuÕ0þä“O›¾ Ê&VÜŽñý„Ž“¯¿þÚÔåfŸ6‡6ý>¼÷ÑG™ÁI´Ï¨OŽ 8úÞtÓÍ%ñ7ÝtcÙo¿}‹Çø=˜¼;¶¥NÂmQO…‘fžÕò°?§ëÏ¥aÃÇlщ63lØC¦¿Ø lßÏ<ótÙf›íÌj.°%´ÇH;øì³Ï ¿ïñÂuþ0+­®¿þºf‚oŽ9f7V{ì±·ïm<Ûc’�à<^*yûíw mö¸B{þŸBßccϰۃ>PN;팒<€ÓÖe—]RlOðûPýþûˆâsÞOÃ!µÒrðcŽù¿â1úB¯¾úZ!ÍÿËù`œÀkû-ãSèb倖° ¦ c`Ø(ž?ðìß=óÍ7Æé9 xq öòùç_˜zåN,›nº‰™,F_ö¶Å[W9»é¦[ä‘G3ö'/€ èË/oyÎÒ:ªWÇq’ºDm³ 9ØÛùç_(W_}EÑéuä_ý%y =Õ6`×^{uÑ!m„ûí7éÕk³Š2&ÕáìbqÔa ½ÃJ¨0îvmoð¥I é£Õºû /™UÝpÿƒ: x-ï8A5¶^kïvêeÚi»=¢>ÃxVÎÃ*»î*Q‡vˆ±7Ôè3a|ö8묳§z´°÷c=¦0ö³¯Ô´{è·ºŽ%h?_xá³ÊÚ 3ô2+ ¢á™èÌ3O+ØäŽÅ2„—ë ;<O¹/2a•.wÅáo¾ùÖw¯ Cæ}>üðcs=ŒÑ£ŒtÀÁ§{÷f[î0ñ¹Š’èÈB’¼4^ðœ…CÈN;íh&¤�(ãVo@‡Ë®aù5X†Ñ¸@‡kÿý2ƒ€^à1{ć›Î6Ä0 ìzŸ£CNmK9#­è¨ ã‚Átäq¿RG–¶¸AG¤Ñítab÷–[nó…?ôÐ#rÝuW›‡ v^ý ¾·#<¼ø0r÷Ý÷ÈE]â{�ÀÛóhÄCÞbÛu× Œ‹ 8F`Ë”ÚÞ°Ë’z xôÑÇe·Ýv-.Å}öÙçZH±å…›.<Ä-µoã˜cŽ.:±ÀžŽ;îßÀÊÄ9çœYÌ # Û©´ŒeM£<¨¢Žxýõ7Ì[í¨gà½åemNpbrë·­Fš+­Ëâ®íÚVÓ8à€ƒKì K‰âVØÙîoœ%â¶Ê©”zµ/8¹Ë¨â½ÜAîwÞy§èÈ‚•p�–v=1Pà:²`ë‹0§T<¸»Ž,‰s^µÝãŽ;¦˜o°»+¯¼ÊW—áL¬ÁÙ K<o¿ýö¦~sAõ*®ö+Órà 7êÖ‹ÍoÃ$ê×°-ŽÒ¦½ ¸áç9æ˜Ã|‡þ0ØY)pð>|¸™Ø„s'Û¢¶ÃÈP¿|ýõ7êÕXâÀ›t®Cœ$áLæmC°Õ ?°Š œg7ÙdãÐþniö©1Ù€•+vÝuã â‚R¬Îˆv ÀaËw{ï'�¬Äâ‚e­1àðŸcŽÙÍD’ÃH3ÏjùŒ�ØŸÓõç*µa´qîó¶›Úi§}[ëbivw uêZk­eV¡pAûè:±Àæ°j‹÷þ˜ðÂJ)hû1Q2hÐ 30†•^�ž¿±]opBùž{î1˲£½À„óe—]^²õ/òÀuJ@ið>oá9 o»/«TB%åùçkl#tùåWødðvï%—\h&bjûb&ŸÝ—ðÆù~ûx޽ßLVŸ{îÙæhë­·JìÈ‚‰_”±³Î:ÇgØnææ›o0àXehèÐU‹[Ðx·˜sËîSO=“¨OŽã$Ç}±�àE0Ü7öQ_⥠¬Ö…:äÐC®ªs}íÝA�ã® Æ»°z\.¾ø3aŽghô¹N8áXÙyçÝB70Ö 'Fl{åä4}´Z÷qá‹òÈudÁvlÕ¬«�YÚ@ô£>–Ã;Œ常ý<èù”SN2ã¼{⦅o+5¬ºƒ±÷)Œ±Çç²u6ìÔí+Æo¸á&ŸÌ­·Þ^è+^l¶nCálâŽá¸NÂpÞÆªg�öè:²xÁ8Ò.»ìl¾c¼cðîËY.è×b»?ÔÍxù 5A—F|®"„ä‡ê¬íDH•ij’ªƒÉ-ìƒéý<óÌ“…Aš‹ŒcÎð0†‰¤80@æÄ‚NÍ6Ûl]<>öØã­+ Ü{ï}æ;&³Ü4€=ÝN&_ç˜cv_\¼5àõûê«-ì“è“lX¥`‰ZoG`nxÚÁ$Ìá‡Uè4íVÐÜÀ÷Pí.¯ 0ˆàƒäáiìN袃†§0®¹æÚšt¤²°ÅjÚ7´Ü$ØQ˜Ék´m‹g­rÁÛ`èD<PÀ®ƒ¶TÁöÞç iØNe,kêÝ®\ðp†UH0Ðæâ]nÞ:ÁÛ;�òO<ñDëùì»1•ÔeQíì˜cìv†ßGyÔ8e`’†YS¯ö5ãŒÞ-üþrñ:T#Ÿ£ÀÛÌî’ÆÐ{p`Âð˜cŽ5cØÿ;¸Þ@s·@¸ùæ[¬jÇÿâ{óÛ}c¼4J=Ç>ûìUtÒÄäeÀë¨åàÚXn¹å «F~0I[-ê·~i«â¶-ôS°Z ÞFFßÄÖ†Ü~ûÅïÞ5dѧÆÞêÁ~?ÀV±˜ôÇ–^ÖZkâ[ÚhOq¯ øöÛשׂQxI;ÏjõŒ�ØŸ‹ïÏ¥aÃXÅÌåƒ>(qXÎ!èËyXÜ4¸¼ôÒK%÷Ço9í´3ÍÀýСkX�ú‰k¯½ž™PÁX€mU8׸«È¡½ÀÖY^0ñç:>3¦Ä‰´<'S²2[R’–sô=àÌ0éy饗•äÞÖ×l!–ì´ÔÁ°u¼Y »±½Œ1)÷Ù+¹Îœå‚‰ÄsÏ=¿ÄP^½Ø‹.º¨ä Žã$NŒmÔ6.µ½Ÿwl_å: »Îõy ½Ô6P¿c-€rŒº"8‡çPlµí®¸€öËO¶cL<ΉÅ%ª–§>n­i;µÍ«?/¿üBìuà(åubpñ®¶‡¾¼N,àƒ>ô™Ì5לRmðlg°ÝwßË8€X�ÊÝÝw·m;^îó¡ œT]çë®»Áê òÉ'Ÿ˜2î²í¶ÛD^³Ñž«!ùŽ,¤!iÊaë…(,Gˆåtã°M–ºÀCؘÂÞ·èh…/]ï¾·�ƒp.K.¹¤/Ì]¥+°¼ûnKËËÂsÙÎ9ÞÕ3‚`ÐÎ Á½öOÅä[pQä“ Þª r» cêzãaÄ]òÝÆÿþW7̃da‹Õ¶o¼à‚}:ƒ`²uÁ[œšð`Š¥£Ëe¥•V*~àa¡Î�¸~ÔÛ iØNZe,KÁ®¼÷6ìÁâ9¼©ÜÛo`倥†½ YSI]…×ÎÞÿߤG¼A·Î:ë› J÷¿ÕP¯öÕ¥KÛ ¶ß)ï`‡wOßZ�G—à„š¼E‹I38RåV[­¥>Ä€Þ=÷ü7ôØÞÀ˜C]î]†>K¥³¥oA£Þ:ë¬3dà 70硼½—Ø¢Á%j@u V°ˆúTs{¢zÕ»71‘œ&Øve4ÌÉ [Ÿ¹D9-ÙÈ¢Oýò˯ZÏÃÆ±-…KïÞ~‡@o_i o "O¢H3ÏjõŒ�ØŸ‹ïÏ¥aÃ^ç3Ôw¶ (ôá°m; oü5×\Ó·m† ñá¸F‚`ÂN¸~Q6»Ê*me["…Ù=Òþä“Ñ+¿jIZÎW^yåâ÷°sZ®ÿJÙÛ¤¥û-À!«¬`;ë0¼v‰US’€rI7Ÿ|òYñ;V/ÊÇÑ''l…ÕF¯¹æªâ³ž1¢žq½ù:ª.‡~hq[ŒZÒ¨õ…†ÕWok1FÖö Ž¹ãŽ;‹ÇQãbè㕳^T-O}ÜZÓží4œƒmϰïy86ÛðŽ·¹Ž¹Õö†ºå.ŒJžV^qÅG5´ÑwÝuw¨,1î°MV: £Ñž«!ù[ ’èc@Î ï°âÉ*«¬lV=Áߥ—^ºðPv„y¨ #è9ìÅÝî�¼õVø5�ö-Å�ÞŠÀ’­ts×^|ñe9ôÐCÌw8®¸<̺oÁ«ÝíÄÁKƒ"î�œwK"›# Vpßð…—/–ºƒƒÎ{ï½o–ZŒšðþFL&F=hxH±§åo¼i•‹ÊS l¶‚ ,ÉÙ³gß›Œ˜pu;Œp2)g2ßÅû¦ã;ï¼) »t—H ’†í¤Uƈ<PÂqË€btùå—ó½ €íu\P·T“Jê²(¼vÕ€°Á_âÇ;(†ürñÆ)g€- Ü·°Ä+¢ðbØ®ç+,9[øJÇŽZÿv, LôÜÛœøÁ›cî–SQ\sÍu±e½¼öª}«‘$Ç[Î’Ô/ZÐׂó;&Úûõëk&ý—ZªÍá¼Ü%“³èSÛ&ú]¼+['ûݾÚ4,ùúzHƒ†JóŒÏé‘E. ÆvƒpNÇ옔¸ýö[Ì3-Âa‹ß~ûmè6à™gž“=÷ÜÃLªb©ùûî»Çü®–IÚËÚZÏLxÞž}öÙÌD�>óÌ3·ïÙ:h³þg“·"¯4¹ •´œ»}ä§w{ØÒÏP$iö?`sX…Ûèá™N -´Y‰Å+“„h[js³9ˆ‘ÊÈbN+X!¬Ú|ÒI§H9 p¸ÁvTplÚw߽͊¤6øÛž·#eß|³­ÏˆíãÂ(÷eíØx­û¸$à¼ñÙg_DÊL]OEÏyûzaã=ÿþÛ6öf{‰­ îÆVýû÷7m4úÞmX“´Ï¸–ëtˆ­³âƱ±²Û€-ýK¼ :ÞŸ«!YAGÒÀÓ¶Úž˜ðÎÆö6®»îúÂà×î²ÃÛ›ŽÂI'(›o¾E¢¥½oªŒñ[¬üˆ#ŠD3ÍÔ»øæ&à¿úêk³è"‹,b:ö˜0sÑ0ÈŒåàЙAƒl‹-¶XÑ‘Å}{[Ø©°VÀ>¢ðzÇ$~?>Ð áÕ{ß}”<,xãI' Zzôè!y#ì­€J¯YMû† `°ûa¢ƒ¼Ê*«Èý÷?P _mµU‹ß“.Gëõ Û$jIÿ4l'­2–%`WAð†)&>�&:܉L`_o€7wƒƒYSI]…×Î~ÿ}„ä‰zµ/oÝdk oœj®úõ¬['a°9‰#“÷àÊ+/WÇíÑ#»Iz/XÙÀj7—]vyäj{Ip÷«QözÅWÊÍ7§·L¥Ô«Þ½yœöÖcÐåºë®kÞ`Åàš¿%‹>uÔ„xÎÀÞê�œxæˆ"nû¦,󬚰?OZ6|ôÑÇÊé§ŸjœY0 'e×Q[%`€þ¡‡¶¦ +WzèárÊ)'™—Tà §z×±«±`…‘ÿþ÷>ë–�k¯½–™ Å6åà­ïñ¦qHK$)ç˜ði뿌Šu N+­åÂþG x{5V—µÖZÓL�WPJ‹©SÓÏïjÀqœdà¹åé§Ÿ•óÏ¿ Ñvšçœsna|òVSOÂ)ï‰'ž2’µ¢½Ô6üãbÑmÚuôíPTku¥¼ôqó@£Ø)æòôÜZK0W³Þzëúª+›í¬ÒÆ»ªP\ùn‘iǸwÉ¢BòYHC‚¶+OÏè _qÅU²À Èâ‹/f£ðé]ê3 š6Úß÷g ¶BçÎ5X+ ¸*ØNÅõÈ…·:"±@úñæ#ÀÒa“lxH~ñÅeuÖ6+Ñ`ßFL£3ŒAg|¶ÚjK9þø}ƒ†I;ËQKë׊,úQµ°ïÇ{Ì €� úº pp8p>ó«÷`{•J‰ÓTxÚ¶SiËŠF±+/xcìC2]p¨Ãïx›“h>úhM’ÖeZòö¼U¯öõý÷?ÐðF0&šÜ½Ö5¸m¨åŠ$°«¶º,™2ü×(jµ¥TÝ~ûž48ÆÉñØ/ûJ§ ÞÄÂÀÆË±óZS¯zÇJný‚·Ð‚o5'“êçwvÑÉ`âõÙðáÃÍJ˜À¹ì²K½˜Ïz >MMMá¿5ë<«&ìÏÅ“– c’mÏ=÷1«àYfÑE5«N�lŸ‹ôვF±•cpµ3<o±ÅÖfƒVXÞLü»“a˜`€S wðËõ×ßXŒ<ñÄã}[¢øé§Ÿ öú³q€ÿâ‹/Í3ù–[naý-;v*~[1!ÎI,K0Qî–9ÍʵJ+û-Û%\vÙž•0¦óÝwß›—˜ðñ·Új‹¢cZ{ƒã8áxí ¼ã…L†Â)ðï¿ÿ–¤ÀYNØXIõÿÿýß²Ýv;ÖÌ!ªÛé$h&ˆ]™j9?4Ò¸q¥ÐN‹Í6ÛT>ø@ßs œþùgÓüꫯdìØq…þêÿIhÊ·¿ΧaЅƆŽ,¤!ÁƒTssþÌû‰'ž4Ž,`¾ùæMäÈòÇm«Uà°8úö¹ø=øÖ¶Úi§Íw æÁ‘T\°"Y01ˆÁH¬àâg˜èôþi<ªñÁàÿ¼óÎ[ˆ?Äì›>dz›ÃÓN;E6ß|«âoóþÆ­·ÞηGe½‘d›Í5«mßXŽƒ 3ÏÜÇèÏ”^i¥‹2•¼Åã}óvµªI”7z¶“fËŠF±+/˜0€ m±Åæf ËÑ£ŽtßÞÅÃÕC="Iˆäм˜¤.‹¾^yvVMêÕ¾`ChÇÐÎâ¡èÐUÍÛÑðv¶·>C»W+0±ÇlË€‰¤­ÜUYp ,ÝŒÉv¼I¾Î:ëKÞh”z¬+ž`«JLÔõªw¬,€‰ll³‰6jÕUW•ûî»_KŸŸ~zËòú˜<òÈ–AGÔS'Ÿ|BÑ!ãÉ'Ÿ’[n¹U¾þú›ÔÞ(ËKŸuú˜øïÕ+¾^ {Ó¯yVMØŸ‹'Mƽ_}õ5óx9Û§`ÛH¬–â¦wŸ}ö’ /¼¸$>ê‡~Ä|�¶'€C V5ÀvV°ÏÝwßͬzú /ô]'Lô^|ñ¥fõ–àJ;ï¼chº½+þÍ0C¯Â$ÆO¡²è;Ô ”iü.¬¾ƒþ ò#Êa©VieÿCÌJ“®˧Ÿ~*—_~¥ÙÊ2X/c2­½Âq;°‘K.¹T²äÞ{ï7«Áqõ,œüx`˜Ô‚Fl§µxÛ_l‰‡UžÂ@{о¨Ö˜X#WJ{¶ÓZ5ÄXÉ gØŠÕubÁóÓõ×ß`úÑÁù¢¶ÒÒà]m4¯ãÞå’E9 „ä‡|¿¢DHBòÚxyßL(wIaï[â®SL茸ûËcïîàž‡´p÷ùÄC-¶Gq—.vø�VdAžb2x¡…,t˜6ç10õÊ+¯‰tÂðfÏm·Ý.;ì°“ÙS`?S¼Ùæ‚­:\°RL=“ÕEµ®Ÿxâ óƒ¼Ë-·Œù¾ÒJ+xŸ”¤àMg—8»ö®š$ ÛI³ŒeE£ØUaÃ,~_qÅÌjQî*QØÂ,jà>È„ m[·õéîü„Är—ÆÔÖeQxí,ʦ&þ0!P-êÙ¾ÜÉ%°Ë.;G ˜xr'F¿øâ ùòË/¥–`R`$nƒ¶UÜúE ¼Ñ¨õXÖ@Ÿ;î¸}ñ¸ÒÕýªM=ëÝ»…è®»î¬ÞÒè+àƒC\°²‹»²ö„?á„“ÌxÐ!£k×®‰WÉSŸÚí롉çŽ(ÂÚÅjäY5a.ž,mÏÁØò´ÓÎ(:˜ïê)QÀ¦±ÑARèÞa­„\N>ùTó¼dÛncºé¦½Ï/¿üZü×'ÀÄo-qÓŠ Íùç)[«´²ÿÑf—x^:ðÀCä­·Þ¶:Â)©½ÂqœÚ6ýôÓÏ*Ú$ú½]ºÔfö\_”3^±ÄKXãeI#W Ûµêàc wþð:}”Ë2Ë,S|†¹ýö;ä†n²n+YiûŒgÒñã[~Ï A ˜g§(Ü~<ð–½<A›%¤±¡# iHj¹¤nX^Ùå·ß~“$àM·§|ÂØn»mŠßŸ|òé’p< ¾òÊ+æ;:.î²±ð®õîï}Ã?üðÃÖ{.T@k¹ç‡~dö¹‚ÞjÃr Ûn»Ø€Ž¼{Ýb€Óå©§ž)~ÇÛ|QÞÌ(\o½uNÉÂkeß<Ò6Y¶Â +˜·y`àwÞݳ= ïÞÝn¸¡YÝÂöÁ:tµÐë¤a;i–±¬h$»ò‚í�ܺõå²Ë.[\†þÁ’rhY‘¢¥~‚­bÉvÈ {¬´.‹Âkg˜”ˆÌÇ›Á>úPa’ä–ª ú׳}=ýô3ÆŽ�&üO9å䨇|ÔÛn»uñøšk®“ZóÔSmõÉvÛm*‡ Ý;0�ýhÉÒ²È —m¶ÙJ¢Ø~ûmÍ*3Ì0ƒT‹F­Ç²ÎV§œrRÑâã?©éêAI¨g½cõï¿ÿÞ|GY.Âú+.Øndà [VDÂd‘w•¨®]ۜڱRKîJIÈSŸÚÛ× kS°åjäY5a.ž4lϹ;ì°½œyæéÅ—6‚`Õ×!*8˜›Ü{ï½äØc–0Þ~ûíâwo|ï÷0›Åär”#´wT<'¹o½AÔÝB¤V`k&—Í7ß,T«Ób«ÎZÀþG›]þõ×ÈÐm`°õÖ¼óÎ#µÄë¤ØÜ\Ý­ 8ŽS[°ºÆ7Þd¾ãYn»í¶+Ùò­´çúÂ;¾µÑF…>ScÒÝû¬Y­q±<õq½þÔÕ®«�Ûµêà]ÅÎSnß6Èšk®!IÑôAÜ³Ž¿ý,þE}ú -ÏfèW†moéÞË}1 /ñ þ‹äÚ,! YHCRîüYƒ•L°g6³]^xá%I:#XÀåÔSO–Ùf›­D[¹KÁb¯dw/Ü î`:K믿®ùî]ÅÅ=·Øb‹˜%ÒÁ‹/ÚCË^¶Gìºë.…AªJdà€e˜]°7¸ & °ä2˜gž¹å„Ž3+Á2И¸Ãç–[nªêŠZ²°ÅZÙ7Þ:ĤÀþòÔu;Ä•l+°'³»7VPÀ@spr.8µ§m¶“vË‚F²« ƵLp NÚgŸ½Íw¼¹Š7fËoýºyä%uœ[Ž8âðÐø•ÖeQ”ÚÙIV;CÛ±þúë™´àÍïêEYQÏö…·0N=õôâý°ªÒu×]ctÜše–YäðÕ“O>ÑS—=ᛄ©pdq^±]ÊBp�Ž:guº™�ÃÀ¢wë€IwwÙ×M6ÙØêÌ‚kî²ËNæú§Ÿ~ªœþ¹R-¹K´{Xbý†®+¾‰ÀN?ýŒºÛN¥žõŽÁ1oý‚7Ó®½ö*YuÕUL9ô‚úíÎGVÜÞn1{›» Þöý*[?vþùç7ËKGíN\°m—<õ©ñÆ7œãœà¬×æ™gÓVžåöçâIÆWYe•‚½íi¶Ò8è ­úÀwËj°/‡­xwØa;³Mú„AпØtÓ¶óÞøÞU˜à“Gu„Y]- L4»«Ø ÐßüÆ`Ÿ×9öØcL¿´–<öØcED»eË/l{â‰ÇÇný™ì´Ùe¿~}­«üÀYóÔSO©ùÊVn›ÜUP«Çqj¶ÎrW÷Øh£ *Ú®#)í¹¾@»óüóÿ3ß1FwƧ•8³ íA¿ ý7€•Mß|óM©yêãb<Ð}&ëׯÕm•íZu€ƒ¶mèotÐ%ºÆ‹—Q޼ êÙÍÛoD?ÊÖc|}Ò(4íçwÜY\ūڜc0zôÑG½c˜yƒ6KHcÃÍîHC‚Æ ÈjŽà-ª™fò/-סC³yko¹Ë`LP¡ƒŸ”ÿþ÷^³71tÛm7§tªÐqÇÊ*ÎW”¿à‚‹Ì¶'6°m<qáI<xð`s.Ì‘ÎމܰÉ>¼Õƒ4n½õVæÍ°+¯¼Ì Z~öÙçF/˜¬]}õÕŠŽ ï½÷¾YÎÖËé§ŸYxp½Ñ¼5‡Ž &#ñõÓO?‡¼Yç]Þòúëo”Q£FIžÀoÍê¢Úöí‚- Üe÷Ý·ePË+&q2rÆgôx­y†¾ï»ï£sLÄbO^¬�›¹ûî{Ìa¤a;i–±´iD»ò‚U$ð@ˆA¼ üÉDo`Ý{ï}Ň1¼1•+0°òûïê¡Yƒ�öVFýcÛF*º, ¯aiÒ(;Ûüçž{žu¬4iû¶yÇ{¼qBC}‚7¯ðó;vœÙ'í²7=hçÎ<ó,ÉpRÀ_|¡™ oY1e%yíµ7d̘Ñf€ ¶í®�„>&ɽ`Â׸ðÂóÍ5öß?ãõÒK¯`þ26‡2à:Pa㢋.–jÐèõXRþïÿŽ*L4|\<Æ ,$›cŽÙ}Î,Å6îêCõB#èo¡a;›“N:ÁÔ/³Ï>»œvÚ)¦~“ʘ1›íê0`èMœ8®½Ö¿Ú¶5yå•WÍ�;ôŒ6�J˜8ÀÊ# .8ØL6¡{ÙçÁ?þX\Rý¨£Ž4«ô`â[ô©ñ㥗^^°ÝR8¬¼òŠ…zíuS/Ï5ל¦Mœ8ñ_³] iƒ¤•gy€ý9=•Ú0ž°2Ò‚ø˜ðzöÙç寿þ,<«÷4»nBëºë®÷ÝÿúëosÎié`•¾•VZÉô÷PîÑŸÀ5Ýgý1cƘû¹<ôÐ#Å—YöÜsw³Ò#ž¿ñü„•‡V[mó–+VCu_ ‚4Á‰îòË/5xÓwÈ… ¿á¹B™øÓ”8Ô¡]G?R»ÍeüøãO…ºîzã8D~Á¿åýo8£|¢ì#ï« û-<øàòß~û˜ô^rÉE¦Â‹%°/lá›Fý ˆj;xóòö‚öáøã-L^ÿPèãþ]xλ_²‚ã8ù�Ĩÿ¯¾úÊÈ—™²‚õ…ÈYgcƉ{÷ž±8F‡öðÂÞ°º­»Å ì餓N1mVµÈK¿cDØRN?xþF?¡[·nrÅWfúâA#Ù©m^Åúùµp¨€mßÿ0ó"Øxã öµ˜¼ÿþû…çóñ¦/ ›Cx¹å– ]­9êÙ ý8Ø(®ÐGºé¦ ý½gÍ jx‘iÙe—6«4GõÆ&Ý•}wÛm3®=vì?òÉ'Ÿšþøüó/LŸ ýS8äÀY +GãywÊ”É2÷ÜsË2Ë,]´´#®s[ÞȪBòYHÂA²j>ì sï:‚D'ìÃ] h ?üHã‹,LPµLÖú½gáå 瀨=oÑá~óÍ·Šû$c" ÇA¾üò+3áë¾å…cwyuW\qUáabFãAŒüÅ'–q>ê¨Òešñfùn»íaVàÀÒÃèÄyW´qAGKŽÞ|ó-’7²\ú´ÚöíûÅ 4tê¾É€YLºVÊW_}-|¨Ñ9šñà‰IW/XõoxF9²¤a;i–±´iD»ò‚<}≧dÓM7.žÃ„V0x€É¬¦0¨€ee]0ÑôÑÇ™·¨´.‹BkgÐ Ú ¬°‘5b_/¼ð¢ì±Ç^rÌ1G·•‚#€û¶X0]·Ür«Ù8Oûêb0ãÀ6“äpŠÅ ›mVúÆ6)`Gpn‚2€kà­ZØ?œVl+ÿ¸N/ÞUŒ²¤Ñ뱤`òŸ( Ó³Ï>ÇLÖ¢wLú`þcŽ9ª ¯9Í9Ô/óÎ;¯ØÒ…íʰǹm`«ê\vÙ%¦\bB ¸å&Åᘇñ0§ lW´ÖZkšAÆE]Ä|ÐnºŽ,yêS?ðÀ°Â ~×Âê¾&½˜ õN’" p(D0Œ4ò,°?§§R1b„qÄQf€í)lgçw,‰ç™³Ï>·äY/o\xáErÀû›‰~L”Ù ùåãdè$Ê“]t‰ì¿ÿ¾&.&ðñòÈ#šÉ„C9HÂÀÄÂÿýß1f%LDÃÉŽÖ^žyæY¹óλjêÈЧBÙsó/ÂW5<ï¼óÍ_µYØÿhoaãe+8@áù[nàゲ„ lè§–Ž,¨Ïo¸áÆBŸ~wÓf¸«¡ŒeéÈÂqœü�g¦{îùoä¶YÁú¢¥¬¡ý=ûì3L?Nö޺Ž-GQ}'û<õq/»ìrÓ÷„C�œg\šÇ<Ó|i$;ÕΫÀi¨V+ƒ M‚ ^FxiÊ»eLÎ9ç<ãÈFÔ³æhÐß;÷ܳÍó%Ʋ‚Û¤ùå—rþùÆ*/ ½ÿáDŒtâ:îê¼p‚vY�ÊîéöS±J›m¥¶»îº[.¾øRÉ+µØzŽR]èÈB¼ÍWët–ñf&Þözç÷ ƒKϘ §4@#}â‰'›‰}tÔáù­ &ïäW^yÅx Ãù$ ιŽ,|ð¡o :/èì¸-q[/Ào¬¢3†%ïà1 /~€‡ xøÂK“aàwìºëîf0טcŽÙ1®°·ÞzGî»ï>ùá‡%À³¼v-ì+TÀCƒ^.i.G g€-·ÜÆlÙƒ·®°|6øöÛïÌ긗;iE¶“fK“F´« Æ +N|``¿’¬ð†Á‡~,›o¾©Ñ!œ¤ ?¬¾që­·Çê/º, ¯á¬À;ÃK;x»ÿµ×^3µÕZñ§‘ì ;ì°“ysµÕV3oÇôé3“ÀE]†¥×_ÝL á-ÿ<‚:q³Í¶4m/ÞÚÆJ,=zt—ѣǘ•gü 3õ–®±ùæ[šÁ¼7ã1ù‹¶oµbö‡É‚jÑê±4À›¨p2Â[[èŸ=óÌsFïõJ#é“ÓÛo¿“é?£O4hÐ ³ ¯Q–P¿`0¬Æà.AmuÏ;ìl¶ßXuÕUÍjø#FünÚ) ¸»[„E¥ŽÀ»ì²³éï`•Åà²éyêSß~ûf`“R -´Ù6ihO±²Ô‡~XܺÑFy–ØŸ+JmŽš›o¾•ÙjýØ ú„¨c[ú[¯âßÚ¸ë®{Œ}a !LNa”5´Ç˜´xñÅMy· ¤Ã¹oë‘E)´Á½Œ£¶ ‚s&˜£lÞ}Í­·ÞΤa¹å–1+º�üæ‡~¸þŒsB­AŸäꫯ1ã(§X…oìc¢«~ @ÿ «2Uö?ZÀ8Õ1ÇgÚ/ô1Ýg$´_¯ºí¶;LÛRmG#p4ÿùçáæYn®¹æ.ôã;šÕ}ðfzTûZ ÇÉW]uµYmÍ­óªë‹लë®{˜nÐþ¢ýÄ ŽprÁÊ'O>ù¤y±küø R òÒÇÅ3÷ž{îcœ8Ñî¡NE¡ýËÒ‘…vZ]ð|Žç.Œ¯½öšfuN8€àeßG}Üôë¼[Ùˆ{vC;¼ÕVÛçôY1>0&€±GôI±š_è‹vØ…çÕíd5†Æ€ú›sÓNÛ­DýT´„ã žÍðLûË/¿šç2ŒGÂy&ÏdY!ù@»>X“2¬Iñ·)äØý4{þºŸ­ç:>ÃëZÍ‹.º„ÙqÔ¨l—Ü'õ:×ÍÍõ¹¼<©oÐAÄö%YBûnLêdî8C»j¿Ð¾H5`ûØ>aýBH¬IV`[Ê+®hyc«àݼ‚ œÝwßÕ|ÇÛÇY/WÏvˆh ÀvšÔ¬¯©N9 ¤ÁªÜàwÞÄêXxLëß)Óúwªçãxþ?rõ7ø=Hì|ÍBH“÷e2Iã‚ý1³†öÝþ¨†ÎiWíÚ©lÛ'¬_iƒõ I–†Ç[æQÌ7_ÛŠx“¶V`õ·¸·¸± „ ¶eʶCDí„�¶Ó¤`}Em”öYHCƒåk ©Õ°=ÚwûƒvE²„öEªí¬}B½ÒË)l‰¸÷Þ{ÊÜ+W^y¹Ì:ë¬rsÍ5—ì¸ãæ;¶Žy饗¤Ú` …O<^î¹ç.9ãŒÓ¤[·nV¹ÕWj¶�Çÿ"_~ù•d ËÑ@;!€v@êÚ)!´QBÚ …fÊ”)fÿ\Û€„dl¶—5´ïöíŠd í‹TÚYû„z'¤ –R.“&M2"ÓM7ùÜzëÍòÜsÏËÇ"ãÆ“f˜A Z@–_~9innyWí†É?þ$Õæï¿ÿ–ç3éXf™¥åÞ{ï–§žzZ¾ýö;c“}úÌ$Ë.»ŒÌ?ÿüFÛw\yåUÆñ&KXîˆÚ ´RÐN ©^9 „Ôí&wMʰ&Åߦc÷Óìùë~:´žëø ¬;þ.ºè¯à‚£FB¼455ÉŒ3ÎÈ=IUÀÞŒþù§”«´ïöíŠd í‹TÚYû„z'¤ –’”Ž;Ê!‡$o¼Q¤BàÄrÞydîFïÞ½å”SN’!CŽ”ÃRð\p‘<ôÐÃ’%,wDí„�Ú©h§„T¿RoôìÙÃü}ç7—-üÁƒá˜Ö¿S§õïTÏÇñü ~$ä8êoð{Ø‚ÜAtTÓ‘EëÜâžÃÆ»Mýú Øœ0a¢ƒ8q{4’ÿýLž<Yª í»ñ¡]‘,¡}‘j@;kŸPï„´Áò@’=¾üò+ò /êܹsA¯¥C‡f”üQž|ò)9çœsåᇩé >V‰yôÑÇäÓO?3éèÒe³=&Âþúk¤|ñÅ2lØCrÊ)§Éûï¿/YÃrG4ÐN z€vJHmÊ!õD—.]Ìß_~~´8ŠLcŠÍ ¥æpEÒn˜~úé¥k×.BHVŒ?Á $ÖÚwãB»"YBû"Õ€vÖ>¡Þ iƒåêÃrG4ÐN z€vJHmË!õB£­ÈÒ,„´ÐÀMšDOM’ °­Zv¢hß íŠd í‹TÚYû„z'¤ –BªËÑ@;!€v@êÚ)!µ/„Ú@GÒ®3fŒÙC4MÁ¶j í»± ]‘,¡}‘j@;kŸPï„´Áò@Hõa¹#h'ÐH=@;%$?å€R}èÈBÚS¦L‘Q£F±ÓERû~æ`[µ†öÝ8@‡´+’¬·H5 µO¨wBÚ`y ¤úä±Ü!M$_°~&€v@ê¶k„ä«BªYH»còäÉ|8 ©�9r”±©¼@û®\'ÚÉÖ[¤ÐÎÚ'Ô;!m°<R}òZî&–»üÀú™�Ú©Ø®’Ïr@©.td!í’–N×HîíHÛ å±Eû®_hW$Kh_¤ÐÎÚ'Ô;!m°<R}XîˆÚ ´RÐN Éw9 „TJ¹&eX“âoSÈqÔ§Ùó×ûÁ¹ið·_¿»â‚&LB4`I² &HsséÔ©£¢eüø 2zôè\/¥Hû®?hW$Kh_¤ÐÎÚ'Ô;!m°<R}XîˆÚ ´RÐN ©r@H^éÒ¥‹ùûË/ï+üA!šØú7ø‘ˆs¹Ž,¤Ýóï¿ÿÊ”)S ®ÎÒÔÔ$„„¥ìþþû7nœÔ ´ïüC»"YBû"Õ€vÖ>¡Þ iƒåêÃrG4ÐN z€vJH}–BòF£9²Ð]’ãA<qâDéÖ­›L;m7!$ÈØ±ãLª½€ißù…vE²„öEªí¬}B½ÒË!Õ‡åŽh @; õ�í”ú.„ì # !­ ;v¬é|Ác­[·®ô$nçÀ&ÆolbÊ”)RÏí»k×®ÒÜLû®ð,?¾1íŠõfía½EªA#Ûë±pX¿ÒëABªËÑÀþ ¬/H=@;%¤±Ê!$´­I5·²m#Ô¡õ\‡ÀaÝñwÑE—x5j´’èxM3MgéÜ™ËãµÐy²ˆ'þk:P í»zЮH–оH5 µO¨wBÚ`y ¤ú°Ü ´h¤ Ò¾Ê!µ gÏæï;ï¼¹láÏÔÂgLëß)ÓúwªçãxþÆmE$Š¿ÁïAb—`âŠ,„D€†ÔmL;uêd>;v”:˜ú`ìˆÕ'è0a•:xúâ3yòd™4i’ù´hßéC»¢]e í‹öU hgíÓΨwÖ/¤ ––R}XîXî4ÐNh'€v@;¨h§´SÂr@I:²¢„,idhß$ hW$Kh_¤ÐÎÚ'Ô;!m°<R}XîˆÚ ´RÐN !„$¥Y!„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!$W,¸à`YmµUeúé§B!„B!„B!„BHû¢£B!9á¸ãŽ‘vÚÁ|1âwÙl³-ä矇 !„B!„B!„B!¤}@GÒnéÞ½»¼û2S¦L‘‘#G&ÔGÈK/½"<0L>ÿü !ù¦cÇŽ²æš«Ëê«•ÁƒËÌ3Ï,;w’Ñ£GË7ß|+o¾ù–Üwßýòí·ß ÉÓM7ì¸ãöÅã>}f’-·ÜBÎ?ÿB!„B!„B!„B!„´èÈBH:tÞ½{›Ï , »îº³\wÝ rÖYçÉ'C‡®&'œp¬ôïß¿$lÆg4Ÿ%–X\öÞ{Oy衇å”SN—¿þúK²âî»ïÅ[´x|ÕU×ÈÙgŸ+¤” &È?ÿüãÛRè?þB!„B!„B!„BHû¡Y!jàØ²Ç»É~ûí#$rÈArÕU—[X‚455ɬ/<p¯Ì6ÛlBjÏäÉ“eÿý2+åÀ¡å®»î‘Ûn»C!„B!„B!„B!í®ÈBˆ‡GyT¾ûîûâñL3Í$K/½¤Ì:ë¬>¹½öÚCn½õ65j´|€ÕröÝwokظqã ºe¶‚3’—úËu×]-믿‘Œ?^HmyñÅ—dèÐ5…B!„B!„B!„Ò>¡# !xàAyöÙç|ç:vì(çw¶¬·ÞºÅs]»v•Å_Lž~úY)‡Î;Ë¿ÿþ+$]æ™g9üðCKÎßÿrÕU×Ê—_~iŽáIJòÊ+Éa‡"óÎ;OQnŽ9f7[ þ…Bª VÆA›4i’B!„B!„B!„BY‰ÛœuÖ¹>GЧÏ̾ãË.»XÖZ«m%‰óÏ¿H®¼ò*³RÈæ›o&³Îú³*ÈRK-ç‹7Í4Óâ­!n¸q¨èÓ§YAä—_~‘W_}]î¾ûùúëo|qà¸ñøãûÎí½÷~òä“OùÎmºé&röÙg?ÿü Ygõ}2ÍÍÍòÎ;oÈôÓO_<wë­·Ë 'œä“8p>Ùl³M é_Rúõëkäÿùg¬ þ³¼öÚrûíw˜-a¢èׯŸl»íÖ²âŠËËì³Ïn~ûÈ‘£äÓO?•'žxÊ8žLœ8QÊåÀ÷—N:ùÎqÆYríµ×ûÎM™2EžyæYyóÍ·äÎ;o“ùæ›·¶í¶Ûtx…õþHïúë¯'‹.º¨Ì4So“î¿þ)Ÿ}ö¹<ûì³rï½÷tæ_ÍåÓO?4ŽKAöÜswóW]uMA?ç–È,¼ðB²å–[È’K.aòοÿþ‡¼ûî»ÆÙêùçÿ'qà;ï¼£ 2Dfž¹O!½™x—\r¹üú믅4ß][¸(æ™gË5×\g½ÖÜsÏ%[l±¹Y:ìÖ­›Œ1Âèéyâ‰'CõööÛ¯KÏž=‹Ç[n¹±çƒ:@V_}5cï>ú˜pÀÁVù#Žø?“¿a¿±’|‚~6ÙdcYe••eРùÍ}q‘#GÊG}\(OO˰a»!„B!„B!„B!„T:²¢àÏ?ÿ,9÷ÇÄÆ;ë¬Óeã7 <x\vÙ%2Ë,|ç»té"3Ì0Car}ì¶Û.ÆÁàœsÎ+N¨c…‘üIþóŸYŠq–XbñG8xÁ*$=zt—Ñ£ÇÏÁ™Ãëļ«Ò`bÿØc–wÜÞ|÷Ò³góY`LøÅ_*—^z¹Ø€ÃÀ)§œh~›8†Ì4Ó ²âŠ+È>ûì%ûï ¼ÿþ¢÷_c¡¾s/½ôr‰‹—1cÆÈùç_ W]u…ï:pŒxã7}i»è¢ ŒóN>}f28¹ì³ÏÞ²ß~ÈÛo¿#•€•IŽ>úÈB^îPÁ5¯¿þ†xàÁÆiÃÆþûïkE¼ôíÛW¶ÚjËB^­.[o½hÀ 6Gu„ì²ËN%aØn Ÿ•VZ±`‹?òà�ùä“Ob¯Ù­[W¹óÎ[eî¹ç–¤¤‘OóÏ?P®¾ú éß¿IœuðY}õ¡Æéh=ö–ï¿ÿ^!„B!„B!„B!ÙÓ,„X0¡íeìØ±òò˯DÆYb‰Å"XYdˆÜsÏ%N,6vß}W¹øâ |çž{îyß1¶: ²ä’~ 8¢,¾øâ‘ñÆ/¯½özñ«ì´Ó%N,AàôpðÁÊöÛo[GˆsÎ9³Ä‰%È€ýåÖ[o–˜_´,»ì2æÞ^®»î†ØxÏ=÷?ÙwߌŠûÁ*8.Ø>êæ›o´:±CË 7\+ÿùϤàÔds΂4ÝzëM2ÝtÓ•„!¯ƒN,^à uá…ç›UeâÓs±Õ‰%~÷ÿ{§,¸ààXÙ]vÙ¹"'––tU–OXyvfsb ‚Õhnºé:™vÚi…B!„B!„B!„’=\‘…0é¿æškÈÿýßÅsXå˜cŽ7Î,Q¬°Âòæïwß}//¾ø’L˜0¡èÈ­Y.¸à<ßÖ3ØÂè¿ÿ½WÞ~û]éÕ«§Ù2e®¹æ,†cÛ"¬¨qçw™ãçž{NvØ¡meAƒ0«]¸[Ü`’Þæ$ƒ•[°½ŽKБåå—_-ng¬ãŬƒß5óÌ3ËÞ{ï)m´A1NwÜq—ù=�N)GqXÉ5°}Ñï¿ÿ.sÎ9§YõÂý­ø çž{¶¬»îâ8ŽÄ1ß|óùŽ‘öW_}-6ôøøãO„†Ãy+ظLš4I®¾úZ£Käñb‹-*‡~ˆÑ%€£Ã^{ínll»ífÛ¦»îºÝw]¬Úân'äuœÙn»mdèÐU‹ÇøíwÜqg!OÛÁý°b»zœA;ì9ñÄ“‹q óC9¨ä·<ýô3Æ9©G²Ùf›˜ÕHâ€CRÐ뫯¾.üž»eÔ¨ÑÆnp-׉¶rÑEçËzëmX²Í’·\¼õÖÛfåäÑO?ý$ZÒÈ'\+ð¸ Þi§)O=õTÁ.¦š•ŒN:éSþu¶Új •ƒ!„B!„B!„B!¤2èÈBˆ‡k®¹22ü½÷Þ7NزDœ5N>ùÔâ–@.l°¾o[ pÀËO<Y<¾ýö; Ÿ[d¡…,žÃ= 0yÿÚko‡8~�8 2D^yåUs¼ôÒKYÓ´ä’KøŽƒŽ,pqÁÖ1X™ÄËñÇŸhœXÀßÿ-‡z¸ù>uêù⋯̶GpNpÙcݤS§NÅãG}¼ð[*:©¼ûî{òÔSOËã?lc�¶;Ze••}[…ѧOßñˆ¿§“J“Åùç_dlð¹ñÆ›äþû‡Ã?þøc³M“wõï 8ï¼ó®ù Ç8W¸À/È/8y9é¤Sä–[n+ã:Øö«ø¸ù çŠ /¼È8–€7Þ°D_§žzºÜpÃMÅã믿Qî¾ûv™gžy$ \¯½öðƒíÃ9Nà¾ûî——^zI.¹ä¢¢Ìl³Í&묳ŽqÈ z?äÃåÁ’rI+Ÿô;ò`K®Ûo¿£x Åö[Xö »~ï½÷„B!„B!„B!„’=ÜZˆ%X=ÿü3V%ÿÛo¿YXÀ†®ï;Æ "^'€-~Î:ëß9l½ã:žüûï¿òÊ+þí¼N)K-Õæ°'—Áƒ_p½¾}ûÃàdàݲ÷§�¯c €3Ëá‡%×\s­<ÿüÿŠñpŸ¡CWóÉžþ%+­Œ3ÆçŒ�VYe%ÑÐ¥Ë4k–4€CÐe—].‡rXA_›øœX\\§—gœQ’�ç"¯`;p‚ =z·´‚–[n¹âñk¬î“ÿâ‹/åÆoöC^Ÿ}öyRNzÀ™gž]ò{áð§/ÞÕyl<úèc‰œXléJšOA»ÆDÞÕw�âïºë…ß}ŽqÚùæ›o…B!„B!„B!„’=\‘…Ø–[‹¸tîÜI:vl)&ýúõ3Ûìàsíµ×Ëgœy-ldsbú·Ãó‡7ß|Ëla„mk\°Z άXâuYtÑEŠß½+¯`«Ÿyç×8–`å–…^Ø8Ï,¶˜5–O>ùD~ûmDñøûï¿—¯¿þÆ·ÅÑî»ï&Ûl³µYIå“O>•?þĬVñÓO?K¬Ð\!äàƒ+®¸‚ï8¸eP&LôwïÞ]Ò+{`{™yæ™Ûl×[@~.·Ü2¹&IBа2 ¶é±ánÍã{xä‘GÍ÷9æ˜Ý†­rlÛ3a{$8Ju–žþùǬtbãÙgŸ÷ÙÒEÐñ¥ÒÊ'l­åu&Ãu{ìa³uÒ‡~hìú£>6«ò¸ÛlB!„B!„B!„BªYñ°ß~ú¶³ijj2Ûëì¶ÛÎÆyÃÎ,¿þú«oË– &Œ·ž‡ó@ÐÙbøðáVY8Âüò˯2÷ÜsϹÛï�¬žG¤ ²°ùÞ»÷Œ&Ý.pÀ=Vž�ØêŽ,‹,²°ï~pJrØaGÈ7^o¶ÑqcÍòË/g>._}õ•ɻè<áM«Ëºë®#zõꥒûý÷¾ã™fšÉ8ë„9•V¬Ùa‡íe³Í6•ž={HVôí›<Ÿf˜¡%Ÿºtéâsxß}÷ƒ5¶^úõ×ßJ_ÂÒ[Ÿ:uªUvøp¿ô†P¶w?~‚$%|X[Wa+&/(gøl¼ñFæ+Ð<þø“rÑE—È?ü „B!„B!„B!„ìáÖB„D�‡ ¬JrÜq'Êý÷?à Û{ï=K¶Ø©®Ó 1âw³ŠŠËôÓO_˜ˆŸ[–Xbñâ9¬°‚IxïJpdC† ñ]ÛëÄãòÁÊÚk¯g¶p5j”„ûžvÚ)rñÅÓèMk¹L3Í4*¹Ï?ÿÂw ‡Ž¥—^*6œ]ÖZkÍÂokû`ÕlÓ„U:à´tb]üøãòÚk¯K:TžO6[œ2erh¼0G“JÓW¢÷˜«KR¼öýÁAëÀ‘wß}׺j €-a«¤G&‹,2D!„B!„B!„B!ÙÃYQ2lØCÅ•ÀŒ3Î(³Ï>»|ùå—RØÒåï¿ÿ6N'. °ÊÂÙ¢_¿¾¾s¿ýö›ï«¨ 4¨x<dÈB2pàÀâ±ëlñÊ+¯Êþûïk¾cRûóÏß&÷ûïȇ~dMîy 'ÉI'b¶×Yh¡eÁ4[y¯ÖYg­B^­"O?ý¬o›"�ç‰Kš¼üò«fµlÿã²ãŽÛο[]vÙžs;qPÁµÎ=÷,ß 'ß~ûÜ|ó­òÖ[oÉwß}/ãÆ3Î/§™8FŒðçÓK/½lÒR°©ÿýW:wî\<‡ÕiÂèÓ'<,hc}ûö5yb[•%h»#GŽ4éÈ‚4òÉËÃ?b>XmÛmÁ¦aÛK-µ„¯|vëÖMN>ùYý…B!„B!„B!„’-\‘…%={ö,97ýôÓI>ýô3ß1¶9±­€‚ÛÅ|öÙç¾ãà**˜ŒÇC./¾ø’ùûÎ;ïÊ?ÿü#-éž^ÖYgmß*Ï?ÿ¿Ð•)�¶ ša†Ì (÷Üs¯ü‰²ÞzÊ[l-'NôÉ.¹dËFXÍÆëÔ€û <HÒ«Ä<ýô3¾s«­¶ªl»íÖ¡qðû=ôàÀuFË[o½m¾Ï;ï<¾ÕYà|´Ùf[ÈÍ7ß"Ÿ|ò©qbÓM—LÿA¾üò+ßñàÁƒ¥cÇòý ƒ(Ë,³´Unæ·Ú³KÐ>ñ;½«üxA^{ Úgš¤•O.Xq+ =F^xáE¹ì²ËeÏ=÷–¥—^^yäQŸì ,PR !„B!„B!„B!éCGB`õ•دäüÏ?ÿ,IÀê.^à°‚Õ=¼tíÚUŽ<òðÀý†-\°Š VSqYd‘…£€c &èÁäɓͪ,.Ûl³•ï:¶m…6Ø`}ùïï’÷ß»÷³JIpÛ˜·ß~§d¥Œ±cÇÿ¯{衇˜•f‚œqÆi…´>'W_}…rÈfe -^x±ù}^N>ùD9å”eÖYg-žÃª"pºë®ÛKV’¹é¦›e„ æ{þ­„þþûãèâùà]¡'Œ)S¦øŽmÎÐË´é[íµ×%rXmåᇇÉã?\øÍç8¹<ÿü >ù•VZÑØ–äÁ!‡$Q`ª SÌQGa?¼¬»î:f &/<ð dEù„•ˆ®ºêryî¹§ eç]yâ‰GŠ[m¹Àž{îyß9ØWÐa‹B!„B!„B!„’>ÜZˆ›o¾©oâ¿S§ŽÒ¿Yn¹eÍö"^àPÜ:G˃>d&×ÿóŸYŠç.¼ð|Ya…ûåÝwß-LÐ÷’-¶ØLæœs_¼Ë/¿²dÕÿïÿ“Í6ÛÔcå8¹üùçŸÅc¬º²Æ«›ïØÈ[þ`›– ˆ‹mˆ\VXay¹ôÒ‹Ì;Çÿ"½{ÏhV>ñ®^^ýâ÷k¯½^V_}hÑyeÅ—7Ž$·Ýv»üðÃf‹›6ÚH†mYÙcÀ€þf•×^{C´`•˜óÏ¿PŽ8â0ßùm¶ÙÚ|à„ò÷ßcÌ9ÞUh\°ŠÈ•W^]<þå—_}áHãqÇ#W_}­q¤˜{cSÐIÄÆüé;ÞpÃõÔ„  úù° ï÷Œ³Ëµ×Þ GÕæ¸tðÁÊ\sÍ)<ò˜YuÛXí²ËN2ß|óšðyæ™ÇäÓí·ßYŒóÀÃdûí·-ÃÙæÚk¯2:ÀŠ<Ý»w—­¶ÚB–]v™È4c ¡+®¸JN<ñøâ98 vŸü÷¿÷ÊèÑ£ ö³¨l²‰ß‘+ð<ú裒iäœQzõêåsp‚cËyç]hÊô”)“Ío=â¿ò/è,E!„B!„B!„BI:²âÁuòˆ“ágžy¶$[Ó|ð¡…Éõ[Ìê�[¤l¹åææcãñÇŸ;ï¼Ëöì³ÏY¼ÀqÅü‚5þk¯½^Ü.ÇËË/¿"O=õ´qDqYk­5Í'Œ'Ÿ|Ê\ÏŽ]t‰o8Çxd‚ÀY»zŒ†«®ºFzõê)»ï¾[IVîÀÇÆ7ß|+;Ko ¤~øAÞÿYxá…ŠçvÚióñòÝwßËì³Ï&Q@묳VñÛ¹+íÜpÃM&Àµ×^'Ë-·ŒqrÁŠ8ø„íÆŒS<~ï½÷ 6u‡qÞqVp5¡/¾øRzôèî[Í%È-·Ü&Ë/¿œ ºZñx°2‹ ”‰ƒ:´`Gã%KÒȧSN9ͬ4änKÇ–SO=)4~¥åB!„B!„B!„¢‡[ R&ØreÏ=÷): $ñ7ß|+ùé§øí‰°¢Æþâ‹/™UU‚Yv¬^Ž0aÀ9+ÈÄ•aî½÷>k:/»ì 9î¸}Î"a׸ñÆ›å裓$œyæ9²ß~”l‹c«{ÜsϽ²ÑF›Êˆ¿—„~ø‘¾Õl‚üøã…¼9DâÀ*)aN9îP�¿}=ö–;î¸3öšp9ì°#åþû‡•„zê‘Ûûüý÷ßrè¡GÈ_”8öÝ÷�ãlòb³Í¶’>øP²&|ÂJE;ï¼[!þŠ½Æ¯¿þ*»ì²»ql"„B!„B!„B!„dWd!$L†cÂû믿–gžyÖ8 Œ;VÒà£>–5×\GÖZk Ùpà dŽ9f—>}ú˜ÕQ~ùåyõÕ×åî»ï‘¯¾úZ¢Ó8Îlçƒ4\fLØùßÿ^(n»âòÜsÏ…^{„ rðÁ‡ÉM7Ý"›nº±,¾øâÒ·ïÌ2í´ÓšU.NlgO>ù$ô:X)ù·ñÆš­^ú÷ï'½{÷.äå8>|¸IÿwÞ-_~ù¥TÂc=!O?ý¬¬½öZf»¢Áƒ™•G°ú¶žùþû ùúšü÷¿÷Œ0¾þúYcud·Ýv1ée–Y¤C‡æBœŸÌ*5Øf¨{÷écÓ‡8Mì¼ó޲þúët<§L3Mg“–?ÿô;RÀÑçØcO0Ûàlºé&²ä’K˜¼Æ–@ØÎ«Ç¼øâË&/GŽ´;¢`õC=\yäQ³Ð A ˜|9r”Yaç’K.5+ÉØÒ[éœzêéF/X)h饗”~ýú™U^FŒaÒ3l؃òøãOšûV‹4ò ÎE+­´ªl¾ùæ²òÊ+ÊÄ|fEäœ|>ýôS³‚Ñ}÷Ý_ÕßF!„B!„B!„BH{§)¹&Ë÷¨¿M!Çî§Ùó×ýth=×!ðAXwü]tÑ%^ÁG-„B¢yùåÿIß¾}‹ÇXIÎ/„B!„B!„B!„ú¢gÏæï;ï¼¹láÏÔÂgLëß)Óúwªçãxþ?rõ7ø=HT˜+²BHѹsgYxá…dñÅ“O?ý¬d{)°à‚ƒ}N,à›o¾B!„B!„B!„B©5td!„[K]s͕ƙ`Klôä“OËï¿^½zÉRK-)ûî»/Þ»ï¾kœ^!„B!„B!„B!¤Öpk!Bi:tè wÞy›,ºè"ê8ÿüól»íòÑG !„B!„B!„B!¤þh´­…š…BHC0eÊÙ}÷=åé§ŸQÉõÕW²ãŽ»Ð‰…B!„B!„B!„’¸µ!„4X•jÏ=÷‘!C–6ÚP]tˆ 0@¦Ÿ~z;v¬üùç_òþûȳÏ>'?þ„q~!„B!„B!„B!„¼@GBi@Þ{ï}ó!„B!„B!„B!„z‚[ B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹€Ž,„B!„B!„B!„B!$Б…B!„B!„B!„B!„ä:²B!„B!„B!„B!„\@GB!„B!„B!„B!„’ èÈB!„B!„B!„B!„BrY!„B!„B!„B!„BH. # !„B!„B!„B!„BÉtd!„B!„B!„B!„B!¹ £BRÁq!„B‚455 IÛWB!^Ø®VÛUB!^Ø®VÛUB!^Ø®’.td!$÷„&„B’×~¸8ííA‡í+!„$°]µÃv•BHØ®Úa»J!$ lW I:²� MÚ)|è!„Ʀ’‡Û�®×h4l_ !„ha»ÛUB!ZØ®ÆÃv•Bˆ¶«„T:²ÒJð¥û }å?“þs ’ûÏ)=z÷—nÓ÷’Ž» e±\À÷Ç~’/–0kÚ$'ô@‘žÈND$Õo,9=Õæ(¯8Y~ž;ññÊI‹›–øxú<w*Ô¿"^LZJ⦖žðLKjÕ¶E_¸ÅR)s©ÛcYyîÔ<ϳ°ÅkLP92eÒ™4v¤Lý«Œûý[óó'2úûweâ˜ßŠmR#<ÈÛ×~}»É‹Í( î%sÍÙ]ôï*3ôšFºvéPþo+tš*ˆ«.\ÊK4bÜÊò·Æq3¹§â¢Uµáv7© —·’ûúãUpÓœë&ËüZÈ· §ÊŸ£'ÊÏ#ÆË—?ü-ï1RÞøèOþûø†nW»÷(<·Î¾ˆôŸe~é=Sá¹µg_é:má¹µS—Bž7‹-££úH¡§µ}FmŸËÑË8Š ¨ÌIó,£­º…LŒ\¸LÈ3BB]e®'O`´Œ/ã­H¦,T(ç(2´Zå%Rƨ+ ŽB&æ:ÅÿbdbäÒÒg‰&ÐV.YÝæ—+¿¼DÔ˜=x2zÊä òïÄQ2~ì¯òϘïdäŸÉ_¿¿/Æ5úójY|Ñ^²à‚=d®9¦“þý»žW;K—.Íæ·z³±ä»V¼ŸøïoûîÄ\#å{M£.ÒRŽjª­\ ò)ôyM“æ^e¤)òi¦Ióûµr žO‘רQš²Ô Ú™ÉÿN-Œùþ+ÿü1¡0üüþõhñùH÷焆jW Im‰hR†5)þ6…»ŸfÏ_÷Ó¡õ\‡ÀaÝñwÑE—x5j´RS§N-~ï6}´Üú2p‰¡ÒoέòO¨;a!U×µœˆçØ#: Óâ‹[æï¬['–ŠÒb ·¨õHxyúWÄ+çwZ“§§Â2'i¦E¥Å^Ž=fYþ#„*¶ss¡=ÖHÿ-AÙ·ÿü±üñé³2âƒÇdÒ¸¶~Mss³ÔÞöµWÏβÑú³ÊšCÈ öò Æž0”ñš*ˆk”4½•Ä­Å=ˈ›‹ÉÿZÅëÄUì’ž §¿¡ôÓFêy\QÜ„‘s¬›¦ â¦ï½Âààc/ÿ"÷>ó£ŒúûßâùznW»uë!ƒ‡¬#ó ZMúÏ2¨x>ª¿© ?­è¿ØNÆ=WhdÂÕÝ& 2 …\~&å-Ïiê*M=yc³ÏqTºJCeé B¹Ftbi+/%07åÅ[^ì¡É_­\œô:ˆSTj=(u5úÏOåן—Ÿ¾}\&ý;¦^ßÏ«dƒõúËš«Ï, îQ<Ìo•|WÈõjýî¤s¯†v¨¶N´ry˧¤)òiÞ«õ ^uRM§‹¨ÒTKüñõhùñÍßä›—†Ë¿ÿL*ž¯·v•䇞=[ú2ï¼óæ²…?èðŒiý;%ðqZÿNõ|ÏßàGBŽ£þ¿‰ 3Б…´[¼,Ýgì+K­³ƒ,²êæÒbVvèÄMÒßI'–ðˆjýÓ‰Å&"é¦E¥Å^Ž=fYþ#„*¶ss¡=ÖHÿ-AÕmà‰ÿëÛ÷ÊO¯ÜnViqÉûƒŒ·}Åê+»í8·l½Åö7 â OÊxtb‘ä$Í㜧7Õ¸q¸ ‚]èÄ"uTO¤7aäë¦ÖN,¾¨S¹õ±ïåšû¾2«´¸ÔS»ŠÕW–^~²Ä¦…vÕŸî¨þ¦"(ü´¶ÿ¢ís9z™pu· ¨LB!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ@W°ÿ¿~@¾ùô.³J‹K}=¯v‘]vœ]¶Ú|ûj+!zM"Ô«õ»“νèÄ¢“SéD+—·|ªAš"¯‘æ½ZêU'Õ´q:±ˆ*M¹ÑI!ð«g’OùNÆý5¡xž-¤\èÈFGRxZ–Ý`7Y~ã=ͲËѥɱôþ ‰'¡B‘%Ô)³t;aA1ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·U· pO9?¼p­üøÒÅSy}ˆñ¶¯{ï6Ÿì¿÷Àð%1ã OÊxtb‘ä$Í㜧7Õ¸q¸ ‚]èÄ"uTO¤7aäë&ON,¾¾R!¯/¼ýs¹ìî/‹çê¡]]v¥eùUv+q`QýMEPøimÿEÛçrô2áênP™„BŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë¡B]™‰·o¯?¹¥x®ÚÕ½v›CöÝk®âóªï<p¢$¬L¹ ^­ßtîE'œJ'Z¹¼åS Òy4ïÕzP¯:©¦Ó‰ETiÊ£NЮ~ôÀ×òɃßÃéÌBÊ¡ÑY:ˆŽj:²h[ÜsÓào¿~vÅ'L˜(„„áÝ÷´ïìóËÆûŸ+ƒ—[·`HM1%ɱôþ ‰'¡B‘¥Ó)³d;aA1ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·U· (© k=f_Lz͵´ŒýíKù÷Ÿ?ŠmY^öMõ¶¯ƒè)—œ»”l¸ÞèÄRIÜZܳŒ¸tbIXN!~Cé§ :±HrqóêÄÐ6-³PoYq±>òÉ·cdÄ_rÝ®öí?P6ÞêL¼ðÚÖôEõ7Aá§µýmŸËÑË„«»M@e 9:±„Ëiš»Øì£KäÉ4ÊK¤Œ'0^WV+ô‹ä¦¼X‚bË‹=#4ù«•‹Óƒ^1bŠJ@­‡t…çÕú,"3õ]Jþõ¥Lœðg¾ŸWçï.·°¬¿n:±ä%MÛ¯¹N´ry˧¤)òiÞ«õ ^uRM§‹¨Ò”W ]í3ÿ Ò·ðÌ:ꇿe¨‰¹kWI¾éÒ¥‹ùûË/ï“ËšØú7ø‘ˆs¹Ž,¤Ýà{hYv]Ùü‹¤û }­–/ž-ÔÒ¨†ˆHDôЈªëZNÄÆsì„iñÅ-ówÒ‰%<¢Zÿtb±‰Hºi‘Diñ…—cY–ÿ¡ŠíÜdh5ÒKPuÛ€¨ú¨s÷>2ó dÂÈá2nÄWÅóµ~ˆñ¶¯¬û¹ú’e¤ïÌ]#"H2”ñèÄ"ÉIšÇ9Ooªqã:q»Ð‰EꨞH#nÂÈ9ÖMžX¼ô±«l¹Æ¬òã¯ãä³ïÆÏç©]´ðÚ²ùöçI÷î3ÛeK¾”Dö‘BOkû/Ú>—£— WY›€Ê$rtb —Ó4w±ÙG'–È“i”—HO`¼®¬VèÉMy±Å–{FhòW+§½bÄ•€Ziêª@—®3É€9דqc‘F]<Ÿ§vuýuûÉ/Rx^íÒî• œ( +S.¨Wëw'{щE'§Ò‰V.oùTƒ4E^#Í{µÔ«NªiãtbUšêA']{u‘9V c/£ü§xžÎ,$:²D‡Ñ‘…äïCË’km'kîxtK…ïD—H:±D“ôwÒ‰%<¢Zÿtb±‰Hºi‘Diñ…—cY–ÿ¡ŠíÜdh5ÒKPuÛ�U}Th»f¸’LùwœüýóGÒvº61Þöuçíç––¸ÂSa<:±Hr’æqÎÓ›jܸN\Á.tb‘:ª'Òˆ›0rŽuS/N,.h³ÖX¦ŸŒ0EÞýl¤ï|-ð=·.»µ¬¹þfõP«lÉ—’ƒ¨ ðÓÚþ‹¶ÏåèeÂUÖ& 2 …XÂå4Í]löщ%òdå%RƯ+«úErS^,A±åÅžšüÕÊÅéA¯ƒ1E% ÖCšºò ÍšyÀ 2eòxõçÇÅà<´«;m7›œpôü智î• œ( +S.¨Wëw'{щE'§Ò‰V.oùTƒ4E^#Í{µÔ«NªiãtbUšêI'h?û/ÖG&žWÿüzt1œÎ,$ :²D‡Ñ‘…䎠Ë*[Ü]éÄMÒßI'–ðˆjýÓ‰Å&"é¦E¥Å^Ž=fYþ#„*¶ss¡=ÖHÿ-AÕmÊ­zαTÍY‚N,G<8&‚$¼‘NŒN,’œ¤yœóô¦7®WA° X¤Žê‰4â&ŒœcÝÔ›‹—™IÆŽŸ"ï~^;g– Ë*k.[ò¥ä ²zZÛÑö¹½L¸ÊÚTjUÈщ%\NÓÜÅfX"O¦Q^"e<ñº²Z¡_$7åÅ[^ì¡É_­\œô:ˆSTj=¤©«¹û.Qsg– ËáÏëKjÉw'"¬L¹ ^­ßtîE'œJ'Z¹¼åS Òy4ïÕzP¯:©¦Ó‰ETiªK˜yÐŒtf!jÍ‘¥Yi`‚Û Ñ‰Å‰çÄ×RI'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·U· HZͶÚþ2ÓàµZ¯ÑÖÞUƒàvBtb)½DÕâU).XÖÀ†SˆßPúiƒN,’EÜzvbqù¿]Vž¥å5lW±XJTÚPÈщ%\NÓÜÅfX"O¦Q^"e<ñº²Z¡_$7åÅ[^ì¡É_­\œô:ˆSTj=¤©«9÷Ô¼ ï-ýf[£å\ ÛUl'D'…\5Ód±ýšëD+—·|ªAš"¯‘æ½ZêU'Õ´q:±ˆ*Mu©Ï—·œWf]¦_ëõ«Û®RKèÈBoeÞwöùeÝÝOl (m´|ñl¡–F%DD"¢‡FT]×r"6žcè$L‹/n™¿“N,áÕú§‹MDÒM‹$J‹/¼{̲üGUlçæ C{¬‘þ[‚ªÛTZͽþ12]¿ùZ¯U‡ßdÛ=åÌ“‰ o¤£‹$'iç<½©ÆëÄUìB'©£z"¸ #çX7àÄâÆ=çÀ!2xîž-‡5hWûö(ënrl¸lÉ—’ƒ¨ ðÓÚþ‹¶ÏåèeÂs¸M@¥…XÂå4Í]löщ%òdå%RƯ+«úErS^,A±åÅžšüÕÊÅéA¯ƒ1E% ÖCšº ‘ ž¼Ä‘Ò½×¼-aµx^¿»œ~Ò _ºJ¾;aeÊõjýî¤s/:±èäT:ÑÊå-Ÿj¦Èk¤y¯ÖƒzÕI5mœN,¢JS]êÄ"·ønƒ¤×ìÝ[ïCgÒ> # iH¼8¾¯¾ý‘ÒÔÔlm´|ñl¡–F%DD"¢‡FT]×r"6žcè$L‹/n™¿“N,áÕú§‹MDÒM‹$J‹/¼{̲üGUlçæ C{¬‘þ[‚ªÛ¤RÚ¶9Ö8´¤ÝËŠà}Ž;ráè¥,“&EN,’œ¤yœóô¦7®WA° X¤Žê‰4â&ŒœcÝ4’ @›vâƒkÖ®®¾îa…<mŽJbdG("(ü´¶ÿ¢ís9z™ðœmPå¾BŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë!M]…ÈÙ’‹6mþE¬Y»zÌQ}Ï«Ž?y¡zM"Ô«õ»“νèÄ¢“SéD+—·|ªAš"¯‘æ½ZêU'Õ´q:±ˆ*Mu©“¹B£& o7°jí*!y€Ž,¤aq=—Ûpwé?ׂÖFË'o µ5v‰ˆQu]ˉØxŽ=¢“0-¾¸eþN:±„GTëŸN,6I7-’(-¾ðrì1Ëò!T±›ƒ í±Fúo ªnf}4Ý€A2Ëò;WÍß½Ï>»”…ì!(ÉPÆ£‹$'iç<½©ÆëÄUìB'©£z"¸ #çX7æÄâ2dÞ^²ß–óV½]]nå]¤ÿ,ƒì2%_J¢‚ÂOkû/Ú>—£— ÏÙ6Uî+äèÄ.§iîb³N,‘'Ó(/‘2žÀx]Y­Ð/’›òb Š-/öŒÐä¯V.NzĈ)*µÒÔUˆ\Tr{̰€ÌµÀUoW÷Þ}NYhp[’Jò¥$¬L¹ ^­ßtîE'œJ'Z¹¼åS Òy4ïÕzP¯:©¦Ó‰ETiªKÄÈÍ0g™ƒ9«Ö®RkèÈB·òÆßî3ö•å7ÞÓÚhùâØB-EˆˆDD¨º®åDl<ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·U· È¢>úÏŠ»Jçî3ûÚÀ´ñ^»_ßn²ÿÞ#„%áMtbtb‘ä$Í㜧7Õ¸q¸ ‚]èÄ"uTO¤7aäë¦QX\Úz>éß»kÕÚÕî= Ï­«ìf—+ùRr~ZÛÑö¹½Lxn¶ ¨r\!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ¦®BäÉ•¹ØIºt«æójÙw¯¹¬I æKIX™rA½Z¿;éÜ‹N,:9•N´ry˧¤)òiÞ«õ ^uRM§‹¨ÒT—:QÊÍ¿á\Òu†.™¶«„ä:²†dêÔ©æïRëìh–±ŒªÆéÄMÒßI'–ðˆjýÓ‰Å&"é¦E¥Å^Ž=fYþ#„*¶ss¡=ÖHÿ-AÕm²¨ MÍ2Ë2Ûš¯n˜îµwÛqžð-…b+Å£‹$'iç<½©ÆëÄUìB'©£z"¸ #çX7îÄÐÆí¾É<æ{5ÚÕ¥—ß¶e+Ü�QýMEPøimÿEÛçrô2áÙÞ& R«BŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë!M]…È)’Ûr [âη•9®F»ºËŽsŸW`ZBôšD.¨Wëw'{щE'§Ò‰V.oùTƒ4E^#Í{µÔ«NªiãtbUšêR'Z9üWhãæ]{s.Ëv•<@GÒPx=»MßC]mó’FË'o µ4!"=4¢êº–±ñ{D'aZ|qËütb ¨Ö?Xl"’nZ$QZ|áåØc–å?B¨b;7ÚcôßTÝ6 +'÷wμØ&Ò©›géä½ñ½×êÕ³³l³å!‚’ð:1:±Hr’æqÎÓ›jܸN\Á.tb‘:ª'Òˆ›0rŽuÓœX\¶_g6éÕ½s[”ŒÚÕn…¶{‘%7-•)ùRr~ZÛÑö¹½Lx¶ ¨rY!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ¦®BäÉõúÏ\Jçiº·…eö¼ÚI¶Þb–’ûó¥$¬L¹ ^­ßtîE'œJ'Z¹¼åS Òy4ïÕzP¯:©¦Ó‰ETiªKhå<'æ\u™fúNž´9!YHÃáz ^~‰2q:±D“ôwÒ‰%<¢Zÿtb±‰Hºi‘Diñ…—cY–ÿ¡ŠíÜdh5ÒKPuÛ€¬XZh–™ZÇ|ËÂß½æÆÌf_%.±a(ãщE’“4sžÞTãÆuâ*v¡‹ÔQ=‘FÜ„‘s¬›öäÄÐÖmºêÌ÷,ÛÕY·d5–¨þ¦"(ü´¶ÿ¢ís9z™ðloP©F!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ¦®BäÉ-=UhëúϾ–ùše»ºáúLîÓ¢×$rA½Z¿;éÜ‹N,:9•N´ry˧¤)òiÞ«õ ^uRM§‹¨ÒT—:ÑÊÓThëf]n€9æª,¤‘¡# i‚‡—.[Ò¤‰µ±‘ˆè¡U×µœˆçØ#: Óâ‹[æï¤KxDµþéÄb‘tÓ"‰Òâ /dz,ÿBÛ¹9ÈÐk¤ÿ– ê¶ÕqbiaÆ«îw•x‚×Xsè�‹$¼¸NŒN,’œ¤yœóô¦7®WA° X¤Žê‰4â&ŒœcÝ´7'—µ—ëïžA»:ß Õüá%_J¢‚ÂOkû/Ú>—£— ϵ6UÎ*äèÄ.§iîb³N,‘'Ó(/‘2žÀx]Y­Ð/’›òb Š-/öŒÐä¯V.NzĈ)*µÒÔUˆœ"¹!åÅ‘™¬8¥É¡hJžWWŸÙwÿ`¾”„•)Ô«õ»“νèÄ¢“SéD+—·|ªAš"¯‘æ½ZêU'Õ´q:±ˆ*Mu©­\Hšú/>³øÒÁUYHBGÒP¸u÷úJ¿9´Ëˆc;éýOB…"›Gy]ˉØxŽ=¢“0-¾¸eþN:±„GTëŸN,6I7-’(-¾ðrì1Ëò!T±›ƒ í±Fúo ªnPM'œ˜®ÿÒ¹ûÌ­÷Ž»Š÷Zýúv“…ì¼m‹êÄèÄ"ÉIšÇ9Ooªqã:q»Ð‰EꨞH#nÂÈ9ÖM{ubCæí%ý{wm‰žA»Ú½G_é?Ë ¶ó%_J¢‚ÂOkû/Ú>—£— ϵ6UÎ*äèÄ.§iîb³N,‘'Ó(/‘2žÀx]Y­Ð/’›òb Š-/öŒÐä¯V.NzĈ)*µÒÔUˆœ"¹!å¥ålæ—.ݲ|^í" öl·[üÏsö]!Ô«õ»“νèÄ¢“SéD+—·|ªAš"¯‘æ½ZêU'Õ´q:±ˆ*Mu©­\DšzÍÙCºÎÐ¥5]Á\ ¤1 # iHfqëy:±D“ôwÒ‰%<¢Zÿtb±‰Hºi‘Diñ…—cY–ÿ¡ŠíÜdh5ÒKPuÛ€j;±¸ÿ÷˜mQÉŠ%ïm»mù(ãщE’“4sž^+™èÆ© ntb‘:ª'Òˆ›0rŽuÓžX\–Z°·dŬs´µÙQýMEPøimÿEÛçrô2áÙÞ& RBŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë!M]…È)’R^ügg˜iˆdÅ‹ÍÐvÛâžã°ï ¹ ^­ßtîE'œJ'Z¹¼åS Òy4ïÕzP¯:©¦Ó‰ETiªKhåiê=p!¤‘¡# iàmè~@¿9•Ê”4ibm,BD$"zhDÕu-'bã9öˆN´øâ–ù;éÄQ­:±ØD$Ý´H¢´øÂ˱Ç,Ë„PÅvn2´Çé¿%¨ºm@­œXÀtýçoMƒ¿mLBð ê¼m‚‹êÄèÄ"ÉIšÇ9Ooªqã:q»Ð‰EꨞH#nÂÈ9Ö XZâ.<OKÛ—E»Úo@k›í¹ŸïæaGÚþ—¶ÿ¢ís9z™ð\jPå¤BŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë!M]…È)’R^JÛ²î3 l J¿]ܺK0_‰ø® êÕúÝIç^tbÑÉ©t¢•Ë[>Õ M‘×Hó^­õª“jÚ8XD•¦ºÔ‰VN‘&ôš£µíK¡]%$Б…4 Žô0gàŒcóþ ¹’„ 9ÑIÐ]×r"6žcè$L‹/n™¿“N,áÕú§‹MDÒM‹$J‹/¼{̲üGUlçæ C{¬‘þ[‚ªÛÔÒ‰tí=‡Ä_- ŽÌ=Ww÷kÒK¨ ‹$'iç<½©ÆëÄUìB'©£z"¸ #çX7tbi‹;ϬÓIVíêL}æŒìo*‚ÂOkû/Ú>—£— Ï­6UŽ*äèÄ.§iîb³N,‘'Ó(/‘2žÀx]Y­Ð/’›òb Š-/öŒÐä¯V.NzĈ)*µÒÔUˆœ"¹!åÅÞ–M×}vÑåT¹žW眮$_‰ø® êÕúÝIç^tbÑÉ©t¢•Ë[>Õ M‘×Hó^­õª“jÚ8XD•¦ºÔ‰VN‘&7¦ïŸÕó*!ù £Ò€ôèÝ¿øN,Ñ$ýtb ¨Ö?Xl"’nZ$QZ|áåØc–å?B¨b;7ÚcôßTÝ6 ÖN,`šý$+ôïŸØ0”ñèÄ"ÉIšÇ9Ooªqã:q»Ð‰EꨞH#nÂÈ9Ö XüqgéÓM²¢{Ͼ%÷ &<"(ü´¶ÿ¢ís9z™ðloP©F!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ¦®BäÉ )/ámY×ig–¬èß¿K¨^K¾+ä‚zµ~wÒ¹Xtr*håò–O5HSä5Ò¼WëA½ê¤š6N'Q¥©.u¢•S¤É›ÝzwB:²†¤Ûô­Ë?—4ibm,BD$"zhDÕu-'bã9öˆN´øâ–ù;éÄQ­:±ØD$Ý´H¢´øÂ˱Ç,Ë„PÅvn2´Çé¿%¨ºm@œX@§n=%+fè5$"îG¶B'INÒ<ÎyzS׉« Ø…N,’yzéÄ"ÉQÄ¥Kiܺw–¬è6m¯ÈŽPDPøimÿEÛçrô2áÙÞ& RBŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë!M]…È)’R^œH™N{IVôêÕÙzß’ïŽÄÊõjýî¤s/:±èäT:ÑÊå-Ÿj¦Èk¤y¯ÖƒzÕI5mœN,¢JS]êD+§HS0:OŸÝó*!y€[ ‘†À»ï¾vìÜEèÄMÒßI'–ðˆjýÓ‰Å&"é¦E¥Å^Ž=fYþ#„*¶ss¡=ÖHÿ-AÕmòâÄš:uñ¥§Ò=ÇÛ¾‹tíÒAÊFy{:±Hr’æqÎÓ›jܸN\Á.tb‘ÌÓK'IŽ".Xìq»NÓ!³vµc§.¡7ê#…žÖö_´}.G/ž+mªœSÈщ%\NÓÜÅfX"O¦Q^"e<ñº²Z¡_$7åÅ[^ì¡É_­\œô:ˆSTj=¤©«9ErCÊ‹+ÓÜašÌÚÕ.]šKî[ò݉óD^Ãó¥Ò{щE'§Ò‰V.oùTƒ4E^#Í{µÔ«NªiãtbUšêR'Z9Ešl婹ssjí*!y„+²Æ¤É2 ki,BD¬B‘Õ¿£¼®åDl<ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·UhND˜-^õQ1<Ä€¢ë€Ð©ÈŠij*óÚq?Ò½nq­‘Åõ_¢jñª—N,‰k`Ã)Äo(ý´A'IŽ".XÂã–Ýö•AS1ç#údÚþ—¶ÿ¢ís9z™ðloP©F!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ¦®BäÉ )/N¼ŒxÛ¾ôA›í„¤!˜arA½Z¿;Ñ×ÐÞ‹N,:9•N´ry˧¤)òiÞ«õ ^uRM§‹¨ÒT—:ÑÊ)ÒVž²|^%$Б…´,EˆˆUȉ¹¶êº–±ñ{D'aZ|qËütb ¨Ö?Xl"’nZ$QZ|áåØc–å?B¨b;7ÚcôßT¡=:a¶xÔGÅðJjUG™:±Hr’æqÎÓ›jܸN\Á.tb‘ÌÓK'IŽ".X¤ò2[}2mÿKÛÑö¹½LxÖµ ¨²W!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ¦®BäÉ )/N¼Ld@ú8ÁïND˜çÀ‘9‹y&¹Xtr*håò–O5HSä5Ò¼WëA½ê¤š6N'Q¥©.u¢•S¤IUžiPèÈBKc"brb®­º®åDl<ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·UhND˜-^õQ1<Ä€’ÚcÕQ&†N,’œ¤yœóô¦7®WA° X$óôÒ‰E’£ˆK'©¼Ì¦HT)ô´¶ÿ¢ís9z™ð¬kPe¯BŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë!M]…È)’R^œx™È€ôq‚߈0Ï#1rNô5´÷¢‹NN¥­\Þò©iмFš÷j=¨WTÓÆéÄ"ª4Õ¥N´rŠ4©Ê! L³Rç8Йč Ý)ùb ‰¨º®åDl<ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·UhND˜-^õQ1<Ä€’Ú£I0ùšxOUe4:±Hr’æqÎÓ›jܸN\Á.tb‘ÌÓK'IŽ".X’ÇÍ¢]ê#…žÖö_´}.G/þkÚT¹¤êLjæ2úêÝI*cé“¥©«4õä ŒÍ>:±DžL£¼DÊxãueµB¿HnÊ‹%(¶¼Ø3B“¿Z¹8=èu#¦¨ÔzHSW!rŠä†”'^&àX/£ÉU]'øÝ‰ó8#çD_C{/:±èäT:ÑÊå-Ÿj¦Èk¤y¯ÖƒzÕI5mœN,¢JS]êD+§HS9åÉ-éø!9„+²ÆÅÒX„ˆØ+{‰Ž¨º®åDl<ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·UhND˜-^õQ1<Ä€’ÚcÕQ&†N,’œ¤yœóô¦7®WA° X$óôÒ‰E’£ˆK'©¼Ì¦HT)ô´¶ÿ¢ís9z™ð¬kPe¯BŽN,áršæ.6ûèÄy2ò)ã Œ×•Õ ý"¹)/– ØòbÏMþjåâô ×AŒ˜¢Pë!M]…È)’R^œx™@€&ÿ*Á ~w"Â<ŽÄÈ9Ñ×ÐÞ‹N,:9•N´ry˧¤)òiÞ«õ ^uRM§‹¨ÒT—:ÑÊ)ÒTNy"¤‘¡# iL,EˆˆUȉ¹¶êº–±ñ{D'aZ|qËütb ¨Ö?Xl"’nZ$QZ|áåØc–å?B¨b;7ÚcôßT¡=:a¶xÔGÅðJjUG™:±Hr’æqÎÓ›jܸN\Á.tb‘ÌÓK'IŽ".X¤ò2›"Q}¤ÐÓÚþ‹¶Ïåèe³®M@•½ 9:±„Ëiš»Øì£KäÉ4ÊK¤Œ'0^WV+ô‹ä¦¼X‚bË‹=#4ù«•‹Óƒ^1bŠJ@­‡4u"§HnHyqâešüK 'âÞÁ< æo¤œâ^tbÑÉ©t¢•Ë[>Õ M‘×Hó^­õª“jÚ8XD•¦ºÔ‰VN‘¦¤å‰F„Ž,¤aq4aNyñlhd\'",(æØ#: Óâ‹[æï¤KxDµþéÄb‘tÓ"‰Òâ /dz,ÿBÛ¹9ÈÐk¤ÿ–  íщ³ÅË >*†‡PR{¬:ÊÄЉE’“4sžÞTãÆuâ*v¡‹dž^:±HrqéÄ"•—Ù‰ê#…žÖö_´}.G/žumªìUÈщ%\NÓÜÅfX"O¦Q^"e<ñº²Z¡_$7åÅ[^ì¡É_­\œô:ˆSTj=¤©«9ErCÊ‹/Ðä_Z8÷æIXX0#å÷¢‹NN¥­\Þò©iмFš÷j=¨WTÓÆéÄ"ª4Õ¥N´rŠ4%-O„4*td! ‰£ sÊ‹gkD#ã:aA1ÇÑI˜_Ü2'XÂ#ªõO'›ˆ¤›I”_x9ö˜eùªØÎÍA†öX#ý·UhND˜-^õQ1<Ä€R³Ç¬QÞN,’œ¤yœóô¦7®WA° X$óôÒ‰E’£ˆK'©¼Ìf…¶ÿ¥í¿hû\Ž^&<ëÚTÙ«£K¸œ¦¹‹Í>:±DžL£¼DÊxãueµB¿HnÊ‹%(¶¼Ø3B“¿Z¹8=èu#¦¨ÔzHSW!rŠä†”'^& É¿´¨ÛIw­\5Ód±ýD÷RÊ©t¢•Ë[>Õ M‘×Hó^­õª“jÚ8XD•¦ºÔ‰VN‘¦¤å‰F†Ž,¤]á”|±„…Dt¢ƒCOÄÆsì„iñÅ-ówÒ‰%<¢Zÿtb±‰Hºi‘Diñ…—cY–ÿ¡ŠíÜdh5ÒKP…öèD„ÙâePÃC (5{Ìå éÄ"ÉIšÇ9Ooªqã:q»Ð‰E2O/X$9Џtb‘ÊËlVhû_Úþ‹¶Ïåèe³®M@•½ 9:±„Ëiš»Øì£KäÉ4ÊK¤Œ'0^WV+ô‹ä¦¼X‚bË‹=#4ù«•‹Óƒ^1bŠJ@­‡4u"§HnHyqâešüË 'ä{P¯ÖïNô5‚º •sti¢‹B'Z¹¼åS Òy4ïÕzP¯:©¦Ó‰ETiªKhåiJ£<҈Б…´œ’/–°ˆNtpè‰ØxŽ=¢“0-¾¸eþN:±„GTëŸN,6I7-’(-¾ðrì1Ëò!T±›ƒ í±Fúo ªÐˆ0[¼ ê£bxˆ¥fY£¼!X$9Ió8çéM5n\'®‚`:±Hæé¥‹$G—N,5Œ›ðÚŽBÎQDŒêSheÂ~›€*‹rtb —Ó4w±ÙG'–È“i”—HO`¼®¬VèÉMy±Å–{FhòW+§½bÄ•€Ziê*DN‘ÜòâÄË´úÌ'ä{P¯ÖïNô5‚º •sti¢‹B'Z¹¼åS Òy4ïÕzP¯:©¦Ó‰ETiªKhåiJ£<Ò¨4 !uŽ£xzwJ¾XÂB":ÑÁ¡'bã9öˆN´øâ–ù;éÄQ­:±ØD$Ý´H¢´øÂ˱Ç,Ë„PÅvn2´Çé¿%¨B{t"Âlñ2¨Šá!”š=ÃLÌ:eg@)tb‘ä$Í㜧7Õ¸q¸ ‚]èÄ"™§—N,’E\:±d7õv5ê–Úþ‹¶ÏåèeÂSÜ& úU 9:±„Ëiš»Øì£KäÉ4ÊK¤Œ'0^WV+ô‹ä¦¼X‚bË‹=#4ù«•‹Óƒ^1bŠJ@­‡4u"§HnHyqâeZ}¶ÝB“ãº8NÈ÷ ^­ßèku*çèÒD'…N´ry˧¤)òiÞ«õ ^uRM§‹¨ÒT—:ÑÊ)Ò”Fy ’¤]%$¯pEÒð8%_,a!èàбñ{D'aZ|qËütb ¨Ö?Xl"’nZ$QZ|áåØc–å?B¨b;7ÚcôßT¡=:a¶xÔGÅðÊÂ3Ay}:±Hr’æqÎÓ›jܸN\Á.µpb ­{÷mjJ7”ŒËX$9›¨ nªñÚcÜ´n©í¿hû\Ž^&üç· ¨²H!G'–p9Ms›}tb‰<™Fy‰”ñÆëÊj…~‘Ü”KPly±g„&µrqzÐë FLQ ¨õ¦®BäÉ )/N¼L @«Ï,pB¾õjýîD_#¨«P9G—&:±(t¢•Ë[>Õ M‘×Hó^­õª“jÚ8XD•¦ºÔ‰VN‘¦ÔÊ! YHCã”|±„…Dt¢ƒCOÄÆsì„iñÅ-ówÒ‰%<¢Zÿtb±‰Hºi‘О¦ªl`f¯{̲üGUlçæ C{¬‘þ[‚*´G'"Ì/ƒú¨b@YØc&(¯O'INÒ<ÎyzS׉« Ø%k'–²|&”²¶k6Id\vèÄ"ÉQÄ¥K ã¦uKmÿEÛçrô2á?¿M@•E 9:±„Ëiš»Øì£KäÉ4ÊK¤Œ'0^WV+ô‹ä¦¼X‚bË‹=#4ù«•‹Óƒ^1bŠJ@­‡4u"§HnHyqâeë)%‚yâ„„ó7RΉ¹†X”r*håò–O5HSä5*¼—ãT®“à°l­tRM§‹¨ÒT—:ÑÊ)Ò”¤<ÅÝ‹F„Ž,¤aqJ¾XÂB":ÑÁ¡'bã9öˆN´øâ–ù;éÄQ­:±ØD$•´8v£H‹/|j {Wx‚JEÿ©ÛcÙyž¡=ÖÈ[‚*´G'"Ì/ƒú¨b@YØc-¡‹$G—N,‰“çoqCo=U’Qa£7i=[2.;tb‘ä(âÒ‰¥†qÓº¥¶ÿ¢ís9z™ðŸß& Ê"…XÂå4Í]löщ%òdå%RƯ+«úErS^,A±åÅžšüÕÊÅéA¯ƒ1E% ÖCšº ‘S$7¤¼8ñ2€Šõ”Á<qB‚ù)çÄ\C„N,J9•N´ry˧¤)òeÞˉ¹^RLuìi²:¸Òw/­NªiãtbUšêR'Z9Eš²¨ãiTèÈB§ä‹%,$¢z"6žcè$L‹/n™¿“N,áÕú§‹MD§ÅbIõï ·Ù£÷^Þ½,Ë„PÅvn2´ÇÙbKP…öèD„ÙâePÃC (•ú(p".=YB'IŽ2.X&Ïß2â–Ds*‹ŸE‡5š¸Iï„N,’E\:±Ô0nZ·Ôö_´}.G/þóÛTY¤£K¸œ¦¹‹Í>:±DžL£¼DÊxãueµB¿HnÊ‹%(¶¼Ø3B“¿Z¹8=èu#¦¨ÔzHSW!rŠä†”'^&P±žR"˜'NHX0#團kˆÐ‰E)§Ò‰V.oùTƒ4E^Cq/³ÚŠæ^­ië$èàâ>ŸÒ‰¥Ê÷ªAšêR'Z9Eš²(O„42td!‹£:å t¢ƒCOÄÆsì„iñÅ-ówÒ‰%<¢Zÿtb±‰H¢´LuÂäŮ±Ç¢.›ô¿1p"u{,;Ï3´ÇÙbKP…öèD„ÙâePÃC (•ú(p".=YB'IŽ2.X&Ïß2âú¢„4”uIŽ2®›NŸCKÆé¥‹$G—N,5Œ›Ö-µýmŸËÑË„ÿü6U)äèÄ.§iîb³N,‘'Ó(/‘2žÀx]Y­Ð/’›òb Š-/öŒÐä¯V.NzĈ)*µÒÔUˆœ"¹!åʼn— T¬§,èÕú݉“R]…ÊEØmÙrÕL“ÅöÝK)§Ò‰V.oùTƒ4E^#â^>çͽZª¡¯cMÑ©Eì÷Òꤚ6N'Q¥©.u¢•S¤)ëòDH#BGÒ˜8ªS¾@':8ôDl<ÇÑI˜_Ü2'XÂ#ªõO'›ˆ”Ç)/oiñ…—cŽç÷[^O¯¨üGUlçæ C{¬‘-¶UhND˜-^õQ1<Ä€R©'âÒ“%tb‘ä(ãÒ‰%Q`òü-#nQÜ©,¾-žRA5…-§’àžÞ•cÔ[%¸'X$9Џtb©aÜ´Ðö_´}.G/ãH¼€*‹rtb —Ó4w±ÙG'–È“i”—HO`¼®¬VèÉMy±Å–{FhòW+§½bÄ•€Ziê*DN‘ÜòâÄË*ÖSÚXÌÎú]#çÄ\C„N,J¹àý*’Ë[>Õ M‘×°Ü˺eæ^­µÐ‰;l\âÐR†NªiãtbUšêR'Z9Eš².O„4*td!í'&Ð)'®²¡pJœøxN|ãã”|±„Ùâ9ŠkZNªòÆò;ó‘K¸%@­:±ØD¤¬´¸«åäMDZüio M˜Zÿ×ÿŠÊ„PÅvn2´ÇÙbKP…öèD„ÙâePÃC (•ú(p".=YB'IŽ2.X&Ïß2âQ{UFüò ³ÕÁ¥Ø„%ðFq‹ŸS¦3K•ò8ݸ #ç¸ìЉ%Û¸MÕheµýuŸ[/ãH¼€*rtb —Ó4w±ÙG'–È“i”—HO`¼®¬VèÉMy±Å–{FhòW+§½bÄ•€Ziê*DN‘ÜòâÄË*ÖS8ÇÁüu¢äœ˜kˆÐ‰E)¼_Ery˧¤)òS îÕzPz}'>MžÊJ¿÷=È&Ñ뤚6N'Q¥©.u¢•S¤ÉZžR¼! YHÃãÄ:åÄU6N‰€ωo|œ’/–0[<GqMËIUÞX~g>Òb ·¨õO'›ˆ¨Óâ}Ð)'oœ–4êʆ’°ð·ÖÃõáø¼|—“ ì±ì<ÏÐkd‹-AÚ£f‹—A}T i@R©'âÒ“%tb‘ä(ãÒ‰%Q`òü-#nh—4§œJY‰~ýXÇ–`=î¸ñ¤¬xaЉE’£ˆK'–lãÒ‰E™½ 9:±„Ëiš»Øì£KäÉ4ÊK¤Œ'0^WV+ô‹ä¦¼X‚bË‹=#4ù«•‹Óƒ^1bŠJ@­‡4u"§HnHyqâeë© 8¶ïND˜”ê*TÎQÜK+WÍ4Yl?ѽ”rÁûU$—·|ªAš"¯ÑúŸ'§º—S™NBÆ€ÍWË‹ƒÚß?µõkÅÛ¥hãtbUšêR'Z9Eš**OåÞ‹„Ž,¤¡qbrâ:aA1ÇÑI˜_\'"ÌÏQ\ÓrR•7–ß™´XÂ-jýÓ‰Å&"ª´8Ž2-Rš.EZ|á¡öØÐäYµ%>ßëÓQêöXvžgh5²Å–  íщ³ÅË >*†‡4 ©ÔGqéÉ:±Hr”qéÄ’(0yþ*ã:eX7N:iN×{ï¦'ÍÒxnœòïY¼ŸõÂ’œŠâ&Œœã²C'–lãÒ‰E™½ 9:±„Ëiš»Øì£KäÉ4ÊK¤Œ'0^WV+ô‹ä¦¼X‚bË‹=#4ù«•‹Óƒ^1bŠJ@­‡4u"§HnHyqâei•—,ql߈0)ÕU¨œ£¸—V®ši²Ø~¢{)å‚÷«H.oùTƒ4E^Ÿ©1׈ºW°‘¥N÷rO4¸«´$Úv(E§‹¨ÒT—:ÑÊ)Ò”iy’Òü%¤¡# iXœ˜@§œ¸NDXP̱Gt¦Å׉³Ås×´œTååwæ#-–pK€Zÿtb±‰ˆ*-e:±8–‚–¬l„Û£Óª|„5…Lÿ”èß7…^3:-!× œÌ…=ÖÈ[‚*´G'"Ì/ƒú¨Ò€¤RNÄ¥'KèÄ"ÉQÆ¥K¢Àäù«Œ[®K¬K ^Ù¾­òÚí€|N-¢‹äõëôÞ3:±HrqéÄ’mܪ8±Xp'£úZGâT9 £K¸œ¦¹‹Í>:±DžL£¼DÊxãueµB¿HnÊ‹%(¶¼Ø3B“¿Z¹8=èu#¦¨ÔzHSW!rŠä†”'^&VyÉÇö݉“R]…Ê9Š{i媙&‹í'º—R.x¿Šäò–O5HSä5ðIâijõTW'žt·$²¤Çæ²Õè.E§‹¨ÒT—:ÑÊ)ÒTÍòDH#CGÒ81N9qˆ° ˜cè$L‹/®f‹ç(®i9©ÊËïÌGZ,á–�µþéÄbUZÊpb ¤´Û†¥\ÖÔ¤Ò?îÛáùï;aÛjȯ(;Ï3´ÇÙbKP…öèD„ÙâePÃC Hc!Á¡'ÊŠ—2tb‘ä(ãÒ‰%Q`òüÕ\ZU ¸²º„8ޤ–Ƕ[F:·8mõo“ ¦¸:‹è ‹$G—N,ÙÆ¥‹2{rtb —Ó4w±ÙG'–È“i”—HO`¼®¬VèÉMy±Å–{FhòW+§½bÄ•€Ziê*DN‘ÜòâÄ˪V^*À±}w"¤TW¡rŽâ^Z¹j¦Ébû‰î¥” Þ¯"¹¼åS Òu©N™÷ònùc‘ Ó‰SFšl¿¿)*M¾xžôáU©ãÈÓ#—¢Ó‰ETiŠÕ]u¢•S¤)¬<eq¯`^ÒhБ…´/œèŠÝ‰8ϱGt¦Å׉³Ås×´œTååwæ#-–pK€Zÿtb±‰HlZlùrᩚ´„P¤=ã4…o'TœÄ³MY”Sþ#„*¶ss¡=ÖÈ[‚*´G'"Ì/ƒú¨b@©ÔG•äy&$ºŸ2s—¨Z¼*Å¥K¢Àäù«¹´ª•‹“Öhƒ"®÷^Q+ª¸éŽuhi­·âÄèÄ"ÉQÄ¥K¶qéÄ¢Ì^…XÂå4Í]löщ%òdå%RƯ+«úErS^,A±åÅžšüÕÊÅéA¯ƒ1E% ÖCšº ‘S$7¤¼8ñ2€ª•—”p"î[ò݉s¿GØmÙrÕL“ÅöÝK)¼_Ery˧¤),Ì]‰D}¯ÕWl:q¦©øÝ’&GJÓÔu 0µµG`[¥E,ºk=Ñêÿ›&mÚEÒÕ]MîUƒ4ÄêC'Z9EšªZÇOҀБ…´œè:݉8ϱGt¦Å׉³Ås×´œTååwæ#-–pK€Zÿtb±‰HlZ”N,Ž8ÑúÅ+Û[ŸðLXÈìœj|«³ØÊÉÞ í±ì<ÏÐkd‹-AÚ£f‹—A}T i@R©'*ÉóLHt?eæ*.QµxUŠK'–DÉóWsiU% h»{¼ÒË)~LˆHÔVAšUðBYÿµÂÄèÄ"ÉQÄ¥K¶qéÄ¢Ì^…XÂå4Í]löщ%òdå%RƯ+«úErS^,A±åÅžšüÕÊÅéA¯ƒ1E% ÖCšº ‘S$7¤¼8ñ2€ª•—”p"î[ò݉s¿GØmÙrÕL“ÅöÝK)¼_Ery˧¤),¬,'³dK´œÓúŸ#ÉÓä½Nä5¤í÷{ïßd¹—ˆ Ýv?Ùó>cª6N'Q¥)¨“D÷J9M‘×(GN‘¦ª–§à B:²ö]§;'bã9öˆN´øâ:a¶xŽâš–“ª¼±üÎ|¤Ån PëŸN,6‰M‹Â‰Å‰²§åqec*d¦N‘©S¦ ÖŽtð)»Î1˜Äkjn.<´>ͤÙ|ïà±Öo– âê,ŽÝÛ¿¿5n"{,;Ï3´ÇÙbKP…öèD„ÙâePÃCTê£À‰Jò<ÝO™¹ŠKT-^•âÒ‰%Q`òüÕ\ZQ D9°„‹S"?µ0ò†¶ÎüÅ[hNKÛçë6aÍ…/ÍÍ­ŸÂ÷ü·i²¬¯ì½£Íź:‹­ÎuJãÓ‰E’£ˆK'–lã6Ew\2ÃQœŒêShe"jªâÕÏTÈщ%\NÓÜÅfX"O¦Q^"e<ñº²Z¡_$7åÅ[^ì¡É_­\œô:ˆSTj=¤©«9ErCÊ‹/¨ZyI 'â¾%߈0÷{„Ý–-WÍ4Yl?ѽ”rÁûU$—·|ªAšÂÂÔN,Ž{¯°<(‘sœŠ¿ûl–&ozšÂtth‰Ð›äØU_iÏ5%îz9±“Z¦)L'eÝ+å4E^£9EšâÊSš÷ ÊÒÈБ…4>NtîDœˆçØ#: Óâ‹ëD„Ùâ9ŠkZNªòÆò;ó‘K¸%@­:±ØD$6-•:±L s'Ô¦N™\˜Ð›bþ:–}Ï}àØ"RøL™dŒCK‡NÒ¡c'š›ìÛ áMQÓx ô¹÷[D"NæÂkd‹-AÚ£f‹—A}T wì‘S©'*Éó4iòÝ´\”™«¸DÕâU).X&Ïߘ¸*G;±ÛÄŸÉS¦ÊäÉSeŠqZ‰©àEh*Fù¦´c€°Å¡¥I:vhö9¶x4ƒi shi ®ËŸN,’E\:±d·VN,šû9 ¹äÏmªŸ©£K¸œ¦¹‹Í>:±DžL£¼DÊxãueµB¿HnÊ‹%(¶¼Ø3B“¿Z¹8=èu#¦¨ÔzHSW!rŠä†”'^&Pµò’&!i+ù®‘‹°Û²åœ˜k¤™&‹í'º—R.x¿Šäò–O5H“-Ì·ŠIÔ½\g{9¯÷™´gj˧˜ [Â]9ã0â´>«4µ<ºñð²Eáá´Õ‰¥Ô±FBVX™êü¿ÿÂVÌ–¶|r$d«¡€\h˜û½ÝÕì^5HSPʼnî•rš"¯QŽœ"M¶ò”Õ½¢äiDèÈB'º"w"NÄÆsì„iñÅu"ÂlñÅ5-'UycùùH‹%Ü Ö?Xl"™‹²K;ReÃqì¸âZáA ,S&ÉÔÂÓÒÔÉ“D&M’þ¿})³ŽøVfñôó‡ô?J¦ûw¼t(ÈüÛ¡£Œê2½ü1ÝŒòCŸ9å‹þóË}ç‘æNÓÈÔÎ]¤cá/[|÷±8¥¤neçy†öX#[l ªÐˆ0[¼ ê£bxH’J}8QIžgB¢û)3Wq‰ªÅ«R\:±$ Lž¿1qU“JS²ã;­•�Â'MžRøL5+®�8±L™TøLè(SÆN#Δi¥Cç>Ò­ÏÜÒܱ›ŒöœÌ¸úÚ2ò·däëoÈä±# íZ³4÷ê zu”Î}:IÇ™;H§…ïÝ:JÇŽÍòoÓ3x‡–N…Os³´æ‡Ý¡ÅêÌÒš¾Ðí†Ú~\iF×ÌFÎqÙ¡K¶qéÄ¢ü™ 9:±„Ëiš»Øì£KäÉH=8N¼Œ÷kÌ6{ñº²Z¡_$7åÅ[^ì¡É_­\\™Ñë FLQ ¨õ¦®BäÉ )/N¼L =ÅÊdˆõÝQÈ9Êëi䜘k¤™&‹í'º—R.x¿Šäò–O5H“-, 'ÇÇ̓RÇÇ<ŸNRø;yªwè¶ä"NÉß¶ÀÉ(ÍšÌªÙøÛ'Ï}Ý(J~»Dl;äÓÒIÉVC!rYè®f÷ªAšbÉî•rš"¯QŽœ"M6ûÍê^Qr„4*td!‹]‘;'bã9öˆN´øâ:a¶xŽâš–“ª¼±üÎ|¤Ån PëŸN,6‰LK%N,ŽcM‹Ïeò$ãÀ2yòD™:q¼ÌõòطïÈÀ៧•0:O™,} |ø,ðÛW²Ö‡OÊÝzÉóW׿[N&ué.]¦ë)M;Ò|À±Oö¹_¼OB¶pËÉ\Øcl±%¨B{t"Âlñ2¨Šá! H*õQàD%yž ‰î§Ì\Å%ª¯JqéÄ’(0yþÆÄ­Ä‰%ÒÅÄ™øïä¢Ë„ “eòØ2å—nÒôs“L;ýÜÒcÈÂ2ý J‡é§3qþyÿ#ùáœKeÒŸIÏ!KÉœûï-RøŒûòkùóéçå¯'Ÿç‡ 2©yŠL) þÛ¡YÆÍÜAd–fé0OGé<KG™¦séÔ±Ù8´tîÔ¡¸JK° úvúê!wu Mžø¶¸eSQÜ„‘s\vèÄ’m\:±(¦BŽN,áršæ.6ûèÄyÒ.ã”U^|_½˜ýŠ×•Õ K’¦¸LÊ‹%(¶¼Ø3B“¿Z¹¸2£×AŒ˜¢Pë!M]…È)’^âdiè)V&#œˆã ®œ09'æåÈ91×H3MNJ¿_)¼_Ery˧¤É¦rbñÜ x¯©bƒïöµx>Å*¡ÆyÅ]5{Š˜mÝ› rÓ†P§ïÜ,=¦™¦c“LSxöìP˜UìÐܲ¨cÆqEþ-ÈO*ÜtR!îè=Ñ‘1™è´ÈMíPhù'µÜÓ8¶tÄ*¢ÍæÛMMS`;w§õÓÔzP¢;σhX>†}«¢»šÝ«i*ÑI’{¥œ¦Èk”#§HSUë¸9B:²†$n`À‰8áÄÅsìˆHqŠSòÅf‹ç(®i9ûK„œøxUK‹%Ü º®9pÂÃlñ¤%2\BMJ/4=NviIÙ‰ÅûЖ)“ “rÿŽ—Îÿ.+~þŠ,óÅ«ÒkühIJïq#e³w”•>QnYv;ù¾Ïì2m>ÒqšnþÄ—xñûYÙcÙyž¡=ÖÈ[‚*´G'"Ì/ƒú¨Ò€¤RN¤ªÿš¡Ì\Å%ª¯JqéÄ’(0yþ–7ôÖe8±x·‚Ó XÆO˜$ãþž*šVšÞœ$]Ì)=W_E¦ÛzaiêäßþnÄ÷Êowþ×|ÇÊ*¿þ¦ô^oMÜmž¹Ì§ÿ[Ë_O>+>ü˜LþýO³ŸxóˆBÛõÇTi~²Lî>E&ÎÓ,2_a°±OGéÚ¥£LÓ©ƒqn [¡¥¸4tÉo,ufávB’E\:±d—N,ÊŸ©£K¸œ¦¹‹Í>:±Dž,ÕSiÆÚ®Ó²-¶<h•)^MM ]Y­°ärŠËT¡¼X‚bË‹Ýh5eA+Wfô:ˆSTj=¤©«9ErCÊ‹/HCO±2U ~w"ÂÜïNÌ5Ê‘sb®‘fš,¶Ÿè^J¹àý*’Ë[>Õ M¶°JœXœ{9î¶<­òXqerë‹pb™ôïéÚAdænMÒÆŽ2Ý´ÓÈÔƒãøÉ"ã¦6µüuàøRhñ)|ožÒâG‚Ö´¹0ÓØ±ðìÚ©p< £#sNâzÍ…;Žþg²ü<f² ÿ{ŠŒœXxÆíØA:t*ÜÓ™"àÐRø`¥w뢇–Öt7‰-[·€Ò‰{¢I2×õ¾Õ¸W ÒË´Þ¡‹NŽF„Ž,ÿÏÞ{€Yr]ç½ü:O÷tOÎ3È‘�I�$˜À¨l+’-¯,Ñ–e­½ë°^¯e[^{W6eÉŠ–­°’(‰s¦˜A‚$€�€�˜œ:w¿Xu¶ª^ªpS¥÷=÷Ì÷¦ëÞÿœ{OÝXá¯{µ\uB‚’ÙÛF²‰„B ŒeG i2"¥çR"¹ÝÐ|aà @)]7@|ŒeÃ!n“R³ãúCÙù—ļ£êþé/aIöÍS³†ÆæJëWð–Ç>{žú"ÊíÒ’ù%üÒßüþê%ß®yƦw¢T™¸åûœ|p.†÷UGð :pc0æcŒä4‰…©²%ÆÆ>Ι@R©ÖÿÈD±p’šÝl5‰%¿|U’–á ‹ˆÀâHÃ~X«·±±ÙBcÉ@ù±ª51~ïíØñ¯ßŒâžÝaûV g~ó÷±üÙ/t÷ïœÍæãOª7«”ûºùñ1Ìÿ­ïÁÎï{ –>ñi\zç»AëîC?ÇÌØ0PxØþûˆý°ñ€ýÀðf…Æ«EŒÝZܧðZ<ãVp/™…Iv±ø»1H%Q[Œi¼…ûŽ&±dk«I,Ч© §I,|=•éNZ|šÄ"ŒäÞK)Ôƒó…3i eµºbÜ+õ­<…ÙeÞ_´¿°­J_PÕ“Õƒ¼¿(è�šÄ"0N£ž¤:@ìK·(BÁc`½c’¤E$i¤é£íÇÊKQ/˜_"½­VN#ð‰…¥Mb!O‚Îm­K`i™hµ,4ë&¦ „ã %ìœCÍÊárøNÃÖ]éÜ—8;9¿þ1ºÇÝôsÞ¼œÕ]ì¿ Ëè蹶Ί,%ìž/áøBÙ¾½¸ÚÄçÛ8³fߣ–ó(¸[ØzÝ¿>B‹§î‚uØëݯ³¶òé ¶b”'Wo ´“Qû¬‹,ÇMbQÓÓ¢e»Š&²h¹ª„$³#¶! Œd …ËŽÒdDJÏ1¤Dr»¡ùÂÀ€Rºn€øË.†/BÜ&¥fÇõ‡²ó%E‹w K³ÕDcsææ2^ùÔxÃ#ŸÀx‹¿}PÉÛoÙÞö÷¹/0¾tâ•0väQ,ù} ‘Y‚`ãŒÈ-ÑGÔ;PÂöHŒe—ÁxÔÇ9H*ãQ "Õú™(®BC³’­&±Äã—¯JÒ2<"‰Å4 õV–h¯¨>ÇÄó&Æî¾ ;þóßFaa'XÒ^YÅ ¿úk¨=ù´û…¸o:j›Ø|ì LÜq[ÈÎÈç1û–7`úU¯Àâ{?ˆå†iv -_áŒâYí½„•;›ØXhar¢„‰±¢»íKÜ$Æê, 2KŽõ"ø6RIÔcoá¾£I,ÙÚn)‹jö¤®C+(¦‚ž&±ðõT¦;iñi‹0’{/%©Ól¹äÍý³c³>†Åú1wžÌå Ü<)˜Ohrd¶Bð\äêôÿ“èHôÒªO Åè ªz²>#ï/ :€&±ŒÓ¨'©ûÒ-ŠPð˜Xï˜$iDÑ#IiúÄhû±òRÔ æ—Ho«•Ó|baRKàú€é„ÓëÎPΖ?MÓ%°4ê¦{¿xlg ‡U°f¿"|vÃÀÓ‹Oz»+˜8©ôˆ+ÎmcÎfu;WßÎoÃYÑ¥m¸÷“…rw'¼ÒFž¿ÒÀcçšXµ±R5‚³%nÐâ!¨ËÂ`•ç£C¯s«¡@y2±ÀÁ(Ûɨ} ¨e:îh‹šž-ÛY4‘EËU#$ˆ ™± I`$›H(tÀÀXv¤&#RzŽ!%’Û ÍÎ�”ÒuÄÇXv1|âà6)5;®?üÆ”Ø ‰%˜7Ó®{hyVaiÕ7PßXž˧ðÖ/ÿ%,žAÖâìïúÃßx?.Lí³¹<Ægw#_(1u{½ ør¯3ßòùþÒí'ÂÇXvQÚãˆÚbJØI€±ì2ú8gIe< D¤>D W!‰¡Ù ÉV“XbñËW%i‘ÄRo˜¸²\CmÍÂøÃETŸ°Ü•Wvü«CùºkÀ‡ÄòüÿùïÑxá´ýÀ.V°Onó[l"KOÜZ~ü­˜º÷\üßAëìù‘%7 ´”ÎçPü(Ð<náÊ- lL·0;]Aµ\@pK½Þ¹z§9÷a!¶"m„’¨-Æ4ÞÂ}G“X²µÕ$ÅÓTÐÓ$¾žÊt'->MbFrï¥ê¡ÙØpmî¹ý½ö‹<ïzè—]òh¥:ÍÌ„íù>ç&aŽ[©¿0 ia„J_PÕ“õyQÐ4‰E`œF=Iu€Ø—nQ„‚Ç$ÀzÇ$I#ŠIÒHÓ'FÛ•—¢^0¿Dz[­œFà K“Äâý€°Ý´ìù¯úf†eáÆÝ%Lídzk>»8Xi¥·;k¥QwÒs>„€ˆë¯4 ¬Ú™NÏTð] ¬o´ñ¥g7qq½…òXåJÁ%µF÷d«­Xè/0ŠP9‰/A=œ¯ÇÌ'[µŒÚ§€Z¼¼RöI˜F=Ÿ†:Æ©ê+E‹–m&šÈ¢åªD̎؆$0’Í:``,;RH“)=ÇÉí†æ g�Jéºâc,»¾qp›”š×ÊΗ”H,ä¹árö$¯­^†Y[Ã[ù8^÷øgâUWÞÎë'?÷Gøw?ø¡±¶„±™ÏÃHòßEi‘Ë<Ãö8¢¶Ø¶G`,» Æ£>Ι@R©ÖÿÈD±p’šÝl5‰%¿|U’–á $–Þxçį®7pe©†ÜÅf>_D®f`âMoÄÔÿ�Œÿ¶Ë]‰å_ÿ*š§ÎøI,Æà¼œôkß~ *R>t�ûÿã¯`ñïÆúÇ?å[™ÅýÙiUžÎ£üBëwµqnÿ:f§«˜ž,‡·BZôïGÞ#³ðÆ%R ³$j‹1·pßÑ$–lm·*‰Eux$‰A® tš zšÄÂ×S©Oiñi‹0’{/¥Ø_¬v m³‰#ûžëh}¥†|¾Ò¦ÓÏÛ`µÂ°šD†Ó_´¿° B¥/¨êÉúŒ¼¿(è�šÄ"0N£ž¤:@ìK·¸¬+çXÐn#ë‘$4}b´ýXy)êóK¤·ÕÊi>±°´H,Þg¯–}?ÛØlcs­é>½ó`Åñ2Y6°vɿꊓ^˜„Ò=Æà/ âÿê,Ag¢KuûE¥}Ïüú›¦PÛlâKÏ6pþJ Õ±"*ãEä 9ge´^9ë·_Þg»×?_Iiæ5Ÿ‚å+¯”}¦EOÁ§¡ŽqªzÁJÑ¢eŠ&²hÙöB‚’ÙÛF²¹ƒB ŒeG i2"¥çR"¹ÝÐ|aà @)]7@|ŒeÃ!n“R³ãúC#ó%‰¥Ý¬csõ"fV.á'¾ø§8|ùŒB*‹ð¶OýwüÙwýcÔ7–Q™ØÑÇú+­xÎÓ÷R•`ä2ϰ=ލ-v „í‘Ë.ƒñ¨s&TÆ£@DêãÑHD±p’šÝl5‰%¿|#Ør³ŽHb¹pyëëmŒ}½ˆê“9äÆÇ±ãŸü,Ê7Ý�‘8$–SÿWÄ✉á!€ ÎÌ0ÍgŸƒÕh"W.A&F±ˆ¹ŸüQT¯»‹¿ÿ‡0Z­ñÄ0úK0 “Ÿ-¢~m—o«£Þlcav¬³„s`Þë TFFä}„<éÅMbI%Ï«Év+¯Ä•ké´;PP:M=Mbáë©LwÒâÓ$a$÷^J±¿XfÛÅwM¿€±1ËN¢ŽñÊeÔZ{ÜÕB•YÔëª{^‚iP“XÄz²>£VrÑ$¾qõ$Õb_ºÅ•`]8Ç‚vY$i¤é£íÇÊKQ/˜_"½­VN#ð‰…Å!±°Ò÷>{u¶ÚXmÚÏ;Û¸qOÓ³U|c9‡Í £O`qt#‘T<„Q¸qäÛj(H q6ÿ[lØáB¯¿©ˆ‹K |öé:–k-ŒO•Qª;~wɤÁó7¬¶^ÿ˜ºå î‚é Ó@ŠyÀ§€Z¦ãŽ&±(ê+E‹–m*9hѲ…$³#¶! Œds…ËŽÒdDJÏ1¤Dr»¡ùÂÀ€Rºn€øË.†/BÜ&¥fÇõ‡²õ…UnÄΛzúK³¶Žõ¥³8rîiüòÇÿëÈH,Žf£…ëŸzÅú&ÌVÓ~!gõ\†ÿ `ÊH+z™gØGÔ;PÂöHŒe—ÁxÔÇ9H*ãQ "«ñh¸¢X¸ I ÍnH¶šÄ Œ_¾Š¶Âñ#‰Å™:NŸ_ÃÆJ“Ÿ, òíŠ{÷`ç¿þçR‹¹¾ŽSÿú? yêlwûŸœK"鬜’ëÄõ~ÎË5狺gžE{ÙXø?þ)òSSnº¹îVCîßîòÑå'ó˜øLKmœ¹¸ŽvÛò£wUOtãøÉ…µÅ˜Æ[¸ïhK¶¶šÄ¢xš zšÄÂ×S™î¤Å§I,ÂHî½T„þÒhmÀ$¯¹áã{�~ݵpI,Æz„ºò´BN…h‹XOÖgÔë@¢¦0(×CšuÅÑSp—Ó_H®�Ò¨'©ûÒ-®ëŠqùÚ9´ÛÈz$I#MŸm?V^ŠzÁüémµrO,,m‹ƒo¬5±taS9 o¸±Š ¥q|æR«-ù¥´çB÷ÖÒÝš§wl’ÿ˜g)ĉqr·=âÚt}ZlæP™¨âm/Àó9¬,ÖíçÉ5˜ .P6V°\<Ì«;Ëk„­ÛNFíS@-ÓqG“Xõ‚•¢EË6MdѲm…$³#¶! Œds…ËŽÒdDJÏ1¤Dr»¡ùÂÀ€Rºn€øË.†/BÜ&¥fÇõ‡²õ%‰%é%±ÔÖ.csõ^ýÌ—ñöOý&ê•´Ûm÷¥}€7|å=n\³¾îo¡ó§äíȶ=ލ-v „í‘Ë.ƒñ¨s&TÆ£@Dã‘ìÓÅÂUHbhvC²Õ$–X`üòU´M‹ÄÒnNŸ_Es‰0ù¡<Š ”ÂÜ?ÿ'(,ÌCèƒiâ̯ýš§Ïø&.‰%×!´ä ϯKhi<÷<¢JéÈaìü—¶Oós}RLo›¡Î - rÿh­ËÎ^\G«eõÏ6TÁòˆBfIÔcoá¾£I,ÙÚj‹âi*èi _Oeº“Ÿ&±#¹÷R õйíük·öüÛÆužìã·þªý«mcuWÇ÷®¯ŸQ¨c®”Èpú ’öv£Ué ªz²>#ï/ :€&±ŒÓ¨'©ûÒ-‘pÎÁw,h·‘õH’Fš>1Ú~¬¼õ‚ù%ÒÛjå4ŸXX$wžëê9[ ­\ÙÄÚb·ìÉcf×Þw¡Œ“†:Iâ83g)ı‰-$%Ã8·¤—[E\`?rKÅ~pÛÆâ9û^µazÊ|eF¬òôT«îHÔ¶@;µOµLÇMbQÔ”“-ÛQ4‘E˶D̎؆$0’M:``,;RH“)=ÇÉí†æ g�Jéºâc,»¾qp›”š×ÊÖ—„$çE Ä²z Í5¼õÔýø/ÿ5r–‰QŠY«÷o|æ«îj,ΖGD­ D.ó ÛãˆÚbJØI€±ì2ú8gIe< Dd1ÉÎ1}Q,\…$†f7$[Mb‰Æ/ß¶Qò‘XÎ\XC{‰0ñ¹U¥ãG±óŸý2r“É…ßþÔ¿õ„oÅ•\Äb -ý_—ÐÒ|þâHaÏnÌþ‹ŠÂܬŸÄÒÙÍÈ•¼}Õh-vÎÍl“ø/%µÅ˜Æ[¸ïhK¶¶šÄ¢xš zšÄÂ×S™î¤Å§I,ÂHî½”¤\:ŠGß´:Û ÍMžÇäT«?5¶JaÅMÚ"ËgÏH”Õ Ás‘«ÓÿO¢#ÑK«>)x£/¨êÉúŒ¼¿(è�šÄ"0N£ž¤:@üëÅ”„xÇ”¢IÒD$Í+X¤±òRÔ æ—Ho«•Ó|¦ÁËK‘ÄÒ;n·L\>·j´qï‰2¾eŽã+‹´(­•TR´cuð 4ëfÍRo½} ¦ ,^ÜÄæFÓS6(µòôŠÅ´ „1âv2Ÿj™Ž;šÄ¢¨'('-Z¶«h"‹–í/œ €©FlCÉ& 00–)¤Éˆ”žcH‰ävCó…3�¥tÝ�ñ1–] _„8¸MJÍŽëeëK $oš‹çШ­ã—O~w}þ}¹Øþ¶"ËôÒ÷+<Mb‰îKJØI€±ì2ú8±SYŒG²sL_ W!‰¡Ù ÉV“XbñË7‚­h»’<qïw¦ýtíÜÅu˜Ë„ê‡ ë@aïÌýò?„Q­@&ËÿV?wÿ`%Ïj,^‹wE–¡Å@+&‘Å‘üŽÌüã€Üøø€Ä(ÍÜ&PýÙçweç\ûç.e«²$j‹1·pßÑ$–lm5‰Eñ4ô4‰…¯§2ÝI‹O“X„‘që!8g9‡­fÍ]‘ó•×Ú§kî9ñ)wkµj¡t(Ô¯x 4‰E¢'ë3òþ¢ h‹À8z’ê�#%±/;}Ç‚vY$i"’æ,ÒXy)êóK¤·ÕÊi>ñ°þ#HV^I,õÍ.ŸÝÄ®1·¯âC‹Uœ«çø„0'Nb¬ØBQÈ0$%È´-W¬2^uí8î9˜Ãê•:Ö–já2ó”y¸^ ž?~,XÎ[¤DÖfRÉ+eŸ„iDÑSði¨cœªž œ´hÙ΢‰,Z¶·p&�¦± I`$›,(tÀÀXv¤&#RzŽ!%’Û ÍÎ�”ÒuÄÇXv1|âà6)5;®?”­/ 3M ‰¥¶vív?þª}8þú—Â(—1j1›-éÙ•L:õ¸ë´Ùnú•ƒ7Â&^P†ÖGÔ;PÂöHŒe—ÁxÔljmœÊxˆÈb<’czBþ¿I2Žk;Š<#ØjK,0~ùF°åÍ"bø¿äêœåšÏ]Ú@sÝBåÃä’XòÓS˜ÿßþrãIãùS¸ôÇÞ_…Efé¯Ê’ü:„–ÚgÏ‚Z-Ä•üžÝ˜ù¥_@®\âê8çTú˜‰†}ŽÎ¹ZÝ}Ƚc>k<æ’YµÅ˜Æ[¸ïhK¶¶/: AíA:í”NSAO“Xøz*Ó´ø4‰E®§pÁ#o‰ÅçžÔÙVè–ÃSÆK~ξ5ÑYY«†Ý“b1„þ€¤ý…ÝhUú‚ªž¬ÏÈû‹‚ I,ã4êIªľtËB¼®h‹š^0¿Dz[­œFàK“ÄRÛhaéR ‡fìûÆÙ*Þs¶‚Ͷ1úÕWÀ&ÐðI5ÕYd¤še³ˆƒ»'ðÝ×åQ[·ÏýâÆ ü<˪·¼½ågQ¢ºë¡ŒÒ§€Z¦ãŽ&±(ê©”“-ÛT4‘EËöïÕ Äƒ9…HnGò ‚B ŒeG i2"¥çR"¹ÝÐ|aà @)]7À¿(eÚÅðEˆƒÛ¤Ôì¸þP¶¾HH,ìK}mÍUüè+öá•×Ï"ß«QzÇÿ cÇ F)ÍZøåÑÓ¹­v¼½Sƒ‘[¢=ލ-v „í‘Ë.ƒñ¨Û8•ñ(‘Åx$;ÇôE±p’šÝl5‰%¿|#غª¤nÏs—ë¨ÕM?e?^[µ}Êç±ãþ ssæßnãÜ;~Ë%¢x‰,2K®OZñ’WrÝxw; Û±ö…KH"…#‡0ñão ûçÙsö¹?ÝF½fâÊb™ŽÒ‹ Š +~ž[ÑV“X²µÍŒÄ2¤‰6þ½Ç@AÉU=Mbáë©LwÒâÓ$ad¸žÂK¼¼:IÅIbÇÄEÌL…ç´“‹(æ×ºÄͰ3äþ±À«5Ÿ §Ò†Ó_´¿°­J_PÕ“õyQÐ4‰E`œF=Iu�åK·a]DÝ’’è‘$@DÒ¼Âc]Œ¼õ‚ù%ÒÛjå4Ÿx˜ÄÂÈ+ˆyI,›kM,_®áúyëU<p¥4 Š€O.Q!œ(­ØBYdHj³aå16=‰¸!«i߯^Ø@wÀÀ5–(Oï³~,p±þñÚId½aö'•¼RöI˜F=Ÿ†:Ʃ꩔“-ÛX4‘E˶’aÄÖ&‘l‚ ÐcÙ‘BšŒHé9†”Hn74_8PJ× cÙÅðEˆƒÛ¤Ôì¸þP¶¾¤Lbin® aÿ¾û% xÕ³}½ÜM7¢üÿ Ɖã…8+±˜õðÃËWN»-Óè2`,;Mba©l‰±±Û8•ñ(‘Åx$;ÇÌ$IÆqmG‘g[Mb‰Æ/ß¶²¼ƒ+‰„t"Ö6šXYo¡ðe ¹ÈUœüïFõ†ë "WÞý4OŸµÏÅènícpWfñn'Ô çúÛ."©TîzÊ/½ý§£ýõÓãA«-÷ܽeÑ/›`Y‘â 'MbI%Ï«ÉV“X]UÐÓ$¾žÊt'->MbF†ë)\°ÄË›£Ójn:Kªá®_bÆFŽpç‘ûݼ\]O"ÁV(›Y‘Ãé/ HÚ_ØV¥/¨êÉúŒ¼¿(è�šÄ"0N£ž¤:€&± Ü~’æëb䥨Ì/‘ÞV+§ø$LC”—÷Ã:FY{I,ë« ¬,ÖqË.OçÆñÕ¥R¦«¯0Ó<.©Æ³: Ç߆eßOLâ‡nÊÛ¡M,_\÷„ÈW¶ï[ƒugQŒºó¥ ^¬c•v¢ª7Ìþ¤’WÊ> Óˆ¢§àÓPÇ8U½å¤EËvMdѲ­…d±µI`$›DˆÐRH“)=ÇÉí†æ g�Jéºâc,»¾qp›”š×©/$éA‹Ù¬¡¶¾„ÛŽNá{^º+¤oÌÏ£üß~ ¹»_ŽaK³^cžCesî™v©÷‰Û¹Ȱ=ލ-v „í‘Ë.ƒñ¨Û8•ñ(‘Åx$;ÇL„,㸶£È3‚­&±Äã—oÛ¾:ųïyÍ–‰Å¥pÊDþ›¦‹”ŽÅô÷¾¹œü–ªqê ß÷A‡¿ÒýñÈ,¹þöBLr‹ýk_L¶"KO¦~âmÈÍî@+†þIS¿¯ç¾Ñ±Ï}¥á–·L„ÂëUëL“XRÉój²}1“X„Óªôšf  äª‚ž&±ðõT¦;iñi‹02\Oá‚¥@¾B‹;Ÿ‘»­eµqÛ±¯ƒ'wÿ”»õPËÙ^ȱ³øÛ õò%ÙML¯¾3ï/ HÚ_ØV¥/¨êÉúŒ¼¿(è�šÄ"0N£ž¤:€&± Ü~’æ,ªXy)êóK¤·ÕÊi>‰ÒpŸòò X‚y·Z³ïM¯¾ÖÇãkÅDä’¡l5ˆÜ-…xçÓ²rh–§ð·nÎÙÏ¢-,_Þ\:HHAQën˜ídT>Ô2w4‰EQ/fÝiѲÝDY´l[!FlmÉ& 00–)¤Éˆ”žcH‰ävCó…3�¥tÝ�ñ1–] _„8¸MJÍŽëeïK…Nìü‰¥ ±XfËqpg?óšýÜ7FµŠòÿýoPø±Á°Äñ±µ¹ÉÄòí†OÏÿE9Å(ó ÛãˆÚbJØI€±ì2ú8±SYŒG‘|Ù*×±$'4[Mb‰Æ/ß¶*yËVcéÅ­¬6ÑjXÈÎìD8[ ýìOº[ ©Èå?ýK mÈ+èZD+³ôVeÉå<¸}l¦DdÉaæïþDž#¼¬Ëb»ø¹Z5Âòjƒ[>¾°• ‚4‰%•<¯&ÛûJ,²üIAAÉU=Mbáë©LwÒâÓ$adè^JÄÂ(`ïl+äl4=v ;gÖÀ“ݳìù¶fëZ‹ó‘§B:S§¸²\ÔRÐñ$ÔèQð(F_PÕ“õyQÐ4‰E`œF=Iu€-EbåG¼c=’¤ˆHšW°¨b奨Ì/‘ÞV+§ø$LC”ƒÄB=/‰¥Y7±r¥†CÓ„ïcxf£˜˜\Ò#0l8qJ+¶PTb‹u– M‹ìûãòÞrá–ÍÚ¢çFò“N‰Wîþ?®„Vef;QÕfRÉ+eŸ„iDÑSði¨cœª^̺Ӣe;Š&²hÙ–B2ŒØÚ$0’M :``,;RH“)=ÇÉí†æ g�Jéºâc,»¾qp›”š×ÊÞ—$– /dµ±¾t“cyüü T”¼Ü³_ÎþgQüg¿ ‹ÈZÚµº»µKZ¹BçÀ`¼nŠ\æ¶ÇµÅ”°=’�cÙe0õqb§2"²"ù²U$®cINh¶šÄ Œ_¾l“æÝQí(¯o6±¹Ù†ñåhÑtǧ‰û^ƒÒþ½•U$R{âI¬?ø{Bíîj,Î?£ìU|[ ¹–.™¥n_ºŒ´¤|ãõ¨Üv+úß´;ÿõ‰-è[–,ЃMÔìƒNYxË&$‰ÚbLã-Üw4‰%[[MbQtUAO“Xøz*Ó´ø4‰Eé»×$vá/ßàa [íºwlj¯ eûÖÔ°pË¡/»‰´Ü¼ ûÓô»È.@_=ÏË«ã;@2bôU=YŸ‘÷@“XÆiÔ“TÐ$„ÛOÒ¼‚E+/E½`~‰ô¶Z9À'aÎÏ’¤áÉ‹8z­¦‰¥K›Ø3N¸PÃ7VÊ‘É%#_}Ñ4ƒ8âžc“r¨LOᵇµÍ6Wƒò >÷>Ðd±(ë ³?©ä•²OÂ4¢è)ø4Ô1NU/fÝiѲ]EY´\Uœ,¼É& 00–)¤Éˆ¦:¶†/ œ(¥ëˆ±ìbø"ÄÁmRjv\({_’XÈû@Ö¾#sVb)æ,üÃ7ÄŽ‰T¥ðÝoFé×~˜œD–ÒÜØàb|©{.§›Ì UA›Ó$–Ê–û8±SYŒG‘|Ù*×±$'4[Mb‰Æ/ß¶!3bÛ«¬Æâ|޶ÖFsÕ~DöÍV'²RÂÔ|w•™\zç_ûH,FïØýkx¶òZ2Kγ¥Pïg¥Hdqdúm?è’K;_¬QŸÀ2(0;î› ´V,¬­·ašá‚ò©#\¶>½H€D¶pßÑ$–lm5‰EÑU=Mbáë©LwÒâÓ$ad眢'öžÙ\ ‡,ÒnÕ`™mÜyìkÉ='>ãnAÔj1î»é§,B÷Ϭ“ïùè»WÒªO Åè ªz²>#ï/ :€&±ŒÓ¨'©Ä¢hC4‰EM/˜_"½­VN#ðI˜†ó‘Xz«­ÒéÿíÎÎ}éòå:ª9BÓ~æúÅ¥J< 6HN8‰Cl‰µÕP`u–^§<&qÓœý|z¥‰f½ VÝÔëÎ" µ(ë ³?©ä•²OÂ4¢è)ø4Ô1NU/fÝiѲEY´\5œ,¼É& 00–)¤Éˆ¦:¶†/ œ(¥ëˆ±ìbø"ÄÁmRjv\({_Ò$±ØGµµ+0Û üôköáÀÎ1D•üí·¢òû¿‰Ü¡ƒÈBÚ¬v›‹_Ÿuÿ:_»÷%r™gØGÔ;PÂöHŒe—ÁxÔljmœÊxˆÈb<ŠÛG*q]Ir C°Õ$–X`üò`›4ïzÇ`}½‰¶³%З› v‡èá¬Æ’ŸœP"²4^8ÍÇžð¬ÄÒº+²ô†o•–Á6B¾¿]¢‹¹º†4¥¸w7Æ_yÏ€Äâžû€ÐâþmÙò¬£e𨍵|eÔ ÄMbI%Ï«ÉV“X]UÐÓ$¾žÊt'->MbaGöI!3$l"È“GžtH)¦ia¼z ³ËÉÁ¹“vZ Û¦ VÍ¿ì»MêýÅIÇ" ÕZz<ŠÑTõd}FÞ_t�Mb§QOR`Ë’XD9ùŽIA$i"’æ,•Xy)êóK¤·ÕÊi> Óå ±õ¼Ï^Wë0[&î&|ôÊ„˜pBq‰")Ù@@ŸTÓ!´ó^·J¸ýpÓe +Wê°º«rSà8ë®WQê®_G`ÖïX¥¨ê ³?©ä•²OŽ «œ†:Æ©ê¥PwZ´lGÑD-W…' o€F²I€B ŒeG i2"…i†­á g�Jéºâc,»¾qp›”š×ÊÖ—Àƒ²ð…£oHH,Í4këøþ—îÂíGgWŒ}{Pþíw ÇíHUlkëB•³Óóîß\¾»ÅPä2ϰ=ލ-v „í‘Ë.ƒñ¨Û8•ñ(‘Åx·-ŽT⺒ä†`«I,±ÀøåÁ6JÞ*«±˜mÂFÍDkÙ=ÖꤓËcòM÷¹¸Êj,‹ú˜/q–EÐbôd–\{¡.ñÅù5ê f iÊÌ|·{zÔ™è}$tóÑÚË66«²ôÆâàü£ôf6fåná¾£I,ÙÚj‹¢« zšÄÂ×S™î¤Å§I,ž ‘6¢Ô7Ïl?[­î¶BǾfÏ£ò‚.ä,ÜrðA÷¸Ýnøòõe# ŸÈæ>n]Å]­E GÁ£}AUOÖgäýEAÐ$qõ$Õ4‰áö“4¯Ðp'/E½`~‰ô¶Z9À'aÝÿH¦ðg0Å æƒÚFÓ~öÚÆõóm¼ëâÚe’A„—¹D…ì’|õ‰{>Š[ÄÞr}Ï`ZX[ª÷vbί*í¤ó¡‡¼î¸é©äÑ'¡^ZýI%¯”}¦EOÁ§¡Žqªz)Ô-ÛU4‘E˶—àdá ÀH6 P耱ìH!MF¤0ÍÐÁ °5|aà @)]7@|ŒeÃ!n“R³ãúCÙúÂ*7bçO,òßH9­Æ&êkKxù‰¼ùö$–É w›¡Â~?Ò’v½.\Å‘gö_ïþÍJ1Ê<Ãö8¢¶Ø¶G`,» Æ£>NlãTÆ£@DãQܶ8R‰ëJ’S‚­&±Äã—o[nÖ" u;Þf½…¶ý�Ì|¤ÑYÅþWyÉ-(ì˜Q"±XõV?ÿE&Æ·6<˜á_õÅÄ[ké®ÊRX˜ÇØí·‚Ebé¯ÊÒ¶Ðz´æ’XjμJ1ƾ‰&±¤’çÕd«I,Š®*èi _Oeº“Ÿ&±t„Ð ¨×Ch+!¯§Œû6äl+T‡iµñ’ã_‡’؃ø]Ç?×Ù^¨¹ÙOÏâUç¦ßˆPW^âOG’bÔªž¬ÏH›¹âئI,|ã4êIªh Âí'i^ÁR‰•—¢^0¿Dz[­œFà“0 •¼ú÷[ƒx–^»ålåÞÂÎjŸ©Mb©•¬L’QDF:H™T£ä¯uçïFiî=ÔF£f¢¶ÞôÔÉ 1Y¡ú"õºCŠíDUo˜ýI%¯”}¦EOÁ§¡Žqªz)Ô-ÛY4‘E˶–àdá ÀH6 P耱ìH!MF¤0ÍÐÁ °5|aà @)]7@|ŒeÃ!n“R³ãúCÙùÒ{€(ð%‰Ål5±¹r GvUñã¯Þ‡Ô$ŸGñ—ÞŽÒ?ý%÷8‰87Ö7„:íb µÙ½î±aä»v¢4½ ÛãˆÚbJØI€±ì2ú8±SYŒGqÛâH%®+INa¶šÄ Œ_¾l“æÍ³«ÕÚ0Û]"K÷Aãø«îq1•m…ÖzV£)Ê‚‰ Æ r÷B§àg|ÎúÕU¤-S¯{U÷<{yH,½k‰ö£Mû¥ …ÍZ+a[Œi¼…ûŽ&±dk«I,Š®*èi _Oeº“Ÿ&±Àwÿ³D÷#¬2ö‘GÜì-w¾¯,cÿÂ%¨Ê±]OÛ¶-Xf°ÉHß—qo‹$䉌Ý_D÷›Òþ¿Tõd}FÞ_t�Mb§QOR U‹bR±„xǤ G’4Ió c1òRÔ æ—Ho«•Ó|¦áÕ¡xyy ”ëK ûžÔD{,‡Ç×Ë "ɀȑˆ\BCZI%Š ¢h«³4)‡]󓘫˜¨o´ÜmYuG¡:!f; ÕcZíDU$iDð) –鸣I,ŠziÕ-ÛX4‘E˶•àdá ÀH6ðS耱ìH!MF¤0ÍÐÁ °5|aà @)]7@|ŒeÃ!n“R³ãúCÙøÂ °°|‰Cb!ËÄÆÊEÌNð o:ŒB>ýé$ÿ}ß…òü·ö[ÃqÄ•æÆ¦ýÒê\¬N¡2î|]ß9‡-ÑGÔ;PÂöHŒe—ÁxÔljmœÊxˆÈb<ŠÛG*q]Ir C°Õ$–X`üò`'oѶB=¬Ñ4á<ïj>Ó­uæÓ\¥ŒÊ×)­ÆâÈÚW¸å›Uû}¾Gqÿ¹$k@.éLÈ®žµšîŠ,ŽŒÝv Œ±±~xI,½×w´j¢ñlÎû=§Œúþ÷Î%8±Æ'MbI%Ï«ÉvÛ’XºB2„]UÐÓ$¾žÊt'-¾«Ä¼ÿŒQx„‘Aú$ò¯{èn+dYxɱ¡6kw¤˜oẽ»é´Z †k¯o�SßRh@Âúd·´¿°óT©U=YŸ‘÷@“XÆiÔ“THŸÄ¢˜^ñf¡I,’4¢èmµrOÂ4Tó²ü™Y½ÚZ FGv4ñ¡+Ó +“D#ŠøâÀ°áÄ%#œdI†zV¨ŠûŽÚ-ûùõjsPwžŠ¦8u—V;QÕfRÉ+eŸ„iDÑSði¨cœª^u§EËvMdѲ-%<€³/R‚F²1ŸB ŒeG i2"…i†­á g�Jéºâc,»¾qp›”š×Jß…åK‹ƒo,_DÑ0ñö7Âdµ€¬$÷ò;QþýßDî@ô_È~ÙÚØê=6w�ùBùbI©ÌÝM4‰…¥²%ÆÆ>NlãTÆ£@DãQܱ1„SâfœÄá!ØjK,0~ùF°Mš·ÈÎy`謆b>Ùìσå›o@®T‚ª¬ã›ýD©7Ð`\èXzǽùÛÍÏêleàþµ(Df±ÖÖ‘¶ÅÆo¿Õ·*Ëà×»¾°_ì=Yw}ª7ÚÑ3Ñ$–Tò¼šl5‰EÑU=Mbáë©LwÒâÓ$¡ž¬|„–…ÛMh•”^ZÎ b­šý×ÄíG¾‰HbêwŸ¸ßžçL´›5n™ôsö9DàÝ'öçp°Ò ptHÜ)x£/¨êÉúŒ¼¿(è�šÄ"0N£ž¤:€&± ì7%Ì+X±òRÔ æ—Ho«•Ó|¦‘R^ý LÂæf%ÃÂCÍq¬¶s äÏ6;áJ*QlŸ@Ã'ÕtÊ`£2‹›f[hÕL4ëmfP°î×sžè-IÎÐ$5Ÿ†:Æ©êePwZ´lWÑD-ÛSˆ ¾ļÐcÙ‘BšŒHaš¡ƒA`køÂÀ€Rºn€øË.†/BÜ&¥fÇõ‡ÒóÅóòKÅ—àC¿A=ú¯´B$[6×.Ãl5ð¿¼á öÍU‘µ8$–òoÿ:r·ÞÉ®±¾úÊ%_>t‹û7_âŸËÐÚãˆÚbJØI€±ì2ú8±SYŒGqÇÆ>L‰›q‡‡`«I,±ÀøåÁV%ïHœ‰€n½aº›Ï4úókùÆë}:¢•Yš/¡½²: °xÿ§Á˯ދ-‰…º$²­Þ -Ý)¿ÙB2vË>òJÏW¯­çîËÆÞŠ,Êâýú-AÝDËñEÁV“X²µÝî$¾ .z”\UÐÓ$¾žÊt'->Ò$‘Ï…þAùY‰%”Iþ²`š&*¥eÚsQåÄîoÁ´L;¶'mVv¼Æð—ü~{Ï8z}’D‡ÝhUú‚ªž¬ÏÈû‹‚ I,ã4êIªh Â~S¼‚E+/E½`~‰ô¶Z9À'aŒ¼XÜCò==ŸÍÀh}µi?{51;ÝÆVÆ#’GˆMÃF™p"õMÍ&y:än1tÓ È¾&Ø\o ê$PCm'ªz)úPËtÜÙŠå4Ô1NU/ƒºÓ¢e;‹&²hÙæBŒ£°ŠļÐcÙ‘BšŒHaš¡ƒA`køÂÀ€Rºn€øË.†/BÌ¢æÃ×JÇ%\ÕærÈ�TH,e´jø¡»÷ঃSšLO¡ü_þ# oy£’z»å0îëR½Z©Œ‹û®Ù/#sù"SghíqDm±%l$ÀXvŒG}œØÆ©ŒGˆ,Æ£¸cc¦ÄÍ8‰ÃC°Õ$–X`üò`›4oŸ‰;—öÌ;¦ýôËÙV¨}Å„±jõW#);¬š,êÏžô<(ë¤Þ™[{ãyH,`}Kw%ËêX+µ¸X³‰,dì¦ëÁ^‘¥K¢qþ-Yh-¶áìÜç”Uçì<W ¬z •ÓI8¾dl«I,ÙÚj‹¢« zšÄÂ×S™î¤ÅGšÄ"ÒcN ð–öDRçMT@‡I{é’]z±mg[!;|ûÑo 'ØWˆ•Z8¶ë17 Ólyô9øô  ¢:èo£y¸#NˆÝhUú‚ªž¬ÏÈû‹‚ I,ã4êIª¼(I,¾<í;Xç$Ò#Iò A¬¼õ‚ù%ÒÛjå4Ÿ„i¤™W7àÜ6›JFŸ[›P"¡°·¢Hä‘8„“ äšÄ¤šþ.å&qË‚³5®…f­Í¬;R¬;µ•v¢ª7Ìþ¤’WÊ> Óˆ¢§àÓPÇ8U½ŒëN‹–í(šÈ¢e 1ŽÂ*²žB ŒeG i2"…i†­á g�Jéºâc,»¾q0‹š c\(™/½‡z²‡_XÙ¨—ž‰¥ÕØ@}}¯¸~÷ݲC—bÅñOPüÅ_°g/þôåxÞXYŠ|}×QTwìB¾àß*¢÷•=uÝ„3l#j‹(i{` Éb<êãÄ6Ne< Dd1ÅCø0%nÆI‚­&±Äã—oÛ¤y«Ø5[•FZ/Ôû$äó(îÛëñ&ÐêÏ=ï&Þ_šzú9·7Ïö¾Êó¯ÄÒ%°tÃý-†º_™»x+ƶ> RZ˜Gn|ä#ÚÏGç¸}ºé++¡hK*y^M¶[ŽÄ’é$KácRÌRAO“Xøz*Ó´øH“XDzÄH7HÜ`7¶³´­pÛjµv´‰ÛŽ>Œ8âäóÊk?k§Ñ¶_$n0tÞÒ1l˜«¬ïµ½ét¸dˆ½ôë°­J_PÕ“õyQÐ4‰E`œF=Iu€7‰… I,$I#ŠÞV+§ø$Lƒ“'¯Þ½¡G�Q¿ 6×:«±ÌL´ðÈz5á•IXä —\B|rIfá9‚{Žm2pbWɾ¶PÛlyê„øíÄwÏŸëX¥¨ê¥Øvj™Ž;[±œ†:Æ©êe\wZ´lWÑD-ÛTˆqV‘ ô:``,;RH“)L3t0l _8PJ× cÙÅðEˆƒYÔ¼`ãúCñ|éÑE‘}áíÇÝñ3PÎÖàåš7u³ÕÄæÊeÛ3†·½b/âŠaäìwyûW@Îþ+Ú–'…þ”þÝÿ c¬ÂÄ›ë°ÚjÛ|èÈËPªN¢Xa‘Ú£ç<"·ÇµÅ³=†Ë.ƒñ¨Û8•ñ(‘Åxwl áÔ¸'qx¶šÄ Œ_¾l“æíª’¼3·ÍΪúùV’ÂÎ9…|8 Ž4¯,z¾Ü¢>‰Å;•‡·²ú«®ôÈ+½Ÿ‹Y¢K+›Yœù¬|è�|«°g5–n¸v®“¯¬¸B¤T^a;Ä—Œm5‰%[Û«‹ÄÂȈ³TÐÓ$¾žÊt'-¾«Ä"‰$^º¢z`ÜïvgO†_"±8ùÒ2Û(ÖptÏ)Ä•kö>án/d™­~þÌŒQ¯±>B •CG äs±ú‚ªž¬ÏÈû‹â9) ²þIG¢'ï/²^!¹N�H£ž¤:�T/Û¶$‰¬±‡qL a¿¹z¤–—Ô'•¼õ‚ù%ÒÛjå4Ÿ„i¤™W7àN-ÝÕXòhã ãl E%ŠÈWg‰DRŸ\—p’%f9?ëçênÙ6z«² ³¨ê¥èS@-Óqg+–ÓPÇ8U½ŒëN‹–í,šÈ¢e[ �Ù@O¡Ʋ#…4‘Â4CƒÀÖð…3�¥tÝ�ñ1–] _„8˜EÍ †1®?Ý—à  ¾¸KsAŸ㳂mªsä<ÜX¾ˆù©Þþ¦C(䣑Or¹Š¥2*Õ1ûWE©\±e”í¿¸1‹¥H¤–ü½÷ ü[¿c÷._¼ål)´¾¡”ÆâøV÷ž€‘s¶*ÀûjjhíqDm±ÅhØZcc'¶q*ãQ "‹ñ(îØ‡)q3Nâðl5‰%¿|#Ø&Í;Š]»Ý›Y£;çæf¡º‹#–;yV1<¤bXü[õÈ+½tù.+).̃·½PÏçú….‘¥-ÜcVÎî;šÄ’­­&±(f© §I,|=•éNZ|šÄâ?9™„Â3ñÞ›z� Ĺg¡P]õþ¶Û ¿íèבÏÇïÄ“å ÞùwÎ3]2 gîgœïCß½=·Ѐ # Åè ªz²>#ï/ :€&±ŒÓ¨'©ð¢'±…XÇ$Àö›«'÷$óI%/E½`~‰ô¶Z9À'a)äe€Vßl¹[ M޵ðàê›À¸äâ’K†²’J›Øç>Ÿ&åpbWѾF°Ð¨µ¼¶ï:ÂWw1ëÎs ¢ÖNTõ†ÙŸTòJÙ'aQô|ꧪ7ĺӢe;Š&²hÙ¶B@6¸S耱ìH!MF¤0ÍÐÁ °5|aà @)]7@|ŒeÃ!fQó‚aŒëEó¥÷²ˆ¡Ï úò²…Îz�Ç#±8[l,]D¹`áío:‚±rQÄ!¨”+U .Qʼn/‹.¡Åù«*Ʊ#(ÿί#wýu] µ•Uå‹·÷¾“óP,ûWcµGÁ+¬èíqDm±El`$ÀXvŒG}œØÆ©ŒGˆ,Æ£¸cc–âgœÄá!ØjK,0~ùF°MšwT;ç—#Ö’Ù_$7=Õ1õSø µ76üï弄H)‹weÖª,ÎÜl5³#²fwpˆ,ü]êäÏ]‘E“XRÉój²½zI,ƒü”²TÐÓ$¾žÊt'->MbA à^ãz™dŽÞÄê©+ ¤×nÕí€mÜs[¡+„{¯ûŒ‰V«æÉ“˜eÕ? ò§PëˆEÜB[f:½³ÑTõd}FÞ_t�Mb§QOR`¨$Ŭ ±ŽI€!ì7WO8î Hæ“J^ŠzÁüémµrOÂ4$y îÿàÏ‹ˆiã,V¯·í¹ÌÄS2œoÒ Š„¶"’§9¹$1á$à[ÛÈ¡]™Fcrõñy´‹Õ˜ç¶Ù,NaG¡ Ët>Ø´Øõ NݱŽUÚ‰ª^Šm7 –鸳Ëi¨cœªÞëN‹–í*ÑÞHjÑò"�²ÁB ŒeG i2"…i†­á g�Jéºâc,»¾q0‹š c\(š/D‘} -CLìtCvÁ£åKöK³&þþ[c÷Ž2TÅ!§8+¯8«±xÅ4Mœ?-û\µZÅ®yÁÅ!¾äry4uµ|æfQþÍ_Cóÿy6ÿú}°Úm%»Z©‚/})vW'P(õã©ë{'@¡-ƒx/±"·ÇµÅ±="€‘�cÙe0õqb§2"²âŽ!<ˆÉ o’ħ!ØjK,0~ùF°Mšw»ÞCF«îY ·Så‚+²ˆˆ,V£ÕG}²vŸƒÝ9ÇkœñÁÎ:47œ¼ç»8bT+ƒ•aº× !RK­ç6kR ï“/[¸ïhK¶¶šÄ¢˜¥‚ž&±ðõT¦;iñi‹0’xi²9Oõ9k™ ¸b “FiYöý` ¥Â:Ží{IåÄîo¡m¶a´@‰÷†G ïæ›Øýz}ÀWHÞ¢ÖplƒƒPð(F_PÕ“õyQÐ4‰E`œF=Iu�MbAØo®žpÜÌ'•¼õ‚ù%ÒÛjå4Ÿ„i¤™W7à ·[–{ÿ9]là=«s½ô\çéj÷Ö´s,ˆ+ÎkƒÎÓ96˜8ÛFŒG¶±ýÌQÇasÇnÐì~P~ð£ód8__Cõʳ(67äçˆóæ]3ЏqÞ—.ê›mT'K]gì’èεÁú #µU½aö§ÇMbQÔbÝiѲEY´\=BòÁB ŒeG i2"…i†­á g�Jéºâc,»¾q0‹š c\HÝ;Ÿd~åEìtÃÑðůQ[[D«±‰»w?®Û7 Uq¶9ÛËÉ“/à£þ¾þõo¢åÙall ÷Üór¼å»ß„;çܸ|>ï’`TÉ,(‘ûg¿ ÃΟ¿_Éä}GîÄ„»KÄb ¯=ލ-v í1¬²%ÆÆ>NlãTÆ£@DãQܱ1„1YáB’ø4[Mb‰Æ/ß¶IòföÅñ±óEœýjªÙY}ÄpnÙss«ŽäÇÇ:iÊüèdÕyè†n^ö<j0òžX.»…5s¥Ò`õ+¼­{^…Üe¯þQ×ï²…ûŽ&±dk«I,ŠY*èi _Oeº“Ÿ&±# ³Šs`‘é®Ôœ;O&‰…±b‹ÅZéÓÖk·jh›MÜyì(ä9+†E™ñ5ìŸ9‰S‹/¬ÚSoÁG<é¹”s^“7ü:nqfÃàÖ“‘ËÛpνÇ6r¿BŒ¾ ª'ë3òþ¢ h‹À8z’ê�£!±(æGH‰ôH’ I,Š>i ¤yõÒ"WŸúqµ–»|H-ga©•w§’Î<3ø …8&Þ%„ãÜ»¸MŸ\i\<Mˆcç½ë0½�–˜•I¬ï½ãçž@±±Tã9﹩è¬e?ë6QØô$ø=y§¾vbHÚ‰ç`Ëô§ÇMbQÔfÝÑ¢e›‰&²h¹:„1)0T ŒeG i2"…i†­á g�Jéºâc,»¾q0‹š c\HÝ—ˆ$VÚ!_8i÷åfµ¬Fm UÜwËN¼úÆYD‘¢ýÌKbyï{>€~àÃ0Ûlnnâoþæ3øâ¿ŒŸþ™Ç]w¿ÌwÈ,Î6Cí–|ë˲Ðl·QúÍÿ¹_ÿmÔþèÏìÓá?¸¬Jøô±—a×Ü+m…TÚ£Áx•E]„%‰ûC1n[ì@ÚcXeKŒ}œØÆ©ŒGˆ,Æ£¸ccb²Â…$ñi¶šÄ Œ_¾l“æ­bÇë3Ô{ÑÔ&÷˜<+ °È,¬­ór‘¥Kˆ 9ÒûbÛ@hÑ•ÞÓÊž †êýç&›!‘…½­{!´ºã®÷¥œç|=Ïüùtu¶pßÑ$–lm¯z‹j–¤p}¤èºÅ§#Ñë0®ÉT¯•(ºŽèzKªã¥Å§I,žâÖƒC¸h·ë.‘%hL^{†1›Ä>¶Xþt¥ÙØtWè¼õè£HG¯¼þ3øóû­f ¥òÄ ?ùÄ잯d¯áúdÍ+铱b‹›¸‰|®€\±âO(P¹Ä›±2è3òþ¢ h‹À8z’ê�ÛŽÄ"ÊXÂ~sõ}É›A¢§’—¢^0¿Dz[­œFà“0¤y)ÕI«e¡Õ¶ð¸Yq·Äa‘1œ—\‚¸+©P7ÎHuõ ø:g«ùÝÇéyž¾Ø\¸“§²‹²Í<oWò3˜¯^Ás í¦…|ipO¥8ßr°¦í-ÛŸRw4‰EQo˜uLD‹–m(šÈ¢eû cR`¨ËŽÒdD Ó  [ÃÎ�”ÒuÄÇXv1|â`5/Ƹþº/H,¼G¨>_8eJŒ¯ÙXéµ›uÔV¯àúøÁ»ö Š8”|~0µ¼ë¯Þƒ}ð£R»Z­†ßý?p}¼ûž—»qÎ6C¦ý RôÅ»ƒ5›­þc»Â?~;Ư?Íùo¹Û.üÕ5wclþ�JÕ‰Nž‡~¾Ç†¡VÿãD»-v í1¬²%ÆÆ>NlãTÆ£@DãQܱ1„1YáB’ø4[Mb‰Æ/ß¶IóNjgt¿$s_ªuÉV£É$v8dJgî JaÇL·_3g17:„Ãüí¨ç!ê÷u2²!²8çdÖêB2‹ã„•ï8Ò'«Ä„¶pßÑ$–lm5‰EQHáúHÁwÙµ¢¦¸:Œk2Õk%Š®#ºÞ’êx@iñi‹0Ò ¶Û ûÀÄѱ¢\ZÁ¡½Ï`fÎì¼é± ¦f–;¯Æ‚÷Nû{?lÿ×jí|E °Â 9[ ®9pÚΧ$O0/ß:÷e×~Çv=Ó gÃö#oŸéHgdlµìû`ʹe¶´\Å™ó{±ÞÞ‰ÇW¿×V) ¯ø¬Tú‚ªž¬ÏÈû böνʸ•æØÆÑ‹5f¹‘$× �iÔ“TP¾tÓ$h‹¢OšÄÖ"b¡c^˜íUs¼ÐÂ×Vv„·‚yĤ/Š“­Î"$Ð ¥­†œÕ¼wGNFbé¥Q(¢>µ åå3á|ϱaäqxÚ•E‡üÚFµÔ¹V 3…Û>UÚ‰ªÞ0ûSŠãŽ&±(ê ³î‚‰hѲMEY´loaL •ÀcÙ‘BšŒHaš¡ƒA`køÂÀ€Rºn€øË.†/BÌ¢æÃ×ÊÄ)‰Eðâ[…Äâ¾3ÛØX¾ˆÝ3eüÜ"Ÿ“|NBa°—é·} þÐÇ”müÿèÿ?œ¸æx›!'½V«Éµi6‹þïòrozÆÆæß};¬õuvqbŸ=röí:ˆBy,Üy{”}($îs Ÿ¾t „í‘Ë.ƒñ¨Û8•ñ(‘Åxwl áALVx£$> ÁV“XbñË7‚mÒ¼Ó°s¦>ç 8ÓžÒrõyÄÜØä;R9¸¤Ø9{Ó£mtÃÎAˆÆâ˜|6D‡˜Ó¶çNËKÖñ¬ÄÒûµºw‘îÂ0IH,Ñ.3ü¶qEÁV“X²µÕ$E!…ë#ße׊>˜âê0®ÉT¯•(ºŽèzKªã¥Å§I,ÂÈ^0—Ë£^[Ç9ëþöÁÿ;S¨Vv¢¸c¹ÊPwu†"N¿iÉ *Ž¥1i#pÞqí™)2WçHòmŒú)9+½µ7@fÍËW°kí<&¦¯Å_=ó«h™MT*UŸ¾J_PÕ“õyAÌþ¹÷Q·ÒÛ8z±Æ,7’ä:`Xc›&±„ýæê ú’7/‚DO%/E½`~‰ô¶Z9À'aiæÕ xg Ëcبw>ÆkZ-¬µsûCáIW_‘ÙP7Ø6žíƒ‚q¾tD¤ûäª{#?£FbéI{l Kgãd5ӲϮÕYMUwþUQ1/ºþ”⸣I,Šzì»`"Z´lcÉnMj-ZF-ŒI¡8``,;RH“)L3t0l _8PJ× cÙÅðEˆƒYÔ¼`ãúCÑ|!RòEHbé~éÆÂB/Ù¨çe ü]= ›ËQµ_ܽýM‡P-E{Øèl­ó|•þîw½Où%^Oêõ>ðþ÷ÃùŸoÙjµÜnL_®=ñ½…½ÞerøÍ[¿ S ‡Pž˜ µGïÖØÁûàÒWÿŒ=ÒC2¢¶Ø"¶G0`,» Æ£>NlãTÆ£@DãQܱ1„±h]l8’ħ!ØjK,0~ùF°MšwZv¹\‡UÒ. æÑ¶ý2É™sz?™¥rè�Ä[ô Vté‡-‡4b Ž¿Þ\í##"‹“GãÂ¥¾¼í…ÌîÇà</dÛ 9å+ÕØÆ[MbÉÖV“X…®|—]+ú`Š«#¿ŸáFStÑõ–TÇJ‹O“X„‘Þ`.WÀØØ,έLá·¿ùïðÄÅ›°yú"j/œDóâshy ­Ë'am.Úò­c“Y&RçD‡à3µ7aÕ–€ öß+Xö9l¼p_9uþëWþ9.®–Q­î°çμÏ5®Ïü õyAÌþ¹÷Q·ÒÛ8z±Æ,7’ä:`XcÛv&±ôób”Eè˜XïXЗ¼çFè©ä¥¨Ì/‘ÞV+§ø$L#­¼h‘(¯VÓ¾´qžnw®–[>çgzþºÇÄY q¦B3Ûïp#A ·ì»ÊÞã(F$±¸å”/%?Çòrö¼ë<N>RŽÝNTõ†ÙŸTòJÙ'aQô|’õ§4óÚ’u'ÈK‹–í(šÈ¢e{ Ép 00–)¤Éˆ¦:¶†/ œ(¥ëˆ±ìbø"ÄÁ,j^0Œqý¡h¾¤EbaˆÅz±Fa/½ÛÔV.ÙÛø…7ÆÂŒÚWl^ñ~ewæÌY<÷ÜIÄ‘¯|ùk0Íî>ã†áîµ”v»íþ„²cÕ¿¥Wt¶*úÂþëpnî�föƒ‘ï­cdÛGÔ;PÄöˆ�FŒe—ÁxÔljmœÊxˆÈb<Š;6†ð &+¼QHŸ†`«I,±ÀøåÁ6iÞAQáHðˆ…\gÞiÏäúód³GîðP¼¿ Tîw—+ “@,O B‹EL¢Ì Ïn8ƒ­…zçR?Áç'ëgÎvæÏbqà‡¡º¼Êî;šÄ’­­&±( )\)ø.»VôÁWG~?æè:¢ë-©Ž”Ÿ&±°#Y÷¯=±'Õ©é=X\©á7¾øcøÐ·_Æò&êaµíF›«h]>…æÙ'Ð8÷¬µ‹ Æ&R2‘Å+e"‹Ó¾Ì¨¹Ú´¯/6í²¨¯ØoØêh­×°üäi4—7ðîGß‚ßýÒ÷a³Ö´ËÖ¾®€hõPvãN£ÏÈû böÎY¨Œ[iŽm½Xc–©ø|RÒñ€iÌ|=Æy%Û²“‚)¤Çhû±òRÔ æ—HŠO©•Ó|¦‘f^Ý€,/«Ý¹ß{º1Ø>.H‘ER#œÀKf¡@\|RCb©î?ŽÒŽè$–N´•ÎGtŽ«ÇžrÝ­»vËä׉瀅máþ¤’WÊ> Óˆ¢§à“´?¥˜×–¬;A^Z´lWÑ[ iÙ–Bª8E³Õ$¾¡Rºn€øË.†/BÌ¢æÃ×ÊÄ.‰…Â…|éäM”º„o|ïØýúÚ~°Ø®×ñ¯Ý‡{ÇGr¹ÁˬgŸ=‰¸R·ý8{öØßM×€éyišš­–Úë2ǧ_ÿÏøðßû?ð¾Ý7cáø­(V'»à€ÄbpöBíhy°(íqDm±%l$ÀXvŒG}œØÆ©ŒGˆ,Æ£¸ccbQË|’$ã!ØjK,0~ùF°Mšwv†ûнÓi 9£aœϞkÛýÍž‡V×Ð^^A~n–Ihqæ@ïÊ^¹JÕ£‡±ùô3Lÿœe¢ ƒÜœþì.MƒÕÁD+š¹úùô·hpϧÝFÍžÃù«±t»:·‘ÅbD?¶pßÑ$–lm5‰EQHáúHÁwÙµ¢¦¸:Œk2Õk%Š®#ºÞ’êx@iñi‹0RTÅÒŽž¸§_xúöp~m?uÇ»`žZDe~ʼnj§ÜZu´–ÎwÌŠE*“îDFe‚ùƒ²8i[m¤.dÚó¢ýú-ß7w^o7Ü-ƒ`ÕßÛÎ×.,cóü í"~ëŸÆãŽcÇÎ#صû&_¹¨ôU=YŸ‘÷Äì/œ{•q+ͱ£kÌr#I®�†5¶]-$„ƒ~O$itRÉKQ/˜_"=B*>i äyu²:!³s”£6¾]Ÿ ¥ëæåÙÒÇ º³‚BœÏÚÈkˆ ãÎU„‘hK£¼}Ÿ;±ÿ8*qI,N:›k.!%—àߎ1àìª=-7MûÚ%ß­sroÊ{ub(´Ã¹eúSŠãŽ&±(ê ³îyiѲEY´\uB¡Ʋ#…4‘Â4CƒÀÖð…3�¥tÝ�ñ1–] _„8˜EÍ †1®?Ý—àR†/2‹»½€ýÂɲÖ9ÖˆiA!_‚/ÇÚÍšý,q¯¸~¯¸niÈúÚ:’ˆß~ðjÉyYØh6T¿ùvåO?ô�>¼ûLï:ˆñÙ}ƒOðyí‘ñ‰>³þä—QµÅ£=bk}œØÆ©ŒGˆ,Æ£¸ccbQË|’$ã!ØjK,0~ùF°MšwjvÛ’KÎh¡x° úJ£?oÖž~Å3¾•XrÝUWœã|€\2qó Øxê;¡<\K/H]BK7Ò%³À`*yFÁ/ÓXÒ;‡ÍgO¬Õý¤k°¥P/®rh̵+E!²lá¾£I,ÙÚj‹¢Âõ‘‚ï²kELqu×dª×J]Gt½%Õñ€ÒâÓ$a¤J=¹~)ªc3xð,pamo¿û0sif½‰òì”ï~Ëhµ`¶a®-ºƒq®:…üØ4ŒÒŒBQ„² ±¸ Û?gË¢ˆs¯»Í‘e_G´ºäNZÍ66N]@k½óvyýÆý?K›sؽïì˜=r…ëcD=YŸ‘÷Äì/œ{•q+ͱ£kÌr#I®�†5¶m5‹¢;‰…‚Ç$ÀzÇ$I£{@i䥨Ì/‘!Ÿ4‰¡¼ˆ‘v° ¼FËcÐn[ݼ›¨Yìû+çûD£›¾*yDH8qæ\ àœ¸A„ºq†:¦û×!±L<Žêl|‹{¶tÁ-‡¤çXÎwjÂê•»' ïÁ‹®?¥8îh‹¢Þ0ëN%/-Z¶©h"‹–«J(tÀÀXv¤&#R˜fè`ؾ0p ”® >Ʋ‹á‹³¨yÁ0Æõ‡2ñEHb±¯ÚͶýÀ¯ÝtËÕ"ûå™aafÌ@ɾ*/û åBgwÞ1ì_1gØÇ†ýüÍ~U̹lõjѹÃXe טFZR.—DJ¥°½»µCSq%–®|å‘“øà—žÅÌžcX8þ‰e cx÷Ê$„’ E»-v „í‘Ë.ƒñ¨Û8•ñ(‘Åxwl áA,j™C’d<[Mb‰Æ/ß¶IóNÍ.`[,ä·çÓ‰Ccج®¢Tï€õ§žÁÄ·…¶r~Î\\•eòæpþÝï¤o8[y6àqã:]K7L½ž“Ο|ºD–Þy¬<øMÿŠ3ŒÕXê3æöVìr2l7ôvB©ÙmS[MbQR¸>Rð]v­èƒ)®ãšLõZ‰¢ëˆ®·¤:PZ|šÄ"ŒŒZ;NØ÷„“8}òkøŸùGø¹—ý)NÐs.™¥ºkŒB™–³‘ós¥hÏ53.©%W®‚dw‚Yl+Ô«é8$ÖqÉŸmÀYu¥]S"Ö4WÖ±yú’íº…GÎ]ßÿêÛТI:örT«sþä¹ù"²ž¬ÏÈû böνʸ•æØÆÑ‹5f¹‘$× �ÃÛ4‰%ì7ñôH’F÷€ÒÈKQ/˜_"=B*>i äyuªuÒênqS3ÅóuóNq>ñVR ÇÉWgéÇÙ>åmÝc< ‰Åóò)Ps3†¿a<ßÝ·mRo!q;é)! gl¡þ”⸣I,Šzì;•¼´hÙÆ¢‰,Z®¡ÐcÙ‘BšŒHaš¡ƒA`køÂÀ€Rºn€øË.†/BÌ¢æÃ׊ç q®PлÀ&®³òJ³¶vc;*&î8:Ž[M`n²à{yGȾaj·Û(âM ¡¦'ûöïC\qÎÃkOÝt›ÍfÿXEN_Ä;þìsر÷8v½F¾ÐKâýÅ}Þ° #yŸc(Æm‹(f{ 00–]ãQ'¶q*ãQ "‹ñ(îØƒXÔ2†$Éx¶šÄ Œ_¾l“æšÃÖ™N+妧J¸¸?‡OYî¯Í‡ýèßæY‚«²LÞz³ûõ¶órª7 H,=RKçA Ñ ;J®ŽÁ|\$ÅY¿MûÀ%²|õëœÕXœ[:7äql²„J¥�¥K߉G”ŒûŽ&±dk«I, ¢z}¤à»ìZÑS\Æ5™êµE×]oIu< ´ø4‰E·&§wãè5¯ÆóÏ>€ÿú¥ŸÅÞú>¼âЃX?u•ùI”&ÆÄåîÙ‚È~ë„üXg ¢\uƒWU±2$²¸$+”¯|Ë ^r„Ís—Ѹâ¬DJøè“¯Æ_?úf”«38røåö=ù˜_j×]iôyAÌþ¹÷Q·ÒÛ8z±Æ,7’ä:`Xc›&±„ý&žIÒèPy)êóK¤GHÅ'Mb<¯n J˜íÎܱ¨8¹ß8vm…Ž.áŇKâúöÂ[«³Ã^œ³Ëܡ㘘KFbi/žCûÒiäŒtÎÑ(–}uΪ [¸?¥8îh‹¢Þ0ëN%/-Z¶¹h"‹–«B(tÀÀXv¤&#R˜fè`ؾ0p ”® >Ʋ‹á‹³¨yÁ0Æõ‡†ë‹ópÕ~É´¹r yjà{nÛ{®™ABîJH,K(òØ?~ 3;f°¼´Œ¨rÓÍ7Ú/ÇÊðúäX¢ø¶²^ÿù"79oß4Ý„|¡›^€Äâ+ÀPaÑÚãˆÚbJØI€±ì2ú8±SYŒGqÇÆÄ¢–ù0$IÆC°Õ$–X`üò`›4ï$vî*\$’ÆäD í£eXOnº½êÏ=æeûåÛÂ<—ÈÒ[™Å‘ÂÄ8&nºkß|4äoo{!ï`F7Ð pÜtôò¶ôHoK!çW?wë="®øVh±=É]Sv‰>ղ­$!>Ñ6ã¾£I,ÙÚn+K†­JÒšÄÂ×S™î¤Å§I,ÂÈDõ@pWe9vÍkqêù¯áO¾ñC8¹x?zÛûP¿´«ÞDiv†Êê^fËÝ~ÈÝ‚Èù|lùê4rÕIûÍTÁ¾WÎh[!ϹÀÉ#_êlë뮺RnijÖÀÆ Ѫ·Ñ²òøý/¿ ½ S3{±gÿmö‹ºB(k®Oõd}FÞ_âŽ[œ{•q+ͱ£kÌr#I®�†5¶miKÄ>E(xL¬wL’4º”F^ŠzÁüéRñI“X Ï« ‘Ô'rx˜½Ë¦ú–zÔIÞý›Ýê+aÜgßvof}zî½®…#Ç1•ÄÒZ¼€ÆÙ“LKÜs¬ç«vÙµ÷á=%Ù +žƒ¾¶Ï¸£I,Šzì;•¼zZ´l7ÑD-Û^(tÀÀXv¤&#R˜fè`ؾ0p ”® >Ʋ‹á‹³¨yÁ0Æõ‡2ó…•¶cµZX_:Uàï¿a?f'¢í®*¹_x;/Áœ‡z†F>ŸÃ[ÞòF¼óÏÿ*RÎË®ïúî7õÃf»í®cšê_×5[müêÿ8Ö¬*ö} ¥j‘XâjòêŸe7¢¶Ø¶G`,» Æ£>NlãTÆ£@DãQܱ1„±˜ež©$Éc¶šÄ Œ_¾l“æšÄÖÙ^¨TÌaöš Ô¾ZÃØ"¹_Y¯}é«(}ß[úÄ•Þj&N¸÷·÷sdÇÝ/ÅêC »îJg¬0zÇÔe±PŸÀÒ#³pÝë> 5RZ‘Ż˥}Ê~ˆj…Vbñþ6ä±pp ÕJÞ¾f´φIƒéu ÷MbÉÖV“XÒMbáë©LwÒâÓ$adH§7g©ÔƒÈå‹8xä.œ?û-|þ¤K›;ð÷_þg µÚ›—Pݳ¹b”û[òmA”¯ŒJ“(8CE¤þµ‡“£ý‹ê«"°Zˆ+Ë+¨»â.ÜrÅ.‡_ÿÂOáÜÚnÌï¾;®ApkA•òí ©ž¬ÏÈû böνʸ•æØÆÑ‹5f¹‘$× �ÃÛ®VK(N¹úŽãž÷Ü=•¼õ‚ù%Ò#¤â“&±@žW7§NÌîóÊu+úÇ äÚwþz‰$ÄíœÆÞùYŒÛs§iOJË+«8{á’ýÖŒ±ÕÐ`u'ιÞ}ä8¦’Xê—Ï¡~Î!±´£zŽÎßàê,Îߺs­`Ïå”÷°cœ?œ{ñ-ÛŸRw4‰EQo˜u§’CO‹–í(é­I­EË 00–)¤Éˆ¦:¶†/ œ(¥ëˆ±ìbø"ÄÁ,j^0Œqý¡d¾Eö¥Gb™Þþƽ™‘XÉ'üÂÛ!ôä o¼×\sQ䵯{5n¸áº~¸^¯£ÕRPèïïüåçñÌÅŽ¿•‰ƒ®^½ ¡áßjÈ öƒÀÄ}Ž¡·-v ¤íQ€±ì2ú8±SYŒGqÇÆÄb–y¦’$!ØjK,0~ùF°Mšwjv[ßÂ\³«°k¾ŠÕk }bÇÚ§ï÷­ÄÒ#Ã=ÙqÏË`õˆ!öÏòlÙcùþv$Vw…büÜ<ºöi¬Èâóß~`yåŸíû"±XG”k×°{gÕ.›¢RùÆ’Œm5‰%[[MbIO4‰…¯§2ÝI‹O“X„‘‰ê¡c9ìÙw öºß¾t~õÓ¿ˆ ës.róÌe´V7boCg66am® ¹xÑÝŠÈÜXµjj•Ç=r +Ô¶Ón,U ¹aÏ›MIJçÙµçÎaóìew^ýÖ…ø7ŸøE\Ü܇_Ž ×">‰E®'ë3òþ‚˜ý…sï£2n¥9¶qôbYn$ÉuÀ°Æ6Mb ûMà ú’÷Ü=•¼õ‚ù%Ò#¤â“&±@žW7»Nºã3ö~¬ÎvïBKï¯÷ØW.•ðê—Þ„WßyNÚ‹½»æp`Ï<n¾îî{ÅØk‡ÒÁ ‹GnœeŸÃ¾£Ç±c>‰¥vé6ΜtïCyKÎÑg1âZ”GÁèܳ÷v°Ö !¿ÕúSŠãŽ&±(ê ³îTòbèiѲ]EY´lKñ^p€Ø8×–Äéò"…i†­á g�Jéºâc,»¾q0‹š c\(S_‚é»íØ~¹´±|弉Ÿ}ínLgGbç ò¸Òn·ú/ðœUYþ×òpB‘Ìrï½÷à'~òGûáV³‰F³(òž¿ù>ûðY̹3»%f<íqÀª78[ IÛc°|FÔ;PÂöHŒe—ÁxÔljmœÊxˆÈb<Š;6†ð –Q™'’$‰ÁV“XbñË7‚mÒ¼ãØq§4E[gûœÓe”¯« 1÷ÅSã…ÓØ|â©ÐÖB!¤G é;RÙ·ã'ŽyH!V€ÄbùÉ,]‰Åø‘‡c“]xI,Îߥ¯}Í‹—˜«°ôü«íÊaöø&íkgÅš¤å×–+*ù&°MÕn›ÚjKz¢I,|=•éNZ|šÄ"ŒLTéûqøøÝX¬ïÁüÌ/âás×»ñÅUw¥гխ1 w’eÏÁµu´V® ¹tíÕ˰è¿©ˆK^1 Ö:P_¶ß(®¹Û=[wEµè[9$•§^@{­f·)ùö«ñŽÏÿ4¬ü.:þ*ŒO.ĪU=YŸ‘÷Äì/œ{•q+ͱ£kÌr#I®�†5¶iK÷Ü8åJA=Hôm?¤§’—¢^0¿Dz„T|Ò$Èóê’ÖI‡`‘왬“žˆpR,ðº—Ý„…Ùi¦}ÁÆo½áØ«LñÛi<v³ I,ëÏaõÌI˜ ˜¤šAÏßJÎêÔ›s(ÃÐ1§îÈ?Ìþ”⸣I,Šzì;•¼zZ´lgÑD-Û[H)j€Q¤¤˜“&׎±[ÃÎ�”ÒuÄÇXv1|â`5/ƸþÐH|©­\¶¯°›øÉ{0o¿LËRœ–4¤å’O:gW«â_üËÿ ?òÖÄÔÔ$S×®üÂ?ø9ü½Ÿû™þÖF΋µõõµHWe_}ô$þä£`öÀµ˜Úu¨óµºŒÄâ‘^™Œ×\‰ûC1n[ì@ Û# 0–]ãQ'¶q*ãQ "‹ñ(îØƒXFe>2I☢­&±Äã—oÛ¤y§f×µBÚœœ(áÐi,Ý^î“L–Þ÷‘„Ehé;çßðÚ>9¥¿Ú‰e1Wfé[x?w~¹D¯Ÿ=_/¾ëýlKÏoûßÊÍEÚ7é–‰¨|½‰ ›qßÑ$–lm5‰%=Ñ$¾žÊt'->MbF&©殺¢âÛ‰c×¾(Íãw¾üãøà÷¹v½…Í3íÛßf´ÝrœUÊìiØjÖÑ^[BóÊY˜ËÐv¶#²«ªÙ¯ÉÌ:È!­Ô—ì›Ù ÷þ›w†©>@8óöæÙ+X?yfËNÖÊá¾ú#x×#oÆäÌ>:þJ”JãJuàΧôyAÌþ¹÷Q·ÒÛ8z±Æ,7’ä:`Xc›&±@èƒï˜ôm?¤G’4"èóK¤GHÅ'Mb<¯n jPàZ¤çSÃJ¾ê¦#¬UHœßmׯÔxUhë<½ñš#8r`Ÿ â%«°È%ÎJ,GŽŸÀÎ…d$–µ‹ç°rú¤»Â‹lu•ÕW|qßóF‡˜êåϾ(úSŠãŽ&±(ê ³îTò’èiѲ%·–Z´lE!¥¨F‘’bNš\; Çn _8PJ× cÙÅðEˆƒYÔ¼`ãúC#ñ¥±±â’BþÖ38±wYK!ŸÒ “}Ш7P®Tܰ³2ËwÏ›ñ¦7¿O>ù4N½pMûádµZÅÑ£‡qôØß‹.ç†nueÅý«*ϹŒÿ÷O>‹™=G0{à:ärµöèÝû”$$ïÓԵŔ°=’�cÙe0õqb§2"²âŽ!<ˆeTæ#“$Ž)ÚjK,0~ùF°Mšwjv[ït†û:~ X.å±waß9TÂæî&ÆÎ[Øøúè=û<ÆŽv‰ ÎÖ[¥“ž?<ÿ†×àÙßþû©™éfæäÕ{å–­ó ÓY­×—{¾’÷wt£ÈÂZIfõ‘ǰúÍoõçÝàJ,î–JÇ ˜:4†…¹ª}½coÉDˆöâÑ+÷MbÉÖV“XÒMbáë©LwÒâÓ$ad¢zàé¶yuÈ.Ž¿…b‡ß‹³/<„>þzœ[]ÀϼôÝ(‰ÚÙ+(ÍL 4=!ŸX\Xí=³Ýì_ss¹b yl¢?ù*Š;w÷&rQ^õ6N‡YkÂYÇe¥>ß¼ÿ'qry?æw_g¿è;Ñqžü¤OœT8c~ ÈúŒ¼¿ fáÜû¨Œ[iŽm½Xc–Ir�F=Iu 6fñõç5¤±-K!Þ1)è1Ú~H$iDÐ æ—HŠOšÄy^Ý@šuÒLñ›s'I‡´‘ë‹yß§N2¹ñšÃ®Ýs/œqÿæ<éæ<]±ç±kNœÀ|BËÊ…sX>}Ò›sȧ{9ÌÛëË7^\Ýá¬:Ž»…·îŒaö§ÇMbQÔfÝ©ä%ÑÓ¢e»Š&²hÙžBJQŒ"%Åœ4¹vŽÝ¾0p ”® >Ʋ‹á‹³¨yÁ0Æõ‡Fâ‹ÙjÚÏØ82kàžëf‘¹¤°­W,ËD£^C±Tî¯²â¬ørã×»?®ýBÍY‰Å±W•åÕ~åw?ŠÂÔ<æÜ†|!¸rÍàõ kK!¥ö¨I,jv ¾ôqb§2"²âŽ!<ˆeTæ#“$Ž)ÚjK,0~ùF°Mšwjv1m{ïÞ¦&J¸öØ<r[åOÔ7-\ùó¿Fù_þciÅèÎ¥^‹CÉOMbæŽÛ±ô•¯¹nt^áî‹0—ÀÒQô‹vÓˆAd ®"Ó;>ûGïô¬À‚Њ,¦ÕÚEÜudcœÕX¶pßÑ$–lm5‰%=Ñ$¾žÊt'->MbF*×C€˜ÂÔ‘¤ÕÓq>>ØèNTƦñõ3ίÏãïùcÌTWÑ\^‡Yk ²0 #/x±gÄyég\¹"¬MÕJ¤û`wÌ#‡˜ÊœÚ\ZÇæ™Kým’ž¾|¿õÅ¿ƒö ö¼“Ó»;ŠQêÀé!@Vòþ¢ h‹À8‘Ž”ÕˑĢèrl!Þ1)è1Ú~H$iDÐ æ—HŠOšÄy^Ý@”:!ŸJˆ±½žDœÕGœYbçôdÿù¬ªÜtÍa÷ï³™…A$é]\wÍ ,ìJFbYºp‹/œìXºqÞ|¼Ç}Üö)Gü¸¾M7ΛæÊ†…ÊtïC–DnO†Do Ž;šÄ¢¨7̺SÉK¢§EËv½µ–«BDƒº&±ð •ÒuÄÇXv1|â`5/ƸþÇ {_ZÍMûù˜‰—É~%GJ…ø[ð¤³2KÍ>—¦ÝD,©n³ÙpI,í¶ú¾ãõ¦‰û{Á¦1‰Ý'^ŠB9¸D&‡ÄÒo™WcIÜçŠqÛbJØI€±ì2ú8±SYŒGqÇÆÄ2*ó‘IÇm5‰%¿|#Ø&Í;-;wè'V<ÿ¥•x[ä¬@r`ï$¦U±rSÉ]¥dã`ã›ßòB¼Ûõ;_ÿêÀÖB½-…¬þª'îq‹¡Áj(Þ°euôr¥hÛ z}qæÙÞñÊC`ýÑÇ=Ä+DdY¾£ˆ½ìyvaÜ~øi„ËŠ<e­PÆc¡™X¢`«I,ÙÚjKz¢I,|=•éNZ|šÄ"ŒLTƒ7ò êjçü 8òrœ];ˆû©„§.vÍFw«¡z¿�Š}UQ£Xvç(wNvVi‰(Ž3¾mbýùóØ8uVw ¢Ï>û2ü?ŸùYÔiu,KxŶžT§ Êû‹‚ I,ã4êIªh‹$}ß1)è1Ú~H$iDÐ æ—HŠOšÄy^Ý@uR0Ò'²ôÒ.ã}ÏîYŽÜÇܺÇùãúkO`wBËâùs¸øüI´Aj[QŒm…ÇîÇ,¢èVëO)Ž;šÄ¢¨7̺SÉ+‚ž-ÛQ4‘E˶Ñ@®I,|C¥tÝ�ñ1–] _„8˜EÍ †1®?Ä1Hà‹ ’}¾PçÊÚ4[˜o]ššä él+Ä’¶ýp°^«õI-NØy‰æüuÈ+õzkº˜:‰Å)Ïßø³Oáäb»ßŽòØt@C@b1 _™ I,†Ÿ^?ì¶Ø¶G`,» Æ£>NlãTÆ£@DãQܱ1„±ŒÊ|d’Ä1E[Mb‰Æ/ß¶IóNÍ.‚-ó â'ÆŠ¸ñš9l\_D}>çÎA—þèh7\‹—02uÏË«T\¢ˆKFq#V˜ÀÒ‰ïýzÄÄQ‡ø’S\‘ÅIßë‡Ï¿VgÿàO]ÿû¾È,›òh©à†³¨– á²ÚÂ}G“X²µÕ$–ôD“Xøz*Ó´ø4‰E™¨Të _§;©LNíÆ±¯B xÇý?ƒû_¸Ãwê¬_BýòjøœÓˆD#W°M/ó¨Ù¢.º·o­×°úôi´V6ìyÚ°9üϯý þøÁ@ub/Ÿx5Ê剞y 5Ÿ‡< •>#ï/ :€&±ŒÓ¨'© I,ñæ¥I,j>i äyuYÕIê«SG•ZqåækãèÁ½~‹=_ÝxÝ ìÙŒÄrùÜ9œ;ym"6I ’ #ÎTˆ³ºq…ÎÝLïC-ÛŸRw4‰EQo˜u§’W=-Z¶«h"‹–m-¢\“Xø†Jéºâc,»¾q0‹š c\ˆc0D_rÎb&.-®!k ~]•8/ÊòŠCfi5î_³Ýypè¼Psˆ,Qä/>ú ¾ôÄ%ì:v;Ʀw…pn™H,B;Mb‘Û)øÒljmœÊxˆÈb<Š;6†ð –Q™L’8¦h«I,±ÀøåÁ6iÞ©Ù%´5(\ {&pìð –^^e¿kž:ƒ¥÷~D¸KЂb;^yW—ÄB}2‹ŸÀBžpPbõ‰%ƒYìdž¥’ÐwK �™&x|ùŸÆÆSßé§M–gÅ;ÏvÅÀÊe\wls3¥2R–ŒëU“X²µÕ$–ôD“Xøz*Ó´ø4‰E» #Q]1Wm±ŠåI9ñ*TÇ÷áüAüßø8/ʈrh­m væ²»jé ¡ˆc8[øÃó™U¯«5‚¾ÿ¶Wdö¯]XÂúsgaµÚ.‰e½1Žÿð™ŸÃýÏ݉¹ùØø.äóÅžzÈ'¦(וÂj-]PÞ_³¿pî}TÆ­4Ç6Ž^¬1Ë$¹N�H¤ãeõ I,bñæ¥I,j>i äyuYÔIo*ÈE˜‹¢ÊÅ•54šÑW!ëÉÍ×Á±.™ÅY‰åæëO`_BËÅsçp&@bQY}%éŠ,†ý¼½Ðû Ó0¶nJqÜÑ$E½aÖJ^|Ò¢e;‹&²hÙ¶"¿5‰…o¨”® >Ʋ‹á‹³¨yÁ0Æõ‡8Ãõ¥`?`sn îø$²'ëRÄí R÷ÁnK-û¡_”‡‡_øÆwðοy ;Þ€Éùý»>ߒ˃cßj, ‹÷Ajâ>ÇPŒÛ;PÂöHŒe—ÁxÔljmœÊxˆÈb<Š;6†ð –å0 I’¹¢­&±Äã—oÛ¤y§f°å½# ®ÖÕ˜ñù¼[®Û‰‰½e\¹§ìÎ_KïùjϽ \¥÷›{Ãkº$ËCf¡ÁÊ+½•Pz„–ÀÏK2á­ÈÒ#°}éùÓûÛZßÀù?þ‹Þ팜üìBXº»Œù=c¸îèŽ>éUVF¼²õéeÜw4‰%[[Mb®È®}0ÅÕa\“©^+QtÑõ–TÇJ«O“X„‘‰êA¢Ó¿¿R®«ŽCø8pøåØ9Ÿ{îeøµÏý,6[ew…‡(²qêÚëµx«±«ìI‚œmŒü –8«©µZXûÎYÔ/,vÏÁÀÉÅýø×ŸøEûïaì=øRÌï¾Ñ—O [¶ø®aŒTúL”:ª) ÊãVšcG/Ö˜åF’\'�¤QOR`{XÏ!Žx“Ö$5Ÿ4‰ò¼º$ubˆ|êòC ‰,¦Iøæ3g‘Dn¾öŽÚ‡Ûn8{’‘XΟ=‹ž}®Cbƒp!E']ÅÅsl´ê¨”{D–®C[­?¥8îh‹¢Þ0ëN%¯>iѲÝEY´lKßšÄÂ7TJ× cÙÅðEˆƒYÔ¼`ãúCƒ”|1 5_l½\±„Ru¿°ˆ?ðmd!¦i¡XÈs_6 Cœg û¡¡óRNUžzþ"Þñç÷cvßqûw9ç¦ ‰á2’X<_»-v „í‘Ë.ƒñ¨Û8•ñ(‘Åxwl áA,Ë9`’$sE[Mb‰Æ/ß¶IóNÍ.E[Ã7Ÿtþ:¼^zË.´”°rsf³…óïø]´67…Û 9Çn¾•C<[ø H-=b‹eY¾­}ü?ËŽ\y@Bí¥ÌÏK` ’kÎÿÅ{Ѽ²Ø'ÎxótÈ,+/)ÃØWÂö¹–Šy_8ed æµCÆõªI,ÙÚjËpEv­èƒ)®ãšLõZ‰¢ëˆ®·¤:PZ}šÄ"ŒLT=À0¢Õ•`å Ksص÷&ì?p¾³x ÿþSoÇ…õ9»¾:¯뗗Ѹ¼„\Am›=W %¹À#Po¶f‡˜¢*N]lœ½‚öf½ÿùÀÉ[ñŸ>û÷°iî¡ã÷brz/x–]vFĺ2Ä:]PÞ_t�Mb'Òñ€²zÐ$uÑ$5Ÿ4‰ò¼º,ë¤÷ìÒŠ¿`Š’<ô38uqIÄÙfè`B˹3gqòÙ“0»÷žª+©ÄY}¥cpܬÕìkˆÜÖíO)Ž;šÄ¢¨7̺SÉ+‚OAL‹–í(šÈ¢åªMbá*¥ëˆ±ìbø"ÄÁ,j^0Œqý!ŽÁ(|é¼ ªŒOcçþëðïý2~ç]÷ã…s‹HKÚöƒº?ùЗQ,–WœiÎv@”à‹¨ö——ÖðïþûÇQ™Ýƒ‡oAÎY¢Y•ÄX[“X<XãQ'¶q*ãQ "‹ñ(îØƒØæ€L%IžŠ¶šÄ Œ_¾l“æš] [ß\Ajc/Ì᎛vbí†6æÑ<}—ÿçŸsWcñ†w~×ë+@n¡.a%øè PVd¿ž›/œÆ¥÷~°O`éo+ÔM{ãxµãe¼ôæÌL–¥å«¼ ˆB½jK¶¶šÄ2\‘]+ú`Š«Ã¸&S½V¢è:¢ë-©Ž”VŸ&±#ÕC„º2Ä£Fç^ŒÂ­Ð{6½c?{–š{ñïÿæíøæ¹ë=)P˜G¡*_]Ô!°ä r=j4;o¸Äñ²2UuWŠq6ïzäMøý¯ü0Š•=8|âÕ(W¦ûç$örÍ—Á¬¶’Õƒ¼¿ fáÜû¨Œ[iŽm½Xc–Ir�F‘ê�šÄA4‰EÍ'Mb<¯n í:ñ?Ç´_Ðå;áV´×#‹s¯÷±¯>Ó—’‘Y’ȹsçñÌ3‹³I_‡\B]R B«³°â¸«³±em½aºáY&g õ§ÇMbQÔfÝ©äÁ§ ¦EËv•´h¹JD“Xø†Jéºâc,»¾q0‹š c\ˆc0 _ºâ¬Ê’+`já ê›øâc'ñ¹ožÂd5c{gqdß,®;²€ëìF©m(?}aÿù?‰‹Ë5üÂ[ï‹´‚rßO»-,.^r_Œ•J%ÌÎîDTiµZî‹9U©Õ›ø•ßû(šùiì;~' EÿÃH¼"‹DbñD»þ;PÂöHŒe—ÁxÔljmœÊxˆÈb<Š;6†ð 6‚9 SI’§¢­&±Äã—oÛ¤y§f'±u§HL×Î}G¡4ŽÞÕõ&¾m‡sÍMàS_@ù†k1õª»‘ÏwV0qæJç¸GÉÙ/Ò¦ï{Œÿñg°j57Î ôI½°ÈOGÓ²¼YöÌZ¹¥G|ñ÷~‘åÌïý1¬f«s.ݾnþö¯¾¯€µ;*¸ùÚYÚ7å+¿^±Vª‘ !>“E¡MhK¶¶šÄ2\‘]+ú`Š«Ã¸&S½V¢è:¢ë-©Ž”VŸ&±#ÕK‡5¹ŠêÊ«OÌVHÊ@µjßû5Nü2~ë‹ëæOà»®ý< ;v¸:Î e¥B­M{^5Y÷–vžÎ–BŠßjÔaT*J«–æ'*¨µÊøûÿžºt;掸+ÉÞ-ó¿|Ãdñõ™|EyQ+Mbá'Òñ€²zÐ$uÑ$5Ÿ4‰ò¼ºaÔI¡˜G³a!W·ïþÞ¶ï ?ú•'ð–—_ýó3¦œ9{O?ý¬;ƒ9s\ï {ê“ûÏè³pv\ÿØN4Gœ·¸ÜÂÄlhW!ö± îz— šÄ¢æÓ°úS$½aÖJ^| bZ´lgÑD-W…h ßP)]7@|ŒeÃ!fQó‚aŒëq FáK@ì+â|¡„ùƒ7 29‹µË§ÑØ\Å·ÎÔðè 'ñÞÏ=…¼ÑÆ‘½38~`'®;¼€kïÆŽ©±pÚvâÏž¾„Üÿ8¾üø94Z-ìØu /œ_Ä¡=³ˆ"ÎË®å¥E—ÄâH»}íËÞWäêyïøÓÏàìª}×ߎRe¢ì唽ƒ$_ºÌXC€1ìRªÿ”°=’�cÙe0õqb§2"²âŽ!<ˆ`ÈT’ä©h«I,±ÀøåÁ6iÞ©Ù%´õ’Uܰ€ôâÅn»~«kMœ}aǧ7qéþ åãGPÞ»ÛGbq,ýãR ;^÷J\úà'º‹9Ž1xÖ€ îI折oû!â’XœßÊ¿Šµ¿ ?¥“oc!‡åWŒáÐþIÜxbÎwνâ‘m)Ä|ñG/ [™hK¶¶šÄ2\‘]+ú`Š«Ã¸&S½V¢è:¢ë-©Ž”VŸ&±#ÕƒH'@NñêçWo"¡Vhòñ‹U>ö*œ=ýÞóè›pjyÿû­O ì9¶89s³înùçs¯XŽ´•®³B™}ƒkÛÉW.u’}ïw¾O^:‚…]×cn×µ½T}› 7Ÿvs–öyQÐ4‰E`œHÇÊêA“Xâ ±Žm?¤G’4"èóK¤GHÅ'Mb<¯n`Xu’Ëwè3y Sù&VÍø«g«È(È,§ÎžÇ“O>kÏoäΟ| uã:s]G b î"áæöåCw{!¡%‘yJqÜÑ$E½aÖJ^|¥¡EËvMdѲíE“Xø†Jéºâc,»¾q0‹š c\ˆc0 _úÈY9\ÁÀäÜLìØ Ól¢±±†fmÍþ»Œºý{~±…ç.ŸÇÇ¿úLû¡ÛΙ*vÿŽ¡Õ"lÖøÎ™%l4 ÅRå©ÌÏtî”ðèÓç"YÖÖVÐh6ú቉©Hö΋´F³éÃì?þàøÚSW°çÚ;16Ù]ýÅGbao)Ä"±B¢Š&±pí|éãÄ6Ne< Dd1ÅCxÁ©$ÉSÑV“XbñË7‚mÒ¼S³‹`Ë$¨P3àÝêΫË|gs9÷¾t?>óåpñ5vø“8÷Ÿ~ûþý?Gab‚¹"‹óÛñÝoÄÅ~Â}YæÖAî¶¼zÿ N*_tÉ ªD–Þq»^ǹÿñ§v¾V|ìg͹–_5†]»«¸ë¶=î¹ˈUžþ°è¥[ Q°Õ$–lm5‰%Û¨Ù¨ïW‡qM¦z­DÑuD×[R(­MbF&ª‡ÔëjÐ ùD#”Rξwݽïf÷xÕ8ƒBé逑üXF¡€v­îV¶‘+ÀÈGìIM{޵íœ-‰Dâxù†;žÆ#—Þ†êø|ÏÚ÷Ç}x‘AŸQ¯‰šÂ  <n¥9¶qôÜåô’ë€aõ—íJbQ<­DB¬cFÛé‘$zÁüéRñI“X Ï«fä»[ -T ìÌÕ3'²82L2Ës§ÎâɧOúVb¡îO8±ïŸÁ6„}›.áÅg#‰ëÛ;‹´Ym¬­Xî$ž/VPsëÄ3gÃìO)Ž;šÄ¢¨7̺SÉ+‚O¢4´hÙ®¢‰,Z¶µh ßP)]7@|ŒeÃ!fQó‚aŒëq Fá ľ8Û Ù/­wØâEŠŒMï쾘2Ѭ­¢¹¹ŽÆÆŠKlYoÖñô¹:ž:×@ç^ÞNb3öon/&vìEj«WðÀ£Ïã{^u#TessÃþmöÃcÕ1Œ+Û;/ÒêF$Ëg|Ê]}fþè-˜š;à<ÅT#± ¸&±t° Æ£>NlãTÆ£@DãQܱ1„±Ì™J’<m5‰%¿|#Ø&Í;5»!Úú¶ò˜:_å’YNáÊìøO]ÄÅÿö?±ðO~Áž³ >KïWس ã7^‡õGwÓ1ÿùÆ.ƒãª³"‹ˆÈÂÛ^èâ;ß‹æùKýóè­ÆÒÚ‘ÃÒkÇ0·PÁ«îÜ×ôÁˆ4{{Î#Îj, u£I,ÙÚjK ¶Q³QÞ)®ãšLõZ‰¢ëˆ®·¤:PZšÄ"ŒLTªuÕ‰‰xÈ*δ㾔âo/ª'³´ÕÜÄôŽýø¡{ÿškŸ+Q,äaÖjv ‚¸bÕëÈW«ÒIìøÁË(Ú÷ç–å¬6Ú;Ïð6ALéþûÐ1ÔWH¥¿(è�šÄ"0ÖØ¦I,ñ…XÇŒ¶Ò#Iô‚ù%Ò#¤â“&±@žW7Ztç0¡OÎβÝfÆ Î¢`C“aYNž>Çž<é[‰Å9m••T:[ VgQ³ Çym°¾â–³·=†DO¥?¥8îh‹¢^ZcaZyEðI”†-ÛY4‘E˶Mbá*¥ëˆ±ìbø"ÄÁ,j^0Œqý!ŽÁ| |®Tÿ¾ÏÂRKçŘ{ÑMûEÙ*ã;€ùýîWÖífÝ~ÈW·ÿÖÜý¹ýÒØ$ î²ÊeÑjØ7GM®<öÊ(L/@&Î*,kk«ýp©TÂäÔ4TÅñ¹ÙlEz ö­gÎâ7þâKرÿÌî9Þ!±ôÒsÿg§ÆÂ4‰¥‹e0õqb§2"²âŽ!<ˆ yÕUbI’¢­&±Äã—oÛ¤y§fÓ¶?¥ ã¯Êâ†1À½X©”Çkï>€¿¹ÿy,¾Î~ùõéGÿË÷aö­?à[‘¥G*qÈ,3ßuÖþ–›PoÌ2:ÿA<'Qçks"‹—ÄR?sWÞÿQ;οK{:¥û&03_Æk^¾ß~—÷œ¯ÿ܃å,»€›ñEÁV“X²µÕ$–l£f£:¼S\Æ5™êµE×]oIu< ´ 4‰E™¨R¯+f+ô]dõd™&L«‰Ÿê9+©¦æ:Û ÙoU AÍF£Cf$PÈNìzÏ.Þæ®žšÏ•‚ÉpÓª'«õ:¨) ÊãVšcGOÁ]N!¹N�VÑ$–øB¬cFÛé‘$zÁüéRñI“X Ï«Uä‹Ê•<6—íû±ø<ÌÈ’%™åÙÓçñÈÏÂ9sçi.“\Ò½¯ÇuVgé~‡1H§û…‰,Î{|öÂ&vÍWÝts¬­…†ÙŸRw4‰EQo˜u§’WŸ„i@‹–í-9hѲ E“Xø†Jéºâc,»¾q0‹š c\ˆc0 _ÂbœPáÇ>YÅùå‹%«¨NÏar~?&vîÁøÌŠå1Wϱ³ì‡y›«—q¤ýmüÃæûÐúæ‡!“¶ÙÆòÒbÿžó•ùÌ̬ò~ãîvB¦ûMUÎ_YůþÁ'QÝ‹‡n´o0º ö냳JK'¤I,.–ÁxÔljmœÊxˆÈb<Š;6†ð 6ä9@VW‰%IжšÄ Œ_¾l“æš]BÛ(„Jƒ·,J�+ó¸ï‡0»PÁÊë'qéKŸÄêý_q 'ÞŸi¿„sþŽÝy ;;„«K>q‰'] ççàT, Õj…Òæýœ</üÁŸÂ²ça''?ço{"‡¥ûÆ15WÂëî:€r© TFÒ©Ÿ"è l¹ù'°MÕn›ÚjK ¶Q³QÞ)®ãšLõZ‰¢ëˆ®·¤:PZšÄ"ŒLTqêÊPY)¤kÀÐí}•Þ“ ÒYñÄ)›³§P3!”|±Cf©”‘«TÜ9b‰iÏ»-ù§ño¹õ}î}n«±á‹ç•]ðÜÔëÁàêÉû böνʸ•æØÆÑ‹5f¹‘$× �©ö‘šJEqõç5„±-v=d(Þs#†pQB½`~‰ô©ø¤I,çÕ Œ²NŠ¥‚»ÕÍŽÍfr Szd–Ó—–‘–<sê<¾ñسh»÷¹p¦ç¯©çÇ»÷Ë‘lºq?qªm_GØÏÐ Fg5ïN¼ºó®þVJqÜÑ$E½aÖJ^|¦ŒÐ¢eŠ&²h¹ª„‘¤bGáX¡)¤™Š/ œ(¥ëˆ±ìbø"ÄÁ,j^0Œqý!ŽÁ(|E2P¶Ì1ºû„²’pÚ9ëz?xöuþkl,£d®áGžþo [·ñÄg@5þÍŠóâlyéŠç+t;ffÝ/ÊU$‰e£ÖÀ¯üîGaUf±pì%(ºŸ#øH,á-…(ï;Aä°ë¿%l$ÀXvŒG}œØÆ©ŒGˆ,Æ£¸ccbCždu5RQtN“XbñË7‚mÒ¼S³ËØ–EÐ4Œhe’r)ûî9€Ùù Vîǹ÷þ)êO=Ó'¯øÈ,öÜ8ó½oêXzDÏŠ*œŸƒ¥’y¥÷wå‹_ÅÆ×éäÓM£=,¿a“óe¼Îö¹R.pËÈðÍ·—YÆõªI,ÙÚjK ¶)çE zbÆ5™êµE×]oIu< ´ 4‰E™¨’Ôk’p ˆR“Ö“n£¹áΕ¯¿å“]ç¸Øæ ö‹Á±Šû7Ž}ë¾ùÈáÝ'ÝELÓÙ^hp_jpËà ^W!=Ñ=®ì^FYÐ$q&ý…¥¦RQ\=Æy al‹]Š÷܈‡!\F”P/˜_"=B*>i äyuIë$8Õ±ô Oþç˜@¡˜svåZ˜Ì51lI“Ìòí“gñ5‰Å¡ŸŠÈ%¼83×'´€O\[ò­:«-TÆJ(”+‘½?¥8îh‹¢Þ0ëN%¯> ÓFhѲMEY´\5B‚HR±£p¬ÐŽÒLÅÎ�”ÒuÄÇXv1|â`5/ƸþÇ`¾hÉ®=¼m`ð`,܃Íz˜ó•˜e™xÍÙ¿F¹½Ó¾’7ö…üC�3?»=,-/Ú/ÃÌ~º3;fQP|è¼@«7ˆrUÕn[øOÿó¸´YÄ®c/A¹::¯ønþ ïµ »º‹W…ˆ_ÿ(a{$ƲË`<êãÄ6Ne< Dd1ÅCxò ÞÃF ŠÎiK,0~ùF°Mšwjv)ÚŠ>—m“cp^&9±îÊ,wÄÎù*V^]Å©?ú]˜W]RgÐ2ñš{›œè¯â#´p–»" ¸üµ6k¸ôGÑ'Á8i´Ç ¬¼ac;‹xÝÝ0V)úÎÕ0äçÊ,«`9EYE¡^5‰%[[MbIÁ6eÍûj:Œk2Õk%Š®#ºÞ’êx@ih‹02Q=¤^WÌVèW¡À\ùU6[¢ÈuŸ_lã|)”†ó¡G¾ZA¾\޾R˜-–}¿L‚U.™88ÿLG×]9†#äŸ7Ó¨õ:¨) ²þIG¢'ï/²^!¹N�V¹ªH,ŠçG¼çF< á2¢„zÁüéRñI“X Ï«Ø uâlsc„½“y\nV1 IƒÌòä çñàã'$ŠN8‘Û0VgÃ~û g—°0n?ÏÎÈ:D–~Ýyž-ûŸ¶wÓêO)Ž;šÄ¢¨7̺SÉ+‚OÂ4‚Z´lcÑD-W… ’Tì(+´#…4Sñ…3�¥tÝ�ñ1–] _„8˜EÍ †1®?Ä1…/Pò…õâˆ_gùÛ#û©u!gE”v³Žjk ·œû’ý‚‹ì‚öƒ6û`ã™`^øvÈ|umÍæàK€ÉÉiûA]2q^¨5 ×6ê³Â?|ÿ—ðè kØuìT'f§â{êÈ êxn<ZšÄ¢I,)ø¢I,ñEÑ9Mb‰Æ/ß¶IóNÍ.[%2 ±uƒ«”xáb1‡×Þu�óóU,ß•Ãs¿÷P­îb¡¥O>±_¬M¾ñ5}‚‰—ÐÂÿ‘“poøÊ»>€æÅËî5@ŸÄò¦)Tw–qß=1^U'±„Ê@“X¶­&±¤`›²ˆæ}5Æ5™êµE×]oIu< ´ 4‰E™¨Òª+Ïüé¿S M"ÒzêÝËYÎJ'¶ù¾¹Óoó œ-…ÛåJEä«c.±%Џst»%ðøžîöBÆz'NBŠ¥¾¥'Àª«äË¡äý1û çÞGå²TEG¢'ï/²^!¹N�ȼ¿ôÔT*Š«Ç8¯!ŒmñëÙ £íSð˜XD½`~‰ô©ø¤I,çÕ d^'=‚„ȧî0_*06YÄôú&væk…$!³|ûùóøÒ£þ•XXäá„»b ‰-ûgU2̃O5°w¡ê,Þf_2äµ§Ð#z•þ”⸣I,ŠzŠå”JÝ©äÁ'aŸ´hÙŽ¢‰,Z¶½ ’Tì(+´#…4Sñ…3�¥tÝ�ñ1–] _„8˜EÍ †1®?Ä1…/ \ñ²L¼ûÈëMÑ‘1 Ÿ½3[ ÷áÚµ—¿g«ï–•GË!›4ì—]Í&6¿ù.´6VÜ—lŽll¬£¶9Øç{l|ccc‰iÛÖëu—ÀÒK'Š|ä ߇¾ô vº³ûú¹çØ;ÿ(í±{Ç1ìúï@ Û# 0–]ãQ'¶q*ãQ "‹ñ(îØƒØç�Y]TÓ$–X`üò`›4ïÔìFe°ã‘Y V,äðš»`aa K·´pòuæíÞË-‡h2þ†W;O,[YòJEá–BÎÏ™ƒ[ç/båßì¯òbŽX{ÓÊ;K¸ï01ŸÄ"*§H¢`«I,ÙÚjK ¶)‹hÞWÓa\“©^+QtÑõ–TÇJ«@“X„‘‰ê!õºb¶B¿J„zj:Û Ù÷±o¸éã\]ÃÈÛ÷ŽòUC|…1û%V±ˆ(BÍ6,ÓäâÇö<í®ã’nBÆÂ ÕƒzHÔY‰¤#Ñ“÷Y¯¿\'� «¿hKÊÂhû<&Q/˜_"=B*>i äyu[­N åªc%ì©­#7”Ö8d–ÇŸ?/<òl—\’æê+¼8òÛ œN¡¾Šr½…±©2Š¥¼[ºþ'ìœã´úSŠãŽ&±(ê ³îTòŠà“0 OZ´lWÑD-ÛZHI*vŽÚ‘Bš©øÂÀ€Rºn€øË.†/BÌ¢æÃ×âŒÂÄòŇsÚ#oïí ÖnÕíH·<÷´Lmû×Úl ]«¡Uß„¹| ­‡ÿõÍu¬­®bmmµo[*•191ʦ÷e¹³úJÍ!°4Âe—½’Ë(òÈwÉ*>ö<~ÿ½_Åìþk1³÷¨ŸÄÂyƒæ+ó»\4‰%…öHlãTÆ£@DãQܱ1„±!Ïj=mD¢èœ&±Äã—oÛ¤y§f—±-— Aìù5• ¬ÌÒ³u¤CfÙ=»ÇpåÐN¾ó÷}DçoarÂÝb¨C6±ú„Ñ칓E^éÍ¿½<.ÿá_À¬wæe³¬¾q ¥%¼þžý˜´úÏÕsŽ $ƒ¹J_Ÿ) õªI,ÙÚjK ¶)‹hÞWÓa\“©^+QtÑõ–TÇJ«@“X„‘‰ê!õºBw%Ͱfo~!Æý[p{¡^=9ñf»é’D®=ü0Ź¿Ë— ,vúæúª.!Êò¡ÔlpY¥ÜÆîéÓn:[ùŒ<ÙŠîC¹õ^ÙE© Mbá«¿hKúB‚p°Œ(¡^°¯%Ò#¤â“&±@žW70ª:ñI`³B1‡\80NX©Q2¢ ˜–D!³<vò<>ÿ°‡Ä1 % bK8ο:K0‡ž^Çnûž¸2^B¾\P¯;Ζ€‘úSŠãŽ&±(ê)–S*u§’WŸ„i|Ò¢e;‹&²hÙ¶B‚HR±£p¬ÐŽÒLÅÎ�”ÒuÄÇXv1|â`5/ƸþÇ`¾p"%„ŠŽ0^ñßuºÎ³Þ—asµsÈ;Ä«�Ó*¢eæÑZß@{míõM´.><ÿYlÖ+±ä컨r¥Šz£ºýB¬V«»¤•šŽC`iµZÕWŸÂ8þ ”Ë‹%”Êeœ¾°Œÿð‡ŸÆÄÂ!̺ÁγÀ9GïNÏÒ˪$ ¿þ;PÂöHŒe—ÁxÔljmœÊxˆÈb<Š;6†ð 6ä9 ®/CÅü5‰%¿|#Ø&Í;5»!Ù†¦òb|2Kñm3Ð-rxõËöcïžq\œ:‰3}gŸhÒûMï`¹[,PŸÐ"úÁó¹7oxã+ßÀúƒßtÓ´ÊÖß<ƒòB¯ÅLM”}çªI,W§­&±¤`›²ˆæ}5Æ5™êµE×]oIu< ´ 4‰E™¨R¯+f+ô«D¬'ËêÜÇîÝq“œm…òeöÇ ±Ú&ÖŸùÖŸþ6Î,¡±ÖT2jOÁ¦}ÿ˚윘ï»ý=®ãíÖ†çDB!‹Ðó_Vêu QSdý%’ŽDOÞ_d¼þBr�0¬þr5“XO=±Pð˜XD½`_K¤GHÅ'Mb<¯n «: ì­NzÛ U ˜ž«b×úfr ŒRTÈ,‰ÅY‰…й²‰DRƒÂ‰³⼫³xó)´j8sf{vÃ(Èç§ìspÿÛ”(u'ÒSi»ªzŠ> Óˆ¢§àS–ý)¶Þ0ëN%¯> ÓPôI‹–í(šÈ¢e[ "IŎ±B;RH3_8PJ× cÙÅðEˆƒYÔ¼`ãúCƒQø±/‚n=[ƒÂ‹’ÁØO» w4üxȲ÷ìShØÏêÚfMûçüm¬7Ð\Y³Ëh7L¬M^;øª;—ÃøørîݹK:w2‰~‰äx”/äQ.—Q,åÜhÊ“ó˜Ù{ÜÖ)Ã÷ £Œb—¹By³‰[ÿ(a{$ƲË`<êãÄ6Ne< Dd1ÅCxò×—¡ˆbþšÄ Œ_¾l“æšÝmƒ«©ø±p‰æXÛ Q ­®8Ê^õÒ}Ø¿w gÚãôÞç# ”æ1ùÊ»ì—užUW¿ælEÔó+øs¥ÕÆÅ?|gg%–’õ·Ì °PÆëîÞ¯I,ÚÖMbIÁ6eÍûj:Œk2Õk%Š®#ºÞ’êx@ih‹02Q=¤^WÌVèW‰QO­æ¦{úÚ›>É6ÈíùGíÑfk}«<ŠÆÅËý¸Æ•u¬ŸYµó0 ´:‹iÁröéeȵû‡ÕnÁ´Yôõ:¨) ²þIG¢'ï/²^!¹N�VÑ$–ì…‚Ç$À"êûZ"=B*>i äyu#©“À‡Œ¢:)V ˜˜*ã@c—Ì* !ኈÌâ%±xÅK"‘¯¤’`«!n¹«Ãô/O>»‚]yÂÄ\¥rçÃÉéÈ{,iO½…ç¤ý)ÅqG“XõË)•ºSÉ+‚OÂ4}Ò¢e»Š&²h¹:„1pTÂ3²ÌŽÒLÅÎ�”ÒuÄÇXv1|â`5/ƸþÇ`¾@ÍQÃs`x¨ı3B¯%<Ëš-·löŸzM«ˆ¦é¬ÆRpíVµ¥U4×jhÝô·A¥É®5aÜh —K>Uäóywå•R±Ä|!x`Ï,f\ç®þâ;GÆù‚KOû—y4Ë/»4‰%–/}œØÆ©ŒGˆ,Æ£¸ccbCžâú2QÌ_“XbñË7‚mÒ¼S³•­ÀÎðmЋóÛm†¼¸Cf¹÷¥û;d–¥pááOùVQÙùÖïsTYäþ,Ư‡åʥР,Þßåw}� —` l¼yy‡Är×>ÌLUüþ¦HbQ[MbÉÖV“XR°MYDó¾šãšLõZ‰¢ëˆ®·¤:PZšÄ"ŒLT©×³úU”úœwÅÍΟv»Ë4qÓ¡o3ÔsöÜT”¦jÏ¢hœ?‹µo} f£òÒj¶±öÂ46,µ6ç|b…5«åvL\ìPMOþ\Çä:]P½$j ƒ€¬¿DÒ‘èÉû‹,‚×_H®�†Õ_4‰%{¡à1 °ˆzÁ¾–HŠOšÄy^ÝÀV©Ããx¦élÃ^,ç±0SÄÂÚ*fòuŒZXd‰¥'N¬K.ƒpIü[¤«¸ØB(Ø×Ï>¿Žã*EÊáÀ¹u€«¨ê¥ÕŸTõ|jRÕS,§TêN%¯> ÓPôI‹–í,šÈ¢eû c2਄gd™)¤™Š/ œ(¥ëˆ±ìbø"ÄÁ,j^0Œqý!ŽÁ(|A4_7.aEbUÚOÕ`m±Ó}\l·`8«¯Xe´Ì¢ý·„VËþÛ.Ú ÈÝów€¹Ã}˳<ô'0N~Ö¾k©!Žäìw¥RÙþ•„„˜é‰ Æ+¥NÓô¶ÏÀù¤Zæ,»”ê¿%l$ÀXvŒG}œØÆ©ŒGˆ,Æ£¸ccbCžâú2QÌ_“XbñË7‚mÒ¼S³•-ÉWq‰"¡8øòBœ‡’¯zÙÚ?“/|Ÿº¿O>)ïÝÉW¾Ü~Øf¹_žó~ž+—™Û 9¿Ö¹‹¸üž€òÀæ[v °§‚×ß³³3Ué“X”VcQ¨MbÉÖV“XR°MYDó¾šãšLõZ‰¢ëˆ®·¤:PZšÄ"ŒLT©×³úïoó¤w9ÿ`½m…æ§Îar*¸ Šm—/IWQ1[ ¬=ñm¬?÷|‡`âæcàƒßzÞÿè]îJ,VwÔ†ý‚®~eÒDßuP :§ò½·ýµ{"ÍÆÆà¼À¸OPêu QSdý%’ŽDOÞ_d¼þBr�0¬þ¢I,Ù I€EÔ öµDz„T|Ò$Èóê^uÒ*ÊcÌ,ŒáÀò®´ÇP2LŒZ¼d‰Å+A’Iú«¯t¶â‘e{z {ì{ãÙ]S(U‹Ëïî~†«?¯Dª;ïqŠãŽ&±(ê ³îTòŠà“0˜>iѲݤ�-Z¶³0&ŽJxF–Ù‘Bš©øÂÀ€Rºn€øË.†/BÌ¢æÃ×âŒÂÄòÅezKQÖ ßùÞtÐa ;2¾¶ˆ†}œ7Kö…zÔî$ê<·›zý¡tók9>ö ˜Ï|͉ XŸAþ…az°ûvåI¨ˆ» Kwû™Ÿ,âÔ²i?°4‘ËçØñ×÷Ðûà£Þ¢ä¼aË¢þ;PÂöHŒe—ÁxÔljmœÊxˆÈb<Š;6†ð 6ä9 ®/CÅü5‰%¿|#Ø&Í;5»QÙzìº;é1Åè*ø^\QØÆÍËÜ9~Åû샳xîÉ÷Åæ¼ÄMgöG¾ ‹<ÀüÊÛ+fÑ~تyÒÔþ™ÿñ'hç[h¼qù=e¼æå{±cºâ?ø}õ…5‰eÛÚjK ¶Yˆê ¸¸]Ïr£)ºŽèzKªã¥U I,ÂÈDõz]1[¡_%A=µZm…ÞxËÇàlK!;½ÖÊ"ÖžzÔÝf×ù4d£YÅïù‡ðð™cnÜ—oÂÏßý—˜.¯ÛéZëu´kMT¦Q(ü>eÏÕ†Ù²Ÿªúïwo<ø(¬û[öK5Á¨KŒX8zêu QSdý%’ŽDOÞ_d¼þBr�0¬þ¢I,Õ`Ç zÁ¾–HŠOšÄy^ÝÀ0ëÄ{ïçÃz�£N¼FÎÿÎG“%ìž*`nc µ© š!£á‹CfùÈW‡ýØjWkq4ÝSïžf®çÎâ q½ø>®çüJõuœ>WÃ]öíðÔ|Årg£&Ö®ÂnÝ|wëN¨—⸣I,Šzi…iåÁ'a1}Ò¢e;Š&²hپ˜ 8*áYfG i¦â g�Jéºâc,»¾q0‹š c\ˆc0 _Ë—>îܼXáK“^LðåX¿þoÑzd÷âݾÑpð©ÕËhç ° û ¾m‚ ä~Ù=qÛ˜zã÷m›O<€ÆÇÿ¥© ”67aVª(T–‘»|FîCÈï<cï­0æóÌ7X9#‰ÄâÈüTÎ%²sGäY‚«Ô¤\æYÔJØI€±ì2ú8±SYŒGqÇÆĆ<Äõe(¢˜¿&±Äã—oÛ¤y§f7*[†‹Ìbøð.™…ø6R2ËKöbj¼„Ó/|Kö¯'•t¸ã–à|–ñ5,ékLßp/P¾÷Æ 9¼üÖ]˜ž,÷¡8$–¾püÑ$–‡­&±¤`;]0¯ÉT¯•(ºŽèzKªã¥U I,ÂÈDõz]1[¡_%F=yçO³Ý„i¶qá'}6†‘·o8ù3ûßÚéS¨9ÛõÃpI*_8ŠÿþÕÁZc»ö^ç®”öôù þÅGþWüÔïÃ]‡v= ÓÂæ¹%wL :Uï­FÛõ%—Ï÷ã&ǯ.b³µÛ%á„È6Œz`m½;(_¨è�šÄ"0VÑ$Ãô$XFÁ±‚^°¯%Ò#¤â“&±@žW7°U뤷°gHÏ,gU–"æöNàЗñ‰Ã˜É7°l–1j1MB\qÊÈY)ÅI!2IÅ.—lq9;§¯>±†C9;÷L <QFèÛÇÞÇ‘Ä §>œìÕoåv¢ª—VRÕSði¨ýIU/b¿Ë<¯> Óˆé“-ÛU4‘EËöÆdÀQ ÏÈ2;RH3_8PJ× cÙÅðEˆƒYÔ¼`ãúCƒQø‚X¾øðÞUqg¦mÿឤþ{é8+œ8ЦÏÂÌ—ì°«Uµ*GöcÏOü\ÿJ¼yö$ßù_Q°jh¯×`N£P­ P)£PÈ»ÛÏF«÷o^‡ËwbÏü *¥<òöÂãwâ{_÷RD•c¹ÎýšÕFeÙ(”yÿ…\°Ì³¨ÿ”°=’�cÙe0õqb§2"²âŽ!<ˆ yˆëËPD1Mb‰Æ/ß¶IóNÍnT¶;ñ„…‰¥ˆ@f¡ÎñÍ×ît_¢»¸UW;„1{Ä™«ï¸q>‹ûrxä¢P7šÄ’­­&±ŒØ6i–‚‹ Ñõ,7š¢ëˆ®·¤:PZŒšÄ"ŒLT©×³úUÖ“óqƒC¸€©©æ�pȤö=-oî°êu¬=õ$Ú›0å\"Ë{}=>òí{Q*MâÀ¡ÛPŸsñêØ,Îy¿÷å·âÑó×à§î|? ¹6r†…ÖÒ:¬:ÆöLñók6«T=“"á»o}/ÞõàÏ£ÕÜ@©<É\ÙLVêu QSdý%’ŽDOÞ_d¼þBr�0¬þ¢I,*†éI°Œ‚c½`_K¤GHÅ'Mb<¯nàÅZ'α³*Ëô\»&óØ·´ˆ³;vôÉ//fqüï­Î’ó”?ØÂŠƒBÜú¥Ðzûì[â™Ý(V:¯Aƒ··C%B¨ê)ú$L#Šž‚OCíOªzì;•¼"ø$L#¦OZ´lgÑD-ÛVH£p¬ÐŽÒdDF÷…3�¥tÝ�ñ1–] _„8˜EÍ †1®?Ä1…/ˆå‹÷*vïNx¶†³—w ,EÙO¶³æ#Æ×® í,Álµa˜m'çqâü/È•;+§´WVpæ÷þ rζ%l=«µŠBa;à/"_¶¹‚ýPÏÙžÈÂr«„÷›7 µÚÄ™õM4j똪øù·½qd~ºhÿß�™f`¯tÃsŠžUZ8_®yþ0%‹úï@ Û# 0–]ãQ'¶q*ãQ "‹ñ(îØƒØç€T}I[3Ñ$–X`üò`›4ïÔìFe«`gðžRl32K÷¿Þ²Ó7]3çþÜdeO"$¸Áa–hËÕk«I,#¶Mš¥àâBt=˦è:¢ë-©Ž”£&±#ÕCêuÅl…~•ê©ÙÜtËï¾›?îŸ,òeÎ &„Æ•‹ØxæùÎý¯›¼Kë;ðÛüN-ïÅôÌ>ìÚ{3r¹b߬RÝÃÇ^…‹Ç/äñÔ¥Cø…»ÿGçN¹¸ÙlcíùETæ§P ?B5,[§Ñ@¾ZíŸøí‡Â_~¥¶Ñp‰,]güç~Á¨×DMaÕC$‰ž¼¿È"xý…ä:`XýE“Xx:ŠG8u:VÐ öµDz„T|Ò$ÈóêFY'ž]„üþžÛzWeqï-»+t÷ÔÊÕ"Náà#Wpyb¹’MÚ¯óœósfkçŒû„ϳpQœw%ÖŠ-åV ?·›s&æöNvWWëêõÜ{ù€O^ÌIàè!B;QÕK«?©ê)ø4Ôþ¤ª—ÖX˜V^|¦‘‚OZ´lGÑD-ÛRH£p¬ÐŽÒdDF÷…3�¥tÝ�ñ1–] _„8˜EÍ †1®?Ä1…/ˆå‹gµGÖÞ]؉e} ŽÀKµÎC>9ÓDÛ‰/ÚíÚ ƪ¸é—þJ³3$[m<óÛ¿Ö¥u” ew˾[°ò9Xí6Ìzy£Ž|ÎBÞÎs-7†ÿ4ùèÌÆü®C¨­.¡\[Á½rª•"âÈ®é¡fðàÉË<ð3‹úï@ Û# 0–]ãQ'¶q*ãQ "‹ñ(îØƒØç€d¾Èj:DHZ“XbÊyj 2÷×K:áÙF"³_§—–›sîç;Í%°0ˆ8šÄrõØjˈm“f)¸¸]Ïr£)ºŽèzKªã¥Å¨I,ÂÈDõz]1[¡_%N=1&Ŷ}Ïêl+tóÑ'‘ÎGÁ­zl±ì{Ùg¿ƒæâRׇÎVB<þäëßoßO`÷¾03{ÌÙÇÈcמ›1>> gƯ~úïã{oø ¾ÿ†O»n:rÔ/­¢=^BuvF.†é¬xÚB®ÐyÄ:9±ja ÚÙÙ^yÿ¹ F½$j ƒ€¬¿DÒ‘èÉû‹,‚×_H®�†Õ_4‰…§£X0 …DÇ$× öµDz„T|Ò$Èóê^Ìuâ{º™™³Ÿ»nâÈ•Kxb÷^LåšXµ¢m徕Åê–O’ÕW¼Ç%˜øæ“+X°ZîÊßs¦ìˇ®•w[ Oyo›yuZÍPk'ªziõ'U=Ÿ†ÚŸTõÒêwiåÁ'a)ø¤EËvMdÑrU …Ñ ¯I,êþ0–×âŒÂÄòŇ‹Úcð¡^ð":@f¡ }G༌ÊÛ›Ž¶CQÏpí÷¿S‡÷vllÝÇ~ïϱúä9TKcvL –}ÁïY¨mÂÊçQÈÙ9 §K;ñ{S߇Za'»Í}ðçxR(•ñ¦—@\Ù½cÌöå²»µÐ Ìë±°ÊÕ >æ+f ~ýw „í‘Ë.ƒñ¨Û8•ñ(‘Åxwl áAlÈs@2_d5=Ñ$–X ržšÄ‚Ìýõ–q`Ç¿°® ™¥?O‘OÇ£pz^!Ë+O‘dEbQ[MbÉÖV“XFl›4KÁÅ…èz–MÑuD×[R(-FMbF&ª‡ÔëŠÙ ý*)Ô“ Ûóž3¯N_ÁÌtî¬aäìù©J¬¹ºŠgž†Õhv£ 4Ì"þèÁ¿…¯¾pªc3Ø¿ÿ%(•'øþt&¦v¡R¹çÏ<Œ÷ë><yé~þ®¿ÄtyÝ™ÈÑÞhb½ÖÂø®i¥œo.#'ÿ\ÞýtÜ™Fß|Ëðþ‡íf­Ÿw'/ƒ[0êu QS”êAUG¢'ï/²^!¹N�VÑ$žŽlI.$Ë’xvÄÇ"ë‘8 UŸ4‰ò¼º­R'î-•ŨÖª,=¿ƒûÛÚ‡ÅR{ŽÍ`å«çpÅžó.NM¡b˜¨SÛEœ36)@Rñ¬j#\±Åkcÿ^8µ‚\½‰#hcáÈN”'º¤/‰ü#õ'•v¢ª—VRÕSði¨ýIU/­±0­¼"ø$L#Ÿ´hÙ΢‰,Z®¡ÐÁ ô5‰B@ÝƲãúCƒQø‚X¾øp•öèY“’•nÌBA«Û!²4`ì‹w³m?ƒ+¡49ÞW}ú½ŸÆ™/?†Ra9«m«ÔQ²™ÈÃʵQ´ò ‡Èb?¼ûäüKð…êK`”§pົaä‹°Ú-7½Ó9LÇÿ*`vªŠ¢}Ö²:¾³Þ°‘÷ü‘îÿ”°=’�cÙe0õqb§2"²âŽ!<ˆ yH括¦‡#šÄ TÎS“X¹¿'Nd.$³7ðjj¼Ø\!’’V‚iuìüyrõBñb‹Ô…2Ö$–lm5‰eĶI³\\ˆ®g¹Ñ]Gt½%Õñ€ÒbÔ$ad¢zH½®˜­Ð¯¡ž˜+‹ztœm…œ£ûnüxws>Æ(¾¤¶P?{›§Nõýsà“‹û𻼠—kó˜?‚ùÝ×ûVD ùÓ?êÌ…âö¾ KWNâ©óü‹ü2~ú¥ïÃË<âê8Û>¬Ÿ[Fif•éŠ/«Q‡Q©¸séǾ†÷~ý'Ñ6ê.‘EVêu QSdý%’ŽDOÞ_d¼þBr�0¬þ¢I,<Ù(’¾Pð˜˜'@HIÄi¨ú¤I,çÕ ¼Xëħ¸¯tŽÆ'ËØ{to_ÄF¹‚JÉ]-Ì"õûăWg‘­¾ââÝ{i縶´Š+Wj¸•š˜Ù9†™½“ýUTú·ÉÞ@@ÜRïëÁÇÐ*íDU/­þ¤ª§àÓPû“ª^Zý.­¼"ø$L#eŸ´hÙŽ¢‰,Z® ¡ÐÁ è5‰B@ÝƲãúCƒQø‚X¾øðHí‘ÿ°¯‡‡®zúd…ví¢}£ã¼³±‡>øyÔÖ×Q»p'?ù�J• ÷«€†Ù†iæ@ùŠhÚÕQ,<7¶€í¾«ùiT&g1ð&…Îq–ÙrÛÜþÙdK[:îÎMp~Õ¹3í›2ÿ¹ÌY+¸¤Tÿ(a{$ƲË`<êãÄ6Ne< Dd1ÅCxòÌYMG4‰%¨œ§&± sEe,$œÒ£P›Ìâf%zR!ÊÇ÷Y¸?/¡®/^“X^ì¶šÄ2bÛ¤Y ..D׳ÜhŠ®#ºÞ’êx@i1j‹02Q=¤^WÌVèWI¡ž¼°iß»Zö}é­G¾Õ‰l)d6Øxúi´V׺ùçÜSÞÿØëðÁÇ_‹\qûÝf¿ø[Pè/¬‚003wåꌻÕÐoémxøðµø©;ßç®Tš3,4—7ÐÞl`l×Tç q÷Ë{û^Û¹7.”0=¹Šr~mÚÑm‚•Xæ×xý…sï£RŠu•¬¿È"xý…ä:`XýE“Xx:²Q$}¡à1 0O€’‰ÓPõI“X Ï«xQÕIàƒEï=c`:²ºvîÃvšÆò•:®;ß<x�TÌÁhwžùn'qÎ?´:‹ço0®¼±çÏnà¨ÕÄt)‡}×Ï!_ÈuÊ×{¯í¹©í•}ï¸wÀª;ŸžJ;QÕK«?©ê)ø4Ôþ¤ª—ÖX˜V^|¦‘²OZ´lWÑD-Û^(t0ˆzMbP÷G€±ì¸þÇ`¾ –/><J{ìÕ?ç  "¨{žo6aæJö!g?)ÛX[Ä×ßõiä-åÊ„»=PÛjÛòöƒÃš–­›/㹩]xhÿX*퀑Ëcná&f÷öÓídGîq•¢ììå²0YÄùÕ&È4í;ÏÒѬ·gýìø7mYÔJØI€±ì2ú8§¥2"²âŽ!<ˆ yHæK„Æ¡hK,P9OMbAæþ&-ãЪ,Ô‹÷cÞ×èý‡l–ZÆ¡é‘üyHõûñšÄòb·Õ$–Û&ÍRpq!ºžåFStÑõ–TÇJ‹Q“X„‘‰ê!õºb¶B¿J õäÂÝɲ·­ÐDu3;jöüc?¶Ìú µ–®`í;Ïtî]1°RŸÀï=ð6<uå(Æ'waϾ[Q(V{p×Oòûã= úftfбñY:v/.¼Ã³‹ûñ wÿΜsÕ¬fë§–P™Ÿ@q¼è~0b5ì{jûÞ:oßWßwó‡ñ±oý¸»ÂL©4Î8iÈ'XR¨'@“XÆÃê/šÄÂÓ‘"é I€y„”ôHœ†ªOšÄŸ¼ëÄÃWê…°Þ}% Ò0ò9»i'ê_>‹£/âé½{Q,Xhµ±-Å·:‹]9OãrÍž=½Žû¹ö^˜8pý*ã%iÝ…H,Œ;*ïT­ÜNTõÛ“0(z > µ?©êEìw™çÁ'aiú<y-Z¶™h"‹–m-ìÁœÂQA;RH“)L3tÀÁ€Rºn€øË.†/BÌ¢æÃ×âŒÂÄòŇGiêß})x@ç„\†}1o˰ìÎC¹‰XÎþÝÎWc…LÓ¾ó1óh;¸Kxjþ0žÞuÍBÙ%°ŒW'0µpØ~†X ûãÞ`Ù›M$•ùîÖåd™¾ó0ùyËœ÷è/‹úï@ Û# 0–]ãQ'¶q*ãQ "‹ñ(îØƒØç€d¾DhÜŠ&±Ä•óÔ$dî¯jËVe1<evÜ­Üí„|ÁPZø«I,W—­&±ŒØ6©..Hª'¾þRÕ]oIu< ´5‰E™¨R¯+f+ô«¤PO>ؽ§ìn+tÃG‘Ë9+…–:¤›jÏ=‹ú¥Kݼí™Î |ãô ø£5s {oÀìÜ€9VëôÂÛx$—+`×Þ[0>¾€ógƯ|âíøÞ?‹ï¿áÓ®®³µCýÒZeTwŽ»«³XÍr•*^~ìKøÈÃo…Ùª.‘ÅŸâïèI¡ž�Mb«¿h OG6Ф/<&æ RÒ#qª>i äyu/Ö:!Á%ϧRµˆ£·îBã«ç`^¼€göîA1×F;ùãØ-)Îy÷Vg¡î/ükϱÏYÃt»ãí:ŽÎ`j×`K?_1‡®‚uÎßw¬ÒNTõÒêOªz > µ?©ê¥ÕïÒÊ+‚OÂ4Òô)xòZ´lCÑD-ÛV؃9…£‚v¤&#R˜f考3�¥tÝ�ñ1–] _„8˜EÍ †1®?Ä1…/ˆå‹ÒYõï¹'†~菱sbM˜ÎÖB°`æòö6ç+±" ûnÇ4My ‹ãÓ8¹pKã3îÊ,ŽÝXuãÓ ÈÊý<ƒÛ$8_œ91—–6TvN:ÓRV—È’¸Ï1ãÖJØI€±ì2ú8±SYŒGqÇÆĆ<$ó%BãÎP4‰%¨œ§&± s£–±”Ì"Xm…Eféd×LØvR¡pš*ihË‹ßV“X²·Ué‚éæÍ˜åU¯•(ºŽèzKªã¥U I,ÂÈDõz]1[¡_%…zòÁýÊ4[¸õØ£@¾ìÎSíõul|ç;h×j®ªEö]­•û}3>ùô+P®Nãà¡ÛQ©Î¨åÅ)QùNLíÆ¡Ê$ΟyïÿÖëñÔ¥Ãøûwý¦*ëî8ln6°q¦‰ê ¥<ÌFsÓËö}wÝö·Ø;Á~zêu QS”ë!J]Ét8z±Æ,7’ä:`XýE“Xx:²Q$[ –%}ìk‰ôHœ†ªOšÄy^ÝÀ‹¡NB«²ê®»“Ï0˜ÆÔl‡®›…õØeÔK%œÙ½ùœ ªÛ¿m¶ÍPOœÕYúÄ“îJ,NYšuœº¸Žñv×µj˜™Ãîãs}e‰¥'¾: Üøz͔ۉª^ZýIUOÁ§¡ö'U½ý.“¼"ø$L#MŸyiѲEY´lK¡ÐÁ Ø5‰B@ÝƲãúCƒQø‚X¾øð(íQTÿÁ­ B ù©&—TöþRÙýrŒ¦}ÕŸ‡‘/`yn.MÌ¡66 3Ÿwoz öÿå±IT&gÝÕXúçéÉÓ{yŸ+8Ë=çðÌÙeûæ‚ì‡uñoœvM—ìÿ7;KJ{ý÷ž§¡P¾u˜ÈN8$l$ÀXvŒG}œØÆ©ŒGˆ,Æ£¸ccbCž’ùÂoܲ6¦hK,P9OMbAæþÆ-c.™…z8c®ØuVU³Kh8¾²ã5‰åÅn«I,ÙÛÿu�c–W½V¢è:¢ë-©Ž”V&±#ÕCêuÅl…~•êÉ™³¬€SÎ<èÌã•ÌÍ;6Ð8'OæTûÏùµø½~ gÖö`fî öÜ䮜Až<ŠQÅÒ8ö¹KWžÃ“çóøWû%üìËßÛö|Û½Ïv>ß<·‚Òô8ÊÓ…6^{Ý'ñ™§þ6ZÍšk?(_¨è�šÄ"0VÑ$žŽdQ,·¸,Kû8Ø×é‘8 UŸ4‰ò¼ºkøôŒðÊÚ>Ÿ¼7žG½»OÛóŠ=O~ç"Ú¥<.ÌϹ[å6[ösÙíIfqNÝ»:K®QÃù˨´MÜPÛĤý<ùЭ»Ø$O.†@pH,ýc•v¢ª—VRÕSði¨ýIU/­~—V^|¦‘¦OŒ¼´hÙ®¢‰,Z¶¯P8 Ø5‰B@ÝƲãúCƒQø‚X¾øð(íQ¥þ½WäŒ  à×à†áYªhŽÍ`½4Z¥ 3_r/Ö]=ËB¡XBylÚþ[î¾½"ÿyrÞ¾9i E\iæðígÏã†c{W¦ÆŠî_˳µPðä¼_ÚeQÿ(a{$ƲË`<êãÄ6Ne< Dd1ÅCxòÌ~ã–µ4E“XbÊyj 2÷7i‡¦E âÈ,vÄf­ ÓŠHfé¦ã̇“ã%e3MbyñÛjKö¶Ãy @.n.ºžåFStÑõ–TÇJ«@“X„‘‰ê!õºb¶B¿J õäƒ=zm… ¼þ–OÀ°3Z{òI´––ºj97óO=sÞõÈ›mµ ì9p#¦f0åäÅ)•ò ì˜;ê®þráìÃøõÏÿ$^qø!üÔKßg?`5‘3,4W6ÐÞl ºk÷û´Kdi·ê(Çý÷²¬É–ê Ð$ñ°ú‹&±ðt$£ˆb¹Å•T‰ªz$N#X¿\=ß)\„[Á'aiæÕ ¼ØêĽõ²8zž•Wœÿz$‹¾®çžÒQµºàþ³öÜb?;}þ väé½ó° y”×jhY9lWqʬհfŸç„ÙÆ 똚,àØ{\2Ï@Ïcd îœB$–`úÞ€ÿ;Ñ­ÓŸTõ|jRÕK©ß¥–WŸ„i¤é#/-Z¶³h"‹–í)ˆvMbP÷G€±ì¸þÇ`¾ –/><J{ŒRÿˆ æ¼ÔÊå;Ãüâü´çöº+8¤÷&Èþ[,•Q(ÙzÅЗ�½ÍA}õÑ_édpN>ùbÕñi|â'Y öMG'M0Ï“oÖ²¨ÿ”°=’�cÙe0õqNF{”û‚ô|Ñ$–ÌE“XbÊyj 2÷7­2î“R+õÿ„¶ÚñWañúdz- ¶šÄ’­­&±do«WbQ›î¤U I,ÂÈDõz]1[¡_%j=q>„àÕ•³¥ »ÆžÃâCÀ~C×U3°Ù,ã¾úV<rî:ŒOìÄžý·¡à¬pÂI+Í.•òeéUÇfqàÈ+qùÜcxàù<ž[<€_¸û80}Î@¬Vk§–ЪNÛÆmÛ"¡$j ƒ€¬¿DÒ‘èÉû‹,‚×_H®�†Õ_4‰…§#EË--!Îq°¯%Ò#qÁúåê Ê™8þˆô¸X> ÓH3¯nàE['2RD0!Žž7™C7ÌÃr–)9uE{Î<yd?s“¨®®£ÑØ~+³6VWh7š˜iµpÝú:ÆÇó8zç>äŠy¶‘aˆëÎsÃ,'·LRÕSði¨ýIU/­~—V^|¦‘¦O’¼´hÙŽ¢‰,Z¶¹çŽɬّÂ4Cœ(¥ëˆ±ìbø"ÄCþ0–×âŒÂÄòŇ3K¥þ]1¤iö–l&g+!ËB®PBÞþ9—ζAþï=î;O#ìAàF P¬ TÄç~ÿË61^Uÿ*Ü+¦é_‰ÅûÅx¤ú78ËN8$l$ÀXvŒG}œØÆ©µG`R_ž/šÄ’¹hK,P9OMbAæþ¦^Æ[éª,ö—7áLùóïEÎÚ€L&ªmãg"‡óÓ?êïžëçÁô).ùÅ…rÒ$–lm5‰%{[MbQ›î¤U I,ÂÈDõz]1[¡_%…zòÁ^E”Ètï‹·Ý8§?>~á8þÇWߊµæ4v_ƒ¹ù6øÚœ½¸IŸÚߟÖ`á\C¡^!_Âîý·cbj7Îy¿ò7oÇßòq¼ñÄ] gu–ñÚI”Œ4h§»u’Ñõ;´ )Ô I,ãaõMbáéHFÕzHIˆsìk‰ôHœF°~¹z‚r&Ž?"=.–OÂ4ÒÌ«x±Ö‰\/ü|׉é¯ÕxVÛ_™Å–#7/ _ʃž¹‚‚iá™ã±¹s ÅõhµÑÙúnHÑjbi£ j·±P¯ãèú†»ÐÑ;ö"Wä¬@cÜq‹º¸'Š+[¦?©ê)ø4Ôþ¤ª—V¿K+¯> ÓHÓ'I^Z´lWÙ¾ëŒiѸ�djÌš©tqCœ(¥ëˆ±ìbø"ÄCþ0–×âŒÂÄòŇ3K¥þ2;ça±4†òøŒK6qVOqI,Îx[åèÌ‹}Á~.‡BuFu'>þÅÇWž?¿ÚÉ)°Çy¤úr#"¶G`,» Æ£>Îi@£hÃCxòÌþà&k™J’Ì_l¶TÎS“X¹¿YXdÛð…ÞLÛÛMÈ@ qÅ "šÄ²=m5‰%{ÛQ=ê'n@MÑuD×[R(­MbF&ª‡ÔëŠs­éUI¡ž|0CÏ²Ú û­ÜÎòÓ˜¿Ø¡¸PxüõxÇçÿ.j´€ƒGîÁÎ…kÃ$Q^œ‚P)_U½ñ©=8tì^”«{ð}~ísk©Ô!³\;óE×À4›Ü´Âù„G#Mbá«¿h OG2ЍÖC Bðç,#YÄië—«'(gâø#Òãbø$L#ͼºkx・»ú|â­Ò?ö?ëì/˜mÿ\;‡#7-`aq ·|óIŒmÔК®¢½{ ¥RÐÓ—`¡Ñl`q£Ã4qduÇ×Ö±c¡Šc/M@bñGq#¶LRÕSði¨ýIU/­~—V^|¦‘¦O’¼´hÙ΢‰,Z¶©çŽɬّÂ4Cœ(¥ëˆ±ìbøâùÃâ’øCƒQø‚X¾øp†c©Ô Bi«BÿË/&î¤á½Bï¦È`¼|sn¼Ÿ§õn§ ”ʘ˜Û‹Ýÿ¸òž <s¶³z®Pðl¯àñÓ牑Iýw „í‘Ë.ƒñ¨sP&íQf7ı1„±!ÏÉ|á7î˜]-I’ù‹Í–bƒÊyj 2÷w˜+±Èm»ó§gײâY¼ó–ÞNh{ÚjKö¶©·aE]Ïr£)ºŽèzKªã¥Å¡I,ÂÈDõz]q®5½*)Ô“èõîùÚ­º[Æ7í|À _ÚØ‰ÿ©ˆ<þLÏ‘ã¯ÁØøœZÛ ŨU½Þa±4Žý‡ïÆÎ]7àÛ—®Ç¿úØ?Æ£ç®w±[p Ò9GG|÷صsR”ë!f]1u8z îrú ÉuÀ°ú‹&±ðt$£ˆj=d Á2"YÄië—«'(gâø#Òãbø$L#ͼºkHõ$>A½ 9Ã3̘ı[÷`Òjâ–o<…ùóW€J›í¹s×8 ¹ 7/¡6–M4Û-TÛ&n¹¼ˆ½:ŽLãðm{`äXŒÀ3güÈÙÇ)¶'aQô|jRÕK«ß¥•WŸ„i¤é“j;Ñ¢e›ŠÞZH˶Ñ�®I,êþ0–×âŒÂÄòŇ3K¥þ¾‹o^ÛðDˆ!¼‡ËXµáݼºÞ< ”Ʀpálßøö ¸ãúƒˆ"¦eá‹_¦ÇQ,Vù…%‹úï@ Û# 0–]ãQç4 LÛ£²/HÏMb¾$ÉüÅfK±Aå<5‰™û›5‰…1pÏCŒÕS(i}Ë„ø+ÃxýàÙÊD“X²µÕ$–ìm5‰Emº“‡&±#ÕCêuŹÖôª¤PO>˜£çܧ¶Û w»Úg?N݃?ÿÆ[дƱ{ßõØ1w¾‘Pà[*¨”o'(ïä9÷#¹…k06±çO?„ÿò…ŸÄ›¯ßwýG01–ÇF½åŸkI¡ž�Mb«¿h OG2ЍÖC,#â`‘õHœF°~¹z‚r&Ž?"=.–OÂ4ÒÌ«x±Ö O¯¿-˧À¶´Î‘áI‹z x®·Üôº+|ÎîÃØä~<óèœxüYÌ\YÅÉ¡9S9]AáòrKõþ¶D[UòFëm mËDÎ>¹½«ë8¸¼ŽR)‡=×-`v߸§ I,[£?©ê¥ÕïÒÊ+‚OÂ4Òô)b^Z´lGÑD-ÛRDc·&±@¨û#ÀXv\ˆc0 _ËÎp,•úD$iNȨ¿ÂKè%[÷F ôλë¸besûñþÏ<™ÈrÿC'±Ö*`ºÐÙúˆü„Ü5¼�ÆÙÅ&±HÒäDd1ÅCxòÌ~ãŽTW)Š‘4ƒ›-Å•óÔ$dîïV\‰%+a’Q2>WMbÉÖV“X²·‰E%/RГ鈮·¤:PZšÄ"ŒLT©×çZÓ«’B=¹p­)гìU¥Ò¦*+øôó?‚Ï=¹ùb‡ÜryrW_ ¾?ý##V ‚†POtÚÕê,½—Î} ŸúÎ$ž_9æ®À4޹çšs¶Ñ‰gû…A@©Tu$zòþ"‹àõ’ë€aõ—ÿŸ½÷�”ä¨Î…¿ž¹y÷nÞÕæ¬U–PI!@€@&˜lŒýŒ±±1NÏ Û8¼÷œžmþçøŒ±ýlc‚AB ”ãfí®¤ÍÚ¼{÷æ8õwš™NwWwÏ­#.ÛÝç;U_Õ©êéîù¦ÚˆXDÅY„š‡,ÚGLàKŒcò2¢ùâ$ýÌ|d8¡/NÒ2tÖåïÌÖœ¨pÁ§²±2‚BßéàkA\à—Î?ÁFtÏéÄ¥7®ÄÑ}çP=r ¿wG6¯ÆÑKVajõ|`U?:N¢ãä0fjò:mV¥†Q8¯âsZ[ü± l:usíÏÎ9Kz°êÒ¥nûê}ûAHVK|³ÜùDÅ8:Ÿ¨8]óNW] 8IËÐÉ)a]ÆŒµ«!‹± ÊŒˆRÄÇ‹òa‚€2¸ —ŸCLKþ#¸qE¾ªÁÕY¸íŒÜ 4o"õ㬠ª]½è·Oî݇c§ÏcÅ’ù ØÈØ$>õէзärt÷ö+ûÆâIä‘>ÿž+ãxd/.‡óQÃ/@…G)èãbD,‚Ø-K³-–¥v’ë4"äηH‹rUI¸¥á¢LÄ’j5B?K¾±FÄ’¬±Ð>î”ÝaD,Òƒ™ò =W‚kÍ DCžBnEœ1tXUŒN÷`ÏÁË0oÁ<,^z±'ø�-Ÿ±;×9 âTypüÕj–¯¾ƒG°ÿô~L÷o¶u„0*3"qpQóňXDÅY„š‡,ÚGLàKŒcò2¢ùâ$ýÌ|d8¡/NÒ2tÖåïÌÖœ(qNe[š¾ú½dã¨#Ú`‚!•j«/]Œ¹‹{ñâ¾³èÚwKŽÁÁ+ÖáÜêŘ^=S+ûQ=3†ž“C˜ Êd嫆ñ*0Y±PsP«¡gr kO `éè(:»;°dí",^;ß¾.hÞå"b±Zh>QqN…Î'*N×¼ÓUWNÒ2trJX—1cílFÈbì‚1#bÔAç#ññâ„|˜   .HÅ%äçÓ’ÿÈiœâ×n¼Ã³ |ÕPý?8ýíúbµèÊ-þª,} WákßÛ‰û- Ø_|þ! Mwc弥ΗG¬ ¼ü[’_çIÏÇ#“øxq9œ~Á�*|<J�yœcþ¨¯àÏ€l\Ä'·´|J·,œÊˆe©ä:ˆ¹óu+±8”‚–JґʱFÄ’o¬±äkD,´;ew‹ô`¦<hÏ•àZ3ѧÛýl³ä×îþ†óz¡…‹6bnÿ²FÿSòÉ¢[)r@Å©òõÏ[°½sbzj]Ýs¹nQ„“�9Ir¥Âpº‚ùÂÔ˜ˆ£¨ùbD,"Œâ,BÍCÞ™k¢mŽÉˈæWˆ“ô3ð‘ᄾ8IËÐY—¿3[s¢Ä~åÀÅq~H*;€‰„4b,éüE½8yð<:aþc»q~gŽ^¶§6^„™Õó0²n¬ÑITOŒ¢ëä ¦'D5곊ÅP³¿•ï¬`ÚªzïFª1ôOb•#`Eg§…þåýX¶q¡» K½€±$áTè|¢âtÍ;]u%à$-C'§ u3ÖŽf„,Æ.3"Ht>/Nȇ Êà‚T\B~1-ù ÅñïͤA–%ˆ«‹Cjµ˜ÏŠŠ]ìýŽî>ô-¼÷<ò4>p×Mèê”Ô|þÛÏàþgcõå·¢ÒÕv&±Œ)�FÄ¢(Sp óQÚscÌõü‹xp§åSºeáTF,Kí$×iD,Èo«ŠX¬È{ÏC0«bÿÿ ÒØäL%RBu&2B[ˆ%ßX#bÉ?¶%D, R`É1²ë-%&àTv‡±Hfʃö\ ®5ƒ y ¹æ³££Û±8f5΄ò²è'ÜÏA×Áß ÿƒ»É-/ê¯×ë¼6I„‰›eD,’à¢æ‹±ˆ0гHÂ<äbœ‹¶£s’»M))Ê�Œˆ…R—¿3[s¢Äq8E^‰ã"B7áD_oùO†ýG¸VÅÂE`þÒ>?xÞ]…eÞ“{±êÙC8~ɜ޼“ýݨ-èÅÔK€ñiTÎŒ£ãÔ0:ÏŒbz*Ú²äæWXg“ößL§…™Šå>cvV”±¦kXx~ËÎ aÉè¨}-PEÏ¢,Y3ý6çPßÀˆX’p*t>Qqºæ®ºp’–¡“S†ºŒkW3BcmoFÄ©ƒÎGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘‰ÆcýA“ðá´3ôº!pÆ#窴TªèêíÇùÎùøÆC»q׫®‚ÈÞ¶ÿøÕmX¼ört;«±„ Òõ3‹×®1ÀˆXe äq>J{nŒù£¾‚?²qŸÜÒò)ݲp*#–¥v’ë4"äηLKìÁá›j˜™&¦»Ñ×1ФæTqv´ÝNYVⶆ¾ß#ÄK¾±FÄ’¬±Ð>î”ÝaD,Òƒ™ò =W‚kÍ DCžBîø cü^’§Æ+e#—ù÷§Í¯¦¬Æ?Á2(×qªV¬€hYA±‹+º±‹ª1BžŒˆE\Ô|1"FqIb§2&ÙgÜm&/#š_!Ž81"÷‚9IËÐY—¿3[s¢ÄI8…VQáá"?„p?þ~.ŽÅE2Ýs»°îŠ¥žÄé£Cè<9ŠÛžÇÔÓûpzÅbœ¸t6-ÃÌœ.ÌÌíÆÌš~LÌ0XÓ€Sš„5:eïÏÀš©¡:=ÊT –#HqêªT¼?‡‡óš û¾´V­€Ùß>Öêê›™šÿ/ÃÜá1,9uˆÑc1û>¶ŠîE}X¼rž'`±âýTo½½‘. û…‹k”ÓBó‰Š#p*t>Qqºæ®ºp’–¡“S†ºŒkg3BcmmFÄ©ƒÎGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘©ÇcT•ÁŠÊÿú©Ë ø+¬‚î¾y˜wÑZ|úËâê-«°nÅ¢t× ÇñGÿò æ.Y+·ÄʉÐåì¤Ï¿çÊ8™ÄÇ‹Ëá|Ôð P)ã±ÀscÌõü‹xp§>”mY8•ËR;Éu rçÛª+±-º*KOwFF§qbt)6Ì;ˆ$æ< Ÿdxa`-.[ ÌííŒÕE竆K¾±FÄâ[®}œ.®cÊjŒìzK‰ 8•ÝaD,Òƒ™ò =W‚kÍ DCžBnáføK6e92k|¾ñË£ô/ǸÕ7.ôÈ̈XdÁEÍ#bag‘y v±c‚í(î6“—ͯÇœ8ýÒ œ¤eè¬Ëß™­9Q✼eV$¸úk†˜0¤‰«5çkcí@œ#hYµe1–¬š‡³Ç‡1pj«ÏžÇÊ0õ½šß‡3«—b`õ" ®\ä®¤Âæw£fǹ+uÏ0¯@›*A¿¬îï›Dÿ¹!,8?‚Eƒ£è™A¥£ŠJwsö`þ²9˜»¨¼¾i®˜V?¦IÄ‚šOTe<9Ÿ¨8]óNW] 8IËÐÉIWþkC3BcmkFÄ©ƒÎGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘ZÆcP¶ž Ï]A «©Ë ú˜ç«T:0wñ* Ÿ:‚ýññ£wÝ„Wß´óæôàŒ}Óò‡ŸÅîÝêœ%X¶éúpE&b± ðñâ¤ç€Œã‘I|¼¸ÎG ¿`�•2 <7ÆüQ_ÁŸÙ¸ˆOnYÎ¥ZNeIJÔNrFÄ‚Üù¶ŠˆÅ}ÎX£ÏíëÂäT /NlÀ¼ñA,î9'Å…É^ŽA¬Dý°·;Ùí]ô{@)Vä¸PÆaαFÄ’¬±Ð>î”ÝaD,Òƒ™ò =W‚kÍ DCžBnU¢?•C©KДþ¥âTy ç@#œÈyЕ+ Ž@W0_˜q5_ŒˆE„QœEtÎÆÛQÜm&/#š_!Ž8qú¥8IËÐY—¿3[s¢ÄQ8ùÿZ™…‹³ý¬_ÛÖBÃ?@ôy8Ö,¢{N'–oZè¾vhøÜεÿG×È8í>ŒÚÎC˜±ã†çÍÁÈÜŒô÷`l^/&º»0]ípW\™©TÜ×9+³T&¦Ð19eÿ;mÿ;ÞáqôNØã˜;>‰.guë¶³ôÎïż¥sп¸ÕÎ ·Í¡UYê"‹{¸øùDÅ8:Ÿ¨8]óNW] 8IËÐÉIWþkS3BcmiFÄ©ƒÎGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘úÇ£'cg’ Á× q£‚¯báãÕj–]|=Žï}s÷VüÍ—Ÿ²W`U;QíèFwÿr,µý¨TbåŹ(D,a¨`D,Š2ò8¥=7ÆüQ_ÁŸÙ¸ˆOnyð)IJ(#–¥v’ë4"äÎw6¬Ä´àª,ÎGßâ=Ø´n1v¸óGÏ¡¿sГÖjñO-ïÄ;Ÿ©ƒÓó04¹�×]¾ ú»cuÐøª!FÄ’o¬±äÛª"F<Èd×[JLÀ©ì#b‘Ì”í¹\k!òrSó{Ÿ2œƒáw¥©8Uè9™Y‰E\Ô|1"FqÑ9_4lGyp·™¼Œh~…8FàÄé—Và$-Cg]þÎl͉Gá=Ъp¹×Wf‰”a0 _ô•D>ÁŒ#.™»¸Ïýs~Ë8>2é ZFÎctp ‡GÝ?§ç\çœNôöw¡w^7æ.ìEGw•ÛOÁ·û…ÚÏy^’ö°pÛ£eDK¶º ŸwºêJÀIZ†NNºòoÌX›²» LuQ¥Œc ?ÇA*×Ýab/.©?ÆGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘ÚÇc°OÒ.‘ÛNÑñµ­JÕ®^,¿ä& <ˆÑó§Q›™r.} .¼Ý•[å„x7+E,Á›Iç‹¢LÁ<ÎGiÏ1Ô—CŸç—ñÉ->…XeIJÔNrFÄ‚ÜùÎ6KݬÈ+.Û´#£S83PÅÄÌIhr´¿yí¬_5/V6¯bD,ùÆKþ±­¼KÌ(ŸíLsP>î”ÝaD,Òƒ™ò =W‚kÍ DCžBî¤ùŒˆYHc+º•"Tœ*ôÈ̈XdÁEÍ#bagóE£1Áv”w›ÉˈæWˆcNœ~iNÒ2tÖåïÌÖœ(qN\tá²÷Àçg“Å+_øãæø%T¼}°gn—û·dÍ<ÌÌ0LŽMÙÓ˜·ÿì홉ûxÍõÕê¯rVæ®ÚöÓÛJÕŽ ºz:ì¿NtõÚÿövÚχ+Òö‡+‡pVxe–&œŸ#bɽ®Â箺p’–¡““Μ3ÖÆf„,Æ.c’ƒŒÇ~ŽƒT®»ÃÄ>^\ .RŒÄÇ‹òa‚€2¸ —ŸCLKþ#´GY;ƒ75 <<Wg ù˜ LÀªX¬¸óWl†åÜ-¸KIVÃ+±pê«ï˜•X80Á�*e<xnŒù£¾ú<¿ü‹Onyð)IJ(#–¥v’ë4"äηUE,‚›Kë¬ÚŸ/½f9Î ŒcpxÒ]EfÕjó퇌 çu#YY0Ê8Ì9ÖˆXò5"ÚDz;ŒˆEz0S´çJp­„hÈSÈ6Ÿ¼{QU9‚Ž÷¯EÄÕ7å ¢ç@fFÄ" .j¾‹£8‹$ȱ‹µ“ðàn3‰ñü q’~f>2œÐ—'i:ëòwfkN”8 '®ñš!÷àëƒ"ýä|âÕb1MåJ¨È€F¤V‹×åˆSQK·ýרDÔ,¢DQµŸ»ú mä´?&vaá˜hyÑFÄ’­®Â箺p’–¡“SN91f¬ÍYŒ]Æ$%Ž)ü©\w‡‰}¼¸\¤þ‰'äÃepA*.!?‡˜–üGhÔ>Ü%ñâêÂ’š¤¡Á›«ÚG·’&ÿ$Kã’r3ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$c1)#bÄ"1ŸB, 2bYj'¹N#bAî|gëJ,A³\)C8ÖyÍó§®SP&e5¥’ňXò5"–ücˆ…öq§ì#b‘Ì”í¹\k!òrëÈgã›,&/GÐá]KäH‹bIrÀ³À½­j‚#AtæJ€#Ð̦ÆD™0§*WFÄ"Â(Î" ò@ìbíÆ$<¸ÛLâC<¿Bœ¤Ÿ™€ 'ôåÀIZ†ÎºüÙš%ŽÂ‰ˆƒª.×¼uI¢¾†8%ZWàó6ÚOÁ[È/'ØvÅ3’1\C䊘 E,–äÙq¨ýÜÃÅÏ'*Ž2NXó‰ŠÓ5ïtÕ•€“´ œrʉ1cíjFÈb¬íI2JSø9R¹îûxq)¸Hý1>/Nȇ Êà‚T\B~1-ùÐ>“ö¹c¼%*q‹¯Ð]\˜Y‰…   RÆcçÆ˜?êË¡ÏóË¿øä–ŸB, 2bYj'¹N#bAî|ÛAÄR¯Óм¿<IlÔÈ"…K¾±FĒ쬱P¯§)Œ|]A½þ4"ùÁLyО+Áµf¢!O!·ö|Z1‹¢CA©9»\‡<¼ºâ•„ðÏDFÄ".j¾‹£8‹$ȱ‹µ“ðàn3‰ñü q’~f>2œÐ—'i:ëòwfkN”8 '*ÎßiüæPÀÉýG$N/ñ·C¾ ð£?§WJ±5÷Hî\þˆPxeX–4wQ~õ V¯$ê‹°ŠOÒ2’àœ OTœ®y§«®œ¤eèä”SNŒkg3BcmmLrQâ˜ÂÏqÊuw˜ØÇ‹KÁEêñ‘øxqB>LP¤âòsˆiÉä€öñ˜¸Ï{Š/Ô¢}|å.³„¾XœeIFÄ¢(Sp óQª±ÈóG}9ôy~ùŸÜòàSˆe!PF,Kí$×iD,Èo;‰Xê–HÌ"€%±È FÄ’o¬±ä;«VbáS`„@ÊDz;ŒˆEz0S´çJp­„hÈSÈ]@>Yè«/+U¨8Uø~‹€‰¥šàH¹àtó…©1GQóňXDÅY$ó|á—•›Exp·™Ä‡x~…8I?3NèË“´ uù;³5'J…­ÌB¼_xýýa"ã«+( TΫ+&p nûQ_¨áËñ&_nþ³ÏŽëŒˆ%{û©8]óNW] 8IËÐÉ©€œ3ÖŽf„,ÆÚÖ˜ä £Ä1…Ÿã •ëî0±—‚‹Ôã#ññâ„|˜   .HÅ%äçÓ’ÿÈíã1qŸsÆ£`ygYŸ×Pa.V’‡“J.Æ#“øxqR.HÅ¥á  RÆcçÆ˜?êË¡ÏóË¿xpçÁ§ËB ŒX–ÚI®ÓˆX;ßÙ$b <K$ÕI³Hb•Fh«±äkD,ùÇæ"b)ð—)0B åãNÙ$#b‘Ì”í¹\k!òrOÝJ‘*N•z0ÕG‚<èÌ•�G +˜/L‰8Šš/FÄ"Â(Î"%Ì—ÔÆ Üm Ž)Ê�Œˆ…R—¿3[s¢ÄQ8QqîVp5Y?ÕW6 ,åß´ð֧꪿~°ÆÄu!aîÜw )p,|-ÏÇYˆüþÂó¤±do?§kÞéª+'i:9cÆÚÕŒÅX[“d”8¦ðs¤rÝ&öñâRp‘úc|$>^œ”Á©¸„übZò9 }<&îsÅxT(úEqAQЍ÷,ÿëKPˆº –ÄŸq<2‰Çe&äÒð P)ã1ÉXLÊňX±ÐÊG›e©£ŒX–ÚI®ÓˆX;ßv\‰%jVãà´‰O°bceeˆÕצ±FÄ’¬±Ð>î”M2"éÁLyО+Áµf¢!O!wùdÑ­9 âTy ç@SMp$ȃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD,"Œâ,RÂ|ÉbL²Í “ᘢ ÀˆX(uù;L…kÑœ(qNTœ‚»e59)ëâÜSFs\ñD˜“è+„¸líw›Æˆ"„-º,4ïœ7Hý„ìœ OTœ®y§«®œ¤eèäT@NŒkg3Bc†q>,!ˆIIåº;LìãÅ¥à"õÇøH|¼8!&(ƒ Rq ù9Ä´ä?r@ûxLÜçÄñÈQô'åbq¾ZÈ”#bå6 <7ÆüQ_}ž_þŃ»h>Ú,KeIJÔNrFÄ‚ÜùÎVKhU–uÆ*N,Q³3ç«´Ø´u^è±FÄ’¬±Ð>î”M2"éÁLyО+Áµf¢!O!wùdÑ­9 âTy ç@SMp$ȃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD,"Œâ,RÂ|ÑiŒ·Í$>Äó+Ä1Z]¬9IËÐY—¿ÃT¸͉GáDÅ%È÷UC¢ºx‚–hÃÐ¼Ž®…‚óÍ]°^iûï3’å¤q@µê‹„S.ó‰Š#p*t>Qqºæ®ºp’–¡“SÁ91f¬­cÆÚÝ8ˆÄ$¤rÝ&öñâRp‘úc|$>^œ”Á©¸„übZò9 }<&îóãÑRˆQRs‘ø¸qFÄ" Êm<xnŒù£¾ú<¿ü‹wÑ|´Y–:ʈe©ä:ˆ¹óí+±X‡éêDzc.3"–|cˆ%ÿØÙ,ba_£òë-%&àT6ɈX¤3åA{®ךAˆ†<…Üä“E·R䀊SåžL5Á‘ :s%Àè æ Sc"Ž¢æ‹±ˆ0гH óE§1Þ6“øϯÇhu±ä$-Cg]þSáZ4'J…—"wî=• .'À}-¤u¹Å²fÑ–¨<'îv¤¾m'âäð5"–ÐNaó‰ŠÓ5ïtÕ•€“´ œ Ή1cíjfEcímœ Db’@R¹îûxq)¸Hý1>/Nȇ Êà‚T\B~1-ùÐ>÷y†ñظ‰`š¸H|Ñ8Ë’ŒˆEQ¦à€Ö9—”‹±b¡•OKX~icYj'¹N#bAî|/„× •kD,ùÆKþ±³}%UÝŒ€£|Ü)›dD,Òƒ™ò =W‚kÍ DCžBîòÉ¢[)r@Å©ò@Ï&» ¡äAg®8]Á|ajLÄQÔ|1"Fq)a¾è4ÆÛfâùâ­.Ö‚œ¤eè¬Ëßa*\‹æD‰£p¢â2æÎyLê.žM­+ð«îk‡8u¹õÜVóÕ·Ó¶¿¾ŠLà ,'Q’eç$1ŽÀ©ÐùDÅéšwºêJÀIZ†NNçʱv6#d1Öž&8¹ aLYLÌA*×Ýab/.©?ÆGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘ÚÇcâ>×4‚¤æ"ññêc²r3ŽG&ññâ¤\ŠKÃ/@¥ŒÇÏ1Ô—CŸç—ñà.šOKX~icYj'¹N#bAî|ÛIÄzÅPÂØ,õ-º‹±äkD,ùÇ íãNÙ$#b‘Ì”í¹\k!òrOÝJ‘*N•z0ÙMXð%:s%Àè æ Sc"Ž¢æ‹±ˆ0гH óE§1Þ6“øϯÇhu±ä$-Cg]þSáZ4'J…§)wîõ°¯™¨® `$\Jî,+UN`ëJà ÚOÅ8:Ÿ¨8]óNW] 8IËÐÉ©äœ3Önf„,ÆÚÚÅÇÆ2b¹îûxq)¸Hý1>/Nȇ Êà‚T\B~1-ùÐ>÷yã±þ­XMÑoH™ÿúÍ “•›q<2‰'å‚T\~Á�*e<&‹I¹‹ Zù´„eá—6–¥v’ë4"äηWbI$fÑÜV#b)6ÖˆXò5"ÚDzIFÄ"=˜)Ús%¸Ö B4ä)ä. Ÿ,º•"Tœ*ô(`²›°àJtæJ€#Ð̦ÆDEÍ#bag‘æK^Í ãùϯ'éç`] 4œÐ—'i:ëòw˜ ×¢9Qâ(œ¨¸rç\[~ÙÉsç³@P®¹«“•á$9iüÖ±sBÅ8:Ÿ¨8]óNW] 8IËÐÉ©äœ3ÖŽf„,ÆÚÖÅÇÆ2b¹îûxq)¸Hý1>/Nȇ Êà‚T\B~1-ùÐ>÷yŽãÑ9TÏ«D ªü—ºä‚±Ç#“øxqR.HÅ¥á  RÆc’ü'åbD,‚XhåÓ–…_ÚX–ÚI®ÓˆX;ßv~oA3jlšz-NgK¾±FÄ’¬±Ð>î”M2"éÁLyО+Áµf¢!O!wùdÑ­9 âTy ç@“Ý„Pò 3W®`¾05&â(j¾‹£8‹”0_ò²h^χx~…8I?ëb á„¾8IËÐY—¿ÃT¸͉GáDÅ圻 %m]Ñç²Jqо&ÙrgY’º¨œxÛºrBÅ8:Ÿ¨¸ ¹Ë¥®œ¤eèäTrNŒkW3BcmiŒâc c±\w‡‰}¼¸\¤þ‰'äÃepA*.!?‡˜–üGh‰û<ÇñÈãùÖŒ1qg0žÂÅseLâãÅI¹ —†_0€JIòŸ”‹±b‘ÿx,Ú²HËR;Éu rçÛÎ"–  WgÑØV#b)>ÖˆXò5"ÚDzIFÄ"=˜)Ús%¸Ö B4ä)ä. Ÿ,º•"Tœ*ô(`²›°àJtæJ€#Ð̦ÆDEÍ#bag‘æK^Í ãùϯ'éç`] 4œÐ—'i:ëòw˜ ×¢9Qâ(œ¨¸sçXðG©ë âx— 'KQ^ÊÜpiÙœPq”Ü9Ÿ¨8]óNW] 8IËÐÉ©äœ3ÖÎf„,Æ.(c± Ÿã`”rÝ&öñâRp‘úc|$>^œ”Á©¸„übZò9@ŠÓÜÎÂÆ#•KP2/X:2 Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆEþã±hËB"m,Kí$×iD,Èï…"b©[luMmèCˆ%çX#bÉ?¶íD,cåãNÙ$#b‘Ì”í¹\k!òrOÝJ‘*N•z0ÙMXð%:s%Àè æ Sc"Ž¢æ‹±ˆ0гHKÌ&hOl›‚“ôs°{h8¡/NÒ2tÖåï0®àöSs¢Ä•0ž¤e¤¬‹ûÚ!J]9rRåIJ2Ô¥™“´Œ$8'9Ÿ¨¸„¹Ë½®œ¤eèäÔB91f¬ÍYŒ]0Æb?ÇÁ(åº;LìãÅ¥à"õÇøH|¼8!&(ƒ Rq ù9Ä´ä?r€§¹…Ç’òï¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±È<mYH¤e©ä:ˆ¹ó½ÐD,AsÒ9±Vʪ™X¼Ò¨C›ÊfÛ8Ì9ÖˆXò5"ÚDzIFÄ"=˜)Ús%¸Ö B4ä)ä. Ÿ,º•"Tœ*ô(`²›°àJtæJ€#Ð̦ÆDEÍ#bag‘–˜/ù“m3ŽÊã´Y„úrà$-Cg]þSá n?5'J…×"¹k¬lâ·¿Õr\y%u]º9¡¸~*t>Qqºæ®ºp’–¡“S åʱv5#d1vA‹mü£”ëî0±—‚‹Ôã#ññâ„|˜   .HÅ%äçÓ’ÿÈRœæv6KÊ¿çÊ8™ÄÇ‹“rA*. ¿`�•2“ä?)#bÄ"ÿñX´e!‘6–¥v’ë4"äÎ÷B±DcU‚n¬±”kD,ùÇ íãNÙ$#b‘Ì”í¹\k!òrOÝJ‘*N•z0ÙMXð%:s%Àè æ Sc"Ž¢æ‹±ˆ0гHKÌýÆ$ûÑü2Ž)Êð7”u6Šá$-Cg]þSá n?5'ZÆ ×j¹«o^×S$§°ÆãZ6'TS¡ó‰ŠÓ5ïtÕ•€“´ œZ('ÆŒµ³!‹±¶7Ûø9F)×Ýab/.©?ÆGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘¤8Íí,l<–”Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆE¾ãQ5ó°,u¦e©ä:ˆ¹ó5"¤7B¬±äkD,ùÇ íãNÙ$#b‘Ì”í¹\k!òrOÝJ‘*N•z0ÂE89:s%Àè æ Sc"Ž¢æ‹±ˆ0гHKÌ—üE·™ÄWßfŠ2ü ¦ª+°ÁP 'i:ëòw˜ Wpû©9Qâ(œ¨¸Vˤ.çÎv]X+\wVN¡òÑ9¡âœ OTœ®y§«®œ¤eèäÔŠ91f¬MÍYŒµµ±Ø†ÀÏq0J¹îûxq)¸Hý1>/Nȇ Êà‚T\B~1-ù Åinga㱤ü{®Œã‘I|¼8)¤âÒð P)ã1Iþ“r1"A,òªA˜‡e©3m,Kí$×iD,ȯ± ½bˆ%ßX#bÉ?¶ÝE,B#^WP¯?ˆE~PvÝ«pªs%¸Ö B4ä)ä. Ÿ,º•"Tœ*ô(`„‹prtæJ€#Ð̦ÆDEÍ#bag‘–˜/ù‹n3‰¯¾ÍeøLUW`ƒ¡NÒ2tÖåï0®àöSs¢ÄQ8Qq­–;J]O€bÄ|NÁÕFÛ*'TS¡ó‰ŠÓ5ïtÕ•€“´ œZ1'ÆŒµ±!‹±¶5Ûø9F)×Ýab/.©?ÆGâãÅ ù0A@\ŠKÈÏ!¦%ÿ‘¤8Íí,l<–”Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆE¾ãQ5ó°,u¦e©ä:ˆ¹ó5"¤7B¬±äkD,ùÇ íãNÙ$#b‘”]÷jÁœê\ ®5ƒ y ¹ È'‹n¥È§Ê= á"œœ¹àtó…©1GQóňXDÅY¤%æKþÆ¢ÛLâ«o3EþSÕØ`(†“´ uù;L…+¸ýÔœ(qNT\«åŽRW œfeN¨8§BçWdî(u%à$-C'§V̉1cmnFÈb¬-Å6~ŽƒQÊuw˜ØÇ‹KÁEêñ‘øxqB>LP¤âòsˆiÉä�)Ns; %åßseLâãÅI¹ —†_0€JIòŸ”‹±b‘ïx$rÑjY*JËR;Éu rçkD,Ho„X#bÉ7ÖˆXòm9KQ¬ÔÏrâõ§±ÈÊ®{µ`Nu®ךAˆ†<…Üä“E·R䀊SåžLv<BɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD,"Œâ,Òó%cÑm&ñÕ·™¢ ƒ©ê l0ÃIZ†Îºü¦ÂÜ~jN”8 '*®ÕrG©«N³2'TS¡ó‰Š+2w”ºp’–¡“S+愃3f¬ÝÌYŒµ¯±D‡¹ÄÂ8#báA — Rq ù9Ä´ä?r€§¹…Ç’òï¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±Èw<¹hµ,¥e©ä:ˆ¹ó5"¤7B¬±äkD,ùÇ íãNIˈX¤e×½Z0§:W‚kÍ DCžBîòÉ¢[)r@Å©ò@Ï&»¡äAg®8]Á|ajLÄQÔ|1"Fqi‰ùR¬EóË Ø–ôs°{h8¡/NÒ2tÖåï0®àöSs¢ÄQ8Qq­–;J]%pš•9¡âœ OT\‘¹£Ô•€“´ œZ1'œ1cíhFÈb¬=%:Ìý Æ ½\ŠKÈÏ!¦%ÿ‘¤8Íí,l<–”Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆE¾ã‘ÈE«e©(m,Kí$×iD,ȯ± ½bˆ%ßX#bÉ?ÖˆXhwJZFÄ"=(»îÕ‚ 8Õ¹\k!òrOÝJ‘*N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0гHKÌ—b-š_Á¶¤ŸƒÝË@à }9p’–¡³.‡©p·Ÿš%ŽÂ‰ŠkµÜQê*Ó¬Ì GàTè|¢âŠÌ¥®œ¤eèäÔŠ9áàŒkW3BcŒ1‰ƒQ㌈…^.HÅ%äçÓ’ÿÈRœæv6KÊ¿çÊ8™ÄÇ‹“rA*. ¿`�•2“ä?)#bÄ"ßñHä¢Õ²T”6–¥v’ë4"äÎ׈XÞ±FÄ’o¬±äkD,´;%-#b‘”]÷jÁœê\ ®5ƒ y ¹ È'‹n¥È§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÅY¤%æ ·¨ÜL÷—¤Q®"œÐ‡ø˜ËÊIZ†Îºü¦ÂÜ~jN”8 '*®ÕrG©«N³2'TS¡ó‰Š+2w”ºp’–¡“S+愃3f¬ÍYŒ]Æ$F3"z¹ —ŸCLKþ#HqšÛYØx,)ÿž+ãxd/NÊ©¸4ü‚TÊxL’ÿ¤\ŒˆE‹|Ç#‘KËXZ’,µ“\§± w¾FÄ‚ôFˆ5"–|cˆ%ÿØ VÄB­’xýiD,òƒ²ë^-˜€S+Áµf¢!O!wùdÑ­9 âTy ç@“]„Pò 3W®`¾05&â(j¾‹£8‹´Ä|áE+Lƒ1Ñ6#à8má„>ÄÛ›•“´ uù;L…+¸ýÔœ(qNT\«åŽRW œfeN¨8§BçWdî(u%à$-C'§V̉gÌX;š²k{c£Æ ½\ŠKÈÏ!¦%ÿ‘¤8Íí,l<–”Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆE¾ã‘È¥e,-I–ÚI®ÓˆX;_#bAz#ÄK¾±FÄ’¬±Ð>î”´ŒˆEzPvÝ«pªs%¸Ö B4ä)ä. Ÿ,º•"Tœ*ô(`²‹ðàJtæJ€#Ð̦ÆDEÍ#bag‘–˜/Ü¢h…i0&Úf§Í"œÐ‡x{³r’–¡³.‡©p·Ÿš%ŽÂ‰ŠkµÜQê*Ó¬Ì GàTè|¢âŠÌ¥®œ¤eèäÔŠ9QàŒkW3BcmmLâ`Ô8#báA — Rq ù9Ä´ä?r€§¹…Ç’òï¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±Èw<¹´Œ¥%ÉR;Éu rçkD,Ho„X#bÉ7ÖˆXò5"ÚÇ’–±HÊ®{µ`Nu®ךAˆ†<…Üä“E·R䀊SåžLv<BɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD,"Œâ,Òó…[­0 ÆDÛŒ€ã´Y„úooVNÒ2tÖåï0®àöSs¢ÄQ8Qq­–;J]%pš•9¡âœ OT\‘¹£Ô•€“´ œZ1'€±»`ÍYŒµ¥1…“Qcˆ…^.HÅ%äç“õ9¹‘¤8Íí,l<–”Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆE¾ã1)—²--Õ‡xwÝŒˆ¹ó5"¤7B¬±äkD,ùNjˆןFÄ"?(»îÕ‚ 8Õ¹\k!òrOÝJ‘*N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0гHKÌnQ´Â4m3ŽÓfNèC¼½Y9IËÐY—¿ÃT¸‚ÛO͉GáDŵZî(u•ÀiV愊#p*t>QqEæŽRWNÒ2trjÅœ$À3ÖŽf„,Æ.,cò{øbƒ‰}¼8&ñIt>/Nȇ Êà‚T\B~1YŸ“Û9@ŠÓÜÎÂÆcIù÷\Ç#“øxqR.HÅ¥á  RÆc’ü'åbD,‚Xä;“r)ÛÒa©ä:ˆ¹ó5"¤7B¬±äkD,ùNjˆןFÄ"?(»îÕ‚ 8Õ¹\k!òrOÝJ‘*N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0гHKÌnQ´Â4[°J#bº.‡©p·Ÿš%ŽÂ‰ŠkµÜQê*Ó¬Ì GàTè|¢âŠÌ¥®œ¤eèäÔŠ9I€3f¬]ÍYŒ]8Æä'öðÅûxqLâ“8è|$>^œ”Á©¸„üb²>'·1r€§¹…Ç’òï¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±Èw<jàR¨¥­Ÿ¥v’ë4"äÎ׈XÞ±FÄ’o¬±äkD, #^‹ü ìºW &àTçJp­„hÈSÈ]@>Yt+E¨8Uè9PÀdáÁ#”<èÌ•�G +˜/L‰8Šš/FÄ"Â(Î"-1_¸EÑ ÓlÁ*ˆêºü¦ÂÜ~jN”8 '*®ÕrG©«N³2'TS¡ó‰Š+2w”ºp’–¡“S+æɸ3Ö®f„,Æ. còóyøbƒ‰}¼8&ñIt>/Nȇ Êà‚T\B~1YŸ“Û9@ŠÓÜÎÂÆcIù÷\Çc-‚²,yœ” Rqiø¨”ñ˜$ÿI¹‹ 9ðÑË¥PK[?Kí$×iD,ȯ± ½bˆ%ßX#bÉ?ÖˆXF¼þ4"ùAÙu¯LÀ©Î•àZ3ѧ»€|²èVŠPqª<Ðs €É.ƒG(yЙ+Ž@W0_˜q5_ŒˆE„QœEZb¾p‹¢¦Ù‚U Ôuù;L…+¸ýÔœ(qNT\«åŽRW œfeN¨8§BçWdî(u%à$-C'§VÌ ’q7f¬ÍYŒµ¿1ùù<|±ÁÄ>^“ø$:‰'äÃepA*.!?‡˜¬ÏÉmŒ ,í´,yÜ…*b‰^¥ùýÔð1¯ŒžN }ößÙÑš}˜Ù_ŽXü>•rœ ±‚”ûx$q>.FÄ"ˆE|ôr)ÔÒÖÏR;Éu rçkD,Ho„X#bÉ7ÖˆXò5"…¯?ˆE~PvÝ«pªs%¸Ö B4ä)ä. Ÿ,ºEÊà,.”³ ^L|f `ÔfD,âàL˜€S•#bag‘y Ÿ³0-ç-bÂ3˜±@]—¿ÃT¸‚ÛO͉GáDŵZî(u•ÀiV愊#p*t>QqEæŽRWNÒ2trjÅœ =wcÆÚÑŒÅX{“ŸÈÃLìãÅ1‰Oâ ó‘øxqB>LP¤âòsˆÉúœÜÆÈf}õ:X`®p"i;­àª!ö¶ÅšÛ±¸ MÄâ?”oøëíwúÆÝöûˆyyxÏKûqçUs]÷á³Søä·Ïáø`ÍëÓ€˜ÅˆX4p1"A,r࣋‹jç`i«d©ä:ˆ¹ó5"¤7B¬±äkD,ùNjˆןFÄ"?(»îÕ‚ 8Õ¹\k!òrOÝRæÀï…ãD[î–åÞ»Y±¢h÷>0P¯û3†ÆÉ…/ˆI7_­ äAg®8]Á|ajLÄ‘ pªò`D,"Œâ,’ ôs–¦å¼Eû,ËbFÄu]þSá n?5'J…×j¹£ÔU§Y™*ŽÀ©ÐùDÅ™;J] 8IËÐÉ©s‚ôÜkW3BcíkL~"_l0±Ç$>‰ƒÎGâãÅ ù0A@\ŠKÈÏ!&ësr#šõùu°>úÚ¸dy7tÙ™áüÆO7-,¸’È…*b±ûù§n[€[6÷† ÿúÈyܳc´QÁë{ð¦«ç6ükuâC¯œß»ûŒÝ•†˜ÅˆX4p1"A,r࣋‹jç`i«d©ä:ˆ¹ó-RÄòs¿wyæTÖQµÐ?§ kVöã†+.ÂoÛˆµ+úSÕ©´œc‹± MàŽýGìøcŸ}Ÿ26K½­kD,ùNjˆןFÄ"?(»îÕ‚ 8Õ¹\k!òrOÝRæÀï…š}÷¥¸ôâÞâŸÿý4žØ:jߺU|¸«Ë°,]\ÅoþüÊXüïþé‹8ufÆ´X¡ªÓÍA+(yЙ+Ž@W0_˜q5_ŒˆE„QœEä~ÎRÀ´œ·i¾d1#bº.‡©p·Ÿš%ŽÂ‰Š‹Tö©O>Ž=;N‡ŽÝùŽKñª;6(ëžÄïÿ⽈Ú/ÿÁm˜¿°·åÄçNào>ñ=­»·ûã×Åê*3'e÷“cƒv_}áÂ}ÕÙÓ÷ÿþëôÏ'*N×¼ÓUWNÒ2trjÅœ =wcÆÚÙŒÅX{“ŸÈC>#báA — Rq ù9Äd}Nncä@ìŽÕü?h7V³ºUª¶ˆÅÿ§ÙÏq\­ÆÜ uðšEÕfíâNWCÅ~ «jD,ÐÀňX±ÈOÀ2qaÊ8í–¶2–ÚI®ÓˆX;ß–Z‰%`Ó3 ç'Ü¿mÏžÆ?þçN¼÷Í—â§è%è¨VôÕ™s¬Y‰%ßX#bÉ?ÖˆXh¦¤eD,Òƒ²ë^-˜€S+õÕØ…!bñ×¼û;‘ÿmo\ˆÏŽb|ܹ׳Â+˜:ñN¬}X«U¸ñî}"sb+þÊ.ä@nFÄ".j¾‹£8‹$Èýœ¥€i9oå/b‰×ÈÙæ´Y„úo¯ÇZ¬.‡©p·Ÿš%ŽÂ‰Š“p‡Š‡ .a¼®qBÅ¥h?uå‘“íÆðùqíÒWbÞâ9òºEõ¯òª«ðy§«®œ¤eèäÔŠ9îÆŒµ£!‹±¶4Fõ ½\ŠKÈÏ!&ësr#¢cÃýù" íJÖx0g_3BÈ¢¡½Ïóȿ璌G¿Ÿ]”+V©q°5Ïç¿fhç‘Q¼íúù!ÈŽÃcΓLWä”gY–€‹ø i< Pîã‘Äú¸‹ 9ðÑÅ…)ã´[ÚÊXj'¹N#bAî|˱Xö¹¿z^ lœdjî_­6ýʳØúìiüåoߎžîŽ,•åÝÖ ±‰ã¬XÕ¾t±Yê-1ÖˆXòm+KŽ®Ê¢ˆEzPvÝ«pªs¥¾»pD,Ì}s¯W«ÍxŸÇ›;§Š·½aþõ‹gQ©TüqaÅk¶?ǹµ„Ž; °RÎÁ½%:s%Àè æ Sc"Ž¢æ‹±ˆ0гH‚<ÐÏY ˜–ó–±´D]þSá n?5'J…'àÞ]u„áYz;ûIuYVüGyŽU­.n]¡mJN¨8bû»ªñUÉ+ÎyådÇC‡qâpø¾ÿ¢õ BB–Vè§zðúªZÏ·®œPqºæ®ºp’–¡“S+æz¸3Ö®V1c…/6˜ØÇ‹cŸÄ¡,—»“…”Á©¸„üb²>'·1r€I¢j ±…^«±€@æ]‰¥qÈõxïOÀkÞj-nÙ;ŽŒáoï=SƒS›¬áÁ½ƒø¿÷„'<j(ªVÉE  bÇcúó=ÿľÃåqIÆ#“øRqîrøèâ”qÚ-me,µ“\§± w¾­ºKÓ,ïÏyxTé´Ÿ"õºÿîØ{ò÷Od¯3çX³K¾±FÄ’¬±h2#b‘”]÷jÁœÊ.f꫱ GÄq8÷xÛËn˜‡Íº¼{n·“BÁþŠ,|!LÍ_Õ³ž€tóEpïCɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD,"Œâ,’ ôs–¦å¼eD,-Q—¿ÃT¸‚ÛO͉GáDÅI¸ËŒZW¢2eåŽk9ç¤jÅ{ßYé’—Wp?ñú fºrBÅéšwºêJÀIZ†NN­˜èánÌX;›Y‘ÅØcá‹ &öñâ˜Ä'q(ËåîdáÃepA*.!?‡˜¬ÏÉmŒ Ä}á‘3èép†ÎLc‰ä:¢b?­ÿ•·mŠÅþÝ·¹b‹Ðê VÅ}Ð èÝÕF*qéþciä�»úRË¢>g‚ü[!œäDã¢óÆ]!’r|¢åë-ë!yAþCM¯9îÛußÞ~Ö=æüª¡Ru~MùuC€/ ´IÊ…³’ ¿Ï¹âÞåúŽ' ‰Ö“d<¦8Ñç?“û£>iþÅI|˜Ä—Š‹øäV]\˜2N«e©ˆ¥v’ë5"äηÕD,ï¼ë¥¸ãUW6ö'§¦qâÔ xäYÜÿðîæ\´:á¼îîû^À_±×_yRYÎm5"–|cˆ%ÿX#bÑdFÄ"=(»îÕ‚ 8•]ÌÔWc¦ˆÅ_‘…©W7}ÏÛ–à}ò(f\½Jó5Aî=bM6¼Îw !ý™žŸ¡Dyàßã‰ÝŒ³gIt8‚ûPéQñL‰8Šš/FÄ"Â(Î" ò@?g)`ZÎ[FÄÒuù;L…+¸ýÔœ(qNTµ?SrB’2eåŽk䤣ÿʲÃù Z£Ÿx} ²Ì9¡âtÍ;]u%à$-C'']uéäÜkc3Bc„…/6˜ØÇ‹cŸÄ¡,—»“…”Á©¸„üb²>'·1r@g¹ÿ97…ÚÌ´ý7ãzÜÕC|Fü_ˆ½pb GÏMÚâ*®@ÂùÏùÍÙ·ª®ø¢ù«3¯ ưÔùØÇ¬ú®®ñ;7iœ#Fq≠”éA™û°a~\*ÚyØ&,ñØF]Ñ9è?Üd‚;&Æ%ºâËíÃJÅóµ”Ç¥ñÐ3Ð,Ц¨`'^g¸MüqÎå2^¿Ãâ¶¿±éóp뉈ò8Ñç?“û£>F,7rćI|©¸ˆOnåðÑÅ…)ãZÆXj'¹FÄ‚Üù¶âJ,+–-À5W¬‹óë®Åýí¯þÏ¡Vÿ|sWh鿵/%ç¶¶”ˆ%‹µèø7"–ücˆE“‹ô ìºW &àTv1S_]˜"–únó?™]´¤ wÜ6ÿuï }{Ĭ·ÖìdN}þŠœïüãgFpZ·æNê÷~A|øÏÝoÜ¿5_ü‘Kóÿ­�§86Ô'Ì+ÛãËÄ›£:#b‰ µÍ1Ž@WQœEä~ÎRÀ´œ·Š±„kon0‘ñ±Âd8¦(0"bû©9Qâ(œ¨8jjà¤,#°Ñ ¹“Ï3'PÕØ(ªŸdó)j™sBÅéšwºêJÀIZ†NNºêÒÉ ùp7f¬ÍYŒµ½…/6˜ØÇ‹cŸÄ¡,—»“…”Á©¸„üb²>'·1r@çO\€'6°*î¼…û(ÎY•ÅÿW$dqV^©T¼•B¢·¬ª'n±ËßÍóñêËæ†âþæþsxòÀ6-íÂWÏÅûßþž öŸÄŸÜsÖ+ƒ5óÞYaxÙ¦^¼dm7Ö,ìt±Îwvƒã5<=‰mG&ðèóã˜bõ6!$Tq„$¿÷Ö%Xµ°ù‘09ÍðÿtÌÅ-[Á®œ‹+WucñÜ*&lßéá<±ßÙ3Šá „Ë u²ÿàÒ&´iY'^}i.]Ñ……sªn/Lã=#¸o×`CÄɆ[bý!ãK7ÏÁÇîXBìzq¿ÿ•Ó:ûÃw.Áê…¡6ýÈß¿èæbio²ûöê5^›ß©¡<úÂîÛ=ŠÁ xÄ«8ÄÅ)¿æÿ{ݺ.Ü~é\|‘—£‘ †NMâ[;GðØþ17âwÞº—¯ ¿/õ7¿t ÏŸ†Uk–ŸÇùˆ>ÿ™Üõ1b¹‘ƒ$>LâKÅE|r+‡..L×2ÆR;É 4"äηe_'4c~Œìmî;Ÿ‘Î{Æ;çã¶[.ǯy ¾ú­§þ<¶ý”´È3ãøÚý/à‘gŽaÿ‘ó´?誕 ÍïÁÅëâ•7®Â·®GwWUXÆ}¯ýé÷½¿­¯»u~ÿçnÅŒý™øå{ŸÃ}o?Äèø”[öK.]†·Ü¾ 7^µ¼YP¤ŸþøÓOà ߨ:ö¡w^…½ãª0Ðûâ·÷á>õxÈõªVãé•ÈjŽ@èûOÅößö}§qúÜFƦÐ×ÓÕõãÊ‹—à57­Áu—‹ECC¸ã'ÿ#Äyãêùøì½ cÓøì×÷àž÷ãȉaLM×ð7¿ù\w§<Åx2"–ücˆE“‹ô ìºW &àTv1S_]Ø"¹ Ma^ó^íŽÛâÉm#8y:Á«‚|Lô'îÿÛßÙÉpÓµsqÕ¥½XµÂ¾O¶ïAûä!û^ö}¼sïfÓÓÞ=¬sŸX°|üc+°ryW¨ä/ÝsßøÎ w/¨gýšNüÊϬa·íÅ_ýã)—]ó7( }½ÀÿþÄÚØB ù铨¶{Ü×ɈW±DÐÚæ‚G «À(Î" ò@?g)`ZÎ[FÄÒuù;L…+¸ýÔœ(qNT\‚܉ŒZ7.°ýµÏîÂc÷ aÞü¾+pý+Öb|t }k?žÝvgFÁfæ/îÅÆËã¦W­Ç¢‹æÚ?eßg=õàaìyæN½8„é©ÌéïÆºK—àe¯ÙˆEËç€bѺ†ìûÁ]½ˆC{ÏâÜÉaŒ Oº¾¾þ.,^Õõöýî–ë–£wNü5AÛ<„û>¿SX×çþâ»í%+ûñîÿþrîØœœÆ¾'ìûø'pöØË¡b¸öØ–Ø÷™k/[‚Í×­Dµ³ U?Áï«g9ŒÛOàœ]ÞŒÝW½v_­Ø²Wݶó—©ûªÆ®–ùD©+'i:9éªK''äÃݘ±v5#d1ÖÖ¾xgb/ŽI|‡²\îN>LP¤âòsˆÉúœÜÆÈRœ³á Oœ‹^æˆX*ÞÚ'Þ*"Îûºgìorf¸åTœ8û,ë¾öƉõaeù+rx¯Ó‰3a3Ó¸nm~òÕKÜ×™1§.…'þÊU]øà+º"Ѝ-™[µÿzqýú^¼ó†>óÈy<ò‚ýp¬RiæÅø«Ì­ê¬rb¿v]/~ú5‹ÑÕÑ$ÒQµ0§»‚u‹;ñÚ+úð÷žÃ¾ÓÍO«Å8ÿUí¿¼|n»4|qßÑeaó².÷ïe›zð‡w…Ô‚esÝ^º4jñÁQušm·é:»?>zÇtÚÔé·iý’N¼áÊ9øÓožÅžãÓ ÑW¯W¾³<¶sÏõs¯]„kÖö„ê˜×ká%ö1çï¾]ÃøëûNsÅ9.?G å¬Îã+kWãÿ>ƒ>ÿ™Üõ1b¹‘ƒä9'ò¥â">¹•ÃGõ¹±eŒ¥v’ÛaD,ÈoËŠX«Ùçê™áxñSgìšxõ-—……,¶ ŽÌàüÐæ÷wÇŠû·¯>‹¿úÌ3˜œ ‹T§íÏc§GÜ¿ï=qý™­øÄÏÞ‚›®^©EÚê=~áîÇ3»Ãbš“gÆðͺ·¿t ~ë#7£¯;å­Zç€ûNãwþúa´æEmÈ~Àº{ÿY÷ï ßÜ‹«/^‚ßúðÍX»¼_\`„óèø4>ú÷aÛÞÓPš¢½FÄ’¬±d1÷BÓß4"ÙAÊuO&LÀ©ìb¦¼3"…}ëþcxû››‚çó½o[‚OþÝqçæˆ68G¼USk¸|K~ä]K0wN\tºxa‡ûwíUsðÖ7,Äç¿rÖ´ ðJ£m»GcB–Íëºq›X÷×ú.Þ¿žØ¼¡Ç}^àÜ»³À½÷Æõ=±[Ú©i†ÝûFÝ2k áW“ç Sc"Ž¢æ‹±ˆ0ô{:Uèç,LËyˈXZ¢.‡©p·Ÿš%ŽÂ‰ŠK;‘QëR–!ñ|qÿòÿ=¡óã!ß™#îß“ß=ŒW¾ùb¼ü› ãtøù³øÒ§·bh \Îà¹qløv=~wýÈK°zÝPùNÛŸc|ùY<ýÀAûy¼%NÙÎßþ§ðý»ŸÅKïØŒ^»1U?E‚qí{ìû>³­! ©›óÔ{êì†ì¿ýÛŽãѯîÁ-o»Ü´ÈrwܾŸýÎ?oÅH¤Ï‡í¾Û÷ؼðäQ¼ò‡^‚åk–¨h6·K»Z楮œ¤eè䤫.œwcÆÚÙ*0f¬M-|ñÎÄ>^“ø$e¹Ü,|˜   .HÅ%äç“õ9¹‘¤8g£þ: Ë•³²ŠÿJ ªûo§»âJÅœJ+ëàêqnç8ëé`ø±W,ŠˆXàŽãZÍÐ8‚–;®ìÃϽn1Wĵ¹6æ'n[ˆ·]7×-Ã[ý¤æ­,ÃÔ8¢Õ -|äµaKÔæ÷Vñ w,¢>xåÁ/˱8‘ß¶ &b‰Úe+{ñ“¯^哸þ/çÜÿÕ±ÉL¬oqÎZ»M{}XÄkS_¿zçb,î³í€ÿú#GÄÒUeøÍ»–ÄD,Q»ýò¹x»Ýß\¾N¿×êý$inãÿ>ƒ>ÿ™Üõ1b¹‘ƒä9'ò¥â">¹•ÃGõ¹±eŒ¥v’ÛaD,ÈoK‰X’ÆN`q?OlZu%A›±¸ýúŸ~þOOy"ËQ¢Ú_LUz=Þ1«Š3öìŸû÷á_¾²›_w‡}þ¯ØŽÕæŸÕ1Ÿø‹‡=‹£t­vÛEõúö[•.÷ ¯û=ìŠ]fjñ[óml_øÏ.WØGóbxgµš,ö€ýÀî'÷ÛžˆÅî ‡·e÷M³-½Þ¾ûó ¶í;ûÍoØøÁxaV‡ß†æ:ûñO_ÙéÆYîÊvvY½žÏá4Ř0"–ücˆE“‹ô åº'&àTv1S^ ÁN™À“[Ï„Žm^ß‹›¯›cßs‰_;+¤Áš"–×¼¢?ý£qE,Qs0?öÞ¥¸ëŽùÞ½qÍ»×Þ¶3þ™µq½} àÜgú÷žõú.Þ²ôõV°ryG�ëÝwo^Ç>»oãÓn»ýÖ„þ µ3"–0ZÛ\ãtú=*ôs–¦å¼E±$›Ý)ŒÓfÆÛfâíâX‹Õåï0®àöSs¢ÄQ8Qq)s3B]¤p{£¯#.þ¯Lvã3±Íù ¹ÿî½øÎ—÷ Ûÿâ|Ö)g@\ÎÌ4ÃWÿi+ŽTó…'bù÷¿x OÞ€+b‰ÚÔÄ ¾÷Ü÷…]¡òætõƒjÝ=¸º=ýýø¯¿{2&báÙøÈîû—­xüë{…¹;yp�÷üí1KМgßûÌVœ>Êï«V»Z楮œ¤eè䤫.œ?wcÆÚÑŒÅX[Zøâ‰}¼8&ñIÊr¹;Yø0A@\ŠKÈÏ!&ësr#HqA/bq—vÄ,Îk*ïõ@οö8Ž`…g–‹¾Ú,˯ˆ÷€î×,@wg¼L÷A™ýPÍ¢\¶¢ ï¼q~ì×\Η^'ÎOâØ¹ Lsn îzI?nÚÐÝx¿L^¿ü·W,vW*ñ˜Š­·«‚w¿tžûЯ!`'bq^%tãÆ^Pìæ-ópžà…Õ˾~¾(§æŠMÜ•k8°¿m ¹Mï¿¥Þ&O SóÅ?ï¿yžûº'ŠýàM‹±2ðz£&×™†ðGôµEÚó}þ3¹?êcÄr#Ï9â”\Ä'·røèâ¢>7JýEKí$7ÀˆX;ßÖ±¤ >súDü ýáÙ×þlúÔ¶áÞ‡y–ª#ZérE¨‹OÝ¿Šw̸ÔXñ/O»¯ Šóúî£Ï¹«¹8–žÞ9Ø´~/rØ9=]ñDOÐòÔ®“øôw ‘0ùOœÅoÿÕC˜rˆsÅ7Ý>ï 6¬]†k¯Ü€-ôûª³´þî_? çsçGñßÞç•í‹{¸£QÑ^#bÉ?ÖˆX4˜S¯±Hª®{2cNe3åÕ˜±­¯¯ŠÿüÚ‘X½õÎŘۇ†0…þùïÝ+^º¹o{ã¢Ø}²ó:¼“§'pü$ÿ>ùÎ×,Äõ×ô6~ðñüŒŒ†Å°}½U,¿¨#t/í[6oàßï:+µx÷}^[œ[\¼!þcˆgvx¯Ùmü8H0_˜q5_ŒˆE„¡ÝÓI1¾“~ÎRÀ´œ·Œˆ¥%êòw˜ Wpû©9Qâ(œ¨¸”¹‹YŠº°®{¾¼çÏy‚йö‡äZû¾«·¯›[ÞCß|÷ž•?=UÃ~z+¦&ù«Šmzº†oÚ÷ÇR¾þö_Ùƒ#ÏŸáæÌíÅæKÖ`Ãæ•è쌯4ºíûqp÷éFyN{V®^êþ‰¬î_²laˆÇ¡=§ñðÝÏÆž;?h\ºl–­X„ŽŽ¸¸õéo=çý{ù`¤ÓWŽÐÅyå’Êfì¾zè?·I1e]-ó‰RWNÒ2trÒU—NNÈŸ»1cíjæÕBÆÚÛŒˆ…^.HÅ%äç“õ9¹‘¤8Q;O¬ú2Â5æ~¹ÅDñÝ×yx+°j ¼#›w7³|'’8géóØsƒ8=8…®Îªû¥‘󀫻ZÁ_µ(Vë÷vÃg<†ÿ[_Wo¹qîº!|ð®çáÉýc®è¥þ+2^Ã7/ïÅþ“ãøçïÇÞcÎRÇ5\»~.~ü5«1¿/üñqݺ^ôvœÅØLÍæUqÛå¼Rèí7Ì‹•ëÔôõ§Ná›ÛÎÚ\§±raÞ~ÓRܰiÍ‹>š ^¿×¸>¯^?{˜x›¶¬èÅ 'Æð÷ǧMvÌõæâ'_· æ„Ûtƒý@²·ó Ʀ½/ò—õWðº+â¿·orþíûÇñðÞ{Û®ge>ðÊåX»¤]œ>ðþ}”ö|DŸÿLîú(7Ýœƒiç\6.â“[9|tqQŸ¥þ"¥v’`D,Èo;ˆXœ:|â@ìpÿœ,˜géTó~­µûù3øÇ/îòEÍsöeöC·}è ¸âÒÕî»¶||/þüïîÁ™sÞ°¥ÚcŒLâwÿòa|áÿ» sz;õòlbÒye]7~ø¯Â‡Þwz{¼ÏûÇžyÿ£/```Ôº«”Xøç¯ìÂ{Þx‰Í— ž,(7Ÿù¯Ý«y"”\²i>ñó?ˆMë–5p÷=¸¿þGŸw¿8tWm±ûjûsg°÷à9lY·PZïÀùQ7畎N¼ôÚ͸沵èéîÄù¡Q,œßKâlD,ùÇ‹>£ToD,b\&LÀ©ìb¦¼3"®n½=8vb?q·ÜØ\’ß‹¼ã®Eø‡;%}­l¨ ¿ã»í˼sI,ìÁGÏà _9bŽL{uôTð¦;VàÎ׆_øö;ã©íCîXÎç׎݃xéõ CgE•»÷øÎýáê•v[ø?l¹xSîûþyç­ôÙQ©aݾ¥yVµÌ¦ÆDEÍ#bah÷tRŒï¤Ÿ³0-ç­„"âøHcL²­ŸÉpLQ`D,ÄöSs¢ÄQ8Qqr5j]²`tÊ~ ÜÕÕÿ‰7ã寸Òý|œ±Ÿ{~ûOâŸÿé›ÞêÝú¾óå=øÑ_º9TÞSß?„ógFce¯X¹ïzïíØ¼e ¦§g°õé}øÂg¿ƒ¡1¨( MbëCÇ+• ÞþîÛðú7ߌªÿÃÏ‘á1üåŸÿ;žÝy „ÝöÐ!¬½Ì»¸âúuxým¯t·ÿ7>…ûÃ?ù课W^å½6ilz {Îît·'ÇgÜ× E;ïe¯¸oÏk0oÁ\wtt_ÿʃøÖÝ…pÝý,Ö]yªþódûïÙGaøl¼¯–­XŒ·¼ëvl¼x &í¾ÚµuîþÂw0r~LÚOeŒ]-ó‰RWNÒ2trÒU—NNÈŸ»1cílFÈb¬M-þ‰­¼ØdŸÄ¡,—»“…”Á©¸„üb²>'·1r€—C;›xzÇÜCâ__>þÜyüõ7ØƬ±š‹s3àü*ùÖ-}XÐWáÿ曇]]43:Éðoß?æŠN^yyóÜ⹸zUž:4!]áäÔ ýåÜ¿¿€ÆÛìp=7„±‰ƒøø;6…°Î*'ë—t`×qûá ûk2àêµ]¢ö¯ß{_zü”ûëm§Ì}ÇÆðG_>ˆŸ»s n½tdV«‰{<, âãNžŸÄÇ?÷‚+6ñÌÂ#û†0j·éwÞoÓÆ¥Øñ¢óÀÓû…Üí—öÅ^ùäÔô?¿øž90ì¯Ücáñ燰ûèþôã¢ùñ/ ë¯`r8[œòÒœèóŸÉýQ#–9˜vÎeã">¹•ÃGõ¹Qê/ÒXj'¹FÄ‚Üù¶‹ˆåÉ'ðåoïµwÂçá_²Ñû¬òíÿ}i—}–ï‰XÖ­ZŒ¿úƒÿ†9þ/ݺ:;ìkWãâËñŸýkLÖUér_3t÷w^À{î¼DÞV«Š·¾ñ|ôÇî€û¹23æÖyÓK6áO~ó‡ðã¿øwpöißzè Þþº‹‘›%ìÞw¿ñ*ÜpÓ­8xä,>…#ÇÏá÷~éX¶xžÝ$»=lÆ]‰åö[¯pÛõÈSÏù‘–»ÒÌÞ¾EZ¯…žÞ^üïß|?n¼fc˜îÏ©aÈ£“~píB9ObˆEŸQª7"1.&àTv1S^ ´î®÷÷?¿ú"n¸f‘ý]S rÃ5ýxäÉ!ìÚ;åzEî}¶w_õÒkçbþ¼ðcÎ'·žÃ§þeheÔÑq†Ïéæ÷wàÖ—6E4‹vâÊKúðÌŽ!·Þ­;ãB–‹7ôâ»ÂùI‚³bç–s…Ô¶lìs1–/dY¿¶ÕðôÈ‹c8sn Õj—÷¼Àin䑉ڭÂDEÍ#bah÷tRŒï¤Ÿ³0-ç­Ö±ëäÔÏd8¦(0"bû£éN£p¢â4ä.jÔºdÁ*èOüÔ]¸õåWbھߚžž´ŸYváõo¼“øìgî aîÀéã#X¼|N£ìm‰•¹dÉ<|üw~ýóš¯o½ýu×cÓæUøÚ¶)Ûÿ×Ù]Ňå.Œž®áè‹§qüèi¬ß´wþÀ­˜±yŽL8ÑèÓ‡w¼çvüþo~:TΙ#Þ}ÓO3µŒO7ËçT:>ãù'fš¸g?ŠÑÁ‰ô%7^Šý©·¸åNÌL¸ÿöôv»Â–¡a<ò@s•áqyö”+f©×»÷Ñx_-²ïwá7sûû¸—ß~½ÝÞUøßŸà÷UYcWË|¢Ô•€“´ œtÕ¥“ŠånÌX;š²kOcÒݸ‘Љ9”årw²ða‚€2¸ —ŸCLÖçä6FârhgÏBOüUqçG§ñWß8ŒéZ•ªó€Ïj¼ÚÈ7¬¿~ç?;á½þ xu‘ûÚ à›[O‡„,Ž]µ¦Ou¹0Aç~kÛYWÄR©tÀ_„Æ]yûáQ=;ŽU‹Â¿&[ÐWqî<ÀlΊ(W¬Š?Ôs„$w?yÚk—óz¿c˜}ƒóO÷Ã˶Ìw—~äYÚï2ƒö­g\‹åÔï~ÕeÿgÍ`ëÁ93ŽÕ‹ãmò–yv*Öp5çtí;gìøJµÓYî»i‡ÆgÜUZ>ö¦µq"²ñ–â|DŸÿLîú±ÜÈÁ´s.ñÉ­>º¸¨ÏR‘ÆR;É 0"äÎw¶‰XŽ‹'›Â†©éNžÅw;‚/~sfÐkÔÛÞx]¶ãRzú¸ýa¾-úÉ~ ætÏ€ì¦G½/•:æaãêÕxënÀçï~´ ®tã~»>gõ™9Ÿ?ñ¾Ûí§i'À&Ž¡!¦éèÇÕ—lÀM×nÂcO?èÀã;Næ'dI‘›Uk6bÕæeÀMƒ3öõÄÐ.ûßÀûÃ; 3º|³ý¹n¸¦®×î§Ÿzÿk=ËÔ ÝÿÃvˆýE #4ªMËC‘ôƒ‹hÊy‚{aŠXÊû”5"1.&àTv1S^ µ®®**ÎçÂù|íÛÇñ¶;W†üï}ÛRüîŸpEµÅ[Ñý×оäÊø}òÝßx±ñz@o5Uÿ³Â>ôíï Y»â’>wU°}÷°ûCŠJàþtóÆ>÷ó»æ¯È²eS_(~Çîó¸ò²ùîö¼þ\´¬'OM»«¹ná¼Vèéƒ{}—VňXB{…Î1.õy+BRGèç,LËyˈXZ¢.‡©p·?šîÔ8 '*NCîdF­Kdz•+—àe·\Ž£Cûq~âŒcaQÏRÜñÆ›ðå/=ˆ±Ñ°˜ãÀžÓ®Å){ld'ÅÊ}ë;^…î9U>ÿœ':±ÿëïœUëVã¶×\‡oãq>WŸpOw7.¹ò*åòf;ŽÅ©ÑãNVíû¸ ‹¯n=:4Ñ觉³îŸ³ËX|%îãÃG1}æ\˜‡ÓÎíñW ¿ñ-/ÇÙ±38:|S5ï—ŒUû~ÿ¢¾åxåko Y;b÷ÕÚ+/r·Çí¾:{,ÞWw¾íUèì«â¹»¯¦¼¾šß=+׬Æ-¯¾ßûV¼¯Ê»Z楮œ¤eè䤫.œP,wcÆÚÕŒÅXÛ›òB‘%Œc ?â7’ݸOȇ Êà‚T\B~1YŸ“Û9@ŠË¡M<S—±§^ôD,Þ¯Ô\Á‡óÐÍY½Ã¾˜ß°,þÔÿù¾-HbKí‡jίü_}ñY>3áŠX¬ª·"Œ'Œ±°Ùß!˜Œ Yz;¼‡yÞâ%5¬Z_‰äñçÁœ˜ºÅ¯ßYnùÜø´û £ËVÅ@F´Q› £žžtE,•寧‚šMåØ¹É˜¥¯ÓrE9–å YÖ,Ž·éÁ=çíò:}ÑQÕ­ºâ¬tcÇ<òü°+j©ȧ=Ñç?“û£>F,7r0íœËÆE|r+‡..ês£Ô_¤±ÔNrŒˆ¹ó+±|ákÛð…¯>Åw:_ UÂbŠ;o¿/½z)ب'dyþóJ8+ô!ã,|ËõkÁFöÁ]aÄåcÿM³wÇpÛÍ—†…,vìîÎ+?«6¯¿ÈþüµÖ ;¦†ì˜çqë ‡…,vFö¿8Š\,enØÄI—¯óZ%«Òã®HÃFbxxÇNàÔÙQ91„§vÄOžtÅ+A«¡“TÏk_~9ØÝÿÓ͇ˆª!aD,ùÇK±fD,b\&LÀ©ìb¦¼3"N„é¨Ö€ÁðûNáÖ›cÙ’æ}îâ…¸ãÕ q÷=§15SVä;†ÚÌ ÷µ=ŸøïW ‰-]ÒÙHêÈè ž?0‚‹«®8¼æÏ«b`л>¸xcSÈrâÔ8žÚz¶!dqýzpâÄ ËrÓ†ÞX}[w y"fKt¯Ð¹ Æ¥>oEHêÈýœ¥€i9oKKÔåï0®àöGÓGáDÅiĘ̀uQËÚÕ×lı‘œ8À1œ?é>[½üòõxò‰=¡˜s'Æå>_ÑÒyÎyÕuðÂÀnûôtƒÀ™™S®¨åº·p…,A’3ö³Ïö Û¾7ì²ÿz:z0:=ŠÃ/bðÜ8FÆíÇÜú÷>ù"§(âgÄ99yx †ý_ÿ’Øè™¦hà8¿¯.½vvŸõûÊ'prô†§FpÕõ[øB÷Â箺p’–¡““®ºtrB±Ükg3BcmmÊ –0Ž)üˆßLHvã>!&(ƒ Rq ù9Äd}Nncä�).‡v6ñô ò  ŒN{b‹j§ý0«ÃYÅsÔf0§ÓBOgYm^oª§“ÓpE,_óÓœXËè¾®¨{ý‘cGÎNºmj´Í)¯VÃLÍ~pWcxñìDLÈÂÈ^»&gàŠXÜÕSœ69¿°ƒ'¦á¶É-Ïn™ÛtwÄû~ÿ© o…¿Lçñ£åþJ›¬áÄÀ$V,솒rŠó}þ3¹?êcÄr#Óιl\Ä'·røèâ¢>7JýEKí$7ÀˆX;ßYû:!÷sÉŠCÕ_e¥é»üâ•øÕŸý°ÉcÇOÅÄ-‡^ë "– ÕƱaEä‹(›îø$ùÁq,šÿÍ¥dÿ­Z¾È[‰%ëÚÌV-‹Çž9? í–%73“îßÙÓ'ðõïïÇcÛãù#8y6þ^p«Âù쳪 Ø’>û‹½‰À/ᜈ%ÿX#b)ÖŒˆEŒË„ 8•]Ì”WcFÄ¢ÀÉšmVIq^'ðÏŸ?Œ_üéÍ!Ì·-ÆœÅĸd5.çÕ¾÷êë³ï“»³ß'÷Ïñ“º¿.·ùmÝ9²8¶q]žÜ:ŒU+º0wNósmßóCxþ@ø °MëzñÀÃç¢Ø´>¼zËðÈ4ž?8n÷AgsUÕȯÚCfD,a´¶¹ Æ¥>oEHêÈýœ¥€i9oKKÔåï0®àöGÓGáDÅéÊÀ¨uXFÔ-±4cÎŒÀ²åñ×´ 7ïeG㟣óçÏÁXå\HÄR/{|zsõAÅ×yö;:5Œûïà³§±÷éc8yxgOŒ`zj*³"åñ¶yõÖmlt“ãò;)61Ò색áxyóì¾À¹ˆ¥Îctj ö‘ø–:ïtÕ•€“´ œtÕ¥“Êí'cÆÚÍŒÅXÛšò¢‡%Œc ?â7’ݸOȇ Êà‚T\B~1YŸ“Û9@ŠË¡Ê:IVAÅyE#ЍÖ_¿ãŒ z®L:ëïæ–\é8ª~˪y<1»"LÅ{}çë §(wÕËÛ鬯1ãS5¯mVÕ ’åŠcœ/ ¬Ê Æ&3¶O•§ú²ÍîJ7ο²êÖ-ú×íyÖ]å…3<á‰cà d¼™ÎÊ5Ž0Çé?çC+ §l¥8Ñç?“û£>F,7r0íœËÆE|r+‡..ês£Ô_¤±ÔNrŒˆ¹óµ"Çì/P•¯òᬊõÞ·ÝŒŸþÑס“ $Ƨœ/ŽÂ=0·¯˜>/,oNW`ÙæÝ Æ'øÑê¥÷v;âÍ)N¬g}]qÑÊä”èWè%˜Ï÷ß¾þ,þús[1>}8Y_ÙÆÿ•=Q´Â3kj V¯‹¤\D»P΄X#b)ÖŒˆEŒË„ 8•]Ì”WcFÄ¢ÀQfw¿i¹«s>»o?~7߸¨áïì°p×KñOŸ;$,Ã̓}’êÖðc·ÎNËçæ|ºT°mç ÞqWønnÓú<ñÌ .Þ¶î}aûŒbr²†®.Ïæ }îkt—-é ‰^Ûj—Íj–}Yñ??ˆ¥¨sSÈpÞŠÔ‘ú9KÓrÞj]‹¬~Æó!Þ^!N’ûRêòw˜ Wpû£éN£p¢ârÈ]¨¼@²ºD‹‹¹¿Ë€Ü¬Ž!'ç¬γâÿÇz§J-þ`o_7ÎO4 ‹–0Q¯ Äž?;†¯ýã38~`�iM8Ƹé =÷Ê33µFðúª»·Âq2~_µÌ¼ÓUWNÒ2trÒU—NN(·ŸŒkG3BcmiÊ‹–0Ž)üQŸäÊ'äÃepA*.!?‡˜¬ÏÉmŒ ÅåÐNYIÞŠã-é[XÍ×ÛLMñYüâ?=ëú‡ÌjŠT¼*†ÆûEíòœw‘ÏÀˆ&»cr¿ªxtœ¯‰µ…#>™‘´Æ¯‚3v'9wisº;ü¶y_r1WÄRóê±ÿúzÒéE±ú/ëÜ_ï»ý_Ü®8§Þ&§‹&k|OWÕ¾ù³\ü_Òy Š»<tO§¸MîØ -sÈX±È..ês£ÔôçªÄÆR;É$ˆ¹óÕ"9¯+˜×ß‹u«–ຫ7àÎ×\ƒ5+ÛO¨FÁFÃ_†õôÄ—ù±D1ñC±á!_ä¢kŸï{â+ªû÷ü`àWÚœ¦Æ—1îꢽŠ'wóù~îž=ø³ö_åd^hÙ7^Ö¯^âöûU—®Á“Û÷ãžû·!•Õ?Š!aD,ùÇ ²Õ™ÐŒˆEŒË„ 8•]Ì”WcFÄ¢ÀQ§Œwÿêß?U:ð¹/¿ˆ«.Ÿ‡¹sš*o¾aîþÆ1WØÙ«°z'Ûÿ›˜äÿòûWo›}ó~$Ò<£1ÿÏ»OönÇ*îfjÕæj1¶ãȱIœ=7‰E׿:+«8â”-ÿÀÞóÜ0jö=ã¾ýøâ’yî±u£¯×ÂÆuü× ÕïƒëýÁŸ/ᣭ4_ŒˆE„¡ÝÓI1¾“~ÎRÀ´œ·ôˆX¨çˆ´­Ÿñ|ˆ·Wˆ“ä¾”ºü¦ÂÜþh^Sã(œ¨8͹ëä<ß87JªËyÕϪ2ø684bûú¸œ‰Åtwu58uuÅ_“>22næM sr~x< bÓ¾ðÃà™¸ÃyFº|Åb,[¾«×-Æ«ðþäsÒòDíÅôtóï•û? Êpl Ó8#îvww¼¯ÆFÇ1=3‹«o‹úŠWWáóNW] 8IËÐÉIW]:9¡Ü~2f¬]ÍYŒ]Pýˆù$¦*—»Cˆòa‚€2¸ —ŸCLÖçä6Fâ4·Så³dqÜ`ÿÁ™»øE˜ŸÁä´ý/ðŠç¸óúššû€®ÖˆqËf¬1–˜_\}QïažÂ,Oðá¾µ¡þê÷˜8¤þk„ó£3X½(ì[½¸Ûó…1üµXœ×,–¿‚§ÞŽ´Æê‚WÀb5’`ɾ c^܈Ý÷¼|.ß…“#Í_á;ï7÷ʲܼ-îïkD,©¹ˆOnåðÑÅ…Éã2ž´Kí$“4"äηD,ýàëñþ¼U œ<6î¼—;<I—/éAOœĨýP®¯‡þ~áйX[»»;°`žó%UsÅ•hÿ>wðT£^žíÝ:vlñÂþ_ž N@dƒÃãÈl~½“S3ø¿ÿ¾Í°Tœ‡†^ ßôš—à½o¹¯¿ÈûòÏ·½/G&S #bÉ?ÖˆX­Î„fD,b\&LÀ©ìb¦¼3".é” 9FF§ð¹ÿ<о]Ã_©XxÓë–all&&d ÚÈèth%—‹Mæä©Iû_oUÑèK ¹tïÉœ•C½ÕEÝÕ6Ý{^ærÛºk¯¾uI#rÝê^ûΛáâ€eph/ž˜tž»ö 5„,N1›Ö÷býÚ°e¦Æ°}÷pCjD,(x.ˆqº ížNŠñôs–¦å¼eD,B\‘uù;L…+¸ýѼ¦ÆQ8Qq9änþ‚ð«ÐÛ¹õ^ý¶uÜqËÛ³íD,¶«³Ý}¨±iéÜ8zø ®ÁR.'góÈ¡ø}ä¼�×þùq1åÐà(F‡&Ñ;7,ܨ}ò˜Zœ±õƒ1Ëûþõ?ôZ\}ífôõõ4ÊU–ÞPãzçôº?ü˜œ ܃Û× K—/BÕ]Yœ‡ø|Ÿ™°ŸxB–¾~Î]ì¾™D÷œ.ngªù¢„y§«®œ¤eè䤫.œPn?3ÖΦgíMcÆfE?b>‰ƒ©Êåîâ„|˜   .HÅ%äç“õ9¹‘¤8ÍíÌäKrÁác߇8þÂʹYºlM?¬j‡û*¢Šýo¥ÒáþëëììÄ‚þnÿxÕóU:üÕV,BÅãQf‡ÏÄ¿X»aã\Tœ7+¸‰®‹l¼í%ýØtQ/ä\ÒùÄ úxœša8u>þÚ‡k×ö5Ä;¾^&Ã%+z0§»Ê+6Õùˆ>ÿ™Üõ1b¹‘ƒiç\6.â“[9|tqQE©ÉN)™Œ¥v’I rçÛŽ+±4ÍYØ~˜53 LÞ 6~¼IºiÝBtw…+ÎÒÂ>uTXúw;;vùÅ«ìÏ·fù¼þ=ufÛ÷œæévÁw?;¾qí’ß9½ñ_ˆ=wð D¶}>1É®çÏ`hÌy ÃÁkáM/Ù„ßþØÛ±eÃrûÈŒ×ç“gÀF퇚çÏ"µ)†„±äkD,ÈVgB3"1.&àTv1S^‹—xÊø+²Xõ{T«?1€]{Â_Ý|Ã"ttÈÖ8õD)ŒE‹Ç¥Ïo–_é ýuÚ_~-˜ßÓ¸¶\¡f¥!®qøáYv†ùtvVpÙ%}¡UZ¶ïtW>­ ê T‚Ʋì{~cã¬QCóÕBÍf±H+…Í׃ 8U¹4"†vO'ÅøNú9KÓrÞš"–F%œqÛf_}[’ûh[ ©Ëßa*\Áíæ55ŽÂ‰ŠË)w›6-CÔNžÄ£÷—aÛ¹“£xè¾ý±Ø ›W„ÊfàÚ³;^ÄÔÄ4—ÓÐùqzáT,fùÊíe+úC?8pcíNÚ»5,® V¿ïiñ}dwhOü~ï§?öƒxÙ­W¢¯·ãÓãœÀÉ‘cØsl²<QûE¸šýßšõËØý~»NïÀ®3ÞßÎ3Ííí'·ã‰Ozû§=ßsçö6Š]$諃ÛOÄyøÛ‡¶—óE óNW] 8IËÐÉIW]:9¡uúɘ±v4#d1vAXôC æ“8˜ª\î!Nȇ Êà‚T\B~1YŸ“Û9@ŠÓÜδ ²>ç™å¯„R_ÁäɆb˜·¿ô"÷ÝÚî8WÄÒéŠXœ‡ro¼v1þê¿mÂÿù‘øù;Wâ-öƒÀÕ‹º¯ö‘-¯’FÄbùeî8WÛ/éïÄ]×γï6jÞ뎜¥œÝ«¯>ðòÅ®ÈEÌ%O¥,×ïw‡Ú®£ñ6½þšX8Çþ8­1·=ÎÕdÍÞ¶ìßõ²Å’‚ɇ“Í #bÄ">º¸¨ÏR?¿¸|Œ¥v’y rçÛV"–©³`ƒOEþžÚ6²lâ˜}~Ž+UvUgpë["…Zø¿ŸÛŽ‘±©XuûŸÇ—ï{>vü¶[.µËñ£EVÁŸÿ¿§Ü•M¢ö¥{ŸÃó‡âï¿éšµ!¾KÆøø¶Ãxz÷ÉØñǶǃOBZ›ž¿^i`xÊ_‰¥iΫ„\áÊÐn°óÛì÷º"–‘ãx詇Kþ±FÄ‚ìŸ; j5"1.&àTv1S^‹GÉCÔ,XM1‹Uu…#νì?á¨û*¡ºutT0§O² ´¿¢ÉÓ;ÎÇ\oyã T«UW¤âþ¨Ãÿq‡SׯZ†?û½Kñ'Ÿ¸?óÁµxóK°jyos•÷_ »÷Žbj*ü™xû+–„ö·íjˆ_Çù¡æ5Ħ s°nUXÈòÌŽÁF ˆ}ifD,´¶¹ Æ¥>oEHêÈýœ¥€i9oÍ"‹ ¾Ø6#à¡<V`]þSáŠäć©qNT\޹»êÚ5ÜW¿~ý »ñ½¯?oß?Å>yq`ïYüãŸ?†±‘øãn¹å L×fâ"6:<ïܽËé¾ÿÜ»osló¥+¸®¾*Ö¬‹pþÆsœ •çØ±ƒç±ãQþ}d79¿¯]|Ñ||;N?ƒ=gwàÀùçplø(¶=¶O^^ 'çfdzr&†›®Mãê.‰aùú.ŒM¹Bš1ûoÜÿs¶Ÿ¼o7þáãÿ…üí¯ã«ŸzÞ³'^<ÓàÑÙ[ÅÊ5ñ¾Úf߯ MÆÆÉéCç±ï ù=wáóNW] 8IËÐÉIW]:9¡uúɘ±v5#d1Ööýˆù$¦*—»Cˆòa‚€2¸ —ŸCLÖçä6Fâ4·3Ü4ú%ƒ¬ÏÅð'pt}w÷ F&Â7 —­êÃÏ¿q–Íëj<xs–Q¼ãêùxû ]Ì¢¹¸Þ~ˆöŽ`n·'b©‹d’òšÕ|UÐÓûGp~t:y÷Ëã·.ÀÊùUôÚ÷›–TñKoXŠ›6ÍM]mrSŒGžÙmºW|¹È¾® >ñÖؼ¬¬VCÍþsVíüè‹qíº>rñZ憱b‘]\ÔçF©Ÿ_\ Æ2¹ëfD,Èo{¯ÄB©3²?3ŽþÁ[P >-³·ÁG~ç^<½ë¤+<Â7¿ùÝ{1ùh[´`îºýR·pù§ª…íÏÅG~ï^<¹ó‡'qèØþú³[ñ‡ÿ˜í¯àå¼óûµ7o »rËEœr+øÙÿyþöóÛðè¶c®€å“ÿò~þïw_§ ²î.þ«¿û„·òŒóúÇ/Z€èúî#;pÆùuÝLóWðçÎãWþì ˆ_y”ÖŒˆ%ÿX#bAöÏ$ƈÊЧN 8#b‘C¿* Ÿ,º•"T%Pa¬Š¿jJ§ÏLãîoPV náÁGÏa$ò¥Ú%›çâg>¸Ë–t6î“€¼æ‹ðoðÄ( tâÚ«úñÖ7.ÁܾŠO ÿÇ LM»÷…WY¹îê…M6x§ÿš ‡?³c¶ïlþøäÊKç¡§'üYûÌŽ¡X&Ü,&l¥ÈQÔ|1"†vO'ÅøNú9KÓrÞÊIÄBGiɶÇå±ëòw˜ W$'Î8L£p¢ârÎ]¥gozÓMˆšóc¶o}y/þèWîÅçþîiWØò¥ÿ·õ»ßÇ?üé£8;‹Yºl^úÊ-vƒØ»ï�îþ—í8qtcö½é±CçñE»®¿ÃnÞ²ó—u7Ê·ïÕ^ñê—ÄpCçÆñoŸ|{Ÿ9î Zíýg¾ÿþWcfF>Qï‚óbÇï¾ç>œ?‹æÝ4;9Ù÷Ô1<ò}òšÿ ·/þÚùíîw_ï3=1áÁæës¯½e úæô„°Çž?‹o~ú©Ðkj6‘ÀSßxÎÝÇÁ'ðä=ûìr›âÓÑé1¼ì•ñ¾rð÷üõ#8dßk;‚–a{ïC‡pï§GMÒW…Ï;]u%à$-C'']uéä„Öé'cÆÚÙ:`ÌX[ôC æ“8˜ª\î!Nȇ Êà‚T\B~1YŸ“Û9@ŠÓÜÎpÓè— ²>4Cœ\ÎRÇ#“ ÷íñ±7­ Á¯[?Çý;3<щšûªžÞ®øX[áÙãΗKéD,ª¾±|Œsÿù‡OáC¯Yýáêyî_ÔǦ1¯7ï&ÅxŒ˜÷KÁŠÛ[[bç‘\±:ü‹ø5‹»ðïZaóŸÁÄ4Ãâ¹Þ+”üñQ±,#¾#ËX”Æ2b¹‘ƒiç\6.â“[9|tqQŸ¥~~q%Ëä®›± w¾FÄÂ;XÛúñ#ïzþásßk¶:±û…³ø©O|Ûí7Öü0vž`6aöîoýüÛ0·Ë~8©Ðmô÷÷bx¨†­{Nãÿ{oØiy¯ü Ú¿ãå˜Û= ~¼wÙ¦EX³j1 ¼NÈþâlrz ÿÅ‘2+xåÍ—ãGÅË8;ÖÛÝùóúp~0¼êد}òûîgÙûî¼ ý¡k±iÝ2ÌéíÆÈX³¡'Nà¿x7®¿ü",]Ô‡SöÃÂGwØ÷ìŒVUþºÀ¤fD,ùÇ ²îh6Õýƒê~'æÊ€3"i1ôË¡òÉ¢[)r@Å©ò Îó¹ê­~ gÅÖá®ØyÏ}§ðÒëbõJÅg‰¿¢‹}j>ÿðo‡ð3Ü‚\sE¿ûwöÜFÇkX¼°½=ñûä»G°oÿ¸Ëù§usï¯ã¼^èêËçq)<`Ä®›¹«É8í°oÙ±u× ^þ²E\üÉÓ8~rÊ®¦Ë_÷3°Jª±„ÑÚæ‚G «ÀÐîé¤ßI?g)`ZÎ[FÄ"ıëòw˜ W$'Î8L£p¢â ÈÝðä�~ð¯ÄöíûñÜsqÉØÈv>©bvuvà£{;Æj繜¢6gn/F†Ç°íá#îŸÌœÏ¯w½÷v›kó‡xÎÊ%·¼ê2|ãkâô©ð* çNŽàËÿt¬œ¹î½ë·Žz?m¾d5žÝq0ä»ÿKÛ±ûɃX²zž›“pæØ0„ÆiÿJû¾sÏÎð*'Ïm;êþ¹þÍ‹p×O¿Ô™êÃè.üíŸ!„?´ë¤û7wAºz;1tvÌ}=SÔ6]±ë·¬ÄØô˜[žÓW×½â2|çžGqöt¸¯Oàþÿï«z~¸M+rÞéª+'i:9éªK''´`?3Ö¦fVd1Ö¶ýˆù$¦*—»Cˆòa‚€2¸ —ŸCLÖçä6Fâ4·3Ü4úe‚¬ÏÅÍú.÷döƒµ'öâ?=É uDް‚'b9zvsïI°¤_ Ç@]ÄRàwïŽóxtßyPlû¡a|o×95H=ѸR˜û+9ÿsö_G¹+Í86¯·Š¥ýW$}ö¡“Øwl©x²lcQˈåF¦sÙ¸ˆOnåðÑÅE}n”úùÅ•`,“»nFÄ‚Üù‹Ä5q?ñþÛqû­—7:ç|W°Rñ¿È‚·bŠ{ÌëÍŠ}²ÿȾ·Ü°Á}½ŽÊ6¯¿?ðúíbº½òÝz,÷u=ÑWö\{ÕzüØ»^a?™‹|.Nà×~æbË-[•n¯Œú¯»íí•+–ãÇÞ}ÔVÃkn½"~Øn¯³ËŽçN»»ÎãÞûÖ›Ãûšdht ÷?q_øÆ^÷_GÄRíèÁ;î|)t™±äkD,Èþ¹£ÙT÷ªû˜+ΈX¤ÅÐ/‡ È'‹n¥È§Ê=õ{]˽óYÅ?~ö°"Vã?W|bÇ<½}_þú1.zÑÂN¬^Ñͱ¼x|Ÿú×íOÄf¿Y×YضSü%Üöúk…üûufÿíxvÄý…>ÏžÙ>è_Xá÷'K­m.ˆqº ížNŠñôù¢€i9oÍN‹¨ªh[˜Çe6Xuù;L…+’g¦ÆQ8QqåÎYedxú4~ã7~—]¶ilÎÜüò¯½ë6.ÅÀØ)a]A»ý5×aõ𥠨]o½ë.^‚‰™ñPyÃ3øéŸ{;÷ÕHQ³ìûÜû‰»¸¾`?Ýüê+\ÁKÔNÄ·`×#G"–+_²Ë.Z(.3°}ÓË/GUòîùÓG9?=~W^1Þô¶Wr±ÎÊ)g qE,ËW-Ň>òn»®jhœœŸÀû»¯:i}õÞç÷U¡óNW] 8IËÐÉIW]:9¡ûɘ±66#d1Ö–ýˆù$¦*—»Cˆòa‚€2¸ —ŸCLÖçä6Fâ4·3Ü4úe‚¬Ïe‹¢4Bü‡[–ÿîo«ÚaÿUñÅÇÎàOî>ˆ¡±i(9Ø…}ÿÙóø­?dãg",97nßXbÒõ~•ªû@ñÏ¿~ßÞ.ÿ‚ïùcøßwð°"åCi2X²TøÝ_à{m:=\ïÿÛó8|f2{dß >÷ýãJž"G–±(eÄr#Óιl\Ä'·røèâ¢>7JýüâD»9Ëä®›± w¾m!bÉ“ï̪Ó'ñ¿ñüìÝa?°ò—ÿ¯‹Yª}ö¿ÎŸ³Ä±×› ôáÏ>ñ~|à¯�FíÏ/65~ùÃoÂ-7\jÝc–÷Ùÿöº«¿³ôê[/ÇŸýöûmN§âåÎŒâ†+Và¿ðƒèî ®`f¹å¸åÚ-[‚OþÎÐß=Eâõ“?ôJ¬Y¹8tØÇT{ñìaïõB3cøñw¿o}ýõTÅÅX•.OSíBOo?~çß…k¯\fD,ùÇ ùsG³I߉¹2àŒˆEZ ýr¨€|²èVŠPqª<¨»/|v÷^¯SÿáF‡ûwàð8î{ढË{e®óyäܯYøò='ðÉÿû<††i÷É?qÿãÏžÃÐÈLƒýÌX§œ97£Çø÷Ûvû"Òª+b©Øcã Ïíáâ× ÁÍQý߈X"hmsAŒ#ÐU`h÷tRŒï¤Ÿ³0-ç-#b☢ uù;L…+’g¦ÆQ8QqçîôèQT{fðÛŸøa¼ÿ‡_ç S(æœë_vËåøÃ?þI\~åz|ÞmÂü¬£³‚_øïïÁ²‹ ˯؟ïx׫ñŽ÷¼'FŽ„Ë³7ÎŒŸÂÚ KñË¿þ>,\4OZÎ|ðMØ|Ù*> @Ò²ûác¿ò>,X ~U¼c[.]‹Ÿø™·»¯ö“רž»´ïÿà›…b–Éñi žõ~4謠rhð�Þüƒ¯Â‡áÝ\aMÔñÉ·\…_úíÿ†Z÷4†&‡CNŠõKñ§m %}eŽ¿ûGß„õ[VIëË}Þéš' 8IËÐÉIW]:9¡uûɘ±v5ój!cíi,Ñaî‹4VòÂòa‚€2¸ —ŸCLÖçä6Fâ4·3Ü´àU»÷àŒkί±ìÿ,…X‘__…q¿ÿp®.?t—-®2<}` ?û齸õ’y¸vÃ<¬[Úƒ}nèðø NNbç¡a<¸ç<ŽL»­ŽŠ¿ü²à£᭮bY͇Œ–ÿK9þ7õUK꿊óOÖ¦þöÛÇqßös¸ãšE¸bÍ\,šÛ‰‰é^<;ž={ž9ƒi{_dÍ›2‹ÕxŸ9dâ+ZŽW6ãÄx°æ«…àˆˆì/üŽØ2?úé}xÙÅý¸ýÊEX»¤‹û;16UÃÁSãø¶ÝÖûv8ï„åtç•C¼aáK9yþ¨ËL;ç²qŸÜÊᣋ‹úÜ(õó‹íæ`õ‘ËÔ0‚ rçkD,DØø1W¸á¼Îç ¯¾_ýÖSxìéç±ÿÐ) ¹«¯,²ÐmÙ¸·Þx Þxû5èéîÆÚOÏiõ²it±W�óµ{ŸÁÝß~Ï8ÑÑ ,Z8×\¶o}Ãõ¸é%›ì2‡À†ùbH6vØ­ÿÊKWãß¿öyê9œ8u335÷µC¯¾ùr¼÷-7cn¯…#û€b {§ðÏþa|ö+ã{=‹ƒ‡Oc|b ýý=X³|Î ŽcÉ‚^T¦Ná׿-xÃmרüŸÂÓ;âì¹aw¥·‹–ÎÇË®Ýl×} V-_€oÝû ºbE~Œˆ%ÿX#bA¶:s0Ù=[ÈEpFÄ"-†~9T@>Yt+E¨8Uš~ÿ¾Px¿¾/kÞó9«²Ô`Õ:ð_=Žk¯^`wqÂëb÷ÆÓ½×õ’׉­;‡ñË¿½/½a!®¹b>Ö®êÅüyî—W##Ó8uf»ö á‘'ÎáØÉIWŒY©ø÷Üþ°š«:¯ Zµ"ü…¥#–9xxÜö{«¢9w5—›ó:¢!lÙþro|¢†=Ϲ‚«¾*Kcé·F ûV &àT u#bah÷tRŒï¤Ÿ³0-ç-#b☢ uù;L…+’g¦ÆQ8Qq%äΙ%G÷aå¼Í¸ë^†;^=}äYlÛú<8ŽÓ§1aßGuT+˜7¿+W-Áe—¯Ã-·^á®H2S›Á‘óû06="ÎÄìüÅ=ø_ô!ü××ÁcïÆÉ“¨Ùe-Yº�W\µw¼áF,_¹§Gcdj(žûYæá¡°ù’KðúaÜwï“xòÑ=8rø$¦&§l®sqÙëð†7ß‚5k—aÏñ]™Sæ™±“زáJüþŸþ4îÿÖ“x橽8qì FíûçÞ¾^¬Ýpn~Å5xé-WbȾg®INTAÏ™ñÓ¸ù¶—`íÆ¸÷žÇ°o÷! œtï9ûæôb嚥˜™šiän`Üþ,ïxW]·¿÷çÅíÄögöáÈ¡nÄ-¶ûê’+6à†›¯pWcŸÇ g_`n®kØ?ð.Þr >þGÆ÷¿ó$¶>¾ÇŽx}Õ?o..¶szû·Ø\–aDZ]¤vå2ïtÍ“œ¤eè䤫.œÐºýdÌX;áwíJœÅÙ–ýk öë•À¿õ¿ª¬ùs|Ž,²rÝu7>ä80@{……±ö±Z­ùå·saâü}à“ÇpÂs:Sø¿™ìÆ}Läc‚€2¸ —ŸCLÖçä6Fâ4·3Ü4Öø×¹°unf¦§P›™DmzÚÍ«û¸®ÚJ‡ó0Ìþ«v4…#ÌÓÛ;qµûozÂý—Õ¼_¹í::PuÞ—]­zK+×_?`Ç:K3{Ì37Þ®ÏþsÊröëã?jîÒÌî/ê/GÌRñø¸1v3.i·MÎq÷WpÕN÷ÏáQB½ÞÚôdïó⇊®XÃæZ›™ ñtnž¼guþƒÊŠ· ³;'œ6Öˬ÷£Óί¼}¾µšSÿ”ßgÌ볪Ç×YÆ-ÆÁÌL¹½_³[ Œåò ´iFÐ&çíÞ©£þݽW÷´ãö{ó×òV]ÌS.vûÿâƒ[°~iøçGþá�Ž:+J»m æ8ÅXù£>F,7r0íœËÆE|r+‡..ês£ÔÏ/Ž»{ð/_Ñü…§o•J²…øxŸ¯ûx«:PõÁá›± w¾í&b±ú6‘_DM›8¡Œ¥šÕ}нÊ…+™ýù2z@(b¹ï‰³øµ?ý^èðµW¬Äß|üev;6Øí˜/.{꘻ʋXà‰®E°z×6?s¢m­M‚<çö»5/òÚ ©ó¶ïù_8_¨õoñ_5ûs{`khó_c׿Bs>çþzΆ°kì¨ý-Þ‰p½ ®Žqî)#b) ÖˆXèqëèî\>WücÆéP†>uzdÀ‹´ee‰r•1Ÿ,º•"Tœ*õþeõûeûžlƹ/«M¹÷F®¹«®t¢ÚÑåÝ›ú+“¸òE÷^±æÎ—P,›q»÷ˆîŠ-þý§³"˜ïÖéܯÖê÷iÓn9î=2ï>¹þ# ¿<G\æƒæ=¿Ï£~è݇ú«Ç8÷îþ*2˜™:Ö»ouç“Oîà=î_”ý[Â|1"FqI<_2b ë¼U¬ˆå©û^“Ëçê§¿õúfµ‚\„¶%¹¶•Épºêòw˜ W$'Î8L£p¢âJÏ…E½Ù+PµªÊ2œ8‡“Ç1åÜ« pßûâa|ïÛ;Bq¯˵¸ùë°vþt¹«„rúÚ>prô(N“椷s.ÖÎÛ„Žú«m9í?:t6×Ë—¼$ëˆpvž~:TfOÇl˜¿Î3YANF¦†ñÂÀ>lYtyƒ¿çgØzòIn_,îY‚5ýëC7,AÜÎÓÛ1a?Ëúæw/ÀºyëQ­tðƒ»gÇÏâààAÌ8Ïtãdn×\lš¿‰Û¶:æÀùƒ8g÷ÕµË^ON¹Ožx<FÄ‚âêÒÉ ­ÝOÇþû72®k[°À{æøÔS߸:ûAÿß™Èóÿ­þXàßèû²£ÛQ“ù\3+²» Œ)äY$ù�áÆ1‘Opõƒ2¸ —ŸCLÖç‰ÎZLâSrQÄ&îó0’ù«¦¸BæW¼‡gîõ‚û�¬ê¯^[Ž ‡óÀ«^–ëò†¡âiú‚¯ýq—Lv(ø!ŽüÃYºØr9˳ZSÈâük~ç/u\±4–Õ¼r«>?νTêb«!4©¿'Ü—°z=Ì»0ò^%ä?DtW0að‘éôê¨Uì‡xU÷aCàwwî¯â| ˆ[G•ÁïG«±<tsæ‹f˜[‡Ç©ù£ú¯ñœíŠßŒùm ƒü6ùíuû'ب €ª~ùÍ«n]v½KæVqÉòn<ñÂÆ'}1‹ÿ�Ö Õ÷w`ÍâîPö'§^<?esì ¯ ÃÒŘ?êcÄr#Óιl\Ä'·røèâ¢>7JýüâD»å‘ˆ± w¾f%¤2W3yVçbûN©¨ö¸Ÿ®Ù_Œ9¯×Áôy`ê,¸BåÅSÍ‘t-†eÿ¹Â§|§ìéa°ÉÓîj,J³9²éXÝK=qûKp;ë3öü©»'á 9+Ý >õ§Á†öxåuÎ÷yU¼2jãîu jSn�=äõ‘ÿ:×öùAí²Ž°‡Ÿ²·m] Õõ ̈Xò5"d«3“ݳ…\Ôé‘gD,Òb”•%ÊUÆ|²èVŠPqª<ðüÞ½TÅ»'„÷ëi÷~. æ®ÊâÜ¿YõVÇ|!‹w³í­PŠjHãþëÜú÷¬35G8Ró>{ýÏìú}&êÿ?«þ«á÷Z¸—vžX¾ð¥êÝ?×ÛÁ¼òìRo×½omâ]Žƒ´½•拱ˆ0´{:)ÆwÒÏY ˜–óV±"âðJmѶ0¶%¹¶•Épºêòw˜ W$'Î8L£p¢âZ"w gÆŽãìøIôw.Äœ®ùè®ö¡ÓùA£}Žw~ˆ8cß?MÎŒ»+¤ Ú÷O“¾ðB™cŽMØ÷yϟۉŽËÑoßguU»Ý皎(fhrgÇNؘqeNF§†±÷ìv,ìY†ùÝ mÎ=î+r¦ìûQ‡§#„›CÕâmå묳çì,²Ë›×½À.¯Û’8BŽÑ©œ?cÿõÎ2L]^}ãÌØi›Ï–ö]„¹]ýv¿z+³¹åN†VP«ÇŸÀöÓÛl.‹í¶ÍG¯W„O„ãôá ÝWŸQ»Á`áÉal;½Ëz—Ùýµ=;š±‘cn9•ŽØx¶Q×¼Ó5Op’–¡““®ºtrÂìè'cÆÚÕŒÅXÛS85VòÂ^¼°â‚T\B~1YŸ“Û9@ŠÓÜÎpÓÂH毮âý Ëñuº¨êqÞñæªu1K#ÎIÔ˜'qlY5/®xWv…óË,W¯\_³Qsêª?œ‹üÚŒ9åùÛÜòüÕOšâË(Ÿ¿Ÿ$·üª'àh,Ùì½~Ç)‡¡ÃÒ4êje*¾ˆ¥ùz$wuË["ºf“¯Tš_üYAᇳå–ìk_tã dà?xtú‘5ʱ"«þþÔšÝ÷Uæ>ĬϹºà¥Ñ&æÇ¢Þ×VÛԧ؇W/êÄ;®ïÇ%+º°´ßûÝqxÿç›Çq|`Êo³×„õ˺ð‘×]{§ëcÏÙ7Pp—®®÷k¢¹aD,‚XäÀGõ¹Qêç'Ú-ψDŒˆ¹ómW }icÕ˦À&ŽÛO ù¯öÑ"�˜<fÿ%Ž ZmÂî“#jÌÀS|_´^çKÂq»ÍãÇ¡4û(›–c&ÏÙm<'¯×М ó3"–ücˆÙêÌÁd÷l!uzdÀ‹´ee‰r•1Ÿ,º•"Tœ*a¿…Æ+Zíû)GZsD,uahý‡V%$ q‹bõØŠÿ?ÿþU?ñÖ@­4„.  ü8÷GæRi¬ðâŽì�ÉÆNÜ×U÷­×ýÔ9YÞýšS—Ë­Zq¹4üuANàžÑªÿ°Þ=h5ÛíݳVCmö»PØ·Z0§j¨‹C»§“b|'ýœ¥€i9oµ™ˆE’S–ÇeDdªËßa*\‘œ8ã05ŽÂ‰Šk±Ü9« NœÁù‰3ÐɉgÎ Ö'G^tÿ„eø²œÌØå8¯ rþDeÌØ÷iÛN=Aê§éÚ NŽsÿdœvŸÙžhŒ;‚šCƒåÎùÌ?=vÊnÛ©Du ˳ó{|ä¸û'Â9–Ç=!¯ Ð7ïtÍ“œ¤eè䤫.œ0;úɘ±v6#d1ÖÖÆF•|€pã˜ÈÇepA*.!?‡˜¬ÏÉmŒ Åing¸iŒës%ª+˜pÄÎ#2W×Rf5WUi”R_Y¥±”±#Êh.C‰º% ðUîǻª#T©Ù—gôâ¦Î%¸:K“óë÷1Výá`½]õ•Jê¢_¸ã–[ux–§óñ K Ìõx¾ŠÛð K«þ¼¯ù¯>p™/ ˆ]ÜÞ°X³á½ÌÉ«®ÒÝ8"ç¡ûK7Ö¨§Ñ&f…ÄHnLÕ ‰‘x4‘wfhW¯éÁ¼ÞfÛ¯\Ó‡¿ù±8xzǧÐaÇ,›ß‰µ‹ãïqŸœ®á3ž ýr°ÞT‘ÉÆbÌõ1b¹‘ƒiç\6.â“[9|tqQŸ¥~~q¢ÝòŒHĈX;ßv±´J¬vÀl‡9ÇKþ±FÄ‚luj6ÙuL*LFœ±H‹QVVd>Yt+E¨8UD~ï>«æÝ“U*s¼ÕXù¤y¿ÌCXãHR+ªÀ¹Çmþ`¢)b©ßÞJg̳8±ð_ïa×øq¯œz]¨¯ÜâÔï®ÄZ ”ááßsú?7ñ_{[As=–ú=-BõµÒ|1"†vO'ÅøNú9KÓrÞj/‹¬¾Ð6#à˜¢ŒÈLuù;L…+’g¦ÆQ8Qq­–;J])8‰¬P!Wb?‰p…Î'*®ÈÜQêJÀIZ†NN­˜̾~2f¬ÍYŒµ­1…ƒQc% Ü8&ò1A@\ŠKÈÏ!&ësr#HqšÛnû‚_pbc=áB‚‘˜¥îþÄÌ% ¸úIœK¸n·*æ Z˜§êh”S÷5… Ígžßsù;ûê •Xœ˜z]1‹óo5Ð?u>6ûˆyJ™pL(.ØNÀ8\"ý«þŠ#¬³ù&æŠU¼W1…ëòúÈ ¼Ê)(ÐñøybžÞ­‰at²†?úÚqüÖ[W «Ã ½~i·û'²é†ßûâ!>;Jgê™´c1æú±ÜÈÁ´s.ñÉ­>º¸¨ÏR?$ç�¨Ï×…‘ˆ± w¾FÄ‚ôFˆ5"–|cˆ%ÿX#bA¶:ó0FtS§Gœ±H‹Ñ›«ŒùdÑ­9 âTyû½8÷¼Î½ª·% ø€Ðku8Yþªžõ×…îq\…%(>i®ŠRõô%±^Cý‡QKãïXõÕK-æ·¬ÙN«~¸mÜ_FêöÊjòn¥ùbD," ížNŠñôs–¦å¼eD,BS”9©.‡©pErâŒÃÔ8 '*®ÕrG©+'‘ S¡ó‰Š+2w”ºp’–¡“S+泯ŸŒkW3BcmiLá`ÔXÉ7މ|LP¤âòsˆÉúœÜÆÈRœæv†›ÆÄ¾º5ÞƒÀ/°Â>~}Í_k¹b‹ÀC<nœ(ÿA¡‡_Žãk>àC¸lDÆc=¾†¸¨Äâ<Ì þj-ÀÛ³ø_°új(A¡I`+Ç|uA ‡G½­¬.$ ñõ¢š}ådÅW? ôaóéM|pŒ;þGÆðKŸ9„ŸyÝ2lYÑ Š={tûícxîä¬ŽÎÆŠ,ò~ î0¹?ê“83Ï &ñ¥â">¹•ÃG&K|>’ø@÷i7beFÄ‚Üù Ò!ÖˆXò5"–ücˆÙê,Ád×:\Wœ±H‹QV–(WóÉ¢[)r@Å©ò ÎAý~§~ zŸåÄáÍUVXãGà–шbˆÄ6ïÜ ãÖÞÜ —£Á8÷œˆ× _Tä¢"PÔ|1"†vO'ÅøNú9KÓrÞ*YÄBoi‰¶ÇeDdªËßa*\‘œ8ã05ŽÂ‰ŠkµÜQêÊÈIfm•*ŽÀ©ÐùDÅéšwºêJÀIZ†NN­˜̾~2f¬ÍYŒ]8Æ9Ù \ 2މ|LP¤âòsˆ1I¹‘¤8Íí 7‰}Ü8‹û ‰ çZªü×W~a~[!–•¼Ï-Å8€ÿ… ðQŽGËâ´32£ýJ!QM Ïé¿>É¡3ø¥ÝKWtã–-ópéÊ9îë„æöx«ƒ£Ó8;2…퇆ñÄ CØvhÔ}¯ºU­zÿ:Ëc#°jKc‡ÉýQS´Qp0íœËÆE<¸Ëᣋ “Ç%>I|¼8ÕÒeÄzŒˆ¹ó5"¤7B¬±äkD,ùÇ Ê㛵JêôÈ€3"i1ÊÊå*c>Yt+E¨8Uè9pÌÃdá#-BLäþ3Ó|±$¼CKhå5¢æ‹±ˆ0´{:)Æw&›/˜–ó–±qLQFä@¦ºü¦Âɉ3Sã(œ¨¸VË¥®ŒœdÖV9¡âœ OTœ®y§«®œ¤eèäÔŠ9Á,í'cÆÚØŒÅØ…aœ“½�Â*ã˜ÈÇepA*.!?‡“‘Û9@ŠÓÜÎpÓ˜ØÇ‹Ë•‹Ä—€‹çÊ8™ÄÇ‹“rA*. ¿`�å>U`*Þ{ÖÕ¥w›Àî#'¼¾Ž›úë¥ì+ÕN7Ϊv¸K\ÃyG¼S€RÄÄäþ¨/‡>Ï/ÿâÁ]úxÌÄE=¥~~q¢Ý¸O5t±#bAî|ˆé›V�pûÍñØ×^>836´©m¶aB¬±äkD,(oÖ*©Ó#ΈX¤Å(+K”«ŒùdÑ­9 âTy ç@“]„Pò 3W®`¾05&â(j¾‹C»§“b|g~ó…[”’ŽùBÉA\¬ÊˆX æÄ‡©qNT\«åŽRWFNïøá—ã'>ô¶ÐñS#/âäè‹í•*ŽÀ©ÐùDÅéšwºêJÀIZ†NN­˜ÌÒ~2f¬ÍÍYŒµ¿qNö¨Œc"”Á©¸„übLDncä�)Ns;ÃMcb/.W._.ž+ãxd/NÊ©¸4ü‚”÷xôދ·TtÅ}UƒÅjîk‡Â{ïZ·|ÑŠ+bq+qk&÷G}9ôy~ùîÒÇc&.ê±(õó‹íÆ}ª ¤Ëˆõ rçkD,Ho„X³K¾±FÄ’¬± <¾Y«¤N 8#b‘£¬,Q®2æ“E·R䀊SåžLv<BɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD," ížNŠñùÍnQJB:æ %IpyX°*#bšg¦ÆQ8Qq­–;J]:9ÆiV愊#p*t>Qqºæ®ºp’–¡“S+æ³´Ÿ¢kC3Bcímœ“½�Â*ã˜ÈÇepA*.!?‡“‘Û9@ŠÓÜÎpÓ˜ØÇ‹Ë•‹Ä—€‹çÊ8™ÄÇ‹“rA*. ¿`�å>Ý× 1E–Š»Y±ÿcVÕÞ®µZ£Ÿëqîj,u‹+‚q,Þ*,õ•Z„\ŒˆE‹|Çc&.ê±(õó‹íÆ}ª ¤Ëˆõ rçkD,Ho„ØÌ€©°óO%ËRç,Š5"–ücˆåñÍZ%uzdÀ‹´ee‰r•1Ÿ,º•"Tœ*ô(`²‹ðàJtæJ€#Ð̦ÆDEÍ#bah÷tRŒïÌo¾p‹RÒ1_(9H‚ËÂU Ôœ8ã05ŽÂ‰ŠkµÜQêÒÄéØðA¼8tN³2'TS¡ó‰ŠÓ5ïtÕ•€“´ œZ1'˜¥ý=hÌX›š²k_ãœì.PÇD>&(ƒ Rq ù9Ę$ˆÜÆÈRœæv†›ÆÄ>^\®\$¾\<WÆñÈ$>^œ” Rqiø¨°ñè Pœ>õD*ο°s·ùqŽðÅÁX¡W I¹‹ ùŽÇL\ÔcQêç'ÚûT¨`3"äÎ׈XÞ±f%–|cˆ%ÿX#bAy|³VIpFÄ"-FYY¢\eÌ'‹n¥È§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8âÌdFÄ5'Î8L£p¢âZ-w”ºJà4+sBÅ8:Ÿ¨¸"sG©+'i:9µbN0KûI€3f¬ÍYŒµ§NâL¸Cˆc"”Á©¸„übLDncä�)Ns;ÃMcb/.W._.ž+ãxd/NÊ©¸4ü‚TÎx´¼/ˆ,_ÔR…ÛxÎGîJ.ðE00"–øAž§ >º¸¨Ç¢ÔÏ/N´÷©&PÁfD,ȯ± ½bˆ%ßX#bÉ?ÖˆXP߬UR§Gœ±H‹QV–(WóÉ¢[)r@Å©ò@Ï&»¡äAg®8]Á|ajLÄQÔ|1"†vO'ÅøÎüæ ·(%!ó…’*Ž8Ó§o›I|ˆ÷­Çuqx•Î)A?)qNT‘»´Œ¢ë*Ó¬Ì GàTè|¢âŠÌ¥®œ¤eèäÔŠ9Á,í'Θ±v5#d1Ö–Æ’ø% Ü8&ò1A�¡LîN.HÅ%äçc’ r#HqšÛnûxq¹r‘øpñ\Ç#“øxqR.HÅ¥á  RÆcà R|y ¼UZxæ¬Äy™&÷G}9ôy~ùîÒÇc&.ê±(õó‹íÆ}IÎG˜± w¾FÄ‚ôFˆ5"–|cˆ%ÿX#bAy|³VIpFÄ"-FYY¢\eÌ'‹n¥È§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8âÌdL²m+“ᘢ ÀˆX¨œ¨8"wiE×U§Y™*ŽÀ©ÐùDÅ™;J] 8IËÐÉ©s‚YÚOœ1cílFÈbì‚3&Ü‘Ÿü™`D,„29HqšÛnûxq¹r‘øpñ\Ç#“øxqR.HÅ¥á  RÆ£,ÿœ•Vq1"A,ò™¸¨Ç¢ÔÏ/N´÷%9`FÄ‚Üù Ò!ÖˆXò5"–ücˆåñÍjÔé‘gD,Òb”•É®KSa$8ÝJ‘*N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0´{:)Æwæ7_¸E) é˜/”PqÄ!¨Õo›I|ˆ÷­Çuù;L…+’g¦ÆQ8QqDîÒ2Š®«N³2'TS¡ó‰Š+2w”ºp’–¡“S+æ³´Ÿ8cÆÚÑŒÅØeL¸#?á3 ÀˆXerâ4·3Ü4&öñârå"ñ%àâ¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±Èw<f⢋R?¿8ÑnÜ—t<ælFÄ‚Üù Ò!ÖˆXò5"–ücˆåô¯£N 8#b‘£¬Lv]š #Á±èVŠPqª<Ðs €É.ƒG(yЙ+Ž@W0_˜q5_ŒˆE„¡ÝÓI1¾3¿ùÂ-JIHÇ|¡ä€Š#A­ÆxÛLâC¼o…8F¨Ëßa*\‘œ8ã05ŽÂ‰Š#r—–Qt]%pš•9¡âœ OT\‘¹£Ô•€“´ œZ1'˜¥ýDÀ3Ö®f„,Æ.cÂù ŸI�FÄB(“s€§¹á¦1±—+‰/Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆE¾ã1õX”úùʼnv㾤ã1g3"äÎ׈XÞ±FÄ’o¬±äkD,(§s6ÙµBœ±H‹QV&».M…‘àXt+E¨8Uè9PÀdáÁ#”<èÌ•�G +˜/L‰8Šš/FÄ"ÂÐîé¤ß™ß|á¥$¤c¾Pr@ÅQr¥Ûo›I|ˆ÷­Çuù;L…+’g¦ÆQ8QqDîÒ2Š®«N³2'TS¡ó‰Š+2w”ºp’–¡“S+æ³´Ÿ8cÆÚÙŒÅØaL¸#?á3 ÀˆXerâ4·3Ü4&öñârå"ñ%àâ¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±Èw<f⢋R?¿8ÑnÜ—t<ælFÄ‚Üù Ò!ÖˆXò5"–ücˆåôoÎ&»VH‚3"i1ÊÊd×¥©0‹n¥È§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8J®tãm3‰ñ¾â¡.‡©pErâŒÃÔ8 '*ŽÈ]ZFÑu•ÀiV愊#p*t>QqEæŽRWNÒ2trjÅœ`–öSœ1cmjFÈb¬í wä'y& ¡LÎRœæv†›ÆÄ>^\®\$¾\<WÆñÈ$>^œ” Rqiø¨”ñ˜$ÿI¹‹ ùŽÇL\ÔcQêç'ÚûRœò4#bAî|ˆékD,ùÆKþ±FÄ‚rú7g“]+$Á‹´ee²ëÒT ŽE·R䀊SåžLv<BɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD," ížNŠñùÍnQJB:æ %T%WyZ´­ŒçC¼o…8É8‹Žo¦Âɉ3Sã(œ¨8"wiE×U§Y™*ŽÀ©ÐùDÅ™;J] 8IËÐÉ©s‚YÚO)83ÖŽf„,ÆÚÚ˜pG~~—}� ¡LÎRœæv†›ÆÄ>^\®\$¾\<WÆñÈ$>^œ” Rqiø¨”ñ˜$ÿI¹‹ ùŽÇL\ÔcQêç'ÚûRœò4#bAî|ˆékD,ùÆKþ±FÄ‚rú7g“]+$Á‹´ee²ëÒT ŽE·R䀊SåžLv<BɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD," ížNŠñùÍnQJB:æ %Tœ*WÄ!šÚ¢me<â}+ÄIÆYt|3®HNœq˜GáDŹKË(º®8ÍÊœPqN…Î'*®ÈÜQêJÀIZ†NN­˜ÌÒ~JÁɘ±v5#d1Ö¶Æ„;òó»ìÀˆXerâ4·3Ü4&öñârå"ñ%àâ¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±Èw<f⢋R?¿8Ñnܧù|”‹e­0m|–zˈ%Æ Ò!ÖˆXò5"–ücˆåôoÎ&»VH‚3"i1ÊÊd×¥©0‹n¥È§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8U®ˆC4µEÛÊx>ÄûVˆ“Œ³èøf*\‘œ8ã05ŽÂ‰Š#r—–Qt]%pš•9¡âœ OT\‘¹£Ô•€“´ œZ1'˜¥ý”‚“1cílFÈb¬- wäçwÙ€±Êä Åing¸iLìãÅåÊEâKÀÅseLâãÅI¹ —†_0€JIòŸ”‹±b‘ïxÌÄE=¥~~q¢Ý¸Oóù(ËZaÚø,õ–KŒ3"¤7B¬±äkD,ùÇ ÊéßœMv­gD,Òb”•É®KSa$8ÝJ‘*N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0´{:)Æwæ7_¸E) é˜/”Pqª\‡hvãÌ™Ø6“øêÛ’qßL…+’g¦ÆQ8QqDîÒ2Š®«N³2'TS¡ó‰Š+2w”ºp’–¡“S+æ³´Ÿ2r2f¬ÍYŒµ·1énÜÇD>& ”ÉÝÉ©¸„übLDncä�)Ns;ÃMcb/.W._.ž+ãxd/NÊ©¸4ü‚TÊxL’ÿ¤\ŒˆE‹|Çc&.ê±(õó‹íÆ}šÏG¹XÖ ÓÆg©·ŒXbœ± ½bˆ%ßX#bÉ?ÖˆXPNÿb³˜ìZ! ΈX¤Å(+“]—¦ÂHp,º•"Tœ*ô(`²‹ðàJtæJ€#Ð̦ÆDEÍ#bah÷tRŒïÌo¾p‹RÒ1_(9 âT¹"ÑìÆ™3±m&ñÕ·%ã,:¾™ W$'Î8L£p¢âˆÜ¥e]W œfeN¨8§BçWdî(u%à$-C'§VÌ fi?eädÌX»š²k_cÒݸ‰|L@(“»“… Rq ù9Ę$ˆÜÆÈRœæv†›ÆÄ>^\®\$¾\<WÆñÈ$>^œ” Rqiø¨”ñ˜$ÿI¹‹ ùŽÇL\ÔcQêç'Úû4Ÿtš©7µ¥ÏRo±Ä8#bAz#ÄK¾±FÄ’¬± œþ%Äj3ê4â^;©ûJv !ÅD™0§²[™òj̈X8Uè9PÀdáÁ#”<èÌ•�G +˜/L‰8Šš/FÄ"ÂÐîé¤ß™ß|á¥$¤c¾Pr@Å©rE¢ZŒIö£ýÆD8¦(#°ÃT8¦¨K''Fh?GáDŹKË(º®8ÍÊœPqN…Î'*®ÈÜQêJÀIZ†NN­˜ÌÒ~ÊÈɘ±v6#d1֞Ƥ»qù˜ €P&w' ¤âòsˆ1I¹‘¤8Íí 7‰}¼¸\¹H| ¸x®Œã‘I|¼8)¤âÒð P)ã1Iþ“r1"A,ò™¸¨Ç¢ÔÏ/N´÷i>i7•¥-#KÝeÄ㌈ékD,ùÆKþ±FÄ‚rú—«Í¨Óˆ{í¤î+Ù5„qdœÊneÊ«1#bQàTy ç@“]„Pò 3W®`¾05&â(j¾‹C»§“b|g~ó…[”’ŽùBɧÊqˆæb,ºÍ$¾ú6S”Øa*SÔ¥“g¦ÆQ8QqDîÒ2Š®«N³2'TS¡ó‰Š+2w”ºp’–¡“S+æ³´Ÿ4r2f¬ÍYŒµ½1•‰|L@(“»“… Rq ù9Ę$ˆÜÆÈRœæv†›ÆÄ>^\®\$¾\<WÆñÈ$>^œ” Rqiø¨”ñ˜$ÿI¹‹ ùŽÇL\ÔcQêç'Úû4ŸZÒÒÎÒÐ2b‰qFÄ‚ôFˆ5"–|cˆ%ÿX#bA9ýKˆÕfÔiĽvR÷•ìBЉ82aNe·2åÕ˜±(pª<Ðs €É.ƒG(yЙ+Ž@W0_˜q5_ŒˆE„¡ÝÓI1¾3¿ùÂ-JIHÇ|¡ä€ŠSåŠznËÃXt›I|õm¦(#°ÃT8¦¨K''Î8L£p¢âˆÜ¥e]W œfeN¨8§BçWdî(u%à$-C'§VÌ fi?iädÌX»š²kkc*ù˜ €P&w' ¤âòsˆ1I¹‘¤8Íí 7‰}¼¸\¹H| ¸x®Œã‘I|¼8)¤âÒð P)ã1Iþ“r1"A,ò™¸¨Ç¢ÔÏ/N´÷i>µ¤¥%œ¥¡eÄ㌈ékD,ùÆKþ±FÄ‚rú—[„É®)¼Cê¾’]CH1G&LÀ©ìV¦¼3"N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0´{:)Æwæ7_¸E) é˜/”Pqª\QÏmy‹n3‰¯¾Íev˜ Çuéäć©qNT‘»´Œ¢ë*Ó¬Ì GàTè|¢âŠÌ¥®œ¤eèäÔŠ9Á,í'œŒkg3BcmkLåc"Êäîdá‚T\B~1& "·1r€§¹á¦1±—+‰/Ï•q<2‰'å‚T\~Á�*e<&ÉR.FÄ"ˆE¾ã1õX”úùʼnvã¾<ÏG­biIeiL±Ä8#bAz#ÄK¾±FÄ’¬± œþ%Äa²k ﺯd×RLÄ‘ p*»•)¯ÆŒˆESåžLv<BɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD," ížNŠñùÍnQJB:æ %Tœ*WÔs[Æ¢ÛLâ«o3E¦Â1E]:9qÆaj…Gä.-£èºJà4+sBÅ8:Ÿ¨¸"sG©+'i:9µbN0KûI#§Ø 4f¬ÍÌYŒµ¥1•‰|L@(“»“… Rq ù9Ę$ˆÜÆÈRœæv†›ÆÄ>^\®\$¾\<WÆñÈ$>^œ” Rqiø¨”ñ˜$ÿI¹‹ ùŽÇL\ÔcQêç'Úûò<µŠ¥%•¥1eÄ㌈ékD,ùÆKþ±FÄ‚rú—[„É®)¼Cê¾’]CH1G&LÀ©ìV¦¼3"N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0´{:)Æwæ7_¸E) é˜/”Pqª\eÎ&c’:CÛ’qßL…cŠºtrâŒÃÔ8 '*ŽÈ]ZFÑu•ÀiV愊#p*t>QqEæŽRWNÒ2trjÅœ`–ö“FN¼qiÌX»™²» ,úö1A€üÀ wqLâKÁ%äçc’ r#HqšÛnûxq¹r‘øpñ\Ç#“øxqR.HÅ¥á  RÆc’ü'åbD,‚Xä;3qQE©Ÿ_œh7îËó|Ô*––T–Æ”KŒ3"¤7B¬±äkD,ùÇ Êé_Bl&»¦ð©ûJv !ÅD™0§²[™òj̈X8Uè9PÀdáÁ#”<èÌ•�G +˜/L‰8Šš/FÄ"ÂÐîé¤ß™ß|á¥$¤c¾Pr@Å©r•9šŒIê mKÆYt|3Ž)êÒɉ3Sã(œ¨8"wiE×U§Y™*ŽÀ©ÐùDÅ™;J] 8IËÐÉ©s‚YÚO9ñÆ¥1cíhFÈb삱è@ØÇò&Ü!Ä1‰/—ŸCŒI‚ÈmŒ Åing¸iLìãÅåÊEâKÀÅseLâãÅI¹ —†_0€JIòŸ”‹±b‘ïxÌÄE=¥~~q¢Ý¸¯Àsci––FúeÄ㌈ékD,ùÆKþ±FÄ‚rú—[„É®)¼Cê¾’]CH1G&LÀ©ìV¦¼3"N•z0ÙExð%:s%Àè æ Sc"Ž¢æ‹±ˆ0´{:)Æwæ7_¸E) é˜/”Pqª\eÎ&c’:CÛ’qßL…cŠºtrâŒÃÔ8 '*ŽÈ]ZFÑu•ÀiV愊#p*t>QqEæŽRWNÒ2trjÅœ`–ö“FN¼qiÌX»š²» ,úö1A€üÀ wqLâKÁ%äçc’ r#HqšÛnûxq¹r‘øpñ\Ç#“øxqR.HÅ¥á  RÆc’ü'åbD,‚Xä;3qQE©Ÿ_œh7î+ðÜX𥥑…~±Ä8#bAz#ÄK¾±FÄ’¬± œþ%ÄæmLy€sÀŨ W]÷dÆœÊneÊ«1#bQàTy ç@# RrtæJ€£Í)^ÁL‰8Šš/FÄ"ÂÐîé¤ß™ß|á¥$¤c¾Pr@Å©r•9:MPgh[2΢㛩pLQ—NNœq˜GáDŹKË(º®8ÍÊœPqN…Î'*®ÈÜQêJÀIZ†NN­˜ÌÒ~ÒÈI6ŸŒkG3BcmoÑ€° ä�L¸Cˆc_ .!?‡“‘Û9@ŠÓÜÎpÓ˜ØÇ‹Ë•‹Ä—€‹çÊ8™ÄÇ‹“rA*. ¿`�•2“ä?)#bÄ"ßñ˜‰‹z,JýüâD»q_çÆÒ,-,ôˈ%Æ Ò!ÖˆXò5"–ücˆåô/!¶pã^;1F]–êº'3&àTv+S^‹§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8U®Òå€8°3m3.šwî6SÔ9‰g¦ÆQ8QqDîÒ2Š®«N³2'TS¡ó‰Š+2w”ºp’–¡“S+æ³´Ÿ4r’Í'cÆÚÕ*0fl–›e‰OF?�Â>&�0á!ŽI|)¸„übLDncä�)Ns;ÃMcb/.W._.ž+ãxd/NÊ©¸4ü‚TÊxL’ÿ¤\ŒˆE‹|Çc&.ê±(õó‹íÆ}ž£&û¬Ô£<IèŽ++–gD,Ho„X#bÉ7ÖˆXò5"”Ó¿„X•iÿ\å^;1F]–êº'3&àTv+S^‹§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8U®Ò倥ës•!\Ch[2΢㛩pL^F4—™8qÆaj…Gä.-£èºJà4+sBÅ8:Ÿ¨¸"sG©+'i:9µbN0KûI#'Ù|ŠZªgºÆŒµ¨™YŒµ­E?�Â>&�0á!ŽI|)¸„übLDncä�)Ns;ÃMcb/.W._.ž+ãxd/NÊ©¸4ü‚TÊxL’ÿ¤\ŒˆE‹|Çc&.ê±(õó‹íÆ}-rnÌÕÒVœ…p±Ä8#bAz#ÄK¾±FÄ’¬± œþ%ÄjÂëu_É®!¤˜ˆ#&àTv+S^‹§Ê= ˜ì"<x„’¹àtó…x ]Â|1"†vO'ÅøÎüæ ·(%!ó…’*N•«t9 lM¬ÍˆXˆœ¨8"wiE×U§Y™*ŽÀ©ÐùDÅ™;J] 8IËÐÉ©s‚YÚO9‘æ“1cmjfEcmiŒÕ„gp#b!”É9@ŠÓÜÎpÓ˜ØÇ‹Ë•‹Ä—€‹çÊ8™ÄÇ‹“rA*. ¿`�•2“ä?)#bÄ"ßñ˜‰‹z,JýüâD»q_ÑçÆ_1T¶Ê,Tˈ%Æ Ò!ÖˆXò5"–ücˆåô/!–gµü>Vm:5Î1u_É®!¤˜ˆ#&àTvS^‹§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8U®Òå pÆÌñ~µ^6 ‹`ÛѼs·™¼Œh.…8 'Î8L£p¢âˆÜ¥e]W œfeN¨8§BçWdî(u%à$-C'§VÌ fi?i䤜O9~®3Ö f„,Æf½ñ–Éš™çbˆ…P&ç�)Ns;ÃMcb/.W.YZ.ž+ãxd/NÊ©¸4ü‚TÊxL’ÿ¤\ŒˆE‹|Çc&.ê±(õó‹íÆ}eœg⟺–jŸœTKWV,1ΈXÞ±FÄ’o¬±äkD,(§ ±"Ÿˆöéú\™ží‹´ee²ëÒT ŽE·R䀊SåžLv<BɃÎ\ pº‚ùÂÔ˜ˆ£¨ùbD," ížNŠñùÍnQJB:æ %Tœ*Wérv²ÚD ¡ësur¢ªßˆXˆœ¨8"wiE×U§Y™*ŽÀ©ÐùDÅ™;J] 8IËÐÉ©s‚YÚO9‘æÓTüÇæÕBÆÚÉŒÅX[Úøð¹Ø1#b!”É9@ŠÓÜÎpÓ˜ØÇ‹Ë•‹Ä—€‹çÊ8™ÄÇ‹“rA*. ¿`�•2“ä?)#bÄ"ßñ˜‰‹z,JýüâD»q_IçÆÚØ�ò²³R ,m\Y±Ä8#bAz#ÄK¾±FÄ’¬± œþ%ÄÊâÎ M /;¨JÝW²k)&âÈ„ 8•ÝÊ”WcFÄ¢À©ò@Ï&»¡äAg®8]Á|ajLÄQÔ|1"†vO'ÅøÎüæ ·(%!ó…’*N•«t9ˆ;§§ò»_>?Ù¬N2΢㛩pL^F4—B…g¦ÆQ8QqDîÒ2Š®«N³2'TS¡ó‰Š+2w”ºp’–¡“S+æ³´Ÿ4r¢Î'62 cÆÚÙŒÅX[Úȹc¡}#b!”É9@ŠÓÜÎpÓ˜ØÇ‹Ë•‹Ä—€‹çÊ8™ÄÇ‹“rA*. ¿`�•2“ä?)#bÄ"ßñ˜‰‹z,JýüâD»q_‰çÆé¡ãÈËŽWLµ´qeÅ㌈ékD,ùÆKþ±FÄ‚rú—«Š;rz yÙðàq¿*u_É®!¤˜ˆ#&àTv+S^‹§Ê= ˜ì"<x„’¹àtó…©1GQóňXDÚ=ã;ó›/Ü¢”„tÌJ¨8U®Òå îtþ™?¼ìÌ ouR#b!r¢âˆÜ¥e]W œfeN¨8§BçWdî(u%à$-C'§VÌ fi?iä”d>ÕÎñßNaÌX»˜²kK;|cÛˆXerâ4·3Ü4&öñârå"ñ%àâ¹2ŽG&ññâ¤\ŠKÃ/@¥ŒÇ$ùOÊňX±Èw<f⢋R?¿8ÑnÜWò¹qúÜäeûöŠ+¦XÚ¸²b‰qFÄ‚ôFˆ5"–|cˆ%ÿX#bA9ýKˆ¥Äí=2Œ¼làì~‹´ee²ëÒT ŽE·R䀊SåžLv<BɃÎ\ pº‚ù¢¾†Ž:Šš/FÄ"ÂÐîé¤ß™ß|á¥$¤c¾Pr@Å©r•.qgýÈøèäeÇ •Gä.-£èºJà4+sBÅ8:Ÿ¨¸"sG©+'i:9µbN0KûI#§¤óiæD~÷«ÆŒµ‚!‹±¶2çÝoÎëßÎÚáî ¡LÎRœæv†›ÆÄ>^\®\$¾\<WÆñÈ$>^œ” Rqiø¨”ñ˜$ÿI¹‹ ùŽÇL\ÔcQêç'ÚûZàÜ8yr—ûY¨ó}¨õÏ×mÏžSŸ$D–6®¬Xbœ± ½bˆ%ßX#bÉ?ÖˆXPNÿb©q[_8—Ûçê黤u Ñ»˜iœÊneÊ«1#bQàTy ç@“]„Pò 3W®`¾Ð®¡Ë˜/FÄ"ÂÐîé¤ß™ß|á¥$¤c¾Pr@Å©r•.qg3:ôlnŸ«÷ˆ˜ÄÆ7SᘼŒh.…8ÉØg>™pNT‘»´Œ¢ë*Ó¬Ì GàTè|¢âŠÌ¥®œ¤eèäÔŠ9Á,í'œÒ̧™#Ú?Wk%ë€1cmh'ö=#b!”É9@ŠÓÜÎpÓ˜ØÇ‹Ë•‹Ä—€‹çÊ8™ÄÇ‹“rA*. ¿`�•2“ä?)#bÄ"ßñ˜‰‹z,JýüâD»q_‹œÇ>ƒ¼ì‘§O!•©N.­KŒ3"¤7B¬±äkD,ùÇ Êé_Bl’¸‡wŸF^vìÈÓÒºe×RLÄ‘ p*»•)¯ÆŒˆESåžLv<BɃÎ\ pº‚ùB¼†.a¾‹C»§“b|g~ó…[”’ŽùBɧÊUºÄQÌð¹­ÈËöm=­>¶Í;w›ÉˈæRˆ“Œ}&à“ GáDŹKË(º®8ÍÊœPqN…Î'*®ÈÜQêJÀIZ†NN­˜ÌÒ~ÒÈ)í|šzþ,Œkg3+²kK8޳‡v†rNòQcÂB“øee†übLDncä�)Ns;ÃMcb/.W._.ž‹ ‚Ò÷¹4NÊ©¸4ü‚TÊxL’ÿ¤\ŒˆE‹|Çc&.ê±(õó‹íÆ}-rnœ<¹µáüÞ9~ìä¶î>—(FyriµXbœ± ½bˆ%ßX#bÉ?ÖˆXPNÿb“Ä=óÂ�^<3†¼lÄþÌvWe¡^_Q»˜iœÊneÊ«1#bQàTy ç@“]„Pò 3W®`¾¯¡K˜/FÄ"ÂÐîé¤ß™ß|á¥$¤c¾Pr@Å©r•.qg36ô,¦&N"/;wjöœÕß"_´ÿ¥8¦(0"–¢ë*Ó¬Ì GàTè|¢âŠÌ¥®œ¤eèäÔŠ9Á,í'œÒΧ™ÃögÞùq3ÖÎf„,ÆÚмǚ‡·ÞÛ<Ä9ÉG wqL┕òsˆ1I¹ÿ?{ï0¹QÞ?Ú}ûõî;Ÿ{Á ° ¶±)¡c ¡„@(ò¥çKBzHÿ’|ÿ„’JB %$´PB SŒmÜ{¹æëwïÝ[w÷ù¯¤Õ®¶h4zfFÚÕûûÙ{ïJO•F£ÑŒ~;Ó³CËÎòqv'ËÙ9ÍE!ËK(â#ù9WÚ)s!Q.myÂTÈõ˜¥ü³æK‚-¹½rI¿•òÁî’6ûeCto\¼ÿ ­-ÓI†>?ùÅ=ú&i7—a³Õ´‰…äа‰Å­-H,îmAb¡bί†mV»s¯NT!BŸÝ÷ÒJG÷³%˜0õ´rêÓH,)ziå _)jª‡ðør°YV zé&ÔÍgèê H,I:z}:¥NK设 t•šú¢Sºzie%+ƒ~á ?Ç~©õÍ]»zóWíM¥½ÁÝ›ýßY!£þòNÔS\ûœ‘žNNºzš¹+}ä«€œF²Ltõ4rʵ>éêåYv:±2ä¤ôa3§a,Ñód1'“úT»5jó°¬P^€È”•JçRŽÖ‚»ÿ›k6L<ð&ß NÜаc…,a§Êg—|@b¬0Ò>ÆžZv–³ûÐ8Y6ÈÎi. Y†\B'ÉϹÒN™ ‰riË. B®Ç,åŸ5XlÉíõh”Kúµ¨”v—´Ù/ª{#ÓÉ;?lÇ×E·‘Y1¨}ýO>D´G;)!аմ‰…äа‰Å­-H,îmAb¡bί†mV;¿­ûà—ã:lWï½ý]ýÕ3„R§G`¤¦žVN}‰%E/­ôË EMõߣS6Ë*AO#Ý„ú¢ù ]@}‰%IG¯O§Ôi ÝÕ—®R²Q_tÊ@W/­¬deÐ/äÇ£=¼ïSÁw—íê7>³+ˆÕ{}s÷fÿwVȨ¿¼õ×>'äc¤§““®žfîJyÇ* §‘,]=œr­Oºzy–N¬ 9)}ØÌiË„Fô<YÌɨ>5héÆ]Á¶­v�†¸¢R¿o/ž<F÷~õƒÁ6+t9qCÃŽ²„*Ÿ]ò‰±ÂHû{vhÙY>ÎîCãdÙ ;§¹(dr Eœ`$?çJ;e.$Ê¥-O¸€ ¹³”Ö\@bI°%·×£Q.é×¢R>Ø]Òf¿lÈîó·}˜ ÇÉsHÂ÷}9¶DïùðjÅ´›Ë°ÙjÚÄBrhØ‚ÄâÖ$÷¶ ±P1çWÃVb÷®Ï=D‡g—œ·« Çè®[?”œŽî)fK:1aêiåÔ§1XRôÒÊA¿ RÔTáñ=:å`³¬ô4ÒM¨/šÏÐÔX’tôútJ–Ð]}è*5!õE§ tõÒÊJVýÂ$?Gö~”jËîû«'/ÓWþkÅóŠç4ð;+dÔ_Þ‰zŠkŸò1ÒÓÉIWO3w¥¼cÓH–‰®žFN¹Ö']½<ËN'V†œ”>læ4ŒeB#zž,ædZŸ–oØE|rÙi» �Ã�Y€RÂóÂKûŽÏ¿+œ•%œ¸Ñ·Ù/c…,a§Êg—|@b¬0JÍ5a‡–åãì>4N– ²sš‹B–!—PÄ Fòs®´SæB¢\Úò„ ¨ë1KùgÍ$–[r{=å’~-*åƒÝ%möˆîÞÈtü¦ öEm  D¾ÿþ½w'ÏÊ’vsQ¡[M;XH [XÜÚ‚ÄâÞ$*æüjØJìü6îí¿'ŒC»zëwÞ3¸ßª{ŠÙ’NL˜zZ9õi $–½´rÐ/ƒ5ÕCx|N9Ø,«=tž¹5Ÿ¡ ¨/ ±$éèõé”:-¡»ú2ÐUjB6ê‹Nè꥕•¬ ú…I~ü6nÿ#ï¾çÑ®~öƒ÷7¸¯Ü~g…ŒúË;QOqíÇcõž#±žNNºzš¹+}ä«€œF²Ltõ4rʵ>éêåYv:±2ä¤ôa3§a,Ñód1'ãúÔ<¨Å/Þ|uÙ®À0�W8Px=ÔCsîè>ºõÓÿ0PŸ7ú6ûe¬%ìTùì’HŒF©¹&ìв³|œÝ‡ÆÉ²AvNsQÈ2äŠ8ÁH~ΕvÊ\H”K[žpr=f)ÿ¬¹€Ä’`Kn¯G£\Ò¯E¥|°»¤Í~ÙÞO|ûÔ8ñh ß³@ËÔ¾îÝ?Où/wÒऄ(ÂVÓ$’CÃ$·¶ ±¸·‰…Š9¿¶R»?ÿÐ]´çÐ|níêÉf~ó·þ™T9¦=÷ëÄ„©§•SŸÆ@bIÑK+ý2HQS=„Ç÷蔃ͲJÐÓH7á™[óº€úK’Ž^ŸN©Óº«/]¥&d£¾è”®^ZYÉÊ _¨:ä¿“–÷çÖ®=°@ŸzÏ}]9 üÎ õ—w¢žâÚÇê=Gb=œtõ4sWúÈ;V9d™èêiäÔ{œ–‰®^že§+CNJ6sÆ2¡=Os²QŸ–>×lãŽ-8iW`Ø�" Pôw\ÂËû¶Oÿ#~ø¶.'nômöËX!KØ©òÙ%+ŒRsMØ¡egù8»“eƒìœæ¢eÈ%q‚‘üœ+픹(—¶<á*äzÌRþYs‰%Á–Ü^F¹¤_‹Jù`wI›ý²!¼7.ᅢf¿ó/Á÷^¾›Á0ÆÛþõNºùŽ#=I Q„­¦H,$‡†-H,nmAbqo  s~5l¥v7Ýw”þâÃw‡ñslWoþÖ;èࣷӠÓž{ŒubÂÔÓÊ©Oc ±¤è¥•ƒ~¤¨©Âã{tÊÁfY%èi¤›ðÌ­ù ]@}‰%IG¯O§Ôi ÝÕ—®R²Q_tÊ@W/­¬deÐ/TòÜìôèCï ¾çÙ®þ÷{î:Ö—_ïù(£þòNÔS\ûñX½çH¬§““®žfîJyÇ* §‘,]=œzÏÓ2ÑÕ˳ìtbeÈIéÃfNÃX&4¢çÉbN6êSý‘c´øùû‚ï.ÚU�6€È” ƒXø>¾ýÜžª¹·áPlöËX!KØ©òÙ%+ŒRsMØ¡egù8»“eƒìœæ¢eÈ%q‚‘üœ+픹(—¶<á*äzÌRþYs‰%Á–Ü^F¹¤_‹Jù`wI›ý²¡¼72ûÊŸß\²ð“Ú×·¼õfâ¥ß\T(ÂVÓ$’CÃ$·¶ ±¸·‰…Š9¿¶R;ÿVûÿzK¿€võ†/þ)ñ¿”ï<k'k‚Ä¢ÖK+ý2HQS=„Ç÷蔃ͲJÐÓH7á™{xë H,I:z}:¥NK设 t•šú¢Sºzie%+ƒ~¡êý6mÏ=|/¢]ýàßÜN î»Ë̽ï;+dÑwŵÕ{ŽÄz:9éêiæ®ô‘w¬rÉ2ÑÕÓÈ©÷8-]½<ËN'V†œ”>læ4ŒeB#zž,æd¥>5lá£á0 °R�" P*$±ð캓¾õ¾ßék8›ý2VÈvª|vÉ$Æ £Ô\vhÙY>ÎîCãdÙ ;§¹(dr Eœ`$?çJ;e.$Ê¥-O¸€ ¹³”Ö\@bI°%·×£Q.é×¢R>Ø]Òf¿lHïÇþçiùÀ]Áw—,ü¤öõÖ»Ò›ÿøF#íÆäÂVÓ$’CÃ$·¶ ±¸·‰…Š9¿¶&v¿ð7Ñ÷ ½]D»z¨Ù¦íóÐÞŸöÜc¬¦žN}‰%E/­ôË EMõߣS6Ë*AO#Ý„gnÍgèê H,I:z}:¥NK设 t•šú¢Sºzie%+ƒ~aÚéÛ}÷ŸÐü‰{‚ïE´«»î=Nï{ë­Á÷ÞóϽï;+dÑwŵÕ{ŽÄz:9éêiæ®ô‘w¬rÉ2ÑÕÓÈ©÷8-]½<ËN'V†œ”>læ4ŒeB#zž,æd«>-þÇ­ÔØ}<ØÆl,ÀJAUSÏÓ”y½„mÕ§ûÿøû&ý¿Û·ŸúßáÂÂ"@þýÛo¼Žî¹‡êKó´í1Wõ=Ͱž ¬Ø©òÙ%çþ½¬0JÍ5a‡–åãì>4N– ²sš‹B–!—PÄ Fòs®´SæB¢\Úò„ ¨ë1KùgÍ$–[r{=å’~-*åƒÝ%möˆôÞx↿¡“·}$ø^©Ä¯Â΋ëLÔ¾Þyß1š[¨Ó“Ÿ¸5“}êÉ…­¦H,$‡†-H,nmAbqo  s~5lMìþà}wл?÷`ð½ÈvõÈÁ{©V›§í§]9XQç™JG'&L==œú4KŠ^Z9è—AŠšê!<¾G§l–U‚žFº ÏÜšÏÐÔX’tôútJ–Ð]}è*5!õE§ tõÒÊJVý´ӷ￧C{>|/²]ÝóÀ,--4èüË7 ̽ï;+dÑwŵ/ëÞs$ÖÓÉIWO3w¥¼cÓH–‰®žFN½çÀi™èêåYv:±2ä¤ôa3§a,Ñód1'[õiù“wÓÒ ÛE´«Àè`jj*ø»wðòYlýíýbßÐ�D tðoØÝÓ1{íÎËÁo É,ç_Õ–ªj$+X±3­–sß—Î+ŒRsMØ¡egù8»“eƒìœæ¢eÈ%q‚‘üœ+픹(—¶<á*äzÌRþYs‰%Á–Ü^F¹¤_‹Jù`wI›ý²!½7ú$–Ù›Þ|ïí¼„ûìOº§j_o¼íp62KÚÉ…­¦H,$‡†-H,nmAbqo  s~5lMì|ËßâÞàû0´«öÝJõAdg*˜0õôpêÓH,)ziå _)jª‡ðør°YV zé&<sk>CP_@bIÒÑëÓ)uZBwõe «Ô„lÔ2ÐÕK++Yô ÓNŸOb9ðÈ‚ïÃЮ>xÇQZöÉ,—mêʽï;+dÑwŵ/ëÞs$ÖÓÉIWO3w¥¼cÓH–‰®žFN½çÀi™èêåYv:±2ä¤ôa3§a,Ñód1'[õÉ'±,~ù`;¯v]€È¢–È )ºÉ,'ï¦?•HÁRìmŒúd ;Ój8÷}él°Âˆu|Ø¡egù8»“eƒìœæ¢eÈ%q‚‘üœ+픹(—¶<á*äzÌRþYs‰%Á–Ü^F¹¤_‹Jù`wI›ý²¡¼7r°œPÒL,>òeáw“YÙ7GϺöuü´“ R[M;XH [XÜÚ‚ÄâÞ$*æüjØJíü[­¿œPÒL,A^µ«>™åäñ=´ó¬ëÂø:ÏT::1aêiåÔ§1XRôÒÊA¿ RÔTáñ=:å`³¬ô4ÒMxæÖ|†. ¾€Ä’¤£×§Sê´„îêË@W© Ù¨/:e «—VV²2èªÙ'’øË %ÍÄ⣨vÕ'³~tž.~ÒÖôÓê-Ë>Yô]qíÇ˺÷‰õtrÒÕÓÌ]é#ïXä4’e¢«§‘Sï9pZ&ºzy–N¬ 9)}ØÌiË„Fô<YÌÉJ}j˜¿œPÒL,>0 Ð YÔ2Y€¡Àà·×µÌÐÞ;¾BëwœOÓëú=ÞÛõÉv¦ÕnîûÒÙ`…ëø°CËÎòqv'ËÙ9ÍE!ËK(â#ù9WÚ)s!Q.myÂTÈõ˜¥ü³æK‚-¹½rI¿•òÁî’6ûeCxo\Þùï_£Å‡o¶‹è¼¤µ¯þ2C_øú£tá¹ëè”-Óýªi7&¤¶šv ±¶ ±¸µ‰Å½-H,TÌùÕ°•ÚÝtßQú±?ÿ&ýÏ-ûƒíalWº—v?ô5Ú°ù<šYµ%¦=)ubÂÔÓÊ©Oc ±¤è¥•ƒ~¤¨©Âã{tÊÁfY%èi¤›ðÌ­ù Í–tb´r�‰%IG¯O§Ôi ÝÕ—®R²Q_tÊ@W/­¬deÐ/TòÜìôðm¿E³G¾lc»ê/3tÇ·ÐŽ³ÖÒºÍáKžÞ²Œc×wŵ/ëÞs$ÖÓÉIWO3w¥¼cÓH–‰®žFN½çÀi™èêåYv:±2ä¤ôa3§a,Ñód1'õ©þÈ1š÷w©~÷Á`$@ ²¨e ²�Cƒ´ÎËÂñƒôÀ  6¶œsy[¿·1Šƒ;Ój6÷}él°Âˆu|Ø¡egù8»“eƒìœæ¢eÈ%q‚‘üœ+픹(—¶<á*äzÌRþYs‰%Á–Ü^F¹¤_‹Jù`wI›ý²¡»72øö;èèçŸs‡Y‘—´öuÿ¡úÀÇ¢FóûUßÔÑO»1© µÕ´‰…äа‰Å­-H,îmAb¡bί†­ÄÎoŸÞú¡»èçþî»´ÿh8~0Ìíê|³í¿÷ÿ—íLÛv\6xVQÍç.ç–H!åi $–½´rÐ/ƒ5ÕCx|N9Ø,«=tž¹5Ÿ¡Ù’NL˜V ±$éèõé”:-¡»ú2ÐUjB6ê‹Nè꥕•¬ ú…I~ü_‹xøôÈDµ¥ÃÁ¾anW^¤>½+8 ³/Ù@ñ<ãÇØõ]qíÇ˺÷‰õ8ÅG=ÍÜ•>òŽU@N#Y&ºz9õž§e¢«—gÙéÄʓ҇͜†±LhDϓŜŒëSó –>w-üû÷ˆg‹ï¯£‡²Yt¯ò<‰,ƒH+ÕÖ¾jÏÇ—­õÿ^~ù_ó=zŒ� ¿CÅÜÿHÓhtöͬ?….xúkèìk^FI—;+v¦ÕjîûÒÙ`…ëø°CËŽSävjçË R˜¶SæB¢\Úò„ ¨ë1KùgÍ$–[r{=å’~-*åƒÝ%möˆêÞÈ4Û‡éøMÿF¶eÃÒyÑi_·o¦7¾â|zõ÷Ÿ)Ï/í¦fh É¡a ‹[[XÜÛ‚ÄBÅœ_ Û¬v~óô®Ï=Doÿø=´çÐ|{ÿ(µ«3«·Ñ%—½ŠÎ»øÅ‰¢ÊS¦ñÜ)¤<Ä’¢—Vúe¢¦zïÑ)›e• §‘nÂ3·æ34[Ò‰ ÓÊ$–$½>R§%tW_ºJMÈF}Ñ)]½´²’•A¿0©nÞûQÚÿÈûiyq{÷(µ«ë·LÑÓ^z6]ýü]DQîòÓëaÀ÷סXS|dÑÓÌ]é#ïXä4’e¢«§‘Sï9pZ&ºzy–N¬ 9)}ØÌiË„Fô<YÌɨ>5hù†]´øÅû‰-´e ±�Y±~ýºàï7~ëšæŸFós¼õ·ÞóáÖßFìñ¿½JØVýíýÞ •,�ˆ,ÀŠÀàÎK éêÀL®ZGg^ñB:õ±Ï §_Óhš,ëWëoÑT¶œ±f³B–šKŠ­Æqv'ËÙ9ÍE!ËK(â#ù9WÚ)s!Q.myÂTÈõ˜¥ü³æK‚-¹½rI¿•òÁî’6ûeCro\Ú-Þÿ:yç'¨±p¼½PÇÅG‘Ýöuú zésÏ ç=e=þ ¤´›š¡H,$‡†-H,nmAbqo  s~5l³Ø}÷¾£ô‰oí¥~ù!:<»ÜÞ?ÊíêäÔ::÷‚çÓig?6o½¨¥¡rLé:-…”§1XRôÒÊA¿ RÔTáñ=:å`³¬ô4ÒMxæÖ|†fK:1aZ9€Ä’¤£×§Sê´„îêË@W© Ù¨/:e «—VV²2èöêÌÏÞIÇ~‰ïûÕ–ËÑ_]µvœžøÌtɵÛè´ó×Åì{­|pŠõ8ÅG=ÍÜ•>òŽU@N#Y&ºz9õž§e¢«—gÙéÄʓ҇͜†±LhDϓŜ¤õÉ_B¨v룴tã.â“ÃÝ_F ²¨e ²�C UçÅßÝ+›^ m=÷rÚxÚÅ´vÛÙ4³a;M®^O•ñiBÊ–eJ̾/ VeªÕ¬¥æ’bËJ“~H,ƒTHa>ØN™ ‰riË. B®Ç,åŸ5XlÉíõh”Kúµ¨”v—´Ù/ËûÞèï«/Pcþ(Õf÷Qíȃ´´ÿvZØ}S×ì+>ÂJð­/Î0t^²¶¯þ,-Oºt =î‚ tÞ™khç)3´qÝ$MOUº%í¦–˜žH,$‡†-H,nmAbqo  s~5lÁµ°X§C³‹´ëà<ݽëÝ|ÿúú»f_ b—¬]õgi9åÔËhÓÖ‹hý†3iÕšShrjUǦÂcÑxn‰RžÆ@bIÑS6g)ƒ5ÕCx|N9Ø,«=tž¹9]§G`£œRuˆ´Ý@bIöU\}è*5!õE§ tõÒÊJV±;¦ß5©¶|”–¥…¹inöN:qäæ®ÙW|”­]]·eŠÎ}ìFÚyÞzÚzújÚ°mŠV­ ±ÉJ÷²ô­/ÜçuÀw=Nñ‘ESbž M¬rÉ2ÑÕÓÈ©÷8-]½<ËN'V†œ”>læ4ŒeB#zž,æ”ZŸü¤—Ä'—¨qdêž ú®f{ßá®ÙW| {» ?@dQË@d†Qç„{²ÝŒ|����( IÌ{Q§eX:/h_��€aÚU����°´«����`£Ô®òYÆ�Vâ7úÁ¯Õ`m=é¥���@~óÔi£¼Ýácߣ}���† hW���ÀЮ���€=Œz» �yD`E"½hµu»Û ŽÙ����h£»=ÉÖ ö=ÚW��� O ] ´ÚºhW��� ] ´ÚºhW���”½]€<�" °b1¨`­žˆóA����à ñ¶jT:.h_��€aÚU����°´«����`£Ø®€k€È¬xÈ;0����àe`Ý£}���†hW���ÀЮ���€=`ö�Hˆ,�C¼Áèí¼ 3���¸@o'¥Œ´¯���@^@»Šv���°´«hW���{X í*�؈,�€¬ :6���À ¤µ'+­Ã‚ö���0ÚÕn ]���L€vµhW��� ]�»�‘�4‘6å$ ��� h+úö���mD?Ю���R èÚU���@ ´�`Y�À�º Øù���å:&vö��`eíª] ]��XÙ@»jhW��V6Ю@~�‘�r�6����°´¯����`hW���ÀЮ�����˜¡B�������������������������0�‘������������������������ €È������������������������ @d������������������������† ²�������������������������CY������������������������€¡�ˆ,������������������������ÀP�D������������������������`(�" ������������������������0#��¬€™ ����záyr }���â@»j´«���@hWÍ€v���ˆí*�؈,�‚¨C‚Ž ��� AZûupVZGí+��� ÚÕÁ@» ���H€vu0Ю��� ]�»�‘�zà74¶;)èô���”&Ad¾¿²uhо���º@»š´«���€.Ю¦í*���  ´«�@d€z;,›NÙN^öD:÷’KhçÙçÒ–í;h͆495%hT—TW¦û!·õ lMcÔ‘síؚĵf[`l¯Äõɵm¦Ûæ¨Þ÷ôíýöfqaf£»¥Ý÷?D÷~ï.ºã;ߣCûö·Û¤2tdzÛ×›«tÕEtéyãtÞÎ1Ú¹¥J›ÖVhz²ÕTBcg³Óö›“¬([§ÇÂÙmKwr¶M• ÊDËo޲2Å ä\@Ì!’iØúíÌ|èÐ|ƒvkÐ=‡êtÓÞeºaWöÌÖKÝ®ŽÓôôtó3EããÍÏU«ÕæqV��5òɽ¸ Ð3Zá<f�w1ÓÛ­ÛÇ# È8&e“~™Õjµæg™–hqq‘êõZ©ÛUoÓ*»`+³‰*§®£ÊæUä­"š¨úV� Î,«sšÄæ=ŸÅB±ªÒkiå£dë<Ûh03a: TãŽÑî¥f¿ôÄ"ñ¡9â½Ç©öÀaªßsøÈ\©ÚU�° ÝáiÊ<¿^Âvô©ÄþFŸjk_µçãËÖú/¿üНù=F�~§,šõëé)×?]õŒgÓ¹—<®GÓ¤U‹Ùfn‡,Å-ƒí’~ô=:>ßž­IÜ2Øz¶&q ·µ[üÜ=|u9O[ŸÐrÃg¾D_þØgiöèñöþJe´^HÅÛ× k+ôÒ§NÓõWOÑ¥çŽ'99ʶ9ÈŠ²-ôXr*W~‹ˆéʯÎÀ‹‘_‹²"bZws,W~ ŒyÓ¾}üîEúÛèÈ|Ç`”ÛUŸ¨²fÍZZ½z5MMM��2äKdáVLÊ @å"± Žç.¶ž3{13Œ"ÙzIšÅ¢i²´´Dóós47w’êõNÛ4Êíª·f’&ž|]yUÏÙD��¤€3 Äê¬#µyß·qlVòáŒd Eã‚Їª›ÙŽ˜Å>´‘6Ƈ©vãnªÝðñ‰¥öþQkWáÁúõë‚¿7Þø­kšüžã­¿õž·þ6bŽýíýP¶êoï÷^¤VY€‹x‡ÅŸ}å…¯y=ëe¯L`<š´j1[Xä¶ ±ÈmAb‘Û‚Ä"·‰ÅØÖXÿì>Fû—ÿfi‰0ì™xûêϾò¦ï_E¯yÎtó’H¹(œ¿8eÛdEÙz,9•‰+¿EÄtå—S”ÊRWF²îæX&®üIL¿]}×-‹ôwßšfi‰0Jíª?ûÊÆhíÚu�€@b±+Ÿ˜jç ±Ø¥Š97w‚Ž› fi‰0Jíª?ûÊÔõÒø3ÎÃl+�  Î,«³ŽÔæ}߯±YɇSýh‡ac{çXÕ¿ÍìGGÌbÚHwÌâ§ÙÐÖ¿ü�-~úî`–– ´�Y"‹Z" 0ˆwZ^ü†7ÑËÞø“Š)»LZµ˜-H,r[Xä¶ ±ÈmAb‘Û‚ÄbÏÖ_i§ÁôÁ¿}}øÞÛÞ=¬˜xûúÓ/]E?ÿCkÂñÀÂ_brм`YQ¶…KNeâÊo1]ù奲ԕ‘¬»9–‰+¿CXžÜüï­_Ÿ£¿ºa¾½{ÚÕ 6Ò¦Mø•8�Ø�H,öcåSí$û±ôb2;vœfg‡6Ñx»:ñý—ÐÔK  �dgˆÕYGjó¾oãØ¬äé~´Ã°±‚½s¬êßfö£#f±m¤;ŠüPÐè.}üZþäí] ³�YP6"K•ô'‘E—Üí›ôÿnß~ê|‡ ‹�Iˆ¯{zö…ÑÏÿÉŸÓuÏ!H,Ãl ‹Ü$¹-H,r[XìÙ¶Î¥ßF]|åãéñ×>‘ºë~:zàp»-–uSãíëcϧ¿û¥ ôâ§NƒÄ¢#+ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qåwHËÓŸ!ìêÓ&èigNÐíj´ÿdc¨ÛUé SNÙNk×®%��Ì‹ýXùÄT;‰Å~,ý˜^ÐVMMMÓòò2Õëõ¡nW«gm¤™Ÿ} M\{H,�œY Vg©Íû¾c³’§úÑÃÆ öαª›ÙŽ˜Å>´‘6î(òÓB³mªž¿…ªo#Þu”øØÂе«Àp#Z~xïÞ=ÿDáU¶ØúÛû!ž¡ˆ,ÀŠA¼Óòäç½ÞüçK›¶¢² ƒh¯ ±ÈmAb‘Û‚Ä"·‰En ‹=Ûçrã¶Íôô?‡öïz”¾çŽjÁ˜xûúâ§LÓ;~mmßÔzÄ,ü%&Øæ +ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qåwÊó”ÕzÅ%“ôð±Ýy°³ÔÐ0µ«kÖ¬¥;vÐØØ�`XìÇÊ'¦Ú9H,öcIbV«UZµjÕjõ€Ða˜ÚÕñkÏ¢™_xU6Î��À™buÖ‘Ú¼ïÛ86+ùpªí0l¬`ï«ú·™ýèˆYìCiãŽ"?ý¨¬Ÿ¦êµgœ£ÆîÎJ$ ³�i�‘E-‘JÄ;-׿êGè ¿ò›)7|“z³‰En ‹Ü$¹-H,r[XìÙ*Î¥ßt]ñŒkháä<Ýs˱ýÅtbâíë¾pýÁ×v~ÔVøKL6°ÍAV”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊï•§ß~>çœI:¹ÌtãÞZ×þ"oWׯß@[·n%��ì�$û±ò‰©v‹ýXf1=šžžêÛÒÒRgï´«“Ï»€¦^w%fa€¬à̱:ëHmÞ÷m›•|8Õv6V°wŽUýÛÌ~tÄ,ö¡´qG‘ŸdøíçØ¥;ˆkÔxàp×~�Hˆ,jˆ,ÀС—ÄòªŸýÅ4 2ˆÖù ‹Ü$¹-H,r[Xä¶ ±Ø³õôlwÍå…“YzI,¿þÚ51aš±kØæ +ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qåwDËó)gLNfé%±lÞ¼™��°XìÇÊ'¦Ú9H,öcÙ‰ÉÁ ”¢É,½$–ÉW^N��dgˆÕYGjó¾oãØ¬äé~´Ã°±‚½s¬êßfö£#f±m¤;ŠüèT/ÜJ´X™ÐBÙˆ,€£w9!XFÀ$¹-H,r[Xä¶ ±Ø³Õ$±DxÕ/ü(=ùúg„ÒX{—z—‰%ƒ¬(ÛB%§2qå·ˆ˜®ürŠRYêÊHÖÝËÄ•ß/Ï_¿n½ø‚ÉPT`»ê/' �ØH,öcåSí$û±ìÄì¯[·ŽfffZ>‹kWýå„@b�8³@¬Î:R›·Çf%Nõ£†ìcUÿ6³1‹}h#mÜQä'›ÁÄK.¡±+O÷æÜ®@‘�‘(-â7ó³/¼ˆþ÷oÿAšDë|‰En ‹Ü$¹-H,r[XìÙf$±Døñßû?tÖEç…Z9ubâq{Î8ýéO­‹ ÓŒ]ËØÀ6YQ¶…KNeâÊo1]ù奲ԕ‘¬»9–‰+¿%)Ï?}öjzìÖ±P¥€vÕÿåÔ¶mÛ��;�‰Å~¬|bªƒÄb?–˜ýÆ6l¤‰‰‰–ïüÛÕêYiúO"��2‚3 Äê¬#µyë°qlVòáT?ÚaØXÁÞ9Võo3ûѳ؇6ÒÆE~d¯}UN_JAfV@dJ‰ø Üÿþº_úõ”©¶Lnø1[Xä¶ ±ÈmAb‘Û‚Ä"·‰Åž­Ä˜V<zݯþD_»ç ½q~÷ k;KŒþ“ lse[è±äT&®üÓ•_NQ*K]ɺ›c™¸ò[¢òôšÿýîÓVÖ®nÞ¼…��°XìÇÊ'¦Ú9H,öcÙ‰9ØØï+®_¿¾°vuêµWaé�ÈÎ,«³ŽÔæ-ÃÆ±YɇSýh‡ac{çXÕ¿ÍìGGÌbÚHwù´†ã'^~iní*� @dJ‹ˆ‘ø’ýq:÷’Ç©4É Jç+H,r[Xä¶ ±ÈmAb‘Û‚ÄbÏÖ€ÄáÜÇ>†^üÆÎýn?ó²Õtéyã­iF®eœ"/XV”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊoéÊ“éÒSÆèg®šÉ½]ݸqS{-k��Ì�‹ýXùÄT;‰Å~,;1ÕÆþŒ,k׮ͽ]üÇRõœM�@pfXu¤6o6ŽÍJ>œêG; +Ø;Ǫþmf?:bûÐFÚ¸£ÈÐ ¶«zæšxÞ˜‘X1�‘(¢›·ÿwÓ)ÛéeoüI•6Dê|‰En ‹Ü$¹-H,r[XìÙZ ±DxÙO¼ºÙæmíjm#î{Çæ*ýü­i Ò ]Ë8E^°¬(ÛB%§2qå·ˆ˜®ürŠRYêÊHÖÝËÄ•ßÒ•gGá篚¡k*¹µ«ccã´i^¶€ €Äb?V>1ÕÎAb±ËNL=ãµk×Qµ:–[»êmZES/y,�œY Vg©ÍÛ„c³’§úÑÃÆ öαª›ÙŽ˜Å>´‘6î(ò#4°küú ÉÛ0ã´]€aˆ,@)Ñh4‚¿/|ÍëK ™ÜÜc¶ ±ÈmAb‘Û‚Ä"·‰En ‹=[‹$–À]³­{áë^|Ú@ˆ|¿éûW‡34þS¯ƒW˜¬(ÛB%§2qå·ˆ˜®ürŠRYêÊHÖÝËÄ•ßÒ•g·‚߯½é «‚ïy´«7n$��Ì‹ýXùÄT;‰Å~,;1õývÕŸ•ÅGíêÔõaI!�ÈÎ,«³ŽÔæ}߯±YɇSýh‡ac{çXÕ¿ÍìGGÌbÚHwù$øðÇ'žu~ðÝe» �Ã�Y€R!>h±fýzzö¾2I“ ¢t¾‚Ä"·‰En ‹Ü$¹-H,öl-“X"<ë×7Û¾µOG|ã¾6¬­ÐkŸ;=/1õ;x…ÈŠ²-ôXr*W~‹ˆéÊ/§(•¥®ŒdÝͱL\ù-]yVxíã&iãt§ÑvÕ®V«UZ·n�`XìÇÊ'¦Ú9H,öcÙ‰™ÝxÕªUÍ6¯‹ï¦]õÖLÒÄ3Ï#��4Á™buÖ‘Ú¼ïÛ86+ùpªí0l¬`ï«ú·™ýèˆYìCiãŽ"?BƒcO9‹¼ÕuÌÊ” ²�¥CÄ@|ê ~ a6“zÌ$¹-H,r[Xä¶ ±ÈmAb±gëˆÄâÛúmÞS^ôÌ`Ë?òù²§Í4ÃKKDZ,c/oYQ¶…KNeâÊo1]ù奲ԕ‘¬»9–‰+¿¥+Ïä2ñ[º—^8lºlWýå��0H,öcå3啦ըzÎ@bqχ?D»jÕêà»Ëvuòº³1 �è‚3 Äê¬#µyß·qlVòáT?ÚaØXÁÞ9Võ¥2ûѳ؇6ÒÆE~„:>šmÝø“ξbV Ì�‘( z.®zƳi‘A„ÎWXä¶ ±ÈmAb‘Û‚Ä"·‰Åž­CK„«ž}]·ÄÂHl¯ë¯žJ1p-ËØÁË[V”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊoéÊ3½L®?w¢[ä ]]½z5� H,öcåSí$û±ìÄ”ûq§§§{öÙoWÇ®<ƒ��Ð�gˆÕYGjó¾oãØ¬äé~´Ã°±‚½s¬êKeö£#f±m¤;Šü 2eõ²Ýû1+ PB€È” ÑzÓ)ÛéÜK×+%9b¶ ±ÈmAb‘Û‚Ä"·‰En ‹=ÛH,>Î}ìcšmàÖPâ`ªæ›«té¹ã Er,ËØÁË[V”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊoéÊS¯L.=eŒv¬ ‡M\´«ccã455E��È�‹ýXùÄT;‰Å~,;1åÆQÜññ‰`I½pŸývÕÛ´Šªçl"��RÀ™buÖ‘Ú¼ïÛ86+ùpªí0l¬`ï«úR™ýèˆYìCiãŽ"?BƒŒEY9syfÂý ±�%ˆ,@)qÑåWôì1¹‰ÇlAb‘Û‚Ä"·‰En ‹Ü${¶9‘X"\tÅcÉžtñd²Ðù‹ÊŒ¼¼eEÙz,9•‰+¿EÄtå—S”ÊRWF²îæX&®ü–®<³•É“N W˜™™!��d�‰Å~¬|bªƒÄb?–˜rãÞ¸. œãn#��RÀ™buÖ‘Ú¼ïÛ86+ùpªí0l¬`ï«úR™ýèˆYìCiãŽ"?BaQVÏßB�Pf€È”þ�FôñqÎÅ—Ä¥$GÌ$¹-H,r[Xä¶ ±ÈmAb±g›3‰ÅÇ9Ÿjô´¢(=>Ÿ4‹ó•;xyËŠ²-ôXr*W~‹ˆéÊ/§(•¥®ŒdÝͱL\ù-]yf/“ÇŸ¶}.ÚUÌÆ�2€Äb?V>1ÕÎAb±ËNL“v¯ßÄÄdKf¿]­žÙX�@ Î,«³ŽÔæ}߯±YɇSýh‡ac{çXÕ—ÊìGGÌbÚHwùeõŒ ¡ÜB» �ÃY€‚é´sÎm7ñÓH,r[Xä¶ ±ÈmAb‘Û‚Äb϶�‹çžAæå18îù§ Ú­2± ËØÁË[V”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊoéÊSP&Mœ¿±š®$7_æ¹›í�Ê XìÇÊ'¦Ú9H,öcÙ‰)7NŠ;>>fäW‘ª;×�� à̱:ëHmÞl›•|8Õv6V°wŽU}©Ì~tÄ,ö¡´qG‘¡aQV¶¯!{'�†c�%Ä–í;Èìæ³‰En ‹Ü$¹-H,r[XìÙDbñ±eÇVr…[ªÝ;œ¿¨ÌØÁË[V”m¡Ç’S™¸ò[DLNEðr¾,çvhënŽeâÊoéÊSP&-ùεî~ÿ¾Ì�@ ±Ø•OLµsXìDzSn¬Š[­VÉ*›W��À™buÖ‘Ú¼ïÛ86+ùpªí0l¬`ï«úR™ýèˆYìCiãŽ"?B EYÙ„åjr£&@)±fÃF’#Ö4€Ä"·‰En ‹Ü$¹-H,öl $±øX³ÁݯÐ6Å_æ9Q™±ƒ—·¬(ÛB%§2qå·ˆ˜®ürŠRYêÊHÖÝËÄ•ßÒ•§ LbòMSîˆ,._æ@Ù�‹ýXùÄT;‰Å~,;1åÆiq+wmŸ·Kö@8³@¬Î:R›÷}Çf%Nõ£†ìcU_*³1‹}h#mÜQäGh`«(WO�”XZ(âþ×IñZ㱦$¹-H,r[Xä¶ ±ÈmAb±g[0‰ÅÇäôT×à¡éšãïDÓ“éX‘eìàå-+ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qå·tå)(“ùô9kW=C2� XìÇÊ'¦Ú9H,öcÙ‰iÒÎ¥ëxž»v•&@€.pfXu¤6ïû6ŽÍJ>œêG; +Ø;Ǫ¾Tf?:bûÐFÚ¸£ÈÐÀVQúJãUkí*� #0# PJxžä­lì‹Ü$¹-H,r[Xä¶ ±Ø³K†'.T=ßÎ_Tfìàå-+ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qå·tå)(“r‡Í*���‰Å~¬|bªƒÄb?–˜rcý¸V4Ú�ÐgˆÕYGjó¾oãØ¬äé~´Ã°±‚½s¬êKeö£#f±m¤;Šü le¤„¶(9@d€�±¦$¹-H,r[Xä¶ ±ÈmAb±g;$$çpþ¢2c/oYQ¶…KNeâÊo1]ù奲ԕ‘¬»9–‰+¿¥+OA™èÈ�È ±Ø•OLµsXìDzSnŒÀ3 Äê¬#µy°qlVòáT?ÚaØXÁÞ9Võ¥2ûѳ؇6ÒÆE~„¶Ší.°‚�" �Äïú ±ÈmAb‘Û‚Ä"·‰En ‹=Û•BbQÁʋʌ¼¼eEÙz,9•‰+¿EÄtå—S”ÊRWF²îæX&®ü–®<e¢#� W€Äb?V>1ÕÎAb±ËNL¹1H,�0dà̱:ëHmÞ#l›•|8Õv6V°wŽU}©Ì~tÄ,ö¡´qG‘¡­¢D» ¬0`Af`äa6¸³‰En ‹Ü$¹-H,r[XìÙ%‰eÐ`µd TÓÆÊ‹ÊŒ¼¼eEÙz,9•‰+¿EÄtå—S”ÊRWF²îæX&®ü–®<e¢å·g—Ëv��XÄÊ'¦Ú9H,öcÙ‰)7¶u~Ñ®€%pfXu¤6«©c³’§úÑÃÆ öαª/•ÙŽ˜Å>´‘6î(ò#4°U”¬·m$P&`F`#v3‰En ‹Ü$¹-H,r[XìÙŽ‰Å)¬¼¨ÌØÁË[V”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊoéÊSP&Z~�È ±Ø•OLµsXìDzSn,‹Æ�œ€3 Äê¬#µYÕm›•|8Õv6V°wŽU}©Ì~tÄ,ö¡´qG‘¡­¢d±%�Œ4@dV(b7xXä¶ ±ÈmAb‘Û‚Ä"·‰Åž-H,–^Tfìàå-+ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qå·tå)(-¿��ä XìÇÊ'¦Ú9H,öcÙ‰)7‰�† œY Vg©ÍªnãØ¬äé~´Ã°±‚½s¬êKeö£#f±m¤;Šü l%‹-`ä" °»ÁƒÄ"·‰En ‹Ü$¹-H,ölAb±ô¢2c/oYQ¶…KNeâÊo1]ù奲ԕ‘¬»9–‰+¿¥+OA™hù� O€Äb?V>1ÕÎAb±ËNL¹1H,�0dà̱:ëHmVuÇf%Nõ£†ìcU_*³1‹}h#mÜQäGh`«(Yl �¥�ˆ,À Cì‹Ü$¹-H,r[Xä¶ ±Ø³‰ÅÒ‹ÊŒ¼¼eEÙz,9•‰+¿EÄtå—S”ÊRWF²îæX&®ü–®<e¢å�€<‹ýXùÄT;‰Å~,;1åÆ ±�À3 Äê¬#µYÕm›•|8Õv6V°wŽU}©Ì~tÄ,ö¡´qG‘¡­¢d±%�” ²�+±<H,r[Xä¶ ±ÈmAb‘Û‚ÄbÏ$K/*3vðò–e[è±äT&®üÓ•_NQ*K]ɺ›c™¸ò[ºò”‰–_��òH,öcåSí$û±ìÄ”ƒÄ�CÎ,«³ŽÔfU·qlVòáT?ÚaØXÁÞ9Võ¥2ûѳ؇6ÒÆE~„¶Š’Å–�P*€È¬Änð ±ÈmAb‘Û‚Ä"·‰En ‹=[XÔÐ~)˜±ƒ—·¬(ÛB%§2qå·ˆ˜®ürŠRYêÊHÖÝËÄ•ßÒ•§ L´ü�'@b±+Ÿ˜jç ±Øe'¦Ü$�2pfXu¤6«ºc³’§úÑÃÆ öαª/•ÙŽ˜Å>´‘6î(ò#4°U”,¶€Ò¡B�0âHøˆÉAb‘Û‚Ä"·‰En ‹Ü${¶% ±H^hÛh¿ÌØÁË[V”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊoéÊSP&Z~õeNÛU�X!�‰Å~¬|bªƒÄb?–˜rã<H,hW 8³@¬Î:R›UÑÆ±YɇSýh‡ac{çXÕ—ÊìGGÌbÚHwùØ*J[v´ÑF%fdJŽØ $¹-H,r[Xä¶ ±ÈmAb±g‹™XÔÐ~ñ—±ƒ—·¬(ÛB%§2qå·ˆ˜®ürŠRYêÊHÖÝËÄ•ßÒ•§ L´ü d��ˆ‹ýXùÄT;‰Å~,;1åÆ˜‰�† œY Vg©ÍªnãØ¬äé~´Ã°±‚½s¬êKeö£#f±m¤;Šü l%‹- ´�‘(1b7xXä¶ ±ÈmG”Ä2xP1Ÿœ=¯uÒ@b‘Û‚ÄbÏ$5´_üeìàå-+ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qå·tå)(-¿��b€Äb?V>1ÕÎAb±ËNL¹1H,�0dà̱:ëHmVuÇf%Nõ£†ìcU_*³1‹}h#mÜQäGh`«(Yl �¥ˆ,@I»ÁƒÄ"·‰En;ä$–lƒ‡ùåäåÑÀì6ÉÅAÜá°µ${¶ ±¨¡ýâ/c/oYQ¶…KNeâÊo1]ù奲ԕ‘¬»9–‰+¿¥+OA™hùÈ��$û±ò‰©v‹ýXvbÊAb€!gˆÕYGj³ªÛ86+ùpªí0l¬`ï«úR™ýèˆYìCiãŽ"?B[EÉbK�(=@dÊ Xä¶ ±Èm‡Ä"0Ì9gÅL,½ÇLlźh!6H,ölAbQCûÅ_Æ^Þ²¢l =–œÊÄ•ß"bºòË)Je©+#Yws,W~KWž‚2Ñò+� H,öcåSí$û±ìÄ”ƒÄ�CÎ,«³ŽÔfU·qlVòáT?ÚaØXÁÞ9Võ¥2ûѳ؇6ÒÆE~„¶Š’Å–�°"�" P^€Ä"·‰En;d$æÉ‘sÎ—Š„vH-£X-ĉŞ-H,jh¿øËØÁË[V”m¡Ç’S™¸ò[DLW~9E©,ue$ënŽeâÊoéÊSP&Z~2��Ä�‰Å~¬|bªƒÄb?–˜&cH$P�pÎ,«³ŽÔfU·qlVòáT?ÚaØXÁÞ9Võ¥2ûѳ؇6ÒÆE~„¶Š’Å–�°b�" �0iJf ‹ÜvHH,Aº63’Xú"ÇÌ—êò@r\'@b±g ‹iÉ‘{qêÀ¶ÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qå·tå)(-¿��b€Äb?V>1ÕÎAb±ËNL¹1H,�0dà̱:ëHmVuÇf%Nõ£†ìcU_*³1‹}h#mÜQäGh`«(Ylil�£Y€r"Ó‹]“;}ÉlAb‘Û‰¥{€Ðn\ýÁGý¸mÒ‰!‰%nå™ÐRT]´${¶ ±È‘Ö™¹§l =–œÊÄ•ß"bºòË)Je©+#Yws,W~KWž‚2ÑòkY�€ ±Ø•OLµsXìDzSn  � 8³@¬Î:R›UÝÆ±YɇSýh‡ac{çXÕ—ÊìGGÌbÚHwùØ*J[›�À¨D`…ÃäN_2[Xä¶% ±1‹KÓ£Äl}2 ô­g_T]´${¶¥#±äØ‹IëLŽÜ‹S¶…KNeâÊo1]ù奲ԕ‘¬»9–‰+¿¥+OA™hùµ,�@ XìÇÊ'¦Ú9H,öcÙ‰)7‰�† œY Vg©ÍªnãØ¬äé~´Ã°±‚½s¬êKeö£#f±m¤;Šü l%‹-M�`" °‚ar§/™-H,rÛ%± TÌùÚL™‰¥7ÇÁÄ”ä¸é³³U-ĉŞ-H,–Beìàå-+ʶÐcÉ©L\ù-"¦+¿œ¢T–º2’u7Ç2qå·tå)(-¿–e��(‹ýXùÄT;‰Å~,;1åÆEXr½=�À¨3 Äê¬#µY_m›•|8Õv6V°wŽU}©Ì~tÄ,ö¡´qG‘¡­¢d±¥± �Œ*@dV(Lîô%³‰En[0‰¥p0Ý6y@1çkS°œP<÷œ¢;ð5hv–¢ê¢…Ø ±Ø³‰ÅR¨Œ¼¼eEÙz,9•‰+¿EÄtå—S”ÊRWF²îæX&®ü–®<e¢åײ ��%@b±+Ÿ˜jç ±Øe'¦Ü$�2pfXu¤6ë«c³’§úÑÃÆ öαª/•ÙŽ˜Å>´‘6î(ò#4°U”,¶46€Qˆ,À „ɾd¶ ±ÈmGˆÄ’>˜ôÒ@'Áñ&-'äé34˜-=›n2KQuÑBlXìÙ‚Äb)TÆ^Þ²¢l =–œÊÄ•ß"bºòË)Je©+#Yws,W~KWž‚2ÑòkY�€ ±Ø•OLµsXìDzSn  � 8³@¬Î:R›õÕÆ±YɇSýh‡ac{çXÕ—ÊìGGÌbÚHwùØ*J[›�À¨D`…ÁäN_2[Xä¶e$±ˆF6ª™X岜PúòAԥ뉉 Ýqó·gXlÚ‚Äb)TÆ^Þ²¢l =–œÊÄ•ß"b lÛÍ•´L´mÝÈ2®ÔWº›c™¸ò[ºû— L´üZ–� H,öcåSí$û±ìÄ”ƒÄ�CÎ,«³ŽÔf}µqlVòáT?ÚaØXÁÞ9Võ¥2ûѳ؇6ÒÆE~„¶Š’Å–Æ&�P€È¬ ˜ÜéKf ‹Ü¶`‹®­Ö bkV›q•,'Ô5Ú¡XNhðòA}Z;OÄf)¸N€ÄbÏ$KÈØÁË[V”m¡Ç’S™¸ò[D̹²™”–‰¶­;Ù >lbÓXºº›c™¸ò[ºû— L´üZ–� H,öcåSí$û±ìÄ”ƒÄ�CÎ,«³ŽÔf}µqlVòáT?ÚaØXÁÞ9Võ¥2ûÑ³Ž’8qÃÀÐÀVQ²ØÒØ�ÊY€“;}ÉlAb‘Û‰¥{€5tú„J[-’ãMZN(®’F0‰Þ(&è©É,¬©§¶•Áðú�‰Åž-H,0œ/æ‡Â¶ÐcÉØé¥ó“³ßl³­¨d£UWz›}w4ÝïÐÖÝËÄ•ßÒÝ¿e¢åײ ��%\’X’f#v‹­O€Äâ6ž˜Ù€Ä�@�Î,«³ŽÔf}µqlVòáT?ÚaØXÁÞ9Võ¥2ûѳ؇68qÃÀÐÀVQ²ØÒØ�ÊY€�“;}ÉlAb‘ÛŽ:‰%ÅVðQp¼š3±ôæÐ=øÇqÅH!ÑG¢mf\'@b±g ‹;ŒÜ‹S¶…KÆN÷(Ÿœü&¼#KµK–qŠ|d)r%wt$ënŽeâÊoéî_‚2ÑòkY¦#€ [$=?ÜÒ¥œ{}“1fÒñx¦@‰Åm<;1³;�‰�€�œY®.z¼f¥l°ql:ª:ï98UCl¬`ï«úR™ýèˆYGÉ œ¸aàGh`«(Ylil�eˆ,@Éar§/™-H,rÛX|Y½V§F£ÖÖkÔë]įR!u|Áñ*®;ÕÔüx܈Öt`ªŽuš«J¥ÚÜ®6ÿV4fgá¹ × XìÙ‚Äâ#÷âÔm¡Ç’±Ó=Jç'¿›M㘂ÑÃ!>·}ÜÑ‘¬»9–‰+¿¥» ÊD˯e™Ž�V0LI,Ùì¹eC9!öúÆbÌø1{ŠÆ$·ñìÄÌî�$��pfÁ`5 uÖ‘Ú¬¯¦ÇæCW5IÏk Yfž]Ѹ ô¡êKeö£#f±mp↡­¢d±¥± �” ²�%†É¾d¶ ±Èm‡€Ä¢c«"±Ôk5ZZ\l~m$êû µ¯¬1ú¹%a.µåZKîQ½ù_m¹Ù€ÓøÄD’ap¼²);qå0,cXìÙ‚Äâ#÷âÔm¡Ç’±Ó=JçDZßÄfÎ &«” ¼¾<Û®ÝÊ2ü\OæÜ6Ç2qå·t÷/A™hùµ,Ó‘À †´Ï(³kµ²¹ÕÉØë‡1ã?‰÷[AbqÏNÌì@b� �g kÔ3Ö‘Ú¬¯Òcª&ûàŽÏ0 +Ø;Ǫ¾Tf?:bûÐ'nøØ*J[›�@Y" PR˜ÜéKf ‹ÜvHH,Á>N‘wí þÔ–—iöèQZZ˜§ÅƒÍ¿Çgiynêõ:mÛ°ž&§Æ‰D‡§ý‡…d—¦i½ÑfDi4ý4ê FÃ'†øÿUüãQÅÿÛp«ø³¹ô}Z³¼x•ð{%¦W ¼tÙûçºâë6ÿciõªUô˜3Ï Ë ™Ïí÷Ýä061N•™iª®_Cc3S´jõ*šš™ 7ãrBɳ²\'@b±g ‹;ŒÜ‹S¶…KÆN÷(Ç~MI,œ(c#¿®dIùJ .W÷Úº›c™¸ò[ºû— L´üZ–éÈ`CBF‘ÿX‚[ö”b¯oœÇŒÇо‹;ƒ™â ”Z=^=g ±¸‰g·ˆ˜�°À’¾«– ë(eCÖc3TU:áîÍ6¼þ]i® ìcU_*³1‹}hƒ7 ü l%‹-M� Ì�‘�º`ÒJ ¡-H,rÛQž‰¥µoqa=ú(-¥…GöQ}i‰ y¡Õë šÜº‰VMMºÇŽ£¥c³mY¤×Ùg7ñÉ'>9%üëËûDä•4÷Èíý¡µˆ-տ߉fZë×®iÒx­o¼Zh~‰¸yLKkWÓüúÕ´vÃúæguÈ,Ý‚Ùfe)¸N€ÄbÏ$7(Ó‹\ÛB%c§{”Îc¿ KËD±»Y¼o</£ßM®–¶ÜØ6Ç2qå·t÷/A™hùµ,Ó‘À FVBŠÙlŸÜòA9!Þ$ÇèÀ±{¥|fQýxý±ó‰e?f†Q$ã˜Ù€Ä�@�Î 0yŽMUa¥lÈrlT•NXC¬ÓIJ±‚½s¬êKeö£#f%3p↡­¢d±¥± �” ²�@æ,Ce ‹ÜvˆH,ñé†5 ‚?>‰åÈÁC´|ø-<²—굈˜Âm‚ w½ÐêìïÕK"±„³­x 2OApéÕé•Uúîúü4÷UfOR¥y'*¡lõºµÍiô­{ "³tË ® ±Ø³‰¥ŒÒ‹\ÛBÅâ ×°Ç~³’XRÇŠTeÒ³»ï%žÅãl·aç6žž—Å®!\j(Mnl›^&Öd®ü–îþ%(-¿–e:r�XÁ�‰Å~¬¤˜Ù‘-ž*¶ËXöcfE2Ž™ÝH,��`M…çÔ.•¾Šé ¢ê›ÈG/<µÖ Ã)îRóÉZH˜ÈâGGÌ:JfàÄ ?B[EÉbKcCC� €È�ÌX†Ê$¹íˆÌÄHF õ:<>Kõ…Zܵ/ØŽ)ö¤ƒPm¹,;´jÕLЯٷï�ízdOk !þßœ’h9 Š– ¢Ö˳h!ª´—êè„2Š+ÿî/1D-–MìûÚµkš/ȸó¦o òß°qyÖN g|™_$>¹@ó“ó4>9N“þ 3}Ë ™g÷ö ‹M[XŠÁ(½È5±-ôX2vºGéü8ö«KbÑO‰•Éà™ÑtlíÈ8¾þ·Â6ñeXÂ9Ð¥e`“[hÝe¡@æÊoéî_‚2ÑòkY¦#€Œ,¤6~£Í-?”b¯oœÇìÀª6žLggQH,öcÙ‰)7  \`5:UBùŒË©*Nêα‰}dTfeWçW¥˜ê)³ŠT}©Ì~tÄòó« íA—,~„¶Š’µw ü85€‘ˆ,�`t³B[Xä¶£Nbi훟› ä‹¢z­, ä/ËsÃ×¾C>ðH[ý¶ïÝIÃŒÏæË÷oÚ¼^úòëiÍšÕÁ ÞÄÉyªoXCó'çB"Ë�¨gei8Lµ‰Åž-H,Å`”^äšØz,;Ý£t~ûµIbé&^Îxn{Ÿ‚vO5NÕ’y Ÿq]íÉÍœ^'9–‰+¿¥» ÊD˯e™©-�” ±Ø•%¦|vNñK¡ç $7ñÌãæ*°‚À*1H§§ò¥ÜñÉ:tŽMì# ¸Ç7H#Õ¥-›«çÉÞ©Võ¥2ûÑ³Ž’t]2ûØ*J[›ÀHD`…Ãäf?„¶ ±Èm‡Ä’i0¦»¼´Ø.=Þž‰åûî"±Œ2<Bÿóù¯Ó‹~àÙá2C ¢úrêÕj@ܩޑþ¬,× XìÙ‚ÄbÉÖb(²¢l =–ŒîQ:?ŽýêXX!kÊdÀî®ø9œÛ,3£ø³žuì¼D»hLo,-ŸLrc[½2±"så·t÷/A™hùµ,3µ€’Ã&‰%œñ³m ÒhéQNˆ½¾) ®·I£ÁŒ¦%Y%;™%­,È"ôœÄâ&žyÜ<c¢QVXC S%ºú”’±õd©ø¾¡slÙ9›œÒ¡÷ô3jù¸¢­[œª/•ÙŽ˜u”ÌÀ‰~„¶Š’Å–Æ&}†h^’D`Ãä?„¶ ±ÈmGh&–@ÊêÑöz-¬/.¶‰,ûöî'Wð—'ò %ƒ077Ì“„SOÛF×\{981G_øì×iaa‰tððƒ»BK³—üms40Z”zÈ,ýƒ× XìÙ‚ÄbÉÖb(²¢l =–ŒîQ:?Žýš’XúÚÚ„2i« Áõ¥"Î¨š¿®¥ .¹´¥†¸‘2ðèô:a¡@æÊoéî_‚2ÑòkYfj �%‡M‹?C¨N…[i$–è{8K(5û¶U….™%m<,BÏH,nâ™ÇÍ3&U`5:U¢Ý×äT•Áû8YI cúн¯xQç”ÓÂD ^šbç¯Î”¤B-¨úR™ýèˆYGÉ œ¸aàGh`«(YlilÒgˆæX�‘X¡0¹Ã¡-H,rÛ#± 6‰?qwÍÁBŸDâ“;––ô"YqæÙ;麧>1Qþàý»èË_üv¢ü’KΧ©éÉàsÆ™;é®;ï',,,’_xÑ/×j‹‹4¶j*Ã`kï‹H»¿pKµ‰Åž-H,–l-†r!+ʶÐcÉØé¥óãØ¯K «G ‹—%Èã IÍ]4KË öPg©¡ÄÉМ^',´È\ù-ÝýKP&Z~-ËLm ä0_"¨¿/êÿøàûžþTºæš«hçÎ455A@دݵk7}å+_§Ï}þ‹Íþû›œu¹Äb?–˜rcX�`ÈÀ*áë¤ÍtÖów ÔfõÓ96± .º–üÜå[©Šá¶ö”¤ú*ZPõ¥2ûѳ؇68qÃÀÐÀVQ²ØÒؤÏÍ+°B�" °ar‡B[Xä¶e ±ôØÆ£ÙXüÛ±jcïžôoÞš8#ËÞ½”öî?H[OÙn<LYà“X¢YYjµZРéLgí‰I$m/$ƒÄbÓ$K¶C¹e[è±dìtÒù¿œ k4˜k ªÕ£65”±æ€§îp,‹ÉuHÖn¹w¿Gk¦ª‰vI>ûÈ,NË“…v™+¿¥» ÊD˯e™©-�”YûŽIúþþåå%Z·v-ýÒ/ý,~úitcjj’Î=÷ìàó´§]Gò'AÇŽ È,ƒ‰¥ª`¤õ…É"ôœÄâ&žyÜ<c¢QVXC S%‚~¨Z±‘ê€Ç’Þ8tŽMìc�TmÝ€>hÜŒ• xÝ›J5„mÝâ4ÇôüèˆYìCœ¸aàGh`«(YlilÒgˆæXA�‘Xa0¹Ã¡-H,rÛ!'±¨{vPRÜh6–pr7O7‹ ‹tûm÷’7}çÚõ𣴰°@'fç2ÙÆ—j4bâñÁ½oÔL˜,†e ‹=[X,ÙZ åBV”m¡Ç’±Ó=Jç'¿i3¦p‚ÌoGæ–­öÄ ÜH´RìÕæpnçÀÉRZ½ã„~[´§=V‘_­q=§× í2W~Kwÿ”‰–_Ë2S[�(9l‘X|ÔjËÁ@bÑÙgžNo~óÏÒoþÖïç.if–Ádu¹Äb?–˜rcX�`ÈÀ*ÑH¹ŸSê?¬¬6«ŸÎ±‰}$é'tìƒîzò€`tú¼´qN[nˆÓÇpmcU_*³1‹}hƒ7 ü 4|h…a±¥±IŸ!šW`…D`Áä?„¶ ±ÈmK8Kð»¿wÏÈBC‹ƒ²ÍÄÁ¼k´, ® ±Ø³‰Å’­E ãËÆ‘{ œ 4lçvØbf°åY½9Úuàø2_œ¢ÙS_@'×]Jß»évz×;?BGŽèö•¯~½é'ß@*¼ýmÿDï{Ï) ô§¿KOºæŠD¹ßŽÿÄýºóö»TnhÕªz×ûÿ‘6nÚ¨søàazõý(ÍÍÍ+}]xñcèožUwlïWP}±ámÚauÅq>‚2ÑòkYfj �%‡ÍY<ëõzÐ<óOm“XüY4ÿåŸßOŸýÌ—èð¡£mÚ¼žù¬§Ð¼þå466Y¾ïûžJŸýì‚sX­V5¼¤¼Ò´zoÓs‹›xæqóŒ‰FXA°Aôð¡ ±pÏßnaÔfõ³qlVòáØIèqØb­Ä÷¶—ÆM\úÖÿG6Ù®ŠT}©Ì~tĬ£dNÜ0ð#4°U”¬½Sà'£!šW`¢B�°"`r‡B[Xä¶%%± ‚ÿ«r×K ‰h6ÿW~Ê:Ñ3kì\–H,ölAb±dkÃø²qä^'( Û¹¶˜=ò¾Û»†_ŸÄrðø2[š¤Cçÿ4Ímx"y•1zÜå£g<ûºDó¾ÿ#´{×Rá5¯%mܸÒð×ñ÷To¾ÜKB¥R¡Ÿþù7)–qòäýãÛÿE©³qóFzÍë^Ii¸ã¶i¦6¸”baJ~Ùa|¨+Žó”‰–_Ë2—~ ô‘T6F=ø{íµOjïû×w|€>ð¾‚ÄáƒGèýïýHpn"<¹uΙUƒ{_Z&ê‘Eè9‰ÅM<ó¸yÆDà ¬ °¦ ­Z4’ÇÓƒO­AõÅejÌ/Qc®õ9¹~‚íÖß“1y[Ïà37賘°?!öœág¾o>áÓ̧îçß×<Wþ9ãÞ¾i*ÉBƒ0`ë§êKeö£#f±m¤ž_‰¡†­0,¶46é3Dó ¬P€È¬�˜Üá‡Ð$¹mÙH,)Ë…$V€2"‹ÿ×w½ÌLì¥$‚ÅoÝ”^Ab±i ‹%[‹¶—&¶…KÆN÷(Ÿ!ñ;h<ſQ½ÙLÎn¿žj›ºlžûü§ÑË^~= Âòò2ýÍ_þ©àÏò†7½–ÒðÈûè??ø1¥ÎÅ—\HÏ|ÎÓ) ŸúÄgéÎÛïVêüà+_L;wžJYÐn#ÓÆPœ–§€0º2|e¢åײ̥_�(\üè!ryê©;Úû>óé/0Ÿùïι9í´°N/µH,öcÙ‰)7‰�† œY0 ‹ÿOÊh,ÕˆêîLbgpÂÇ*28´Û?¤<¦Î°Jì¼4Ï)/ׂs×BOíÀj$lë|ªúR™ýèˆYìCœ¸aàGh`«(S¯MØh¿Ñ¼+XZ(9LîðCh ‹Ü¶$Õ¯® >v/-T¾§®¥…Ø`:H% Ë${¶ ±X²µˆa{Ùhb[è±dìtÒù¿ƒÆS¢vqa9Ü^Xé@W>™ÅÇ?ðñ>ÙW¿ü úÖ ß¡+®z%áy/x6}ì#ŸL%—üË?¾›žñ¬§)—zÓO¼ž¾ò¥¯Ó¼bY ¿Íÿ«·¾Þö÷š8ƒ‹¿tÁ›~úÑoþòï‘ þŠ{àæ``¯Ï.Þóα©œË“…v™+¿¥» ÊD˯e™K¿�PHû‰ºvSS“í%‡wÎÍÔÔTë›ú¶³ƒÛzXìDzSn  � 8ƒ@ð¼=n׎ÏQen‰®9¶@—ŸX¢íK5š@USb©Ù4î¯Ò·WÓ7ÖMRmj‚ÆÖÌ?tìe}?ïðÚ:諭Tf?:bûÐ'nøhøÐ ÃbKc“>CÔy`…3²�%†É~mAb‘ÛŽ‰E=(¨7"±Ô#Æ~ÉÍÆâÞqë�ÙÖƒ³±=ƒÄbÓ$K¶1l/Ml =;ƒ\©2W~‹ˆ™ ךa ]«ý¨L$šùd–—¿ò…eoûó¿K]è§~NoY wü㻕:›·l¦~õRn»õúügÕ¿z¿î)×( 8z/ÕÄg§×‰å˜+¥® [™hùµ,sé�J€"ìÐõ£„ü‘!m<,BÏH,nâ™ÇÍ3&N`3 ’ÕT¶`wƒiùð Z}t~n×1zñ¡9:c$øç茥:½ôHóÜí>AkŽ-R­y.ýs:øÞ¦1“¹­ó®êKeö£#f±mØ‹·ÑîhøÐ ÃbKc“>CÔy��‘(+LîðCh ‹Ü¶lË ¥iĞȻfdѰ]}Εtê ~•Îzí_Ñ™¯üSÚö´¥‰õÛSíü©½ž×X¦?®/Ð;–çè/—çéuõ%Z§1ò1==E?ðâçÑïþá¯Ð_¼íéw~ÿÍtý‹žM““©¶^‹Ä,Ô‹»f3–H,ölAb±dkÃö²ÑĶÐcÉØé¥ó3ä~{_Üé4Ï~ÎS’Yzðúȇ>¡´½ä±ÑÓ¿ï:JÃÇ?ú)ºëÎ{•:?ôª—Ñ)Û·QÞþ¶¢…ù¥ÎOþì©:V¥4pʸžêü¥Ù‚ÄR@Lã|e¢åײ̥_�(Ê8cçÊ�H,vb‚Äb7&î'À BV +ÔH,þ?õãóTY\¦7Kud8u¹No<x’*Ë5ªÏÎçvð ÷1 ž‹T}©Ì~tĬ£dNÜ0ð#4Ðð¡†Å–Æ&}†h^ �–€.˜´ŽlAb‘Û®0K/ÂÙX¢¥…ŠžG[Ÿò¿hÝ…OïÚ=¾n­>÷Úû鿤¹‡ohêÓM~«¶@—p§Sµ¡™ëé͘OmÔè-cSô°7˜3¹qÃzúå_ÿ™æ ¹­í}ë7¬¥3Ï:®¾ú‰ôGø—tbö%¦M^‹¨ÓKÓI?WþÀmò/à Ë ${¶ ±X²µˆa{Ùhb[è±dìtÒù2¿½cEKŸÌrôø~ú›¿y{×þ={¤FM=ºu|n?ÝûÐw•:~»tôÈÁ¦¯³“•šmÞþÃ4}Ý¥ôuäÄfZ\X ‰q1´Ùv?ðÈ-´´´” ðÄÁ—j¼ åΟ¾[v„ ÔÇùÊD˯e™K¿�P˜’X@‚) ^xÆÚdXìDzSn  � 8³ “z´»±¸Üìª1]{|$ ðÉ,W_¢¯NŒç¶25ÞZžÏóAª¾Tf?:bûÐH,ýd4Dó �m`F�häu�‰E½×LSd[vKltaÐ@¢¿+>#‹*¾O`é%±D¨ŒMÐögý­Z?Pþúúb‰%ŸÐò+µOˆýã?õº.K§¾ƒ~ô¯"˜CKHÔ‰b\'@b±g ‹ÜV| ˆ—&¶.dÚ¶;Ý£t~ ò«œõCj—€—ÿàËèMoú±ööégœA?ö¦75ÛËJâçö;o£|àý©¾àÅ/¡«®~’Ò×;ßõ/t÷Ýw¥úúå_ùZ·a½Ò×ïýÞï(H,]}/5‚vW³<¾qA˜@]qœ L´üZ–¹ô �%@¾$T*{PŸKXìDz3OBI1QÇ ‰EÕRT8Ÿláã ³‹ØÁN†ý^^Œ–Öè¤r²(T}©Ì~tįI 8qÃÀÐ@ÇV[›ô¢y€.€È�ŒŸFìÛ‚Ä"·]á3±DèZZHÑAÚðøë•~*ãS´î¢gôíŸiæö̆ú—;š:W ºœuöéô˜ ÎUÚ^vùci{ÑÅGDb ‰:>Âc,bÀ$˶ ±Èm½ú;E¼l4±u!Ó¶ÍØé¥ó3„~’/t|¦à•¯ø¡ö÷ßú­·Ðää¤Rÿ-¿õ›±¶j0¦¦¦èW~õ×”:G¥¿øó·R.¾øú¡W¼R©óÕ¯|…þû¿?Eiè»ëÈë›ÝfQšÓ2auÅq>‚2ÑòkYVTL�Œ‰ÅŸe¤ ;PŸKXìDzSn  � 8³ ³:Çþú³±ø•rÛ2fc±…íþ¹lžSng8ØÇy<ÿ«úR™ýèˆ5.2Sp↡†­0,¶46é3Dó �}ÀÒB�0Œ/'Ab‘Û–”Ä’}БÛË ©^žU¦VK¥arë9}ûÎnæ4®q|çqƒ¾ÖS.çœ{&éàì¦ÞÞ½ûÊüYÂ[”5,'XìÙ‚Ä"·‰¥™¶mÆN÷(ŸQóŽ ’i¹öÉO¦ç>ïùJ|äÃtÃ7¾Aiø©Ÿþ:õÔS•:üGÿ—Ž9Biøßý=ªV«‰òz½NoyËo’̲Ût8u3¹!L ®8ÎGP&Z~-ËŠŠ �#‚"H,ªq’Ç]?ô²Ç¼ÿ 4 H#³¤—Kþå–ªe-¥ £HÆ1³;�‰ÅM,�9pfAº:§Œ­7Âo“ !n¾ça’ñøóNïÛ×þéI#äX"¢ZsèøÑ³Ø‡68qÃÀÐ@ÇV[›ô¢y€�‘Xá0iÙ‚Ä"·]á3±ô.¯'±x 'Ç3yæ4Ù±1øåÏÈâçcÅ3Èǰœ@b±g ‹Ü$–bdÚ¶;Ý£t~FÍï€2‘ÔŸ(òÛ¿ó»J……ú¿ðû”†;vЛ~ü+uî¾ë.z�‡Òð¢}?=éê«•:ï|ç¿ÒwÜAºðÏOÒíÙo{Û/éX­ K1󔉖_˲¢bÀˆÀ&‰E—xÁ¨? {•­oZÖÊ5Ã(’qLÉØ  ˆq’<cš_¸?�#Î,©3eóxrÆömß‹ý!ìžÙŸŒH ÉÃîdýÞÚ?¸HV1eÁ™Æµ“ªhõ˜nøhøÐ ÃbËnØh¿Ñ6@"@dV0LZG¶ ±Èm±œPŸm›Äâ?‘'œŸúâ Z>~€Æ×n!÷ßß·ïA¯JþÊ¢i É}V±{èÁGHÞŸü+ƒpɤÖÒI4ø—ç]/ØkdÔﱉŞ-H,rÛ>K½Ÿ"^6šØºiÛfìtÒù!¿Á‹7E™T*a[U«×é䉔†W½ú5tá…)uþöoþšvíÚEiøÍßúmšžžVêüÆoüÕj5¥Ž¿<ѯý†z¦y¢?ûÿþ¥á‚ /ìz/ûÚõ½žñ—Aò`ÿ {½ju¥À|e¢åײ¬¨˜�0"¶™X�]ä_n©ZÖRÊ0Šd3»XÜÄ’Ç€‚À™ƒÕ²¾pר$ÿµisðƒÅh»Šçumû]®h?Q÷>¢Á?vdêÌvÝþ2…]èp°§-otÉ:©{JÒ~¢nûþ½ÙŸe®¥”YWúØ+‚´#½q`U_* XWÌbÚàÄ ?Bƒ¬u*“’àØl´ßh@ Y€ “ÖÁ‘-H,r[Xl}RF%•˜qô–OЖ'ÿH²×åE:vÇçûöŸlºý\eŒžÓH~±¶·ÿ¯¿©¹ïÞéž»ï§óÎ?;Ñöæ›o§Ý»÷%ÊC" 3³h†X¥Ù3H,6mAb‘Û‚ÄRŒLÛ6c§{”ÎÏøíºý«ÆbeÂô>þ_ŸÚ”[¾{;<y’T¨T+tùOõÖ·%êœ<1G·Üt]÷¤g+}mÜ´ž¼ïa¥¯=Ͷ°Z_•êë¬sΠýû‡•:÷7ÛßKs¥áÂKÓü÷ëŠA;qå³Fjy²ÐN så·t÷/A™hùµ,+*&�ŒF…Ä2,Ë� ’Þ¿ ½éiY»”2Œ"ÇÌî�$7±ä1  pf¾zOEH^ >I$–JlŸ¯Ui[¼‰ÅëöÓ!˜xíåw+ôšBKð,á…}è5íJó¿6e¥é0Ò‹bµŸ?âÓ€·–ëá`¬:~*:?—ðí#Ûøª´Qkú—ÏUt~Sµÿ1ëŠYìCœ¸aàGh 3üO`±¥±IŸ!ÚF�Hˆ,À „IëàÈ$¹-–ê³m÷Z$–JÅK\ZÈÇÑÛ>K“[Ï¡µç?¹ß}™ö~þ¯©vâð@Û®NÒiÜ ‹¸¿ëu¬ûÿ5åËÞà¼ÿömÿB¿ò?C[·nî“û/íþñïÞM*„K ©gdI†A§$»¶ ±ÈmAb)F¦m›±Ó=JçgÔürŠRs÷ÜÃc´°<G«ÇÖÓêuëI…©‰ªí›&Õü(GO.ÒÖµ;( &·±“à·é‹Ç‰¶­;•”h ®Y>¥é+¹=¬ss㩾*•*MÎnjù¥öi‹¿8k·¢É§t ¼ëå§8HêŠã|e¢åײ¬¨˜�0"(ÓL,öHùÀå©çm²7=-kÇ“aÉ8¦dl… 7‰�† œY VïSIú•Fâ$–J4öÛ&²T‚~X5˜q4Nf¡6Ñ$tÒŸL|öÖ•J«oÐ&ªpH4a/Fr \…û¢YZÚyR‡€ây¡Ìkf¨½/Ôé&Ú6ÔÚÇmô|Óî¤RBçÖª¾Tf?:bûÐ'nøHê”¶’àØl´ßNÊ �ÊY€“»º#[X䶘‰EiÛ&±(– Í™ýÂß5_~ÝBë.þ>šØp*qm‰æ÷ÜI‡¿ûQZ:²;Ñt±ùyËØ=·^£§r¶5}hƻѫÒ«ãtDøÐ¡Ãô–_ÿzþ žü²}ýúµtäðQúÖ ß¥O~â󴸸HÊ£æFëÔmTÄð\ƒÄbÏ$¹m$\½l4±u!Ó¶ÍØé¥ó3j~egš{`¼ùïºà?Ì¥È'iGó“ŽÆ‘t_kè,ÒÁÂÑ4qZOç’æ5ÿ¹’ÂÍø_ïwо˜•%µ\X!#»2W~Kwÿ”‰–_˲¢bÀˆ`XH,ª<Fœ’6ŽmQÅn±ê9‰ÅM<ó¸yÆ4¿@bFœY Vgi‰Åߎï‹ÿmÏâB4p6ÍøòAþ•i¥ôó"" wöQ‡ÐäÔšÝ%ðAÙWºò°?Œ'µx&Ôæ¶®1™¥¶\©úR™ýèˆYìCœ¸aàGh`\§TJ‚c³Ñ~;)'�('@dVLîêŽlAb‘Û‚Ä’j‘XB6~ÊÅÖìÌÞûµà“ËMß«ŽÓÇhœ²bnnŽ>øŸ¬gdáÖŒ,ºçÐð\ƒÄbÏ$¹-H,ÅÈ´m3vºGéüŒš_NQŠí®P‰ß¨ þ .i=¡4ãÖ@ã Qƒ‚ÁÐÌ~QWç#(-¿–eEÄ,¸™€,pIbé÷Ýz±dò“Ÿyo&ýç=ë•´Ò~Ž“ZÝ$]1u‘aÉ8fv ±¸‰% �3 Äê<HµwÆmåë„ÎÌ*ñ™Xâ$F/"»´ô¨MhS–-rIHR©£E…8X.ÈãØ,-Í}‘4Ê­=ËJûˆâKõŸŒ6‰…£Ùb¸=CK`ÝC^1"³ÄÍÜfÌôH3´«ª¾”47¥˜Å>´Á‰~„êTv%Á±Ùh¿”�” ²�+&wuG¶ ±ÈmAbѲmO5YñìL‘8d,ÑÒB=§bÐ/ز î °‰Åž-H,r[XŠ‘iÛfìtÒù5¿±2‰rõŽFðø€nÌ/5‚Ïå:ÓXÅž÷‡D”Öw0+Kj¹°BFve®ü–îþ%(-¿–eEÄLË�†eZNè�3±Øe'¦Ü$�2pfZ=ÉŒÓ~†Ç]’PéZZ($±T}"K%š•%üYˆZ$¯Mfñá ŠäW‰‘Xáì+ìu-­Z¼FgFÿ7 ÁdÙ­™[Øë,)‹fz cõ[:3ºŽ2Kèà -‚~&·sµ²ÌÔÎëÙ¶Ña`]1‹}hƒ7 ü 4|h…a±¥±IŸ¡“r€rD`Àä®îÈ$¹-H,Ú¶!‰¥2pÊÈ2 $°p03Kú‰á¹‰Åž-H,r[XŠ‘iÛfìtÒù5¿œ¢ÄýÛ•³­4A½Ù¶úŸ…åF0Þé“Y¦Æ*ê%¸Óë’u^|z^²Ê§¶Ì•ßÒÝ¿4ëIf¿–eEÄLË�† ±” ±Øe'¦Ü$�2pfXu¤:CãÑrAí™X¼öì+]$f–Ö,-íe†Z3²ôö ‡;3±xÁì+¡%è7GK U:K 5|û€gþâ!òÃ=‡_ZˆÛq»I-]KIî"³„³À´ú™R2‹­û“ª/•ÙŽ˜Å>´Á‰~„ÆuJ¥”çuÿm,°Â�" Pr˜ÜÕÙ‚Ä"·‰%“mDb ?T:„K µfdQj&\×Ñ/ÇÓlAb±g ‹Ü$–bdÚ¶;Ý£t~FÍ/·_¯QÛæffæéÂ‹î¥ /¼—¶n9DkVŸ¤U«ç’—ìɈ³«hÜ[¢å…qš?2CËG§i‚Æiy‚iz¼BãU¯V–Ö€åÀ¶U5ȇºR`>‚2ÑòkYVDL;U �rÁ¨“XR— êmW†½skéä€Äb?–˜rcX�`ÈÀ™bu­qK&íÐÑrAí¿^´¯Cl©FÄ–J¸ä|gy!êë³Ï­™S*­™Vˆ£e„¨õÝ£z£ô9ý±ØÀ.˜<¥.5äÏæÒ:õ„âË qWþݤ–´Bݳ|S½xÉ,iŸZEç=ûuÁì0 GöÓ_ú�qÝ'àD¾É ª¾Tf?:bûÐ'nø×)•’àØl´ßNÊ �V@dJ “»º#[Xä¶ ±d¶íZZ¨„¿4ÖmåFJƤw ±Ø´‰En K12mÛŒîQ:?£æ—S”c/Åvœ³™fÌÑìá9²…5kNÒ3Ÿõ%ºâŠ›©Z­‡;+Óä­nÞ+Ö…Ûü&®ùi´F¹µ¯ümýf®£×–µlšXÝŒãcrõ2Ñæ¹`àðľÕtð¡õ49?FWÑÌDŒü“Z.éebMæÊoéî_‚2ÑòkYVDÌ´|�`ˆ0²$–’Î`èŽM¯À@bqÏ<nž1Í/X€‘gˆÕY¹©5…‰6¢ñ^"¯µDnk6–J‡¸Rm'ÍÊÒ»FNïŒ,ÌÐÙh/-XšáÂYbË Q¸ÜPÈ} —òш– H2gˆöDÑñÄga‰ÏÐ é}d–h™¦AÄ–ñ©ºâ‡™¦7žJ{ö<BS«6Ó…/þ9ò¾û¯ý'36Uh쫪¾T°®˜Å>´Á‰~„Â:¥§$86í·“r€•Y€’Âä®îÈ$¹-H,"ÛˆÄâyú¿2ç5ãÔ8e’¼¥UvÏÕôcnÞ¼¶li¾´;q’öìÞ.ù£‰ÓN­Ò¦U:p°N»÷Öµl:K 5‚ŽS? Ï5H,ölAb‘Û‚ÄRŒLÛ6c§{”ÎϨùå¥[K vá6Ú}÷:qxžlàÊ«¾K/xá§ibb9 ¯T¦N'or;…]ºfÛÉõf»Xkþ­ßÃO­ýa»©çuéÔ:6ÆÀØþÀäší³´jë :rÿ&Ú³o5m\]¥«ÆÂ±WêÜê»f<k †:»­™§uÅq>‚z¢åײ¬ˆ˜7³�ÃLbÉ77 zå�‹›xæqóŒi~ Ú#Î,«³Ž4ã ÷ÂÒ™»#¨Äÿ¶÷Ç–jÏÜMݳ²D3²DËq{V/XZ($±T‚å†( ·p×rCÁøl`GÂIŒ BÁwjí‚·fqéi¤ßˆúŠ™YºÎGŒÌ²vz]ùª7ÓºígÛ““S´¸¸@4½ž®Ûv}yÿ]ÄKµf?ZøZ4ÊǬ+f±mp↡qR) ŽÍFûí¤œ2 `ä" �tÁ䦯°‰En ‹Ø¶{ÍTõEÈkÇié•§SýÒ ­®àÍ×hì{iü3*ߺs;½îõ¯ ó/8§½ïð¡#ô¾ûÝðUaéòÇMÐOþ¯ÕtúÎNst߃5ú«œ¥Ûî\VÚÆ—ª-,…ÇÑ91<× ±Ø³‰En;l$–4¬¨—À J…æcQ6j~9EIöâÙ_Z¨Ò@4ó]ñôü~š®¹ö›ÍIª¬º¼9ð¶“‚äÛ„Ÿ€ Y y¸|<¯óÝð6R©2m:ï Ï,Ñ¡û7/,6­JèRrûŸÙ•¹ò[ºû— L´üZ–Ó°~�@žõå„t°öõ¦¢°øÝ÷ÑâMï£Ñ†^Äâ&žyÜ<cš_Ùb¢Á gˆÕ»ù<X*¬ÑRBZbKÅÿz¥BÕÖlÝÕÖ2C‘.‡#¥´-þÇÿ9ÄXÓÞŸ…‚%…*á,,ͽÖ÷xÂ-r ±Bˆ€Báþ…/û¯E¢ñóŽIÛç¨EfiÓbb³²DX35Cÿðš_j“X‚}kÖ†D–&vÏ wVtûçáqtmÚ¸±®˜Å>´Á‰~„YëT&%Á±Ùh¿”S¿­*Pv€È�m˜Üò¶ ±ÈmAb‘ÛúŒüÖl,áÒB ï«ÇiáÍo™ìÞ?=FË/=hã$¿ïá¶§îÜA¿ù–Ÿ§é™é®ý7m ŸøéÿE«VÍÐç?÷•¶W?q’ÞòKë¨ZíÞΙcôÿ~{ýêï¡›oM&³tfda:qô8mñ÷Õ£å¤`ƒ© ‡¯.n ‹Ü$–bdÚ¶;Ý£t~FÍ/§(¥Ù¶ä3²D¿”3õ}ý ?CW_ûMòÆ7QeÝ5äU¦ÂÙU‚YTšƒp¼H¼|˜¨~"œ]¥µ„P÷_Žm‡Änosø7a6–AX{êñÀìȃAÍuÓÕ®a>npWs—uëô6»¨+ŽóÔ-¿–eEÄòf�âX $Àz‹›xæqóŒi~€ÄŒ 8³@¬Î:Rauˆ–Šfd‰V òÚËuÏÌRƇ#’KL§++ûpÜšq%ؾWBòIÈa dáŒ,Qù%Ïj-OÔò.7ä…ý?jQW¢YYZKµgy ÄþÛL uYY¢oë¦WÓ?¾öÍtñŽ3ÛÇS¯Õèè±#¡¿æñß¿»9¶½qyÕh¦Ò‡ª/•¬+f±mp↡qR) ŽÍFûí¤œú…hU•�Y� €É-_a ‹Ü$¹mëÜu–R/˜°üý;úH,]ò§o¥ÊwSõž}²×¿á}$–8^ùê—Ðwoü9r¬kÿÔ¤G?ÿãkúH,Æ›­Ó/þïµôúŸ9LµúàsŸ‘ea1š‘Eÿ%\?3±Ø´‰En K12mÛŒîQ:?£æ—S”zvw ²÷È<3²ø ˆ4ßO¼ò;tõµ7$–ê†g>ƒXüß·-í'^¸¿ù÷�qŸX»ó8-œ £‡ÖÐĘGÓã­ãlò hPW ÌG¯žd÷kYVDL“|� g€Ä’"2ªÅ¿RЋ‹›xæqóŒi~€ÄŒ 8³@¬Î:RÎlØFoûÔ&°Pk¦–B Å–ò¼J{Y¡>"KûS¡°5ã¶$ ¨´&þlû­Ÿl´–ò·c³­øKÀGy²’U8ò[~(Šë“V¢ßaF#»™%Zf( ÖPg‰¡tôfr†þþ5¿ØMb©×iï¾ÝT[^ÆÆ?ó¯FSªál/YÀ¨êKeö£#f±mp↡qR) ŽÍFûí¤œú…hU•Y�Àè–¯°‰En ‹Ü6ösç s-+”ôÞ|˜¯]¹‘ÒP¿js‘eëÖÍtÞùg+í&&&èŠ+/£Oÿ÷ÿtí¿ìq´a½úÅÞ)Ûªtñ…c‰³²4á¯ÌÖÿ²ÿ tÃs ‹=[Xä¶ ±#Ó¶ÍØé¥ó3j~9E)£_3²TZ~¥¾W­>AÏ»þSárBëŸÚü;N>‰…y‘ǾA¼´ŠÆ¦sÓžÃÓtl®B“k+òS³• ³a³Q–ºâ4A=ÑòkYVDL“|� g”‰Ä¢C™}Ç‹iá9x¦Ð‡^Äâ&žyÜ<cš_ ±�#Î,«³©MtÈ+^|çÀeƒ:Äj“X:ËuymSÚœ•æßð[øÝ —åiÍÎâ5Ç”ÏÜt µy{°dÑû¢{Ýe°äm‹hâµç`áÎ,,áV‹2ãË՛㼙¥ÞZf(\ÞÈëò‡¿œÐß¿æ—è±§vƧýñâ}ûvÓòÒR‹ÄòVâ#wÖNÊ U_*³1‹}hƒ7 ü Œë”JIpl6Úo'åÔ/D« ¬$€È¬p˜Üò¶ ±ÈmAb‘ÛöÌÙÍÆ¢ZZˆW7›©*¥f³e¢oßæ-›H[¶öëmߪ÷ëôíÛ’‰,þì+áÒB©E Ö¨³ [#”ðÚ‰En K12mÛŒîQ:?£æ—S”~+žý—NÑ`¡Ô÷3žýyš˜l¾­¾²9H8I‰¥1O#Ÿ'®§a€WmКӎÑ®Ítb¡Nk§:´n >†ÔЀD­œºâ4A=ÑòkYVDL“|� g`& z‹›xæqóŒi~€ÄŒ JHbéE4ûJð½ER‰öÅ©.Ñ;Ë u“/½Ö˜T4ÏJ{†Ÿ´âqkª”U›ûÆcè™>!XÒ'Â3/|"}ñîïÒ‡¾û•p|‹ÃÀ'Ç– è(­YZíïdüx?Pû{‡HC_rˆiµ?Ë«‘.é%±ìÝMK‹‹]$–S7¯iö©3ΔªêKeö£#f±mp↡qR) ŽÍFûí¤œú…hU•Y€ “[¾Â$¹-H,rÛÎŒŒ]í¥…’ îÍ×Õ/"œ¬÷íš;9G:˜;9ß·oö¤Þ1ž8‘LP‰/-d0ä‹M[Xä¶VI,9tiVÔKà¥Bó±(5¿œ¢$ô둃¥…ÂUÉE¾§gæè²'ÞH^µ9à6¹³™{-Øß8öõd‹?¶¸È¹˜%ð×<Ÿð(ËjH«·§“o¤“‹Dk&+ý“Ài”I0+K;M¿VeEÄ4ÎGPO´üZ–Ó$�È ±�éÐéÔH,Žâ™ÇÍ3¦ùE� 02à̱:K¥+”zÓKRé’yݘ®Ð^«M H'áø²¿ß'Àœ¾ñúË®£Í«×·õã¯ÕŸzþeôíï¢ÝG7;•Üê“DQü®*·– — ‰âSU*mfŸ2Xšˆ[­›×öævî«'fèïËYÔ›~Ý·‡úH,­BƒÇvtFÛ})ü°®˜u”ÌÀ‰~„ÆuJ¥$86í·“rê¢UV"@dV(LnùÊ· r[ÓØBÛ Ã$‡†-H,rÛ„s.+TQ/-´Ü ê]Ç©~ÁZRaìÖc}û~x7=rœÖoPÛÞ|óm}û¾û½%ªÕ™ÆªÉ•fq‰é–Û–å% ²°pÀˆ)óº¨q[#”ðÚ‰En;J$v(Ï[¦m›±Óí<‹²QóË)J~]ÌÈRiýÚMâû1ÞÕ|kÞMNÑ2zþRBƒ–ªkÐÂ}uªlê™X"4ÓÛX¡©s«4¶!ÑR©¯?I4»†k šïØpƒûGÛB…Ó•RWœæ#¨'Z~-ËŠˆiÚ–@ŽXÉ$–O|ú=d‚÷¼ë?šŸÿ¤òC¯À@bqÏ<nž1Í/X€‘gˆÕÙÔ#D44´gÔ¤i%üÞZŠˆÂ¾íÓλ”žrÞãÛý;n{ܽäÏ)k7ÒÜò=ÿ’«èÜ­§ÒR­F½ù+ô½Ý4ýpgvÆ—örBªsø=œÙ3\Öˆ[¿Òˆ–ò±zbšþöÕ¿@—ìè&±øË -,Ì&±d;qd¥ÜXWÌbÚàÄ ?Bã:¥R›öÛI9õ Ѫ+ ²�+&·|…-H,r[Xä¶=Ë Å_ZHuyŽx7Õ±ù`?6XËÛ5GÕõí÷;xÿ‡é?þÚDß7|ãFºÿ¾‡úö<Ô ÿü¯yzù÷Ï$Ú¾÷?NÒñÉç$$°„K eÁaÌÄbÓ$¹í¨ÍÄb~ä^'(šEÙ¨ùå%C¿YS&¦Çiý)«‚µÀuà·¾k64Û¹s(3.¿â{¡‰mä/)¤:woŸÞòžÍݺL‡ϤGGsõ ¤jõývsîØÕ—ë‰:3Çiç±»hûáhæ¢1š8-} Âé 'hav Í/7hj¼’üc7Jþ!\— åe©ŸÆùꉖ_˲"bšä�93±Âó’É”QD¹¥jYK)Ã(’qÌì@bqK *P 8³@¬Î:RÕ! ƒx­¶›ÂñQ¿’†û½ö¾`Ù¢öÌ(ÑúΈCÀga/ ¬š¡—=á©´sÃÖÀEµ=9x‹ÌårææíôÒ'<­Ù/ì,Sÿ#×<—~ë#ïhöjJÛ6XB(œ% ¶°Oš©´bs³P¹=+Ëê©iúëþù>ËþG÷ÒÂü|ÐW‰EåÇÀ©vǸN©”Çf£ývRNýB´ªÀJˆ,À ƒÉ-_a ‹Ü$¹mû©°­?KDfQ]£•NÒäßÝGK¯?‹x¦ûeUõþ“4ñö拳úà_ýò7iÕªUôC¯ü~ënR¾ùéŸþá݉qÿùßNÐä„G/zîtWçÉç¥|à£sôÞ©—. ,ѯÔ) $›¶ ±ÈmAb)F¦m›±Óí<‹²QóË)JbêÌšrÞ•;hrõeÁÚ-3Á'+6oÚ×Lj²yŸ§`Y¡æ‡—véÔg™fo {'ßL‡W]­í»6»Dw~ùa¥Îw~.]xîïÒÕõ£´im…ªëÔç§2Π¶\׬E]qœ žhùµ,+"¦I>�3V ‰¥¢‰kè“òÕó‹›xæqóŒi~€ÄŒ 8³@¬Î:RÕ!X’‡:Ä‘^RKHh¡öx]$h)­1T¯Evim$ÆÚ²f=½òÊgÒš©Þ>m{PºkÓÿsí¹íó3V£US´°¼ªä—ÖÒE­Dƒ™Å[>½ µî>‰åo^ùstQŒÄâãÀþ}47w2 ±üŸúszÞ¬‰Å³P`¬+f±mp↡qR) ŽÍFûí¤œú…hU•Y€“[¾Â$¹-H,r[ÅL,m•Ö/ÐÂŽ€úB­Þr”¦~ýª?q#5vL-5hìîYªÜv,5½Oê ôíoÝDW>é2Úºe38q’n¹ùvº÷ž”võ:ÑÛþi–þëÓótíU“´iC…lÐWnX GöÔ) þ²BÙgdaXlÚ‚Ä"·‰¥™¶mÆN·ó|,ÊFÍ/§(YŠéi4w~éÊ Ïz òª) ±øS*/¦Þ¤çïcúè?FÎnmnÝGY s¼{ONÒvm¤ëï;B«/ov+ÓTYsy`[ŸýQc¾­[lMqƒ=q™øË")ßý•¥®8ÍGPO´üZ–ÓU>�à�+Ä¢Cö¸þ9¯¦²ÂœÀ£W` ±¸‰g7ϘæH,ÀÈ€3 Äê¬#Í¡:tVZÛܳM­åzB’FH‰þí÷×Iú¬Í§ÐK/*MŒMPÒÁx}’ŒÒ«=·´HÇNtÈ*±åˆRMŒÔ·F´›òÕ“ÓôW¯øYºhÇ™]~}ËÉ“'Ë/üó_Ð-GvÑž"Ÿ‰%m¦=?:bÖQ2'nø×)•’àØl´ßNÊ©_ˆV�@dV Lnù [Xä¶ ±ÈmSfb‰ÐYZ¨¢EÞðæê4ö¥$ÁáCGèSÿ<Iðà#µà“áÒB€È¢9Œgоº\¸-H,r[XŠ‘iÛfìt;ÏÇ¢lÔürŠ’Å˜:K å‰êd½y¯hvÕZDªŸèÓ¹õÖ«éÀì9Î2â™ÓtÓ#Ý·k†ùy[šÍh3'¯,yÄ ¶uÇ&ÿÜhý¥ØZëÁçÞ__CÓ8A=ÑòkYVDLWù�€`9! š½_kåšaÉ8fv ±¸‰%‹‰› P 8³@¬Î:R‡Õ!"¥„;]3³x±å†8˜×:\Æ'Ðò¢©OúpñŽ³è…»&¶ÌO µEš›P ö“Yî~ôaj0·¥Aþ­ŸWDÇá…Œ›PÃëÌ9³zÂ'±ü ]¸ýÌ®(è#±LlZÛ”¤ÿ8² AH ƺbûÐ'nø×)•’àØl´ßNÊ©_¨Í/Pr€È¬�˜Üɶ ±ÈmAb‘ÛjÌÄÒV H,Ŭ žK@daJ]aÌÄbÓ$¹-H,ÅÈ´m3vºçcQ6j~9EÉrÌʰµ•ÁÏѪÍ|ýA¸f{×Xêû„‘;¹ÖiÞ;ÖOP­~×ñ=®?ˆÔʧ÷D†¿ª£äö¡gÌÇK¥Ùæ"+"¦q>‚z¢åײ¬ˆ˜®ò��‰H‡^Äâ&žyÜ<cš_ ±�#Î,«³Ž4‡êЙy¥³´·e±}-’HK3¶$Q؇cöúHï8“^ôøkÎâ¹ïøaú·o~†NY·‰®<ãBZ¬-ÑôÄ$¹y;©pçÞpiÛÀck–h;>KgÆ–Ðnõä ½õå?ÙGb9|è�˜=Ö&±|ïÈ.šÜ´VÈ»φXWÌbÚàÄ ?Bã:¥R›öÛI9õ µÃ ùV�@dJ“;¹Â$¹-H,rÛ $–@=XV¨¢µ´Ð("œ‘…5fdaXlÚ‚Ä"·‰¥™¶mÆN·ó|,ÊFÍ/§(9ˆ9¬í$3²ø7ޙ˘ŽÎmwšwµ9(¸jªJuž âQ°¤_”OCß‘j\p¥Ô§ùꉖ_˲"bºÊ��$}|ü¿ßMyáÏ} M<þå4~éQVœø——]èH,nâ™ÇÍ3¦ùE� 02à̱zêØcº’ÄC„„î<GÄH-Ù…)œÑ:˜‹¥)óÍÊLœÉÎÚ§œN/zü“ö3ïÝ¿‹>ðíÿ¡…åE:|r–nßó�¾q½þšç“2ßf"wí¸k_4R­z]ï/'ôÖüIº`û]û9DLJ$–_|Ç_$–p&–ŒPõ¥2ûѳ؇68qÃÀÐÀ¸N©”Çf£ývRNýBí0h~Y€ÃäN®|Ó!·5-´Í0ü@rhØ‚Ä"·ÍHbñá/)ÍÊRBK{F– ³–8ÊÂXNȦ-H,r[XŠ‘iÛfìt;ÏÇ¢lÔürŠ’£˜þ”ÉÇQD¡~âˆGã”ÇD2§¬›ÐÊg PWç#¨'Z~-ËŠˆé*�p�XB”m&ÑÞã1+g=[XÜÄ3›gLó‹�$`dÀ™buÖ‘Ú¬*ÎC×’Aá¬*>¥Ñ#õ|ŠJsµ-k4÷‡´ŸÊâ5÷WÝÐW8J¸ñ˜SN§_v]‰%z¥þÍn§OÜzC0.Ä´~f ½êªgSµZU&ÿࡽtbaž²À'±üéË~¢Ärôèa:vôH@bù¥K¦vÖWÅrB~„ÆuJ¥$86í·“rêj‡Aó ¬ €È”Ž@b‘Û‚Ä"· )ê”Õ¶{i¡ò1Y"K@hxxŒ™XlÚ‚Ä"·‰¥™¶mÆN·ó|,ÊFÍ/§(ú m6X¥2Œí¤?ë ×;ß{WΫƫZù»ãç7>æÃÜýBo¥Ô§ùꉖ_˲"bºÊ� Ü$–ä@e]þVÏñ,@bqÏ<nž1Í/X€‘gˆÕYGj³:èä,ÄÝýÿƒ1dÉ&.%Ôþó±´H(Ÿ&D#Æçl=•^|ÙS‚xpO"_¹÷{ôÙÛ¿e"™?ø>áiÁ²BÝ93õÂÍ»îkos+÷è¿AðI,òÒ§ N9£k¿? KDbyó¿¼n=º' ±°ªo4Yõ•~tÄ,ö¡ NÜ0ð#40®S*%Á±Ùh¿”S¿P; š_`…D�è‚¢�‰En ‹ÜV0KÛÔóbŸtýuÍ'ÿ'sv6ÿ.7·o­TèÛ^•/ÊÆ×n¥5ç\Ick¶R}qŽæ¾‰æ÷ÞI:hœ>CõK7¯#ïØ2Uo<B•=éLýpi¡FHdéû!=ƒÄbÓ$¹m™H,iÉ•;ÝÎó±(5¿œ¢äøüyÃ<#Kg½Gæå“³ßœ¶©¦Ê§ßÎWKâ™&š±A“3JõÓ8A=ÑòkYVDLWù�€¬T‹)üå~òÄÒÍ>Å@ï<‚Äâ&žyÜ<cš_ ±�#Î,«³ŽÔfuÐôå«q«ÃÕ^^ˆ¢YZ¼Øwþè®ORñÇQƒŸDøÄ–p¡36m§zâÓ©Z©PüUºoÿÉ[o ¸=ü!ak&ÿÏó.¹ŠNÛ¸m`ÎñM?Þ-»î‹6( «&§èO^òãÁì0qÌ?FG H,¿XvÓĦ5á±g)�U_* XWÌ:JfàÄ ?Bã:¥R›öÛI9õ µÃ ùV @d€6­�H,r[Xä¶$Ñl,þCi¸ºùbê§kK4‹õ¢æûªûšœ?›¤C”ìcÃ¥/ MW¾¬Ù™è4)/{|àFÚ÷ù¿¡ÆòBB‚-ýðT{òæ®ëdùú4þ…Giüƒ(W.ˆ–ò -ÝL&3‹É¯Kxm‚Ä"·‰¥™¶mÆN·ó|,ÊFÍ/§(åpþ†sF?ÉZì{7\çÜ÷˶”|:z”*KlmTžúiœ žhùµ,+"fQ÷E��$ zç$7ñÌãæÓü"�‰pfXu¤6«ƒ¦¯h¶KÿÕw0ÛJky¡hæ•àoô½9vêéV›ÿÔƒïÍ^¤¿‘ÎÉ23>,'Tõª=ïîô᛾B7>|O;f4“Ê%§žMWŸsIOÎL·ì¾Ÿ»ã¬®1Úûî¥ã sÁM†#?Äí{·?L«&§é^üÆ>ˉ³t¸EbùÕwþM0Ë䦵Á 1>™W[?â”öS³€uÅyçbàÔF»c\§TJ‚c³Ñ~çrÍ€Ä�iÆŸ@P´ ±ÈmAb‘Û’X-KÚÆ6ü¡¶ØEb‰pNSö–¦l<!uy*m~Ò+ºH,Vu9m{ú›( Ë/ÛIµë6÷_'Í–iùÛB‹ >%ü4b|Œ™XlÚ‚Ä"·‰¥™¶mÆN·ó|,ÊFÍ/§(åtþ*~›9DŸÑ (5ÄìtŸCï‰Rç“tnµd&¶£Ó8A=ÑòkYVDÌ¢î‹� ÀJ!±¸Œé7SÃðq½“‹›xæqóŒi~€ÄŒ 8³@¬Î:R›Õ!ƒ¯öl+íR:ã²F‹<Òˆ¾7?>™¥Ñ–7è¹—\Ek¦V·Rˆ>»ùkô‡înÏ„íëúv[V¯§—\v]G±•¿|з¸£¯q¼mÏ'±úí!ÜÎAûË ýñ�ËÉ“'èСÍqç ýú»þ¶=‹<Çmñ�°®˜Å>´Á‰~„ÆuJ¥$86í·“rêj‡Aó ¬``F�Pµ ±ÈmAb‘ÛZ ±ø¶ÝK %_̯ª/*ƒÓ›•§7jôéÊx×~¯R¥Oz9©°úì+hzÛ¹4ÿè½ÝÙmœ å§oUÚ.?çûÂ~òNÔÊ£Y8`à·x™ ±Ø³‰En K12mÛŒnçùX”š_NQr³—¦á #¿ŸëÄÍö7ü‰Y?q$÷œSòI=ï^Š<OY1óÔ-¿–eEÄ,ê¾�€Ä’Ž´—R?úÍŸ&)þñÊ¿¢W¾úÅôïz IðoïùOzï»?ÔÞÖyæêüƒÄâ&žyÜ<cš_EXr½ ågˆÕYGjó:úòÍÂe…¨½¼Pg†–`¾ò'±ögciP8vêÿ`Á'¥øóµœ±a=nç9Ô›À7¼#øDËöDuÖ_öçµW?‡&ªmÿß;÷=DÿöÍÏÒ÷]pY_Ž·ï}¨›ÄB=[ûç…¯§ó{H,ss'éÐÁýÁ’H¿ú®¿¦;ü™X6®mt:9û„jÍJã”ØÂºbûÐ'nø×)•’àØl´ßNÊ©_¨í&°Â" °Â¡h@b‘Û‚Ä"·m¿Y3ÍÆâ/1”„ɦîE£—7;9ŸîµÝ|M¯Kµ>íq}D–úkƒ¥…”ov´Î_CÕ ‡$–pV–€Ì‹=[Xä¶ ±#Ó¶ÍØévžE™‘<6°,ó(ûH%÷Ÿré 5 …Ó>÷"ÿœÕùDð+zWüS¢,uÅi>‚z¢åײ¬ˆ˜EÝ@�Xú1”ͯe :FÓrékkåžô5¯¥ì@bqKÓÎÍ$@Î,«³ŽÔæu,8¶h ¡@«EZñ‰*W‚Wãþÿ¼Öró Ò5Â¥…ü>\£5«{ô´Ç\ÚéÀì‘`6–Z#ìïEÏ.3Sô#W?6̬¡ø øûì¦ýú§šúuÚ¾nSWž‹ËKMGû— ˆ4£ô啞›ÃÂÂ<:x 8Žß|÷Ûé®ãûhÂ_NÈ?6¯E^‰4ÏAÀæñØÝ=†uÅ,ö¡ NÜ0ð#40®S*%Á±Ùh¿”S¿P; ÚM��‘XÉP´ ±ÈmAb‘ÛZš‰¥í®Eb fdI(˜)òùøéñV è TƧIÕ‰™¾}<]%¨ô"K°Þ+ëùÌPÂk$¹íÐXrèåŒä‹ÊŒnçùX”š_NQ*àüU†rF–h)ŸÖ÷äžsJ>ƒm äe©ŸÆùꉖ_˲"bu_�@béÆJ °¨`rü˜‰ÅM<ó¸yÆ4¿@bFœY Vg©ÍëØàØü×àþXoð|á…[Ѭ,ÜÚï“Xü£ßsó‰/þwŸÌRin­›š¡ó¶žÖê“ß»–ê±™±›>ÖLÏЮ½ž¶­ÝØ¥þðáG響ú Z®Õ‚ýk§VÇê9ÓÁ“Ç‚¥Œâ9‡#×åç¨ÞŒ»°°|æNžô~ó=GwÛC×´f› -8vêlwààƒuÅ,ö¡ NÜ0ð#40®S*%Á±Ùh¿”S¿P; ÚM��" °B¡h@b‘Û‚Ä"·µLb \¶—ª$–ÍlS0×ṳ̈ÄÝ3`¤méø£¤ƒåz•‹¤•^´´P@h7߯¤ƒSÂk$¹íJ!±Œì‹ÓŒnçùX”š_NQr3ä ¾·¦]îµó4Úƒ³ž| M®§¼àÿ®Î£Zû{/.|îé$ÁÒÉÝÿå½”iù 0P·´e©+NóÔ-¿–eEÄ,ê¾�€Äbþò@&ð—Š/4J�‰ÅM<ó¸yÆ4¿@bFœY Vg©ÍëØàØBò‡×‡ +Üš%|M.3.'äÿô¯îm-3DtÞ¶ÓBHÔOn~ö;H·í} +ÖÙ›wÐ+¯z&­™ìþ‘â¾c‡è¾ü1ZX^j?笛^Õ•ÿRm¹uDÑùãžch¡9®[_\¢½{v‡3n6ú­÷¾î:¶¯Mb‰ïßGÛñYY¬‚uÅ,ö¡ NÜ0ð#40®S*%Á±Ùh¿”S¿P; ÚM�hD`Bù¦Cnk[h›aøäа‰Enë€Äâ#š%ø›`åwþ§R¥ç7j¤Â*ýÍEmö Ís¦·_hÇË‹4{ÿ7ûöWï8NÞ±eâuÉ/+û©rï‰Dy8# ·-”ÃW— ·‰En»’fb‘†w!Ó¶ÍØévžEÙ¨ù奼Ï_L¦³LÏîÒºSW)—쳆'5?þ žß>ì›~âÈ‘f)+ü¶svϼlY¢”|ºuìjý‚.I®²5–Ó8A=ÑòkYVDÌ¢î‹� �H,îà<­ ç|Ð ±¸‰g7ϘæH,ÀÈ€3 Äê¬#µy[8¶` !n³tr{;œ©Ä'­xíÙXB2K%øQB¸D¬¿¬ÐæÕk©7ò·º;˜AÅo_ÏØ¸ž|îãèq§Ó÷£C'ŽÑÛ¿ôQ:¹¸@{öèm–×L­ å­›@tt‰%𥾏L?ûÿMŒÑÕ<ž.;çúä·¿BwßGã×´f` W¨z¡•Ö¿/ŸˆÌb ¬+f±mp↡qR) ŽÍFûí¤œú…ÚaÐn@@dV­�H,r[Xä¶ŽH,ëÖl,Á�Ÿbï½Õ º´Q§ ~>V§;½ÁK÷ìÿÒ;hçüU'W H‹iÿ×ÞMõ¹cý²åM¾óAZø‰s‰ªý¹y5¦ñw>°ò“Й‘EsyƒNbd†^› ±ÈmAbIïB¦m›±Óí<‹²QóË)JyŸ?î¾õé,ÓÓ˜g:¢ XÚ‡?çMÃÇ^º;;‘%‚Ö²Dœ-Ÿpð0öWÛï�;2ˆ™§LËVPO´üZ–sÏ�$�$sMVQA•›í²‰ÅM<ó¸yÆ4¿@bFœY Vg©ÍëØÖ±õX”gb zkXâd–h™¡pö”^òÉs/¾’®=çbš™˜¢©ñÉþ8Mýãó'èo¿ø:6¢k¿ÅÖ ,6­ZK§®ßL»h]×L,-T&ÆhbËZª/Ôè‹wßL_¸íÛTY=MÖÇt{fV Ƽƒþig‰¡PÑRa±®˜Å>´Á‰~„ÆuJ¥$86í·“rêj‡A» �}�‘XAP´ ±ÈmAb‘Û:$±î½J{Vüå…~e|†~´¾H×6jQVŽ5í>P§OT’gMY:²›výçoÓ–ë^G3§^Ôî-ßO¿ö:ñàwm+·£É·ÞM˯8;§;ûš£‰{ˆ*ž$|KöÂá«Ë…Û‚Ä"·‰%=¼ ™¶mÆN·ó|,ÊFÍ/§(øí[*HÓ®Cù¢,´«µF&û“Î=ç”|B49ËŠˆiœέHæ4fZ`�èH,ÙÑÛ®½á†ŸÒ²ûî?|“nüÇoÒ÷^ü ²Ç~èIdŠAm´ôš�‰ÅM<ó¸yÆ4¿@bFœY Vg©ÍëØÒ±q{†“Î;Á¿·—à©´d>q¥ÌÒÒ!³øÚ'—ƒ¿ñz:V£ 3ëZ1ús;6’ÞþÅÓÁÇb™wäþL-[V¯ïÊõµW?§ióQ:|òx{ŸGÝGìU*4¾z†6lš¦Ó7n¥¶ÒDuŒ¾ýðÝôС}¡>‡v^k€[³ÏD$–èœè,¬‚×›Ü�ð€o %3p↡qR) ŽÍFûí¤œú…ÚaÐnÀ@€È¬(ZXä¶ ±Èm“X|è,-ÁïNüYu’þ¾2A;››Å¦ÅÃ^…ꔎ¥c{i÷ý_›Ù@ãk·Pmá-7÷éŒZTêïÝF¼e’xí8ÑÑ%ªZ"4‚ÙZ²œ?_פCSÂk$¹-H,éá]È´m3vºçcQ6j~9EÉQ̾Á±hp‹»É/í DØB2Ks°‘£–¸¿EÖšUEÿ\Í/7ŸšŸZ{v4u>©Í¬J^–úiœ žhùµ,+"faù¤€~€Ä¢‡ažmÅzWç:‰ÅM<ó¸yÆ4¿@bFœY Vg©ÍëØÖ±QøZ<"q„],/\V(XNȧ¬tæ^‰F„+Nƒ¸ÕÝôȽÁÒA=-SbÌ}ÇÑÛ¿ü1::—<+èû¦ N9£kß¶5éWŸ÷júî#wÓÝûvÑÉ¥ù Œ?ãËê©)Ú²f=m]½NY·‘ÖO¯îÊàY]Aÿï¿ßK÷ÜìroPû¸Cjµ¿[ëŠYìCœ¸aàGh`\§TJ‚c³Ñ~;)§~¡v´›�Y€�E+�‹Ü$¹m$– Œçµ?¤9Hx¢©w'UI‚ÚÜ‘à#w`1ødAÀ¾×û¾º\¸-H,r[XÒûiÛfìt;ÏÇ¢lÔürŠRÞçO![âEš®LÓP! DIw'ï·‡/�ç aÔ'±,,7RóIEBµôd*;-™+¿NóÔ-¿–eEÄ,,ŸŒ×9�Ä¢‰•Fb„´s�‹›xæqóŒi~€ÄŒ 8³@¬Î:R›×±­cëµæÒŸ•„[?Õààßð{4‹GÜ¢¶4Ç~÷=DŸ¾ýzÖEWöÍbßòÉ/߸ÿ6úèÍ_£…šú‡‡ßzðNzÎÅWÒtϲDþì*WyQð|ÔsÿAJµR¥ËÎ8Ÿî?¸—¢iY:Ku¯{­ÄžÃZ~UâÞo %3p↡qR) ŽÍFûí¤œú…Úa xþ€Qˆ,@É¡¸‰ƒÄ"·‰En›‰%ÍÆâU 'Vu _].Ü$¹-H,éá]È´m3vºçcQ6j~9E)ïó—r]:HgMŸN®16±@;ν™N=ÿ»´nËnšZ}”&§OÐâüjZ8±žŽíßI»ï¹,f‘üÛ2ÏBëž”ÏÜÜ4ñ"­;6FÇLi哈²Ô§ùꉖ_˲"b–OÁí,0’�‰Å.þ骷iéE?Þx܇¯&HãØäQÎ ±¸‰g7ϘæÁð’XÐÆ=à̱:ëHm^¢¶Ž-nÉá+ò€¼BYYü¿>ñ¤ÌËâ£ì÷g-©7÷?†hZüÿ?zÓ×è{» g_|½y;­šœ ¬ŽÌÍÒÇ¥»ÝE7=rÍ.̵ɗí&2ÖXFýÒ¹¥Ezß·>G¯»úyJ²fÿê=ý{"ì>r µÜ#¯p°-3zà¶ŽèÔ²®˜Å>´Á‰~„ÆuJ¥$86í·“rêj‡)àù �F ²�%†â&‹Ü$¹mŽ$‰Åÿ»Â™,(áµ ‹Ü$–ôð.dÚ¶;ÝÎó±(5¿œ¢”Óùkaµd]kg·–«2Õjí«ÝBgÓÎ~!>1}‚.ºö£tî?MÕ‰*ycš µÿKµuÍñÅIš?JÓ«Ò†S¤3÷-ŸO¾´PW>cË}òÕkÂ)£§Ö.ÑæÓæHü Q–ºâ4A=ÑòkYVDÌÂòI �ý�‰Å=†e—¤<˜‡íÞ‘a©€—( ±¸‰%‹içÚ‰3 Äê¬#µy‰Ú:¶8–²×ZP¨ttãd–¨ÅŠþF„–Ò û즿ýŸÝá!›ýË -ó"›Øò»g¢Y5y óó–]÷Ó;¾öIzÅÏ ™‰ÉÄü’Y¼ð˜ÂÉWôå{o¡ï<tW,‡aÅ  ޱ©ççQi-ªY²¢}PÉâÞo %3p↡qR) ŽÍFûí¤œú…Úa xþ€Qˆ,@I¡¸‰ƒÄ"·‰En›3‰%_ZLJxm‚Ä"·‰%=¼ ™¶mÆN·ó|,ÊFÍ/§(9ˆ©üÑUÊ9˜¯ÒñZƒ6mº›nÜ ]±áR²Ó.ü=áú¢‰53TYu5Ñø¦VnþÐbóÓXn~_nþˆxá~âÚq-¿ÒùÖ¢|ƧN6OÞDóÿSÉÛØt8æSŸoæp¸™Ïáf^5£,uÅi>‚z¢åײ¬ˆ˜…åSp; Œ$@bq‡QZ‚¨7×b‰-F‘ x‰‹›X²˜v®SX�¤8:ëHm^¢¶Žm îš3$µ„³³hÍÔ=Û6º–Šl¨½/0ñ÷KɆ³¶:wÒmý$­]öŷþø¿÷ÑÓs=ñŒÇÐêÖL/*ÔuÚ{ìí>z€v9bÌé:[‡˜ciÅ~¬B±s  ֳ؇68qÃÀÐÀ¸N©”Çf£ývRNýBí06Ÿ¿Ð¼%ˆ,ÀÊH,r[Xä¶X‚°­ÙX2 ­4„]23û’Ù‚Ä"·‰%…¾¨ÌØévžEÙ¨ù奼Ïß�Y÷@ÑÌD…æ–êtéûèß÷ÞB_:¸HWn¼”¦«ÓdŒæÀßÅ×}.|ò‡¨²ú"ª¬º¨¹¯JDá/ÈB"Küß’7Ç7‘7¶† »ˆ¤´Bô²ÎÈÒÎç?ýiÛ¨2s!yÓç“WÄÁÀeð©5UO£f"Ô˜xq7e^RȤÌ<Žß<eZ¶‚z¢åײ¬ˆ˜…å3Äí,0´�‰ÅýÄ;É%¾ÿú¡"ÙWÄu¢¥ió%J.1åÆ ±¸‰§m,ÐÎ,«³ŽÔæ%jãØRTƒzç…DæÎ2CÑv`-ÉãoES’Æ÷µþõZ›á÷pF—`,Ù'Çx²KÔU‹þ†!bK ÅúqþrD½ù«ÍÏ×hÛš ´iõZZ;µ*\ÞÈ«ËÍ//ÐüÒ\š§ý³G¨VoPDÀ‰Ó¼Öl-aúƒ—âxº§9íë(Úºn8qÃÀÐÀ¸N©”Çf£ývRNýBí06Ÿ¿Ð¼+� ²�+ ±ÈmAb‘ÛDbñ‘Xt–òôŸõ´izÁ³¦èŒÓÆhq‘é–Û—é½ÿy’î{0åרãª}ßVª]µ‘›¦È›«Qõ¶c4þ‰½ä^Rš®iÛKëËtUóÅÙúfäHsßW›/Ô>T£91eøêrá¶ ±ÈmAbIG¡/*3vºçcQ6j~9E)ïó×’%ŽcEò¦ÂÆUctöÖ1ú¾Kn¥ÏÝJôÁÝ»iûÔ6Z?¶†¦Ç¦HЧ=ëèÂë¾H•µWPeêìfÃ<Þ èw¿Z¶®’×l§¹áÊùd‘:y“ÛCñÂJÿ·¿“²çó?ÍðST]w yã[CbM´®¸O¬iæÄÜl»á`aeú,â±uÔ˜»‹üYc´Ù$#Ë2W~æ#¨'Z~-ËŠˆYX>9 P¥H,€."R‹ûk&Ã(’Í—(¹Ä”ƒÄâ&ž~LÜD€pfXu¤6/QÇ–¢_Õ'"±t–jdhY!ŸäQiý"¢¤x­�Ñþ(d›#½Ddbõ,ižâÝÁ¾ã‡iïñCä) þwûìmÅßDZûN§·Ÿ¹UõY©ë)HGÉ œ¸aàGh`\§TJ‚c³Ñ~;)§~¡v›Ï_h^Y€•Xä¶ ±Èm $±áÛK UHU *Mñ/ÿÌZú¾'w^ÖÍL{ôÔk&éš+'èÿþùqúò7OUhágϧÆÙ«;OMPíº-T¿lMþÕ=Tyðä@ÓmÍcû½Úmåί¼ýß¿ÿ`c‰®m,ÓoŒMÓáÌSIÛ¨ËEhÚ‚Ä"·‰%…¾¨ÌØévžEÙ¨ù奼Ï_êm±ó›-¿™©V<züéÓt`ö8½è 7Ñmì œ ='¦›a²6áº'<ãò¦Ï¡ÊÔÍÆv,XÆÇ_¾ÇóªÁšß>‰%ø5\Ã_×»~|b‹? è/?TŸ%^>˜ãÛGn!]DùøDšêº'7SÙæãk‚YbüÁIŸXS ø4Á`eÅ_ö¨™ÓØZªÌœ×"³ÔÕÒÊÅ6ÁÅͰ:&¨'Z~-ËŠˆYX>9 P¥H,vËÒA¦1,ž·„– £H6_¢äSn ‹›xú1Ñ=à̱:ëHm^¢6ŽMS5ZNˆºfLéYr¨Åx‰tÛ$¯£~‰d¡?jéØh¡9e؆{©Ë6ê³{]í¦ëÑGË ejWYW¬èÀÚºn8qÃÀÐÀ¸N©”Çf£ývRNýBí06Ÿ¿Ð¼+ ²�åH,r[Xä¶“X|Ûh6–Ì’¬ùÏ›î"±Ä1>æÑ›z-ÝuïaÚ°ÿåÕÒËOï"±te°zŒ–ÞxM½åV¢åî% üt~¡‡ÄÇŽfþ?[_¤·dú%üðÕåÂmAb‘Û‚Ä’ŽB_Tfìt;ÏÇ¢lÔürŠRNç/úÑØ@©ÓômǪ=å1kè[÷Ÿ¤ «öеÙ è-Ô«¡Y#9…Hæï›¯S£Z§WýðAòª“Áò=á ,•€0âùÄ‘ÊTs|°ÎÂÂ-Yë·qáÏÞÂ7±¸v”‚É�¼ø _þ®›®ö 9N9>ßL®Z£W½öP8óªÇ’7¾1$°3ÄL„9ùÚþŒ+ÁO÷|bM­›O¬áÊLSõ”Ö2C PŒó•¦~ç#¨'Z~-ËŠˆYX>,³V4@b±ƒˆÔa¼ôk2L¯ '¦÷¥œ9Tp¦Í—(ºF1åÆ ±¸‰§ )ÐÎ,«³ŽÔöm8›ÀHµË¬5+KøÚd”¨­ ܶ–ŠÏhÒ×–Qß’EÔ"РХ_û|w^øsß÷NRƒ-,=9ýÉhŠsè#p↡qR) ŽÍFûí¤œú…Úal>¡yV2.¬�#Xä¶ ±Èm‡€Äâ#$±TÂ¥…xÉ V)åS“½à9ý„ž©RíêMJÛÆ¦ ª_º¡oÿc¸Nç'X"<¾©szŠŽ=”ðÚ‰En K: }Q™±Óí<‹²QóË)JyŸ¿ ç oð­)›™¨Ð“Ï_MnŸ¢µÓÍö³J4=^£é±ZS~¦[Ÿàûxø™™ ·+´DcÕeºê‰Çir²AÞÄŽÖl'ñüéN–©3³‰"iŸøR]“(žlæ5Ë­ýñsšXò[¢«®š ó©®&oê4êf:ÄòÆ©PÓK¬ÛØT™¤ÌH8DO!£4™‰mauLPO´üZ–³°|r JXìÀx&¯Ó>åK±íÍF“aÉæK”\bÊAbqO?&R œY Vg©ÍKÔÆ±e¬Ë~=䮿Ü&|Ä÷ùh4ÿ†ŸFð—[¿�i´È$;¦Î³wu÷Yxÿ—’XºâðÉñí,Ë i‰sè#p↡qR) ŽÍFûí¤œú…Úal>¡yV 0# P^€Ä"·‰En;$$– ¯ÒY^(¡P׬©Ð¶-éœÆóÎîo.xçLó…Vúà[ãôiª~«{ßY ½c<§ÙÉzØs͹,áµ ‹Ü¶$ǽšB_Tfìt;ÏÇ¢lÔürŠRÞçc³² @4Crš­¿ÌÐ9Û&ƒßTÕêÑ@Z\=6ÐÖ—£}Çj´Èu:ûâp9 Ï_(˜âÄ_2Èÿ,‡³·KùƵÎÇ× >Ö²C­OµÙÖÖŽ Lû©ç‡3¢m[7Öu,ÑÀ棳Í|u:ç’p=rorGL‰ƒxÜŒí5ZÛ˜,öáÎúÄnô/7(zt¥úiœ žhùµ,+"faù°ÌXÑ�‰Eögi;¦¡B”“‚Ò9Ö £H6_¢äSn ‹›xú1Ñ=à̱:ëHm^¢¦Çæ·#}c¤I“ŒfQ¡Ø2Aí69êôöÎÎ[F¨]Çc³²Ä—Åë"aúd“öÒ>ýM¢6‰¥G§=¿› X~)B}NÜ0ð#40®S*%Á±Ùh¿”S¿P;ŒÍç/4¯À ˆ,À …é]ßÄž3ì5ÓÙ‚Ä"·"‹øÒB‰åªI(i4úèLRÓtÿ|VÂk$¹-H,fî¥2mÛŒnçùX”š_NQÊûüižƒÞáÀ`@/Ööa|ýñj|åŽ$Þú_ç—41æÑäšyŠø—ž?ÓI°„P¥ù½5@é“X‚™Oü»à.é‘Z"Ò‹O*i„K�%`¬•[;ÇöàžGóË oƜܴзüUØ'ÊÔƒ¥¨Q (Ù_F(ÈÇ¿ÜɃ¸õ7ЩLNfç´,õÓ8A=ÑòkYVDÌÂòÉa€(@bq‡©Wÿ;eEí–§Ú÷²Û9ƒŠMë F‘l¾DÉ%¦Ü$7ñôc¢!zÀ™buÖ‘Ú¼Dm›A>e„‘VZêÝ?˜Ì¤Ñ²‰ú”qÅ÷á…Œ•Ö£4w“_ˆÛdŠí‹’dê<GEß“fa‰ëD~â?‰Ï4ÓýübpðM¡dNÜ0ð#40®S*%Á±Ùh¿”S¿P;ŒÍç/4¯À ˆ,@9áìE®©=gØk¦)²‰En;d$‰%\ZhpáΞdÚµ§F;w¨›ƒ»îYîÛW}¤ù²®Ö|xS³R*œè÷§9ËÊ]]K2ØFØ1“ÛšÄud ‹Ü$38Q™±Óí<‹²QóË)JyŸ¿Yß{¤ÛÞ_Œ·íYñ;8Ž ¶l–Ã¥ð¦7œèN¦±<¸Ebñ‚v-ºY7‚QBKSÏŸ±%>CKðWÜþ'ÀÂR˜ÏL,¯2úd/àÉøƒ–ä“XÚ?krrñój-Ô&ÖÔ‰’ÚooP>ª\2ÏÀ6O™–­ žhùµ,+"faùä0@ ” ±Œ6².á#.ï\É,F‘l¾DÉ%¦ÁËH/ÁœÇ4¿F@bFœY Vg©ÍKÔÆ± ó &þ7¯ÇwõqƒÉ@Iof¿»Z‰\rËoïþ0H̾iN¼®ÛªQ¾Löµ›¤Ò¯Û‘ÅŽŒ;ú‘/Ÿ¿\RWñ¥•C7 ü Œë”JIpl6Úo'åÔ/Ôcóù Í+°Âáz½�2˜ÞõMì9Ã^3M‘-H,rÛ!$±øh/+ä/1¤°~ÿGæI…“sLýô�…:}q¿Ò¶²wÆn>Ö·ÿ¾fN·TÔMÐ7*c´×ÙÔÑ%¼6Ab‘Û‚Äbç/*3vºçcQ6j~9E)ïó'8ƒšìÞ\^Ò÷fK|Ù¾Z#œ˜é,»Ãõ“Ìpâ/Å|ˆƒÏ|ø©/„ûÙÿ,5÷-E$’€ÔR‰0)ø(ÄÑVý¿$’ÿwbU,Ÿ€¨²Ô"¨4ãq˜µ>a^ aÌ6±&š¡%"Ø$œô8g–»wwΟ7ZõÓ8A=ÑòkYVDÌÂòP§å ” ±Œ6<AÒsÖµ… £H6_¢äSn ‹›xú1ÑX=à̱:ëHm^¢6ŽÍJ>q‚Glo|öPâ¾™LºÈ 1[î²°?æ‡ã~B§Á'¾/ Ó´¶C ·cÛm·t-Yg)¡Žî!Ätfu‰“_²½þo %3p↡qR) ŽÍFûí¤œú…Úal>¡y�ÌȬ$˜ÞõMì9Ã^3M‘-H,rÛ!%±øgc©¨—jâSŸ›§óάҋž7Ó'›_`úÝ?=FG6ÚŽh75¶OQý¢uýñ,ÓÄßÝ—¸|ÑŸU§èw›/ÌN§~ß÷{úëê¹A ¯MXä¶ ±˜Áù‹ÊŒnçùX”š_NQÊûü)d_¢¡s¿yû×ió}Âqò­ý%ø|Yu"¸~‚ØoÍÄâÏfâÏÆRé9ˆp¶“py¡ˆ4‘MüÏ" >ˆÖ­ŸÛÿtçÓúI\u2žÏÉаÒÜ×ð—ª3¬p´Ô‘ß·feiÏÌÒΣÖ"Ö$ä?$Û2W~æ#¨'Z~-ËŠˆYX>Âê´|R$–|°ðîLWzrI^È0Šdó%J.1åÆ ±¸‰§%ÐÎ,«³ŽÔæ%jãØ’T=çÎÆξýà¢ki „e†¼–mð×íym_Á²C¡óö~‰!nu¨ƒÝ±Ô#ÕvN<€l½K uϼBD1Í ›øRCbAV2 wç'<cغn8qÃÀÐÀ¸N©”Çf£ývRNýBí06Ÿ¿Ð¼@�Y€Ó»¾‰=gØk¦)²‰En;Ä$ñ¥…Ò†ýþêŸNзo^¦ç?kšÎ:­J Í÷T·Ü¾Døèí{´žl¸Ü É¿¼‡j×l¦úU›¨±e’h®FÕ[ŽÑÄg%:™¼,ÂÑfV¿4>M/h¾${Ró…ÚºæñiæûÕæ‹¾OVÆi™\ „×&H,r[XÌàüEeÆN·ó|,ÊFÍ/§(å}þ,œƒAc„ñå‚‚í8™…;úÝ$—ª±Þ/&¯2,ßÃÞ…ËòT:‹q$ZF(XÂg¹¹+œ ÅŸ…ës¤>õÉèʧv¬~< ±ÄŸÀäÔYê(ü]4K‹Xãçmü[”ù(džÀNÇož2-[A=ÑòkYVDÌÂòa[`¥$–~ô.Ç7 ˆ^âeµN¨òêY^ÂæK] £˜rcXÜÄÓ‰ÆègˆÕYGjó5:¶VÔB>áãmÔ¾ùý7¯³ZlÐï ãDívø·Õ¥nY¸ü¿«E\ají É/ÑO¼àßJø·ù¥µälHˆéM.úÚ™¦ÑG\é<ûôϬóÑ"¯Äu-UŸµEëüõE¤dDˉ~„ÆuJ¥$86í·­úÍj¡v›Ï_h^  Y€�Ó»¾‰=gØk¦)²‰En;ä$Á’B­å…t~Áöõo/I*c_=|²ÂöÍ—jþÇ&V†]/µN†´œAb‘Û‚Äbç/*3vºçcQ6j~9E)ïó§yΜҳÝEfш×oûçî%†ËL•j‹¨R;BÞøÆ¦ÂD@f ‰#Ñ"@-ãÀI|”Zl”¥äPiI÷çCÍ|hlM‡XÓEd‰çRo}¢%Žjíå†8ÈÒXêäÒ×¼ŽRý4ÎGPO´üZ–³°|Ò¨2 ô�‰Å¬N¢½™ætr­ÆÉÒ˜ÚN#»XÜÄ’Å´s‚ĈÀ™buÖ‘Ú¼Dm[¦|ÒÛ¼8Y3"°Äû¦ ·º|qÂKÌ6ø0µga |…ÞÁÅköß®›µ7fä3Úîu%NHiÇïºét?« ž™¥ã»åÕ2‰Å8qÃÀÐÀ¸N©”Çf£ývRNýBí06Ÿ¿Ð¼@@dJÓ»¾‰=gØk¦)²‰En;D$Õ¯âÚ³±`f*åµ ‹Ü$38Q™±Óí<‹²QóË)JyŸ¿Œç ‹Ì¢é··]í¹¥‹ÌÒõ=œÍÅçT¦"¿uâ¥G‰Æ77ý¶–òz– �ý¥…:d–öR>µ””x}¶Ñ>FoÀ/àÚs¬Äò fd©Í’WnnÕÚ3ÄtwY¸5KL›TãZ ±`çñ<µ¼0™–­àhùµ,+"faù¨ÓòJ XìÆªÕj46=nÚ¼<|ŸŸ_  ƒÍ›7¶¿//÷ÎMÚ_XI]|X†-¦yE‰pfXu¤6/QǦê«&­_›ÉylÖ•`³ŸÔ‘Y.?ÔEvá®e†"QÉßQ‰5D^<F ¾ ¿7ºÈ'qýîg!îzVávÌøóÙàY^¸û8ÎRï·xƒêõvþMÀ‰~„ÆuJ¥$86í·“rêj‡±ùü…æ�ú�" Pb˜ÞõM u÷šiŠlAb‘ÛŽÄL,a$"±x]/ÍJŠ•Fê�‰En ‹œ¿¨ÌØévžEÙ¨ù奼ϟðyd³ø’A›Ö@Ç|ÄǺ¨³ɼ–déD³ƒµ.–VíXSgŒ¸ºŠBÒHŒyÒž%Z^(ú,‡3ŸðRRÚ´<›Lb‰çÕOs fi/ÑäŽp’èöl,ñaɈT'Ö´ff©'k–Ž{í¸ƒòé…7lõÓ8A=ÑòkYVDÌÂòa[`¥$û±Ž=Þ&i<óYO¡÷¿÷#ôãÍsÁ?gdE²ù%—˜rcXÜÄÓ‰ÆègˆÕYGjóµqlYòÑü-"SÔ/í^B¯5‡ õ.1D-Ý8™¥+¯h¢–}g1ÜJ+­ˆüþ­ÇüïÞ¶rhÇkå'­ÄI-D4’žÃºH,Ä]qzggáèĨ ]òVœ¸aàGh`\§TJ‚c³Ñ~;)§~¡v›Ï_h^` @dJ Ó»¾‰=gØk¦)²‰En;$–8ÚË ùv¹ÊæÏI/dHmAb‘Û‚ÄâV^TfìtKe®üÓ•_NQÊûüžƒÄ¸µö úáU4ÃJ{»gv—Þe†*¦zãÙ}ÍœÚfù0yþl&™¥—éµÑ" ûºÜûkìnÝS †«•˜«üýµ¦»Ù½=ù4ÂYbÆ6Ĉ,±|âË E95|bÍ|kß`ÌîñÈŸsf¬Ê]çˆÚçÈë £Äˆ]_¢z¢åײ¬ˆ˜…åöÀJH,öcù¸ÿþÛD–yý˃¿ŸýÌ—Ú3³¬tø³ÔøŸyý¶÷=ðÀC­oF‘l¾DÉ%¦Ü$7ñôc¢±zÀ™buÖ‘Ú¼Dm›Ã*ã»îYˆ(F`Ñ%³„z±$ã¿ÔðuÂ5m)>¿‹×{P69Öyî%ž´%=7¾íÏK½$™è{÷òED'Óœ¸aàGh`\§TJ‚c³Ñ~ÛªO¬j‡±ùü…æ�" �ôÁô©Gw¯™¦È$¹íˆ‘X|Ô–k4>1NFƒV­ZEe‚\ñwbѤ3žê§àK,u쇴œAb‘Û‚ÄâV^TfìtKe®üÓ•_NQÊûüY:}d–Þ&‚ú½o™¡žÙ]â6Ó:±À´{×m½tž¼jw{ÌfâϲR™lúâÀ)ÇfcI¢­3íÝ=M§n#šk (ö´Sãhêí~d’¶^¶ÐOýd3^­¹oM«mŒµ}AèÎòB¾^°¤5Rò™¡[šqÇ*£U?óÔ-¿–eEÄ,,6°È€R�$}¨–¶TYî¾ç>ºà1çÑÚuk‚%†Þðc?|€Á8~l–îþÿÙû�9Ž*í×3³9hmK¶%Ë’sNr¶±1Æ&Ç‘sü¹ƒ;r:r†Žp`²#š Æ9ã(ç,YV²,+‡Í»³3õwuOèžîé®ðª{ÂûìÑÎÌ«÷¾ ]]]ÕßT¯~¤V‘˜î7ùƒD,f¸Ô8qN&$b!(I”“3+æ!ªS¶òD‘Õ3ˆ¡XóŸ2¾’›-°š¿Í«æoŠEÙ9‚ÍG£r1Æí>•H¡lã7ÖñÊ¢Â4Úù1P6¡EABÁQƒI|«—RÉ—D,ê¾M"b©½IÇ·$ž;oŽs±~ÈaÃ}÷> ­‚¹s‡ü_d2î4¿ÅRZÓkÐv&‹º/‰XÌåF¥ä¤[Õf*nœ¦â²˜DI×rTÆÉ:~ÞGU}<7ìXýÝ]\!KöLõÂô†1èZš É“½àX˜æ<^¨¤À¬dH¼Oo(Ân›g;Logøãy~Æìüìžì±ÓóSœVœ¶ÇÏN;/9÷QCN.Ê:*?Z¨ ”Ÿ]6Ïþœ·#âq†"í©²ÁZjÇ—B?Š‹lKƒ3µüÈ.PkÚ-±àsy9‹…"¬¼û^8õÔ“¡¯¯õ166îÔÿ!J|›œaÞDõÐâTw&‹>qN 5`ÒåäLÄŠyˆb”Md©Þ;·ô~(é]¦§g »«š ;–ŸþB©ÅØ{Ì{òÖ¿ÀŽÕwƒILåK;žú· ­´“Úú±¬î8ŠÚ}**‘BÙ0Æo¬þÍ¢Â4˜×_e£!šÐâ ! PΟI|«—RÉ—D,ê¾ "b‰þå[8V¯^+æ 9 aË–/†³ÏYÿ¸eeìÂX£cöœYpàÒ*Ÿ§§¦¡+çÞ Ëdø ´¨;aqhÐc“D,ê¾$b1”•’“nU›©¸ipšŠËb%]†ê ò7p¬Îc†øìùWÈ#äì/sý}=°mµûÛÔÕA$  õ´×ß¶®Ê8<\3’Ë„N~족¯·×ÎÏ®:ùa¥ÝV¦€AÄŽfqùyÜÎOOtf«ù±B¨ÊÍ1‹X<lÈãK¡ŸÅE¶¥Á™Z~˜†¯‚Ð  >Wçää<üð£pÐAÂàà tvv–æm>7Ÿžž†‘‘aX»v£SW¢ K£qêw´v±$zê%˜“6('g"VÌc £l(ùa°wlº»fA3`É9/‡ƒN|ôôHù=³yìsÊ ab×Û± Ladl"ø%ÖqÃê~Ј£è Ý§¢)” cü6ÒNA£0 æõFÙhL%´HÈB 8Ð9ã3‰oõR*ù’ˆEÝ·Ivb©çûÀ}Àqǹ\‡³+ËigžGs8lyfLÙ‹eGu8 ÌphžÚ¸ ž\»Þ¾QWt9ÇsPtŸ]Ê·²tÞCÑù‘6³ÿ©|W±ýi÷þô2€ã?²òùÖ[WBq¦hOˆºíW/íž]{`ÑAûUÊmY:"–ÀˆEÝ—D,æ€r£RrÒ­j37 NSqYL¢¤ëÏp„îªâù³°:bþô³zr°Ï`Û4sÙ½ÇæÔ‡•:ù8«vÍå ³Ðß-ñ[t|Ô´íû äà±Í"ùQ[”rò³s.²_ºÃoJZq•ÐtÇ—B?Š‹lKƒ3µü0 _¡%@"|.?§;:ÎÌÌ”¾c°gÏ^†ññq˜˜˜pþ jÂÎfG6›…ÞÞ^èééqþòú)“ùò¯Æ#@"–FãÔïh$b!4 ˜´A99±bSeÓÉOÍDuûèÌì·×u³€…±‰)Ÿœ†Xq{6 .9Ö^ûµœ5`ËŠ«r!çÄÄ8LNº“¡ÃN‡uý¡3wìíž.ÀÂÌL¶r!‹÷©ºXuV÷ƒFEí>•Hm½@ ,ô­X´Q˜óú £l4¦Ú$d!´ÎøLâ[½”J¾$bQ÷mt‹grÜ­ÅsLMMÁ½÷<'žt¬+,)ºBÅíï¼?pñþÐßßçxðÄqá ÿ¾ü*ûT_QŸ£ÓÊböÐ,8ðÀE•Ï|w™°=>5š˜˜´Ë;±¨¢QÛYÃW‡·|IÄb(7*%'ݪ6SqÓà4—Å$Jºþªßaˆ_E̼>bû}g΂9ýYÈ[=ðô†8 º—á-:N®™Më» ½0·?ݹÂr~ìÿºìüÌíËÁ£<?ëMæ§æÙåî*åǪÍðsÄS¶ ù*ô¡¸È¶48SËÓðU°Z$bÑCu< xÇEþ~ïÞaØgŸù@ûp„ý>#(ÆU¹'`ˆÅ —'NÇ& A LÚ œœ‰X1)Œ² %õÿl"x^gÎcÓYÁN{­s×È8Ìê×øÑž{GÇÐûâ“w_ýû�ùå':ùìéísv^sÖ–uáBe˜±à:1÷Ù³õ){Ý׿ægòhB~½²{tv–Ä5VÖ ÌQƒU+X׬î9`Œ;Ú}**‘BÙ0Æo¬ã”E…i´óƒ\6S mÚË“ÐæÐ9ã3‰oõR*ù’ˆEÝ·Éwbñb÷®Ýðô¦M0>6žxg.ÌùXô¼jE*qŸÃE,<– ðIÎüùCö_µºòO�´IÄ¢îÛö"ƒ³”•’“nU›©¸ipšŠËb%] ×ùœ!ÛÎÂ|,_ÜÚGlÏîÍÁ »áÁ½saÇ*Wì¡Ý%mÿÉ'f`çj Þ3Ý·ÓÙý%,]-x~߯ Üm ?«ìü욇íS??µ ®‘KG¢6!_…~"Ù–gjùa¾ 6BK€D,ø\aœåGmذrX·~ƒó7ìñK´K£qêw4±šLÚ œœ‰X1)Œ²Õ&UÒ0ÇÑêrçVuu:k«SùgW‘é™é¯kÑÝÕSvóuן~›¹Ýá…Ñ‘aç/ßu…ÿÐ2ŸŸ†Ba& bÉØóÅ'oÿ;<tãŸÝXvÞxuÀë(oׯ3“s>ÖÙ騬Ž\Ä3mcPw)Y£M0Æí>•H¡lã7VÿfÑFaÌë/Œ²Ñ˜Jh3ÐŽ,„6†ÎŸI|«—RÉ—D,ê¾M.b »çZ»n=LNÎ@G.öDˆ¯"LLLÙ7ÍÄälß¾ÃÝÒ¸ôh Ê£‚*ß•;Tz_„RºÒ£†xÖ+ïË#R¿ñõÀýT>ŽÁL¡àL>ø–šsæ ÂÀ@/ìÚ±;"F½^4h;“ˆEÝ—D,TB~’6SqÓà4—Å$JºþRªƒÐÇ yü´.Î/Ñ‹Õo½iø=§¥ó»`ýŽ)¸o×\8eÕ(ŒÌ@ïQ9{Ñ ¤Áòîã{F7[pÎN,/讌ßn~ ¼æé÷-•oé\;?Û§á>ÛÿÀÍÏ<;?Ë<ù¾Œª± ëKS;¾ú‰P\d[œ©å‡iø*Ø-±àsÕãäÎá¿À^¿~ìØ¹æÎ „xl߱î³õÎΩ¼q!`ˆÅ —'NÇ& A LÚ œœ‰X1)Œ²iæÇ“²JœLW§òðÈP¬ž€!û»{=tÏÈ8ì‡ÉéøGÐyqØâý «ÓüÍìs^&°÷«œ— –.Zú= ÒOmtÛeÕß Cöº1Ç3öë¡Y=ÀŸ„ËëÖ %M «ûA#Ž¢ƒvŸŠJ¤P6Œñ«³h£0v~ËFc*¡ ABB›BçŒÏ$¾ÕK©äK"uß±$î…á½Ã°Ã#ü˜ûÌ6è,MdFí‰ÐÈð4 &Æ'|u°{÷wö„«Þ–šr[m6è±I"u_±@jPLùIÚLÅMƒÓT\“(éúK¹=b–¿€˜%$®÷QDY žuø \ñ ƒÛw.€ã‹;ahçt/ÍAç⌻q øVÒÓŠ0¹vöNtÀ};çAGgÎ:¤ß‰1ù)—«’ŸÃàʇ‹pûv;?ÍüŒÛùÙ1:;ìü,ë‡\IÅR{UwLnºãK¡ŸÅE¶¥Á™Z~˜†¯‚Ð  .—wÎZ3—ë€\G.ÿÛ•0ôê—Áœ9C@¨-[¶ÚuutØãk.ç_®-‹Sý0;÷%‹.5NœŽM"‚˜´A99±bSeSÊOí “ù?Úó«ì@Xóûà—ãÓð6{=tÿŒâ."6v Á~óšs Þºk/è`S¡ÿge ;¯ß©Sˆ­Ç{Ü€(0Æí>•H¡lã7VÿfÑFaíü —ÆTB›‚„,„6„ΟI|«—RÉ—D,ê¾M°K} óÙêþº¼•!=ŸkÐv&‹º/‰X 5¨ &„ü$m¦â¦Ái*.‹I”tý5H{VÆNÁü„É–gý±3kÁù‡ «F`åîù°dj–Øï;ž,@Çü äìW¶ŸomûuÚ±¦íÅ”)€Â(ƒü¶"Ìì(B>°nllë‡Áî,œsÈ�twdBó•×r~Î;ln\mçg‡Ÿ~;?y…üŒØù±óÓ“…s%ócIä7›¯B?Š‹lKƒ3µü0 _›ˆÐð  >—'+úa÷îÝð£ÿ N;mœ|Òq044ÓÓÓ°uÛvX¹ò>¸í¶;!cß`›=›ßl¬N ÃE,2?0HÄb†K§c“ˆ… &mPNÎD¬˜ÇFÙPòãN"k×r­lzÞF‡'ákÃpz! ‡ÙcC—Â3‹øãu8ø.×–•ÑS’AÁÎ뮽£0%¹û Ç´ýzÊ~]kûÞÊe4ÔýKçdýsWéz`u?hÄQtÐîSQ‰ʆ1~cõom¦ÑÎrÙhL%´1HÈBh3èœñ™Ä·z)•|IÄ¢îÛ"–P8³œ"˜�ŸÜ”ŸÉ](![ºØç»¢pZﯬ7¬Û;¶í²'Ì—µþ>8xùèì¬5þXU>[c »£J–½àçõµb!ÁbÜÛ™D,ê¾$bÔ *˜ò“´™Š›§©¸,&QÒõ×`íiE˜[Ñ'faÁýÝxΑp×ÚqxzO6OôÃþ=#0j¶Ô_ÍwÀÖ©>xz¼˜•ƒýgçà¤%½Ð"‰zr^mYú»2pÁá°r½ŸáYn~zíüLÆägÚÎϤŸ±>›ÐÎÏœœ¼ØŸŸZ‘Jè˜Z§r­¨ŠHñøRè'Bq‘mip¦–¦á«`±$bÁçª"î5kFF†áöÛïr^bñ£ã¦qƒ\”Sõ!„îÀÀ�ÔŠXê°€ä+ŠD,f¸Ô8qt±”À¤ ÊÉ™ˆó˜Â(›HÒÈa’‹ÑqìµÎÞ£÷‡‰U[àÖñi¸µÇ^_Ý ¢ù)ŽO+�¼ij –ØŸù#‰Æ&§a|bÊþ;ù™4 :ì1p°¯z{ì¿ÝÎ#…xþFìuãðÇZ ²ýÝ>xW36Ú³=ÐsÈ>;±„ø×…ÆÁˆ1îh÷©¨D eÿ±ú7‹6 Óhç¹lL;ÐÔ ! ¡ sBgßê¥Tò%‹ºo³ŠX"|Ë7Ö²9µgj?þØZسk/uì¡0>6kV¯‡%K€ÙsáûƒÁ>8ò˜CŽÝvº§7m Ãm›žz–|€óy³nýºMpðòÅÐ×ß ?° †ì˜‡v0ÜÏ#öeN8ñ(ÈuÈM]==¥²g‚FßJ"SËmg±¨û’ˆRƒÐAÉI·ªÍTÜ48MÅe1‰’®¿FkÏ’­î®f,|Òs‹þo½éºr8cY?¬Ý>k¶MÁ¶™9ð̃.+Ý™<tfг 0ò0]ÌÀD±Ãþ›ƒ¬½ÐÖßcÁÁó»`©ýÊXá¬þØá)K-x~N_ZÊýÚ–·ó3eç'SÊ—œ''?…R~ 9Èe-(çg^We0ì2*lœµšîøRè'Bq‘mip¦–¦á«`±$bÁçRáä?^˜5kLÚ7ͦì›iüÇ Á¶±<\ñÁ“Þ…4Œ ãí<F6›…ÎÎ.èîî„0‹:|‘ˆÅ —'ÎÞ˜"`LÚ œœ‰X1Œ²¡ä‡âÔŽmÌþÂêÌAïQ‹ ¿mòÛG 8‘V(B…û²‰¸Í^^ѤÝîáÒq¦f­˜ùÞùJ˾îÈôu@Çœ~èX0�¥_dúÓÈ>ãþƸ£Ý§¢)” cüÆ:6Y´Q˜F;?Èe£1•@ ! ¡] sBgßê¥Tò%K ¾-&bñ XX~ºzAg}"ìÝ3â\Õï³Ï\Øoá<èëé±§áÜóVÀà¬~ؾu'g„ÙsfAOo7LŒO†æçÀ÷«|>ôðƒà€ÅûBOO7LOçáœg ƒCƒ°}Û.xö…gÀôTÆí8|ûHYÌZ0Ûù-ÞiÐv&‹º/‰X 5Ý”œt«ÚLÅMƒÓT\“(éúk´öŒY@ôÚbá*›™ûã¯e ºà€9°aÇ4lÎÃȤ¬&j‡¼ ÀÜ^ öì„%s;¡3'¾³I¬­”/¾1Úò}ºàÀ¹v~væíüLÛùétóÃý‹5ùé±ó3`çg^§óˆ"o¬ZNY‹òhôøRè'Bq‘mip¦–¦á«`±$bÁç ã¬ÿøÛZXÐÝÝí¼DùÌ·¡X|õlXJ|^Îðmfv%‹.5NœcŸD,%0iƒrr&bÅ<d0Ê&›ŸÐ]YXé» ±<eÞ/ltì3è¼¼!|ƒÜoìõ×'îÛß›˜„ m¾~hŒÛ•pg&+º`ðÄÅéé¬ ‘MàÕÅV¾±Ô[ˆE*ޤ#VÿfÑFaíü —ÆTÁ Ym�:“øV/¥’/‰XÔ}\ÄRoAÐý¾èý"°RÐÕÝ3ù˜½h>À¤ü³DwîØãìŠ255 y{ÂÓÙÙããŽ-gå`Çö=vîËhÁ?½øÙ0:< Óùê–”üÙÞsçÌ‚§žÚ3¥_ ŒŒŒC—kŒÇ²2ÎÖÉ;¶ïvl{v8R±ôÌ€!{Bgç™ÿÚÏ7!±Âf0²0èK"u_±@*¾ñ'9éVµ™Š›§©¸,&QÒõ×híYÇV^Cì•åÆšyÎW¾ŸÐù×Ñøn(‡ìÛí¼Æ§Š029S3�ù™"tض.{f6Ð…ÞŽ Èä7ì’FdmÊÉÏ>]ÎËÉÏT¦ìˆ¼=nwdíütØùé æÇªSæqB[Ì®2¨6!_…~"Ù–gjùa¾ 6;¡áA"|®(Nq1‹_í¸ÂâÎ \uS ÓʼnK$V‘JIIÄÒ(œúljXÌð €I”“3+æ!ƒQ6”ü°š8!J—گʂOI þ T¾3sveéY¾<ðÄ6x€ÕÕÍ'¾ì �sŒž±'¥YûÕ ‡ ÓÛé§©÷̦Úâ‡ýÈBVÄþAãŽvŸŠJ¤P6ŒñõØ«o¦ÑÎrÙhL%* ! ¡Å¡sBgßê¥Tò%‹ºo‹íÄâ_ìãÙ™Ÿ€…‡-…Ý< ²(Ú#¾cг ižš®Ša¸@¦6?OmØì<ÒÇò>oÔv Ävc¹wóžXŽ€E^Ãâ`îÒ…N™{úëLHªu&ÿX!ƒíL"u_±@C‚Þ„Ø�Ïf*nœ¦â²˜DI×_£µ§F~,n®ÜÌ Y‹¬„´ÿéí´ìW‡4g]Ô᫵×[·êíÌ8/¨ãÓ±Õ±D]®Z$bQ³¥Á™Z~˜†¯‚MÄNhxˆŸ+ÎèàUnÙù\=®ø8xå•XE*%¥Ç 5 §þA@"3|`ÒåäLÄŠyÈ`”M'?Þ_B01šÐGèy¿ôe¬¡› 7§z–/€©M» 81L*Vﻸ ©\l+—Žyýеh¨…%tMÁÂ"–˜¼XÞ Àw´ûTT"…²aŒßXý›E…i´óƒ\6S HÈBhaèœÐ™Ä·z)•|IÄ¢îÛ"–À/Þjf7|W’Á¡!X°hß=¬ª‘ÈU)?…d/¢¶9ý0ÿ04oÈÙEÆ«ŽB?áƒíL"u_±@C‚Þ„Ø�Ïf*nœ¦â²˜DI×_£µ§@~B=¾õFËYd '°Âùjâ¢ÚjìQbP´©ˆXDâ¢Ù„|ÚD(.²- ÎÔòÃ4|l"vBÃD,ø\¢œz»²Dûá–W,XcŠXðv}©åTƒº3‰XÌð‰sâžDHÄÒ`ÒåäLÄŠyÈ`” %?,"Ž;³¬5׳”âyÝ=4A" röú)ÅçE¡|ªqʰ"̬^×Tg•[YÝrÀw´ûTT"…²aŒß¨Ç^}£0v~ËFc*@„–„Î I|«—RÉ—D,ê¾-¼K-²¹,,?ò0èŸ7 vÚgú™\kîY6Û‹yÈÍê…ÃN8 º{zB&%þ:³”¤÷J¹‹6“ˆEÝ—D,Ð`7!6À³™Š›§©¸,&QÒõ×hí)‘ŸÀÐQã[oèácN`܉Zäkº -cÉw¹*­5Z m"Ù–gjùa¾ 6]_BC€D,ø\²œò»_†ó©pcpásJ¬"1wl$K£pê$b1ÃG0�&mPNÎD¬˜‡ FÙPòÃR 0X=CùûÒd,jØ`åQ/Ä]·‡"„‹EsW¢ÊÆa‹X,ÆÇw´ûTT"…²aŒßXý›E…i´óƒ\6S „PÐŽ,‚Lâ[½”J¾$bQ÷mBKõWm"dž_¦Ï}spâY§ÁCwÝ“ãÐß× Öܘ›€™é<Lå 0=>¬öû<³YH¥Ÿ·çí7ããɸ7Éºæ Øå逮Þ.è™=�™^Èdspô1‡Ãìysƒ“•5Ô ¶3‰XÔ}IÄ xb<›©¸ipšŠËb%]Öž ù© ±u|-¨¿†W¹©ÇøÿEaÎèüTcF/PVí¼ŠuÄw›‰ã$‹[œ©å‡iø*Øt} ±às©rÊíÌ®]D,Ñ ±$Ë©ˆÅ Á�˜´A99±b2eCɫƩL)"T¦Å:Ç2a Á—)fì©\·k-ÀFçÇ·Xo2nÕ͆ôØê¥ ‹¶KÀ«³h£0v~ËFc*P$d!*`ßê¥Tò%‹ºoŠXâ|CCÄ,½ý½pÜé'úǞ€]ÛwBÏ`Eä+P[mô©;«ðÎòj],èé륇/‡Ysf×ىŠøÔÏB`NEÄø’ˆEÝ—D,Ð`7!6À³™Š›§©¸,&QÒõ×híi*?P]窿NÄc‘3Ž×]«¿ WŸ¨¾ÝÇ]×w=ç«éÚS¡ŸÅE¶¥Á™Z~˜†¯‚M×—Ð  >—.gyìˆn›èàí b©ûÃj Àâòyh•SÝ™D,føÄ9qO"$bi0iƒrr&bÅ<d0ʆ’'h®¯v©ZÂbZ• vW,#õwÝ.ÇŠ6×¾«ÀûãŽ:¦úˆ±è” cÜÑîSQ‰ʆ1~cõom¦ÑÎrÙhL%"ABÁ“øV/¥’/‰XÔ}[PÄRF¼˜Å½iÖÕÝ ‡4LNLÀð®½059 ùü ŒìÞãüåéù£ˆ²Ù¬'ÓÕ«ÃÍC~:ï”'cçcpÎlèèì´ËÒýƒýÐ78Pz¤Aˆ¯¥šqƒíL"u_±@C‚Þ„Ø�Ïf*nœ¦â²˜DI×_£µ§f~"o6y¾,;F,òEîn’`Ý íð7Ì rÆ=ª Å&ä«ÐO„â"ÛÒàL-?LÃWÁ¦ëKhˆŸ “³þî,ÑÁ[YÄøñ|ý” Ëê¡UNug±˜áçÄ=‰ˆ¥À¤ ÊÉ™ˆóÁ(J~XxÏ„±>¾5 ƒ‚–: ¼‰âÊ$º”êÌ*(jî ¾« ÷'>Q°â0õõpŒqG»OE%Rh7Œñ«³h£0v~ËFc* ²uñ!Bg0ð%‹ºo ˆXä¶f.Á¹ÛVô|tct÷ô@÷¢?K½ [KuaX­ÌÕ_|³»÷;r[–¯(¯âîîiøêð¶‚/‰X !Qo±¤ÎWÚ6SqÓà4—Å$Jºþ­=‘ò*f ñ­Œ,¬N‚ˆ¯µl¦âFØ, _±HÚÒàL-?LÃWÁ¦ëKhˆŸËgpw–øàñ;•ˆB,ˆIK½©h}N™;‰r ‹.5NœƒŽD,%0iƒrr&bÅ<d0ʆ5þDÅç¢Z¥ÉXd¬°>UOÌq×íRq"̾µÚxñ‰ØïIÄ" Œñ«³h£0v~ˆ5¦ÒÐKhq…Ðæ`ßê¥Tò%‹ºo ïÄâE¸Ð……>fȱԤ Uñ[~ŸÐ*ü²ÎŠY0áô"Ÿ¯2b|IÄ¢îK"PƯcêÞ„Ø�Ïf*nœ¦â²˜DI×_£µ'r~j6>‹ôµ¼7"klQ~¢6+Æîû ±þ,_±HÚÒàL-?LÃWÁ¦ëKhˆŸË4§;/cÂñE7Ù¬OŒHýñIH ŠpN™;gò™&‹.5NœNF"‚4Ï™2É™ˆóÁ(J~XlÇlà5kÔðÜï"wû s“ÝɺòH\„A“‡P}œÇ$^!²RPPƸ£Ý§¢)´ÆøÕ¿Y´Q˜F;?ÈeÃSiè%´HÈBhc0‰oõR*ù’ˆEÝ·ÅD,q»²øí5w•ðXe¿è¯¬Ð;RªWüeÿxáI¸™)‰XÊ‹©êˆñ%‹º/‰X@&E,˜Ô×Z6SqÓà4—Å$Jºþ­= å§fã³:¾5ã¯Ï&¶¾$,‰°[6Ç$PJ—¤5—#*~R6!_…~"Ù–gjùa1vd›®/¡!@"|®d8ƒó=Œ¶¬;?É“¿—W'’xJ_Rrù:#‹.5NœNF"‚˜´A99±b2eCÉ‹˜HÂrb¯!ÜÑ7®1¬j¶JkMšƒ¦pÝŠlÒRã‚dî±h¹±ú7‹6 Óhç¹lXc* ½„6 Ym &ñ­^J%_±¨û¶˜ˆ¥ 11K1Ì�ab– £W�cU]9‹¹pT%1 ©»ÀhUþQ€Áv&‹º/‰X@ÆE,uÐt7N[$.‹I”tý5Z{šÊOÉ^÷±,"€çk©r¬[åKNAN±HÚÒàL-?LÃWÁf2.!1ˆŸ+ÎðàÕ]Cë§Áâ ¤B+¯Ä*’“TÿÇRZåTw&‹>qNÜM"–�“6('g"VÌC£l(ùa±qBÍab–È8e‡˜ç•Lò¸ ‹ƒPA‚ucYñeІÀ8Ëj>ˆEË%à˜È%‰Xhè%´HÈBhC0‰oõR*ù’ˆEÝ·EE,¢þuÅ.ÁçyL¥-ž!Ñ¿T3³û븻ÚÎ.¢ˆ©-±¨û’ˆ”A"=[³Åe1‰’®¿FkOSù©±†×¨E¾6ë+¡ãljùQh¡¸È¶48SËâu#žã ‰D,ø\ÉpF¯r[Jþ*i“±XÈœòHÄb†Kç # A LÚ œœ‰X1Œ²¡ä‡ÅƉ4{ç'Õç¬ðïÊ$ü$ö:kMõÎ uç1Oø±*ï"Õ…Ä"¯¯ú4cÜÑîSQ‰ʆ1~cõom¦Á¼þÂ(Ö˜JC/¡Í@BB›I|«—RÉ—D,ê¾m b©¿+ Hu~>ÎÜ"C>ó‹ÅþøÂâ’ˆGYAHÄÒ ¾$beˆEÏÖlqYL¢¤ë¯ÑÚÓT~"ìåa‰%Ù&¦âjrZ*÷!ÖB›ÅE¶¥Á™Z~¨ñOH $bÁçJ†3:¸·èä ¥Å±ˆåD,Æ©ˆÅ Á�˜´A99±b2eCÉ‹ƒWì¨H–' cLKfx2ËÌv½qHÄ¢ípÄ:ÐY´Q˜óú £lXc* ½„6 Ym&ñ­^J%_±¨û¶ÑN,A¡ Hã3z\‹»šøãGm#⠫ί |I„N�jˆÉ3‰XÔ}IÄÊ ‹ž­ÙⲘDI×_£µ§©üù²ð ÐÚ¤¯D>é/µ:Pè'Bq‘mip¦–™j›É¸„Ä@"|®d8£ƒãr‹KïqBÉpápª;“ˆÅ Ÿ8'n‡&K €I”“3+æ!ƒQ6”ü°Ø8Â4å„V=G™†Ý3,)B ×MÔAë׈A2ËûA#ŽŽƒvŸ* ©GÒ«³h£tRrÙ°ÆTz m ²ÚLâ[½”J¾$bQ÷m#KU¡ ‹Lã0Ô]}°¿ÏxE-2ya!| A.ÁçX?°,±4œ/‰X@$bѳ5[\“(éúk´ö4•!_˳ø¨´ÆÚ$}ŲêÛ„â&Ø&B~Bq‘mip¦–cG¶™ŒKH $bÁçJ†3:8‰Xð¹p8ÕIÄb†Oœ·C“ˆ¥ 4 QKÎD¬˜‡ FÙPòÃbãÓ„%ô͵´Ä~ÔÇÄùBÅ›Ë;n[J1¤ò‚qÿ�cÜÁhʺ‰ʆ1~c¶S„Q«?I¹lXcªâtš@h…Ð`ßê¥Tò%‹ºoŠXdýÃ-,xÜ… <bc¤†ÿX‘ q!KSû’ˆ”A"=[³Åe1‰’®¿FkOSùòn“Ðáµ11ëûF­ó©Øbt±ßDd¸MÔã"ÛÒàL-?Š«nxŽ'$±às%ÜD,ø\8œêÎ$b1Ã'ΉۡIÄÒ`ÒåäLÄŠyÈ`” %?,6Ž0M\BïÚSŒ! #,Ž#jVœ#ˆ"P ãŽvŸŠJ¤P6ŒñíØ‹6¢õ'™�eÃS w¡ÑABB‹ƒI|«—RÉ—D,ê¾m.b‰ßqÅjú¢ø|$p×Jw2£ã_-§¼ …D, éK"PFZ"–(4äÓ‰Ëb%]Öž¦ò#ä«Ö&–Š¥lG¶E>bòÔí©Ð&Bq‘mip¦–ÅU·F<ljXð¹’áŒN"|.Nug±˜áçÄíÐ$bi0iƒrr&bÅ<d0ʆ’G˜F¶Ï…=u«Žã®Û¥âˆ˜çq«£à9`Œ;Ú}**‘BÙ0ÆoÔc¯¾¯?IÀ(Ö˜j¨«Í²ZLâ[½”J¾$bQ÷¥X*¨>fHÌ×ò<NHn7ß*¾jb±4¤/‰X@$bѳ5[\“(éúk´ö4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(®º5[_! ‚D,ø\ÉpF' >§º3‰XÌð‰sâvh±´�˜´A99±b2eCÉ‹#L£ÛçjwÑ)_Üu»T³â! B?ºÐ(Ƹ£Ý§¢)” cüÆêß,ڈן$`” kLEì*B3ƒ„,„“øV/¥’/‰XÔ}IÄ€˜˜…Ž»ZGýfò7ÞY™¬¿ó/¨A`¨ê«ÃÛ ¾$beˆEÏÖlqYL¢¤ë¯ÑÚÓT~„|lSq[®=ÚD(.²- ÎÔò£¸êÖl}…€ ±às%ÜD,ø\8œêÎ$b1Ã'ΉۡIÄÒ`ÒåäLÄŠyÈ`” %?,6Ž0 FŸ«M¢²‹fÅŽPAÂu£8Gàº|½rÀw´ûTT"…²aŒßXý›Eñú“D�Œ²a©]…@h5…Ð6X~�uø’ˆEÝ—D,uý¨!&t±¾s '³ëK˜¿ Ÿ˜o”7aá%‹º/‰X@$bѳ5[\“(éúk´ö4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(®º5[_! ‚D,ø\ÉpF' >§º3‰XÌð‰sâvè4D,‰žîÛLÚ œœ‰X1Û£l(ùa±q„i0úœL™¢Ö0‹²Áê@¸nbæZk¹ž8á4â(:`5%SöÔv 8bõomÄëO0ʆ5¦2%в ! ¡- ±ü�êð%‹º/‰X„´0‰� Ä•÷7´#JTwqQEŒ/‰XÔ}IÄÊ ‹ž­ÙⲘDI×_£µ§©üù&Ø&¦â¶\{*´‰P\d[œ©åGqÕ­Ùú $bÁçJ†3:8‰Xð¹p8ÕIÄb†Oœ·C“ˆ¥À¤ ÊÉ™ˆ³}1ʆ’G˜£ÏaÕ±³d‹̉m®}'C*/á4â(:`5%SöÔv 8b{F¼þ$�£lXc*S2- ²ZË _±¨û’ˆEeA‡Ærè!¹:ó‹l ò’ˆEÝ—D,  ±èÙš-.‹I”tý5Z{šÊo‚mb*n˵§B›ÅE¶¥Á™Z~WÝš­¯PA"|®d8£ƒ“ˆŸ ‡Sc…�ã&˜qNýƒ€D,føÄ8 R`ÒåäLÄŠÙ¾eCÉ‹#LƒÑç°ê8îº]*ŽˆYqŽ V÷ƒFE¬¦dÊžÚ.G#í4âõ'‰�eÃSè*B3‚„,„–?±ËíË 3ø’ˆEÝ—D,ê¾ÿ¿zð‰/§œoAw‰1ÈK"u_±€2HÄ¢gk¶¸,&QÒõ×híi*?B¾ ¶‰©¸-מ m"Ù–gjùQ\uk¶¾B@‰Xð¹’áŒN"|.Nug±˜áçÄíÐ$bi0iƒrr&bÅl_Œ²¡ä‡ÅƦÁèsXuwÝ.GĬ8G«ûA#Ž¢VS2eOm—€£‘v ñú“D�Œ²a© t¡YABBËBbùÔ!àK"u_±¨û†wµÂð…ã”óèÇl+±¨û’ˆ”a¥•gC”iÜllʧLÃ7![œ¦ò#ä›`›˜ŠÛrí©Ð&Bq‘mip¦–ÅU·fë+TˆŸ+Îèà$bÁçÂáTw&‹>qNÜM"–�“6('g"VÌöÅ(J~XlaŒ>‡UÇq×íRqDÌŠs°º4â(:`5%SöÔv 8i§ ¯?IÀ(Ö˜š@W!š$d!´9t†_±¨û’ˆEÝWð¹¢á;šX‹Êúu-V‰öÕá­ ±¨û’ˆ”A"=[³Åe1‰’®¿FkOSùòM°MLÅm¹öTh¡¸È¶48SËâª[+Õ-A$bÁçJ†3:8‰Xð¹p8ÕIÄb†Oœ·C“ˆ¥À¤ ÊÉ™ˆ³}1ʆ’G˜£ÏaÕqÜu»T³âA¬î8ŠXMÉ”=µ]ŽFÚ)hÄëO0ʆ5¦&ÐU„f Ym ¡@À—D,ê¾$bQ÷UÑ”}KP“¨’ëúª"Æ—D,ê¾$beˆEÏÖlqYL¢¤ë¯ÑÚÓT~„|lSq[®=ÚD(.²- ÎÔò£¸êÖJuK‰Xð¹’áŒN"|.Nug±˜áçÄíÐ%b¡ÁU XõÉt“0‘DrÀ(J~XlaŒ>‡UÇq×íRqDÌŠs°º4â(:`5%SöÔv 8i§ ¯?IÀ(Ö˜ŠÕUhX%´8HÈBhSèœÝ|IÄ¢îK"u_Kòþ êK"u_±€2HÄ¢gk¶¸,&QÒõ×híi*?B¾ ¶‰©¸-מ m"Ù–gjùQ\uk¥º%HƒD,ø\ÉpF' >§º3‰XÌð‰sâvh±´�°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âˆ˜ç2`u?hÄQtÀjJ¦ì©íp4ÒNA#^’€Q6¬1««`õq¡ABBBçÄ.àK"u_±¨û’ˆÏ—D,ê¾$beˆEÏÖlqYL¢¤ë¯ÑÚÓT~„|lSq[®=ÚD(.²- ÎÔò£¸êÖJuK‰Xð¹’áŒN"|.Nug±˜áçÄíÐ$bi`Õ'ÓMÂDÉ£l(ùa±q„i0úVÇ]·KÅ1+ÎdÀê~Ј£è€Õ”LÙSÛ%àh¤‚F¼þ$�£lXc*VWÁêãBƒƒ„,„6ƒÎ‰]À—D,ê¾$bQ÷% ž/‰XÔ}IÄÊ ‹ž­ÙⲘDI×_£µ§©üù&Ø&¦â¶\{*´‰P\d[œ©åGqÕ­•ê– ±às%ÜD,ø\8œêÎ$b1Ã'ΉۡIÄÒÀªO¦›„‰$’FÙPòÃbãÓ`ô9¬:Ž»n—Š#bVœ#È€Õý GÑ«)™²§¶KÀÑH;xýI"�FÙ°ÆT¬®‚ÕÇ „&� Ym»€/‰XÔ}IÄ¢îK"<_±¨û’ˆ”A"=[³Åe1‰’®¿FkOSùòM°MLÅm¹öTh¡¸È¶48SËâª[+Õ-A$bÁçJ†3:8‰Xð¹p8ÕIÄb†Oœ·C“ˆ¥€UŸL7 I$Œ²¡ä‡ÅƦÁèsXuwÝ.GĬ8G«ûA#Ž¢VS2eOm—€£‘v ñú“D�Œ²a©X]«M²Ú:'v_±¨û’ˆEÝ—D,x¾$bQ÷% (£ÙD,qHã†bSÞ8e¾ ÙÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(®ºµRݤA"|®d8£ƒ“ˆŸ ‡SÝ™D,føÄ9q;4‰XZ�XõÉt“0‘DrÀ(J~XlaŒ>‡UÇq×íRqDÌŠs°º4â(:`5%SöÔv 8i§ ¯?IÀ(Ö˜ŠÕU°ú8ÐD ! ¡  sbð%‹º/‰XÔ}IÄ‚çK"u_±€2HÄ¢gk¶¸,&QÒõ—jHÚŒû&Ø&¦â¶\{*´‰P\d[œ©åGqÕ­•ê– ±às%ÜD,ø\8œêÎ$b1Ã'ΉۡIÄÒÀªO¦›„‰$’FÙPòÃbãÓ`ô9¬:Ž»n—Š#bVœ#È€Õý GÑ«)™²§¶KÀÑH;xýI"�FÙ°ÆT¬®‚ÕÇ „& Y-»€/‰XÔ}IÄ¢îK"<_±¨û’ˆ”A"=[³Åe1‰’®¿Të@ÒfÜ7Á61·åÚS¡M„â"ÛÒàL-?Š«níR·„PˆŸ+Îèà$bÁçÂáTw&‹>qNÜM"–�V}2Ý$L$‘0ʆ’G˜£ÏaÕqÜu»T³âA¬î8ŠXMÉ”=µ]ŽFÚ)hÄëO0ʆ5¦bu¬>N 4!HÈBhQèžÔüIÄ¢îK"u_±àù’ˆEÝ—D,  ±èÙš-.‹I”tý¥Z’6ã¾ ¶‰©¸-מ m"Ù–gjùQ\uk—º%„‚D,ø\ÉpF' >§º3‰XÌð‰sâvh±´�°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âˆ˜ç2`u?hÄQtÀjJ¦ì©íp4ÒNA#^’€Q6¬1««`õq¡IAB!�AD,ê¾$bQ÷% ž/‰XÔ}IÄÊ ‹ž­ÙⲘDI×_ªu i3î›`›˜ŠÛrí©Ð&Bq‘mip¦–ÅU·v©[B(HĂϕ gtp±àsápª;“ˆÅ Ÿ8'n‡&K �«>™n&’HeCÉ‹#LƒÑç°ê8îº]*ŽˆYqŽ V÷ƒFE¬¦dÊžÚ.G#í4âõ'‰�eÃS±º V'š$d!|HÄ¢îK"u_±àù’ˆEÝ—D,  ±èÙš-.‹I”tý¥Z’6ã¾ ¶‰©¸-מ m"Ù–gjùQ\uk—º%„‚D,ø\ÉpF' >§º3‰XÌð‰sâvh±´�°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âˆ˜ç2`u?hÄQtÀjJ¦ì©íp4ÒNA#^’€Q6¬1««`õq¡ÉAB¡AD,ê¾$bQ÷% ž/‰XÔ}IÄÊ ‹ž­ÙⲘDI×_ªu i3î›`›˜ŠkÓ{S²Äýôò£Ð&Bq‘mip¦–ÅU·v©[B(HĂϕ gtp±àsápª;“ˆÅ Ÿ8'n‡&K �«>™n&’HeCÉ‹#LƒÑç°ê8îº]*ŽˆYqŽ V÷ƒFE¬¦dÊžÚ.G#í4âõ'‰�eÃS±º V'Z�  4(ˆEÝ—D,ê¾$bq091»·ïß HÄ¢îK"P‰XôlÍ—Å$JºþR­I›_¾ÐàÜd­|.½bã²:ñ*1Câ|\[„½6¿a¶"ÿ›ÉÜÏþ›u?30Üž ýD(.²- ÎÔò£¸êÖ.uK‰Xð¹’áŒN"|.Nug±˜áçÄíÐ$bi`Õ'ÓMÂDÉ£l(ùa±q„i0úœÈuhí«n„ ®Å9‚ XÝqš²~"…²aŒßFÚ)hÄëO0ʆ5¦bu¬>N ´hGAdP ‹º/‰XÔ}IÄâà·—\ W_ö(‹°ÿÒÅðŽOöÙ¡o$bQ÷% (£ÕD,Qh¦œ¦â²˜DF9%mipšÊOˆyÖbY1|в,GÀaAÍî#!1±Gå= ÍWþ^yÈA®¿JVTn4;åö\b°²í {Þ‡�ºú&ö@ášÏ[ûÈ”*'PGÚí©ÐO„â"ÛÒàL-?Š«níR·„PˆŸË$'RqV¹«ç~å‰)ˆv¬æ±°:»šYÈœêÎ$b1Ã'ΉۡIÄÒÀªO¦›„‰$’FÙPòÃbãÓ`ô9‰µß8ì¼/'•Ï$\7Šs°º4â(:h÷©¨D eÿ´SЈן$`” kLÅê*X}œ@h!…ÐæHÄ¢îK"–P|íCŸ€‡WÞ[×þ¦¼μøߥä¯x“#ò¨‡ï]õ{èèì�1¨•ûî›nƒï|êK¾ï=ö(øÐ7>/Õ{åoþäÞh´_›Ön€ù[ðŸÿóÅJšÑ½{á/z}À÷Ç7üÑ}C"u_±€2¬Æ<ÿЂŒ¤­ÙⲘDF9%mipšÊOˆ½¼èW´ßdžû Èì¿¢®kñ¦ÏAqÕß cŸìê=J§,)ö΃ܫÿl÷íúZ~p6X…¼ó>Nƒf«c¯ˆXdÎÿˆß¶öf(þíƒÕµÝ¾ù{Î'�²¥k…ž!È^ôYÈÿà�Ó£1KŸ°=jQ¦ÑŽÛ48SËâªÕm[ƒD,ø\&9y{}å+_„“O>)2]¡P€ññqعs¬_¿î¹ç>øÇ?nƒ]»v•Æ6Q‹XAšYÄÂëõg?û tПõï|Üÿýà­/±˜áRãÄ9èHÄB¤°ê“é&a"‰ä€Q6”ü°Ø8Â4}Nà:“'ß;ñpƼC|毮ú;ütÃ-P] C¨ áºQœ#È€Õý GÑA»OE%R(Æøm¤‚F¼þ$�£lXc*VWÁêãB‹-Dhc $bQ÷%‹2n¿öFá´wÝps¤ˆEWߛ֮‡¬}0eí‡ü•³_›Ö¬òu@"u_±€2HÄ¢gk¶¸,&‘QNI[œ¦òaç"–béqB‘Xö\ç:EÆB5T±ð7K/ˆ±pØ÷þÜGx^µluì•|Û…+Ö±Jr^CVE,etô�\èÄ‘Z[Œ-‹B?Š‹lKƒ3µü(®ºQݶ5HÄ‚Ïe’³Ü^"í–Ífa``�–,Y çž{¼ï}ï†ßþö—𡽆†fK´½Xºf±Ôãe•k ŒãWÝ™D,føÄ9q;4‰XZ�XõÉt“0‘DrÀ(J~XlaŒ>'’„•&faiíïYù¹¯ƒ¦pÝ(Îd 5Ñ£è€Ó” ¿ GÒÑH;xýI"�FÙ°ÆT¬®Â¤=„¶ Ym AD,ê¾$b‰D—•sõ^O<ð0ìÙ± Dpçu7EÆâ/±ßÌéÕYG&ksù_öKÄ7 Çœx¼û¸Ž;åDŸ//aX¹IÄ¢áK"P‰XôlÍ—Å$2Ê)iKƒÓT~êØËW¨Q qx‘Yx{æº>ubrKÁ”YþˆCU…#¾5Æê/vò|ê”ɹ¸g¶®69ìO3²fv¬÷סv{*ô¡¸È¶48SËâªÕm[ƒD,ø\&9«"õ?ttäàâ‹/‚ŸÿüÇpê©§D 8J¬ ‚f±øMV'C¸ï¨îL"3|✸šD,-�¬údºI˜H"9`” %?,6Ž0 FŸº- î/1BÒðÉ-³ üˆQ¸nç2`u?hÄQt@hÊú‰ʆ1~i§ ¯?IÀ(Ö˜ŠÕU˜´ÐV ! ¡ !0(ˆEÝ—D,Úà ƒw\wclº­›6ÃÆÕkA[ßG,¼ãÃï…}öÛzûzáÌóÏ…w|è½Ð~ÇW‚¾$beˆEÏÖlqYL"£œ’¶48MåGÀ—U%1¸èqÙ…Žàƒ ?j× [P|Mqà@ÈÌ? âP(–oX .²ªƒêN2î®,aö󤛆Ñß½f¶<,?ùMÀèeï63Uõ‰[7-‹B?Š‹lKƒ3µü(®ºQݶ5HĂϕ 'Ci;¾SË¿ø98眳b9B+¯x <‹7&«ËU±¨«g˜D,føÄ9q;4‰XZ�XõÉt“0‘DrÀ(J~XlaŒ>'S¦Ò2lLq橎ȥ”PÂu£8G«ûA#Ž¢VS2eOm—€£‘v ñú“D�Œ²a©X]E·o#¸Žm³:‰XÔ}IÄ‚ËþïŽko‚ç¾üÅ‘én¿æFÈxŽ×ÎΘžÎƒ»¾óÅœÿüç:¯2¦‹30=3j ~ ±€2HÄ¢gk¶¸,&‘QNI[œ¦ò#àËqîîÌÌ„n4书ïÿ°šMÄÊ‚.Ér¡ßV˜+Ûˆåìølñ«’ŸÐl² Í·ù˜d„íþõ p‡ž×O‰”ï|6óôƒ°ç'¯sÊ›±/.r»n²™Šƒe‰—ÅéÍB?‰³S_Ñ´)®ºQݶ5HĂϕ 'óìÊ´>ýôÓð‹_üºò¹¯¯æÍ›Ë–-ƒã?Îü¿ãŸ?úÑÃÆOÁºuëíó=ê;éÇç­¼â°E," bã§,Ÿ”§²k’œú‰XÌðEsÒ�©¬údºI˜H"9`” %?,6Ž0 FŸ“)~y<)F &º•Äê¼÷~eÕ1FøE~o‰¤¯ÓnõæÆÞï‹1~Âi‡úi_¡Í0Æo¬þÍ¢xýI"�FÙ°ÆT…®R?1bÿ&Z$d!´Îê$bQ÷%‹9âpXýèc•ϛ֬ƒÍë7ÂÂ%ÖõYyýMà=h—Û1}à!ôç–§é›g™‚^û†!øL³<Œy~!nŠ·-}IÄÊ ‹ž­ÙⲘDF9%mipšÊo醰Ên#µ˜Üüt/<ºò9;o9ÀÐR(î]™¬Â*ùß ö«»FÈ2ùôÃÐsàñP{áè,12Ï™yÖYÈ"¥UJ\>X1 ¾xÞåïÀóX1‡©UâÌØ„û•±nþ™ÿµjÊQËí¬=²ðòX¥¡ei´ã6 ÎÔò£¸êFuÛÖ  >W2œñÁÿð‡?Ãÿø'pÎÜ5ãÖ¼yóà]ïz<ûÙçû|ºººàýï/¼ãÿa§+û±È<°šñ‹£ÊWЫŸ^ŒÏã õ.~¡Dí¶RµÅ)Y¸™@ÝTÓVù "/U„ÇV?IÄ‚Ï%Ή! 2°ê“é&a"‰ä€Q6”ü°Ø8Â4}N¥LB×®"cJ_æýàïçNT«üe)~œà#"^Ví»Ú¡Û3qŒõÑC|`N\ÏÕäÓòü+õÓ¾ÂA ÜXè[-°h#^’€Q6¬1Uq:žX³`˜çt¡ABB›@à¬N"u_±hãˆãŽñ Yø ¤Û¯¹þå­¯M¿~Õjغé']%ƱGÃ#÷?b¨æ{ï®ÝpÛU×ÃÃ+×o„±‘QÈf208{XvÆ XqÞÙÐÑÕðÅ×Ý 7ÿí*Ø´vLŒÃàÐ,?úp8ûyÀ'[×ïî›nƒï|ê˾ï=öHøÐ7>ræ¹hß¡|àö»aå ·ÂúÇ×Àî» P(@ÿà�,\r�~ÂÑpæEçì9³@Mr\“ˆ”ÑN"–(èÜdl¦â²˜DF9%mipšÊ¯X˜ØxOÈ‘9ô¹P¼ó;¥_N[•½9™¡1z<"óSÞ”¥´®êì€Ò¿X‡>2¬�˜½¬®€™ `£;€myŠOÞÖ†Û+‹pVÈ¢/ÞÀ¾9æ%Y|X³öw°á-P\s#ïþ?`3à ;X¦wß~UÀ4ùÕÎÓ—Êåð¸@1×m—åB°–¬€Ì‚CÁê²g–À&G€í\°é>(>~5À®õ®¨jwi‰ÎS¢¶48SËâªÕm[ƒD,ø\Ép2¡ïÑ¢}²wÏÑžÛNö5îÎ;àãÿ4lÞ¼^÷º×úüŽ:ê8é¤áî»ï÷gÑÁA‹—ïÐC…ç>÷8úè£aáÂ…ÐÝÝ£££ðÌ3[àþû€«®ºž|rm ?ƒ+VÀ—¿ü_D¾kØ?ÿóKaÏž]¾€ÃàÈ#„ï|ç[5~EÛïe°{÷.Ïß‚ àâ‹/„“O> />úûûabbvìØ?üÜ|óÍpÇwop׆Ë}ðÁKᢋžÇ{,ì¿ÿ"èíí…ééiغu<öØcpýõ7ÚÜwB=nÞ7ßûÞwÁ‹_üϾï¿ò•¯ÁŸþôçQP¯zÕËᬳ΀}÷Ýr¹œ]ïÏÀÊ•÷Àe—ýžzê)cÊy�Ièô$b1ÃÍI¤°ê“é&a"‰ä€Q6”ü°Ø8Â4}ÎDWщY¬é¶:à ‡s÷9Üfwö9?|Ø95 o‚[¶­‚ËŸ¹¦ØŒ¼Žø 2§à3¼sçç,8 ŽŸ½æu@¿=GŸ™‚ã;áÁÝáª-ÁÊ]¥1¾hy†`wÂ=ÔÑÿ¸à“¾ðkF¶À?ÝøßГí„×-= ž¿ÿñp@ï<èÈdá ·_+w<é¤ûó¹ï‡eûTü& y8ñò8û÷Ì…7,;NŸìgÏS¹íéñ]pÍ3Áeî€Ýù1¨+Úñ3LÙSÛ%àˆuì±h#^’€Q6¬1Uq:žX³`44Ú$d!´Îê$bQ÷% –qtvuÂôÔtå»;¯» ^ü–×97Õjyù£‡25ßzœ}cî§ €j¾¯þÝ_à÷ßÿäóÓ¾ûµÃ^@ã¯ûn½~ÿßÃ[ÿó=pÄIÇ‚ 3¸ä³_{n¾Ý÷ýî;á®þá¼N<û4xó‡ß Ý==`ÁvÚöô3ðO~6®Y°íÙ¹Ûy=zσðçK¾ôð¢7½²¹,È¡IŽk±€2HÄâ¢ÑnpšŠËbå”´¥Ái*?B¾âýaê釀ًkV®«ò]Ç!Âäßuvs.ïBÂõø+·ü9“î8ó­P??¥·¥uU'îñ¯‡Ü)oÈvøÓwöƒ5‡¿–@æˆÛù$®ù X;Vù ÌÏþ÷¨Cî¬w;â/xœì)o°c=ò¿}Gèî/å¼ ­ÅzîU¸|!dÏþw°ºé­ÞÙÎ 8àÔ7BñÑ+¡xÝ—!33鈽_F}Å §âªÕ­Ì)¦å@"|®d8å‚[Î.\–oÞÉÛž‹YøßüàÇpÚi§ÂòåË}~/|á `åÊ»!¸› ƒ{n÷¼Î?ÿ¼�߬Y³œ×a‡ ¯xÅËàÿ¸¾üå¯Áž={*iîºë.صkÌ™3§òôÝYgùËßjiä–™×éÙgŸà»ë®•N,·¬¬"\}ík_ o|㠣ÿ4Úßßç¼–,Y ÏþŰví:øüç¿«W? ü`Ž˜ç}ï{7\tÑsv^oœ—¿¸ýñÇWÁ'>኉jÅ>n¼P8è Åðoü·³«Žx óúçþ'øÑ~—^ú³õѲ€$ôz±˜á‹ælãAPXõ)r½.bÅlFŒ²¡ä‡ÅƦÁèsÖU sæƒgÍ;¾pÜËñJ-Ùs7þº`ߣá=‡]_|äÏpù3÷;;uúÅ'¥xößcg�Ÿ?öåpPÿü@¼Ž8rÖþÎë•KN‡ûwo€Ü÷Ø0±³4»e•|9[ ÖÂþºÇÊÁO}+gÏm}àÛ¥Yèd– ]˜ïYû ÿ}òk Ûó(àÎLg-‚Ãí׫:Þ½ògpïîõ¥y¶ÜÀ„¿Tˆ#éˆuì±h#^’€Q6¬1Uq:žX³`44Ú  Zgu±¨û’ˆÍ·`Ï0Ž:Þ/Ù½u¬~ð‘€/ÿEÙÝ7Þêû¶`�ö;¨þcˆj¹‹…|÷Ó_†_û‡0“ÏÛƒY+9ç•-½2ÎwÜ6¼k7|íCŸ‚+óGÁe߻Աøãg*±ù$†Û¿ùŸŸsòT >ÉÕøuZ5‚+¾¼^<vïCð™·}бðA0kÏ\r!yã¹+ägàò_þ¾öÁÏÚõ4âh’ãšD,  ±¸hÄŠFoŽ2 ß„lipšÊ¯\›ð!cbÃݾï2û‚µß±®P¤è.Ðð÷E{$Èr/mqb/ä·¯‰å,/­øhrá {Ú¿E,aù›{0ä^úC`žîˆFœ8Eð‹XŽ~)äžõÁ€ˆÅÇ^Tì}ñ×í´êåÕ+´ C±dg%Qó¨¢3þ rÏùH¨ˆ%˜ {,=òbȼü(d:œ_Ò3ê+N~Wݨnãã¶0HĂϕ §\p¯ˆ…¿2™òßLi§–Œ3ÿüÕ¯. øžrÊIÐÑ‘õðºÂ— æÃ%—|;TĆ3Ï<~ô£ïÁ¾û.¨Ä*Ø7«®¹æº@ÚsÎ9ÛÝ•ÌWÌÒ#íÎ>ûÌ€ÏW\U9žùŸl6 Ÿýì§àÿý¿·D,aXºô §<§¶¢ÄJày˜?|ï{ß ±„‹}~üãïÉ'ïy\Qµ¼aèí탯~õË‹¼}ßúÖ7ÃÛÞöV¥¾N"|.qNü‰XUŸL7 I$Œ²¡ä‡ÅƦÁèsXuŒÇ#byÃAg÷O~c¨ˆ¥<Í—üÇòç�+¸ãMeb[{ÎüÔžÛ†‰XÂpÜìÅð«3ÿêkû+qœÐ…p!Ë[>/(bqÊű +ÛŸ¯ãÚ·/|íä×úD,µ˜Û5�ß]ñfدkVè¹Oý´¯ÐxÊíÍBßjEñú“D�Œ²a©ŠÓéðÄš£¡™Ð† ! ¡…!pV'‹º/‰XÔ}CŽ»‰é)8Ñ^ó‚/ Þqí~_«îöîØåK{üŠ“`jfb¹KøóO +oüGE`’)‰JÜ_Ó•3èþ<Svð‰Âeßû©ó"<½ñ)¸ö+Å·ÅæŸ¹ˆ„ÛW?ðüõç—Eæ9’"–½;wÃ%Ÿþ*LŒŽ9‚•j¹íÉŒ½¨xÀA‹¡·¯×ù&SÊ=vïƒðËÿù!ˆ¡IŽk±€2HÄâ¢o(½9Ê4|²¥Ái*?B¾òm’ÉuÀäÚ¾Ïr‘#´p~Vm,<2}þº‰µ·Û7¢wè*ß\*ØÁ¬“ÿd~V0M~fv®ƒÂÞg‚Îv@î¢ÏCqp‘+þ(¥pò5{)äÎ~ˆ ;´zO} ÄåµXçî…#¤aå:±Ót&dOy}0†}ý‘ßü(Lo¼ßúÔ"³Ïa`ú0&,#‘I¶48SËâªÕm|܉Xð¹’áT îߑŠˆ[øë¶ÛnwÃêß=䀬Kø+c¯2~üãuv©Åðð0¬]»¶²;Š\àñ¥/}Á™”ÇQ.@©Å 'ƒƒ!åe°lÙÁÎ㋼µç}7Ýt ¸7ÎÜ×›ßü8çœàÎ-“““°~ýزeK tttÀ§?ýIX´h!È¢\.úÄ'>æ<R(<]xûñÇ}æ3Ÿ†yóæ„4a>oyËaß}ÝÇ-ìݻ֬Yã<Î) ¯}í«áøã“êó$bÁççÄ?¤!bItˆIXõÉt“0‘DrÀ(J~XlaŒ>‡UÇXq<"–Óç.‡÷~q`Gï+ÂÆÑ°~dä‹ÁþëògÃÅûSÚÝÓ}ñ~»o× |é¸W:?:ôgÁ{^»rÛxzlg Þ¬Î^g¨ˆPXy"H;§»^yð wRì `BêëSÇ¿ºJ?‰’^ôwtÃŽ|¾›Æäº þR!ޤc"ljXT§Óá‰5 ÖÊã'z´¡E!pV'‹º/‰XÔ}ëw|W”ãN;àëþïï¹é6xõ;ÿrÕIÂ×ÝØþ÷Ûw:?Í]ÂúUOÀ忸¬²#JºÞðÿ ‡qä§ópÏíw¥ߺvïÚ à^,{¾P„}é›ðÅŸº{{! {wï±ï÷38ú„ãàåo~,>x ¯¾~ÿ³_UB]ÑH®üõá‚—¼�zûûy…ÂÈ—~å;0ºwÄ){Ë;Þñá÷Àâeî‚ba&7]}üðë߆ɉI§Žxú›/¿ÎñŰ(rç›&9®IÄÊ ‹‹F¼¡hôæ(ÓðMÈ–§©üù*´‰ +Û kn¸àC¾ï;–Ÿã7Õîâyûe9kjÙC‚¿–ž|òÍuDg JÂùG@lj¯õ'° ÷Þø-»ç·öà?å|•™µ†žûaè^zº'C==õß påÇ*Q¹0&wÚÛ¸'$_·Áð-?„â®uí ½Ç½úV¼² 6¯Åp{e±4ÞæN >Niâá+aïßÿ ŠÃNDfeaðÙï„ÓýåÎûO0õKìº-:ס‰Ê$¦- ÎÔò£¸êFuÛPCnÒ  >W2œÑÁã¸Gë]S~Ÿ‘‘ضm;ì·ß¾>¿<ÀyôN™ÿ¥/}sÌѾ4»wï†Ïþ¿àÖ[o«¤;öØcáãÿOX´hQ%ßù„?ÊçOú³óù‰'ÖÀš5O:•2¸ÐåŒ3N/‰\¬Ê£‚ø+Lœrýõ7ÀôôtIp„=×}õ«_éKÃç¥ßùÎ%ð»ßý¦¦&ï.Ü>øÁ÷é§žZIÇ…;|þ¨ñ§ñTëñ¥/} |ðQ½W_}-üð‡?†7œ9³G6ñÝRxY˘5k>üáÀûÞ÷!§,ŽÐ´Î–j]]]v9¦à _ø/¸òÊ«´Ùlþå_^ ï}ﻜÝXÊà±þõ_ßj—ëí•Ï‘¥‘>†õz±˜á‹æ4w²"‹NÑ$L$‘0ʆ’G˜£ÏaÕqÜu»T·Ÿõe:áóǾ jVøÇµwÂWïÿìœq>tvÃÛŽ¸Þr„'Ò÷þ<¸vË#0Í….|l°Çœ×-9 :º}éÝõ|èöŸÃ{6—²ÀàÂއ¯Ÿõ&ßÚë±sÃ!ûÁêþC«îõ朮~ç/ÿQÅ­Ï<÷n& 30ÔÝ;&‡=Î ú;o‰“Ÿ/Þó{¸Ç:çügïw$|rÅ+`^GÑgíw d»`¤8]Z#Ø™ð— q$Q½úF¼þ$�£lXcªât:<±fÁZyü$b@;²Ú$bQ÷%‹ºoÄ5ñÌô ÌZ0–,óÿ:kbd^yOå3üÎ}·ÜáKâŽZqf õ¹=øû¯þà(ô½“™EîŸùŸ¯Â‘ÇŽ˜ä¬ ΃O}óËÐÙY½aÇ'#»öÀ-W\qàÑ=éøä׿hÇ=ÚyüÑÂÁ+Þü:ø·½'6?5 w]KhžCƒKâéuáÁ;îñM¤æï³�>ý?_vD,E›³À öýÁœwñð–w¿ÝCg9ú.f©&9®IÄÊ ‹‹F¼¡hôæ(ÓðMÈ–§©üù*´I ™\'‡·@~û¾ï­®AÈxjuGÈBDzskâarÝm`Å<"¨XÚ%sÂkœÇëx±çº¯Áè?kfÚùe÷> »~÷>˜ÙµÁ—6»ü<(vVvD)v Avið&ÝÄ·ÀŽ_¿ fž~€_8@açz¹î`Ï•ÿqp~^§âXùÅÓØ× SW|Æþô¿ùû0ùÈÕ0ùØõ°çŸ�˜äQw—µŒpäºo›óŲz† Ø·�<?x«’ÔÍœ[œ©åGqÕêVè\Òª  >W2œÑÁÕ¸­’¸Åxñ?\R‹þþ‡ßÝ% ¯xÅË}v.y÷»ß·Þz+¸ùtã=ðÀðÞ÷~ffüoý§z/¿W^Ü•…?^ec¾ï˸âŠ+=Ÿ¼êU¯ô 98¾ùÍÿ…_üâWŽøJ»”nÞü |ðƒÿ 7>åK{î¹çÀ¬Y^QÁç|Õ«^°\uÕ5ðñ6lXïô¿;wÁO~r)|á _ ¤å¢.ê >Z)ˆÏ}î‹%±sÚŽ?ªé·¿½ ¾ûÝïÒuÔQ°xqücŠIÄ‚Ï%Ή! 2°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Ûeâ°Òµœ=y|á¢`~Íã`¯yêøð?ƒS#|×yä'á+÷ÿ þ´öN_ÚýzgÙóêÎ) þoí-ðöÛ~_}ð/ð‡µwÀÊmOÀÛoþ<1üL%¿n¸jã}pû3²xÄÀBϯ%XÝëÎ {®üF{NùÖë¿ ß}ø*¸tõ ð‡/‡µ#ÛÜë’:~Oî„×^ó XiÏõól¦Š3v™ï‡þãÒ@ÚÎLŽ˜u@) 8¯Ph7å¦f¡oµÀ¢xýI"�FÙ°ÆTÅétxbÍ‚µòøI €„,„ö‰XÔ}IÄ¢î#¼(f`Ú¾È^QóLo~þÀíwU>?ñÐ£Ž¸Å .>éìïƒBÍ"`øN+ßyO`[ÉW¼å ÐÑÓ{ó°szÔ~ÁÈÌ,Zr <û…ûÒrß{kÄ4A¸õõ¦wý퉌w vçÇa¼0 ç]üXzÈò@\þŸØºV±pÜsór?ï¥/²ËÝ {fÆ`W~vÛwÚG “pö…çA_Ÿ‡Ö²ë®Þc•šä¸& (ƒD,.ñ†¢Ñ›£LÃ7![œ¦ò#ä«Ð&p±"¿5¾êú€-»äLgw¾¶fíw¬#nñbjã½�“{õ2QÙ%Ùê´ãù·D.NÃØ½¿sëgç¡úâw˜¦aôþ?ûÃq̧8¢þ‚…Ç„1œsøšÿ†œ}Žê°ãtdÝ;qï ¿íIˆ…P›0(Ú •ùÇ®ñ[~�Ãü ÿþƒƒ¢Í ³¹ù+›)ÕC!äšÄ^ -?®(v±úЦMqÕêVø\ÒŠ  >W2œÑÁõ¸Ë"WÜöxšî#<ÂÙQÄ‹Ûo¿V­Z ÕGUãmذV®¼Û—ž 5æÎSÎ=\uÕÕöØìß:ì”SNvvG©–Á¢EûÃAäK÷ôÓ›áª|îèè„ÓjçËwšùýïÿX*'ø±ÄwrùË_þêKÏ)'t²Ë#(aÕ{upÔQGzÊå‚‹|¾õ­ÿ-qfœG•ù/¿üïÎ#jÁÅ:qmÊÄwy©>ªû7¿¹,´O:éÄÊ£—ê•Eú=‰XÌðEsš;Y‘ˆE'Žh&’HeCÉ‹#LƒÑç°ê8îº]*Nù=s¶Ü¼`ߣɾûÐî-«"<á“c>>übÕÍôgÍ?´"báÿ?=¾ nÜòüèñëà#wý^{ý·`ËÔ0Xö$°ü*Ç›.烳;ûKò‰.ó7ø+ܹe•+çNšØîð\¿~â³×sݼd+ù¹mËã°vï–@úö|Ÿïð{ Ì„¿Tˆ#éˆzìÕ7âõ'‰�eÃS§Óá‰5 ÖÊã' z´¡½@"u_±¨ûŠìNȽm¿Vœ{üæÇ?óÙ»çÊû‡ï¾/°ÝïéÏ:Û}¦©@6Ÿ^·ÞÙùÄ» ß²ø¸'ÁÞ™IÏ¥j¦ì‰Ï +Š3O‡¿ÿÎ{sÍ‚«Ö8yßzرßþ‹`¿%Øq'*^F.dá7²N;÷LX»Úÿ‹ø-žSXÿøšÀ–š—þï÷áGߺ$ôßhÌÔÜ0Üù̶ÈMr\“ˆ”A"–x¤uCÑèÍQ¦á›- NSùòUh“Xàî‚2¹úZ˜uæÛ|¶Ü§À$Ûìx¬øN¬º¦´‹JýßT~°6©½èÖå³eºaчî)ÌZäŠXxþæ0ç·ÚãèÞMЙu…$åa¹Pz6úäê cÁÁõã ´‰•qƒfìŠqD7ö—Ef•löwýs!3¸Xû‚5û@è8ôYéU´GÖ xšÒRÈõõ~"ä«`3·ÑòÓâ  >W2œÑÁq¹ô÷÷¾œœtlÌ?ü°€ýL{.yÇ·€ øc}vîÜéŒi|‡.vY±â”н££N?ýT¸îºJÜ|§”°ÝXÊ;’¸ãöÒ¥KœÇîx100�·Þz#È`Ñ¢…uëSü‘Fµxì±ÇaÇŽ>ñŒûCs^¦"ÜtÓ-°lÙ²š8‡—æáüSxî¼Óý!L5n|×™{î¹7°{Í’%K HÄ‚Ï%Ή! 2°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âx>0w9rö¤¸øÃ ƒúæ¹cŸû9ÃTIÃ…"åu2‹?ž¨öÎ}ºgÁ½sá”ùËà¼ý ÄË”³³N~ņ{+âWŒâò:3Q÷W#¡~«÷l®Ši2¥EP{¾ÊòöšðÈvX:Ëÿxľšùz(˜ð— q$Q½úF¼þ$�£lXcªât:<±fÁZyü$$@BBû€D,ê¾$bQ÷•Ü=dÁâE°tù2XûDõ×W\<±{ûN˜=.<qÿ#¾ô¹\N>÷Lç±8"صuG@Ì1oÁ|(veUÔòÕX{mþâE8ÓSÓ0²g/ Ϊ±T}÷_r Œ¦ “Å<,\œTìÞ¦°Û.{-ŠTàuZ{«²hßs½ä¢IŽk±€2HÄ´n(½9Ê4|²¥Ái*?B¾8m´œ5­]ë ¿utìshÅ–™µX¯=&ŽnƒžýOô‡²ÇÈ©U×¹?ZƒJ¾°ÆÙöôÌ®üβk1³c-ä,w–\¹l¥Ëgodžú±%Ú„Çs´g—mÁÁÐqäÅ]t4d¹`§fËê¨x•XHÄbȦ¸êFu«ÇÙä  >W2œÑÁ±E,ü¾ÕìÀÜ`xxÄwìkæ}÷Ý004Tæq…ÿû•>! Äϵ×^ï¤áÇpØc…®¼òjð8ûì³/``Ö¬!©ô<û쬛õë×WvL þ@$ëÖ­ø”ë8ª}ùN4ÕÝXÊâ¯=øã‘ÚtªyIèx$b1ÃÍiîdŰn7"°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âÔ¼·;ÝP®WL¤ƒÙ}þ9¡= 0{R8¯k�^°ÿ pº=—^6¸/ìÛ#8.2(¬Èâo›«ÃÝQÅ*íS P¬ï7a¯5;"Ç/Sšó-W30Y˜ÏRé‡,¡“T¬ó—rS³Ð·Z`ÑF¼þ$�£lXcªât:<±fÁä „– Yí±¨û’ˆEÝWRÄÂ1U,À9Ï=ß'dá…Õ>'œy*lXíß^ø¸'Cç@Ÿ# ÁÌTð½·¿¦ùŽ.å|× Ûœüð¢MOÕŠTü¾=½=ަ:z»ß姦Ab픟 Šjœ_ÖCdÀÏ$ÃŽ}IÄÊhZK‚˜4n(šŠËbå”´¥Ái*?B¾xmâ2¸Ù~3ñèß}BŽÌÂã!¿æFÈ.ðÿrzjÝí�“{Ê? §, yÎMa„…C'¿¹N'®#»ÌvL»'²,g·”ŒçfË…Y§‹…]¦®grG=T.rœ207åõÕ$ˆrV³™ŠÛùQ\u£ºÕãlrˆŸ+ÎèàØ"ŽþþX°`AÀºqãFç/sºººþñîæ›oññqèíí­|wê©+ìt]Î# ̃Ãóç<ð #ØÈ88pë„? ]]©˜ïoOO°nÆÆøí}Ü’ßßµûÑÝÝ qƒøää„ç1IîwÕø &&&>|§šÚWIÄ‚Ï%Ή! 2°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âÔ|Uú®;ƒs˯+Ûèȯ_v¼ë°çBwVd,¬ƒ¸“`ÖýŠ#b)‹YÀo[Îz{øh•Ñ—)íâRÞú%1nÖË ÖùK¹©Yè[-°h#^’€Q6¬1Uq:žX³`ò„BKƒ„,„Ö‰XÔ}IÄ¢î+y§¼KJà´g? ~úíøžþÄCÂÐÜÙP˜™oð³/8?ô¹£õÐí<KܱѱÒåjx™GÇF ,Çî"ZAß‘‘QˆÂHȳ¹;»dÅÛ‰/tÖâŸûxÐbAçÐ,hšãšD,  ±èS5åJ¦á›- NSùòEnà?Ò²œµ³©Ç¯8÷]|Å«bË-<f†·ƒÅí<˜|ô G,bEYê2w>(žÌovþþƒà®«Uo.9BVÞ%Ì…#L±ð²Sž1x&(ö´ºúK;ªî˜âFœïì¿ÝÌ$Hƒ»äž÷È.?7Ô^Øû vn„™íkabÝÝ0øìÿ€ŽyK‚A¢°mip¦–ÅU7ª[=Î&‰Xð¹’áŒnBÄÂqÚi§:¤õ‚‹K6lØXᜠùáÀï~÷¸ì²?Ôzò[cË*Ï{§§§à†n‚ç=ï¢JZ>=î¸cœÇè¬X±" ỸT¿s‹7ò£‰µk×ÁþçG=é9ô¼wÿ3:6?ކû&?ø£š¼å, nÜ¿ ô Å©Åàà,(—ÙÊXžþn9SªEmÛ‘ˆŸKœÿB"d`Õ'ÓMÂDÉ£l(ùa±q„i0úVÇ]·KÅ©gc01þcÇ‹þòçWîn%~§ÊK×*=>(Ïw3©lëeÁ«:>tä CcµÃ[`Ýð6¸ßž®X°^°ôP‚UžÜ–E,eU&ÄLÆK•t%¦'bqËü>4±8”›š…¾Õ‹6âõ'‰�eÃS§Óá‰5 &OH ´<HÈBhmˆEÝ—D,ê¾’"Ÿ¯ž¡8æ¤ãáþ»î©XÖ>ò8Ì™Ï)P Îw<9öôS`ª’ßø|Ï]0?ðÝŽmÛarb<Tä±ií†Àw]00k°¼$ê÷Ôº …Mk×¾ª³¥q8äÚiþ¾ `Óú¾ïúíÅÁE‹�ìÊ?Ê)ˆk±€2HÄ¢OÕ”7*™†oB¶48MåGȹM úˆþff|'Lm¸ º–œZ±ç Y{ÎrzòOÞ Ùòº˜?ÐG¶¿›†Â®õ¥g|WÖÖ\VÍ_ùûk2ËÑÙ‹Ævbææ ü¶\e½®…•ìKA|!“ßHãk¿£"VÈÃè—ÀÔÃWBa[gü1H<ýàyoaP_Ñ´)®ºQÝêq69HĂϕ gtp|Kõ†ÖË^ö’@Š»îºf<?´Øºu[ Íðð0lܸÊ;XÊãŸÅ ,º(¿ÜïÁ‹®¸âJŸ…㤓N‚;î¸N>ù$ß÷ÓÓÓpýõ7ÆìmÛÂó·aƒ7–¯üuêÏ›8lÙ¼.X²dIÍ7–SeÎ¥K øð8e±K=,_¾ Ü›wáC<äåï¸x¨’[éãHÿÀ#‹¾hNs'+±èÄMÂDÉ£l(ùa±q„i0úVÇ]·Kʼn6ï±ç¯üQ:Þ]SømÃèv(òñ–V“·ãfÜ]M¬¬+háè´²ð‡^àûÓÚ;áÒU7Àª=O+µ³'…‡ÏÞ”ay)`y§·ž ‡ùAÅǹ~(;ZÑã&ĆVh7å¦f¡oµÀ¢xýI"�FÙ°ÆTÅétxbÍ‚Ém ­ ±¨û’ˆEÝWSÄÂ1Uœs.|¶ÏÊÅ$Ýû ï»SÎ:ÞIdþQ8`éG„âE±P€o¿»®Ï}·ÞønÙa‡¸ þÞíö"ÛúÕOÖµß}ËïðîŽY—òítÐ!ËßÝsÏ=°{f¬îkí3k¾%K«û’ˆEŸª)oT2 ß„lipšÊ/r›T`•Ä,î£x&ý»ÏÚ19t.^áûnò‰!S˜ªì¤"‚ÂŽ'¡‡ €\wäl^þêà¯lõÕÙ;=}î猛?÷qAîB\qÇÚ�²dæ,.ÿˆ®ôè·"˜½@ÙYgQðH|ƒ8ëÀ“¶‘›¾c·^ Ž[*;ÂdKu”é!P_Ñ´)®ºQÝ"œKš$bÁçJ†3:¸ KyLyó›ßxtÇŸþôgð TV­ZHs ÇCU�’ ¼æÍ›¹Òg¯¥,Bq?ßwßý°u«_ rÊ)'9öO<Á÷=Qù±=eðPk×®…|Þ?6~øaÐÓÓ[Ã]Íïàà€óH£°¼‰]¸ óè£,œ{ï‡&Ì#ì±à¬³Î ø<òÈc±¼§¶Â.SOh_Ÿ7oyäï×­[ïæ@ú8Ò?ðHÄb†/šÓÜÉŠD,:qD“0‘DrÀ(J~XlaŒ>‡UÇq×íRqâÍÌ^¹|t÷&ŸÏÑNÙw¹»Ë \O.ëye £³æõ¹Ÿ³% Ÿ�;;~5ë�èðÿ�ò¶g‡ßþsx|Ï&w3”RzþcŒÁÎ^Ð[J9¨Ÿöø”›š…¾Õ‹6âõ'‰�eÃS§Óá‰5 &OH ´ HÈBh3èœäÛÄ—D,ê¾Ê"?¸JþÄ3Oƒnïs´Y1 d©>VH<ß™Ž,œxjíÖŽüé'¿‚Éññ@úÍ럂›/¿&ðýŠ³Ï°óY„(ðêøõ·3ùà£n½ò:Ø"r9ê¤c«Îš(Ì|ŸO:ëÔ@šëþ|%ìÞµ vYj_O<º ÞóÒ·À¿=ïÕð_ïýüæ’ŸÂCwßjHð¸& (ƒD,úTMy£’iø&dKƒÓT~„|‘ÛÄg—âLõQ<ù57�ËOxd {±_´1õØ®H£|óJ€ì˜ÓëýBP+×ý§¾Î{TÄ,ö‡òûçf¿ózÓeÐ÷¼OC÷‰¯€lϬÊÎÈù§îu®jÑuÞ{í¥ÊŒ#8á×ή(ö?'¼²sƒøM0 zfl3;Ö9“I^/¹¬ûâï»<²ó‚°™ŠÛùQ\u£ºE9—4+HĂϕ gÌ-MŒ{c¬ü*–vä˜;w|ò“ƒ×½î5ô?ü°³#‹Uùå³<ð ³Ã‰Ç{ œ|ò‰¡B‘þþ>¸ôÒõ×^?øÁ%ðþ÷¿.¾ø¹‹Ù3è^qÅվؼÔÙehÈ?F]qÅUPÏ@%vžWúÒvuuÁk_ûê:B >õ©OÚù»~õ«ÿsêâe/û˜5«ÌWÿŠ —ã`WæÁ‚]»vùÒdì~ïxÇ; ¶¯ð¿Ï{ÞÅvùĽñÆ› ƒƒƒð¶·½¥òÙÛïÿýßߟ»ï¾›D,¸Ä9ñO $bAV}2Ý$L$‘0ʆ’G˜£ÏaÕqÜu»P >Ág§Ï€íy+Ip:!sƽkŸ~0æG]ì<&‹Tœ?³™Êß7z.ü㟅žÿ)øßÓß o;ü9pð¬}+#ÝìŽà.ÞOòLK*â1 ëþíïì³!P.„Z=ªŸöø”›š…¾Õ‹6âõ'‰�eÃS§Óá‰uû¸±ÄBK€„,„ÖDèz‚ÎI¾M|IÄ¢î‹$b©DìÊÁ ¾ãJþ_| Í‚ÃN:Fæ²Óh¼èU/sͼضi3|ù=‡U<ùé<LŒÃ×Ý _yßÇ¡0í¢pî³/~¶ß> ÿýOªû†±‘QØjópÑÌ¥_ývàWí]ÝÝpʳΔ®ËŽšfʸ÷î D¾ã LJ.…#;Ú—fdï0ü×»>«ôÿBîá»îƒï|ò+NÓŽŽÁ£÷<ÿÕáÉGV<<®IÄÊ ‹>šòF%ÓðMÈ–§©üù"·I¼;²df&Wê¡8¾ f6ÜUÙ%±-qud7íÄÊÿ ¤é³{Îz;d{+ñ2݃Ð}ÁG ·ô GH“™»:ޏ:Îx›=pO—D7vÔ‰=0¹úæ@ÌŽƒNƒÎØ~Ç@¡³ŠC‹!{ö@÷yï!Ô«òʺ(ƒÂhð±F}ǽ2Ùœ»sŒå¾:ö;†þå  Ê©e3·!ó£¸êFu‹z.i6ˆŸ+ÎèàºÜ/zÑ?Á?ýÓ ì×óá…/|¼ò•/‡w¼ãßàßøoøÝï~ çŸ^Àgjj ¾ô¥¯úvLáÈçgà²Ë~ïKËm_üâçࢋ.„ŽŽ\e¬<à€ýá+_ù’#–áŠ#Ž8þùŸ_Ï}î…5evãórºìW¿ú•¾ï¸XäŽ;îò<þ§,ŠqoìýêW¿ ”ço|=¼ímo…ÁÁY•ÝVúûûáCú�œ~ú©ÎÜyÉ’ÅvÞžo}ë›az:ïɃ[µ8óÌÓ]álÆÝAµP(Â/ù«@º .8>ýéOÂâÅ:¼sæÌ†×½îµ6÷ûiùc”žxâ ™0¿üå/ƒ|äÃŽ†—åÐC…Ïþ³pá…Ò>ôÐð~ýS’LÒ?èIÄb†/šÓÜÉŠD,:qD“0‘DrÀ(J~Xl¼›îÚ !ޏëvÐ7Nžs0œ4ç 8yöR8iè ÿköApâì%Îß9¥]PìóùÖß ÃÓþ,ž¼`üïoúçAù—\Øòڃφwþ\';=Cpþ£á]‡_Cå]Uì¾}r$·ó÷?æò8Ë"âãXÏ�üïYo…Y}_72P«GõÓ¾ŸrS³Ð·Z`ÑF¼þ$�£lXcªât:<±fÁä „¶C„¶€ÎI¾M|IÄ¢î‹,bá˜.à¬çœ7]}]å;ËCtƳŸy(€,xI¾^üš—Ãï~V]Hã7È6¬^ÿõî” Y…3ky·d¶àß?ò>ÈõtA¾˜ät~‘ÇÅ1ÿõžùl>[üE¯z)töõÀdLÜZpÌà¬Y0¼w¯ïûï~ê«ð={2õœ—½^ö¯¯sv¯ù¾Þ÷Æ·ÃØèX%[6> _zçÇ``Ö Í›#{öž»KeÏ”êÁœùsá¿�äàqM"P‰XôÑ”7*‘MY’6ã¾Èm‚Êm-¾nǸ„9;®ôqQhúÉÇ®¶Ç‚båñ>ΞÉ,*~ùÑEöXþÔ=0v÷o ï¤—ûRt¯x£½ŠøZ(î}À›2Cûdƒ¿ŽÎßñcg·çsÇê‰[.îågÙ²¾´¹%+œW-Šã{ Ó;u!°Ä/ òO=�µ¿Áë:äLȽãPà¿ö›…̼ƒ wàñŽ'&dýk'ê+êýDÈWÁf*n3å§@"|®d8cni"p/Z´ÐÙ E…B>ó™ÏÁÚµëGyNçþeðÓŸþÎ8ãtߣˆúúúàcûOxßûÞ [¶l…ÎÎNX¸p¿À|ÇþÁ~TùÌÍÞGílܸ}ô1GôR†ûx¡*®ºêçx/ï¨â‚•bYpÏ=÷Âe—ý^úÒ—xx,xýë_ëˆbžyf‹»^…î\ÂËÇwvñ‚ûðÇyÁãÿË¿¼V­Z o~óÿs¾ûå/gžy&wܱ¾´Ï~öùΫœï0ðyõç>÷EY|àiù®,ÏþÅÎ+ œó;ß¹Dð1I/ЉXÌðEsš;Y‘ˆE'Žh&’HeCÉ‹ƒwÓ]»!ÄwÝ.ˆW|†óÁ{îù9\½ùçý^{ùÑ»~ ß:ó-¾4ÏÚïHçõÌøn¶Ó,ê›ý¹î@¬[¶>÷ðGÛZîüwµ=wÍOBG5íBÛ÷Š‹?+·¯-“{Ìé …ž\gtF¥«Åàùëü¥œEúV ,ڈן$`” kLUœN‡'Ö,ÖõP‹ ¹B=ÐŽ,„6€Î™¼M|IÄ¢îk@ÄâFfpøIÇÂì9³Cíg]ð,G좂ñÂ4¼üͯƒÓÎñ>sÛmðÛoθ"¬g[gþ‹²×üë›à¸SO†ÉâL,ϱ'Ÿ�ç^øìJÜr¤Lé—ê^yÜ1ð’׿¦âÖ‚·àiÏ >?œpüqå]TfXfï;ÞõñúÛTÎßå©'×;"–ŒGÄÂÁÅöÁÏ~†fÍq$x\“ˆ”A"}4åJdÁDS֤͸ormâˆXÀ}ä7ßMdfÃPÛšÖ}¬Pu7–²=βˆÅ٥Ď?~ã7arííÁ´™df�™¹…ŠX¦»¦J;ºTcÚ;Ÿ„ák¿"(Ží‚=×}«~Á… ^Þ™÷Âô†{)²C ¡óÈçBç‰/ÜâKqd;L<r]TH\›©¸ ™ÅÅ+ª[sœM�±às%ÃsK3…ãrdd>ðà 7Üä{lOù=±øÎ#ûاàé§7ü{zzà ƒ–8â™ZÁ?N¿ùÍo9»ƒËfUxþþ÷+#óXÞµ¥*°a¾Çñ×·¾õmgw“ZðÇñb–,Y*b¹æšëà¿øu o×_ch^¸ÐgùòeŽpÇÒáãÿ”# C=Ëèè(|ä#Ÿ€;vø{To1âøS]ŽZ\zéÏàÞ{ïñ… ýD,fø¢9Í0HÄ¢G4 I$Œ²¡ä‡ÅƦÁèsXuwÝn•k¾Òn+×>ó|û¡+BÓî×;µ0TÄÂôá•¿¨~a‡ÏOÁOWÝH;ØÙç/:^}ðYÎN.\ÄÂwÿ媛!<“ &ô•B<Oe2úV ,ڈן$`” kLUœN‡'Ö,˜<¡´‰@h…ÐâÐ9“·‰/‰XÔ} ‰XÊÈCÎ|ö³ßï·ÿB8ðÐe æ:¦¡�øü'àuo‹½°V^¤sÅ9+kÿÍÚsž ” 9kh|ôËŸ…~õË`´0%téËS¼íýï„ãN>¡ôÈŒóª±pAÍGìØSV˜B›pŸW¼åu°ð€E¾ï3NY2ðÔêu•Ç &áÄ3VÀW~ø-X²ì JÚr¹Ë¯ŒGÄr葇×¾÷ X~Ô¡0Q˜1$x\“ˆ”A"}4åJ¦á›- NSùòM°M€w}÷†Xù‘=|Ç•Éǯ ¤›Ùý·>êHœG AÜÐ_½©ÇÓ縘…åaïïÞÃ7}˜€X“ïÀ2zÓw`ô¯s ÂOSüfU¦ôh#>žNÝókØsÅÍÔ“øN,;õnço8ÄÂ'BµyG.{?Loz8Ò§°w+ìüù¿C!„—×{]P_Qï'B¾ 6Sq›)?"ö‰Xð¹’ጹ¥©Ì­6Íçóð—¿ü ^ñŠ×8ËÊ„ˆ)ª‹Í›7ÃÞðæºZlݺ>üáÀïÿGß÷ŒÕƸöÚëœü„aÍš'á‰'Öx„5 jGon›™™÷¾÷ðýïÿÐy‡‰‰I¸ä’À'?ùéêÎ¥žª¼á†ìס¾\ãîNãæcûöíð¦7½®¼ò*ßÑåõ¯3¬\y·§\^^?ï}ïûaÓ¦§ëÆ-‹v™¾ßýî÷ÁÛvÑÒ?èIÄb†/šÓÜÉŠD,:qD“0‘DrÀ(J~XlaŒ>‡UÇq×í&Q,­ªòó¹3ÙÍÀ·¹Þ~Ó÷`÷Ô¨€;ƒ¿®¿^qÝ×a×”»“uIêÄûΣWÂo×Üc²‡Ýö3¸{ÛÐúª+>‰4Ÿ—€#ê±W߈ן$`” kLUœN‡'Ö,˜<¡´‰@h%У…- 3y›ø’ˆEÝWYÄ"Îë<^èÂó᯿ýƒïû³.8Oúñ;µÜc…iG¼ñ¢W½ Î~ÎùpÃ߯‚VÞ ›Öo„Ñ‘ç×c³fφ%˗‰§­€sì|tuw9»¹L îšRdE°ºrðñÿþ\ùUpÃ×ÀƵëarb†æÌ†ÃŽ>.xáÅpÌIÇCžÍÀÞ™ PE×`|åG߆Ë/û#¬üÇðôƧ`jr úúaŸý÷ƒ‘=Ã0kîlçW#… X¸ø�øê¿ ÷ÜvÜqÓ­°æñÕ°cë6˜žš†Þ¾>˜3qìÑpÊY§9;ËðËýá™qÁËþk±€2HÄ¢¦¼QÉ4|²¥Ái*?B¾ømâ0*¿Àö£ô£ìÊãú2YûFÙô£‡¾_åK;õØ•%‹åìÔå¸ò¸u. sÓWÑø€ &oÿL<øWè9úùÐuÐ)Ð1o)XüyâöXÏÅ&ùíOÂôº;aòáËÁšÜYΙ©ˆb8œYìÀEžß{Ûžøôžü è^v:äfïï¤)ìÝS«o†Q{ñ°8¾:Ï©Ÿ×Ò›ŒU¿<e[Ö®'65 »üFè<ú"è9òèØï0÷±E3y˜Ù¹Î®¯`ì®ßBqr,¼†Êb Z#õõ~"ä«`3·™ò#bopˆŸ+Θ[š*Ó~KÜ?Þ‡?:gÛ¶mήüQ<7Þx ìÙ³§$Öô‹XÊ»¸ù®îä966ýè'à°Ãç<ç9p¬=·â»ðÇ ñø»wï†Ç{n¿ý¸öÚëAIu—+·ì Àm·ÝçœsV ïW\q¥Oìá Sͧ“Cgw”ŸüäRøÛß.‡‹/¾N>ù$g·þH^{öìµË¿îºk¥³ ÌÞ½Ã5B÷Zƒÿå¢|äãpÑEÂsŸ{!,_¾ÜŽ3à”“‹tºíy´›×yjj >ùÉÏÀ/ù+;ýsᄎƒE‹xÝô:¶­ö¼”?Béúëo€[n¹µR§e1LõQÀõ•‹‰^óš×Á«^õJ8ï¼g9»àd³9xæ™gì2Ý¿ùÍï`£=gޝ”¡ГˆÅ _4§¹“‰Xtâˆ&a"‰ä€Q6”ü°Ø8Â4}«Žã®ÛëÁªù« gœàÿ³Ç:Èeàú-Àyþ<ñIpà°Ù‹`^÷ ó#¾½ScðÔØN¸cË*¸|ÃݰfdX¶•-=>Ðrg¿Ìþ[´ç£ŸXùkøëº•ð⥧ÂIû,sâðtÏŒí‚[·<?]u<5¼.æ»uÖÏ 83ÛºóP+¼.Ê—Vdáýö¨ô›ÿ:FÊÇ }«mÄëO0ʆ5¦*N§Ãk ëz¨E†\A¢ggKÐf üµê|®üàÏó·üÊ–¾ËÖ¼¸mÿ=á„“oãùd“Ð^à‹eðÉ<ýê¾;@:£@ù’ˆEÝWSÄ2+× ™¬Ï263 !┾l'ôÔ<r€ DvåÇi¹0evGoàûÓ£u/Yyì¾LWL™Ü~5R˜¬û8£®Lj¶£ä ™„A§¼õu“Ó,#3a»¼07n¶Ç÷mž`üüã¬\¯çq@þX;ò#¾Ï<Ý ×ûø zà;Øpñ ÁÄ#ÁãšD, Œ6±¼ê¨—¦¹@Maãë†oíŸU›©¸,&‘QNI[œ¦ò#ä‹Û&ü4ÍÍ…"ƒ|ÁôLÑù[( Ý|7“ΜåˆDøn)¼{ðܧÉŠvz;mÑ]æáiy:þêÌVÅ•Øök¦ÀœE|nêÈTcóÇ ñÔvR'ó*º± ¶C1d8) <8oξDÈYnsnþ 9‡Æç”­Tæò ëŒgW˜r«.Ëey^re*™r,—ÿÇ¿.—›ó;qŠÕtüo9.”ò]Ý휗ÛÍ8q:³Õº¯<ª‰úŠz?òU°™ŠÛLù ±/¾l‡‘qõC  >W2œÑÁÕ¸Ý±Š 7øcWùßòñWå N½â‘êリB ïㄪùcPž;ú_�õÊVûØ/‡¿ìåXår”¹ª12ÎØž©ÉoX]ÔË£Xþ¼qËyòÆ*ºá>~Îby° Ô¿Þkë¥Ìù¾÷½^ò’ñyþà?r^Õ6 -Y õ-ú=‰XÌðEsš;YaˆX¸ÈËĸ:ô¯-`Õ'ÓMÂDÉ£l(ùa±q„i0úVÇ]·Gø0>¯,€åù‹OÝs¼g Ùm¤ô ç.ZIxR €³ÖéNÈÅÇþ·Pê3a¸ô 'NÖyoEÈâNðlÿ™‚Ç©–¯ *ëNÁªÆÌ¹q 5StÊ^ž°ZÙ¬ÆNß‘uËU™ØzêŠçÃyKun|{"]á)Mv+uËÓrŸRž,›§ÏeJå¶�„„•êW }«mÄëO0ʆ5¦*N§ÃkLžPØ4þ¿i«„ÖÁÐÐ,çï½÷®<Ü3èpéo¡æÅJ‹žóü­}AÏQkß×"¶gÐŽ,‚:ƒQù’ˆEÝWSÄ" .©²L îˆ"Â=QÈ;Ý™èp)”©üêÜžJ¸!²íSżB Üb|§¿Ë~åJ ‹üf¤ðeøß0_ð¼î™wꪳôh$«”.@á7ÌŠž‰ÿn÷ÌtfrÐeå*²Jø\,ÄóÅë†ï#Z^uHú’ˆ”A;±èiØMù Ù˜†oB¶48SmOsmRZƒs%æv}þ9[PXÕ5?Èòõ/çY@ÎZ87Ã,÷Ñ@>ѧ±,gg>2[¥5Ø2W¶”Ö¥XŽêž«8\Ë¡8k~(‰nJ‹h`ùòìˆYÊ;ÁXÕý_*;½dÝøË¶8kˆ¥Á*åÇ»W^c,ÛœGeª—4œ?½ÁÊq‘åÖ‰å)s×B+ô¥²x2e!N9·Î€‡7W[?5mÕžÒö–껊«nT·æ8›�$bÁçJ†3:¸>·_xâîÒR}–žsf2å4~ñJ­ˆ¥œÆ½çæÎÄÊ/¾sI½{fUAE9žU÷>RU°¥1Æ»ûJ5Nø#xÊ\å‘«“}ay¬-«¿üq½>Õ|ùÓWo,Të§|1«w˜hˆyve ‡¿­jËfÕ…Aÿ '‹¾hNs'+ Kë>™n&’HeCÉ‹#LƒÑç°ê8îº=¥±ËøÝºŒå™ÄyÄ“�•ٖϯ<™,ïÞåüÉ8VËèÊ9Ÿ�…#•óii•Ä,ަú¨>V,_âó Yœ¼XÕI¡¼4Ô•r]É”3̃[å‰i©¬–;)ßõ�«©«JOüòó€3Uñgy‚ì|Îòq3[º(Åð=?¸Þ8å¦f¡oµÀ¢xýI"�FÙ°ÆTÅétxbÍ‚ÉJ›„V Y„ tF&ò%‹º¯Ä5mÀ׃½3“ ŠûN׎éøç˜rBÓÆ—™ <ø#ƒ‚¯/.ø˜òqû}¹`Å÷8¤Èºdþ¸Å¿</LÁ8ˆƒ‹t¦a¦A úZµíÖ—ušøüÓ hØ•LÃ7![œ¦ò#äk¦M¬êZUUÄÂE!åÝJJ"”² Â½�—Í”…$|»äÒÂXÎî%™Šð¥϶çJ'bïfc~‘ŒU9ÝTb3w7”bÆrIžß D«”?g;ÊŒUZƒ³|kü÷N¾Kë‡<^!cù~I|ì³~XþåY©ÊårÖ µCûfZÑ])OÆÍOumÓ›µ} –¿)+¼•uK«Â ¥2eËk…å_õ©Þ3k›¾«¸xEç!sœM�±às%Ã\Û½"вÐ$j’êN,eŸr,ˆ=@E`QNc•Çšò íË—_°áÝ]%*OÕ2x˪‹„æ°"f)‹XøØ^ÍêäÏÿ×ó}ïŒ}ÌÿhàÅ ­Ë «›Ú¿U{¼ˆÅªis¨¹ßhâ¡ГˆÅ _4§¹“‰Xtâˆ&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û£à Uá‰å<“À=a[Ì?NWG;?—Už0–v%sþ–…a¹;ŸXå_%xwIa¬:RzÄ0VE cyÆ)Ë™32þÓG>±õ mj3cy2ì™V&™LE<ÂóŸئà)ey7•ŒU¿®[¦z=Sâ¶2ÊãŸó˜%p'²ÙêâA™ÇÊÔ¿® @ù¸a¡oµÀ¢xýI"�FÙ°ÆTÅétxbÍ‚ÉJ›„V Y:£@ù’ˆEÝWâš6à«…l+A :o+ø’ˆ”A"³hØ•LÃ7![œ¦ò#äk¾M2å·’£´ôæYŸ³*;‚T~½]êݽ¹,fUÖØ2ž<Ž/_ls~ÑUJëÙQ¥,bñþzÌå³—ý¸Oi÷—ÚP^?/§7NµXÕxYV½qVŽã–ÂSEÌ]ó+Û+?<+Ýlt~©W®”o>ºKƒ~QŒS¥ñ9i= “µ¼NvjâUêÞ[?µh—¾¢ÚO„|l¦â6S~Dì ±às%û*.Š` þÎ'eAI­¨¤žÈ$Œ¯Z.¿ÈÑŸ®6~TìòÎ"Õñ¼\×—m¼±ÜX¼±«ñâóÇbò5âŸêûZ¡û]ýºñŠwDQ+Tá"Úrûצ ‡þG"3|ÑœæNV$bщ#š„‰$’FÙPòÃbãÓ`ô9¬:Ž»n„3»s~PPŠð¡Iu„«ÃåªY ²[‰wì*=ÏÕŒp÷lH[”ǙʘXþìIÈJbV„f"┳ZæòÆ·ü×ViÞ^Ùʳ¼{‹W¸â+ªå SÀ̓Oë-yØ,ñ±l©nkòëKå¦f¡oµÀ¢xýI"�FÙ°ÆTÅétxbÍ‚ÉJ›„V Y­Q ‰|IÄ¢î+r1[ÏW -ØV$bQ÷% (ƒD,faꦡ¶iø&dKƒÓT~„|Í·IùRE¬’Ï %Ø‚A@l’ÉBéYäÕ_eYž¸ŠUñ +oc Á‡7.T…)åGÿ°LɯöFRyá­–¯34^ÉÄjH}7¥JYŒ®Oy*v+˜V-{¹,¾2XV §'^ùo°èþ¼F¡mú®â⇠rÆ9§±às%ÓÛwÓÈŠæ,Û½;€¨qVî"AÈÐWWıäÃjÊáßqFµþaõR¿ü¬n¾jÓÖŠaü"¢øºßmLyø÷Tý.ú‰XÌðEsš;Y‘ˆE'Žh&’HeCÉ‹#LƒÑç°ê8îº]îãojÆDæ$ÇðÌ¿|ãF`ز*‚–ò¸ä/™+þ5‰JÂ’²f&,޲¬qg9ç»,ÔSKïCŠ[§xë*Ö;©gþ^ÏXÕv“½ÆQnjúV ,ڈן$`” kLUœN‡'Ö,˜<¡´‰@h…ÐæÐšÈ׳@“(oê¾Üjkvz¾Ñ—D,ê¾V­Õ—0ÚRÄ’à §aoT2 ß„lipšÊormR]„+¶‚¶0± « J*ik8kE>^€ºc]Ùæ¡xã†òylx•E¼`<ßbIÄ^þ…'ŸêßTsžg!å·êsD×OÛôÕ~"ä«`3·™òëçœ>HĂϕ gtp\îr0q ŸËéükÕ甇_„";irZåŽÊ°lY£Ó‹qFä¦t·Q®Mõ<±˜á‹æ4w²"‹NÑ$L$‘0ʆ’G˜£ÏaÕqÜu»TðhýçlVþ±DÔXç5Õ;ß{EQc}ÜýËÿ¦îðâ™û¸êÌwC–1yd!»µ„êNkʞ܄/”›š…¾Õ‹6âõ'‰�eÃS§Óá‰5 &O(m"Ú$d!´1tF&ò»5Å›º/·ò"^ÊùnD_±¨ûZµT_ ‹Y4ìJ¦á›- NSùòM°M<vaˆ“¾òO¼_˜È%.?¡¾Lœ³ž-®œáyeáyŠÊÇM3:¦’½¥ú®ââÕ­AÎ8çôA"|®d8£ƒ›±@Bœâô9åèqª;«óÆ9Z‘œ$bÁåçÄ?ˆXõÉt“0‘DrÀ(J~XlaŒ>‡UÇq×íRqj`…™cæ²k×±sd‰²EÍù„òÅ¢cÔ÷ŠZ¿ í†1~£{õxýI"�FÙ°ÆT¦dª“X³`ò„Ò&¡@BB›Bgh"_±¨û’ˆÏ—D,ê¾$beˆÅ,öF%ÓðMÈ–§©üù&Ø&¦â¶\{*´‰P\d[œ©åGqñŠêÖ gœsú  >W2œÑÁIĂυéîlJÄÂÁþÕ¯~ ¾ò•ÿö¤µ ã<>"˜\B°nÚ sâvh±´�°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âˆ˜ç2`u?hÄQtÀjJ¬óÆøm¤‚F¼þ$�£lXc*VWÁèãò„Ò&¡Ý@BBBgh"_±¨û’ˆÏ—D,ê¾$beˆÅ,öF%ÓðMÈ–§©üù&Ø&¦â¶\{*´‰P\d[œ©åGqñŠêÖ gœsú  >W2œÑÁIĂυéîln'ÕÇ1XNzœ6—8'þ „D,ÈÀªO¦›„‰$’FÙPòÃbãÓ`ô9¬:Ž»n—Š#bVœ#È€Õý GÑ«)±Î_ã·‘v ñú“D�Œ²a©X]£ËJ›„v YmQ ‰|IÄ¢îK"<_±¨û’ˆ”A"³hØ•LÃ7![œ¦ò#ä›`›˜ŠÛrí©Ð&Bq‘mip¦–ÅÅ+ª[ƒœqÎéƒD,ø\ÉpF' >§º³I‹åQªð÷Õó‚UùÎR³è$b1ÃÍiîdE"8¢I˜H"9`” %?,6Ž0 FŸÃªã¸ëv©8"fÅ9‚ XÝq°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´‰@hW…ÐFКȗD,ê¾$bÁó%‹º/‰X@$bI©Þ¨d¾ ÙÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝäŒsN$bÁçJ†3:8‰Xð¹p8ÕMïÄRFY¬âŠY@ú‰XÌðEsš;Y‘ˆE'Žh&’HeCÉ‹#LƒÑç°ê8îº]*ŽˆYqŽ V÷ƒFE¬¦Ä:aŒßFÚ)hÄëO0ʆ5¦buŒ>.O(m"Ú$d!´ tF&ò%‹º/‰Xð|IÄ¢îK"P‰XÒCª7*™†oB¶48MåGÈ7Á61·åÚS¡M„â"ÛÒàL-?Š‹WT·9Û$AˆŸ+Îèà$bÁçÂáTwNZÄÂQ,²Àw˜\¡°nÚ sâvh±´�°ê“é&a"‰ä€Q6”ü°Ø8Â4}«Žã®Û¥âˆ˜¸eu?hÄQtÀjJ¬óÆøm¤‚F¼þ$�£lXc*VWÁèãò„Ò&¡ÝABB@gh"_±¨û’ˆÏ—D,ê¾$beˆ%=¤z£’iø&dKƒÓT~„|lSq[®=ÚD(.²- ÎÔò£¸xEukS±M‰Xð¹’áŒN"|.Nuç¤D,µœâ=./g’|✸šD,-�¬údºI˜H"9`” %?,6Ž0 FŸÃªã¸ëv©8"æ®GYÝq°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´‰@ …ÐòКȗD,ê¾$bÁó%‹º/‰X@$bI©Þ¨d¾ ÙÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝäTl“A"|®d8£ƒ“ˆŸ ‡SÝ9-KR\jœ8‰X̬Ò±$6Æ`Õ'ÓMÂDÉ£l(ùa±q„i0úVÇ]·KÅ1'p=Êê~Ј£è€Õ”Xç/ŒñÛH;xýI"�FÙ°ÆT¬®‚ÑÇå ¥MÁ Y- Q ‰|IÄ¢îK"<_±¨û’ˆ”A"–ôêJ¦á›- NSùòM°MLÅm¹öTh¡¸È¶48SËââÕ­ANÅ6I$bÁçJ†3:8‰Xð¹p8ÕIÄb†Oœ·C“ˆÅHÄ‚�Œ²¡ä‡ÅƦÁèsXuwÝ.GÄœÀõ(«ûA#Ž¢VSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!©±•@H $d!´(tÎÞMäK"u_±àù’ˆEÝ—D,  ±¤‡ToT2 ß„lipšÊo‚mb*n˵§B›ÅE¶¥Á™Z~¯¨n r*¶I‚  >W2œÑÁIĂυéîL"3|✸šD,æ@"`” %?,6Ž0 FŸÃªã¸ëv©8"æ®GYÝq°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´I I­BŠ ! àƒÎ™?a_±¨û’ˆÏ—D,ê¾$beˆ%=¤z£’iø&dKƒÓT~„|lSq[®=ÚD(.²- ÎÔò£¸xEukS±M‰Xð¹’áŒN"|.Nug±˜áçÄíÐ$b1?§A.¬údºI˜H"9`” %?,6Ž0 FŸÃªã¸ëv©8"æ®G±úƸƒÕ”Xç/ŒñÛH;xýI"�FÙ°ÆT¬®‚ÑÇå ¥MR0;t ²èœùö%‹º/‰Xð|IÄ¢îK"P‰XFoT2 ß„lipšÊo‚mb*n˵§B›ÅE¶¥Á™Z~¯¨n r*¶I‚  >W2œÑÁIĂυéîL"3|✸šD,昈¥~¤R‹$g"VÌ¢b+(ùa±q„i0úVÇ]·KÅ1'p=ŠÕï0Ƭ¦Ä:aŒßFÚ)hÄëO0ʆ5¦buŒ>.O(m’Bêc+HÈB 8Ð9Ù'ìK"u_±àù’ˆEÝ—D,  ±4.ŒÞ¨d¾ ÙÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&È  >W2œÑÁIĂυéîL"3|✸šD,æ@"`+(ùa±q„i0úVÇ]·KÅ1+^Ê�«ßaŒ;XM‰uþ¿´SЈן$`” kLÅê*}\žPÚ$…ÔÇV!Y…@Ð:Ù'ìK"u_±àù’ˆEÝ—D,  ±4.ŒÞ¨d¾ ÙÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&È  >W2œÑÁIĂυéîL"3|✸šD,æ@"`+(ùa±q„i0úVÇ]·KÅ1+^Ê�«ßaŒ;XM‰uþ¿´SЈן$`” kLÅê*}\žPÚ$…ÔÇV!y…ÐæÐ9Ù'ìK"u_±àù’ˆEÝ—D,  ±$è‹H¥mc¾ ÙÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&È  >W2œÑÁIĂυéîL"3|✸šD,æ@"`+(ùa±q„i0úVÇ]·KÅ1+^Ê�«ßaŒ;XM‰uþ¿´SЈן$`” kLÅê*}\žPÚ$…ÔÇV!…ÐÆÐ9Ù'ìK"u_±àù’ˆEÝ—D,  ±$è‹H¥mc¾ ÙÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&ˆHVÀâ0–x!!T‰HÄbŽ ŸS<‰XSÿ ‹¾hNs'«ö±(ð1Ý$L$‘0Ž”ü°Ø8Â4}«Žã®Û¥âˆ˜¯Ge€Õï0Ƭ¦Ä:aŒßFÚ)hÄëO0ʆ5¦buŒ>.O(m’BDOz¤%’ Ym Ó{¾$bQ÷% ž/‰XÔ}IÄÊ K‚¾ˆTÚ6¦á›- NSùòM°MLÅm¹öTh¡¸È¶48SËââÕ­ANmÒÔp F"3|æ¸Å‚‘ˆÅ Ÿ>o’œú‰XÌðEsš;YµçN,’`ºI˜H"9`+(ùa±q„i0úVÇ]·KÅ1+^Ê�«ßaŒ;XM‰uþ¿´SЈן$`” kLÅê*}\žPÚ$…ˆ>Þ#-  ²Ú:§÷„}IÄ¢îK"<_±¨û’ˆ”A"u_åóŸ<¾iø&dKƒÓT~„|lSq[®=ÚD(.²- ÎÔò£¸xEukÓ@›45Ü‚‘ˆÅ Ÿ9n±`$b1çϛ$§þA@"3|ÑœæNV$b�ÓMÂDÉãXAÉ‹#LƒÑç°ê8îº]*ŽˆYñzTXýcÜÁjJ¬óÆøm¤‚F¼þ$�£lXc*VWÁèãò„Ò&)Dôñ&i …ÐfÐ9½'ìK"u_±àù’ˆEÝ—D,  ±¨û’ˆÅ¬- NSùòM°MLÅm¹öTh¡¸È¶48SËââÕ­ANmÒÔp F"3|æ¸Å‚‘ˆÅ Ÿ>o’œú‰XÌðEsš;Y‘ˆE�L7 I$Œc%?,6Ž0 FŸÃªã¸ëv©8"fÅëQ`õ;Œq«)±Î_ã·‘v ñú“D�Œ²a©X]£ËJ›¤ÑÇ›`¤%Ð@BBAçôž°/‰XÔ}IÄ‚çK"u_±€2HÄ¢îkZÄbÙP³1 ß„lipšÊo‚mb*n˵§B›ÅE¶¥Á™Z~¯¨n rh“¦†[0±˜á3Ç-ŒD,føôy“äÔ?HÄb†/šÓÜÉŠD,`ºI˜H"9`+(ùa±q„i0úVÇ]·KÅ1+^Ê�«ßaŒ;XM‰uþ¿´SЈן$`” kLÅê*}\žPÚ$…ˆ>Þ#-€ ²Ú:§÷„}IÄ¢îK"<_±¨û’ˆ”A"u_±˜µ¥Ái*?B¾ ¶‰©¸-מ m"Ù–gjùQ\¼¢º5Èi MDì 7ã$b1ÃgŽ[,‰XÌðéó&É©ˆÅ _4§¹“‰XÀt“0‘DrÀ8VPòÃbãÓ`ô9¬:Ž»n—Š#bV¼•V¿Ãw°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´I }¼ FZ$d!´tNï û’ˆEÝ—D,x¾$bQ÷% (ƒD,ê¾$b1kKƒÓT~„|lSq[®=ÚD(.²- ÎÔò£¸xEukÓ@›ˆØnÆIÄb†Ï·X0±˜áÓçM’Sÿ ‹¾hNs'+±€é&a"‰ä€q¬ ä‡ÅƦÁèsXuwÝ.GĬx=*¬~‡1î`5%Öù cü6ÒNA#^’€Q6¬1««`ôqyBi“"úxŒ´‚…ÐâÐ9½'ìK"u_±àù’ˆEÝ—D,  ±¨û’ˆÅ¬- NSùòM°MLÅm¹öTh¡¸È¶48SËââÕ­ANm"boX¸'‹>sÜbÁHÄb†OŸ7INýƒ€D,fø¢9ͬHÄ"�¦›„‰$’Ʊ‚’G˜£ÏaÕqÜu»T³âõ¨ °úƸƒÕ”Xç/ŒñÛH;xýI"�FÙ°ÆT¬®‚ÑÇå ¥MRˆèãM0ÒÆ@BB Cçôž°/‰XÔ}IÄ‚çK"u_±€2HÄ¢îK"³¶48MåGÈ7Á61·åÚS¡M„â"ÛÒàL-?Š‹WT·9 ´‰ˆ½aáfœD,føÌq‹#‹>}Þ$9õ±˜á‹æ4w²"‹�˜n&’HÇ J~XlaŒ>‡UÇq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢7ÁHK  Y- Ó{¾$bQ÷% ž/‰XÔ}IÄÊ ‹º/‰XÌÚÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&"ö†…›q±˜á3Ç-ŒD,føôy“äÔ?HÄb†/šÓÜÉŠD,`ºI˜H"9`+(ùa±q„i0úVÇ]·KÅ1+^Ê�«ßaŒ;XM‰uþ¿´SЈן$`” kLÅê*}\žPÚ$…ˆ>Þ#-`$d!|Ð|IÄ¢îK"<_±¨û’ˆ”A"u_±˜µ¥Ái*?B¾ ¶‰©¸-מ m"Ù–gjùQ\¼¢º5Èi MDì 7ã$b1ÃgŽ[,‰XÌðéó&É©ˆÅ _4§¹“‰XÀt“0‘DrÀ8VPòÃbãÓ`ô9¬:Ž»n—Š#bV¼•V¿Ãw°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´I }<¹ã†@hld€@hrXÖ=3¾‚/‰XÔ}IÄ‚çK"u_±€2HÄ¢î«xþS+¥|„n2 ß„lipšÊo‚mb*n˵§B›ÅE¶¥Á™Z~¯¨n rh»ÆÇU)¸'‹>sÜbÁHÄb†OŸ7INýƒ€D,fø¢9ͬZQÄ‚>® d‘‰X1‹Šq¬ ä‡ÅƦÁèsXuwÝ.GĬx=*¬~‡1î`5%Öù cü6ÒNA#^’€Q6¬1««`ôqyBi“"ú¸îqcnîI $Ú‘…@p 3ú(ø’ˆEÝ—D,x¾$bQ÷% (ƒD,ê¾:ºiÈ4|²¥Ái*?B¾ ¶‰©¸-מ m"Ù–gjùQ\¼¢º5Èi Mt}S…›9±˜á3Ç-ŒD,føôy“äÔ?HÄb†/šÓÜÉŠvb‰`ö˜ˆ³¨Ç J~XlaŒ>‡UÇq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢'wÜÍÚ‘…Ð’`R3u3¾‚/‰XÔ}IÄ‚çK"u_±€2HÄ¢î+³9J±¦_…nü±{ØÒà4•!ßÛÄTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&¾qîéÁ͉XÌð™ã F"3|ú¼Irê$b1ÃÍiîdÕ*"“çs‘õ`&bÅÌ#Ʊ‚’Ÿø‹aŒ>‡UÇq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢+7ÉM „T@BBÓ#l›¬éÉIƒÎI^Á—D,ê¾$bÁó%‹º/‰X@$bQ÷•<ÿMON¾ÃÚªy"ïù tÓÅØÀ–§©üù&Ø&¦â¶\{*´‰P\d[œ©åGqñŠêÖ §6ô(MXã*S^td%HU"±˜ãÂçD"–FãÔ?HÄb†/šÓÜɪµvb ÆB{´Ðtä˜C¬f‹gÐJ„Ŧ¥™�¯Žã®Û¥âˆ˜¯Ge€Õï0Ƭ¦Ä:aŒßFÚ)hÄëO0ʆ5¦buŒ>.O(m’BDW>nòÁ4Ò£…­²Zûw ¤Ò}|IÄ¢îK"<_±¨û’ˆ”A"u_éó³ÇÀa0…£Å2MT 2‘oB¶48MåGÈ7Á61·åÚS¡M„â"ÛÒàL-?Š‹WT·9 ´‰„ïÎ)s; 3 7s$b1ÃgŽ[,‰XÌðéó&É©ˆÅ _4§¹“Uk‰Xxlsã*ŒÔÿacÌ_$‘0Ž”ü°Ø8Â4}«Žã®Û¥âˆ˜¯Ge€Õï0Ƭ¦Ä:aŒßFÚ)hÄëO0ʆ5¦buŒ>.O(m’BD×:nƦ€@he…ВؾyKL ÑGÁ—D,ê¾$bÁó%‹º/‰X@$bQ÷U±plz;˜Â¦]EÁ,ÆÞ�¶48MåGÈ7Á61·åÚS¡M„â"ÛÒàL-?Š‹WT·9 ´‰¤ï¦qs7Üffd…,næHÄb†Ï·X0±˜áÓçM’Sÿ ‹¾hNs'«V±p æÆÕâöñÐïcÎø"‰ä€q¬ ä‡ÅƦÁèsXuwÝ.GĬx=*¬~‡1î`5%Öù cü6ÒNA#^’€Q6¬1««`ôqyBi“"ú¸îqÃv‹>‚@hN…Ð’Øô享Îè£àK"u_±àù’ˆEÝ—D,  ±¨û*ŠX86­Ù¦°zËŒ@XŒ½lipšÊo‚mb*n˵§B›ÅE¶¥Á™Z~¯¨n rhßÕ#Ñ)ÐÁÔÔ´Dj7s$b1ÃgŽ[,‰XÌðéó&É©ˆÅ _4§¹“U+ŠX8 sãjáé½ïbÎø"‰ä€q¬ ä‡ÅƦÁèsXuwÝ.GĬx=*¬~‡1î`5%Öù cü6ÒNA#^’€Q6¬1««`ôqyBi“"ú8ÆqSÜ:B+ƒ„,„–öüÛ“?Z'…Îè£àK"u_±àù’ˆEÝ—D,  ±¨ûjˆX8Ö>¼Æ 1Ÿ‡Z_xj:& ,ÆÞ�¶48MåGÈ7Á61·åÚS¡M„â"ÛÒàL-?Š‹WT·9 ´‰¢ï»óÆÆÕÉÉ A7s$b1ÃgŽ[,‰XÌðéó&É©ˆÅ _4§¹“U«ŠX8òùicãjaíß÷1g|‘DrÀ8VPòÃbãÓ`ô9¬:Ž»n—Š#bV¼•V¿Ãw°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´I }ë¸)>µ}\% $d!´$¹ûÞouF_±¨û’ˆÏ—D,ê¾$beˆEÝWSÄÂñÈ]‚)ÜþÄtDêÔê G¶48MåGÈ7Á61·åÚS¡M„â"ÛÒàL-?Š‹WT·9 ´‰†ïíÛó` ããã©ÜÌ‘ˆÅ Ÿ9n±`$b1çϛ$§þA@"3|ÑœæNV­,bᘚ27®N?¶µò>æŒ/’HÇ J~XlaŒ>‡UÇq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢c7…'wÐÊ ! ¡%±sËVXóð#žotF_±¨û’ˆÏ—D,ê¾$beˆEÝAIJæÁ5°ó™` ›÷àþù,Ô©ÕŽ&lipšÊo‚mb*n˵§B›ÅE¶¥Á™Z~¯¨n rh ßûw`óDLaff&'£žiîfŽD,føÌq‹#‹>}Þ$9õ±˜á‹æ4w²juK>?Å¢¹G ±cÎ ½˜3¾ï±´A+id›B8”f¼:Ž»n—Š#bV¼•V¿Ãw°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´I }ó¸aOí¶Gt—O¡9ABB ½xç57”>ëŒ> ¾$bQ÷% ž/‰XÔ}IÄÊ ‹º/‚ˆ…㮫ïT (�7æåLÕd¡N¨Þp4aKƒÓT~„|lSq[®=ÚD(.²- ÎÔò£¸xEukÓ@›èøÚ¶Ë7—w"37®ŽBÝ �ˆÅŸ9n±`$b1çϛ$§þA@"3|ÑœæNV­.bᘞ.Í% Ž«ù•#Ò0ß`+(ùa±q„i0úVÇ]·KÅ1+^Ê�«ßaŒ;XM‰uþ¿´SЈן$`” kLÅê*}\žPÚ$…ˆ>Ž}ÜÚRzG"´.HÈBh d2ÕC¹ü,¸›þr¹=!ÓùõœÂÈE"u_±àù’ˆEÝ—D,  ±¨û"‰XX‘ÁMºÑ éy.ªwŒ”EØøzÙÊ1{|e‘yIüæ¨Á›˜è6ã¾ ¶‰©¸-מ m"Ù–gjùQ\¼¢º5Èi Mt|™kþÝ÷×m&ÇÕ½{÷xÆUO�HÄbˆÏ·X0±˜áÓçM’Sÿ ‹¾hNs'«v±ð±nbÂ}¤žÉquê–'ëT(óýAƱ‚’G˜£ÏaÕqÜu»T³âõ¨ °úƸƒÕ”Xç/ŒñÛH;xýI"�FÙ°ÆT¬®‚ÑÇå ¥MRˆèãèÇ=ÖåïvÅ›Xã*Ј #šÐ’àçí‘={ášßþÔ 0r‘ˆEÝ—D,x¾$bQ÷% (ƒD,ê¾H"Žk~} ŒìË ŸÇÞ=Æàg·MÖÏ‹ÆMCt[œ¦ò#ä›`›˜ŠÛrí©Ð&Bq‘mip¦–ÅÅ+ª[ƒœÚDÇ·dûÙú)Ø5ÍŒ«…B†‡‡ ‹>sÜbÁHÄb†OŸ7INýƒ€D,fø¢9ͬÚAÄÂ155Å¢ùq•LAþº'j,Ì÷Ç J~XlaŒ>‡UÇq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢›8n wl6–7:®�²Z–åÚ¹ôÿB~Ý…‘‹D,ê¾$bÁó%‹º/‰X@$bQ÷E±ðÝXþú㿸a-s—w娗\?ù#·P$mKƒÓT~„|™¢Ÿ‚ÍTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&:¾¬úç’Õå_›WwíÚYš·º  ¢ƒ“ˆŸ ‡SÝ™D,føÄ9q;4‰XÌ!  ãFGÝGé%1®N\þ¨§ Ì÷Ç J~XlaŒ>‡UÇq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢9nøn,7>é¼59®�: -«FzÈ?îܲ~É@ #‰XÔ}IÄ‚çK"u_±€2HÄ¢î‹(báøýw~;ŸÙPá[²ü°ñuóž|ýê1ÎbÒ¶48MåGÈ—)ú)ØLÅm¹öTh¡¸È¶48SËââÕ­ANm¢ãë±}ýñ Ø<QLl\™™Ý»w¹Ùˆ+<·oŒs HÄb–‡S>�‰XÌp©qât$b1w²j Àøø8‹É«lçLýñ!¨”³¨Ç J~XlaŒ>‡UÇq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢›:nf®}Øž #ã*Ðh ! ¡eœ¸¸‡÷ï¿ÿXóð£F.±¨û’ˆÏ—D,ê¾$beˆEÝYIJæÁ5ð‡ïþÞ ]£Â7³0èr|óšQ¸ã Äf1i[œ¦ò#äËýl¦â¶\{*´‰P\d[œ©åGqñŠêÖ §6ÑñõØîß]€o® ßÅ为sçN˜œœ‚dà¹}W§ˆ\ÉpF' >§º3‰XÌð‰sâvh±˜CZ"–™™<Œ¹?‚Hr\üÓCPxr'nQ1Ž”ü°Ø8Â4}«Žã®Û¥âˆ˜¯Ge€Õï0Ƭ¦Ä:aŒßFÚ)hÄëO0ʆ5¦buŒ>.O(m’BD7uܰ§ö@þZ÷z&ÆU¡Ñ@BBK!L…Ïñã/|5æC #‰XÔ}IÄ‚çK"u_±€2HÄ¢î‹,báúÉgÝÇLªðë¯ûÃ^;Ž7¥lipšÊ/SôS°™ŠÛrí©Ð&Bq‘mip¦–ÅÅ+ª[ƒœÚDÇ×»^l¿ÿ؃åGø“%1®nÛ¶Ì£Z`±˜ãÂçD"–FãÔ?HÄb†/šÓÜɪD,œkddÄùœÆ¸:ñÓ•xÅÅ8VPòÂbãÓ`ô9ÔúE&\7Š×£2ÀêwãVSb¿0Æoã}Û5âõ'‰�eÃS±º F—'”6I!¢;nìÁuú;oi7B»€„,„–B=þºÇVÁ%Ÿü\/…‘‹D,ê¾$bÁó%‹º/‰X@$bQ÷E±p|ïcß…u®sÃTá×_Ú4ïûíp¸ E)[œ¦ò#äËýl¦â¶\{*´‰P\d[œ©åGqñŠêÖ §6Ññ­±½ïþQxh»ÛXãêÔÔ”a1‹çöM\"r%ÜD,ø\8œêÎ$b1Ã'ΉۡIÄbé‰X�FGGœÇçq¤1®ÖÞÚÀ8VPªžÅƦÁèsX‡SÜu»T³âõ¨ °úƸƒÕ”Xç/ŒñÛH;xýI"�FÙ°ÆT¬®‚ÑÇå ¥MRˆèã&›üeBñé½Î{Ú…Ð.È ¦³m–À_«Îç¨WÆó×ûâßuñ¿ûí·èÍ<`r[ñšγQíAaÃê5051ÇœvŠÇª0ZˆEÝ—D,x¾$bQ÷% (ƒD,ê¾D,¿üêÿÁ5¿¾ÆyŸÉx/¯ÜÉ‹é Ly|}ló Œç-8ûΪ醢°- NSùòeŠ~ 6Sq[®=ÚD(.²- ÎÔò£¸xEukÓ@›èøÖØ>ÿèüߺIç}šã*³pôôô.ª&‹9.|Nñ@$bi4Nýƒ€D,fø¢9ͬÚMÄ2>>f¿&œ÷iŽ«…{Àš.@î¨}A Ç JÕ³Ø8Â4}ëpŠ»n—Š#bV¼•V¿Ãw°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<¡´I }ÜäqSøûã¿}ƒó>q•Ð<èîîvþ>óÌf¾;?Ú¦Jk_ñ]À„,„–?aû#dU&/«xØ#fQè‹$bQ÷% ž/‰XÔ}IÄÊ ‹º¯!Ëß~ò7ç}íäÅýÓ½¨ñõžõÓU1KTöMØLÅM#?B¾LÑOÁf*n˵§B›ÅE¶¥Á™Z~¯¨n rhß±|ÿ‰qç}#Œ«î?<1K•‡D,æ¸ð9Å‘ˆ¥Ñ8õ±˜á‹æ4w²jGËØØ˜ó¾ÆÕ™'¶«‰Y0Ž”ªg±q„i0úÖáwÝ.GĬx=*¬~‡1î`5%Öù cü6ÒNA#^’€Q6¬1««`ôqyBi“"ú¸ÉㆋX¦ozÒyŸÔ¸Jh^%ÚFBBƒÂ/fÙ¾y3œtîYr*E±¨û’ˆÏ—D,ê¾$beˆEÝYÄŠ ¾÷ÑïÖ݉šLT…ï³<µ«Ï9² B飊¦j37üù2E?›©¸-מ m"Ù–gjùQ\¼¢º5Èi Mt|½ëÅÌ}œP½X8ÒW¹˜…?Ž¡¯¯ôP-0‰XÌqásŠ"K£qê$b1ÃÍiîdÕ^"æ<N¨ÞN,i«\ÌÂvŒBÇ ûˆðc+(UÏbãÓ`ô9¬Ã‰UþAˆ#bV¼•V¿Ãw°šëü…1~i§ ¯?IÀ(Ö˜ŠÕU0ú¸<a8èãÆŽ{�㪷 íÆB¨ Y¢m$d!4ÂOÜ–ï1C÷Þ|,>t9ÌY0â–ßèôßfôEà& ž/‰XÔ}IÄÊ ‹º/²ˆe̓kàkÿñUxà8ŸÓ˜¼Ä¯=3×=>Gì× ûÎòü ªhª6SqÓÈ/SôS°™ŠÛrí©Ð&Bq‘mip¦–ÅÅ+ª[ƒœÚDÇ×c»wÞz×ܸ5ï|nÄq•?fˆÿ¢/Dår9GµÀ$b1Ç…Ï)ˆD,Æ©ˆÅ _4§¹“U;‰Xffò°wï^˜žžv¾kÄq•?fhæþÍ=p6dæDìz†q¬ T=‹#LƒÑç°§¸ëv©8"fÅëQ`õ;Œq«)±Î_ã·‘v ñú“D�Œ²a©X]£ËJ›¤ÑÇM7ì©=0ýÓ{ °j»ó™D,Q%ÚFBBà nò²gÇN¸áu>~ÒñõOø$bQ÷% ž/‰XÔ}IÄÊ ‹º/¢ˆ…ïÂòûoÿ¾óáoÞí{œïÒœ¼Ä¯Û†‹ðë»&ì÷œº´Sýô×71ÑlÆ}™¢Ÿ‚ÍTÜ–kO…6Š‹lKƒ3µü(.^QÝä4Ð&:¾¬úçëOÀ»ïm“Eç»FW … ïu¾ëééñ‹ŒjeˆÅ>§x ±4§þA@"3|ÑœæNVí#ba0>>nUÃP,6þ¸ÊöL8gà˹ÃwgÁ8VPªžÅƦÁèsX‡SÜu»T³âõ¨ °úƸƒÕ”Xç/ŒñÛH;xýI"�FÙ°ÆT¬®‚ÑÇå ¥MRˆèãFŽ{°š¹ö ˜þõýÀFÜûÝ$b!È Õ„,¢Gy’B–0ÑJ¶ô]¶æÅmƒüï 'œ|¸gÏ^ ¼à*˜=2{rUýnî¾ûÀ ßðj¸àeÿì?ù“ˆEÝ—D,x¾$bQ÷% (ƒD,ê¾H".`áúëÿ;ŸÙQù¾Q&/"ãë¡,üë¹ýðºS»ƒ»7GUw\S°²÷eŠ~ 6Sq[®=ÚD(.²- ÎÔò£¸xEukÓ@›èø2×ü³õSpÉêqØ<Q¬˜ši\廲̙3 ú‚ƒyâ‚a HÄb–‡S>�‰XÌp©qât$b1w²j ³øÎa£££ G3«Öœ>èyÞÐqþ2WЂq¬ T=‹#LƒÑç°§¸ëv©8"fÅëQ`õ;Œq«)±Î_ã·‘v ñú“D�Œ²a©X]£ËJ›¤ÑÇÑ{Ì*ܱò7>éˆ.Ë  ACC³œ¿÷Þ»òtû¿H.ý-Ô¼XéoÑóbž¿µ/¨ó9êoíûZÄö²Úá“Çâ›À Øüœ^ +.x,;úˆJ fPGZ¾Ü$bÁó%‹º/‰X@$bQ÷E±ðGÝuõpÓŸn„‘Ý#•ïÃ&.eŠ“ÑñuNŸ/9©žwtw@Nïò•5͸/SôS°™ŠÛrí©Ð&Bq‘mip¦–ÅÅ+ª[ƒœÚD×?BèòÍÓð» °kºš°™ÇÕl6ƒƒCÐ××Wùµ•7m5F€D,fùp8åˆÅ —'ÎAG"s'«V±äó30==ã¾±©™ÇUk ºÎ<r'Ù¥siÅ ,6Ž0 FŸÃ:œâ®Û¥âˆ˜¯Ge€Õï0Ƭ¦Ä:aŒßFÚ)hÄëO0ʆ5¦buŒ>.O(m’BDÇ<nø#„ŠmüÝå+ß7â¸Jh%ÚFBBÃ"jòâl-Ycã»´yòñpð‘‡Ãþóî ƒ³‡ Ó^(´2"]GgÄLË›D,x¾$bQ÷% (ƒD,ê¾ç?V,Âôä4 ï†íOo‡Mk6ÁÚ‡×À#w=êÛ}Å kY¥ÝLsò";¾ò]ZN;¸ŽÝ¿Ù' ûÏÎÂÜ> z:¬ø*d d3îËýl¦â6gm"Ù–gjùQ\¼¢º5Èi M|¹yÂ^~Ù9U„MãEX=R€vçáöíyßî+­6®ò]Zz{{AKgg§ó9“É&PŽ`IÄb–‡S>�‰XÌp©qât$b1w²j%‹;¡P(:¹Ëç§aj*ÅbÁ—®ÕÆU¾KKÇá ·td Bf^X]�9ÑÍÐtrG˜£ÏaNq×íRqD̊ף2ÀêwãVSb¿0Æo#í4âõ'‰�eÃS±º F—'”6I!¢+7|¬ÉÛóÒ±)`»'¡¸uŠOí“;}»¯p4ú¸Jh|%ÚFBBC£<9aug³~E>@ i¡žòž£<ii”É ¯@htиJ h\%Í4®­&dÉÐFðžèÃ'/ViÀpRTÒ™ýe@ Ú|xªŽQVLÚÆSßÓøJ „F«@ àÆU@ ðÐìã*$HÈBhKÄO`œT•´þq³Q!Mh ÿx"7 iõ=¯@H4®:©*ii\%‚h\uRUÒÒ¸J ´ú¸J $²Úa�š‰Xž@ ‚1xǪf™¸ÐøJ „F«@ àÆU@ ðÐŒã*`$d!´=Ô'0@ ˜A+¨îi|%B£€ÆU@ ð@ã*@ x ÝW„ú ! àwÀ¨¼Ðd†@ &P;IiÅI ¯@H 4®Ò¸J <иJã*@ ðÐã*€ ²u ;€ÐĆ@ aˆOÚmÂBã+@ t@ãª4®A4®úAã*@ t@ã*€ ²‚ˆÛr’ @ ÄÆŠ h|%‚*hŒ‚ÆU@ ¨‚ƈ h\%‚*hŒ ôABA¢©ó ¡µA\ÐøJ í WqAã*@ ´7h\Å«ÐÞ q•@H$d!� l@ àƒÆW@ ð@ã*@ x q•@ A @ @ @ @ �$d!@ @ @ @ 4HÈB @ @ @ @h…@ @ @ @ Ð ! @ @ @ @ ¡!@B@ @ @ @ BC€„,@ @ @ @ „†� Y@ @ @ @  ²@ @ @ @ 9 (`Œ@ µ°, ê ñ•@ ^иªW à«z q•@ ^иJ à‚„,B Êš˜AqãGy‚Ón_  WÃAã*@ T@ãj8h\%‚ h\%pAB¡| Áž¤Ð¤‡@ Z:“°2¯Õ&44¾A4®þöþÐ’¤*Ç¿»½}«åÕ«½ºº««›Þ7hZÀYewEGañ¸ÏèŒè(*:è̈3£#óEGqa@@ö¥›^è}©®}yõöån矑÷f¾\""#òfÞwß­óugÝŒÈs¾8‘qãeæw#’Áã*ƒÁ`0LÁãj2x\e0 †)x\e0º²0mDoXöìšÂ3n¸ 7\}�Gí¾™)lŸÃð`¥5¨ïE(ò‰ã$=.Û/$–Uå‘2y\æe)ÎEYV!á¸j¿åG‰ç÷1/Ëà\b\…„ãê¸Èè¼Ãq™—)âŽÍËJyÛB~.‰þ]ÇæeÙ¶}8®XŸ”ú,øåq™õ™ô×qâ¹ËPW[Pw÷có&ר«ý á|RÛ'•¡öó®wÂZsóõœ];c+ÇñУ¸wáœ_?ïIýp#_wŽMãš}×áÈî£Ø¿í ¦ÇwabxåA§v"mäIH·ÊJáIP$7ÑGÉt”p<”GpHÒ”ÂGÃÔ€ƒR–HØÅNpDÒ”ÂGÓtm*9²ˆÃŠ#ÎÒqß4àHäµ'eÀ‘MÿÖúøiÒ¶ƒ:çHì›Éýݤ“Ú!š'Jm4ÖQ]_ÀÊò9,/>…ÙÙG1{î~¬­ö÷¸ºw¨ˆÛ·—qÓ¶2ŽŒ•p`¸ˆíE8О*Á¶ö_/qHîé¬ =ÈÒ­‹qIv}Ò”“ÆÞÈRô³ ®ÉDŠ.\÷*Já“™½eR c²´O&ÉΧãØrn{2ò‰·«gV¿‹&NT›x´ZÇ7VêøÊJ §jþW÷LãO¿7ÝxGŽÄþ}»°cû†‡ÏõÉ%÷óо²�ó1ó1ómm>w\]]Ç…Ù9?q<r wÝý¾ôå{qòÔ¹¾WŒ¬ÁBÆ%f³éïo›Áw¾ðf¼äÎëqãÕûaõÂÜÏ ¿Ì-äÆ1´/˜Ë*$ÛBWrYñßþ¹„b‘øDóµe…ë¸�M}©ÎŨ ± Ó:ÖžK0®¤XBe…ã*@óàDQÇZÛÔuœBÀ¤:­ç×±mÇö ëØ=¥a‰ÄϲŽÍʲ­c‰%[H¦ qH¬%î’›ò2Ì.—‚±-ì7Ü * ¹Û®Á]¸nò¼tOËö¡ÅGñ¹ó_À'Ï~ µ%ÿ¡Z±XÄVBp|ÇW=wy6®œ¹ R†âº‘¥eÈäE¹¿çµ/Yø´F±Z¦Õ£�EœóŠÃÈ'ÖáÑ*ýùš§í9 áö¦4é|´õkÏV]fÖV H×7 ¡£™ÔYBÿ6)'žŽýeÝ¿­âМ¸YìèHÒôÍT‰6úþnRiÊõSrÆÔá±íÂöékqàòÖ‘¹Ù‡qúÄpâØ¿ º¾Øãê¶^½oÐùÛa�7O–ŒúU¶Ö´|ÔWmFgSÆŒ …iøè{¼Ü'M9iخ݈Ka¯m×\Û¼ el›—õ³Ãþšc»õ‡ ÊIãã·ë&õÇ$(Å÷°ûý]Àˆc2R.aŸ³=c¤‚˜jþÆj ]\Çßίábúb\=xp/Þü¦×áòC¸éÆ«À`0 F–â”ç^udd7ìß;n¿¯ù¡Ö±»î~ÿðOŸÅ‡ÿæ¸xqëÞ¯2y…,ŒKÁ1ûÊë¾ïÙøÁWÜP<fóòŸ´þ¿ü÷?,ã‚Ê'X†ì\”þÙ¼üÏþ\Ú>Á2RÔ±ÚV%ú’ùâ"i,ÐÖ±š_âÌú’Ãuœt.‰¶0¿ŽâJ.K^Çݱäz.Á2’âR—›^ÄbTMhÅ”dΓÄDºrÒ‰XLã?:~®;‚¹ì‡ðO§ÿ}ü#î,-Þ¸Õë72ÁñU̾òÊ[¿ /ºö¥ÎøÚŠ; K̆Ž# %ûDFåèÒÖN“Ü^Ïl9¤mAÆnže{Æ8ÈÞG&b±.ÉõØ9å‡Ò†Ž+óȈÄ7KÂu™ÈapMi9,êQÍaÞÌûfê8ÓõÍÎ9¦¶_‰Ig;zÝá©Ç?†Çü;w––­8®ŠÙW~òÈ~øÀ Ší7»dKhë`]�”ß=-´>¶etâcD± q)², òóѶk7⢇{ .©IÄ3ó›/b ™nâu¯5ïѸÔc„^Ä’„†+îööéQüŸù5|àÜ*NÕ\Ý3ŸxÝwá[ŸûJ7Õ/ô ƒÁ0…PŠíçßñãøü—á·~ë÷qϽl™q•ÁÈ,da\’Þ´¼ñ‡Ÿ‹7ÿèó#˱ˆEz.J±Øµ½ÜÇ6.’Æm«ù%>�‹Xlâ’Õ[ÌŸE,ºãî~ˆãÒ±¸ûíö¿‚{ÉîáÅ»_ˆÿsì/ñ—Oýµ›/ư^½‰ ޝ¯¾íûð½ÏøA_À"À"–,9(œ&¹½žÙrHÛ‚Œ9Ü<ËöŒq½‹X’ÛÓŽƒŒ8LxYÄâí˜÷#󾙇:Ît}³sŽ`^E<ü8ü"<|ÿ‡ð؃vó·Ê¸úæ#Cø©+‡[’Ÿ¯¶Ö@ùÝÓ‹XL|i2*'¶]»¥8ÜqIMz$®˜™Ÿ`‹‘yÆ¥#:±„˜œç¨?09ŒïŸÂïŸ[Á]Xqó·Ê¸ú¦7|~ê-?äžÇ“'À`0 ƦBŒGûö]ŽßýÝ÷àÃù?ñûïÿÿÜü^WŒn€…,ŒK ÁuO¯;º¿ü–W´—BøfÝÛÞÄÉöe>í|Òú³ˆ%z<ûsiûËHQÇj[u\”èÏ"–`žÕ¹$Ú,ba‹>}¡úUØ'Çáí§±ó… åû~nÝv3þûc‚G—wobziÝÔàøzù®#xÝ·¾GfÂS2³ˆ%K §In¯ç@¶Ò¶ c7ϲ=cdïÃ"–äö´ã #^±x;æýȼoæÁ¡Ž3]ßìœ#”ç÷ ±SÀ•×|/¦÷Ü‚oÞý,\|¬§ÇÕë'ËøÕkGpóT)` ?_=)ì`]�õ,‹XL|i2*'¶]»¥8ÜqIMz$®˜™Ÿ`‹‘yÆ¥#²±}Äýê›§GqçØ�Þyf ÷­Õ{z\½îÚ#øÕÿz^BˆÁ`0=‹·½õ‡ñ¼ç>ÿá?þ!î½ï‘žWŒn‚e\ŒKÁ›–W¾ð&|è^Ï"Y\²sQú³ˆÅ®íå>¶q‘4hëXÍ/ñXÄb—¬Þbþ,bÑw÷C,b‘Ù?‚߸ñ×ð­ÓÏiÛoŒk›‰`ßzÕóðßýÛ,bÉ•ƒÂi’Ûë9-‡´-ȘÃͳlÏÙû°ˆ%¹=í8ȈÄ—E,ÞŽy?2ï›yp¨ãL×7;çåù}"l5¹ížyç;±çÀ·¶Ž÷à¸úª}ø›ogKZ{‰Å&ĥȲ4ÈÏGۮ݈‹R&=WÌÌO°ˆÅȼGãRùˆX‚Ë }ð²)¼bb¨eÒƒãêw~Çóð7ù±0 £ç!Æ*1f‰±K WÆU£Û`! ã’@ðKþǾçYøÍŸýî õbðfÝÛŽ²}™O;Ÿ´þ,b‰Ïþ\Ú>Á2RÔ±ÚV%ú³ˆ%˜gu.‰¶�‹XXÄ¢C_F¨~öÉqxûÙ‹X¼Oñk·7}^¾ïem¿Í½‰ –ÿŠ›¾ozÁO‡–rm@‘4”×,-µ¡„ãHÃAÉ>‘„Q9™rP8Mr{=²å¶s¸y–íã {±$·§q˜ð²ˆÅÛ1ïGæ}3uœéúfç¡<¿O(Úß¹'¼þ¶7âЕ/oå÷иúºÃCxÏ£K ¹òóÕ“ÂiNŸB°ˆÅÄ'‘&£rÒøhÛµqQŠÃ=—Ô¤G⊙m|)Â9Ÿ¥ð‰;ççÃ"õ¡¢SÖoìÇnn™öиúÚûNüöoý4ÿšÁ`0[bÌc—ÃX̸ÁBFß#*bùÙŸüöÀAo‡E,ÒsQú³ˆÅ®íå>¶q‘4hëXÍ/ñXÄb—¬Þbþ,bÑw÷C,b1k¾~ä²Þt1KTÄòšg½6nФ¡¼ndi© %GJö‰$ŒÊÉ”ƒÂi’Ûë9-‡´-ȘÃͳlÏÙû°ˆ%¹=í8ȈÄ—E,ÞŽy?2ï›yp¨ãL×7;çåù}"¹ý^÷Ã8t¤wÆU!bùŧ G äç«'…Òœ6…>"`‹‰O"MFå¤ñѶk7⢇{ .©IÄ3ó,b12ïѸÔcD÷D,AüÌ®±M³DE,¿ð³¯ƒÁ`0[b c1 ãR Y}èrB,bQÄ%;¥?‹XìÚ^îcIc¶ŽÕü€E,6qÉê-æÏ"Ýqw?ÄÁ"³æÛ(ã5—ý0ž³IË E—bKr,qP8Mr{=²å¶s¸y–íã {±$·§q˜ð²ˆÅÛ1ïGæ}3uœéúfç¡<¿O˜·ÿÑë_³iË E—bKö#ŠMˆK‘eiŸ¶]»¥8ÜqIMz$®˜™Ÿ`‹‘yÆ¥#6GÄâág¦Ç6m™¡èrB,ba0 ÆV‡Ëx™!Æ¥²0úÁ/óëŽîÃ~Ç«½±HÏEéÏ"»¶—ûØÆEÒX ­c5¿Ä`‹M\²z‹ù³ˆEwÜÝq°ˆÅ¬ùâ1½ñÊ7àò±ËÛ|ݹ‰ –sù®#øwÏÿ©¸ (’†òº‘¥¥6”pi8(Ù'’0*'S §In¯ç@¶Ò¶ c7ϲ=cdïÃ"–äö´ã #^±x;æýȼoæÁ¡Ž3]ßìœ#”ç÷ ‹öoãÚ[߀‰©ÍW¯Ÿ,ãÝ7ŒF ä±êIa‡4§I¡XÄbâ“H“Q9i|´íÚ¸(ÅáˆKjÒ#qÅÌü‹XŒÌ{4.õ±¹"Ïþ{ÆpíP¹•µ ãêu×Á»óm`0 £ Æ41¶ °˜…q©€…,Œ¾Dð \ìÿò[^±±jðfÝÛ~ßËöe>í|Òú³ˆ%z<ûsiûËHQÇj[u\”èÏ"–`žÕ¹$Ú,ba‹>}¡úUØ'ÇáíoŽˆE싱íÇ.ÿ±Ø¸—¢å¼î[_ïÄþs’E,YrP8Mr{=²å¶s¸y–íã {±$·§q˜ð²ˆÅÛ1ïGæ}3uœéúfç¡<¿OX´0ÏW¯ºñÇ7m\ýÕkGP,„ƒ².ÝÖ!ÍéQè#±˜ø$ÒdTNm»v#.Jq¸â’šôH\13?Á"#óK=Fô†ˆ…ÜH øÅ™±ÍWÿýë7ž3 ƒ±Å!Æ41¶uk\e0z,daô-<Eâ¿{ÍópãÕûÛ™ÞQ±HÏEéÏ"»¶—ûØÆEÒX ­c5¿Ä`‹M\²z‹ù³ˆEwÜÝq°ˆÅ¬ùô1?‚ï:ð]]ÿ…Ûw?ýûqdæªð1P$ åu#KKm(á8ÒpP²O$aTN¦N“Ü^Ïl9¤mAÆnže{Æ8ÈÞ‡E,ÉíiÇAF&¼,bñvÌû‘yß̃Cgº¾Ù9G(Ïïí/á˜Üv—_ýꮫo¹r7O•BAY—nëæô(ô‹XL|i2*'¶]»¥8ÜqIMz$®˜™Ÿ`‹‘yÆ¥#zGÄâáú¡ ^¿s´ëãê›ßøý¸éÆ«À`0 F?AŒmbŒãY— L%ÉÃcƒÏ‚"ímÅÀ§·•Úy¥È&ŽMˆÏ[nyúçáÜÜ<—6¼/ïf³‰=»¦ðÉ?{K}¼Y÷öƒßó²}™O;Ÿ´þ,b‰Ïþ\Ú>Á2RÔ±ÚV%ú’ùâ"i,ÐÖ±š_â°ˆÅ&.Y½Åü °ãWøå}.Á2’âR—Ë"#¿ŒE,Þ~S<¨ûÊ›qaý<ŠÅ–N9ë_žÇ×cÓø/?úÇ¡ÙXXÄ’%…Ó$·×s [i[1‡›gÙž1²÷aKr{Úq‡ /‹X¼ó~dÞ7óàPÇ™®ovÎÊóû„Eû+9Zÿ~öŸÞ„µÕ{‡Šøì·MmÌÆBòXõ„°ƒuˆÔQ,b1ñI¤É¨œ4>ÚvíF\”âpÄ%5鑸bf~‚E,Fæ=—zŒè=KðЋ¹€SõFWÆÕ믻¿÷{ïƒÁ`0ýŠ·¼åm¸çÞrW[SS“îç×¾öåoq>šÎ¶ÐþlD6j6>£iÝgt?ŠÄ¿8yFF_BÜ´¼îûžÃ"–h\²sQú³ˆÅ®íå>¶q‘4hëXÍ/ñXÄb—¬Þbþ,bÑw÷C,b1k>ó˜ÄX÷Šýßáî{c`ð¸_yë«YÄ’…Ó$·×s [i[1‡›gÙž1²÷aKr{Úq‡ /‹X¼ó~dÞ7óàPÇ™®ovÎÊóû„Eû+9<pÙÑî«?yd˜E,iì%>F›—"ËÒ ?m»v#.Jq¸â’šôH\13?Á"#óK=Fô®ˆE@D÷c;GÝýnŒ«?û³oƒÁ`0ý o¬Ës\e0ze0}„àTZÛ&GðCßq{øfÝÛÞYÉöe>í|Òú³ˆ%z<ûsiûËHQÇj[u\”èÏ"–`žÕ¹$Ú,ba‹>}¡úUØ'Çáí÷–ˆÅ³áîᯎ}‹µÅv™”™?8¾ŽãÅ×½4P>…mýi¨ÓRJ8Ž4”ìI•“)…Ó$·×s [i[1‡›gÙž1²÷aKr{Úq‡ /‹X¼ó~dÞ7óàPÇ™®ovÎÊóû„Eû+9ÂØwù‹ðØBu=ßquÛ@¯98èA°„­ƒuPÖQ ,b1ñI¤É¨œ4>ÚvíF\”âpÄ%5鑸bf~‚E,Fæ=—zŒèm‹‡˜ÂûÏ-âb£ýF^ãê¶qÜñôƒwÃØÿÉ­¥ýí3÷a>æc>æc>æÛL¾ƒ{ºcÞÅ‹Ù߯2½ž‘…Ñwðˆ¯zÑ-/n±HÏEéÏ"»¶—ûØÆEÒX ­c5¿Ä`‹M\²z‹ù³ˆEwÜÝq°ˆÅ¬ùìcŸbÌûÖ™;Ýœ<Ôøçs¯~? ‹X²ä pšäözdË!m 2æpó,Û3ÆAö>,bInO;2â0áe‹·cÞÌûfê8ÓõÍÎ9By~Ÿ°h%‡ìx{Þéîå9®~÷þ¡Öl,$U [ë ¬£XÄbâ“H“Q9i|´íÚ¸(ÅáˆKjÒ#qÅÌü‹XŒÌ{4.õ±5D,âí+§†Ýý<ÇÕW¿êü"Á`0}1Ö‰1O€geaô3XÈÂèPänó%w^ßÞc‹ô\”þ,b±k{¹m\$Ú:VóK|�±ØÄ%«·˜?‹XtÇÝý‹XÌš/ˆÅÃí;î�Bå:E”ãŽ#Ïn—Î^cÑ’e‘Äl(á8ÒpP²O$aTN¦N“Ü^Ïl9¤mAÆnže{Æ8ÈÞ‡E,ÉíiÇAF&¼,bñvÌû‘yß̃Cgº¾Ù9G(Ïïí¯äPûìÚ—ÿ¸úÒ=ÒúH&‚Ò„®¨£XÄbâ“H“Q9i|´íÚ¸(ÅáˆKjÒ#qÅÌü‹XŒÌ{4.õ±uD,^46¦Èc\}ɳÁ`0 Æ¥€è˜—ŸÊ`ôXÈÂè+x_Ô{vMáÆ«÷ƒE,Ÿ‹ÒŸE,vm/÷±‹¤±@[Çj~‰À"›¸dõóg‹î¸»â`‹Yóu&bûWŒÁŽÁíòƒG;ƒÇµslWÎ\±dÉAá4ÉíõÈ–CÚdÌáæY¶gŒƒì}XÄ’ÜžvdÄaÂË"oǼ™÷Í<8Ôq¦ë›s„òü>aÑþJ½Ïø¶#Îo\Ý;TÄÍ“%X3Û:¤ ]QG-°ˆÅÄ'‘&£rÒøhÛµqQŠÃ=—Ô¤G⊙ù ±™÷h\²1³…­'bÆ7 •±§ÜZ6!—quÏ4nºñ*0 ƒq)@Œybì` £_ÁBF_âöƒE,Ÿ‹ÒŸE,vm/÷±‹¤±@[Çj~‰À"›¸dõóg‹î¸»â`‹Yóu.bñð´Ék®Ý=XÄ’%…Ó$·×s [i[1‡›gÙž1²÷aKr{Úq‡ /‹X¼ó~dÞ7óàPÇ™®ovÎÊóû„Eû+9`ım:¿qõ™;*ÒXµ°u°.�Ê:jE,&>‰4•“ÆGۮ݈‹R&=WÌÌO°ˆÅȼGã’™-lM‹‡§ /ÜþŒëÁ`0 Æ¥„Ûoç±Ñß`! £/ Ô†Þ&pýU6n’‚wV²ýà ~ä8iýYÄ=žý¹´}‚e¤¨cµ­:.JôgK0Ïê\m±°ˆE‡¾ŒPý*ì“ãðö·–ˆEì‹YYZq„ÇÆ4ˆr\1s4|Üÿ'†:-µ¡„ãHÃAÉ>‘„Q9™rP8Mr{=²å¶s¸y–íã {±$·§q˜ð²ˆÅÛ1ïGæ}3uœéúfç¡<¿OX´¿’ÆÛòWoœ*à ¶E§ UQG-°ˆÅÄ'‘&£rÒøhÛµqQŠÃ=—Ô¤G⊙ù ±™÷h\²1³…­-b¸n¨ÒÊÎc\½á( ƒÁ¸”pãõ­±/‹q•ÁèE°…ч \yÙ.o7˜ßÞàGŽ“ÖŸE,ÑãÙŸKÛ'XFŠ:VÛªã¢D±ó¬Î%Ñ` ‹XôqèËÕ¯Â>9oë‰XÄ?ûFöGŽdÂí)(¯YZjC Ç‘†ƒ’}" £r2å pšäözdË!m 2æpó,Û3ÆAö>,bInO;2â0áe‹·cÞÌûfê8ÓõÍÎ9By~Ÿ°h%¬8Æ&òW¯/Ù˜ÛÒÛCQG-°ˆÅÄ'‘&£rÒøhÛµqQŠÃ=—Ô¤G⊙ù ±™÷h\²1³…­/b82XBnãê•Á`0 Æ¥„ÖØ—ǸÊ`ô,þÃ`l ì›™ wËöƒ7ø‘ã¤òq÷YÄ=žý¹´}‚e¤¨cµ­:.JôgK0Ïê\m±°ˆE‡¾ŒPý*ì“ãðö·¦ˆE`zpyaz|W¬¼È®4-µ¡„ãHÃAÉ>‘„Q9™rP8Mr{=²å¶s¸y–íã {±$·§q˜ð²ˆÅÛ1ïGæ}3uœéúfç¡<¿OX´¿’ÖC#ù«† [D°ƒ­}ÀGîÊ"ŸDšŒÊIã£m×nÄE)÷@\R“‰+fæ'XÄbdÞ£qÉÆÌúCÄ"°¯’ßïj÷ïÛƒÁ`0.%ðØÇèw°…Ñ—Ø>9¶‘Þ8Q4E,HŒEWnçÒö –‘¢ŽÕ¶ê¸(ÑŸE,Á<«sI´XÄÂ"}ú2Bõ«°OŽÃÛߺ"ñ1^™D^˜žŒ]c±!‰_̆Ž# %ûDFådÊAá4ÉíõÈ–CÚdÌáæY¶gŒƒì}XÄ’ÜžvdÄaÂË"oǼ™÷Í<8Ôq¦ë›s„òü>aÑþJ¤â¨ L /l0x™G°ƒ­}ÀGîÊ"ŸDšŒÊIã£m×nÄE)÷@\R“‰+fæ'XÄbdÞ£qÉÆÌúGÄ"°­”ŸeÇö)0 ƒq)Ç>F¿ƒ—bô‚뾉ÝáÁJ;4Š|²ˆEÍ+-‹E,‰ü q‘4hëXÍ/ñXÄb—¬Þbþ,bÑw÷C,b1k¾üD,Åp»t¸æøÆ¾Ã]T^7²´Ô†Ž# %ûDFådÊAá4ÉíõÈ–CÚdÌáæY¶gŒƒì}XÄ’ÜžvdÄaÂË"oǼ™÷Í<8Ôq¦ë›s„òü>aÑþJ¤æ(”sW'd±-*MhŠ:jE,&>‰4•“ÆGۮ݈‹R&=WÌÌO°ˆÅȼGã’™-ô—ˆE`XÜßæ5®‚Á`0ŒK bìËj\e0z<# £/Q($½Dg cQĕ۹´}‚e¤¨cµ­:.JôgK0Ïê\m±°ˆE‡¾ŒPý*ì“ãðö·¾ˆ¥Åoø; ŠëB––ÚPÂq¤á dŸH¨œL9(œ&¹½žÙrHÛ‚Œ9Ü<ËöŒq½‹X’ÛÓŽƒŒ8LxYÄâí˜÷#󾙇:N“zÌ£‡òü>aÑþJtÄQÈs\ÕQì`kð‘»²ˆÅÄ'‘&£rÒøhÛµqQŠÃ=—Ô¤G⊙ù ±™÷h\²1³…þ±òV[σ ƒÁ¸„Àc£ßÁBF‚$ûÁüÈqRù¸û,b‰Ïþ\Ú>Á2RÔ±ÚV%ú³ˆ%˜gu.‰¶�‹XXÄ¢C_F¨~öÉqxûý!b Úä JHKm(Jö‰$ŒÊÉ”ƒÂi’Ûë9-‡´-ȘÃͳlÏÙû°ˆ%¹=í8ȈÄ—E,ÞŽy?2ï›yp¨ãL×7;çåù}¢ý•Èœ£+°-4MÚóc‹‰O"MFå¤ñѶk7⢇{ .©IÄ3ó,b12ïѸdcf ý)ba0 ƒÁ`0lÀBFƒ"Ÿ,bQóJËbK"B\$Ú:VóK|�±ØÄ%«·˜?‹XtÇÝý‹XÌš¯{"– m „´Ô†òà dŸH¨œL9(œ&¹½žÙrHÛ‚Œ9Ü<ËöŒq½‹X’ÛÓŽƒŒ8LxYÄâí˜÷#󾙇:Ît}³sŽPžß',Ú_ÉÌ9ºÛBÓ©=?±˜ø$ÒdTNm»v#.Jq¸â’šôH\13?Á"#óK6f¶À"ƒÁ`0 C iEf£ç¡\ó"Ÿ,bQóJËbK"B\$Ú:VóK|�±ØÄ%«·˜?‹XtÇÝý‹XÌšoóE,iÖG•ùPBZjCypXÆF†ådÊAá4ÉíõÈ–CÚdÌáæY¶gŒƒì}XÄ’ÜžvdÄaÂË"oǼ™÷Í<8Ôq¦ë›s„òü>aÑþJdβÍh\UaJ {hÏE,&>‰4•“ÆGۮ݈‹R&=WÌÌO°ˆÅȼGã’™-\"ÙwW^ã*ƒÁ`0— xŒdôxFF‚"Ÿ,bQóJËbK"B\$Ú:VóK|�±ØÄ%«·˜?‹XtÇÝý‹XÌšoóE,y òXÄ>ÐQrHÛ‚Œ9Ü<ËöŒq½‹X’ÛÓŽƒŒ8LxYÄâí˜÷#󾙇:Ît}³sŽPžß',Ú_ÉÌ9ºÛBÓ©=?±˜ø$ÒdTNm»v#.Jq¸â’šôH\13?Á"#óK6f¶piŠX ƒÁ`0 XÈÂè_oð)œ{àÚgKôxöçÒö –‘¢ŽÕ¶ê¸(ÑŸE,Á<«sI´XÄÂ"}ú2Bõ«°OŽÃÛï_Kp?/A‹XÂ:Š£Si[1‡›gÙž1²÷aKr{Úq‡ /‹X¼ó~dÞ7óàPÇ™®ovÎÊóû„Eû+9;G.°-$MPŠókE,&>‰4•“ÆGۮ݈‹R&=WÌÌO°ˆÅȼGã’™-°ˆ…Á`0 ƒÁˆ‚…,ŒþDðŸÂù±¾¡}±Dg.mŸ`)êXm«Ž‹ýYÄ̳:—D[€E,,bÑÇ¡/#T¿ ûä8¼}±t2ÈcKø@GqtÊ!m 2æpó,Û3ÆAö>,bInO;2â0áe‹·cÞÌûfê8ÓõÍÎ9By~Ÿ°h%rçȶ…¤ Jq~-°ˆÅÄ'‘&£rÒøhÛµqQŠÃ=—Ô¤G⊙ù ±™÷h\²1³±0 ƒÁ`02°…ÑÇ` cQĕ۹´}‚e¤¨cµ­:.JôgK0Ïê\m±°ˆE‡¾ŒPý*ì“ãðöYÄÒ È E,áÅÑ)‡´-ȘÃͳlÏÙû°ˆ%¹=í8ȈÄ—E,ÞŽy?2ï›yp¨ãL×7;çåù}¢ý•È#Ø’&(ÅùµÀ"ŸDšŒÊIã£m×nÄE)÷@\R“‰+fæ'XÄbdÞ£qÉÆÌXÄÂ`0 ƒÁ`¨ÀBFŸ‚E,HŒEWnçÒö –‘¢ŽÕ¶ê¸(ÑŸE,Á<«sI´XÄÂ"}ú2Bõ«°OŽÃÛ¿4D,Áý¼-‹E,áÅÑ)‡´-ȘÃͳlÏÙû°ˆ%¹=í8ȈÄ—E,ÞŽy?2ï›yp¨ãL×7;çåù}¢ý•È™Cư H†âüZ`‹‰O"MFå¤ñѶk7⢇{ .©IÄ3ó,b12ïѸdcf ,bÉOž(¡têÏ|ÌÇ|ÌÇ|Ì׋| ÆV Yý ï“$ocŸE,ÑãÙŸKÛ'XFŠ:VÛªã¢D±ó¬Î%Ñ` ‹XôqèËÕ¯Â>9oŸE,Y#Z‹XÂ:Š£Si[1‡›gÙž1²÷aKr{Úq‡ /‹X¼ó~dÞ7óàPÇ™®ovÎÊóû„Eû+93‡Œa& ÅùµÀ"ŸDšŒÊIã£m×nÄE)÷@\R“‰+fæ'XÄbdÞ£qÉÆÌXÄÂ`0 ƒÁ`$…,Œ-ÒÝ­’äohŸE,ÑãÙŸKÛ'XFŠ:VÛªã¢D±ó¬Î%Ñ` ‹XôqèËÕ¯Â>9oŸE,b¬, ‚|”Çb¶ Ç‘†ƒ’}" £r2å pšäözdË!m 2æpó,Û3ÆAö>,bInO;2â0áe‹·cÞÌûfê8ÓõÍÎ9By~Ÿ°h%ræ ©›—ñ¸ªw„=ç׋XL|i2*'¶]»¥8ÜqIMz$®˜™Ÿ`‹‘yÆ%3[`KÌ<£qõоÒÀûå{Zæc>æc>æc¾^âK3®2½ ²0ú$yàÚgKôxöçÒö –‘¢ŽÕ¶ê¸(ÑŸE,Á<«sI´XÄÂ"}ú2Bõ«°OŽÃÛ¿ôD,dúÀ;%(š¦„ãHÃAÉ>‘„Q9™rP8Mr{=²å¶s¸y–íã {±$·§q˜ð²ˆÅÛ1ïGæ}3uœéúfç¡<¿OX´¿’9sÔ¦ëH€âüZ`‹‰O"MFå¤ñѶk7⢇{ .©IÄ3ó,b12ïѸdcf ,ba0 ƒÁ`0LÁBF‚$|Cû,b‰Ïþ\Ú>Á2RÔ±ÚV%ú³ˆ%˜gu.‰¶�‹XXÄ¢C_F¨~öÉqxû,bÉMSÂq¤á dŸH¨œL9(œ&¹½žÙrHÛ‚Œ9Ü<ËöŒq½‹X’ÛÓŽƒŒ8LxYÄâí˜÷#󾙇:Ît}³sŽPžß',Ú_Éœ9HjÓu¤ @q~-°ˆÅÄ'‘&£rÒøhÛµqQŠÃ=—Ô¤G⊙ù ±™÷h\²1³±0 ƒÁ`06`! £/{àÚgKôxöçÒö –‘¢ŽÕ¶ê¸(ÑŸE,Á<«sI´XÄÂ"}ú2Bõ«°OŽÃÛgKÞ`Kø@GqtÊ!m 2æpó,Û3ÆAö>,bInO;2â0áe‹·cÞÌûfê8ÓõÍÎ9By~Ÿ°h%ræ ©Mב&�ÅùµÀ"ŸDšŒÊIã£m×nÄE)÷@\R“‰+fæ'XÄbdÞ£qÉÆÌXÄÂ`0 ƒÁ`Ø‚…,Œþ©öYÄ=žý¹´}‚e¤¨cµ­:.JôgK0Ïê\m±°ˆE‡¾ŒPý*ì“ãðö/mK0?/°ˆ%| £8:å¶s¸y–íã {±$·§q˜ð²ˆÅÛ1ïGæ}3uœéúfç¡<¿OX´¿’9sM¦@ÅùµÀ"ŸDšŒÊIã£m×nÄE)÷@\R“‰+fæ'XÄbdÞ£qÉÆÌXÄÂ`0 ƒÁ`¤ Yýà‹Xbdz?ñ‹XÔÇ‘x.,b±ˆKVo1±èŽ»û!±˜5‹XBièÓR›%ûDFådÊAá4ÉíõÈ–CÚdÌáæY¶gŒƒì}XÄ’ÜžvdÄaÂË"oǼ™÷Í<8Ôq¦ë›s„òü>aÑþJäÌA6]@šç׋XL|i2*'¶]»¥8¼ qQ²‰u…>¦ö$M°ˆÅȼGã’™-°ˆ…Á`0 ƒÁH ²0úÁ)±ÄŽg.mŸ`)êXm«Ž‹ýYÄ̳:—D[€E,,bÑÇ¡/#T¿ ûä8¼}±ä ±„tG§Ò¶ c7ϲ=cdïÃ"–äö´ã #^±x;æýȼoæÁ¡Ž3]ßìœ#”ç÷ ‹öWr gÒÛÈ ÈiÊQœ_ ,b1ñI¤É¨œ4>ÚvíF\”âpâ22PbFºr V…˜‘³ÂÙ>}ïõHÛwZF*²ünûX#e¶rÛ¤ïbƒÑ[ à=Q{Ÿ(›Î›5ƒÁ`0ú,daô'‚±ˆ%v<ûsiûËHQÇj[u\”èÏ"–`žÕ¹$Ú,ba‹>}¡úUØ'Çáí³ˆE¶Ÿ'(!-µ¡èq²ã%Ãr2å pšäözdËA22æpóöåF2l}XÄ’ÜžvdÄaÂË"oǼ™÷Í<8Ôq¦ë›s„òü>aÑþJäÌAzYy M9ŠókE,&>‰4•“ÆGۮ݈‹RÎ1.›>I‰6ê³ öZбX8§£ï½.ø°ˆvÐŽzŸÜìÓú0Œ\Ð/B•0¦P0_ ƒÑÓ`! £¿Á"–ØñìÏ¥í,#E«mÕqQ¢?‹X‚yVç’h °ˆ…E,ú8ôe„êWaŸ‡·Ï"Ù~ž „´Ô†¢ÇÉŽ— ËÉ”ƒÂi’Ûë9-ÉlȘÃÍ#Ø—ɰõaKr{Úq‡ /‹X¼ó~dÞ7óàPÇ™®ovÎÊóû„Eû+93ém™#MÚØXÄbâ“H“Q9i|´íÚ¸(Åáâ"Kû´>É$ ¦mû¤×e$M°ˆÅȼGã’™-°ˆ%3ƒ‘ .ÅÙO‚çÌ¢ƒÁغ`! £Á"–ØñìÏ¥í,#E«mÕqQ¢?‹X‚yVç’h °ˆ…E,ú8ôe„êWaŸ‡·Ï"–è~0/PBZjCÑãdÇK†ådÊAá4ÉíõÈ–ƒd6dÌáæìËdØú°ˆ%¹=í8ȈÄ—E,ÞŽy?2ï›yp¨ãL×7;çåù}¢ý•È™ƒô6 ŽÌ‘¦�ml,b1ñI¤É¨œ4>ÚvíF\”âp†q‘¥½Ö¤Ëõåíôf‹XŒÌ{4.ً٘X2óa0©ÀK÷ÄÁ¢ƒÁغ`! £?Á"–ØñìÏ¥í,#E«mÕqQ¢?‹X‚yVç’h °ˆ…E,ú8ôe„êWaŸ‡·Ï"–è~0/PBZjCÑãdÇK†ådÊAá4ÉíõÈ–ƒd6dÌáæìËdØú°ˆEßžd[n°åC†"p=¤ç sƒkJËA6‰æýH×–ùs¨ãL×7;çå®éÎ93ém=ml,b1ñI¤É¨œ4>ÚvíF\”âp7ÚÅ Œ ‰ûµž2.«w[¤Ï.ÈÌü‹XŒÌ{4.ً٘XL|zr|e0¶8X´b¯®XÐÂ`0[,daô7(ò©Úg‹å¹´}‚e¤¨cµ­:.JôgK0Ïê\m±°ˆE‡¾ŒPý*ì“ãðöYÄÝæudÇ"–Œ8HfCÆnÁ¾ÜH†­‹XâyÍHEÚqZ>Æõ,hyYÄâí˜÷#󾙇:Ît}³sŽPžß',Ú_Éœ9Ho£àè hcc‹‰O"MFå¤ñѶk7⢇»q½$ÅEòï4kП ±w]eP{+Ä|XÄbdÞ£qÉÆÌXÄbâÓ“ã+ƒ±±•¬ÊìtƘ¬(,ha0Œ­²0úùTí³ˆÅò\Ú>Á2RÔ±ÚV%ú³ˆ%˜gu.‰¶�‹XXÄ¢C_F¨~öÉqxû,b‰î«üò䱈%#’Ù1‡›G°/7’aëÃ"–VEÛŠÔ>úk„Œ8"–þ^!ø’p=˜ÄÆ"(úfê8ÓõÍÎ9By~Ÿ°h%ræ ½a›El-°ˆÅÄ'‘&£rÒøhÛµqQŠÃÆ•öZIÃrª¯`¹¦¯»(øIž‹XŒÌ{4.ً٘XL|zb<e0¶8ò°èx{m¶—h<Æ'üYÌÂ`0½ ²0úùTí³ˆÅò\Ú>Á2RÔ±ÚV%ú³ˆ%˜gu.‰¶�‹XXÄ¢C_F¨~öÉqxû,b‰î«üò䱈%#’Ù1‡›G°/7’aës)‹X(ÖJ’ûÈÒá<2âÐñúqµ3 ’ï¹$?p]&r\SZ‹zTs˜÷#󾙇:Ît}³sŽPžß',Ú_Éœ9HocǦ@[ ,b1ñI¤É¨œ4>ÚvíF\”âpq»¿ë)ÑD‘=¼aPH[Ç‘ïÍ‚IôÏÝPÊ’s»S Ÿ¸s~>,blû–µ129žOŒ-Ь…$ýº Qð¼l…)<; ƒÁ`ô.XÈÂè_PÂ>‹X,Ï¥í,#E«mÕqQ¢?‹X‚yVç’h °ˆ…E,ú8ôe„êWaŸ‡·Ï"–辪Ýò䱈%#’Ù1‡›G°/7’aës)ŠXŒ^âSÂqeq˜ð†Ç„¨ Šï™$ŽHtf×”–âÕæýȼoæÁ¡Ž3]ßìœ#”ç÷ ‹öWr gÒÛƱ)PÄÖ‹XL|i2*'¶]»¥8ÜA\Æ®ž=%š„2È"8j9hQˆö1Y¶ó Š[ÆDx¬-¨³‡…¥ð‰;ççÃ"ØÁ¶oY#“óè‰ñ”ÁØ‚Èz)Ÿ¼aZNÒÒBYˆIÒŠZúUäÃ`0[,daô'(aŸE,–çÒö –‘¢ŽÕ¶ê¸(ÑŸE,Á<«sI´XÄÂ"}ú2Bõ«°OŽÃÛgKtߤÝòF´,±dÄA22æpóöåF2l}.‹jÖ ¹=Ëuâ…‚y¹Á´æzˆžj¶±@Ñ7óàPÇ™®ovÎÊóû„Eû+93ém ãØ(bkE,&>‰4•“ÆGۮ݈‹RN—•!QÌóª¯èß5h¡øïË|÷‚„[r$çv§>qçü|XÄ;¤¹ü{uŒ`01d±\N²Ï¼aZŽ©@Åv¶^jˆÁ`0z ,daô7H²Ï"ËsiûËÐÚ,ba‹ú8ôqÉê-æÏ"Ýqw?ÄÁ"³æc‹-¢e±ˆ%#’Ù1‡›G°/7’aëÓ¯"ÿ¡…O(Mšã¤ë#$çÐùl(ê<’ÔQhLDüºŒ§’û¦qFØ_›ÞŽy?2ï›yp¨ãL×7;çåùýÊ¢ý•È™#¡ÿƱ)PÄÖ‹XL|i2*'¶]»¥8œ2.7j&Û4S\„”‘øªJò½WЈS<-jkX.$R‚Î6°ð¡>qçü|XÄ;hǽOnöŸžOŒ-†NÄ"i'[uÛóµ´ðÌ, ƒÑ;`! £A’}±XžKÛ'X†Ö` ‹XÔÇ¡KVo1±èŽ»û!±˜5_Ÿ‰X‚9!Z‹X2â ™ s¸yûr#¶>ý&biFœ­Ê ¦£Õ¢R„óMçm^½QC³ÑpsŠÅŠ¥ Š…¢Â§Å£ ¶WäÉûw0·€xÍj8 ®)-Ø$r˜÷#󾙇桔åvÈÊóû„Eû+93ém ãPåå El-°ˆÅÄ'‘&£rÒøhÛµqQŠÃ)ã2u LB¦ ’÷gÝøÍ÷gL¿²n×wÒ{,ÀÄ‹I:‹™_V&?èö—'‚,Ú„RøÄóóa ì #ô>¹ÙK|º>v2}€4â‰nùèù I~¶“¢˜.'d:ã ÏÌÂ`0½²0ú$Ùg‹å¹´}‚ehm±°ˆE}ú¸dõóg‹î¸»â`‹YóõŸˆ%h“¢ü,bɈƒd6dÌáæìËdØúô‹ˆ… ¯ ãömZ¶]`¯Ùl Z_ 6šuw«”‡\Q‹ oT€ÒzôÂ9GôøÆOæ (X÷Mã:Œ°¿6½ó¶0ï›yp¨ãL×7;çåù}‚2à@Τ·1ŒC•—+±µÀ"ŸDšŒÊIã£m×nÄE)§ˆËô…–ô~9T´Ý÷bÃ!l‚É©(*ðT”#Z@¼¨*¶?KNF©PˆÙ1’<èÓ¾Çh§•ïÁ"ãœÑë2‹6¡>qçü|XÄ;hǽOnöŸ®<y¢„NЩ?ó1_x >1ŠÇ—•p%ëú;v2ÿöÐ Q’D*‚/K! ÷æÛL>c+ƒ…,Œþ†ÿ`„E,vçÒö –¡µXÄÂ"õqèã’Õ[ÌŸE,ºãî~ˆƒE,fÍÇ"[DùYÄ’ÉlȘÃÍ#Ø—ɰõé‹ô%™a±<ï…©}ô„Z³†Å¥ ›lâÈ5Llo=¼˜ŸmàÑûk˜Ÿ[ÄØØ”‹-¯òzŠ:’D- ×¥@3ômTHì›V}Ä¢ÕæýȼoæÁ¡Ž3]ßìœ#”ç÷ Ê€9sÞÆ0U^®PÄÖ‹XL|i2*'¶]»¥8œ"®,D,ºïšà÷ª®Ô©õ­Pû;O|VËe4œ1³^r¶Ê€³UP¬UQ®7PnÔPqÆÝJuÝm‰bA¼ÔrÆâvb\+[–r!<Æd±yK <{š“{¬ 8±@–ö•™E›P Ÿ¸s~>,b´c„Þ'7{‰O.cƒÑÇÈk ^§ÝrB&K ñ¬, ƒ±ù`! £á?Å`‹Ý¹´}‚ehm±l  5 Éq”"”qix•qÅ}ô"Šq¯±P’Ÿ¿Ç"“˜´Çc—tÿ‰X¢`KF$³!c7`_n$ÃÖg«‹X”/É ãpóHÂAj}ßv^œÕ×±´|Ó{›¸á™C¡—]Ó{Jع»„»¿°†³'.`tt*åÁ¯;b&\±F®³@&"–(oÓÿ¶,]S²<’°¿6½ó~dÞ7óàPÇ™®ovÎÊóûeÀœ9Hoc‡*/W(bkE,&>‰4•“ÆGۮ݈‹RN—É;3å³Ä¿g<Šø×šänÞl(Õa­PÂÜŽÝXÜ>ƒõ‰í¨NîDsÛÐð(ŠÅ¢û*ú"Š<Lu¥‹Pž¿€Ag»xgO`´¶ŠJ³ˆR±ÕZb––Š+l)øqbçRp£*(ú­ˆ¿P€¶~C¼Ñ† >qçü|XÄ;hǽOnöŸ\ÆKÚ×@x¿|OëÏ|Ì—Ñ™Xt|2aŠÈ[^^uî ‡Ý1ΔO˜5MÔj5÷S,k«ÃñS-¾ý{™d‚|6P J¢|ž™X–·ä â•JÅý4EVˆY¸0ßfò1ý�²0úþÛ±ØKÛ'X†Ö`KoŠXZ댓EYò©XÅ•\Vv3±ìü„‡‹XL//±À(&íqŠæo®ˆ%Òs‹X2â ™ s¸yûr#¶>[YÄÒÔ]«&q©mHáƒàb<2ñ"­‰•µ%”+„ëŸ1$]‚@ä]ÿŒAüË߯cUØŽVœÌ𯾛²JR–I{çF¿.µ®«Þ Šï¶ä8 l9Ìû‘yß̃Cgº¾Ù9G(Ïïæí¯æ@Τ·1ŒÃÔ&S(bkE,&>‰4•“ÆGۮ݈‹RNW'"R;뎳¬4ÛŸëÎçìä.Ìí½«{/C}÷~”œU%w*]‹·y/ ¼OòÇ<±¤ŸóoÛvçó TýsN;[áÜi Ÿx£'ÇŽSOb¸ÐÀ ó"Ìas-bó¾ïÛì±s’ ZÄû¤÷a­q4’aJáwÎχE,°ƒvŒÐûäf/ñÉeŒ`0ú6‚•íÊÊš+DñÄ,zŽýõõ*ªµšqyÁ1s3!+_>ÓJë³)þ«7Q«×1P©`pp@éÃ`0ŒÞ Yý ±XžKÛ'X†Ö`KïˆXˆ¨ƒ¶ßz"]½Q`'ö«ð<Î%XnÊëX^,‹XŒüXÄ¢äÎ ,bɈƒd6dÌáæìËdØú\’"ÙÌ+1›`9ÐÚ‡óZ{ëµ5w,ßs¨€b`)䋳«îç¶í­“¥R{qüçEžã300²ÁDfå46düë² ¥¨ú¦÷‹týùGÒd`“ÈaÞÌûfê8ÓõÍÎ9By~Ÿ0¸þ93ém ãPÚÈ 3‚;;ƒ²±˜ø$ÒdTNm»v#.Jq8E\Y‹X(`â XÄ ,΋ºÕ:anp_…Å«níØåþÊz \ƈ³ KÙù±±ˆO¨EˆX|1K{k4¨;/½££¨ï?„Ùú³pniC?€ñ‡ïÁÎs'0ìŒÇB,SnÏÒ—²„ϯ xÖRHÐH>&§öÎùù°ˆvPŒ_&>¹ÙK|r# †R8"ƪã'ΠRÀÏÿÂðÎ_ÿ7¸0;‡}{gÜ™G6ü㾋‹Ë˜[XijøÚÙ]8¾4†åZqÇ7-²æ»{cWÜ…Ž–kØ?±ˆÛfÎá²m‹˜œÇøø¨t¹ ¤%„x‰!ƒÁØ<°…ÑŸ`‹å¹´}‚ehm±l¾ˆ…š$ñ¿´E,ñëxãÑhAÚ,bÑÇ¡/Ã?w}rÞ>‹X¢û‰í¦©ÿ¼À"–Œ8HfCÆnÁ¾ÜH†­Ï%%b!2o_’÷[YzÇlùzmÔ¨cfÿƃÇÏ|âqÜýµãÎøÜpë<çù—¹ù»÷•ðäƒuw)¢Ê0|:BA_nä3$jÑ]—Á™hT¢É5ZnHæƒx;hm9Ìû‘yß̃Cgº¾Ù9G(Ïï”ræ ½aJ™aÆÁ"ŸDšŒÊIã£m×nÄE)§ˆ+I˜@ŠÎ§ûR|Š[Ý5çEÝZ£‰¥jçgaöºÛQ;p90T©¸"± ñŠ·y3²D…,Á­…¶ ˆÅÛ„˜ÅÛjÃèMmÃ…ënÃùóg0q×ç±ý‘û0^$Œ”KtÊñgh\к ÔVÌB0yµè×[xÇ]ða ì ¿L|r³—øä2F0}“™Mt6gÎ\pgUùßý{|ñ wãÝ¿ù!¼ñM/ùs³Ø½{§ÒïâÅœ›Ç§ŽïÇ×ÏÍ Ÿ!ž·-ÕðÀì<èl7OŸÁsGÝß·MM¤³0 csÀBF#xãGñü<±„ÊÐÚ,bÙ\KxötÐöý-b‰öIÿ×pþy³ˆE‡¾ ®± q??K¤K籤ä~ç’1‡›G°/7’aësɈX(Ú"ŸÊïôXšä--þ¥ö‹³ò�ar{ëölîâ*îùú)Œ»ßw÷Üu×ß2ƒ©mØÜVBe¨†fµá.ICå„ÊU[¢ß5þ/ÃcÑÅ}üs)„ÇQÝù«fg!‰±ýµŽ+5G‡ýÊœCgº¾Ù9G(Ïï”ræ ½aJ™aWÀ"ŸDšŒÊIã#§a‹êû%pÈ[Å ,‹µº³.컳7ÜÚsÀ° ;›ø¬(„,bóD)A‘Š·DPÜâÍâ288èî»3²8cs­Vk YœOo« ay×,<ã¹ÿúç±íÁ»1NuŒ”0,Ä3íÛ¿Bä½±PVOÒ÷fï°¤×j²ñÔ]ða ì ¿L|r³—øä2F0}ŽNE,ó ‹XY]Ç×ï:üûO¹yÿôÑÏᦛ¯À³žu ææ—œœÉ˜ßÜü¢»] "–(Dm~Í9g1Ö¾°|ʵfb|L)fQò°Ð…Á`06,daô/‚7~ÏßÈcK¨ ­-À"–ͱø3°$‹QYí¼vÉ ®B]ÇͦÊ?Þ¿ Ðñ+ü4çâ>8¥‚ž×°Ž;¹ŽåŲˆÅÈE,FåäjÇBÒ#Ê4Éc£\9(œ&¹½žÙr̆Œ9Ü<‚}¹‘ [ŸKBÄ¢AóBŸñjÙH“¦Ü`Ë;ÿÔëU7½cwøEÖö©½˜šÜåî_œ?ãç ›é™Î<ç…ZÕy‰7$)Ã$[ìa]8F/ºÐl-QŽcÁ¨íš ùÌ,ºz4M³ˆ%5G(Ïï”ræ ½aJÒû䱘ø$ÒdTN9 ‹XL¾_jŽÓR­yg››Ø…3Ï|>š{/sÅ%bñé.'³x³©¡Ip™ èÌ+ADgjñfo Îæ22ÒZÂ/$d©VÝm݉eåy/ÃÂMw`Ûç?ŽmeçåX¥Œàì,¡ï“V"*h‰‰Y$ýQõêŒ>Fè‚‹X`Åøeâ“›½Ä'—1‚Á`(…"¿V«cnn g—ñžßþß¡ãðû…£G÷¢ìŒAµæˆ;>z\Õj «+k8±8Œ».1K_=;ƒ«·Í9K¬aÈý»¢ƒÁ`ô>XÈÂèOoü(ž¿‘Ç"–PZ[€E,[SÄBª¸’®cE\¤¡hâ’Õ[Ì_—¦Þ|5<E| ?—ØôΦçb‹X`°Ï"–è~b»Qr9Á¼<À"–”$³!c7`_n$ÃÖ‡E,í™W¢Ñj1´â¤G­±ŽF³Ž{6fV3¯\wó<òÀ"ĸuÃÍ{¼Aÿ¸°=ñDEÇ·\ •‘¸ŒO(ÖBüxäê$@-j¡@Í-k™™…¼6i±¤æåù}‚2à@Τ·1ŒCiCzŸüÀ"ŸDšŒÊIã#§a‹É÷ËJƒpÑyѶPÄÙ›ž¥ëoÇÐð°/b ŠYÄ&Ä&b¦!( .±D…,­ØZŸÞ=dTÈ܂ˉmttÔ-òxš5çsáÛ¿‹O>ŒŸýg¬ÌŸÇÔ@ã•’+b‰Ž£^](Å,Šú•óDw,бÀŠñËÄ'7{‰O.cƒq €(]Çðü.^œG­ZǹÙ¾ï^åÎÎÙ¨;÷’õ*šÎöÔ“ç°szæ0=½±ÄÐòʪûù•³ÓÒ®¹´FX­‰#ýÒq ®06ÿNÿÚ¹8²ë VV×\!‹íC<+ ƒÁ`t,daô-b•)òÉ"–pZ[€E,›#bi—J:—@>%Å•t'Ä>}\²z‹ù`ÇÀ¹nœ€êå˜ê\âË A.¾R_ÇòS,h»û!Ž‚„ ,b1‰I{œ¢ù½*b) /AEÖ>sP8Mr{=²å ™ s¸yûr#¶>}/b!’¤µí)›í$–&ùµIÇkºÓm›Ø¹{ ä{Ý­ƒ8teÉÝŸß¶MïvÒ¥uÔßV …P™ˆÄ"]Ö'rqzÃW8þøg!p"„$y¨'¿®Âã¤ýµ¹Q¦µO0Ýa¿2çPÇ™®ovÎÊ \s gÒÛÆ¡´!½O~PŒÝ¶A¤ :á6ñÉÜ^á“H“Q9i|ä4ÝAë2:±§>æDÃ’Ž¥]JÈÙ™«Õ1»^ÇÜÞËqúY/ÅÀÔ6Œ ¹"‘¡ö§·‰—Gž€Å[þÇûôfe ŠXÄgIÌ´R,¹K K%+z¶-¿àl,A‹÷)–+ ~ãY__÷gˆY;r Nï½ KŸÿ$Ö¿ñE¬Õ›Ø1èø ‘‘Ú«‰˜¥ èÞy¢ß{Vè‚‹X`Åøeâ“›½Ä'—1‚Á`¸ÎêÙÎ[ZZq¶UlŸ¾ ¯¸þ*¼â•ÎÚ¨¡º¶€êêjk‹îþÒÊÖÖÖ°²²âxµ~ðP]¯º<ÇÇbüž\ÀJsýˆ‘â®Ø;Ê{jaÔýŽZ_¯úy,Na0ŒÞ Y}‰ØCåèSx±„ËÐÚ,b‰¼l1½^¤\0>[‹q\I×qB\áãÐÇ%‹/æ_°äWÛ6B|¦õ¹(ggaKèúPs°ˆ‰û[_Ä"éÒ?žèÓ1…Ó$·×s [’Ù1‡›G°/7’a볕E,F A[Sßvj!@ åýõ†óPÑyÉ6µ“œaED°x(— ضƒ0®é.MT. „Þ|Ec‹ {(òâÌû7Øì™üºÞÈoÐÌÎßNncÞ7Íû‘yß̃Cgº¾Ù9G(ÏïW”ræ ½aJÒû䱘ø$ÒdTN9MŠXtniD,gÖjXlNßðl,Þü, »›°x›ŒQ‰XÖGˆVħ'`ñD,bcûØèÆÇ'Ü%Ä6<2ꌙ%¨ „.+««X]^r?°¸¸à T‚³±Å,B¸">½b¼%ŽDžØÖî|1N¸ õÿ÷wX_YÆ®á ø½ó.„ê" fñÿFÑ‹Y‚u¸™×½Ö¼GãR_Ã,b1ñÉeŒ`0.$ÍÆ¢±ˆ%….ÌÎc`h Ó3Wjyœ¯³r¡æÎÞR­nsƧ²3ÖµxVêá¥tÎ;œÖ1<ÖŸB– ók˜vnÛ³,×[?i6ìÛƒÁ`0›²0úÚ·,b •¡µXÄÒû"–äóFè:&Ù‹e\¤9E\q½ˆ…,ø¡\(z.ÞL-® Å Oúmßéu,/–E,F~,b1lÄǃti’ÇA¹rP8Mr{=²å ™ s¸yûr#¶>[]Ä¢|!$ǽO±Ì;Ó‰»–mø„Ó/S»Û»&ÄîÚú2jõuLï„-ví)áìÉUço†¦ó2mTR.Ü7a±:’\Sñ_‰Gà.» ~É.~Y^öTöŠÙY¢Æö׿¿µO0Ýa¿2çPÇ™®ovÎÊóûeÀœ9Hoc‡ÒÆâºì l MdÂ5l⓹½Â'‘&£rÒøÈiXÄÒ²'‹j³‰S«5,ã©ç¼Øw£m‹'dŸB "„+BX²xq¯·cÇNw›˜˜pÅ&6™±ÑQwÛ8Âââ¢óÒð<Ο=‡ÕÕU_Ä"6Q¶÷)â‚™¨˜eõÊkprû.ìøç¿Fíô1L `¼\ôë &f‰ LI-fizþ›xÝkÍ{4.õ5Ì"Ÿ\ƃáB'šÇ.\˜sÆœ\vƒ{O–„£K8¹Ppýffvlp!ì;¿¸Œ~=8¿°²DëÀÏçYY £gÁBF#úf‚E,á2´¶�‹Xz[Ä¢¿»Ív†êADš¶·¨ã¬gb‰Æ] ý¹xçß´èËro\ܸXĬS5‹X¸Ï"#ŸŽ9(œ&¹½žÙrH¿sɘÃÍ#Ø—ɰõ¹Tgb¡6c­¶îŒÃ€\€¢ê—n:*ãh4ZSOïI~ Å®}Î˺¯ÂÕe£!Þx^¹ò™XÂVQÔ^¶¡à¼À« úËBÙ[¸P„=Íû¦y?2ï›yp¨ãL×7;çåùýŠ2à@Τ·1ŒCiC Ç» ÛBÓ™p ›ødn¯ðI¤É¨œ4>ršKOÄ"·W·¬9cÉÉ•*–Æ·ã©ç7Ê;vµfO YÄ&Ʊ<‚XF(*b™˜˜t^ÎÍ`ûö®%KˆûF!ŠÛáË.ÇüüNŸ>óçÏùå{Bo3³Œ…foYqâºðÊBãŸÿÍÇ@s°„ÉJÙ¯B¤¾bË i†Q÷,Ñ…k’E,°ƒbü2ñÉÍ^â“ËÁ`0´ðîã—±²ºŽÝ{®Áàи‘o¥ØtÆ›9¬®msýUß͗¬#z‘Pò h*N½0 F÷ÀBFBúvE,¡2´¶�‹X¶¶ˆÅÿCäRcþ qéÊ Æ=žýrB…˜m3p¼ã ¼ kO¥´HÊr*fxËO‘E,F~,b1lC±„Ò$·×s [éw.s¸yûr#¶>ý b!Y='ÄAm¿å•94h7<c7®½ivÎŒb`°·o—ž÷<tÕõ:Μ^Æ×¿z_ùÂiçEÞ†G&üþ‘ÎÎ|:¿¼ìÓ,bIÍÊóûeÀœ9Hoc‡ÒÆâºÌj±—Ò™p ›ødn¯ðI¤É¨œ4>ršþ±$šÞ>˜µÚ"–æwîʼno{5†¦¶ù"ïS,Ùã‰W¼OO@26>Ca|Üìe^˜œœr·Ã‡/ÇñOáÔ©S¡%Ä&D7Þì,BÄ"Ä5Þ6÷âW£þ™÷~Å]NiÛ@@ÌúŠ‹Y‚}ï¿FëÂ5É"ØA1~™øäf/ñé™1‚ÁØÂHšqE•·¾^ÅÊÊšsßµS;À£¥EÔWJXqÆT1«™[UøÞÛFñï¾mÕþg¬T ¿óñy|ðÓsV~Q V £7ÀBFÃÿ[E,¡2´¶�‹XzWÄB mï‰5BeøÅÍö¬#­yG ’¸H7¤q彜Øoº.Ívì^ä‘k;°_P\Ç¢Ž”³³øB¡e†:¹Žå§È"#?±¶¡þ¼³éÒ$/›rå pšäözdËA22æpóöåF2l}ú~&÷Ÿx;ˆO±4Ïâò ~ðµ7cמ10‚ž‡&Ýíé·ïÅþë]XZ:ÑÑþôÖªv(DÆÛ³ó‘¦YÄ’š#”ç÷ Ê€9sÞÆ0¥ %ï6l MdÂ5l⓹½Â'‘&£rÒøÈiúWÄ¢s•ÝóIE¥VêMœ\­áâžËpú¹¯ÄÐø„3ŽŒºâOÄ"f3 ÎÂâ}Ž ài×\‹Ñ‘Qt‚šÃW@ˆYW.?|ì?ˆG}çÏŸ• Z„'f)¸Kó°|ç·£9à¼DüÚ¿º\®˜…ãdQ1‹§~ïY¡ >,b ú–Ê'7{‰OÏŒ Æ%Š¥åg<)bbì.Ìú(P=ãæ¯¯:»+­g±M4@õº;{fqù +§PvÆ"jNah`J;߆ÕÕ5­å'ïœè‹ÀÈ@¯wÎ郟>!=¨¤•…Á`0Ý Yý ÿæˆE,¡2´¶�‹X6GÄbr.: Åâj8/æÜ©ŽÅR�íãÑë¸èüµî<bC©XB¹P–”›—ìx3±¸ñ7ŃÁf+~„‹œ¢ó_Ù‰½T(¹ŸÁ:öv ’²|1  i{BòuÊ"–ä}±D÷Û’Ë19ï¼A‘%Ù$¥­9(œ&¹½žÙr̆Œ9Ü<‚}¹‘ [Ÿ~±îšPˆX„ÏÊê¼3ÎÔñ}¯½…E,سo?þ7á~ç«ÎCÑyçåã‚ßaÑ™Y‚c®¼ý²ï³PšE,©9By~Ÿ  83ém ãPÚPÂñnöÐ4A&\Ã&>™Û+|i2*'œ†E,ªïk ©Õ:vX¼O×®-bñ6±¼Ï®™d¹ù‹˜žîŒK̼rõÕWc~~7~äa7fOÄ"6q)Ä,â¼<!‹ÀÊ߆ âœîý2„TºÌâ…ÀïM‚HòíÆ5É"ØÁ o©|r³—øôÌÁ`ô1t³±T«u·ß –ïj½Åk •.<‰fýÉ §¶Femy«‹]S7kXoüÖ«uí¬0£ƒÙ.Ñ× bƒÁ`ôXÈÂèOø›±ˆ%T†Ö`Ëæ‰Xü™T碆d&”šó­Ú¨9ÑÚ3°8ÓP*¢¸mÅÁ’ûŒª ÔgWÐp>bMqǧ€*JTŠeiY²¸ ’ãÒšž($Ô¡äüµFÝÝÄ/ä…‰µƒÊ”v:ñ‹_®9ñ7›°Æ…U4ÖjhP£5C‹S·ƒåT •¿Wr¬ÏQð×nòë¸ò:–Ÿ"‹XŒüXÄb؆,b ¥In¯ç@¶$³!c7`_n$ÃÖç’˜‰ErÜû¬Õœ—OÎ8yÓí{XÄb!fyú3wã+_¸àÖa¹2ì‹öm÷CòS7ó¾iÞÌûfê8ÓõÍÎ9By~Ÿ  83ém ãPÚPÂqƒ¼Ì†<# Ûr2:—DšMª3EúYÄbk¯ú~©;ßãb&–¥‰mxê¹ß‰…ˆE,} 6OÄ"fa9zÕÕ®($+ÌÍÍczç®L~~-–ºõ–ÛðÄãĉã­{×Àæ‰Y‚Xz΋P\[Eáá{[Ü"F˳šmA7îSý¿[š)BîBÛ³ˆvPŒ_&>¹ÙK|zfŒ`0.udÐoˆ¸óɬ—Ðj¸\_ ƒÑs`! £Á"–PZ[€E,[_Ä"f-Y«U±Zw�Öë84…±ëöbäòi NK×õ\¿¸ŒåÇÎcéÞSX{èÿrÅ_VG—ìxÒÒG&×±á¬7ë¼bã·ìÃÈÑi ÍŒÉã¿àÄÿÐy,~ý Öî?µ*†Êƒ* :K¡¸ ’²Ü‡„bI„X~à¸ôšeKò>‹X¢û‰íF¦ÝÅü¼ó�E”d“”¶æ pšäözdËA22æpóöåF2l}úIÄBA›(‘ÔG Z[w?¯½yv¸ùÖ–¥²øˆ\^ù!}šE,©9By~Ÿ  83ém ãPÚPÂqƒ¼MEš€®aŸÌí>‰4•“ÆGNÓß"{ô~YõýÒh‹XV†Çðä·½CSÛÝ%„‚"q_ë X¼ÏÝ»÷ààÁCÒ{ÀN°²²Œu‡_·Ä‚ D|‡_މÉI<ôàƒîì,A1‹(dzxyóÏÊ+K(ž|{‹e ã¿„§àÈiÐöY¦-,}XÄ;(Æ/ŸÜì%>=3F0}•0"i6Fo ¸ ‘I>ƒÁ`0² Y} ±„ÊÐÚ,bÙ<KÒ¹˜ŠXÄ &s«KXi¬cüæC8øÜ«1°#yýðÁm£¼uÛo=„úÒ:ÎýËØý×G0Ô,c¸2èÎr"‹Kw§"–UçeâªÿćpÙ‹¯Âà´AüÎ9ÞáÄïøÔø?ö.ü¿Ç1´¾ŠÉÁ1WÔí…ȹD—¢ØyfnI¸Žå§È"#?±¶!‹XBi’Ûë9-ÉlȘÃÍ#Ø—ɰõ¹Tgb î‹O1‹h€»’ÇF»v¹uHí: ýT<~yùûäm#þ|¿±ˆ%5G(Ïï”ræ ½aJJ8n·©HPÂ5l⓹½Â'‘&£rÒøÈiú[Ä¢5#½}0ûìZkÎßùÇîx *ÛwºÂ±ybo&±‰%z®¼ò(¶o߬!f*"™µõµÌ„,v8ñÞtÓM¸çÞoøb¢,O°ã-?tî…߉Á¿ü�ά,bßp¥öø¸1+Këßàý¸dr³cßn\“,bã—‰OnöŸž# FºïYß%ÖYcÂ`0ý²0úª·Òã,bÑ7Œ‹ýYÄÌóÎÅ}À¥8é=ÍøøåÚ*Î/- ¼{‡¿ûYÚ;…4( bÏˮî—\…ùçAâš•§÷S• MN¡\© ÊãNü¯¾;ž{OýÏ»púþ³Ø>0‰‰Á±X¼ˆý~Ò«trË/3±ù±ˆÅ° 7WÄÉË#›´5…Ó$·×s [’Ù1‡›G°/7’aësI‰Xˆ|šîÇàßÙbÈ«3oÆïWiñËË>Í"–Ô¡<¿OPÈ™ƒô6†q(m,®KUÞ¦"M@ ×°‰Oæö ŸDšŒÊIã#§é‹M›â»p¾ÖÀr½‰7> Íý‡16<ì X‚"o&–z½«®º“““ÈâþVŒUk«k˜œÈ¾ŒááÜtãÍøÆ7¾áž16 1‹8wOÈÒܶg^ðJTþöÏq~½Ž]Co!Þ È®GJx9×…k’E,°ƒbü2ñÉÍ^âÓ3cƒq‰"ÏÙX¸+ÊÁ³ª0 ÆÖ�?±eô7(òÛg‹ö¸a\”èÏ"–`žw.YˆXæ×–p~yÛž~û^y å:E©TƶíÛ±äð.-.¢ÅÄÄD&7;FpÅÛ¾gþáAœúðý¨5Ø1Ü~Pé·A…H7˜y%`ëîºB—¢²½å—‹XŒüXÄb؆¶ç#H^Ù¤­9(œ&¹½žÙr̆Œ9Ü<‚}¹‘ [ŸKy&/mÂË0µk´Ñl õXDÑ]"A1óJàa¡ºoš÷#󾙇:Ît}³sŽPžß'(äÌAzÃ8”6”p<‰c³¿$Ò”Ÿp ›ødn¯ðI¤É¨œ4>ršþ±hM#©êÞkνëìzwÄÂu·û"o+—ËîÌ%ÞL,BÜqÝu×ad$¿ÒVW[?ÔX[[E^ÄM7ߌ»ïºË=/1æy›'f³ÎˆméÀaœ½õY(}å3Xª70îÜË{µY|‡ 2²ñƒ X^/,bã—‰OnöŸž#2À“':{&Ö©?ó1_6K EùÎk¥wïDj?]À… çÙhŒNœiÕkµYR<‡nݳzí¡zVmû ›ûóm&ƒ±•Á#£A‘ÏØ>‹X´Ç ã¢D±ó¬Î%ÁVˆX.,/b×ó®ÆþWßš‰ˆ%ˆ±ÑqLN¦›ÝžœÉlUðÕÌË®ÂÁ×ÞŠ¹Úί^ŒÕq°¯wrË›‹E,F~,b1lÃtm‘ "1²ÍÓÖN“Ü^Ïl9HfCÆnÁ¾ÜH†­O¿ŠX¼‡€Vå¶¥íÉ0Gµ¶êlk¨××Q¯UQsö«ÕUÔêU§z›¾Ù5B`KzŽPžß¯(ä̑РãPÚPÂñ$ŽÍþ~HS~Â5l⓹½Â'‘&£rÒøÈi.  YÚG5œók5¬ âÄߎ¡áa ù"±/fañ¶ÖrBWå*bð,B@“'Ê¥2n¸á÷Ó›qÆÛ<1‹·­Üú,,ÌìÃÅõ&Ö›ò/¼Øw¹É—— ,}XÄ;(Æ/ŸÜì%>=3F0—lf_¡Mÿc´ÿÀuÊ`0[ <# £?A‘ÏØ>‹X´Ç ã¢D±ó‚ç"›]E&°ð>ý?²ÛËÎK¢Ù•%l»ãr̼ø:ä1=²Ø¶*¶ËA4Wê8ñgß@¹PÆÔà„ö:ö– ßh—ö1YÓ!Ø\,b1òc‹avvÞYƒ ò´i²å pšäözdËA22æpóöåF2l}.É™X"ݔڀѨ¹†ý;–0=µ€J©‰ù•!œº8…ZcÍfåò Åð-g32…óF[нøwžqºÃ~eΡîïéúfç¡<¿OPÈ™ƒô6†q(m(áx鬻€4Å&\Ã&>™Û+|i2*'œæÒ±hÍ›Q÷ø÷¡ø\¨5°îØž¸ö”'&}‹øŒŠXjµŽ\qeh9¡µû¾‰ÁË£0<„,±¾æÍÈ’¯E RÀu×߀»ïþº{žÞ¬,bÖ2QõzÝÝÄùŸö‹1úá?ÁÅj3ƒ­ev7FDt£í7±?&Ùkû«ÂÇ)û°•Û&|÷Ì‘!ík ¼_¾§õg>æ“Át6–'ŽC|Þáb£cÑžÝMç>°kÚ˜Ÿ�ÃÁ¾™†;&ïÞÝÝ—z»ÑöítFîÌ·™| F?€…,Œþ©öYÄ¢=n%ú³ˆ%˜gu.Û¨ˆ¥Ú¨¹"–¡ýÛ°÷å7ÁgÏžw¢}Ãy©Ô") ¸é¦1=½ýŽ/¸+_ÄÂçOa°8€árû(µ^jb×vû[Âu,o.±ù±ˆÅ° {KÄ"Ù¤ ÒøÔ>N“Ü^Ïl9HfCÆnÁ¾ÜH†­Ï¥¾œÔ&°¼ŸjY†ÍÕYTOü ~áÕ_u,~~mÕµ<tr'>óèÍX\Ýï¼°›tþîh=ŒQ÷Mó~dÞ7óàPÇ™®ovÎÊS\ӽѿ!ÊöûÚ¨G2Ó}G謻€4Å&\Ã&>™Û+|i2*'œæÒ±¥}Ô¤æÜo.Õ›XœÜ‰Å«nÄx[¼âmbü YöìÝë.kDiß^<úšŸÀåïx ŠÏ¸ Yaµ-`ñ–2j-…—„`åê«®Á}÷ßã–U*•üͳ!Km÷^Ì>ífTîÿVMŒ”âqE—r—*@Úï_«Y^/,bã—‰OnöŸž# †Y΢£Êr‚lŠüha³e½rN ƒq©‚…,Œþ©öYÄ¢=n%ú³ˆ%˜gs.QÛ¨ˆ¥IM̯.£^ \ö}Ï@¡döðí}¿÷~œ;w!”÷ÙÏ|¿ú—öýÈMxà¾ó˜[\F¥XA¹PòëÚØgp{å—‹XŒüXÄb؆,b ¥In¯ç@¶$³!c7`_n$ÃÖ‡E,Éí)óa¨Q;ýE¬?þ F•Àª†BÄÒ¬.¡X_ÂÑ©“¸üº/âSO¾÷Ì>ƒƒ£(W¿¬ßhKó~dÞ7óàPÇ™®ovÎÊóûeÀœ9Ho“cÿ6âˆÒõïˆ4&\Ã&>™Û+|i2*'œæÒ±èìãÄ¿½Ô\µj8vÛó084ä.¥ãmîl(B¼!D,b)¡}{÷ÇŠ«LMbìÅ/Ä=¯;žöŠ`àmo¦&Ñ)¼¥…D´ëëk]™ytjÛöíÛ“'O¸bOÐâ {\!‹³Íß~'&}�óµ5  (ZÛk_›u¡íYÄ;(Æ/ŸÜì%>=3F0ŒrYõ¦KýS<Ã~ϻއ±±Qüä_‹­�©0 F,ŒþFð5±èÆE‰þ,b æÉÎ%ø+pˆ%ÎEX©®c­QÃÎg_‰Ác0(/*b³´ôî=YÇÿúâºóYsÓ×ï«àGoÄ5{:®Jƒ%ìùÞ§áô»KÕL Œ!¾„ÐÆ~ì¡!)MÛŸ,b1òc‹afwÞylÒ$IíCá4ÉíõÈ–ƒd6dÌáæìËdØú°ˆ%Þ?ÝÏÀò~Mt£ÇôªÇ>ug‹Â±7Ô–0\œk¬G±Ñ–æýȼoæÁ¡Ž3]ßìœ#”ç÷ Ê€9sÞ&Eÿ¥)áxG$®C¤)0á6ñÉÜ^á“H“Q9i|ä4,b1±÷LVM¬;cìù=‡ÑœÙïŠW‚³±x¢ !bu{å•G•/vÿÛ×àØ‡ÿßü»ãèW¾ŽŸ|-J¯øöÔ?o´—òñ°¶ºÖµ%tº óssX[_ ÍÊ"êÇŸflnºÃ_ü$–jL”b<¡YYÚㆬ:Ü|Y –mÏ"ØA1~™øäf/ñé™1‚Á`tÔ¥þé‰Xþï_ÿ½Ÿ·UÄ, ƒÁèmä;&ƒ±™þ¡Æ"ýqø(ÑŸE,Á<«s‘؆/­¸—«ë b;î< S˜®ÉºÙøÔC5¼åCKøâ5ç<án_x¼†7ÿÅ2>ýp bûPÜ9€Õzf34ÛMø»€—JÞgKt?±Ý(¹œ¬Ï;âehÓ$IíCá4ÉíõÈ–ƒd6dÌáæìËdØú\*"еˆw€ÛSVC ‹Ø>úàµøøã·£20Œ—…miÞÌûfê8ÓõÍÎ9By~Ÿ  83ém ãPÚPÂñ$ŽH ]ÿŽHS`Â5l⓹½Â'‘&£rÒøÈi.= )2t³±eŠKµ&ª ©§Ýš…E|Š™H<!‹Ø8ˆJ¥nú¯ïÁñj º€ê»ëoý4Ÿ:4X]] §×WÑ-±Î•G¯ò—ò>Eg¬Y¾îV¬9cæ²S‡MÅ÷¡:3–>,btí•à“›½Ä§—ÇãRE¯=›ÕA«XÆþ·~ý½!ËÜÅù-un ƒÁè]°…ÑŸþÄ"ýqø(ÑŸE,Á<Õ¹ÿ+p»¶q¯×«îMÀص{P@?aq͹éùç4šñcu§Î~Ó9¶´Þá ó�qê΃n®Ô[ë£Ç¯À 9Q!‘ÿI}±ù±ˆÅ° {[Ä"éÒ$IíCá4ÉíõÈ–ƒd6dÌáæìËdØúðL,Éí=^Ÿk zºŠµ'Ö±~lÝÝyÔÜŒžÕ{°±üÓ×à£ß⼤+IE,ÔlÆò¬Òö+suO×7;çåù}‚2à@Τ·É±qDézÏOS`Â5l⓹½Â'‘&£rÒøÈix&û ‰˜‰¥Ú�fwíÍìu,žˆE|ÖÛ3¢Çðð0¦§§ùìǵßÿ*<¶²Ž‡–ÖѼëTü ¨ÿÉŸ9w&X]]Á¹óçpòÔÉPþ…óçqöì,..†Æ¤¼022‚½{÷…Ä<bóêÇÝœz¹pí-h8_HËõ†”'ÕKAK±ÀŠñËÄ'7{‰O/ Æ¥„^w lþä¿ÿ)~ó×ßãŠV‚çóÞw¿ÿ‘úy/}ù‹ð3?ÿ¶Í]²'¡hY;°î†Á`0z¼´£¿Á"ýqø(ÑŸE,Á<«siçÇÀn ¼¸Å²Bb&‘ÉÛ¢ßð¹ÇÅ,,ê;!bùÂ5¼àªÎ<Ûžu�³ù(Öêë/¸/~Ü+Õu,ÿ q³YÄbèÇ"Ã6Ìø¼»�Ò¥I‡Ú‡Âi’Ûë9-ÉlȘÃÍ#Ø—ɰõaKr{R$ñïÙÿ-_n¯P) ²£‚Ýe _9„Ê.ý¯Çû©D,Ü‚é‡13³1ƒÜF[êúQ`ð…Mß´Lq¨ãL×7;çåù}‚2à@Τ·É¡[qD‘ùäŠ4&\Ã&>™Û+|i2*'œ†E,¡>»Ö6úIðÐâzuÇøäU·ÆD,bæ‘õõu6’£W] S\öKoÇñ~›uÓbT©ýÉŸ¢þ™ÅÀ;~ Å«¯Šù,//áܹs˜uÊ“Ïì)fhyâ‰ÇÝýb©„ÉÉILï˜ÆÔÔTêå‹’pèà!'®³n=”Ëe·.Ĭ4¢žDýˆºZ¼ñé¨Þó%,7«x÷í«Rv SÂòB–mÏ"ØA1~™øäf/ñéå1‚Á`ÈÑK‚!bù“?þ3?ýŽŸÿigl/H—"ï¸ ÿò©O ÜùÜçƒÁ`0—XÈÂè_°ˆEÜ0.JôgK0Ïê\m½2Z QsfQ‘0rp'T8{ö<î¾û!…¼î×äýhøBÜhÜtÓ˜žÞnâëO¬$Ú|íñÕŽ…,ƒÛFPšDó| j¢T(†®ãè?Š<ôj²‰Gfʦ ^,b1¼ìYÄ¢³ Ú›Øæ Ò¥I‡Ú‡Âi’Ûë9-ÉlȘÃÍ#Ø—ɰõa‹Ü&ô}L„$ŽÐñ¹³³ˆmé®”§J½~#× £PÎçEW/!½ˆåò"ƒt‡ýÊœCgº¾Ù9G(Ïï”ræ ½M‡ý[òµgÇ ÄÄ'S¤!O¸†M|2·Wø$ÒdTN9Í¥+b! û¨‰˜AÓ.±42†ú¾Ci Y„H#8‹Ø&'§02<Üü{¿OüÐëÝ™YŽŽ ‚y ëoxʯzʯû1F†°´´„ãÇaaaÁ†Mç>ûâ쬻  aï¾ر#ûûa!˜Ù·o?Ž{2T'þŒ,¢ÎFF1{è(†ý&VëMŒ”Ûiwášd ì ¿L|r³—øôòÁ`0ÂèÅAÄýóÙ3çüô?|äcηooÿ¹·âÝÿùwC3±¼ìå/vgbQ‰X ƒÁH²0ú,bÑ7Œ‹ýYÄÌK:7U~ ÏÉF…Ö n~iÇ(J•Txßï½çÎ]€)þúÃËûìg>_ý¿ˆnâüœ²èhž›[rþD§<<‰õóçQkÖP*ºÍºÅм‰ Vx&C?±¶!‹XBi’Ûë9-ÉlȘÃÍ#Ø—ɰõaKr{ª¯›b¹¡ùÏ,béë+˜ø–1w––~E:ËÍÆ"–àØ›¾oæÁ¡îïéúfç¡<¿OPÈ™ƒô6†q(mLú·Ž#ˆ‰Ï¦#á6ñÉÜ^á“H“Q9i|ä4—®ˆÅÔ>¼ÄêÆŽ\ˆåpÎî¿Ê¯x›'fYYYñEûöîƒ-Fo¾W½à9¸ÿcŸ‰YÐh þ—ƒÆg?Ùù>ߵѓËO8Ÿ#n,¥rÉ®ˆXĬ,KË‹X^ZöïÁW×Öðè£;÷Ôgpùá+008ˆ,±gÏ^?q<$d1ëíÂÕ7`æÑûÝYY\! …ÇMwVÑའIfe±l{±ÀŠñËÄ'7{‰O/ £»H;˘ÅZˆS<ÑŠø¼ëëßÀ‰§|;±0 #/°…Ñ¿ ð~ôiø8‹X¤õ•WB\$Ú:VóK|€›‰…,Ê ·{µÑš¹r@-ä7%6"Ĭ.ÝÆåÛ›øÒÉ& Å¢ô¸xØxd{ü¦«yï}¨ýÏ‚î¹ÏMn¸•ýA¯}šª(T®™Àú—Ïc½^ÅÐ@ä$IwÍÅ"#?±¶a>"–à~Ö ]šäe«}(œ&¹½žÙr̆Œ9Ü<‚}¹‘ [±D¯Eе§ ‡ K \üØ<–ZÃöo›@q¸ˆ~‚½ˆåiV"– Ò÷Í<8Ôq¦ë›s„òü>Ap gÒÛ¤íß@ªþ³‰bâ³éH¸†M|2·Wø$ÒdTN9 ‹X¤u•t͵3V\! pþðÓ0dˆM5mሔŒŒŽ" Žþö;qâŽc~i%,faœ>ƒm¿õ{(Þx-N¾êå ‰1ìÚ5ƒ»vaxh8‘[,?tþüyœ>sÕõ·˜ÕåžûîÁ‘+®t—Ê b™¥½{ö:/ÿ6Ä,¢~‚uVØ{�+#c¨¬.£Ñ$”l—: |¿šx²ˆvPŒ_&>¹ÙK|¶ôÁ`0z Bœ³¤±tkI –Ó0 Fÿ ¿ž¸2(¼}`>Î"i}%ŕğIc¶ŽÕü`K.'ä*ä%3 ­Õª­QûÔþ²Z?u3Öa}æ•ã¸xö)iÙ"oîì1Üqt"”ßøäg°þæŸAó‹_­¬¸[ó _ròÞŽÆ¿ü«²¬ÊeãnÝ®7ëe¾(á¦i’÷‚ƒE,F~,b1lÃE,]êÂIP’M(Má4ÉíõÈ–ƒd6dÌáæìËdØú°ˆ%¹=M8Ò@ŒK­àØŸŸÁÚÙ*úiD,ÿÄ"–\úw(Ïï”ræ ½M—ûwÌ&ˆ‰Ï¦#á6ñÉÜ^á“H“Q9i|ä4,b1¹ý#EÆzƒÐtêpnjJSÛP.—C¢ OÄ">§§§‘…J·üú/ù1…˜å¡¥õÍäÝ÷áªwý>n8~2±”ËìÞ½7Þp“ëW*µJi8q?ôиp¡ó‹!Êj6›nxõÉæâá£n‹Ùn¬CÛwZF*Jè¯ k¤ìÃVn›ð]¼¥ÇƒÑU˜j%=1‹­Á3±0 #o°…Ñß øÓÐ]‹XbÇ)ÑŸE,Á<«s‘Ø’*.·-6ŒÔ~€51€~Ä-—Oâ¶œ?ñÖ–A΃=j6°¶²èæ=ãP7\²,.¢ú[ïu§“ŽÁyXý­÷�KËÒ²ŠÃe÷å#Ÿ *^ˆl4—L”~•Ä"°ˆ…’ËÉ弃ûÁñ#GP$AI6¡4…Ó$·×s [’Ù1‡›G°/7’aëÃ"–äöTq¦}M Æ‘º3Ôñjm±†'þ¿SX>±Ž­ŽlD,ÚeKjŽPžß'(äÌAzÃ8”6ý[Ë ĸÜÍDÂ5l⓹½Â'‘&£rÒøÈiXÄbbOˆŒ›ŸõFë¦êÜîC¾ˆE|ŠMÌ>â‰5ÄÒÛ¶mG'˜zÑópø–ëý´LÌR\^Fý=ïÃúÏüèÔiØ@ĸg÷\sí îRDâG=öææ."+ˆ:š˜˜ô>bu¬» —…sGŒÕæÆMk°©bãÁºíYÄ;(Æ/ŸÜì%>[zŒ`01lÆ Ub•wüÂÛðÊW½ÌM¿ôå/b ƒÁ`0r Yý Š?0 ßù³ˆ%zœýYÄ̳9—ÖL+€Q\‘ãâVÓyYÖl:‰ÁTÞjµ::E­VÃfàwüÜ~xN>Š“~ÃÙîÁ…âŽË‡ð;?^*¨þ¹/ËËj²Å%4¾ð%ù±’óدTpþ‰z•½¡Ð>ÏÄbäÇ"Ã6Ì_ÄÌÏIP’M(Má4ÉíõÈ–ƒd6dÌáæìËdØú°ˆ%¹=Óp˜ (bŸ çs½ÚÀÃ:Ž¥“«Øª°±ŒÝð㮈ejrfvñL,Yr„òü>Ap gÒÛÆ¡´é°³ˆ%#{…O"MFå¤ñ‘Ó°ˆEgOŠþÍX3‹8ÆçgºŒR©ä‹1<‘†Ø„ˆ¥`»DŽOû/ïÂÈàÆ;db1kçúþ$êþNÂnV“á¡!\s͵ŸwÓâ^þÑGÆêZvc¼XúÈ›•ÅûôêÍíÚ‹j±äü­Qȥ߳ˆvPõŸÜì%>[zŒ`0[b,ÛÛߌ_øå·ã?ÿÓ,ba0 Fî(ƒÁèCH…¡<±DS¢?‹X‚yVç’hÛ*#(vñ–ºñLij7*4QÒë/œÅàÐ� ŰÝÔ¶ ©ýÜÅ…PZÌ„²¾¶9Ë#LŒ”ñ'oº_{l_¼×­—Oâ¦ÃñØ×¿þD%æÚ×îÆè ž˯×zÜ3¯¢î<0hO-C…€È à~¶Ó¢m ¡Cè¥ ‹XÌ.{±èlƒöƶ·ÏIP’M(Má4ÉíõÈ–ƒd6dÌáæìËdØú°ˆ%¹=í8dGå‰Xüt£‰û>t7þè! Mm­ÔÒˆXÆo~#¦&ÿ¦¦öúömiÞÂ邦oZ¦84W¥,·CŽPžß'(äÌAzÃ8”6©ûw; ĸÜÍDÂ5l⓹½Â'‘&£rÒøÈiXÄbbO âw ç> V,¡°}Ú±xŸA¡ÆÔ¶mÈ•©I|í÷ãÿò¿ü<!f8:6wm µ?ücÔ?þ) ¼ã§P¼ú¨i1î9=ú4<ðÍû°¼¼ìœG>ò®½öºL9;vìpÅ1žÐGÔQ°þ°°s7†Îžtg½*iî~I(-‹X`Åøeâ“›½ÄgK cKAˆW^òÒ¢—‘ÁPÍ`0ŒÏÈÂèoPäÓÝgKô8%ú³ˆ%˜gu.[ŠÆ¥8^÷–Ï™r^˜©ˆj¯øŽoÇÒâ .^˜ m*Dí„ïw¾êåØLˆe†^ûüî&±¬œŸMäY=/_˼^«¢¸oЭàZ³îŠTäÍ•<K3ô¢ŽE,—=XÄ¢· ÚÛRÜ>wDÎ;­HS8Mr{=²å ™ s¸yûr#¶>,bInOõ5#i_2ÿ•¶VÄâ-3´RÃ=ýš®öÈŽVÄ"­ˆE×7óàPÇ™®ovÎÊóûeÀœ9Hoc‡ÒƤë8"—»™H¸†M|2·Wø$ÒdTN9 ‹Xt}J™/1¬¶ïMç¶Í 2P ‰XħgˆMÜoMŒ# ,--bñ™·`ç¾]¡|ÕÌ,nè<Šõ7üj¿÷~ÐêLQ*qå‘£îù¬¬,ãÌi»åŠ”ÜNýŒŒŒøuäÍȬ¿ó{¹¶ë ùxåýøÅ,bã—‰OnöŸ­7Fðf£WÀ½‘Á`0½ž‘…Ñ¿ È§»Ï"–èqJôgK0Ïê\Úù¡e… ˆKñ BøÖ­å‚Š»F fl\s¾ A†×þÄkÜ-ñ`ìoøi©ýG?ñalE4Ž\†Æ¿„’Bb/¦·n\qE,¿éþb¾ŽÂþA§Žœ—Žu·®=oV–¹Y4Mz�Ì"–äøãe˜Ä¤=NÑ|±Dm2G¬Îc‡$i §Sq [éw.s¸yûr#¶>,bInO;RÚDa"bqóíâ‰e<úÙ3¸òÎÝèut"b ÂK#"–BÄIéû•9‡º¿§ë›s„òü>Ap gÒÛÆ¡´IÝ¿ÛéH ÆåJ9º„„kØÄ's{…O"MFå¤ñ‘Ó°ˆÅÄ>Þäß™ÕFK zvÛnWxQ,ÝO±‰Yx"‘aç>¶TB8þÔSnC?ýo1ðŽßðcPÍÌâ¢Ñ@ý/ÿÏ}•Ÿy+J·Þ  âà¡ËðØ£¸é§N`zfƹtŠÉ‰)œ=wÆŸ‘E Xó»ZbѪ+º•ÔŸeÛ³ˆvPŒ_&>¹ÙK|¶ÞÁ¯ÍŒnƒºþÇ,ƒÁ`0Ùgdaô'(òé%zœýYÄ̳:—DÛ@¾©hF$wg Ï®¦‡P© `nþ".uŒ=ãé81¿$}'òN,8/Ûî¸-vlqaÁý…ÛÀÁqWìRmÖ7üüÏ Ñ²éB/UXÄbvÙ³ˆEg´7¶%½}^ ƒ<ŠìQä€²å ™ s¸yûr#¶>,bInO;’rÈ`#bñöüÌ),œ7ÿÕ÷f KKkǼ™÷Í<8Ôq¦ë›s„òü>Ap gÒÛÆ¡´IÝ¿ÛéH ÆåJ9º„„kØÄ's{…O"MFå¤ñ‘Ó°ˆÅÄž,|¼YÎïðÅâSlžˆElcÍÆ²¼¼„…ÅÖ´Å™]¸ö¾+f£›™E€NžBõm?‡êø5`~&عc§zçΞA˜˜œôg¬ñêʉ:Äönõ7Üeˆ#βë^ÓV,b(ôaå“›½ÄLjbâRdE, ƒÁ`0 [°…Ñ¿Þ5±ˆ%vœýYÄ̳:—DÛ@ªüz½á¾D+ïn=<bŒKc·Ü<ýV<>·€ÅjÍ­±-V«xìâ<pûÓ1zÃu1¿Ù‹\!ËÐÌšC÷¥£ç+ 7xb#±€E,”\N.çÜ'µ}äk%SAEö¢ßkvÈ–CúKÆnÁ¾ÜH†­‹X’ÛÓŽƒ¤2¤±ˆÏª3vßóÏO¡WÁ"–¬úfç¡<¿OPÈ™ƒô6†q(mR÷ïv:ˆq¹RŽ.!á6ñÉÜ^á“H“Q9i|ä4,b1±÷L¤÷ØQ[jÍ‚)Lêc¾€ÅaÅCÃÃÈçÎó÷§wÍà²_úÿa×ÌtÌ.IÌ"Ðøäg°ö#?úG?ìÝ»7ÇYdÑÀÒBîr·ÎæÕ£Ø†ÆÇQsë2Ò–mÏ"ØA1~™øäf/ñÙzcD!É€Á`02C…s ƒÑ7ॅý‰àM‹XbÇ)ÑŸE,Á<«sI´m•kÈü·fÕš wÉ›Á™–¥X*b~a““0˜Ö¹V«£R å×j5leyï¯ã‘·ýžøìçCù“w> G~û1ûõµ5T«5 ‹©N“•ö¯;/¨ÊH7¸û¡—*,b1»ìYÄ¢³ ÚÛ’Ú>òµ’;H™¦pšäözdË!ýÎ%c7`_n$ÃÖ‡E,ÉíiÇARÒŠX¼Ïc÷_ÀÕÇ÷`Çþ1ô²±øˆ‰Xäß³Êt‡ýÊœCÝßÓõÍÎ9By~Ÿ  83ém ãPÚ¤îßít$ãr¥]BÂ5l⓹½Â'‘&£rÒøÈiXÄbbO)|šíº-oYĽ§'dñ¶á¡!dÙ‹³þ¾²Üô»¿†Oüàë1:°v™¡6èâEÔÞù.<õÈyìý÷¡RR¿ôšœœBe`�µj«««X][uΫ3ΠS/ÅbÁ¯'!h YD]®ŽM``aÎ  ë¶ßeÖ¯òºtMjû«ÂÇ)ûŠ•Û&|o½1¢{"–'Ot¶ŒY§þÌÇ|AÈ–ô‰æÓÇN–BùçΕÜϽ»'Nqþ|Õ†"ÖÂ¥'ø8q¦U5j}ul_™MÁ²î¸0ßfò1[,daô7XÄ;N‰þ,b æYK¢m  Y»Hòë͆ëSØ9Œb¹5‰ÖððNœ8ŽIç¡é Ç…³³Îƒ²Úky“ól}­Š­ŒÒÄ8®úã÷aékwcéî{ܼ±›oÄØM×KíEŽŽøé¾!Ðãk¨6k(+þ£!ò”ûbE'/ß}è7ßF½{öÉ݆E,&1iS4ŸE,ñ²»R¦)œ&¹½žÙr̆Œ9Ü<‚}¹‘ [±$·§qt*bñòïÿüI<ç{Ž¢Wˆ%þç¥ ‘tô8:ìWæêþž®ovÎÊóûeÀœ9Hoc‡Ò&uÿn§#—+åè®aŸÌí>‰4•“ÆGNÃ"{êÀ§V,£<8à¾ÌñD,Q!ËÐð:Åêê êíbˆ&xâ˜Ñ›nÀÕ/¼÷}ôS11ˉ£·â¥—à;¿²Ž¹]-¸ç65µÍ_Vhq~¡c!‹ÀÑ%X—scS˜\˜C­I¨6Æ[ÿ÷®QW,6~ÕÖ¥kRÛ_>ÖHÙW¬Ü6á»xëݱ0 ƒÁ`0ú,daô/XÄ;N‰þ,b æY‹Â–‚¿ SˆXš‰ÂOOêõ¦{¾¥™‡âW[åR gΜÁÌîÝH‚xöŠïøv|ø¯þÎá«»ybyïùÞïD?@,3ä.5¤Áüü¼û«¹‘€¥¸ ´f¼ñ ¼LB/Ux&–äøãe˜Ä¤=NÑ|±ÄËŽïçR¦)œ&¹½žÙr̆Œ9Ü<‚}¹‘ [±$·§qd%bé‡ï>‹g¼ì0G*Øl¬û$VÏ=è¼Ü‹âúš­|©E,ˆzL­!ùU¹}!‡º¿§ë›s„òü>Ap gÒÛlZÿn§#—+åPÛdŠ„kØÄ's{…O"MFå¤ñ‘Ó°ˆÅÄž,|‚‡¼¥Y«• KpóÄb‘R©³UÍ.ÌnÌÆ2&~ÐÀ•¿ýŸpâ /ÅÜübÌW'fqE,·½V?ýâ:î¼r�‡¶«co YœS_^^rrfÐ)Ê•Š;s¨÷ (bŸ³•aròÝg,~˜ËË ÁŠñËÄ'7{‰ÏÖ#º/b9´¯4ð~ùžÖŸù˜OÓY<¾ƒ{¡übCÊaƒ}»›¨›˜žv¸á`ßL«ž÷ìi}gV»²öídFîÌ·™| F?€…,Œþ‹XbÇ)ÑŸE,Á<«sI´ ”!k¨ãª6ÚËÿL‡6î<D;uæ¤óo£££HÂkâ5îv)¢V«âñÇÅÎéðúéƒ'°@§Ql¶Ä=âal¡ !âùa!Ò”â³�Äýü=±˜Ä¤=NÑ|±ÄËŽïçR¦)œ&¹½žÙr̆Œ9Ü<‚}¹‘ [±$·§qd)bq?M<zßy\óô=ØLÌŸ¸«å˧vW¹éFmåó_ÆÐÜ2±Ø¦ ö+uÿަÕý=]ßìœ#”ç÷ Ê€9sÞÆ0¥MêþÝNG1.WÊ¡¶Énì9Ø`‹4õQ9i|ä4,b1±'Ry¿×X,ÆD,AKfÅ‹ºêú:֪ζ²Š•µUT×ÖÜ´z12ž ¥P.ã–wþ">õ¦ŸsgÔŒBˆYŠc£xÚϽ¥[o=y Çÿï§ñŽ?îŠXª Âob¿û=cJIŰ7³ŒcpþÂ9¬¬®¸³² Œ`ppÈÙÝÙbŠEsáNÙ©ŸµÀì5Ñ:\©´8M˜ƒE,°ƒbü2ñÉÍ^â³õƈî‹X ÃÃ%¸bƒÁ`ô-XÈÂèod_–Ç"–dþ„¸H ´u¬æ—ø�}#bñø j?ï\ÅÒBâ×l»Ç„x¸µmj;zèA\sÍ5îƒ3Fâ×{>ø +ü³Ø1¸Óy�:RBs•ÜÅB{Ù%D–òöy&ÃËžE,:Û ½±-©íU~y”i §In¯ç@¶$³!c7`_n$ÃÖ‡E,ÉíiÇAF™‹XÚÜ{vÓ„,â¥ØÜ©ob½´!æ³³­W›¨]áÊ,Æ—>±Œ^óÃ"–B$ätp Eø»×Š#ÉFÓßÓõÍÎ9By~Ÿ  83ém6­·Ó‘@ŒË•r¨mò„QY¶¥94õQ9i|ä4,b1±§>A4¨õ%¸Zˆ÷ªþR9’7IµZ sósX]YÆêêÖ×W­jü«óI™“/¸‡o»~ån©Ïø[_òK_ÜŠofÊGoÁÅÿ±²¹ûxÿpï:^v|)¢rE¨ËËËî† 6âÜ140ˆ¡!Œ chdØMÅïÙ‹%ù4+ž ¥VðË3‹X`Åøeâ“›½Ägë,ba0¶ ²Ö{PàG‚ ƒÁ`d²0ú$ٗ屈%™?!.’Æm«ù%>À%7 Ü×äþ’›Ê ïGƒƒÅýß¼W½Úý%X–"RÉbþâ ^ª‰å޲„x@úÐC8çPPÎZSÞ7zdÕ ”Šæ$¿íZyz‹Xª{Ç"“˜´Ç)šÏ"–xÙ²ýî<4 È^ô{´> éN9HfCÆnÁ¾ÜH†­‹X’ÛÓŽƒŒ8/ÀÈÓ†103€Òp•–O­áܽ 8ÿÐbj‹ø<öØlKÙåçyâ!â쩇P+Nùyb¼­V«î¶¾¾Ž¥òu®ý3±L<ý§²¶‰-7Ôa¿2çP÷÷t}³sŽPžß'(äÌAzÃ8”6©ûw; ĸ\)‡Ú&O•ePšHS•“ÆGNÃ"{Šš¦ˆËë7+EýÒy¥rü~²R©`zç4jÕÉ™Wœ1iuuÕ]VÌÌ¢µK]ûþ߯ég¿ËëÕØ±]w<=”Þ;UÄÌD§æÃsüÁ¿¬áöË*Ø9/Ãd¦·˜A¦æŒ³ƒõÎ&îK«ÃCsŽ Gf“Q-»ä½Üª_q¿™ô·Dª¿5ºtMjû«ÂÇ)ûŠ•Û&|o½1‚E, Æ¥ 1v½ç]ïØó¬ú'ßøZ0 ƒ‘XÈÂèOd_–Ç"–dþ„¸H ´u¬æ—ø�[VÄBMÉq„R p÷aU ®z½Ñz%–*Êòˆ¥…šMÂýß¼‡_íÛ·# NQ~·„,¢¼,…3‹‹‹xôÑGœ‡¤el›Ú¦6Ü?<²ŠÕQqþSÍIJ±ßÊOî6,b1‰I{œ¢ù,b‰—-Ûg‹ü;—Œ9Ü<‚}¹‘ [±$·§qxØñíá±¢4RÂÄ£î¶óØ$îû›ãh,Õ­E,b[süfÏ-cÇ®ä¥�³9åΞ~ µâ†Ö±‹·--¯c±6‚ÑêS‹X¢¢•à/ñÔ}Ó2mÄ¡îïéúfç¡<¿OPÈ™ƒô6†q(mR÷ïv:ˆq¹RsŸ®Ã6€4Ôƒ½A~>r±˜ØS ‰çV£°$ºD5ÕT0)f9™˜ å‹I…dÕ¸¬b}uÍÁEBÜ2œ¥ñQÜø³oÂçþã{bÇ–{#{wûéå*áÂRœGäÿþ¿¬âW^³eâšJeÀ]êH̾2Ô^ZH,7$fe1ùEº®~Dyõ¦Yy¡Y‰YºtMjû«ÂÇ)ûŠ•Û&|QôÔÁ"ãR…'bù¿ý÷~‹Y ƒ‘XÈÂèoPä3´Ï"–Dþ„¸H ´u¬æ—ø�[|&R?ˆ0ˆ«Ö¬»»Å]ú™V&&'Ü_¥=úèØ݆¹ësÛbÍy@x×׿ӧκ/ধwâæ[®ÇøÄ8òD–劗t'N<…³gÏºË MMMiíKû‡Ps*»Ú¬aÃ퇓Áoq1D30M¦¼ùYÄb“ö8EóYÄ/[¶Ï"ùw.s¸yûr#¶>,bInO;2â0ÅäÁÜøƒ‡ðÅÿñê«a±J’ˆÅË;f±kB! ={ ÂH(/&bYZr·êúve<K,Ýa¿2çP÷÷t}³sŽPžß'(äÌAzÃ8”6©ûw; ĸ\)‡¹O×a@š€ êÁÞ ?9 ‹XLì)…ŠÄû«³Q­ûâOè|4š ØBÌ|"f Î8zì©'ûÅSî~­^SúÎüà÷àÀ?Œ§~"”ÿÙßû3Üråu¸lf‹«5üò_Cµ±CÊñɇjxÁÕ5<ûŠðl3µêF¹B°ríµ×ÍÒ¢CùõD?Á%™¼­Q«%rðrB°ƒbü2ñÉÍ^âcDÑSc‹XŒ~‡jÙ ñãÄwýÆ{ñ÷ù¨Ÿ7wqž—b0 F&`! £A‘ÏÐ>‹Xùâ"i,ÐÖ±š_âô×rBí¤{NʸÂþjÖCÁ®øZÚQŒ¹kvÏÎÎâ߸ ;vìÄôô.WÌ‘„•åüÙŸþ>ò·u_l!Ì}ÛóŸƒ{ícçôd‰,Ë]]]Á¹sçœíŒ{“´szÃCÉõ6|h«tE﫨z¿ùôË E÷[Ö,b1‰I{œ¢ù,b‰—-Û—ŸwÖ ÈEÖ'!Ý)ÉlȘÃÍ#Ø—ɰõaKr{Úq‡*O…у¸òù»ñõ¿}2,V1±ˆÏóç–qòGÝùÛaöì 4 ‚V!bñÄ+Þ²BËËËx{®~^Ç"™ÀÓOKúUA¡MõMuO×7;çåù}‚2à@Τ·1ŒCi“º·Ó‘@ŒË•r˜ût¶¤ Ø ì òó‘Ó°ˆÅÄžRøèHŠíïýJm+ñEpF1»Jܸ·[[]ÕÚÞø‡¿3/ú^T­{¼¹©½øÏ/Dýç>Š};Gpúâ*jõ&&vÂÔž#RŽ÷þ¿UÜ| ŒÑkmm£Ü‘‘‘ŽE,âï¥PmÝ'âàL¢ÆèÒ5©í¯ k¤ì+Vn›ð]lDÑSc‹XŒ~ÇŸü÷?Å™3gñŽŸÿigü <r¢÷¾û}!ËK_þ"üÌÏ¿E, ƒÁÈ,daô'(òÚgK"B\$Ú:VóK|€¾±ØÄ%à Y÷LÀBȲ{÷n,--cnî"Ο?ç®?>11á<huŽ¢\i}í aphgNŸÅ/ýü¯áرãî †XÚ§u£ÑZƒ[”ÿñþ|åËwáWíçqõÓŽ" Ë�7Ê…ÿÐ.Z®øÜÊÚŠkÓ¬·^ʉ5ÔÜ©§‹Å’{®ãcc(>T¬L¡8^Bs©õò±ThùQ{¡B[L°!3Bû¸lŸE,&1iS4ŸE,ñ²eûݱDKˆ~¯‘Ö:!Ý)‡ô;—Œ9Ü<‚}¹‘ [±$·§q¨ò’°ÿ¦øægNbþüª•ˆEÌÚ²´¸ŽNpîÜy|þ‹_Æ—¿ú5œ;{fgݵvîØŽééi<ã¶[pÛ-7:/ºjh6~A±gbÛ5»ªØöŒt"–(Ìû¦eÚˆCÝßÓõÍÎ9By~Ÿ  83ém ãPÚ¤îßít$ãr¥æ>]‡m�i6¨{ƒü|ä4,b1±§>I$ÞÝÖP}sN§‚o÷râÏfˆ¼NEÃó³,:ã—•}{qý~/¾ú¶D,×ý(ªíY\ž:·ìÛ-œ}Òý”‰YÎ;÷‡ü¹5¼å¹Ãr¥ñt‚z£²xõçmEOÈ"yÈ3±ÀŠñËÄ'7{‰EO,ba0¶2L´&BÄò'üg~ڳȖ"–¨Ø%ˆùÔ'î|îóÁ`0ŒK,daô/H¶Ï"–Dþ„¸H ´u¬æ—ø�,b»b=ì†óðªRÀÀ»‡dcc£Ášz¬¬`aa.\ð‹™Z¾««køå_|'žzê8†G†”ÅºÝ ‹ø÷¿øëxßûß…™™it‚rO8�‡Üe‘dh6š˜Ÿ_•»zaÅVÚC©TÆÐÐ &vîÄÐðp*µùÀ0÷¯8/ëß�¤Ë aãñ Eö[p:¢%| ç«.±Äö)šÏ"–xÙ²ýnŠX‚å†wHg“”î”CúKÆnÁ¾ÜH†­‹X’ÛÓŽƒŒ8LyeC̾ë¶ãÂ'Ÿ²±ˆÏ•µ*Òàüù øÓ~ÿü‰OºjÉ3ÅCÁbû…×éÓ§qÊÙî¾ûø£ÿN¸ù¦ð½¯þWàâ‰X¼YX¢"–}㫸éE¯GÕi¡Ã~¥îßÑ´º¿§ë›s„òü>Ap gÒÛÆ¡´IÝ¿ÛéH ÆåJ9,|Ðeؘ&@ƒz°7ÈÏGNÃ"{Já“Lâ܇µï»FëUÔju_°âmÞÄ&îKG†‡Ñ ÆFG]N1¶-//¡^«¡\©(í¾ã-øÒÝÇñÃÏÒ.E$Ä,…b “3‡cÇþú®u¼àª ®ÙÓzt:77ç? ÈëkëîO‚B–à6°ÚÞDï˜YÄ;(Æ/ŸÜì%>F=5F°ˆ…Áèwˆñýì™s~ú>ò1÷ÙçÛî­x÷þÝÐL,/{ù‹Ý™XT"ƒÁ`0Ò€…,ŒþÉöYÄ’ÈŸIc¶ŽÕü oD,þúàš¸‚׆‹‹ÙXÄga&8C¼mr7/žºx€çäïÛ{ÀÍû‹~O>ñ&&Çœ‡gúá`p¨‚¹‹‹ø£÷�ÿþW~@”{ìÉ㘜sF&•;?·QîÌîÝhŠ—‚õ:ÊåR&Ó9cŸSGm!Ë@ic)Ñ"<‹Y&1iS4ŸE,ñ²eûúóÎ Ñï5ÒÙ$¥;å ™ s¸yûr#¶>,bInO;2â0åÕaçáqÔ?a'bé¦uIÀ¿~þ‹øwýŽ+B);㥱”ÜYÌ„¥èÿz®)^ ÕˆSÖ×¾~7î¹÷~¼îßü®yÚQ_À"6±”'b™^Çs^öZä¿⺿ЗùÈ8’l4ý=]ßìœ#”ç÷ Ê€9sÞÆ0¥MêþÝNG1.WÊaáƒ.öÀ4Ôƒ½A~>r±˜ØS Ÿd’¼1hŒX[] 0Ä}š7+ËúÚjÇB1ãæä䤻”®¸·=á<vïÞ£õyÙÿø |üOÀÇ>ÿã£^âhþôcÎýx#63‹¸E×ÇWñß~h ë«+îr¶•Ê�FGÇÐ)Äý¹æ úõ%êNäùB–…–x¦T,øu®[NHùè Kפ¶¿*|¬‘²¯X¹mÂw±EO,ba0.ˆq\ˆS<ÑŠø¼ëëßÀ‰§|;±0 #/°…Ñßðo¦XÄ’ÈŸIc¶ŽÕüàœ‰…”ÇkõºûYœE7âÛØØ¸û€LA>üWÁÈÈÆ'ÌÂ5M|î³_r—šÙ½ ià—;:ŒÑ1³s«×ê¡r·oÛŽ¹ù‹È bF–šsñ­;/ݹoÄ4ν`¡Ù^÷E,0ŠI{<Ö XÄ/[¶Ï"ùw.s¸yûr#¶>,bInO;2â0åMÂÔ̈µˆE|Kvôþò¯?‚ÿò_ÿ»+X)·ga/±\1‹+hiýr[œ„“…¦RB¼òûïÿ�^ù/Áϸ%$bŸ“U<ï?’4Šþ …4}†êþž®ovÎÊóûeÀœ9Hoc‡Ò&uÿn§#—+å°ðA—a[`š� êÁÞ ?9 ‹XLìÉÀ§€*ÍÁB{v†’uglñÄâSlž0ClkkkÈ;wL»BÓgNcff·öGÕþð'®Å¾í Þò‡_Źó”¶ªe†;ßÀ¿²Ž;¶ŸðóvìØ‘îÇ&¬,¯„êIpëQÌdº}}¨8ÿûËðÂ]º&µýUác”}ÅÊm¾‹(zjŒèPÄÒõ–Á`tq/³¤±tkI  †iƒÁ`ô²zÉ`ô ü#±$ò'ÄEÒX ­c5¿Äè/ Åü'ŵá×r®5î~aײÄà`‹ï›÷?ä>PœœÇÐà€Ñ655áþúí‹_ø*ÒÂ+wÛ6ór'#å :7$Ù _ÃÇÜ_²‹YL//±À(&íqŠæ³ˆ%^¶lsD,Ñ‚H}(9Ý)ÉlȘÃÍ#Ø—ɰõaKr{Úq‡)¯ GÊb=+‹ø4.ãó_ü Þ÷þÿÖúŵXj -Z[PÐ"fi)—‹þL-Å€hÁÿßÀ]wßš‰e¤\Å ¿ã‡¿ ²†ºoZ¦8Ôý=]ßìœ#”ç÷ Ê€9sÞÆ0¥MêþÝNG1.WÊaá£;˜lËH“A=Øäç#§a‹‰=¥ðQ‘4B„¢sUâ‹åE_ÀÜ<ÆÊÊ ²ÀÔÔ†Û3ŽV××]1‹ žyd_x×sñ£/» %Íø'Ä,s§‰åÿÏϯá­%~Ä+4Y`ai1$d÷¼Áú[\XÂ4ZË"‰¥œXÄ;(Æ/ŸÜì%>F=5F°ˆ…Áè'˜ê=<1‹­Á3±0 #o°…ÑŸðoŒXÄ’ÈŸIc¶ŽÕüà’±¸ç™ÔöíO!ªp§Þ;ެ –ñ©´×ðÁÖºñ‰Q mãã£ÎÃÊî¾ë¤…_îø˜y¹íc¼rÅC¾Jv/àÊ£(lp—}¨·§œNî6,b1‰I{œ¢ù,b‰—-ÛO±÷3G¬Ýb‡’Ór̆Œ9Ü<‚}¹‘ [±$·§q˜ðÚ¾* ­D,ÂvbÊlI…sçÎã—õ?;´z»ø%™x‰è~ !K{•–ˆ¥ä [ŠOÄ‚ 1‹Ãñ¿?ô·Î‹¾³®ˆe Pà ^ú=@ÖP÷MË´‡º¿§ë›s„òü>Ap gÒÛÆ¡´IÝ¿ÛéH ÆåJ9,|" Y¹™`_@š€ êÁÞ ?9 ‹XLì)…O2I ÑWTewLš³³J!‹§–——ü¥w;‚SÞÞ}üäÉDZj8Û‹ˆóW¾ç üãz®¼l¯ÒN&f©9·ˆõÈŒ[-Ó»v¹Ke…ùy·~<!K´þVçæ0V*ºw ,bã—‰Onö#Šž#XÄÂ`\Êb•wüÂÛðÊW½ÌM¿ôå/b ƒÁ`0r/-Äèc°ˆ%‘?!.’Æ¢ˆ+å¹ðL,ñ²Ü%Nb¸„©d…à'·~½V¬8â,^h9ÏŸEZxå ¸¿ 7A£Þp?ƒå’ñoÌPÞ?ˆÆÅç!e ÅÒÆƒÉ¦[R¡½ïõö–ð àÇ‚@\²<±Äö)šÏ"–xÙ²ýM±hÊ Ó4És̆Œ9Ü<‚}¹‘ [±$·§q˜ð¦y1D²±ˆÏ}{'¸ÿè†åÕUw¶£££8zåÂìÅYœ:ٚƹ¼(„»ÌЧ>óE|Û³oÆó_òJ‡Ël9A¨úf!j“”6ê›êþž®ovÎÊóûeÀœ9Hoc‡Ò&uÿn§#—+å°ð‰$ô=l& ƒz°7ÈÏGNÃ"{Já“L¢Æ€óâjݹo-Ÿ9á.!+6!Àðö…àû]YYÎd Ëúœ;{ ‹ nY<ü®¹æZWb‚+÷Œàc¿rÞÿ±ãø¿ºÕõ¸F¶ÌÐc #øÚ…ø‰[" aÏÊò’;Û¨+Ju61fëqõô) 1†G9cmLƒ‚(¡¿*|¬‘²¯X¹åГ|Œ(6!.EXÄÂ`0Ä&Þöö7ãÚ랆½ä,ba0 FîàY} ±$ò'ÄEÒXq¥<±´ý(ü¨Þ¨»ÉâîìD,ÍæÆ~©Òúúo6šÆ3£´8šIH¼r©i^®÷ë½p¹Ù>)hMQ]k//-ac_/T P$E,±}Šæ³ˆ%^¶lß\Ä’mïƒ ò”i’7æ ™ s¸yûr#¶>,bInO;2â0áMûãð¦ÓmD,…R{ „,b政û‡ùÑR;Æ+.¿ £#Ã(•K˜™™Áää¤;cK]¼,tÆq±/D°b¼lù´?[4¸ÿÁÇpýÍÏÄÔÔ6d uß´LSÁÀGÝßÓõÍÎ9By~Ÿ  83ém ãPÚ¤îßít$ãr¥>‘„¬ÜMEš€ êÁÞ ?9 ‹XLì)…O2‰íå^w.žÇÊÊš/Âð6O !¶ùùyd…Ë/¿Â[¿Ë[]]ÁC?àŽ¹6xËöã‹ïyžyÃîK¹(d3³|äñi,¬góUÔ‡¨n¯~„à'XwµZ åãO¡à E^&ÞwéšÔöW…5Rö+·úc’Å&ĥȋX FB¼ò’—¾°§E,,¯a0Œþ Yý ƲG޳ˆ%œGÒXq¥<—~±Pôé‰4.R–UmÔ[qí2[†ÀõFÕß¿òè٠ó4Úæf\ß˯¸ iá—ëp™–+bŒ–[«Õ‘%*û‡—€MÔš­Ù_äÍÏË ™Ä¤=NÑ|±ÄË–í÷†ˆE2M“ü¸1ÉlȘÃÍ#Ø—ɰõaKr{Úq‡ oG+ÉXÄ"ÒWÙé.”„O~úsh4š-!ЏÞÚâ”AgŒj RÅrAåJ¹%b©7Üφ+fi ZÄqÏÏ´ˆc÷óaä‚ûs¨û{º¾Ù9G(Ïï”ræ ½aJ›Ôý»Žb\®”ÃÂ'’•»©HA=Øäç#§a‹‰=¥ðI&ÑC´L¥ýë0­aavÎ`ÈÄ,só‘Ä,&G®¸Ò ,.,âoÞ‡êúº ¦F+øàOß„ßËs1>_Ò7*fYrèß÷©dóçÏ…„>b–`ÝÍÏ/`zî¬k;P²xtÛ¥kRÛ_>ÖHÙW¬ÜrèI>F›—" ,ba0úV|0 £ÇÁK 1úÁ›XŠço䱈%˜GÒXq¥<ž‰E_V½Ùp_>e=#K= þ¸éÆë°²ºŠ³gÎã²Ë÷cÇŽ)­ïÊÊ*Ž=y kkëxúí·øù>ø@â¯ëÄ ¸›nº)Tî©gpÙá}˜˜ÐO/½0¿„“'ÎÆÊmÔ«(Nm‚áƒX,´ë^dˆ‹´\BH²œcS(¨„,b‰íS4ŸE,ñ²eûiD,ÝyA¦i’7æ ™ s¸yûr#¶>,bInO;2â0áMº’P*‹XÄçu7ì3âý̾¡ˆëÎùçÌ™3Ø¿Ÿ³ßDµÖt—Ú3±¸/ðÚ6-!ˆ ¥´|öó_Âw¿êåÈö}ŠþM«û{º¾Ù9G(Ïï”ræ ½aJ›Ôý»Žb\®”ÃÂ'’°ýNÈi2¨{ƒü|ä4,b1±§>I$îðBföbÂÍ핪gN¡~hŸ/fñ¶Ö²9«U,--al,›%îÄìd—_~=öˆ;Î-//ãÞûîÁÁC—açŽV\/½y;žÿžâú >òÙœ1´á‹.3ô‰kxÁÕ5|Ë夅«çæ.úu#¶`‰íÂésxjŽuÓ·Œ¢]loR\“Úþªð±Fʾbå–CLò1¢Ø„¸Y` ƒÁ`0 c³Á3²0úÁ›XŠço䱈%˜GÒXq¥<±$ÇUsþ‰‡[ƒ{â¿ ëN«k«îî®™i9rØÙ䮯އå¥ H7ñ0ò«_ºÕj årOúÍ.‡ˆqqi±E¬ÙªÕµX¹ëëU|õË÷:ŸëÊr××Öð•/ßãþâ<ZnµVC–( –PØ5€¦oƒ¢³²ðL,&1iS4ŸE,ñ²eûéD,ÁãyLÓ$?nÌA22æpóöåF2l}XÄ’ÜžvdÄaÂÛ©ˆE``¸l,bòÈÛo;dÄûÔñÓ-QŠ·µE)>þ$¾ùÀƒxô±'p÷Ý÷`uuµ5K{Fo‰!13K£-b Z×ñã'‘'ìûý;šV÷÷t}³sŽPžß'(äÌAzÃ8”6©ûw; ĸ\)‡…O$aRnW‘¦pƒz°7ÈÏGNÃ"{Já“LGAó2{¸XÄh¥„ʱÇÜ{»¨ Cˆ4Êå²»]˜½€,±cÇ\yåQ§ŒÖ£MqßúØ£àþûïÅÜÅ‹þµ&¨WWðæo-â?¼z¶O…—ŒÎÌò;ÿo+U¤Æ… \1ªW/b‹ÖÛÒO`G¥ˆvÕ'jY(ůêS\“Úþªð±Fʾbå–CLò1¢Ø„¸Y` ƒÁ`0 £À3²0ú±äùdK(¤±(âJy.,bIŽ«ÑlÀ]Ý{¬‚Êø²„XŠ`vvûö¶~þÖŸzþíkßê–ûéO}W9€Ë.?€mÛ'Ptž‚-,,áÉ'NâÁG­Zs|çñ‹¿üÓ¨TZ¿>›››C³Ñ0*{ÖyX·oßþX¹ŸüøqåU—¹³³LNµ„;sñÄãÇñÈCOº#eå–2œÅCyÿg—QmÔ0TöøõB…B,¯žµ¥½£æ` ÷YÄb¼Œ¼@¦i’7æ ™ s¸yûr#¶>,bInO;2â0áÍBÄ"04R6±ˆíškv;/ÚFxÏ:ã…ø¤ÐÚ…¦ûbêÜù (9/ ‹îVp_€Ç› x¥ánä>wyÁ¾@Ñ¿£iuO×7;çåù}‚2à@Τ·1ŒCi“º·Ó‘@ŒË•rXøD&åvi 7¨{ƒü|ä4,b1±§>2’èýŒ­ý`©€b8°|ÇÏ]Äèè¨+ĨV«þæ‰5æçœc{œûºd…©©m¸æÚëñè#`eeÙÍ3¿<ôðƒ¨ ¸Ç'ÆÇ1<<‚A'-ÆQ1ÖŠWWW\[q)ö®žþàÆð¿¿6Žüê4ê­Pgf9³ØÄ>¿Š7Ý™n)àÓ§O…D,¢Ž‚"–ù¹Œ?õF{Ò“e…ºtMjû«ÂÇ)ûŠ•[ý1ÉLjbâRda+‹Xž<ÑÙ³¢Ný™ù‚ *£yÁô±“¥Pþ¹s%÷sï.¤Æ‰ÓEœ?_tžufÿu«âÄ™V]Ô¨õYP(Aƒí+³)X*H¹0ßfò1[,daô%bÈ)òÉ"–PIcQÄ•ò\.u‹{þ q‰›“z£îæw§{(¦ƒø{~v»wÍ ä<0»å¶ðÆ7¿ï{ïÅØø(~èyøXÈGĽ¶¶†Åżìå/Äw}÷+Úù„'îßøõO¸/Ø&*cÒóZ®¯¢Öl`ùGnÁîïÝ--÷ûÃß|̸ÜÓ§Ocûö)dâ¾A4¾¶ìÜÈ4Ð’…oHˆ‰T§Ì3±Äö)šÏ"–xÙ²}±D3)b™ÄáæìËdØú°ˆ%¹=í8ȈÄ7+‹ÀÎ=cF"±Ç3ó.¯ÖQ*”Ý% ‡³Ð»mÓ=‡¢+ti Y ­×‰ÞDaKk™!o†––J6{Ø÷県ú¦º¿§ë›s„òü>Ap gÒÛÆ¡´IÝ¿ÛéH ÆåJ9,|" “r»Š4…Ôƒ½A~>r±˜ØS Ÿd{{1 •œ6+;Ÿ‡JM<øÔqT·mž0òq‹7ëHk¹¼ÈÃCøöÚëpƹO<qêõÖ’º5§ìsgϸ›) Å"vOOãw~â Þz¾†7¾ÿëxø‰Ö¬fA1Ë_}}Ï;ZÁµ{ì«ÎÎ^Àúú†‡‡}!‹X)(ü9yâ4®ZCa|ƒ!K!´_èZÛkû«ÂÇ)¯I+·úc’Å&Ä¥ÈÏÄÂ`\Z°“bl-úùä ã Yý ’ìûy,b æ‘4E\)ÏåÒ±æ8´qÕ¼Nf²ÅÃÈèŽ=õn½X{íë~“x×oý>Μ=ïþJÍšÙ ©Yob½Zsæðc?þƒxÓ[_ç󈇄Ç>ñ€Û¶CåAÿ4üsiWÝ`q�ÕÆNÿë“8vG6åV*ù(’Ž`Î;/ë‰X¢ûÓ‹X$ÇcÝ€E,ñ²eû‹X‚ûy‚Ti’×úÓ$³!c7`_n$ÃÖ‡E,ÉíiÇAF&¼YŠXÞn$bÿÝ|ý~c^"–BEL¯‚BÓù6hÏÈÒ:‡JÔúl6fdñjIœck!§ÔFKȲ!fibç®~Æg¿I:8x*}Ôý=]ßìœ#”ç÷ Ê€9sÞÆ0¥MêþÝNG1.WÊaáI˜”ÛU¤)Ü ì òó‘Ó°ˆÅÄžRø$“Ä!^þHïã%)1=XÆðScõúk044f º³kŠÙ6ç.Îb÷î=®€#Kˆqq÷ž=˜ž™i‰WÎu—â3…˜%F,U´{f7[÷·GfJøØ¯Ü?üØ ¼÷Ãw¡º¶³¼ûã«øo?4†rÑüMÙÉ“'ݺðD,¢N‚u%–à­=ú0ö{éV¯P¾ˆ3iÇ>Q{mUøX#e_±rË¡?&ùQlB\Š,ôƒˆåÐ>³Yƒ£ð~ùžÖŸù˜OÓY<¾ƒ{¡übÃj™<öín¢RlbzÚáÿvÑzF‘­Ù9î›iÕóž=˜Ø•µo'3²pÿ`¾Íäc0ú,daô7b^XÄÌ#i,ЏRž /'dׯIÔ5wªãÒn³el!*žuê=s»œ‡|ßý½ßç>ïYø?þa|úÓ_À±cO¹b’={fpdzŸïûþWáðáƒ>ÇüÂ<ùÆXúÚYܹÿfìšlýLqÏ­-âëÇÄcŸ¿£##•{êôIìÙ½y`xÿ8æ·„5÷å#¡¨8„óƒB{G}³ˆ‰û,b1‹_]FÞ Ušäǵ>Á4ÉlȘÃÍ#Ø—ɰõaKr{Úq‡ ¯‰ˆÅ¶ßì?´ £ƒ¸pqY)bKíß?…íÛÌÇófQ,¡×tzµŸ¬oÄ'þ. ¢ûéÎÆ"–ßjÊÖŒ,íYYbbÇpï¾lý…¬ ÑãF}SÝßÓõÍÎ9By~Ÿ  83ém ãPÚ¤îßít$ãr¥>‘„Y¹¶ß MQõ`oŸœ†E,&ö”Â'™Ä̾àþÍIíý0ÍP±ˆ¡RçÎáÁ§Nctlëë뮀E| ø³²áƉ'pèÐ!ä± Ÿʈmum‹ó X^YÆšØ_Z }qlÛæŒçcc˜ŸpâS¾zý‹öáûŸµ oø£ûðÅ{óÅ,áþâkëøÁÛÌ~„"îýÙX„˜El+++n‰MYŽ?…É“Obz ¬_V(ÒŽFïÒR´½¶¿*|¬‘òš´rË¡?&ùQlB\Š,ðL, FÿÃ]Æ60`LNŒaéÂ:úâƒhY1 ÆV Yý Š|²ˆ%”GÒXq¥<±XÄÕþËð4¨‘½È ;¶ïÀSÇa½ºŽbZgç&fçô¼é­ÿÖÝt¸pá{øa<ù¡{±wxÛÆQB ªëX,0éØìÝ…ûÿê íM]îO<ŽééÈknÈb¹ˆâÌ0pªæ¼øk è<8Œ6[ô¡-ÏÄ"9NÑ|±ÄË–íg(b fæ�R¥I~\ëL“̆Œ9Ü<‚}¹‘ [±$·§q˜ðÆ®‡ÐÏËÕyI(– ¸ýY—áïþö¥ˆE|îÙ3i̹¸²Žå}©mHÑù§YuwKTh/+Tp<Ü¥…9W!`q>ÝòÛ‚–†³/d1…Üùìg"7Ⳙ_ªûw4­îïéúfç¡<¿OPÈ™ƒô6†q(mR÷ïv:ˆq¹R ŸH¬\™UNHS”A=Øäç#§a‹‰=¥ðI&éܾÐÖU;cãáÁîø›X=´7$bñ6!Üh4˜Ÿ¿ˆ¥¥íGžK‰Íý÷~ÃŽ”J%\yåUÆ\S£|ð§oÂ?Ý}?û¯úb–ÿñù+ñ­G°ª¨õ¯;ç}âøq_ÀâÍPã XħXZ÷ÌÃãYë ¨ a°¨XVˆZÂ"+¤h{mUøX#å5iå–ÃuŸäcD± q)²À"£¿áݛժug|®øù;·M`¥ºˆõ:a°œÏ³ÖÍ‚8§“Cî9Q­ÖÀ`0Œ­²0úùdK(¤±(âJy.,b±ˆ«ýéþjÚÙ/N ¢<\A^í¦wM»ë“¯,/ãÀƒÕÿb\<X;~üÎ>‹'?tèì:ž¶ï2TÜ_ë¯ãR¡ˆ+Æ÷ãäÒ9<þg÷�¯)Z—;;;‹;wº@óDùÀ ê§j¨5ë(—6Ú@Þ”…àáýõeÌ"$Å,~uÑ:ȤJ“ü¸Ö'˜&™ s¸yûr#¶>,bInO;2â0áÍc&– žýÜ+ðO»kËu©ˆE¤›%<~â‚PÈ YD¡ÔpÅ*n?§¨ÑD±=K±¸±¬Pk݇VëŠób ÎÊ‚ÖRE…Ê0î|ÖmÈÉÌ+Ñ´QßT÷÷t}³sŽPžß'(äÌAzÃ8”6©ûw; ĸ\)‡…O$aV®yîiŠ2¨{ƒü|ä4,b1±§>É$(tP†g6Z.b×@ûÏ=“'Ï`xd($bÛØØ˜/f9~â8®:zuW—5³“zB–Á¡tKù¾äÆíxÞ»_€wüéƒøÈgpóÞýÏWã½ß3¦•–;öDm…,‹‹‹®xElâ¾÷䩳ØñäØ7TÁx¹5­|¬zºtMjû«ÂÇ)ûŠ•[ý1ÉLjbâRdaSD,]^ Æ.,,aïô¶PÞÁ™qüÛ?=Ý%ç¯Ï;_µ›_üëY#»Z8½ÐÀá=ñ‰^˜_ƒÁ`0¶XÈÂè_ø7F,b æ‘4E\)Ï…E,&qÅŸÂÔu÷³¸{y£ä¼,s^‡¹ËõÌßw/Æ'ưmr»;µ²x¨&(Š_†­­­àâÅ9,8v+g–ðä_އƹ<gÏ.Âô:.ËxæÌ øä‰¯àá?ü Ö¿ç§ì£rÅ ¹b¡”»ˆÅ­—}­PmÖ1¼¾ÿ¹!\QÏÄ·ìÍ»/‹X¢ûr?±„ò#u7¢ß¤³Ñ¥IfCÆnÁ¾ÜH†­‹X’ÛÓŽƒŒ8Lxó±ŒᕯºÿãO¿ ±ˆÏc'/ó}ä3÷¡IÅ–EˆWœ¼¢ó_©¹Þ³ÔÑ,´—r5.a1¥'bç.–¢Â€+b!gûîW¼»§óØhÚ¿ã—Ülúfç¡<¿OPÈ™ƒô6†q(mR÷ïv:ˆq¹R ŸH¬ÜN¿%,¦(ƒz°7ÈÏGNÃ"{Já“Lbf´,º¼P3àRvrÆÊ.Õq족ºoÆŸ…ÅÛÄÒB"OY„xã䉨·?º…¡Àì,Ã)…,ƒ•~÷ǯÆkîÜ‹7ýÑ×ñÉ/?€^{^rü~õâÅY\œu…4^,ÞvêáÇqÝÂ9ìÜ6â.Õƒ¢UZ ‚ÆG Jè¯ k¤¼&­ÜrèI>F›—" ,ba0.-<yâöîÜûJ– K ô:„8ÅRQŽóýóÔ©ó`0 ÆÖ Yý ÿƈE,Á<’Æ¢ˆ+å¹°ˆÅ"®H½‰e…êÛó›¥UáÜÙ îDñšL2{úæP(ÆÖ*Àê©%\øÊ ,Ü}CÎ ¶gî¾;†§6Î%ð&¼Ÿóß®µ÷…ðå9{nÆ—ÎÜ'ÿønŒ\½ÓwìÇÂeòr×çÖ085ìÆ(~Y.bžÙ=ë¯öJû†ÜëT÷Ã~¶öÕ"hìÍ»/‹X¢ûr?±„ò#u7¢ß¤³Ñ¥IfCÆnÁ¾ÜH†­‹X’ÛÓŽƒŒ8LxÓˆXÒöç>÷J|å®cÏ;ãŠYîݦå9}~ÿë#_vÆÐêÎ8‹f­5Ö•„ ¥ˆAMç!5œñPÌÖ"^6#çàŒçŽ¿°§‚˜‰¥ì~ŽŒNàMÿæÕÈæý;šV÷÷t}³sŽPžß'(äÌAzÃ8”6©ûw; ĸ\)‡…O$aV®¾½3Erƒz°7ÈÏGNÃ"{Já“L’}ÐÌ»+—qpx�ûÎ<Ž'¿W]²xb–¦3–Í^¼€ÑÑQLmÛ†n`( ^ ŠZÒâ¶+&ð…ߺïú¿Oâ7ÿê<ó²ë15¾W±Dnpfq?î Y¼íñ'Žcòñq…Sb6–¶fÕG!PáÆË ¥h{mUøX#å5iå–Óu¯ó1¢Ø„¸Y` ƒ±5å3ÐùÅ<yv‡fò]Ú¯Wñä™Ì-ˆY §ža0 FO€…,Œ>‹X‚y$EWÊsa‹E\’zk!‹³¿2Ô@žòÄL'bÖõ k¸ï?‹b¥„mûv``|ЖÔk¨ž]Fc©†b±„]ÃÛqýŽ#¯Œ íu<^ų÷܈{fÁŇpæ¡Q.¢23‚ÊÄû°®¶Tżóâoe~—}ç5˜~FëWz"æÙ ±cg~¿*¯ µ^ 6IÕ”aá÷+7õi³ˆ‰û,b1‹_]†®ò@ô»‘t6º4ÉlȘÃÍ#Ø—ɰõaKr{Úq‡ ¯=´B®ãð~UÞIËü¼ùwâ—þÓßá‘'·D,Þ -¿öÅ{ùÕ’‹T/:Ò~ô?ü9–×ܨêg,,5QrΡÑ,¡X*¹"–b¡ê YÜͽpƒB–‚{ÎBÌB®˜¥µ¡4€ßúå‡éSÈÁï(/]PôMïAlRO×7;çåù}‚2à@Τ·1ŒCi“º·Ó‘@ŒË•rXøDfåêÛ{ÓaPöùùÈiXÄbbO)|’IÔpÅ(ûè¬,1ZÚ`¿~Þ9XÆ¡åœ|øÌÍìð,A!‹Xbȳ?ñ††G044ˆ¼¯ u0#K?óÊCxõ3×ðÉûçðªÛ6îäÅGyôaçï…¢/bç¿´´„ÕÕU_IJ´¸„Ó>‚[æNcï¶a GgcéÒ5©í¯ k¤ì+Vn9ôÇ$#ŠMˆK‘±0—¼û°ŸšC±\ÁíC0ÕEny8ß?O9Ͼ<>ƒÁ`l=°…ѧ`K0¤±(âJy.,b±ˆKVoB–ÖK©eT[Ë鳿£X\\v”-odT‡kÿûk*T0Dƒhw¨aÕQ¼ˆÚ><ýc3Ø;º³ýë¯s)´÷ ‘—Všë|Ðy±vÛÎkpvuO-ÁÅê"ÇVÑpÊõÜF0ˆò@'þþa ÏŒbìPëà²óPt`p�ããcÈâ—q«Õ5”°ñ#|áeBçÈ.?dÞ}YÄÝ—û±ˆ%”¯©ƒ<ýn$.M22æpóöåF2l}XÄ’ÜžvdÄaÂÛÍ™X‚ªà?þÂËðÎßù¾zÏS±e†¾vÿqüÈÛÿ~êß<ϺõrÛŘÿÑÏ=ˆ_ù¯ÿˆãgæ|¾&Ѝ‡!D)%q‹•êNº‚b³ !`)¸³±.`—²Øš¥-f)”ÊøÅ7ý¾í[nBžŽ{^:š)¯wuO×7ÿÿìý¼-YY&Œ?µ÷>9ÜœcßÔ};ÑÝtÓ l@E1!Œ¢#˜æSfþ£ŽY盿fFQ% ‚ HNMèDçps¾÷ÜtrÚ{¿ÿŠ{WX«VØUçœ{ú}ú·ûÖZë}Ÿ÷]«jU]õìUs$êZs‚ à@É”o£™‡ÔÆz~‡åT"Úq…>©‚^Üüý½èÐsƒò|Ä4,bѱ' 5IQöNËØiÍ-§%xñVÙ5ÐSgá™g·bxÅjµ_ÀQ­V[Ÿ¾¾>_Èâ};|ø�öìÙ‹®®r_%ëÅŒP¤Åî ½þ'‚ׯƒ‡b~n®õJ!ïã X"K´ýÌ3G°íèÓØÙ[ÃÊ®jò¹"%¯³éÕX„?Ô'Ãg“¤˜¯cX“Fn¥÷r-ŠEÈKR±0Ïmx×§gNMclš°eu7z*¨U”¸øõ¢Àû›¤îÞ[Ÿœ%œ¸8‡³—¦ý¾G­t³ÜÆ€Á`0– XÈÂXž Á6åµ³ˆEÞe_XĢΫu»O4n)ÿf³ñ±1¬X¹Ebff—/]NÔþàwÑ5ExÉöú×&æ¦0SŸó‡²»Ò…Á®>_xåçxË/ZÇNƇü^Ö¹Ÿz³Žñy7ncΓ®ª·Ö.7þ}çÁ¡¿{ ×üÂmè^ܼ|iÔ½ Ø…žžbµ7::ÖJ¹}{6JYò:!éáÀ"(·YÄ¢—¿<†| JüöMÂMi°L"ÒæðëæqS¦>,bQïO3ÒâÐá],K„üáo¼ïûзñþ?€F#¹2ËÓÇFðóð¬ZÙ͇qæÂ8ÎNalbZÈ×@TqðUj¨5gÝjó ÷oªz¯ª‡¦Ö™B‘©'dñ-ƒøÿ~ûçðâ;nÀBB>¿Óeù|·››s$êZs‚ à@É”o£™‡ÔÆz~‡åT"Úq…>©‚^\ÊåXthŒƒ¹Ay>b±èØ“…š¤{ñ¼HþÝéýcs_¶OÍáüÑ'qlýìܹ9!bñ>Þ*%Þ÷9ï¡’÷úC‡b÷ž}¨U«( ^ÜZ­ õú|!¯ÊÃáÇ059á÷ѰxÿzýŒÄ+‘˜åô©³˜æIlšºŒ]kÐS VcqÒ_Hua±ïsç«ÄÇ–Ǥ‘[IÇ}žÅ"ä%©ÂR±,…Ë*ƒñ\ÇøLÇ/z¯œoÀ‡=‹ÅÀ£'úaƒÉó>2 c逅,Œå Jý+Üf‹¼ʾ°ˆÅ ¯L| -‚×xbO(Ò˜­cllýýþÌE QoàüÈ…–úÜ»1vös1}t ÷n¹=Õ ÎªÞaa_Ò+±Dõ”hts'öø­æ>¨[Õ3–BÑAè{ÛºkñåSààûÁ¾Ÿ½Õîšß‡‘s°qÓ÷Fd17:ççæ1îŽ9š‰49%êÃü2+´Äû¨ËÛfKz[ìÇ"–D=iŒS‰ :a™D6¤Íá×Ìã¦*L}XÄ¢ÞŸf¤Å¡Ã«#bIÀ{¥G­sñW­ZÁ›~ü|ï=×à=øþå¾§QŸ Ä,Ñê,§/ŒáøÈe¿¬B°îJš¾˜´î>ð#¿¦Bs¨6§Ý¿(™¿Û/ï¡à½ôü‡Ÿ5Ö¯ÆB ñª ÔÅ\7åóÝnnvΑ¨kÍ *€%sP¾Í¢Íï°œJD;®ÃÀ'UЋKÆ q07(ÏGLÃ"{²ðQ“èÛË´Þi½·#'œ7NÂ'Z•¥ß½&^3܃s#§ðÐ3ÏbxÅ@FÄâ]+¼Oôã_ÌrðY\uÕÐ×׋™ÇÏ£ ø+Ì9ì~Ÿõû}êõº/^™ššjýëýâÙ'àºÓ‡±o°+º‚œâ"Ó•UÌ’UÌW‰1,I#·æ£ÊG‹bò’TE, Æ•‹Ó箆ã^;½•»ýkèÜv÷Zq£¿í}æÝkŒ'Òœ©ŽaºoÜ¿æDuÀ`0 Æ• ²0–/(õ¯p›E,òv(ûÂ"ƒ¼Dã–ò¯Uº0ßœCýÂ4h;02r7®÷¿”toÉf«Ùl?8lg¾q·o¸+{†’©›”™¾ ºy‰Ü× µä-1µGú•=ŽD�á?“sÿñVe¹uÃõøê©qâŸÁöÞï~ysü¾œ9õÖ0>„‘ üý272~÷Îa­R sª$ºä´ú!~PG©›¹Pn³ˆ%½-öcK¢ž4Æ©DF°L"ÒæðëæqS¦>,bQïO3ÒâÐá-b%*xÒlß¼ðk?ˆ·þÜ‹ñ¹ûžÁCOÀwŸ9…‹S¸46…Ë“Ól>8¬¡Ùº÷  îƒ@Ô1Ð×kWbÛ¦µxÉí×á{_x6®[‰…†|~§Ë­+iAs³sŽD]kNP(™ƒòm4óÚXÏï°œJD;®ÃÀ'UЋKÆ q07(ÏGLÃ"{²ðQ“cOÂB¾ÄbCOvtcêä“xb`·öeD,Þg`` !f9pà\uÕôö»úfo%§¤wxßQ:€‰‰‰„ˆÅ«÷„+‘ˆ%ú<þسØ~äIlqêØÕ?€ª“?Wr_+Dq; b¾J|ŒayL¹•tÜçùhQ,B^’*°ˆ…Á¸2 Bƒíö¼=vúzÿ}™O5øwºî^WæÝOÕý „יƴ_ÏB–|”õ7ƒÁ`0Š YË”úW¸Í"y;”}a‹A^¢qËø;èv¿€LÏÏaîÔp3PŸ¯û+¬_¿ÖoØÀi¸sss­ºúÈ4}üQ\³j;¶ mHþô.ú”×`;¾êŠÖqŒl»÷ÂVï×jí°ñ‡üÉ»p+ºqËÚ«ñ­‡GßÖ!¬¿c›ß477ï¯2³vÝk1‹wSñÜÙó¨ÏÕýòıQôcÀ_%&-<ˆ‹XâõHõAú²ˆ%½-öcK¢žÔão/¤Q',“Ȇ´9ü:‚yÜT…©‹XÔûÓŒƒ´8tx)v½"Aÿu8â×wïzЩ02ŽC}øWßÿ<ÿ³\Qo4çÅâq—Ïwc17³ÅÌ+*€%sP¾Í¢Íï°œJÄfn²ˆ¥ƒF•¡Ay>b±èØ“…šÄÎ^&Ê÷®5ÛVe|¢‡pž(ãºá^œ97ŽÇÇÓC¸îºÝ Kôéïïo‰Y¼ï­ždÛ¶íBÑèíí…¦Ôó³38xð æÝïó^ŒèuB ÷Z‰XâŸgž>ŒÞCOcÃØn\3€ÞjøJ¡§v–û>w¾J|ŒayL¹•0U>Z‹—¤ ,ba0–Á ¡åÆC៭`¨G½Êh‘›+)XìÂ`0‹‹Å»0eƒò¶YÄ"o‡²/,b1ÈK4nÿpYåj·ÿNñʱiÌÏøÍÞ¯ÒΜ9›¢èÂ{]ΙÓg}ŽfêxöoÀ¦žU¸vÍ®ŒˆÅ ÿ‹÷Å[}E&bño>"v#Òß®´xœÐ?ÝíÐ9¶¤Û“"ïûÂæ ¸fåNœüäŒ={¡Ý™Yœ=sε˜ÂÛÓçÚcëÆ}ð¢¿Ù[íÍæLy‡1‹X Üf‹^þòò1X‹¤S&‘ isøuó¸© S±¨÷§iqèðj­Ä’ºÙ¤âð@1Ì0==)™ßérx¶uœ‚æf牺֜ 8P2åÛ,ÚüË©D´ã 9 |R½¸ḏ Ðsƒò|Ä4,bѱ' 5I1ö$,ˆæ$áwLïC·­êÇú±ôyÏ>sÔýþ6“tLNNúï5ž�ÄûT]¿£GãÔé“…?ìócôõ¢H\ºtO>ù$ ž€Åû7±D}Œú|øÐ1\|ö vž>„ýC=X×£~•’t5JÛ)@Šù*ñ1†å1iäVÒqŸç£E±yIªÀ"cécAD‡xt¤¼W�ÊðØÙ…É`0Œ¥^‘…±<AyÛ,b‘·CÙ±è䕽 ãUµ–ˆ ëJ>¤÷nNõÖz°ª6ˆ‘GOaÓ‹vùMóóuœ=3‚> £«+ÿÔí XÆÇÇ111•¨¯¸A~àô̸7·_‹Šã$rI÷Åñ´Ž‚ñòo¢9²1ï—èBÑ/÷ÚCè´nÂ5c“‘b¢ê«W^…±ùIúàØÿ‹·¡gUol|Îa`°CƒƒèêîRŽÏØØ„31Žéc¨^ ÔVÖüYT" '•«þôeKz[ìÇ"–D=©Ç)Þ¾ 2‰lH›Ã¯#˜ÇMU˜ú°ˆE½?Í8H‹C‡×öuBIݦƒtv—Ç.£¯¯ }Œ\I”ýqvÒç=ù|·››s$êZs‚ à@É”o£™‡Ô†í*ŽT"Úq…>©‚^\2æXPhŒƒ¹Ay>b±èØ“…š¤{‚_‘·«£UÑòœ7ôváÆ•½˜?s�Ouõâ`W»woo¿¦Õ[¥3üD+³xmÞ*i—.^Äôä¶lÝ^Ø«†Š|µ'\9~â8._ºä~GïòWa‰>Þ&¼W;Ä;Þ¿'ŽŸÆ±§ᆣa[Oû{[ßd«±8²'û>w¾J|ŒayL¹•tÜçùhQ,B^’*°ˆ…Á`ÄQ¤^æËG‚û±7¬›/}eoõO8óå£^Ló1Š ú;€]a0Œ¥ ²0–7(½Í"y;”}a‹^^þ ½¸(Cê碌ú°~p|ó1¬Ü¿}«Bò…)ÞÇjôõö¢ÖUsoðUÝ?¶É½‰ÖÄü\ÝÿE¹huïò³ÿr3'ÆqïÖ›Ñ]éjåšîKp£L0ÆÞ *–ÇqòæE´uûAb@Œy\Ðj/[í­ôróÚý˜<ýþí#¸úßÜ‚jO­=>ã“þ§ÛŸÞp|¼_óy"f³áÏŒ;>ó¢ñqýÿãÓØÕ· C݃ɜ“É're‹N ±èå/!õ¾( ¤S&‘ isøuó¸© S±¨÷§iqèðÚŠXò8¼k QgϞǺ5ëP«ñ/½tàý½qâä©°T‘Œ{ò(pRæs3[Q̼¢8P2åÛ,ÚüË©DŠ˜›Z>©‚^\꘣ThŒƒ¹Ay>b±èØ“…š¤`û„ø O\Ìâo í£qxu× õá‚û]ŒN<Ç«5ïîÆ¶m"ïã½æÏûôõõùBï3??žÆÊ•+±iÓ÷û] ×Êt¾8õåË—püø±€Óýî Yjµš/`‰D,q1Ë©SgñìÏâÚÃ`Ms/X;쿂ɃLÄ"‚Óþ¬Ïs"Å|•øÃò˜4r[Ðã^XÔò)Ü^â£Ü¯KîÁ`0òÐú$°à¯!ÒEýOù…Ã}þg9‚_%Ä`0K ,da,_Pz›E,òv(ûÂ"ƒ¼Dã–ñÏæýÒju÷06õ¬Æ©O>‰?vªÝÉSµ'Ę7|•ÎèÃgpæ¾Ã¸}ÓuXÑ3Ø^%ŸœL_œpÕJß,£–¥ò8AtÃÎI<ò ÄD"͸gÅ÷èªtáùë¯ÅWO=„#»^·?s#Òò˜¾jèÄçŽÀ¹�lظֽ™Xmå+âh²Â äŠXÄ’Þû±ˆ%QOêq’Å( ¤S&‘ isøuó¸© S±¨÷§iqèð–!bñŠ•Šƒf8wn7]ĺµëùÆ•õF'NÀÈ9oå·~8•äuX5ßíæf牺֜ 8P2åÛ,ÚüË©DŠ˜›Z>©‚^\꘣ThŒƒ¹Ay>b±èØ“…š¤{Ú×Åø6‘sükc\ÌrǪ!LŸEóøcx¬Ró*»vmˈX¼÷JOâ Z<áŠg;66æ¯:ºÖ½N¯Y³Æ¹ØÀ»fu²ºËåKqæìY_Ðé‰W¢'bñòž˜˜h Yâb–'NãÙ'âšÃbÕÜîY;„žJVÄ’É7Õ*±ä‚óUâc ËcÒÈ­¤ã>ÏG‹bò’T኱,èÅ•Á¸ò±þ©QT=§{½©Ôj¨TÝO­ˆ>Ý C×Ü,úfç0?3‹ùú¼ݬÏ7Ü;nŠà]·ú;s‚þÞÏ`0WXÈÂXž ô6‹XäíPö…E,y‰Æ-ãßΫõ 6Š˜Ü/ î’ë×íÂŽ<ˆ“Ÿz[_qûeÅþ—g“Oàð'Ç k®Â¶Á ™\“«²D,1[¿Þà8¦6«¿íýÛ<äÏZ|c§½ÝŽŽá®!_ÌòÍG¿‹£½5lå^ë™F¾u'¿rwl¼ }µÞÄñåcy‹…b[€E,Y±‹Xõ¤'YŒ²@:eÙ6‡_G0›ª0õa‹zšq‡¯êxð®!ÍÌ(!ñ´-Ãá·5Q«õøÂŒ'9‹®¿ sósîMÂj°6Y¥ê ]áø¹ãåéåÑ˨»7HŸ|ò¢;Îýèªý_ Öm¿ðßÖMÂÌÜtd~'êZs‚ à@É”o³hó;,§ÑŽ+ä0ðIôâRÇ¥BcÌ ÊóÓ°ˆEÇž,|Ô$ÅØÇּ͜È^Ób–ôФ"ÛšûuÍo|îÜ®=öžpÛžq²íÝ·#!dñÄ õzÝÿxb¥M÷¡÷ñÌŒœõ?kÖ¬õ?^}Ùðòò^stöÜY7‡9_¸â‰l"‹'¶™™™i}âBïsìèI~úö{«§Æp÷Ú÷;­øû}reÁß ’})ýk…óUâc ËcÒÈ­¤ã>ÏG‹bò’TE, ÆÒ‚îŠ**»Í^†Óã~çêé†ã^wP«z¿ÈÝk”û…ä^#1;š]¤Œ øï³Ón¨þn,(¦Šy«ƒÁ`0®@°…±¼<ňmƒE,R~À"“¼Dã–òo½W\Á?ØÕÛ7ïÇמzG¦ÂöW߈ڀٷ¯7çï;Ž“Ÿ{†7cÿê«2±D"–ÌÃ&jó™Çâ.¶oÇ5íþÃÈøk™<ë(èa¤ûÙз7¯¹÷ûQÔÝo3W½úTûÌ.iÔhâägàä×ãÚÕ{±Þålݬ%ù¡…pýéË"–ô¶ØE,‰zR“N_ʉÊ$²¡|ŸtA'ƒÌ}XÄ¢ÞŸf¤Å¡Ã[äJ,‘¨2~\vuõº¥fðä£pòÄe¬^½M÷!ÚÔÔ$&§&0çÝŒà8’Û€b—«L};QŸýãäƒ,GÒ’ÝHU 2Ô·Úc¿NóÐõôD»üëñéÓcxüñqlÜXõÇÐC|\“[í ó¹Ù9G¢®5'¨�”ÌAù6‹6¿Ãr*‘N榑Oª —:æ(ã`nPž˜†E,:ödá£&)Æž„͇_ûÚ×Û4z܇n/]·Ÿ;7Š=„§êóx¢^ÇÕW_å X¢O$dñ„+Þ'ZÅ­Dõ.œÇÈÈ9ô÷`ÕªÕîøµC‰.¹'(o˜K/àòè¨/lõø£<<K$®ñV]™uÿ^H Y¼úCãô‘¸öÈcžÅÝk‡°®»ýäp%Æ"I1_%>ư<&ÜJ:îó|´(!/IXÄÂ`\9P WÒ¯r¼ëFo/fqz<!‹û©†B–†'dñD,UÿÇÞ«Ó)þ×N]nવU7…¢™Åh4ÝïŸnÌÅ€lÕ^Í…Á`0,da,_øð±ˆEÞe_XÄbWjÜÒ+­ˆŽÇh;ý ¶ÈwÃÀܾéz<xâi<óÎo`Ã÷ìÆêçmSË_}ÄûczúøNîLŸÃÞ[qÓº}‰\œL.NP[R„Z¶€(oK¼N(h‰å–ºD¿ôÇjÛÐFw·yâ)<vì;Øú²]X}ý:8UÅê,®ûÄáQþÄÓ˜»0‡ý«wcïÊíÛ®±Ýædúâê"[‘ E,ém±‹Xõ¤'¾” •IdCù>é:‚:N™û°ˆE½?Í8H‹C‡·¬× %g•ƒÞ¾è[‡ÿû®¯à×þ+°cûZ0ä8qü"ÞûÞû10°Å}¸¸ѹÉÉ™ïvs³sŽD]kNP(™ƒòmm~‡åT"EÌM-ŸTA/.ÀQ"4ÆÁÜ <1 ‹XtìÉÂGMRŒ= Ùï=q´²I â¾ñr½U/Y7Œ/ŽŒaÿ±GðL³Ž‡&gpõ5WaÅŠ¤%.féqÞy¯ï‰„$‘·BÊ©S'pò$¡Ç}È7Ø?„þÁôõöùöºð¸<ñÉääDðz ©I?ÿ@ÌÙÝZÆ+G‚šÉÉI_À±DŸ±±q<õÔaÌœ=‡Ž>Š¡¹i_IJ¡GOÄ’y¥ä¶‘b¾J|ŒayL¹•tÜçùhQ,B^’*°ˆ¥£';´uêÏ|Ì—†L°"ªOóŒåUîõ¬â~œÞpUïúV m½ÕXæªÁk×=‹{}D£Ô»Í'ÏVpáBóMϾ1Èô\Ïœ% ÷VÐ]òÓÅ9·+c3M·;ÅDNž­ú÷Îç)»ÿâo)dáùÁ|‹ÉÇ`\É`! cyÂÿÛ†E,òv(ûÂ"ƒ¼Dã–ño畹éGYዯÎo¶­GW¾{ö�.þ.|õ†®ß€Á]«Ñ½z�]ý5…šo`nlÓÇÆ0öèYÌžDOµ Ï[·»VliÅõ%ø²ƒÌx9Çq|õd7[ÛþCþØŠ*@Ö¶GÄWnIùÅ-Û7¹ýìÁ“—àÔGâÌ¿Åêç­ÃàžUè^Õ‹®÷F!5ј'Ì]˜ÁıQœà êçÝ/[½¸vílÜr'E,Ù\ØkDíém±¤·Å~,bIÔ“zœtúR&HT&‘ åû¤ëê8ydîÃ"õþ4ã -ÞÂD,NòúãÄÇ2ü%\Žnܰ‡Ž\ÆÿÁ?àž{¯ÁM7oÃÊU]`˜™™Ç±ã—qß}ñÙÏ=Žî®AlÞ²Çÿ"æéýzŠlʘ߉ºÖœ 8P2åÛ,ÚüË©DŠ˜ßZ>©‚^\*€caA”ç#¦a‹Ž=Yø¨Iб'a!¹º—Œ*Ýæ$¯²b1‹ûé¯VðýëWà«ÆQ9ö8NLãÑÙYlÛ±Û·oj‰W¼ÏÜÜœÿ¯'‰Ä,ÞÇÛöVE‰¯äâ}.^ÂÅKü×y1»ÜïÒžð$XQ¥æ¿’¶á¶yúnBºËíÆðVcóÚ¢O·Ëï‰Vâ¯ÞËǺxÿzŸ¸%úwäÜ<õÔ \:‡ëO<¡æ¼ÿZ¥5±§}&"–ð}b¾J|ŒayL¹•tÜçùhQ,B^’*°ˆ…ÁX­ÒÕÍt;î½a÷ÒÝå‹Yü× u…ßU½W UBßzNݵ›«ê LUƒŸF¯Ë­€ ›Žž°äâäâ¬’Ò *|Bb0Œ+,da,S°ˆEÞe_XÄb—hÜ2þÌøƒmÿáKººgîÚú<<{ñ8NMœGýáK¸ì~3ÊôÅ[dóÀZì[µ +º‡¤±ŠDÜ¢È+q3¤¦á¿¡“ZQ%aKñZÒ+·DÀR~!ßúþ5îÂÁÑc87uã÷]À˜ûÉä>esoAbíÀì[yúj½a{VÄ‚D_Ô‰äp°ˆ%½-öcK¢žÔãdº/ЉÊ$²¡|ŸtA'ƒÌ}XÄ¢ÞŸf¤Å¡Ãk#bI?NS­ÄÒ*…OÖ*N;¶Ý‚§Ç׿z_ÿÊ‘ Çìܤ{Ãn¯~í5ؽWoÕ–ÑÑIüÕ{F}Îqº f‘Ù¬ò[H÷8£¦û@mʽ×ÙÄÏþÜ-yö<>ü‘§P«v¡«»?I^GûûÖ`ÃÆëÜb5¸þå=?ñæ¦ày\H¾ØÌïD]k̨�”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8Ô±Ay>b±èØ“…š¤{4ÿŽ”Äȳͻ܇jß³vߺ8‰êÈ OâÙú<ÆF'°k÷ÖÖj,‘`Ä®DbOÀâ‰Y¼½·J‹'\ñ„,Þ¿ñ÷}ºîòg[ £dxÿöx¿rwÿ Y¢'`‰„4qqM$b‰þõ,““8rè$Î=-gbÛÈ1¬¨:¸gý0b«†šŠXò~ôíö éY&|ŒayL¹•tÜçùhQ,B^’*°ˆ%‹[ì¬G¿|·õg>æ“AgEß`Ÿƒ¹Ù:.÷Ïa RƒS«–HÌâ‚fÝë‹'Þœ¯»Oúj JµõÚ¡Ësغ‘°b°ŠÁ&ºç1ç6†Ü1غ±Ë÷¬_ßÈ\c½¿âû£ˆYx~0ßbò1Ë,da,_D_”)[—ØfKò¦¶ÒŸE,¢vÑqæ#ï?7K½;'¹*KxcÍû×û%™SÃþ5WaϪm85~¦/cr~óÞr‘üp}µn¬îÆÆþµîæýÒ¾´_!”cGq~òãX<„Ù‡üAK‚#¾KÊO&hqë{«=¸nõ^ì^±g¦ÎãâÌeL7æ0ßœcV0PëÊž!lê߀ÞZo2?’ß_iÙ8rÁ‚“xÇ"–ô¶ØE,‰zR“é¾(™ó²³“D>é:Ê·Qr¹‹X$6¤h—Ö‘‡ï¼N(ùúº¨µæ^Gwl}.žÅèøY÷áÔ´{O°¶“ÿ@¬æ>Ú~ÕjèâÂ…QÌÏ9þ%$.bI¯\–Ì5¹GtNû´ø(â¯øg97ö… —µ…,Wí\å¯RÝpûÝEmæŠ{C´«§ƒƒë14´¡µK<ºlnŠû§WŽ8Œ| šT�Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâR ƒhŽŽ¡ y>’³Q^£qŒNìÉÂGŸ¨3{²ðQ“cO‚äaԉ׵íbÊÚWÝÂ × bM÷,½Œ¾CâàÌ><4:M›×bÇŽÍ-ш÷ñÄ+žh$.bñ>Ñk¢WÿD¯Š„,ñO"OÇI|<áŠ÷oôÚ"/fúGq!K\Ìrúô9>tµÉ1\üi Oa[7nYÑžŠXÄ’g±¤}J³øhQ,B^’*°ˆ…Á¸2 ZiEVŸ®ëïëÅÜì<N OaˤóŽw­r¯uNOøú<÷å^À@•ðžmôqqjmW¹ÿ zì¸jhN®Çs»VŒ»ÿïGwOöõƒiqŠÍëƒ ƒQ<XÈÂXžˆ¾(S¶.±Í"–äMm¥?‹XDíù+±”_ô^q¡øÅ¿ÃÜÖò-;†7úÓ¾8 оˆ¥í×¹ˆ%¾|Ak×Pf%–äƒÆ–_ø`_tÓß{ÍÐŽ¡-þG¼+K|œÓ<{'¿/ím±¤·Å~,bIÔ“zœL÷EÙˆ;‰ºX%‰|Òu”o£ä s±HlHÑ.­#-ÞNE,Þõ¡I”mwòs£ØS5O�²bÅFÿÓ΋܇Zs˜žÇšuutÕ*ÐŹsãØ¾õôt ·oE67Q™ôçQÞ¾œžu°Mâì™Ó¸ê*h¡««Šç?ÿù8s¶ŠÞÞ!÷`·`™¶°4º¹'››Žäú™>æqäÙèÍ *€%sP¾fRëù–S‰hÇrø¤ zq©�ŽürÑ Ž ÊóÓ°ˆEÇž,|Ô$ÅØ“°ÿwdëR*ˆ¡³PòR·÷ê¯êÁšž*î¿4…ÞcâüÐZžÝó#—±mÛ&lظ¦%`‰>yB–è5@Ñ¿q¡J¢ëD-±K´‚Kü5E‘ˆE$d‰Vi9?r ÇŽÂÔØ¶œ?­ç£Ïíéu+°g G±úJ0z~FŠù*ñ1†å1iäVÒqŸç£E±yIªÀ"ã¹¾¾LLNa|c—Obu³ä^«Ü‹”·\¨oã½*ϯóÞ×NíÏHw“;»ýïwÃÃþ,îÙv=½ ÏUx×Õ;·\v·6ø"![ \ caÁBƲ‹X`Ô±ä%·Œ¸¢ %oà¥ýÏÖb7óâÇV¼½õDz_O¹}qÒ?Ûô% ’XE‹Xüí(ÿYûnf|˜Ò«³$9’_â.Ä»²’刯“±w2yˆúÒ^)†E,ém±‹Xõ¤§NöEˆ;‰:Á”•ý:Ê·Qr¹‹X$6¤h—Ö‘‡ïB¬Ä/EçüV«wÍkRxÎo_»)l«×çü×õlÜ\… Žt¬õ Rëæ‘9¿ÅVA1;®(³jÕn4ju=6;^mlÞRÁé3Þüy?÷d}KªÊ¨lѨkÍ *€%sP¾fRëù–S‰hÇrø¤ zq©�Žüò‚Ã&‚|Ä4,bѱ' 5I1ö$,h>ɉ!³PòŠG1{Ÿ2¬XÛ]ýëñÝÑitM^ÄÊC—qbí6ž™ñ…"›6¯ÃæÍëÝr³ K\ȉXâb–¸%úq“+µÄ…,Þ¿žx%.f‰ Y¼Ï…ó—ý¼&Ƨ°vlל9Œú¬Û*ž·b+»ª©±oÇÇJgœ…¤˜¯",à1iäVÒqŸç£E±yIªÀ"cù@gU–Õ«V`ãÆuøÆÙCøÞ¹~ôλóf* Fx§Ô½&yr¯UÞͦ©ŽÏ®Åó7íÂ*׿Z­  7l«âö‘c¸ò:<ñµÇqÓŽª?ÝÝ]‰6§0 ÆÒ YË,bQ_XÄb—hÜ2þÌøÅÛÞ*)ͼvO˜WX¤·súâÄêÓÇqûÕCPÇói‡¿ˆ ìB‚#ýÄ^9”׿kg™M)OH"xÈOñüÅöԙŖl³ˆE§”~Ç·InoÛo1‹X2<”o£ä s±HlHÑ.­#-Þ±nRª/û«»ÄjêÍyµ!Ëôô,.]t°nM]þ+핎Vbq2•U/æÜ Ο¯`rr=ÐÁ¶-5<ðÀœ¿ Mü¼ÔŽ+Ï3>Ž2¡Kó;QךT�Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâêÏo9‡¤,r^ØÄ-ÈGLÃ"{²ðQ“cO‚¾ˆ%ý)Œ˜…’âÐ( |¼:ï</X9€}óxb|}çbÓ…8³z NÍÌàäÉsX·n%Ö¯[ƒáƒ¾H%¾KzE–¸%Z%.d‰þD,éUY"1‹'\ñ¶'&¦02r#ç.bƽƯ;=çŽbÅÜjUì^ÑÝý=Þ›ýMŒã&&h¿RˆóU„<&ÜJ:îó|´(!/IXÄÂ`<7³x"”ë®Ûã'OãsËæöausu `ñPo€ææÜï}ž ¥Ž •I|jÕY8«°ÿš]¾¿‡øæêxÙ™PéÁãs×â¹ïšzǪƒø¾uÏ`ï¾[0<4¨\……- ƒ±tÀBÆò ¶YÄ’¼©­ôg‹¨ÝDÄÒZ•EÒѪ,‘ybÅ”ûâhÇÙ›h9Çq̺6ù@Ý<ø‰XÔák”H*hQ ’ur‹“cï·+D,‹XÒÛb?±$êI=Nì‹Ò@¢"Éš…9±ˆ%ƒE,r´(”õ‰=a‹®QÄíÁüj4çAMÂà0a`Pÿë“÷J„®®µ~ Ç©´óHçæ‚Ø5ÇIÙÈÊ­k¥`½˜e­¶/Œb`@ï}胃U¬XŒ{÷êîÿ.´C„g[ÇÉ›ù"–œó5¯¨�”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$e‘óBÀ&nA>b±èØ“…š¤{ôE,q¼Â×ç*Ä,­Š°rCO—¿BËÉY™šÃÐ…cØzá8N­ÞŒ³S›pæôôôtcÝúÕX½z…{Ýêk½J(ýj¡HÄ]—dB–èßô«…¦¦fpùÒ˜/`™˜˜F­QÇÚËg±å ×çÐSq°y × õ¢7õê"±˜û”f/ðÑ¢X„¼$U` ƒqåB´òJ¼M…Z­Š—Ü{;¾ø¥oãKObÓÌJl›YƒÕô4ª˜mLá<MàÄŠ‹8½bÎì�^xÇí¾_[·lÄ×ïEï³OâÆÉSxb朚[©¦÷R<ý×ç^ ðî T¦±¹û®[õ¶Žãê}{±}ë¦Ìu–E+ ƒ±´ÁBÆò ¶YÄ’¼©­ôg‹¨Ýf%á+†b~Žõ„}qbÛdÐGó8n½†(•—°/Ò‡ÿùùƒ¥¥Û5"ûÄ׺Ôň¥ÍÔ§WkIÆÎÆp(é'²÷Û5VbI uòm[Û,bQÆ)¥ßñm’ÛÛö[̱8"–Ä<*éÙIÂöTåÛ(9È܇E,R´KëH‹C‡w¡_'$*'V?ó+²7õyßgÓ³× =;Žþ Kü&Yp:Y‰Å¶ˆb6!§»`Ξ;‡mÛõ„,¶º}}â)ø¯ò„,ñqU‰XbUFeŽD]kNèï9Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâR’²d?”›€ùˆiXÄ¢cO>j’bìIX0±Ä=óB‹ÚebŠ•Ñþú‡ª{­¹z°Wõ÷àèÔœÿ¾| ».žÄåî>œ^³“qâx·/TÀÊ•CìG__/tI¿R(ý *ýz!oå•©©YLMNáòèÆÜÏü|•f+&/aßå³X?~}žHÔ¹±¿{z0T“¿FHVç¤kÂ~k?K#Å|•øÃò˜4r+é¸ÏóÑ¢X„¼$U` ƒ±¼¡óŠ¡þþ^¼øÞà‡žp¯O“xgöÑKr7»×ǵ®w¯…½.G#iãòÝxÃ^tuÕ0pô$öã(áÒŽ\ ¾Ï®[ÝDèˆÏñ×áõkšóÀaçÎÝþ 5:"–<a ‹^ cáÁBÆò ¶YÄ’¼©­ôg‹¨½ø× %ý¯2ôÅ cÉãÖàDZ“#,ÐzÈë#Ånoæ¥ÝJ¨¶Ä_qÔª§¼ÝáDA~òxeþ™m±(ã”Òïø6Éímû-æ`KƇòm”dîÃ"‰ )Ú¥u¤Å¡Ã[¦ˆ%þ°,ãïEçóÔn]ƒÚùƜϹi³™åä‰ ÷&a/ºj=‰kK"/©ˆÅ‘ô?e/Çèú^ëêA“š8vt·Þ mlñ…,„z}Îåè÷™e«¬¤ç¦Hè?×épˆlôæÀ’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,Ù¥Ã&`A>b±èØ“…š¤{ìE,º>™× !+f ê’v©K0º+ööàªn›šÃñé9ô5f±îÂ1ì9†Ë}ƒ¸Ô?ŒËc«püâ 4c¯òâõôvû¯U¨ù+µ´Wf©×h„+°ÌÍÍczjÖßr" LcÝäe¬žÅê™1ô¸×RO¼ÒU«bKovôw£¿šýõº£(Gã ³<ÄïP¾E xL¹•tÜçùhQ,B^’*°ˆ…ÁxîB$f¹ëE7ãÌ™ó8qòFG'ükXww—/æÜ¼i6n\‹c§ªR>ïsݵ»±yó:=r .ŽbvnNºbŒ Š.Pyש¢ÏšªÈL½~öötû+·íܹ+W é‹E ƒ±¤ÀBÆòFë©‹X7µ•þ,bµw*bÉ®Êâdl½Íhu”Ì .ö%ë—ª5œLÞ@^Øüv›âõN˜Yô ‹”‡—÷‹rŠ©»/ȉòc'óà-o›E,Y±‹Xõ¤§¢÷EHÏB¶§ê(ßFÉAæ>,b‘Ø¢]ZGZ:¼‹¾‹wm&ÇÝ›U™ßoE7Ý÷kï çÏàܹ9_’7ÑüX\‘³Àºµîó®^qá9)Q—¶É”cö™1Èö¿VëuÖÍâì¹&üh`E9ɇùW«]nŸ7†œE‰X Å¡åÑœÐÜÿ¹(™ƒòm4óÚXÏï°œJD;®ÃÀ'UЋKpHÊ’ýP:lä#¦a‹Ž=Yø¨Iб'a¡‹ußóÄ,ñù&\Á%å[s+v ôøŸñùNÎÌãÔô<úç&±Ùý4.BÃeëîÄ{ÝpÿîêÃLw/f+UÔ+54Ý©¬dViÖQm¸ŸfÝõ9¬œÆ@}ƒs³X1;‰š{­¯†"T׫{º°µ¯ë»k~‚|3ý‡hÜXÄ’ö)Í^à£E±yIª°lE, ~e0y¯ŠÚuü¼ò¦Mëüeüuz²˜«VcÕMö´O$ŒÙ¾¹"P_|¼Ò|âUVò9òêtÚ ƒQXÈÂX¾ˆþæbKò¦¶ÒŸE,¢ö¢Vb ^¯C‰X¶qAK"?¶§_18ŽË±$mÚwýÄ±× …È‚_ûf"¸ì¨óh›E,YÕ~Ëÿ$‹XÐaN‰c»X=(&ùP6¨±‹X$6¤h—Ö‘‡ïB‰XÒÅ(å Š!¼¸×þÕ~Ðo|õff'4Æ1øÿšÕ»Ñ׿ZОì„ùñ­ŒŸCãÍŽSE_ßjôîÁ¿|þh.G=½CØ´yUâ†_çs³˜W%êZsÂâÜ”á@É”o£™‡ÔÆz~‡åT"Úq…>©‚^\*€CR–ì‡Òa° 1 ‹XtìÉÂGMRŒ= ňXâl¤ð‰Y"9GâÁœ€&½:Kdà½ÊçšÁªÿê¡Ëóu\œk¸Ÿ:.Í7Ð=?µîS—>&ðÂwU±º»†UÝî¿]5_H#ë_:†#åÍŠXtž‰±ˆ…ôC‹bò’TE, Æs2áIëGÂ6„mrÎ8T?jùÄ…1¦\ÂD<â¨®Õ [ª0 ÆÒ YËÑßQ,bIÞÔVú³ˆEÔ^ôë„<!Å; è‹/œpⶤËɬºbr;écGàV„ˆ…bÙR¬&~KSƽ¦¶è‰XÚ¿,w›ÚE,™m±‹Xõ¤§¢÷ÅB€e¿ŽÌ|HÄÔ‡E,R´KëH‹C‡w¡WbÉüê;l N í'kñö躒ÉÍ ¸ºý×ì@5‹ÁÁu¼D"–øŠ'NÊ'SŽUÆE™8±òÐàZLNŽ´ÛUs“šÆ"–ôÂd;‹Xrm4óÚXÏï°œJD;®ÃÀ'UЋKpHÊ’ýP:lä#¦a‹Ž=Yø¨Iб'aAóáŒaNÁ÷0…Mû’›˜o²W %실¯Ù«ºjþg÷@¿²ÚD½É:a²ÑÀT£‰)·ÜtæÝÿ5(X}Íóó„)5÷«]Õ-ôT*¨V1àVô{Ûî¿]ЇYNúâœÊ?Ù'A-E,eÙ |´(!/IXÄÂ`,O¨VeQÙä·A;‡4l)¶Â™0Æ–ËDÀùèÔ™´3 £<°…±|Á"–äMm¥?‹XDíE‹X"¿Ök†,ú­Ô’Pq ¾m;‚~‰»Xœˆ%¾´¨… ‰¯ZáÊ*mï`Ã_…&]ËIwú²ˆ%k#öcK¢žÔãTÞ¾(¤(ûudæC‚ ¦>,b‘Ø¢]ZGZ:¼‹þ:¡°¼näÜpíØzs‚—lVU!Ê­(9Ò•Ž“åäå½Þh«›¿ˆƒZTñs±¼o¢¹™/b)f~'êZsÂ`ÿK9P2åÛhæ!µ±žßa9•ˆv\!‡Oª — à”%ûAVWlÈ ò‘Ÿý°0y‘EóÈKh²Dòʘµ š_,û!ºf¦¾Õ¯åÓªo}H2d-Ôæñ‹‚€Þ·µáZÕýx¥šqt9Y§°MæÃ"¡Oiö-ŠEÈKR±0ËEˆY<è­¬¢¾¶Å9mòYHèŠIL, ƒÁXú`! cy‚E,É›ÚJ±ˆÚ˱´nvQL´QF_âÔª¼hñE,ñí`Õšvºû‚œ(/‹X Üf‹^þòò1({_”ûåœe¿ŽÌ|HÄÔ‡E,R´KëH‹C‡w1E,­_{ËŽ©Ôݽ¸MâÁœ` ŒVQ‰:ádÏyÚeÍy•›WªRd“= ’™:¥ˆÅQrØÍ õþWs dÊ·ÑÌCjc=¿Ãr*í¸BŸTA/.À!)Köƒ¬nQa“Æ> À"{²ðQ“cOÂB¹"–xR˜:¡‘ÈN´:KP/öI?‹"“`^~û¼g^NN G6î±”e/ðÑ¢X„¼$U` ƒÁˆ è ZD×MJÞÊ'6\ñ‹Bî5;§‘Wca0Œ¥ ²0–7H±¿¹“j'¥¿£æOÄbK~Þ’¼Dûúy©c-Žˆ%Þ—Öê,(°/ñмI,qØòE,ñ‡üÞ Àf¬EÌQžˆ%ÈÀɉ-Ùf‹2N)ýŽo“ÜÞ¶ßb±dlÈ̇AL}XÄ"±!E»´Ž´8tx—ÂJ,Þu®™g/¹ Hcóc3Ú sŸx¹Ãy¥Ï!Ï3=7ý›«BŽx™E,ÔGŽõüË©D´ã 9 |R½¸T�‡¤,Ù²ºE…MBû(�‹XtìÉÂGMRŒ= #bIGSÍ7Ù/Ä…«³D>s·| RÝu1©"q¸ÍÉ÷cK9ö-ŠEÈKR±0Ïè®p¢#V‰‹,tWMÉ»æ-…W´¡% í@À¢kÃ`0ŒrÁBÆò)¶ã7wRí¤ôgK¼Î¨/JÛX Ñ~~^êX‹/biߘsÂzÂB‰XüUF$íâ° +b‰ê“BJµ—#bi¿âˆE,émå~#uœRúß&¹½m¿ÅKSIJP7DaXÄ’ÇÁ"–â8HŸƒÚ×zÇ|bOÖH@f~lFdî/w8¯ô9äyFãE,*Ê·ÑÌCjc=¿Ãr*í¸BŸTA/.À!)Köƒ¬nQa“Æ> À"{²ðQ“cOŠX∯ÎBŸ¼Wµ¾ÿ U*”‘]‹“4_À’ñ×±#Å|aI#·’Žû<-ŠEÈKR±0Ï=˜¼®ÇTøÒ‰ø"Uq}Y÷ :Ñð*+ ƒ±|ÀBÆò)¶ã7wRí¤ôgK¼Î¨/JÛX Ñ~~^êXKGÄßv¨Ë… Kÿ8vZ¶òãXÜÅűˆl‚£„¢E,ñÛ–ã6êÜÀ"RÇ)¥ßñm’ÛÛö[ÌÁ"–LåÛ¨Êé±ÓãÈž¼Œã"¹ÿÊá`Kq¤Ï¡qLeêâOÖ ÆQZ^f"ÇòÕH6ó;Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,Ù: ›4öQ�±èØ“…š¤{OÄÏ ©á#[ÅóqçÁ-“.åýÝ,AJÛ©”A+)½~°ˆEÇG‹bò’TE, Æs¦b–6>qPÁ7Žl5!EkItÅ)EÛ1 £\°…±¼A‚íøÍT;É|ZÛŽ¢=‹E,ùyKòíè祎µ4E,é¾8)¡°Eq;Â}peŠX’_³* щ(‡Côà--\‰o³ˆ%½­Üo¤ŽSJ¿ãÛ$··í·˜ƒE,™:Ê·Q•Óc§Ç‘=yÇErÿ•ÃÁ"–â8HŸƒDq%GÛR¾‚‹vù9-bq„ù>’ºÖœ0ØÿR”Ì¡8f4óÚXÏï°œJD;®ÃÀ'UЋKpHÊ’ý Ã±à°I@c`‹Ž=Yø¨Iб'aañE,‘iðMm›YEà#|íP: ´{¬ÄCP2—<8¢/š2ÛT R[ ó2‚å1iäVÒqŸç£E±yIªÀ"ƒa#–Ðy县DWÎ6]Æd¬YÄÂ`0K,da,_`;~s'ÕN2ŸÖ¶£hOÇbK~Þ’¼Dûúy©c]"Q,'“‹ø8vTyIÚÅa—žˆE¶KZ˜âÄìL]^<±¤·•ûÔqJéw|›äö¶ýs,}Kܦhˆ¸YÄ’ÇÁ"–â8HŸ#ç˜R½b(Þ½>'K*ãÆËš"–xŒx»“ªÚÄÊMŒÖÜ”çq2qÕœ,b±çȱ±žßa9•ˆv\!‡Oª — à”%ûA‡cÁa“€Æ> À"{²ðQ“cOÂÂÒ±DzŽÖê%y¶i ©°yFçîC²x {$íIm•Ä“Fn%÷y>Z‹—¤ ,ba0LVfIûÅQ„E$àÐŒ%‚)ZDbÊÇ"ƒÁXZ`! cy‚Ûñ›;©v’ù´¶E{:‹Xòó–ä%Ú/ÐÏKëʱdÛ‹=ŽÅa¯‹œÃ\8!-Ùf‹æ>d :ÌIz,IæòB€E,y,b)Žƒô94Ž)§57)7Áx«‘¨E"b‘‰V2ó*±Ô4! ò<ýqtD>yå¬C1óÊ`ÿK9P2‡ê˜Ðáȱ±žßa9•ˆv\!‡Oª — à”%ûA‡cÁa“€Æ> À"{²ðQ“cOÂÂÒ±Äá@ƒ&4ˆ??R=K LHEk…(.€"Ÿôð«òFÖžô,>ư<&ÜJ:îó|´(!/IXÄRŽž¬¢têÏ|Ìg ï;رSµ‚Ä(Á¿EñE(ª¿ñüŠD<?[1JÜgæ[N| Æ• ²0–7(õ/‹X$\(§/JÛX Ñ~~^êX,b‘µ‹Ã²ˆEËE,šûE,è0'é±$™Ë ±äq°ˆ¥8ÒçÐ8¦âuñÕYÒÆy<ÒUTü jÝ™Ù@Uîp^Å9œœ<â=H·ÛÍM±PG96Öó;,§ÑŽ+ä0ðIôâR’²d?q,ljì£�,bѱ' 5I1ö$,,mK„ÜÕYd>Ñ!«3y!¡ÄÍI{¤rc´b9>{Ò·nùÃò˜4r+é¸ÏóÑ¢X„¼$U` ƒÁÈC§¯ ’ñ¥q%½BH¬¤Â«°0 ÆÒ YË$Úf‹˜ åôEi‹!Ú/ÐÏK‹E,²vqX±hù±ˆEs²ˆæ$=–s¹L°ˆ%ƒE,Åq>‡Æ1%®s2ÎæÇf´Aæ>ñr‡óJŸCž§ÝÜd uÄ‘cc=¿Ãr*í¸BŸTA/.À!)KöƒÇBÁ& Æ> À"{²ðQ“cO•!b‰Ã±ñI¯ÒbØ*¨ÿÊç\9qXÄÒ¡½ÀG‹bò’TE,åcÇ–lýòÝÖŸù˜¯,>ÁIÑù9Q)”¯ÓüÒ¢“¥Æ—ó1ßbò1Ë,da,oÄoîP²>}s8»Í"–xQ_”¶±¢ýý¼Ô±XÄ"k‡e‹–‹X4÷!‹XÐaNÒcI1—ËBÇ4à S±HlHÑ.­#-Þ+YÄÒÞíGjæÇf´Aæ>ñ2YøXqÈó4Ÿ›N©ºÖœ0ØÿR”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°á(6q4öQ�±èØ“…š¤{®<KÁJfæé9­ÿ…aUÇ\ý7ú¶$Ž“cOf zL¹•tÜçùhQ,B^’*°ˆ¥Cã9Š¢Whé$‡¢V-)š¯Ó< ƒ±´ÁBÆòEüæ%ëÓ7‡³Û,b‰×õEi‹!Ú/ÐÏK‹E,²vqX±hù±ˆEs²ˆæ$=–”syá@†åôØéqd;lÉýW‹XŠã }c*—#1NNy¤¶É+'*MÊáÐôIèçî sA]kNì)JæP#šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°á(6q4öQ�±èØ“…š¤{®lKÜ'yõÕó‰CöÊ;é>÷Kp´‡7á“æTØçÎW‰1,I#·’Žû<Ûc¥P{‰r¿.Ä~”ø¡½MŒR| FBt±_ ´` ƒÁ`\Y`! cy"~s‡’õé›ÃÙm±ÄëŒú¢´Åíè祎Å"Y»8,‹X´üXÄ¢¹YÄ‚s’Kʹ¼p Ãrzìô8²6Ž‹äþ+‡ƒE,Åq>‡Æ1•Ë!G<fB’pè”L¥>Gì<›êØGž§ÞÜtrÛõ8²ÈÎ ƒý/å@ɪcB‡#ÇÆz~‡eÅñ ÃË"–4‡ˆ¥@ØÐkì£�,bѱ' 5I1ö$,,KJA‹EãgUöE+)æ«ÄÇ–Ǥ‘[IÇ}žÅ"ä%©‹X:ôa0ˆ„,nÉ‹W ãÊ YË,bs¡œ¾(mc1Dûúy©c±ˆEÖ.Ë"-?±hîC± Ãœ¤Ç’r./Ȱœ;=Žl‡ã"¹ÿÊá`Kq¤Ï¡qLårh£#ßßÚ"G¹/ÕÐà­æÒ”rÈÇÑn6ó;Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,Ùv"–aC¯±°ˆEÇž,|Ô$ÅØ“°°<E,q8è<•Üÿ´öã1RÌW‰1,I#·’Žû<-ŠEÈKR±tèÃ`0´j¤_Ýó\¹°x…Á`0–XÈÂX¦`‹˜ åôEi‹!Ú/ÐÏK‹E,²vqX±hù±ˆEs²ˆæ$=–”sY£ a9=vzÙÇErÿ•ÃÁ"–â8HŸCã˜Êå0Çl9ºþ{-Ž%G¶²<yžvs³sŽD]kNì)Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâR’²d?ØqˆXû(�‹XtìÉÂGMRŒ= Ë_Ä’†óÑu](‹c±ïsç«ÄÇ–Ǥ‘[IÇ}žÅ"ä%©‹X:ôa0…AGÐq%‹]ÒƒÁ`,/°…±<AÉmÔ%·Yį3ê‹Ò6C´_ Ÿ—:‹Xdíâ°,bÑòc‹æ>d :ÌIz,)ç²8F Ãrzìô8²6Ž‹äþ+‡ƒE,Åq>‡Æ1•Ëa0Žr2÷‰—ÉÂÇŠCž§ÝÜìœ#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,Ùv"–E†Æ> À"{²ðQ“cOÂÂsOÄ’öqÄÕIóór,|âö¹óUâc ËcÒÈ­¤ã>ÏG‹bò’TE,ú0ŒGž¤h¡ O ƒa²0–7({s8»Í"–xQ_”¶±©v2ÌK‹E,²vqX±hù±ˆEs²ˆæ$=–”sYc!@Šrzìt|XÄ"±!E»´Ž´8txYÄm¹O¼L>Vò<íæf牺֜0ØÿR”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°ã±,24öQ�±èØ“…š¤{XÄ’†hDб(GÛbßçÎW‰1,I#·’Žû<-ŠEÈKR±tèÃ`0 ƒÁ`ÄÀBÆòeog·Yį3ê‹Ò6#ÕN†y©c±ˆEÖ.Ë"-?±hîC± Ãœ¤Ç’r.«c”R”Óc§ãÃ"‰ )Ú¥u¤Å¡ÃË"–hƒÌ}âe²ð±âçi77;çHÔµæ„Áþ—r dÊ·ÑÌCjc=¿Ãr*í¸BŸTA/.À!)Köƒ)9û(�‹XtìÉÂGMRŒ= ,bÑ2ídÝ ´ïsç«ÄÇ–Ǥ‘[IÇ}žÅ"ä%©‹Xô|ýºÊ`0 ƒÁ¸bÀBƲ„ZøáýE,ñ:£¾(mc1Ríd˜—:‹Xdíâ°,bÑòc‹æ>d :ÌIz,)ç²:FY E9=v:>,b‘Ø¢]ZGZ:¼,b‰6ÈÜ'^& +yžvs³sŽD]kNì)Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâR’²d?Øq’cÁ¡±°ˆEÇž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù,úu•Á`0 ƒqE…,Œå ÊÛfK¼Î¨/JÛXŒT;楎Å"Y»8,‹X´üXÄ¢¹YÄ‚s’Kʹ¬ŽQHQNŽ‹X$6¤h—Ö‘‡/‹X¢ 2÷‰—ÉÂÇŠCž§ÝÜìœ#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,Ùv¤äXphì£�,bѱ' 5I1ö$,°ˆEË|‰æ%;¿±ˆEÏG‹bò’TE,z>‹~]e0 ƒÁ`\q`! cy‚ò¶Yį3ê‹Ò6#ÕN†y©c±ˆEÖ.Ë"-?±hîC± Ãœ¤Ç’r.ëÇ($¨ …M¶œí°)G¢®4±ÇAúÇT.‡Á8Ê9ÈÜ'^& +yžvs³sŽD]kNì)Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâR’²d?Øq’cÁ¡±°ˆEÇž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù,úu•Á`0 ƒqE‚…,Œå Jo³ˆ%^gÔ¥m,Fª óRÇb‹¬]–E,Z~,bÑ܇,bA‡9I%å\ÖQ6HPA ›l9ÛaSŽD]i,b)Žƒô94Ž©\ƒq”s¹O¼L>Vò<íæf牺֜0ØÿR”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°ã cŽÒ¡±°ˆEÇž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù,øu”Á`0 ƒ±lÀBÆò¥·Yį3ê‹Ò6#ÕN†y©c±ˆEÖ.Ë"-?±hîC± Ãœ¤Ç’r.ëÇ($¨ …M¶œí°)G¢®4±ÇAúÇT.‡Á8Ê9ÈÜ'^& +yžvs³sŽD]kNì)Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâR’²d?Øq1GéÐØGXÄ¢cO>j’bìIX`‹–ùÍKv~c‹žÅ"ä%©‹Xô| »F0 ƒÁ`0ž“`! cy‚ÒÛ,b‰×õEi‹‘j'üԱXÄ"k‡e‹–‹X4÷!‹XÐaNÒcI9—õc¤·‹ *Ha“-g;lÊ‘¨+ƒE,Åq>‡Æ1•Ëa0Žr2÷‰—ÉÂÇŠCž§ÝÜìœ#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌQ:4öQ�±èØ“…š¤{XÄ¢e¾Dó’ßXÄ¢ç£E±yIªÀ"=ŸÂ® ƒÁ`0Œç,XÈÂXÞð¿ ±ˆ%^gÔ¥m,Fª óRÇb‹¬]–E,Z~,bÑ܇,bA‡9I%å\Ö‘Þ.”§.g;lÊ‘¨+ƒE,Åq>‡Æ1•Ëa0Žr2÷‰—ÉÂÇŠCž§ÝÜìœ#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌQ:4öQ�±èØ“…š¤{XÄ¢e¾Dó’ßXÄ¢ç£E±yIªÀ"=ŸÂ® ƒÁ`0Œç4XÈÂX¾ð¿ ±ˆ%^gÔ¥m,Fª óRÇb‹¬]–E,Z~,bÑ܇,bA‡9I%å\Ö‘Þ.”§.g;lÊ‘¨+ƒE,Åq>‡Æ1•Ëa0Žr2÷‰—ÉÂÇŠCž§ÝÜìœ#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌQ*ȤšE,:ödá£&)Æž„±h™/Ѽdç7±èùhQ,B^’*°ˆEϧ°kƒÁ`0 ã9²0–'ü/H,b‰×õEi‹‘j'üԱXÄ"k‡e‹–‹X4÷!‹XÐaNÒcI9—õcäÙ—‚ÔØ…UŠr¶Ã¦‰ºÒ8XÄRéshS¹ã(ç sŸx™,|¬8äyÚÍÍÎ9u­9a°ÿ¥(™ƒòm4óÚXÏï°œJD;®ÃÀ'UЋKpHÊ’ý`ÇAÆ~¨²DˆÃ±ˆEÇž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èùv`0 ƒÁ`0ÀBƲ‹XâuF}QÚÆb¤ÚÉ0/u,±ÈÚÅaYÄ¢åÇ"Í}È"t˜“ôXRÎeýyöeÀî¡h¶ÃjŸœ8¥q°ˆ¥8Òç Æ0Õ`zL´9ÈÜ'^& +yž:ã¨g ŽD]kNì)Jæ |Í<¤6Öó;,§ÑŽ+ä0ðIôâR’²d?Øq1‡_'ª,âp,bѱ' 5I1ö$,°ˆEË|‰æ%;¿±ˆEÏG‹bò’TE,z>…]#:ÀÑ“Ut‚Ný™ù˜ù˜ù–"ƒq%ƒ…,Œå 2Øf‹"oI^©v2ÌK‹E,²vqX±hù±ˆEs²ˆæ$=–”sY?†Ì>^W6HYÎvXí“§4±ÇAúÔÁ¦L‰6™ûÄËdácÅ!ÏSg•ãlÁ‘¨kÍ ƒý/å@É”o£™‡ÔÆz~‡åT"Úq…>©‚^\*€CR–ì;2æðëD•%BŽE,:ödá£&)Æž„±h™/Ѽdç7±èùhQ,B^’*°ˆEϧ°kƒÁ`0 ƒ YˤØf‹"oI^©v2ÌK‹E,²vqX±hù±ˆEs²ˆæ$=–”sY?†Ì>^W6HYÎvXí“§4±ÇAúÔÁ¦L‰6™ûÄËdácÅ!ÏSg•ãlÁ‘¨kÍ ƒý/å@É”o£™‡ÔÆz~‡åT"Úq…>©‚^\*€CR–ì;2æðëD•%À ã@œ‹XôìÉÂGMRŒ= ,bÑ2_¢yÉÎo,bÑóÑ¢X„¼$U`‹žOa׈°cK6ˆ~ùnëÏ|ÌÇ|ÌÇ|Ì·ùŒå�²0–/H±Í"EÞ’¼Ríd˜—:‹Xdíâ°,bÑòc‹æ>d :ÌIz,)ç²~ ™}¼®l²œí°Ú''Ni,b)Žƒô9¨ƒ1L5˜m2÷‰—ÉÂÇŠCž§Î8*ÇÙ‚#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌáבڦHˆùYÄ¢cO>j’bìIX`‹–ùÍKv~c‹žÅ"ä%©‹Xô| »F0 ƒÁ`0°…±<AŠm±(ò–ä•j'üԱXÄ"k‡e‹–‹X4÷!‹XÐaNÒcI9—õcÈìeíe€”ål‡Õ>9qJã`Kq¤ÏAŒaªÁô˜hs¹O¼L>Vò<uÆQ9ΉºÖœ0ØÿR”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°ã c¿ŽÔ6åƒE,:ödá£&)Æž„±h™/Ѽdç7±èùhQ,B^’*°ˆEϧ°kƒÁ`0 ƒ! YË$Øf‹"oI^©v2ÌK‹E,²vqX±hù±ˆEs²ˆæ$=–”sY?†Ì^Ö^HYÎvXí“§4±ÇAúÔÁ¦L‰V®B‹£ÏA6…p´]g•ãlÁ‘¨kÍ ƒý/å@É”o£™‡ÔÆz~‡åT"Úq…>©‚^\*€CR–ì;2æðëHmS>XÄ¢cO>j’bìIXXZ"Ñ9C™áŒ1‹X`†œó¦Ê§4{Å"ä%©‹Xô| »F0 ƒÁ`09`! cù‚Û,bQä-É+ÕN€Q^êX,b‘µ‹Ã²ˆEËE,šûE,è0'鱤œËú1dö²ö…�eÊÙ“Ò'‡·4±ÇAúÔÁ¦Ìމ`“×éJ,ãDóÐQîKçaÂAÒvqT޳G¢®5' ö¿”%sP¾fRëù–S‰hÇrø¤ zq©�IY²ì8Șï#µMù`‹Ž=Yø¨Iб'aaéˆX¢ó¥æ‹^÷¢Ë #r.17ß|!ö£É\XÄ¢ã£E±yIªÀ"=ŸÂ® ƒÁ`0 †,da,O`›E,м%y¥Ú 0ÊK‹E,²vqØìÃî?<úž¼ªîÉj ›ºûq]ÿ*ܳr6võ â72¿=vo?ùX‚cÿJüÖŽ[R¹±ˆ%³Méz±dc‹¶YÄb’“ŽmY L9ÛaRúäð–ÆÁ"–â8HŸƒ:ÃTƒþ1A¾xÅ+Õpýõ+°gï06lìÇà` ÕZ3ÓuŒŽÍãØÑ xv O<>ôµ5%cstãæ”µ8HÚ®3ŽÊq¦ü1óÐŒíðHÜC©¿£XÄ‚æwXN%¢WÈaà“*èÅ¥8$eÉ~°ã c¿Îp~—±èØ“…š¤{–žˆÅ;Ç÷þÞÛQ»ùŽ„Íì_þoÔ?öþ–˜%á\`nQ“L¸¢9b ¶ïÅ.K_Ä’gÊ*å˜@q.Õñ)Ü^â£Ü¯ ±%>dho£ŸÂ® CŠñষ9¨7“õo¸ƒðG¯Î÷ýÞÿ<{.r Îk7n>ñKùõW?ààNÖõ¸OùÝ¥7Áç÷Ý¿š5ñ3/pðû¯ƒÁ`0–!XÈÂXÞh}igK~Þ’¼Rí奎Å"Y»8¬øa·.îÀŽÕçÝÏ(žžÅÇ.ÅËWoÅO®ÛJίÐÓHæÆ"–Ì6¥ëYÄ’-Úf‹IN:Ç`Y L9ÛaRúäð–ÆÁ"–â8HŸƒ:ÃTƒÞ1þß{P×WÅ÷ÿÀf<ÿ¶µ¨V³m»üÏæÍý¸ã…ë166Ïî$¾õÍóðŸî„sŽtâ*ÊZ$m×Gå8S~ÜjøþïÝk ÆìSÿr:8ZçvƒýŸ®[°såÛhæ!µ±žßa9•ˆv\!‡Oª — à”%ûÁŽƒŒ9ü:Ãù]XÄ¢cO>j’bìIXX:"–hñ4I|þðÛ\£Š÷]Ê ³/87¯É‹]{Ù«á¬^Û>ŸºÁê_ügÐé“íØ–1 ó!™ËÒ±DõTíB÷O¼1c<÷þ¿twvÃßv1lò’µ| ·—ø(÷ëBìG‰ÚÛÄèÄgÑ® Æs C½ÀMÛ€û&ë¿sÄ;WÉ'Ð…IàÀ¹ìÙýñS8Æã•á;G³u·ît¿SwÁ`0ŒE YË­oð,bÉÏ[’Wª�£¼Ô±XÄ"k‡•?ì® ¸§òIûYùOŽû¢–ßÞ~z*µwe0{‰ðcååDyÝf ”Û,bÑË_C>,b)”)g;LJŸÞÒ8XÄRésPc˜jÐ;&‚UX<lÛÑŸzãn_¨¢‹áá.¼ö‡wâÆWã}u�3³Ñ¬s óH•ILJ¤í:ã¨g‡7nNÕÁ+_¶9í‰þÜ)ÔÁê,,bAó;,§ÑŽ+ä0ðIôâR’²d?Øq1‡_§576ÁL}È¢y ä%4Y"yeÌZ…¥%b‰Þ®ç•DBŠfØæ¥^ˆ8Jš<zO,S{ÙkPÝsM¢½þÔc Ó'Ú¯9Ê#*0/™½Øei‹X"xßó©«ŠÞŸúÙLÛÌÞ‡J£‘]y'Ã&/IQ˧p{‰r¿.Ä~”ø¡½MŒN|íÁ`<'áàî½=¸ÿèl¢öé3Àè4°¢OìõÍCâ)Öh"˜—\#ž€§G—²õ÷¸9�³XzðîM75ÕjÁ_3 ƒÁXn¨€ÁXŽhݱaK~Þ’¼Rí奎Å"Y»8¬úaw'80=†÷žyÖˆ›E,‚vJ׳ˆ%[´Í"“œÌŽÁrÁ"‰ )Ú¥u¤Å¡Ãû\±xŸ»ûñ³?¿ÏHÄÇî=Ãø7o¾µ*BaŒ¨÷šeÒñ!i»Î8*Ç9—#3ÿ¡WS|ãÏ«lšÈËuqæ·ø¨TWÖǦõüË©D´ã 9 |R½¸T�‡¤,ÙvdÌá×iÍÍ‚M0S²h^y M–H^³Vai‰Xç- ñˆæ·RK´Z Ù<ÒÈͱȄ4XüNbtìC2—+ãuBqÁ’på¢ræ–EIóQå£Ü¯ ±%>dho£ŸE»F0ÏYîÞçj³«´Äqß!ùµê¾ÃÒ&|GÒvÏ>~tÈ`0ŒÅ¯ÈÂX¾`‹"oI^©v2ÌK‹E,²vqX;Ë+öïÁ=»¶µlç œŸšÆ·žÂ7ÌÜ üòèiܽb®X©äf‹ Òõ,bÉÆm³ˆÅ$'ýcPóJ`‹Ä†íÒ:ÒâÐá}nŠXб ¯¬áõo؃ZM|ÓíÌ™ œ>5±±Yô÷wa×îUX³&û“¶­[ðŠWnÅÇþá|í¿?­œVÔlN¢?/¶kÓ>š‚ööß0ºýOEN¤Ï "¢†/fÁk󮳎SÍåH—²óÊÉñ)bnR¾Í¢Íï°œJÄhNd8 |R½¸T�‡¤,ÙvdÌáבeÜ2@×lÓ„È¢Ù¦Óç%4Y"yeÌZ…%,b gLS"$‰Úýù!ø !yµËÆq„Üh­ Ó ä¾ÚÈó¯“]1D1o…ñsÆLØ·ðüF>ù5Ô«ŽI†Ca$€è¼©:¼½è‰UMq¯Úë§ã¿úMÌÑšûÄܨ{‰˜†E,:>‹v`0žã¸ikÃ÷J 8¾}ÄÁK%+«x+²Èð­Cò×}ëHöê²vÐÁþ 0 ƒ±Ø`! cy‚E,м%y¥ÚÉ0/u,±ÈÚÅa5vKnlêÇuÖfü^ºg'î;rÿå‹÷eX}îÒ ìX)Œ“›åu›E,Pn³ˆE/y ù°ˆ¥x¤~d޽r¢®4±ÇAúÔÁ¦ô‰`Ë[1ä5?¼}}Ù¯8§NŽãC|ž½ˆäÓ1Âõ7¬Çëêz v'|^ø¢ øú×ÎâÜÈœ?³"·ôõ“DÙ„E§õ'‰“Ê•²>ñÅœçAĬ…’6Á«Ú|^ÿ@“‚Wd+²4šu×®ê?Xl‹zÒy…ÿ§Ôh$æUC¸…Tªˆ9d>”o³hó;,§1šŸTA/.À!)Köƒsøudæ#âXT˜&DÍ6.8/¡ÉÉ+cÖ*,]K»ŠäT„–ˆ%°sÂU;ÚNêoqß²íÑå+zd½R¨@`!\Æk£`ÙhOd‘x¹_êÜA’ó@">e÷ˆÌß ¿§‹®‚­<A\’Œ rÆDsN¶Æ>Õw'–OPn·G+îxb•†$N=üû#è3¡â8±RBq.Õñ)Ü^â#¦a‹ŽÏ¢]# ª•^´»†Ï<^OÔçˆXra8pNÎ÷Ø)ÂÄ,0Ø“mqÞµ§æž)YÈÂ`0ŒÅ YËñ/ý”¬Kn³ˆ%ÝN†y©c±ˆEÖ.k/bñЯcú±Ñv…÷Ü©§Šêªn¼pçÜ»{¾pàHÂç±éKÂ8"ÄÇ4ßl³oŽÁ£“qlfã9Ì»Éú«]ØÜ=€}}«pûŠØÐÝŸâsð‘‘gñ™ G±6¹>¿»ëEÙØÞv¸ÿ¾|é>xߪ®^üþ®»[7û¢ŽÜm±(mInoÛo1‹X„Û$È åʳ8*ƒE,Åq>u0†©ýc‚Z¯½Ùº­W_³i<p ï|ǘ™m¢R©…b Ç?J<ßÇ=?ûß÷ãÿùµ ··ýõÈ3»ó®õøèGº¥`5’¾þ*þànJðŸ93ÿö'¡»»‚»ïÙˆçß¼k×ö¢ZuðŽw<‡&Ú‚–ð—ð[·öá¶ç¯Æî]CX³¦×÷žnàÂÅY80†o?p§OO·ò ?¨õ�qxEn¿u ®Þ3Œ ë{10ôc|b'OMãɧGñ‡.br²áûycÐ W±ù¹7îÆ­7¯ ï|ûÝ­íÏù >ð±ãá¶ç™ÇÓÝåàŽ[×âyׯ¶Íý¬ÁÓÆŒ¹9=6‰Gž¼Œo¹ýš«SLKä07)ßfÑæwXN%RÄÜÔòIôâR’²d?Øq1‡_G–q— L"‹f›Nœ—Ðd‰ä•1k–¾ˆEl˜­j‰X†V`à¯ÿ9aSà>LýÁ¯ùçðʵ7£û•¯Cuÿ¨ ¯t¿Ž¢yâ(æ¿ð)4¾ü8õz‚³ö?Œ¡_üaõÛþWk»qøYLýÛ7ÀI_û¼ó¼zÇ]¨ÝõRÔö] gõZ85÷z3æÆ?võïÞùù$pé‚ïïå<ç]ûz~áß»¹ÿH‚{òÿ#ê_ûjûo@ÏþkÔ®¾ÎÊU¨?ú&ýŠÛÏá¿ÿtÂoþþû0ù;oõcT¯¿ Ý?ô:Ô®‹Éñ£˜ûü§Qÿ‚;&óu?™ÜUk¼Ñ_·]ß÷ ÔnyªÛvÀÍL£yá<êO<Šù¯ ïÜää´ÇÆ üæÛÐ}ï÷B†MŸþjk{ö>€™w¼=³˜@q.Õñ)Ü^â#¦a‹ŽÏ¢]# F�jàî½]!Ë#'3ó@oê-ºÞj,ñéÖßí`®A¨‡Z”F3¬¼øêä¤u¿r>s6;Qïö_+4F&€?ààËÏ�Ïž#\žvà-ˆºv�Ø¿øþý„z^6Ç8¾t€ð»š¼þ¼ñ…„·ýpò2ð§_tð—ÿÔh Ð<úŸíN&ÿ÷ëÀ|2{ûýW~æE`0 Æ�²0–/â7K)Y—ÜfKº óRÇb‹¬]ÖLÄ"úSžêM÷ÆÙ|ª}óçfP]ˆYÒB–‰ú<Æó¬vIyõ”Íï+—Oáƒç`²9Ÿñ¯Ïáiï3u ÿtñ0nÞˆ×o¸Ýïá`Ðç­Øœ²œž›Ä™ÙIlìHA{œ˜8“‰wûð±„>r>‹~Ç·InoÛo1‹X„Û$È „Ìñ¯WNÔ•ÆÁ"–â8HŸƒ:ÃTƒé1ᕽUEîxá:¤17×Àß¼ïQ̺÷àªîõÍq¯9þ¯£ÃŸV«‘4qâä>ý©ƒxí_ðßí*ÐGŽø¿„öªV#¼ùç÷açΡDKðs «ø±×íÄ-áˆ'>ñ>Û· à%/Þ„G»„¿ÿàaLL6Â@„Rqi_ýÊ­øž»6øÂ™4V¯êñ?7\·¯~ÅV|ê³§ðÙ/œ ÇÌÛiMäü>?ÛÓp̼þP¬î†ýÃxÓëwch0{·ríêÿóü›VãG^µïÿè|ó‹Æ ú”ˆ‘ÚÈßÿ”o³hó;,§)bnjù¤ zq©�IY²ì8Șï#˸K¦ ‘E³M§ ÎKh²Dòʘµ W˜ˆ%Ã;ÇûBGɹ§ZõWôèû©· ïG&ÑVYµÆÿÔn¸—¿SüÀÅt‚×Ù\k¬(Rõ·¢¿qÝíM[Ñÿ›Œê®}ŸÊêµþ§vÓmè}ýÏa棇¹¿}*Þ¼„ØC¼òŠ×¯Ê/Áàoþü‹k"—`ôª5ÔÝöÿô[Ðÿ? á˜Üx ê?èŽÉþèˆ/qRýõss+»ôè{ÃϹwk“×Sg`Uï³}'z~àUh9ˆÉÿö64<ݲñÄ£âµÕÄh†ã b´ŽdŹTǧp{‰˜†E,:>‹v`0 ܵ7[7ï^Ö>ÜqU²þ¾CɳøÞõLÏ{"•FÌxqòë.î?*žª¢ØÞý5ÿõ3ÀlK_Äõ.·'.Ÿy"°yûîÚ#q¿/¿ÓÁùIt OóGŸÊ^Ý~êv°ˆ…Á`0® TÀ`,GÄo–R².¹Í"–t;楎Å"Y»8¬©ˆ%ÿv“ˆ£qqC³U¡ýt£‘ñ“§¹?<rï=ó¤PÄ’†÷0ð¾ÑÓøoÇÀ|ì5;÷®ÃžõÙ‡{ŸMA»ß—ægqhêrÂÞ{6ö}w]ÓâeK¾mÜ^Û–äö¶ýs°ˆE¸M‚œ°@ÈÿzåD]i,b)Žƒô9¨ƒ1L5˜­Wã4¸zÿ*¤ñ¯ŸÀÅ‹s¨¸š<!KµÒånwûÿV½=q‹__ÃÃàÉ'·Ÿ xòÉ‹8sfÊ_-¥ ^š‚×ïx¶^ò’‹ßÖŒü®à×þíµB‹7^¿ ÿáß]U+»b¯ì¡àÿ¾ˆ…ð+oÙ‡—|ÏF¡ˆ%žž*^ûªmø±µÝ/OÄâõËääA¡0'z‘—Ç÷¿xþíÏ_#±¤á­Òòæ7îÁkpskE˜ìÌ€æÜ¤|›E›ßa9•HsSË'UЋKpHÊ’ý`ÇAÆ~YÆ]*0Mˆ,šm:]p^B“%’WƬUX>"–$…¯ IÕ»×ÒÚ¼6#bI£ºï:ôýÖE³Rõ)u¢ìëïòðí›a.žäÒ¹ñV ¾ý½BKµ.ôz‚?|;Þj-¡Õãi_{R!1ôÖßNˆXüz¢X©V«èzÅk3"–LJW_‹þßû/hºöžW[÷j}¿ýÇèû™_ȈXD¨îÜáÿùP¹í…þ85šAÿLÏÒ«I ©¤ù¨òÓ°ˆEÇgÑ® #ƒ«Ö4±uUöñÝwgm½YâØµ¦‚«7$ÿNù–ÀïÛG²Ëx"˜CÉ× y×Â_|¿ƒ·ýS\Ä"‡·jËþ¯ƒw}EÜ^­ŠîK×ðë.FÄâ b~ñïÿúÇ=ûjøÃ× º—„n0 ãÊ� YˉДnðÀ"–t;楎Å"Y»8lù"–è!ÿ%ï…�}Ý5õýÊr?41‚J­¤â¡Ëýb²{íìß°C=Ù/ GgÆð‰ó‡Z|sçfqïž«2vNŽ´ã‘“Š}&“ó5×cx2ê ‹XòlãöÚ¶$··í·˜ƒE,Âmä$±/™ã_¯œ¨+ƒE,Åq>u0†©Óc"ÚãžXdåªn „|w$±Tj.»â>X«†ÿ:n}Õ©ù¯­ãÏßñþìÏÆ;Þñ°¿ý®w>Ž™ÙFðЩµICC]¸û®M!ÙøÎðÆŸÚû26““Þë&06–]ºyåŠn¼ùçöÂqš­‡oÑÇ[aeÏîa!ß³/ãð‘QÌÏgó½÷® ØõpKœsñÒ NžžÄù ÓÂ>œ™òóól.Î#Cñеû†ðºÚô[ îÓ>ÏïôÙIÔëÙ~èe[qûÍ«Z}IÌ_­¹Iù6‹6¿Ãr*‘"榖Oª — à”%ûÁŽƒŒ9ü:²Œ›Ã± 0MÍ6ý+8/¡ÉÉ+cÖ*,?‹6¦p¥Áï¬\ÁŸþ嘃|ýÚÞý¨½ì5þj%>ßøæÂÜуR¯Í³©Ÿ:ÞZƳ¬Zƒþßø#8YÁhýü9×ïšSÙ§^]Ï»=o~k¸ KGƒÄszàGÞ�§¯_˜W$öh+î˜ ýì/µ+òÆdŸ;&?ðj4@áßÁÇ+÷¼áß ûÎ{3>4;ãöï0êgOg¯uað·þ°qK«õsç0äæ={æOÀœ×î~Îû<Š…(Î¥:>…ÛK|Ä4,bÑñY´kƒÁƒê¸goVðñ­#ÉGz&½Wü$m®ZSÁþÍÉ¿U; LÌ&í¾#²xb/vïýៅ²¿ˆ¼ëÒ:xE¾öl÷CǸ<üì_ã3ÉzO óç¯ïs¿ÿÏ»ý›ƒÁ`0® ð«…ˉДnðÀ"–t;楎Å"Y»8ì‰X<<xñ\Æg »Û›4g›¹Ä"îŸ?œ1½k×vüìÏÇ`(`ñ~Åö·÷Ÿ|ìé„Ý×.ŸÄ«×íö—knL7pûŽ-ø«êC˜o´Õÿ'¦Çp~n kº2±˜8›‰}ïÞݘ™‹XòmãöÚ¶$··í·˜ƒE,Âmä$±/ dXNÔQY,b)Žƒô9¨ƒ1L5˜mŽ@±n}/2q]££G&|‘Š÷q*8N%x¥÷ßJÓ=wT¼røqšp‡Pž-œÈÇ[²_ükìÁÁî0á‰'.àà¡@@28Ðí‹SÔÀK¿g vïJŠNÆÇçðWóyä\K¤¹gÏJ¼é_߀uëÚÓ6oêÇ o_‹¯ÝwÞÏÅ‹Ó?PÅÝwnHðyù}ôãÏâÓŸ=âo{©z¯*úå7ß„ýW'W¹çÎõxìÉ‹þÌùÀ?Äß}¸ŽîZïúßß—é߯ÿÞWÐhT|S @ž_owoú©ÝËW¾qÿѧq9æôõÕðš—ï«~`WÂîG_½÷?rÑÍÕ1œ›”o³hó;,§)bnjù¤ zq©�IY²ì8Șï#˸9 ÓØdÑlÓ¿‚óš,‘¼2f­Âò±¤©D”]ÛvúÿN~é3¸üþ÷`îØ÷"8€á—½«ßôËpR¿®î~ÉË1õÉûÛ3_ýƾü/˜k6±åÏþ½{÷'lOüÇ_Æìý÷¡Û½Îu¹×åš÷Š£ðD4ø+ÿ•á• ûÙ§ÇÙÿþ6ÌzÖ5ŽS«að¥/ÇÚ_ùuTzÛ¢ÑÞ—¿3Ÿøèè!ÿ\ˆR}ÛºÝÿ·~a_þ<gO£ÚÓg.xâçýi ÷tmßéÿ;ñwLþæ=˜uÇÄ{ Ðоkî—2cÒó}?ˆ¹O~ÑÛõ<Fgß~ôýØvä~>ÿ®?Åå}s¨mÜŒõ¿öxAû}N_úÞôŒ½í·ýþ½óaîÏߎº;{>ýü¡7þ(jõyt¹ øŸJûX–ÕŠs©ŽOáö1 ‹Xt|íÁ`0rÐÄ]û*xÿ·“µ#ÿ‡Õðž^ÅÃ5ë÷;còÌîý¾àþ#î=ÓðõB3óÀ#'²“öP¦]ÿ”{ÛõoÌÚݰ¥Šßye7nÞVÜ{ ÷óOÍãmŸœÃÈxû¾²çõÖ9øâ¿# e¿²'pè|£¿ÛÁ˯¯áê`çì˜W? x}|Ëß:8r!Y¿fÐÁ_¾©ÏÍ¡î^ÓgÀ`0Œ+,da,Oˆî¾Äo:å¶‹üYÄ"oG~^¢qËø³ˆ%¯ÝßNpˆíEh··=1y_9™±½qóz÷†Y6†ŠÛ»aöo®~.¬jàäå1œw¿84ñ+÷ÜîÞT¬ 1Q÷ß×]í¯âõÏ>ÿôALÏ·•ý9\toέé¾ÑT/5qÛŽ­øÆ¡£‰xŽàûV$b_œŸÆÑÔk…úººpÓʘ9;•°Uo³ˆEiKr{Û~‹9XÄ"Ü&ANŠ<Š–uT‹XŠã }ê` S ¦ÇD›£½š‡'–Hczz>¸þx¯Ýqâ"§µF•JðDɉ­ºâÍ˸ð…„Ù˜sïÜýÙ;ÄSO_ò}*žŸ÷z§êÇÿÞ—lIØ{B“·ÿïïàø± ÷Ï“ †w$8pÙ­¿ø{w'^t׋6à«_?篧ée0;SÇÿÓG±a]6nès?ý8rt Ÿú̿ޫ¼¾LM5ð¡x¿û/LÄß¾u ;¿ÏN(Ú÷Íë URãçú¾èk°r8¹ÚÚw<ƒ¿xï#Áx»ÉzŒSÓ ¼ÿ#OcÅŠÜóÂö8¬YÕƒ÷¯Àƒú¶AoÅþï…ÅŸßa9•HsSË'UЋKpHÊ’ý`ÇAÆ~YÆÍáXP˜Æ&‹f›þœ—Ðd‰ä•1k–¯ˆ%NI’ 0ùµÏcäÿý-üÇ\ã¸üá÷ÁÂêŸxS¶kßuþ«wœF#°÷.OŽxü¼úªw5pÚKG{)TvìF÷ îLØÖÏÁÉÿðÐÔ”õð(=áÇØg>á^Slø÷¿×6v¯GÝ/û!L¿ó´:'²‰¯~gÿóïºõTÃ|jnBÅO|å 8÷Ÿ~;9&ÿ>T±æõ©1¹úZ4<a¨7&N ŽxÝü<ãyÇÿÀåü=‚?O‚1«Ÿ9…S¿ýï±ã=îmÛ[¶½÷¼cCÃÀøh8ÎŽtùmïO‹jô¯\}shŹTǧp{‰˜†E,:>‹v`0Jܹ‹ükAüÞª*OœvpCøÕê¾CÉ3y—{¸zû}k 2¾÷vpïÕAÅÃÇùä„Ðå^$n¿*ùÇ÷?D™Wôì^WÁßÿ¼' b÷t¯¹© ×m®âÿçdâõCÞ¢àz�xSòr.Ä—÷¯~¶ÛR¯T¢¦žå÷þÑqÇ#Y×íÞ*ø?oô8=ži0 ãÊ¿Zˆ±|A¢m±¤ÛÉ0/u,±ÈÚÅa˱ŒLOãœ{nÄÿÌâÔÜ›¼ˆ¿<ó þøØCÂe‘¿ÏU z&"–�ì½z#^tÕv¼îæëñ«÷¾ÿþ%w¢q¡Žñ.büÑQL>>бû/böôŒ{30{é¿x¼sçgqï&Ïfb?0~63w¸yÐÅFÆ6›E,J[’ÛÛö[ÌÁ"á6 rRäQ6HQNÔ‘ž9‹XŠã }ê` S ¦ÇD›ƒZÙ¼‡@]ÝÙkËôT=^ÄWa‰‰X¢r`ã„+·TÃÕ[jí×ù"ükãÇÿñY<ýÌåàµE¾Õ±xnWíÄÐPRðñØc#8vl¼-°©T|_¯|æÜžxò|Â~ë–—£¾ˆü_Ç7î;ƒÿÃAüï?ÿ.>ñ©Ã~\§õ#à« ÞaîåãÍ_ÄR ÆÇqÄ_ Û} ?áoÈoyÞšŒí?üÓA¬|®Jدpe›Ï|ñhÆþ†ý+áÖܤ|›E›ßa9•HsSË'UЋKpHÊ’ý`ÇAÆ~YÆÍáXP˜Æ&‹f›þœ—Ðd‰ä•1‹]3Ì5aàC>Yg;Œ~è¯ý‰µpEZøûøße½këª5áf ñµ¥^OPqùBŒðku÷‹îÍØ^ú‡¿óE,¾ÐĉD€câsŸBs2ùÝî[_¼^ˆÂW â×/]Ä™ÿü»¨¸ß»ÜkV-\­¤æž;&|ŸŸ¯'zñW“ 0£ù{ˆÆÄ{ESð* ÷ÓÕîØ +ãc¸üñûœ¾ Æi O0?‡ÑO},ÅYA÷ó_ŒcÜV€ªg$„2(Î¥:>…ÛK|Ä4,bÑñY´kƒÁÐÂÊþ¦¿òIľZ}ûpò<~íæª{j`¨·ÑZÕ$BüUB^ãsëÎ*ú»Ûê–Ùyà›G³ü­ßßãò{ßM'AÍ1÷3înOcïz?y{öÕòÿü˜ÞßPÿó'z±m•÷}Þå› ?z¯úËo�ó­lýŸ¼®·î¨¸9z?x䓃Á`\iàYË$ÚfKº óRÇb‹¬]¶s‹ìÏïOŸ8ŠOã(tñ=»wàú՘Ƅ0Èò sš>0ŽJŸûЬ¿æÿëaÊ­­ÏáÒü .¸Ÿ³sSxèÈÆg³_@œZLŒÐ ìíY…5ý}¸0ÕVÊuy¦±º«¯•ÇC‚× Ý³{æŽÌåïªÄ6‹X”¶$··í·˜ƒE,Âmä¤È£l¢œ¨#=s±ÇAúÔÁ¦L‰6G|tƒíù¹ÔOÉ\ô¹×$rœÖ*"Áª'Yâ`啨T V)IÇuc<â™vÿg݇AU_ô Hüì\¿;†2ö7Þ¸ÿç/~�&X½¦cãSí· ‘'©zoCBôKn/Ç5kú°jE7V¯î ^Kô‚ ®JÔ•p9j_ R‘Ü\ôúDAßü1ðŽ·_WmÏöëGãgv1¬_Ûë?Y¤J°'ã EG¥ê¸Zøù–S‰17µ|R½¸T�‡¤,ÙvdÌáבe\ŽRaŒ,šm:Tp^B“%’WƬU`‹‡ú‘¾Â{AëRâ^‡æ/_BszÊý.ØŸtèˆ.[þ×òšd}qŒ' …jW_›±]÷æ_ó?º¨nÜâ>¼¢Ì×õ8&ïû ªžˆ%–C…Ú4röÿü¡ƒ-qˆ·¸™wy®»ÿκcâ­ÓŸ�Ƥ²}œžžd¾CÃØ÷¹o•ÍÁÏò«±ÈV¾‰ò¬†ŸhE›ŒµÍy°¤ù¨òÓ°ˆEÇg)_#lqôd Sæc¾¢ù÷Ârë¶.|÷Dòûî7Tðâ¦ægÏ%—K¹mG Æ<Žtðü­5<yº}öÑ„ƒÇ=¡ ð­ƒÞdLNÈ[\ûc'ëîßÃA.OŸó^A”ä÷®×7¬«âè‰éðïæ(ï¦û]x·oëÆ{‘¼÷ûÝ“À‘ÕÜ߇x«°lèxã1±îýæ™,ɻ﫷^µÇ›ïêÅ;zpüÔ”;&N‚G>þ˜o9ñ1W2XÈÂXÞˆßt¢td[ä°ˆÅ$/ѸeüYÄ’×îo'8ôE,¦Ø³v5~áÎçcLŒ<ÄÀ7¦þçÄ©‹øæØ˜¾Œ“3˜jÖ¡…Z%ÆëÞø™ÃÝ{®ÂÇy"aöÐø9¼tõ߯µ›M´oY1ŒmÎ&š“ >ù6‹X”¶$··í·˜ƒE,Âmä¤Ì£\¢œ¨#=s±ÇAúÔÁ¦L‰6 m¦¼;x)ôõu¡Võ®/±¹#ÇðqœãE,ª˜ããuTª]þj.Áê%¦ZÇêÕŠ—kbh êù~†þß7ÞJ*M\{íZ<ÿæ5ر}›6ô£«KsÑM Å#ˆ^+$½²Šã¯ 3Ð_Cooç7V†»Â›”„ö#QGxTªŽ«…Ÿßa9•HsSË'UЋKpHÊ’ý`ÇAÆ~YÆ5à(¦ÁÈ¢Ù¦Cç%4Y"yeÌZ±DðV,ñu9á+}(ÐRú‹kÍÌx*Ò¤ƒã´þñ_:G²YD+«4ÃkTeý&t §V ãR›æ…‘Ö*3ÕðÕ<•P¬¬ä"_·Ô“Z¸‹?Ôú«4ëŽIZÈ^|Ƚ–W7lD¨¬XÕÞväËoG"—J(xa‹^Ÿ\šEÌ+·i ‹ F�ï·mwðžû’õOŸ ÎuOžM¾:ÈÃmÛ*-ßço¯áo¾Ó•x¿ÿ8t°oƒgÎeãݾÝýÎIíïÖgdz“výwÍ›C]ð%¦Ùlbûªf¦~Æ¥¼ì^WõAŠuƒfffR"}4n?}Gfg¦Ñh4À`0Œ+,da,_Äo:QºN²-òXÄb’—hÜ2þ,bÉk÷·åˆX¼X¯º~/~ê–Aë˜׿N?€Ÿs¿düõ™'qßèi»ÜÂ;}‘ïüØ<îÚ³##dùîäY¼dõû±3š{öíÂÌÙÙXžÈÙf‹Ò–äö¶ýs°ˆE¸M‚œ”y” R”u¤çcÎÁ"–â8HŸƒ:ÃTƒé1Ñæ ©ÍÙsÙw]{g¶ï±£Ó¾½“;ŽÁqEÒ”Ù—‰XˆVb©ú¾‚GE ÷¦¢ƒîîbÞæÚ¨„ûÂ[qågÿõuصs6D1@ë’ŸÇù¯ ¢ =ê~w—æC]ºÝ>û†„ŠÔ¥0¿Ãr*‘"榖Oª — à”%ûÁŽƒŒ9ü:²ŒkÀQ*Lƒ‘E³M‡ ÎKh²Dòʘµ ÏQ‹Ä'zmM5öúïS—8´®5“ gð–?q9©wMvzŠƒ¢«;·Ùÿv(¢©…B–(r(ó7DÕP¤ÓïÓôVt‘;ÏèÜÑ)¨Nww < —¾‘s% U¾²ˆE‹Ô؇ ímbtâ³”¯bÇ»‡ÕÑ/ßmý™ùÊäÛ¼©þp05מDG/5±a=áÔ3É3yopÝFÀû]¡Ç·v]µ¹×éõÙÙ&n]œKú®pp÷µu÷šÖ68—ý.»²زÁLj'õL}^X¿fMÛVÉWšèvsß¶Iý¡þ^ýï¢ïúÆ~ÿUš?² ÁÇó-'>c9€…,Œå‰øM'J×I¶E>�‹XLò[Æß¿Ä¯ì¾Äc¨ò’´‹Ã+b1¹àýJl §[V âúëqïžØ4<ˆÆDÓ‡&’|$ç=€ÿ?'Ãç„ök°yx[V®Àµ×áý<‚Ó£cÞØvÓÁê™ì[¿Ïœ;ߪ?<u3î·±žJ N$ü½qwlÞŽúS³Y¾Ì6‹X”¶$··í·˜ƒE,Âmä¤Ì#B1˜U ¼:Û¨Êj±ÇAúÔÁ¦L‰6Il‚sÂÅ‹3˜œ˜ÇÀ`W¢õ†ÖàÈ‘ã¨ú¿ì¦Ö«kÒ½÷~ù½re7~äG¶·ÚÃßã¯ÿæ ¦¦›Ák dpñŠÿëíð5?Íðo‘ù¹ìOþðÅ£øÂ—ޝЉH|! 5ƒ#Ýw8ÁkÜÏØ¸{#Ãåô¨õõVñk¿¼k×d€5Ý<ÏœÂÙ‘)?1ŽC‡/áWéùÈ!Nê57'¾©òÖßþJø0²ê¿Ö)ìT8s©% ¶UQ§JôôR‡èH] ó;,§)bnjù¤ zq©�IY²ì8Șï#˸¥Â4Y4Ût¨à¼„&K$¯ŒY«À"–4‚«](J‰*šÅüõ)â ¹ÙLÝ©?ø¨9è_Óã×¼´›Ô>'‡k—ù߃1z)7GßÖè ½j‰ñ(ÆÐk¯8ÉÕMZã#êSü3›íßìáƒ8ù{¿î dÚâ´Vrñ×1 sj ‹&'Zû…¢ 9}•&&/jùn/ñÓ°ˆEÇg)_# †]Õ:îØUÁžjóV9àÞ}òLëÌïã¶5÷ºÔn ôÔqÓ¶*î?Òö}üT{Ög¿£Þµ»ê^K’¢¾î$¿‡±BÞ¤ŸWq•¿üFß»ßÁ]{ø$Ä`0W*XÈÂXÆ`Kº óRÇb‹¬]váD,?ó‚çá5×_¨qÌšÁì±É̘æq§9¼×¥E,Þ«~ô¦ëqç®X;ØŸðûÀƒæs‡ûoöÜ,îÙ³+!dñüL]ÆŽ¾a›J¾V覭[Ð;æ`ŠÝÆ"µ-Éímû-æ`‹p›9)óˆ~%G9 ¼:Û¨Êj±ÇAúÔÁ¦L‰6 mœðÕ¾8¥éà‰ÇÏã¶Û“¯ xá‹6á+_>ñq µñ߆eÿõîçyÏ[«¯^‘ðŸÇ¤÷Ú¢œ_U‡ÉÄžè%‡‹—f2æ癳Óp|! «D¯ü!D¿^¯øv'XñÅ{`vÏ]2"–Ë£³øû<ƒG»€©ézHå½(ÿ@Šžùð¤5•˜ñøä¼/féîns{cè‰gšŠyâ?§àÁ[ÐßgN°Š÷:¦H(“>£ªŽ«…Ÿßa9•HsSË'UЋKpHÊ’ý`ÇAÆ~YÆí€£P˜’“E³M ÎKh²Dòʘµ ,b!V8¡ÈÂ_5%Ü.‘3èÚ±+Q×CýÄQÿºD©°þõ3¼ˆR”cÅñp1D«°8†½qÂUNDã@­fdˆ†¹>r6ÓÖðúwìˆ/õ2©kV|y×V_tã i÷[t¡8êøn/ñÓ°ˆEÇg)_# F¨»öö&„,¸—§N'MïÜSE£1ŸôÝÓ²<y¸ölöu×^ïQar¥ÓÍ+²vgÜÛ±³À`„x:»€¶¿RÌêþr…,»×Up~‚0:¼ðï>|öW}`0 ƈbÖ¹f0–XÄ’n'üԱXÄ"k‡]8‹¾}Ó}ˆ4×DcÌ}øtb “]ÆìÑÎD,Þö““—26?rÓuxõ×ú"–æló£ó˜9=ƒÉ§Ç19+_&’bû¯1ÓÀmë6¡§–Ô\>;sOM^hýÚ.Â÷ìÝ…Ù‘¹üÝÆ"µ-Éímû-æ`‹p›9)óˆÀ"Ó<¤6¤h—Ö‘‡/‹X¢ ʵ ÚOÔ¾þõSH£§§Šÿɽ¨uÁØÖŒžn…Ÿ@ÄÒÄš5]xéK7gü~ø¼¿‹JÇ ;g½ºcÇÆ3–Wï[ˆXœJ äp?•ØgÅŠ~tuuµë|K%|4q;á 矾óa|óÛg|KKHâþ;0 ‚N·DóÊ#Ç“ýòöÅþ«Ã~¥úãTk~V¹ý úˆX¢1 ÇiïKᑺæwXN%RÄÜÔòIôâR’²d?Øq1‡_G–q;àXTE³ML}ÈÂd‰ä•1kXÄ¢e¾�1æž}*S7pÓ­¾0¥¾¨+üDÛ½ëÖû«°øu¡ˆ%§T¤{¶Žñ!˜?|”zCßÕ×¢« 蟛YW%öqëz††Ñí¶ûý®ýzåê1Ê„ ¹‹Jš*1 ‹Xt|–ò5‚Á`¨qϾì•ê±Ó¾œdwíI[îÜôõ„&O‰„,û²öšîu'õSøºûýø‹OɯœŸy"[wãVï‡åž>ú ýxÇë{3×ô3cÀüØB^é ƒQ$xEÆò¥þ•mÇoTÅoj+ýYÄ"jg‹,ly"ÙW€ú¥9LÜw>‡CÉùZ¼‚ŠÕì»F7cæØæFf}ñLd{pú2.MO ¹ã"–Ⱦr©‰[·oÅ×iµœ½„±zr æá¾^\;¸''2ím±(mInoÛo1‹X„Û$ÈI™G±˜æ!µ!E»´Ž´8txYÄm–O$€8rdO>yû÷¯IØîÛ·¿øK×â£9Š'¦üëM{5Â󟿯|åvôõ%¿5„/å”/t ^”^Í% //ï—Ñ­ãV<{` ““óh¿öhïžUØÍ<óìX°2IëWÛ„îž ~ï7oE 'NNâȱ =>‰o}û¼?$÷à@ökÜé³Sp*•Pôâ„ã×Äí·n’æšX›Fréîr0=ƒÄŸ?^ßxxûv¯LØþ«WîÁSoÿnKHãýçýàݳ|ÅK·âÇ_{.^šÅ!·O‡ÝÏ\Âɳ³¼‹I™tãR’²d?Øq1‡_G–q;àXTE³ML}ÈÂd‰ä•1kXÄ¢eNâŠ9§àt÷ )p™þú—0üoJÔ ¿ê_aæ‚3z)o„×]µ«¯Çê·¿ÍÉ ÔŸ}Êý<‰ù‡¾ƒúÃ߱˹Dø¹ÌLcúþo¡ÿŽ»Úõ==XõoÀÄ{ßå¿6¨­,ž1WþÖÛÐû‚;P?~ óO?‰ú3n¿ð8ccÁµÝ!H/ê=ݾpÆk‡ÖaPÒ|TùˆiXĢ㳔¯ C{×5°qØÁ™±öÄúÔ£Á+†" ÷×m&?™ô½y;¡¿ÛÁÔ\àëýû/'¯�»ÖV°uE#3o{jMܵ» Ÿ:)ºüïŸî½J½éö™³À¾ƒ ~àzïûköþqQø¡»±j€p÷Þ*~úÎn¼÷ëÉQ~òà{÷¯½ ƒÁ¸ÂÀ+²0–/H±¿Q¿©M*±ˆÚYÄ" »ð"óȑ߰¾«’}Hvìò(Fæ¦ý‡RÑŠ(«†ú3vŸô�¦NN%D,ÇgÇñîSâ× ‰D,fÏÏáž=W%lOŽáÉ© ‰º;wïÄÜÈœ#Øf‹Ò–äö¶ýs°ˆE¸M‚œ”yDïç²A© ’µKÊj±ÇAúÔÁ¦L‰6iø„sÑqÂ×ïTðÁ<…™™ì ²mÛñÿüêuxë¿»?ùú«ðªÚ‚ŸüÉ«ð[¿u#~â'vch¨+ãóÙÏÅÙ³S±µˆ¥eé I‚QM¾t<aë5ÿâÏ߀;^°]µJëEë×÷ãWÞr=†‡»Qsëwî½wo·® D,á£cÙÕÍî½{k0þ'XéäöçoÄ«_± *x¹ÏÎ5|ñN/¹k3ºÝáéï¯` ¯Ú‹/}ãtðÚ¥öï[…·þÂõX¿¶/³TP­Vñ²oÁ¿r‡o³zUn}Þ¼îU;|qOû¢#u)Ìï°œJ¤ˆ¹©å“*èÅ¥8$eÉ~°ã c¿Ž,ãZsˆdÑl“²©Y˜,‘¼2f­ÂsTÄb¢Ã¼<‘I}ß÷J8Cà¾^8«Ö¶|<!ÊÌ#&l«+VaÝŸ¼=×ß¼Öˆ´çù/ÄŠßþÏþE¶28„î›oCÿ¾]ûoÀR‚}‚å0öÁ¿Íجü©ŸÅŠŸûÔ†‡½Î©28Œá·þ&zo‘}­mßéŽÛË1ø3oæ‚¿ Zoš™Õ³õ¿êG€n÷©ãÐ `pÐß-¢ïR”4U>b±èø,åkƒÁ0�Õ}‘F'/''Ú wÕ܇}ÙsWµŽ\•ô=;žô½{ŸÛN dÑÀ_Ðí‹*ã8tø‰w;øæa÷䆟þñaà'ݺÙT küØ­ù¯»í›†ÝûbÍI÷o”iüæË{ü× ¥ñ;wÜ1ƒÁ`0®0ðŠ,Œå RlÇoTÅoj“ÊŸE,¢v±ÈÂ.„ˆE¾ ƒ˜COÄâa]ooš3:~ãÐ×}ä/o½ 7 ®ÅÕk×�’vß=¿3:†]}+ÐWéÂé¹ ˜¾œy,çÖ¶û@mO×J¬èÇ…Éàa¢Ç19Ÿ|€w×Î]˜;0'æ`‹Ú–äö¶ýs°ˆE¸M‚œ”yD`‹iRR´KëH‹C‡—E,Ñiû«~x¯ç©¸n\¼8÷¼û¼ù-7ùB46mê÷?*<úè>ýÏG\úZðKo…=‰*ÂI<Aǧ?s7Þ°;¶·_ ÔÛ[ÃO¿ájüÄ6üUJ¼|×®ém=„ŠÐl>þ©cˆ~‰íýïÀ¡Q\·uÂîu¯Ù‹ÛnÙˆc'&ý3É®Cزy�*´Ï=Žwý’¯-ú‘Wïò?>öéãn.'ü?½&§x×ûžÀ¯½åy û[Ü~zŸ nŸ&§êXçö©¯7{ãòáÇ/áéƒcð&ÌAu\-üüË©DŠ˜›Z>©‚^\*€CR–ì;2æðëÈ2®5A5ÿKY4Û$lêC&K$¯ŒY«À"­–y…‹”ù£<àiôÞü‚„Iß ¿Çÿx˜ôAŒÿú/ø×ߊðŸü>6ýùûQlÙ×¶íĪ?yšcîwÌ çQY±•Õk3¡çG0õ‰ëî݃®²âý¥2÷Ý0úÑ`ÅÿXÂ`è'C?ú4ΞöE)Õ-[áÔ²ÂÛÉ¿y/hz:\¡.º¢;î÷ãgÐs͵ [Oïãbú}ïÆÜûÞ¬$ ”4U>b±èø,åkƒÁ0EwííÁ‡¯jrçïªâýÐ õÝ‹¸sw _zZêŠ{<! į‚ß¿ø™;zñžûfõž~ì] T6í½¶?y]{æK=74šÍ ª£§6‡ÿùã½xÍŸMû¯AŠà‰mÞú!÷s”æ0 cé‚Wda,o`;~£*~S›r|üm±ˆÚYÄ" {e‹X<lêÂ֕ɇY¼¯gFýí}«Ü/5ë26çç§ñí±3øòåãxfê’/@YÕׇìØ†¼œÓù{+­Ü•Z•%Ž]k×`Ý|¤/,bQÚ’ÜÞ¶ßb±·I“2,b1ÍCjCŠviiqèð²ˆ%Ú s \‘¥æ¿Vçé§.ãö ÿ:|ç;§ñî÷<ŠfÓi¿"ÇäFW|ÃÕbšÍ ÞérŽœŸÊ˜÷ôT±ic?Ö­ÍŠX¼áøûÀÁC£1Nà‹_9‰ñ‰lÿvnÂ=/Úˆ»ÝO$bùî£#8{n’TCÊàgá_üÚ äaÇÖ/X úuÿÃ#øÈ'm׬êÁö-Bˉӓøó¿z*Üߢ#u)Ìï°œJ¤ˆ¹©å“*èÅ¥8$eÉ~°ã c¿Ž,ãZs°ˆÅÖž,|Ô$ÅØ“°À"–ÒË+ºÆMþóÇÝgj ©Km×¾ðJ¾®ïÌiœûÍ™ì+j+Ã+Q»jPÄâ­ürù~Íñ1‚I'ìŸ÷ê ª»qéÿ “ß¹/kX«¡ºej;®ŠX¦¾ðYL|ào2¡<îñO|y¨î¹Úÿ^ß s]IóQå#¦a‹ŽÏR¾F0 ;ܵ7ÿ/–í©äøÊÛj·ï”OÞ¹ù9¼ùînüàõ]Âv™§'ùõ—÷à%׸±É67÷fpãV¿ò’îŒÙ7ïþ* ƒq…,Œå lÇoTÅÿ¾¡›E,¢v±ÈÂ.®ˆEìg&bñìi¶‰·ÜyzkâåÌûÿÖÇëøw/½{×­FVôã7¾ÿ{0ÔÛƒü\“ÿÎÎã®;¤¿gï.Ìœ›p°ˆEiKr{Û~‹9XÄ"Ü&ANÊ<"èíç2>/“¬]RVs°ˆ¥8Òç Æ0Õ`zL´9ÈÜÇT¯ð Vf©¢Z­áÀ³£xÛ~÷ÝwRøºFF¦ðßûˆûyõzÀ…ð=…J&JÎéÖk~*5\8?‡·ýñ·pÿƒg ƒ gð§ñ]|ñË'}N§õØËÁødÿãOÂåÑÙ\ާŸ½„w¼ûa4›ÂTÃL°{¾rß|ùë'¥|;¶B_ SñÄCU|ä‡ñßþìAŒOÌAr÷ñW¿u¿ó_…8¢#u)Ìï(ßdKsSË'UЋKpHÊ’ý`ÇAÆ~YƵæ`‹­=Yø¨Iб'aE,Lôšvüá̽~4OÅ…·ÿ'©˜Å„³q‹¿í Y¼lsßú*Nþâ0{èYp˜}òQœù•ŸÁìr±@Çdß{Àç}jž˜¥>³¿þ«¸ðÿBøJ 4<QÏÅ÷ü9.üÑï´NnNøñÿ"r7¦>ý Œ}ê¥Õ½W³ˆÅÒ‡ ímbtâ³”¯ ÃkêØ¿Iü8oÝPŽ/+‰îߨpïËŠ¯€7o¯¸÷jåמ¦{½nº×©¿xC/þãö [ãküåÏôáïíö_÷³Ð'jNãW^Ú…çmÍÞÓþoÿâàÉÓ`0 Æ~µcy‚ÛñUñ›Ú”ãão³ˆEÔÎ"YØ¥!bòc$ÆéíÀ¾1ÕÀÞ¡Uøÿ^ór|âñ§ñØé³™˜rov51ÜÓã R<¿úXƒ³þð߇¯<ŠûÇá‹1>;ëÞt¬`ËŠ¸mÇV|ÿþ=è¡*š³œ\Eù�+§»±oý:<}v$aß]­âùë·`î©é‹X”¶$··í·˜ƒE,Âmä¤Ì#‹XLóÚ¢]ZGZ:¼,b‰6ÈܧUv|O4â‹OB›)÷:ö·ó$>ù‰¸éæ ¸úêÕØ²eCCݨV+nû<FGgqðà%<þÄy<öØxóËÂT*µ`…O¬á YÈ_YL&ªtœö’ÊN¬Î/»ygÂÌlñîǰ}ëaÜqû&ìݽ ë×÷£¯·†Ù¹ÆÇæpøè(}ì<¾ýÀ¹`U/e˜èA`Õ}@E8r|¿ù{ßÀ‹ïÙ‚›o\‡Ð?Ð…éé:ŽÃ׿yßøÖi—£!KÑJ,ŽŸ¨—cïþë'qÿÃgñâ»¶b×ÎìF½ÑÄØø¼Ë;ïMf¸RM%øeÄC^Ä/ÿæWpçmq‹›ËŽ­ÃX¹¢Ç¯‰Éyœ;?Çžº€¯}û NžžBÅãjøóüÖˆ%÷ï¢Íï°œJ¤ˆ¹©å“*èÅ¥8$eÉ~°ã c¿Ž,ãZs°ˆÅÖž,|Ô$ÅØ“°ðܱg}’5"qF–\ð';jNX/B%zÝ‘ôVq¯§naú³ŸÀÉgŸÂðk~}7Þ‚ÚÚõ¾ª£96†ú‘pº»Ûù¸ö]îgþÄœzËëÑ{û¼û¥è¹úZÔÖotm{üÕWêF0óÈC˜üú—0ûà·}HW%x}õ‘$ýŠFHÔLAþGîë¤í‘‡H–ê´òê Çþú=ûô?bè^‰þ[^€ž»Pv/¼ 4F/cöÈALßÿ-L|æS€[öûçýýq…cí•kî‰ïâ}&¾ö% ¿â5è½æZTW¬t¿À×Ѹ| õgžÕº@ºŽ”õÝÃb±èø,åk„…)ƒÁˆƒê¸{_7ž8ýÁ»«~» xÑ®*>ùhÖæî½î#BÊÿÄÜܬÿò[¾§¯½¥ üξv gÏ6qy:xUϺÁŠ/´yéþ*~øæ.ôu»ux¼¤h†û7ÇÞþã½øÁÿ5‰éØÍ¹éüê|â—HK”Ã`0ŒÅ…æ·ö\;G°÷¯#)·<Ðþ7úTújêãµyィÜrËmßð/_ã¹…fì'¦Þ¯<½Ï£¿ñga’ÿ²ˆ%§ùy‰Æ-ãïÀŒ_âWv_â1TyIÚÅa^Äâm÷îFmew‚cîè$æNMÃVÄÕU‡jèwùª“±õVJ™|"X•ŽKˆ×®:XòzhÎ61ñÔº7ô¡gCOÂfü±1Ì×ù}®ôVðÞ‹âÁãÉW¼h×NüÔÖ1sv6aŸ;Ž”®gK6¶h›E,&9éƒÅ‹X¼ßó­—Öcw¤½ò&]_ÿMÌ!½r¢NÈÁ"–â8HŸƒ:ÃTƒé1Ñæ sŸx9ü_tœ6©á‹7ˆšî¿uÿ}ÙÞ¶÷ÉgNKÐá­œâ‰+E\Ä„h6çÝçHõ³îÇòæ˜'z©ú—.ß× ÅѾðsj9µskøsŒ„Ì]ÇçªúÿVÂí «n¿Â¾Ÿ†#Gïÿñùß Ç¥ÀüÔB1I­Åëåäý:¾áöÓçôók†cT Ǧæç¬€ã„ãíŽEÓó Æa.™ã(|MSÔœ+ÕpÕšø˜açwXN%RÄÜÔòIôâR’²d?Øq1‡_G–q­9™ºg>ûúR®«î^—‰•Ò®„Qgödá£&)Æž„ÍÛa%÷ƒ,|²Îj3ox«oÌ7½Oóî¶·`™£-ŠÔ*ÁJžmÝý_ݵks³óDž]·{ìWHŽØÎ¹œõ¿òÖ|Û€·Öº&…Ü¡m¡¨Ä_}ÅÿÀÿAD-ŒáePó÷rjxW§fðºÛ4<ûh•¥“ð_/¼w‰ â6[|ˆú_iA5ä@8nÍX¾Þ¸Íûó7~t…}ìrÂ1 ïUvÍ–O3´÷ÇÄi‰“F8žü´‹ Ñ>«…|Q+­ï!ëí—FØÿfkèÓË£ŠxÒ‚#t ‹iXĢ㳔¯iÓ›N)åºzø™‚ Žž Äð;¶4P˜ùÊâs*ÞëcE+g»s 9žËçT† þûÇûî'~m†Ïévçm/Ô `%ˆÅã«Õjغ©Ç(í׿TÁÜÜ6­Ë¾ÆW6^AñxóñÇ|W"ßUû^Ññu•±|°rå ÿßü΋|m ÿm¤>þÛŒ}(öoúI9ïßôvÊ¿$YsÈX¾ÈL±ÈÛ‘Ÿ—hÜ2þ,bÉk÷·ňXò9:±xð^4ñÈ(z6õ¢ºÂ}@×Sõ‡¦9ï>ܪSÛÞÝlÝk{е¦Õ÷AW—ã_òêÓ Ì_œÃ외ÏÛÐ-Œ-« oº‡Î_@÷ìÞ…Ù“s ûÜ1¢t=‹X²±EÛ,b1ÉIÿ,GÄR*2sH¯œ¨r°ˆ¥8Òç Æ0Õ`zL´9ÈÜ'^nU†©à= ©ùe_¼ïaM$d!_�’¸uç;9-ÑJ ‰¶+­UU¼§_þŠ/×ù©Sx£ z‘èœ>òD ÞF3¸±ÐlzÜÍ–À„â?…ã&s©†‚ø±*ÞWÊJÐO_ â=h¤@ã´„9AîQ®„èa¤Ó°8¡¸Ä祪ÿ3àV‡ÛÏhÜ c*aŽ•Öë–‡P¡šÛ-ï^%¿P‹ô,xÙº¡â b‚Ufc±¨ç¦Ø‡ à”%ûÁŽƒŒ9ü:²ŒkÍ!±ˆxKY4Û$gêC&K$¯ŒYìšaî¬ ²ðÉ:ë#1BoJ¬®ŠX*þ9›|aƒ÷Õ»;¸Ä6¡�"8k‡×]j‹a¢ M´í+¡À"q_d–¼KI•à¯>FN,'XE¥]ŸB¿Î_Ìý„yE³6zýžÓÊ3èKü•Ǽþ5Ñ«hRk…• жCûrq$Ž rlšNÌ/ºÖSðo$Z©P 6AÚ>6&žO57•3·ÜÅ,Íð:NÑ«ƒÂÔ"žV?c9yõ^<ÑQ%ÿÄþN©†ýi­V±¨|ÈÐÞ&F'>Kù‘1]° +ƒ±üàýøÀÿn˜®‡zÕÏÆ ×�Kr¬˜Bs®ý|(hñ®Šñ+IøCÔ¯]x¯ Ä,É¿ýœJ¯žh†Á`0‹²0–'(õ/‹XrÚ‘Ÿ—hÜ2þÌø%~e÷%C•—¤]vqE,ÓOŽ ü:±DÛÍ™¦O¦êlþîÿæFf1;2+Žî¿©C“˜<4™±‰Ûz¿^;77…=ƒ˜m6ð©ópyzqlY1Œ]Ý+1јlå”;Ž”®gK6¶h›E,&9éƒW ˆEGUNԑȆE,Åq>u0†©Óc¢ÍAæ>ñrf Úq¼Õ>šŠ+|aE°jI%½G 1QF¥%ñAœX Ç_AÄ{ÈDNìo§Ú¾Dy¤s‹8šžpÆ¡ö 1MŠEˆž¢y¤Úù´9h¼•L(|pE‘è$6 NÈÖÊ“Ðl}‚§e_˜RIÄõ]zýqk&~ îsÅÄ5Q 2u ÆÄ/±äý¿ŠUÚ‚˜P@Ã"–l™tãR’²d?Øq1‡_G–q­9XÄbkO>j’bìIXp …’ûA>Yg=Ä… Uê…†'v'I%qT[×Ñðû°ÓºœøˆÄ•Ø:N´ŒràãTœÖõ(Za%ˆÄ„/Áûì!…'b©$¯5mHx}Bàã·5á_KÛ"Ív¥%ð@ìuBxÅ_ò¹â .‚©Ä!¡ikÌ¡h­ ïK,;o"–¶¸§â$cµÆ„Ú·T#LÈï•}ªw  /Ÿh‹Ž¢«©„"š yòûZsËñuà*±>'Ä;±¾k£ cXLÃ"Ÿ¥|Șúšçaƒ‘͸§öX¡é­Ü=Îá]œfƒ×Y¢^÷Võ´ôOÁÄD5ǸÙZ©†Á`0W&XÈÂX¾ˆß¨ŠßÔ¦t{z›E,¢v±ÈÂ.®ˆEÌQœˆE¼-±¨¶ÉLxðÌäE¼ó䃉LJi¼úæ0;2×Ê)7J׳ˆ%[´Í"“œôÁrE,TâA2,'êHdÃ"–â8HŸƒ:ÃTƒé1Ñæ sŸxY:ŽNëŸàÁL5|ÐUAüõ:IŽPP°Íí«P´ºIÅçóÒUü>D+´„Ž#ÈËi5µÖª%þ¾¨¦{è„<Q^í_¤ÇyüÇsaìh5–,G˜QðЊVœ¤ˆ%°`Ìj᫊š áBL4>í1qÿm†cåµµr¡0k§Åß±ˆEP&ݸT�‡¤,ÙvdÌáבe\k±ØÚ“…š¤{4ÿF*¹dá“u6÷ D…ÞÁ¾Bȉ®h¯Fâ—Éa׋j(ˆ^i¥´Ež8„BK›7¹DÛœVLòÅQ¤~ÞÍÐ?ÄP\¹ó÷ʼn5û¥p5µfÊ/¾‹“ãhu•HLC“P´âÄ®£­1iÙ·ëZ}#±øÄ_é Á 5~'vRN½ÓÚ§É#;ês¥Ù^­.Z'\6NH+Ú(èÓtW>dho£Ÿ¥|Șúå}We0 ƒÁ`,?°…±<¿Q¿©Méöô¶à‹²ÔVîCJGÂ%²ÅHµ“a^êXްE,²°,bÑò3±x1™8—i‹ãÖÛpë†-¸ôð(XÄ¢aKr{Û~‹9XÄ"Ü&ANÊ<",K¤('êHdÃ"–â8HŸƒ:ÃTƒ2W)™ûÄˤã­öA­'^‰ETüÿ%}Ú¯r2ã_íáïµ)ö�ªõ "É9¤ÍáÄ2¬&8Ò>"Έ'ªuü^šÁk‚¤q{ˆd×'9FΤЭ!Ž¿c¢ý  †ö8§Î…‹6¿Ãr*£9‘á0ðIôâR’²d?Øq1‡_§5¿‹ä`‹­=Yø¨Iб'aAóo¤’ûA>YgsŸè¼Ü~]O›®½êIxˆfˆÓ²K_Oâ×Áàõ=ùö*ˆÄÙn ý|îpõ‘0„èï‹}Br(*¡°$ˆKBdòA[D’î#91©†=œX{2FÀÓþþBñŽ:‚þA~TG®‘0)Ð�9<%ÍG•˜ÆQDZñ!C{›ø,åkDÆ4ü›“Á`0 ƒÁ0 YËÉ;",b1ÈK4nfü¿²û¡ÊKÒ.«ñ°;ÁÁ"½Ýüºíñ©óá¶Ûð w¿S§À" [’ÛÛö[ÌÁ"á6 rRæE,ù Ÿx™íÒ:ÒâÐáeK´Aæ>ñ2™úDjbãüÿ%mœ ‡(϶€$+@I‹Mòò cÉ8NÌF='Â_„û+«”Ãô'x`•='µ|bOóÒœÙ<$㜊(ç8GÚǦõüË©DŒæD†ÃÀ'UЋKpHÊ’ý`ÇAÆ~ñüî”COÄ"г íJ¢ÎìÉÂGMRŒ= ÏmK'µá¤Îî¡1áàd„"Ùމ}̧-žÌZ9)ûøu%±2™ÌO0^YÿÔÕ-gŒ…}Œ%åèØ‡>yGc2G'Ùñ4· ”Í!ø'gß”4U>bGe`ÇÆ‡ ímbtâ³”¯ÓðïVƒÁ`0 Ã,da,S8É›ÚÑvü Wb›E,¢v±È²ˆEËÏBÄâa¢1«VâÔä&fçÐts¸·{×­Å‹ö\…›¶nÆÌÅ9Ì^˜ÏσÒõ,bÉÆm³ˆÅ$'ýcpáD,ñú2@Šr¢ŽD6,b)Žƒô9¨ƒ1L5(s•r¹O¼L>‰²£É!Ï3GÑŠŒ#‚£çÑœˆ[9 ™�%ßG/t{Z®â(+ëcÓz~‡åT"Úq…>©‚^\*€CR–ì;2æðë:œßæ,b±µ' 5I1ö$,h><-¹dá“u.ÆG4"¢s™®`BÛ^à£ô“œßœ</ñr,|~¤çÖ‰XÄ)`¿“(…i [1 ‹Xt|–ò5"cêo°ˆ…Á`0 ƒa²0–'â7µ)[—Üf‹¨E,²°,bÑò³±xÛƒÕnüûï»N—øf‡'bf2?J׳ˆ%[´Í"“œôA±Ä[;çPøÄˤh—Ö‘‡/‹X¢ 2÷‰—ÉÂÇŠCž§Î8*ÇÙ‚#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌá×u8¿Í9XÄbkO>j’bìIX`‹–ùÍKv~C‡"–Ž}rΛ*ŸÒì>Z‹—¤ ,bÑóYÊ׈Œ©¿Á"ƒÁ`0 †=XÈÂXÖ`‹A^ñ‡R±äµûÛ ±èí¾d OÀRŸ¬£Ú_E¥Vñë›õ&êãuÌŒÌbîR=?J׳ˆ%[´Í"“œôÁå#bIƒòêHdÃ"–â8HŸƒ:ÃTƒ2W)™ûÄËdácÅ!ÏSg•ãlÁ‘¨kÍ ƒý/å@É”o£™‡ÔÆz~‡åT"Úq…>©‚^\*€CR–ì;2æðë:œßæ,b±µ' 5I1ö$,°ˆEË|‰æ%;¿±ˆEÏG‹bò’TE,z>Kù‘1õ7^Ärôd Sæc>æc>æc¾¥ÈÇ`\É`! cÙ‚E,yÅHýYÄ’×îo'8XÄ¢·û²95ç cOŽKísó t=‹X²±EÛ,b1ÉIÿ\‹Õ CP^‰lXÄRésPc˜jPæ*å sŸx™,|¬8äyꌣrœ-8u­9a°ÿ¥(™ƒòm4óÚXÏï°œJD;®ÃÀ'UЋKpHÊ’ý`ÇAÆ~]‡óÛœÃNÄ"Š[<n'¶-4°!-Øž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù,åkDÆÔßXx ƒÁ`0 cù…,Œe ±ä õgK^»¿à`‹Þî+XÌAéz±dc‹¶YÄb’“þ1È"–x+uÌ¡ð‰—IÑ.­#-^±Ddî/“…‡<OqT޳G¢®5' ö¿”%sP¾fRëù–S‰hÇrø¤ zq©�IY²ì8Șïëp~›s,=‹2ŽMpS²0Y"yeÌZ±h™/Ѽdç7±èùhQ,B^’*°ˆEÏg)_#2¦þÆâ‰XvliÀÑ/ßmý™ù˜ù˜ù–"ƒ±ÀBÆòɶYÄ"jg‹,,‹X´üXÄ¢¹YÄ‚s’Kʹ¬Cf¯ ²ˆ%ÞJs(|âeR´KëH‹C‡—E,Ñ™ûÄËdácÅ!ÏSg•ãlÁ‘¨kÍ ƒý/å@É”o£™‡ÔÆz~‡åT"Úq…>©‚^\*€CR–ì;2æðë:œßæ,b±µ' 5I1ö$,°ˆEË|‰æ%;¿±ˆEÏG‹bò’TE,z>Kù‘1õ7OÄÂ`0 ƒÁX~`! cy‚dÛ,bµ³ˆE–E,Z~,bÑ܇,bA‡9I%å\Ö!³×?_į/”Ú T+Éìµ9>ñ2)Ú¥u¤Å¡ÃË"–hƒÌ}âe²ð±âç©3ŽÊq¶àHÔµæ„Áþ—r dÊ·ÑÌCjc=¿Ãr*í¸BŸTA/.À!)KöƒsøuÎosŽ¥-bÂ&¸©Y˜,‘¼2f­‹X´Ì—h^²ó‹Xô|´(!/IXÄ¢çC†öfDÅØ'Ïy,ba0 ƒÁ` ²0–7â_¾XÄ"lg‹,,‹X´üXÄ¢¹YÄ‚s’Kʹ¬Cf¯ ²ˆ%ÞJ2{m…O¼LŠviiqèð²ˆ%Ú sŸx™,|¬8äyꌣrœ-8u­9a°ÿ¥(™ƒòm4óÚXÏï°œJD;®ÃÀ'UЋKpHÊ’ý`ÇAÆ~]‡óÛœ£‹(Ò`ÌÔ‡,L–H^³VE,ZæK4/ÙùE,z>Z‹—¤ ,bÑó!C{3¢bì“ç<±0 ƒÁ`0Š YËñ/_,b¶³ˆE–E,Z~,bÑ܇,bA‡9I%å\Ö!³×?YÄo%™½6‡Â'^&E»´Ž´8txYÄm¹O¼L>Vò<uÆQ9ΉºÖœ0ØÿR”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°ã c¿®ÃùmÎÁ"[{²ðQ“cO‹X´Ì—h^²ó‹Xô|´(!/IXÄ¢çC†öfDÅØ'Ïy†"–½¸2 ƒÁ`0®d°…±<ÿRÄ"a;‹XdaYÄ¢åÇ"Í}È"t˜“ôXRÎeý2{ýcpi‰XâÛe€R”j%™½6‡Â'^&E»´Ž´8txYÄm¹O¼L>Vò<uÆQ9ΉºÖœ0ØÿR”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°ã c¿®ÃùmÎÁ"[{²ðQ“cO‹X´Ì—h^²ó‹Xô|´(!/IXÄ¢çC†öfDÅØ'Ïy,ba0 ƒÁ`”²0–7XÄ"lg‹,,‹X´üXÄ¢¹YÄ‚s’Kʹ¬Cf¯ .E‹áÍDPjƒR­$³×æPøÄˤh—Ö‘‡/‹X¢ 2÷‰—ÉÂÇŠCž§Î8*ÇÙ‚#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌá×u8¿Í9J±ˆ’*6ü¦>da²Dòʘµ ,bÑ2_¢yÉÎo,bÑóÑ¢X„¼$U`‹žÚ›cŸ<籈…Á`0 ƒQ.XÈÂX¾`‹°E,²°,bÑòc‹æ>d :ÌIz,)ç²~ ™½þ1¸4E,ñºR™‡A‰Äfâ:ÛäúÄˤh—Ö‘‡/‹X¢ 2÷‰—ÉÂÇŠCž§Î8*ÇÙ‚#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌá×u8¿Í9XÄbkO>j’bìÅûƒE,ZæK4/ÙùE,z>Z‹—¤ ,bÑó!C{3¢bì“ç<±0 ƒÁ`0Ê YË,b¶³ˆE–E,Z~,bÑ܇,bA‡9I%å\Ö!³×?Yį$±™¸ŽÄ6¹>ñ2)Ú¥u¤Å¡ÃË"–hƒÌ}âe²ð±âç©3ŽÊq¶àHÔµæ„Áþ—r dÊ·ÑÌCjc=¿Ãr*í¸BŸTA/.À!)KöƒsøuÎosŽòD,¢Ü ¦É…‰M‡KÈ+cÖ*°ˆEË|‰æ%;¿±ˆEÏG‹bò’TE,z>dhoFTŒ}òœÇ"ƒÁ`0 ÆÂ€…,Œå Jý+Ûf‹a_~e÷%C•—¤]–E,Z~,bÑ܇,bA‡9I%å\Ö!³×?Ÿ£"–D¼v‰rÛSu$¶Éõ‰—IÑ.­#-^±Ddî/“…‡<OqT޳G¢®5' ö¿”%sP¾fRëù–S‰hÇrø¤ zq©�IY²ì8Șïëp~›s°ˆÅÖž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù¡½Q1öÉs‹X ƒÁ`0 ²0–/(õ¯l›E,†}ø•Ý—x U^’vqX±hù±ˆEs²ˆæ$=–”sY?†Ì^ÿ\ú"–øvÑ T‰rÛSu$¶Éõ‰—IÑ.­#-^±Ddî/“…‡<OqT޳G¢®5' ö¿”%sP¾fRëù–S‰hÇrø¤ zq©�IY²ì8Șïëp~›s°ˆÅÖž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù¡½Q1öÉs‹X ƒÁ`0 ²0–'(õ¯l›E,†}ø•Ý—x U^’vqX±hù±ˆEs²ˆæ$=–”sY?†Ì^ÿ|n‹X’`Kq¤ÏAŒaªA™«”ƒÌ}âe²ð±âç©3ŽÊq¶àHÔµæ„Áþ—r dÊ·ÑÌCjc=¿Ãr*í¸BŸTA/.À!)KöƒsøuÎos±ØÚ“…š¤{XÄ¢e¾Dó’ßXÄ¢ç£E±yIªÀ"=2´7#*Æ>yÎc ƒÁ`0 cáÁBÆò)¶YÄbØ_Ù}‰ÇPå%i‡e‹–‹X4÷!‹XÐaNÒcI9—õcÈìõA±Ä£°VRG0÷‰—IÑ.­#-^±Ddî/“…‡<OqT޳G¢®5' ö¿”%s(æ¼fRëù–S‰hÇrø¤ zq©�IY²ì8Șïëp~›s,œˆE”ë‚Á48Y˜Øt°„¼2f­‹X´Ì—h^²ó‹Xô|´(!/IXÄ¢çC†öfDÅØ'Ïy,ba0 ƒÁ`,XÈÂXž Å6‹X û"ð+»/ñª¼$íâ°,bÑòc‹æ>d :ÌIz,)ç²~ ™½þ1xe‰XâÛe€åDYøÄˤh—Ö‘‡/‹X¢ 2÷‰—ÉÂÇŠCž§Î8*ÇÙ‚#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌá×u8¿Í9XÄbkO>j’bìIX`‹–ùÍKv~c‹žÅ"ä%©‹Xô|ÈÐÞŒ¨ûä9E, ƒÁ`0ŒÅ YË$Øf‹a_~e÷%C•—¤]–E,Z~,bÑ܇,bA‡9I%å\Ö!³×?YÄ‚~ʳ! Ÿx™íÒ:ÒâÐáeK´Aæ>ñ2YøXqÈóÔGå8[p$êZsÂ`ÿK9P2åÛhæ!µ±žßa9•ˆv\!‡Oª — à”%ûÁŽƒŒ9üºç·9‹XlíÉÂGMRŒ= ,bÑ2_¢yÉÎo,bÑóÑ¢X„¼$U`‹žÚ›cŸ<籈…Á`0 ƒ±¸`! cù‚Û,b1ì‹À¯ì¾Äc¨ò’´‹Ã²ˆEËE,šûE,è0'鱤œËú1döúÇ ‹Xò@yu$¶Éõ‰—IÑ.­#-^±Ddî/“…‡<OqT޳G¢®5' ö¿”%sP¾fRëù–S‰hÇrø¤ zq©�IY²ì8Șïëp~›s°ˆÅÖž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù¡½Q1öÉs‹X ƒÁ`0‹²0–'H°Í"þüÊîK<†*/I»8,‹X´üXÄ¢¹YÄ‚s’Kʹ¬Cf¯ ^¹"–øvY ¼:ÛäúÄˤh—Ö‘‡/‹X¢ 2÷‰—ÉÂÇŠCž§Î8*ÇÙ‚#Qךû_Ê’9(ßF3©õüË©D´ã 9 |R½¸T�‡¤,ÙvdÌá×u8¿ý:#ŽÅ±ˆr/ ¦ÁÈÂĦC%ä•1kXÄ¢e¾Dó’ßXÄ¢ç£E±yIªÀ"=2´7#*Æ>yÎ+YIJ VƒÁ`0 Æ• ²0–7¢/G,b1ì‹À¯ì¾Äc¨ò’´‹Ã²ˆEËE,šûE,è0'鱤œËú1döúÇ ‹Xò@yu$¶Éõ‰—IÑ.­#-^±Ddî/“…‡<OqT޳G¢®5' ö¿”%sP¾fRëù–S‰hÇrø¤ zq©�IY²ì8Șïëp~›s°ˆÅÖž,|Ô$ÅØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù¡½Q1öÉs‹X ƒÁ`0K,da,_D_ŽXÄbØ_Ù}‰ÇPå%i‡e‹–‹X4÷!‹XÐaNÒcI9—õcÈìõÁå b1¼ùh�Ê«#±M®O¼LŠviiqèð²ˆ%Ú sŸx™,|¬8äyꌣrœ-8u­9a°ÿ¥(™ƒòm4óÚXÏï°œJD;®ÃÀ'UЋKpHÊ’ý`ÇAÆ~]‡óÛœƒE,¶ödá£&)Æž„±h™/Ѽdç7±èùhQ,B^’*°ˆEχ íÍˆŠ±Ožó®|ËÑ“Ut‚Ný™ù˜ù˜ù–"ƒq%ƒ…,Œå‰èË‹X û"ð+»/ñª¼$íâ°,bÑòc‹æ>d :ÌIz,)ç²~ ™½þ1¸<D,ñú²A© ’µçÔQªÒŒƒ´8txYÄm¹O¼L>Vò<uÆQ9ΉºÖœ0ØÿR”ÌAù6šyHm¬çwXN%¢WÈaà“*èÅ¥8$eÉ~°ã c¿®ÃùmÎñ±Ø" “’âØØ“°À"-ó%š—ìüÆ"=-ŠEÈKR±èù¡½Q1öÉsÞ•/ba0 ƒÁ`,?°…±|Á"þüÊîK<†*/I»8,‹X´üXÄ¢¹YÄ‚s’Kʹ¬Cf¯ ²ˆÅ”Ú Y{N¥*Í8H‹C‡—E,Ñ™ûÄËdáóÿgïMÀeI®òÀ“w¿÷í[/ïõ¾¨Õ«¤nµ$´# @l!Ù,Ù ö0ØÆØÃ|Øž±g ã{>ð ÆX˜ÅRKBIhoõ"u·ºûõòÞë·ow_*¦2«*+–s"NDfÖ­[÷üÒíÌ8qâ?‘±dVý/+‰ƒ®'§ƒýœÀaØÊ9qýIh˜Cù}˜õ }’çw7mU„åˆ(c%xqU Dš¸i*š£°UœßñÛäM,±P .) Š-ÃôWhBD,,÷!­µ¾‰ˆ…W†E± õ"L "^éGT¿¹æŽˆåú#‚Þ¿|O-/|Â'|Â'|Â7Œ|Á(@„,‚Ñ„ˆX"Û‚”kº-zŒP½ˆ|<¬ˆXXåDļ†"bŠu"ÇRp.ócPþü1("–X(ëDQù›²ŒqŠÅÁáKïDÅ—ÑÓ*¡L]ON?û9ð•s"âú“Ð0‡òû0ëAú$ÏïnÚª;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9†KÄ‚Ù6*Á%¥ò±e˜þ Mˆˆ…å>¤õ¢Ö7±ðʰ(6¡^„ DÄÂ+£"ýãˆêñ7׼ѱ@ Fc lqdYøCãÃtåæ‹ˆED,¬n‚NB>¦MD,ι²í"bqccç"b‰© ŽžˆE?/=²È(=e”u¢¨|MYÆ8ÅâàðŠˆ¥w¢âËèi•P&‰ƒ®'§ƒýœÀaØÊ9qýIh˜Cù}˜õ }’çw7mU„åˆ(c%xqU Dš¸i*š£°Uœßñ[CÄRç¾Ê‚Jpa” “Ôã¯Ð„ˆXXîCZ/j} ¯ ‹bêE˜@D,¼2*Ò?ލsÍËÀ÷U@ F²G F òFÁèBÿ�C™6ó\D,¶o£mÑc„êEäãaEÄÂ*'"æ5 T¬9–‚s™ƒòçÁí!b©Ê:QT¾Ç¦,c‡bqpxEÄÒ;Qñeô´J(“ÄAדÓÁ~Nà0l圈¸þ$4Ì¡ü>Ìz>Éó»›¶*ÂŽ‹rD”±¼¸ª"M\‡4ÍQØ*ÎïxŽ!±`™ƒ„JpI©sl¦¿B"ba¹i½¨õMD,¼2,ŠM¨a±ðʨHÿ8¢züÍ5oxD,@ y#‹`$ÑRÚß½‡'ý!Jÿ� ³£¾ù¹ˆXÀ›ØDÄbô)Í!"ž‹ˆ…W:Ý"b¡ëÑÃÖ±¨¤o=x(¸¹Œ§IÈ'mŠÅÁáKïDÅ—ÑÓ*¡L]ON?û9ð•s"âú“Ð0‡òû0ëAú$ÏïnÚª;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9†WÄ¢Pz *;àkZýIóWhBD,,÷!­µ¾‰ˆ…W†E± õ"L "^éGT¿¹æm®ˆ¥Õä¾Úà³°@ ÃÙû£²¶<°×d-¯­š¦ëk¹þfG}ós±€7±‰ˆÅèSšCD,< ¯þt ºDÄB×£‡-$biÿm¨e°Q׫š××WŒxv|ŸMYÆ8ÅâàðŠˆ¥w¢âËèi•P&‰ƒ®'§ƒýœÀaØÊµ%âú“Ð0‡òû0ëAú$ÏïnÚª;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9†üM,­ǧ®}u©¥èž,Ò…Q&LR¿B"ba¹i½¨õMD,¼2,ŠM¨a±ðʨHÿ8¢züÍ5oóßIJŒøÔ¶¯.­€@ Û ØÞ'?-$%ˆE0’8¿t¹ÿð¤? é avÔ7? xó›ˆXŒ>¥9DÄÁs±ðêOÇ û@D,t=zØZ"–Ëë¡),®\4bëq}6eã8‹ƒÃ+"–Þ‰Š/£§UB™$ºžœ~ ös‡a+×–ˆëOr@ÃÊïìé“<¿»i«"ì¸(GD+Á‹«jà ÒÄuHãPÑ…­âüŽçnK~P«— )œ[Sx†‚ TB™0I=þ Mˆˆ…å>¤õ¢Ö7±ðʰ(6¡^„ DÄÂ+£"ýãˆêñ7׼ͱä8¯ZÐΞ»�@ l'œ=×ÜçÀÁ0@„,‚‘ıËç:'úC”þfG}ós±€7±‰ˆÅèSšCD,< ¯þt ºDÄB×£‡­'bɱ°ršÂÅùÓFZ!> K«@>iS,¯ˆXz'*¾ŒžV e’8èzrú1ØÏ †­\["®?É s(¿³¤Oòüî¦­Š°ã¢e¬/®ªƒH×!CEs¶Šó;žcøE,ù[Ëg )<¿ÒòT„†J(&©Ç_¡ ±°Ü‡´^Ôú&"^Å&Ô‹0ˆXxeT¤Q=þæš7"–Ç7š²<ì@°ðü±æ>†"dŒ$ž<wÂ|ˆÒ?@Ãì¨o~."ðæ#6±}Jsˆˆ‚ç"báÕŸŽA÷ˆXèzô°5E,ùùÅ¥£ÐN_xΈeCaiÈ'mŠÅÁáKïDÅ—ÑÓ*¡L]ON?û9ð•kKÄõ'9 aå÷aÖƒôIžßÝ´Uv\”#¢Œ•àÅU5piâ:¤q¨hŽÂVq~Çsl KŽÖü1h __Ü�¼"4TÐÀ@l¦¿B"ba¹i½¨õMD,¼2,ŠM¨a±ðʨHÿ8¢züÍ5oxD,9ž\_‡¦ðÄÏ‚@ Û ²÷ F"dŒòß~Ëþíá“O÷úhúÕ²óís±€7±‰ˆÅèSšCD,< ¯þt ºDÄB×£‡­+bÉqnákÅ^Xçï¡öö×gwâÚñ´ ä“6ÅâàðŠˆ¥w¢âËèi•P&‰ƒ®'§ƒýœÀaØÊµ%âú“Ð0‡òû0ëAú$ÏïnÚª;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9¶Žˆ%Çú¥¯7¶¯~e~© 40[†é¯Ð„ˆXXîCZ/j} ¯ ‹bêE˜@D,¼2*Ò?ލsÍ.KŽGÖVÛWüÊc Ávƒ=Vû¾* &@ A|îXç‹6ã4ýáJYGç\D,àÍGl"b1ú”æ ÏEÄ«?ƒî±Ðõèak‹Xrœºø 4…gN<bÄÂâ—iÈ'mŠÅÁáKïDÅ—ÑÓ*¡L]ON?û9ð•kKÄõ'9 aå÷aÖƒôIžßÝ´Uv\”#¢Œ•àÅU5piâ:¤q¨hŽÂVq~Çsl-K~¶vî«Ð>saÕˆïƒ ˆ-ÃôWhBD,,÷!­µ¾‰ˆ…W†E± õ"L "^éGT¿¹æ Ÿˆ%_ó>·² Má3õ@°ð™ÏÈÞ'mÈY#‰æÏÁC'vS"b±}m‹#T/"+"V9±0¯¡ˆX bȱœËü”? n?ËÙù¯Áâjs¿ ~yá4œ8ó„aS–²Œh>iS,¯ˆXz'*¾ŒžV e’8èzrú1ØÏ †­\["®?É s(¿³¤Oòüî¦­Š°ã¢e¬/®ªƒH×!CEs¶Šó;žcë‰XZ—žµ|šÂ‰Õ<x9ü *h` ¶ Ó_¡ ±°Ü‡´^Ôú&"^Å&Ô‹0ˆXxeT¤Q=þæš7œ"–‡××à…Ö4…ã'N×”·²`{ ßóò½O eˆE0‚è<¬}ø©/‚ˆXDÄÂê&èÔ)äcÚDÄâœ;,ŠˆÅ‹ˆ%¦Nü1¸ýD,yž?ÿçeÙúÑá|ì™Oi1M(ˈæ“6ÅâàðŠˆ¥w¢âËèi•P&‰ƒ®'§ƒýœÀaØÊµ%âú“Ð0‡òû0ëAú$ÏïnÚª;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9¶žˆ%Çú©ÏvÏšÛW?pÎÿ/ÓUÐÀ@l¦¿B"ba¹i½¨õMD,¼2,ŠM¨a±ðʨHÿ8¢züÍ5o8E,9>¼²Üµ4·¯¾ÿO‚@ Ûý=¯‰}U ˆE0ëåÞoÁýÑ×þ²ý „|Ú®?pç"bo>b‹Ñ§4‡ˆX x."^ýétˆˆ…®G£!bQªGO?Ð)­ý.ª¾GÆÛ_úúGŠýUY¾úu°NÑ´iS,¯ˆXz'*¾ŒžV e’8èzrú1ØÏ †­\["®?É s(¿³¤Oòüî¦­Š°ã¢e¬/®ªƒH×!CEs¶Šó;žckŠXòF®ÿDqÚä¾ú¾S‹Ð"üUÐÀ@l¦¿B"ba¹i½¨õMD,¼2,ŠM¨a±ðʨHÿ8¢züÍ5oxE,ùá—Šó&÷Õ?x߇Íσ@ Aä{]¾çå¨k_†2¢#‰|ݾ°¼�ÿõ‘Î僖þcœ‹ˆ¼ùˆMD,FŸÒ"b่Xxõ§cÐ} "º=Œ†ˆ%7<uúO`eýd‘Ÿ]Æ ç^Z¾ _zìî_ëM›6ÅâàðŠˆ¥w¢âËèi•P&‰ƒ®'§ƒýœÀaØÊµ%âú“Ð0‡òû0ëAú$ÏïnÚª;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9¶¨ˆ¥µcµ:ßø¾z~MÁ>¹âä© Ø2L…&DÄÂrÒzQ뛈XxeX›P/Â"bá•Q‘þqDõø›kÞðŠXrüþò\h©æ÷Õó—á?þçÿ @ Œ2ò½.ßóšÜW‚a€Y#‰,ë íßþòAµO>Œs±€7±‰ˆÅèSšCD,< ¯þt ºDÄB×£‡Ñ±ä_~õøïu²ænïzÜõð–ÿÊM¿Ö)š6m<¯ˆXz'*¾ŒžV e’8èzrú1ØÏ †­\["®?É s(¿³¤Oòüî¦­Š°ã¢e¬/®ªƒH×!CEs¶Šó;žcëŠXò=nùèŸçƒØWóùyã­,X¿E#¶ Ó_¡ ±°Ü‡´^Ôú&"^Å&Ô‹0ˆXxeT¤Q=þæš7Ü"–üôwæ/çƒØWÿÝoþ¼•E #‹|Ë÷ºMî«Á0@F¸`dYÒÃ<ùÂü9ø/ü©õ©¤~."ðæ#6±}Jsˆˆ‚ç"báÕŸŽA÷ˆXèzô0:"–ÿ÷°´zÊQág5Èò±ýõòÂiøÔƒ¿g\ëM›6Õÿ¯â–!ÒÊŸŸÎ¡ø*¶ýV:¢i_FO«„2It=9ýìçÃV®-ן䀆9”߇YÒ'y~wÓVEØqQŽˆ2V‚WÕÀA¤‰ëÆ¡¢9 [ÅùϱuE,9VŸ~¨å³ÛWO¬¶àן_Dë‚6(„Ø2L…&DÄÂrÒzQ뛈XxeX›P/Â"bá•Q‘þqDõø›kÞp‹XrüÛÅyx¡µ1°}õø‰ÓðÿÚ@ Fù—ïuMì«Á°A„,‚‘ûàÒUáñOá¡ÓOwŒúƒ”ˆX<\n‹#T/"+"V9±0¯¡ˆX bȱœËü”? noËÙ…¯Â£Çþc‡ÅRá7óÁ`'Ƨü}8qúq­N&Â¥¬3e9úËiåÏOçP|Û~+­>A_FO«„2It=9ýìçÃV®-ן䀆9”߇YÒ'b\¢>VEØqQŽˆ2V‚WÕÀA¤‰ëÆ¡¢9 [ÅùϱµE,—ž„•§þ°8ä¾úÿ<·�ί›Î â[†é¯Ð„ˆXXîCZ/j} ¯ ‹bêE˜@D,¼2*Ò?ލsÍ~ËÃëkðÿocir_ýµó»ðå@ F ùÞ–ïq9šØW‚awTg̼Œq̈tïoL;öþÆ»¶që/ÏÛï½÷þOå„.\ÁöEþJ-ýÕ‘JµŠ¨;^ÿåíÿ°=ˆzb±€7±‰ˆÅèSšCD,< ¯þt ºDÄB×£‡Ñ±ä_~äÑ¿ç/TøúLþðR× µ¿^yàfx×[ÿ°oÆa)ËÑ_†H+~:‡âs¨p /‡bø9T|=­Ê$qÐõäôc°Ÿ8 ›6¯ªs@ÃÊïìé1.Q«"ì¸(GD+Á‹«jà ÒÄuHãPÑ…­âüŽçØÚ"–|¯[üÜ/ÁÆ¥§7e_½kÇü÷»÷uþe‚xÄ–aú+4!"–ûÖ‹ZßDÄÂ+â؄z& ¯ŒŠô#ªÇß\ó†_Ä’'èÜøêúÚ¦ì«ßú–7ÁÏÿüß@ Fÿâ_ü xÿ>Úè¾*ØÚØ»wOqüâ?÷êö!ÿãKÝã†õ§ºÇ–ö§´£ýDÚw´Ïmï8å,‚‘¥Âô̳ð?ñ;£ˆX<\n‹#T/"+"V9±0¯¡ˆX bȱœËü”? nw ÀçŸþç…ˆ¥`jP…Oí¯'Ï> üå¯y )¯¬3e9úËiåÏOçP|ŽáåP Ÿ ‡Š/£§UB™$ºžœ~ ös‡a+çUÄõ'9 aå÷aÖƒô‰—¨Uv\”#¢Œ•àÅU5piâ:¤q¨hŽÂVq~ÇslqKûoå«ÿ®±äØŒ}õá…uø…§.ã !¶ Ó_¡ ±°Ü‡´^Ôú&"^Å&Ô‹0ˆXxeT¤Q=þæš7ü"–ÿäò…BÄ’c3öÕ<ðQøÐ‡Þ@ Œ>ôá÷"–ò6ÁvÁ#†|ÁÖUøcc´Z þä‰ÏÀþÙÝð÷îÿóL€õÎEÄ‚÷W¨^D>VD,¬r"ba^C±@Å:‘c)8—ù1(þËCÏÿ;8zæÃE:ßët4ñðBí¯<ùq˜›Ý ¯¿÷=F}ûõ6Ï”i ”!ÒÊŸŸÎ¡ø*ÃË¡>A_FO«„2It=9ýìçÃVΫˆëOr@ÃÊïìé1.Q«"ì¸(GD+Á‹«jà ÒÄuHãPÑ…­âüŽçØú"–Õ¯ÿ.¬ÿd‘ÞÌ}õO-ÃþÉqøùkçød âÀôWhBD,,÷!­µ¾‰ˆ…W†E± õ"L "^éGT¿¹æm Ëÿµpþdi©8ßÌ}õW~õ×àô©çáþü’eŸ96^¯?²u@ø„Oø„Oø„¯n¾_ùç¿¿ù[ï+α¯ Ãy#‹`äà.ÚY¹°ÿû¯|þÕçþ Ÿ¥ˆÀzç"bqìŠôÕêEäãaEÄÂ*'"æ5 T¬9–‚s™ƒòçA±ä"–ÇNü~‘îìqƒù`в”ûëçþðç_ü§Œ²Î”i4ÚHÙœ´òç§s(>‡ Çðr(†OCÅ—ÑÓ*¡L]ON?û9ð•ó*âú“Ð0‡òû0ëAúDŒKÔǪ;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9FCIJrôéaØWëØüóçq`ú+4!"–ûÖ‹ZßDÄÂ+â؄z& ¯ŒŠô#ªÇß\󶎈å?,Ìçð¯æ_üå_� @°áŠXDÈ"Ø>!‹`$³üâ_ü6´”Â?�니ű+ÒW«‘‡ «œˆX˜×PD,P±NäX Îe~ ÊŸ?·»ˆEÁçŸþg±Ðܺ˜åàƒù¯‹ß#ïÔµÕÿ/Ñ”ÍI+~:‡âs¨p /‡bø9T|=­Ê$qÐõäôc°Ÿ8 ›6¯ªs@ÃÊïìé1.Q«"ì¸(GD+Á‹«jà ÒÄuHãPÑ…­âüŽçØâ"–vcWý·±Ðܦ˜å矼Œ¶³„73Ý_¡ ±°Ü‡´^Ôú&"^Å&Ô‹0ˆXxeT¤Q=þæš7ü"–<ùK—/ \ÄBs›b–ŸùûÿÒxk‹@ ÃŒ|Ïú™Ÿÿ—"blkˆE0’ÈoßÃËŸ<ñiø¡?þxøôÓæƒZï\D,Ž]‘¾Z½ˆ|<¬ˆXXåDļ†"bŠu"ÇRp.ócPþü1¸½E,g¾ yôoY?'ä>¼4ýÁ oÍf迼ÿïÉ3C¯å‰~¤lNZùóÓ9ŸC…cx9Ã'È¡âËèi•P&‰ƒ®'§ƒýœÀaØÊµ%âú“Ð0‡òû0ëAúDŒKÔǪ;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9¶¶ˆeãÒ“°ø¹_²~Nh¸öÕ?<½ ïxè<<8¿îV¦¿B"ba¹i½¨õMD,¼2,ŠM¨a±ðʨHÿ8¢züÍ5oøE,¯¯Á;cýœÐpí«ïû…ï|Çß…/?ø@0ÌÈ÷ª|Ïzß~´Hoƾ* DÈ"Y„^=û ¼ëO~ãËÜQã÷ÀDÄâØé«Õ‹ÈÇʈ…UND,Ìk("¨X'r,ç2?åσÛWÄ’MøÈñß>úSp~¡#Ù̇—Ðþzòì“ð»ïÿyøôƒ¿[ì¯úµ´NI›“VþütÅçPá^Åð r¨ø2zZ%”Iâ ëÉéÇ`?'p¶rm‰¸þ$4Ì¡ü>Ìz>ãõ±*ÂŽ‹rD”±¼¸ª"M\‡4ÍQØ*ÎïxŽ­+b)ÞÂòÔ‡…Ïþظôtaæ}õá…uøÞ‡Ïÿ~~±Äé¯Ð„ˆXXîCZ/j} ¯ ‹bêE˜@D,¼2*Ò?ލsÍnK~ú‹óðÃçÎÀW×× Û0ï«=üuø®ïý{ðýëÿ$ogÁP"ߣò½*ß³rˆˆE°1Á£·›&ùà @«Õ±ý»/ÿ)üÑŸ‚¿q×[àûn{c;0>íôØDÄBæãaEÄÂ*'"æ5 T¬9–‚s™ƒòçÁí)bÉ¢ç©Ó_=þ{°´zªÌ†‡Îþú™ùúÇàåw½îyÑ[Ú¹fô BiåÏOçP|ŽáåP Ÿ ‡Š/£§UB™$ºžœ~ ös‡a+×–ˆëOr@ÃÊïìé1.Q«"ì¸(GD+Á‹«jà ÒÄuHãPÑ…­âüŽçØ¢"–v#׎}–þ ¨å³eþVÙWÿÍó ð¾SKðãGvÂ]1ÍÿZS%¸©~â 3QF%”q 7WFD,Ϻ*Ó˜?R†E± õ"L "^éGT¿¹æ ¯ˆ%?üþòüÎüex¡µQæo•}õ×þÍï¼ïÏà'~ü{à ßø Áf"ß³Ž{ þÙ?ÿux衯–v±¶;DÈ"yÐ/¹]0/,œƒ_ý«ÿ¿ñå?‚ï¼åµðæëÞØqíÓ‹ëì!ù"b¡ÂŠˆ…UND,Ìk("¨X'r,ç2?åσÛOÄrvþkðüù?‡£§€•õK¥{p)Ø7éá…³¿^^8 û«ß„Ï|ù÷àŽ[Þ·^÷j¸òà­¥·²8´òç§s(>‡ Çðr(†OCÅ—ÑÓ*¡L]ON?û9ð•kKÄõ'9 aå÷aÖƒô‰—¨Uv\”#¢Œ•àÅU5piâ:¤q¨hŽÂVq~Çsl=KëÒ“°~ê³°rì ÖæË¼­¸¯žXmÁ/?} ~ýù ¾ûмeÿ¼d‡çc,(4!"–ûÖ‹ZßDÄÂ+â؄z& ¯ŒŠô#ªÇß\ó†SÄ’ÿ„ЇW–á—àB«O²÷Õã'NÃ?ùå߀ë~çàïüôß„ógvÃK_r@0(ä?!ôþ> ð¾Ãùó—Kû°í«ÁfA„,‚müá¥È)ÔøÅ/ µÿsaeþý#,þ®šÛ÷_}ÜyàF¸yÏa8¼ã�ì›Þ³ãSÅ¿*‹ˆXÂç"b±Ïƒ×M…ã4Òný\Ñþ©íÆ9DÄ‚ž+¤NÁzô°…D,í j–×/ÂÂÊI¸¸tÎ-| N]|µ·¯ ÅJ‡ËÆf?¼p÷×¥•Ëð…Gþ¨øÛ5w®¹ú.¸òÀ­p`ïµ°kç0;½&Ƨ´¶ˆˆ¥w¢âËèi•P&‰ƒ®'§ƒýœÀaØÊµ%âú“Ð0‡òû0ëAúDŒKÔǪ;.ÊQÆJðâª8ˆ4qÒ8T4Ga«8¿ã9†WÄRÔ¬µjõ´–Ï@kþ¬_ú:¬ûªñö•£°¯ž_Sð[ÇŠ¿«§Æà•{¦àžSpëì8i§÷OŽÁLÆû-i…&DÄÂrÒzQ뛈XxeX›P/Â"bá•Q‘þqDõø›kÞæŠXZm‡å¶ÏyÕ‚ã-xr}Y[Ï­¬o_É1 ûê³Ï‡ŸùÙZä¾ú¼êUwÃKî¾ n½õ:¸æÈp`ÿ^˜–/@„â³Ñ¥8{î<ì<ñijðàCÁg>óP!ªÔ1Ìûª@°àŽøŒ™—1Ž‘îýiÇÞßx×6nýåy»óã½÷Þÿ©œðÂ…‹ Pè=¸Ð¿ªÊWL @°™ ”÷9z-Ãòð"û«@ †²¯ @Pd_ >l¥}U0ÜØ»wOqüâ?÷jÈõÉ�—ºÇ ëOu-íOiGûˆ´ïhŸÛÞ€ÉYÛ ™ñ/½±ùÑ{ÅdáQú%ýK+@ ˜È·§þ•|‡O}/û«@ † ²¯ @Pd_ >lõ}U $DÈ"Ø–?À^¥¯¹O(­,@À†¹ŸÄ=„lõ½ì¯@ $d_-¼J_ÙW@P²¯^¥¯ì«@ ¨‚QßW‚A@„,‚m lP¬'‘Lã�@ ƒ¾Wm•Ù_@0¬}U ‚ú ûª@ õa+î«AÓ!‹`Û#ýF ‚f0 ª{Ù_@0,}U ‚ú ûª@ õAÞ¾"Ð!‹@ Aß0ì‡y˜A°RFñ¡EöW@  ²¯Ê¾*‚ú ûªì«@ ¨Ûa_ê„Y±ˆ<Ø�Ch?Ùn,²¿   d_5!ûª@ ª@öU²¯   d_ê…Y&B¯œ” H !È^áBöW@ ¤Bö²¯  ²G¸}U ©=B ¨²À݈D/£ y0©²¿ Áö†ì«õBöU@ ØÞ}µ^Ⱦ*Û²¯ ƒƒY‚@66@ ê‡ì¯@ ÔÙW@ ¨²¯ @ TÃ@ @ @ @ C�²@ @ @ @ †"d@ @ @ @  DÈ"@ @ @ @  ˆE @ @ @ @0!‹@ @ @ @ `( B@ @ @ @ ÁP@„,@ @ @ @ ‚¡€Y@ @ @ @ C µ@)@ ØÈ² éýU :d_­ÙW@ CöÕj}U :d_ê…Y‚�z$ò`"‚„öÞÎv{БýU )}‡ì«@ Hì«8d_A d_ê…Y ùFS÷CŠ<ôÁh£ÊÃöYÎ7j4²¿ € ÙWÃ}U \Ⱦ†ì«@ àBöU`p!‹@Ð…ýÀ²óª=päÞ઻®}7]»ï…Ù};`|zÒØTŒG…œ*sRhAÍTüÇ*£¨:Û–¬(º{í™cCN-{†8Ðí£ú£0±Ú—ùýÑöý¡ŒƒcÏË…¯+V4ÃíÞkÝ-׳Sϸ1í£üµ±ß¾„ëeÄœúf„]'ÁìaGü±±ŒööGðºjväZ÷ „¯ŸÙ÷üö1¯µ“ȘãV³+üF;<·׺kך=¥}Z™˜öQ×ÛÛ¾Àµn;µÖVacᬞ? «§ŽÁâsOÁâÑÇ`íâÙrO…{Ûû‚}ÀÎÝ{`nn¦¦g`l|ÜlkïÁªBÑc£"W×R—–ÇãI¦d.9¹ªF.vzç(N¡ˆ §B…"–Jï`o!jÏIá2Ï(µTä2¬5p•9l.ÅráÑñ¸xž|.¿wô Öx¦ejµ6`mm V–—ayq._¼—.^€Õ•å‘ÞW¯¾újxùËÜs'Ü|óÍpäÈaØ·oÌÎÎVh«6o“æ}Z¬æcvœZã2gë&Ĭ'n<AÚ›T�¥H¾ª6HÕÀ`WkgaÓ7åŠ1K‹:€u±«<ðZÜj)XnïŸÎ_€ã'^€£O…‡ù*|éKÂÉ“'Gz_Û½&¯¿&¯¹Æ] ã{÷C¶cgû[”©N[Ñæ*Ãî¸d]Ôn|*H˜<™gñtí¸¿"cŸz“mϼõuy2ª2M úy=»UÔŸn»Ñ?Œ¶g‹CŒ¶g[Fá.žñƒû{¥Ìùd éûdÌkEûûÛžy¸°¶gŽÝ_'w ùçNy½¼× Ìú\ÉãGs̘s\O<qb¯U§ ÿZá1zÄø)ÿãrÑkPäø±òнfeÖ/,ÁÊ —aù™ópùÑSpùÁãíÏ„çGj_êwF—TëÜẅtïoL;öþÆ»¶që/ÏÛï½÷þOå„.\ ­V«<ŸÝ;/þö—Â-o¾®¼ûíT÷ Iíà$Œ-K!EñÏ^»ÿá}ñ_]ä‘ÛÛ\°´=‹ò/ËxÛmÙK[FØ!`Ï<í6Z‚ÙØ5EÚçõG®uaf]¿Œ°ë*´ÏHdvö†… N`mÖ TÛŒ$»}qs»0cýÁj_ ?Ðvgv[I¬?bæ*5·½×šÙ‰íK¾ÞÈ:^£0;n÷ý2KÏ= —ù\úÒ'a½ýE\ccc°• ï¯SÓSpÍõ7ÁÕ×\ {÷Ö:LAEXŸÎ‡/4i|8aâqY§S˜'P0Ì×IªF.Ú%½s·`4_¥N¶Üëãò2FsyZ[ËIUä2¬Q\Ñ[#Ÿ?£ç2ÃMqœ*ñEO˜¿| Î>gNž(„.=lå}uß¾½ðßñ6ø–où&¸çž»¡~Xó-iI‹Õ|LÿzYoXÛ¦ˆYjik…»–šÖí(6EÍ£@ .V8f£“y›ˆY”w0±ÊTã1ñûeÛúÈ#_…~ôcðþ<ÐþþRißÊûêØÜ˜¾çU0uǽ0q䆎ÑúrûbÒ„ |‘Üõ±áB`û«€Aãéæ¡t±bOÛk³x….O?Óª™×³;Ÿ4!þtÛþa´V¬Ìãh{åñã”i`ütó\xÆOY¹^Ô˜'….é Õµëþ‘ãÇÊkdühyìñÓÍ‹šïYäøøùÞ¯oüÐ1€lû¦Š¡¬¶/|õœûø“pöƒÃÚÅåÒ¾ÕöUÁð`ïÞ=Åñ‹_üܫۇü†çR÷¸aý©î±¥ý)íhÿ‘öísÁ;Ü xn%Ö¹ï˜éÞŸYþÀ’¿}å¾÷¼îúÞûûŠGÕ;XÃ_'¡mU€~÷‚?vÿ“ñü [FØû$èJ "ËÆììš"íóú#׺0³®_FØõ�Úg$DÄ‚ŽeÊŸlÒ¬öúmwh·•Äú#f®RsÛ{­™ý‘ؾäë¬#á5 ³óçvÿáövÁ Ÿûœù‹Àúų¥Ë°?ÈÑö‚7ßöb¸þ¦[�¸ÿ¢@D,ñ\Ö©Çæ  sÆu’ª‘‹vIïÅ-ÍW©“-÷ú¸¼ŒÑ\žÖVàrR¹ kW`ôÖÈÅçãÄè¹ÌpS§J|Ñ“ÃJ*8uâöÙâ--=l¥}5ûÊþÈ»á~àûü—zÖ|KZGÒb5Ó¿^Ö–Ç&"–¨’ÉKsñð¸ÍÆ2c&V7¢w0±ÊTã1ñûe_Øü_Žÿ÷÷ýøOÿé÷Š·´ô°•öÕüí+s¯y3LÝ÷z|_ýr;ﱌ(®})MÅ©,F ¾˜íæÕ"Fð´]Ä,X ¤>ÆÃ#Ô5~œ2 ŒŸnž ³øë$bÝŽò1�¶‚˜¥cRpú…ã¿ûåâ--=ˆ E ²øó2Æ1#Ò½?²‡þÐrÿ½^ù“ßhî\ªw°†¾2NBÛ¢Nz.ìþ'ãù¶Œ°÷IÐU@D,–ÙØ5EÚçõG®uaf]¿Œ°ë*´ÏHˆˆË”?Ù>¤?Xí ôÚî,Ðn+‰õGÌ\¥æ¶÷Z3û#±}É×YGÂkfçÏíþ!#ì}[þá™ý!œýÄ—æa}ˆÑ÷×[n¿n»ã.€˜/ÚDÄÏezLaž@Á0g\'©¹h—ôÎQÜ‚Ñ|•:Ùr¯ËËÍåim.'U‘˰FqFo\|>þ@ŒžË 7ÅqªÄ=9<IÏ}Ž?{´´l…}õ'òÇá§þö{~Õ´ÕSIëHZ¬æcú×ËzÃòØDÄU2"bi.·ÙXfÌÁÄêFÔâ&V™j<&~¿Ì ›?¯þæÿ÷ÛðÛ¿ýJÛVØWg_û­0û†oïï«Ì/'ƒ_nç=—ŵ/¥©8•ÅԳݼZÄž¶‹˜‹ÔáÂxØb„ºÆS¦ñÓÍs!bDÌ¢ÛQ2ÀV³äÉ|_=öÛŸ‡ãÿñ‹¥]Ä,‚Œšexn!Ö¹ï˜iß&néÙ¦óãÕWùÑœpyy úïž^qûaø¶ùpÛ[_"bAO-{å_–ñ¶Û²—¶Œ°CÀžyÚm´³?°kŠ´Ïë\ëÂ̺~a×ThŸ‘ :–)²}H°Úè´ÝY ÝV똹JÍmïµföGbû’¯7²Ž„×(ÌΟÛýCFØM[þÁÚÜ·ÃÎ[õËʽlX~7Uß_÷ìÛ/õkášëo�±„¹Ë:õ˜Â<‚aθNR5rÑ.飸£ù*u²å^——1šËÓÚ \Nª"—a⠌޹ø|ü=—nŠãT‰/zrx’Ôî½û`Ïþ°¸0k««C½¯Þyçðkÿú_Áw¼í­"b©9^/«Þ°<6±D•L†ˆXš‹‡Çm6–s0±ºµ¸ƒ‰U¦‰ß/Ç„Í÷¦ûî{|ë^?ñœ9sv¨÷Õ‰«¯ƒßû0}Ï+ËçÕò¿Þ/@ OËŽ8£_Vƒÿ[Í â©W†ggd‚hfÆø"ÙåA_$#Ñ©øº)ó÷¡Q4O3RM£ ¢Iõ¶û.Opü††Çalhü ¦Àø!2Ýaåo»wüe?hk?>Ê@Û£æ{9~ ~¾wbðÇß‘EŒŸŽ9 \+³°;F-»»ÛÚý²#°ç•×Áâ×ÏÂÚÙÅ¡ÛWÙ™™âxâÄñß‚ÎmÝJ÷hÿÇ64!‹`Û@hÉÅ+ßñkï‚Wz‡Œ°»¶þi†8ÑŽ÷íÏß°e„½O‚‘õ² _äÔ²gQþeo»-{iË;ì™§ÝÆAK0û»¦Hû¼þȵ.̬ë—v=@…ö ± c™ò'Û‡ô«}þ@ÛÚm%±þˆ™«ÔÜö^kf$¶/ùz#ëHxÂìü¹Ý?d„œDïtb÷>Ø{ß`íÜX9ù\™¿Ù1úþzäºà¯{ÌÌÎADÄÏezLa$ÉÌŠæ gÇw¸âZ™£¸£ù*u²å^——1šËÓÚ \Nª"—a⠌޹ø|ü=—nŠãT‰/zrx’fjjz®¸êpû3„eXZ迺y˜öÕïx۷ÿý_‡«®ºš…ÕSIëHZ¬æcú×ËzÃòØDÄU2"bi.·ÙXfÌÁÄêFÔâ&V™j<&~¿œöŠ+Áw~Ç[áØñðõ¯?YÚ‡i_ºû•°ëûÿ6ŒµŸ­ñïiù_NfŽq¦¾¥¿Õ´ŠRº†ggd‚hfø"çAûÕ"²«¹á…2ÌëE5*H$Ïtʨ*ºßå1‹[ŠêT*¬ˆYÈ8Qó=‹?�"fÁœ‘îž:´½õŰrâ2,=yV««çú  B–P^Æ8fDÚ÷'BA%è-/{׫áÿáÛÜM«üމ²»¶þi†8ÑŽ÷íÏß°e„½O‚‘õ² _äÔ²gQþeo»-{iË;ì™§ÝÆAK0û»¦Hû¼þȵ.̬ë—v=@…ö ± c™ò'Û‡ô«}þ@ÛÚm%±þˆ™«ÔÜö^kf$¶/ùz#ëHxÂìü¹Ý?d„œ„iïÜíºý>P«í/Ýžûz™µY1úþzÓ‹^ wßûrˆ†ˆX⹬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Ipµ·ÏýÁÆÆÌ_ºÔ7Á¾ú×ßóÃðK¿ôP«§’Ö‘´XÍÇô¯—õ†å±‰ˆ%ªd2DÄÒ\<<n³±Ì˜ƒ‰Õ¨ÅL¬2ÕxLü~¹jØ|Ïzã^‹‹‹ððÃöÍ€¾¯Î¼òͰã[ÿ&ÃHò¿œÌÃH}J«i¥tÿ ÏÎÈÑÌ,ðE2΃:÷«EdWÿr;à !e˜×‹jU?Hžé”QUt ¾Ë/b·Õ©TX³q¢æ{9~�DÌ‚9#ÝïŸû_#l,®Áü#'µºz®Ÿ`ÛC„,þ¼Œq̈´ïO„,‚dØ"–×þ¯ßB~¸."ÛžEù—e¼í¶ì¥-#ì°gžv-Áììš"íóú#׺0³®_FØõ�Úg$DÄ‚ŽeÊŸlÒ¬öúmwh·•Äú#f®RsÛ{­™ý‘ؾäë¬#á5 ³óçvÿvp¦=3ìs7ß ­•eX~~óÄ,¶ˆåö{^ ÑK<—uê1…yÜq¤jä¢]Ò;Gq FóUêd˽>./c4—§µ¸œTE.ÃŽ5rñùø1z.3ÜÇ©_ôäð$Ã\ùÏâm¶˜Å±üÜÏý=hVO%­#i±šé_/ë ËcKTÉdˆˆ¥¹xxÜfc™1«Q‹;˜Xeªñ˜øýra_ùÊû7]Ìb‹XæÞüŽ^MLG4Éÿr2#x #õ}(ý­¦U”"Ðý3<;#D3³ÀÉ8êܯ‘]ýËí /„”a^/ªiTAjü y¦SFUÑ5ø.¿ˆYÜRT§RaEÌBƉšïYäø1 æLt÷žW\+b£&d`„aÿœˆXú¾È©eÏ¢üË2Þv[öÒ–vØ3O»ƒ–`övM‘öyý‘k]˜Y×/#ìz€ í3"bAÇ2åO¶éVûý¶; ´ÛJbý3W©¹í½ÖÌþHl_òõFÖ‘ð…Ùùs»È;8 Óž¹ööÉ¡o~'ìºç5ÝØýýn°NHD,|.ÂÄã²N=¦0O `˜3®“T\´Kzç(nÁh¾Jl¹×ÇåeŒæò´¶—“ªÈeX£¸£·F.> FÏe†›â8U⋞ž$Ÿëº›nW\Õ)µ‰ûjþsB"bi&^/«Þ°<6±D•L†ˆXš‹‡ÇÌ:)"–æâõLM„ýéÿå½ð–·|s'Ä&î«Sw½æþÚ;,ü3O#I|æeúgŒ5/ó<ëk>D–GYõ±xŒúhyøó�ÝvEðàÈè1M´÷Ïügݶã™V}ȼžùÌÞñgŒOõ¶‡—TÏø) ާLã§›ç"ó¯‰HÛñí‚n»wü8e?V^#ãGËcŸn^Ô|W‘ãâç{¿N¼ñCÇ�²í*bü”fæ~Ñ÷þïž®û[ß�¾ùEÝzv_6"dŒ,ôÅüŠÛÃ7ýoßElÖùAD,¦]D,®‹ÿF±³o†�i‡ˆXœþÀÚ¬¨¶Ivûâæva‹e‹^‡r Aíà$L;.bé᪷ÿ8̾¡[‡Á<ÄèqòÁþÒW¼ ¢!"–x.ëÔc ó †9ã:IÕÈE»¤wŽâŒæ«ÔÉ–{}\^Æh.Ok+p9©Š\†5Š+0zkäâóñbô\f¸)ŽS%¾èÉáIÆsÝtÛ‹aÇ®]ä&ì«wÞyüʯü24«§m&1‹é_/ë ËcKTÉdˆˆ¥¹xxÜæ×Ç~ÌÁÄêFÔâ&V™j<&~¿ÜÐ(-þûñàÅ/ì—nzœ‰«¯ƒo{ùy@¿ÅQžÔô嶈YH.‡@Ä,<ã§448~œ2 ŒŸnž ³øë$bÝŽò1€lû0‹Ynú…7ÂŽÛuë)bÁö€Y# }ÏÏßð oçuaåæMÙ][ÿTD,fRD,F’}H;DÄâôÖfÍ@µÍH²Û7· ³ˆX,»ˆXô:”kj'aÚý"–u‡¾õÝξ×ì8w½ì>ˆ†ˆX⹬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'™Æ•¿úú›_´iûê/þ£0€WD[=Õ\ó€œÅô¯—õ†å±‰ˆ%ªd2DÄÒ\<<n³±Ì˜ƒ‰Õ¨ÅL¬2ÕxLü~¹¡QZžeð³?ów7m_ûæw–ŸSŸ ô X\剈Y°ŠàÁ!b<R„ ãÁ¯oƒãÇ)ÓÀøéæ¹1‹¿N"fÑí(ȶ«˜%V¼þï¼v`ûª@0 !‹`dÑS$¾âÇßWÞu•Ù;ˆˆÅ´‹ˆÅu¡oè1 "×."ß?«}"bI¿ÞÈ:^£0;n÷͉XzÉ™#7Ã׿ý/Ün½ã.Ø»ÿ@TY±$pY§S˜'P0Ì×IªF.Ú%½s·`4_¥N¶Üëãò2FsyZ[ËIUä2¬Q\Ñ[#Ÿ?£ç2ÃMqœ*ñEOO²×Î]»áÈõ7 |_}ï{ÿ&ÜsÏ]Ð,¬žj´yÄ|l,¦½¬7,MD,Q%“!"–æâáq›_û1«Q‹;˜Xeªñ˜øýrC£Ô±Üyçíð#ãÝßWg_ûV?r#Ÿ­–ÿÑÁ#ˆ˜¡"fÁc õA¸0üú68~œ2 ŒŸnž ³øë$bÝŽò1€lû°ŠYvÞ~y÷}ÛW‚͆Y#‡Þâw^µ^ù“ßh9ô"b1í"bq]èz ˆˆÅµ‹ˆÅwÃÏjŸˆXÒ¯7²Ž„×(ÌΟÛýCó"–ÞÉþ7~Lì9`ìuCçžÛ·Ýùe›ˆX⹬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«g:rý05=3°}õꫯ†ŸúÛï…faõTýM"c5Ó¿^Ö–Ç&"–¨’ÉKsñð¸ÍÆ2c&V7¢w0±ÊTã1ñ®¡QJæüØý ¸òÊ+¶¯ŽíÞ³¯{›óÙA‘_þGCŒ b4†"xpˆ˜ÔáÂxðëÛàøqÊ40~ºy.DÌ⯓ˆYt;ÊCÆ�²íÃ*f9ò7^SWìlt_†"dŒ$Z­Vq¼ï=¯ã'…ÊMZD,¦]D,® }£@±¸v±ønôYíKúõFÖ‘ð…Ùùs»È;8 Ó/b)¢ec°ÿÕo-Î{{`èqßüâÛb~ú@D,ñ\Ö©Çæ  sÆu’ª‘‹vIïÅ-ÍW©“-÷ú¸¼ŒÑ\žÖVàrR¹ kW`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7uþ{øÚë‹ã öÕý‘÷4ü“BVO%­#i±šé_/ë ËcKTÉdˆˆ¥¹xxÜfc™1«Q‹;˜Xeªñ˜øF×Ð(õææ{Ü»~èŠóA쫳ßð-ýçUë3„Ò„|^`: I³ 1ÁƒCÄ,x ¤>ƃ_ßÇS¦ñÓÍs!bDÌ¢ÛQ2mF1K¾¯~çËŠt“ûª@0 !‹`¤ +g÷ÎÁÝßw¿–Ù;ˆˆÅ´‹ˆÅuÉ;xÆ€ˆX\»ˆX|7ø¬ö‰ˆ%ýz#ëHxÂìü¹Ý? VÄÒkÛžûß ãs;µz K€Î55=7Üt »¬ˆX¸¬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oêg\qø0LNNöóÚW÷íÛ ï|ç÷Cs°zª¾fc5Ó¿^Ö–Ç&"–¨’ÉKsñð¸ÍÆ2c&V7¢w0±ÊTã1ñ®¡QêÏíf¿ão‡½{wköföÕ±¹0uï,‡Þ‰ˆYl£>Zþü bÇͺî€Ú­þa´=¼{ÆOihpü8e?Ý<"fñ×IÄ,ºå!c�Ùöa³\ñö;`rÏLß6˜`à!‹`äÐS Þþ¶—õÿU[¹)‹ˆÅ´‹ˆÅuÉ;xÆ€ˆX\»ˆX|7ö¬ö‰ˆ%ýz#ëHxÂìü¹Ý?lŽˆ¥w¾û%¯/ΚPã÷8¯½áf`¿ED,ñ\Ö©Çæ  sÆu’ª‘‹vIïÅ-ÍW©“-÷ú¸¼ŒÑ\žÖVàrR¹ kW`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7¹¯ºº86¹¯¾ý;¿£Á·±X=•´Ž¤Åj>¦½¬7,MD,Q%“!"–æâáq›eÆL¬nD-î`b•©Æcâ]C£ÔŸ«eç{Ý·}Û·çMî«Ów¿ßW­ÏJòù[ÆJŠ˜¡"fÁc õA¸0üú68~œ2 ŒŸnž ³øë$bÝŽò1€lû°‰YòÏf¾å¶âTÞÊ"eˆE02°‡·¼ùÎnFï "Ó."×ED,FRD,fžˆX,»ˆXô:”kj'aÚk±tOvÞñ ³\ Ÿ’ÚW_s-«œˆX¸¬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oÂyö<dú6°¯~Ë·|4«§ªW«ù˜þõ²Þ°<6±D•L†ˆXš‹‡Çm6–s0±ºµ¸ƒ‰U¦‰ot R.’ý¦7½Ñò©_|ñËéªYŸ-”&ÇŸ!F1 C<8DÌ‚Ç@êƒpa<øõmpü8e?Ý<"fñ×IÄ,ºå!c�Ùöa³ìãÍ&å`nn‚B„,‚‘Bo¡ÞyÕ¸òîk´MXD,¦]D,®‹ˆXŒ¤ˆXÌ<±Xv±èu(×ÔN´×'bÉ1säf˜Ø} [g¢‘ èqÍÎ퀽ûp ôO¡"DÄÏ(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«o¢yvìÚ SÓ×57±¯^}õÕpÏ=wCý°zª¾ªc5Ó¿^Ö–Ç&"–¨’ÉKsñð¸ÍÆ2c&V7¢w0±ÊTã1ñ®¡QêÏ%²ï¼ãv¸òÊ+»>õï«c»÷ÃøáÉÏ9:ν³Ø<F}´<ü¹BÄ,Ž›uݵ[ýÃh{xiöŒŸÒÐàøqÊ40~ºy.DÌ⯓ˆYt;ÊCÆ�²íÃ$fÙqû0uÅÎn½|“A غ!‹`$qÍ}7j›¯ˆXL»ˆX\±I±˜y"b±ì"bÑëP®!¨œ„i¯WÄÒÃÜ ·CS8p芰“ˆX⹬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«o óìÞ»šÂý÷¿ê‡ÕSIëHZ¬æcú×ËzÃòØDÄU2"bi.·ÙXfÌÁÄêFÔâ&V™j<&¾Ñ54Jý¹ ÷ÞûRh “×ÝÖ¯óK^Ä|®à–±’"fAc(‚‡ˆYðH}.Œ¿¾ ާLã§›çBÄ,þ:‰˜E·£<d Û>Lb–Ý/=Á(C„,‚‘@®6ìýå¸òÎk:v±Xv±¸."b1’"b1óDÄbÙEĢס\CP;8 ÓÞŒˆ%7åoe)έ½16Gðm,"b‰ç²N=¦0O `˜3®“T\´Kzç(nÁh¾Jl¹×ÇåeŒæò´¶—“ªÈeX£¸£·F.> FÏe†›â8U⋞žd5®¾‰Ç³s×îŽwûê=wß õÂê©ôªFÇj>¦½¬7,MD,Q%“!"–æâáq›eÆL¬nD-î`b•©Æcâ]C£ÔŸËzÇí/îúÖ¿¯N¾ÁÌg~Ék˜†AÄ,h Eðà1 ©Â…ñà×·Áñã”i`ütó\ˆ˜Å_'³èv”‡ŒdÛ‡E̲óö+ºõ©¾¯ òF öß|ˆˆÅ¶‹ˆÅu‹‘‹™'"Ë."½å‚ÚÁI˜öæD,ù¦r`W‚‚]{öx²•æY5”²"'ËZ aâqY§S˜'P0Ì×IªF.Ú%½s·`4_¥N¶Üëãò2FsyZ[ËIUä2¬Q\Ñ[#Ÿ?£ç2ÃMqœ*ñEOO²WßÄç™Ý±¢ã² à–[n†ú`õTU&b5Ó¿^Ö–Ç&"–¨’ÉKsñð¸ÍÆ2c&V7¢w0±ÊTã1ñ®¡QêÏe½ñ¦�ÚWÇF¬¼/y “ãÏ#ˆ˜¡"fÁc õA¸0üú68~œ2 ŒŸnž ³øë$bÝŽò1€lû0ˆYfoØçs¶<DÈ"Iì>l½þÛ|M_D,fRD,F’}³H;DÄâôÖfÍ@µÍH²Û7· ³ˆX,»ˆXô:”kj'aÚ›±ä˜ØsšÂÜÜž!"–x.ëÔc ó †9ã:IÕÈE»¤wŽâŒæ«ÔÉ–{}\^Æh.Ok+p9©Š\†5Š+0zkäâóñbô\f¸)ŽS%¾èÉáIVãê›âx¦§g )9rêÕSIëHZ¬æcú×ËzÃòØDÄU2"bi.·ÙXfÌÁÄêFÔâ&V™j<&¾Ñ54Jý¹A_}4…±= æsnf"f±yŒúhyøs‡ˆY7ëºj·ú‡ÑöðÒí?¥¡Áñã”i`ütó\ˆ˜Å_'³èv”‡ŒdÛ7[Ì2}Õ.F"dŒ$f÷íè'°M×ÙìEÄb&EÄb$Ù7)€´CD,N`mÖ TÛŒ$»}qs»0‹ˆÅ²‹ˆE¯C¹† vp¦½yKŽñ¹ÝЦ°/óDÄÏezLaž@Á0g\'©¹h—ôÎQÜ‚Ñ|•:Ùr¯ËËÍåim.'U‘˰FqFo\|>þ@ŒžË 7ÅqªÄ=9<Éj\}Sü$›˜œ„¦°oß>¨«§’Ö‘´XÍÇô¯—õ†å±‰ˆ%ªd2DÄÒ\<<n³±Ì˜ƒ‰Õ¨ÅL¬2ÕxL|£kh”ús#ƒîÝ»šB6×ý2íÞ—¼† ùÜÁ-c%EÌ‚ÆP³à1ú \~}?N™ÆO7Ï…ˆYüu1‹nGyÈ@¶}3Å,{gA eˆE0Ð÷-?Ÿî~؈m¶Î&/"3)"#ɾ9¤"bqúk³f Úf$Ùí‹›Û…YD,–]D,zÊ5µƒ“0탱˜œ2ÚQõ7ÇûçíÇñqÛÁ¬Kˆˆ%ž'P0Ì×IªF.Ú%½s·`4_¥N¶Üëãò2FsyZ[ËIUä2¬Q\Ñ[#Ÿ?£ç2ÃMqœ*ñEOO²Wß”0ÉÚE²±±ÆöÕÙÙª:Z=•^µèXÍÇô¯—õ†å±‰ˆ%ªd2DÄÒ\<<n³±Ì˜ƒ‰Õ¨ÅL¬2ÕxL|£kh”ús‚ÎÌL7¶¯ÂÄ”–‰ø3¿ä5LŽ?CŒ b4†"xpˆ˜ÔáÂxðëÛàøqÊ40~ºy.DÌ⯓ˆYt;ÊCÆ�²í›%f›ž¨m_†"dŒ$²1î¨"b1“"b1’ì›@Ú!"§?°6kªmF’ݾ¸¹]˜EÄbÙEĢס\CP;8 Ó>@KQÇænï²LïeÖ¥ DÄÏ(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oJ˜dÝ"õm 0öÕhX=•´Ž¤Åj>¦½¬7,MD,Q%“!"–æâáq›eÆL¬nD-î`b•©Æcâ]C£ÔŸ›4Ëü:" A)bðÔKÄ,n¦U2¯g1 ÅeðtíµŒŸnž ³øë$bÝŽò1€lû¦ˆY*=S òFØæêlê"b1“"b1’ì›@Ú!"§?°6kªmF’ݾ¸¹]˜EÄbÙEĢס\CP;8 Ó>XËÀD÷"b‰ç²N=¦0O `˜3®“T\´Kzç(nÁh¾Jl¹×ÇåeŒæò´¶—“ªÈeX£¸£·F.> FÏe†›â8U⋞žd5®¾)a’%ÍËAÂê©FëKÌÇÆbú×ËzÃòØDÄU2"bi.w0 ˆXš‹×354Jý¹C»OfÀù‚RÄ,à©—ˆYÜL«>d^Ï.bŠËàéÚk?Ý<"fñ×IÄ,ºå!c�ÙöM³# ²FÔ&llTØbÄ éOl®"bÑÊ‘í6ZBD,nBD,èX¦üÉö‰ˆÅ´‹ˆE¯C¹† vp¦]D,1\Õøð…&ç"L<.ëÔc ó †9ã:IÕÈE»¤wŽâŒæ«ÔÉ–{}\^Æh.Ok+p9©Š\†5Š+0zkäâóñbô\f¸)ŽS%¾èÉáIVãê›&YÒ¼$¬žj´¾Ä|l,¦½¬7,MD,Q%“!"–æâáq³Ð‰ˆ¥¹x=SC£ÔŸ;Ìû¤õƒk×M¼/y òî–±’"fAc(‚‡ˆYðH}.Œ¿¾ ާLã§›çBÄ,þ:‰˜E·£<d Û.b >ˆE°åýæµùvƒq#Bú›ªˆX´rd»ƒ–‹› :–)²}"b1í"bÑëP®!¨œ„i.KÊeDÄÏezLaž@Á0g\'©¹h—ôÎQÜ‚Ñ|•:Ùr¯ËËÍåim.'U‘˰FqFo\|>þ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$ãvm]ûj<‹Å ‚˜Åô¯—õ†å±‰ˆ%ªd2DÄÒ\<<n³±Ì˜ƒ‰Õ¨ÅL¬2ÕxL|£kh”úsjk3ûªˆYì<–·í"fq3­úy=»ˆY(.ƒ§k¯eütó\ˆ˜Å_'³èv”‡ŒdÛ7SÌ¢sC$ "dŒ6œÍ[D,fRD,F’}ÓH;DÄâôÖfÍ@µÍH²Û7· ³ˆX,»ˆXô:”kj'aÚ‡KÄÒ*‡K<O `˜3®“T\´Kzç(nÁh¾Jl¹×ÇåeŒæò´¶—“ªÈeX£¸£·F.> FÏe†›â8U⋞žd5®¾)a’‘ËHÒ„m�VO5Z-b>6Ó¿^Ö–Ç&"–¨’ÉKsñð¸ƒYÏDÄÒ\¼ž©¡QêÏ–íÐw艘ÅÎS`ùxÛ.b7Óª™×³‹˜…â2xºöZÆO7Ï…ˆYüu1‹nGyÈ@¶}3Å,Á¨@„,‚Ñ…³i‹ˆÅLŠˆÅH²o6�i‡ˆXœþÀÚ¬¨¶Ivûâæva‹e‹^‡r Aíà$Lûh‹X�T)"–xž@Á0g\'©¹h—ôÎQÜ‚Ñ|•:Ùr¯ËËÍåim.'U‘˰FqFo\|>þ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$#—‘¤ Û�¬žj´ZÄ|l,¦½¬7,MD,Q%“!"–æâáq³ž‰ˆ¥¹x=SC£ÔŸ»ëbvëYÛu°M¼/yéf>ý@M_n‹˜…ärx�DÌâÀ3~JCƒãÇ)ÓÀøéæ¹1‹¿N"fÑí(ȶDÌ"Œ0DÈ"M8›µˆX̤ˆXŒ$û&vˆˆÅé¬Íšj›‘d·/nnf±Xv±èu(×ÔN´‡ˆeÐâ–(ˆˆ%ž'P0Ì×IªF.Ú%½s·`4_¥N¶Üëãò2FsyZ[ËIUä2¬Q\Ñ[#Ÿ?£ç2ÃMqœ*ñEOO²Wß”0ÉÈe$iÂ6�«§­1‹é_/ë ËcKTÉdˆˆ¥¹xxÜÁ¬g"bi.^ÏÔÐ(õçnƺXGë™Ûu°M¼/yéf>ýY@M_n‹˜…ärx�DÌâÀ3~JCƒãÇ)ÓÀøéæ¹1‹¿N"fÑí(ȶ7-fF"dŒ4Œ »Œ¸Ñ ý‰CD,Z9²ÝÆAKˆˆÅMˆˆË”?Ù>±˜v±èu(×ÔN´‹ˆ%±Äó †9ã:IÕÈE»¤wŽâŒæ«ÔÉ–{}\^Æh.Ok+p9©Š\†5Š+0zkäâóñbô\f¸)ŽS%¾èÉáIVãê›&¹Œ$MØ`õT£Õ"æcc1ýëe½ayl"b‰*™ ±4;˜õLD,ÍÅ뙥þÜÍXëŒf={»¶‰÷%/Ã̧?¨éËm³\€ˆYxÆOihpü8e?Ý<"fñ×IÄ,ºå!c�Ùv³i!‹`dal<Ø_Ä éOl"bÑÊ‘í6ZBD,nBD,èX¦üÉö‰ˆÅ´‹ˆE¯C¹† vp¦]D,Aˆˆ%ž'P0Ì×IªF.Ú%½s·`4_¥N¶Üëãò2FsyZ[ËIUä2¬Q\Ñ[#Ÿ?£ç2ÃMqœ*ñEOO²Wß”0ÉÈe$iÂ6�«§­1‹é_/ë ËcKTÉdˆˆ¥¹xxÜÁ¬g"bi.^ÏÔÐ(õçnƺX3Ü¡)b;Oåãm»ˆYÜL«>d^Ï.bŠËàéÚk?Ý<"fñ×IÄ,ºå!c�ÙöæÄ,ÁèB„,‚‘„±á`7|7¤?±IŠˆE+G¶Û8h ±¸ ± c™ò'Û'"Ó."½å‚ÚÁI˜v±!"–xž@Á0g\'©¹h—ôÎQÜ‚Ñ|•:Ùr¯ËËÍåim.'U‘˰FqFo\|>þ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$#—‘¤ Û�¬žj´ZÄ|l,¦½¬7,MD,Q%“!"–æâáq³ž‰ˆ¥¹x=SC£ÔŸ»ëbC¡Ü!*b;Oåãm»ˆYÜL«>d^Ï.bŠËàéÚk?Ý<"fñ×IÄ,ºå!c�Ùv³q!‹`ËC¡;…ˆX̤ˆXŒ$û&vˆˆÅé¬Íšj›‘d·/nnf±Xv±èu(×ÔN´o‹Jø$2¥ Bb&!øB“Ƈs&—uê1…yÜq¤jä¢]Ò;Gq FóUêd˽>./c4—§µ¸œTE.ÃŽ5rñùø1z.3ÜÇ©_ôäð$«qõM “Œ\F"VíF÷U«§’Ö.ˆùØXLÿzYoX›ˆX¢J&CD,ÍÅÃã6ËŒ9˜X݈ZÜÁÄ*SÇÄ7º†F©?wÖÅúöÕ °ÏÄÜ¡*b;Oåãm»ˆYÜL«>d^Ï.bŠËàéÚqÿÈñÓÍs!bDÌ¢ÛQ2moZÌ¢s³$ "dŒ.°¼ˆ ÒŸØEÄ¢•#Ûm´„ˆXÜ„ˆXбLù“í‹i‹^‡r Aíà$Lû‹XßCD,ñ<‚aθNR5rÑ.飸£ù*u²å^——1šËÓÚ \Nª"—a⠌޹ø|ü=—nŠãT‰/zrx’Õ¸ú¦„IF.#I¶X=ÕhµˆùØXLÿzYoX›ˆX¢J&CD,ÍÅÃãf=Ksñz¦†F©?w3ÖÅ& b× ©¯§Àòñ¶]Ä,n¦U2¯g1 ÅeðtíµŒŸnž ³øë$bÝŽò1€l{­b`„!BÁh»±‹¸ ý‰ÍPD,Z9²ÝÆAKˆˆÅMˆˆË”?Ù>±˜v±èu(×ÔN´·ˆ…p,DÄÏ(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oJ˜dä2’4a€ÕSV‹˜Åô¯—õ†å±‰ˆ%ªd26CÄ’ÿ ÔVKGü¯åÉKÿ£bÖ=ÂÝö)DÄÒ\¼ž©™°uÞCU‹5ˆ˜ÅuCêkç)°|¼m1‹›iÕ‡ÌëÙEÌBq<]{-ã§›çBÄ,þ:‰˜E·£<d Û.b ²Fø }ã@ú› ˆX´rd»ƒ–‹› :–)²}"b1í"bÑëP®!¨œ„iß "–M~ K<O `˜3®“T\´Kzç(nÁh¾Jl¹×ÇåeŒæò´¶—“ªÈeX£¸£·F.> FÏe†›â8U⋞žd5®¾)a’‘ËHÒ„m�VO5Z-b>6Ó¿^Ö–Ç&"–¨’ÉhBÄ•Ô+¾7±øêZoÜÁ¬g"bi.^ÏÔÐ(õçnƺ8ˆ˜ÅuCêkç)°|¼m1‹›iÕ‡ÌëÙEÌBq<]{-ã§›çBÄ,þ:‰˜E·£<d Û.bÀ²Fø}Ã@ú›ŸˆX´rd»ƒ–‹› :–)²}"b1í"bÑëP®!¨œ„iK"b‰ç  sÆu’ª‘‹vIïÅ-ÍW©“-÷ú¸¼ŒÑ\žÖVàrR¹ kW`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7%L2rIš°5CÓSV‹˜Åô¯—õ†å±‰ˆ%ªd2ªŠXR…Ã&b —M¶ˆˆ¥™Xeªñ˜øF×Ð(õçnƺ8Hˆ˜ÅuCêkç)°|¼m1‹›iÕ‡ÌëÙEÌBq<]{-ã§›çBÄ,þ:‰˜E·£<d Û.b€†Y# ü‚¾Q ý‰MOD,Z9²ÝÆAKˆˆÅMˆˆË”?Ù>±˜v±èu(×ÔN´‹ˆ%±Äó †9ã:IÕÈE»¤wŽâŒæ«ÔÉ–{}\^Æh.Ok+p9©Š\†5Š+0zkäâóñbô\f¸)ŽS%¾èÉáIVãê›&¹Œ$MØÆ!"–bé^µ­s `¤–¨iÝŽb`Stgv‚`%>n3½ŠˆçãõˆXš‰U¦‰ot Rî&­‹â1‹ë†Ô×ÎS`ùxÛ.b7Óª™×³‹˜…â2xºöZÆO7Ï…ˆYüu1‹nGyÈ@¶]Ä,²Fø}ƒ@ú›ˆX´rd»ƒ–‹› :–)²}"b1í"bÑëP®!¨œ„iK"b‰ç  sÆu’ª‘‹vIïÅ-ÍW©“-÷ú¸¼ŒÑ\žÖVàrR¹ kW`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7%L2rIš°CD, ÄÒ½j ZçÀ I-QÓºÅÀíÕª$Z‰‹ÛÌ@¯[Äâòãý#"–fb•©Æcâ]C£ÔŸ»e×E/=@Ä,®R_;Oåãm»ˆYÜL«>d^Ï.bŠËàéÚk?Ý<"fñ×IÄ,ºå!c�Ùv³.DÈ"MDÜ(ÊŸØäDÄ¢•#Ûm´„ˆXÜÄ6±´T§"Ý?UžÛ”"b1í"bqíü¹Ý?l# ÁÑDÄÏ(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oJ˜dä2’4aCỏˆ¥XºW­Aë\$©%jZ·£B÷#åÛFZP'8"ê§ŠRÿZ-ê§êŸXº ED,ÍÄ*SÇÄ7ºfÂÖyU-–î6ˆËê²"fqÝúÚy ,oÛEÌâfZõ!ózv³P\O×^Ëøéæ¹1‹¿N"fÑí(ȶ'‰Y‚†YÛÔ ~c"b!ýµrd»ƒ–‹›QKOœ¢‹UZ +ªù«®?ÐþdûDÄbÚEĢס\CP;8 Ó."– DÄÏ(æŒë$U#í’Þ9Š[0š¯R'[îõqy£¹<­­Àå¤*rÖ(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oJ˜dä2’4a!µ›¾Q~5à˜þõ²Þ°<6±D•L}kÿTN}Ä'(é fê|ëK?.™ÀTA¯­½Xƒ€ˆXš‹×35¶Î{¨j±t·$* ˆY\7¤¾vžËÇÛv³¸™V}ȼž]Ä,—ÁÓµ×2~ºy.DÌ⯓ˆYt;ÊCÆ�²í±b`”!BÁȃºÀo(@D,¤¿VŽl·qÐ"bq#&bé‰OŠ€ Qj·nÈJq Ua‹c‹^‡r Aíà$LûÖ±TõCD,ñ<‚aθNR5rÑ.飸£ù*u²å^——1šËÓÚ \Nª"—a⠌޹ø|ü=—nŠãT‰/zrx’Õ¸ú¦„IF.#IR‹ ˆùØX›üëe½ayl"b‰*™ …ÞÓc„vy…!Þ’Ð|"^ù4a‹îZ÷mü1¹*-î`b•©Æcâ]C£ÔŸ»e×E.B‘^¦ˆY7¤¾vžËÇÛv³¸™V}ȼž]Ä,—ÁÓµ×2~ºy.DÌ⯓ˆYt;ÊCÆ�²í"f:!‹`¤AÝ�à7 "Ò_+G¶Û8h ±¸‰±tÅ&`ÅŠo_Fû+-Žž'"Ë."½å‚ÚÁI˜v±!"–xž@Á0g\'©¹h—ôÎQÜ‚Ñ|•:Ùr¯ËËÍåim.'U‘˰FqFo\|>þ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$#—‘¤ ©Å†Ä|l¬Mþõ²Þ°<6±D•L†ÝÏ´@ƒ{ÝxB­(bÁ9cÛªÊrMBD,ÍÅ뙥þÜ-».ÆBÄ,îCÞ"õµóX>Þ¶‹˜ÅÍ´êCæõì"f¡¸ ž®½–ñÓÍs!bDÌ¢ÛQ2m1‹@ BÁƒÚøñ 鯕#Ûm´„ˆXÜĈˆXta‰+¾}‹aìÄ‹m‹^‡r Aíà$L»ˆX‚K<O `˜3®“T\´Kzç(nÁh¾Jl¹×ÇåeŒæò´¶—“ªÈeX£¸£·F.> FÏe†›â8U⋞žd5®¾)a’‘ËHÒ„…ÔbÃb>6Ö&ÿzYoX›ˆX¢J&Ã|KˆOŒZÛãÞPâsÓN¨Î?ú'Œüñb€•ÁD,>ÿ: "–æâõLÍ„­óªZ,ÝmàÛiPÄ,îCÞ"õµóX>Þ¶‹˜ÅÍ´êCæõì"f¡¸ ž®½–ñÓÍs!bDÌ¢ÛQ2m1‹`»C„,‚‘µáã7 "Ò_+G¶Û8h ±¸‰±X¶ˆXzyy(·@¸}"bÑýzÚGe#ɺ~"b1Ñ ˆ…à­"b‰ç  sÆu’ª‘‹vIïÅ-ÍW©“-÷ú¸¼ŒÑ\žÖVàrR¹ kW`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7%L2rIš°Zl8@ÌÇÆÚä_/ë ËcKTÉd„áotòibZPÒ•4ºŠœ½&^Ü‚ÿt’òú×±4¯gj&l÷PÕbén›¶–EÌ‚ñè>ä}"R_;Oåãm»ˆYÜL«>d^Ï.bŠËàéÚk?Ý<"fñ×IÄ,ºå!c�Ùv³¶3DÈ"M°o@D,¤¿VŽl·qÐ"bq# b±?x³bÅ·/QÄÒOtÿ8í‹vè×3Ð>j,IÖõ‹‰-*b4|zIªkà"L<.ëÔc ó †9ã:IÕÈE»¤wŽâŒæ«ÔÉ–{}\^Ft=ô9Wþ«p;¯ûE ¢SÑmôŒ’(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oJ˜dä2’4a=a‡Ä|l¬úþõ²Þ°<6±D•LFKŒx{+JL¬:PEÄBs†E-GÝžÏ`Ö ±4¯gjh”ús·ìºXeDÌ‚ñè>äý"R_;Oåãm»ˆYÜL«>d^Ï.bŠËàéÚk?Ý<"fñ×IÄ,ºå!c�Ùv³¶+DÈ"Qˆˆ¥0i7¸v±$·ÏHŒˆˆÅ¶i±BíëêMÊ¿V·O”Uj,w8цÂ'uC‹¶˜ý¼~"bd ¯Q˜?·û± é¡Ð™È‡s&—uê1…yÜq¤jä¢]Ò;Gq FóUêd˽>./cwïâÿ mOkõ¡ËâTt*ºžQŽ5rñùø1z.3ÜÇ©_ôäð$«qõM “Œ\F’&,vK€˜Uß¿^Ö–Ç&"–¨’ÉH±Ä¿Ä.ï-ÜŸÄÏ ñöv³½t[ù<U "–æâõLÍ„­óªZ,Ýmhvβ""fÁxtò¾©¯§Àòñ¶]Ä,n¦U2¯g1 ÅeðtíµŒŸnž ³øë$bÝŽò1€l»ò­™ÁˆB„,‚‘~ƒ�"b!ýµrd»ƒ–‹›Øž"–ü´Õ/nQf´?QgRÄÒwÀí"bÑýzÚ{½Ë$²Ž„×(ÌΟÛýƒˆXÓÚ¡  ?: ùp.ÂÄã²N=¦0O `˜3®“T\´Kzç(nÁh¾Jl¹×Ç…1ÖñöEgÑ¥­/ÞÈâÑmôŒ’(®Àè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oJ˜dä2’4a ¾äÚÁ`AÌÇÆ*î_/ë ËcKTÉd\áonJ¿Ð¾~Øq1QIÝ )ãbqÅ-¡ŸjRÌ""–æâõLÍ„­óªZ,Ýmèö̲B"fÁxtòþ©¯§Àòñ¶]Ä,n¦U2¯g1 ÅeðtíµŒŸnž ³øë$bÝŽò1€l»ˆYÛ  Œ0ð 鯕#Ûm´„ˆXÜD "­Q<K;‘ù¯ŸÓX›{†H‹²Ý°±ŒÚíÏ¢E!KiS`Þ ‹ˆE;ôëh_Ìõ6’È:^£0;n÷"bAN‡ è€L¬/ÎE˜x\Ö©Çæ  sÆu’ª‘‹vIïÅ-ÍW©“-÷ú¸tF¥ªxOk¹zu*vÌ,ðAa€ µFqFo\|>þ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$#—‘¤ Kð%×nÀ æcc÷¯—õ†å±‰ˆ%ªd2RE,~Îp½B?'ÔysJ«øËÏ766ŠœrcÆ1ëEÇ AËõÍccc0>>½âMÞŽ?ÇÇô/þ ƒCï~�k×j<&¾Ñ5¶Î{¨j±t·¡Ý3‹_€ò3³ž©´ÛþY7Ó¢0üû\f Ý”µË("·NZ+¯L"õuý³â>)CxŒXZ} 7¤¾vœ¾ׇì_(¹²>N ­>ZÛ‹f:\tÛûþtê±:ë'�^_‹º]•¹<@\óþõ¥ûШOèzYmïÀÇ)5~<uÖÛn\/´NžñS?NÐÆ£‹?ZñžùŽ®'žñãÔ«ñcå52~´¶³ÇO7/j¾çb–,bü@ü|ï׉7~:÷´àYƒÜ¶“þÁB„,‚‘õ<."Ø3O»ƒ–`ö‡Âè2ÂNøkñŒ<ÖõË» BûŒD Òžˆ¥‹–ö1~fŽ9§?°6÷ "…¹acµqAò¦ôoCˆgØN?ÚîÌ3$Ö1s•šÛÞk¡êj÷z;nÈ:^£0;n÷a'aÚ3×¼Öx”iÂúÃÛn—Äi[×®œ„Òâ Ð R€s&—uê1…yÜq¤jä¢]Ò;G1,>3íV©“-÷ú¸z…ZªŽÚþ2n}½ó½š·×¯üKªñ BSªû´,êÓÏ(‰jc`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7%L2rIš°ôM%@*ã�AÌÇÆ*î_/ë ËcKTÉdðûYÛ©=…¸[<“‹Tú•RÀR'ªˆX|ïµùÞ¾ “““055Ùýr{6R‘û6 ±4¯gj&l÷PÕbénC³gæ |¡ªïó"f±á# õµãôýé/äûþ"fÁchõ³D'hãljÑ%b,Ä­íìñÓÍ1‹@0º!‹`$A=‹ˆöÌÓnã %˜ý¡0ºŒ°þZ<#uý2®¨Ð>#±‰"»}¥SæöÖæÝõFµÍHZñèöe„ˆ Æ›Xô›iêúu¸ò;¸1×nùj‡.2Ï@’XÄÌUjn{¯u†¨«}Üëí¸!ëHxÂìü¹Ý?d„œ„iÏ\{ðZwâQþ¥ ëo»]§m]»vpJ‹D¼Í: «ˆs&—uê1…yÜq¤jä¢]Ò;G1,>3íV©“-÷ú¸Š"ªEîQ‘L°^ˆXZèŸ×»øù¶ÏDPÌ¢èToJu£ðcžQÕÆÀè­‘‹ÏLjÑs™á¦8N•ø¢'‡'Y«oJ™d”9‹äK®Ý€AÌÇÆ*î_/ë ËcKTÉd8/#;^1|üyº0ell¼´¯­­ÁÊÊŠV¶#j)Þ¾réLœ>pæ$LŸ;Ï\š†ß<ðí°^–ç|º?ˆ¯ÇÈzßéÀxûÙu÷Œ‚[ö­ÁË®Z;Ç`nn®ø+\Ä,¼7·ØujJ‹;˜Xeªñ˜øF×LØ:ÅÒ݆iÏ,„#ô Cù…ª¾ß‹˜Å†GŒ€Ô׎Ó÷§¿ïû‹˜¡ÕDÌ5~œ  Œ'F?–ˆY°7~´¶³ÇO7OÄ,ÁhB„,‚Ѷ—¶Œ°÷Ë+”7ëe¾È©eÏ¢üË2Äýˆ¿}a‡€=ó´Û8h f(Œ.#ì„¿ÏÈc]¿Œ°ë*´ÏH$ŠXZHp®Ÿ9¶¨öðçB´ÍÊÓýXŠˆG¶O!΀ŒeãõÏøµFïó ꬇õÖ>m,úç¤}¢õGÌ\¥æ¶÷Zgh€ºÚǽގ²Ž„×(ÌΟÛýCFØÁI˜ö̵¯u'å_š°þð¶Û%qÚÖµk'aŽ" 2±Š8aâqY§S˜'P0Ì×IªF.Ú%½sÃâ3Ón•:Ùr¯‘«˜ÐŠÜƒã¸Zí/ë–aÇì,üÈ»ß ÷ÜyLNšlkkëð•G…ßú¿ ‹‹K05=C|a¥èºNwW —ajc`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7EòxŠˆˆE³6VqÿzYoX›ˆX¢J&£©7±ô+ùÏåû^.Héý4P/nþf’ñññBIJ°°�ÙÅ 0ùüQ˜8s&Ι‹ç`úÒE˜X[5b<5w|mjl5|öÀûš‚7^s ÞrÓi8°wìß¿¿Ì·÷æ*ofKsñz¦fÂÖyU-–î6Œ{¦*Þ^HÞ8”_¨êû¾ˆYlxÄH}í8}ú ù¾¿ˆYðZ}@Ä,QãÇ ÚÀøqbôc‰˜‹qãGk;{üt󶫘E eˆE°- "Ø3O»ƒ–`ö‡Âè2ÂNøkñŒ<ÖõË» BûŒD R5Ëw£ý!^k}²özãíö짪}N`o\Ñ TÛŒ¤ÆÛÊÿ5\þ/Çó=§ÌPob!mE±Ì¼[Ë/|b²8b}š@`íÓÆ¢NÚ'ZÄÌUjn“}Ñe¨«}Üëí¸!ëHxÂìü¹Ý?d„œ„iÏ\{ðZwâQþ¥ ëo»]§m]»vpÆø'âmЙXEœ‹0ñ¸¬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[î5rÕ%béò¬./·÷Ô øÙ_x/Üxýu¨k.l¹ï¥÷Àþ}{áÿòÿÑ.¶ Ó33ÌrÿTtUBcÌùrÌ3J¢ú+0zkäâóñbô\f¸)ŽS%¾èÉáIVãê›"y<EDÄ¢Y«¸½¬7,MD,Q%“¡Ð{zÏMz¯ó¶1óÍ*{OÈ2> f.^€ö/,\u–Ú{âòÊ*|ä‹pͧ?Úä@ ¬µ2øð³{à©K3ð/9UôÉÁƒ“+”ÐED,ÍÅ뙚 [ç=TµXºÛ0ÏH³(OŒˆYÀÛv³`1 NŒ ñ왚†]“SŽ‹o%q>ÁËüŽ™'ÏàiãÄòe÷'EÌâ§Æ•×ÈøÑÚî¸Ú¾Å,Á(C„,‚‘‡ˆX `Ï<í6Z‚Ù £Ë;á¯Å3òX×/#ìz€ í3ÍŠX ×µõÎ[IZë06>ÙX¸}N`mÖ TÛŒ¤Æ[|ð¸¶Öù0²oìºuë×2«àÒBö„úÝÚF Ö[«0>=]|§ßL+‡Ê›Ã`û¨þ^?­?bæ*5·É¾èDz°®£}Üëí¸!ëHxÂìü¹Ý?d„œ„iÏ\{ðZwâQþ¥ ëo»]§m]»vpÆø§Ú½)@db½p.ÂÄã²N=¦0O `˜3®“T\´Kzç(nÁh¾Jl¹×Ã¥ÿ¼µ÷b*·fÝ¡~øðU¤ˆEGîs¤í{â…“EÙ,ÓÄ”È2g ñÖ«¬žêÇóËÿp½5rñùø1z.3ÜÇ©_ôäð$«qõM‘<ž""bѬUÜ¿^Ö–Ç&"–¨’ÉHyK§5F;öÅÅEX_]±“/ÀØé“0vö$Lž= ».œ…éü'‚´·«¼pãpvç°çÜ98rì!Ø 3´.<yaþÓ£ào¾ä,\ºt öìÙƒ SbßÊ""–æâõLÍ„­óªZ,Ým+ÌH³(OŒˆYÀÛv³`1 NŒÐåyÃUׯ ?ã" Z� ®U>xâIx~ñRÁUyütó°¶‹˜‹qãGk»ãh»ˆY‚ÑY# ±@ÀžyÚm´³?F—vÂ_‹gä±®_FØõ�Úg$š±¬-.ÁÚÒ ¼ýðcð¦+žƒ?;y=¼ïé`fï.˜œ%ÛçôÖfÍ@µ ¬vôÎsËʥ˰w|ܼ똟ƒ;Æ¡§¯ÉºO™Õ¶Þʈ۹-mÝc®Ž¿´²_9ý0œ_8S»wo£¡ævY?ýNmwh78íÖc‘s’´g9ŒÙ34�ëú1Úǽގ²Ž„×(ÌΟÛýCFØÁI˜ö̵¯u'å_š°þð¶Û%qÚÖµk'¡´xd»7è€L¬ÎE˜x\Ö©Çæ  sÆu’ª‘‹vIïÅ-ÍW©“-÷ê\æ—t8cþF•\XÒËmmd0>1~–Ñã)üŠ2�×^s¸¸îÚÃ…¥ø—ì…0E‘õÍO‹7¨iõÊÅ/ùO7Põê׿(£Ö|Ñ[#Ÿ?£ç2ÃMqœ*ñEOO²WßÉã)""ÍÚXÅýëe½ayl"b‰*™ ú>VycùD,«««pþüyȾö\÷Ñ?…ñå%áʯ~ö<~²™öþù¢ÎOì\ZoÁZ ³{r &jgÐØØhÁÂò¬mlÏÌÓS07=i|Qñ•Ósðà©yxÅô Ì̬Àôôt%1‹ˆXš‹×35¶Î{¨j±t·ÍX“#‰˜Å£Ã#bð¶]Ä,X ˆ#TX¬Øã‡‰žx >Ôþë‘ËÏ Ùþ‘ãÇÊkdühmw\m1‹@0!‹`d!"Ø3O»ƒ–`ö‡Âè2ÂNøkñŒ<ÖõË» BûŒDóobY[Z.ìß|åÓ0Þ®â·]ý|éÔ8zi Æ&&alr àôÖfÍ@µ ¬vôÎóŸZ™Ÿ‡™lnßw/Œ©18¼w^vÍŒeÅ}T~Ìë[¾8¦]xCuÄ)ªÕ9¶Tç—Ž6òóVÖ±µ:_OtÎ×fÚç÷ÂgO~ VÛ1Çvï)f(³æ«} ‘‡Ýî²xæ$iÏs³ãO·uµ{½7d ¯Q˜?·û‡Œ°ƒ“0í™kgÍU±Ä‰õ¹Ë:õ˜Â<‚aθNR5rÑ.飸£ù*u²å^+$bÉÅ$kë°¾±û÷탗¿ìîb/ûìç¿—/Ï·¿„šA¾lêó¬÷„,W_ \¹êŠ¢ÌF»ì˜µ¢µmï­++˰{×.xÅË_VìÑŸÿÒWàì¹ó01>ããmÛ¸Q/»í½·¢Åõ}`ôÖÈÅçãÄè¹ÌpS§J|ѓÓ¬ÆÕ7EòxŠˆˆE³6VqÿzYoX›ˆX¢J&#õM,òŸ ÊÿN> ëíýñ¶€%bÁ",¶$ÿòì"éxz^²w†Ëí~¸pyÙè땵 X\^ƒý{fÛÏÏýû„=»î¿æbñ&›\È’#æ-,åÞ¿yWDwmHHû~¾Ñ5¶Î{¨j±t·ÍX+G1‹'F‡GÄ,àm»ˆY°'F¨0õÙã'€¾ˆ¥ñ@¶]Ä,X ˆ?ZÛ—@ÛEÌ"l}ˆE0’ ì™§ÝÆAK0ûCata'üµxFëúe„]P¡}F¢y‹nÏúQß}ÓcðKÞ+í/Æföí…~þÀÚ¬¨¶I«?×W;¯}¾rîZËoòÚP?»K+ôYodéÞ–9odÉËkª£ýáäÎkàèü“°¾²³³`?e9ík)p~RêàõÓú#f®RsÛ{­34�ëú1Úǽގ²Ž„×(ÌΟÛýCFØÁI˜ö̵¯u'å_š°þð¶Û%qÚÖµk'¡´xáë:H 2±*8aâqY§S˜'P0Ì×IªF.Ú%½s·`4_¥N¶Ü«s…D,ëëë°º² ““ð½ßõíð–¿öF˜˜è<j½ý­ß¿úþ:<÷Ü1˜Ý±£ó@]ÐÎz?ùsèÀàâСƒÅ±¥6Úÿ,¹ŒÚn´`iq®½öøG?÷Ó°kçÎÂþïøNøÀŸ} Þ÷Ç€åö‹SS3Ý:ã’‹r2ô“ Ñu3‹ÅLjÑs™á¦8N•ø¢'‡'Y«oŠ_¹ée$‹äK®Ý€A¬ÚUÜ¿^Ö–Ç&"–¨’ɨ"b±ßƲººkk«7åodYY…ñvzbqR1ÓÞ:¯Ÿ›„â,‡g&aØ‘ï£.¯ }½ÞÞ«/ίÀþ]}1ÎS§aq-ÿ7ë^‹?¯ø/ J‹;˜Xeªñ˜øF×LØ:ÅÒÝ6c]L }¤"bOŒˆYÀÛv³`1 RŒöø!ðÁã] Ñv³Øþ‘ãÇÊkfü(d=ÑËÐmßb`t!BÁˆCûÙÇzûŸk·¾Ôµ´=‹ò/Ë÷¨½´e„öÌÓnã %˜ý¡0ºŒ°þZ<#uý2®¨Ð>#‘(bQøM•ïúa_þ_·k^sÅ ð©3×ÀÄò LÌL´ºF¦ø0 k³f Úf$=íSùOt?LÌ?˜;{y jG–uþ%ÙÚšV•~3Åldv[I¬?bæ*5·=ךzš­«}É×YGÂkfçÏíþ!#ìà$L{æÚƒ×ºò/MXxÛí’8mëÚµƒ“0Æðºè€L¬ ÎE˜x\Ö©Çæ  sÆu’ª‘‹vIïŰøÌ´[¥N¶Ü«qa?¥`[VWVŠ¿×¾êðÎï{;ìÙ½ÛÈÏ…#?óÓ? ÿàŸþ*,--ÀìÜNãseÅ:pp?pqpÿ¾NZ._qÞÞ£—–affþÞOýÍRÄ’#­¼í-ßßøÚWÃÿ“÷Çþìc°19Uþ«o³ÕÐ]»º«Wðƒ’À躎Œ™ÅâãÄè¹ÌpS§J|ѓÓ¬ÆÕ7EòxŠˆˆE³6VqÿzYoX›ˆX¢J&£ŠˆÃÒÒR!¼|ù\¼p.^ºë—/ÂÝü/,ÃÂÎuÕÌÜ´Ã¥Œµ÷;vMÃVÆÒò(Og¯¬­ÃF{ßïþËVûyæÜÒ8ì˜R°¾¾“Ý7±ÆüœùÅ}#PeÜAÅ*SÇÄ7ºfÂÖyU-–î¶ëb¥PØG+"fñÄèðˆ˜¼m1 "ÄÕÀ?J‹IŒ'F?–ˆY°1~̶;.¶¼˜E aŒ@0²Ð¾ÄÄsE¬ñ"b±lÌþP]FØ -ž‘Ǻ~a×ThŸ‘¨ bAC]¿üf“â†6ÞyÃ×aF-ÃêÂbñö»?T·¼COöE?–"|{Çñö]9ž9þ(l¨õN±üNªNp—/ÿ߯Æ:<uü«ØÓ3F½YíÓÆ¢NÚ'ZÄÌUjn{ç*þ[Wûb®·‘DÖ‘ð…Ùùs»È;8 Óž¹vÖ\K<ЙXœ‹0ñ¸¬S)Ì(æŒë$U#í’Þ9Šañ™i·Jl¹Wã ‰Xòü•üM&“ðOÿáÏÀOþØ»Köïƒ÷¶óó/¨VW–4>Ðýkµ7îü§ûöâØWü‹÷V¡d1ùòÿç›VûËŸú‰¿WtßÞbcçÎðžw~/üoÿèç`zj²Ý¦e£íØÚ§¼ß¢FoÔudÌ, FÏe†›â8U⋞žd5®¾)’ÇSDD,šµ±Šû×ËzÃòØDÄU2œ~î¬ùaÇ……8yò<òÈ#ðéOý%|å+_gž}.\8«Ý7zæÿøáôê\\ÇÿήnÀ¨b½Õò;¨Î›Yt\^é®Y*PÖ¦Â6ïFÑ«' �Ö®ÕxL|£k&l÷PÕbén›±.6R©ŒQÆú<ª>ÂåúãÏý¦)óÄàÖ ÿLÚHRm·êÞ“8ŸIàŸo™þB`ûgnv íøíÝvEðà ?ÿ¡ÚŽûgžû^(ÛŽgZõ!ózv«>¨?cü0Ç)>ê{ütñ€.bqI ‘ñÓÍs‘Aø1¹^Ô˜W5~œ2 Œ+¯þñc¶_jšï*ó=Nº<?ßûuâ:†@0Ú!‹`ä!"­Ùnã %DÄâ&ª¼‰©qýúŸqõËmÿLñ׺ðõ"½sj¾ýºga}e Võß7E Ö¯!è+Á5tOÆÆÇajÇXXŸ‡¿zäXX¼ÔQ–C½È?è\X¼Ÿ~è°´¾�“;vö’¡{½±¶8ãÃÛn+‰õGÌ\ bçÏíþAD,î)OÄBT© 21>ÎE˜x\Ö©Çæ  sÆu’ª‘‹vIïÅ-ÍW©“-÷j\œ7±?›°¡à]?ðÝpËM7B/»ç®â (ù—yëí²9_.BÙX_o§×Úù¿ÄnÁÞ={€‹={ö¶Ël?m´ÖæÈ¹ŠŸ(j“ç1V×Và;¾õ›àe/¹;È•·áÝïüžvyU´­Ój /¯o!ª D€1³X|ü=—nŠãT‰/zrx’Õ¸ú¦HO‘¡±$V!ĪÝX=üëe½ayl"b‰*™ŒºßIJÿ‹6Nz¡xŽÃ¿Yå ‡æàÕûg¿×˜ƒ{÷ÎÀ¨bŒñ>lŸ•ÞO ª¶y«|ÛÑ‹€µk5ßèš [ç=TµXºÛf¬‹ÕþrRÄ,¾žðÞ$bŠËá1KÍàŽŸŽ? :ñ´ï±ÀäéÚk?Ý<"fñ×IÄ,ºå!c£ ùi!ÁˆÂ³¨nH¨Í’¶‹ˆÅu‹‘ìÝðY бäDã‡_åø¾åšgáÏO\ §Æ‹ŸŸ@ÛÜûGtYF·j‡"ìã““°÷†ëàÔ£ÁÇ}¬\¾\ØßñÆÿ¥“h`�½×$ÿÁG~½8NîÚÕ6ŽÁ¡[n/böêߨÆ^S+‰õGÌ\ bçÏíþAD,X¢¸¬S)Ì(æŒë$U#í’Þ9Š[0š¯R'[îÕ¸8"–kWŸ½ôî;€‹ïûî·ÁãO> _{üë0ÕÞðÇÆÆ áIþ­oºáz¸ýE·Àää$›/÷}ë7¿}ì xþÄ Å>?– QZkÅÛX^|Û-ð}ïø6ßKï¾³hÓÆF‹\óu˜?o½Qב1³X|ü=—nŠãT‰/zrx’Õ¸ú¦ø•›^F¸H¾ÄÚ%V!ĪÝX=üëe½ayl"b‰*™ŒºD,¦€¢sÞ ¼yd²½o왇ä/*ùÂ…%Xj¹õÉw¡wLµ³üýs3035 óK´0eb| &ÇÍo¸±‘¿¡ÆmõóBºˆe0PZÜÁÄ*SÇÄ7ºfÂÖyU-–î¶ëb=ÈÀxÆÄ>r‘ŸòÄèðÈÏ ·íò3CX (ÛîüLLÍŸBÄr¼û&lü˜$ÐÈøqbôcÉÏ a1€?ØÜÑÚî¸Ú>Ò?3$Œ DÈ"YˆˆE+G¶Û8h f(Œ.#ì„¿ÏÈc]¿Œ°ë*´ÏHlÞ›XÊö­-tÒcùïë§ãm·¸ù ø¿}I;{ ¦sÑ ýÑ5ô>÷3ïå2²аç ÈÇòÄÌ ì¿é¸øìó‚ݳã°kÆú3ëÕ§ÓçãSS°ûÚkabzºl„Ê;t@ƇvCkû:I¬?bæ*5·½sZ¥®Ú>ˆËF’œ—f¬ð…Ùùs»È;8 Óž¹vÖ\A Q·ú€Èİ8aâqY§S˜'P0Ì×IªF.Ú%½s·`4_¥N¶Ü«qqE,ņÚ}ÍÿÒÒ2ìܹ8‡ŸþÉ…ŸûÅ_.ö»×¾êp÷·Ãí/¾æfg!?üÎï)Ž‹‹Kðèׇ‡ý*üå§> “s³ðwÞûcEL.ò¶äPyûò?Æ'#ÞáJˆ�cf±øø1z.3ÜÇ©_ôäð$«qõMñ+7½Œ$p‘|‰µK¬B:ˆU»±zø×ËzÃòØDÄU2u‰X‰µv].¬oÀQ¥Kk�C.d™œƒ¹éIX$Þ²²{Ç4ò¸ Ý-â•~~§Äà ´¸ƒ‰U¦õ¼c™š xØFëb½9)bå‰Ñá1 xÛ.b,Ðb„šACÄR:Š˜¡Õ§îñcåU?ØÜÑÚî¸Ú.b`ë@„,‚‘„ˆX´rd»ƒ–`ö‡Âè2ÂNøkñŒ<ÖõË» BûŒÄˆXòü‹Ovr§öA¶ûÚÒåeÎÁÝ{ÎÂ#ó·²LNYCç¼+Ë2² |íë÷ÿÌž=0}×nX:bqh×$\±ÛúÀ±ûÚ˜+HÎîÛ׿+î7v­µ±èŸ“ö‰Ö1s•šÛÞ¹Š?¥ÖÕ>j,Ir^š±ÂkfçÏíþ!#ìà$L{æÚYsuTE,M>Å ¤�ç"L<.ëÔc ó †9ã:IÕÈE»¤wŽâŒæ«ÔÉ–{5®(K·O} :\ìÛ»þÕ?ûeØ97W¼‘¥.ÌÍÍÂËï}Iñ÷žü>˜_\„ÝLMO?ý”µÎ(Æ'#½Pâî{(® ‹?£ç2ÃMqœ*ñEOO²WßÉã)""ÍÚX=üëe½ayl"b‰*™Œ­(bÉ13–Á7Úkˆ’%ßfƷƧø{vLÃÄÄÌ/­?å—ßJLî¹)˜Š|KŽÎ><Èk¦Ê¸ƒŠU¦‰otÍ„ <l£u±.˜·®á/'EÌ¢<1:<"foÛÊŀ1B5ØãçcùÏ =E8Š˜¡Õ§îñcåÕ?~̶;.¶‹˜E Ø!‹`{@¡ÛˆˆÅ¶1ûCata'üµxFVa§a×ThŸ‘¨IÄÒmXøú™cK¿5;xPøá[‡ðù}°2?ß~ô¸È¾èä+ªÁÓ>eÚ/þ(2OžZ.þ tï¾2ýÎ\uÎQÉè=j·•´úžœ“¤= ÌaÌŽ?RísÆ }Ôõ6’ä¼4c…×(ÌΟÛýCFØÁI˜ö̵¯u'å_š°þð¶Û%qÚÖµk'¡´xáëj·¯á§Å2ñ‰jáó¯A|>åM2³¢¹ÂÙq\´Kzç(nÁh¾Jl¹W㊱�Œµ¿4Ûh¡öÉO~ î»÷¾¨7ŸÄ Lb‘ dbcä?_ðù©b=›ÐÚÀûɈv5‘)."©_ôäð$«qõMñ+7½Œ$p‘|‰µSACðŒ˜ÆÂú×ËzÃòØDÄU2M‹XòŸ»[[[+¶Ê1Ï-éçÏ/Áñj•Ã3pëÎ)œ¿½ÇLNlñOêÛÕß13 ;¦'ÛýÔÙ7«~ùÐË úFiq«L5ßèš xØFëbÝ1 ÇÊ+“"fAcˆ˜€5~Àÿ…¼.F@ ׆¥ùsB”£ˆYðZ}ê?V^ÊøÉž>̶;.¶Š˜E eÔ÷O�‚a…B·)‹mcö‡Âè2ÂNøkñŒ<¬ÂN;2®¨Ð>#1˜7±b»O”}‹Úþïù':‹/8WÎ-Û®>ë+k°¾¼¬TdÛŒ¤]'礗Ì;ÐdL욇#û¦Ê?¥ÆŠzÌv(üZkcÑ?'í­?bæ*5·=ךz*UˆM;ôëhëz³®ŸˆXLˆˆƒ‚ ƒ›2ñ¸¬S)Ì(æäs…³ã¸h—ôÎQÜ‚Ñ|•:Ùr¯Æ•"bÉ1>Ñy£Ø—~ Ž>s¶:ò6|ù¡¯çãÖ¿wð-䆛ò!Á˜Y,>þ@ŒžË 7ÅqªÄ=9<Éj\}SüÊM/# \$_bíTÐ0ˆˆ¥Ù˜õ´µÂ]Kõ›M‘kß¾½°w˜.žå6ZP>õ½!o\ZoÁâþw1ÿ‰ í€,Ö)b”w0±ÊTã1ñ®™°'€m´.6e=ÿ÷3(ÏdT.wê!\®?þ9iÊ<1¸u¢ÛÞß“²@ŒOxã|†fúãŸ;šþã–úŒU/C·]<8èÏ‹¨¶ãþ™ç>ʶã™V}ȼžÝªêÏ?ÌqЇúðÀñ§àCÇŸ†äñã”i`ütó\dþu¹îÞù® jü8e?V^ýãÇl;¾>Ô4ßUäøøùÞ¯oü£y#‹`´¸Ñ 6AÚ."×ED,F²!KÙýãØ ÊõŽŸ„Oº–ç'a|jºø×]ªäÈŒ¶YÌfœ“^²«ÖûN)r,ÇâŠòg†Ü›4ô4CÆ9$Ö1sUD,ˆ?·û±¸§ÕD,DUkGZtpS&—uê1…yÜ|®pví’Þ9Š[0š¯R'[îõqy-KžÊßÀ’ïµç.\‚Ïþ‹póM7ÃVƾðÅv[.þûa¬Ý¶îVÛ‡ñO‰£7ªï3‹ÅLjÑs™á¦8N•ø¢'‡'Y«oJ˜dä2’4a ¾ÄÚ© a K³1ëik…»–ê3>6›¢Z¬|Oœžž†ÃG®†sgÏlëëë0?¿�cÝ7°Œµ}Þp`¬ôW×(ïû‰ S+x¹öß© ˜Ý"?/TDÄÒ\¼ž©™°uÞCU‹¥»mƺØ4Œ[WÆ¿´—7³(OŒ¼™¼m—7³`1 Ξ€{ >xâé^M yü8õj`ü81ú±äÍ,X (玼™‹¡ÇF"dŒ.º-ˆXl³?F—vÂ_‹gäavÚ‘v=@…ö‰Á‰Xzñt"ó°šÍ�f'Zð½7<¿óäí°¶¸“;v ÁÆlf³NÎI/™vËVáS—òg†Ê»ºVq³¦tî,ï5dôÀ¦®Õ÷Ê% سÀÆìøS¨BlÚ¡_OrŒûìÖø]¿n™ð…Ùùs»È;8 Óž¹vÖ\K]H‹ƒnÊÄã²N=¦0O `˜“ÏÎŽã¢]Ò;Gq FóUêd˽:—ù6¾ˆ¥‡‰É رs'üŧ>íMo„ƒÁVÄ™3§áŸü4ÌÍÍ„ö6kòC ­–ûC43‹u-ù1z.3ÜÇ©_ôäð$«qõMñ+7½Œ$p‘|‰µSAÃ@ "–fcÖÓÖ w-Õf|l6EZ¬âOXAî»÷epúô¸pá\¼x–—aMµ`cl Æ[-Ƚnn,îÑ‹ë-øÂ…%2ÿª™ xÙžE`kd§Ë[ûmõZôã&V™j<&¾Ñ56ð°ÖÅAAÄ,H+¯LŠ˜!b�Öøÿò(È~䣱obzÆS¯Æ£KÄ,X (玈Y°ÁèC„,‚Ñ„"î‘DÄbÙ˜ý¡0ºŒ°þZ<#«°ÓŽŒ°ë*´ÏH §ˆ%OmÿL§ÄÜAÛ{ ÊûÆÃ'à#ÇÀs‹0>= cù—QF,ôÝŒˆåØyDûRÿ´Ðî™ñòŽN½ß"wÜ€Œr I«ïÉ9IÚ³ÀÆìøÓ§BlÚ¡_Ï@û¨±l$ÉyiÆ ¯Q˜?·û‡Œ°ƒ“0í™kgÍÕm$b!ê\ÒèÑÁM™x\Ö©Çæ  sò¹ÂÙq\´Kzç(nÁh¾Jl¹Wçª*bÉ‘‹>¦ÚûíÑgã> ¯ý`+"¯ûÓσ}B–y›•¦0øï{:À…>YaÌ,ÖµäÄè¹ÌpS§J|ѓÓ¬ÆÕ7EòxŠlKb £!"–fcÖÓÖ w-Õf|l6E½£ ËÆàСCÅ_ŽÛn{œxá$<tü)xé OC f'ÆàE;§`iík~—df ¶ äM,ÍÅ뙚 xØNëâ ‡o7žˆY¬8V^™1 CÄ,�¬ñã©3 ²Ã0D,Wåñ£qÎÓµ‹˜Åö?VkühsGÄ,X `´!BÁHB¡ÆÌÍSDÞEù—eˆû�Ô^Ú2Â{VîÏxP¬¾ÌþP]FØ -ž‘‡UØiGFØõ�Úg$±X Õ¯w߇n_Ï>~øUB~#ôî[ƒ_þò}°¶¸Ó»v•±ºt}Rí®‰n_FØÛ-ÛH X&ПRî šÒóÚ’ö -°Œ­úš'ZÄÌUjn{ç*þÔ©›vèדã>»5þÉyiÆ ¯Q˜?·û‡Œ°ƒ“0íœ1‹ÙEÄRÒèÑÁM™x\Ö©Çæ  sò¹ÂÙq\´Kzç(nÁh¾Jl¹×ÇE1nll€Zß(öʱ±üoœì›\°1>9 GŸy^[󳄧Ž> ãSÚ­AwÓ5R Z­Vñ—/„ÙøxñóJ¥OTß3f‹?£ç2ÃMqœ*ñEOO²Wß”0ÉÈe$iÂyÓ µS~Cb ùáUç–\D,ÍÆ¬§­îZªÌøØlŠšGB·«ýLšÿäÐo¹Nï?/žƒK—aÏÒì]Y‚©Ö†Sæìô<sÃN8¸¼7@gGºyÇö«èÈôýX{pÌÛX”w0±ÊTã1ñ®™°'€í´.6¾±â_&‹˜‰cå•I³ 1DÌÀ?ž:“ û‘Æ= <~”äª<~4.Ðyºv³Øþ‘ãÇÊcm‹!Œ.DÈ"Ø‹ecö‡Âè2ÂNøkñŒ<¬ÂN;2®¨Ð>#1,obé,{ñ¯Æ—Ï›d“s�ãÓ`ãEû.Ã+ž†/\˜€ñ©)˜˜žÑYuÒîͺe/“Úݤ2oFl_úÝ“óÓB™{Ñ”q§—yÆ�’´úžœ“¤= ÌaÌŽ?m*Ħúõ ´ËF’œ—f¬ð…Ùùs»È;8 Óž¹vÖ\ËæÜ”‰ÇezLaž@Á0'Ÿ+œÇE»¤wŽâŒæ«ÔÉ–{=\JS’ÚÅÖ××Amlô!?ÝØhA66cí¿LûÀc}m VVWáõ¯}5¼ó¾¯òg««+°¼´«k«°Þæ]ÛX‡V.ªéÖ7=6>“ã0ÑÞã§&§`fv¦¦¦¡ Þõƒï„ óËð©Ï|&&ÆabrªÛÆÎ‡h­ö—Œ*°hPÝzåopQèþA½•…1³X×’?£ç2ÃMqœ*ñEOO²Wß¿rÓËHÉ—X;å7$Ö0"bi6f=m­p×R}`ÆÇfS𱟠»Øe¦¦&‹7³}z ._uM×_µ÷Ü ˜^Y‚ó—`çÒ<ì[]*þÂÃW^çÖ6 !é7}n¸x ¶;:ƒZ™ŠˆeÜAÅ*SÇÄ7ºfž�¶Óº8°ÿ2YÄ,H+¯LŠ˜!b�ÖøñÔ™Ù. Kû¯ªÁñ£qÎÓµ‹˜Åö?VkühsGÄ,X `4!BÁèCD,–Ù £Ë;á¯Å3ò° ;íÈ» BûŒÄ0‰X\{çÀvOš>;®†lÿâê=·>þÕX_„ñü˨ÞoÛí(+eAý.±8d¶ÓUD,9쟂´:�2>¸C½N]Ç^9�zN’ö,0‡1;þ”©›vèדã>»5þÉyiÆ ¯Q˜?·û‡Œ°ƒ“0í™kgÍU±l.ÐÁM™x\Ö©Çæ  sò¹ÂÙq\´Kzç(nÁh¾Jl¹×ÃE‰XrûÊÊ2ÌLMÁ»ÞùýpÏ]·ÃùóàÓŸý"|ü/>‹KK0>1QˆYò¿õuXZZ†7ãëáGø’ÿeôÒò,\¾ …`$T÷ü(¹€ÚåzÈ¿èÛ±cìܹ»¶Ä"£ü÷þÌÍÎÁG>öçSämm©V!âÙØX‡¹™YxÓ^ßðÊ—Ãþ}{áÁ‡…ÿø{ÿ­è—éé´ý®˜…1³X×’?£ç2ÃMqœ*ñEOO²Wß”°ÑËH⦥hc4£òk8Dð¯—õ¶Ç&"–¨’ɨ[ÄÂA¾Î·Z*ëE·Þìoï­‹=oaq–`½½ß\ܱ .¶}ŽuKìÚ1×ìÝçΞ…ONM±“ÏÁóç»oqYDßâ2’è^Ðþ›XõM…w0±ÊTã1ñ®™°'€í´.zc1 øëÄ#ˆ˜!b�ÖøñÔ™Ù}<pìiøPOÄR–ipüh\ ótí"f±ý#Ç•Ç?ÚÜ1‹C aˆE0Ú‹ecö‡Âè2ÂNøkñŒ<¬ÂN;2®¨Ð>#±y"ÕÂÚ§ðþÈï_ö¿¸Ø3³ßvísðGÏÝ«ËË0™#¥Àø2ÉlŸv•i¢DÄ‚¡ªˆ%þÓB`½…@‹þ9©topK{Ì\¥æ¶÷ZãO— ±i‡.Âí£Æ²‘$ç¥+¼FavþÜî2ÂN´Scv±l.ÐÁM™x\Ö©Çæ  sò¹ÂÙq\´Kzç(†Åg¦Ý*u²å^Ÿº² ë+ëð³?ûÓpËM7¶Ý»vÁõ×] ßýߟþìçáCù<óÜóŶ´¶¶¯~åË“D,ª}0ù2\¼x¾Í³U‘ `._¾TüMNNž=û`ç®ÝQõÊ}ü¯ÿ ,.-vÞÌ29^,~yû¿åÍol·õ~˜šœ,ý_÷êWÂÕW^ÿøÿ° +0=3ˆÀ˜Y¬kɈÑs™á¦8N•ø¢'‡'Y«oJ˜dä2’4aÁ÷Pͨü†Äüëe½í㱉ˆ%ªd26CÄâ‹Ûy+‹ù6¯ýû÷þ}û Ûêê*ÌÏÏÃÂÂb!pÉËÝpÃõÅ~–ãÁ‚;vÀ‰öy«+èoïÙs‹—a×ü%ØÓ>î\^„}í¿VõÇÒ¡B.œM^‡“Ñ8ÖúÛxL|£k&là `;­‹›µ±Š˜üubˆDÌ‚Æ1 �küxêL‚ìÇŽˆ¥÷&–¡®ñ£qÎÓµ‹˜Åö?VkühsGÄ,ÁèC„,‚Ñ…ˆX,³?F—vÂ_‹gäavÚ‘v=@…ö‰á~KY¶khy¸Ã2½²]×@ßqýÓð‰WÁÅ…q˜˜š.~¡÷/£éöuo”ÈëŠÕ¹ž'ç§…@!7˜™g I«ïÉ9IÚ³ÀÆìøS¥BlÚ¡_Ï@û¨±l$Y×OD,&FGIJiök`œx.ëÔc ó †9ù\áì8.Ú%½s·`4_¥N¶Ükäên¬v±üç„ÖV7à ¯ÿ†RÄ¢#p¼á5ßPü=uôxàÏ>çΞƒ÷þ軣E,óí/Ýòaž¿å¤ ä˜3gNÁù çÚ_(ÞÒÂEÞ–Ÿú‰Ë—çazjÞòÍo‚{ô¿åæá¯{5|ü“Ÿ†ñvæov±áýàÍðø1z.3ÜÇ©_ôäð$«qõM › ¹Œ$nPŠ6F3*¿!±†CÿzYoûxl"b‰*™Œ¦E,ÔÏ õLx¾BíîÏM¡—¿‚{î¹ Ž?çÏŸï¼ÉeaÖÇÇaqn,¼ N¶}r1Ìââ<¹tœ>} †v36V.ƒZ[„Öú ŒÁŒÕøó? 7ïlÿwºï ݵu ‹¡µþ6ßèš xØNëâfo¬"fb³ 1DÌÀ?½:Ç�©ÓÏwE,áh{åñãm`ü81ú±D̂ŀrE mˆE0š‹ecö‡Âè2ÂNøkñŒ<¬ÂN;2®¨Ð>#1Œ"åöGïUÂyj÷ ëø$pÿCê¼å ø¹Öaj×ÎÂÞêŠYбÜ9±ì¦Íø RáhrQþœŽÞÛ‰ ép‡dðúiã#f®RsÛ{­ñ§I…Ø´C¿žä÷Ù­ñ¸~½2á5 ³óçvÿvp¦=sí¬¹*"–Í:¸)Ë:õ˜Â<‚aN>W8;Ž‹vIïÅ-ÍW©“-÷ú¸|Œëí/À¦§'àû¿ûmÂM7\ëÇÞSì§c"–\`röÌIX^^.Ò©?EÄEkcΜ>óó—áÀ+ÊÙÂDûËÁ_üû—]¿w~ßÛáÓŸý¬¯­¢B–róö@D,¸…Ëå&«qõM “Œ\F’&,uÓLgEqUêµ!„½¬·}<6±D•LFÓ"–´¸Ú/CÌâ³å8räpñ×Ë^+~Þo æºosY€cÇŽÁÁõ‹°®Æ` X_†ÖüÉö†Û³Z«ûW®ßÛù ¥|oú¾¡\[²Zëoã1ñ®™°'€í´.ËÆ*bð׉!F1 CÄ,�¬ñC|¾ê…ÆÕ±ïø) Ž'hãljÑ%b,”sGÄ,ÁèB„,‚‘…"´=‹ò/Ëû:j/ma‡€=+÷[<(Vߌ°[§ £Ë;á¯Å3ò° ;íÈ» BûŒÄ𿉥¨c÷wÆ{ölj'Äâ•Wœ=¾¾0³3u¿`êq÷> ãŠXÌLêî™þÏ é@®©6Ÿj)ã.Ͻ~WÌ\¥æ¶÷ZãO‘ ±i‡~=É1î³[}ź~"b1!"–ú€nÊÄã²N=¦0O `˜“ÏÎŽã¢]Ò;Gq FóUêd˽>®¢ˆj¡ÅÖVVac£ßó]ß^ü”1"–ÅölgÏž*þEuó_D™XY^†Ž?û\;vòî%bê˜÷Ù;Þþmð_þÛÁÚÚjû˶)-·{/ÓÑ" nár¹Éj\}SÊ$£Ì‰”¢ÑŒÊoH¬áÁ¿^ÖÛ>›ˆX¢J&c˜D,}! /–O¸¢Û{¶V«o›l?×N¶÷ŸÎ¾Ý±_sÍa8~üøo§áüÚ4‰ü ,jþ4y~hvvLNÃÄøXñC:ê¿—èí×0�Xëoã1ñ®™°'€í´.nÒÆš‡Eg‡ˆYÀ_'†AÄ,h ³�°Æ$ì[ª÷sBGA¯³ˆY�Òvï|G×1Ë–³£ ²FŠHÐö,Ê¿,Cì稽´e„ö¬Ügñ X}3Ân*Œ.#ì„¿ÏÈÃ*ì´##ìz€ í3›!bÑnhQg¤?6oÿL'wî Œí½8Èo~~äÖ¯Á/|~/¬ÌÏÃÌÞ½f7Bcn0ÀÇrù¢r?`D܃(NÈ®tqì±uD=ÆO"QõÕ‹éã#f®RsÛ{­ñ§G…Ø´C¿žä÷Ù­ñϸ~åø¯¡}"b1íÚÁI(-^øºÚí ÷YßÜ”‰ÇezLaž@Á0'Ÿ+œÇE»¤wŽâŒæ«ÔÉ–{}\>Æ|ÉVh{|Ë_{#4óçÎÂ¥K»)ÿ ¹ÐåâÅKpîü9XÈÿ…ùÒ"¬B›Î¿È‡©é)Ø1;WˆRöïß{÷ì ~¡•÷—ÿÜÐÚê*ìÝ¿êÆ·~Ó›àƒþ8œ¿x&&z¢ÆÌb]Kþ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$#—‘¤ Kß4CBí”ßXÃ!‚½¬·}<6±D•LÆ E,=á‰/n–)r)j®è±zè|°ïèìì,ìÙ³îÞy þüü­àÅÆ ´.Ë7^À1¶ãJ�ê’l¬Ì¿�M߀¿ôà%صëpÑ®¨û�žà¥»¶d1´Ö߯câ]3aO�Ûi]ÜÌUþEr‘‡™,b$Ž•W&EÌ‚Æ1 @hü8> "–çâb³à@Úîïèz"fÙ‚b`”!BÁhC¡§–=‹ò/Ëû8j/ma‡€=+÷W<(Vߌ°[§ £Ë;á¯Å3ò° ;íÈ» BûŒÄÖxKa³f¨?ü*HÁ5»—áuW€¿8u ¬/¯ÀÄô´¾{#¤Ì¹°±l‹XüíˆGù3CÚO écÑ?'ím|7åøÎs³3ûk£}ÔX6’ä¼4c…×(ÌΟÛýCFØÁI˜ö̵³æªˆXL ú Ü”‰ÇezLaž@Á0'Ÿ+œÇE»¤wŽâŒæ«ÔÉ–{}\½B-…÷ÙÆÆzqzßËî&~'ù¾yîìXX¸ ¡ï‘æ/ÏÃsÇž‡“'O y^þ·¸°§Ïœ£Gÿ*ýŠ+¯€k\;wù߸réò…öwv°ïÀÁZÿ5wÞw/¿÷%ðá}²èS¬/í·²ˆˆ·p¹Üd5®¾)a’‘ËHÒ„¥oš!¡vÊoH¬áÁ¿^ÖÛ>›ˆX¢J&cÐ"–>ˆöµX>Á •ç{;‹þ&\øÒ©ÓÜÜìØ±¯½ò<|ùœ[§ßÊâqŒôK«.ZKgÛ.uþ€‹üm,¯¹~æfgŠv5÷6·îÚ:ÅÐZ‰otÍ„ <l§uq6V"fI®Ýö2)b4†ˆY�BãÇññ ± \%ˆYp m÷Îwt=³l11‹@0Ê!‹`t¡ÐSËžEù—eˆýµ—¶Œ°CÀž•û*«oFØ­S…Ñe„ð×âyX…vd„]P¡}Fb¸D,½ΜþÀÚÜãX8Ù9Ÿ˜lzÄà]·<Ÿ;uVç'`br`l ìŸ*? Ì1€ˆXú6âúE¢ÿ3C½~/h$°ë§UV¶¼4ì ód9ŒÙñ§Eìúi‡~=É1î³[㟜—f¬ð…Ùùs»È;8 Óž¹vÖ\‹ |Íjèà¦L<.ëÔc ó †9ù\áì8.Ú%½s·`4_¥N¶Üëãò2vÅ—c*ÿòkXlJ±¿L:î ,.Î{ý/Ï_†'žxΞ= ©X[_‡cÇŽ€[o½vy~Bh¡]§|©Øà‹ŸÛæ;f‹¾T­ð—{"bÁ-\.7Y«oJ˜dä2’4aÁ7a£•ßXÃ!‚½¬·}<6±D•LÆf‰Xüq­'D1K'Ž2bâ"»>YaÛ»w/\wø|×å/Áï¸ZSx&¦!ÛwD£µ°º�Mbçä|÷M/ÀµGn(Úc£>QKwmÈbh­¿ÇÄ7ºfž�¶Óº8kÿËI³¤Ö‰n{™1 CÄ,�ܶƒgyàØQxàùgJOšË3~JCƒãÇ ÚÀøqbôc‰˜‹åÜÙvb`„!BÁhB¡§–=‹ò/Ëû6j/ma‡€=+÷S<(Vߌ°[§ £Ë;á¯Å3ò° ;íÈ» BûŒÄVx àmÎÑûhë‹£õûØì˜jÁwÝð4üî“/†µ¥%˜˜ÛÔ³ ´¨âOE„w4ÊŸ*ïÒ”;$ƒ×O1s•šÛÞkÍìôºfž1î³[㟜—f¬ð…Ùùs»È;8 Óž¹vÖ\‹‰Œ°7tpS&—uê1…yÜ|®pví’Þ9Š[0š¯R'[îõqéŒÎ—eZ²·å<þµÇaee¦µ·–aà~ytáÂ9XX\�ê“¥\@óÄÃsÏ=çÌÙõõ X^^k×g­û– èkM3ƒÉÉ ˜šž€Ù™)˜˜/Ëæ‚˜sçÎÁµ×] ·ÞrKû–¿gÈë6>>{öîƒ8mÎûîñ¯=½›öï\ Nòbô\f¸)ŽS%¾èÉáIVãê›&¹Œ$MXú¦j§ü†(¾Äæ4 ÿzYo•yl"b‰*™Œa±¸Â<VHÌÒáUdý&–îÝyŽ˜%#Ø]wÝ §NÞ•ýüéé»áØÊ^¨ jmš\®Ûµo»á98wÞy{ñ“‚¡}8MØÒ][²¾Yëoã1ñ®™°'€í´.Õ^ÙÿrRÄ,©u¢Û^&EÌ‚Æ1 �·í€¬5<´ø‹#ˆ˜Òvï|G×1‹ˆY‚M‡Y# E$DÄ‚Ñe„ð×âyX…vd„]P¡}Fb«üœêe9¾½C¶çF¨‚o½þ8|ôø5pjaƧg ë~ñxSI'ÓÇŠnŸ‡Æã§…r‚ã™Á£ZÚ¿ÏÿÅwï¼Õ»«ó·ƒ¶g9ŒÙñ§Cßõë#óŒqŸÝÿä¼4c…×(ÌΟÛýCFØÁI˜ö̵³æªˆXLd„½) ƒ›2ñ¸¬S)Ì(æäs…³ã¸h—ôÎQÜ‚Ñ|•:Ùr¯ËËhDzŽÐãèsÇàÏ>òaxãÞ;vào3á¾™dqaæ/_Î?BFó—áK~æç/Ü‹K«mÛ¬®¬ux––Š¿••UØè¾åd|l ¦§§`nv¶ø»Ð¶MOMÂÎ]³0;;U~iøì3ÏÂùsçà¥/yiÛ>‹ÖãòåK095]üdA¾¶/,ÌÃÇ?ñq8úìó:z…,�á.äÄè¹ÌpS§J|ѓÓ¬ÆÕ7%L2rIš°à›°ÑŒÊoˆâKlN³ð¯—õV™Ç&"–¨’ÉK}‘Š?–OÌÒËïÄPNL,/ë}1ѵi‡=˜jïm¯{íkàÓŸþ,¼{æ‹ðøåýðèüUp|y,lÌÀ:ŒC2ÔÔ‰‰1;'ÖášËpǸmÿìܹ ^ýêW¡?Ó#ZɼßlÁ€žÜë:Èx=S3aO�Ûi]ʽ²ÿ夈YRëD·½LŠ˜!b�§í(Ìú”"ƒKÄ,xŒ~,³`1 nühmgŸnžˆY‚æ!BÁÈB ±`ta'üµxFVa§a×ThŸ‘Ø*"–2«ËgzöÖÉ/tJÌ€lÏ ‹±v¨¿~ë×àW¿r¬Î/Âôî]½€QѾ(‹¢iB°ZÈ?'í­ r§ŽŽ) ÌaÌŽ?*Ħúõ$ǸÏnõ 9/ÍXá5 ³óçvÿvp¦=sí¬¹*"ao èà¦L<.ëÔc ó †9ù\áì8.Ú%½s·`4_¥N¶Üëã²/Æ®ü_:·¿(:{þ<|ös_‚…ùyxÍk^ GŽ\ãør¾<Z_[‡‹Α¾—.^‚Ïñ °¶¶VÚ–—Váü…ù¶mÎ_º�§NŸƒ‹—/ÁF!às?´h·©¥Z0žÃž=»àŠûaßÊÞöwã°oï.˜™*Ú}ùò<|æ¯> /¿ï^ؽ{7ZŸ‹ç϶ËM¡_–qÚ~ìØóð—ùIxøÑÇáôÙó°gï^Ç¿ ,oo¼‚ þ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$#—‘¤ KßTBBí”ßÅ—Øœfá_/ë­2MD,Q%“1L"–Ü7¢P~½{UÅò±Ý0ÑŒ-±ë’‹R_óšWÁÃ?ã/œ„›fNÁ«=w^8Vú´Ú÷Ðÿdîíð_§^l0|õÜ |Ó5§àêë°sÇlñ4½ÞtíÅ'aß¾ƒp÷Ýw•oˆ«ÿm,ݵu 뛵þ6ßèš xØNëâPî•=ô¿œ1Kjè¶—I³ 1DÌ€^/@êÜö1D,©ˆYðýX"fÁb@ÜøÑÚÎ?Ý<³ÍB„,‚‘„""bÁè2ÂNøkñŒ<¬ÂN;2®¨Ð>#±5E,º¯m;xWÇ–¥ÿ ²»]‚{ö…‡/NÀÄì ŒONvbô^Ûlß HÄ’Ãùi¡ ï÷úiãÃ;WÍ»>±`vþÜî2ÂN´g®=x­;ñ(ÿÒ„õ‡·Ý.‰Ó¶®];8 ¥Å _W»}áþÀë›ö¦€ÏKÂÄã²N=¦0O `˜“ÏÎŽã¢]Ò;Gq FóUêd˽>./#:×;Æ\È137ŸþÜWàâÅyX^^†»ïº^òÒ—–?ÍÓÚØ :.^<[Ô�û)±|öóŸƒnxçÏÏÃÂÂ2œ:sž9vVVW`|l²±ü_”OÂd{Ÿk6Öû™Õ*ê²¶¶ZüäÐù6ç™sçŠ}~ýáÃ…f×®9Ø¿WñåÖÆÆ:|îóŸ‡ûï9ìAÄ,y]s1ËCWBz´Z-xðË_†‡þ |þKÀ#_{]yL¶û²ì[}Ïe]Kþ@ŒžË 7ÅqªÄ=9<Éj\}SÂ$#—‘¤ ¾ ͨü†(¾Äæ4 ÿzYo•yl"b‰*™Œa±”wË7®èàZò{ÛŽ(Åz’ê}aˆWL>[Ì2;;WìO?}ž}ö9˜xáIƒs¬Ý†»7ŽÁ…Œù?FÏZðÝ7ž€“ë°kçnã'þ0ËX{¿Ÿ™†Ý»÷ÀUW] ‡$¹Ó~BÈŽzn°Ö߯câ]3aO�Ûi]LÚà€È©‰/fEÌ’Z'ºíeRÄ,h ³� ×ËÂÏ=£ýœVi«>N -–ˆYp m÷Îwt=³ˆ˜E ؈E0Ú0ö¹Œ°‘è–!öeÔ^Ú2Â{Vî—xP¬¾a·NF—vÂ_‹gäavÚ‘v=@…ö‰±èÁ»šunêÚ_‚?‡§òc·=ÿë§÷ÁÚü<ŒíÛgV ¯ø0ÓÌÚ7FÚµ·Ö×!åO uÛÔz®ý…™õA¡qýº7¢¥=f®RsÛ{­ñ§@ïõ+‘yƸÏnr^š±ÂkfçÏíþ!#ìà$L{æÚYsUD,&2ÂÞ T”™G¤¼¹|ž@Á0'Ÿ+œÇE»¤wŽâŒæ«ÔÉ–{}\^FWþÿÕ½ËðÈã_‡“gNÃââ2œ>s ^ûÚ×?½Ã±,..?„­§‹‹‹ð¹/|¡±ll(8sú\¸4?õ4\nïÉ“E=fwì„™™ãË/¬!¹°$Ýäq—–à±'Ÿ„§NËnºVW×áê«ÀøøX±‡éK_†W¾âèÏ ­¬®ÂÒÒbñ…Ÿ½>ÈÛòÉOþ9<}ôYøø_|¶áìÞ»vì¤~’ àÄè¹ÌpS§J|ѓÓ¬ÆÕ7%L2rI܈<6šQù Q|*hØø×ËzkÈcKTÉd ³ˆ¥‡1KÏ¿C‘1Må-«Çwß“Á5×¹;àìå �'Ÿ…JYöN¯Á•û¦áÅ/¾®¿þº²¾¦%+W:ßÓ¼^±ø„-n^7â@–3úº"^ÏÔLØÀÀvZ“ƒ`æ!ˆ/fEÌ’Z'ºíeRÄ,h ³�Q°ƒ<w>X¼‰…®³Þv³`1ú±D̂ŀ¸ñ£µ=~ºy›*fF"dŒ.Œý-#ì@$ºeˆýµ—¶Œ°CÀž•û$«oFØ­S…Ñe„ð×âyX…vd„]P¡}FbôÞÄÒCëäçM–=7A6{bqpÇ|óµÏÁž¿Æ—–a¢ýe™SR‹@ûò›åµt!‹ýÓB­6W65®‡):>³îV {˼“£®uÇ”æ0fÇŸþx×/óŒqŸÝÿä¼4cáöøö‰ˆÅ´k'¡´xáëj·9n‘¶áöÁ#¾ T'‘¦0O `˜“ÏÎŽã¢]Ò;Gq FóUêd˽>.б÷1ÜÝmÕþƒ‡`rjΞ> ú¡OÀë^u.^¼ßúmo…;v‚7ºÊÊçú¥Rþö’/}ùËåÏ å"–Ó§ÎÃñNÃãOm—mÁž½û`×îÝ019IEp,¹°d¶ýÅÜìÜXß³—/]‚Kíú~ñ¡Gà¶›olïå ®¹öPñóIy¾ò•‡à¯¸È@»ìE˜™™ þkï……xà÷Ã_? þ©/ÀÚú*8t¨¨{¯–ý†ÐõÊþêÇâÄè¹ÌpS§J|ѓÓ¬ÆÕ7%L2rIš°ôM%$ÔNù Q|*hØø×ËzkÈcKTÉdlK±b–^™Z-Š·ø/ò†–Œ-fÉ…¢9.îØ•²äßÅÜyç07Gï©ÔJ®P¾at#d9³Ö߯câ]3aO�Ûi]L:À=Õ¸)пœ1Kjè¶—I³ 1DÌhÁ\ÄÒû9¡ÚÅ"fÁ´Ý;ßÑõDÌ2Œb`„!BÁhÂØ×2ÂD¢[†Ø‡Q{iË;ìY¹?âA±úf„Ý:U]FØ -ž‘‡UØiGFØõ�Úg$FPĢŻê•P¾ïæ'áÏO\ K 0>=m|¦þ”ãkßúò2l¬®Á {o.í±(Z:w|7ﻞºøTÁ=ÞÛh7ž½$yÏì«1vf ×5 \WúzIr^š±ÂkfçÏíþ!#ìà$L{æÚYsUD,&2Â^{ˆEui ó †9ù\áì8.Ú%½s·`4_¥N¶Üëãò2Fs©B1=3 'Oœ„?ûÄgà5Ëkð=ß³#XryiT«…~±ôøãÁåË—;TçM,GŸ?O}®k : Sí½ØW/ÒÚÍÊ0û(ÞŠrúÔIøêOÂj{_Ïàºë®,ÖßÅvŸ|ê)xÑ­·:\¹Ð%oC.Šñ!;ÍWz >ùW_€ÉÉ)¸êð²îªÜ³!ºm˜[ô\f¸)ŽS%¾èÉáIVãê›&¹Œ$n8ž ›0m½†(¾ÿŸ½ÿ�“$¹ÒÁç©3+³²²²t«j­ÐÝ@70ƒŒÀ 9œ¡Üå’Ç]j.—Ã=’¸å.‡b7·w{·Kò¸CÞ’û9rwˆÑ3À@tC5Ðèêîê.Ñ¥+K¤!ìÜ=„»¹=3fæž•ù^}YöìÙÿÌÌí™™»ÿá.r7@Ìóe±5¤¡1‰Åª¤³ÜL$–®Ð^„ûÄË #6•ÌÒÕíÞ5 ¾TŒ½°Öˆ_ ØjÝ㺤nF¤—H‰%/­ÔQÊïÌ­[2eæßÒ}â ]9nsÎ�vÒ¼èìô¬©Ê^4¹9Éd×:éÛÞK2™õÁdYÒ$ÙL_çtۙ̂ùH|1™óvã'ÕvòøéäÝ2 KÿJXXúX˜Ä‚Á½Æ>åOÊÃ*¬´#ÐèÓ<Ú'%ú›Ä'—>ˆÿ`ý øÊÐ@�òèÛЬס¾²š¸t ±ˆf6—W`´:wLÝ•d:Kø¶™;a¬6áͿȇÒ½ÿ”Ò}ØžØèq rŽkÎñFtíc‹,LbÙ ±w¥ë$­*'§`>&+?ÛKoâÞ9‚ZÐÏ«“3æÅa­±t Õ‡`vß\ûsïéWÏ+«KíðÌü-./ÂÉSÉk ®][†SgÏÇ$–±ñ1Øà‘Ä]�Ügÿts~„uàà!…ã'OÉÓgáò¥ëñÓ[¢'³œ={6¬ë Z׸ 9õÅÌì„Ù¹½fK®Ð¢u,ÌÅÈ Ï:8 I?¬DådÚiÄ)`Á°NakPXá‰\Å ó|Yl ihLb±*é,7#‰%-ÑZA}bHÖgRVh±q{5¿ûµ¿þ6€Ùõ5ð— z$š6wµQ…z£?M~úXç|9ë°{EtæÖ-™Î2óoé>ñ…®·9g�;i^tvz×TÍù´±I× ñëͲ}@¨W満 ×IµÇ¯gȪÀàƒZ'}Û“µ3ÈñÑÆÉ_k)×Zðëv²}€�díÂvr-Xßv¡ÁÁE]K×vÜ>0ìç¡×v<3Sm^WŸ©Æ>&±„ÚñC§øxH‹aüô%Ž¥L ã§“§J`ž³‘¶ã]h t}¨”)jüèÛ^ÊøIå‘ÇO'Ï*Þ…åøØÒë¿,,7Z˜ÈÂÒ·Â$ ŽI,Ròf"±Ä_+í¿‚¦îœ‡#c‹ÐX[‡VxqÏ…ÄÉÆÊJ\þÁ¹Çà m•‚vR*a}Û÷¢ ‹}›UÞŸi_i=Èõ–b;ý: ã±fKº½9Õƒ’õª'Å*“Xda‹~àäZzaågÛaéMÜ;GP ZãyurƼ8,#¢–Èè-á ¨è 'O=ùx.Æææ&4ÛVòïØ±·¡ûKðõõM8{þ2¼ûþIŸ‡½ûö‡Ëºº¦'„ý( RvJù3Ÿ }‚“œ‡µµ ¨†úèµBï¿÷>Zר Q[òäé'? S»wÇO Á¤Eêú@´Že‚™ yáY‡!釕¨‚L;8,˜ÖQ˜Vx"WqÄ<_[C“X¬J:ËÍNbIK—d¢}ÅŽÐû3•Ãô&2Ëúúzü}úý·  ô·Žštu¥o¥ÖIŸ¸¨Ðž¯ʾ¶I,%øJçî¤yÑÙéÖ®©h7ä»zý4D™·˜ÌH^²†ts›tÍ…É,=µÀqôûzèµÏÌÔG›×Õ›ÉmË)Ä ›d2 †ƒŽŸNž*Lf1׉É,,,7‹0‘…¥/…I,“X¤äÍFb‰Rãã?ž†"$ºÆõïyZõ ØX^U í«¯­C}u îÚ}/L N‚hª7µÆ†*0;Qƒ=ã5®Ñ—èÙHmî}�š›P_Y麷‹U]l5“XÒuèÍ!¨”„¬g‹ÜŽüþÀëË$ýÀɵôÂÊ϶ÃÒ›¸wŽ ´ÆóêäŒyqXFÄnüš‚BóÚ‚´¶Õjï&ï»çnÈ“µ5éf]÷oqiæ/Ï÷ìæçàØñ÷atl öÌÎ)821Å0J„©\"‘‘ÑaxëãpîÜå˜à‘Y®]¿+ᚊÕyƒðkõûï»7¶m!}¬¨ ‹Kî«'„C,ÌÅÈ Ï:8 I?¬DådÚiÄ)`Á°ÖˆÂ¬°Â¹ ×{ˆy¾,¶>44&±X•t–~"±d%Kj1‘X°r:¼¬û^­Vâ5}uh6j°Q€•ꜬÍÀWk÷€µTÌoi¿²Ü>'î®sÙWí„:SÒYaËøJçî¤yÑÙéÖ¯ í>¢ÝOìuX”ë†Lf$/YK º¹Íd-–‚°mÉ,¿{:Mb!Œ&³ 8èøéä©Âds˜ÌÂÂr3È�°°ô³änr»I&±HIÍÌ$W‹èf)¶Š>ã+ÝŽæ¹Ú9£{ 2uŠ[¦7àC{/Ãw¯ Bssªƒƒ=yík5š°¹´»jpxò¶öë2¥vÀÌø@ÜÑߨp.-Ôa­Þ"ÔN„7›phâ\Z¾—W/Cep(¼nXƒø]–ÒcšSÿ¥ôñïã±nÉv=½fì£ý?&±dôª'Å*“Xda‹~àäZzaågÛaéMÜ;GP ZãyurƼ8,#¢5Vû±ÿQµÂq,…ÿ5Âõ¬Q¯Ãí·Ý###¹(ëõ tM9u2y¥ÐÊê¼óþ©ø{ôjõæ”\¯Tެ5LA ÏQzfv.ž?o½û80 ““ãáâÀ¹óçá®»îR0667`Ì2::‡€“'OÁæÆTªÑj­ÌíÚ_)AˆÖ±L0#/<ëà0$ý°•Ci§§€SÀ:„­Qa…'r®-öó|Yl}hhLb±*é,ýLbQ%è­{BC.UJJ€ÌêÓéî÷ñññøïûž€oMŒÉœõüÖå‡àíÕ9°®}eÀØ36áÁ#£ñYŠ"±Ð¥3·nÉä•™K÷‰/tå¸Í9ØIó¢³Ó­_Aeïz;9íD»c£KhÔÅÈþ@¤÷ïÔG×>Ð>m1)“àÄ* V'Õ>U'ÉGZ]/Ô:éÛÞKjú2õ¯ó!8’¯T}%3¤¾Y?‰}rÜõmOÕGñ‘ªOªíè2´=±×÷a­RŸ¼ý Ư´Ó«,pº†.KIï M¥/YƒçòÚœYY†£“S£ô ¬ßÔöÔ è~=úYk5TCÝøé)J?ŠÓÆâ#ñÕ~Ý!à‚´Ýïè|ÒµGúP©!Þ3mOæ�Ê<'/Â<'/M¦ÛN?<J¼'öa}‹ñ°Eû>–'Ldaé_èWd?h×WTßÓ=äèƒÞº‡;Åêhô™¯ƒ 4z}ÊŸ”‡UXiG Ñ§x´OJìœ'±t¿T<eÈŸ»ç-xåë{`ci Fwï©o3õëê£~‰ì£§¦<xð‰v^¦kÕ &±Ä…D²áŒÈ-k ù¯.è:ŠpÜû <æyØX\€áé™Ä’½:Ø«nØ‚xütÇ›0–¥¤6.e_¸Þ¾}Lb‘õ©%!Rþòk¶}ùý×7ÐèA¯×Øn½è:I«ÊÇÉ)˜IÇÊ϶ÃÒ›¸wŽ ´ÆóêäŒyqXFDk,FZ¢¥m6Ú¯¸÷®|Òh£Qߢ̮ÑÍ«ˆ,Ò•«Wàâå+°gï¨I¶8‰%³ÏLgIùBÁJ¿¾``` ~ Ð…‹—Ãú\†©©ÉX???wÝy§r£,Z×›a¿Ţ‰÷Þu'œ8y šÍFûõH™ÉH„¸*} ZÇ2ÁLPŒ¼ð¬ƒÃôÃJTA¦FœLë¶F…žÈU¸¶ØCÌóe±õ¡¡1‰Åª¤³ì$KÖgò„–ü:$¶BÑëžòÕÍ‹²‡‡‡a Vƒ]S» ^ß„?T{Ž-^€ß¼ü�4DÈR1Û^îœë6ÂýÄà`T¯�l$ïÕIú2¹uK&¯Ìü[ºO|¡+i”šswÒ¼èìtëWPÅ}|ÊÎdeóª\a2‹!§íE“Yêá¹Ùé¥eøÅ§ž€¡êÍýb…_>ö̯¯Ám»Ú ¥cq‘®¤¹F±\ßÜ€µõNF`2 .HÛñŽÎ'Àd–Hfaaéga" KŠ@¿"û@»®¢úž.Ðè!GôÖ;Ü)Vß@£Ï|\ ÑkìSþ¤<¬ÂJ;>íÀ£}R¢ßI,["Úh¿Û[„΂J Š’ñaèÖ÷áWOÞ ›«k0Ðùõ¹t±,¬Gò ~ÍOc}ØóŒ ŒÆOgÉÊÌx ÙR…7¶*l$zzÊ@µî}¾{æ»P_^†Á‰‰nµÔM_t¡2¨ {Bù@z´5v¥xü˜Ä’Ѫž«Lb‘%ÐèA¯µí†‹®“´ª|œœ‚ù˜t¬ül;,½‰{çjAk<¯NΘ‡eD´ÆÐØÜ / 6àÀþýáßÌLMÁž™Ý0»gö„{ÿ•ÕÕ\¤z½ŽÞ\º~íz›äíYÇO~�ãáÚ5ÞDKK`¾2ÚÓêÛ¤­:˜Bš†††a4ôýÖ;ïÃ]Go…Z­m—–`j×.ÀÚ”Gdù©ÿQøc?÷Ópiþ \¾<—ç¯Â|ø}þÚ58wþœ9{¢çÜ *õ3Špˆe‚™ yáY‡!釕¨‚L;8,˜Ö!l +<‘«pm±ƒtãÞ<_[“X¬J:ËN&±¤ý©?TÐ F\ÁžÄ’õ{Ç·Áí·ßÚóñÚk¯CpòÜ2üøõËÁ‰µ IΫ…æ—›±Ïf«)-ôA¦¾ØwL˜Ä‚/t%RsîNšnÝ j”ÎòÊd–üÜLf°"#ä´½h2ËKçáï¾ðR_Y^¿z%þŒÉ,¦qšéxåŽSŠÞ0~zŠÇâ´„ñ£øH|1™ó½yƒÉ,,,ÛS˜ÈÂÒ×"´‰öF]·ž¢úž.Ðè!GôÖ9Ü)Vß@£Ï|\ ÑkìSþ¤<¬ÂJ;>íÀ£}Rbç=‰¥+­«ÇÚVû&@‘òS·�_:{®­T¡:4ÿººwñOj_�­F6WV`fdöMòJ¡ÑÁ ŒWÛ¯ð^w°^`'"þ…øîѸeúV8½p*~R%ªgoì è‘Rt±Žåî5ÀÜÒŽŸîxƲ”ÔÆ¥ì ×çezl'FJBÖªž«Lb‘%ÐèA¯ñÃE×IZU>NNÁ|L:V~¶–ÞĽsµ 5žW'gÌ‹Ã2"ÚÖK´`s}ÆFGàóí¿„Ûnѯ§Ñ«ò¤Ù”oRuåò•ùÞ÷õµM¸rõ:LïÙÕjrúåObIK÷†ºîV«U‹ŸÂ²¶iÏLûqÎ 055¥ 5š|w¡Ÿ¡pŽ^1ýeåÄÉÓðÿÿ3,¯¬Âàðí Â!– f‚bä…g†¤V¢r2í4â°` XkDaVXá‰\…k‹=Ä<_[“X¬J: “Xp¦'¬PmÒObIlEo}Œt?üì?°^zéeøÙàexáêøúõ;Â…3çG#9D–+ËíóãèÖVl_)Ä$–’}¥swÒ¼èìtëWP£t¶×LfÑßäMTLf±"#ä´É,zÙ 2‹Ðè1ŒŸž¢Äñ£8-aü(>_LfÁ|@oÞ`2 Ëö“›{åca1ˆÐ&ÚtÝ:Šê{º@£‡}Ð[ßp§X}>óU`pF¯±Où“ò° +í4ú´öI‰Kb‰¤²÷‘ø/(˜ÄIµÀŸ½çMhÖëñÓVÒõKªÒÞðm..B5ü~ÿìÃaº…v䞉ZOŸîýh3¸°J¹A–‘è"d³wÏÜ ÃÕØX^B/ öb;S§–ñXcWˆÇOw¼ cYJjãRö…ëóÆ2=¶“@£%!ëUOŠU&±Èhô ×‹Îø¿á¢ë$­*'§`>&+?ÛKoâÞ9‚ZÐÏ«“3æÅa­±Â5lc=~ÉöŸüQ#‰%’ì+€0iµšñM¤ìßb¸Vvåʵè <ø ª¨!xüF×kÀÿ¨ùŒ|†u¸téJø½VWWWк· ªfÈybËm·ÿÓŸþñ«›ê+Â!– f‚bä…g†¤V¢r2í4â°` X‡°5*¬ðD®ÂµÅåˆ(º>44&±X•t&±˜ýu×$“dóUû •‡BÀÞÙ=ðÉùa˜žž‚;Æ.Ckñ @} Œ~s^-tuµÝ®fê|5ÐÔÓçi,Lb)ÙW:w'Í‹ÎN·Õ šHï|?Ðæ%’s}3Σ\_T¯§¨ö†Ø*~MD_'Õ¿"«ƒjômOÖÜ ÇG'¦\£ÑwéZµÛHÊ5d}Û…§+]2ËFÓž$¹-$ÕöˆÌrbi¡£OéãBêÂ8ÅÇCÆ—0˜tŽ»Î‡÷øQÊ”0~:yªæ¹i»1Þ…BׇJB¼‹�/NœçJ?©<òøéäåÅ»lo9~XXúP˜ÈÂÒ—bZl˜Ä’ÑkV&±l/K$­ëÇã?±zÊÇçáÞékP_߈Ÿº‚m¬¢'±D¯cx`öQª¡d’©Ñ0¯Ã-Î\x[XkB£%ÀEÚŒñ�Ýÿhû©0™%UÃÎìrOT¨ƒA“X2ú@Õ“b•I,²0‰E?pr-½°ò³í°ô&î#¨­ñ¼:9c^–ÑäÆ0ѵ Ñ·‡¸ò¤RÉ«V«ýÏì¿•ååžÍüÕk0YªÉ¯@ú‰®!`” Ç8½W›n#a·@+A%&³l„ë=V÷áåã?Ôîã¦áé¢óEëX&˜ Š‘žup’~X‰Ê!È´ÓˆSÀ‚)`­…Ya…'r®-.GDÑõ¡¡1‰Åª¤³0‰…î/Т#³݆ Cj `pp|ð~xì®Ùд ­åsáÇ&h%ç‰, ëí_;7-o6æs²y¹uK&¯Ìü[ºO|¡+i”šswÒ¼èìt[­ ªôÎû™Ì¢dU´›¼zr¾vÿËdÔ‡Ðàt…É,)Â8ÅÇCÆ—0˜tŽ»Î‡÷øQÊ”0~:yª0™Å\§›‘ÌÂÂÒ¿ÂD–þeÃÌ$)©YP™Ä²}H,i}0´+þƒQ ˆ¨o‚•„Uùó÷¾¢Q‡ÍÅ¥ÔÀ6Ù£¹±õåØ7±öŒíÑž•jxÓof|�ݧ5CŒ…5‡§±ô¤ýT–É¡I¸cúh®¯C#ü �}KçQÒ(Rv죯Qê¹Mt„I,²žI,r;òû¯/“Xô'×Ò +?ÛKoâÞ9‚ZÐÏ«“3æÅa­±ÔÖæ=Q$’Z-ÿ‰,Ñ«ŠâÌüml&kðÂÒJL©(¿àN­³ú*EÝUáX‘ïè),W¯]ëÔ%€z£‰Ö=nSŽPú¦FèãdŽÎ1¢ˆ ”°<F<ëà0$ý°•Ci§§€SÀz„-ª°Â¹ ×—#¢èúÐИÄbUÒY˜ÄâæÏ†Ì’^ ÓYò“PTûÙ™ÝmÒit¹t^_Ï  `¨ÏâF¥óZ#a¬«ík„är¹uK&¯Ìü[ºO|¡+i”šswÒ¼èìt[­ úêôÎÿ)ûîœëqåz#“Y�ÉKÖà‚nn3™åæ&³h±$œŽ¾ñÓÉS…É,æ:1™……e»YXúW”2“X¤¤f!eËö$±ÄÖ#³í¿Á  Èʉ×ÁVöO6á“NC}cÑ«�"ß‹pKK0Þ»w÷CÑOÚÑΜ¯A55cŠIô+:ˆÞ^/àBˆ 4wÌÞ cƒcP_YŽ]¯áŒÃD…Ÿ„Ž“X2ú@Õ“b•I,²HbÑ`”'ºNÒªòqr æcÒ±ò³í°ô&î#¨­ñ¼:9c^–Ñ‹ÔZT(dìÕ<Ñ_£‘77ëíWõD¬^Jm­*JÜ•ÎZ¼¾Ù€ Õ1¼É¦y-åÆ…È’+Â!– f‚bä…g†¤V¢r2í4⸈Ö#lQ…_ˆxÑrE]“X¬J: “XüüQÖ'Ó“XrÀall4<ßíøh…ç®ë sý¡Þ `y£ŸCGç®ùµ«§±ôæÖ-™¼2óoé>ñ…®¤QjÎÝIó¢³Ómµ‚v$ÿæ$“Y˜Ì’ͱ1¶É,ÞÂd-–„ÓÑ2~:yª0™Å\'&³°°la" KвAf‹”Ô, LbÙf$–@>®Ís/Hbõ˜dãü)¨_Ÿ[ùS÷¼#ÁÔWÖz³¹´ÍzÞ÷a¨VÐW Õ*05RIº1H¾®7Z°²QÐ VX§JõȾGcKD°‘nºØ<‰¥—ê/æÐãÊ$YÏ$¹ùý×·X‹¦$Ñu’V•“S0“Ž•Ÿm‡¥7qïA-hçÕÉóâ°ŒˆÖX¤ÖzI ù'ɧ\A %UEÑY.É©Ìî ±j5&±Tº¤JýËáË3A1ò³CÒ+Q9Œní4â)†€õ[Tá"&Eisƒ“¾†ÓИÄbUÒY˜ÄRŒ?Á#Ò§ýêŸÄà6Ð^‡Rü”˜È¢«rÎë…æ—Û$ÖV«Ø›ŒÝ:3‰¥_éÜ4/:;u¯mùc‰É,(„®N,&³€¡^Lfñ&³h±$œŽ¾ñÓÉS…É,æ:Ý$d–>&²°ô½0‰%£×,œLb¹$¼¨bP=ð”ôŒî“,Ö‡`åÝWÂ66ÁF†øw½ ÍÍM¨¯®Bc}êkkpë®Ûazx7Jb‰dïD­}Ô6¿äóJ¡¬ˆ¸ãƒãp×ôÐÚØ븖äf;¶£†“M‘-ŒW&±Èz&±ÈíÈï¼¾LbÑœ\K/¬ül;,½‰{çjAk<¯NΘ‡eD´Æ2´–ˆU¯×smtO4I?Í¥6T38O­Vm4ëçÌ¡Ú`Ä2P«9?‘esÓòõ…i±L0#/<ëà0$ý°•Ci§§€SÀz„-ªð #êØ5VRøNCc‹UIgaK±þ°uÊùI,©tžÄ22:מÊÒZ×0Y.-´×Éb‰,¹u+æ¤ìü[ºO|¡+i”šswÒ¼èìÔ½¶[3~#a2 ¡«“‹É,`¨“Y¼…É,Z, §£/dütòTa2‹¹NLfaa¹‘ÂD–¾&±dôš“I,ÛŸÄe±±ÿAc (ò¯ßš«Ë°þÁq°•OÝzö¬Àæò ¬/\ƒÑQ8ºûñk|ÔÚO Wat°W;þ%w·KÃÏ…µl4Š>©j“Yn›9 »Ç¡¾¼ ÍfêÕEÙW µÚ5KJ'_HÇI,=Þ—hQ‹m䯰 ¢´­£O}( Ý mnÎï¼¾LbÑœ\K/¬ül;,½‰{çjAk<¯NΘ‡eD´Æ2´¶£h6óIž²FPé<‰,ó784Ô³l»-}m­Ú˜3zÑù§­œšï‘Ukh݃Jþ)"¥oÐ>±L0#/<ëà0$ý°•Ci§§€SÀz„-ªð #êØ5dx%¬á44&±X•t&±”ç/ë·MpIíê5ObÁ¤Z­FV09”Y«ëxJLrñz{Ôí7LuÃë*”§Î”'™ù·tŸøBWÒ(5çî¤yÑÙ©{m·büÊ.òoN2™%ÿ7“YÀP/&³x “Y´XNG_Èøéä©Âds˜ÌÂÂr£„‰,,}+LbÉè5 %“XnKü¹|6þk­_Š|õÊ=ðúõ}°vêXXfl$ºHö—îû¬/.Äd–‡æžˆ_E€Ý„‹®³ÅOcÉê£:‡æ×–‹|KJƒ„|4ôÓ„Í¥eȾb(ù Þøí¤ãMËRR—²/\Ÿ7–é±|0‰EýJ¹à‘m_~àõ½YI,ô¤U°hó1éXùÙvXz÷ÎÔ‚Öx^œ1/ˈhehmJqþü9È“z=ýªV*€½šgb|¢g39:;oµšxm­Ú˜3z5ÙÝ_„OOOö+£##hÝ«Aþ)bƒÐ7J ‡X&˜ Š‘žup’~X‰Ê!È´ÓˆSÀ‚)`=ÂUø…ˆÇuì[)Ö I,V%…I,åùÃýÒ|a¯jY�¦†3ku'²9Od¹¼Ø^'ÓOd¡<ñ —Îܺ%sRfþ-Ý'¾Ð•4J͹;i^tvê^Û­¿_RŠÉ,(„®N,&³€¡^Lf! aœ2™2%ŒŸNž*Lf1׉É,,,7B˜ÈÂÒ—Â$–Œ^³@2‰åæ!±DúÊÌ}í¿ñ@‘ñ¹9øgï~¢{MËï¼ ¶r×ÞMx|ï<ܽ瘜h?‘Ýc5¨Uƒø0t{´ûT–+Ë h”vÅ¢ýT–èi1÷ì¾'¼Æ¸5ùi5ÉCȰ¥Â%=[&±Èz&±ÈíÈï¼¾7+‰EõMPÑ ²¥V~¶–ÞĽsµ 5žW'gÌ‹Ã2"ZcZÛQtï!}õ«_ƒ«áE2“¬,/CžTÂ_Ø«y¦¦võl¦¦&ã'¢´2ë¨nÎ×KÎè5d·šÍ¸GöïëVFÇÆÑºWÌ7ç"Y^1÷MÔ·_ û8’ SuëX&˜ Š‘žup’~X‰Ê!È´Óˆã bX°E~!âqD»æÆ ­ÒLb±*é,Lb)Ï_$êÓIü|u‰,ûÇ38-œ¸)óYæ—Ûk¾ð~µPgnÝ’9)3ÿ–î_èJ¥æÜ4/:;u¯íV’XÐó&³àº:i°˜Ì†z1™%Or“Y´XNG_Èøéä©Âds˜Ì²Ւ•’…åfã™Ñk6¯LbI•+«}Rb‘XÈí ¤J´®ü ýehŠDfß·._¿¿yéaø™Ê+°qù Íùó_†/œ¹§sóMí¥J�3cÕä0Dü•N•ëu€…õ’žÆÒ?åÖ™[àâÊ%¸¶²�•Z ª5‰‹’)Òk‰€ä[ê#)h<®Ç™Gp=0‰%koœ»˜ÄÒÕ—.‚¤¢dK/¬ül;,½‰{çjAk<¯NΘ‡eD´Æ2´6¥¨ B}s¾ýÝï…7ÁLMMî]“066ããá_ø9ŽÁêZþ«üª•*Ô‘_XÏÍÍÁ[o½Ÿ™š«Ð‚î½,Ñ]|z`�ù’3zs&®øi0¢Îõ²vMM%Ìž”T ¯Z]]ƒF£Ë++°º¼[–ÃÏ•ðsaa®_¿ßúÎ+±m-Z“síƒDPŒ¼ð¬ƒÃôÃJTA¦FœÖ¸ðx„-ª°Â¹ :žc×ÜX¡UšI,V%…I,åùÃý¦võ1Á÷mÊè8Mgü„ë'ºJç<‘åÚj{ѧ¼ÊP/¹U€ÇÓ\ì|õR¥ÏƒøBWÒ(5çî¤yÑÙ©{m·”ÄÒs ½Sü$r‚N0™ìõv² ºN—þ1—\¦sa,«é­wïd�ñѵâóTzeœX¥ÁÂê¤Ú§ê$ùH«‚øÉȦ~̯“¾í½¤¦!S_"¹¦‡ ù¸KfH}³~ûÔõYmÛSõQ|¤ê“j;:† mOìñ>ì’Y~ñ©'`¨ºý~¿ž_ȧ™%ŠÈ['&•ã†+1½þ1«¶t¼P{Ãøé)J?ŠÓÆâ#ñí™´Û¤íÆxGç“®½æ˜ÚÆ{¦íøxÓ·]?ùóiü¤ÚN?¼¼x—íuŠ…¥?„‰,,;BDᅩ¾§ 4zÈѽõwšÉ2¨>óU`pF¯±Où“ò° +í4ú´öI‰~'±‡öŠ>?Øþ¬E††`òÀ~ø?.|>2}‚w_ƒÚô\xÍ­F*Õáb룰wä\\ʼn3³“5*A¯G{C üriysk.ZˆößÃû‚¯x6——`hr*Ü v~%—¾ZÐ E€ìœ9Þ-Ñ9‘PmûÌØÊKÙ®ÏËôØN>”„¬T=i,3‰E–@£½^¤æEt}‘"H*ZaA¶ôÂÊ϶ÃÒ›¸wŽ ´ÆóêäŒyqXFDk,Ck3ŠèFUt3èÄé`}cn¿íLMŽÅÄ•ù×ÕGŽÜ÷Üs7˜¤ámª1:;»k°¹Y‡¡¡A˜…¥•õøAô:"Ãá P­^Z9ýùŒlæöîÑÑáø¦Z5lë®É]è±*á‰,—.]‚—_þ®¤k[VáÚ¼÷þi8ñ2ì?p(~jYìƒDPŒ¼ð¬ƒÃôÃJTA¦gŽ+…!`=ÂUXáå>Xà3)m±ÐêÇ$«’ÎÂ$–òüá~;Lä•´t‰,Ggk2¦æ‰,yD–ëkmŒ–óY:së–L?™ù÷L”4J͹;i^tvê^ÛBbé9äÆaþÍI&³èoò&*&³X‘rÚ¾³È,vd„×®ÎÇŸ¶d–žMQd&³à‚´Ýïè|Lf)ŠÌÂÂÒÇÂD–¾Ñû/£ïérôAoÂfòD§ ªÏ|\ ÑkìSþ¤<¬ÂJ;>íÀ£}R‚ŸÄ¢êT í; `xzš&ü‹Ó‡Ïßù›°vò-;ú©ôÙÕû`ysì½WÖæ !äQ#µ LW¥QÖÝV­l4auc«gÙ~ÅÐpm^¿ð&Ô××apd,kÖ;z»pt 9ÇÕãx#ó®ÏËôØN>”„¬T=i,3‰E–@£½^¤æE}‰g4‚¤¢dK/¬ül;,½‰{çjAk<¯NΘ‡eD´Æ2´Vƒ½>`fϸxùjøw-Œ¿öSdžk0:2#£Ã0~n6|ìcÏ‚I*• T›dѳÇÃ{ï¿§o=´¾ì=¨×ë088d Ó ™iPiú«Ñ¨Ç¿(ä»Ûpáßž°ýäŠTüj!ÂYÞ=þ¼öÆ`uu5ü[‡åÕ5X߬·_OÔ±Ù½{‘ÄB˜³tsµÎÈ Ï:8 I?¬DådÚiÄ)`Á°a‹*¬ðOÆ+fRÚb¡ÕI,V%…I,åùÃýºûÊ\ºkßÞ©a*›ñºÙvÑ~¢Y¨”ËWŒÞÖ+1~Óé¹uK¦ŸÌü[ºO|¡+i”šswÒ¼èìÔ½¶7”ÄÒ•Î6³óÑ‘ü›“LfÑßäMTLf±"#ä´É,a2 2�o{QãGñ‘øb2 æìÆOªíäñÓÉc2 Kx®,,},¢÷_FßÓ=äèƒÞúƒ;Íä‰NTŸù*0¸@£×اüIyX…•v}ÚGû¤“XT} µož{!þk]?‰ÊT`×áƒðÚúQøöµ£°~î=h,]Í-»ÒØ gVˆ¿Gù޽¯Øì¬i7s—Ë~¥ê4ºØxhòÌŽî†úÊ24ë›IvKÐŽ_öx ÕÈùx#ó®ÏËôØN>”„¬T=i,3‰E–@£½^¤æEýÖžÉWKA¶ôÂÊ϶ÃÒ›ª!ÁLP s̼:9c^–ÑËÐÚ¬±ñq˜™Ý#£#P o`Ua³ÞˆŸ&ræìExã­ã𵯿�›››'ѓ΢ ™¿£wÞÕ³™›†‘¡!¨‡>„òëlÝ(07¢EèÄÈWäsz×$Ü~Ë¡¸ç£ûöíGë\%<µmcc¾úõoÃë?xNŸ½�WÃ>‹ú."Õj0öéî™°oÇÆrìƒDPŒ¼ð¬ƒÃôÃJTA¦FœL붨 ød¼b&¥-Zý˜ÄbUÒY˜ÄRž?Üoq¾Ò7g&ÂýAµ’½N„½(´©èÉš+õ ÔÑÑlëÙ™[·dúÉÌ¿¥ûĺ’F©9w'Í‹ÎNÝk{cI,„ëÈ5VÕ>Ðæ)¾LÇ–týR½^£ÚÎ󅊃_sÑ×IµÇûQVå÷c~ômOÖô ÇG'@¹¤?î26ƶ„m*åµ¾íBƒÓ•.™e£¹U?2´ÂñJµ="³œ\ZDìõq!õaœâã!ãKL:Ç]çÃ{ü(eJ?<U󼎴ÝïB¡ëC¥ŒÝø‘̈ó\)ã'•G?¼¼xgaéwa" Kß ¾`“X2”“9TŸvàÑ>)Á$U¯'±DÿU<ÿU¦Ž‚ NLÀÔáƒð¿ž~V5Xy÷U0í@[¢ ÇŸ M’ s»F–at`5I†7ªj©%$Hþ®®4`óFœ(‰ö¨zhßÃ1ñ:zÅPü+ûîqM·¹s÷O$EA{¼Sw 72àú¼±LíäƒI,êW&±!ÂÕR-½°ò³í°ô&‚jH0TÃ3¯NΘ‡eD´ÆÒ·6 ÆÂðÈ(ìÞ3 sû÷ÃÇ`ßÁƒ0»ovÏÎÂÄ®I¸¶°gÏžÍÅ©ÖÚ¯+ÊþMOOÃþˆ0Ò‘ûî¼D³ ›Hì %-�ï–HG!±DÉØW³?ô̇ڪÐñÔÔTLäÁê<@ ²œ9s®/.ÂÄä$ìž™…={÷¾`Ø{ÃöFObÉAéÌZA@1Ë~Õå‰Ï:8 I?¬DådÚiÄ)`Á°a‹*¬ðrcȯ˜Ii‹…V?&±X•t&±”ç÷[’¯pIªÕj0å§è^/èrÕ0:/Ž$z¥_¬Ë(¹uK¦ŸÌü[ºO|¡+i”šswÒ¼èìÔ½¶7–ÄÒÂu&³àº:i°˜Ì†z1™E¤í¹Ç‹É,Z, §£/dütòTa2‹¹NLfaa)S˜ÈÂÒ—‚/”À$–Lå$Õ§x´OJ0‰EÕ›I,ñÇÚåößæØHt“h,¼)·:ºþÝÙCcé:¬Ÿ_kzåaXmNeQàÈø{ñ·èU{Æ:Úö]K³)zì¶^Ú¯ª ÂCûˆŸÈR_Y¡¿(Ý0¶cYJŽ_"Lb‘…I,²25(z0è·öD†îB“Ä,k¬ül;,½‰ ÌÕ0ÇÌ«“3æÅa­± ­ÍÃRˆIè‰"ƒCC0:6ãã044Ç·×>“T+Õø•òï‘Gí½®`fzퟅÆfõ:ùf ÈþQú+´‰|467áÁûï‚ûöB«Cî¼õ–ÛѺFõ¬=}üý÷â¾ûj4î³Þ+„°¹ÊÐçymÈ/a1xŒxÖÁaHúa%*‡ ÓN#N ¦€õ[Ta…G|2^1“Ò ­~Lb±*é,Lb)Ïî·x_]üî+÷Fò9æ·µ_Ynß8lµ(7…T—r%3ÿ–î_èJ¥æÜ4/:;u¯í¶ ±ôê@¸^@¸9Éd–üÜLfC½˜Ì" ÒöÜãÅd-–„ÓÑ2~:yª0™Å\'&³°°”%LdaéOÁBÍf”I,©reµOJ0‰EÕç“X⯠ñ4VÁJBŒêð0LÝr¾8ÿ¼»<«'Þ„ÖÆšbºXß ç×îBakM˜š‡Ýcá®�n\Zl@³%àFJôk÷ƒ“û`n|/l®­*¯ŠmâÿÔÁªËØLb±9Ðö‡±Ý*ˆÒ¶Ž>õ¡$t'´¹9¿?ðú2‰E?pr-½°ò³í°ô&‚jH0TÃ3¯NΘ‡eD´Æ2´Ö+{Y(Š^5408ß|áEÈÿ5@m –°:SSÓSpgêC÷Þu LNŒÂúÚZïÚr Ì…¶åŒ{=\çöîgžz,&±ˆVû•Bù«kð4–èfÜ7¾ñ Ôj1ñ'[n-(—"(%,¸Ï:8 I?¬DådÚiÄ)`Á°a‹*¬ðOÆ#NJŽ=X’ÐjÃ$«’ÎÂ$–òüá~Ƈ¦â˜¾½® H~˜ªC(FCd9m#þĈ,iÿñSDÁ|\EaA™KŸàð…®¤QjÎÝIó¢³S÷Ún KWzu!\7`2 ¡«“‹É,`¨“Y$AÚž{¼lÉ,ºñÃd?<U˜Ìb®“YXXÊ&²°ìa‹\@9iCõií“LbQõ4K$Ñ+…¢¿`tl¤ 345#ûÀ/Ÿþ4ëMX}ïuÉ®!jp|éi0- ‡&ÎAmr.×.ÁÙ¡àÌài¸P;×®ÀÕæ2\[ß„¢¤ÞªÃ¥úy8±þ6[ý>¼¶ö¼±ú œÚx7<ùZÓ”ê´6¼Y÷ÐÜ}P û7zÅP<(tÇO¤¿ªFÎÇ™Gp}ÞX¦ÇvòÁ$õ+“XŠº aL³¬±ò³í°ô&‚jH0TÃ3¯NΘ‡eD´Æ2´ÖKI‰ö«è)_gÎ]„3”× tžÊ‚¼®çÑG…ééö“΢_{?þÐ]0:2 k«+Ðh4Z@G ÚhÕ®b®­.ÃÔÔ.ø‰û¡¸ÑM´ÑÑQ¸õ¶ÛÐ:ÆOc0ß‹äìÙ3páÒåè®HOZ±L0#/<ëà0$ý°•Ci§§€SÀz†xõ!ðÉxÄIɱKZm˜ÄbUÒY˜ÄRž?Üofî° ¨Pò"‰ÖÂÈdz¸{£/\çFg#ÆŠ¦@Õˆwy±ªÄU©VºÁH¶¡dÁº’F©9w'Í‹ÎNÝk»­H,]éÕ‰pý€É,8„®N,&³€¡^Lf‘i{îñb2‹KÂéè ?<U˜Ìb®Ó "³°°ô±ä_­da¹É…I,råd Õ§x´OJ0‰EÕÓI,‘´.½*¥ƒ‰ÃŒÌ€IÒ›Ju�vܧ¯Þ¿wéAølð ^9ƒ3ûb‹“ËO„'4cZ¬ïÃU87V…ÁÚ÷bªKt3®÷/üþÝú{°8³ SÍؽ9{ës0»q�jm©Y+pfãœß<W—`©¹�-üÈAô‡CC·Ã£ÏÂäÀ.¥ÕÑ8‚Gö?/Ÿ}5&³ ŽOvúVtn¾uŽw`?–¥$éø1‰E&±ÈÊÔ| èÁ ÇOÒ5®·P„1I̲ÆÊ϶ÃÒ›ª!ÁLP s̼:9c^–ÑËÐZ¬$@7¸êõMX__‡{ï> ù¿ø3ðα·àð¡C9˜Aü”’èu>Y‰~áýì³?¿ÿû¿ëá:Zƒ'»^~ý]XXZááa¨ÕâµTWOÊ ‚è]ä}} öÍîÿôÇ`(ôÕ /VFu¸çžûz¯9ÊÊÀ�í= §O�ÿý?øoáúgÿÞzûÝ¸ŽµÚ},ÌÅÈ Ï:8 I?¬DådÚiÄq50¬g¨W¯ŸŒGœ”{°$¡Õ†I,V%…I,åùÃýnM4¶ ëpp²o\›‚`h2\ ‡õržÈ2¿Ô&«6´7 ;s«�™*Ô=¯dæßÒ»_èJ¥æÜ4/:;u¯­›Ï-Za#7q(uöù}/:6q0êqD|õKh|¤p: ºÄ‚Frœì;¤¹ UgÅG×>º§Ý*mU,¬Nª=Þr™°N9ý˜_'}Û{IMB¦¾:WZtíÎwÉL7~Ry‰}rÜõmOÕGñ‘ªOªíè2´=±Çû°Kfùŧž€¡ê þ};ÒöÜã•j{Df‰äÖ‰Iå¸ë|HÇ‹0N¥ã…ÖÉ0~zŠÇâ´„ñ£øH|µ÷+€ Òvc¼£óI×éC¥^vãG2Óõa&¯”ñ“j;yütò´Ç‹…¥…‰,,}-Lb‘ Èê@£O;ðhŸ”`‹ªôöšöUvß“Q˜o:%0IÔFÇ`בCð+ï> Oí~*Ç_…ÚÔ'áZó6¸¼~›ëKÁYx£ºÖKú.‘åüÆu¸Þ\‰ærµ2WkópÞ„J«3Y˜Û8û7îæT¯l+üwµ~ÎÖOÀ™úI˜ß¼ÔmWDp9½ñœßü�>½ëÁžšú”šèCû&öÂñýpnåbx!r(¼É8Ô«y︦wŠñ¸@.OtLç×xùq)÷’î¸2‰%coœ»3 ´/ ÌQÙöå÷^ß@£½^¤æE½z¬3_oc’˜e•Ÿm‡¥7TC‚™ æ˜yurƼ8,#¢5–¡µXÙTôê5hÔ›ð¹Ï~~þÿTL�998«««ñMLR­T¡´â×ødebb~øŸ€?øÒã§°Dd–?r¼}ü8}î"45¨ †þ*ÊÍ«¼Ñ¤ˆ¬RßÜŒI8Þ{'|äÉGÃúÐl5c¼ûx†GFÐò•pmS^„HÔÃCðgfþîßþøÕÿðøõßþýøÝP¨ŒW±BšË,¸Ï:8 I?¬DådÚiÄq50¬g¨W¯ŸŒGœ”{°$¡Õ†I,V%…I,åùÃý"ñY #B„•e€{f|q~o~¡"Ë•åö“XDj_TÚ'¡åJb¯rªtŸøBWÒ(5çî¤yÑÙ©{m·#‰¥Y˜¿9)Ûçßœd2 Þr&³X‘rÚÞ?düºW¶íLf»ñ£8-aü(>_LfÁ|€ÝøIµ<~:yòñbaé_áW ±ô­0‰E. «>íÀ£}R‚I,ª>ÐÛkÛ´ –þ«äßtRƸù™Ù0½þ×Ó…Öú*,ž>ï/}H‹ð½à |æáöáY» -8¾~-Ûª´àòàExcâeøÒÌàwwÿ{xqâð;Íÿ�¿rõŸÁo]ÿwð½•ïÀe KZÕ:|eê·àj0¤è¦äû õå¥ÎEÏ ~õPb%1è Ç™GtÇ•I,{ãÜ…œÉ�¥}á¸fÛ—ßx}ôz‘š=ôê±Î|½A"ŒIb–5V~¶–ÞDP f‚j˜cæÕÉóâ°ŒˆÖX†Ö°pR…èföR]«h½X[YÁÚü×ÿå_„?þs?Ó#wÜqçQxó7€"µ¨mÙ¿ˆ�ò©OýhLúˆ¤Z©À}wÝO>v Õ`}m 6c2J#~ Aôj£V =q%Ì‹l¡mD`‰ÊNŒÀOýØÁ3O=·«Ùl…[…*<ôÐ#091Ö)ú‹ž$C‘×ßxî8zG»î!îÿ£þÏã/ÃpmÖÖVz7•kR Û¹Ìbðñ¬ƒÃôÃJTA¦FWCÀz„-ª°Â#>8)9ö`IB« “X¬J: “XÊó‡ûµó•%¸¤ÓúïÉLWé¬K§iëbs>~uµ¬¾Z¨­O¯ñrŽ'Û'P²à ]I£Ôœ»“æEg§îµÝÎObÑo×k³ª} Í“p:zýtJ¹î‰ï—e{Æi»ôùuRíñ~”Uùý˜_'}Û“½@㣓¿w \;ÒwcÛwèk†:mÇõiá× Y¥L ã§“§ ¿fÈ\§­|Í Kÿ YXúR˜Ä"PNÊP}ÚGû¤“XT½#‰%”æ¹â¿Öõã@ucõUupv9 /,Ü /];ǯ>Þ8Ã/Â] Vá·ÅØ?8#•AÔæÄúeXu ÈÊÀ*œ9«ûÛ…÷ŒÁÈmc0´wª£UížL×´]ƒ0zÇTƪðձ߄:4T»°ÁµÊ�<và!hÕëP~b‡×Ô¹›ñx |°è6áºãÊ$–Œ½qîb‹¬'ÜøÕÔ£\Æ$1Ë+?ÛKo"¨†3A5Ì1óêäŒyqXFDk,Ck=°²©èi&kk«pøð!øÇ¿øyxôá%Ûé©)XY]Í È“ˆœQ¨ÅŸØßž={à3Ÿù LOO÷ÊìÞ5êxô;ald(\“7b2K½Þ%ªÔ¥¿H×l´ó"Ûé°ü'žýü‘Ïý(ì›Ûß0‹žÄ22: =ú8LNNjë3×5·Yñ+‘ÖV×`jjJÒ?öÈCðKÿè¿[‚õ°#‚ ÞË”܈g†¤V¢r2í4â¸�Ö3ÔÀ«×OÆ#NJŽ=X’ÐjÃ$«’ÎÂ$–òüá~5;²‚™é™®ûú½ƒ³ãáÅRÂͽœ'²,¬·©Ülªkcù„’ÄW/UºO|¡+i”šswÒ¼èìÔ½¶Û™Ä‚^/„ë LfÁ!tuÒ`1™ õb2‹ªO “Y¬ÇR¦„ñÓÉS…É,æ:1™……ÅWøÕB,},LbQÛÁ$¥?Œ}Û¤$¹}î$–HªžWÉÂWÂWc{gá¹êßOÖV¡º0ƒ3û%›zxñîWádxHªphpÅ]kmÂÉËà"Q˪£ñ_mv(þ5|k½­µ&´6› êá÷ÍV¯òÑ[}*CU¨ŒT¡:QƒÊ`ÂÅ£|¹ñðck(5DìE„7ófÇgáЮƒpfñTkCaÙ!è=³Ëñ£ÿz}O8Þº“.lómËôØN>˜Ä¢~eËÖŠ0&‰YÖXùÙvXzA5$˜ ªaŽ™W'gÌ‹Ã2"ZcZë•MEkÏæÆ:LŽÃçÿæ_…‰ð“û￾ÿÚkð¡éŸ`Ö•øF˜¨fH‰LNLÂg?óðÊ÷^†·ß>ÛEæfàÐþ½°¶¾óW®ÃüÕX ¿¯­×¡Ñù5wm  £#C016 {gwás!ÞD9Ÿâíž>|î¸ãΰ.¡žÕÞM»<ùþk߇x�Í‹ž4óßü­¿ãïü=XZ^ááa9&Ý\¦3ò³CÒ+Q9™vq\� ëjàÕk„À'ã'%Ç,Ihµa‹UIgaKyþp¿š™¡CLOcÑI+}âÒ±ÖÅá¡!«nÀRsÄ ˜ŸÈ²¸Q‰ëÿArEOÉ+ˆ\%ÛP²à ]I£Ôœ»“æEg§îµÝÖ$–X‚žO™+ =E�ʦ1€Œ}�üš!uǯPÚÊKì“ã®oûÎ{ÍPr|õ}˜ˆçk†R8¹ã‡ïR},@pð9¨Äñ£8-aü(>_üš!ÌØŸTÛÉãp K? YXúTä•€I,©reµOJ0‰EÕz{ÝfCd6xËgÚ5žªdáE£ õÕUØ3wŽìÿ\…w`Ïæ›Ð\[‚êÈDÏî ðÌÃ&Ü><‹{﬇ÃÞ›mÑ“Yâ§³8Èòä"¼\ÿ<Þx¦˜äEd–ûçî —`sm†jƒí ƒ„±,%‘“@æÝqeKÆÞ8w!g,@iå¸fÛ—ßx}ôz‘š=ôê±Î|…sâ"ŒIb–5V~¶–ÞDP f‚j˜cæÕÉóâ°ŒˆÖX†Öz`I©h hE¿’nÄ}ŸüÐcZK$³³{áõ×^ƒëׯ+O%Á¤¿–(]àkdu  úЇáèwÁ+/¿gÏžéܰjÁÈðÜrx?ÜvËÁø†Zû/€J¸Gke}ÆOThXZ½Ë+{ÂzÞbŽÚ×/Ĩ/V^»v –––ã§Éèdbbžúðcðů|=îÓÈe³èæ2Qžñ¬ƒÃôÃJTA¦F�CÀz†xõ!ðÉxÄIɱKZm˜ÄbUÒY˜ÄRž?ܯfGfAb1åw¿ üÄ%^oÂ5z‚Bdök›âj½Àòz&G+Ð ÏG#Û®_W’ à’™KŸàð…®¤QjÎÝIó¢³S÷ÚnKÊeçf_üUÉÐÝœ”íóoN2™ïG¹ “Y¬È9mg2K0i{—Ì¢bÆ!Þ¥ú X€ààsP‰ãGqZÂøQ|$¾˜Ì‚ù�»ñ“j;yü°°ô¹ð«…Xú^˜Ä’*WVû¤“XT} ·×í;°þˆ~2ÿlŒNÁÚ·¹²;Þ÷x|ëjp6`‹W£÷+Äfß .ÃëÁ5« ÁÞIíZ}.5a;ÉûÓÇáƒÊ‰”¦{@Û¯zèÀ}ЪoBcu¥Õ½™2ÍŽü¸L “Xda‹¬LÍŠ zõXg¾êõ¥Š0&‰YÖXùÙvXzA5$˜ ªaŽ™W'gÌ‹Ã2"ZcZk‰àS‰”ˆžÈ™Cž<þÄðâ‹ßªDklDBѽÖ'úÛ== Ÿüä§à'òspôèј�Ò}BKò׌É*Íîgôê fò=òqààAxúéÂã=FŸÑ´ŠÅEʨÍO<‘ÿ$šñ±‘ö¥™Vþ>%Àæ^E,¸q´CÒ+Q9™vqœõ 붨 ød<â¤ä؃% ­6Lb±*é,Lb)ÏîW³#³ðq%ë3"šFkh£Ñ€F½Þþl4:¯jÂD-ÿu‚‘Ôªæº]Zˆ°ë°¹YϼbˆVW{ÉÌ¿¥OpøBWÒ(5çî¤yÑÙ©{mo‹ä¹¦))×k·ª} Í“p:zýtK¹.Š_íq¹Lf/.èuRíM']]U~?æ×Ißöd¯äøhãäï-(×–ôÇ]@ÆÆØö÷š¡äøÒb'÷xe^3t}s±'Œâ8ÅÇCÆ—0˜ä´Ý{ü(eJ?<Uø5Cæ:•üš!–>~" K_ “XRåÊjŸ”`‹ªO1i³öšö¡ýÚ“‡ÁF°ö5Öס^¨»}ê(ŒÕÆ ¿ª +ÂáÖóP_º ç¦FáKâlÜä#C{´Øï®Ÿ‡í&уc¾3ùU˜Y˜ƒQ1*‘ðà¾É9˜˜V77A 5!¨Víwôhè П\a›lãX¦ÇvòÁ$õ+“X}©"ŒIb–5V~¶–ÞDP f‚j˜cæÕÉóâ°ŒˆÖX†Öz`)©t¢Ãvyïø{1iÄôª]»¦`ffÞ>v î¾ç H%þõu+÷æÔÌÌnxúéÀ“O>ó—/Ã…‹`qa—–a#¼­aÑEéèWâ###01>ÖgÌÎî©éÝäWuŸæB•cÇÞ‚½³{a×ä¤Ñ.ê»ãa¶}äàG]‘sMÎê€ç@ëà0$ý°•Ci§ÇYß°ž¡^½F|2qR"á9v³½Ð1‰Åª¤³0‰¥<¸_ÍŽÌâi+yöQ^#z:i}êê:"œlllÂäÀ&Pd¨Ú‚õº~Ý»pm öO X]Y…Æà Ôj088HZ‹í_/”í (Yð…®¤QjÎÝIó¢³S÷ÚÞt$HUŸÌ¢­s'Vi°øÉ,HqÝøIå%ö©ëÂÚ¶ó“YÔÌ´ÂîÉõÎ+T{Âø!Ä»T |*qü(NK?ŠÄ?™óvã'ÕvòøaaéSa" Kß “XRåÊjŸ”`‹ªôöÚöuv††v_¥Z¾Ó6ž…ÊÔí`%¢ Ùˆn†…7ÔŽ„å[ñÓWÚ~Ö*3°(nѵ“ðk“— ž³Ì LÀdœò¹Í«°ÔZ‡m)Cxnô·á3+DÙ™G{Ò{æî†—μõ5K½z!µ¡”’¤ãÇ$Y˜Ä"+Só¢ƒ^=Ö™¯šöé΋aL³¬±ò³í°ô&‚jH0TÃ3¯NΘ‡eD´Æ2´Ö+ZG[B@a^—�ròÔpìí·à¾{ï“<øàÃð;¿óÛ0»wvÄä‘Ðq‹p R©ÂÞ¹}ñ_‘Ò^Þ*¹oûIË•+WàwÞ…Ï~ö³¹¶Qß8q:þ÷©Î‘€ÞM9}oXpÝܨÑP±Ô¤V¢r2í4â°` XPCVx„À'ã'%žc7Ó¥»ã¤9b‹UIgaKyþp¿n¾l_)´¾¾ëÐh6a1<•=¿\……5€fSÄùÑ¿F}�êa€Ú�Œ æ_2 vÁæ€þ†ßk—Â: Ãе ™nÀ‰ nÀØØ˜óë…pÉÌ¿[2w©ª’F©9w'Í‹ÎNÝk{Ó’Xº/³íu¶»âÊy�º›“²}þÍI&³àý(—a2‹!§íLfÉZ’tã‡ïR},@pð9¨Äñ£8-aü(>_LfÁ|€ÝøIµ<~XXúP˜ÈÂÒ—Â$–T¹²Ú'%˜Ä¢ê½½¶}Ø™gb^™{¢û ¬¤ЬoƯPØ7ºj•AåÑÿ—+Âñ±ãp­RÓjÓ(\S4áÄú<lgY_ãëïÀÑæÝòNO´`ïØ¨†}ØlÔ¡Úý•›ÍñNãuÊèŽ+“X2öƹ 9#Jû•m_~àõ 4zÐëEj>Pô`ЫÇ:óUÓ>ÝYbQ"ŒIb–5V~¶–ÞDP f‚j˜cæÕÉóâ°ŒˆÖX†Öz`))«Z­ÆOóºxù*|ýùoÂí·ÝÞ`Ò¿f(ú%õ3ý(|ó›_‡û±Ó5 IDšé\ˆpêjé]L±˜¢_«ó›ßˆŸ½îÈ$ëëëðüó߀‹óW`bb*aŸ¢¢›ËtFybijCÒ+Q9yí4â8Š ëjàÕk„À'ã'%Þ–+Í“X¬J: “XÊó‡û5¬Â.Ïôšž……EX\\€7.Õà˧§àøõa|ž’© Èí°ÛûýÕðïí$ýèÞeøÙ£ó°Ï&LMM‘Ÿ¨–õI-™ù·ô¹ _èJ¥æÜ4/:;u¯íMObéJT%&³hëœÆ‰U,&³ Åuã'•—Ø'ÇÝŠŒÓv&³d-ɺñCˆw©> 8øTâøQœ–0~‰/&³`>Ànü¤ÚN?,,}&å¯F,,ÛD˜Ä’uàÑ>)Á$UèíµíÃÎ83æ­Fü'DÈ’j_ôJ¡HæÆ÷ÇOeÉVfy`^m?e%ºÙ6\©!õpbãÔ¡Û]^{ψžH3}(þÚŠÞ›ÚêöCfN ?&±ÈÂ$Y™š=ôê±Î|Õ´OwvX’§,ÜBXY{aéMÕ`&¨†9f^œ1/ˈheh­–’Òa…'ýƒñ£þkðo¿¯¾ú=È“ @-,óÜ×¾ ͦŚ´ý[ü_ذ˜¢×=ÿüs0P­B£™¿ÞG}öo¿ aÆÄž�Ÿ÷¯z£<1âY‡!釕¨‚L;8,˜Ö3ÔÀ«×OÆ#NJ$<Çn.K˜ÄbUÒY˜ÄRž?ܯaE°ô:ûHñâ%¸8þÕk»áÿóÚ~x÷úØâ}sG¾wiþíÛ{amm{uL××N2óoés¾Ð•4J͹;i^tvê^Û›úuBZ}€›ô„ëȵ]ÕÞ¼–|™Æéº)~í@¶7ÌwHÛ…¤Ï¯“j÷£¬ÊïÇü:éÛž{$Sßü½åÚ“þ¸ ÈØäŒSýE|鯡íBƒÓ•.™e£Ù‚â$0œß€£j¦Œ“{¼2mÇí ã‡8Nñññ% &9m÷?J™ÆO'O•À¼ž m7Æ»Ð@èúP)SÂøÉä•2~RyäñÃÂÒGÂOdaÙÂ$–¬öI &±¨zW‹Z kÞš£]³á€]·B®dÚ'â›mŒTÆPóãÃoC³Ò>Ii…¥6DF‚ÁNÛ÷¥V[pnó:Ü ÒiÁ¹•à@óp»ºÃ'lÌÞ±Ýpré47ëPÝñn3£í&Zw\™Ä’±7Î]Lb‘õLb±Ã³ÃÒ›ª!ÁLP s̼:9c^–ÑËÐZ¬l*èüÒE'Ñë|FÇÆàÂùsðå¯=G…={f%›ˆ°ròÔ xçí·ãWî,,.A½ÑŠ -ûØÇ ~=À“èZô´™×ßx3&¥\½vfffà®»ï†[o¹-~‚MZæç/Ã|õ9¸xù Ìí߇?E:¦ŸcQ+‰~Õj¨XjÒ+Q9™vq X0¬g¨W¯ŸŒGœ”HxþR¡Â$«’ÎÂ$–òüá~Ý}Q_)}^¸p —Wá_¼1o_…í o^… +Kp¸V‡F£a|ò™úô)7c % ¾Ð•4J͹;i^tvêcà 7v­”$ªŠöWðíëoŠIO‘¹>×ÑËöù¿´ç'³àý(—á'³˜Æi>™E;ÉñÕ÷a‡ŸÌvãGqZÂøQ|$¾øÉ,˜°?©¶£ã‡…¥…‰,,}/LbÉ:ðhŸ”`‹ªôöÚöá»w̼2÷8ØŠ|µ+øÔnè””>½1wï‡jg§Ù-xgí<lýKÜåXõÕ6‘%#cµ‘øI,ÚäžHòã2-Lb‘…I,²25(z0èÕcùªi_�“rD8eáÂÊÚ Ko"¨†3A5Ì1óêäŒyqXFDk,Ck=°”+h?ae×Ô¼üòðåÛþ�>ôá'áÀþ°¶º §N„w¿ ëëpæÜøÁÛïÙ3ç ÞxÚØÜ€¡áax2´¿ÙÉ,Ñ>á;ßù¼ðÝ—àw¿ø<´ZM8tè ÜÏ0?^yùe¸óèpË-·ÂÈè(œ;^üîwàÅ—^ƒ‰]“P« ‚ru*3giv@¯$úU«¡b©I?¬DådÚiÄqv7¬g¨W¯ŸŒGœ”HxþR¡Â$«’ÎÂ$–òüá~svx=eþÊUXY]_9¶wÛXºray�O5b¢lÞ+üpÉÌ¿7â@”6J͹;i^tvê^Û›žÄÒÝÆ3Ö·o*&=~sR¶Ï¿9Éd¼å2Lf±"#ä´É,Y@K2‚nüâ]ª‚>•8~§%ŒÅGâ‹É,˜°?©¶k§)–>&²°ôµ0‰%ëÀ£}R‚I,ª>ÐÛkÛ‡ïÚµí[8!ëFö@0¨q·Ò'BÖÔW5ÃË‹’îzs^_= 3µñøXÌ7–aSÔáf’ÅÚu€MU?ÔíƒìXÀNZy¤}±”«===¶“@£%!ëUOËLb‘%ÐèA¯©ù@уA¯ëÌWMûИ”#Â) ·VÖ^XzA5$˜ ªaŽ™W'gÌ‹Ã2"ZcZ륤R‰ˆdbº1åÃ¥åexþß…ÍÍÍ1es³ï? o¿{–×Ö Z€±‰ ¨×7á«Ï½#ƒC°±¾Ï<ó¬òÄ’›E¢× }ó[߀W¾÷*|é«ßŠŸÆ2P…K—¯Â… —allî¹óXZZ†7Þl?!.~zËw^ÍFöÎL¨DžÌœ…},¸nnÔh¨XjÒ+Q9™vqœÝ ëjàÕk„À'ã'%žÿ„T¨0‰Åª¤³0‰¥<¸_?_Ùµ\—¾~}–áwOì†W.Ãv“ÕzÜ/Â)ÐåsQ&±”ã+mvCæEg§îµíK›<Òþ– •´0™E_ç4N¬Òö£Z'ÕïG¹ “Y¬È9mg2KÐ’Œ ?„x—êƒ`‚ƒÏA%ŽÅi ãGñ‘øb2 æìÆOªíÚiŠ…¥Ï„‰,,ý)[ª¤½Š¬ 4úÌWÁ½Æ>åOÊÃ*¬´#ÐèÓ<Ú'%˜Ä¢ê½½¶}ønÝØ¾ùWdA…:…™ýx²žVªË€Ý$Yu8»y nViTqâMT V„z«­îãšIÇ/õ$–ìfÙ8–é±|=( Y¨zÒXf‹,Fz½HÍŠ zõXg¾jÚ�j¢©s™"l-„ž–ÞDP f‚j˜c&(FDÌâ°ŒˆÖX†Öz`))[¬0œ¢_DÏÎí…÷N…ù« °on¬¬­Ã¹ó—¡ÙjB¥Rññ ‡áᑘüqñüYø?øÔ› hÔëð±ÿPL¹™$"ä<÷µ¯Áë?ø|ñ+ߌ_4·ï@ÜÞõõ5X]Y ?×á•×ß‚×Þ|˜ƒÑ‘a8½®aiöíß?Fº"¥›Ë$±8HF<ëà0$ý°•Ci§ÇIݰž¡^½F|2qR"áùOH… “X¬J: “XÊó‡ûõóE}¥Ðòò \»v¾sa¾tz ¶£lnl„ÿ½tæñÎ9,“XÊñ•6»!ó¢³S÷ÚöÍ“X�:—kh7y»;-œ(€ßœ”íóoN2™ïG¹ “Y¬È9mg2KÐ’Œ ?„x—êƒ`‚ƒÏA%ŽÅi ãGñ‘øb2 æìÆOªíÚiŠ…¥„‰,,})êôæw±PtFŸù*0¸@£×اüIyX…•v}ÚGû¤“XT} ·×¶ëöFE5N`‚±9°‘fxÓ)Âm¬®ÅéÆúZHõSƒ›ë¦U‚Vf™ëîî:ín’vüøuB²0‰EV¦æE½z¬3_5í �5ÑÔ¹L¶ÂÏKo"¨†3A5Ì1#"fqXFDk,Ck=°””KÿTÑ5ˆ_3³g®‡7ÀÞyÿt¬Ž“»â'¶tÿÁDú}ûÂÙ3§á‹ðÍÐf–W~ž}öã°{÷ Ü råÊ<|ýë_‡ËóWà·ÿy¨†mÚè`LøŒdxd4þk6°²¼«««pæÜÅ8/š…vÏÌÀ@ö•BÈœ¥>Åâ€ëæF†Š¥&ý°•Ci§ÇIݰž¡^½F|2qR"áùOH… “X¬J: “XÊó‡û¥ù²yB f»±±®ióðîµAøoïí*n=Ÿ™KŸªð…®¤QjÎÝIó¢³S÷Úö‰¥+Qí˜ÌÚ¶3™E|´q˜Ì"ûð%³àóŒ>v’ã«ïÃ4“YÀnü(NK?ŠÄ“Y0`7~RmGË…¥¤( % Ë6– 7¯+"¤T"Ðè3_hôû”?)«°ÒŽ@£O;ðhŸ”`‹ªôöÚöá»óüöÐ<÷Bü׺~hRAÚßÄnÀ`súMFê©_¹Ic¼ÿr>«ï%•.b‹,Lb‘•©ù@уA¯ëÌWMû@M4u.S„­…ðÁ³ÃÒ›ª!ÁLP sÌňˆY–ÑËÐZ,%å‰ÉØøìÝ·¦§wÃÌž=°ïÀAØ55Ý#±DÒ½èT*¡ÍÞ8,Ÿ}öcp ´ýýßÿ=xûØ1ØîrìØ[q]:Ï<ó±X7=³§GbI_YªTarj æöïÉ+SaìÝ7£cc2¨n.Óå‰Ï:8 I?¬DådÚiÄqR7¬xxô!ðÉxÄI‰„ç?!*Lb±*é,Lb)Ïî·ü¸ŠÎqëõ\¸p.,Wá_¾±"€›EÒçèFÒmÏJ|¡+i”šswÒ¼èìÔ½¶}GbQöŽøu;Ù(ÀMz Âu ÓÄž} Í“p:zýôM¹ÎŠ_kí s$Òv!éóë¤Úãý(«òû1¿Nú¶ë®©àöa¯B¹V¥?î269ãT?F_º1dh»Ðàt¥KfÙh¶ÀEôd}ï?Zìä/Òµ4Âø!ŽS|<d| ƒINÛ½ÇR¦„ñÓÉS%ç©rHÛñ.4º>TÊ”0~2y¥Œm K ?‘…¥Ï…I,Îí“LbQõ~$– e›ß¾v¹ê§ÀFþ÷Ÿø*À7/îjE}Ë;0¯Ã&ô“ÜÖ¸ Õ¯o6 D½Q‘nÔé6źãÊ$–Œ½qîb‹¬g‹ž–ÞDP f‚j˜c&(FDÌâ°ŒˆÖX†Öz`))–üTÄù5¯e¬9&›‹x?ö(Üsw{ÍÙ¿o?|ëÛß‚S§O‡?üdLúØNrýú5øÎw_€…k×á£}n¹å–Xÿøã©ÎůLŠ^/”HºÍŒŒŒÈ€º'Rv�xNŽèæF†Š¥&ý°•Ci§ÇIݰž¡^½F|2qR"áùOH… “X¬J: “XÊó‡û-ÆWÞ“Z¢õøÒ¥‹°¸ð˯ÏÁZ£Ÿ~·—™KŸªð…®¤QjÎÝIó¢³S÷ÚÞ(Kéc8—~/ÿr·oÛ(&=…|ÐÕËöù¿´ç'³àý(—á'³˜Æi?<™E}‡>v’ã«ïÃ4?™ìÆâ´„ñ£øH|ñ“Y0`7~ºmgaécá'²°ô±úy\H©D Ñg¾ .Ðè5ö)RVa¥FŸvàÑ>)Á$UèíµíÃwãùí z7€D})þƒæ:¸J×¾‰æ= {!€>’5w5’unnÖZrâÇI,²0‰EV¦æE½z¬3_5í �5ÑïEØZ<û ª–ØY‚ZÐOPŒˆ˜Åa­± ­õÀRRXî"às–)ÕlnBK´à3Ÿþ‘žîÐá#ðÙÏü8T«Uøßùmxù•—`ccn´Duxéåã:Õª5øìÿdÄÉgÃ6ˆV+lSzŸ ì¸daKGådÚiÄq7¬g¨W¯ŸŒGœ”HxþR!ÒÝ_0‰Åª¤³0‰¥<¸_;_®¯jµDü:¡•µ:ü‹7æ`~­Ÿ^››™KŸªð…®¤QjÎÝIó¢³S÷Úö-‰¥ç(û¿Ž'¸IOA¸®\Vímž„ÓÑë§sÊuWüÚƒlo¸ˆ´]Húü:©öx?ʪü~̯“¾íºk,¸=?™¥«ï ?™%eC§øxÈø“œ¶{¥L ã§“§ ?™Å\'‹'³°°ô±0‘…¥O…I,Îí“LbQõ[Db‰oüdúcáTûom|¤«¨~ŒÀ“búB‹™-}$l«¼Ìuãuimµ}s­RIôº“llËôØN× ×ƒ’õLb‘Û‘ßx}™ÄBv•béMÕ`&¨†9f‚bDÄ,ˈheh­–’òÄ’´Ý¬Àt1 ;g´ ÙhÁÄØ(<ýä’ÅøÄüÈ| >þ±ÃéS§à?þÇ_ƒ—^zVWWa«e}}^{íûðë_ø58uò<õÔÓð‰ù$ŒKvyòÃñk•ÍfçaNÇæXd±8HF<ëà0$ý°•Ci§ÇYܰþááÑk„À'ã'%žÿ„T¨0‰Åª¤³0‰¥<¸ß­‰«ÈçÂÂuX ××_y{N, CÿHfþ-½Kñ…®¤QjÎÝIó¢³S÷Úö=‰¥ç0û•v“5é)×7˜Ì‚Cèê¤Áb2 êÅd5SÆÉ=^LfÑbI8}!ã§“§ “YÌub2 ¿Zˆ¥?E»ÀJ©“XÔ“XT½+‰E-ß¾T¹Ž¾²ç(Bêõ:Ô†ð¼ÏÀX›ðF°�7«„÷Ꭻ÷Àmân2'µÝÔ¥ðbgt.¨Tµ›_ÝqeKÆÞ8w1‰EÖo‰EÓ–­aLæX{aéMÕ`&¨†9f‚bDÄ,ˈheh­–’rÄ’_1¤™û"¢†H¢7›Ýl4âÏO|ì¨ à§U†Ÿ˜Ûï¼s Þzëðî»ïÀ‘ÃGà¶Ûo‡ýûdžXRœDm;þœxÿ}8ýÁi¨ÕjðÀƒÁ]wÝ¿6 “Zm�>ùCÏÂoüî— Ù¬+vRM $–¤mɀ熤V¢r2í4â°` XÏP¯^#>8)‘ð&$Ç#s„¾ù·ÉÁ}ŸR@mý[I~ËYýHbÑ=©%R¯­­Âââ|ûü8¼|q úG2óoé¾Ð•4J͹…:Ýæó¢³S÷ÚîKÏ1H÷6ù5C m;¿fH|´qø5C²û× Ém—Çhʆ_3„›ä´Ý{ü(NK?ŠÄ¿fó㇅¥…‰,,}) Š.Ðè3_hôû”?)«°ÈB}ÚGû¤“XT} ·×¶ßukÛ×»a†÷‡¸z¬ýehcûÁU† !fÂ}›ºD§Ñn…â<\‚uÍkˆ¶«ˆ5.? w´î‘õ©ïõzæ¯_˜Û[ú {œ˜Ä" “Xdej>Pô`ЫÇ:óUÓ¾�Pãñ¾Qg3˜̱öÂÒ›ª!ÁLP sÌňˆY–ÑËÐZ,%å‰Õ%³˜ÖrɾgÖþ¿Ñyϳý±\D¹ÿþàî»ïãÇñcoÁ‰“'`ddŽ9ûö퇹¹}088>²¹¹ /^€óçÏÜoî­Áøø<öèãpÇÑ£00ê÷ìG>¿ñ»_„F£!YÐYE7—0‰Å«­v X0¬gx€W¯ŸŒGœ”Hx’㑹B_ŒüÛd`ÚŸK: “XÊó‡û-?jâµ;Ë¢KK˰²!à×JrÇGêü¦ô.ź’F©9·P§Û|^tvê^ÛGbéU�27i7y»;4œ(€ßœ”íóoN2™ïG¹ “Y¬È9mg2KÐ’Œ ?„x—êƒ`‚ƒÏA%ŽÅi ãGñ‘øb2 æ,Æ K YXv†é#•4úÌWÁ½Æ>åOÊCÖÌîZ›H Ñ§x´OJ0‰EÕz{mûðÝv~ûðþˆn£síDÕïF×S'àëçn‡¹ <?:~æàñÖx=¸Ça)ü·Ë¤–F+\nDrB³Ü\„b$€J«C#pKãN¸¯ùHïuBAæxw7Âo_¸ Ë›Wa¸: •ì¯Ò™Ä"=ÑEÈv²žÛÉG Ñƒ’õª'e&±Èhô ×‹Ô| èÁ Wu櫦} &Æã}£Îb„1™cí…¥7TC‚™ æ˜ г8,#¢5–¡µXJÊKÒš°ROe‰“©~­¶fzj(I¢'¢œ>}žûú·axx®]¿o¿ýv¼ÎOMOÃîéÝ019 »Â¿èÕ?µpê‘P¢§ªÕ77ãÏå•eXX\„¥ðï굫pýÚµøÂÏÚú¼ÿþiXßX‡Ï|úGàÎÐg¥B{£ìîév[Òs`€öI’ÔwŸÅA2âY‡!釕¨‚L;8,˜Ö?<<zød<â¤DÂs˜Ì úbäß&{ÓþŒXÒY˜ÄRž?ÜïÖDè,Þ‰¥&þÃ5¸tÉïõ»[-WgÛçÖ­Vû• :(~ƒ¯HÁº’F©9·P§Û|^tvê^Ûó:¡ u1­‡ÌCÚMÞîN ' à7'eûü›“LfÁûQ.Ãd+2BNÛo™EÓv&³d ã§§(qü(NK?ŠÄ“Y0`1~XXúO˜ÈÂÒÿ"¤T"Ðè3_hôû”?)Y+»kl"FŸvàÑ>)Á$UèíµíËôG´1j©·)â-ŒÔ¾ìÆ0;q˜v£,Of†¯@½¹ F+¼1¦'ÅŒUø0ì‰ÿ|¥Ùl›×ƒö z[”' ‰¥ó¹¼¶—›}b(:,U¤{ü$Y˜Ä"+Só¢ƒ^=Ö™¯šö€š÷:{Æd޵–ÞDP f‚j˜c&(FDÌâ°ŒˆÖX†Öz`))O¬´6€�r‰½õåàܹspçwE¾ÿýWáëßü.¼úæ;P q_~õM˜Ú5ss3°n/Ì잆±Ña°‘ÕÕu¸|õ\¸p·7ò—ã×EUŽžÈ2;»}ô1VÔ–®à×d suÏDsAH'F<ëà0$ý°•Ci§§€SÀú‡‡G¯ŸŒGœ”Hx’㑹B_ŒüÛd`ÚŸK: “XÊó‡ûõó%ˆ¬Kb‰d}}ZáyæWÞ\„¥•5¸™d~i4^/›ÍVJ›™KŸˆð…®¤QjÎ-Ôé6Ÿº×vÇ=‰%Þä›opwÏz!0ã(&=~sR¶Ï¿9Éd¼å2Lf±"#ä´É,Y@K2‚nüâ]ª‚>•8~§%ŒÅGâ‹É,˜°?,,ý%LdaéoÒG*hô™¯ƒ 4z}ÊŸ”‡¬‘ݵ5‘@£O;ðhŸ”`‹ªôöÚöá»ëüöåôG¨hž{¡m9º*SGÁG>vàðëï}Ø·:Ê–j­ û‡ßƒsëGu]WˆHOPééÚÿ5~pö\½þ. ÍMÃÀÐpê,‰I,²0‰EV¦æE½z¬3_5í �51ï�4f%‹0&s¬½°ô&‚jH0TÃ3A1"b‡eD´Æ2´ÖKIybIÚNV÷CFA®oD×ç¢ûOÏ=÷<LOOÁž=³Fˆ³gÏÀ7¾ñ-xá¥ïÇO\© įÿY\^ÿÞüÁ{P­Váßýÿ~9&¹,//Áf½ÍzêzŒ=¡¥Z€ÁZ-&©D¯Uø¹?ùçbÂhôä–H¢§·LLLÄd–^ü>ìݳöîÝ 2Öo~þ2|í¹çÚmî1‰œ‚L;8ÎÖ†€õ^#>8)‘ð&$Ç#s„¾ù·ÉÁ´?#–t&±”ç÷»5Q“&±Dë^´v_]°¼º7›4›Ù§¦ÎŒ‚€I,%ùJ›ÝyÑÙ©{mw‰¥W�&³dԘ̒õ“Éë%™Ì‚ú`2 �iüâ]ª‚>•8~§%ŒÅGâ‹É,˜Ð–>&²°ô¯é#•4úÌWÁ½Æ>åOÊÑ…4ú´öI &±¨ú@o¯m¾«Îo_ºòËðN²zà)(JæÆæážécp|þ8:³A¥|2ËžñE¸¼± 1ˆoƲ’í8d¯×VhÑôf·^(üþ©K0õ=Õ: ŽOBP­ö„® ƱLíä#ÐèAIÈú@Õ“Æ2“Xd 4zÐëEj>Pô`ЫÇ:óUÓ¾�PãñÎô‡n@.˜̱öÂÒ›ª!ÁLP sÌňˆY–ÑËÐZ,%å‰%i3Yf2‹èu’íô@­­:|ç¥Wax¸·ß~Güä“‘‘auežþyøòó/ÀÐÐìž™‰Ÿ ½N¨^ß„õ X\\€úf=´]†Ã‡Àôtþ“Ø>8}*®]ôš¢è•DCÃCP« vªÙ‚F£ ðÜ °{÷|îsŸ‹É/YÙØØ€×_ Ž{ ^xñÕxF¨ ¤;Gê†Ì×”™æNŒxÖÁaHúa%*‡ ÓN#޵!`ýÃã×OÆ#NJ$<‡ ÉñÈÜ�¡/Fþm²G0íψ%…I,åùÃýnMÔ¤I,‘4øóäU�!¶¦EŠLd‰êŸÚÏ—Þ|¡+i”šs uºÍçEg§îµÝ‰$)šâ„ùwû+í&ow‡𛓲}þÍI&³àý(—a2‹!§íLfÉZ’tã‡ïR},@pð9¨Äñ£8-aü(>_LfÁ|�>~XXúXh/Kga¹ÙDH©D Ñg¾ .Ðè5ö)R²&v×ÒD>íÀ£}R‚I,ª>ÐÛkÛ‡ï¦óÚäöGÒ±~EúƒæøÈ³‡¾µëðú…‰ðBà&”-Ñ »##o·"Ǹ»)Kÿ){¼�KÇ6½É]Z]‡WÞ¿ ×çaaé$ŒîÝÕÁ¡Ž‘þI,æ1Níä#ÐèAIM=ìÆ2“Xd 4zÐëEj>Pô`ЫÇ:óUÓ¾�PãñÎô‡¦}Å‹0&s¬½°ô&‚jH0TÃ3A1"b‡eD´Æ2´ÖKIybIZ+,ĸ³ÈT«P„Óç.À—¾ö|ÿû¯ÁoüÆào½ ­Vòª€ˆ(òÕç¾Ú| ÖÖ7`fvVzµ]D<Ÿ˜€Ý»g`ÏÞ9¸rõPåʵk0»w/LïÞctI,q5ÃS½Ý{ö„>×áËÏ}ž{þ¹¸.]‰êÕõ _ø5xñÅáK_ý|pö< †mŠÚ–n«v.Ëë+‚)9þXjÒ+Q9™vqœ¨ ë½F|2qR"á9LHÂ:ãF }1ò¯º=‚iF,é,Lb)Ïîwk‚#Kb‰¤K¹°Ð„›[2óoé]Š/t%Rsn¡N·ù¼èìÔ½¶;öI,€CF#é^˜@ܤ§ \A®-«öæúJ¾LcštÝ¿v!Ûn“"mG¦lcT{¼eU~?æ×IßvÝ5Ü> ì}(×¾ôÇ]@Æ&gœêÇ(âK7† mœ®tÉ,Òëóp,'R£ÒóäøÒb'÷x‘®ÍÆqœâã!ãKLrÚî=~”2%ŒŸNž*9O©CÚnŒw¡Ðõ¡R¦„ñ“Éó?,,}*üD–¾݉‹ns [„z'4ºM ¦×,~Lba‹ißT½ÃºÍ¶oíª  @PW‰~UñÓG ¾têãð™‡àö© °o²•J Ê’ññŒm\ƒ•Ön³a`ÖN£{R¯7àÝóó°¸9�×—ÎÂõëÇ`xf†¦v÷PzÇ5»Òsl[ÁõŠ2ýÁ$õ+“X¤¯Lb¡LÕ`&¨†9f‚bDÄ,ˈheh­–’òÄ’´,õ©,Fc-¿ hÏž½pþÂEøµßú2ÜϰººÇŽƒÃ‡ÅóËéÓ§à•Wß„S§ÏÁÜ}ñ“\iA¼˜¿|¨2?%®w üL)ˆ§•È×îÙ½pòôyøæ·¾ k««päÈ-±ŸΜ…ë×áÕ×߆7ßz7\ÞØ3;·©ÛÆl7}wÐňg†¤V¢r2í4â8QÖ?<<zød<â¤DÂs˜„uÆúbä_u{ÓþŒXÒY˜ÄRž?ÜïÖFbIËÚFù?È(C*©_þv×p&±”ã+mvCæEg§îµÝÉ$–®DU ¤Ds˜QûkÇF*œµoÛ(&=EÆOG/Ûw®ùi}´¯Eð“Yâ#­â'³˜Æév{2‹ñá§HÛå1šª3?™7Éi»÷øQœ–0~‰/~2 æ¤ñÃÂÒÏÂD–¾¡$>óU`8F¯±Où“ò^QYhôií“LbQõÞ^Û>|÷¬˜G¡Vz[‘Óéöuˆ-ÁôP´A ~ôÖ¯ÂÜØexîÌGáäõAØ?qöŽ­C­@5¨B¥R…�(F8<~Ž-î†"%ìZX¯oÂúf——áÊò&lŠ4ÃŒ+ó¯ÀêúEÚ5 wªQÑ×öþPÃôØN>”„¬T=i,3‰E–@£½^¤æE½z¬3_5í �51ïLhÚW¼c2ÇÚ Ko"¨†3A5Ì1#"fqXFDk,Ck=°””'–¤%`%d–œÑ+ ·>ŒŽÂÞ¹}pýÚUxóØ{püÄixäÁ»áÚµk1̱wÞƒï½~,~ËÈÈhÖa/ˆ½ÜhÂ…Ë—€*.^nÃDe|½êh÷ì ¼ðò÷a³^‡ë q;Oœ<ß{í-ØoÁÔÔ4 w_‹Ä$–ŽÊ!È´ÓˆãDmXÿððè5Bà“ñˆ“ ÏaBÖ7Jè‹‘ÕíLû3bIgaKyþp¿[y$–8·Õ€›Q*™×-tû7°ZTm_èJ¥æÜBnóyÑÙ©{m™Ä’H¼]—æÜí¯´›¼ÝNÀoNÊöù7'™Ì‚÷£\†É,Vd„œ¶—Ifé^w ˆÇ*V£öúØIޝ¾Ó8Lf»ñ£8-aü(>_LfÁ|@*vXXúW˜ÈÂÒ߯AòUÒg¾"k|o•¢}ÊŸ”'ðºÉê@£O;ÀÚAlŸ”`‹ªôöÚöá»æüöevµˆ-¤~ýBZ´øÁ¿ sC P†‚_ƒŸƒx]ü$_zÞ·BY²ÙªÂé•ö·Ü}–ÈÉÏÄÉ lnnÂÒÒû°¼v&Þ4ŽÎ}Ú›Ñ,‰%}8Œc™ÛÉG Ñƒ’õª'e&±Èhô ×‹Ô| èÁ Çã:¿} &ÆãéÜ8)I„O¶°16˜ª!ÁLP sÌňˆY–ÑËÐZ,%å‰%i-°ºFÓzãP"ÈÜðX^Z‚¥ÅExùÕcðRø×u<µ{7LLNñ*áúÔ ZpêÔ ÊÉÓÄu¨tŸ¦™«&&&¡ÕlÁëo½ÿÅU«įoß< sYJ˜Ä’ÕV;NÔ†€õ^#>8)‘ð&$aq£„¾ùWÝÁ´?#–t&±”ç÷»5Áa"±DëUûUz+pû®ºràf['Û¯ú4Ž¥bˆ-øBWÒ(5çêt›Ï‹ÎNÝk{óXJ Ø:Ð$ã„ùwû+í&ow‡‡𛓲}þÍI&³àý(—a2‹!§íe‘YŒ‘Œ i;“Y²Æ†ñÓS”8~§%ŒÅGâ‹É,˜o–>&²°ô¯Äó|•ô™¯ÈÚÞ[ÝhŸò'å ¼n²:ÐèÓ°vÛ'%˜Ä¢ê½½¶}øn9¿}9ý´o(¼ùÔÜÜ„ôÎÏÂG¦Áp°¿Î@¯˜Ú¡‡*‡éÊ4lT@£: `<ÔØá`n!Ή¥YXj]ŠÓÙ sB›€¤ë²c+ÞX· %êÐlÖ¡.VÂTZ­T‡‡atv.~KÛ6ŸÄ’}‹DbIÕ—I,²>õ¡$¤ñ¯m7ò5Ý÷�æö!mÃõ ×‹Ô| èÁ Wu櫦}šño<Þ™þд¯t>ÙÂÆØ`"¨†3A5Ì1#"fqXFDk,Ck=°””'–¤µÂêDuïI)™:ê°:kZDV /Ò-..įñ‰bvt|&wí½¥ð*•6å½÷OÁÕ«W`÷î0Idó~hÛ++ÌMÝ55•°Y«++±]ô¤–ɰ¾•èUB>¯g¾¦š«¹°£#žup’~X‰Ê!È´ÓˆãDmXÿððè5Bà“ñˆ“ ÏaBb•+ôÅÈ¿¦ö¦ý±¤³0‰¥<¸ß­‰Ê“Xjµ¨V88Ù„ý»áüõ›çCSãCðÀžëñZ:8èöª`:Á_èJ¥æÜBnóyÑÙ©{m™Ä’qh’qÂ|ƒ»ý•v“·»ÓÉøÍIÙ>ÿæ$“Yð~”Ë0™ÅŠŒÓö2È,•«=_LfÁ|@¯íLfÁ|$¾˜Ì‚ù�–¾&²°ô§Ä“w|•ô™¯ÈšÞ[ÕhŸò'å ¼n²:ÐèÓ°vÛ'%˜Ä¢ê½½¶}ø.9·}ѯ¥…@íãíJ¶}A»/‚J†GàÂðøÂõ¹ŒQ» ê;Èm‡¢èÖ´“¥ëŒÄš•Áˆ~1wº¯.HJP„±ÜþÀ_uhF&vÁðôLØ_©ç¼Nmƒel'FJBÖªž4–™Ä"K Ñƒ^/�ú…ÄRìEbÌO¶°16˜ª!ÁLP sÌňˆY–ÑËÐZ,%å‰%i­°Õ4õ„4RlEOG©Vajz:þ3yÈâÅ„’P®/-׿üexúé§aÿþẪd×l6áüùsðío®-­ÄOƒ‰^hª^wWjR “X2*‡ ÓN#޲!`ýÃã×OÆ#NJ$<‡ IˆU®Ð#ÿšÚ#˜ögÄ’ÎÂ$–òüá~ËõÕ]o)$–®ìÞ½–Â5óÜú&ü›÷n‡+K°Ýeר üÜm'`×Ôm0Ù'ÿZ!|¡+i”šs uºÍçEg§îµeKZº×ˆ„æFr7a¾ÁÝþJ»ÉÛÝñáDüæ¤lŸs›É,x?Êe˜ÌbEFÈi{Ñd–F«%ùb2 æzmg2 æ#ñÅd`aÙQÂD–>•îåú”ä+²–÷Vs Ú‹N™Œ0‰EÞ­éÚ§ôÖæ”B×6)In_ ·×¶ßç·/§?Ðv½ÌH?s÷ݰvõ*ˆFS:�¢W7!•ÓµC¯Oýð£Õl€o–µZ=à:’ ß«Z�µÑ1¨ Ô$=i,÷¤¢äEý‚¨†¸Õ¡áP.‚‘Xº‡_¤UI{˜Ä"ƒ(mëèSJBÿÚv#_3}olÒ6\z½HÍŠ zõXg¾jÚ�jb<Þ™þ°i_‘"|²…±ÁDP f‚j˜c&(FDÌâ°ŒˆÖX†Öz`))O,Ik…¥7ŽÖ˜x-¤J÷½•]W«Õ`s½Ïó»°¾¾¦½©­ùßyùµøõƒµpíºj$%|Þ3”` «­vœ ë½F|2qR"á9LH¢@¬r…¾ù×ÔÁ´?#–t&±”ç÷»5± #±¤I¥i]ô4²Ûn»Nœ8 iø=xsa7œ^ƒF³BlM)Õµ®×ûG×àá©`dxî½çnÅ+ç.øBWÒ(5çêt›Ï‹ÎNÝkË$¨7ûd‰æÜí¯´›¼ÝNÀoNÊö†›“={&³`ý(—a2‹!§íE“Yda2KÞ8e2 æ#ñÅd`aÙ1ÂD–¾¡IÔ › 4z½è”Éúx…du Ñ§`í4z0è™Ä¢ê½½¶}ø®8¿}9ý¤ú#hoP†‡abÿt…öu~ɦÁÕ›�·7kb8×îpÏ'üxi}0. úNq‘V%íAÛLbÉèSJBÿÚv#_3}olÒ6\z½HÍŠ zõXg¾jÚ�jb<Þ™þ°ißаÉ%ÔUPµÄv jAk<A1"b‡eD´Æ2´ÖKIybIZ+¬œÑ+@ûª!#V€,6©d€”€ñ‰ 8vü\š¿öÍÁàà@ÏoTÍzοW¯-ÂC‡ R@ñÐ:¥ëe0˶2¹™fѱ<‡à0$ý°•Ci§Ç Ù°þááÑk„À'ã'%žÃ„$ Ä*Wè‹‘MíLû3bIgaKyþp¿[ 6ObÉÊ3Ï|^øÎ‹ðÄè<k`ÄW:øõ’3Ç;ée·V›„ÇʼÑ%Rsn¡N·ù¼èìÔ½¶LbÉõfŸ€,Q@“7ùJ»ÉÛ5p¢�~sR¶7ÜœìÙ3™ëG¹ “Y¬È9mg2KPn{2�§ºñCˆw©> 8øTâøQœ–0~‰/&³� ËŽ&²°ô¥MB Ýd ÑkìE§LÖ·À+$«>í�kG ÑƒAÏ$UèíµíÃwÃùíËôG‡”’Ö¥>:[¤?¢r™_ƒ÷°²}=$Vgì!#½nv®‰=¢KôšþTZ®ÏlÌ$}·\*`„€tAŒÄ’>"]£ £Ï4„I,Š>õ¡$¤ñ¯m7ò5Ó÷Æöi4“XnŒ›\B]UKl· ´Æ#"fqXFDk,Ck=°””'–¤µÂʽ™lìWá¹X©5SžìÒµ¨Âî™=°pí,,¾¯µlªÕ¼Ó9¡ÔÁd–ùÚ)hrÜð‚ÃôÃJTA¦F'dCÀú‡‡G¯ŸŒGœ”Hx’(«\¡/Fþ5µG0íψ%…I,åùÃýnM,PH,º§²DºÁÁAøØ³…sçÎÃÕè ¦iJ£Ñ/éåw×®]pðàøI2²M€” ˜¦5_èJ¥æÜBnóyÑÙ©{m™ÄBõfŸ€,Q@“7ùJ»ÉÛÝ (~sR¶Wë«Ú3™ëG¹ “YLã”É,˜T}€É,VãGqZÂøQ|$¾˜Ì,,}/LdaéoÈW™½Æ^tÊdÝ ¼²:ÐèÓ2y)±Õë™Ä¢ê½½¶}ø.8¿}9ý¶»KBAÚ"ÁH>2{ãî÷ô®¶^ Õ ð=˜ñXûCÓ>óqÅõAêuB š´[Ú¹Db`KFŸúPÒØÌ9®Ò×LßÛ‡´ ׃^/Ró¢ƒ^=Ö™¯šö€šw6†&±Øâ ªaŽ™ 1‹Ã2"ZcZ륤<±$­VÎèÕdãOgÉwŒA'íôøø8 …7æÖ××C“VƆ‡†a`pPï¬w‘…pUC3—É7Ê,:V77j4T,5釕¨‚L;8NȆ€õ^#>8)‘ð&$Q V¹B_Œükj`ÚŸK: “XÊó‡ûÝšXH“XÌdÑ|9p`ü§ÃhëEÊoy‚¿Š/ÐØ%øBWÒ(5çêt›Ï‹ÎNÝkË$–—97y³Þ]h±Ú_i7y»;Bœ(€ßœ”íÕúªöLfÁúQ.Ãd+2BNۙ̒”ÛžŒÀÇ©nüâ]ª‚>•8~§%ŒÅGâ‹É,ÀÂÒ×ÂD–þ|˜I ÑkìE§LÖÀë «>í “—ò'[½žI,ª>ÐÛkÛ‡ï~óÛgèÔÓUHý!ä²½ séþèE~éÝm_öQÈ퓺tºS'ã±&öz\ƒ^=¤}Yf,«zÊñ“Ž,`º]« £Gb[ÓfÉ7ª%!ëUOËLb‘%ÐèA¯úãjŽmõXg¾jÚ—=¬`NXµoëÎ`„M®ÙØ`"¨†3A5Ì1#"fqXFDk,Ck=°””'–¤µÂʽ¬ä†[¾±O!‹=ãÚà`ü§‚!û ̈"š¹ŒI,vXmµSÀ‚)`ýÃã×OÆ#NJ$<‡ IˆU®ÐãÖ¿¦ö¦ý±¤³0‰¥<¸ß­‰…4‰…"¦§²dumü¬>þZ­òÚ§ŠY`°¥éÍyøBWÒ(5çêt›Ï‹ÎNÝkË$¢ëœ›¼ŠYœÐßäM¾Ònòvw†Š…ßœ”íÕúªöLfÁúQ.ÃdÓ8e2 æ#U`2‹ÕøQœ–0~‰¯Ofaaéc©� K?Š@¾ Ì$Ðè5ö¢S&ëNàuÕFŸvÉKùˆ­^Ï$UèíµíÃw½ùíËé´Ý¾¯ÅêÛyeNÚW¯Q^÷ôíÞÄŸG'žÈ¿¶¾¢æˆ SRÖµOîÓÚJOo;–¥d÷K§BꋤLÒ™v‹L{%=Û€ä#ÐèAIÈú@Õ“Æ2“Xd 4zÐë…þ¸šc[=Ö™¯šö€šw¦?¬ÚèÌ a“K¨” j‰ Ô‚Öx‚bDÄ,ˈheh­–’òÄ’´VX9£×«½à‰,(þµ/³Þk±ˆ.“å5`‹%V[í8óÖ?<<zød<â¤d&ÔR¢@¬rDd>óÍýkj`ÚŸK: “XÊó‡ûÝšX°%±˜„F=¿Ýµ®ˆ§¡¤±0K€ž¯RëL|¡+i”šs uºÍçEg§îµe‹…g´ †kÀ½„þPò¿¾ˆáè·„ë-H}U{s}%_¦X!]Ư‰Èö†9 i»q)Ø5º¬=Þ²*¿óë¤o{2æ‚mœü=åšZ޵ʔMÎ8ÕQÄ—n Ú.48¸è¯_êÚ.ˆ±.Áb½Wm^WO¹æG?ÄqЇŒ/a0Éi»÷øQÊ”0~:yªæõ i»1Þ…BׇJ™ÆO&OÛ?,,}&LdaékÑ-½aa¯Y¤˜ÄÂ$ÓÆ\Û¾Ì+p°vyí *m2G¶ ¤}¹ß—ý$EŸ7–»íKݼË'éÉPö%±hb;ù4zP²>Põ¤±Ì$Y˜Ä¢*™Ä¢7TÃ3A1"b‡eD´Æ2´ÖKIybIZ+¬œÑ눥»!fMbÉ1#"Vú+^‹ÎÐÍ KMúa%*‡ ÓN#N ¦€õ^#>8)¹…‰G4øOnK‘s�ĵDAó¶‚ß`+Éo9ã…I,mÉ#rØ@Úë[Ú/–h)öv½³‡N¾Î§®®& ¨äUQÚ(5çêt›Ï‹ÎNÝkË$‡ U1\ î%ðkòWÚM^ÔD¤ê‚èEN}U{s}%_¦˜a2‹Á‡œ¯CLfA} .LfÁ} õA°0üø–8~”2%ŒŸNž*;™ÌÂÂÒ¿ÂD–¾Ý"Ñ;áöšÅ‰I,Lb1mÈsÛ×%gÚݱ@Ú—î„Ü!™a›­ˆ’%·ÄdU—è+@ûEx§Œ¤¯àú”?\_‘››wüè`iÚÝëÏîÓbÒzMl¦‹ FJBÖªž4–™Ä" “XT%“Xôf‚j˜c&(FDÌâ°ŒˆÖX†Öz`))O,Ik…•3z ÀJߨºH,s#Î,5釕¨‚L;8,˜Ö?<<zød<â¤ä&Ñà?¹ÝEÔÔÁ´?#–t&±”ç÷»5±PÄ“X̤)Óî),ù„¬Œy`Ââ'±Ð}¥ÍnȼèìÔ½¶Lb±óú˜÷œ™ssÌHºV L•p‘ª ¢9õUíÍõ•|™b‡É,r¾v 1™õ!48¸0™÷ÔÁÂpðã[âøQÊ”0~:yª0™……¥ß„‰,,})ºÅ¡w¢!,ì5‹“X˜ÄbÚˆ“Ú×£©€q*ºVX¤mÓÄt“¥Ñ5±?tí3WÏã¤þÀðd¡Xºz&±$ JÛ:úÔ‡’ÆîqͶ/¿?ðú2‰EU2‰Eo&¨†9f‚bDÄ,ˈheh­–’òÄ’´VX9£·@¬¶Pn~Ñ¢ ±zõÒÖÍ¢3ts£FCÅR“~X‰Ê!È´ÓˆãÌkXÿððè5Bà“ñˆ“ ÏaBbÑ­JQDìLû3bIgaKyþp¿[3Ê©$ ©Ãd“¬¿"åWÍ·!©˜ü¤ŸúÒéi 9~ÜÚ‹/t%Rsn¡N‹Ü@lK8;u¯-“Xl¹Î&4v¦½gæ3’®蚟ÂÑoC×a4×ód{s}%_¦b2‹Á‡œ¯CLfA} .LfÁ} õA°0üø–8~”2%ŒŸNž*;ÌÂÂÒÏÂD–þt3À$)É$9o«I,]}@9 ꞎkH,iûè¿ì“UºOFÉÚõ $±¸OVð!«'±Dm»±áNŸÉÊÔ“XÔ¯”ëlûòû¯/“XTåÖ‘XÌ"ŒIB ½–Ø@A-h'(FDÌâ°ŒˆÖX†Öz`))O,Ik…e6.šÄbºafƒÓ5#x̵ˆýCêWâX˜)9þXjÒ+Q9™vqœy ë½F|2qR"á9LH¢@,ºU‰"Ѝƒ=‚iF,é,Lb)ÏîwkFyObÉJY4Ò'•f—¿´/ɳqó|Sê—m›"¢´QjÎ-Ôi‘{#ˆm g§îµe‹ƒôªb¾–س1íA3çꘑtí@˜êÄd}½h×C˜Ì‚˜éÆO*O@Æ&gœêÇ(âK7†˜Ì¢BcGêBÛñññ% &9m÷?J™ÆO'O&³°°ô‹0‘…¥?Ý0‰EJ2‰EλQ$–žŠ2>_qó”Õ§°·äuBAÒÌŽI–”‚ëƒ$i‹n3™Õ÷ž¾b㋪L}=( Y¨zÒXf‹,LbQ•”“Ä­aLJèµÄ¶jAk<A1"b‡eD´Æ2´ÖKIybIZ+,³qÙ$–¬tµMú¸ y4øIÝly%Ì9&Srü°Ô¤V¢r2í4â8ÉÖ?<<zød<â¤DÂs˜DXt«EQ{ÓþŒXÒY˜ÄRž?ÜïÖŒr‹Í+€)¿�E<}E/ÙvÑ|¹×_èJ¥æÜBÒ7é7d^tvê^[&±xH¯JækŠ=Ó^4sÎŽIׄ©Nn’©oV/rê«Ú›ë+ù2Å“Y >ä|íb2 êChppa2 î©‚…áàÇ·Äñ£”)aütòTa2 K?YXú^z'ÚM%¢×,>Lba‹iÃMjŸ®?¢D`ºÁŸê‘hººömýë„ ç¸zodw› ý/6µl“Xd}êCIHã?÷¸fÛ—ßx})Ç5«ÔWslã'“ùíÛ>$ LI"ŒIB ½–ØA-h'(FDÌâ°ŒˆÖX†Öz`))O,Ik…e6Þj †£ý•7)–áWâ ŸË õÊqk(e†¤V¢r2í4â8ÃÖ?<<zød<â¤ä&@‹†â°èV%J!ë¹=‚iF,é,Lb)ÏîwkF¹Ï“XlÈ,‰­HùÕÛój!ÈàäcÙúÌ}š›(m”šs uJߤßyÑÙ©{m™ÄR€ôªf¾ÖÔ³1íI3çt-A˜êà&™úfõ™3ˆñY‚6OÂéèõËåú1~ E¶g2‹ÞG'Æd–‚ÀdE ã§§(qü(eJ?<Uv™……¥…‰,,}-½ ífÑk&±0‰Å´Ñ&µÏDbé™`ÇU%±d‹GOhI[Úz|³{³’XdºJûUI Æ*hÚ×}bœþ`‹ú•I,ÒW&± IB ½–ØA-h'(FDÌâ°ŒˆÖX†Öz`))O,Ik…e6Þ$£Yî+ ˆ7øts™ÎÈ Ï:8 I?¬DådÚiÄq†5¬xxô!ðÉxÄIÉ-LñW ݪD)d=·G0íψ%…I,åùÃýnÍ(÷!±tÅŽôѶ·½ïöj!ƒöD6»Lb‘ÍnȼèìÔ½¶Lb)PzU4_sêÙ˜ö¦™sxÌHº¦ Lu p“L}³z‘S_ÕÞ\_É—)ƘÌbð!çkÇ“YPBƒƒ “YpH}, ?¾%Ž¥L ã§“§ “YXXnfa" KßJïB»‰DôšÅ†I,Lb1m°Ií£XºIé×\ù$Ý-Kn :¶iôŽn£EnÚ—"¢ˆ„tj$ëƒD/’'­tq´ýaË)ŒöUNml'LbQ¿RNœ³íËï¼¾LbQ•LbÑ› ªaŽ™ 1‹Ã2"ZcZ륤<±$­–Ùx»“X$‚R¢3ŒxÖÁaHúa%*‡ ÓN#N ¦€õ^#>8)¹…‰G48NnÄæ”'…¬çö¦ý±¤³0‰¥<¸ß­ÐEXºB#€ˆžßr_%”øê¥4Ít­‡Z_èJ¥æÜB¹7"€Ø–pvê^[&±” ½ªš¯5ölL{Ô̹<f$][¦:¸I¦¾Y½È©¯jo®¯äËkLf1øóµcˆÉ,¨¡ÁÁ…É,¸¤>†ƒßÇR¦„ñÓÉS…É,,,7«0‘…¥/¥wâ Ý<"zÍ"Ã$&±˜6Ö¤öÙXÒ_‚ ôžÐbÜeõøæ6{¬erK�YÒK d»®.€¬>M6ÁÈ*=O©ŠŽ·î$Ð>Yßñß!°hí¥ãÄ$õ+“X¤¯;’Ä"@ß@s)’–ØA-h'(FDÌâ°ŒˆÖX†Öz`))O,Ik…e6f‹ÆÈ Ï:8 I?¬DådÚiÄ)`Á°þááÑk„À'ã'%·0ñˆÇÉØœò¤õÜÁ´?#–t&±”ç÷»5ºHKWÌd‘ò«–+–Ø’™E±¾ÔrøBWÒ(5çê´È½Ķ„³S÷Úî$K±c‰â°ûÅ| ªgcÚ«fÎé1#éƒ0Õ)ÀM2õÍêEN}U{s}%_¦˜c2‹Á‡œ¯CLfA} .LfÁ} õA°0üø–8~”2%ŒŸNž*Lfaa¹…‰,,}*Lb‘’Lb‘ón‹Ô ùB2C7Kø¦–ü¤’”ƒ¢Úç|¼u'¶íë‚Ò}È$YŸúPÒøÏ=®Ùöå÷^_&±¨Êíò$Õ¿›‰ ÌÕ0ÇLPŒˆ˜Åa­± ­õÀRRžX’Ö ËlÌ$‘žup’~X‰Ê!È´Óˆã kXÿððè5Bà“ñˆ“’[˜xDƒãäFlNyRÈzn`ÚŸK: “XÊó‡ûÝš]‰¥+8AD¤üÒ1Lú²±+Ž$cj[VUÒ(5çê´È½Ķ„³S÷Ú2‰¥@yz󵨞iÏš9·ÇŒ¤k Æ:¸I¦¾Y½È©¯jo®¯äË{Lf1øóµcˆÉ,¨¡ÁÁ…É,¸¤>†ƒßÇR¦„ñÓÉS¥_É,,,ý+LdaéOÑn½fQa “XLiRûŠ ±¤m»¯Ã «“®GbéöSL�ªäÛ§pEÇ®%!ë™Ä"·#¿?ðú2‰EUZ’X4Ø…‹p5TC‚™ æ˜ г8,#¢5–¡µXJÊKÒZa™™Ä¢1ò³CÒ+Q9™vqœL ë½F|2qRr hpœÜˆÍ)Eâ¹DáÎÁ´?#–t&±”ç÷»5ºLKZÒ‡Hù-_þ“mŠô‰“`ð…®¤QjÎ-Ôi‘{#ˆm g§îµeK "òôækR=ÓÞ5sŽI׌u p“L}³z‘S_ÕÞ\_É—)™Ìbð!çkÇ“YPBƒƒ “YpH}, ?¾%Ž¥L ã§“§ “YXXn&a" Kß‹nR7-&Lba‹iMj_Ñ$–´Yô_÷ #iÒfo<Ö}@b@é‹XoÛÉ“XÔ¯Lb‘¾Þ$ |±"\MÕ`&¨†9f‚bDÄ,ˈheh­–’òÄ’´VXfc&±hŒ¼ð¬ƒÃôÃJTA¦FgRCÀú‡‡G¯ŸŒGœ”ÜÂÄ#'7ZsÇQüÑíLû3bIgaKyþp¿åú’}n¯ŽÇÞSQ¶Â—”* ™æ'¹à ]I£Ôœ[¨Ó"÷FÛÎNÝkË$–â¥}m€v“WJ¢öLfÑ/c”ëÍúò‰=“Yô>Ú8æ1Ú¶QÇ\6Ád–žšë !Ö{õÑæuõLfÑaI8}!ã§“§ “YXXna" K_‹n27-"Lba‹iãLj_Ù$Eß9QÇÈ-nŒoS‹ÒŽJû 4ºö!Â$Di[GŸúPÒøÏ=®Ùöå÷^_&±¨JW‹æ©(®&‚jH0TÃ3A1"b‡eD´Æ2´ÖKIybIZ+,³1“X4F^xÖÁaHúa%*‡ ÓN#N ¦€õ^#>8)¹…‰G48Nn´æ8އ-ûú™ögÄ’ÎÂ$–òüá~·füÞKâ7RŒ¯^Ê£™´zâ ]I£Ôœ[¨Ó"÷FÛÎNÝkË$–ò¤wN,Œw 48ê4‹_“Pê£ÆqDN}³z‘S_ÕÞ\_É—)&™Ìbð!çkÇ“YPBƒƒ “YpH}, ?¾%Ž¥L ã§“§J‘YXXúX˜ÈÂÒ·¢›ôM‹“X˜ÄbÚ0“Úw#H,˜>­SÈ-PŸbÒyeQF×{•QŠX‚ê!åÕWä<} ô×t¯’ôôØN>”„¬T=i,3‰E&±¨J&±èÍÕ0ÇLPŒˆ˜Åa­± ­õÀRRžX’Ö ËlÌ$‘žup’~X‰Ê!È´ÓˆSÀ‚)`ýÃã×OÆ#NJnaâ Ž“­9ŽãaËľ~¦ý±¤³0‰¥<¸ß­¿7šÄ’•ì+ŠðÕKY6Ó¾.øBWÒ(5çê´È½Ķ„³S÷Ú2‰¥|é £ä]› Ž:Ýâ×&”ú(…q‘S߬^äÔWµ7×WòeŠM&³|ÈùÚ1ÄdÔ‡ÐààÂdÜR ÃÁo‰ãG)SÂøéä©Âd–í.LdaéKÑMö¦EƒI,Lb1m”IíÛŽ$EOìÇö9odó§m·eû˜Ä"ëSJBÿ¹Ç5Û¾üþÀëË$U¹MI,T­¦?òÍÕ0ÇLPŒˆ˜Åa­± ­õÀRRžX’Ö ËlÌ$‘žup’~X‰Ê!È´ÓˆSÀ‚)`ýÃã×OÆ#NJnaâ Ž“­9ŽãaËľ~¦ý±¤³0‰¥<¸ß­¿ÛÄ‚I–LB'–dæ_Q4¾Ù_WUÒ(5çê´È½Ķ„³S÷Ú2‰eë¤wŽ,ŒwÍ 48ê´k¾ÁÝ«RÇ9õÍêEN}U{s}%_¦e2‹Á‡œ¯CLfA} .LfÁ} õA°0üø–8~”2%ŒŸNž*7?™……¥Ÿ…‰,,ý+Øâ®Y,˜ÄÂ$Ó™Ô>&±¸oÝf¿€ö1‰EÖ§>”„4þsk¶}ùý×—I,ª²�‹Æ_Ù"¨Zbýµ 5ž 1‹Ã2"ZcZ륤<±$­–Ù˜I,#/<ëà0$ý°•Ci§ljÓ°þááÑk„À'ã'%·0ñˆÇÉÖÇñ°eb_?ÓþŒXÒY˜ÄRž?Üï֌ߛĒ'z d)E‘Ut‚/t%Rsn¡N‹Ü@lK8;u¯-“X¶^zçÊÂh�y×®@ƒ£N¿æܽú(…q‘S߬^äÔWµ7×WòeŠU&³|ÈùÚ1ÄdÔ‡ÐààÂdÜR ÃÁo‰ãG)SÂøéä©Âd–í*LdaéOÁuÍ"Á$&±˜6Ƥö1‰Åýxë6ù´I,²>õ¡$¤ñŸ{\³íËï¼¾LbQ•LbÑ› ªaŽ™ 1‹Ã2"ZcZ륤<±$­–Ù˜I,#/<ëà0$ý°•Ci§ljÓ°þááÑk„À'ã'%·0ñˆÇÉÖÇñ°eb_?ÓþŒXÒY˜ÄRž?ÜïÖŒß~ ±äùê¥J÷‰/t%Rsn¡N‹Ü@lK8;u¯-“X¶H„NE'#˜×M&³è—;Êui&³�’—Œ9&³`>„&³à>ú X~|K?J™ÆO'O&³°°lGa" Kß‹iq` “XLbRû˜Äâ~¼u›ûÚÇ$YŸúPÒøÏ=®Ùöå÷^_&±¨ÊâH,·¥‰ j‰Ô‚Öx‚bDÄ,ˈheh­–’òÄ’´VXfc&±hŒ¼ð¬ƒÃôÃJTA¦FgLCÀú‡‡G¯ŸŒGœ”ÜÂÄ#'7ZsÇÖ‰}ýLû3bIgaKyþp¿[3~™ÄRž¿®ª¤QjÎ-Ôi‘{#ˆm g§îµeˋЩèdóúÉdý²G¹>OF`2‹ÉGÇ<FÛ6ê˜Ë&˜ÌÒSc]‚!Äz¯>Ú¼®žÉ,:, §£/dütòTa2 Ëv&²°ôµ˜&±0‰Å´&µI,îÇ[·©/ }Lb‘õ©%!ÿÜãšm_~àõe‹ªd‹ÞLP sÌňˆY–ÑËÐZ,%å‰%i­°ÌÆLbÑyáY‡!釕¨‚L;8Θ†€õ^#>8)¹…‰G48Nn´æ8އ-ûú™ögÄ’ÎÂ$–òüá~·fü2‰¥<]UI£Ôœ[¨Ó"÷FÛÎNÝkË$–r|¹¸èC‹¼2ækZ ÁQ§eó î^}”Â8ŽÈ©oV/rê«Ú›ë+ù2Å0“Y >ä|íb2 êChppa2 î©‚…áàÇ·Äñ£”)aütòT¹ É,,,},Ldaé[1-Lba‹iLj“XÜ·n3_@û˜Ä"ëSJBÿ¹Ç5Û¾üþÀëË$UÉ$½™ æ˜ г8,#¢5–¡µXJÊKÒZa™™Ä¢1ò³CÒ+Q9™vqœ1 ë½F|2qRr hpœÜhÍq[&öõ3íψ%…I,åùÃýnÍøeKyþºª’F©9·P§Eî ¶%œº×–I,åø"‹Ð©èdózÊdý2H¹^OF`2‹ÉGÇ<FÛ6ê˜Ë&˜ÌÒSc]‚!Äz¯>Ú¼®žÉ,:, §£/dütòTa2 Ëv&²°ô¥˜&±0‰Å´ñ%µI,îÇ[·‰/ }Lb‘õ©%!ÿÜãšm_~àõe‹ªd‹ÞLP sÌňˆY–ÑËÐZ,%å‰%i­°ÌÆLbÑyáY‡!釕¨‚L;8Θ†€õ^#>8)¹…‰G48Nn´æ8އ-ûú™ögÄ’ÎÂ$–òüá~·fü2‰¥<]UI£Ôœ[¨Ó"÷FÛÎNÝkË$–r|åK�y7¸{çÔºêˆ4VÞºÊdýrH¹nm>Vm{Í ^© íº “Y3ÝøIå ÈØäŒSýE|鯓YTbìHýCh;>2¾„Á$§íÞãG)SÂøéä©Âd–í LdaéOÑLþLba‹iÃKj“XÜ·nó^@û˜Ä"ëSJBÿ¹Ç5Û¾üþÀëË$UY"‰ES¢DPµÄzjAk<A1"b‡eD´Æ2´ÖKIybIZ+,³1“X4F^xÖÁaHúa%*‡ ÓN#ޤ!`ýÃã×OÆ#NJnaâ Ž“­9ŽãaËľ~¦ý±¤³0‰¥<¸ß­¿Lb)Ï_WUÒ(5çê´È½Ķ„³S÷Ú2‰¥_vb¾ÁÝ;·ÖUKÈ8æõ•É,úe‘rýÚ|¬Úöš¼RÚõ&³ fºñ“ʱɧú1ŠøÒ!&³¨ÄØ‘ú‡Ðv|<d| ƒINÛ½ÇR¦„ñÓÉS…É,,,7Z˜È²c„I,Lb1mtIíc‹ûñÖmÚ h“Xd}êCIHã?÷¸fÛ—ßx}™Ä¢*™Ä¢7TÃ3A1"b‡eD´Æ2´ÖKIybIZ+,³1“X4F^xÖÁaHúa%*‡ ÓN#ޤ!`ýÃã×OÆ#NJnaâ Ž“­9ôÞv9žbïÕ´?#–t&±”ç÷»5£’I,åùëªJ¥æÜB¹7"€Ø–pvê^[&±”ã‹,’+ó îÞ9¶ÈÃ2_ó Ž:m›op÷ê£ÆqDN}³z‘S_ÕžvC¾«×/”ëØùd&³˜|´qÌc´m£Ž¹l‚É,=51Ö%B¬÷ê£Íëê™Ì¢Ã’p:úBÆO'O&³°°ÜHa" KŸ aã!M<ªOìS©“Xä“Xä/LbÑnÖ h“Xd}êCIHã?÷¸fÛ—ßx}™Ä¢*o^ .‚¤¢•TÃ3A1"b‡eD´Æ2´ÖKIybIZ+,³1“X4F^xÖÁaHúa%*‡ ÓN#ޤ!`ýÃã×OÆ#NJnaâ Ž“­9ôÞv9žbïÕ´?#–t&±”ç÷»5£’I,åùëªJ¥æÜB¹7"€Ø–pvê^[&±”ãËFÔ©Ë|ƒ»w®-L€ Žy½e2‹~™¤\Ï6«¶½æ¯T†v½†É,ˆ™nü¤òdlrÆ©~Œ"¾tcˆÉ,*1v¤þ!´_Â`’Óvïñ£”)aütòTa2 Ë&²°ô½0‰…I,¦-©}Lbq?ÞºMzíc‹¬O}( iüç×lûòû¯/“XTåÖX4U*AIE+)¨†9f‚bDÄ,ˈheh­–’òÄ’´VXfc&±hŒ¼ð¬ƒÃôÃJTA¦FgECÀú‡‡G¯ŸŒGœ”ÜÂÄ#'7Zsè½í8r<ÅÞ«iF,é,Lb)ÏîwkF%“XÊó×U•4J͹…:-roD�±-áìÔ½¶Lb)Ç—‹¨S˜ùwïœ[˜�óºËdýrI¹®OF`2‹ÉGÇ<FÛ6ê˜Ë&˜ÌÒSc]‚!Äz¯>Ú¼®žÉ,:, §£/dütòTÙÆd–>&²°ôµ0‰…I,¦ -©}Lbq?ÞºÍyíc‹¬O}( iüç×lûòû¯/“XTåV’X4';…Š ©h%Õ0ÇLPŒˆ˜Åa­± ­õÀRRžX’Ö ËlÌ$‘žup’~X‰Ê!È´ÓˆSÀ‚)`ýÃã×OÆ#NJnaâ Ž“­9ôÞv9žbïÕ´?#–t&±”ç÷»5£’I,åùëªJ¥æÜB¹7"€Ø–pvê^[&±”ãËGÔ©Ì|ƒ»w-L€ Žyýe2‹~Ù¤\ß6«¶=“Yô>Ú8æ1Ú¶QÇ\6Ád–žšë !Ö{õÑæuõLfÑaI8}!ã§“§ “YXX¶Z˜ÈÂÒ·Â$&±˜6²¤ö1‰Åýxë6å´I,²>õ¡$¤ñŸ{\³íËï¼¾LbQ•[LbÑÔ­8$­¤ æ˜ г8,#¢5–¡µXJÊKÒZa™™Ä¢1ò³CÒ+Q9™vqœ ë½F|2qRr hpœÜhÍ¡÷¶GQ™Oû’EÍÛV~ƒ­$¿å(&±”ê1åwk|õR7h¿\Ò(5çê´È½Ķ„³S÷Ú2‰¥_Eˆ:¥™opçžO Ǽ3™E¿|R®s›UÛ^sƒW*C»ŽÃdÄL7~Ry269ãT?F_º1Äd‚;RÿÚŽ‡Œ/a0Éi»÷øQÊ”0~:yªl?2 K? YXúR˜ÄÂ$Ó–Ô¾@bi‰H‘8"Œe)I:~Lb‘…I,²25(z0è™Ä¢¶Ïp2Z˜’ŠVRP sÌňˆY–ÑËÐZ,%å‰%i­°ÌÆLbÑyáY‡!釕¨‚L;8N††€õ^#>8)¹…‰G48Nn´æÐ{Û£¨‡Ø;1íψ%…I,åùÃýnÉ dK‰þºª’F©9·P§Eî ¶%œº×–I,åø*RÔ©Í|ƒ;÷¼ZÈ8æõ˜É,úe”r½Û|¬Úö†›·HÛK“YT3ÝøIå ÈØäŒSýE|鯓YTbìHýCh;>2¾„Á$§íÞãG)SÂøé䩲ÝÈ,,,ý+LdaÙ"Í9ªOìS©“Xä“Xä/K‡(F:äH‘G¶œÄÙµZñ—™‘!¬V ¾áÓJ×IÅ` (›c}O…õ‡±Ý*ˆÒ¶Ž>õ¡$¤ñ¯m7ò5Ó÷Æö!mÃõ ×‹Ô| èÁ g‹Ú>ÃIh™Bô)¨­ñňˆY–ÑËÐZ,%å‰%i­°ÌÆLbÑyáY‡!釕¨‚L;8N††€õ^#>8)¹…‰G48Nn´æÐ{ۣ薊iF,éîÛo°•ä·œÅ$–R=¦ün¯^ªtŸøBWÒ(5çê´È½Ķ„³S÷Ú2‰¥_Þ"4*IäÛ3™Eã#ú ÝïêõË)åºw>É,&mómÛ¨c.›Ø¾d–‘Ø;:ŒØç&³€ÆR ÃÁo‰ãG)c7~²8èøéä©Âd–­`aéwȦÕ'ö©T‚I,r‚I,ò— ‰%Ci?õDÆ€ ½Ù º0Hĵ'‰%¹er þæG€ã£Ðl øÕœ€ÿðƒSmh‘ª‹ÍñÖm¾…®:=“Xº JÛ:úÔ‡’ÐäÚgúÞØ>¤m¸ôz‘š=ôøÉX~û˜ÄR¸} jAk<A1"b‡eD´Æ2´ÖKIybIZ+,³±Í…z!Z«€‚$Kû #/<ëà0$ý°•Ci§ÇÉаþááÑk„À'ã'%žÃ„$ ÄÒZyL”梎ãª1íψ%Ý}û ¶’ü–sl˜ÄRªÇ”ß­ñÕK•î_èJ¥æÜB¹7"€Ø–pvê^[&±”ã«éî÷ÕýW RÙ½‹_ÝLPíãólŸBôÊ´qzI É,N¤êƒõêÓ 4m2õÑÔ7«—íóÛ-âÚèëÛÃéÔ7ºƒž‰ÅÈ~T¤/‘šUÛ>¬O ƒHÛÕñ`®“qüH>Òª }½—0~p?™¼dÌá}™ú †1Úñ•ª¯:F”v§ò{Ú8íÕGñ‘ªOªíè •ùÑ{áÝ};TBÌ÷®/ÂßþæKðÁÒJÊ>ü´¯×Šôey¤^rÛå1šàèb'9¾ú>”ê“w¼2ÇŸƒã‡ïR},@pð9¨Äñ£8¥]ì ãGñ‘øÒŽŸT¥ñ†xGçÃø\ÅÂÒOÂD–þ‘Ç>±O}¤F=“XT} ·×¶ßýå·/§?Ðv9íÎ$±þh%·P†ÂÍÅÃ{gà±}³pÛ® Ø54ãƒ5X­7`acΆë/\†WÎÏÃJ£ÙC`Äþд#ÚXEOcùëOÞ“X"©VøãÜo_¾ß¿¼l¼lŽ·R&±ÈÂ$Y©çrb[=Ö™¯šö€šw¦?¬ÚwcI,šª+D'‚ZÐOPŒˆ˜Åa­± ­õÀRRžX’Ö ËlL¹h.:FCáÚúÐ÷Ác<·9 »&'a|lV×Ö`aq ο�/ï5xåÕ×BÝz\&Ð^¥¢U]PŒˆXù%HJuÔ#žup’~X‰Ê!È´ÓˆãìgXÿððè5Bà“ñˆ“ ÏaBbi­<&JsQÇqU‚˜ögÄ’î¾ý[I~Ë96Lb±“Êÿòÿ‚ÊñcP”ˆ©ÝÐøÛÿ�ü%3ÿ–Ô¥µÿç?€àâyI×øÏÿ´n¿“¸_pÿ=TQ¾ÒfÌ4`+LbÙ.>·ÏZKTäf_¬ŽÿëjÌ7¸Û*ÚMÞîNTãYÅ‘Ì4uNõêÓ 8ÃM^©>šúfõ²}~»™Ì‚÷cWþé?OÚ ˜üýçß‚ÿxì±N2Bª¾?}×Aø¿<s¿äï¹Ó—ào|ùUè72Ë'ï‡?qϽôS“ðù?þËßÌØç#AÓv&³d ã§§(qü(NÍã§­ÇçíøQ|$¾n8™……¥…‰,,ý+";¥}bŸúH% z&±¨ú@o¯m¾ëËo_N írÚIbýÑ!±DŒûO9�?wïј¼’•ÉPýž‡§ÎÁZ£ÿþ­÷á÷Þû�ÝÁÌÎÇ›ÄÒÝL†u¬„‡'Ǩ[vÁ«—®…¦¢¶Çu o¥Lb‘…I,²25(z0èÕcùªi_�¨‰ñxgúê}LbÑ› ªaŽ™ 1‹Ã2"ZcZ륤<±$­–Ù˜Jb‰¢æ‡>öø¹Ÿù)˜œœPl&'&â¿ÃÀ“O<këëð|á·á÷¿ôhÆrÒf‚bDÄÊ/!çT«UøéŸø1Åê?þæï@«iŠëà0$ý°•Ci§ÇÙϰþááÑk„À'ã'%žÃ„$ ÄÒZyL”梎ãª1íψ%Ý}û ¶’ü–sl˜ÄÒ/’™oD3Ei£Ôœ[¨Ó"÷FÛÎNÝkË$–r|•"Qµ˜Ì¢šdê›ÕËöùíf2 ÞSÃ5øðiÐÉgŽîkYÈu"t7äAÆé'2KD\ÉÊÓ“VdËÄ|ê–C®óåµuø÷OeJ3™%ožc2 æ#ñÅd–r„‰,,ý)";•}bŸúH% z&±¨ú@o¯m¾ÛËo_N írÚIbý‘XƒR Uí‰Ã–9 Jô.ÏÿôÁ»à‘½3ðýö«Ðèî÷:;ŸbH,oîZÑÿ­&¼yé<0—ü2 :yíÂÕ¸ÐsG8ÞJ˜Ä" “Xdej>Pô`ЫÇ:óUÓ¾�PãñÎô‡Uû¶ ‰ESçB„ˆ-¨­ñňˆY–ÑËÐZ,%å‰%i­°ÌÆTKµR¿òçÿ,|èñG€*#ÃÃð'ÿ膇¼~éü§Ðh6;dú@#"V~‰Ìñ‹Ú]­ÀÏþôO*–_øÍß óq{ÈñGskEÖX‰Ê!È´Óˆã¤gXÿððè5Bà“ñˆ“ ÏaBbi­<&JsQÇqU‚¸¯ïþm`Kyþp¿[3îŠ$±T*)Aà‹—];¡TÁꋯÅEˆÿª(_i³f°&±lŸÛg­D%ª“YT“L}³zÙ>¿ÝLfQûñS·ïŸ~­“Ç÷OÃÜØ\\Ù°¨ŒÖwzxHñ'ÿȲÈ,ï/,)ǯ-*>MŒÃŸ½ÿ.Iýæ•k‘¥í‹É,˜èµÉ,˜Ä“YXXŠ— °°ô¡ÈSx²j ƒ±PtF=“XT} ·×¶ßåå·/§?Ðv9íÎ$±þè<‰%zeÏ_xä~+KZž›¿òøýaû[þ…‘Xb¬ž€ÿûó߃�kõœ]X†üÜ+ðÞÕ»ã­T€I,²0‰EV¦æE½z¬3_5í �51ïLXµoXˆ"“Zo&(FDÌâ°ŒˆÖX†Öz`))O,Ik…e6¦’X¢¿ÿâÏþ)+KZ¼ÿ^ø î?í`µh…¥©ÖƒÚP"sü¢Îé´µŽõ"&¦šplê†Ô|°•Ci§ÇIϰþááÑk„À'ã'%žÃ„$ ÄÒZyL”梎ãªq_ßýÛÀ$–òüá~·fÜñ“XÊów#}1‰¥_~>·r¾>o’y$sž/©¥&à×dU o¶qÌë·á|¾—À¯(õQ ã8"§¾Y½È©¯jo®¯äË4w®›UÛ^wж—Fa9~ zâŠùºptÿùÓwÌe�)uÒ·=7"3õ¹)×õÇ]@Æ&gœêÇ(â«3†N..ÁÞ; ×76a£Ù„×ç¯Áo¾ÿA¶ UªŠn°Z5¶]c½§&ƺCˆõ^}´y]=å(eüÐæ9|<d| ƒINÛ½ÇR&çžQ¬´>†ÓÉS%0¯¥HÛñ®[“t}ÈÂÒ‡ÂOdaésa‹îäC·A4mLíÛ·sH,ÐjÁ{¦á™Ãû!+õf ¾qò4üàâ<¬lÖa×ðÙ »ýÔª2Ÿð#‡÷Á—Nœ7æ¯C+zÅOâNmŸxûz´ßTû‚ eÀ•µ øû_~1¬v3¶¯„ø 2”ÃqßTkˆÀê=5‘úPiТ•)d‘Ä"2··º lc5eßR(‚�ïíÇ”HÛ:úÔ‡’ÐhäÚwûÕçÕ—I,ª’I, ­‚ æ˜ г8,#¢5–¡µXJÊKÒZa™©$–Èð{ï†>õa%¿^oÀ·^ø¼õö;°¼² »&'áŽÛo…g?ò4ÔjòiÏÓ~¾òÜ7àÍ‹kfü¸ 4ÕzPJhú<Z×Z-m^K@æ—?ÖÁaHúa%*‡ ÓN#Ž“ž!`ýÃã×OÆ#NJ$<‡ Iˆ¥µò˜(ÍEÇU â¾¾û·I,åùÃýn͸+ƒÄ|î硲±†g†kVóþ%E]ùã‚™Y¼È@ Ü$3ÿ–Þ¥[9Wøï¡Šò•6+`¦[aËvñ¹}ÖJ’´7û€íÓøÉ,I}³zÙ>¿Ýüd–6ÖÞ±!xdÿ”d{òú*Ü:5*é~ü®ýð¿½vÚ¡Nú¶çFf¦¾7û“Y®¬oÂ+¯Ä]¹¼ªîI†"K¥¢ñ‘øâ'³`> ×v~2 æ#ñÅOfaa)N˜ÈÂÒÇ’¬’èT.¤T"ÐèÁ g‹ªôöÚöỺüöåôÚî §Ý™$Ö¢WñøÆÒ9�YYÚØ„¿õ;_†–A®ç{ðo¾÷üâ§?‡vMHe~ø–ðÚ¥kT@ÝuŸþ‰oÝq z¹´.ˆ‰ñãŽ+ÑIfµã£Ò¾‰hŽwgðµº,9‹0E\· [aéµHÉ—îM§öà;›C!oúå ¤•‘}Šøƒµ»•ø‘QúDPôú"½£ÄÇr{ã)ÐvwÇA¯×ö “X2u` ¦WÛ§›»’¯AN;n¬‚Ƥ֛ г8,#¢5–¡µXJÊKÒZa™m.ÔGOPùØ3O)úååøüßû‡ðÁÙsJìüÊ¿ÿ5øï>ÿ_ÃÁ2Ùôã}Þxó-0ö#—c3õhi”#ºö¦JÙîShâšÎj…ûöÓe*ÿSgÅ­TwÃ(ÒÖAcÞµÂéõvqœô ëœí…k¨Xx’(Kkå1Qš‹:Ž«Ä}}÷o“XÊó‡ûÝšqW‰%–ƒ‡£÷ áyÍ&®?r;ÀþƒhVUtcì$»¾@ɲ•sEq{(__i³f°&±lŸÛg­Ä¿‘ íj3™E5ÉÔ7«—íóÛÍd– ~ÒJ¶ø÷/.Àh­“\ºrçîq¸mj N\_q¨“¾í¹š©ïÍLf¹¶¶¿"èŽðºz-Ü‹\^[‡cñÓÆññ£Cۙ̂ù€^ۙ̂ùH|m-™……¥…‰,,}*Éêˆn[„ô‘J=ôLbQõÞ^Û>|7—ß¾œþ@Ûä´;“Äú#]¾ój‚[wMBV¾øÎ{ðÁâ •jBéÌùÕuøå^…¿÷ég¥2wLïjot"Ü HZØÝ¢ŠôÎí†Úžøì‚ÙÑáøÉ.«õœ_Z…7/_‡¯ºú]ílàäã¥ÿ§Ÿ|ŽLK~?ÿ/Áó‹É¦L�¤ (CáIÁÇoÙOÚ·†ew ÕâW\_¯Ãñ«Kðò¹+ðÜÉK°×½S4ÕÞ¨Mþ‰£ðwË-ÿúï¾ïÌ/Áð@~úÞCðôá=ph×h\‡Ë+ðê…kð›ÇÎÁé…è‚f«Ó$V[í›|‘go…»g'ÂÅa ûg%~Ò¼vaþà½KpêÚ@§vÃLDÞZñç]3cð©£³ðàþ]p`b†Âº.o6àÂÒ:|ÿÜ|éøexÿêj»½êOâ;íUzcÙ‰e. sTv,}^}ôz‘š=ô™³(õ«¦} &ÆØÎô‡Uû¶'‰EÓ„RE4&µÞLPŒˆ˜Åa­± ­õÀRRžX’Ö ËlL½hÞ~K+îõ[Vò¿ô•¯Á™³çâ9=¨t׉ö1ºrõ:üËýoáïþí¿!•¹ý¶[ {9÷ýìOÃO}öÓRþ™sçáo~þãï:¯ øô|þôŸü£’~þÊUø«óó‹AïIf£ÃÃð‘§? >p/ÜrøLŒÃÐÐ`L¹ríüàØ;ðí^„÷NžÊ:‚¿öÿ|äÉNþÝ¿þç½ï¿óû_†ýoUªs—42³{>þÌGàáû÷Áèè(lllÀµë×áíwßƒï¼ø ¼úú›½º+c*Ôÿÿý߃Ãòîµk×á?ÿ«¿/}öíƒÏýÄgà¡îƒ]“°°°ßyù{ð¿ÿÇ߀¥å ëÃO< ?üì3pôö[all ®/,ÄOÓù½/}Þ}ïDìíw×Yΰþá!ÌÙX¸†Šåç0!‰±´V¥¹¨ã¸*ALû3bIwß~ƒ­$¿å&±#ð+@ï„ÿ7šPEËÔAln€…¨¼ú?x ‚sg X^ŒŸö#cÐÚ;â®{¡õøÓ�““V€à@åµW rú$ WC? ƒC ¢§ÅÜz4ÄþC€µÍKºWÞü>TÞýp`e ‚õðÜ}p`bZ‡oqïмïAã &±”ãËÏçVÎÃ7ÂçöY+MÂdÐÔ)SM}³zÙ>¿Ý;Ìòcwª¯úÞù…ðÚí Dd‰ä³wîƒòâ{ä:훆Ÿ¿ï0|ôð šæùåuøjx-ö{ý$,…×)óä·ÎÁÿíKºµp½þáóeh¶ÔcûÿþÔãðôÁ=’îOýÖ·àí+‹J}áÃ÷ÂÏÝs‹d{ìê"ü'¿ýM…Œ0R«Â§o;Oíßwïž„©ð¼8zÝÏÒfN,,Á÷.]…/ž<§—µãçGöÃ?zæqÉß÷.]¿øåoÇÇê·æS°{Xîó®Ü29ßúùŸê¥ÿÖ7¾ ÏŸ»€Xpwxþ“‡£³{`nt&kP×ò˜8ž ãüx>¼Qï<=•É,YcŸƒôm—êC˜çv,™……¥…‰,,ý+BYþzúÔG*hô`Ð3‰EÕz{mû\nt'uÔÚ£írÚIbý!zï|ˆðZ”ˆÉYÙh„©"Küêžj×=Á¥Tàó×àí…d“êêѯ©Óƒ!&Ê´ýì‚_xòA¸c·Jš™7Ò3»à®ðïg‡çN]€ñ½w`¹.ÿ®úÝèPºOqö=ºþúSáM©áA¥ÌÜx5ü†™…?ýèð¿¼ø|íäe€è‰/"AŠ òJ¨ßžÐýÃ}$<)‘ò"BKô÷cw€þÝãð[oŸïmò‰èÝ$Ü7>ç‡îƒ»öL(~&‡j0¹·÷è0|ùø%ø'ßy–6š© }ç�…šˆ¤3R«ÀõÑ£ðÃw¨¾Þ5\‹ÿ"²ÌÏ=|¾yò üχë]<�PžL#uvw(!;P ÌEaŽÊŽå@£ÏTAÑÚÀ$–ŒÛöéæ®äk�ùs”k D4&µÞLPŒˆ˜Åa­± ­õÀRRžX’Ö Ël,,±´×©ZM}íÀÆæf¼†Fk«Dd‰I¡~ðö;ðKÿã?‰uAL  Ñlônî}íëßRˆ,‡ì‡ûçà\xA«½D¤æŒ‰õ©=®Ô%ŠžÒ#±„ëè'?ñqøùŸýŒ)ö»vMÆ·ßz üÄ} ^zåUø§¿ü¯`uuµÓr°î÷ìÓN¢ªîÇ?äg~äSÀÑðb\ô=±æNŸ9 ÿäŸÿáĩӲAªÍB9pÃ#Ãq_<ýáÁ_ý NŸ™Ù ŸýÑGz�þö÷cÒÎÐà üWå/Àã>$áÌî™ ÿž†g?òüû_û˜üÒÞ¥çjÇYΰþá!ÌÙX¸†Šåç0!‰±´V¥¹¨ã¸*ALû3bIwß~ƒ­$¿å&±‰ßBÛëµ°ª)ÓÒ¼*/+•ãoCõWÿÀₚ¹¼•ˆÔòþ»PùƒßÖþ$4?öÉ\ÌàÚø·ÿ‚N©yk«œ õá_å_Ö£OBãg~`pŠèÇʉã0ðk¿ÁüEÔ7„ÕKá´—¿ Õ¹}Pÿ£Ä>õõÅLb)Ç—ŸÏ­œ‡o„Ïí³VR„É, ©S¦>šúfõ²}~»w*™åЮ¸oV¾ýî{ç¯Ã‰!øÈá)ï3G"‹¦NøÞCð Oߥ\{ŽžêrÛ#·ÁO„×Mÿâï½ yòÂÙ+1ᢖzšÚÈ@î ¯3¿5¿ õa%ìä‡÷N)Íí†cWòÂÃ{§Ûož¹”6‰ÿÿ©£‡à¯<vO|6+Óáuçéá™ÐÇ üg…ß;q~éÅ7a­Ñ@ÆOÁ’9æ3ÃÃðù?OíÛ«˜„ýwdb<þûÑ#‡àâêüRxÿí íõÉ,YcŸƒôm—êC˜çv"™……¥Ÿ¥,,ý(Œ?Õë,F=“XT} ·×¶ÏåFwRG­=Úî §Ý™$Öøþ%>PWVÕG òÎÛ`zl$&±T"2Ku þ« Ô¿h„•o}p¾}æ<|óô…ðûExùÜ%i·Û%±Ü?³ ~éG>Œ’X0‰žžò>ñ8LÔÚ•ÝWáCtlÚý™X>w÷!øo?þ0JbÉJtò ÏÜò¡[ÛOH N«‰¿a,< ûûŸzX!±¤e ¼)ù—žºžúÿ³÷�–\W÷©×=9çI£œeå`K¶eã`c’I Ë ì‚—°°»dÃÚää ÆØŒs’,[V´$+§ Òhrα{:ܯ UuCݪzÕÓÓóûI=ïÕ©[çÜ{ë† ÿWuÎâö“iT§bº"–«WÌ“?{ÛF‹‰×_¼\>øÖkdÁŒQãª[ Ñ·HIJlö´ÐßµF‹‰Wž¿DþæÝ×ÉŠ¹Ó2åDÄ’·‹Ãž;kÒ¿Zʈ1‰³oçê£Tù&¹ˆÅR–&P—ÙžLù$òôÙ?_N¥}9J[×¶TÓWÆZÊ—;±ªê+üºÿÀ-Åë_{»,Z¸0±‘ ¥ÕŠ…¤¿±±1yè‘Gã¿o>þ…Ÿ>ñt×é¶íÛeý 4¿·Üx½V’ŽˆeÑÂrÙ¥këî¾÷þîüÍ/ßõö·ÊÿÈE,&nºá:ùß¿úË2}úôn¬2•¯$5?†ß[aüÂÏþ”|ÿ÷|—&b1qî9gËoÿÆÅ'±7•ýË3sÆ 9oõjù/ÿé'­þW­\!?òß yáç~J±¤‰„+ßû®wÈí¯¼µ¿[®*8:lýî¡Ü«kø2[|}ÕðWa@R}ôeMUc toZ±]5@õy¼~±4ÏwbÚ]Ó"CÄTÜú´î½KþöOÍ"–Axƒkà‹Ÿ’Á|HdÌ.’imX/ƒò{F‹1ýãÉ´?ÿƒä‰-yJ–3xa þÝŸE,Æô»vÊô¿þ€;·eÃöu—ú¤÷a¤‘² b™,1'rì¯KöZš9Ùt³2û2^;é¤qÆéùqÏóŽóþî‚ù‹–mc³Uß¼]äWOïÎo&–kŒñºŽîÞWIzÛ]d1–Ý9…*sûyóźàáÅÇd߉“òÍ­ûe,×(Ïš7S®Y¾@Šòô}W­–ÿñªË? ì=íåßx½Ìtßî›7}P6:®Ù¯_±Hk£—/™/³§éçw·¬Z’N3;<¼d‘~=öÐðH¦ ý§ë/“ÿyëÕFKžHHóÖ Ï‘¿|Ã+’²çöÇ‚éúÓV¢yv˜Þò¿õ¹`ÆŒ^&CΚ3[>üÆÛ"Ñ“ZÞÿÊWÈ·¯î=ÉMyöõnúî?~}Ç=¦ˆø]+µ÷•Nã1Î)óÆÙXÊ‘¤ ì™üdýŸSúÜk ¬1”ÉO{Nàžû e7Ae˜¢ d)‰k¢²Ø&[³‹n?“E,É÷G·é \>w¶|𭯓w^q¡¬œ7;ö´ZÉ_[؉Z‚HØ2=·Äö =<Gbð¦Ï‚ðDãÃý¹ÓÍú–*–ÕóçȹåŠÐÇXèj<yíMG\’÷¡Æ¤#‰W‡i¯]±P~ì†K´GûG›Ü~ø˜l=tTF ¿¦û¾kΗWŸ»T¤³s#Îtìû¯»@Κ?;•ûÑØÏÝzIò+ŠøÕý¥ûÂò«¯»RæÎ0ß@³y<oÑù¥W_çS©Î¯ý£Æä¼ö²pýlm›ÃC#²aïÙ\öÒðÄñwÞ|¥ Èx÷¦)3™ ){êC[°@¦Ï Ûúpl² #bIO‹ãMQ—ÙžLù$òôÙ?_N¥}9J[×¶TÓWÆZÊ—;±ªéë±'žÒlÑÓ<þðwþ—¼ý­o–•+–Ž 𻢋_‘#þh‹[Úópôd– —§¯ßsŸæ÷å7ßI2"Žd®ŒžÆ’ŸŸ}~ìÚ½;™£Â9à¬ðÂ×»¿ëmšßáá“òèãOÊ7î{@Ö®A[½º'ž$s]òº¢-[·Éž={ÅÄÎ]»â'©Di¢WýtZj”‡÷|÷;äå7Ý`ÌCô:¦Ý¡ÏüÜ R"ñËŠeË’òvü)½Duð“ÿá‡d``@\¼æU·Ê[Þøz¹éúkŇüÞw¥ÆËJV\¶~÷PîÕ5|™-¾¾jø«0 ©>ú²¦ª1Pº7­Ø®úˆÊ}ökÜ.å¡^ck(n3ûK£Sqë¬_#_ø÷äBÆæãÝÖ³OÈÀW?oÞæÈ!øèÿKž|RÂg°k‡ ~ìÃÙ¼¨rµŒÉ´O}<Üh1/ ÏGoºU‚˯ 'àÜùþÐLû—t+K3±êÅœÈqøTĜȱ¿_ fÑ76ûQùÍÛUA~õôîüfb¹ÆšÓDÌòÃk…ֆוm‡‡dÓÁã†mV:ëñâEså}¯¸T|8{Þ,yçeçˆ+¿ûN ÇOSÉsӪŒ¿ßqãÊEFW×,_Ø­¥Nú«—-ŒÏ½ÓDO£ytç¾nÂÛÏY.?ò² 5ÑuåmG˦ð:óñQýõH—/^ ?qõ¥Ù€ì>1$» ?:í®?>Ôý;‘Š^)ßºí¦ø‰,y†çЛŽŸÀ’ÏJTþ_¾áºðuO`ƒ˜%b+†²›Ç ‚²LAxµœ˜¸mî¶ÉÔ4)Û&w“KvݱDi¿´þ%yó¥Ȳ9YñÙ3䇯½"þÛ~ä˜<»ç@xÒpPžÙ½Oö†¾"?4¹ë‹X’cA÷×Ï?}Ã2Fö‰(ÑSC>öøóòå5/ÉÁð û¬ùså]×^&o¼ìüLºÏZ*W…'Ïì>˜ˆI¢_¨™Êß§SÉ—0öÌðFßÏßz¥vøxçÚMò·>+ûO$B޹Óåûn¸LÞs}öÄêÇn¼XܲWNÆñÚûÀÐà¯X±H8)yÿ3òÀ†rüäˆ\¶|üÜí×Ê幓¦Å³gÈõ+È£;¢Ç]&¯`ŠÊôó¯¼T{bLT?ÿøÐZùÜÓåÀña9{á\ù›.‘·\un&ÝËÏ]"׬œ/Oí<’d1<zÏËΖ«Weùøý¯<)¼¸³ûZ£kÏ^,ÿýÍ×…¾{¿²¿`ñùŽËWÈgžÛžÅ´R†”T›EÄ’µ#bÑˇˆÅ‘ÈÓgÿ|9=–öå(m _ÚRM_k)_îÄuE,QÿòW¿&ozýëdéÒ죙.˜/ïý¾wÅ;vî’çÖ®—µáß³kÖʾýû“ƒÎœ<|[Ú¯ÿ‰z÷ý>,?öCߟyuÑùç®–åË–Êž½ûãôª+|TrëËoÖ²w×Ý÷&ÙOòÛ+n‰Ÿ“æÅ å7~û÷åèÑ£]ÛUW^.ÿó—ß'³gõžNöÚÛ_)ÿô/Ÿ”“ÃÃòý„|ø#—éÓ§ÉÇÿñCZÜŸý…_‘Ñð&Y«-–^±åñâ Ï—w~ç[2i£§Ó|äŸ?!_øòr2œs£ì®X¾T~ú?þ˜Üp]ïI)3Ãã—ïÿžï–þÙ_uëɶ/»äbÙ´y‹|ús_”Ý{÷É…çŸ+ïùîwʼys»i¢¼ýľ·]/Ég>ÿeÙwà€\tÁyòîw¾]æÏÏþ‚oñâEñož_·>Þ[APr|stØúÝC¹W×ðe¶øúªá¯Â€¤úèËšªÆ@éÞ´ÒDЮã3Ï-«Ç®×ØŠÛ̾AÄÒhÄTÜ>Î{ƒŸøÝá¼ùÒzÇ÷Jpõu¢ÂË™›7ˆúô¿ˆÚ¼1“làî;düŠkD{~Æ¿ÒçØÑ¬ÏhÞ|ÓÛDn}­sç‰ÚžÃ}ås¢ûf&Y°ñE¸÷.{ÍìÇþ¢íƒý91ê¬Ùüì/…w{ç§ÁÁ¢þê";·÷l;·I+,ëØ¹Iÿð?HïÃH#eAÄ2YbNäØßoâ#÷n\^3dÊS.?–üæíÙôÅå>S^3tQx-ðÂEú8Úv0þŒžÊ²fïQ-Í›.Z!ðÀúä•{†?}Ó…ñSªó¬ÛwT¾¾i·ì ¯UÎ6(7®Z$¯Z½T–Ìr<M;Ìï踒G¶ï—ï¸ø¬Ìª«»¯ê½–åæUKŒn¢§ž\°`®l8”Ì©Q ܰB½¬;p8#$ù‰k/ÑÒ<^#ÿü [åDxމAÞxþ*yåÙÙ'¡¼ýâÕò×O®MžjcÛb¶WÿÍSkeúÀ€\¶hüàYÍÖ£Çäož^ÛËÇÞöõ‚pëWžµB._”}¥Ò±‘Qùì†M²æ@²?£6·<<wÿ¡+.‘y©ësÂ}½jèë{¯Œ2Aö¾Óksî¾ÞñÃk†Ä9Îi¯˜Š d©Ê|¤‹]vD,º=°§·–¯Êî^­éå Ê[4Õ‡ù8Eº ñM±@†ÇÆåÝu¿üÆ·Ý&Ëçš_pÖ¼9ñß.Lò›Ãƒþ¯mÜ&wnØ&C£cÑ{û„3ikÑÁÖêy³äæ³õ×ÛüÅýË×¼ÔM¿åð1ùà=ÆÇ;o¸ôüLÚè5COïÚß}:Š‘ÔÓX¢4ßvÑJY<+û˜Æû7l—?¸ëÑä‚_û©1GGÆäC<#‹fÏ”7\Ö»·|ÎL¹aå"ùæÖ}II”ù×tÑÓ]~åsÈ {’_D"‘5»ÉmÿôÃo”9¹ÇM^¹|¾|kë ZI>Ï]0K^=ý%Ç}í)ùìÓ%yøXK¶8.¿Çãñº¼˜åõ-—'vŽË?þ½çÚÕZñ“ʺÝG’²KÒžóñKŸ|HþñÇ^¿µÃw^¹J>ýÌŽä¦"–‚¾;;Ò¿Zʈ1‰³oçê£Tù±h1—ÙžLù$òôÙ?_N¥}9J[×¶TÓWÆZÊ—;±ê‹¯ ~’Èoþþÿ…‘ÈÄDô*›èïõ¯yU¼=©$zúÉ]wß'CCCñØÜ»n‘ôïc'Nįzõm¯ÈøŠž¼òÙ/Þ‘ÌÌí1}é’%rÉEdÒ¶øÑLîW®ÐE|ÏýÆ"–Žh5â¹ç×ʇþþ#réÅʦ-Ûdkôt•í;ääÉ“qšèbk¬ µýZ<Áª”Vâ Çw¼E€üÝ?þ³|þ‹_IÊÒ¾è²k÷^ù÷@þøÿþ®œ½jU7í­/¿)Ì×9zì˜$ýÀ¼_¢'»üÒÿø >§{êég䉧ž•¾ÿ·d0÷¤–HðòË¿ödääH7í£?%ü¿­½šhÅòeòüÚu"ˆX<|ÕðWa@R}ôeMUc toZi"h†(+†ë´~Ö ]¯±5·™}ƒˆ¥Ñˆ©¸ý¡‰Hò¯ ç‡ÖÏü¢«’óè¸Û\x™?ó+¢>ø›áG|Nw÷2úÃ?Ù5»¶Këù§µXÁ»H‚Û^Ó[^Îáv*z…Á#dóuï×d앯OÖ•$Ø·G7^xI,b‰n^FçÊÑ‘Iká" ~ð'DÝ÷µð "¼É¸òìp2\%c3gIÿð?HïÃH#eAÄ2YbNäØßÏ@b¼9‰˜E,yÊåÇ’ß¼=›¾¸Üg‚˜å-ëOcÙ}lXÖí=o]W|xë~ykî©- gN“Wœ½Xîß²/t“­ÇhÝkÎÓÏw×î;"yjsr}7L"¼.ûåwÊ¡“òöKÏg±Âü>³çP,¬I‹^†×^Ï?[6>.Éùgòä7¬\,íæ7ZÎóìÞCÉ«…Ú±ÿìѵrûêe²,¼~¼tÖÌè¸|ríæø‰,GGFã×ÈGB;7î›V.•©ùváŒé²<ÜnDZ½Ùh·¡H|22nÝ౑‘î÷‘îµyzÏ~ù˧ž—óæÍ•¥Q^gΔwî’uÅ×î‡ÆÆºâ¢‡vî–o_}vÆïe J¾ï fÉ'Îú1Aö²gòã1Î!f8½AÈS•ùH-»8ìˆXt{`Oo-Ÿù謸|õa,wPPîÜ¢©>ÌÇ']{ç %¾±ÔíGŽËÏî.ùë®7_vQFÜ`âÜsåG¯½LÞ}Å…ò÷O¬•»·ì”n[k¿6çgë7Á¶<"_^»1~EBôËëÎIaô4‘~lÜzÞY²éÀaÙxàˆl Ó®Û$y­P*×6âÛTcãrÛ¹ºxæ£ßZ#Ù§ÆHrðó³O¿˜²DÜžŒ=¸e3Þc[vÇ"– ,KçÆ¢j)9<<&_[·UÞvõ™ôKfÍHD1*9ð{Õyz>7‡åýü³›CŸƒqýtˆ.~ø¡õòª‹VÉÆðÄoCô·ÿ˜<¿çhûQÑ\¹rž,šýÃC/…',»'¾Z‰0&9€“ÍŽÉ·6î‘W\Ø;½xé\Y<kP ‡§aÑÅ®ÂpµC|Æ¢ÀcŒÊ·åÀbÏeA³»Øí*5hvqØsgEúWKù1&qöí\}”*ßé%b±­/(‹ËlO¦|yúìŸ/§ÇÒ¾¥­áK[ªé+c-å˸®ˆ%žsâ“ýdÚ¶c—üâÿ ùÞw¿SÞôí¯ÓyVŸs¶¼÷û¾GÞù¶·ÆO#¹ç‡zW’¢ù±ýýë÷ܯ Y¢× }ö _‡‚ΓÀ¹ùýµB÷…>#qFÐ<FOŽ…(Y"ÿwß{Ÿ9r¬×uÃqæ÷>ÿÅ埪Ò·ÆiZ‰îÄ*d‰^]˜<µ¤³MT'7\wu&]$HùâW¾ÚžË#_mÁ¸œ /ôÝy×Ýò£ïýþŒßk^v¥ÜÿÐÃÉn±ìÇ/|éŠÊÞñÎ}7o–uë^+¯¸,“ö‹_¹SFGRiC§›·l•ç׬“«ÃXiæ/˜×¾.£ÄûꌣÃÖïʽº†/³Å×W $ÕG_ÖT5J÷¦å'‚&çÕjêçKsñÌqoE©˜«1·O?¡Û^ñêXÔ12rRÆÆ’§£EOúœ>MZoý.ÿ»?Ϧ_÷lxW*œƒ§%çu­g >Wœ%Á­·ËèèHü´2Õ>Î }¾ýÝ¢{(zŒY/ýÑ#l|AÔE~¯xÈÄš>C7¾¸NF6¼ c«z7£øÓÏ^-Á÷ÿX/]X¿­á¡ä×úµñ?HïÃH#eAÄ2YbNäØß�™ÃÆÞÍ@Ä,bÉS.?–üæíÙôÅåžêb–7_¢_»]»÷¨ì;~²›§§vÖ$‘¸%²Äu”ªÇè)+ù×õDYøüº²ûؼpà¨?9&Ó[rÎüYñf/¯Ã®˜3S\ÅÚ}줬ÝwXn;'+’¹nù¢¶%z¥Ñ¼XTÒ!нæ¨Cô´–[³%®øð<ôò%ó3¾¢'§<¸m¯¤Û{”îé=3év†åx~ß!OæÛ¨¸W,YnÍyÙkê‹fÎè YŠ>²ko}á ý)5‘°èí»³Æv››60æëxü×±G‚˜çö”Ý'zñ£'áܼB¿&½röìžÃôu ãdï;½6çîë?ˆYÄ9ÎMy1 À! L]Tæ#µXìâ°#bÑí=½µ|棲âòÔ‡±ÜAA¹s‹¦ú0—èö¶P":˜DNŒÊ‡~Jþå‰çå5ž+7¯^%W¬X?ÎÐÆÜðÜÏÝò²XØòO¿Ð‘¥Ä‚K/ÐÒsÓöè.—´¢w‘˜¥}ƒ/ ì91"ßûO_LpâW $éVFT|Ó-h_¼d‰÷/ÞómR†Uóf‹WÝü™êtþ¶ˆe ÉgÌx"TÙzð˜–~ö´ø¦ã¸ÄïB’Ë—ÍÓÒÜ·ag*,ûÀ`ø—”=*[+ô°½í¯ïˆÓÅ" p§ÅõØ>ø»|Ù\Íßm­”{ñíR†³æÍýCÇ£{ƒ±˜E‚œ¨© }fÚá•oËŞ˂f ,v±ÛUj<Ðìâ°çΆô¯–òé'ñú†õQª|§¡ˆÅR¾þ£J™íÉ”O"OŸýóåôXÚ—£´5|iK5}e¬¥|¹«~ùj‹£1=ºyu|h(~ºÈ'>õYyÍ+o•›n¸N®¸ì’Ì«òÌ3'~…Î9çœ-ÿü‰— {©!È<õôsñkˆ–,îý¢ìâ /¥KËÞýÚz”Üfx­Ð×¢× IþTûz“O?+¯í«3é.¾èù›?ý <ûüY÷âyiãfÙðÒ&Ù`§ ]KçÉ^ñE— Ð.dv«&¼(ØR­ø³3Ÿ–qúôéZù?õñ2¬/Îeö¡amÛ±3Ésû)/ÑÜÍÔ»÷î•+%+dÙ¹{&ˆ„¸»BûÕùruŽoÚZøz!G‡­ß=”{u _f‹¯¯þ* Hª¾¬©j ”îMËO6¥zS?GˆXš‹gŽ;1­hªˆX"Z[7i¶àe×ÇO)K^ñ—Ø"aGôú½—‡³Ç`8÷ö~YŒŽJ°c{÷õB­-ºOyÙu2¦ Ïß;DsÒÈȰL›=W‚ó. OV×eóå­‚E]|y|¾›ÆÈÐ üÓß“ÕçÉøùÉøY«EuŽŒ,_)ay¢²F7ÚÔxr~^ÿƒô>Œ4RD,“%æDŽý _ë,ôn"fKžrù±ä7oϦ/.÷T³\µ|^,$ÉóèöƒñÓR:é£ë‘Ïí>,¯Î=eåu,“™ƒñÓ>Òb–K—è×'w’5ûŽÊc;tkrääxü”–áöÏí9b²tÊp|dTžÚuH²Ü°j‘|vý¶8ö¹W½?¾s¿œ5wVrM6äÚÔ«ˆ.]<_fä®yo<x4~rx'Mù™=cqLôŠúè3ÚWÑ«…Ïœæyž¬ ó}îü9òÚsWÊlÃUf†6[3¶Vy'î¥?8|Rݽ/ªÌž–äuó‘£±ýÜyseÙ¬™²jÎl¹bñBíi,Ó¢'ÉXúb–|â¬ód/{&?ãÜ”³�La²ÀÔDe>R Å.;"ÝØÓ[Ëg>+._A}Ë”;·hªóñˆn’XA¤oÅš‰5ã¡ýpxñÙç_”Ï<÷‚ †Ë—,[,W­X"׬Z./[¹<9°ÍñŽËΗõûË[wÇ"º=r1Ï–CGñEG¨Ñ=ø/t·º5×½Ygnܶ‹{ô«ôð&ؼé2kZý)bÁÌi±çXÃb ½’)µ¦uŸžËTÚërq6Ç“§œ„ŸËçêõ³yÿ±XÄÕQ$މž˜ÓŠê3R•DõÑ~úJ”¥V3h×Ḭ˜k?á+UöYÓ’W9 ¨¤}¤)hŸ™ö_8FåÛr`±ç² Ù‹]ìv•4»8ì¹³ ý«¥|“8ûv®>J•‹UÊlO¦|yúìŸ/§ÇÒ¾¥­áK[ªé+c-åËXõÑW,Qy-Ñ‘Fcб£Çä _¾S>ÿ¥;ÂiqP.¾è|¹òÒKã§{\uÅå2Í0Ÿ½í-o” 6Ƀ<ھƒ<>9fî¾ç~y×;ß–IËM7ÄO2‰Ö/[¶T.ºàüÌúèÕEë_ØÎe½ Váÿ>ü-Y»î¹ìÒ‹3ég̘.7\wMü×áÀÁCò̳ÏË=<(O<ù¬´ÁÒvÕ~ú[`­œÔÓX’c‚èõGý`þ¼yÒ½¸dÙEcἚ<¦ýú½–ÛÇckü*ÅV÷þxûuÆôb/¶–Ðb¬ß=”{u _f‹¯¯þ* Hª¾¬©j ”îMËO6¥zS?GˆXš‹gŽ;1­h*‰X‚ÇÓÀ!Í>¶lYFÄ’f4œ$/µ{gÖ×Áý]!Kpð€¾aôÊž”ˆ%! =¥eúª³Då„,­CdL*°`¯}£¨»¾” Ή›7Ê@ôױ͘)ãç_(ãW]/ã×ݘˆtjãÞ‡‘FÊ‚ˆe²ÄœÈ±ÈD¦ÄJ³ó”Ë%¿y{6}q¹§¢˜Åô4–#'Gå¡mû3é…¶G¶Ô„,³ä5ç/•¯¼°«#³œ5OÇD¯+Z³÷°(Cž6:.[ÚOTÑÊ‘[üæ¶}ò®»@¦§®Mw_%&¸å¬ì¹äS»ʵ+É¥‹“FOËŽ^)=æšeú+ˆÖ싞>3œ©Ã#'Gâ¿‹¦Í“ÛW/—«—-’‹Î ¯AûÍsÓÚ×ob„ 91‚” L|2<‘Ý?4,GGFäõ«Ï’Wµ"Ìç|9gîëKÒ´²O1KnÌÊ'Îú1Aö²gòã1ÎM]1 ÀÔ! LY”¶Xìâ°#bÑí=½µ|棰âòÔ‡±ÜAA¹s‹¦ú0‡XìA÷4‹„7°¢CE¿šn…7rÚÂ’0Íš½äùÝûä_ŸZ«¹ß|ùòƒ×_%Ó³ªõï»êB¹óŽ$^¸íŒAýI.Ç#Eô´•ö+ ZñINt“KE¢Žr$òÑ^1î:àîÔ[¸Ý ÇÓcÊ?…FÙŽ ÛįCh—£ÕV­GÙUá?AË’Ívù›a3§éy=ÖOçi4qùÛ¯ƒˆO߃Dt4ÞnÍjß(lwDS}Waz+H]0Ð à1R<FåÛr`±ç² Ù‹]ìv•4»8ì¹³ý«¥|“8ûv®>J•‹Ui•9Y}_½äýóåôXÚ—£´5|iK5}e¬¥|¹÷SÄ’öµüH„˜LsÉÓ:â§z¨H<1&ëÖ½(k×¾ ŸúÜdöìÙòÆ×¿V¾ïÝߥ=äÝßõ±ÐDµçÆŽäk!Kô*¡ÏùÎø‚Á­·Ü¤å-zKöÕ>Éņñ1%¿õûŸþ?*·½âq±háyõ+_ÿ­]ÿ¢üÉŸÿì=p@:@±Ï¦ÝW¥æù†G(WaZç¢cÒ{‚L'‰XÅ60¤•À~±É§Q::lýî¡Ü«kø2[|}ÕðWa@R}ôeMUc toZ~"¨¹yÔÏ"–æâ™ãNLÙJ"–˜“ÃFóø´Ö˜Ñkgé7ûZ£#ÒÕTŽè~ǵ×ý¤ŽÛ¢ãŠú‚ý•>įúÎw…“j8§~õK™§Çh Ikísñßà]_‘÷ü°Œ_p‰TÇÿ ½#”Ëd‰yúýÖP†›“ˆYÄ’§\~,ùÍÛ³é‹Ë=•Ä,‘õͯÐ6›7}P>öî›Å—ï¸deWÈ’Äd¶áúäÑ“£rìä˜5O»Ž ‰» Ûžˆ_tåÒÞ+VÏŸ?-%ŠÑµˆÄâ“'w”W<Ú²DD–¯Û)ׯX¤…{hÇ^ÏÖûŒAù•W\)ßqÑÙÖóZ½>ˆ*G }"CŒpãÊ¥òë/¿>~úJ-,}1K>qÖy ²—=“qnjŠY�¦.Y`J¢´…Àb‡‹nìé­å3}—¯ >Œå Ê[4Õ‡ùøÃb’'˜ä²k¯# FWÈ¢âÔãcã’è)Æåxx±í“O¯—MûÉÿzSö•çÌŸ+ËfÎÝÇNĘáQý7_sfLi?i%±t^= ÚO‰2ÜÉ[üëè nŒÇ8IešFýþùޏARÀö&Iœq•ÚQí×>ŒÆý¨(f’÷Ä_+Ùjßärf3þghD¯Ÿ¹3¦µ_ÔùuxÛ«½¯£Äv~ƒŽ-~‘ëûßÛ Ÿ||cû‰1A¦ìãíýÛ9íhöœˆ~Ý7 å;õ¡-dÚá•oËŞ˂f ,v±ÛUj<Ðìâ°çÎzô¯–òbLâìÛ¹ú(U>D,¥ñŒ¯|6(YD,RËWÆZÊ—;qS"–4ñØ “_¬©ø•sÉͧ¸c*9qâ„|ús_”Í[¶Ê¯þÊÍlöY«º¯ êø‹æÓ»vËšuëåòK{7.¹èB™ÎÍC'†äæ¯Ëø‰n Ýsß½¹,H½°(ü~|è„üÁý¹\pÞgåµ·¿J®¾ê 9ïÜÕí'‚™¹ì’‹äWÿÛûä—~õÿÈÈHûfWP¢R£ùlX¿ÙÕÃïþá'ÇQ&ssyú©(A[¤{ü¸ç{È;¢Þnâ�¶Ä™´A©g>çptØúÝC¹W×ðe¶øúªá¯Â€¤úèËšªÆ@éÞ´üDPsó¨Ÿ D,ÍÅ3ǘ†3åD,!&.iGŽžÔbYcš«Òé ÛÆ>{Kúö' |– š_£ã…7¿CäÖÛEyPÔóÏ„óKÑ;!¬Û‡Êôÿ¥ ÿ§_µâ,)ÿAzF) "–Éóôû¥(¤áæ$b±ä)—K~óölúârO1Ë g/”esêÿ€àÖsÇOµ>4Ô:Ž:Ó´Vf‡jyìç˜é²ã<·÷pFÈ­ºjÙ‚øõE fôž’²ñÐ198<?•åM®êÚo\¹X¾ºq§\µ4ûD–½'†å¹}‡µ6ú›¯¾F^{î cÖ¢×öì;>,»…ñŽÊ.8K–Κá(‡Ïù£¡Oh¾ôö½2è·¿¼ý˜,#áµã=á5}áߎãÇãVü†sÏ.ˆ!‚˜1‹9F/b�;Y`jíAïkÆ.;"ÝØÓ[Ëg>ê*._A}Ë”;·hªóq‡Åž÷žËΗw\z~&Í—_Ø,~r­­äÕ:­äÕ5ñ;®£¿ðBÖ£[wËhø}0wp¼xæôðÄáxÜHö;!ç-šŸYîÂy"›v%Á[©¼¶gµdHIÑþ6Èá¡áXБ~:It@µ=<yo¶Å!©uév‹GZÉ»–â§¢8b'·¹‚ÌgÛ‰XÆTïàmwx‚uÁ’y™Õç-ž+êÅ=†ãÂäµ³¦ȉ“½÷ÔvÎ"»è¿^ˆN$78ž”©ókûöf›¥ÿÉÕÁøÕFÁ@ª í3Óþ Ǩü> ,ö,ˆXrÛˇˆ¥4žñ•Ï%Ë‚ˆEjùÊXKùr'nJÄÍ5ï~ÇwÈÛ¾ãM™õw|õnùÈÇÿU:O‹Ó·ŸÐ?¥%œ{òéäRî‰c‹-”½ûöKW€Òx|íîû2B–HtrÅe—Èú^ŒE-i}â)9pøH8ÏtÅ⇀'O{ióyé#ÿç)z:ÌçŸ+_x¡\uÅerãõ×iOPYµr…¼ú¶WÈ]wß+öAÈVi"û¢rå8rô˜lÛ¾=•Ï ³Q:D<£µ¢ZM‰WûdÞñÔ¹¾Ò>$±%ϤJ7æN–­ÆúÝC¹W×ðe¶øúªá¯Â€¤úèËšªÆ@éÞ´|»ª¹yÔÏ"–æâ™ãNLÙŠ"–Øÿ¬ÙÑ#Å"5fvÅ®" ™79)êÀ^ÝעŽ……KDvlˬvïè¤Ô}F¦[uûÂê¯í‹„©Ñ1À`TŽo«á_ü¾]ÛE¶l ï¾(êéÇÃÉúp~C¼ûùÞ•rø¤÷a¤‘² b™,1Oÿ±?ß"FˆL†›“ˆYÄ’§\~,ùÍÛ³é‹Ë=Ä,oºx¹ôƒÁð¼ë ,—{¾7WÕÒe^7dÈÓ9óg‰“ö6ÑܺOÞuù9™ªˆžÄ²bNöºèúýGã'ƒ?¶ë œホèÚ eþôi²2÷ŠöèµB{ÚO†édñêe 5ËX˜‡¯mÚ)Oî> ‡r?Âxýù«¤°^vË if›lûùÿ®¹\±l=rL¾ºe›l>|4ÎwÇí•‹‰–¾ƒ˜%Ÿ8ëÇ<ÙËžÉÇ8‡˜àô %�S•xLz_3vqرèöÀžÞZ>óÑVqù êÃXܹES}˜7,öv<Õ¾á½;óÄP|›þ»õœ•2->¸Dƒñk€ZƒÒ ÿÇY çk"–ˆ‘ðf[§‘¬Û£¿Ïûå«WJÚ/é²EOsùØ»n—½ý6ùÕÛ¯–÷^{¡ÜxÖbë¾Ê’´ÿ¨Œ/ì=”],]söò8ß­èf]XŽèObÁÆ4™>mš,‰Þ:”µ+b ‚â*ýgÛìùðD*Ï+/X‘Ü S’íÛá÷ås§ËgèVùçï»Y~ëWÊßt^XŸ‹âƒÅè)6kwÒüÝpîÒî«’ò vÅ*Ñò’y³eZXþV«SƒIúNÙ Ê—iÿ…cT¾-{D,¹mŒå›"K‘›Á3˜òÙ dƱH-_k)_îÄMŠX¢…ýÊ´pîIÿ½üæâ18y¢J+Äíq;´­Z¹R±DŒŽŽtsѹ®Ý<ô°öD“—]q¹\wÍÕÙ§Ž„Üõõ{aH+kï<“¬³nîœ9²léÒx•uë7Ⱦr§¼ÿƒ*?õŸ1~Lž‹/<?Á–ªØvÒèé+££Ù‹Ÿ—\tÌš5«=G¥êª=ÇÍ›;Wf‡7[uí§¾ùLåUQåsgC«±~÷PîÕ5|™-¾¾jø«0 ©>ú²¦ª1Pº7-ß®”ßÂR?."–æâ™ãNL[™ª"–˜h²Y}fn=÷¤u“Öšg£ =kœ&²*õ ésuŸAäSžDr>,²e£¾îÜó¥:*>î>zXFwl‹_‡O°«Î¹å•"ßóÃüúûû}×k[¶¶n’rø¤÷a¤‘² b™,1Oÿ±ßÉö¤¿LRçÕ¶¬åο3f‹/ûùy`¯•õ£¾œ×º æk6Z~´Í~TA~óvU_=½;¿™X®1Ë뺼{_%ég=¹²·Â1ü/“~ñ—®ÌäkËáãZšH¨rþÂÙÆ<Eù¹mµMp©—ý…GdÇ‘ìÓÇ®Y¶@{UÐ#Û÷ÅŸ{ˆƒG»ö Ìͼ‚¨Côä–ã©§gGán9KÏ××7í”{¶ìŠE,'FÇd²éð1y|÷™éóÊûÂ>ÕÁãLVõöéË—fVEyû‡ç×ËK‡ŽÆOd9|rDv;!ë–###â¥ï(ϾžqãÑ×;~ÜcŠˆßµW{ßQé4ãœ2oœ¥I ÊžÉÑAÖOñ9ªÏ½;û¼£L~Úët÷\j(»>'L=x" LMlܶIÐ4™Ú&e“KvÝò$–ÄüÚûÙ]ú¯ž—Ξ)¿pË5ò§ßz6<èOBF7ƒÆ[Ý´™7kšüÂí7jÛEªø­‡ŽvóùÀ¦ò×_žIsNx²ð–KΑ/½¸=¾Áÿ =ÊKx@ý½WßtZÆþn:k©Ü9}š|kË^íÉ)Y‚öþNþظC®Z¹8“â½7].Oñ¡ø‰,ñÏÌ»õ¡ä»¯>_~üæKeï±!Y·÷°¬ß{Dîß¼G¶:‘Ü„+8qPéE`Qض ù¾wÉÞ’}gøêEsäm—Ÿ%Ÿ[³S¢‹“J$zåDT??tíêøzáò¹3â¿Wœ»X¾¸fš<øRò+¾§¶”ÃC#2fï1š×œ³Dn:o™<¶íPòÊ¢žŒHfOkÉß¿÷V™7cP^ØsTÖì>"kÂϯ¬Ý“\˜Œ xŒEˆX2_±ìž"K¹ûŽgå³AÉ<#b‘Z¾2ÖR¾Ü‰›±¤·xnÍz-]ôz ÿüS?.ñÿ>,CCí_pGó­’øuóæÍ“ŸûéŸÐ¶ç„mÛvŠtGuÕm´b?=ò¨Üþª[»é¯ºârY¸ û„´C‡ËcO< ?:¢•Nn£W½ç]ï”sÎZ%«Ï>+~úËî={ägÿ등Ññ¸ÕE¯Ô‰ææÈ“O?#+W|›h¥ŽæîÀ=nϘ>]Žç^ qžxê¹é†Þ«¢'Á¼ëß)û·OåžÊ’äå}?÷ÓrýµW˶í;äÅ åÅ—6ʽ÷?$G_û×ï›§ˆXÊøªá¯Â€¤úèËšªÆ@éÞ´|»R~ Hý¸ˆXš‹gŽ;1meJ‹X$™g‚koõš̚Ö#HpË«E•{|ÿð ÜùÝÕ/‰YÆÛB•k®ùÊg²iví”ÖÃ÷ËøË_•ÎB\âÁ/:zw`6ýÜy2~þE…•¡ÆtqÌÀ=_•Ö¦%cöÅ>N¾ïWE-]Þ~Õ`"Àˆ~qÝÍÉ“Y2xÜ„KÂ3YF) "–Éóôûy2‹ˆéâBËOg ((»–$—ß¼=›¾¸Ü§ë“Y^±z‘,L];ìðOl‘ç÷Éf=Ç›/^.¯9?+˜¸fåY5o¦ìˆžnóä®Cñ5âV®qþâ­—Êþò“É+ÞSyú¾«VË9ó\OdÉ–}ϱaY³ïHæ)/—.™/+R?èˆÄ+kÃ4QúCÃ#ñ÷Ë—$çÄÑ“Çßyé9™C£còж}’ßïËgëùÚú^·ÿˆì8v"ޮõ+Éüz½–ÂÖ®Û˜^µŸ9Óã§ã¤9|òdü:¡Ž_4žÁÞ|ãRsxç˜"’ï;<™%Ÿ8ëÇ<ÙËžÉÇ87žÌ0•á‰,0EI‰:(ã×Ô"ÝØÓ[ËWåFw/ÖôÆråÎ-šêÃ||a±fû¸’-á¬ç÷èb–—Ÿ³Bþê­¯–ÿï†Ëå çŸ%¯:{…¼á‚³å§o¹Jþ毓˗-Ö¶ùÖÖ]rbdT:¯9Øtð¨<²e§–î'o¾2<I¹@‡÷AxnÕœ™òs·\!ß~‘þnί½¸­û‹nçÁM|àœüòúŽu[åèpVY~ÍYKä7Þx“¬š?§¿èb[KÞyÕyòC7\§Yæã¶ó–ËÜx‘,˜™¼&!0õÉlXã‚+}â³%ö•onÔÅþs¯¾L~ø†ódɬéÑN OæfÈ/½úyËå+µ´w¬Ùžœš‡e ÷ç'ŸØ˜YEú­·]/oºb•  t÷Íê…³åýo»VÏž?}犕óå»®9[ÞtÙŠîø ŽËxŒQù¶XìY±ä¶1–Ki<ãxV•Ì3"©å+c-å˸iKǸmÛvY³îmÕÍ7^/ú‡¿#?ñ#? ¯í«å¶[n’׿îÕò“?öÃògø]¹ì’‹µm{òi91=ò¸} }¥ âùÚ=÷fÒŸÞj¹îÚ«3¶»ï o€«î¼ÐÙ>âÄаÜtýµrÍË®ŒE,Ë—-“Ÿÿ™ŸŠÅ5±ø¥ý´–K.¾Hn}ùÍZ_|iS¦¶†‡‡ãW$åyã·¿N¦O›.óæÌ‘9ÑEÂöPó™ÏIKû=ßýyï÷¾;ÌÃܶøFÂmæÈOýÄÊ ×]ç霳ϒ׼ú6ùþïù.MŽTêß~€ˆ¥Œ¯þ* Hª¾¬©j ”îMË·+å·0Ô‹ˆ¥¹xæ¸ÓV¦ºˆ¥ËÍ·J0/+D%ƒ÷§Òzâ‘ð.Y8wJë¥õ2íC’zEP›hn}ý[bÁj‡ñ«$¸â-êàg>!w}1¼Ku8ô¦ß³K¦}üÃ2ðøÃZÚàuo”ñü]…iÓµt­çžJ4ÝùZÅyl=÷´ûö$ëÂJö‘IÆ ㎅å o” …Ëêwê±Ï9Wüð?HïÃH#eAÄ2Ybžþc¿<™Å| G˶±Ù*ÈoÞ® ò«§wç7Ë5†Mà“YÞr‰þZ¡áÑqY¿ï¨1}š§vÖlQÄ7_¼¢»ÍŽ#òfïQ-]ôÔ•?}ËurÝÊ…2Æ œ¿pŽüüË/‘ÿzë¥RLÉëc;³O®¡^¸pnw9šì=‘üX$:ïýfûé,^sn¶Ö8?­¤Kubé¯IºbÉ|Ù|øxFÄrÉ¢yò›¯ºVŒ”NÚéŽè±WΙ%7­\ Z–ÏžÙ¶¯ §‰D8Q]í ÏïñP?]ýg¯½J®]fŽòìë]³g_ϸñèëÝüX×uì>×bí}G¥Óx”]™7ÎÆRŽ$eÏäÇè ë§øœÕç^ž}ÞQ&?íu:åŸÌ0•á‰,0e±M†f;"ÝŽˆ%k·ˆXTïËß<ü”üî_%3§e‡Ö¹Ó§É/<G|8^ìú‡ÇžK^Ëi £°-%rÿòçï|ÌŸ9£›6Räÿ5ÇÉa´™‡·ì–§wìk?IDÄyàÖ¹0Þ\‹ô?p÷ãòëoº%“ìáIJô·ûè;9*+æÍ”ÙÓôéä‘­{åéð„(ZRÖ´à:^KJ›Ü|‹òú‡w=-û¯–³z£úùá›.ˆÿ\õóàÆ=òä¶ÉSf$ñ÷‘‡6Èm,—ËV,見Tùÿã WÉ/¼vLv’-Yµ`–æw,<áùÛo¾$ ÅåCÄ’ùŠˆÅ`ŸD"–1”ÏF%óŒˆEjùÊXKùr'žKjëÿ÷•ßúµ_‘™3³ïâŽ^Ýóú×Þ.>ŒŒŒÈG?þ¯½Ÿµçªäµt‰(å™g×Èž½ûdÙÒäâTôj¢ùóæeü|í÷vŸlÒ;Âhÿz(üûÜ—îÿáÈlsÛËo–›o¸N6oÙ&G“%‹Å‘<‡‘{î@³oظI.¹èÂŒí¿÷]ñ_Ä'þý³áßgâ<=óÜù|˜‡ï|Ë»i#û»Þù6yçÛÞ*»÷ì…1+W,—ÁA}.ÿ·O¾÷”›*Ì6KúÙfuý)ûªR¾”{u _f‹¯¯þ* Hª¾¬©j ”îMË·Qå·0Ô‹ˆ¥¹xæ¸ÓVÎKÈèà4üÁÿ(ò×Èd 8zD?þáöB`Í\$bQÑ«„Nö~Q>6>.ßÿc"ïÿõðŽVêWò‘ýÎ/Æ.ŸrþÅ"¯}³ŒŸÎÚ/Õ^AÔzàn™ñà7D½ZNþÌ/%yºýÛEžøVæ)/Áî2ýƒ¿-jù QóÂóΡÒÚ¾µ÷™nÂ0_Ñö…xî,Õ—‘FÊ‚ˆe²Ä<ýÇþ2ðd=ÏéDÝüt†‚²kIrùÍÛ³é‹Ë}:=™ezx ñÛ.ԟƱvïQyhëAÙ}lXß(åë²¥så®9'ùñ]Šï¸d¥üýã›âïûŸ”;6ì–Ëôù§²ÜzÎâø/ϱ‘1™3­èµ<½²kûþøÚntÍÓÄÓ»e^´vïaÙs|X–ÍžaLÿ|¸þÀÐÉl¬°â_<¨ r®_±X>ù]·ËÓ{Ê‘“#rÁ‚¹ñkZã<ÑÖNS«ó†aìü“m¢ïúºWt—ÿÓ]Êã»÷É@¸_·9ç%Uù³o»UݵW¶=&sÃkà7­X&KfÎ7Ž'kXúOfÉ'Îú1Aö²gòã1ÎîOf˜ªðD˜’Ø®+™íˆXt{`Oo-_•ݽ<ZÓË”;·hªóñ„Ří†ö“I^:xXþ÷Wï—áQý—Ò>ŒŒËÞýˆl>t,D“H\}‘ß½ëáðäÂüîMÛ1ÍÆý‡å÷<Ñ.‡¸m:¯è~¶äþM»åŸ¾µÆ˜|ùÜ™rÁâ¹F˦Gåî~ºÛð•3—ml}Õ–6ÎjRGûNœ”ÿõÅGåØp¹úÙ°÷ˆüÎO·ÓD厞¶2 c¡ßßøÂã²ýþ>ÚYá á‹çÈYK”­?ùÆ:yzû¡îrf¥ö5ð£òm9°ØsyÑlˆXt#"–¦P†oŽDž>ûçËé±´/GikøÒ–júÊXKùr'žH‹´Ÿ¶iÓfùí÷0~uNFFFåƒöײeëŽDÙ}’JŠ“\aˆž¸bcý d˶½Wô)’”ö+w~-~EQžiÓ¦ÉEž/×^}•QÄrüøqùÝ?ü#9q|¨-ÝlÿþÝñÕ»ÅÅçŸÛ'£¿øèÇä±'žÒÒEœU+WÄñM"–ûø¦|æs_j÷” Ì6W°¶~÷PîÕ5|™-¾¾jø«0 ©>ú²¦ª1Pº7-ß®”ßÂR?."–æâ™ãNL[9“D,Q̱è|úò+%xû{ÄzõÞ–¹«oà-ß%£¹_~G¯˜UsÃ?òSá Ýìr>£§¹üÈOÊè¸á<ÿ𬾂[EÚO5“³Ï Ëó=ætÑ+Ž^X+­­›"–àß'ãç](n<w–êËH#eAÄ2Ybžþcx2‹ùšŽ–mc³Uß¼]äWOïÎo&–kLkøÉ,¯:o±Ì5ˆ?¢×í=v²0OÑ냞6<•å¢ðzã%‹ÅÉð:ñÓ;ÉÖ•;^Üi‰7$y‰7k÷1n2ÎIßÜ–}K$bY·ï°5ÄÛöª2'w”áõî<gÍ%oº`•¼û²s寕‹cÉáðÚî³{"´S1¯>^7xzïç6—/N~È•ùîð:AÞÇ@˜¯[V.“w]|¾¼é¼sº"–oîØ-nx2‹9†!?_&?æ1È^öL~Œ²~ŠÏa}îíÙçeòÓ^§Ã“Y�"²ÀÔÆ6É™&KÛ¤k²#bÉ®;“E,m×Ñk"Áɳ{öËÏ~úN¹ÿ¥­R†gwî•÷}öëòÀ–]±˜"-bIþäéÝä¿|êëò¢ñ`^çkë·È/~î¾XÕ®‚öÝ,bqHœ‡ð/¼Éõ®“_ÿâ7åÐPñ ÃH)|׺­òŸ?}¿:‘¤ïœ'ÿ#:új`Ëdâ­SOa>ŸØ~PþãÇî•õ»‰w<¿M~ö_¿)G†G»b$ôê{ûáaù¹W¾¾n‡—¿]‡OÈûôcòïOl1”ÃôKæ+"ƒ½ªˆåÔžÄ(Ã7G"OŸýóåôXÚ—£´5|iK5}e¬¥|¹O¨ˆ¥Mçµ?ϯ]'?ÿËÿS|è)ÃókÖɯüÚÿŽÅ%ñt×ÊÎM'«íyæë÷ÜÏm&÷4k‡ÛþÁýyü„”“'ý„7Ï>¿FþÛoü–¬]ÿBW`Ú™÷âW}ãùê׿aÝþÂóÏëæ&J?::.ÿç÷þP>ú/ÿf|-Qž¡áaù§ÿ›|àOþªýèätÙÌÇú¯ÄŠýI,Ýäè°õ»‡r¯®áËlñõUÃ_…IõÑ—5UÒ½iù‰@ù-L�*÷YÃS½ÆÖPÜfêK£Sq'&Vw)u ½f'xÝ›$øÿÞ§¿fÈÄà o{·´þÃÏÈh¸ýx^"‘õ¤¨K.—Ö/þºÈêóÄ‹ëo‘à}¿&ã iâ˜8§×Þ(ý™o@¶¶mN¾Ž…Û¾æ "?úÓ"óŠK–Iðc??Å;• ñBõe¤‘² b™,1Oÿ±ß ë5À#=b}c³Uß¼]äWOïÎo&–klkPÌòfÃk…¢WÒÜ·i¿Œ)G¦Ú¾‡×"Ùf¾¾û–KVt¿¯ßTîß¼O>³v‡öÊ›4Ñ“Xþñ©MrhØ<_˜'‚0ýHx-Û,LÙpà˜ì8:”±“'-×]·>ocâÐЈüóseë‘ãâ"ÊÏGžÝy L>Ï1Îa&{½ïèȈ|þÅ­aYì±_¶tQ÷ûc»öÉg_ÜÖ÷¸¸ˆD,÷m÷!f1Ç0äÇàËäÇ<!f˜ªðj!˜ºØ&7Ó$i›lMvD,Ùugòë„:žã§‚´?Dv–ßûÆÃröcÏÊM笔ëÎZ.+çÍ•ù3§ËœéÓÃñ9<4,»Ãƒ÷'ÂÞG·î’—–``PZ­ðo` g´_s m¿ÑáóŽãCòsŸþºÜ²z…¼ê‚³å²å‹eÙÜY2-Lp"ô»ýÐ1yfÇ^¹sýfÙxàh"F‰.ꉿð’^æ×âÚ7Ê”$7öDÂm£G/(yhËyïG¾"¯»øyÅù+åÂ¥ dñìaÖ‚XÙ¾3<Yy|ëùÚúm²ùà±pû¨ƒI¥ÄJŸ¶íª»ÄõoÎkÛ‰X¢í¢ÊQqvã÷Çþä?ßæq¹¼æÒUråÊE²|^X?-9~rT¶…y{jÛ>ùâ³[eþ¤~ZƒÓâüJ\GaÜñXÇ—ýxxÁð×>÷¸\ºìyÓ•gË5ç,–sΑ93Ãú“džeÍÎCòà†=r׺è¤2ˆ÷c§<Ý{›Z×BÄ’ùŠˆÅ`¯.b±TÅ„  ߉<}öÏ—Óci_ŽÒÖð¥-Õô•±–òåN<Ñ"–žX¤•PÂïÑkþðÿ\V­Z)7^{\{ÍËdÅòe2/œsçÌž-'N Éá#Gâ×ç<õÌsòø“OËÆM[Âé#ˆç¹V{nì>¥,ž"Û®]{bÑÌ•—_–ÉO$J¹ïÁofžÄ¢ùˆr$ƒýø¿~J¾ø•¯Êk_u›\ý²+åÜsÎŽó= %Êãþýå™çž—G}<²D¢ÊV{^êÌ'ª- >ÿü¯ÿNzø1yÃë_¿fhþüyáM®19tø°¼øÒÆÐï@|Ó,zMáxk<>ˆø×ÿŒÜõõ{äÛ^óêøI0«W‡y˜;7·D¯1Ú¼e«<ñÔ3òõoÜ'GŽK„A[x’d aÌS³t’%ó^е™Ó½Ã‚Îëœl˜Ÿ×›ú·µ^³VÅI¼}ÕðWa@R}ôeMUc toZ~"P~ Hý¸ˆXš‹gŽ;1må̱$DB”ÑѼü*‘_¿È·¾)êÙ'D¶m9Þp‹NÚfÏY¾J‚0MpË+E, ·“Ñ‘c¼(ÆÈÉa™¾d™´Þ÷k¢žJTôºŸDHžž2c¦È’¥"]&ÁM·Æ‚5®âíLD¯,š‰SyPäÑEEù;Þ(›6]dÑQ#£½òŒœ”ÁënuÕµ<ö°¨µÏI°å%QÇŽŠ %OŠ™;O$zúÊå/“àe×ÇH€3n½™æ¹³T_F) "–Éóôûû¯ÒóœNÔÍOgÀ((»–$—ß¼=›¾¸Ü“ù5C3[òš –hiÖ…×7<Ñsc­Ç$Ol; {Ÿ”¥³³¯zë¥+åOÚ×rôã»5{ŽÄnÖì="·­^,—.™'‹gM‹ÓF‘çCû=›öÊþ'eIÎW&¬1O<°u¯üÀËΟ:’fí¾Ã±Ï|>´}¯üøuƯ\O³&L¿ïݱ÷”mGNÈ_?¾^®[±H^¶laü4–è)ß‘@gox½û¹}‡BßûäPxùêe ùïäYŠ®¥^ùßxè¨|èéurÓŠ¥rÕÒ…²|ö¬8ÿ#áº(Þþ0ßlo8tDݵO^ ·¹eåR¹há<Y0czxí½%ÇÂy}ó‘£òÐÎ=²éðQ9rÒ÷)±¼f¨hœã5C¦½X…¯˜Â}H¾»>Ër篕úìü ´m¹¿h]ôÓŒÖ 7Ü¿@þàA¿_âÃÔ!}B èÑß;?ùÇ=[:qw‹nìé­å35—¯ >Œå Ê[4Õ‡ù¸ÁbÌv£MÅ·¢¿ñÑÑðsLTxS(~|qô×Vâ«Tº§cÑÍ´ yHç (É÷V¼.Nù/Ô‡>£?Õù‹ýªŽË¶ïžÈ#¾50ØóÙã|ŽËXx‘.Êk´ßL ãF“$}[•—k,w<^NWZ¦>‚TYb1N»,‘€&Ì”ç(fäK:e"!I”~Z{›öIИjÇMêTµã†¾â|F¯@è”+ª†ññn½·ë^:uŸÞWñÍIénûj%¾ÚwFÛþƺeWq~ÇÛyP©6tË-훡±¨&.R´ºg™öŸ;>5-dÛr`±gAÄ’ÛÆX¾3@Äþ3ü‘·k7Ö[­râ3ͯßþï´¦W†oŽD^ b‘Z¾2ÖR¾Ü‰'ZÄÒñÓÓ£Ïñxœ?Õxw>LbÞÇéW終 -I>»ë»ùIbEóÞXç—ß÷srË×gü}ã¾åOþâCáߊûV¾¿uò4®’y7ÎgûXAÛa{ä Ú›ŽÐ¦í»[ã‰Ïd®KŽ’§Äu¶m—1µên7Þ-[¦Òµ¹¼3ŸK[Û+W4.$uß‹å³Õ>îhµŸ�§:åîüI2ždÒ¶RiÛeêîÏö>IÒ¤=½‹<õ»‡r¯®áËlñõUÃ_…IõÑ—5UÒ½iù‰@ù-h<õÈ7™WŸ|âa© "–æâ™ã6+sbbµ#¦âö™3gi¶áá¡xþêFvÄŒúÙ´éÓ%ð¸| _ÌO.Ɉúñ´i3Ú?Þp‰=G nRMóÿÅÀɰ¬é¾ÍiÓ¦M— (Ž‘ˆÅþ45Ï¥úÑ’*Œ·•ƒVÏ-"–fbùÇõuûkÞØÈ¼:ðÞO%G3ŠY´mT*½8Ò+³ÙâË”¯î#gœžŸÀáËä'Д#FGÙqç7o×®�”;(Èo&VàØõ–ý”ØWIú$Íu«Ȫy32ë¢'±Üµao,r̸±øš?s@^y®.ˆ‰žj‰bÒy:wÁl¹|éÜö9T.Oaš“áùÞ£ÛÄ"›ëWeE »Ëc;¤ÒK&O+çΔëV,l‘=džåÑRm.ÉËâYÓåæU‹µô‡Fb‘‹­NÏoX±HÌœ–Ë¡pÎ{l×Y=–¬ž—}àC;öÉÁá“Ýô+æÌk—-Î8804,ìÜ—rœœgG"”W.‘ùÓ³±;ì8v<yýP» =7¬ïÅ Ûç·bl?›•GŽÊkÎ^Ù¶$iö…yxlÏ^1£ Æ”žŸ®Ù³¯gÜxôõn~¬ë:ö\~Œéí}'s…Ó£ìyãl¬À‘¤ ì™üdýÖu9?m»9½}Þ L~ÚëtìígÍýŸÚó*L.LÆôÇ{ä6I~¸ý9–ûSíÏñÔŸJ}æÿIJìúÌÏSx�ÉY`Jc¾Þ„ˆE·öôÖòU¹ÑÝË£5½±ÜAA¹s‹¦úPÆlYìÙnR#{|ÃGIkp0¼q¶±ð@!ºXíê Uàè£%ÁÉ@û†Q«÷$–HàÒ®cs¨Dá×~R‰ŠÅ!J:7É:ÇhA[Œ‘*’›?é§»¨V;/‘€d YŽo# t„AOÐÿš| ÎG+~íN$žè DbtG´ovI»mAŽ´ãªóÔšv^;"¸ÜƒmK§&Ÿ‘Ÿ(^0&kÛ‚V7¯A«÷´—8VRCI^#ÑM+ªûñî~ëÖyûÆe"ði?5&u£N…—­N]‡7í‚0/aR–YÇåºuÞÉÆCÑlÛ²µçl[,ö,ˆXrÛËwfˆXNÊðÍ‘ÈÓgÿ|9=–öå(m _ÚRM_k)_îħJÄ_¡ñü¦‚pœï !ºs“7È<Ù$èˆH;kƒÀ2^wñ…h«£'›´µ1í)3ë£ó”±dÎ ç¦øØ`<žc”&¶Qí9£ÇVJL©²'SV+:ÅŒÊ/ãññØxj¤êl/]áŽ$cmtŒiáO´ÑxgÃίÎv‰(FRBºuDOyé]‹éˆm:eè¸Q²ÄóiG0”ýôÒÆÇ0‘xg¼×QlW:èd«PúÑ=”{u _f‹¯¯þ* Hª¾¬©j ”îMËOÊoá´KsñÌq'¦­L‹+Vw© ft>=<4ž^†­ÌÜØj†çjczÄ‹-á6‘˜&Ÿ DOèìˆ?ÛÓLG0ù/x­@Dô”¶È×@â+™;Ü SÖÈçØØ‰^yÚçcœè¿X�:6Vð:@Ï¥úÑ’*Œ·•ƒVÏ-"–fbùÇ,si§#‹ØnNòd=ÏéDÝü¸ê1åGK’ËoÞžM_\îÉød–èA$ËçèO>Ùw줌«Œ½=ô8<4&ÇNŽÊœéÙ[tgÍ›™²$¾6:.» Ëù gËÒ0öìi‰€rht<¶¿tਜ 癃3ÄŒ=O{Ç¿sìjdÚëöžN/vë0¬D¢î\Ú ö–älÜü¤“áµÚè‰+«æÎŠÅ3ógL‹&Qú¨v’-‡Éh<ØÌÖ‹ íš oÐÓ·Ÿ¬1ÖÍÃ;öÊ9ófËŠÙ³dnXçƒaìèšzôº¤ã!l» m;z<~ŠÌêysdÉÌ2kp ¾ä•!ÓDOe‰>#qN6?îö×Of±d:—ƒ/1ø1Aö²kûË£ýÖü¦ü´í§ôÉ,�S„,0eQÆD,º=°§·–Ï|”T\¾‚ú0–;((wnÑTæã‹=0Û]û:º˜Ö9ªlµ…$Ñ£üÃl­øFI÷—âÉRr;§ó$InÔ¨öµx{ôŽRÛG qE0˜±„â™ÊLDñÍ£Ž¨¤sQ®}ƒ)>aµ ­Ôž +¨IòŸÄ³8 Ò¾™¤Ú¿(—X̑ڳÝWmáÌ@7nT–XŒ3Þ~òKtf4ÖÞ¶Õ®ƒx» ¼DEŽÓ·âWü$þ{ùì<m¦ûôiwÑö/¶ãq^;ÛU(½_ä·zOa‘”Z¹ýÄ–8Z,š‰Ò'už¬Ä;.]îvv÷eûi6ÝРȶÿÜñ¨i!Û–‹= "–Ü6Æò!bi eøæHäé³¾œKûr”¶†/m©¦¯Œµ”/wâS)béŒ$"ÒÎ,Õí·ém‚îtæ·”8#/@ 穕˗˶íÛepÆ,yÏw¿M/Êþ¢mËÖmñëZÑ¢å*B7F”£V?unR%ÿ·$HåËžÇîëï¢),šâZñÇnEªîvAf{ißSKò <Ä>T¯–º%]ÑOgŽìˆX’j0"a«ô¶MŽe$[ïA2¯$7éRi=mçØ©³?%5gwŽ_L{׋‚ÎZ¯Y«â$Þ¾jø«0 ©>ú²¦ª1Pº7-?(¿…Ó D,ÍÅ3ǘ¶2ÕD,CC'´XÝ¥1£×å9uFÌÓkçÉ£ý Éߨu}¾¬ÕÊÓõæ¬þn­0ÞVZ=·ˆXš‰åw²Í¥7'E³ fÉš3û×½¯"¢Ëƒw¼°G¬äÊ®·‡÷lÜoÌS×E*OC£cñë…d¯ÙWdÚulX¾üÂ.)“§èÕ;wlèl£rÛô¬I›K~HñÕ—l1’/6qD´¸ýè‰ø/9é3†“çöŠÿŒãK» í:6$wÛÑKãh§±P4ÜÑ›‹ÿ¬éÛÛDMåÄ訬;{ûCn_E–;7mëœÒ¦‚Šc BÌR4Î!f1ÅèÅBÌgY`J¢Œ ˆXt{`Oo-Ÿù訸|õa,wPPîÜ¢©>ÌÇ{`¶;÷u»\©›U‘J$º1ÔR­äQ”n<qì·2Û$7TúæUêèWµÓuOh»¿ðJ~Q?q%¿vZÒ°t|vNU’'¥$þ:¢î/£[½›iÉñ`ÐQÝÄeH:ÊxÜ•üú<Ú6%†Iï“ö«buÌ`¯|AûI0K7}dOÄ$Ý×IDkr"–îS_âÃÊV[›ÅîùËç7ª¥Rõ¤O7‚î.Pí´‘¯è—ïß›§÷öe禡êí_•ß1¹Íò Ù¶XìY±ä¶1–KS(Ã7G"OŸýóåôXÚ—£´5|iK5}e¬¥|¹OKšŒ�1ú5v«s!%5_ôKw”³X’M•¼ìŠËå—ß÷³YáFŽO|òÓÉ<dçc>Û}´«ÇPA*ŸùÉ©'1æQµçÚ賕”©¥Ò¾«Î…¯Ž %yÍ^®vꩽ}:¾& RN•·‰gå ÐŽMi;önÞ‚|ÚŽÏ’tÖzÍZ'ñöUÃ_…IõÑ—5UÒ½iù‰@ù-œV bi.ž9îÄ´•©&b1Åê.5Ó|0ÝP+u¯íkPOg})k…ñ¶rÐê¹EÄÒL,ÿ¸“u.m_ÑÉœdAÌ¢ç9¨›W=¦ühIrùÍÛ³é‹Ë=ŸÌb}M•¡ìz{pçÉÙ~21Ò¦ ýCK©‘'{Ù{mÎ\‡ù¾S(ŽÈíw½ŠhåN­ë¥÷k§š¡ ì}#8ÊŽ˜ÅCºeGÌbŠÑ‹…˜Î$²ÀÔ¦;æ#bÑí=½µ|棢âòÔ‡±ÜAA¹s‹¦ú0XìÙîÜצö‘ldnnµ£V:]êà,sò&½Í2 ±Ø#9ªQ§~ŒçËÑóÐhôntwƒ#µ‡JïÙmºåëØãÌÉkŒr™ëì§nYÚqS†Ò¾!›zLJ]ÿíšéˆ?TòúžØgê))ãÏ´ˆ%ÝÎ:eéÔO\¾t¥tbt|äŽø2û;% ŠŸL30¨—;ìkªP™öŸ;þ4-dÛr`±‹=¿ÒÛKÚˆˆ¥)”á›#‘§Ïþùrz,íËQÚ¾´¥š¾2ÖR¾Ü‰'›ˆ¥CОkâ'šuœf„¥i_U˜’ä)yªË7\ÛómàÁ‡‘û¿ùˆ´Ú"LGZQ½|¶s2vÿ1—Ëâ+í/™;L¯:êîLþAvì <ê)³.5×çשö±í‚¿ñULÊ\-ˆXÊøòè}ôeMUc toZ~"P~ §ˆXš‹gŽ;1mKsñ:¦†Z©{m_ƒz:ëKY+Œ·•ƒVÏ-"–fbùÇ|siêÐT¤èæd´1‹ˆébEË«S~´$¹üæíÚþBÌ¢»°µŸLŒ´ 1‹«"f1ÅHåG³”j?ZÐÚ£ 1 œ) d©Kw¬GÄ¢Û{zkùÌGCÅå+¨c¹ƒ‚rçMõa>°Ø³Ý¹¯õ‘þs;¨ rb•ÎS;šÓ¿fË×Ý4Hžò’?T’;¢ÍÝèîÜàS©c9É®3–/-þHh¦ü‚––g•öÚ>{ ×½Iíÿsé3™6ôíî ÌöÁ\ÛU¶>ãAžUä$¯iÉ,ÐËg,Gá~Í·åÀb/Êo`±‹Ý®Rãf‡½L»M—#cgßÎÕG©ò¡"KõeøæHäé³¾œKûr”¶†/m©¦¯Œµ”/wâÉ*bé$ë ÿÃW …Œ'£á×_cMòÀ7–?ú‹¿ŽŸ†Ò꼯@Ä’ûÚΧgžL$_æò¾òu•xð÷d„º¦JOëãWÓUžÔ¿%(è¬õšµ*Nâí«†¿ ’ê£/kª¥{ÓÒ­À±yy_“D,ÍÅ3ǘ¶‚ˆ¥¹xSC­Ô½¶¯AË5+½Eå Õs‹ˆ¥™Xþq'é\ª$w½©àæd´1‹O8‚\~\õ˜ò£%Éå7oϦ/.7bs=f·AÌâj§ˆYL1RùÄ,¥Ú´ö£ÅèÅBÌgY`jÒã±èöÀžÞZ>óQPqù êÃXܹES}˜,öÀlwîkÏúè”#',I(åÓæ¾º÷wî—Ô¿éXÎrOÀDL+òO*‘T<%¹m ö_V¼èIòûÚxÃÌÞ·{¦@¯ç~Õhe Êì¿Àc¿æË]\æü»ØíªÝŒvqØõ}ûj)_ Æ$ξmh㦬ËwæŠX,ÕÔ7”á›#‘§Ïþùrz,íËQÚ¾´¥š¾2ÖR¾Ü‰O‹3‘«ñ¤½Ì;[6¼´IÎ=çl™7o^,X9tè°¬]÷‚|ýž{å±'ž–V«ÿ®§±ØÆF‹¥L”keI_=S…Nf«Ž@Ž[¿{Ô¨5ŽïíÏsPªÖMjô†Šƒ›_qükÛ½iùv¥üN+±4ÏwbÚ "–æâuL µR÷Ú¾í籑‡“²[TZ=·ˆXš‰åw’Ï¥J³dÐýd’YòœNÔÍ«S~´$¹üæíÙôÅåFÌb®Çì6ˆY\í1‹)F*?‚˜¥TûÑ‚6Ð~´½XjbìNY` ƒˆE·öôÖò™~ŠËWPÆråÎ-šêÃ<ÿ[ìÙîÜמõQ±|•÷·–‡ˆ¥dùl"ˆÞG`±‹¶µºÝ«-{ˆXLõá,·îD+[ÛžúÐ2í¿p¿æËW\æü»Øí*5hvqØõ}ûj)_ Æ$Îý«RåCÄÒÊðÍ‘ÈÓgÿ|9=–öå(m _ÚRM_k)_îÄgŠˆ%ìð‘£ò;øÇ2>>Þ·tz¹ŠŸ:Ö±´’× "Éš+Ž@Ž[¿{Ô¨5ŽïíÏsPªÖMjô†Šƒ›_qükÛ½iùv¥üªù;E bi.ž9îÄìuD,ÍÅë˜j¥îµ} ÚÏc#'e·¨´zn±4Ë?îd˜=P‚˜%ƒî'“Ì’çt¢n~\õ˜ò£%Éå7oϦ/.7bs=f·AÌRJŒPPvÄ,y‡Ù²›Ç öãÑß3ù1øƒóÔ`ûÑ‚6Ð~´éX�S—–�LI±èöÀžÞZ>óQOqù êÃXܹES}˜ç}‹=0ÛûÚ³>*–¯òþÖ2€ˆ% "–¬15hvqØõ}ûj)_ Æ$Îý«RåCÄÒ<ªÒ*sòþùrz,íK¾Ù þ¾´¥š¾2ÖR¾Ü‰ÏDKBü=m¥ýú Vø½ÕȈXâõí?›?U¬TÞ”keI_=S…Nf«Ž@Ž[¿{Ô¨5ŽïíÏsPªÖMjô†Šƒ›_qükÛ½iùv¥üªù;E bi.ž9îÄìuD,ÍÅë˜j¥îµ} ÚÏc#'e·¨´zn±4Ë?îd˜K õ óuÑÌ&–ëÂÙmRçóJé³ÙâË2”‰X®_f·q_;‹}ú3_+Òò£mlö£ ò›·kû« Üª ¿™X®±Òë~€{_%é7“ ew ¨’íÇâK•h?æÙõÖ6äÙwÜm4I£·¹ü‚}¿+É¥)h§ö6jˆekC޲+‹3AÁ˜’ó#¶1ȾÏ{ûׯïî/¯k¾ídzšÛC.–r$)({íö£mÓ@ûi¯8“@ÈSÛ$ë´#bÉ®CÄ’³#bIçAIn›RåCÄ’-Gq}˜ó‹ˆE7"biUi•9yÿ|9=–ö¥ ßl_ÚRM_k)_îÄg¤ˆ¥ýt•DÀÒŠ…+Ñß@+üVü×~" "ƒ¹âäè°õ»GZóèøÞþ<¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡š¿S"–æâ™ãNÌ^GÄÒ\¼Ž©¡Vê^Û× ý<6òpRv‹ÊA«çK3±üãN†Y±Z)¸9­BÌ∑ʶ±Ù*ÈoÞ®í¯‚r#f±Ÿ—öLþíÇ#»ÞÚ†³c(‹3ˆYÌ1 ù1ø2ù1ïßÛ¶Mí§½àL! L]¬U;"–ì:D,9;"–t”ä¶)U>D,Ùrׇ9¿ˆXt#"–SJÉL b‘Z¾2ÖR¾Ü‰ÏDKz‹Hœ’<%­ݧ°$–Þ+…±¤ÍG G‡­ß=jÔšGÇ÷öç9(Uë&5zCÅÁͯ8þµíÞ´|»R~ }ð7q bi.ž9îÄìhD,ÍÅë˜j¥îµ} ÚÏc#'e·¨´zn±4Ë?î)š+ásÍ£àæd´ 1‹#F*?ÚÆf?ª ¿y»¶¿ ʘÅ~~Ú3ù·sŒìzkBÌbŒ¡,~Ì f1Ç0äÇàËäǼl?Ú6 ´Ÿö:€3„,05±LìˆX²ë±äìˆXÒyP’Û¦Tù±dËQ\æü"bшX²vÇE“&Pe“+×ÊJ°íç²~ôo6ƒ¿/m©¦¯Œµ”/wbD,mJü)É+„R¯žÄb0Wê°âê°õ»GZóèøÞþ<¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿Šm½ˆXš‹gŽ;1ûKsñ:¦†Z©{m_ƒöóØÈÃIÙ-*­ž[D,ÍÄò;ñs`-rçÞi{¶$7'£UˆY1RùÑ66ûQùÍÛµýUPnÄ,öóԞɿý˜cd×[Ûbc eñc1‹9†!?_&?æýÛ`ûѶi ý´×Lu²À”Ç6É&“5"–Ì:D,9;"–t”ä¶)U>D,Ùrׇ9¿ˆXt#"–¬=°U_3” †ˆEjùÊXKùr'>ÓE,iÍJ`ü+ç¯tçp,ÖóÕ3Uèd¶ñ¸êHãè°õ»GZóèøÞþ<¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿Šm½ˆXš‹gŽ;1ûKsñ:¦†Z©{m_ƒöóØÈÃIÙ-*­ž[D,ÍÄò{*zU¿ø\)¸9­BÌ∑ʶ±Ù*ÈoÞ®í¯‚r#f)¾Á˜EùBÌ¢¯ÌåǺ®cGÌbó•ñÓ¶÷¥ý´×Le²À”Æ6¹&“4"–Ì:D,9;"–t”ä¶)U>D,Ùrׇ9¿ˆXt#"–¬KÛ\ÚþÍfð÷¥-Õô•±–òåNŒˆÅ’¨–¿ÒñXÏWÏT¡“ÙÆãª#£ÃÖï5jÍ£ã{ûó”ªu“½¡âàæWÿÚvoZ¾])¿…þ*¶õ bi.ž9îÄìcD,ÍÅë˜j¥îµ} ÚÏc#'e·¨´zn±4Ë?î©èUýäs-¤àæd´ 1‹#F*?ÚÆf?ª ¿y»¶¿ ʘ¥ø7bqä 1‹¾2—뺎1‹ÍWÆOÛÞ—ö0ÅAÈSÛ¤šLΈX2ë±äìˆXÒyP’Û¦Tù±dËQ\æü"bшX²vD,msi?ú7›Áß—¶TÓWÆZÊ—;1"K¢ZþJwÇb=_=S…Nf«Ž4Ž[¿{Ô¨5ŽïíÏsPªÖMjô†Šƒ›_qükÛ½iùv¥üjø«ØÖk€ˆ¥¹x渳±4¯cj¨•º×ö5h?<œ”Ý¢rÐê¹EÄÒL,ÿ¸ ÷ª‰sçäi{6 7'£UˆY1RùÑ66ûQùÍÛµýUPnÄ,æzÌšüÛ9Fv½µ !f1ÆP?f³˜còcðeòcÞ¿ ¶m›ÚÀ! LIl“i2)#bɬCÄ’³#bIçAIn›RåCÄ’-Gq}˜ó‹ˆE7"bÉÚ'PÄ¢DÊCÄ"µ|e¬¥|¹#b±$ªå¯tçp,ÖóÕ3Uèd¶ñ¸êHãè°õ»GZóèøÞþ<¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿Šm½FpD,ÍÅ3ǘ}Œˆ¥¹xSC­Ô½¶¯Aûyläá¤ì•ƒVÏ-"–fbùÇm¸WMäØçsm¤àæd´ 1‹#F*?ÚÆf?ª ¿y»¶¿ ʘÅ\Y“û1ÇÈ®·¶!Ä,ÆÊâÇ bs C~ ¾L~Ìû·Áö£mÓ@û˜¢ d©‹iòCÄ’]‡ˆ%gGĒ΃’Ü6¥Ê‡ˆ%[Žâú0ç‹nDÄ’µûœ\Ÿ:±H-_k)_îĈX,‰jù+¹³•k±ž¯ž©B'³ÇUG‡­ß=jÔšGÇ÷öç9(Uë&5zCÅÁͯ8þµíÞ´|»R~ 5üUl뉢!bi.ž9îÄìcD,ÍÅë˜j¥îµ} ÚÏc#'e·¨´zn±4Ë?nýjÆ'ûqŒÏ5’‚›“Ñ*Ä,Ž©üh›ý¨‚üæíÚþ*(7bs=fMþíÇ#»ÞÚ†³c(‹3ˆYÌ1 ù1ø2ù1ïßÛ¶Mí` ‚¦&¦IKv"–œK:JrÛ”*"–l9ŠëÜ_D,ºKÖŽˆ¥m.íGÿf3øûÒ–júÊXKùr'FÄbITË_É­\‹õ|õL:™m<®:°8:lýîQ£Ö<:¾·?ÏA©Z7©Ñ*n~Åñ¯m÷¦åÛ•ò[¨á¯b[Ÿú›7D,Í‚ˆ¥¹xSC­Ô½¶¯Aûyläá¤ì•ƒVÏ-"–fbùÇm¸WMÔXl=wŽþñ¹VRps2Z…˜Å#•mc³Uß¼]Û_åFÌb®Ç¬É¿ý˜cd×[Ûbc eñc1‹9†!?_&?æýÛ`ûѶéWû˜º d)O2ù"bɬCÄ’³#bIçAIn›RåCÄ’-Gq}˜ó‹ˆE7"bÉÚí'Ó–jP±H-_k)_îĈX,‰jù+¹³•k±ž¯ž©B'³ÇUGG‡­ß=jÔšGÇ÷öç9(Uë&5zCÅÁͯ8þµíÞ´|»R~ 5üUlëB󆈥Y±4¯cj¨•º×ö5h?<œ”Ý¢rÐê¹EÄÒL,ÿ¸ ÷ª‰‹­çÐÑ?>×L nNF«³8b¤ò£mlö£ ò›·kû« ÜˆYÌõ˜5ù·sŒìzkBÌbŒ¡,~Ì f1Ç0äÇàËäǼl?Ú6ˆY�\ d)M2é"bɬCÄ’³#bIçAIn›RåCÄ’-Gq}˜ó‹ˆE7"bÉÚ±´Í¥ýèßl_ÚRM_k)_îĈX,‰jù+¹³•k±ž¯ž©B'³ÇUGG‡­ß=jÔšGÇ÷öç9(Uë&5zCÅÁͯ8þµíÞ´|»R~ 5üUlëB󆈥Y±4¯cj¨•º×ö5h?<œ”Ý¢rÐê¹EÄÒL,ÿ¸ ÷ª ‹éœÓÛo|®ÜœŒV!fqÄHåGÛØìGä7o×öWA¹³˜ë1kòo?æÙõÖ6„˜ÅCYü˜AÌbŽaÈÁ—Éyÿ6Ø~´mêµ€© B˜²$“-"–Ì:D,9;"–t”ä¶)U>D,Ùrׇ9¿ˆXt#"–¬KÛ\ÚþÍfð÷¥-Õô•±–òåNŒˆÅ’¨–¿’;[¹ëùê™*t2Ûx\uDqtØúÝ£F­yt|ožƒRµnR£7TÜüŠã_ÛîMË·+å·PÃ_Ŷ>!ô7oˆXšKsñ:¦†Z©{m_ƒöóØÈÃIÙ-*­ž[D,ÍÄòÛp¯:cqÄ,ö8=?ÊáËy}¤»à¾ÁÝͶ±Ù*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþm°ýhÛÔh?�S„,0%I&YD,™uˆXrvD,é<(ÉmSª|ˆX²å(®s~±èFD,Y;"–¶¹´ý›ÍàïK[ªé+c-åË‹%Q-%w¶r-ÖóÕ3Uèd¶ñ¸êˆâè°õ»GZóèøÞþ<¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿Šm}BèoÞ±4 "–æâuL µR÷Ú¾í籑‡“²[TZ=·ˆXš‰å·á^u ÆbÄ,ö8=?ÊáËy¤»à¾ÁÝͶ±Ù*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþm°ýhÛÔh?�S„,05AÄ’]‡ˆ%gGĒ΃’Ü6¥Ê‡ˆ%[Žâú0ç‹nDÄ’µ—±Xê¹I±H-_k)_îĈX,‰jù+¹³•k±ž¯ž©B'³ÇUG‡­ß=jÔšGÇ÷öç9(Uë&5zCÅÁͯ8þµíÞ´|»R~ 5üUlëB󆈥Y±4¯cj¨•º×ö5h?<œ”Ý¢rÐê¹EÄÒL,ÿ¸ ÷ªS0ÛAÌbÓ󣾜×Kº îÜÝüh›ý¨‚üæíÚþ*(7bs=fMþíÇ#»ÞÚ†³c(‹3ˆYÌ1 ù1ø2ù1ïßÛ¶Mö0AÈg ˆX²—K꣗ςòUÞß¶ƒ¾>”KÖžúÐlÂ…ésuï,Ÿ¡lf»Øí*5hvqرèåCÄRD,RËWÆZÊ—;1"K¢ZþJîlåZ¬ç«gªÐÉlãqÕÄÑaëwµæÑñ½ýyJÕºIÞPqpó+Žm»7-ß®”ßB Ûú„Ðß¼!biD,ÍÅë˜j¥îµ} ÚÏc#'e·¨´zn±4Ë?nýêŒÅÅ f±ÇéùQ_Îë&Ý÷ în~´Í~TA~óvm”1‹¹³&ÿöcŽ‘]omCˆYŒ1”ÅÄ,æ†ü|™ü˜÷oƒíGÛ¦Fû˜b d3D,Ù ŠË‡ˆ%õÑËgAù*ïoÛÁ^ʇˆ%kO}h ¶àÂô¹ºw–ÏP6³]ìv•4»8ìˆXôòMM‹¥º‹Ôò•±–òåNŒˆÅ’¨–¿’;[¹ëùê™*t2Ûx\uäptØúÝ£F­yt|ožƒRµnR£7TÜüŠã_ÛîMË·+å·PÃ_Ŷ>!ô7oˆXšKsñ:¦†Z©{m_ƒöóØÈÃIÙ-*­ž[D,ÍÄòÛp¯:c±†5,b{œžåðå¼~Ò]pßàîæGÛØìGä7o×öWA¹³˜ë1kòo?æÙõÖ6„˜ÅCYü˜AÌbŽaÈÁ—Éyÿ6Ø~´mj´€)B˜ò bÉnP\>D,©^> ÊWyÛòúP>D,Y{êC[°ø¦ÏÕ½³|†²™íb·«Ôx ÙÅaGÄ¢—o*‹X&æ$‹Ôò•±–òåNŒˆÅ’¨–¿’;[¹ëùê™*t2Ûx\­ÃŠ«ÃÖï5jÍ£ã{ûó”ªu“½¡âàæWÿÚvoZ¾])¿…þ*¶õ ¡¿yCÄÒ,ˆXš‹×15ÔJÝkû´ŸÇFNÊnQ9hõÜ"bi&–܆{Õ)‹­XÃ#f±ÇéùQ_Îë(Ý÷ în~´Í~TA~óvm”1‹¹³&ÿöcŽ‘]omCˆYŒ1”ÅÄ,æ†ü|™ü˜÷oƒíGÛ¦Fû˜" d) "–ìÅåCÄ’úèå³ |•÷·íà®åCÄ’µ§>´Ûoaú\Ý;Ëg(›Ù.v»Jš]vD,zù±Ô‹Ôò•±–òåNŒˆÅ’¨–¿’;[¹ëùê™*t2Ûx\­ÃŠ«ÃÖï5jÍ£ã{ûó”ªu“½¡âàæWÿÚvoZ¾])¿…þ*¶õÆQÒï¼!biD,ÍÅë˜j¥îµ} ÚÏc#'e·¨´zn±4Ë?nýêŒÅ…X³˜Å§çG9|9¯§tÜ7¸»ùÑ66ûQùÍÛµýUPnÄ,æzÌšüÛ9Fv½µ !f1ÆP?f³˜còcðeòcÞ¿ ¶mö0…AÈSD,Ù ŠË‡ˆ%õÑËgAù*ïoÛA]ʇˆ%kO}h ¶ÝÂô¹ºw–ÏP6³]ìv•4»8ìˆXôò"KÝ÷ÿ)w‚ ^mû¹¬ý›ÍàïK[ªé+c-åË‹%Q-%w¶r-ÖóÕ3Uèd¶ñ¸ê`áè°õ»GZóèøÞþ<¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿Šmý4K³ bi.^ÇÔP+u¯íkÐ~y8)»Eå Õs‹ˆ¥™XþqîU§`,öÆšÄ,ö8=?ÊáËy]¥»à¾ÁÝͶ±Ù*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþm°ýhÛx´€) B˜’ bÉnP\>D,©^> ÊWyÛæúP>D,Y{êC[°à¦ÏÕ½³|†²™íb·«Ôx ÙÅaGÄ¢—K}T¥U®lû¹¬ý›ÍàïK[ªé+c-åË‹%Q-%w¶r-ÖóÕ3Uèd¶ñ¸ê`áè°õ»GZóèøÞþ<¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿ŠmÝæsƒˆ¥Y±4¯cj¨•º×ö5h?<œ”Ý¢rÐê¹EÄÒL,ÿ¸ ÷ªS0‘\;ñ»Ék?'ñ»žˆ˜Åyä¨G-?ÚÆf?ª ¿y»¶¿ ʘÅ\Y“û1ÇÈ®·¶!Ä,ÆÊâÇ bs C~ ¾L~Ìû·Áö£mãÑ~�¦ YàŒ‹ÍŽˆ%õÑËgAù*ïoÛA\ʇˆ%kO}h ¶ÛÂô¹ºw–ÏP6³]ìv•4»8ìˆXôò!bi”J±±ÔñÓ]ÛG_þþ<ƒ*¯ˆâ…òÙ¢De8ý•ÜÙʵXÏWÏT¡“ÙÆãªƒ…£ÃÖï5jÍ£ã{ûó”ªu“½¡âàæWÿÚvoZ¾])¿…þ*¶õþ»iD,Í‚ˆ¥¹xSC­Ô½¶¯A=©¾L嶨´zn±4Ë?nýêŒÅ¾$¹ñ»Ék?7ÏùHÙUÞG7½%?ˆY1Ä2äGÌùÍÛµýUPnÄ,æzÌšüÛ9Fv½µ !f1ÆP?f³˜còcðeòcÞ¿ ¶mö0Å@ÈgˆXlvD,©^> ÊWyÛÞúP>D,Y{êC[°Ð¦ÏÕ½³|†²™íb·«Ôx ÙÅaGÄ¢—ï̱XvCsT ˆˆ¥ŽŸîÚ>úò÷çTyE/¼Úw‰Êpú+¹³•k±ž¯ž©B'³ÇUGG‡­ß=jÔšGÇ÷öç9(Uë&5zCÅÁͯ8þµíÞ´|»R~ 5üUlëF7õ}5 "–fAÄÒ\¼Ž©¡Vê^Û× ý<6òpRv‹ÊA«çK3±üã6Ü«NÁXìé\9e×AÌbÓ󣾜×[º îÜ™ýåQvUß¼]Û_åFÌb®Ç¬É¿ý˜cd×[Ûbc eñc1‹9†!?_&?æýÛ`ûѶñh?�S„,0åAÄb³#bI}ôòYP¾ÊûÛvÐÖ‡ò!bÉÚSÚ‚í@¶0}®îå3”Íl»]¥ÆÍ.;"½|ˆX¥R@D,uüt×öÑ—¿?Ï Ê+¢xáÕ¾KT†Ó_É­\‹õ|õL:™m<®:B8:lýîQ£Ö<:¾·?ÏA©Z7©Ñ*n~Åñ¯m÷¦åÛ•ò[¨á¯b[7º©ï«I±4 "–æâuL µR÷Ú¾í籑‡“²[TZ=·ˆXš‰å·á^u ÆâҘΙSvÄ,ö8=?ÊáËyÝ¥»à¾ÁÙ_eWùÍÛµýUPnÄ,æzÌšüÛ9Fv½µ !f1ÆP?f³˜còcðeòcÞ¿ ¶mŸý05@ȧ=A`?CÄb³#bI}ôòYP¾ÊûÛv°Ö‡ò!bÉÚSÚ‚í�¶0}®îå3”Íl»]¥ÆÍ.;"½|ˆXº9sÌ••·QRD,uüt×öÑ—¿?Ï Ê+¢xáÕ¾KT†Ó_É­\‹õ|õL:™m<®ÖaÅÕaëwµæÑñ½ýyJÕºIÞPqpó+Žm»7-ß®”ßB ÛºÑÝW#ójI±4 "–æâuL µR÷Ú¾í籑‡“²[TZ=·ˆXš‰å·á^ÕàXÜ÷yÕt¼9ÎÙs>Rv•÷ÑMoÉbG ±^ë‹Uß¼]Û_åFÌb®Ç¬É¿ý˜cd×[Ûbc eñc1‹9†!?_&?æýÛ`ûѶ± ý>÷8• d) "›K꣗ςòUÞß¶ƒ´>”KÖžúÐl®…ésuï,Ÿ¡lf»Øí*5hvqرèå;ƒE,–}ÒW*Å@ÄRÇOwm}ùûó ª¼"ŠÊg‹•áôWrg+×b=_=S…Nf« Ž[¿{Ô¨5ŽïíÏsPªÖMjô†Šƒ›_qükÛ½iùv¥üjø«ØÖnêûjD,Í‚ˆ¥¹xSC­Ô½¶¯Aûyläá¤ì•ƒVÏ-"–fbùÇm¸W‚±¸6¦sè”]1‹=NÏrør^‡é.¸opgö—GÙUA~óvm”1‹¹³&ÿöcŽ‘]omCˆYŒ1”ÅÄ,æ†ü|™ü˜÷oƒíGÛÆ1&�L²À”DwFsD,®¯ò!b©¾¿mg}("–¬=õ¡-ØX ÓçêÞY>CÙÌv±ÛUj<Ðìâ°#bÑËw¦‹X,;¦(©èK?ݵ}ôåïÏ3¨òŠ(^(Ÿ-JT†Ó_É­\‹õ|õL:™m<®:8:lýîQ£Ö<:¾·?ÏA©Z7©Ñ*n~Åñ¯m÷¦åÛ•ò[¨á¯b[7º©ïË;f…;¿ˆXšKsñ:¦†Z©{m_ƒöóØÈÃIÙ-*­ž[D,ÍÄòÛp¯êóX¬š|”ù`=s.²ë f±ÇéùQ_Îë1Ý÷ îÌþò(»*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþm°ýä·±îk€©B8í1=&kìäˆ bçŒWù±Tßß¶ƒ²>”KÖžúÐlª…ésuï,Ÿ¡lf»Øí*5hvqرèå;ÓE,!câå²Oj“ò b©ã§»¶¾üýyU^Å å³E‰Êpú+¹³•k±ž¯ž©t´ÇU|YýUÌ]Ag­×¬kìQÏA©Z7©Ñ*n~Åñ¯m÷¦åÛ•ò[¨á¯b[7º1´ƒñqÍÖ¯yõĉ!)"–fAÄÒ\¼Ž©¡Vê^Û× ý<6òpRv‹ÊA«çK3±üã6Ü«‹‡†ô¹¯o¯2œ Ï©Svƒgǹ|ÎGÊ®ò>ºéÍ fqßàÎì/²«‚üæíÚþ*(7bs=fMþíÇ#»ÞÚ†³c(‹3ˆYÌ1 ù1ø2ù1ïßÛOÚW|/4—;^-S„,0%9yøhoÁqòa;hµX¸hl“­ÝŽˆ%kGÄ¢Û±tœhekÛSÚ‚í�µ0}®îå3”Íl»]¥ÆÍ.;"½|ˆXb†ISœ.¹"–:~ºkûèËߟgPåQ¼P>[”¨ §¿’;[¹ëùê™J7@ûx\Å—Õ_ÅÜtÖzͺÆõ”ªu“½¡âàæWÿÚvoZ¾])¿…þ*¶u£³¯ÑÑiŠx§EÄÒ,ˆXš‹×15ÔJÝkû´ŸÇFNÊnQ9hõÜ"bi&–܆{UCcñÁƒÍ¯Ãߦsë”ÝàÉqNŸó‘²«¼nzK¶³8bˆõZˆXü¨‚üæíÚþ*(7bs=fMþíÇ#»ÞÚ†³c(‹3ˆYÌ1 ù1ø2ù1ïßÛO{ÝØ‘c0•AÈS’{ö'_'¶ƒUÛ…ë@Æ6ÉÚíˆX²vD,ºKljV¶¶=õ¡-ØL ÓçêÞY>CÙÌv±ÛUj<Ðìâ°#bÑˇˆ¥Ë±ÝÒCÇO”Hˆ¥ŽŸîÚ>úò÷çTyE/”Ï%*Ãé¯äÎV®Åz¾z¦Ò Ð>WñeõW1wµ^³®±G=¥jݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿ŠmÝèÆîkääIiŠíÛwx¥CÄÒ,ˆXš‹×15ÔJÝkû´ŸÇFNÊnQ9hõÜ"bi&–܆{Uƒcñλ¤1¢sá‚Ü™sì”]1‹=NÏrøBÌâ:þGÌb‘]omCˆYŒ1”ÅÄ,æ†ü|™ü˜÷oƒí'dtïA˜Ê d)É‘­;œ'¶ƒTÛ„ë�Æ6¹ÚíˆX²vD,ºKljV¶¶=õ¡-ØH ÓçêÞY>CÙÌv±ÛUj<Ðìâ°#bÑˇˆ%³xx³4ű£G<S"b©ã§»¶¾üýyU^Å å³E‰Êpú+¹³•k±ž¯ž©t´ÇU|YýUÌ]Ag­×¬kìQÏA©Z7©Ñ*n~Åñ¯m÷¦åÛ•ò[¨á¯b[7ºqû:QFÄYŽ7¼T˜K³ bi.^ÇÔP+u¯íkÐ~y8)»Eå Õs‹ˆ¥™XþqîU Å7n’Æèœ #fÑÍ_–¡[|oòfé×kº îÜ™ýåQvUß¼]Û_åFÌb®Ç¬É¿ý˜cd×[Ûbc eñc1‹9†!?_&?æýÛ\ûÞ¶G�¦2Y`J½û-zýÛ¡7ZO2l§¶׋mRµÛ±díˆXt;"–Ž­lm{êC[°ˆ¦ÏÕ½³|†²™íb·«Ôx ÙÅaGÄ¢—Kv1Œµom<öó}¨ùõðAŸW b©ã§»¶¾üýyU^Å å³E‰Êpú+¹³•k±ž¯ž©t´ÇU|YýUÌ]Ag­×¬kìQÏA©Z7©Ñ*n~Åñ¯m÷¦åÛ•ò[¨á¯b[7º)öuâøÑÆæÕgŸyÖ™K³ bi.^ÇÔP+u¯íkÐ~y8)»Eå Õs‹ˆ¥™XþqîU0?¿¦¹óUÙ·®gDÌ¢›-¾,C¸øÞäÍ,Ó;®Ûtì7y3ùÑ66ûQùÍÛµýUPnÄ,æzÌšüÛ9Fv½µ !f1ÆP?f³˜còcðeòcÞ¿Í´Ÿ¡—¶ö}^˜L d)ÉÞg×ëFe?(µ8¸Xl“©ÝŽˆ%kGÄ¢Û±tœhekÛSÚ‚í�´0}®îå3”Íl»]¥ÆÍ.;"½|ˆX²‹í l»Ÿ–¦Ø¿woA D,uüt×öÑ—¿?Ï Ê+¢x¡|¶(QN%w¶r-ÖóÕ3•n€öñ¸Š/«¿Š¹+è¬õšu=ê9(Uë&5zCÅÁͯ8þµíÞ´|»R~ 5üUlëF7~¾Ž>,MñÈ·³®CÄÒ,ˆXš‹×15ÔJÝkû´ŸÇFNÊnQ9hõÜ"bi&–܆{ÕÅ?þ”4Åxþ\1‹n¶ø² åâ{“7³hLï¸~Ó]pßàÎì/²«‚üæíÚþ*(7bs=fMþíÇ#»ÞÚ†³c(‹3ˆYÌ1 ù1ø2ù1ïßþ·Ÿãk^€© B˜’ í; ‡^ØÔ3(ûÁ¨í€Áu b›DívD,Y;"ÝŽˆ¥ãD+[ÛžúÐlž…ésuï,Ÿ¡lf»Øí*5hvqرèåCÄ’]l×ÇþµáLs”:áx* "–:~ºkûèËߟgPåQ¼P>[”¨ §¿’;[¹ëùê™J7@ûx\Å—Õ_ÅÜtÖzͺÆõ”ªu“½¡âàæWÿÚvoZ¾])¿…þ*¶u£?_'Ž“‘“'¥)vîÜ)O?­?•K³ bi.^ÇÔP+u¯íkÐ~y8)»Eå Õs‹ˆ¥™XþqîU4?÷üÙ½{·4E GçÄi³èf‹/Ë.¾7y3‹ÆôŽë8Ý÷ îÌþò(»*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþí_ûÚ°MF÷€© B˜‚$ƒü·O•ý Ôv à:@±Mžv;"–¬‹nGÄÒq¢•­mO}h ¶ÎÂô¹ºw–ÏP6³]ìv•4»8ìˆXôò!bÉ.öê#ØzŸHÚO_I|îٵðK?ݵ}ôåïÏ3¨òŠ(^(Ÿ-JT†Ó_É­\‹õ|õL¥ }<®âËê¯bî :k½f]czJÕºIÞPqpó+Žm»7-ß®”ßB ۺѿ¯Ã÷·¿57¯ÞùÕ»2VD,Í‚ˆ¥¹xSC­Ô½¶¯Aûyläá¤ì•ƒVÏ-"–fbùÇm¸WMàXü»ïmkn^ ¶Þo8ÎAÌ¢™-¾,C»øÞäÍ,Ó;®çtÜ7¸3ûË£ìª ¿y»¶¿ ʘÅ\Y“û1ÇÈ®·¶!Ä,ÆÊâÇ bs C~ ¾L~Ìû·?íçØ£ÏfÓLA²À” Õê5åλà¶~ãAQãÊzði;@p˜Ø&M»KÖŽˆE·#bé8ÑÊÖ¶§>´Ûfaú\Ý;Ëg(›Ù.v»Jš]vD,zù±dSõîœñ—îL¬©÷¢¦çȲ˜æ×í[6‡¡T&'¶ý\eøf3øûÒ–júÊXKùr'FÄbITË_É­\‹õ|õL¥ }<®âËê¯bî :k½f]czJÕºIÞPqpó+Žm»7-ß®”ßB ÛºÑM‰z Ò{“§œ59¯~ö³Ÿ—ññvtf¯~=½ú7Øã6+sbbµ#¦âNL¬îRã1Í]C­Ô½¶¯Aûyläá¤ì•ƒVÏ-"–fbùÇm¸WMàX<>>._úòñ÷&çU+Ñ2bÝlñeâÅ÷&ofјÞq]§»`¿É›É¶±Ù*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþ­Ù~ÂJ?t_òªÚ~Í«�“Z4LI¢qûä‘c²å«÷¦­†‰@2׉m²´Û±díˆXt;"–Ž­lm{êC[°`¦ÏÕ½³|†²E bI±dí§HÄñâD†Hà¸^Q—ÈwôŠ…í[6usbÛÏåP†o6ƒ¿/m©¦¯Œµ”/wbD,–Dµü•ÜÙʵXÏWÏTºÚÇã*¾¬þ*æ® ³ÖkÖ5ö¨ç T­›Ôè 7¿âø×¶{ÓòíJù-ÔðW±­Ý”ó‰XFGGŸW<$ŸøÄ'±4 "–æâuL µR÷Ú¾í籑‡“²[TZ=·ˆXš‰å·á^5Ácñ§?óy9tèpãójtNÜzñ‹ñ²~܃˜E3[|Y†zñ½É›Y4¦w\ßé.Øoòfò£mlö£ ò›·kû« ÜˆYÌõ˜5ù·sŒìzkBÌbŒ¡,~Ì f1Ç0äÇàËäǼ«·ŸÃw?"cG7:¯L²À”$’¦ýâçîlÏ ˆXlß® W/"ëATʇˆ%kO}h ¶ËÂô¹ºw–ÏP6³]ìv•4»8ìˆXôò!bÉ.æÚ~ô‹³5ÿ–¬ š;¼ëøÞøÂú$¦)‘’’(Ã7›Áß—¶TÓWÆZÊ—;1"K¢ZþJîlåZ¬ç«g*Ý�íãq_VsWÐYë5ë{ÔsPªÖMjô†Šƒ›_qükÛ½iùv¥üjø«ØÖnÊùŠæ¸=;¶Çß'b^ýð?|$Œ9nIU¿Œ^ýlƒq›•91±ÚSq'&Vw©ñ˜æ‰®¡Vê^Û× ý<6òpRv‹ÊA«çK3±üã6Ü«&x,ŽžÆò±ýkü}"æÕñèÜXYŽs³èf‹/Ë/¾7y3‹ÆôŽë<Ý÷ îÌþò(»*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþ­Ð~ŠÞÿ¥{’5·ùajC ‡)C“F‹CûÈ Ÿü¢aà—ŒÁu�b›ívD,Y;"ÝŽˆ¥ãD+[ÛžúÐl”…ésuï,Ÿ¡lf»Øí*5hvqرèåCÄ’]Ôë#xî£"Ç÷h*ü ²|Óü:<tB6¾°NO¬¤$ÊðÍfð÷¥-Õô•±–òåNŒˆÅ’¨–¿’;[¹ëùê™J7@ûx\Å—Õ_ÅÜtÖzͺÆU~ÆjݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿ŠmÝ覼¯=;·ËÈÈÉ ›WwîÜ)õ×ÿϺ~=˜@ÄÒhÄT܉‰Õ]j<¦y¢k¨•º×ö5h?<œ”Ý¢rÐê¹EÄÒL,ÿ¸ ÷ªS0øÃÿ$»wïž°y5ˆÎŸýgÇ99bÍlñeúÅ÷&ofјÞq½§»`¿É›É¶±Ù*ÈoÞ®í¯‚r#f1×cÖäß~Ì1²ë­m1‹1†²ø1ƒ˜ÅÃ/“óþ-×~ööë2ºÿP#ó*Àd! Lô—¤y¿ð©/É¡7Z�\¶IÑnGÄ’µ#bÑíˆX:N´²µí©mÁv Y˜>W÷ÎòÊf¶‹Ý®Rãf‡‹^>D,ÙEøº­¨g?–¬Í©ð›¹0˜ÄxiýZ9rð ä2Xeøf3øûÒ–júÊXKùr'FÄbITË_É­\‹õ|õL¥ }<®âËê¯bî :k½f]c*?cµnR£7TÜüŠã_ÛîMË·+å·PÃ_ŶntSÞ׉cÇd÷ömñ÷‰œWÿæoþVžyæÙÔšúõ`K£Sq'&Vw©ñ˜æ‰®¡Vê^Û× ý<6òpRv‹ÊA«çK3±üã6Ü«NÁXüÜskäþñ£ñ÷‰œWå¹I°ãÜ1‹f¶ø²Lâ{“7³hLï¸îÓ]pßàÎì/²«‚üæíÚþ*(7bs=fMþíÇ#»ÞÚ†³c(‹3ˆYÌ1 ù1ø2ù1ï_¿ö3ôÒ6Ùÿ¹¯'K Ì«�“ „,0¥0©ð#žýðdz³§6ˆ÷¶ÝŽˆ%kGÄ¢Û±tœhekÛSÚ‚í�²0}®îå3”Íl»]¥ÆÍ.;"½|ˆX²‹†úˆ^ïóè_$kTáÛæ×µÏ>•äIII”á›ÍàïK[ªé+c-åË‹%Q-%w¶r-ÖóÕ3•n€öñ¸Š/«¿Š¹+è¬õšu=ªüŒÕºIÞPqpó+Žm»7-ß®”ßB ÛºÑM…ò…êöÍ/ÅßOżú;¿ûþö+†ê׃ D,FLŘXÝ¥Æcš'º†Z©{m_ƒöóØÈÃIÙ-*­ž[D,ÍÄòÛp¯:cqôJ¡þÑŸÅßOż*EçÊÊqŽŽ˜E3[|Y¦ñ½É›Y4¦w\ÿé.Øoòfò£mlö£ ò›·kû« ÜˆYÌõ˜5ù·sŒìzkBÌbŒ¡,~Ì f1Ç0äÇàËäǼÝí'~îG?›xkp^˜L d)…M…ø¥-òÌß|$1jâ}`m·#bÉÚ±èvD,'ZÙÚöÔ‡¶`;p,LŸ«{gù e3ÛÅnW©ñ@³‹ÃŽˆE/"–좹>‚G> rà…$Eƒ*|ÛüzäÐ!YóôReøf3øûÒ–júÊXKùr'FÄbITË_É­\‹õ|õL¥ }<®âËê¯bî :k½f]c*?cµnR£7TÜüŠã_ÛîMË·+å·PÃ_ŶntSÍ×öM/ɉãÇãï§b^}þù5ò¿ñ›ÒˆX˜Š;1±ºKÇ4OtÍ„íç1T½Xéd}™ÊmQ9hõÜ"bi&–܆{Õ)‹#~ï÷ÿ¯¬[·>þ~*æÕè\¹õÈ“ïÖsuÄ,šÙâË2%ˆïMÞÌ¢1½ã:PwÁ}ƒ;³¿<Ê® ò›·kû« ÜˆYÌõ˜5ù·sŒìzkBÌbŒ¡,~Ì f1Ç0äÇàËäǼíeßó÷ÿ.Û¶'žx œ! x¦ <ןeÙõ×J}¦ÿ"ÛŒèsÕª³<r844,�i¢ñ;š0lÞ&ãÃ'eÉË®p`Ø&?»=°§/sÐè8Ù±PØdlÕ®‰T/"ëÁQʇˆ%kO}h ¶ÆÂô¹ºw–ÏP6³]ìv•4»8ìæƒåâò!bÑíg–ˆ¥õÔߊzá‹ñr«•>¼JN^š>é̯G5>.‹–.óØJ¾Ù þ¾´¥š¾2ÖR¾Ü‰±XÕòWrg+×b=_=Séh«ø²ú«˜»‚ÎZ¯Yר£ÊÏX­›Ôè 7¿âø×¶{ÓòíJù-ÔðW±­ÝTóµkÛÙ·gwüýTÎ«Ñ ¿'NÈ­¯x¹ô D,FLŘXÝ¥Æcš'ºfÂöóª^¬t²>L嶨´zn±4Ë?nýêŒÅù—’Ï|æóñ÷S9¯ÊÁ—¤5>$jÅõí™é.Ù²ÓMí–Ä–Õ5F÷‘ûšß (ȯVBkúÀîÆâË”¯À\±6‡V×–”]tÔ£–mc³s6ŒÍ¥÷+·«¹h Öæho§A‰}ål?Ým‚"“3OÎöc4Žâ™'wكοΙ”F?£­™¹ £¶S[W1nl,¦»ìÅ1q/[–Õ†èž}=ëÆ]‡™ü×¥Œ¶¢yöL²»vOaû‰ zýŸü²ºûáøû©˜WáôaæÌ™ñçŽÛÿV’ƒ¿áögþO¶IB˜rD¶Êœ!Ý“—ƒë7$b–«¯HV©^šÌ¢í&‡fìém7$±äìžõQ±|f»ÇþÖ2€ˆ% "–¬15hvqØõ}ûj)_ Æ$Îý«RåCÄ’µOËøš—ó'/‰­ÿÝsͯ‡ì÷³(Ã7›¡e_ªé+c-åË‹%Q-%w¶r-ÖóÕ3•n€öñ¸Š/«¿Š¹+è¬õšu=ªüŒÕºIÞPqpó+Žm»7-ß®”ßB ÛºÑM5_‘ˆeÏÎñ÷É0¯>ùäÓ}³ bi4b*îÄÄê.5Ó<Ñ5¶ŸÇPõb¥“õid*·Eå Õs‹ˆ¥™XþqîU§`,ŽˆD,ÿ—‹¿O†yUö>˜E1‹1} îl šKïWnWsѬÍÑÞN³66.12)~2F[3s&0F)l§¶®bÜØXLwÙ‹câ^¶,« Ñ=ûzÖ»3ù1®KmEóì;™(ewížÂöz–ýÿöe9pÇ}ñ÷‰šWáô!‹{]àñX–]Y &Y1ËО}²ì†kÚ*Ť9šOò\öÀžÞvCKÎîYËg¶{ìo-ˆX² bÉSãf‡]ß×¹¯–òbLâÜß¹ú(U>D,Yû)±„;)zíI,ñVªÂÏŠY†‡ŽË’+E¿D£ ßl†"”}©¦¯Œµ”/wbD,–Dµü•ÜÙʵXÏWÏTºÚÇã*¾¬þ*æ® ³ÖkÖ5ö¨ò3Vë&5zCÅÁͯ8þµíÞ´|»R~ 5üUlëF7ʨÑë„lOb‰8Uój$fÙ¶m›¼îµ¯©K£Sq'&Vw©ñ˜æ‰®™°ý<†ª+¬O#S¹-*­ž[D,ÍÄòÛp¯:cñøø¸üîïý¡õI,§j^Å,ÇwŠ:û’¾¡™Ë¸oNŠ fɯÔrd]gphumÙA¹ÃözÔò£mlöcΆ± ¹ô~åv5mÁÚíí1‹acãbP#“Òè'c´53Wac”Âvjë*ÆÅt—=°ø1&îe˲Úݳ¯gݸë0“㺔ÑV4Ͼ“‰âQv×î)l?’ÌÞ{?üI9ô ó“Xâmx ä@Èâ^x|–e×B(…yà2¯ÚûÄ32ïÜÕ2sñBËIž8ì=½í†"–œÝ³>*–Ïl²‹^ûKD,Ycj<Ðìâ°ëû:÷ÕR¾@ŒIœû;W¥Ê‡ˆ%k?µ"Ù¿VäþßÙùh¼x*N^Šæ×è5Cûöì’¹óÈŒöAsº ®và‡²/Õô•±–òåNŒˆÅ’¨–¿’;[¹ëùê™J7@ûx\Å—Õ_ÅÜtÖzͺÆU~ÆjݤFo¨8¸ùÇ¿¶Ý›–oWÊo¡†¿ŠmÝ覼¯ÇŽÉæ×ɑÇâåÉ8¯®[÷‚ÜsïýrÙe—ÈòåË¥ ˆX˜Š;1±ºKÇ4OtÍ„íç1T½Xéd}™ÊmQ9hõÜ"bi&–܆{Õ)‹Ÿ{nüÏ_ýßòðÃߊ—'ã¼½f(Øñˆ /™µÄr/2÷ÍÉØ£ÑnIlYm¿1ä}便7@Ìb‹‘˶±Ù9Æ‚æÒû•ÛÕ\´ks´·SÄ,†‹AAŒLJ£ŸŒÑÖÌ\… ŒQ Û©­«76Ó]öÀâǘ¸—-ËjCtϾžuã®ÃL~ŒëRF[Ñ<ûN&ŠGÙ]»ÇÕ~†7n•ñOrü™õñ2"ð!‹{]àñX–]Y 4E'/ÃɶoÜ/,ºüÉ7sóÉ_´Xìb¿!ˆ%g÷¬Šå3Ûƒì¢×þCÄ’KÖ˜4»8ìú¾Î}µ”ÏwŒJÉÕG©ò!bÉÚOˆ%~ ËsõÐÿ töǶSyòR4¿ž–[6ÇÖ…‹—tÏ5]íÀe_ªé+c-åË‹%Q-%w¶r-ÖóÕ3•n€öñ¸Š/«¿Š¹+è¬õšu=ªüŒÕºIÞPqpó+Žm»7-ß®”ßB ÛºÑM9_ѼºgçvÙúÒ‹2:2Û&ó¼ºwï^ùÔ§>+j\ÉM7Ýà•'D,FLŘXÝ¥Æcš'ºfÂöóª^¬t²>L嶨´zn±4Ë?nýj‚Çâè),ÿ÷‘ßþ÷˾}“ÿ|5>§~é+ÉUeW[n â¾9{4Ú-‰-«í7fƒ¼Ü×üˆYl1rùÑ66û1gÃXÐ\z¿r»š‹¶`mŽövŠ˜Å°±q1(ˆ‘Iiô“1Úš™«01Ja;µuãÆÆbºËXü÷²eYmˆîÙ׳nÜu˜Éq]Êh+šgßÉDñ(»k÷h~ÂÉêàç¿&»þî_eìБ؄ˆÊ0Õ„,¾­¼p*Ë}w}–åΟI´2ж äþ¢uó£Ïn¸ùÈáÁƒ‡ Mt¡Rig*<ÑêÙf.Y,|Çäìo»=y§j/Yn«Àbû D,9»g}T,ŸÙd½ö"–,ˆX²ÆÔx ÙÅa×÷uî«¥|“8÷w®>J•KÖ~ŠD,ÑÎyñ ¢Öü›Èñ=Ýt“åäÅg~1s–œwÑÅrÖêó²YVR6š}©¦¯Œµ”/wbD,–Dµü•ÜÙʵXÏWÏTºÚÇã*¾¬þ*æN¹ õšu=ªüŒÕºIÞPÁ—5UE_Å›–oWÊo¡†¿ŠmÝè¦D=…é½{dÏŽí22r²k?æÕ•+WÊþÈ{å{¾ç]í|›üˆ-‚4 "–fbu—ižèš ÛÏc¨z±ÒÉú42•Û¢rÐê¹EÄÒL,ÿ¸ ÷ª ‹#˧?óyùØÇþUvïÞݵŸN󪚽LZ—¿[Æ/zk|ƒT¿·h©ÃÌ=G¥Ù ¹±ß3r>Rvã• G5ùÍø‰Ó‹#½2›-¾LùêÖ3NÏûƳrßWvÔ£–mc³Û½f-N †ôÅå ò›‰8v½e¿%öU’Þ1fÊ®·wžœíÇâ+(Ñ~Ì1²ë­mȳï¸Ûh’Fosùû~×®l´S{5IJŽAö²?f”‡ .+ðìë7}½›뺎=—czöãÙNÍí!JÉ‘{’_¾GFìš±@Y.\>öØ#·…ãáßáöçXîOµ?ÇS*õ™ÿ˲ë3ÿ=k]ŒoK<ןe¹ó‡úŽùä%^“9™>oŽœõª[eùÍ7Èü ÏÏ¥ÔoHv•-n` i½x;ì²§W™Þ6&»2nšú’:Œ7_»²Ø³ÝZ½Xù�ý*ŸÙd½ö"–,ˆX²ÆÔx ÙÅa×÷uî«¥|Ú©°aÂú(U>D,Yû)±ì_+ÁÖûdü¥;E†tÓ˜N\â­NáÉ‹ïü:mú4Yuι²lÅ*™·`¡”Œb_RRËWÆZÊ—;1"K¢ZþJîlåZ¬ç«g*Ý�íãq_Vs§Ü†zͺÆU~ÆjݤFo¨àËšª¢¯âMË·+å·PÃ_Ŷntãç+z…ÐáƒûcËèèh×~:ϫх©·¿ý;åÛ_ÿmrõÕW¥¶·z–&AÄÒL¬îRã1Í]3aûy U/V:YŸF¦r[TZ=·ˆXš‰å·á^5Acñsϯ‘oÜ}¯|éËwÈ¡C‡»öÓy^•ó$¸à ¢Îy•ÈâK³I³èf‹/³¡Æ§çÇ}ãY9n$‹³µüh›ýùÍÛµýUPnÄ,æzÌšüÛ9Fv½µ !f1Æ,~Ì f1Ç0ä'e~i‹ü9üÀ£2vôxwõdœWáô�!‹{]àñX–;Y \'/‘9¿næâŲøŠKdþ…Èœ³WÅOm™6ož´¦OïN®kgˆXòvÏú¨X>³=È.šêCË�"–,ˆX²Ævû7ÚÅa×÷uî«¥|Ú)°aÂú(U>D,Y{“"–ðŸ±a‘¡ð¸åØîðpr³¨}kEí~:óô•Ø[ÐyÌëä<y);¿FOiY´d‰Ì_¸HæÌ+3gÍ’Ái3¤5Ðý7pʾdiÛŽœÚ­¥|¹#b±$ªå¯äÎV®Åz¾z¦Ò Ð>WñeõW1wÊm¨×¬kìQåg¬ÖMjô† ¾¬©*ú*Þ´|»R~ 5üUlëF7†v0>.££#2rò¤ 8!'Ž•£‡ÇËi¦Ú¼=¥å¦›®——]u•\ž»žuÖ*Y´haü8á hI?êÝßÌ’LˆXš‹×15¶ŸÇPõb¥“õid*·Eå Õs‹ˆ¥™XþqîU}‹£¹fhh(¾Î¾sç.Ù¸q“<¿f­<þøS™§¯DLµy5~JËò«E–\ÞuX-2g¹¨á ¡ú×Ìg¥ÙM1í7’s>Rvã•!Gµ"f1×£–mc³Ÿ  ¿y»¶¿ ʘÅ\Y“û1ÇÈ®·¶!Ä,ÆÅÄ,fÂ9'</?zLF÷”“;vÉðÆ-r|íK2–zúJìo’Ï«0ùAÈâ^x|–åÎBhŒÎɉ²ž]æù���§›ò>¢sÒ2YN^˜_�`²Ã¼ ��Ð?˜W��úÇé4¯Âäfª Yà "=ЛO^‚Ô»Æ{'9óË+��8S‰¦§Þ¤|ê{æW��˜L0¯��ôæU��€þqºÏ«� B8#)>‰SuÓÚÁÇ ��”!0?OÔsÛɯ¾g~�€‰„y5NÕM˼ ��u`^SuÓ2¯�@¦ú¼ 0 d3Ó ¼ÎD‚”��hŒô\uºœ¸0¿�Àd…y�� 0¯��ôÓq^h„,pÆSý�� ¦‚êžù��& Ì«���ýƒy�� ðô�;Y�R¤'ŒüÉ '3��Ðù“”©xÒÂü ��ó*ó*��ôæUæU��èg¼ ÐO²�X(;pb��&Šæ“3í„…ù��êÀ¼š…y��êÀ¼š…y��êÀ¼ Ð_²�xRôÈI& ��(‚¹B‡ù��ªÂ¡Ã¼ ��UaŽÐa^�€ª0G�Ô! @ |'"Ôù��SNLú ó+�À™ ója^�8³a^í/Ì«��g6Ì«�B€ €‰ �� ÿ0¿��ôæU��€þÁ¼ ���P–�����������������L²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤�! ����������������L ²����������������À¤ÀWÈ¢���������������� ^ÚžÈ����������������“„,����������������0)”É ¯4���������������è“Z‹ÁY����������������`R€����������������&M Yx%���������������ÀÔ¥mHÓOdAÐ���������������0uhT «…����������������`R0(“žê���������������PŸI¯Áà‰,����������������0)@È����������������“‚S%d)û¨^/���������������PÓB«1(S„.���������������p&3%´¼Z����������������&Y����������������`Rpº Y”§ ���������������àLã´×UL”¥Ÿ•¢r����������������Д®bB4¼Z����������������&§BÈÂST����������������&?®ñà‰,����������������0)è·…§­����������������œ9ôU+2(“‡ªC<���������������PMC¡di/&Ë«…Tîû¤ª$���������������€)„I›1)t-dQž¶ô:-����������������õ)Òa”ÕuôSýDßÂŽKV ”W!v��������������€3™´†Âô7^ÒÏ)¡BUs}ÙX6 b���������������81i(L¯êWœªë )#d)L5¼>—.Šÿ ���������������˜êô4‰fBJk-[_9ýD¾Z¨©'¦Ä~•R‡¢O„,���������������p&ÐÑHt4Ò°6c"˜H!Kš*T{ø7¾+Z@È���������������g=D¬™p½F¨Ÿ:FiBÈRµ Êó/Ÿv<ú—-ÑŠVëTis����������������&ŽŽF¢­™èj(Ä®±(Òc”¥ïb—S¡úP†eåXŸ'_éã±q|ì…èsppP����������������¦:DG3!M…ƒ¼^C9ÖO§úñ%ý(ðXäçĉã룅���������������˜êt4mÍD¤Á“úL¸x%M¿„,EïXªSH›â'£Ú¹sûóÑçàà@êP����������������SHi$":š 1¿Z¨CWu¶OÚÖ×b¢ŸÈâó !Û»˜ÆÅü>§hyìhH¸øPä€× ��������������ÀT¦§P%š‰øi,&M…Ika»tðÑw4BY!K“™óy×’Ê¥íüFÆáááoDŸÓ¦M���������������€©JGÑÑJH¢0 T|´MëA¼iê‰,ªäú¢å"¢1¾{÷žxçLŸ>× ��������������À”$ÒDDÚˆˆ¶V"zâÊh.YÓÚFÄ/ùj!UÁž~ÔMç/¿¿Z(úܳgçžñññ;¢§OŸ.����������������SŽ&b||üÎH+!)í„è eX®¢á˜ú)dñ-LÑãkÊ<â&~$ú<zôÈg¢3fÌ���������������€©FGqôè‘OKJ3!fÍ…Mƒaµ”y-Q‘½4U„,ý ^å‘4ù§´¤UCÑNá…u„æ‡Z­�1 ���������������L)"-D¤‰ˆ´‰F¢§™¬–"¯³pQVÃáKi?M¾ZHyÚLv[¥¦+7ÿ=J2ú~øðጌ3gF;o"ßž���������������Ð ‘"ÒBD´µ‘^"ÒJt4"fm…íá!iÊ<m¥oO`ÉÓo•G¡Ší{Q˜žÆÒùÞy*ËÃcc㟂 Ü3���������������àt'Ò@DZˆHi#$û4“ŽÂõš ŽÍ¥á‚í]öÿ¿½»ùã¼8þì,—”Mª Ë•Ñ(Z¤i zjÑ[{é½ÿAÿˆEmùr—kÉ)òÈ ÀÄâCœØ–,‰b”Hînøh4š—gfg–Còó;ó<³KJ¼~ñ{z¹ìq%©ÿauãnʵÐòôõ4Þøá_ av¸»»»»»�������ઊíCl b qÞDœµ±‘ˆ­DùÔ›\[wQ|®êzëú†,©¿tÓ?¾­âY7¬— ¢â$–FÇÞxxxø…ø¡W_}%Ìçó��������pÕÄæ!¶Ql!b.úˆÖR55åë¶è¥I¯ f“ºc–¸Wu]õ^~®¼V~.¾Çg]ñ=qmçѣ߻sçO²,ûûprrÖëK ‡��������’eYö÷÷Oßg±{øÚÏþΗÃy¤ò4<VН^<V¨xÌP]ÔR¼¯Òu½·m„,ÅûªX¥¼ß°¬k>[¾Ïÿ£çÜÿÉÝ»ö7§пœÏwÂññq��������˜ºÙlv±ììÌÃz¾ÿÎ;?ýÿð<b9/O^)G+Ÿ%„´i,]×µéy;³ÄõM¦²4=Sõsó -«‹÷ìÉ“?üðõ×ßø‡ù<»k2 �������0uù$–óˆeýö½{ïþÏÑÑQ XŽ.^±‹X†ƒ•â«8‘¥*`©›Æ’¹´éeŒ²TíuÊR÷=ÅgÚ>ÿ0Ùéòäøxùƒ×^û“ÏŸÇ,‹°\.Å,�������ÀäÌçó"–÷ßÿÍ=~ü»ß‡ó),ÏÂyÀ’Ç*å©,!TOg)ï…Â}YÊÚ(ÑŦ!K4ÖT–¦#†êÖÖûñ2?<üôÙ“'øÎë¯ßù«xÌÐÞÞnX­ÖgA �������Àìîƒýe³³ã„îÝ{÷¿?þÝãÓ­“p~¤P±ä¯|*Kù8¡ªé+uË$¦±Dc†,U{uSYò÷Ô©-)?«(þÑâd–åýû~ûÍ7ïîgYöùÅbqú‡Ÿ›Î�������\ªx”Ð+¯¼nÝÚ;»_.—_}ûíŸþßÑÑQœÀ'±TE,ʼn+UkmG ¥Ä,Uk£EC„,ÑÐSYò÷òóëšµªï/[^ìg|ô£Ï|æ÷‹Å?ÏçÙ"ÖLg˜Î�������lÙÞÞ^Øßõì(¡f‡‡‡Ïþ÷g?{û+Ἁ8 ç˪æUŽXBxyBKq-îC¨R¶>%;d©Úë³Ô]¯KÏ®žYÖO.îç=øÕÉÉê›·_˲Ùç‹°»{^5­V«��������0–Ùlv°ì‡ÝÝÅÙýr¹þÆüö?ýë÷Þ ç}C Xž]\çÓXòëªI,!¼·äÊSXÊKÝ{ùºê~P³0œÔ˜¥íºî¨¡ªëìâ:+Ü×ògç¥õÓ×­‹õÙg?û¹¼}ûöœ^þSþˇãããprrâØ!�������`c1VÙÙÙ ‹Åâ,^ynýãO>ùäK÷îýò'áy¨#–8°£¦”–bÈÂËKSÀ’¯4E-!q/Ùe„,åûº),]–rÈ’ßÏ ÏC–|=ž)´—?ƒ–ýýƒϲìß ¿K89Yž;£–8­%†-ù ������� (+ù+˲³xe>Ÿ_ôÜjµúÖ§Ÿ>ùz!`‰¯8å(¼<…eUxf™E¨YBH WÚŽê2er!KÛ÷mrÄPט¥¯ïË!K¾c–üÙ7ß|ëÎ;oüëÞÞÞ¿§´��������lfýãgÏž}ïáÃGßýøã†ç‘Jœ¾ò,<SÊ!Kù(¡â}Ý#–¦÷òuÕ}ê^'C‡,mß9vÌR~§³dá帥½Ä -‹Âz888¸ýÖ[þw·nÝúÛ,Ûùë, qºuw6›½vúw¸Æù?�������®¦u³§ëõúñéåýÕ*üfµ:yïéÓ§ï~ôÑoñäÉ“Ož?wŸ‡ó ,å8¥­ƒ•rÜÒç¡ÉE,Ñ”B–â}ט¥j­jKU¼R¿Ä‰-‹‹÷yhnŠûY¨×çÿ[(�������Ãé^4}fUz®-Y^¼ŽCõÄ•ò1BUG ï›~nŸˆ%å>u¯³±"‰M§²¯7‰ZÊJÕÇ Õ=—¿Ï ¯ª#ŒŠêB–¦À¥L¼�������`t]"ŒUâzÕ‘?ËÂkUú\Ýt•âD–¦çBvË¥E,јÁĶc–ü½)j)Ne áå¥*d™µ|Vú}ëþÝ©ÿ×"�������ØžÔcݰ^Ü[•ž¯;ꧨ÷Ë{別éû»¼7]Wݧîõ¶ÆáYâ^ñ>ÿ‡Î ëÅ÷²¶ý¢Uéùâwd¡ú[²”÷Pñlq-! �������LQ×¥*ö¨ YŠ{M!Kñ¾|]÷ -ïMÁJÓ¿£é>uo#Ûˆ&úNf)Þ9¥%õUþ¹YÂuÊïÛFÈ�������Û³IÈRµ¶J¸.G')¯†›¾2Ɉ%ÚV4Ñ%f)¯m±T½W…(©G Õ}oÛï\¾n"f������€ñuXÚ®Û"’¶#†ŠïÅëõ@ïM×Mk){ƒØf01븟³T­uÖR QR'¯4*³Ðè´³�������ÀxºDuÁGÓ$“¦#‡êb•ª ,}ÞÛÖÊ×U÷¡ãþ ¶K ³¯û.QÝ–â^y¿îùºŸ*ö������€é[·¬×Å#)QKÓ„–ªŸ‘¬¤N ÷¡ãþ`.+ªèrÔPJÜÒwbK~]ŽT²†çšîCÃ~hx6…��������úëc4E,]¦±TÝG«ŠgºF*]¦°¤Ü§îâ2ãˆ1§³¯Sc—¬æ{²†ïo YêÖšÖS‰Z������� Ý¦!FÛ4–ºµº %ZuXròÊd§°M!ˆz:KñºÏþ,ñsm¿[ÝZÊÞ&D.�������Ü$c]'•T…")ÑIŸÉ*]b–”ûÔ½ÑM%zè|´éS¾î3Í¥Ëg«>W÷Lè°�������l_—i%ë6¡¥|½i!Ê&G¥7©{[1µbÌé,C\§„,)k){�������ÀåØtKym“h¥ÏuÊ}êÞVÍÃôl2¥|¿Éu•u¨/©D)�������p=ô‰>ªÂ•”ã…šö†XêÖRö¶nÊñÅPÓYÊ÷]%ê{_·Öe�������ؾ.G Õ­u¹ï¶ô¹OÝ»4SœÈR4Öt–.{)÷�������Àõ1DÈRµ6FÜRu_·–²w©¦²DCÆ,cÜwY�������¦oÝó™¡c–>÷uk){—î*„,QŸ#z.3XI‰X„.�������0]cÆ,Ukc,)û—,¹M§³T­ õLÛzê>�������0}ã>ñJßgêÖRö&媅,Qט¥n½oÀÒg½m�������˜¶>¡Hêú¦±ÊµˆX¢«²D}§žŒq\Ð6&°ˆ`�������`sCDcNhé²Ö´žº?9W5d‰†ŒY†\oÛò3�������À0úDcNi點º?IW9d‰f<3t Ò%D­�������Àôu‰AÖïõ XRŸ™¤«²D›Ä,cíõy�������˜¾ÔHdè°¥m¯Ë3“uB–ܘAKÊ~ê3c~�������ènÓøcˆÀäF,¹ë²DCMI#Z©�������ÀÕÕ5;néóÜä]·%úÈŸ©!$Œ������€zÛŽ;†ŽNn\Ä]Ç%êyŒõìŸ�������¦£o4Òåsc={%\×%ê\¥ã‚Ä1�������Pï2#1Ž!â3“wC–Ü6‚–¡?�������Lߦ1‰€¥ä&„,Ñ&aÉXQŠØ�������¦k¬`d“ï½ÖKtSB–h¨pD€�������¤*>¹öKt“B–Ü!Џ�������#6¹Kî&†,¹mÆ'B�������¸ú¶•ܨ€%w“C–œÈ�������˜Š°ä„,/µ��������Ûv£ã•"!K5A �������06K‰%°�������Ø”p¥…¥?q �������PG´Òƒe"�������¸þÄ*²\â�������n2QÉ5 ~��������`²��������� d�������`„,��������L‚�������€I²��������0 B��������&AÈ�������À$Y��������˜„?˜z€ÙŠ����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/flathub.png���������������������������������������������������0000664�0000000�0000000�00001556172�15240005042�0022052�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR�� ˜��@���þ2µÜ�ÜAIDATxœìÝ`$eÙðg“\®rGo ‚4•" *‚‚ˆ;ˆV,ØPQlXAQP{ýlX°€ ¬éŠÀq´ë%åÛw’ÉÍnv“Mß$¿Ž»S¶$—ÙòΞ§%��������� †–���������€Ì���������¨IÀ ��������€šÌ���������¨IÀ ��������€šÌ���������¨IÀ ��������€šÌ���������¨©-˜*J��������Í£;˜ô„’Ɔß+��������Œ?¡¶Q&5|~w��������0yŸ ƒTcüž��������`ê:„àTm~/��������0ýœU¤ªä÷��������šõ¨ò;���������ê›Öa³é®ÏŸ]ˆ ��������Fßx†¿¦eÐl:ŸÆâg �������€æ3¡°i4›NÁ¨ÑúY…É��������`ò­€Ø´šM—°ÔH~αú ª�������@ãÆ*Ð5’ûò!³érÎÏ8Òß‹ð��������Œ¿‘¾†sû)2›ÊA¨ñ–MäïOˆ �������€Éd"ƒXC}lA³^S5¤4”Ÿk¬¶Û��������õ 7Ô5”ÛÕ¶“ÂT >5ú3MÔv£Eh �������€Éd¼ÃW>ÞDm7)LµÒh…Á¹ŸÉÔN��������¦š±h{Ù=ÂõCÝ®éM¥ÐÓHCa:íÛ�������ÀT0Ò€ÖX‡ÉFãþ'…©hË`ÙHiCÝ��������ºÑ¨*6놲MÓšìá§‘„ˆº|$ëF²-��������Ðc(a­Ñ uùP·iJ“9è4Ü––c½|°u£y��������˜ª†ÊàØpƒf“2d6YCM£.ɲ–7º¾Âg��������LE£ºn°«{”— ´¼ÑõMg2—†S9l¸!²‰®j��������Ô6–ÕÊÆ2h6©Bf“-ô4Ô�×pCdÃÙf°å®��������êËŠe£µM½e¬k*“%ì4œÐVi”çGºl8Û���������=º‡¹Íp—t¾Þ²¡¬Ÿp“!ä4Òªec=?”eÃÙ��������¦»± —õ|½e¬›pÍpÍpÙp×52?”eCY�������� ¯Øh‡Ë†»n e¬›PÍpJ¸l(ó:Êz��������`tfc&êf¬›0Íp«ªeC½ÞȺÖ¶|°u��������@ᳪƒ`£(nè¬Þ²FÖ»f 8VÕ²±º>X l¨UÌÌ��������`pC d ¶¬;F/D6ZÕÍ]7®š%à4’ªeÍF&k´ÚYõíêmCX�������� ­Efw40«¾>’ÐÙpª¡ ´¬‘uã¢NcYµl8ëK Þn°çVoY#ëFBh �������€‰4V¡¨‘V1+È Œ ´Ípƒf“¶šÙD†‘†ZÝk¸í- “åZj¬hùp[f´¼QBd��������LF# Kuay£-1»†°| PÙh·ÐŒ!®TíªeC]V+(V+T6X l°V£0*�������`*N`j €Ù`­) œuÕØf¨¡²¡T6kd¾Ñucb¼CKcYµl(Á²za²êõÕÕËêÌ ¸Eõ��������ÀÐ VŬ^Àk €Y×�ÛTÉl,*›Õš!®5ãvípÙP‚d]VW0+†Êê]nõ²¡ü¾Ñ��������˜N†šª×s(U̺¹Þý«˜ ÷r°eÕ×kÍÇ׊ñ 1 ¥%fõ²Ñ ’/kǪ/«+” ö<{ÎÕ×"\�������ÀtÔhhªÑª`ƒ¾ªXV}Y¼Þ=J—]hY#ëFÅx™†.«7?ÒY½ŠeMÕÛhe³êÛÕZ6á2��������¦³¡†Ì«ÖÕÀõê Y#SÄȪ›Õ[ÖÈ|£ëFl¬ÃL£.«Új4`Vk*V+k©ºÝ@•ÌêϪ×Õz>ƒ0�������`:IÀ,Ÿ¯0( V]¬«ÆõÁÂfõ. —5eȬ-ÆÎpÃe£Y­¬¸,‘Ãd-5nÓh«Ìê Zõújf��������0¸¡Ìj-/®+Um_/`–o—‡ÉZ£vX­;*CkõžC©p9ØúîϳýŽz?ó@ëFd¬ÂLã.k¤jY18ÖƒW5+^¶¦zá´¨º]4¸¼!3��������¦£¡„¤º\ž‡Äº ë; SWÕíªVÖÕÀv1¢š]¯5ßèºa‹ ÓpÃeÅù‘„ÊòëÕ!²–ËkÍò@ÙŒX*,øV¯efµáü¾…Í��������˜Ê†Šè6µZbFÔråA³5±6pV+XV}½«Î6=îpÂfÌ7ºnÈš)`6ÜpÙ`U˪+޵Dý°Y{ôËòå±ß~û­óÁ~pÇí¶ÛîQóçÏߦ½}æ¥RlZ*µ,(¯ž`��������ÐÌRàjeww×CÝÝq÷êÕ«þ³xñâ›ÿýï_ '\wÞyç-)l—Bb)h¶:ê‡ÊªÛdvÅàÕÌF³¢Y­ùF× Ùh‡£&2\V«ue­v˜y…²âú™å©-ßöýïÿF¯{Ý랶馛?µµµå ��������LI]—ß}÷ÿþôÕ¯~õüO<ñÞXë(O«¢2@V«ÂYuÀ¬º…fÄ$™fÀl´Âeùõá†ËŠUËZ£v‹Ì|yªX63ßæüãžOxÂ^/looF���������ÓÊêÕ«wùå—ýtÿý÷¿"ÖÁRÈluô˜Ce½wÑU˜"†2«(›ÐÙDÌ»Þh+̤Ëçkµ¿l­Zžª•Íê]žËžô¤½_¥Z��������ªš]rÉEß*ÍR€leôT5+Ì:£~͈þí4‡Ó:³ÑëÕF%`Ö£c,[cV_,\V ™µæóë©bÙœ4ÿÞ÷¾w“_ÿú×Çn³Í¶Ç´´”��������À´—²DxÄ#:öØc7ïîî¾î¢‹.ZQ^<£wu nUgšº£2ÛTk»î^–j CÉm ËhU0+5¸|¤á²¤X™¬V¸¬ýÃfù”ª–¥¶˜¥¿ÿýïÏÜa‡GW¾>;���������j[qà ×ü±}ìo£'$–Úe¦jf]u¦î¨ß*³Ñjf]V_¯5?Øò†FÀl8ÕËêÍê…Ìj…ËŠ!³ÁÂe©zY —¥aËý÷?ðöyóæ��������� Xºté÷×_½ÏEO@lMô„Ì:£±YwÕT2«&(XÖhÀl°uƒj‰±Sd¾¸l°ÀYq~ pY­€Y —¥*e3öÛo¿yË—¯8Y¸ ��������Š”9JÙ£”AŠžBW)“”²IÕy¥²MÕ·"j抸Uf#Ù¬QÑ#3ÕËiÙHÕ²tYýÖW¹ì5¯yÍúgžyÖ)­­­{��������Àµ´´luØa‡ïú¿ÿýï¢k®¹fUôd”ºª6K9¦îªùÜ@ÕÄ — 'H6¢ðÙH“k¥—ôÃ,Kª“}U++ÍR¸¬ý©O}êüßþöÜÏ–ÿw ��������€èêêºö™Ï<ðúÓŸ—gWGO»Ì4K-3»£vëÌb{ÌFZeÖj›Y¼¬¾^k~°åƒIÀl,«—UÏ·DeØl )—µGOÀ¬uùòŸnkkÛ7���������FAGGÇsæÌ>6zÂd)`–‚fyȬk)©›EÔšEÕ²ˆÚa³Zó®««%Æ^#=@k-«Õo´VŸÒˆþÍÚ¢'\Ö²hÑýo.��������FSÊ$¥lR¬í´ØýóMµ;6æje¤"†Ÿ¹um1úm›Yky½_Vu³ê€â”–§êe-×^{í³æÏ_ç°���˜D:;;cõêÕȩ́lêêêŠîîaW®†i«T*EKKKäɦöööhmm ����€Ñ’²I×^{íõ»ì²Ëo¢'³”ª—¥ S±ÂXªR–çºcmªXÉ,WªZVŠÚ•džº|؆;ªÚh{ÌZ×ëµÅ,^¯7å²Öªë­…õéjæ{Þóž=ô¥Ÿ/_Ÿ���“ÀÊ•+céÒ¥±|ùòX³fM4,ƒ‘IûPÚ—Ò>•ö±ÞLRà ����`4l´ÑÆ{•ÇϹøâ‹S›Ì¼f$‹×óËÁ ”½ª·]£÷×°á–H­€Ù`!³ZåáŠ×Ó”ÌòÖ˜sÓõ‡zèógÏ9(���š\ ¼,[¶, Á�ã#U2›;wnVÕ ����`¤V¬X~΂ >=á²eå©£÷zgïÔ•á³âõîªëµBhÕ׋—]¯6ä3Û[bt5Ús Ú`)»bð¬:t–ª•µœ{î¹{ —��“AªX¶xñbá2giŸKû^Ú����F*e•Rf) ¦¨oª—›*.¬À×@·hù°Œv³á¶Çl¤zYuå²¼zY~™W/k]±bÕç[[[ž���Mª««+ ·ttt0±R»ÌùóçGKËhŸ‡����L']—Ïž=ó­ÑS±,¯b–W/«®bV¬dÖH³zÕˆZÅl\*˜V­ÑD]q}­�Z6Ë«—í!\��4³.{衇„Ë I¤}1í“iß����®”YJÙ¥¨¬bV]½¬º W=CÍV5jÈ÷3š§æŽ´=f>_j`›ZÛ§”Ò“Ÿ¼÷ó�� ‰i‰ Í'o™ ����0½Ù¥¾,S ? 5Ð61Àü`ˇl<{?”†±¼X­¬:ÑׯUæ±Ç»Q{{û3�� I-]ºTå2hRißLû(����Àp¥ìRÊ0E!ÓgŸ«h6æ²ÁŒUÀl¤%܆ú h+O-GuÔ¾��ФV¯^+W®  y¥}4í«�����ÃÕ›aJ¹¬¶¡ÝrÄ™ª1 5`6–É·ÁÊ»ç«û‘fÿ›oþp3�� i-[¶,€æg_����F¢aJ™¦êœSDc©±Îi5l¨)¹‘¨hqy­©¥ê²¸¼uß}÷×ÚÚò„���hB©*Rggg�Í/í«iŸ5kV�����㣫«+Ö¬Y“MiŒ.MÝÝÝÙ””J¥ljmmͦ3fdSKËX5p¾”aJY¦ .¸`Iôd›º¢2ëÔÕ{ÙýCg¥ÞåÕŠËëm3&F+`6X¯Ï‘$êêU6+þÒãýïÿŽ��Ф´Æ„ÉEÀ ����Æ^ •­Zµ*›:::Ü6›åA´|ܽ­­-fΜ™MÍ6KY¦ .¸àŠè_L«(_6ܰX~ÛFBiÃ6Þ̪F)·Öt?;í´Óv��ЄÒYVƒ}1šKÚgÓ¾›Î„����FW ‰-_¾|TNÎNcyiZ¶lYvÒèœ9sš"hÖ›eº2z²MkbdƵbYµ‰˜ Ö3t°ÐY­™±Î:ël���MhõêÕL>iß={v�����£'ËÒ4R`-M)d–¦‰TÈ2ÕÊ:u pÓêV˜•á²q›EÀl¸UÉJ NÕÛfÿ3fÌÜ"���šêe09Ùw���`ô¤ñ¶¥K—ŽË¸[ °¥HçÍ›—µÐœ½Y¦¾lSÔÏ>ÕjŸY+XÖ¨Q MT=¸á„ÐJ,/µ¶–6 ��€&$¤““}����FǪU«âÁ×1·ôXé1ÓcO„Þ,Sup¬h4óScj<fcõf÷[*µ,��€&ÔÕÕÀäcß���€‘[±bE,Y²$&JzìôÆ[!Ë4¦™©ñ0”€ÙPŸTiŒ×Wo7+���šPw÷¨V¢Ɖ}����F&»–-[-=‡ ™åY¦¡f Æjý°·&££ý仯Z=I‹—���Œ¡ô%üŠ+®Šk¯ýkÜ|óÍqÏ= ûæÎ›nºIl³Í#cçwŽ=÷Ü=fÏž�ÀÄøÏþ\pa\~ù±pá¢ò´0[¾ñÆ—§ ã OØ3öÝwŸØb‹-���FSjMÙ á²\z.---1sæÌ'µ²MÅi´Îpì¾FüXC e5Ú´ÔÀe­X>µÔ¸lë½LSkaJóë¤ë«W¯¹4���šÐ¢E‹b*xàâÌ3¿ÿýcåÊ• ÝfÖ¬Y±ß~O—¼ä,x“͆n�“Ñ-·Ü_üâ—⢋.ihû=öx|¼å-oŽvØ>���`¤:::âÁŒf´îºëF[ÛhÔä\{ûŒ'–/:ËSêÚÕ{=Ÿºz§ŽÞËî—ùUóÅe]FùÁ–Wï€Y#!³b°¬*0��&¥É0[³fMüð‡gÇO~òÓa—Ÿ1cF¼èE/ˆ#Ž8,»“…€ÙàÒkÜå—_×]w}¼ð…ÏÏ*§³³3N=õ qöÙ?r«ßt÷!‡Gýæhmm ���®.K!³f”Âe)d6 ˜¯× ˜EÔ—KÀl|âxƒ+U]/…–—���nñâÅq 'Æßÿþ‰<¤ö·¿ý#>üáãÆíË;0¶n¸áÆxÍk^—Z’ûî[ŸøÄÇ£Ýu×]qãÿŽvØAEE¦¬%K–Äûßÿ¸òÊ¿Äptuu•߯·ÜrsœxâÇbuÖ ���ªåË—7m¸,IÏ-=Ç9sæD“©•—ÍVšÃÖ,³d¸¡2A4��€1pÛm·Ç‡>ô‘X¸ðÞ~ë6Þx£xâŸ{îùøØd“Mcà 7È–/Zt_ÜsÏÝqùåWÅ¥—^÷Þ[Y½íºë®‹·½í˜8þøÄ#±e�ãu¯;ª_pôq{l|å+_Š¡HÕ‘òpYò—¿\TR¤fòÇ?žþðG³ÁÃöööøøÇ§<e$í‹õÂeOxÂñô§ï;ïü¸Øh£²e÷Þ{o\{í_ËûÇyY¢té¾>÷¹ST2��¨²×^ã;¦pÙeÅd’ƆRx«Ù¥ç8kÖ¬ñÇIjÂÃeÉh·È¬u½‘™Å©¥Æå@-2ç§K-2�€f5[dÞ}÷=ñŽw¼3xàÁŠåm´a¼üå‡g©ûâþð‡?Æw¾ó½,xV´É&Çi§}6,X#±téÒ8øà—Æp¤Çß~ûí¢½ä%/‹Å‹—ôÍ¿óoxz0þ¦j‹Ìz¡C°Lûù³ŸýÜxðÁ‡ú–}ó›_‹w|TŒ–T‘逞U±ìä“?{ïýäFï"^ùÊ#ã†n蛯Ó½ï}ÇÅùç_Ð7ÿœç<+>øÁã&“SN95~ô£³+–=âˆ÷¿ÿ=Y°l ýëßâã?)î¸ãŽŠå‡ú’òç£c¬ý÷¿ÿ-f8¯ütyVm0}þ˜9³=Ö[oýxÔ£¶}÷Ý·<=%kaB¥êׯÃ{YÖâ��;fKc¶+W®ŒÉ ÌæÍ›c©·Efjw¹8o‘Ùµ[dÖš"n‘9Ðõh`y…æ:��€ —ÚYüÇû…ËöÞûIñÕ¯žÏxÆ Õ•¶IÛ¦Û<éI{U¬»çž…q ŸÈ ˜<Rå³4ˆš¦×¿þÙ~¾Ûn»VlsùåWD³Ù`ƒõªæ×˜JR»Úÿø'ËÿøÝâë_ÿò á²$m“¶M·):ûìg­eÇÊêÕ«³`Ü¡‡gœñ•¬¢ZúŒ–/Y²4 ¼ýîwˆãŽû`qÄ«² ���Í+Œ8YÂeIz®é93¸‰˜ii ��ÐÄ~øÃ³ã–[n©Xö¢½°|p÷}Ù]C5{öì¬Ð _ø‚ŠåÿøÇ?âûß?+€É£ØVóoû{v¹çž{Tlså•WE³y׻މ]vÙ9{ Û}÷ÇÇ;Þñ¶€©ä _8½b@<U.ûä'OÒYØë¬³NœtÒÇcË-×¶°N÷™î{,¤Ù»Þõî¬êZ±Õn=·Ýv[¼õ­oÏZñ��МV­Z“Íd|Î1Ù+5Å��èóàƒÆO~òÓŠeO~òãu¯{M”JCûΚZƒþìg¿È*<á {f-¶î¹çî¸ä’Ëú¶ùÉO~ÏzÖ±É&›ÄhÙk¯=cÓM7t»õÖ[7€ÚR¥²<LVÝN²ZÚ¿‹RðlÅŠY¸´Yl¾ùæqÆc’‰öŸÿü'®¼ò/ËR[Ìá´øH!³tÛ£ŽZÛbñŠ+®Êc‹-¶ˆÑôÕ¯~#»ï¢Tq‡v(ï³›fíqoºéæ¸ÿþúÖ§PÚ‡>ô‘ø¿ÿ;;fΜ���a²µ¬O# k=ó™e—m´a¼ùÍo,ó>aÀíSìÏ}îóq÷Ýwgó¿ýí91é97Ó8V³¯€Ùh&çJU���£äÌ3Crn¸AVùg(á²TaäÇ?þ¿øÓŸ.ŒŽŽŽlÙUW]•4>öØwfÁ•E‹îË–¯Y³:~ô£Ç[ßúæ-ÏzÖ3û^¾ôo˜þíi‹ÊÔQ«RY=›m¶Yàúßÿþ—ַͧ©Ý`ƒ€ÓUªÕÝÝ­­­1^R(§½½=˜š.¸àŠù'<a†ÚbÖ“ªýí¹çîᯠ/üs~øa1ZRŲŸþ´2О^G>ó™OÅÖ[oÕ·,½ž|ï{gÆ—¿üÕ¾e÷Ýwù Á¹ñüç?/&£‰x ���éûN><÷Þ»(Ž?þãÙXòÓž¶oÍmÒxóG?zb6¾<Ré9§ç>ãŸc•wJ÷Õcl²U0+5¸ ��€!Z¹reüþ÷¬XöŠWÑðÙ[ÿü翲6Wé€t:pZtÀOÏ.Ó}qÄáñ¹ÏÖ·î<?^ûÚ×LØYb©j[ ½-Y²´oÙ³ŸýÌ8úè·Tl—ÎdKÛ-\xoß²g<ã€8昞V{¿øÅ9ñÅ/žÑ·î‘|dyþ´¸çž{ÊÇÏŠ«¯¾:/^믿^l·ÝvåãÏÇ>ö11RéàûŸÿ|qœwÞùqçÿ˼Ϟ=+;ÓoçwŽg>ó±Å¯yÛêç¼ë®;Ç'>ññ¸ä’Kãì³·Ürkösõ«gTÜGpI•èÎ?ÿü¸á†˿ÇbÆŒ±ñÆe¡†ôûÛj«­‚é#µÉüÙÏ~Þ7Ÿª)5SÀì}ï;®ü÷zAßüsžó¬¬uï`®»îúøæ7¿•æV®\•U[LÖC=8þðþûUÚg;ìå}ói`ò’K.̪0}ùË_ÉÂz=´8ÞóžwU´ N°ßýî÷YˆçúëoÈö©ìÝ`ƒ b§vŒý÷ß/öÝwŸšaßêŸí ox]¼ò•/3Ï<«¼ÿ* þÍŸ¿Nüú׿Œ_ýê×q 'VÜþûßÿNl³Í#kýøåŸýÛÁžÔbô׿þEÌ™3'h—_~EÅüÓŸ¾ŒTú›+Ì®¸âÊQ ˜Ýyç±t鲊e¯{Ý‘á²$½·¼úÕ¯,8øKEkÌ믿±ü>Zû¾ÿõ¯ë² ª×\smù={aö™$íK}ìNå÷ÄãIOzb æÖ[o‹Ÿÿü—Ùc¦ê«Ë–-¹sçd­GÓëÝóžwPÍê«Ã} (>æÕW_S>˜²0û\²`ÁüØ~ûíÊTžš=÷¡Eo¼ñßÙëW:£?ý®7ÜpìEðᇿ¬üýˆ���miœr$ÒøE?MÒøãÉ'ŸRþ^Ø{ïýäŠí.»ìòøøÇ?Y.›7onŒDzîc\){Òç´È�� sùåWVT/K¥ÁR§ $]tIüøÇ?‰ÿû¦šÛ¤ƒÃ)L•{Æ3žßûÞ÷ûª˜¥`[:€[=P0^Ö]wÝòÁëWÅi§}¡oÙoû»ìàq1$uÖY?¬—-X° ^ûÚWxß·Þzk{ì{+¢ßsÏÂlºè¢‹ãÅ/~Qy䫆}v\úìcŸÈBlE«W¯*À~(; ý“Ÿü_|ð‹²ôTKI!—SN9µîúÈ;ñÄOö«j•Îô»ýö;²é—¿üU<÷¹Åë_d´µz˜ªf)Œ2Ù¥}ô=ïyö:—»ãŽ;²é¿øe|àï<È“öÓ7¼áM±|ùòšëSæ¸ã>wÝuw¿u)–¦þÝi§â¤“>V~mÞ(ó±¿þõoû-ßo¿§Åg>ó¹Šçrþùª0«ï·ßS…ËšÐÝw/¬˜Iõ²Ü.»ìR1×]÷Ähêììê·¬««³îöÇÿá,˜•«õw˜Þ‡N;íô,ì^í®»îʦԶ{·ÝvNøH:«u§žú…ìsMuX>äHÕÓôÝï~?Ž>úÍå÷×Ç`{ HùùÏ1~øÃõ[—Bã—^zy6}ë[ß-@9>vÜñQ1˜R{ÛÛŽ©8¸“~þ_þòœò~ý‡ì÷¹Ï>O ��€Ñ4Ò€Y£=õÔÏ÷ͧ1™O|âSñ¾÷½»oì8›–U?ÖË^öÒ‰q˜Mzú[���ùë_ÿZ1ÿÄ'î5`ðéºë®‹#|Cù ý'ë†Ë’Tu£x7Ýgºï¢T]c"=ëY–ØîØ7ŸÎ+Ví¹ûî{â'?ùYÅm^ÿúׯüùóëÞç²eË⤓>ݯBKQ Õ:ÞˆTYé˜cÞÝ/\VKjYšþ³xñÒøú׿Uwý’%K²ÖƒµLLåS�糟=5˜vß}·Š×‹›nº)î»ï¾˜¬ÒsÿøÇ?Q.+J•ý>ô¡d•ÍsÚiŸ¯,¹í¶Ûã-oy[ÍpYµþóŸñÎw¾gÐÁÚk¯½¶f¸,I•"ÓkrÑyçý)ê=·[n¹¥bY ŽÒ|ª÷µT©j¤RȼhÑ¢E1š6ÛlÓ~Õ¸Òûn±=oQúñÈGnÝ7mºiÿêa©š_#ï©)|õ–·¼={Ÿ®–Þ·Ï>ûÇýÂeÕRÕÁ“OþlV…u0½$ïÿj†Ëª¥°é›ß|tVél =ô`¼÷½ï¯ûZ‘‚ýýè Yu7��€ÑTo¥QiŒö oxmE÷tŸéd×T½=蜮Wß9âˆÃâÅ/~aŒÄHŸût0UN#Ö&��`„ªXî¹çîu·M_¸O:éäAÃMi0 Ö—û=öØ=«r•»ùæ[c´¤Š;©]ç@ÒãÛS¦çyôÑoÊ8çƒ ×\ó×ì@wÚ.U\+–\ßm·]bÿýŸ6àcä¿›Ç?~×xÎsžóæÍË‚Y©õd §ä¾ÿýÆSŸúÔšËëI•æÒAðâsJ•ÂRu¸”KA°ßüæ·ñŸÿü·o}€I¡“Ô¾²ž›o¾9»\gyY{ÃTÝ-UlI-7“T&U_ËÍ™3;=ôxÌc“l¿ôÒ˲×üÀ|:ðžÂ„UŽñ“–;ì°C<MÒßÀUW]x@LF—]ÖÓr0U‚zÊSžœý<çwAßÏ—¤e©‚à~tfÍÖ•I «¦v¡©’㓞´Wl±Å–Ùþ»Ùf›eë?ûÙÊjb©…njœª•¥í.¼ð¢¬ÕeîÆoÌTÓ¾^OªF™l±ÅY;Ïtömñ5ç ƒžµÊÌ¥ÙþóŸlû¢Tå¨èa{Xì²ËÎÁôP°,p5T©ÝjzoüéO׆·S•ÐÔŠ:µ‘Þ{ï'•ß?w+¿¿ì”m;˜ØNí¢siŸ|Á žŸUÝKûÀßþö·øÖ·¾ÓúNF¿ô¥¯Ä»ÞõŽ¾Û¤÷üsÎùUÅý¦*…Ï~ö³²v˜7ß|K|å+_Ëö—\ Å ôy`°×€T)-íçE© çóŸPV)õoëyNùg“ôzñ©O\~î_¨û˜¿úÕo²ËôyàÑÞ1î¿ÿ¾¸øâK³÷é\jù™Úˆ¦°<��ÀhÖ _ø‚ìòË_þZß²¼]fú®—ª@¥pYšFjŒfiàht¿XO€‰ ˜ 5&@��0ƪ+èl²É¦u·MCó�U k½ímo)ÑïŽSO=-þò—kú¶Këñˆ-ûÝ~ÓM+ïûî»ïŠÑ’ÚÚ fîܹ³dë­·.`<?«ö•ëiõ–Š ?íí3ã­o}K4b¯½öŒ}è}•÷¸ÇÆ£µ}|àéÛ&…ÄÎ?ÿü!•qO“êpß{ß{lEë9ÏyVÖžóÆÿÝ·,UHIgÖ Ã$é€ôñÇ(ÖYgŠåwÞù¿òÁûµÁÓÁòO}ê¤ØvÛmú–íºë.±ñÆÇ×¾öÂcž-`6M¤Pj1€uå•WMÚ€Y’4ßóžwõÍ~øaYÕ²?üá¼¾e)h’‚£µ$\wÝqúéŸï׆2vžùÌg–_·ß~{ù¾îŒO<¡â53ºn¸á†¬p.U_(`–¤ö»ï|çÛkV¡L÷¹ùæ›gÕr) úªW½¢b»êö˜Ï}îs|í`â¤ê^Å bª6¶å–[ÆHäm¬séïx´¥“)àX] ðßÿþw6}ó›ßÎÞkRP{ß}÷‰ý÷߯fåÐt áÛßþnŲô÷_l_™ÞwÝu×,À–¶O~þó_d­œóûLAðôyæ¶ÛîÈöÉm·Ý¶"€–*§m¸áñÆ7®ý Zæ¦ rµÚmæê½¤çñï|¯bÙ£ýèøâOë Õ¥^ |§êl¹k®¹6«0¸ÕV¨û˜o|ã╯|yßü-·Ü¯yÍë²êe¹F0�€áÙk¯½c<]vÙE1ŒÖÉIyÈì+_ùzß}Ö €V¸,í«†h8ªqÂZd��IÕ,ŠR%zŠ!¬t06µãÚxã²0VÑ!‡¼¸æí7Ø`ýªÇ^Í H¤Ÿ#—‚#Ç÷¡¾ƒÑÉᇿ4kíÕˆW¿úUý»ï¾{v »è’K.‹¡8ÿü?U̧ÀHuˆ+Ul9òÈWW,KÕÇ«îvÌ1oë.KÎ;¯² Ø“Ÿü¤ŠpYîùÏnÖ†/—Ú§>ðÀÁÔ—¥EW\qELV©Šß[ßú¦Šei_>昷g—¢ .øó€÷õ†7¼®_°$Ia­øLA“N:1¾ÿýo× äΚ5³bþÁÞŸÒkXÚëµ8N›¨E)´Z”öۜɥû¨ú!kÓM7®˜¶Ó×\sMÅü–[n£-½Wœ~úiqÔQ¯ùóש¹Mj{’* ~ò“'Ç ^pp|÷»ß«xOîy®×fÕÏriH!Ëj;íôèòëÔã+î;¯ø—l½õVYØû}ï{wœqÆéá²\­jj<ð` ¤Þk@õóNÒëNõc<íiûfÝžüä'f¡±Nøè€ŸÑþð‡W„Ë’Ž;è çT,»÷^-2�€Ñ5š!­2K'Õ;Ùm4ÃeÉÌ&…©Ò"��€q’ˆæ­²ÃÛ÷«ÖìÒAÝ7½é¨øÈGNè[V¬¶ÕV[ÕlùYKj/Y+,’¤¶_)¼Vë1‘Z{U{ré÷Ÿà§v\ko{[Ör¬–ÔŽk‹-ÞÐcþéOÔx)>^’*­¬·^ýƒáL ©ŠWñï-'RHi¤•”&Ân»ísæÌé·|ýõ×Ïö«TE,w×]ÿð¾vÙe—hDj_wûíwdûèÂ…÷”ï÷žø×¿®«¨ —T‡kª¥ç×ÚÚ:à6©å_ª4˜ïéJÚ]wÝÕ׶館^ö„'ì‘U'¤9¥V¨© c.ýû=ïyÏ‘øãÏ«˜OÕ¿ÆBjç½ìe‡f­œ¯¸âÊlÿ*¶¡Ì¥*m§Ÿ~FV™óøã?ÒwᦛnªØ.½ö¤jƒµeIú<“Ú`Ö’*Á¥Ê_wÞygÐNÏ)=¿jƒ„¨÷Pý¼çÎS·âÉ'*µãŽ;Ô\¾Í6[WÌ«Þ��4£T-:}÷«þÞ•–Of|L†€™Úû���ã Ø|ðÁÕ}ó÷ßÿ@ÖJ²Z±zYrê©_ÈÚ\¥ÐÃi§}¡oùÁ¿(ê¹ï¾û«{vŒ–~ôCÙÁöáJ­¨êyÛÛÞœ oD ¢Ô“*¾-Y²4:::ºïU«VÅÒ¥Ë*–ÕPIU‡6Úhø㎵êS+¯zª+%U·KK.¸àÂhÄâÅK‚©/UöÚyçÇfÕ†r)Œ1f›nºYÝu©½d1`VýzVm ý*ùÇ?þ™µ¯ýÓŸ.Ì**T­ KÕRÆt½êªµ¡¤Tñ°Ã^–]/¶M:è  y¥ö‘_øÂ—ú毸⪬ŠYªn9)H^ ¬¥û§>ußK©êæþû?-›’ûï¿?k¹}á…föÒ{d.µoMïÕ©}drï½ýߟª[¼ÖóàƒU̧ÐÕ/~ñËøÉO~V3ä6õ^ªŸ÷ÆoR·òàP´··i9��Àh©® /üsVͺ։vé1>ûÙÓÊã(ýª´W½Jiã¨é³Q*˜��Iƒ\Ûæéî»ïîWÍ*U±*+’+¯¼*^þòÊVŒ›o¾YÖB±žT)§h 0Çx¨¢Ç-·Ü;î¸c4¢««³îºÎÎŽ˜(Qî}õêUÁôªéUÌ>øÅ1Ù T%¬ÖY³Ãõƒü0 éÖÚ/S²m¶Ù&{.Õ•ŽFC çf^xQ0KÕ¡RŦ܂ócŸ}öš×[l{î¹{,Ëxâ'ãë_ÿrÍ–ÇY¼xqvÛ¢Ýwß-¶Úê1žRH;UKS z}ô;ÊŸîî[ÿ³Ÿý¢/`6’÷µ5kÖëS;ç׿þMuƒe©-ej³ùç?_£Aû��˜¼.»ì¢ ¿Ñ ˜wÞŸâä“O©ŸÉOÈÉ—¥Ç9ýô/ÅŒmñŒg#Õ³¦7Ö3ÿ���“ÄÖ[o×]w}ß| ŽU·^LÕË$ØtÓMã=ï9vÀ*龋ªÛ6M¤o~óÛu×}ãߌ'>ñ V'Ë¥vZiÀ£Öïáÿ« Ø­³Î¼†+£¥*/©ÚܲeË+«–ôø÷Þ»¨bY*-?éÀzÑ«^õòxéK (ÚsÏT=ð‹}óW]uuÃÕùšÉÝwßUwÝÿþWÙ³zßhT qvÚ鯩)$ô¬g=+ó˜Ggí*Óïíä“?;&³§=mßò}¦ïµäŸÿüW¬\¹2.¾ø’Ší<ðÀ¬:Íí-oysùuùȾöÔžö=ïy|ò“'62Ká²t›bÀ*½‡½ñGÅhK-Zo¼ñƾù}÷Ý·îYç)@—ÚS«´Û6o´QåûZÚN;ís1T_øÂ+~öôÞ|È!—ïo,`—Z_§ þ3Ÿ9:ýªŸwj—]ïs��ÀdN–褽F¤ ïŸùÌg+î'…¿Þüæ7fa²Ï}îó}ëÒåhU2KÏ} H­1;›i¬¾­ –��L2Õ­´.¹äÒŠ/ò÷Þ{o\pÁŸëÞ~»í¶÷½ï=YÅ”vؾîvqÙe—W=ö.Ñ ®¿þ†øÕ¯~Ó7¿Áë—j¯mõ™‚_üâ Ý׊+âšk®é·<…I.½ô²Še)”7|ä#+æS•¨Zþú׿eÏ£ò¶Ã ó=â•ÕkŠaDÈm»í6Ù~“K'ãßJjÍ·téÒ~ËS‹ÙÔÒ²èa{x G r_cûØÇÄ©§~6žõ¬³@MÊ[¶liŒ…ÔJs¿ýöë›Oí9ÿþ÷d¯ýEÏ}îs‚æ·ýöÛÅK^rHŲTqô5¯y}Öòr0i›#|C¿m÷ÞûIñèG7V¹s(Rø9UÍ˧3ÏüÁ€!î¼³2ôYl»õÖ•ïké½¼ØR³Qþse‚Nøh¼þõ¯Í>¥pY2P•Ó¡Ún»í*æÓ}×û·zýëßGñªøÈGŽï~÷{q÷Ý÷��@³iH+=êS'gãǹtÎ;Þqt K•ÊÞþö·Vœ˜“W2KÁ´‘˜"³Ü˜d¶œ��@&Uè˜={vßü¢E÷Åï~÷‡¾ùŸþô5Ø>úÑ.ðü`|þóŸ‹}÷}Ê _ÆÏ=÷÷Ù}çÒc>þñ»ÆDK©U]ñ�÷K^rp¼ô¥‡Ä¼ysû–]tÑ%ýrõ|õ«ßˆeË–U,ûÙÏ~·ß~GŲT­RåÀêÕk*æŸö´§VÌÿío/?¯Ê–]«V­Šo|ã[Ë6Ùd㬽×pT?æ•Wþ%{ÜjwÞù¿òïí°xÛÛŽÉÎ(üÅ/ΩbjKg”>þñ»U,«€lf)è‘΀-VK¯ é ÚÄ*zÊSžñxñ’ŠùM7ݤ_;†‡z¨_E±ÑTK¹©’Yn‡vÈÂÃLo}뛲ê]E©"×ßø–òº·eï?·Þz[ö¾”¦t=-KëÒ6µZC¦÷¼_ÿú·1Ú÷¸ÇVÌß|óÍYxªØª;IûÝ/yN6m½õV}×SµÕb%Á´o}ç;ßë÷˜«W¯ÎZz¿ìe/}è#Ù6 .ì{œ¥K+߯S»ïjÅúHíºë.±ñÆU,ûüç¿Ø/~Áfï·©’áoû»ò“3²jƒ���Íf¤пò•¯ök‹™eصBfé6_ýê×b$ToÜäêO���À˜IÕ@8`ÿ,”ûÞ÷¾Ÿ…ÆRì¼óÎï[ž¾p?õ©ûf-«RÛ¨F¥ƒ¦ßÿþ™ËößÿiÁ¶‘Jÿò—«ÝîE/zaèÈýßÿý¬¢åV:Xýìg?+ûY>øEñ­o}·o]j£µóÎôyßvÛíqÔQo.ÿŒûe-Êþþ÷¿Çe—]Q±ÍŒí±ß~O«X–î7µ*+þLiYú]§ d©µÝxvÖN+wÒIŸŽ§?ýêxô£=´8Î=÷wñßÿÞYq¿‡ú’~–F¥ÇNñóö¦iàæ¸ã>\þ=>?«î’un¼ñßYÕôÜÓtà 7ÆN;íÏ{Þè´crHaÕb85ýÍyä«c4ýô§?ë·/UÛk¯=cgþJ~õ«_gœô˜‚fç÷§Š–~Iªì—* G |¥pW Ñì»ï>Ùëqª@˜BšÕA´Ñ”B>©ZZ,úñR±þ¹Ï}v0y¤€÷‰'~¬üÚüÁ¸üòÊ`g §i¨ÒkýÇ>vbvýÙÏ~fŒ–< ;pPlñœ^7Î?ÿ‚xÔ£vˆ 7Ü Q¥÷•ûßí>øÅ}×ÓûÏa‡½´¢…æW¾òµ¸ýöÛ³÷ß dãgõ£,È–¤÷ûž{á Ÿßwé1.¼·ï>>ùÉ“ã]ï:&¶Ür‹X´hQüüç¿,øNŒ–ô˜¯xÅYÜÜõ×__^öšxþóÊž÷?ÿy]¿pÝn»í:¤Ï^���ãe¤!­â÷¿¼-f1\–Ë—ÛeÖúî8fƒkö€™V›���ã( ýýïÿØW=#UKeÉ?øÁãb÷ÝwËZ7¥0Ô ^ð¼Ø`ƒ †r×Ù—ýO~òÓ_öS¸êCŽÑÔhµ¤âÈf)¨õ½ïUß^ùÊ—÷ ,¼ð…/ÈB^©¥W’~/ßüæwâMozCÝûOµõÖ[?;˜ýƒü¨îvGñ²Ød“M*–¥£ÅðØ-·Ü’ý;pÀÓãï|{6{ï{w¿ûý±fÍêl›T]î·¿=7›jImÎFHýæ7Ý÷o˜;ÝÒTKzžGýæ`zI³¢Ôv1UKš;wnŒ–‹/¾tÐmRåÁáÌR8íškþÿú׿²©–9î¸÷Vœ1;OyÊÞ1sæÌ¬Ú`’ª+}üã'eSQ1�6R‹‰3ÎøJ¿åííí5qinóæÍ‹SN99«„õ£=`ÛÉZÒßs U¦¶•yõɱ™¥°ûØñYµËbÛɼUë@RÙ}öyJŲÃ?, ³ƒu©bjšê9öØwfáïÜ3žñŒ,XŸKaõ—½ìˆŠÛ¤÷ö´Ï¦–Ù£!å.¿üŠøóŸ×V!Mû{1,W4wîœxßûÞ���Í(}§Lß÷juÁŠ 6X?^÷º×ÆSŸºOÝmÒ˜E{û̬rÙHÃeé9w|g”¥ŒTw4)Ì���è³îºëfUÉŠa«K/½<kõxÌ1oöítpú+_ùz¿ŠC‡ò¢~U|&B:Ÿ‡<’ð*+Räu¯;2N<ñ“}ËÎ9çWYõµ´m-)œ–B`ÇûÞ~-¿r©gšª½ô¥/É8ŸS’*›ävÜñQqÊ)Ÿ* ÿDE­–¿øEñš×¼2F*ý}œzê)åßçê†nr)4÷¼/ñˆ-ƒéeã7Ž-·Ü2§l ©¤pêHª‰·G<b«8ðÀã„>^3 “^Rkàê6C‘ö§Þýð‡?Z·ì>ûìiÒ~>VR`(U{ªþ9SÈhþüùÁä“*™¥v!)<xúé_´Ú_’Î ßcÇÇßxTöþ’Âæ©eåX†ÌRõ¿/~ñóY¥°ë®»nÐíÓ~—‚ðéý¸ºgšÿô§?Y~_<5kû9~Ná²T+:òÈWÅ_ÿú׺·ôø'tb¶ÏŽVÀ,ùÄ'>§vzÈÃö°ò¶ËB§��ÀÄÚk¯½c<]vÙE1Y¤ïNà ˜ýö·ç iû@(„Ö¨ôœœ€���=ô¸úêk+D©Ý=÷Üj;ËT -U.«>Àý˜Ç<&^ö²Cc¢¥¶tW]µ¶mX^~½úàu yœsίãoû{6Ÿ¶§2ì_øÂ粃ùµl±Åóõgžùƒ¬²Zj]™ªŸl¿ýöY¸vztÍÛ¥6˜§žú™øÁÎŽüãñÀfÕ„RÛ¼4@“ΪK¶ÛnÛøêW¿”U>9ÿü?e-1Ó{³gÏŠ6Ú(kãùÌg>#kï5Z6ÜpÃ8ùä“Ê#WÇþp~V]-µ[³¦3,X'¶Ýv›ò Û^YøNiùé+U1ËfIjÍ7™fI Ÿ<üá‹o}ëÛYàdåÊU±é¦›Æž°gùµë%±ùæ›ÇH=ýéûÅ6Û<2¾ÿý³²jI÷Ýw_¶§×€zþóŸ¿ùÍoc,¥@` U·T|îsµ¶ìÒ{Äç>wJÜyçqá…ÎÞ‡î¾{aÜ{ïÂò{XwÖ‚q«­¶Œ]vÙ%k{] §–ÙÉX‡ÌR;Ìo|ã+åÏ—g• SkØûï¿/k ›ÞCòç˜ö»TA5ý½Ö“Þ'S°;åÓûõÕW_S~º7–,Yó篓_Óý¤¶˜)àY-}¾9ãŒÓ³Ï<)`—Úh._¾"{ßÞc=╯<"»Ñ–öùcŽy[ö¹ µ)O¯éßhéÒeÙóÞ~ûí²ŸÔ¶;ýŒ���Í,…µR%ûÉDÀ¬1¶ ,5¸®ÔÀe©Î|>µ.ó©µwYkÕ”Ö¥S)[V¯^sI���4¡¾™l/^G}Lù@ôÝË7Üpƒ8ì°—ÅP7T•K¢Ï;ïOñÍo~«_™òTµ,Uªu€w²J…¿øÅ3úæÓÏøío#˜ÜR n*ªw¦m~FlõúÁ–WKa–w¿û}}ó[o½uœuÖwƒæ”*¤¥ªŒ¹Ô>øÿþïìfiÁª®d–¤¿‹ÔÞr¿ýž���Ó‘ f[ºti¬\¹2&ƒtBï¼yób,µ·ÏxRù"•Ž_Ü{ÙY5u÷^v¦îÂeõu溬¾^mÐÖœ*˜��ÐOj‹öÑ~(>øÁÇÂ…÷ö-_´è¾8í´/ÄYgý žøÄ½bÏ=wM6Ù4 žåëS¥³+®¸*.¹äÒl¾Z ^üG¦T¸ ¨´ûîϪòä-R% … X}ˆ‰‘ÂÀyeÆÜA=G¸ŒL½JfŸûÜ©f���Ô4gΜI0KϕƘ��PSj•õ…/œšU¶©Ü{bWš†bÇwŒø8á2˜âÒàÜŽ;>*k-™»å–[ÌšDj˜Z®»î‚¬Ú\±ijÁ—ZB®VÈlæÌY��0]M¶Šbã-´–Ɔ–/_Í,=G'Ø5NÀ ��€ºR%³üøøþ÷ÏŠŸüä§±fÍšŽ3Úãàƒ_‡öÒòõL¬Ç=î±ý‚£;ïü¸šëY^ËóžwPÜtÓͱÓNŽ'?ù‰YU3šÃOú³¬õa-¯xűÁ¥Ù¬Y3ã”SNÍÞÇ?øÁ÷���Ô“Â[«W¯î«nßlRå}Õˆ¦4 Û•j\è²Tg>ŸZ —ùÔÚ»¬µjJëæ§ËÕ«×\���MhÑ¢E1Ü}÷=ñ£ç÷§†KœÏž=;žö´}ãÐC‰M6Ù$¦²TÍí‹_<£o>µýö·¿Lnn¸aÀT’*P=ó™Ï‰%K–ö[÷Ìg>#>ô¡8{���±.{ðÁ£¥)d6ÚÛg<©|ÑUž÷^vVMݽ—]…©»pY=Eù.«¯Wh]F3���²é¦›ÄÑG¿%^÷º#ãÊ+¯ÊÚ«Ý|ó-YðlÙ²eÙ6sçÎͶÛf›GÆ.»ì{ì±{Ìš¥@³X¸ðÞØrËGÄÿûŸXºtY¬³Î¼¬éóž÷¼, ���0R€kuÖ‰%K–D3IÏi¼ÂeS‰ f���clªT0ƒéH3����¾+Vô <ÑÒ Ò©ëÆxš*ÌÔ»��c¥R£çö�Íľ ����#“])Ø5Ñ&"\6•˜��Œ±–_½`2²ï���ÀÈ¥`WjM9QÒc —Œ¦¢���c¬­­-:;;˜\Ò¾ ����ŒÜÌ™3£µµ5–.]1ÒøÞ¼yóŒó§â��Œ1_^ar²ï���ÀèIãmë®»nÌ™3'ÆZzŒôXÆøF‡ß"��ÀkooeË–0¹¤}����])ü5kÖ¬X¾|y¬\¹2FSºßtÿ--jn&3��€1–Ê~§³¤Æ«ì70riŸMû.����0úR�,µ¯La°U«VeÓpÇÐÓX^jÁ™&Á²±!`��0ÒYSK—. `rHû,����0¶R löìÙÙÔÕÕk֬ɦÎÎÎlêîîΦ¤T*eS:14M3fÌÈ&¡²±'`��0RXeÅŠÙb ¹¥Á)3����_)(–W"£¹ˆð��Œ“¹sçÐüì«�����k ˜��Œ“öövU‘ É¥}4í«�����ô0��GóæÍ‹¶¶¶�šOÚ7Ó> ����ÀZf���ãlþüùÑÚÚ@óHûdÚ7����¨$`��0ÎZZZbÁ‚*™A“HûbÚ'Ó¾ ����@%#§��� YÖ]wݘ5kV�'íƒi_.����¨Íéò���hÞ¼yÑÞÞË–-‹ÎÎÎ�ÆGj‰9wîÜlÿ���� >3��€ –.iZ¹re6utt06R;ÌTµLõ@����€Æ˜��4‰<ô’*™­^½: 𥩫«+º»»šR©”µ¾L¡²4¥ gª\����@ãÌ���šL ÀÌž=;������&ZK���������@ f���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mf���������Ô$`��������@Mm��������@]¥R©b¾»»;¦ 3��������€ªƒeÕ˧CÐLÀ ��������`�>øP,]º$»>oÞ:±îº bº0��������¨’W)Ká²Å‹ê[ž_O!³´ÍT¯bÖ���������Ô”W.lÙT¥‚��������@]]] -›ªT0�������� &3���������j0�������� &3���������j0�������� &3���������j0�������� &3���������j0�������� &3���������j0�������� ¦¶€!èîî��������&¯R©Ð(3*�������LmƒåCÐ(0›æÊ��������(ªÎ“œMofÓÐPCeBh��������SS#á±bvDØlú0›FêÅ ™�������L-),6Ôv™ùö‚fÓ‡€Ù4Pë…` ‡®®®��������`j«•iii©»M1T&h6}˜MaËÒ|­eÞß@Ë�������˜Xõ`õ–W&JÛåÛÖ • šM}fSÔ@á²ü… Íwvvfóézqyq;��������¦¶¼rYKóézºlmm­Xž²%µZg ™MMfSÌ`Á²4¥PYGGGßòâeñöõ®7ú¸��������LœÁ_µ*‘åËóÂDù6é²­­- ›¥Yu ­x‚fS‹€ÙR¯ÕeÚáS ,ËÒ”/oi™-m3Ëó­ÑÑ•^JÑÙ•Bf½wPÜ×í÷��������S^ʆµ¶¤ÊeÝÑÖ’ª’uFWǪèêZ«W¯ÎÂc)d–¦8«42›:̦€zUËòjekÖ¬É.3¥–hk_'Vw´ÄªŽò|GÅ­�������€é+ÅP::Ëÿ×±:«HÔ–M3Êím]ѱfIVè(Ÿf̘ÑWÕL5³©IÀl’«Uµ,ËÒe –¥)Í·¶¶GKÛÜX¾ª«:��������¶¦#M©ZÙ‚˜3³;º:–Åš5«³¢G)d–¦&«42›ÜÌ&©ZÁ²|J²U«Ve)Ñ4ß>kÝX¾ª5K–�������ÀH¤GóbÎÌÎX½òÁ¾.{3gÎÌÖ§@Y>%ª™Mnf“P1\–_Ï«–¥5…ËÒeûÌ9±¦kvy§��������U©àьČ–±zÕò,¿’Bf©ef^Í,)Í„Ì&³I¦:\VœR;Ì.ë©Z6¿¼Ï��������+Yë̘sfµÅê•‹cÅŠYÈ,µÌL³<P&d6yµ“B"«ž¯—¥³}ÖzÂe��������Œ›”UI™•”]I–”e©Î·äªçinf“@õU½óuttÄêÕ«{Ê Î^¿¼Ãúg�������`|¥ÌJÊ®¤ Kʲ¤LK½Y"d69H"5¹ÁÂeÙ™.gÎ^ \�������À„é ™-¨È´™MnmAÓ,\–Òž©œ`J{ÎhŸ¥-&��������.eXfµÏŠ5«WFKKK”J¥ì²(-Ë¥Lqžæ¢ÜÕ$R.K Ï0ˮǼ��������€f²,yñ¤”qI×ëU1£¹ ˜5©ê)ídÅuiÊËΞ»A¬é��������h )Ë’2-y«Ìê`Y1 “5/³&To‡)¦8S[Ì4µµµÇòU­��������Í$eZR¶%Ϲ VÁLȬ9 ˜Mµª—¥òé²­}~��������@3j›9¿"ë2P3š“€Ù$‘v®¼m*˜¦Ö¶±bµB��������šÓŠU-ÑÒÚÖ—w)f`˜¤“šLõÎS«ßl^2°}¦êe��������4·™³Td^Šjech.f“D±mÚÙÊKbMgk��������@3ëÈ2.kfÕ­2infM¤zÇÉç‹;UJm¦©µuf¬é��������hj«;"˺乗¤˜‡©—™¡9˜5±Z;OêE›Ì˜9'��������`2ȳ.)û"P6¹˜Myb3%8{fi§j ��������˜J)ëÒS\)e`´Éœ<ÌšTqª¾ÞÕUÞÙºýÓ�������09tvµd™—214')¥&Qo'©^ž÷¡íê*��������LyÖ%ϾäÍÌ0qÌš\¾³T—ìì²�������“B1ëRÌÁ’5¿¶`RÈw¦µ=h��������&…”uI™—¼‚™`Ùä!`6騹��������¦³•+VÄ¥]ÿúûßãºþ#îºë®XüàCÑÖÖ³fÍŽÍþ°Øvûb·=v'<ùÉåe³¢yȾL6f��������0 üï¿ÿ³Ï:+~ÿ›ßIJ¥Kû­ïèX+W®Œ| þõÄ/þï'Y¸ìÏ~N¼ì•/M7Û<`¨Z‚¦Sì3[½�������€éeÕªUñ­¯|%^ýÒ—ÆÏÎ>»f¸¬ž8KA³#^|püñwçF3¨—‹‘iNf“€�������`zZxÏ=ñ¦W¿:¾ýµ¯ÅêÕ«c¸:;:â«_øb4™˜ÉA‹L��������hB7Ýxc¼÷ïˆûߺ7Þ$xö³ãq»ìÛî°CÌ7/ÚZ[cÑ}‹âö[n¿\qE\ð‡?Æ=÷ÜÝw›ëί¸K/º(Nûôɱjõªx÷qˆ½ö~r@µÒ(lWªq} ËRù|j)\æSkï²Öª)­Kù-«W¯¹$&©ê4f±ä_WWWßÔÙÙË—/+_™›��������SSª\öÆW¿:î_´¨by –õö£cŸ§í­­7/LUËþxî¹ñ»ßü&ZZZâMïx{lµõ#³u½úê8ö­GÇš5=UÑ6Üxã8ûœsb,u­º«ü<J1gÎÜòsoÍžS>%¥R)›ŠªçÇSþØwÜqGÍõ[n¹evY¯[{ûŒ'•/ºÊÓâÞËΪ©»÷²«0u.«§¨3?Ðeõõjƒ–‘SÁ ��������šÈÊ•+ã¸w¾³_¸l¿žÇ~ธ5{vC÷ÓÚÖÏxÎs²©è¶[o‰¼ûÝ}Ფ%&.ÈEs0�������€&ræ·¾µÇ,:ä°Ãão;zĽRhí}o?&–.^Ü·,ÝçQo{[@-f��������Ð$îºóÎøá÷¾[±lßý÷•pYªŒöc»ïú_Åò×¾éñ´žPKKдªû³Öë× �������ÀÔpÖw¾«W¯m]¹ñÆ›Ä{?ôá‡Ë:;:ã£ï_\÷ÏV,î _‡½òU1ždb&Ì&;�������ÀÔ—*Œ÷ûßU,;êíGǬٳc¤Nýô§ã²‹.®X¶×ÞOŽ·{lL™˜ÉAÀ ��������šÀ¥ý9–-]Ú7¿É&›Æ¾ûí#uæ·¾¿üéÿU,ÛaÇGŇ>öñhmk ˆ€��������4üíoóOÖ³¢¥¥%Fâçž_ûÒ—*–mºÙæqâgN‰Ùsæ fd��������À¨¸áŸÿª˜Ü®»ÄH\{õÕñÉãO¨hE9oþüøÄçN‰õ7Ü0›_¹bEÖšê0�������€&p÷ÝwWÌo»Ývó—_|IrÐAÙtÑŸþ4Ð]Åm·Þ|÷»cÍšÕ}ËfÌh}êS±ÕÖÌæý‹_Äóž~@<oÿ§Ç¹¿úU@-f��������ÐV._^1Ÿªü‰cÑÂ…Ùô‘÷½7ÎûýïjÞÏý‹Å{ßöŽXºxqß²R©ïùÐcçÝvë[öõ3ÎÈhiúú_ ¨¥-��������€ ·jÕÚjc)ÖÚÒZ±¾¼¨OggWœø¡e×÷;à}ËW,_ïç1qÏÝwUÜöµozcìàÛ¥ ZnùÒeµ¨`��������M`ýõ×ï»ÞÝ݋býÑï:6ZÛÖ†ÎòY^ɬ³£3>zÜûã†ë®¯¸Ýs_ø¢8앯ªXöàƒTÌ/Xo½€ZÌ��������  l¼Ù&óÿ¹íŽŠù½÷Ý7Ž;þøº!³S?ýé¸üâK*n³×ÞOŽ·{l¿Çºõæ[*æ×ß`ý€ZÌ��������  l»ÝöóW^vi¿mžöôj†Ì>öÆ/úÛî°ã£âCûxŶ¹kÿruÅü£óØ€ZÌ��������  ìñÄ'VÌ_ðÇó¢³££ßvµBf©¥fѦ›m'~攘=gN¿Ûwt¬ék«™Ûåñ¨EÀ ��������šÀn»ï³fÍ꛿çî»âçž[sÛZ!³Ü¼ùóãŸ;%ÖßpÚ·=ïÜßÅ}÷Þ»vûuÖ‰]̨CÀ ��������šÀ¬Ù³ãÙ/x~Ų¯éŒXºdIÍík…ÌfÌh}êS±ÕÖ¬y›t__>ýôŠeÏyþó³Ç†ZÌ�������� IzøÑÖ6£o~áÂ{â3'}¢_ Ì\ ™}ä'Å&›lo¼I|¤¼íλíVsÛ®®®øÌ'NŒû-ê[6sæÌxÁK ¨§-��������€¦°ñ&›ÄK_þòøÞ7¿Ñ·ìO¿ÿC¬»îzqô»Þ¥R©ßmöÞwßlH ¨}á”SâOøcÅòWydlºéfõ¨`��������MäU¯{mì°ã£*–ýìì³ãøãÞ_·]æ@–/_z÷»ã§?úQÅòíµCzÄ0�������€&ÒÚÖüØÇcƒ6ªXžª½ö°Ãã·çœƒÞOggW¶í+yI\tÁë6Ùt³8ñ3§d)Âv¥×º,ՙϧ–Âe>µö.k­šÒºùérõê5—Ä$UÝ#7ͧÎÎÎì²££#V¬X]]ÝÑ2SiB�������€©ìŽÛn‹·¿ññÀ}÷õ[·ñÆ›ÄSžö´Øc¯½b‹Gl Ö]7ºººbéÒ%qËM7Ç_¯¾&þø»sãþE‹úÝ6×N9ýôØr«­b<u­º+ZZJ1{öœhkkËÚ}¶¶¶f—Å©¨VKÐñ’?öwÜQsý–[n™]Vgríí3žT¾è*O‹{/;«¦îÞË®ÂÔ]¸¬ž¢Îü@—Õ׫ ´.#`ÖÌ��������¨å®;ïŒã;.®ÿ׿b4<ú1‰ã?ùÉ~ÕÑÆƒ€Ùä ˜i‘ ��������Mj³‡=,¾ðµ¯Åá¯zu´··ÇpÍš=;^ùº×Åç¾|Æ„„˘¼4Q�������€&ÖÚÖ¯}Óã¿8ÎüÎwâÜsΉåË—7tÛuæÏý<0å+cÃ7*-2›€™��������4jÍšÕñ—˯ŒË/½$n¿õÖ¸óŽÿÄò•+²uímmñˆG>2¶Ùv»xÜ®»Ä^{?9fÌ~å³Ñ¤Eæäl‘©‚��ÀQï ìd6‘�����Í*ÆRp,M0ÖÌ���&™$k†àÕx<‡©š���h&iŒ§z ÆI� ˜��Lžf^ ���L~ùP�õ˜��L !-����&‚@�0��gã*›*„x����£/o‹YC*ŽÃŸP$`��0E4[ ÍÑ`0���`lT»‡ 3��€qÖÈ`Ýpb����€Ñ&`��0NÆ¢ª˜’����4*?A±Ñ1%'4˜��Œ‘Ñ “���0\à ‹UG œLOf���M Ö¥ºá†ÈFz{����¦¦¡V-+Þ�3��€Q6Ø`]½õý]£ë���˜^F;(–?  L/f���£h W#°ÑÚf\ŒÇó0X ���0dƒU-, 6X,¯¦Àô `��0 F,écLYª²��� M©4h°l°q¦êíj…ÉT3˜>Ì���ÆH£°a·¾¾��� h€°W½ X#1a2€éMÀ ��`j…¿†ðvUëºC¸ ���€¥è ~ǪÂ`õBbÅ1©á´Î>˜úÌ���†a(!±êe U6k P6-[f���©yUe³ê±£:í1k…Åz¬|»Rƒ6�&?3��€1TkP®Tg0¯p£ÊÙaT+>���˜š[Ê6ªžm<pV|Œ\­@�Ó‡€��À(i4ÔÕÝÕU] \í¬ÑÊif����SÓ@A¯êðYß|Ô¨.Ö]£êÙÚ;ŠÁLf���C0šÁ­*“ J{N����¦¯êØ@¡°4VUŠ‘Æ´Ê˜zÌ��€I£YÏŠÌͬ"6Hø+mÛHˆ¬zP����I7+Ž5ÔJ3jÁj…ÄT,˜¾Ì���1!®bõ²¡ÜÿpBh����L}ÀªChýn—_ônÒ=ÄûŒ€Àä$`��PÐè X­ W¿ÛæË£±v—µîg eÕ×���˜ú i×ÕÚ®Þ²<dV¬\–mÛ]Ù63[_çñ}^�L>f��� j˜«^°¬^ ­«««æö]3���€i¥ÞhP½Šbµ¹,ÊjU6kiiéã*Í»¯Á‚n�L.f��� ¨.«:ën¬jYq~¨2-2���¦Ÿz­îzÛõ^Vßn  gÅŠf}Ëò Yw߯uÛrVÜ®Î8•àÀä!`��PPïLÏ¢z±h 8–Ô«T–.kÝWÍ�ZÔiË ���À”V]I¬Þº¾W>~Tèê®Qi¬X…¬ßýÔQ\_¯¢�“›€��@¯FªŒÕZ—éª_a±:Ë ”õmßß@?����SÏ@­ê W1pVê.­m_YU],‰åSõ ÷[ê½ß´n€*e*˜Lf��À¤1–ƒN³ —×WWCë®"‹á±®î®oSóù6ð3 ���L¶Â,Ü âv¥Êz‚a-¥–ŠûËÆ±jÜ®8+^ömS +ÿ×]x¬êq²â%�“‹€��0íÕ;ò‘0W/«Sµ¬zY~=›/\/ÞG¿íòÇïî_!­ú¹5ë3���€É` V˜5·¯ë½’]´´´d˺¢«rÛÞÐY6&Vu¿iÌ)Ýn°±§bà¬4J»M�š“€��0iŒÅ�ÔPZMÖjgYkûZ!°b°¬««·:Yo°¬o¾*PV«bYwwÿvœõžo£?����Íg¨ã`³è_Í,é.C•ZZúoŸ®·¬m£…6šÙíªÆ¡Š³¾*g½cVÅ`\u‹Íêûª÷3�Ð\Ì��€Ic¼Âeµ¶©—C^Å€XÝJd…ëyûËt»ì¶uÂdÅ6™õ*šEU+‚Šç:ÀÏ���@snÀ,j´¸ì»žþK!³Â}§°XTµ¿Ì–÷V4ë©x-2»zï£V+Ì4nVêé»™-«7UëçSá  9 ˜��ÓR½ eÝõÂZT«®T–ëêìì[žÂb}³®Þë½—Ù|Ô¨v•ÕÌê=Ç~Ïuˆ?7����Íg8A«RpY:«®h–ÄRȬ+…»z[hfcP-=ËÓ‘ƯªÚ]&y ¬ß˜S*€V2kôç2h>f��À´ÓÝ`ůêªeÕÛÖ —ÕšOÿuÃdUÁ²¾ÀYoè,Íwö†Ó’¬’YwjjCø[���@snȪx»¾ YK)«H–ÆZÖV&K²$KãOÙú<ÜÕ[¥,KjíiÙ׳ªÅf®Ø3»ž‡ÌzÖ¼M=Bf�ÍEÀ ��˜V†.ËbbU¯ºUÐ -3Óà\±f~=-ÏBdåeÙÔÝ{=„ëêJg‰–¢³£³¯ÂÙ@ϹîÏ����À´•ÆšŠÁ²bÀ¬µµ5ÚÚÚz–õ.omi­Ø&1¥íRŸÌ,ô•ƹRųÞ1°Ò�á±4¦•‚k=Ýž·2hf��À´Õ]£2Y­`Y’˜åÛÔ¬TÖËÃh)@–‡ÍÒõ¼MfV¡¬7TÖ3­ÉËfÎl‡?l³XoÝubÖ¬1£<¸7£­¥ßs���€¡HCKÝQŠ5k:b鲕ñÐâeqç÷ÄêÕ«ûNxÌÃf]-ÑR¾Þ4ëûJëóÐYKU;ͤ¥·²YR\ÞÝ[Ƭ”=‡¨Ø¦ò9 ”4+3��`Úèîz°Z÷Q3`–·¹¬ny™ʺ:ûgkÖ¬ÉîZ[J1oîÌØpÃMbÃõçǬ™måº|`.Ý{)«bf\ ���€‘Ⱥ^–Ç­f¶·–§¹±Ázsc«-6ŠeËWÅý,‰E÷=+V¬ŠåËWg!³3fDW[[*KA³R¡ýe$Kÿëê Œå-5«b5ÃbYëÌRïÕîACfBg�ÍAÀ ��˜ò “ 'hVQµ,;ý³»¯íeE¸¬««¯rYº\³zu.ë.Ïo´áº±ñF b½ë”íJýî; ù­]����0ªRn+ü˜¦Í6]//Y >÷Ü{6>Õ–*óϘÝ­ÝYÈ,-Ká²¾ñ«ÖÞûé.U.ïU ‡Õ ‰·/Õ ž ™L<3��`Úª—åa±ìzT¶Ì¬®Z–·Ìì® –u¥@YïõŽÎ޾ùÕkVÇêU«cöì™ñèY¸kï«V����iF[kVaÁ:sâa›oÿ¼þ–X¹re6î5£mFt·uG[k[veÊ•u—JÙ˜WOõ²È®·ô.+¶ÊLú‚cY“ÎRE³"A2€æ%`��Liµ*”5º¬Þýõm[#tVÝ3µÂLí1Sõ²Í7Û ¶ÙjÓ˜5kfyùš:fÑ����YÕ²¶ÖX0¿-öÜmû¸éֻ⮻ï‹î®î˜Ñ;–Zfæ'^&}a²RôǺ í4óû-Î÷.Œ|4®Ô@ØLø `b ˜��SÖPBc}J¥µUÌŠ•ʪdi›Ë—§JeÝ…V™)XÖ±fM¬Zµ*k‰ùÈ­6‡m¶~y®éìÎÖ~­/{É&¦f­v�©>P�“Qñ@W©p ��¦³<h¶ÍV›ÅÌöö¸íŽ»úÆÅ¢<ßÝÒÝøJ#gé2o‘i,­7tVó{cVð¬ÔïñêµÇ¬·�ãKÀ ��˜VŠÇŠ—½3ÛuWÍWßO_ ¬«Ð"3…ËÖ¬Éf)\–Ƽý¨­bƒõæe-1«¦æ}æe1`VýsOÔó�šŸ SA^m¡Öû��Lgéãq ™m¹ÅÆ1gÎ̸î†ÛcõêÕÙ8QÛŒåÓ‘¥Šf¥BKÌ–RKZ•µÐÌæËëúÌ‘‡Ì ­2k…ÇÊ�š‡€��0mÔ ‰fz.¢ö6ÅÖ—ÝÕ­0;;{fåÿ²–˜åùžêf]Y¸l£ ÖÉî#mÓ3(VjèyŽïîR6žW+Üæ€;P‹×&³z-xê­�€éªµ¥o¸ üyy‹øÇ¿n]»¼­-«d–´+ÅÚ(ó“3óY¶>_Wþ¯‘�ÍAÀ �� J1<–Ï÷]桲îÞªey{€²,Ka³t6gggGlµå¦Yå²|@m°²êõã9 6`ø JÞN0)8€ÉF•��Xþ]o£ Ömùð¸õö»²±¯ö´°­­çûaw)#ëêm•Y¾-]å­ýÆ×'ó™ ù˜��SÒ‚uZaö ™åÁ³è®¬hVž::;²pYª`–Ù6ßlƒxØfë—Õ†ºÈÏì̪ uvŽ{Ë®4˜Z¤©xv)@µ¼=pþz•®CóKï©¥¾d>åï{Iñ½Ïû ��ÓUõxTúlü°Í6ŒeËWÆÿîZ-­=cHyÅþRW)k•Ù]èBgQ”ÕºÏÞë«b6”çåó:Àø0��¨a  Yß|o,—uöV/›5«=¶ÙjÓò Ûй–/_^ÔÈÃfã0K“`ϧ4?gΜ�(Ê_¯ò€Y6ƒÉ¤x0jöìÙÙ��ô¨„¥Ï3f´ÆvÜ,Z¼,V­Z­-­ÑÖÖÖS¹¬ÔÒSŬ¼mO*¶ÊLª«’e÷-0i˜��SÆH‚X©åeñ~ò)xå­0óÖ˜}Sw×Ú*fYkÌ»MÌœ9£¼¬ö(Yq€.ŒÖXµjUÝíÇCþ¼ò[.]OÝÓ€aô>ç¬ÝAùyçÕ^’|¾zÀ0?“hÅþâ™äÕûtõàZ¶bÅŠìõªî™ç0 ¥¿ë•+Wfïué=oÆŒ}Ó}z÷íz`²*ï·…Ï祬¢a^-¥ü™¾êwšëîn][L¥Tù}�ê©õY±ø9²8.T«ª×D)~O¬'­›={f<jû-ãš¿ÞkÖ¬é«bÖÕÒ•U1Kß*óV™½o¨ÙØRñûfþ{ÈÇã²yi3€¦Ö���Ó\w c ¯7h‘Ðz/SÀl³M6ˆë̪hõ¿iO{®$ Ä-Y²$«|Ö¬V®\•=Çô\sÕ­ Š?S5᡹õ;ƒ<jïãùëU­pLéï|Ù²eYà¬g?ˆ¾–ÑÍx‚î•,,Ö•]ï9¡¤”Î8‰îžEÙ“l*¥0@WïÔSÁ¸çv�P_õgÅâçÈêõÍô¹²XÁ ]1Þ¬Ød£õzO¶ìÌÞ#ó“’òû*^0ù©`��L; ˜ 4È——öï› ó©Mfj‰¹ÑF Ê—©º×`hÝYÕ²ü�v3KãŸi°pñâÅ}-ÄòJGÅße1Gf�š[­}´ú`G1x–^«–/_öm¦®ü=-½ç¥÷ètplÞ¼y}ûB,œ†Iª”¿‡•÷ã<(VÞoZØýÏšòeùóîªòAóÎîh/®omxÄ3âqo6k‹Y3JùÍ+?ø@•¡œPëû×XhôqjUY«%­ßd“õâþ—d!³¼ŠY©üšU¸Ï«ÿ–z+·Eôk—™ßOáÁ½Ç413��`úÂÀUE°¬Ð"3_¶zÕêX0N¬¿Þülûî6¯”“IôKÏ9µkoo¯9Ø(XSGÖ®¤·:cÏë•ý›©¯Ø3U]ºtiÌ™3§¯ŠYR]á˜LR¸¬|ð»¥'Xöõ‹WÆ…ÿ^]kbMW©ï$‘´·–ˆ·´µÄÌÖ–Ørý¶xÃ>sbï­Û{ZiÖ/Þ �}ò“óò뵌×É >N£Ûµ´”býuçÇÜ9³âÁ‡–õµ˜ïnié ˜NJLÿ ,`R0��¦…¡”æ/VåÊ[áô«^V›¥êeåià ×òñ§A# ´¥Ê(“íÀtþ3§ÖaéÌÔÁ¶Í¾çƒŠÀÄ+î›ÅýZ­Zò mz½‚é ŸKï[-½ÆRKØôž7kÖ¬š€I$«žÒ+;"οqeœqáŠX´´³÷œ“R̬8ZÒ³¯éꌕåׂ[uÅ»Ò/Úef¼ú‰³cý¹icƨ­ºµzu˜ªgy¶å¸ž¸P|ƒ=æàÏ)U9ëŽ 6X7|hiV¸ºŠY)× åd%UÌ�šVK���Lq†ËªZb62ÀÖ¯=暎¬ª×†ëÏohP0…5ÒÀ[Ñd:s3=÷2«þŠŠíÄ€æ1Ð>Yýú•ïë©‚YÏ:û5S[úÛÎ+•åúÒ”Bfé�Ù`áj`2莳¯^§¿"-éˆÔ&³Têì}oKSKÅ4£üšÐÚRŠÎTÙ¬»#~ñ×åñùó—ÄC+»�Uk¬(ÿZ5ž'.+ñ–4–¤ïÕ÷ßè8[­eNè�h>*˜��TɲÒÀXTU,‹ªu)€Ñs–fĬ™muï/o‰Âeé@u­mš]ñ9¦¶a3gάy°½úì\ƒ‚ЊûfuH¬ú û$µòMûza«ŠmaªªnÛ“–¥}!…ÉI¤»÷üúR ƒuEK©3ÎùÛòøæÅ«ceGϲôÖÖ+ëêýÿ–è,õTßm-uôu‡Îß5×tuÇù7®Šùs–Æ1ûÏ+/iíi™©4�5Ôª/UWÆ­Uý=m“ÆœÒçÑ<À•Oùúô5ŸªO–(^ÏoSý½p$ßïÒígÏj/?vËÚ“Šch…ßCÖ63]ï=©£ú3w­JoÕ¿'';L,£"���Q?0Q³-faêêî9;óa›o­­ÅÁÀR¿ºîÞ@ÚT‘Â')d–¬$­¿½Á@˜<²êŒkè‘f³gÏ®¨Æ‡ÇÉá–û:ã»W¬Šå«Ëûo©»/5–öê®RK´–§õç´ÆA;Ï)_¯ZKª*•¥›¬)œÿñÕ+c÷-ÛcïmfGÉK� ÊÇEªXyàª8n’Æ\Ò Šé2¯ VKZ_kIã4iJ³bˆ«8F5š!³4ö°Í7‰Ûn¿+óªøŒÜàý4^T=®f\ `â˜Ð4TB`2ò…&±Þ6—å!¶~ïAC)ÅŸm[èÛ`ýÊuªMùÙ³ÅÁÃô²è-&‡üsLÚ«?Ó¤eSçõ F*¯¡ŠL.yƒçT°ì¢wÄÝvG{kªD¶¶*Yº¶ÁܶØÿQíñê'ÏŽõæÎˆTäå÷ÿZKV®®y¿åOýqÖ•+cÏ­Úcf‹ö¹�T*V«V ™%yÕ±|],KS½ ^õ*ǧe+W®ÌNŽhooï šåëj9ÒñítûõÖ]' ˜¥“0óû-†Ùz6¬üÔ¬XÖ;N@srn �ã®^˜Œü=Có«µOV ¦EåÀZÅöìÏÝ=÷1³½­wóRaª ¢¦pYÞ’`*è  td׋¿·ê|^¡yÕ Ø&Síõ F"?—ò忀É!ûT^êŽWtǵwvdA³®tðºj7Þ{»öxã¾³ãÊÛ;ã–Ei}ª$SÿðIz·¼þžŽ¸î®N‡Áè§zŒd óÏ–é;ØŠ+bÉ’%ÙçÎü~ªÃX¥Þ“õ7ŸRÐ,ÝWºÏâw»âçÙâ}ä3mÙÉ—ÙY,‹Ê±ò|¾úùöû†ØvÚ˜Àø0`Ì Þ0ù»‡‰7šû^qP¬»·òYå~žZ´GO[Ì–ÈÃeÕ¯S1`–WdóZͯÞZg¾§}Û~ k¥ý$U‚*Àø[º²+n¿¿3 –uu•¢úØuggw|úÜqâo–ÇKËûù ïÝѫ˃ÿuW‡÷K�T¬.V½,I'îåa°åË—gëò–˜y˜,ÿ.7؉|ÕëÓý¤ûL÷£Ö÷¼ê±«¡¾¯¥íÛÚZ+dõ.{gúÝ€ÉAMw�Æ„/P©Ve`b4ò5ôphy0­5U9èêw?ÕˆSí=r*µü„é Ñ× ü€Ð#?ЗÔj+ 4§¬ Jw)–¯éŽû–tGís=ºã[kOéÊú¾—bàCÒú{—¦vñåûÍÞ3Ï@âxP1`V¬–‚ciL%ĪŒ+Äe,©:ÄU¬n–ßWbKf̘­­­Ï'~ÃûY#Úg´V>×AÚpÖë6з]Zïó6@Ó0`T9ƒé—v`l4úV,[;WÊÆ½»‹â@âtRÝ2˜Xõ>u[Û–âÆnŒ+®¼";ì°ôªÝp˜Ûo¿=þüç?Ç‹^ü¢˜3{Nt‡Ö¡ÓM÷ È&îúÏ;…p.\¹ê/±hÑ¢˜3wN<f§ÇÄ;ìÐsð1Š'ÌDÓp"ÏtWÊêßwÿýqÝ¿®‹ÿÞùßìàù¬YsbË-·ˆGíð¨Xw½õÊ(ÙßÿšÎŽÔ³Î}e}ï£ÔÒµÔìÙ_z§üϬTø{ë*eÛ®XÝÝ-QŠîÞí‹0ðç’âw®<ø•‚f=Ëóñ¥•¿¹¿ZY\–#=V±*ZºÌOžîwÀôÕ¡¶ü²ßøY©òy埭k~Æ2h:f�ŒŠ±8�%¬F3̓‚f0ö†Ê}vwk[Tï`»ßL>Å #9ÈÐlʇNâ†nŒï}÷ûñÒC_­­=íŒùñn»íöøÞ÷¾Ï~ösb½·óú6ÝÔ=ð5©¬}îÅŸ#T¼é¦›ãôÓO¿ÿýïÙǶ¶±ÑFÆË_þòxÞóž×[Õ©Wú=´4Çû¼ïRÓ[gGW\|ñÅqÖYgÅwÜ‘µÿJÏ[ZfÄ‚õæÇÖØ²ü7üÊØ}£Tþ;ooéŒUÝ­å¿ÝZ7ÝY€¬»7*–‡ËJ}ù²Ê¿÷ÖòûJwyjŸÑ­y3µÞlɃfµyÿ�˜~êÄ“·¯Ì+—õè®øŽ2ZŸuò1¬<L–*˜¥©ÖçÛÑ~Ìü>¹ßéxR&Àd"`ÀˆŒÆÀ˜Á5&“z¯#ùâ+hãgª¿çTØUW\˜nÒkßwÞ_>ã«Yp&9è ƒ†ô¹+?³ÿÈ#Œý÷ß?^úÒCcý ÖóÙI¦ç3B:¨˜ö‰O|âñ·¿ý-; Y«S¾ÝI'”MiY:¹É&›Ä+^ñŠx泌Y³fÆDÊ[–+f0}¤¿ÉsÏ=7>õ©OŪU«²¿‡ô7š.×ttÅ¢…÷Æ}÷Þÿøçõqæ™ßŽÙ37‰ æÎˆ»wGíïéï¨;jU «U©xu©+f—§Íæ·fÒºZÊêË÷Üå#7Àèé£÷øÒÄU$Î?¥÷±êOí1Çë{E~ÂDzÌôž9gΜ/}'jÆÐdg�ÍEÀ €aîj¸™Šªÿ®‡óÅ×f˜xµÞ£š¾RYyÀ5Ujx衇²–V©rC:È–Ìœ93ÖYgØh£bÝu×͡¿Ê¾´w¦‡Ûn»->ö±Å=w/êm;Ó2ÌÏiQ>�´*~ó›ßIJåË⨣^óçÏoè¶õ*ÁÕ{cùž“b¥)ikkË* çL=¡±þóŸñŽw¼#–-[–ý­¥ÿZm&«ÿnóƒ¡wÝuW|îsŸ‹Î®Žxñ‹_ÑßW~} j‰µž[zΩZÕ…^ííí±÷Þ{Çf›mf¬aš¹ôÒKûÂeéo#}ÞÝvÛmcöìÙ±d鲏忛ãŒU+VÆ/~ñ‹8äˆ×ÇVÏŒ»¯¬Ñɲ[mÐÛm\>\ÒRŠõç¶dÛ<iÛqß’–¸uQGܲ¨³·Efï bå‹™í¥xTù6-¥®òÒÖ¬«f©|Y¿€Ye«Ù®®î)U-`´ü÷?ÿ믿1FSz½M­¿þð‡G3H!ÿ+VLØXpzÿLŸ£Ò4QïCÆÂ&3�†l8_8´Ðd²ÍàùOÕÌ`üU¿Ÿôʪ‚eÍø¾ÓÙÙ7ßtS\tÑEqÓMÿŽ{îY˜ÍòðÀ¬Y³²�Ħ›nšpK`·Ùvë˜1cFßÏãý˜ªÒç©+®¸"î½÷Þìõr4>_¥0ÀÕ¹:îúßÝ ÌÒëìüã¨~n½þn°Á±çž{fA‰âóéÏð—¿ü%þð‡?d´¶Új«xñ‹_œ™ÒŸÏÏñó,Œ>P›¢bȬ–t@òûß;3ûû©Uíi0?ýéOûnyÌcb×]w­ùxàøÕ¯~Õ„;ðÀ³}#=þ7¾ñøõ¯}¦IÛ½ò•¯Ì2=ÜÿýñÕ¯~5;0ŸN HG©Êd Ì;7–.]ÿüç?âëßøV\ÿ¯ë²¿•—qD<f‹ö¸âÖ•é|‹è¬úÓÝg»YñÖýæõ†È’R¼ó€yå÷ŽøæE+ã¶ûVDÖ¶¬§fÖzy› "Z—Þß9óŠò]–—¤àdúQoßjé¹ïô|wÞyçìºâ�•Òûþe—_Ÿ9ù3½KFgŒ4½4sÌ;ãàƒ·ˆ‰”HŸgÆ{<¦8”N¾IcGé³ÔxË‚e…ëÍŒ‘43�†d¨_zÆz{mCùlô îpÂfÎà‚ñ3«¤ƒ¬)pÖ™gÆ9çü:/^œ-¯þ9ÒÁÛ4ÝsÏ=Y¬Tyçéì¯}íkûBfª&�SUª”*;¦×Ë––¶Q{­[¼xIVͬÑÏkéy|÷»ßí;x’WŒ¨‚ÙöÛo;î¸cÌ›7oT_£.\˜…ÌR[œtP+]2}¤¿¹»þwW_Á׿þõñœç<'û›LŸ¾ô¥/õ ×§Ê`)È“/îsŸ›]¦Ï=嚆þ÷ùío;î»ï¾ì>;ì°Øe—]úm“Ö¥àXzìô\Ósß}÷Ýc½õÖ‹5kÖÄÝwßm—®§íòŠhC•çöÛo›nº)›O•_÷Øc•ýšÜ5×\ÿýï³§Ô¶õ¨£Žê *¦¿•õ×_?ö~ò“²(ØI'~2î]x_\~ñe±Ï®OŽßüµwÜ×ÝÓö²ï»ã쫗įÿ±2eÏÊûHy}wKÏß^ùodÅêîèêkŸÙ[I¯kUú„ ãö뮊3¾ôµ˜Qþ“éè8Ìœšs¦õéïþq{\o5¿Î ý{KÏ!½\{íµ}áÓm¶Ù&¶Ür˘JRÕÃn¸¡¯%Ü^{í@ë{Í±ÑægMßOÒg˜ÜxŽ'½þ§)÷8tñgð½Ó9@S0 aC9°Ñè¶h3™ §-æP¾û coÈïCMð¾•t¥$Ÿ=å³q}ù Iù˜TvPª¥¥³fÏŽóçg­1Óài:5…ÏRu‡4B»té²øÙÏ~×_}¼ýíoÏZC¤iBfÀT•¿¾u—ú§Šc©úÑÚ#Výz¤oÙoIzííi³Ù{ $zÚ7òryÈ,UBK¡‚\z-N¯ãk7ŒÞm*Û©TþZŸÞ7Òû‰×þé¤ÔWµ,låm´ÓßÖ>ûì7Þøï¸í¶[ûn‘6¦Ê`)¬Sü¬_Ïî§%ÝçÐþŽÒíÒÕ|_(>Ç\¾¯¬Y½&:»:{Ÿww´”Z²pÈa‡>ø`ùg˜ŸU6›=kvo]©!þVÊ÷{饗Åi§–=úV[oguæ8ííÔöÍzÒëW ¦Ï·éß)…q·Ûn»øßÿþ—}öÍ‚¼¥ô¹xf<æ1Žm¶Ù:®¼ê8û‡?ŽÏîñ¸xùž³ã³ç-‹ùÚòçæUQž:²Üdk |u§×ÈŽ,–mÑ÷"Ü3Ê/ÿí¶nì³Ý¼8çÆ¶ìñº³Ûtgÿt)4P|½M¡¦z¯áf,?Í+VÆOÿbÜpãÙþùŽò÷„ž€ÙPßxÆûï¶Ôðc_|ñÅåýüóÙ¿ÃV[mO|â½BÓ*Å‚uĶÛn•ûùÈ? /X° &ZzíI'zäŸÅª*›¤íRËçåË—eßeÒç Z–/_žøç̙뭷nÍ÷—âã埵RÀl´ªÀöºš­7Ô 0© ˜ÐÑ ŒtðÆàãi¨á®FgÅ3ܧŒ|ÿÊû\ö_¡­Àx OÏ5þýï›â+_þJÜpÿËO ËR•…–¬ÍÎ>û<%óØ²ƒÅÝåu ï¹'þõ¯ÅŸÿüç¬*Aº}:jvÃõÿŽSO=-Ž:ê Ù9¯3Àt°ï¾ûÄ›ßüƵ!”ª/¥uUG?Ž8∬-ÛP¥×Ø—¿üåï9©mç¯ýÛèXÓ‘…ËžöÔýzæ—º²|Âzë®ëÌ›Ÿµ`[ûœÖ^Iÿå´zïA=Ž¢òöùÏU}•Û¥ÐPºqWÖ¾¦÷ T_õžáÊg`ÆWú§IÇÿѪå=ÕšŠÿd£ÿïWÊ>Ïô¿ïîlyV˜,[_êÝZ²¿Ø½Ÿ¼wìºËnÙ–óæÍíý[$°Uê®Ø»{÷‰î®žçЕ…ƒÒ|dSó^†QºÕ÷Uk¿ÎÛ+Ö[?]¤Ÿ=o±š¤°@:ØþÞ÷¾7®¾úê¾ïÐûî»oœp 1wÞ:éVqëí·Ä…—\Ï|ÎsãÁ奸ÞU+â¡å×¹ì­ ½ÖelÙ}ve.½s•ÙߘÙVЧnßG>inBÛq‡mã¨7½¶ðü"~þ³_d¡äô\Ògíô\²ƒ÷¥žPòN;í´öß¼Öëð`JC}=Î_ïûËÿîÓß|úÛ_»ŸµÆPêße©N€»{í¾Yà®'Ûß»z~)¨š~ÆîÎRO=º¡ìÇ¥áUJ†&í–°6Uèn ·:Ì>ñï¡yáê1©Z¯I)\ö™“O‰o¼1öÞ{ï8üðó1Ÿ|ûtÛTµù{ßû^\tÑEÙûλŽ}gl°Áúýî«Ö )ì–ÞGG#ðœÆÇÒ¸S^ËÇÐFÂw€æ"`À  ­`™�Íd°¿ÇÁ¾àv­ÑƒlBfИ©ü’Ÿašþ¾õÍoÅõ×ßÐHá²g?ûÙñ’—¼$6ÜpÃHÕtR0 ÆIÊÒ”ZJýà?ˆsÎ9'»Mºíuÿº!¾ý­ïÆqx_Ý3`¹ôú}È!‡d×óÏué�Ñï~÷‡,`–*Û¤ƒEéµ: ÀdÛ­=ØôßÿÞ—_~YÜyçÙÁ¨ôZÿØÇ=6vÝe—h›ÑÚ÷}Ê·½gá¸àÿÙ{@I²²Lû;™w­½ªºihºiš¥ÙA6•„AADQÇÅYÔQõg—q܆MYdQ6„f“}“}í½ºÖ»dfÄùãýÎùNœÈ›·êVÝ[U·ªÞ²ï­›‘‘'NDFdÄyâýþù½šèƒ”ª+®¸B¾ç{¾' 5ã’™%šáqõÕWkÒ%ª¬üÚvÙí.Må•ñüç?ÿy©™hH„p*¾a”°ûêW¿ªm›Õ”),«-Ù<X¢!é\rÉ%ò“?ù“1u©M¸°ß×unâÝØã(“gRû7‘÷¼ç=òÝk®Qí Û7Ê æ£Ø>?ô¡É·¾õ-M“BâJ(Þóž÷¹ùYæ[ßü–|ä#MR@òë+^ù*™žšR)Èp톂~ðƒºmãóïO·¾õ­uû¿à‚ :ežÐ—¯~õkRR!J‹¢¬ç»Þõ.Myò“Ÿ¬óļðs~~^Köþùåç;ß©B*Þû–] Is<7íû|!µåç~îç´Ä#@aŸ Ïi^³<´(E³Ý=ñ³²s[)õÞ}rí©f+²83§‘Êfº½ I÷É.h޾rZž~ï)Ù>$ÞK.¹TÞû#þ¨¦¬‹/¾Xžò”§4mžMR3D®÷¾÷_ä;ßþ¶¾çío{Ý–Þþö·ËW¾òåf{¾‹<îqKÉ}ûöÝ,ÿò/ïkŽ_ÔeÂqફî&÷¾Ï½t»Ï· K)<|hAÞñŽwÊ—¿ü%Ù¿ÿ@³m‘ÛÜæbÝ®Ï=÷Üôù~Ç;Þ¡Çl—J)c¾ð å{¿÷{åæ›÷Êûßÿ¯Ú×8 Œ,RAqn‘¿ãspÕUWé{ãœåŸþéŸôX‡ãRæp ˜ŸŸ“q™møÊW¾Ò,ß¿hÙS¼ïû€Ü_Ó‹BJbûšW¾ò•éw”øÅ¹Ð;ßù.ùÌg>£ËymÁgóÂzÀòäŸs¤¾êÿ½Joôú³,J• P.÷ø@³\ßh¶™‘.näÁ1tûŽ­aýñFÈi„ÏäÐ(—ùS›i–¶h ß­°ßG‰_üÄ>çÏ|Ö3uß…ýößÿ÷ÿþßæ¸ò^×—¾ô¥˜v¶kâü&%Ø£M›µ<øZ¿{òú9!„œ(˜B9"ë•ËÆ/Û…éµ¼–Óñ‹ºã'µGÍ(™rr˜t!ítÀ’Ò^ùŠÿ'Ÿüä§CéŸæâ~Þõ®wU¹ ƒ(a@ÉÉhЖòÁt¸ðˆLˆ`±ÝÉ¿ýÛÇåo_þJyÎO>[!„´`¹®ê´Ý(ò’4u»ðÓúkÁR¥üýo|£üÕ_ýUz½Mûº×½Nns›ÛÈóãùÍþg(ÃàÐ>ð¯òû¿ÿû:Àï5Š),ÃüÀè±ÂŽ9(WÁàw÷wu ÿÎÛúŠW¼BÿøÇ6Ç‹çèß üÍßüŠø7d ¾çËö²—½LE4ðˆG<BÚ·<ÜtØ6´S†š ·Üâ·èlÿã©ÇŽ{ùZB^:ÊÚ¿á÷¿ÿû7ÈG>ò}þéOºJf³³ÓÍàë¢üå_þ¥Šõ&ÚØò½úÕ¯VQäw~ç·eÇÎíò…/~A^ô¢5ÛóÁ´½#¥ðÿèTN‚ôJˆ:_þÇÿø:h;æñó?ÿóòèG?:õËòò@þøÿ(}g»Ýín'¿ñ¿¡óÇ4÷º×½TÎDÚú ¤)ôyÞHàÂçüÔO=Gü<Ï %$îAÊ;xà°îg 9A,ÊA?A2„èŠß1ý…ÞR·¼^Ù“ï¿ÜÉ¥»Ï‘—_}Xþåó R•±Ä¥@4‚ Ûü^@è7Ó‹\²§”ŸzÀ¬Üû6}ÁöëWÙ†±kŸ$F¶bCø½õ-oU�ÛöØgC@(YùøÇ?^“Š?ýéO7ÛÞ¯&ÑÐxÕ«^%—^z©üÎ ÿW³\¤ãxß¿¼_~ý×ÿgJÈ&à˜òüç?_î{ßûêv„ÏóÏ6p€ ù o¼IßÇ|6 ò¡ääg?ûÙ4ˆ_¿ø‹¿(xÀä/xîKp¼Â|ßò–·ÈÞðù½ßû==/±íÒß_ÿõ_ËË_þò× qŒyæ3Ÿ¡E¾Í£œ­Ñíÿïÿ­ç4è[cozÓ›åNwº£üáþ¡®sHás~ ÍŸCÌŸ;Èo©Ñÿ8ÖÙ±-­µæ5¯}íkuó¿ù?墋.âgÓ|^k9æ´È„×ÁZ¾ïÙ³[sˆ»˜þÝïy·”Íé§~ê§ôyìCÿùŸÿYǾ ûa|ç?ù± ÇÄ›îo !dsAÁŒBȺXí$h\"³‹Ã¸{w¼”ت'Rx ›‘UNjÇå2\¸Åà  „m0†( !Gã+_þš¼ñoJûO‘sÿÜ_/8âÏ×\sa@û A,Ã`%HqQHKKKq®µÎó!yˆÜö²K„BÎtÖr†¤Ï¼èE/–+¯¼RÅ}­_¿Ø‘ÏÃRgL~Ióv¡löçФÇ~?G‚úë7Kô‘ö‚×B´xéK_šöó½^_̰LH‡Á<´\ò˜'à‘Ü‚vìܹ£y„ÔÈÉxÃß(ó[æµT($]»véqÇÄ$3¶ ˜Ÿ‰8ð‡xc¢ÙŒ„OÆG?úQ]OH÷piÅØô² ,..jؤùîß¿_·}K׳v€|[²ïFÃa%o~ó›UdÁß¶lÙ¢il(MxÝu×išÙ'?ùIù¥_úe•0g¦gcbX&ñš~¿§Ÿ¼6 ´úæ³öUfðù�øLaàŸS¤’a~û·[:¤i…Øæmq¬ß^ò’—ÈÍ7ß,333ú<– Þ·Ï4æž/4Ý ŸW,;Þó¾÷»o’LÏfì |¿=tð+ºú³?û3yîsŸ«)`ø~Œu±ýŽí }†çîxÇ+dTäÍoz“|©YŸ|ä#ä—¿ÿRù‘û\(ÿö²|óÚò©ßL#Ò/›í¡É-wÏÈ/èÉ.ìɶi”R-ÂåªU> NÚmt­B-ö—HÚ¶Šöc�nŽEÿõ¿þWݧc Ba[@Z ö³Ø&ë·^ ¿üËÿ]S‹5=í#Qé ûmlÃØž!R8°¿é«kt[û•_ùý Üýîw×ç±¢ŸL.Æ{@ÎÂ~>özj+¤°·½ímúùÄëГÑßHƒ‡¶¢Ýø\�ˆ~Ð~ögVÛ…u)Ç:ô>HD¿áóŠ×ýÕ_ý_Ylæñ?ñl} –)ßWüÉŸü‰Jn8ÂsX6<¿ýéŸþ©ü—ÿò_TÜD[°›Ï9°~Áç}ÏΟÐ>Ìm¹ímo«ë}ýõ¯]S!‰þŸÿóôï„Ó ì7¢8¬ÿ<µån±¯?>éfHìÇPû'ˆd˜ §�ǤšÙk‘àøÔ§>µyͼ¬åÌǾÛåÒ!„r$(˜BY•ã-{9~÷˨IÕ\èVCYn.:Õ•×;éóÎsÆæããÀ‹ÍËžvvǼ`—W©ýŠS&gÓKWè ƒ7!• ÌÖJ´óï´EºËjóY) M쓬ãŒßÍÚ^„n/JÆfèmrgóÍÚž&÷«Ÿ>Nlƒ¬ìç¬EéßÞwÛж=k÷„ùNì·rjïǦOoíV8]í:‘ñvtú®;ßñ{‡óõm›bšv¬³Ãzï[3®ÝÞ '¥+¤h¦¦ú2Õ ê᮲²ìuJÌdF cçtM,eyþáÞ¢:9Û·o“+¯¼£–ÛAHÍk^óùÇüGÝaw šüÌÏüŒN;ï‘:€P ÇêfíÍÿ ÿé?ÿœpÜŸr¶áÇÎGpÜÀÀ4L Oa€ùĽ·_qŒ²ï¡#,Éá(Q†òbôÆà=Ì @HAŽ•àDZd €t¤‡>ô¡rŸûÜGÿ‘6ƒtKÆ¿SB¼Áà9þŽøg?ûÙ*+à|î­o}«¦ÏàXƒÁ,¤ê@VxøÃ®)eÀJÙò@p°ò?HZÃßc7/!•n¿nû8gÙ·o¿Ê _ûÚ×T4úD‰ÇË/¿<M\øñ×9ùà¯ÖÏš>=öyÀ÷• –…ä§£½/J!BʂԂi±>ûÙ?Þ|fTàtƒ$2lës >ïyÏk¾;ý“üýßÿ½¾?¤“_ýÕ_UÑ Ÿ4 ·7ñ<„›ç<ç9šz™B¾{¡¯xÅ+U|Âsi‘ã9ú¢%žÇg}‰÷ºÓî¤íø¹¸¸ ßÕðíãÿDú\á;ÜŽ;(iJØþ‚õc?öcò[¿ùÝN°ÂzC?AŽ‚ü„›*®¿þz} Ä- ¸ïlúðïz§üñŸþ…®?ÈÄOzÒ›íûñrþ%).›‘-Í ¼J|Zβ½€ïã•m¢Åª~ÙQ-Æ®Ú`_Ž®~ðƒU^Ä6€e@º—mÏH{⟨Ëí/þâ/ôuŸýÌgå}ÿò>ùá'ÿ°n‡(ûŠÄ1l+÷»ßý䇸ÉͶ¶G?Ë/~ñ‹õIå8!˜ýøÿ¸öÄ)$Áá½xù‡<¸iÇŽK`3ŽØ·CÚ|ýë_¯¢äÍ{oÖcÍýÐiºR×þ…cö#(™ ! ©—ø,âØ‚¶`ýü‡ÿðtùqî‚y¢­˜öµ¯yÜû^÷’«î~ÕŠ}�äf´Çj|þ‘ˆ÷Ât8v¡l*>c±ñ9µÏ9Þ’Þ ŸsôŽŸÚð<Ò ÂA@Ã1õw~çwtÙŸS¬+Ó9±àóïÂãeàe])d^òÐë±øT2~³ÇZ®÷â;óžõ,Ý_Z’™ý´ëÛ~ðCä™Ï|¦NÛ\é™8ŸÕnúŸt !„2 f„B&²^¹ àÄd8\–à K²¼´,Kƒ¡ FUÌöa ÜÕv÷~vÂ€Š¨„V5xªÊGÙÌé 7îâ-‹0½ÝÝïupÜKÉIx ÓôâôùIš¾?î€ÎÒ¤ŠæéÊ2Î[Âå>LÊ x ­€@$± El‡-{³ÌuTÑ‘}‰ÓÇùº¬qà¨Ò4·L†‹íÖGGŠ“¸|­‡§mÙZñ.¶;¶¡#Tår^¶¾jM—ónÏÚ‰qÞÚP[O"–õ_.Þᡟ}êCoñÕv—m_ØsAr¨C9 ‘VèŠëF%ü/›oÛß’¶#Û6\¶|£Q§ohë¼lûÙúóÅôu”m”ñaëÜúÙ–±÷ïõJÝöð˜ž*uponv¦™f:݉LÉŒr,\wíµ:Xœk®°±ÒMH E:íoMôÆßè€ãSð+eû“/~ñ rýu×Éù·8O!äLû>-/úËË]ïvgìïHM„rݵ׫$‚æùý+¡Uüõµ~'†Œ  ×þàÊÅ_¬Ó …çßø¦¼ímoUY bÅ÷}ß÷i¢ ÄKF¹8-�^‰�óv®{Ž„eýã?þc}-¾¯B23„�±ly°¨"ü1OH{A⤠Â#}óøà?¨¯…¤aeØÈæ›àW¿ú5>¾çž÷”~ìcòîw¿[ÿ43¬Ó«®ºJ.»ì2Ù8™æ5×|W¡«]‡ðéf#mKøÞ™2ÿÌnݺM…. &ÿá†T'œÃAƒ° i볟mËBF»ë]ï’‰ø•pã'æ I K³|ò< øÀTrÊÁ矗ÿüŸÿ³ÌÍ͆›í$|æ!âKUêY^^R‘ï‹÷‚ ·cÇN~–2 \ݼw¿–:ľûo< û®‹äFm?û™ÏÉ_½ø%²€T-Rïuï‘é™Rö\–¾ðwå›_ÿ–Þ öìg?K¾ÿû&^÷ÓØ_û(m.=ðý—~é—4•Ͷ­~ð*’a9 A!•Û– ©•HÝû­ßú-¾>ð«å±{¬.+DºÇ?î zmûjÁ�ûõ{Üã©&Ò÷°}AÎÂùŽ!vüÀ¾ü.w¹ëX[8F<ìaS‰ m…dbŽaº~ø‡¸y¿sõx†uëR$.¼Dd[_Ø·<ãÏÐÏ$Àûã3õš×¼V?³ïyÏ{媻ß=%hÄ4|ÆÑvˆyÊð;^‡ãÚ·sçÎÎ炆Ib–hò5>—è¼óEÛ^øÂF±®–»ø9$äDƒÏ*öW»‚ÙñJÖí<n}ë‹O¹`fßSV“½V{Í®]»UrÇ~I’vœ3©þ'~â'ô{‰ãkåL¹1“BÈÉ‚!„cæhr™¦–5fpa÷ÐáE9¼° ƒæßC•Å`ë”ͺPFL4*¢äÓ\+‚|V5¿Œj§RÝ©ì`váQiKâÉO-ñ‘„'K’jÞ£Œ?cu¤¼h¶O˜ DÑL8r’NÆj•à0m+ÃuD7 â“^$vh‡¤6CŠÃÅ©^™\ê+´ÅÕy‰œvú\Šóâ;r—%oéûgâZ˜Þ¦­'ËeÎ¥T0“ºjï“ÈM-)’𖉙ØemÁ“E°L^³ä2íæb¢«»Ék.“´ð›âÉÑêB×O˜—ö‡31¶Y/èÖQ‹ÛGì¯$˜eÛ¤¯êЇûÄ…yºl; 7%·ÒZå« é%Ù®i§k§7鮊۟]d¶3§2%>K'ýÅe,š“ü‘LOMK¯¹H‰ ±Ç+™BÖÆ¤ véß.ämê jºK°} ÊíÔé _‡°rkã ™m‰?vgª×ùÙë!äl’’®¾úC2՟Ѥ/ÈWHÀ¹îÚä’K.•_xÞ–mÛ·ˆt"‚7p_¹Êqb Åm i6l·ò5øyÛÛ^šÆ! X)4 ÖÛwIˆ&—ˆ Õ äƒô˜¤ VaàÊ›A,‚À`eûÚsˆZBÍ*!-§n-ÿúþj’ÚÍMßþûQJ°ÐA.AÖ9µåˆÈêÜûÞ÷ÖŸØPöÀÁƒ*7a=C`A)mgÚ¨ï J°È„äjHq2i~Ò€lÈ W_}µ~VÞøÆ7ªP ±Ûᥗ^*[¶lï·’üœÚÞBÌ7¿ù- 7ú¹ÊKTB”üŸ¤æe¦ì¼û˜Ù¹i=/Åe ñá»Ú…Ï&>Çø¼AEÙAì,Ù 2J;â:i·?¬‡Ç?á±²s×yéß¼´éûokßãu…ýÚ­nu+M¸Â6€„­—ýíËåßøšÎg÷n¤Ñý„ÜòÖ·j®”Ò/ûrÓ 7É·¿ý-7ö‡8·ï¤À¬átÁ¡Ýv<߆±ÝÚ~`‰åY\XÔcÛxÓ›Þ”ä]¼(fƒeE:ÙpPI1ß“];wËüܲl>Ç×_C³Ïÿ¼–yÄg Ç=#/;ë:וŽ|^„ÏÙ­/¾•”=L[Ëöí[õx ñÚÉ-nqìÞ³«é»J¯Yþy*táóœŸA¨Äïh?QÞ9_$†áúÚ‰ÏC…º¥ç-eœO­ruø<ÖzNƒÏøüü\ó¹]жXyΰœãëB²ëq…Š¡©±ý ÝÓŸþtÝ7š\«eC·Ì…ëS„Êê%†Ãµèãgó\ó_¾µH^vSµ•Ïÿ.¶–ë:¶¯O7±S.#„rŒP0#„²‚#TM.ÃÏápïJ\ƒ‹CYâbœ `› À\ž Ó±ªZFU›^fBW/ÀR2KL±Ê$¦”\–§SÅù‡„¬ Ùů2ο(]„|&R™0V$©+Àb;jßIKI])åÌä²–À´_bJ–“Ô'’‰Z––æ‰T¹\ÖNûµËh c&S…‹æ­`ÖJ –¢V¤‹oöÞmÒY&Ź6uÍ::õÄ®º½0oý¡žàØò¥õ¥.[.íg›Þg)gU”ÒìÂr§?Ú42ÛŽòt»"K”³í£Ž_»ÝEQ1“!»…~ŽÉeÞ§¼v¾Ø6D·Xr¾ùÛ¨9é_ZÉÒàP3à°Ü hÌé€FQ̤õv¬’4BÎ>�€¯}íëÁUHH¸ÁÀ¦¥Ä``Ä$2ìÏøÀ¤}Æ 7ÜØ øýòËo'çžwŽBÈÙö›(ÅõŽw¼SËpa_ ¡’’aPú ƒä§â{öÓ¼�Þé3Ç€•dz„1<s/h²Òe�‰8ã@TÉe¯pþ6Ô÷Cú J¢” „µ<íRûÀ»ß_‘ ôoÿöqÁ­"HnBù6Hmðþâ‹/žØ²¹@ÚÖ+ÊÁÝûÞ÷R ¢’í`gçX'$!!hÒ (d-$O­uàsjª¯¥d‘úÊÁŽ´$ß¿ñßõܲ&R‹ ¥ tà‘°÷ľçzv^Œ}Gd¤&ø .5ŸŸblY ­Öf$SýÁüþ톌†e‡ôŠ>ÁkQRóD®‡ÓìQÊñÎw¾R>ññOÊ׿þf,6ëeN.¹ä¹Ë]î¢û=ìË^õªWé~Î^÷„'ü  DØö°ÞÞö¶·«¨eIXy’㉖Ke7½þ~èð¡æzÂPÿr`ÿ-ǺÚñò˜}Ç·Ò“(Ÿl hù~ûHÇ4ÛïŸ üK{ÉK^Ò án?±epLÁqÊ’ÊìVá6æ&Ìã| î/p.…÷úú׿®éœHÄqøÎw¾³|ß÷?¼ù|>„×c9 ] ¾†~­÷³g· ‹N5Ç»Áw’—¿üåú}Ý]û®Ž¿á8€4HÈïÇÚî×!„¬ f„BÖ]�‚H3 åð¢ì?pH^”¥$RzS½XÒ"&BE+—ÅBàU^V1K ËËFºVðÑR—Q. ÒZ|”YMñI ªò°"+G™Ê†Ò&^ùX&±(,é¬è”ºô>ÑLÒ’”êe6–w´¶û,m­Æì®ÊV*k—ÏÊQ¶w,µ c>‰OÞÔ¬-Ež\fI]’µ#k·%‘Å'鯓Z6ÞŽî¶à31/ t±´h.iµÂØXÿ‰K©e©ï2¹,É|±Ñu(vÇyœg•oKmZ½Äí®NíHËX´)qeÑÞÑ5Þw*Ε.{ ¬Û¨GßH‹C©F#}/çJm;ÊqôŽdF!ö}ÜcäÝï~OJe�û÷‡¤ ȘÄ8Þ¢,&ÀÀ?ûí`¤x`�ÊÀß(ð˜Ç>šû!BÈY‹!µ<xH…ŽW¿úÕºODâ Jτԭ0m88yûHܘcƒèØ7‡’~µîßm ƒßöýÔä3üž'+-,,¬˜7æ•ßdRRqþú¯ÿZ˜[üáioo}ë[ÓkBƒ„€Á?HßùöwUd@‚5Hk˜÷ío{M¶azÙææ~áÒïø:€íe©¬ô\¸qÉŸ¹ ŸE”}”¨aÛÍZððRÌ ¥(Q*êcû˜–îC " Ìb�ee‘̶–YÈòv! ‰c¾—…„¿�’�{ñ³š³ÚME£QHaÂç)U(ˆÏ7Ñ ZÊÙÎ;(—MÀúyÏž=ò°‡?4†Ûz]"|_öº×½Nþîïþ.¥Ëa»¾Ë]®lÖïŒ^øä'?©Ç$^a]aßÁòd¡rY¼¤ÿÖ6z<�ÞòB-³š§Ræ×¥,± íÿÛ¿ý[Ýgc?Œý/R÷°ŸÆóXÎøÃ÷Î?söÓ{¯SLOO§ù£¯ñ™]íý *OOO¥Ï@¸žÖ^§óšr/ë}ôÜç>WËÖbßó&ì;ð9ıñýï¿|泟҄4K}4xEÈÆ‚};„p+ekeª_03¼l†+¾¯Ûw‡<AòHB=¾Ãà»®õ °ïÃ~ózûÛß®¯EIoÌ¥2Ï9wiǘïë­M„BÈZ `F!¤Ã±¦—åƒË5[÷8,šÁ JYE+S¹6yK|W RíÝ•vBYÑI:KÉe~<¹ÌeÓº,!k\¦²ä²L.óÒÊez‡§$¹ÌÒË\Þn±ô4I)`AäÊ%¦¶¯’¤¥µ¼?4é,ŠXa%µ7u»[™\fÓv’˲4²0m‘ߨæ 1/»ë³ÀÚÒ•I.ëf’D­0ÿî´U¾ŒÞÔ$õEH"ëÊešH–Ëe&òezUÝ®ó:K«+'Èe!¹,ʇ>+åYHJ.Ëû}‘'æ™`×&—ÙöÑ•áòuX!a¯M “¬ôh˜!Jk,.Cˆ4¯Ý¯å"0`WfåìÆ/J2ÅŒ’ƒrh}ìcšÁ±¿×›`€ Œ8ÂÀD³ŸýÙŸ•Ÿù™Ÿ‘¼ä ~ÇI$`Ä5ü|ž _|±BÈÙö»÷ìÖt$ êSŸRáö×~í×Tæ7rd‚ÈI;úýžlÛ¶5í«QªÒ�D; ¥ÑÂ÷yüõ&ð;$¼I,H‡²ïŒËÐÖŠ/áïPB9° Vˆ~`¯C¹Ìú§JbFþ‰P®ùîµ*3|ô£ÕÔL»}û6} 9}ÀfÁƒ”á&±ö\ÅÎÖš(¶¬TwûïvûÊ%­ÕËeåm’%’;PˆD"KéƒXöÇüÇú=åßóž÷$Á,/ÎEÛDlãØ7X: J¤‰Y[ð¹„i¯…�„Ï£¥æ× ÆÏá‚Dçõ5ø.‡6!Õ ’’�m�ùAßû i6²ßÏX´{k=—‚�¡ê/þâ/t¢O‘h†ýêïþîïÉ/ÿò/kYÅÿõ¿þ—~WØ—>÷¹?Ë>ž°®wìØ©Û^ØŸnW‘À¾³Û¶JHútl@YIìÏ톔_ÿõ_×m ¿[Zå¸`ÆEƒðúß ÿÌHæ³÷„Üõ”§<eìýmÛóû\–¾¿–æåŸóÕ„O¬s$BC Ã45Îù;¿ó;*—â³‘ÓØk!Ï ½Þ(å~ªÀwãü{Áøþwœ…à *ãÚöeØ÷AN‡Hf¾«ãïHêÜ2¿Ežýœg©X|4¬¯ù}BÈZáƒBÈqc'>µ¦?ôdgßCróEÑ›pŠRú½2” tmÉÃVði¡:Ée’‰WQð±d/žª ¥»ÉeÚÂ$FUQmâU[¾2—ž|'¬-i¿cbœ†ú Ée.K.³Ô°|Þy›W&—ei]¾-£™'—¹¼ÿVK.síÝO©4¦–¤lÛ«K¦e,²×Hj³¬!¹,µ²d/ÉÓܺ¥+s-È„±î>mŵ )gyšÛ˜\æÅwäÃ<¹Ì$·2]|tqm|Ûä2—’ÜR;|6ߢ˸õ3‘o§ÍO|zÍÿªæ÷ò°–‡ÂàÚ£²—L(BVû‡yÚSuàèSŸútÚo¡Œ^É,ߟ0CY ¤äé¸#øÉOy÷A„³ ÞÿʯüŠÚ@†ºãï("§v_9å²Ën§ÉIH!ƒ°…”5 $Až\A ì·CJn\ÀÀÐínw»$Ÿ]}õÕºŸ¿Óî¤çlH)Ãq Å뀤Hvv“•ûÃ12×1Mž°`Ïã}Ñoø×ê@<¤$ Âc^#Nf9~>÷¹Ïé¶6>Èië JJåéIDN7!ÌûçðàÁòçþº,X†'=é‰ZÖŸ g¸>ô¡é´lyñ™3 ŸA"Áç ÜôVÊ=ïyfP÷}úo|Ÿ‚„ŠR™x††þè§µ¤¢u?žW£d'Ž1Ïø‡P‘ Ÿ#$WÝéNW96p}דP^þ¯þê¯Òö›1žÿüçëwã?ÿó?—ßøßÐýÒ¶ñ_ú¥_ÒtÆ“É$±àŠ+®hö£;TªBB$Rµä…cöÉÿøÇ5™  ½Ï|æ3tŸnÉwX^,}ÏG¹Gl¯“À´Ø~-9ðšk®iöéËzŒ<Qç¸Þô¦7é±ËÑÇ`HÖ”·½ím*-£íºÿø'¬˜Ç±^ùçŸq< ”Ù2¿ð…/LÛcûXMòÄk ÜbßÒ™EsÓP,#ää’÷<¾´7YoL0Ë9Ò~妽7©8fâ9öK?ú£?*óóóúüÓŸþt=.à†Bïkù—÷ý‹<ᇷª`6Ix§`F!kgRÂv~ÓÔ™„BÇ’^–ÿ°–š ,‡/ʾYX¬t £ß+’d•¡ò„§LþÒ«”\&I�³„ª�5– ew36O‡”3—¥œÅT5Ì7Ée­øUDqM,QKçYgéXcå9]ø•T:ÓÊ@J˜uJ"K´IdIDó¹x%åó"YjXÖÇ.â²vä©eùúÈÅ5ù:e#ýXr™kïú·Rˆk“ËZQ,õ³d˜–+må´6AÍ$-i…ÂÊgëÅKÑIPËD»(¡Y;Ä·²˜¦âÝÔ7M.«º)g)­Î–Q\gÞA>ÌD¾N²]»ÝUU+*šÄ‡í®×+Ri!Û>:%VMlÄ´Í<q¿<ðÍçe(SýE-Ÿ23;—¾€ŽŸä3ÅŒb`¿‰2>Ï|ÖÉ‹þòÅòùÏALÀ@äw¿û]¹ÿýï¯3|Âþáúë¯×ò.¸Ð©ÀÒ8ðÀ Õ3~ìé:HE!g3HýúéŸþéLª‘S¤ÈbtGB$”ÌÃ@Jþ}ùË_Ö}9$ ¼Û�’j ŸAò‚(óâ¿X.½ô¶zCÍÚ—ü†§e!´à;é›ßüfÎ @Vƒ¨Ö¦Gµe íµÈ0H!©KöwH8#Èæé<Xwã)a&`aýBÄÁöµ¹q* a›EÛ¿õ­oÉ#ùHý®QóóŸÿ|Z¾¼ÄÝÅY’ë¾}û5Í Â$$+ýÀ<B>ýéÏèç¢Ïoÿöo«Ø I eó ô�ló÷º×½äX°>Æçý¢‹.ÒvbÙž{Üã«’…–cÄA"\ÖïÈØgÚþòÇ~ìÇtÝa û¸ßÿýß×}#žŸ™™‘§>õ©*#žìãÀ¤)”)~èC*/ùËU{éK_ªÛ0$9$Ýa;Á÷´2qQôôw”pžûû?ýÓ?•»ßýîúzœ`Y'þ°óðîw¿[–—Í6}'yô£-'ló¸ðyÅg ‚>?Hðüú׿¡R4Žeøü¢\o~½È°k;kñ»Ÿó}ú9¾ì²Ëä1yŒ.;>Ǥö‡Xn|?Àùnè ïW«ØÁk1„œxòt¯3"«fai¿277¯û+ìÃqÍçiO{š&¬â5˜~æ3Ÿ©Ç5|/Áþ¯Yü½ì{;KdBÈÚÙ²e«8°ÅßÎ(˜BY–^vhaI:,‡2òN¦úeçDÅ’šRÚ”oK*V’ƒñ¤&—¤DRªX˜²R–•Ò¦ðŽAbʲB╤R—y™Ä Õmr™¥nå Y&—Õ­¨å­ÍS½ÜÊt¶¼Ä¤2Ùü]Ʋ$2“’\&uå)g“ËZéÉem ønº˜ï¦‹¥6dw«×õJIË¥µ4ÛŽ´f²XXÆ<AÍu§“óº)qYR]À²þsÒI}“8ï$uuĵ¶ŸU.›ŠV¥e ‚› +“ˬamš2k‹Ûi›§k5 qá] -©:¨†²°4’©…E½K¸ß\�˜t÷!äÔ¡ûÂ)%$n†6”Êü¹ÿôsò¿ÿàã€vpNS   ÄXò J¥¡,Zž ‰ Žÿñçþc3puË3ö¢-!„T&Òlß&ïæ¤}¢Mçò›j±‘ì0ßL ˜”´ >ÝôQ‡T}Ô)\áœs÷ȳâYò‚ÿï·µ¬%HsÉå.||Ò“~HîqÏ«Ò2~Ï÷|¦ÀXIK¼âž»Ímn£â¤$Ƥ4èæ»òCò@G¢ Ó_ÿú×§ãÎ÷ÿ÷kz‹–ô­`fýtë[ÝZÓœ :ä}þ‡<˜Ç˜MF]çåÛÏÆoþæoêw…ñõeÿÆ #ÊÙÙ¿mÛHRŒÏNÝÖwúŒ4çl2:j–H:gÏîoÏYëçOøôä'?Y%-lû&‘Reå±ÝãwHD÷¹Ï}ÒënûËåŠ+îÐ| Úûßÿ¯ú9ºßýîß,÷-ä¾÷½_3ßoÉK_ú7*Ý@üüØÇþM\vþÑò¿ÿ÷_’íÛs©ÒÅ>™Ò†~ÊRÚ að"© <#=é‘|ÄÄ;äÉQhº×JÉC´Bb_†$Hœƒ£?!iA`8¯Ð÷>P÷øÇ6×|j‡p™¢Ö‡¦´cÛ@Üß>Ku¼Î±R0Ã>þéÏxšÜxÓõÍþÿíÍÏä-oy³”Íßq,Âr•E)|Ðýåñý25ÝkŽ»›e|˜¼ìe/“åÁPþíã“O}ú:íyç¯Ó"‰+tQÛd;H—º 5ßpà ò¦7½Qöí»ù„ fWŸõ¬gé1 ŸY¤4ã'Ö•ÊÐMÛ Ìý·ÿþ_åÊ;ß©¹&3Ò¾¬êa¼n®ãÔ¾j×” ÇTWXê|+ŸA,Äç’ÞÉ øœc_€ýÒ ¿ò•¯èg"é‹^ô"]ØoX‰èÇ?þñz¼$„œ`šï×ïhöU/{éKÇž8Þë¦íÅs¤}=üa;¦ïí ¾WY9mû^3þ+gçÎò‹¿ø ͸Ëa•ÉÂ%u<Þ„›G°ÿÎO>[~è‰Où¹yÙ±sòMãâž%¹òš4!„Û‡îØRß çËìogÃõ f„BŽÊjée¸ W7}–šœE9xhYEœ²?•±Lè2ÌÅÁúº6¹ÌƲä²LL©ÍÊä²ÐL« R1m*´MÒ¼»‚T±²”¡_YnSç+mŠU¥'ïrAJÚŵ²èˆh­@W'ÍÔ:%4'Èb>+ÙÊT+KnúŽÔÕ-¹™Ÿ†>©WI.ËJhúnÊYí»å<ƒ0fK㪺[úS/ð岘´Ée¾ÎSÀb;Š6a,—ܪº+Zg—E7-¬CIóE ]¾}”$·Xž³ÙFG£:“ËDKr¦’¬q½Ø¶1^r3lmrYJsôIàË×y; ‰Æâµ¸ ¼Ü Ðn>3S½E™VÁ¬¯&]Pàݱ„ÃöÇÃ~÷w_(ÿïÿ½Z“0„}0ÿšc²IÇÉ‘h~Á� J(<ô¡‘g?ûǵp>_B9Ó0ñCE)Uºýö·¿£×ÇZ¾ÀJh—“ÇrѾëApعk§J/zÃA¿76È¥—^*/zñ_hy7”õ;tpAŸ+›ï¡—\rM/À€yhG­'-pBlÞþö·kj @BÙsžóMeŒŒ>@šõÊú=ïyÏS)bÚxÎ9çÈ3žñ -±†AxÌ Ç‘ñ:8Â�=J™Ù¹Ý\ —_~{!›|[†\©ëÕÊ,­>?¶=N¶Ÿ‹(Tlû˜혟Ÿ[¥¡AºAùo‰ç¯–äeiT»víÒi°Ý»x>Iæþà4½Û­¥öaðÛ%’L±~À²ÿê¯þª %öšíÛ¶7Ûz©Ë333Ý|~T.»ì¶Z"Êh4lÞ¯§ïý°f úGôi1-¤=?ß³gW<3ôé\o⢺ðٽîÐÔY-�‰qXFÊeÇ«UÂ2Á} iÀØl!A>ÄwhpñÅ·‘g>óÇšþÞ™#Žopï·}û¶fýïÖ£§}‡Ï[·m•=çìÑ÷Zíó‡íâW~å—5â/J{b{Àö„m%Ò Î™„QìGŸþ£²eëyík_«ŸY<‡„ãÿøÿ£ ÆV*ÙÁ h¡¿ú°‡èï¯yõkåæ›÷¢SY\ì÷!„áóˆ¿åå&ñáÄ2†Ï*–·»,ÓÍçBn€Á<ì’.ï¤)k/ù›—Èûß÷>=A¿ã¸xû;\.?ù“?©â¥¶3.÷yç›@|F‹¢{\F;¬Ln¸‘Ïë¶07?#¿þ?Mþò/›Ïù'?¥óƒ”j퀵—¿ìåò¯øWÝìx„3l?ß÷ýë.;!䄱ß>MìÝH°À|7Ø—èÍ"¾OuÁ~|×î]ú˜H|Ž«•ÅL“Æã‘JÊñ» Ž„BŽ |—¶ïÓgkEpk|έá§[åßö(²Ÿö(ãßʱžÛ†ŸƒÁðrš2IÜÈv2ƒ;et€»˜¾…BÈFr¤A‘Õ3쟃åæÂÓ¹îÆ}²o³resR2“”Éì÷›ÇT©)RÓ øŒTôñí]Ô’ËTÝR£ª|L¤2¹ÌÄ5“´BÉM?&)é,Aáù*JA¡ >JFáÂtžtfIdí|Ûv`€¾g‚™„»(U¿ªcšV¬ëØ)¡Y¶I`“ÒÈZ­HËç¢]ÖÖ'‰ • -Boƹ'«MIhSÎÚA1IBܸÈç\VB3ÖМ´^ÔÂsÝt6ßIk×KmIgd;\;×Ò¦–0†e̤¿Všhå¶6l¬Ôe\‡^L.‹‚YÊyÚ¼ÊBR_›l‡¾Uíö$qÛC°Mcû.C]’-iÍæ›’ç¢hWWažÃa-K 8¦dûÖÙæbåNÙµck3ß©I>~QáHòÅB“Žeã%ÚTšx·¦øNF>]H·¬c å:‰Õ£j¤Ç@ý½ùŽŽÄ<ñð{­�¿Õg×û¹µR¾þµoÈûÞ÷~ùÒ—¿$×]{8pPï„E[0Љ. Š`pæ|€Üæ’[ohù$ `PŒû"BÎ lŸ…AwK?<Á�;Ê‹ mò×ÑRŽ."þÚ¯ýš&¡túçIã7€ü˜aIb“R™�ްßÇ�=ø±/ÇkL ÑïœúáõX(“‰}4JUæË;þöæ…TÌ×´íquG”€ð²—¾\Þð†7HHû-å¹Ï}®<æ1Ö$™Ó}2l™M¢8ñµ“¼àZØv·¦×Ž}§Bâ>_Ý×ûŠtÆEû[þ>.^"ÆgÂJwÚïùõœ÷ÕñF{=žÃß÷ï? B¾¯áûÐîÝ{Ò`êøçÏÎG1-ÊdB:Áç ‹&QÅö…ç÷é²|L /kƒ·«wªKçÓøŒCpƒD„×Ajù/ÿåyòØÇ=öŒù lnÞ»OþÃxª®+l7ÿí¿ý7-‰2ª(ùjâä§_ÿõ_×4HÛž7¢ÏÇÓþ,I->'ÿ,Mzˆ‡Øžñ=ÛÉQ“¦5ÙÓC6À6: çÜÄ6á;Àââ²¾nnvvå{èK²¿ù|xÇ’ ã±¶N/ˆ¯í~öìÜ ¢4Ñvœ»àØ5.³Z?Ù±Ò$íñùå"íø1 Ççxÿ¾͵ʾ&Nôõs®Ù`g€Ïã7Ü }ä¹Ý25=-!Å”rÂñ…–‡Gãûƒ_ø…_'>ñ‰r*Ìluøð!MF]íûÿ‰|ÛWBt[íq¬óÄaì-ÿxu3ϽN„cTÑ|Âw¡~¯ß\'/âõ÷2^7/Ò±/¿ž–§™t£Ï¤vBNêåkô¼mvv.Uø±óµü‘³Y>ç“®©©©þ}Eï”ñg5öðñg=|ösü!«üûH?Çç¨ Â3B!Gd5¹Ì~¯ ¿66ƒëà ޸$Sñ zõÄEZ1©Šå -¹Ì^3.—!¨[ÚçãÉeµoKb¶Ó¶iZ&—Y;êÔIrYÆœ ¢¸ ‹ùXz1JDÁËÃì¤$‘)\$®S‰Dk‡ÊTÅxYW3᪈²˜Ka]™ø•­‡¼.O›oœ:ÊeE6ß¶ÍuöI’rmr™­Ã´þò“)¹,®C‘LìŠâZÛŠü–Ú,Y‰Ëö¡RW&Š´B\ÑÚuÓ q­HhâaÚîª6¹¬•˺Ig–\frY¾}q2Š|¶XrYm%–ºÛ]PMëZç]˰ùšˆÎ¢X–m‹K2šŸÑ³üó5~¡—'É„Ã.â¤ûÒÛ^"·¹äb<»ñ†›äࡃÍEÊ¡ pHiئª»cÊG·´÷+„3¤½ë]ï’o~ã;" àû+R… ׬—µ ’«%Ø€T8W¨3QÆéÀ›&Ie« �Ç‹#Oþd ¿ÿû¿—›nÜ+ŸøÄ'£PSË¥—ÞFÍì\l.PâíŸÿùŸ5½¬#߯›BÇ“žô¤u}XÓÀ ïÞì” Î™D¯ Ôíµ‚nì:Cþ¨½É7¼çd­DØ sö |ày$ü_™tþ¶jÿ†Ó]ùìg?+ïxÇ;ä;ßùŽ|úÓŸNbÐå—_Þìkî~ôùU™ž™’»Üå.Z }ˆT;lû®P>`¿úŸþÓ’{ÞórÄò®ëdR ÝÑn"_ç±OÏYm»°ëTçwž‰Õì ¤T5—W­6£xÓáQ§[y3޽/ζ9þœ=Ÿÿ=÷&1þÏçai={ÎÙ¦ÇñSçåÂ~d~~¶yÜjlžõÛEÙXð%¼7|fq|=ÕØ¾"Ö`0L;™Çz»æo©ŒùþÜ7BÎÎæó3 f„BŽ\\©êJËYAìŠwž¸¬eƒ2É'J;!é)ÈVVjÐD*e#“¢/–R©Ê(jU·³’йˆ6^’Ò’ÅÚÒŽ’ÚQ8Yµe­âZ\pïËtmû%¶¡•ºÚå m‰bY|mÑ|lÞ­\Ö–˜L}å$I"•$)¯°²ŸÙÉàø…ò¼½ö{›Ò³RÒj…±¸Ð>´·ŽR^í}«­e‰]vIÑ'é/ÆÄuæß‘ËÆ3»oÝ97–¶æSªª-…jmÈˬú±í®ª³Ä<—m£!f¬Mˆ«%λMPÓA"›··¤:™¸Ý‹yaÞµæ²Õ¾h>?Ígh8ÐÏï†%„+ùà „�+•ßk/mIê•¢!„œ‰`?wÑEéàÔË^ú ùÄ'>¡É/ù~p-‚M‡Áv”Ö{Ÿʆo»V“|wßì\›¼¬7¹"öÕòx.|®EB†ØŒ2ÍznÏkP^%‘²&k,—HN.W\q…&eýÞïý^§„äZÀw ˆU(ÏúÈG>²“t2¾W¬&™´çвêwü\wã²X˜võí÷HŸ«µJa˜æÛßþ¶&ÁåégHD™Ã[DA”rÙñIêÑy”nçÐDGÈešž“R°¿Bª™÷’n`dËŠÏôÚ>ßnò¯ñæ¼øÙHޥܵ}.׳¯¢\FÈIÂÕrË‹.ÐljáÔ_Å>Â>/¤ŸŠrØxïÕ’0×£„rfCÁŒBÈš™”fV[9Êîö›Š©[yrY©¤?«XúP/ìȘP%vA8$S2¹Ì¦EYÂ^áÄ®!i6h=&¢I.¡4§s*hµrY(‘˜¦Íd­üÎfkkµr¡+¶Ùî<n“Ë$&—ŋںŒ1ñ*“žL”j…¸6¹,ˆ`a@&HkÒ•Å$O.³i£æÃÝ—ÝÕ•—Å ÿ—ËêìNî$˜Ù…ziÓ·ªL¼2±+‰„ñúš¯Û¤.Èy>•AmÛmãMÖÏ)],n+"]90nt© A.«“|ˆ>PùÐ×âö„t±QÆb_§„±Vl´¨ÖŽ” – “A0³eŒåU½ÝÍž³í¿(W&¨byN»x]4Ó5•jT'ñcü3Æ‹–„µ0žÂA3Û§œìr „²Y°ý „˜_üÅç­(µ·™Ë¾Oo6:Òœ~ß>Îýÿª/k— i·¼å-µ”!JZ ÕéÑ~´ÜùÎwŽýÌ›'6+—\r‰üÉŸü‰ž“äç™k%O³{6œ±™NÒ,‹¹‰.ËøòŽ Ÿù¾¡½EÊþµÖ%µWâ3PÈj(´ÔEÝJÛŠ4-$T=ùÉO–+îx…õuyŸûÜ[~ú§Ÿ+¯zÕÿ“ë®»VK‘a0Ä2ôu(±ÖïFî×ùýûhíqìýw´õ·Ö›mŽ&¢rÝBÖC¾/Á÷i”í]ËM/ Ž…HŽ´s#B!d­P0#„²êIÄÑîÈ ?!ÚŒšk¦^寲WF §+âÔÎ¥61,%N¹•éb&ø$¡ªe Ûä²Vܱ2š¹¨e%#“PÕ‘£êNŠ•Êk®MZß&YÕÙ|U.KÊ’vù½ïcqÒ =ék¢�fÓJ&˜YrY'}«½Œ–ä$ß=ùt™èÖ^ÜÏ“Ëd…,æÄuL«-õÍOJ. ýáóÔ²l»°é’˜'Yb˜•¯´>‘,µÌµÛQUw¥.Æ 7Þ×Q„3 Ìgò¡ä‚ k—Ï2ˆk>­›¢l“ð¤Óæ¼mÙÔ2+w™¶iRѼͳŽ|¸"AÍ’Ël—¥L5×±}Õ\DÐô²v9t1sÒsÑ989ŸÑ|pt<‰ãDï'°¯³äBÈéË™8Àd«æKi*óÕ–±÷ǨÆdy½×º£ìç×Ò¯Õ÷mâQH2[+áX!áun’ÎÓrÙ¯ýÚ¯I¯„¬±SK޹pâÑ)+x¦p&, ÎYÂ9]Öµr¥í¼­–ãyíÚE-»mGÞDW¿Î±âß¾ó5ͤ»ñùØyôÚpñf¬£|�›~¿êîw“þîoK¿××ä?¤‰¸ì|œƒ¾ÇÝtñèÇ<Z®¼òJùÔ§?%ûnÞ'3³3rÛÛÞVîxÇ;ÊôÔtöy8±í»ø©X×ûž™0æÓò?Çhm+äxÎoüv(«õ ¯»BŽ•Ibj.³ã8ÉliiISeOt’Þc&xÏ<%µ{͈ßC!„¬3B!ë¨q¶ß/›‹¢¥¦7%‰I‚¸d§"ãÉe&xù(1irÙhLıä²Ò$07–\Ö¦‘™XV&¹ÌE‘ªNikµo“©\.²»8Âä3¹,II¹ð”—=Lr™%†Å»¤c ÍÉ%73!Mò4­ Ï.e‘%¡ÊÞØ@XYde4sa,%—µƒf.k‡H· mr™$áÏY¹Í¬´c=&ýyß qÝ6´ÂŸ•¯´LówY¿Åu8 g%EíÎñÐÎQË•f"š‹ýgIn©Þ„±:•Jide^ºUtÙFä²4mÖ–TÎ3­ÃV²C"ZØþÛy§ä²¬”§•LEGWÃ" ÀBÎ\NÅXÄÉ�i˲a_ÖŠ»yiNƲy™$ :çΨϭÉRÎÄ''­H%ÇJ.•MþûfàxÖß±¾É^xáØ_³~8CwýyJÜéö9ñâ;b™þ×ɺ>'ެ«áÖ2‡c|ÿÞv"×±—ÙÙ¹Õ­.ZñwŽç®Ÿüóyñmn­•dÛû|øcüûfÚút‹BNØÇä7Ú9WHÒ”$™ÙsùÏœ\ú—Äò¿çÓÛ{áû;n Á{®¾ÏókºšBÈÙ 3B!ëÈžJ‰r™%ŒI¹º­­e+—µçÛ²‡Ý$0K2¹L|Hô‚8ä!“|²ô¨Â¥,‚ª:+¹é\'ñ*,ŠO‚Y["1¼e‘¥é´K9ú\k“¬¬lŽ~…å ÂZï0E!Ý”±ø{ë”.&Yº˜“$Æ‹nö»‹‚Xž—K`õxBœO.‹}R‡¶›t×ÊkÝ”:9š\&m‚š—Lâ‹%Sƒ°•InÙz±¾ÕícT·}â,QÎ¥;¼­´te5¶}Œm*Ö“ä²VžÓš©O|ÖmiNônŸ¥ëH‚I K~³yëòÌ$mׄ3ü¢ IWgš´a" 9=È!Žô·¢8†è+BÎðÁ \þoã!„BÈ$ò1û9.~…›¦‹$™”Ì´çÇÐÆÏÙŽ&•ÌײñH.Ã÷Y$™™ð–ß<ÁÄ2B!Gƒ‚!„‰édeÒ€T¯(Û‚^béG¯å2\Jþ*²ä-¥¤ðEÉG“ÆÒ‰“hT[š0$X"”¥oáïEà¶´)q¹H•ÉCD§ ÕMšòY2•IMAbŠS'¹,ÎßÑÄRÐbŸ¤ÖŠvFž&± .+©˜OBQ?AJ ƒø’¥iÅþð2&IW¶sÖn?!¹Ì·¥3c{ÌuòÄ<kKèlƒ¬tåd¹ÌÒÅ’ˆfå(«¬D§‹ë&¦Y_$I+¦—%±KÚä2ü!¼e^r³¶ 1•¯ÌEÅ$VY:›dÉe–‚—-ãhlÙ  ‘\†í©h·§ÚÔb›Ãv'i{•¸,ánüó–_8Xí!dó3þyµ‹‡'ºìÁÉ&Ç÷MkX!§žIéeVVŒŸ[Bº ñŸ B!„²V&omRÀeyyyÅõáIó]KI_ü>??¯r®Gåc«IeGz_B!g7Ì!„¬ˆ‚¸Rž|*3àÓs*ù”–ðÊ/¦rƒYŠ•Øü eå ¥M Kå+;‰PE[vÓdªº›Š¦òP»R9/ÕÇ‚øf béQ˜<ä‚èVä]ÝF™ZQÎ'­,.K”‘|l?Ú”§tY_˜|UK[:2O sQº²ô7‘<µ¬-£Ù&—I'½ÌÚWg% ­ïlÞ¹ä–Ëy]¹¬}MJéš —¥„6‘ŽÄW{§<ƒÔ»^ióô±ŸW&Ð!Lû¹2¡ÏºµoUש j­å(CYÌ$·Ùö—ÉvATÌ—1žÐ›ˆ–D>e1ßÊb1¹ÌÒõÒô"IÜ릾EÉ2v°n£µDùPX‰ƒ3œ¼]4<S3[ž#‘ß KÙ䃫‰ëølŸiB,!럇éééôoÞôA!„BVc-×@,A̾WâlnnNojX^^jƒUçy´›ñæƒï¯¡$&î|>r›ÆÅ4B!d f„BŽŸ<‚9þ´t§4`Å­2¦<•… `Ë\¶Éeá5­fÒŽ AµºÉe¡te>m|bòVž$ÊeAsYȪî‰ëõ¤ßœlÍL—23U4'^Í£’ŸNN é)ÝTpª‚œ4Š Gø/˃Qóû°yïQóšªy›X3.I1–f]µ(‹eýê\+ÜM*ç9.ñ©Èd*™\ÖÊ_*>ÅþÈ¥¿jEM‰¥ÝZ¹,¤¸‰öÅJ¹Ìu½šõ0¬ðúR¦›žžê5ôws²ÛoúºùV‚Ÿ½ž%¯µeB1oô3ÂÍϦ{µ¿—µ,-daiÐ<7h¦5*‰ŠIä‹¥[Mô«“xX·Év)¹,HfêºÐî ¸Õ´:•Ëz…n×mYØLÎK qíºvÙGg<álü3E93±RCìÈÎ�p‘2O0Ë/ŽŽ— `FÈéEH.S‰BÎvòrBVÒˆÇ6B!„²ìº}J_(¸ÖJZŽ4Íl0d7þ¤º)‰q1 R™‰eöaì ½h-×ix-‡BÈ8Ì!ä,g£NBX—©L’'—µe ÛD(é”'\‘\æòÒŽK ÊÄä2—•L‰Z±$¦•Uô±Ô¥Ó”³Rú=NˆœF*C_¦š­Ù驿„­×ü,šç –¹ ˜õBÊV*c)–˜…¶C. ‚ÙPe§ <-/W²4(›¿Tx5A¢+\Ïÿ\:ô1µ,¥œÉÊ”³nr™¤R“¹ðä:Ée–fæÇ’Ë$NŸ'œÅö`ê:UIÊšÚ&—%ÄuRâD­,ooâCòEÆ ™‘²éϞ̠¿§ñs}ý½´\ËâòPf‹æ÷Bâyn¤òC'uZÖPF3l£VF3‰ÎJhé½}ÚæÚíÉëhÉe&�ŠõsüØt‰¯ò"–±t&!›»PhŸOK1;S°‹•`Ò~èXî®%„œVûlâoøŒc@ƒ3B!„B6ŽV³öL4Ãyš%šÍÎÎê?Us»Y_ÇâAø®ŠG¨ôR¤çͳ½Éÿè×k(–B™¯ŒB9*ã'ãÔÒÊb>Fc¹(|•E“ËŠ$ù˜˜dÉe)̹$÷¸í%m)Ã<¹Ì¤0o×-•hòP+TYÊ~ÓŽi™™ž–Ûú²uK)ósH-+Ã|J†$•S Ic¡)ù9VH4 2ÔôÚ袘U4ï_6ïßSÙìðb%U²¯B¢Ù°iOópU+ˆ‰œ%¹,¼QøOGÌ‹%4“„æ%íÚ’žeLKÂX&¢å‰Z+’Ë2 -/Ùο-å™ÒÐâ:¬rMB™Ð8W6?§›>êk?ooNˆgKMˆ ÛÅúû»BWEÓŽ¾,-ÏÊ¡Ã#9ph$ûŒdqiдk¹iCÕöC&vù¸ŒEJ.+ZQQ‚¦Ëå9C…¹2<:b£oÈ´N\[¶Ue¿: nU˜÷(n§õ„xòüÄžR!§7ãw|Ú…ÁÓIÚ_+µp4ÁŒ²ùOÌÿž—´5Á w¾ÛþŠw°“3ñmÜ> ¬›™™Ii„B!„¬»™Û®[ç×óiì'®ÁëüIóÌŸãµB!k…‚!„uãc©?©‚&S$iÈ©PBÐä¤:¦6YrY(]éRŠ”Ée­ðR¤V¤omR—’“Š;±4¦÷˜S¦{2;¹lF¶ÌOÉŽm}Ù¦‚Y(Ïx,çPÎ%LB4UþbÛYj¹Ì©)/½²jÚYÊâR©2JgVq™Šw&µ V&×µ‰d1õÍ…ò•“R:–HGd²4²e4ÇS߬ŸÇN2ƒ„V¯’\¶ržUÑê$k!!¬Ô¤¸©~¡bYYN5ýÞ—í[z'°¿ÃXèïÙ$£U2ÕʡŞ&š Ãæg-£QKhÖ«ÎRó\W ë$³Å8² 5º±²˜>%ºuå:I|Q@ô&cÖ©i^æ”röß}z:0.”Ø]´vWì$IÅà…JB6'GúlÚsöYǾ û,ûžt´×r:c’Y~¹ÌH¹íB!„õ2þ}ód¿¯1þû¸ŒÆŒ!„äP0#„²n¬„¡Ägü/%—Åä©òÔ–Ìã˜],5˜Nf|[¦Q“ËT OiÉÍ”Šs¡¬ä¡‰;•‰>¨µ8£© çìž‘Ûû²u¾/³3¥JN(ÛØ+³²“ æ¿eN4!mÇÖB—{rxaJöÊMû = ›v šeñIúÒþp’J‹º˜–J]úXbÓg%+“\D&‘¶$›%kyùœ¬8qÍE¾nÍ6MÎRº|–(—ËWH-CšØ`Ô“é©~³ÜS²}+~†2˜(y2û{;ú{©'OÉÍûrÃÞAÓßK*˜Yªüe)j.eæiÛF£,™Íd4$¨õ ]cÎ,Q./Ýj²šÎ· É}>ö« £V.#„œ½@~Þ²e‹8p sÁît¸p‡öær™•q°çÀørp0žÍË‘îX‡PƒçæççÓþŠéMäLeÒ Ÿ%ùá‘??^›B!„cåT\Êo¦ „BŽ f„BV°¦›NÙ ¾M-+3q¨ð•Ê0f R1…̳6å)ˆbÆò´®"K…rÙ{‡’ƒx¨:ÔÌ¯ÔØè¹™YÙ¾mFöìš–Û›Áü¹B岓„¤©"$vÉlóÿ!ÞƒteÓÎB-¸P*t4B¾U˜2,. œ²Úµ‚WXÂIrYx®ö]ÁÌú.L›þOËtâ<IMb9Ï8}ÕJ‚ZWa}šW fJæçBBÜŽm§®¿çšþž›-dåO›mòž_\ò2â$ºÊ$½ æYyeÛž7“O²2šaû)¹Ì%—!½¯ r™N«’_›^–‹|Ι\™-HxâˆËÊ‹�„œ`°If‹‹‹§Í¡Ø÷ Íyi†|0~|ß4þï|%dóp4¹ÕR ß«çætµšHJÈéN.ŽÙ¿q³Ž{ª¼œ,!„B!keülRb!„²™¡`F!dÃÀù$¤<™ˆã\+&…­ô”D1׊L*HÕ!åi”’ÈœVF ’OvÚä²:•2D†ÒÍúÍ ØŒìÚ>#·87$—ÍÎÍßB¢Ú©À{ÏÏÒï;Ùº¥}J¹îÆR^nÚ?^QK¯ ée†IOuLËB9MçÚҘń42/Ý’‹y™K76ï®\Ö–éLóÕ÷õiŽ²ÒŽÌP‚e1{Å”l’s÷LÉŽ­=™‰)q›£¿{Úß{÷÷äšë{²oÿ², s4ŒÛ’H,±š§‹Ñ 룗¥ñYš\Hò’˜šÞW„Ï�^_û,]/–Ŭõé¢PA¯àÅBÎ:ì"­‘fvøðáM].S…ØX*/Èeaï™'¹€# ¶s žÍÃ$Ÿ}’ š'ÚþjaaAo äLĶeØæ!˜™\6žàÇ@B!„r,L’ÉNö ã‚!„r,P0#„²nTHR¡¬Hr&7¹Ü¤)\"ñ©ˆ‰eÅX‰‘ŒÕ–'ÔùÇéÛR†.&*ø˜�æeW¢S¯/s³Ó²kûœ–Å<ww_å¢b<%ê` [(9;ä«Á(HH ‹¸F*p¹!Rm°à^ dú˜€få¯$ðåe1³ä2ÉIJ¢›r–¤µºMß²Ùçe7M¼J)qQŽE™¯ª íó~Óç[f‘7%{vlÆþ.U0„øˆ6#ÑìÀ!‘åå&™AftE³6©£“˜—•pµô1Ý^ã6Z–í6šRÎ\¾Ö”8M9ÃÿšÉFµá¹<!gV^[ø7¤Á` ›K/Ê3ÇË*­,&Ó^ÙLØ·ÅÕ1™&ÿ¬C0Ûºu«î¯–——ù™&g¶­c;Ÿ™™Q¹ ˜pf?ío„B!„/ù5’“)z—ƒŸô<¿ëBY f„BÖEHo %.‘òÔ³„1碘TÇä-I1 &í¸Ž%šˆ’ËêL.ë–Ü Ée&¢…T¨áÈÉò¢Ó”l™Ÿ•svÍÈš\Ö L±j³€6ÍÏráy}Ù:ï䆛œ88…Å,ªf9¼ô][æR{«hËVIÎ ó[!—Åþ¶uÑ=Y\YªÑÚ”Ä0¥?LcÉe•¥Ë‰,,!Ý âÖ´ìØ6%ç#¹lÛiÐßç÷›¾urýNöîëÉþK2ší Ûq%H’â ){!‘ÌÅŠ8ZÂ5Ê>FXŸÊeØþKëÃ(—a{®,­M.Kw©Læã‰;!g&mq€Áìùùẏšf†G^ªëd3Ð6ˆe(å‰þ§§–­vA”& Ù|i0#ÿÌšTÓ¦µ†ý�’°_8•û+BŽ—ñä{˜T–ÿíhp„B!„›áÜéhm8Ym<Òu¥ñ6ä稄BN>Ì!„¬™ÕN(\,] ÌmÊSH0‹'E(5hb”•¹´ÒŒuJ.«“ô”ä²(ðà/µJ;Ò&—UHV(›® —íÙ5+çîž–];û²e®Í ¥2ûýRz%–!,ß°Y¦åÈÒr¥BWQzMâ pYºX\ÖË‚ó)lÚ¢X™\féeQ è”ÐÔ„81鯛\™ñ=™šêËö­S²{Ç”ìÜqzõ·÷¡ØÈVÕÍßꦟC§r—ñ§•Ь«:õ¸<å¬hK¾ŠkÎâôuÿšgK—Jb†“aY5@„'Ë„œ¹Ø±¼Ôþ†mH]ø»I'³t¦•ÂÔTÒæ'¹P6.ÆQ&!äÌg³î¯9^\ç»x8îAô¶t2B!„B!„² f„BÖ•°´ô++uiO𴩦W¶²˜ J«0†„¬Q­¿Iª;½•ÅLÉe£ ; †A.Û± %1gå‚s§eç¶žLO¹M• u$¦úNvïì5Ë„»½û^Z†N'[æ¤Y‰ýˆ¾(²þËä2/mr™´2ߤ䲪^Y3HUá}´¤i-iZ›~Ôô÷áÈV=™Ÿ’Û§åüsš¾ßzzöwY„Ô<póþf{úæ¹JJ$òEaRË\Ʋ–íTD«}ÐôQf {.–‚µ~‹Ì@%Áf¾©¸¾¸î^FÈÙÉj© vãq*O(&$S,#äìb³ï¯9òíy³¤6B!„B!„lv(˜BY?.U¿Le�Sr™Ê:™ŒSž´|¦Ó¥ä2o%]GàQ¹ ÂŽ&BÅÄ©„¤FõevfFö윑óvOkYL”B<@ÿÌiªVO–XÆ`†t­Á j–ÑËÔT^¢%Ê\)µ,&¾E¹,%‘eë%”+ÉeQxҩǦµéBùQ¥ªÐßúª åÒz²}ÛTÓç¡,æéÜßèc,§&Æ¡œ«J{UÛ×HëHÛi(Š®+cª\ÙIØËRâ,)Î’Ë ðù8·éêv!älf¼À¤ï“1À§&Ž—ËKcBÎ^6ËþŠõ'˜å%`¹íB!„B!„¬3B!Gd­Ù­¤b%”\E±^ÓÈ lB™Ñ¨ŽeÃ|ô5Zš°h¥µ<¹¬™v¨²S)eÑ—¹ÙÙ½IZÓ²ggO¦û§O’Ö8hû9»ú*.AxÚwÀ«pÖô”ôz®3"Ñ FÛ ‹!¹ ýhýç;Ò˜ O>–ÅÔê™ãrTÝ–ÆT±¯éïÅ%׬«Bú½¾lßÒ—óv£4æ™Ñß()ºÜô7–cy9~*áèyŸÊƒZ9×ÂʽcÉeqû¯ÅåZñOKÉáM}˜·­lÿÃQ½¦ÏËerf‘ [yI.ìçd|þsad\Ïòç!g6›qEÈF1~L›tŒßιB!„B!äl„‚!„ud™æQ,%c¡`(½he‹"¦oIžåSê™ Z›$%1åÌä2”'Äkêªl^ƒ²ŒS²kÇ´œ»;”Åœ;Í’´ÆÑd­Y¤„õäð”öËÍjYZö2;Óü½z/:z1õÊÇÒ–.%¿Y*™•!m“ËÚ÷j“Ë´~i&—µë¤Òu’Ë––±þJÙ¹µ/»w†²˜gJï¬ú²°;¤‰Ý¸·’Á ˆŒâT }QE¹,ös“ËJ-ß*I(Ó~V«,¼G‘÷³H*·Ù–­ãk„r–±–ò\§J,/‰9Þ>Še„œ]læý!ÇÃ$™ŒÛ0!„B!„BÈ‘¡`F!dÝàú<’˜¤¨crYo4¹¬,ôQÄÒŽ’„\æ³RšIŽŠÆž1M“Îôw'µ”ZsnnJnq.Ò˦dfúô–r°,çŸ;¥}rððHkYZ-•éûÍÁ»‘ )q©¤hVFS«aÖñgœ¿&jå 4U\¦_„´áÐÉ y ‡…ÌÏ—rîži9oÏ™Ùßâ¼jú{ieA‡MŸÕ1!.Ô´t™XÖ+KÔT¼ôqJiªô'.%œµr™$¹lT…ä²$¤BÎ:Ʋ'‰\§j {RÛ&MÃÁxBÎ6óþŠõ0.T¯·oB!„B!„ f„B6�+w YF±2”¹ ÂS’ËœkÓ ê:–k5nòÔ-½xÑ4ᬊ2Z”˪ bOOfg§d×ö)Ù¹½/[碎vf€r˜X¦ååž–£DyÆåÁHKeº9/!°Ìµ?]^²¬[ÒÅ[?Gº¯sI°²˜uœ/U¢Ée˦§z²­iËŽm½3¸¿±|S²<¬e° ¬Ò>”ÐÔM¸˜^V¤4¾:Ö†­ã£-‰)iû×Mº–îö_1¹Œ³ìŽ¥üÖÉQ'½çxÊË‘¦'„œ™lÆý!' n¿„B!„B!“¡`F!dC°ô¦Ée&"ÅçW&—¹(ï„ä2§³²„UL.SQª*d4ìËtZÎÝ3#çŸ3-s3eVÚDΰLs³¥œît3ª'rÝ (•Y5}Úôq¦²SÓâÌZ!`¼?\,=Ú&œù¶,få2‘”Ø5‰8„ĮЎóÎ’þÆòçÚJ–—*™ê¤…É2&’1¼Í'©,>¤÷ʸý»ÂRâ|J.i)Ù`ñ™ìG9û°D IÙùßW›æDbwž`” Ê܇ræ³™÷W„B!„B!„“3B!DL*2§,BZVËB Á<¹©Mß’LZÊ䲘\¦âS瑜Փ™™¾¦—íÚÞ“©©0Í‚• … 6Tú;–mjªh¥LO…ÒŠGË„eÛ¹£'˃Zn¼i ËË®yÔÒkŽÞÓSø‚œWÄT²ðþ¡o½Å–%@Tà³þ6!Êd¾\Ä2¤m †Ò¼¯“Qå´ÍHŠ;{ú»/7îíÉÂbÙôE)uÑ|aЉdÑá‹rYØ®cKÒö\ÆÏ€M¯‰p–ò×ÙþEE4_m®>%„œŽ$f))èD2)±ìH’eBÎ6ãþŠB!„B!„rr¡`F!dƒˆÉe½By EMyªbéÅä=¹˜^ä(•2±L“žjK‡rRù¾¸¢/3}”hìɶ­=™Ÿ òÐfËB{Gríu ²wï’<<Ô6îÚ9#»w…ÇììÚ¿x–qÛ–°ÌÃáH—ë¦ó¼ô{&0¹Î{{“Ä4N˲¬4f™BeÒ0­•!õ±\)€Tvxå1 ™ê•²e>´á¬êïæ±¸Ô“ѨÒí6”½´ôŽf[­|H% ­ˆ¥3›í¿(T3¹ÌÚ’Ë|7¹,Jh¾.˜�DÈYȱˆ'KäšT3ÀÇ9„³ƒÍ¸¿"„B!„B!„œ\(˜BÙBrYӛД¨U[¢–ø$0%±ÌJ;ú6¹ )O–\f)\^Šæï¥ô!—méËöm=™›)š²YÀ2GµÊN7í]’k®[o\”C‡*-/W:Ý–¦ýkžÐGS}”n,t™—=9´PÉÒ²oú§[¢ÒÄ%‰Édš¨…2ëë¶±Ò¦–¥ù´3«š¦..á§“ù¹žlßÚ“Ù³ª¿KÙ±­ßôÁHö¨¤ò­JVëßJzËŽÆ„³"%÷¹´Ýç q&þa:üïYL0#„™“%k¬&–izŠ$„îÈéÎZŽ„B!„B!g#Ì!„¬K.ë'—YÙE——ÃÌä2‘±2µŒF–¨Õ¦¨à(‘Ù+b©Æ}-¸i.ùGAnaa$ß½ö\w=d§%9th %‹¢Öt-”k¼ÅùóÇÜn,+–yyPÉá…¡ †mÒÝP¥Qçé|j•rlE¾VH«³2¤m?ÇWz§Ï ^×厭gq/‡þ.¤B)N+;šÅ½A,s±$l(YÚ-W Qée¹¬°éœ htË!ÆjƒÙ§"åp¼ìݤô2¾rö²™öW„l$«mÛ“R> !„B!„BÎ&(˜BY7¸Ä^Æô&M3‘° §ŽƒÒE Ù©HrMK jr™Š8µ OuDgõ¥hþ]è¿‘ µmK_Köz›ã¾&i C’Ö7-Êu×-È HÒ:4”Á JÓ,•í8㱬(Ùxx±/×ÞPÈ`IdyÙËr¿éÛi/½ÒÚŲ"+‹ÙI/‹ýÛôuµEŸuQ,6óBŠ™í‡÷=kû{¡/ýKYX*¤ÕQC{UÃ4NÂ6 Á,/‹Y§í:Û¦]øœHL.ƒ£VÕÝò¤„³›Í:hÍÁtBÈ8Ü/³ nó„B!„B9Û¡`F!dý¸, ÿ«cÉF1Ñ)&—Åò™EŒÓ²òËôQ‡’ƒ6}íŒFeó³l^[ÈôT!óó¥ÌÍ•*êl†àMÒZÉ5ׄ$-“¤e ÝmË–)-×XöŠcn7–Ë<ß<®µ°èdaÁ7ýXGa/N¨îR,Y¸NiÌRåB?çrYèïAÓäà uóQ[g}7Ë>ÕrãpRôŽVèwÑm2$—*OZ_§D>ß–ˆº®ÂJ eJ­|l*kJ!„B!„B!„B!› f„B6 ™Lž±Ä&ˆ7eÌ4åI2Ù)&MYÊpñ5¾*š¿Í_ V•2;SÊÌt(Åyªë j’Ö¨–Å…‘Ü´7KÒ:Ü&iiéÐÒÉ–ù¾ìÙ5+;wÌÈT¿”cý1ÕôÇÌT!³Ó¥* -—Y^æfk©!A¹úf%HU.+Z¹ÌÇr¥µoÕ2+£þÌ—¤i¿¨4Åþ}€m©i£º–^b$¾B·írYå2Ko fÚòt·{—Éešp–’Ö„B!„B!„B!„B6%Ì!„¬ :JL /Ñh"NKš€±f„×T&ãˆ&BE G£PéPó³=Mðê•®}O9u u ²Ów¯=$×Cvº)ÈN$­¦­óó}Ù½kV.¸`^öìž•ééò¸e"”nÜÒôÁá…²y¯ZžªÐ祦–I+—išVÉLü«}ÝI. ëGÒ4uò“H sšÞÅþý}¨ÙöVµ GU,uJbê6þÖ6ý'¹(é“”——Æ”øÑҰͺCûñð4Ì!„B!„B!„B!› f„BÖ L•WÕA®qAÓ4­2K.³r*—åÉe>OQ@à PfÓûð³è2;[ÊÜlO¥žS –BÐââHnŒIZ7NHÒ*Uvš’=»gäÜsæd×ΕŸ¬ŽÌsn6$¹^Ép„¶„¾/{¡Tfá\[®4KÔò>bæ=95>Qé ¢Úpäu~h#Þƒýúà è§ÉeNK“q›6Aϧ”8`ép¶Ý[ÂY×ÖÙhBz!„B!„B!„B!„l6(˜BY7j ËHópY‚”Z„¤¤%/%”jÔ²€UÌB"T£$–y¬ë˜¸U…Rštfgz*=! êTÊ8‰GrÍ5‡äºëäÆ IZ¥%iíž‘‹n¹MÎÎö3ÁNŽ‹²âèÈ`H L©`V´‚ž¾Qhoí¥M.‹Ï›\féfË˵,-…õ‚ä®öw§¿S²ž+BJܘ\–'—YzŸ‰oA.s1¹Lt»W¹¬br!„B!„B!„B!dóCÁŒBȆPÇ$&5…•ÅÌ’ËT£Qi,ˆ5&ä¸(•YÊ“mUUxàߘÏôTÑ<‚XuªC’ÖMHÒº~An¸qQOHÒÚ2?¥’ÓyçÎëÏ­[§Ö•¤e`þ(ùˆ~@Ÿ ›ÎE“Ì,9.ÉeµOòS›Z–þ£}ܦPfsi¹–åAHÔšrìo›Þß1“,Ézø¯nÇ(ÿb¥GCj_L9“ J¦ä¾(WÖ1¹¯(ÚÔ9B!„B!„B!„BÙlP0#„²A´ YE'¹LÔ~ªë6éI“œbÒSK5†éD*ˆ8Í´£Êée2‹Bdº_¨ôTœ¢Šh;d§ï^{H®IZ‡’¤…r³sý(Ïɺˆ4ÕôÃTìôé`Ô<†¡­VŠ1­“ø_KÖBš–gÕ>ˆ|Ë/ƒA˜û;0ÞßÚ¯uH"C¿¹XÞ5¥ÃA+L|+RzYH‘ó*ïbiÌ W6Ï—Íô3B!„B!„B!„BÈæ…‚!„ Â’ËŠ”\VDi ²“Š8Þä2I‰eEÒŸ$–„ˆã‚ÈS óê÷ é÷Â{œLðþš,Iëú5&iíÉ’´6ªÉ˜W¿Wè¿Cr޼&˜…„,K2 ýˆŸ.Xe¡qV>³ŽÂ¤'”ÚÔ$´šýmŒ÷·&–¡ß*§)|ZxÔשMxÛ2Oï³²°>$…ä¾:É}á5Í4E[²”B!„B!„B!„B6Ì!„lHxÒä²^¡ée”¥aZ1Q+ýž•”XvPSËBzÖh䵄`]—š^0¯^/ÌÛæ{²€¨µ°8’kŽ!Ik÷®™í§2ÕÞ¶Bª[±D±'I,S¹,–-\[‚T¼O“=P®q¤%I½ö9û;0©¿!=Z™K‘ ™Y‰KËzYrŸ´©}˪¬,lKâµ¾*˜`F!„B!„B!„BÙ´P0#„²nTb*‚X£²M”gêX®1ÄL Zéå2+9h²SU…²‚ùü-MNRÒÓñ$i{μÊN–¤µÑhBVLÇÒä+”·¬£gépQà‹Áe]¹L$&jÅD9+ñhó©%¥Ë±¿Wö·¶SL2C:œWñLû9öWÛoQšŒ¥1«Ø×º®ýŒØzb€!„B!„B!„B!d³BÁŒBȺѤ§2$—iIÅ,±,Äl¦)$ 8&<ù¬¬#žFU¥’Y*õèó÷pY*”œp,IëÚ£%iÍõUrºå…ÛTz:IZ-.IcÑÍÓı: bè;-ʈibÉÒ¢0¹ÌÅ4-‰(—‰tÖƒµ™ý ºý-QêK}fSAÈ+-¹¬m‹b¶mM.lÿ6ßP?ÖŸÌx8B!„B!„B!„B9(˜BY7!Á)Š8奤–yMk*bÊYÏ“´j¤–Õ¡„ ¦pYéLÉ¢NRÂÚ5Ö²¸’´®Ëd§‰IZ»fäÜsc’Ö–“¤Õ!O»òV¶QÚô2'±4f›^&™Ï’ÎbZ™ÈäòŒìïÀ¤t1+Ý*­4©ÛwVÓJcÖYYLáì¿&úÕþä–!%„B!„B!„B!„c‚!„ jXU‡ßj+ÕùFÚRƒe‘%<¡,¢&—ÕQ, $Ÿ'„<½Ç‰E“´–Ž!Ië–ÛdWósv.&i¹ׯIó 2Sö¦V³(RF1±, O!.„ruÎÖòžÉéÖßù!—õbrY.—Õ¾-™ä2çZW-“ý°í[Â!„B!„B!„B!„lF(˜BY?)I+æ–Åò˜!­LbrYxhͱ„§”ò$AÚñ©¬cöñ=NT`•Ên£ZG²÷æÅŽì4ž¤5“´Î9g^e§­[§’ìt¢ÉËXúôŸH™BYÌ,èÌú: Oá5qç'ö)û»mg§¿ mÓÔ¾˜Ê§Ïc;n~­­ô¥FÄ9-WjÉr˜ž¯­|¦–Ðd©LB!„B!„B!„BÈæ…‚!„u5¦ÎE™,±©, •„ðp…$ ÓjrY%—5¯éAÖñE/3±'Êk()xâ„'¯²Ó5×’nXC’Ö…Ûd÷î™í'îD;Bh£II~,îÍJbQÎs2¤­Ô§+ÀµåLƒÕm?û»mã¤þÖí´,š‡WÉÌÚ¢ÓÇÒ°y‰R•þ¬ÍuÑlû¯âg€B!„B!„B!„B6+Ì!„¬kªZJýIžî„§R“Ë\”ÆÚô¦ZÓœEL¤Âtµs³)ÌBŽWI­Ü@ë)%i-dïÞE¹þ†¹iIZ[¶L­HZ;‘@øB?Œ'^Y Æ">T.‹ñf*‹EùÉ’ËBàVÛîñ%`ŽÖß.+‹i2_ |!M.$œ9‘”"dÌ:¥÷øB¤„B!„B!„B!„rüP0#„²n4‘¬öâê:%6•eAh2¹¬ÒÔ&ˆ5u’v,yËæ5îáoÑW1©,Ë(HmTÛC’Öµ×êÈN«%i]ˆ$­]'7IË€‹4¢üŠ÷ÌÓËl¹Zñ)¶ÑÄ'Âu¤³öwàHýmÛ($4q™€fIrø @°,MøóiûDzVI.#„B!„B!„B!„Í 3B!ëÆJ*âg›Zæ¢\ì2lBŠS2›Š˜e%MºÉ&üm8¬e0ôÒï{DjÉF€y.%I ¥ççûš …$­Ý§ IË@? Fµ¶;—“Lê“XSËÆnË¢Oãt>+‡)ÒIç²÷a¯Þß -?jýìCÇí?$—Iœ„ˆfée)¹ÌwåJB!„B!„B!„BÙŒP0#„²a@°TÖKÉeA eë(¡õ JŠ8A{Ò×û1‰§}­È@…§ZfëR6´²Ó‘’´LvÚ³{V.¸p«ìÚÙ&iß)OƒZ–UxŠÌ+,Zb™´‚Y.–u%­¶\c“ÌØß]VëoKŽ¢ßt›u>´±pIÃö_ª8æb?‡ä¾*“Ëôó‚Z²u‘KB!„B!„B!„BÙlP0#„²n4,¦6•ñÑ&’a‚Zꘪ•µ¢\VdrY-ÓLŠó¨¼,/×Í£’z~}‡.ÈAšט¤Ùéœsæd×ÎYÙºµ¯m:U.úf©iãróÐ’¤’—e£d&húÐÒ˜t= kIÒ_k©±¿Õû;Hb(w‰¾sšØ’ä:Û¿ }mr~¦„>¬üÏ¡¿Ýx•RB!„B!„B!„BÙ4P0#„²n Ö@²‡–üC¹F-YY, 7á×î„ÿyïT.ƒvùfTÕÍ+’ó¹‚ÒâR¥¢ÎXEÇcBÐâbHÒº²ÓÞÕ“´v#Ië‚­²k׬ÌÌàe¸u¼ÿzUH«B?˜¨dé^1U+%—Å>/Š6IÎÚRÊbW6sœØßIýmí\æbYÌB‚0©©eeèsË•V*—ÕúÓRÐ —õ VÆ•¢ëP!„B!„B!„B!dsBÁŒBȺ±³Òä2‘˜ÔdéXAÀÑéLz*‚€£IZqúª¶‚æ–…ÿBôYPÑg¤b’÷r\©Vx-Ê4Þ|ó¢ÊN7Æ$­ápe’Öµs׬lÙ’´N%! ¬é‡Å¦ƒøRÊbiK‘¶üh,ÙXd%U9‹š–w¬»â– “(ìïUú[¬Y>õe*‰‰Ô²˜\fëCÓøbYLëk]¾-Wª hYßB!„B!„B!„BÈfƒ‚!„u7&HcáßšŒU[‘ËPBP§AÒYÑ OµÆiµÉe¡ä ÍÕ§Ä3È= •nÃÑñ'jAvºþúÃZ¦qoLÒÂ{+’´vnŽ$­ðÞ^…§Ã‹•>Ð'¡dc+òÕÞEáÌ¥’¥®ÈKc¶"_X–ðZ}MÑÊjìïÉýcâÄÄGíç2ˆ•X–2&—é6ëëØ×u*Aje1££’м—± ¥„B!'Œ ·»æ{ÎH^ûÚ×ÊÕW_Ý|g[’^ïÈ—‡J<33#zÔ£ä¡}h’å !„B!„B!g…B!ëŵ WZz1%‘AzŠ“­ôTdå2u-X§´3ˆjE‘ͳ™fyJ.-×2Ö1!íØ j¹yßr’¤…ù ]Sý²MÒÚ3§²’´ jÐÆÁÐ7Ëú`0íFÿ”±¯rY,ïgúS—¯Ž¬ëÚ®PÞ¯gOîo Â¤HJãCr™•Å,¢\fÉeu–\feaË"/¡?#µ§_F!dÓÊpŸz‰H™žGÊÂÖëp8”üã*š¹‡ë&>ô{LYêkÞõ®w¥yP2#„B!„B!äì f„B6 ï%Šb’•o ƒO½2”C,ZMË4"á©2ÁÆYÊû††ð­: Oð{ÃZKâ17WJÿµP²ñðáÊN£Õ’´n±Uvn¢$-`¥‘(†>@¹(“AnBàD7¹Ì¥42“ËòT9‰ë'h½¦³û=ßôC­ïÒÐØß“ú[û­ð*ŠõJ‰ÉeE(‹©ýæS©RŸ'Å?±u!1¹¯é£QUsàœBȦ#•9ÏÊ:o4¹ ä½_ñž�ß-!Îã'…¦cjjJîv·»É‡>ô!©ª*|oñ“ûWï iÖ Ìö°‡Ðm‚B!„B!„²9¡`F!dݱL:%.UpŠÉN ÊTÓ¦·ä² å„×X‚“ºjH1«¢ …§‡†2;SJ R”.&{At5 † Ô+d~nJvíš‘={æTvB’–l¢L”©<xhÔ,ûH†ƒZSÈLàë÷œ>4E˵éX¹,‰Oq†&—Å*¤¥¦úÍ|šÇ``¼ìïñþÒ£×Ô¸^',öYL$³ñYK93ùärYKhæIg„BÈÉǰ¾�H+sA>š”få7¤aAlÒz=MÈ*b½õü}ñüââbúžˆ¶m6n¼ñF¹æšk´ÿ¶lÙ"·ºÕ­t™N„‡¾ùò—¿¬}‚ßñ^;wî<¦yØz~ÊSž"Û¶m“·¿ýí2Ur¤ÖÎÏÏËsžó¹ì²ËR"-!„B!„B!äì‚!„uƒ1@$1IQ'y©Œ²žðpE7‰bÍrM*‹IJrãz–ðÔ¾¥÷6‹¥lÝÒ?SʱÐï²cÇŒ–<Ü·oIÛ°e~Jvîš•óÏÛ¢Ïi’–É@²9ŒÂrãß -59ådz*ôñJ¹Ì'™Ïï)–w´iB9¤‚æÓop‹v©ÙßÝþFŠYÙôO¯û.{ͶKŠšX¦í¯»²¤‰šhVK›\VÕú™ ë†v!„SŽU_ÿú×å¯x…,--ÉM7í•óÏ?O~üÇŸ%^xK"’‰`%˜a¯{Ýëä+_ùŠþ~ŸûÜGøÀª”5ξðù»¿û»” õ¼ç=O6Ÿþô§åõ¯½~ǽä’KäÙÏ~¶ìÚµó¸JŒ ôÞë›ßü¦þû©O}ªÜÿþ÷?–Y$‘템֫¬úe ÏÏÎΪܗ¦%„B!„B!„œUP0#„²n0ÐyÈÕ>J5¢BY™§<Iq|íczS[0<¦‰…›¿yMŒÒ˜­ø7”.<tx$3Ó#YXªev¦ÏúýR¥&�i í˜ßÒ—ÛgšÁµ-Û(²yFÌ´Ÿ*/‹‹µ88ÒeGÄŽÒ$-Ha3ÌzEJÓ24¹¬î–œt.+Ÿ ùLB2—%˜…>Ó²¿cG’ËzáQ¦ä2I’X(-¶çÂIÜþCùL]ÒnûHûk“Ë8JK!äÔ€ãׇ?üaùö·¿2$q}ä#•[Þò¢4‰Ó!—™¤¶wï^ùîw¿«ÿ~ÛÛÞ*çwžÜñŽw\‘œñí[ßúZÑ|w˜“͈•ï<Ù%<­t(ºëXÞ:ïßíÛ·«8¶´´|ÄéçæædzzZ7AB!„B!„rö@ÁŒBȆ`¥%—õÚT­vš ðä¥41>¥r™ Š4ä=9ç¥ÕÎ()¸¸T«øƒ†3Ó…ÌÍ–ÒwÇ&<Al:çœy´HʦSÍß!@™è³Y¥FM_-,Tº¬‡FÍÀ_”ò\h)&ô(sıÐxË|V3”lŒå¤Ä-¼¦×÷Mÿ©ÏÄ)öw=V¢«ùâÔÇr…íXù:¤“Å4+‡Y6Û~·ÿ0ùÚä²0OÇB!§ŒÈ—¾ô%-OißãVö¹Ï}Nþð‡k¹Ç\ž‚X´žäM{›'ÀÏC‡k™Æ[Üâ²k×.9ÝRJOb™PròD‹XXW�ß9Brí±­´ëë¿ÍºŒ%˜9~q!„B!„B!䬄‚!„ Â'é ©Mx¨\fIYxÓ¤³ðS|Ô*\&—ùPfÊŽWqÇil¨PZÐéß—*¹yÿPK0†œ¡GïBúVYöBYÆMŒ ^öé²..VZVÑÅä2,K¯ïBòXϵio±¦‰Y À5ßÏK& ù žal±ì…ù«`V ûÛ™ 2>ð»Ieµ æºv{.bj_áÆ¶ÿ8ðlå4íóâã@4!„r²ùÚ×¾¦’D%ˆF8>|Xn¾ùf}îNwºS’¦ðÓD4<ƒN;u^x%,‘tµšXe7">$yâ;cstÔRïßûå‘zäÄR™Gb4i[–——u¾h Ú)jµc,–Ù^ƒßñž˜¯[í5XæC‡éûåï‘/ïj _Ö_ø ð~óóóš 6éý0Ÿ……}àwLgëÈD2{Öͱbë˯ó·j¹r+“º¸¸(;vìà÷B!„B!„BÎB(˜BÙ0(•’Ë´\£´r T§ 2ŽtÄ gN¤ª*EÑðטpáËô^˃ZnÜ;пÏÏ–š¬u& tù($A캡YN<°Ìú¶?ådjÊ©ÄåÆúZÿ ¦”8’%eÙ:0AªŽÿ†ì4ÕsšÐ…qÊ*¾ßÙÕßËúÈû[%³2>œ‰y!…¯ŽC±EÜŒ‘ ÒËåJ±Ò›µ&¤¥ä2 ed5á¬.˜bF!ä¤I R¤'ÈRw»ÛÝôøþþ÷¿_¥¦/ùËr‡;Ü!¦–…ׄ4ÚJå³~ô£ò•¯|E5gff5ì.w¹‹Üõ®wUyjR¢– ã·G nTó³ùâñþ÷@.¾ø¹òÊ+Ûï¾UÒµnºé&ùà?(_üâõwoxï[ÝêV*È¡=³röíÛ'øÀ´ý×^{­J_·.¸à¹óï,÷¸Ç=´Or™ Óá5HwCÿ@¦»õ­o-÷¾÷½“àeÓ[R›ýþo|Cû }Š÷Æß¶mÛ&·¹Ímäîw¿»Üîv·KÉg¡jùä'?)úЇ´<(ÖÕ9眣ýr¿ûÝoEÑcÁ^‹÷øÄ'>!o}Ë[eáðbó·Õ¿ŒŒ†µ|õ+_“׿þõò˜Ç<¦YGS2#„B!„B!ä,ƒ‚!„uƒá¥"%—9}¨ïdr™iZq¬+=¹”ð¤Ó×mÊ™&<•>‰PÆh䵌a¿WȾm}MÖš)5ÉëL�"d'KÓ:xx¤òþ› ^/™4V+us˜bRHH‰ëÊe–"q:$“ÍκæýCG±=gC/®ÞßZB´WëC·ä¸}ê6í¢(æ\Jí³þ:­mÓ–\æBº^Œ×U…P0#„rÒá ßúý¾Êd™®¾új® Ÿa”¬4 Ó^sÍ5òŠW¼B®¿þúŽätðà!¼ m<xPKlK‰HÌ ²ÛßýÝß©èµgÏž£¾ïó’—¼D¾ùÍojÛMžÂ|Ð>È`û÷ï—?øÁšªŠãí7Þ(¯~õ«åóŸÿ|§¬$^sÝu×éß!u=á OH‰mè‡7¼á òÙÏ~6•¥Ä{A:ûö·¿­b-Cþ !f¡ú’Úw¿û]ù¾ OzÒ“T3 ~½æ5¯Ñ¶çë íBº\.°+¶Ì_ýêW›výì»yšßj„³Z¾ø…oÖñßÈsžó]G„B!„B!„³‡µ_í%„BVÁu’Ë¢X#Ajò1*”xtšôT”!¹ Ú•4'”mô2ÕÇ §—||Ï›ù\Éu7.Ë 7u¾Nw°,X&,Û¡f±¬ÞÒ>J*‰l+dë|‘$/Œû†4²8™“N©F—•Ƭ£Èב¤š жuK3ß-Q\‹œñý½ûû†¦¿WͲú¶¿ýØl‡½Zúe­ -(©²Xœ¤ˆÉeúÈÒGBʋۿ%÷…õJš>G·ŒBÈ©�r„%�‘ )ZxXÉF<wà 7$IÌ„¦w¾ó*báwHFÏ{Þóä7ó7åxD’»þéŸþIK/-åÊ©=èA)µ ó†�v4y Ï¿üå/W¡ rÙöíÛå‘|¤üøÿ¸&¨¡%$.´Ë‚ã4ä°÷¼ç=*‘YYPˆp?ýÓÏ•ûÜç>ºìëÞ÷¾÷i☠øÍ|&ö©O}*Éex’Ñ.¿ürîþíßþ-‰[èKÃÞ f˜×¹çž«2ÙÓŸþt¹ímo«ƒðIëÿFJ|&’[Þò–rÕUWi2Û{ßû^Ól+x ÞëÏÿüÏU.³¿­e^hÎ ×ß$¯{ÝëRiMB!„B!„BÈÙÌ!„¬K0+J×–ªƒ8f‰e|®,Úä² ¡1ªR¹¬NrY(KË?6 ‡¢IO׳¤³¥¥Jöîê<‘¨¥%û.¦C~@F ½ì?0’÷uÙ°Œuó÷Â…Ò˜HCiÌÙ'3SAó±ôh¬Š©´)q–Žåbšœ%ÂI'½Ì’Îʲ–á¨~¿Öô8ô·®£3¹¿fý½ÜöwÁšb}ÔÍßjIRžH(ñeIô&÷iWŒ¥ñeÉešn&mr_e¢ÚñU¹"„BŽ |øØÇ>¦2ŽIW\q…JSàÒK/U™ Ñ¿ÿûU¢2ùÈR»�Ä3”kD™GüþØÇ>V¬ºåT4›]µ .ÎmÁOjHé_ïz×»4yl5À…²˜�mÿ‘ù¹ãï¨ÿ†üõÒ—¾T—2ÁÐNÈ`ËpSd²G=êQò€<PÑ—]v;¸  ¡Ìæ§?ýéT^©nö¥*!±¡<&þýñ\…8$Œ…¤¯*µ"Þ¯E_<ëYÏÒÒ�¥8!–}æ3ŸIRÚƒ¾_ZZ ò¿/yÈC´o!®:tH^ö²—iÛl}+ñÞþö”Å…åÔÿk oßúæ·µÝÞX*“B!„B!„³ f„BÖkKüYÙE-ié|”—Æ’Ët€NR©Áò*â`:i¥'Ì©]AÖi±¬t#æ75Uê<wîèËlqzt-¼ìÝ?”ëoÈ7tÙòR̦§Df¦DÆ ßy‰ép­Y–ú­Sª1ÊeuJˆ %H]ì_žœG*]›>]Fº—'=#û{_Óß75ý½o0¡4f(Ñ ÁL{d´ø4yL…¿D’Ë$Lg qQž‘¬¯CiÌT¶Ÿúe„BN&  F|?¸×½î¥Ç9|¸ûÝﮉ]øû'>ñIyÔ£Ý|§(5ÅœþùZîÓ¿ÿýïW ²Õyç'?øƒ?ØI;y )]|àåMoz“ W˜7¤°Õ@r™É\Ãü…¿Ùr -̤°/}éKúû¾}û´Œ'@2ä±/}éßõ5–<†Ÿ˜/¦CŠJ„¢ ¦-×ýï¹è¢‹Ò¿!àáñ‘|¤Sr D'æ‘ ²Ä1´ÅúÅÊ€âý!Õáç×¾ö5ý^ƒe€`fËåDéNÌ×Ê–+7ݸWK]š\ŽµÔæáà ò¹Ï~A…¾™™!„B!„B!„œùP0#„²a`lªŠqLµ%—…§PÓ„±¢Õ OuݦB¡€s‰×HÓjˆ<=”&”æ?„Jg(W1¨·w(¥4¿µ§)_½Ó$Y+OÒºþ¦¡ÜÐ,ËÁÕ,1@Ú¦iA*›Ÿ ^<‚‡ñ@R± —’Ί˜^:[Ò€g>~蜴 &ÃÏ:¤¤Í5c…ÍØ®ŒF"ÃQlçú{zêôI2[µ¿±¿‘šÓË Û•= àÆô2·gݶ‹øhKÖ1¹O·iý‹ójE>0«0 ÊgVuw½B!'š/|á ZšÑRL! AlÂï–dÀ!êö·¿}:V=àÐ×#©ì;ßùŽüÃ?üCó½kJçÉì{¾ç{´D%þ–KLGÂ×}ï{_ù÷ÿwMñByη¼å-*tM²˜IV˜)bEVSI]&rAÃO¤ŒÙß!¤½îu¯mþÞ¾²ä6€çñ;’Øðw€yÜáwè´Ë Ì(²rÙ(÷i}Œ÷þë¿þëÎkÑï mµå‚̇~ÌËo#A å@óéŽÈrHuóÇùåÃRÚPö%@)˜B!„B!„rv@ÁŒBÈúñmÙÊ”ØäZ)$—Y A—ÉeµÊ>&—¥Ä2“ž¼‹å“|óúQL?‹IQÙ˜’¨nºyØ þ…’ŽÃ‘—Ý;ûRΜÂd§›÷䆽¹öúì?Ø,˨0 b’h9Êm[›Çôg”ÆœO©Xø_™’Ëì•™ðT·µ­‹”*âR™MÌ{~.ôe3ÎÙô¯¬ÞßuH6CÏžŽý}Cìïaw€6$îy-ÚïU9¯Ðd³\†ql[êXV‡t¾(–á?ašV¬LÉ}QØÃÃÓ0#„r°ïaH3ðï?øƒ?X1­Éé(Ýx»ÛÝ.INH{Æ3ž¡òÊY¢”&ä(< =A>CIʧ=íi277·j‚™—69ËÄ0¤|¡ŒäóŸÿ|Müð˜4Á�RÇrËæ…²”xüÄ÷Nˆb&…”+_ƒ6¤…aZ+#j¯Ã¼ìßF/šÿ©T|œ™ý óFó×åmÄû¡yª¦_è+ûûñ|€ˆufmÌç±–´9Èe–7 …B!„rtVûþ½êùÒ„ïéã‰Éöz^W$„BÈÉ‚‚!„u£ÉeUs’\¹FTÀ‰¥Ëñrm©Æ*Š6ú’˜òT˜™Ï‹ë:L_¸ZÓÐz½JËdÖÞ”ðÞ£Q¥‚Þ£ŽnOµ­'3S…&‰´e<O5vÎ1kiP˃•ÊN7îÊþ#Y\®Úä2 ‰d3ÓNæfJ\:¦è3ç+–lÔ>6¹ÌEÉÉ·}è;ò_V3¶ÉzMf›ñ‚1V$Ç--‹ÄÊXmûPö±Ž%:·o=Mû{)ô·µ¿kiÌ^Ýôió\Q« “%saRb™Ë(NjÊY”ÊLös’—…•X¶Že_™`F!ää€cÒ¾PŽÑ¾LÐÈ%¬Ï~ö³*íØ±#|'k¾˜ Åë’K.Ñ4,¤t]sÍ5šföÅ/~Q_ÿéOZ_‡Ò›kìh¿£„÷|ò“Ÿ,û·+‡ZõõÛ¶mKƒ)—^z©–ŽÜºuëŠKùÂïx Ú¿aÚŸþéŸN"Ùx{ ­aÈXözüý«_ýª–Í4  íÝ»·óžö}Žóµ\vÙeò#?ò#ß m‚¤†¶X‚œ­«pCF•¦_ZZì¼ß±rîyç¦T¸ñr¦ÇÊ4ÓË!„BYyºs~Î0I;òTÜf¹K!„3 f„BÖ ¤š¾ª:•Ôä²ÒiÊÒž‚ˆÒ›‚\ã“ø’´ŠVBƒ%­„VÅ„§²¨eª7ŠÒT¯™¦{ÒŒdª½û†úsy¹–sk9wÏ”l™/²¤®S¦½5ÿ9Ü´ïú‡*:ÝÔ´ûÐÂhE’€ìµ}kó@rYá“Ð¥ò™ Y!¹¬MÓ’˜¢åSyLI‚Ÿ—Ý!çS{,Î.H@dÛ±-”ÚÜ»ÏKVÅI Ðß#ý‰ò’çìjú{÷éÒ߃¦¿«‰ýļ©~¥Ûš“ —©ŒW 4i¡¥W{*ó…é­ïÒÅ gÉ{.‰–ól=Ô1µŒÉe„BN6&ŒAŠÂ1h÷îÝòˆG<BEª¼¼$Ê9¾ùÍoÖ´+$“á5÷»ßý´„#ä1㪫®RÑ ó´ög¦¢þýÍo~S³#1~ ßKØP.ó]ïzW§ŒdÎE]¤ÓBÀ‚pAkçÎúo, ÚóÉO~RߡeÅóÌ ÌAÚB©È[Þò–iž˜Jt"é ¯¹üòËS Lˆtà½ï}¯¶"æmIk¶<y‰LHeH€Ã¿ñz$–áu&¾ÃìЮ»Üå.Ú›>”(½òÊ+SßúÖ·¥’ÇÃïxG¹Ó¯œøÜ1/qÇ^¢“B!„³™\—ËòiòçÆoÈ9Ú| !„BNÌ!„lV‚BMae1cr™ÉF¾¶Ru›ôK5–q0SÖ*¢…yªˆ–Ê'¡T$¶ü„?#]Ë¢¼B²d·‘–w‚Nµ<ìÉÜL¡¢V¯ "Ö©�bبB©¥Z—j¹ù@¥%÷Þ<’ƒ‡GZS“Ë —W¤ß©ggD¶Ì¡$S(_é;’X”Ì\ÖÏÒ^ Èœ§ð3“ËÂtmÙFKáÞý¥¾_ÓîÅ%§}ñÌ:†h„þ®µŸSûÓ¨¿‡uJÎú¾ôÒ/CYÌ^Y‰³’¢… “.“ñ5&ä©`&> –’¶ÿ²qrULî«jK- r™‰h¼D!äDcå!4AÚ‚ÀtñÅ«Ôd²” J>|XE2”ºø²©W¾òUÍ14”§„Dö¤'=)%~AL39 BW^.r«•ˆÁ±ö| ÊU_ûÚ×&¾öŠ+®P) Rä­W¿úÕòô§?]ÓÅn¼ñFù›¿ùùÊW¾¢Ó>ìa“»Ýín²gϹõ­o­òÒÑPæ"Ù…^¨{ýë_/ŸúÔ§´Mw½ë]U$ò ÞùÎwêñ fHWûÞïý^]Þ·¿ýí*™åýlËtÛÛÞVÎ9ç}´ñ‰O|¢¶ûÚk¯•—½ìe*‘Av{Ìc£ïyç;ßY^÷º×é둞öÒ—¾TÓÙÎ?ÿ|]ï~÷»Sü% óý£?ú£”D÷Ã?üÃò =hÕéÃ7Êò„B!„I%2'Ýp3þïñÔ³IÓóVB!„œ,(˜BÙPTØé$—Å$­˜àTW&‡ùNYÌ"/ÕèCjÙ¨ZYBS¥•¬BŒW½\"8­ÃpäeÿÁ‘,¼\¨e׎žœ·gJvn/e~¶~qjl,Ïá¦=7ïÉu7õç¡Ã•,-W*k%|XÞ^IJ­[Dff¼Êf®XË$I|“î~˯-±¬ú ‚‰%jAæóùÝpq½h2Zóܬȶ­aÝ<¥¾|¹šþFÙIíïça‹-³ÈT¯Öô²Jcº:”º,l{v:kÛj%H c‰Í´Æé­dk˼¶iKÉêºÀ<+ f„BN<8î 1 BÀ1 ²ÕÜܼÏòcÑìì¬ÊgŸùÌgTF³2˜±þð‡©l…43ÈNÏ0=Ê9"í ¢Ù-nq ¹ç=﹦»è' ŠàW¤ýÀü€¼ä%/ÑùŽ3==-O{ÚÓTÀ‚†ä±_ýÕ_ÕÄ1$|¡Ý˜÷­nu+¹÷½ï­¿C&ƒ¸†e¹þúëU{Á ^ Û·oWáÌ^)ìx€Li]rÑ×îsŸm^w­Ê`Ðð�sssÚ/ßúÖ·¢t^§åÁ|!·½éMoÒeøøÇ?®¯›žžjÞïpZÑÐ.¼·¥Ê¡±èçW¾ò•IÜÃ{a^7ß|ó HÊKrr ŠB!„a¼,fžF6þ½{­%3Y“B!' f„B6K.+²ä2‰å,ƒ€JÆ©cÒ“•ÔKZYLw¢ˆ#&—i§Le!¡9©|Ñ „¹ €y Mk0¬dqÉËҲׄ­¥åžlÛRÊÜlH×ê÷]L\“|â²B(½–í\X¬UÄBYÉëoÊÁC#V!9,$—…—jrYÉeN¶lñ²eN´\eQJ”ËbÿGJ.ëF§‡.ÎE4Ÿú»Î¦[í<¥iK3Ú´!¤É VV;¢ZUûTœ…eD/Oê辶¿{›¥¿ë¶¿µ-^Kö¢\†ô²¢¨CÉQôqÙ c…3 ÒJcÖÚïù¶œÒûRJ\[ê5$—Ùz‰}é}‹A„BNvüGùJˆI`~~^Ë1DpˆLxÓ@ÞÂkV¹éÁ~°–£¼úê«U<ƒXf@úB Ƈ<ä!*^™lu¼ƒwºÓä‘|¤¼á oHóÊA ˧<å)Z†ÉlHü2 ¢ÒÀ n!ý˸ýío/O~ò“UŽƒ`†é±ŒãÐf<¹ìv·»Nã8„³Ç>öqú¤{Ù÷+¤¥Ýÿþ÷W1-fÝT1üÑ??ðhšüvìØ¡éh}èCµ¯ë:”›‡”†÷ýð‡?¬Ég¡tù”¶íQz”¼â¯Ð2Ÿ„B!„Óû®oL*{y´<&¥™å’o!„Bȉ†‚!„ AÓ®\Ö+4íÉ™ˆ#úŸ Ú`ÂNYÀLxŠe!áT£Vı)A*J;ÓýZ§GZYåKMäªëîà%Æ!!í?XÉâ²—ë÷V²u¾Ûz²{G)Û·¶²Ù†ãEE§Ã*9ÕrÓ¾JöÉÁC•,,"í«VaËÇâB ¤’5Gçù˜¶m)"^SÛôi—'Œš°%ÒMË“È,é̹BÚ®RY½BF‹ÓñB…YYz™›1Á ¯kúzqerú˼/ö÷ MoÙ’õ÷–“ßßbŽÐß(½ÚïW2=5jÚ6’>JcáâŒ%ñAîKýHí;Ì/®ƒÂ™ˆVtJ¦íºöi›Æ¶ t{f‚!„Œëï|ç+5µ @¨BZÖj\vÙeòó?ÿóI†BYG|÷€쪫®Rù %*1 æ…ið‰fG“Êžò”'k:@‰NMiMåÛ×>èA;\qy”·V–Œ¹òÊ+å’K.Ѳ˜x@à²v@àB[ò>ÀkPúÉf˜Þ’×6†× 9 ˘ƒå†8‡×@ªCÚ6L–¢ÞÇòØ{âýïw¿ûé둚™ óƒÌA ¯‡°gmÃÏ!Åì÷¸GZ&HrH`üŸõ¬géß0ÌãØð1 x%Ú»®µðÃï«Sq�‹B!„µ2)ql5)ìHÓχb!„BNÌ!„¬gÉeq ŽÅÁ¿:F=ù0‘8iSžR²–Ä„'/)¹,‰8¤BYÌX 2F9MœB²WD'â¨h&±„c(S$Z’ÉZ‡P±Пø÷ÁÃH+dfºÐ43” Ô„´"s–Âæ&$nµ)V1¬m$&ŒÃBvZZ®›÷ªUpÛ»¯RÙiq±’á¨MÐÒyY‰Æ¾Èܬײ˜H ³Ò˜mY̦}Î’Ë$%_åÉeVRÔIÞ×áV:ÓO’Ë$ôq]l…@úzvFdk• ý:|A,Ëû{8Ö߇›~^Zlþ½ÕËüIîoÈe£ýíRrY¯¬›¶Ô2ݯbzY­íqQà r™Óiu›®}zèÅœ"K”+Ûä2ks›ÆûÚI»Ç®ëF!„Ζ-[õ±˜uÞyç­ø;nè÷ûr‹[œ§Ï[YÉÁ` ‡¸¶–»è$·åâR¯ùÂpÁ¬:%Ž×¯ •¡¬'ÞÏ„-“ã&‰ë6·¹ w( ™'MJKÃò@XÃó ßJýóÂ#Ç ì'D0Èk˜¯³ïÂö}lüßèK$Æ¡Ü(æQÚÝ ùzɿϷwuV€ê¼Æ}zB!„BÈš8ÖTçI2Zþïü|kR²!„Bȉ€‚!„u™¢ŒcÉW1Ý)ÉNE�´ò™–eâPHxª£¸Ë96¯±ä²|ЭŽ%1ƒ©æHæfDç»4hþ²\J]M>™†Œ´°P7 "û4¯ªdºï4Ukë|)[æ ™Ÿs23ídzÊ©ì$¨0ÿ,l-–<-‰”´å—¥%$hy9t¸–ƒ‡+-Ñ8Ðrµ PHf«êÕèú=ß´Ã˶­^¶oГË\tŒeB‹ŽÄúXËFÉÅr.ïki,ë$™µë//UjËè󔳿HVÛ:T/<Db¹d<¬íïÅØßÍtS*qàþÄþyËVëoÌe1gšm`fjÔl£f0ºÒ4³NI̬Zzµò©¯S¿5ë$%÷%¹2|t»®,/Ètqë–P¦”¶„BN/lÐb8¬Â±-ŠO(ißÕŒÕä§ŽÉu]'©Ëd·IàyˆešXÚ;ú¥‘|Y0½¥²s1íh¯Ç{AŸß$ÑÌþ–÷ñjËA!„B9ý™t>µÚ4ùs<' „BÈÉ‚‚!„ucé[V¾R%±¤—I¢BÊSÐpÚ[c Mxª³T¨LxÊ’ËLª-* f, ¤:àQÅ×–*5¡l&°ómM½j~G¹Ä0`W«L43U¨Ø…t­9MØ ÂS¿×¦liúU\^[Æ <y•žLx‚ätx!OKƒ:ÊH!- ½c}eçýø Qkf:$–mß$3¤…éø£‹%EczYQ¸T*,W›H4/“Ë$¥—…ä²¶\£¥oÙû‹ä"ÚÊ„3»\QªT³°¾%­¯åå¦/¼ ¢YÞß•h9P¿û»X½¿§zN×çzúR[êoçS‰Ð|[…X†¤²i“ËšG¿Wi)PíãÒÉeV¾ÕGYÌÖcÜFMü³íÚD¾l›ÖÏA\akvÚ?:M&ûB!›ñÁ KûÊE«S%P›•ËZ«áR„èú$¸#½Ç¤d²#ý}|ìßG{ŸäòË/—/}éKZŠsÏž=B!„BY?G;?±iÀjå/'ÝÀC¹ŒB!' f„B6 UÊjI‰WVâ2H=1ª°²˜¢ÓŽbÂS^³ˆ©PAàÁœÛÁ?ÈhU.íD mºïezª–©)‘…E$k•Í€§S¡lÕö"kÔLßÌoyXÉÍê–Û¨ÂPžJỿ˜zå-± ÂP8$]áßâV¯~ú%$•íÞáeÛ/s3µ&yYP…•t´ä2ž’pg昋jY–—NÇÓÈ|.ò©<f˜³“£¢¸æZi-U!q m…vÓÍͺÄòV²Æþ®›þöA L¥1¶çXú[¥¯:lCuL+;Òe,+Jbn™ÊìTH-+‹˜\–¶Ñ¢#ÖVŠ3¾‡sí6š’ËlZëë¬,¦mÿ©m¾MˆÓíTS0#„rÚ'kÙàމ“Ò¸ìß'³m“Ú: K³còZÚ9.}ÿ>ŽIwyÉÍ®�W¤+òùXÛjÚø2n${ØÃdyyYËpÞáwB!„BÈúÉÏ£ŽÆ¤é&%–åe2 !„BNÌ!„¬Ÿ,«M¼ò1¹L¢,– RQªcrY.—¹,í,?IrY&=Å’Ž&­•ÎKÏã=+}ƒÑ­(e8*dXRUa`a~2M[PÆr`ÉS.JB.<ÄÇß}GB:V¢|’‘‚xdIe>¥påie!ùÊk2ÚÔ”—ÙéX¶c[-ó³>&¦Ea,¦ÂåÔß⻃·©ï,¹L’ŒÖM.³¶¸”•’Â:Ée­ßeåJS"šX ›Oï1…u¶<(d0t2ªPÖ²Ý>Vöw³î¥MVKý­"ÜÚû[ÿ->û÷ÊþvM÷ÊZ6Õ¯evf$sÍcª?jæY¹,%—Åí4tr*ÇZYiL‘Ôoe.þI–\–õ¡n§qéTñyÛî­4,/B9]Èe©£ W.ûîp¢ÉE¬qn5ŽU‚›Ts-ï‘÷ƒ×ï«ÝùŒ÷ÓFôáñ~·@9ÎÇ<æ1ÙÍ „B!„õbßëí|jÒwíÕÎ ì¹\<[Ëù!„BÈFCÁŒBȺiKy¦“\,–L~”b%Buä²(–™ödbT˜w,O(.¥zõÊVð)šézÍxÝL$nËH¦z¥,,õeq¹'K(Iè]–Š•·~•Á3'­”&Gg-Cp¢Prå0·Ô²ÓIJ¾¨Ê»¶$fi%EÕ®jû¯6lL¬ ƒ¡5š=6^î2ä´$.±é$K.“, ¬3_‰ó Ú¼eÖk™Ï-s…ì;äåÐá¦ßC È£÷››ø—º<‚^@ggj•Êæf2Õ¯´¤jáÚR—&*æ¥9U.CrDHßÊe¥%—õV&—Uu›ZæâzK q1µ/mÿ£:ŠkB!„lvm²Và]©¹Þw“¦&ÝU²=ÆËOIÓ©­Ç3€³šì6ÞÆ|ºI¯?)—î$„B!„l Gú~}´dÆ¥²ÕÎ!„BN4Ì!„¬f\óÀipQŒ—S,¢4&ò‹ãr™KÉeÒ£ê,éɦƒ^e,©âZ,ëèã€*À¦§|H¦jžïõE¦"$g MÛB¢YUK'%ËÌ¢tjî×?ôj‰eœ¦ú¡]s³µÌÏ…’˜Ìf¦CJZzÿ(&iê[ì“ÐÏ¡Q–úemµ~³¾ë&¿IVêR:b™Nûº#¡uä²X¾2ÆpésÖo®éë",9¤ƒ¡¿ñszJdq©å—aÓßÚçcý’Ó:ÿZ__법 -±¬ÒÒ©33UÓÏ#™m½²ŠíhûÍDEëè”\Vgdg»+’œ—’ËbYÌN?ÇD¾”Ú—¥—ÕI\ã�.!„ÅŽsŸÃj;¶A´?ÆCNå@ÇzÞûD´ûhÉÇú·“«!„BÙ8Ž”žœ'O’Ç&¥™Ã›D!„r2 `F!dÝàÜÂŒ«ëV�Óä²¶,¦ÉeHlª,¹,¾Þ$ŸÂ !q,­NróB¥¢ùLªµÜ`˜ „®~¿’­Ú¾Z–¥<TÊáÅR––Qª'ïù ¹ûytŽ6ö†çûM;æfjÙ:_Ë®í^æçêж^H3SaÌùNŠ[Iz’<¹Ì·âWìïÂÅ4-çRÂX*ué3‘/K/³¾Îå(?Öön©RÑÔŸ•‚Ô5´µyjfÚi‰Ïí[ òÕrhÁËÞý®és'‹KÍK‡Åšd²#^ 9J‡ò£^f¦*™Ÿ­dÛ–‘LOW±f¥©kš'ûζ£"m¤Í¶Ò,×(ÛNu¾±/4¹Ì¶»ØØÔwq#µí¹Ýþ›>‹’Ÿ%÷…D>!„B6ïÛïb /£Ò¦aùô}£æÁˆB!„BN8ùyÚÑÒ—Çÿv4yŒ7‡B!ädAÁŒBȺiS²2¹&&=¥”§: h¦ô²xNlb™‰h:¯(„©Œ–Ò·rñ*–3t!QËg’UlÛ€AÔð×éAÈà*›OõŠ”f6ªšŸUÙ¼—‹ÌÏ¥Ò…ãçïæ"™‡/Üh¹©Œie½²V± "ÊZ¶uÞËÎmÍB)L+_•Ësyò[vóZ'aL—O&$—YFñÁÌæÝI.³Ô7í»6]Ëì®"Kà²i­imž"A¼šjKK"Õ àï3Óµ … Gáú\ô÷·>Áh+D·”Náì'úå.ûÍ£×kSâ ˜ÍÍT²e~Ô´£iaQ>”¬ït-b ž´ cu&AºT®4¬W¸}‘Ö‹ E‘ÖÄmºMEk“Ί1‰BYãã ÎÂ÷">ïB‰L<ªøE‡‡!B!„B9ᬖDVÛEhéŠhùkÆå´#Í—B!äDAÁŒBȆóÜ^ÙM…j¥± ÷øñä2ç’”c“J8£ZS¤Æå2$H•– Õ‘v¼-•CÔâk\¬¹94³¹J¤ rÓ¨Á ”åaO––ñ³Tél�ªy4“é éby K}(8•Q(ëYIÆ(7Í"A+”œ™ý2¥e$Ãë’f˜„µ²(²Ô°ÐnKs³2Kß21/õŸ¬ÑÂìÛÔ²öEx¾ÎJ@&aL\*YêÄwå²(vE´ Æ¥þ‰ë˺ckêP’t8tMÿödq)r…,h M§}>‰ö·@ìïo·R(Ó~G7“É7;‹õ%´¢n^WÅþ¨SùÏV‹Û’ÉeM»G£ ÇY¢‹Iv½¸=¹¬\©m{ánCIëÃJ·–!b.NW§ù¶†Âún&N"&!„²>òã Ž7&W{•Ÿs!:ªé,ÔL!„B!'˜#¥'áúaþ§ÕÄ´üï«¥¡B!„l$Ì!„¬“p0p™Jc¦;°0Aå§®L¢*3 M‡A}RžÚAP‰idmÉM“©4 "Z¼ÑË$ŸÚ£íkõzb® (…¶9©F^ÍcyÐ<†uÌR²™ IfÞÅÁY×MÓ*Bd'ž¦Qžqº–¹¹(˜Í:™žŠwŸÅaÜT¶R[ỲX–hÕ-qÙ—´ô-WäŸ_!˜¥’˜Ež\&Yr™%pY;ÂÊÌ“Îì:E'¹,bëÐ’Åìýã+TCz„>PÕ… ‡•,-{™`æšß!˜96ý]uú;®8„¾Ð¾(Å>GJÜT‚YÓÏ3U3O¯^Ùn»tûˆËçœKÛR’Ë|–\V%—Aø‹Â˜ËÒø:eBS?ÇÏ@Q¤r¯&åUÙ¼CßéuººtL!„rˆÉ®8ö5ÿ ifu<ö¹X6+„B!„Bȉe’Hf·üäÏ哵7eû‰ó0±Œr!„BNÌ!„¬œÀ"á)¤<årMHÈÒ0«+)¡ôcá²”®LxbÒS–UÆye[ó­¬Üf¨þ$! *&S•mª–%MÕu.5ÁžÓ´«9‡çG*6Õ•ˆ¦›ÅòœZB*•=lK$†sö˜*–(ˆp˜¯hyÈ©¾k~æÉa>¥…ù¶V£ô–QN¿;­öy™Ë•Éeaº6QËûö„˜ˆæŠ%³,‰ÌRMLž+愦ÍÇgýg˜\CºÒt©\jü_*¡SÃúMßLC›­e¨r’ä$ …¼]–â°Ž)xßü mÕð/ʦz¡ßñ:¼o••£T¹ K”•mµ²˜Ú^brY.ìQ.+{EÖ'ÒÆ|L”kK·f%7ãÅlË£*Hn–vŸ’Ëâû;·²¤!„rüØñ;ëâ1ÉdæpèrÙŽ?ãɨ,¿B!„B!ÇÆh4ˆ×<K½V[„»OW¤‘Ù¿Wû»ýͤ²Iå4 !„BNÌ!„¬“,a ˜¨“K8+Ë:ª+”䡪jE&Kß²RƒöÕ…jÉä²ö$;ˆ>Y‚š%{¥ô(‘P"ªM ƒœ„$2¤x˜ø¥QJJYšW‡ŠN’U*“ÙðW]¾²í \+H"S-™ÔÕÊbiùŠ8Î…ª”F§uyÊ٘ؕOï²y‡×軵©[u7ÌYR˜kÉ´½^RyNŸ‰n¶î´½®›¶–§{é´…µ¥HR^ðj™Vùª+þ¥í£lßІ°mÔA‹cä.J]ök‡‰e¹œgýf%HÃÄ’%—Åéã|‹lÛÿm™B™ËºÛ^צ÷q-K|‹ jizzkåÀ:®/B!dc ÇPÜ‘fjå¢EÊø÷2~ohþ‡c–¹Ï(î«æ]Åï AðÍÙX¸mB!„3—®½Öézj¸žX6žL*{¹rm™Íñ’˜<W#„BÈÉ€‚!„u£bUa"SLÒ²2ƒ:¨Oš5éÌuÊú8=Ä!È;)`#+‹YmÈ:+‹™—'L%4M�K Ru’žlZËz]©+êpI\ËK$¦dª\.ËÊKú,ÊÓ´ik±s¼Ÿ,—]N¤-3Yûîj+“Ë\§|f’È$%—µå6Û4²nrYš¼MOËÓÈrñÊgB$Ü\LO«[®’RÀº `íòU>.oJf›Þ7ÉV”®´D9']©Ë·ƒàZVSZ¹ÌméOLÛ&æ™0Ö•%³„½,¬öIªLë°lSѬï,E-­ÇB‹bF‰ÐÂï|‚G!„lnl°!/Ÿ]†2Ôñî,sTw!yv8©\£?o é÷ûñ»‚cê&9AðË!„B9sI7g7ñTÕHEQEѬÔó®öº¦[1#/Éò˜„B9YP0#„²~²4-u¢¼£OA“¶Œ`J"³²Žu–\–K`™$¥‚š_­Ôe˜oÏÃ\Lª},©8!å¬#uÅ¡UŸËQ­@”—>t)uª-Gi§õEšw‘Æ$IRA0K¢Q>}&—Yÿy+)mùDëKfk³oÓÅÚä2‹HÏ–/“Ñ\Zwce<ŧe4-¼í¤²˜YÔÝÄ0[7®h'NS2ñÊÚ›Ö·õ³D1ÏçÓºŽÜ511¬ëK.K}—¥Ï¥mÉwåÚä2iÔb©Kß™¶- kíð’‹y1Á/4&¥Ù…ä¾vûä*!„À×.}wÐëwš"Gõþª% 1 Žo‰eÍßëf`cqyYš!Žæ{U)ó3ó²+í˜Z„B!„r,äBðzãëH†Ã¡–ϬªBz½~º¹Ç¦±×®6O›{!„Bȉ‚‚!„ 缕šT’¤3—‰T–òdéMU,E¤±0} ¦u­l”Ë_U*u)IëÅÒ•)-›o*1).%¨•ID³’›­¸&¾ºBYžÖ-éÇJ5–±Ý&jµ‘tÆb]ÖV6Òɺ)g2!¹LR²—IUíŒóä²1 ¬“\{¤Sæ2KP«%‰Z"+SÔº‰a2&jIjk.‹™Äg2¡Ï’ê¬j.ŵÉlµ®+ïe2š `._¾XnÓÇþÎK¬ºX¢³-…±ÔV2µHË(ÖÇM_ŒL.ó¾]ßyrY¼HTwÒçZɲ(‹ÔVK÷C; 6ªjÆØBÙòã¨XfÇQWêseÏI囌QÏŠæÀ¹4\”å—©~)[gæ¤ãVœžB!„BÈú—ÅðsjjJz½^”ÌfVét(™Ùë•2^6s¼$f>/^[$„BÈÉ€‚!„uc%ƒ°þ¦"ÉYHxŠÉ^:½´éMU–0Vd eÑ `Vz±Ñ|7™ªÌÊF&ͧ4µnrYÑI½Z™\æ’\fÓ&ŒuR½¬ìa¹Ê±ô-¿"¹Ìee óò•­ô›.X[\ÑM ³’•m úxr™¶¬ÛŽLFs¡&V–\ÖÎ7¥œÕ±„£‰hy‚‰tå²NY‘¥‘e}Ñ–Û”´¼­€(™0O 2Vw-!ÎÍ{<AÍÒÈÒú–L0ËDÅ$š¸–ÉbU”Ѭ_Zá¯h·%×&—uJbæý&­ XÇéªÔŽnÉRB!äxqE8¦¨ÖÜ|ײc<ŽG¦‹^ч*©+§¦ä»7d¦X–Ù¾—ÙÙ)™i8вŒŽt{g½}à !„B!„¬\³²˜Ê†Ã‘ŠfÞE“§ãsöšñr˜u¼¸éâµJB!„ 3B!ëçÄHb’¢Nâ’¥i!ªWfé[")ªªr!(žT¥X¥´©˜L‰ÇJQbÞe.—ù,Íû”¤†ykrÙ ÉM2ÁÇwÒÂzIDs©¤ãŠR—)i­hå27^º²ˆ5q®M.kû¯Ne1}'-¬µ\G*óÙÀ¯¥oH!)L³vÈ É„ªñ»ÞüXÉH›¶M.ËÖ‹o%¾:“ËÐ$™PÕYcòUjw²ÅºëÛ‰®iE­ J»¾;˜mKmjž qÚŽ,¹Ì›¨(Q,Ûõ¤¿0ϰÖíöa©yehËää²¶ßRiUï’H‰móÅg&— !„õƒ\<¨º*û=ˆÐ¢¥0ëæøÔ—½{‡òÁÏÞ$w½dNöœ3'åtO‰P¡CYÍ0Çñ»æ !„B!„ùÍ;¹h†$³PÁ©d†G>=˜T s’xF!„r¢ `F!dÝѧŒ¬}J—*²²‘&…ò‹~bIÅ”NeªT³ê¦œå%7;¥+3‰É¦•8?Ž\&—YéÃ:•kì¶;•˜K9ó©üg›dÕ•¯ò”3é´9¸X3Oó^R¢X›\¶rZŸ’ÙºòÄ.ÉÒÖ‚4–%†‰dÉe1yK²4²Ôެ¯Ýø… é”ÅLÉeÎeâš´Ó¦õ-Qêj岔Ж]Tñy©Ë¸^\¶; ju»k“ ÅÅ–A¶³^g©huÝùÊ"O.3ñ0–ÐL¤‰h.“ÑÚ‹8U&þÑ®MïCû---µ¹Ê“ËxˆBÈÆà½}×ÁÏ^ÐÅ‘^V•ͱNBªYó¿Áò@ÞöÅ%ùâÍsò€-óÒŸéIG<*B!„BÈÆ’_ÿœ$µ7ª¢<f!KKË2 ²*Eçu6OÏ[¢!„Bȉ‚‚!„ Áû¶¤&€õB˜%†I”˜‚´S¯LzŠ2U.%A.Å´)ÍÜ(\J"SÉ';ÉTQòI©W“ËbiÂP~QR;,*LëÆJ;f˜¸Î´ãrYž0Ä57±„fXÖ:&—u…±%&}›&"iئ+bF7ADK­vmRœõEhƒ$QK2¹,Ìòåkû£•⊎ ×¶·Êû/®™®ˆÖM Óí£3pÙz1QKœt’˪ŽÈg qE+¢IL[«lÞ¾]/1 /owSðÚ„=Ÿµ!&—eRœ½ÚîRrYØF!»Ù¶ ‰h£6¹¬íg!„BN(AÖnŽA6ëå#ßÊÕ_É…»J™î… œgJ!„B!„œòs­<qÌ®1öw$š-/4Éljjªóû=å2B!„œ (˜BÙ b)Cˆ8*tårY+<¥´)ï2¡*ˆAš\æ­übKÆy§ä²"ÊhaÖ­ŒVO˜6´%%—åm°²˜1ñ*O9sc©h¹Øä¯6u­ª|VŽ2—ç$MßƤ-»$-×M:s²bÞím–Š_g%&;Ée­<gR—µW“˼ él¶|–tŬÂ/_·Œf'ÍI&i¹N×)QΧ÷6‰.ÈbãâZ¼à’-caéliÞÝD9K#ËåRÉ͘ˆfr™öжWÆ’ËüŠ<í9[­P˜• õc‰ocIuqóÏÒÖ¬­ç£G!„œ(ŠÂ¾ÔrÍþZþñs¸ÞËÖi'S}ØB!„B!'IRYþï~¿/£Q¥‚d3\óÌÓÏÆob™LB!„œ (˜BÙ, ©e!¹¬}N%ªÊg)g–¤Ñ-{Ø)‹™Ò©|š¯¦M•&€Å)$MÕ­PåbéE-eXd)g"Iò&I+ùhâT*{¸2© h{m¾E·&$¥s{ÚÒM. ÖS.®…6¸$HY’›³µ,),µYÚò‹VÊ3owJ.‹×œë cA÷òe1©+/»^ŸÒÓ:Ée>+qÙ-§åc‰É\D³åìˆv"YrY.uI’þÊ,é,É_ºÎE,p­MÀ+’˜ç£ì7ªZùКR¸l}'1/&ŒirYÝY¾V.“1-ô·d"!¶rÖ~�L€U~,¹,Š’uÁA}B!'ŸŽ…ùæPn:T7Ç+/³SÍEB!„B!„l¬&.8NMõeaaÔI1˧c5!„BN6Ì!„¬K.³t±$j‰¤´&ïÚÒŽ+Ë/ºN‰Ä*+×hš ce›|µ2m*“|¢àcÉ^A*“˜4y«ÌÒ¦\+=™ˆ–'—iºYšo›rækÉd*ŸÉs2VÓwD-í'ŒE’À|§,¦-Ÿ%–Ö±ÑÖî6¹Ì'Ù.—øbCBÙQßèòu2±Í+¤¸ö5–ž¶2¹L’ –ÒÈœ$i®öc‰aÒÊe…[™&g©v©ÿ é$—¹ ë»ÎÒÜ ×M«“¬ )åÌgíí”MmêºëÐu¶SˆnÖ×+¶Ó¸|e�ñºº`j !„LÕ¿»¯–/^[I¯ßÔúÙ1ŽB!„BȉáXÆìz9RÌz½aJ1Ë¥2¦•B!äT@ÁŒBȺ0ÓëúÈËú<‘*–9L2NŠónŸQL.««6!+ˆe¡ä¦Ke³„³$&¹6™ªÌÚQû4ÿ¼l¤J]ù´Î„§¬übÝ O.&dµB\VúÐgr™t“Î\VæÒ×m*[^¶2Éhİ6,/u™R½:âÚxrY;ÿ”f%#uù$”j´ä2ÉKtJG.ËSÎ’èûÏe¥JS¢\,Ii}÷ÿ³÷'P–\g/úíq†k–Tš<È–ä’-ŒñEÛ`c ƾ¼†nºYÝôeõZwÁãÝýèÛ`C7pûVsWws½àñV/³xÐn íë¡1¶0,²e[²,Ù–Tª¹*+3Ï{¿ø¾½¿;NfVeV••õÿÙQ'óœ81ì©Ø'ö/þ_jë‰íh¤®v–²ÙR›Ø–,¦Ÿw•%Å…ô9ÛZv:žRr™‹KVY¬-¢ég’Ëš¤¹0fbÒÙjIk©Üf“˲ä·&Ï5ÇR|Ýfm ���l7zçò˜O/ÔçFÎÝúŠ@q �������ØVÖÂÌ*×õš9_›ää²¥¥¥úúb%™^3×ùQ����; 3���›Få-_é5!‹Ú¢˜¦iƬš\¦Ò“èQIð±1*¬«)£éšD¨,AÊZ³Rêò“ÉT“ Y&‰hR>JÓ©xۭɤ¸èn‘ÊW4‘�ÖN IdÁdʵ&å2}¤˜\F*ºùFx2&O�kJhjrØdr™UIÊ4%&õóÐm×öPáÉØvYL—ÛN.£és¡ìV“Òåü„ÈgVÊeésŒíMÔ–¯òÏp²dªÏ—;)—Ér]#‚Å4¥œÙ•bc•ÉeL+,ã²óãŽeMíKRµÅÆfþ˜hßËOV*'Â3��°Ô'›á¸¢GOŒh8ru&ÔÅœ.­ÈÚ©Öv˜9Ö FíL�������ØJ.–B¶š,¦Ée*˜ñµÉt#v¶ Hf����Ø ˜��Ø<MÅÈVéC¶±šRŠDœ˜ EQªÜÊt*—¿,«˜FñË·Ê@yÙH^^™D´,}K–鲉&‰T…ŠIy9EŸÉTñ.±Â4 Y"ù¦„f“\FIè*´Ü¦`ÔÕ’´h"¹ÌjÛѪe1)ÎÆ¸¦­Ó6h¢Vž\f3¹ÌO”®\!ŒÅy³°&-O.3YYLRÜX”ªV)u)Ûa›yãr’0V5ígb˜ÕÔ·K%—©\FYŠ'‘]«,fJ.KrEá$i­ÙŽ(—e¥^5q/%‘EqÍgÛ›HkVÈe­2šDMê\ÊThÌKx���Ûɱó®é2­Qg%�������Øjrl½U ÂM°…fZ©á÷óuTTG����ÀNÁ ��À– ŽSã˜\J.Óô-Û$HÕÿs©übH.ËS¬rQK¿x7Éeá=A4j'—µä2ß̯ª‘t$YL%°¬$fL:ctݦµÜz^ élœŠÖ*u™¥’™8lëRZ˜o–k9ɘ<šýô¾uÇZ“FÖBÎ&“˨\–µ]J9S!ÂȲίҘ–u1ùmõä²l¹“r^üìS;˜làZ¶•¡° ¥:åMe‹ÅvaŒ*$®évXm?Ý» YÑ¥™ãçKq;«TŽÕe’`#—é/KØÓeÇÏEK•Y)T•ËÒgæ&“ËTnk%ñáZ��€m„O3œzj!ž÷âI4œ›t®hxS#M�������¸2èõÂ\0³¶4½Y ����`³@0��°i4y«Ilʓˢ„S!Ç´Êbú¬”a–\6!µ„ ¯ÉAò)Ë(å%}¶Üy¥‚Q¡%:‰V¤zyÝvÛ”ó4q%©‹hb^ÊÊK¶e±vY“¦•d*M:k‰IÔì_ÜŸ\ŽÊ—ŸJsæƒÄYrYNHÉrÉey9Ê•b^ž\&Û!óÙl:û\²Ï½Ur3–eV1Î培i ižbéQ×$†5inMê›nˆ¦€åËÕí°Yž$àQ“>7®‚¸¦"ŸIuMoÍ+"Xö™KrYi=öò¤µLâKdžoʶ†ò™N–=®.��ØVø\9¬ˆÔ:—§óoë4dZý ��������ÛÇäuA½©ÙûPùb­ò—¡ò‚ƒd���€‚��€Í“Ê ºU’Ë&¤RÉÈ\æT¾ŠBR‘ä2j¥‹åIOHe›eGqMË)V™f)““â&‡”®æáCÔ•Hpe¤µNœ4ÍJ]©¼ dpªBKDI,‹rT˜Ç¥ý£˜n¦û§å(}Ü–vrYÜÞ‰öÐ4²”Ò%[ßÌÛ.‹™—,®—1)­Ä®Öher™¾ÇšV©Ëô¹då(Ûin¹lå2™Ÿ·=Èj… ‚E(qjã:RYÑ(5e@ÛŸ,oÌóTI`ËËWæ¥M›’”äÖÈe4!—éòYþR.´v’cùTCm™0£\ú”L”ãvÇ· æEiÍ!Á ��À`Bß%3“›cFÿQ�������ÛÉj"Y.]L$[M ËŸ›\����Àv�Á ��À¦aafÌ5+·"¹ŒÅ¡PBÐq(K.k$ŸvYÇ$í¤ô¨,ÅŠ(&—…åÛ(c©Ü3ž(9¨Iaš\¦Û)Þd› êv;Ôï–4Õ/©ß/êŸ-õê©Û ëRqËk‰ÌŠ×E4yÃ49yׯ ãd¼o1EM÷SÌ2Ó’ÊÚ)g«$—ùÐ~“éi)1¬•\¦"_#Ò‘o—º4™hæ3ùjErY,ÿ¨Ò[žì¥¥J}¨ÙÙ,;•ñŒËMÉeT· ¯»¨Û´¬Û·në^)mÝ•¶¶Ôáö.‚ ¥ÃÝy{¹yªÛyPOKËãz¹£z;êööãzÙU#6Æm˜‹e.U.£”l'Ç“2Q<Ž|š¿)uŽçöñÐ$áùLÔã”QÒ²˜1-ìK× –��Ø ´47ŸƒòŠ*ѺöDòG��������ÛÅÚÉcmaÌgU)ô±u-r����v�f���¶M´Ré«È¡¬¦N¥r”y¹Á¦te#—ùTn°)¡ÙÈe)¹,_®oÄ5×y¬JO"±HÄBSXËo–zêדf½BÄ2ž‚`FY2X²¢ð4dÁläh0R驪Ÿ+êGCãq!éZU”Ù¢‰a± bh%´¬l$y-9QZ’¨‘ÖZÉe>K/‹ËNÉbmÁ,•ñtÍcœ=¼'›?$§5)\ÎSKv‹ùláxˆÛP9#kEYPG>»‚ʂ۷³¢~ íݹD{¢Ð7Œí=TõûÇò™ Eý<ËfUHs>– )ryÉÍT6Õ4ò¡Êe©|k*Ï>±”\V˜(Ý™¬´i#@Ržž–¤?Ó$—9×JÁÓc×€���l'*lO]˜UE²úg6.—­ÿŽyí×™VY𰌨Ê}¬4o’ßâÖÅsvz”>ˆ'ËQ¡Frk'W‡p6������ÀUHûËŒ^‡Í¥4”Ç���ÀNÁ ��À–Â>MJ.+,å©_¡T¢k'—eÓ ,:I«ª&ÊbjIEòÔJ.ÓÒ‘ÖÆm‰òÈNžc±JêÚ7×¥¹™’fg ‘œx™,›…G•ƒbI›UЦ¯³ åê÷ÏȺY(+ëmîÔSG ‹]X×ãz8]«ªÛÂÉ@h’¿"A. òœi VÌå5ÆÂÀìÚÉe®•Ž•ä2ÛH`yYG•Ëô-MIÓ&å,/AêœÊhèf‚ÅE*–ýX¬*Dà›™î¤öæd¸"J‚…Í˨^º½;u{óç$0[¯£Œëš¢åAE *:aDçFõï£z[FIS錢”WX“Ú˜\Rt•oݨÇG.ƒéñdÉ,¥ÎÆ’ŸEhCýì\Jïsñ˜6a¿*f���® yÁІ'´¯à2“¾=À‘LùpZ·ÈîXc-ÌI9e|4v"¦'ÎG ?@±aÑá–Ÿ{õù´[±?¢RZœÁs¿Ë&i0������ìm&Ó½&_»»ù»Âä>M&œ!Å ����Û 3���[„&BÙ,¹Œ’�¦iNKWÆT1kW¦iU±|`åG–W˜L|2ÒN–¾¥¢’¤XØúç‚ÊN:e‡¦¦º"˜í›+iN„'¾Ö½«I*(—»Þò8zêv*êtÆT–ãú÷q½½\>sLÃaKhº0š•ÃLíÛ„brX3T«É:ÈVßN.£&é,&¡¥„±$Œ5’T’©Â‡“E«û–\&âÚÄü&Ë?qUÈ)‹HfMGÒáægƒ`¶=íM©½û½ª^~§þœ‡´¸TÐ`diy`©Œ$ÝLd8jRßì„,VÅãN¥±Éc:—킜QÛN“SqR?ÃTnSç§(ññë,¹!Z��Àãcÿaã1L–á×–¶|&`‡ê£\ï$l¬ º;$ý£Á¨Š‰«Eì#h‡1þ“J\ÏÆ®Yߨ>ß—õ,.Q·Œ¥¯)”Èæ>–‹Æšˆß2������`ï±VÙÈü{ËdXþ¨è÷¾>¸–´����p­�Á ��À–ÀéR’\VfÉe*;ñ ¦I¢Ð4²ª¥€aªÆœ\Öˆ8²lcDXâå&!ˆb¹F–vª¦e.ù°õS¹’:õhã¾ù>í—Ô²‚ú}–Ílœ4&le¨ÍÂËë3t`¾ [‹;?¢¥¥ G£zžzà³ôTpJ––Ƥ,µ#Ica™*‹…4-jÄ$ÆRr™å-cº˜±­’“MYÇfás´©Ôfú\´\©–èäÚø¡¦2žÄŸ³\VÒìtHˆ›™ e0¹-8Õk'Ú{ªW·÷¾‚––»tvaL§Ïèø©¥zðyXoë¸>,ü QQÅ2-¡É“$¬!ÕN÷ÓgidÞO–+Í“ûT. å=«”Ü>N.3ñóôH0��°ÃøMwÖzs#¥7åµ}L! ýN'sÎа>7./h\ÙÔG‘ób&ʧA›V¹ÎFl³Æêj%lÌÒÙ€e3–Ìê~A‡×Y÷³¼Me4CÿÈ&Ñl»‡vÛà“r|Qz߈û¬Ü ������\¬VJ²¹žçÒÍÐúhmop¶ñÚhèÃÛXý@ß¹ ����×:Ì���l)!hƒX£åC:E,kfŠÂ“I˜‰qú]×HLL;¹L”’·’”J5š¸žúB€-%±¬ÛéÒìL—íïÓþyþÙR¯³3øúC·k¨KaE«²¨d;¹Ôâ’©V9U£ª§z½I¢˜Æ6ò—É„±Éš!­LE4-?ªmÝH`M<üêÉe”ÞGÔ|.’*§a¢È—ÊlòäŒl?úö{%MõCBÜü§–Ùú3عöæt´^—Û»¨·£¤²SÊE"_oßù…‚†£a½•l¹$±™ð³Xî2KÍ+R Ò ý¥²˜šš¢Ée6”Ñ” QY¹×VIÑrelËËN���6Nè5m³æóy¢YÓŸ¨ä5ç ‘À–‡Æõ¹Q:.Îûú>ép¬,–ÏýÛXë\ sÌýщo|˜êDSc)¼ÇW$¾ðòŸzê)úÄ'>AËËËôþÁ?HT; ·á<@>ø ½æ5¯¡›nºi]ïûû¿ÿ{úÜç>Gßú­ßJÏþó �����€ÝŽ~à›+øf žBepÃ…Þl¢óæb?–\£Ó©¯ëvâuA�����À@0��°i$Q+&—IYÀ”\æÓ(¦-H’&šRƒ¹ D4®BrY•}Áçùʘ ¥’OH.óMrY‚d¬NiëqÃN½üÍL÷èú#=Ú?ß¡©^Q_¥·:9k½”¥¡Ù™B¤³¹Ù‚Ξïб“ZZÖ¯V’¬!eÉeÆÇR¢Ô”^Ìe;j—Ål’ËLº(²R.sï¡æ3Ñk&>|.*Hy—‰nJBŠ@U±,gëe4ÝïБC=Ú7Çe1Y, ŸÝ•lo)ÉÙ1õ6tæl—ž:> s ƒúØÖÇΘ¤Ô·IÊbjÂJ¡Id6ì³Êe㪹»ÑdiyšÜ§cÆNÒä4¹,”ó’ÏÄ6¥J=5e]��€«‡p^\õ• a+ü^Èy‘ŲE.…éù|hC0Y–R梈rÎ.¾\™+ùõ ·1µ½qIh“þɰ^W}îÔ}ÀNaR «ˆú›‹q[ÜçúÔ§>Eüà¥Ov÷ÝwÓí·ßN;&¶}ä#¡Gy„Ž9²nÁìCú=ú裒zöÜç>If�����`×Ãßø¥¥¥úzó8>Çÿ¶ËfêµS'71Wéùáp˜n>šêÓôôtÐò›_�����®5 ˜��Ø4Z†‘åQtœh;¤ƒ6ÉNœF$4þ*/BO–DÖ$d5"U.—ù$íø,¹,Àƒ•ÖT”êu{4;ݧCû{tø@Wd®Â^ù2„šhÖépÙÌ $ G¡Üåx’µX²3\ÎIb´(¤ŠiðF*w(ébMҘΓÚZ÷9I¡ýô=Dš\–%ŸÍ“Ë´TU¶/\Þªò<YIë÷º´o¶Cöí®öæD³nÝÞSS¡$*—ââ Bœ·<0R6“?ÝA“ÒÈb/(¦·UQl̓Ț„½&¹Ì­H‰‹Ûcš’°"KºØÎ®) ���l[9Ò”¯œ,;Ã.©c&ôÊ–Æ|N´AºŽ)·œ€ª‚»‰} +7¬ÜÞ5st¾)-òŸ‡ëåŒ<ÕƒJœrÚ ©²Üß4;D°¸¸H>ø…Ø'K‚Ø•Ìô3ûŽï¸WÇ^ô¢¯û½ßõ]ßE÷Ýw½ô¥wA.�����»ÅX*㉅1½¹V¯õéÅV½Wá×ôÆ]ù7^;e9maa,²÷£ûý>Jd���àš‚��€-Ãg²“–ÆTÉ©ˆ_ä‹(íxßN.“xò,¹,%År›©,¦$—9r™´£e—¬a¹lŠìëÓ Gzt`¾Cý^»dán·ifª ›®ïIÊÖ©Ó–Î_Òò€ÓÌ<ñø]Y4¥›l.Q“>æ²²&¹¬™Ÿ²2¤*>ùL3YÂYø`L,W“βä2ÙË©f<PL"—E§¾ÀÒ¥ë±`Vîþö¾¡'eRŸ´ÒæƒGå»z?êcÔP,õ𕥿8ÕR—Äg%a¯LmHIÞs®io=þ™ÌÒ\¨âåV‚��€-a§î¦÷)mL±éü˜JÍpŠØØÓÒÐÑ`܈íY^�Ùtb¤dй̥yR:Ùšûe7£}+•3uE•!I ­†^Lý®&”šK-wó;vœ{ìqºãŽ;ék_û=òÈ£tòäi:tèÀEÞµuVí]³ôò—ßC÷ÜsOz>ïC®œ?üÞó­k®cµñµ|p�����€Í ]á{HûÆ}}0Ð… h8¥mù¦Ø²,äF NäívËT3/]¯2_ e©ŒÌø±ªl¸NZ_»[XXuÌÌÌÔËéʼº~³íß-з���Àî�‚��€Íã,Èe•Ëø »ˆ;šj¥Id,•e)OR8ІÁÆ"–lœ”ËDÆQ»Ìp hÖ Xtê³TÖ§Cztp‡f§ Ú­p;t:!ÍŒ…&NaçÝ GõÅ’q(ïÔI²˜ŸÆAØ,‘,,ÏLÈe”Ò·´ýò4­$Iµ.Ò4ÉeMÒYœ?¬’Æœ\V±ÐÇrUI3Ó]Ú?ו2¤³Ó–v+y{s™TN`ãë@ƒQÚ…BÛÚØ&)¹ŒË€òÅ¥XŽ5™$A1?÷ù ‘/¬X«lÊRµm³D´¼,,���°ûiËe&F­ÊéPËVÖÏÕ§8ŽCyé ¯!­À\l¦lŽ&QmÅlkˆ+ã,-9*¦¸C;ÂßþíßJ?øµ¯} ýÍßü-=ôÐCôÕ¯~•º{Í÷p~ãß S§Nʀح·ÞJûöÍ·æáÁ®sçÎÓh4¢n¸N·X\{â‰'¨×ëÑ7ÞHss³­Ï‰—˃b<èÆ‚[YvåõÅÅ%y~jjŠfggéé§ÉrŽ=Z/û:{ö-//Õ¯ÍÕƒiÓ²N€=s欼‡×³°p¡~Ï7ë·!>|˜®»îˆ ä¡�����¶Ÿ]ÿÌן5µ,—¾Ê²”þ*Ëe|=PÅ´É2~NË_òÄò'•±tÆÉeË˃tÃ. fü|žf†D3����\K@0��°iø;=—¬4ã9’±brY¡lÑHOÎ7²XåTH3’Ž%%³,äyÆ’\Ö”‚´"ŸqÉ£z°ìÐÌtŸJrYŸöÏ—ÔëÚ«&ªÛ1tè@§Þ°¯çÎJéÆJ²4¥MvÇÊGόⅬ¡Tª•(ç'Kiš$¢ÅÅ$9J…'M. Ÿg½êÊÔR(µùÜL—®;Ü“ä2.Ey5µ÷áI-ãëN|éÂâR(Ÿeš(üTŽ5ŠBLÖãAÓVÒ™«¡¤¨¦º¨ˆ–ââñ¬w>rr_( K���ÀUC{ü¤&ž²rnã„P–æ£ ‡r¿Ž7L¦m­ù–˜pP/sTŸê/,W4;UH!Îí âuþÍßüÈ^,jq©I.‘ùè£Ò‹_ü¢zàje¹ÉÇÿ:½ó óð€Xèxzå+_Io}ë[ivvZÊÂ?~œ~ï÷þ?òøë¿þëôž÷¼‡þê¯þ*%.ÌÍÍÑþàÖïû¶t7Á?øAúó?ÿsú©Ÿú)zÁ ž'}‘øÃô|€^ñŠWˆöÞ÷¾Wĵ7¼á ôæ7ÿ�½ï}ï¥ü>úþïÿ~úîïþnÙ·~„þý¿ÿ÷ôº×½®^Î è÷ÿ÷éÌ™3².À{ñ‹_L?üÃÿ€æçç ™����€-GûñÜÿå²ô|E#Àøæ‰0o˜ª*Þ 3±ŒV sª®„³ùùùºoíéôéÓr3¿ŸûÊ|ƒ¿Î7w�����\K@0��°iXxb Ǹ¦Ä¥IZ­”'Òä²fò~e)M ¥Ã�ž4¹ÌD¹,$ft¨ßå­>:اýû:43µ{“´VƒE¥é)Þ§Ž”žäÝ<sÖ…}Sa|”ˈ|~1„š %\Fa®$µïôK¥4ÓœYr™ÈT1¹,ŽÕò@&/c\ñÀ¬¡Ò4;Ý¥ûº´o®¼zÛÛwê‹BaÿùøZð‰c9–CÒXÀb*_*õÓøDrô*ü5éeD”d?“ø(O‡sM RçÛ·���€ÝŽ÷•¤Ç&ù2¡ŸÆç<î3 Ç®>¯VTQì¤lð\w))ɘ”ë~¿Ø²(„q·‘Å5–ªDýÒ¥Ò8“ev6 /ë¾ûî“Á§g>ó™tðàA:|ø]ýõôÅ/~‘^óšWÓ¡C‡Zïyê©§èþàèØ±cô²—½LÄ8áË_þ2Ýÿý²oyË[D2Sxù,„}úÓŸ¡—¾ô%õ�Ø>:qℤ¤½ó׽î5Rˆ›ÌÅ›äsráFí;>þøãôðÃÓ³ŸýlÚ¿ŸHqš‚«û¤ÝLÞ.}KtÏzÖ³d›ypå¸O~ò“’üðc?öWM‰������`½äýÉüú&÷m9aŒû :ßìÀr‹_|#s#Ž…ï,œ¼Z¿µT3FÑöíÛSÒ–cé̊Ξ=+χuÙÖû�����ö*Ì���lšT‚±r1¹ÌHòOZ3ˆJ1ªÊ¡(ˆhœp–’ËÅÒ„!¹,ÈeaÞ Hq:ˆ•2x57Û§ë÷èÐþõ:WO’Ö$¼íGvê6# -,Ö´£± Ÿòkœ¸•òÞLSæ²I#k.†¤²)½Œ²÷5Ò“,ÑeÒ“oÞÃKãåVRJ’D.ó® þT§ÞNÌ®òöî†ö¶ÆK{óX©”ÂÁŒ¸\‹rYaRr™–+ur¼6¶©|&§ÏëOÚ8%—U*®���pÕ‹?Ç_â€XéRlºpá»úCªg¬½ñu¬GHb‘;.ÿ¢9<$eÕC9k~ÏòÐQÇTk$­6€µxÐé¯ÿú¯e°éöÛo—42æ®»^JøÀ§Ç{l…`öµ¯}M„­oýÖWÐ?úGÿPÎxõ'Ož¢ßû½ß£Gy„NŸ>Õ̘OúÓ2ÿí·?·P+ëA¶¡$¥½ë]ï¢}èCôœç<‡n»íÙ­÷è�X§2¼éMß'¢ØììŒôoŒ¹ø¾å+_¡ø {ïý)?ÄÛËÝþáÒßýÝßIêÙû[r������!¿DfÁ‹…/•˸Ë׈gffD2cøú^Þ—Ížìçër'¿Wèó¼|]6—‡‡òüùóçSY͵Jp����ì%®®È���»ÌBÊS.ؘ,²|ä²”r%) ƒ”| •\Æ_Ðãü|úržKvhß\èÑþ¹MO…rœW+!YËJ*§ƒÍLuh\YZZ&)1Ŷ.µG(^i'J]2.¦e©)<§Ÿ‹ÍÚYæu>%k5e1òMLèâä²å¡jlëíëÐþù.ÍÏ–{¦½÷Ïwèp} ñ±d §šYÙg9ö|L‡Ë’ËBhJhßp<aÒ§*š&&¢.ýLª$òeiž���\=2)ÌHêlUO®é7ŒÛœræ%uvûŒjM½ØA+kd{ã_W@ʹÜ!~ËbœDƃP,~ézž÷¼çÉàËg“ éÿrc:H?ñ?A?ù“?I×_ÊÒÚ÷Þ{o½Ü;“ÄÆË¿çž—ÓwÜ!^>øùrÈés¼½ü;§¬½ò•ßNÓÓ\Æ\¬®¿þ:zõ«_-r™òìg?“n»í6‘ìX˜‹k!������.—ɾ; ^,—…J NúÏœ&Æ}aßf5Öêûç¥1Mºž×N9Î%4¾„oÆà;îórj0?����\ @0��°eð÷í²ée6Êe’ô$id1µi"¹LRÎx~Óˆ8š\6®qGS·Â ¦%W•rñàúÃ}ºáH—ú½½sJã}á}:r°'‰a‰–^ÊMU®)%íaCÉ'·sš&ç&Ê5F‘iòn½¦\c^SÓäBzÙpT¯‰_*èÈ¡]¿Ûûº®¤àuÊN}œ–õÄch«æ8Ò…²¥c>Nù3©\:Fó”3mï0lÏåÊð÷ÂIE:þ��€Í°wËAK~’ÎC}†$ã­¼0 Æõ9”²Œ#ëBbØf±>Lä}68” iÌÔçb_Hw˃CÙÛκ´\Ÿóå.ïI&%ÄÊ"ã`ÒFÚTe­‡zˆ.\X¢ç?ÿy1ÙËÉó¤[o½•¾ð…‡èäÉ“©ä¿ï–[n¡~¿/©cï{ßûé‰'žAŒϸd%‹f*‘å¼üå/_±eYÐ ^ðÙ‡§ž:&òZ«M¤óÃs¿¯¤g=ó¶ú}ü¼‹“6–[s9û<>&¿rÙ!Ô›ŸŸ“×Ïœ9ÛI�����àò˜LÓÒ˜z}ûÐsss"…M&å¿O&¡Möõ}ö]cµ$c}>ôwç¥oÎ¥èY.ËËt"Å ����{”È��°iZ O“Â7ÕŒ2ìK22v¢´£~Iá©•\¿ô[Ñž¨r…$bLõ»´o¶'eçfŠ=•U–Föi8,ifºCƒ‘£Áp$í3ÝgÙ)/uB}Èçhî¼£,™"+qäcBœÏ’Ëš'¾'$œqÉÈ¥A(ÉMf§KIWÛ«í=th~¶KKËUÝÞ•ˆcEÁw<R#‹År£áx e1)~­ä²(èé1&Ži" •©Â߉+.¯|���°ùÀÉNÂ}>ªåÉO\~…Ì5Œ=yÖÑÉ NDï¢Þ׃3†n˜/hºWlhY|ª–´µÒRY÷U¹Ÿ©i¼›áܹsôÈ#_•~—Ïyÿû?×gêõd0Œûÿø}ôæ7ÿ@ú¬X0{Ë[Þ"Ï¿ç=ï¡~ðƒtôèQÒ8§ÙÙùë›››]u;8‘ŒFõ4®Âz´Õ„ràh�����`[Éå-îOsWSÊX0cÑk'¿ñMÏÓÓÓ’^Æð <ñ¶\©ïc�����;3���›ÆÄ„'Iy²Q.‹2ŽH5¦‘pHÒ±¨•¦¥ÒLjr™a * ñr«ª Á° ~¯C‡öè†#=šê­åìxŸ¦ú]w¸K·q┫/žð]rD½Ø~6%läwÙéûãÍîÈÓò£’E¥§¨£…÷µÚr8ötî<'ztè`WÒËx›öl{OYº¾>¦ê–¡'ޱdƯ\ÝÖM\¾¥.CŸr%5Éey©W-‰Y¹(LêºHŽgrÏÓR���€­`§5x}œ´:vZf&ÅœmÑ }ã´£¿úÊ€ž8ëèü2¯ËH$û\ßÐ º÷Ž.ÝZ?Ž«F˜¿ø2½¤‹rRkÙ³rþߊ÷§Ÿ~š¾ñoHJØ< ÓjÜÿßÑk^ó]4;;+mƃb¯|å·I*Ø7¾ñMzä‘Gèᇦ}ìcôw÷wt×]wÑ›Þô&IKÈYëcÎÓѶK�³¶h•�����`«™ìgjiL†KVªÔµÓðzYtÓ45–Íx{ò$5����€½3���›&3&¦hrYpBÂS¢ÈD¹,&=Q–J5Æ2šU,‹IyYGþr΃~u;:°¯[O%u»fWÉ9¼Ýœ†±<¨h8¬ägÞþn×ÖSA½zbéRð>ñ¾qBÛpäèô™‘,s<ö’,VÍúò¤<†=O‰kæ%IÑÒš>¥‹¨ìdäµQ½žáËcê×Û¾®nóùº½;{·½{K÷s{Wtªno~¬‡žëv õCÏÛ-×*”YÛ¤ñévÍÅãY“ËL,E¥%a=ÂË���l ;-ýŒ+.­]Ÿ;5Z•ˆ<mvý¡?ùØÉ1ýñ'tv©J¯˜¸ôsËDgžôôøéŠþç{û4ß+Cš¼jÉ­q¢õ¾’TÜáÐÉ › gmÊc~‰ÎŸ_ 7¿ùEË_gx�ê?ü‡ÿ@§OŸ–y_ö²»åù jYºá†£’\ÆB—–|챯ÓïüÎïÐ}÷ÝG/~ñ‹é…/|ak½,´=zÊí9vìX*áÃÓvоade!������6Kþ½†å2îs3\mKcêë;-vñzyý\"“'¾¸´´$Éf�����{•Íßž ��àšG2*x€)žUXš©b™¤dÅïö<pהРυ”'—’Ëœ–Ô²›/×Ê ¥ó–º.YÒülý8䡦lán˜|}1aLO>y¾òðúìçOÒç¿p’¾öØy:yr™ƒjÝËâ}ã}œŸ)iº_RayÔÐò ”¯ ©o^’ßT|Ò´ŽPªÑ¶JY¦D-N•›ø›r¥\ÞŠhiÙËz8ikzª¤Ù™k¤½§ëöžíH9Ð^· v–F#ñ‘SN‚àÈ(–¥ä2ÚÛVdI™¹Œÿ>øØ/K»"ÁoÓãï���À*l§ì“Þð Ï;ɤsÚV%g}íÔ˜Þõ©YrkÎS˜jö÷hiœÂf¸‹o?÷{<—gY­ã.n‡ø”¤Œ±8¶oß|šxðiß¾9:rä0½ô¥/­ûtCÌÆq{¿ô¥/ѧ>õ©Tf'ô3 zÖ³žI¯xÅ+d{¹üæ$œpÆZÚŸa—èÓŸþ´”îá›e¹±ò¡ëÉ �����`»Ñï,p±`¦LMM¥ïW"Q×ĨùfŽüfàô—���°×€`��`ód%þ$µIJº,‰,ÊbÖF'ÌË_±µT#Ë8\Å(íð€ßhRÌD.›ëH©ÆNǦ$¨+ oùhäèÜù8¹LO[¤'ž¼PO òøäSèä©e «u/“÷­[ï#ïëÜl)Ü,qÂX.—%IIËgÚvÙEçã$"¥H£‰rYYS–¨—¼ˆUý^\÷”ÝûímC{O³ÔWc3Sº=ê6io)u9qœ™ÈÇ-£m\i Òø`5åÏ6©|<”Ý.U ���l=[-™åi© ¢h¿/Esnæäe©/ÓùäN-:)i)U×W™B…OOž­ä=Š»hNhÊø<>U„{Ú_ùÊÃ’(Æe.gggV¼ÎûÄý€{î¹GÚðñǯç?.ëþÌg>CïxÇ;è}ï{-,\}àú O<ñd½Ü¯H žýû÷­Xæg?ûYúØÇ>.i Ì©S§è¿ÿ÷Ò×¾ö5:pà�½èE/"Ú¦¼T-ÑÎèÀÑ�����ÀV¢ýËÁ` ’™–—×”Þ¼?ºS}Qíó:¹,&oÜØ[/ʳÞ.����€í%2��lü]™œ$/Åô,ÅI#‹e“‚\æhÓË‚³Jh×)m¬,I$Ÿ¢giÿ|GÊr ÄÝôÕœ/,.Ep:öô"8±\i4võ�¡«û–¥\ãÑf6¼Ý¼¯ê}+zêø¨n OÓ}GÒ†PãSŠœÊy†òä²Fäó)Þ"ÌabyLMc1jX/ÿÂ’ ýðÁŽ”édñêZiÊìJ‰Ì K\*3±… ÃÔ¶h’ËôgmC)‰GÅã!$¾Â†al~Éù$WrIO>þq¡ ��ÀV°“*¡¯f¤7põ€Ši—}^>m½igŒ™ðžÊéá§+zÿçFt~±’r˜²Ì5<)~û-ã±¥¯ zÑM¡O9¢µïª³& yãhä ë…wÍ奘i»ðƒ”~Áí·?§hê¶–eRz/ÑÑ£×Ósžólzì±Çè›ßü:Ýxã ôíßþíôå/EɾøÅ/Òu×]'ÒØÉ“'%¹ìe/{=ó™Ïl  qÂÙ÷|Ï÷ПýÙŸÑG?úQY'§—qùMÞŽÿñ|+]ý‘ú=Ú×pq›²V7.šzŽ6ÊZ‡›$ºúªµôu�����Àå ýHN�fr©K×ù®D¹v.ÕÉÛ2äº ‹p,¿ñÏ*žítùN����€í f���6ÉUL.«ÜÊä2l²’€.&Aåé[&¥o…‰Ÿà›¾ÆcŽA7Tœ¦Õ‘D­²Ü%IZ>$i—$­%:vl‘Ž_¢s燴<¨¤œ¢ˆDU»\âFà}å’ \¦ÒK|=e0ôõ£“å«É$½Ée¼>ïªkÖm𶆙ÀŸá°Þ—A½ÜÑÐ˺æêu^kíÝáöž+¥TfY·ÎÙz¹á d“D¦‰n.¶³$—UZ®ÔK;‡ä¾t’Ë(”*­B*Z^F���¸ªˆBµÞ(°QV“˘cçÆôÞÏèÔKJë<Iú ‡ ÇëÛŸþÑT]J)¥…Ïï,u=ñÄ7éϸUÊRê€×Zóß{ï½RÖçë_ÿº¤ÜtÓMôã?þãô’—¼DÊd>òÈ#ôä“OÊrÞô¦7Ñ?ü‡ÿpE*÷3¾ýÛ¿~è‡~H–yâÄI‘Òn»í6úéŸþ¿ÓK_ú™Oû ÓÓÓtàÀ~êtš{ {½¾<ÇÛ²üü¾}ûdOá÷ósSSýUßÃóò뜺æÜÆÅ5������räúfìWr¿öb}íDå1–Ìôº·¦¬����ìE`��`Ó„²Šõ—|ëbb“I¥YБ¤'™âà @ãLÄÑ×m6$X‰ðÄË&‘ºÝBJdr Ú]!åH’Öâ¸� IZÇO,Ñù…QhHYÚz@°[O*J»áíæ}å}æ}çÔ²¥úýËËœ¨Eõó”Úדݩ¤%çõ"L¼ã/ùRFG|MKcr N_Òr’×5ÙÞEÓÞÝN!Çž÷áNCølÑ´9irY’ød+S _QIJ¢œÐ­ù³ä²±kRå���€«„ÉT€<õòÊ d¡_øè‰ŠÞó¹^ôë^bèâ„þd· e¬Ã&]ü’¶Â¶Ëyú2oÁãep9Ê_ûµ_K¥"/5ÿÝwß-S>ïÑ£7Ð?ÿç?N.\ÉŒÎ8(ý û í}(¤äæË_þr:qâDÝëÐüü¼ô‡4ÅAßøÆ7Ê”óÚ×¾F¦¸e+¶õ-oyK=½5®+lûwÞAÿÛÿök´<Àö†7¼A&������¶¾!cR0»ieJ^ö’VÁLE¸¼����°—€`��`Ó„ÒŠŽŒó1Õ©DÒÈHƬ$é©U®‘Ò@\^®1$<Åô2o¥DãT¿ ~/ü|¥Q©niiL'O.ÑS\¦ñø¿0¢á°’y´ŒâìL‡œ¢ûû",mn›nÇP¿këý/袕¤±rèëßMÖ~MaL-yétÌ—ô¢µ>ãçÀŸ——\^v4I‹×Õë^»íÝ«µ~}̱ØX‹ÊgœÈvÚÖM»$²YK)åLçÕðngþ[ “Ûép���Àåâ/W0“·„› x=5¦÷~Dg±¼M3¶¸Ëyt߯årYËf%9¢ur]j¾™™™.F*Sª7wÔÛÎe5›E_¹Á¬+9Ø�����öẚKâËe»)Á,ÌÝV~����`¯��€-A…&)!ÈÉe¥•ô2‘Ëâ ,âhMøKIOšå3.ÈÉeã*”œž.ifºh•j¼’7¥$­§B’Ö‰AvÊ“´Xvš™éÐÁƒStã3tøÐõzÅeo7ï;·ÁâRAË.‘%›—ÅŒ¥ªôóhÖ¥e1£ÄGYiSJ;r‚Ù`@R’e>´whoN2[X¨bì=IŠ™$pó±L!5EŽà,¹,¤œÙ8¼KwfÉe²”80 ���\Mè@Šþ|¹çZo| óôèÉ1½÷s:³ÌѪu߯KtÇõ†>ó ß’åׂû’½ºÿùœë Z¯*–§{±,^/….‡ªš¶oo�����°§PÁ,O Û ‚Y¾]œâ« D&����ö2Ì���l>•^¹Æ6rY™BÙ£ÊÑL“Ë´¬#ÏÊãz.¥—9X€ê”M÷c©ÆâÊŽœµ’´N-ѱcì´2I«K‡õéº#Ótà@_ä§Í @JéFIq+dý£qžP6ÎÅÇöu “%—鼚¾e¾º½yy£‘˜’u\ëí]ÆR™|ì…öæõ…(>Ó÷dP=ûdc©ÒxìÛ`ó…ä¾,¹Lå2¹öäëmk‘ô��àªDN.w�%TOwôôYGò©!]vdêeÍö-}÷óKºëæ‚n;TÑû¿0 åËÝnõí >o½öÎ’ŽÌXr—•`¶µ‚Öv*qÂÑ£G©×ëÑ•!væéʧÜ����€kƒ&Á×ìºëh« f* áš����öÌ���l *‹qjYH. ÏËð“ Nžp‘Ëe:#ëQ’¤Ó´‚`ѸT!§jqÉÁ+ž¤µ4¦'Ÿ\ §Ÿ^¤ã'—ha$-–n¹yž×ÓS,éƒ. Þ÷©(˜ñèXJˆ²ÇnSݶÖÄÁL-¼J“ªøgš0¹4¹,½L¦*l?¯íÚ›'+íŽGòŒÑܲ8mBY.–+KÌš?�—„I?‘\ÄJr‰#���®4õ+þ|%&]E_96¦wvHç9¹¬~û\ÏÒë_Ø£-ä÷—ÜjiTŸƒ?öðˆN-8écú¸n•¸f»Dw=kŠ^q{I~ÄË)ëͪ¨4l丟dÂ&š˜oæ£.›¥ûͲ5ƒG«oG¾y‡¤üT¬6_ Ó¯{ž<·½mW°³�����® ò¾vž¨|¥ÈE7ýy­~1úË����Ø+@0��°iZÉe…i’Ë(“Ë2éI¾tÇR:@ʼnA.S'”oäïß\f°×-dJ%7¯�£Q–¤Ë4.\$IëúëfDvš›ënÉE^>—|䉗ʈÖÓÈ‹¬GÚÎFK5¶E>þ]%?I/s>=ЬVQLŒ3hï¸ü¾¶ƒá4d> 2ó2@-m\„c”Sû Ž]» XOÈeÒ¦q ž?gQÒ ��ÀÖp±A­" æÄõÅUyºœ™§'Néà éô¢£"ÊeozQ—î<.U°>ŧϗÜR’­Ï·|pL‹ƒ5¦}žN}þ½ëY}ºçö©ú™qª–«_¨ /³ ©g&&”ÙPŽ=EŒÆ-÷±´îÚšWþœ»Ý]YÐy�����ÛO.“í6QK·+Üø‘ ����{f���6Ñä²Ò®”Ë´„ m"Ìmü™ò­ª™œÈ8<@Ê)PF’*º[¤Ù+&<ñ~°ìôäS AvZg’ÖÔt§]šrð¾w¸:!!ޝ] GõP* fÖsXÅвh—Qjkcòä² ;‰`F± eLCã1Wiï.K}hïN·ioŸæ6â—Û[&‘ølH.ãä¾úgÕË‚¸ç$½LSQtÛì.½0��àêg'$³ö ã:7(qßãóOTôÔY'å-§;†¾÷=ºýúöe 9ßÖwÝRÒâR—>ôå¡”­ÖRÓßúì½áù|þP5æ§ )»Éi¢ãúäí“ó³d‹Æ¤2^fk|»¬ ������`w²¯¥…zÃTE+Ù ����`/Á ��À¦á¯Ê6%7…AM–q´,¦H5Ô$©ôä]S¢±Š’™ˆO"AÙ4Pi¢XÕam‡¿˜‹|5Þ\’ÖVm2/‡ÓÅx’ä+Ç)_ž†#GÝ2lƒ féešd&ûBA KrY–:侘îaŒ´5Ú;¶w§‰¹2d,¯e›„¸–ÈGáøw*ò%¹ŒRº™‰Æ_¥?Ú}ׯ���\Ål¿d&vWXÅsïW·0ðôð‰±œÙåm%=ÿÆBɪ4—O8/8zèé±ô¹Tu·(ë÷LÑwÝÑ ‰ußÑÙ¢ž·’­ãô²1g™eâËfú»ñíMÖÄW“2������» ¾D¿ã„ësND®+nSU_,Ôï_¼­<á¦R����ìE ˜��Ø<™Ääby!ùm|&9™PB°BN˜Ígée.ò—ïP3PKhÚ$VٔĵSð~,.é© $i:ا©©NßN[‚Š_elnëáˆ%³úç~¬é”Êb†$²<BÞ;¿B.3±DT%%2ÃE~_Y·w‰öNí­cÓ|ˆJ…Ë"óeÒËR"ù”Êç|&—¥¿X‘«Ð†²��l=;’d&<ßœß6ÀpìéÄù ¿sµÇ»oíR™’@}šø¼ûôyGïûܾ~:”Tï•}Çs§èU·õD6sÒw´!¹L’BKòU8g§˜òÒqµl¸ú?ES9������°kPi‹¯«Ðu¥3•Ýø»Ðx<N?ç2Ì����°×€`��`KÐR‹ZS¿DE#—IzYÇ’\æ‚X¦Ò“&B9ÒA}¿‰åwæ‹ùå$i]wdFd'MÒÚjx‰E\§‰’Ka¡´¥oËeIÐÓýñIh ªyÒ×D‚¡½™ÔÞ)™/NŽÑðZ»Œh*;ÊâXžìb)%—‰€&i}Sûîj��°-l‡dÖ ”ÄþQöû–SO#Þée³ÝpŽ•§L#–/ŽˆþäSz⬣QÅ*™¥WÞÖ¯§NÝ/ðâŽ9¶É¨d’st!𤕙pãBH&s©W㲂ž>núN§¶������.M¸ÄŠPÆ"_GãÇn·K»Þ>ÞE3fGnú����ØA ˜��Ø4*–‰(&ß™›ä2q l†ðMYÌ<QKKò`åxl²¡?j•>܉ïåy’ÖÓKÒšîˆätóMó"=mG’VCÓ¦š,&’’S1Œbr™I^X¸›.Ìç\ZŒª{!xDK:j²™A{šöNíI&Š“E'm£à¹˜—òÈL“\f'“ä|+Ç•‹Éq���l ;q×¼µõ²Ú˜bVŸÖi¦chiTÈÔï}⌧÷ñ+M?çܲ§ÿï'–èÄ'ýnáèåϘ¦WßÑ“÷³DƆXa:Äù"m×çU#É£^Ê`’ k¾ªŸ)Îy<&”j ������°ûÐd0&/I¹[Âx{”<Á ����`¯Á ��À扉L’Æ”%—YR°4 K2.´,`=JÊbú˜Abë„/àQnÒAAf‡®ðêÆ#GKËY’ÖÉ%º°V’ÖÁ>]w]LÒšínÿ…Æuj‰c†šR¤4!\ù¬TcXD3O*mªšºQhïÀŠ·ð\[ÛTÒ’‹F®ig~MŠ|ij_,V©\–Ž×*Y ���l†ÄÈÓ˼ÜTàiªdIÌFéÝEQýâƒ*ýŽ¡ö[zä¸ùú/¿<¤×=ÏÓ¡[÷‰?åè/¾4¤ •¬oºKômÏìзÝ>CÝbTŸ?M,}α£Ø‘9Ü7飲Ͳ¹E<ßz9GW6ô‰l½œNá©,\š+Y^^–óýôôôºç_XX ~¿ŸѸ-{½ÞŠÁªÁ`@çΣýû÷S§Ó‘çNœ8!?ÏÏÏËü<ØuæÌy<rä�����p5¡ý_N,[\\”›>G£‘ô±ùçüÚ ?·“Ò¯k8J‚™®—ûí $3����ì5 ˜��Ø4,Ìp*®L.³a0,/‹Ée«¦\c˜?¦›Q(é³)g»¿–K’Ör;IëÂÅ’´nž§ƒõãÔtLÒ2Û·~â‘ mhRR™Â|>¥Ë5âX¤¨=Oe5‘umWC{··—ÿ Gsš'Ëx[þHÿlSSD?ŠÇ?’Ë���\LŠcLÆý@¢Ö7 3Ý3tÇ %=~zDѧ/==¢‹ÍôB_òÄ‚§…åPpº[úÖg±\6Ms1¹±—x; |³‚³¡cô2[÷)]”àäÌLÎ8²> gúPÜít Rin+{>ú¨L,|½êU¯ºä`ˆ}îsŸI¬,ËViÔn½õVºé¦›Òs<ò}ýë_§;3žñŒgÈóŸÿüçéÀô¾Púà<øö¥/}Id´W¿úÕä�����W%,˜qÿVR‹ë>-‹]SSS©»Ó‰fú½ˆûÙ,˜ñ¶q>—ÞtžÝ”¶����° ˜��Ø´Ô%Ë@š\¦“|™®ç‘Ò€.¦6y-‹™•!ôY™CoZò¯m×wq^6KMKKc:uz©%;M&iÍÄ$­#GfDvš›ë&Ùi»Ñvжry»´JZúF0#ŠÉgQ,“±SӔϔT¹fYùzÐÞyéÍFË£˜Æ'Ç4E‰/†¨XC­¿IxñMYÌÊMȕ֮1��¸šáóri ¥4Œ•`1í{¬•"À§È»o)é«OWôÐS•ÈîOŸ¯Ïªç›>"?WZ¢—ÞÒ¥×ÜÑ‘’˜£‘%c;’&êFŽÄ [pãà ¾îošªþ©Ì2gÆõûà asbêhÝ×è•&¼ÏmM߇SÈ>ùÉOÒ“O>)¿óÀ×zà¾'’---Ñ 7Ü ƒhœ<váÂzê©§è‰'ž —¼ä%tÛm·I»ÎÎÎÊ#§)<ÐÆƒ\:ðÆï×çøgME�����àjAojá›.8íWnX]\”~°J\ÜÏÝÉ›)äZŸsÒwgøgî÷³`6¹í�����{f���¶,d)¨,lLo¢XSE¦˜ö”’ËLJ|¢˜îJ6Ë ¥ Ã2¶Oxò";=ùÔ?¾Ž$­›æéС~}á “.l÷5 $T9)=™UåvŠ™o<¨*dwÌ©`¦ó7íÚOA†B{ë6r{W+JX²\æâ…$“QhEr™¦—9•øbY.©ç<¯‡`��à*GJ8vJWã(pqb\Ÿ//.3uJCo½»GñЈ91¦³KžãÐè×W+¸\æ‹nîÐ=Ï,©0,‰y¹Šá}e°ú<+•2}“ÏêMèñy–BYL':¸–kç¤3>±Òoåt4cCÙÌ­¨yêÔ)zà$9Œ“Åxàëøñãë~?K`œ|pÏ=÷¤²—ü/÷SŸú}ö³Ÿ¥Ã‡Ó¾}û$ÑŒ§ÉT b����€½÷wY0ÓÄ0î#³lÆ7]èë; ßÂHe‰¢ò˜yj����À^‚��€-"&6±X£éeÑfâA>¿XûVrY(Kdâ|U,!¨²“÷*5e59­¢ØÂA³”¤µ<®î–èéã‹trIZ³³ÝÀcáKÛ!Å¿ë?¾)ר‰eC¾´­‰%¡bÙLMÕjÚ›b› ½mïªj_Jid•KÉer¼Çmç$”Vr_lã*¦÷Å·Ä¿‘zž(¢���W3ÒÊ át•Êf® ]–ºO¯ÿ–;WÒñóž–F¡ÜålÏÒû šŸõ‹8‹ÌòBö¬$šI–¨ô7Cºh(»nšŠ—†Rv 8“í©ä|Ì}VÌä<nŒØì8Ðùóçë>Ì =ç9Ï‘R•\òr#ä‰Úÿà4–Ên¹åzðÁ騱c´ÿ~:{ö,>}ºî+‘Á6������ö*yŠ÷¹¹¯ÌÉÁ|s‹]ÌN¦˜qrËnº]óóóiý¹`†k~����ØK@0��°%)ȶ’˼ŠL¤T–\K•Èb9Ç1—¬x¶|ph4öõädÐÍná÷rMÒzêØBKvZ+Ië&NÒ:¸³IZ KM£‘“msnb?âëº1<«ép*;…ÁÕ ±lE:W·åö£½¥½ù¸s‰zãq8¢iÒË¸åø·\º+n+KjŽe=—’Ðd~þ¡ð³³f'ª}���Û §€u:% ]·‚Ïú#ä gÁ£óz Ïèû¹ƒÞû•†Kß„˜|–uŒY ³ÍsD±ú9)ÕKþu¤æ™—›#¸ß~ÛªÒà7Þx#=zTÒÇòT±õÂïáDM>hú?^Òø‘²ø‘E³/ùËt×]wA0�����{í³LÆr'óœ*™iÿ{'àus{FKcò6@&���À^‚��€MbÀ¤@hz£åC¢–™HÓÊʹ,á‰Eo(+)¯ Yô©§nG"µh+àå-o0IëÐHÒRX*cñk8ŽeF‰’˜¤ƒ¨*ðq8G(AÚ´y™ÍÄ?ß–ËÒ,.ˆUÜæ´w½Ý±m#šHÆ“-ÂÀ·ÕÔ¾z¤Zÿ4_դĩ\ibù0Šå5a˜��Ø ÌÅd®Ô'È’P/s�†Q‚\­édA¼îuê×êÓúpÄýº"œ ­_ó4g×xEOû*l‡ÔÛ †9¯ý_¬ÈÚçêf9UýJ!spz™¥2ç:Câ2ž^:NM¿hµ~ÇzÛJËZnä=“¬–¼À¿Ÿ9s&¥6èë,éû_+ïŽ������W?ÜÿuñN[ýÂ7^pš/Ã7gp©LMËoÐÐ÷äËR&«L¾®Ïç}óPõ¡’5~äù¹ÿÏ ÆúÝÉe����ØËàª#¸&øøG?Jÿ·7}ŸL÷ÿõ_�`káïËš^fbÊDJmšk Iy "š~Ï–¤†*$sU.Ü | a8 “s[s'ZˆQIZßxâüº’´ŽÞ0“’´®Ä5í¸†Y‚™id>—•Ç4Yz™rŸÊ|’ZæÚI`šr–EÒÖhoŸw“¯úØÎá˜.²ä>y5 “:iYX¾ØTÆ¿Í���€­d»24U«½ž ¶qŸƒKeò9]kBÛMœë&ËËL>ix»â “ÑZàõÿ+×¾é!ÛŸ\Ò[ký;‹¥µ9Sžxâ úæ7¿)‰ ×_=¬�����À5Ãdß—+.ðM*ŸqÂï¹sç’ôµÖûÖêßçbÚä{saŒûæ,¶±Ô¦ïãíÐ2÷Wâ{��€+;ê°‹�Àµ�ÌÀžç#úsú·o{Uãó[ÿîWéþ¯÷�`ëHIY6”Bªœ~¡öIv²Q®±Ìš”¢ÅI\,•%(&ù”DÁ¯†U}± "7³¹SW(oèhi#IZ‡gèà&IëJçqû,s;Ô“s>K( ¯sk±9n&JcÊkÙ—]HÑD-—å Ú[Ií]·CåšB¯Ç’\fCYÌ<¹ò2¤Z“LzÔù*™gçÊ~��¸6¸h’٦Ѳ¦]V’hëþßHÐ)M}î¬û•¡+v"˜(¿…~’‘úÕŽ eÀWHZ‹Ë)wy¹ð€Õý÷ߟÖËeœÊÀë¿ûî»%!!$¥:�����`¯³–`Æ,..¦38YŒŸïv»­k¢yùùÕRÌVûî¤×Qù;÷Çù¦.Í©åìùù¹¹9Y×j Ä���ö>¿ù«ÿŽŽ{Z~þ7ÿêçè_¿ýíôê×¾Ž�ØË@0{šI¹ �°½ð÷ẖTâRå%)¡YÑŒ²ä²JRÎ\øKŽNEŸåŠ–ê‰E´Í|_çõ,-…$­ã,;ºD’Öót°~Ô$-ÝÏ+Á¸ í°Ûáôuk³öŠ¢Sx.ø¶Å²¬¼¦AŠbiÓúBK³%´·´÷ÒRÓL8&¹¯•\æ¥RW”ËiSM”#j’äâßJsü���°¥lŸd¦·¬\ŸxØ–ËDò3%-œÈÔ 1óõ¸.¶ S •ÂE~›ž*êßC_$pj-ò žœµ¦”ð¤ŒpóÍ7Ó³ŸýlÄbx«)Q �����ÀÞ$¿Ñ#OËKÇ«dÆIf<MMMI¿™E4íëëÍ«Ýdr±²–ü>M-ÓmáeðM*²éòÑ?�€kvØI` ™½ 3°gYM.+Ê‚~òg†��[Li¤Lc6gcÌÂhÂS(’Ä*™Î›—vÔD(òV’´\4rXôYŒÂÓxìÛi€¥&.Óxúô²ÈN'b’ÖhÔ$iqé™™ŽHN’¤u°IÒº’„$°º–*i‹JÌlSÞRÓ¾ThjÞÛ:J|¡­c2˜,Ó-²ø÷*«ÐÞM{ÇWRꛓ¶)‹é²”8ŸÕyµyr™~ñ¸ÁÌ9Üå��`[ØÉ,$—q¿Aióuyïˆ+dRÇʹnÀ¥¦7\&ÓµÖ×~Ì^ÉdzZs7}JÓ-ë>ÏT¿þ¦ËîAºXrÁ• ÓéÐë_ÿú$˜1“ jZ†�����€½ÌZ׵̢_ŸcÉLÓÅ8mŒfÑŒûÖÜwæi2ÅÌ·ª<˜–,Æ'–±°Æ7w(ÜGg±—­%:ùQ—��àÚá§~æg%¹L]HfàZ�‚Ø“üå‡>¼R.+,ýÜÛ~‘^uï½�ØZø»3‹2fìÒØ^’Ë$áɤßeüÅšúË÷¸~$=ñÀ¹Ì˜pY%%•BB O‹‹]¨§Ñøòµ8ùëé§¥Lã©SË";ñv+*;:4E7Þ8'eûý+Ÿ¤ÖíExºÀÂÓRHÔRÁ¬ˆr˜Må.› /ÎÅ$-Å'-keL¦µ1Å,|F¡\)¯í³¥,ÁŒB2K)Çuhs&Èe1Á/%œ5eJµµ},ËÇ> x¡4,���ÛÆÖKÛùy:³‚¹®k+¬§ni¥tú°ÚTj³^3ùRs~^ûýá}¶¨¤ŸÁýM>k»L¶Ïö–]?ù6äžé Jd����€kÉ„1íës,|±øuá‡ò< f\fžŸç‰0}Ôd3}¿¦“ñrùg.·É¹XÆóqb m,­MÞh��àÚƒƒ_øå_¡_þ…ŸoKf¿ð 4éuox°×€`ö,—ýÊÛ~~¥\ö‹ÿ†^ûú×�`ëaiIµd«‘É‚¸dZÑãRÐù(ÖÄt,þŸÕò˜ü¥<”ÕLÉPœ~1 ‰Z\ji8rRÞÈÚ ˜ëeœ>³L§¤LãpÕ$-–Žž¦ƒ¦hv¶C®é´ ðþ³èµ<¨dâýà jÁ’SYh‰ËÐny RÅ'-Yjâàlž¢ %%LmýªØÞ¼®AÝÞ£º½Ëk´½—²ö%H}()Z„2¤¼½ÎgmËe‚YžÚWEÉR…4���`+Ø™v î\ çS£–·äû:%‹]õ@NÝ—Xq¹Ìæ)çJyIé¶k®ë‚\#·Q\vøÝÇ(\cõ:–º‚z­Æ}V>/gï_„w9¢ž|­÷½«Í›')è2ó×ÂçàHûÝn§î¿-É`€ñ ÷Å9Å�����€«Õn¼X­­}_î÷rš÷‡Ã ¤A 75Û¦ªMÞ ë[7v˜ðÕEy¹œX¦©e“ß!®t%���WŽ{_óylIf•£_û/ÉÏÌÀ^‚ØS@.àÊÊcrª– _ªY ’”§(=Éð—%«(ÖÈwö —Ùøå^]y´ÜcsHIJ ‹cš™.ifª Ngc_Þ91ŠS´Xv¯•¤utŽ˜¢~¿¤vBÇ•C“´8Ql8tAæ‹"‹v<1¹lµˆ÷à0™”¾¥ #¡^¦¦ÇY-|±½ëu]XªÛ{‰£ßëö6×V{/p{šö–´¸¬ô˜žL.“2\ÖÊùÇÆƒ_Kˆñ±/É}Už ‡‹P���®BwÀg¿ëù;Üh òVý³ÛSAަ:õ@N}N\\‹ØÅ;¢Åù_&lË wÝÛÞ«[{l*cÝï–Ògìè" ­p»W´º\žxâ zðÁc"o%© ¼Ì}èCižoû¶o£ÙÙÙUߟߘ±ÚÀUSŠ´)ß­ó27Üp=}ñ‹_¤¿þ뿦;nºé&Ú¿??~œ>øÁÒ _øBºùæ› �����€½÷¥µ|%‹fœh¦)dÎñãÚ}ý<ÑLæLgf¦©×ë­ÙG��� ™k f`Ï�¹ €+‡ füÝ&¹ÆÄ’—A°qq Le1Ša’ðDá‘DÔ!jÙ÷"ù(<_ÓTLÝz”°Ó¡¥lýß.ç)é_¥¥™é.<اǧEv’$­]t¡€Ó´x¿Ï_KšX¿•¶Á¬D>IëD¸¤•êÝy齨Ö:&¡™$C¡OÛ»Óµ’B²!®âö>Çí]O£aÓÞIij¡õ8ÖÁlÊÊb6ÈeƆm'—ù(¤Å’¦¥���\´å'ŠˆÉ;øùœWQŸKÑL•4¨ûñoRË|(–îå=Vþoü¥K?æëˆ=Ÿ˜†[JŠ™µNú.=NðR).Šá*µ­gθ\ÎÁƒÓû:´b.ɳÖún¸áÂrÑL¶¾•¦žŸ››£g<ãR¦Gžõ¬gÉ<gÏžMï¹ýöÛeyçÏŸß¡”;������®Ü/fÉŒÅ0N/ã²™œRVU>•ÂÌûÅÚ—¶Ö¦›F¹ÏÞëuSßb��€‹É \+@0{Èe�ìòä²4(f¢È¿¸»ìË»$nÙ˜ZAQÔ¡ü‹¾­§f�n4vtæÜº]Kós¥dbl±öíïKùÇ3g–e33])Ïxà ³õ`^?$iéi´;Ðýæi8n\9¤W·E¯ÛHJy©F-…©Iòk >Š|š¼ä/ŠeóõŽêö.hn¶nïþµÑÞÃ5Ú;‘$ƒÖá¥t<›X“ÅJIî+šÏ„¾€5®|ºÅèñÏÆšÅ*���W yYš<IËÄ€ÔÆÓ}²¢÷ë“iiÕÝK_Ïë}Ü3‘¾ËdŸÀ40ãºqÒ¾Ž«ÏÃõ¹µÅx[¯ÇúDª©£¡,ÎúS/GÆ:räˆL—ïÃóž÷¼‹®›ûØÚ¶G•)èâA´;ï¼SÒt0ŒŸ{Á ^ å0(�����®¸ïÌ}a.ŸÉ×%åéxÝ™²›s‹x-[¯g_¬üååÜ„��àÚ�’¸€`®z —på11‰ŒS´ •kâwoù¾n\L0kÞcU,K#†±fLx CNd·¤táÂâ˜ú cZ\®¨ß/¨,ÖŸ�Õé"51,Mñº¸T#?wà@_~ÞMå ¥-ªP®‘Ó´.Œ¥ Ttâv–’O¥I¥-}h{bh…`¦¹ò™DŠå²²4²\kù3˜loGS}×§.ÅÕØÞ,-­ÒÞ!ý͇‰ÂqJ: nLü<(ü Är¥!QΧã:¿;RÛçó…ÙMn���ÀE‘R–e2å7ÊøÜæA[Šq³Ôûv|žœ®ûpÝúëÛ¨â„Ú‘Hí.ÖòvNKzgËÖMÏÚHXÖ×ýÏú‰N×S¿[ÿ,ɲZ{¡\g«/”‰r­íßeèvMrM–õœÜvNR›|®,q �����\;ä}}­¸±VÉ —��¸ÌÀ^WÁU ä2�v’\VZ™‚\äš”\¦Â“ Ie& 8!©ÂˆääbºÙ¸rÒÙ’AAI˜hY<[^v"=q Ã^¯ ™©‚:fýÂÓýAlºîÈŒl§Muºõº©ì´[®°ì´¸e§zŸ—. ‘‰“9X. G¢ôƒBÂCŒv7ú›Ïâ|ºk]'õÂò‚(%©[ÚÞB¹È~ÏÒôoï u{Ÿ‹r™¶w#˜QJ@q|К\.3i²YÌJ^S÷“ß#%Mc K w���®B-ÌXR;›XâÊ%¨ uQ–:Fšzfª e׿÷Êêç¸ øÈ{­)ãÏÅbt7Iiš*ë¨ïr2A“Aåž±¨»“Z8Ó¯²WOò@.Äå¬%Äåér6‹§Å`�����¸ÈŲü†ö‡×zÊe��¸ÌÀ^‚¸j\ÀîA…§"+õç¨cx4”„2å²4Ÿ“¡Cª|Ë4åÉÄ”.[x*øb@eêyXÔq’0uæìˆºKX’P·ãb¨ ew1zÍb8ôR¢’§¥åJÒ´xEë„ô2–ÁLéNƧ’£6 ¾š4¾«VÜDrGHCóÔí:êŒB‚ÙhDò¹ðºÏœJ{‡¨qU{¬½ÃPôôÙØÞUHÐãNuã2[žbùÂg³ô>- —©‘û*ò1yr#R ���°íøìqâܓՋ\Ï€‹Ï–eR’™i½ßD -­‚$Ò¶~=ª^)4üܭϧݞçÏl¦ïÔ²Þi|¾%ŠeÖc’n”Àõ=¡ßãã`P¾…“»¾vé›+Íj¥xrÖóY¡|�����¸™Ëô¹ËYÎjìäw‡|VûN0™v ��`w�É ìU ˜«’ô£+å²² ýö·Ó«_û:�ì,ap¯)óç|SBbùÌôÔHhBábIGå2ž|Lt’Š(¥‘¤i5ë85ùf¦Jêõ|“µð±mXr:qj(Ëf ‹[ý^˜X€r:Vl(–¥\f›R¥2ŒÛJ. Ïk ÿÀ‚Y¿nËáÈÔS³¾á°ÞŽÓCY'Æq’Ù^ºpÑ´·£ãõquâô@d3%´§«É @rkj�‹eR¦5Kî“`Q”¬2¹Œe´‚²YEü,0ö ��` Xûüܤ–^Š0ŸÍD²5×FëÛ¦ö¼†ÚÑù&kbhÏ6s·׿=±I{¨ËÒâR}1 2����€k™­èowŸúbò›Þ,£ß§ô®¾'¿™DE3Ü\��» –Ìxüóß¾ímmÉì—ßNSÓÓôª{ï%�®6,pòÛ¿ùË�ØMjÉe*‹iY@ÌX.+l“^&b—¬Â{ø½š¼UAÜ)K/'HéWúQ=ÿù cI1ãÄ© *)o¸WÐRgÎeÿÎ/ŽeŸuЕSËú½z𵫡#:lR[ÛÖÝkáõZF­RR®4Ne&®6Èk<ñö,h{Ÿçr{°½ëcè,§Å å1ù¹4üÍíÀ‚™a#,ˆgÒnE&µ © -]¹¦4¦O ~1å/NR¬‹…¿* ���lA@Wq¿9ëø5JG&�������`˸˜¬6YÒSž˜kÕç!•�Àî†Ýv - TÃŽÃÿñ¿I�\ Á ��À–Ê/’”°ÌËêÝU¡\b,ÞËqÊS;¹,”Ô÷JA%G©d¦")\õü,:;>å]¤GroœÖ8=ëøÉ!=}bd®qˆ¸Ò²¡Üíõ u»!¡,¥¾‰ÄdSéFm³ ò¹,¹,¦Íñò(EœWååöFAìÓñåÐÞN¶…·É§ö.h/08zZÚ{HÇ¡½}#ôqY/C•LŒI¤MÒ¤ס­|kÀ^>·Â¦4>-‹É㱓ɣT&��€mÇS§>uIÉ™^ûYJZêïk•�������°Q.&‚­öZþT¨¨Ð.ý™ƒôb����ìH0W%?õ3?»ÂôåxÉ|èÏ �°ó4IdASÆÄò˜šò”ßU¹fR¹LSÎÊ”tÆÉO!EË'i}•§åAE§Ï¥|ãÙóc)qX]ÅÉZ¼í¼œ¤Åe1OŸÑ ÞGÃX.ëtˆºÝú± ¢™1M*IËŒÌg¨I‰óÞ·.JhJœÕyã5MG“utxá3 %IÚûTÝÞ'ëö>w~´'Ú{q¹ª‘C¼o˃úø­ò”7'ÇžÉÌ7IdQ.³±”kúPÁLß/‰e6ˆÑžä—XÄ Ç¿C‚��€¡¨ÏW³½v:™öÚã^Ò;�������l“‰eZ³™šùV{/¹ ��v7ì.ä%2v~òg†�¸`®J¸&ñ/üò¯¬”Ì~áèÏßÿ~�ì,"ŒÅ$&¿ô;/ËII³rYåÛ%4-¥²˜,î„òLå*'% mQ%ÉŒ5)NšZ¸PÑÉÓ#I :yfDƒaSòj›xÛe_N éT½/ ‹ãV)JN›ê‡©(Ú YÜv\²14s“B"e}Óf\f²R–RiÇPj3”#í×ëàɺ<Š¥2ëö>3LÛxu··“ö>&û2”} iqÚ®Al,¸<¦õQ–ŒS<¦µD)‹bãªI‰S¹²l‰ha¹yrYË<���Û ŸÓø«Ó‘¹ö%�>µÇ*|œ��������ì+SÉÂ5ÇpS«KÒYN.§¡T&��ì>þòC^)—ÕãE?÷¶_×€«”ÈW-÷¾æ5òøË¿ðóé?Ìœœôëoÿ%ùùuox�vþþʲ˜©ÿ­$5¹F„§–\F";¹˜ÞÄe™TxÒ»²øQÊ59’2˜AØñ’dÆ‚•«}=ƒóëƒQý{q,‰_¼´P2²¤n׊¬v5À²Ýpä%…íø)NdхŪ~.¤¶©€Ç©eS=¢~/e*1™ØÆ,ôÅ–5òܳæ.8J!&:_˜™Û¹ßch8¬+þ|ÃgÌ•¹PщrDZjóªnï“!å²QÖÞaªÛ¢p2…ã™D+3aL/àènNkšD¹ ¡™”R–Ë•Mrî4��°ÝêÔç÷C3““‚Yó<NO�������°µ¬%‰­öœ^S\K0Cz��ì^X.û•·ýüJ¹ìÿ ½öõ¯'�®V ˜«Hf�ìBúÉ`¤&—‰ˆ“•Å-%—ù4¯ŠRü„Hh4QBSRµê“V=+¢ÈÆYüþÍ"§iÆ<tø`‡Š~AW¼½\óÄ©¦una$éV 7 §Žt;&$‹õBš™&‘YI|‹å­BxYú<šky;‡ß“SÎt,™E±é~hãåÕíæui{µ½ÃçÇ\}íÍr™´÷ùq«½¹%½Ì¹¬(C›”¥IIq,õùL€LªX<žC©×f>F’Ë*Ÿ’Î)UŠkA���¶çù¼äéY‡ úûǜ۹¿µ44r.ïÈ™ŒEõºOáù5¿ �������¶ˆµd°üù•å2ùæß¡ü^Åš‚™Î��`w�¹ ìe ˜«Hf�ìT`*¤,f.—±¬Ë5f%5½L$³LØi&¾ “å;üF¾c«~~dëÁR“¤µqý÷ïTäñAÜ©æ‰úœ¬Uš´}»ޏãòÐÑùN.ÑÉÓ,—iy¹IÒbX®ëõBÉÊn—‚èËBJµD>ŠIq-‹I­;ÝTŠ rYS K¤µ‚dª›Ÿf¦Cz™[ Œ¶wø¼_çêí¼ Úû\LŠãò˜gÏWu{W’§Û+Ée¶ªâˆ}2©\–ÊbF1Q¢$øI©Wk²²°FÚYg™?¨\ž”ñ9õ���l'±ò8Ý|ÀÒÑyKrÒCVÚ0-¡ ç%�������Ø:òT²Éç}M*|Ä´éÑh”=çå:b>?Jc�ÀîrØë@0{Hf�\y´$`Yj Áð¼¤hÅ2ù™b BþŸ¤pÙð3§–ù‰ä2Þ!"U$œNé¨Uõßx(ݘ×o’dªscI2=^êÒu‡;4;]dÉ]Wé.,UôôÉ‘ˆNœ¨ua‘·½IÒÒ@2.9;íiv†nJbªð¤ri™–Ä4Í£µÍïyYGç]*“©‰rºr–ÚöÍ……ñµ n×üš·÷™³õ6×ÜÞKêö>Ô¡™ÝÜÞ'FRóô™-,V­öVX6+ËŠ:W?’Ó…mJ_† <.¶usqH>“º¡ -¡ãä\,-Êéeyriz™³»FÆ��°wáSÖ\Ÿè¶ë,=~ÚÉ©yäêþËÒË�������`›XM0»ØóÌp8ª¯W’^6I>¿Šf¸Q��®,ËÀµ�3°g€dÀ•#%—±\“’›²ä2™)~YŽo¹Œb¢–§,½¬èt.•lÔ”.–©dÞ"È=,�«"Ê>a},¥õû«q=qbUؾἧ©¾¥n7”-ÌnôÚQ8Œ%£áÐÑÒ²£3çÆR¢1ÈeAvJÉeQ ët¨ÞvÞ~.iDx*L“et_R¹K•øB›hºKi¢;ee1}L“#I‰kÊ; \–³äu†˜‹K¡=#j•|\æöv!Ýl´ý»´½OŸ í}ŠÛûÂ8¶w“ê¢e1Ë"Èe,3¦´¸(èiû‰˜'kñQò£–ôÿš4¾L.“ÏÂ7©r¹ü���lŸÃøÜ^Ÿt^rs‡þþ±1«ÏíËcGÙ5/��������ÛD.‚­–<–?Çc[\s­Ò˜k¥Ÿ��¸2@.× ÌÀž’�WþË©eœôÔ’Ëb¢Û6&I:yêV,‹“ËÆœ\VùTBP¥5«2Uœ¿,<uËJæu¾$çÚ_ Y*Z¸’µ8µjÿ|G’µöï+%ͬs…Òµd»+Iý:~rDgÎdû"ÅM\  xqrÙÜ ‹^á÷2“øT.ó“Ée±Ì•"šáŒD)yKËbÆ€8y‡J`&+kjbÚ\§ôõv´³»@"ïµökìéüB%)f,ÊíßÇíÝ­Û½¤™i{ÅÚ{T…ía±ì¸ˆ|ãÐÞÃjE{3œ\Ö)ÇÔíVõñå%-޹BËbR8NU#ãSÙQþ¢’ûšÒ°!¹,¤—¹ìnDc&Jš���ÛŒæjÖÓ‘YC¯½³KöéºRŸ»ãP+[)äÔ„± �������Ø2Ö*iRÅ„ðß|ÍÓx\IzYY–«.C—Ó.«‰ëŒ��p%€\®% ˜=$3�v‘™Z˜OIZòE—_#Ó¤‘Ù&¹L…*&<éaMÝ’D(£ÊTüÎAf¥£Ž”Ò´’`Æ%3cHšjƒŠK:V’°µ<Ë_®QçgMOYêv¬DEÒ§¶ú&/®jÀXv[\ªèÜBE§ÎŒèÄ©P¢Q„:¹àÓ6YrÙÌ4ÕÛKÔíFÙI²2‘²T2ê¦2šVå(ß.™_o°1I‹ e% CQS–ÌÊ‚$AM$À*$Æ Ç&‰f*Rñ~r[s;s¢ÙòÐÕí]Ôï-êö6õ>éç¹ýí=¹º½=?‚ÙÉ!-\¨BéUï“<ÇH0^Á‰eõ:<9)KÊû]dÉe"B¦Ï+Oî‹"¤1™Èæw./‹©ÿ„㛟 Ë£(ú���Û‡¤mò9¯þçî[Kzü”£/ÓÒX ™Çó�������ØJÖÀrAL*{Ô\ùq4%ùL_ÏÏß{±å��Ø^ —k f`OÂ’—/û·o{[[2ûå·ÓÔô4½êÞ{ �°…d fYLl ÂSA±T£ Ig*—irÿ}JYL×Èe¶•Õ/ÏKÆùxy|WÏeÝ_ ¯Úµy¾aýžsçÇ">8]ÑìlAûæ :¸¯¤ùÙ°ÅòÓVû/ j‹NÒ½XrbÙ‰%§¥åJ(‘‹È·CB8 NÃêiÆÓô”§^ÏP§“ÑÑaÊ¥1ýÚÉe!MÎ4¥3“ðDiôØÆD-Ìd¹Q ¬ÿ3†›- nžfâ Eýž[¨Û·ÒBÚÞõ>×ï;·àh0ÒÉÓãz igiïºÝƒÜ·í]Õí\·÷™ØÞ‹“í=Ê"’˜£n9¦~·ªÛšÓñHäCMÜózœ&YÌÇ2+Â\!Éeí¿igMð£x(–Òl—„b%���›‡“J Ÿ¸ëG›ê>’¯$)ÖÚ’†ãåúœ7Eß󜒦ǧéÂ…ersSd;q°ÂTM`”]������€£ò—oU90Íu]ùªeåúê`0JéeyJ™²šL¹ ��vžô£+å²² ýö·Ó«_û:`/Á ìYô?Ü-ɬ~ü?~ã7!˜° Ä ­VJ–”Ã,4ÝÌF'–ÌÒ*•ž(|™6YÊ™~Ñv*äø&AªSº¸l' `ѧñ˜KQ‹Çù(U!YëÂ’£…zbéky™e$/‚Y¿gc9DŠÂns.`Mì¯JB>l;OA– ¥0¹läòr½¾z]çÎÁŒËv. BjYH¿ŠË5š¢ÅÉež¦¦x»êiŠKcšTªQK‹¦t‘Xê2”µ¢”@Ö$—µ£×Šfñ –(É{&&j¹,>RÅi+›vàÉUAÔóR›¡-Xp¹LÞÿ¥ÐÎÒþu[p{÷´½ËØÞvíí|:*Àø3éiN¾³±½Ï_à»J¶Çj’ÓRr™¯×ïë6¯¨ÇrY×Q¯Cí²˜š\–D0¿"¹LUi†8lgüËàõzmçøÇ¢¥`ù‘·���lA.c©¹¨Ï3Uý{Ê^›Rγüs§>ÇšëÓ]·ÏÓtoHç—†4íx�£þZ8yµ—÷ï��������¬ý.µ2…Loœ­êïiãúZëPž/ê Å|=§ü}y¢Y³ |G�€+Áoÿæo@.×ÌÀžf5É �°õ4éX.ÊFñ ³mJgjiGþÖÌbc±Æ…ä2ï›T¨"~iá[M¹Æ â„T-¢F¤âR’ÝŽ—ò†Ë¢Å%+â9Õ°Ô& K_,-\põûÆR*³ß·43&NØšêêvm,ëJ%ZMŸ¢Fvãÿ¬pjÖpèiP?ž—CiFNÎâu ‡NķѸÞ×qlj TqW©[zš›q)¹¬ßãçBê›U9OÇ{£È+†ÊRB›q-'¥dŤ¬\*3+„5/ *£IÂWÖÞEA1Í‹ væQøÏk{‡4qŽÛ€Ûè¼´7·gúf§­ÈfSuÛOõÖÑÞUÖÞ#'íÍÒÚ ƒÜÞõò5©LÚ{Ä­ÐÞR¸UÖÔþ,—õ;£z{*êwyûòä2Z‘\¦9c’WEiS ÍÐ|>–àŒë1ÚÆ”Rû|&VŽëíKz_»d)���pÙø˜^*)¤¡DySþR" I)³´L×Í» ¤QU÷cªúüYÔçÅRD3O¶5PacÃé]��������Ö…~·ÊoÜ e1½¤•-×¶ùQ…²<éìRàF ��¸ò@.× ÌÀž‡ÿCÞétÅ"6õàÉÿóýW�Øb¢�Ę‹_h‹˜F¥IOZê’|“Z– cúºÉQ"(eBŽÈB.¬LÓ¹lL¿âeÆÉ{Â6ð“õT™° ÒR‘MÚÕ¢lg(År“Êe"˜õl&<ÅD³( 5Ée,ªñ²‚ôD’ µ3.ÕÈ·Kî|+ŒÑ³NéE’›žb¹ŒS¾ˆz]’u³\¦iZÚØ*ÝQ&«I[›¦¬cØÎf^I~#Êîr‹CÍÙNɼ.~&Ñ\SËA’€…´p1d4ï Crœ–ßÔ4¯ºyDøZô>‰V=nïéP.sºo%¥E¿‹¶·YM{sBZhïŒ&í=tí”1Û]›N“⬫ÛÕIjÙTOÓË‚ØV›.¤qÒXj»L.[-¹Lå¼(‹¥46Mâñ‘ÕT®t±ä+3���[ƒ‰çAõj—„çpB­Ÿu–:EWÊf†›9x@ca‘ûZU}žîžŠMwÕË0p�������bE¥‰xÓ5—Ãää2†¿{©,Æ f“‰ek}Ãw4��¸2üÌ¿ú_é7õ߉ð“?û3¨ ® ˜kþ:þ£Àöd«úK±uI )O1é)»óª%×øL*´üc&G¹°\וÐʘè%ߟùµ‚¨M÷C2ÇârY?Íe¡LÊ1ó¾ýe›Eª1½jÊÖ‚£¢ŒB\*ÑÙ ÊN:@šú¥åAk’Ö’Å2jrÂÒÏü<§€Mõ=ÍÏV43åBjY—D¸ Ée¤$­SÈDZ#“Ê56e1³íÓ²˜®-£åÉei¾(>i RJ%%ãg“ÀøÓËXŠãíæ—X ;»PÐÒ2‰ÀW9JóO¶7o=‹a<§Ž¥mŸHûZ«dd¾OU«½õñ´rÍÚê>l{‡Å²1õE,ó’šÖ)9¯)‰©ò—O¢&e<FÒ±ÊÛ‘É|º6Šh¤Ç>5¥Tõ¸†X��`K1.Eê9ɫ͟ú E}>ŠýúœÆ ¡r–’ù+²¾~Âiaa”ʲ”e™D³µ3�������\ËøÆž‚dfRZ´~‡Ó3}d&Kbz\T�€+Î=¯|%ýñ{þ/àZ‚��€‹²ž/¬*WÙ8 ÙO¦iZŽÅ«ÉR—1*¬KK:RJ{š”ËT\³q“…#N#ãô©N'–ޤ0‹Lãʦt­P^’R¹BþÏ’ÙhL©„TاæÑûfûÃvPJò1…,¥’e‚SJÏÊæ×ÒŒ,hñ¶ö{MrÙtßK‰Æ²oJ#‹Ée.&—j’Ë´]´4f³½QzŠÛ BZºãͯ’r–¥“¤Ä5Šmı ju»>&u…FíÔÀòËŒ´gUÑ Jö?“qÁT�ôñ³ÑövímW¤¿ùv{O$Ä…íokQ„Ô²²tÔïŽE0S¹LÚÚ6íì|&—Ŷ³ù±§I.ä2—µ]sLØôwÀ°t—äÊÊ7âšm1p-p7"��€õМ+Mû í@Ô|.ã’Ø2˜ab6©õ¡Ä¦©Ïs"Fû˜þ:–©é¢D&�������l„¼ŒeºùW&;ñ»¹ä5ÀÉkõ(‘ ���€‚��€-EKb–¥M⌖^Ô‚yrY«|&5r'<« ù0&.[–»ŠL¥ VVµuÊ‘”TŽJ‘ž––”±$¿V”¸®….š*•.P#yÅ-iòšŒ-á,Èh,fÍL±lº_Q¿Çék$ÉXA.³éµ\dRÉ,•­¼hrY;«¹@AMòV8™Ê·K_ÙL0‹NYHàòÍ6üz½ÍvЍW·ù`ÆÓ¢­'’ÇeG´2KÌèÿ5`¥ Bñ«&íë#>î#‘YeñY®XÜ~Êa²PÖ©ê¶ËñÑ•Ô2ŠmÖ¥ÉeI�#j%—%a,®S“Ë49Í$ÙÏR™äJ“´ —…ô>Ÿµ3Ùõ f���À¥È\:¯FiŒ•1ïDʯ{kr®ª,Kÿõùȳpf’èÍÿXïר°�������`ýèuÙp­ÓL<oZ×W{MGr����®$Ì���l“'<Ù˜.Ë1É·RµÂ{‚ ¤ÉeŒO"ŽOée ­æ/×ELöÊe´”t%Ù¶¼g¡ÈHJk¼l×hÌ©f¦~‘òP!•«‘Æò¯èÞÓ„¤Õ<æiZíì3YÓÊX¢ó² ’ZÆ Z=G3ÓŽ¦úõ$r™Ïö/”Å”k ferÙd{ç)Yíä2Ÿ$¦öDYrY;}+}.)-í^ø õqfY7±¤EÔï’$‚q:§…ñ{ù³â4³ÐÞœhRä(KU˽¼Ö8¸>i&E¾ìó‰Ö´>nïÂ:Ùž:e%©eÝnÌ:eË ;™\F)Y¬Yvs\«\&B£Š±íTR“6)š«-‰Ïµ“ÎÒ±ï,î2��°%hl(wíÂï.ïÏÄó“œï\–²j£PfäœÅ'*ã\k�#ï¯�������X?«•ºdT([M&[mþ‹-����`»`��`ݬu—TJ+lw²ä2-oéÕò™ˆC²˜§ð$ÉeMù%I„Љh6ίiZ!ªIØP᪈5KïDìêu‰–¦žl=44[Ù0]“o6”h…2¦_êõKûDì–÷Y)JÝn±¬ß ie*”õº\®‘¥3/šì_l7ÝÔ ÂÅ¢Ÿ¦i» ¹,l‚ L™ÄgÙ©Ù3•ž|`϶æ5Í2Û“îc“†f¢ÇŠé)/ûÖ¯÷qi™hqÙÖVÚ}8²¡t¦3™a¶zbœÉ²Î¦Û:ùJaÖmÚ-¹9©¬ª§±$˜±pÆå1CJ\LÎ㔸¸Ì\æšÒ•±=’ðgÒæ¦$>Ýʓˢ¸flli=F+SmÚ7_Zë2.��ØyÀ{Ë=‰xÞnìnìÃ90ôŒm÷s¢ýªÕJ¯@0������€1™Z–ÿ¼^¹l­ïb(‘ ���€‚��€MabTK8…Í’›XÚÑAHÓ$ciY@¯•¦å\+¹L“´X¼RùŠQ9J¡(“Ëò5Ó¦lL4cá+H@^RÃÆcK㪠ª²õ¶†W–Ÿª*$£iÙHï'¿ôS*¿hŒéUa=… ©e¼ŽNÇKª f,—õ¹f7o&ºtÿ Mg‹Ö“'j¤.ʓ˚ò‹¾å]ž\Öˆ|é…o–—’Ë(O”‹i`6|²Í¼YiLç·:¿IëçvÐ}ã$3N “6¨§Ah0ôQ23u»×SÖÖUL“ ûlÚÕ2“kæCY/Cñ3¥˜f}Óæeݾ,–•A0ãô2MT ŸML͋۟Ú"µ]8^µå3±Y;gÇ´‡ ¥BõsL‚`”ÓüI‚¤Vj_\]ó·���lŠFn?ŸD}Ëæç?^ŠÎ·ö&Óf!˜������ÀæYo‚“njÝ�øž���€�‚��€MJAZ™T.SñKe'[„Ô&M!K_˜)”%WŽÆã˜ EÈUÆåZÓ–Ë8*Ì’7lJjKnZšßÇ‚Ë^½Ž«ç¯Ÿ÷¶^N%Ifƒ‘•rŽƒ¡Ie4ÇÎÖïµä],7•¥˜Y‘Š|½_>$d‰Üdª~ÏÓT/<²`ƉYƺ(¹)e¢úŤ¢‘ÖB›´/ 4]”Ë2ÙÎ'¬óRzY«­‘OËei¢–ÎÛ8Nq¹*G¹ð\Øj'¢i}K¯r`ØÇN‡¤mfúú‡’™Ëu/-‡ÇAýû(•Ñ´"ù…R•¦ 7AZãÏÌJYHë–AäD8~d¹¬,*‘Ð8㎳éL ‹$6rY*¯ZeXlëR˼æ%4ãqê²¶È“ËJ- KÀ—ö²ÏPv‰BùL^7.ÿ���Ø:šþy+e2ɯ"0›P³:å±z¿êóiYyÊ,�������€K³–`–ßìÓ<'ÿ¶æ¿˜@†3����ìÌ���l®(&†ù(GùXÊ0/Õ(‚”–¹TY,›Z“¦BiØSLŽª&¡t¹*É—rÒm ‰ DTtbéJ‘(,k4v";±üÔíÁ¬ªŒhÞ¡ÄT,+ ~á)JcELÎêÖËæRœ!±,Èe‘Ë|çÈkB5ÉlE#wå©ezÝÀ¦D­ wÙ,Ñkõ䲦|æd©Ë >Q;¹Ì„»å¼ͺÝdÉM2+d´|[Šfq›‹R·Õ‹$ÆÒØpT·Ñ“Íê¶$šc{‹`æU23ñó¦¸Ð ˜q™–åöf±¬Û ©pI.ó+˦¦c#¨©-d®\fš4>Þa—I<ù˜Ö¦id)-;®›”½ô‘Çe‡–”ù$%¯‘*��€M#e1«ð³Y]“ó˜)äõ<­l-Vv`à�������6ÂÅ3†¯Íæß»ôº&’É����°›€`��`ëúòšÖR’.iš¦4¦JN­Ò•”ÍÏ O•k•Åä94©+¦„‡yãü.%o™”NÕN.kÄ5-)r”m„ ÝN cŒ'NÜšêSLëŠR\QHòZÚUM s!ù#ìc}B-I¶¡S†ma *lû„\FZöӮˑŽbB‘É:³Fr™k•Ð\‘\ꄦ6I2šoJnªdÖj(/9¹l›Í«[™'¨¥¤®(S¥mˆs±<)'œ±Œ,•³TþÒ³˜T—l»X†”Ëa–*Ñi"¯ßÉä²v¶ñ¸+²¶SIQ»\.Ú„ym&C[ðëã*Ìß´G”uÙùçç}ÜJ¤áä4ß4š–åÔ¾QÕlsjìK€Á}���«QŸ5ÓO•ç‹Ð5p´‘’+8ï�������Àå³–`¦L^‹Çw0����ìF ˜��Ø4üý·rŽÌØÉ¨¥ºB6KÇJr™i„$M-s“Ée¦å};åŒÉ“©Ê,AÊÅT¯Êû‰r›MIÊ<Ù‹m²hÕ+J©W\ÚÓº´£*>9‰i‹ÛœR¬¬”áLR\&]Q–•R¯ •Àšr•M[4rY“F¦¹eyRŤ83‘\KXf%4U¶#j–ol“ª•¤57Yrs"¹,ß7—¥˜ñ¼6‚*—i!M—–$3Në”a½üÜŠýs“˜ÔÈv&”™ôkGÆ4Ée6ƾ©d'eB³}Ô«*66Ÿw{Ù2¯ŸKÑ,[·9‰v¾]ê5|&-ÓÇr›œžW]”��€Í²¶X–0Ë0�������[Ëv~ÏÂw8����ìÌ���lf†£Šø*’©ÄUÖ¿OJ]!Ê­”‡(H>6ûR,rY,MX9×$oŲ˜œdU˜&¹L%].¡†Ä°˜N•¸,åLE4Šå(YD+ã~hÙȸ-MâU©l’ò2‰†(¥¬ùTâQÓÖlK.“Œ¬$t5ñç+“ËšöP™I—Ý$†åÉe”–×’Ñ|;‰ÌdébA.s«$—5Iga(‰h•Óô9=]®MCÛ.û\ÒrIå¶,AÍ4Évá3tqÿšmÐÄ·t,é~9j¥‹…Ï®IÁãírIkä2mƒ&‰,~&æåä²ñDž•ã.×ü¹ø°“ÍqG™,iM:¶›í ËX0«ägÄÝ����������������v+Ì���\’K•Ìd÷f0tõI¥¢.±€S4Ée6Hc*'©„£r׊Ä)3Qæ²j’ËÚrY^êÒÄ”.ÊÒ¦òr”@¤áTI�‹b’ c…i0› UZfR-&‘Ët^k3‘hBì"Jå9m”ËìD:›k%—5m®%µ´#Åt¶”¼•¥z­•\¦Ë_‘\–UœkRÎ\ײ$µI¹Lçu´–ÒßRdW–Š–ÒÂ|’ËŒÑcƒR[xò­d±$òéñQ4åJõsžL[K©oñç´lß.ý™ï[J9£æ³®´DgK.ËRѤñ(mƒ[‘ˆFA$T¹Ì7ZÅ5)‘9ºt|îD��°[À9 ������������®= ˜�À5Î¥ä±õÌï*Gá&˜ÔMÉe6 DA¼Ò4²v"T“8¥1V1+KÊå2NŽ’e& R•£LZËå2§<A-ѨÙID+T£´-’fªhBHÒͰpß*/©©h"®ér5 Ìç‰hÔÌK!E­°©oD)a, qšê•RÀšöHIgI4[™DfL»4g“0µ8×&d±”ç&¥5ÊÒÅšÄ0S½ô¨‘D±(“K]Y™oDµ\fÛûçšÒ©yj˜µ&‰¹¸æR¹M×J:k’Ëâ1JA>CzYSÚS½˜\f4¹ŒBYV^nÚ¿X>S ©Í¥5–Êâ1Í˗俪Jm9ù·¶0à����������������Ø ˜��¸|RÚ˜¡ÑhLizªË@¶%•¹Ú RI]”Ë_.¤GUá}*¡¶I ³YÒY˨dUÍ+e#°›d±‰$+Êe­f¹)Á*K#óZb’šùSHkZr™î§ó”Éò²˜©¬c&¹¹LÓÆËÓºZ)`>{LU;¹¬ÆyÎù•)g6I]ÔJáj$-Z5é,Iv®Iöj%—íípY2š¦‹Q&ÐåŸÒ_ú Ó¶RslX·9>V;î’ȧËuMbž¶GJCÓÒ¦vä²ìókRíšt½”ÈW5¥:‡Ã1¹qEAè3M„�����������������ì ˜��ØššÄIL%Eò)£¨•ÉD°q))+¼O”š¦¬#‹8*:¹P:E •vʲYvJ°ª\’Ëxv–³RYÑ$¨¹LJ"Z‚Ê$—ñ³ÌU%ͤ²Ÿ"–”‰]1¥+K� Id*¢5i]I.ËÅ+•´ò²Ÿ±ñ’¸æ²e«te&Ú/“áÚId¦•,¦ác›4˦ôÙpùO›}~­RžN¥¿¶X–’Ë\SRç7YJfdÚ¥++Mˤµ æÅ'³$9ž×Ũ³$=6Tr£$tUÎO$—E ,è4Ul<‘°§ÇGú\D$lʽj[ØL‚Ìù\J.Ë¿FÇb¦¯ª´�����������������°Û€`��`UÖS:3‰=,PyGÕx$²Wþ6.IÆ¥Ô“V&d¹‰)“ÉeE+1Œ²²‡<Ä‚˜Î[D¹L·#%Yå)gy"ÙDr™Ë¤5ŠLDKr™oD) ³)],JL”'{Q[r#“ÍßÈe”’½|k;TFkä²Õ’Ë2q­•\ÖÌÓ$—ÅÏ%¶ '§Ù(�F]-m‡Óržf²,fÜ?çÛ)q)¹LÓßxáq;ȯZžS–g'ÒÙbÙT—%¨yjÖÄ.•º\ž\É,-%Œ‘wÔwNK¬æ‰r11±¬•\–-Wŵ”ÎÖÚŽð>–ØÆ£ŠF£!•Æ×S‘}ötÉ¿;�����������������Ø) ˜��X¹pÖüÌé\%•EAeéi8Ñ`8¬§.¥Iȳ¹c´¤£ÊT1ÉŠ ÇÇT*N.W.•Le15LVF3K¦òMÒ””çÌä²”t6)—åÉe™Ô•KA²\c¢¸–IOaÁõþeå 5!+JwºíyZ—˦°¸Ö´‰,<&†¹V9ÊÉ䲸¥+SaÌ(FÙô~]/7OE#jJtªÖH:³lךvTç›ÏÄÇ82£mg9Pä2–ºX¬B IrâR’[’âTÈs¾• f³Ï‘Sâ´<g*sÙJ. ÇSY4åU)[ö8&Œ­L.³©MòÄ7M.KrY1Ybդ㮒„½FÎã÷‡ G£z[ÇÔéÖ²N!K?ÿ\"ƒP����������������¸’@0��pÙ„RƒMõ;õTÒøÂˆ––FTvF"˜5q^Œ”?’o’ËTR!Hå¢"“µTls™`æc4Zž¦Ö”®lä²É‰*Œi’Uœ9 c*—Ñ( REž\FM™óÒeB©ÆVú5©ešì¥—µ“ÉeÔU¾‘ÇL–ÔÚ° ¦m‘—®´¦]3/Gé<µÄ«<UΘIi­Is“ÓšÉey*šÏÒÙÒ¼û瓨Eä²ÏÅL$¹µ·¹)EÊ«Rèòí¨|H KÂÝDùJcÛébzì¥ä2;‘(g³y³$2™7Oس6.»i;–&«¬MxûY¢\V4Ô'¦¢©^—z½Žü-A&����������������ì6 ˜��XW9ÌÕÞ#‰PeI½©>ÍÏöhy™³!‘J2Q§~…+›Ê:JRW,é²ä2IyÒä2Š% YÖ*›°<‰,O¦²1™*Ñ䟧XåÉeæO²QPá$Q‹å¡(Œ1ʶÆ(+颦(ÜÙ,­‹Òv8•ƨ-—¥RºÍ­²‘á™\³YÚZ^:Óµ>?“¥‹Åd6j'³5Ÿ·Êb1ñ­µÍ^ÒŲÛÉoZB3Í“º¤=R¹Ò,m-®ÍÓ¤ô×ijñ2Cò\“&òa.R&ÏMˆy®•¦"ŸO¥9m,mšä2I.kʬåÉeYâZ&—UcK·RJN rY8–òã: UØã¤´áÐÑÒâˆFƒ1Mu í›ëÓTý7ÄKƬ¯Læ$Ó�����������������Û3���k2)ž­ö»µMOMÑÁ}³´xa@KgÆ´´´LÝnnú½BK“•˜¤¼üb˜òä2¶‘Š<qÊ´%¦”\¦¢VVžpµr­d*-¹9!—¹˜L5)µÊWjyǵ’ËlS"ÑhÆ$å…+sa¬ID“²˜®]îÒ˜ö¶hû¬L.£,¹¬IÖJËÕ5Ÿ— ¥,½,l—§LˆÊD-m?“§¢ùvÙOÔdÞ<̘´½mÉš¶6áóhµ³Ë%­Ðî&•òÌ…±&9-èò$7-¹I”mCÕ.Y>‹ü34ñ³nËk*5æå[M”èZr™÷Y—õ4T´<Òh4¬çÓÌT‡ö~ý7ÄK“¢Ø¥~����������������€í‚��€ËFe—~¿KÎÓÂâ»p–†ãeZ\ä$ªŠU–6I>6FS9•nªzÊKF±§HòU–\VµK]6ÉeF„£<1¬ªš²Ša[uþF ’y£Ô¥ÉeiÞ(•ÅÊ”¬I¹L÷MÔR™Ißlw2À¢ eÛ“nsÆ\V2’ZÉe+Kh6)g1C-K.k>§´ÜU“Ë⼦)Yê²ùÉ·“Ëdßt¹”—lÄ´$Ä™‰²˜”%—Å'“—>“v‰É¼ä¦5M²][.£Tê2âŒiä@›Ú™²ä2¿B(l>æY,KÂ^ÜM.ËSób*Z•Rí|J£“ä²±£Á`\ÿ]pÊ߀\ý7ÒíTt`ÿ<<0OSõßÐ妗����������������ÀvÁ ��À†ÈSÌT†étº4;7Gûæ/ÐÌ©óä.Œi<ÒòrAÒÔSAÝŽ©ÊVÄa¬ÊTªb×HÓ¿Tò1º,•˜,bùÃU“ËøŸä%[LJ]”$&•©Râ•ÊF)Q+ˆC¹ðDYRX“rÖé|–t¦B\ÜG«å3™HSº\’Lž�f›”±´ì”\æ›”³´=¡=}ÜIÝ–&1Ìdée&&­QSr3¥‘Q*]™æM"Zhß”Ô5™\f&ËQ6"X~ü¨`V„•L¤œ¹,¬-¢­H#ËRÑ4­IÀkJŠ®ž\fZ t&+¡©Rck;²<»"©®‘õ¹Ñ(”ÅdÁl0‘s ÙÍMwèÀþ9šß7/C“‚d3����������������Àn�‚���a²ü奞Ï_/Š‚¦§gèÀÁ}täüyòt–crÕˆƒB0VeXëv t4‘,ÉWY2•j5.K"Óô¨0/eÉeF÷ÖH.3í¤3M"Ó²‡™0–„®¢‘ËÈdb’×R—>ä…™¶„Ö$¨5‰hM MNߢ íš\Ö¤‘å’¤RùÊÖg¢)]šâ6Y’’VI.‹óæ¥.½J]”%—Q–\–§¾5󪼖—Älä¨,ÉM’êt+šr”Z^2}†ò¹h¹Ò¬=l#!6ébMéʰ>.7–ÐŒí!Û,Éenä²l»c[ð|2LØÓD´r"¹,¥Ú©¤âÚd›X. ¹,昆Ãq}LŒêmÓlÏБƒ³ò7ÓïOËßÐ¥„²µ^‡ˆ����������������ØN ˜��Ø0“Ò™™ÇÒüÜ,]wä ¹ª¢§—h0^¦ñˆh`}ƒTÊš,ÈFNE¦IƒŠRÙhÜ”&ÌË/–E×Kå 'JR-uiÍç’T^r3+“8)'¹F.#ß”¯”y‹ÕJRf’Q+ùJ“½ˆÚ‚Y*t™I]¹¼ÖJ#JÛ¡û¨B\ÒÀ²µ4\u#eó¹XâqBFK‰g1ÍgrYžÖ• f­¶ˆe&UêŠ!t±½m{;\#wé~ÊÛƒRâ/N—ë²²›6 f©Ý²cŠKUº\ü£&Î$ÙNåCפ—Åã£SZ)ùZV™à"jK†rüzŽÆ4 ê¿…åú•Mu‰š§ë¯;@³33Ôéthµ¿1�����������������Ø @0��pIÖ“bƯ÷zStäº#õï–*÷$=·@#tÆ,Û”"±0d“Dž±Hd®~ôñщ˜ÃkíõQ“¨eˆ²¬¬V)È4/Q+a,ÌþQa,Ì„#]~ŽÎ—Íšö=%e ÷i%ù²WÙ¯¾µÍ*wé:šùWÿ&—»bù“ó·nbÿ&÷’Vns”¿&7GE4¢|½«¥®5Û½r{3).ß³¢™›mYÑÖ«}Þ1%η³ "fÍ‘}&ùv°ÜÆ‚—|ítl#›•6&›ùÙd¥]½$ÙUäªe²~™zGæ§èú뮣C‡Õ3ýUÛáRí�����������������;3���‰K‰d›—/Ë’ffæ‚46Špsna@£j@ã!Ñ2ê÷tÉwJ*:‘·©ÄáhÄå+™†#'¥‡,˜Õ¿kò¸|<APÚ,œVÆbY·tÔÔeɬ>Ž;õñÙíHÎZýwÀ1q®>þùXIzY5õCêu‰öÍÍБÃéСõßÊlJõËÙˆLñ ����������������°Ý@0��°.Ö+Ÿñ|SSÓtÝ 7P¯~ìŸ:IçÎ.ÐÒÒ-/’q=¢ªOß#cËz™&&D9àêDÓܪXÚ³¢á`™FÃz ¤€æüt—æç÷ÑáCiß¾}ò7²^9 ����������������àJÁ ��@‹Í¦˜ñïN‡Êr^ÍÊÂR¿Û¥³çÏÒòò<…rÃåQý³¥Ê›úwÊcJYÌJ~÷•#S?ZïVÖa-¸yl}¬šÊ’¯sg,½%ã ¢ª>îdžÆÖKjÕǬóõ±^v-MMõi~~žöïßOûê©ßŸJÒÒË�����������������»f���ÖÍjòÙZ’?öz}:pð 6ûì§ é —i8Òp<&ïX(#òÕ˜ Ëi¦>9žò…·ÌC»C¶>.MýµTÿlȸúxÕ“+êã•ÈÕNIÓ½õºÓ4==[Oü8E½~¿~­»!¹ ����������������àJÁ ��À .–b¶^ÉŒ)Š¢ž¦¨ÛíÑôxD3ÓÓt¡ž–——h0X¦ñhLãjLŽ%3·ñ™Éf`¸©ËZ[O•EIe§¹’Ë`±lŠÊ²#ó¬µüÊeÏ�����������������;3���f=’Yþ?Š`3m©ÓíQ5ž©ŒgW±,/ËÀÕ€¡FòRá‹%2þ‘e³‚KÄÖÿ¼VjÙFž����������������€+3���«r±³µ^_ë9}žåÍZl … â¸ä"Ù¥g6k<½þç/%—A>����������������ì$Ì���l)k‰ik k¹,s ÙlC¢�;Åe aÅ�����������������WÌ���¬ÉzR̘ÕRË.öüj¯ÅV>ç‘Zvë”Â.&mF8ƒ”��`+án–­Ï-£ñ˜FÃu{]*ŠB_¥ á›wðMš<+ç®Õeâ›V]VìKf¯‡~©[û\è›ç¹ûââ"MMMQÙ)Òs8�����������ÀåÁ ��ÀE¹”dv±yÖÍ.õÚÄŒÀÕÂåˆe—zm#ó����—BË–WUEåúÓ?ý3zøá‡i<Óôô4½èE/¢·¼å-täºÃ¤¿‡ÏCûØÇèþûï_cÁ¶õ+Ï×]wÑw~çw®1?Ï´V?ÐÐ׿þuúÀ>@ "‡17Üpý£ýG«,ËÈ{ž|òIú“?ùzðÁå}¼?ÏþóèÍ?øfºå–› ������������ÀåÁ ��À%ÙŒd¦¯1Ír<RËÀU€Ù‚4³õ.r��€­„ûZï{ßûè·~ë§å¥Aëµx€ÞýîwÓÏÿüÏÓ=÷¼ŒŠ²Hç¡Ï~ö³ô®w½k…¶3–Â8 íÞ{ïÝðyl0ÈöýçÿüŸi4Érxy/ü–¬*˜9ïè¯>ú1zÛÛÞ&¢ïŸJqŸùÌgèOÿô¿Ñ¯þÚ¯ÐK_úRêõz������������`cX���ÖÁVH0üúz—s± €`³Çázæƒ\��àJðÞ÷¾—~ã7~ƒ–—ä÷[n¹…žÿüçÓ¡C‡ä¼sòäIúíßþmúâCµÞlj`\u:tø¼¿ÓéˆÜÅRŸÂÂù0g<ò}⟠Ç{Œ.V‚ó+_ù ½ç=ïYlffFžãÔµÕ«©{ºï¾ûè·~ë·h8Ês×_=}Ë·| ½á¨¬qñý¿þå¿¢ü>ÜÈ�������������—Ì���¬›õ&™1›/f.g حlUªÙFç���Ö —ž|Ç;Þ!2Ÿg8aìGôGéÀýôè£ÒoþæoѱcÇèk_ûýñýzá ^˜JY¾æ5¯mu,:yJD/M»ýö;b_ÏÐO<A¿üË¿LßüÆ7èÖg<ƒ~õW•®»þpz·ö3———é?ý§ÿ$’ÛÜÜœ”ëä$³ðzS®S9}ú4½çÝï¦S§N‰„vÇwÐOüÄOÐ3êu|£^¿÷“Ÿü¤ì/ïÏwÞI7Ýt]Lp������������Ђ��€ ±ÉLçcÖ+¤å Y\ \Žüµ‘÷@.��°|øÃy‹9zô(ýÓúOéyÏ»ƒÆcG7½‘ÎþOçDþr•£|ä#tìØÿL×_Hf,mÝzë­«.×¥ßùÿS1>‡ñ¼,¤éùìsŸû}ùË_–$³/~ñ‹ôÐC_¤ë®ÿV,çÿðéÓŸþ´üüƒo~3½à/qLû‡œŒÆðr–Èþöþûåw.ùÃ?üÃôŠW¼BÖ{ã7ÒÒÒ}õ«_•}~øá‡é ~±ÞÏ›È Ï������������Ö .©��Ø0•d6*Ê\ª4!Êe‚íb»Ž½¾Ç6��€­$Z$ò×—¿ü• gÕ¿Ë‹¾…nºéFª*_ÏSŸ« K¯{Ýk¥,¥óN’È>ò‘¿ r×*þ~¾úú׿AôGT/« ìù_þÔé”±L&ÑÏ»SJhöû}ºîºëè¹Ï}nkY¼ÐþôOÿT–ÁIcoü¾ï£n·+¯IÙÍz?F£1y×ļø Cy·ûÛ¿ýÛ[Ûõ¢½HËB©ÌE)¿YUc������������°~`��à²Xo’Y>¿²• eqÀnårMÓ���¶¶øürêä:yâTݳ"}ÝtãM4=3EÆËÔÿëö:tç·Óý÷²~ÎÑ|’~äG~¸^Š[³·¼< ßýÝߥ .Èz^õªWÑ‹_ò"I ãe0Ï|æ­ôKoÿEIcyìè7¤þ$OüÞ?ù“?‘R—,¡}ï÷~/ÝrË-ôä“OÊûÃù‘¨a[¾ð…‡D~c‰îÙÏ~¶Hf¡¤g(͹oß>:|øpJA{üñÇe{g;Ó������������`}@0��pÙ¬· æZïSPì6+†A,��°­ÔÝ-.É)fLY–4¿o_:ÿ°€ÅÉfüÈ¥3ùià%ò™YyƒÊaŸùôgèþûï—ç8¥ìû²ä1…ßûÒ—¾”îºë®ô^–ÅXk³ÆÒç>û }ìc÷Q5vôâ½€¾ç{¾'•ü,¤éòn¾ùfIbó1n·™÷çÈ‘#i[Î;'Â������������€õÁ ��À¦¹\Ñlòý«ù ì&¶CƒX��`'`éjy°LƒÁ ”›, êt:òšž‹´¤sj*öÁL¸d«ôË8yìýx??^Þû’—¼„^üâ'aM—Ë?ëòUdóŽå2#ÒÛ;ßùN:yâ¤l×OÿôOKòØzúgΜIÛÆÉg*ÆåLOO·¶—K������������X?Ì���l›Í.¶L�ö8¶��ìzÎéu{’,ÆpŠ—‹¥3™Rä¯áp(’¿´ÿþÖr&Ì|ð ô·s?F#𛛣7¾ñ4;;³b¾ýĸ|þý½ï}/=ðÀ’ªö£?ú£ôœç<'Éi“ûÃie\S·‹Å±ªòRš3‡¥:ejjJä6�������������ë‚��€-g;D3�ö Ë���ì4*`qÂW¯×“Ÿ«ÊÑ™³gSšXÎÓOy‹_Óò’|úÒ2…ÿã?þ#:[/‡Ÿ¿çž{èî»ïŽ b+û?þ8=öØctÇwБÃGê÷ôÈ#ÐïþîïÊë·Þz+Ý{ï½­Ô4M(ãuqÒÙ7¾ñ ÙƒJ?ê>r9ÏÕÈËh²Á ������������63���ÛF>� Ù \Ë@*��p¥á¾Ø¤ôdH*«èĉ"m±tÅðóœlö•¯<\¿îEĺãŽ;C9KZ™(ö—ù—ô·ûw"±¸ö/þÅ¿H iù|¼î§Ÿ~šþå¿ü—"{±´öÿã¤ûÒ—¾ô%‘Èx–Ç~îç~®%€-..Ê#?÷è£ÒOþäOŠ Æe4oºé&zîsŸKŸøÄ'd=_ýêW%ŬÓm.upI̧žz*õEo¹å–z{������������`ýà¶]���;úå�{ï���v|>âä¯g?ûÙéÜôùÏ}žŽ=uœ _ð–\Eô÷÷@ýÜÓÄ d,u½þõßMâ{EAË»úÜF;»@ÿïÿýßÓh8’ùÞúÖ·ÒÑ£GW=ïñsŸüä'%½ìܹsôµ¯}>õÀ§Dbc¡'À¸4çñãÇ騱ci:þ|Z&ËcüzÒœ¼ç®»î¢¢(dY§N¦¿ÿû¿¯·QÖZ?zú¾ ËÑ·ç<÷945Ý%�������������ë f���®kI7H:WÇ���\ „—†Š‚軾ë»è=ïy”µäD°w½ë]ôOþÉ?‘d3N�ûßùXV¿çe/{=ç9·‰¼Åÿ idAôú¯ÿõ¿JÏ{óÍ7Ñ÷ÿ÷S·Û‘yÉ4ý¹–æêå<‡®¿þz‘½n¼ñFº­^.Ã?¿öµ¯]óœúÄOпøE^ÍÏÏKΛo¾™¦§§¥Œç3žñ zá _HŸùÌgi0Ðÿñ¡Ã‡Ëó\2ó¿ý·ÿ&Roç3ŸùLzþóŸG�������������63���» ;�����[Hüu7‹ËKþðÿ0½ãïä0–͸L%—Édùëë_ÿºÌÏ’ÖüȈP6Y“Å´¿ø‹¿ev:zík_'¢X˜×svXk½Ü¿ãä´_üÅ_”uÜzë­tóÍ·Èë/~ñ‹éöÛoO¥4'yÿûßO=ô¼Æëà2›eYJ)Nžýºë®£7¾ñõ6}M¤9N0û¥_z»l?ÿþÕ¯>"‚/ÿ ßû=ôŒgÜš¶ ������������Àú€`��������\°TÕéú±û1Z\\¤w¾ó4èÁlÍÇé`ÿìŸý3zÅ+^¤±LÈbYë¾ûî“´3N»é¦›è;¿ó;©×ë­Är‰‹ç}ÉK^"ïgAŒy~þynn.½wr¼\…KaÎÎΦßy^~î{¿÷{E\ûýßÿýz†ôÈ#ÈdCmOÙŽþ?ý3ú¡ú¡ø������������€�Á ��������¸`!«ª'[úñÿqºí¶Û$!ìôéÓ4Eæ:zô(½õ­o¥»îº«~GAõ;ZËXXX §Ÿ~Zd1·¸ŒæsŸû\]CýÜêåÎU6k ^Æñ é½a>þ±™‡“Èî¾ûnÙög=ëYYÒ™Io- Èþ©”¿|÷»ßMO<ñ¤”Ëœšš¢ëo¸žÞøÆï¥ïøŽÿ!mJ²�����������ÀÆXoM³Î×Ì:Í¿ëd³GŠø\11ñkóü8Žþš®R&/nóïùÄeKøq<ÓÒÒ"9WôŽ������ a5i$Nû×ñ—ð@M¿›•òù$a©žœwò³Luß|\¥.?×}tYxzÃë¾5-€Ý‹\IâZZZÁŒ9ìàÁƒ±ü$—Ôä¿×.'ß7Yf’v~¼"µLçÍÿ×*‡Ùü}®ž26¹¾ô>ªDlãïʣјN?A‹‹K’Ävààššê§u®µn���������lþžÍ_ÿßûßÿ†z½>õû}I+·E!©ã²C¦ž¯¶ùõw&”×xR• ~÷ÏoZ›¼‘o�àêÁ ž¬ÿ¦M}ÝnZþ›ÁÃüߌôß8å\ÍçÝnç•õœ‹ÕÄäã£Ë&Ÿ=NN´Æï{œüy’K^4E‚��������pͯpzX}Ávjº_OG'æp"—Él“nŒ‹Ï·—çiåEŸµ„˵¯ô~ã/¾íq}íe†õ³wãM7ÒZë„\������������‚��������pM²YÙj½7¿mÅ������������`§°�����������������������¬3�����������������������«Á ����������������������Àª@0����������������������°*Ì�����������������������¬JI����������Þûô³1†��������\yòïgù÷6����€í‚���������ZXÏuÀâR:?�������€6[!‚­v?B2���ÀNÁ ���������-&).•b†A �������Xý¾”¯Úˆv±ù ™���`§€`��������€uq© ��������«“‹fë‘Ât¾ÉïZ«=����°Ý@0��������@ çœ ZTUEãñXù÷µA0¸�������«£BXQT–¥LÖÚM%EC2���ÀNÁ ���������2@á¼£ªr4X^ªŸ1Äã:¦ÁƒÖb��������6‚~§r®¢Á€§|ÿšžžéŒe³-ϯ™n����°]@0��������ö0¦ÌðiÌ1þÝÔ?Õƒq¤cTÿ<Z^¦Ñh@®ž¹ß뤻ëù‘-t�������°~4‰Œ“¢yF’½\cºÝ.u:”j6™\–—ÖÌŸ[o©M����€­�‚��������pÍàÅ1ãG~©ly¸Ì£ÔéMÑT¯OE±R(ÃÀ�������\Z"Soäa8=ziiY͆Ã!õz=ê÷û­÷á{����v Ì��������€kGëAŒÁò*ëAŽþܕݫÍëœ<"Á �������6N^ÎR“ÇX6›››¡á°G táÂùîÅ’Y~ÃO.™á;����®+ê ��������€«Œü«?×ǬÈ//Òòÿï=4|øê”]šÛO½NŠ5nŽçR-<�������Ø<¹(Öí–4??'e29ÍŒKgŽÇãÖ>Ë����p¥ÁÕa��������àš!”È~ø>¾ûƒÔµ–fæçåÎy©˜‰1 �������ØRÖÄø)N'ã©, šŸŸ¥^¯C£Ñ°žFTUUJ/[«T&Ä3����ìÌ��������€k‚0 á¾ú-þÆÿI~8¤Þ¾y*¬%g¼¾Lž��������ì*‰ñ?ÓÓÓòÈ f*˜årÙj¢$3����ìÌ��������€=Œã»âÉwžªá2ÿÍwPuö uöÏSÑ›’yØ/Óô²-šðëxm£V›Ï&�������¸J™”ÃT2c‘Œ%3~äy¬]}HwR@����Ø. ˜��������{ž0è0üÀ_ÑðÓ’±%™ÙY¢²¤mÇè¬â„™ø„γÎotòpÌ�������{ .—ÙëõD0ãR™Î9™�����®$Ì��������€=Œ7Nd,wö, ?|™áH~7Ó}2rûïv‹7ÙÔ"{b½¥]LöŠÁ�������öü½¨ßïÉ#Kf,—!¥ ����Wf��������À^¦ª#ÆU_þ*¿ð z–#šé•m;™¶êHŒ5[oi—& Mÿ�������{þZTVRÌ4½ ‚����®4Ì��������€=Žñ,˜=JîÄI²õÀ„­Ç&l·Ë£áu³s9`«–É4aÖÜß”ÏÔ4[ÿk‘`������Øcð×"þú3Á ����»f��������ÀFÊc.-Ñøó_"c ª‡'‚ÌÕïîL‚Ykc|3m”à�������àJRÌ •õw6.“ÉTUE�����W f��������ÀEîrgÃl0¢êëß “g‡õúõU½, )e«ÊbY´™ŸœÌ*Ég+ž�������€½~Uëv»"–ñw;žf���€+EI���������Ø“„ACTÕƒ'N§R+‹^õ¨Å•œp™f¼nN#­+« f������€=ÎäÍ9üý éÎ����¸@0��������ö2.Þé~~aÕómœHB[ó”Í1ó®cs&•8 ¯�������þÿìÝ`eúðgfwÓ:„Þ»‚A;ÖÃS,ØÎzzöö·žžõlg?<{Wì]DT,4QšˆôÞ;¤'[æ?ï·ûm&›m I áùÝ Û¦í$Èì~ϼoCã¬þÌ`ín ˜5h–*[føýž­‹±  mǨð$*¤ÂœUÔ ÆÅˆˆˆˆˆˆÂt{L"""¢Ý‰3"""""""ª•+âˆõ‡Ÿ··£ìɬ°Ý@ÌÁ½F¥­0”FDDDDD þ¨Ä€ín ˜QípŒRHͨ.3ìA—<ïó2,J Õ­T]S·àܲ\Àm.†ÇË岿հï»=0\Qí`ÀŒˆˆˆˆˆˆ¨ BUÁBW½Ç»ú½6*™Y)S…Æt¸ÌÞ†Ï«Ì «Äž¼ö} ø|Àc¿ì?ÊB¯•÷OkHI•– #Å Ãã±·a»‚"¸IûGTH‹±òÐ<Î#úhDDDDDDDDDD ˜5xÁ€YdËJÔU}LE·0ýö¶‹Šá-)„á³`ìÉÞ/K2ÑÈI³ÒR˜ee˜&– 3+CU5 †Ì¬ò™ÜSUÔä9#rADDDDDõ›ób™Ú¸pfwkˆï‰ˆˆˆê̈ˆˆˆˆˆˆ¨ÆéX8\f`—Á»3Oµ½t…^7%$¦[g¨ròͰ×%Ë™ö6üE%ð—”Á•™Ø“eºÔú ]ÎL2fРL‚q™ê Û”––ª÷šš|?öý-[¶`ãÆÈÉÉA»ví`J®SM~aáÂEX¿~= :-[¶QM²šåü;2|%ÏËÅ6rž.“×ëU“<'äÜ\Ÿ¿Ë”’’¢¦hë""""ÚÛ1`FDDDDDDD5N¬¤6™éó#_q L+XMMBa–—É2(Tªj¦¬@¦–··gùó a—ÂÈÎ�ÒRBm3ƒ6à ¶Ð ÷ÐŒÜoT RÝsÏ=*PõÐC¡yóæê|ýõ×xæ™g0bÄüë_ÿBCçóùðñGŸà™ÿþ×¾ïEvv6š4iŒ-ZpŽˆˆˆˆj”>¿tžgÊg$“‹JJJ²Húùââb5ɲ.—K…ÍÒÒÒÔäv»ÃŸm"·KDDD´7aÀŒˆˆˆˆˆˆˆj…*HVZ_^!ŒR¯ýØ æºT¿N©äª8€ê»`×Ѓ<FèqYŒÒ’3FFº”'P­1¡…jzPHœ$\¶råJ²Š|mo„Z½z ÞÿCø¼~\|É%èÕ«'zöìÎA8""""ªU:XVXX¨ÂbrN®.xIp.®çÑü~8˜&a³ŒŒ uÑ„Ü'"""Ú›1`FDDµjíêÕ8çÔSQn·™ö‡øL´j‹N;£K÷n8èàƒ‘Ûº ˆˆˆˆhÏ⼑j�{`…0¼~ø!m1¥à˜€iBâefh^ ¨0¨S’6²~]É, ³Ê¼l÷Ãå·gÌNGÀ0+Ù¢8E$Þ’ ˆé<BÏïlº7X·vòòòѤIœwîÙp{ÜI ì%+Ú¹e~~> ÂÁ2]uLn¥í¥T#óx<꾋Éë2YY™j¡)·0Óç¯XËËËS³F!33DDDD{+̈ˆh%-uòvîTÓ†õë0gæÌðk»vÁq'ŸŒÿ2é """¢Ý+2 æ·hPTS‚f¦—?4È]q Á–˜ªš™Qý*f*\¦îÀo¯KÕ)“'*ͦª–ù ƒ¡³¬L{_äi3¼=çÀÓ® nÏy(L ÓÙ“sK**È`• peD9—•š×ë³—3Ô<‘|>¿ø’1·ÛU¾L™.·[='Û‘ª eösÒÖ'##½Ò{ dЬLí³'Åc¯3`žªý•Á3çü¥¥2èV¢Þ›´ JMM©´>”+²ß›ì[³fMáµ÷S¦à¼ßCQQ±Ú¶¼‡ôôô¨!ÊìmÊ¡”c Ç¢¤¸¥ez™4V‘ """ÚK9Ïá% ¶ÓþþXB`r*ç²ò¼œCÊy¦Lrþ‹Ì/á3!çÔrN+çÑúœ]Èí¶mÛÔmVV–:¿&"""ÚÛ𠈈ˆê¥åK—aÌãOàõ_ÂYçž‹3Î9×Lã�Ñna9*vI«´ f^=l)ÕÊtˆL3U»J+ØÒ¡p™ F!³Xñ/3¼Vxg¡ô˜jÉiX0-û^Aq°ÒYVºz-Ô¬3¸m+r#ãnI‡Ï,—s ½¹°uëVüüó$Ì›7OUB*ûî»/† fßÏ ogÙ²øâó¯Ð£g7üˆŠ›°wmêÔ_ðÛ¯3qÐA0dè`ÞZ¾|%>ùø3ì¿ÿþöÔS§MÅœ9¿cÇŽ*,Ö¯_?rÈ4oÞ<¼ž-[¶âý÷?@Zj:?âP{½Ó0wî\´mÛçŸrr²íÁµ2LŸ>³fÍR-@eЭeË–èÓ§;ìPÓ‡ç¹ç^°÷c…Œ“÷úì˜ÿ©ƒ;zôh´jÕRmsӦ͘6mŠ} æ«}“Á¼N:aȃѭ[w¸\fhÿ,¼óÎ{ÈÏ/À1ǃ͛7aòä)ö>oQƒ„;µÇ‘GŽ;€ˆˆˆˆö:X&“„Á$\&0M_Ä!“ÜOTMWfÎû:”&çÐZ“IBlr,UÒ$dÖ¸qãpÈŒUz‰ˆˆhoÁ€Õkö‡úÆŒÁ÷&à¶»ïA—n]ADDDDuË ²,¹¼¾y°ü><2¬X˨cP,+´+f¾ Uo i©ö™°Áºb† _Q1<.FF:*”ÔŠªÉA"KÞŸ;òñÒ‹¯à«q_!;;[ rIküøoðÛ¯³pÕÕÿ@Ó¦MÔ ÖÚµkñþûïãÈ#ÇqǨ´«sÿï¾û®ªâ%3ì’ð×;#ÂÂBüðÃ÷˜2uŠªÔ ^6lÀ·ß~‹Y³fâꫯVÕÅäøìر}ø1ÒÒR±zÍJ|ÿý÷jÀLBo2XdaŒ}®=~üx5p×¢E U5lÒ¤I7n~þùgÜpÃõhÞ¼™Ú·o¾ùÆÞ~°ÒƒÌ/ËÉõÄODnnK¬\¹ Ï<ó_L›6MÍ/ë“ùd9Ù¶ìÛÀÔkRMmܸ¯Õ¾Kí—_~Që•ÂM›6Ùƒ|eöûüwÝu'ºví""""Ú;è@—œ¯JU1ik)ä<:''GU“6˜Îù#«-'CÖ¡Ãj,“I*¤IàLο›5kÆJfDDD´W1ADDÔ�,]¼W]|~ VQݱBUÈ,{ ÅÊ/‚Uê…á·€9f ¼µ¦T3ó›5|õ¿½:iŰԆ`úüä�e>«Ò¼UvJ~G¦OÿSísÕGyŸ}ö)>ýô<öØcp™°’0• T)ºÂ‚#ëf?)ƒ[ÁJ ÁA3Ý h„ øyÒ$ÜqÇíøòËÏñÅŸáí·ßF“&M0î«ñöôuhåUÚ¤ªØœ9spë­·â§Ÿ~ÂsÏýOU:ûðÃÔ²ReìÑGµ÷ùS|üñ‡xþùçÕàÝĉñÆoª–B¶uçÿT¯uîÜ _ý• ¢õèÑMU•ji²þž={ª�ÝG}€ñã¿Æ%—\‚¥K—âé§ŸV­Ad O‚j§Ÿ~:¾üê3|ôñ{xíõWе[7,\¸ï½÷¾ £UgЈˆˆˆê'©(&HÈLW3“‹8äœ×.ñª—%"ËÉúd½rŽë ·Éöõù»®’FDDDÔ1`FDD †\=vëõ×aÚ¤É """¢ºc¨f”Å¥—À4C­'g Ç€ „^¶ìù¥e¦+ --á) b:üU¥q¡`Õ2Ó0Ca- .YO™Vq™=*åVL«£ i]~ù媅¥ìŽ£AƒáÞ{ïUû÷Ãİyóæàž‡Éb „É@–ÊÌP OWeÐA3©ê5|øaáù»wï¾M›6ÅØ±ï©±` êeffãüóÏDZÇÇ¥žßºuÞ|óMÕH`C‡ é$ÛØgŸ>¸ï¾ûÔ`ÛÔ©S±dÉ’èoZ½ÏàÝ5kÖª ]·nÝ0fÌUE3áv»0zôY9r$,X *™ßvðç"ûyÔÑGáÔÓþnŸÙ¥Kg\ð·óUÈnÕªUªÂ™Z‚ƒzDDDD Nä9ž„˶o߮΅œ/Êy®´­Œ\nWÂeN² Y¿´¸×ëÓû!çæl“IDDD{̈ˆ¨AñÛ…÷Þq;–-Y """"ªj8EªƒU)&-,-UúÌRý2eè(PR†²9óQòÙ·(~ù]=ûŠŸÅï}ÒŸ§Ã·a#>¯ZNæ)²* †®‚Û³d;¥^d øÃ•ÂÂËD[O —:tlP¡0½>ð0dÈ ôîÝK…´¤ÅO¢mY1Þ´™õéÓûîÓ·Âüò;uê€~ýûcƒ}üæÍ›_¡‚YvvúöíSa`lÞ¼y(((P­† ¦æuîZŸ>½qÐAaÍš5X½zu¢buøóÏù*6bÄÕjÈ ¸“IZ}pÀþ*̦Új†ßT›Ï}úöU­‰Gûöë§îIKPÙOê5|æ’s¿ââbuþ'íÛ%ô%m1…>'ÔÁ²ê¶ÇŒF>SH•4©d&÷e½rÁ³ìOMÙˆˆˆˆödlNDD{„6íÚU,_nî—/ òòv¢Øþ ^òÁþîÛnÅKo¿·Û""""ª]ÒÆ,(AÀçƒ=ÔSZ8Ê Kœed�FÚbºì¹$ø%UÅŠ¿žÒÏ>°ï—�%e°Ê¼2Ф’F¦=x„̬ ¸Üiçž³iSU…,+TQ `ÛIª ^?öºÍTûkY/¢d¶Bù«šj›‹&M;ž¬`øËº÷è†ßçÎÁÎ;“X“µ’›®œÐ¾}{¤Wceff¡uë6ê¬X±°_°·©ýó¸SBÕ‚‡[òx[·nQUÚ´ic¿–ªé[™öÝw_ÕòRª…Û{Æ Û”cùÑGaòäIß‘½N©þ çÿ+V,…Õ‚ƒn·¹¹­œïTUÆËÊÊ ¿ïòv¡Ô#"""jHô¹¸>×+++S-Ôõc –eDœûFž¿×ä9¢Ú$`&çÉr¡ƒœ‹æåå©jÅrÏG‰ˆˆ¨!cÀŒˆˆö¯Œ[1`æ°eÓ&Ì™5 ¿™€©ö`T¢Á+±ÊÀzó•Wñ·K.Õ =^ã;1|%ð°à7¿}¾æ ]ÕppYF¸E„ÊTE±€ŠÁgyá»�ů¼ßÂeø‚UÅLì8 BM~Øÿ‡U䃿¸¥_ÿˆâ‰S‘vÖÉH?þH¸³3Jƒ•ï“ú#XMWëRá(u[ ³¨ fŠöHš¹ÒPP艚$’J\±Ö•‘ Ké +BóÑÃm*·ÏÔÕäœÚeV.X/ƒa©¡óm©²±BýG¸¥eII‰8“êbÑ2vòœTp .»P~AA¡½ E…¥X¿n“cÛ¡� ý;“››k§4ýöÃÛ­´^½¿–œÀ<"""¢†ÊyÞ+a.}qœ÷JÜhUËj“œ›JÈLŸ/Ëy¬„Þ¤Mg$^ADDD fDD´ÇkÞ²%Ž<öX5Iëˇï½ ç/H¸ÜØ×_Ç)£F¡QãÆ """¢Z"Á±/Œ€Už=s ¢˜þPÅ­PE3W¨Å£eÚó£tâT¿ó[¶©`‘Ëå†Ù´1\íÛ�MràÊÈ@ ¬ ((F`ÝFøìÉ(µÛÏ•¼ý¬åkqÖÉpui µ‰évœ¥0³ÓÃU¹j“´¿ôùüp»]žø­ê½›h:o ‡ñäŲ¯R¹!ÖERÍëõ"5-U=Öï«Ô>fyùyê~Ó¦M¬„VÞo3òýË ™Taضm»½Í€Ú?'™íÚµj?%h&­?ãCÙ¦¼~ÕUWâðÃsuåí:­PPDDDDD>WH K·Æ”W“&MÔùj´yk›„ÛäÜ]·¸—jfRI-==½Ò¼ ™QCÁ€Õ+]ºuÅÏ=;n¼3¦O;oii)>ûèCœ{áE¨ªü¼<L›<sfÌIJ¥K°aÃÙ_ø|^¤gd¢q£ÆèÔ¹º÷î…!ÃE·=PS/\„_§MÁ‚?çcÍêUغy Š‹Šá÷û’šŠœì´lÝ ]»uǾûí‡AC† +T=bW`ê¤Iø}Öl,[²7nTÇÁç-CZZºj«Ô´y3tïÙ ½úôÆÃµ¿Hi‚š°lÉL7sgÏÆêU«Ô—2rbó-pÀ€8jıèÙ§Ox~i›züðáq×)mWßúè#T… ÔÊ>ÈqX¼p¡½/+Q_ q%¨(_\µnÛÂAŒÜÖm@DD´7S± _�(*…i…¢Já<™…@(T¦* @ò_ü"’ööyUñÇãQúÞW°¼Þ`«ÊŒt¤Ï ýa¶j³QV°Â˜Ï¯Â`Ö†-ð-_‰Ò/¾‡é*{9¼“~CQ^>2o»Âž?G탙0d¬ŒfØÛ•m² qª%7mR¬Ž;TØÙÕ™3g¢yóæªM¥pÛÇBZCnÙ²¥ÒzdPMdE³hÑ"äÛçuYÙYž—ÖóË–-SÃú÷ßÁ7¬§@8°¦WÛ¡CÕêG΃׮]‡vö¹•“ßÀÔ©SÕ>·n›pЬOïÞêvñâÅ8ñ¤¡gËËáI�®°°H fd¤ƒˆˆˆˆÈiÇŽá°–|o(a®ÝÜ’@™œ›Ë$UÕäûL©Zl†*9GVV#"""ªï0#"¢zGºîzà\töhlÞ¸)~øιà¤?į^¹o½ú*¾?~Ÿ/ê<yyj’ðפŸ~Â+Ï=Î]»`ôùÃÇ·5P,2@7î³OñÞÛo«}ˆ¥ÄþÂB¦M›6â9¿ÛïïC{ðу#Ž=ç^pÚu耪Z»z5Þ|å|ûõx ‹F¾ ‘I¶»àÏ?ñùÇöðCâ Áão_‚}z£:dÛcžxS~þ¹Òky;wªIÂgŒ}‡qn¸õVä„^k’¼ï/>ùï¼úšzÑl³xeZjŠNúáõÜÀÁƒqáe—¡—#üFDD´WЧVRiËëSS0H@ éÙtÐLæ— š´É”Êe¥ƒ@Q `pwn‡¬;®€»un,¨B—ÖìódË”W·ŽH=t0 Ÿy eßM†UZ†²Àú÷³Èþ×50ísÅP_ÌÄo!àWÛw5ò ¶­X±'~sÎ9G…ÇôÑyáùTˆëÐCQ!3‘••¥*ˆÍ™3íóÝV­Z†×³lÙrÌš5;æv$DöÙgŸãï¯Ø*~úô_1gölôêÕíÛË9££šj%dV8d}ûöU-+çÏŸO?ý —]v©Úo}ZýÙgŸ©0ÛþûïN:–/ÎŒU<þ]»uµ·Ûü1Î<ët´nÝ*t ðzýxóÍ·ðòË/ãûœöâ‹/t¬ˆˆˆˆˆövrñ§\L,ßñJëw© »»\:è&3ù>X*¬IÐÌùݰncODDDÔ0`FDDõR¶=àvÑe—ãÁ»ïŽ;ßÖÍ›±xþ‚„(¿ÏÔzåe¼ñÊ+1ƒeñ,_º ÷ßy'>ýðÜüÏ;«ôZ³jî¾í6,±èªCÂQß|ù%¾ÿ .¸ôœuþùI©òÎ믫€œ×[†ª’c&•¾~™2'üe$®ºñzx<)I/ÿóĉêçWTT”Ôü?}ÿ½ª*öøÿžUUÜjŠÆî¿ëN,_²Uõë´ij:úøãUøM®R$""Ú+•…JìsREÀ=j2ƒm+¥z™!³T+סôó Âp™p÷íŽÌ«Î‡»C;Hi±`ËÊŠç3fx\Æ+uý%(nÖÅŸM€e6ùæÌGÉgß!}ä10Lâõ½T=jR Vvº½wm0Cn«Vøê«qª*Ù°a‡Áçõbòäiøè£Ð¢E œx≪Zª³öÚ£wïÞØ¸i=n¸áFœuÖ™hÖ¬¹ª€öÉÇŸ¨«Xç{;wÆG~‚Í›¶ªV”ÒrTÂeï½÷5j‚K/½´òBªg  >%c×_n¿ý¼ÿþûÈÏÏÇpUAÖÂŒ3ñá‡ÚûÔ #GŽDÛ¶m½}’5ê4<÷üÿpöÙgãÜsÏC¯^=Õ@œTB7nœªšvê©§†öÁ¨ÕŠrDDDDTèïå\YÚbJÈL?Ö·u2ÓÛ“}‘Ipòœ„àä±sX½Œˆˆˆ ̈ˆ¨Þ:êØcUõ+©rÏÔ)“ã̤Ýâ]·Ü¢‚B»JªŠ]~Á¸ï‘GÐÿ€οlÉR\sÙßUE´]%A³ÆŒÁº5kqÃí·ÅýòB¾äxøÞ{ñõ_`WÉ`äç¤*ºÝ÷è#ÈÈÈL¸Ìß}‡{ï¸]Un«Šõö ê­×^‹ÿØï³&L›4wßv«ØÜ¾ú «–/ý?‚­Zˆˆ¨¡R%©UiÌ4‚UÊÁPW0d¨V˜Áùƒ}3 { È_R†²IÀ·te05–•…Œ‹FÁÝ©½ýÐTÕÍb1ÊwDݤžr,üÛ¶£ä»ÉjÞI¿"eðþ0Ûä"QÏË`í,{ÿ$ 'm>“ÏÉW‹Æ=ì¼þúëxÿ½U¸Mª†uïÞ§Ÿ1 ž·iÓ&8ûìÑÈ/؉3fà_ÿú—zËÒŽòôÓOÇ–Í[ñÙgÑÏã €=z¨Ja_~ù¥ £ÉÏ­k×®8ó¬3í×£Ÿ£–€•góúõÛ·Ûç•cǾ‹¯¿þZ­SÖ•’’¢¶1jÔ(yäH,�·ÛÄñ'kÿžøñÙ§_àÙ1ÿ ¿ššæÁСC1zôh4iÒHm_ ²ØÑ^OÎg%À%ä"݆R8¿ÿÔa³ºté�™Tø•sc¯×«žÓA3'̈ˆˆ¨¡`ÀŒˆˆê-—ý~Ȱa CR þœó5©VvÛõ×cöÌ™¨)ùùø¿«¯Æ“Ï?·u¢´º¼ý†j$\æôågŸ¢]Ç8óÜscÎóª½o5.sšõÛoxüÁ‡pû=÷ÄoÅòeªrYUÃešT‹{ëåW±«dïø¿U%¶š°pþÜ|í5óò+HKOQƒ¤ÒG¡»ÑòÛ)e%’8F¹ÕËô\:­ Ÿà/*DÁ'ŸªP—i¿žuÚ HéÙC¯18_ Vľ¸r²‘vì¡ðý¾�þ[à]µÞ‹ájÕ¦+öW{C¦Ú¢©*«¹J}@Š»R2Ë4]¸çÞ»TeØ-š‡Ÿ?áÄã1øàAÈÎÎR¿öÛ¯?VÙû¹}ûvU±LªvÉüº ƒ€Ú·_ÜsÏ¿°iÓ&¬\¹ ™™h×®=rs[¡¨¨§Ÿqš†*ž©cg#s.·cŽ=ÒÞæ@{;«ìílCNN#thß-[µTB{lo»=ža \ö¾7kÖÄyhÀžöÏgÍš5ª‚šÈÍmÖ­sUåµÈ¶?€çžÿ¯=Ø&ïÇ*¯Ff“¶Ÿ£FŠÃ®Ö·uËVdd¤£]ûvªB[ŽýóÔÛ÷x\xä‘ÃkŸ¯Ë¶GZý™žžŠwƾ©å˜pàŽˆˆˆ¨a’€™/ÔqBΙåü/Ú¹_]ž:·%ûSXX¨Î‰e?ƒ•ynJDDD fDDT¯ícÐ% J­\¾"ækÏ<þx†Ë4¹Zí¶nÀ+#FGçÝ·Þ†õëP^yî9yÌ1Q«i-[²o¾ò j÷_£GŒÀAC†D}]¾hyðî{v¹b؇ïŽÅ®Ø´q£ªZWSá2MÂoÝw/îºÿ5d*‰YI–™’A–€=è2w¬;Tu3w‹æH=í8)‚QjUR5 wwxºw†ýfXEÅðý¹CÁtÅ^,TÛ |Or ž%³+hß¾]¥ç›4i¬&-77WM2P&•"Zåë3мys5õêÕK=ÖUhÖ¬)*¿¯àz\.S…®¤-¥ péðšÜ—I“°Y§Nïi²¬áÛç´}úôQû ûmÅø¹geeÚSgÄ"Udß$4¦ßb vè»í¼ìC÷îÝ@DDDD ›óVÎõ¹ížBÎo5 ˜Éy~ùEDDDD fDDT¯uèÐ)á<ׯWí#ÝîŠìçÍ‹O?ø�µeûÖ­xöÉ'qË]wE}}ܧŸ%\Gº=xxì '`¿@c{`oëÖ-ø}æ,ŒûüópiøhäµO?üÿãòJ¯½þÒ‹Q#õÛ?ôÝ·¿$ܱ}‡j!*ÕÇùÄ>¦±f?|÷-þù'v·§yùITŽkÒ¬zÛ©Mš4ÅÖm[0ÿyعcGÜe~˜ð-Ž9îx|È! ""jÐŒ`x\Z=&Ë2Mø~ûðÛCºì ÃmÂòÛë1êå»ì&÷ÐI¿Êà_¼(-RRâízÅýR­?ë–në#U8ÐóêV<ÎÛh‚?«ÊÛ‰EoÏ9˜WÝu9—sîQ4ºå»óÇ=!`VÞ^>Ø&SŸ›Ëw®–U+gˆˆˆˆö| ˜Q½Ö²u«„óÈû‚‚4nܤÂóÏ?óLRø;vêŒó/½ûìÛYÙÙXµr>yÿ=|óÕW ƒZ2Ï™ç‹N»Tx^*hmܸ!î²iiiøß«¯¢C§Nž?âècpê™gâÚ¿ÿÛ¶m‹¹ü”Ÿ¬0+´ÃäF<¦ºçᇱOÿ~ž—cõòÿžÃ›¯¼wùéÓ¦¢¨¨™•^ûàíw i1yÚ™gááÃÑÊþoÙ´Ó§NÁØ7ÞL* 'ýôSÜy<ž\yÃu8á俨V¬š÷>;/Ž÷gÿÆK/1`FDD ’úCŸCYRM ÎJ*n$mc$�|±àêÞI…Îàß…A+¸uWºvnܨ*¥Ž e‘ï#T­LæW÷UûNÔ9ÜÒ÷cq`9—‰òÒ«Š ¡ÕD(lWéýaÛ """"J†n ]MwO"7ç9½ó|ˆˆˆ¨!ᥢDDT¯e¤§'5_qaQ…ÇK-Âï³f%\nßýúã¹7^ÇáG­ÚMJE±ž½{áæ;ïÄõ·ÝšpyùBáƒw*·s”€Y"½ûö­.ÓÚwìˆ+o¼¡Âs„jÙ²ú쳆~88¨ÒrëÖ®C§.Ñ´ys{þèWûÉ{‹ — ùbä‚¿_ŠV­r´Ü´¡òû[½j%þüã$’™•…§_x]~™:Ö ìÖ£FŸÿ7<ÿæ ·ŸÈï¼pž»z'ÿõÔ á2‘’’‚³Î;×üßMq—Ÿ?oæÔBëU""¢=E…á’ªVÿ**†Ô*s»<p5ok­Ub6mKª¢Iv)¿ ØíÒLn}2W2Õ]kZdkHý8Ú¹\4p�>üðC\pÁHKK­±A­Èà[MTdpVx """"Š'ò‚‰=-¼åÜ'ç¾²’54¬`FDDõš'%5©ùJJJ+<þáÛï.#ÄþõàƒHM¾ ©n5gÆLL7.îz~úþ{\wó-p¹¹î$¾_Xºd òóv";§QÔׇ Ž?ö8šµhæ-›« V¢/Xº÷ìÞ|3¸ ö—y;wbûömؾm»=mEÞŽ8hÈÁ1——+ÛvhŸ°úÚ–Í[ЩKŪm¿MûɸúÆU ,šÜÜÖø×Câò¿ý ÕQRR‚)?ůà&UÓU;锿â‹?Æâ…‹bÎó÷ߢ¿=ÐKDDÔ0Ád–¡k—Umð$X4ÌËï‡áÀ2Ìꬦ|}rKqà øTE´dÂeVh2í÷¨ÃJ±*%ª`Ù3Rjj :ØçiÁuV9KV²·ê¬7Þû!""""ÎóÆ=©BXäù9Ïi‰ˆˆ¨¡c3""ª×¼e¥IÍ'Uœ~6%á2'Ž<M›6‹;Ϲ^ˆD¤¥ãüˆÊ]M›5M¸œ„¿®¾äïøyâD”WzÝíö`ð!CUhLÚZVõK ™¿QãÆª}çþ¨ZoŽ5*îz¶lÚ„E &\·×[Vé¹?æüžp¹6íÚáÈcGħWŸ>:ìPTÇìßf¨6—ñuì±HDŽÑ𣎊;Ïì¬`FDD ¥þWž3쯌ªT³4s²Õ2’§òoÝ€?¸F£ºá2{òoÛKw ëÏR{fÅ«Že”ïuy­šŠ‹Õ3Q³Èv—•×[q]{jÅ„Ú ¬Qõ»Îmu -™ù„3Çó\"""jhXÁŒˆˆêµ¢(Á«hÒ33Â÷¥…ã²%Ë.sð°CÎ#­*Ûµï€5«WÅoÉ¢…ÚNJJ*mݼ9îr+–/Ã7߬Âd]ºuA×î=ì©;ºö°o»uYݬ¦HÈmýºõöû[‰?fÏÁ„¯¿FaAªCÖ‘È !C*Vz‹áÐ#ÇäŸBU-Z8?á<RmÒ?&œoË–­q__¹b¹ª˜&•ðˆˆˆ£ÂÜ1¤ú˜•\«Cdqwí�ïŸKà·×á]°©' # "aSRÑ·¹Bõ‚wΟ°$ànº`´n 3-~•[+T€M6)ƒ?rþQÓã?ÎA%ç€Sù®'¿ÁhTÑžÓÙ‡ˆˆˆˆ é¨ “\"“ßï·¿+­›áÍXn8ÏÅet¨Ìår©}e¸Œˆˆˆ"̈ˆ¨^Û¼aSÂyäC}VVVøñúukáóy.×gß}‘ Ž% ˜­\±¢Òs#N8o½ú ’!û»hÁB59å¶nƒ}÷ëý P-3³²³QË–,ÅÜ9³±hþ|¬[³7lÄ–Í›£V"«® ë7$œ§o¿äŽyÿ¢:V¯\•pžgŸx5A¾TÚ´a:tê""¢†Bê—¡še2Ì¢dšF²ù2UUÌ=xàÓo ïosâ %UU 3ân;ús–χ²és`Ùƒ9ÒnÓݵ“œ�"ᾄVhI;MWíx¯©êÑÚ]rЊˆˆˆˆö:´UÛ³h…D{ÉgÑËê0QCÄ€Õk«V®H8On›6ª˜–———p™ŒŒŒ¤+O5mÖ,á<ù;wVzîÌsÏÁwãÇcÃúu¨.YV¦ ãÆáñÂQ#ŽÅy_¤‚g‰”––â£wߟÏ?Çꕉ«‹íªÂ„ó4mÖÉhÞ¬ªc玨K;wìQCSaxÅ4p0|I-ªg<ýûÀݱ ¬5ëØ™¢×?BÆEgªõšU)½%=ö�“wư–®¶—µŸÊL‡gß0<ñ¿îPí8%øzðÔÎ×#Η5!rÐËYM3""""jˆtÀLè€YM‹.KFYYYxy ¾1`FDDD Ïrˆˆ¨^›÷ûï çéQAª¸¨(á2ÙÙ9HVvNây‹¢lSª=ðØchÚ<¹PU"RmLÂbœy¾ù꫸óΙ9çzžæ™: —I[R¿/ñÈsVVrØ\n— VUqqâŸ}M’Qƒ‘ÿRUÇì—«Ò_ÒHKEê_GÈH‘=Bd¡ô«àýu¶ú†"€äfRyÌÚ¾e_N„µ#_탻kG¸{u`ô�’LÒÂÆãB}¤+¤ENñ^'""""ªO$`&“óY¯×[ãçµÕ½0Do²?š3`Æso"""jh0#"¢zKK“ú)á|½úö©ðØãñ$\F®<KV2!"wŒmvîÚÏ¿ö9ôPÔ”’âb<x÷ݪªY4S'MÂMW]M›6¢®˜.3©/iJKK¬Ò²ª·ït»ê¶xk PóWTíNáÍCc%†ýo¼YÅê_–?�ÏàýáîÛ=*+,BÑ«À÷çR؃0–,sLÒ®³èµP6}6,ûß\ÃtJ=ö0¸š7In?tÈL€j¡E¦œûÔT¨ËYQ¡&×KDDDD´§“óßÔÔTu_ÎKJJT°«¶DžgG»€C“ö˜ú»a –%ó½3Q}Å™DDTo}?aBR- 9¤ÂãôŒÌ„Ëäå'n£ž7/qÄxÕ¶šµh{}óçÍׂ˜ˆ‚¼ä·|ÑñäÃcàÁƒÑ¸qù ë¶m[UøLªU…T[ëÕ§7 ¬ªŸIH­*ä‹ ”””„a¼ü$ßwA~~RÑ"ed&þÙQ¨ fîpèÉIE—Ûó™Íš í¯Ç¡hí&¶m‡oå<ú2/?žž]adV>wÒk·ìs€À†Í(zö-øfÌU1ܤuR*‰1$*„&á4#´w’C-´±‘¶ì›6mR-|:uê¤ÅäÅ ÝË Ù²eËÔÔÂ>?Ô­€dþ&Mš¨)===<¿¬{ž}þد_?4mÚTÍ÷Ýwß©ùöÙguî%UtgÍš¥.ž8üðÃJ#"""¢z)---ü™CÎm%Ø¥«šÕ4çùzäù³Þ=T/“}‘çd䜭뉈ˆ¨¡bÀŒˆˆê¥Â‚¼4æÙ„ó5oÙ=zõ¬ð\nëV —“ðÒêU+ѾCÇ„ó._²4á<¹­['œ§wß¾jºþ¶[±ÂXœ7÷w,Z°‹.À {eU¬ØUXX¨Zež>úìðs¼ýòv&ÄIeµÃŽ8={÷A§n]›[¾ÿË—&~¿Ñ4mÖë×­;ϲ%‹qð!‡ ‘Å ¢:Z¶Jü³ûùghÕ*DDDTYx°Äp„ÇìÁ¸ a©sKuË4öù”ŒpEF·LyÖ~=uÀ>0Î<…/½‡@i)¼k×aÇ}O!sÈ�xôƒ«KÍÃHI•‘ òá_³ÞùöyÑ¿À¿z=,{C.ô¡‘ñ÷sì5—‡ËâE©†=�dö­ ONvhÞ˜‘¸*‘¦U«VaæÌ™X»v­ºÐ {÷î¨pü¢íS €ß~û 6l@ãÆÃfR¡A®Ú·oÁƒ«ð™XjŸ“-^¼mÚ´A³fÍÔs²=gË ¹•õØçÎDDDDDõ•\¬![ÈrÞ¼Óþ~³¥ý½¯ˆwÇ®ÐÕÊ¢­[ŸoËy¶žOÎû%`¦1hFDDD fDDTïHõ­{î¸7nH8ï_Nýk¥óÙ9T•‡mÛ¶Å]vÎŒ™ f²/΋D:vî‚dI¥Š.ݺ©IóûüX¹bÌû¿ý2?ÿðƒ=xéM¸.y΀Ù÷ßLˆ;¿Ëeâú[nÅñù jZ›vmÌfLÿgÿí$2}êTTGÇÎγÁÜfÀŒˆˆ¨ŠÒS`”yÃç]~#lç«b–Ì–’Š”£‡¹-Qôß×à_¿–½Ž’‰SQúë˜MÙëMƒaºÔüi…³e¬ü"Ic+¡ÙM©#†#}Ô‰03Óaù’kOmZ¡êe©)ª=f0 ·ëÕ½$à?cÆ ,\¸™™™*üµ#‰Š»j_BÕ¤­Îˆ#Ôà”<–ÀØÊ•+1{ölŒ?£FR¯õïßís9¯%""""jèrrrTÀLH— weee©óh ™Õ¬J-D¦dÎuFV3“íËÅ B.‘}!"""jÈj¾Q-’ªb×]v9¦O™’p^¹²í俞õµ}÷ß/Ñâøôöúú‹/¶}”/(ú'ØžÕ$|5wöLüv~öK…×]nºt몂_w>p?Þøè´K¢ºÚ–­[Â÷óóvbã†õqç?É>^‰ÂeÛ¶lAutïÙ3á<³íÙÅ ÅGÞÇŸ|‚êèÛ¯Ây&ÿøˆˆˆ¨jÌŒtX—d¾‚çOF(°ëTJfñ[ªúYÊ ýuç5ðôí3`!à÷÷3ÞÕëà]¼¥ £ìÏEð-^‰Àö|Xþ€Z¿™‘†Œ¿ŸmO£a¶h Ë[…öÙöv¤5¦+3Mzd"˜xÛõ ›3gzõê…SO=UUUH¶rs`K*’IpLnsss1hÐ téÒ[·nÅòåËÕ|RÁ¡U«Vª$5Dr®,ßõÊEBeÒ’^.Ææ.¶¼öpäy¼º€&4IÕbç…$.“ Eˆˆˆˆ2V0#"¢=ÞöíÛ0wÖlLüî[ü<q¢ªæ•ŒÑ;9E}íàC†áÇï¾»ü’E‹0î³Ïb®d¿Þxùe$Ò£wo4mÞ¼Âsÿ}ìq¬Zµ[6m–͛+µ­lܸ >øêK¸ÜÑÿ©––•gžs6}àÄãq•//’‰ìÓ¿_Ü׋‹Š0ÿÏ?Qûx ƾñFÜyäËœÿüû<6æ¿ÈÈȬôºßPþÏ¿ÿ‚ü|TG·ÝѬE lµy,ã¾ø§Ÿ=ZµWç»ñãñÌC‹V-Тe+Õ~³…½Œ,×Ò–ßÖmÛ‚ˆˆh¯àrÁÈÊ€µ=i“)Í*tœT‘.É ,¸»t@ν×Ã;y&Чþ ÿºÍöºvÂ*-…)Á10JK…Ù(K…ÉRúõBʱ‡©û†aªÀªÒ‚Fª…¥x`؃@V(W-l¤µåñÇN:%¼P!(‹¥­}^ñ§}¦²¤=¦<8p zˆˆˆˆ¨¡“*feee*à%á²|û;ÂFö÷¿º½|uDûï³—éó} ¾É~5t ˜Ñá‚3ϬT}A*ƒåçåU+LÔ¾cGŒ>ÿü˜¯vÄxæñÇQ`¯?žÇzÒAéø“N®ðÅšU«p÷m·aóÆMHää¿þµÒsK/¬3b.³cÇv¼ô¿çpé•WÄœGn‰ä¶n¾ï-K\ÕcãºøÎ^yþ…j‡»ö8@þ"Ãt‘Ú¥×ýã¸òÚë±ï~åÇ–Úƒ¨Ï=ý4~6 Õ%?ÃãN< o¾;(ïï®[nÁ}ÿyMšDo9µlÉR<õè£ê½ÈÏ*ZÕµ~ûï‡'Ÿ{DDD{û„ÉLOƒU\fŸÄ•¨àB¹ŬŒP¸ËÊÌBÊ‘Cà>t�üë7ÁÚ´ ÖöÁð˜Ë2Òa6o 3·%\9Ùª™z U —!ØÂ©ÁàZ j:÷ÒU jŠ ^ùýþpÅ!ƒi6lHXM—ˆˆˆˆ¨¡p»ÝªZØÎÐ÷‹Ò2S?gšµÓ´ÉYiX‡ÚŠ‹‹Õcݳ¶¶MDDD´'aÀŒˆˆöëÖ¬AMIÏÈÀ¿þýoûË…ØeÉÓÒÓñ×Q£ðúK/Å]—TK{ô¾ûñþ›ocŸ~ý™…U+W¨S2•ÔZ¶l…£QéùC7`&Þyý5ìØ¾MåÚuè~¾°°ã?ÿo¼”¸zÚþ ßÏiœøJº÷ß~ƒ¦Úq:•Ø_š¼ðì|4ö]T—Ç“‚ãO>9a3±èÏù¸úÒK“£*ƒmݼE¹jÂ)£NÃï¼’’’˜óüùǸøìsÔ¼Rí®e«–ªåת•+ñÓ÷ñÙ‡$Ì=æ„@DD´·P]1M™Ãþ7Ò²0«ú’å¥ò™½#=®Žívm‚9îò*c*H¦+ƒéÇÕ`H•×´TX¦#PýõD]·„åªQ½,9ïXºt©ªp&-3õ ²ˆˆˆˆho ^rþ+.9?–—œKØLn¥špMpʜۖmÈ÷²²]™GöEZvê¶DDDD fDDÔ ¸Ü.üó¾ûÐ¥[·„óžuþù˜0îk¬_·6á¼+W,WSU]uÓ*XéØOÀ«/¾ *´Å3îóÏÕ”•æ-Z ¸¨[¶l†?‰ŠY998òècÂ%ì&ÏÅ«Ú&!®KÏ;ªŽa `aíêÕøeÊduEà®}þyøâÓOVŽÓäøä'9o²¤]éy]„çÿû߸ómÛ²/=û?5UU›vípìñǃˆˆ¨¡Òñ)=ìb™– ™)nUÌ(*E°ˆY�&‚ƒ/’ã²B #m*¬Wµ»4ío,ÌàcgX«ªÁ­P›Nv UBSkhÕ¬|ÿ÷°Œ–©L&­vd+Ï>š7oÖ®]‹.]º }ûöŽJf²óʦã9""""¢†G>[4iÒDU –v™rþ,-+åÜyWÛe:/ÑŸYäVÖ½}ûvõý¨¾ÐCÎ×%ì¦ç‰ö'Öç"""¢úˆ—ºQƒ!•ËøÏc8øC’š?-- wÜwo¥Öœ5å¤SþŠC;,êk™ö——_s ’%mW,[†Ö'.W\{­ªÔ¦É—C‡ K¸œ¬Ò?ªênÒJrâ·j$\&²sáªë¯Ç®:åŒ3°+N?ûìਠrü¿;îˆ[Aˆˆ¨Þ³‚2Í„¡þg&\é°R=H°L‚bpÁoöP·,•·2ìíÚÿ“Œ™´Õlœ=™´ÝùüóÏñá‡âã?Æ÷߯*%ôë×G}4«–Ñ^OÚb6kÖ éöwŸ:ðUPP€­[·†+Œ üJvr¶¤×Á1ù^tóæÍêV¯W¶+a6Ù=o´ ÃeDDDÔð[I""j:w늧_x|p•–ë³Ï>¸ýž{j< 4tØ¡¸æ¦›âÎsÜI'á¯gîZP*YïˆO¬ôü™ç —»úL]ö ìÅÿ¸»â˜ãÇ©gœ‰êêÔ¥ .¹|×öAB`w?ô`R•Þo»ý8�DDD ™ĉ¨’eXö Ši¤xàÊJ‡+5ªñ¥ºâߌ1Pãí#ãî§ê¬¶À´¬Ì Ž�þžH©FŒ“ìsE™N´Ïéäñ!CÔ@ÑÞN>Sx<ÕS."ÖÏI¸LBfÛ¶mSÕÍ’ xE ˆ•””¨uIå2iÉ©?Çddd ''GU0Ó!´hûGDDDÔÐ0`FDDõšT»èòËðÂëo k÷C8?õ$Ù_HÔ„‘£Fáî‡Va£D®ºþüíÒKk¬…¬GÖ'ë¦Sç.ªºVu]xÙeèÞ³vÕ•7\ÑçŸ_嫸7n‚ûyd—BršTS{ª¡ÄX¤ýèÃO>5ØGDDÔ`XŽÁ¹ XÛÈÈdÿón؃<fV&àq«p—i¸à’gP‹˜êw­©’€ì›*]fïWvÜ0ÛÃÛGÊù\»ví*LRÁí8ÿ‰ÕjGÚ9Ÿ×•4VP """¢†@¤3EË–-‘¬R,ç¾~¿_U3Û¸q#¶lÙ¢*ëùcMš©mÚ´IU-“õH{L!땪eM›6UÛÕçÙ¬\FDDD{‹]%""Ú :vêŒ'ˆ“þúWdffbWí?`�^}ï]ŒyâI|?þkû ƒª7pjß±#®ºáF <¨JËñÅö2ƒñÌþƒùóæ¡º¤ÛU7Þˆ^}úÄO*ˆyËÊì÷úDÒ­/¥r™×FŸÿ7LŸ:5á’+®ÀªýX¶dIÂù÷éßwÜwZµÊUW &lÉŸüî<ô䓸êÓOñâ˜g±}û6T• G"λäb´lÕ DDD ]¬Á –Ɇú7ØlIõÀÌ΄¯ þÒRxìçMÃð‘5Sûƒ.¦}c™& ûß|Wfº½WBÿ¯W"½ä±èŠ$_z°KÂj2ù|>5?ÛkQC#ç¾Mš4QÅòóóUµ19÷•IZÍË$0©x¦''9–óe ¢ÉwŽú|ZÎu�Mª¤IˆMWKÓçâÑÎÓ‰ˆˆˆ*̈ˆh%UªÒ32™ž–­[¡Sç®èÒ½<mÚµCM“êX·ýë_8ÿ¢‹ðé‡aÒ?`ýÚµq—‘/.4G†~xµí$6æ•Wðû¬ÙøæË/1uÒϪ”{"M›7Çà¡CqìñÇ£ßþû#Y'Œ‰AC†àµ—^¤‰?`ÇŽíQç“/E ‚ó/¾$ap­:<è ¼øÖ[˜=c~üî;ÌŸ÷Ö­[â¢B¤Û?÷¦Íšaß~ýqØQGU9¸—–ž–ô¼Çÿå/8ê¸ãÔ±ÿ~Âü>{ü>ÜeZå¶Æ¡öÏ|ä¨Ójå÷‘ˆˆhdDÞ>¡*—ã[¡g X2¸’–ÓeÊä›””ÀeIÜP!³º{1¤¢WV&ÌŒtèd™ÏÞOO-E̤…ÎêÕ«Õ} Z·nº={vx°©W¯^»Üê2VË-Z`Íš5øã¹èÖ­›“@½<7kÖ,têÔIUC#""""ªÏt˜KŸË­´®”ð˜T “‹j%,¦_—û±.X<·vV6“ï~å|ZÎߥZ°žßùp´Jf ›QCÄ€Õª¶íÛcâôé¨OdŸÿqí5jÚ´q#–/YŠ×£° ~¿OŸ¤f‡Nѹkgû‹‹Ô”~ûï§&±aý:¬Xº›6m@a~¼>¯ÚVVv–ªâÕ¡s'ä¶nƒêjÞ²%n¸õV\wóÍX¼`Ö®]ƒí[·¡¤¤Øþâ$K­»Ï¾û §Q£ ËIKÉšü™Ê—-RAN¦d&œG—ÆO–\Éxâ)§¨©ØþjÅòåXµbòòv¢ÄþbJ¾DÊÌÊFnnktîÖ•Õʈˆˆ„d¶,çƒ`ØÌÐÊd`Æþ7Ölì¿ÐmOÅ0ü~û%©`©y¥Í¦ ¤!4j3.ë0P>`c…Ö'ó—Ù¤¦½{2UËÎ`55˜ãNÑ,[J±B§ÙäOw-Ö/“V:S¦LQ t{Ù—É“'‡çioŸkF ˜É|ºâ˜nmmJ`ËÌ@…±~ýö±Ï[7à—_~Q¯ï·ß~èß¿¿Ú¯iÓ¦©y0#"""¢úNŸ'G†¸$`&çÁ “Jf6“[¹è#Z,Ú:dy©T–••¥îë`™s9g¨,rùXƒÕw ˜Å!!¢Ý$’€×®È’%ƒ˜=ûôQS}±tÑâ„ótìÜÕ%•óz÷í«&"""Š.<¨N•!ô8tk•?²L¨v™Vªþù0Ê|°ÁYÀ4Âó»åq |@& g ISÛQ•Ñìç}µ”ªh–Ü’Ë”2¸02ÓŒ49Ñ©´ßµYG }>Õ§šçT2puæ™gF­€ "±úÚç)sÊÍÍŹ瞣*6È9žÝä¹Ñ£G«Áµ`(ˆˆˆˆ¨á’se9·–Šfra‡œK L9Öí0må%”&óËŧ,“lj*Åz-Ú…"DDDD ¿Y$""¢:URR‚Í7bㆪ2Üf¹Ý°AU‹;}ôÙª%g"Ÿ¼ÿ~ÂyêS`Žˆˆ¨>RÅ,G ,ø0øšj—Y>¨b„ª›©˜ÍÃ*)…UdOþ�Ì€_Reöx!!³`(L ø„fd[8*TªœæR\°RS`J›l·Û™y«w¢U/Ómxô Ud%'Ls’y¥ÑÞFΣ%<&SdðKÂgÎ*d5‹VÕŒˆˆˆ¨!`ÀŒˆˆˆêÌu—]†Ù3gÆ|}ñÂ…øç}÷cààAQ_÷û|xaÌLúñGÄ㲕‡: DDDTÃB©­p€,t?! º,8h‚±ð<–©ÂbFf–x}öT”–Á(ó´xz[¦‘©ðZ øŠT03eÐÆj…iɺ ¦j¯©[Ý ^slé[ç�[ïU>—6£T<Ö¯Ç ‰E» DDkqODDDÔP0`FDDDuf¿âÌòóòðW_…î={`À ÁhÛ®RÓÒPXXˆË–áç~ÀÖÍ›‘ÈÑ#F ;§ˆˆˆ¨–”C¬˜Sy�*=+t1ƒ ™ÁŠfFZ ¬,? �ðúa© •LV¨]¦œq»`¸\êÖLq«e¥%¦eØÏ®ð|Q3U˜Í¨·%ÌbU=pV1#""""¢Š"ƒ^±^ΊeÑžO$Öòú9ˈˆˆ¨!bÀŒˆˆˆêÌ_N;¼ó òóãηxá"5U‡´„ºàïÕ<U‰Ìª˜Û’Úeý¼Q1Ôر‚óYËY†¥–•€˜åv!àvÕžSæ·ô†Œ¸ÕÈT ¡ ›=£«Þ6Ƭ(ÞÀ¬ˆˆˆˆˆ*Ó•~£U‹5Mm3r]<g'""¢†ÆQiܸ ®ºáÔùâæÿþùO´lÕ DDD¤é>“ò@ù ‡j]iƒ/–ê€7Íåh†éH‹™ê…`€LOÖcÛeê½±Œòu™Vy{Mµ+¸ŸRéÌgÔ~‡&Ë9É@Ž.¥f Þ,‹)V¥2V0#""""Š.ZëÊš¯RZäç)ç>ÄÛžãÑžŽ3"""ªSÇ<.ùÇ?PÓ¤eԷߎÎ<DDDTNªŽ©ðUj*F°,•Í2Œä2 åI.#òµ˜/_7Ú^ÄëFÄ]µ£|й£AVÐí18ïÕˆˆˆˆˆbKt>]ë¯Î¼±–‹W½˜-7‰ˆˆhOÁ€Õ¹Ñûîyè!UѬ&´nÓ?û?òÉ ""¢2ávÃÌάØòÊËŠ¡áUÿ""""""Ú“9ÛyêÇ‘@ø>ƒfDDD´;¹ADDD´ ;üppÐAøpì;øì£±uófTUÇN1òôQ8qä_ìqsˆˆˆ( )ævÁhÖÖ–­á§-¯ß­°0\ºÅd°Åe°¿%ˆˆˆˆˆˆ¨D«Bæ|.ZÐL^“[¿ßÇ`í0#""¢Ý&33ç]t1ÎþÛ…øsî\ÌüíW,Y°�k×®ÁV{�¼¸¨X}‰âñx‘‘‰–¹-Ѷ]ôÞ·/0]ºuÅgXÀå‚«s, ?oy}°ü.gqs¦Ëˆˆˆˆˆˆj‹%Ó:Sª—ùýþZm÷IDDD”,̈ˆˆh·sÙÛûî×_MDDDTóŒôT¸zwïë‰á®˜0³G+þjÀÕ0g¥²ªp™ß°¿;u‡—gÐŒˆˆˆvDDDDDDDÔ n7\]:ÂhÝ2œ#³|~X~+ÜŽ…ù2"""""¢Ú/ V@ Î#á2†ÊˆˆˆhOÁ€QC&íT,f·Î0zvƒeº`És€Ï¯^S³…&vÈ$"""""ªY±‚bΪfúu¹ñÙŸÕŠ‹Kàv{Ôó¦i2hFDDD»fDDDDDDD ˜‚°²³à>ê 5 ð((‚UV½× ¨àYUÛ¶Qbºz´S¬Ð™„ˤE¦s̈ˆˆhwbÀŒˆˆˆˆˆˆ¨¡“ð˜=Žá:l܃öƒ‘žŠ@~!0«8Õ0#ÁÅ<Î×ÊʼöT·Û®\Æ fDDD´»1`FDDDDDDÔ€ÙCj Â0ƒ)³´ËÏZµ€?¿>¯WU.Sí1e<#º%"""""¢£[dƪX¦Ÿ—`YQQQÌ–šDDDD» fDDDDDDD ™!& uÅ»=µi…Ô«ÿ++eÛ·Ãë÷EÌÏA """""¢š”(\&·^¯ÅÅÅp¹\áå¤z™ž—ˆˆˆhwqƒˆˆˆˆˆˆˆ¬`E2¦€eºìÁ ûÑÀ~pç¢ÌmVäçÁ‘ Óã ¶Ò4Ø*“ˆˆˆˆˆ¨68+“9ïû|>Àï÷Ã4ƒá2ÝSO ˜ÑîÄ€Q%jÐö+ßePÂÀð¤Á}Ìp5xQâõÃWX„ôôt¤¤x`†.ØŽ…ˆˆˆˆˆ¨fE†Ë %%¥öTb> ¨p™ËåVŸå"fzYçg5ψˆˆ¨®0`FDDDDDDÔ€9‚ƒÒ^%Ðp»ÝªKaa!¼Þ2s»]áÁ """"""ª¾È xä±n‰YZ*S©z^ÚbFÆœ4©5-£UAcÈŒˆˆˆjfDDDDDDD œój÷`33üšT1Ó¯•••©Á ˜ÉUóOyØL–#"""""¢ª“‹zä³—´Â”)x? ^«X¥Ì´?‹™Q+˜•ãg3"""ª{ ˜ídpB5Âm32À!Ï0 Z³x½%*llÛ�UOåX°b™þ|¦Ë<ñÃe•±zṎˆˆö 2˜;ã—iXºx1ÒÒÒÐkŸ}лo_UWdëýœ„[i“©ëšn)WÖëp[fUós˜“þŒåœª,ãg4"""ª+ ˜Õµ«WãœSOU÷?7M›5‹:ß¼¹sqã•W¢¤¸ ‚û}ļó€êÞWŸ~ŠGî¿ÆÃO=…ÝmÛ–-ø¿k®Qá2mÔY£0#""¢-\¦¯— ™äyyNnõ`…<:dFDDDDDDU-4æ ”EË¢ÍY©Œá2"""ªK ˜Õ¡%‹á–k¯Uá²ý<÷<ôPƒ —M4 ·]=:ué‚WÆŽUÍ3=®ÂeMš4ÅI=EU0rØ¡  gŸ|ï½õFŽ…knº {ºâ¢"?|¸ºÿÉ7ß QãÆhhö†÷HDÔDk—¢+t Lhè`™žb-ODDDDDDɉ‹*Óó;—ü\FDDD»fDDudÕŠ¸éÊ«PŸ}úõÃ=†ÔÔTi¿Ï™­n¯ºé~ÔÑ """ª+Ñ®ŒwV1Óƒ2�’hy""""""*-<¦/ò‰õºó¾3\ÙS¿ÆÏdDDDTÛ0#"ªë×­Å W^‰;¶£gï^xð‰'–ž"'©l'Úµï"""¢ºÙ~%²Š™«E&¯¦'"""""ŠÎy¡N¬°Y´€X2Ÿ³¢µÎ$"""ª ˜Õ²­›7ã†\‰-›6¡s×.xø©§‘™•u^¿?€o¿‡/?ý«V¬TíçÚ´m‡!‡è³G£qã&5²ÜÚÕ«qΩ§¢yË–xÿ‹/ðÝøñxÿí·°bÙr¤¦¥©—#G–t­Ó§ãÆ+¯ ?^±l?è uÿœ .ÄE—_¦îßçö~~›n¿]ºwÇËÏ>‹?ÿøEöþN˜2.Wðƒ¶­>ùàü<q"V._¯×‹­Zaÿ0ú¼óкmÛ¨û!žßއ¯>ÿ«–¯@Ii Z·iƒÁ‡‚SO?M›7G²òóvâÚË.Dz%K0dØ0ÕÎÔåNîŸM©R÷Ù‡âû °aÝ:.Ú¶k‡£GŒÀ #GªÖ—ÚKÏþo¾òr…å/=÷œðýç^} =úô޹­ß{O=ú(Zå¶Æ;öÏ?Ö•jçžzÖ¬^…«®¿=óŒðó‘Ǭ¸¸-ss1ôÐCqʨQê¸Guâ‰ê÷ù¿/¿Œ>ûìSéuýžN8ù/¸ñŽÛÃÏ'ûóµ>í“÷ßW“xô™gp`èwMï×›ö±Ÿ?oÞ{ëMûwqzïÓO>÷|xùü¼<|úá˜8á[¬—Ÿý\ç®]q”ýó9é”Sbþœ7lXÞy¿N›†uk×Àãñ ×þý:døpœnÿ=ËÈÈTóù}~5äà ËŽ<æu»Oÿ~xú…+ën¹ Æ‹cžÅô_¦É7GØ·üãÚkÑ®Cõ»øÆË¯bÒ?`³ýþš5k†C<\z Ò32¢îëšU«ì¿Óï`ƯӱyãF5_ï}úâ/=Íþû0´ÒüΟ͠!Cìí½Œi“&cÛ¶möï@K ··wîE…w“}Bþ>0öüøÝ÷X»f ~¿ú;<ü¨£pÆÙg3lKD´›Uõ*÷XÌ8 ADDDDD]´Jeúq¤ÈÀXä…@±–!"""ªm ˜Õ†Ðç¹;và†+®TÌÚwìˆGÿû_ä4ju‘¢¢Büë–[UxEÈ|9cÕÊXñÚ2Œûâ <òÔSèÚ½{,§}4ö]<ýØT@©ß~ûaëÖ­ø}Ö,5ý2y þïŸÿŒ9¨ege«PÉs~?'EnëÜJó/Y²O<üˆú@ܺmäø|á×$ÄsÃ?®Àº5kÔc Á5ÏÈTÇð‹?ÆÄo¾ÁÏ=‡n=zTX§„êþuë­˜>uªz,¡ Õ,_ºT…Ä>ÿè#U9.Z *Raa!n¼újµÜÀAƒð¯ÿt¸lõÊ•¸åºëÂû/? q-üóO5}mÿ<øÏÂÁ-9>úXéã'ûÞ­Gð畞™w{Šzöɧ°Ñ>nsgÏF¿ý÷¯4„¸$\æñ¤à¨ãF„ŸzÌ23U;W™¾üôS¬ëÀ¨Iñ~þÑècí÷K~÷"}nÿž¼ûæ›È°þìkÒ´iø5y_òóY¿v­úâ¥Y‹ð–•aÞܹjš0n~úidffVX§üýºóæ›UXJþ>è£ü~-]¼?~÷þûòKÁ™½^Ù¿â¢bõš¿ÿ7B×n•ÿnܰÿ¸àBûw½ö³õâ 1uÒ$,[¼ÿó_üß5×`çöíök¢mû¶˜=c– „þ1g6ž~á…J¿›“~ü÷ÛoKJJÔkÍ›·@^ÞN“é/§žŠkí÷ÍÖ­[pÕ%—Ú УWOdåd«¿o¿öfüú+žyñ¸Ýž¤ß£Tm¼îï—cÅòeö¾¸Ð¾}G.«W¬Â«Ï?oïÏ$<iߦ¤¤€ˆˆö<U %:_$"""""Ú[Éç¥È6—"™ªeñÚcÕ%̈ˆj|È“à×Í×\•+–£u›¶øÏ3Ï iÓf1—yê‘GUˆ¥C§N*ÔÕwß}ÕóR}èɇÁäŸÂí7܈×?x¿B£ºË ©®6æ©'pÍÿýŸ è§sgÏÁ7݈ñ_~‰={U¨xTØ’ŠEйíúëU4g£H¿û.Ž=á\qÝuÈÎÉ©ðÚýwüS…³Úuèˆ[îº3ü~äx>|ェ Ò3=†'þ÷¿ Ë=ùÈ#*(%UÊn¹ó. <(üÿûø˜øíÜjoïíO>©r’�Ñ-×^ƒEÎÇþˆ{}T³’QVV†Þôjÿ%|sãí·£c§Îêµ…óØû–,Z„{î¸]UÔ’/¤¢™LâÄ#Ž@aA Eèb‘ãwÈa‡©÷÷͸qQf¾úJÝ~h…€c¬c¦ª“=ñ8~øö;üÓþÝxuìØ*UK$ÞÏ?}Œž}òI¼÷Ö[9j®¹é¦˜ó¿ÿöÛªRÛɧý5† Q?ûýH¸lè°CqåM7 7·µzMÂ÷ÙÇ@Âxÿ¹ÿÜùÀýáå$$u÷m·©ßƒ† Á·ÞJðñÖk¯WUûÞëmœÉ%ª›üþK€ïøáÃÕ|ò3mÔ¸qÔýûúë¸éŽ;0âÄÕc¿Ï‡îú¾Ÿð þ~ÞyhÓ®-ž}å•ðÏN~¿®¸ð"U¥mâ·ßª¡&º{íß;©ú'ÕÏ:ÿ\z“ãß}‹Gí÷ö釢K÷n8ù¯§VÚ—×^|IUž»ò†ë¿÷³gÎÄÍW_­ŽÑ—Ÿ~¦þ[‘ì{|ý¥—U¸LZßcÿ÷¨eè¸m²ÿû$ÏØë|Ç~ÿç_|1ˆˆh×ÕÔ`ƒ¬Çgÿ{ä÷ûÕ¿!2É}ý%O>GÉwÁ2¹Ýnuër¹b¶ÆŒ%Ö¼l“IDDDu3"¢Z`,UULBEâÌóΉÚjP[¶d© seåäàñ1c*„yd¹=ôo\pæh¬Yµ¾§ »²\x?í'œ<#O;­Âóûî××ßr‹ªnõÚK/â/öëR}¨¦HØ$Ve´ëìíþüÃ8æøãT0O“ÌÕ7Þ¤fR]Mª3év}ú8Èú|ü tïYÎ’ UwÜw/6mÜ KÅ©}úõ‹º_@ºí†T¥,™çÇCjj*’õå'Ÿ¨@aË–­ðð“OUh_(ïYªQ{Ú(µ~iÿyØ‘G¢&wòI*`&U´®¹éÆ 8 +I«NqüIå?ÿxÇLªÆýó¾û±më6u¬ßx啸®ªŠ÷ó¯ =ýŒ¨¡È/?þX°$üwÏ#WØ~Ï>}ìŸ÷£öß—³Të¢Õ—¡mûöêµì¬ÜûðØ3s&Î¹ð‚ ¡5ù=ï’‹pïíw`ÚäÉ*`VU— ©:&me%`&Õô.½òê ÁÀ6íÚ©Ÿ¹³f͘Q!`öâ³ÏªßãÑçŸnM+ä½qô1(+-ÃC÷܃7íŸi´€Y«Ü\\ó7U86RUí”ÓOWUá¦üü³ ˜%kþܹêöTû¸¶tü7PîßùÀ*ȹ߀ "¢ºdHèqÃ*X~?¼>¯=I¨Ì¯)‚ .ûü"øõ¯–'"""""ªþ’[¹€§¬Ì«îË÷¸4Ó¡³X­1c­SÏÃpṎˆjÁ˜'ž·¬¯>÷9l8š6‹^Áì‡o¿U·Çw|ÔJQh9îÄð˜1˜>ej8(VÝåœtõ¬H‡q7n¢ª7ý>{ö¯ÁÈA.êÒ­›š¢‘°—,'Âwl߆ÜÖmÔóC* ê8ƒRš,óô‹/ÆýPî³S¥ºÕ¬ß~Sa£Ÿ|RµŒ¬ ‰SÎ8½B¸L“ãy’}¼%ôíøñ50;ð ƒT¨mÓ¦ªâ°Ã¿6uòdäíÜ©^?ð áç“9fgŸ¾ ˜}ÿÍ7¸ê†j,ïç_vHÔç'~üûrÆ9çFÝ~ûqÀâ×_~Q•ÝN Ì$\)¿ÿ±þ¤¥O¶oÛŽêèݧo¥ç$ä§uêÜ©Òë­Z+¯ítlS*¬ýbÿ¼¥ºØ眃hŽq,žzôQlÞ¸ Ë—.Cç®]*¼>løð¨ÇF·–Ý j&«en®ªRöã·ß©ßK ¾¯.j""¢š“\øKÌð}{HÂþŸ}ë󡨤 þ€Ïþ·À…ôô´ W×'¿~""""""ФC`ºB´L¥¥eª„Ìä»oùü•(,­Z[gQ]`ÀŒˆ¨|7~¼ª2ôàãã¶ëoÀšÕ«ðÀ]wá‘§ŸŽúAoù²¥êöÃwÇbÉâEQ×)Õ“ÄÆ vy9Mö¥k÷îQ—“×zô6²ÿ50KKO\LZ[Λ;WU[¿v6¬[‡Å‹©àÂïó‡ç•|¢ß~ûÅ\_¼Øùyy¸û¶Û1}Êõø‘§žŠÛF3–ËW÷#J›JMªAIÀlåòå¨)2è{ì‰'â—_Â7_}U!`öM¨=¦T¼r‡’9fýì}PÛ±}{Ì€dU%óóßµõG._<æO=ú>xç¨óè¿/ÒÂ1i…¹hÁ¬Z±Òþ\‹õöïå¢ Õkþ€ÕáIñÄ}ÝtU®¨ýVù6×­]«ª—‰;o¾9ÖêT[K±ÉþoBdÀ,§Qô–¥™YYêV¾ôªŠ³Ï;Sž¤ZõžnÿŽ4x°ý{µ?úÛ¿[º},íF ü¾@Ii©=I°Ì@FF:ÒRSìyÌ çOúJûÚ ‰5D:&Ÿ±$Læ }ß—nY\\jOÅ(((Pgê 4ËȤ?é0™ó–ˆˆˆ¨.0`FDT äj£ÇžƒV­rñÏûïÇ^ˆÓ§ã×_ÃèóÿVi~ ðh:à‹‡ìÊrÎý”jG±dd«påïÌC]‘ÖÏüçQÌ™5+&Òêò€1ù§+„Ë„>5FuH…%ÈòÓ÷ßǬì‹ìkA^ð8åääÄœ¯Qãà>J`«&8ñ¼ùÊ˘6yŠ ÌeÛû ·RÑL¾hqÒ‰æOæ˜é/4¤éŽí;j,`¶;8>R½K¦xŠ +þ}‘߉—ÿ÷œ <jòw§uÛö8à ápâî´³ ÿ=EÅ…¨m=úôÆóo¾®ŽTWûî›oÔ$Úwìˆs.¸�Ç<ˆˆ¨¶IP¬|Ð!8lÉ÷Âmyí'üHKõ =-µ¼t”l>¯ˆ'"""""ª9’ KOO…ÇãFQQ±úV¾Ç”ïdu°,8_Å0YdÅ2~V#""¢ºÀ€Q-øÏ˜`¸LôèÕ—]}žyì1¼üÜsØïÀávsš$]sÓM9j’UÝå4ùÀZZZª‚fÑìµßËn”ƒºŸ·×]~™ ?uîÖ£ÎÞ}û"·uëpUªc†?*Ìr5R·ÎÀ]Uɶ$P÷Ú‹/≇A§®]Ñwß}“^^®˲bÊÏÏ9Ÿ5jÜ5I*æIå4 ýðÝ·8锿ª[¯·Lót;Q-™c&¿ò;"7n„dí‰WÍ©ŸOv6 ìŸÍ+cÇ¢S—ä[3ζé¿n½U½¯¡Ãű'ž€n={¨¶£.·þñÇ0Óÿ=ã'¡מ@Ú`ÞóÐCª…çüyó0oîïøeòüñûïø÷¿þeÿÉÇ_Ï<DDT‹,{°ÁþûlÚ·–À¶Â�Þ^ŒCº˜èÓ.ÅÀHU­1ãŸqXÕ©h&Õ¤åc—|'+ßCJu3]A:Ú÷­¬^FDDDu½-ˆˆjAë6Ã<§žy&† ¦*oÝ{û(,(¨ðz‡ÎÁVqK.BUTw9§y¿ÿõyiµ· TÕ«]‡Ž¨ ¿L™ªOmÛ·Ç ¯¿ãN:It¸LÂR~¿¯ÒrºÕÞ1Þ‹ˆVÁM“à?®»ç_r‰ ù|^ÕbPÚtVE§NÔíÜ9³cÎ#•ÙÔ¼;¡¦o/!Õ¶Äßo?ùäJó&sÌ~Ÿ|R ­qÓ¦áçu 1oGôpÚöm[±'êúù,^¸°JËM7N}Ysì 'à¾ÿ<ªZ¶nÓV…ËDdµ³Ý¥uÛ6ªêÌÎ;b¶øÜäï±´Ú=ç‚ ñô‹/⼋.RÏ¿£])ÕŽ€=þàõYøhv)~XâCFzŠ=‘Ô׌`å2fɈˆˆˆˆˆjŒ³YÅçõ=Ëþ^Ï…¬¬Ldff¨ïÀåûy©f&“^6rº/"""¢ºÀ€Q¹ùÎ;ѼeKlX¿>p…׎<æu;ñÛ êõh^3O?ö,t´r¬îrNcßx#êó¾óŽª^%•®úõßÉp…®¨r¶¶¬ŠÒ²RuÛ²U«pxÇiâ„o£®ûˆcŽV·¿L™ŒeK–Tz]ÂAÿwÍÕ8í„0é§+½®«‰Éñ[ï¹[µîÛ¶e‹ ™I¨-Y‡Üƾ®üå$á¹/>þ8´ÏÇ¢¦zä‘j€xÖŒ™Ø°a½ª¼%U»$)™cöÎk¯ç=úèðÕr¢y‹êvæo¿UZN‚|ß~ý5jƒ\É'þêý~qtðïËï¼ ¿¯rPQ~Öwßv+^{álÙTÞBÓ[ühÓ®mÔõNœ½Z˜Ú_áøQÛ2221ø¡êþØ7ߌ:ÏšU«pû 7àñc£ƒªŠ÷Uµ¸çžS¢m«o¿~êV*Q]±ì㘹º /L*AFš‰œ,‚eË,õg 4Qís¶¿”[¹¸W&©d&!³È*e:¬Ù&“ˆˆˆ¨¶1`FDTG$¨uÇ=÷¨ Îß~‰.ݺ©êHEEE¸áŠ+1ë·ßÂ%¨ôê /àíW_ÅGcßE£úYu—Ód_¤½ß£÷Ýn•(Aß}/ýïYõøü‹.†ËíJê=¶jÓZÝnX·®B@'Y½û[‡þ>{¾þâ‹ð{‘}’*RO=òHÔåä8}üñðû¸ùÚk1cúôðkÛ¶nUmøþ˜ó;JìãÔ»wŸ¸û™™‰û}TÝʱyò¡G¬N©Âi7¬ÇÍ×\ƒÕ+W†_[¼p‘ý3ºBgi½yèG ¦¥¥¥aøÑG«ãõßÇW·G{,RRR*Í÷˜mÙ‚ûîø'f͘¡Ú~žsÁ–4dˆºýø½÷ðÍ—_†Cj»óæÿƒÛ];¸[µþ~-œ?¯Zá(ùùtèÔ ‹,Ä­×]Wáç#¿¯÷Ü~‡ú»)µRmc{÷ þÎ|ñÉ'˜7wnøy©Døâ˜gÕïj4òEP“&ÁÊoóæÄ®W“.þÇåj»òwøÙ'ŸTÕÌ4 ™ÊÏgÊÏ?«ö©®ø9Å{RÆÿsû˜ý<q"}à8ÓV,_†çž~ZÝ—ªfDDT»TQ2Ë´§�6íôbÌ…°^ä¤ð˜¨¯¬à|&XÀŒˆˆˆˆˆ¨®DV'“ïìå{^¹•™|÷ê ¡ ¹eÀŒˆˆˆêZíŒ�QTý8�ç^x!^{ñE<óØcاÕR\sÓMرc;~™<×ÿã*à”••-[6©|X¼èòËpàAUXgu—.—·üë.Üõ7ãë/?Gã¦ÍTÛC]µKÂk#O…duèØ ýößOµV<÷´ÓЬE >¿êª¤–ïÒ­+N<å¾{èž{ðäëuHHL*c>ÿ||úᇕZŒŠkÿÏ>Û¶á×iÓpã•W"=#CMÛíeåö¥|üqµ¾D$$v›½ý;n¼_~ö)ºõì‘£ ÛÜ÷È#¸õúëíc0 çÙË4jÜ~ûK€‚¼<5O×îÝq×ØÇ¾v2ÞÒó«O?Ť~P;ù/1çv̤¡<'ÇLZcÞcÿ ¤òžÓ)§ŸŽo¾üJ…„þ}÷ÝxìÁÕñ•`Z»0úoç«àUM“ߥ—ÿ÷?,œ¿�§Œ¡~Ïÿqýµ8äÐÃ’Z^ÿ|n»þüúË/êç#á(ÃþYȾ 9w=ðoÕŽ³é¸/>W!Á+/ºH© ·yã&û8ùqÁß/ÅKÏþ/ê6O9o¾ò²ªŒÖªu4oÑO>÷<j‹´>ýçý÷ãþ;ïÄ{o½…ǾƒfÍZ °¨0ü÷¦]û¸ã¾ûPSb½G °ÝbïÇ?íÿFIï»ñߨ`II±j?+¿cÒjôÊo�Õ…€j9a¾ 7øávÈL<.œ�í!¤“ƒ\¼™ŸŸŸÏ§Âf2Å ˜YüPGDDDu€̈ˆêع]¬BXrõÑݷݦn…[øÏc¸ã¾{U,%- [¶nA£&MqØ‘G¨ÀÆÙ» Òúª»œ&áœ?þ8zõé‹BûkjzšÚ?Yß-wÝU¡5b"òöî‡R“œœFªm§„ªâú[nÁM·ßnïOY!6o܈öÚãÿþùO\rÅ1—“ö€>ñnµ÷¹ßþû#5%E……èÔµ‹ ¦½örX²† †ó.¾XÝÆ>>šK†TÈzîµ×T%) “©öŠöü}zãŠë¯Ã3/½„­Z¡¶È{”}²ý½zÆœ7Ú1+¶™ìÎ<÷\¼ôÖ[Øï€*-'WÐ=ýâ 8õŒ3Ñ*·5öhµÇíÁ¨Ñ£ñÌ‹/ªõÖ†¦ÍšáñgŸÅ ¡CÔïåæM›°zùŠª¬B½·ÿ½þ.»újôìÝ ^¿ù;óж}{Œ<í4¼üÎÛ8xP…e$t÷ÄsÏᜠ.TË—— oÇì?à@<ñ¿ç1xè!1·÷·K.¶oÿÖmÛcÓ†X³rUÔö©5i衇⥷ߨ³FÛï«òòóà÷ûѽg6}î×ЪU.jJ¼÷xÐÁã¹×_WaUùùIuCù“}‘`Þ‹o¿Y£ûBDD±«®ÏóãÇ%^¤¸ƒUÊ2RL$Y¨–ˆˆˆˆˆˆêˆäÆÒÓSU§¯×®b&ômdå3"""¢Ú–ìY‡‘äkF·FŒÇz2·zr…žsELòZŽÜ–•y§ žŠ¼²@_y '–[¹J¡¸¸H 䛩­ADT]kW¯Æ9§ž 'ßLžjX®»ì2Ìž9WßpN9ã í-¢]±ë|NŸ_‡oP~Þ­[þ:[©úP÷ÕdŸ›ûü>uŽ®îÛçè—鸣…×A´'‘φý»>yi îý*Åe9³pò~™¸îÈFHO‘ÛŽ«ßÁ6™DDDDDD»[qq) Ug†””õ\´ Âí3‰êšüþɯå—ã§Ù¿«iêu Gš.—ªÆ'§¡*|.Ó¥æ×…óV½&“þV"J ÙXía¶$ª_¥ëí¿ÓÒÓ3Ô3äï°ü7#üßÐäTŸÿž§¤x† xp^èÖ1Y¡Û€c²·‘b<Žwy?R“ ¶È$""j@6lXßgÏVáÁ£Ž""""ùê¥ÌÀë|(* +Eªý€îÚÍïa‰ˆˆˆˆˆö,G ¶;+˜9É@;/t#""¢ºÂ™DDDõœþrAªç<õð#êK…£F‹ìœF """’êeRµlÑ&?œcinÀÍoˆˆˆˆˆˆöHRÙEf‘U×5V-#""¢ºÄ fDDDõÜs~Çõÿø‡ú¡¬¬ Mš4ÅE—]""""„0aÀç÷cí/`”@¤ºM{°B—.+/aV—ÅÌô€ˆÜáÖ """""ÚëÉg#©bVPP nu+Lg‹0Ý2ˆˆˆ¨¶ñZe""¢znÉÂ*\&=ʇ †§^xÍZ´�‘°Ç¶îy­S¡2û\F%Û"Âeå4 ª³§s‚´‰ èDDDDDÔ@íÍ*ṳ̀?71HFDDD»+˜í…Ú¶o‰Ó§ƒ†SÎ8CMDDDD±HÀ¬Ä+ƒ{^y0u>{æ31äY+x0ÊçQ·–ºÅžø¶ˆˆˆˆˆhé@•Á2Ç —ÑnÇ€Qæ Xð‚!³=u\ÆpŽ•DÙGÕ&”<3t©3Ž15hò9@Z@&3ŸhhA4çû‘÷Ù“ˆˆˆ¨.1`FDDDDDDDuÏ*O¼Y†=X ùýfèžn©nÍ`Å2馩'Ž­5\É„ËÄÞºb3"""Ú0#""""""¢ºg3f>û¯ÏžöTâ Ûfª±+|¥¾<a˜Üökn—iO€Ë4à±oSÜLš5d‘Õ»"«–5Ü*f """Ú#0`FDDDDDDÔYŽÖîØ|…¡Údö IqÀ€· (-óÃï„ šáêeª¦Ìãµÿðü€/ô¼=¯Çm #Õ… w°¦ZÜpì€*|>i±½&Q}-d¦/R±bΧ穯œŸç"?Û±u&ṎˆˆˆˆˆˆöBj?p&[PÝ-CcñòÚ{QìRiÀ0Â!´Dë-ÿC* Øéó¢ÐÞPfº énáf:¦p1ƒ!6gøŒêT PUê\.³Â�˜ßï¯ÐþˆƒcDDDD)Z`LŸCꀕ3lœ–‡ÐÔŸ2·½½¬±GW vf˜Œˆˆˆv̈ˆˆˆˆˆˆ¨Ö3cö`Hqi�¥>øú5C é k2àã %˯–7Õ6üE”y€´©ö@‘i”·• Ö;«|™ìÿÌCII úõÛ©©© r>Ÿ3fÌ´Ñ8öØcÑ®]õüÚµk1eÊôèÑ}ûöeÐŒˆˆˆˆbŠ ’E>–Ïú±Ü÷ù|ðz½(++³ïˤçrëñxàv»Õäñ¸C]ÕúlBDDDÔP1`FDDDDDDDµBºJíÁœÂbÊü¦ýØmâÂó8tج*ôܦ½NY­Å^ Åe²R d¦™Á™ÔO³i³&ïãÅ_š5k0fÌ3hÕªêƒõë׫}oܸ1222j-Ô%y?ÿü3Þûz÷î¶m[«m}ôÑ'xóÍ×qØa‡áÖ[oE“&M@DDDDÉ ‹Õ"2Ø&(..FQQ‘ –IµÜàüFÔ6“r[ZZª&!ŸI\.RRÜÈÌÌTŽ0hFDDDðŒˆˆˆˆˆˆˆˆjMq™; ¼(òöÿƒm]F…¶6ΪUf¿Ü0 34 äGÀïU·%~äûìY$Xf"”4«5yyyؾ}»½ý�ê‹›o¾—]v¦OŸ^ëÃ,uX*ìxàhÑ¢ºw¬,E£?7ˆh·@+))ÅæÍ[ÔTXX¯×§Z´Ëég´ÏÑÚnÊz¤ê™Ô6nÜh¯k³z윇ˆˆˆhoÄ fDDDDDDDT+ KÈ/¶à‡ F¨ž™aÚS¨e¦ØÕAY«!¡5©Pfl†¼°o Ëööì 7ÜF]\iW¿®å“3™¤ÂØîpðÁƒñù矫ûl‰IDDDDñèÏåÕÊ‚%�VPP€ââÕš]ž—@šLºõeZZŠj})“³"™³¦Lr?Xõ,¸©l&A3¹";;[U7#"""Ú1`FDDDDDDD»,Øt¦\QY�E¥$Ó2-ü²ä~¨…MyƒËPëJ™bVÿÒÕǬJÛÕëTs©õšÁà™„Î¤ef™¥Úrf¦š*dæ2¬Zj•iDî^LÎÁ1ÀÚ²e+¶nݪ¼š7oŽ&MWZÆo›mÛ¶#%%99Yj�mÕªUj°«]»¶æÝ´i³=ï6u_ÚN¶jÕ2Ô:(¸ŸRÑ¡¨°Ø^§¥¦;óT¥Ù~ãÆ;jÿ,‹‹±aýFû¶éééÈÍÍEffzø}DÃdnݺõö6 ѨQ#{þV¡oåc.vùù…jÀ/++S=WVæE^^22ÒÕvŠŠŠU+Oð“jgrlLÓ¥v.Ú:wìØiÏ-j?äX6mÚÔžŸá5"""¢ú.²E¦Ü–””¨p™œWÊù²nq)­-¥¼ÜºÝ±Ca:€&ç¹²>9‡”óN9_–Šhê#Š½Þ¼¼|UMBf©©)¼8‚ˆˆˆö: ˜Ñ.±"n‹J(°'Ÿ¿<me8Ãaê~ ” 3T÷J+àSm.cõ°´Âá­ÐëF ´^=¿c9à Þ,K-§*xíÁ&ûÉôTpŠ·íz¿7lØ€çž{óç/Pƒcò|ãÆ1|øa8óÌ3’’ÞW ^]yÅÕ4è 6|˜ZnÓ¦M6ìP\{íÕj0míÚµxíµ×ðûïsÕÀ˜ ’É Ú~ûõÇßþv>Z·n­ÚþŒÿú|øáÇØ´q ¼>¯½ÌëöãЧOÜqÇíáýüù§Éx籪jƒ ¶I�M[g>G1¼ÒûZ²d ^}õuõ~|özÓÒÒЯ߾8ï¼óìŸsåc-­9ÿ÷ì 8âÈÃqÁçÛ?ΛGùŽ?á8 p�žyæ¿X·nÚo Ó 6 £GŸ¥i΀›î>ûìsŒÿ5¶oß¡^ËÌÌÄÀpÉ%«ûDDDDT¿éó?¹•J¼;wîTÁ/]±,==M…Àä¼UæsV+KDæ×UÎÒÒÒU53¹xAÂkòÙE·Ý” 2äbˆhûEDDDÔP1`FDDDDDDD»(�#Ô²¸Ì¼B/F°ÂT´�—¥–*bö PÀT-.a¹؃2±Š ¨UìÛÐ�‘¾Uë±b.Œ¦ø( øí‡nx2]¡ g•6€º"T .Â5×\£ŤÒWûöíÕ Ö²eË0þ|û÷¿ÿmp¹BËXêµÆMá› ãU…°ÌÌ ”••ª×7nÜ€ûï�3gÎT^]ºtU¡°+Vàã—« i·ß~›ÚVÀ ØÛ*«Ð¢T·Ò÷¿üò+Ü{Ϫ„Ó:wîl¯k%þüs>n¹ù<ðïpÔQG„—_¹r5î¹ç>,X°@U‹èܹ“€›0á[Ì›÷':wê\é8H%ˆ¥K—aß}÷ ?'…K–,µ·ó'^yåeU±­]»vª"Ûòå˱hÑ"UõíòËÿ^FÂgÿ{ö9¼3öU}BöUö{åÊ•xûíwÔ±|ôчU8Žˆˆˆˆê/â’‹3¶oß®ªñJu[9• äüXbÂy®)Q L.|0ŒT4oÞL³J•4!çër1ƒTEÓÛÑ-;‰ˆˆˆ2̈ˆˆˆˆˆˆh+‚ù KüðY† u[FŸß@0ä%A–ËÌ`CËàŸÑñ‡nƒsU¨fs·B2èšeÅÞ2¤xS‘šbÚ{PÞZ§|_ëf`HÞþyu{â‰'ââ‹/FëÖ¹j_$ õÔSOáçŸÆ›o¾ .ø[¸JƒLsçÎÅСCp饗¢S§Ná–?3fÌRÁ´Ã?7Þx£= S-_¾·ß~¦MûE·¤¢×©§ž‚ÓNû+N9evØdW^yŽ9æ˜ðÏkëÖmx뭷ШQ6.¿ürœpÂqªPqq±ýüX¼þúª‚Ú!‡«7¼õÖÛX0!~®»î:´i“«‚t.{â‰'0q╎ƒ¼ùùHà-ÜêÁç¾ûî[µO×^{ š5kªÖõõ×ãñäOá½÷ÞÇYg¡ª½‰o¾ùï¾û>úõë§B{ûîÛW­OÞûã?¡Bw|ð¡:–z ˆˆˆˆê9Ç“Šbrñº@Å>•—RUL.4óYKúŠ2“sOðԹ¶´h—sa¹0Dª ËEÒ^^ÂgR-˜ˆˆˆho|]X"""""""¢hìÁ{l%¥~øü¦¤ÆTU±Xƒ5*X&!3+XyÊR¡2RàWm-õd¿ž {.—½€‘TIW.3¬¸»X’€–Z‹‰¢R|ò¶›¢´Ù¬eRlÞ¼yªjÙUW^6­sÕó¦i¨–’gŸ}¶ ?~¼=xµY½¦‚röûhÖ´© }uëÖU xéA´=ºã¶Ûnõ×^dÉ$!´“N:Ɉ+Ãҥ˓Ú?ÇË.û;îøçm8þ„c‘š–¢Ž{zF:Ž:úp{­ ¶oÛ¡Z| ©âðÍø èб#.½ô’PX.¸®¾}ûàŠ+®@N£œ¨ÛR?#å&¬às-[¶Ä 7\~/ò>>x0öÛo?äbñâ¥j¾’’R¼ñú[ÈÌÊÂYg‰}öé£×¬*™Ýpà j¾_ýUµ%"""¢ú#|BèVWóûƒž[¸7 ]ôœ'™jb‰æÑ/ChP•Ñ‚A³àÅ >Ÿ;wæ©°Y¼JiDDDD +˜Ñ.²Pæ7PXêG�˜V Ti,6CBbö@ËtÃ(ƒßp¡Øç†¯¬S–xñû:?Öl  ÔBŠýíEnc7º471¸³›ºáqK•+# ‹¹•àŸºú—ºï²÷ÕR{_Ýi.¸"æ­ [µj•ªº0räH4nÜ$´Ÿïï!CìA¬,UáLZBJØJ¿Ö±S'4k\&8˜e¨`Z·nÝÔä¤×Ù¬Y35_aAaäÞDÝÇœœF>ü°ÐþÌtûÌFÛy©öóùªM§øõ×ߟ_€Ã†Wí4õ¶õX[§NÑ»woLúyr¥méÊláA<ï³Ï¾ª§Sff&Z·i«ÞËêÕ«qÐATÛÌM›6¢q£&*|&ÇHr‰¡\¡½íèÓ§:æ[¶lEÛ¶mADDDDõƒ‚É­´IÏËËSmØ ÃTm,%ô•––ZaÞXœA°d*œéÏš\�"·oß©‚nr‡œKõ4"""¢†Ž3"""""""Ú%–=ðRTRŸeÚ.~˜F°2˜eè–‡Ž*a¡yÉrj~¿X™gaòŸkñù<+ÜþÒëÌY·Ó«,|0ÓDï\7ΆÎÍÝÈN3+ Â÷e>¿ýØe¸Pâõ#MÚdªRrUjŠT[ö:¢SÇ.•rò8==UµÜ‘•žW±2ì- {†ô’uJàÎ+Vá§Ÿ~Ä‚ °víZ�+((°âò傊Å,Ä{ÛR‘AÚuN™2Ë–-S¸üü`¨¬´ÄììÌpèlãÆê~‹æÍí}O«.Ò:¨E‹Q·S>pW±’œÌ¯+—i² —Ë¥æÑÕ"d¿ä˜Ê±:묳ƒ¯[Á¶«Ávª6oÙ¬ÂiR팈ˆˆˆêÝÂRß–”” ¨¨H]L Ï5·Ï=ÓÒÒBóÉœÒëó~K6d¦çËÈÈ@YY™}®ìSŸ5 Õs))ž:ýLADDDT×0#""""""¢]`¡8`öøÌÐã€j—iÀKÚ_šþPÀÌ´Ÿ1ƒ­-…aÏïJü>|ù{ ¾ž_Œ-ùüª¯c°*™0á6Mµ„´gt~µþyë|xpœuJÁÈý2Щ… 樹 '•Eòèð›×Þߢ²�<é®àÜÎ|S­³Tõ© &©p¶ÊÈ’Ýt»+~m£ß‹,gEÌ+9¯Ÿ~œ„§Ÿ£ªžI[Ên]»©* iiXµz ~þéçp LÓt…ÃwjÏBs›6mƳÏ>«Zt¶iÓFµš”[]µaüøïÕ‡»Z†Žµ„ºôs‘!³ª¸B“‰ò…ò ú|^µœœqøp0³œoFU¯³Tû¤–-[€ˆˆˆˆêgõ29ß”‹‚màªe¥\”Q^8þº"ÛXFV'Kf?´¬¬,”–zUàMÎëåÂŒæÍ›Vš/Úç"""¢úŠ3"""""""ª6Ë2à-Ó¡ŸÈÁ{@Å ™&üö,R=L• ø±£Øg*œU^û,B“¹¥2ÙÜhßăÆн¶ú1}¥K7ùg/Wì `òÒ2¬Í à‚¡è“ë®”Š¿ÏÀtÙû€•l’Y—Ã>êjܸ±jk¹tÙû™#ƒÛwì„TÚÚ²e‹ EIpJ½=«¼Nyí¥—^VÕ¼þïæ›T«È¬¬L¤¦¦ÀíöàëqðóO?EÝúÓ0™~øá|÷Ýwªåæm·ÝŠÜÜVHKKWá-©¨6ý—™ö¶¶†òZµj¥жnÝj¶•ÚŲ̂.“*òZmcéröm.¾äBõ8ú`¡ ŸÓgì#"""ªG¤Š®œSÊ9ÇãVç|‘dˆÈÊdÑ;ƒkÕ!Û•¶˜›6•©€™®¬&Á³hûÃóN"""j0#""""""¢¤DŽÈP7@i™¿B‹C#T%,ØzÒFpRù/ PäóãÅIEøuE)ü`¸¬y¦ ’‰CººUKMS¡'ûõû°%ϋקaÚòRxíu,ÞèÇ¿Çùðô9hšá‘ØPx?`⾟½ïe> Õƒ:år™èرƒ Ž}ûí\rñ¥ª ›³„™´¦” 2p&ÕÄn÷©[D:Ék‹/Æ>}ûaà€Ñ¢esõ¼P[¶l©ºõùüÚ© jË1ð\fåÊ•(..Æ¡‡Š^½z…ç—Ù֯ߠBdÒ’3H³0xð`5ÏâÅ‹°cÇvÕ&ÈYÁlÇŽøsÞŸ¨ ‚KIMUÇkÉ’%j_œdÿÖ¬Y§Þk³fMU»N""""ª_‚mãƒ'¥Òú<%%%ê|‘A²ÈpWM…½¤%¦œóJðM¶%méåq°B±5ÐFDDDTŸ™ """""""ªªP(ŸöäGdÁ(5˜úÚÁ”¢eÒ2@Àž·ÔÀçsŠñ늌J·Ç†GOËÁà.iÀŸ½¬Ï2°'K­ ð.´näÁGgâ¼ÁhžloYXâÇý_akA ©]ðT­¤,¹e’%ÕѶmÛ-›·E¶nݦæ“PTïÞ½±zõj¼ôò‹Ø±c›ªh&»¶rå Œ;V RIXªmÛ¶Žý†É‚-A+¾§fM›bÓ¦MXa/ï·±Ì'qãÇOÀgŸ}¦Ö/á6§FÁçóaÆõêV¯Kž—Ê þù§ªŠ&cee^,[¶ ï¿ÿ¾z.Ø^SÏŸÃ8‹.‡|ŒÍ›6«VžRÑaÍš5xá…—TȬfGFF:N9;vîÀ|„Å‹–¨ ]ÀoÙÛ܉oì÷Ægàßÿþ·:zŸ‰ˆˆˆ¨~¶¢ ¨Ïr±EffÅJaÎêµr_?Ž×Ó9_uI›NÝ‚Þç ÀëõVx=ZÀˆˆˆ¨¾b3"""""""J’Q©¦/|&ܽQ¢„Çj$èdÀeºT+F¿éƪ-¾]P‚RŸ‰w î’‚ó¥£I†P˜LT2à#10÷1õɂë¹&e¸ðÚÔBì(ôaù>Ÿ[‚Ñöz܆+î@ŽêÚiÉž™(õúíý3íuFkñYu¥¥exúéÿƬ’••Žû¹¹8ûì³U¥°·ßz æ/@ë6¹*¶páB,Z´C† ÁE]X±jœîaAæ9r$Þ|ómüç?O`¿þýáö¸°aÃ{Ý 1tèP|ùåW•ŽË°aÃ0gö\|þùö¼ѽ{wœzê)ö󇨙¿þú+î»ï~tìØQU[±b… ŸeegÁïóVXßy烕+VâÝwß·ßÃbtèÐ^Ì/^¢8ð�ü2m:jFÅv¨gu&–,YŠŸž„M·¨ªk2ø¸iÓfÌš5SU‹;í´SѼyó ܈ˆˆˆhÏ'í'õ)°œg»Ý®pe°È a•ÎcØÕà—,/­:¥¥½\¨!çñRåW*«ÕDN"""¢= fDDDDDDD””È`Ž ×¨ö–áÊZ[ÁÈÕü~˯Bdƒi¡8àÂ/¬Á¦KEÆZdºqÁÁéh”fEa™öòþðÊõ¦T½1{}[ d½Zf›êvH×4lÜéÇÛ¿ÀpûñëÊRû9º·4Uµ®@œ‚T“€YÀò©”Kå•\ØUeee*”+¬Ö¼y“àöí—:h žyæŒ3S&OEéÔõš¸Î?ÿ|ˆjÚ´ixYÝ"S*‡E3úì³ìõºñÆo`é’¥ªíf¯ž½p÷Ý÷`Ë–­øâ‹¯Ô{uþG:kV¯Ã—_}Ž?þ P³ž={⡇Â]wÝ…É“'cÊ”)êg*•ÀN<ñDÜqÇ]Øj¯SW’õõêÕÃ~þ6<÷Ü ˜>}ºš$äuØa‡áï¿}ôQ Ì*ÊÊÊÀM7݈nݺãƒÞǼyóÔïŸTa“*p—\zzôè^©‚í¹t•1¯7à’s»´´ÔpÕ0¯¥ EÎ9Ouɹ®´Ê ¶¯\ÁŒˆˆˆ¨!Iö¬ÉHò5#‰[#Æc=™Ž[=¹BϹ"&y-GnËʼSPOEžÌêf=¿üµÔÅÅEê {3µ5ˆˆˆˆˆ¨\´+“cµÉЗ>[(?ïÖÁ çcKÚùYÁ6sPk?Ÿ?FQ÷ístù"Y¦ãŽ^Ñž"ø{kaCž§¿¸­ÂàÉÅòqé¡PáA›P±/¯ØRàSŸS“\¶zqÙ›;Pê³Wazpûˆ, ììQ1gÛGgH¯ý¦.-ÀÓ‹‘žêÂÕGdàÀö)° «·ùñà×ùXg¿G·ý-Á%C3qLŸ ˜.3NÅ‚`äMJ™I´œÌ䤢ÎDäÊËËÃÆÕsíÚµCzzºúù9Ïô¼±ÁôkÒŠrݺuhÒ¤ Z¶l™Ô�œT“¶—*àÚÿ­[¿~½ εhÑÙÙÙj~½oú¿™ÎmÈã-[¶¨õµjÕJ­Ï¹íXï%Þ{K†þo°ì«Tn“ÿF·nÝZ½§XÛvþ,vuûÕ‘ì6#gˆˆˆˆöÁp™W],!•‚%`Ö¼y3û\9 { ik/ç½r.*çðÍš5SÁ³š:o“÷Ÿ_ *£¹\nuÁDäùýî8%ÒäwO~%¿? ©©iHKKSWMûïü]ð¸=ögÿàï­T#WUÏÍòßcç­®ˆn \"=¼ =O¬ßwþ ª_¥ëÕÅ¡ééê¿òwXÿû霜êóßó”Ï¿Ì Ýú#&+tpL–ã6rBŒÇñn#ïGJø/+˜Qµ¨œ™ê7™ÌüöÁ3WúPæ³T¸«K3:¹Õd¾(ë5—úü˜¸¸ oN-A©ý5‹·ÄÂÊmì×p¹ ´kâÂþí=Xõ{™º mÞz?†u·Q…BU@Í´Çtr~髚‚󾄰t°KE†¶¢}¹¹N™O¯+V•ýØZ’A� c9÷M^—/÷$ðùô¾9÷É9„Ñdp-2 m"_KDCľGy/ÒÒSÃhï7Z5‹xÛ«-Uä€ íÔ^áJ¾¦:?Ý“èAq¡÷uOÛG"""¢šÀ¾�DDDDDDD””Ê—d+—…J•›æ¬ FÉì»8°ƒ[}1³�šýüOKÊ0ö×"ä•ÊC›ºÐ¿­§ü*g{Ÿvô@D_¹Í  %Û CU*´’+I¯7ÚýhµXA°xË8çu­"·ï|.ÚÕ ÑZE³qVƒt®#\2"àí¸Ä;6ÎJ”‘û­·ë lEôœËEÛžóøÔ«¦ñˆˆˆˆu®nŸçIpKŸßí©3™tG"^@DDD +˜QõXU ÈØó.ÛP].$Ôº‘ Ó%WúG „Y˜²¼ ÏþT¯¨q¡q† ?4][¸Â­2L{ÉöM\¡%€Í–ªHf%¿ƒH¡-t5ùºo¨÷Åy«ïë`V¬Š[ÎÁ«hÏE{m»‘÷5g•²hËG¾Ù®$Vx-g·Xûç Ò9ï;CfNÉúâÍ[[¢ù"ß«~.ZËT"""¢†®üB£ÒE{g;LçEDDDD fDDDDDDDT-GE©ªá· h’n°$`#ƒE:dxýL^RŠ1?¢Ìï‡Ë”0šWÏ@¯Ö& *YÁÛFÒ<P•˼> ^+03’ Œé«ºæ¬ð-Œ«ÂV¬ÇÑÚrF LÅ \E{-Ú>E«¶–¨"Z¢mÆú]ŠúŠ ¸9×ë|=^›ÒhÇ­.Å äEþü.#""¢½—³/ö8Æž¸SDDDD5Œ3"""""""JJ¥ðM8`Võ•€e ÈkÁoIÕ)3¼ ‰ý°¨ïüZ¤ÂeòtÇ&\84=U¸ÌNV(ŒcOÅe¼~.Ô3n#Tà,‰ì[0,¨•ªh©¢m?rÞX­â¡¢½kû±BT±ö3™Jd‰ZmÆÚïXûí¸D¾ïýÄ ÁE>NT®¶%Æ#"""Ú[éÓ£=5\íÂŽÝqáQmbÀŒˆˆˆˆˆˆˆ’¢H, .`HE% Ç ’\ªÒ˜¥raͲ ¬ÞaÀc?ÞZä‡/` W/ V.{ó—bäÉ3n´kâÆ%CÓѧGµÃ´T[N#´Íà:7øì½ Àe˜h”æBªÇ„ßÞIWŒñœ€ �…‚qÒÆ&­–*C%PŠÖNÒ¹¬3x/„«dä<ú¹dZF&@s†±bUL³UîUT‹¶ýxÕâUþŠ\6Zp,Ù@[mãÀ#Qlåçºúïž4s¶Åäy5d¬­ODDDDDDDÕ"Ã'fÒc(Á¡®-\ö2†ja9c•w(èeßl.´ðäÄ"ì,†ØgºpÕáéèÓ6X¹,(o§i5ÙsbÎ{=¦¼thâR;æ2âîJøF¶nš.Ô´hÕ³*íF”�˜óùD-2#ÛkƯ}e2-0ãmSîKûÆxЪ²ñÂu±‚lÉnG¯;rÉðjC´ãìÜç€e¼ rDDDD •œgÊ$çBûCƒßïÇžDöGŸ³é}%"""jˆx–CDDDDDDDU"_&öÿ$(ær%Æ‘@™/� íêQ{K6ú°z«WjÃ^9é.{PÆ@—nÜ6"½[»Õv é¢iZjrväÌ/`úrŸl’RÝíù] uôâ²N™ÓíªùàN¼j_Zd°+2øo}‘A«DA¥dö-Q˜M?_•�V2µX¢«d·LˆÎùXÏïgP["·éÜ?=@)ƒ–DDDD{#—ËeŸω$Ìåóù°'ñz½ás9ÙẄˆˆ¨¡âYU™nMãNTÂÌÒ傃.šyÐ'×£îï(öã•ÉEðú*°Ö"Ë…«†gà¼Aé¸â°tôhåB@õÄŒ½«|X³Í§æižibßÖnx$3¬ò@‘Œÿ¸ÝµS±*™ÀR¼×ã-+$æ\®&*q9÷Ïù~bå’}m£­¢ÝOF¬–£±*—éyê²z™Þ½íXt…8V0#""¢½‘„¶\.3|îæóíYÌ$ð¦ÏÓÜnwø¼­®Ï+‰ˆˆˆjfDDDDDDD”< Š…r.’-s»‚A³3ÃYnLBdÒÊòŒÓê2TË™«|øf^I°å¥=Ï=8yÿTtm)•Î\j²¢l@ :mÊ·ðÙœR•â²Ð±… ìIæŽWïÉPÿ w\†iX¡V8[>Š`[Ÿ@¸U2¡0½Œó~¼À–sέXmãÅ"ßC¼Ö”ÎàY´pW´ýˆÖ2²š˜ó¹XËGÞ­úZ´ùk2˜—,]áÂJÐ’Ô9/ÑÞDB[nwð9/*++Ûc‚÷r+û£é€QCij"""""""ª=˜c¨`YÜñ“ð¬:P%mm tnîÁà.©ð¸ ø~¼?³zá“6—öW†e"^ÄGfÛ\`aÌ%X±5 ö!#ÕÀ_ú¥ ;5q8(TL͘ ¨ ·i¡¦Ç¨ôàWiii…ö†ºmŽ3Œ¥'©~——‡’’µœ,¯Ðô¼zÀJž/((¨P1!??………ÂS²>y^?ŽWÙ+Z+šhm9ãФ•Qqq±j¤ç•÷ÙšSæ“}ݼy³š_o#Úä\ιÝX8çº"÷ÙÉy¼j[dð-VøO~d¿äw"™uaûöíØ±c‡:¦DDDDõ]jjªº•s9Wöû÷Œöár~«ÏÑäü6%%DDDD •DDDDDDDDI3)R†L¨ÂfÁ –®[f•‚b† d§8¹_:Öì°°t³ùż1µ›òÊ0¨KÚ75UËË`öÇ…¿ÔÚQ\fá·^|4»«·ùáêF”‰~ídàÉ¥6lqÚRª î¨Ç#Õ̬Pê¬æ*W­Zµ Ë–-SMC‡­P©*Z H‚@¿ýöÖ®]‹ŒŒŒp�KiÙÙÙèСrssè… bÉ’%8à€бcGµ®Ÿ~ú 7ÆÀí÷åQƒoÓ¦MSa´N8!je3u„cÆâIôºÞ†ÜÊqX¼x±z½{÷®.Óë’}œ7ožzOð’÷зoߨ-†‚­M_3í}:ÃtÎ[=M˜0™™™8úè£Õ±¯ Vœv¡òœ„Å&Mš„ž={ªão=›6mÂŒ3THO~oŽ:ê(äää 6öÙù;ÌPDDDT›ÒÓÓÔ¹™ïå u¹ÝØÝd?d„„ËtŽçFDDDÔ1`FDDDDDDDU`TÈa¥¸ {pÇ€ÏÊlåY­`%béPh¬s .–‰Ç`G±…mE>|4ÇŸ–зµ ;yЩ©Ó ”ø lÌ÷cöê2ÌZíÅÊ->”T0,#ÅÄéÓqD¯t,ªö™½ñ+ …ªÙ3¥§ê(Ü®ÓUË$à#a)©&&a¥aÆ…Þ{åêaÎe%”¶~ýz´mÛV PÉs¶Z°`ZßðáÃÑ©S§à{°×¶mÛn/)ë’ÇÒ–Çþ‘å¥Ò™3PU^ÎÐÚÌ™3Õû’À›ìVVV…ye QÍ;W½6bÄ4jÔH­C*™7N…«zõ꥓Ýÿª¾O ­I@KBz{BÛ%½ÿRcëÖ­ +˜Éàæ¢E‹THñ°ÃC³fÍÔï_M’ß7ù}”ŸÕÈ‘#Õï)P‰ˆˆ¨¶¹Ý.už(U]ƒUzó‘‘‘~}wœèsmM.©« ˆˆˆˆv̈ˆˆˆˆˆˆh—dxLäyåÊ}®`ù0øˆ[ÌeÝZºðìÙÙ¸ë³,Þ@±ßÀšmÅX» øöÏ`3] -`ÿá·»]RÙ)¸ÎœLgÈÀQ½Ó‘bÃá•V9fƒK–©Vš–¤ÔàXÔÎ;ñý÷ßcݺuªª˜ 0ÉýdÈ ˜„w¤êÁ_þò—p{ynÅŠ˜8q"¾øâ \xá…*4Ô¿5Õ¤hmwÕÆUxLªiIxKŽQdÀL¶+ÏK O‚QR©ÍÙFtÆ *t×ЂLζž»rÜåwDÿþHMŽ_—.]ªÆK–ì§ågâ|Ž!3"""ªmr>)狪—‹:vîÌG£FÙê<Dª×F¸+ÚyŽ>o“‹;tõ2Ùvä9.QCÀí’t‰"Ó€×oÀRa—òJe±X0á6-Õ¢òæc3ñùÜ2Ì\éÆ~ø­`;Ì€üÏ/62°cϯG&g¸Ð³• Ç~mS`Ú¯ù\f�Ájd&Ê›tFç2MdHºÌ À2*¶ý¬. ÝH•®#Ž8ݺuÃÔ©S“^VTé°&A«Î;«ªTR LÚMöë×OUK6©¶•––†šR“A!y/Ë—/W~ÇsŒjó(a9 ‹9I;Ç-[¶¨ù¤*…Gië(‡;vìU©ÈSUÐ$\'ïY“ã á4Ü“pž¼–ž^^ÍB* Éë²>Y¿„ÝäxµlÙ2nÀKWU“õË}Y^Öí¬Ì&9©'û$óJ¥±V­Z…[#Éve¿å8È6›4i:ép,/ËÊà©TÀHD~×$P&ƒ™2¨)÷uÕ<9†²®¦M›†ÛIɱ,** ïT‰ÓÈôà©®Œ'ÇMÈ~ÈûÖëŸ>&z5ý;HDDDIÎ=ÜnS'Éy—󞔪dV[•Ãbµ˜—s% Ýëçå¼*™îDDDDõfDDDDDDD´K\öXKfº y…~•, XP'Í8ƒ,¡êdrÓ,˳rah×�–lLÁü~¬ÚæÇÆ<?¼~?d¬¦Y¦¹Ù.ôÌu«©wkR=¦ªfæ˜öfý¡Žõ[1ö×BªjíœÅÒa´]ÌVµnÝÇ{¬ I§ªâU±jÑ¢…ºÕYÜúã?pÈ!‡ }ûö{d) 3I Iö½]»vèС–,Y‚ÁƒW€ûùçŸUÈL`Ó¦MS¡­Aƒ©e%&Á+YnõêÕèÚµ+=ôPµœ Ýéêr’ðÚÀU°JH9Ygß¾}±fÍÔ“6x‹uÌäg'­&åøJøKÈ`fŸ>}ÂUãägðÓO?©€UóæÍÕüòœ´÷”™,+­$uøM‚Zòs0`€ « y¿‹/Æœ9sÔÏUuޓ֖tZˆV5CTå¸ÉíÁ¬Âe¿ýö›:æ²Í¯¿þZí—ü>JˆlöìÙje~Ù®lG~²?º¦´à”ùdŸä¾ Ôz<tïÞ]…ågöÍ7ß„[u~ûí·j=ÒVÞQm“0™„»ä¼Iα íó·:g©+rn*ç[úÜ]ÎA“¹8€ˆˆˆ¨¾cÀŒˆˆˆˆˆˆˆv‰Œ­¤»MxS€â2 –”³ ÄÏ<…Òeên�ö¸º6w¡{ Žìm¡Ôg!`Yª5¦Ìå6\Hqj·K––ÿYªF™aBá°PhÉŠ_=Àe¯'#Õ„Ë0BA¸à{ØUR¹@«NÀ,H“ ‘ `Ém°-ÐN5ÀUá2Ý QîœÃD²Û“à—L@’A?iÝ8þ|¬ZµJ…¼4©ø&2 ‚ɼ¬’÷)¨=zàóÏ?GïÞ½±Ï>û„+eIõ°qãÆ©à×ðáÃU(KÂhÓ§OW•½N:é$ˆÒUÐfÍš¥ÂgÇw\¸š™Ù¢‘ª´’P•T“êjæ’ lÆ’êt²n©N&Û’I‚Z²ß²n rIøLöéè£Vû,a8 €Érò%¼%9©r'ÇæÈ#TÁD Àýøãj??ü𨭖äwAÖ¿téRõ>%Ø(Û’ã+-Z%ô5tèPõþ$�'ïå—_~QÇSZÊër¼ýõW5„åç=oÞ<õ\Ïž=UÀMöUÂorìä8÷êÕ §œr æÎ«‚}'žx¢Z¿¨Õ6—Kª˜eÙçk;Ôùœœ‡åç»ìóÕÚ­ ¦ÏƒÛËWç˜r>'ÛÔÕ^‰ˆˆˆ:̈ˆˆˆˆˆˆh—™ö˜KZЉb¯TsÁòKÀ*v± BÕÆLWpvÛ€Ç<²ÿo¯WÚö*hš9´N™t;Ixr„Ö ç1B"<OŠÛD°È¥âkÁ5ÔLH+²Åeu×a©v –8“€”TÃ’,©&œh‘-{v•0É6e½R5LB\º2ƒì_¬<½/|“ d2¯ì³<', *IÐJÂNzÌ“ •n/¤+ÀÉëòœLŠ’ªdòœ ’ fé–›2¸'Û— šl[ž—ùe’uJMÿ’9V¦’ªg²¬¨d¤b—컄ÎäyÙ–„Ǥ"›¼}ì¤z™·$Ì&ïG¶'ÕÄä˜ÈkFÓÇRŽT Ó!-™_Byrì¥Ú˜3`&Û“ eJ“÷7räÈpå0 zéÖL²OÎNÙw 2$Ü>tß}÷U-.%ä¦×-Á:9¶ò~ôÏC‚jòœÜ—[Ù†9Ê}ÙîžX=ˆˆˆgkóÌÌ ”––…ÛvççØç;~u¾W›A/ •É2ÓäœI·G'"""jè0#""""""¢]¢†{, Å´YR ä—H¥±PdKª‰9aá%Œè¾B3Õ22‡T1‹ýŠ 9YŽ@›ŒÙûad_*¬fº]hœáŒ›EÞÙ5:U]â‘“ ŽÉ€™ `IU+ IÛÈ–-[†ÃgµEZIJ›D½ ©vÕ±cG¸ñÞŸ~MBM²\—.]Ô ›¬Kª{I»L©ð%!* ]Å¢ÃgѶ%•ÃdyyMÚ?J{MMªÉsRÝKÏ„¹’ —É@¡TXs†è$T&ÏKèK‚X²ïòºÅœÞ$ (2¯ʤú™ú´ß¿„Èäç+ÇW_J“íèà˜´ž”edðR括‚'ƒ¨.“ß ü%Û–RmBÖ)û/Û‘íÉc Äéã,19Fòû'UÚ$Ð'ïO·$­Íß9"""¢dès9©X&÷uȬ¨¨Ä¾Ý®.fHMM©‘�¼¾pBnåüIªëp™œʹm´j³DDDD fDDDDDDD´kt§KûVZOú–PÞ#Ó ½nªûÁ JmW=2ÂÕÍ\F°¦Ë¾Ó(}Ï®¶$¡©rå –XSƒW*“ªRrª >’Ö˜š$˜$’¬“–ü’°—´–Ôƒs¸’õ-[¶,nÀ, EÉq’}”6™:ø$ÛçdàO‚^N²Îùâ‘c­í£®¤â—e dIµ2½nÙ¶„ÄdûzßtÕ5“P!¯-\¸PM²NYNŽÔ¢Uß`žü$¤':’%Û”6™ÒšTöOŽ‘L²MÝrTHR ïIõ4ùùH¸LZoJ57]9ˆˆˆhO`š†j•)Ÿ-òòtȬØ>ßò"++S…¿j¢Èª>w“ó3þ×á2 ³Õf[N"""¢= fDDDDDDD´Ë‚WøCµµÌÉpÃo?WRê ·ž´,–=$ƒAuQ IÕL³Ç€$\&cAûœt){ø7!„ºà‚ ÔmMK6&A* I�I–‘�•„šªR bÆŒjÀMZ9ʤßôÀÜòå˱Ï>û„[EV…ÞÙ/i‘MäñÓ­2“ùÝ“y"«‡ €9·¯ï;u;©L¦+‡é€™„Æd½2 )Ûøý÷ßUE2©Ö§Ou+ÇC*¿Í›7¯Òöe`S*—Mž<³fÍR-?ýLd{&LPá4©˜&!2ÙŽŸ™3gV¨þ&¡:Y¿´Ò”Л„ÌæÏŸ¯ªÁI3Y–ˆˆˆhOá²?x4j”£Îµ$d&ç=r¾¶}û©*³é馯^;y9Ö-ÄõÅr>'UË$\æ\§l{W+íé0#""""""¢]U'ƒJuI+Êì —jKYê i3 šYÁ°—Ì[Û³`í2 {<öàSvº©ê[º¨žV»’¸ÒA©ªVVhÓ¦ †ªBIRéªk×®Uª`%Õ»¤Z–´Ç”�˜nM©Ã]ª’uK¸I·ˆ¬ BI•1Y§Tw“ ™¦Û>ê pNºÍQ"ÒIuøM–‘êc[·nUÛ’Eç:åë÷ Á<½miÑéÜž xJu¸ôôtUILª¡Éý3Ï<³ÂÏH]ÑH`MBy²ÒÆR‚€ýû÷ûó•ŠqëÖ­CëÖ­qòÉ'‡ç•cä<îºM§¼y²^™äg9vìX” zòþœA=¢Ñî¢ÏCrr²ÕE,yyáó29w“ó ÕgdÈùYŠ}ç _tàä<Ÿ“sI9OsVÌÕÛ‘uIP_Îß"%{!Q}Æ€í¢PÈÄ*¿ï¶b2Ó<ö#?J-¿=àbJí�,?ê*à%A7©l •ËT¸¬‡adÐKBL2¸%“„¡$ܥȢµ]ŒFæëÛ·/ºwï®Ûd­*A"©~%óK I–u»äþ~ûí§Ú€nذíÛ·’å$°¥ÛRÊòR5BosçÎU•¾d_eyÒÞQ¦C9¹¹¹¨ ZÉ:$À%û/‹²¿ÒžRÞ“Ü"Ãjºb…,#ÕÞV®\©Bt=zôPÏ˾IÅ2yþ裇îä½ËúSSSÕ:×®]«–‹F¶+ËIÈlÛ¶m˜2eŠ |I ËxÇO‡ûdôà§�¥²œÃé÷(Û—P  ž Ùɾ9×§}rœdûÉ÷ˆˆˆˆjš>Ï‘óC9.,,‡æuÐLÂùÁ¶æ¦º0“ó$™d9]ÉVŸGéªer.æ¼°A/«Ïƒx>DDDD fDDDDDDD´k,²V¤¦}_†mÜöýô4û«Ã…Ò{°&ôzuªjUÓíB£t#ÔÓR±¶Ú¬+ ¡9sæ¨û2%U$¸óù矇œ¤¡´H¬i2¸%Õ¼¤¥¡´D<ðÀUÕª&Mš¨JYŸ}ö™zNÚ$&C~>ª*yßRíJâ¤:™¦nrdpNöMÂVýúõ‹Z¹vúóÏ?‘ŸŸ¯ZIJe´ªã-ÕÐV¬X¡Z IÕ1ZkÞ¼9ªKöG¶õé§ŸªjnRÅKª€É ¥Tv“ÅÈ6HÎʲorÌ'NœˆÅ‹«÷+¿ R±MÚLÊúå}I…3™ïƒ>P?—¼¼<µÙæš5k*í—À”Ð×°aÃT@ì×_UÇGŽg4xkÕª•ÚùßÙyrÌ$4'ä=ÉÀ©¿/¾øBc!m2åg*Uì$h&Û—ùä¾Ì×­[7õžä÷Œˆˆˆhw‘s9“ð|VV†ªf¦/PrîVVæKz}Îv˜ºz®ÞN´yõyCfDDDÔ1`FDDDDDD´2 ‚ÙÃ!0CϨÃ2Œò4V¢q’Ðëz<EÏ.õ²$G–’n Äþ¢¨ÌØñšp.{[þòÕJåùŸ´×”€šÚnÅ(XÀ±†e´*. +X™É^RX Åe q¦Qi'ksÈGÚéHe)g»D!Á'M‚VÑÈ2<ÓÁ;g/Z…( øH°HW%“×%@&¡M›6©0“„Žä9 I¨HZ<&0«.yÿ²ORýLãô¾9«§I˜©gÏžªÍ£„—$0%ƒvò~"ß³ 2DÉä}É<v’Á¾3Î8CUñ’ ™n_)Õ½ä=ëê²]iù­e¦¦Ãb²M JÉüƒÆ/¿ünW)Ó¤*š®ì%û)ïO¦È–‘n=z4&Mš¤B`ú=4H…±ô¾I Jù}ðœT-“ã Õͤ üÌdßÕï´½~ùÝÐÕ„lwäÈ‘øê«¯Ô²Íš5SïCöOæsVÜ8æ˜cÔsrœ$,'ë’*enÓA6Ù†T‚“}÷-û$Ë˱8öØcUå6M~‡äË<î“@fDDD´»8ÿúü±yó¦êœJBfrŽ.•Ì,˨ÐÚ<ÚÅrî$ËËr+çm‰Bc –ÑÞ"Ù3#É׌$nõd:nõä =犘ä5¹ì×,+óNA=Ù—]_í 'ù²Qnåªçâb)ík¹˜ÚDDDDDT.ò¼:ò9}~z¼Aùy·nƒá|lI{ +n“°ÏÍ}~_°u†Ü·ÏÑ%!ÓqG ¯ƒhOü½µ°!Ï‹Ó_ÜVaàã’a9¸øÐ`%­`Ôlf Èß5ùÛáõöàN�¥^?ÊüzÅú丹3´ÉˆÁž€eÅ\»šÃ0r™&R=@FŠ=°ä1Bï¥~pþ÷J‡ôýhóÆkK(hº•¡‡ä¿Y2À&fñ‚V{‚ÈêvÎã"ƒƒ²ÿ‘­‰ä¿Áòþd Ðd‹üwÁy\õc=_ø÷̱ý`¥‹2õº®Þoð0rݲ¼ì³ü[¡ƒhÎíjúßÙ†•UuÒù^œÛw®ÇúwKŽa¼v©²ÙYÖÙÓ¹~½>9>z¿‰ˆˆˆöDúó¼œ/Êä ™é0¿n-¯o£µÑ»#HVZZ†üüxs¹dÿÌ û§Ïqr£ÝE~÷äWòËñÓìÏiêâõYÔþ»¤>ƒº=0Ìàï­Ë VµÖ…óVæ2"®bÓ¿ßúâžh¿ïü;@T¿J׫‹LÓÓ3Ân]ùÞ99Õç¿ç))ž!ö|=šºõGLVè6à˜,Çmä„ãÝFÞ”°ñ+˜í…‚y.ýŬãK[çW 5õ½T&“°Š ð¤™HK1Pì  ´,�¿?Ø:ÓRUÍì/”­@… ë<Kø f3ô¤Ú×`¨S}!eÑn¯×ãÖóÖ¯/t ÈY KÓ_ ;¿H6Ÿ&ƒOÎeeÞȠОÆùœ_êÊ\‘ä½%zÎåœÛ‰œpþªÚ&ÔòÒëÕí?#_s’/P¥rXäzª#^8ÑàÑû>ž‘¡9ç:õ~'ZÑîà<'ÒçA‘­Ùõ¹Y´@™³í%ƒ+DDDD ˜íb…BŒð5ÄQE)`K’›<i.X©.”ù€ûR_@µ­ñGiÜÝÐ�‘ª ¦K®’v¹áI1–jÀ¾ Vb“´ši >F^"+DŠ�kˆ]‘ƒ{NÕ­ê¥éß!gOÊô¶£ 0V•s»Î [äkµ-Z`oWD¾‡È["""¢=I¢s}nëÜOžw¶Rç9íí0#""""""Ú©ñ Ö¸êYK̈mV|(--S=nHÆ'à 8 9–jO K·±•µ¸T¥2·Ûžì]v» ¸ +ÔÞ3ØZSæS 3¡Nõp È9x-ÐÓP¸êâýÄ ~% öÕÔ6ëJmosw¶ˆ""""Ч*ç)‘íÒË2HODDDTfDDDDDDD{©Š-1+¦Ìj2s.¢¤Z[†m*V²`ÚO˜n 9á j®Ša+y6´Såûæhm¨ç1‚sõ0]Ù¶1rÐkoèÚA³hí9cUþªoǾ¦÷7Ú1âÀ+í)"/Ôp>—h™hÕo4#"""*Ç€Qƒæ‡�—¡j‰ù-ûOC*—1Cd5Ý^2<㘩°až²"–« ÓËTÜg£òvê)\Õh!>Y½‚*â1!""¢ú *ç,±Îý"/öØÝxFDDD»› """""""j°d Âå²â’¯�*V( ¥ø£/‡Ýaï4‘Á«€ô ­Un·Z9H¦ëùœ‰ˆˆˆ¨as^tëõÝ©â9+ˆˆˆˆv̈ˆˆˆˆˆˆ4 —h”øìÁ WhTÂoÉ`Eô Ž[ì2xeš•¿ª‰Š¢ä%ªV朇á2""""ÚSøýåñ<•ˆˆˆv'̈ˆˆˆˆˆˆ8ðÛȨpÅ»Ï/!3ç�+öTZ…rP©Ú¢µ7Š|Ì�ÑÞÅYåvO#û%3~ ""¢=fDDDDDDD ˜Œ•¤¸€NÍÜpŽ›ø|øö†«Âü ØìNúø;ºø3©z`.^ËQÞí]öÄ ¶ú<UÂe2E«rLDDDT×xFBDDDDDDÔ€É`IŠÛ@ÏV&<fpàÄ„Ÿß‚?1³ã>Õg*™@U] W3“[y,öäêDDDDT÷v×¹¡óü_ÎUõgž«ÑîÄ€QƒfÂ4\èÖƒv]Áªe¶2Ÿ„i"f†üß ß§ºå0ŠU]‹!¨]' œá=]‚A>""""‘Õ„w×ùaY™WÝ:ÏW£U[c^"""ª ˜ý?{÷ØF}=püÉ{$NâìHXaS ìMØJËê¿eµì=ËÞ+¬B){•½GØ›@3¬ Ù;qâ=õ×û9'ÿt>mÉ–äï§=$NgÙŽuï~¿wï9-OÚË*•ò‡• ¤ _×ù¤¦I[®´‰{h€ÔšîcO …›$ÊÄ>¹„Ÿ/���œ˜Ð^ºŠ“ÐÖØØlÌòòò;U6v¿'.���]3�����rœ¶ÄÔ6™cÖ*”ÒB1­1«Û¤©90)á×jNÛ’[����]ËI,Óı¶6¿Ô××Kkkk°Š±ûÖÑþX���ÒŽ3�����r™Ió›I‡u‡È>IqHm½_š[˜‰����€î`·átª’µµµIss³I.ËÏ϶twÚd*»²š¾6/«„��@ú‘`����@óùtÂ!0�àÓ\3¿üy“bùÃJù²¼¡M[š+[%ô’w&'���� ÝÜ­/USS“ÔÕÕ…´Át’˵ŤÅ;��è $˜����ã4¹,/ÏoÚ_ö*9n»RÜ[dÞ²iim ÌH´‰V9Ñ[&'���� Ýì fZ¹¬±±Qjkkƒ­1uqª˜)»Š™ÝRÓOL��ÐH0���� GÙW²çþWï3ËJ}}rØfERYæ—ùU ‰Œ6ñ·1)����]Åi‰© bZ¹¬¦¦ÆÜw’Êì*fö­Wå3��€t+�����“‚¾|Ñêd~-P¸Í÷µÊ†Có“yæêx½J¾¹¨HŠ‹‹¤  O˜§����€ôÒÂc­­Z¹¬ID«Içç˜ó8­V¦‰fÊ©dÖñ:¿yžÊe�� +‘`����@sZ¦8Wº;Εò:Qá´ciii‘‚‚))) nËUñ����:zþ¥ç^šXÖÒÒr¾fŸ·9çnÎ:¯„2»U&��@:‘`����@³'"t‚B'3œ–+ʾú]«™éD‡^=¯‰f………fq¶l����ˆƒ“¦ç[Ú S/îi¿è'´:™snæ,î‹~ÜIfá’Î���Ò3�����z�{RÂ^t’C“Δhæ,õõõÁ ����@|ìıöÇú_Ÿx'–ÙÉefˉdN¥2çÜÌ>Ç��H7Ì�����Èq^ÕÊ”=aá$™9Û ^UO‚����$ƾÈG9ç_N3»-¦s_×{‡Ù-3i ��º f�����ô î+Þó\}/;_ ßQ½Œ$3����ˆ»Ò˜ÝÓN<sÍœó.­(m_,.á �� +`����@ŽsOht´fñ«š9Wз¯ÓÛŽÇà�����Äήí<v*KÛ föyš}çnélcï�� ÝH0���� ‡Ej™ân©Ifíët²"tBC¹«����"s'˜Ù·îÖ™¶pçqT1��Ý3�����r@¤+ØcI2SöUô\����É —Xæ~Þ~lW.³‘\��º f�����ô�v’˜;Ìž¼ˆ4‘Ád����Ä'ž2}¬•¥Ý"]4��ÐH0Ëî�����Ü’=wŒ6YÁ¹)����Ä/RûK¯Jfö:ªI�zŽsÙ³ æuE9�����áÄrÞK’çŸ����áί¼ÖÛ e\à�Èu^•<‘¹H0�����1a����âã>r—pÚ_ÚëI.��™†³,xê} 45¸����������Ê+YÌI(ózÎI8� uâ:·‰FfËd¤HýØU~`���������@6ñji·Æ ‡ªf�€\`çºDË‹Af!Á,Äóâl›—G ���������d“T&Šé¼!ñ�€lâäº$’'ƒîE‚Y–ÉËkÿ•åûÚ����€d0������ «äçµçº8¹/ÈüƲŒþ‘éà[[³�����'±L¯œ§Í ����t?çâŸx.â|�mÚZ›Í±Ž³ìÃo,…ë3kÿ‘57Ö �����‰ ± ����º†sþ•®ó0Îí��ÙÄÉuqŠ+…ËAæ!Á,ùÿpÚÿÈtÍ RX ����������2”3yn�€ž¢¨ =×E‡î f#3 fYÀý‡”Ÿ_`Öäµ���������€ìG52�@.ËÏk1¹.šób#¹,;`–%œò€z›ŸŸoÖÕ×-����������ÙKç�I.�ä:'ÇEs^ìd~SÌ]*×y¬`º´¶4KiQ›�����`ãª?����ÈlNBÉe�€ž@s[4ÇÅÉw —ƒÌE‚Y†ˆô‡âõ‡UPÐÞ&³±¾J�����°19����™EÏÓ¼ÎÕ8�ôšÛbçº8¢%–‘t–9H0ËP^$v3ý£ÓÛææ)-j����������™%\bY*&Ì©ö�ÈšÓ¢¹-v®K¸cǵÌE‚Y†³ÿ¨œûÎRXXhn«—Í—Â���� ,g���� ë¹ç÷��èI4—EsZì÷q‘cdv Á,K¸ÿÈtÉÏÏ–ô·Ð*����àÍœ7&Ñv…–-�������⥹,NkLÍqñÊ}Av Á,ƒ¸ÿpìlM{Ó&ÓÉðÌÏÏ“†úZ).h�����ÜM³[¹d����™%\ûM��2æ°h.‹æ´8Õ˼ÚczåÆx=F÷"Á,Kxeqv´Ê,2™žµÕ‹LïZ�����R«������ÄKsW4‡EsY4§%RÎ ² f&ž*fú‡¨ÙííÙžÚ»–$3����@*1Ø������ š³¢¹+]ù:r[¨^–½H0Ë"^™œNù@w’YqAƒ�������������]AsUÜÉeîÖ˜T/ËN$˜e;cÓXæÜ×Eÿ8‹ŠŠÌýÚêÅR URX ������������@ZhnŠæ¨h®Šæ¬hîŠæ°8ù,^¹.᪗!3‘~”ôÇï÷G|ÎùÃs+((0Ï577KC}m`Û©è;Dê›øU����������� u´%æòªy!Ý÷œ¶˜î%–¤2Î2YGÊdf?Ö?º¶¶¶°IfÎú¦¦&imm5å K¤¤¬ŸÔ7Q´������������‰+-j“†º¥R]ß`rT4©Ìéºgwãs'—Ùy.îd2’Ë2 fY$–$3}¬ëUqq±´´´˜¥¹¹Aš—Í•¼ü)ïÕ_ZÚ ¤¹E�����0ìÁ›pUµ³…f)ý>œsd�������É1­0óZ¤¶f±T×·'èXœvÛs:îÙ eñ$—!³‘`–Á¼ZeFK2sÚg:÷ÒƒÚ2S·mkk¯h¦´ªYQI¯Àk ¥Õ¯ûòIk›_²|�����;+–ÁÝF«fëEMÎ ’JEršîWßžÓÆK_רØRŠßá¼·lO ������ÒI‡óó4Å/ù>Í5i–¦†©¯oXñ¼/8ö¦ãpN™³Þ¹Or g™-Öߎ/Æç|1ÜúÂ<v–<ëÖYòW¬Ëw-ú\…Þ655O”å5ðm¯ÓûÎcHw®Ð¶oÅüw_ÅíþîAwß�����������r‹“Øå¾u?¯œ„1½ØÔN$³“Éì[çõö>zZrYQQáÖMÐY¾â¶ÕµøWܶY‹ßºu/æq¤[÷}·¨IAT0ËÑ*™¹ÿ˜í¤0g;'ÑÌÉUºÎ¹*\ÿ­8_Â©Šæì#Ï������������2[´$.wîIû:ó_óØîà•Xæõؽ_*—e/̲„WÂW¸$3çÕ®^æ<o¯s>�v¥3{������������r—WÞ‰Wr˜HæÞÖn‰©š×cd6̲Œ»š™;ñÌyÞþcv’ÊܯwZdz%”ÙëìVš������������ÈN~‰ŠTyÌ«í¥;Ù,Ükm$—e̲P<-3•ó‡lW(ÓÅ©^f'•y%›Ùm7�����������Â%ƒEjsé®pkÕ²pëùH0ËRáZfÚëÂý¡ºʼöe?�����������€Üån‰é¬ózžÄ²ž‡³,®š™r'šé­¶»´Gjéþ㎔lF"�����������@f‰”Øî¹XZ]Úm5cݲ f9 \2¯õîv™^^Igöó������������È‘’ÉìõñT'#Ï$w`–C¼ª™9ë•;Y̽ޫrY¬ìT0�����������È,É$y…ké~>Þç}H0Ë1᪙Ez.Ü‚;ñ,–¯ �����������€ì-‘,Üöñ>‡ìE‚YŽ WÍÌyÎm»hüT/�����������ÈLÉ&}¥"ñ Ù³©š™×vŽxÆø€������������È ñæ7’ûH0ëbM4soo£J�����������@nI&9ŒÄ²žƒ³$ÞD3¯×����������� ç"‡¤ç!Á¬²ÿЩL�����������€HH*ëÙH0ëáÜ�$œ�����������ôl$”ÁF‚BDû€  ����������� »‘@†x`†¸ð������������ôy�������������€Ì��������������žH0�������������x"Á �������������à‰3�������������€'Ì��������������žH0�������������x"Á �������������à‰3�������������€'Ì��������������žH0�������������x"Á �������������à‰3�������������€'Ì��������������žH0�������������x*����@Fñûý�¹Èçó ������€ìB‚����t1È�ôTÑ>ÿH@������2 f����F$“@ì¼>3I:������º f��DÑÖÖ&---fimm5…¤�€—DŽS�ô4‰$Ž‘l��� Qz>‘——\òóó¥  À,ú��„G‚��šššÌÒÜÜl’Ê��ˆ&R‚X¬Éc$™è)tb'–Ï<wB™ý’Í����ÄCÏ't¼ßkÌ_“Í ¥¨¨È,��  f��¬  ef� Vá$¢%œ‘L ' × 3ž„2ç9Í����$ËI<khh0‹‹‹ÍB²��íH0�ôxõõõ椑Je�€xÄšX¦-•“y}´õ�©Â%~EJóú¬sZÕ„K(#Ñ ���@ª9£ke³’’)--��z2Ì��=V]]I.cÂ�h `vu2¯mcM@€lkœ-L/qÖÙÏ‘h��� Ýô|¤¶¶ÖÌ'h’YYY™��Б`�èqôª#=!dB�¯p c^Ieö¶±&œEOÆ )@¶ˆœäe'yÅåî„2ý|Ôûέó\¸¶š$™���H%=ÏÐ$3í†R^^nÚg�Г`�è1œ+ššš�€xDK, W½¬¨¨HJJŠÍmaa¡i« ‹WB�ôtÎg¨Æíº477›Ø½½5MS§Ä2'‘Ì+ÑŒjf����ÒA/©®®6ç)šh¦ã<��ô$˜�z½ª¨¦¦F��ˆG¸Ä2§ÚŽ;ÁLéàbyy™”””Û¾�¢s’Äô³S“rõsÔ¡Ÿ»Ó×ÖÖ™‹Fì2;¹L_K¢���€tÓ‹atéÕ«Wȹ ��¹Š3�@ÎÓÄ2Œ� îä²p‰eºè@bEEo)++#‰�Ò@Çô3V—ú›Ö4Ë—W›8ßN2s>§½Íø|���j:ÿÐÒÒbÍ��Èe$˜�r–SªZ[ë��«p‰evëKç±V+ëÓ§iƒ �èš(Ö^-²\eÙ²e¦ª™SýLoµÅ¦ýXQÍ ���@:è…/zÒ»woªÙ�r f�€œ¤'sË—/7·��ÄÊN.óªXæ$–iŲ~ýúIi)-� ;i‚oIÉ ©¯o¥K—+š9“:^ͨf��� ÕôBw½ø¥¢¢Bòóó�€\C‚� çh9jM.s&“��ˆÆX¦œd2;ÑLo  }úT� shÂoiéÐÀ„ÎrY´hQp½“X¦ŸßNÒ™>¦š���€TÓ Þ$³‚¦á�¹…#� §8•ËH.�ÄÊn}©ìªev’Yqq± 8@ŠŠŠ�™4X“Í.\$æsÜ©hfW3SN¢If����REÏ;tŽ¢OŸ>T2�äš@�r†sâFr� Nâ˜s_9 ez«IËÎ}½òtøða$—@ÐÏjýÌÖÏnçs]?ÓíÏxeìJ–���� æ*��¹ˆ3�@Ψ®®6G��Dãn‰é®Vf'!ôï_)ô�@vÑÏný ·?Ó½>ó$™���H«Ð9 ��r f�€œPSS#ÍÍÍ�@4^ÉevÂAGÒA› 8Púöí+�€ì¤ŸáúY®Ÿé?çý$™���H³Ð¹ ��rA��åÌ�@$䲎ǚ\6H**z � »9Ÿå .çZKýÌÏË ½îÒçó™[çxá<���€DéÜEAA”””��ÙŒ f�€¬¦e¦¹�»j;¹¬ÿþ$—@ÑÏtýlw*™9‰ÅÊ]Å ����RIç0t.�€lF‚� «ÕÖÖ ��Ѹœ¤ç¾ó¼&TTô¡-&�ä ýl×Ïxý¬Wv’™²ï;Ï�‹ š�€p˜Ë��d;Ì��Y«±±Qššš�€HÂ%—Ùm1Û×·Jqq‰ 8@��¹I?ãõ³^?óUçcIf�€øéøcT�€Hô8¡s��d+Ì��Y‹+~��Ñ„K èh‡é·’ D (�€Ü¦Ÿõú™ÚÙñ˜����ÉbN�ÍH0�d¥ºººNÕ��ˆÆ>v„&—ùMU›¢¢"�ä6ý¬×Ï|û`'‘qž��� ô\Cç6��ÈF$˜�²R}}½��I¬­1k¤¤¤Dúôé#�€žA?óõ³_ŠV™����ºs�€lE‚� ëè <�€d¸[cöïß_��=‹~ö»[e���@:éyIf�€lD‚� ë444��‘ÄR½ÌYÊËË¥´´D��=‹~öë1À>&PÅ ���@º1Ç�ÈF$˜�²JSS“´¶¶ ��‰°+ÔøýíIýúõ�@ϤǀöcCG"2‰d����ÒIç8t®�€lB‚� «466 ��‘¸:Êü®E¤¬¬LJJ¨^�=•ôX Ç÷qB…;¦����@2˜ë��dÌ��Y…“. ëMú³|úégR[[+@6r'˜Ù÷ûô©�@Ϧǯc„s����R¹�@¶)��²%£®w×]÷Ê‹/¾dîWVö“[n¹I$@¦ŠV½¬c_|>Ÿ”—— � gÓcôؠǽï7œûíÏ·s?���€DèœGQQ‘�� H0�d Ì‹ƒ>L–/¯–düßÿn–ž`ìØå½÷>>Þa‡íåüóÏ5÷ëêê䥗ÆŸ[²d©¼þúrä‘ [x%œ9í1+*z“ €˜UWWËN;íq0 ¿ >\ÆŒÙQvß}×À¿³žU%ïÜsÏ9®ì³Ï^rÙe ÉôX Ç„öÒOB2ZMMüéO‡†¬+,,’»îº=püöuõõõràYwâ‰ÇË~ûí#�€®ãõ9~ùå—È[lñuÇw¢LŸ>#øø ƒþ(ÿøÇÑÒ")åº9sæÊÑGÿ#dݽ÷Þ%+¯¼’�ñ Á �Mh‘ �ÈÍÍÍ ëèàFYYiȺÊÊJ²QGbY{õ2½¥zRM†u¢á‹/¾”믿QþøÇƒåÃ?�™O ö1®| dºææ&¹í¶Û�€\ÓÚÚ*{ì±OÈòå—_ +˜ó��dÌ��Y¡­­Í (�è:rÁÿ4•4Ñl=v—½÷ÞS€LK{L‡WJKKH§ªªerÖYçÉGM�™M zl°un¯úI¾ýö;yë­·���ÙCç<Üç!��d*Zd�²BKK‹�±Øk¯=¥¡¡±ÓúéÓ—¯¿þ6øXÛí¿ÿ~žûX{íQ‚v£Go"÷ß�¹Àn©‰yy\oƒäl¿ý¶¦¦ÒAáÅ‹›êev«fý7wÉ%—˸qÏKïÞ½@fÒc‚´¡W›L Ü{ïý¦ÅZŸ>}���ÙAç>h“ �È$˜�² fˆÕ‘GþÍsýo¼Õ)Áìøãÿ!ÉЫËtò1??_�dwÕç¶½zY‰�É:ðÀýe»í¶ Y×ÐÐ W\qµ¼õÖ;ÁuÕÕ5òÚkoÈ!‡üYÐu4QˆAzÄC ú7¬±}ìи‘„3d=ÞÜu×=rÞyç���² f�€lA‚� +Ð]í÷ß§ËñÇŸ|¬U-^{mœüöÛoòßÿ>"?þ8ÙT¨9唓:µüé§©òúëoÊÿþ÷?Y¸p±™¬¬ì'묳¶ì¼óN²Ùf›z~Í«®ºF&L˜||Úi§Èž{î.“'O–§Ÿ~V~øa²Ô××öU)mô9è e•UV–HfÏž#/½4N¾úêkY°`‘””Ëúë¯+‡v¨¬¹æÍÁR‰ç¬³N—]wÝ%ìóZíL[j¾ûîûòꫯ›Ÿ—&ó 2X¶Þz+ùãˆXÁG·8ñÓÀk_5¿ƒšš::t°ì¸ãöò§?d&v÷Ý÷À×ÜvÛ-2jÔšDÒÑʬý¶¸¸X€t())‘Ë.»X>ÿü Ó"Ó1qâ'ž fš¥Ÿ™¯¿þ†Ì˜13pÜXdÚ<X6Ýt´pÀ~2räϯ¥Ç†±co >ÖÏÂÇXæÌ™kªØ|úégæ= Ð_Ö]wóõ7ÙdcÏ}í¼óî²lÙòàãK/½(ðy»w§í.»ìJyå•ׂwØa;¹é¦±’ýÞ5|üøǺ)æ½êç¼¾ßõÖ[7p¼Ù9ðù¿ƒgRϹçž/ï½÷Aðñ '+Gu„<úèããÞËæøWQÑ[Þzë5bÕqlÐcIeÈ0Çõþûãe—]ÆÈèÑ£%ñžÓèó‡ö×ÀgyUpVŒÖÏgÛüù äˆ#Ž>Ö¿±§žz,ð™]²Ý¥—^.Ÿ}öEðñˆ«ÈÝwß!��oî1¥Øß\Xù¿ÿ}øœ}&ð¹þ“466Ë A盘óŒaÆFÜg²cJŽæææÀñéùä“OåçŸ œwT›Ï=®¬µÖ(SZÇŒì¸KÏÎ8ãlÏý]tÑeÖ÷}Yà¼)ô˜äŒ-½ÿþûæx¦ç………ï} üáÊ^{í8Ç)‘èXô|8_ySfΜ%µµuŸ×3fÇÀØÖ¤s�€lA‚� +èÀ�ÐݦMûMÎ:ë\“äåE¯6»÷ÞÌà›ÛüùóÍòÁãeà 7óÏ?Wúõë'‘èþ>þx¢\}õu!ºŸ7ß|ËìK÷³å–[x¾^'Þo¹å¶À@^Sp]SS£dûüó/å’K.”TÓ÷|÷Ý÷É /¼²~úôfÑ÷tíµWybêÏõúëoO?ý<d½&\<üðcf‚骫.ÀKGYçÇ^Ïéà2.zåñÆod&ùsçÎë´NšœwÞ&!ÌÖØØ(K—VÉ”)?™„©¿þõ/ròÉ'ÄT1S'lŽ=öSÅÆþÚºh"Ûÿýßárê©'u{‹Ø~øQþùÏ =.:‘¥‹V[ýõ䆮•FÝçå—_e’›Dé±!ÚñÄžø$ ™B/âÐÜqÛmwÈ=÷Ü‘PB}¢ç4ú· Igo¿ÝQÁóûïè´ï¾û.ä±þévšX`¯Ó zl›o¾™��⣟É7ß|kH<3kÖl³è…z¡^0â%UcJšàuÍ5×™c·yóæ™E/8Y{íµäâ‹/þýûK24Ñùšk®oþ²^oÎØÔË/¿*ûî»Oà¼é)(è<Mº|ùr¹òÊkLržM_ûàƒˤI_ËI' @ª0÷�ÈÝ;¢ �@Œ8ÉB&¸÷ÞûÂ&—)½ZÔk"ÆM¹tR½®®.âvšppÝu7†ý÷¯ 7Üp“,^¼¸Ósß|ó­yδéÀš>¿téRI¥÷Þ{¿Sr™M'¤4‰Ì=y«ÆŽ½±Sr™M%ï¹ç>âÑ9Q ýÖkH¥hI':YqÌ1ÇuJ.óòÈ#&ñ/Šº]MM\xá%!Éenš°öÐCKwúí·ßå„NñL.sÓ¤ƒÓO?ÛT=ˆä믿!¹ IsŽ î0Å+n2ɨQ£L—Ccn½@#ÉœÓl±Åæ!Ûh5c÷ùÓwß}ßi_ßÿcÈc½ÀÄ},sï�™~ß~ûaãM»îº±æÂ·T)éç¹+¼’ËÜôâšK.¹"jÜIuuµœvÚ™’ËÜôg2nÜËrË-·z>ç•\fÓýëy*Ì}��²³*�€¬ÀIº›þüúëoMe‹Í6-Ç—††2dy^¯~´“£4±@Kîo»í6R\\dÚ[>ùäS¦¤¾Ò«u‚ÿÄû55QK+Ìì¾ûnæJÎ%K–˜j‹u$”éþôªÓ¿üå°à:-«®W™ºµÍV[miÞ›¶jÓÊ9ú=¥’¶]Жd{î¹Gàg3Ä &j+5{PRÅ4a`ƒ Ö®›0ácùä“ÏBöUXX$»í¶³i‡3k–V²y[Þ~û]âáüèß°ÞwÇR H”N¸|ûmh…mìÐÉxMÓ‘MlÙo¿}L‚À²eËÇ€—L«`‡VxþùM•špœdµ-·Ü\þô§?š–Ä“&}e’ ô˜å¸ï¾ͱE[w‡›nº%$!A[ã{ìßMµ2MD?þ£ =nè÷¿ûݧs ÖÖÑZÙS«öh"6çØà/ôØ¡ë¨T†L§Ÿ©Gõ79ãŒs‚ëô\b̘eõÕW‹y?ÉžÓŒ½±9_r’ôoH+‘½IpŸ^“þß:‰ïNvèÝ»—iõ �ˆžè縞ch|ÜÖÖˆ³'„TšÔçæ›ÿ8?¸;ë¤rLéî»ï I4îÛ·¯©¨¬c\z~¢ã@Ï=÷|ðù_ýU>þøÙqÇíeäÈ󆱿ýœ{îù!û=ôЃƒ­šuÌÈqÛmÿ If+++•Cùsà<c}sî¥-:õXç|oZáY¿'=Î9tìÉ\VRRŸÚEVZi¸©þ¦cS}4A€Taî�-H0�dª TTTÈØ±×¹F†¬×A€§žz:dÝ 'gñë®»®I¨:óÌs‚ƒ¯¿þ¦i{¦ �á\xá?e›m¶>Þwß½åÿ8Á$8´4¿`¦WšjÕÛÎ;ï$gŸ}fpÀPtÀPÎR©W¯òÀ€Þ¿B)¶ÞzK9眆l§ v‚Ù«¯¾ò¼&—éÏZ0{ì±›ùùÙI@"H@:éÈØ±Z]rIÈz»±&»+—]sÍ2fÌNÁÇt {ì‰!-Â|ð¿ràûGü÷»ýöÛÊ7^l©“úš¸uê©g·ÑÉ•7ÞxSŽ9æ(éjú÷·×^{šÏwM ›9s–\wÝÕfÉ¡íEµ‚Á—_N ®ÓãF¤3õç?8ÞœÙíí?‘½ôo‹ód£ººz3Ѿí¶[Ë„ Í:=çø×¿n“[o½9¦ÏÅTœÓ”––Ž9ë†$è…%N‚Ù‚ ;§¨_~ùÕ$ èëÛ_:±¿é¦£ùl€h¼¯ã?ŽM7ÝTúöí#Ï<ó\p¶¦×sŽõÖ[×<NÕ˜’ÆTcÆŒ‘5ÖXCfÍšø:sÍ×Ê+¯ÜFÏS~ùå—‹s´•²&˜é1Aß“ž_¹é±Æy¿ö÷a'}iÂóر×¾þêÁuzž1hÐ ¹ï¾‚ëôBI;Áì7B¿'}šè¶Új«×iòµ õø ¤ç �€lÁ™9��@ŒŽ8⯒˔^ÙhW0 ¿IsÓ+47ÞøÁÇzeÿW_}#ᬶÚj!ÉeJ“ÜôªIÛâÅ‹BöYh›I­ârüñdž$$èýãŽû{p'UvÝu×ä2¥“Pk­5JBßsÇÏK[º¹[åì¹çn!ÉeJóöÞ{/’á Ú‘`†Txè¡GLå]xà!“Xvà6•Ælš|»Ï>Ÿ_š`fÓ¤�;¹LéUò§žzRÈ:m)©>‘œ|ò‰&á·Þz«ê1êƒ>”îàTÃ9é¤ä†®“'Ÿ|4$¹ÌQRRò8ZûAƒ&½Î IqŽ Lð Û44´Opÿã—¢¢ŽÏÏŸþ%Øî2–ÖÍ©8§Ù|óÍB¶·«‘ÙÕË´Š¦V&SN¥³Ž×LÙÇ[l!�€øôë××\œâvøá‡v š8ñÓàýT)é6š˜vÔQGÈÅ_(wÝu{Hr™½›}Ae<Þ{ïýÇ:žf'—9ößß÷­ÇJç\C¿ö”)SB¶ßo¿½C’Ë”Ž î¿ÿ~��ÐÓPÁ �� Fze¥—ß~û-ä±NÌ\wÝ žÛjµ1÷kwØa;ÏmGŒXÙsý°a¡-ÍìvJlë®»¶g•´òòrsŧ]!&YÚšÌ˰aCM‹3‡ýžçÍ›ßéŠTmQàe›m¶ iŸ��ÝI¯´w·ÂtÓ‰•+®¸Ô$;~þùçm¶Ùf+Ï×n²ÉÆRVVÒNR«¼è•÷^´Õ¤{òñÕV[˜*`Ž9sæH&ÐjjZÉì·ß~7•ô¦Év¢ŠÖ2D[‹Òú@OÕÚÚþ9xð 9üðƒM´CÛ$ï¸ã«&«TÓl¹å–r÷Ý÷ŸÓs�õõ3Ún9¶Þz뙋Nœc“~ök2ô’%KB*çhâ°¶Þ�Ägà 7ôŒ5¹JÛÛçóçwŒ#¥kLI’µzñŒ3eáÂ…²`ÁsŒ˜:5ôÜ(ÑVîãØŒ{Ñ€{MÏGúõëgÚkº_³Å›{îC×?ñÄS��Г`��#w5‡» š?>¶Ê0Ë—/û\AAA˜õ‘'ЫªªB48ì¶Zñ%•½·pß‹ªªê\•ÆDç2dˆ�©@›LtMøºøâ d»í¶ ®Ó6¿ÕÕ5!Û…ûlÓIuMÐä+‡NÆ„3`À€°Ïi+ÛòåÕÒÒÒñó94É@'dÞ¼™lJ–V|’Eå2d+ûßîŸþtùl>}†y¬“è>ø°œyæi&ÑÀ«Õ˜JÕ9ÍСCd¥•†Ë¬Y³ÍãÆÆFsÓ*2vëËõÖ['pL[Lpp‹Ý Æš¼-9�ÐYeeeØçÜç K–tŒ#¥zLiòä)òâ‹ãdâÄOR÷‡cWátÄ~«6·^U“ÝçQëS;ž�� H0�dM`™*™›é\s¿ŸHﯭ­ûÿ®š›[:­ËÏ÷nqÖ]‰È.±üM’`†t(**2-Å´õËÎ;‘]wÝ9å“â‘þ}‡KPšL–)üI¹å–Û<¿M~Ð$­\ íj€®Äñ¹@ãåÓO?EÎ<óÜà¿éwÞyW=ô`)++í”äìHå9Íæ›o.³f½|¬Icz|œ=»£zæúë¯/‹- >Ö*6úÙoW=nß×f�¹Ä«ªX}}CÔ×ÙUU^^äx¤µµ%æçìØ&•cJ/¼ð¢ÜsÏýaã~m5©Ÿýîêc]­©©ÑÜz½Ïpߢ•Ö�/œ_��²3t�€¬ <"MšÝ©ÿЫB7Ùd#¹æš«¤»hY›ÝbÆÍnƒÐ]úöíÓiÝÒ¥Už•x´e zLÑc Œ[n¹!¤:Y,´ÒV¯^åRSS\7wî\ÏmuÒBÛ´Ø ¥¼¶³Ñ×xýÛž5kVÈ㊊Þ“vµu¥­D“ ­hó¯ý;d¢f‹-6“½÷ÞË´¢Ö–Êú¾ÆŽ½‰3t9Î7+ÖYgÀçêžòÊ+¯™Çzlxâ‰'¥¬¬<l‚Y*Ïiôsýùç;Ì~úé'“`æÐûÇ3Õ_ŠŠŠÍľVZÓJgS¦üäÚ׿�¹DÏ4Þµ/�Ñ*_;î¸}Ø×hcw¥ÉŠŠ ‰dΜ¹ž  êׯu?5cJznrdÄýzlÙyçeíµ×2•šõçpÇw¥$ÁL«GÛŽ<ò¯r衇H<¼ª¾Í›7ßóL[|©Âø� [pÄ�dN²ÉVYe•Ç:!Þ•b†òøÇ§È²eË:m§­l~øaŠt7¯D²o¾ùÖsÛ¯¿þF€TȤjNèyFòx„‰žÛ}ùå¤N• Ö\s G·ýì³Ï;­×I>m3|øðÇ¥¥¥!ýušxÑɯdL˜ðqÈÕþn¸Ü~û­²×^{ާ+“ÞjjjèjKŽ>úȤ1=477…Ý>•ç4š0\^^²/;ql“M61·………ãÀúÁõ?üðcàøókð±¶Öc�ä­T´úê«…¬{ë­·ƒ­…½<ðÀC*fiÕßH¾ÿþ©®®î´~ñâÅ&ñ×f#¥jLéóÏ?yÏšü|õÕWÊÎ;ïd’Œ¸¿¶¶VRaĈ!9o2dp§JRŸ|ò™ç¶áÖ‰`î�-8b�²'YÈdo¼‘ôíÛ7øX«<ýô3¶ÓÖ1'žxªw܉rÝu7ÈSO=Ò&U¶Ürs××m’;î¸;d`OïßyçÝÁ6�ÝI¯1"tBKÛ(TUU…¬ÓÁËçž{A€d8ƒÅMM©oO Äj=v y<iÒWòî»ï‡¬khhÿûŽuC‡‘6úƒD¢ÕÁÜÉYO<ñ”L›Z`‡¶ y<hРÇãÆ½Ò)É졇Ž8ñ¥Ü2îJhúYnóšÄÑ ,MDºšsl E rAYY™œpÂqÁÇz.²dÉÒ°Û§òœFÛž=:øXß~û]ðñæ›o¼¿ÙfÛ½ÿþx©««>¦z€\µÓN;„<Ö*Žçœsž‰íŠªZìšk®7Ÿ6­©jD¢çwÝuOH1 ÒŠa[n¹…u?5cJZµÒcé¹ÁçŸ!‘xÅe^-EwÚiÇÇ_|1I¾ûî¶ÓvÍ|¸œvÚ™æÜIÏ{œŸ‡V…[{íµC¶×j S§þ²î—_~5¯R…¹�@¶ E&� +è�5©tà ƒ”ûï0¸îᇓ™3gÉöÛog¨fÏž-Ï?ÿ’üþûïæùéÓg˜*3Úº&Õþð‡ ÍÕþóæu´*?þC™3gŽl³ÍVæñÇ’Q­ÇvÞyŒ¹"ס“_§v–üéO”•VnUŸ{îùÀäÕb¢Ñh{ÝëùÆF® ;h‚™&kÙmk.¼ðù䓽ÌD‘&ؾôÒËæXa;ê¨#¢&¾hRØ!‡üÅ_ôøóÕW_ˇNÙ¦¨¨HöÜsuÚÎÌž€Ñ ©¿þõ(ÙvÛ­¥ÿþ¦ªÌ?N6 îªj6}ÞöÉ'ŸÊ /¼dZ_j¢ÀàÁƒCž×Š:ú½ê$›¶ Ò –7ß|k`²©Z€®¦Ç†hc$Ÿ!›l»í6²õÖ[ÊĉŸFÝ6Õç4›o¾Yàøó‘¹¯‰?ý4ÕÜ×s{Mfsl¶Ùfrç÷˜û“'OÙ‡›� i{ø7Þx+ðy:=¸néÒ*¹êªkMeaM Ó¤3¯1EŽ?þؘÆJõ"MòÕcž#ôÑÄJ‘jå•W’uÖéHªJÕ˜ÒÀ¡ÕêõXôæ›oÞËV&î× kwß}_ØÖÍ=>õéÓ'¤ŠÚ£>8gZfÎYvÝug“ =räˆÀ1eSùâ‹/Í6zì¹ðÂKåÜß\¤£ûÑD±gŸ}Þ$¶é¢Ç¦õÖ[OöÛoŸà¾÷Üs·ã‘&Ñ}ö?_gŒŸÒŸç;(»ÿ‚Mäæ>��Ù‚3�@Vpʦ™J¡¾ùæ™4éëà:½ÂÔ}•©íä“O”^½zIªé Äé§Ÿ"çŸQH’þÙ€ÅÅŲÁë›lÝíÀ÷7IÓ¦uTË™?¾üç?w†l·é¦£3âý"û¸ìê@WÓ$¬«¯¾BŽ;î¤`…/mCöâ‹ãÌâe̘“#DܯNDi2˜N”<ðÀÃnwì±Ç˜„/›~k¥³ššŽ5úÞÞ{ïƒàã^½Êå°Ã‘{ï} ì¾×[o]yùåWƒuÂèꫯ3_oܸçMå´±c‹ƒ2ú5®¼ò³Ø´%ÚŒ3èJö±A$“!œxâñòõ×ßšD…hRyN£UÊt2ßÝÒmÝuבòòòàc=>èb']+M°Ðs�ÈEÚ"øÊ+/“3Î8»S™~^kro8GùW“@^¸¢ Uznà$ùºéçôgœR=)UcJ[mµe`L§£Ê™VB»å–ÛÌbÓv™ZU,=¦¼ýö»ÁÇšàìŒiÒ—~-uÖY§ËI'*‹/ ~M­´©‹=ÖœzêI!ëvÝuóµþ÷¿ïƒëô{xõÕ×C¶ÓßU—‘*Ì}��²57�Y“,d:€¼ì²Kd¯½öˆº­^©yöÙgÊÎ;ï$é¢WgžwÞ9AË"ÏçuððÌ3O Ä­$™@W/»ìbY}õÕÃn£W£žzêÉÄÃà<Ö Lî O +édÌý÷ßÝ)ÑËËÿýßáríµWEÝN?K5q­²²_ØmŽ8â¯fqÓ™W\q©9FyÑXlìØkM[ãH´Š&‡¹iâÀ’%KLuý¼t…¶&¡yäßèJzLpªó…;v�ÙhÀ€¦f,RyN£ÏÖZk­Nëµ²™Û¦›nÚiÝèÑ›ã�ä*«ÿóŸÛ±ïö1mß¿¥\zéErÈ!Ç´ýàÁƒã>§…»‹ŠŠå‚ Γu×]·Ós©SÒãÀÙgŸ1îßj«-ßÏŸ%=Ñ‹i¼hg‡žkÜzëÍžß“›VVÖó›#V Y¯ÇÂK.¹0b ÒµÖ%ÇÿR…¹�@¶àˆ�È :p¡­­­d*�Ѩ}öÙ[ÞzëÓjlñâÅR[[k®ê×·Ñ£72­t -ÝvÜq{YsÍ5䥗ÆÉ¤I_É‚‹AE¦jÀ¡‡bZ Lž<E2Å Aå_ÿºÑüìÚÛ8Ì’úú†À kse衇ì™DyDã•( Ç­T£™€î¢ŸÃÏ<ó„ùÌ{ã7Í•ø .’²²R3á¡U8`?YuÕ‘1ïS“q}ô!¹ï¾ÍõÚjG'c´²˜~ŽêdQ8ÚM_«-g>ÿü ó^ÊËËd“M6–cŽ9ÊL¤Ì›7?â××*�>x¯ÜÿCæë;Û2Øì¯²²Ò´±Y}õÕÌ×ÑŠZµAÔuÝ>ûìeª©¹+�é¦Ç=6\†\¤Ÿ­ï¿ÿAL±*Ïi¶ØbÓNm/µ}™Ûæ›–qã^v­£=&€Ü§­Ï?ÿ\9ì°ƒeüøL»øE‹™ö%%Å&v1b„l·Ý6æsQ«†ÅCã{=¯xâ‰'MËû††¦Àãø~SYcôpR1¦¤__ßÿsϽ ß~û,Y²4÷ç›s–]vÙYöÜs÷À¹Ð{&Kß~û­òä“ÏÈ_|aÞ‹Ò kŠŠŠ:m{ã×ÉW_}%ï¼ó¾©”¯?ÓææÖÀÏ»·¬±Æê²å–[šép‰Ì½{÷6øh¥}=OÓÊÊ+2(ðsÙAþü烂•¨d鸦]E�€Lë(™/Æç|1ÜúÂ<v–<ëÖYòW¬Ëw-úœŽdä555O�@N«©© „4€žkîÜyrÔQY÷䓚«Tѳ٭;œÇö¢É‰ºè}MVÖûúï&Ò€:éž~úY;ö¦àã¡C‡ÈË/¿ �â§ÉUUUÁ [œdd'éÌ^l$ �Ô¬Y³Í­¶ëºÃUW]#&tL“éEgu†�ÈlZÖ«Ý8� ·n¸Ñ ËWܶºÿŠÛ6kñ[·îEÂ<Žtë¾ïé9ƒ”h�@Öp_‘ ·TWWËgŸ}.<ðPØ 9zMVŸ"¹ áØ‰�v€³~éÒ¥Ó��= ô˜àN ³!$’���H5æ<��Ù„™�€¬ÁÉ»´MÚc=Löyï½÷åðÓ 7Ü@JKKdñâ%¦ÕÚóÏ¿ò:mÍÄÊl¦ÿÞœvO�€žKN ®R����¤s�€lB‚� «Kcc£�È-»îº‹Œ÷Š,_¾Ü<^´h±ÜvÛí_3räùÓŸþ(€ÒD�»™ýØ+IÀIX²d) f�ÐÃé± \ûK¯Šfá���@¬t®�€lB‹L�@VᤠÈMƒ’믿ZFŒX%¦í7Ýt´\wÝÕÒ»wobånu–——'555ÒÐÐ �€žIz,ÐcB¸ÖÊ����jÌu��² Ì��YEKFçççKkk«�È-«®ºªÜyçí2qâ'òÉ'ŸÊO?M•¥K—&~M…©þýûˬ/Ûm·¬¿þzÄÂn‡.q`É’%2lØ0�ô<z pØí1ÝIÉ����*:ÇA{L�@¶‰u„Ìãs¾n}a;Kžuë,ù+Öå»}®Bo›šš' � G¨¯¯—ÚÚZ�Àf·È´ë­³h‚²}_—¶¶6YmµU¥´´T��=‡žWL›ö›©^¦<º8 eöýpUÍH<�8fÍšmnWZi¸��Myy9ãP�Ѓn¸i ,ËWܶºÿŠÛ6kñ[·îEÂ<Žtë¾ïé9ƒ™�€¬£'^Læ��ÜÂMüÛë½Údêí‚ �гèg¿},ˆvܰq>��� z.Ar� ‘`�ÈJœ€�âáN(³×颕1«ªª�Ð3èg¾~ö{U)s'œ���@ª0·�ÈV$˜�²RYY™™ø� ^N€“@àÜΞ=Gššš�Ûô³^?óíc€snAR���€tÑóÛ�� 13�ÈZååå�€-Z›Lw3½oWª™3g®��r›~ÖÛ•-íä2w¥KûÖA���€D0§�Èf$˜�²Vqq± ��±°ì–hvB¶K[°`��r“~Æ;­1ícwKL’È��ñÐñ)ƨ��‘èqBç4��ÈV�@Ó+~hg�°iR€ßïïôؾդ‚¶¶¶àc»=ÚÂ…‹¤  P*+û � w,Y²Ô|Æ»«W*ª—�’1hÐ@� ª—�²Ì��Y-??_zõê%��ÄÂI"s¸[¤9çÎ+Ë–-�@nÐÏtýl÷¹os+���� :‡¡s��d3FÌ��Y¯¤¤Ä,��8"Uœq·Åt·ÊtÖÏš5›$3�ÈúY®Ÿé^‰e^ÇÕË����$‹ù �@® Á �ô  ÂÂB� špíМ¤;É@´¥� ;ég¸“\f'˜9UʵÆ���€déœX��¹‚3�@ÎèÝ»7e¦�A‘*ÏØíÏìŠ5N¢Oìv™óç/�@vÑÏn»-¦~¶»“É"l$ž���ˆ‡žèœ��¹¢@��È:!TQQaZà´µµ ��nš à÷ûƒ÷íõ6'É µµÕÜ.Z´Hêëëeذ¡RTT$�€ÌÕÔÔ$sæÌ•ÚÚZÏä²p‹ƒd2����Épæ*ì‹X��ÈvÕ��9E'Ž8q�8"% xµÊ´§’™óœ&*Lú³TUU � 3ég´~V;ÉeîÏr÷ç|,­1I8���+'¹Œn+�€\C3�@Î)((>}úÈòå˃•g��=—]µÌýXý´ê¥“h஀i',ëkôùY³fKUÕ24h”•• � ûÕÕÕË‚ ¤¦¦&$yLo£%—Ñ���@*8À“\�ÈE$˜�r’žÀi’Yuuµ477 � gK4ÉÌ®l£IËú¼¾N+ãL›6Múöí+ô—’’�t½††Y´h±©\æ®H©çÎ:Er���€t),,”Þ½{Ó]�³H0�ä,=‘Ó$3­b O��Ø"%™éz§b™óX9ëœç—-[f’t�±²²Rzõ*'!�ÒL?kjjeÉ’%æ‚wb™]½ÌN$³+˜9ë|v���H”^xØ«W/� —‘`�Èyzb§m35Ñ �Ðs9É‘*™9÷u½;¹L+á8IhîD3=Æ8Iýûk¢Yo)-- ¼†«V Z[Û¤¾¾>ðy[-‹/1Ÿ½á˼ª–y­sP¹ ���@¢tþÊö�€ž€3�@ 'xZ¢Z[š555 � çŠÔ.ÓI:ÐÇv%3g±×y%š)M|p’ÊËËK™ŽCE¥ °üÀâ#�\Ú?Sui•ææ–ÀÒ$¾ÎÄñvÛbwâ˜{]¤ÅFr���€D™q½ �€ž€3�@¡'z+&©jMB�� gòJ2Sv¢™½sÌpÛ‹½/'ÙÌÙ—VÛÑÅÞ·ÍÞ�z"ûó6ÜsÊnw®B™;‰ÌÝ&3RÕ²pë����À¦çšX¦�Г`�èqôÄO—ºº:3éϤ>�ôLÑZfÚ‰š¤ì$š¹“Ìœ}8Éföc{ßîã{ûH8VÈVÑ’¶bmUé•<éq¸Ä²X���€›ž7”––JYY™��Б`�è±ôDPM2khhÖÖV�ô<±T3s’ÁÂ%š¹_®2™;!ͽ�z¯$2÷zû±»Íe¤Ä2¯ýGúú����à¦cA%%%&¹ �€žŒ3�@§'†º455™ö™º��z–X«™¹Í”»-¦½½#\2™}ŸÖÍ�z§Í¥Š7),\»Ìp¯£j���€x8PŠŠŠ��`�@ž(êÒ»wo“l¦Kss3•Í� ‰¥š™óØ®–㬋T½Ì½O‡³î‡Jf�zŠhId‘¶ójn_T-��� ½˜°°°08O���B‘`�€û$R+Ê´´´˜E“Íô±³��¹'\53{]¸äw‚šS•ÌÞ>Ò±ƒ¤�=Q,Ia^Õεӌg���€žÃ©€ì,šTVPP`ûœ��tF‚��Qè‰%W-@Ï.,Òz÷sáÇ»ïhÏ@&‰µ*™-\˜×ãhûˆu=������€èH0���€0¼ª™E[ï<çU½,Ük½ª¥@Ok«L©¢�‰e������@ú`����QÄ›h¦ìD¯ªeñ$U¸÷�™.ÙÄ®Hí/½¶‹u=������€ø‘`����1Ò„¯$/w"C¸D4¯„‡h-3#}�Èf±&‘y½&Ùm�������ÄŽ3����ˆC¤ªeîm¢mgo-!‚êe�²Mª½b݉e������@z`���� ˆ%ÑÌÞΖH²‰�z‚D>ëø|������Ò‹3����HB¬‰f^¯q£J€ž"Ia$–������]ƒ3����HxÚbƲ�@g|N������]3����H±T$›�Ú‘T������t/Ì���� ¼#H:�o$“������™‡3����èbÑ(H@«H ������² f����aHÀ���������™"O��������������ð@‚�������������À f��������������O$˜�������������<‘`�������������ðD‚�������������À f��������������O$˜�������������<‘`�������������ðT @ü~¿��€îåóùÉ#®� ûϤñ ��݇x&5ˆg��è>Ä3ˆ fA �@æ‹v¼æ„ q ��™‹x&6Ä3��d.â™ØÏ��¹ˆgÌz8{��rûøÞSN�ˆk��ÈÄ3�� ÛÏ��€l×Sãx#Á¬Š7¸çd��€ÌK0oËs-ø'®� ûÏÏ��íˆgˆg��Èv==žAt$˜õ áöXy‚}��2ïñ–/v¶ÏöÀŸ¸�€Ü@<ûúx·��]ƒx&öõñn��ºFOŽg;Ìz�¯‚Hmmm��2Ÿ×ñ<///ì6vŸ­?q ��¹…x&ü:ñ ��™x&ü:ñ ��™­'Æ3ˆ f9,–�_{­‹u‘Ö�€ä… ÈíwØévζ^A~¶þÄ5��d/â™vÄ3��d/â™vÄ3��d/â$‹³)Èw>ôqkk«y¬÷íõöv�� ó9W’8»>Öûz›ŸŸ²^õ^¥Œ35è'®� g ž!ž� ÛÏÏ��ír9žArH0Ë1Ñ|]4¸oii ®·oíׇ»ë×��ɉ€{]â¬wìœmô¶  Àÿô»Oì}dJàO\�@ö#ž!ž� ÛÏÏ��ízz<ƒÔ Á,‡„+9¬ðØk€¯‹³^ÿà‹‹‹¤°°0ðG¯ü>þÀ�ÈíWˆêÒ*ÍÍÍÒØØdb€¦¦&s¬×@=øwwL@\�@ÏF<C<�@¶#ž!ž� ÛåB<ƒÔ‰õ7é‹ñ9_ ·¾0%Ϻu–üëò]‹>W¡·MMÍ¥‡ wõˆsÕˆþ¡ë­Ò?Þòò2)** þ�€Ü§qüµµu!ƒ~:àç\eâäwuàO\��Â!ž��ÙŽx��d»l‰g2IQQáÖ-·|Åm«kñ¯¸m³¿uë^$ÌãH·îûnQËÇRÁ,Ëy]=âô¶×�_}¬£½{÷2Ô�� çÑ€¾¤¤Ä,TW×5>ÐEƒ{wàß•W—×��€Hˆg��@¶#ž��Ù.⤠fYÊ+Àw ìƒýîûôéøã.���¥Á}ee?ihh”eË–¯>-.n4ÀwåÄé ü‰k��@¼ˆg��@¶#ž��Ù.Ó⤠fYÈòí~÷z_ÿX5È×[ÍÕ«G(I ��¼è@`QÑ�suICCƒ‰'4èׯÎÕ%ÊüSô×��€dÏ��€lG<��²]&Ä3H?̲Œ;È·-;¨A¾ÞïÕ«\ÊËË��  êûô©‚‚|©©©•úúzôëU'zàøéú‰k��@*Ï��€lG<��²]wÆ3è$˜e‰H¥‰í _ÿ0µ4qii‰���ÄJóòòM c)”ý¶T•0&®��é@<��²ñ ��Èv]Ï k‘`–¢ùÚ󾩩‰ ��$ʼn!4èרBú‚‚ÐpÑò¹º„¸��¤ñ ��ÈvÄ3�� ÛuE<ƒ®G‚Y†‹äkÏ{ýƒÔ[í{O��’¡±D[[«TW׃þüüüm ú‰k��@W ž��ÙŽx&7¸Ö&Ð�=A:ãtÌ2X´ _¯ÑÅz%IQQ½ï�@JhLÑØØdþ¼¼<Ðë­-Þ Ÿ¸��t%â��íˆg2W¸Ä±T¿žIv�@¶KG<ƒî“'Èî _¯Ñ@_ï÷íÛG���REc gPQc½oÇ"É"®��éF<��²ñL÷s'á¥âçž _�€TIw<ƒ®C‚Y†rÿ!é™ýœ.N‰âÊÊ~²<��’¡±…ÆN[w oÇ&*ÒI�q ��èÄ3�� ÛÏt½LOè"á �mRÏ {1Ú•ÂýÁØ£–'Ö¥  @JJJ$y]™n��©§1†ÆNÜíØëµž¸��t'â��íˆgÒ/›ç›˜+�dƒTÄ3è~$˜e¯«H´| ÞæJ‰âd“ÆH<� =4Ö°cHW•Ä¢'Ä5�� ³Ïdžx.*Ld� ×Ϥ^.ÆÄC�€L–êx]¯@ôËéE«¥uÉÏÏ—¢¢"ÉV]àz} ŸÏ'�� 6khÌáÄzÕ˜DK'zLÍŸ��d.â™îÕœŒ�r ñLj¤#.Iõ>S³Øï‹8� ÒÏ kQÁ,øQ¯~³NÉÀŠŠÞ’m2áê ®à�� >sØ1ˆÍ+VñºnÛlŽk��@ö žé:™ZM,Sß��±"žI\*Žÿ]U95_‡ø�)gH0Ëv©l5R\\,Ù"SƒW�ˆ®=æèø“=nf{\��²ñLúdëØ cB�€lC<¿d~F™+¤âý÷��º[ªãt-Ì2ˆûÇylÿQiÖ¦.ùù¦T`6`p�€ì¦1‡ÆN¢ìc¥W “«q ��ÈNÄ3©—kc'Œ�2ñLì=®§ºbX´%U_#Ñ×�ÐÕ‰g9˜ÉË`^<Ú‹V•••I6HÕÕ3ñ.©’Ž}�œØCc‘Dü\ˆkz‚®Œ³��èjÄ3ÉKuLÌØOºââ�@&#ž‰,‘cx"ÇþTÅ$éØO<ˆy��Ý!Ùx݇³,àxšÁÙèk™â"ÉdÉñÉ~p¤c1ƒ–��d‹öØ£}ÐQc’D‡Ù×äªDã¥tÄY��tâ™ÄeêXMº¿±� ÓÏxKwBVwƒ$;nï×� +¤*žA×+d$ûÈ}¿­Í/ùùù’©I,ë î¯ãóù$öþ’Ý��™NcA"Å(ᎇÙ×ä¢tMæ*b"�@&#ž‰_2qC¦ §b<ˆX�)ˆgB¥k>*Ñ8&Ñ×ÅcÄ×ÄÃó��ºB2ñ º f"\Ðé^ïô¡ÕÞ´™(Þ+"’ù:™” –êä5��2{8±ˆÃë˜n0*Ûâš\ÒÕ ýÄB�€LD<»®žTw?ÉÄÉŒë��ºñL‡TÏGuÕüV<û‹5,Ú¶‰$šï��Ò%žx&Òzt=Ì2œô¹ËfâPª¯üˆ¶],ûI×U]½?��º›},sâ]O`ŸMqM.éªä2¯¯Éï�Iˆg¢K$nèª×ÄóúDƃâùë��º ñLjÁ’M<k¯þÖ\œŸ©3anÿ¬•ó3vnu‚]ïë¢÷ÅyÞëkÇR¡.Ú6±ü®‰w��é’Šx݃³,árN€š­b æ’d¯˜I4Ñ+ g|(�²•×�Y¢ûQÙ×dºLøÙ2 �È4Ä3ÞÒÕ^*ÞmS%žÉX¯×ÐF �Ézr<ÓU ¼ž×u­­­ÁÅN(‹•{[Ý›p¦-ÄœÅ+é,ÑD²x͈u��©–ªx]‹³¬“™\©ºÊ£©©IZZZB¶Õ º   $ˆNö Óx_›Ê±T'¯�еR‹pÒ.©:!KÕ "ƒ‘�€ÌB<ãHWbY¢±H¼¯KtL(Öd3Í��™«gÅ3]‘Xæõœ&€éœ•.v"ž³¾uáiþ›´ÍœnîËÒÅâ«Z*¾e¥¹I|õ ºcÉk¨ ÚJJ5`i™ø ‹Äß§¯øûUŠO—ƒ$•’·Êª’?``p^L9 gºÎ^-¾IU¢±� =˜#Ê6$˜!i©ØMr™sµF£o¹´ú[¤È_.ùRduçª 'ÑLƒh ¨#í?ž«ScÙ>Ñ×ĺ?‚s��¬D&tã`UñÆ-$™�YR]…,ÝÉgñî+RÜëXL"‰fÄ;��¤V*bŒxžÓyªæææ`R™.ú¸iñ"iùñâ,¾_¦Jþœ™â«¯ ¼Â'Ú‹'ÏÜsþã 4Ñ̨_q;®Ù$t+Ÿ4—–KãðáÒ¶ú(ñ­½žä­³õï/………Á6š:G¦ÝÉf‰&šQÍ ��DC‚Y WR7K†{Ïöúšš©ªª’ÅÍ3dFþDYœÿ“4ûêVÕ>)m­”ʶե¿” Ê%åÅRTTL8s®ÖÐ[w`oK„dÚ!ÄóšXö•Šý�‘â¯cq®Ä5Ù Åz€.½zõ ùý&7ß��2AOŽgR/$›xæLÚ:‹ó³¶æîß‹3d·²—p_7ZåŽX¶‰çÂDb�@ºõ„x&ÝsbY¯qˆ&”i"™&˜é8Hc}4}ÿø¾úB|ßN’ü¹³%ßùùÿ“yõµ’÷ëTñyëSõ¬yÈ0©ßp´ø7ÞT ÖÝ@ŠKKÍ\™Îi¢™WQ†psf‰$¡ÙÛç��R%žxݳ,É~²2–,Y"‹Ëo…ïËïEŠ_Ú$ø9á×ÿû¥.o±Yfù>—<ɗІ•¥²v è[KŽÐÅ&xV<;´sÕF¤¯k²Y´m“yMWî�€TJd@‰Ä²ôIuÕPmhhV˜ÕV'æ ·O®v�d›žÏtE{©pÏëÄ­ÓNÊN(‹U,ÛÚ gÎØ“t–ŠD2b�@&ÊÅx&Ù˜%žÄ2çÂ:í´ÓPW'ÍßL’¼‰ã%?p[XSþl²XÞ·Ip›7Gä­—¥­¼—4þa´Ôlµä¯¿‘””•Iqqû\™“tÖþ²ð ‡^ëçh™ �èjœCgÌ6Ñ®†Y¶l™,Y²T&¼,sò'­XëÓ8yE¨îwV‰ó00)Uù¿›ešïÓB³oíê2À¿† Î[Gz÷7Á³:í4žôöU¬áÞc6%œñ ��É^Ñ릉e‹/–úºÅ²Êà R’÷–ÌYt“´ùËdÈÁžq•ý5¸Ú=Ec³_ÞR/“¦7ÊÜe­æb™!ù²éÈb³v©ðï@æHErY<ÏécM&³“ÊìõM~™;¿Mæ-ðËü" —äKuužÔÖû±H¾4·ä^“¸mÿ,-,ðb¶Àm›””´Jy©_z÷n“ý[eðÀÀçï Ÿ œj¯v¯H”læT¿6¾B) <â�é–Žªeîu‹8IeõõõÒ8sºÈøw%ÂR¸x¡Ù&øiæ—nÏ/ Zñ^òjk$âx) ,­•¥a›í¥vÛ¤høÊRZZj’Ít®Lcó²‰fT3��±"Á,d땯Éð°WW×Èœü¯eVÁ¤öØÜ~‰}Eˆ¿ãI¿/4¨o’ZYPø,ð}'?V•¶ô•ʆQ2È¿Ž *%%EeÁvš: h'œE šƒoƒvš��ÄÅ>>ekŒ“mR•\æ´ËЋ�-Z˜úYFzZŠò—¶W–múLZ·–ºº:Ó.3Ú¾„L­œø½,’M6Ù8êÏ]cÆ’¹íÝe²´®-dýï‹[Ìò^`âõ”1}d•JN»l“kñLW'–é„­³8í¦›döÜ6ùyZžü:½Pæ-(’å5Ï·=Ñ,_›ò¥¦®Pyl£¡EE¯:¸IVÑ,k®Ö&+ Í N°jìጠ9•Y£UðHä¹D¶ë‰ˆo²ñ=²5žIfŒ#–õšøî$•éøF㔥à­W$â‡â —H–I‡p÷’¿d¡ä¿òœÈk/JËú¥»í'ùë®/åååR¶¢²™]Ñ,Ṏs��éÆñ&3p¦‡”‹åêåË—KSs£ü”ÿŽL ÆíVµ²>Ÿk}çêfªÞW%³ ?—Ù¾Ï%ß_(}FJeÝ(ä%ýІ‡\±¡µpí{¡º��È4©¼ªWï/X°@ªª–ËÀ>oÉÀŠwĹXñ–ü4w“@Wm(x#™ÊœÆæ¦›þ%O<ñ”¹?`@yðÁûdèÐ!’ ´:ÌÓO?+o¾ù¶LŸ>=0Xß&ýûWÊÈ‘#äú믑’’ÉM­~ùtZ£ü8§IªÚÌ$jCsø¿¯%µmrýU2²T”äɺÊdËÕŠ¥0Ÿó�ºNWµ—ÒÉZ=&8‰e:q»xI³|?¥À$”MŸÕKjëò%Ýôm-«.0Ë”_+Þ)/k•‘+5Êj#jeƒuZ¥²_¡™hµÍt|(Ò¸J²¯ñl×Sdr|ƒÄ?�ºRª“Ëìušô®ñIMMYÚ¾øT ^}AŠ~žb|dùgUà{,øîkéXZV_KjöØOj6ÙÌ$ši"·Æ?Zˆ!‘jfŒï���E‚Ï/îmµå’N<ÍóO–@8ïÚØºoå”ù"V7[qǺŸÀЦ,.øYû~–ŸåU)ië+•5«Kÿ(œ¿–”÷1 gZÙ¹‚Uu`1—ª›Ô�ÐsÅ3)<þ|©«],Ã*ÇIß²/;½¦¨`©T–$5µcÌ`lïÞ½Cö•he\„¬®®–vÚMâ¥1êĉãÍýÚÚZyòɧƒÏiu¹^xQN<ñxénzÅ÷qÇdªØfÏžcïs)¹lêüf¹ûÃåRåªÖNÀN™×Þ¢íóßå¥ojåØí+dÔàB€tKe"z¸uC踊³T×4ÈäŸ|òÝäR™òkïÀñ ûñšØöÃÔ2³¼òŽ_V]¹Q6X§N6\·Iúöi¯ê¡cA´‘ò-žÑïG[q 8@Ö\s Ùf›­e—]Ƙuádr|“M.¾ø2yýõ7ƒwÛm¹æš+%Uˆ�t¥Dã–XÖ™%p<Ó¥uò’ÿô#RøÓ’Ë ~ýI þsƒ´¬¶†Ôx˜Ô¬³¾TTTÍ”Wüo ï6™DÇ-ÆÿPÞ¼üðò`ÁBsÁDEEoYe•Ud“M6’}öÙ;peé‰Î=÷|yb÷Ùg/¹ì²‹¥»Í˜13ÿ¼!_|1I~ÿýwÓ-KÿMëÅŽë­·®l·Ý¶2fÌŽÁjÅ^vÞywY¶lyðñ-·Ü`^�ˆŽ3¤T,':¥ÛÍõýdw¿ì¶ŠYçõ&ùÌI8sU7 ¶Ó\±¾ÁW%s 'Éß$ù>ðdy㩬_MÃ_20_Ûi¶÷¥×¸xÛifru3’Í��ÈMÑâ®x’ËfΜD[&#Þ-%…sV<ãNèÒ÷™2gS©ª*6UÌœ ö~“©ìÎ4>-//“ššÚàºH&¸ãŽ»;%—9´ÕU®ÐÉÕ›Þª’–øæV=i;)Ý×Y»õe’@Z¥ºˆ{½Ý^J—_o“¯þW&ßO­”¦Æ<ÉTþÀxд%fyýƒ6Ù`­zÙxýe²úÈ<“¥K´D3ÚH…ÒïG[ŒMŸ>Ã,ï¼ó^`’îV9öØ¿ËÁÿÉŒ±¹er|ƒvÄ?�ºRªÆ7Üë4^Ѥ²eË–IóŒéRðÄCRøõŠ êzÈEÁo¿H¯›¯”æ c9.5+­,}úô1 Fk›OE×H¯ËDŸ~ú™\ýf<ÌmÉ’¥fùæ›oåÁ–=÷Ü]Î<ó4éÛ·¯ ûhg¬›o¾U^{í “hÓXTý}¾ñÆ[æÂ‡sÎ9Ë$š�R‹³ æŽã©–NÉT/ÓÇ:�©íø6{AN™2»e¦H\ gí룷ÓôþW“?×,3|Ka[©ô©)ýëÖÁyëHŸ¢Áf@Ql †ívšöDj¸ï3SÎH6�¤‚×ñ=–‰´HŸD_½Öé`«^ù§Ée«jrYÁ;ƒ_ÜV~^ƒ¬\ù”Ì\z”,^¼X äùuâp%-<?¯»îj;ö&ó3ßu×]ä ƒ”³W^y5dÝ!ƒåÀ÷7Én¸äm ¥•;R1¹êÐ}ÝØçµ¬¤]Ðr9žIg{)'±L'p´ Õ¯¿ûäã/zËÔiÙWµRá&}Wn–U†7ÉÖ£«eݵ–›ÊÚJJ“ âx´>Þm²™¶T¿ñÆ[äË/'™ŠZ:ÆfËÔøíˆ€ì‘ ñLª’˼ª–é1¦fÙrÉ}œ½ð¤Hs“$”Y2aÕÍ|/…ßM’‚¾‘¦]ö’…{$µ}j¥ÿþÁÊãá’ê‰u2=Îùï‘Ûo¿3æ˜Yš4ÙìöÛoí±Õ̺›Ž]ž|òi2gÎܘ¶_¸p‘©ÀvôÑGP!ȉÄ3è>$˜el™€ÐëcM,kkóKUë\iÌ« ƒC’ÍÌŠë%d½ßõtÇöâ¹}hõ ¿çö;zYT8Yù&ËOò²”´ô•~íÕ͆ä¯'eE½Í`˜~˜åJ;ÍX®6"ilöË»SêeÒôF™»¬Õä" ©È—MG˘µK¥¸€[@®K$F!±,y©L.›5kv`|Õ]¹L¬3÷ŽD*J”òÚÿɲe™ X­ô‘Š ×žrâ¸ýöÛÊðáÃ#nãTMql¹åòüóOK&Yºt©iC`»øâ d‹-6—\òé´Æ¸ÛBÅB+yè¾·[3wÚˆÙ*×â™TMÒº×é}¨ÕÊÚ*{ê´Bù`b_™5·HrÁŒÙE¥¿ Ô$Ûn^#ë¯UmÚ#iuM4Ó%ÜÄ«{]¤õîm²9öÙj«-ÌmSS³™À× ?ý7bûàƒå²Ë®ôlÛ˜‰ñ Úÿ�Ù'[ã™t$—ie£ªª*³ø¿ûV ºS|ócKJ +G†*|q ’7_–¢o¾”ÚÑ9ë¬gªréâTuÇ'¹–döüó/Ê¿ÿ}‡çsZ©¿OŸ “œ¤s™6sN=õ yì±ÿš Ðuôo9\r™þ»0 ¿©¨ì£R<ð_3·ÿþû €ÌÇÜQv Á ]Âù@Ы\Õ|ÿÔNí1;Ëð®nÂU\#˜|æZß±ÿèÕÍTC^•ÌÍûJæú¾’ýÒ»ae©¬[CÈ2°hU)**6ÉeÚNÓ®næž tÿ"é­n–HÀN¢1cI‹Üöî238hû}q‹YÞ›R/§Œé#«Tr˜€TJer™Ì46.•‘î–ÒÂ9ñQ0$ðw¬sícåÊgdÊÜUƒnEš¡Áê±N¸öä$3­ðµÝvÛJWr.ôÐø5Ujkë:­6l˜äšç4Iºü8·‰ V�)•®ä²ææf“X¦í¥~›Q o|P)óäFb™›~_ϾR)Ñ,{îT%#W®‘ŠŠ “hæTáJe5³l}n¹å†NñŒ&¾õÖ;IÛÿ„LðéºwÜAvÛmAx«é$©WKÑ®Fü +¤j|Ã^§Ÿ¥ .l¯Z6î)xñ™À©O˜íV)òæÏ•Þ·^- ;ì&‹:ÜÌs 808fà•df¾tã;±<ßÕ´}¢VXuÛk¯=äoû?YcÕÍcMRÔšZålêÔŸƒÛéEšwß}Ÿi—‰®£¿3wrÙ Aåøã•=öØ-£/X°@{ìIy≧BZhÞtÓ¿d§v01}wÐ 0ÜÕ| ›1ó¸$rňMÌtBsnÛTñÛã% aözm¥†Æ˜p}½oÅþM:'œµJ‹Tü&Uò›Ló½-…måÒ§v„ ô¯%C|ëIï’Jè�ÝNSƒq¯A¡tV7K&ÙŒD3D¢íô*Sd¬nh3Id Íá–Ô¶ÉõoãûHEIž¬;¬H¶\­˜6�„T¾.Y²Ä$ íó’”ÍÝÀÄþÎqSp"ù¾zY©Ï32kùQ²hÑb<xPpß± 8RÉ,>;ï¼{`Ryðñ¥—^$ûî»wØçï»ï.9r„ø?þCsõí®»îÜ©zÈüùóåÙgŸ—O>ùÌ´ÐA/½Zw­µF™‰à}öÙ«Ó ØÖ[ïЩ:‰ãÀÿ¼ ÇÊ1Çò¼þnµUÖ¸q¯ÈO?M5__ <XÖ^{-Ùo¿}dôèM:ýþï¸ã.sÕ©CßÓ³Ï>)Æ Ùî©§ž‘n¸9d»'Ÿ|4©ËêÓ7‘Î}èyÒQDïkLM,[¼¤QÆR!_|[.=á¢â¹ó åÁ§Êk×É®Û/“þ•uÒ¯_?S±"‘jf¹\ÉÌ¡•mÿøÇLe²¿ýí(©ªZ|î®»î1±ˆý}F‹o?ÿü‹¼üò«&†Ð‰ÃššZ)++•¡C‡š¸áOúcÔc½Æ¾¯¼òZ .úHæÎx¼ÔìcäÈ‘²Í6[ÉìgÚ„E¢ñÏ»ï¾/¯¿þ†‰›4¾Ò}h³é¦£Í>4þòòôÓÏšv ŽÍ7ß4ßü[>ø`¼ü÷¿šïQ'÷5¾±÷¡_çÉ'Ÿ–Ï>û\æÍ›/¥¥%²ÑF01Ö:ë¬-éBü ÝÒ‘\¦í»çÍ›'m3gHá7‹oúoíO¤â¬lRõ^?»’ޔ©?HíѧÈÌÀqHiNu®TŒïÄò|Wºçžû:gœvÚÉò׿þ%dÎëm½õVæ˜{ì±'Ê”)?Ÿ{î¹äøãÿaª¹%:æ‘®ýhì qÄÇO4 Z%%Åò‡?l(Gu„l°Áú¦’›¶ ul»íÖò¯Ý$‰Ð„.­\«qÒ?ühb-“2¤=NÒÑIà‹Ç¯¿N“7ß|;dÆ}wßý“i4hœqÆ©²Új«Ê•W^\¯Ÿ /¾8Î$FóÞ{ï~fϘ߹~O:î¤ÉiùËaž jÚ†ó½÷>>Ö±0ýù>úèãòÒK/ËìÙsLUä·Þz-äu›¾úêëæg¦±©ÆÍ}ûö1ñ­~½½÷ÞÓœ{xqÍk¯½ÊÄÙ'~b¾®þü[ZZe½õÖ5ïgã7 n«Û<óÌsò¿ÿ}ø¹Ô›ßϘ1;ÊGüÕ\PI"cˆ�r fH;'È×ÛÆÆ&ili%¾Y&Ž¿Ý¥³Þrצfôý¸×wn§Ù¾ÿŽí›}µ²¨ðGYäûQ~’¥¬iˆô«_MúÖ”Aù£¤¸¨ÔD5™NQ»ºY´vš©¬n–h²Y¦%šéU%o¿ýŽ ZæÌ™#K—VIqq‘TVVš`z§v /Û‡­—*±|梩ó›åî—ÇÝAЦÌk6÷?ÿ½Q^ú¦VŽÝ¾BF N]õ�ÈÑFmÉTw›p몫«UÒ¯t¼T–OòH$ó…®óÛqV°¤™ô)û!0AôYàø¸e`�²ÌL*:_ƒ$³î¥­ttÚ´ßÂn£“¬×^;6Xaرxñ’À€Ó§fyðÁÿÊu×]m¥’¥ƒg]t©|þù—žÓ÷©Ëk¯½˜”Þ\®ºêrӢᓨ: ¨sJ±n½õßrýõ†Ú²S'¯mG}DRÉeZ±uæ’ITY‘OVêW`b)Ïý/n1_ƒŠ¯�’•® úÙªçÁßüP*o8Xê껿²RWÒÇw“Ëdê´Ùa«å²ÅÆóÌ‘&"9c¹8ùš,ˆ;óÌÓå’K.®ÓI¨o¿ýÎLÔÆJ&7ß|«™uÿ{]¾¼Ú,:éªÏ{ì1ò÷¿í¹Ÿp1¾þ»ïþgMò:÷ܳÌĘ—É“§Èyç]Щz†îSÇ©tR'ôt‚úä“OV÷D'¯¸âê°Ï¿þú›frÔžׯ§‘&L”o¼NÒø@º¥"nq'Äëù¦~û>ùP îý·øšš%¥2éâ÷’?g–ô{©ÔýíX™;zËÀ¼K?“Ø)¡>ã­´úöÛÓñwr™M“ÈN?ý”˜FiU3wL“̘G:ö3aÂÇrÁ—˜ä*‡Æ~8ÁÄúÚTÑ÷|þùˤI_…¬×ó ç=kRÓÁÿÉ$€Å3—§IZî¹N›s'—Ù´¦&÷kœèÐ1®h f<ðÜqÇÝ!ëœ÷¯qÙí·ßÓÓå—_e’ÇÂÑßß5×\o..°-X°Ð,3ë£]t¾ì¾û®þÛ~øáGå¶Ûþ²þ«¯¾–N8%ð=Ý&›l²±¹ S/Ì´iŒþÐC˜17½XU“½tõ"€ÌÆ™’)¸·é€ˆ>· mš´æµ®H³¶£Ýeçí½Ûi†\Ì÷þ}®õ^ÕÍüR“?×,3}K¾¿Pz7¬$êÖ–!²žô-"ÅÅÅÁ%;ÙÌk°)]ÕÍIëî _ÿ½h@¤§V½s?§í¦OŸaŸUW)^øÏ¸*¼é­*iIÁ¦ÚNS÷uÖn}I2µâI&KÇëcÝg¸øL¡ .–¼™2¬ÏË®d{ã~„*fjx¿—å×…Ãdþü|“`oë(’ÌÒã±Çžˆ˜\öøãOš ÛhæÎ'DzÜÿÝ2jÔš’(m«vä‘ï4)ëåÓO?7Û>úèCÁ¤E§Ï;ïl9õÔ3ƒÛitÓ«oÕþsWH;®UWi®ÀLTc³ß´¯oNìo¶ OäÌ]ûʪ Ì~¾Õ¹ê›îûßï-“«ö¯”âBþ­HL:’Ë4QY+€æ äù×ÈÌ9=ûJô†Æ<yóƒ¾òãÔ2ùã^KÌÏG+$8•+H2ëL«(\ý !-µµÕT<ã6ZeD[E£Õ%îºë^SUB'.m±Æ<:ùzÙeWšŸ¿VŒ°i…‡ãŽ;)lWÛ#<&³gÏ–±c¯¸&nj+Ñp¾øâK3™îï['lõy½ð2•ˆ�t·D’Ë´ºårm‰ùâS’÷ÂSé¡T•ø²¿hêw™°4¼_S£ôºÿvi˜ñ›,Þÿ`sÌÓD_°?é$³îöùç_˜ã§íðÃú:­¾õÚkã"n“ì˜Gª÷óã“åÌ3Ï iiÓõšä®Ë’¥ïùˆ#Ž1ãG‘è¿MnÒ‹^¯¸âR‰•Æ6M^rÆ"¹ì²‹Mò”C‹VDòÅ“"Æú;ÑÄ¿‡º/b;ó¯¿þÆün‰56Õó /¼ÄT’vÇ·nšHæ®òæÐóZE÷ÿþïðNÉe6ýý]z镘úvIô=§j @æ#Á 1KdBÔ~“=·íçŽö˜vÀé÷H63ë¥ÓzC{¬oÒçZu3ïý{$œ¹öÓ*Ííí4}¿É/òº”´ö•~Õ«É�YSç­+åÅfâUm]œD3m§­º™y&`£mcok ß]'zsÆgËgŸ}Óö¿ýö»œxâ©rÛm7›€©¡m1µrYK »è¾î ìóÚ?VÒ.@VIGbXº„|Õ$mgÙÜT%k|Ð{ùÚ煉͜êe®ƒi•Ù÷iùmññ2~¡©Xá$ѧâJW’Ìã fé$®¾éÏqèÐ!f^i«mlÚ¦éÏ>H  ¿ÿ>Ý´HÐ[¥ƒZ:ùĘ߅6é¿%­2«WeÚô*Ò•W^ÉÜw¾žºúêë: n½õ–¦„¾Òö�ܬY³Í•‘W_}…µýV²Ë.cäwÞ ®»óÎ{ÌûÑAC­âÐ÷©hŒ¨w§Ô›äøD°q¹™\mlñËìªÖ°Ûi[ñ÷~ª—=×/�ˆWú*€,•Ÿ~)‘—Þê'õ =«jY$šhw÷#ƒeß]—ʺ-s¥_¿¾¦ºz®UøH=k¥„>ú8¸N[ÅJÇ…yäñu¯œ|ò‰¦r„Vwx衇MÇÝwßkÚ/9U1´j…;æÑ tÚRsĈøa†¹¨Q+™9n¸á&Ùn»m‚-4ñL'÷ìä2Ý¿¶¦ÚpÃ Ì¤ß /¼Œ›”¶,zþùÍ{ Ç©¨¡ïgûí·3ÿŽt_ÚrS/²ÔÊeî¿Ume¥üõßÇûï7‰o^ÕM’Aü Ý"Å.ñÆ-z^ªOêqK¶Äü:¶¹„„ô„a m™ùÖ+’7®Ôy‚477ËðáÃÉ4É&™uwŒóË/¿†<ÖyºÍ6ÛTR!c©Úþœu¬Æ\¦Ié:¦¢¿O'ްÇW¥•¸ìä2íppä‘3m5~ÒÊ«o9»»í°Ãö²óÎ;EÝ·þÔ"¶X“âÖ\s ³ÄJ“¨ôg³ÕV[˜÷:ç¨mJmš¸§UÚ"ý»q~?¯jÛx½`Ò©úå›j‹I[e•UßëôN±é¿þõoó³Œô½huµú›„I×ûä“OÍ:‡þÛ× )4†=ä?˺뮈]7ß³}1ˆ~¿ÓÚíÚ“C›H0C—у¨fK‡$˜…œø:ÚQú]OÆTŬã®/†êfÑö}ÿ>‰TÝL5äUÉܼ¯d®ï+ù!ðM—7 –þõkÉÀ¶µe`Ѫà¢Ä ºiò/Nu³p%bcI$‹%‰,žD³x“ÒRAË¿º“Ëôç£A°N\ëU?ÿü‹éãîÐ`UýÆ{ÞmHÞ§Óãn‹ ¬Ô}o·f‰�@&ˆ¤²xÞ£VJ¨®©‘eoJQÞR+ޱ«ÊúBËD:Çe®äý²Â92´â%™³ü03!­m£" :Æ;¨˜kIf:È£y‘ü±¯ˆŒF^W^y™ì±ÇnžÓ¤sè�ãµ×^ü;“—‡ò3y«t0JÛ+l·Ý¶f2UéïÙMÚœ3‡&iµ1›hsNG52€½þúÍ@šC¯¾<ñÄã{ÂëÎ>û 3Pæ €éà—^©©»öàéîŸteÛ/§7J¢ÖZ({¬×>aúä5²¨¦5âö“_‹ V�ñJur™~ŽjeËkå£ÏzˇŸVHå×w™†FŸ<ûj¥l6«VvݾʌEh53;Áž$³v:édÓ b¥¦î¶Aÿüç¹Á¶DZ©Ã©~¡1Ój«­*«¯¾ZH< ­‚ì˜G“¹zèþÖFûî»üõ¯G« ÖÔÔÊ[o½c’ÐÔo¼Õi¢÷šk®1c:&E:è@Óš\'Ú"Hã‘H¿G©þõ¯ƒÉl­Ôáþš{íµG`²ø’àþ´—&¡Ù ö©@ü R™\¦óLZ1²yi•Üp¹ø~™Ú3’ÀTš¿Ï¢ï&Iþ­×ÈòÏ‘™ãêJ+­”²8§;cg|á 9^¥UUU…Ó½ 2ÄÄ*Uc©Ú¶þv'õï´Ó×]gÒ8âÒK¯IÔO„¾g;IMžwß}GH…ÕÍ7ßÌ\€xë­•±ô"XÌtŒÑÝÝhèС’.wÞùo=z“àc¯væš@-1Q“¯ô÷æ× ›Úãh{ï½—qÄÑÁØTÏ5´ »Æáh²ä½÷ÞÜÆ¥¥¥æ‚›vÐøÔ¡‰kZ¸Ã¦ ev‚Y²cˆ�r fHJ´+_ð·´´JMk•Ôä/ ­¦<¼|ÖzÄv—ãz¿ßÇØN3úþRÁÎ&ÎÚÿ«Î›k–ß}Ha[™ô©Ñ^ÝÌ·®T 4€ëzpÖ[§¥f´všÑªŸ%“ŒfoÛÁ¿ŒÏ=÷|È: Žo¹åÆ`Ю4¨Ñ€L+W8´ß·ÅvÔSéïKÿî’©ÜñãœèíÞ÷Ü&Ì�d¬lN,‹ÔS¯€+ðÏAåŸU¡ÕJ.ë´CwBYH‚ýŠç+K¿”ú¦¡cñN&véÓ§O\If=e¢Ué¤e4Ç÷I†¶¥òJ.Ó+ Çÿ(dDº¶½{÷6bÚvÒ1aÂÄ„‡^=tÀ²W¯r9é¤ã;mwòÉ'È«¯¾n*…دýûß>Ö‰j}¿7ÜpspÝÅ_& . >®¬ì'§œr¢$kþòVIDY‘OŽÞ¦Âœ|5£Q>œÚõ5s—%öµ�ô\©N.Ó8A+€hĶ_(sæ%~ÙèîóoÊeÎüBùó>K¤±q¦ 6,l«ðžšd¦ñ„Í©Þ ¯±Œ_''œplÈsáZ,iÌ£3l‡vHHr™Zi¥áfý—_~¬taO,j‚™M'íä2URR"§žz’i äÐJß|󭙸 ç’K.ì”\¦>üpB§ýk’½ýïAïŸyæifR׎’Eü ]âg‰·èüÁ¬Y³¤eÑ"É¿îRñÍœ.H­üéӤ▫¤ú”ódfàg¯IfNQ„l½ˆÐ¸îu Vš\vê©gJ$šèuÁç™û©óHÕ~´:™Moçž{VH²“GÄÒ<÷{3fGÏö݇z°Ü{ïÁ÷<yò”ÀøábÏ m cÇÞ½{I:ì¿ÿ¾!1 Òе=öDHž^É AMÜæN.óŠMµâ˜û"MUŸ—C§\ж°Æ&›lÔi?šf'˜yµ×ä?ýy:ÉlJ“úì÷ÜÕcˆ�² fˆI²­Î Ҝ֟ÄïJ¾ònG)O:+CÖ‡V7 &‡EÝ$ÔN3þý[ßÜŠ'ýö·XÕì«“E…“e‘o²ü$㤴e€ôoeÎŒ’’¢²`;M Fœd3]¼&ƒ_>B²Y²WŽtEð¯W©ê£6dµ“Ë”(sÌQ¦7º]ªvÊ”ŸÂî[ËÚꀤ–±?~  ­—˜ m¯½ö4°3 +½BD{—kV¾þhôdk·Ýv1'îÁT7 Ð^zée þòË/æûÖÂÚªAKñê³Ú&ÁËÎ;ïn*Ñ8î»ï.seV?þC3Ѫ“Ë×\s¥$jY}ê«—už ¹˜\¦·UUˤ>0˜6²× Ò©õ¥;Ñ,d7îä2mVÜ^1N–¬lñ™ã©^-—ê$3óNs$Ñ,ÂMfj[K÷ ê]wÝã¹íĉŸ„<v·“ˆ•Vu¿·²²ÎÕ*ÊËËÏýA>þø“ˆ_S­^yå53 ©æÏÜ;ûì3£Æ`©0´O¾œµ[_ùnV“<òiuðO㨭{Keyž©Øú߉51í‹Ñ�R)Þä2¯Ñ óæÉ£Ï÷—åÕ ÆjÖÜ"¹ï‰ò—K[Û,“d¦É@*IfÙ®¦&ô8èülb¡“d:Æa·žÔ‹ Ÿ}öyÙ`ƒõd­µÖ2˜ë¯¿ž©tï¦1;¡m›m¼[*{ìß‹çS8æg×>¶òÜNÛj|cOöj.&Óöªvu›þ=Ú6Üp}ÏIp­â¶ÑFb¶O¥«ÿ�H‡HqŠû±^P=sæLi™3G ¯»DdÁ|éÁ±“ ÐEï%Þl“d¶ü´ L’ÙÊ+¯s’Y&Æ8îäœåË—K*¤jÌ#UûÑà6•Øi?}ûö5qD2í¶ÝïYçÊÂYºâ5i+Z‚YIIç„*÷ÜaªhÛH/Z!×N0‹–دj½ †Ä›jb–`¦_söì9æH^?Gm‡{Í}êÂv‚™]1®;ÆdF2᪗é}=pj™ú9­?‹ß9¶ÆÕŽR"T7s=éÚ>dÞ´Ó~Üëí„3 ÛDzŸk}çêfº¦.o‘Ô-’™¾‰’ï/”Þ +Iÿú5¤¿ X´š9ø;Wi:ÕÍô±;X‰4ùí¹LúÝ%oís\}õåfÒÜ¡¶×뵯öwÓ„6]t@N+¥{m` r”ÄâöÛï‡z$döQ×E=o¾ù†°½ÑõJ˜sÏ=_æÍ = Öê2Ú6K—‡~Ì\]¢WJD£ÉjÚ’aÚ´ß$f, œ¬–DéÕ«+õ+©ó›½÷¿¸Å|U*9 È É&–ÅóúD·ñ´“°ë`@}}ƒ”ø¦H¯‚_WT/s"W@cÇUÖÓ+vj?èóŒìó L«:^æÌÉ“•VfðâM23_º‡T3K—p¸ .ì´.–ŠjJÛD$Â݆B[I„ãnuà~­Ò /´¬ÿ‘GþÝó9MôO…!ùòûâð±Pyqžô-Ë“F•HA ðãjSu“ÅæOåþ Ë¥¦1¶„ú!}ò�bO<àµÎ~¬ç‘Z¹lÖœyüÅRWŸx{枪º&_zz€ºÿâÀÏv¶9Î9ãÙÜF*-ZòX[QÅC«“|òifœÄ¡lŸ}ö…Y:Ù¦UÈ8`¿àÏË+æÑöLñÐÚžpSáâAd.ltx½G¤d»%K–†<ŽÔ *R\•â�éoìîy§rYë’ÅRxÃå]—\¦2épÜ…ï%oÑé}ëuR}æE2+pŒ]e•U‚•™’©ÆÚ1ްi7MXt’æâa¿&Uc©Ú~_6we+›KH&ÁÌkÌ&ö1¦eQ·Ñ$8ý÷f·@Ÿ7ož¤C¸Âñ¤ˆg<nÈÁžÛz­×ׇK0K×ßRwŒ!ÈÌì#añL¤j™Õæ–f™/3L›Ê Ÿ+›,¸^¢®ïhG)Všˆ»ºY¤ýDªžÒN3Bu³ø÷ï‘pæÚO«4KUÁoRåûM~•·¥¤µ¯ô­YMúÖ”Áyktúšä2ý¹jðàT6³«›%’LK`Ÿîà_¯<Õ Í.Í{çwˈ«˜ì7ÍÎv¥Ãyç]Щü¬½ ਣþaª…»bÁñùç_tj•`Óv'tª<ûì“®4ýî»ÿ™Ö ÑÊë`¦öx×�ZJ#ÑR½©J.klöËmï.“úæÄ’- ç˜gîÚWVP`öóí¬Îß§îûßï-“«ö¯”âB’�t¯D’Ë¢½F>½®X‹åµÉ¾û±CtbÌT/+}#´™OBc=¾;Ï›û!;õ¾ŒÚoóóêdDŃ2uÉYcažÈrÚÛï¯'·ºå–º­L|2ÿö’i›j_ýMØç4~ЧBJ8£¥‘&XYÐ,}Z#Ù²—l³z‰”â™u‡µ<¾ñCLžÛ,±ÚtD±�@,R™\¦Õ¥ô‚§_§ËÓã*¥©™ó²D54æÉcÏ0í2%0ò¥‰FNÕ€žšd¦¶_}õuÈ:­�—yòÉGåÁLf½RÅݦc!W_}|öÙçríµW™ŸWªãíD$ú¢Uò±Ù®©@ü Õ’‰]Ücšß¼d‰ä_sq`ð]«=»t…üEó¥âöëeÙéʬ¼<“”ä•d–é1Îk„ТÚgË-·Y¿õÖ[Ö‡Vc:å”Óå“O> >NW›ÆThn=‡›T‰$×¥J,­ÓužPçí~­ÜvôÑGF}­V³+ávkËÆ®¼°9Ure @ê‘`†¨’9ˆèk5 ikóË–™Òä«o/xá ó»2«|IY*¦êc+;öïz2®ýHØêfíû÷'¸ŸŽ»>'áÌN6óؾ!¯Jæ}%ó|_É÷/Þ«iˆô«_MùבkHIqGyS§º™“p.Ñ,ÞõîmÒüë„à¾ûî-Ï=÷Bp^ qôÑÇʨQk‚ÀmdÓMGˬÓäáÓO?Û)¹lÕUGÊîo¿¾ùæ[yùåWƒUÒ4ð¹ðÂKäñÇ6­½Âyýõ7͉”¶¡Ô÷¢ùºûª ½êô¶Ûþ#]t~p^m{ÑE—†XÚ¢óÈ#ÿfÞ—ö8æ™çBNXÆŽ½)pb³¥ 4(ìûùôÓÏÍíFýAÖ[o]ó;Š÷ê\Ç»SêM[ƒD°q¹I.klñËìªðÕç–Ô¶É{?ÕËžë— �t—xãœhÛëdš’èqÒ«”}ªE›€Ò÷bª—Édé•ÿsGõ2»Âª“hæ·‡û>ýan­ûEùKeõ¾ÿ‘iËN’Ù³uðq¸9f’dÖýÜmô‚…O>‰ž„ŸÜ× ½Jxîܹa·Õ ƒH¯mý<¹çžû=_¯“úÜ©§ž$ÉÚyíRy?§h¼Ž>¯t’uãUÚ'I§&e_ü:ö– ÚNj§µK�¢I6f±WWW›ÃßM.‘—Þè'm~ާÉjnñÉ“ã*å€=ªd¿&™ùƒ-›c‰{"ÉÆ˜ç½÷>èÔÂh‹-6—xé8ˆV.=çœ3M"™Vƒ×E/Ü›:5´}å;ï¼'{í5A¶ß~;Ïñ!úõë'±Ò1§^½ÊC¾pqŒÆ î¶Ý^í¨bÑ¿eÈã9sb’Eü «Ä’o¯×Ï߆¥UR0ör‘Y3¤Ë9c%™ ÞKþœYRqDzü´óM)­ kƒL‰c6ß|ÓNÕ°´ã;ÁÌMçq~øáÇu«®ºjð~ªÆ<RµŸÊÊÐXgñâÅŽ»Úl¼ÜÕiO<ñ¸˜’¿â¡¿;ÁL;ÿh,­@Äå—_e¶shñŠîL0‹'6Õõ±¼>ݺc @v ö=R"Ü•%ÊÉDŸÓöKpÞR7 YÌzŸ©Ö±H§íÛB¶·÷z_û¾Wì¿-êö±®·Þ«µ>¹ý·¿Ï6ûgàÚ¾-p¯:o®Ì(üX¾,¾OÞõ].êî‘ïªÞy˦›«µÍ….Î} ‚5*ž·îtú駘D)7<¼ÿþ‡ä„N‘vÚÍ\9¢‰hË—{_Ū' =ôpÈ:í9ÿè£Éá‡*ûì³—Iþºúê+B¶ÑÞâo¿ý®DsÕU—Ë5×\iZ1œpÂqòĘ+*lZ2Ö¾C«žÙƒƒ:éþðØ6˜š¨¦¡·ÝvKà¶#ØÕßßã?ñ½èIš¾­¾vƧʙgžfÞW"¾œýê‘pÖZ({¬×žPñä5²¨¦5âö“’øZ�¬xŽºm´íõó^Žõ˜›·ô ³}º®Øòz?îÇNõ²ÆÀ{\øZçÀ£Íu¿-\Àâ|ÿ >ö‡ÞJǶ¥sd¥^OHm]]`²m¾çû‹¥:C<í2V”³Ëûë… “'O‘tÒ lZ}LîÝ4nýæ›ïBÖyµ¿þúL|ë8öØcB’9µª«{Â9Zaõ”1}¤4J¥UdÕJú/Q“ëïùp¹´Ä˜§¯û>5ð5Š Hì�œxޱuæØ¼@¦N+&¹,ÅÚÚ|òâ}åçÀÏVÆöñ.‘8([é˜Ç 7ܲN/¬ûÃ6”D,X°ÀÄØk¬±º;ùç?Ï1ÞÿÝÚMšÔ^5McmÕnûè£ žûÿ÷¿ïø“œ}öyr×]÷˜‰KǨQ£B¶0a¢ç>´Š;¾ñŠcb¡•alšL§#º-[¶L¾ýö’JÄ?�R)Þ1—p5 ¦®¶Nòîý·È´_¤[ð‘%Ó•^ÿ½SjçîvbR21MWÆ?Zl`§vY7qâ§òä“OG|Ý=÷ÜÒ®[“Ô4YÍ‘ª1TíLjôí·ßyŽM겑ªÃÇÂ]ÖŽ¡REc?›Žu^vÙ•[0j!;¹Lí°ÃvÒ¼bÓ >öÜöÃ? y¬c^Ç“®Öcˆ�² fHH<ŸN¶j°2«åç°s–ÞëÃ$›…Ù¾M$ÆýÛ g¡Û·%¼;ÙÌö}¶Eü~½Öû¬Ÿƒ÷ö;zYTø£L)'^/ï´^)«’ÉK>’%U‹¤¶¶Ö´ Ò[]tBNÑ~ŸÝ9¡«•ÃîºëvsÅCEEoÏm4˜Ñ*_×^;VöÙç@ùïéÔ@Û1¸ûÀŸvÚɹ]v#›l²qÈ:­P‰žDì¶Û.!ëúôéÓ©b†žh;M‡»­æßþöÁÖMÓŠf¶pÁ¦C+©í±Çn’ ó—·J"ÊŠ|rô6¦(ÎW3åé Q_3wYb_ �’ëq,–Ä2}^¯œ1c¦´Î|]*>ÙS ~¹Ý´Ò‰gö’¨p¯÷ÐÓã}CC£ø›çJoS½L“ÈÚ¬d²6W¢™¸+êpë=ø­u+ÞKŸ¢ÿÉð²Ç?ƒjY¸paØ÷éq¸uñ<:(µí¶[‡¬»ãŽ»<Û+]yå5²ï¾Ê™gžcÚ•»çbµçž{„<® L Ü~û¶ÓuîÁS÷kõ�{bW¯–Õ˜é/94¸N<¯ºêÚ”´ŒZ¥²@V®Œ^ô['Y¯{½J®~µJæÅGź�ˆ·½T¸çurIã“Ys åÙW+I.KM2{æ•J™>«ÐT°/8K&¦É†xG'<ŸþEù¿ÿ;B–. ô;þøcãª^¢c'GõÀdàβ×^ûË%—\Þég  kîjååíIç:®´ãŽÛ‡<÷ÄOÉôé¡UofÏž#/¼ð¢Ìš5ÛT¿¿ï¾å§Ÿ¦Ÿw³Lšô•¼ûîû!ëtÌM“ÔlZQÞëÂÉXØ*ý»½á†›Cb½¯ëbi//â�©Ï1-ÒcM"ÑÉyÏ<.yŸEGú};IÊ^ÑüNìŸdé»2Æ9î¸tj yã·ÈW\ÒNQiÕ,Mdzè¡GBÖï¾û®RYÙQm4Uc©ÚÏ6Û„ŽùhrÜÃ?Úi?zqž;^ssÇnîDµ=öØ=ä±¶¯ÔXÉMÇKwÙe9âˆcÌxvr: E£Ésîy8­jû·¿mŠ;Øs:6«…t<˦sŒÚѨ;yŦšÜ¨?›>~ê©gBÖib¤{N³+tÇ"€ìÀÙÒÆ™�mjj–ú–ZYš7¯}¾1b»Hé<_iÚQú\ëý ¶£toïsm︟Ø÷o^N¿Ï(û þhÂ~]Ÿk½ßs?õ¾*©/œ$s}“äô®_Y*k×¾5e`ѪRTTlJ™jM Jœ€:ÓZSéûÒrºùËaòÑGËgŸ}n‚SwÀ¥4 ÖÁ<ÔjdÎ{úùçÐ+št 1ܳ(iBšã—_"_ ®œîV[mi²úí`Û.iûóÏ¡5}ôqs¥«›{POp4XvŸ�96Þx#é*CûäËY»õ•ïf5É#ŸV;yrÔÖ½M›m¯ù߉51í‹é �Ý!–Á«X·Ñ“j­ª ITƒçÞ!ý—>¯—3J½¿¯47·˜ãm<ûwÚ‹ëç½^ ¯;]´OsàØ10ÿÝö$2§¦Yüí±…ÝÓ§ gyÖ ±‘ ÃübÖ–N÷û—|! -Ã<;™ã£&cGk•i1I®ùë_ÿb&P!MØ?æ˜ãäÏ>È\¹hÑbyõÕ×äÃÛ«|h£÷GÞD¡KvÞy§ÉXLœ9sf`Òx{ó»ûàƒñXï‹×é ­}…¦NZßtÓ-!ÛqÄ_Í¿«ÿû¿ÃÍ>u[é@–ÔiÅÚdõ)íïð—ͯ>e\ï ºx'äÂU˜7þÍš%óäËã/ôÄ7ÓEÛe>5®¿uÈÂ@|2;p,\Åsì%Þ˜'“â3Î8'0þÑÞRJÇý–,Yb’´4ŽuÓIA÷Ä`4ÚÞÉ®‚ñé§ŸËyç] ‡òg2dˆùzÏ>û¼I³Ùê}8yä1rÐAšßÉìÙ³å™gž ©JÒ»w¯¤2½¯•ñíJô^xI ~ÚË´ZÒÉõ—^z¹SâÚQG‘ðïjÓMG›ÈþÞtU«í;•WÞ|Z+Hÿ�H—x’­uÌñâ%“Ö$oÜ3‚º9(}ýEi:\ÞÊÌ/iâŒÊ†q›ÕV[Õ5Ð$$Û¸q¯˜Eã�mY¨Çw;>p 2Øt±¥jÌ#UûÙf›­coÁñu×]÷šXFœôw óm/¼ð’DcW‹WŸ|ò©yݰaCMës­`¦_OË”Ž3rÊæ"ÀÍ6koIªã3<òXàgºÌ,ÚnT“ð>øO+m•®]õB‡~?\p±‰± h>/tÿ^þùÏsM»îæŽMõߨQGýÝĦ+¯¼r`îs†éØd·gwƼºKW!È$˜!¢x'`öÇlýUZM-.‰)a+úz_pnÓçl”Ð~ÚçE}öÊàöþ¸ö~ÿ¾Ð˜ß+áÌÞÀc?~ëeÛ;’?ƒ[¥Eª ~“*ßo2MÞ–âÖ>Ò¿vMж– -XOÊJÊAsï`ö{"ºé¦ïM+Œé¢tñË/¿2Áô{ï}r…‚¸i‚×¾ûîm/\ÚC~ðàÁa'ë‡òXƒQÕd<ïí‡x®×€O«i؃NÉh½ªU[•Ù4aÎ+i΋VÁéß¿¿çs%%%’*C*òå÷Å-aŸ//Γ¾ÁF•HA¾ÈƒWËvk–È&#ŠÍ¿Çû',—šÆØª† é“/�Е’M.sOÔê@OKýRYí—3¤¤qšH^{rV}mƒ´N¾$´hÉbNb™&(ë}w»ŸhïŽNoõ¸£û«Èû¦½r™I(óµ×0v‚({Ñ‹ B¬öíÝÉí_ÌZZ½¬# Í/ÃË_”6Y` hKSè IfÝG[rü?äŽ;î®Ó ÜH­ ´%Áæ›o&‰ºðšIP;>ÒA)]¼è Õù矲N/&Ð+‡¶×A8U^^.ÇûwSÉá¨cÆìd€“±Þ°"ùâ÷ô´ô^ohô¿s�ˆG¸F+Ì™3G–TùäÑçûK} é¦?cýYsè")üì‡îyáA6Ç/áŽã6ȼ첋%^wèkuBË¡c@º„£ÉWšœåXk­Q¦ÊüÍ7ß\§c2îJ$ý=œþy!UæubU/d<‚ê9À‹/Ž3‹—1cv”?þñ�I”þ;¹è¢ó৆üMk,e'•é8Ð&›ldÚ{¥ñ€dÄ2îâµ­{¼EÇöýsgKþ}·wž«A÷ ü.ʹW– [E˜ó÷XéÃï²ëâ!MòÑä+íˆã¦q‚{þÆ¡I[7ß|CHõ2G*Æ<RµÎ;ï“|es’èìíÖYgíˆm2×[o]ÓnÒ¡?›«¯¾Î$˜÷¼Ywé¥É_þrDp.Nã¥|Ø,^4¶ºà‚ó$šôwûí·ÊÉ'Ÿ’d¦ô³ÂþyÙôß”v4Š÷B‡tñŠMõßâü7ìkN?ý”„Û®§BwŒ!È|Œ(!­4ÁL'Ug6ÿ²¢ãRGÉ6§•¤ßZD"´‹”¸Úi¶%´{½óão§y}Ç{õüIJÏí]?ç÷ؘ·Læ|)ß?&ãó®“©ÕÌÌš¸äˆç°;h�¯á5×\)O?ýx§D/ûÊ‹t´ sÄÓvÉ>©JFcc“t…Ñ#"—ÛÕ+Tû´ÆüÛÚfõ9iÇ 9t³öØ7~¨“Ésc¿‚uÓ]_Ú@Ï•Êä2m9­ ÂyUSdä”S¥¤öçŽö“¦õd[`£ÕLèFk©ƒ!ZI’[ª¤tþÒV7G–/_îY2>–6™: £ÕË [—YlµÅô[ïÓÚ2Sï‡bµÏôXÌ]ñûíxÜ_¹ü1)öÍ”ùó/@pÞ¯SÛV$ã…û~"­‹çy´Ó*±:-‘Qc˜Ã;Ä r&C“ zè>Ób<š-¶Ø,0Ð{Èä®^©ê¾ºöì³Ïyÿzõäk¬|¬W¯^wÝXIÖ–«K¿4TÚÐ}n±q€ÈbK¢=ÖVÕõõÍòÜ«•R]ÃE>]eyu<õrÿÀ1©Ùüì l±Ä@±<—I´ѹçž%cÇ^Ó…^4±ËÝ¢Ò‹Æ+z¡¡Ž¹i5SMp‹ÖVH';/¿üÏ HX»ÿþ»Ídj4ZaâÚk¯’diÕ«®º<ìÏN/^¹ä’ eĈ’Ä?�Ò!žã¶ºk Œ»äýçf€‘n—I‡ß x/¾¦Féõß;¥¹¾Îü®"Uéô¸»œrʉ&FÑÊW±Ðî7:5jÔšžÏ';æ‘êýh<sæ™§…½ØUc'­ ¶öÚkI${ï½§©¬æ¦ ]ZBé|¾pƒlKÝ}÷L%¹x9ByäAÆ’Œ¨_ë¶ÛnîÖê_^46½âŠK£ŒÐÊ€ ÆSé-]ºz @棂âÏä¬N êÄèì¶_;:.™ œ-}ÖMÇä¤_·‹4ÏÅPÝ,äq·£ôZ{;ÍøöïÝNÓ/Þ©ÂïÇ^½f½,—ŠŸ‘e-3Å¿pOó;ëÛ·¯xéÊ ÷ÜsŸiuéØi§eŸ}öòÜVƒ[L´KO›6-xàÀ!ÛÏŸ??l™¹sC¯rèÛ·OÄ€Én{iÓ }»º†rªŽiP¨m:kkë‚Ï=ðÀ=¦­B&ÙyíRyÿ§zYR>‰NŸWÙ²—l¼JûààôÅ-òâ×µ+m§¹ÓÚ¥�™"Ö1­ ¦-€Šª–ߟ*ùR-bæjõø¢•ÂòL‚™“\nz«‰jZz¿¡z±ô]ö¶TÖ¿8\×ÉŒÒ}[ÔšJ£ñ&Ué±®®®>pë—~þ í1ÍÛów´Ætî·ï¤ý¾&´¹“žA‰õ¤_:ö²Î²~µ^ÿ–iµ§~vy²òÊÃÍqÖ‰#jkkÍc]¨dÖ5´ú×vÛm#¯½ö†)_?oÞ¼À�áÒÀk©i=¥åì<pÿ„þ¼è ãþs›|ñÅ—æ Ø)S~ Äf ÌsZeL¯äÔ«µòˆýûÓ¿£k®¹>$¹_ß÷¶Ûn²ït€T+Œ8&L˜(o¿ý®ìºëÎ’¨Â|Ÿ»}…ÜôV•´Ä~}AD?1ݧî�Ol q†¶Yyû£ ™5—ÊA]mμByb…ìºýòÀDÒ²à¸K.Å3ú>u¼C'iuâuë­·2Uè“­´®Ia:±vè¡›Øá›o¾5­é5ÎÕVZ¥^ãüÔ8"SÚzë-å•W^3Ñœ˜§´´DV]uUÓêS+Ž…«¯´ÂÇ3Ï<aÚ½ñÆ›¦%¦VêиI߇Æ/°_`#%U´å•~]mûýé§Ÿ™Š%%ÅfW'ú4ñ-Rõˆdÿ�HT¢ Döëôbx]|O=,¾_§ 2SÁŒß¤ìÕç¥æ€CÇÔê` ÂDc˜®Ž}ÆŒÙQ¶ß~[SuüøÍÅ‚íEjŒ°ÒJ+™c®&4Å2“è˜Gºö£‰Lº¶Ùœ4é+³ââ"S•L«¸i…©›núWÈkÜófß=øà½rÿýÆW>VÓ÷¡qSÍmРArï½wšxåÕW_—©S61[ss‹™gÓD¶í·ßÎÄlá:ÅB+™ilø÷¿ýÿì€$ÅõÆ¿žÝY÷ÝsWw—ƒ$$ù'!!Bpw !! îîšàÜ9Üõ€s×uß±þ÷WÝ5ÓÓÓ=¶³{»wõƒ¾î®î®i™zýê«÷ _Ö‹Æu}… Šß Úµµ5Â>¢¿ˆéFÝ¢öÛol¿ývq¶iSS³q}U"Ó£øÒ~åõúÛ‡¨P(6é¶ÖZšÛ´4æšÇºœ|¶¹œò¬²<ÇÄm´Z|@ð} RÜTüöIvN2ºEWW§è,3f4úƒt"G¸…1–çK#cUç2<ˆ €ìý“n_ž˜æLߦ¹ì ›Ø,íúõÄ:Ò¬?>Õ¥}]w9ÿ\Ô¯'nËIýzÜùO ì…ÉÚžÂ�“#œÆi2c5—†?CìÚ#T0ÅÃßï9ÚâÒK/yÉ%LOùÒKf¨ßO?ý ÇwRÜþ·ß~3¶ÚjË„zŽ:ê8ᬔp´è-·Ü]ßsÏŸÆå­ßrË-„ÑìäÍ7ß2:7Ï‹+»îº«°ÓN;Šå#Ž8FDá0Äm6£(œçÃPÄ25h.XÜÂå/5£+˜Ü)°ÇÅBdé¸ð¹&¬l §U±_ùûTaLÒ9+ƒ‰%K–¿Çì@*áïùûÏ—uÎåäÆ@°k²|å–þ{É’eÈkú¾>Õ0HÛ-ËT7…YL‘™çÃr}2š¶¸Ëèü2^´]R4S,ÓÔÔ$¥ÍŸcxýà×D] ¾ñX1æ|ÔŽ¶kÉÒkºÙe¬›N±¶öNŒí>åù+K©Åfšc™ Æ ä[¦·óq&kïÝ"šé6™µØy'¡¸¤V8¤xm~­I´;zJ…ÀŒéÓ±CRÙJd¦È%³Wqû;­hêì]/+#w°suê°ìª …¢w {&ÛèeöeŠâ—-[Žçà?ÏÔb€XïàWê·4`Ã)Mu±mšë²ÛzºÛŠ\¡ì…bà2Pí™l"YÙ—és¡ˆ%ðågÈ»ôoÐ".õEÝîC ÛúS;X´ÄÊãË0 E¼wµ·õîå‰.Í£<¾Íã„Ü?Fs[®¸—Û¶¹|¥4--§žm£M…Ç14GÙ7ýËüS†$¹¥îT(о"{&“÷äNAŸb¾\µZó°cÒ­yÄ6é¶¹s‚Çz²¹sÙIJÏ‘J‘©ð$ÓÑ&n°dIH¦ÇŒõ/Ê>Gû”˜r2–NÓm¯zRן˜N3Ýz"žûÛÒiêZÖç™X¿í\3¼ÞäõÇ߃¹þ7Ñ^)r¨ó…2çÛW8CéÎ;ûÛ?Ĩk;ì<æ™çÄdÇ®§ÌæøÚkoˆ~7%¯¼òZœ¸Œì»ïO‘ 榷çŸ'<Çn¸9®Œi(V“8Ó;<øàÃÑpÂvhØSDvüñ'‹œì®õ'ckòÓ1’Ùe/6ã’ç›Ó—eR¿B¡Pô^‚zgy0â2´.ÁÄÏNE^ Ý2÷-C#šn’ópB]r’КV-ðùwaÌ›àïn�؇­nñÁï/λdçæå eÉô˜‘` ʱ̖Sž›#-f4}¦±²§Ïtº÷; ÄG/‹?÷â¼e_r::;…nõêz´uè(î<%úëX¾|¥kz…t=dº]¡Èvˆ^ú«üiÇrl7¾Ó†ûQäOíÐà>Žðc» …8Ü8–u¨ÎU…BÑÒi# ;™–±Ù°+ž~©ªY\{ðÞ?ór5šš5‘Ý-º¹_zÏV¡è/”ý£P(2!q™³œþõ ScÞ}«é¯P l ?RÙ#w‰T™D™‹ï€¢÷ð>²_í±Çž‘PÝhooì0 ¥B¡P(©P½ûŠ^‘Ìà“é1ç@·‚b˜9vL£\OA¡£wé.mé¶:¬È^™×ã,· -a0\F†dX?Å`ñƒJô¬êqO§Áâ¼Q§)ª*++‘IHâLöMX·Ür[4ì/yùåWE¨b¦`$vÌ3fCC¢0Ëž“œQQþô§?âòË¯Š–Íšõ=9äO"Œ0Ã6õÕ×"l¯ŽÔJ'•Ò…^‚™3ߢ8¾ü>ûìÿΉ×cOµIáÚ½÷Þ/:Õ Óizèá"ŠÃwî}ô‰0þ)öc(dN ËÌt¡ýIeqz乫ƒÈ”Ê¥oV(ýG&@¼ÊhÓ0=r¸³ >ÿ+|=¦%Íæ/®ÐL‘9Ò7kÂ!Þ8lãò[bܼ{QX’`‘÷hµ(0>m«›,Ùùr¹§' F¿3ÏG·E.Ó-EÄ Öm̬e=Ìœ8fO¨¦!Έ‘ã2š5~û¢gjô²ü¹^ð$Vuü…F¹¼#„HéΨõÿcÊçcQýÿ 1C¬«t™ŠS:í2¥HL„_ox£Å3­8ÓŸ2£R‰ê EÆdÛéfßNÁvww�O¼P‡®nõþµ¶éî1…~‡ý¶A 22Ä —­-£lE¡ì…BÑ—ØmúK˜Y{îqhË—¸FÌR <òV¯Dñk/ s¿ÿϰ¼¼\”+[eíÐÚÚŠ_ýê·FUK´Œ}bLåÍ~¯®®n!>»ûî{£}T„v™ÂR¡P(ŠT¨7=EŸ@ã1"êÁ*,5HÚ£YHÑb:){9l»º—;Ãë®ûg^¿ß!jïWÍê<­Â¸r=nÿìë×â5·H!Ô¿ZûÁꔎSïû—†À¼ôÒ‹qÒI§ ±•„ÍöÔ’n0wùn»íWFÁÙG}Œ·ßž-[°`!®»îF×:(»ä’ ãRV¸Á<èÌNá'7˜rô¤“Ž+ã ÖEý'œpJtÔ2…Î|÷v&MšˆÃ? ýÍÆ# ðÉÂô(€B¡Pô¹—±lÕªU"êÖ¤ÎDqÇ<S e–I1½fEþBDD3|™"1:y±«tåçýã½ÈC—Ñc“ðqÈÓòÒµé6 ”é&ùÙ%¡ÆyFb²hzLûºŽ¸T™4 ‚Æ…åûbF„]d¤¡î—6‰îZÌùЙè Bs÷tÑ>ÿ‰¿ß³e¾1ª,Œe-¿6ǰaÃz-2S(ú Fd½ø—5xã‡.|¶¨+ZÂâ¯bxe¶WˆÓŠQ˜¯¾› …¢ïðJ/Åcøü›,Y®Þ½ ‹–âËïŠ±Íæ"Ú9Ó‚»-£ìÅ@GÙ? …ÂÞF®¢ï¿¥¥áeKà{ê1( ÖÏ}ÉKO£g‹mÑbô­ÁïOtv9m%¢ïTáç??�÷ßÿ`´ŒÙrì©0Ý8ãŒSű …B¡P¤B Ì‘ng'_¸ïòÐbÿ¢"/ͦü²/x¾ÐÒŽÆeœéiìŸNýš£\O¨'YÿªwýšcÿxÁYºõ'îo3ºÓŒnf¯¿Ûg¼Ài=ð…}Q#~mó›m¶)n»í&\zéåbtE* qÈ!¿Ç±Çíz¾ÿþ÷¿pýõ7áá‡ÿ“´žQ£FâòË/‘ÄRñ³Ÿí‡šš<ùäÓ®ÛGŽë®»ÚÕ(ßzë­pûí7ã¼óþ7JÄ ¦×ü׿./fýÍö ñÌ—hêÌm8òê¦u+ ÅÚ$q£L´µu`Ø×7£¸u®)Ì25d–@ 6±™fmð¡´õs lQ¬££ MÈŸõ2Æ-zÊ–qÒ¤‚+FÄ_*ôkŒÄ™î¹ËrN´ÃB¡0 ºç¤nž#ëÒ­y4Z™–ÁŒ“q¬)>C¼ÈL^\Ö½pÚjrÙ(Uô4:ÚF ½«Uµ£0wI¦]Š*ÿ§ÐK ;²ù@äåå¡®®.-'¤ç)(礢aê¾›”ˆI¡P(rAo;h)2oiiA[{o¼§:‰¯¾S‰©W¡  Y ls³÷T¬b £ì…B‘ œâx–{´íhøTò08é),F`ä`â$n¸ÊÇŽGQM- ª«Q\7š¯ Ý«ên@°«Mó¡·÷÷(÷ÍGOööÈ—¬LÏò8g§VÚÇÅã/¸«×þ³6Ño"ŽP¶ÊZAòóóphwƒdTVVà´ÓNÁì…B¡P(ÒA Ì}‚Œ‚µ(0'A£/š² Îb3[‘³\ב˜r2Z¿/Ê‚ŽL£ƒ¹×ïœizÊzÒ«ß±!Íz’GgÓåºg=öò0‚È׋„áÏt˜÷Ýw>øàC¼ûîûøò˯DŠÖÖ61¦ªªRä„ß~ûéØk¯:t¨g]ŒŠÆ üôÓÏâ³Ï>‘hr{È:Œ7ûî»öÜs¸t–©øË_Îb¸ÇóæÍ7:Á}=z4öÞ{/üêW¿DYY™ç±L«ùøãÿÁ믿‰W_} ‹/Áš5õ¢#‘Ï6Ýt‘^sÇwÀÚ‚iŽÙµW½ÒŒPŽ4f ˆÃ:Y·B¡Pô5é ã“ßÕÕ%„a¥KßÅyO™Â+‰O7µdÄÁÌj{ó»W £¾¾^Då¬÷FÎyÊJOiÿ$›‚‹f‹Ïj‡õØy¤:O:Œ˜Z™ÑÀ˜’€ç­…;ØËl‰É"–0ÎZ÷Ù#—ÉÉ* sâ!^Xæf£x]s?[q¾Öñ%¢½çHÅã“§aÚ˜%b[uᧈè…XÕø ÑñJçd²ŽV•*S¡P(ë3v[â2¦¾¡©³K¥Æh0])…?ß»UD·­ªªåÊVQ( Å`¥·âx ËÚÚÚ± {þ×ùô}7ÁïŸýƒ…öš!ÐvÜCøÆm¶yн QTi´ý•æZõxÛ&Ã_Ó´ì=t,úJ;^B¹µm£[GY4h‚žÙqöõè¢×qÞþ©²®×ÑÔý%::¶ý"²Ÿ%Y¤V%¢ïèG;á„ãðÿ÷K<ûìsFØX¸p¡á/ì°|lÕ˜8q‚è{ÚwߟFÓš* …B‘J`¦È94þº»»E'çâ࣓Աƒ›m*Ê5‡hJO±ºåZtfÖ¯gYµªÉ~cGïj¯ÏÓ,ŒÕïØ˜A=‰ÑÓ4Çùë.ï´PøU(Æ;σFn®DV4š)4ˆ×_Ùµœ‘Ì8e;Ó92$›Ñ!^ç“k¦óã̽«pû;­½ŽdÆÈe—±N…B¡X›¤½LFcJK_ërŒùôJ³ånbÒã×É#@ ?ÂÒ¢]Äò&sžBÍ’bMr0nW«.³}.,˜ÒRŒ24#•…Äd¦ã¤ÐL7:“»0¶ õÏ·W"6Q™48„ØÍ.6³ÖÆ úócç«YÊ2·hfò<͇Äèer¹$9F—¼†oZwE5XÓ\!U­ÂV©-|íÁ‰hhØLDøà¤Dd …B¡X—ém-û±ãhá’||5k`Eª,×0ftFÈè‘> š‡îè@k›Ž\R]éñ*ÆŠ•,[Ʋ,^6:;sû9½á‹oK±ÅÆFÇk»°o•݉ê€U( źŒÝ–¡àš"³‡—¼hxt¼¼?©*E]K*á|?ÚwÜ £þ#Æm±r‚æCõè]ÄDš—½ƒÖÙ·`häeäû¤) áW4‹P:B3}<…f^TfYm˵XQxx¦ŒF¯X»Œ1\dýQ( …"—(™Â•ÞDü0#h„ÑlA³Ö(ûJ3Hw)Ëm¡ºÄ«â#“å@pfnÖ»ú5ÄEgsœeW¿f+×ãûn{ulÎGKÑ—×^”h"t®åÔTPvé¯jðáüÌZ@kw Bè&ÿ(òk˜P—ò"6Q ÒbªÈe …¢¿ÈÄ–ñê´mjjFwO7Æ}||ÎXjL).KÐé¶HfÀÐÎOðmËjŒjš‡š…Z‚.ÛqA$¶û´yÂÞç$…ot¾Òæ ‚b½c¾a{}§£gUÝ‹Jî,Åë¡G¬jM\ae3ʆ,FaçKP=i6JÊV—ŒÀÆs „ ãÀ%Š™wª±e¸¬kV¥.ÑËì·ldɇXQ2•5øôDZØw»o¬Ó1ºìQÌm‰U«ü5jD\¤Q7Û#™=¢l…B¡P¬‹8£—15÷KoÕ¢—\{Mñ>8nŒ“&äcÊÄ<Œžg3¼Ûxî•ä’Ýw.@U¥OLns{66E0ǰ—~˜2æèc­ÁgóÒ›•8fTƒè€2dˆU®l…B¡P .²ÇÛ—¨ »»_¶ü€YmóD/PÀÂÝ?Ûç<ô)–um¿ &žq.JFŽB_R5jW1õ´-ÆŠÏ/ÀðsÈ×ÖÖ4„_žB³t„gVYœÐ,ÕqF÷RàcuÎDwá^âÙY§ ¢˜) …B±® fЬñz)é1çý§Ž°ZÍ^‹h*aÍQ®Çíù,“ú5G¹îzžÉêw¿.[gªÝ÷Ø?½ú5G¹·T|–ÑyrJ^ãPäW从œU(( ÛeJ‘˜ÈâÆnx£îÑujJ}8eF%ÆÔ¨fF¡P ,RE�‘ëmmm"ECÕwO¢lõ·HL 3ú—nŸt曎âG'¶^y#êV6�EV„0Ó]™ÉÎÍhŠzšÐiÔÅÈd<9QHF;‹N:¦¾jú(ŒŽÏóÑõ•z—_œWLÌ®!€b«ù7í›îÕµhž3Q¬óT#z%#êQ·áwµÕ»¨÷|yA3ÒϳÇX.ȉÏtÎ�°¥òŒó/º:íb³xÛnãÚÿaEãA˜»pHÌÆ1vÉÓ;1ªø?XØy‚ü1µ5ÃùÛŸ—r8* …b] ·´LMáùs °ruÖù†Ù0eb>6Ý(›LËGAAò6zú6xûƒ@΢˜UVjØf ÷ˆÙ5Õ>Lßš“AÃþš;?„o¿á›Y!‚¹ùüLX¾ª�søûP° …B¡Xoioo¾ŽgV½e…0ùjT�ßNŠMç­Á€Àhg¶œŽi¿¥Ã†£?),‹1»Ý‹îÖ%Xñɉá{Ó¶5 áWÔo“DŒ–*™XL︚Ž;±²l7ñl¥}£P( …bÝAõü+r;>éÜZ˜mÌ.ÍÎ+®®åñé"íûkŽýõ¤õ¤_¿]p¦§UO\ªëþš£\Ïè<½ë×ûëžõè¶Sñª¿¼{¤è°U3E:Œ­ÉÇÅ¿¬Á?tá³E=XÑ_¯á•yØz\!fL+Fa¾rp+еC¶‘Xåqáp--m¶5bø·ÿ1Å`Ñèen“n ÆÚº¼/€‘ÖñFåYs=޶€ÑîvóžbcÝüŒÒ¼V´ç@¡³•Ƽµ7t¡ùÕ|´¾V�½«À¨V²2MÓ¢:0»N®ë† ¦EOW6™Ïø¯kÅ,Z±+¾¾ ÊÇ/ÇØÞ˜mÞGq)¸aãŸyîÒ±§Ê„uír=j´x ÎÛV”׌)u_aåšÉ˜½¤SǬ‰^柇êü·Œëß ÅÅE(//OÚÙª¢˜) …b}„xŒpúî'5èoÆÍÃô­üØhZ> Òog)HÛe‡<oE1cÔ³ªJ åeš§1[7çyV uÃ<2®Q±cÞÖ®£¹9"ÖÉ;F÷MëÝpj¾˜ø©Žo¾áÃOƒX¶"Œþäí*0ub£Ø :` …B±®â壡ÝÂÈ«sÚbvÇ¢øcŒÿîþé8\}k=´Hv>ž\ÑUVò³ÎÇÖûþ k“¢Š1³ç³¨Ÿó_ä/8Ëð•4[[Ò~Eû©Ò•Ù˼¢™¹g®÷|Šü®/ w×öâËHôÙˆè …B¡P <”ÀL‘6évÖR` ±$´(fk:ŒÏXcf‚3{y|Ÿ¥#šF²zÒŠêÅÿ5GŸ¨žq=îÑÓ4Çùë)ëI¯~dž êA(ÃýSÄ¢=õ”B‘ ÈöݤDL …B1H½LÒÒÒŠŽÎŒüôäõt¸‹Ë„öËæpsF3 ëˆK;)0Ò|朳¢N ¤ÛXn5EgÆïik9†u-Å‚întæÅhmmA{}7š(,{£ØðnR¦9Äebf—æb×ÄlÝò)Ê,Ÿ>݇ˆAÛ‘øfþAøþÙŸaò¾¯cênÏÁ.+Š™]X¦ÇÛš½r .¥¦s�Îèer‡ j?ÄÕñí‚jL½Q¦1Vü*šZ¶1îEJJJŒÎ㼤ÎGåœT( ź@&饨A;w¡KWôÏ;=Å`›o’·-Àˆá>dËöÛˆ¨gåJгk»;»tÃFÐQW—ùyiØvK¿˜/ ãƒOƒøæ» Bý 5㳚¿(Ó¦„/MøS° …B¡ ¤}ÕkÅñŒÜþ¿U3]vV–vãÅí&c¿ç`mQ¿éÖØøÊëP\UlhéŠ`iSDdé ˜×^R ‰ìcªóP‘…íS7åwŒšeïþ£üض$~™«²-¡™Ç>q}}îûTµ?€ÆÒ­Å3®©É~ðƒ²{ …B¡x(™"§0ÂF$¢cU`9º´Î8mV”¸O{ç¤Ý5£t” "4-Ö§iœÙlç8“4 1[\ì3u¾(¥]³ÜqšË=ȸ~Í-¹èÎß\ºê!((ð+ƒ]¡P(ë%ÒÉI[†¢.4.Gͼ·bâ2gF`Ÿ¥ÐJÉí0Ef1U•9Ó"ÖF—yi'PÞ4—£¼õG4†&¢«³«ßíAð¥:„óDÔ1!(ÓìÂ2+z™¦¹kº4St&ƒ­E7ÚÏÀ™±ŽP[)fý÷gXøîvØê‡0bƒ/Œ·†<Ä Ëì‚3™:ÓŠŒcSµiÎÛ¡ÅݲըðØ{“²m‡ëÈ׺0²ä¬é>Ìè@nEuu¼s7§£rP* …b ‘môU‰L/5óÃ*ôÔÅ}X1ÆŒL#\X MløÐìj„´lÅivÆŽÎÓv[ùqû}èåcI‹™—cÒøfŬ7å•}£P(ŠÁ…eÝÝ=XѹŸ´|Û7_Ǔۗc/ PÜ@¿b´©ûþÛüý’Œûz©aÍ àƒy|³4„úöHÒýëÊ|Øl´;Lòc—©Øt”?­Ï)(‚q{¿Œ%Áû‘¶8,Zä%4KGxf•Éè zâ>e]¯¢©g1ºý“ijÎÏOìŠV¶‹B¡P(ƒ%0S$ÐÇ&G\’…Á¹‰Ž¸Œ„V€[t3#y=Îrgç¥î¹fõk¶™ÏlPÝÍQ®'ìŸ]ýš#ú›P­°eª&W©ô˜ …B¡ô¤;‚Ö-çÍÍ-èêîÆ¸÷n�"6ÛDD(Óm‚2ÍEtw1šSd†$"3ΫÚ0±ëj|Úz2–¼º9‚ŸOó‰I*" š&–Í i±ô˜r]b7 (ÔÒµ˜ÐLœªûdM÷ =]Ä:®cé¼{Õq¿ÇGØìÿž@aI›iŸi6¢f³‡ì¶LBT38 -ÄÛTÖ}]¹ã†Çò†Œ¬íˆÕmœpMÁ§XÙ¹·Ñ‰^€²²2øý~ÅL¡P(ë ÉÒKA,^æÃÂ¥ýóN¿ýÖ9— T&ŒÍÃ6[øñÉAô5óŠg7eb0.”eÓ( …b°nôÕÎÎND"¼]ÿ©è«0w°ÏÌÛý=¸ï pìsß ¿ˆø|u6>òØ´öohࡺðø§Ý˜·&„L �ízÄ„çÉCóñë­‹pÈöÅ"ÊYr4ŒÙùF,ÿb"êš.2ü9 ¿êU˜ŽÐ,ã´™²ÌÖÏæH›©!ŒÒö§ÑUr:ºººP^^nnMbÓ({G¡P(ŠÁAï†*(0 ‡Ã˜×5'¾Ö˜"ºÕ™é(çzĵ\‹M2êludP|¹UŸ¨;ýÓ©ß~žšg=‘Œë·Ýƒ4Î3Yýñå¶s5ÖkÃDª)%0S( Åú GUvuuKQ¶â{ÓA[ŽX“år>>9E,ÃÇp¤zÏ#(ŽÔc—ü`Døè†sSN_^ܺ˜4s.„g–ø,*6Ó͹,v¦‰T›2šÏͨ+(ÄÜwÂ;7ž€¶5CÍs Gb†KÄaˆ¸Nzâþ.ÑˤÐl‡IßcÖšèö¨Ú˜/~=´µµ[EîÎêTô6RŒB¡P(¹¢·é¥ØAK?Ìg_— ?(/Õ°÷ý“†sm²ÿÞ…"mgðÅ·ÅâòYJÒ}þé”+ …B‘kzÓæðXŠŽÁ�f6~õ)˜3é`ˆñÎT`éÐJô—iþ'6HC\¶¦-‚¿?Ó†é—Ôãß/¶g,.scîꨋuþãÙ¶”ÐÈÈ-Ï@ðk w ÅÿNÛEK]¦iñƒ“ç±}СUVÞñ ‚Æ3¦}ÓÛï‹B¡P(Šƒ˜)²ÂͨcYOO�Ýán¬ÂʨxÉUð”AyL4eœeVOÄsÍØæqeqž‰õ;„q½¼fýZü=ȰžˆG¹Ö]„eáói®¡Š …B¡,ô&zimmâ¥aŸ=ŽÄô—²ˆ—° ±:œ"³°žBdf-ç¶ÝÏ.ÇøÍ_± Ê4Khæ3£‘iV™\æÜXX˦“Ð<)4ó9DfN¡™Û´ú«‰xýÒ“ÑÑXm;G NX58ôDAYtÛ\`»Ï#ÊW#ÏøOõ2›;Ô|=¸ÊpPv‰T`™<k…B¡P(Ö5ùƒâø®®¾]Œþà€}ŠPT´îG—(*Ô°ÿOúgÞ·?£«;$:ÛùL …B¡Xðò½0bg8Á·ÍsQh6·»ˬ kܽÏDô9†ï#|Ô ˜ø‹_%ÝnF+ÛãŠÜ9³]ÁÜû::îx§»ü»^|F8…y0bãðºê .¾½4ci ÍRÔmšD–¡ ëñ¬ùÌ%ÙT( …B10P3EZ¤3rR¦Ç\Ô=Ïè7X}ŠŽÈ^½ZÅÊÍz#Y μË㣛Ez}ž¶{CÁ™Yî¸YÖSÐ<µµ5†ƒ¸ …B¡P¬¯P¬DÑ–£nÎÛÈNT¦ÙTçÖrĶÝ)2 ëžÌìeÛîwÆmö²)*óÅDdRhñ™â2ÎÅ$Äf°ö³NÑïdL™ÙÄfqë6‘YûÊ:¼rñéèhªAÔP² Éœ2·ytÙf ´8_ò¤aí¶íº¥53w¨ò„`Èz^PI…B¡P¬ûxuÄuww‹õY³  ô½‹oÊÄ|l¶ñú30móMüØpjß_oO ?Ìñ SGúÖˆê€U( Å`"ݶJ¦Ç|·ñs[Ô2geˆóÌÄgŽB_Òñóß`êQÇ'݇Q˾½ §þ§M}/ oíÒE”´ßÝÖ„U­É?oôV§cEÁ¡¶’4DenûhY— 4ÓPÞñœ5 ¢ é ì…B¡P(>J`¦ˆ£7`<~^÷¼xQ좦˜Ø,âœÙöO?Ý%âgv±Yúé"½Ê5$K§™}ý1±Y$Ëtšîå‰ÑÍ"iœOiûp”––ªô˜ …B¡X/ðê¨ëèèD(BÕ÷o"í˜q"2ÀU”æ\v¦ËB³Hl.E[¢,œm»ÏÅ·É‹"2™•i6qYt.#™Å„f2’Y´Ì‹tfŠÈâǷƧȴjûËò¶uxé¢SÑÑXƒ¸4˜v™s²%öègÒ7ªÛy/ÇÕ4ÚŒÛ~ÆTíÿHDÍ•NédÏØm=U¹B¡P(k›tÛ(vÖ1Å÷W³ú~ÀX~ð‹ýÖ?¿Á~{"¯¼§_Í*ÏÒž&3ÊŽQ( ÅÚ¢·éÙÄô˜Ÿ68Åez|‘ é†áî=† ?H_аéÖØäü&ÝçƒyìyUfÎ  ¿ágï}u>^Lºß˜nÄÒàNíW†QÈ¢«ŠÊâÊLŠ»ß@ÈxÖrPD¶(»G¡P(Šƒ˜)r_ Øñ8?8/QÔ¤{ˆ£²ˆnæî‰b3èf‘¬ê×E\õ$«?±<óèf©ëONSÔattÌŸ"ž_AAzƒ¦­û)2 …B1p鈈"%væAÔüðRG+ƒM<¥Å ËtaY2‘™=‚YTX¦'¤ÍÜvï ±ÑŽwF#™E,AY$NP¦!l¥ÈdYX¬û¬¨fZ4š™<ΞF3&8³‹ËbQÍä>í+kñúUG!ÊOCP&'=^XfŸ€Ÿ²XiöÝP”× ¿¾X</™&S9 …B1éMû‡…ີMÇüÅ}/0ÛnëÔÕ¬nÄ!u>lµ¹}ÍÜ…EƳŒˆgÊg›-Ê&R( Å@ Yz̈áø¡u:"Qµ¿¨; ë‹{ðôΓkºÊʱɕ×%Ýç•ïzpÈÍhh_{©¬ëÏf$³ç¿îIºß¨]D{°ÊJyiß’…`,­´™ÞuûuÃÓý…xæ*M¦B¡P(ëëO\{EŸBçs©7‡šÐ¢·ÄÌI»]i‰œ4—òèÎqå6ÃÒuÿtëy¡YÁz^ijžôê×lûëi×ÃËòº?q!„í깺õkŽýÍ{†U„ߟŸOéM …B±~B'W(FþŠy(lm�|ZLøÄæQ*´£eöˆe¶ýì~FŸÇ¶¸ý쳬L³í$Ûf«Üh«7Úîv ý9Þþj„QóI“va–1 daºnšºÙü›B1iÑh¢n!L§dOýí³˜ràÓ¶ÓÓl/FÓüQXõõ$,~#Ôφ†y£1óÎßc·£´*¶êµûãæZüºó4ä›=¤Y"yY¯ØÝ:¦Êÿ!šÃ“DšLŠä•Ð]¡P(ë*ÉÒc’oðv}ÛæÞÃÝvìÝ ´ÁÌž»à‹¯ƒe¯ûJ Ÿáw?`—íÍgËHó„Ï\Ú9öe…B¡P(銄¤ýòiÓ,ÛÁŽºœ…¶Åg·,ÆO>+DEgr‘UÚíjå™AQuç./}ÛƒcïoFhíiË¢B:Nx°wV…½7v,ë/®E`ÜÕÀò£Ì«/(®ÿɵsÉYf}aIöñ¨§¸ó-tWî T¤“EGÙ; …B¡P l”¢D%ÝÈnûQœT]]…!åC°UöÞ<…=EiEãŠKçWnK§©ki×ãUî ù1vÁ&Øèë]±Å÷{bãÙ»bäÒi(o-˜ßËúeÊÏÔÑÍ2‹ÎæH§™Áõ&¯ß¬·È¸öššj•S¡P(ën´œS¤ …PõÝ[ˆF(Ó/"KHé±,èebÙgE2“Ü£™E"¶Èfz4²Ù‘Ÿb¿?ý “·|ØŠVfF,ã²9ÅG/ ‹g¾hŠÌ¸ˆgÑHhf”³û%^?ár4|;Õ2tøK:1tã9Øô÷/bÿ®Â¯ï¹[ò2 ?ÎÜÞ¡ ©'=I¹|<ѹqoòôX™|~Ƽ2ÿƒf)û³t{Önë …B¡P TÒm³ØIÇ}ç/îû±£Ó·*@eÅúÛÑWUéÃöÛô½Ànοˆ¬Ëg›ʾQ( Å`B¦Çd°‚Ï›gÅû€h:LxˆËHW~÷ì= ¹¢y«í1zÿ_xngjÊlâ2 Ïåxãœ>Yè.sèÔß`ipwkÍÙ—Í,½(dñEÎ2-åqÅ]o‹gÞÛ4™ …B¡P(*‚™"'pDAQQ‘0G†Ç`xp‚mA´é­XS¸MÅ h)mB8Ï1ÜÓmPƒg¹Í¶w "6€Â«ž¼ SæmÂ@1*«*‘ŸŸ/ε&\‡PC•=hñóÐV^žÒvëe&½úË㣛épDVK»g¹=™-϶þšÐq/”ÀL¡P(ë"é8®¸\+UÌùÔ ¦Å„PDF1óŠPæ\OgÙ­Ô6‹)Å#–`Í:H‹fæÏoÁæ;]‘߬Cý²mDy4z™Ît–ºñËŠd&ç°E³Œq«(@øÐQ?ïþã\LÜ÷elzØâì..— mÄx ýâ]|ÿü6ho¬FYUsbô2Íq­nÛÅùj‰ûò#™"3¦øNÓ£·GØy-È,D(¼H“™­-£FÆ* …b0ÂöKF`]¸¤ } £—íºÓú½L²ÇÎøäË Ñ1Þw£óvM—H“©l…B¡P Dz#¢ˆš¶KKOVbuÚþuº}0!„FUcâ²fô†°ß .¸Èsû궈—õ„ž(ª;¨ã¨{›ñʵVáGdØô›ød äÉÔ”ZB¿RºQÈâÊdG”žÞqÅ‘ùÐçÊ*¾yyyæžÚ:Ê6R( …b` fŠ^áŒÁνm¶Ù kÖÔ£¾¾……¨Õëj !Ð@}Þ!6k*m@GQ{L ôq†o\¹îº¿ÕÇŠ!kÆ L¯ÄVÓ·Àĉ„!ʈõõ â<9/ •bx÷!ŒëŽt¢±hÚÊÑ^ш¿'iýÞç Äå¨×mm4-åõº•kŽrÝu¯ú}á|Œ.ž,îSK™§ª t…B¡P >zãà³á0 VÌCq[S¼¸,š3Åz21Y±fZÜ\gƒÌ¡¦œìûòüóä2lbK•é“é3-Ñ™ðF0dÄÇØí—ŸbÙÂ=ðå»ç ³udbŠL©á²Í£F˜%,3Se•jæ\7všûÂÞhZ0;œy#ü¥ñvŒ1+(éÂæÎ4#«5[‘ØR‰ÊÜÊ\…ifuuæÇ&H%ÚôD¦¢»»G¥ÉT( Å #]!¼Ûr(2:èt,_ tuûÑ—l¿u*ËUªa»-ý˜ùa�}E0”‡ÅË€)M¡Ðgš&SuÀ* …bmâe¿°m#³Zæ‹!ùñ!ãê´ý6æwì9—Þÿ%zC×n?A鈑®Ûèæ8þ!2¨Ô·GpÒÃ-øï±Õ•夸båÿ£ô'Ðq'4KCT-³÷ÃɨTÇþî/¡ï-J™e»( …B1xP3EN¡q8lØ0 :T¬SÄE±Ùš5kÐÐЈâ`1FÇ TBg¤õù«ÑTÒˆæ²üñN:ÝfçÆ¡¹ˆ¦<¢›ÉMµÃ…ðm̘ÑQCµ¤¤cÇr# Ø–ã…aõ!8knnAªi ØD‡ÖЦâ5h£0®²_8®~¸œ§÷ùkŽýuÏztxGOK¬ß.8Ó]žÂæÔÕÖ²™9£•¡¯P(ŠÁˆWzL3B„áx[ø¢é1‰›x,•˜¬ÀءژÊe£…>³!§§Ïg[æ¼Ç8 Ç°':ƒ@ké½—2ªb“â2kTªf[:´F£&¼‰…?þß~r<:[GÄG/‹ŠÍdd3›cPƒ½ âüôˆ™2“"³Õ³¦á­ž…Ý/¸B¤ÊL°1¤P­ÊpÒñÚôEep‰^&×Ý"šE±l9ÌFgx_+T9ä3ͤV¡ ‹-ÆÌ™ïbË-·ÀÆo…"Œ„ýé§ŸaΜ¹¢ƒd̘1Øa‡é(--…BÑ_ÈŠ ÷­¸Œý»©èeQ¶ßÖw?  /³;-ZêO˜) …B1IwÐ_L`6/1jYRa™µdÛgnm7ÞÞl4vûz)²!”ŸÉ§œé¹ý¾÷;ñáü¾•çŠ÷çðЇ]8t‡b×í÷¾ÁŸƒß'¯Å)4ÓmÅéÍ\öñšÅÖý]Ÿ!P½·ø0R*”?G¡¼0RáK/½‚®®.üìgû©w…bD ̯—�gy²ýhR`f`ЏÆDE\MMMQÁYK‹•Æ‘®‚­A´¡ …õ"ÂYsy“»ˆK|’–‹.T[¹?P€içÿ‘Ræ0N¹^]]-¦ 6˜*: ÕŒçÉyaW!ªCV:ÍÕ=h)¨7ÓiS ´#6Þ&Íó”}±önÑÍRÕã]¿W5\¢›•¶ EÅØ Õ¸+ …b$ݨ ì ¥X hþwư–]”²Ú 1vKE$^HmðhØSYVdìWbØ%5†cÍW´ξ† ÓîôÓÌãÄD1™•6ÓgK—©Ù…fÀø žÁøiÏb…fgF4sD/“ËQ%»n,¢—iÆGI…fšÅ»W=.¸2Þaw‹)¬c3cn˾\h¦yG3‹2ÖÉF‹•‹°Ò°ÙÁl GóxôÑÇqùåWetÌñǃ#<ëçœsÞxã-×m¦½^…ºº:l³ÍÖÂI5uêô–ÖÖVvØhoïï1?|?&MšEr8衇Á믿‰åËWˆ?Ó±cÇbŸ}öÆoûøý¹½|ÿýÂAùÉ'ŸbõêÕèèèߊ»vÛmì¿ÿ¾¨¬¬D_óÃ?â/ù/^Wþàƒ÷bÚ´ Ð×üâ¿Æ²eË1tè¼ð³I÷å;íŒ?N]rÁçãç?ÿYÒc®¿þ&Üÿƒbù曯ÇvÛm Eÿ’®ý";hç,ð¡/Ùhƒ|”—©Î=ImµLÎÇsBè+æ/â3 ‹¿ábßüë_ÿÆ“O>l9ì°CqòÉ' ·Üu×=¸å–ÛÅòË/ÿµµµmLœpÂÉøøãO1nÜX<ñı®±®_ŸB¡H„íÛ6òCÛ¤—y Ëì<¼s-vþv9ò"™GëØqw” áºmM[W¼ÜŽÁÂ¥/´c¿M Q[–h–ÄBmŒ†|wˆ~Å‚è‰ ’E/óšÙû¸lût.\E´a×–o&×öÌ`j˶Ûn'!úùÕ¯~i¼Ïž źÇ@ú>Þ~û¸óÎ{ÄògŸ}nüíÅRùåW8ê¨ãÄ2Ë÷Þ{/¬ë¨¿?źˆ˜)²ÆîødǬAKãÐgt|RÌÅNi,ÚE\ì ¢1ɨfŒÆÈa…=V:ÍÖzšºÑ߀ƒz4—6 «°+þÃÝl\òÊöZ 3D©Ò5\Ù!2bÄp1{:Mžki¸ Ã;Æ"ØD§Þަ’Õh+k@kE—:º™w¹æˆÎ¦gY³<Ý̬_ÇÈ<3=¦Ûˆû}Jçž©Ñ$ …B¡ŒHg Diý2S¼•JL&—¹_©á`Ø(…º)(“‚0»x @\:ʸ¹mßÊ ªè›B³¶nS¬mËíQ̬e[ªLó³¬í†!1aƒ§1AÍ~ŽÏgžƒ`OY\ô2Ÿ=ÏwTLgF/ãÁ̧›‘ÍŒ¢•³6Àç÷ˆ­{ a;ìDk2&Ùïê& óZv+³´o"ý¦;ý¾háÕÆúX‘*L¦üÎ5265üGÌž=›o¾™Ñy{Ö|NMbâ¹<òÈqè¡À‰'çšb#]ZZZ…¸ŒðfÅŠN`vÕU׊ë%}ôn¯®7PàuôÑÇ ¡“ŠÀ8=ÿü‹†Cñf”••¡·Pu饗ãÅ_NÞ𽌖wÞy7N;í””ªÞ@1â‰'ž"¾3„¿9¹qPUˆËÈ;lÇR\÷Â…‹0~ü8Ï}¿ùæÛ¨¸Œ|ôÑÇ)ï|„ïˆ[l±9)>Z±ºoŒm·UßFHŒì°­¿Of« ŒgÛí„W(ŠÈ@x?P >ض±“}E`Y¥°Lî×P؃Gv›ŠCÞü™2ú?yn»ñ´v¥ýZº"¸éÍ\p@¹ëöŠ©'sžƒ›ð+†‹4×§”BTæ,“ƒÑÌŠÂóѦ€ …bÇî+Zºt2!Wþ¯æGS(Ö5”ÀL‘vc7øBÐÑѶ@Þn|Óʦ¢6\‹âÂ"ápgÝv±™ýGœÛ‡&&"E\ "ÊYY¸cºÇ"ØD»Þ†úÂ5h*i@kY3Byñμdé4k{†‰Îd‘ºÜ:í÷ÅžN“×ÌHltêó\[Z Q®Aû²vt/ïÂâqߢÃ8G³[}€gºËd‚3{¹.⊸ïŸIýþ®2Œ¬c<ŸjX …B1¨ÉÔŽ±ïÏ6=lLzGJÚšcÚ-{Ô2±ÌZºmÙª 4l4ªT>Iqdòã¢eZ¢Ø ¶y±až©2×ÍŒB³Î ²tV3!.“B3GT³|£m/+*K1aê§ø~v=z–”Ç"˜Y§Á4›PX>3Z˜./IÓ¢Ó÷/î‰!þ€1Û|ÎNãÒX¯Ï‹]#à-(C’(fþˆ¸fÚt_l»íãòõFcfaøý¦Pl §É<øàƒ0eÊä”ûõ—Xe ó·¿ý%. –´Á¿ýö;Ìœùž¬ÂHK…~ú)È–1cF㤓ŽÇ /¼„m·Ý;î¸ɹðÂK¢Ã_þòçØwߟŠçÀcÏ>û?ÑÙxå•×àÿøz; N=õL|þùb½¼¼ »ï¾›øâ»ÝªU« Gá'øî»YhmmçÅAOøkô¯¼òZT\F¡Öyç#¾£½yŸÎ¦â¤ÀŒ|üñ'If~øQÜ:ÅcÉ~) ûñÇÙbyë­·ÌZ´«èœ©¾Ãáº{ Lgß Àjª|˜<A¹ L”ºZê2–’míÆoYû€²i5tÓM7qÝvíµ×‹ßÆÚÚ£=uR6yò$( …bð“n¤U·e¾/puMW#º"=îÇÚþM%.“ÿ¼¸iöû¬5­H—Žº¡˜¸åV®Ûš:#xäã. 6ø  'îQêŬfÔ¶¨ÿn8ª V"-ÁXœÐ, QY´ÌÍLìb–h†m¬‡ž7L¼ÛË>©LmÞØCÊžQ(ú‡c=ZôõsÀÛYg…B±î¡<E OÒII>GüÚø^j~ /¯~ …Z!ÆûÇbRáDlP:CK† ç´4¥ÐŒ¢3»1hqñ…£±±1𦲰£µ¨C¨-„@c�Myh,®GSi:JÚãÏÍf_2BÇ„"³O ÌÒ5@ûÉÏ `Žaö9±¬»»[œ'GòÏ™3clŠ9|‚ ¿Gž„­ûØë¶­Ú?6a»àLOc÷úKÚjQ3¦&Nt§"•) …b]Å͆1£—… Ç–ŽÂ c)Ý"•E¬e¢Üšqÿ•EÀðîÄhd𛨠±öÛ)*sî'‘ÿTõWÇÒmö`…Í2N2'Ó€—íz¡ßœ¬òïßþ%ê—O"-ÍrÄù,᛽U×|z4z™)ðÒÌt™–ÈŒëcúä¾1lÚ((銿ç-®0α1?‰°Ì¾®%®Gý•æ‰êÀÍ )Šüˆ€¾¹'Fehl»íÖØe—¡HÍO~²§x?pcþü8å”Ó±rå*<üð°ß~ûˆ4÷Ùò§?ýQLŠÔðçÃ?ËtÐÿõ¯çE·1"#>¿ÿþ‡BlvþùîUªL¦/‘â²wÞ^øwTTTÄís ÇáÓO?éU)2»öÚDÊÌ¡C‡"רGáwÜÑÑkëÏw$Š ùͨ˜1©LA=œ¢?Fÿ›;wž§È•÷1b¥b¤4Eß’i­>²¦ÁÞ¨æžm¶òC¹�á=ad·^íAß ‰g;f”Ùïó%v÷wêÌÍ6ÛTLn0;d9°ó€ö‡B¡P(nHûeqÇÊ„m™D-3b;õøÂ¸sïI8çño6Ûï⹉B­Žžþ@’+:ºÆ4£Ô}{É^¨ =ˆŒc¹J›)ŠtäõÌ^4L|ÖFÐeÏ(ýÃèÑ£pË-7@¡P¬»ø PdttR`Æå;æšA:Œ©[ïÁ9x¾íe\³ò&\±èZ<¼ð1|°ì#Ô7׋Hee1òY{{»X–é$40‡ ‚ 7œ†]wÝ»ï¾+6ÙdcÑ0UVTbTÁhlÚ;4ìŠîiË7Á¦ð £çÁ©¤³ë‡ÎÿøtÙÀcÇs½¸¸Xœ×V[m‰½öšºò:T­ |¢3µ”}‚ÕǬ;&òˆçþVÇo´îäõØË«{FŠ´'É¢º) …B±®CQí‚e ¬¨`fô®¸åˆG9Õ á›o¥€‹ È`9;uÛ±}ÒÇ5æ0Ed%EF#n|Þ°*sj›êÊí…¦Ð,b׸t">|ú8! ‹ø¬ÉX‹eŸ9·„ca1——¬EçÎÛÒV_‹Y/ìa~…b®'Œ>V1d·ˆ5…‘þºá(ŽŠò„A¤ÅO†”¯7ˆ(.òY¦¢?# )úމ'à/9W,ó™>÷ÜóPôöônÑޤÞŒ8×þ÷¿Äœi(/½ôâq™d›m¶ÆÙgŸ)–ù~úÚko /b„ƒÖ]Ê{ÌÔ R椭­ ³f}/–)”ŠÒ¼øä“Ï¢ËJ`6°‘ßÅU«ûNý•g|e¶Þ\¥Çôb³ óûT|·ºÞ¬Üþ»£P( Å`F¶i‹Úbï17ŠÍ÷áBl¼žô³Äóéè ~S‡tö‹_yn{â³n VOrî¥ãq”¸ TpY·�t=ΫGûÖºçˆEeß( …B1¸QÌÖszÛÉF~ À¼ž…f?Ÿ¨4~Ÿ†p“˜>ëþù-y™7 &`JñDŒ)‚Âèèo™NS¦Ô”PÄÅô5œxÎ---"jGÈ755£Âøo\ç„Zƒhõµ¢¹´Ù˜êQÙSáS† 1•^¢3¯{cÙk/ã:þ ³»èÛ¹‰ï:Ñûc/‹4È÷Ó^®Ã™L³í¯Ûê¯G3:zÇšÜföû¡¢š) …b0’®ÐH¤È GàcÊ3™ú2!=¦mÙÙL”Œ¶t¥áÑm Ÿà‘L÷(wÌa›k¶Ï–…L‰ÉT‘ösÑÒôغUaòIxþö+…ˆŒ]½Ì§™sizH;A¬G,Ç!bsÝÉ 1§î·/ÎÀF{¿Ž‚’)(ÊûÒ™'O4Þ1©ÁÍL‹/i?#Q'3#¬™ç¿Oų¤ƒr]QDÇ4Žo¼ñ¦ˆFÔÜÜ"RŽ1Ûo¿~÷»SŠ^˜þî‰'ž‘Š˜’ž R‡éÓ·Ãþð{1hBòÍ7ßâðÃŽ;þ«¯¾Æ6ÛÄDEo¾ùŠqåXl¿ýtTT”‹¨UL‘hçË/¿ÂQG'–o»í&±éÞ{0Î÷-¬X±R\ósÏ=Ýÿ„NÑžÆkÜŸÿŠ2¦ ÜgŸÄ}§ çî»oOz>ï½÷¾HçHŽ:êpwÜ1qÛðôÓÏŠè^ ,@WW·N;3fì.RM:Sî¸ãnâóíLŸ‹€wå•—‰”‘NUùÑGÏyÕªÕâÝŠÏ–÷ìw¿û † †l)--»&'¼÷„ïE555è ‹/s4âû`2µŒ©NɤI]÷Éæoèä“OÃ|”P—ý90ºÚµ×^•°Ï»ï¾‡gžyNü-ñ³JJŠ1yòdì±ÇnøÅ/ðŒÐ— ž+#»µµµãûïÀÆo”°ÓaJñŸûÔ©/á‡~ÄG},þÖÝà1däÈâoA101Óc†ÅòŠÕ}×îM—‡Êrõ®ïEU•#‡çaÙŠ0ú‚«ø÷›µoÖ5¿ ÛÌ_|Yü>Òá PFžÜ|óÍDdFF^ì+ø[Çöšm}ŒwÜq êêÒ%¤â®»îÁ-·˜6çŸ~ R=ðÀC"Í2m¢¢BŒ5JDjý¿ÿû…ˆ”Ò²±/=ôpÑ~°üÕW_ˆkÛp`ðÞ{ï/î×–[n!îW_Àì>øˆq`ùòÆ9•ˆAÇl›S¥/ï,mÀí¶Û7ß|ƒÒ3:.ÓL3RnYYiÚçA˜Êý‘Gþ+DÞ´Áx<¿×‡~6ÚhCÜpÃ͸ï¾Ľÿý·‘-|.`ñꫯcÙ²e"»È°aCEDß_ÿúÿ„øÞ 7»×›o¾Õ°ï˯½ö¢ñ»W5àßk‡tý/Qû¥cM|Ä2ÛÌõØø\‰ÛnÙk®½·©è)*ÁÄ-¶tÝöͲ 殼â§9«B˜µ<„F&vûÖŽžŽ¶ÊPœßd…LFº· L÷8{YÏ13Ó¥öo4Öþ 7méË÷x'´î¹ç>ñþÎ6dèÐ!¢â¹²Ýr#S?‹„÷âñÇŸmëŠ+ÄseÍ€´ûÜÞ=/¹ä2<õÔ3b™uŽ1<éùðÜï¿ÿn×óþÇ?.ƒ×ø]zñÅgì>ÚRÿýïc†}Êç¶ÝÝ=–â}HÕ¦Ú!Ï>û?aëÍ;]¨¬¬~Œý÷ßOOq‹HL¶Ûn'ñÞ~Ì1G×r„¸O¬kѢņ|öÙ'Åûy60CØwÜ-ü F;^‰ñãǶá/°çž{xFì ±?›ýë"Ã–Ü ©ÈÖÿ•«z¾þúqÿiÃѤÿfäÈ‘ÂC{º²²¹"›¿?…b ¡f WÒIIGÓJ­ìY…vtÄ žìvŸíÐ ÂXZ"¦·:ßAIc &øÇaRáL-Œšâñ’Í— ¾=¦l„Y^]]-&1Œ~Æ’çE]Å4Œ­æ D£9|x¢ñ‘©pÊíú¥¨Ì¾Nc€ç_På7f÷!¾Ü¶¢EÇìÄeÖL¯ž¸“s”Çz’‹Û«1¤fˆpàÉkh†: éË/¿Ês;E4é8aJ$ް÷ºi¤ýêW¿ŒFºPÄÈÆØ,Ð1øàƒ‹—: RùRGGõ¯ý+áhUÄP'Šõ¶á2kÅ⹦xÉMDf_ö™-0:eòùÐ@L…i©ÅdNQYB™edé1™†E¨Ð—%NêÇ/öÃû/œ„@O©ññº©Ý²úšš1Sh&„[V¤4Ms|¾3Q¬`aÑt™=Řýötl²-J«¯×(,6œ³í±k±ÒmF”q“£</Œ¨bŸ‹L“éÓâb0åµYBÁ¾éà(ÐÑÈ€K–,+ç@ Nt€ÐrõÕW`‹-6w­ã–[n3÷'D<Z¼x‰˜Ø9yñÅÿަÁ�ß ñ˜37¡“„i.;ìÈ„{— FËÚu×E4,:š˜qÔ¨‘žû³c“ðïë€~·ŽÆK.¹ñ¢Ìի׈‰d:Oo¼ñÚ^GÆb§(ÓDÚŸ3kìpåDÇéyç#¢ZeÃäÉ“Ä;;o™Â’WÙqÍ´"2}&p|‡ë $Ä{Æ{Ÿªsb­diNsñ7”.¼ßÿüçÅxùåWãÊù]¥0ŒÓC=b¼ï\*œˆ™Â†›o¾M,3"™›ÀL¦Ç¤c{„ñÂyOÙ_|%ÞãφïÒ .ŠÖ¯X;¤+”Ž¥È커Ó¦(wa*6™–ßg³5 f‡Oº>K,E1þóùѶBÂßÍ Љjgžyšè`É5lÏÏ8ãñyÇ3l£s*.sÂë=æ˜Dû+áûm¶;"Q œ­ .[ûâç?ÿ™èØâ}xýõ7ź´ƒd']²ýzïÅI'*ÚI ï;z9qÄa"%¶¹jßùóKö™gž+2mHÑóp@;^â±ûï0®œÇ¿ùæÛxçwqÅ—"PÐuöÙ©¯íH›ž¢³3v7:Ôÿ–µ˜]¡è äûIcO3r%,[­ÍK*ºðÚ–ã±× “î5ÆsÛ;³ìðÜf¤ãQ¬}‡ÄHiˆÃdY\°„ ŽãÐÅàj±¶.úozÓ–‘¾~·óÎ;3v伸çÀ~N´-~ÿûßáôÓOñE‘tý,lƒ¯¸âê„gÎö›Óc=a´­G÷çOqÛé‹‘³>øPôY8¡`MÂw]t‹z.÷£ØÏi÷½ýö;øÛßþ)²nÙ¡Åö”hñ~¸±jÕ*cÛÙq¶a?õÛoÏÓÖ[o…K/½(å�¼sÏý‹°r}(GyŒè“Hû¾ú(´òŠ¿>A}Á¥—^.ÞAìФ­ÅÁ÷Þ{¿as_˜–P4¹øûS(Êc¤ÈgzÌÙócѺÜìG«<A4eÐN|øß Û«ÖWƒ)“0©h&•NDIQ‰ˆnFGP¥ØŒ“tžq;CRÅNN:ÉÝ:h²qº¹E-“åö2}lš‹\ßtÛ`øŠl;Ä•'¾lɾj$­ÇY‹nVÞ>U£«’Fusc 9+9ZŸ/½ô vØa:.¼ðïBt¨œ0Ï{ì-–S½p¥;ÛèäH ÿ>?úè1Ñ1zÁçC¡P¬ßDt3‚Y^›% “"3S§•È̘攆Ñ1±+&2#º£-wŠÉÜ„gnB³¸HfÎs0Ef=åøxæ‘øúƒ-½–“iüë–HMj¸„“ÏvišILú í§¢ÃŒ’úÍ‹{`“½_GJŠƒ†ç©�î‘Ë´ÄÈe±3Œ¼P,j™L“)ÏE3m“ò‚£ó5l<ËÄÁëJ´Õ«WãøãO‚BçÔ¾ûþTŒb¤Ãƒí£’ёɶ'Ÿ|4!#Üu×½b™#`=ôB¨Oç%#Ü}÷½ÂAxÁÿ8ÆŽ#æ?|¿8æàƒMá£HÝu×mÑz“E¼èh÷“dÑ?®»î1bö§?ý‰¥È‘¨t ¥í™nñÅ_#JÝ 3’ŽCBG]ˆF¡û_ÿúwq¯ù>³Ï>{c—]vçAgÕK/½,:é\åÈÚn¸6zì}÷Ý%¾ËW^y%ŽÊ•â çHVvj^ýMb¹®®Vˆ¿øœù7ÂÎH:hy®?±Ãqƌݑ)|ûãŸC[ü¦›n5—ÂÅ_Š7ÞxKìCÑÔñǃ޲ÓN; 'ßüù ŒÏ¹E؇Ù8Ùzó7ôç?ŸctÜwˆe¯çàüþ±Ó—„¢ŠíøwÇÏçèa~§8"–÷Ýw·ˆ “ tŒK‘ÃŒŠâ„ä„éü-Üj«-D§mc ,ø=µŸS Ì:ÒÝÚÖwíÜ“•»0›n”—ßìA_ÐÒjƒëR,ÛAFc{DøÛÇÎB —ù;ÅŽAŠo) ºêªkÅoL œ (¨:å”ÓÅï ÛÈ[o½Iøû¶)lßÙЦ`„)ú+)@æÀJvòsÌñÆòÃ"‚[&ôƾà¾×\s}4òW2á˜ÐÓnØk¯È5´ÉÎ;ï¯â?üÆsßP+y}ül^£c°ífÄ];¹°‘%Ì”qþùˆh¬óû'ÏãÖ[ïömiF1q‹dÂ(R\ƨeøëèµp`'rüýï&´¿™B»ý¸ãN÷M>÷m·ÝFÊÙÉO[‚qÚdüÜ~ûÍ9í  ïŠ‹lÓšCí©…eb!=a™ý¨‡¦—a—oóQôhk“¼E½ïÏü³÷æpÜîîâÒ`áFFƒüÍçdw>Éu¤(³Öe¤þ¤ÇůçGê9v0aÐÛ`§7mé÷x …Èl˜Ùˆö £lñÿÇb0¶™À³ì´ÓNö¬'? í:Ú„çý›ßü Ó¦mðy<Åë;餢Çò>±ÿ’í¹·À,6`÷˜ï´Î“~I‘EkÎ{qî¹ç‹gÅÀ|hSy®ôu0Â}¼èÂmŒêI{޶ì.»ìd<›=PSS-Þ÷é‡c»ýÙgŸ £À:£ÊJžþE! £íËhçÒ–á}ÍÚºü>Ò`Ä\Š¢¤@»ˆ×M¿ÆÉ'Ÿn\ãFÈ”©ÿ+WõPØG›Ynã÷”ö #‹ñx>öEŸvÚY¸öÚ+{%2ËÕߟB1P£õ¯Ñ±éD/#làøbðCçèˆ ˜ìѲb•Ø–]Ê¥hª>ÒˆúîF|Øý ò›ó1*&ŽÇ¤â‰W2V4ÀRpfnfçIg§ ÆÃIo;“¥Çä4^^á�Vû–'Šîl×ëV.û–½£›Ù*ð¨GF&IVÿp}œ¸_¹HÙrÈÁ £9i¼ÑÈ{ýõ7„#‰ikh¤Ñ¡áÚU±þÀŽŠ¦1Í Öè�ljj2 ÌE§;+™Þá€ö‡B¡Xí·œ‡B!2«jªüšLø¹´xñ˜Sp– ð2v`d­åEF#•oŠÌªÂÞÑËÜdö¶=aY¶ÿ´4DKûH,YºµÙVŸ»t±¹Ü°j*Ýå✄NËŠP&#˜‰ VD3ëü¥ð z,€X”qYl¹µ¾ F¢vÜ2¸{‡­‹ä¬Àpîvû=Dfp™ÿ”„â=Æ<áH~ìDl‘ÌèHÙ,{Ìià öÔ åOñ¡hçÈ#۾뮻ˆF‡ÑÄoNçÛþó¨˜ÓYIg‹=´;XŒXôÇ?!‚¯½öº=Ê6TÚ`œÓ1Çy_¦­ÊŽîcÚBAœtz2J+k™ÂûÂÎ`~Syy Ì8ÊTF» 3ÐCüŽò冮K;Œ{á…—Û„6-Nòz؉GèÌ”Ž1.»Ù»´ÙJ(*ºúêËãF£Î˜±»8·ãŽ;Q|O.»ìrÃ1¶}ƃNGð¾õÖ;¦¢³•“„é.ºèYÕë„#™e$Z¦Þ ˆN8:mÝRdxÑ›¿!»X0çÀç(ÅeŒ¾Ã(<v‡-Ò{ì±»èĦóðšk®QU2¿Ut¸S À ìŽj¦'‘#Ée;3xü.r †³ƒ›e„×´ÝvÛB1°‘r]}óî[[íúÜv4ttèøà³ ~œBS‹ñ›hØ]Çø°ùÆùØ|?rÕ¯Á[óå7A|ùm«ë#‡t£cƇiSó±ýÖ~”ç®­¯«õa˜qŸVÕ羓´«‡7$¼NuÀ~ñÅ—BäE˜Z˜Qí¿]lsùû~ÐA‡ˆß5FêÈ•ÀlÞ¼ùBÔËŽ"vÔ1r™=-x_A0#„Ûí2¦·b›³õÖ[Šè<§ÿûJ\uÕåÈ„ÞØL_Èöší;=)Ôr¸±=ás“õ¥JW ´Ó(6üÏŒ‹*ÂÏãóÿ׿þ-ÖáÄÙ)Ÿ YB;—Ÿwë­7Æ}/™Jj„ñ¢–ï <§ÀŒÇÞÿCb™ß+Šºì÷“×Bû…6˜ ü»`§$íuž#;9m6£^PPHA…mŒêϹb ¿(Î>%Ù¦µ†:Ü÷ˆäõºeÖ]À»OÁѯ~ïy|ñ†›xnûfÙàM)ùv©÷`*_ù@ËãˆújˆžŽ¨L–9£™Yûx Íâ×ýz(Íw èû�ÁÞ´eýùOÝ”©,o»íæ8? …YG{ì‰Âfàà$ŠÇ(¸öºæd~9P´Cq•=Å'?‚.ЦçÎ'ÚQ¶ÛÒöc;7}ú¶¢Ýä»*¿3ö÷oö2ja:lŠÍ©Ì)0£8MÂúíPÐ#£Sˆo·;)„£ 2ŠÌ8àÐ)0£€‰â2¾g3€33S¡3z|÷Ý,ñüéKqƒâ2úÎ:ëô^ÿ-ðœAíßÿ¾Døìð3(>£‹çD_!ŸÃ@ ÿW®ê¡,Åe|?¹âŠË„þ@²ÿþû ÛñÄO6;mëÇ{$ëTà¹úûS(*Æž"#ì³==t‡º±8¸ÒêÔ³&³ëÒXÖŒþVÍVnMºcò("„…¡%x£c&W,¹/~ï-«›W  ;r8ç¨r.ó%ÛK—¬aÑ=\¦dû;×åg/ ,©@c÷!½ëMV‰–k±)‹zòB]>Á0z´hCÙƒ¥? :Ýh¼Ù§ƒú­ üÔSÎÓ‰ÆP¥t@*ìð”á¨Ï=÷,ÑI΄ÝvÛU¤†à(ÂQ$ …bÝ'Uº)sôwØtª1Z–®Ù_˜e²ÜmîœÚó ¯d™1•«Œå\ekBŠ2c¹»»_}ûS<÷Ò¹¸êÆçqÓÿÅCÿ½3ßÿ“1Žwß;‹–l!¦Ž@)BšŽ°fž~„黵Ø<lÌÅs±ö [§N-Y›t1éˆ/_6k²Ù“K]Âd+/ šÒÌyØú°䇯—s* ˜Çê²>«<"Ÿ‰|FJ´åÖ³øÎ`ލdû“lr†Ög;ö ψpìÎŽ3 £ÈN?ÙykgÙ²ebÎÈRvq™dÒ¤‰bäâ믿”š` ÂΉ«¯ŽEâØ{ïŸxîËhو˅t(‘E‹G˜N^xáE1ç¨×3vÛFGå#<€k®¹"¡óWBÇ£Äë3RÁŽfv<ò.»ìb×T'N0:HO˲£5è˜ã÷Ñ ÅTtÈåB\FØ9{÷ÝwD½tRsôü~ó›ƒpùåW Zªˆt¹øJ—ûî{@Ì9Õ).“ðû(ÓtfÒ™œ);ì°½˜ó™³ÙŽŒ^FdºK:@yND¦Ï´óÉ'f﵊<2ððê  ûfÌè9NùÝ!\yS^{«K–‡ÑÞ¡£¹9‚æ„ðß§»qÓ]b½·P¸vÃxô™nÌžB³±Þf|Öâ¥a¼òF®¼±³fçÖV˜ÜG‘Þzf½NYºiT"º¾öÚ‹¸ôÒ‹Ez·ìh¡ˆôæ·Ø;iN8ád!Dª¨(7:;¯wÚðš½MôO°í!l (òÊ„ÞÚRÏïEônо‘ß¹¾JIè·qKUÊó§JØ!ç$×í;Ûm·ï%Û\i‹¸}‘R,Áï¶›X,iƒe }]ü>“£>ÂUN»ƒÑú¥@ž³u-Rbð"¿‹=HŒW—¶¸Lö€$VôÚT+j¼#\—ïZÞÚ¥£¡}ðÿ½¬n‹ˆkq£¸j²µdñ]´•Eq[w)“ƒS—3 á`¶g¼È¶-ëÏ÷xÉÙgŸá:HoÈ!¢#ü{}òɧ=ëHåg‘×E(¾²‹Ë$UUUø÷¿ÿ%ü ü<ûÀ5"aLÎÁmvøNËc(^ÛgŸŸŠ2û{°„"{¨µN1´ô“1b™Û ¾_sÍ•xþù§ã"ÁfÏbf%Â�NqaßégœXÎ{âÅСCDZÄ\õ·2 —S\F80áŸÿ¼ Ú?F‘ÝúŒŒ>Ëñ´'íâ2 +œqÆib™ƒ½ìætÉÅߟB1P3EVHã`nç"õP aSLpf/� ¤Zô6|øO´<‹Ë–_kÞˆÇ>…ÏV|ŽæÖ–¨ÈŒ©rœ ^ s:B²tu™2t~Ïœ¸óDa‰‚³ˆžàÌ,·‹øÒœ•¶Ô¢®¶Ö5zY2êv”p¤„ìÄR‚!Yºtit™#zìð…aÒ¤Ib9S®B¡xôÆ)ÅQjbÔÿʇ¸Ì)$Cj‘™Û¼Ùèœm´O”�_óÙÆKê¢<àÑàÌÖh7· ÅÓÏŸko»O¿t>ÿî'èè)FH S$n úÂÊu§°9§ØÌ–%èဨ-ªÝ‚SåǴvQ¡™ùßÒï'{ˆËlŸQaÀ&$CLPfªÞË9Q`f7–¬“Ô#š£ ÝâY†ÎŽBcZƒdÓ[o½p ½æÿü~³3š;ÈŽ.ŽÞãèK7èlËv^ÀçÛØØhtÂΣúä(ÃM7ÝÄè¤ÝÅó8¯N×tùÅ/~µ…eš(; Ñô‚º¹‰«8‚R ‚ܰwfº=¿TðÞ¼ñÆ›ÑspslKø=’çȾÙ@Џœ°³<×ÐaÌ(ÅÉÍ”ò^1ýGŸrÊÆ5ï‡Ûn»#š2ÕÞþ ¥ÓQˆH8 &Yª {¤»lžGiKdô1‰t¬óÞÙ—òŽT–i? ;«e4@•sp ÍŸ`¨f“smÖ!<ôxºº½m¶e+¸åÞN´¶eo×µµë¸õžN¬Xém t­=Ú%Î)WŒÕ7QäBÖ³]×:`ù>ÎÎH·ÎS‰ìØÉö·Ø#p1…"£8ð³Ù9ØŸ‘–¤HÝ »È‹‘$2¥7öí# Ô;±—O˜0>§éJíPüå9“ö;õ£FÐïê$Wí;ÓZÊÏrƒ©\ 3Ú}δÁÞ~û±Ì{”ì>1‚>¿‡ÙòòËfG6ÿFÄ vÓ!"¸ о"Y»%·±/)Z9¶ÎC0=Ö).sî`Nœ _Èm{Nô¬«¨Öý]iaÃà^&YÜèžb» dˆ£$¡™—ðÌMhGzø}|šùû™Î÷d0‘m[Ößïñ„Â"7á‘„ƒ’äù¾ùæ[žÏ#™Ÿ…×ÅÈø$UÛÈT„|Ï'3g¾'‚‰HX.ß©í‘ÈìëöÔÕŒª&#yÖ%S³;£—)zã~R,æ„‚m7qÜ믿)®“Ï÷ ƒ’·ÉÒdÚLú1Ü`¦™Â10ͪ´E~ö33«}Œ ·>ÂÁ½òyPšl ÝÏ~¶ŸH3J8[rõ÷§P TŠÌõ”lÒcÚ—e ˜;çÁÕ¶·ÛŽq嚣\wÝ_‡Ížu©G7:LW†W‹éÃîQÔ\„ñþ±"æ¥S1®vl4…¦™ˆ¦dÌde4iT,ÌOŒ wþŽözµøb-i=H’NSîªÙö¯ê&Ò‡–ô˜éÀ‘ŒbÆNFvê8SĤË{ï½/ÔçÌ‹¾fM½p@±3vóÍ7Ãoû›'ä̙œ„)O8ḤõßxãÍ"µ¹å–zÝÙé„£%9šñ™gž†¯¡¸˜¡ë§Š«t\¦s_ø¦sì¿ÿ}óæÍ3 ì.átÜ}÷]qè¡Hê&™ÞÇ{ï½ß¸7·Ä•Ý}÷}b"Üÿá‡ïG&ð;.¡#¹¶¶6ºÎ†Ù³g‹e9z$ð»ÇNN:îØAǦF`Ôˆßýî7®/"ýëߣ//—]v‰ùãÆé§Ÿ%^°øwyÛm7Å¥4Ún»ÄïÎ1ÇiLG‰ô<ðÕÃgÇÑ/ŒVCç#ŸAoaÇ-…œ¯¾úºåÃc¦c˜a¾¸8SEØá¨qŽ.âù3e#ŽpdGÓIû÷¿ÿ5!e)… Ìëç "¿ç #Ì‘àü¼dàLàý∎êæË^II±Ñ);R¤ a* ·h?„CŽ:ÊüÛ¿óÎ[Å 3ŸéÓO?‹  ««;£¿Eÿ …Åožoy›)tJ– S¤Î´ÚFŸ×>Ö\6¡Ñ¹±ÐÆÈf>³†íªŒ 1 &¢Þx÷÷xãƒC ÑŽS8š¾RÓd*K]¤¶Ô4Ÿ)ˆ‘ÇŒe]ÕøXf,û8Aºö|ˆe1ˆ¦Î„¬;¦vÓlê7ÝZÖmë¼wk2#•y¢Å>ŒQâ‚þÄt˜òÙËËfJÌØéÄToòÈü:;Œ;Q”ûŒ=Ú:lë)dYµj•p¢Q8&£wÊÿvØÉÄ´ üÝþÿo;í´£HÁ`O8Øu×ÔQǘ¶ˆƒ ’Ùüv» xèìã=~å•WŨRûçñw_ŠÓ‰îÁ¶”©ºÌŸ«Äœm¢Äíù¥‚£g™6žðzíNU7ØÎñ}Î˹™Œœ-ÒŒ555‹uÚLÁ@N;íLÆ»=îžó¾QÌÄ`¦™ÈþÆÑ!̉çÍ:iSÐçßA[[;î¸ãna‹qt2{„dó7”´%ì¨Nöì¶…¥e;(,àgÚ#’ñ·YF#“ÑË$\¿ýö»„=Å”hÒÉ.÷w;F±öH§ãM×sÿÞÎæxLŽDSŒ1šX:úï–VûyHv ú£Ow‹:R6Î…ŸsÆ ¥(/ëýý;ºoÆíF"²^ïsì館v² \¸p¡xãôÃ?DÓh«÷ú#þüçó£Úë®»*gïé"#GzA‘¼$›¶ÀN¦ö¿;|ÿf»ÀãdªC ÅÈòœú2zÓ·'ds»¤««+é€ÙÞ´ï555H#[þÝÑ‘BÈúúú¨ ¶Í6[%­ƒ~¢M7Ý}ô ²Av�ÓÇ“J¨f:ð8•þZ100a1lÍ"íˆebÍc'ç_ïÂg“‡b빉ƒ‹ ªª]«ië^w:òÛºÝ/S¥íàÖɤGýR¶…Ä}âÊ\öÑt$vþ7+zݺ¦™È¶-ëÏ÷x }שìGúÝiðܘŠÒÍ/žÌÏÂë’moª¶‘°b¿ÛqÚ/ÒaÛLÛýLï¿ÿa\ÿ›TÅwF'c? ¥øNöù°ŸFŠÂ™îÒ £Ì>õÔ3böÓПÏÁ‹¼~ Ë“=S™y@fúJöìØ)Y´h‘ðc9Éeñòò2õ.Œ,£wQd&…ôëva]ª¾Z~ø½xã·DŸi¶äêïO¡(™"+(¦â‹ùóâ B-QÔ$ËIœhJ”Ë Ñâö‡K=nõw¡ßfãcz¡íìÝ3»Wí&û½íTŠª·ÈŒŽ±°á©ìѺQ©Ÿ²?Õyþ‰×eœ9­kû k©êw4R–Q?®À ƒ,ØÁ쌴3|øðè2Erf:Ð G§#ó´Û¡AË4<œ˜‹›¡òí#Ù)Ë—õøãõ¼Ÿö”Œ$ªÓ+Sh´Ÿyæ¹ )hÓæDÑÑ•Wþ;åhÝ¿ÿý„ѫò>ðn½õ&a°;Éö>ööûË<òL@ø»Åsdj ÂPÁ¹€Ñh®½ö†¸È9¼n¾hp¢@Š)]9ÒÁÎ9çœ):÷èø¾üò+…PÒ)@â=§¸Šüþ÷¿‹—9áý½è¢ÅýNñÅŠCgóxvŠ'{9JGüœ}öŸÅX;| áDÑÙŒ»ãÿø[Jg'CB_uÕµI÷á½áçÉR ÓHqâõò»ä•~*ø7r饗‹ºìðe×ÉÔ»A2DòŽ;î².Šß{rùý§�á¶Ûn¿Šü[ ÐÙ`O‹é) ³‰ÌDd¶y*á™FE±Î¥©ixòÏXÑ0IˆÊÄf»~<:7Åeq"3hV9ešñ‘f‰Oœ‚9×l"~-*:³êÒu«~óä´èb»°Ì<WݲÛZÖÔ˜ÆÜ†Jĺ)~£C§Ûo}xT%çœQègL¥Ýf½öm2j™n»‡–ÐLþþêº>à;[™Æh—]vÎø¸––!ž¡Ó‚·hmn¶ª„޳ææfÜyç=¢b» Ó*О¡CíÔ`é|â¨?ޏ<ê¨Ã{ "](Ôg%Û:2ím‚=º‡½£ØÛ>? ñÙÙ餷ßYÚ£Ú|œÒ߉L`ä²O<E8º8pm>SAкúêëDt<ÚZ×]wuT„÷·¿ýCtî³sZÚd½£¶yÿ9vÚÉÂÖ¢Sø‰'ž6€<øà½b$´Þþ ¥;™%§vVÚÇeú$ŒZÃkùᇅã‘v$€²“ÂåŒPè@g3yìÜ–3çÙŠ�k‡ˆž{qSu¥%ŹiGg~0ìêôÿ¦æÌaþÂ0&ŽÏLà¶`qX›.Œ¦öÎûì¿wf‘Ýݨ2îWe¹†–^D_sC>ÛumÔ:ýˆÏ?ÿ¢x7bg¡¼j§·¿Å’CùSÜz6{‹%yÁs’¿Ëö6$]zk_pÀÏ„@›÷›öŒÝ_ÄçDØž§ŠÄÖ²}——äª}ÏÖ³Û`vߤÜg‹ü,òK�8S(zKo›c̤€8yÄ2ÛšÇNn[c¾‹»wŠ­æ¯æðYx ÌÚ{Ö%™ûµøKêl÷+‰`,¡ÉEDçÔrÙGú„lB³|Ÿi¯­köM¶mY½ÇÛI%¨&vAÏ1S û:$é´ö6‹ý\v{„Â0ÚŒ|Ïe$Òêêj!°ãÀ2}ºéâ/‹} |·=ðÀ_‹2ÙOEŸE;N(ªºòÊËD&ñSFýä1[n¹9~ò“½Dºmgt1»Ýöÿ—~_—|WïKÒ{ƱhyÙØ ëü®IÜ‚C8‘ûpà.ßaܲ¤¢?þþŠþB ÌžxzñÌ‘„=ͨ´ ½èZ©ËuM‹m² Î2¨Gtšåà ÌH n9“Å¡9îx”Jø•Á•¢“7¢G<ÏSv캟¿בìÝ,Ù}p¯_Cqg9†W¥21z“¥(ØÓáPT˜.t<zê™ÑP¹ÝÀX—¼>vÖ0Â#4P ³á†Ó¢!}y÷ß?Üwß"í#Gy‰(”‘£fÙ¹–Ë{×ÖÖ†Ã?:jT3Â^Fy¢Â0Ë4¦éld©¼OŒêpƒsŒ`@Ã|¯½öDmm0Ìé¬ãœŸAÓÙéÍ}äý`!¯ƒé®ÈÎ;ï‘’i:W—vÚA}(bô¨Q£F‰TNrdÅe¹HãÄ‘×_“X¦ñǨZŒæÅßHÞÞSFMã‹ _LfÌØ=z,;ÿö·¿ˆÔN|‰¹æšëE/ £w]yåÕb™éN<Ñ;JSsQ EñßGüItpÓÌ{×]÷ˆë¦¨‹eìŒÍ¾ÈwÜIâ·Žß}~Ç8²ƒ¡9B‡×É—;Žâàµ0B™×ïÌ’%Kpà ¦ÐŠ/|Œ¾ÁöfܸqÑ}xïN<ñTÑÁï�GVóï‹Qù¤ßGŠ÷ø;ë¬Ó‘ çžû—hŠ5ž¿ìæ‹…tªÓÙÏNâk¯½2©Èìž{î3þÖ¿ÀÿxˆˆFÇ^+#ø7È߉üã"qoÝJzzl/¿¬Ã7%™¥9wžÅùÜôøè\ÆÆå«ÆâÖ‡þŽîP…a¡Ë¤•òðX»¡Y!Ç4Ûº–™Ò2ù¯feÓ¬SÓÄåI¡¾OD/³"•é– LE.“åq"3]ŠÍ"æý3þ[³p$†ŒµÔ³’ÑÑÖ\æã„]P†xÁ;ò"Њ{Lašf¬f;>zßÌ´ãš<Å l?èH;ùäÓâ¾tÀqD"£-rô#£TRØÃß/Ø>PDÆDŠK8"Žmí–qš1cw\|ñ?×J'¬г™jBÂv…µt„ñÚ{Û!™ ŒK1xGG§¸O²=`›ÄçC¼¢{0òç%—\šÁïŸí¥Ñ£G‹ka”´ãϼ}–d›Ö-ÕT2n½õލCô¢‹þ!î 9øàƒ„=ðØcOˆ6ïŠ+®6¾g‹ï:‚ûÚ}çž{–êŸ}öybD8Û^»˜-WC©Èö9¸ ,Ò2Ú¢ü\FU¥`LŠÅø÷ጲŒöí5µŒ¿‡|W1ë›Þ¯WŠÉ¨‘¹ù°þòÛ`ÆÇñ˜Lf_|“ÅçÇì÷“BäÂ3:-߯;iµú úmN8ᔸqWM™2E¼‹±]¤¯€í¬Wš¢ÞÀÁK §Ó±“+쩽Ì}2µMsa_ppæ¶Ûn-¢Æ½ôÒˆoâDѰNFm%LOÕŸ÷,ú«}O†ý§Ó†&‹º› é§Oç»b?•^I1ðHþŸ4¦­ØMXf_]^Üg·_|¸À½‚õËÿä**‹[·vN)4K&<³Êâ„f¹ñà ö(®’þzÏô3Ùÿ+éûœ¬Íâ;îM7Ý*Êi¯0U¨|çeŸ‚Ì\³ÃÓñä“O‹w[^#ë”ï¼;g?1ƒH<óÌbàü»ï¾'Þ«iWЗÁ¾%N|ç¾öÚ«âgÛ¶öæÙ¥K¦ÏX‘Þ÷ܾO¶Ï þý)Ù¢fë!é¦ÇôÚ&àßwεúH5{7"¢áŜչ٘I˵h¹Y¿žV=>Ýß*ceBîG(zz£�‚#ÈJÚŠ±äÓhÌo@S±1•4¢³¸Ýõ<3nfFÓ³¬ÇpܵסvTkô²Áš“ðyPBª«« eyÚÇRÆô|„¢¦Ë/¿4î;ÃN–3öÀA"¢}PÌbÏÏhìÀ"t‚z Ìdd ¶Î€½…xR\v NJÎc;zѸfZ,v^sÍu"u4ºO=õ$‘ÊÏSrô/£TQøãLЛûHG%' Ì$¬;U¤µTüå/ç‘,Î8ãœh9ŸÁqÇpŸ²Êìh%L1võÕ—ÇE ›1cwñ9î¸Å‹Ée—].^hì£ØAÍïhÑA,…T„b<ž?Ï™B’‰íø èDešFû9йL‡ðI'&^a„/btܧ Ÿ……tœò¹Rhåì°dt4Чø]çç<øàÃBhåG1ñùßxãµ®QgøyäÑ©MÑÞ7^¦™‘(ä;ùäÓEjKF©£`"ÓˆJq¿·W\qYÜË&GióZ(8»ðÂKŒŽóG<cø’ËB(æä)¦Ñä¹ò·ŠÑ]R…©Vô/>Ÿ†pW!ü¥fÔ¬¤"³$Ûíb2·mr™“Ý–ÐI£7ßwºBÆßy~q‘HEÊKºË<@F3Åe>+µ¥&æ2zScF´X3Ý &&Rfj–Cöhf–°L· ΤÈLLLca^€—±¼§£ÈÅÌ~m>+Ú˜fF0 !AP'.cØªŽØ=â2-&0‹¾‡kVJS-Ñl† ØŽ°=8üð?Šß¦tF×¹Á´ÕúÓÅDÇÈ|ð¡h›™æÂ“›o¾-+1r®ÙwߟöKt²t`Û½÷Þ?í5#dÈÑŠ/¾hÚx^Ñ=ñKvþR”}Úi§ỳ-q‹:’ öѧgœqª|õt¸ÚiR\&9ûì3Dúl¦®`Úivêò¼dÇ7SBõ%{ì±»h_ÙÎRto'—Cɰ?‡‡ºO :èKhò{Èïã—_~'0c´2·HÞ´ËùwÎûÄÁ �JÑ #¢)´ô»õFËMz̆¦ÚÚ3w¼/\œygÇ¢,ŽiëÐÑØAmuïucGçáÛ Ì|šiô¬K 7ÞxKT\Æ6äÈ#ƒÎk”V{ i=ðÀ="#¸ÒÎùóŸÿŠ[n¹¡W"ŸLàg&ko}Kv4ÊÒôêÍ}ñóŸ Þe9à€Q;ø®OÛP¶ }™³·ôWûž ûskhH)ŒÑW²…IÍ]`M†}— Ù  /d¿J>òDb»™m:L¯U.>º…ñ÷eŠ{Ñòãw#Tâ{fYáºÓæ–¹_K s Lϧ³ÉK@f•EµdiŠÊÜÊ ÿN(bÚ­J4aÒ_ïñvìQ›¼ ý"a�‚L±·;LY Ù·Eè³²3iÒD!˜gûÇw]ökÈ(cöà´_eŒ™PèçbŸûnˆÝWï6ÒÞ‘6í'~ûÔè[‘Úï¿ÿîè1òÙ•––àí·_Ç@‚ïøRdçmI‰ý{˜ ƒÝN°G•]¹r¥xwH†ü.3À‰}0l&ôÇߟBÑ_¨á©ŠŒ¡óƒÇ¬öy±>G=6öD%bS$ZŽ„ý#åîû[ÝŸVÄ 99ë¯ì¬DmEµˆÔÕŸÆ*?‹÷¦²´ãüã±yp+ìT¿¶_°+&-Ÿ†šÖ!ð…ó3¸^·rÍvl÷ z†…G ñD6¡2²H#”!k3Â×^{—^z1.¼ðﮂDÌIN¤ˆÊ¾£!É믿!„1Nøà6ÂÈ ¹tvÑ ‘#{ÁÀK4E'Ó1ª—[8` :Nqaçî‰']—F¼¤·÷±/à}>ûì3ãÊø’qÓM×åD\FŒÏœ/—]vqBzKŽΓO6#³Ññéæ,gÚJ9æò˯¿¯móòËæˆa>»°Ñ F q;v<2R講/G™ÀŽtŠ ÉÑGáš>/,ŒÂ>¿Ëd/ýëyž¢ûçñ¼íâ2Iii©ÝÉŽ>‹Láè#Âh8Lé6’iã72^ðOË2®º½°òÞsÌ‘Ñuçßbíb ¥4;JLõ•n‰ÇÄ\K=·Oɶ٧._¬q†9¿ë?'¢½»a=lN†³Õœ[Ëb²þ‹î#·†Ì­FGdضgH“Û#f b»1iá¸ý"â?Ýœt=¶,×õˆm96éÖ¾:ÿÖÃz¬I7ƒ¯Ñ_¶Mb]‹M!Ä&jê¸Ó–uYb2=&*3&½;Ïv¼U—èͧ­›i¤htfF}dJn/[Â.ÖNþ>Q(tØa‡â?ÿy0ê¸xá…¡HD:)æaÇ+yóÍ·Åœ6–[tFó’«óÏÿ³’» •íÑx³Ñ:†0êh_!ÓV»¥Kç÷é²Ë.‰¶ÛW^ypÂ’ŠŠrLŸ¾2Â{FßåäŒy!ä='}ù7äÄ. ïËç ¡Í½ÕV[ˆe üi{}ýµù¹Áí†]DÆc8HAâL©©¸H?‡Ï—ûv/WÌZ[³;·öŽÌË6=e{{nî_]mî]«š–:}Ø`cæLspEel/hƒ¸ùìzû[,á@%¾7sÌQ¢&ðÃÈáý…Œé#ÊJ(ÌN—\Ú3fìµ!¤]#çìœedH¶ïÉ  &} ö6Õ Ú)éÚ4n°“È(ÄÉ‚sâô©ÈA©RbÙ;8ŠÜ`¶i>Ç�1Ù‡ÛGw=T—9ö³­Ú·täqçŒø¿@£ûwßK”5)/r·M‚ÝÎk×\Ö=Ê¢›´ Ž‹_ëfŸÒ—™ô×{¼H% ’mƒ9¸õ5¤‚Âú�³®¤BFãû­›¯AúÛ¥]Å÷X"í;B›OöŸ°=þôSs_ú)8°<ØOCÿÏÝwß}¯æ )X#òÝŸQîíåÚÌj“ .8mÐõÅNvIÕ_#ûëÌã&![úãïO¡è/”ÀL!pvÈÙ×ËÌCAÌéZ5ÁCÄ ÎÒÚßE4±™SpfìWÛ]-~x“ ©úª’ÆÓO~²§H1ÈŠjýšâLõMÃ6mÛc×%{bËÅÛaÌꉨh¯Б$÷!’äþĉÍ‚3ûþ"ØJ8ÊÌ‘¡4ÔÒX6PÓc¶¶¶Šh@Œ(tÝu7Š2­‡vHÆuQäÂg–¬±–Î"·‘†ŒPE˜FïÝwßOØN± Msߟ#—0t¯4H9äà¤ûþë_÷êjüö·¿ñ܇"4/(´‘Ph㤷÷1×ðEãºënˆ+£øI { ï;ÓF4I6Òƒ#k¤aþá‡%lç½£XŠWaÃôò{Í—•c= ©`¤,¯z„i嵿ùæ[ý¾ü²)bäóûÝïôܾƒú­X¦˜ÎË0§“:Y¯W_5Ex%&sfs»¼f·ûš FácJOÂr| õ‚ÑÑ8*œHÑŸŒâ;Q$©^Îý‡(††• §¥ ñ1ô^T&Ê|‰Û;}qFÍG_lÙ &íµ™skYŠÉBÖd•Ù¤e1áâÅc¶­QÑYL®±1…d®“.~ó¸¬[ë:ôèº)£ÈL·M°DdÖ•¹”“¶îUu[œ¨,n ùl‚5›ÈÌž6sÄÞy”¬ã‘ŽF[tƒvÓk¯½!?öQŠvØ~Ëè¡^õõ9ÅÓOËöKŠ¡¥#QÚƒNâŸßxϺßzëm$#U(~þž1‚atÎdK‘ô‰'žÂœ9s3~ž2Í:í·ciÓ0u„s”%#æe:“uÑéÉéé§ŸM¹?;leÛnÿ[ÉÅßPºl´Ñ†Q‡8£¸%KÆgÄTÜöÑÚÙ ct Óé-¯×Ë.a:492÷›o¾‹vdðï?“è9е‹üIÈóå>-ã°!¹‰ì¤eémÌæ8_–yDkªrïZÍÏ¥=\W` cÂwS¯ë¢ *Wr ÍNlv,2ý·ü}fle¾¯áà®dm#ŒÞF K—\Ù„>Bú4ÈÛo¿#ÒòH1àþûï×oÑÞ2¥?Û÷dðþÉÎgv¢K[ÄwÞ™—Î3SöÙç§bÎïýF^P|ÈèĤ¦¦Ûl³uÜvé¿JÖ)ÎÁ”2rm*T NEºÈßþ|[ôÕt„e™F-süÖø ù«;=¢ ޝ]w’=«uÿítÖ»¨»2Œe$4‹_G¬øiJa&è¯÷x;lùêÅ-óæÍË<·lžm¯½öÚS,³“ô«È #ÌÂâ6 }×]wó¥K—‰ÁlK9àßÙÏ#…dñH£~»õWñ~²?áÖ[oÇG} ¯ë°k° ÖèBÞ›TßyδúRðî$™@¡XJ߀³Ÿ&×vB¦ä"e:õ0â<ßK³$ïÿï/D£û²¯/[úãïO¡è/”Àl=£·/}l8XłΥèBÀ3ZVÄ£ÜÝÌU<·ºõÇÄfýã„ÐÁ.0ëÏ—]†tÎ3Å ýOc‡Î¬Šò Œ(‰Ã›b»¦°óÂØpéfÒ4þ@aF÷!1ú›‡ØÌ˜Ê:ªQWSk8>üIÏ} 6X§Ÿ~¶á Ù!nš1ã§8âˆcDŠ;°¤Põ6:;ÐM£v¦0®¿þ&5A¹¡Pbê½öš5|Ÿþ…„í²Œ¸ÝvÛ¹„{„ß¹dâ¢t±‡…MÜPÉ4¹^dss #^{ì‰"#äóY´h±áX¾4n_:Þè<å´bÅJ¤ £ÇI£’釖,Yê915AI‰Ù©êåläócšIB�;ù\ÿùÏ ÒJõk�z±ùææ(ž7_$ÒE~ÏØiš*U™=º™<ÎI21¡ø‹¤º¯œ}Œ0ôs&Ñ_ìç¶í¶Û$Ý×þ29oÞ<ÏýÜ"×Hªªª¢Ë]]Éÿ~ý‡ì, -E°³ØE0w™h„=ÄeÉÊäÔš×H?ÿÆ~B¬Lf›ìb³ˆ( ¹î'DhN9™î—¹”Éý"Rd†ˆ#R™,‹Ø"—I±™¹^XØa™!^D&…d!{9bëR\6^I Ð<¢—‰fq¢4ÄæÆ=mŒŒÏ2שÑG˰öì$téÆö‹©…½ ’‘¤Ø¡ÊôTnv1#@|õ•éô³â“Èßn†_Ÿ;‘dªsÚ RhÎŽ»wÞÉu{ˆ}¹¿:î½÷$CÚÄËéL;‚bp:ûì?»†Þ系ᆛq饗ûíØNÚ½„vž—•móÈ‘#ãÊöÙgod ËÆ™é1žyæ9Ü}÷½q‘ÉìðžqÆÙÑï&SiKrñ7” 2E8m‹.ú—k„cŠ,þú׿‹ä?ûÙ/SŽ.N†˜ñsè%ŸÌ6”â3ŠËÅ^¼–“N:§žz†°§ðžÒÞ?üð£ÅïŒENûüÜsÿ’VZEräwÚï —°Ú²²Üø*˳«§¦2s7eEEvŸU•#aXuUîý(þ|óÙ&Km3Ø3ÆlÙÉÆÔNèg`ÊC9@Ï {ÔiòKF÷ºòÊGÅÎL/ùã³Ñ×°Íþ׿þíÚöÜ|ó­ÑhV{ì±[BJ(y­n‘¹²/$R(ÏH&555Ç•Dú»}O†´;(Îcûîæoa§8#Ö÷Š峿ýö»â¢”Ix8—þÂÁ¨Îß»ÿ𪫮çí¬ƒ¶¢Œ\ë…z?PdŠü."–á%a™î,tYM¬%v0£½ß¶ûØè–ö… àFE±†º²Áßî­ðyFcëj¶üšìJ[hæ±OJ¡YâqA½ÈúøÞÙNë’è¢?Þã\{íõQÿ»~â;,áß«ý½:Sx]ÒGGûÎ-Ufss³x?d;ÄÏûÃ~ïZÛ-éí¡‡sFHwŠàeÊL¾çJ™§9ágžuÖŸEõ«¯¾ÎÕÞêèèˆ6g³]ÐÎÁw ¶@8 à±ÇžpýF\=ë¬s Å9ø¿ÿ;ÐÕ?Ðp0…›‰ŸþùDÅ÷nÁre'xa÷ݺÝ÷tü_éN=Ìè@hûò¾¸ a?ÝÕW_+–ÙGºï¾?EoèÍߟòÍ(ëŽ,_ÑçÈèeä;+=fiÓ9ß\ʹµãB"ëbUK³·ò‚P&TŽ7~€5×tgp\O¦Æ¨× 3;;Ø8Ó¨‘“„:>8ñx:(|ihhjûr½ãºÆ#ØDZÑP°M%h)o2ú[ÃI¯×«œ"3ÍV^Õ1U“«¢Q”Öxoéˆ;î¸c\Ã禟-¦š¤ñé&žâ÷ÄëÙSpÃÎ6ŠÝÞÿCñ|å¨ˆÆÆF‘º€ì·ß¾9ïø–‘Ø‘—‹º{32µ·÷1W¼ÿþ™ÆÏa„†«®º\¤ ÁÄ44®é;ê¨#ÄþQÄH(æÚÿ}Óú{·xHLéÀ'/N:éø¸DF›ÛpÃiH‡êêê”ûØP<ÿÊÊJ¤ƒ¼VÙÉ› †öv—)ò8ï|ñJ ç(JK»ñœŽ0Uî×/~·Ý~KץΟõþ&Ñ àï§ÊC°£þÒ.søû'Ä\-ÛkÅ6ÝÙËœË ±0ök5~o+"¢Ý®o©a¨QÓ®“)b‹­ËÏbažµ!OHÊ!l¶úæIQøå3þÓ,Á¹f‰ÏE4S)ÈjÛtK´nι§Ï8^ÓM±˜ÆèdÖ²¹c$nÒ­ùБ‹­(b>ëÜm´Ø5IA˜åÈÔ5ëŸyN¾º–Ø=M˜ŒºòyÙÑû›#ã7šÁ䌤AqÛ/¦Q¢Àž} ÙÏß$ŽÌ|öÙ焳‹B'·¨[n¹…HÀQ£¬‡mŒÎÈvRÖñôÓ±Ñz‡~XB)Ó ÁŽGvÊR4Ï`:ÔìöÃñÇŸMoð䓯u€® ÐN¸é¦[…#ŽHBψ¢Ó“ϊά[o½CùvÛmWa»QÍŸŒ.GG¥Lóä†}d.N¦(]ÇFm*Æh™'œp¬ˆ‚ÊNóßýî"òÈ&›llt¨ Ç&S=³}%|6Œâ™ LÛͺ¬‹NX>kF=¡@¡7EŠ\á´Î9ç/FGèÍÙ«Ü—i¿èˆ¥yóÍ·‰¨`óñÜyÏùNÅH7òšŸ‘=j.þ†2©éÍÁ ï‰Ï¤]Ì¿7Ž ‡#†p‘¸ž;áèWLÊ~wø 3R¾¡à?™]ÂH+"î²Ì‹ .øgÔÚÙÙ…;î¸%n;¯S¦çõ2ÚŸ]àÆö†¶¸¼·<·K/íûÿuóù†QX@{'rFy©–»¨^Õ>!àjnŽdtÜÄñ™¿“N—•«2ë¬VçCYinì ¥%::s÷®[XÀÎ ÿ:õŽÁßGŠZù[pðÁï»l»øÏΊ‰Ù¾ð÷Ò«M=zttùÎ;ï6Úà}ŒßÀáI#dKèøÛßþ‚¿üåoÑNܸ'὘õ²Í&ù˹⼳…mÀQHL‘:Û¶‘lÙþF<ûì3Ž5Êôqñ~ÝsÏ}"ÊÛ ¾×çʾp0ïŸÛwˆÉì¸\Þ§lèïö=´;ØÙÈçÊg}à¿‚æ÷;,ì”§žzZü=Ó.O•JÓ ÚF^øw}ôñÂ}ÒI§‰Ll÷ÙñN£¾ÊG>C·lìl§ï†v=}–ì„ä÷“hiOзÇv_^“é¾(ÖzëוöK‰^Œ¢ºtd±ÌVâØ0«®ïM‰XŽà³àŦ£óñæý#�é+6•¤O¬ã«øuÍò« YGŸ[‡”­L“›´õn°é¿V¿1úã=Þm§>øúÓQ¢Ý¤¯ˆÏƒí×O<úóÝŸ¶G¶L˜0^ôuЮà5xàÁÂV -Ãß‚9s戈lR¤ô§?Mqé„çÇQ¯¼òÞ~{¦(sËzB[†í}^2€L¯é„¾}Š«î»ï1êÐCÇo~ó+ë½=,ì'žŸ&±]wFBûóŸÏöû—þýï+Åù± ¤¯!¾ÿþ!>“}ê'œp\¿ Œås£œÚ^ý a#ÒÞ¤øœ×ÄçAx¿™fÜI®ì/ØO.áý¡h‹}:RØ–Žÿ+Ò©‡©PÁ—ß+úp~ýë߉¿¯qãÆ !íÚš|_á÷–ïniéÓ¥·Ê7£H(™é¦Ç$l ÙÀ~ß>_tRZ{E »¨InŠ’²\s”Ç¿-¤SUW9êF× q™S@æ&(ËDd–ìŠ÷DN²N6 tdðGZ:YNçF‡`ÃDkm©»µzB­!šzÐ_†âz´”6¢³¨Óê�Ž]¯×}p–ÍŸ >›‚,¯ô˜Îû0PÒcÒYb ÁÏg\†j¥³,UD¥d°#ì„N‰ë”¢SfÊ”)Â)5fÌh!ðaÃLá”4DØ¡C…; I£„ÇÈQ”ܧ¯XÛ幺½…{W\qµ˜3ªÝÍ7ß >›\tÑ?pÌ1'ˆs¼í¶;—±±â»µxqLéϼæé’*Wºò… §ã·¡!}V:£_ì#02ùÎÈß¾tޱw€dëtÊö¸d÷6é\W®B3+¤¢½ÚŠÖ2øKºdNQ™Û6i ÐvñÚn_n4LðòÑNO?³O‰ Êt»pÊ‚™¯¼è\Â7Ÿ¨TÓ)(ó a˜pø˜YÑ]}qÂ2AV· ÍtS€Fë± È4Q™):‹ °¨#EÌ´ã‘Ë2jÏÑgÍ­kÕ†%v¤Jžs ›é1¹¿'23?¢Âê4EƒƒG<–.çœs¦ˆ€É6Œ‘.d´ m!FreL·Î3þ6_vÙÅ8í´³„#‚·Ž-ÚϧžzfÌØ=aÛÁ$Úqڬ츒) éÜd§¤dÁ³-cû¿®‰Ë;uwÚiá|’búd6ß1…‘\)„¦ÈÉïSw±³Ý FœÚ~ûí„sÏþüø¼èx’p™ÑYø] £Ö+ÊU<¯Líh¾ÇÜtÓõ8_ g)pœÜ pŠéaƒßY:7ù=Íäo”#¯¹æ ý…b~ÿè€tƒï]‡ò{á´uÒÛ¿¡L¹üòK¿¹+„X‚NÜ[n¹Ýu?vŒÓAÙ[èlgô2i£$KÛM˜*‹ïÒ6äw&Yy:V%ncíÛÝÖy^t~&«C‘H²N\³S.ˆâ¢ rIEynÅLÛlž×ÞN¿“–?[næG¦le|ÎûŸ‰™¾Õ™N2ª«}èèÌ]¤î’"Þ7ÒØÁfó°½äï/¯ØÇHvx='Ÿ|‚Øæ%ŠÚqÇí…¨™ûзÀ‰þ.»ì¤}�l |ðaÑaÈöìÆ¯‹{µ§JÝ1N<ñ8ñ^Ïö[ ·ìðZ®¿þ×hò¿üåÏ… ™¾ŠÛɹçž%:se_Øáó±Ÿc*V.ïS¶ôwûž Ùž³£•"?Ú?vh§\uÕ¿ñÆoe-0#ÜzëB Ék’NfÌØ] ¢t©ò¾ð»qúég‰ŽLÞ?»?PÀÔdÇé¾(i¿T䕘ƒùœ$ˬÂä‹ñ%îÕŠïÙ±;Ì^iü€%FŽ‘ì0©`Ð Ìvžì-`)Î6„Cø%ýY®B³ä‚±è> Á$Ü è•àÙ©Aºñôõ{¼i0Û€³EÔ-·È[ü}§ Ó[XUì¯á€FÚ_Nø]8qÄJZERv[‡6¡žÉÈÞôG$óKñs…“QÊ(Ò¾öÚ\÷£(èôÓOI(gï½÷Þi´Éç ÄËׯ߾SN9±ßÄø—]|ñ?„øž…dV!;ô \qÅ¥}j'xA¿ÒŒ» ›ˆ¢J*ä`€W^13A¥ëÿJEºõð=‚ÙØ¿Ë÷iwÛ‘´d”¼léíߟòÍ(J`¦H:5‚ÁZºÛ°4´Æf&jq³¯žeŸjNßÍÞŒ+w8Ë4ÝsYQ¸PcÒ —®ÈLTãáœK&&`ÇÃx~×ö=^o~ SK¦`Œ6 “Ê& ¨ ÈŒŠÂN[£¡¦3ÁÝŒe ƒ/CáÓÐâhF: (8+ —atÏXÛƒèÐÛ±¦p šKÐRÖŒP^¼3Ù+ú[Q°c«ÇŸë”£C¨„ße—Ñ0M”4Ž˜ÊôÈ#£Fœß§£Î‰ÙÉtAtìH™4°82cêÔ)È52:C¸R`´¶Rƒåê>ö:e€Ÿÿü€¨¸ŒpT ;(;ìH1Òâÿ¸Ht~K›çJG]ºÈ{OÎ8ãTaøõ>?Ž@ ü] ø”÷kÏ=gˆ{šŠtÂÙòº%q’.E‘-tâ§Â¾=­j&ÔÕÕ cž£e®¾ú ôv>_$S‰ do¾LÈ´*ŠuݤKUùèi.EÙІx!á¿4‡¸ÌV– 4s)³—sZZdxÞ»E›=zøü°dŠ%ÞbgrØt¬Úe]B–gF£ØÌ8/MDM³¢˜iSh&…e¶f"B˜M”ÕŒÙf¦ÈÌL)Äj"ŠYØØ‚²pLX‰ ͆Œ\bø‡¢2 qQÆäzH3Ó\úÌuÝgE<+@«m5#œiŽk¶¢—é<SȽ‰±åÅUІj)Ó€f8’ïî»oÂ:¾(â¢C€¿—t˜0â˜} ´5ï¿ÿn1Òðµ×^N:.9"vĈ"í¯z(¬¢ãŒ"mF e‡ÿl[d2rU*Ë`†£ å¨YÚ©¢¦Ð|üñÿg*ÅXlãø^Å{ÍNq¦p Ão‡v ÛÄ{ï½_|Xíz·ÎR>GÎxòɧðÁ‰vŽ‘<*++„àÿ'?ÙK›²uêÓ!vß}w‰óxõÕ×D Vv¤úýù"5&G²SZ޶äw‚ß]F>c{{üñÇfòq¢Óú‰'þ+>‘Á(’äuÓVb¤~é\þéO÷öŒhœ‹¿¡L`ÛÂŽf:ù™9J[‚QLø™sQ8‹÷D Ì$©þþhËp¤ìgŸ}.Ö·Ùf«¤Ñ¿)hàˆ_~çÎ<ó´„íÍüÞ{ïãË/¿ÂBgúq~×Î;ï‘V‚iÃO>ùD(zßHUy7–®DÎ(Ï2­¥;M/ÀÇŸÑÚ–žòk«Íü>4óߦQ#ò°éFùøú»PZûWUú°ý6¹µj*5ýR9£²œ"æÒè³^`[ÆÈ”|Ïão£™µ´´Šw,þ&1Ò“¥ä{ý-·Ü(R˰#Ñ!dDÈtaí FáüøãO…?ƒeú;%¢7ðwóºë®‘Êiƒ±ó’6+#±1ÂÛ ™fÐ í‡ë®»JØ^ÜÑv°¿Óç¾°ÃÎS¦ÔaûÊŽE™öÉ‹\Þ§léïö=ôÇq`#}˜<F¢ }Äï7Û}vœÓffgjoa}ŒÌŽPFª[ºt©è�¦`‘ö¿W릯 ÿÖ~øŸ¶=í5ÚU<Gþ-ÒÏÉ('ÉHçý@±þ‘L /ß?*òJM_‰ÄµË'ݨe©„e1ÖváÑí'âÀϛΗ¾ Ý¦â_Ïî÷]¦¸÷ÐSŠù¶/¡Y:¢2{™m=…Ð,䫳uI@Ÿ+úú=Þý?|§g4RŠnø9ôã3ÒÑAýÖ3’X6ðº(Ê¡hþÃ?2ì•åVæ™Øzë­DD[Ú©à;¿ì3¡ ä&ΗûÉwcŠÒ’ÁwàK.¹0<‚QÿÙvóûI[‚QG<Ù{;σ¶È;ïÌuP€Ïþž+ûže”טmö¥l¡ðÁïÅwÜ-Î×ÅïÒ„ ã _Ä/„­˜ì»” ;!\p¾è_£‡¶<ÿîÙ¿Åû™‰ÿ+éÖÃïÏGîà; Ÿ!ý¥ôq1ƒ£š¥› (½ùûS¾Å@"ÝÖZKs›–Æ\óXwv'ùlSžU–瘸q)}@ð} RÜ"ˆÙ'‹gWW§á0Ðã„Ù~N²Ïw.sN1…,¬ù w¯´Øšû ¾\mshÑ¢»k.u$­_O¬Ã˜F„†â„±‡ŠHDµµµV݉_ß\ª¼'---â%þéÕÏᓮϣçá7þ_0“ &bJñDŒ(!œ üá—Ñ5hdÈgnÐ1Äèfl`™ QæÅæ÷! ¢Ñ׀Ƣz4•6 ­¸-þžØîÛðæÑøÃÄ? A  ¯{0"˜1e‹t*RÔÙvÛí$î%, Ûogÿý!ŒŠ¡~ø~Ïk;óÌsDG";cfÎ|Ãu*tLòy¾ôÒs0~“ Ô• G™æ:)åÓ›nºN'^бèÖqÄÔ8Ge*â©Âçˆ^7ø½›>Ý|4Š9RT’‹ûH¡æ{ì-–8â0×è©`Hâ#4;-y~<O'LùÀÑ2 ˜dúômEDŽtáýØk¯}„C›Ž×Þ†’å:†ùýá=¤IG! ÿG}8ú{æD~¿é�~ã—“v@üæ7 '09"Äþœ’ýœqÆÙBˆÇïÏ믿”t”s»s´¹ùæëÅK”„£«éÀçK#;н8í´3ñî»ï‹ß¬_|®OFµ±Cá8L,§ú¾ñ¾ì½÷~bd8¹wÝu[t[6? Çìö0X ˆ“Q¿Š‹KÄ÷MFì”m[2±v®íYoªr/»FD5ìšÕkŒvôܧ1é½5±ù÷ðå‡Í|’š5ù,'™[Yt9}¿m·F $‚/æl›ž<δ–˜.’¹©Œ{ªÓá–Ÿ[¶ÊÅdü]hüÛÐlsqÿM™ü×<MˆË|–ÈÌ1?ÞÖÍek®…#ÆÜ°%¸n,kÖd<0c YSüò.{>‡]÷¢˜Z¦Çô™¬¹®Å–ÛJ 7•™ÑËd3¿Ž¼)FGYa2u¦9!n9ÒZjL%ÆešÌÌàmš¨ziO5¦žit—cØÐ!Ñï%€´£¶¦*W¤0r“+¯¼ »ï¾ …b 2ì7&SßÌó¯¬Â;gŸbÕ EW¿Ü¯¹dÁâ0îy¨ `r‘…eÇQ"ÒMfCw·Ž›ïîÄêú䑦 Œú:¤cGçvðÝãÏvãÓ/sQn÷é?bߟ ïnU¥²mÜÖ½ÊÞðïk×]÷4þ¦»²~o»ë®{¢‘+_~ùžïò úHöÚk_1øbúd6sqŸÖW8°Q¿èëyýõÌ£~(vÖ†=“‰ýâ´c8 ‰ƒœnÿä<×ñn/…eVIÂ2»`ª$ìÇ.İËoÅðéîv»¼sW§'ZhL–7ÏvowÖ,~Õ eÿ„ó.¹ÝH7Û-ã\š¹ð}ðHTnpªø ¤ÙÍ®QöB¡P¬_¤cϤ«_ ø™ã—Ž‹VkvLº5Ø&Ý6wNðXO6w.;IîÀA,6ƒB!H•“e߶΋}SuÇd+DË­èqé™÷Ϭ\3ê7S+ÅR=+ó×`i`…P!SüEÇ_”’]gov×¼¸ó ˆÙyx±ýUܰæ6\¾è<´ðQ|°ü#¬nZ#7t óÅŠa(¹Lý¼(ª Š›#(°¢Rš9“©v¯(¯ÀHÿ(lÚ Û7ì‚]ÏÀ†Ë6Űæ‘(ÅËÐÀ0!èazL/jz̾†Î0BÁ‹×µñù|úég©ªÂþûï+žÅ(Q½õÖÛ¢œÂBŽ.é (l’â·ÃvÎ?ÿÃIøk!ÜË6½£¹¸¹ønÙGÍÊ\äN&Ož$Ò„99öØ£‘ 4pöØcw±LñG@xÁ¿mŽè`„·ßŽT Xp¤Ï‘QÑø¢ÍÝ^˜:ÝS8JÆ Ž4‘#ŒyÞ™Üï}öùiô:(þô‚Ψÿþ÷1±Ì°Æ µœ {ïý1çÈŠì’ÁÑ'ŸþEZ)BípT¯ÅQMNÁ¡ÿýï!.#ù¡XdšâÔY.ÓX‡R8©¡»¹Â2×­¨[œÄ²U±•¥\öÅÖ&cÛ‚bQïcf[ÅLniü§‡cS$dNz(~ݘÂVy8Z¶m3—âžØñò¹-¬Çæfýa[]±I˜‘ÌäœíHDKߘi/ƒÖÒbë¡øIø 3JY˜ssò®7~PC±×§ˆû¤wåǶ3˜ë±¶µDjÅ3dô$@9×&2UÛÈTQ …B‘=2êðì{RT˜û6tÂØ<yH1jª¼ÝS'åã˜Ã²—‘¢" Ç^‚)“¼ÜðúB\Fü9¤:Ì Ê°.E0 0ò’ôoì°ÃºÕ ¾{Ë÷j Ì’±>ß§d¬^:ê;=FÄP(Öuœïæ²MY<,ª ³õD!A˜¤»n‰•8\¬ ûÉÎyAÜ:cêÿçyç×[çVlߟüfïsï\ü¨mMCbX‡¦¹”¹®')Óâ æOs§}£ü8 …B¡P .”Àl='¡fÌê\Ø ¡˜)‹ôàŒSØXy°ñ,®i&)j¡ˆ‹Ñ‘œ".9R'Û{FaY8A}Oš"-IÏ“Û?ïù6?‰Ë–_…›ߎg=Yk¾G[{[Tp&Ï—ËkØá¨UŠËš•)óvÚi!’`ôÊâJLÌŸŒ-:·Á.+g`»Å;c£ÖÍ1´g6²9 Äñ’õÉh—i#ÝòIc¦Å£@…‚D'|ûÛ?D”ºT0|«t¬1ì,'Ba ó‘÷üL)^cèä»ï¾×u¿gžyo¾ù¶HsÈhx¹Ž•‹ûH¤<¯db­d0ô¯ !Ë¡ kì\N2I)áH]FõâoãÙgÿÙ5M%/n¸áf‘Çý÷¿?4*$“ðoŸé:)Ö`èå“O>!z-ÇcFyï½DŠ…TÜpÃM" ƒÞÏ‹/¾T,óÿú×ÿ—°O²¿“Ýwß5šBòöÛïÂÇ’°ÏŸB8™¢”¡’³ýžÍ˜±{4Åe—]îùß|ó-!œ<æ˜ðç?ŸL9ì°CÅœÑX[ú¦~eÈ`ÂPÅLw¡Ü8GDR”Äïj`Š™6¶«¹ÑôŽ Ê\–“­/)J ;±ã¦ÄôhÆï†vIQX‚ðË!2³öu ÍìëáH8ºޏ‹ÒLÑ™ü̘MûHá›9gj…ÊŠz£ós¹M\f\@ЗEˬõŽBK\f®ûF6@+ê¶„cZüxDzÞoî“°¯†ÆP5|š/.r™×sO绡Ȟ… Š9Ûb¯tO …B¡è=ÑÚœgîÓðÂ×GÂqcòpú ¥ø¿ý‹°Á”| ­óaÄpŸH‰yÄŠÅTRÜûv˜uiÕǺùü,~æ¯ŒÏæ9ô…¸ŒøósiGè1Ì|ÆÉRH)r´eø~œ«4ƃ Ëä EúKR¥ÆZ_ï“Ìwòɧᗿ<P¤zò‚~9’>]…b}CÚ/ãJG¸Æl‹ºëÄ Ë\ÄeñîöKß݃ŋgÁ‹Cw(Fiáàó”h8hÛbÏíå=o!cÁ˜XMCŒ†$b´è&£O°p²(Rz…B¡P(7ª%W¤D†I¦˜jY×4G:âÒ]š;ÅfšK9<öÏ©GßzSk¸7¯yãü#1­e"6,›ˆñåcPXP(Ä 2b‰LQiwØ% í„¢"¢—Å_‚çù“°ÁâÐ21½Óõ.J´bŒË‡ÉE0µd2jKj…“†b ’“=&Ë™ó™Óòù0Ú.œuÝC1¡{&m3555iwº®k¬ªÌ›7|ð!^|ñe£Ã³DD„ãu2 Ó91âÝÁÿQ¤T”÷“£ )Ì¢(kâÄ ˜?AÊÏúÅ/~.Ä@3g¾g+óùÉûvÚ]<kŠ‹^zéÈ”³Ï>CDÀZ±b%n¾ù6ñùŒ²4tè‘"œ>2AÈœ~ú©È5¹¸üŽ3Ïø7ß|‹×_SOÇ&ÿövÞy'¤Ëi§ŒãŽ;I8H=öDqÿ)ü£È÷ã£>6îó+ Ç1ÕèYgŽLà9žp±¸îºEÊÅßýîØÿý„X9ÚyÍüÎQ¤D(Òb¾v;×\s½Ø05¥]ŒxðÁáÕW_÷–û1ŒW˜úwÜßÿƒHÿÉ\ë[l±¹¸§,cô4¡ëÐCÿ „©N’ýð÷è ÿŽ£>^ÜדN:M¤‚dúËòò2,]º O?ý,-Z,êâgS`–-Ã^tÑ?Äócè|~.Eµ;ì°½H³zõ!r“ÑÍñ¸ãŽA¦üüç?ÃÛo¿#"òoö׿þx>ãÆB_þ]Q¨Èï1{™"¤¯Ä¢Šµ¿ßþ|?|Æ<4¹V¤’ìn-G¸»�y…Ø0 Š™\—uÓ(ñYå"õ¥%~’´è6—õ�£˜•�SÛ±óÆàíY¦HYd•4 ]ÔÏuÝJ­é3—#>‘þRf‘×X¦›é1uM$Æ 25ëCu+=f¼pN·X6?‹“O”ëÐD´2c]ˆeDÂl´¬e*¾"Ø|óMAY4¦%ž“)1£ëæéò‹mâ|†¶B«hÝ Ýqlëz0zOž™3j\™ƒ¸ÖU0\Pà/Hx¾ŠþEF0S‘, …";Øv¥3ÎôøP^V€¢Â.t÷” äå÷]ÛÉ@£Ó·ö‹©¯aD´©“ú×ÝéÏáÇu¢¢¢P<ãtíe÷äiËl¹åæqƒ4×Eñî»ï‹ë¤Ï@újŽ<òð”Ç®O÷)è3øê«o„¿äŒ3ÎMwÛmW >L”qÐý,_~ù•ØŸþ:XT(Ö7ÌtWÀÈŠ¡(ÔýèÑÙ’ Ë€LÓaºî'\!:îܲ[}ð†ïès®.ñáàíŠqÇÌÔ·íX‚Ú2÷ÑKßC…_FY”NØÖ‘¼Lvvég[Â_:Ât£ùTÜ…B¡P(3J`¶žŽ“2UzLò]û|Ë<Ôâ-s«È¾E“u:Æ1$ì¯9Êu×zÒ©ßè&ÅÂà21½Ô:¥¾bL,)Åã±IÅT +"D2¯pqž®+#ºýØ9/µmm•‹þRGyº0+ø¾7&´•Z&ŒÃԢɘZ:¥E¥â\b3yî„ëŒdFç…¨³£#*8«­­Í‰³q°:,)~ºâŠ«ÑÖÖ.¢h‘G}Xˆ(0ùöÛïDмU«V‹HSvxÍŒ(ÅméÌvÝugTUUFÓé9"iŠ( sdÔ$Šg²‚—»ï¾gõg!DúꫯÅ䄤o¼..d®ÈÕ}<é¤ãq≧Š{"ë ÐéÍ7_Mûï’#m¯¼ò2Œ‚·ÇRLNø7uôÑGAS\þç?Š”‰økd[Œ¾vå•×1Ô#ü×u?Šº®¼òß"í¥„i+yÏ#Ñíºë.qÇðšÿþ÷¿â8L¤Ÿøûß/ÄwÞêz/†nì÷{œ~úÙÂ9ÌÉ k'žxœëù%û;!ÍÝzë"Rï+EznB½3vÇ?ÿyA¯|ŽöÏ{å•×Ää„oÿú×E˜:u ²á²Ë.Ñå˜^”Nß›nº5aŸ²²Rñ;î¨F¯kð·‰í'£˜«BãˆT¯ìFGS%*†Õ›",ŸÕö¥# óYÂ-Wq™3�4Ûôc0ª ÓFÿˆicfcÖÒ)–À ¦a#2[‘Wa…E5Úÿˆ"U£8ŒŸ«ù„ÀLˆÊ4›ÀLÍMql)?c"3Í–™SD¬K1™¦›¬T™—ñ7ßèS-z±v¡™]\f”ëA¿1å‹Ý´ªvø†5ÄÎC³Ý£¨¸ÌZæ-m+4£•Åžœ9³gÁò±Q1¬ê\]»ÈTÌÙÚ4 …B¡H¡qðß-*J›r'0S}}Yã÷çÎ)/i1Þ1KÄ3&ʾé?Ö'[†­.¹ä²¸2VûÉOöLy¬²ùâáàÈ›nºNDF§_á7Þ“ãÇÃÕW_! +ë éäíö £]×¢ËQonô–ÙJz±,qEÇåmxþ³qäOÚ³~Ú–®ۇ·=Ø:çTäÛbéˆÃd™m]“}‚g¬7FˆgŸ‰}£l …B¡P(&J`¶“izL¦„ü¦m~‚˜J·bdÄ ÎRDs–ëŽ@fÑãö×SÖãUÞéÂ7ÝsÄôdÓ«š_ƒiE“°AéxL«˜ŒÒ¢’¸èfn".ÄŠŽîîôXXbô‘jŽó×3>OÙŸÚ¬·â‹žoð¥1å·äcTþL(É%1¾tœè@•†¸= ›=õ²²2!˜q²¾æ ñ»ËKt1]è’%K„p†÷âüóÿ,„aúP ÕÒÒ*%¸0 Ãý_~ùUi}ŸÅ~ûíMƒHç\²û-Ó Þ8æ˜*“"3¦Á|öÙçÄhÒ5kê‡bÃÑ5{í5¿üåÏ£isM®îãÖ[o…;î¸wÝuÉuvv‰ï2…i™ã(züñÿà¹çžÇ[o½#ž7E«?Ó§o+UuuuB¸ÅYL-IÓÐfú,~ó›_‰(kO>ù”HUºråJ´·wà l¸á4ÃA»—ÙEW­­­"¥$©©©‘èÜà÷ô¨£Ç-·Ü.REÞ{ïý8âˆ?¹î;}úv¸ï¾»pçw‹è[<F­cd¸ƒúmÒ4ÉþN$›o¾™q 1£‡-]ºT¤=¥¸•:ÞÓd‚ÊLáç=õÔc"Š#¹ñó(6ã÷zâĉÆ=ßQÜ{þÖe K/¸à|ñ÷A!"¿»ü¾1ÝÈ‘#ÅÈcF5SÎßÁGºNRTTˆrã÷jÍ„R!0k¯¯FÅÐs§¨x ©×“E.‹+³ÄfRTõe•ñÃUCv{ ç=ü—ø“Ѭó¥˜,Ï •ªåELá–n »´ˆ–±¾Ìhš%ðò15¹˜¹E0³ ÌÂ2’YDL›ØL³"—ñÔ·ØècT•4™Ìà‹“Åf±e½£:ÓbÖµ#oÔS0& ûýÑ—õ¿%´³ê‚¥Õ3¦Åj” /1žaAÜ3U¬žxâ¿P( EÿÀw;ú$†Õ¶`uã(ä•1{rÁlHM«ñîXÒgïï oUœÓúÀ’%K…H•Ñ·(zâû<§tXŸîSºlºé&xì±Gðüó/ŠHéL…I¿ßOèó¡oˆQÍèR©oë3ôÃ1òáhm(–ëõÑòì…eîGÇ•êîGßëÿ¿Yº•£Ç$[WæÃ¹û–â/O¶a0pÞþe¨)u)Ðݺô7ÍÍ~9>¤…,¶ê%4ó®§!0 Õ†m£ì…B¡P(?éöÂhinÓÒ˜këöî%9åÿ1Ëò·UpßÇ ÅÙÊuûÄN™¦²««ÓèìÓ=Ó¤¥û^Ÿë\–çÀ÷ö®œòýu"gÿf[p~Y4›à,áË¢¹Ô¤Q¿îZO6õh~Ýlƒ’‰˜V:cÊG CWæ‚—é4í".Fã=™Ý54=‘´~s›î8$\WB.ç_á+ÇDÿxL*šˆ©¥“ÎÝ*ñbÆs©¾Œeg:Mó|´”Ënë©Ê‰Ü|ó­¸ûîûÄýöÙ'£Qåܸÿþqýõ7‰}_}õ%bQdÌvÛí$ t+¯¢?`G„ϧ‰¨ lkdtM!h²&7rm×8ëNUîeãƒ!´¶µaùŠÕX|÷Øöžùе0ªG¯@iU+DnIa¡ê1Q˜OOsÝvœÏQ‡sÿ ŒÏÚ  ¼s ^ürFâŘ9Ĥsžç‹®3rš®™sÈç e2%4딌yBpæ"2X“±6çZ˜Ë¦ LÌÃk’"3Å]8áwW¢ª¼Q³]÷%.ë1³>´f|CŒÎÒ‘Mˆ‹V¦iÉ—:‹‡@3®Mèçò4qšõða÷Dls(†«CMuµˆF'¿ƒéÚ>©Ê …B±î1Pì™Lü4N[†ŸËAE3ß›‡ÿ½¹5rÁÏö.ÄÎÛ«N¿lxëÝ�^z£¹`Ÿ]¾Ä»G]]mt ¤ÄÍÎq[÷*S( źÃÚ°g²õ¿Èåîîn455ãáŸÂïšåñ5Á¥Ð½(t˜GFK.ÚýÃß\·®t{ÞŸÀ@f—)xø˜êh�~'‹Þ9£´ÿ¹lѽ{IÖ]Êô4ö1ø¸ý4ŒÞô0!º-,,LËg£ü7 …B±î“Ž=“®–a0PPàßæpúVkvLº5·…ˆæ¦Ñ]&x¬'›;—$Û&PÌ) âàÇö% $ÊR§»´—kpK§@‘v=@&é4Ó­¿G⇞bz¦éuTû*0µx<¦QpV> •ÅÑ´KœøâÕÔÔ„Îp^i{'Íô˜š­Üöb%giÞ‡–H[4º™¯EÃð¼˜T8SK&‰èfÅEÅQ$£ú8x•ñÝ·Pè#Ón»íÖIÅe„‘ÆG2*q™B¡PônĮ́¥šˆ`–ŸŸ‡ÐV#¡Ý½@´Ù­«kQZÙ–±Œ sDƒk3Yæ¹Ìe’Û~¨�ŠÃ8t×Ç0kÙT,ZãpèòÜÃaÈ´˜©1uSœFÁ#˜ùÌfºgE‘ÑË,£ˆËÌt)7®!bfÍ…ˆLë¾pDl—¢2Ÿn:Yõ›¼ƒª¢f+z™‡¸,ºl|fØßÐFøêŒw¦°íÞéöe¸.‡Û‹ÌcÄ£³nš\6Îi¥&ÏŽQ}>MÙ9 …B¡XgqÚ2æ 2 ãÆ¢ ¿PzK÷Àî?ÐtRú_Ó"Ï„qùÑ„v”£P(е›o%Ù>Îýeôªk¦�¯¯÷Ž~Μ Ë\Žëžy¢ó±z FMŒbÆq}7ÿ¡{_Ý€Õm3Uær®ÿ}¥§¸¬£y)†ê¯Æú¦œÆdÇT\Ÿ[ªÎ.GY´ß+Ùq†ªt ±”̾Qi3 …B¡(Ùz@:©0½F–¦ÇdÙ·móÜíDqmQ³mJØ_s”ë®õˆ¾EúÝ?×ñ¡)öOVS¤u|-&ß c F`jÑlP:£ G «» óK„¸¬>Ô˜ÅùkŽò˜èŽKÐ\Ê%aMDzðr,ë\Ž™ï¡¨¾ã ÆbrÑDlT±!Æå£Ad$6EßCqÙòå+Äò¯ý«”û/\¸HÌwØa: …B‘é88“íŸçËC?e#kÑ4¢U+» ú G\9J«˜Á&*K&,K§,N\¦™â.Ñë›* "ˆ3ö¿ç=r>:{ŠO>"b–Ì1#š‰È_‘h3)4»P䥛SÄ6Þ…Ú4š5c§ˆ%4cÔ²ˆ%2QÌ"z̬2ê?töØìS\¦Û‚G£•9Ê(úªj‡VŠO‹A,R™,ÓlÛ-¡Y¤µÐ˜Å?Añok¸áÚ1ƳóSAÂ3v[öB9( …B1a'mMMj*×`eÃô–žîôí)E<==¹¹wµU«ŒgZaørT$9…B¡P¬{˜™bò0ªf8j–”£Acð[‡ŠŒ…eq+É…e’-ˆ?¿z-îÿÃUpƒ®ÛþX…ßßÞ„îàÀ²“ŠýîúS†Vø<÷ùñÃs°Y©}—ÐÌ)2sÙǵ̶.ý;.Ç5õŒ@éÑâÙÛ³î( …B¡œ(å‰"%˜1Lò×­ DçdâÈ 7;ÓQ®ÛV“E7KVO²èifý©£›¥[ØØia`¹˜^i}yÆF׫9ºÆ0¼µ$õ¤þvÑžV=â:å]Z7¾ÌÓó­/ã<ßÙ(Ë+Q´Ü w•37¼óÎL‘bmñâŸë®{EÙĉ°û<váÂ…b¾ãŽ;@¡P(ýÛGN¥¥%¨®®Â‚-*±åKÝ"dËš”V¶[{Ú,˜ˆDù¬òL¢–ymïÉÞŠ!;¯Æß~u5.zò w‘™ŒfƨeºOÁ ÉT™¢é%…½ ‰‰§ +E¦¥OÑÌ"Ve ËL¡™™.3"Äe1a÷gjÌ?ì|/ðˆX&Eeš5÷Uvoº).³R^FÅuò–F#–Å—é¡<!0Ó„ c+…±¼4RººjÑ+Ÿ£B¡P(ƒL"ƒp@#—­]’YwŽDRë#EZ³ååãij%J(¯P(Šu»ýRQQ‰´ eÔ27e˜s?ÝõÈØ~º÷ÑŸvÍŸ¿ˆ_oµ¯ë±ÛMðã–C*qô}Í @fù†ûãÖC+±õ8¿ç>}õ6-~é ÆÜúüÒ•%D3³þq<³e]‰ì-EEfÄ]e»( …B1¸Q=1ë)éFú`c(FcO+–‡šÍ>=Ñ1‹†aˆuXÊ °íŸº<bu‚ÆêήžÄr+jG´þìÏ3¤‡¥¼,þää<Ùg­E;ƒãîA†õ É"ÄejTHßsÙeWàÜsÿ‚›nºÝÝ݆3¸ _üÏ”÷½¡¡mmíbÿM6Ù …B¡È-évÈ1½TII ühܦ¦T]C8èGËšj3z™}Òm“×¶ˆÇ¤û’o§ÈlæPŒ 4‘YIa—÷ÉK¡™˜B†‘†&¦5åÆ\¡ÛíSÄ(ØË"Æz$l,“v¢™¬BGQAŽÞå¡Ç˜‰)Ïšk±yКçSÕ!Žâ²fÍaF$“ó°œÛ–#æ<Ü\,æZÄÚ‰ßw¶6ÖpJW q 3%¸B¡P(벓nêÄN3]v/É¥À¬¥EÇŠ•3Y±*‚æ–Ü_.îÏÁ´Éݦ‘ÏV¡P(ŠÁ@&ïãlã…u£¢‰p‹Z/.K(‰ß/q!q?Ýóèè꥟ގÕ-õðbï q矪DÔ°µŒ\¶×F…žû¬jYƒ¶סÀg·uäèF8Êër@¥çq^õhŽÕØz}d+‘eG èÓAùx …B¡¸(å‰Âv.2zùªe>"ìltŠšàZAK<Eö‡G=Îò˜Ð*âqeT‹à ¶s•çØ«úå9ÆDwöý³¯_³EÑÒ>¦Ë ƒqNIe”çžU«V‰9_ùfŸ}öÆý÷߃©S§¤<¶¶¶Ÿ~úÞ|óU%T(е„&1ÍbIq*6ÕãJ„ŒQÌÚš* çÁŽ!¹¨,©°,Ùv_¢ÈìÃ!×Ü’ZdF„¡1Efb ±™œqÝ.$3ç²Ìœ q')*³]n‘¿ ÇL¿ #ŠW& Ë((³Oô]–ç[Ò•…s²lÛ˜ÙEhºµÜ*FgÕøQl<7ŠU„…B¡P 62m»œûó=’‘<GŽ(G]Õjô–î¥Èœ¿0ŒëïèÀu·w঻:ñÙWA@Z© akð\n¾»×ÝÖëoïļaä‚@ ÷×WWµ £FV~œÂJÿ­P(ŠÁD²vˆâ2¾Ão9lŠa¦„v–ééËà<2¶_b¥ ûÊþ”­'?õ$ã'â‘c«EÚ̵Óaþ÷¸ê¤â2zuî}ñïØ£nÒ•¥-4Kã¸8¡™†®p9ò«·ÏœÏÞ e»( …B1xP)2I¡ÀŒB³¯[ç›F¹#êm”¸rÇhèžû'Kw™¸¿–øâ`iYׯ9Êõ„z’Õï}±¬ÀeÿÌê×lå±öÌ¥d´>~£³ÜkTˆJ™† †^x ÅÚâã߃B¡H{Ê)gú)®—••¢®® ¶ªÀÐEŒ¾EASVÖ¢nd=¥Þ¶ÚlF‘W*L»Ï1YºÌ褙\ÿªã†tãÒŸÿW¿yÕFJÜœ°V[.Eö½›©2µ¨˜{èÖ=1…íº¸'Õ…M8b“0²h¥),‹^˜æX6æec yº).óÁÕÁL7GÌx‘sÍ2Š"ÂíÅлóÌl›VD9ó"Ì}¾ó m0£—ù´ÞuÀ* …B1‘¶Lqq±°_FYŒ5MÃÑæ.ã¹—zðÓ= PЋ£Gú°Ëöxëý�–, ‹é¹—5l½™OËÇø±Œ´Ž~ü…‹Ãøî‡>û:ÑjØy‡ŒÕ» …€WßêÁ¼…½ª²C†LÏ”(;F¡P(‘tÒy§ÚŸ}uµu˜°h¾Ã‚Øzu×waô”5¸vW}œ‡óžù7.ýŹðbÛñ~¼vf-Ny¸oÏÎQ~ì4Ùqrn:¸RˆÌ’qîã÷åˆeáf‰ë¯“WíÖùäQ¦é‰}iég­/ëܵㆸFgÍÔÖQ¶‘B¡P(%0S$…³@0ˆï:'èº}ƒ›M-·‹¸ô4öO§~ÍQ®{Ö“Yýšc=i=¢{9­Ïµ‹îô4öO§~ÍQnnÌ3þ›R1ŌȒdTˆB¡P(ë ™:8íäå剿ži2)XjØm$B/®A~wÄh¾}èj+Ewg;ŠJº…ô*ª-‹NºÙ&;}|QQ™C8–‰Ðlu1†4Gpé¶×ãûàÅ/g c¬û"ÇêÆ‰É´X„X!+ÓbÑ]7©ž…ƒ'?Žâü3ªš]T¦Ys®=«eÝ€?bF£Íc’ù´˜A±­Ëí²Ì&6 ®.‘ÝLKǪ3"ª[4›ÖT‰çÅçÇ)[”ƒR¡P(LìvÖqÚ`R7¾D8äG¶ð#ßû8€æ†ðÛ_aܘìÚׂ »ï\€éÛøñöû|ôi]ݺ¨›Sa¡†IãóŒsÎÇ”Éy¨©Ê­Ú¬Ñ°æÌ ãÇy!!üê±¥¯¤°lúÖ~ì¶SJŠ{g,YÆãOwcU}ïSmæç1mJP¤lWé£ …B±®bÈWUUa³ü‰ø.´ ™2ÌEO–d?Ýóèèj²Oyfõ[ñúPœ²çáð¢®Ì‡‡Ž®ÆŸuãŸÏµ¡±£oS‚WûpÆÞ¥8|'Ãÿ‘ÂdºúÕ;ÑÑô16›Ö�ÙÙ¤Y}Q1¡Y:â0{™ë×K)4K¬gQ×tL«¨Pz…B¡P(Ö!”ÀLá S,F":æ·¯@{¤'¶ÁÍ~t”ë¶Ugt³è¶ô7õkp‹n–ªžÔõÛg.ÑÍ’Õã=Msœ¿ŽTç“^ýæZug†Œ®ŽIe°+ …b}&Z3M&;öòPUYáÇã‡ía“·ê&Ú5®ªÁð±«àË Ã³eM+J2YûôÄ/kphéûØu‡oðÀâ}1kÙTdƒn‰È„­£YQÍ4+j™u:5MøÍȰYå÷VjJK\f•q* ¥!sÎÊÜ¢–YÉL¡™uMö²h³Ø¶PK)ô¿ˆlÂóòÉô¤0ÓÏÒ†¡dø”–‹´`2Íi*”M¤P(ŠÁJª(¬L=zô0Œ¨]Š¥«& ·44FpÛ}ØyzöÞ£ùYz‹‹4ì3£3v)À—ß„ðþǬ\‚¯Y?†ÄD(ô6ć!ÆÄùк<T”k0šy!+*ŠoÃ)Vc= µMÇêú0V­‰`1qÞÙ•hû «óaÇí °ÅfùF½½³ ˜üµwzðÎ{„sÔ§<¢n F*:_“EœWöŒB¡P(*™ä)¦ÎÏÏÖuáùï£ ûô°Ì¶¯núLn÷†•ÕâwÓîy›ãßlS„=¦à¦7;ðÀ]èÌAºl;¥† tèÅ8qRÔ”¦ãßÿÞã¸ïÇ'ñÚÆó[L§K41ŽžŽ¨,v\ܺ«ÐÌ»žŽP5P±xÖ™BPöŽB¡P(%0[ÇÉ4š‡}F/#_‰ô˜ZTÃ¥9­ö4[Þå6cQtp"‹t”ñÅì8ÕâÊc‚³ÞÕ¯YõK[:3Á™w¹Ý`ÖÒ]fZÿÐ@­”ɨW…B¡P(ÖRuЖ”cĈ¡ø|›*lú–9â“"§p  «ªQ7¢Ñ4$t3‘¤@ªÆÅ¤[Â0$NN n•éHOhÖîǸö.üµìQ|?y$žX>³:Ç#¤¨L³‰ç啌.^‰=«?ÄU_˜0¦ÄÔ­“â2žo¡Ñ“Zjôèúus=l”I!™ÏQ•i°…Q‹¢qò!¸ºÜ:7Ÿí¤iÈÍ*ŽQ#†ÏåÈóåÅtU° …B¡lô& «<–QX‡ ©ÃØßæD`F˜ZòB¶Ïž…ØdÃì݇L·¹ÝV~Œ‡ënëHp¥P¶`qXL^HQXO·4 þm±™õ–ïg‡ðÂk=XSŸÛh%ãF.E]Ý&âY’ÞØ1ÊR( Å@ ™ÿ…PT=Òx·ßhÅ|ˆï¢åq{%—¥%,àmfén3cÁ?¿¼«ÚpÊ^‡#µe>\p@9NšQЇ?êQÍf¯ ¡7L–/ÄkO/FuIz¶Ëµ¯Þ…›gÿ'Ô䡯ßÄŽ¤ØºwÚLY–†ðLì¦'ßÇ`në¶1qD4z™å¿Q( …bð¢f Og&fáp_´ÌO4ØãÒ3štG±}ÿôÒijŽòD#?½t”ÎrÍQ®»îŸyýŽ‹ÒáˆÎ–n=örÍQ®ÇíŸNý“ ÆÃçóŠ̲1Ò•a¯P(ŠÁDo:hó­ÐEE…"íbÕÆc1oó5˜øU3ch‰ö¸«½­%(­èŒÝŠÖ¿æŠ[„³ˆ†¸H¦É„f°æm~l¨­Æ_kÆšÚr¼Ô¶-fuÇ¢žáHæ¨\ ËÆ®Ä†Å‹±Sù—S°ÊÜÌ3ÏKÀ¬¦˜¬(hL!‘ª2.b™= f$Y™c=Å,¶¬/‡ȃ/O³Ì5-N`¶ÔW…àˆI¨ª*ÑZ˜“6O¶ D[§'DW8ˆ F0FH@GvßkÅà…ßý|Í¿/~-Åy~ú²O{§P(™Ø5~¿_Ø0S'àÇ«ÑÐ2¹¢¾1‚ë˜QyØÿ'…?6û´ÔϿڃ,Mµ¬„e~æ Ægþûbd #£QXöãœÞu»Q[µS& Û†Ï2]²ÏFÙ3 ¢ì…bÝ%Wùêêjl]´>êž…âûA q¸´ž°êqtÂîÎý"†Ÿæ–ùbåÓkð¯_žƒT0ÂEfœ¾[ÂÌÙ¼7/€o—±º-¹(}h¹›Žöc§ÉØeJ6™~—-ÛÖ3Ÿ¸Ï®| #µRœ0ú[Çާ̈́Ց¦Ç÷•ÙöÑ 'ϲÀNØ¢ªjÐ è•=£ ÊžQ(ŠD”ÀLá ü@ ˆŽ`æu¯N> Á.´r*Ñ\÷/ë’ÛßEpæQw:J·ýµÄ—”発~ÍQ®'Ô#®3ãú†s’tš,* bBõ8£ÃÕí,w’,Ý‚B¡P(ën‘ʼFÑ2"VMu††o÷¬Å¤¯ZKŒ¥é>4¬ª‚¿ „Š­tSª%F€ÂrºŠÄtxF5s‘%šE·ÿ5 A'-~ (‹ S+À¢à0Ìê'ªY†ÎHQܽذp‘¨`#c>ο %Zu š),“ËâfDÌô—~còé±heÜ'.Z™}]³¢’¥(³§È´¶…; ¬/…©Ó¢çÁ(ºšu^”ň#QUYi<+Ÿ¸ é̺­C'e[¨ á�Âzn#¢('üÕNì°Í§Åø~äÍÒ¼”ç ç¦B¡X¿H¤¼¼#GŽÀ„ѳs*0“,Yi37ÛØŸîQ`ØK™ýQ˜5g^îÅY}þü¦LÌÌ ÚÜÁ«oðù×Á¬Åq©˜8êŒ5eee ÛSteÏ(œ({F¡XÿÈDxÆcWO1“ŒÂ,M-,sÝ”¡°Ì¶èy¦º9,ïÉU¯cþ=Kpã¯ÿ‰ºŠ¤ÃÆ#óÅtÜª­[Ç’Æ0š:#èè1?‘é/lLMÊ‹²kß×´6à¸Çÿ‚¯:ç‚>”s†7~9²1=ÁXLhæ½OÊg ývæq‹Ú7EÅÐÄ >ëtYÛö޲gN”=£P(‰(™ÂÕQMÙ¼PUQ³Îa?FÅaqå6#ÐnõÛmC7[5eýv—žv=É¢§‰ã¸r=ãót¯_s쯧¬'½úí¢»Ä—¢!Ý5¨W-¢—)á˜B¡P(éCa6›ë Z‹ES‡ãûé˜ö£˜é¢Ý¥Õ°jy5FŽk0wá¨Â‘™Z‚k2jÅ et2™SŽ�µ¯Ûçëˆ÷õEòP‚06Ô–aÃ’¥æ¶R Â}yŠ´'è‘NÖé“SÄœC^œf¥ÁÔÓ`z-‹sBr‘™-E&Scv/­‚ñ!š–SF.³¢™-ñW¢½n46V+¢ÌñyÙÅeƒ1½Ǿ6; çe7ŠTйÝj|W8•ç¡Ê_"~y Åúôá ¶¶“ÆÍǼ% hj­E®¡ôÕ·A|3+(Rfîº}FJÝaȾF/[Û<ÿJN9&é?]¶"Œw? â«ï‚"]h_QUÞˆIã#¨®®Ï 6_޲g™ ì…bý"•@žâj ä§/Øsô¥V©žPOï„e¶}u×#m»é G}˜½9çnu4~·íÏ)e•,ÿäy\üÑ-hG—8Ç-óJ°ï°¹¶=2ŒiÑ éç±Chö}Ë.Ø`òˆA# WöŒ"”=£P(Öw”ÀLኘ}Ñ<?q”¦› éRíVÕl«Ñ¹6ZVõk¶ú­Â,Ï3¾\sœ¿že=±SÒda´\ϸ÷rÍÞu-:‡GE†®¥qé1 …B¡X_ð-›î(ZÚ&ùyù"BÖøñãðùŒÕ˜üUò»#BŒ¥qk8«—UaèÈføå‹â¬¸hfº» ÌN*Á™×>p[—â3ÄabÙfÃØ·_ĶîØKøWf+w\æ±ì™yÏzVU�Ý~KL¦ÁžS³l³·Ë'bü¸q¨©®6žScj½J¹¶i7œP†óR¥WPdÞí¡ÔN̲ü"(ŠÁM6ö‹Û¶ŠŠ a¿LX0M­; ¯ àêëïBb5";M÷c‹MüžÂ­×ÞéÁêúµbåêÞ˜Ùƒ½vs÷—ðvÎ]Æûðýìþ‰¶6iÌ÷˜0a¼xvN’u¸zmëïNZeÏ(zƒ²gŠÁM.Òd25tyy6:#WŽåz}Ü~i Ë€$QFe™ˆË$èÆß?»Ï}û.;à\Œ®µÁ’ú8÷¹KñqÇwÑóË×}¸pÂbÓ7”püEenûˆ*ôÌ‹+3þ_Õ9y•Ûˆg+Óäô˜ÊžQôeÏ(Šõ%0S¸Bü¯[[#b”™¥£t–kŽr=aÿìê·¡™¦ –±`Ë­\‹nf+ʾ~³ ™,Ãtš^õk SK'ˆe9ò5[Tô3…B¡P¬Ëx¢¥`‰‘ûÍ(fu¨›0_íÖŠ­_^-ÚkMDüÒìñ£aM9† kƒ™@3b‹ff}†ü0/1Y:Û“–Ùì3W±™}{¼-÷ùÎmö2ç¾$.™nŠÂÒbÚ–…îN‹–EbûÛJl*‚1ãýtsÔ¬fE.ã±_T@Oí0Œ=\¤ÐÈ$zÙ@逵ÓìP£b½†¿= Æw) ‡ Gf) źO*!š :ÆÌÇÜ%Íhm¯B_ÃH_>Æko°Å&ùØ|S?† ‰µÑL­ùÎ{ ÞœÀ´©ù="ymM}DDfûòÛêûOÇèeÇv£®®6:Hp Ú-^({F‘ ”=£P¬{d*gšïqãÆaûÕáI¼-w¯"ݨe¹–ÅWÁ'=³°ÏcG`¯ºíqÎ^ÇbdõpôKWàÒWnÆëõ!ˆpܶýŠ °Ay‹¹ן•L æ!ã¿Ñ´™²,Y=îeßµì±ÏÖI6ú¾DÙ3Š\ ì…B±¾¡fŠhä‡ÃtG‚Xj³LCÍa7º[çÉÒQµ\³pÊýÓ«_s”Ç¿PèŽýöÎÀêêÂGÛ{o¶×½bclãŠÁÓ{ äB€’ ! $„@è$„=¡‡^C/6½¹�ÆÜ»·÷*­ôÏ}ÚÑŽ´£ºÒ®´{>kæÍ›ÑH»Ú9ºï¼{?¿Å£Ýaz¾Îoþº<žÔOoçÏiËT)¥b:£‡ðÜs/à–[nóº_Jcåççcܸ±8üðC±pႈ¾æ /¼K—.×¾ìË/>‹P ×y!„D¹—Øív•!K²˜3 ŸÏ¯Ä¨oë[¦œ*àÖÒ”ŒÊ ò apR¹ö‹ž²˜?½šÉÌö9Lú¹ÊfêÛðb6ó|4ôîYÍ,îšÉ¨{<õŽà2”Åyd5³˜¯[ÌŒgt´$¢uwŽÓXÖ™½Ì¡=ZtSš¶ÞjIÀ¹C±ß¸QêgëÙË*ÚÐÜ=í$ö‘`¸”g(LÊ!$véI#999=z$vîù_­Z€î7ñÈP]kÇ’OÛÕRR§2šMŸ€ç^ÕþFõ}ò2r-Ͽ܊Ÿü8Ue)ûv•M™äzÆøNe/“ŸY8èÍAYên¨gé¿ø3ȧ¤¤(³õÔìñøªvv¢Â»Ë˰éÓXfX ÙXæÖص·ÝÒ7«>Ã{Ï~…ùYÓpî¬aÖ˜©ˆŸÿ°.{W¯€ÕÒ]Pe8’ð×q›ÑÍäåÓh˜a¬Ëhæ½Ù¹Ë[G¢)q–*Ýízên¨g!ÌH7d`U¨·µÀÞ)´õñÍ.íèáp2Ó”ný çðhwëìÖî0=Oðç71œù8Oàç·tÿ’áç<þ³³Y<Ú€Ïþ]í%íùÈËË ª<f¬f*kjjVËöí;ðþûK°ß~“qÓM×£¤¤„B6–™òÅ,II‰Z3Æ–bÅQ 8ìÑ]pÎIs–ÊŒÓÖšRT[~a³³|¦€S³™2œuÌPæÖÖi 3öÙº/#¼Î<ÚŒýàa„×ñ•µÌlÛ#‹™Ã‡¦­Ú©ãa‰ë|’¹¬3{™n2{gðh”A©¶¤¤$#!!>f³—1xI"…ü^É„ô?Õ/ÆRSC† Æ’MR¶»Ê‡£·Ù[fÇÛemx{q¢‘²J;nýWú’¡Å[0t°Mé³ÒQ¡è›Þ‚z†D êBbpä¥TôÈ‘#0ïÛ)xÚþ¾aO Æ2C_‡é‘^O¨±Ì³ŸÕaÃâºeXüÞ2¾ŸùÅ3pòä#0cô”ïÕò^~µá¼´ú|´w9ªìµÎv/§ûEž™ñF½åÍh˜©ÌÌ0fqkyïcÜþºòHŒ˜0Ü´üw(DJ÷PÏHA=CÐ`Fº¡‹¶:Õõ¡c“ ›º—s Ìpæv„n‰3\-ã¨!ÎܯÑx~£áÌaÚ¿ëÂkWï[»#èó˜gO³x\¿ÃëyF&”ª’Qž3_ÉXଳÎP™ÊŒ444`Û¶íX¼x ªªªñÝw«pÉ%—âñÇV³ž!„PóR\œ3‹YfFºvOË˱~vÆUã4‹Y”CJÝŠ&3 ¿ Ùí<FoXçЯ»Ñ̨Y|™Ìt“˜©©Ì°èÞG=ú2œ¶mž:ÆmŸ~ÑÀdfb8“·À‡¦ZD6Þ™­3{ e1e}SfväâÀ±£µŸE;KcÆbö2)»Àà%‰$òû%¿g,Ç@ÉÎÎÆÄ‰PS» åÕƒ`µ%D‰ í3l&L˜¶Á×Þ‚z†DêBúÁä“’’Te–I[GatÍlrìì~R|g-ógS;fGš4øègrP…£/î}/hKê»I–T‚1ÙñoáXŒ,,EaVòÓsŸ‘§Ž¨j¬Fec *ê+±©|ÖTlÀƆíØÞº­–v×uz7ÉCé¸`ÄZ ØÅólffmæ},.Ÿšçq]Û;š&š² *Q?SçSGŸžz†DêBH‡3Ò çÀéŽD¤9’ФD­¡ƒ_ã”ÅM×[¼”Ó ÞÈeØa̬æï<ÞLhjŸ¥Ë¼¥;Ä<.פY®kfˆá!˜îÌÛ .4Ã{dÇøœ‘êZuñÞ_˜>}æÍ;ÈtßEý ùË_ññÇŸbóæ-xòɧpþùçBÈÀ¦§YÌ$ƒ™3È™ˆ‚ü<L?ËnAÑÖæ®R™‡ËüÝÔ¢ ÞÆ¡¨¨Y™Ó:]RðÌbæ~3Éü™Ì<Mi£X7³™Ç~À‹áÌK_Ÿ&3·•N“™#�“™Å•¹¬agÖDXâãTÆ2¸²–YœýâÖ¸D¼;t4ƃ’â"$''…%{Y_ÐhkUiòƒaoC^Yý1–ïX‡Õe›QÝ\¯~t¹©Y_8sGLƱûÌÅì"¢#¿gI–xd$pÂ!±HOõ‹¾.÷Ê!C†`ØÐ][µk7O‰ÆX…à ÔÏH×5=|í ÝC=Cz êB&b=z^1Û{`Cg kÆ2êÃÛÉ.‡œ±¬Ûš¶Ò‚v|ß¾ßWlÇŸ¸õð›ì­3k½Ïn¡š¿ ­rŽ9uÜÕÁ­Íc’¡ÃGŸç¡lf÷ã: *{Ù¸)£ÕÏ2Z¡ž!½õ !¤?CƒY?'Ô�¥djmmÃ({.¾‹+ëìÔÙÙ|óÝýIôvXç¦ÿr‘¾Ú-íŽnýC;¿Å£Ýáµpç·¸Ó04Yz½fí×CQ[ †åUÓ±”å,-- ×_ Ž>úxU2ó7Þ¢ÁŒBHÈèzHeÀ/)1 v»C‡•boY¾8±‡>ºIªCù¦ìÚ\üUí-‰Ø»7 Å%͈ó].ÓáÊiwQ¨éÌl†6x>zšÈ,îÄâtÔû�݉™L°[*“©›ËìÖ$ÄÅÇI±QXìNs™²ã«u(íøÚ„1È,.Ę1£4]š¤2Êé?—žÐÛ:Ç®½ÕÖæ€ûKàòæ%ãuŸÁfï0Ý/ËG›¿Æ-<‰ã'„«û™Ødê}âD~ßÒ’Õç‹200‹û¤§§cÒ¤}PYùvW CmC>Hß“—]¡%»1aÂAêgäI´Æc¨gHoC=CHì.ƒ¼Tf‘ÒÑc·À¬ò‰øÜ¾Ê‡ÑÊaö`Ò-Pc™ûÞPŒe^.Àì2Ìû9üËô•9 8¸püšÊ\Û†>¦F3ï¦2³s›•Í\]s0’²'¨Ríò³T½£Ì@O=CzêBH…3bŠºš›[p@ü0¬rThâËn®/v×8§i‹G»Ãô<æå"}ßâqÏAÒÀÏïÞßbhwÐ?ó[<Ú¦çQ¯3Àó¶¨Ò ºÁ,Ka†Šü®Î™3‹€;v¢µµÕ´Lfcc#^{í ¼÷ÞbìÚµKÛnBqqƇSN9 3fLô)Q]]‡zŸ~ú™*Ñ™““#†ãÄOÀ!‡¬2ßô„ŽŽ|øáÇxõÕÿaëÖmÚ @òòr1lØP{ì18ì°C˜˜èvŒ¼î3Î8Û·ï@jj*ž}ö¿*µ¸ÙûpÚig ¼¼Bó¹çžÒ®?„Òß%ÈiDÏbæ,•™)SöŇ5uX~Dæþ¯\™Ç\>-ñPiÛ¶¶DìÚ™®Ý_Z”Ü™ÉL7𩙍fF3Ò™ÞŒdð¶n1˜Ç<ÖÃÛ# çñÔ$®ó�¦Úʈ«\&LMfbǫߡ›ËDÐÅ©`¤%®ó…8:Ñ¿9y˜?u2²23œäÌ^¦)—|p²/¨Õ‚Ißab¯¯ý|ó4µ6›¶ÃÑ—W¤ýŽ&àÇ\„P9ðž_`W]¹Zÿî÷O"+¹ÿ§ðÿó[÷ã©oÞQëÏœy=æ ß×µ¯¢©3ÿy®ZŸ=lž=ëô6Óîø)jZêÕŒèo.},¨cå÷M~ïXŠØ¤§úÅØ^XXˆ±cG¡±i>_¹ˆ¥2û)9iô -1EE].TíËìeÔ3Ñ õ !¤¿‘™™‰ Æ¡¢ºëÛ·¡ õ=4–y¸µ5–uÛò¾áîÏò~rÿæ²�ÊaŸ,ñ¸vÌf3´©CB8ΰ­—Íl°b]ÝÌš3Zü,Z¡ž‰N¨g!$ö ÁŒ˜"æ•Lm@oIñº§ ŸÄíp7<9¼d³ðÔgí.s˜«ÝÃAàyüŸßhâruÜýp]ý}—Ó ýü–î_h‚|öÉ¡‚ŠÁd0ëO&´‚‚×zuuM7cÕÊ•ßá²Ëþ¤ö3–,b:[´h!®¹æ*•Í»víÆÏ~v2}éˆYK–¥K—cÿý§áÖ[ÿ¦ ¡PQQßÿþX»v[ûÞ½ej‘çxôÑÇqûíÿP³ºtÄT'×þù¿DKK nºéoø×¿þÙíüwÞy·ºVáÏþ#Íe„ø,•™`×ÈÍÉÆ”)ñekr÷¶aŸ¥µÎŠ”*çè4™öŽìÙ“†ÜÜ6í^`5>‹ÓTfj4³¸Ö]ø3œ…·6·GO™ÑŒfÒtß§_˜_“™»ÁÌÖžˆÆ²\Ø­Éæ2KgyLy“ãœ×­Ž±`cq6¾1Ó'ODQa*S*ºÔhÞUÃô¶ö±9ì—^øÏÒÿá†÷EWv; 朊“'/ÄþCÆ£$3_•£Ø]_…¥Û×àÕµŸàÓ-+UßÂô®{¹œãÙ•ïã¼YÇâÒy?˜Èï]VB*,=ËøG‰Ì´ŒÜ;÷Ùg‚ú;yÌr|óýÜ�2hH dß1_cpI’ú™èºÆ—a>Z ž!}õ !±C¸²˜ÉãàÁƒ1jøH¶yžíø�]Yááß4¦vø0Œ¹5j,soè+c™Þï”ô$ŒHoDWƒîƯ.¼µcA“åç8·>Àå'aèð1ªü·®g¢-{õ é+¨g!ý̈ OÁ/³ Æ‹¹»w¡ÉnÅŠ¸½ i1<8zXî:Öâ1¦épÓÉ¡ŸßâÒÉ– gÞÛ WdqÎìyºpX,ú[êÞÁÇy²mi^\ª(ãzœ9+V©©é2ŽI61#«V­Æ/y¬V«*«u䑇cæÌÈÎÎRÏ^~ùU•%lÉ’•íÁïõZ~KŒ[W\ñÕO²ˆÍ{€ë</¾ø²2«}ýõ7¸øâKñÈ#]Æ«¡¡çžûse$¦M›ª®·P`CÛâÅKðÕW˰yóüô§çá™gžT³ÒuöÛo2Î:ë <þø“øòË¥xýõ7qì±G»ö/]º ¯¼ò?µ~ôÑGbá „ˆ·à§ç~y”¬YÒÕžìPÆÞñ5uXq” ™µ6”þÐØY&.sW\çikj’ÑÚ‚üví~`ï4’©³²—‹k]ÏŽæÓd`,ó4‘Y`ZÓ‚îmð8Ÿ±Á]¬¸ãa2koMFÃî<­!^•Å´8œ%1-ޏÎr˜q®þ9©xoâpŒ9#GS¥1“µ÷Ï{iÌhÎ^Ö`k ¨Ÿ”[0/Ç”âïGÿÓK'të;<·D-?šrÖWlÃöš½X4f†Ú÷ÏOžÅ¿—¾ªÖÿýÕ«1À|få{øÓ÷ªõ?/:Ì9$8ä÷/—³d ‰IzšÅ̈d·ž={&š›?FUÝFlÛ3¤÷1è *¬Ðb ÔÏÄÑ”½Œz&t¨gzõ !ý3-“””„‰' ¼¼3vc™½svw™;—Ãì±Ì´ûŽp—Ã4öËv¤àÏ㶸÷Õc8žãv> cÛ>f¾Î¬©‡ËÌØg¼úÙy-1ê™Ð¡žé9Ô3„þ f˜@WeÆÈ´©S·2CmYX¿ õ–¶®NF£•ÅÐhœMbqßÕõð8g»Å£Ý|ŠJðç7ì0̱ø½_ív÷o<¡ŸßâjwŽ;ºõ/iÏE^^^PÙËúRòË/¿RëRòÒ˜¬½½ýëuÊ\&_pî¼óVÌš5Óíøÿû¿ÓqÍ5×ãÍ7߯·ß®Ä“O>…³Ï>Ëô¹$ó—”ÄüûßoÄÁ/tÛwúé?Ræ³>økÖ¬Å3Ï<‡3Îî‹Ã?þq»Ë\vá…¿Àyçã¶ÿä“OÄK/½‚›o¾uuõ¸þú›p×]w¸õùå/ŽÏ>û›6mÆwüó礲©µµµáÆÿ¦úˆaí²Ë~BéïøÒ:Á”š·RS’U¹)7üùIvúˆ yå­&&3çͺ¥Ù‚­qÈÏoGzZœvúÎ0•˜Ê]F3c&³®¥óÞ˜›ÌôG;MdÆ>0ë‡.çf:3vr˜Ì Ïã y©Ú›ÒX‰æê,•µÌ"1»¶H3y³´G‡½³Df<P—ž„fAΠBLºŸö~¥ª÷ÜÓ@j¦¾j6u´ûí³§¡ —½ñ/WðRJ<têÈLNó{ì„Âáj^üîÜ©0uN™¼d`#¿ `Òÿñ— DrŒRê»Ýú-ê›rQSŸÒ{ädVc̰ujB˜·Ò˜ÑœÉŒz†ô%Ô3„Äá,ó››‹I“öAÃÒFì´—c£* Æ2÷½}e,ë:Â×é¦ý.-jCjœ ¦Æ/‹ûs ¨,d¾ŒfÞ kU­ƒðmÕ¡˜1s’[•”h,ÿM=CúêBHƒ9�=|›4i¢6Ð732†á’øY8ݾ¦Ù‹‘eOVÂÙ5 êЋsAçâ€ûbèo÷ÒnÞßbXéÈù×i1==¤ó[<Þï×éëüÝÛ=ÞmW¬Ê#ÊâëçÈïA´2ý!æ21‡Õ×7¨mÉÊeäÃ?VYÅ„Ÿÿü¼næ2A2¢\}õ•2d°Úƒ™Ýn÷úœ§žzr7s™ n®½öjäååªí^x Á ¥1ß~û]µ>gάnæ21™uÔjýóÏ¿TÙÌŒˆ‘îºëþª®GLh÷Ý÷ jì±'Ti᪫þŒÌÌLBÈ@ §å³xetJÖþÆf¤§aÿý§"oxÞ;w0ª‹´û¯#q’‘ ñÎÌ\íxµÀ¯ýOFYy::â´{·¾Xœ"Ç mèl“mè} û”9Ëañýè¶Äy´Ç™÷±[‚h÷½t´% jS!šöæÀbÓÞ[‚zDG<¶¸®ÇÎ¥ ‰x}Ö¤ægcÆŒýÕ{œ’œŒÄÄu?3+±àëg ´Ù­èpØýöûÛ’ÇÑÜî,Ó 3c ^‘R |ó^WtÞ¨i¸úÐsA6òû'¿‡„Ø$Ô7o1€±cÇbÄðRì7v™vmé佞2n)F†qãÆ¹Úƒ‰Õôeö2êÒ×PÏÒÿñvO9r$F Žãæj³<TÓá¶Ò½ŸéA†5‡Y÷~Íeƒ;^Oå:³‡Y¿QÈÀ™ÃvZôˆpo³˜´uÛöÓfñœÍ‘„OËNðá£ÔÏÊ_i̾„z†ô5Ô3„þ3˜ p-5qâ>jæÈºuë‘ÑœŽ)ö¡*+T¹µ;ª±µØW‡VK‡:NÎh1ΖpiI‡ù$ ý C»pKæÞßâÑîðzžàÎoñèïð{žÀÎo1ôw|ßÙÙ´alm yR¶³Ä…Y âþ€”t”¬aFšššTYÊ>úX´¯TmR¶ì§?ý‰[¿wÞq¶U†1oÈàõ|n»íNUþrùò¦f4á”SNòzÉžvì±Ç¨•blÛ¸qÆŒ@xï½Å.c›”¹ô…ì—ŒkÂÛo¿ƒ /ü¥ÛþñãÇág?;<ðoUºsÞ¼ñÄO©}'žx¼*íI!ÄÿLZÏR™‚] d:Ò1sæt|ÒúÞ=8üÑÝn™Ì¤ ¤];&Ρç³ µع;ÙÙ6dgvÊdê3H‹± è´˜wõï¼&KiæYÊ<=ûúZw¾ ®kpo‡)Õéh¬ÌR&2‹EÊ_:Mjª,¦!s™³„¦m©ñxiáp´ÉÂg#?/Éɉš®Iôi. ¦4f_5[:üŽö6TáõµŸ©u)œzÓ‘¿ :xùCåv\øÒ­°Ùmj{|ÁpÜsÒ¯y‹¸›«v©²ýê>l¬Ü‰»?{Kw¬EMs=eàØ‰áWsNFZ’y6ÝÆ¶f<²ì ¼¿a¶TïA‹­ ùiY˜QºΙy´zÔ¹ûÓçqÛÇO¹Ó’GÕ"Ü{òe8zÂ\·ý+woÀ“ß¼ƒeÛ×bOC%R’1$» ŸŒŸÍ:ƒ³  v×WàQíu}´é[ì¬/SŸ•1ù¥8rÜœ5ýHŸ?˺ÖF<¾ü-¼±îsl«Ýƒ¤øDÌÔÞ‡?,<ŠF \Èïar\"!ý‹PJeŠY~öìY¨«{3&~†¥«ç£Ý:0³ ÷‰ 혾Ïç(.JÄŒÓ]ZÒÁè›Þ€z¦ ê™îPÏB< g™o‰çOŸ> 5558²n6^ëøÜeÚ ÈXf²'hc™)†~¾_ô±0‡Ÿ..£š—.cºaT¥¾ó%C›®ï}üe8ÓMf³>|¶÷$Ø“G`Ú´)êgå¾Ì^F=ÓõLw¨g!$xh0#Ýð&ø *AII1ÊËËU©@ɸ”ÜœŒ¡(ÀüŽ´YÛ±³½›µØ`©ÆKcWåHƒÙL ºÚ½ Vzªiv—yËÕÞ%<çwtÿç·ÚAŸÇ¼ÝâqýŽÎ#»JÚ³P<´P šÝ#Öøè£OÔâ‹ Æã¦›®GFF†[»¼1HKgša4”Éqf³ÌÌ Œ5Ò×iÔ_1˜ b2 Ô`¦_«þ÷ߚϾãÆENN6jkëT)L3$Ú'Ÿ|†µk×á’Kœå0å3ü»ßý„2Ð$x鯯n2Kê4çdgâÀPÙ$ßý)pøc]&39Z=Zœ™Jã,Îì£v{jk,¨oˆ×Ž·!3ÝîV³ËDúC·ŒsXMÍfº8Ð㾌gƲ˜®~+^'»z=Þ¢¶æ$ÔWfÂÚœ"ùÛÔ5«ln’-ÎùúU9ÌN“™´µ¦Äã•C‡¡±$sgîÜœ¤¤$#)1IÝÃpì+]dutøíóòêÑÑÙoþ¨i˜5l"‚A ?}úzÔ·5ªm &>öW!+9üi÷;´_ä/·­ÆOŸ½m¶®àì–êÝZÐñ9¼÷ÃR¼xöÍHOrϨ+Ï3Ÿú+Ê«»]ûëë>UË•‡œ‹ŸÏ>¡pˇOâ¾Ï_r}n¹> ®-Û‚g¾}œò'4r ÂÉ»?|…ß¼zZ¬mníL•åñ¯ß¿ôgL*î®·TíVïãöÚ2W›œçýËðùöUxî¬.ù=$„D/¡êoë2)mþüyx÷ÝÅØÂX¶fžö÷=$üÄÇu`šöäY1oÞ"· á(Ù[ú†zÆ õ õ !$ü¢]ÒÓÓ1{öL4ÐŒ Ôâ Ûj·s˜ª$sYPÆ2Ó>î;Âg,s®øy:,LJÇÌ<Ïìen'w£™ÃmlÎü8ç11š­¬^ˆ-ûaáÂêgÔõt=×8‘€zÆ õ õ !„„ ̾“-<Š‹‹Õ"ÛÍÍͨ¬¬Ò–J•Ijœ-cƒp¨&jÛ›±ÑZ…-¨Ã–¸4X¬&Ö=³—Ãs\3d#—GJ0äÐÏoqii‹ÃcgÎo8Ââ0œßÿy†tä©úöÉÉÁÍ<îO&´3Îø1.¹äצ³åwS(..ò{ž¢¢ÂnÇy’——ÎS‰@ÑûŠq,ltEEEÊ`¦gpóD毹æ*œvZW64)éÏhG! 3ä+Ðé¼ßˆYÌ\íoöÌÆgŸ‰w~ Ñi2³tÎè”%]å¸Ö0;6;ªª,¨­³#'»Ãi4s=¾X ëp­;[=Ífîû]›€wÙq½ë…»GJ»ɺ›ÐlÖxÔWe¢¹.Íe,{̰µ(›ÅUjÓï4™Ie‚ŠÂ|pè 4ÉÂÜÙ30xP RSÅ\–¨Ê‘J kãÏÃѨk¬vÿ£eÛ׸ÖOÚw‚Afžûì jF¨©-9ý/(ÉÌG$hµµáw¯Ý…¢Œ<üh¿EÈOËÆw{7á…•KTv}ùVÜþñÓ¸ÊPúA²ý]øÒ?\ÁË™C'â¤É ‘œ†µZÿG—½Ž¦öVܼä1Ì(iCÆã°q3µ@l¾x|Ëw®SÇ+† 朠֧ ã:ÿ¿~÷~þ¢Z—ß¶cö9³µ °”X¼q>Ùü:ÿ%¯Ü.¼7èÙÇÞëúå‹·¨×'Ï{èØ™˜1tX;lÚó.Ç7»¾ÇžúJœóÌõxëüÛQžã:¶ÝfÃyÏßà ^JÀ÷؉ó´Ÿ[~¨ØŽw¿_ª£míüBb“@³Ñ{®geeáàƒçãý÷?ÀÔ _â›õhš&$|X,vLÿ ó´×ƒ‘mØø`k4èêêêBH°šÅÌ×~ãzII ¦LÙ¶¯;P×€õöm¡˺5o,Sk>‡Ñn |uƒ!’c¾ßIŠ6„{íØØTff³¸_[÷ã8w§Ñl{Ã|W½ûï?ƒ êêÅå¿©g¨g¨g!$¼Ð`FLñ7تo‹YeØ0Y†ª}uuuÊœSVV†ÄÚ:"³::ºÊiÚª±ÑRƒíqõ°Y uÏF+ãȨá|—‹ôÕnñhw˜öþü†žƒ±!ŸßâÑîþÄáñ´R†*#QJŠûlObÙPvÇÿÀ¼y¹µ}øáGøÃþ¤Ö%C—·RÆ/¥þ0d{û²«—°ôEGGÏ„b ?«@ú-[¶Üm{ïÞ2BÈ@¥'f{ã~¹_ÄÇ;Òiî–’Žs˜…¯–®På2§¿Uqß5†ë®Jfvf3“m»2šÅ¡¦ÎŽÜ줧:´ó;ÜLc®le.óW—[¬Ëlfì À­­ó"÷ëñ\×·ác[oÔþoo‹GCM:šëÓ”‘Ìi-‹sf-ëüOåqstší´ÁkgiL ª8¯ž0 ¹iê½+).Ò´L’“’´{z¼Ò6Æ÷Þógák;Ð}‘Ææð¯Ö•os­ï¯ït¶VïÅ{–â°±³0"¯¤û¹µ@Ù¯^¾U;~«ÚNˆKÀ}'_† …ñzïf¼¶ö?i¾éìÌP©lªÅDí|ÏŸu#Ò“SUÛ™Ú2äüZ»á¥UâŠEgk×ãüù­Ò®EJD¼|ö¬ëgqê- 6Î9§?ùä¤fàk-è'L)? ‹M ŠêÌSµ€©,ž|¸ékÄ[âÕo½ÌF]4fºkß93ŽÁoÿw^Yý1ª[ê´ÀàW8e¿ƒÑS$hyù÷¨GyîûOý£ösêÊz{ѧâ†÷Å¿—¾ŠŠ¦üë³pÍáç»öÿgÙkª …Pš]ŒçrƒšÙ¬#¯ùìg®C³x üB¢›`ô‹¯mãz~~>æÏ?Pû^ý1&^Õ§kûh2 b.›<fŠó+´8Æ<õ^wíó>ð­ú†z†z†z†Nüio}¥zI}}ŽÞhC­6Æ´ÇaÈÀäÅæðºáÞà0ÝoÒÏ{ÈÈ­C¸ŒezÃÿe'`PZ‹a€¦2³>x¼�ël«l-ŧ{OÁ˜1c0~ü¸®Aè–¾ˆÓPÏPÏPÏBHxa‰(Ì„] mž2ɦ%%çÎ=�‡ºH•ú1b¸j–Yˆ…YcqNêþøCÜøqÇD̲ BAGš|tåìpè‹s�VÏúÑÕÞ¹úÛ½´»ísµ[ Lž7¸ó»®Õu¯ç þü÷¡«_ª- cóGhÑSƒU°b=–Lh .À´iSÕú·ß®ÄâŘö+,t ²²r¿ç4öÑ󤪪گÉLJÈê³™ùCï[SS‹övÿ³"ôçñv­Ržóî»ïU뉉ÎÚî·ÞzvïÞB¨ô$èe,E-(1B‰!*%9 y¹9˜;g²‡äã‹“Š±ff–ÓhåˆGœk‰ë\œÛñz;´�Œ-A»Ç$bûîTTÇ£µ-®óþç¶@_GœÇ¾î}Ýúö«•búÒ×]Û–®m»Évg[c]*önÏÞ­Eh®ËÐ^c‚zòh±Ç«×, dÝî|”ÅÑ¡=Ÿ5ë&dãÕSK‘98Î…A%E*sYjJŠzOEÓßk_?“hÆá;¬¬¨kë2"g¶žóìu¸qñ#8ñÑ˱¦l‹ûy5xÅÛ÷«ÙŸ‚ùþ~ô…®?þf<ðå+¸à…¿!Üüñà³\ÁK DN(¡ÖkZêÕÌPº–×ú¨ü!®à¥Îìa“ðåÅÿÆ×¿} ?›| †‡~tVþîq¼|ÎßÝ‚—:ÇOœïZßX½á`éöµØ\µK­ŸµÿnÁK?|¦ëçùêšOT°SçÕ5»Öo<ê·à¥0£tüjÎÉüBújÉ81þA\¸ ûïóâm =#>^Êb~‰ÁE»pÐAs1xð`×¾h5Äûƒz†zF ž!„K¨eŸ½'ýfΜ‰aƒJqZÂ" 3;¨Ë°åns˜n¸78Œ‡wÃÐÏ�²–9º?•éé|ôó¸Nù/ß‘ŠËÆlô,ùNÜ6L¶½´Y,è^‚ÇÿqµmÅX¼ëL—búôýÝ&뻟ÞÿÏÓßqá†z†zF ž!„ðAƒÙ�"”Ô´šÌÌÚ¤lcII1&OÞ‹-ÄÂ…ó±ß~“1dÈ`äefcJÖPœ˜5¥ÌÆo0ÇtŒÂ¸Ž<$É $œšZn÷¦&.x1kÙn‡ÅÃÄüyì¦íÎë´{Îz|þ.³Ù`[. òóÜÊ)Ær¦²`ùío/v½Þ»îú—Ê’çÉèÑ£Ôãš5kU9W_,]ºÌµ.&I3äë×ßçéÊ&æÊ@ÑŸS2 }óÍ·>ûnذQÑý5ÜÕW_‹ÖÖVUôw^×JÔõÿõ¯×”‰Bˆo“™Ó”ÉLÓ;©©)ÈÎÎÄܹ³1fÔ0|}LÞÿQ1Ú“â•‘K7]YÐe*sšÌÔ¢·Yì hjLÀî½N³Yen63šÅŒÛ3™ùv÷6ƒ)Íh2sÄu3—55&£¢, Û6¡joÚ›S»LeF3™£ËPæZ×mŸ.*ÀGG#whagæ²b¤¤$«lpR3XsY¬ÖêX;³žªÜo&—[ÛÚ€3ÿûW· æ??}ϯ\ìÚþí¼Ó]3?›ÚZ\%êZn¦™`Ú>¦°Ôµ^Õ\çZW8¬3“ðòªñÔ7朗FzZ2"#9Í­,ƒN›ÍŠe;׺¶ë[š–lìÒyÇM:È´Ob|"ŽÚ_­KPwc•3xZ­­¯ïœÕ\˜ž‹}<9iòBˆ‘`ïwfÊ2dæÍ;…¹˜>ñS$%¶„FbB;¦ïó)ŠòÊÕ„Ë¡C‡ºöù›¨éI¬éêê3¨g!ÞfŒÊ¸.ý:è@”äàÿE2Ñcc™©ß#Hc™#0c™W{‰É…ë›܆Ä8ãQÞŒfèÞÇg›%£Ð`ÍÅû»~‚ÔÌÌŸ?Ï-ÙA0†²hŽÓPÏPϘA=C!æ°D&q#Ò˜¾ÚÏ4Ç:Æršb¢©©©Qå4+++‘T—m¸hímÖvì²Öb“£[P‡q ÚØfç9]§všÁ\§÷TûfÙ|jïº^çù!žÇ³ÝbhwÎêu#P„ôô ¿å1ÑíR¢À5&MšˆÃ;ï¾û>víÚgžy?ùÉ™n}Ž<ò|üñ§Ê|öÜs/àœsÎ6=—ÍfóÏ>¯Öóòr1cÆt¯Ï+ç¹æš«L÷Õ××ãÍ7ßRëò{>jÔHм–;ï¼[™¿ž|ò)Ìž=Ëk_Ù¯#¯Ñ“G}«W¯Që¿ùÍÅÈÊÊÂïÿ[UVTÌkrüÙgŸBˆ˜i_û¼•pÐ3™)S½#ѵoÊ”ÉÊü½!~ ^-NÄ!ÏW ¿Ì9`kQúÅŽ®  v‡³´¤´«9ª»s݇†ê¤l¦i©¤¦8´s;’äp›÷jVÓüѼÍâè´Ù,hiIDsSZ[“Tö1‹^Óø¯ÃP SÖ:·-ç¶£s»1;oŸZˆú!i7j&L‡ì¬L•¹,9)±_šË,ÝÞÕî”dæaGm™ê·«¾Ãsåî=ùrœùÔ_UðKb>yÆ5*øõÏOžuÚ”Cñ-€©³·¡«LH~Z ÍHOêš5kíèÊ€#ÁÉŸÎ8.íVüù­ûpÍ»ÿƾ%£Uɉ9Ã'aÞÈ©HNHDOØYWŽ÷7,Ãú²mØ\½ »ë«´÷¢6{WÙrÂÃ.à àSÿs@ÇT6Öa\PnøùLôQ£4»HÍD–€tO± è~BHðú%Ðýò½õàƒhß›?ÁÌIŸ`ÅÚÑÚž 8)É͘¾ÏgÈÉjżyóÝ2—yÒ“×¾Ð7Ô3Ô3:Ô3„`‰D™o™àwÈ!‹ðÞ{ïãô†Exªí}ÔÂüãðºaš1Á`Vó÷7Bå0M“â3qjéF˜YœÛ½Ù[/Ç·U“÷ãÄ\öÞΟ"!m-:Øk²ƒ@«˜iC=C=£C=C!᳆¿À£¯ã3óX F3c» ²RÐYp<ÚÚÚ”Ù¬¬¬L=¦YS1ÆQ¢ pZÑdmÃF[6ˆáÌR‹†¸v}lq{P¿nOÞÕß“ Î\¢NÍííüðÛnñhwtëïïü²99{„Z—/Vž3s$–¹è¢ ñÁ)ÙÃ?ŠãŽ;F•cÕ‘¬y0—r‘>øLœ¸fÍrO•+†®ë®»;v8g/œuÖ^S< o¾ù6fΜcŽ9Ê­]ÊZ^yåÕhltÎÀ8ýôu;V/UÙÐÐÐm_aa!Ž<òpuþ/¾øJ½žóÎ;§[¿—^zEõæÎÓÍÄöÃÔkÕ÷~ø¡ïÅ5;ý“O>Ã}÷=ˆ˜ƒ±c»Ï(!„@8MfrÏpþ}·(ã¸hœÉ“'!??ß|û^ûEöû ûR§Œc΀‚Ýu‡Áhæ´u™ÍÄè® iö8479ÐÔÔÙ#Îi4KÖ–„í1Ñù˜˜àÝpæ #UCÓYqÊLfUqhmIÐîg’q,®Ë@&¯Q7ŽìeNä4—¹ŒfmŽNÓœl73ß,ÌA\N*¦Mš€áÇ"#=MÓ/IªÄhÍ\–`‰ƒÕÑá³Ï¨¼!*€),Û±ÖÀœX<ÿ=ãZ· æZ³ÙÚêúÉÎ5 7ù ·ó­ØµÞµ>®`¢«=O ¦fã?K_S¯C™_k×)Ë¿—¾Šœ”L\¶ðLœ¹ÿAŸ[Ê=\ñæýøhó×݂ŠqñSPŠ•á)½ #?`ijw"ë[»²éf¦¤ù<<Ì –2Pu Vr™2XûÑGŸ`öäðí÷³Pט⟜Ì*L· Y™8øàƒ;c\]„k൯ žqB=C=C `Æ¢Õ.’Äà°ÃU&³Ÿ8ŽÀ3Ö%¨ÐÆÌ [nk1b,$sý¨JVÏ&}<̘ !@S™g‹aPÊЯ¶=ïï<–ä"¥å½ï:$pã‹ÞÐ?Ô3N¨g¨g!$\Ð`6� dv«`Ö'ÐÌeœGGö‹IJJgÊ"Û’ JÏnVUUŽLìo¦ŒDåÖlê¨VÙͶÆÕ¡Ýb‡FÙÅÐh¦¡Ýú;Û]î¦ý-íÓó8<žÚÿù äèn63;¡-¥ùƒUi.Ý Õ1«&´Áƒá´ÓNÅÿû4•±êòËïÚ/3j®»î¯øùÏ¥ `]ô[e¸“YffvîÜ…W^ù¶mÛ®úO:E̼1~ü8¤§§«2“‹/Á‚ó‘••©Ìi/¾ø²Ê¤&H)Øýè”nÇK ¡ºº<ò˜:ß„ ã‘—ç Þ_vÙïT†±={öâÞ{ÀgŸ}#Ž8 EE…êó°dÉ®œ99Ù¸ê*÷™ò¯ºê•‘-]¼¿òÊ?¹í¿âŠËµóŸ¡LpRBóñÇv™Þ!„tŠÉ,))Q{´ >.^ÝÚKK©¿Åß­Zƒµ‡ÆcÛ¸tÌy¯ƒ¶KPÂÒé&w7š)C™Ãi2ƒžÑLÎJwèÿÁî€d²ooí2’×b4sV,0f)sÞë­6 :lÎ cz»þŸ¾gÈF¦J|ªöÎ,f®¬eÎLeΣ⺠g Ù øà¸<TŒNG^n6¦MÝùù¹HKMARb‚z¿d1–Z啕,šHÔ~ô Þ˜?jŠ ¾ ¯¬ù§î·ÈµÏ3ˆYßÖ5+{Ÿ¢¸ï¤? !Þý«ÜË«?r­0b2¢xí³qñA?Â/8Ëw~¯¶¯ÁŠëU°µYû%– æ•oß”Ädœ2yaÀçµuØpæÓ×`sÕ.µ=*;û £‚a´¶½zï&üè‰+N²S2\ëz†u}QšU¨³RÓ]mþJBÔ·…§d„üBúÁN Æd&Æ(ù®,Àg%}ŒM;ÆcóN)½›±‚H#rdhñ&Œ±Zûnž… Ñb ™}Â3ðJÿpA=ã„z†z†~‰»xÛ'F'ɦ%ñù3Ãóí`*:{zËÜ›<茤ø•WŽnCL^N3ÃX÷>^úu6•–ŽýrÄì„a̧ÑÌÛy<Ú,çÖþ¯jŒÅ»Î@Bj!=t‘éêܤ¿¾ŽãPÏ8¡ž¡ž!„pAƒÙ�%À¤·>=É\ˆÙL¶³³³Õ2zô(e–©®®FYY¹2Ù$7'c( pÖÞÚÞ†m¶Züà¨ÆÖ¸ZTXZ´qM£˜VÏà4v¹4³Ç5˜ék“v—9ÌOv3çñ}~ÿÙͤi¨-G•r4+ Y=ÂÉÏ~v^{íuÔ×7(“—ÎFŒîڿモpÿýÿÂe—ýI»Þ~û]µx²hÑB\{íÕ>³—É©n¸çw ¼Ë≔×üÇ?n6=ω'^xIeM»çžûUÛÿø—MÒ?ü *e¹fÍZ¬\ùZ<‘¬e·ßþ•õÌÈý÷?„M›6«õßþö»í/**R%3o¼ñoذa£ÊdvÉ%¿!„ DB)'åËd&è¦]Ýt&ËœÙ3±yólHÙŒw†¤`Ô×õÊh–Ô&Á-§ÑÌ™©Ì™wLÏcæ°Hf°®R˜.s™ëšÇ<u®Ûm@»ÍãõˆuYW»Á`Ö™µÌâèjï2”™¬;œYÌtcY[RVÍÎÀ× ²‘ž–Œ}FŽÀ˜1£´{\:R:³–%&&¸²–…Ó\M:'Ñâ?ptÔ„pó’'`Ó~`ŸnY©øÖaFé>®ýžALaPV9ý/ÝÊ!,ݾ_l[¥Ö“âqÜăM$j×tÀð}Õ"´Ù¬¸óÓgpßç/©íû¾x1¨�æ'[¿s/眆‡O¿RÍŠ5b³Ûneve¦IIHÂøÂÀg"gteZ]¶Éío‡‘M•»ÐbmC8ä÷[:ðê­ÍÓd&èÛò}tÑ¢…øê«¥ˆ³¬GnV5Vm˜Žvk H‰ í˜<f9 óÊÔ$ÉÙ³g!5µ«Q(™Ê¢5ŽC=ãõ õ !$xz¢]|éÑ-Gq¸2™ý_í"¼Úþ)6Ø’Âm,ë:Â멺Îé³~ iŽ$\3Ö3Ó“SY@F³@ŽsßÞÞ8Ÿî9ÙùÊÈç-s™çv´jêw¨g¨g!¤§0'#ñI(P,ô&(½íóܯ÷‘H1ÆLž¼/>xZd}èÐRdgfaRÖœ˜µ/.J™KãfãÛXìg+Bš=Q}IЇ^ÕºZœ¥›Æ3»Ã¸Ï¬¿ÿv{g9¨®%´ótow^g×ùíã’«Al½<¦¯÷³¿“••å*%ÙÑÑ;K[Ÿ)SöÃK/=‡ßýî7*»˜˜ó体ò™‡vî»ïnÜrËÍnAaoÈïâ“O>ªJ`T¢²¤`Ö¬¸é¦ëqï½wu›¹¬3nÜXüóŸ·)Ó›|1ƒàÞ½en}Ä4&&³¿ýíFUâRŽââ"õ’‘í¿ÿ} ¥¥CÜŽ#Ú“O>¥Ö¥ßI'`z Ò.ûé/Ó!d ŠaÉ[0M×.r–Ì\©ÚßøôÔde¦kÿÇ`î³0|è`ì™›ç/.Å×å¢=)AeSYÂñˆÓy´À¹îZ:·ãÕv‚ö˜ ÚâõõÎ%ÞÇâÙG?¾ë¼ñ®>{çuè‹=ÞÕ†Îuè‹j‹ÓôI~˜œ—~QŒ5‡åcPI!fk÷›‰Ç« fò^È{"ï¼GýÙ\&¤ÆûÏ:8«'ì;ϵ}Ùëw£±­Ù­Ä™7H-ž~J2óÝúÈlÊ?¾ykû„}ç£0=}\—fïûâe´ZÛÝö%'$âòg!%1Imo«) êÜ»êÊ]ëGís@·à¥°r÷„›ƒGOw­Ë¬fo¼¾öS5Xµ:¹©™˜P4B­W7×ãƒM_›ûâê.ù=$„Ä=Íák[¾ÏŸ?Ó§OCq~æLþ¹™• Nr³*pÀ”%(.¨P±y¯ú«¹L ž¡ž¡ž!„„ƒžÜëüé–Ã? CK†à”¤…X˜0 Ή|ðáô Ð\Ö9`ãõTúé\½˜Æ<Ìe&Mn çÆ!7Åê|n™d=·}µ›9ÎâZVUÍÅG{NEnA‰*E¨¹ÌŒhÑ8Ô3Ô3Ô3„^˜Ál�ã/sG ý¼e- d¿§ˆ $»™ ¢vذ4e’¶šš”—W¨rš‰uõ(D6fvt ÝjÅNk 6ÙkT9Í]q èèVÖÒSp;àYŽÒâÖý½µ[Ü3“…PNÓüüÚÀµ6»oÁ(õÞˆñ¨§D£ M²É(RÖÒWiK!##gœñcµ˽÷Þí¶““£ÊYÊ,0G-¾ˆW©§e 1Ñ-]úY@}=_!„ d™ÉL_—¿ãÎL–µ‡ä¤DUVYÊ)ÿÃf|T ÖÎÎÄį°ï²z$µÙ¡G-ª|¦3S™^6ÓâšåêÜç”,ú5t]‹·Wbé¶Ö™³Ì#“ŒÙÍžmƬe]?LIÊùh/JAvVÆ ¢²m&'‹Ñ.Ye-“²Þb,“÷Å× ×þ`.’ão‰C‡Ã÷,Í?Ì?ï}¿L•XØR½ç>w#=í/HO 濼×ôøºÖFœÿüÍÚ±Î2ÝR"àò…g!¸ý£§ñèò7Ôz›­¿wºÛþe;Ö¹›¥ÙîYYSâ“]ë{ê»òÓ²]ëRÒáÿ¦æ¶_f™Þ¯N½‘lìÉ{h$ÉPÚ¢®Õ½ÂÜ“1,§ÛkËðÒªµíýºÍìýxó7¸äÕ;`×~ö¤þô×÷#Îâœ×u¤ùX_¾U­ÿåíðüOnÀì"×±_n[ÿ,ýÂüþÉï!!dà¬vñÜ–{õ„ ŸŸ¯}Ç\Ž”äO°«|(6lŸ¬ÅY’1‘¬e£J×aÄà-JÏÍž=WM FÓ„¢qúêêêBHoŒNñÜ–ñ‘ æ;3°n³ éxÓö%¬cZwCÌ$c|˜Ê\;ýô31–yßïd%¿¹Ý¹áJ6Z2çƒa€ÊÏqV{>Ûs,v4MÄÈ‘#0kÖL•øÁÕ3HM‡z†z†z†B fœ`Lf‚?#™·>þö{½´ååå©¶¶6ÔÔÔ¢¢¢B•ÔLmKÁG‰*³ÙlmÃV[ 6;j°ÑRƒê¸V]ía8óQNÓ‰ nçñl÷pŒùíïýüClÙ(Ì/Ðm“º½/ÁØB!$|&3Á˜V]²eÆÇÛ”É,A-8—4r¸Ê|¹}û.lß±ßç¥bÝœLŒþ¶ “–Ö#³^‚ æ2ç &3è6G—™ÍùŒWàpמ¯Áð¯{‹ÅÝdæ0ÐL fº©¬=9«g¥+s™mPRS’´A׌5éHKMuf+KHp™ËŒï“çºÙ¶·¶`ö÷%éñI¨·µúì#%n:ú—¸øåÛÔOpÙŽµ8ö‘ßãÇ^ìVŽÁ v]ñÖ½*ð)HìoG_³c…3§'¿~G•˜¸ó“gðÝî ˜7j*’’°zÏ&¼´æCWߟÎ8ÚíØ‰%#\ëO}ûŽ §'¥¨Ù¿ ‡ãÀ‘û!MÛnnoÅ ß-AEc-Žž†´Ä¬)Û‚W-Aj¢÷’nCs»Êˆßññ³ø¡b?K[‚ÀYÉ*¨ü}ù6\óî¿1*Ξ~âãâpëq¿ÁŸü‹ Pþþµâùïã€aûjûâ±zïf¼óý—®Ïë¯çžâ ^ çÍ<Ï­|OýÌv×Wà°‡~£JqȬç Ú5¼¿aÆæEuK=*šjÐä÷Ò ·AÞl[ T’Aþ믿Ñ4Í^åíŦû`GÙ(•a} 2£$;&Œ\…ô4JK‡cÚ´©Ý²ŸGÂ\-‡z†z†z†‡òÖß×¶Ä<ÐiþŽû:ƒâóðJû§Øk¯FÀËàpÉøê¢¯„ÓX&È]ÿÏC›µ¿ÃzdÇѵÕÌÀ—ÑÌ› ðW6³ªu>Ù}"šì˜2e_Lœ¸Oç¤ÉÎa6“õ…Æ¡ž¡ž¡ž!„ðAƒñk ¶o0f4oýBí#¹%%ÅjÙw_êëëQYY¥²›UUUcŠ#“íC`µZQnmÀ¦Žj•Ýl›¥mqÎó Ks+Áí%»™¯,f®^?ÙÍœ›¯ç1knÏCvv¶«<&!„BzN8jmú£˜Ê$0gQëÊl¥=J™äÒÒAرc7vîÚ­yiX?7¥k0l} Æ­–™yzÐavf3ëîÒÁ¯3‡g3‹G»žLßוÉ̘±lÛølÕ–ÍÓ3•Ù]2” +*0ËR´àn’´�¯þzÅ`§¿7ÆGÏ÷-¶`ö÷5™ ©~˜Â±û¨Ròÿõ‡ÔOT‚[§>þgÌ9ÇM<H dNP³2[míØÛPov}—V„/¶­rC‚d×~¾ †E c ‡jØ‹pÙëÿRAÌ%›V¨Å“sfƒŸNw`Ž+¦^Ë[ë¿Pe _ñ¦j—ࢳ’ÓqÓ‘¿Âï´�¢?ÚüµZtòR³qÓQ¿Ä/üÍôÚä}½íã§ÐÔÖ‚õ[Õbst¨s §O=}õªúyÈ,ßÄøDüxÊaHÒ~§g Ýœú'üöw¨ã%,‹'tÎÜÿ·6)=ñðiWáìg®ÅŽÚ2€}ñ»\û3’ÓðÏ‹ _¾µÇLùý#„ôozÃd&äeÀV2°®Zµ)É«QR°ßoŠºÆ\ôg²3ª1~ÄJäçÔ«Ì>ûLÀðáÃÜ\…þl.¨g¨g¨g!áÂ_¥œžèY7n,233U6³s›ŽÂ'ÖUøÌ¶Rû 8Ü*Ñøêæ3k™‰“Ìá·OW¿é‰Ù8jÐfC»‡aLù¼™È|Ï m®¸R—ÎXW3+*AJjÌ™AƒJ"𡵝4õ õ õ !„„̈‹`f‘c4 G¿PÊiʶe=z:::T9M1œ•——#¹!CQ€yZ{k{vYëð½£ãªQai6Ñë–Îr—®'ñ¸�Ïþæí.ó™Iv3çù>ϳ_ÖõÚÄ`æKì»êe_´ÌB!½I¨µ‚YSß'‘R¶A2ª*£™Êf¯ Ò&©Û¡Cc÷î2ìÚ½µé©(›ÒŽåG·¡tm†ß‚AÛÛ %4®T§Æk $"j4™Ídt•Ê4ͶŽMÁ¶ )Ø11 ŽÌdíº‘¯é!ƒK0dÈ ¤§K³í5:eb0s–Wï?½ÊÀk, 3RÐ@Sf_æ§eáŠ7ïW33…O¶|«HÐëŽã~ƒÃÆÍB´qÒ¾ 0uÐXügÙkø\ ¸J9 ¦çbÖ°‰ªt‚·™Àÿ<þwWø^Ñ‚µ»ê*Õì×[›kÿ‰ûÎÇȼA¸ÿË—U9‡Ú–Fõ.½?.wºlóz]2‹ø©3®Ãß?xk÷nE[G;ªšê\û/[pR“ñ¿5Ÿ`—v͹Z°}g]™š)+6v&_p7žúæ]5«uW]…`nCQFf›¤füN.múÜrͯŸw+]öÞ\÷¶×íE’ •ã¤|Ƙ‚Rôù½K°ÄÒÿ —ÉL0Ðzn—–AQQ!6l؈7¡ ÷TTg«ŒfÕõEèOädVaäàP\PŽÔÔŒ1^eòðœäê�k¬è©g¨gÌ ž!„„J¤Mfƒ¡‡.Âòå+°pO<†ÇãÍö/Qí¨ïþ„á(‡ÙCc™èˆÇãÊáÓfœPpÙL³6çyêÚòñÅÞ#QÙ6ƒ´ØÎÌ™3‘‘#ýÅ\&PÏPϘA=C!¡èÝà>K�/ÛúgxÔ—øÎ¶xEöeÉc{»õsÄ(ž¢Y¶‹£äQ%[Zša·;´ÈžßؽžHhß@ú…Ú§¹¹Ù•ݬ¢¢R½¿Î÷ÙŠÚöl²U©ìf›ãjÐh±vMô0œ£Ë(æè¾ÏâÑϰaö¡1?¿Ã­!ב‚‡ÿ† +Õ‚»E=.Iƒ!„`رc§2H¥¦¦©ìTr1šˆ¼ÝWúRׄ‚?mám¿Y»±ÍøØlê=°i뚎E[{;ÚÚ¬J“TTT¡¬¼Bõi·¶Ãjí@ñæfmiÁ m­¼½*éövªÃ:³ˆ™˜Ëôí=Ã’PU’„½#’±cbºÓ8–”¤Œqùù¹(,ÈW³ZÅH&Ìœ%0:Ëa&¸~'Ô=Ý®¤ú$V4Œ]{cw¶ÔÀàÏG|·ò ^^õ!löŸ}ã-ñ8y¿…øÃ‚3Pœ‘B1‰–¦æj_”©ó ñFÔ3¡h—@Ú̶kkk±zõTW× µµåUYغ{<*jJˈ±lTé:çW©˜šÞ™4i"rrrÂ6Àkæ2êÒÛPÏâŸXÖ3áÐ-þ¶ív»2ÅKÖ&íµ}i]ƒO¬ßÁ¹/9\óö¼_D׊Ão/ýÞs¸õ9%3 ·LÚjÚÓg›#€>ÛvGÖTÏÂw•󑔪2´Ê¢gž× ·¹,ý‘†z†ô6Ô3„ø'=¨ç!HJJœ ¹%õ‹£óÑnX†GÏ^¶}=z®{â÷FIƒYm3oשãÂi6 ¤Ÿ·/(RN³\Ì-++C]sF‹|i×|+l øÞ^… ¨Á®¸tXºÊÔ¶«Á°©¬Û9 <÷Mí(Æ3ÎÐwóT³ëyƒü¾Ú !„3ŠÁL§ÉÌØn|”÷ £Ãî4œi‹ÕjC[[;¬Z» ØŠ^Ìf5µuš±iÀ®c²wµ ½ÆŠÜ=mH«¶"³Î†¤V +lðÿâ´o0ÙñhÈŠG{Jj%¡17A{LAÝdõ3UF±¸8m=ù¹šöÈGQQ¾2š%Ë’œäÌT¦õÑË`ê¿B(YË|µÛ'šh´µ¢ÊÚÔ1È|ëû/ñÉæo±¹zª›§½îÌätìS4³‡MÄ û.P3= 1’Ÿ˜ŽŒ„B¼Ó_õL¸´K ƒºÕÕÕ*£™ÄQÚÚÚP^•Še#QV5DÓ5IˆÚQ’¿Cж¢ ¯Ye)cÙ˜1£»Mêzb$‹Us™õ éM¨gñO¬ë™Þ0ÇËzUUV®üNÅWö¶UãýöeØÐ±ÞŸ¸k%Pc™—&Ó}²ŒOfThó:|ìð½ ÑlGãX¬(_„f{ÊL»ß~“U¬'ØÄ±¬s¨gHoB=Cˆh0£Á̸NƒYD«ÁÌx=½yl4d7S™ÌÆ­¨¨PÁRäÕ³›5[Û±ÑV‰MŽZl‰«E­¥ÍOv3õ,^³›¹uóc8;Ã2ÿwÀ1Ê`f,Ïì—�_í„Bˆ7’ÁLè‰Ö$›™þ¨¿'b0ë°ëÙÍœ™Í”ñL{“Y­,uòX¯Lðb8“÷ÏùÞª³Áá­ì†n�s®Ë£”ðTâ[ûÙÊzNNÒÓÒ››£²•%$&(™”¿Ô³•ÅÇÅ+󙱦ó¼Þ5‰·¶@ö²?š©Ö˜”b ¤'Hé…<-€IñMÖ3á4Èj<£Ù¦M›UìDb&-­6ì-ÏÃ¨¨¬½7ÑUÆbq /«%;0¤x/ÒR™ZE÷Œ7i˜pècEãPÏÞ€z†Àèz¦7Lf‚ÄO6oÞ‚uëÖ£©© [Ûö`Iûרn/ó8‘럈•ÃôÜEq*ιÛôßÛmïÇU´ ÁŠò¨jôôtŒ;Fiž`³–ÓÌþÞ†z†ôÔ3„ f±i0K�!~Ð?¨¡˜ÅŒò@ôÏ? f}Cí#ÁÅ’’bµRNSÏn&Ƴéö LÓ¾˜X­VTX±ÁV‰Í–:ì°Ô£-Î9ÛDžÉâz:‹›ÙÌí£i|zíÙŽdL+«v5—B!$tä¾êO¿xëcÖnÔTÆ{¶|y’61w)ãX¢3À›’œ¤ f’±,5-ÅÅ®Œg Mš>iQ¥¥¥­m-ª”¦¬Ë9D<¨ \ú"Nï:Md¢uRR‘˜ˆŒŒ m=Y=ff¦kûæ1e&KHpe(3f+“s(cZ€Æ²PÚƒíÍHP©ÃaGsG;‰iñI ^Büj—`u‹±Í,6$m’ù"//O•ΔàðÞ½eÈÌhÁðÒÕhlZÝåŨ¬-B•¶tØÑ$Ä[‘—]ŽÂÜr .*Cz˜˜¨ÅVrTÙoLÏÎÎŽH†²þd §ž!‘†z†E(ºÅ›ñµ-± ÉN*c=b2KÙ•Œá-%X×¶ Ÿ[WcgG9zÛX&ŒˆËÄÏFí€k Èa68äð²íÑæZí •5ŪªÙ(k«Ê3X•ÔØ'þïû“Ρž!‘†z†Òß¡ÁŒLOŒfÆãu9O0ÇbL Öp¦ïOKKÈÃÕ"ƒº’Z¹¢¢•••HnLF)ò1_ko³¶c—µ›5اáÌ¡OÖ5˜Í”ùÌ%ú=®Á컂Æ|ë ++ËôZy½„B ŽžšÌ„@Œfúl1oI»¹”ÙÌîœUœœ”¨ ÊÚU›˜Ì23ÒU)M½Ôìc» _:]³’=ŸWžÎùœe³¨¬eNÓ™˜Éâ:ËbªÇ¸® eÒÇ8ƒÈóµx®›½Þ`÷Ó'(LÊDE{ƒ˜$ìHðR~¿!Dd°VtÀ6жÜÜ\µLš4QÅJvîÜ…²²räçÕÂf«D{û*TÕ¦kK޶䡱%­m2ðÞû¼d(KNjBfZò²«µ¥ù¹Z[‚2õÉ*+|ii©höÔ6ž¯3”6_íÁö‰6¨gH¤ ž!d`.s| Æx1V͘1£GÂ÷ßÿ€ôŠtìÛ: ÛZöâ+묶mLËOvmf,óèiÒG‹°àªMî*ÈâÍhæËxæÞGêèìjï*æ Ö6Lˆ ËÇøñ㺕Ãt>ehY[}µº¿/¡ž!‘‚z†2 ÁŒM F®H'œÙÍ9ŸÙy$øXTT¤A2‡TVV©ršUUÕH³¦bŒ£De7«·¶8³›¡[ãêÐh±š|°¸=¨Áf·‹�fw Á~)C´/C‘’’bzmÁvÏ!„À Ôd&„j43n º±Ë¡Ê`Æwf%ƒ2“9Mf†2™]ûŒÆ2»+…™ze3>3\f2AOE­·ë‹ñ¸pÕ"ýM³H‰åH8aÙBˆ‘ÌÂê«MýR\\¬b&íííÊdV^^¤Ù0tp¥vL…Ò)íV;SQ׊zí±±9mí)Z{¬ÉZŸD­¯Å•ù,>Ϊ dññV$Ä·!)¡)É­HOmBVF‹Z${Zr’{¦Õ„„ e*“k*..R™\ƒÑ/ÌÎêõ 7Ô3„ lÂi2üÏ$óêœ9³•>Ù¸qR«S1²m0ÊZªðmûF¬´mD½ÑðLÿnM&øÎZ¦s`r6oƒ©aÌÒió?òa4khÏÆæº}±¹~_XãŠTœaƒóTæ¶ÂÂÂdýÑ\¦C=C õ !d @ƒé‘0›z®P³›yëjÉn6lXš2Év}}½2œÉŒÝ”ê:r0[ÃÙ[=~è¨ÄK-vZa³Ø 's=‹ëûA¼Ö¶ c8fØaÚ´©®ìe=ÿ„B ž@jýõóg4Ó÷yÞÃf3Á™µ,Þµ_7’9v¯ÙˌϥÈÔœÙN#™Ž™¡ÌsÝl;Ð}ì¶_¬!Á¦$K¼Èl6›ÿLH@ÈŒ÷¼Ä4d$¤€BÌè©ÉLðW6Ó__5¸©ÅJ¤¥ì—2šµµu¨®®FCC£š°—šbCQAƒvDƒÛñšû»“¨â4™™j�9''[[r\(Øóoéïæ2ê¨g!:˜Ì„@µI Æ3Ý_WW‡-[¶"mO†´ãÐö™ØÐ²ßY7aƒmš¤ÊaID<n_æÑjA7™jòn*k±¥bgãl©Ÿ¨ÝGjº+ é TX Œe’Y6ÜYZû›Î¡ž!á€z†2РÁŒ„p™ÍB=W¨†³P³›yöÑÉÎÎV‹¤Z–Ùº2KW²›‰é,¥5#…°Ùlh¶¶a‹­ ;ËiÖĵÂnq>O¶=c¹˜á„â¤,UbbÔ¨‘^Ÿ3h<#„BBÃ[@3Ø~d;Ó÷{š¼ôlª²xžCÏdf<ÞÛ¹õmoYɼõ÷E¸ŒeÁöE$è”–ŒZ-ˆÉÙ²$XdVl޼ŒCÿþœBzN &3¡'ÙÌŒíÞöéCd9r„jíÒÔÔ¤-ÍhllTë­­­*–bµÚ\[åQp–ív–ðNLLP™È$Ë{zzº*{•žž¦ÖÍÌò¾^{0û‚mµ_,@=Czõ !Ä“PÍñÞ d¶‰}êÔ)7n,víÚ­Ê|g´¤c²m,ZÚZ±µu7Ö[·á‡ö¨rÔu3"ù+‡éÖOûÿÇ9é(M¯ºe&³t?‰®ÔDB jÛò±³qv7F]ÇpM%#!)Ù©(-¢)‹ Y5ÑSÏž@=CˆÐ`"¬£H™Í‚9_ ×®ìffýd¶îàÁƒÔ"444¸•Ó̶g`Šc˜Ú§…MÑ›šÁ’¬-r. šN˜0Þ| çLB!¤§„r¿‰E]ãI0ÙÌ„PŒfÆýÆ>f¦/}Ÿn: –PWƒéCc™9qj†c:²Rµ f š:ÚÑá°ƒ3â-qHOÒ‚—©H°Ä>ú»žéiÖP eÞö÷‹v‘Líz¶öPßÓpiHì ¥_,A=C‚z†ÈÑ_ôL¨&3oíÁÍĤ.&3ÉþUUU…Ý»÷ ¼¼™íØ×16›µ­ØÖ¾[Ú÷`‡­ åö:´¢ÍOÖ2‡+YA\®¿ÇóÊaVþ²Õ–ŒÚ¶<T´ FUÛPT· ƒ#> ˆKŠCvRŠŠ 1dÈ`äççe ÖDÖ_Íe:Ô3$¨g‰ô7Ä4˜E1ÞRùÆ¡ÄÂy¾Hf7ów>#™™™j9r„š+e!***U9ÍÆÆ&$8œÆ2™eRRRŒ#†«ÒfÏL[ û!„@139rLÐ5:ÁbC1’ùêãÙ7\ïe¸`Á^×@Õ)ŒÊÕ™²´Ù­hé°Âêè€ÕÞ›”=e™†‡”Wߋĸx$Z⑟ˆä¸DBÂË@Ò3þ´H ýzºÏÛ~o}ÃI$2™ùÛJ¿X†z†xB=CHïÐõLOMfBOÊ|K&ÔÂÂB¨}555ÊhV^^ŽÄÆ$"3°¯ÚgµZQÛÞ€²Žjìm¯Fµ Íht4£A[Úµ{a›£]yÆZµÇß ‘¬®Ihµ9ÐfK„Ý‘€f[:š­éhµgj÷Ð,4v¢¾½Vd9Íd’™Uû?1ÈÈHWe=‹‹‹ü–�‡áÌß¾`úÄÔ3ÄêBz‡Pô é;h0#½N$ g}‘Ý̬Ÿ¿ó 2SW¾¨ÈAÊ>Èi—/¾Îí­p !„Þ#ÐÁÚ`úGà lOŸÆ²Ð‘ U„B"E y_ýzb& %v,áÒ+=Ýl¿þõ !„ž¨ÉLW™oo%¾%;˜”ø–J32~#†³êêõ(I¤dwò1Ýñ<§$x§¬Õï„AKž˜¨ e¹¹¹ÚóçªÇD­-T®öPûÅÔ3„Bˆ94˜Å�îÍ3]nìŠA,sz¾P³›Û×2EJjr|(æ2ÞB ]÷“Pî-ýQ×DÂhfì§Ó¥+ÂÕ,ÇB!=gàê™`LfB(F3ã~_}<ûEšpdàˆ´6"„B§ë™`b'¡”ùöÖîkŸ˜ÉŠ‹‹]I„¶¶6444 ©©­­­®EÚívg–3A“’UeAÌbqq5&”’’âZÒÓÓT}¬¨§ú%Y84!„=Ó3¤÷¡Á,Jñ5ÃB}ýñCmÙÍüÉë e?!„)ü•Oð˜º&Ð[cPLñìµôƱÔ4„Búê'Á˜ãÃa$ë+Ó|83oÐXF!$Zhz&XK VC1”ù;§ à ½÷„`ß÷P b¡î ¥!„âžèÒ·Ð`3©˜¤œ¢”Rìï„b ä\Áœ/˜kˆÔ;Î&!„Ò׈ö1CSýbÔîOº&˜[³ã‚=¶¯îñ¡>/5 !„¾„zÆPâQá(õíëýŠÄqáì%„BÂÁ@Ô3j_ýB1¡÷éDãQ }ù} ×uB!þTÏá=(: Á,Æ2Š’B×fë3#¡ÄÂy¾p_C°Ïìþ@ûB!þí!ˆ ýYׄj43êñ‘ §z‚z„BH4@=Ó`5K ý£Ñ<ÉÀ5µ!„Þb ê™`5HOŒfo$ܱ›pjË!„D#‘Ð3¤w Á,Æ™9©ážœœ„L$ g¡d7 æ¸`ÎÙ“~ý„BÂ…h¹¯„;€ÙßuMOŒfÆãu¢­¤To‡B Ô3Þ ÕhÈ1½1ÈsFË1„BHOèz&˜lfB(F3ã~_}ÌúFšp1c !„¾$z†ôü‰E!ÞêÌ?dÍÍÍ îèïQ8Ä®ñ\Á íž.>!„Ò›èÚC:zÓ+¶ 4].Ò Ésy;7!„MPÏø'”{x$â'‘>Þì<Á@­C!¤¯ ž î>ì¯o Z q“@ æyƒy-Á<7!„nBÕ3¤ïa³(Çâ1Ãù!¬V«ªMKW§9žpú¢œf¸ %ØI!„„Ñ¢=âããºi`ð¨kzžÕÌßyû jB!Ñ õLp„ªWŒïeO´N$uEOÎM½C!¤/¡žqÇóuøë+øêŒŽñõ~÷D?K0f±Hœ—B –péÒ7Ðx~âãT[KK H`„{fIoÎT u&-!„.DsȽE4ˆ‘Pî7Ô5]ô¦žˆýá5BPÏ„FOîó}•é#×A½C!$ žéN¨ÙKíêøL0KOÎhÿ`ÏO!„DŠpêÒûÐ`#èéå1>>^µÕÕÕƒO¸œ=ýBàï|¡K!„„]sˆ1j’P¡®éN¸õI$‰•ë$„BŒPÏôŒHÄ;"¡%"£!„B¢êï„j¤ ô˜¾ŠÛ„ò¼¡\'5!„Þ"Üz†ô.,‘ÅèbNO§« <ù€Éb³ÙÐÖÖ†äädÐñÍá(WÕBœâŸBH$­!šÃ(ö÷œ`fL Ô5 }Žë „Bbê™ða|Ÿb5~âêB!ÑõL`x¾¾`Ž æ¸@Þ랔٠–PÏEÝC!¤7 —ž!}­€Q‚¯ŠÙ+!Á™®¸ºº$¼ôÅ,”žÀ?´„B"‰h £öÐñuÿ fuM`˜eãw 2’ç'„Búê™ÈÐßôõ!„h†z&8B½¯‡3&â-Ö‰ó‡z,!„Ò›„¢gôý$: Á,J1ûg’ȇN­V+š›[@"C´²ò)!„H"C´†Q{x»'+þ©kƒ¿`e  !„Ò_¡ž‰<±ª+¨‡!„Ä Ô3¡Ó“û|´i…p\u!„¾"\z†ô-4˜E9Æ•§xLLLT°Ûí ‘'¾P0øI!¤7m!è9<ïAÁÞ¨k!„Ò›PÏô Ñ6«­×E!„ø‚z&<„ãþïù^EJSDây¨!„ô%‘Ð3¤o Á,F0“R›VOXYY ÒûôVp’PB!½h ¹ïˆÖÍÎÀu !„Bzê™è œï{4?'!„ ¨gÂK$´7CX¨K$®‹BéK"©gHïBƒYáùÁÑ·íúLO(Ïøø8´´´¢®®¤o Ç—þA%„Ò׈¦m!CŸMb–®ØL«èÛÔ5„BéK¨g¢›pÄ2ŽB!¤?B=Yú£v "„m„CÏè!$&0ûú’˜˜‡£µµµHHˆGzz:HôÁ?~„Bb¦¦&¥)d‰hŒH ÜQ×B!$’PÏB!$Ö¡žé]Œï…Ãá@,Á±'B!ÑJoèÒ»Ð`eȇÇ(^õmc»þ!“¢Ž¸=¥vmee•Úfð’B!Á"b_´D×lÕx5“ƲX'Ù$Ô5„Bém¨g!„ëPÏô-žïe´Î8O!$·ž!Ñ f1„Ù‡L>„"n®ÏDX­VõAµÙlÈÎÎ!„BH ÔÕÕ¡¶¶ÎMì{¦*çlêB!„„êB!„Ä:Ô3чÙûÜ[¦3¬B‰Ez[ÏÞƒ³À8›DG>|2sDÿ zÍZûòmkkCAAk?!„Bˆ'Ι¨•hiiUšAôDBB‚Z7Š}Oá/„"ü©k!„n¨g!„ëPÏÄ '„BºÓÛz†ô>þ”,î³ðhñ²­/q†G}‰ïl‹÷Xd_–<¶·[?G?Âsöƒq[>˜z›¬{.JìË£ô)**DZZ!„BŒ477£¼¼ÂUÁ˜¦Øs1ÎbÕ 4]1u !„B"õ !„BbêB!„Ä:½¥gb•¤¤Ä¹Úƒ®úÎÇÅÑùh7,ãç/Û¾=×=ñ›¢•Ì¢}öˆÙ¶Ù,Ïc¥½½½]‰ýŠŠJõÎËËCJJ2!„2°immCuuµ ê5ï“’’\Â>ÜbŸº†B!á†z†B!±õ !„BbÞÖ3¤oa³(Ƭ†»¿%žë6›M-"øù@çææ 55uÀ§0&„B¢ ZZZPSSë¦ $=±,F¡ï¹.øûÞÚŒP×B!¤§PÏB!$Ö¡ž!„BH¬Ó×z&é/Ìh0‹r‚ûò(‹ž¦XoǨñ € ³KÒÓÓÕì½ö-Ý „BHì£ßÿ%Ø'³Gššš”Œb^´€±Ö½|Ð×#!ö©k!„(Ô3Ô3„BH¬C=C=C!„Ä:Ѫgb ÌÌ÷Ñ`ü‰}]Ð ÆÙ$žâ_ÿ ~}Ÿ·çз= !„=èBÛóÑs¿  x î…½QÜõãç‡Ø§®!„BˆêêB!$Ö¡ž¡ž!„BbXÔ3±D1˜%€D=òAòÚÆ6ϳQœëýtÁ¯»EiáïüòE�®výœþ>¿�B!‘ÇŸ¨öÔÎ6õ¯«æ½§ˆ7 |³mÏóZÂ$ö-Ô5„BÈ€ÄB=C=C!„Ä8Ô3Ô3„BH¬ÓŸô é}h0‹Ì„·7±¯P³HôýÆ6ý€ŽqƉ±B!Ñ™0ëFaïÙט¢ØSÈûÛõz©k!„¢C=C=C!„Ä:Ô3Ô3„BH¬kz†ô.4˜ÅFq¯o FÁ¯ {ýì‹{ÏãõTÅfÂÞØfLiL!„è¬^½™Ø7KCì)þ½k$œbŸº†B!õ õ !„ëPÏPÏB!±N,ëÒ;Ð`ƒxŠ}Ï6Ï¢þA6ΑEŸEb÷f¢ß˜þ˜B!у7qî)ê=ÛÍö2k$bŸº†BØPÏPÏB!±õ õ !„ëô=C" f1Šç ³6oTOaov.ã~B!„D7Fol3ÛBŸº†B!Ô3Ô3„BH¬C=C=C!„Ä:±®gHd¡Á,Æ1 wc›à)øåQÒ·}¥)öüpûýüB@!„„_BÛÛ>o3IŒÓz¾Þ€º†BéPÏPÏB!±õ õ !„ë 4=C" fý�o3AÌÚ=Ó›ý10ÿÆý„B‰.|‰{c{0³Eúê¾O]C!„ L¨g¨g!„X‡z†z†B‰uú“ž!ᇳ~„Ù¬½]ðížíf3Hý°s& !„~z"ºÍf–˜ív_oA]C!„ô¨g¨g!„X‡z†z†B‰u²ž!ჳ~†·Y%¾öyûƒàù ç%„BHïâOØ{ëì¾¾€º†BPÏPÏB!±õ õ !„ëôg=C fýo³Jô}Füõó÷áç,B!$rôT„‡ã‹@_C]C!„Ä6Ô3Ô3„BH¬C=C=C!„Ä:Ô3¤§Ð`Öñ5«Ä¬ŸN°Â !„è!Øûr¬ÜÇ©k!„õ õ !„ëPÏPÏB!±NÕ3$th0�*ø=ûálB!$úè‰XU¡O]C!„ô/¨gïo„z†B‰¨gïo„z†B‰¢ž!ÁCƒÙ�"XÁ®c !„^(ô©k!„X‡z†z†B‰u¨g¨g!„X‡z† fãÝS¸SÈB!ÑO°eú³È§®!„Bbê™.¨g!„Ø„z¦ êB!$6¡ž!ÁB!„B!„B!„B!„B!Äf0€ør¡š9Ný9Ó„Bé{Œ÷ë@f‹ïßýmv u !„›PÏtA=C!„Ä&Ô3]PÏB!± õ ÌÞDz âŸB‰ôû²ˆ÷`Óe¨k!„؆z†z†B‰u¨g¨g!„X‡z† f�³?¾þ8ØívB!$ú1»ŸÇÅÅyícù±*ü©k!„þõŒ÷6êB!$º¡žñÞ¦C=C!„D7QÏà¡Á¬ˆÀ—m³¶@Ïç«B!=Ç› ÷Öî°“~z_3‘+Ÿº†B‰]¨gœPÏB!± õŒêB!$v¡ž!=…³~Š/‘¯ÿ!펎µ-ëÆvc?B!„D?úL]¸Ë¶¬Ëc||¼[»ÜëÍRG«è§®!„BÔ3Ô3„BH¬C=C=C!„Ä:ýYÏžAƒY?ßÀ—EĽÍfsµÇ{[ôy !„Ò3ü p³™!z»°ÓûÈcBB‚ÿ"ú=¿ Ï-Ÿº†B‰}¨g¨g!„X‡z†z†B‰uºž!á³~„·”Ãòa/_½]>ðÉÉIHLLÔ>ôòá·ðN!„ôœ3Deé€ÕjE[[»Ò�íííê^/@ùàMø÷µ& ®!„B6Ô3Ô3„BH¬C=C=C!„Ä:ýAÏðèOÒà>K�/ÛúgxÔ—øÎ¶xEöeÉc{»õs P¼ÍÑgÈ]ù𦧧!))Éõ'„BHÿGtþ¦¦f· ŸüôY&f"¿·…?u !„B¼A=C!„X‡z†B!±N¬è™h"))q®ö ©àê;;<Gç£Ý°8 ž ¼lûzô\÷ÄoúXf0‹qÌfèµíEàË"ÛâÍÌÌPjB!„ <DЧ¤¤¨EôACC£+(ú@÷žÂ¿7g—P×B!ÄÔ3„B‰u¨g!„ëÄ‚ž!‘³ÅLàë‹û¶¶6W½ûììlíà B!„AÄ}^^.Z[ÛPWWçš}šœìÔ "ðõEÐuG¤„?u !„B‚…z†B!±õ !„BbhÓ3$²Ð`ƒE¾±Þ½¬Ë‡UD¾<ŠcTf0%1!„BÌ@`RRš]ÒÚÚªô„ˆ~Ia¬Ï.ŒÂ?Ü¢Ÿº†B!=z†B!±õ !„BbhÐ3$òÐ`cxŠ|ã"iEäËzFF:ÒÓÓA!„â õÙÙYHHˆGccZZZ”è—Y'ò@ø‘ýÔ5„B Ô3„B‰u¨g!„ëô¥ž!½ f1‚¯ÔÄF‘/LIMœššB!„@‘�a\\¼Ja,šBÑo$\)Œ©k!„ ¨g!„ëPÏB!$ÖéM=CzÌb�"_jÞ···SäB!¤GèBD¿h ô îrÑ(òC™]B]C!„HB=C!„X‡z†B!±NoèÒûÐ`åøùRó^>ò(uï)òÍñ|#ÿàB鈖°Û;ÐÐÐèýñññn}BýÔ5„Bé ¨g!„ëPÏô¼Mq<‰BÈ@ ’z†ô 4˜E1þD¾Ì‘Å2“$))‰µï;é 3Y ÏË?€„BbÑmmíJðÇÅÅ©û™< VôS×B!¤7¡ž!„BH¬C=½ôt*Ðã9ÆD!$Ö‰„ž!}GHÌà)òeöˆ}YÏÉÉÆ@Åó P4Í×F!„øB´…TÍ!ëá¼§Q×B!$ÒPÏB!$Ö¡žé{<Çyzs¬§/Ÿ›B ‘Ö3¤÷ Á,Jñü ɇ̸O=Eq^^n7—g'Vÿàð%!„XA´…h ½,‚çý˨M_÷6êB!„ôÔ3„B‰u¨gzŸh7tÑpF!$Ö§ž!} £]Qˆ·ŒQ0JzbY’’‚@Ìÿ„B¢Ñ¢5tÝáï^lÖN]C!„¾„z†B!±õLd‰uÃÍf„BbpèÒ÷Ð`˜Í"‘ôò8RGB›¥v‰ÄµB!цh £öð5«$º®!„BHïC=C!„X‡z&¼ô×qŽ7B‰f­gHï“�ȇK¯E+©e‰GRRú+áÀ‘ÑÞÎm±XÐÓsöä„BH8­!šC×rM")C½_ D]C!„¾ƒz†B!±õLxˆD2ƒp®ñ!ãµq̉BH4 =Czf0‹2<ŨY½Y=e`VV&ú#=™]©,c½} œaB!$šÍaÔ FÌ´ŠÙº·¾ý]×B!$: ž!„BH¬C=á3Šd¥Ï®k'„BúšPõ ‰˜Á,F0ŠHù°i-HNNF¢'f¬h¦'³D˜ÑŒBH4àÔN "3LtMÒ“²ý]×B!$º ž‰."Ëa…BH„z&8ÂaÊŠ&<¯'”Ÿ;Çœ!„ô5áÖ3¤w¡Á,Šð‡ú¶qf¸6e‰OP©û¡ˆôÞ:&PýƒªÙŒ¢ŸBH_"šC´‡¤,ÖÓE¿§ø7»ç]C!„è„z¦ïè‹ÁY³çdL…BH¬C==ÑáÐ-Áœ£'ú„É !„Ä"¡èÞ¯¢F¾¢3Ù|Є´´4Ä:Æ/0á>¦·R÷äù"ùú !„p£kÑ"ÞLñ¾èﺆB!ÑõLïЛñ˜`ˆÖë"„B‚zÆ;¡ÞãCÑfcB=óéé¹zúü„BHoÒS=CúÌb�]à‰ƒÓ)ô%Mqb•H ãž Ãõ…Àì|ô öÜ„BHoâÔ׬’žíú‹®!„BHì@=9zCé bñš !„êszbì ¦ook‡Pž·'5B!¤7—ž!½KdF)ÆçºÝî@||<b‘`m8ú„Ò7Øcý¥e4ï­o }Ìú3%$!„Þ@´‡h_%{\Ò5„B‰-¨gÂK þ“!„Bú êw"5y¿'‰B!Pýáyþ@Ǧ‚=?õ!„HÒ=CúÌ¢o¢Ó³]œ‚Ô¢%zÛXÖÛAN³çó÷%Î×Å`D<?!„Þ@׺Ñ1úÞîMýE×B!$6¡ž Ꮉ„ë|ኋ0ÎB!$š¡žq cY¤Íg¡œ3É Œý‚1šQ B‰Áè_í¤÷¡Á,ÊÑEŸgZÀXù�…ÓXækss3l6Âõ\ÌÏ 11©©©ðv ¾ÌhœYB!$0Þ_t]"m¡Ü«bU×B!$¶¡ž pÄQ"=0ÔÙ@ÎG½J!$Z žé½q'}œ™ßì®Gc‰/ã{l†þ^Ë£,2Ю?êëúÏÕÛ±¾®³' BéK!„C8ô éh0‹t!§ Ôh'œ³Güíkiiñi.‹ÔûŒ°·Z­ê1%%Å«ëÖÛñ¡Ì, ¦?!„(zÀL_ïÉy„XÑ5„Bé?PÏGO_[4¼7á8g¬…BH41PõLoË<÷MdnƲ@Î(º±Ìh6“2bÞLg¡É‚5šQB 7‘¸’ÈCƒYÌÝ®Þ4– »víBKK+FÜü3¤lÚax{ë&θ?úíÀ9|œ«iÒ ì¸ö~dd¤£¤¤Dõ¢ÑŒBHlN-Ò?¾4„úå‡÷hB!¤¯ žñG¨ú&œAápg$3;g°çb¬…BHô0°ôL¸ÊW3&¥Ê$ÁÑT& Z[ÛPW߀»ö`‡¶ìê|¬ªªAm]=›ÑÜÒ‚¶¶vXµãív1i9K‚IÅ›”äd¤¥¥ ;+YY(.,@ié ”–¥ƒµ%3# ÉZ¿„„7³™¾b6 —ÑŒˆBHdèŸ1•þ f$,ô¶±L(//Wæ²Òÿˆ”M;ͤ¯YŽ’»¯ÁÞ‹¯Ñ¾`T!???d3f„BH߮ӞpB!„D‚P´N8ãBá86Ò1fò „Bzp˜Ë|•¹ôÜC™M™Âœæ21“546bËÖX½ö¬]¿›µõ=ehlj½Ã†e>Sgð;VÞÒÚŽú†¦®W¹L1 Å#11Yi2¸ãÆŒÄ>ãÇ`ß}Æ¡tH ÒÓ¦3Ýd&æ3O³Y¨F3f3#„Bˆ?h0‹B<ëÞÛ£¾0– ÕÕÕ¨¯o@ÑËw!cù·ˆr>| íƒJQ}êùJôggg«v¢?)Œý‹B _:Åó^KºÆ‘¾fÎ!„Þc ê_DÒ$ÖÛïU°º*RSÞŽ¡f#„ÒWôw=Ó›Æ2ÉP&™ÉtsYSs³ÊNöõ·«±tÅ*¬[¿{Ê+a³êf²0¾oç’»Ýùü’\¡¬¢ß|· ññHNNÂÐÒA˜<q<fÏœ‚)ûü<¤¥¥ªñ&Y$3šd9ó¥k‘܀cM„BÂI0z†ô=4˜Å�Ñ*ð{£Þ½Y{}}=ª«kóÉ‹È{ë˜ÊœXôÌ}°—¢bÞ‘jVIFF†kŸ¯/~fíîµ/!„âPJ4–…þ¼¼B!ág è_DÊXé2›ÁüÜ‚1…2¡/˜þ„BH¸éz¦§z#vc¶²¶¶647·`÷ž½øbé7øøóåXµæ{444ÁÖÑѧ±¡v» íV֮߄ußoÆK¯½‡Âü<L›2 çÍÄþSöEQa>RSS•ÉL1œéLJ’Ü€%3 !„ô640Ç4˜‘—¹,ñ/m­­­(/¯@úÚÏPòÔƒZ£ü‘‰¡À®v©Cî¼ [‹a/¦ ´4A¥36þ±ì‰ÑŒÙÌ!„ðMW_×Âû:!}K›ÕÅë[°b[öÔu¨Ò&%Yñ˜1"‹&¤"9ŸQBHtÎɃö ¦_¨çð¥5›1s<!„Ò7ôTsøÊ„¢¯‹©¬½½---¨©©Å×+×ཾÀ˾նëLLeÑq—K³Ù®½åØ­-ï,þC•`þAÓqè‚°Ï„1ÈÎÊRãNIII*ÑN°ÙÌX2“B!žÐ`DûL#}e,DðïÚµ‰{·¢ôžëŽ­;†_õslºë%ìÒ„÷ðáÃ\"¿§F3f3#„Ò×xìb•X»öž\/µ�!=c{µ w-®CM³Ý­}k•M-KÖ·àâEÙ–Ç¯ß„Ä ýEÏø¢7²ÒÒÇn·»-Æò]ÆuÑ-ºvÑ×¥”q1{>YáéÃX vïÞƒ~ø&L@II1!$Z‰U=Ó]¨±Ì™­¬{ö–ã£Ï–áw>šõµööØz¯à4›mÙ¾ÛžÙ—_[ŒéS'âø£aöôýŸŸ§²š‰ÑL2šùsbÉLB!Ñï7Ñ#Ü$`z³Þ½g›wìØ K}5Fþý"X¬1–¹Ì‹ö%fäïþzÛ·ïÀˆÃÕD3ÁÞF3þ1&„BºW01Ðì}M °„'í|¹¹ kw·£¡Õ®Ld­Vï7ª›ìøûÛµ‘Ÿ€¬”8Lœ„9£’‘ÏÏ!¤oG|'”ý²ÝÑÑ¡ÜÕ dáÒ^ºáLD•É|²ã-ƾޮ7\F3jªþÇûï/Á_þòWõû+ƒõûÛ ˜?žißêêj<úèøôÓϰwo’““PXXˆ˜ƒK/½„BºIs™üí– 9ص{¯ÊVöê›K°uû.X;uI,Ó¡¡Õ54âƒO—á³¥ßb¿IãpÊq‡ãÀÙSQ\\¤Œf’ÕL´Q0ãPú>šÌ!„"Ð`F"Ræ²@Úd{ûöíèhkÁØ¿]€¸¦ôâ[š0ê’S±á7°cÇ 6̵/X£YOËfRüB!NB (ö$�÷ßX1ÆÅ 8øàÃ}ö‘L+99ÙjÀqöìY8úè#1fÌhÄÏ=÷n¹å6×ö A%xíµ—Ñßø¡ÌŠ>®G­G¶2ˆmý^«Z_ºµ ¯~Û„ æga\q"!¤7‰ääA³}º™L7–³Ô·Ù¬Øa­ÀÖŽrl±–a»½eŽ:4£­Žv´hMqíh³ØÔ1ÉŽ¤Û“Š$¤X’¦=[²1<®�#K0"¡¥ HNHTÏ%ˆ–ÑfºéÌx¡Ír¬E&€¾÷Þûøâ‹¯°{÷nUVLÌSyyy˜0a¼¦}báÂùêýîo<úèãêwW²j=ö¤©Álóæ-¸à‚_¡¶¶ÎÕ&ý´ÿ‰÷!„î„jl$yn,Û³· ïøžålÞºS™²ºúö{¶¼œÖV+–}½+Wý€ÉÇâÿN=sgOAA~>ÒÓÓ•ÑL7à“ͬ?™Ì²ž!„BzïŒÄ/= >†*üõí]»vÁjµaô­¿DBU3ú‰Õåñçó°õoª×9dÈ·ý üžÎ.!„BHð„cvk´g &S vWWרåûïÀ“O>…³Î:—\òkD tŸ=û ·¶»îºsçЭïÏ~ö ¬\ùkû§?ý .¾øB DÄ\vÛ»µ°ç-3EÊiʹ~xMf„^¡7³Ò˶ÕjU‹Üsä^'ëåmµXÞ¾_wlÁwØŽ]–h{»´ÀçØ®ÍÒ¦ø6“ Жvç’€x qä`2†aÿ¸˜‘4E)¹HLLT¦nÝh¦oû2Ö÷Ä„l¿X@ RwÝužþE—ϸOÌSÛ¶mÇ;'‘#GàÊ+ÿ„©S§ TïH©1_Û:’åÌh.3²ÿþÓ@!ÄH™Ëœ÷§TUWã‹¥+ñØ3ÿÚu›úEÆ2(£Y»ËW®Ãªõ›0wæTüôÿŽW†³¼¼\e4ÓËfªúƒÉ,\zféÒe¸ðB÷Œ¤Ÿþ‘ÊpJ!„ôgh0‹bÌtÑHO²–IQoÓËûíÝ»--­~Ïï¼µ ý‘´ «Pú?`çe·¢¼¼\e¯0¾öÎY4z›1�:Pg—Bé[Ì4J ƒkÞ¶£p ¼†û¢åÞL£Yï!ÚïñÇŸDZZ*Î?ÿ<è@ÊbJæ²p˜Ëtä\jç¼ùä<–Ë$¤è¯zƌޚ8h4•µµµ¡µ­Ë[7âSÇ÷øÆ¾ Ûã*a7XÿäÙÐm–*lC^w|ƒ¸6 †·bšeæÅíƒý“G!%9ÅU"JŒf²_O$&õÅzÌE\/½ôøê«eõß²e«tûŒÓÑ_¸üò?àšk®Çºuë1yò¾øÃ.íÖG& üð÷¶)SöÂó´g æÌ™B ýAÏ„b. dÜ©¹¹555øaã6<úô«xÿã¥hÕÆšºßÁœÍÚ±äÓeøzÕzœ|Ì!8ý¤Ã1lè`dgg#%%ÅÕ·§É| PÏBHtŠž!} f1@_ üpÏ‘�£­svˆ¾˜!4$eqccJ^¼ék6 ?“õÅ=~ÊϾD½öÔÔTŸï¾HTfDZJӬݳÿ`´YX¼¾+¶µaO]äW¦$+3F$cÑ„T$'ðwˆB(% óþúÈlØ@Ðï±ò(3E{r]}u¿ö•åƒÆá‡ŠÒÒ®¬µUUÕX±âkìܹ˭ߣ>ÓN;YYY }Ï—›Û‚.‹’ÉLÎ=ol !}CÒ3fôDãxÛgf,“;Y¤Õ¶æ½Xl_‹·-ßb7jâÐ'ˆ¡m‹¥[PŽ—ìËQØ’‰ƒ[&â(ËTŒN¤â/b6Óã+B(“úÌú›õ‹UýôÀÿî6+ ¥„ÔàÁƒ”Þ°a£ÊȪ#¿W^y5þ÷¿—Ô{Ü2d0zè>Ÿ}¶oßá¶-¿[wß}ÒÒÒ@!‘"VõL$Ìe¢KjkkQ^Q‰×ßù?óö”Uº’ X´÷¨¦¦^™í¾X¶¿8ç8{šÊÆ)q1ÞZQÇW{ ûûêB‰nb)Ö2¡ÁŒx%œæ2™¡'Â^ß/³Y­Íˆ«¯BB[š¶o/GršJË+³KÄ\–¿ä)ä-YŒ0›¤àåGÑV:µ‹NPU1ãYš´w‡&Æã`KM‡½°q)iJøÊ—"1íIÔ8ÓDèOŸDÛ«m¸kq 5²µÊ¦–%ë[pñ¢l Ëãí…;ôtà5˜>á"ÏÕÓû=Íf¡qÔQG`Þ<÷ò”¢ù®¾úZ¼ûîû®6 ÿöÛ•˜?Hß³vw;"ÅÚ=í4˜B"BOôK º2à&±ž¦¦&Ôk±‹wm«ð¦å[¬Ã®¨ ãT Ïá+<çø [†àèæ©8,a2²Ò3Õ�F³žf3‹Å˜‹Äð^|ñ%·61ZÝqÇ­5j¤«M~$ ë}÷=èj#ý›o¾“N:ù<ÉÍÍ¡¹ŒBL·¹Leª²²?lÚŽy}¾íÖþ_3lv¬ýa ®¸þœrÜ"œ}ú±Z:H»_åª1©þj2£ž!„BÂ�$$‚ @ŠYLfŒ´ÖÕ ïý'‘µôC$ÔÖÃ"~3‡Å™£×y´¡³£#9iÙÙH+„‚ïÖ8û ´—9äžk‘ôÙbdl߀díýг¶vyêÿÎ`OH„-¯uGžŠÚSÎCªö~åä䨙·FBþ„èH9(ɪ!ƒª ­ve"kµzÿB^ÝdÇß߮ňüd¥Äaâà$Ì•̲O„˜Æ›îÙ³g¯Úwjí}HŽGrB¼ë1!®{š¹­[[,jùOéê^\TT¤öõÅ}9œå8Ãy®ˆL°¸ä’‹Ü fBEE¥×cª««ñÆoáÃ?Ö~÷hz»NÓƒÙ4h>xŽ9æ( 6²jÕjœ{îÏMÏwÉ%¿s­Kù‡?üáOÊ8àÉc=¡á§?ý .¾øB„š5kñò˯â믿AYY¹ú*(ÈW妎>úHxà\ŸÇËëé¥W°térlÛ¶ õõ HJJD~~¾*C%ç˜9sÂE]Käf»GòÜ„K$ÍebŒ#´Š÷4ÖaqÇ<eù »-µˆ%ÖbÖZváñŽOprýLÛ8 ¹iÙÈÈÈpe5Â9ÐhŸhB²¬Ê$P#¿øÅÏÝcy¿~ö³s±lÙ ,_¾ÂÕ¾~ý÷ný9äÔÕÕ»¶o½õoX°`>^}õ5¥ ¤•¼=¥¥¥*óëÉ'ŸˆÌÌLøB4ËâÅà­·ÞVÄDCI¹ñââbUÒêÄLjû7wî‚ ôÎå—_%K>tõ;öØ£qÍ5WùÔXååÚ5àÚþ÷¿ïÇŽ;qíµ7¸õ{æ™'1fÌhÓsüç?¸ tË$Ówß}ƒÆ5BHÌs™q[Öe ª²² |º÷üû9lÛµ×µŒ1 #òÖ56·àÉÞÂÊ5ñû ÏÄ”}ÇißÉ Ü2î{šìcÙd.=óè£ã_ÿ2Ïf*ºBçóÏ?rMZФè>ø7nTדžž†áÇã€fãÔSOF^^|!ºåí·ßÅG}¬JvK,HÞ_‰§Lš4‡v.\`úž{ꘛo¾Aõÿüó/ðä“O©8ÍÖ¡Îó«_]€iÓ¦^Ïxþù•æiÖ~wJJбhÑB¥“üé4B!ý ̈)áH©,Ûåååj°gÐsÿÀÐ/>Ó¢º¨±è^)wìqˆoq ­¹i{j:Íehv‰Ý¯?q7Ý™gmGRÙN>z ¿ Õ'Ÿ‹çý^ *Ê—€@„¿/úRôKâƒ>ÜgÉÞ&¯µ°°³gÏRˆÞ‚p$t~(³âëƒ.%´õ{ —nmëß6á‚ùYWœB‰6z’±5œ3`£Á ÎŒdfï Mg¾ÉËË ¨M™³7Ýôw5¸oD0eY¹ò;Uúá/¹Gq¢ 1%ÜyçÝÚ êsÝöíÞ½G-ï¼ó¦Oß_{×)Ø'òúo¾ùœ5âÌ¢Ó¬–_{í e´»îº¿v›„,’Áu‡¶„JZ’¥¹ J[™ž¿Ê¦žƒ` !á¢'úÆW› Òʽ§®®ÕÍuxÍñ5^Ä2T[Ëh‘+ÜÅxÞþNn˜…ã›öG^z¶*%F‰A“ÍÌW–3cŸXÑF’ñ#6o¼V vêRþúëoÂÿþ÷º[Û÷ßÿ –^x ·ßþŒ;ÆôX\ýãÿ¬4„Éø_SS«„eÐô'?9]ô+U¬¯9ôÐEøÇ?nW&M%K>ðÛòœ„pÈ!Ó\F‰YÂm.“{’d-Û[V‰'žO½ð6šš[˜µ,�::ìX¹æüáê;ñËs„c8…Úø’$3ÐõO1™õ†žñÅÚµë”ÁkïÞ2·v?Ó–,?þ_­ÏïqüñÇšžC `úÓ•j«'»víV‹h†}÷¤éŒ›Õø™/U¶¶»îºÇ­]&þêWãÞ{ïÂþûOSšåÙgŸwë#q—G}BÅoÄ</¦~B!ƒ8$ ü²²2ÔkAÇ!O_ì寉Õ@J\$5� Ú€˜¥$HzF³Î€¥½ùÏÿÅ÷^¯¯|™òõ…ËW[¬ Aíêêh|ÆgwÁ¤gÈ�èmïÖm.3CÊiʹ¼ ªBH_ŽÁ×`î§rÿŒ vòÜfKo‰çóöšôu"™ÈŒÈ ¡é=yê©gT9MOs™'b¾ºòÊ«ñÜs/ š€ª™¹Ì“+¾VMÏ2SË–-Ç_ÿz]7s™2+Ø3;H°´Yª<x‹5´ßÓí÷ïËÁÌÁ”Ò$Ó>rî»—Ô©ç"„ž)s™dKì‘{÷îÅû+q¾ã!<„PØ6—©Ò^ËC–%8×ñ�^nøRe­ªªrËpL|%ÔŸE´1xð n8î»ï|÷Ý*Óþb=z”k‘ ¾xå•ÿu3—‘AÔ_ÿúm�¶¾Û>ŒýÙÏ~ÑÍ\fÆOüW\ñDb~“˜ÉÀf†dtÛ´i³[Û 'B‰EÂm.“{´Ü¯7lÚ†nÿ~ò544¶@—9.,ò^•UÖâïw=†{~;v:õn¾ d¬ÉW{´i=ã yŽóÏÿe7s™'ç¹îº•6òDô€ÄHÌÌež¬^½¿ýíT Òb$ó–M&ÞrËmxýõ7»™ËŒÈõüõ¯×ƒBÈÀS¤I7| Á@~EEêPüÆ È\÷2ïØ5QgÕ:XÓ´œŒS3PÔ·!»!«™9¹¯ýޤd”Ÿ¹š "Øßì_3G¢aVI È€½ͤüÁùçŸÒ3¤,¦d.³…±Z“œëAíœ7ŸœÇr™„˜ ЀY¨´PUá ØrŸgV³@Ÿ'ÒÏmÔÔÔ(#”dõÒ‘™ÂW^ù§n™)Ä\÷Ý÷ºµeggáG?:Æ S¥"¥dÌ€Õ‘óJYÉú!AQ™Y*â_üâ×nç9?bî\gù&éwÿýÿRK‚ F¤ü¤^&*تrmü©k[~ÎRöJX¥™d^{øáG]e+6oÞ‚{î¹_ÍàÕyøáÇÜ~_$Hü§?]¦fèŠéì­·ÞÁ½÷>à*…òþûKTæ’ Æ#¯oQfùP9qZ:F$ ÍæÀ®Zï“k¤Ìø’ï[pÔ¾ÌFB p™Ë<Íô’Ý@ÌeÛ¬å¸ïc™e3ú3•hÀ­–7ð¾c5~]{F5«rER:ÓW6³X.å ÉâvÜqÇàÅ_vµIÆÔóλ�ãÆÅ¼yª2”RæZú˧Ÿ~ŽÌÌ œsÎÙê’uL õ¢ td’¡L,”ì¬:’ýKÌôF ”—¬ûí7YeÚ“’›[·nsí—²PRb[ô‡.½£k,A…e0Öˆ¾OÐ3±É{*WuÄD&Ù@† êvì»ï¾ç¶]Z:Ä­d!„ô‚5—Éä=1¾¯Y¿7Üñ0V¯Ûl(‰I‚AÞ׿Ö6<þì›Ø]V‰K/ø1Fް©j9R22ÐLfþž£/5O¸ôŒTÓ™:u –.]†üÛ>Éø¥›ØôRë¢Wþò—¿ºé¹×‹î9r„Š I¬ä‹/¾ríc×ܹsPTTäj»í¶;Ü2ŸJÆû .8ß ùè£OTÆV‰‰îñ•Õ^â'RZóŒ3~¬~Ö_|ñ¥jÓÙ¸q®¹æz¥¯N?ýG˜8qMWmU:M²ÇëH)QÑ[fåÈ !„ô?h0#Œ¹¬®¶ÅoހܥOÁ/qš°J–¥HsšÌšs€Ž$ Xä}µw8ÍeA÷âð§g òÿ.Tb] =1™E ‡~¨  éTUU«¬;wîrë')yO;íTUÆ‚„Η›ÛÂ’¹Ìœ•sÏ|À™BÂM8 õ‚užNû©{go•ôDyç8«Õ¦4ü4Þ‡ƒ¹'÷Ôlæió÷Üfƒ©‘¢7Ÿ«·¹ôÒË|î—à  hJ‰HOÄPoœš••©éŸÿ`èÐRWÛ1ÇŸþô<4483ÊHS‚Œ×^{µ2¬I Ô¬ „´Ë¢#³‚ °x=ûŠü®?òÈcnm—]ö;¥Ýt乤ü‚xõþå/îÒw6lp;ǹçvã¤ieð_ÊOŒ5Rð­e *Ë·µ!Tö”ˆ#'9 cÏ,kDe£ïìÍ+´ç¢ÁŒ*áÈâÙ&™ TŒ§±O[>Çsø í½dp¬ñ-¶á"Ëc8Í:?.;�ÙM™ªÔh8Ál°U6î q™ßþöbe€úöÛ•ní?ü°A-ÿùÏ£j uÆŒý±pávØ!Çfä¾}÷Ýw* ¤3þA*K‡ñù¤ä“h1¥ o¿ýn·ÌeR^{Ñ¢®Ì`§œr’6øz¡Ò:¢GN:éõž‡KïèKV£ÁLtˆÙ¹Ä$6dÈ`UÎJçý÷k:è·~žå1Å@ÇÒó„X$\qA2]———cù·ëpýmcËö=ûù÷±'XmxgÉ—¨ª®Ã_.=ã´Ø˜œÄ4ˆÉ,Ú5O8ôŒ¼² c:r¿÷Ì’æ©WdœëñÇVtæÍ;¿ÿýå® yrî§žzV]¯ ïÛÑG…}ö™ tÆŽ;ñ·¿Ýèfè]!“ëÄì¥#ch¾ fr­=t¿+¦$æ9ɲ*f|#üã”v2>×…^Ï÷3B°D&q#˜J3/©sëêêQøÞíÈýê¿‹6”Räm2*œÛ yKmVçâl›‚ÇïBþ3¨Ù2û¡'™Vz:p.Ž:êM°þÒµ\uÕŸñ Ï(ã™I!ìùå ̾ dÖîŽÜû±vßkBHtèà«t¤ÝnmUlõóx>—qñ…d ×ÒÐÐÐsz^c¤é­ç‰Š‹‹T@2==½Û>™‘êYFSf™Íe‚Ì„ýñOsk“ i2»»/‘Ò 2;XG[%óš'2¸<kÖ ×¶ê¾ür©kÛ3XûÞ{¶Ö­íì³ÏRÁV™Í+ÙÑdÒE¨”Õw Ò’,8ïÀ,Hìüëímøø‡V¿Çì© í¹!$æ2ɰcÇli܃Ë,OáI|6 Ìe:m°â ˧¸T{66îRï‰1{D(ï­Ñ®wd°Q²}]xá/”ÁÝ ¹gKö›o¾Ç{{쉀2É|ð7s™ ƒ»ò\Fä}—l!:2`kdæÌnæ2A2\r‰{ÖV)åJì(ÜÈ�û±ÇíÖ&™FŒÈ`í¶mÛ]ÛbÆó<†BbpšË$†!™Ë>ùr%þrós v»Ë¿]+n¼«×mBYY™kü$±¦hÖ<‘Ô3ÞðÔ+¯0šËÑ2YÎȧŸ~æ¶_Ì_¿þõ¯ðü Ï<󤩙+%%Ùm[Æ}±ÿþS»Å”=tQ·k;昣ÜÚfÍš©²Ïó\„BúÌ`F"Q(å$}áûw ÿÓ‡ÐcRë´¤M™ ÒTí�øU•÷Ø*B½ç»ð±;€ø8TýèçjÛß Z,Ì–õDf _rÉEÝfrVTTºm_~ùnº_ýê•éB2y¼úêkj¦¨|™x÷]÷òR’IÊÈŒùÂ*)ÓÓÓ4á>³gÏĉ'ïV&AÞÃN8Åm6Ê¢E qË-7›^¿|>찣ݲüæ7á'?9Ó­Ÿ|{á…—Ô—)• _æ¤ÖøñãÔ, ,z´ö”º–È;#ynB ”pdþ’¿Çòh³Ú´¿Ãñ–Ž«v|²:žÃÛsyk«o¶©É¹¼ã]ÞgñØçÜÎÈè~¢@³šsL(ô§Œfrߎïú- ËÊÊ•F‘嬳ÎpÍVd†ª§IìÀçš>‡Ì~}衇]Û2 +šG2zõ6ltÛ³™”µ2Ãh(6nÜèšX ¯ÍXÒbéÒå8âˆcÕL^YD#IÙ†1cF«AØH3(;¿?<ßílÇ_6¸>çÎÍD^zœÊàúØç‹sí !¡s™gIL ’ÏØ€Û,o¢þM²ý,{ðk<ŠK;ŽÂ¼ÝvU–(77Wi“@KfÆz&3Ѭ’]ëÌ3ÿŸ|ò¾új©ÊŒ!± OD{HYo)Ïtã×ù|]2Hi†˜îe XLö:bÓñÌjzà˜žG²£J†1£1PJ>EC™Éc=F•×Ò‡$óˆÄ•¤¸ Fz#sæÌr+—E!±@°1™Ë$Vÿñ+qýí ¢ª¶ó;¿M…“»k¾ß‚?ßx?n¸âêgPRR¶Lf}I¤ôŒ7<õŠÄ{ŒYÆt<ã=’©LbEf1C‰%Êþ-[¶ªñ#ÑGkÖ¬uËØ*ø3Æåççwkó4¿‰Yßlü);;Û•9_0Ë”O!¤BƒqÑ“ÌVx”ŒY‹ïBþÇ lÄ·¹»µ'¢=i„ˆ4q˜—£©*-P“¥=j¯å{€º:M!²„Ñ\¦SøÈí°§¤¡ê¸3•ð•Àg×Ó.ð£ùË€tióäÚkoÀo¼eºODûwÜ…çž{¡Ûïy}}¾ûn•Z{ìI5è«—u’÷H2­IeÏ?ÿReUî‰|y1šËd�TŽ7"%d¦Œç— )*ç–EJ;H†ŽI“&"l¯¶aGuè³Ò%[Gin~(³šŸ¿Ê¦žcXo?„è#˜Xùûî4…vï—ÜdÀL΄@ï·{÷–©Ç¹·TÀŸ¨,Q;ŸEÇä¼qå.ãÔ¶EePŠëÜVíg?Kç~›¦A:¬mxãWÎÁ»AƒJº½Þp”î ‡žˆES¼'ÿûÊ$¥#¯IÊ~KÑhœ’mÉò%YÊ)QæIII±és˜µËñ}i0óœ xNðFmmký׿þ¥ÒbFÚ2W¯^£Ñ„'œpœšX ƒÊ¡R’­UÞµQzrrÒâ°`\ âG>kPåÀ÷ž¬$þ>­Gc[`û’ìàͪ„â‹PÌe2HUÛЀÇ,áy,Õ”3‚è4¡ 7âUïØ‰ŸW-Tƒ{böÑ Í±>à(R¢R²[è.$&¸|ù×øðÃÔ?Ý8/Ƚþ€æà¸ãŽñz¾‚‚|Óvy_óóó”NÒ©¬tê ÑâÆAMA¾½G²ÄÊ ¬Ž™®ê DwϘ1Ë–-wµ-Yòšh ¼÷Þb·þÇ!¤?á/#–gvU1—}¶t®¿ýQTTÕÑ\Aä½ýaóN\õ·qÓ•¿TúEîµ’e´§š'ôP¸õŒfzEŒlff63ê´±I£ lÕªÕxúégU–zãØR¨°ä6!„P`‰Lâ"_7—åx >ºa'^J%Ú€gªöëj s`378âpà¾g€/ö�o¬ÿø×ÿ€§>Þ×®–iA§ÛÒ„f§¼’œ$&–~$´óßwrÞzN ÀU)1ê»{ì=ËDÉàáìÙ³|óÍ7ßz5— 7Ýôw<ûìó~ß $ßrËmxÿý%®6™yjD¾@|þù¦ÇðÁ‡nÛ2 µ  ÀµýÔSÏàšk®÷[ÎJf§üò—©² =¥ÍêÀ]‹ëÐb íw!Aûˆþî°üñÈL)5Ϫ&ç¾{Iz.Bé zZ\€­­m*˜“˜š!$!!^™bÚÚÚ]³ü<Ëcöö½Ù_ÉŠž^“Ùë å|}ñÞD èII‚+®¸¼[ÙG}Ü4 Gæ½¾¤'Ïo,gž••¥½/ÿÆEýª[)#òýä‘GÇÙgŸçWûbúðdŸû7–[ñß/•ýâÀÑ)øõÂ,üx¦sÆïÛkš±nOàAß~ž‹B<ñwïö×fÜ="åËjp•å9<‡¯h.3AÞ“W-Ëq¥åy”5TaçÎnüÅмµ²/Z‘¬ù’iô¦›®ÇsÏ=å6YAxùåW}ßÑá݈mÜÂ5Mï³ç`õG}¢%[ŠÑ\'Ùì,˜B‰%‚¹çùÚ–ÉyåååX¾ò{e.+¯¬íWqhEÞãï7íÀÕÿ76hò3ð£ˆuÍÓS=cFO_£Ä ud¼è¼ó.Pf7Os™dÉ—lîcÇŽ!„i˜B†ô)ó'ƒ7¹_ý…Kþ‰ˆ¨ ´\ý0~®öM¢ øò-à›OV‰»¨ÓÚl˜¤[N*0g>pö€‘f}Zx¬s¾[<x+°L ø´S&B{òÌ, t$°ï4`î!ÀüÔ4`ÉëÀÏOk„I]|÷_ላGÅ‘§ªÙ%z‡Xž5+å:d–ÆwÞíj“©W^ù'¿*ô’KÆ Åœ9³ÕLÝÄ%Ù0þ÷¿×ÝúË— )C)å07mÚŒûïÐm†É}÷=àšå"ƒœûí7YGGf»,Zt°Û9åù$û˜£9MÌb’zÙȬY3ð£¢Lh’þø±ÇžP‚|Á¾úêkñôÓOôègºx}‹*ã*'NKÇÈ‚´ÙØUë=í_u“K¾oÁQûFÀ°I!!ì¬Y æ¨,`!þݵ¨Ìbv5h&çËÌÌD ×å­-\èæ-å›t••,”óŲ–ñ†d35áEgKiLÉ<fVIŒæÆ,µÆvOúºœRaaÛ¶”¿çž» ¢ßÎ9çlµHF?É\&¥ äQfôƒ­¢—$Ãìï~÷„Â!Rñ¦[D¿xCö gÎÉÀ´aN“ض*^ù¦ "å4ž B ”pšËDˆ¹¬ÒÖ€+-ÏaÊ@|³Ûð{ËqCÛièØÞÒÒRsúCV#>øoevÒ9øà…*Nb†ÄZ$vq×]÷¸Ú6oÞ _ˆIÏ ™´'ÜèY<$S|FFº—ìº×î‘¡ 29DÊ),,D´°hÑBüýïÿ@S“³„§èyíŸ~ú™[¿£Ž:Òõ;F!±@OÌEÆý2áHŒM«×mÁu·>‚½å5{˜}©7ÅÚ¶áú;ÅMWüBÃH|ALMhžh!ÒzÆ ©XžžæºÇ ?ü C 1œËX˜ñs!1•cŽ9ûî;I•Ö–Rš’Á˜íB‰4˜…7AïoÖˆ” ÌYù*Šß¼ã¼9ÍeBjº¦üNu.F6¯V| Ea–k£9š€ª¬µÉ’”§EŽr€™§þ ½zÄ~3=ë\ÿúsà‰ûµçÖ‚>uÕNµï¼N)µ9f`ê,`ÁQÀȱÞϹèXàw×·^‰°£]Ó »¯F\Vj=Q}0+Ùèìjþ ¯¿\zée>÷‹ˆ¾øâ 1}úþùrpÙe¿s•±Ð‘úò—^z‰ˆ”Ef|\~ùï]ûG¥J7\pÁ…®¶mÛ¶kÏ*WS¾” fŸ|ò©úl¬S/YÍ$X¨#_2Œ³PÅ<fÛÍ7ßàúLž¼/.œÓO?Sûrí,ë°qã&|4–Ü –åÛÚ*û JÄ‘“œ†±g–5¢²Ñw]ÙÚsÑ`FémÕ;þö755©¿í‰ =»7JyJ¹45%h÷‚ôn÷¥`®)Hö zž?P³™‘PuC°%9û›É¬®®¾[›LèÄÈn4Æ rïŸ8qŸnÇ|üñ'nÛbÀ2d0úÏòœëÖ­W† ‚†B}}½*5!¯KJ‚ê†x¸ðÂK\F|á믿A¨$'Zpñ¢lÜòv­Ï,¯F“Y»Í?®‡-@ß~ªö—hÏ‘œÀBH`«|Åvä»§˜ËvuT+sÙ.Ô€ÆT(“Ù¶ÓàØáP&3ý»O\£IãH™k=«–°k×n}ô‘^µ«ì7â-¥#ÙéÏ>û¬níŸ~úy· F=3nÜ8·{¼ôÿÉOÎìvžåËW¨ F¢)Ǽ?‡z^}õ5µ-¯YâJŸ}æžÿøã!„ôüá=3¬JYã­Û÷àºÛÁ¶et­_²EûO2ªÆYômÀÞÙG´ƒ{<aAÌÚË¿]Ûî¹ôõ=^&¢U¢ÅTi=ãÑ£G»Éz°3‰ýØ É)äøýëŸÝÞ;=~D!„DÌHHˆð«­­ƒÅÖŽ¢ÿ]£5„9ó–·œï¿ß¨ÉÎåGè]öŸë\ÂÁ…W�k´ÀØ[/ ìh_Ä î½»9Aû¹ÕjƒpÎô¾ýaP¶¸¸S§NQóPTTˆ?üáRÓ/2ðé9øé‰Ù U"¶Ó`vØa‡àÖ[ïp•r’Ù)K—.ÃAèê/Ù׌vØ¡jÀXã¦ñ‹Žpá…¿ìös’L7b”»çžû]mLí‰Á¬¬¾¡–dÁyf©/¬_ooÃÇ?øÏì·§.´ç"„ÞÀW°RÌeò·]yqq=4˜iÇ'ÄÇi^-jÐËì^æí>í9Øĸd– 4XÓ—ñO‚1ŽÚ¿¿˜Ì¤ì¼Ì¨õD/Ë 3_Å`þÎ;ï¹ö=óÌs8òÈ#ÔìZÉ´*å¾|ð—ÖÌÞ/ù=4C7võkF x–ùž5k&òòr•nd¢Š”�=ÿüóÜú‰†:çœó•ùLe‘ ¯Ì–,¯wÜq—š9,MrssðÒKϹe�”~l5ÌÒzXæ~X^†jËe¾?wb2ÛQcCK»{ƒÐUúù !$“•UþæJö¨ {•¹¬g^$Nö¢°ü7uœìCøÐ€3™ÅІ™2e?·²P2Áíª«®Q÷rrr\í2ðùÚko¸ŒR:þâ,2Ð*ÇœpÂq®6‰]ýë_î™Ýå~>sæ ×ö‘Gîf0[±âk,^ü9ä`W›LæðÌ/ÚJâHFBÕ;áBÌcÆ÷MLw’ÉLg„ñ7n,!$VÆæ­¯ÜW*++QVQ[îyë6lï4Z Œ‰9úÛ"R!Aû'=#CK 0¤$™iÈËÉ@zZªÚßÔÜŠšºF464aWY vî­BC}£šô¤¿»=•âozïÃT\€_Ÿw²Ò;ÙÙÙçŽþÌ­áÖ3fãK34&D¯ fO>ù”ŠqHIN#o¾ù6n»íe —8È´iST–5A&Ø‘IvžïY]]]·ì§„BH$`›„„ˆ—””d´hâ¯jÌB¬}agÌ,àìÛ1`Axë#š²] lX‹pS9÷õ28kˆ(7ûdP])s ¢\–³Î:¿ýíÅ>Ï%ŽžCoÈX)‹))ˆËÊÊÔ€íW_-íÖÏø%X8çÏ?ï¿¿ÄÕ&e2uƒ™\·d53rÌ1G¹Ö¥ –1»™ e9ÍLhFäKQ$”ßžƒïv¶ã‰/\_rÏ›©Ê:IyÍÇ>l– ósBz›pd/“ “d˜²wX1ºòY$ÚêÐS:âÓ°!ÿÇê¼rö Py^Ÿn,kooÃ{¿J@BB¼¶Ä©ãDŸ9Ûb`Ó×·u}ŸdiljVÏ'fg3½ày-¡�ÍÞï@2¤ù{®X2™I9î+ºCEìÝ»K—.ï6˜)ƒŸÆN’ÝCNu$&­sÏ=§œr’ÐÞ¾};^|ñe·rQ¢£D#‘Ÿ»˜³jjj]mbn“2äò󗌬z°SLaFÞzëm50+†5Éž&™UO—ÉäœÃ† SUyN¹c‰‰ûïHÁÄ /iÑZO=õŒKÓlÞ¼EÓMŸ©×'HÖ Ìêæ5¹þ_üâ×øùÏÏS³‚Å(!:K³F¦OŸ†ž’X†ÁåÁ›?³ÓÏ^H!á*7%÷’]»vaggæ2šËBGÞ»+,ÏàÖŽ3aÙiñY.Ó“hÉêá ¹ßwßne&Åð.±Ž}ö™ 2½KCÊNy–´N;íT¿Ïqà 7ã³Ï>Wƒ¿b.½äy.¹ã ­l‹Y}÷î®Ò˜W^y5¾øâhû‘óÈà°dž7rî¹?íö¾ªw"…¼n™0 ZHxî9÷ɧÌ^F‰%‚Ñ*Þ¶åQ 35µuø÷“¯ã“/¿Ób2²¯ÿG•õû‚·))ÊÁ´}Gcª¶ /-BFz*UÈÌÄÕ¡½GV« MM-ع§߬ڌ¯Wo®ݕè¼g=Ô¶;ž~i±v-%8éèùJïÈdÉž–ï ­g< bÂõ×ߤÆ$®ræ™ÿ§ÚŽ:ê¥WôJ4••UøÉOÎUñ‘ñãÇ©8ÐW_-ÃóÏ¿¨ôù²eËÕ’ššâ2˜»=ÑEãÈdBIˆðí·+qûíÿT1"B!$ÒÐ`F¼âKì˺ "I¦ƒe93pÂl0ËÐÄ٥ωÉP¤eh#m/i‘£™@SÅ &Ü—ŽžŠ©è>ø 3hÿþ÷Ý2sÉ5ŠéKLe2ˆª#Û’¡ìŒ3~ìõ\þR‹ å•ÿá…^rö‚E cFƒÙ‡~¤9ÿ¤Œmòå@Ê9éÈ@©q欤üöäÝwßG Hð´'”dÅck•Íëþôä8äh  Æ¥ !xä³Ì›‚ý‡'+³Ù>­Gc[`Ù K²3ùBHoã­,ƒ g%H”ß²*,æ2!¾£Íߢ"n–2÷è1½!÷))á°wÀfOJRRbg ²Éu¿ ¶<fOLg¡¾Ó'ðÌdê @ýÍo.rk“àã%—üZuÄœøðÃy=˜ïÍÊ@xà\¼þz—†3×ßÿ~«Z>|,˜ïêgÔ5b^ÓMb¢¹ôW³R>øõ(ƒ¦2H+e«$³ë—_vöß~û]µxãOºÌ•¡L×]ô+ÜvÛ®ý’Õì²Ë®ðzüàÁƒºìBaÒà$,Ûz9qŸç”B „`ÍeÞt˜æ%sY¥­WYž§¹, Ô¢WáÜn;q»w+ã·>qÀ¨Q¢5«‡/¤ ÖÍ7ߠ݃ëf†×K9úB2tèšÂ4Wed—^YÌÈÏÏSÀˆÄ·n¼ñ:e6׳ÈËÀ¬Ätd1cÑ¢…8ù仵ªw"‰üï½÷ní¢ ePœBb`Œðr¿‘ Eo/ù Ͼ²D‹ƒD¨‚N¡—¸cÙ¤ññ蠩˜¼Ïpde¤#99Q-ˆñYî ro–Ũ/ä(‹ÜŸ³2ÛQT˜‹}'ŒÀ‰G€uv`ñÇß`åÚͰÚu}hm³â_ÿy£G Vq$¹1šõdœ©7ôN¸õÌÈ‘#T¼ÁhtÿøãOÕ"ˆ9\b²\ý5¸ðÂKT<O“›1®áÉèÑ£”!^gÁ‚y¸å–d×d;Ñ=bf“ňѬN!„D N•&A¥+6⎠ÚH×\Te GØÑÒß<ŽÀ€dÔxàæNv˜ˆ´IS•à!ÊÏ<Ôß“H _6†-ÅW\î–ýKÙ ¡– “ý³Î:G Úš q™Ñ*ÙÉü1wîn³_eæÈ7ß|«Öõ/:rýž_¼BE¨†Êôá¾ ’‘ã¿_6ª´ÚŽNÁ¯fáÇ33Ô¾·×4cÝžÀß÷Øy”óHNŒõ–Žä×­@8ÉoüqÖu~¹‡É½ÀlZ[ÛÔß{‡#ü¥†-p¨çooïú{îùüž444¸-’¶ßÛâÙ×Û±Þˆ&-iÄ0ûí·˜fÊ çu×ýÕ¯i^²ÐÝpõ^³†\xá/Ôó˜!3vu$:kÖ Ó~ë×ïZ—rÞ?W­Z­EóÜ~û?LvÍ®ÿÚk¯VÏoäÿþïtešÓ3Ãøbß}'áßÿ¾?àR꾘3*¹È4&çœ=Šºˆ~|eoݳgê¬Mø‹å9ìD5HxØc©qfƒkoÔw+#Ÿ±¨i$#ØÜcj(7CÀö³spÍ5Wù0>äE8ýôyÝ/ƒ·÷ß²²²ºí­ôŸÿ< úøC ç2°lF z'’ˆÁ̬ܖ”H7{í„„ZÓ¸.q ‰Ó¯ß°wÿçU´¶Ë„hK¿^äÕK¦ùÑÃJpé'á¿: ˜Œ!ƒŠQRR¤ÆBFŽ¡ D2y«°°@e%ÏÉÉV‹¬K›ìsö®Ìî²=¨¤̘ˆKq2.¿è4L[Šø8KgéÌ®U;°²º·Þóvï­DuuµKóc"ì ©gd[Ƨd¼Í ™ §3}úþxðÁ{½Æ`ŒH9ðûïÿ—[ÌGJxÊ5øªÌ#&´sÎ9„BH¤a3Ò#dà§´t~(]€Ö>ްpÚµÀ”#0 9îÇÀŠÏÇîF8ø~ÆÁ*SV8×¢ I1üÆo¹¶¥“”™”AÎ`ùç?ÿåf,ËÌÌPAÎÙ³g©/p"ä%{Í¡‡åó<"ô<òUâIGJkΘ1_~ù•[ßcŽ9ÚmÛXKÁÓ/¾ø½Á!RñÁ÷-¨nò>#Lö gÎÉÀ´aÎÁÐmU6¼òMà3Þ¥œæÁb¯T+!$vñ5ÀêmÛs]‚›2S° î+ÄÙµ¿…qáËÄh±[QÜøv'¢î3¦ý$U¿í¬Ö¶ˆåäÜÐd6§YÖS·ërvi ÇûÊhÖ“2SÑŒhj 1óçÏSƒœžï¿Ù?gÎ,•LJ#H‰M™Ý-ç4hˆ”AÊÜÜ\¯ç(**“O>ŠGy\•¤Ú»·LµKY ¢êˆ®¹ë®;ðôÓϪòRfJLŽÙÙYÝÊI‰!Lµ’‘LJ_ÊgFúHæ?™¤òç?ÿ§žz2^{í ¬XñµÊà*^³²21|øpõÚ¤,¦h/3d€XÊjJ&Ûå˿ִßu|JJ²*S!Ó¤T„¼—á"1Þ‚ ægá¶wka Óäùm YÎ)ç&„„«ÜTyy9ê›qå%lDHxÙŒr\oy7¶œ¦îozI#Y=¢=‹™ å£{ì?ZŒâK•qLÊ1UUU©Iu»nÑ2sæÌÖâ&‹”Ö”Ë.û2‹IiH)•-šTJ~ø¡Ê˜ž‘‘áóºžþiUFüí·ßQZ¥¢¢RÓR©êý—X̉'¯â:ÞFïD y¿ÄäfÌô*œpÂq „XÇŸV1¶K\¤¢²w>ôÊ*ª¤µŸWÆ´ 5)Ç6G<9Ùj\B¾ßËxŽÑ|ìk 9FJ,Ê"q™ÐXWW«/ãF ÁâOWâ¥7?GcK[HÙÌ´«Àªï7ãÑgßÂoþ#e†ÊÎÎîÞ/ʲ˜ áÔ30Gë±ÇžÀ×_£â2ócŸg2�‰S¼ðÂ3J¯¼÷ÞûjJôŠhÉÔ*:H&íIò3$"™Í¤ŠÏòå+T©M1·I›ÄN:é·q2B!$Rz·¶¸ÏÀ£Å˶¾Äõ%¾³-Þc‘}2…+®½Ýú9b3qm\T¤Î·--ּͪÌBˆÔó›µû*« é\—ò!Ž}ýçH´µ¢Gì ðÇÿ!ì5Ÿb›ø¿EÀòOÑZ2²ñþu`ÚÌ™*°fé¬é /L>Ø=ûÅwüíD¦ ü]yåÕnm?ü š"\~ùn%DlËl3-:Ü­NýÝwß¡¾$Ùµk·Ü;Å­í©§ǸqcÝÚd†ÊgtÍ‘ÁÖ[n¹Y{þ®ŒRS²j‘}1°¿€<ñÄ#ê‹Oo°½Ú†[Þ®E‹Õ÷Ճǧ*“Y»Íë^«ÁÞúÀ2é¤&ZðÇ#s04þfBb1ðÊ`Ojjš+¿BäQ_ÌèM]ãíùi÷¦wÄ$S^^ŽÆ2ŒÞû„&S,a5˜Á®ý ÕÞ—…§™CÕ¬S³ìT2+´©©Y»W4¨ù­zIY$x(ï¿ó1N=ÊÏJ_w>ZÜÖõ}òúœK+¬ÚÏÅáˆSrºÑÍìçºgÏ^õ¸qÃ:õ;à|¾®kp¿žÀÚd‘û_z†ÓT$9oÏïO“ĢɌÄ?”YñàÇõ¨iî™ËL2—‰¹l\±ÿLl„ðÒßõŒg›q]le0ê>ÇûxŲ$rœâ˜… ,‹Ô€¡Ñðí/öÒ—ñ˜ÞâCŽP%¾uþú׿à¸ãŽ®»îFüﯻ¶KJеí—L3›B6ѨgB5Ã×el`ïÞr<òÌ[¸÷‘WUŒ¢¿â,‰ .ÌÆ¹?>S&ŽTÆf™ô%Î"ñ·_bJN3U=Ön؉ÿü÷mlÝU©²™…"5ÒÓRpóŸŽCÌÐÆžŠ\±,³l_¾¶ÝG!¤ˆž æí$%%ÎÕ$¨\ßùØá±8:í†Åaxô\àeÛ×£çº'~ìá'¦šC>Ä2 ¢xÄl*™ ;?BÈHIÌ‹§¹L'Alºûià˜ýµå „Êú©ó1hèpŸY0<‰•ì2ÐþàƒÿîÖ®Hƒ˜%ݳp <¸[¿×_ †³±cÇ`Æj[J*,^¼Ä­˜Ý<‘ŸÓAÍu3ÅÝ{ïýøç?oïö¥òúëoÂÒ¥ËÔóȲ`Áü€Ó;{cX^‚2Éà©/$“ÙŽ-øÐîØ\f<?!„ôáÈ^&ƒ±bÀ\ó ,ª4e$þŽ9P\÷¶'¤ ¸Õ¹eÒ¯£­­]°::lHˆ£ÁÍø<ÚýÐÖ¡-¶—0¾}¡ÌtI¬hÒÿCØÍ'çáËÍmX»»õ­vl­²¡Õ9?%Ñ‚‘ ÈL‰Ã¤AIª,&3—B%Ðg_ãºd“¬ªªÆ—ŽxÕÞrߤ;/Y–a_”âÀêñj°U²• F Y=Hß!q©•+¿sk;þøci.#„Ä<f/“x‡ÄCÖþ°O¾ø¬¶Àcα†Ó\fÁØá%øõ9Çbݢβ—¹ÝÊ zf<ÕõEïc„÷¦22ÒÕx^mm†ÈÿãŧážG^Çêïw„”ɬ¹¥ ÷>ú &Ž¡2ŠKö.¹oõ×ìó„B¡ÁŒ„ ’ÉŒºµƒæ„n0‹×~ó”¦pó@ ””·?œ{´ó[GlÙo.¦k_Nô`f,"³7W¬øÆµ-³ª¤ÔÒ¥ËUÆ/#’̳Ìd È™$jtn¾ù\~ùï1|ø0TVVâå—_ÅÃ?ð99æ(Üy§³Ì© Ÿxâ¿®}òeKR,›ñ“Ÿœ©Ê]É1Â_|…ŸýìøÑNQ¥NeÆùo¼‰?vf·“,2²>}úþÙ©/7–[,Ùi ŒBb ŒcWbë^d5¯Ý0"'Ÿ3[¶ µe'ZG¢©©É­´µ\‡šYlm Y‚ ”{Üc=Ëk;"øÜÆçÄP ¥¤HÿDŒa󯦍E °w/©óZf\ʃ_²(›&{BHH„š Ĉd(‘reö:ÜfyC•5"‘EÞãÛð&FÙ‹X‘ }—ÒmÀXõ‹ÁR™$|H©p)Í%eÁ?úècUšSGâFR2œBbPcFÔdÕª­kÄ¿†êêÆÎýï¾§g.›0j0~sþ 2¸P[JÔÄs¹ÏëcFCº´é]çq¸ÂCή—A̘-Þi—ò›b€—’¿ýù ¸ûá×ñíº­®k æµlزO¿¼ÿìdõ233MúÑTO!„ôáàôdP?Öjµ*¡:¼#ô,[8ýz`Ü &,88÷7ÀÃw"F5רGù9ɬ”Xè|˜qQ‚o¿ùÍE•#<?þ¤k[jÙŸvÚn}òòrUI'í£Ž:wÝu닟Ãt.œŒŒ Óã&OÞ¿üåÏqクÚV­Z­oȬÖY³f"Lœ„e[Û $c!„ô5Ád/“�§Ì¢-­ú0¢Æ.’š°%µTeÕ4š»ÄìåÌ^ù¼R~Stƒ<§àìm¼•û¢ÉŒD#’¡õ†ó°d} VlkÞº5 R’éÓ±hB*’ø»H /þâ9ÆýR ©¥½ 7[^E=Z@z‡F´ª÷ü¶ö³ÔÏ@&ÃéÙa™Õƒ/¾ø2Þ}÷}Ó}çœóäççƒBb™@ã/2©Nâ ï~¸_,_×i…ïŸ÷B¹Å*-Ä%矀ÊUc{O㹌-ÈÒ®â4­Ø±»›·îQÍj2"TV²ÁÅy=r0† .BVfº”áRÇëf3Oä˜ÒÒRmÌ(—üì8ÜzïËX·y‚¥£Ãßø8M‹!¥¸ŒkÔ;„BHÿ„3âo¢_G%£ÔÈ]_ $&.�Ž¿ ÄüðÕGÀšo‚>täª/Piû…ú’æ™Å,XÍ¢¿¨¨W_}¥2g…ÊÏ~žš9úÝw«L÷˽üãoøË_þÁLsæÌÂçŸÙmŸYyL#çw²³³qÛmw*C7äçñ㟆ßþöb„‹9£’ñê·M¨i¶#œä¦Å©rP„Ò[ô4Û–d“ìeÉ›‘Ѳřq5¤µíBZô&ì£Ìm2óS‰V«Íi0³µk—Ùë°iÏawX´Ç$Ó÷°·´�ƒ$–ÙQû¦©…BÂE8JcŠžÛ§ðÖ"øACÒ3ÖcžÃ—8«qžŠÉèY=X*“ÈÄ‘/¾øÒtŸLX<ÿüó@!±@Oc/óhhh@Yy5{î~]SLs¹YiøÕ9Ç`ÄP§¹L&Í{›d'ãnÍÍ-X·aÞý`9¾X±{öV¢]{Œ&<Éœ*¹Êããµq’\Ìž6G<ûî3éi©*ñ€Y6³ÄÄ 4HçÂsÅw>‹½UuêŒÁPWß„‡Ÿ~ ãF—*½#¥>ƒ™ H!„Ø3Ò#$bÓĬ¥\x-_ ÉÌ~ó4hëÊm@…¶TkÁкr v¶ìu®×Wh}ì@s³b ] Œ˜ L>˜´PñIGÄiОÿ³ÅÀ—ëVjת]W{g¨¬M£k¾ È×–"M´;—’!ÀБÎr˜ÞHJþùpìþ@kp³³¾ýÕ•hKLT_Ö̾H±&ð_Tr0bÄpÌŸ?G}¤Ê²ÒÓs>ôÐ}®¤›7oV_à$kÙÿ³w€M”o’tïÉ,eï-!8þî½q£¸÷Þ{€ŠâBq+ndËT6"{ï ¥{7ùßó¥—¦iÒ&mÒ¦åýá™kr¹\î.÷½÷~Ï÷¼}úôÆõ×_«ÊezÂ9çœ]F`‡¾}ûTø^–B8í´˜6mº*ɲ ))'´ïɲ´ TIÌ .8-Z4‡7aÙ§[FáÍ™©(ô’Æ,@;í¸N®[ÁŸ(Ͻ,##S9y5IY€ê¤þ‰ØÙJ‰™Ù ™™™©Ú𢢂j+h¥—_ ÈÎÑqS/£Y¸S6J\ÌA„“ OJc¦¥¥cŸù&c)„šá[Ë?\Ô©*oQÕR™BÝàÈ‘£ZŽ©)öîÝ«D ‘‘èС=Î?ÿ< 2‚ µwݢw`þãçi ±c÷ábóøºY3ÐhÀ5AûÖÉJØä|0vaarsó°yÛ^|1y6,ù¹ù…ÅûÍP&F0(/z OKæï=p ûÇ”™KÑç”ö¸îòáèØNš–ù,>W¿~=-n4ã†+‡ãÍ~QŸå™1Ö5¶l#þY±#‡Dªx‡NfÅ7®â‰ƒAÁq·…6¸ùšÁGƒ‹¿õÉh÷¨O¦âçL_‹âc~~Áߨ¥8 ´í'&õÑ 99ÙZ‡ŸMš$Á¸JB–×Ùj?ÏO&+翉ĹïÂcîþpEùËÌùøü> 7•"P ÒÛ�ºŽÐ¦3€¦]=+$ï –=\»X8˜?X½DËÞ¢RP€öÊ'À™•¿ÜıÀ ÷ÁSÞù ò/…˜˜è2¥®Ü™·Gû“‡-‡ ðÑ‚ô*;™Ñ¹Œâ²6õ!BífïÞ}0jɰÐÐ05ú‘m;Èø¨OΨ®¸ÆÙçVô\yn©©i0Yf‡¶º—©)ÐúXž8ÞSÌEÖ¢¨ ø±»þ‡¼ÄS¥%sµ}•‹Œt–½¶¨}ï8é%¬FõÈc¥Ï[ ¥æõ×XúÙ:åÚYâ 4,B‰šYÎɑǨÇÍ›Ökç€Ñîs ÅŸmTñ–©ø¹’×Qf9}žë¡K[Tt¼z®Aƒú¶Ï+“<ur®Iì"‚ ¸Cm‰gÊs»ϰ,#ã™',“± Û!Ô=--ð’ñ2•—±/{X^¦¼FâA„“Šg<íc²ÿ›Ÿ}ìØ1lÞº7ÜûIUn\u÷퀻n:IÚ\Míá~á@ÇôŒLü:m1&~3©ÙÅ‚+(c1%1+?�úîUËY?J_‘a!¸úâ!¸ìüÁˆ‰Ž@ppˆÓ­ËÎÎÂþýñÑW31eÎ ëJ=7¸MÝ;·Äø—îDãFõU¼£ogeâ‰uAê>îÄ3žÜ'û;AAýµvº§?9L–âG³Ýd±{tœàâïòç©03¡ î8Rè˰ì"ÞȵÓà1½/¨X\F†Þl]yŸ›•DÌîP¬›k¾~ˆKú\ ¹hZ‰rŠÿ-~œLÿ8z•†¯ý‡—ŒFhûÂE`_ŠQwkŸ«ur¯XOˆük {µ:^UuùN({ùÂ8,Ù‘‡ ò‘žkÆ®ã…È-(ÿ÷h@ó„�D†ѱa*‹)Îe‚ T7Uqز:we[ÝËŽW¯{™N½‹±#¦³ó&ä穬վó»hËdÒÍÌñÆI`ŠÁ>Ÿôƒ†éB1ElÅ‚2Û¼Ñz#h,óœ±ôëÅ.«£n¸V•¥¶§*®2òUA¨K¸+.ãý?]‘X6ЏÌXaØÅ–Í”ÙQåeè NÊ+•)1Œ ‚àï¸#.+ïµììlmÊÅÏÓáȱ´ReëÚ‹‹ Çeç Býz ˆˆ([qÇ*.ËÇñ”4¼7ñwü1c ÌÖß*ߢ=š´üIýz1hÛ¢15ŒG´¶Ní)¤gæâÀ¡ãضó�ö8†Bs‰L/#+õ'vì>„ûF_ˆz q*çâc06ILLÀ%ÿ€k¶â°íx¸ùµ…×mÜEËÖáÜÑj°¤ï8~Oq1A„Ú‹Ì„JS :‹¸BŽz˜¬diÌ›'¸¿|Hpú(ëtp+0o°à àø>x̱=ÀïcßÞnx 8÷.÷ßûöÀû/i½ª«V´24m \tujäY¹E%J{ýSà¬nZ¶8Ûí·…¯_ ÃáýÈj®F&éêßò�^ †Ö:DMdOJ!Þ›†”,ç?€¸p#î&qÒ¼‚àÿ¸êe‚“¢ª ôíË;du,«fBó Xûü´¼$•øcyÌêÅsQ¾ö®Dnö#k),ã>Bq¬à͉˜µX…âtS³šU›Hì"‚ VØ&¦¥¥!³0bÿ`f£ga å”˲Q·‚ '3Vç´ì?xSf-ƒÅl-õX×°‰Y0bHw´jÞP•Df `Ÿ‡bHŸŸ‡©™ûÁO˜6g9ŠŠ ĸl€6uëÜg 퉎mš "<”.(¥DêEÈÎÍÅÖ1}îJü½r# ÍêóµÌœ¿ ¹¹ùxòþ«¥œÌìC®‹Â·&ëáÜ3úà“og;¢¹L µšüÛ êס¡!¶xGò5‚ ‚Pw€Piü³ó5ò¿)ð˜Ëž¢ë£R4l \ñ¢¶Žç€ÿf}¬øÍêTæ ,GõÇxÏf_¾ã™{šNX80ò"àÒ€Þ«V¢³™öýoyxûY·ßbж9bÞTä^}‡9A¨ Éqxáü8ÌÝ”ƒ•»óp0­HÝb6ˆ6¡GÓ` iŠà�¹YÁ?q×ÕŒ‚*Š›ê[Œš$áÄ?8y–JºZÌù¨nX*3BÛgŒtYFFRRR°}'¢¿úã¶ï€Ádu&ƒíÑ`÷hTRëø\ée­ï5h æ‰Ç‘:â|0©’ QQQN·O”‚ B]Å]7WbyÆ2ùùøÃ²G‘êÄZ�¤äÃ|0–cZž&M‹a2 `ÉОOχ%[ËÅäs*´”W<b%+ ×R–a0DÚc¸ö¥u¤ÆÃª=†hÁR0,AFÔŽ SÌ«qyÞ�deei¸êùʸ˜I$‚ Ô4UWØ¿”““‹©³—âèñÔ:i\¦Ð¾rLTFžÞ1110b,iÆ ÊÌ!'7Ÿ? Óæ®D‘¥XÖ¥-T?> ×]6}Oi‡ÈˆPålOqY@@ Í žýtEE…/Etd8:¶IÂðÝ0ñ›Yعï¨êÓ¢TlÁÒuxÿ³)¸oôEÊ„ 00¨Ô¦rÝ,ç=ä´®øcö <r£ãÂOY·i–®Ú„§÷R¹5ŠÌÊ,'®­‚ ‚Pk™PiØÙXŸˆÿ<,Ù¤£µìeU1jÉÇn#­Sf °è`þçÀöî¯#0¡ÊXº™œe@Üc�pñõÀ9—jÉÑHx ̾û8|Àí·°Lfæå·ª7˜ U²3;…©IÁ©JyL&õŠŠ´NÎÜ4DgnQ§š":k+ Aé0& 4DK"jÛbÒˆZФ%ýTB0@KNª2“0””ª,.?‰âR”Ö×`×ËQ»†™‹`1[´„dÌL:ZÌ*ñXTX ^g¢’ûôøñã8‘ra¿MCÄ?ÃOöOðžˆïMd = ‡‡¡ÓÔk•u1“d¥ ‚p²`-õ…¬‚ü„åð …we¡pG,»2ݰìÉ‚å@¶LUÖîÝ9FuÑA06ÖîM›„ÃÐ$B=ššFÂÒ4Ü*r÷3~ÄRœ[ÐA™™*7#ñ‰ ‚p2RTì\ÎrSg/Óâ—ºÛ²©Ыr *vô*yÝb)R¹¨EK×ãû_çÃ\ìäÆ÷µJ®ûFŸfMê#""L‹"Ô:ŒFåmV泘Ïá ºÎ÷ꌤF xçã)Xµ~ ê3 ˜2s):µo†sGôS9¢€�S©u¢qÃDœÞ¿3¾ûm!<Ͱåá—©‹qjŸNÓ¶C/ÇY™¼ŒärAÁÿ™P)ØÑÇÎ× Ëœ~У÷âê×½_j*"9Æ:íÛ`-¡ù×§@Æñòßר<¢ikàèÑò—©ß¸üfà‚k¬å0}Ñîxè÷ß²}Œ»·¡ U{å„ÂAA8Yq5‚–]ü;ôØ -íÆÒš˜ié74(ØŠ£–85‚”b2ŽtÕ™ÔÿÖnêÑ`°%#õy«˜ vó%Ëóû²EªGaMRr½……ÅIK†?G‘~" ‘~‚Ðy‹”k™ûûê»kÕˆ)¿À´gRGݨDnõêÕS¯•çò!‚ µªºP\ÆŽÅ?ÍkbÈ„70×r@+²!–Ú´-ÝëB²J“–3]Ò´mÓ)âÿ0´Œ‚¡6µŽ‚©£–7j K ž×ŽÉ Ë\ßGuþê�ÅÅLA¨ ¸¯ÐÙª   –¬ÅÞb‡­ºØ¢ñ+j9›Áý» **R˵0)½ØW“r"~> yEÅÎf4m‡î¼-š6Dtt´*9YºÝ/3òõàà %Bãò¸ôùxé±aË^u ÍLüêOôêÖImuŒZ®',, ƒúuÂ/Ó– 7¿À³‚<Úg¬øw ¶lÛ‹¨Èé‹A„:Fíñ‘jGûb½n*<‚îeÝÏ„OIê�\ý0a/pëG@Ã6®—mÑ Ñ®œå;h¯ûX¸¸ç߉Ët.¸HlàÑ[¢æ[—~üAA(M^^¾9¶þ@bÎf•t­NôÄ¡ú¥¦¦"==áï}ˆà¹óQ/[‚°O?UŸÏÒœÎ(/íÎó‚ ‚P— À,· ?`)*‹šóÇQôî^;ùÌBÑ ÿÂüó.%0óqYyhÛhÙ” óï{Pôæ:äß°�gÏ@ÑÃËQôí6§«ïY|oÑ:k òU)SAA¨TåþšïeÿDfV6¦Í^s±³V]œø¯QÃxthÛT‰½èfM ͘>wvì.6r°„;n<-š6B||ÂÂB=•sQ–¦ŒW"²{n:õâ¢`,þüƒGRñë´`.v³w|/·µe³FhÝ¢añ{<ûÞÙ¹y˜þ× •c£ ^Ç•àÐÙß‚ ‚ ø'"0*G˜ÐÍ à]†£Ú µ–â|kpÙóÎ]6<˜µw²|P0ðìxà•ÀyWjÑwª…€@ ÿÞºl¾zÔŸ ‚ œ,¸“¨¢°L¹yå¦"*üè‚ý0ä×Dç£ÕñŒÔwÿ6Áy÷y‰à… 4e*RSÓÔöI< ‚ '3®:çØWXX„Ùæu8bHC¥X—Šü«æ!ÿ¾%0ÿ°ÓZ³Ž`É*„ùŸ#0O؈ü›"ÿ3Qôü¿0Ï=CNõ©ÍkÇf®vŒx¬ÜítA„ºs/t[ݶcÖmÜ­Œ¸ uõŸÑ€Žm“eçTZ2ÑÝ+#3Sf.Ó–5Âê:œ=¬ºvlŽØØhåFæø>w&B¡ñ[6oŒKÏ?ÍæŽÆ™?ç®T%J¹ %q‡õ‘ÛNíš[÷ðEró¯Eʉtäææ*WúÊ"1‘ ‚ ø"0*E@€µÄeZtx„K)¹Ä\ô0úÓ²¯µìpt03ißçÃ_€kï w0ªƒgŸ™Z?Y=Š%± ‚ ”Ewø HÝê¬Ò@Í mGLáÔÌáQ\fÜ�a_~‡š$ô;íówïFZZºJ~ ‚ B]¤ª.œb³œŠQ ›ÒQpï`N 2 `žµEϬBþ93PxßR˜§ì!»¾f*V«c¥‹ç+BZAÇÝò˜Qd6gÑÊéJ©žêèD¡VǶMUÙJº—ŠŸã¤ï“[÷bמÃ*ÿÃgb£ÂqîˆÞˆ‰ŽÖÞbÛož~¼N@@ ¢££0ì´®HNJ´®Kûwôx*Vþ·]ýe±è°bç5m[Ù‡Ô¥C3õ•y¸‡Ž¦bÅš-Ê¥-??îœ3‚ ‚ ø?"0*Epp°zÜÓqxjŒA×-{•ü$&Ã#ÚtLvë<ìã’Ÿå±g»G‹ïkÚV=ê£^A¡®áNrÊU’Swø J«ÁxÅ ¹ûQ0ÁÈŽÏøo~�\$« -ùüÅW* žžëöIiAAÐaɲڻ b³¡râô‚×Öh‘ïÅU~ Kj®8†¢×Ö"ÿ¼™ª$¨eåq|RlÔŽÑíXñ˜‰x^A8Yà½:s/™Y9X´d¬‚¦:ŠCh]°­[4‚ÑhÔ¦Òß•û‚Z¬%+7£ˆñ†öËQö9¥-š$Õ+¥¡ÊpAAHLˆÃ ~­%/•ÀÍ€¥«6©2™ú¶”Lµ½Í’ ˆ•t*qœ Šð×¢5ªL¦> SÿÞ®\Ž ‚ ø?"0*….0KoÚ˳7®Ÿ§uPæ ÆHêP2ïiyLÂ#-íDu­; Æ8vX»Òýåµ›‚¬.}Ô¬~üAA(¡¨ÈÚ¡šS3‚.WDäBõcMê™öîCØëà,_‰¢;Ur²²±’¬AjãŽå‡fšÿÓZqÏÛ;ÃÎ,X¶¥CÐÈ3Ã<s? ï]‚üKæÂüí¯»šñÍ6¯UÇÌÝ2™Ç‚ þ@UÚ#:Y±Dô¦­{±gßÑ:]“ý1Á¡AHŒ±+i)5åçaë¶½V—rzuo‹ˆðp&Ëbºšøù!!Áèݽ X•G¹–[¶íGžvL·‹ÐÅ,>. QQáV76O¿¿ÆÊ5[q<%]w)“)‚ u˜ nc°.Á™Áؼ²‚cÝ^²N�¼‰#Ůø…‡å1u:ؽïpÍ”¬R¼û<PྛÈñzM‘Ü\;v&5bFANÜu5ã¨MT” "ÄRýÛ£'!Ã-±ÎøÚv˜æ/TÇÊ~ô« ‚ ÔªÚqƶ± °�s,ëQÌÛS!8áHŠ&lDÁ…³QôîçÂ[̶¬SǬªqtº ‚ þFyÎñÜ÷÷ò È+(¬–2•55±7-""±1‘Å}k†2å+óò °÷`Šíõ@­ß­m«ÆªÿÍZJ³ê›B¸.“É„æÉ ¦¶¯:–ŠÜ¼B»¾?};­Ÿ¢–/^‰ÇSJjþ]¿]•ÉÔ«”w~‚ ‚àÿˆÊD¨4tÁŠÁ¡øö½?<¬øÕN––,ÝòwÉß•˜µ·s>[4Ë#‘—×ø~"ðÅ{½å`‹ˆ‹‹÷2AA¨€ ‹‰—‚ÌÞëÈtŸb±ÝÚÊuRûŒåV÷V=1).‚ ‚ wÖšñoá.1¦¡2X‚L\cÉ.„ù‡È¿ü/¾òŒÇòPUiÇjmÑž2®‚ ‚PÛpw`¬rró°âß-ÅîeuwâÿCµ¾{±X‰€K- ÜÜ2³smï AB±ã™.:«ê¤.׆ؘpÛky¹…ÈÈÌ)ÙâR8LFÂBƒlždžNŒq–¬Ø¤¾§»±ŽärAÁ¿™Pi‚‚‚´€4Gtõè}0ã.ÖÎFµ²à -ëZRv R%2‰½ÀŒe*gü‚jeêdàñÛà)'Ú÷@`` ÌA¡ÌþÕÁh© ™•€ÃGàOTz9SAA8™p%¬Î굮 ‹±•ÅÔ)NûŸ>…« „¡Q˜šÐ8†¶Ñ%SrDÉkÑZgf€¦-µŽRË´½È»b®r63dU-&Yh¶3ýqõAê"¼/,,Ä¡#'°}סb³tC¬e)ƒP*¾²�v¥Ì ‹´î2‹MPhB`€É¶¬céJÏ'sq,aýLV· ²m”诰dël%2-JhÆ*FÈUvpUkÖí@vv. $®A„:@�¡’èB¥ìV€Uàù9À«çN:žŸCQÛL»m Ô¶½QTŠ6KÿýùxàœËP-Lÿ¸û*ín¬Ð£·™ FÒOÍS(‚ ‚ë;£…í¬ÿ„ÉÖí©Y²ÉàãÎf0ef©GŽ‚­,<î?úN‚ ‚à wÝ@ôrS+ wT:„±ÄÁ8´Ì3÷£2µ¦@¬I8P?H11ˆ†!V{ŒÔ^÷|ã ùZÇh¦ eäÃr<–c¹ê|<˜ ìË‚e¿öXPùØ Rä™aþvò§îCÀíía8+ •aµy‡:vttq'F‘8FA¨Iª"b[g6[°nã.ääÔéöŒ»Éd2àœ3ziýhAJ¨åø}ù7_,]©;ˆåšmò3ïìC©ÏSqc~qILþg4jýE¥–)õ=Àü‹ÅÎÍsöLÁÞG¡†4A¨  ‚ ‚ 3¡Ò0ð5™ŒKj´°úˆÎ>ìÑû•Èì•s€'fmÀ§üõ)°SÉßÛi_ ’§\¢–(­)þ¾+³† Ÿ²x6p÷•‹ËÈѤ–ˆnÔX»Y´³W. ÖA„Ú†»°‚ûÌf}ðÔö8`Ÿd”„£ ‚P©J|bÖÚF–J)ÊÄ^S ªBད¿#–méå/X/†6Q0¶A›ŒÍ£`‰÷Í`6KQËéÉÐ4N[y­³Úp,æÝ™°lMƒy‹¶ýÚw°ìËR¯ù”ô|¾²¦Ô<¯l OÙe<†TíØÅ˜Ô±4U2î’HAð\9qÒÁгÿÖï,nžën»Å&y`ßNyzå�f4šÊ´Ønj¯E„‡!3Ëêdš—›”YHŒ})Mo‘›[ˆ©Y¶˜ká¡ÅÛc´}›¾LNnªr¬ а~óntl×LºÀLr9‚ ‚P;™P}$ƒ;ËÐÅ,..:"z‡3Â’•™=5hÞ>!7˜ütéçšvF•hÛ¹D`F^~|¦ö‹ªÜè‹ Y½¸å ¿r%»¶è„èèhq/AAê,Ë—¯À–-[1|øPÔ«W‚à.tZ±b%¶nݦ:=š4i‚~ýú <<‚à/¸ê¬¥YU¸–*öË™ÃMš0�…ŸnFÑ”½@Fõ…¨@OI€¡WŒ½µëkýÒÛ†ƨå¨ê…ÀÀ‰ÛXü´!·æu'`Y“óêã°lLõ™ÓYÑÇ[`:­!,MÂ<zÙêÂÔMËÐPk'¯tºz‰j˜:õOÔ¯_§Ÿ>ÂÉ…¶Ó§ÏDNNÎ9ç,[¡ööŒqvn^>6mÝ«ž«Ëm[ƒÄÜrÍˆŽ S& ¤l—›¡!hÔ ‡Ž¤¨ý‘_X„­; m«Æ^mÿõÒ—»÷A†³Ôç××¶3,4Ø.æ°Ö}—W€ŒÌl%<«ì¶p•t­»èœÓÔ9àîöJì#ø ›7oÁš5ÿ!33 èÝ»4¨A„“˜ U‚7y!!!ØÛ¨;°g.*E––à{i$ðì Q[xß^N,ýœ7f g—ü½c3ðÍGÀµwÀëlúu‰Ê’Þ¥7âä¦\A„:Cm)#5yòxíµ7]¾†øøx´iÓgœ1 ƒ‚ÑhDmeÚ´éxê©gÕüã?‚ .8¯Üå?ýtÞÿC5ÏÝ”)¿–»|vv¶ÖÑx†uëÖŸ|òzžÇ£Gß©æ¿þú[üñÇ/•vñÏ<ó¼ö]¦!""óæÍ†à¿lÚ´=ö$öìÙ[êù¯¾š„ví|p*^†å1ɪ¢€.{æ`#Œ£ÛÃt[{àXžê´$ÔÎ\‚%ÄCÏ5±e5X`^sæÅ‡aát(^£ÈŒ¢)»Õ¾ó”•æ†nêXê³ÚÀ’%K1cÆ,¬]»‡QÆQQ‘hÕª%N=u€‡DEE¡:èÝ{€¦\xáùÚ5ýáR¯ù[Œ TÌ}÷=„Õ«ÿUó<ž<®ÂÉÁG}¢Å÷Ÿ©ù•+Wᥗž‡àÿ¸ë&Ïòˆi陪dbÝu/³ @kcn¹vš%7Pý1®rt5£›WÛ–IX½v§zΠýûgùFœ9¤G±0Í[3ëã’•›m%/¹îVÍký{Å%<K/Ïeާf"=#Ƕ|e?{ÛŽƒÈ/(,v±3×XÎÃ>?3vìë8í´S!Tžÿ]ƒ›nºMÍózÍœV]"==>ú–.]^êù{ï½ W]uj3åÅÎþ Û‘… aîÜyøï¿µ8~ü¸v=3+œ¶mÛ¨A <é)‚o©½=‚_ ;bå· …ÎUvÓŽ�ÏŽî†WIÙL[öùäN¨mÔÆ>¤V­Evm®9CÛ?'PY ƒ´Dp×^VËåÀª9¬É¨A¡."e3…š$++[ [fÏž‹‡zL%窄3°ŸÐ·oo[ÌÈÝŠ°OÔñ{;Š|aGÅe„S:û÷°Í;v¹¹¹„Š`ÂøŽ;î²w¼¿¥[JóæÍlâ²7߇ž=û©I?÷¡:p·³–®W|üÏâÝ| µ,‰ÁµV\æ K A‰ÍLwwDÀä!ü|Œ7´’¼ãVhÞžÊðŸyO©cY5»îܹ ×_ÆŒ¹ü1»víVnC¤¤œÀ²e+ðÖ[oãœs.ÀwßM®ñí•¡ö±ÿ~ÛüÞ½ûPÛØ¡òØÿ^÷íÛ¡î@a›ƒ}Ž"#;OÝ3ÖµÉÚ=fÄÈ¡Ý1äÔÎ V‚fWËSd`BŸm¬b²â®—VnÅþCÇmæ¼²m'R31wáÖ1XËxöÕ>›e:­å1íßc]lßþc((Ô®ce^÷l:pø„rBã5QrpBmáá‡·å¬ø{­W/aaa:tü•yóæÛbeË–£®ÀœÍ¨Q7«AÌÉ¿™Oe\àÀAüõ×|5Øõò˯ƺu뮃¹ú¾yÿý BåçIŽ'å0¡Á‘ ›âxd22ªÐ<¾·ÄÉ,*^¥1ó²Ê>ï Åe¿<ø¼Â¾]ÀZ r¬jŒ‡’Û"&±ÊÄìÿñ˜ ‚P‘Ä•àO\}õ•Ê©Ì&8vïÞƒ9sæâøñ5 ï®»îÅ_|ªœ‚kqqqhݺ•*CEYy.rLñûÚ³té2$'7q¹þåËWÚæûõëk›?묑Xµjµ*]À‘¤RÚPp‡™3g#--]ÍŸ{î9xôчԠi;„ÚD¡ÖéW`.ÂSiSóÖ0]ß–õ©0Oß ó܃%¥A=ÄPÉa¼L©Ú1,„¡Ðÿó2lÛï¿ÿaå(J˜<å”îªíŽˆˆÐ:x(ç)Æ4\æ7ÆbãÆMxúé'jÌ­Db„ÚÇO<Š÷Þû@‰¾¯¹æJ'·Þz³‚R´úÀ÷B¨;è¢Ý{ÀRÄX»îõEð¾·iR"n¼r¸ÖÖ„ªþ˜Š–gÛØ¹}S4i\O•¯$t ûþ×E¸oôù0™,JüU,³ÚÿSg¯ÄžǬý}Úó,Ù£k+%‚£ƒYÙ÷Y°fýne,QÕ£•™‡iŸ«¶Ewõ´$¸”Ϊ ¨ÐM¶oßo¿ý¦ÊwÉ9XýP@vË-£U|@5j¨ª?$%5V.l|}îܿԠU|¹ýö»0aÂ»èØ±Að "0<™،6¿±±18˜Ð±j3²ðü0à™y@x,ªk ¾,û|X4ÐU¢uG€A°ã(´/ÞÓî„¢bP%Žk7×U}”Þ¡Úq‰Šª•”‚ ‚P›8 %™ðo G´˜)CKÐEš-¨§ÅNÝ ŠpZ¾´_ÁûÔ–¤dÝ]–`3f´Ö™ö4,X„;v⫯¾ÁM7Ý€Ú…_˜8‘Š­[·•Õé°³—#Ù —á{8Âò’K.r¹n}fttT©ò…tžzî¹§!ž`ï’qÛm7ÛŸ%a,T'ž í—§cÙ[xfƒ#«‚¡c LÚ0¦# §í…ù‡À¾,ÏÖÑ®r¹ Bƒû SÐÜT_SýZäi¼âëø†6öâ²#†kñËíhذA©åضÿùç %.ã²S§þ‰„„Üyçí¨ $F¨}ôïßOMÂÉ;‹Ù),ø'U„¡Ç,ÛvB‘µþ"ê„bÌg¡qÃørKcÚCYLt$þ7¼Æö§ÕYLÛ=Ì\SûtÀ€Þí`¨tûÎ]MÆ–ñÕó´Õa1X%cÃuGƒz1Åå1K¯ŸïÉÉ+À¿ë·C©Ñªx¼X–sßÁcèÖ¹•8; µ{7Õ+®¸L‰Ëˆä ªŸqãÞ±‰Ënºin¾ùÆ2åîï¹çNüðÃO¶û_|EË«Nª±.‚Pב_–Pe,3ù•Úäx…Ýÿ¯üÈËF•øý íÎ%¿ìóÛUý&$hèD¤–™n™U:¡]5 رÞ ³kÕˆêåLAAð.éZ2n|X îŒÆ÷¡Ø`Ä “4¡à#ÿþ.Ôúúø° µ¼ 8B›ýçŸááaêovÆÖVìKW–gɯ—HLLÐ:­nd+V¬TÉlgœ8qÛ·ïPó}úô–D‘PeôŽ.AðW\uèêçðóQÞÁl„邦úz0^ê C7Ec|ß¹ÍPYvY]K\uºÖ´³"?ÿ¹ç^´‰Ën¹åF­ãæ¹2â2Â!]!'MúD댳ýò˯±aÃF‚ uûöÊ™(~Ïþ£NÊ1Öò VÑÉçôCßžmµ~˜`·¿#Å]t:;sxO4kRßú>í>77¯�¯¿÷+¶î< ÅÖûcO·‹˜ér{(/¿ý#RÒ²T¿?ƒîežÝe¶Õzì´cµï¶í8ä•}Ä3aÏ>k¼*3¡6`Ÿ+HH\AMÁ{–¿$ôÃm·ÝRF\F˜¼ì²KpÞyÿSs�ë¶mÛ!‚o3¡ÊèÂ%s›(Z�“¹Ufóbà €‡ÿÐÎÒJ£ ò€¹Ÿ8-®¼BbkKG¾zó8*EV0ê,íû¯…7È @@§JOçÉh|Qá ‚ ‚{ì6ñRDޏ!cJpN° kx,3M‹|ãfv$½ß,ËÂ’ù8œnVq@£NmŠËzF ^´Üø+,ÙÔ·oÌ™óöîݧJHÚ»ÐÞ~ûX¶lš6MÆO?}ïr=ï¿ÿ>ýôs5?{öŸˆ‰)éŸ8ñ3L˜ð‘J¾,[¶™™™øñÇŸU©À}ûök‰£¶þ¦8ûì3qÑETJÄÕµk„††ªÒ6˜±4¨3X“téÒYM$##S•ÒrfeÏò˜z'…3W‹Þ½(qÚ…žÇ{Øék£Gß‚o¥Êw}ûí÷ª³;%å„ê�ïÝ»—ÚÖ-š£"V®\…É“ĦM›qôè1DD„£GSÔº[µj wa‰PîníüÃÂBѨQ#œ~ú œþ¹ˆŽŽ.óŽÄüå—ßÔüüâ´sÿß×ছnSó:´W%WñÌ3ÏcÊ”i*þÿóÏߕÌ=ÇÇ÷ßÿ€Å‹ÿQeÏrsó”{51Ïž={ *°\ÙO?ý¢„…Ü„‚C YÆŒ.åÁó÷?¦bÖ¬9j„qff–*§Õ¶m—Ûwç÷àŸ––y¾OŸwÁSOí¯~kùùù.—yãWTY†£G⬳ÎSçæÿþw¶*ç ý÷KX^cÀ€þe–ai‡sϽPÍ;;ÉâÅ+g µkש}Æ©zõê©cr饻t ÔûdÅŠTÉÏ>û\•ýàh`þæŸyæÉ2ï[´h1~ûíõy©©iêmÕª•:G™¼¥8V¨9ôº]‡ý>ç Ö²‹`ÈÒrF9…°ä;‰ƒBM°h±’!,�–­ý1Õ\nÂB‘Së#`@}˜çDÑG›];šiq`Àƒ]aI¨üÀ¾G0¥;³ü‰þYb+kݧO/åPlOYzøÁUmðÇOÄØ±o”Zƾ½úä“T<0}úLüúëïÚuj§Käªvnðà¸æš«…ÊP^Œ _Ÿ{÷î©ÅPïªxè›o¾Ã’%KUÛÌ6ž¥‘Øi厫Ý[#°m;|øˆÖy Ú3Æx—]v±ÖNÕGeÑ¿Ç 7\§m÷m*Îúüó/±nÝz%@èܹ“Šuô¸ŠmÛ îÏ-[¶¨eš4IR×üË/¿Ôi}{1cÆ—l~6K‘W_} C‡žît¹ùó`ڴ骡»mHH°¶?’0hÐijXZµ²ÛÀv“qÕÁƒ‘—— ê«öŸÇÚÞí¶2xõï?È­ØÁñ;Vg»ÌïÄóáï¿—Ø~cüNÉÉÉ2d°Š?] R®ŽóÏþšðÒKÏãŒ3†9}Í—× Á7胈ŽO‡õ–®îô?´8 ]«Æ¸úâA vzn—EfõbpË5Ãñìë“‘¯böJÁc/~g¼ Ú5E€v¯îîý9üÍíÚ{Ͼñ=Öo.©”`Ĩ+NGR£zڼɥÃìk‘[PTùॶGû>SÔ<cÚ^“×z¶m,ËG! ¯Ç‘‘Ú5¨¡ÖÞ÷V1ƒ«¶Ëyo_yO1oÞ­}ù]9Öò>344D»·l£Úw¶/îXð˜±Ýÿþû±}ûvdgçx´ܯ¿ÿ>Eå§¶mÛ¦ÞO÷úN:jmÇYj=®~ú~eéö>z_kçþÁ×_«òKééê>÷ëå1iÒ?~‚“uße›g®ká¹e–qŒI¸/x>p{xŸÎãí ½}å�V2àz¸vïÞ£òj¿ÿþ³* YÎòöÛM¶ûï¿Çåû™Ûú⋯T›Î8ÄÓ™¯òÌêyÀ^½zV¸ü•W^nË#ч8;®ümé¿/æP¾ùæ‹2ëJIIQqàÂ…‹ÕvðwÂ|sŒÝ)ÁÉûþ.YÁú¼þqüLžžA¨Hï’àg¥0]-ÃG&µ£àHtK4<áç-¬™©e޵Ψ{µ ËèYPŽÔC®Ðòsáòóœ?ø€öÙÚg{X’’ï¹å|-:\ oq°yÄ%Ä×:÷2&â^{íMÞ£wÖ5†´´t•ÌüòËÏ œ|p¤÷ÛoWóLP°óW·d®9Á5Þp ¨ìéÈ ¤y˜ðâûžŒÂëy¨oö®ÅŒ 9xò×Tdç[T’Ò¨F‹i9fl>\ˆïWdãÙsc1¬CÝøs±²Ø |(|ª(‰TŽ9¢’’L„Ùħ¿þš‡wÞ«:F=XtÑ¢¿±zõ•@q\5ºY÷îÝЭ[W•(dRÂ3ç³¶y&m+Ï™O?¤%k?,õ<;™À›1c–ÖIú"N=u€Ó÷3¡ôò˯©QéDNóç/ĸqoT¸,Æõð3í¡¨ÇûŸI0ºÃ8vfxªM`Æv :¤¦…éééN“¹úrŒÅeL ?ùä³6·#GŽªïʉ"°{ï½ •a„µŽÔ/Ê8ÖíÙ³WMÜÇ/¼ð¬Ëë5kþÃ>¢ö—³÷sû† ¬:g})‚JLLTØL\óx8#//OëøÏö7Ýûœ ÌìßÏãlÅt<ò¸vÌ–•zžIxvJsâùĤ1;4ʃûîÎ;ï-sl×ûì³/¨ß„=LÎ39ʉ û×^{Y‰ïâNœÂet1Ò®¢£5žá3dÁ²;æÝ°ìÉÒ.9Àñ<XŽk¹Ž£¹°dUB8C\°6i9-ÇÒ †Æá0&…ÃKt |Žf7„ñ´°LÙ‹¢¯¶Ár8§ä呪¬&zVÍÙ`Ùê`毮öíÕ½÷ÞíögŸ~ú`ÕÆ³#”"¶ÿ®îgÙ6Þ{ïj9{ôk;N?üð}ŸÅFüÙ1aP¶Ç:lã¹MœX–‡Î ® 0mܸwKµm¼ž²ó™;©(º;眳PU¸®×_«ÔsŒ•x§{\³fMU»ÁòëöèÛ˜å½÷Þ¶ Hõ6܇=ô¨2ÙÃãÌ6“ÓÏ?ÿªmÃ;hÞ¼<…¯üþŽN8zÀX‰©,™T™¾Žƒì©®v™ö/¾ø2²²Ê~'NEr¿?®Bgך>ÿjúz!xŽþ[=‘–U§îá-Ú?ŠÊîºùÔKˆÑÎé ;Á–{ß“û#((ƒúwÂÅçî÷¿.Rí<£Á]{â¾g&áÖkF`äSRá5mPn^>ü³ã'NÃÞÇ‹7ŨÎÒgí‰à`«{™ã7")©˜9ï_ÛöUmGŽ¥Ù¶¯6CÁÛ7 N졈š±zë­×U äkªz=ä€)Æ>ŽN³\/ÛNìŸxãW]fÒyúéç”ðÎÙvPpüÁï¹Dvøðaí{<¨Ú{ŽOQm' {^~ùù ûF8˜ðÍ7Ç¡ºp“ð\áÄÒ·Ýv3n¸áú ×õðÃÙ»ª ¶ýÌOÙÿ6ísdÜ箄P¾ÎØºå Š ÎA\EpP)óMüöP$Ɖû†yæ_œ]“y ÷Ý÷ñÕWß”¹æéëàq¦žy/©Ð Ô6D`&x*© ?\¯“÷fdéOÀ7£?õ¬¬eB ­–°ßüwÙ×ÖÎ| ô¿¤rîh¹Z"ñm{6®qþúç{..+,�î¸ø{.¼ÉáVÑ0<ܦÔv…¸šyŸ+¯¼VÃÕ8qâ‡ðgjÓ¶ÖóæÍÇ<¢æßÿ5r£:±¿)ãM ÿvå#BõÁ[ÃWÂ=—éd x="¯¥çz­fý‚­¹¸òq52To·ÏꦈÓ×[;B³òÌxä§¼lD¿–Æ+µ”Ú&BcH˜˜hø îºWq4äƒÞ§F2qCaÓ|¤:æ8ú“b¬[n¹ žÒ¯__%0ãú9‚‘"2{(°ÑÑIñ¿“ðs%Þôr›­[·*#†r&·¸þ!Cãâ‹/D“&Mššª\¼8ÈB &Eþy²S÷°W^yÝ&.£Û×Áí)((TjL2=öØ“ZB«E¹ÛÁ¤¡ÞáÆD/×ítàâ6²D*ÝÜî¹ç%X³™Ñ݋NJ·®f%"$&³èþæ(Ôâ¾æÈTâ(fâñøáÇ•Ðe[9 ”ç…ZºÃÆŽ;U¢nag5ž@×±‰'©y&˜9š™ëá¶ò|áyG‘üSO=«öorr“Rïç2·Ý6F%½™ˆ9ò µ}ÝÌD?¤y=wî<%@ãf=a÷È#i«V¢7Þ«ö7¡Ë›.„¤› —á9êjû=÷;ʹ?™@æ6ÛÃ䤽£‰½�Ð]`ÆQÑö1'÷ËÝw߯Î1B÷wþfx}£ˆÇ‚L¤S0¨»‡8ƒû•\{íÕZ§Gu>9:È0™ªwR°#Ž&<VÌÑɳgÏUIç1cîÆçŸª¶I¨~ôNŒ#–tT'†\3ÌNÀ²1íѼ9Ý*(ó6éù°pÚUúi[×M”Ö1Ú&†ÖQ0jƱ°4 …O0iñÕyÉ<7†}Ù(:šcÃ0¯}ÞA‹µÓÕ_ËFém0;l<qê$#F W3½=âßÎ`Û²råjum6lˆê<Ü»w¯rHb»vðà!»ðšî ÒÒÒðøãO©öøúë¯U×R¶ƒtÀøàƒ•ø‡m]«œ9dÒõáwÞSó,¥Dg¶m……EêúͶ‰ë`'ÛÓ!C£²P¤ÿùç_©ŠûŠy?~ã¶7t;å62Öà5œŽQ±±±ªTÐ/¿üªb ¶mÜ畉óÜ1“..c‡ð%—\¤Ú ŠÞéAEM줧k„'B#¶ycǾ£æ¹/GQìͶžNY®±½¢àíö]wÝO¨lôùçÝŽ쩎v™çñO<­~‡zìtÚi§ªx–±Òôé3ÔùÂ8†¿³wßuÝ1ïç_M_/ÏÑïý,fƒµŸÇ�«²·V;™Y`4•sY÷Î͵ßBCîÁàò}Ö<EI6ˆóáa!¸ùêa8ž’™ ÖØÖ‘’š…WÇÿ‚?ç®ÂEçôCïî­Ž€@“T¨Ö¨íÊ¢Bddæâßu»ðóÔ°tÕí9³µ,fñºú÷hƒ17œ©]cÂŠÖ ÛÅXÄ¢}Ö¿8xäDñ÷ñÎ1JË´Š[k³ÀŒƒôF£®½„íÛ™gŽP×wÞŸ3ÏA‡nŠRؾ1¯à̩ӛTåz˜‘‘Q£nVíaÞ†í–xoK‡6®ƒƒéöÕWŸ+§Pg0ΡИN·Ã† E||œ1ÏÂG~s-ÎúŸp;ðœ;í´ZœtºrÑâû˜?`€÷Õ¡}üñ—¦üîöð˜0öà½9otꯖx×s/ìú裉jþî»Ç¨< q¹ŠIøûÚ¼y³Ÿñ|à GÆcÆÜîòó™¢ðˆ÷òtýÒÏ+¶Õ¡ç9\m·«ü"ã:QÎïÏøç7û ¸¿™#ãùóãß9öù:oÀ\×Çsˆ¹86ÕÝ`ÝE?®<ßo½ÕÒµžn¬Ä±ÿœ1ÍwÜ­â@¾F§1Æ<tõãþâ9ÍïÄX–çëÜ[æ3ß{o‚º7 t7¼à‚óUŒÇ\sV</˜“£øŸû÷‚P›™à‘[™«åÙ˜³ÁLkÒØü¼Ê¼IZ†= õ¶ûïapþØŸÀû7XEjöj‰ý±WãoÕ2cÚö¶Õ†vÚÔZK%8¨çù=íÖ¯�Vÿmuûo%kíYväò›gÞG0 ~àz`Îð69Ýû«ãe¯òÖ©-­Lâ8vÐ8£ª¶÷‚à0ÈdrðÆ‚%I˜°™ Ô<sƒ°3 jÒ°íZGå_Aš[õŽÄ¼B žú-ÌêÕ:D™ðä9L °jo>ŽeZƒš¦½0å~Ó�Á" ÷'˜8Ò…',óçK×%ÆóVQÊ¥J,2Õ³ç)¸ðÂK•؉IZô{:šŽ3&Ë Ì¬(&ÊôX‚¶}lï˜Ä²Oò0¡ÉD›ãº=…â2¶£t³Ðá÷g'2“E“&}©„M}É2ö0¹¦;‡q›?ø`|);Ì/¸à<•pÖ;Aš..cRëõ×_)Õ©ÊN8Їî¸ã.u ž{îEüð÷ZR*R½Î{/&m9‚—þ#Ø—aarV}ÌäÂ<¯f¥Ý²JFåqבØÁh/VbÜMAÀì\ýóÏé ̾ûn²zd<;cí÷#?‹eÄ®½ö% ›={N)Á!;.™˜ækÜà9� c “ LŠRÔÀQ£L¸“ÆÙ–c§°~¬8﬜;Ë 4~ø‰šç~u¼ÑýúõQe+¸ß8Rœîg:<ŽºK¯}œ%])`#<g8ú×þuî/&à/¿üjµ˜è,O`F74ºÛº*ÓÁsTO;•ËãMW" 1˜,;öm5B_¨~ôº,‹—œÚ]``ð°)…Kòü,µNµ"?èL/€eÅ15Ù¶¦^(ŒÝâ`èSÏDXyWpÆÒ™–&a0h“7}hÓá¿®¼^é£÷Ù‘ê)öïa¹$À¹ÀŒmô[o½VªMb'&ßOÇUƼóê gGƒðÚÉöÝþË·æÍ›)‡)ÆOt¡p˜±³‰"4B·~{çÐ!C«ŽÂÛn»C‰y^yå5­£«¯Ó|;0¸îºk´m*é¤äúÙ!Ë’¤ë×oP˽òÊ‹¥Ú.Æ7W^y:¦ì¨ó…ÀŒxú`9~ÏqãÞ,ÕŽP¬Õ²e <ÿüK*ÆcGž»e·¹¯ß{ï5ϸ•ÌöeGÙ¹Ng1 Ñ™Oa ÀvËadeã ½ýw'v°§:Úeº¹ðúB±Û»ïŽ-SfŠŒ9ùYŒU(²søëøÃùWÓ× Ásx]eü>þ•›0É&̘»»öÅlõ̪™ ztm‰ËÏ€Ð`î™ Núf êž0&:Ýy‚µõM›³R ·¬ÑF‘öðïúÝX³a7b£Ð¶Uš''".6B­+5= »÷ÅæípèH*ÌZœfݯV1…hƒûwă·Ÿ‡Ä„å˜æ+²;t4ßý¶Xëb3‹�½Cf–µ"c¬S›2/Ï|qVQ‡×$º±S8Ìöžâg¼IU®‡tÝÒÅe·ß~k™~Üvж_zéU%bû²ØÎà½,M<fGW_}½jWØÞ3ÞrtB£0›â2þ†èæd_™0ÏÂm¥°‡í c1¶õÎ`yO¶Ûtãô4§F•.¢bil¶åÎÜÛ*ŠI˜ƒaÿ&cЬ¿øâkuœ\Ý«3çÅvž‚%OzžÃí¶‡¹†!C+÷|û¼EY¦37Æ6›Ì³ØSy~@ ¾dlF#–µ?眳UÜ¡çÉÊC?®ŒOu¸_œíÝ‘ŸÅ|Õøño—Š!)Îç Þð·Å܉íû§ù9ºû3Ï –±­W¯žíuÆ`|ü]ò¼f\%&/BmB<÷¯ÀÎ^ü ­û"ßäƒÑ¢¾£Ý ?îÑ[”(íþÇkè$ÈÍÖξxê<­LÒzs´Ž[z^\«%6jÓÙÍ´õhKŸ¿¬Zl-eéHT 0îkàå<w/{ìà·oàm2£ãÒ¶£vo¬0‘áÏôêÕC)Ä+šÜ¡ Bmƒ7­¤^½DUŠƒðf„‚�Aj–ß‚½Ó¶þâõü°" ‡ÒK Õ?+áÁFDhÓ##Kv;¬-ûëª,þÅeÄ踞 v*GÈÙ‹Ët˜xáHO¤(“fžÂ)Ý¥£xÑP8šRO¢èe/™Ða’Ëûò˜éT–¨¨H•8u“©ºÃË@8Â$&aÂìùçŸqêpƘô®»Æ <ôQŒAê˜ÄÓaRú¾ûîQó9ÌröèÉc–8bRË&˜™´çþ9r„zNôÙÃÎCÂä³cbmÿ~ké&d%?ÃÃõäà˜:õ×r.\¡¯Ÿ%œíGv:öÙǘ3gz™$÷¼y TršÜ|ó NÝeyŒžzêq[’ÕYYoÂý§äÖ÷«=ºp”ÇÃÕï‚Év½d•£à³gÿ‰—_~Aëü}ÚéhmþæXš–èb4WŒ}«ËNlÂÑî¤S§Ž.K> >Ôv¢`R€ Õ‹>ø/×P�Ÿ ­Þ<y .˜üÛÁüÙVXÖðq™+ŽäÀ<s?ŠÞX‹üËç¢ðÚù(š°†u©0øñfgwºúì¨ÓaG‹§Ø¿GwÎt…HÎÊïðtË-7ÚþvÖF{ ^óœ]c)n×ÛCgŸOñãº]½òÊ NËR³S÷Î;­® z§seaŽàŽ;n+ó<;ñ؆ê0–pÌ ²½:óLëõ›¹tnó6tKÑÏeÆzÎÚ ’ØÖÏ›7ËmqÑ÷5a'´}G®c‹'Ÿ|L‰Óz:PÂ×q#ÕÑ.s;¿ýöKm»_/#.Óa¾Žc©4{üáüó‡ë…`Åâ¦�‰÷|¼×jÕ¼n½f8&޽/?zôi§JLZhj�Ýݬ6LFDG…ãî›ÎFlL¤v®XûǪ8±Äf|l$ºã<Œu&¢"C‹+ûX?—ûèHJ.Ûˆ/Z€·?™†qOäïçcî¢uØð„výµØ¶“û•û÷†+†â©û.AýÄXÕÎ9ûlB×ÍÏ'ÏS"µâçµ)'ϯÖf3Þ›N›ö›ºw—éÐŒ.E¤¢û2oPÙë!°|&a.Æñ¾[‡"3 ¾ èWî@ lÅe„méwŒvk;8ÐQ\Fx~ÞwßÝ6÷+ÆåñÄútÀ¦Ž;1 +Q”Çöç>Ï\Áö•¥·«ShÄÏbÌ䘗âóö1‡³ö´ºòŒÃ)Žçþ!ÌyQÄ9tèH%øg†òâO°Ï7q¿8 À8ð™gž´Å8Žç#Eoþù&LxW•–µ—éð:¬ïÆCÇŽƒ Ô&D`&T û†.00�1ññ8×>á——´Ìüð˜ZòFK,¢ó°Š—ÍJ×¢>-Ñ?ÿ`ó* ǎב³6h™‘J8 }ñðýDø‚-:* YûÀ@Ja Bí.,Q@82‚ Wýƈ¶Ð‚ ÔŒì3y'ŒÞ£­ç€©êmï/«³Ký=¤](NoW"úÒ>Û”ÁO]çƒRVB¹p”¾ãÄäK]pÁ%Ê:žÐþ£×| ]\Ѻu‰à¨²‰}ýaÊR�:¬1BìÝÈh9¯»–1ad.0c¢–Î •…Nj®J)°ÕIŽàm¯Ì¤Ã[y.,‘á*™ÉѺ,ÝH؉ÇÄ”+8¢‘% G‹ÚÑšzòÎÞ‰Ìþoû^t¡ ¿‡^nÑY2ZOŒr9=Ùë÷•³ª;è 6}$µ3(Úr6uÆ ëöð>‡£d]Á¬Ë/¿Tͳ#ß׌Œ×ÓXV‡eTôïÈ„¼~LEúqãq¥K™#<§˜œu&ZÐÑïýìKí:£¼’ït{Ù½{šçþ+¯Sžâ�We?ïâØ‰k˜ á Š>Ü„¢ña9‘ÚŠeW&Ìßî@þí‹Qpál½»†ÍÕ[RÔòLÖcèÌÕ£¦¡«¨Ž3QpEðº¥_K(¨wEùqIÉ B_uÀDD„+·+ô¶Ÿƒè𘱄9ãŒáå–ñ¦Û©îZV•ëf×®]\^ŸõX†Bvg ˆ½3ÛHoÃÒZz~‘q„^šÚ‘Î;yT“ûšÎ¦„¯òÜ:)bg9'–‚÷ÔÁÊ×q#ÕÕ.ówTž°}Œ\^,áç_M_/ÏÑÛ3Æ´<×âb£pÆànxã©kññ£qÍEѰAœØ©&ÅcLÚ¶µ¼ÐÍW GûÖIÚ}G`É6Wq²ŠÌ†«/ˆñ/ÝŒÓtBHp í³Õ>2ÚoSñîÒ~—»e‚´û¡~=ÚâFáÖk†)w4:—9ßVu”0Éü>c¹Oö^~Q©s¡¼óÄŸ¡ µ«rß„ß}¥¤¢û2oPÙëá¬YslqgEÕR^zéy¼ýö[e\Þíq& Ó±¯s-sæü¥¶ƒçåå——O·wB×5=¯â6T‡s¥'1 EäÌá– ·ÏÙÃ|•>豺à�NW.`|ª¤s<nÕ7`¬ôË/?à‘GT‚6ž/<,úÉ'Ÿ)üóÏ¿Xõ›UEÄ:k–u�c•ú»\ޝ3‡Iœ}'ŠÏ(è/ÏA®tÜ• A¨MH‰LÁ%î”δ‡AL4Nì„ä£kà>¿èsQq0íõ[�Oh _�ŸiëHKA•©¯Ý0?;^Ë]€J‘£¯?_q¬M7$ipŽõ£O&8z€–üLô±36¾¬wݰaC5*ƒRññå¾Ý¼y ~úéÕ!¥Úe¢Œ#0iÃË`3TÌÛcµùïgûû¯¿fºeÛê'~† >RÁÛ²e‹•¥>mü9 –5Éé^ÇÚò ¼iÛjäUe[Y;uÙ¹îÓ°°P-ÑÚJYß3XtÕ¡zûíwªÎb^}ô>þþûթΑ<LÐ>ýôÊŽ°cŽ΄² ЙÔcGüÎ;µN»\•¨<x S^Gá¹@[Zî›mÛ¶iA|Žê°e0zöÙg©õ8ÁwÞyOŠÛo¿Ë6OK`ŽÌðìdÔmÜ>œ<oçΧ:V9š¥ºo8A°²5À»Î Ûµ›ÎF¨¼óȱÌ"¬?o‹øp×в×Å;N¢mGmoÔÞ“’eF„û}:~Mm(«Àr2œÊƒ£>™¼‹ˆˆ€¯ayJW°SHÇ^,ã LT±œ­å)$:õTkBÍ^XÃR€:lëºwïªÊ Z—¹Ãöš.0£C“'‘Žèå\ÁÑ¥L’9v€3Ô÷ƒc¹OG¸}L Ú»®éЉTÇ•{„c ’Øö[KŠ•ÀïÁÏ`<ö÷ßK´¥ÄEBß¿21Èx•±!“^úˆ_ƶzç8Ë<9ÂQÊ,ÊeX1Ø A§©ía»§N Ž0É2,zÕUש8’É;ŠíKX:C߇ì8®hT²}‡-ßW^nUá~¤Ë÷½.ÜÓËcò{ñxð¸0.åq²¿néq'ãÓŠÎS&LyLwíÚ¥’ëœ6mÚdfÒy <è°ã ½<;¡ØÂ^˜èˆ½ÐDO. Õ‹ž<Ïó…Àl_6Ìßí@]Â’’Ë;‘¯M†äÎn‚€ÿ%ÃQó÷U…ýw뱌}^‰e˜=…ebôsµ¼’å]ûØ>ë0à *ެ×<^»'èñ7˜!ŒßÊ»næPø~W£îP^^IoW\ ê‰}.ÁN2±±±ª£™yæ|Øá7|ø0•Ó`~Çþxz‚}¹V þ}…¯ã Gj¢]fqûö*ž8|ø°zdžNG/ê 8ÿjúz!x¯œLvƒõÌf£rþêØ6 m[5Æ5¢å›0uöJ¬ß¼ù…¶þ)¹×·À¿ŸÖ·=Î?«—ÖF)±™w1¨ýbDçvÉxéÑ+µý±þµ KWoÑ£é(P¿Ñ²Ÿ`Db|$zvi‰3‡œ‚®“¢mc€–Ç2Œ.»Õèz¶mç!¼ùÑäš•XÍÛ”àúwÞÆØçÀöœ×\^K9°‹¹½­*ïZê-*{=Ôï«)„Ñ…2UÂ;ׯ•ˆïs-ì·#ü­çåå—ÛÎÙŸÝ»wƒN¥Ž”7ˆÏ›x“0Aw,ž3ls ªkÛíqæ®e+ÏkǼ`Mä xOrñŪ)%%EË»¬Ty•… )÷+Ë[ÒQŒ¥8uqœ'èç£;1½~opüxŠŠ«ÊËãRàɸ‹û’× ^7(6Ô©Žk… xé™ܦ"Á™µLf&²Zô6| Ÿp|/²ˆO‚Ç0ztÐíL`â=À¼oQ)¸ž+n~U»£ö|ä¦mµ»yšÕ¶1¿‡U]íL`fCVW]Íà<ôУe‚�œh™J1 W.&|ˆÏ>û¢L²ƒ©œ˜`¢õ-k©×4tF  ‹Š=ëÖ­WÓ_ÍÃ;’ I¯?îè Á@š7Nœ({íµ—U‡_y0È{óM÷Ê0¡wï½Ø\Ctè~‰³?|ßVnÈl÷Þû -8Ôaà§wô3IøòËÏW˜P®N¦NýS=R©w@6Tu23yÍÀ™åA¨~R½œ<L©¢ƒÙú°XJô÷ý[† u½²œ6õѳi0V0ªÛx0½’ëNr¯¶så•—ã®»î¨6±ÑIc{˜@c²’®œ¾è3½<&;è]>8ú–‚ëà€T•@¤ûÛmRžë‚;T6®=~¼d´fy‰Søxç1“:î¸^èËPˆÅD¬}Ç<M˜q@GF³3—I*Šˆ.Þãq`¢û]/}ª‹ž(ÐrVæ‚Çæ7^Q±Ÿîþ¥;€ñ=²£˜å?*s¾²ã–Ç—#Mcr€^*Œ#޹Ítps&ÓGÎÖ¯_¯ÂÏÑK(Ø¿ÏWèn³Ìý["0³ Çô‘åúqá~eRŸ£Ê¹/x‰3Áa‘ñ!c_wg.@žs†ýÈö{îyÀí÷ñ;Õ~¸óLEð6æÅ‡´ÿù¿‹De±ìÉ„eÂFäºÆapIKXZT§ŽN‘Áº¯+rõ¨‰üŒ»%.]aÿWí#ñu\R•Ý·ößïË/¿V“;Ôõë&ËSñœeûÎ<ÜäÉ?ª‰4oÞLÅtŒœu»Â¾\kƒ à+|y‚7ÛeæÐx /þ»LþÔ¦üoM_/„ª¡»”ñ^‘Æ,´ü{ƒz±¸ðÌ>8spwlضSf¯ÂÂ%‘’Vì‚È&²†OSŒ¨Ÿ…»o< ‘á¡¥s^ýõ=MjQÖ³k tïÔ ™¹Øµï(ví=‚ý‡O +;Wí—°°`µÿš%%¢Er¢*­i2šÔö¦rýØ÷qèHžû“z„®æâƒWÕû•š\ÈÒ¾¼–R,Ä>(gBYoÜ—¹Ke¯‡zûB‘Ly¢`wq,‰ìév:û»‹.î¯)<IìsÌ •çlUTõü!5‘7`?9ñ7È8í‹/¾²åïºë^|õÕ$Ïm=®gÿ±§ç££ÀŒâ7º]¹r•ÓóUª‰ µ˜ OgËsäGk4ïŽì h„åû ×‚a„E¡JDk÷} º?8èÁˆÁ–íg?zœŠ*U¹Ñzîp"¡š¶T7• ìj3[=ÆÖh³ÓŒ¥Š(@bGÌҥ˕+…Q¡ýüóä2?­T'Nœ¤æéú@—¬¶mÛØlW?ýt’v3‘®j}³Sˆ–¨|üæ›/Ô{®¼òZõÈ2N'~h[¯/F!ð·øÌ3Ï«Q´þ§‰–±þ8ÅpìÔå6ßrËMê=•ÙÖ|Ä&òb�|þùçª}ÃýLW3–õb‡æ˜1wãóÏ?µ9d8²wï^¼û®UÆNNn ¿ÝÖœñÙgŸkAØj\{íÕ6lˆ ¹ÖxgÀxðà!õýéŠæGWÓ©e¸Ôè²Ó`ÈÓUùXn+3'ƒ<ŠÐ>þx‚-è|䑇T‡yóækë¶–²½ûî1Ê½ŽØ;»xŽxÐnØ9©',Y.‰¢Q–(™2ešÌ¡¦ðòýŸ¡Š9§=ÇKrÑ1Ôå²ÃÚ‡Úfdjz%—½%°†yu·S¹¦;öu[=¶3<ðˆšg£.¹S2– ]R)D'›±Ý%ÎÄb|nܸwUlÀöŸB~{'°ª ̼;N î,ãé@Çû/Æï½÷zž±kºxñ•îÔ«;Éq¿s»˜@Ô÷iÿþ}]:ÂÑQì·ß~R¥3ëÑa–¬P1&äÄÞ¸qoºú—Ç 7\¯Ddtf|®—ReBÏq2d°ÐaŸôÄÅÀ>Yêë?÷£î6«‹Êø™z‡4_#<.<>ìŒàkœçÈ[}ûœ•,elH']^#t8¥l¹ïw·oßNí3W¥¼Ü¥²N"啽ªF• Ê:IFQç™ažºùÚdì›Óõm¾»×«ÐـלŒŒL¬^ý/<Åþ=-Z´@]£²×MûÒ£uæ˜èÊ˲ïl›Øæ±Ã± >`ð»ï&kù»[´¼Íuð7|¹‹·Úeæ¿^|ñ›Cã(ŠûC$%%©rbt[=úN‚/°áË~7 ¡x¾›Ô=q¯®­Ð½c3¾2 ³¯ÇŸsWcë΃àOÂRƒ¹Š�m;o¿nZ6«¯¶³2ORü¾' À¢J\ÆÆD {§æÅû´d_X÷­Õ¥Œ/qŸ:ûýóuW¹ÃGµ>Ž7&cíæ}>—Y7µ bÕûò¾ñÚ¨Q#u]eáGy\õYÔjZäRÙ{ÚGUgn¢:ð§¼÷-'r¢©Í-8P•1œ^VÕ]¼u>Ò±Ÿy8æ´8€±§6mÚ(‘Þ[o½ A¨ˆÀL¨2öb3&Õãâãp0®Zª\-åri;@ËPTQ`¦ÓCkX&¬&=üüÊíD5i?•[µånzTk ¼Tr²iK e;`û&x›-:*½{Ùɤ†¦ð†â/ÂDÕ7Ž*õ:;mXRˆâ0Þ p4%GMÚÃ$áHÝÏ?ŸXÊÆ•vþt `]oºk±Ö:;È(êÒGð‘‰3>úz4›6mÆ×_¡ÊFê0ÁE{Þ /¼T¹^Ð±í¦›nP—§ÛÊ2>º¸Œ¥EYÒ>(>묑JìôøãO)áÞØ±o+w8gpt÷áøñã*,kDØaúÖ[¯•êl£½-…ƒtmû￵ªÓšA#oæìyã±J\Æmeç$K4ØsÁçáõ×ßR£ŽØ©É²F,}JôòL°-O‘auŒ.á9I7b¿ÍÜ_ÉQÌÇã¡»•‚P½Äy7ï†;È„ÙÇ`ÐâNF£öcñüš¥]K:4r=:«£Ãks6æ`ÿq3Šò —Ÿ‹Â‚|hó…yjþ.¾fðàAªä";_Ùq5gÎ_UvGõE©£ÊBqfŒ5(ܦ%|VV¶zMÜØÓ²e U>ñ;"¹/tcŠúkû²êtG­W/öîg‡ªðûèŸÅ’쨵‡ûŠñÊþý”°Œ3}_õï_RöœI6vJ0F£cã[vêgb&{ø™çž{ŽšÝ.øL”q0ã/&Ï¿øâSTŠ®¿þZ5ñ¼åö±Lø÷ßÿ b8еÞÿCÜsOIg'Ï~çÇT¸~ûeìËrøŠAƒªmæ�z¡ƒ÷ÜÿönlJR`FÑË®ëÇÇÓ1ž%ãÇO°‰Ëø›àý …iŽ÷xº \U°wüúëÏUü+ø/zbP¡ 9^¾ö·ˆ„×0jž1Z jks´ŽRgް¹…Jð…lí1-–j¹™—U“¡GL7·…¡ƒï:b²è¥Îý3wÃl¼¾ñÚåìÞ»<tá+¿[ïÞ=Q×°¿nÞwßÝÊ‘öd€B1w`;¢·%ìTd{ÆuÌQ±3Žbyv¸9Âp†}[îN<VU|¹ƒ7ÚeÆ$º¸,::J‹«îÒîA–)uéÌÕL¼‰UÐeRÀ\­Þo0èâ3k®™)g‹Å¨œ»š4NÀuÄEgõÁêu;ñû¬•X²z›–ëε ͪ£å´š§0rHwŒÜ]õƒU¶Í®Ìûœ <*+„0¨Ø°¢õë¯óý»÷ÃÓoþˆUkwªiðáÞ4÷%Ôæ~ª'Ÿ|FÝßñü5êZÕ§äŽ3yeðu^Go_è2Ê~o¸˜Ue;X.zþü9¨-x“èN󤢲”µÍÜpÃuJ`F«y*0c¾Œñå]õoV…mº¸Œ}‰4­`Þ×ñ7Fñ¿ ÔVD`&”‹§Îf4Ñ ê@ƒ®¾˜q¼JH8pÛ8 ÛPàÅ« '%+£ã€—¾Óz†Ãë\~³ö¹÷ÃÛœèp ’µÆÊӠЃ{Žæ¯ÈîÖQôC±×ÿþw6V­úWu´9ƒ6ö/¿üšrýÚ¸±¬Èoÿþýê‘¥íÅe:ìÐû쳕 Ë1!S°SÎ^\¦C·/º„±Ô'o~Ø™Èm÷º…º8ŠËt†ªlö)ð[°`‘êøÓEZްT‚;â2Bg gŸÜ†[n¹cÆÜ£þf’Ï>ÉM«a=‘}õÕW–—žóL�³#“åT|곚D/I—4½œ’Å|˜11øçŸ3Nšäµ ø­ ½›äi^XqçÌ—‹S´lœ–À4jÀ@5 ÍLÖ¿vmxD°ëö<Ü!4X½'˷磨XP¦?êó"0«(ž¹þú›TÜýÎ;ãU"Ù«”^ÑÞŠÞæø Ò|ðÁÇ6X½ ï˜`qÛ>&ZtÇ ïôuÕ•¬—?¤³Zy09ËD–3ìã0Æ.ÎJ@êpŸéno-[¶tº c$Æ/úrú¾0 D`F'9Šû)Èç>ÕÅ錥èŽê ù±“•Îcwß}ŸC-UÅŒ1›7o†ªÀíÑ<pÀ%—\¡J£N›ög)÷!ãLÝñ¬¼˜Rwt#ì¼ö5ÜŸüÖ «”¨’p»½;0]Oôs\?~¨9ƒ¥Ñ Ee¯¼ò¢Ëû¶ŒŒ Tûxš¿Y˜ù7<ߊŠÌ*2"'^Å8 >ÌÂ`9íÞ‚M0´Œ„!9B›´óõB`¬§ýFc Ê*À¯u§äÁr,Gm‡e¿ö›Ú¯=îË‚e»v¾çy¿4(±¬<†ÂUÇ`ÚA··‡9ÁK ËÁdÖï±ýÓÑ€9 ÌȸqïhñÊX·ÞGç'ÝÅ”¢s{Áv]1‚îðÆëfmÇ^ÐNÁ¿«cV™x“±ì)§tWÓ7Üp‹zžœî Ì©DóÌŽ]þòêÊ©µ2ø2r…7ÚeºÿëÎe?þˆröwSÁWèýLŒ“õŠ+%!m‰àIsõG.Ëç£MF êÛý{´Q¢¨éó×`Æ‚µØ«Íëcö|Ù³ÁíIn;®;áaAÕV¦Õ™ÛYeúpÌfK±Ã™uZ^kåÛñ⻿aÇÞðð5Kõ(´R;Ý›xJa1aËèÑ·º\¶¼û2Éëè÷ÇŒó¾T¯Úâ o·§öèí"ú²=õ6žÆ$º‹<ûlY¨¶S]y:|mÛ¶M]¿(ø²7Uq†½žÁÝÁöð{Q`Æ|“^ÀSôü Û/šl°ÖÞÈßBM!Åê¨(xÕ/îÙ-=ë¨p –¶ìs|BßÿïhýxKóäÖÀW+|#.#—ŒÒ"ÊPx³ÁˆÂS¨ygmY êò©iÑÙ7ß|‡gŸ}¡Ü‰¥¥a€çJ\FhZ5¶trDE ;c9ƒ_þ .#Ž"${X:G§¢gp„òîÝ{Ôüå—_ZnPuÞyÿ³Íë¥á(�OF;—ÿÝZÙæ¿`ò¾ür×õÒé(¡dàH’]»v£&Ù·o¿rz!Æ -Sæ–Ž$zyNŠùA¨~j×–¤"ïˆÌ’µõ42{7¹¶þ@Ë×6:IÊ]Õ2è¬J¡6aÒRwRuD!¨'ÞœAq;sý–í£S¡ë('rÊ)Ý\†ÐÛ~Æ`tiåˆZÂŽéš‚ñ]D ÛiûR…ŽüòËo6'RG˜tkÚ4Ù¶R®`;¯´p×RŒH?0n倎ü¥ É]HÆm×EhݺuÕ¢eÝ¡™<fÇRëK—.sú¹Œé&«ãIbŒ%Ì)–·:Í:w!ãvéHèÄkÏÈ‘#lÛIZW°#•Nh„îÎ={ö@e(¯L©#˜¢ï{îg=¦³üî{'º.s9=þÔ§#Cx?c§°î„V8ÀFOxÓ]†ûÙL¼r`„ýhl¡zÑχ³ÆøR/­ñ qþz½PÏL‚éÁÎül ‚fŒ@À`z¬+ŒW·‚q`ÚÅÀT)q±iïkC§XÏh Ó¨60=ÑM}NÐŒ‘ürLOvƒñ’æ0´Ñî‘L^Ì_h?wËìýÈ»â/MÚ ƒÙ·¡ÁEÖû¾êê°ö”SO ®äï¿—àÓO'Uøº9>ÿüKjžç*Õë"¼g§£;á`»ò\ xMýé§_TžÅ_Ë#Ù Ê\ æÉœ9s]¾Æ}ð믿cìØw\.Ó¹s'[ÞÒÝ8‚¿æIˆ}\é º¢<wÜqW©rëá8ȓء"¼Ñ.ÛǛ͚5sù~gùUA¨Ïû,JäÄß‘^.SŸŒvWŽÏSÜÂ\~HHÚ´hˆ1×À—oÝŽ—¹z¶AXh°²>³X-¼¬6h^š¸Îàà@ÜwãYHj¯]÷Êl£¯&gûÉ~²ÊêÜYlâ²ÔŒl|úý<Üýܗرï¨õý^Ü_®¦  �Ûñ­”¾–6u¹9ÞÃÚã/yæ ôßÜW_}SZsÞyáµ×Þôº³ÚðáÃlç„î<å æ<,XèÂObÆÄŒ óJî/ToÆ åQ]yæuXáhéÒå¶Á.åaß_æø;uçÚsÆÖÜ;2oU3fÌRç¤cþOÏßP€èJ\FæÍ[�A¨­!ÅxØ9[ž/¬íšÜa‰ð*½/Ô>À‡6­Í;O|]ò7¿ß¿�ÝÂxLt¬QœorLÛÞ¨FÕˆMLV7làY–‰Ö¤ –_uÕujtÑGñÙC!áÍ�—}ì±'UÄN_$6Öué]ŒDôàÆ˜øÔay&:}¹šìÝÞtQš#öî îP^Sò½srJ×oç1' ¤óòòËÝnûõìÞ]³³©SK‚`:í9Âë¬èò;êßS„êå¼\ïµ¼µ{ÆÎJCf^Ù„Of®ãç¥CðOÆŒ¹Ý6"”¶©©©e–¡ÛƒÎ›oŽ-3‰>:´ê1Ž?ÀxT Ë€œHyò>}z©{ ~]@ÄÎÛòܾªƒK/½Ø6òþ‰'žv*Üç÷{ÿýÊ]Ïu×]£)œc¢ÖY"޶·Þ§æYzáÌ3G8]Ï º¦¯¿þV=r;¨Ž,Õf®ÄL<¯xà|òÉgj´¨³ä-¹˜L#ŒMÊK°;ÂØ’å¤(¤déGgIOР׬±&hÝwYÒI/-úÑGK¹”éðÜyî¹UœGèf[Ù{£°°’A҅ˆöIæJÀâñÑz2ŸÇÑ•«_“&ÖïËäeZZYwg–c¹½ülU¹öÚ«Õ#;ç)q&˜ä}O?ýÎ9ç|%|Cy¹ýµ`³o XZD è«Á0iðÆV‘×´çNGàC`z´+ŒÿKÖ~¨‘•‘UzÛø“nãpë6|r*§Ž€éµÞ0^Ü †Æ^ê¸É+‚ùÓ-(|r¥O 7 ¬ù.Íãð\{úé'lîV,_üÔSÏ: ³aqÝu7¨ÎÂrÀtÓôºh½¦˜øýDZäãƒ>¢Õa{÷î»ï«XíŠ+®Q*ý‘îݻڮ-<)))e–ùí·?”ÐÐS¦LÅ /¼¬b.ë æØ¸¿H«V­à.Ü×úñfÛç¬,Åì<?¹~ºŠ8«Là oÄAžÆQÕvÙ¾$ûܹ9ý ÆS“&}‰“ýü¸ñÆ[m.#ްƒš{¯¾ú†ÓýÍkßC=Š[o½Ã6 @(ýºb6[l—žŒj*OPÅ×ø› Ô®HˆÄ9C»ãg¯ÇÄ×nÁÕç@ƒÄ´X[•ÛÔUUU™ŠÅWŸÕƒú¶W"7–øô¦ˆ¬j4C…Û£ïïÜüB,Xºcžú㿘…Ììü1ž7öUSp°Ç:ÁJ-ú¶SëLhuðà!eˆPþ’סAƒÞ÷@GNWƒØŽÿõ×|Õ/ƈ·_ƒõm.YVð‡~rº?ÿÆ}÷=„ .¸Äå ¾êĘ„¹½‡~Lgî;_Wϱ¯ùºôuuä X†V?ç^}õu%0t†ž?déuB§@Ç<ïcôu¹Ú7C† ¶Uezå•×\ ÿúkžÊçÝrËí*¿ež¿aÎOw­wdâÄÏl.Ï® À±÷­³Á©ŒÑÙoÍmp5˜‚[¸Æ´ÎúÁ¡²H‰LÁ+è-„ *Gˆˆë€¶Ùóá5zœŸÓæk@MW’°H-YÙ>gèÿ€Y¿Á[lÞQ‰eìÝËÜúëÈ‘±c_wË&ßv¼0   œXÎ~ûóÖ. þ˜Pb`4sæl5:p±ƒ“–ø5ÝÑ©ãË3ûÎÓ{îyÀí÷9ë¯ •ýnöÛÍ›w©¨$«/áù¨×g' t+º`Ò‹e>A¨^†äáÏ3v˜*ýmYhÆà|ï—vÚw¢w|}ï\˜p«ÈäDVîÿ!ûµ×Œ~ÚæŸì°äLìˆc‰% gz¨t)u ‚X†‰¥XêfÔ¨›Uɪøø85u3‰Â2ÊþÅdŒ£˜´Ôc²òÊ]2–m×®­*cþûïSÔst…òå(Owà6\|ñ…*áɨ—^z%.ºè´iÓF‰Ä(ÜbiOŠûùý\vdi¥ùóhÓB­Sk±¶ŽËTIȦM›‚–L@±T“?Œƒž|ò1—®¹*ñ³¸¹>â(f",Ás‡ oNÄY rÂDÜe—]¢J¤oß¾×\3J}o:Ð2)Jñ“TzŒÂ}àÌ ÍQQdÀD¿'·‡q5˽sp;é~ýµÄÝmÔ¨ëJ½Ÿ÷›Ï=÷4n¾y´ŠÓY.¥Ð—S¤E77º¦èƒèFYe±wƒcbIdªL:t蠒Ꭰ<ï¼óžJ²’úõë9-QOÑGàê£Vù·£0P‡÷&/Ò¡îÊ+¯U× :ùòáç0éÏ„;‘+÷eOàç±Ã•ç'…‰<FÖsÀ¬dp”2K§:ìñ7+T?ú½RˆÙwé=K˜ ÆK[”¡ê·…¸­}µ†G›îêìÉ‚yá!˜gí‡eGÕ:éÌ Ã0ÿ ŒƒÂDUÜéZÓy^Ë^{í%%¾¡p‡×ŠlzõêäädåÌÈx„Îöex¾ûî1ð%ìb›õÏ?KT Äma.©ºö¯É·ß~+Þ~{¼*~ÙeWáì³ÏB§NµÎ¬uævé¨ü°í÷GèèϘ“q‚tÉR`Q1FeÇ_;묑êpÛ ÉÙ9þ⋯¨s‚.xŒ‘¸N¶1zœÄÎ>}§;4oÞLkûG«Ž2î×K.¹R}Û!þ~¶lÙ¢\béJ®¿þ›+ª;x#ò4v¨ˆª¶Ëµó^ƒÛÌÒõü,Ë­ºäðxð{#Žðw˜ëÕÏÝGy³fM+Ó!Ï ¼oa¼ÊUïD×yóÍq6'ŠJg̘극uAÏÃ[E¡êÜuÜeöyúòö§õ%«àŒï Ó»vHF§vM0ê²A˜·d#þ˜½ë·íGaYûõYÔò®Öh±E6V§¯�-ÏŒ° mÞ„õ¢qóå§+3ûvÚYùÊŠ¨Ì{*³N>§J’jSFF–®ÙÉÓ–bÙ¿Ûµ{³uªWèÅÒ¢¤ªýÞÚ »ÓÀN¼çu‚‚,^?è¦DÑ«¹ðúªßÇþþûJÉþQÞ»9ßò:>xŸÊ?𞜃/þGµ!ܾcÇŽ+ ¿+áÀ·{ïõMÄ#<¨ößáÃG”°—ù ŠÎxýeìÁÜûLtaúí·ßæÒ¿:iÞ¼ü˜dëÖ­*fÐÅ‚ŒI|9à‚°Š�÷ s%(ÀÏÇØØXU=Á›TGÞ€¹¬Q£®Åĉ“ÔïŒCÆuÌÿ0ל÷ýâÅÛr]„ùT~g{¸/¸¸¬~Äøëçµ’q*aøüóÏ(9óNC‡ž®òn4ùàï–¢|=Že?üm·ÝRêsx]à@BÆwÞy¯ŠYŃQcLŸ>SåËËß°ê…yü~ŒEøûsü\Ñû¬‹Ìž=]]tÇR¬J¸Þ0¦o 3¡BÊá8ƒ“ûu×z8½$03i§j§!ð9?½C©³u>KKDüö©ÖJÞŸ2лfé{!VkD*ªE]—a2ïÎ;ï)Ä3(fƒÝ¨Q#•0a²‡Êrû Ã‘n¸^DúM;uØÑÅàšÏq2d0^xáY¿h}Eemé¤P“TÖX¿Q© Xê#¼ GTVÄôé3T²ÞU‡¤ ¾é°‡3óñPT0Ò*‘ÜŠ4[ð`V¾Ïì„WìÎÙïÆ 6¡ ¡È­yÈ.°HÒÛϹñÆëñÇSTƒI(ŠHì˜ÐdÜqï½€NEì¤t,ÕÈ䓟þ%0³:5é1…—Uô&×QÓ0ËN&7yœ>ûì‹R¯3õòË/ThuÿÊ+/ªDtL0é£,í¡sìK/=oss;õ¤éßß¹xÂ3v¸–Z´w³pä¶ÛnÖ’Û‡”p€‚­qãÞuº;—ï½÷.x­¯¼ò‚¸ÀÄ9ÚÎFu2ùÆgÈÁe^c‡ýŒWI4ÆüLÐqr„ï}öÙ§ªÔ‰A$Ï?&ÿí·•ÛvÍ5W•Yžû•EˆÄ™àÏú|éãÊãè ŠY¦ŒÇIw&íáµýÎ;oW¯y«cøµ×^ÖŽÓëJ¼F'¸ >rº;Y(‚jý ¶.ÑÇ!8ãU-Õ„(š¹–iû`9Q¹{>ó¼Cð•À,¾Ðêôíï÷uì\™4é%¾`;Í6‘×GNŽ0n¹ùæ”Sƒ¯ÝJØÁõúëo©NH:HÉ“¿©0Þð&l˜e hÆ®Ê<±\öo¼ZãÂùòxüñGTùfеÙ)ÈNg{Xz›Ž¬®f,ÿÅïH§î =‡æ;<y*ººòÊËUŽÇœy:g¥½Ø6òü»å–›à)Uƒ<Ü¡*í2¯+<·ß~§SØ¢ÕaìÂû Ùë:öN‡$âè&ÌsÊ>êÌ‘ƒBtXQÁ¢¡º†ÞÚœ·S·Ö~¨òÖRöE¾Go;MÚ›Õ‹ÅåçôÇyÃ{bÍÆ=øcÎ*,X¾'Ò¬ƒW¬Çªxmëû9¯abzwi^]›£UÓúHˆDDxˆz=Àd@hHp™c\™c^•óÄU?ýótˆ+ÔÚæ´ŒlÞq¯Ú†ùË6a×¾£ê5õéx†ê=_ùy‘áÖ²ëþâ`殓h‡_Û|Q´Âö‘yÞŸ9–’fÛÎ{xÆ®fþ”×ág|úéGjð�û¾(òræÊؤIÆ[ ¾|…ÚŒ/|ðQµO]åø[¿ë®;TÜç/¸“ðœglÁþF_›n¥b7Š¡³ÆnãÆ½ oSyƒÑ£oUç*âr—WÕ‡"°ûï¿×ie ÂßÖwÜ­Ú~=¯Â)ý5Ëvm¢Ð>ßä,n"êó÷î8ù6~Wºù²”‰õŠ:šŽq†rAs+2Ù;Ž9+»k‹äææ©åífö¯[×Q3NÏBÝDfB)Ü“U´Œ.lÊm}*,ËÞÖBG/ŒmMH‚BáSVh_:Ø×Ž»hÓMëÁða‡Vƒ$­'Jûn¹ž—.t¤00–î}Õ1r&x²¿©Í®fÁd"~T·3à¬_ßó‚„#7¯¿þZ51¹@‡�ŽˆýþûT€ÆÑj Öî¹çNÔU˜ÔùúëÏU2´6 o7Äùóç 6`_#Þ]x®s„†+A|G=-9÷\f^ Æ“ûmf½" ÏÎC}³oý?2r͘¶6ÛZñ 8+ø7Lª1áÄN,vØŽ÷N™Ë)|óÍ—øò˯ñ÷ßÿ(á;“:´W.Mtk¢8ÍŸ`<E׎ž#ziÀò`¶½x«<dzê„ñåc=¬’Utæ ½?Å`={öP˜V$0£xê©§Çù矫Ft2™Kq]N8 âôÓ)gwJ:QPÆ$“ILl±Ô…«åtYyb&}û^|ñ9%l¢Ž£)‚gB—n¾t!ã@ ûòžÀsâ‹/>U£³gÏž£ˆ°šß¿aÆêáÈJ½438`äçŸ'«íãèÑ}ûö©=G±2^å=@¯^=QUxOôÖ[¯k ï/TG3Ü®: ÷/£Ä•àlj#fé¶Ìãçj9}ØÙÏ$$!Ï:³ð¼cò“¿}‹×^ó^˜ç�“¢ÜTr”/K~©s€ûŸçoeÏ¡r8æcôrÃB÷]OZšGÂtk;àÆ¶0ÿu�æ_vòî„G«0¤ún0RƒÂõhß) >Óó2¼vñÎ8„-ìdÆŽšèè(­Ío©®itã +iu@‡-ÆNt°¤ ˆe¸öîÝ[­3¶‹?ÿü‹rn¥H‰BÜ/t”>|˜Š!ü½<X\\œÖŽ}¦:Ãèð@g–£kÑ¢…jè@¡ ©]Áöá×_TÕèˆB‹ìì-ÞT®­,)MG‡ððpTîkŠðG-Y²TkŸ ?¿@Å=zœ¢^¯¬»fUã ÊÄîlSUÚeƈ?þøêø¦Ó·‰yNÆZÆ QBPgeÛë"7Þ8JÅžû÷ïW±»c¼M7:–ñÜbLIñ€#cÆÜ®-³‚;²kkÉ¿êDßG……¥Ê6êN[úëå7{·‰\õf!èJ+ôîÒû§`Öâuøcοؾ÷Hq™NƒZ®k»&¸ä¬¾8­GkÄD‡ÁdÔËJJm‹}¹IûϪ.3=þÓ÷¿¹y…øgõV¤œÈBžöû=‘‘ý‡N`ÏãØµÿ8N¤f¨B=ú{­ß5„qÑa¥¾ƒÓ¥ü¼?Šâ ²xæõ}çΪmãu˜âbºo—w«ãOyÞ—ò;± &ØvîÜ¥Äå,÷ÌÖl#ؾøÚ`Aß:¥²íåv0¾dlL—8:VqfRRcøÎbþî˜Û`LÂí¦è¨º`^±Aƒ*c&cd_•\­®¼tõ〖iß³g*AÉóƒ¿æÍ›©þ1:'»ª�@x<>þx‚*QI1%¿ŒEy®Ù (¹Ý¿üòƒú¼Y³æ¨|ã8þ.S°ÇãÎk‚3xÄß3cé+Vªß8·•÷Qt8cÉßœ+8øbôè[´{®¯´c3-.);@Žf¼²’ÓwÞ¡¼ÚÃ\Ï=ö9vêÔAÜ˯ânkmpó5ƒë“ÑîQŸLÅÏ™&¾Æ,šQ»üµG±–Të/þ|d‡ANN¶ €©¯®íqµŽóöÏ9rDkD¡Å„ ŸY~ÂÁ-·Æn€Ïظxp8%¼�+UÙOáZ2ìù@;&λÆéU/'¸¿E'{ëk•L‰·=oÓæøœ«¿]=W0ðÑ;G<-‘ɤ×yç]¤æiiO— W <L%ú*£ÞOOOטW¨G\ΜYZÄTÑ3™8ñCT–¡CG¨Î#&"™Ü³‡A>"`ÆŒ)¥Ž¹=´l½ývëˆÊ7ÞxE•íñd[9‚æÚkoPó´+®l ‘’Ë–­PÁôO?}_î²tòºé¦ÛÔ<G00t¯}úXÏ–¸ÿþ{l¯ñå)È?|«‚ÌÊ0oÞ|5Ї¼ÿþ;>+‹JÛâ3Î8K“ì„ÿþû¯Ë]žÉ@žë¼ö2Xq¤¼óG*G"Q¤¦nŠô‘¢z¢ÍU»Q]q'1Œ³XFwµL^x›Õ=ÕXüh??g,q—H×¾÷—¡˜€ò<¸Í+Â59ˆ´ß.³pjSAñ£ýd}®ñì1ê³ Fíó9q;ŒÚ10Yÿ¦€Œ£PÅb2}D°±8¨ Ìôѹ\ÎPüzaA¾ö1y¥õùųîÒ>ä€|4˜ŒÚ|éG5q…¶GƒÝ£Q=òŸ+½¬õ½æ‚B˜ó P”k}4çr¾ d^{Äë¨1ýÆßY|ãÏqŽ ‚P³ø[<S• GD3±þý®¹_oÏ ÀÌüÅV˜—ukyã¹É0=à›²6wŒKš QùܬmyA¡z©‰xÆ•é€;q ]g222”‹?£d;¬Ë¹j¾J¯Ú“Azµ¼ÕΠ3²r±|íNü:kvï?†Q†á§vBD˜ÞîZœŠŸJ‹Â¬ËU†âm0Û¶Û³ï` Þš4Óü§G‹Ã1°ØÞç/a–ñÁÅÃ;àáÑ*¡1’ËA܉gÜij AA,sÀà$½øÑQ•b)~4ÛM»GÇ .þ.ïÑqÞ‘ Z!x û4“a´¢<˜Ð^!ã|Æ–åÀ£#ö©Àg;7Á'äåYÞ±¦<Ô²“ue?š .;•9ƒ7«:ö%¥Y¹r•S[QBñ]heL±¤3è0¢[ŸºZ©l™ÆšÀÕ¶Ri¯ á(ŒòF4RôD'ŠC‡£¦áÈ`ýÜvUšBgÕªÕjt ŽØÿ>|y<ét¢ŸK®,|íáÈŠ GŸrÔ¤ 5C”vm¸#»�ï¦ç⊜´+4#NKÌh— >òï+s ñnZ.nÏÎ/-.AA¨$ºÛUóÀz<ÇÐ)¦×z#ðãSaè™PþÂZÒ;àܦðÍ­®ëŽf‚ ‚PÐËXÚ»i50ÎèèAQ+™ L%å3M&#Žá:bìãWá»·GãÂ=ªµ½Öeì;´ EiEÚäLçÙ¶Te²~¦Í®ÈŒ¿–nÄÍOLÂÔyk´¿-N¶Çh÷=üc2˜ hT/¦Ô¹PrŒE0&‚ µ ÉZnáNéL{(0£ÈéP“îÀ®é¨2éGÃ;€ú-àU–þ¼|‹—¿Ü±CÀÕ€·z„WY¿ÚêPâ2»ôF¢v³¡—)=¡1o¸xHç)Úí;Ž<¢CͳϾàr,SóÈ#«yŠÍž}ö©27:;vìÄš5kÕ<ݦÑ-þY¡²Ö×Õ…;ÛJkø—^zUYê>ÿüKxâ‰GËØ"çäähÏ?­J¯¾šTérÞ€6²Ã‡U%;hÏKûY–Íp„®w<ð°² ¦î´i¿—únaaa¶y è|Å”)SÕ#÷?믻ÃYgTnoýMŸ>S¹ö ‚Ps4Ò{—jmú¥¹Þi×AAÊC#5 ®“ň"ƒB%h€·úÀòϽ·–=ƒ�i¶:¦,m|SŠÔd6 Y¨U`æØé*‚ uåŠ^,z¢sš.æÒ±OG[,¥Ÿw·_ÊÞáËîÙRëâ2!ÁZÿIP€Ýg–¸„=‘‰ÛbÛžÃØärs `BƒÄh4oRZ5Býø(š<î3«*i9øäÇøâ—¿‘“W� j²ä¥g˜´ãߤaœMô'‚ BíEfBÜ Œí—q¶¼.p*lsÌ‹_‡Ñì…ŽÖy“€Ëžƒ×˜:øà  È½åÓR€Ï�^øøß•ð?}oSçžê¦ÂY=ôÒ7lu×ÕŒb º?±6öÒ¥Ëqà ·¨šÖt{¢;ëj³–<ñ,=ÁºÙŽtïÞMÕ§¦PŠë¡ 5±YŠK_ǯ¿þfsK5êº2ëèÚµ3V¯þGŽÅ‹/¾‚AƒNCVV¶<ùÛM”;ÛÊê .RNYÜ'¬¥Î}Ò¢Es-)`ÆîÝ»•»ÙÑ£V·Á#†×¨¸L‡%=y¼XCýÕWßPb3~/ËŒ -a°q“Ÿååå©åo¿ý¶2¿–—äs,aùñÇÕ>ṋŽ;Ø–ûä“OñÁ«ùÇ{Xí3w9~ü8–,Y¦æ;wî¤ÎWwàw¡Ó·µÔ=˜}'–/_¡æþy2’“›@AA„šÅ“¼ ]7"ß‚#aÙð' ™…0¤ä£èx.,Çr´¼JSK––#ÊÖ&³“ï®uøi÷¡ZÊ26m2&„� Â` õm!C¿zèËô}0Ï?KZ> Í"pA3XÚEÃW$ä„#""\Kµu8g#‚ Ô^ª"¨b.ž"3º•q ,s­Öò•%8|Ö?ËYÙJWð=ž,oÿ¾¬œ"ü4c¾ºޤ•Ù&£öHdzÞ[à’3{¢o·– *v`ó……f¬Û¶/¾?+7ì¶njW,ˆÆ âÕ¾™ ‚ ÔnD`&ø·´Ž®×G¢š£AêVT™éã‘c ­U"_Kj~ù(ðÛÛÖŠµ½7xàjàßeÀ#¯A¨»·{M`v°yÄ&Ä;—l<ôÐýصk76l؈uëÖ«ÉŠÐ^zéy%Ìq&0ãMè+¯¼€{îy�[¶lUâ+NŽâî»Ç`ÈÁe^»òÊË•‹¢­_ý]M„–œô'ÜÝÖ×^{YÛ/¯ã·ßþPu±'LøÈéú(ð{òÉÇà°”é¤IŸàÁUç«cÉÛ»îºÃ©(,""7Ý4 ï¿ÿ¡ÚGÏ=÷¢zþÔSûcܸ7mËíܹË6߯__xŸΰ%UÜ)©©¶cîÜyJ,·}û§Žz®Ø¹s§z¤ MÄe‚ ‚ ‚Pû` 44MÅÕŒÀŒ"±}Ù°lI…yk:°_›? mÇÁl«Ì›ÄÁÐ8 †f‘0´Š‚±M4 ­£a ñ¢ðÌd€áì&0]räko’f1I‘|Ž ‚P§aþ•B3VÁ /#XsLUF@UÑUxhn»ütœ?¬'fÿ½¿ÎY…Û  Ð¬bfnOdä`¦öÚ_Ë7a`Ï6¸÷º3ЮEƒJ‰Ú*‚û†Ne?N_w¾š”ÔlµµQdЏ˜ˆ2eHËCÄô‚ ‚àŸˆÀLpO͘‹‰‰Á¡ÄŽÞ˜e�&Ý Üý-*Í–€÷ovo@¥á÷›ô6°R[×+íº RPLòØ-@^.¼Áá–Ð "¢TyÌ“5P§ èÓO?RÎT3fÌR"šìì$$Ä£oß>ÊqŒ¥4Ë£^½zøâ‹O1uꟘ={6oÞ¢J(††† aÆèÓ§7.¾øB—뉋‹S¦?üÿý²…‡‡áСÃ~'0sw[)¨£pŒ",î[º˜>|……EjßvíÚçŸ.N9¥;ü‰ÄÄDu>,X°¿ÿ>E ÁèhÆ„…U½{÷Â¥—^Œ¤¤Æ.×qà ףAƒ˜<ùGU&”Vî<졨‘4mš¬Ò<çáM6]É<áì³ÏT3òÇSqÏ=wºõ¾¬¬,;v\Íów!‚ ‚ ‚R^>†9�Þï¶Ï«‡åØŸRhaW&Š6§jù•4%(³lKrÝt†¯*©ù°pZŸªþTŸJAX«(ºÅÃÔ=†Sâa ©]Îírë«clŸÏqD:YA„Ú Û1æbÙgĪÌ×: mœUÍqœ÷ÕöéΰI bqíùýqшXµ~~ž½ WlEjF¶ª³Éåò ͘³dþÛºOÜú?œ9°LF—ÛçÉöëËî9xo~6.\‹" úYâµ/àwn\/aa¡ªAbAA¨Ý¸Û’Ü|ÍàÆ£ÁÅßúd´{Ô'Sñs&‡‰¯Eñ1?¿àoÔR“„üÛ~¢………ÈÉɆY &›4I‚/q•¸´¾¢y–œ£Peן_bàœÇá5nŒ¸Ã£·ààVà›Ge?kH‹5 é8™áùó™ráµÀýÏ <<&o> ŒÞâ¯'?BËa#•Ї:qVÓÝ‘@è ‚ûðº7pàP5ïŠ+.Ãý÷ßgýú ¸îºÕüo¼‚ÁƒA*‚î…´³ S‰A¶ö£ËK¤UG\ã,~qg9>¯Ï³$2I^x›ihS`ñ£ýTüœÑ‹—f-°(*Ô¦‚âGûÉú\ãÙcÔgŒÚçsâvµc`²þÍR íØ°2ƒ±øXÕßU>ÛXü·zÞ`]ÎPüzaA¾ö1y¥õùųîÒ>äFãòÑ`bI‹Òjâ m»G£zä:>WzYë{Í…0ç (×úhÎå|Aɼöˆ³ÕnÓż•w$ÖA89ñÇxÆ“Æ~žtBæ�š•[×âÞF?ÀâƒæÍÀ4Êg[PôÓ. £�~M£œ’�éõ0¨!ÌÑðg¸oß>p º·îŒúõëYc.'ñŒÄ6‚ ‚=5ÏT¥ß(77'NœÀÑ£Çжm[µýŽe2¹Ýf'%´]¹9>WÙž¥±”ZAav<Ž?ç¯ÅÏsVc÷þã0—©dÂ%,8ÏŒ9ïŽ�-_äjÜÛ>‹*‰9gé&¼üñ4ìÚÌú^Ô^LÚq¾öÌ}Õ™ˆSλ®bœòbŸŠžAjîÄ3Þp8õ‚‚ûê0I‡sŠ%*}²Ø=:NpñwyŽóŽTL‰ƒ™àOÝÊœ-ÏÑ(êGÞº æ#°(^á³»ˆ8`À/›~øñ9`Ö‡ÖÚŠ z šu6®V.Ô~²å”tà Г€)ß7ÜÜö0Š¿ÃÛ^—eEÆ"¤}uÖÅeöxz±• ]<ƒno—‘~ýj‡˜^Ò“ÁZ¯^=!‚jR¢6г”@+À¤„îwiO ÌŠµ\JHf´ ÈÊÌP"0ãß…Ú›ÌÚú ´õië+Ô¦í5Î ‚ ‚àßPD·&Ñ P/;‡Ã3ám ?Ù ó—ÛP+È7üä Mæqë>‰0L‚¡=-çã±Mƒ¬H$Å4Ôr9>)¯%‚ þ;ŽÙÖQTVTT¨Í³4tÙŽcæ.œõm:.Çþ(>åŽ(É3J¯/(ЀÖÉõÑòêz¸ì¬ÞøjÊ|úÓbdåæ«j7Ùù…x~ÂÔOŒÆ ­‹·n«³eRRsðÁóðÅoÿ W[/ßTÛ{jMhߢ¡ÊA;ë»Ò‘²™‚ ‚P;™à3ì1AŸˆÃqm‘tô?xº|¼s5ph;pÁ£ÎDŽì¦½ Ì云\í<~pÚ…@DLÉó'޳&¿Nþ[áúý¹9Àû/ß|\y+pÝ@½†e—ËÏ^Ó¶yâXx“-:"66F‰út$Ø„êc×®]ê‘¿A+ê }›»téŒððp‚àßÌx¨¥JÆ™L¶Gv&ë—rºP H«°LŸG±Ð¬d¾dù|->ÉËÍSùùÊ…¶ ?_û»�ø‚ ‚ Ô�ž üciŘ˜h´Üëu™!ßËÏ»P±šÅ‡Q¨M†Ø`ÏKFÀE-`ŽöŸthóôÄ6+ÉçHçª ‚PÛqeL`ųLf ÒÓÓ‘PìÜY¶„¤¥\KÖÒË–¼á^Výs(o˜ƒ{®ŽN­“ð踟‘’–­^ËÈÍÇs¦àëWoDÄèâ÷èB¹âüŒmû e¾OQ‘k¶ìÃsLÁª {Ši†:Ñæ'D… yR}ÕWÈü•=Ó‚ BíC†Æ ái¢‹IÎèèhJè¯bÑ’„ß? <Úøg2• ¤| ¼vpWk«À¬<qYHð¿1À‡ë€·ægÞPZ\FbKï�¾Y®}ž6]¤-âz©)V¡Ù©Í€1—iÛðpârøésà¬n^—‘£mº",,LíoO�^¼ƒîÖ½{W„„„ 6 osmq\AAÁ9¼¡@©{NxœBX² QÛ±œÈCѤ­È»pŠ^ý†ƒ9ðzä6Uíµå>RA* Ådiý+³¯Ue')¬r&¦*;çb*0gÐÓP¦œ–¯¦ À�œÑ¿#^¾û­O&H•'§tlû¾cøü÷%Öò™¶ír¶}%ß…ïÌÉÍǤßþÁ¨''aÕÆ½VI]MËß µbâ÷mÞ( ñQʽ¬®ˆæAádFÌ„*QшZ&8yãÙ¼°ñ[x«€±—yô„FgŒÎˆŒsÿ}{/Lî}øz0qžê|Ù‚|`êdëT äŸÒ_=:˜•¾1“‘°‚à víÚ­ûõë‹ÚBmÜfAªûÄ© ‚ þ+7ÂÜ‹ÉdÄ)Á-›» 'Brá-,á0Äj§'òQib‚`H ê‡ÂÀ2•!&k¹Ê N&õœ%@‹;rŠ€<mÊ-‚%Uû¼Ô<à¸6˳º‘yƒ3ÌS÷¢`Æ~F4FÀ maIôl°ž·ˆË A·àæêØÙ;Òï—ûA„ªãŽÃjy°¯(Xkó­ÞŠW¿^Œ¡½ÛáÂáÝqJ»& *ïgÛ‹Ìì—©.LÞ¯®;w?&ü°P}>ÿý8k®9§/š4ˆ­pÜâŽãÕOg`ÆßëQXd®s¹“É€N-ê™9‚Ä>‚ ‚࿈ÀLp‰§7 Ζ· Ì hÙ¹A‘ÉÏ@ üïàì{¬îe•%¾p×ÓÀµw½LzGK‚f£¦HMhˆÐæ­UBÒÑbX„êá±ÇVSmâ§Ÿ¾‡ ‚ ‚ 5OU;kIhh(ÐåhCÌOÚ ¯`€ñÚÖ(z{}¹‹„ÂÐ: †–Q@Ã0ê‡ÂX/Ð&KPÕ: f­ËöH,²`ÙžË6mÚªM;µSQåök–©{‘?{?L—·DÀ5­aªÞÎÌ®G ~ƒzêØUéˆAjwcŠŒèÜÙ½MCü¹|/&ÏZ…_ç¯A—ÖI¸hXw ïÓ‰q0©Ò™¥EdöŸåìó«›À@F?�¿Ï_‹}GhD`ÀÑ´,Ì^º 7œßßå6q?åiËmÄ‹Ÿü‰=R¬®e†ºWp*"4H[–EuÓÛ#qŒ ‚ ÔD`&øû Z߯ÆÅâ`\{4?´ ÕNp0ôfà‚Ç€èzð1qÀC/7Ý|ü&ðé8 ?ÕÍæ§í_û�]œÊAAA¡vãNg­¾ EJ±±±è½½)`—rÑðÆ‹šá(ú~p$†ø%&ƒ6ÛÆÀØ&–ð²Þ¼µ£–¿h }&§SâK^È)‚yÖ)»æ8,K*á™Çä™QôùVMÛ‹à—zÁÜ6 ÕAû×;³)¢££f}Nr9‚ Bı¯( À„VI hŒ}ÇsW`ÆŠ{°rÓ^Œÿn>FžÚ î†vÍ $(ÀoÛ>+4ˆÂÙ»àߪ¶Ñϼ[qõÙ}Xæ=ÜÇÒ²´ï9_M[†Ü¼Xꨃ¼vÔѪa’×SÂBº×•zÝÃï,1 ‚ ø"0<ÆÓ‘µ ###q°~—ꘙ´�þôQÀ%O±à3â‡_®¹ÿ"0y"PT„êâD‡îh¢ícO,†AAAA¨]”W&“n èÛ I«±72 ÞÄ82IMΨޢTv„š`ì«åd8ÝÚ8œó¢Ã°ÌÚó†TÏÖu4ywýƒ ¯Ã’àûüJ“ô(tˆm¡=Ýè¥<¦ ‚PÛqÕ‡ÄçÙѰ~Ú7‰Áþ”<èMY[~ßÑ4Lüõo|;}útnŽK†uÇÀî­ £Z°¼v±ú#V•ܳ5>ùío­Kˆå¼ ؼ爎•î~-2[ð尿xú£©X­=r÷嬮6õ&£][%">.!!!ê9‰kA¡ö#3¡\<-ëjyééÈjÑXó |­„û^\ñРªFÉÀK7ÜŒ}øóGÀâÛ›‹Ñˆ‚îýÕ¼3™§II ðAAA¡v¡çbÂÃÃѰaôÜÖÈë³ZËrÒmM›öe£ðϽ0ÿ±HÍwïý9…(Ò–7Žj _ÓóHc4lÝÀ#÷2AAðªRÚ›ïeQttz´©‡…›Ž#'¿ÈöšNV^!þZ±óWmCó†ñ8ïô.8w`4k‡ �“‹vÓ{m)¿Ÿ»ms‹¤DD†‡ 53Wý–‹#©Yˆ·-“›Ï§.Å»ßÍÉôlXê°°L'62=Ú6ÖŽwp¹å1‘˜HAü›ºWÔ[ð;8“#9B›uDFH|Î]_÷N®^q™=­ÚïiŸÿÄ[ð5Ç4EdR²²•Ö-†%�AAA„Ú…7îåY&322ò[!&7'3–¤0˜nn‹ Ÿ†ÁôhWšGº÷¾”<øšØÜ (hˆˆpu̪ŠäA„Ú]W):êÜ:ɉa0°¶¡ô¤Ú6ƒE`Ûãx뛿pÞá®×Äœå[‘‘•çÓ±ýìkq·} FXh°mÛó ÍÈÌ)-nÿû¿xé³™HÉÈUßË`(ûëÒÄï×±I4š6i¨bòÊcJ#‚ µ q0*…§Îfˆ‹‹ÃÁøöˆÜ¿>%/ ~A¶ï·ã`‹Žˆõ¸<¦í‚ ‚ þGž¹�9E(°¡À\„B‹–š+<&ÔZ:Z§C Ñ„@ƒ ¡¦@!Âɉcþ¥"ùˆˆ$7n‚S6Á”æ[p²c 4ÀxfL#“P4ï ÌŸo…eG†Ëå m¢àkNÝßM5VǪÌç—ÓáZ[r9ÏDâA8ùp7fá<<5¬‡SZÄbÛálU>Òé:‹ù*Â~[¸ÓþÙ€vÍàâ!ÝpVÿh”�“{^öm©;.lÎÚbÇ÷ñ/³õE}!í¿Òh¹ù…J,w²ôË„™Ð»m"âãlbúª|÷šØoÏDâA„²ˆÀLð î”Éd ¹·Ñ)hãkÙÄ;�­‘Ç kQc|:÷4|Mj§ÞˆQ#~Bʼ&£@AAü&)3 sU”¯%œÍ&­U»ÈZ*&M;?LZB3܄ȀP•ÜApDÏÅ0÷Ò¨QôÝÕóów!#ÈÍòu‹–1žÞ¦Á Q4m/Ìo.ãVfh…€3’àËÖ8*/ý2›£Q—^épõ$ž‘xFW°Ýã€y–ÉìÓ¾æ®?†#éùåJwì[Êí²²vû!¬Û9ïý´gôi‡K†tE·6I t»]­lûëø¾ÔŒdæ(g2¬]çÂK\»ŸeçhßÁHÝï§á7lQ/]Z'#,,T9Ö¹ýÞމ$ž‘xF¡,"0*Ä·²ŠÐ¶rÛ„eÅ»0ø28+Єï]¬›ÜüÑWcYˆìLà‘›?¾ƒ¯) ¥G?u|èGjÛ(AA„“Ž}M-ÈÖ’—¹„Š`r;];W8E„ &0 FHü.u WùOò2\622­’›¡ßdÌl¶ B Jhvv˜†4FÑO;`ž{½‰0ôJ@൭aöm'Ñ€ƒÉhÙ´™:Fžäa\-[Ó¹‰gOxFНÂÃõ6± º7ß™k{ëX¹ô‘Ô,|=s%~š·ÝÛ$á’¡Ý0¬g$ÆDhŸa(g¥_ó$Îr\~óž£ÈÉ/°‰Çb¢ÂP?.²Ô2Gµíd˜ñ$èƒ1iǶOë84nT_ãòYý¥OJâÁ$žádGfB¥ñ¤L&oLˆjØG£[ ^j5$8çì]Üÿ#Ø >g×Và¶‹´;е¨´èˆ˜Äz ôJRRAA¨2µ$TŠ–¼”ò Be`Ò;³0qZ3" ‚ œ|”WrŠó,;•”Ôv5ÃÒFû$eŽXB0^ÝJM:¾ö©ˆÉ E¿Ôfhܱ‘:FÄU'kmÈÝH<#T‰g¡vSQ¼ãktòlÐ ýÛÕÇÒíi8‘S¶Án>'¿¯Û%ö )1Wè‰;/9 å”ÎtŒ¡<úìâå ŠÌ˜¹t3 -%h3këëЬÂCƒmËjËlÙ{”ªºu\EÛ£HNAïöc3žðgc‰g„ª ñŒ '#âÝ(xŠa¼aˆ‹‹Åþz]PmìX <Ò X3>eÎÀy½«M\F´éŠèèh))‚ ‚P‹H)ÈÂqm’ä¥Pxþð<âù$‚àó�111hÕ¤9ÎÜÙ ‚pæ®Vê˜ðØÔö\Ä3‚7xFê>å9pšL&åèÙ®Eº7‹¶:Ž*7ŒF5Q,¾çH>ùc)Ž¥fªÏq5éÛQÙ‰lÙs3VnÕ>Û�Kñv íÝA&Ûryù…X»ó°õ=u|2Ñ¿u,š7MrêÖZ^üS±‘Ä3‚7xF„“ ˜ ná­ÀRŽ'šöCµ’q xù,à‡gµ–ÞËãQYwûmm½·œ¤§¢:Éî9P9ÃÕ†Q Þâž{îGÏžýÔtÙeWÁ<óÌójýƒ+óÚĉŸÙ>ÿøñã¨,ÞZ¯©-Û)‚ µ…£ùRrAð*<Ÿx^ ‚Pw(¯#ÖÕßÎæ9­E‹fè–ÝmNÄC¨YÚ¥$ kNš5K¶ t×½ÌÝs¢ºxFð6ÏÂÉ K(6Ij„í¨„ZU8 Fåv<3«¶ì/å˜Æù´¬\äºUÓñ½ŽdçàÍï 5Sk Vw²ñQÞ«-JJi[÷ÃÎC'JÌêèÄc—†Þm 11Ái¼cOM÷II<#x‰gA8Y™P%< ).ã(Së^È ŠBµb.~xxí< ËKB°Ç€ëÏÆ=£­ß×…>º^Â[·SeG9ÒÇ]j‹Ì)))øçŸ¥¶¿·oß7AA¡6À$SvQ>ÁÛð¼’$¦ Έ‹‹CÛ¶mpöÎ64K °¦4›0rw+íX´F||íûI<#ø ‰g¡öQáãkìÛ`¼B³>-¢•ª8qE`Ê?›T KJÄæ­ÞŽ»ßùsVmCFv®*iéζ:nw^A!ÞÿåoL[º¹Ôg_uÆ)h_Ò÷e¶˜1sùVUÂÓßÍŸ'“ÖW5¨] Z·hæ5·V_õgI<#ø ‰gA8ì’àU**ÍH·­8-™¶?±3j„•S€Gz»«XÊrÝJà=E³PìkÝUÝx9s/««å1§OŸ‰¢¢"DEE¢iÓdõÜ”)Ó ‚ ‚àïÐ&_’—‚/áù%å¡îà-3vÚ6mÚ-"áÔýÉj†Óö5E«º—5µ ¬îeϾFâA¨›TÔ–ÑŬ™¯œÚ6õ¢‚¬.fUœ(æšûïvì<˜bs3jŸwz÷–8’–…«_ü>õ>™² {¤¡PëwЗ+ÏÝŒ¯¥gåâ­É 1öÇÅJȦ»®ulÞ�£Îêe-õYLJz6~Y´¾ÊßÇß'îƒvõÃгU4lXßã~«êŒk$ž|Ä3‚ Ôu Õ�Dß¡¡¡ˆŠŠÂö&§¢ÕþŨnêÜü0l<æû€§ïòj.=Øk0Ú…„¨ýYUj‹mêÔ?ÕcÿþýP¿~}|þù—˜>}î¹çNåŽ'‚ ž Ç&BÝÁ_cšÌÂ\Ë.Ê8Ž_×-Àн±îð¤d§«ª±¡Qh›Øý›uÆ9íû£qt=‚ϳ ƒ !AÐa¦S§8¾è¶ÇœÀžÈ4ÕGRfjŠÚ!22µ‰g„êBâA¨û8æcŒF#жyµNÃOkŽ£°ªc ¤dæâ‹™«ðÌuÃ`xG†ã¹ÎÀÕ/}UÛbõöƒxç—0²w\<°º´lˆ �UÛ²¤Ì¥E¹ŸååbåÖ÷ãb,øo‡r?£¯ÆF†â…›F ~l„í}f³?/Ü€ª<&Ÿ«ý0•!,È€¡ícѦU3ÄÆÆJ~F8é‘xF„ºŒÌ·qÕ[^­ãk¹À²Žùí#óßO‘{5B~ðÎ ÀÆ%Àèwµ_BPÅïÉÓÏçï�& ¡Æ8Ö¨9:÷D``@a•¿Œñ6,‡¹yó5?pài¨_¿ž˜¥¥¥cáÂE2ät‚ ‚ øf-ÑœRíöòL\¾<÷ LݸXK¨9}Óü«ðÚ__áÜŽ§â©á7j‰ÍÚÛa-xžoaÁ0ÖáÎ A8Ùq̳Øÿíj¾Q£FhÑ´).Ú’‹».Gv@ßZ€K¶tDËfÍѸqcÛóþèæQÏÕÄ3‚P{p·Ï¨¢å8¾E‹fè{à0ÖÌÁÆ#9¨Ê˜@ƒöoÿnÞZœjGôlÓX}§öMëaìçàŽwþÀá™8”š…Ïf¬VËvoÕÃ{´D»äzHˆ SB¢ãéÙØ´÷f¯Ú†•›÷#'¯@9–qâgD…‡àÕ[ÎDÿŽÉ¥Di»¤âƒ)Ë´vÔP«ûf*‚Ú¹ÞÍ"ѹysê}VþæÖ*ñŒPÝH<#B]Ef‚×qçf¡~ƒØÚd ºoý5Êô€­«€'~ê•S.bÏ6àž‹€ÿ¡¦ÙÜãt4hPaaaêïº|s¢£—ÂäÍÉ€ýÔ9‹””ê5Of+W®ÂäÉ?bÓ¦Í8zô""ÂÑ£Ç)¸ñÆQhÕª%<¡  �_ý-¦M›Ž"88H%‡Š .8O[wªK‚Λ·�¿ýö;víÚcÇŽ«ïœÜçœs¶úwÜÛ233ñÇS1kÖìß¿_ ó¸žN:âì³ÏÄ AQY–/_»ï¾ùùùhÒ$ <A8AHÕ’IÖ±Î3eÃ"<<í=då»7š¶ÈR„_ÖÍG€)�¯Ÿ=•eÀ{·bÚ5ÿßý_!*8uÇþü�߬ž¡æ¿»êyômÚÉöÚѬTôzÛêrÜ'¹#¾¿úT7ÝÇ^‡9éjDôê{?÷è½<ßxÞÅÖýã(uʺ­:™±,c÷îÝÔ=åÛÚã›vkÝnŸ„ÊÁŽíó··G“àDtíÚ¥ÂÒ˜­»šó@Ïø'Ï‚P—`Û¦\ÌZ7ÇG3°7=™ùæ*ŠÌ€´ì|¼ðõ<|öàEˆQŸÃR™;7Ç'÷_€>šŽÍ{Á`r ‹ðϦ½jâ2AjùÚóEEf›™ÁdT­"·-¹^4^¾a8†Ò &£ÑöÙ¹ù…xmòBì=–^ì^V7aHÒ 2ƒ[Ç¡MëˆŽŽ†¿"ñŒ"ñŒ BíCf‚GT&ÁéøŠnâ±´í¹è¸k&‚jºõ–À}€ç~Úö*ûúÒÙÀý—hh*jš¬èx0Í¢£Ê”Ç,/ÁX]£@|ÙlV¥0IïÞ=n Æ„Ÿþ‹ÿƒ””ÄÅÅ•»е^~ù5üúë丹OIÉW«ùóbܸ7à.ùù¸ãŽ»±jÕjÛs¹¹¹J¼µaÃF|ûí÷ÚúÞD›6­QŽ=ŠûïX­ËžC‡«iÙ²˜4é ¼õÖëHJjìr=kÖü‡|D‰ñì9rä(æÎ§&î×—_~ÁãÀÿþ[‹ûî{H‰Ë(zœ0a¼ˆËAI?}¸*+Á²…(ÌÍG¾6äqÊÓþ.°Íhó-P;(´˜Ý.½0qÙïxaö$[²“Ò§5ï† ;Æ)Ûj Ûx-n³à@úq,Û³¿mXˆE;רeÃclëá:¾_37ô>÷žv9„“žwQ¡0!BÝÄ]W{˜CèÓ§²ÿÊA¿ƒ'ðwý|Ç€MÐ1½úœÞË6@°<üÕ½L⡦xFj•q1s6ÏÔÍ›7C§ƒ‡qÚ±ÌØ’‰"sñZsú÷¦}xãÇÅxêªÁÖò—`YNú¶o‚o»cþ?/Þˆ¬œ|«b t»Òrý%®UÖR˜V¸­!Á8³Wk<xñ�´j¯i:…EøtÆ*ü²x?¨N{1²] :´j¢ÜËŒÅ";s/“xF¨)$ž¡."3Á+xbyL(2KlÚë›@÷-?£ÆI9Ü;xäK`à…%Ïÿ6xq4çå#þ=í\4jÚTí?ÝÒÙuÉÕlÉ’¥ÊiŒ :Äö<Ý»(0£plúô™¸òÊòƒôW^yÝ&.‹ÁÅ_ˆÖ­[¡  P‰°~ÿ} {ìI´há^·õ[oSâ2º€sÎYªl'GƒÏœ9[¹zQÀuË-£1yò7¨W¯<!##£Fݬ„d„#ÍGŽ<‰‰ ê3æÌ™‹¥K—cÇŽ¸îºðÝw_i¯%–YÏÚµëpÛmc”Óo^½z"**{÷îÃo¿ý;w)±Ú½÷>¨ÜÇôQÕ±qã&Üu×½ÈÉÉQ‚Ñ>xO‰ÌAü w:\+ë"x‡ŒÓ†ªvŠEËyyyj¢pÛÙ¼}KíÏ1OFaŽ[˱܂}ò²UB^=ëôHjWfÙ¦± ÔtIסØtt7öœ8„!­zª×Þ^ø=>Yö›šÿdéoµ:ùÝšYxdêûjþ±!×ã–¾çAð ž±2JVj=žÄ(î”ʬ_¿¾vÙù+ p(<;¢N@ð>-Sã0dO tëÑYísw;[Ë£ºc‰g*Ä3UGâA8ùˆŠŠBûv­qZJ¶§b˱¼*y®²ÕdôÙ¬‘†;þ×ÁÖnQ¶©M£ñê#pÅé]U‰Ì¹kvâЉ,éïVËZ´y“É€Äèp 씌+wF¯6µu™JµÍ…Efü¸h^ûñoZ¬Â´ºŠ*™ŽîÍâÔ {g‚zÉÙH<Sy$ž©:Ï‚P×™P-8&EéBÕ¢E3,l}.š\Š˜Œý¨qò²§.†\ ôüõ 0ïëp?àHR+ìí{Nk’¤‚uo”U¨ Lú§zä¦ÓOd{že-ãããpüxŠ*“YžÀŒe1ùÅÐSTöÁãK¹u1\•´=zL)G²òøë¯ù¸úê+qÏ=w–zžëùò˯ñöÛã‘™™…W_}o¾ù<áõ×ß²‰Ën¿ýVÜpÃõ¥^¿ðÂ󕸎ŽltL{þù—ðÎ;cK-Ãú§Ÿ~N‰Ë‚‚‚”;[ïÞ¥ú¸ÏžyæyUâ“nd?ýô .½ôbTÄöí;0fÌÝêûQ¬Gç²ò\ÔA¡&©©8)«(¿ÂefǃSÇÛ’—,ðñÅ"2¸b§“v‰MÕD~úï/ŒÓ˜:uáä†çŸ$0¡nS‘øÌ•ȬM›6ê>úòMf|Öa5Fd@ð2#qÙ–NhÕ¼9Ú¶mk{Þ“Ž?åx$žj‰g¡öã©‹7nŒö­áìŒ<Yu©¹EU+•©5«f Þøy ò‹Ì¸ëÜ> ° à 4¡W›FèÞªR3s±n÷Ql;‚Ç3“_€À�4Œ‹@ˆqèØ4 Qa0Kµ×Üv–ÒüfÞ:<ûõ|dåÂPÇKc6‰ÄV‘hß¶•ÖOo÷š{¦ÕïH<#Ô$Ï‚P×™à1•±<v\Ž0èLjÞ‹RnÄYK^„ÑR¿`Ö7Àtmò“Í!…AÁXxþ-hÖ²E…¥ kÊfØdggcÞ¼j¾ÿ¾ˆŒŒ´½F—“#ÎÀ7ß|‡-[¶ªÉU9Ê~øÉöžçŸÆi)H Ïîºk ž{îE¸?ë®»îpúÚ5×\¥\Ìþþ{ ,X„#GޏíbÆÒ˜td#}ûö.#.Ó¡Èìß×(q?‡nf-Z4·½Îý¶gµäÉÍ7ßPF\F¸?{ìalݺ ­ZµÔnÞ¡"¸ÎÛo¿S Ûè„öÞ{ï(ërAAJÈ3 ÈRñ(…Wæ~ì|k™ŽŒu7yiK1<<í}[ô´ÝñÔ°QNnxþñ< 6B„ÚMyB²Ê”Êä2¼?LKKÃÕ›ºâÓŽ+q<Ô=W¡|ârCqÕ¦.hWOícwò.žt¶VwG⡦‘xFj•u†w&2ã`évíÚªJ#3 ñÓ†täW±¯†-h¾ÙŒ±¿.Ãî#ixôÒSÑ$!ÊÖ¶ò1ÐdRe§w ÇàÎM•¨Í¢¼Ë zåL§m1·ùxFÞþ}&Î\­„fuÙ¹Œå!£‚8·}:´JFË–-+,éÙú½ïH<#Ô4Ï‚P×™Pm8Þ,Бªs玘uèþét¬ýBY,Ú¾Zpþ­04oÚ! à¤q/›={®*…EFŽQæõ³Ï>S Ì]Ìî»ïî2ËÐÁkñâÔ|Ïž§(!•+Î<sÞxc¬¶UÊŒåÜ(^~ù¥JøÅsžng—]v ÜaÖ¬90›­7<tH+¾N™>}n¿ý6Ûk3fXEjü•÷Ù!!!øöÛ/áR.oíN½wßçRÔ'‚௸-+Ônü-6Ê)ª¸¼ú¡Œã˜²a±šgÂú¥‘£=N^n9¶·ÿü Í…êï¶ MñÞ÷#ÀäÛ¼!ŽÁŽãûUÙ‡ù£'`Û±}xwñX¶wNd§£aTÎép*F÷½aAÁNב™—Ï–OÅì­Ë±3å r ó…žIíq}¯³Ô£Î»‹~À› ¾)õþ—æNRyÿÂqV»þ¥^_s`+¾Z=Ë÷lÀÁŒc FãèDôkÚ7ö>¢á ¤Å$í{Íßþ/ö¥VC¸[Å'ad›¾¸ºÇÈreZn&¾Xñ'¦nü»S"Ȉ^Ú~x`ð•hW¯¼ÏCI` BÝÀÛ¥2™W8ýôÁ˜9s®ÙÔŸt\Ì <•'2?×nè†Fañ4h ÚÇ:µ±4&‘x¦‰gÊ"ñŒ îRA<šwéÒ é™Ù8˜Y„…{²QTÅô Û)®ã‡¿7cõ®#xàü¾Ù£%ƒ ¾­O¹nùr аxã^¼öó?X½ý¥Õeq 41¢U:%ÇiýUí\á{jÒ½Lâ™$ž)‹Ä3‚ ž#3Á«xz³^½z`~v"²¡ëöß!”f鈫°¯c/ ëÛ¡¡¡å.[—ÜËEc„b¦O-ózÛ¶m”kÝ»þüsºr³Oâ’£G!'Ç:»{÷nå~ÅX;vPîcѵk—r_·ÿ¬Ý»÷À]¶mÛ®M&N9¥{¹ËRÜÔÔ4U¶ÒÙzx“ÇýWU¸yäq>|DýýöÛoª}%‚PW°oÍ0¢n§ý‹ÆÏ=¢5|FU>Â\Ps^Šr­æ\ÎØæ µ ÃFÂß)pÙ÷—u ´ä¶u¹-º£w²gí* ×}û<Òó2ÕßL&~~Å“ˆ ö¾í~‘Ù‚%»×áºïŸC^aIrvgÊ-é8³¶,ÃO×¾Œð RïcÂóªožÆáÌ8nû”‹ÔôøÐQ¸¹Ï¹¨ ¯Íû þþÙ6:˜pû˜ Üpx'¾ûw&>¼èœÚ¼+¼ÉÌ-Kq÷oc‘SPZŒÁd*§/Vý‰O.y ë7/óÞǨý¸'õ°í9®gö¶åø{ÏZL¾Ú=7]w(ð‡hA|JeKer°ÑСC¬"³]ñeû5"2«$ùÁj62Å(á÷­Nm-I$ž±"ñŒÄ3‚ ¸‡7ñ|lÔ¨ºtj¬Üq,§ëæ+?±ªm£Õ•lÛ¡TŒùx&úÌo„kOï‚› &,XKMlƒÊõmÒù<狊ÌÈÔr˶À—óÖaÞºÝÈÉ/T+¯Ëf�Äd°`@“PôIŽD7­$66Ööš¿ ê%ž±"ñŒÄ3‚ ÞBfB¥ðæÍBRR’r–Z®Í„ ç–�qE»aYræ5ØÔcôíƒÄD«ºßzmàÀƒXµjµš§@lΜ¿œ.§ï'R±xñßj¤°=Ç·Íëû°<âããà-G1`xx²²²qìØ1¸‹¾,…c´¯–Þ¤ÀŒ°Òë±~ïúõÝ+ÍYW_}}©¿ÝÙ6A„ꦪŽd&“Q% ³Š‚iªx„£Pýp¨>ÞÏŸcŸsʼn£å{ÖÛæ/è4žÀQ§£¾A%‘ZÒò³Ëž@ƒÈxø‚ÜÂ<Ü÷Ç;¨‡Kº A|X4þ;´?®™«’°›ŽìÂ[ ¾Å“v¥Ì3nÿùu[ò²W“¸ ó`D‡aƒ¶ü¤åS•Ÿ‹—ç~ŽžImѽq[ oÓKKÄÆk‰ÇÙX±o£z_›„dÜÒ÷<5ßµa+Ûú¿^5ïÿm-ƒÎÆg· %¹;¨Òs¶­Ä«Õúïúu,æßþ¾Ç£]Áíºí§×Ô÷ãçkÝ =›´GAQ¡ö¹+°zÿfL?†ë¿{ÞôÂclïÍ/,Ä ?¼`K^2á{N‡Ó´ã‡-G÷`ææe*1šW”oàÎy(Bí¡*¥2]åeÂÃÕȬhælÜ´î%2;Z±£·PBln®ÙØ ƒ¡Ã‡¨”:åålü¹4¦ŽÄ3ÏH<#‚·¨Œ ž‚®Ö­[©²Þÿ+Ø´ü ìË,ªrב¡X¤V¨­gñ¦X²õ ’ã£0 }ú¶i„6cÑ :!A0jÛbÖ>0¯ Ç2²±õ`*–o=€…öaûáTš•ÉY]w-#Fí{vN ưáèܱ7n\ªÄ¨Neõ¾Šw$ž‘xFâAï"3ÁëTæfNT¹¹¹X«=—~¾€±ØJöd¤0(X•ÅÜÓ¾zõìæÍ›©çý9P÷6Ó¦ýi›ç9òÔSÏVø:ž9 ÌìÑKO–‡;Ë¢¢ŠB³¹ä<÷wßãj9ûߘ/xðÁGðÕW“çž O¡&qWxF÷H ÌÒr,ˆ­_¢xÃPÞ×ñP¡¥âxbã‘ݶùS´äή”C˜µu†·îfq Ê®[K”þå íý»Ô߯�L¸ðA´KlŠu‡và qnÇNGgV–cY©è ­ï‡«_Dx°ÕQ÷*mؼ+îж…ü¼vr­¶=&õ÷Zm[X"‚0yùýÕÏk ikÒÉÆÍ»á²¯ž@LhViI?&0Y~€S¡–Õ˜k SNŽÌÛ¾ &ƒIŽåhÔ!­zØ^»¾çÙ¸ç÷±øuݤä¤i‰Á¥¸¨Ëé¨*LZ>4õ=õÈÏþà⇵ãÔËöú˜ã…Ù“ðɲßp4ëÆ/þÏœq“íõ‰ËÿPe(HRt}üpÍ jd³¿óµß=‡l-ñê Ü9A¨»¸+H‹ŠŠÂ°aC0wî<ܸî|Ýî?ìL‡P12#qÕ¦.HˆÂС§#::Úöš? Æ<Eâ‰g$žÁSª"ˆw+ŽtéÒ™™™¸¸ÀŒ¯6dáX®Þ°'Ð[c–ÍÜy,»mÀ7ÚDaYxH "ƒƒ`ÔÚ,«cYfn¾r*ã6ë›m0ÕmÇ2ƒö}[Äà­ÃоusUYÅ膨®&KcêH<#ñŒÄ3‚ ÞEªÿ•Æ[Ö¶úk,9Èr™Û𯔾O"#Ô7õ¸ý´ø†˜rÃSØÛ¡'úõë«ÄwÄ“äd]p3›6m:<eáÂÅHMM-õ\||ÉH‘ÇW¸Ýù«ªËeddØJsÚoCE$$XƒX:²åçW<:âÈkÉÊÄÄ„RÏëë%-«JrrÌŸ?7Ý4ªøsâ‘GžpKh'‚ào¸lë‰Í‚ý; XKGøYNn_ü±×âFº;­¸t±Ùzý÷ÏáÅ9ŸáüIaýá¥×«£Nÿ@þ$¡ùêY·ÛJ ÜüÃËøpɯ¸åÇWàm>ýj[òR‡‰Èv‰ÍÔü‰œt52T'-'Ã6ß"¾±-y©Ó'¹#–Üù VÝó9nìíy †/ykîû¿\ÿj©ä¥Î¹JlKÙo°lÏì8¾_Í_}ʈRÉK‡O¿Êv<[¿P%;u~[¿À6ÿâ™·”J^’žIí1ºï…ð¯t»‚àOxÚæ¹ë ƒ3Ά†áq¸nc7´J•DÑ<-×mè†úÁ±jßqê”·¯+:Nž¼æk$ž‘x†H<#‚§T¶írÕ^ÒqµgÏh×8· CLˆÉêfðÎÄuéë3kSvG3ò°ãX:6JÅö£é8œžƒ¬ü"˜­ve¥ÞS×'~Ϥ¨@\¤íû¶Mª~<ûê&þZSGâ‰gˆÄ3‚ ÞÃAðž&6u(¦êß¿2[áÏbOýSp2±­ë©øã–g“ÜC†œŽ-œlðÇ@Ý›ü÷ßZìÙ³WÍ_zéÅX±âŸr§§Ÿ~B-[XXˆ3f•ZW½z‰ ³Zî®\¹ºÜÏ¥ kݺõp‡•+W•ûúòå+móÍš5…»´jÕR=R¸µzõ¿å.»uë6%D#-[¶(õšþ÷úõ]~‰“‚‚ŠËÀÿ¶º™¿å–›0`@?õK˜ŽûAê t/ @àá­8” Á¿È*²@—^×v§VRP,ÒfÒèd³Ss3pÕ×O—Jb¾½h2~X3Çö÷=§]fù™•—c+É–› oÓ£q;§Ï·JL²ÍÏN³Í·IL¶•ùeí<|³z¦*‰`OUKFD‡•*Ë “WX€åû6ØþNÏÉ‚7˜»m…mþOuºL )ƒ[Xïa˜ÔÝvÜš<MÑæ7jN Å Îïs.èìY9AN>ª"F*OøÄÒŽgœ1Iñõqå¦.´·™r«Jö­ÏÁ$U3)®>FŽ<‘‘‘%¯{8�°¶;I<#ñŒ3$žÁž”Œ¶ŸEß¾}бa$.jЍ` &­{ÓèÝÉàÆ„“hâ>n€KÛ† mRzõê‰ÐÐÐ —;ÇÞŸxFâgH<#‚à)‘)T O,Ë{Ý~žbœ˜˜h,Y² sƒîBÓËÑÝ$z'ððGrÃ"ñ÷Ù×cO‡žÊyŠ7K,S¡SWuwa©K&k+‚¥(^}õ Ufõ?¦â²Ë.±½€ÓN „gkÖü‡ 6¢C‡öN×óË/¿¹åF~þùW\qÅejýÎøæ›ïÔ#ÇàÁá.ÇŸqïªR_}õ úôéírY¾®3räˆR¯ñï )ñØäÉ?âúë¯uº¾~Þy)—µsÏ=—\r‘Ó傃­£’h}ý ÏâškFaß¾ýøî»ÉjžuÖH‚ ÔVô8$ À¤¾ÙIY9†!Ò$=«þ@A‘‡óÍ0·Gþï0qWÑèÄ‘qØ›zX-·?ýšÆZË-¼áC¸ê›§UòKOb~uå3*ùõöÂïmï¿´ë0Ü­%0ue¤Øæãâàm˜,tFxPIr¹ ¨¤Ä=““×õ< “VLE~Qûsž™ù :5h©JNômÚ§5ï†à€ª=Ý—v³·.Ǧû±#e?¤×öÅ1šK\V½õ+Þo7øâ/së=Ç2ÓÐ&8bw|:”S#)ºž‰Ì„tU1 öß‚à9•Ÿ*ïïàà`œ~ú`-³¦=@ã¬(üÚj#²*”t2Vˆ ¶µG›Ôx4i’¤\çYºKÇ“NsgûÏH<£#ñŒ žRQßPy˺ê7JLLÔÚÞ>0ÿ½D9‰ý´=é,W)× _`0XÐ0̈ËZ£m£ÕgåJT_•˜Ç×ñÄ3ÏèH<#‚àÄÁL¨2UqÐr„²´À!ƒÑªU+ìkÒ¿ŸúƵG]d_ËÎøíÖ°¿s´oßN%sÝ—ùS î-(ðš=Û:ò£Q£†èÒ¥s…ï¡CÙ A§©ùM›6cÛ¶í¥^§ š~3úÄOãØ±ceÖA§¯÷ßÿ�î²wï>%jsv£üÑGŸàßרùÓO„zõê•zÝ>‘Qz o”uQÝ?ÿ,ŧŸN‚3(pÓˈöïß·ŒÛEm,kiÝž‰X¶ly™uPÄöÒK¯ªr—7nrû¦Ÿ7’o¼ñªm´Ò‹/¾‚Í›·@ÁŸq§Í Ñ®í‚ÀìcHùç/É>yÇcXüD[—_„=ùÐ š&©cdmKý5¾ 0T|›Õ"®±m~ùÞ’Ñœê7Ã×W>‹ØPk<È$æ•Zó‘ilIÑÓZtÇK#o-µ¾•û7ÙæÛ$$ÃxrØ ¸à•ˆ ±&¡™È\¥mç'Ë~ÃM?¼„>ï܈¯WÍ@e`¹‡ë¿{§½w›JŒ~·f–iûq_šµ$z«„$x&•=%+ßšˆLÏ-q” +÷=ÞqPtç<¡vâiûçI.÷«ôG§ }z"nû¯š¤Gãd§qFnù¯'Úiû„yŠSOP%qYEøCŒ#ñŒ‰g$žÁ»T¥\tÆ Ñ·O/tkŽKZ[Ëeš´×2ys2hSRD�.oŒv £Ul誸¿ è%ž±"ñŒÄ3‚ ÞBÌŸâl¤Š»#RXǽwï^HNNÆŠ+1#ôa´Þ3}6}ƒ€"÷\¦ü™‚àP,v¶ö<] Êúõì ê»]³¾¶Æ<…®[ééÖšðéœ}ö™¶ò˜t@»çž;m¯uíÚ_|!~øá'UzóÒK¯ÄE]€6mÚ(/ŠÁè|Fç<Ž@ž={n…Ÿwå•—+—2 Óþ÷¿³µ›Û8vì¸Ú½´eTT$|ð¾2ïMJ* ¨?ùäSåþÕ A›HŒïá:<„÷ßÿ‹ÿƒ#†«rŸüŒ¹sÿ²eV `nó“O–¡ÁßÏsÏ=›o­D{cÆÜƒ3Φ~SáÊ}ì÷ß§`×®ÝjyvpŸ¸ Kyòs{ìIäååiÛü¾üò3DGKǃ 5‹'£d¡`933 'Z¢Ý (ó0 ç~‹­­NExÓ–ˆ‹2BË] ¾F;~…EÚ±Èʼn”¤gYã>“vlií= ÷íÅø:îÆJÕCM¶ ®Ø¢+æï°–Üþuý\Üeˆí5=‰©”MÏ+¤·¯× .x�¦Ò·r¿¬›o›ï׬b~u`2qç©—à¶~çcžÍXºg=VîÛ¤’­Ùù¹*9ûøôŒ‹:v{½…E…¸êÛg°ãø~õw‹øÆÞºº4l…¦± ÑRû{Ý¡í¸äËÇáM¢C"ló_ü(’‹G5—GRT¢zŒ ·=WQIˆô<ï87ó<¡îâ©£¼'Nft®n×®*Gµté2ŒÚЋïÆÂÆ{P`,¿}«kš8m_Sœv°)¢Â#ÑoPŸ2ƒÈ*#.« %ž±"ñŒÄ3‚ TOc•ò^·ÿ»qãÆè××�Ã’å6eáÇ]8’+NfÞÂh° e¤6DËúVqcBOc˜šŽy$ž±"ñŒÄ3‚ ÞBf‚WðfbÓqžÂ–@\µj5¶›†âp\ üïc$¤íDmåH“VXpÞÍÈNl„æM“ѽ{·Rµë‰§â²Úœt‡©SíËcŽpû}´hŽ‹‹EJÊ üùçtÜyçí0™J‚6жXöŒÎ_°}öÙ¥ÞOך—_~óæ-pëóî¾{ vìØ¡J¹¾ùæ¸2¯×¯_ï¼3V9’9BÇ1¾~øðLŸ>SMÆ Á+¯¼¨^§CاŸ~„xD ØXÚ““#¤½õÖëN?ƒtêÔ|0^‰¿¸_ôÏräÔSûãÕW_*µ¿Ü‚5–e©ÎâÑGŸÀøño«ÎA„Ú€cÌÁëWdd¢·Â–f£ýö¯`€Û´¶A›N æØÕø>ÔG¡µ ÌÙ3j’ü®Öª¹Öf«Õþß*nSÏl×/Ïý…æB,Ú¹FKðmDϤÇ^Ç$&i•€Ï.{¢L9„e{6àŸÝkÕ|)ÿëp*ü‰@m›ú5í¤&’WX€q‹¾Ã„¿VOøç'˜ wýgK^lÞŸ^ö8’u…f #ló!Ah›èþHäúq¶ùu‡·«k³sxû±ýÈ)ȃ7pç<¡vãK‘©_¿>†¦ýD·£ 1½éVlˆ?Š“6'âqÖ®ÖH(Œ@£¤†j`Vxxx©eꪸŒH<S‰g$žÁs<‰U*úÛþùF¡_¿Þ0-[®µYøyw!ödZ¼V~ïd…fpc8'9-Æ¡OŸÞåŠËÊëÃrõœ;¯y‰gJ#ñŒÄ3‚ UET�BµàNpY^0JGŽ”èß¿Š´Á”¾O`EÛK`®erQ@ V ½S¯} –ä–êûÐ1Ë—â²Úĉ'ð÷ßKÔ|ëÖ­Ê”},ŠtAÚñã)Úzþ)óúc=Œ>z_•_eùMº|Q”F¡ÔW_MB·n]á.c½ýö[JhF7/ ÔèXÖ¡C{õÜäÉß eËNßËe'LOUŸÏ²G–.ÛIÑEfQF¡%·—´޽{*w²¯¿þIIËÝNº·ýüódÜwßݪŒ?ò ñªŒæo¼‚qãÞDpp0*Ã]wÝ^½zªyºª?‚ þJEí%_g§a«V-°¯ÉHìi8‚`j\{.:Wkg­n*•éÌ­NBM.Ó(*çu:Íö÷ƒSÞEf^v©eô$fó¸†jštÙ“h_jަ|xÚ{¶¿Ïë4‰á1¨i¸]LÌNøçä”vÖbâ‡]À õ÷î‡=Y5ö§±ÍŸÙ¾_™ä%Ys`+¼Íé-{Øæ9ªÙS6,R£™¨Õ‰ D»zÍÔ|Jv:þÚ¾Êé{Z÷¼…;ç¡ uws1åå ˜¯`>æ”Sº£qP<.ßÖWlꌘ¼ÔU¢ò‚qɿޏjs$ÕSÂ2–Äôµ¸ÌßxFâ‰gAð5ž´¥Žó™1FéÐ8Wµ Dד–³g‰G£LN,3`ÀÀ†&\Ü<íš6¨Ð¹Ì[e^ó6ÏH<#ñŒ ‚w3Ákxjkìì9WNfúßÉÉM”@†£g×üâ:`ÐÚyþΉzI˜þ­HkÔÉIUr–ÉIO„v•IN֦䥵üÆ"TЍ8•÷;'W°´¦}yM{n¼q”št(2»æš«Ôä)<—é>V\?Í8U…ˆˆUÒ““'8~_gP¸7a»Að'*ŠI*Z–"ßîÝ»b¥ùzd‡5@«?#Àœ ¡ú1šŒ(êÜÛ.:Mš$¡iÓ¦¨ a2hÛn)”æ¯Ä¬ÍËU‰…)1jò‹˜té.|À$æ_·½ïôýi¹™¸é‡—µ÷P³DÀCƒ¯†?ðÖüo1iÅT5ŸW˜{N»¬ÔëË÷n´%6“¢K»±†˜J„ïÓ•Yw|XIIn–t¸¢ÛðR¯s”éZâÔÁv‰=îC{‚ìJ[¤å–.…пYg$ÇÔÇžÔÃøyí<íï.eFö.رwý6fíØ3I½èŽ`4XÇu×q 6٥柘þ!~¸æ4Ž.)³¶d÷:L\ö;¼Ï?ž‡‚ Ô}þÏÞY�¸Qn_ül’uß­lݨ·H"Å­¸Ãƒ?ÎÃõ¡÷pwww}8¥X¥´Ôݽ]wO6ûŸûíÎv’Ën’=¿2d<“™MæÌýÎwo(b1Îóô8‚±d¦t“N’e;qS"†,ÊÁÜîÛðgŸ-¨LMÏþÎ&£!{oï E½‘žŠ¾»ôQ™Áý5–ù3ÏŸå õ õ õ !$ø£qµ¾§6#‰ßì»ï¾H˜3)–"tKŒÃoEÍhÐn]Ìfæ¢>2âãpX¯8ŒÏ5cèªÓº$}h[ÇOS}$iêêêB -4˜‘H`ÓÓ:®&Ä,³ÿþûaݺõX´(Ÿ§ß…=Ö|ޱ¦ib8òìšxXº×TÌ?à$¥§câ®cUf+o½„»š¹ŒBé|Õ*#GŽ€ÕjÅšä$öܽ·ÿŒn% ‘RW€[5Hø0Ç›aNN„m@_l?pX{å¡wîJÿ Á.;R¥šPiólL”’ ÷y ®üìQH1¹[–ãèׯÃÃG_éPŽÁìú÷·Ï©À§ A²޼,"zÇ gîq8Þ™ÿ*1ñÄo`ñö5˜2xw$Z°tÇ:|ºì—¶uÏ™p¤Ã¶£ò¶¿·ð;NMHR½Gt€}iÁnmº¶±Ÿ,ž¢êr0d¤Ä'aYÁüoÉ $ǻϬÓ/»gÛøã3?Äê¢-8tø$µo g$¦© òªÂM¸ãûW08·Î?f“ s5Nç¿*@yÝWOâãÅ?a¯þc´ef,Í_ïV͆^˜åò½Oj ^ çO<-úA]³í•E8ôå«U)éõ¼F;†×ÌÅÐÜ~(­«DQMpEyåïÒu‡ÉÌÕ´d3“l^bú^ºt92+Ó0ya_,ÊÎÇo}7£$¹шdc›¼£/&õEj|22»gbôèQÈËë²XM´Æo¨g¨g¨g!¡ÀŸR™®æy2Âgffªl[‹/AbüFôNm·;šQT/&3¶xÂ;¤špLŸ8 ΊÇèQ#1|ø0UqE'Ôf²ÎÐ<Ô3Ô3Ô3„:h0#!')‚¯ ú´”%”2óæÍÇ<ó)ØÞm4¦,y©õ¥ˆª²»cæqÿDÑ€á*09aÂxddd¨e4—B!‘»À¥”NOOǪU«QÒ­Jp¶ÏûôG ùDY'™Úžz�¡Ä_}’¤­?PÓPÒ˜íjû@4RG‘nIöÀ޹JÉûw/«À—·N~ëL´;޵¯È¡zeÖÛ‘_UŠÛVáÓ¥¿âÏMKÚö!A²;»PÃ"…¡ÝûiØ+pÃ×Ϩ æŒuóÔà̹ŽÂ9ã˜ÃºõWŸåÛ•ª2oÍ›¦æKpQ‚Œ‰©¸ïˆKñ/-€(Ä_×ÏWƒNNr&î›z .úÄõ߯œ×Gg¾‡š†:¬,Ú¨[s“Ú·pÚîã忾P×CzùÆ›ãqún‡"ÁbÁ¤~#ñâÉ7ãš/WÛK Yg®Ü÷Tœ9îp‡yRzâµSoÅÙ܉-å*�û¿Å?·-OKLÁ“Ç_ƒË>{$è�¦üýBºšÌO¦2W1™ž={"77›7oÁ† ‘V™ŠÝ—ôÆ¢ìø»çvlͨlk̉Tâ´ý*30¾ 7v+ë…”Ä$e,<x2ÐY,Ž!S_4‡; ÍñêêêBH¨¥ÉÌyZ²mIÜ@Ìf‰ËV gb=¾/–V�Mb@¤Gb\3&çšp`8äe§«¬e’­Vªªì\/´íV¥y¨g¨g¨g!$tÐ`F:wþ<0èB4++ x€jø]º4ŸeÞ‹É+ÞÁ.Ûþ@§¢ßò‰‡`îA§ !#{´öü²ÑœN˜B‰B¸4h z÷î…-[¶¢  �55µhll„/ïïŽæNŒl†RW¸ê ªýK£nvv–Ê$çÊœïjÚÝ<_–…‹TL·$¡Ê‡ ¦ô¾ÌMÉÀ¿§½ zf ¿mX¨oHÐëñc®Æ¡Ã&!Ò8aÌþؽ×P¼:÷+ÌÒ®RNA‚‚ÝS³1©ÿ(U:Á]Oà'ý†uÿŸkÁÚmŪ÷kmg ¶ãÇì‡A9½ðÂìÏT9‡òºju÷2×N9M º/×&½ˆß;ã.<øó[Xž¿ M(©©h[~Ãþÿ‡äøD|¹ì7lÓŽ9;9 [+ TOYáСñÓEOã½ß«^­Û*Š´�sz¤å`Ïþ£Uß±yC\¾·ó×ç?‚7æ~ƒi+þÄæŠ|$hRÙNÊgìÒ­/‚Eþî,†ž¹„®C &3Wó}1žÉ½ZÌXôÇŽùX»v-2«Ò1yý@Ø+°87ó{ì@ir"‰Œ†DŒ-î©Ê`æÙµFèÄD¤õLSš¯ÿ~ª:ÁhhïH=C=ã êBH8Öd&Y·¤ FÚŒ–,Y‚œ¤Ì-iÆŒbÊ­,™©cÒÎDŸdí>н£²-èÛ;Ou°”óΤ©y¨g¨g\A=C!áë=ÎÇeq>¼Æ¹™Ö“áUÌ­óÌNƒ,“'Sc£u¢gÑ,ÓÆ¡©©I½Úl6ÔÕÕÂnoV½)#o§î–»:¾LcÞ¼êµOábì³ì ×Ṳ̀Ôz“‹!ù.¨Îê†ß޾�CF¡[·n˜0arrrÔ²P™Ë¢=@I!$:“•ɇääÕ¨(÷i„ÓË>»»ÿt–®ñ¤EÕ!Þæ{[FZð7èÌ<_–… »¬ÛZWæs ð=öÛølÉ/°Ù›<®kŽ3ãÄ]ÀõûŸži9 DŒ<}“³µe>âŽhÓ3ªxŒ?óìv;¶oßM›6¡¼¼B›­1i½Ö¸»,«2ÊPZæþyŠÓ5¯& +²1¦¢'×ç"!!¡ÍÌÞ¿Õ™@:¶Û6Hý+±êÒÑPÏâhÖ3èÛŒª««±bÅJlܸÛª0£È„E•q°Ú㺬ÑLþ"R´VÕ½²›°On3zf¤`ذ¡ªRîÖ ±¹Ì—åá†z†t4Ô3„xÇ=ã«w"HHˆß-“J¸v 4c§ Eš ¯ÎÜL{zuwÆë’³ V f‚/ ¬<08ÏÓÇå-Y²ëÖ­‡½ª W„á[~qÜ0\3ímÕûcÎa§Ã”–Q£FbĈám?„Ž«&È}ùѤ¹ŒBH¸ˆÆ�f(Lfþ®Ìz±„¿š$ØÛH fVÛêQb­ñk d~»j6~[¿ëK·¡´¶ &íøÓS1²Ç�ìÙŽ³¿êéIˆ‘ÜøT¤Y’@qOW0˜ ÆcÜÍ÷g^]]2›mݺUem9WV”7Õb]J1Ö¦—`SF9Š“ëa7¹é½ &» Ýj“1°* Cªr°Km7d˜Z®µ˜È’““Ñ«Wžº^©©©a1¶Çbì†z†t$Ô3„x'ÚõLG˜ÌäsmݺMU¿)*-Êr;~)3cS]ìÍ]Çh& ñZKêˆT;ÌmÂÀt òzvWíW’ Áh²W»U¤èêÒ‘PÏâÌh03ŽÓ`æ±l0Be2s5ÏÝtQQæÏ_Ø–Ílße¯#¥¾µNv fƬe¹¹¹?~%ΚË!„Ä ±f0ó´Ü“™¯ËI{B‘ÉÌÛ~|YnJµ�¦/¥ )½£0 !žé*3¡#LfÞæ—––¢  %%%¨¬¬j[&Ï›¬(6W£0¾ù U(N¬FYBjâQß«¥I ¿Øµ×–�L¼Í¤MÚ«©V R¬ñÈnLF·†Tô²¦£{c:º5¥©Ò6ÆÆÒŒŒt«ÉËë‰ììl¿õDW7—éPÏŽ€z†߈= “™«yÎÓUUUX»v6oÞ‚’ªZ,(f•[PØhBS³­¨QŠjPkÆÀäfLɲbdfr230dÈ` 8�IIŽÆ—X7—éPÏŽ€z†ß Á,: ffä‹îíaÁÕ:¾Ìs5-tïÞt�–/_5kñiÖ.®³™‹žµìÐÓaJÏÀ˜áÃTÏýG°ýêþ›Í<Í÷wB!¤«áM‡¸[îN‡îöç|/¦áÌ_µJ(}ýYÞHP©©ÙŽÚ¦FRÌ ^BÚh<FŸ/¸Š¹øª‘d¾»deV«¥¥eª3 Î$»YßæDômÊêÐ2ðUsµaÒ–™ãšš¢ÞS:þåäd#>>ÞoS»»ùìÇßu"ên¨géZ¯ ¤Í(==»î:}úôÆêÕk]T‚ݲê0¿<UÅ£ 1¶2š‰Ò°ˆ±,© {e6adºvOOS%ÁÅ\–™™Ù®4x¸Ú­"Q÷PÏpC=C‰uh0#B0&3ÁS@ÓÝ:@Üm·]•p–lf&ž‡M=Æaß%¯#¥¦ Á"YË~?ú|ì2F Xæ„%k™§ùþ®C!„×øÓ°jœïj™»õˆg JFÓ9¢Æ*1IÈ‘à¥ü}Bˆ+|ÇÁšî=i$Y– ²ˆÉ gO‘rš555¨®–¡ZM766Âjµ©Œ*’éL2¬Ò“YD¥S_|¼EíOJ^¦¥¥iCª*y)Óž2·¸:V_—«GbARÏpA=CH×$œ&3AŸ'¢GÈÊÊB~~6lØ€ÜÔrŒ«­Ç²Ê8Ì­²`K£VMr4GéýZŽ:ÙÔŒ!I6LʰaD† ))ÚçîŽAƒª¶+9Û$ÁÛ|_—w&Ô3$\PÏBº4˜‘#Øž³!Éf¦?ËŠ Ë?Äðõ¿ Z³–Í=ôˆKKÇè ³–¹›çi¾¿ëB!]™`4ˆ/ËŒ0k™o„¢!6u’™XŽ„–] „ø‚/ZÈÓzþf.ó¶L_.ƒ˜ÂdÐÚ|=®ïé˜Cµ~ ±™®d.Ó¡ž!¡†z†®M &3Á[¦UçmŜ޿?ôìÙCÍ6n܈•˜P×€µUV̯²`uUM¦¶ZT‘Œ|b“ö¿n–&ŒN±a÷ô&ôMµ =% ݺåbÀ€êU’1´Û6ŒíVÑ {¨gH¨¡ž!„th0#Н ¼B(z¦èóäÁAÏf6oÞü™p¶öØ {Í{)5å𕪬îøãðóQ0h´CÖ2_Åw¨zøº!„BZ…ÉL'Ьe]É|¬N E°2Rµ’›âÌZ ³V VÓH#Nû—Ÿ‚4-€I!¾àÍðåËzÞŒfÞ–¹Û¯§õƒ%™Ì¼- d½hƒz†„êBˆN &3wó}i3JLLÄ€ýUVÕ¢¢blÙ²Ùeå]߀’Ú¬¬–ÖÆcSƒµöV³Y„ÜÒã´aÖþ—a¶c—DF§Ú°Kš YI¤$§£{÷nèׯ¯j¿’¤í¶°-Ëݼ@Ö‰¨gH( ž!„t5h0#Ž?AÍ`z¦¸š'i9ä •Ílµd3ë6}€ák~…Çþ(’µl×ý1÷€ .µ%kÙèÑ£B.Ð=Í÷wB!„8ŒÑÝÕ:ÞÖó´iO(5P¤Ÿk :¥XQ®1Ù[–ø‹ôŠÍÒ‚—&ð7…â?¾è!oëùbBóe¹§õÁŸû0æ±®n.Ó¡ž!Á@=CqÆ“™Ê6#1šõíÛGÍÊÊʰcG¾2œõ©«ÃÞV×Õc}­Ö6TkÁæF3ÊšÌhjŽëPÙÊLZÛU¼6ÒÝbÇ $†§4a`2™¤„$U*¼gÏ–2äéééíJal·rõ êBHW„³(À×à_´L&‘`Ìg’X²™Iä ᯤó±©ÏLXðrŠ6·{¯ÂÞC1w¯ÓPÒo¸ÊV¶Ç»©WWÇä˼@æû»!„ÒrOêl]ãO£ªào–®”¥,ýÛ‰%Lª‡c*2,ÉZ³5MZ ÚB\aŽ3!Õœ /“aÑÆ !¡#õL°„JùºÜÓ:Îë…‹PÄ[Be`‹%¨gˆ?PÏ>bEÏ„£ÍÈ—v$I$н{wäææ¢¡¡%%¥ÈÏÏGvyúkÓ{ÛšPÓhEA½k›±¥Ñ„|«EÎêìqhRæ’¸¶þžÕ8ëìEìa)&;ºYlèß„IvôOº%šoAB|’““ÔñJ;WVV–j÷2™L.Ï‹/ó™ïï:‘ õ ñêBÂ=Ñ fŒ»T¾±„¯ ‚/îöéjݼ¼<zh7¬X±ë’S0}À8ôÚ<ý7ÌCrU9jÒºaãàI(0F•Ø3xFŽÑ.k™?¢;îÏz„BH8ñµä³ó:‘¢kü ¢új4s^ßÄ åyïˆëÙŒhŒÊÖ™24Ø­¨k²ÂÚÜ«½ 6- É2 ])¯ ñ&3âãÌH6Ç#ÑBHh‰v=,þhœPÉ:Ú”Ê8 eÞ¡ž!ÎPÏÒ1Ä¢ž Öd&xKBàn¾´’““UV³^½òP__òò k¯åèVWMMh²7£±ÉŽjk#ŠšQl…öª ¶8TØL¨m6©Òš Ú«Mû=´Šm¬¹Å@fŠkÖf›!¿ˆ‰qve$KÕ†l‹¹–ftOrµ…9 qH×~CµßO³v\Ò.•šš‚ììlU3##Cµ[¹2•?Ÿ/óƒÉìêë:Ñ�õ q†z†Ž!=C:ÌH§ãO†`²™çëËD”;F¥^¹r*R§`ÉÈ)ÛôÉΈÃUÍzWûqu<¡˜ïï:„BñLfúú:¡h…{{8?CW0–¹B‚T TBéHBm¼EÖ²PûÝÎßý3vÓõ !„` &1»íýMd e&SSSÕ f3›Í†ÚÚZTVV)³YUUêëgµÂn·;lß2.C¼§2 í4‰‰aLŽIÌc))ÉÊH–™™©½¦#))I—;S™ñó„k~ ëEÔ3„Bˆkh0‹šŒÇ¦K>\ÙÌ\Í7.zô衆ÂÂBªž)ÒSE$Ͱ/Çîï²®.Ð !„D+;ïKÁ›€:W×øk23n§iå$¢•`õõ!„ÿˆ= |íøçïúj¦pÜ×Ù…Œ:„BHçÛzÆ×˜?ÙÌ|™ïj™ºÄð%ƒ”£” gb*ÓY]]6ԫךšUb³±±Q-³ÙšÐÔÔä`@“÷1µf$3›Mª´¥ìWÚ£RRRTéK3™¬£¯ïíø»,mü]‡BñNpz†t<4˜E(žzX²,¿dá~hpµÌˆn4ó•@E8Íe„B¢ oå¼Ý÷"U×øÛ ên{gh<sM¨¯3µ!„ˆU=*5šù²M¤–È tý@·!„B‚¥+éMí¡0š—¹[.†/Ý$&F°ìl÷ëúC¨ ñl·"„é£gHçBƒYà«©J_W’ 7 çCƒq™N¨{ÑR B‰ED{ÞîQF]ãMãD’® Öhæn$|ðBñ—X×3¡ÂŸ8•q!sš;Üí+” Ð}Q‡Bé,º¢ž 61¾Lð79·åîÖ 5án›bÛ!„ŽÄW=c„÷ È€³(CzEHJ]I­«3p>4¸Z'X(Ð !„Ä2¢=oiùý!uM¨f$´P'B †®¢gBA š(”™ÊÂqßvŸÔ"„B:›®ªgüi/i3òÇlæi½` ec;Û­!„D"áÐ3¤c Á,Ê/™¹úúz$&& Ö E63ãr_öåÁö d=B!¤3í!÷ªP0#UׄK;À N"„ ºšž ÁšïCi8 ”PèjB!‘BWÖ3þè’`ŒfÆåžÖq^¯£E»3ÆBéL¡gHÇÀ+¸«3kü’ÕÖÖ¢+áIËálü=_·õgÿè„B"]{èAGwzÅ×yѤkÕ $p‚Ñk„Bˆ;º²ž –PÝ—ïñ¡¼Ï»Úw0û§!„‰PÏøoŽòV:ÒŸu:Zø£müYÇŸ÷&„BBM z†t>Ì`á8§ýmù’V«UÕ¦íJ®ÎPöNqµn¨ð÷á†B‰tDsˆö0›Mí´‡¿÷½h×5î>/³œµ!„Ž‚z&tøsñg‘õ !„H…zf'þê_ÖEÖ²Pe} õv$[ „BÂA¨ô éh0‹œ¿Hf³EûâYQWW‡ÔÔTt5œ~¼­+tD£/:!„XE4‡Ü·Dƒ ä^«º†÷uB!$²¡ž =¾6ÂFÔr„B¢ê™ö„Ãhf\Ï—uÝmÂÝEMD!$Ü„RÏŽ‡%2£== ¼šÍf5¯¢¢]Só†+}q û ÇqB!áD×¢AŒš$P¨k!„ÒÑPÏ„—pÅ]ÂI43!„® õŒ{1Rùªü)Sjy_¶[B‰dB­gHÇÂ+Á8 :}Z¾`2Øl6444 +hÏœ`Ey b›BH´!ZC4‡®?ÜéoP×B!¤³ žéX:«Ö‘z\„Bˆ/PÏx'˜v›`’£1<í'Ðã äý !„Ž Tz†t4˜Ež¾(®¾X‹E½–––¡«Šo">Tû'„B¢ ÑFí¡ãéÞæÏ2êB!„„ê™Î%Ô1–H}OB!$œPÏøN0÷þPh_Ú›Bݮ趄BHGˆžÑ—“È€³ÅÕ—ÄØ“D¾tòjµZQ[[™‚˜"BH4#C´†Q{¸»·ù+þ©k!„ÒPÏD&þ4¼2B!±õL`„Ú(ÖÙ„âx¨•!„t¡Ò3¤s¡Á,Â1~©œÅc||¼z-**‚Ýni¡³?š„BbÑ¢1ŒšÃùçïýŽº†B! õ !„B¢ê™à U›MG™Ú]½O¨ŽBé ¡gHç@ƒY”àJLšÍæ¶ôÅÅÅ íéÈ"þèB‰%D[È}M´†hŽP¶¨k!„ÒPÏB!$Ú¡ž -¡nÇqg fDZB!I8õ éXh0‹ œ¿8ú´q¾þÓSŠÃÓl6¡®®• ® Çô!„Ä*¢)D[ˆÆÐ{“¸JWìJ«èÓÔ5„BéL¨g!„íPÏ„XmÛa›!„H#z†D¨À•Ø×‡øø477¢¼¼‹©©© žá!„âššš¥)¤‰hŒpô¨¤®!„BH8¡ž!„BH´C=Óq8ŸÃææfDlï"„©t„ž! f†|yŒâUŸ6Î׿dòEÔ·§Ô®-..QÓ ^B!Ä_Dì‹–ØÙ[Õ¬z’SëøÒ›„º†B! õ !„B¢ê™Î%Ò gl„'„ „ZÏÈ€³(ÂÕ—L¾„"n[\Ÿñ°Z­ê‹j³Ù™™ B!„_¨¨¨@yy…ƒØwNUÊÞ$Ô5„B 5Ô3„B‰v¨g"Wç¹£LglX'„t´ž! fQ€±7‰Ž|ù¤çˆþEôšµ"öå ÛÐЀnݺµ-'„Bq¦¥'j1êêê•f=a±XÔ¸Qì; !áO]C!„PC=C!„h‡z&ºðõœ»3¢±1BH,ÒÑz†t<¾^¥8—ÅùðçfZL†W}0·Î3; ²,C^­³C8‹Nã´|1õy2î<455)±/¯²NÝ‘’’B!„#µµµ(,,j+`LSì<{±êøš®˜º†B!á‚z†B!Ñõ !„B¢ŽÒ3ÑJBBüÞÚ‹®ÊÖ×&§¡¹õÕnš ¯ÎÜL{zuwÆkŠVf0‹PôÞ#®¦]õ"qÞVæ766*±_TT¬¾À999HJJ!„Bº6õõ (--UA½æ}BBB›°µØ§®!„BH¨¡ž!„BH´C=C!„h§£õ é\˜Á,‚q•:×[çq›Í¦ü‚|¡³³³œœÜåSB!] Ñuuu(++wÐ’žX£Ðw<‰}wóŒP×B!$X¨g!„íPÏB!$Úél=ÄJ3Ì"ž¼Ê §)Öç‹cÔø� Hï’ÔÔTÕ»D¯}K7(!„ýè÷ öIš¥£˜-`¬u/�úx8Ä>u !„B|…z†z†B‰v¨g¨g!„h'RõL´Aƒ™ëe4˜…ob_ô‚±7‰³ø×�ä˯/s÷ú´ó+!„B"]h;¿:/t/Á=£°7Š{㫾½q¡ûÔ5„B1B=C=C!„D;Ô3Ô3„BH´z&šˆƒ™$â‘/’³Ð6Îsþ2ʾž.øu·¨ óDø·~y@Û|}ŸÞ>�!„ðãMT;k–yêÿm5ïE¼Q໚vÞo¨Ä>u !„Ò5¡ž¡ž!„B¢êêB!$Ú‰%=C:Ì¢WÂÛØ×¿¨Æ^$úrã<ý@ÇØãÄ8B!‘+àJ¬…½óºÆÅÎBÞÛt ÇK]C!„êêB!$Ú¡ž¡ž!„B¢hÓ3¤c¡Á,Ê0Š{}Z0 ~]Øë_f]Ü;o¯§*v%ìóŒ) !„Y¸ªWïJì»JCì,þÝmk$”bŸº†B!õ õ !„íPÏPÏB!ÑN4ëÒ1Ð`…8‹}çyÎ_Dý‹lì)"ƒÞ‹Ä(î]‰~cúcB!„DîĹ³¨wžïj¹/½FÂ!ö©k!„® õ õ !„íPÏPÏB!ÑN,è~h0‹Rœ{¸šçî‹ê,ì]í˸œB!‘QÀç¹Z‰BŸº†B!Ô3Ô3„BH´C=C=C!„D;Ñ®gHx¡Á,Ê1 wã<ÁYðË«¤6N{JSìüåö$úù@@!„„OBÛÝ2w=IŒÓûº¿Ž€º†B‰=¨g¨g!„h‡z†z†B‰vºšž!á³À]OWóÓ»ú1p%þË !„Yx÷Æùþôé¬û>u !„Ò5¡ž¡ž!„B¢êêB!$Ú‰%=CB f1„«^%ú|ÁY´;ÏwÕƒÄ×/;{’B!¡'Ñíªg‰«åþ.ë(¨k!„Ø€z†z†B‰v¨g¨g!„h§+ë:h0‹1Üõ*ñ´ÌÝ‚ó€/ïK!„ŽÅ›°w·¾¿Ë:êB!¤k@=C=C!„D;Ô3Ô3„BH´Ëz†„Ìbw½JôeF¼­çíËÏ^$„BHøV„‡âA ³¡®!„B¢êêB!$Ú¡ž¡ž!„B¢ê,4˜Å0žz•¸ZOÇ_áÎB!$rð÷¾-÷qêB!¤ë@=C=C!„D;Ô3Ô3„BH´«z† f]�_¿óúFØ[„B‰<‚ëÑ*ô©k!„Ø‚zÆ÷õPÏB!‘õŒï롞!„B"‡®¨gˆÿÐ`Ö…ðWð‡j[B!„„ }êB!$Ú¡ž¡ž!„B¢êêB!$Ú¡ž!þ@ƒYÄøEwîò„BHäão‚XùÔ5„BHtB=³êB!$:¡žÙ õ !„PÏ0B!„B!„B!„B!„Bq3˜uA<¹P]9Në³§ !„Òùï×¾ô1Þ¿c­w u !„PÏì„z†B‰N¨gvB=C!„D'Ô3Äh0ëB¸龈w |B!$rÐïË"ÞýM_lÜ6š¡®!„B¢êêB!$Ú¡ž¡ž!„B¢êâ4˜u\ýxúq°Ûí „BHäãê~n2™Ü®cùÑ*ü©k!„Ø‚zÆý<êB!$²¡žq?O‡z†B‰lº¢ž!þCƒY ã‹À—iWó|ÝŸ§ù„B w‚ÜÝ|瀬§¯ëJäG‹ð§®!„B¢ê™¨g!„è…z¦êB!$z¡ž!ÁBƒYŒâIäë?2ÝÔÔ¤¦eÜ8߸!„B"½'‰.ÜeZÆåÕl6;Ì—{½«TÆ‘*ú©k!„®õ õ !„íPÏPÏB!ÑN,ë4˜ÅÞ¾ "îm6[Û|ã«q{wã¾¾/!„B‚Û�wÕ3DŸ¯ìôuäÕb±(ñ/¢ßùÁ¸HþÔ5„BHôC=C=C!„D;Ô3Ô3„BH´ÓÕõ 4˜ÅîRË^„½|ôùò…OLL@||¼ö¥—/¿à„BH ÐÒCT†&X­V444* ÐØØ¨îõ¢d�w¿³5u !„Òµ¡ž¡ž!„B¢êêB!$Ú‰=CB‡¯W2ÎÇeq>¼Æ¹™Ö“áUÌ­óÌNƒ,ËׯFë,tQÜõÑ{È]^ùò¦¦¦ !!¡í N!„ØGtþššZ‡ Ÿüô^&®D~G êB!„¸ƒz†B!Ñõ !„B¢hÑ3‘DBBüÞÚ‹¤‚«l}mrš[_톡Ùðê<ÀÍ´§Wçqg¼¦e³(ÇUï½¶½|dZ£ééiêKM!„®‡ú¤¤$5ˆ>¨ªªn Š>AĽ³ðïÈÞ%Ô5„Bñõ !„B¢êB!„D;Ñ gHx Á,Jq%ðõA„}CCC[½ûÌÌLíËB!„AÄ}NN6êëPQQÑÖû41±E/ˆÀ×A×áþÔ5„BñêB!„D;Ô3„B‰v"MÏðBƒYbùÆz÷2._Vùò*ŽQé=”ĄBq…º©Þ%õõõJOˆè—ÆzïÁ(üC-ú©k!„ Ô3„B‰v¨g!„íD‚ž!ᇳ(ÃYäI;("_ÆÓÒR‘šš B!„Oˆ¨ÏÌÌ€ÅbFuu êêê”è—^'ò�  üpˆ~êB!„„êB!„D;Ô3„B‰v:SÏŽ³(ÁSjb£È—/¦¤&NNN!„Bˆ¯H€Ðd2«Æ¢)ýFB•˜º†B!á€z†B!Ñõ !„B¢ŽÔ3¤c¡Á, ð&ò¥æ}cc#E>!„B‚B×"úE[ˆ ·Xå¢QäÒ»„º†B!á„z†B!Ñõ !„B¢ŽÐ3¤ã¡Á,Âñ&ò¥æ½|!åUêÞSäB!$DKØíM¨ªªnýf³Ùa@E?u !„B:êÿqþ\Ä?'„j¨g!„í„SÏγƛȗž#’¢Xz’$$$°ö=!„BB‚hІ†F%øM&“ôòjÄ_ÑO]C!„Ž„z¦=4‘…Oç–ÁqB!B=C!„h'z†t&¨ÁYäKïú2ž•• B!„P!ÚB*Šæq£ êB!„„›®®gœŒIçÀë@!$Ÿ!„BH´n=C:Ì"ç/’|ÉŒËdÐSçäd·syB!„ƒh ÑzYg¡oÔ&‚§‡�êB!„t]QÏ0@ùðBñÆg!„í„RÏÎ…ê0q÷…1 $=± ‹III „B 5¢1DkèºÃ[c˜«ùÔ5„BéLº‚ž¡a)záµ#„â ŒÏB!$Ú …ž! fQ€«^$’>P^™¢848—+`€BiA´†Q{xêUâ Ô5¡Á“v f „Bb‘XÕ3ẇKgÄÚ®óN!„¸‚ñB!„D;¡Ö3¤ã±€DòåÒkÑJê@Ìf3@üÃß`«õãââ@!„tDkˆæÐõ‡ÜE“HJã@ï‡Ô5þÑ‘ Ô=„Bb‘XÓ3¡Ð42§sŒ~Ò÷K F!Äã3„B‰v¡gHÇ f†spÊU½Y=e`FF:ˆo„º‡i8{¬B!‘†h£1âJ«¸w·.uM{ÂÃ_"íx!„@ˆ=̽˜÷óŽ%ç›×ŠBˆ3ŒÏB!$Ú TÏȀ̢cPJ¾lÚ$&&‚x¦#~tس”BH¬Ó¢9Z4ˆô0Ñ5I0=d©k‰¦%ã±RÿB‰¢]Ï¢©/b=ÈjŒ~ æï”BHlÁøLä.MÄ{?!„X%Ôz†t,4˜EÎBTŸ6öXצ f³E¥ $îéè`'f„BbÑ¢=$e±ž®Ø(úÅ¿«{0uM{b¡a–f3B!ÑB4ë4C0Ù²ÈNü=þè @ôƒí„BÆg:Îjor†z€BH´ˆžáý/r RŒ`\Îä‹&¤¤¤€¸Æø`ÔߟB ºö-âÎï Ꚍ½ƒÃ±Ï@†p!„‰D›žñç¾Ⱥ¼w‡Ž@Ïi¸Ö%„»0>Ó1DªV¢†#„ «gHçÁ fQ€.ÅÁÙ"ô%MqH{"MèÓMK!$VíQUÕÜÖ«ÄUO_誺&%\:'½b™Ù•BH$MzÆÓQ¨öî}D3hçsæiþh'Æ›!¤kÃøLøˆF½HfTB!¤³ •ž! fŠQ:ÛíÍ0›Í Ž*þ}Ý.Ð`" !„Ä¢=DƒxÒ(îîy]YלììÀ¦?¢ÞöA=D!$ˆ=*sY(Mj]_Α7½ã‹.ò5ŽÄx!„t]Ÿ -±¤ƒh6#„-£gHçBƒY„àNÄ:ϧ µhÉNü}ä¡!PqÎ@B!±€®=t-¢ãê>ç®ñ¬+éšpßýÝ_(´H0JÍ!„DÑ gB‘‘,TÆ3⾚ó½é"_uãM„Ò5a|&4„+þ,¡º·3C!$’ñGÏxšO:Ì"]êéŠuøÚIgôÈõWœóGBH´c¼éºÄß´Å]A×kb×6¡ÎØŒñÞßm!„Péz&Xs™§ezù+½ü„ ÆÏâë~ÈNœ¯¹>-¯,—AzeËàªÁÞ£Mf„Bœa|&pB¥q©•\í;˜ëÂvEB!‘H(ô éh0‹th �’Î1—¹Ú/è!„tZJ&ØÛƃÙkº&\¦/× _3o¸Ú†^ !„D‘ªg‚1—yšo³Ù`µZ•±ŒF²Ðâî|ŠÆ1ö–i1™ÅÇÇÃb±øœ]F_F“!„gŸñ`?[gŸ›@b5žöCÝ@!$•ž! fQ¿\þàíÇH‚¬lÕ{ï:cìu*@ º{ü!„t B©EbCׄÃXŠ�±;É8æË¶dxõg}B!$tDŸžñÇ\&ó$ÞÑØØ¨ŒeòZQQùóçcÑ¢Eذa¶oß®æÕ×׫uIðHÜ()) ™™™èÓ§ˆÝvÛ ãÇGFFT\I^e]WF3–!„â;ŒÏx#ÐØJ¨¹Ce Õþ!„9ÐûmÐ`F¢o"ßÛr ¢JÕÛ>t㙬›’’¢z›º[WðÖðJÑN!„Ä¡ÌBÖQ™Yƒ1 ùRZ¥Ä !„ÿD#¸›'†2‰wÔÕÕ¡ªª ¿þ:?þø#þþ{®ZF‡õdó¾uëVüõ×_øðÕ©l„‰8äC°ÿþû!==ÉÉÉÊŒ&ËœKƒ¾šÏ|]N!„t5‰DÒ6t ÄhFý@!„ Á,q®{oœOZ¦V–UWW£¤¸•ó¾„mù·°­CsMšmõ°kÁ@MVkߎD4[’aJË…¥÷X¤N<Y#÷Enn.=6ªR”B‰e<éWa±¨k:ÒXæ)c‰ž…UôuõónÔ%òj׳´êƒ¾Ìמ°Þ˜þ8Ù{–BHG)z&”æ2éW^^®2“M›ö->ùäcäççƒt.bìûë¯ÙjxõÕ<œrÊ©˜:õ•éLW1&W±%šÌ!„8ÃøL{‘e>uƒÅÕ{ùREÇ×u·¡† „ÒYø£gHçCƒYk?Üx3—I µ¬¬E_܇Üe¯#)Y›¯ý65§vÙTÿŠkÔ~´ª´H`!¬ëW táÇh<óY4í~$ºwï¦zšò£Æ€!„X!{Z,èšPeó¦Yœ‘ÆIôòÞF3Y ï#8›Î$[«dÓÐKƒ{ P†ÚhFD!¤#éL=*s™è‚–XG.\„gŸ}›6m‰<Äð÷ôÓOáË/¿ÀW\¡Jhfgg+£™è0#4™Bñ•®Ÿ1.cY0çÉ×xL ûóÕlF£!„hϳÑ f$êð·1Ö8_zóÖÔÔ¢|í\X{Èâ­@r’öeÐS‚6hߊ8í5.^Û@‹í5ÕÕE€µ±›?ºiC÷Eeb‚êaªãoÀB!ÑI(ÞôŠqZÌd2ˆ±Lïm¬›ÌZæÙa—rWšì0Å™Z³”‰6iÉJf6kb¦YLôÍ-ëÊ{¨ÿ´öf5m2™Ìe²o=Û™˜Ìdž 2í)˜é‹ÑŒ&3Bi°6ã§•u˜·©;*šÔ÷7/ÃŒ qЈd$Zø] ¤«â‹¹L×………(/¯Àû￯ ï)ÉlÄ�xã7âØcÅ?ÿyУG‡Œ³B &3B!¤«ê,da>óe{o¦rÖóÇhFAHð0ÞC‰Uh0‹�b­§H¤a<¿555ª1¶üªµ·Æ§i_‚tm­áÕ uƒ—0¬Iîë-í±°K#­öM‘öÙ„Ò­(]ü’÷9uuuHIIi{~é„Bbã}·+ö† …±L7•é&2«ÕªLò2.X4QoA¼E²\˜—ß¶­Q_´k/fY/ά/ÁÎÕvŽËa46ZµÎzí½›”¹,>> j_ºÑLæÛ£™¯Mj%ÒØ\jÃS?U ¬ÖѲ±Ä¦†Z òʃ2Ñ?‡í„t4¡güÕ ®Ìe¢ vìØââÜqÇíX¶lHô ×ð‹/¾ÀúõëqÛm·+½×»wo¥Á‚1™QGBb9>£JcY011÷ëƒÞÀ8¸B7•éø§®ÞÏ[æx_ÖñµãŸ¯ëBÚÃx!áϺ‘¹HTL�VÄ}CC#jË Q·`:zô�ÒµfÙdM('iëVjƒv¯knym–6ÜÖß(“Ö+m©)‰@Éì¯Ðkò‰¨¯¯o3˜éïÅ^¥„BHìlÏU_æË¸4*Š™LŒe¢3dZh1”™‘Ÿ ¦[¤EœaÜ;ÆõÜm#š%)IÞ#¡uÿÍJ;ÕTWæ5`‹±LJ„ë&3Ýx¨Ñ,Ôå‰t›š1{}–ooDU½]ë­î_Jkìxpz9æZ‘dÂ¨Þ ˜<8ñf~'éj¸3—mÛ¶ ;väã?ÿ¹…%1£˜%K–à†®Ç½÷Þ§®mß¾}Uò7“!„Ò• 6Vèr]‡Éàl,ó„ÞiPŒäžp6šÉúºù<F2fÔ„x‡ñBHW‚3øÒ»WjEÄW¬ü ¶Z$$·.SY¢6˜Z2wˆ¹LR—Åé¯RrÊ$Â_knׄÂòßP¹c=Ìý†©`id5¾'S Îöí;pÜq'9\»=÷œˆgŸ}ʧíÏ>û|,_¾¢mZʘþðÃ4e¬ªªÂæ°þã?Œ)SöE TVVbúôïñûï`íÚuª$‰\ÓÌÌ 6“&MÄÑG‰ŒŒ B‰N‚éÁên™+c™ ¢U$Cªè•„ ’“ÚÊZp=î2{<oë*“ÙNóZœ2”É ¢H²›ÕT×ÀÖdErrŠ6$+£™Üo1šu…lf®ô‡/ˆyoÖ¬_Û¦>øpTTT¶Mß~ûqÌ1GϺuëqÚig:ÌûòËOÑ»w/„’ÕV¼8³åµþ•­“€äÊ|«Ÿ³±_,¬ÁEûiZ³g<!Ñ‹¿ÚÁy¹ ùùù(++Ç­·ÞJsY °qãFÜrË¿ñÈ#ªFä^½zµ3™9Ã,f„Bº*¡0—ù³L7”I{ÑP&ójkk±yÛl,(ÅÖŠZ7�eMÔ˜’P—k|2µõš›õXK3$c¼µ)ÍõHµ×#ËdEdúd$c`ÏôïÓKµièÆ2Ýl&mQºáÌ›ÙÌ£YW2™9ÇUᢋ.І ,}ô zèѶé^½òðÕWŸD'Œ÷Bº4˜‘¨ÁׇwëJƒ­ÿ¢?>GNªöÇßZ S†¦Öìeq-&³6¹ÜܺÜÜb0/Y²¹ ëæ#«ïP4448ÌÜ ƒz¾! y»í¶+.\Ô6oîÜy(//GVV–Çmóó Ìe”)û8d™ òàøöÛïâµ×ÞTΩá÷ßgá™gžÇœ‹sÎ9Ëëß !„È"s™/Æ2Ñb,’”¥Œ×î‰ ñZÐÐ} Á—Ld¡Þ¦e:NÉdhÖDSMmŠŠŠ”ù,--M¢|1š“ÍŒz*üÌ™3—]v•Ã<1ºÉõ%#ÁÆG¿/‡Í¿X£K¤¼‚ìëºÃ²t$$ñ¥óœP\\ŒêêÜ~ûmذa=Hl FÁ»ï¾ ÷Ýw?JJJн{w‡åÌœO!¤«Nc™ó|iKC™ º¹L†Í[·bɆíXYnÃ&d¡(½/j3ÇÂÜ- ¦ÞPíIR§m°é OГţVû_œÅ„8­ÍI Òl ­f·jmÕHÙ¼ Ý«Öa�Ê0"+cõFÿ¾}Uû‚n2ÓÇÅxæÉlæ-»¼»e¬GHWƒñBHW„n‡ÆUê]Ò_΋<�HÉ©úÊØ6-DbFKV2]‹Ð—ŒeÍæÖ™²KƒÑLJdš-R¢ HÒîëE³¾D¿)§(Óš˜-[À@`{¦N=ÜÁ`&r3fü‚O<Þãv3füÜnÞᇊP#×üÆÿ?ÿü˧õÅ8ðüó/aÁ‚…xä‘[³ÀBHtãJ£øŒr7i„Ó\&šDî'ÊXVß Ê_¦¦$içÐdØÂX³ã³—¹;Ó¢ŸéiiHKMÕ>G½Ö�Z¬}†¤§§«¬fºÉŸFPšÌH¬"e¤'k(‚:²¯—´}ÞbË'¥g‚é<'Ó’I»ªª¯¿þ:–-[[,^¼o¿ý6Î;ï<?}Ř!„wt…øŒN°æ2_狉Lâ6òªw œ·tæl«ÂJSäwô™Ó@­Ý©Një`¯¯…µºJ‹œ4ÌX­íLnpµ<N²—ZP“Õõ½‡c»Ö”ð‡M[°½y‹—c„½“ú¤cü˜‘mýÄd&ÙåõÎíd‘ïjÙÌ Œ÷:Ñ3¤ó Á,  ±Ì?\ýɃ@S“%+f!¾® ñ=Z²—éå/Ñ’…´­qU½4ïø2_ f²®´™Z7,@]e‰&Ú{*”sÙç>þúÎ!‡„‡~L=ÀéüðÃO^ f?ýäh0KKKÅ>ûìP"×ñ?ÿ¹Í­¹LJcÊÃ\qqI»e³gÏÁ}÷=ˆ»îº„+„»Qµ³Ô\æmžhÉ|)™9ëë”hAjj|Í0ÖÙË<mcÒÄTjj RR’UF3É´!NÉ:*F3cÉg]ä<OŸßLfûí·/úôéãqf=f¯oð»L‚/HÏVÙ÷”¡ì¼@H°DŠžñ¥4¦4pJiŸ… âÓOÿ›|üñG˜8qƯŽE_Z*“t Öfü´²ó65`GE“ÒÔyfL˜ˆƒF$#ÑÂëE -±ŸÑ ¦ »eÎóDg‰±LÚ’êëë±tåü¶¹‹¡¤Ïá°ìØj´¡²ö­Û¡RŽÁ)®á°x9^ó¤ôfc=ìÚ`«lÝ¡”ÈLJÁöÁû¡0˜Q äþ:»5lÀ”þY3b¨2¥‹f¶ c§?À¿ìò®Öwµ^4ꎓN:Au’tfݺu˜3çï¶iùl§Ÿ~ªË}Œ3„è0ÞCHè¡'&:`ˉ üíuâ¼\d¼bÅ_Zc.(½AЦÿuCY\Ûv­ã¢ Ì-+è%2ã%‹™­¥+ÿBÚ^Ǩ}‹€g@/4dffbï½'cæÌßÛæÍ›7¥¥¥ÈÉÉq¹”Y²d©Ã¼< äåœ>ÿüK‡ãä=Î?ÿe€ÓOÌ_}õ ^zéü×™6m:Ž>úHLš4„B"_µ…/óó$@)Æ2É8b±H0 xÎ4æœ9¬3²—¹;ÇùqÚçIEjJ2**+UÙj1zggg«�§àk6³®`2;á„ã0eʾ ]ƒåÛ.–ïhdÀ‘ƹ´¶PQQ¡² ¾ðÂó ¼Æ0Ò)áé§ŸÆsÏ=¯®¹”Ê4êÆŸ"›Í¥6<õS…j4²±Ä¦†+ëpåA™èŸÃ°<!„øB83Ì º±¬¦¦Fé¬é³á·Æ¬ï3ñ»%ÀVÑ kI ­­aýÜ÷âÖ†+{} eh¶« g%½vÇÌÌqø©ÌŠÁ?ý) ¥8bònª³_jjªW£Y°ÙÌ¢Q‹\vÙ%.çK›³Áìºë®ñù›¤ò·×U`¼‡ÒUá“,‰)Ü=0¨TƵU¨^ô#z'·ÅÌz‰LIEloMI ÃcAóÎ×8sKö2)‘©ÊdjÛ—Ìÿ}&©z³¸*{èk3Ûsć;¹ô2™'Ÿ|¢Ëõe™¬c$Ôå1å!S cFä!í¹çžÂî»ïæ0_ʦžvÚ)jþ?ÿy©2œé¼ûîû4˜BH„*s™sƒ°”²£t³½ÉIR¾ÀhƒËqODBö2WëIF×ì¬,U:³´¬Û¶mSæëŒŒ µÌ]PÓŸ² ž¶#-”••á³Ï¾PÙS7nܨýýU)ÍÒ»w/¥MŽ9æ(Œ=Êa›7Þx Ï<ó¼Ëýí½÷þmã³fýê`à—@ü×_OÃï¿ÿU«V+c½\›¬¬LŒ9°¿*.Ùì<±lÙruÌóç/@AA¡ÚG·n¹;v Ž<òŸ²Ò®_¿A†ÿþ{òóóµÆZ•aoàÀØsω8þøcѳgOt4u¡ïÍÚû&„„‡@;Ï ò\ÙÐЈo¿† 6€Ä6›6mÂ÷߯ݿŽW×^â ž`Ì©óòH’eB«êíÊDVouÿ.­±ãÁéå˜kAF’ £z'`òàD–A"„„Ó\&fiÛ©®®V?Ÿ»¿%DåàÑlÓÚ ÑX\ßZGßAÛÿ:‰8íØ¬h(ÞŽ†B;⓱q—°Ik¯úrÎ2L©_€ã'ŽP™åÓÒÒT»•±t¦?Ù̺B†ù` E,££ÞGöñÞ{¨D RGâ6ûî».¼ð<ôèÑçž{!–.]Ö¶þÕW_³Î:³múàƒwH¦ðÊ+/hñ–xñÅWðë¯3QTTŒC=÷Ýw·Ãûþùçl|÷ÝX¼x‰z_‰#É{º‹ê|)1*1F:óÑGŸà¡‡m›–¶Á›o¾A{ÚˆW_}sæÌUxûõë‹3Î8]Å|td·ß~ý5G‹Ç–!;;KµÉsÎY4h Bã=„® f$fÑÄd³5¡bë*ÄWæ#±OË3A«·¬åöÖAŸ6ÒZJSLfÒ6&Æ4É‚Vºfl š ŠoÓÕ¡aÿý§¨à©Ñ˜%e2=ÌŒääd‡ÜÄ%BXD²ßÎæ2#ÇSÂV„»ÎܹóÔßdWêÉA!±@ æ2ù½/**RF—ÄÄx$$YÊiÙ˼òzö@¥è‘à‘ÜÏ%Xå.¨ÉÑÐñå—_«�œÉHà|íÚujøä“OqÜqǨÀ\0zdõê5ø×¿nP뜑€§ ¿ü2o¾ù6{ìaôsFŽë‰'žÆ|ÔnÙöí;Ô ÈñãÇiAÊ»››ër?þ” >:Å\'ALÞ|ó\sÍ•8õÔ“ÑQH“-¥6JJBúf[°ºÀêzÿZ¶¼3 {¸Ê^&Ÿ’Uã“O>é|øá‡8üðõk¯b$•ÅL Ü÷Üs?eðàAÚ}ú=Ä"r~qf¥ßå‘Ä€¶2¿åþ>gc¾XXƒ‹öËÀ°žŒBˆN¨::Ï“Žê’@²„VUUáÓÙË0#uwÔ9Öò&X7mm-qçh.‹4¤#Ÿµõ[·¨cµu‰iY£ñóòµ8°f6Nš<éééªbŒd—÷ÔñÏyž§ùÎëtŸM(bù>/¿üª2‚),,§Ÿ~ŽŸþ/½ô<üEžK.ºè2ÕÙÏ%%%¸å–ÛTu"g$V(ßþ…×^{>xvÛmWxBž…d_W_}CÌKÞ_tªt¶<ï¼sðý÷?â¶ÛîTçÎøY¥sä?ÎÐbf÷aï½÷B°0ÞCéÊD°:"¤…@³…èÈÂL—¯ø f >±5{Yk3¥õÔenÚVe±Él(“)ÐJ6¡DLf¶&åº÷÷}™ßU‘žÜßaÞ‚ •(uFzIÏ #‡r°z` %"vHƒ¬d)óÆÙgŸ©²>Ü}÷Êp@!$²ðt/D‹ˆ©jëÖ­¨«­CJrâ£Q íÆ= ÙËÜmãLfF:zåõPÙV¶lÙâ`…F¢~rDJqßu×½íÌe®øâ‹¯ðØcO"P$É%—»4—9#=G¯¸âj‡ë¯sãÿv(uF‚ˆ—^z¥*YâÌ}÷=¨5ÀìõïAôº˜ï$ Ø4h ÇR«ÎØß©E“²ÿ:4 7‘…Ýúº.û.û~zF…z/BHl#¿í{øã?T–FÒ5ÈÏß¡Å"f¡©ÉîÓýt,Ò øè÷å~›Ë\!å4e_î !¤«.s™<cÇŽøì—¿põÂf|3ædTf@ÍšM°ok1—µl¸sh™Ñ24»:sy+Öâ­ê3TföÇ4í3Ég“Ï(ŸU>³± ËÛyòe¾¯Ëc‘PÄ2:ê}$ù³¹ÌHYY9þóŸÛܶqºC*õ¸3—‰n½ì²«\šËœ£Ù•W^‹mÛ¶{\¯¤¤·Þz‡[Müò˯©÷»ãŽ»ÌeÎÇõßÿÞ®Œ¥ÁÀx!¤«Cë+‰yÄIo³YQú××ÈMcP«±Lê¢M-†3wè¥4õ fR&3YÛOÅš¿‘7febS”Àl¡AÊ)}óÍ·mÓҳ觟~n—uâçŸ {yLA2~‘Ìe©©©^·ëÖ­>ø@B‰\ †y2H‰ùY‚wfM4¤¤$´é×ò ¶²—9K6³>½{jç£Tõ¬”þRªAp•ÉÌy?Þ îjA‚d<ò˜Ã¼#†«Þ›R²   @%g͚ݶüÿûL[~¶Ê.'%DÛH‰—^zÕa?R\/‹©g<ûøãÿ©ì`:¢ƒÿõ¯«qÀû)“ÿ¼y ðàƒ«@¥ B)çpæ™ÿhÛFöa,‰.×ñÄWºIö·hÑbÕ“µºº%@*ËgŸ}A °^×¶d&“¬mF;ì}ô‘ªæºuëñ /aóæ-mËŸþErÈA7?­¬SÅrü©ÔÍ‚[3¶•7¹]OÊlÍXU‡©cR@‰l‚é<'&ݦ¦&üðÈUÒÓÓ´{V Òî[=ztCZZªÊÚ•œœ¤¹OÈý®¶¶^5žI†XihÚ°a6lÜ¬é¯ Ä"?ýô<ð Û’2Wž²˜EjVXÉžkHYLÉ\f aõ"Ù×KÚ>ï?1‡å2 !]šP™Ëœ³–I¤ÒÒR¬X³ïä'aÓÈ“ÐTÝŒ†Õ›Zî“ZQ³û7…—ƒŠ€å-ÙKòÑXÜ kÏ‘x7m~ÿc&þ/¯#‡FNNŽ*é)›Y Z¢+ÅfBËè¨÷‘NÏ=÷b»}K!Éz&F+‰©H†z™={Žz•XÒèÑ£Ôß@¯^yjÞûï¨â1:K:ë¬3°×^“U9L9v9V½#¢¼Jöû[n¹ÉíûÍûwë~ÎTñ®5kÖà½÷>l3ÆÉëÅ_®Æ%yÅA¨:GJ‡Ä-[¶¶íGbY’å줓N@ 0ÞCéêÐ`F¢_³—‰S]zùÖ–ì� 7 )§%™)Î`2kj”ovÑøÛÜšÜÌÜšÅÌÔ’9Qkg+ýû'ØŽ¾TÌ<+>ýGJ\J©K©‘®#e2 f3füì0—×»î:¡FJœÑÅ2!„èÆßÀ¥·^žbä‘`EB‚Ee-sgÈjoÚòޝÆ:#{™çmâ”±¬¢¢J•›– ˜š_tR¬2¿ýö;,Y²Ôã:—\r‘_ÙX[z‡^‚M›6cãÆ*kÜ3Ï<Ñf 2d° rÈTÕ@-H€}áÂÅÊ%×CW=V%X¨ïGgÍšµÓ¼3çÄÀ•‘‘®z´2D•Æ;vLÛryï×_Óa7Üð/'åÆÛçŸQ[g1©]rÉ?µ}g¨i Œ_{íUÚgÞ¤†¡Cwq¦Êç–¿=)Û #çH²âZ¢ÂWþÞÔ€@Ù+GŒn ~0·ÅÕMן§½Ž„Ä.rŸ“ßõ–²0#£Ôî»Á¤‰ã´ßû12x zþ†ŠŠJe6[²t9þš3_;W • -Ú™3gŽ2ÔI©ñÎÒ<r?ýÇ?NóºžÛï¿ÿá`ì–ã¾þúkkÌ^ß’ÌeÎHc¥ì{ÊÐ$BHW$s™·yRMDbû¢ Þú})~p,,ÃP·q«Ö.Ô„¸H.ƒ­e{ 6kfl¾î¬nÄ¡?‰³÷£4e÷îÝÛ:ùÚù&³ÐÅ2:ê}¦Mû¶]Æ/éxƧ·MËø\ì6™;äZKµž#Ž8¬Ý21œ]zéEm±ёұQG b•••™Õ|Évvë­·´íG’L :Te_3"ÇsÏ=w¶MËz'tšC'É@ uFï!„tuh0#M°éuuñT8ÿ'$67 1É©4¦Ðj0ÓÛ~›[ emÝUâv¾š[ËdÆkûHÒô·móTlD|¿áêAÅ(wþL4œyGU?ü0ÕÛAGz6H/#éi#HuîÜyÛvØ¡a9¿Î&ÂXìK!]P¤ù×בW); ËÄD â-?M[þe s—9¬³²—¹?žç033Meu+-+W�zõê¥Öõ%ûF,2¥§¤7.¾øŸðÉ wòÉ'z\GÎOBB|›ÁL]Ά3)W.½S¥ZG: Èà Y¿°p§y¿Gî8唓ڭ7fÌhmÚzÆŠÞ–q1Å b\“ÁbbpF:0„Û`VPÙ„@HIˆÃùûd¨ïÛüÍ ˜¹Ú{I´½!$òp¥=Äü+ó.\¨²˜E+}úôÂQGнöš„±cF©{R(ÉÌÌÀî»UÃYÿwšÒ+V¬ÆŸ³ÿÆôé?bí:ÿÍ"ùK–,Æ>ûì«þôìù:¡Ä$n4Š»céÒeøä“Oæ]vÙÅ9rbåÛý+#å×¾w4Ò`Fé’„Ã\&f*1—­^¿ /å§£p“Ñ´µ[g¶ Y¡Jß¾õ5pÈhuËU¼ÅŽZíYÝœžƒ_´Ï¾|Î_¸(o+†imb2“N[jã0]ÝdªXFG½Tÿ1âªÓ€´s]yåe¸öÚà‡z°Ks™à)¤ã«)++óº¾óûIgGiG4V8:ꨩëdggc=vǯ¿þæó{yƒñBHW‡3õ¸Ë^ÖÒË·A`Ë×ÌCºvÓ–ø¥ôGiË`¦M4·ÌâäÛà¬Â›wŽ›Z×—ò˜R#Û¢ÍOÑ„Ké¶õÈî7\útƒY ŸƒÆ3G¤L¦Ñ`&Bñ÷ßgáØcVÓþùW»zêîDm°8qƒ­ÓN!$²ñ%pi4—mÛ¶ õõ HNЇYÜèmøkÚrM´f/3ž2OMMÉlR%­äœõéÓ'd&3²1á‹áKzŠªò¤ÿ=Oew1â\fÜW¦LÙWebÓ‘Àçi§‰AƒbÔ¨‘>|˜ê‘*ÁNg3šàœM¶wîuª£JuÖ®]ë6(+¥iåsoݺMe” *ý5§ÝzÁvb ½2͸î°,,ÞÚˆ·gWµ}WÎÛ;9©&•ÁäÍYÕ>í‹ß B¢O¿Gú2=»¤˜Œ¢ ¹ïtà~8æ˜Ã±ç¤ñz—ÌYcÇŽRÃEÿ<[»?lÄW_OÇ_NÓtHpJÍ¢E‹ f‘Ø©Q²ƒÞpÃÍÙP¥ÁSÊyBî×bJ“øŽÜ·e{1 Š–8à€ýUÙkWZBî÷¢=tºwï¦i“¯Tðí·ßU†~ÑII‰0`€ÚÏ 'çW†XOTÔ…>{YGì›B"•P˜Ëœ§åÞ$‹¾š½õ:¦ÁI¨_¹±%ˆ!æ2çýÅê´öY›j*P½²Mƒ÷Äí5õ8õ÷/qÌä]UY½ó•¯%3»²É,\±Œp½dp7rÀû¹¼6“'ï© \ÎÙÎ<!¦-_¸Ó¶mÛ±~ýz›*((ÔtÜ:Ì™ów»õ<‘••ÙNljFmlìH™™™ébÛ,‡épwÚa¼‡ëÐ`F¢_„Dˆc¿®®ù½4dÏ×ÄÓ*ÄÇUÂÔÔ’…Ì,ž!M35Y[oÔºñLk޳cgÙLs˫٦}iì­ëåöDünûbCm"j‚DÄWJJJ›@3 i6ˆ†4PöïßÏ¡¼Âo¿ýÞf0›5ëO‡õ€aÆ"tëÖM'uòóóA!$zñ¥A×Ó<}º%P²M•®s™Éd4Ž¡Ý¸'‚Íæ)“Ygg/3Ž'k }ݻ墨¸T»·nU&3 k2ëêzK>ÿ?ÎÀÇÿOõv 'ÒSUJ`M›6Ýaþ† ÕðÍ7ߪi ô|ð¸è¢ Ñ·oŸ¶õ¤Tª3¾dvÊË+¦kkkñùç_ªÆi£fìlò2ÌØXbs»<5Ñ„¬ö–¤:°¼þG•ÊV2n@¢ >¾ú{%ª|k`ÎË4ƒÙcl•¸† 1Ñ‚d+;ïÜ3´g÷©Hrê¬ÕY 2×\} ®¸üŸÚ=g^yõí¨Éj& r‚s;§N=|ÓMÿq¸¿K#à]wÝîñ=¿þzî¿ÿ¡vã¥#¬Y³Õ å¡xà^UjÉrnd?—^z%/^Ò6_ kRš\†Ÿ~š'žxÔ¥aÍ6—Ú°¥4ðk!Ù+úf[°ºÀêzÿš~÷èŸÃ°=!„þšËd\b÷ÕÕ5xêוX°Ç©°Õ aÃ:•µlgùW9Àbt:®%^S§ƒøœ<|:òTløõs\µÿu¯ÌËËsÛ–Å€; e,#Üï#ºHâ%FúõëçrIœ!YÒü‰©¸ÊodÇŽ||øáÇøò˯ÊSJ$ý½1ÞCéêðI•D,Á`e[Æv{3¶nÛŽmõ È9ðN”¦Ç!Þ¢‰³²ù(Ûºy¹6$YkÑ`/ÖÖ¯Bj†&s¬MV4i I™ˆKHFi­6K6’†î‚êø¾XœŸ„„>c±±¨ ¦z›&Ôj`Ñ”‚Õ³–¸?>Î|C2’½ôÒ«mÓsæÌU= ä<Ïžý—úRO=\ì²Ë,\¸¨mzáÂÅJ ‹©ÐRzjÁ‚EóöÚkO¯ÛB ¡2—ÉëöíÛUæ²”ä„VsY¨L[†¹›Õü[/ÜÙËŒHÃ^÷n9(,*Qç0T™Ì¢Ac=þøÃ*X(‘Ï}ÓM·`ÆŒ_\.ONNÆØ±£U/ز²r‹œci4Þwß}ðÁ©F[Wß hŠ í—_fâÙgŸl+¯ŒÎ7fF‘²\p±Û ¨ôÆ–,j3gþŽŽf¼8ôp\[hÅ»³«qæä4ì3$ )ñqÕ»¥Á{ú²Z¬Øa…¯Læ BHxÐMEÒó?Òéׯ2–ÜQ*F‰Èqy䡘:õüöÛŸxñå7µûØrD2bÈt³a¤ñò˯:ÄK„Ûnûê¨çŽ÷Þû�=ö$¼!“—\r^}õE %Nôè£O8˜Ëœ‘L/¼ð2®ºêrJƒµOýT:k`ZF*"üëÐ, êfQûY´µ}©MÙ÷Ó3*pÏq9HŒgìû„*F£Ë}Sâ4wý¶÷<µ«·£¹±~gÖ²¶Õwn×bÅrŸ,6–CkYl5IX¨›»~û·Mé§ÎYß¾}Cf2‹Õö¯PÅ2:â}\éFOm—ÁTgrFtáUWý«ÁM¿‹Þ½{¡W¯^*Ó~4Âx!¤«Cƒ‰jœŒHƒ–¾ªjj1P ræf¤!µ[O¬Ü–Œ~#€y$Pž’ŒêÊX&ÚQZ¸ýúôD“­Qe!©¬®AN÷Þ°ÚãPSoC³)…%eªA´ïàxT–— ±¨UšHÚ¶=ééJ¼‰s?PñLãY{¦N=ÂÁ`V£]O Jª[czáðÃÃSS˜<y’ÊŒ¡#×úÓO?Çÿýß·{ûí÷Tyñ3gþB!ѧÀ¥”ô‘L©‰‰–¶ÌeBhL[žj-비ìeŽçÍq\_”Üœ,””–«ÞÅ\Ò·õÈ$ŽH£¹L2ÂwÜ1˜2eUbªGêžzê!1˜éHÙ*++±té2¬X±Ë–-WÔ¤·¸Žxàa¼ûî›jZÊXÙsωxöÙ§à/O>ùŒƒ¹,== §vж¿Iª\§”A(//Ç!‡LEGsðˆdü¼ª¥5î{¥ÊrA‚Ž{ôo nÒ‚”Ÿ/¨¯Hy…µ÷"„D?îâz¹˜ªªJD*bèý×µ—âè£Y Âp#÷ÅýöÛ[ ¿üú|èIlÛ¶‘HUUKÖcé HÉš/ ˆ¯¾ú†Ã¼SN9I;¯SÜn³zõ<ýôs󤜦l'¦4)ñýæ›o«WAÊÝvÛxÿý·Ý~NÉŒñÕWߨûÿ1Ç¥Ìõ¢G~øÁ1þ"q‹.ºÀkÖ wü´²N•5 ”ã÷HUæ²[3¶•»/Ï$úa†¦¦ŽaçDBHlJs™˜òÅ(UªÅîYnEþØCP·|SK7“gã»7;OL-×ÎE³µÕÚ¹Y7öPÜôןøï¨xeÖ“™”WÛÐdÖŽPÅ2:â}ÒÒÒT[¦ÑØ&ecÝQ\\ŒP zõöÛïr0—I•"‰ÕHYMÉn/É~úéç¨5˜1ÞCéêÐ`F¢ _û²žÌdX¶r%zæõDi‰¤fôëÝIh€ÍjƒÝ¦5bðà]0pDžÖÀY¦5pV`ìè1Èh¶cã¦M¨¯¯Ã€~ýPßPd“ IšÀ^·z™Ö`•>šà–Ì EÚvC[ËdƒT‘ð‹fúõë«J!Hc¥Žd.ËÍÍuXoäÈJ¨†‹½÷ÞK tæjB{§—ž¯ãÆí¡JyºB‚¦Ÿ~ú™Ã<yHŒ!„Òñ'xéiZ/UUÕÊ$oÑR=¸3mÁå¸'|Ý&œû6âI¾‰nÊÎÊDiY¹:§z¦ oÌ®ØSÖ3gþæ0}öÙgâŠ+.k·^Mï,_­-u¤´’ úü;ï¼Ç¡„êU«Û²¿ÊúFĘ&z ÛWœ?÷}÷ݽöšì0O:'t’qäʃ2ñÐôrYNŒAÇF­±ù¥™•°ùØn¬½ÇUÚ{$ZøŒAH4âk|C2³ Îe#1“uäa¸áú+TIÄhå€ý÷ÁäÉðúëïáµ×ßQ# ýÚë Þè(-$Æ·ÿþ÷vã›Ü㯹æJÛ‰y̘UãCÂý÷ßÓvÌ’ñô€öÓ"ÏlëX¸ví:UžÛSX1Õ¿ôÒsm%0Ű6dÈ`»Ñ-"'Mšˆ@ø{SàßѽâqÄèÃØs«Q\ÝäqýyÚ{Ñ`F‰eüÍÒäÍ\¶yóflÏ/À]Ûº£zØÔ­Y¯‰=Ó|ëºú&ú,ãk—[nGíÚõȶn^··ÕïP÷ôþýûûe2óD¬ÅgBËè¨÷£š1 òܹ»L˜ íX¡é̲nÝz‡÷”¸ßo¼‚ŒŒ ‡õBŸêHï!„tu¢£[!ér[SÄVS“]5VÆ'$jz¹ƒ A·Üî¨m.%%Åêùbø°¡¨®ªÄ¼¿ç"7+»Ž‚íXºtè‹áC‡`ãÆ (**R£–zä=µýÆcÍê•°66b&Äå=ý)WÌgìjLz¸ÃôìÙsÚõngyLA”ÿüçóÄPxÑE—© e’¹Ã8ÿãÿ‡Ë.»²]£æ9çœB!ƒ¿=cÝ-—ŒHååHˆ7Ìeí i+¸ìeÆñHÊ^fOIIÒMéêœÊ¹u½Ÿös=£ 瀬siç@`ïÞ½ÛíC´SAA!<á*ëŒsÐOÞûºënÄñÇŸ¬5ò¤²¢-Z´Øa1ÓKùL#Õ|¥QW²ÝèHÖ‘7Þx«Ý{Ë{qÆÙê=þóŸÛÔ:……-ŸA߯,ipó¹¿þúxÂU°ÛŸÒžèŸcA¿ï` :>ðm9îý¦ù•Mð_÷O‰^Œ÷3É*I ¶ Þ{ç%Ü{Ï¢Ú\¦“¤Ý».½ä<|òј8aDÆXS$iœûî{ùZC¾ŽÜçï½÷.ê$Ù¯¿:Ä/»ì’v÷ãôôte3òûï³à‰óÎ;»MkèH#ªó¾½é!OTö=LIˆÃùûd(m=sf®®÷ºÍŽŠÈúÎBHGâO@Ý\¶iË6ÜZ8�•}F fÍZ4kϷͪe¨¥ã›€Óί]n¹vSŠ3©s%çLΜC9—z‰v¯E¬ŠX†+œ;’„ê}öÙgo‡õgÍš­2¼‘ØÊsϽ€Pal'ÒÒRÛ™Ëäoæ›o¾E4Ãx!¤+Ã_'µx+)óŠKKT)Å!¿`rs»¡±µtæ°aÔ9LÄF=vßM• *,*°¡CU€TÒñKðk¨6mk²aÁ‚ÈÌʆÉlRMª£FÕÖ/€9Þ¢²ŸIMD´X&3tHé¥Ç{²­Wìòå+T¯ 9_²Ž¿üïŸáÏ?ÿò¸Î^{íÙÖCöÄW™2þøã϶åb&“òLO=õ¬2 Jìô°uõ`%Û?„B"w:C~÷KJJUIÌxíþïkùÉ`M[¾jƒHÎ^æ)昮œ¬Vun¥w£ž–Ù`[¬_bÀÓ #ó$+ǰaC‘—×Óaý×_SeÝu×±J›þòËL<þø“^ß'''§Ý¼»ï¾O™ÅDŸyæ?”ΕcÙºu[Û:b8“ÆáÝ5=-åÀ%óìSO=ã°9½·­è%iðý¤#ÙED{zèÁJ¿KéË÷Þû@e,֯߀ß~û'tBÛ>D{K¦ßÿC¸ñÆë0`@•ï³Ï¾Àk¯½ OH -g^|ñepÀþ˜8q¼Ësâ™É¾õéZ[è{G•¶}§°¿!¤s8íÔãqýuWj1„¹Ç¬Y³6nÖîZñ¦-Z¬¥uµu¨Ó´—4ª ©©©Ê˜.:¡[n.ì§ ýÕ †7iÀ –úá¥ÇK/¿© oEœ±/Røâ‹¯Ú•Ÿ¼êªËµøÙ.·Û²e«ÒÓF^xá%—ëΚõ§Ã´® Ü1hРvóÔߊ¦ŠŠv–}’¿·pÑ+ÓŒëËÂâ­x{vU›þ=oïtUæHÊk¾9«Ú§}12H‰eBÕPîÓbˆÚ¶=w” EC·¾¨[¿q6}úJœö /ç¬yàPÜQlÂ=æõjþ€Ôó½à-ÓU²Ì‡"–!H<ÇH©Ö¶øÒK¯¨ìqGqXÈÞçÈ#ÀG}Ò6-×âšk®×öý£ýùç_`Μ¿*zötŒOIE G}gu†ªJ´aÃFõYçÍ›h‡ñBHW…*‹D þô„`•ôð\´d´€gqQ!úôîSœ ½´W³Ù„¥K—bè.C1bÄUþró–B ÔD³”ºªªªT g½{å©÷ݰqƒ Ýu7mß X²x²³s´—­ÈÈÈÔ]Š´Ѽž=Ú fÆãfÃhpHÞ”–ÔÍ`rR»½Gðo½_ Pë3¹vR¶áºënRé„Èñ–Îtиé¦ëA!¤s¦4¦Ž. Ôò¤DÏ2:¼F¯èÌ^f7f2ÓÉÊJדKÕ9îÛ·o[ ÓHW-•)å·oßÑ6-å n½õsÌQ¸ýöÿªL®Ó¦Mo[¾cG>.½Ô±<•(ûôéíPªÀ™Aƒ¢wï^ï5sæïjŽ=öh•Qäºë®Áùç_ÔÖ«Yt³d1q‡h㫯¾ÂaÞYg©1çªÌ´:Ó§¯wÜ|ó êýuŽ8âp¼õÖ;mÓ’¥Mzî‘^¿ÒùÄ]©L1çÉ:ÐÕ‘sî¸ãV}ô‘†Ñ½0wcxÊÚîc!$¼[þ)’HMMÁ·ß„Ã;Á šjÁÂ%Úsõ|üõ×<,Yº\‹áؼn§Ít~¹s\tÈC±ç¤ñ˜4q&LØCÅwAöué%çcܸÝðï[îÒÆJ‰tV™*iÐ|ä‘Çæí³Ï^8ýôS½n+Õœ1–Ôö„1Ó­+Ü• eÙª¼ 36–¸ÿ[MM4!KkÜX,š”}ý*Lš„q•þ}õ÷JT7øV)/Ó B‰Eü5—¹ë�(Ñ·lÙ‚¢âÜ–ßõy}Q¿a5â,ñ­¡†®“Y+XâÌíÜ­Ñ‚CµsYŠT A Oz¦soí\]%>ŠXƨQ#Û­óÒK¯ª×ÝvÛ½´vÉP¼Ï˜1£•áL:)êH¹pý½t¤ó¢”>7và ”¾}û¨–t<ÔyÿýÕ`¤ÿ~JSF3Œ÷Bº*´À’ˆ#Øò˜¨”Àd&”$d3`à�­1­¯PŠGŠ ݰ~ÖÈTÃG(Q»}ûv˜5‘œž–{“]Ó$˜(Æ4[Ò`Ö½[7å¼_±|9Š 0bä(µ¯”ädÔ×Õ¡¤¸k×­SlÎél½/ñ©Sp»,Üå1Hï’§Ÿ~_|a[voë_sÍ•xðÁû\6”Bé\üé+‘­Ê\gò9{™q<øìeîrÑš½L_&AËì¬,¥ãä\ëçÞŸk«œwÞ9.uÇ’%KÕ«”=ðÖ¨+/1å{BþÖþýïÝ6ÄŠ±M`èSO=†ìì,x£Gîj] 0:¿×c=¬2¼zC²ŒÝyçmª÷­‘þó|ÕëÖ’]øá‡hWŽÁù8.½ôb—Ëôó “'"; =OeŸ{N!$6ˆ†{ÙàÁðѯe.[µz-yôzø‰8ÿ‚+ñü ¯cþ‚Å>™Ë¼!± eËVâµ×ßÅ%—]‡ƒ9wßó.\ðù³ÚǾÝw‹H§£þ†$f&%˜ŒYÀĨ-†w_æ8CUÂ:Æð|ï• ïήV–†}†$áò2púÄ4µlú²Z¬Øá{‹ xŸ'„O÷mÛ¶©d�·­NDmŸ]P')­ ¨­ $¿- Îav.åœÊ¹•sȵ‰eBË<xÊTæ =Š÷¤ƒ «ù:’`á®»nGV–÷øŽ¯È±K|:#ï¹çND;Œ÷Bº*Ì`F¢_ÊcnݾC™{¤ ¦˜Àd¾ÝÞ„!»ì¢0wäç«/i@óYFF:PZV†ýZzfTVU© ¥ÙfF“ÝŠ*±½xáBôèÙS¥t­ohÄ.C‡ªL•U*CƒÍd¿,“:8`?Õ°ê\JAL[| :¹¶ÿüç8唓T¶Ù³ÿš5k•Qþn¤¼ª”…˜<yO•õ"-- „B:‚^î4FEEª«k´û¼Y•ÇôDǽüÏ^Î2žd/sÎd–`Qå2å\'%Uª´ÿú¾É+šJÊ`¾ñÆ+ªôå‚ U)Q1OIQ××_­¦=&áÓO?W=E+**U¦é±zƧcÏ='áŽ;îöú^{í5o¾ùª6¼ùó¨ò¢o¥­±awÒ¤‰øòËOU‰,)a%ZHÞS³³Ô1‹ñM´1»¯™Ë-7áä“OÄW_}£J$Hf“ªªj¥Í¥$‡|&éqë*Ø)Ÿÿå—ŸW½q%ûÉúõëQ[[§™òyÏ=÷lU.Ó'œpœ¦ësðᇫ2ìò÷—žž’€y¼9í—G¿/‡Í·„%^±hñKÙ§ì›B:‚±cGáÙ§RϺþ"ÙE~øñ¼öú{Úoì*t’íìãO¾Pƒ”½<÷œàØc¦ªçþ››—^x ×ßx;fÎôž=ÖyöÙÔ½RGîûwß}‡Ï%¥»wïî0?ÿœ‰háàÉøyUJkÜßÔe¹pæä4ìÑ¿¥qpS‰ Ÿ/¨¯H9ÍG$ƒBb`²Ë§óµ¶1@ÝúÛVTîz8êÖHYLéÜÝ5MO¡BÊeÖ®[ §ÛïpßÔ¹ÎËËS˽e•ï*YÌ‚ebÂ’Î{’‘LJ_Jû¥Ä2Œ&þP¼ìC dRZó³Ï¾ÀÊ•«T÷ÌÌ 7¹ðÂóU61g‚I–0pà�|üñûxç÷TF|É’/í¬b,“v¾³Ïþ?õ¢Æ{!]_¡â|\çÃkœ›i}0^õÁÜ:Ïì4È2éŽnjl´Fm”Ç•P6rã•Wi<ª««Õ‚sÍèׯ/boi§ÇKKKU œ~™‰mšpÙcÝo‰GŸ¾}‘ ®DK62j¹Z�̪Wé¹ióì:fŒ*ŸY¨‰´¢âbŒ>\ísӦͰhAH9÷fs‹qL®Å’ŋѣg¶oÛ“Ö°7¨o/ì6vŒjT“/wÙGÜg%×ù„BHg±eËVe®JNNi3RKÀA^õÁ­kÜ0} ^ŠN#¹ÍÖˆ¤D)µäÙ´åΨåÉÀå›Np÷¾lúãö¤ÏvâÞ`f/.)SYâÄÔ$ ÎïåË´·ù„t$« ¬xif%Êjƒ‹:JOV 6ëXÙ7BHÇë_tˆ§qÑ Âþûï‡Î`Ÿ}öÄcÜ­bþ çæ›i?àÕ×ÞÑÍ6#èÙ£;Î;÷ œxÒ1š¦ó/+€|ž;ïz_|ù-:ƒ_[ëŠ6ê¬XÓ_ÍÁW\ãð7zÕU—«FB_‘J‡2ÕÁ´þöÛ¯cäÈð‡uëÖã´ÓÎt˜'Æw)õíÌ1ÇœÐö=n¼ñ:œzêɔͥ6<4½uVÏ&†‡'+“Y£­w}U†üÊ&øBr|n:" ýrØ/œâžXÏ8Ï3ŽKûtºzòûù˜7ù Ô®\e,ã³h¿-î“:b0&Ì~W6NuÈ2šÉ½iÆg¢#<Ö¡Dæ}÷ÝÃ;Ä;Œ÷8¾è_Û�¢„„ø½µù±¨l}mrš[_톡ÙðÚ.©›iO¯ÎãÎxuëóI•Ä úƒ‘4‹Û¿ÑÖ„!C† 55M•ÅÙ²y“&„»©äíÇIzHOÚ+Wa×±c±ûn»¡¸¸H¤ÔN=°~ÃFµ¯Áƒ¦=pmX¿iéÚL‰ÊJµû¸ñªdfRr’rýo݇1£F*óš¯ÁWf+#„BÂG ˆœƒ—Ò&¥1½lV²Àöçv<š²—Ç34½V¢i«²²2¥Éô÷D3Qk‘H@„÷Ÿ˜ƒÙë°|{#*ëíØXbC½—Æé$­‘yP7 Ò“LÝ+A•I`OVB¢_ôI &”qøA¸ïÞÛ´@¯ ,XŒûî\•ÄŒ$ ´F³zï¼÷1n¾ñjì·ßÞ>o+Áî»îü·ÊöðÖÛ¢3ñEÛ„Zÿˆ&»í¶;þ.¥ÑÑs™ •öÝwo̘ñKÛ¼çž{O>ù˜Ê†fäî»ïÜ9sU†xÄd)™>:›þ9eþ’ÆDOH&³-e6Ô56ûl.3îŸBbPd—£²dÙž6k>þžxêÖoÓ¢Z›k\èËÔuYD?4ÛQ«Û9Ú9ž6ë=½ïU]FîãBWÏ2MH<S²Ü/\¸¨-Ó¼3Ë—¯p0— ’…Œøã=„®ŸVIDáoÕUyLéi³eëv—À¬=WTW¥¢¦º}ûöU¥„š5q,A+éí¸ËÁ·ÇϲåË±ÛØ±ª'Faa¡Ú~ĈJð.×–™µ`âÀAƒÐ  ²²²Ryw¬\¾ ½úôAVV6’SRQ^^¦R3'$Ä·3!„yøšµZÓRrÏb‰k-é»iË8î«ËS&2wãÁ—Ú ~=#ÆSëküØy=)_•œœ¨²ÒÖÔÔ 55µu=÷AL*I¤#Â)C“Ô H”§gT¸-³%å±®:(“Ì„NA2—ùk.+/¯Àc?§²|E‚AÎ[µ˜ÑWÝ„Ø7ßtµÊ æ ¢3®û×媔ò§Ÿ}®ÄwÞ£²Å‘N�O>ùŒ×k-%œÎ?ÿܶé³Î:¿ü2Suúþüó/\pÁÅ8唓Té$‰Ç}óÍ4URIŽ 2>~ü8D ™É¾ÖZá/™)4IBb`JcêHÆ51ÁlÞºo倿¢J4××�&sKPAžnI\îÇò8صskÕαœë]·þ©2ÊH†;W¥»j©ÌHG²Ï^{í m™c¥\æ9çü8`të–«´»”Ý|õÕ×¶“bF#¾Ãx!¤+Á_.ñø”¡$ªÂâb•aLzUôèÙS 'éÝ"¯ùèݧÆŽ­‚‚K–-˜ѣµaª´Fä’ÒR Ð_e=Û¾}›2Œ 2X=£,^²™YYè™×K™Ùúöë§-¯W륤¤"ÇÕ#6--UK¢¡ä‚¿½:(´ !„à¶aS4EUUµzMJôÞ¸Ú9ÙËÖrÖçiýpf/kYÖŒtMO—¡²²Re†uÎjáÔU$‘ %÷Ÿƒ+ë0oSvT4©oY^¦ã$â ÉH´ðï–ÒñŒ3R•ÅôÇ\ö÷¼…¸ùæ;QXTŒ`FËÞ½ó0`@?dee"EÓ�c$®S[[¯´Á¦Í[±uë6X­6ÊÏ¿üŽ9sçãöÛnRÙÚ|AôÄ­ÿ½^;†*üøÓ¯è üöÛïøý÷Yíæ¿óÎ{¾l® |FƒÙرcpÉ%ÿÄsϽØ6oÉ’¥jpDZÇI“&"RÝ;s76 H Bé*x3—§‹µ6©^sßšD˜†%£~ãfÄ™[š8›ÛþçÅhÛ—û½<Îd†µd’ǽ«ñ|o«º=µö6µºSã0Ï„ ã1bÄp,^¼DMK›åË/¿¦w¤¦¦à†þŒ÷BbÌHL —ÇÓ—dÛQP„ìn9Jì–––hÂI*HÙP_!»ì"Íš*cYÿþý1xÐ õ`"YÉrss‘™‘Žººze6ËÌÌBzºÛ·ïPï³Ûn»jïaÅüùóÑ«w/•--9%C‡ G~þô虇-Û·cà€ã™Ñ`æíø)¶ !„ŽÁ×ìeÒx)Ú"Þ×zŸŽÜìeÖZíXË ÑXSkM%lõ5h²5 ¹©¥Oœ¦ƒÌñ‰°$¥!!5‰i9HÎÎCBZ&ÜÑÙËŒãb(“Ìeuõ- ÉYYY­ë0‹‰$ 8uLŠ!$èß¿/žyêAeîö¹÷¾ÿþÿðÈcÏÀfó½  Ž”œœ8aLš8ã'ì®ÅSú«L¦¾`³ÙT6²ù +£Øœ9ó´†ÏRøƒdK½ñ¦ÛñÛoâÖ[¯×âGÞã8_ºï¾[QzI™zïXG:\„1œeffâÑGŸh˪á Ñu§Ÿ~*®¹æJD“'â‹…5(«µ#”d§˜Ty$B‰%íügÜ®¢¢B% xñû¿P¹ç9¨_±ZnȪg'-)¸Ü¿—û½\;Çõ›VôÛ>Ú¹—±’’*Ô=\4ÃØMÇ šõ‰'Q™hýõ7¯ë<·ÝöŒ9$xï!„Ä*4˜‘ˆÁß çõ%°(ÁL)w¹uÛ6$§$¡¨¨Rb5+3 IÉIX»v úô鋨ùRú*;; Mv»\b k²7¡©IzÁ6潦§§Ã¤-[»v­ª3/)b«µ ä–M›Û­;¶lÑ^s»iA1+ÊÊ+Õ±è2ŠeB!$úÒ RSô@BR¼×õ;£L¥µº ÕPS¸ M µðD³¦mìÖFXk«PWº£m¾%1i½!£÷.HJÏ¿F¸Pg/3ŽËzÉI‰¨QÙJê”sUŠB!¡A2<ÿì#ÈÉÉöi}éXwý·cæÌYð‡ÄÄLÞs"Ž9æptà~~eJ3b±X´˜O5œxÂÑjÞòå«ðÕ×ßá›iß«²?¾òÕ×Ó±qÓf<ûôC*sš7ĈöÄã÷áÔÓÎG~A!ˆÿœtÒ ˜2eL›6]•ÀÌÏÏGii™wKF^^ž*‰y ǩÆÎHCÊ ]´_ý¾¶yÌ,&¨}ʾ !¤+àkiLik‘Ì¡«×mÀÏÃÏ€mSTŒ¢ÝêÞÚ—¸<°åq¨ß\€Ú¹?xÝ U%H:Šk·vŒ8¤RÓ£>„¥K—)Í%ÙÌvìØ¡ ›¢¹²³³1fÌhì»ï>8䃂ª@!¤kàë=ÎÇeq>¼Æ¹™Ö“áUÌ­óÌNƒ,ËׯF«Ѭ•6ÒÀ)¯"¤ëêjUÖ,©uk¸{€p—UÄy¼¦¦F™Ë–®X‰e«Ö¨^¯Ý»wW6M¼¨ÊÉÍAnN,f *«¤ÜR 6mÞ‚¡» QÂIÌfZ`pÄðaÊp–Ÿ_€F«UÛ&V[SkV²¬^½Ý{ô@ж}iY©´,WC™+--ÅIÇ…Þ½òTóøøx—Iœ…µ;¡MN!$Rزe«v¿ŒS÷O $É=J ?òª®è ]ã‹®pž6Ž·ÜÛ+4Ú¬ÝË[ä©§ìeî²”yÊ^æ.c™sö2ç÷­+ÙŽŠMKÑP\ *g’²z wðnHíÞÏçãöE§y2˜y2žé¥2Å\VWߨ:è½dƒºŠBˆ¯t´žq¥IÜéW÷Ò;òÕëþûï‡póÀ}·áÈ#õi]iè½òª›°`áøŠ·Î<ãüãôµÆ®t„‰ß|úé×xý÷PPXäóvýúõÁ Ï=ª^}añâe8÷üËÊÞæ¿þ:S½J¹I!Ð8µPhY]`ÅK3+ƒÎd&™ËÄ\6¬§÷Ž-„"DK|ÆSR_ã3………*›æ%?lAéȃѰq¥Ö:ÈÜIs“ ÉG {ÅOxáÐ~HOOC­}L'øŒ·e„Bb_ôŒ?÷•H'!!~oíE+[_›œ†æÖW»ah6¼:p3íéÕyܯ¡hE&/YÍôuêêêÔÃÐêµëaŠ3ióí().F}m-JJJTiÌÜœ\e�“‡§úºzõ#5dð`UaÉÒeÊÍ?rÄaÅÊU*pׯo_jÓ55Õ­%/ãЫwo$Ä'`áÂùÒÔ«~ôzöÌÃÀA‘׫Ê**´2»*«Ìg#„BHÇ#÷p)—-ºÂbñþÀÒQÙˬÕ%Ø1o: —ürs™P_^ˆmóÀ–Ù_¡¾ÂX^Ê»¹,ÙËôñ¤¤¤¶Œrrm!„zN;õxŸÍebØ:÷¼Ë}6—I¹Ík®¾ß}û1.¾èœ°›ËÑgœq2¦}óþûŸë|ÊJ&lÙ² ç_p%Ö®ÛàÓú»î:W\þO®‰Âî?1çîŽI1"/IñÞd‘½â1iP"ÎÓ¶•}Ð\FéJøj.“6‰Ïü8{>ÊÇŒ†-kµVMskР¹åÕÝÀå![§ózíÜË5k!×D®·ëçjšB!Ñ f$&ÆFé-ZU]Òòr­²Å &AÌœÜ\ôîÝÛ·mCmM ¤‘TÖïÛ·ìÍv,\´iii˜8a¼ÊT²xéôìÑcnjƦM›±fÍ 4={öÄ–Í›µ}×Âfµj¢:cÇî¦í« ÅEŨ©®Â6í=¤áuéòª!T7˜ùc”#„BHxð5€)MÅ\&™ËZ Už³—¹÷”Ì—ò“ú¸”·,[;;æÆ*£ñ+<ÔUaóì/P¸âOí½m>mc<µ¾J_·‘óš’¤®‰\›Û0€I!„„‚Çâúë®ôi]Éé¥×ùlÀÚ¿}ðÅgoãüóÎT1šŽ&>Þ‚SO9_ù¾ÊžæK¹m1Ð]rÉ¿°}{>|áÜsþ}öÙ¤k"%-§ MÂÅûgà†Ã³pÓYÈIur—e7kë\X.Þ/ûjÛ²,&!„¸¦¢¢Bµ±¼Ù¸ ¬Uõhn2d õöØÏå¡]®{[u½ºrMäÚB!¤ëAƒ‰ü5`9¯/‚VæíØQ€ÜÜn:t˜ \¦¦¥¡¸¨ùù;Tv2i ÌÍÍUuâ—/_®5š6cü¸ÝU è "33C ¬WÏV®Z…úcذ¡ª$¦˜ÍFœœ”W”ÃfµaË–ÍÊȶËÐ]´ e‚*¿Y¯í«¦¶^]­ÊhîsC!„sïÔËn[­VXÌÞ¥r8³— ¶ÚJäÏÿUÛVûîÜ rÊ6-ǦÙ_£±¶RÍëŒìeú¸è-1˜‰Ñ?ØëK!„˜L&Üúßëµ{m‚×uëµØËUWß쓹,-->r7ž~êäåõ„¿HÇÀü‚B¬[·Ë–­Ä’%ËÕûJÉPÑþ"YÓnºñ*¼ôâãèÞ=×ëú…EÅøçÅ×hñ¡2¯ëÊ9¼ý¶;Å@G"þ9Üs|NŸŠAÝ,*[Y²6ȸ̓eýrXÚû¸{þö§ó_CC#>øe.GL@cÁFí¦'Ñ…Ö0Œ»úÇå!]®û†üêZÈ5‘kl'@Æh!„èƒO³$bñG\Ö×·”±Z½n=ªµ†G4Û–š‚Šò 8&sÌ&3’R’±iÓFôîÕcÇîŠJM�/_±Ç ÓÖ€Úº:”—•£GîˆGaa¡J÷+¥/¥IuÉ’%ÈÊÎÆàACÐÐØ J.X­X·~úöí§GöÚeåå(*)Enn‚Œò¹Ú2’Æ !„Òq¸Ó¢)d‘Üž;;{YCEŠ–ý »Õ >êk«P_] k} š¬ h–Œ«qöÖÅ&ÄiÚÆŸˆø¤T$¥e"15ÞTHCe 6Íúý&ŽäìžîÞÚ帗Ãõk³Ù¤»½Y]#W ¸ÔU„BˆÿœzÊqZ|d”×õÄðuý ·ùTsÔ¨áxä¡»´øHoøÊÖ­Û1gî|Ìý{V¯Z‹M›·¨N{®°XÌ*+ý°¡C0aüî˜8q† èÓûLœ°>þðuÜ|Ë]˜=ûoëJ¹Ì+®º¯¿ö ’=®›×³‡*ÿùÄ“/€DK¦ŽIQ!„ÿ‘çûªªje`ú*i¬Å‘qʪÅc½\®\ ¹&'i×F9¤¦¦2C!„t!h0#Q<hÈ YFÄÈUS× zÉöéÝ iééè™—‡M芬¼º éé:t(ìMv¬XµRÍz÷ê…&-P*ÙJ$ËYBB¼ÊlfµÚ´ÆË•1£¤¸D½ß°aÃT+ñüùóѧo_dçä¨u ¬²žÕT× ¦¶ÕÚ¾VÙ1l—ÁnAÝ}ŠqB!$ôx2®—ÕÕÕ)ÓºÉd4‡¹&œÙËêKw hÙoª<¦'l (+؆ª²BMßXaŠ3Á¬»dÒ0Åŵ}»Ý{½ µÕh*+†]ûÌ&³é9=‘Õ£7âÜ7šŠYmóœiè;î¤vï×áÙËtãÑÐ`S×H×Vž´u!„♜œl\qù?}Z÷¥—ßÂÌ™³¼®wÀþûࡇîôjÈ$óû7ß|/¿žŽåËWÁWl¶&lܸY ßÿð³š7xð�}Ôá8öØ©èѽ›Çíås?ÿì#¸÷¾ÇðÉÿ¾ô¸®dO{ðÁ'U†2oœ}Öiêó¬Y»„BHW&ÙˤÍçÃß¾ëÙ°®^8SK™k}­88Fô§.ãr-Æb-Ù˰QÚµy 9E]«t­-Nmë!¹‚» c7„BHtÁ™¤Ó ¶<¦Ëššì(ݺ öfdeç¨ìcµµ5غe³j`mlhÀ€ƒÐ­[¬_·^•ÔìÙ£‡&\[2a4iÁÉÊÊ*Ä[â‘•ºú:USJDȾ¤q6>!;vì@yy9ÆŽ‹ä¤$¬]½6íA§ªºyyyè7`€¨ÌE^ï~¨*/AC]:>ÝG!„ðÌýVÊZ××7¨W‹¹%{ÙN:.{Yce±Ws™ÍÚˆíëWbÍ¢?Q’¿EMû‹lS²c3Öjûؾa•ÖXë>Sš½É†­óD]YÃüŽÈ^¦¯—¨i1»}ç5 j2B!¤…]{©*é É*öâKox]ïøãŽÄcÞãÕ\VTT‚G{‡q2xèI¿ÌeîX¿~žzú%L=òÜy×C*#š'Ìf3n»õ•uÌÿûô+eó†ÅbÁM7] B!„Ž<³WW×hí;µ˜–0Ö’ \1n„q¼Ù±˜cWY®õ6;Šj­ØRÕˆíµIkï2Å!|ï¯LfêÚÈ5’kÅ8 !„Òu ÁŒD=b“R ó§Á²ò[Ô6Å¡¬¢)))ÈÉ醔ÔTätë†uëÖ ´´=zöTYÊìÍv%|‹KŠU†³Áƒ¡ªºëÖ¯Gvv6 =‹´¡™™™Ú:‰Êd&i×këHÙq& ÎlÒhm(Ñö³qãX’ÓaknBκŸP¾n2°‰É̈'Ü+(Ð !„Ðáî>,™±„¸¸–Þ“‘½ÌZ[…¢¥3=šËÊŠó±jÁl”n‰F}”lÓöù§¶ï·ë‰ÉlËßß¡±¶²m;Ã^ÆC½LÆåšHI,A2ÄßÕ8!„BÜ3hPKÆ/o”—Wàßÿ¾Ë«¹[ÌewÞq³2Y¹Câ(o¾õŽ>öêU×^¡D²Ñ‹!ì¸ÎT†3£fpÅå—]ˆK/9ÏÛnq×=`óæ­^×›4q&Ož�B!„8âkö21-‰îøz–Ö¶²Ë°•ì�ôò˜®Àý²[®…«T£nm£ëʱ¦¤Ö¦fŒí–„©Ó±{÷dÔXQRgC¼).<ǧ] ¹&rmäɵ’k¦ã)FØ !„ýÐ`F"_MW2ˆÁLÊCÏù #7~‡!ëÞÁÐÞ)°™’П‚’Ò ìØ¾ý T%0­ÖFUÖ2G¾êq1bøpUFsÁÂEÈÎÎÂèÑ£PPXˆåËW`À€2d°êùZ\\¢–'ÄÇ#;'[e5[´p!ÌæxôìÓ©9yèÕ0jÖþŒïïAú²Ÿ±ãïÊüæ- I!„ðák�K7­‹ÁÌSö2O™Ì‚É^&¦²’Ànktó9ìØ´f96®Z‚&—ÙÆ‚+)Ðdµjû^ŒÍk—»=gR.sû‚Êlæxlð‰`3žYÌ¿´ƒ—„Bˆk.¼àÿTÆwo<öøs(,*ö¸Ž”Å”l`žÊ­_¿§ÿ㕹,Æ2gÄhöÊ«oãøÏÂÂ…K<®{é%çãÔSŽ÷¸Žów>è“¶øç…gƒBéªû^SS£ÊcN«íަºÆÖLZpÊ­åø/–—ËñŠYµ6­ •XU\¯âM§ŽÈÄ«GôÅŒÓã×Ó‡àÇ À/ÚøÇÇ@j|œ2™!ŒÇ'×F®‘\+¹fÁÀØ !„=Ð`F:…£óú6›Mõ€­Ø¾¶k!I-Ò—~ŽôOÏ@Ư׺üôÉ6¡w¿¾(©²¢¡9•µMhl6cÄȱ0i”ó,Bjz&N²²2,Yº =ºwÇÈ#°~ìXµ ƒ‡ F¿~ý±výf”×4">%¦älô:Fkà­Ã¦ù?!w×è;ãfŒûòŠWÁ”�”.ýS•ÐÔ3˜1[!„™ˆi©±Ñªz^šµÆÖ@²’ùºž»mÊ7,„µ¦Üå2»v\k–.@q¾÷ÌÁR´c«z/»›L%õRÂsõ\Üf‡ñpd/ÓIH°´]+j&B!$0òòzbê‡z]oÁ‚ÅøâËo=®3jÔp<ôÐ3—}õõtüãÌ‹°zÍ:t4Û·çã¼ ®Äo¾ïq½ß| ¦LÙËã:Ï[ˆéßÍ€7&NØ{ì>„Bq»çy•L@kï™·xŠí káfHg:µ~Û€vC,.—Бô,®³aUQŠkm8¸*ž;¬/~ÿǼwTœ?6#sºN”ŽëÇwGA¥U¯núãÓÞÑZ´Y]#¹VrÍäÚùs­ !„X@H„ãI€ŠqK•uZõ7L͈LIZ#le9²jE·­¿"~Í“0ç Ecü XzïŠÇÂÖX†ù‹·a—ѱ۸=PWoÅš›U¶²é¹(«iDII "/X¿n ,ÍVŒ’¦ê-Xùׯè—ÑŒ>õ›a[ÿ'úåoFc… õ@“];0í8µ×Ê­kP¾e9vÙCõ䈗4|®¸8ß3ø»>!„ÒÕð×Èm—û´LÛíMˆwh í˜ìeUe¨Ù¾®ÙŽ5Ë ²¬DePõðél3ŠÒ"¬^:ÃÆNtùže›–#½×$gv÷9+Y°ÙËd\eZi-s.:011±uu!„â+’½L/;í1ÝßÿÀõUJJ ¼ÿv$µÞ]ñÚëïâ‰'_@g"ŸE2±­[··ßv£K3œÙlÆý÷ÞŠSN;;vä»Ý×Ã<…)ûNFZZ*<!YÌ.»âB!Äs¼Æ¸L2†Ê}ûûMÕ0í– {a£öìÞµòdH¦ÞÖŒ-UR‰Ó=ïš‹‡ebb^ŠOûؽg2âФ[s˜bÍÖF˜4=ôý¢jì9®I];_b4ŒÇB!Ñ f$âð§qXÊ#ÉGÑŸßÀ¬=g$ˆÁL{5iqR»ö×Ý,:µºqëþFÿø¿aÙü10HJ6cRU ÌKó`ÑFâ,H¨³¢Û†Þ°$& ªª iuÕè¾6]‹DÖ!©,[’안³V¡§UÛÿÀÖ 5kCv8¶¨v]“µåäxMM(^>݇ì®A3çÏCQM!„t;{Z6‡4+™¯ë•­™ëVmXµ å¥EZ±cƒªe%Ø´f Ó~¡v¬EËg£ÿ^Gg:Œ‡:{™>n2·4ˆ fއF]E!„¸CŒQÇ;Õëz_ó=V®Zãq»ïú7 èçvùC?wÞýþ’žž†]wÁƒ"/¯;’““Õ|‰cãÆÍX¼d9JKËüÙ­ÊÆV_߀î¿MÊœÉÈHÇ÷ÝŠó/¼JÅš\Q\\Š·ßù—^ržÇ÷ÚwßÉêÜlÚ´„BHW!˜lU’­¼®®^•[œ›¸ ¬¥Å*ˆÒŒØÏ€¥G0ŠëšP^cEfŠÇÍÄ)Ã3qÜL¤ÄûJ4Ç!Þ{sKyÍ𧮑\+¹fbàÏȰûT‚ÝŒåB!Ñ f$j‘«Õ†ºŠb4l^†tí¯9>д³£h=+†³ÖAéÛ†&$VU¥U0å¯Aš6/SÛ¾i»&‹µñlm<W¦w´l/ÓÍæÃšÊ ,ûŠ—cÑ)g×Òh,ƒƒÌâµõŠÎDӑ竆ëÔÔTŸ„2Å4!„|5®ëå¬ã—¾g/3Žû›½¬®t;«KáŠâüí(ؾÅKæ²ð‘¿m3Ò³rЭgïvËê* QU´iÝZ–ýLG?¢­ÒÓӽ톺ŠB1pØ¡zÌ8&H¼åÕ×ÞñºŸC9Àíòç_xÝ/sYVV&Ž<òP5õPUvÓ•̈Üß׬]éÓÂW_MGAa|á»ïg !!÷Ü}‹K}°Ç»âŒœŒ·ßùÐí>Þ{ÿœsöi*ƒ›'Ž>êp<ûÜ+ „BÈNÜe–—g|™þ}ÁR4 8MùëÞ2“¦EšìØReE³ö:ª{2.Û=§ÏÂn=’(UvØì†r—a¢©¢Mýw×®Ùç8rÿ½Õ5Ô;c1ŒËB!±C×Ê-K"Š`ÊX úGéê¹07Ô ÁX$AX«N5µÍÜéVÝ(&6Ë&m°JÅ¥øã˜ÍÜ2È´”»´ÌeˆÛ©ÉÛ eÚr©.¡¿§¹5ƒ™T]¨\öª‹·iÇÛ趬¯°^=!„Ä´.©ññ¾õ¿eö²ÊÍËáú˜±nÕt6ëW.ƒÍÚèrYéºE­c“½LHLˆoëh@mD!„ø‡/Ù˾ÿá•%Ìb¬ºá†+Ý.ÿêëéxþ…×à ™™¸þº+ðÝ·ãæ¯ÆØ±£¼šËi¤6t®ºò"Lûæ#ÜqûMèÙ£;|AŽï•Wßv»üòËÎ÷¸¯ŠŠJ|ôñðƱÇÎÆTB!]_ŸÛ%S©<ëÏ.Ðâ ‰h¶K¯þf´wI§£o¹(‘e MXST‹âZŽœŽ·Žˆ¹g ýSze.òk¬¨·Ù[1„ñóÉ5JLT×L®\C_`,‡B‰^h0#…?ÂR/Yø÷*c˜TŸ“—覸íByòM-˜j¸óã YÈÚÖE˺êМwÖº½¾ÌÔú¾¦Ö,fr<ñM ¨ØØÒplµZáîóRTB!ãï}Ô¸¾è ™–שü;&{™µº•ÅpÅÆ5+asÒÝ6®]årY}y!ªJ;,{™ ר¹ÙÞvÍv®øß�!„ÒèÓ§öØ}¬×õ^ã=Ë/¾è·¬uë6âž{ƒ/uÔaøê‹÷pöY§µe»é pâ GãË/ÞÅÿyªO¦®çž Ï[èr™讽æRÛ¿õö°Ù<w"ìÕ+ãöØ„BñŒ<ŸKBi?YlJÉò×Ö.Óbijý§ÏknŽªåúZÛk±¶¨Ù‰&\;¹'~>}|uâ`œ5:ÛïR˜îØQ­Å’lv… ëçÓÞA®•\3¹vzRB!„Ä.,‘I¢ŽaÛ¬kc}-*—ÿK‹ÁLe,ÃÎæ[% áh8SÓvmh5…)£™ ;3“5;:/›;gèû6˜ÑŒÆ2ã`i-“¹íÏiè;ñ0ÔÕÕ!)) ¾~Nöt%„BB‡» —Ífk].u¯%c†çûo(³—Õlp9¿¾¾…;Ügéh¤Tf¿A» 1©}ãoÕöµÈ6±uÊ1{™§Lfd/s¾†rí,–ö4ÔQ„BH{Ž:òP¯÷ÇU«×bÅŠUn—K)ËÓO;Áå21\Ýtó*öቄ„xü÷?×ãøãŽt¹|íº øóÏ9Xºt¶nÛòò uoÏÈHGŸÞ½0rä0ì5y"Fá°˜Ôn¼áJLÞs<n¾å.TW׸=1©ÿûßwá³OßFZZj»åGq0^|ùMlذÉåöÅÅ¥øýÙ8`ÿ}à 1ÑÍ›¿„BH¬L§/ië±Û›±tÕjT烽ªÔieo;‹ÜåÒNÔØÔŒÍ•šXjÆn½SpéÝpòðlä&{ÏÚ;j¬Ž¡­0~¾&íZU÷¥]»ù¿ëXu-¥¹ÚÌÏØ c9„BHäCƒé‚-ÙØ(å&í(_¯éJ· !­Å`Ö–E NúÙ}Lô©j?–yº“L_ÞšÅLoãlËpÖn‡­Û¶Î×Ëbfq­ó´¸)ÊÏFc]êU« eB‘4ÚÓ§¯#Ž>úH$&&‚B:Ý`fo’×–à^°ÙË<e23j€Úb×&²í›7¨àªÉ½`KÌ‚=¹’sJÌIéˆ3Ç·h» MõUhª-jJaª/©®Ìç}‹ùn›vLƒ‡j·¬2ƒÁ`æið ãzî¶‘Fa³ÙtùqB!®Ù´i3~ûíwì±Çî=zHl°×^“¼®óÕWÓ=.?óŒSÜf{çݰzÍ:Û˶O>q&ï9Áa¾ÜÓ§Oÿ o½ó‘GƒÛòå«ðÿ੧_ÂÀýÕñœpüQÊ´¦³ß~{ãµWŸÆ¥—]‡’÷z§ °Ï<÷Š*ÍéŒdL½àü3ñß[ïs»½œ+o³}öö~Î !„®‚»v!iï–l.‚y@7تJÔ´§ˆHs„/—xNyCŠ+µ8·SgàôÙøÇ¨lÄ›ÂÛ6T 3³ž~Á5¡úüvkâ{Ä’E¿kËµÔ fëÓ<Fb€‚‚Ìž=G{Æ(AZZvÝu,FŒ›Ìû7V¯^ƒC==zô�!¤ÌHT""UÌ(ÅËf© a’¸ÂÒšÁL|_ºÁ˘M ͆Æâ¦V줒u¹­|cqm4ž9­¬¯Û6´Îs™*Ý©[\U!Ê7-GòèÉ=8Ôn ÂÚ‘ËB¼¬¬ S§«ú¥ãÍ7_õkûxŸ|ò©üñ‡1eʾj|ݺõ8í´3Õøÿý߸æš+,³gÿ…ï¾ûK–,ÕDe¡:æÌÌ 6ûì³7Ž<ò¤§§ƒ8òÕWßàÎ;ïQãï½÷–:_:/½ô ^yåu5>oÞ|Üwß݈F^}õu<ÿüKjü»ï¾Fnn.Hx™4iuO8ñÄãqË-7_ íºÁ¬É.f%w&²Ö9>f/s·kmšÚgø"…;¶Ášã“aË{f$¤f"IÓ;Ë|I€%1È쩾/¢¥êªËa®Ü‚¸Òµš¸ªóú^Û·bðБí>­¾Fû,•ˆOIï¸ìeª·@‹90ÒõÓG}‚‡z´mZ4Â]wÝX¿~N=õŒ¶iÑ?ýôHçã|}}áÒK/œ×6½pá"\xá%j\ôÏa‡‚®õTçRYY‰sÎ9_e2›ÍJ·2$º‘lêcÇx6 ŠÉkÚ·?¸ßGb"þqú‰.—•àù^‡'ÄæÊ\&¦±;î|+W­?lܸ÷Þ÷¨*Wyë¯wØïˆáCñâ ã¼ó¯@UUµÛ}|øágª¼æ°¡CÚ-;rê¡xúé—•Í¿üú»Ê®&YÝÜ!e2¥4é¶m;@!„t5|Íj&m&ÂÒ ;š 1Ñ–¸LÚ¡ìÚÌíÕV4ÔÛÐ'' —Mì3Gå`ï>©è(¶WÛdŽóÚÑ/TŸ_Je.­h™Ò¯¥7:#Nc|~—Îí~ø.úöíãu»åËWàì³ÏWãçŸ.»ì®…ÄRŸxâi|ðÁGj\g¿ýöÅc= {ˆ¹ìÒK[Ú’ß}÷}­mó3!„8V$¤Sñ'«™Ôr·YQò÷ Èïy‚Å`$Ó‡¶Z^Œ™Éš›v–Ï4¢ b&ý½Whvz5®ï\.ÓdÌb&¥2ãš±í¯o•𨯯qMvv6öÞ{²_¶l¹ê5ï+ÿñÇŸÔxNŽìg/„ƒ 6âÜs/ÄW\£ÌR7nR·äÁ©¸¸³fÍÆÃ?†£>ü?ßÙ¶m{ÛøÖ­¾+HlSUU… öRÃsϽ�BÂ…ž+ÎíT'œÙË+ àŠÊ²RU"ÓÍæD4åíÛ#ßgWdäöT ˜C‡î‚ñãÇaÊ”}T睊SWƒŒË<Y&ëȺ™Ýò´mǪíÞ·›&X<gŽlh¨Gee¹Ëeµ¥žM}ÉJæÏzq­½}us`4ñã3”yÃ>ÿüK ¿üòkÛ=uΜ¹ Ä•m¥å¹c1±Àî»qÈòåŠ —¨Òî8ðÀ}U™JWˆÉË[iL)‹él.ûð£ÏqÖ9—øm.3²eË6\réuxîùWbKb{ôá»Ý˜ï[¿ñ—_~Ëå2)Ã}䑇ºÝÖjµá÷ßgÃ{NB!„¸FîÝ[—{ò&KØký{^ŽZÊ`Ú±®´´a×îIxäÐþ˜sÖp<{h¿5—U7Ú±£ºÉ–Ž3oÙk«´k×]]C¹–þ–Kí ¤ñž{î!¾ðÚkoà½÷>h3—I¤t29äƒAbc{¥´ý²mŸ0ƒép‚—Ò(A¼ªëaݲR™A²—éÙÃÚƒá¬ÍL¦›Æì­U.ãv6ùÊaéÙÊôÌeÊlæ”åLÕŒóô÷0šÌZeæVóY¢v|å+æ)­§{îêÙÊÜqÌ1GaæÌßÕø´ißâÒK/öi;É(&=‡…#Ž8<,Nrq¬_wÝM¨­­UÓ¤–†ú~ýúªL"……E*óV~~jjjñàƒ`ÍšµÌ¨ä#_üO%Ô¤Qâúë¯!„t;{žùb"C»qOxÚÆZ]ár›²Òx$³?šûì„ä4eÎ8p�úôé­2“´¼Oûƒ“ì©2ddd gÏ–”Þò`,Ëb–.‰‡5£°}¾v�î Þe%ÅÈÈÌn7¿±ªÔçìeÆñ@²—©ñæ–Ïhì5-ˆœ6m:N?ýTŸÖ—àì7ßL‰|Î8ãteàôË'HGžo®¸âRõ[5qâ„°uÞ!ˤ‰ã¼®3gÎ<Ë>êp—óåYü£¿ð¸íQG†ã;ÒaÞ‹/½‰gŸ{¡@4Á /¾¡=—ãöÛnlÓC“'OÀùç‰W^}Ûí¶RrS²¡IÉMgŽ9æ¼þÆ{n·3w>Ž>úpxbâ„=ðég_ƒB!í‘6›­ [¶mCIºv/V³fÙ³\%èèåêUÓ¥õ6”W6"%Å‚†gãÿFçàÄaYè,¶T5¢¨ÖŠDÉ`ææS„úü4ÕV X»vr öﯮ©õ#¿ÿž§:ôü± Ä’ýNHMMÁK/=áÇ©éh0S’À óç/ÀªU«qæ™ÿЮ}Ç… ‰th0#I»FDÒ('óÊ×/R™Á,æVƒ™q¥¸Öò—ØY²ÒAñÚ3’µ•Ä´£Í,¦¯£O©]ʳYËÚJr¶ŽC7šiÓrŒë—£|ëjÄ­LrÁìX6žIYKqþK€úÛo¿Ã%—\äÓg>ýû¶ñ£ŽšŠP#ïFs™ˆ I…œ—×Óa=¹63fü‚|¥¥eøôÓÏ1`@%@ˆg$õóÏ? B 7ÎÚBŸŽ“^Mdg/sÎdf­sÝ+·ªÂu–0u„½wG\÷aÊ(6vìôïßOíË] ¯›œœ¬Jž <›7oÁÒ¥ËPnž Sjwط̇^†Ò—ck¬qßÃ8ÔÙË`ø ®®e$k$) ½zõ|öÙ>Ì~þùW•MH9rV¬X ™Lœ8¾­D;!Ñι瞭;ì¾ûX¯ëÌ™3ßí2éTµ×^].›6íÙËäÿ¦®r˜'™ËBe.3"F.y¿k®ÞYºèâ‹ÎÅwßÏP™Î\!æ´ÿ}ú®û×åí–í2dÖ®ÛàrÛÙy6å {ì±+!„XÆŸê4Îãzfòu[ó—5MØÜì ·\Ú|š´¶U5ÂÖЄ¹I8w¯^8kLÆõLA°4Ú›1s}%&ôKCV¢ÿè·VYQZß„>iñn?H¨ÏOsCLYyÚ5\­ fÆö/cœ&’’.Hç0Iðä“Ocß}÷F·nÝ@ˆ+ä9GÚúÉX¦›Ë„®– ¤+!µïºëvBÚÙ$"ðçDnæªLÇï_)ãV¼¥ÅÀ¥JSšvfsh ÆÎ’•*é…Ýɦ¯y3 N´¶iç¶â8C¹LìÌ`×j0“!6”®œ«>‡¤ßuõٜǻ"òàqøá‡©ñíÛw`áÂE^·‘ ,¿þú›ße—!/È5¹ë®{ÛÌe—\òO%,œÍe‚ʃ>¯¿þ ²³[z*=ÿüK(++!„ðào Óݲå“ü5‘¹Æ›YÍZWír»ºšªöû2™a<¦îÃTìðÃUf9æ`‚²­ìCö%e4‡ ÛÈó }µÒ>Y[ãú˜­õú1–½ÌS&3W:Élvm03ìßE88è Ôëºuë±xñŸ¶ùüó–Œ0£FDnn!„@<h€Çåò\½tÙ ·Ë%š»Žr_~=ž¸ð‚³”éKgùòUxèá'.$ãØÌ™³Ú¦ g®øú›ïÜ–Þž<y¢Ûí$ƒ¹;ãšN^^¶L³„BqD¿ÿn(ª@\JºÖv#ÓÍ7H›O}“ëK걩¬ãóRðÄð÷¹#ñøÁ}Cb.ûߪ2Œ{c}b^_\Œ@ØTÑ�{cSKuŸ:7rÍÌ)iê î4U$q饩*8UUÕª !î0þ=3.G!Ì`F¢ éU*å1ë«ÊP¿~1RÍâ"ÞYêÒXÓm[«$ãhn¿\•È4íÌx¦Ìhmõ3[}e†iÀqzæ²6£™S©ÌxíXóçÿ†!‡þŸ2˜ùšN³«–ÉüðÃÕ¸”eÙcÝ=®/æ2ÝüŽìeþ9»­xòäI¸ðÂó½n#¥Ê®¹æ*Ü~û]*Pÿå—_ãœs΂?Lš´ú›?ÿüsT¶´9sæâÍ7ßVfš´‡YÉ\#B»îÚÒ]þV$뛤u^½zµZGÊÛÈ9‘,)ÞʆJIõ+©¡ Uãd›<yOœvÚÉèÙ³§×c– 8|ð‘Ú‡â±Ë.»àÌ3OÇþûïçq[1^xaKÐÿ¾ûîÆa‡Òn½¬ØŒ?« 0’é.== ½zõR׿´ÓNÑD~.áÕW_Wf@áï¿ÿTfÖ·ß~ßÿ#vìÈ×µëÚG0N8á8¤¥¥!JJJÔµš5k66lØ ½_½2%öïß_$5·ô’0rÖYç©Ì52ÿ‡¦yü©®®ÖÎáQêœÉwèå—Ÿo·N ×Üù\mذ¯¿þ¦*#+eNåoîŽ;nE ¼ñÆ[xæÇã}íµ7Õ H ÷Þ{Ëíö+W®Â[o½£¾+r<99ÙÚ÷i"þïÿÎP™š¼Šï‰.ä÷R°Xvö½ð¯¦ÿÙËZÞØêrŸõNFtæAS`Êì Æ©ï€Ã~Ú“÷Þ ®¶‘ß)…&e7çÌù–Aû¢qͯ€ÁìÕØPïrŸv›ÕÍ{¹÷||Þב{š½y絋$»ÕË/¿¦:KH–Sýî¹—ÎÛ’Eî?RÜÁÜ+/»ìJuí'Mš€çž{[·nÓ~o?Pï+ èii©*‹šìÃ[ɼ@îsΈ¾“}|÷ÝÚ±lÕ4t#z÷î…©SW¿éò·¼÷Þû«u¥œŸ»lKrND‹É=}íÚµÚ~ëT&ž1cFk÷¬#qÀû ¦‘K ×öÊ+¯Ñ´¬ãßÍe—íÌ"ôœ†ë®»FµØ‹/>‹qãöÀ×_OS÷Ö¯_¯¾o½zåaÏ='©íäZxã?f)}ºdÉR#>Þ‚=z`·ÝvÅ©§žÜö{¢;®¾ú:u^DóŠÖñ§×¹®µ/ºèm¸ ,TÚOt¿üôèÑ];å¼Êñz£´´T=ÃüöÛزe«úžwïÞ ãÇÃI'€Ñ£Gùt,ò¬ñÉ'Ÿª¿ÙM›6+Múå—Ÿ¶o£ûë¯ßÕ³†è°~ø ……E*à-Ù–e?úwL´¬<GÌšõ§ÒFòw#Ç%ßw×@ÿ=òÿþ÷!Ht#×\4±'V­Z«}Ÿ¬n—K™GWlݺ]ÆÜ!ƲSNÞYvH¾wÜõŠí„ ¹?Ü}Ï#øò‹wUÆVáàƒöÓžh¿g›\nSRR† —¸üœ{î9ï¼û‘Û÷[¦}þ~ýú¸].÷˜þÚòÕkÖÄ.R>gÑ¢ÅêY\îGò êªc"!„t|íô%Ú@Ì[0YÐ,ûÎiœÚe:jy\k»SI}*«ZÊ`ž4*gÎÁqCCWsGµ×ÍØŠ÷—–hAÝFô‘ƒ©ƒ3›*Û>G³ñó¨†éPž?1™i×N]C´è½HÊV押¼<õLúþûªÌñR•æ ƒ@°üþûøâ‹¯Ô3°<³§¤$«ö‘ÜÇwŒ6íhD,**ҞߎSçBÚÅn¿ý¿.÷«?Ÿ O>ù(öÙgïvëH éØcOTã'žx<n¹å&tÄgp>F‰%¼ôÒsêùóÝwßWí••Uê³Ég4"qx‰ûH)ÂmÛ¶+3—<GËsª¬»ß~S,ò÷øË/3µÏô¥ªT¤·HUˆ£>JÅÛâãã¶‘Ï~Þyÿl·/c…ðÖ[¯©¸/c.Ï=÷”ã¯>»Äׯߠ=·$©XÛUW]®ƒîj=‰Èߨ<ïKÛ›tœ>|¸j£8à€ý½¾g°íÛ“8Çü©ý}m×â *¶'1‰sÈgðį¿ÎTq,9Ÿee媭oß¾Z[áÕfé©-âŠz¬ÆÕ÷I_&m´\pžŠ)ɵZ¾|…Êxço›”´eéÛ˵’¬œçóÎ;Gý=ýôs*®#ŸyÖ¬_AHgBƒéP‚I•,èå1ËÖ-D\m%̩ҌCZs³a¼m?-f1™eÒ§u“àØá¢U;ˆoCö³8§¶b£™­­D&œ²˜iƒè“²E¿¡¶¬@ï«D4Ž2…j{FŒ®2‘­]»?þøn¸á_…Âôéß©W ÚŠ05Ò¸£#¦1_aúÍ7Ó4Qܤt0ˆˆ{øáÇæI£š/ßxã 8�7ßüÌœù»Ã:Òø(ƒ˜ðž}öÉvBYGŸxâi%ˆtäû¦o/ïÿïߨ î#áj÷ßÿP[P@/y8A„–4(Šˆáoü·j°3"ÂT^Ò÷Øcc÷ÝwC0H@ø¢‹.SŸ]GŒ¡R¢LÞG„ÞO<p£¨4pß{ïý¨©©u˜/‚2ˆà—ÆÜgžy¡¡øØcVdrm~úég5펜¡ÖÓ·s&×\¿Á+¯¼¶ÍäÙÙÈy“¿CãçS„|åAâþûïöø`ªóB¢³2˜´7…ùn"3Ìõ’½L°7Ù|šß,Y}´àÑdõݲÏ8ï雦pW^RæË<¹‹Aø?f£Y{ï†sÚÖ±¹1’µÌ:&{™`Ò„–½ Q‡ƒ÷Üs¢ ŽHpèúë¯õL‘ìezÀUŒ×b\ñD¨î•rªÿúkŽ*.÷rÒÒFT’á ÏS¥Ì]è}Έ×Ä%AçùÏ>û‚2M=þøÃðFAA®½ö‡{ºPRRªô‘ b´‘ûCNNäöDíH¤#|¿úê‡yrþeøßÿ>Ãm·ýGq˜ËmEK‰6={ŽÃ|¹§Š1]¹7‹¹M \þ"&°ýëFµ?i¼þùg‚*i"Çr÷Ý÷9üΈÁRù{Cݵ×^åÖˆ8oÞ|í™åævš_ä2ÈþåsÊçõff¼é¦[T‡/HÀõò˯VçSGt¼åoåþûïQßånø·ƒV“¿ù\ò>>xoH‚ö$²8°¿×u6nÚâqùø ®;~Í™;ßãvGyh›ÉK˜>ý'¬\¹á¦@»ß¼ûÞ'*{š ß½Ž?>ö¬ÛmæÌ™çÒ`6~Üîm:É7n†7äÄŠÁ¬°°P‹u|«ô€4ÔÈs²4€HÕÞ{OÖ®ùT£è*TVVjψÿÕ~oç:Ì—ûÆ™gþ¤ósç÷¨q餌±ÝFÓ÷wß}p‡GBº:z,¹ØfA³ÞÏù–ÛÁÓ¢Øå¨¶V6¢©¾ ý»%á½¥ f7ìÞ3¡ä¥…EøïÌm(ª´ª7ÎꞌßÎŽ¡Ù‰„• - RîÂ2aš–k'×P0¶D*ë>ß~;]™¨|ðaÕ©3## ϦrÏ‘ø³yFÔÛGÄlõÐC÷;’ÄH$íaó—D®v‰… ·M‹æpe03n¿ß~û¢£>ƒ+¤ýäÑGŸp»\tµfÞyç=‡8¼ ?GËóªÄÂî¹ç΀;ŠOb[31"ÏÍ2ˆ!N:»K,EŒW…|Gn¹åVÕ†£#ç_:è‰ÑèÝwßTûò˯RÆ2ù[vAÎ=÷,\qÅenß#Øv1‡ÝzëíÚ}$®'1MDëŠæuF¾_Ã’ø§«ÕªþÖecݳÏ>…Aƒ¶Û>’âŠÞ¿å×^{Ï=÷¢Ã|c›”Ä]öÝw·ÛËwA&‘¬|¤Í÷á‡ï!‘ f¤Óñ§4‘ܔ䯻ý¯TiLÉ &3½­WÏd¦›ÌÐ:Þº¸Å;Ö„6#™>oçHË2•¹LÊh:%|ŠÓuy³aÝæËââvf2L†yRÆÓ\[ŠÍ+‘ѽº‘3JEj-úÎBDˆIQüûï³Üö‘@žž•A27Ó°äÉ&ˆË\Ý}ELq’ý#X¤ŒÖ›o¾£z~rÈAHLLT¦É(!‚ðÞ{P=DhH°L²GIö1è}öÙçêŠø—Ì’Á.O=ÕdïÖ-Wõ<2£bŒ“÷¡&"R.¤wÊAÐnÓ§¯ ý‘#&6é]"Y³¤×…¿4x¾ðÂË*CH H�ûÒK¯P{‚4‹™PzÈï‚<TIC§<ìˆpýôÓ‚Ê0&û†\é!欞={¨ž-"¥Ç‡ˆØ‹.ºTÏoÓœôÜùïoWÂ^Œ¤aV2ÚHï éÙ †I¹–òþwÜq·&.w>ˆÉº?þT[O3Y.È5“¿#¡¸æ:·Ýv§z=ûìÿÓ´wU¥_‚Íî&ŸKzëTUUáâ‹/WóöÝwo•ÉOï€+¤qUzWIc†ìC²™Èߌœ iø•09§Ÿ|òKA(Ï ‰œ5ˆ]›V3¿²—ÇýÈ^æ#朰tß“&‰¹Ìyw&3y/ù­™3§¶ÊØK6ÀwŒÆ1´÷¸¥ë55é½ôí¢C‰Ž:õ`‘ß$ù}’³®û„nî‘{ª4Ú:ÝŒ„ò^YQQÿüç6•¹HzïIÖ2éE*÷0¹ŸËo᫯¾¡ô‡soÅ`îs:ÅÅŸð‹ÛÌ:òT”ßf Ðè½[yäqxBt¢ô8•û¶ü}L™²öÛ} êE(û‘ó+½(å!&4É€å­÷cg̵½ùæµ€\ ~ùåW¼ôÒ«jÞÕW_¡² Æ’uF¤ÁT­rîÏ:ë -à7H]wÑÅ¢)ÅÔ&×Yz2;›“äÚKf1¹w r?–Þž¢£å:H¦Q JË>$à,_Þ²ù‘@äUW]«zòÊßÄ /<T†É(\ &Ÿþ¹*K°<§ÉqÊyM-Áq™wÍ5W¶Û^>§˜¼ä;"Et°èvÑÁ¢MD;Êß›oåó‹±ÔbØ@ºœé®_cùþ¸B¾0?ë¬3UùdùîÈ÷CÐìÝk¯Éšv|R›èùlò÷ b¹¾òL*—¿úê³ õ‰lù`öñd’’¿ÿýû¹\6÷ïðÄQSu˜~ëÐQ¼ûÞÇ8÷œ´•öœ:õ<öøsnãPsæÌÇå.ÚhÄ<Õ£{7eZsÅÆM¾Ìú!¸W^yÝÁ€.è†gùí”ø…˜jå~ã*“ºüöËïª ™½e[tnºé?ª‘Oí#÷¦êê|ðA „âý9·<.Í­×: “¦×ëlvä—7¨ÃžýÒqƨ\œ9:¹É¡mN]WÖ€«ÜŒo–—"33æø8$[Løý¬›Ë„Í•ZÛY»cáG»våq-%Á=Å."Ñ2ééé¸òÊËUg#é„#íQÒ‘*¤Ã‘˜ïi£‘vyÆ”çxÉ&F"y.¼âŠ«5­ôšzNÖ3˜<çJûƒÄJäÙΈÄ,ôŽä‚»ìöºÁL:wH椎ü F¶lÙ¢ 3ò<{Ê)'©Ï#ú{À€Ï$Ï>û|›¡F²-ŸpÂñªmAŽ]:KI{’˜ Äh$Çâ.c½'¤mAbBrÌ‚ÄÖ$F%Òä\ÿôÓ OÃÑ9çœ>x§-s˜³^AÅ]… q³@vɪ&ÙÇ%î"·‘çtùü¢·%#–<ÛK,Kâj¢™% šÄ%¾øÆo«6‰?8l;‡¼¯h\‰%¤¦¦àŒ3NWU/d]½šœ7‰íÈ~åsyà‡ÛÌeÃ’¿ù{‘8tž•øˆÄê$†%çÙ˜#’⊾ û‘ë&çðä“OÔ>g?í;S®Úo%$ñ_‰»H¬.3³} î¹ç^hû.Ès§œ«‘#Gªs/×[ŽU¶wu é,h0#†?F2wÛŠˆ²YP½v!’´àÄ„óV[‰Lƒ¡KŸìl�VM‘z–3}^³c±žå &§mœ3—;Kh:Í7›vÍ̦ÙÌ´˜Ù¶YÓÑ{÷”`#Íd®A""T„’d;è \®' 'z tIgj¤ÁF!"„:ɬ!å5¯¼rg¤[œDXJ6‚eË–«AR?ðÀ½ÁYi´>㌳Ôg!âl01( Å‚d»x챇zétÐê½.¹är%Þxà!Õ#Yþvu¤úá‡Uã"€ÄTgìÁ"©zå8®¸âŸ³18#bLzlzÊY#Ò°)e‡Äì$Ç)Ò("%å­qÒ°/ï1~üê¼KÀøÁÑ‚ãÁ$.âX9ž~úq%̈ЕŒ!Ò»AÌ“"æû·6æÈC¯\g1ºÉƒ¥48»2¸I$y�Ñ÷gÌŠknD2”¼ýöë?L¹BÌ_2ÈÛŽ<Hzëm,ŸYŽÿÞ{ïrx(³™<”Èy“J&#¡>/$:‘‡l‹EÿÛñ7{™ÑD—ãΘÌ4Ù]Η,fq–$ ˜¤ÌbîpG0ÁS6ŽÁƒ«ïÌrM{Ù*¶kB¬Þp~œŽY›ïz7¡Ï^&ëȽßl‰<#7D×Èï¸g¤žtÜÌ$x'%½7¡'=Ê{¥ñÄàò Ï8®ÄÀ;hÐ@•¹RŽåãÿ×Î`Ì}NG²¶êúKôs™q ¶ˆ±]LÅž@‘¬$ %=^ËoKÉky/ øˆ–’ω™F‚¹¶R¶]R:üóvO-$&¶;ï¼Í¡§°˜Ä¤×¥êZklÔr?–ภÁWéÝlü;’R bô;ýôÿSÏwXôÕ`&$˜-:L‚‹’¹,Ø^Ær¼Ò‘ä•W^p¸÷KðSô¶hX êIïßÃ?Tý&ëè=¼å7I•Ï<ó¤C‡ ‚J W¾3’uMJÉË÷Yz¨»BÌebÊš/¿í-Çõ¶C¹RÑ8\p±ê¡-ß5ÑDRòÔxŽå=¤ñDz‹Kgy¦’ï‰]zöìîuO³Þ½óTvSW¬Z¹ÆívÒX4jÔο÷µë6h¿îËi†){9{ößÚoÑd5-&±!ƒªãp…§ c’ÌÁlÃï³X(•øÌ3Ï©†,Aâûì³—*Û"Ï©’QQ~û¥ƒ èùÍ”xŠdRŒeä9R7—ÉýAJVɳlWŒãBH Èó£ 5qIÊ`D3R@´”ÁŒCiM•ÁLJ±àÄQ¹8{LŽ–pðäÜÜ:sªj¬œ—‚õ%õÈH²àϳGbT·ÀceõM*ëZj¼©ÃÏ£d¶—k¨_ÏHG7ËKÜXâbº‘W1³økÎ’ítc–«ÌÕÒÖu਎|ëN@’1Kgÿý÷ÓžÙ^Qãbs6˜é™Á÷ÚkOGcè,Ý %ˆþÒ5‰dÎ÷·ó\°ŸÁˆÄ²äùS²K¹*§)1½j<Ëʳ¸±Cb òÜüÿw®ú¬³‘¸¿ÚJâ=º¹ì²Ë.VÊŒHÜD²hI5‰¹ˆÑð©§Z Gó×ã&þ¶Qø‚”d}â‰G²ZI|Pޤ“›”XÔ‘ö ‰+JV6Ñ›rüÎÆ£P´sˆÁOow—1ž ñ 1EŠyO®d4Ìä|éÉd¿R Èø·$×wÈÁê|KYWùîc‹‘Wô‰ŸÉ52vHìÕ+O=HÇCy~’¿/i“rŽKüõ­·ÞUãÛ’Ò²Æï‚|V1zʵ’vbB"…ÀrJ"œɼ•Çlj²£dÍØ 6jŠ-e'Í­F.“!™þê,¢õ fÊcÖ캌¼CßC­úfûΜmÛÄ9šÚÌN7}ºÑLŽ·xáL­}¶¶­Ü§¯ŸßÍý”ÐH@N³ ÂVLL®ÌY‚4ÔJÝîP£7ì ÒhÔôèÑ—_~I»ù"èEˆéüë_×´ëù+AlÉ”"H«óy±&‹rþxà—) ¥ÁMzòz£¥™Ö=/¿üR—é‘%à|÷ÝwÜ3YÄÿ´i_(ãs£ªŽ<üé›z£f ˆ™Ð]£»<ðéå ¤§„˜¼üAùûï¿­Òï:‹ccŸsúfÿ‚|ÿ%e²+¦Mû¶í÷Á9ËY(®¹‘K/½8¤æ²`‡Ì[o½¥])X™o|(–Ê΄ú¼ÿgï,àãªÒ6þÌLÜ]ÚTRoi¡-mq(…²8,²èb‹ËÂ..ß²,îî΋»[qi …º7i›ÆÝ3öçÌœÉÍd4™¤I{þýÝÎÍ\™k3÷½ïyÎón}zräƒsÏÝ˺Lõ9nL„pÜdñì‰u?ÐÇLCî¡R ¢®_ïdŠ¿äŠ\¿Áß¼¾þægò³ó†EÌPWɽh?‚fðÌŸˆ,8¡:žqš¿R×?0â&&lÔ½™½íèœä É/'J_Dú^ÉßM_ I:"©Ä’¯ßÓÞÞçx_e¢ÍõY»tK^£W]uyQ7L¶ª8‘‰oq™ZÏ?ÿy±§×­rSé)t¢+Z Á»Tg(ôwDRR’qÅ—ú,CÁÄ*ÃÀøÒ;ÉÅ8ê‹/>–¢‚ÿüçzŸ××AÑ~8Ûˤáùç_$ãNnŸ¿R =ד¯{?¿¯Œ-Ã2ÁÉä­ö8Vå*8Ÿ/·c–Æý÷¿ÿϺÎ÷³¼D¨‰s–©õþ02öî¦PЗ€ïŒ3NõŒó·H³mC·Á`TVUûæ¯Ä&¿›6—ø]nÇwèò øÓOóÑßüðc×Ïœ6mG¿óRü]Yéû8Œáߌ=䃑è£qm0Áß :“Š—éðÀFEÞ§ùì|ÖY“¿óÎ-Å«óæ}m™’’ÎëŸ_å”­ÅeFãï6tÒiN„ÓÆNxNƒg‰ˆM7Ëj5N)È**oFJ¬—ì1DмÞ<jtŸˆËVT·bÿÿ­Â%¬—é¢qù X_ÙŠ¬„(,8½wâ2RTߎ²æÄYT+Wß?ïéNk‡<‡<—ê¼z–€íXJÇ{öµ×^åÉ'³ZŒ·Sk0žÞ%ÀŸ<y‡nÂ,ÅܹûyD8lS`ç"Kª3‚ªÖcD9–xàŸ<ÏÞ¥¹)ÒQå½]Æûc¼¹îº«}ŠËÛŠ>þø}<ú胸ë®Û}v gA}ó¡ÄÛFŒ9!V>ò—)Çò™™Ðq‹‚©þ€9*_%Ï<³3çØÛW'Hž_Õ.èëY>í*Æå9ô•O`žãÞ{ÓÍAŒæêûE÷|_×Û¸ž}öI‘Sù¼[ÇÕ’W æ§(`ô¯;å¦í+‡Ê—ª¤0óg¾¾ ü}PçJ£(h™¦_ˆ„{m$ySªY±�Ñ— L–ÇtÇÊ®ž&ð(ÄT' S™ˆ9 Â0ã\Î<1³AmfœßiŒMîYLèf:,Åop ÏÌn‘™½¦ uWI±œR€‡sB}[à°Ã\Â'_BŽòòrÙkŸÌ»¿ß²y½×—}iÀÁþjÌ+W –7¢*ÞFõ>ƒE¿O_}5OŽpÀÜ€åEéÖ z0x[0Óº—pº?ùÛŽ3zîÇ9Üð»í ÖjkkÑXf4F‘WO\ÙØ ‰ ôþ06Äzï ƒju®UOoÔû……#»<�Dêœé‰Ýv_Á> ú‚‰~õ ^åÕxÖÇE38±ÛÕ}¹7îe¾Ì|Ÿèóý„„$˜c—7AŠvÎ@Fü•Ê Ô åoº¿e˜0à6$ SL¢øÛw µèø`¥ÕÂs/óçd¦Þ·ÙC¡j_èh¤ð¬&Îè�B(J±Q:R÷J:’ÒËJDÃÞ€,±çMoîs_~9ÏsœŒ½4½aò7ã×Ãßw^ÛǬßù˜èQ÷}öl-**FO¡[ ݬ *n —þŒƒ·üÝS ¯KuÕ=Ô¯Y&Ÿ}%2*Êö2AÉ2¡,[Âu3á‰^ÄñA RÒ3'J“>ÿÜõŒÂ8w=v÷»NWŸ(~`É•| Îï õŒ@ü¹¥ñÜ0J"qÍh6¡ˆ›ZÜ R¾HMõý]¦(­½½ÃïrÞ¥9—.ë½�6\–-ïú™……;Çlö#˜KO÷Ÿhjòìlà̰„¯úý£€¸°p¤ÏùØHsç·y„…táÜ–1æõ¶V§DF£ jÛàs[Kk+¬±‰î™>ç„K†^M'l§i·;QTÝŠMÕm˜–{)Ä¢ÓwÀ½ûÃÔܾ¹gßùs)¦?³ _®©Ãpñ9‰QX]ÚŒ‚ÔüzÆ—Þû* êÚÑÒfG”Ù;Ç™ãhºÓn…5&IžKžÓÁÔžE±Íé§»:éP4õè£O„¼,>ÅîréÇÿ¿í8ÄØvâý\ÈgpÂö®Vq Ë(Ñ;s)1Î/¿tíD¡Êcòóé$‘Úc"Ó@0Vd;G çú®¹£:„;:(‘S Ü’÷t–_ìüå Ø©žø,ï/_«Úü¼Ÿå#ÕÎÁj>„‚Q%Ôó†y5Ÿ– UÛÍe›››}.?eÊänFŠW æeü92¥ò3¾Ú¤¾ùæ[9Î6¼@Îþ‡vHȹa¦?Ð%25[pÝ»(ô±Y;Pµè+)Ôbu™¯¢¸L¹…™:s• L¹•©¿eLaÁý§*ƒé¹]EfîAn–[4ætÏo\ÙPÓ»D&ÿf[AœÙ‰’_¾@îøé2PäML[çû†%iØèÁÆK fh[j„–¢êZ &ê)FÑëƒo 5î©ë&å±±‘ÊhOÍ^uu.G³¤¤$YÛ=ìõÎÞ;Þ ¯êჽ[‚Y/3Øòî]ÓØƒÛÁϦÐVº¬u®loÃoú‚û¿ µÿ=…%&Yî‰ Ü¾²Î¼Â{_xÎP>ñÄÓr9:¡ÄXâKm“·{Y¤Î¹‘ÔP⫇‡6ÎóZ1>¤“¾8.šÁ‰Ñ+Ðm9Ô˜ÜËHtB ÚjË»-•’š†¦¸!#¦™XPó‹‰%•ÆôžNBá¨Ñh,‹ä8ß½8£ØèŠˆÌ7ḗ›up ÌL”ð^²dÉR™ôbïPŠù´yW÷ìž–|îͽR¹oøƒÂvÂk„¿‡þB$ÜûÜÚµ®òdL6úÏ(•/WNaÜFŠý¶§¥¥yÆ‹‹‹e)ÐL_ÇA$À0æc²“eƒÅB¼–yÞ‹ŠŠ¤ˆÃÊ•+e×öÚ.OGá«®ºVì«Ë5–åÇ‚m_8„²®vš"1ã>¨Ž'ê: %~PßŠäø½à2ÞBA ļ1ÞByNP=f5Û. ‰ÁÌš[ZýNKòó756#ùù]ãóââMèo¼?3X©Êf?B»@ }Þ ù[¨1.a Ì6ntýÖó8ør-7ÂQW^y™ü½LOïtÙ}÷}ä=ÌÈ.»ìé¿ë®Û0{ö>]¦s~æƒØPÆß\þ³ôj~~¾t£` §ÌÌ®Â.U˜<üðýÒ9!,ïØŒ:>ýôƒ 7Ï=÷zèÑnïŸþß=ã\×wß}ÕmÞ³Yrˆx¥¥¥2Ná¾°‘‘%sBuçý—ë¡c﫼ö¸,Ë1wæ¯1qÖ¬=äµÊøòšk®ô»~–Z¦ ‡_{íeŸó¬Zµo¾ù¶tcPîÿlPäñ¦ÛF°Ö555Òµá»ï~÷PÞ‹¸<ã;vÆåþLQ–Ÿæ6ðØ²”ï˜1cÄç/Ýçûv¼xé¥ÿÉk–Û#‡JÑ=0}ÝûÉÓO?ë3,\ø“,mõì³ÏËRglŒdΓn¨Fx¼è¤úî»ïɸóed¤ËçC=D~¦wŒÎÜÇÁ!¯;æ•®¿þ:ŸÛCÇX§1îò%¢çþ~øQrÜßõÄFS ~¿( ˆ‹‹×E¬@Aƒ¿ã¡ àeÑx~2náuÅrëÇwŒÏFmÍàÃénda®Îf7yÚr.ƒð§«*35mv46t :Þ‚#&dà”)Y8j|ß”ÁT,­lÅ…Ÿá›ÕµHN‹C~vŒÜÆu¥Í›—ˆïO™„œ„È4Õ®¯kXŽÎö+ôäø…2ï[&1¦4 :c„ÓO?U S˜¿ Å7Ábbtbg½@Ï…Fïçh–|ýõ7彄¿ÿÊ…L•ǤH…q,fÌQ`flWTÎgl×–Óé«}P„û\KØÑ’Çž÷æ9xocŒ 7ÏaÌ-êPFضÂçuƙ܆þ Pg¼pÚü¼Ÿå#ÕÎÁ{ûÛo¿+¯Çë®»^VYàý›q;zîaüO‡6¶ßÒ±þÈ#‘!ŒÝ)¢2æàBakåC%x5M~W¼yÍ«s̘ƒç{Ê”"Ò¶ªÑD-0Óô9‘$yƒ°Š†ÄúÚ´-FJ”K¬e6ËfÊÌ]EgòÅ-0S¢4%.Sz1㫜ÏݹE.ç™Ð‰QÐf˜^%4M®m£&®zãyã7ºc)ŒA¡·ðÌŸm[¨1€úÓŸ5“ Œ *¥œgpÍZâ}±jU€’!ƒãþü÷¿/É!êêºöQ®hLÃ;ñ,ïÉÄh|è1ŠåÁ¡¢�ýÁk“IíÆÆ¦°í™ “…Ü—~øQ>4yìûLw¿'Ÿ|Fî+“uF{–ÐÞÂËHóJ ›@lëÇE:V)ZêîLÖ3÷²à÷å˜DßIÌôÌlÔØ‡ÈƹpÜËz‹¿ßPnïµkóÆ!ÝRêsÙ˜¤àɫ޺—Ç­þÝR LÖ0¾a"%9ÆÕ@Ãý|÷Ý÷å8<þ܇|©{eo¯¯ÞÜçÔ}•÷â`Âõ@=1÷ç?ÿÙ¿ƒ™7*¹Óh߯zGšþŒƒˆQà6b_±Ÿß“0^çuî«ÄH¨Û{òɧuù;Øu.¡íkçoã•TW1øÃ½Î‚5ªj4‘$”ÞÎìîò–!ÞK|~êo”øV‘¤Á«©3%¸4ObeJ2ÊÝ€çœÂ ` )=ÈáýîŠ+®îÖ0F¡ þöRdÅҜƜ5”ÀŒ÷¢@3®›÷)²ß~ûö©3�·õÎ;ïéÖÈýäÀÜ×¹çžå·„a#ß­·Þ!–½a‡—_~UŠ}T¹§¾àÑGdzϾÐ-¡à‹!oºéyL}ñ믿áò˯êöý¤k îŃþJt~…ñxò{HA8‡óÎ;;h'´HÒÑaÅ\,?Û¸=,íÍk•b…ûî»;¨+…}]ô€¿¯l<¾ôÒ+»•„RB~ŠÃ(„äwØGe§;>[ð:QN7Þ0Wýûï‹=³!Ó—À̸<EF¸ßüî²Ô˜^¿ê:¥‹s rçt¦XÔxQpJ¡)Н¾ú zèÁÐ ~xåóƒn7Dæ™Fa 3µ­¢m©¡ù™q8u÷|œ6% ;ç‡/‚ —Û~Ú‚ë¿-AG»Ãó\bÿŠ+Z0mx2¾9y"’c,ˆëêÚÜiª­!îrÊ}³ÙƒN\F(Êý¿ÿ»F܇ϖ¿=ÿùÏÍ"žx.¨Ã´ñyø’K.C¨xç•)cÂߊÊ:f.áŵd—]\ÕDØ&C! ;0r]~ïßäPˆÔ>„ Er¼0.ð•‹éMn*œÜaÌÀmP¢ùÁJ¤Ú9("cç:ñóZ£Ø[•xäu:mÚNR4Fw{_ß–Håï�+S1ng>‹),)ÝÉø¼à¯ƒç@È+†JO¯Sã¹ÊËË :?ã8f  fš>%T\‡jœ/«AFz., ¥ÒÁLõ<á«'Ý`êZÊÒø¾G0f|¯Ëvx9˜™¼Æ®eèjræY^ ÊÜï›Ýâ2éf&†1‰äBM]rEÐʇ'Þ€{+ÛVEfìQÇ$ùì³Ï=‰6*ê•c�E4}µï ,•hѢ߱-á«a2| #I(Î=ýL> ]tÑ%]J|æädËÞ´C† ‘(KÑÝ‚%”z‹¯r_Þ0yH½öÞÿCÜ|ómžž\žÛ?lXìÉÉ}¢ã¼ó.ò»ŠNfÎÜY& iÛü÷¿_ “®®r²ŸËyè�èôô9ßVÐÇE£Pç42îeÆù| ÏbÓ|÷¸NNKð„‚°D“=¹†#Fá¼C† ¥Õ·ƒY|ºk_œ!‹È ï†è^f¤µ­ ƒöæ»çžûdŒÁF4%0c¼Á†5Nãlß+ýÑÛûœº«ÒZˆŠò?OOÚñ·}kœÛÐb!—ÐÓû÷‡½Kéâblôd<=vìXY:×Âĉ¤HÞ_©…@°Aš‰þp{eû£#Áªñxxw�ê :†Ðô7¡Ä ÁœMÃ]f Ñ%_äP8ý<X,ã2‡#ˆx»‡a {l "ÿ÷ÿÆm·ÝÐmÝÏ?ÿ´<wÝu¯G„ó Ïx¥xP°K#«ÆFº P0Åy(^¡è…îY(QÈòÖ[¯y„»……#¥{Çҥˤ0›ó+œ7}ô±gÜXò)t ß}÷Ýä8K_Ó]œ\|ñ…1›wOW«{ï}@޳QŽq…>ŒwV­Z%ÅgÜ—Gy\6,_xáù>?ûÊ+¯Á·ß~ï9^\Ëšššeã,;-°óÂõ×ÿG:ô…ð±ÞÓO?'Ç)^úë_OÂøñãäs5ÅzÏ<óœUýë_7ÈFoUÂIA…XŒY5€y?:‹ÄÇÇy)’¢€ˆßÛË.ûG·m`üpÓM·Êq ¸:Tpt¸àñ|ì±'1{vÿ¹˜1®çuÍk¢§ÜÜÙpÈï h***qöÙçIG¸@Â77rÊ)'cêÔåµk¥766J×=#Âýfã.;}òó¾üò+ùý`9µSO=¯¼òb—I (ðâ¼6òáudŒü•?S3vFš5kf—i·Ýv§G\Æï.]õÿÑÕn4<·<üî¾üò ÝœÖ^xáE<ðÀÃrœéhÇkŒ®·¼~è¨Âï ½ù}š3g64[—HÄ\‡üçðPýþü}”¯éªJdQE+¢pãþÃqö´ä$úwàŽ[š¬8þíµønU RÒã0$9v§«ñhã–fì4"óOÛÁG)ËÞQ\'¾¿Q¦nÇ©'Ç/ìéÒØÁÙã<«‘­ÕÖÅßp:,RäJñÖóÏÿûÛé·¥§ûëÝ ‹¿…txúꫯ=¿½<JÔÃi„øùÛÍßpNãø‚¿z¾‡J˜‘Ú‡p¸å–Û¥¸LA!EMÌq7nœ ÝsÏýè ¡^GÛJÛj$Û9(0÷Ý7eå…ï¿ÿA–oe^Š÷à~øI¼gS@oŒã ãƒ[n¹QÄ"•q¯U¶ç² ‘ñºÐ²C�Ý ”¼b_cÌ3…ÒÊþh4ý…˜iúŒH&™ágÅÚ"Dít$²æ?&.^×úå(•õ¯7 ¿ä¼Î®¥-ùÀb2Îè^Ÿ~rަÎõy–ãü÷2':ÝÓÌæN‘Åe»¸i¤%Ã:q?”WV '+C>´{+¼{âb¶­Bb LŒ|ñÅWÙçŸá™çCú¶·kÁ3°gÐNa[¨e“xn/½ô yíÒÚÿ‚ ÎÃ@¨Îÿç?/Ɖ'ž™™!3™ FOܾØ ^h~ú)²Á½/­ð¹/ÖOt‡ãÊÆ$¹ ŽSSSpÉ%— Oïļ¯^Þ~øaR`Ƥ t&ô˜àS xïò˜$Rç|[C¢kb$RîeþÆé`–Klìí]{§›Ä¿Œ«|Ðd ´µ]n¸ Ü–¬8ñ`ï£zVT\¢70v‘õܽŒó´µvL °A1 *âÐ. „JpÃÆ6…Jß+}‰ûœúMfÇ`åÆŒ‚+ëa)ço¾ùƒ™­qny.ƒ¡JVzÇB,¦Äet.aBžIoïg%T¦ÿûßgeÏÛ§žzVÆiW]u}ôÁˆ$Øè ÕˆKû*ØèÉ뙵t Ñh*­Ê_*D#€·›¢Ù“N°²Þ¥é·FLC‘ñ÷§%ȱHô³OþJg®ŸÂ–@Z~0À˜„«ŸP¼ÂR7Gyöߎ ‡‚²P(¢f÷õ[þÁI‘aÃï%FØxÊ< Å8¼Gòžbæóy˜36€Í›÷_7/Š ï5ÁJè((pV"ç-[¶xÞç¾ør§bÚÃ?&ÇÙøöä“v¹ó^ÉgÐsϽP6f¿ðÂKrÿXBÈ;$(qÙž{îŽ;ï¼­‹0‡/)8cyC ÎØpûÞ{»,eÞ»Þ)4–Êâ6Óaå”SÎÏ_|ñeG6æÉ( b¬Èåzè~Ù˜¬  Žb":x± (?‹b-££/ó1wÞy·ç÷û‘GìRÂŒeVYnô /‘羿àg|ò‰"þíÚØÉÒ˜Œaî¿ÿ!y^n¿ý.Ü}÷~×C¡>ãåRé‚§â’óÏ?§›ã¿l°§»¿C7Þx xà^Ït–}üñ§ä8sHÞ3UŠm·Ýv‘åÖ˜e¬d©1ÏIÑ¡“ŽÑ„8õ½bÉV6:ãyæXG%·‹1ctíQðûBq ¡3á=÷ÜÑ¥ŒØœ9³¥ôÜs/ßýÛn»C~Ž?©fpÀû(³xìwu_6vëwv¾Ó­¹)ðt'ÌØTÓŠǧã?ÀØôþ¹N^XR…˾(Fe}†¹]Òì—³ÁÆÒ&Ì(Lż“'F\\fŸ±¹±qÑüÎzvüÂîo¼£«ó9XaÜA9£(¨f…@ÏÆ¼òK/=/ãžÂßh¶CÑ ”ÏäìÈß:¶żtb[ã²N8Î#B£è†miáÉ} –”¸Œ±EúŒÃ¼Ý¦(4ê)ÆÜã`NV*J•žL¤Û9(c\­Úšø½àõÆóÇX›q;;²Óˆ/x-©ë‰yw抾ùæ;Ù€íkŒ‘ ªN)¯Ø×siÕÕÁ«gÕÖn½mÕh¼ÜÝç4ƒ’pÝËxP ¬Ue[P=³N†9!QvxÉ”àËlèI¡Ö¦Ädƒ€[-cŒwU Í.˜:_îr™ò37Öe2®ÓäÚÆ(Ñ&ëÈÎEû—Ã’:EŠåyOTþ¡:Ãm+(»s*ÜY&“0Ð&L60pîKØRqÿý†¼e&c(òWâlkBç ºIU¢'Ž”¯ ƒ]Ï¿þºáBª„½Ï;↑LdE>œÂXë<TÁ!a¢Nõ¼¸öÚ«äµå«×7ŠÁ˜3g¶çü©¤©ze¢ÖW ƒHóm }\4 þ†9þÝ{æ^æo׉¹¾CL[ÐÑÞ&#›·êýŸÍm඘}?¼'åpÏ+ÿï6î^“Ïñž¸—±çzkËàw0#l@S°ŽqïW_Í“Óá,Ô2M[ã^é‹HÜçT¯GÆÿLV‚ þPIU6賡j°²µÎm°XˆÉ/µ]Þ±Ðwß¹¿Ù`I‡&Œ}50„º½l|f™½³Ï>SÄ7.Ç ”Loùã%žëÖóç»b¿ôô´.œê:[¶lyDzêk4}ESâ¦Ä$ÿ÷œ–fߢ¬¤ ³ŠŠ®Œ †æ£¿6lh—¿+Ê‹J“’}‹àùƒÂ†`‚׿¦f fØ0sß}wÉÆ%þ¦S¸BW¿þõt³Œë®»^ŠJ"u/¢hæ£Þ Lÿé&.SPô¦r-td2ò§?ÍõN>þøŸËÓ…A¹Æó>‘†¥•#ËFúº§¥¥áöÛo‘×ï't<ó†®ySåqñ%£ÐŠ÷K ½Ž<òðn"ÏHPRRâù,£¸LAñгÏ>‰/¿ü¤›ø‰Žrl4',Cf—)xÏÿ÷¿ÿÏóâñ3B1¡²#§Q\¦`üyãÿîW§Æ;t—÷]Þ(‚" ò3Öó'.£ÐKuF¡“÷ñUPd¦D•tS1›Úμ<×5Èœ¥7Ê5çÀÿä‰Ë90BQ˜Íz;å°ªŠ‰èèç«Q—1^#_ýyqQߊ}o»í¦.q—‚ñ×E¹Žµ˜j/®ç§üM3›½ËcKž^V߆ƒÇ¥ãããÇ÷‹¸¬¼ÅŠ¿¼µ§¾¾ õvŒÌ‰wåsœ®Ò‘›¶4a¿ øåŒÉHЉüïSQ}65ˆïO´úÞõîø…=ÝÉr¤N÷ýiðš$0¶`>ƒð÷è¾û(Ö6 ºz›W¦€\ýn.\ø›GOÇrcéyõ\¬*î¨çw ÔzB$÷!T΀÷釺OÞ/| ÀzWªƒm°Á*Q¬G1a3˜éëvÆ|xæ™'¤°]0”¼csºÖþã—J˜NR^±¯á¹R¿-Á®QÞK‚í‹FÓŸh™¦Oˆ¤�Š*f.VV^(dd$ÇÁ>î Tp¬…Óèø “Õ%úòÕéC~¢zß—x îM›fœæpëÈÌÞ�O¹N³qÓbl®­°ÖͺÕ¦L4×V`“HbñaœeöÔƒw0±](l‹"3&ET`=oÞ×RΠ(ñY_ÂR*aE+w&QƒA1íñ ƒãPK-ô' à÷Ýw¶g‚+êŸÁËOð¸{_cìJøÀ¥Ê™ú‚Ç„ Üpi1ô–$æâƒTS„’öì¨4m² ”Ã)¹Ðu_Fú½¤‚Áëê€æÊño¾ùV>,©‡3:âøJ¤Fêœ÷ý•ˆlÇEÓw456 ]6þtw/ äd¾{™É#6KÊ-„/LöØëJÐÖÖÞ' C¡Âß-nƒ½n3`ó]Ò-9/pò%°ˆ,|÷2Ɔ }(’êO GzÜ2(f/@åDNyÌ­q¯ ¾#ýÎè>§â ÂþàuA'Ì»¿çûèÝ0é “¶ß~û]ŸŠïzJ¤Îm¸eÙ(AøÒK¯xÖ3gξ]¦©ß,6Žú»—3¨zY#6Ö•hæó�æYŽ‹ÐÕĘˆì)<Æ®¥üIºÆ Æ}R±Xuut[ħŸ~.¯µPJrj4‘¦¥%¸À,P§(%æð†[•Y¿¾¸Ëß'ö­‚/&MßåïõEÅç’ï[Ä[ççÄÄàÊš[¶^<)xüë_×Ê2ÅÌqÐU€PàAÑ ÝÄæÎ=X¾ªÎ½ŽIŠùƒ÷¡èhWE�ïýl„3g¶gCUMMM·åÕ=„÷—¾Ê-1ßÇN„¢/oW2#¼oîµ×rœ¹'ã÷–ùu/¢#–±‘Ù:U°ÑïœsÎò)Îé-ª¼#ïiFá’Š˜|5ªjtŒóÕ)NÁél€$Þ%UÉFÊ@¹6®cÆŒéè/x^9d°äáuÈYͻܤvdU9dº¥Â8ý“O>í2M¹„0Gg|Ö¤ðMS–¶Tâ¯_~™ßeyU“ûK1„:¿¨X‰¿ þĹS¦Lî&ØèÚÙfnoŒ"Re<5ƒ^3±"ÏÕ.®³nMV¯kSNœÜ?nDÏ/®Ä”ÇãõEÈËJ@nb ¬v§ÌÑY¬dKŽžž‹/NšØg²ëkÛP×bE´Ù±cÎ�s,âÆÅÆú <<©Ø€âho!»¶©gTæ0µ)0çüá‡wqÈ6Bá6Åd„¿Ñô%(SÐtB\ÆèœOÅtÖî ‘Ü‡PP÷ž””d+¬/xì{ÊܹûyîË/¾ørÀyÓ)°ÌD¢ƒïóÞúØcOt‹<¶ŒÆ|?ówÞ Ø)q�+;x/;òŠ} Û÷”Hen‹<§2g¹5ÝÖ4o´ÀLqz*†ò7N7 'ÖmÉøvyÓÉH9SP9û6”î} Ú†‹¤ƒÈišEÜc¶¹…fîV9šqp8|4lz·kšÔ6xMv–5.c˜_–Ãä[b,½%$¡i‡9¨ûó]hßï*Ä¥Ar| 23³Ÿªšj¹¯¡42r~ 6ï`‡IEUcžA%o¦„7`–cèkø@týõ×yî>øþóŸ›}–ÓáµúñÇŸâ¼ó.ô$áÏ=÷¬°Ê(ö'´PfB‡õ—_~•Ï}âõÄ}¦½þ 'üÕ#®R0XÏÈH—ã´ÙW=kŒÔÕÕÉ$sOœèP§8úZ{H²ÌB¤`Ìr¾>ë‘GóôØwß}<ÉU…1AFk#Lp*TÒÌ:d<÷\p#QÉT–ŠzõÕ×==m%Y#qÎû ~çÔ¹¥lhoè¯ãâ*õ{¶,á«¡ ×\ó8ûìó=%'¼áƒ×qÏ=÷u\Ñ„GcSsHb®Þ»—u“”ØÔlŸÓìUëÐÑÖ"Ì‚ý~öäÞl~&?»£µŽªõ>ç‰OÍûÞC÷2ßã·™e¾ZDCEp§ÇÁ‚r1[¹r•ü-'l”óåÆà­q¯ôE$îs,¤ö1•¿dÏ£>.™?èÌÀ…P8îOOç’Ë.»ÿüç¢aðØ­"þñ.+d$RçÖè†Ê=•ŸsíµÿBCCwAÅ÷ßÿà¹ææætKb溲Œ•7|¾cÙÏž”‹ccõ]wÝî‰ËY:aÕªÕè->ø°Ïë‰Çꦛn•ã<F×A2gÎl›2K4ùëýÊN2<ž¼¿³|Ä`‡×cû¿ýíOoXÞŽñ Kùú^±ûŠ+®Æ9ç\ài8Ñô¡ÌÔ3/6nÚìó}–ëQQ¾X²ty—{üî»ÍB³Ë.]Ýq/ößó›¿-ü]óÅÆ›ý.—‘îÿØ)¶f‡HÃ27tŸúüóÅ=ý)Y¦ Ìðù„­£>Χ WOáïEVذðŽ;îÆI'ê)ëêë¹H=óž¦\ŸŒëSÂ/:KËÿE>Wªm Eì¤ÄEÜ>£H¥3,1¸5QB) ÛyøüʆfåžCÂr¹›ÄïJ Nm„"n£KËʓɓwZî*Ô²§‘@ üaܵ¾H à ©®6+ž?ø<¡Žáºu]ŸåTìÆdcÞA•ÇdlÃXÚ(03þ–+ç3žoa@ºø=¤3¡ ƒåtù}e.—¹Á@ðû¢:Û»FXª=!ÁkúžÞˆ‰cs`œÝ.~/-.÷«H ©±¸û§-(m²¢¯(o¶âØ7Wã´×W¡®Ý†y ÒÁátÈv©V›eeÍ8s¡xãè±èKÖÖ¶‰/¶y:œý?X¢ä9ä¹Tçµ§ Ë ªø8˜@é”SN–¯üfÎ××ócA:¾^ýpè¡GúÍg(±9Ÿ-Õó¥·(›÷ŠàŒÛFתÞÜ÷"¹ÁP9¶eøsnzúég}¶3… c;ºÝÞ·žyæ9Ÿó1_d,íÜ“£Þ¶s°ó²Ë®ÂSO=+Û|uƤ€œèŸ "?øàC™Gá³À»ï¾ïs;rûȘ1åºR^±?P9&s~·|åàøLÀXJ£HDA£‰ ሞBiHä<|ØåÐ$¢ ,›šÐÔ˜�›hðÌÌÎASÆîˆŸrl5K_ò’Ë~€©b¢ìN˜Ýí/æhW™JUþÒéŽOYúÞìÇ\ć»jªf‘–éƒÅá°!!;¡8fØ ÷Âêj²Ó³Ñ\Sĸ´´:äbLð®ßP„Â#d#‹êuÅ}V´qÜßññ7=زƒC=DÚºÓÖU•a¤sá°~ýúj·SAo Šh{Ç·ÈÀŠƒA³fÍAÏpÙÛ‚"*û™äP°$­ð*,]Ädðý÷?$çŽ;î$é~Å$Q||œL2£Í-a€Ç^™FøÐxÅ—ÉÆ2ž›óλH¬ã ™ìb‚~Íš5RCÁÝ_þr ^{í „Dù0À@Ÿnl¨b¢˜V·Lh²Aê½÷Þ—,ú"¡äçöó:a€I^~VUUµ<ªŒçüòËÿÙmÙ‚‚ÏøSO=ƒƒ>P$æòäà ü¸.6V>öØ“²g(­«™ôcÒ” ¶ ñÚóרeÚ=óÁÁ>ab߈{‰s*Üî'¹æš+Ãrã!|XÞa‡Iò{ÿå—óä¶sùûFgÁHÒÇ…B>(°ñƒ öì=÷ܳ»ÌÃ;UÞ€_|ñ‰¼¶L óÁpÜŽcŽ9 šÈÑÒÚ‚ dö‹{™O1å‹}<4Û­°—¯D«eоúâ>ï›ñ3¥{™Ø§ÝwB6mÔ éŒÓBÕÀr/#Í-á‹R2sæÌ–÷6¦|óKDîïËÖ¸Wú"R÷9–E:ùäÓdB“¢~ŠsØ“å oñ÷˜½t÷Ùg/Ï1óÅUW].÷±E.ü}¥è,??OŠÀÙèÅd¢Jjþ¹A*ûc¹wnïŒqKEêÜNœ8Aîé“O>-ﱜŸ€¼×zÃø…Çù˜cŽ—÷™Ñ£GËç60ò8²±ž¿A¼¿{»ñ~Ï’‘Ü–O<EƼÏòþǘ… FÞW…ïxÃX€Â6h«„éÿû¬Ï2]¡À$2¯[Æ}Œ¥x|øcX%ÌaLOQ…>ñERœuÖyØo¿}±Ûn»z®W&?•»;Kyßû#L4«$üUW]‡Ï?ÿ¨›ˆ‘ß]^'ŒWøS Š»ï¾O$Œ¿–ã<‡Ÿ~úá6õü:Ш¬¬:OáÈáøöÛ}NcR›ßac\ª;f”hÜ÷-–àïÀšµë1n¬«DͤIãÅ=`¸ßù#MRR"öÞ«³AŽ÷ÚU«ÖúÔ¨~¯Ã@Û<b„ÿç/E(ç`°Á†c>/q`©>6^ñ·®ïüM¤kÅ'ªT_¸P¤Ìü;ÒYÁ—ÈšçË_~‘÷Q yýòžFg/Å÷ßÿè~õ¥ã|eeg™Xæ‚ÁR9ËVJ‘Wø+•Ý_ð>O¡ïŒ+¨gXºR$G×_N\Ì«>WSØ*üîªüŸŠu/£?;{fffœÎx‰â1 쫪ªÐÔrŒ­C‰YÙ!’ÇÎx ÇxßfŒCQ™*s©œÀvÝÕ妱Ë.®sÈcÎŽñϽ÷ûsʹå÷’×Åü«\`aáH'ñ:òvçU×ùï_’C(®i>ü-§"ÎÚŠ ÌÔϺ«zf€OÏJŠÆïå͘ñôbœ¿sŽ™˜‰ñ™‘+•Iײ˿(FeMò²¤s˜ÍîÚ ³oj·£¶ºWî?·Í޾fmM[çª=«Ç/ìé×9ä¹Üâzº€ª6%öÓØñ†¤Œ…˜Ëæ½Ï¼v»ÅÅÅÒIIýÓ…‘"_Ð}éöˆŠÙùÁWÙÆÝwßM>O)—/þÝ›ÒБ܇`0ö¢0ޱÝEýCŠl¦OŸ*¯>K²c�s>=Í(ØvC;å=òÈãøá‡Ÿäv3Þâ=‡¦ùó]BkÞ[™gØèm;óÇw¬ŒéÙñ׿ž.óB®kÁ.Ï s%ªó"ÏŸÑ5—×çk³S ÷Ù–£rƒ¼ÎTŽ„ñ‘ê¼@Z^±¯¡x”ÏJܶE{ì òxºrhvyŽÞ~ûùÜEi°RšM¡fšˆÑG- ‰üñgðÂò˜eååÈÎÊÉ©4$§$!6:1"AŸ‹†Új$§OA±5#§…¨†b$µ!®ü'X*—ÃҲɖV˜[Ûá`û¨Iº-Ãdq•»”Â3³û}³[(æžÆ·åÙÝ¥1®W»ÚÄTSr¬ CQ=©ÓPcÉE{âP¤eåÃÙÒ€ÂøF©ðvŠ8ŇÑyƒ½¬ÊE0Æ}¤¥¿?aY0ÁÙö"2£˜Œ½0ب=)a@‘‡`\qÅ¥ÝL€°w.681˜bïÕsÏ5 âŒÁÑ@…e äîºë^ôù+#Å5:Ft’c© º~±á<­Î`5\áù`DTtó®7Îmºå–å>D¢Ñü‚ ÎkµL´)á–>Ø=ðÀ½>{9³‘’Ó͇٘!<>·Ýv³|Èã1<ÿü‹d’ϘˆUð±üdC5ïÛÈ¿ƒ‰s ÆÒZüþô„ /<Oœ‹¥Ð˜â+¤ì¼yŸ÷ª'œ/úú¸´·wtéYï«”™±|…=Þ yÞå%Œ=¹5‘¡µ¥{X¢|__¡¸’…3IÈŠØ”,´7tohp4”ÁŸŽz±6"P„sß›±AÂ`{í&8}ÛÞÇ¥f#!sh„ÝËÅ“.ŠÖmL`ÆózØa‡zP˜ÈéIClß+}©û“V>x¯t7âuÈ'#´â¿ôÒL1ÁÅØíò˯–ǃ‰_Én÷ßÿ~AØBèHÁïõœ9³er˜q.ÝÔ(þúì³äôHœ[6Êžyæé2©ÊdãY²F÷Ý×½'$“<WLè=ñÄÓݦóºeÂÎWy+Æ"ÜÆ·ß~WÆCêþ­àïÔE/§õ4YLg &¥™x¼úêëðÐC÷÷(6`ƒÿI' bÕËe’”ƒ7%0>ôË=öØCR$Åãïëº'Lˆò<)±À`ƨaFØ`m‚øŠWŒ1MkkÛ6×Aj Š ‹Â/X­6lÞ¼Åç<3fLÃç_|íwÙO?ýÊ#0#'žp n¹õôÇýåÏž2»ä³ÏçÉçxÌœáÛˆ©ÊÊ*ü.WX¼ÑxÃvà°ÃçãSOý«xþÝO<[&Ÿ©XZ§'q ï‡]tI—û# 2DækèÅF_6ú‚¿)?úè2‡ÃçÓ‘r™T¹À€ñ>æ/^¿•2'§ð–󷟵|Ü9³eÌgBõ´â‚ê `$ÐwYÑýžÚö¸ö¿·ç0ÔåýÍÇ|VŠ`ì©De<7ª|¹ª"A8)ðä4޳„“:J˜æ ó*Œyø{Àœ—¥8ƒÇˆßClx>ï¼³qúé§z–ëéùòu}h|cî+ÑÖH+•]ðJx_ÏÁ§Sì5,5ÍV\÷éÜñÓì1, û¦ana*¦äô,ßYÚÔ‹?-Âë‹Ê•áy °‰Ë×îþnXÄOy}› 5m¸íÐѸr÷!áHfâÃ=y™^¿°§ËsØ Ïgo„N æôC ÜqÇ­"ÿ§ìPE§Eƾ`²@B&>‡sظq“üÛ_Iiï²™áô–HíC0XœËÓåŠq6®¼o)bþÓŸNà=…Æ,NÓÆ*ì çË=›ñå=÷ÜÙg޶[ƒÞ¶s°*SYY™t)cgûî{ÐçòìœÈv?#,qÍu²Z�?[ņÞ0ïÅ63º¦*Z^±?Pß%ŠÌ(¢óÎÁñþx÷ݷ˸M Ì4-0ÓD„pÅe¡”Æä8ùpYRºEŒ·¡±©ñqQbˆA³HRÇÇ'ˆä…)É)ho®ÇÈ!YâÇ6ŽŒ ¨Lº¸Y;{¨ÈX×¢¦~b‹`-Y$ñ°ëh„¹½­õ•HI° ZÄÀmM°ÚÚ‘˜”�“øÑnhíàS7âD£¯3&µ­fD¥A[L:i“Ð`Ɇ#. ë6WaôÄaâƒpE)’Dü¼~ù"ÙS³¥µ‰ ‰ˆ‰Ž ;ɰ٬HLLB{GJ6oF•¸a°!‘IùPzw„›xßVõLHÍ»¿tu ì¨zÔõ'L¦¼ðÂ3øñÇŸd`Þl¤£$55E:*PHÆ5£j ÃlH|ë­·¥`ŽÁ#Å/Ü':^ðØóÁ!P£÷™*z«´Øg’—âÉ &ˆ€öDÙ‹Æ_ `°Q”<ÿ j7lØ ’—­²w,¯&¤Œî½…ìý÷ß#­éTÇ :&&Zº“Ñù„ Љ‰‰>—å÷ùÑGA÷²q•¢HcoQ6*¾ñÆ+²A”A-Eù;ÇíçC+8½éÁ ž½šx òA@• F$Îy0T™>4Ò¹¢'0ÐòÉG¥-6�yÞyìÙ(ÝÓu¢/ –˜@}á…EƒÈHœrJwwCºšð¸±gòE]àq·T°›N0,;5yò$í^!L‡Òú†z‘Ü×™»‡| ÷2Nfḗ©ñÌñ» táG>ã&{ù ˜DQ!¦©ÒÄŸð¼ûötŸè} xos4U‰ÏömÎõgM˜Õîe¾·Éã^ÖÜ,=ÔÍæmCŒÀž‚¼/pŸ)œ ס•ô÷½Ò‘ºÏñ÷ÿõ×ÿ'Å>óæ}#Ö³EöÞcOFþŸ|ò‰!¹0AÈã²<¿³A‹÷&h¸.ºkðw5P‰·þ€B}&á+1nàwŒn%ÜþH[6SLE±?{C³‘O¹·øâÌ3ϱíË/¿*WËŽ?¼÷²G)K.ðøù‚Û~íµWÉ„0EfLä2¡G'!ÞÇxîè*Ó[‹Š)@`ÜÉ^Ç=ô¨|¯'pŸžþié¾Ê„ïýtF¡»;Œp»A‘ÃÛo¿.“¦,ß¶Y<çQÁNE£F’B>Þ³{ò݈üío§Ëc_RR‚³Ï>³›ø™× ËØÃ k£kâÂ Ï—Ï 43©éŽš®o :O ùmÑbŸóÌš¸ìß{ï}ŒsÏ9]>’?yþû⫢Ѫ} ã÷SOézí½õö—ÙeÖÎ>ßÿý÷¥……^Ó|Ñ_®mÞ“Ø ÈòÔtH`gËôʈa)eþŽò·áôÓO‘Ïà=qî¢ÀìñÇŸr—ÉüT<#KÏ¨Ž‡|Og¾HatÙ*//:YYç<tŸê\O¶až²€®å‘ ¡·ï´ÓN‘çglñÓO?Ë’ï|–`#…í—\r‘gÆ.Œ #°!·'0Èû?#=u ë ×Ï™7ì|¬JåöÔY±"¡+;,s1c9jâËíBž# 8sWüÎñû`tŸcŽ“3º0þS"4~σ•c  Ü_) `ç�6â2>`Îÿᇓ1ƒyªý#,Mç+~Ð ^9Nò·žÓ3L­(2ó7Ù×|Á’ ¾§ÛNdÆ‹u&D¡ÅêÀÇ«kðñ²*Ä'Å`f~ö™‚Ù#R±ËÐ$ÄGŽG­b],,ÃÍß— ²¦¹Yñˆ¶˜äg(,"GQ×jCcm<j.œùÜ¥/¸ êÚã±Kð¢gÇ/œé&³EœÃvy.Åöƒ­­ŠÎèü ôÕQØÛö(aÌÂgw¶ñÞÏ<ï|fdµ›`%Ž £U'Dvf÷c%æo·¿ùÂ!’û Æh¬ÎBaï-¼r?¸Ot8£¹ Þ¢rB\Ýß™¢ˆ‡ ØfÁÊIlOá¾okô¦ƒÇãæ›ÿ#Ûü˜K£39ÛÍx-°çÈßµÀ÷ßyÇå`Jç8:à1Ū@#FŒ¥`éÔå«m åûÆstÆg§~ïèdÆcÍ¿sÌåñ»¢à5š@¨wrSˆÓL!¼šüü­³áU ÷{¯Ó¨à0wtX}ûø|•Ž4Lüó•âÖÖÙÛiذ Âq' ö·÷8UhþÒkoJáÝ¿²³3'‚u‹LPY¢,â8VÞð*ÊË•ƒrq£=fŒ¼Ù±7t”h”mneޤgeË@É`ÜØQˆ¶ÀÖцÍ7bô¨pجb™vÔ‰„ÓÐa"y*j6•”Šà<yùCeO”?~_ŒÂÃ`·µ#Z<x´µ4£¥¹I>7ÇŽöyS¦(ŽÉ´˜ØÔ‰„·‡ç±±©Q$¬hÛ´óÔ±«xp§;Œý•Úò¼ƒýíî ®Ñ†&Õ+çÓO?è×R ½½„÷ßÿ ™\äÃ×@±ræoøÞ{ï'¨LB^zé%Ð ~Ø{‚ ¼ùÐÏ{ ïm|Uƒ/ú:® E4åk\½òþMáħŸ|„(‘œ>cgäd»°ü•Êôž…vÿö/0ãxÕêhØ´>1™5t'X’³eEÌjݽ½Çú™Ô±7VÂVò‡Ûæµ;©Ã'!kÜ ¿îeÞNf¡t.àü:}ŠÍÊD¬÷ÛÂ…°‹ëæO"®?³§!Ç×ñK{_3ðaœ}ÄGËqº|Q(¦é9,pæ™.—.ºNPì¸-3kÖ2IÉä9K}j¶ú;ž ÖéÎø·¯{¤rgê­+Á·_ ôüÁƆ½ö9į ÏÁÏÅm·øv8âÏ'‹Æšbøãß×_‰£þÜé´üó/ qîy—ö©»Ðÿ¹G~çïœsÏ¿Ôïülìøê‹weÇ"oîàq<ýÌ‹~—}ëÍ0ft¡ßé<—»íq §änOøæWù#ÕÉÆWŒJž¨'q¥÷ßïr- ;Y(ŽŸt¿ ˆ„|òÉû]„#,‘«\~ùåûn.'Æû;Ë󰼑?fÏÞ_^»þ9 ÐØ¨F1Ìk¯½,;‘]ýä4þL$ˆ¯¿þFºbGy [YH^ãûï tS¬ÌÎ@Ð “ `lhúâ‹=n<'tª?ãŒSeYoð;ì¯qŸ}ö“yÖ`¯ƒ>\ ¸Ô1  øXÞ‡ cFGVrÉ%—Êò¤‰}üñû=ÿýïÿA£¯¾ú´[§,#gŸ}>~ûm‘ùå"î"jÌ#]|ñ…Ò-Äl¤‹ñŽ[CÍG±¤r°øáû¥@ÞœpÂ_帯k†Ï}sç,¯ÑÿüçzÙ‘‡%åÙûøã{棨‚¥ÀÙýå—®òéìGñE`=Ô,MNبë­7Éq^»ü¾Pìf|_ã›–Ÿ 'Þ1Žó•ÜxÞo~êødÊ9°•®ë¶¬ªÆ¨^½ g:ÿk³9QÓlÚm@lÆeÅcçüD):Û17£Óã…»«kZñņz¼¶¼ Ë65"&)¹‰12/a¬æÉ6§ÚšÚñØ1ãpδþ+i¼¦F´3=³qÞ} å"yü|NŸ•?.yמy‚lëbçš`y_û{O£Ñh"Í`Ê+þë_7ÈN*&ÛV%ž W1ùÚR2Òà~µ{ N÷«Ã08 ¯ÞüüèÕ{Ü› Vº‹¨¦Wô¥¸Œ6lìe¢¨¦¶Föt¢ªœ",:–ÅÅÇ£µ­-"1BA•Æ´üŒ?@ãÆ—Æœ9ìV47ÖcHn&rÓ°jÑ/hªÚ‚ÉãF"ÚäÀ¦âbñã…Œ¬\´Ûͨm²ÂŸŒÄÔ,44¶ ¦ªyÙ™ÈJË.Yˆº²˜:©1¦­] {G›tSËÈÈÄ„ QQV.ˆPYY›Ý.­ûÓÒÒÄÃÙp¹}ÉbÛé`Æ÷²³s°fý©¶æþ;&áëp§k4šÁ kÎS\F(0(°çµê»Ûnýï6¨Ñ„ƒ1áå÷ËV[ÈÄ™—ˆ,÷²@NfþÄeŠŒ1;#&9>q:`Ûü;l5›¤»{ã«ÞZ½¹Ç«e¹. û).³Õl”ŸåO\›’‰Ì1ÓzäJê|]—qzÞdyL»lŒŽŒ¸N3paãd°r7k×®õŒ÷…«¥F£ÑlKsÐbé ü‹/,øÍoÌqØ¡K >úè3]ÄU»î2gùWô‡vPqÐï»ÿ±€Ëø§ý|ŠËqþÈÊÊÀèQ#ˆ »µ âß,MI§H†1_æã¾újžçue—cüæëš2«‘ÜáBq!,ENX–™nM…‘É“w蕸,( ¢(PTÃÁܶo¿u¹¾ÓÕÁXªˆ.PtÙ t t=QØ7wîA²|´Ñ(áüGºLùsc|ÆË-)w,oØF ¹¼ÏÏÌ•¯Ÿq= k+Åa*ß¡˜={ùÊ÷é’ç–d¤x¾¿ ãD ïÅa„×ÿìÙ= St¥Dytõ„qúvÿ¦û(]1“*æ]rmêÔD;AºÑr>åTO‘¢/è2òÎ;ïáÞ{€?¦L™ŒØØX9Ng7÷Ýw¶çwëòŸ_éHB!Îy~”“dAZ­pš• WçàôzíÍt^3±ñ ™!9ñÈIŽFQ}þ·¨ÿü`-öqf>³3İó3`ïÿ.ÅõŸmÀŠêV1²¢`y ãgñÖÖØnCSc;žùËø~—–Çll¶"ÆbBoO¦›Ìp´4ÊsHúÒT£ÑhBa0åýÅÕFèL¨9Ðh¶6Z`¦é1}).#ª<æÆÍ%ò¡×jí@]]-ªEÃgCc½HFTzÁ† •=qcãâ`³Û°rùrÄÆÄ ..É"±‘“›‹õëÖI б")C%,ËyØÅ²±"ȸ;6& ñw[k3b££‡X—hjF›HÜP(ÁîD‘[*BMFûO“,¥Åž6ÅÅE6|8²srí¶)_»vl ågóá™.lqâ5Ê%ÎkeC.ot´æ –¤ &8Ó"3fû‚ U•4dY`å›ú“¢¢"ùÊ^Å‘°ÍÖhúïž”ê•î§w×÷xàõ‡7ŸÙlAÞ”}`‰Žõ3§S–Ë´–üºê*[0!Ïß‚ž8€p.Ëup] µÕ°nþC|ÆJøë¨Âm˼·,} ¶IþÀ½ !8™ù›'³FqNر€¨Ò˜ªE Ͷx]²îÈ#Áe—]é·•KXv‰°Ñ‹_F£ñÏ’¥ËƒÎã¯D$©¬¬Æ¯¿ùkvØ~ÅY¤¼¢>ôT—÷Î?ïo]\Í"Åž{îŠëÿuE—÷^zù ¬\µ&àrþ¶eóæ-X¾|•ßåfΜ4Y¼x3¬°ß~ûÊq–ºæšÿ“y,_l9¼ .¸X–Ú#Gõçnó°|°Â—€„åoTŒG1˜¯8—Î~7Üš»Å<t¨#_|ñ%~þy¾gÉŸþ€ŽÞª”!Kú*•ɸæÊ+¯‘bHî;Kÿxsê©.Q&Ë#^{í¿|–Z±b%{ì ˆbFèNE( {-ÏózÓM·Âó\uÕµxå•×dij_yF ùþøÃ%¤=zT—isæÌö”õ¾í¶;ü îæÍûZî#ÈøyF(²RûÅò§Ê¡Ì']úÒ%Ѻ/ÐÌ×1y≧<b·}÷Ý'`)Í@°ÌK:ºò=óÌs>ç£Ø„%Óü ))d$Fñã{ìÞeæÞ•SšÊ?Ñ™ˆ¥±|ñÁÊkˆ%ÏÞ}÷}ŸóÐEP5øŽ3¦Ë4~_X¥„ÓéèÇNPÞð?øà#¸õÖ;¤K›ïi/JŒT˜—G]%LQ^9‘`M½˜Î¯,³,£™Ÿ‡ü¬xd'F£ÃæÄ¦úvTµØ…!âý\ñ¾Ëý­ûúmâͺº6ÜuØhœ¾SϾã½auu«HÛañ5±Ÿšn¹"G}¥<‡D Ì4ÍÖb0å)ܧÛò‘G‹ï¾ûÞï|ŒíØy‚xwÐh¶ú.¯é}å¦e|ŸŽ^L¬¬^³Z>Ìæææ")1^ IòA333K$ñÌHNJFYi)RSÓD¥C† EáèÑ\bãbQUY%Åi………°Úìâ²ÄyttŒLR¼Ö&Z7‹DÀ¸ñãD¢c¨LÄTUUb×#nFL†ÆÆÆH=# GІU3~ýõWLš4 ä�®d›6³Ï RRSàËNÓëëåßµ55²”mf±í,활bAiy…ìEÈF^ß<*Ai÷u¼¼§š?”éf`S#~GXR‚e Ø[“É[ò·¿ŽÈ´i;,Y¡Ñ T–YÜ£vJËJå}›®©ô­{™NHFÞÔý°å×OEá»D•£¡Öæ8²Ç £}¨ˆ%Rå÷Œ1c&¾rŸŒÒª²].±vwŒV456ÀV»öÊupÚ­ðEeyÓö“ÛØîe44ÔcKé×¶˜´°l[…×.Ë@±”ÎX†çÏ>BÄÜ¥“;g,]ºL4X½çqÅ8ýôS½¾¯F£ñæ—ù¿á¯'pžY3§ã™g_ò;ýƒ>ÅŒ»‹ rs²qØ¡âÍ·Þ÷»ìËÿ{»í:{ïí/ðN!; >ûÜËéGç2®3:º3ÝIqØ>p¹=öØEÜgÆûœöÁ‡Ÿܶ@¢<ÅÂ…‹0ع䒿cÉ’¥R˜ÄRi±qƒNU‰‰‰²†÷ç_~Yà)³:vìq>¥Ûº”k¹ñÆ[¤ „9<æ×òòråýž" d¸>–Ò£[÷!ùòÞO§¥÷Þ{_Ƽ)1›?(Ók¯½áiDbìü§?ÍEPX8^xž,mÈ2<Ç{¢,3:aÂx÷¬Y³F>Û3ö!§öWŸÇ(ˆc©Ôo¾ùN4@ý€£>NÆH#FŒ^)`úøãO¥ðŒÇæºë®öÛœŸ¢><öØ“²¡ŠåwÙ!vݺuÒyŠËÓ…œq˜7qÛ(Fâù¡ÐïÐC–ŽêܼóN§Ãc4#<î7ÞøoYr‘û{ÖYçIñân»í*«Vðúš?ÇÝŒÛuî¹gwYc¾+®¸L Ϙ;>+pÈ!ÉŽm¬¡Ž's»,sÄóî§žzFÂrÙ¡”õKF²1sÙ²å8ì°Cä1aÜJ'¶E‹~—óPè¨äk(py®Çž×ó?ü$¯e: òóèH·AÂß×ÿû¿kü®‹np<ð°Ç#77§›(ì¾ûnò{ÿõ×ßzþö.m«à1¤�‘ç÷æ›o“Nƒ{Ü:×±ñT_ž¯ãÿK—åù»qþùçàþû’ÏÇw’8¿KÇÁøø8ùâuN§=2|ø0y]k7®\†cE[Lòšõh9 Ž6å€(ýå½DNî÷úh:Í¢ÍrPÓA–¯¬oÇÜIY¸t—­ã,Ã2žj“\qKß_ÓÍñIH*_ޱ»Œ–çR Ì4ÍÖb0å™›gÇ jþùÏ+dGÆæ|&â{ìŒÃ¸GuT`¼çzvÒh¶.ú.¯ ›žˆÇ-ãkLh4‹„DeUt%coØØ˜ÔÖÖJ»õ¦ª*)«©iÉÌ\¸F‰¤ÊH™Èªª¨ Ãõõõ5ÊÔn.Ù,Ö'“¢¹™Y™0‹„&LbMÚa’nð{1ž‘žŽ7Êø#GÈm¢#ÉdÎwÜQ:œ¬âã'LóZ‘?dˆœwÝÚµHóTT”‹ô<˜Ú;ÄM!OÞ’Ðní‰ö\\º|&Ž'y•¾?‘™·@¬'"3F3xa2™I:#L^²ï@B•M`¢X£è0ñÕ.îÓQ"IÞ!bö–îÝE£¢,ýâ^fKÍFÞNû¢ìy~Ef‚ÙÊVÀVµÖôáˆÉŠ„”tçøKö++1i®¯µv ìµÅm`Ëp).ÛiâRŒ%ŽúϽŒñX»ØfURœ ˆNZn›üë_×ÊÆj–=bC#Ý)|Ák ×§v 4F˜… —÷Ó@÷NºqQPWWïsú§Ÿ}…«®¼Øg’¿q2Þ{ÿc‘ËñíÌÎ{ÿU×üÏ<ý &Œw•ÏcÞâ’‹ÏÅôi;âÆ›î’ûzBªÈÿ\vé…]Êb–¼ø’«E&€€^lÃ9gêw›?øðS¿Ëò>´÷^»#¿ÌÿƒŠežxâQüûß7Ê ˆ>ÿüK9ø‚®aìøj¨Ùu×]Ä0KŠÔ(”Q⛋/¾ýëIrüŠ+.•Ï”‘°ˆƒæÎn¹åFYª1˜ÀŒyäá]„F51Öè/(>¢ØëÎ;ï‘ÇÎWyC6†{îY8ãŒÓü®ç¶Ûn–®Mï½÷Ì_>üp÷Ò¯íÜ~ûÍRä Ö.¹ä"Y¾×7ECŒËÞ}÷íRhæ nãm·Ý$Öq™§ÏŸÆê<ŸsæÌî6µÇ{HºSñÜ}öÙrð†¿E<Ǫܦ‘ý÷Ÿ#ãÅ[n¹]þ®ñxp0òü]Š ÌTÇ8ÒÛÜ÷wýúõòº¾ûîûºM§xëî•.d½ß©gžy—]v•³QÔ§Ê[¡kÙ=÷Üðóx|8°<+ñv/Sx;e°áÓ,‰{×]·KÇ6ìRˆ¨ÜÔŒPÊë™ ¨Þðw€×"¿ß\Kóú‚¥cùYÆr²šï±ÁÚ’Ô<üÝ 3§a#šãE޳–—F“7þò[gº£ÅŠvÈÂÖbh#C´Ù]ÂÒµMôõþ;`ŠOF®8w));xò5¡´Oé6,FÓ –¼"«=üðýÒ¹—±½wlndäÈ2¶£.B£ÙÚèMD E\Fñ•rÑð×ÐÈd “’%%¥ˆOL@B|’’âå#EœxÀ4‹} ¼èZ%cEðºuk1´ @¾— nééRàÅϤә]|{¿±±xÍêÕ=jvœ2E–\Zºd)¦N›*„KKKQUU…É“'KÚŠ•+euäȑҕ¬ZLccóæÍ(Ÿ7E¬£¼ÜU¦ŠµÇ3F6P«F\ºn°$'[[š›¥plÀn¶Üg&j(@36 {;£¨A¹­¨cN0®hÍà…eø;Ãß •ìÚ›^¶}8h4ýA8IK_¨ûntLœ¸»„VÍMâÞ]'ß™è/÷2ãxbÖP Ýù@”þþìÖ�â/›ˆ5*× µj-Zc’aNLG´b“Ó“ K”+±g·YÑÞ\ö¦zX›jàl qM!YŒ±,&]Õ(|3о‚Š+Y¨óÕ‹sAEtŒ«dF Fr̼ð;Ɇe6³ÓåÒP*Ëײ$O~~>fΜ!§³QL£Ñh4ÁaÎaåÊ5"Ï1Ñï<tþš»ÿl¼þÆ»>§77·à­·>À‰'ÓmZAÁœzÊ xêéÿú]?{ˆŸwþ¥xü±{1nìhÏût5{ïÝ—ðâK¯K§³êêà‚!’””ˆ¿{$N;õ)F1BqÙÙçþ3¨híàƒçbêÔ)>§Íûú{lܸÙï²»í6Sä2–ݰa#¶ †â©§Ã?þ„y󾑢æÎZZZ¥(€ù´3v–â_\ Æ_la‰Fº;±1…÷~£P,))IŠhX†ólذA~NVV¦¨Ñe@•Z Š”8¨Ò2tDëoŽ9æ()úzã·ðóÏ¿ˆýÞ"ŸO×°t%ݶFŒpl´gƒc ®‡#^ëÌV€=÷Ü]®‡ç»Ñ=¢ºÒQÀCñË žrÊÉÒ)ΟÀŒ°¼ã /<#˲ä¨rˆ »÷…ëá¾:?t±{ûí×¥ðˆ"EæWyþY>u”ÈÕr?¸^þ £Õ¸ ,”Ž^ü ›0aþú×å±Tjˆ¨Žq<îQö^Ã÷ßt1ã±a¹Xv–fÞ˜™·‰”¨‘¢1~?ø=¤›…rt£ ÷åÐC]•È#‹ý÷¿.çJ–Óô÷ytc‰T>ù›OA7¹wÞyCŠûè°V\\ìù ãKs}ôŸž:Ÿ½õÖÛÒ}¤¬¬LÞC((ž8q‚Ø¿ý¥Ó¡1?®Üðze¾sdT36˜L@ˆy‡ƒÅ„Å•-Ø´ÚœX_Û&ò$–­tÜLr!ÎÏa(¿=FÓ— ¦¼â”)“ñúëÿ“ñ#ÝŠù¼Â8Ÿ™(ÈgÜÃxqO°NåMj‹Š)Äi¦^M~þVƒÙðª‹û=‹×Ài)|íè°þˆAŠwc§Q|Å%¾ºÊµÀápʤÁÖ \÷2oºÔþø—q¼¡¡AþÐÿ¼pV¬\!ÅdCă~rJŠly¤HŒ=PMfv»|¸‹CjZš `)(kkkEƒøQ8RÎCÁÝ76n,É’!ÒJ²E$G—.[&ȸZú——W`¼H:q;6—”ÀÚÑѣLj¿øcñbäæå")!Q ÅTòƒNgcƸ–¡ -FlÃ&‘IMI…ÃiI—¤™Â2±\]m­xß «xëoȻ͚…áCódR”ûç¯ÑZ ÌØó‘óñn$ ÖhªU5F8šÅ½—÷5Þ7yáƒQ�í‹þˆkB¹ûŠ=øJA8ïéüñ*ÊKd’Ú"†±ãÆÉÛååÿžuºWû$6óž©Ï²¶4 lñ7ho¬ÆÖ 69y;xºOv,óv/ ëub¬ùg V$MV,_&; ü!ÃDü¶“|Ð6ÆMþ½ï¸GÇBF³ýÑßñL81Нû%E$cL¨\xÁY8û¬À½³ÿ} N9í|¿ÓYó£_ëR†RÁÎuGõWlÙR†@0©÷7b×]gt›ÆcúË/¿âû~ùšâ|•È;ó< š&MÀ.»ì,ÝÃbccº­ƒe1é\L\Æíx÷í—üŠÄŽ?ñL¹.Ü~ëõ8è ý–½æº›Ð[ØØ@”ÆWÌ£cŸÀ°Ô&K;ò»Jq“fû†¿±{⦅ÌU³ÔÐ¥—^f01ó3½‰yØéžBÉÿ½ñ6îO:Îö8m,´Ùhl±âëÓwÄ^ÃRП,©hÁÎOÿŽÄh b-ýŸ7EÅÀ—ˆ¿7~‚Ž9™™²íJÇ*F£ F(ñL¸Ú‡LLL4-ƒbhp¿Ú½§ûÕaœ†Wï~þôê=îMP¹ºv0Ó„LoÄe„½eeY£ÖjØËaC eÄ€µ–erØä+—£«µÃ‰âM[””‚Ö–f466HWº—¥$§H—°Ü¼<é(ÆOf³••²—{Ž;VŒg£©©QþÑ…Ädvõdc‹åüù d=:˜ÑElݺu;f âã¥À­¶¶ÆóÊ„õÖ#N4^î´ÓNòké’%9²Pڒ󇂵êªJTUVb„hˆæ{dñuËl&Ûd¯Î”ÔTùYQÑÑb»]Nm­mhhjƆ¥¿ ¹) MâA QlÎÌâÇÔiŠû GT<bœvÄ&$À’” k’+ê-2ó>: ×h4&0Ê+%%U ̈C&[R|NGT¡‰Èü‡ê^f²Å$¦ `ÖÁ¨^û+ê7®E îSê°‰È;]üÑÙ;jk¸—Õ‰˜Ìj³zÄe$%%M¾ê™F£Ñ„Î'Ÿ|T`¶ÓN“E>cŠ‹7ùœNÑÖ;ï~ˆc9¢Û4:¿Stuúß.”¥ÆýÑØØ„sÏ¿gœ~Î9û´."1ÞÛ÷Øc9„ Ê_zù <ðàãËbÆ:7üû*¿â²o¿ý1 ¸Œâ´}÷ÝÁøè“/ Ùú””l‘n]ä°ÃFCç7ŠËÈn»…ÿ{£Ñhz‡·Ë<MØÎ2mò$Äþ²C&ÁÞгÒÙ[ƒ¤h3Åë/,ÁW§îˆÝ ’Ñ_¬«mMl6DÇngsb*bJ–cÚ.å9ôv0ÓíSF£Ñl[èMDÔØÉ^¦555h¨«FÂ·× aã—ˆêhAŒÍAM˜s´‹W+ÇÅ Úr+^ט‡£"ûxŒ(‚œì é8f6™E€ƒ¨˜hé,b C‹Å,E›ErÏåüÅé'M’å'[[ªDd ZÛZ‘—Okv/^ŒáÇ˲–Üî EŲgNNv6Ú;:ÐÜԌĤ™,¤ÈÌ.6077W–Õ\±|92³²°ãNSÑÒҌիWI¡OÒ22& ‹‹6¸Ö¬V)J£µ;Åu,íY]] ‹H–VWVÂ)âêö¶vÙ`𕙉 ›7 é½bkcðñí¤«1ÛMÅó bÄàãíåʼn}ÚóoHÛ÷dŠe¹ê<xìDfZ€¦Ñh4 <½bèŠa¤¤¤D&ÇÒÒÒåk(o«n±¡ÎGÌ–(dß)CÇ bÙÏh«¯@_—–ì »"6ÙÕàêíLŠ{™¿ñ@NfÆq£{Ym]t‹5Âò*ªG“F£Ñh4šÐX»nV¬X…‰Çû‡÷W–œ¼á?wøç¡‡ŸÂs÷í; Ôþ~Ñ9¸çÞGæŠXNóÓϾÂÅ?ûï·O¯JýôÓÜ{ߣX¹jMHóŸpÂÑò3}AqÚw?xùã’‚º@Ð!—Û¥Ùú<óÌs2öd£7K+j4EEEò•.;,é¨Ñh¶.ªb Û€†×}uãöê*‚'L6»y)±(mhÇîO-ÂsF⺽‡£?XSÓ*×0c+”eûRR†8g+EÚÜnÎeF£Ñh¶=t‘zMH³>nll”å.Í¿?ä5ïÂlož£óÙÀÉÄ¢a°»Äf'!!9õubõhh¨GsK **+ÐÜÔ$}¹0×?|Ø‘ØL•5Þé0¶|Ù2ÄÆÄÊ¿i«˜“ƒ5«Wcó¦Í"‘:I‰I²¡Òn·ÉJŠÕXn“nh‹YÌ)ãû–( Z[ZÑ"†á#†K1×’ÅÈÏÙqÇ©2)JÇ5›6‹yF [ŠáLr+V,—"²Ú𤧥!>.C‡ /7O:°ÑeÍä´£Ù’„ÚÔQ£.OD1˜î/ªûxY`GlG-’>¿ ëæËž¿Üf„p®B=F£Ñl „’ÔRóÄÄD‹˜!Æð¸½½MÞ'ébI÷²@NfF÷2“WIθä, ßõP Ùy.âÒriâÓr1tú\Ì<D–Æ$¡:‘éí2Fè^f³;<îÄd²H÷ZUš+œó¬Ñh4ÍöÎû|tž#?yy¹~§³3Þ>áw:j'žx B%0/»ü_øóѧà…ÿ¾*r>U–Î|ýwe)ËsÎûgÈâ²½÷Þ—ýó¿ÓŸ{þ~ÜcÆ“N<ÁøàÃϤ«šfëðÎ;ï᫯æá–[nÇ»ï¾/ß;âˆÃdåfÆ"ù:mÚNAÅ¢¦ç„ó¼ÎNûlã™Ý$ÚH¬pÒålý³‰v¢¼”ÄÇFáÿ>Xƒ]Ÿú¿–6¡¯YQÕ—¶l+üã9m_<gl7SÕvtžF£Ñh4šmí`¦‰8ÞÎl´µ·"yå+@´xÏánDtv Ê8ð} ª8Þæ´ 2¶�)Iˆ‹2!>.F4üƉiv¤¥¥":&C°ÆÄ 5- åe²¬UuU†`ôèÑbÝNÐÆ‰†É´u´cÜøñòóè0ÆdÝŸ ñR�FkôñãÆÉ¤B­hH¦ ¬pÔ(¹å[€–fº›%yÞÿõ×…²äæÐ!CÑÜÒŒ´ôtY“}zZºŸM˜8I4L×J´ÊªJ¹£E‹mg)N&;Ú;ÄÃSÚÒ `-]!Ef4Jqš]Žnt0ã±QG–éIº›5,z Žñ{ÈõKez;“i§2F£ÑhÃ^–l,¤ÀÜI‹U7¥¥eRè•&’œæ nYḒõf¾äìabŽöÆj4lY‡Æ² °¶ö,i—ˆ¤¼B$ƒØ¤4ƒÐ+°Y¸—9DPH÷²Í»6ðò<0î T&\£Ñh4o>úøsüóçË…?8íÔSŽÃíw<àwž7ßz¸fÎðíüsù¥ŠMt( … Šq×Ýáî{ÆèQ#1mÚŽ(,ŽÜÜé0Oš›[PYYõаxñ2¬Zµ6l×t±Þ»î¸Áo™íu늤³Z þrìHOOC0>øàSh¶›6mÆM7ÝÚå½±cÇࢋ·FCŠŠŠåën»í F30`» ]Ê÷œ2ï•,‡9%Žæ: &ì¢'%Ö‚”üdü²¾3[„ëgÇ¿÷¾buu««üÍVÀœ(â¡ÍËÅ9/Ïìj4F³í£fš „ã^æý7Åev»ÎÒ…ˆiÚ'˯ӞËé”ñÕäzé"6k¶YàŒŠG]M5r³Ó‘œ’"Ebc“ÐÑÑ!—©«©‘+?#+ÛÕûpda¡uUVT E47Ô×£pÔhYÖjÍš5HHL‰ÉdDEG#5-U–×ܰ~#ƇqãÆ¢NÌ_VV†‰'H·±Í%%rŸ†äçË[J‘d‚,ùÉé;î8õu (..’ë`²3Ç]NsõªU"á˜!Ëb²ç/]ÑÅçs}„Ùì6ĈíàöGeD£º¡õvñ·Øÿ{§¸Ìnr‰Ë˜ú5©ÃËã'ÞH\ñ)Z®•‰Q:ªùKªs£Kej4f{†÷:q f$)) 5ž÷[[[@W3ŠÄssó¶š{™¯qºŒåLÈÃ.èhi@kM)ÚªÑÑTk[#ìí"®r‰åXfÓ‹èødÄ$¦Èò— ùˆwâ×ùD$—©¬¬”ÉYŠø°SQçÌ:®Ñh4Æ7,ÛøÙg_áàƒçœïè£ÇK/¿Í›·øœÎÜËW^×_}YYݦ³‘ñ¶[ÿ%]ãé2*ŒÕXÊ“C¤Ùgï=pçÿöÛøÙÞÞ«®¾mmm~×A±Û駈`üþû’Õ4‘‡9@^{¬FÀrkûï¿þö·Ó¤ ®FC®¹æJ9h4šÈ(çâkïùY*;..VšŒZøÖ8öÆ1ŸO9eÖÂÔ%?âzg MwÙ‰9‘Ÿ€ÚV+nøp >^[ƒG‹éùIˆ$µm6¬­mE4Ýœý»ÿNÑÀgNËŨ•ïcôÞ{Ésç]îÜÍ7:—£Ñh4ÍÀG Ì4=&ØÃ§3)ǤcÔ¦o`1š-Ý.flv€N)¦²Ù\³êz+âLXRSa·YQ]SäÄ$ÙÚ-*¢¥H, éé°ZmÒÅbýºµ²D%dIIIÈÈÈ@Ey:¬ÈÊΖŸÇía¢sõêÕ3f4v˜¼ƒ,3IAØÎ;OGvVJKKQQQ¦N• ¼Ë–.“å6óòòä>pß8aèÐLÙqG”‰eèHFÅ^cÆŒ•b8«ÕŠ&±~îCBB¢,gIw2ºo°§-RêëêÐÔÒ„Žtˆcãp•È´»‘Ã-ÆsØÎ—Xk7/†#mŽü,î— ÂµhL£Ñh4Û¡$2ÍO±ßËÎÎé"0#¥[¶À‘—+íþy/÷½>ßã·!´eB™/&!±‰©ž¿¹…]Êüç÷ïK÷2E[[«ˆÏPìv0’••#Ï•·À,ܸGÇIF£Ù^yòé¤û˜w# º¾_{õ?qÞ—ù§ºº×þßMxä¡;e>¾wݵ—Š\Jyô™­Z.’%;Y3PǼoº «V¯ ¸ž‹.<[äšÒŒ'ƒ¸ iú–9sö•ƒF£Ñh*GCgùÌÌ Ìˆoĺö6¢H!“'¼s?Î9ÝF7³8 R†$cþ†:ìüØo¸qÎH\·ÏpDŠ•U­(oè@ZB”¡ù¨ŸöŸçF´gñ\eeeÊsGt®E£Ñh4šm›­ã›ª4„ÓPëÝpÈ¢'»µ1Å_ºäŒnç2éXfw §œ_­âµ©É‰´ª%ˆNHB^~>òóòDƒo6rsr#~“’eS ºè&Ö(^›1løéF‘W}}eˆ’̬,Ù•ÉM6·´4c§v’"µ_þ*Åi3fÌ¥1—,Y‚ñ9'Mºuk±rÅJŒ7C†Á*±¾ÆFWÀl‰²È ™d+W®ï, ›Õ*·Ër^öÜ [ÚÈ‘#ECh”ìAÙÚÖ†Žöv´¶´Èm·X¢‘–œ€ô¦Mhs¸ŽÕæ>&p›¾9Ý%DÕàpõ±ýö†Íq;_‡:M£Ñh4šm•ü¢[ª«ÜQ×¹­½MÄ-N”–•uéikXƒßñPÝˌ㡸—yoC¨ ¼Pƶ¦{1K—·µut‹oL&‹L6ó\¹þÖ‰KF£ÑhÂ…e ¿ùöÇ óí±Ç.Øwöžçù駸ù–{üNç½ú¬3OÁ“OÜ'r:Ùèoè8v÷]7âª+.(.{ü‰çñÞû\פIãqì1‡#t.ûþûŸ¡Ñh4&¼çv¶«ÄÇÇaö.Ó¿öXÒóÝ H”ƒl 9yY ˆ‹1ãÿÞ[ÝŸü”wujï)+«Z€V+¢L@ÿî›Sž›„5?ˆsµ³l §<¦Îåh4F3xÑ3ME¸D§.‡ž•ˑаÁõàp5š2|4¹ƒ^£ÀŒCS;¤È*cã¯hß¼­²Ô%KMÖÕÕaóæÍhjjDUU#ÅÒÓÓQ-ÞcéÉÍ›7ÉòI…£FI÷°Ž¶v¹ Eg‹qÚo¿.DG{‡𵋆ã¥K—"!>A,SˆÚÚZ¬_¿C PXX(ÝÎJJJ°£˜—šk׬•⹤Ä$)R:t(***±jåJ¤‰†i¾7lØ0)„cÉM~öÆÅû1²Ç.lib{sÅvS4—’‡¤²Eˆ/[«‰½[\Ìlîãb7ˆËTÏop\É´·6I§4%ì çÜi4F³-n"355fswŽ-¥%"ŽqHa{÷Ïð=x»B[¦'ë×- a8™õ‡{Ymm ì;Š‹6ÀKT´t’Ó‰KF£ÑhzÇO>Ò|W]y±iâ7ßÃÃ<pž;OÅ{ト3N?ɧÛY_À’˜o½ùæî?;à|o¾õ~Ð펎¿®»<¤mòÉtîE£Ñh4?ë,ÇrÆðsýb˜S¥ƒ™ÓÝ"èß@žnù$º™e IÄOëj0í‘…¸õ»è-Ë+[dã‘»¦Mÿí?Sœ›‹sUà³uO:Ej4F£øh™Æ/=M†©å¤{™ÝÓæ_`l§5º–ßSC}+`ñfTk3Ƭ}KÞbÆèxYò’¥† ‘®‚a°Ú¬Ò}lÓ¦RFaW´hx?n<š›šP^V*>یֶVèæåæaÉÒ%¨Ó§ìˆh±> É”HŒë£-!1A:¦q¼¼¢\NË/]²ÕUÕbÙ)rY~®C4€675#++ ãÇOÀ–-¥²a”b8ƒÑ£G‰FÐx)$kh¨—g›¹½bJKJPÝÔ†Ö ùûÛˆæqûnuº\Ì”ƒY×ÜùÂ!¾±m‰cí¢>ã9ð×h4f{'PR‹Î¤œžš–ÞÍ‹÷ÓúúzTˆ¸€q…a~Ç·Ž{™ÿû~oÆB¯7Ë´µ¶ÉN•åpøXQzz¦Üß@3¸Ôh4&8Ë–­Ä×ßüt¾üü<üûú+ƒÎG°G{6à<Œµ.¹ø\¼öê3øÓs–èì t^{á¹Gðà·uM£¸ì¦›ïF0¸Ýt0 ÆŠ•«ñåWßB£Ñh4ší‘Þ<«edµ˜9†ÃQ¼æä,™4–jèÓîÜœÑeÆ5o¯ÂO-ÂïeMè)Ë«šÁF%ÕVÔ›í yº8æ”,8ŹÙWœ#ž+ž3‰ó¯Ñh4f`&LBq/ã{mmm°u´"fåëRʨœŒ¡Äeî¿=®\N—KW“UÌ.bI§¸:ÓjKóó=hÜçJtXâoq ¦ºF:WTTTÈò—,9|øp¹¼Íf“ÊåË0zÌÙH/’˜ X½zìI1y‡É0‰ذ~ò‡ ‘ërPœÕÑ.Ë%в˜Â8‡("‹[ÉR—,‰9zÌX‘�5añ¿cda!&í°ƒtWkkm•¯uõu1b¸{mÙR"×±bù ¹}---ÈËËG»8. ñqè°9“œû†Ÿ4ÿ)˜ÛZ`5»šŽ;ì@¬Ùu<&÷ Ž™¡O ŽußÁ1~/yÌCqôàùñ°û{ Óî°¢Õn…Õi‡Õa‡ÍÓ£I³=aÿ¢LfD›-ˆ6YÄoE´øEC£Ñl_ðްÚ{~—p)VÞ¯ëj«»ÍOñxªˆ6oÚ„Ñ£ÇÂb1@÷2ãøàr/cüURZ"Ç+«*áÉ…ÜÜ\y޼¤Ã_j¼£ã ÑqF£é/n¹õ^ì2kº~‚`Ç^yå­€ó=úØ3¨9›«¯º$ Óר1£pç7 ¨h£t?ûø“/PYYÞ’’Œÿ´Žúó¡! ÁEqÁœËÈÞ{OúKÐù‡<¦|Õh4FÓI8ù>ï'&&`âÄñ˜öÖ—ø}ÏÂ^_)r*¶p7Œøe`OgÛQjœh‡’„×TcÚ#õ¸aß‘ø—¡]4ý^Þ sœÅKÖÇû'âsæL]þ*&½¯<Wát,íO:?£!:?£Ñh4ÝÑ3MDQ .¡—ÎæJ$µlp]i²Þ¼[ Å\›I-Ó)>k³¹JdÆF¹Dfˆ¢‹–#£ù2”M>5{!!6A&*éFÆÆŒô ‘ˆ¬Drr ªDcäЂŒ=F6Rr>º‰555a츱2ذa=²²²¥°Ì"_º—ñ³ê––ŽŒŒ ´¶¶J—’ü¼<Yæ“¢0‹ X‚“¥!Xf“ïÿ¶ðWL˜0yùù²ÌfºX~cq±üÜô´4¹“t5c‰LnOé–ÙBÜn3!1>IËßEòoo ­Å†ñ`%^­vq<LîÒ¡ÎÎç¥+ã±19Ýg<V«?‡mÿŠmˆòˆÄŒb±Á( ƒùF[+ší°;uâVã2è–{â{FêÅõa¢%ÉQñò!@£Ñh¡îl`ÍÉÉÆÊ•L\ڻͷ¹¤Dº¨–”lÂða# 9·Èº—r2 ͽ̟ˆ w%‹ÈºÅ¥¥[Ä^:±v͟˘ÍQòܨFðm%¶ÑqÆ×h4šþ¢¬¬O?ó".¼à¬ ó^öÏ ¥ëÙ’%ËÎ÷Úëï T¬÷æ¯9–Ô€óŽ9—]z!þqÉyømÑbÌŸÿ«~Ãê5ëÐÜÜpYv®=z$fΘ†]f팙3§#&&´Ææ|nºù¼ÿÁ'Aç6l¨Ü—PâŽwÞýü±F£Ñhcœùg5›!Còq@a~Û¼æ”L8šjЙÜ~fjsrQÛjÅõï­Âû«ªñÄ‘ã1-/ ¡ðÃÆzl)oBZz¼áSm¿t/çbó*0* C‡‘çŠøËU ¦ÜÎÏh¼ÑùF£éŽ˜i|â¯7I ÷2ã8“uòï ŸÃbî‘Éù—9½Þ3¹RE, »ÃåÊe1¹ÄVùÁèºJŒZð�Ú–¡}ú)°'ŒEC],QÕÑÞŽŒÌL±.‡HNÂn·ÉòUéééÒílÔ˜ÑÈÎÉ‘fÉÉÉrÞØØ¹t2+/+CáèQY8RŠÌJKK1qÒD9ïшL!YnnŽ,ÓÔÜÜ$–1‹$l²³s°ãN;ɲ—7nÄèQ£Ä¶tH±™YìÌÚµkÄ6dÈétÛˆŠ‰M|åbûê}ˆ¬Õ"fóˆ]†‰"1›kŸ£Åñê°u ËLnë2º™QT¦\Ì8¢^“j6 ¥b=b†O–e9Y6´7ç~ ýì#RgmA~4š`ð!°A\+’£â�3¶¡¥F£ pzÊòÊÆIŠÑkªËºMçzX.;5- UÕ•2p}FH«ïµãY Bzõ̽Ì8ÞîeÕ5ÕÒ‰uÓæM"ìžÄã9ÌÍÍ“ç&œ8g '2u\£ ×h4š¾âÙç^Æ¡‡üIнÁ{ðÃÞÓθ�ëל÷»ï~Â_Ž;wÜþoL:Á`'= Å8\p¾ë=:šmÚ\‚–æ´ˆÝ>⑘€‚¡ù2OÓ“ûüºuE¸ìŠÿ“¯ÁHOOÃ#݉ÔÔ” óÖ‹|Ò}÷?F£Ñh¶wÂu—÷…ìÀ/îÃ;Lš„™ï¿…{]GC•X¹‡Ô`º³:Ý.}Ré¶04 ××búC pû£qÅžã2òìå€Õ!ÛÒ|¦sŒDjû¥{Yf|wv8l/Ù™ km¨líÜÎÏhÂAçg4ÍöŽ˜iúYÓfEüÆÏeÌßEìÏû,Egvxê>2~¤Ð»¦¹3VŠr ̤ J¼:Äü ˾D܆ïa›8͹û"}‡ÙbZ,-ˆ¶ˆáZ +(‰ÏénQ8ª•å¨ohð¿(~cÀJ‘؈#0vü8éP¶rÅ Lž<E>¸TUU¡ºº&L”Û¶fíZ‘ÈL@¦²¹pbƒÖ®Ù€#Gb‡É“Q^V*Ë`ÆuÄÁf·a̘±hkoG›Í‰†v |ãZŒŠ®Aô¢×1dËb´7;ÐÁεb¿ÌÊš .‘Çåá1{#C /ß6Ic8ˆ]‡­ø'8‡í€vñ™ªá5‹Ù`s5kÁZòµ ±¦'ðá°ÉÖŽ ì'E/#«Ñh¶müõ”U'ˆ{~~~žˆ*Ä}¹û}‡±DbR2ÊË+ô´ ãÚ°{™s@º—5ˆ8­ªªMÍMhlhôŸ˜LÑòœ°Ü¹÷ôÁØ3VÇ5šÞ ãFI¬Vn¼é.<ñø½AÙˆøèÃwá”SÏGyEeÀyËDœtúß.ÂI'ƒóÏ;CÆWá)‡HÑÑaÅsÏÿO=õ‚ÌÕƒåž{ôn‘7†P¸íŽûQWWF£Ñh4¾ñ•ñ—›!4�(,‰ǯÁ¯E¿Áœ6öº2ßÏýƒØÐL¹ºçä$ ¦ÅŠ+ß\O×TãÞƒÇbÇ\ßnf‹+šñâü$dÄ…&æ‹Äö‹F>sF>LE‹Ä9ÉÃ(ÑöÆsäM Í@ÌÙèüŒ¦7èüŒF£ÙÑÞš Õ½ÌjµÊò˜ŽæJÄÕ,r]en‘”šËa(ãN]ά ¾ÕåàÅÑQ"*³Zžnfâf¼øcìðóµHüð<$¬~ ›–¢±Í†‚QŸŒ¤äTÔ7ÔcåÊ•ÒE,?/ÍMMÒ£¦ÆU2süøñˆŠŠÂï‹~“Ã;ï¼³t[ºt©t<'¦³œæêÕ«¥;YŽxoݺuhin–s”H¼r>ŠÊV,[&¦çbذár‡â’2°ª¸Í­mÈ·T#Ý«˜¹ôVäz-Ò7ÿ‡ÝSŒkŸÌnáó¸Ò¹Mì”û›I£5©Ç3ˆÌ\Í%,s(8º½-{Oûv)îëm¡FµÕbÐA¾¦7ðúáuÄëI£Ñl»ô&Y¥–¥ˆ)++KÜ›cüÎ[S]%QévÚØÔ€ÐÖï{<Ë„/ôîeM(++•¿Ñ›6n‚?bbc¥ÐŸç† æò˜:®ÑD×h4šH²`á"<ñäó!ÍKÁ÷£Þœì¬ óÚív¼ðßWqÄ‘'ã㿀ñuJ ÑQíècOÅC?²¸ìÁnÇÄ ã ,ùᇟa{çõ—_æãÅ_ƳÏ>/¾ø ÍÍú~¤Ñh4šÈ ž÷Íf³ÈÍdb„ñØo˧0¥fËĈ꫿­ 6ÑØ“…ôü$|µ¼ ÓYˆ¿¸‹J›ºŸù% øÓs¿Ë6¡ÄKÿm£h÷2¥d‹sñ™<'™™òÏÙ`Cçg4‘@çg4Íö†v0Ót£·â$ œˆ¥b¢íípº¯2µV©‡¢XŒB2‹˜O¼aóT6V;íTQdåÖUI¤ƒ\oÐÑÌÞnEbѯ0ÿŠ´ô؆LGGÞX‡î† Œž8 )YhhnDG›íbåö¦fŽ’ëúõ×_¥Èlê´iR4¶jåJLœ8Q¼7•¨­­Å˜1cäg¯^µ ñ ñ˜2eŠìõºdÉŒY(‚ê(ĉ†Î‚ÑÉØRÙ€Úª2Œ– ”ÏÇä-ß!yùJD—/¹Õµoítnãñ°zí\Â2³׉ýk˘Ò;w]ÄeN—әǙ˜âsÚj7#&f l6¢££=ç3\³änVÙш{4šHÁ^%´1ÎŽI†F£Ù~T¢Á{dII‰6¬�‹×û]ç–-[0dèP1O1F")1¹OÝËü9™!l÷²À±^¹—57· TC³HR.[¶Ôoìa6G£ `˜lìUÉËÞ°5c×h"Žk4M¤xü‰ç1mêŽØu×Aç3º/<ÿ(Î=ÿRm :?Ýή¼ú<öÄs8óo'ã ÷—þúÆvó¾þ^ ç–/_òr™™é²,æÄ‰ãCšíº ¸åÖ{±½°rå*\sÍÿa£WÇ€_|N66k4FCüå`Âu1KJJÂhw0}"æ/þ�uãçÀ¾e«ai„»ÏŒEVN¢4Txð«õxxA ¦IÆðÔ84vØ0o}lvd§ÇÉ›ý‚Ã˱Hçà€éD»Ù(yn¼é‰{ÙÖÊÑèüŒ&ÒèüŒF£Ù^Ð3Mð×@Ë÷Y¢‘'Kñ'0Guöpð´eºÌd°lr‰ªÚm¢‘¶Æ-¦2»JcÒÑËãÜÕ¹hçˆ[¤æàüM ˆ]ù5V $<Œ¬´¡p GGö°%E³5c§±)Xºz ò†ŽÀä»ËmX±v­’—Œ&«µÕÕ2d(b’2°¥ºQöÌ1~Šu-IÉü¼\LØa2lÍ5ظfÆICL]rkGLÍ*Ä,-AtS-¢)(³ QmÑn×6G×R—ÜW“ÃõÊŽ¼f·£÷ŸåÞZŒ ו4Õ×7Úݶêt?éz&Vиé7 wŒ<J`6˜ÑA¾¦¯àuÅëKûÍöK°d'²¤ÀlãF·Øý®§¼¬ y¹y.‘ÙÈQRåûó|ÞÆÐ–éЫgîeœÌBq/kmmAÉ–Ù¸üÇ‹ˆè˜ >Ìgò2­­Žk4}…Žk4M$ »Ø5×݈×_}NЬ‚1dHžöaœáåX¶l%BaÆb\{ÝÍxà'pðÁsqØaJ±Z$Ù¼y >øð3¼ÿÁ'Ø´©$¬e‡ ŠÇ½CBšŸeÓ/¿â_žŽ–Û:,k~ÁG}½Ë½7FÄhééi²üé@—566bß}ãgœq*Î?ÿ\h4fðaÌÙÐa~Ô¨Q8|ÕçxÁ´Ÿh㉇ÓÊ{¯AÌ„À]éÛt»hLJŒ1#17m¢ÍjáÆz,´ÖÈÆ£¸¤¤%ÄÂfwôxýáMwÂ$Ž9g:Ü´Vœ‹¹ÒaÞ³ì t/ÓùM_¡ó3f{@ Ì4]$ eб¬VìmµH)'¯0'Ûd Ÿ—˜ÊäIÑ­«¡’Îg"9 °ï‰˜¹Kk*§/³{5fÃ{&·Ë¼LÑ.g3³ÍKÕ&˜Å°î¤‰÷†X£Ðþu,L©é˜‘/2ŽÃÑbNBtJ†¶t ®£�ñ1ñè°Ù`‰²[>âì6˜jª�[+b¶X`êhÆŽ-•ˆÛTGm’œ5ÕÞÓÊ&˜l®ívºKWÚ)ƒ»„e‡«Ölpd3+™wvî›Ú¿±ŽªF`\žxÏášG• u¢³´¨Z©…åC—½ ÛÔ£d’“ 㾜Ë’;Y h'«ƒ|M_Âë‹×YFt"4ͶE ·²P±X,HMMÁСCQR²ÑuÏõ?§²ªR$<³E£é: >))©ýæ^¨üdx"2µ>ßãw>–P*)Ù,Ž©KþX"´ý9“™D€7tè0qL“å9é>Ý÷qhè¸FÓ×è¸F£ÑD‚ªªüãÒkñÄc÷ ...èü=ûÌC¸í¶ûðÖÛ Tèhöìs/˳]w‰]v™Ž§O•.²á@q×ï¿/Å/óÅÏ¿,”ne=‰gï³nºñZs„ó_×\{Ö­+ÂöÂgŸ}á—~ø¡¸úê+dçÆÞÆÝF£Ù¾ÕÅL3&¡‹ÙÌ'á—ïŸÁª=/„mÝ"—C{5òE¥ FƒyºS6|±"!›Óeºt.ë¯í9ËÈñÿýC˜¹çDy.Tœè/'ª{ÙÖ@çg4}ÎÏh4šm-0ÓD å^ÆWsÕbÄ8;ƒP¶:\¯t/v:;ßfG‹–V·—¥³\¤GDæ^…Wy¸R¸e ~-®à[¹›Ñ!ÌÙaÛcƒ¹¥qÎÍb¦H1¹JsæZ\‚7§[¤U`f€îZ?§ÉMw¦t^6»ØÌîÏr¦ÍØ kØD“aûŒîeÆC£Dg|.àG°ü%]Ê:¬®õ¦ÄV«{Ü"6uLäzœ®•ÄW-A{s­HðåÈdg(%'b™Ì&[›´“ ‡²Æj¼³ô[,Ü´KË×£¦¥AŸôøŒÏÝGNÁ¡wÇÐÔh4 ^g1& ’¢‚7žh4šÁO¸IÌäädŒ1LŠ¡”óª/xÏ­««•¬ÅÅE(Z€Œ.½9ás<𶆿LOaýí^VW_‹ò²róEaé²e°Úl"Vò¿ƒt/ã9à¹P ¶Þ±:®Ñô:®Ñh4‘à÷ß—à²+®Ç}÷ÜRN!.6ÿ¾þJì±Ç.¸þß·¡©©áÀ“^|é5ùwnN6 GˆûûÓK‰¾¸î––Ô74Š˜k“JKË¥X½§PÀ~öY§âœ³O «÷íw>€/¿úÛ%%[<ãçž{–Ç90:—h4¦ï‰Dç?EFFÆ‹ªkp뚟àÈŸ�GÙWƒ’Âû£ôß½ÿÛ.ÚÔòF!Vó&fŠs0Nž‹HÑß1„ÎÏhú ŸÑh4Û2Z`¦ ÿ ‡3)lÚò~yz>¨n±–[ÅÿDŒ*Ef1Q.q•rñ2˜su ËÜŠ,¹¬³sùbRÛä÷lšÓõ™Ü;:EYP1¸^•pËónšÃ½²³†û}å8frvn†RŒÉÏwÿ­Dqê3=ã†ivtº–q9N™,{)Öec/ƒØìîu›]â3“©óH›8~I¦&XKçÙzˆ<L”¶DŸCìQµ%äùàßúÕ øpÅâXÙ}NçðÍúßpǼqø{â_sÿ&�´E­Æ¯·„¨Xñµ×IqFÓ62fgg#//ee[@eµZQ[K‘Y&6mÞ«ÍŠÜÜ|ÃÝÝÈŽ{™Q8†nãuN«ªªC•l¬þý÷?DÌ(•&ÿ ¹fs òó‡Èrá4ø¢¿ã"×hú×h4šHðí·?â†ÿÜÿÜpuÈ÷ιûÏÆøqcpÓÍwK'±žBw3½YG¨Lš4ÿºîrù<ú4^yå-loØl6ϸ±4–F£Ñh4án@¾²L&KaŸ°å<cÞA4†¤ÁÙR˜"“/ÐxátÀ””.]Nhû#FÌ”ç@ņƒÍ½Lçg4ýÎÏh4šm-0Ó%Ô^&ì1ÚÞÞkkÒ‹Þv•ÇìÌ=¡‹ù˜¹SœEñËd&Æ2YÕ)ëâú…®Î_®írÍÇ’›0tT1)¡\2*Ä”K‰Ñœîå•`«‹û¯³«X jÃsŠA»Öé ¦–UÇÃÙ]Tæ)iî•©mîò7\eB¥èN¼²ÓplŒÛiÍé¡Y\Žj,+-Ž]t‚C{íÏè°ýI ÌØÓ׳ÍÊd¤²™u"èr"´kîƒåßãÊFsGh½NìN;Þ^ú8¶Q¸ó ÑSöxø”ÔWÈñÅ—¾ˆ”ØmßêöšÃË‹>•㯜t#v1Ù3­²¹3ï?]Žï2|¼zòMèo¦Ý{*j[dÏ¡Eÿx>¬ey½ñºÓ–ÅͶ…¿ž²á&1y/0a*DC§C$”éœìvjjªe¹Ì²²2Y²zø°á°¸Ý?®{Y—9º‡ê^æÏÉŒJËJÑØÐ …b¿.\$â$–Åô¿s&xÅÄÆÉÊ<áÆ):® ×è¸F£Ñ "éôÑ[Þ}ïcé vé?/ù¾:|xžxü^|üÉ—¸ûî‡PQY…Hrr.¼à,üåØ#|–àÄË/¿Ç…¾Žy.ºèüôÓ/ÝÞße—==ã{î¹;î»ïî.Ó;::ðÑGŸà«¯æaõê5¨««—Ç=??»î: ÇwlP‘Ú7ß|+×±dÉRÔÖÖ!..ØgŸ½püñARR’gÞçž{=ôh—åŸyæy9qãÆŠs÷B·Ïàv¾÷Þ²üçÚµkÑÒÒ*¯ûÉ“wÀ!‡ŒÙ³÷öÛÑaÖ¬=d.ôì³ÿ†3Ï<o¼ñ–\WqñFùðÞ{oaÈ|h4ÍöL¤b®'>>3fL—÷„½æ?†ïw¿ ¶ËD£‰»_œzzØÓÙKÎHìùã]˜2k¦OŸ*ÏA¤èï¼ÎÏ Lt~F£ÑhZ`¦ñЛ@ŸËÒ¹C–Çl-G¬­ˆv7Šº§ˆ¹ÀL×®$—6‹X­µÍõ>ÍX¦Ò»Tf÷/sç¸k#Щ3u.ëpד”:4ƒHM‰Ì”ÐMŠÏ ±´:&£+™[ÐÖMlf\]hjY¹­f×vqßÔþ[Ü.f@W³xñ팋bX6ÔÂQ®g%¹?îý£°,NÄ&ŒO,ÄßÉ5Ÿ¢¢ãR´·GÉDW¸ÉÒ­‰MÜP-ŠŸžÿnúâ9ÏCIüÛ«p*Žš2Ó‡ŽG^r¦8ÆNli¨Æ|ñ ùîòïðý†?ä¼Ù‰ižõp¯þñΘu(þ±×ñÐlŸðºK‰ŠG”îñ¦Ñh|@­Ñ£ eãX JQŒƒ8TWWɳúúz¬j]…# ‘˜ ’ ٽ̟ˆÌ7¡¸—±ŒUÉ–ØDœhÞï “®eÊbº—=Z{ê!;Ðqfk¡ãF)^øï«²,åu×^R¹LÅA÷ÚM.ÿòÿÞ1Ql=ö˜ÃqÆé'!##áBç²$.¨¬Y³W\q56mÚÜå} 8,_¾Bбî¹çNLºS·åÛÚÚäò?þøs—÷™w\±b¥Þzë<üð(,‰žR^^Žüãrã©®®Á7ß|'‡wžŽ[o½1h9°+¯¼óæ}F£Ñ„N¸�9ð÷xç§JWÍ’_žÅúY§Á¶áw‘cÖâÔÓØî QQ#¦`¤8ƇO'9ó\ʨ`°¹—éüŒfk¡ó3f[D Ì4ñ*ÉÞy²<fÑGÒ]ËÙEæe™:Egf·Ð,.HIäò®YE¾È%³»SJ˜¥\¾T L¢„fD•ä”_æNñ˜r¯5:)q`І)×3sç:ä{¦NW4Ͼ;ÜëQu<»(ÊÐUef8 c P�Í=DñóÅ#ŽK<šìr+£`O–ôtºœË¢ã܃8væ8Ù¡DNn+CtÓz8¦Ëž˜qâ�÷4ïog³F[kHóÑ–ØäÉ*Àí_€ &t›wDzžŽÝi?¬¬,ÆÆÚ2Ì3CN»ÿ»WñÔüwåøS¿¼;¨ýWþøW}øˆ¿fÎi8{×#  ^éº7‰F³]n3::cÇŽAIÉÑàՂؘàâíšš¤¦¦Áf·bíšÕÈÍËC~n‚Y’õÖ½,X™ÊPæë¾LÏÜËjÅ1(¯(1•UUÕX¿¾( k™ÂdŽFrJŠ8æ£å±ï2m� Éü¡ãšž£ãšÞ£ãF)Þzû×ÔâŽ;n@\llÈË%&&à¼sOÇ©§‡×^/ü÷Ô`k””ˆO8'Ÿô¤¥¥"\˜ëºåÖ{ñúïb{㪫®@ss³¿ë®{ñÛo‹äø /<ãÄ***pÞyJÇ2BÖAýI:yQ8öË/ ðæ›o£¡¡QŠÈÞzëµ.Ë“Ûn»Ó#.ãòÇ{4† +Ë4à»ï~À«¯¾.Ý…¹<]É/~ø¡Ø}÷ÝÐØØˆsι@.KgµóÏ?WŽÇz]»\×é§Ÿ%×Ãør¯½öÀœ9ûJáaYY9ÞÿCéœö믿IÚ“O>*òt1ðŇ~,ŸvÜq Ž8â0Ͼ¦§§A£Ñh4豋™w~†ðovF«¬¬Â™¢!é¶_ ~Ì^°oZ.ÚFtsgD°Û`6 )âØž5)£F”Çœ—…Cçvt~¦çèüLïÑùF³­¡#.M¯Q½G(f²Y;Zò!L¢-Щl¹ ÎeR¼e‡:q%'í­®²-±€Õæ›ÅÇÁ#þ’ËÄ[F‡0% óˆË ².Ngè•…e&t:“™ŒB6Nt—áôÌçžît»‰9Ûäè,e©æUó]Ø`ÚqŸØÞjsºÄd,{É’¡"•šêÞÆ˜N¡EŒ›ÝÝÍLæÎm£Ð,ªúgX3w’e2)03ž«\&³ÙÞtžÒÆj\þáCž Ÿ–¹Os5’c‚.;!{„È›‹çá>è+Žž2ší^:Ð×h¶-"Yf*UÜ'Ož„Ÿžè(sÀR™ŠÆÆÙ˜År>e¥¥h¨¯GAÁpÙÈÙWîeÆñȸ—ù>~ÄjlP+++•Øð¸|ùJÙ0má ±4¦Ù)SvÇ|0£ãÍÖDÇ5&’|ýÍ8çœàþûn [ ÅR×§z‚w}ÿÃÏxÿýOðÍ·?ˆ’} ÝÜwÛm&=ø�Ì™³W—ÜH80ž¹æÚ›ðåWßb{dèÐ!žññãÇyf÷å˜ÿÁyëÎ;ïlüío§w™¾÷Þ{a‡&á_ÿºAƇ,MyÔQGz¦S Ʋ˜d÷Ýw•¥71äÌ™3D#÷(Üxã-ز¥ü±3fì,m8pyËbrðÅr—qÝ7Ýt8`ÿ.Óÿüç#pç÷àµ×ÞÀ²eËñúëo⤓Nð¹.ŠËXòó²Ëþ1¨:Ch4Í@ P@ós �™÷›ó×àîòUhÏGéj�DCÓ ì6˜‡ŒEŒ8¦ç§mF^ÞXy¬CËç L÷2¢ó3š­‰ÎÏh4šm -0ÓHzÛøJ›z»ÝSÓ&ĵn�(|r‹¯ œÀn1”[ŒåqÓãŽ55É%0ãì-í®2’í.G¯·“™\ÆÜ)Ðò8€â[Š»T¼ëq1s¿Fæ“å3 ¢/åT¦Dc*üõˆÁ�ÃF£‹#šqœè ÉRõîY( ³;;Emf·#›:D|ßÈhq Äþ&ˆc˜ír)“â¹(׌f5³rvsP%CÅ|I_BUá©¢7 )))îýØI®v‡¸†”5\�nûê´¸kß³I¨A¾Z_ùÑ#ž‡…½FMÿö?ší^¼cÍ:¡Ñl„ëbFFމÒÒ2oBR¢9¤äøt½àý˜%¦Ö¬Y…¬Ì, 2¯RSÓ½Ì8X¨Æý,¯(G]m«ä¹øû矊e!Æ!&ÑP+Žóp >ƒ×h¶6:®Ñh4‘fÑïKð—ãÎÀí·]iÓvD¸D‰„Ïì}öÝ«¾ûî'üüËBü2ÿ7é 23Ó1kÖΘ5s:öÙ{dee 7¬]·—_ñ/¬[WMhœqÆi8ì°CðÛo¿ãOšësž<�·Þz‡ï±Ü¥ÆÚ‡+†Úe—Y>´é6jT!&LßÍí6*++ñÉ'ŸÉñ“O>±›¸Œ0výç?/ÆO?ý,K}þï¯ú˜åädãÿø»—i4M�Âé�J~†ùöÞ{O´´´â¬Õ?à¡æ˜r á¨Ø Ú ¢Í8]Æáã==ÝÝ®e·Â"Ž!šªqVÛ(7Vc£ h¨¥1Ñß÷KŸÑlmt~F£Ñlkh™&d•ǤS@Ñ¥óevx¢RðË-¶Rj+Ë-ÌbÇ’ä4i&Í(´jm¬vÀfb]ÓÔ§23º»•¡óoÆŽ·8Íá4ˆ¿ÜŸ¥–õ8’¡s[MJgPcQ£s™Ú'¸w_-gØíNAœ©³L¦Ó-6cµ-î7Åeq1,'!ÆS:]Êà¿9ÇVm£©sœóÆÙ6ÁÔ^ G\¢ÿmüÃu*ë/g³V{ðÞËeÕø`ùrœµïo9ð¼°ƒüÕUqþ[wÁæ°É¿ÇgÀþQ²Ðžóø…X_]"í‘¿9ïQ¬­ÚŒxó7-GmKòS²pè¤=qÞ®G!!Æwy‘¦ö<»àC|±f6Ô”¢ÕÖŽLq1Ì(˜ˆÓf,_~ÿ:îþöå.ËßòÕsr u9ž°{—élYƒ}Š—£´± qâË545»˜‚¿Í:CR²Ñli¨Äsb¿¾Y÷;67”Ë/˜Ì8nWœ¼óÏe}[^Xø1>\ñ#ŠëJÅ÷%3Åq¸lö‰˜3‘‚סô5šm‹H•bà8]Øs“n ­-ÍHHèZ&Çß=“ï³ O||‚œ^YU‰ÚºZ 2T4„f‰û·GÖnÜ‚.Ûb\—aÍ~ÇîeœÌzV]ƹMuµµ¨¨¬p•KŽÂÚÕEؼYÄ#fsHe1I”¸¥¤¦búôi]1ccŽk:ÑqMwt\£ÑhB‰O"éÄ)ÊÊ+pÆ™ÇEž…ÓO;±Ç÷è””drÈr ›6•`ÙòUذ¡EÅQT´ UUUhnn Ç-]–1X232¤(}äÈa(9ã'ŒÅ˜Ñ…ˆï¼û‘,‹É|×@#”ã¾5ã§ììl¿â2â*A…ÖV VÄ]—Íò\ûyäá"?ÖÝñaÊ”Éè)_~9Oæ0ù9ǬßùèÄ{È!á±Çž”"È¢¢bq½è6ß´iS=åB5F>¡¸–yçg8ðþ0{ö^²cßÙkÞÇã¹GÜ=ŽŠ"Ùàäô4ØÀ§7»žn˜.žÍ9#ശᜪ÷1fìhylyŒU®+AÙ@ÊãèüL':?ÓŸÑh4šðÑO¿¿„“Èt•Ç´"©â[)ˆò¯LƒÇ nQ•{Y³[ÄãœY]b+ЬÚÚ›M:ó¢Ý.fqµR&÷}˜í•·`LÅÃfoQ›Ó,+a–Ç�ÌÔ)S/&%ÞB§à¬‹` èt83u~¦:TÞe3Æu›:…e%0åz?ʽÏ,+^è^–äÉuÙÑ)$³¶;dA±×Wþ)¬ÉgÉd¨Q`¯s<P‚}«§¦ªÞ^ú-ìîùö5 ³†OB8ðAáÔÿ݈†ö&ù7ƒîçOø?¤ÄFÞžÖîpâçâ¥8õÕÿ ÝÖù³¡f‹Î_Ãç«çãÍSnEbL×2|08éåëQÞTïmÿ`Å÷r¸v¿ÓqÖ.‡£'Üñõ‹xôÇ·<½h·ôòò xå÷ÏðøÑWaÏÂI>[ý .~÷^´ZÛ»¼Ï‡/üö1ž:öì[ØmÙ Õ[äqÜX×Ù«ëùbíü¸q ^;ùfDŠP®CF³ín)ÂFÍ]w…¯¾úíí6ñw B¥½½MܦÍHNJFk[+Š7cKéd‰F¸üÜ<qroGhëë­+YÏ×ízƒ sµµ5¨®®‚Õj“-¢!xÁ¯¿‰˜Ê²°ŒD‰@0&6N[ã`Š_üMëϘGÇ5.t\£ãF³íA1ù}÷?† áú]¼Üô–aÆÊÁteÜAaZ_SWWÛï|�~ø4½‡ùB ³Š‹7¢¼¼\–µd™MºØ›ÍÖeþôôté(öé§ŸKw³#<sçî/cÄwœ‚´´4ô–Õ«×ÈWÆýííÒ¡ÌÆÏ+.ö-0ó%€Óh4Mwå\‚åg¼Ef„gffbŸ}ö”ñÉ™ëÞÀS9GÃ,ÌÖ/—,?²½LgYL:—u´àÌŠ·0~t¡<¦<¶¡ˆËÂ)¹5Ú¢t~Æ…ÎÏèüŒF£ÑD -0Óô ˜tÈb£"Z¶ ¡ú{Ñò*Eu¯¤ØÊ-Úrš;…[F‡{)–r ¹bR]˲L$ÛkÛÄÐnu Íìtïc¯«ëù :ƽ^Sçà4¸˜ÉÎ ÊaÌÙ)*“Û¡œÈ|¹ª{o¸ÅkÊmMÆÀ¯å”M-ãÞo“ayUS‰Ì¸<e¥¸ŒB3),Kû•.ö/Õ½Nã>DÄn^.fœæ‰c“Pý)ªGœ&’e]«`çsk άŽàÖ‚Ë<ãž¼½3Nõ&Ùs‚$‹àþÙã®C^r&ú‚6[;þùþÈIÊÀ±;ÎAfB*—­Ã|%VVVážoÿ‡ÿ3X$;Ä…sþ[wz‚ü™Ã&áÏSf#56ËÅüÏ-ø�Ím¸õ«ç1£`<¦ ¹ãfŠ–L …›WÈåÆe ÇÙ»!ÇwÊãYÿK¿}ŠG~|S޳'Î!÷À.âa‰½_®ýß­_$×ÿ÷wîÅ7ç?v/p»Î}ó¹üÜýÇÎÄŒaa¯_®]ˆE%«PÚP…Ó^¹Ÿy²;¸"Ù|Æë7y‚|>:i/qÞ2°ºr#>[5_>@´Û; B¹5Íà#Ò¥rrr0cÆ4üüóÓXFH-Š–ÖDGE!!>MÍM(ݲ•ÈÉÍENvn—R?Ï½Ì ›HÜÖVW£º¦Z&q¹t‰]ð󯢸I:²…OX¢bäÀr[t¼ ¾–±PÑqŽkt\£Ñh" Ý=yß(üðÃ/8üˆ“¤“ÙßÎ811}×#?)©ï<Œq(*»óî‡P[[‡Ä`sǪ¯¯Çk¯½¯¿þkÖ¬õ”¼4(>¿îº«å´Ï>ûBž ®‹),‰ÝvÛGu¤O±W(ÐOñç?òrj4¦wô4?ãkáô!C†HA9¯èm<‘r�0d<ì[V3áàý¬ÁÚ.¦‹çX˱0×•âœÆÏ1Ö-.ã1õ%.ë¶Ž\S¡ó3:?£ó3FY´ÀLÓë’ ì(íí›Ö‰ÆR§ÇqË#®òX†¹‡û=£X”K”e¯QÉ.ZŒ¸ßÆŠüdfâ•6›nî¡Ýõž3Ú%ز[˜ts—Î4»æ¥ ͳƈÚà@æÀ¡ÓUÍ3ŸA”&ÿtçÄ”ÍS ®ò›Æå”È )·_:‹ÛeŒB:n;_£éÎ&â›(–ÅŒu-ïP®eè* 󔵎/à)*fÍ‹PÛQ [l²±z 6À*lNGÐyVT{Ƨ‹ WQTS†Ï×ÌÇܱ³02#¯ûºE@yÞÛw‰å‹äßQâB{ô¨Ë1!{––­ÇûË¿Ãá;ìí³CO©j®Ã$±¾×O¾‰±.'–“İwáN¸@l ykÉ׸zÎ)b{\eÀ–ˆm¡•2aÿêÉ7ŠëÃuU2(ß»p*Ž{ñ:¤Å'á73ЧM/›xxPþ1âÁ‚ƒ7_¯ûM\{Ù‹„½6æŒÙÙ3í´‡à’÷îÅ;K¿EMk½ ÁÑ;î‹ÞÂàþŠ–¯üìÇŽ¹Rœ§™žéîq núâ9<5ÿ]T6×â¡ÞÀ¿8Ó3ýéïK»fRš‹×ÿz“ì¤à>ŸòÊÐÒ™²%¡\‡fÛ¢'¥Ș1cd©ÌÕ«×Â,nìq±æ°î³i9ÚÛ¨˜(466aKI‰›%'§ +3éé"ê;\ï­{Y e|ÍÇý¦xŒŽeM"NqJÇ2»Ýß~[,Üêä=+×2b±D‹é8Œ7V ã°­ ã×è¸F£Ñ„C x„÷V‡¸ïÒ™¼•5tLô±gðÙç_áê«þY3§c0²båjÜ|Ë=X¼x"Ê•>Pœ5Pò=«V­ÆE]"ãdENN6F*”Õ…í´ÓޏêªkQZZæst³½å–qê©•e2.üUºŽQ`¹aC‘^yå5œwÞÙ8ýôS.=̓†ÓS£Ñh4áã+ò—“Q¾7lØ0ì½÷²mä¢ÍóðdÛT4 ÛŽÍ+Ým'î2:¼>i;›î*3jÏê‰[ã,çïQ8{íµ‡<–þÄeÁÊdÄö'ŸÑùŸÑh4šÈ¢fš0îÞA>Š,™°áX ¥½¥³˜³ÓL Ê(¨²¸CYS×A §(®’qU¼Š!ÊĺKeR4&…f–eƒÓ%"³s›u¸„[JÌeq‹¯º9^¡¶ÏcaæÞ÷ßžm5ŠÇø–¡Ü§g}NƒðÌ0ÛEAY4<Njt-ciB&ö9*M¼R¸Ï7(޳»ÅcÆu·ßPS›ÜÎh|Ï"V×´Ö¤¡òÝP"NOðÕ»-†‰±Èi¯þEµ¥xX‰/tC—€×ëÕŸ<&{Iöd¸ýàó=V¼g½~«ì]òÁŠñÃ#’\¹ïÉž _Á€ýÁïßÀÊÊ"Ô¶6ÈÃÒr]û×Úè™oTæPO¯Øeøøù¢§zÜûåÉc¯–=jÖÕléÒÃDqø¤½e OÖÖlF$˜¿q9ÖW—Èñ“§ÿ©K¯¸rß“¤3í˜ß]öþ5÷ Ͼ¿»ì[Ï|7tv— ŸÌ(˜ˆóv= wû2"A(סF£œô¦ƒ¿ygΜ!ï±7n†EÜìc¢Ma'Óì ÍHLHÎ$q54ÔËÁ²±YbHGbR²ˆ'ŒuÀás<T÷2ã¸?÷2ºMÐa­¡žÛÓàqMá¾6‹¶… ~GS£Ë±,\a1‹Ä[l|††wöÝ =ÅñÐqŽkt\£Ñhá8uøšŸ‚n‡ˆX†o  ÌëÖá̳.Æ´©S¤›ÙÞ{ïŽÁÀê5ëðüó¯à£?PîpÞ¨Œfs×{i¸qRÄUÿ÷ÿ–â2nëé§Ÿ"ÆrssÑÆ'˜{ùòøæ›ïðÆoI±×Ã?†1cF‹Æð=ÃZoV–ëþ›˜˜ Ö÷%4FÓ¿„“Ÿ 6Ý(2>|8f϶àûïÄ¥UkðÄêr”M8vŠÌ¶ÎÆŸ‹Õ¶¡én§˰ñÈ[ù)ÎÎm@vÖp). ä\,Žh¥1:?£ó3:?£Ñh4‘Å ¦0×Ña…³£)õßHÜ"'U¶Qºl™\îdŽ)×-5ÍléH™£Å*âÄ † :U É@ŒOaòHIRùš@»Yñ~¬Ëé,&Ê5X %3‰rS#“ÁµÌ sªW·ó˜£ó™a=œÇãPfÜŸ+Åm&—£;šÆ‰}ŠÛ ö%1Õ5ðo–`ËC¾kŸí"γ¹+1ðøðxÐÌ¥Bƒ§$&¥—™ûkê<þ­Å–¿ç>G½³qí­Ë]¤°º¾ Ö}µc×µ5⤗®Ç²ò ž÷îÿþ5¼þGgÂ𒽎óôhnoõX³|¤ÙyèŸïÉ.ðŒW·t–X—=\îy{É×xyÑgÒ:ØHo­•“b|ùí6+l^îù»¡µ‘૵ =ã‡íà;ém‰ÆìQ.a~ÖV»2jÄøJwïŸìÄtì3Ê·øàÏSöF£Ñ„BO­û•fÜ}÷Ý——ƒ††VØl=o˜¤˜Ëf³I¡ËèbÆûoee9V­Z‰E¿-ÄŠ˰¹d“,;dw—Ф{·¡±±eåe¢¡x­hÄ[†â"‘˜ª­•ÓX´¤¤~ð9¾üü):ë)Kââ“ı˕eŽ«¬7è¸FÇ5¾ÐqF£ñ†t’™™…΢ߗà¿_‰SO;_4îþŒÊïb;/¸è û—ÓñþŸ hqÉÊr•è¥2KJ¶`ýzWÜrì±Gã¼óÎñ+.cÌq"±6}ú4üãÇ£>èyÿ£>A¸ÐM47·H74F£Ñô?ሑB:)áÙСC1gÎl ‚ËÆ81á—a>Y4”$Á)î÷ÞÍ9žv!¶¥éŒyDÃÉ„?þ'ÑÐ!ùò˜Åe¾Žo8‡:m  ó3:?ã ŸÑh4ßh3OB)á’¥n)¢Lí‘…cžr’—5$;4•‹—GÄep(–ë`)Ì6·f+N\¨ãÛÄ{-®iœ`§s™ÕõêTe3¯]öÇk»¥fÌÙU<¦ÄYfµ]nÁÜB2§×òjº±¨Ù ô2¹ƒ%Ú-sªD¨)Ö5ðo»Ø/›ˆ«ìbŸ-‰âýÃ6º‰Sm#¼ÄdÆÏt Ð$â³ë¿B½µ^œ§(Ùh­\ÌŒ þú¸ÁTü¬¾©®\ÎWÒP…é.[âGŽº'½|½ U°ÿâ‰ÿ–Aâýß½êYþ/;í‹E ¯(k¬ñŒg&¤ Ò$ù©%ŸÓÙ»„õà âOq0ž[ø!:ÄÅ}ÍÇâߟ=…Éy£¥5ó®#vÀ^…SÕ;7ºÍõøbͬ,/Æúšli¨Ç¢ 6CøÐ~‚Ãó¤8æ…kBZ¦ª©ãDÛI…áüL `#]š#{ìðÁ­·˜°ý 4‹ž–ÊdCß>ûì¯¾š‡ªª¤¤$ !>=E†â÷8*Ê‚ôôtñYf´µ·¡¥¹Yº›q(uσ¸Ø8ÄŠn,Ÿe‰‚Ùb–=òØ ­œÅXÊÒ.î9Šqœ6þííbÝížW«µ« ÎüüÊŠj,Zô‡øì¹ïféXÖó~*ÑÑb»’DciöÞ{/Oùb[›é¸FÇ5 ×h4šÞÀ{"ŸãÛÛ;ŸŸ/Eçƒ Íοðr±Íy8èÀýpôQ‡aذ¡ØšÔ×7àó/¾Æûï"·o0ÁãHwä8©¥¥Å3ÎR˜þøõ×ßD\é»qqË–RÌŸ¿@ ¿(&óÅ”)“Eü+]̼…j¡Ÿ¹s÷Ç<,ãùÿýïU\sÍ•~çýí·E2þž6m*’““¡Ñh4š­C çyão?ßËÎΖ‚©Ÿ~úg‹ÜÅ›¿>‚ï&ž$^Óà¬ÜØYöÆH°‡Æmaºx^7emT±Øsá#8zêq¬2e§¿”””Ë[ÎFçgt~F¡ó3F´ÀLÓ+Xž==ãK?”B*Š›¤Ê-†ê" s¿KM› -y{u‹¥ìí.7/µ ݽXBÒ']y/ñˆ…"4w)IŠ´8Nq™S½ºß“ µn™GOf’{$Hg2s×íó¸Ð)(3:†)71UžR9´ñ}).3¸¶ÉoœÅ%8ã«t,«‡,óI,1b–T×t夿Ù ««ÜŸgêºòsÜŸíhCtã8ãgK1à@.“%6Üê ÜkxTÆPè“›–{ýI¹#ñÒ‰7t öOÁ~‹µÍóð°×¨i¸åÀsº¬ï×’Îäü¸¬áüßþgˆ‡ŽT<=ÿ}¹ øÛÉõâÓâ’qùì“pÒô?!\h‹|õGá›õ¿u{¨Š2[0&«�k«"cQ¬àù—æWÀÞÐÖ™œNŽK¸LRtdý(“6öÔh¶uzS*ÓŸÈŒ÷×}÷¯¿þU2`HLŒGoq%÷œˆ‹CRb¢LFP0ÞÚÖ*ð:Dc3ñ‹‰H euu ¢Qo#V¯Z+b(‡«õVT¦°08ARrr"fÍšé)õåÏ1Î߸Ô Tt\ãBÇ5:®Ñh4þ µt¦ë~׌ñã'ˆXc¥¥exæÙ—ðìs/cú´qÈ!`÷ÝfaÈ<ô••Õøå—…øè“/D#ó‚ïTæ‰'É×PcŸ­Õð;tèwIW‡Œ‹>úÏÝâG^7Üp“ßu|ðÁ‡x≧å8ÆŽ8â°nó|øáÇR\FÆŒéê”ïÙŠÕ|Aݹs÷ÃgŸ}·ÞzcÇŽ‘ŽkÞБí²Ë®DCC#ÒÒRñÑGï èøS£Ñhá–Ê %gCøSsæì‹ âñöèÕÿÅëq³Ð<r¥k>§™-Ø.`#YL,“°iŽmiÓ QX83gÎ9­ÞˆËº{™ÎϸÐùŸÑh4šH¡fšÃdÕj…½£ µ_¹DSž‰n¡ÅdJœev ¦·…S™²ì5ǹEXJ&îß‘Ã1'ŠÅi BA–Uü͸К³Ý%ÖrÙýºÝÍìgNgçg«ÏR8ѹ½Þ2׆v¾xÊ{ºK}ÊR–ªÌ§ÅµQ™Ú1¾åø¹öz× Ek÷êÅ>ZâÕ‡t~¦çXÿör/“ëv‹Üàv<3³<gÍçhÊÜ mmm¢±;ÁØZŽfÑâÀYƒ${÷µ“ RÉ;˾Å1;ÎñLóöÚ;­‡'æŒÄ£¾Lººy{é7žñÝFNÁ@À".ª‹ö<çîv$n^…_6.ï›Wʇ’–Ž6ü_ûÉcˆ‹ŽÅÑSf‡¼^:Õœô¿{êÒÊ*ëÒï˜?F<0åc´ø{iÙ:ûßkIRY ÖÍ“Ç\áéÁ R\å?Râ;¯×`ÖÉ í‘±VŽÞ^ &dB™±±i¿ýæàÇBqñ&wB3 ‘BÞŸÍ&DÇD#6.Vº›1p±Ù\ÎdV«lV÷8dùLéTæ~UÛ*×Êd\Ô"bƒúºÑøZ%ÐÊP^V!ä(&3¹Ee&säb:—E‰ûWAÁì²Ë¬—y¢cÅ@oÜÓq ×è¸F£Ñ„N ƒì´ÓNÒõs0Ф¸/¿þö‡cY3§ËaêÔ)ÈÏÏH¢¼¢K–,É¿á—ù¿býúb vxΧLqÝ×ñO(åÜû›„„xà²lå/¿,Àgœ-bC†äKDz?þXŒ÷Þ{_Æ€騩©í¶Ž£Ž:¯¼òšuÝ|ómÒílÏ=÷¯êê|÷Ý÷øâ‹¯ä¼“ü_º,ÏãµÃ“Äu°_~9OŠÇÆŒ-¯A®GqÕU—Ëí)/¯Àí·ß%ÅfÑ-®±± +V¬”â3%d;ÿüsµ¸L£Ñhú€¾™Q8µë®» ))IŽV®Ã›‹—ãñGЇJUÑÙƒ_a(#ã“Á4Ý)ÆÌ8‰üÁ”%/áèá±È=&ŒÇäÉ;Èж,.#:?ãBçgt~F£Ñh"…˜mç„Z ÓL²8"Po)Bœ­RŠ£<!£ÉíÀe´Ýr‹»T;¥ uMóË%H‹u•Ф[™šÇ!îãN«[ÈÅ{1E]1B6©ÿŽsÏ·™½S`æ4ºšÄfjÜiÜN³K<¦Ê}ÊA ÏÌï™ÝB3¹Qû¡^&wÌ ·ÁéÚ6g›Kç`Ž* nob;¢DLdŠv;wÙP§á˜ªÃ)_â2£xÏ-tƒ[ü–\ÿ;.C‡H౑9î#}A´)x€uЄÝpëWÿ…ÍaÃ÷þð Ì(˜è™îì“ü”,<{ÜuÝlƒço\ŽŸŠ]e1b,Ñ8lÒžH°>ün#&˰Vý}ß¿‚G|KþýèOo†èW´Øäï]8 Ïw­ì=bÄæp Òä'gyÆã¢b0>;ô;¹Ižñ¥åëüŠ×U• ÕÚŽHÊu¨Ñh?‘L`ÇÙ µÇ»‹Æ®EXµj:¬vdf¤ôá½—e0]Îb‘ÌŠuÆÊmqJ™#èxLl4RS’0lX>¦M›Ò2ÆñPçó^¦¡¾Ÿ}ú‘Ïi¡2vìxŒCRR¢ì™<ÐÐqMWt\£ãFÓsxŸ‘®K£GÁêÕ«0ØÙ¼y‹Þzûùw\l,FŒ†‘#‡‹×¹¯ì —˜x1$&¸î{­m,Þ‚–ÖV)ª®®Å†¢bmæ.%·ÆœœÄÅÅØ|Ž‘+®¸Tœ‹b,_¾K—.“ƒŠÐn¹åFÜu×½>fYYYbÚíç0ŠÕ8xCÚm·Ý,¯o.¼ð<\pÁŲSìƒ>"ßKLLÀ¼yŸ{Ž!ãÇçž{ —_~µÜÆE‹~—ƒ7Œïÿþ÷ ¤ðM£Ñh4ýOoEfüÝßqÇ)ò¾ñÇKpfz=æ/Æî„Ú‘»ÂQ[ gcµ—›Ù`¯‡ér[0%g”žŒ¢ŸqHû˜µÓ¤¦¦b§¦   Àµ¦>— $t~¦+:?£ó3FÓ[´ÀLÓc\3b·|(]·Lng2—3<j()–R ¹c_KåÆLå'¡^“]B,“{š\ÔÚµì¦GìÕ):£k—c9ÜŸ§:'¸fpDgN÷ßîí4Ö¡4¹Åe0–¿T3w‰K¸ËQzÜÉ8ŸÍ-$c©Î6xJx:áµþh÷ŸÎN1Ú(ƒ¥S<&ç±ÃãXfVîdq™ç º…oPîiâ5ÆÜˆ([…X&]–ÉdI©H¼lëm­f‡¤dãˆÉ{áÍÅóäß—ð Þ?ý®.A¼ ö/xûù÷cG_%kÌa¯ƒ+?zØó÷“÷Fvb¶6Ü®Å[ÖbIÙzœ>ãÄEwöŽŠÆûœŒg|€6kŠkËÃZwI}…gü ‰»u òÉ[Ö Òì;zg<³à}9ÎÞ?{šês¾–ì¤tL2Nî+IOÆ„œ‘XYQ„š–Ì[÷æŒÙ¹Û²o.‡Ho¸ed5Mdé+‘“—3fì,EéŠPV^‹ì¬TÙ(¨‰ FqYrrrÈËõ§K«Žkt\£ãFc$Ôr˜þ ('--M4NÝ&fÞ´‰üÒªÕkå é ëxîéÖÕú+¢KÌ3Ï<!Ý¿>ýôslذ--­ÈÊÊ”.2§Ÿ~ª,¥ˆéÓ§áwÞÀk¯½~ ;p±\GJJ2FŒ½öÚC–ßôçÒ¿óÎÓñä“âé§Ÿ•ñ8—å¼t+£C™";;[në·ß~‡÷Þû@lk‘œ‡kt]c9÷¿üåÑ?F£é;‚ÅI½™¾OAUFF†@Ó‘rr]¾Xúæåì Û°à¨Þ ´Ô»‡pÊN‡¦„T˜3 U¹ûŠ}Ülžˆ%&aäȘ4i¢Œ+²¾— $ñ™ÎÏèüŒÎÏh4MdÑ3M`�J±’ÍÚŽ´Úy.Á•*‰©DbJeq ¤<Â3÷k‘™ÉåÀåTóðï8±l¬ËéK ÑÔ«ró@1—Ó°‹áY q–ç3Ýîe]ÜÕàõžo;ˆš¼¦+l®Òœòóm]ÒäjÎfèŠÜ'»Ë±¥Aa»Á°Ý¦Î÷Œâ3ãû÷2Kç¶Sp—Pùš¯Dkk뀘Ś£aowîÍpÙÞ'âóU ¤ñ†šRœþÚÍxî/×!1¶3ÙÊ`Þ¹ø\¾¾­ g¾~«Xv‹ü›VºWÌ>{¾ùž[ø¡o·uà’½Žë2}Á¦2È'©Ù]¦ÅY:… ¬yïM¦x°TÐúø„©s»LgoŒÇ~zþˆ5À<†Fb Ðõm]-ƒw9ÃÓr±±®o-ùZü½c·0ß®_„¿¿{¯ø;äÃÜ÷<³ûË~Ä{Ë@Ÿ\÷Éãxý¯7ahjŽgÙŸ‹—âéùï!ðúãu¨Ñh4¤7"32qâÙCöçŸç£¼¢i©IHKOÅàMSv§7 å=Åá4cíºb$%§bÚ´©¨è¸FÇ5:®Ñh4¡ªàÏñ11ѲÄß_|ŽÚÚh¶}ؾ뮻ÉsoÌål­rT—^z‰‚A…YüñÚk/\ÆÎ<ó 9ô„)S&ã¾ûî:;‡Ìž½Âeþü Ñh4šÈÐW"3%¤â+…U!çææJ×ù£SS0cÓ||µìüœ»·x0GMI§ÐlÐàr00%¤Áœ‘ToÆ®Ëþ‹}s£1|ç±275~üx)˜6²­‹ËˆÎÏèüŒÎÏh4MdÑ3M ¸Ìnw ª¥‰+a¢y„r-ƒ{\9ˆ¹Åfp‹¦œNƒ0J½*™Q€Fq×kŒî¡*>õ8ž¡«0Í(VSŸeòšîù\“×6›Ñ]fÜ/µœrBsï›ÇáÕä“Eunƒ ‚6§— MýMž™Õ,a,Ééê³:gpc6·‹™GÇAÄ-ñMŸ£Þv‰8oQ=vïè×DK lmç¡õð-Ÿ‹‹Þ¾[§~—ãÐg/Ň^ÔŶØ ¯þøù€@LÞvðù¢ 9iÚŸðâoŸJ+æû¾{‹·¬‘=/b£b°´tÞZöµgÞSgÜeÙIy#=ã/ÿþ©|`JŒ‰“½d&dÀ…;"AüÝÒц7…ʦ:Ì= ÑqXV¾o.ù ñÑþŇÃÒ;ËNÜûí«X]¹ sÇÏ’ëæÃRJl’|øZUQŒöFeÅ);‹HÖÞuØÅ8þÅëd éû÷ãõÅ_b·á“Å4 ––­Ç§«~–ç’\°ûÑž Ÿœ1óP¼öÇçòœmi¨ÄÜ'/––Õì´FlÃk`læ0Ô´6 ²¹½×ŸF£Ù¾ˆtÓ{“–sç EIÉ´´´#++]$5¦Ø;\zëÆÒS† +Ã@GÇ5:®ÑqF£ ÷V¾Og¨!C†b÷Ý÷À‡¾ͶÏ{ì)WxîýåcZ#®F£Ñh4=%R9bÌÓ(Ô{Ì'°Äòš5k¥Cèˆa­Ø§ø|³ì[,ÌÞ¶¡àl®ƒS<³É†Ÿz¯•îf˜Rr`y€¨Êu˜±ì%ì“cAáÎ#¤ nÔ¨BŒ;ÑÑÑrÿC-‰Î{áLßZèüŒÎÏèüŒF£ÑD-0Óô ÌŒF7­�ì˜Ý-„rº„Va—ÁÍËdp�óˆÄÌèæ(&õ^,“ÙâZ¯§ä¦{ºrH3y¹zy\œè"Òò”Þ4¡« ™¯gUšÒ{>oAš²™º–GDfX§¿Õd ÑXWyLuLfS×MíæXæO0§\ÌÜb·ÛZD·Á;Iž»ØØY¦+9*>h O¸‡´®½þÓ'e€È ð˜®Á^…SeMûdï…6[Êk°¨dÞZú§ö=a0yÃgÊ q 06{˜x`¹—ð ö¿Z÷«¼9mÆ!8uç®þ¸¬ár_>^ùÚmV¼ðëGò}á ÆSbqËçáŸ"ÐfÀýÍúßä ÈˆOÅ-‹³ß¸Íç¶ñ¸ÞýíËhnoÅÊÊ"9Øœv¹nrÜÔýðä/ïÊóÁÞ0Ñ–h¿Ó\ÄDEaÖ°‰xü˜«pÉ{÷ÊåùÀÅÁ›‹öü Nšþ§.ïѶø™¿üNyålª+—*ʪšÐ¦úþ#/ÁùoßÕë@Ÿ×ŸF£Ùþè ‘Q3¡G·‘Õ«×`ÅŠ•ØRZ! “!3[C\f69ÄçZe©£††én1PÑqŽkt\£Ñh" cŠüü\ì¶ÛnX¸p>ÊËÃ+_£\dgçH÷²¼¼yî5F£ÙˆDŽÆ×{ÞB3 ®X.’b³µk×Éö’Ñ#;0·ä7ü´ü[,Jªü©¢m%ÎúJ ­Q6Ü8»8'>O­~¶;"Óî¶#L É0¥d‹v3+2KÇôâUØmh†Í*”%@¹_cÆŒFrr²gŸCu- ç½p¦oMt~Fçgt~F£Ñh"‡˜i†Áh[[v’7¿3ï3¹ÀLʹÌÞ5Ôövï’%,¢-÷¸rªå4]CÓŪTõ³a>t ®œ>ÄiF”XÌdp3n“ÉÔuY“A0fB×e:WØõ=ÏŸîR¡Nãz ÛÉýî"ÇÎ’W)O§×ç9}ˆÊ|m‹Éë}CÉL)dëŽkY„¶ä‰hoo°³(qp’£âÐB°Ï^ ™ )¸ú£Çdò݆ßå ‡÷v1掛…ÆŸ'ùcñô‚÷ñ£x0¡í0ƒçìÄtÌ>IZ ûë1sÿáÿĸì7ðŽx¨)©¯’½DZmížéGNÞ…ùxìç·¥íq]k“<†ûŒžŽìuœ¢Ûýn{Û¼|âpû¼°¼¬íöT7×{¦_¾ÏɈŽÅ{˾C‰Øæôø$l®/—=JÈܱ3ñåÙâåEŸÉÞ%âÁ¼Ml[NRv¾ƒì3%o´ÏÏæ6pÆ]xnÁ‡øhÅOØX_†ñ Áåh3=&«÷.6¼î¢•õ¹F£‰$=qâ µ¡l„ñ²‡ìÒ¥KQZZŽ¢âRde¦!ƒe3-7 ˆ­å`¶ic±ˆeâ0vìxylUÂt ¡ã×øBÇ5ÍöK w²PÜQ9ž––†Q£Fá ƒÁóÏ?»UîÚ¾‡çúC“®#<çÆ[ã¾þö¾F£Ñh4‘žŠÌH°<Nc>aÚ´©òž»~ý$&&bäð6ÒЀßÖ¼Œ?Ú“±2}2Ú²F‰äަ¦Z8[Dƒ•­KãO°ˆ¬WÓ)l³DÁŸsRºh?³#¶r=&”~‡©1M˜>v¸Ø‰Òy'îKjjªg•cY(¢±žÆ=ÖÐùŸñ…ÎÏh4MÏõ®o qš)„WžKFï%õªåÅdñ8¶æŽë¤xÃʪV v»]¾Úl6´¶¶ÀápF¬,¿@Ý×6)¬V+*+«`k.GÁ™ˆNõ¶êrcG§“— ]\½$ê=u–®ng¦Îù"žpˆ¸]–¦4û«)ç2/g3%òê²;ÞÛ`ÄK€æÝ!ÅoUªÓé5n؇nîgpí‹9 %F½>¯Ûvš|Lô-Sß±_õŽ}Q3æiù ‘ݵŽú@JJ:ÄØÜZë±® á{¾{o/ù6‡=༓Gí8—ís"r“2 Ññx‚øtñUØÂÍ@`Ó¦Í0›Mâ^’€¨¨(y_°X,“U¤¿âšÞ(Ù“˜Éßß,—¹|ù éÀÅãž–*îÍâ˜Z¤`ŠÇÑ׫÷{j}G—ãlü;”ñ°L8ä—CrrR7Y x¥¿“ž:®Ñô7:®Ñh‚³5㙞ÄÞãõõõ˜7ïk¼ûî»øá‡ï¡ÙöØk¯½q衇a¿ýö•n­Z`¦Ñh4o¶õü –#5® öžÑÝ«©©I[:Å666ɶ°’-¥XVR…Öd%D}æ !Õ%2kk„³½E4šut:'ô60EÇÀ›Ä%‰‡ÿ( ¥©Õë0²i&Å4aÒL ’/ؘÉÍÍ•çŽeµ½÷©·eƒ]\¦ÐùM£ó3MpB‰gB}î ÄÄDï—E©^ì^ƒÛÂINSƒÓðê=ÀÏß^½Ç½ z£Ôfš°a‰Eݰ–h'º¹y©¿UÙLuãk£`Û„®3õjX§) ²§£•€N—4¯Ï6þ6þ6™;?ßéôŽy‹ÀŒûâ5Ý£s¢KINïé]Ja÷˰ÿ¦810ÞA×ã¯õúú4÷M›ñ8š óŠs‘Ôø-ê­•°F ‘F|øˆ0ØÊˆN@µµ9¤ùóS²pç!âŸ{WýŒïÖÿŽõ5%¨ii„Yœ¤dñ 61gv> GLÞgÀÔ½× x½é _£Ñ£'®#êobt)(ŠœœlY6sãÆMhljFm]=2ÒÓÄûöíM8‚°Hb¶ÄÈ!))qÀº—)t\£éot\£Ñlr1£#ÅäÉ; ¡¡›7oFqq4Û……£°Ï>³±ãŽ“Ã—i4F³­Ñ'3ïzϘ·¡@kâÄ ²¼dEE%JKK¥«YáÈ8ÐfCuu5Öoùë6v Èž‚²ø|Ô¥À™š St<-ìá´‰, ’lV—Íaëò¹ž¶% ÇÌ¢á&J4™E£ºhX‡Ã gG+L͵H/_¼¶2Œ0×ctJ4F ËEfæ(ÙðÎ2˜™™ÈÏÏ—ù%•G2:–©}ôu|By/Ðû¡NHèüŒ¦¿ÑùF³­¢fš°a‰Eb*þHÆ¿R¸å-Òò…·ˆÌÛiKMs»”u™3ÞN€K·I›ˆËVtê9ÝË{4]n‘™G¤å%âê²¹&å2À"/¼Æ;WlxrŒõcܯføº)ŒÓ½×| û¼§[:Ç-‰v´oü qãî"0ˆÊߤ¨8t8í!Y+ðŸ1óP9h4¡B‹b^oFCBI^’`‰ÊPJ30ÈÆa&-)2Û°¡-­­X½¦±±ÑÈÌHGFFšt+¨;^}ÓéRÎ'$Äû— Ä䦎k4ý…Žk4šO8 ¡Ö1zôhé,üñ'âùçŸAYY4ƒŸììsÌ_0nÜX†×h÷2F£Ñl‹ô&Oãý~°÷Œãl;:t† ÉGKK ªªªEìU)óyyyØÍíÈ^WW‡²ª(+oBY³ Uö(Ô!M–x´F%¡]<ŸÙbES–‰Ú1‰ÅÄf"'¢:š+òñ¶f$Ù›‘†VdYlÈKŒB^ZòÆg"5µÐãh'þN‘Õi²²2E^$¡Ûö÷—°,Ôy:?£é/t~F£ÑlËh™&$Œ<­“Ië¦EÀX1B‘—By9¹†oñ™÷{êÕßb*·ÈL’àšÇ¤>Ïh ×ß&+º;“ÝÎÐõsLAÄd ¡kiNw»¯I¹†‹¼z ½¼e€o÷7ãtøù€·ƒšÇ¹Ì{^~¾ˆeš~[,f´½—þ~`ȈN„Ýé@‹½M_`‰‘×™F£Ñ ¥7ÜÞ°Æ¿‰ñ=&Ùˆ8r䣸x£óWTÖˆÆb&/‘žž†´´”-6ë7Ä!¤ÜðáÃÂŽM¶fòSÇ5š¾FÇ5Ͷ‡?3õ÷¬Y3e£æ‰'žŒ_|Ð ^XÚꤓþŠaÆbæÌÝâ>í^¦Ñh4ší•žæiü½Hhæ :˜q`‚ùš††ÔÖÖÉ8Œå)333±ƒa~Uv´¥¥mmh﨑þívW‰‹Å,l±1Ñ2'”/]ɼïýìXGYZZšÌ ÑÙ466Öïö‡+ÛÞÄe ŸÑô5:?£Ñh¶u´ÀLã“@A»z¿¦¨(#)bÈ=.ð }­Ê(ªò'Hóž7fŸiò±-½ù ïõôvxo£—¸Í§ƒ™ñXnõ¯%@í¦:do·‘ž’“ŒÊŽFìk"ƒ|^_Fã‹ÞˆÌH8=dt4£ÐŒŽf,¹°ys ÊË+`³ÛQV^…M›KE"1I‰ ²ÇjzzªL@no˜àÇÊ‚Ž+|‰L#:®Ñô:®Ñh¶ Â)ÅqÆûí7ŸþN;íoxíµÿ¡¨¨šÁËb{ìqÈËËÁ¾ûΖç6A™œi4f[§·"3JÇû}ï{,arrrät Çš››ÑÚÚ†¦¦&ñÚŠ¶¶6‘³è@ZZ*l6»4l Û™1Ž£˜Œ÷û¨(‹§ä%×/ËtÆÇÇIQ…hÆmð•[Ф€l[—)t~FÓWèüŒF£ÙÐ3MبÞ¿®ŽEz3œ'ES^……¥â£]eã=!¦[àäùÛì5Í×<†é¾4V]þæòåÏõË{y§A«e˜.Ë^ú[º”Éô^·Q fpëò¹Þ‚4ÃßNG÷ý÷É9Ÿ)æwX{`kªŠ€bº¤ øÃÇ@‚ÁXµ9,Ûb&´'Ö=H4M0ú¢‡l(ÉL&Yeeå(--EMM­LJ6·´¡±©ÅKÜIÈ(wÏ×(ÄÄÆ!ÊböÄjLTöå½~k Ö×®Y%_Ç› _›ÈLÇ5šH¢ãfðJŒáo^o‘#÷ß?Ì›÷5N>ù|÷Ý·øöÛoM§²ížÃ™3gဠÕYR\ft&Qóx/Îú5F£ÙV5OC")4SÓ|ÝW‹qHOG—u(3—ù˜qˆŠŠ’ƒ¿öÛÔ‘Xo…eáÌ7ÐùM¤ÑùF³½ fÛ9=Ilº¬zí¨7§aÕ ¡T\HfZûº^cšM.í“E•t ËL^Ne|Ŧ&£¢ÊÔ]ƒÕEåµ¼¯÷MÞëð“y­Ø×çuÃk^£ ŒƒÓWiN_+4®ÃkÝF!šñ3Ô<&S׿9ˆgØì®Á,þ.©ïï•+glŽ' ÊbLð·ˆ]Ó‰rMÏ0‰Ñ ºö½F£ ™H÷ 7™IáØ°a²$$§Õ××£ººF:œ±g6›C íhmmK4÷sƒ²Šä:ÿT±–%ªçIÇ` ©cÇŽÁøñã‚.7PÑq&è¸F£Ù6 U¤nœFAÌ~þù;DaÔ¨Ñøè£P^^ÍÀ%77t GÊXo×]wéæRâ¯iZD¦Ñh4ší‰PÛ³‚ÅOáЌӌÓÝ—UG�½!RަZ\æŸÑDŸÑh4ÛZ`¦ñ‹¿@›.¬/ŸÐIØüA 27"!0;Dc¢ˆ1£c\b3ŠÌ,ÊÍŒåå .»ÍýžA—ëó;ÿPËy[&âÎN1—aU†ý0˜†™à»r¦—²«ËŸÕe1ŠÉ…ßÎ@åô1êìšq¡¨è®3ˆöf´‹vf«xµ›øjÂÆ¬»ë¾²¼­–}nï�~H`p–‹:ìë^%špaï‘4ä›1p¯qF30‰DÙž”að~ŸCzzºFõÿíÝKŒ%×yðÓéáÌ3áð!F¢‘dŠ Â@¢a… XÖ&Y&›l´ˆÉÂÁR+à& 0Ð&l… c;’fÅ&m‡t$À!‘“!‡äLÏ«»ÓçöÔðLMUÝzߪ{? XU§êÞéo߯«ÿõÅxœz!NÅpíÚþb*†¸§a8™~ádª†x·ì²¿ÉÍCªûGÓ7ÞøëÅxœRt®Ô5t¡®ùkóGϲãq?“žþ‹‹÷ÈÓ§O>ùdxå•WÂø?ÂåË—ÓqñâÅðÅ/>ž}öWS_=õÔ/…Ï|æ©»õ^j¨?$ÀœU]ƒ©{^Q`¬Î±üñªóºè#ôÕ¥ŽhsÞ\¹>C®Ï�›HÀlštZvçEœcþSŸûb¸ôwžZ|l!,–[ÇË~ÃÕÔ õ4-äóç?y¼ÿ‰Ofq1³èøl/î8Îïž9.öÿ¨~püGô8(ØÙÚçvöŽ‹ü3awk;�ýkó^2¥º¦®&/‡˜†¡ìùΞ=»XÊΛŠ:ÿŸ4éȱ.7Õ54¡®áÌ¡ž©š*3Ûb—ÏG¹þüÏ_ =ô`øÜç>^{íµðgö¿Ãë¯ÿŸEñÅ.òŸþô/…gžùåðôÓO/ê·ø}úìgŸ.½FÓ4lÀfÛ”ë3©&ÝÌ¢ªpÙñe×gŠÎZ×à˜é¶ïçú M¸>Ãñ{ï<˜MXÙéˆ]#N:g\«¼Ð¹LÕçµiá³>¾Çe }ì±GÃG?ú·+Ïiòœ«‹¶‡ þ¸Ü8¼ön…[GáÖáA¸}\økg¼ybâøÿÅ©ípjk'œÙ9NoŸ À0ÚüÁkêuM}t3+:V÷ÎÙ²ç-:¯ÈuUÛ‹ÙMµ Mùÿ7u yêǪ뙦]Ìê†Ìb`éWõùðÓŸþ,¼ñÆáüùóáóŸÿ|¸víZøñÿïñòãÅô™qÊí«W?¸Ûñ”îvwwÝäÎ{0<òÈ#‹›3㔥ŸøÄ'¡²xüܹ³á“ŸüäbZÌ¢®eQÿ7çt €álêõ™L“¿Eu š¥Ç3cýíª¯Nc]l×gÈs}ÆÑ¦žauÌh}Q3NÑô¥/ýÚÝñ¢ç¨*²u.k§éEÄuÿ!‹9�cir‡l—»c‡¸ 9…š îÅî>ÆçH]@¦nÈ,*ûøÇŸ\„˜~ñ‹·ÂÏ~ö³ðÖ[o‡ ~e15c×hº©ªG¶··Ãã?>ö±…|äñ»ç¶ ’¹Ø�Zv¥éù]»–µ­©ú¾q¯É9]Î_W®Ï�@1³¸· ‹Û«¿èWçBg6­j®ú9ë£U±‹“�ôïÃ÷Œî¿¦Q×4Õ$d­j†U×U}^ÄìÚ!�î5zfYMÑäÚKY'’'žøÈb‰Óc^¾|ùxy'¼ÿþûáêÕ«áæÍ“îe‡‡‡µ¿:Í—‹A²Ø¥lo/v1;zè¡pñâË®rqšÌªçìëúº`“¸>“ê;h–žÓæy‡ÒWG³®ç@?ºÕ3ŒOÀl¢ªÂZQ<6Ö‹¬ì‚gÝ Ùx¦íI¹W›?Âu �ëoÙô ËÞ—¦R×ô¥É…Ë.A³ôxf*5ûÐõ¤ê�š˜b=3TÈ,Ë>¶pzì±ÇKž›ýúѶn.  ×gª-«­ŠÎ–=f Æú{Ž€±u©gX-³ hRðf/¦xwiz÷ãÐCÓY4ÄÔN›¬ÎÒ±Bg�lžX{Duþ°•½·×©/²çî³®S›:njÓ0Œ©IÝÑÇQÕ9�¤¦ZÏ´ ™E˦ÌLÇ‹Žåç¹fs¯>»4¹ˆÞG]Àzp}f¹º¡±¢Ç4y\5TïámŸCý�ÀªÔ­gRÞ·¦AÀlfb»ý8­ÁíÛ£úMBfÙxFײaµ –-;Vç8�›#ÖQ¬Eú²Êº¦OM/\Ö9¿M ¿Éûvß,î³f`(s®gúºñ¯éO½ç6×g'³ªq�6“ë3õµ š¥kóØ¢çB—çW[�°jCÔ3ŒCÀlfâ‹,ׯ_§Oï…>-»‹¥êœ¾:rPOÝ_�º„Ë� køÞÑ÷Ì¡êšU¨SKåÏÚüq·k=5µ: Ú¦Ë¹�l†)×3C\“iÛ¹Ìu›zúªKº^»Qó�l×gšk4K›YU´ÊNg�з!êÆ!`6AewŸ¦/²k×®… ·U¨ºèÙ¦#Gž ™'†¼ÅJ�šŠµG”]t¬;¥ÏÔëš¾­z†¹ÔQmê µ �]M½žé2ËŽE];—yÏíG×k3®Ý�PÄõ™öºÍòÏ‘šr—ø!ž�ºj[ϰzf—/úO^d!ܺuk17mß©Î:3ëœ×æ¥E¥>J¬9bí±³³}_íÑ´sØuÍ*­j†®ïõ]nCF s©gê†Ì¢¶7ÿM¥Ǻé«#k_ÏÀúq}¦]¯½T=ßT¨�˜ª¾êVCϹÈ¿vvvcûûûaM.dÕ 5¥ ýhúumú &�dbÍßb ’ê#ø3t]³j]êŸUÔPù³lóció8�È›S=ÓgP©Íu›U½÷OY_£:çõõ½`=¹>Ó¿uªwÔn�ÌAŸõ ãÓÁl&bz3ÞI×;;;‹Tç•+ï…sçÎ…!Ô¹c6=7ê»ãŦÞAÛ÷ϦÏç‡7�y±æˆb ’µ,îr7ëØuÍ4­—ªž#µnõR×:D@™¹Õ3u¯ËÔ©1úèXæ=¶¹¡nôó½�Ø\®Ï «ïÎfcP�07}×3ŒKÀlÂò ³;â ,.·oß7nܧOŸCh2ËΡ¿Â[aÜ^—N)�еF¬9Òb?}¿hÒ±!ZU]3}_¬\öµŸêÑ!ju �eæZÏ4¹ÎÒæÜ”i2»ã:ŒZ`³¹>3®)‡ÍÔ�ÌU_õ «# 8U/”¢ÖîîI»âË—ß «ú¸ª“.Œ£ë×Ü÷ €"±ÖHkLÕ{N“ccÖ5S3F½”¯Ë¦² ñ9@™¹×3MÞçھ߮úý|J†þZ´yœZ�×gVg•uÐ&Õ`�¬¿6õLvœiÐÁl¢â‹$WDöŠiÎø¢‹éÎØ²øÚµýpöì™0”ìÛö.²¼»cÛâ²�P$Ö±Öˆw“Äڣ莒̲â*uÍT¥_?5R=j�êX—z¦è߯ó˜Ìõ…÷âúº|­|p}fzê¼?/«¿¼Ç°IúªgX-Ì&.}QåïR8uêÔbýöÛo‡ÃÃÃ0´!‚M–æKßß�(k‹Xc¤5Gþý¨é{SÑcWU×LÙïýsçë@ëVÏtyT_Œ«¯·ï�‘ë3ó5æßz�`ʆ¨gX ³™(*>³tgܾtéRƒözð}`™X[Ä÷ŠXkÄš£Ï aS©kæbÓ/@ºø @[ëZÏôñ¾èÝ õ5ô}� åú �0wCÖ3ŒË™_8iËÜl?Ï^`±e`‹ ÏÃð¿=\¹ò^¸pá|Cú"7Ó<øÁ @]±¦ˆµÅîîÎÝ»IŠÚgÛù÷˜l.uÍÜ,{OŸkm¦V O›PÏ}Œ}>/ãòu Ïõ�`îúªg˜³™È¿¸ÒåÔ©½ã¢ÿfx÷Ýw/ÌsçÎ…1 ›M—¸�4uõêÕEMï"‰5Ʀ\׬ïÿ�lºM«g\—™/u�e\Ÿ�ænŒz†q ˜MLz×Hº_t7I|!fNî(9 —.ý¿ÅþªŠý²¿ œÃòC€>Äb?Ö'O-jx'IÚ²8Sçn’¹×5�Àülz=#l6}®á�°Œë3�ÀÜõ]Ï0 f3Rô"ËZŸ¤>O…[·n-^¨·oß.\SáÅ�ÓvåÊ•ðî»Wî)öó­Šû¼›dÎu �0Mê™ò/8[ ×Ä�hB=�ÌÝØõ ã0›ôn’L|ñÅ;G²b”ÍY‹ýø‚½qãFxôÑGï�È;¹õRØß¿¾¨b=±»»»ØN‹ý|áµ)üÕ5�@ßÔ3õ?î2Âgݸ @Wê�`îÆ®g_ÝïÒVÍc[5Ö[%ûÙ²¬³eçÎØNn‰ÇÎÇõÍ›·~ÖHþÂ^º_˜ÙXÜÎ/‹b?®ã9?þX8{öl��H]»v-¼õÖÛw§@HÛç—ô.ÖLÝvÅê�`(ê�`îÔ3�ÀÜUÏÌÕÞÞ©/¯bÁõÞõAn9º³>L–£d_BÉ~Õ:¿·ôîCÌ&*»{¤h¿è.’ücãøÍ›7ÅþÛo_Z¼€/^¼xàt��6Ûõë7ÂåË—³9ï÷ööîö}ûê� oê�`îÔ3�ÀÜ]ϰZ:˜MXÑôËî(Éoß¾}{±Ä‚?Š/è‡þ[áÌ™3ZÀ‰µÁþþ~xçwï© b{⸤…~~;ª*öËÆRê� +õ �0wê�`îV]ÏÌѺt00›¸¦Å~\Ç%kSœÇÄhú @ï.9wîÜâî’lî[iP�˜¿ìý?^ì‹w\½zuQ Di1kt®ûø @¶=D±¯®�êRϨg�`îÔ3ê�˜»©Ö3s#`V|LÀl�ËŠý¬ Ò»IòÅö @|ñgÇÊþl?¿�¦#+´óëüñ(+à㎴°O‹ût=>}Ž>Š}u �RϨg�`îÔ3ê�˜»9Ö3s².³ÝÀäÅR¾ÐNÇò/æ´8ÏÎË þ,-űXøŸüñpw<{Îe¾_��`xËŠê|-p2¶øïÝ9ïóE|Zàí矷¯b_]�›I=£ž€¹SϨg�`îÖ©ža|f3QTx—ûÙ 5½‹$;žŽe?�2é'é�0mEu@Q±žöùsÓÅùB~Ù~ÛW]�dÔ3ê�˜;õŒz�ænnõ ã0›™´¸Ïö£´àÏ ûìÅœ÷ùÇg­Š‹ ût,mi �LKÑ|õEÅ~Qâ|ñ_öØTŸÅ¾º�ˆÔ3ê�˜;õŒz�ænÎõ ã0›¡|±ŸË¿³rz§H\²»HÒ⾨èOÛ�ÓQVœç‹úüxÑñ:w Qì«k�`³©gÔ3�0wêõ �ÌÝ:Ô3 OÀl¦òw•½Pó…}Ñs¥Ç€iK øt¬èø }u � žQÏ�ÀÜ©gÔ3�0ws¯g–€ÙÌ¥…{:å þ¸Žm‡Óýª6ÅùwUÑï�è_U¡]v¬ìN’TÚæ¸îóA]�ëG=£ž€¹SϨg�`î6­žafk ìN¢ñ|Ûâ¢EÅz�˜–ªâ>or·ÈªÞ÷Õ5�°™Ô3ê�˜;õŒz�ænêú'`¶FŠî*ÉÆ£|Ñž/ºƒ¤î‹Ý$�п.EwÑ%EÇ›‹º�ÖƒzF=�s§žQÏ�ÀÜmr=CÌÖLÙ]%UÇÊ~ ä¨óï�ãZVØ—ßôØ*¨k�`3¨gÔ3�0wêõ �ÌÝ:×3ôCÀlM•ÝU’K-;oÙ‹ß]$�0œ®Ex¿¬šº�æM=£ž€¹SϨg�`îÔ3t%`¶Æªî*):/Ó´p÷�¦£éûò\ÞÇÕ5�°9Ô3ê�˜;õŒz�æn]ëÚ«0‹•ŸÿfªnÁŸ??ån�˜ž.Åú\ }u �¬õLýóSê�˜õLýóSê�˜ŽM¬g¸G­ÂL³ Ò´à/z,�0oëòž®®€Í¥žQÏ�ÀÜ©gÔ3�0wÞË7€ÙJ_èî€õ·ÎE¾º�6ƒz�˜;õ �0wBe›mê3UèÀò?�þ�0›Zà«k�`}¨gN¨g�`¾Ô3'Ô3�0_e£›tᤃ÷XöÂ/�°z úzÔ5�0]ê™zÔ3�0]ê™zÔ3�0]êš0£?`�€u¡®�æN=�Ìz�`¶Ã0Ün���������0žA2[CÌ2‚f���������Ã4£5tÀ ��������€™Ú Ó§ ��������°Ž&ŸÒÁ ��������€Bf���������ZUÀ¬ik7Ód��������ëdªÝ°Ð��������€)Y‹L“)2��������($`��������@¡¹ÌŽjŽ��������¬ÚìóNcÌúü¢å��������€©*ï4JvÊ™���������ZEÀL×1��������€æFÏ^é`��������@¡¾fº“��������¬N¯®Ý0m?1¡6��������`ŠÚd›ŽÂ„2QS™"ó(·=©/��������À€Š2S“ÈO0;ª9–4��������ÖѲ|TÓ¼UïVÝÁ¬î'{îMéå{Bh��������À”¤Ù¦¢å°áó¬D³£ŽÇ›þ[eá2!3��������` вMEÓ`öõï´=¾T“€YÓìhàãùó®��������€Õ˲LM3PCo}þ˜SdÕalñ¼GG‡W��������ÀŠ%Y¦A3Sc3`–jó UŒý"���������¬Ø,SÕt˜}æ§5DÀ¬í'rTsÉŸ{×·nÝø›���������°bw²Lw³M¡<û´,'ÕTï!´Ut0;*Ø?ª8ž—ÿ¢Çýðþûï¿���������V,É2f*äsTGÇG±ª)23}|Âñy^}õÕ×��������ÀŠÝÉ2ÅlÔAènôPYª¯€Ù²¹B»|’eI¼{R}/¾øâ_��������€K²LESdfºL…™=>]—ïd+4³UóXÑvºÎoo寷ïl§ë¸ìÜÙßÉ-玗Ýýý°³³ý\���������XƒƒÃ—Ïœ9ýÛÇ›·—«á¤‹YºdÍÇ´t½¡´4ˆ–ßN×UÛyµÃgM;˜ Ùn­Îœ¡ù/T¶ÄoFxóÍŸþI���������X‘$Ã3MEÝËêd¤†ÎiÕÖ×™M?ˆ£†ûËÄoÆá·¿ým3��������`eîd˜b'²Û¹CCgª ¥5"³ê1[%ûùé2ëN•™-¦Éüàƒ«ÿfooï×��������ÀˆnÞ¼ùG>xîwCõô˜‡áÃ)2Óé1Ë–P±BñT™EûËÆ õÙÁ¬î´¬Ý[“–péù·âú‡?üÁ ���������#»“]º›e ÅY¨²lTÑù!4›^sÙxcm:˜U=nkÉvѺ¬“Ùv(ïb–v3ËֻᤋÙÎþþ?ØÙÙ~.���������Œàààðå3gNÿv8éN»—Ýv*ËÖé’ï^–ïdJö‹ÖUÛ¡Æx©>;˜åÕ+_Öú-lÇóoÆí?ýÓ?þ��������`$w2K1Ç3LYö)„òÀXº¤ç‡äÜ"MrYõÝÁ,lY³ªí¢.fEÌv‡̲.fÛW®\ù—gΜýj���������Ðþþµï]¸pá_‡“ XÖ½,ë\–ï^v”Û^Ö½¬h;]WmçMªƒYË>±ªfùãÙ7äzÜñÅÿýñz?��������� gÿNV)f˜bv) ”-Ë;OÏ+Ú]ÛfUÝ*Ù/ëfVÔ¹,ÝßåÝÌÒ.féúÌñ²÷Ê+¯üÆÓOö÷��������À�^{íÕo>ûì³N¦ÆŒ ±²FYé:ßÁ,íZ–Ž…°¼“YÈmw™Zs©!fùc˦ÉÌÖEA³ü’Ÿ&sçÎcÒ€Y\âT™gãØ¥K—ÿÅùóýã���������У÷Þ{ÿ??úèÅß'!±kádjÌtZ̃;§¦]ÍòA³²ŽfUÓbŽ2=f4FÀ,ÝχÍÊ‚fe]ÌB¸¿{YY7³½ãå¸íÚþ¿ÝÝÝýµ���������Ѓ۷oÿÉÙ³g~'œ„ÇâÔ˜±ƒYYײüÕí^BñT›!Ôï^¶ìX©íÐ^›°ì*šg4¿Ÿ+úÂÇñìtóÎrð•¯üÆ¿:<<|%���������t³H1“N²J1£t+|.«Ê6eÊ2Q]CdeZ…Ë¢ÐÍ]ÌÊž'=gÙcã7fû'?ùÉí7ß|ó_ùÊoþòÖÖÖ�������� ….û­ßúg¿óÝï~÷Ýp,»ª§À Év~jÌʃe¡áXëY•.Sd.{Ž­Šý­ŠuÕöv¸7\–N™í„û§Ì<s¼ì¾ð ~ï{ÿí÷L— ��������4§ÅüêWó›/½ôÒq÷xÙ÷O‰™u1Ëw2; ÅA³°d»hß.Ú_6^˳¢ce]̲uYà,ÛÏÌŠBfÛK ™=p¼œŠû—/¿óÏ|ðÁ���������jøàƒþÓÅ‹ÿ»p‹Ë®‡ûÃei˜¬,\– ¡¸›Y( ¡Ý´™fÛ¡»>çô,û¢dûE-⪾1i*0¦ã|§‡Çßèßÿ«¿úËß½3��������Pf?fbæ(œd‘b©¨sYY†)„êpYHöCè·Yçi3û˜U©JÊÕX—m§ßˆŠ¿AÉ:ÛÞ¿³>óÌ3øÍo~ã]¿¾ÿ_��������@NÌÅŒQÌ…\þ(Ü›KÊÖEá²t¼í”˜m¦ÆìESdÖy®­ÛeSfm§ÓbfûéXvîNn|7œL™Ç·¾ÿýïÿ½/|áùº³³ý\���������6ÚÁÁáË?úÑþ׿üåÿN\1@§Ä¼îo‚•v&Kf!ÜßH«*XV7TV6 5Õ¶Š€Y~«d¬Ià,0Ëöw’sÓ€Y6¾w¼œÎΉA³çžûûÿpooï×��������°QnÞ¼ùG/¿ü?¿›Ëâr#œL‹™ÍòɲñÊ»—…P/P¶lÊÌ&ÝË&0[ö|MBfUë:!³4T–îçfÙñ2ÛÍÎýú׿þØ×¾öµðÄý’®f��������°¾b·²ŸÿüÍ?þÎw¾óß_|ñÅ·Ã‡á±Ø­ìFø00–˜¥Ësû!ô3%æJÃeQß³eÏ9tÈ,¿¤Ý̶Ãý¡³|-v4;•Œ‡^xá¡o|ãŸùÔ§>õÔùóçÿîÞÞéom…'¶¶¶/„“i6‡ø��������ýˆa«ëGG‡WŽŽÂÏoÞ¼ñ7ï½÷Þ_¿þúëù­o}ë/^zé¥÷“ób(ìV8éX–åÃdi,:k3æäÂeÑ”fé~ÓYÑXQç²¢PYQ(-v8;ug½–áòÇ˾m¾Þl��������¬³6¨£Šñ£’ý²àÖÁåV(îP–Ÿ³hŠÌt¿êßm.«³_÷XcC…—ºv1K·»„ÍòÁ±ЧÍ,;/[ï$KÑTœ©íP¬l¼ˆP��������›¨I8ê°æxÑÔ•Ér˜{\Y7²´ƒYÕy!ôÛ±leá²hÈ ÓØ!³l]6K»˜…pH¬(`¶µäù·so×îeÂe��������l²º!©º]Ìsç—MY™Ž¥ÇóÇòᲪço²®Ú.Ú¯{¬µÝ0œøoÕ<–îgŸèV2ž®ó–OæÎOŸc;s‹fù=œ›Ž… `��������u4 ˜…°Šf鱪€YºŸß.[Â’uU¬êó¨Ú¯{¬“1ÂLm;™¥û}v5«»äÿÝíÛu>ÞeÌ��������Ød]fEc‡5¶óa°:Kýu+›d¸,+ÌÔ$d–ë.+ZÄêNYö¼Ë>æüv!3��������6QÓpÙ²íeá®eSe¦ëtû¨§uÕvÕXc½3È´ÕðxÝYÑXÓîfi@¬n§²ªàØVXœ[FÈ �������€MÒ$,UĪêüU5ufYˆ¬¨cY›õ²±üvÑ~hx¼c‡˜ú™¥Ûm‚gQYDzôXþxÙùeÿF(8��������4w´d¼,ÔU'lVÕѬèߨ$«Ûm-T쇆Ç{³ª°S“)3ë„ÎÚv8˶óá±íŠóªöCÅñPqn‚i��������¬“6!©ªpY“îeEûÑaÁ9MÃcMº–ÕÙ¯{l« - ÙÍ,Ý®BÛ.yžíŠç¯ ˜•U×%l�������Àu H-ë^V6V‹Œ÷Ù©l²]ËRS*õÝÍ,Ýns|«æã–}lecuŽu!|�������À* „jÚÙ«(ÀU' Ö¦Y“YýºÇ7•0RÓ Ö²©)óÛmºŸ5ylÑãÊÎ Ž��������ͺ{…zÍòÛG¡^@¬Ë˜u‚pubj§!»™õ±]'`Vg¬Î1��������àD×îeù±.a²6ÛuöëÕN˜ž.ÝÌòû]¶‹…ò„£°�������� £M«(PVgšÌªc}ËÊÆêÝ”CQ}u3Ëï7^³í~ÙX“ã��������@³)2ËÆšì· œµÙ¯{le¦ØÁ,5T7³&Çêì��������Ãé#`V46Dè¬h¿l¬Î±•šzÀ,ê3d6Ä~“1�������� ¹£–çô2k³_6VçØÊÍ!`µ™jr•A²:á24��������¨oÈYÑØÐÁ²:ÇWn.³L×nfEc}³l¼îq�������� \ÛÐV›PYÛsÊÆê›”¹Ì¢¦!³²ñ¶Á²6ãËŽ��������Í´ pÕï"[‹pY4Ç€YÔ¶KØÓ^ŽÑ±L8 �������€uÔGØjÈŽfMƪÆëŸœ¹Ì¢>Cf}Ž/;Öçc��������`]µ c ÙÕ¬íxÝã“4ç€Y´Õ᜾ƒcMbÂd��������Ð\“ÖQÏÇÚËêž3Is˜E]BfCks��������Ð\ÝðVß³eÇšœ3Yë0Ë 4«s¼î9C>��������ÖA×PVÁ¯–eÖ)`õÕUlˆ0™ð��������ô§i€kèÐY›ó&oÝfQßSWNu*L5��������ædìÐUßa° —Eë0‹š„¯†:·Ç��������åÚ†¹š<n¨sga]fQ›Pל¦½Z�������`NV¾b:Í>3yë0ËŒ4ëûñ��������@s]C^‚e9›0‹º¾† ‹ ¡�������@}C¹º<ïZ‡Ë¢M ˜E}ºÃ��������`¾ú …­}¸,Ú¤€Yfˆ€˜Ð��������LÏ!°–e61`–3&€��������ý3ìµQÁ²Ì&Ì2Â_��������@™ –eÌî%l��������lt¨,%`VLÐ ��������6`YŽ€Y=g��������°~Ê–0kOè ��������æC˜¬³aŸ�������Àø„Èz&`¶>„Ú��������˜a¯5 ”��������@¡í����������Ì���������($`��������@!3��������� ˜��������PHÀ ��������€Bf���������0�������� ÐÿÆÞ}•¬Á����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/fullview.png��������������������������������������������������0000664�0000000�0000000�00003407262�15240005042�0022257�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��X�����©å“�yIDATxœìý  ,gAæÿ?UÕËYî9wËÍ@ƒˆ ˆ1(  înŒ #(Û€(Šl"ˆã¨ ŒŠ ‚üu~ꀀöY„@` BHî–»Ÿ­×Zþõ¾UÕ§ºOï§ûl÷ûÁ¢»««ª«»ëœHÞç<¯+������������ôå ������������}°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`€‚°W8����������ìD‘°ë1(?|®����������€íD¨cÂŒÏ����������°¾!áð9����������ö2BèŽÏ����������p1#pÑ A;>�����������Ö´H(à3�����������`uØâblå{'Ä����������˜¦­ ?\”A‹‹qàï™�����������`'›F(⢠Z\LÁ€I½WÂ����������€½`R‰‹"hq±„6ó>§õÔ�����������ŒcZ†Íwχ,.†AþqÞãf?Â����������€í´ÙÀÃ8ûïéÅ^lE°b;??B����������°;mgaÔ×&h‘Ú«ƒô£¼¯im;‰ý�����������Ƹ¡†Qö›Ö¶»Â^øö=m×v“Bh����������v§­ ûz۵ݮ°×é'†æ8»i:����������ÀÞ5i?¢M>?êv;Þ^ôßl(b;B“Þ����������°·l6 0í0Å$Ž¿+ì…ýi+6Èu;�����������6c­Óxn”mv¬Ý>ø¿™pŨë7óÜf¶���������� Ó(a…I‡&F]?ê6;ÒnèwJi¯ôÜ$÷����������ì}ã„¶"81nÐbW†,vë þ$ÛY×oý°Ïƒð����������ìm“Œlˆ&¼®ßúaŸßqvãÀý8Íã†(¶»Õ����������€A¦ÙV1Í Å® Yì¶AÿQ ã†(ÆÙfÐúaŸ����������`Ól¬˜Ô6½Ö óÜŽ²[ûÇ -8~¼Ùuãl����������@§hÌmÆ]·ÙǽÖòü¶Û ƒü›m­˜öãQÖ³ �����������™i†+¦ý¸×ºažÛv;}€’áŠqŸæñ(ëFy����������€¼qš &®÷¹~ë†yn[íäþQ£<ÞîÐÅ(Ï����������7‰€Å4“h·æ¹m³ø§ÕZ1êýažë÷ü õƒž���������� Ó8Á„ΠĤã†.z­æ¹-·Óø'ÕZ1­ûƒ£¶X°�����������ŒbÔ@ u‘&¢˜T»Å°Ïm©2À¿™ÖŠa‚› S Ûvѹ_¯m4Âó�����������ä2EH¤á÷7º§ £ßºažÛ;a€š­ã<ï ¹ß sëµn˜ç6ƒÐ����������ì Ó l¶Å" è˜è·Í¸A‹]Ûf±ƒñ£¶;Œ;½Ç 0EÆíq·Ïñ‡i´Ðë‡Eˆ����������v·Í†¢Ö;%H8Âú~¡ŠIO!¢ŸŸŠí¨ŸtkŨëº%º…**MU2É€¡ ����������Ø›Æ ô X ššc˜ÀEØe›QC£4[ óxØç¦b«í§ÙZ1J°¢W˜¢óùÎöŠ^‹Auy����������€ÍÔbÑ+àÐ/`öÙ¾_“Å4š-º=ÖˆÏOÌVöO:\1J¢ßmgƒE>TÑëþ¸í£|Þ1����������àâ4Jh ×” £´X„îGÚØb1îí u÷»=ÖˆÏOÄV â2%HçºI)ò·Ý‚· ƒÎcÐ9wÞï‡p����������\܆ Û 1(ðЯ±¢ó6?šÐm¿ûýÖ óÜDlÅ@þ(áŠ^7²èÕXÑoé|Ýa›-:÷ë¶®Â�����������cÔÅ –ˆpˆûA‹aisí½Ö óxØç6mÚƒù“ Wô - °è¶äÛ*ÜŽýú5Yô ^t>×í|!`����������06°È÷ Xô Ht¶S„]î [ôº&\±#CMϸáŠI¶Uä×e!Š|˜Âí²Ï°S…t1:ŸïDÀ����������0ŠQÝÖçŸs:¶ï°È¶Ëžº‡5"µ‡6zƒ“»ô|Ôå<m|½Þs¿ç6eZƒù[®¦µ"œp5¸Õ"ëå–^á uì§!×wCÈ����������.n£„Â!×g!‰0÷|[ÂŽýúµU„Cl'iSSˆô»ßíñ°Ïeùã†+ò7ªÈîw†(Ü.ë»-²@EQ롊AÁ^S†tçó&l����������‡qBýöé6%ˆÔ;È-šZ\t VtÞ{lÓïuÇ [ óxØçF¶“ã†+µVt6N¸ê¶() Vdëuã7.¼ð…/ü¦ûÜç>߸¸¸xm©T¾Æqt¹ã¸ûã§gD�����������°;˜ÀA-ŠÂ¥(ÒÉF£~×òòòW¿ò•¯|éÅ/~ñß÷¾÷­ä¶3! ´h¨w¨¢sšPƒÛ,&ÙhÑíñ°ÏlÒá€í Wt›º£Ût YCEþùr¼²mŸÿüçù¥_ú¥ï½üò+oð<÷Á����������` ‚ðã'OÿÀë_ÿú÷¿ô¥/=­õð„/uµ(º5\t,:§‘vqÈb’‹I…+²ûã†+ò­žºO’­7ål››nºéA~ðCžP*•%�����������.RFãß>þñÿÿùÈG~BëA²hhcÀ"ªÒC„¹E=dÑ-P±­!‹íX º?ìT F>4‘=î6ý‡×±Þ´Ṳëm°â¡}ØÏÓV����������À:ÓjñÑ~äorA  ¨)iµÈ,õžFDÚ8È8S‡ {¿ÓDž&cšSƒtޮȇ,¼Üãì¾i¬˜3Ÿ÷¼ç]ö¯ÿú¯Ï¾öÚë~Óu«�����������ZÌXú=ïyÏÇ=ûÙϾ2Š¢/~ä#©Æ«‹éÓ&¸Ð9¦©}l¿Ûv‘ÆËô3Jna,“j°p†\¿Ùp…‘o¦è®p´1l‘-¦µÂL âÜrË-¹ßý¾ññýY����������€Aª·Þú¥—\ýõïR’0Ó…˜6‹°Ç©÷T!öYô»í¼ßíñ õC›DÀbœöŠ^A‹^!‹náŠ|ÈbP¸Â´W˜p…IѸçÎ{ƾ} O�����������Éêêê›:ø%‰¦’E áBQÇÒ²è¦è¬6`1è¹\M3àq~Ý ÀEþq¿pE·€… W˜–Šâ7Þ¸¯R©þá �����������Ƴoß¾'™±w3¯¤èÀŒÉ›±ùÎñú~cû… R÷b©ÿT!Ãd&ÂÓæL¢½b˜©A†i­0·_X«¹â)OyÊ¡¿û»·¼Úó¼‡�����������ŒÍuÝoxâŸômÇÿÈg>󙺒1ú°c33Žu<Îôk“&\1NbSá‹Í&7œ!×÷{óƒ‚Fg²¥_[E>haÂ¥n¸añ]ïz÷Ç_ð�����������&" Û÷¸Ç>ó½ï}ïrü°¡dº´0S†Dê>uH~za¦ é6mHþ¶ó~·ÇƒÖ´™€Å4Û+:»j[ô[²pEIIÀ«Tª¯, �����������˜¨ ð?8;;ûl%a °0A‹,dXŒÎ°…Ô=h¡ŽuR÷°E·ÇÃ>ד«éf”nëºÍ·Òmžic£EAI¸Â=sæÌ3W�����������0žWxÄ™3çž¡õ™& Ú8¾/uŸ±"Ó-# Ÿ9˜¸i,†6¤Ûú^Vg‹Eç_ÌzÓ^áÞ|óÍ?°¸¸ÿ‰�����������S³¸¸ðD3F¯õ'ò!Š|˜¢sV‹Î†ºl'm.‹0žÆ3ìô Ýî÷š$¿×’}°^Ç}/÷¼ù¢ÊÏ}îs/ýÉŸü©?ï�����������¦êÒK/{H­V}ÇG?úѪ֧�1Óqd™€ÎûÙí );úezm7ìñ†6nbcR‹A!‹nõ )—,`‘M 2oî/--ýîììÜã�����������¶DµZyûþýûOI¸b-^üô~.¡ÚÃùûQÇýn!ŒÎûùÛ~÷; ul0é)B†­Þè”2É/:C¦­Â}÷»ßý Â�����������l-3VoÆì•ÃW÷ñýAÓô›"¤_a˜õc™tƒÅ¸Óƒ Ó^Ñm~/w›µWxÕjýO=Ï}°�����������À– ‚ðã³³å_WÒX‘µXdí-ù&‹aZ,zµWŒÚb±% “Jx ›(É?ß-€‘…-²öŠï$\����������Àö0cöfì^í-í… ½Œš-ÖÈÇ™ä!›${ì ±M·íÍ—â|÷w?ì? �����������l›‡>ô»¯ÜX¾ÆÏôÛF}Z?²I,qÆXŸo«èL´l˜*äÙÏ~ö‘R©ô(����������€mS.—¿ÿYÏzÖ¥Êé«ÿØÿ F‹©(™VÀb³£~�…xqõWõ�����������Ûî©O}êÕä £í¹éLÁTB£,¦™üTï‘Ü9‹ý2®¼òj�����������ì�¹1|3¦ß9Î/ —˜vNah£¦D6«ß|(ùõÝ·ã6¿Þ{Ä#±ÏóÜ ����������€]* C5›M»A`—(Šìb8ŽcÏóìR,íâºÓšÀb|f ÿ‘|ä¾›nºiEÉØ~¨ö±þ0½´1tá¤ë;å×÷Úf*&°4×Éf%½š-òºžÿüç“�����������ØeL¨¢^¯ÛÅ÷ý¾Ûfa‹,ˆQ«ÕìúB¡ r¹l—¶xÎsþÛ7ÝtÓMŸÐÆ2…¼lݸa‰lßaBcÛê‹N“¨òðÌqþÓúO÷�����������»„ IT*•VHb3L0Ã,kkkš™™ÑÜÜÜŽZ|ó7ã}ã›O*Ûojs¶´±¢Óv,Í™2(tÑmŠ-,,\'�����������v¬0Ë4˜À†YLÈÂ,ÛiqqáÚôn·±þ°Ï®SHíáŠ-[L#`1n+…3äÒ¹­ýŠÅò5����������`3-«««§™àh4Ú·oŸBd;¤cù­±}õûï6}H·`Ű&ÀØ®>qBNŸõŽç9— ����������€ª^¯ëÂ… [®È˜×2¯i^{;xžgÆò;ƒy“ÌLÕV,¦õíqÇÝ/�����������v jµª••móÚæ¶šë:ÙXþT3[a”€Å¨'åLùùÎíf����������Àc‚ kkkÚnæ¶:dEQ6–?j`ZϽý$,&}òƒŽÕmN–ü-�����������;‚™šc'„+2æ\¶xºncûãþ“|qŸh+§éfØ7àjã‡Ü-d����������ÀŽàûþ¶N Ò‹9'sn[¨W¸"[†Í.lk6`«ÎëòÏ]Tá‰~ðCúá~‚]>ö±����������`wZ]]ÕNµÏmP>`Ô¼ÁÄmwƒEÆé¸Ñ+Œ÷¼ç&=ÿù/Ô©S§íòò—ÿ¡�����������»O¥RÙê–ˆ‘˜s3ç¸uË ìˆüÀN Xã†*öDÄ+^ô¢ßW����������ì^aîÔðBsŽæ\·È¸y€“ ˜tÀâ¢k˜„ná Ïóô›¿ù ����������v—Ý®Èì¦sÃD3 ;©Áâ¢tÓMïß®p]W/|á ôˆG<\����������€ÝÃ4BÔj5íæ\·°ÅbWÛŽ€-)®øßyцpÅïüÎoë1y”�����������»K½^×n³ÏYÛ=(Û‚p����������ì=› +<æ1³·GŽ\¢§?ý©zÈCÜwû›oþ¬^óš?ÕÉ“'íãw½ëí‡9çÙÙY¡¿­j°˜drÄéXvÂ����������°÷˜©6|ß×f>}F¿ÿû/ÑûßÿÁžÛ|êSŸÒ _ø{­pÅf˜sÞ¢iB¦5Þ¿%Ùí˜"d3œ!×íX„+����������`oj6›ÚŒÅÅ…Ö}xø£?zµ>ò‘ÿ»a»ÿ÷ë÷~ï¥ñë5Zëöí›×flö܇°ëÇûw[ÀbW#\����������{×fC ¿ð ?ßöØŒ-¿ìeزøèG?¦—¼äåmá ã§ú§´[°ØõXlÂ����������°·åǃÇñ?ðhýʯü¢Çi;æK_ú ;]ÈG>òQ{¿3 ñä'?Q?ú£OÐflöÜ/í ;º6„p����������ì}“)<á ··¯{ÝZë²éBLðÂ÷ý¶íM¸Â,›5倅Ó´ËmWÀbÔ@Ä®šw%ïƒüІp…çyzÑ‹~Gßÿý����������`oˆ¢Éd²Å_þåÿl³[�bRá cRç>¦q2[~Â{¥ÁbÇzÕ«þ˜p����������\&Rè²È›d¸ÂØæ€Å®à �����������ì8‡¶Ó‚t2ë.½ôˆ°µvCÀb×NbüÖo=Ó¶VdL›Å‹^ôûzÏ{n����������`ïè†ׇ>ôa½â¤0 7<gÚ&þøÿ»ÞñŽwjR&yîãž‚v8,¦ìx¸^üâßÛ²øÝßý=½óï����������`o˜THá}ïû€^þòWÚ±åŒëºvɘşýÙ_èßþí=š„°Øñ¦°àˆÝxã B&eôâ¿„����������ìù1áq}àÒ«^õÇmÍ&üðô§?UÏxƯ·…,Ì6“j²˜Ä¹ï�SÍ(4+:Üxã ñÿž^øÂßm¥Œ²…ñ?ðh����������v/Rh6›×?øaýá¶O b&Xñ¨G}kÝk^ó§­m²&‹ùùyÝpÃÃ5®=°È˜ÌB¤ cŠ-tã4Y����������À^U,µù—¯®0÷»5Y¼þõoÐflöÜ/,¶Ø7²����������€½h³!…³gϵîgÓ‚äÙn!‹ü¾ã `1ØNXìÉ©Fn¼‘����������ì5&ðP(´Y‡ÒsŸûl=ö±?Ðs²xÎsže·Ý,sÎù°Æ6ÚÑQNÎb½3Ä­Óãq¶¸¹ÛlñÒu^Çbž[4·Fó£ÚeÞ÷¾è…/ü]AÐZg.Ú¾ðúx´�����������»KµZÕÚÚšv“ùùyÍÎÎjZJ¥âCã3÷Érzt,Qzæ–(wÛ¹¨Çã~·÷5Äú6L²n¼‘& ����������ØKÊå²v›ÝxÎÛa؀Şœªc'¸ñÆô¢ýΆÅüÁKõÁ~H����������€ÝÃÌZ033£Ýœë™d; •‰ Ábøþï䆅™6äÕ¯~�����������»ËÜÜœv‹Ýt®Û€ÅÑ-d����������Ø}L#Än.˜s¤½bxaÇ0!‹R©¨W½êå8Žž÷¼ç����������°û˜ðB£ÑïûÚ‰ …í#j‘Û9]î÷»uz<Î7w›-^ºÎëXÌs‹æ¶Ñh~T�����������ì&\qáÂíD°!‹­P*ß„ñ²œÞK”Þ†¹%ÊÝv.êñ¸ßmçýNýž³èú�����������` L€aaaA;9§­ Wì%,�����������˜’r¹¬ùùyíæ\Ì9atDR�����������˜¢ÙÙY{»¶¶¦ídÂÙ¹`t,�����������˜2lp]W+++ÚfZš+6‡€�����������[À<ÏÓêêª|ß×V( Ú·oŸ½Åæð ����������°ELÐáÀªT*v™¦¹¹9»`2X�����������°ÅLðaffƆ,jµš&É×ßLI‚É!`����������À603}‡ CÔëu»Œ;uˆiÆ0S˜…`Åt°�����������`™@Äìì¬]Â0T³Ù´Kv‰¢È.†ã8vñ<Ï.ÅbÑ.„*¦€�����������;„ JdMØYˆ°������������ @À�����������`�������������°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`�������������°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`�������������°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`�������������°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`�������������°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`�������������°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`�������������°������������€€�����������À�,������������ `�����������0� �����������€X������������ @À�����������`�������������°������������€€�����������À�,������������(�v¨(Š4*Çqìt\Û���������» �;Æ8ƒÎƒŽÁ 4v®m��������€Ý€€m5‰çaÏ€4¶Ê´¯ëÎ×àÚ��������˜>�¶ÅV @÷{M¤1 Ûq]ç_—ë��������`zX�ØrÛ5Ýë”Æfì„ë9cÎ…ë��������`:X�Ø2;i :o/þõÿ¤?kí7âz��������¸¸°�°%63=ì¾›PÞMÓ[=¸ßïõ.¶üI}öÓ¾®i³���������˜,�¦nÔéq°;÷ÛÌÀôföŸ„ÚŽÐM¯sÝkƒû›ýN¶ãº&d��������09,�LÕ(ƒÊ“l6(±A‹Ý¤U·÷¶û·+X1èxÃ~–„,���������&ƒ€€©v`yÚ!ƒüñÇhÞìþǸ˜í–ÐÅN Uô{a>?B���������›GÀÀ¶ê7mžËžÏßÏ3ƒÆùe˜×ÛÌ@ónJ sîÛ1ßï¼¶ò|&õÝŽ,Ê/ò×t¿ë›ð��������ÀÖ ``* 2ó| ÃÐ.Ý¡³Ag×u[Ë0A‹­˜úc+M2ô1èX[ý™í¦@˨ÁŠìÚöúö<¯oÈ"Û§ßëÄ��������� �·™p…löƒ@µº¯•Z µxY­ùjø¡šA¤ 4ûFrWEÏQ¹èjߌ§ù™‚âÛ™rA^.l1è<vÛ€óvvË[m˜ï% Uñ²™ë»àyöúîõ„,���������¦ƒ€€à >7}_ÕjMgVºó\ cBX u¾*­Õ#5‚dÛ’'Í—œ•®XttÕO÷8\Ð% EÍÎΨ˜DÞ­λ¥½¡[óÂÅdØ@‘¹5ᡉ\ß…BÏ���������¦ƒ€€‰·½¢ÑlÆ‹¯¥µ†Nœoèëgêºãl<�½,^sµT÷Tó=5Ãdð¾èFš)„Z,:¹èôŠ£ W÷¼dV—ˆ´¾¤R±`¢MŸ°SB[9ÕǰÆù\ò¯½×Ãý>çüs&8Ôíú>º”\ßËî×÷þ²¹¾Ãøúnv½¾KÅb××¥Å��������`òX�Ø2½£Ms…|>¿\Ñí§ºùx¨¯ž‘N­¸Zm¸ªŽ‚ÈU¨xIÅÑ~Cª6¥ 5GÇWBÝqÞѽ/ÔõÀ«}Ý눯ƒ‹sv:…l0¹ßÀò Æ4l6± ½^cØÏi/‡-† W˜û›¹¾ÏW“ëûëÝ«ËõÝ­É‚��������Àä°�°­‚ °Ýaµ®¯Þ]Óÿ;ÑÐNx:º\PÕ÷äGݧAâè@žš‘§Z(­ù¡–jÍ@%5lhã:׋ Ý¶é¶û¯û7ШІ‹i'öRØbØpE6íMþúþüqOÇVÆ»¾« s}77\ßžç ���������ÓEÀÀÄ ;èœ_ç*•ŠŽ­é3ÇBý¿“žŽ¯¸vð9ˆ†„7ÛVšžýKÅÓõ(Ðl©¦¹b¤ùùy•rå¿Õ!‹qƒ“Þ¯³U¡›ì}wÞûz£†-vcÐb”ë<»¾ž©éÓGC}ñîÉ]ßsåõëÛˆ:?ËA-4\���������Œ†€€maxÍ_áWkM^nêŽÓ5}õŒi®ðâÁç‚ÅÆñv×Q)þMU*8ñ}ÅÉÉ pFòã±æ†ÅK<�š¿øw´Ú,êèJ ’ç명ª̹r½fkª³˜×ÎÂóýùPÁ0Ó‰äÓmÿ~ï½Ûþ™AßÙ>æóThÛ6þÌ¢tóXæ©ÖnNòÙšÿ‹ë½lÀ¾ã}åo»½ÿüç6Êç— ûþû}þÓÚ¿óÚéõýeÏ™ëûÔRcŠ×·×º¾»…,���������09,�L]·°à÷}_ËU_wžkꎳ‘N­Hµ  0H6ÃÄf°x¦èèð>×%g;mÔãç•Z¤ •PgWCUö…쾦àÔjS_‹ypÞ×ìLS³å‚ …Bë|Ìë›éI²@€Y¼tZê²ÈγýÍm¶¿Ù7äî.Èïo–^¯ßkßÎ×϶ϰ·m·f*–FSQ|¿ÙŒoÃøµýô{q²ý=yE7^Š*–’iUÜôœ:ß—9nöúÙsÝ>¿Î÷Òïó3ûgS] ûùuîßïóÛìþ½>ÿlÛüþ¶Å^ßÍøúöõõs‘N¯Nþú>´¯©™r|ÇK¡ËT!4U���������L �Û"€^‰GŽïŠ -KkMW~” P›¿ì7ƒÏfàùÒÏB/θö¯ýº/í+‡*yŽýë~ÅCϵ¦ì_ýû‘ùKWÇ–9ïëŠ šOA©ï¼V‹_;^êÍ$P.ÄÇŸ-h>^æÊ•Š… !s¿Ñô[û›pH­ôÝ¿ó=gû¯Æïæõk$ 1Stµ0Ó¾·Ï,ÿú+µÀ¾¾¯/8¡æ ‘J äE¡I°Ø`… S~`ƒ~|ß÷ýÀ6$i³°oÎ.&LáÄŸ{±\´! ¯˜ Øâ½\.Å·E9ñãÀqU³€P ?;¯çûÏl:?¿z3ìúù•Íkõùüí?èóuÿ,XÑ{§íûóâÏÑ|öËkÍ©^ß—Úë»ï¿1\��������€É"``"úM‰ÑmÛ¬áÂj]GÏ:½æ©¸­mÌ@³t6ƒÏ—ï÷ìàs!?NgPˆ°ãmâå¢ç´Ÿ^ ä7’盡3„Ž —/kÈ÷K6`QmFºû|UÇ/øºkÉÑrݵ ‹¥@×ìo誃]vpÖ{é´"FÖX°Zmèä¹l ½(1ûw}ßîå‚.=0£EGö7¯¿²ß}¾¿¯¦Ž.;Z©;6`1¯š®(®j¿ªš â¡^WÐhªo6}ùÍ$Ta–HŽ V˜%Lê+’u¦ÉÁ40˜6‡büÚφ*Š3EÍÌÏhf_Ya±¤†WÖ¹fQÇW ZixmçoÞ¿9ÿý]Þöù™óöóË7Bdï?ûüï¼Ð¾ÿ=ôÿüÇÝ?½æ÷o?ÿ(÷þg5[tâí}-­Õì5xz­0Åë»Ùjc¥±‚v ��������€Ñ°�°-’iLƒ¯s•H+MOA´>Øk¦J0ÝŸýeÿl©} Øü­~ÑþÁ¾«f©/KU3•Bôðãè•fAçãýjÝ·á3˜¼R uô\C_;éØJ!Þ&™Þb_¡iÛ ¢(Ô\üZs¥õi/ŒlJÓ¸qô\=Þ_ñþÞPûgƒóëûwýzüY˜ÏÄ ÎwîoÚ굚––ë:qª¢ç|YV¼£BØ”U´ê.ËÖTGáfCa3PÐ4MñçmÂö£1A 7 Th=X‘¿5ÿ¦a §àÊ3Ó«ÌTTœ‰ÿ‘13£š[ÖÙ`F' ZŠoC×Ó|Ñ´e˜÷¿~þF6-ËÆÏo¸Ï? �¬~uÝu¶®;ÎG:ºlöwÒý}5ýfÛëwÿþFÛ? x ûý›íf‹® óžý<ªõ ¾¾5µëû\|>•ZrÝŒr��������ÀèX�˜ª^ƒ¾Ù_Û›)*¦p!ðjý/üãqýxàÙiýe/æ9³ÍZ=´ûḏ²i,j¨õþg—›vpýÎ%Okñ w3}ÍÀ¼~Éu]2ßÐÁùdÊ…ü�}£Ñй•šÝÿ®eO«þû›Áùü�}~ÿ^¯ï¹ÏÕãý“ö3xoömÆûV«U?»¢Ó§êZ=×оjE‡›5Í5+*‡5•e‚|3EH<˜Ff ˜pãûñ­ë¶…*ÂŽ…òa ™×ÓŒlðÀ©ñþ E^]M·¨º7'ÇsäÅÿiz³ZŽüÃÐL«±~þY8d”÷ßïó¯×ëñ÷—íïÆŸ¿ÛÚ?Œ_ÿ®ø˜æ]™ýíëõýÕ‡Þ¿ß÷×ïû?<WÓ|±˜œs3˜Úõ]’ë»Þ\ÿyꆦ ��������€É ``Kåí´A Fਦí )×uì_ù›©Ü>cÃf…rÁ,ŽÖ¡uìøX~7|?hµHÔê.TÜdp?rm›ƒáÇϯù]¨šV ÈÈŸ«YW­5íþ«BŸý};=Dçþ¶±£î÷}ýó•¤õ Q¯ÛOÃÿ»Y««º²¢Õ ˪ܽ¬èt ¹5_³ÍŠæüªfüŠ ¡/µ5R¸é ºÓ> HGˆ¢½¹¢ûó2S‰øæ~|×5í<¯¡¹b%~OŽÜ¢Ôˆÿ«?y¡ÆçÙpAþýgS¬ zÿã~þÍ0ÒjÓì_ﻥÚÔRÕé»Öx2î÷oBCæýÚ÷l‚Sº¾Í4!æúNšCÚÏ•@��������Àä°�°­’¿¼ŸÎ`°dîl6Á‡fÓ¬/ªÛ¹˜õ è}>ÉT&<P깿ïwß׌›ç½~£á«^7¡†@aµªê™sªŸ[²‹{~U‡+ñëÇö^Ê‚x “ýÓÓNBê¦P®¹Âq{N¥ŸÙúþöµ·æ™’™–¤±¢RÐPÍϱ8«µÒ¼‚x°ßo&‹n’ÏÇòçïôls0û7mãCi*¯o¦r‰7‰[ë¦5sGò¦���������Ø*,�l30ìÆKÁ â%T3Zÿ+3ÝBÝ7‹ä¹ñÒãA<xm¶1ÛáúH¶c'Qä9Áúk¹®faÆ©«lóvÃLöPŠÌ4Õx›Y;µD~àÚÜ7ëŠ^~ÿ™ûÏįµ¾6Øßùúa4«,†àEM£ªJþТНÚ©VoÈ_Y³ÁŠÆ……Ëyõ¦ö…IÌ!4 '½íÒHõh¤Ø°ôØ^YH£µ]òÉÚÐJª¨† y˜ö Oñ—‡%/PÔ,(ÂV‹„ùòŸYæsRÏÏßsfÆüüëöØæóϦÉ-Ìë½x/§1Ôþý_¿ûùÏ8µøüË­©EÌ̵=­ëÛ,æ! ��������€é#``[dƒîfÀ½äƃõŽ&'ÃÆ†J+µHûÊfÐ>ØîÆÇ——k¡–«‘½Ÿ1‘ƒ²ÓÔŒÛ+&ƒãÅ¢g º¤t^µzM¦ø¡’›±i38~À» #å ~Í9»m6Hnß/•JZ˜Iö¯Öªñþºî¿03g·Í4òûg¯_­ÕlD=š±Û£ŠÃ3:è¬Ê;ï«v¶¦ðÂ’ü•Š‚zSa3PdmîH¡ u›þcÔÛä[[Y¤MÌÀ‹|Í4Í4% •âÇQm^µj]3336d‘…òï¿ßço>¿ÁŸ¿Ù—ýÃÖç?Ýý«]Ïÿ’R¿ÇY»­i³0×mÉ ¦t}ûöú.J­Ÿ'`'øð‡?¢ý×wêèÑãñï²¾å[¾E?ù“?®Ë/¿L»Án?�������Àô°�°-’aW³eOûË5ÍÇòÍÈ“Ÿþ‘~#¾s¡bŸxðÙ »*ăÐn:†lþ˜ß 8/ŃÏgVC·mëáoš+漆Šñ t©¬B! Xì+ëÊñëø5¹µeÕâq‚˜+4uéL]W,–µßL¼}¡- ‘5dû7›fÿ•û—í¶ô昋ûJ¹ý—T +rãÑöU—guIcMŵ†µŠ¢å59 _N<0ïÚÆ ”psÓ¨~h Vl6LÑ­ù"kãÈÂÎzȉßÑ´…Ä_H¡ª²\й³kòŠe»ýìŒithÿü²Ï¿ÖìQû}þ­ö‹xÝþ³Á~~^}%Þ¿n÷Ÿ¿ëdÿ™ÖþÝ>ÿÍîßëûŸõ’ó¿rrþæZ3ëgJ…ôú®Máú®k±į‘ü,°Àv3×üK^òr½ýíïh[Ë-Ÿ×?ÿó¿èå/‰ô ïÔNµÛÏ�������0},�lZ~†aÖY`aߌ§Kf^­j-(©•ìó _:,éÍxpyaÆU9ý­e¦MX‰ŸÍ6'—;XmöɘiGöë:2ƯQˆ_« ðÏÏè®<¬¹Ò<·ªJí‚=—ÙøÀ—^Ð¥‡÷ǃðs=§ˆÈöŸ-^Сófÿ¦}>ÛÿÈ¡Åx~ãþ†¤_˜›Ñ=.?¨’{^ûÎ\ÐÚòZ<Ð_ÓB<`°YÕ\½*¯3ˆßLüæ“)%r êh”Èn§õ|þv”æŠ0ߌÑÑ€‘sä›,ÔviãÂ…†\oUÍøxG.Mž™›-§ï¿¬{^q(þü—ZŸ¿Ù.¾.?¼ØõóÏ®£äóŸÕ½®J¾¿Ãç“ýÍÓs3Å!¿¿ñ÷7çßûû÷tÙ¡dÿìûo¿¾kñõ]žâõíõ XdA•a×ïFGÕýØOi«¼â/Õ#ñpí~ôjii¹çóûöÍë½ï}·¦éÿño'd*•ŠžÿüßÖ?üÃßëÀmÏÝ~û×ôÄ'þLßcßë^÷Ò[Þò&MÓ¸ç�������¸x°�°eò ;=H¡ }³%]±6¯ù:×lªv ß <WfËPž+û×û«õPe/ ®ÇÍ fàÙ,•F” ÇCýn¼Ï¬ÛÔ%3 ]¹èƯQh5ÌÍÎè²ÃÒ|< ~`ÎU­V³Ç›ÕÁƒí ¤©„ï6èlÖå÷?8oö¯ÚçÊå™®ûw†LŠO‡fäV *¯Öµ¶¼$§¹¬™j#^L¸ÂWسafp²PCëlÖ›$²×r:×w4]´nGk°Pnš¨ë4!¹Çæ{«Dòš…¢êñ?f"Óºa>ãøs1Ëe‡7|þf:‘ìó›íñù+=F¶¿ùü«Õꦾ¿a÷Ï‚ݾóçÏ?Ûß\s sÅøúvtfµ_ßøú.Oìú>2ÛÔ æú.¶?:ÏØJÿò/ïèûüêêšÞ÷¾÷ëG~ä Ú‰vûù�������¦€€m‘ @˜/鎔tnuE'âçJØT=´N˜Qb™‚€Ó+–ª¡ ®™B!4ãçü0™jÁüe¿P6ƒø^<ø\ŽŸ÷ºf1Ô=ÏÆ¯Qn @›Å †›Çss³ äBÀ4�”J%»ÞÜïÅ<—ß?»Þ„7:÷χ+Ì}³­ßh¨¾¶&·RÑÂòªf——“©@LÐÀ¼¡ÈDÌúú´ý,œöõ¦ Q×p„†h®è>]Húº¹‹H¹|dzm µJ¤ó§}-…u1ïÿ`¼óülIårò}ÌÏ›Ï/lµCdŸ_~jŽnŸ¿ÙßÜÎÎÎLìûëµg@f˜ï?;;%É\I÷¼¤_ßu¬6'z}_½è.i¿¾ítòä‰Û?~R;Õn?�������Àô°�°-²Aõù¹²®<<¯³+M_­©8:לS-JþÒß 2û Ù¿àï{¼xøÙ >Ï85*TtùlU÷ˆ¶¯8<g_#?ho£ÍbÊ»× óÎáÍ@7v0<70oáµø½U*j,/«~ꔚwß-8¥‚©ô¯ÖåÄï3l…’w´ñ¶H«Ñ"k¬PgSE[ðbôæŠáŠ\[F¾)Cç똩BU+ñûŽÿ:žjaM÷JOxv& Yä?ÿnÝÖgŸ¯ï¯Û>£ìŸ½n¯émòû÷ûþ³m³ëûÜjSÇVÌõ­ôúžÙÄõ]Õsæú.Å×÷lëú&`ívèÐa-/¯ôÝæ’Ki§Úìù/Ç¿ßßö¶P?óósúéŸÞº©l��������“EÀÀ¶*—Jñ ÖAÝ£âëÂÊi¹~-m–Î4]5¢ô/ý‡`:JNS‡ŠÝkî‚îwÄÑ=.½ÔÛ¼F^¿éz ìçŸë§sß÷Õ0­««ªÞ}Jõ'?.='§bZ+;·GÖD¡Ž† ui¬èÞ`¡îë§í±4L˜ÂM›-Ú׫£!£³É"²0q–r૲æéËA¤Ó Ó4Q±ß“žô:B½¾“q¦ºæ{š–Î×ήïkâëû›–OË ªéõíy}Wuïùóºï%ŽîyÙÁøØ‡6\ßÀvyÌc¥×¾ö/{>oZ^n¸áíT›=°xÃþJý\zé�������°‹°�°-²h;UÄÜœ®8²Ư* ×äŸYU¡hÙ/©–í tyI»C:ˆŸÄ�ByŽ}V³n]‹…†m®¸ÏéºËguù%‹š›í:eÄ ûQé;·7SWØp…i­XZRõÔݪ?¡àîSrÏœ•W©Ù‚y?¡³þ¾Z9ˆVCÄàÇ!{¬Üú(·ýfš,”›&¤õêl°H¿Ÿø¦`ž#-W"Uäk®à(ëº6JÚDfÊE•Š…¶E²ïpmÛe”kÃN%_ƒWÙ¯j%¹¾›gÖT¨†c]ߦ¹"¹¾çìõm~v²v–qÂ(À$=ñ‰?¥O}ê?ìÒÉ\§Ï}î³tùå—i§Úíç�������˜>�¶¸2ƒÐ÷ºÇ*–Îk¦xN—œ=§•¢Î5fãèU£5Âõ¿ø7ƒÎ%§<7´àUt¸\Ó•ó¾®>äéÞWÒÕ—Œ9c=Év„nÇè¶Î„+*kkªŸ9#ÿè]j;.:­ÂêªÔôåDZ.´µP¬/ùöŠ¡,:+òM¦ Ém¯\˜"¶h=©3\‘}"ŽëÈ C•šªÕ²¾p÷ŒÎ7Ìçcš,Þ?//ÞÆ`òßC¿ï+³]A‚~áŠ^×Br}Ï讹B…âyÍ–Î鮳Õôúž‰¯ïÙž×÷œg®ïª•ªéõ]еWn»¾Â4<¼æ5¯Ò[ßú÷zÇ;Þ¥£Gª\.éúë¿E¿ð ?¯ûßÿzíd»ýü�������ÓGÀÀ¦ôpµbvfFÅBAÏÕŒh¡tA–\­é\­©U¿®ªïÚ¿ô7Ì_öÏÆÛÍ|žõuÙ|¨«ö{ºæ²ýºüòÃZط϶äÏg’!‹^ïÏ+üFC•ÕÏžVíØ wÝ)çô®pýÀ6V˜Å¦ÆÍ 8ëû¶7H¨­±Â'²„“ q8¹Ð…£Ñš,ZáŒõІrA‹VÀ"^ÜxŸñwêTÓÕšïhÖmÚ­L“Å¥ñF3¥ö&‹üç;h*—~ÛLÊ8SÃt®Ë_ß³s}/iÿR »×j:[õã뻦Zàm¸¾÷}šñuù¾PW.zºÇåݯïaßÇ´‚F»É£õ} ¦\vMݘëòÉO~’]v£Ý~þ�������€é"``K úË3À›Mrå•—k~ß‚.¹°ª«—ªZŠ¡+µx�ºá+C»Δ<Í–=ퟟÑÁÅE]zpŸìß§™rÙ«ÛTýš 2h‚@Íz]kKKjÜ}RÑ׿&;.÷üy¹Õºœxÿ|cEë¸Ê‡$66Z(jhÛ¯KƒEgs…Ôµ±"ʈ:0ÖoÝÞa ©£cý½äƒf{Ö“*~>ŽN­¹úìÉ’Öü@fâ× uɤÉ zw|óÝôû^F Œ eŸöëû ÍÍ/èð…5[ªØë»Zïv}47“]ß³öúÞ¿8oÃÙõÝ/Á”!Ýýöo?ß6���������ŒŠ€€à —Ëe‹E’Ø7WÖeªZ[[S­VS³Ù´ †`¶ÛŃÍsñ õÜܬæççíÀ©9Î8ƒÎã °a<(Þl4ÄK}é‚ê'ŽË?vTîwÊ;NN½)'77­ѰÞíŒ7lßц‘o®ÈÚ&²f‹VÃE{ðbØ‹õûJÛ+6?Z§áJ¥0RÙ“\?R#turͱ[Íšñg^Shš,(þ΋*Ôµ]`ØL¯ý¦aÔösîæú4×m9¾M®ïY{}×ëõ®×÷ììì†ë›iA���������¶ �cwðzÐ~f Ú .ïÛ·Ï.Ôh4ìà³i‰0Ï›AælºPðâ¥ØÖZ±ÙoŽc°0 KçÕ8v—¢Ûn“wòn9«+rãAs…²m­ýÔÙXѹ¾õIhPsEï¦ ©3D¡Žõê Mä› U„]›-Ú/§=X‘®É #Õ”¹ âôœ®xúÜIÓlaŽ^‘Y{É}¶ÉÂîÕ#$³•Sƒt3èÚÔÔbä¯ï™™äúÎÂ×· Txž—^ç…¡ZVÆò†¶‹ñ­¬¬è'ò‰:wî|ßí~ìÇ~TÏzÖ3ûnó×ýF½îu¯ï»Í‘#—è­o}³ ÝlÆwÞ©ÿóþU7ß|³Ž;¦åå{Í>|Xßø÷ÕÃþp}ï÷>bèéhþÛ{ÞÿþöÝæ¥/ýÝxã Ú,ó{÷}ïû€>øÁê _ø¢.\¸`†د뮻VzÐwêÑ~”<8ô1G=ÿÏ~ösú•_yšFqêÔi=ä!Û°þu¯ûs}ë·Þ_�������€€€‰ÛLk@¶¯`6ƒÊfо4U‹GôWš5ây³I¹àhÁ-Èu¼ø¾ Z ?%Hþu6Óˆ`îû†šµªjgΨ~ü¨üxÀ²p쨊+Ër‚Èž«m®tàA Ãj' St>έo5\8¹iBÒæ‹HùÛîMö3è˜6¤×›0sÉ TŒ?*ªt².§›šóLkC]Aäê²x»™’i²ðrûß82éÀ(×ò0áŠLûõíÇ×·ÛýúV|}ÇÛå¯ïÍ„!RLÇ‚žþô§éÅ/~IßíþéŸþY?õS?®«¯¾ºëógÏžÕ›Þôf òÌg>cSáŠJ¥¢W¿úOôŽwüë†kÓ„ÌówÝu—Þóž›tÅWè9Ïù-}×w=D;Å—¾t«~ÿ÷_¢Ûo¿}Ãs&À`–~ôßõñ—ñçýú/ÿå˜�������0ôŒ˜ºQžóëÍ_ó¯V:y®ª/Ÿ¨êwøúp<žö‘;¤OÞêÖxÝÝç«Z«5í¶ÝŽ•µLô{ýü2ìó6\DšpÅÚéÓªßõu9·~Iå;¾ªÂò’\?ˆ7 5œAMÙúÎ&‹nÍí«Ë¶ùéDÔ¾^êh®p×›-âûv‘¹u’ç§ËâÚ€EÑ Tr|³µ=F#pm“Ågï.èSGÝvwUg.¬ªÖhÚ¿NÏ>ï~ßφϨãûÚì2Œ~Ûö»®Ì5k®ÝA×·ùèu}gÇêwnØ}ìèøÖ¾Û˜ßñ¯ëùük_ûznèç¡}Ȧ –——õ«¿úkzûÛß1ÔõqâÄ ýæo>[oyË[µ|ò“ŸÒSŸúk]ÃÌÔ;o|ã›ô”§ü²}��������l �Æ2éÛìxf`ݰá…fSK«5=W×K®Ž¯zZišfGû M5šA¼} ²ÙÅ4˜éú™ÔÔ ¶¹¢ZUýì5Þ©èί«x⨠+Ë6Í`§q²©4¦hÔæ Çi;§ÈYWt›.¤’èÖd¡ŽF‹žÓ„$ E'´‹™$Š’}jaAwWÌwÖÔ|±)Ódá®.=Ú&‹‚çöü泉aذG/&0‘\ßõ¾×w%×÷LüOëlšÃ4`“ü h·Ø¼ç<çYú™ŸùyûýörÓMïדžôE}ó7SÛúÛnûªm”ègffFÏ~öoi\æ÷ësŸû|}ùË_i?smüÉŸü9r©¾ïûnÔv9~ü¸žÿüßV5þÝ;ŠÛn»MO{گ뵯ý3]vÙe�������`\,�LÔ ç^Íoþ²Å<n4ö/¹Ï,5ôõ žŽ®´Ötãaød`y¹á*Z.( ›:P®j®àÛÁG3=Œq’³sôãskž?§àØ*|õËòî>)gmMn¥ƒÁ66U —–Xo²Èš+Ô¶t®oo¸:,”;^ätܶ½N{ÈÂ4W´¦ É…,Ö›0Ô:ºùOÁ í’ÿt’& étÅÕgOãïØl*ñZ_ö•4S,Ø0Á(ß×vN2ìö&\Q«Õìõ}Çù‚Ž­v¿¾5µ¿TÓ|1ÐÜÜ\+a>“lejœažÇøî}ï{é'ò'ôw÷–¾Û½þõoÐÿñ«ÚÖ½öµ¯kÌzùÅ_ü;eǸÌô#ŸùÌÍ×þá+õ }‡µ^ùÊWieeUã8qâ¤~û·׆,ñ��������è…€€©ôWü¦©¢5ÝF3" Ôô›ªVkªÖãÁæZ<ðîåÛýd�:ˆ}­úÒJ<:¿V­ÆÛ6ãc4[á?Þøq·:Î?Œ6Š––¿KÎ]wªpò¸Š¦¹ÂD¢|Ð` Fm¬Ø°ŸÓóñz“EvÛ¬èÑ`‘5W´Béó ×4ŒÄß]Iž\óDúþÙ1ji²0O4Tvüø» tC œ+¨è™@A”{#;ѰӉ$·Ùõ^©FZm”z\ߎ–ë¾*õ†jµøbW¨zÝ´´$ÁŠb±d¯w–0·½ T´{ó›ß²©öÅÅ=þñÿ¹çó&ñÞ÷¾W§Nî¹ÍÇ>öqÝzë—u¿ûÝ×>þÒ—nÕG>òQõsíµ×ê§ú§4®ÕÕ5;]Æf,/¯è­o}›~ù—Q[ík_ûš]6ã–[>o§:yò“Ÿ$��������ÆAÀÀÈÆ$¿_®0MÍfÃ6›E‘i°HZ,âqäxÙS!^ܺ#'tZãØfÀØ ’ ñ }É :›éÌ õÆjþIŽ-;M_N¥"÷ÔIï¸MÞ‰còÌã(j5BdÙ…AŸÒ í" ;lßžºèÞ\‘>ßLÑþ8Ê=î:ˆÖ›+Úžë3Mˆy츎fâïjÆ‹¿«Àk,òÛ˜&‹3Õ‚>ÆLÄß(ÏLRŽTô&;%ÍVêþãÅ×®_»…40Ñíúvãm<•L‹‡¨Ù¨«é4ìsŽc®ýº Y”J¥Ö>ÙÔ!ã†*.†0Æë^÷zmÆUW]Õ7`ašF~ã7þ«^ð‚ö;ŒþæoÞ¨—½ì%öþÞð?ûnk¾“ç=ïÙ›n^0­@›õö·¿c[“bB&?üÃ?4‘ó]ßç>÷i=>zôèPÓ—ä÷É �������°ó°�01Á‹nA ÓPaÂY°¢^««ß~Ó+Ì@¼ë¤Îñ òüLA‡ç]UâÁ÷¥ºT’cÎÄî‹3‘.ÙWÐÂ|I3å@S~srâóv›uyΪpö¤ çÎÈY[QdZ-Ls…“Å+òû¥·[=f=tÓE{0£ºH-¢´Ñ"j _ôaä,¢ÎAz' äÙï¸S«É"tuºVTy5Ô%+ÊåPWC•J‘¼x7wý/Ì{ºd¡ JØýú>¼Ïü m#™>'”o.õÈ—ßlÆ?G¦¹%þù fíÏ•™"Ç ÂgA‹Lgp‚V‹ézä#¿Wÿò/ß©ü“=·ùÀ>¤;îøºÔ^a×_ÿ-šóÝ?àߪ{ÞóžöñW¾r›¾ð…/ µ¯iæøêWo×µ×Þ[ÛÅœ÷ÏüÌu¿ûÝ/þQ²çó–·ü½>÷¹[îk¦yç;ße§rÙ¬ûÜç:½éMÝzl?öcý[F.½ôHÛ>�������€Ý…€€‘l¶½Â ›¿¢n4êjÔëñ`±o[+ÌX¯ T˜qáä/ô²˜+Fºf<úìÄÛ-âAèdPxq&Ô=}]½h®0ýv®pê5yçΨôÕ[U8~TZ^2o¨Õþ0~sEÔ±8=¶k·±á¢ª¢½¹Âɽb÷‹õi>œ Ó‡´O âæBÊM‘â´^9J¿ÓA¹0~AÓdqjÍÑÍÇ=­6Ì~¦ÁB𝅽°˜¯Ý«ãëØ~Î]®ïköÇ×w)²? 2ŸsvyØ–ÙÖ–z-°Sª4›eÍÌÌØÅ,h±Ø^ÏzÖoêIOú9&ëÆ|ÎozÓÿÒòòrßã:tPO{Ú¯hRî}ï{ëe/ûÝóž÷h[óÍŸÕóŸÿÛ:wîüÀc˜éM¶+`ñ½ßûýÁü~[›Ç=îqxý zõ«ÿDo{Ûÿoà1ÞþöwN$`�������¸ø°�0ƒÚ+Ìã¦ý‹ûºjµªjÕj¼.i( =«ïgŠÒ‘9û'ûv\y9€Þ_Žl¸â’ø¹Ò4É(¶œøœ gO«xü.O•ß‚@a¨d’ÍŽGoWÓE§Î÷âäÃNë6ê{›Ÿ&$ˆ8ëÁŽ~ÌÇmJL°ÂÎöâ¸Z,›k#Ô a|?™:f¯-Êñµ{dÎ\D~÷ë{6ˆ·É¦ IBó3¡ WšBö‰ÂÖó…B¡okAŠéºæškô¤'ý´þú¯ßØs›w¼ãä™Ï|†4 ‹‹ úïÿýÕºä’K6<g-^ò’ë©OýµÇ9yò¤¶ƒùL_üâßëùÏ‹g>ó¿ê‹_ü¢n¹åó}sÛm·éüùó:xð ��������…+�ÒfÚ+|ß·Uø¦½ÂL bÌ 3mD¿AÞ¢i¡ꪅ@÷¿¬¡_U·Ëõñ}³n!ˆ6ÛLM:5ˆ·¼¤Ò×¾¢Òí_–»t^Žß´u ÝcQ×ÅÉM°Ñ¾´Cn»îGϯo?Bçú(ß`ѹäBa|æn[Îúm(7y¾uÌþL“E=pt÷ª£ÿ8îéSÇ<_vUi: B훹¾³–Ïsí7Fm…©V+ögÍüÌm¶q›óó?ÿ³ºâŠ+4®?ø;õýßÿHMÊþèt Wd¾íÛ où–ÿ¤A*•ª¶Ã/ÿò/ÚàP/ægâ—~é¿hs} a��������Ð �6­_{EòWöêñÀ¯Y*•5³Vžk‡½ž‰œ1Me/²ËbY[Îi6ä-_Páîc*ž¸K…3§â‘ÿ†¢ÀLk⦭¾b³M“nº˜æèˆŽ8ùéAÔµÁBN{8#¹q:¦(é/ßdÑX²/¤…RrÄ+C-ÎÄ׳û›,6{}›©@’ÅQ†vÊ ’4ØŸ-óœ¹íb¢ÅbºÊå²~ë·ž¡g=ë¹U©TÒsžó,MÒCú]·yÀ Ïþ }·1mD[Í|øÃn÷ßñíÚ·o^««k}·»ë®»�������À¨h°�0Uùp…™$ ƒ¤ÂqwüÀ®Ÿ§WYQ鮯ªüõ¯¨pá¬ÜFMNüœ-R{«Å0c »]çöëº7b ßpÑ~ÍÁˆ¶f‹lê¶F 7i´p²Û´ÙÂÉBÃ3Mø’9µæèæãž>/'VUM“% -I›…«( íÏ\£õ3×°34Sl½‡=컇 tzÊS~^W]u•&éÈ‘#·9xp¿v¢oþæo²•AÌÏÁýïýÀíNœ¸[��������ŒŠ �Cg`6›Ä òÖjfjº6Ó‚˜e'3S€¸ñ9ÎRéä]*ž>.·²*¾lJ`P>mPÓD¤Áéiç4]´ä)²òŽMÙúõSrF£P¾É¢irޫŲ¹v]± ø¾iCÙýM›e•BÁüÌjÆ×o­ZµÓ) j±èe¯¶[|èCï³m[é™Ï|Füºzû¹¹9=ùÉOÔ¤ÍÌ ( jÚ.GŽ\2ô¶—\28H’´)�������0,�lJ¯éAÌ­™²À,ͦ XÔ…‘Н5¼“¹õªŠ§ŽªtüÎÞ-wmEŽ WäônªèÕlÑ}Ñ€eðöêz^ƒ ßp¡Žw•k°Ógº7m­pm«…%­ã”(˜&‹zàèîUGÿqÌÓ§ŽtlÙÕši²…”ç¹*½øg-P­^³-ÙÏaþg3V‹é;|øÐHÛ'!42°y‹‹Ã7k,..ܦZ­ �������€Q°�0fÐÖLM`Âf _޵þ¢~ÇŠ¢f]îê’Š§ŽÙ…ßwãuö9§#”Ð=ã°Q¯í†ÝÔãN}ÿÎIJ’¦[È"þÔd&UñÃx –ù4M“E(­Öݵäè+g]}9^î¼àj9^× 5Öq÷š¬­Â\¨¦=¦^¯Ùæó³HbûüÕ_ýÍ(›kyyEúЇ…uµZm¢Û`�������Œƒ€€z ÌöûKølzfÓ,Íô¹ÿ+Ç šr++*\8­âé£*œ»[N#¬3‘Öv}›&z5[ôxÍ˨û Þ~PsFûö½´¿[µîgá ÓZ¶,L¸Bñi3ãü&DÑ ^stóqOŸ‰—+®ªÍ¤²ÓzdA  þô›ýYìüùÌög£»ãޝëÍo~‹FõªWý1- 9KK†Þvyyià633³�������`Tüù€©0S˜¿šo4öÖõÌ_Ö3qEÇqÌ€zè¨î;ªÆK<Vl=i¶©/E7’;ú¡;$sWØ©AÎTéÌQ–ÎÈ«®*2SP¤ÇÏ&Lj¢ÖŠ ‡éº~„ÓØÒãNÌúä(Ém6mˆkŸ2í ?ŠÙ©bLVÅ„0FeŽo‚«øZX6‡vµPŽìú+BíïÇ—Ú®‡­1­ëÛ?[S“ý –Êeû3iÛ-°¥^ñŠWÚÙ¨î¾û”^ÿú¿Òý¯O¤[oýòÐÛ~å+_¸Í¡C�������À¨X�˜ ó—ïahþr> Xxñ¨÷8Sƒ˜Á畺«ÓWG— v:c1H¿zÑב¹0`Uö6ù—öñù:æ<×–4sü6•N|͆+’!ý\˜"´è\¢žý—¨G“Ĥ÷[ß¾}´¾WÆ OtãvíýJ§ 1M~<¸_kHõz|”•Œ²0L0Á„¢Oó´TsôíWÅÿP;j¾ÉÝ%9‚i]ß&H‘…œšñÏ ùY¤bë½ãÿªÏ|æfëïÿþmúÁ|Œ®»îZ]ìNŸ>£Ûoÿšî}ï{õÝîÌ™3úÚ×¾¦A®¾ú*�������0*¦0–AÓƒ$·²S˜!x3à댰0ƒèvðy© ;ãåë’ÅÜ7Òæ9³Íf9~SÞÚ.ܭ¹*,×ÕstîÐñ¸}váÖcœãsìÍî?Óºu҆ߌìb*(\hI—q˜ÝL+ÆjÝÑ]KŽn;ëêËg\ÝyÁÕR=i‚wAž`Z×·™&$ YøM¿5-Ë8Ó„`<KKKúÓ?ý³¾Û<þñÿYû÷/ö|ÞdLßMâMoú_·ùû¿ÿ ãºë®��������£"` ¯hìð(ý úÐN a,Æh+0Ó&˜æ;í_÷ǃÍcs߬3ÏU'°pëÏÜ¥Òé;åU–ã‘Íf2ŠŸk­è¼Ô01j#E¯ý§½ß¸ç9h¿ì3*˜€MüYF¾YB9fª »ä‚b#¾N­9úÌqOÿqÌÓñeWkMÇ0vºi]ߦ-&™$’ægq3?ËÝŸþéŸëÂ…¥žÏ—J%=å)?§ŸþéŸêwÝrËçõÏÿü/‚ôîw¿GýèÇz>Ûm_Õ?üÃ?jùù9Ýï~÷Õv¨Õj�������ì^L`jìÀl:6ëŽ9„i"0Ó&˜) ê)?HŽS âÁúxÝr9i+ÿ$ãÿÀ·¡ŠÒ¹ã*ž?!·¾&ÇN©;çÎEkÿM¬ÏÏÖѹýfŽ;ÌzMö¸§ÉB’% ¬pL{…Yiâ}Ù<!nº¯ãhÔ¡|³}|H­Å×ÈQ?9ØB99Ê•‹¡öÇ÷=WÉkî@Ó¼¾M‹…ùÌÏ!!‰uð/kº¢NO~ò“zNÝñÙÏ~ÎNÒÏã÷X]zé¥ú‰Ÿø1½å-oÕÒÒrÏmÿüÏ_«‡?ü{tèÐ!]ÌLPèyÏ{~ó7C?ôCKCD‰}ìßíw[­Vçaûî‰\ …âÀm–—WôÕ¯Þ®k¯½·��������» �›ÖkÚÛb%5f°×qvÞ(· WTWTX9cÃ…åÓëSƒdá49NÛzå .Ú—îш Û¹ß8­íë’ÏÁ4T$‹À6V˜ÅLãÄ—…ã†rL  tÍÿµDc\'Y“Åé5éæžVŽ=‡âPsÅø<<]T²Ÿ5[ÂâD~.ןväÏå4ýÛ¿½W“ðèG?ªkÀÂL‹ôò—÷ŸÖ£P(ègöÉöþÜÜœžüä'êÏþìµ=·7ƒòfº‘ßýÝêb×h4ìçû†7ü•îsŸëT.—uûíwèÎ;ïú&œ1 ‹‹ Cm÷´§ýš¾ïû¾OP¥RÕ™3§õ¢ýÎTB�������€É"``d£ü5|6À;î n1_,GÚ?i©nþÊ?yí/ÒâLÒPPÜÄà¹Û¬ÙPEñÂIÖÎÉkTd3!=¦™vÄÔ›+¼^‰*¢ö0‡]­,d§ñãQÑPnÞf³04sXÄ·é!MÚB®BÛlá$ûŒx½dM&XÑ´³2¸Z(%'{ÅBh¯ŸØd1Íë;¢ÖŸ˜´7¿ù-úÚ×¾Öw›üÁÐå—_Özüc?ö£zË[þ^çÎï¹Ï;ßùnÛzñíßþ@A:sæ¬]Fõ­ßz}Çw|»¦Á„e>¤³gÏõÝδ•üã?þï¶u¿ökO³&�������€?•0UÉôÛl!ÒÕ‹¾®Ùïǃ͡ÊñÀs9|¾G¼Þ<7W÷"¹ŠJçî´‹¹ß6ÑÅP!‹ný›-4f³Ä8ûlf¿±–øËvómA¨f5YÔL¦ Iš,B¹Q¼˜ÇQòØKÛÏjÌ‹Æ4YÔG§V}ú¸§Oót|ÙU¥é(µãL÷úN0;ÈÖ9qâ„þú¯ßØw›b±¨_ø…Ÿm[7;;«Ÿû¹ŸÑ ¯xÅ©ÙlêbtÍ5×h~~N›a¦yæ3CÓô }§ÆqòäÝ�������ì|,�LE4¡QÝr<¸|d.Ô5ñ@ó=âAè{fËb¯ tÉ\ ÒÐNÈmTåU.¨¸tÒNÒšÄn»u´!\a[9òaŒ,7Ñ&ipHF¸£¶íœÎí»îß¾ÞÑhÛÛ}ò¯ÕçõZo±í|sçeÍIˆ¢uÜt'Ê…+LP"ÄñC5kšÕ@òM€"²!Šä6™BÄ>Žò³ãþ½š]Lbµîèè’£ÛκúJ¼ÜyÁÕr¼®&!ŒbZ×w7I‹©{å+_¥Z­Öw›ýÑÑW\±aýüÈtÕUWõÝ×Lƒñ·û¿t1ºêª+ôó?ÿ³ÚŒ§>õ—õßx?MÓÿøi,�������`w ` §Qd§1€[t#-”C]µèþ—5ôà«êv¹>¾oÖ-˜)Ü1~ÃN R\9¥B弼ƚ ]$O¦7!ŠÜúõU½"‰·CliEŸ†Šþ“÷íÆï¿h‚iƒE£*òô¹"²íI›E®Ñ" ]¤íã†, ¢hŽN¯9ºù¸gÛ,N¬8ªš&‹”3˜Öõ=ÈNøÙÞkÞ÷¾è£ý÷¾Û,..è)Où¹®Ï™f‹§?ý©äo|“Ž=ª‹Ñ“žôD}çwŽ7½‡Ù÷ÉO~’¦í›¿ù›ô„'<^£:yò¤��������; �›2xàus³®£dÊ„xú²ù@W/&‹¹¿N©à:cׯ©¸r·m¯pë«r‚F|ªaÿiArËzè!×ä_ú4FŒÕD‘í×ë¸Y3F¶m«a¢cÃŽ†Š¬yb}}çñò­цǦ±Âm5X„­… L‚@^3PÔ6âõùÆŠV˜"jVäÛ&Œ1›,âÅ)VŽŽ.gMžîZr´RwL™ÆŽ˜:cZ×w»þo”ðÄæU*½æ52p»§<å絸¸Øóùo¼A×_ÿ-ý¡F£a›2.F®ëê¯x™ö°‡½™~å/xž~ýן¦­òìgÿ¦~ø‡h¤}h°�������€Ý€€‹ 4ª*^8¦âÒ1¹Íj²~ÈpEgÐbÔf‰ÑD1lCÅÐÛ‡ëÓƒ( Kü@…f`[,žH/J+’Û4HѶ>]6²0L“E=ptjÕ±-ÿqlg6Y`w{ík_¯S§N÷ÝæÊ+¯´Óƒ ò¿ñë·ùøÇ?©÷¼ç&]Œæææô‡ør½ð…/ÐÕW_Ýs»ýûõ?ñãú‡x«~臧­d‚ Ïþsõ'òj}×w=Ø>ääÉ�������ì|Ãþ]¬3äsηŽú[º¹ÛlñÒu^Çbž3 ê6Í ÀDõúËöüú^÷ëõºVWWuúô);¥ÆþÅífÓVQ:{‡öÝþ1•ÏÜ!§^“Óô…ñ¯™@­[…j{loÓuæ6Šî£h=^:]–ŽõQõëúng×;íÇåõÛÖ9Ý÷W¶½Ó¶.rrë•_ï´Ö›ÏÃñã_ÒÕ@õµPç—"UêñGæ:Ébö±·æ±«ÀqÚ‡NûvæùÈ®7_ £qr^üO‹r!Ò5û#=ðÊ@÷½$Ðå ¦9"’çØÃîIKË+ö=räRíÛ·Oår¹õœ“{Ó½îç9{õC®vûí_Ó¿ø%?NaéÀýºîºëtßûÞG…BA;ÁÚÚš¾ô¥[íÔ.柋õzüÏ RÑþ<<xH÷¼ç=ìR*•�������{UüïEM=±i[Öúˆ[~‰´>B—-Qî¶sQÇýn;ïw8 µ3þÍ3€]c˜évò”&\Q¨žS±rF^}Y®_]Ÿ$k¥p’¹6LX`Ãz¥ë¥õ¨X~* µW ÞNã×4N8£žç¡õ¦ g};ûžüzÙæ ;ӈɡø¡ê«~¼„ŠšŽ<³}è&¯ç˜xˆù@MF.´éû×µMÉ­9`ü_&UaÂñz3W†}¥1B¶ÉÂwt÷ªô™ãžVëŽxU Rü3ÅH…‹$;ÙïËÙô6ÀNqï{ßË.;Ùüü¼¾ýÛh�������ÀîFÀÀEÅ ê*¬Qaõ”¼æZ<ï'1ƒaúw²Û|è" “DE?Qû~ifc=àtl—®Ë‚ IH%JvLƒùžcC ¹ã:í¯Ý I8íSyDYH¢5µ‡“/òûE¹€Eëq°Hß»k’‘l‹…”'Üødüf¨z5P³?Äëì65ÑzïQÇc¶0Uúar¥OgÍÓaÖ´?bÈœº™Ä+î2ÙÇøÀ åä—/„{¾É���������›GÀÀEÅõk*®žŒ—»åÄ÷•›´¨WCEÛún Ñ`1|s…†Ü®Çs¹F‰‘öÔÖP±á8=,²[3QH¹rãÇ…0Þ¦Jõx]# qxÎzC…i¢Èš)’ÆŠø¹ÈI.ÂÍNº>ÝÏL#’~1#7Yi“ÅÉUé?Ž{Z®;úö«"=i¶pñ4Y���������`t,�LÍ$¦ 1S;4ãAu3(^—f¬ÏÄËñRt#;ö>àdâAü@n³¢Bå¬&Ä Ýý–LÛëEIB{ÃD{EÖH±¡aB§éz<µ7\´)œ¬£ó|rÛdMmjk¨èl°pÓíCÛR!‚p¢pý6k°9µxßJ¼®/~¼¯ Däš(º5S$/”Y:š-ÒÇöY»_´ÞdaÎn„P„yK~ÚdÑL›,g’s¿|A[Þd1±ë{€<m��������ÀnAÀÀDLk�× >¯Ô]®¸:º\°†¿zÑב¹P åPe¯ÿëÛp…_“×XU¡¶ß®ØéAFXt4^D6øDú7L¨O“Ä8 ÒP›.†k°P”…7$7 Z¸Ž«0Jn£øÖ4|DÍø;[âÅ,"™¯Å¶T˜=;›)ZiÈ 76[¤m*Ã6\˜Ý“ã…æõô G dM§V¥OóâkÌÑ·_¨äI3[Ød1©ë{‘ýN©ì������0¾zÚ·Ëg};èÔJ skaüïk"Õš‘šA$þ†XgþÕbÑs4StâŸéèм«K<]uÐÓ7.èÚ#É�{ ¿Ù�ìhfÜ>/tg<�½TK„÷ÏdÿkÆÅ£Á‹°)¯±¬Bí‚ÜæšÜ Ñ>½„Óç¶Ï’´Sä“5H´7Lôj¸HþGY´^™u„%œîdzSjäNec#E{3Fr®Ñ†¦‹Ö>ŽÚ»¦5"2¹7Ý?´/íÚÉ@ÂõÛ4dá˜íL¢ª¹æ+X‹ã›0†Óú,74SÈPQ[ÈBíÍöù¬Æ£K³…ë¦ã5Y¬Ø&‹$¸aB Y“ÅÂ5YLêú�����Àhn=éëwÔõ™»šºåxS•z(�Ã3ÿ޵ÿKV³,W¥£L=o³m›Ù’£û_UÒ·]SÒƒ¾¡¤û]ΰ$€Ýßd�v43m‚ùËþ;í_÷»ª§S(˜¿ô7ëŒC³a<8Þÿ8NÐP¡rF…ê¹a=k#üwZSS´OÏá¤óqD­ù9´¾}çú( (hpEÿÆ ×Hѹ®³bÃöpœö×Í7^˜É9ÂìøicE+d‘>vÃPÅÀ‘ÿÑF5TPOZ&<sd3¿E[3…›äDL"m¶pÌô"Y³Eú8ßlaš,œnÍáø! Ã4YÔâkì䪫ÿ8æh¹êÛ¯ TôÂ-i²˜Ôõ �����€ÁL¨â¦/UõÁ/×ÓÁ`�ÓTmDúø×êvy퇤«xzÄ}Ëzä7ζ�°kñÛ ÀØ¢-èÄkÉ`³ùË~3ø¤#è5Sɯ[.;v›AÜ ®Bí¬]°ÐÐSX-’ðùLÚCYM†ÓÑ ©³‘"k’pr͹—wrÛ˜½{î×¥#ŠÒÓX즯æš)’ÇÉóö=ÙíÂ$ãà$Ót„ém¾Á¼¦ëÇûUâe5ÞÚ|Q~rN®ëÚÙ=’fŠh½¡ÂœA¾‰¢³™"‰u h¶»„,rA™!ä›,ö:rµ˜¶G\¾N½ÉbR×÷f1]�����ØËÞqKMoÿ\EŸ;Ö€íc‚MoþDÅ.÷¿ª¨ÇÝN½~F�°›°�pQ° µsvqÂFßPE׆ õo´°ë"õiœH§Ñ¶‘¢óù\£Dÿý:0¢4T¡Ü ù¦‹Îæ –pr­ýBÛ,áf! ®ˆ\±F$ÿ\ æR ¨™Ò ÛLaÓN2‡ã$­ë¡§w3…Ie„=š-œôƒÏ7b¤û‡É#…, Óda¦ë¸{Uúô1Ï.x¥¶¬É������“÷ÖOVô¶OUt÷ mÀNcOŸ;¶¤ÿù‘UýÄwÌé§¾sN�°°�°£=i±iÿL¤¥ºù+ÿdÐÆ‹´8jüœÙ¦7mƒ…×X–×\‰ãýöFŠìvÔF‹|Èb½#¢=hÑjè˜~$R+ôÐj¤ˆ’#´š&r Y` ßb±¾_¾±"ÙF¯ï¦g×j¨è±½ë„IÑDÖX¡,ÔàÚϱu«4dÚ<VC5V|k¡œ@v¯õfŠö†ŠÁÍYíGº"Íi´š-œõï¶ëþÙ³c6YØÆˆø}šëÎâò}I“…;…&‹Í_ß������èôO7Wõ·[#XìæçôOß¿bÃP?û]ózüf�; �;Úl!ÒÕ‹~2h¾T°ƒÐ†|¾G¼þêÅ@s…ÞS•˜0€i¬pƒª<¿"ׯÅk“ÿa•54t6RlfÉöøm ½š'òÛ­·\¨gÓ…Ú× ÑH‘o¢´}Ö”‘5V8J§‰’é@²Û(¾L£EªXl°¢Q l“…ù8=å›)’[›P0鈞ÍI Ä$6Úš-ì±Ì'µ>ˆ=ïô¹õ¦ŒìKpÍK$S†8ŽF™ÈÆäj¦ÉbEúÌqO« G¼*R)þ§eÙK¦ ™¤Í^ß������Xwó]M½îC+LìB&hñÊ[Ö»¿PÕ¯<|A¸¦(�؉X�ØÑÊñàò‘93TîÛ0Âr:�mþ²ß >_2ăß} £@® V¬É jñÀ|3‰5 ÙL1j“EÖ^E¹ªŠ\E[ó„]ï$»f§”íŸo²Èí›qä*4 Á"9Õüãо^ÒTa:%’ÇíMQZ‘´7„Qv›„/Ì~n#>Ör¼,ÅûÔM{…ÙÆI›%Ú&lñ…}öF ¹‘MCDÙzic3…yGNîxùFŒÎ㥒V›Å!‹¬ÉÂ\gÍtš“Å té>i¡4Ù&‹M_ß������°þü+zó'*°»™€ÔÓßrNOzМžvÂ�`§!``G+ƃï åP%/Ò¡Ù0™¾AÉÔ æ/ûÍà³Ù¦'l&Sƒ4–l¸ÂÒù9:›+&±ÞÉ…,ò +64YdËz‹EÒ(ÑÞ€‘5Ll¾ÁBÇ79‡$h‘4U˜ A”̺¥·vúÇ>oŽã…‘¢Z¤æ9_Í ññÇëÙ×wÓÐHÚ0áfÍN{3…½5g’¶[ÈMGœŽf 7û2åäš1’´GrüüñÓ€‘6e„îúµ0Ê”!¦É¢ÚttbEúcžVêÒ¯ TÚ?Ù&‹Í^ß������»[Oúzå¿-é‹ñ-€½Ã¦>}gCÏ~Ô~Ýïr†3ìüF°£™1t3 m–ŲF愾¼æJ¼¬Êüñ›)†^Ò„²@CÒP±^hÑ °­ mjµX$¹ „ÝÞ%×jáä‚ÙþmôÐ!yM7}½0=?¥ÏÛi@²é@ìvaZ@‘_ŸÎòaŽí‡òjñq–ãg—}…•¤Õ¶Wt4JØWËš(ú5[¸¡ E¬7SDÙ—Øv<)·_—ã­7^$„NëćY´š,jNzð´PNš?&Ùd±Ùë�����àböŽ[jzÙ»–ñ÷)Àžd‚SÿåMgõß³_½~F�°°�°§%‹5yþªœÈ·„i4Wdë#Û±kŒèX$µ·Xtm Xall¸P×õêõ|G£E[c…‰>dÏgÓ~t4e¬¯åF6¢a§/qê¡¢3ñr>^S å…éy; i“„mæH›-’ÀD®¡"k¶0ïÙMSö&ìh¼pZÍY³E¾)#9~·f‹xmü8tÝ‘BFÖdqrEúôqO«uGß6…& ������Œæ/?¼ª7~lM�ö6 zé;—t삯_þž}€íFÀÀžfBn`kñàû ›\ZŽ$Ó„r ÉsëAˆ¬"ŠÒ„ã´Š0Ú‚­ãdÍíÇÍ7QØÎˆôy;ó†m¬ˆº7V8Iè ´ÍICC‚H¦ëhÝ*™kÃâ1Z‹÷^ò.Gvj7LÝš)²Š´¡"kóh­—Ö÷3§³ñ¢{3ņf‹ôq¤.û¥Ma:‡ËÈMõøê¹:¦Ñd�����€á½ü]Ëú?Ÿ« ÀÅêÎÅÿ^úyY�l'�ö4' äù¹Aņ-† IlºÑ" Hd!‹ Žº7\d÷“ uì× XDQÛqÕÑTÑzŽ×_ß.=~vºp"e…0JÂÙmßš÷çøŽ kñó+¡êk¾ÂZ˜6T$Ñ…]š)²F‹,d¡Üú(m©È7Z8YãE²¾­£­™"×l‘®·©Žôx­F ' q8É1Âôs©É"ÞµÒtt|Ùµ¡ ¸x i²ˆÿùr& �����€­ò»ÿ²¤÷~©&�¬ª6"ýÞï�l�ö¶(Ôâq}ó?ºÂ‰´T ÒHþOR®m¢ÕX‘œŽ†ŠõÆŠ¤Å"ÊB=,ÜôùõŠlÿ¤©"i ˆl_…¦Õ:NÚh‘…)rÍù…“NÛáÔãc/Åw.Šª¾’R¨*±iS…•6GØ,G˜kœÈ5Vd ‘“N–ÙÙL¡\#Fîx QØÙh‘~úÇsC%ŸÈð! ó’a -×5ƒä½-–’ Êeû¤}4Y������Lá �Ùï�B�¶  �{ZÒP—FÚf #…(z4Zض‡| bC[E6ÞßÙl‘=V’HCjÛo½Á¢}û.[Û©õ:íMisE¦0áŠhcȉ7ô‚økgëj^ð5Í{\OØ÷mÎ-ô䏿sO¦ÔHNŸfŠ,$¶5^Øf sü0ßl‘}.N[SÆÆf ¥Aüúäxæ¼B7ùF YAüöªñû>±âê3Ç¥Õ†£^¨ìIE& �����€i1Ó‚®�`˜ß³%‡éB�l �v4�hƃäußQÕ7íÉúb< =[ˆìô E7ièq„xœ½a¦Í"%U›i©p×Õm½ 2$!‹´HÁɵX´*r-],r é6n”¼hØÚ>LCnÛþöóˆÌvi“Eú:nü8)€èÞTÑZŸ{ÞΉь³(¸ÐT°\WXMÏÝñ6|âvŽÐk5Y´2š)r͹&жf õn¶h5Sd/ÚÑlõ8^¾ÙÂu“…ùÀ# f›,Ò)B‚09—Å™ä{82?z“Åæ¯o�����€½ï/?¼j§�€ŒùphÞÕ/Ï>ÀV"``G3ƒÏ+uW§+®Ž.ìÀ¶±XŽtõ¢¯#s¡Ê¡Ê^÷áqÛ`5“€…mAˆlƒ‚Ò–‰a)º­ªÑ"Ê'Ôš¤½qB},ò£ÖTíÛwß¿õzYCEÇz̈’dž(:nÓ& ¥­Q-PãdUþ¹¦ÂZÔʨ´&ænðH»&dá$ íÍn’q»7[¬7Sto¶hk¬ˆÖ›264[t4etk¶ÓãÙOrÈ…Ä»­5_Næºü¶+•öG*Åo{Ø&‹Í^ß������{Ý;n©é[�t2¿®:PÐc¯Ÿ�l�v4ó—ývðy© ;ãè¥Z2�½&pöãí¨Ï�td›+­€Â4›+:×'Ót(¸ÏµX8Yð"ĉ֧þh{>{œ4U(êl¼PÚL‘l¦6´Ðj¦ˆl…¦ë“F‹Üm¶>½5çd›#šñºZ|ÔóÍx©)\ñÓsȪ:¤~©×VT¤Û¶š$Ò Jz4[´+Ô½Ù¢­™Âî×£Ù¢rȽnf‹0ûþFi²¤¥º£æ…dgŠ0ßÛ¥ó‘æËi“Å€ãlþú�����Ø»n=éëeïZ�ôb~G\w¤ û]Î'€­Áo�;š™6Áüeÿö¯û]ÕÓ)Ì_ú›uÆ¡Ù0Üî}Œ$H´WlFŒÑ\ѹ¾ßvÉ4!Qº*×HÑöX­f‹îÏGIƒ:-r J'YÈN÷á¤Ó{´7]tL ’MÒ±>;¯°æË?Q³ÍQÅO>FE럥•Mᑜ_çz×Uä(²°ƒÓÑL‘k¬ˆœ´™¢K³E×fŠŽf »Þi;ΆýÓæŒl¿ÐÍB#£5YTL“ÅJ|¬ãÒjÃÑ·]¨T0Ó|D›,&q}�����ìU¯ü·%EüÝ €>Ìïó»â ?{X�°X�ØÑšA2Ølþ²ß >iíA-ˆÅë–ˎݦ·¨µØl…“®K§ Qç´#6T Zo‚IÈ"Í8Q{à‰ZÉã0Ù¶õ8Û>ÙFiÓ…m¤ˆìDmûÙ°„’öÛh‘®Ïš*ÚÂQ®èXo?)?þPÍnš+ÎU.5ã? ,ô®¬è½Þ•×z½(ìÕL‘[o?¼AÍQïf‹¶ãDÝ÷O§­¥h5Y˜OuPý„Ö›,–ãk10A'iŸðâc™—æKýÿ Àæ¯o�����€½éÏ?°¢/žô�ƒ˜ßæwÆÓnX�L �{^ä$‹üŽl‹C®pҟͽ–®ÛEYÓ„ZMíÍQÇóцfŠ$’®wÖ[/òû©ó8&ƒàD=›*ìúh=d¥a”°È?U—®¡pµ)5“IkjôsÍ¿n–¯èµÞ =øðœÍù扶f‹Îf 7 ¡˜ûÝš-²ãÛí•Tht6[¤m*Ã6\(†Å±Ó¨„É<+C…, ?>ÌZÃщeWŸó¤FàèW������Øè滚zó'*€a™ß½vF¸¦(�˜&W�°ƒãÁêÅrd[ÊÉs#»Ìxf]¨ýñsf›žlÈÁKá[ÍùçµÞ8ájc`bBëó¡ ÛH‘-=»ébƒ& a‡íÛ+Y×¾>L1Òé@²ÛtW·Qûë¹~ g­¡èBMáÙŠÂ UEµ†úr =~î6=¿a×gïà £.Kú>Ãô\6<έïÜoÜã…=Ž×úN4ÓdÑd›(¾~ÞGñG§ºŸ<7µë�����`z݇V�£âw€­@ƒ€m¶éêE?)AX*h©ž¤#ãÁç{Äë¯^ 4Wè=‚m£nÁ.ŠšI«Bçtc6Wt®ïº›Ÿ&dø µÂ£Ö{hk²0ÛT‘7´M­Ût£µzköË&Q1ÍÁÙº‚sñ²ÜPXOÛl3„Ö?;ûᦟ»“¼Áë³[7™Â¤5MHh[Eœ°G³…“6L˜í5[d¦z"ìÞlÑöº¹ãµ5[¤ÓŒ$³Œ ßdÑLCg*ŽÎÆË‘yG å$<ÑÍf¯o�����€½æŸn®êsÇš€Q™ßæwÈã0+�˜�v´r<¸|dÎ sûv}9€6ÙoŸ/™ Tê7�®GnQ‘W² Rø;]CmMF4æúüã\È"yå48aSY£D2”o¦§H‚i ÂQÛc×$¢l;›h­7M ®’PAë8­ýÃ4ç† ²ýÓð…üøü¾Âå¦Ó\±ÔPT ÍÇžìã¤o( Y´‰FZoÞ“=×(9vúÖ•¦#ZŒ(«ÈÖ§›gá‡([¼ñöõ]Ž—=ŽÚBëûe£Öã|ÈB­ï¯Ÿ >• þÌVê&dáê\5 W”{\£›¾¾�����ö˜¿ýØš�`\æw �ÓDÀÀŽVŒGáÊ¡J^¤C³¡m°ë=Ù¿ì7ƒÏE·Oƒ…{%»8AÝŽ±· ¦Ù\ѹ>Í1´Z*ÔÞ`!©½¡¢GƒE«Ã6V˜L@gó…iƒÈBQ’=Èß*´!ŒÐLÓḶµÂü'h NWœ¯+Xj(¬IùCdÓ!ÉÉgs«É¢c}&]ßúœó룤)ÞkZB‘5G¬7Sti˜ˆÖ›464[8aÒxÑ E8½›)ìqÚ›2ZÍÙÑÖˆ‘ì&[ ²0j¾£SkŽ.‰—Csñ5Üc»Í^ßÀ^sn-Їnkè–cMY íåáyW×_UÔï+éÐ<sæ����À^öÖOVt÷J �—ùb~—üÔwÎ �¦€€Í À—ãÁg³,–5:ÇSèÍÚÅsÖÒdCnÀº#1ÑæŠ.MÉ(}döÝø6trSw¤Áƒ|ã„k§ùH‚Iñ†›†+Lc…ÛÑ|‘k´°{$ûga {›>cÃæ¸A °ÞPh¦9»fÃQ-°Í¶µ"›æcÃçª.CpÔ:žùèÍÝ0r’æVE—† Ó<ÑÑD±¡ñb`3EG#Fö}8ÇWÔ}ÿìÙ!Bøó;»–LÒð{o·éëØCnúR]ÿüÙªAû/—c»¼ïÖºÿ­³ºñ~ü°����À^õ¶OU�›e~—°�0-,�ìi‘SPX˜—9E®ù•¥MZoa³¹¢×ÒoÿÈÞ:ë!ƒž í IVÃ4Q¤Ï·+ÒýZÍisEkû°=da¶‹Òæ Ó€QmÊ?µªæùªü•†Âz¼gœp65Éúg©Ö9¯€Éqòç£l¿¶¦‹.ë““—º¶œÂmk¦èhžèÚL‘5^8ÉÉõl¦È¦ Û÷7ÿqÓL¦°_]úÜzSÆzsF˜Íhâ8}ó%@:Wut¾âÆ÷C—Fö¶µø÷Ím§}«Dºëœ¯ÞÞè»}Ãô¶ÿ¨èèy_×*èМ£ë.-j¾48ô����ØùÞqKö �a~—˜ß)½~F�0i,�ìi&Tâû^«íÀö'•}Ãi®È=¶ÙG¹ÖŠ0ÍdÓz„vŸ0}lÚ[¨àÚé@ZÏoh¬mðŠÖöa‹H‘(¬5,ÕœYQ°\SÔˆÒô@|L'WÃß³­"ê±Í¨ë×Ë$LØÂ!l’!}bc£E{ÃDfÇlo´›¼Ÿ([ßz¡ÜñÌi8Q[SF«£óxYP$k³è²ðCG+ui¹îذEv�ˆ.j¡þåsU}ìöøwP8òîI# câŸÇïºwI?tÿY-θ����ì^oÿí�&ÇüN!``X�ØÓ"§¨ ¸¨ °Ù׺×K$Ö †i®0ãwQ÷í‡Ýß„+Ì}ÛVÑj~ˆÒÆ ¥í7<ßj¤È­OÛ!’aÌHb vª(»lÃCXm¨qbIÍók ÖšRÄ’æ‡Vò!?=HnjÖúVXE}×GNÖÄѱ^ÙT!Éûs£ô)ÓDá&ç“5G8éû°kœ´a¢o³…=PÒn¡$Œâdï/×”‘œ@Öf‘kÄH›3òÇ3çä¤M¡›¿Æ6F'üxûJ<þ»/Í0Í„8„,�3ÕÇÿøÀªÎWÆHVta~Ö>|[CŸ?îë×nا«x����ì>·žôõ¹cMÀ¤˜ß)æwËý.g(Àdñ[Àž¹&`q@~ñ`|¿,åÃ|£‚3|C…«‘›+ÖOHi)B¤(tÚ§þÈfštú°Õv¦Áw=\%F[£…m¹H§ÇH.’àB¨ÐÔëòÏWäŸYR°\Udš#s.æÄ¼ö“í˜Î#¹õnµu}ëCY—”IÄg“µLdßSG£„e˜f‹¬£ÕLÑýxRn¿¶¦‹ÎÆ‹d›ÿp“¤NgÈœŠÉ¬Ô3­A<ß½öË“õþ/×õ÷é<­%ÏÑ »¨#û7|ý\ —½kÙÞÿÁo™ÑßVÓð´·œ·×Å÷\WÒ“4¯‹‘i®˜d¸"ÏÓûùYÐM����°ëÜô¥ª�`ÒÌï–û]¾ �˜$þ 4€=-rKò‹”*,ÌÚ)C’Áðh=La8цéAlSD¯õnÔóq¬èÜ¿Ûñòmv‰6>vóÏ™&†ÎíÒõv;skŸ ×÷3K*j6PQ¿ón5â%\^‰Gþ›Rèˤ,’éJÌmrß& òëÓç6¬W¶>Yì9æÖ·öm­ï|>·>ÝÞ5ï#>g/‘ö"s/ñû2·ö¹(}.Û&^ÌöÉ’Üoí—Ã|.n—ãÙÇQn¿0·_î¶uN¹ýÌcûUFÓ#QäØéj¾£ºïŒ5ÆÓ"ý¯¯ ;‹™dኌ9¶y ����ÀîóÁ/×�“Æï�Ó@ƒ€ÍüÅw3L¨«ñÒ ’õ¦ `¶©/E7Jf‚è"2 Þ\2Mˆ Z÷Ék®Åâl‹õ9C’ù:r·Üd¡wk´“'´"´ÓY¬7V$MfmR›a ì9‡i±ƒ›†)Ò½sÛ‡fƒxT? |õP~µ™4Wœ>¯pµn&åH÷ϵ8lª™¢WEE4üñr²¢Û>Ñ­™"k H*"§c}v0yl›'Ú/º7S´…nrÇ‹Ôe¿´9#LC;›,’k¶/å.ÿÄÝìõÞn½Û×G¾ÚÐî- Ûo-þô±Ûš6óOxÀœæJüÐ����Àna*ü^�“f~·0M€Iã7 €Í >¯Ô]®¸:º\Ðr=4[,GºzÑב¹P åPe¯×h½z» ½Y5gŽÈó/ÄãåÍxi´ÆÏ“yÓ.‘„+²Û¨cÚ¬}"[ßù¸ïv®}…õ Eº>²/•¦ ¢$<á:¹ …iwp\; EÒv‘M)¢d»lº,dÑzœlùš+55–*jž_•ßê¾Ù·çÕ ˜È¾Fz'·>ê±^ÁŠÜ´!mÇëµ^I€!ŠZÁ'¿>ý<¤$ÃàØ¹RlšÁNËa;®k›9Z! åÖ›ÏÍNÁ’ÛÏIÂ(æûµÿÉö7ésüôq²ÞlžÆ)Lª#=ž“'9®’�†›Ä\:Cæ{òãýü°{ždó×7º¹ê€§cñÿxúߟ©èú+ Ú?Ka×vûÊiKZ\ÌÏÚmñkÝÿª¢�����»Ã'îà/ÌLÏ'îh°�0QüF°£™¿ì·ƒÏKÝ@/Õ’èý3Ù€³¯R<øÜ�ÚIWÈõWå5.Èó×Öüí`¾Ó6½‡rO l²è÷Xý×;ÙK§á•°yŒ$:i£EÚX±¡©"ßXaC"&³)ô}ùõºüJCþREþ…Š‚ « M¸Â´V8i?D×&‰š(:Ô€1Üë›÷m>7mª°Òæ\ s͹Ɗìû:š(Ö¿÷\#Fîx QؽÙbCã…*J¿‡,da¶ ¢¤É"ùŠÛßÛd®otzü·Îê/>´ªJ#Ò[>YÕ¯>|^Ø^çÖ¶î>·Æ|<����°›|殦°}f\Ýô[W´­ûÍ·ÕG¾RÓÅî'¾c^ÏzôÖãKþóÿ8ٶ͵GŠzË/_Ú¶Îlc¶ÅÎð™»ú™‡Ì �&…€€ÍL›`þ²ÿNû×ý®êéÿ_jþÒ߬3͆Z,÷?NèÍ©1sµ¿®Rå˜ îùx¬;°MI„Ú[†m®p×÷k5UDCl—[ïDÉ€¼ RDéóvŠ$\‘4U¨Õ8‘KdÍa+,᤭a¼¿VSíô5.¬)¨4Ö›¦.! t¤ÇéïŒÒF §£¡¢ïz¥M¹Æ‰dûõóm­Ï>ÚŽõ-}ÖÛ :B/m•pÓY]²ï®W3E’Û/Ó€a¾£0ßlaÎ+lo¨èÑl‘LI’_ŸÏœWè&¡‹VÈ" W„=Æ–'u}£Ý9W7Ü·¬÷ÝZ×ÍGñÿˆ*êÛ®ÙüT!·ŸñõÁ¯4ôõ³M«Dš)8:<ïèñ±¿ûÚ’ö•ÇoÊ0í¯ýðªn9–üK¥yÀ¬õÍ3¶û챆>~{ÓžËj=T)>‡Kö¹úÖ«Jºñ~e͘Ã4{¼ÿË5[x¾É‹7?ïÿŸ®,ÚÏìàÜtÚ>Žž÷µUÅ ����ì·'`á=õ†EýÂw/´>þw%Où›ÓzùܱéO[ àâBÀÀŽÖ ’Áfó—ýfð9H瓨ñ�v¼n¹ìØm‰œ¢‚âùåKÕœ¹\ž¿ªBãB<0ž%±Ó6…,i‘NbÙÓ§{6S¸}Zßzéøý„Ék9mÓ…¤i˜"‰$­ I³E²]ôA ?þ0u_¥55N_¿\Q¯³9’|sE/#5Päß\·í'ûëöÌC/ 8¸­©E66Säš-rMmÍêÓl‘>޲íh¶ˆz/ßláºIÈ"ù(¢Ü¹µ›Ôõv ?Ò㮟Õ'îhÚÂ[?UÕ}/+j~@ø ?¾þî}ôöƆ×YŽ…|ílUïþ5=å¡óú–+GŸšÂ\bÿóÿ®µÂ»~fC¸Â¼Öë>²¦/tüK'¿éÎsA¼TõáÛêzÆ#tùb÷_6ïýR]ÿø™JÛ¦‰"˜¹(Íòþ[ëúéÍê»î5ÙpÂMñëv~vã0S½<õáóZ‹ßóŸpµç”#ÿ÷« ]u `'����€í«§}Uê4˜žjüï’Ìïšk0$ `2ømàâà˜aî‚‚â~Õ篵ÍNx«œ –NÏá¤öQÒnàD¶ÁÜæ›&òMC5\ ³].ÄáäZA Û¶š’17i¶Hû#L¸¢^©«¾´¦æ™ òW*Ét ~˜¼ŸVB"×ÑjíÈ*&"µMÛÑs½Ú×+w¼^ë‡x(]ït¼NÛz™|…—„ LsD[3…›*ìÑlÑj¦èÞl‘o¬°)а½ÙBNÖxÑޔѭÙ"Lgb¦!Às´Þ�‚©k‘æJŽžð€Y½éãkZª†úÇOWô³oª¿üðš>—†Ï»zø}ʺ|¿kÿÇÙWNùú÷¯5ìt$ú?ýûF Y˜Köoÿ½¢Oß•ýÍ36Òéï>Ym…+î{YA7ÄçpdÁÓZ=Ò-Ç6q!~Ÿ¯ýЊ~ûUpÛ/8�ùÿn®Úû&¨ð=וuCž‚0ù˜¾­¡ºéo?V±Í“hü0έúçÏVµYæÝüìCæô ‡ ö3›/¹Z®õþpÿ¿æ·]SœZ#����`2Ìÿ&€i#``’øm`G+Æcé‹åHûg"-ÕÍ_ù'ƒñ3^¤Å™PûãçÌ6ƒ%#Üaa^ÍÙ«âñ†¼æR|ëËó+úÿ³w€ÜUâÇß̨º{×Û{²i¤÷^ !ô Àíèí8ÊAèíà8ZÈ…vôrpÿ£wé½’B*Éf“-Ùînµ™ÿ¼ßH¶ª%Û’,ÛßL$ýf4#K3¿•æ÷æ=+“Ê[.WËC §âLùm“e¸(×^NPDrå;Æ3TxÙ2Z.D fJÆ_8ÎH*•’ä¨?8:<&É}C’Þ»OÜá„Kg³VXNÅ·e"›bûÔy;¶IQ‘}SÇ3Id3OTÊl‘ äò™- 2S˜ç>ß+É”‘·Ý ™-ÿ3 Ùž8v¶„K‘úíßÈ—Îfý8eÿˆ\÷pÂü€Ò '¬ÈÁ˧–a⺿'ǃ+_–ןÞ^¼pÒ†¨ VøâåC&àâû7ŽÈ‡ŸÑe<jñÛ†M€†ÒRLƒ7nÜ”0÷µ”Ç[Îì(Ø9xyHVv‡L0Éža ˜ÈÈAË&¾âmpåWwÙz6ú?$ßè???›‡Sœ²T.þó ZøŸ[FåÐaS~d¦®z(i^fê샣æ5©+HL\¡4ãÇ•&ä¹GÆ����к6í&À@ãÑ×�¨',�´´xÈ“Õ]é`hº?d¡•>¯õÛWwe¤-TûàgG$Yìµ§ýÁìaÑÑòèÈcâ¸ýÙýlÆ Éf¨5#E¥ eÚ+®Ï„7ñn0okIÏ2åA\ ®Èf¬Ðÿgü)áÏOŒJr÷nI K&‘wÌΤͺ‚@/›"»Ý¼Aþ\™€ C†——1"Û>‘J£B{ð¼\@ƒåUj—šÚ'2`Há«(óFöŽíÒDŠ\°ƒU”™b"c…Ù¸[˜ÙbòÌ…™-‚vËd±²ë)y~.s†¿œþ#ñ?‹°]>ƒE½÷oÜÜ>ïOÿpB»üÛïú5™‹üà¦ùÐÓ»¦8ðÇ{ƒì QÛ”�)Î ¡4«Â n“ïe³eÜ´)i‚%ªù·˜Ìê”ý"òâãÚÊ.·{Ø?þY.»/ºDVtÛ&+Eñküó}£’Îx[òÚÓÚË–JYÙí˜àŽïÞ0,þßpËæ”yM3•+{2«{œñ@‰­ýùéíµeĸÛß6����ÐÚ¶ì¥6ê\ð§w¬01s^ð•'ä±=i9ÿ°6yþ±írÀÒ°9…¶ÍÿÝ~¹â‡7 ™ó •ô¶Ûòü£Ûå„ ša3$]þº“é æ_OÊoï‘[²›ä\ò’ÅrÒ~±’u¶*"7½•¹÷–¤¼ú;;K–Ñçwh\ŽX‘ÅŽnHd߈+íHÉՎɯÿ:"£)ÎÁÍgô5�ê‰� �--ê./iÓ/ãi3X:€Ö+ûuð¹¯-ã!žB€…åˆçÄ%Y$‰¶uf`_ƒ-š!5,öx&‹ì€ñ`êd™**e©˜Âwóñê®—9J—è”öêÓþkM§Ò’̸’ÐihDRƒ{MIÏAögANvM^¶ÜEµ×0­Ì^…çy•×7ÕöÜú*´Ûâøƒé®Éhṕ2Säµ›mUËLáUÎlQ°¯üó³uÜX8ÁTf\¾îû7JiÐÁÓɯï“]C®üòÎQ¹à˜¶šžû˜ÿÃK³?¨Ó6FL€B%'푟Þ1*C Wn~´z€…¾ŽËî N¿."ÿxb»TZ{OÜ?Dnz4!§Vx-ûõ•~­ó»¹ý± BÿØuá‚“!ÅŽ÷çÿÏ-–Éþð·­õ °Ðà™û}Ù«4°Å¿Õ ‘o];\sFŒ]3Ü6���� ñv 2è9…üÓ o?§[^zbGAûÿÜĆÓ:åüÃÛä-ÿ½Ë?·Rš5@ƒ2Þûôž’sšÅµ=’5‹BòÌ#ÚäŠûGåÿØ;£À ¦øÄs{ýs"¥çiúüy:iðÅ«N픋þo îÀüD_ ž°�ÐÒ¶'Q× ödQÜ•Tö{~áÖ+ûuðY—™*׉›R!šÑ³ÒqÚ$:ôˆ?6¾//³‚þÇ RL’‘b<à"|Qœá";²^öye2ZècÏÜfƒ+[Òþ4êo#‘“äÐ^IŒH&™ ²V¤’bÙ™à58š_"—±BS]xA@ÀxE~Žì}Ï+m÷¤4sÄxôÇtÚ+l§L»gåÞöÂõUj·]G\Ëõÿô ™)ò3Od¶(ÎLa¥Yô~¹Ìã™)ìl …[šÙ"÷ØÓŒ¶èïD-÷¡ûi¹�‹Fíß(¤·mN™ì¹?!Çù?ª×/®^{e뾉“�ù%7ÊÑÏ÷€¥!¹ý±¤ÙÎdþð·1ùíÝAÉ-YòÊ“ÛËf¥ÈéŒÙþkŽ˜ÀÍ{2ò¡_ ȱkÃò¤aÙ¯Ï1Ù5*ÑŒô¡ôÄÅΡɃb¡ Àâ‰&þèÔ÷îmOîEíŽ|õª¡‚÷㲪'ø¬~þ×Qy|_í¯«ö<%����€Ù²‡àø9I(Šƒ+ò­èväcÏí•W{gÁ¥SÇ­ÊGžÓ[Óoö³ŠË‡ž%rÑO÷ÈtÄüó —¾t±ì¿¤z¹X ´øâKúäe_ß![öQJb>¢¯POX�hi:ðõŸuꪞq¿fž–L(lr ˜ÇúU?= ®›'“;“1ãçæË¾ŽºÛ¹ŒVùL“e°¨eþøëÒàÛ\užñí3nJÒnB’~ƒ °HŒHjlŸdFGÄKúƒø©l îçgdÐÿ\CI¶ˆ2øf¯ô˜QfŠÊ™(¦·¾ šÉB ¨hù‰Ì¹+e¶È=ÎËX1Yf‹¢õ•Íla†x&6Ãñw ˜c™ò !KÊ 7jÿF!-™ñ'¶ÉüiÐ|Üß¿qXÞ÷´.ÿ3šüyûF'v¶EmÕ2zÛ‚y4é™ …r¥Hr%Ar4˜Æ®¡oøÿõë!yËæ¤ ޹rÅ 3©å]¶¶2,§mŒ™ûùúóÒqþéÞ„™j18VŸÀžÅí¶bbò =á¡©DõóxûÙrñŸƒ ‹ÃW…åŒl&{¶¥äÏ÷ÕöÚó· ����hmuúý‰æzå)æœÃÏn–­þï~Í\ñ‚cÚ Î…º2"G­Êí›'~Ï¿úÔ΂à -)òéßí“»·&Í…!O;¬MÞxV×ø…Jg7§Ü·=%_6 ]±Ayƒ?ÿ˜µ…'Ò^÷½ ,ÈPbbºðøŽ‚àŠTÆ“Ü0$×ÿ}LÆüsªG¬‰Ê›üuµeK©êíËOéOývŸ`þHÐ×�¨,�,hž“Tt™?èš–Lz„­”„û$œ‘pÚÛÿâm2AHöÖÖÒe2PèÀºgUÌH‘?¿Ræ ]·ëÌ'Ã!IZ:@›–”T H:1&d8“ʈ—ÔÚL`!dîf§xÖ›M£ŸûÑbJexÙ8ñ� //3DnÁÉÚ³ ZZ¥¸=ÁQ¾=»oây^Þò^þ Í~ÙÍn§z{îÖ~|;¸þ¢šU¢Bf “‘BoÜê™-r+LLùÌÁzƒå¿%²¥=d©°¸”~Öéý§5ƒô:à¯Y$ž~X¬æ,µ|†ùYJ¼*ëÊíÎwmIÉïï“óÉd¢þ Š×œÖ.çíÉM›rÿiy|oÆŒh“í “ãYGÄ ÖåNó·cºNAý$Q-Àb$éÉn–—žÐîŸ(±MÅ·¯‘—ŸØf> (ùÞ #S®btÄêêW¨�����f×XšAϹH«¿ò[; ²=\qÿ˜|íû –;i¿Â�‹K «ûÚA¹îïA–ÏQ‘ï^7(®2ãI+#òðΔ<¼+=žeS«¿>–,°¸{KRîx¬´´Ç=[“òÕ+dýâ?…åG7ÉoA]1K^wF×x[qàæ±} €ú!ÀÀ‚æY!ñBâE—ˆÛ¾^2–9X&àÂõ†ýN2ãð…Í ½måJ}”[‘TÏP‘M6áeˆh! Í‚àúƒø^Æ(M§D’$=ÇŸ\JJ*3,éô>qSþ ¦—–lЃeÊ”²*¼À,7;jêe£˜RƯr{YùeAê´2íú–˜d¦=dafg¦ð Û³‹OšÙ"×^f}¹ÇžÍ áÓÀ÷ް'‘ &%Zóˆû?¸S²{Ø•ßÞ3&ǯ”-Ý’ÓŸ˜¹g8#K;'ÿ0÷ ûVÜߢ¡Ê+~Í©í²qIH>ùûAsµÇ/½Žº²z@À¹5½mæ¾fÉØ´;#wú'®z0)ÉŒ'¿øë¨)©qĪpÉßpÁ1mrÎÁÍ=QpæQø‘¬rÂ,—Ù#dñÏOҌ곾wãHA&ŽZè3§oä¤����´ºT†AϹè×wŽ””ÒÐ@ jÐÌ9K; 3‚Þç>).WÜ?*ûF&~÷ÿ†!©‡›7%Ì4™âA÷EdÜ·èk�Ô� šÉ¢Cܶ$mÇÄó´,Ç$Ý=âX qìN ¹! ù¿ô'­Ù¼¢ :Þî•É\Q¡BL€f©ÈøSÊÙMûÇi�?JHf¤_2É1É$\q3®düÉMûuÓ&Ë‚§Ïw²Yr&²Dò3Eä§„ÈK ¡¯G¾s¥0¼L6Äø»0±œÔÒ.íå2J”m÷&¶Y¼¾JíùÛÑ¿2÷r¤ðyžÉ†á<L¢ «(3E^f‹\»‰pÉ¥)Êla¹Á»kž¬4}¹õÏ÷ßÓ\6Œˆ¿Ž®¨'1ÿZ‡ô­Bƒ^vB›\rù¤ýUÿï¶QyÞQñŠË¯ì™øš¤#4%e%º_>°#8±°²»r9‘ã×E䨵Á‰†×žÖ._øó ø‡º|óº lI_Gí?ä5ˆàÀe!3½&"ŸùÓ i¿ñ‘äx€EwÜ1).5KÄ#»ôõ57è ·Í–ç—ŸÜ:RuÙü ‹ÜQsÕƒ “åcªžçoS· �����ê/8ÇPêñ½é‚�‹x¤ð¼ØÕŽÉói|üú¨üîŸWȽے&£Äýþ¤÷Ú‘švVÎrô\á*ÿ<Ï~KB²Â¿]ÖåÈþþýã×f% -� X�€²#âÙ‹üáuÍ&1à“Œ7,vr·8î¨d,ÿ±&ðÇë'( !^È”¥ð4kkOž òë¯�S¦ÃÜúëMûk÷GauØ>­“YøÒVÆ<"ñ·ëoËK§ýÉ3¼Œ|±×_c¶“dª°rÿɲ)¨…`¬‰'¬ª†Lå¶Ysf É+QRc{5yÏË•_p=Kl±ó2PäYÈxP„W”‰¢$ã…”y^Þc/?Ó…Þñÿõס)»üßha'÷Ñ ž´",'mˆÊ $ä¯'å˜5•¿ i¶ˆe¶<1èÊ5OÊyOŠI,\þ³¼þ‘¤ %‚«-4ˆ¢’X^Œ†f±Ð¬?¾eÄ@|åª!yÏS; ê•*͸qïö´lïO›åËÑ¿oÒ,£yW_hŸuÔê°\÷pÒ*èºW¸#íïË×ù§ž`XÙãÔm¯ÕÒ,z‚E_C5d¡¯þ%ǵËÖþŒüßm£2U§î‘'Dö ����˜ Âú[–2!sNºB6€ôäUBåËW È«#¥BôÜÅa«"fÊÙ럿øÅ_‡å;ךs&Óµ¢Û‘ß!Ï:¢Mºâ\ˆ±…¹@`�y<§S¤ýqíìUíÞ½"£ˆ—Úë>ê0¹?èèø?�BQ±lèŒnÈÔw‚�‹\P… ¬Èˆ—NùÏOø³Æüûþà¡ÿKCÇâ5�ÀÜúË»úë#£‘ß½^L1‘¢AJ2QXd£0s²¥K²‰¼ìœñÄVŒae¬ìòÞøjòK†xÙ VQÙ\IÊíÙŒ•ÚÇ_‡L½=—)$ûó·#•Ú³¯Ñvmóbd¦(“y¢$3E.ã…¼7û<+Èbe×d¼ÂŒnõ"âßïŠyÒ·$T9™fÉ ‰Éß¶§d`Ô•Ëî›<UäyOŠË÷n6µE¿uݰ¼îôv ÕÑ2ÿ{[¡¡Ûÿ±~ÂúˆÔêÉFåQÿùð±e_Æ”ÃÐ"ù®8!¿¾+¨Gº¢;dŠéó“ÙcUOá ƒ³ŽÉM›‚"_½jHÞrV‡yùô™?»cTþœ}?.8ºMÎ9¤~A kzõ+gõ� uÍCZ;5íŸ@q§uµÊê^¾Þ���À\ `±è¹˜W}{§\xB‡<û¨¶ìù‚R½í¶¼ò”N9ë ¸¼ö»;§\:Tµ&"_Øg2{Ó=në>½˜%#Ç®ã"… ÒES�0œÐÒtp-å^'Ò–ŒúS*T Yâ!O¢þ¶=±ëõýÈŽŠg_ª5›„¸)ñ2ýâfüñüÁlY°¿\ÌPOù÷5ÀÂñŸ nÝ ‚9h ç/ïùËyvÒ§õÛô9i¿]0,“¡"(Û‘ ’ÏTa%=¨‰¢x‘ŠíeRI˜‘ËlAqy2›­ÜîUo—jë¨eoŠíÙÄ[h „Käf”f´ð 2Tx¹ßmE-Ä2”x¹öñ M¬/â/ÓéŠ[“FG7}ÿ†ÑµåÂcãò_× Ëc{'¿´â”ý#&ÓÅ_·¤äNúð¯ä´QYÞe˘8?¸#%7nJš2ËôòÛÊþpŸÌKOˆ›º¥úZny4)ë…äܼà†Óýíýåþ„¹bã7 ËO¤åðÕ!éð·30æÊ§å¶Ç‚à-ƒò”ƒ Ó[®êqä9GÆåÿn5Ûøèoä¤ ÙÐ2ËïråÆGòèžà½XÚiûcíA"µXÔ>µ÷$— d:S/����æ Í�:0&X@iO¾{Ý ™–w9r誈<iEÄ¿ Ëáþýüsië‡äU§vÊÅ—õËTè¹´?»·àÍæ=iùÉ-ÃrÇæ„É´©çYÎ>$N€ÅÑå+€ú!À@KÓÁçÁ„-;Gly| $‰à‹PWÔ“Õ]iYÒæJgÔ•¨SßH÷‰L1±M°ƒ?Ø8ò€X©=úªD43…«Wzë@^éÀóìl ¿I¯$7·Ùû&³kùu1 ¢Èef˜HºDTÌ8‘m7A&oEqF‹ü/‰^0Úke·/¹L^™õH6“…dƒ¶ð&Ö_О· ©Òž—x£d}"…%A*m§B»—m·ŠÛÇ߯àuh<„iÑL&È"›ê#—ÑÂÜêòAö‰É3[˜¿ÒtÏð²Ù+²ë –óÇ糧=˜Â“d°˜­ý"Ǭȑ«‚À‰j^{z»üð¦Sâb·IQYZ¶Bkоæ”v9teX¦JK{¼áŒùÔïM`ÁÏî1åI^|MÓlo8½C¾vÍ '<¹qSÂLźb¶¼ö´vém+ 08÷˜)=ò“[ƒr$°!÷—®C·ûÆ3ÚëÕ¯©?C¶˜L@¤ÛÐÒ+����€¹aQ»Nd_F°°tÆlsC/8Ù>0*¾78ײ¤Ó‘/½¬ÏVä3�ˆý–„eUÏÄ:ÆRž¼ú;;M|í‘úžÿ@ëZÄ9�êˆ3Ð�Zš^ÙoŸûC²Ù€î ¾ôvÇrÎipÒ«ÿ�tA&‹D§À ®·2ƒ~£ß˘5cùV !w?{$°&JN”ÍP‘ceK_”IïP‰¢ZF k¢„FÕõgg³o#ùÏñ¦–™¢hs¥‹—–óî{5f̨¡=·<A’ Kì\ÖŠÜûS”¡Â“3[ä2bäžç¯OŸfûûb»¿ëhy¶˜ÿqO`1kû7Œ—žÐ&üf@F«ÔòÔ’ /?©]NÝ?*W=˜”M»S²wÔ3Ù·[rÔêˆÉøÐþ5ͺðO§¶É^>dv¹o\;,ï?¿s<XâÀe!ùØ3»äŠ’r÷¶”<11W|´GlYÖeËá+ÃrúQ‰Oq¦?ÿˆUa¹ú¡„ܽÕÿF<ÿowMFu‹9vmXŽ_mHÆ=aqò~Ûµ• ™®SüϨ“#����0g,íÔ'Õ/~ÀÜwÀ²°üË9Ý&£æâÇ?/áÊ_y”eÍÙ9˜‘;OXh Ñ|™¢‹7ÚËœ).ª´WèÙƒóo“ÉŸ1ÒsAÕ–©´fWÐ×�@}` ¥iÙ½²³¹ºß–D6 ]¯ô×6µ(îJWƒ2¹™,öÇÑýAG�ö¿Õ?èÉï.\ÐÄKx&;…Ü+ÊÌîdƒ2E) 2QxE'Ä”ÉKäP1Ó…d—/ÊtQQ´}S÷B2Ùíf3QxÏÚ½ìëÕ­zÕÚ%¯]JÛÍûê$µ?Ìò^öï(l—l»”ü9…¯;?ƒ†-Aà„ÉZa»*Æ`ÜÂÌãA'Ù ã™-$›CrÁ®8þ2ñ˜–‰ûûdØÿ15Ù`õlïßóÉ“Œši*ôÇö.è©yùý—„Ì4_~IoÕeYžt9=aðŒÃcfš. Øxöq35Û³ümÞ½5mN 4‚þmÏšÁ{����h¾U½ z.[÷iÉÓÈxðþŽÿÊ?ôÉ7®”¿ïL™öÓ6Æä釞³¸íÑ‹5ö f<Ñ€·ŸÓmJ€hÅe÷Žš Sòõu8òŽs»åû7 ™çoè ËkNï¬Zd¤è¢Í‚ðZÿy›÷dä÷Œ˜¶ÑdéyŽ×Ù%WÞ?*7oJøÛkp:OÔ„¾@=` ¥¥2Á`³^Ù¯ƒÏ/ø>–ñäý¶¨e–i˜‚LcÙLATýx&‹œlR da ¬ig¢È›oU¸º¾`=ÅíÅë©a¾ îpƒ@MÓà•Ù^AÖ ¯ükªØ.µ·ðjo¯a}¶L” )›™"—Ñ"›¡Â³ŠÚs+qƒÇž5‘ñB3Môvø?»,‰E,qª$4˜õýh"Mýù–³:äÒ+†êd¡'etÝšb����0wäg*Àü¦eO¿tù€ tÈ9pYXþã‚EŸ³­?#ÿ}ã`AÛ '‚„³yç8_zb‡¹}à‰” °x|oZîÙš”CWFÆ—¹ð„3å{lOZÖ,ª¼þmki&ÎמÑenï|<a^ßvÒ Šüç7ÓGµW~sçˆ`öÑ×�¨'ÎB@ 4“…×~ˆ¸ÝÇ‹×yœxmÙ-ŠYÙL¶'–?‰?àn9~›–xÐïp¡à¾yœ,m yAégb¾¶™i¼-ÿ6o¹¢ùÅë WÞNðºòÖ«™,7Èâàe&n=mËdïg ç×Ò>>?S¡=»¼Ìp;ÙûAZ‰rÛuÍdû“ãú·þ/2Û¿u²Ï›h÷ŠÚs÷óŸçzãmñ°H_¯m¦hD�YÕãÈEOë”Ó7F$T‡o¡ºŽ3ˆÊûüuêº����sËt3EbnúÑMCòÅËú%•©^÷î-Iyí÷všÀŒ|<ñ­kË>g? ;AäÅG¹WöN’=b˾´|àç{e2ìJgª(vتà䟾º¯^9Pv™ÃWq‚°UÐ×�¨'z�--ì—uE=éŽyҟЫüƒ/Ô1Ç“®˜+Ýþ¼p3ÆÔ 2Y$²™,‚æI3Yä§|¨K&Šéf¼ÈµW˨‘×– J†˜Ô%Ù+ÊÜ/÷r L!EMë›d;5l_ßײÅÎfª0Lf ÏÜzÙ f]y+rï»—{ŸM0Š¿?Ô�‹Å½–,ò§Hx’Ú Y-³M¤™,^vB»<ï¨6yhgÚœìxtOZ®{8YÓóOÝ?"k{CÒÛnËFÿÇq[¤ú±����hM:èÙµe$A……â¿o2Y&žL»·>*«ýßø1KÆRžÉqçãI¹ü¾Q¹úÁ±Šëø¯«äÁ)¹àØv9xyØ”Uö÷¡Gw§¥§Í–ƒÙäßÑמ—Ô!§“•=!ÑØ‹­û2rÅ£òý뇤#ZýœÂG~¹WîÝ–’ó˺ÅaSÊDËŒÄóÎGüüöaÓöÂã:L ØÿÜÇàût«ÐÏŠ� �õTëi«ÆyV ·V…ǹÉλÍMN¶Í)štžæc²“ÉÔu ®¼2¥òÛ&»ŸL&eppPvíÚi2:twuÊt $lÙ2èÈc!y¬?d¡U·?ø¼¶+-kº2²ª3#Ñ&}au& Â}Dìþ[ĺS¬‘ÄJí.¿¼Lžk‰—ÑÉœ½ÍoÓ[É»$`¨0ßÍ_OÞ|7÷Ü¢ùnîù…ósÛ—¼më)\Æ”ÉÐPKoàÖ ºæ M—kŸhóL`ÂÚ­ ‹/]Þ¤Ø(lÏÞN·ÝÕǶe‚-\ÿ6cYæ6÷ØÍ=¶ms?“½˜ç¯Ç±Åò\-_‘£ŽËªua‰ù?ÐB¡Éÿ™môþÝ?0è–ôõ-‘ÎÎN‰D"þñ8ñšj¹?YPO¹?!?ÿë¨$Ó僮"þñôü£ârÖQ����Ìïøß}rã# €F8qCT>ÿÂ0û"‘ð)¤\òÂÉËÞºy“—w[<I…Ç“Ýß/Võª`B¶�´´hÈ“%mÚo¦M”Õ@n�:êÉjð¹¯-ãºÕ¡^¦’ÉÂ4foì┓dš˜Q&ŠâõH…¹j5ò¹&èB*lvÂ$ŸÃ”2PL²>³|}?oý =×ñï™,¼ñÀÂŒæõä2[ØvðÏy6³…¶$ÒfKW§%¶Äc–¿Hõ€„–Û¿Yô”ƒ¢rôš°\ù`BîÚ’’ÝÙ4ž}í¶¾*lJô¶QÝ����æý-H€€F9z ¥Z�Ô�ZZØöÌÕûÇ“EqWR™l»?Þæ<ëàsØnþ�´çtŠ´ìÇGƒ Ëÿ’¦™,Ü2™,Š‚,ÆC-¬¼`Šü9¹|>™Âù¦$…ÆEdrKóÍzüy&û„L”%ñ²íVv=^v=Vv=…ëÏ{–Wð½ìú, ,ð¼’¿k"MG^»—·/;¿j»¶o§\{ Ûñ²íÅowA»h|…UØ–ãO¶mþfskâ#ÝàÉ–ÿX\ó¾›ÿù£þ¿¦½=¶,ZäH,\QK‡Vݿ٢Ï=2n&����ÀÂpÂú¨|õª!€F8a=�ê‹� �-M“�DýÁgºZ)+üŒ2YdGú-‘ò™(òÛjÍDQ)£Eq…TÈtQm;ÌwMʆ좵f¬ð¦Ø>uÞŽmRTd¯ÏT¤ª¨˜ÙÂÿLca1Á½þ‰Ö\ažÚªû7�����@“´<$«{y|_F� ž´oÑ>�ê‰^�f 0“…Mø#í#NžÉÂñL…—Éf†ÈŽúOdœZÇ3GdÛ‹3ZH¥Lfym/ʘ‘¿ÉËt‘›_!FIF 7(uåy¹×W˜Y¢ Ýóò2FHéz˶ÏóÆÿÌJíRS{q‚ÉßN~æìÛ$ª˜È`1dQ”ÙÂDGx¶y}шHo_ÈL‘HÑ������0Î<0*ÿ}Óˆ�@=iß�õF€�ÌDA&‹±l&‹”y\s&‹Ü «L[I¦‹2QX“¥‚(7¿ZFâuxA–Ï­’u“ée¦¨ô¼IÖ7ÕöÜú*´Ûâˆëÿ}šÑ²“¸"—ÙBÿ|ÇñĉYÒÙiKw#í]Ž„ÂX������LÅÙÇ °�PwÚ·�@½`�ud²8D\;æÁkCDdäò™,”•d1ž‰"»®lT€I4Qé¢x¾•}\4?[bÄ’Z3^H•ŒEÛÑv]Ö$²(S.¤$3D^»W<ß«Ð.y1#“µK6Fñö˵—_Ÿ7žø£°Ývq-WK?Q×üÝVðÁ‰ùãm[ÂaK:´4È’´wÛYb;X������L…¦ð?bUXîÜ’�¨íS( èY�  2Y$²™,‚ìe3Y˜AE Q&«„UQPi~é¬ée¼¨–QCŠÖ£AV0»Â¢e_›çM±]ª´WÎD1½õM°ƒÂ/þßiO”4±&J Äb–ô. É¢åa‰·;â„®������˜ŽgÑ&wné�¨íS� °�€: 2YìÇGƒ ‹3Yñ 9*‚yEãÏ ²Nx™ÂLAÆ èð²kÉËtá?ÇËf¢Ès˜Ì fù2y5&2]XÙíeÌpÝñD^^fˆÜ‚ÓiÏeÎð*´ç½M¹�/où’öl¦ ÏËû¼‰÷µ\»ckÛx™×_Ô6ÛÇ-é[‘Åþ‰Û�����€éyÆá1ùæ5CòÄ`F�`&–u:¦O€F À@KsýÁí”kI"mɨ?¥²¿¯ÂŽH<äIԟ¶ €·‚ig²ÈÅ•´˜4ƒDþüJ-jÉDQ´«\:‡I2f( ²P¹�…É’oL¹½† S]ßÚ5 C÷CSÑE‚ 'ìÿÚaKç¢t- K{OHB‘©ï„snÿ�����h ×&ÿyù �ÀLh_�B€€–¦ƒÏƒ [vŽØòø@HÁHsWÔ“Õ]iYÒæJgÔ•¨ãI+™v& +›É¢\¦ˆñ ã[nq¢(eÃx¦‹Übù™.¼l押Lãó'Ì·ŠËŽämG·a‚,ì`ƒ&DñëÌÖ©Ú.í%&k÷&¶Y¼¾JíùÛÑ¿2ïíÌߎyª6ºA& ËÿO8êH×òˆô®ŒH[WHBQÛ´OÕ\Ý¿�����áÂãÛä'·ŒÅÀ´iö íK� Q°�ÐÒôÊ~3øÜ’Íþ�tÿX0�ÝË 8§%â>·Ü�ôt3YèbN¶ŒE™ùeUÌDQaáJ- æ—ŸU\Qf;&ÈšxBÁªjÈDQn›S΀áÕÞ^MQbsײ%ÖfKÏʈô¬ŠJ´ÃÛ™^Љ9»�����4ÈËOn—Ïüq@�`:´€F"À@KÓ² zeÿfsu¿-‰lðº^é¯mjQÜ•®¨´¤ÂLše!,2òàä™,4›‚]œqB3‚Av/À`²*Xþül&Š\y‘ y™&J"Êg¼Œ”ÙN¥Œe2aèM^É/›!Â**âYyË—mÏfœ¨Ô>þ:dêí^^KÑv¤R»Ù+¬%±NÛWt¯ŒJ8nËtÍõý����� Þž{T\þpϨܹ%%�0G¬ ›>�‰� �--• ›õÊ~|ÎdGÍÇüÁ~ÏoˆZf™–UÉb,›É"øqX5“…KQKF‰Jí•æç?˜,ãEµö2ëwõ±YÅv”Ûlåv¯z»T[G-Ëx5·;[¢‹BÒ¹,"íK"ë ‰5ÍìjÎïß������ ðú3:åÍÿ³G�`*´ï�€F#À�š Èdqˆ¸vLlAy`J™,*ešÈþOdœÈeºÈÍÍÏ„Q&ãD¶ÝËf¼°J¶“@à)-L{~F ¯Ìz$›É ²AŒ[xë/hÏÛ†Ti/HÌQ´¾ñ·¤Êv¦Ø®ïW¸-"=âÒ³_›D³Áæï�����@ݵ&,/;¡Mþû¦€ZhŸ¡}�4�ZZØéŠzÒó¤?¡Wù£Ý1Ç“®˜+Ýþ<]¦åd²Hd3YÙ+jÍd1BQv<¿Z& +› c /&]O-ëÏ>võpƒûOõ¦–™¢hs¥‹­oü¾WcÆŒÊívÈ;fKÛâ°t­‰IǪ˜„ÚS2d&æÍþ �����Pgo:«SnÛœ”{·§�&sÈòé3� °�ÐÒâ!OVw¥ƒ±îþ„V:ø¼Öo_Ý•‘¶ÐægYÉâ`qíhd1ÅL^.SD~ÆŠñ€ˆlC¦RÆ‹üçå2Nø÷²ƒúã *fºìòE™.J2ŠSL¸&JÄs3Ùíf3QxÏÚ½ìëÕ­zÕÚ%¯]JÛM`…WÔbüý0Ë{2žicÒvÿ˨HliD:³ÁñÅq"–Yv&,æÛþ �����POï~j·üÓ÷wŸß€bzzVû �h,�´´¨?¸¼¤M³¤Í€÷@v�Z¯ì×Áç¾¶ŒDæÒ�ôL3Yh€ƒåå• )\®z&мùV…÷­`=ÅíÅë©a¾ îð?CËÿ<·4cDIÖ ¯ükªØ.µ·ðª·ëÛäØép¤cuL:×¶IlqDš½¢¥AæÝþ �����PG-ÉEOë–Oþ®_� í#´¯�€f¡ÇÐÒ¶'QW"Ž'‹â®¤2ÙvGÌ•ý:ø¬ËÌ5ù™,4…]k& +?D"›‘"›‰ÂÊf¢˜ÈQx™âLRÑb|ÙõH¦¸ÆFÞvòÖS˜ £t;Å™0L& 7[&Äó*Vx¥ 0&mÏýÅÙù&3F¹ö<SØŽeÛ#±E!éÚ¯C:ÖµK¨-4ãÌ9óuÿ�����¨—g“-ûÒòÝë‡�ò½âävÓG�@3` ¥ÙþvÔ|Ö©+*óG6“…‰3ÈŒMnÂÜÖ”É"?2¡.™(*­§†ù–7ÉvŠÚsÙ,¼l6‹’ ‹2÷˽œ5d¢¨d²íøÿqb–D—F¥}U›´-K´7"vxæ9óvÿ�����¨£×Þ!{†]ùÕ£�êYGÄMß��ÍF€�̦P§¸m‹gELVÍda>X9“…‰&LmË›4…—ÍD1žé"?ãD¶¥`¾•/EóËf¼Èßþø+“ª52Ùõº®ÿ7J6“…$žàþDG.FY¢8¾Ã´›L‹OÞ.¹à¯hy}}ùíÁîp¤ë€né:°G"ݱkâý«S ������T÷Þ§uÉhÒ“Ëî� Û9ÇLŸ��³� �˜E&°"¼Ø Ö{™1s+nBl¼Ï ù $Ë?1ã`—)çÑLÅë)n/^OùY…òJ†TÊ$aL’‰bJ™.&Yßx‰’€qÄé K|E›´¯í0·N[È¿­‚¿ÃórA(Z������4ÚGŸÝmn ²�. ®Èõ�0°�€V`2YäýGÄs]q$,ÎØCb¥÷T~NQEA¦ˆüLùe2QxÙLV&·t^¦ K?¬ìÓs%‚v+“Ÿ#›¢\FüŒy/|<C†ë7L0fš˜X].õDv~Õv)l/ÞN™öP»#mº¤ý€‰-kó?ž°Ø!‚(������f›¬Æ#åB€HË‚¹Àl#À�fQ.ók2Yô‰Ó€†Ñ 3‚— *d†Äª)“E®DˆHùLùmµf¢¨”Ñ¢8ˆB*dº¨¶ æ»ú—ºÙEkÍXáM±½:+l‹Õ–ز¸´­ï’¶µŒR&K…~~d¯������h.`]ÔnËw¯� Ã+Nn—×Þ!�0Û°�€ ƒô¦LˆÓ)nü q5“…ß²"µg²p<àe²™!²Ñ'‚ÖñÌÙöâŒR)…•-‘)ʘ‘¿ÉËt‘÷·•Ë„Q’QC3YèzÆËnf–o—¼ 2‘üÂ* ä(m÷L£7þg–¶;qG"«;¤mÿ^i[ß-ÑeíbG)‡À �����€Ù£­«zBò©ß÷$G0¿èiØ‹žÖ-Ï8<&�Ð °�ÐÒ\ÿÇQʵ$‘¶dÔŸRÙ2aÌ;ò$êOaÛ{žŒu{vDÜðâ :ÀMñn½bÊ™,r3¬2m%™.jÈDaMöKµÜüj5Š×¡¶?¹U²NL÷³W!£…'VÈßn,$‘¾¸Ä×wûSD–´‹ÓñßÓÆí\ mÿ�����¨'pݸ$$Ÿùc¿Ü»=-�æ—C–‡äÝOí–ƒ–3œ  uÐ#hi:ø<˜°eçˆ-„d Œ4wE=YÝ•–%m®tF]‰:s?L=WnÂd³uJ:~`P:Äd‡K(ñ÷É3Y˜•äYŒg¢fyÙè“x¡ ÓEvþx¦ +»|™ùf-µf¼*5ж£íº¬IdQ¦\H6ÓÄÄ ÊoÏÞŠ7ñ¼²í’32ÑnEm -i“غniÛ¸Xb«»Åi I;r™9ò>Ÿze¯XHû7�����@#èÀë7^¾X¾|Å ü÷M#`~xÙ mò¦³:�Z �Zš^ÙoŸûC²Ù€î  »c¹ç´DüÁçù6�íi`Ex±d´tEf,Hsè¥L§=i& • ²B!Êd•°Š# ò–OñPfþT2^T˨!EëÑ Kr•@Ê%ß(ûÚÊ傜´ÝŸ[¬ˆ#¡Þ˜D×õHlÃ"‰.ï”Pw¬ ˆ¢Qå@êþ �����Po:{Êþ1ùÚUƒrç–”�˜›ŽX–ןÑ)G­ �´",�´4-› Wöo6W÷Û’ÈfcÐ+ýµM-Š»Ò•9+7xïy^a ®p:%?À\H6“Ex ™,‚ø„¢”VqÄBî®—]ª0SEqB;Šæg3QxÙL¹`ÏÊn?S&°"/£ÆD¦‹`ý%5\w<ÅD „¬?û´ì7yûøûœß̱Ca±{bYÝ#ñƒ—Il}Ÿ8Ñìò…Ù**=ž‰…°�����4‹È~åe‹äçwŒÊ÷®–'3`nXÖéÈËOn—ç�heX�hi©L0جWöëàsÆ ´ÇüÁxÏoˆZf™ù T‘»oÛqC‹ÅÓv7TÈp“Ò` w¸†L¹$5dª¨š‰¢xåÕ2QmÇ*—~¢Òú³4ÈBåJƒÔ”ÉBªËf®°Å%¼¶W¢KdU„µùï™]<Qîq=,¤ý����� Yt€V§Ý<"?¹e„@  …i`Å‹Žk“ o�˜ °�€R)c‚f²HÇOŠ2Yd’UV˜Ídae3Y”Ë1ž¡"÷¤¼Ò&ãD^°…i/Ÿ‰ÂËf´°²-r¹#&2]ËNäÓÈ›_P $o;úd¡‘"™ Í+~ÙZ"åÚsyÍæ5†Ãb/j“ÐÚE=lµDÖ-§+n‚@¬&������´>°Õé7wɯï¡tÐB´È3h“g�˜K°�ÐÒÂŽHWÔ“î˜'ý ½Ê?%9žtÅ\éöçé2s]qv„ÒLÑl&  æy) %¥¶Lþçèú¼²ó+=¯ð7ÉòÕ2ZL’Z¢`~…í˜ kâ «ª”²Â+ÝlÈ+»¯Sœµ}Ù™D×-–Ð’N±CN^�E0UÊdQ¯@‹…²�����Ì&ÀÕéþíiùó}£rå y|Y-€f[ÝãÈ™FåìƒãrÐr†(ÌMô^�ZZ<äÉê®t0FÞ2ƒÐJŸ×úí«»2Òª¥&Dë+—¹bâqv~(›ÉŠ˜ SÊd¡ËÛ¹^^æŠàýó$·=ÉfœÈ>ÎF(f¨ð&–/ ˆ(“‰"Oáv*eÔ(“ CoòJ†xÙÌVQÙÏò 7›×nGcb/ígÃR‰<i½„×hæŠ6±C¶ØvmÙ+ê™Åb!íßsÊhR¼1ÿ˜JúŸM"%’ñ÷»´ìwŸš'È�d™à0SÚ(‰„L ˜Ä#² %<Iº2êšc)WÒ™àðtMÒ"ŽÏrt?²³»Qȉ…m‰û»R[Ä–Ž(Y™���°°è€îAË;åMguš`‹›6%åöÇ’rç–¤:€ß@½Å#–±*"G¯‰È ë#U�˜èÉ�´´¨?¸¼¤MÕÓfœ| ;�­Wöëàs_[Ækš_?~ÊXx&�À•l& l⼤ÉdaךÉÂÎ%¨%£D¥öJóóL–ñ¢Z{™õëè™– Ñ ‹â²e6[Ш’mq±—öˆ³a™„÷_!áu}ZÜ忯þ enʾïA°…4¼<ÈBÜ¿[•78j&Nˆ— äf™ Ð)ì“ÞèD¯}–´GÅꌛi>Û;ìʾQWÆ<ɸô‰S¥û‘Æ2j¬X"­Ý\î*½Œ8þ¿w]1Kzâ¶ô¶Û���,$A°EHþñ¤6óøï;ÓfÚ´;-[öfdÇ`Föø¿GžŒ¥<Ie<!®˜ §JÃŽ%±°ÿÛ2jÉ"ÿwåÒNGVõ:²~qHö_L�0ßгhiaۓΨ+Ç“Eq×ÿ!“mwÄ\Ù¯ƒÏºÌ|S`Qt?/“… 2Y<,Î42YdšÐ»™¼…ó3UX¹L¹¹ù™0ÊdœÈ¶{ÙŒVÉvòƒ¼à¹iÏϨá•Yd3Ydǃ-¼‰õç·ë–ãa±×ô‰³ß* ¸VB+ýûm%ÍÈZ‘o¡îß-#튷oHÜþ1—Ásˆ Ê…±»ý>­§#HS0h¸Ó?™¹kÈõUúÁFÑ€•½#:¹òØ^Kú:lY⟠£<���"ƒ�@-ø¶� ¥iJë¨?ø¬SWTæ½üAüòZÊBJ2Y˜«œÝ¤ ,°=Íd‘šd#…™,ÆC(¬ Oš‰ÂÊf˜BÆ‹I×SËú³]ýÜà~ÁS½‰mG"buvеb‰8Wk–ŠãBÚe+‚6»i mÿnZêc÷ x{†()€ù!×ß§-Ÿ¶uˆµ¸3[‡iîÑXŠíýybÐåøl2 dÙ>¼÷Ë:mYÞ혧�������L À�ZL~`EîVý5¬ÂÊäÚ<§SRÑü9aq]ט I4õˆ8Þ¾*)Ìdáå2Eäg¬ˆÈ9d*e¼È^.ã„/›‰b<ÁDÅL’]¾(ÓEI@FÑöý¿Zÿ�ÏÍd·ëó½`¥ží uµ‰uÀjqö_#ΆUb/],v{|<ˆb"È¢\P…Ý”,h.S d×€xÉ´�ó— ²üýÜêëšs¥C´ÈÖþŒ$ÒVÌ&Ý4ÐB³Z¬ìv(������ä!À�ZT~€…ÉZáZã &“…µXÒž+^zÔ Šhöа?vìL%“…8X^^ÙÂåªg¢È›oy·W9ÓEñzj˜o‚;\ÿÖÖ\ùã&=~[\¬ž±Ö¬ûÀuâ¬_)Îò>±;Ú²Y@ ƒ+ ç²YX1ßx;úÅÝ;$À|§DÞÖ=b÷vˆµ´[æ‚ÇöfLI´ tydwZ†’ެé¥f������ °�€”? ¯ÿšb"Ð"—Íbbðßu:%=@26A®ß½GÓ›$Tk& +?D"›‘"›‰ÂÊf¢ðò_›åe3Nägº‚ŒãkÌ®G2ÞÄFóæ{Váz 3a”n§8†ÉdáfË„8!ñâ±Vô‰uÈboX+Ί%þ c—ØñèxEqpE~ÖŠüÇÅA˜›Ì`óö½â&XH4 ÈKе¼W¬Hk~íO¤<Ù´'-à ²V´* |Iº²~‘ÿÝ"Ì¿…������Xذ�€Ud¡4Ð"d¡³õ¾)QoÇÄ ‡$åÏ÷2 q³™,Ô”2YH^D]2QTZO ó-o’íä·û÷ÃŽx‘¸Hg—XK—ˆ¬[#öAÄ^½BìÎv±£‘*ÁvÁc]†àŠùÁK‰·m%A°`™À¢-»EV,+–V2’ôä‘]iJ‚Ì�óÐδlè I[„�����°p`�-¬RE\¡™-ôÖϳL “É"²¿d¼PÉ"’XæÑê™,$H4!º l˜$…—ÍD1žé"?ãD¶¥`¾•/EóËf¼Èßþø+“É3jø÷Ûbâ-Y*ÞšÕ"÷kå ±õˆÝÑ.v8\\Q.Ø"?kÁóƒW¸:°œ¦ì�6“ÅÅ?ìU‹[&ÈBƒ+Ú‘–´KpÅ\¡0ú™m\J������.,�´4wI¹–Rß’QJeÇIÃŽH<äIԟ¶'ö<?ÏŸäÏYhY “¹ÂDDx&˜Â\8QÉx‹üÇ®Œ¹ “ÞÂd¯ðooDüw°Ê†²7v™r ÉDQ¼žâöâõäZâ9þNŠŠë··OÜÕkDÖ®{Ãz±û™À Ç_&?`¢4°Âš4sE£±7ŽPÞ¶‡à Ç?Ì1¡A³\.DË‚hæ ‚+æýÌô³Û¸„r!������X˜°�ÐÒtðy0aËÎ[É@"8™ßõduWZ–´¹Òu%êÌßAšâþ\…g",\m1÷5˜@ouʸ]’ŒîïÏ ›à Or™,úkØ`öÆ.ÎQ”i"? ¢L& /›‰ÂÊä–ÎËtáÏó2VöéÙídÛ­L~f ÝniF ϱƒàŠžÅ’^µ^Ü•kD–kÖ à°«SìP(®ÈXäe§( °¨ÜÞhìßãmßKY ˆ9&ücÃZ»DfÓ¦=”™Ëô³ÓÏð e­Ur������h,�´4½²ß >÷‡d³?�Ý? @wÇr3i‰øƒÏ a�º¸\ˆ– ɶÈe±0óB1Éø]|ÊouÙp…”)»1õL¹!"å3Qä·Õš‰¢RF‹¢²$yí&�#öÿ¶¸d¢âvôH¦o¹¸k6ˆ·Lƒ+‰ÕÖž ®g¯°ÊXXeÏFYöïÆðvô‹7š�¥ôØÐcÄZÚ-³á±½NЧÍuúêg¹¦×������`!!À@KÓ² zeÿfsu¿-‰l6½Ò_ÛÔ¢¸+]QYŠƒ,‚,‚,ÙÇ®Éd±Q\+¢Ï6-âSÍd¡ƒûZ’#ãe›³&Æ3N­^6 "—¡¢8£…”ÉDnXÙö¢ŒÛÑ»¶¸ñIõ®tßJI/]%^ïR±;»ÄÖÀŠhÌüýÁdO”û¨1À¢ÙÁŠý»þ¼ÁQq÷ €Êô±ã±:ãÒL{‡]Ù9Øø²=ZÆâæMI¹ñ‘¤<1‘¡)t´E-YÖáȱëÂrò~Q‰„(…QŽ~–KzÛm������ ,�´´T&lÖ+ûuð9ãƒcþ`¼ç· øƒ ©ÆÕ´”J%C4°@Ù,4ÁÿO(&i ‹J“àŠ~{¦™,r3¬2m%™.*e´È›oy•þPñœ¸vL2¡vÉD:$ÝÙ'é¾U’é[)îÒ•þà`·X¡°ØÙŒ¡ì” ´°¦XÑÌà Åþ]gºïï�Õé±buIJYˆÏõ»ú­ýïÐúG]ùÚÕCòØžéok$áÉ#‰´<²;-W>”7œÙ.K;ÉÔPŽ~¦ÝmÈ(������À‚@€�ÌA¹@�½ÍÏb¡Æ,¼‰ÀWº$)Å3™,\ÿŽÄ3Õ–É"XÅDÅx&Šìö²Áæ%dºÈÎÏtae—/3߬%?è¿çú¯4“Tû2Iv­”ä¢Õâv-iïië0Y+œPØŸB㡼û“•ÿ(W¤ÙÁ¨?o÷ xÉ´�¨N=f¬¾.i†íþ@|"ÝØÒ ÿß½™WÛ9”‘/_1$ß-Q~9•ÐÏT?Û•= ������`aà4!€–öÏ×wE=éŽyҟЫüƒÁ™˜ãIWÌ•n^xžÓ/.’“p1±H\2VDÒþã1/hj„\& /Uà ‹ Â+3³(“EÞ¬’¶¢§j^ Ïò''ì¿Î˜d옸¡6IÅz%Ù¹BRÝ+%½xµx½b‡#â„ÃÙ€ '¯,H`‘+ 2^"¤B¦ŠÙÊZ‘ý»ŽÒ®x{æNiܶôÃ%°³H«§ÃÿEÐØúÏ̓®4ÚõOÖ5¸"g÷°+W<0&ç=)&(¥Ÿí’N‡¯������° ` ¥ÅCž¬îJCóý!3­tðy­ß¾º+#m¡Æ^Ûêr¹’mVvìv"À²—´u ŒÚ1ÓîßK,óè”3Yy&rõCr-ŠË…ÈÄ|ÉËt‘½ 2[øÿÏ÷]/,éP—$bK%Ù¾LRË%Ó¶XÜX§xþdÅÚʼnÄLÆ {< Â)É^1YæŠVËZÁþ]?Þ¾¡’l.Û˜'îCÛ%sÏfqwök=ÿÃŒŠ½¬[œƒV‹}ÐÊÒÀ ו̽[Ľ÷1q·îñ×,c-éç@ÿ9G®+Â×24—Éxä;Îb±s0Ó”ãó¶ÍÉ‚ÇG¯‰È m“ÎØÔúz-ò›{Fåªë&À¢<ýlõ3&‹������ÎähiQpyI›^õš6ÃòÙh½²_ŸûÚ2a�z<P ?“EH`îd¬6ÉØQÿÖ’„¤ü6[ì¤^íëßf3YÙ)&yOME®˜‡WKQ6SEÑ|Xa;âzÉø“+š±¢MÒv‡¤"½’l[jÊ‚¤;—‹ï+ñ›` ÛÎTØ%™+rÁµU´J9öïúqûG¤¼Iýê&ñv Î÷ažëö‡%ü´£Åêíž³oXR¿¹ÅNQ “nûëIïø›ˆ>çücÄ^Ó'õ¦ÛwØ*î¦þëo4©YbµEÅÒ +ÄÞ…\’Mc!ÒcÇip€Å®¡Æg¯PÛú ³W<÷èø”ƒ+T[Ô’ç—«HŒÿ‹¦e0\¯>‡ÉýO¤å–Gò÷qM bwÜ‘ý–8rìÚ¨¼¼¶Ÿh÷nOÉ­&eÓî´ôºþ볤+jËŠ[Ž\‘cÖ„%ì4ç¸ÖϘ� ������,X�hiaۓΨ+Ç“Eqפ7íþ9|½²_Ÿuò³6¸®[1ÐÀ³4“Å2¦™,,GÜd\"™Ír÷ú£±™2%@Š7”ÍdaMwxÙçä†r&2TäžäWõ»–d$&)»G’¡Å’ˆ,•Tt‰¤c‹%é/÷?à¸X‘¸8á¨ØN<áØv6ˆ¢4À"7U ®È½G­‚ý»>¼ÁQ‘týË”lgï$ÿ÷Z‘áÄäËmß+Éÿ¹ZÂÏ>Á?¼lIþâ&‘ÑÉŸ£©ŸÝ áçž$öÚúYxiW2×üM2wlò pkI•DÊüMî}[ÄZÔ)¡sŽ{ÕbAs¤¯»O27>0þØZÑ#‘ Ϧó=†¬Î¸4ÂÞa×ßÝšÓ%‹ºŽÈôûûHÈ’°?%ÓÁk×?!ñLût yòß7 ËÝ[KËrí̘醇“&ÀâNl—îxùÒ-ûF\³žû¶§‹æx²Ëÿ<w gä®-)ùý]޼ôÄ69`iãòég¬Ÿuo{cËÍ�������³� �-M¯úƒÏ:uE5¨”Ͷ'&Íá:1qmG’–?ðjÇÅMwI8½CloX,wL,/áß׌:eüÇ:r•—ÝÂÊæ«°³™,Ì5xÃן<7ä¯?ìo'dʸ®?IÔLi«C’N¯$Ã}’Œ-“t¬O2±^ñBmãY(Ìä·…ù-ò³WäþæVÊVQûw}˜�‹†oÄ“Ôïo¯\1.‘’ÔO¯ö¿Zƒ?2®¿[%úò§ˆÄÂ2\‘þÅânÞYÛò{Íë5 È¢ÖÖÈ�‹}£ÍÉ^Ñꆞüç僲µ¿z ÿyHÞ~vGIÅHÒ“K¯”'ª¿¯hñå+‡äÍgµËÆ%3ëSj¡Ÿ5������˜ï°�€y¨8È"—Ù"œÉdÌäZ=âÚH"²L’éƒÅNï–Pú qÒ;ÄÉø÷3{ÅñýiDñà$¯È²ðÄ39ÓõAÈ#Ö’þäµIÚk—”Õ)i«KRv—ßÞ-éP·¿ÍvŠ™ qâþÓb EÅrBAÙ’â� Û.ÈR1q"¸¢Õ³U j z˜÷Á­&3Å”d\™òuûþß’ùë#âœx ÌDæúûKƒ+ôøXÖ ¤'Râîê×ÑÚ‰ùiWR¿»U"¯>Ç?&Iõ¿ 4ðk^«hSÞ ÿ ¨çú~xÓpIp…fÃXÑí˜íhy“Dfbƒ»†2ò“[Gäµ§u<ççwŒ”W¬_’ƒW„LÐÞƒ;ÒfÊѬß¿aD>üÌî†Wjæg ������Ì,�´==¯¥ÆÒ–?ùã€þ­¦ýöÇ*%—e\ üqu‰øc€Ñ'1¿7‹û·:&Èz ?È"?ø W:DÛ3þä†bâfz%“Y!Vz@Üôb§wŠ“ÞåÌìÇ4Y-oÔJ™"A¹‰¢ ž§“c²T¤= ®ð'ió§l€…íON·dœ.É„ºÅs‚Ò$–Qä¯Õ.Ìba²nL”±ó2Yäg­ÈÏ\ÑÊØ¿ël4éB>sßi–Ìý[f`á¿î4YÝízÎ b/îÌÛ+™[2¥*Æùísø:AéAî´æÕýæò%‰G¤ž4kCÆeÐýî-)S²#ßi£òì#ã½úhÊ“ÿ½eDn~t"èéÎÇS²}À•å]Á~£ïçM› ×sÎ!1yΑÙGÎ÷§kLÈooÛ3ìú¯!)G¬®ïç[L?k}Qþ¥�����ÀüE€€–¢Ã0:3œ²dÛ€%Û‡lÙ1dɾQK†“Öx}uxnxÒ÷dY‡'Ë;\YÑ%Òi{fpšSûrå2ò-48Ao]Ç7㈧#ø™˜?H²L2™„ÿaèäöx)�.cnÅÕ ‹´ ²0C4¸Büçû“Þj …—»ïÿ3c&+,žö·Ë¿µ,ÿŸ+žÈ{LVXE¹  » ¸¢8cÅ\ÈVÁþ]ÞXRšÁÛ±OšEËuh‰+4½Áx¯D¼dº Í9ùÀÂà Óh›@÷±]f¾ù[',_ý}0øž:ïhqž´¦d»é?Ü.™¿=6±úý—KèÙ'Œ?NýúfqÜ61ÿèý$tÖaâ>¾[27?(îö}¦œŠfذ×-õço«§½d;îîI}¶è›Î÷ûËŒ¸÷o ÊÆDCb/ê4Á"ö+5ÚL&5’”̽›%óÐv‘QñFbÅ£"]qq6®þæ Å[蔃Å9á�ÿõü]2÷lö?“a‘XD¢¯?OR?»^ÜM¥¥[¼mû$ñ…_šûÖŠ‰\x†4“KV,F’Í-R’ab†±õZßUŽ<>buX^|\[A›Z¼ôÄ6€—Ê JÙ72`ñøÞLAÀJ[Ô’g+ÙÞiDåê‡3¶ö»þv¥áô3������ó�Z‚çÏ#þÀóÞ1KžðÛgËVzǰ-{Í�tpå¿ ›h‘^�z×°kæ¥\3Ýó¤-œˆf$º ð ?0a<¸ÂŸ<ÿÈØA /÷o=¿Í5·Áü`dá¦üûÙ� mÛLA€Eénéÿ,1™*J=ììk±²ÅÁå§âR ­Žý»Š f¬IÛQþ¾b¥üí…¦7Øíe¼²ë¬$|þ±âŽM”ˆ°"ai ÈHÿñö‚×çí’ŒNw?*á§-öA+«®Çó߯ôÏnw×ÀDãHRÜ‘Ý&€Ã¾û1 ?ó8‘Xù¿-sïc’¹ìNñÒ…%¼¡QJoÝcÊ®„Î9RìƒWI-R¼Cܼ€“–×€ci4%Me•ìè3ë$ë±>Íèpÿ…ïí3›È8¡ÿ6 ޹æß‰®¸-ÿtZ{Åui”£ÖLô K:m U¨ûÑçÏ˰H¤›ìÒìÏ������h6,�´`Hd‚ç;·;òÈ^ÛX¶d aùƒþ¸?/¿„‚ÞêXžÈß=âÈ–O6ùÏÙÐëÊáË3²²K$êxâ0�=®8›…GäZY-ì‰` ÏËZxmžaäJ„˜6ÉVd‡¢ÊŒGå‚,ÊXä²XXE-Š*r·ùË\ÁþÝ8^¢I£yq`>Õ¤ 0Lÿ+šÕÓæóƒ(+sí½b÷´‹µrQéÚ£bûS³y»ĽëÑÊÁ錤~w‹„;N{ÕâIו¾ìÎÂàŠ"îc;%õ]/8¹d^æÖ‡%}ÕÝRõõúŸêw·Jh,)ÎQ&]Öݲ[ÜGwÊ\¢ÇR½»”±Ts3X´¢Gw§%¿JJwÜ–•=ŽìÎÈïî3¥CF’ÁÚ§²2,g•KJƒX2S-¶õ¾÷K;›ó³/øÌÉ`�����€ù‹� �³N‡ôÊ~|~h·-÷ï²åÑ}¶ '&J&Ë @'Ò– &DÆ,Ù7æùƒØ:j 1Ȳ‘ލG9…<ù ¹�‹â@ ϳ'‚)ÊN!s«r¹RÏ+·Móß’� ÉeÒÈ žÈÏ®a•iŸ‹Ø¿,Óœ\kix£Ò ÖÒîàRõé>?ä˜r™;oó†Æ$ùãkÄ^Ò%Ö~ËÅ^Ý'ÖÊ^³ìl1eIüXƒìý–™ƒEË{ä—ѶôïÈ+Ïž4y€ûÈbõvˆsü&ÀDˬdn|0(’[fóNqï{\ìƒ'ê$x;ú%}íß WˆsÄz}íâí–Ì_7ù£Æ%RÒWÝ#ÖêÅb÷uU~=Ùà }Möº%þ©å—‚Þ9ý0qNHJæºûLv|á܉6/‹È¸KéŒ4Uñ?Þ K„Ôc}ZÖ#ߊn[x"-_»zH’éÂjò™»·¤äzÚa1yz^¦‹©¸usRvNl7²äðUÍÙ§šý™������ÍF€€Ye†ŠýÿhÙ½²_Ÿ·ôƒÏSÉf­ËùÏÑçªQ@;²:#m‘l)A±r-4 aòà }†W`Qx›¿þÒíLÜ\RUÌåà öïkRÚ{ûÐ5â>´MšÁ9dÌ”sÆ¡âîoKá�¾»s@ÄŸ27>`‚8ì5‹ÅÞ¥8®‰M¯$ÉL„N’8Çnl¯_j2jdn~h¼ÍÛ7,îÖÝ“f±°:ãyñi&8Âð—µ×/—ä_á0Á™»+°HßúPa`A4,‘ O«g¢Lƒ«$x•H.[Š¿|æÖ¿‹}ÞÑ2çÈõzòá%£ôv_§¹uõïÉ °°VôTÍÔÑP 8–štx޳Lo8ñ‘gîO¿‡¬Çú…Aº}ãÚÒàŠ|:G³[ô¶Ùrò~SË.³eoF~tópA›fÄèˆ6ç_Šfæ������@³``V¥2"ÃÙ«ûµlBþ•ý: µÅ5S¾^}©ïíl­q-]¡'ñu€BËÆgüÇúœ~ ;ãÙuDV÷¸Òå(´‡= “­º¬âŒª\`ÅD»¹7þ¸Üm¹uçßæWäÚçSPE>öï&˜é%ê5r6,—Œ?�îmÛ'd-êçðu2SV8$‘ N‘Ì-IÚŸ¤\)•Œ+î¦fÊ\u8';4ëØkŠsô~%ÍΉŠ{Ç&S’#ÇýûöIƒœã6NWdY1“#sýýëy|—xþAeùž®ß}h{ÁsBÇî_\aÖã?Ö×™¹ab=ÞƒÛÄ;ûˆŠ@¬Ž˜„Î:¬yïe=4àXr›sx¶´â2)ìöëe]¶¼ðØvÙ¿Ï1%B4ëįîóÿݘxÓþï¶9fmD¢¡Úö£­ý¹ôÊA›mûõ…äi‡N/Ætð™�����`¾#ÀÀ¬K[²mÀ’Çüç]ÃÖø•ý&Ç?0 [²¸Ã–ž6[ºb–ˆV àypÌ“}#®ìrýÁ 1ƒC¹+ýwë심êvýhÎøW“лŸ41Y@…Wa`®Ü:ËPTº?×±Ï#þG~æ ’úÑUâ ŽICÄ£zÆñ3*RÀ¶Ä9á�±ÙO¼Gž0e+´$…·w¨dQ 6H_}¯¸;$|þ±MI‹b¯^¬QE%íb­êoÓΉ×702ùºÖ.)Ûî¬[Z`¡Ç‘78"Öâ.ñö”Ô3°7,-¿¿½ À¿¼~]OgÙå­‹Êþmh¬V,RÎ’GÞ}^§D`]qKž|PL–w9òå+'ŽÏDZäöÍ)9i¿êÙe6íNËWýç''^ä’NG^{Z‡Ø¤ñ������ê†� �³J¯²Ü>hËVz {e¿Ò+ûuðYž—ú:ݳÍÕþJ:¢®DüÁ‰ »»kÖ•Î^é¯ëÚ:`KoÜ“ÅíþàE6ö^Y™r-ÿù–ŒúS*»=Í�yõ§°íUŒXÏ—ñçç;h…>?mž/2’òŸïæ>/OâaÿùÎÄöËJ¸b™í'3þöSöøóçëûßìý{AÒý¬IY,4+Aø‚S%õ×WðŸúºãzþ‰bW°ŸÑºCŽX¬ÛŸŒ‘„¸í’Ìß·‰ûà¶‚KÎÝû·HfýRS£Ñ¬öXåy…WÜ{à ™TG…uu–i×ui2Œ¡ÑÒív¶•]ÕÕ^ڨϯ`1ÓÊ4 ¸MûÂLã¿Z1Ô¬=\hó¬#cãÁùY6'Þ5‘½eóžtÕ�‹{¶¦ä[× ”Ñ Ž·=¹Ã?4š]A0������æ;,�Ì*½Â_Ë'<1d›AåhÖAg|^Þí˜ÁgÍÄž;q¯xGÇضÆïÌH:Ì×uí¶¤Ï_÷ÆÅ5Ôup|0aËÎ[™jÕõduWZ–´¹ÒélG+dXÈÏ×€‰tÆ~Ò’]#Žÿ|ǾmÞÙ.ÿ9ùÏ×€‹r2æùšÍÁþàüÿš½/HZ[%éJ³h¹ˆÈ…§Kòç7Š·£>åB4 Bøy'ùƒûMJãßû UfÒl©ŸjÀÈD°AæÎMM °˜läÝ+®3PeðßÊTØÊÕ+¨Û�ð<IÕ?ㆮ2Ӽóîêѳ– pX·¨òO°Õ‹œ‚�‹þÑÉßÀIÊo.ØÕWö8ò¦3;¤;Þü,*!·������`ž#ÀÀ¬Ò ûÆ,Ù7d5ÈÑR zuîÊþx¤p€B¯ .¶M½ò¤?é ÄH65¶®k¯?^¬wâyšyÀ Ž÷‡d³?@Þ?¬·;–™HûÛ^Åöÿ|ÿ}Ý5ê˜à‚âçk�†e¥%êÿË ¹žogƒ3Æû×ìý{Arfa4¯=*á"é_ß"î¦2ÖŠ^‰<çDñw©—´–ÄØÙ?±ýWˆshù€ «·Cœ#6Húš¿M4î”É7PþøöÒSI÷ú‡+ÏÛW8Ïj‹TY׈XeÞÃâõmAÊ—r443IÙõ”ËX2IŽ9©Ç’Žå—5ZINK„Lg}ëúJn¥*¯(Q4/äTä¹ìÞ1ùÅ_ 3±lX’7œÙ!m‘Ù � ÍÁä-������ÀT``VéxÜpÒ’áTáU®zdWÌ¿²¿§Ë 'Ü‚«&3f½Áºó׫erƒûš}!‘œÖLÚ¦ÅÝŠ%x>ÏŸÊó›½/DV4,ÞhRšÍ ‡$üœ$ý—»$s×£2öÆ:ÿ˜úHIæïÛ'¶Ó?"ΓVWÌá !xᯇZb$È×Û5P~=SÌèámÙã4ûŸ]¬0 Áo[ẬîöIוyh«„–÷”´»m+l°l±:²e@zÛƒ÷>=¥”yä -+]Oæáí…«ñß#«§|9‘¹J¥z‹…µÿZØQ`ÙˆRy[îx<)+{J3Öh‰-÷‘oEwiÿ U‘~zǨ\qÿXAûKCòú3:$š½ì*±0),������0¿q À¬ÒA‚T&˜òÓ[Û¶e®ò×R “ÕóÖ ;5c‚&8y ºÙõ&‹Ö«m:®™ÆÒš¡Þ2Ә߮m:/5ÉXÏçùSy~³÷ï)2‹±¢¶-¡³礃dªœ£÷“ð33Á õf­XTðØÝ5 ©ßß&2š(\ÐßA3wo6S>{Qgár…™Ü{6‹»»0È"sóCå³ELÂK¥%uÅ=…Yü×”¾ü.­Røšö[6éºÜ;6‰»³ð5yÛö–þm«‹ ö ’°7./˜Ÿ¹íaS6¥`=þßåÞþpA›uÀŠ™vÅ/³Ž¦ÇR¼þ1“*þa3YüYÆßׯnë«Dƒ+NÚPDô§{òàŽÂÔi¿3ÿáM#2”(|MG®—,÷Ýë‡K‚+Y–7ž9»ÁªÙŸ9������Ðld°�0o騕5»ã @ð¬XýJkLïø_¦N>H¬Î¸¤/»³$0 ÜòΉ™ç4ŠsÈjÉ\¯xƒ°î}[$ñà6±–v¥1ÒqµŒÈp¢ôùGo(xl¯[*™m{Ç{þsS?¼JìõËüuEÅ}¢_¼í{Åòè½äÔêA¸÷>&ɽƒâì¿Â<Î<¸U¼ýËX‹:Ä^¹hÒõh°FúÇ׈ý¤Õbuw˜ ‰Ì½›¥8Å‹sØÚ‚Ç¡c7Jò­‘J‰”$ýõ8G¬«§]¼=þzîܤ©òVb‹sìþ2SV[aªo÷ ¤¯¼Çü½b¸Jš©ÇR[DCZ+ƒÅ¾Wny4)W=˜Á„'‡¯ ËYEe¿¾Æý,:÷I1³ÍÑlùtÆ“ÿ¼|PŽ\‘µ‹Sä¶ÇR²s°ð½:n}¤ ƒ…„|ýê!¹{áq¦ñwZäÇ·ŒT| íþüçÝø¬+Ág������Ì_X�˜6ËÝõ¼™]>¯Äa'˜t|+7ÆåúwiÏÔnײð•®Ö‹Ou]6“w)¿·Þü ú¸+êIwÌ“þ„5~õjÌñ¤+æJ·?/<ÉEÉ<ŸçOåùÍÞ¿§ËšË‘ñˆX¶-ž;»µRÌÀ½ÿZÒ¿½µ äDáB¶„Ï;JìƒVKCù;EøÇKêÿ®7ã2®Éê0Y¯m²Zìý ³:8‡¯÷¶¿O¤Ý‚ò\a³¿dn¸_j~™«‹g‚3öIz{…ò"þ¾:÷¨ªÑDö†eâ>ò„dþº©ò2ë—ˆ}paЂœ„N;TÒWÝ=Ñ8š”ÌT\OèŒCÅîë’™²×- þ®¼G3þû¼®.‰41ÀB!Ýë­#dßÉÌrª{z`GZ®ý{”çÈÿêrûcI3­YäÈ©ûGå¸uQ‰ÖùRo›-/?¹]þëê¡ñmë­¾–;/ÿœ•=Ž\x|a@Ķ}™’à ¥oï­N^*iQ»-Ï;ZJ?kýÌ�����€ùŒ� �³*dëU•ž´‡Íx™”ÞŽyþ‰zW"ŽSqÐ[Ç1Æ\õ Æ4uкÍ_g{Ø3÷sâ!OVw¥ƒÆþ$W:8¾Öo_Ý•‘¶På žÏó§òüfïß V{ÔCGe¶9û/û‚S$ù‹Í }>-Gzæñf¿¬½~Ñ)’úó]&»DU!Çde0™5ŠÆG­Ž¸8ç#™ßÜj²W”ðUCÏ>~Ê%B¬®6qŽ\/©ßÞ^>ó‡ÿšÂþv«e¯PÎéOÏÏ+ý­ÌzúñåŸ{ì~æ€Ê\vgù¿/÷zõ3<÷ˆºÈh† çÄË¥x»ƒìÍ:ÀÛ£Ò(]1KöŽÌN€…f«¸áá”ÉV±wdò ¬ÇödäG{Fäg·˜ ‹S7Ö÷=9leXÞúäNSÞ£tò×rìÚˆ¼è¸6‰:s+XA?k������`¾#À@ãyb2]”»J^3I÷Æ<é‰{2j®Ô–I¦=30ñÂf€ÁÖ±¶ñ«õõjMë÷Ÿw ¹fà$™WK=âxÒÖɼŽúƒßKÚt`#mƲäšy@ÇûÚ2™d€çóü©<¿Ùûw>“]fv/o-Ïáµ@€…ÒÀ†È…§Kêg7L´Ç$üÜM¶„¦¾–¥=浸î÷á'Äݶ[<- 2–Kîc‘ üÆÚ¥b´ÂRTâì·\ì—i2,¸îô×3æïˆa±W-’Љš¿-30õÏ@Ë`DºÚ%sÓ’Ù²Çßñýc«³Í”%qŽÙ Vw{Më±ÂŽ„_xЏ·þ]2÷=.^ÿˆ°b/îç°uþß·rÒ,Î!kÄY·L2Û,™¿o÷î°aiV Ù¸\œ'­­{– h±—tIæŽMâîØ”"‰„Äêí¶ß“fÐc¨QzâvÕà†º)úˆ?ý‡™*ͤ™.t*1Ã>õ€¥!ùȳºä¦G’r×Ö” êNxz(™÷iÿ¾œ°!"ëÏÍŸhú7�������ó�ê¢b¹SÁOGŒíÒR:`½¬Ã“]þàËžQG³ã:Æ´ÛXÎdÇdRþàrgÌOÛ­ ƒþà³.³½?c«ó³×ërKÛƒuGó¼Ã¶¿“5À“Eq×_o¶Ý¤ÖÌ:8®ËTÂóyþTžßìý;GE×uÍdYå#0ætY"fpX#T&É>ÐLš™ ò¢Ó$ùóLº’ðóN««qØ“¿-±ÔL3^Õ¢ sdÅùΡkÍ4åõ.ï‘гO˜ñ—RK³pœx ™¦¥-"ÎqÍ4Uág/Óeo\a¦Yã¿o °èm·å±½–(4>â«Ö^M´H{Ô’ëNÈ=[SRKųzü!Û’Sümë4UúºÿóÂ^iEúwég ������ÌwX�h˜\ÐEÆEÎd2âø½Åƒº±°ÈòNWöŽY²eÀ“1Ë”OÐzí#&þk2¤ëÕûC w<]v¬%tàY§‘¤g¶¥�´,CWÔ“•]®,÷ cy=Îúƒã:uM#û7ÏçùSy~³÷ïœà¸ËÇ¿ùLQ‰ÝÝ&îîAiíQ _pªXZú"V߬@=é±Óh}¶l˜Ý�(í]•ÓˆÊ꞉À³ÃW…MÉŽ›7%åꇲg¸IÙ6æýŒ�����€…€� � åú½étZR™´ØejÉÇCž¬èJ¹²i¯-ûÆt ÙòœEG‰5“½ì̘ÁX¶³Åf½nPjA¯ì×e½²4ì/Óá>/i÷dmë¯Û5Û�fÃlíßž9î2æØ³lG«§C¬=Cå3éÌ+Ê×,´6 ¾Òc§Ñ–t:òÄ Ûðã3&+ÜÆšEŽÉVqÜúÈx[±î¸-ç“§“ŸH›ò }<)ÅI7‚×?ÿÖ¦JßwýŒ�����€…€3ÿ�Êu3’H&$‘ˆH(Ç)<¯Yý;í ÔÁ†^WþÀó–~[ú³WúkJñtRÌü“Ñ+ûuð¹;æÉªn׬KשWú/€‹÷Ñ¢fkÿÖ¬1‰„wIqBaYB¶)aáµR  Åé1c¢»LË(-ël^‹ñl£²º·öíkZ2Sÿhœ¬5ÒÏ6L|������,�LI®ìGµer´DÁÈȨ„C!‰E£þ(Ká`¯.©½þÀñáË3ëÎxöÄ•þ5e¯ì×Áç£WddãbWzbÁà3ñ˜-³µÇݘ9ö¢ÑØÄë©!Úh.—±wŠ58*ž¦ý�0)+2ÇL³,ïvdïˆ+‰tã²X¬_äÈa«âr̺pÅlµÊeµ8û ˜Ü½-e²Z T4d™Ï������X(°�ÐPZ¦`xhDÛ–ÎÎòiÈu¤Íx^Ù¥\MYþÀˆÈÎaKüAè„?VšÌX’qe<]·Zë sØñ$æ÷dÙ² ze¿>¯ìòüuxW`ÖÍÆþ­¥A†‡†eÈŸ:;»dÁÐr}]âmÝ#�&§ÇJ3S<i¿¶Òˆdwã ^{zýËX~_|øª°™PJ?S›/[������X@°�ÐP©TZ4e¿'}}‹Mö‹rWÈëÉy0^æDWgdM+›÷Ù²uÀ–þ@ôÞQ‘᤿¾ìÿ€ºÝëè{²´Ã“]®¬í Ê&è•ýº.Nø£U4sÿÖc,•J™ãnПú–ôÉBbuÆÅîíwï µ„Ÿy¼Ôƒ½¸K¢ÿòlÁôé1¢ÇJ³õ¶Û2”tdç`sJ… ±–t:æ3������,�ÌHµ’!nÆ•‘‘±ýÑàѱ1iO¶I8òÛEëÑlÞZ¡=âIgÔ`î²dߨå@O”T0ÐþrZzA —wƒÐ]QÊ‚ õ4kÿv]×5ŽŽÉðð°;ꃵ—ô™/¬¥Ýb%ÅM €BV<bŽ‘Ù²¦×‘‘¤+Éƕ AãµûÿŽég ������,4X�¨¨ZðDµåÍcñ|Óiñzú$‹JGG»D"‘òëÈþ§=ìɪnW·‹l\ <—Ppl ÚÖúßžÄüÁêxˆà ´¶FïßZdhxHýcnÌ{žç–QL5¨b.aXË{E¶ì/Ù¸rÀ\cEBÁ±1ËÖ/ ÉC;Ó’Hd1EC–ù �����€…ˆ3c�bb@Ö2WÕ'IS² ‹I8ÇqL‹r·Úvtò¤+ª- À`þhÄþ­Mzœ%¤¿ПücnÌoó·g[æ8›™*&£ɲb‘x[v‹¤)G�HÈË?&̱1Ë¢aK6ô…ä¡iI»ü?—„ìà³ÓÏ������Xˆ(š  !t0W(BŽNޤÓ)Ù×ß/{÷î5¥ R©”0sAi”lÈÞ={¥_¿Éfa;Äd/È� eÅÂb¯ZÜÊÀlÒcÀ š§E´E,Ù¸4d²!`nÐÏJ?3ýì������€…Š� �SVë@­.ç8! …Âz‰½ŒŽÉÐа ™Ûd")™LfJeH�LÐcG¡D2iŽ©ÁÁàØMè!'‘pX"‘ð”ŽÙùF”-XŽGXˆtß·Z,¸"ÇY, I{”ûV§Ÿ‘~VW������`¡ã’N�3¦ƒ²¹ ‰Üý ¸Â‘h,*ÑhDÆAw“ô‚ûûûM™É>' J†,Ä+ìéÊW$MæŠaÙ»·ß[šÉ"ÜFM€Eþñ•œ-”cN¯Þ·Ö.oG¿¸{‡X(ìÞ±–vK+ÓR- Ëc{3²sr>­hI§#kz������@€€ÉXD"iïh—ѱ„xnÆ”2“ápØ^h‘Œß‡ÆËŠäÊ”š\ð’Þæ&=Žô6•JK"™‘‘Q1Ç–ÎÓcF+ÚÛÛ%‰À”¥Ív<"Þ®ñ’iæ+TÔ×%Vg\æ ÀïˆX²µ?#‰4™­Z–YÙíHo;I�����€,�L*?;ÅTž£S(2¼ÝÝÝþ�ðˆŒúS°.Ë\y?:6*þp±DüâP8,aXŸãèäßw ¶°Ç× ,4A®̸æ¸É¤Ó’Ngü)-©tJ’É” ¬Ðyzléò¨ÔÖÞ&]þ±ok3ÇU~ÐÒTÌ·cOœ­Ž˜x»ÅÛ3D‰"Ì+æ8_Ô!ÖâN} säw·Ù²½?#O ºŸ³D÷£e¶,ïvÄæë������P€� �ÓRxQî±I´ùƒ»===2<4$ÉDÒÌÓÁb½Ê^¯¾·í¤¹ïøƒÅIPØñ'Û^¹LÀBTœ¹ÂÕ@ Íãߦ3Ù@ ÿX ²Z¸æ9NÈ‘ÎÎNY´¨WÚÛÛÊf°¨öx^Ó~E¯îïéo߸ý#â¿™ÌYþ1ow·™}ZBs;Û€è¯ìqLY -²kÈïë\-š!ä¿ù}¶yïÃT������Ê"À@Cäk£Ñ¨,^¼H†‡‡eppÐ ç ýÁâdFnx¡Wâçßæ—…&`¤GN6ð(w«“*<6,3E#éíí•E‹zÌ1H Rþ@´Z8þä ŽšI†µœ‘+@«³´hYYæP)Zé�¿Zè´wØ•}£® Œy’!Ø¢®Û’®˜%=q›R ������@ °�P7ùY,ò,z{{dhhXöìÙc2YäÊøCÃf™\�E*•Ÿ‚«òSAI"À Q.ŒNápØ”úÐÛÜ44‘Ër!¦½£³Ãd¯èî.`A°E©‚AêѤxcI‘dZ¼DJü]‘´«}šÊ«:iV -› ‹DBbÅ""ñˆ,:ðŸüJx2’teÔ?4ÇR®I>£‡§Æ]p|–gõ²»Qȉ…m‰û»R[Ä–Ž(ÿ�������SA€€ªŠËTkÏŸ¯Ãñx›ì]Ò×g®¯O$f ˜q >‚ãÉõ7[bñ˜,Y²Äd°Ð=åʃ«4Ábø×Vvðš¡G µh@@G4W¿‚:�������š‹� �uUt‘+eÐÙÙ)Ë–/Óëìe÷®]¦,H:ñÓÓÓ¡ÇšfxÑcI¯ÞŽD£Ò·x±,]ºÄsšÍ¢Ù+���������¦‡QM�3RK ‹ÅüAߥÚbƒÄu]I¥2bÛZÁbà¨QîXÉd\I&ƒR:ápDº:;eùŠ•²dIŸ9æò—­¶.���������LŽ� �5©H1Ù²ú8 IGG‡ ªH§ÓæñÐР¿\ZR©¤ßfIÚ$vuò—É=_o§²m`>Éß÷õV ¦H$RþñâfÛD"‘¨´ûÇW_ßY²d±9Öô¹ÅÁS ¦ ð�������� �f¬Ö�]®­­M–/_f®®ß½{· ôËÈðˆ?XœÎ5%\4öƃ+tPXˆôÐ;A …cZd'íþ±‘ •bñ6éîê–Å}}²hQlÅkŽ ˆ�������� vX�¨ÙL³Xèãp8,]]]æV‡£Ñˆì í“ÑÑ‘ “E&#’we~l + ‹%–îöLai°E¶Õ ûÇOÈ?ñx»ôööJOOÛã?ž® {��������@}` .Ê_T ²ÐÛh4*‹õJ[[Lº»{dxxX†‡exdDFGÇ$•LJ*/‰¿ª…`>ËmÐcÅqBbÛ–„C! G¢GM&˜ŽŽ.ioo÷§6“&‰L)¸‚ ��������€©!ÀÀ”L–Å¢Ö å8޹Ú^-ÚÚÚ¥³³C†‡;eddD‰„¤R)I§Ó&¸bz%BˆÂ@+šzPƒ–ÑãE3Vhæ—à˜i¬Ð6]Ƭ½Æ@ŠÉ‚+¼���������(� �uUKE~›Þæˆõ | ´Ð€Š DHXQ˜½‚À ÌùA¹ûzŒè}½Õ` 4ð¢RÖŠ©´�������� :,�LÙdY,*ͯԖk×Ac ´È7•` /0M%ءҲSi¯¶=‚/���������*#À@ÓT ̘¬=§Z�ئÁ±���������ÐX�˜–Z²X¨rY+&k/7¯xþdËsU­“-7Õ,S]��������`!#ÀÀ´U ²˜l™JÕæ•[˜ïfRÚƒà ��������€ú ÀÀŒÌ$È"7O‘µ˜Plµ®‡à ��������€Ú``Æfd‘›¯fšµ‚� Ì3 j¨WàÁ���������µ#À@]Ôd¡j ´¨¶\-Ïæ“zeµ˜êr���������` nj ²È-§¦“­‚ X¦ü0•ç\��������0uX�¨«Zƒ,r˪©MLe`˜` ´’F5Lu½W���������L�ên*A¹åsêÁ@2æ«éîÛ���������ÓG€€†˜NvŠüçå…˜y`���������3G€€†šn EñóË!øóI#‚ ¬���������¨,�4ÅL-&['€B���������õG€€¦jD €����������C€€Y‘?L°0}U���������4�f]ñ�1@eT���������Ì,�´œJÈ^`!!�������� µ``Î`À���������Àl±������������“"À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª À�����������  ,������������ª � ©\וT*%étZ2™Œyœ›Ð8¶mOŽãH(’p8lóýK€ãh¾fõ?ßÀÜG §U¿Ð�Õqþ¡9è� 5`�M ?8’ɤ™ôGš¯Ò<ýq‰D̤?P€¹†þ¥Ç;гÑÿp|sý€œ¹ðû…þ(óÍG�­ÉªÃrV™û“ÝZç&;ï679Ù6§hÒy]z›L¦®�h!žçÉØØ˜™øÑ17è“X,f&˪õŸH ùè_fŽã˜ž¹Ðÿp|­þ@Î|üýBÿ…‚ó­þÀ\‰„Oño4rl {›)š¼ì­›7yy·Å“Tx<Ùmñýb“Í3°�€:Ó###2::*˜»âñ¸´µµñÃ-…þ¥18ÞêæjÿÃñ 4ý€œ…òû…þóçæ&ú#�­Ž�‹òó°�° éýñ¡?B0÷éýQ¢?N€ÙFÿÒXï@es½ÿáøš‡þ@ÎBûýBÿù„ósý€V6_,B�˜±t:-ÃÃæ!æý!©Ÿ«Ö–loo—Pˆ6Ñ|ô/ÍÁñ”š/ýÇ7Ðxô�rêïúÌœ˜è� ñÈ`�3¤5‡††ó_GG‡©g4 ýËìáxÇB7ŸûŽo ¾è/�äðûeýæŽßù‹þ@+!ƒ�ÀDS‹páК™LÆDFÿ2»8Þ±Í÷þ‡ã¨ú �9ü~)Dÿ¹„ãw~£?€ú#À�¦ippP‰„`aÑœ®ëJgg§�BÿÒ8Þ±-”þ‡ã˜9ú �9ü~)þsÇïÂ@�õE€�LÃÀÀ€©c‡…Ixj=î®.êþ¥µp¼c!YhýÇ70}ô�røý29ú´2Žß……þ�êÇ�À”hd7?> û€î @=Ñ¿´&Žw, µÿáø¦Žþ@¿_jCÿVÄñ»0Ñ@}`�S 5 I›‡ÝtŸ�êþ¥µq¼c>[èýÇ7P;ú ú ‡ß/SCÿVÂñ»°ÑÀÌ`�53õê€|ºOè¾ÌýËÜÀñŽùˆþ'Àñ TG ¿�見þ­€ãŠþ�f†� �¨A:–¡¡!ÊÑ}C÷`:è_æŽwÌ'ô?…8¾Êè/ Ñ_`!£?˜úÌ&Ž_ä£?€é#À�j@Ú4TÃ>‚ébß™{øÌ0_°/—â=ÊãØ(Å{‚…Š}æx1[Ø÷PŒ}�¦‡� �¨BS¦¥R)&£û)1Uô/sÇ;æúŸò8¾RôåÑ_`!¢?¨úÌŽ_”C�Ó�@EžçÉÈȈ�µÐ}%‹‰eYTÓJý‹¦„üÓŸþ,þóå²eËq]WÖ®]#çž{¶<å)O–P¨5¾2þä'ÿO~ðƒÿö_ŸÈ3žñ4yã_/³…ãsY#ûíO~ÿû?Èå—_)>ºyÆu}õ8[¿~œuÖ™ò´§=µ)ýÇ70¡ý…žÈÿÝï~/W\q•lÞüXÝëëñ»nÝZ¿ß8Ãï7Γp8,B…„ó#õEÿfâøÅdè�`êjí1­çY5ÜZç&;ï679Ù6§hÒy]z›L¦®�¨3M“F/¦"K{{»�Õ´Rÿò™Ï|A®¼òʲó<ð�ùàß/½½=2›FFFå _f‚?r.¹ä ²ß~d¶p¼c®jTÿ³gÏùÈG>.?üˆ4Âþûï'þðdÑ¢EÒhß@ ÞýÅ®]»M?±iÓ&i† 6˜~£¯o±4 ý ÎÔýš…ãÕÐh–H$|Š£'x²·™¢ÉËÞºy“—w[<I…Ç“Ýß/6Ù<ƒ!�PFwóãS¥ûŒî;ÀdZ­¹é¦+Î{àåcû„d2™-<òˆ¼ÿý,®PúÐGåæ›o‘ÙÂñ޹¨Qýf®hdp…úûßöû£3Ûj4Žo þý…f®hfp…Òïýè'šþ çGƒþÍÀñ‹ZÐÀÔP"�*¨wªÚJöîÝ'—\riÙAÂSO=Y.ºè=“>ÿÁ’Ï}î òøã[Jæ½á ¯•g>óRF²_ýrÝu×›õìݻǴ÷ôôÊŠË儎—SN9©)WŒÎºïhä7PI³ú—Zyä‘rà •ƒ,´ŸùÃþ$OúÓ¤‰„?ð ˜ ÉÎ;å‰'vȶm[åŽ;î4Aå~èïÛ·Ï šh9“ãŽ;Ö¤_ºt©™rW^D£‘†¦çxÇ\Ó¨þGË‚42¸"硇þ.üãe ëòq|c¡«w¡eAš\‘£AÚG=ëYÏ”F¡¿À|׬ß/Dy×]wË7Þ,÷Þ{¯ù¾ßß?`Ž/ͨ·fÍj9ñÄýéøys¥5ý­Yǯ–þúÊW¾fÎ1ûÒ—¾èÿ^_'õ´cÇN¹úêkÌùÔ;vøç2÷ú¿ÿcþ¹Ë^³-=yüñÇ™ÒS¥˜Ü~ûfý=ô°ìÞ½Ûœ·èéé–¾¾>9úè£üõŸlJNæ²Ëþ"_|IA›mÛòË_þTªÑó"ïxÇ¿š¿«Ø<_^ùÊ—K½Ñ@í°�€ šñD4ÿó?¿dNL•^Éý“ŸüŸüèG?žö•œ:`ù§?]&ßúÖwÍ f±ÑÑmþ�ç6¹í¶Ûå›ßü–<ïyÏ“¿øÿKTP?HPM3OPþþ÷ôOt\éh<jÚôÀ“Ÿ|–œwÞ¹ _ßõ®‘¿üå ¿_ɘ“êK_úªbó¦ñu]}õÕuÐÔõk¸o_¿Ì„Öoש’žžyÛÛÞl‚ÅêãsM£úŸË//,3¤ƒo~óëgœùë_ÿF¾úÕ¯´iE€Ðxõî/tà%Ÿz¼å-o’Å‹ëÄ­eH.½ôËrË-·Ž·]yåÕX�3Ьó#znbëÖ­%óͤßù¯½öz\ñÒ—^(Ï|æÓÅq™Ëè?Ðh>~‡††ýó_1ÁÍ Ïø#ùÅ/~U’i3•2ç7µ¯Ð×£ç^õª—ËSžòd±,«¦õßsÏßÌßSîÃλÌtï½÷™×pÚi§Êk^ó*tQO###ò‘|¢lpÅé§Ÿ&¯xÅ?J#Ð@í°�€24…l#ÓᎎÉ׿þMùãÿ$Ó±mÛvùÜç.–ûî»O¦K4>ÿù‹KNtV¢W—ÿä'ÿ+·Þz«|â“ÎÎAyºïè>ÔÈ«æ1w5ºÉÙ³gOÙtý÷Ýw¿™´ÿÑšä:ø©WtV¾ùÍo(°xä‘G¥Þ4ˆcúÁšÑ¢¶$z回 iD€Ç;æ’Fö?›7o.x\à í¿t ¥Ø£Ö¿?*‡ã Y#ú‹Ç+¨xó›ßX÷à Õ×·XÞò–7Ê+_ùšñ¶GÝ,Dù¬¿_ôüˆ–ÖJ¯×çÜyçÝrÑEè?ÐH>~ï¸ãùÂ.‘Ý»÷H3 ÈûÞ÷Áñ HªÑsúúî¾ûoòÖ·¾Éd˜Ìoû{“…£ÖR×\s­ÿüUþíß>&û￟ԃ~^ÿþïŸ)û›çIO:DÞñŽ®9Xd:Û¦?€ÚØ�(‘L&¥Q4Êù­o}û´ƒ+ôyo{ÛÛg\¡.½ô+5WäÓúçþðGM€*kä>„¹­û†f®(\‘Oe-¯Q)ŽëžPhD-NÇ©í«¨ž0}ÊSÎ*hó<K^ð‚ç×|uE#¯lãxÇ\ÑÈ}UƒGóÍ4¸B¯„ûÔ§>]ö57³†4Ç7ªFìûÅý„B4Jñ•¤Íè7è/0_5zßþÎw¾?¥àŠ|7Þx£ Úžëè?Ð(Ú·tþk_û†|ðƒmZp…fWxßû>TspE¾ {ïw&]æÏ¾|JÁ9š1ãýïÿ )YR_ýê™LÂÅV­Zé¿ßïkxðý�Ô† �PF#¿L~þó_”íÛ·´E"ikk3‘Õ“Ñ-—\ò¥’v½òK¯¯5*ý¦›n®à±téY½zµØ¶%[¶l5Ù2Š=ðÀƒò›ßü¶¡ivç:݇æKMXÔW3~¬jñÉ‚+r4Èâø“<ãç´kÊK.¹´ mãÆý¥ÞþùŸßbNˆj߉' "‘¨tuu™A—5kVÉ~ûí/Ç{´iÓ²�9zÁ†¦ú|ñ‹_hN><øàƒæêÔ]»vÉÀÀ ÿ>'Ìr‰DÒ ²hFŽFáxÇ\1WN–içg?ûù²ßAšã '×§ŽþóU#ûƒÇ{\~úÓŸ•´ëUæÇw¬}ô‘ÒÛÛ+ÃÃ#ò׿Þi®/¾ØCNŸóœgÊúõëe*Þýî÷š `r´l‘fø› ôh”F¿ZªçW¿úuIû²eKå‰'vH#üà?”M›6•´k6‡µkךm' ³L¹RÌ¿üå¯M©ýöÛP2OÏIh`C¹àŠŽŽSjUÑ;wÊ#l*YNƒÃ¿þõoÈûß‘ÌÄOúsùÝïþPÒÞÝÝ%ùȇ¤³³Sþ�jC€�ÑëMYø%\¿Ø¿ë]ïï~÷æê‹IŸYæ‹þé§Ÿjj¿úÕ¯3i2«Ñ«Õ5"»XOO·¼ímo)I¡×]w›AŽâˆtýaB€Eeºé¾T-ý –Æ÷/ü@¥Çµ¦áVZ*Cƒ¬r.¿üŠ‚� º¸è¢˜šŸùÎ<ót©·£Ž:Ê? ñUÓ·½ç=ï3mŸþô'§”î²­-.§vŠ™rf²¾éàxÇ\Ьþ§~øÃÿ‘[n¹UZÇ7¢¹Ô_´ú ÌGî.¿üÊ’€‰x<&ûØGäC.h?ï¼sMYÃ÷¿ÿC%¯éºën˜r€E+¡ÿ@#4òø->?©#_ò’ å¸ãŽ‘·¿ýRoz1…ž‡,vÐAš²`6LMèyÏ?ýéÏò_ÿõuSî8Gß_ÿú·þ¹Ï7—¬ç›ßüvI¶+=_õªWÈ3Ÿùô‚¬zÑœ^<÷·¿Ý[°üõ×ß(»vížv†®ë¯¿A¾óï•´ëEyüàûeÅŠåÒ ôG�P,� ˆ¦¹kð{îsŸ-¯xÅ?N«^¨f¼xýë_+gŸýä)=ï†n’;w´Åb1ùä'?!k×®)YþðÓw¿ûe‚2,“5C3PžîKÑhT€œfõ/Å5Îõ„C.]¿ZäX×$¿ì²?—W|ðArÎ9gK£è ¹“zµIþÉ‘VX_-8ÞÑêšÕÿÌ”öO?ùÉÿ´é�Kþ¦ÍÆñ…f®ô­ˆþóM£ûƒrW£ŸþÓJ‚+r;ìP9ñÄãM@E¾âssýê­Yÿž¯\¹RÞõ®‘< ¦LšÓñ»ßý¾$Kƒª>þñš‹.òé9ÖóÏ?Ï”Ñóùöì)-g²wï>¹öÚëJÚÿùŸßZöœëòåËåCú€|à*yyä‘iXh¦àÏ~ö %£9èEyzN¦™è� :,� ˆF:7š–ôxÇ;Þ.Gy„L‡žlxç;ÿÅÿR¿L¦ªøÇ…Ò@rÁ9zãK_ºD05º/ñƒùšÑ¿ 36äÿHwÝÂ+Xг;¬YSØhóá°¡W/ÜzëÄ•êzÕúL"ê½¾Zp¼£Õ5¯ÿ™¾mÛ¶Éç>wqAŸÕÓÓ#ï}ï¿Ê+^ñj™-ßXhæBѪè/0ß4º?¸è¢õ·Qøû$žütµ^ R¬££Mæ:úÔ[3þ=êSϕ׽îŸÊ—õ¢ƒýW\qeIûk_ûê’àŠ|Ï{ÞsÌTÍ_þryI¦C}Ò¤´ut´ËÅN¦£øÜŠ–9ýØÇþÍ”7)öêW¿RN9å$i6ú#�¨Ž� �(Òèt¸§žzŠ\pÁ Ì—ñ©r[^ö²—È‹_üÂi vêߦuK‹é"¥uöôGË7Þl®j׫ص1ÑôûúÚg2ÈúÚ×¾¡¤žºž<ùÁ¾;i}?MõÏ=+iÿêW¿$«W¯2÷/¹äKòÇ?þ©ìóu�Y׿té9昣å™Ï|Æ´SöM©•Q¬Yûĺuëä¾û&®öþâ/•7¼áu¢%оò•¯-»¶àñÓžöT“óÁ’O<Á”itjÈ[n¹­àþ _xÌD½×W Žw´ºVßGõ;ȧ>õåÎ4Õð{Þón˜:›8¾±Ð°ÏOïæ›FïÓšv??õ~5z>AÓð;öØce®£ÿ@½5rŸêìì”|à"9餥ÑôÜÄÐPaId=¿—»hmïÞ½ò‡?\æŸï¼Ãï#žt:e‚´µ|ÈÙg?Ežô¤C&]ÿm·ÝQÒöÔ§žcnµÊ­·Þ&W_}É2100`Jv¬ZµZŽ?þX9眧Lz>³œüó+T¡Áûöí+YNÏ]êq³þ�ª#À�Чc«·W¾òå2]½½½ò’—¼X¦Kƒ&ŠÓ×éî¸ã¯ò…/|Qvï.L—§?ôŠRM—§é÷Þÿþ÷ÖµîŸÖC¼æšëL=Õr4’»¸®áT颡¡!3iºB­¹øîw¿Ã 7R£÷%Ì=ÍÚ'ôJ‹ü�‹Ûo¿C^ÿú7•]¶¸ô‡þØÁ ž'Í¢ƒ©÷Ýwÿx©$½¯mS=IѨõÕŠã­n¶öQÍ"óŸÿùeóo±–+:á„ãË.wñÅ—–¤þ§z¥~ø¡2Û8¾±Ð°ÏOïæ›VاõÆÎ;åÆo‘ÿýßÿg‚Áóé�ïQG)sýê­‘ûÔqÇ#Í¢ Å´œ±úÅ/~%ßùÎ÷JÎujIãM›•?üáOrúé§šrå²lèo”‡z¨¤ý°Ã“íÛ·Ëg?{qÁ¹•-KtÇwÈ~ôSÂãØc–ZéÅs9—^úå²eUô|¥f™-ôG�P�Pd>‰|øá‡KÚ–,Yb?>ñ‰OUM¨õQÿå_Þ)ûØGLmÅz¹üò+*X\yåUæO=iÆÿ÷ÏÈ7¾ñµ†^ËkÖ>qî¹gËŸÿü\0™ƒ>Ø\q1›4øC¯Ž8âˆÃͱ~×]wûm5YsZa}µâxG«›­}T3Låjk†ŠO}ê%5„õÄèUW]UÐvÆgȳŸý,ißXhØç§÷óÍlíÓ7Üp£9G1ÍTùœç<K^ñЬ¸ÌŽ;ÍEåÜ{oá ©^ØQéâ½(¥¯¯O‰þõ6_ö©G) @Ðs™ßÿþäÇ?þUŸõÕ×ÊæÍ˧?ýÉ’lÂO<±£ ƒžÒ¾Eß;ͦ›ûSÉàà |ô£—7¾ñõrþùçI-lÛ1·š…÷òËKKŸpÀFù×}gÃ3‰N†þ�ª#À�ŠÌç/‘{÷–¦œÓ(ï‹/¾¤æÚŒš–ï3Ÿùœ|ñ‹_˜´Öa5Ë—/7ÑàJËè)ú©Øå—O ¸¬ZµR¶lÙ*µ¸ä’/Œ—óšï•¯ýÛãi÷ôïÖÀŽ .x¾4 ?HP¬Yû„foøàßgNJŸ8Ì9äƒMJOMÁŸ“»Ò|÷îÝãëéîî6Ë>ùÉg6$ëK®œÇ±Çê0A@„¦àœn@D½×W+Žw´ºFï£ZòK³Råä2ÇäŸÔ{ÿíßþ]¾ð…ÏŒRÜ}÷=òío·`]ëׯ“·½íMë*ÜVí©Äëã ûüôñÞa¾iÅ}ZH5SK˜—;,öÛßþNþßÿû©ÔB¿oüë¿^TvÞ?üÃËä _(Dÿz›/ûT¹s™šuâÖ[o—Z=úè£ò¥/}Ù”ÌW®4‡þÖ¸ä’K«Wäèûüµ¯}Ý”$ÑËÕè9=úõ¯³ìü3Ï<C¢Ñ¨Ì&ú#�¨nöÂà��M7<<RÒ¦©ö4už:唓䳟ý´üô§?‘ï}ï[þàÆ›eÑ¢Ò Z÷ôþçd&–-[:>¸¢W™_qEiÔöæÍ™¬9‡rˆÔJuºººÌ¤Û:óÌ3å oxmÁ2;vì`¾ÒÀ½Bãío›©Mª%†tÒûÿò/o3ót™|ùÁJ¯ôñ5×\+ÿø'å½ï}Í'j¡Çþm·'E4Åh®v²DL'sM½× v]]…ýIîߨW¿úæ*°­‘¬u†5›”ö'Ÿþôg ‚<õßo-G–ŸÂW¯,Ë×ÓÓ-��`aÒ‹>~ÿû?ÊÿýßOË^Ù`~)=—©Vèo|½(ä/x¾|ík_–Ÿýìåë_ÿŠ)­œ+šO3YÜtÓÍU×L&Í…jÆ æâ•Ÿüä‡òãÿ·|ä#*›ÑWÏhPF-lÛ’Ïþ‹æb°r~ô£×õ¼ � 1°�€dll´â¼ .x¼ï}ï5i»#‘ˆ ¬xêSÏ•‹/þ¬,YRš ó÷¿ÿSIéÐ,G}Ôøã+®¸ªd™ü6Í^¡ƒÃ3±té҂ǽ½+´½r\K€üÛ¿}L¾ÿýo›IïŸ}öS¦•nR¯4ç;ÿµn?öyd“Y×âÅ‹eíÚµæªuío´-?¸j¶Ö vë×^AzÛmw˜Û3Î8]^ô¢ÌÓ:ßûÜLÉ ¸ÈÑ~éï|»¬X±¢h]…W§­[·N��ÀÂ¥ßïÿò—+ämo{‡üð‡?"˜˜ÇFGËŸËÔßš•óU¯z¹9g¨™'ôwÄË^öùøÇ?Z­3çW¿úMÁã‘‘ÊçIµìèç>÷i“ɳ­­Í‚ë…ÿñŸ’ã?®dù‡ú»Üwß}R^äV©‘Ò ²Zƒ5��³‡� �X@,«|·¯)ì^þò—•§ozÓJÚõN¥ÒµÐàŒc=züñ£n6.ùòë±sÌÑ’NO? #“ÉÈÏþËñÇšnï)O9K�Lxë[ß\µ¶ðλL™ z¸õÖ[ÍíñÇ;~…ûÑGý‚–+™íõ¨ÝñÇ_ðøÊ+'þ ÙË^j²då»þúK¾G¼èEÈ '®'ÈrU„Y¼ ��˜_t@ó¿ø?3ýïÿþH¾úÕ/Ék^ójééé)XN¿'h€Å/~ñ+0?U:—ùŒg<]Ž;îØ²ó?üPyÎsžUÒ®™)ò/sœòëÖ`w½ë_ÌhÅ4;ÆÛßþÖ²ó¦R¶d2š¡C3õ��ZWH��4z¾Öškk‹•m?ï¼§Nz5û±Çc²Gä_eª´„‡FtO‡¦ÏÓ Q®Áêò˯¯Wxï½÷ÊöíOŒ/ÜqÇù?0n©yý?üáÿH<7÷ÇÆr÷Ýw¯OOʼë]o7¥Ci:0¿5£Ñ“Œ7Þx“<])÷Ýw¿ô÷÷¤ßWzB@˃rÈÁòä'ŸiN`*½ã;ßùÆøršiæá‡–üàäŽ;þ:Þ~×]÷˜mäž7]zÒ ØîÄI½ÿÇ?þÉÌ{á /©¨÷ú¦‚ã­®ÑýÖAÿ¯ÿúÆø64hòúëo“O>Élû]ïz‡)3¤¥ÉÊ9ꨣä¥/½°¤ýÚk¯/È@£ë:唓¥™8¾±ÐÌçßCFùf¶ú –Î]};²zõ*3éo—÷¼ç}òøã[ –ÿÞ÷~ çž{¶¹Â<ß+_ùr3•óîw¿· ØS¯Hÿð‡? ³…þõ6_þ=ÇËŸË<ÿüó&}Þ¹çž#?ýéÏ ÚôÜÈÖ­ÛdݺµÙuÇË>WÏu”+™œ£çSN<ñxSv$Ÿž'ŠC}’)Ïüö·¿«$SÇ7¿ù-ÿ7Ò‘²|ù2i6ú#�¨Žž�ŠÌç/‘‹—¿2}íÚ5“>Oß“•+W”´ÈtiP…žü8ì°ÃÆÛ®ºêšñû×\sÝø}­Ã~ćbÔâϾ\~ýëßšé²Ëþ<\qðÁ›Úî:Óhü A±Fïš*WO8~âŸò%¯“Ý»w—W(mÓy×\s­|üãŸ4ƒžåÊ~èzÌ|üã1?ìói�ÇL Ëý÷?`‚=?|¢8ê¨#L›‡è2³µ¾©âxG«kô>ÚÛÛS’Åâ;ßùž$ s_û“÷½ï=eË}-_¾Üï»ÞUòõ¹ßýî÷ ÚôDfOO·4Ç7öùéã½Ã|Ójû´j¾æ5ÿTÒ®á7Üp£Ìeô¨·ù²Oõõ-.iÓ¿Mƒ®&£ç1s™-óŒLœËÔò¢åT;OªV­*ÝþTÎ9¬_¿^>ô¡÷›õ¼úÕ¯,™?::&_|ɬÉÐ@uô”�Pd>‰\³fuÙöÜàÇdÊ-‰„eºr5RóS†ë€¯– Q·ÞzÛx»^®éùêQWUë!ê•*Z÷½–¿{&øA‚bÜ'4@âïü×IkyVr÷Ý÷˜ç– ²PzRâþá%m°0·ß~‡ ôÐ+6ò¯4ÓÚ¦‡r ¨ºýö¿ÎÚú¦Šã­®û¨Ö?ίu¼eËVùÏÿüÒøc-A¤W†j™®ý÷ý¢‹þU:;;JÖ÷•¯|M¶mÛ6þX×ýÿøÒlßXhµÏ_ºk×ni”]»vIá¶ãÒ ô˜oZqŸÖïûålÙ²Mæ2úÔÛ|Ù§Ö¬) vРƒüRåèürçõ÷GΊËÍŦž4"µÐ¬û؇ÆÏ]h6Ž#<²d9=Wó‹_üZšþ�ª£§€"ùóÍÆËþp¨”®;G£¦‹Spª%K–Ètå~ãœvÚ)ï¹ÖCÜ»w_ÁöÎ8ãt™ªo~ó¿ä׿þ¹™´nëW¾r©¿ž3ÆçëÕý_ûÚ7¤‘æó¾„éiÔ>¡' þýß?#;wî’éÒç~æ3Ÿ«8¿ýö+x\\2h*nºéfùüç¿hîëÕfššW¯ôÐI7Òé [Íç?±)EÒìõMÇ;Z]3öQ½Šì¼óÎ-h»âŠ«äç?ÿåøã÷—÷¾÷ݲtéÿ{DŸÉ*µÿþû•¬KŸsÙe)hÓµ\MVoßXhµÏ\zé—d¡Áºî|¹TàFù¦‘û´–{ó›ßV2å—+gll´Bû˜Ìeô¨·ù²OiiÓrªË¬4_ƒäè9R=WZúܤš|¨¤MãÔâcûpI ’þç·”-‡ò½ï}_{ìqi&ú#�¨.$�€åæ ý¢~Ì1G›ÁÈ|øÃå¹Ï}¶¹Ò»œßþöw%'+ôŠöƒ>HfJS|j ÿ[o½Ý<ÖèìüÔßúšŽ?þX™ ýa Ù;Þýî‘;ž¿ò^K‡üã?¾´lºòz˜Ïû¦§Qû„ g®8úè£äe/{‰ì·ß†’«(4áᇖüàäŽ;&²:Üu×=f]Zo´Xñ:¦R²§Ø¥—~ż¥ÁšU¦]æË_þZÙ×ÓÈõMÇ;Z]³öÑW½ê•æßòüúÃßüæ·M Øóž÷óXkœëT‰ÖJþÖ·¾SЦƒ£•j¨7Ç7šFíóO~ò™ƒ·Ür«\ÿ“4ÃYg!Í@ù¦‘ûtWW×xË|œùÊW®¯ø<_ÎL.�iô¨·ù²Oi ÐÎÎN,hÿÙÏ~QP´˜Î/¶bÅ s2ß©§žl²Ýæ»ûî¿™�ŠØXvÝú}æž{þVÒ®%Vk±råÊ’6 ÎÐßR_þòW Ú5‡^,òÙÏ~ºiôG�P,� H~ª¸ùèyÏ{nIÛîÝ{ä?þãse¯ø¸ùæ[üAØÿ.i?ì°'•­ƒ8gžyæøý{ï½×ÿ‘21P|òÉ'Öí3Ñ üt¢šRðÑG•F™ïû¦®QûÄå—_QðXƒ+ôŠ ‚*—¢RÛô‡ÿÇ?þ9ê¨#‹Öu¥4Z(TûIZ–­÷ú¦ƒã­®Yû¨s¾ÿýmjp…Yè‰ÁÉ®.Õ ¨K.ùRIp…®ó=ïy·Äb1™ ßXhµÏ?íiçɆ ¤Ù4ØT·Ý ô˜o¹Oëù„reL5Ðò·¿ý}ÙÔþW_}¹š»œ£>Ræ2úÔÛ\اn»ívyýëß,ÏzÖó䵯}£ÜrËm%Ëè`ÿ³žõŒ’v½xì‡?üQÙõþà?4ç3‹i°g1ÍÀ—_fTiÿóéOV¶mÛ^²üÖ­[ýs¨Ÿ-飴Ù 'T"Ï™¬üFP*䈒v öøÉOþŸ4 ý�TG(�Ñ/º<“«³[Ùá‡j&½R=Ÿ^AöÆ7¾Åÿa¤ßñŒÜ,×_£ DȧïÑK_úR©—“O>ÉÔc×ú…ì¡'MrÎ<³¾W›§ð³¬ÆÄê>DÍBkTÿ’ËÊ’£™+4 ¨]æþá%Y,Š×•oñâÅþ1¤òîëë“ézë[ß,_|‰9Þ'£ÙetÙf¯oª8Þ14óûͪU+å¸H>úÑOÔ&þË_®{ï½_þéŸ^)'tbÁsn¸áF„Q|Sƒ*>øÁ÷ÏJiÅñ…¨Qý…ž¬ÿð‡?`ú†GyDšAƒ+>üá6åJLú ÌGþþ Ù­4¸2ŸžÐ+¸ñ‹_š`ðžž^’;ï¼Ë”)G3u®_¿Næ*ú4B«Ÿßܶm›|üãŸ4rÿíß>)—^úEÿ÷Ī‚eŸõ¬gÊ/ùk*h×�‹[o½Mžüä³LЖ– Óßåʃtww™õÓÀðç<çY%ÁÛ·o—·½íírÎ9çÈ!‡|õ·Ìe—]fJ){þóŸW13p­ôž³xË[þ¹$0ýÇ?þ_9á„ãË–W¬'ú#�¨ �P†^Ý=::*óÕ;ßùyûÛß!ûöõ´ïܹ«l¶Šb/yÉ…&H£^ôÊTý‘ ¬Ø·oŸ¹Õ?å"·k±wïÞñÔyétÚüm¿ÿýÍI™=ÑÚ¨“0å²�ªýKñ±<•ÜûíW¸¬;•èý\Mó™*h†oûþñx§\{íõòøãû'/ž0'Vz{ù¯i½) °µ ˆÔ{}SÅñ޹¢™ßoŽ8âpùÈG>hRóOê‰ÓO|âSràÈÓŸ~¾iÓRdåN‚jp…ŒÖó;ÇTq|c¡jT¡ƒŸÿüøßËÿ W^yµÉ&Wnb&ô·Åºuë嬳N7™+š•æšþóU#¿?œsÎÙæ*s½°£Ø–-[ÍT~¿õ­o’©úÌgþ]Zý¥•ÏoÞpÃÍãÁ9©TÚo¿I^ð‚ç´wvvÈ»ßýNÿ·ÅÇK.»ÿþÌ4 ÐŒxºžr^üâšó…Zê0Ÿ~GùÕ¯~m¦ÉuÔQþ:.zX¾|™)øÕ¯þWA»žÛÔŒ€_ü¹†f˜ ?€Ú`�eÌ÷� =±ù¡}À pìÙ³gJÏ}úÓŸ&^øB©7­‹œŸ¹BvÚ©Ó®/ø®w½§ê2çž{vIíÅzá *iDÿR|EÊT~lï«“]ÝrÜqÇÈw¾ó ©=Á¡'!tjÅõMÇ;æŠf¿ÑšÈ_øÂgåSŸú´lÞüXÁ< ¨(T‘£Y0.ºè_eýúõ2›8¾±P5²¿Ðï)zi¹«Hç2ú ÌWìrƒžŸüä§Mºÿ©Z²¤ÏîÇýÛ%2—Ñ QZùü¦ã”ϺiÛåÏ{ìÑ&˜êK_úª 6¨•~ïxó›ßhÀ+¿ÇüöøøÇ?%÷ÝwŸLÅ!‡ì÷cï¬kÖ‡g<ã|¹öÚëä®»î.hôÑͦüÉ«^õ iú#�¨ ¹~�  ýò=Ýý¹B¯ýâ?'§žzrM¥:;;å½ï}·¼éMo¨iù©:öØc¤££0’¼ÞåAòiƌ׽î5ÒºïP¯•,„þe!áxÇ\2ýÖVÿìgÿCžò”³j.]¤Ë~á Ÿ›õà Žo,d|_™ú Ìgî4ËÌ?ø>yûÛßj²XÖú½ÂýË_¾TV¬X!sý©•ÿ=?ñÄMƺ|Z>øä“O¨øœsÏ=G>ýéOÊl”Z¬[·Îÿ]ñ9眧T]V/Àú÷ÿ„\ðÿÙ»�ǪòïãOf¶ÌöÞ€…]`)‚ôÞADš "]°úWº /ˆ ÒAED M@¤÷*‚ô&u)K[¶÷¾;“÷þNr’›››6ÉÌdf¾ “M¹¹Iî=9ç9Ï9çû»ý(Eå i3­%µ‰Ž?þ˜¼ÏGn¿ý{óÍ·¬-P@ù˜Á� P%váÂ…Ö• 2ÄN;íTûä“Oí‰'žtSáMžü¹Í›7ÏUæ‡ ê:7¶Øb3Ûa‡íc+öµ¢†ÉvÛmã–ñMó©,ðZQöàÁƒ‚FØÛyçóÖ~¯¥¶üœÐ5Ôº|6l˜Íœ9Ó]×¹ÓÞϯ•gŸ}Î.¿üм%O Ù{ï¯ÅÞ>xð`;Dª¶ÆùŽÎ¦#ê7}ûö±“N:!8g÷²k¯½.oê]oíµ×²ï}ï;ö…/¬kõ€óÝ]{–Z3ýü“½ôÒ+´íÓ§[Vð;ß9"oÍööBy®®­ËÅ´\ˆâ/½ô²ý÷¿ÏÚ|h³gÏqñ Å † l«®ºª;ßwØa;Ïè (?ÐÖê5¾9jÔHûÅ/δ?ýéÏn¶»UVYÙµF]ôyj3h–¼W^yÕÅÞxãÍ 1Ó½GÅþFŽábÛl³•m¶Ù¦Í,¡²æÛß>ܾþõ}í±Çž°W_}Í&MšdsçÎs³}*‘bÕUÇÚFmh»ì²³‹›¶}ßúÖ7íª«rgÕ)—^ú› vrYÍËÊ#�(_¹CeÞ—(ão¢À¿ý¥!ô×_Ó·5F.ºO©Í Ë–-Ú� †’Éd¦Ã¨„:«Ûb–tµ._^xá%ûÝï~ï®{ìÜÔ™íùüZ9âˆïV¼lQ! tüå/×Z[ã|GgSõ­‘¬€å3Ï<ãþ½õÖ[»äGKë ç7º»ö*/”\qÌ1'Ø‚ ¬ýû÷ ê3¿édQÊ tuÄGÚåÚç/ÊEy =ôêÕs›àOKp™—þÛ¹$Ó[B—dèoôbþ]ìoôzT±û,� e?×ëZ…¨OAׯ_?J¡|É÷ïiӧϰZШ•k¯ý£µ%ÎwtV”?¥q~)íQ^œþ…öŸÿ<cµ°ÝvÛºe Ûåº êµGùöÂù‹R(�´—®’`QþüH�Ð õíÛ—Ì]”MÇŠŽ ”/ù´Æè˜1£­ZZ‡ù¸ãޱ¶ÄùŽÎŒò§8Îo «=Ê - R»m½lí‰òÝ õ‡Ú¢ü@{âüE1”G�P9f°�€”á]k¢þ(Ó[ß@¹(_:/Îwtv”?…q~¹(/ £¼@wCyP;”hoœ¿(„ò@{b �è&TÁìÙ³§Åè¡1‚JQ¾tNœïè (âq~ù(/âQ^ ;¢<¨ ÊtÎ_Ä¡<€Ö!Á�ÊÀt(…c­Å±Óùð¡«àXÎÇgÄãÜÈÇg‚îŠc¿z|†è({ˆâ˜�€Ö!Á�ÊУGëß¿¿qtlèZƒò¥sá|GWBù“‹ó(Œò"åº3ʃêP~ #qþ"Œò�Z �(SSSS¦!Ž @5(_:ÎwtE”?)œß@i”)”�åAkQ~ pþB(� :$X�@4mZïÞ½  L¥‡Z¡|©oœïèʺ{ùÃù ”ò‚òðh¿T†òõ„ó·{£<€ê‘`�0`€õêÕËнéб�ÔåK}â|GwÐ]ËÎo r”�<Ú/å¡ü@=âüíž(� 6H°�€V8p ™Þݘ¾{@[ |©/œïèNº[ùÃù ´å�öKq”¨gœ¿Ý å�ÔN�´Š²}lñâņîCk2ÚåK}à|GwÔ]ÊÎo z”�<Ú/ñ(?Ðpþv”G�P[$X�@T1mll´ º¾þýû[SS“íò¥cq¾£;ëêåç7P;”�<Ú/¹(?Йpþvm”G�P{$X�@•TAíÑ£‡-\¸Ð–/_nèzzöìé›úžöDùÒþ8ß”®Xþp~mƒò€Gû…òço×Cy�m'QƒÇ%b®û›(ðoiýõ—Æôm‘‹îÓ¢Q Ë–-Ú� ƒi:½E‹Y2™4t~‰DÂúöíë¦Ñ:åKÛâ| ëìåç7Ð~(/�xÝ­ýBù®„øCçFy žõêÕs›àOKp™—þÛ¹$Ó[B—dèoôbþ]ìoôzTÉ@,� ÆÔøP#„µ ;75BÔQ£¨”/mƒó(­³–?œß@û£¼�àu—ö åº"âå€zG‚Eü}$X�@š"K–,q—ææfCýÓz“šQ"¨g”/Õã|Z§3”?œß@} ¼�àuÅö åº âõò@gB‚Eü}$X�@ ­]¸lÙ2w¡1R_ÔéÕ«—»hmB ³¡|)ç;P[õTþp~õò€×™Û/”èîˆ?ÔÊ#� ñ÷‘`�%´´´¸ÉŠ+\cDÿö´†††ÌE=z¸ˆþ t”/)œï@ûk¯ò‡óèü(/�xõÚ~¡ü�J#þÐ>(�t5$XÄßG‚�����������Èè* ¤¹�����������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ $X������������”@‚�����������@ = ���¨Ë–-³§Ÿ~Æ>øàCkii±ÕV[Ͷß~[kjj2�ÝW2™´W_}Í^ýu[´h±=ʶÞz+9r¤���@gò¯Ýa3fÌ´Q£FÚW¿º·�:,�  3gδ½öÚ7ö¾††ëׯ¯­²ÊXÛpà ‚Çía&¬iÝÍœ9sl÷ÝS …uÖYÇ®»îël.½ô·vóÍÿp×/¼ð<ÛqÇ ]ËjüqÙ¿æš«lýõ׳®æå—_±ûïÐ^zéeW¾©CsèС¶ÁëÛW¾²›mµÕ–Ö–Þ~û;í´ŸÚçŸOÉܦ²ô¾ûî"Áè`Y>Ì›7ÏN=õt·a\p. è.¸àbDÓ»wïà\bk®¹†í°Ãö¶Ûn_v·Õ›_ýêR»õÖÛÒ×/´í¶ÛÖº³‰ß³;î¸Ë•KŸþ¹K<x­µÖÛe—]¹Ø³gOk+|h/ûï}öÙg™ßzëMAŒc•¢ÏyôÑÇíôÓÏp×=ô;î¸åÜÈ!‡Û‡~˜~ìƒÖ·o_«Æ9çœowß}Oæß§Ÿ~ªí³ÏW h …b‰DÂúôéãê¦ë­·®}éK»¸d`ÝÞ,ê ¿þõoÜßo|cûjºÈzè¡Gìg?;+ç±×^ûGûÂÖ-¹MµÏöÛï6eÊÔÌmÛn»µ]rÉÅÖ™„¡ 6ø¢]}õ•�õˆ �h#y=þ{ë­·Ü妛n¶/ùKvÊ)?¶�Ô‹E‹Ù/yŽ=þø“y÷) ªË}÷=àç¿øÅYÖ¿«µ¥K—ÚÉ'ÿÄàSPfРAîú?þqKÐÑ:ß]?òÈWåÃ9眗—\ÑØØh›o¾™~ÿ”X¨Ë¿ÿý»òÊ«\{açw²®báÂ…vã7»ëcÆŒ¶½öÚÓ:+•‰—\r™Ý{ï}®##Lu]ž~ú¿ö§?]ggžùSÛxã è¬Þzëíœä yà‡ì{ßûŽÕ‹åË—Û“OæÖQ´$X ½é7A¿“&Mr—{î¹ÏÖ^{m;ë¬3lõÕÇöÊ+¯ºä Ùb‹âmš{ソ¬ m3œ\Q¯þýï§ìwÞu×5q̘1� �PCJ ð–,YbÓ§Ï´>úÈ/^ìnS&ò»ï¾g¿ÿýomذa þ|å+_¶>}Š¢6l¨uJ;é¤S\cÜ[}õÕmüøÕ\ƒÒ¤í“O>q·ÿç?ÏØÉ'Ÿ”a—»™%jé©§žÎ$WhTÜEü]Ù©¼›o¾5ä%Áh{õP>Ìš5Ëu:‹FƒkÙf›mjóçÏ·~ýúÐù6ƒ:cfÏžc“'îfAY³fÛi§a'œp¬|ðAÖ(Áâšk®uוpÐY,ô>Ž9æ—<ïõèÑÃu (¹ìóÏ'Ûœ9sÝíú>=ö;çœ_ØN;íh@gôàƒg®k69Å8ê-Áâ¿ÿ}6“€­Ù{QRæôéÓmĈ´¥õÖ[ÏVZi´»¾bŠמýôÓOÝo»¼óÎ;A»õûöë__lm´¡ÞsϽàþªÝ´É&}ìC=äê…ªs£DŒÎàÉ'Ÿ²»îºÛ]×{'Á@gE‚�ÔˆFc}ö/ònWçà}÷ÝoW\ñw] ?ýé™vå•¿ëvSÁ~pt·jà)Hê;O‡ lçŸn^ðçé§ŸqÓT.\¸È=V£Õ5Ò –Ô)á}ík_ÍŒòéÕ«—èõP>h–%¾Ùf›Ø6Ûlí®“¨ŠÎêg?;=6Á@#ů¾úöÌ3Ϻÿæ7¿³ñãÇÛ–[na¨šMÇ'W¨“ã;ßù–pÀþ9³>ÿü ö»ß]é:ÕÔÙöóŸŸm×]7ÎÆ[Í€ÎD¿½<òˆ»®²HÉQÿüçíni<^{íµ¬<üpj[ùá¿ïf˜Q‚¨n?äƒ hKçœóó¼ØŽ¿ÿüçiûío¯p‰ÈŠjÌ¿ýí:>|¸¢ú‚hfŠB3�8À%Í;ÏSÅ–*Qòûc=æ®4Ð=�жj;ô�Gë‰î¿ÿ×íüCPiN´ô�ÐÑžxâ‰ÌõN8>vd:4O>ùDZϩ•åËWd®³ŒPê¡|ÐÔßž_.èŠÖ]w·F¶ŸÖ^›¿úÕ¥®£OÉd=–*ß”\¡ÑÈÅ­³hé¢?üáwn¦шÿ_ÿúR:›W_}ͦM›î®+Ñk«­²É^JÀ¬ZbÉÏrµæškÚW¾²[f­xØ€Ž cpûí·³?ýé*·Ü¥hF‹?üáȼyólâĉîz±%·ÚjËÌu Ü+Feá‚ Ýu’s }0ƒ�´“5ÖXÝ~øÃØE]âþ}ÓMÿ°=÷Ü=ö±šû_ÿº3è¤ø·ÕÝÜÜlcƬä*×ßøÆ×môèQ9¿ÿþíç?ÿ¥»¾ûî»×ÏÌÛæ~tœ½øâKîúÏ~öӼѥšjû+_ÙËq•òÀ÷¸©¸çÌ™lso÷Mg¬Y:4åæßþöw7rE#V5ÿ^{ínt`«§W¶õƒ>äÖ©T–ÿüù läÈ‘¶þú_°øFÉõß{ï}»í¶Ûí¥—^¶©S§Zccƒ5Ú´9øàlìØ±Ÿ›áò¨Ý~û¿ìÃ? ¡KmµÕV³üFÍGé£k ŸÛn»µ]|ñ…vóÍÿÎß»ÜR_üâún¶š0«:ÿ_{íuw¬öîÝ+(Ö°ÝvÛÕh-6cƒ:[žyæ¿nôØûïঠը½ÎW¿ºw°ÛX¥¦L™–¹¾ÖZ >n§v::Ou׋ur>ûìsnÿ´ÒÌ™3mèÐ!6~ü8×a¤á2BÛïÿ‡yÛ8ï¼ ÝET¦izâhÓV[mçþjû÷Þ{—»þoì¦d•[o½É•Ma*»þïÿŽq×5ÒèöÛoÉ{íË.»<ø~RëÄk6“oûˆœû5rDë®ÿïo¸iÜ èïÊg}ÿÅ:`À€¼mªƒìÖ[os×ÿüçkÜËW]uµ+¯4"EK*„§U°XMñ©÷£@‰F;©³æ ƒp¿'@{¨eùPéïô6ÛìwÞ«¾£‹Œ9Âî¼óöœûUæÜzë?Ý’C©úS‹+¶Ûnw~Úu–wBפßÈ“N:ÞjÔªëwG5QÕÔ ô\Õ}ï¿ÿ~{ûíwÜ(Ç~ýúºúˆ–JÛ{bs´Ñ*¡v~c5RWïCËù(ù ú;¯ßbÿîÛa­mrÈᮯzÔ“O>êž{õÕר /¼èÚ+£Fr‡vp«f*ûûßoÈ\ÿæ7µ-¶Ø¼àcµLf*Ñ>éóÐ4à'¾g&¬™·¿¾£zãŸÿüW×^SY¦YzToúö··Áƒ[¹Ž;î„Ì´ãgžyFÁö¦?T‡Õ_}×wßý/2dˆ^xy-·ÜÜ6ÜpPâãÃ?lÇó5_2°RêPôË êüV™³Þz_°×_ÿ_P¶½íÊbq�QyøÄOºúÃ|àÊ‹UW]5hWìçÚ/7Üp£]~ùïÝcU^…—…õª©»ëT;A±ŸÔò²KÜès•å_ÿú~E;_Qßt<ê·àˆ#¾ãbz<ð ;oâÊôJûˆvl °ÚzÔóÏ¿˜iç«Oh{#FhÉ£n9F%fŒ¢}ñ¶Þzëœ2¼?œįnqƒ�õöéÓd+¯¼r&6¥ã"êÑG·ÓO?Ã]?õÔ“mß}÷qÿùÏeØ$w<(áíàƒ´vØ>ç¹Ç{¼{ïa?üá±™ë7ß|Cð=¬»¯ªÏ]ý î\´h±;÷Øc7·œ^¥uV�¨,� ©âyå•W¹†Ã»ï¾ë¦½Ž&K¨Ò¨Êª_GÔ{ï½÷Üå–[nu£]wÝ%sßÖ[oé*±ª ûT˜. 2x/½ôR^£A_Áß|óM]Ã*JBq}’Hxß4±:Výë_UÜÀúüó)vÊ)ÿÏm'L,]TYÿæ7sS~Æmûºëþê¨ÑŽHt¹óλ\€±P0äÌ3îašÖ÷ì³ÏuÁN \^ø+»ãŽ; Þ¯ ÄïUfº{Ñ1¨€….·Þz{ÐAlà_SÅžôfΜe?þ¤»ì²ËN.¸Rɲƒe^|ñE— G~TmퟦÎ~è¡GrnW9§‹¦<WÙrî¹g·Ù êLR‚‹¨,&X„ËGu\éý¬Ã wN©=ãŒ3Ýz¡aJ²Ðå7Þ°ýë»ì²_g–7‰3iÒGÁw|‰ LÅÑ>xâ)Áã&åÜ>yòä ,›t€ÜãÊB•‰@[«UùPÍït¹ž{îyWò#·<Óå¶Ûþ”Q¿,Äê’ðÔ±ç;ôTG&XTS'Ðsò“ÿÔ۟Ϲ]jè¢Ñé—\r‘;·Ë¡ß¨Oüq¦£Swí³)+Qm›ÀS‡ÁÑGÿÀµ¹¢ÛP’äœ[QY0{ölWOµ‘?¼ôo°:öØcwWöÈ£>–“`á©\|óÍ·‚N·ã3ŸŸ¨> „ÏÇÜÍ„8bÄ+Ç{ì‘I°xôÑG &X¨cZ»¢¶$ÉÓq©cOz÷îíõw£6pcšÙBráᎠDo›m¶JÿÝ:ûPYvä‘ß-ø|Å7Ô~‰Î.ªzÃùç_dü© Z<Á©šº»b :÷Uö…)aNå».‡vhÐ)ùCCç¤äÍþ¢Îq%'©M¼Ç_ÉyLk~ûˆv\ °õ(¿<ˆî_ýõ ¾–>ÿí¶ÛÎ%‚èøyè¡‡Ý ÉQsçÎÍ,1·ÒJ+•µ,™’Ç´¤Yø3\¼x±‹mèØ¹á†›ƒ¸Å…EÄ´gõ‹¼ÿ⬴†b<—^úÛœÛtì\~ù{ößÿ>‹—vxÂ€î‰ �hGʪÕ,¾òùÆoæ$X(÷„~ìÖëe+k$†ž÷òË/»ÓªÌk­seGo½u*ˆ Ñ¢~¤†2›µ.ªF]x)¯–×�{á…øNŰO?ì‚që®»nÐPÙÅlµ-ÜýïŸs£/<ð�+—‰ÊXV`B4Škçwv£6Þÿ}÷zªðÿýï×»uUô£ä<ÿž{îµ?üáêÌ¿5ŠvÓM7q•ku°jßÔQàD™ðÑÎTUÒà +5T'L˜à\TRÃm­µêc}YÔ7¿O?ý_w o¿ýöA z°»xÿøÇ-vÅp×uî|éK;»Æª‚ÿ @‚ŽùN8Ùþò—?¹–°pGж»Ûn»ÙȑÃsgª=øàƒî˜Õvü<묟Y¹4ªÀt>( ÷­o^v§JÜþéýí²ËNnôÃÔ©Ó\§‚ÎudüãŸØUWýÞ£cÇ®âFõȵ×þ%ÌØ`ƒ/Ú¾û¦:kµ-¶ØÂ’É– àq^æõüózõê¹MUŸ`¡²ék_Û7gU&„é1]â)0áƒ<î¹à‚‹2ÉzêL^sÍÕmáÂ…Ap÷1·&»‚ͧŸþ³ ñׂ üßÿþJ7âBA¬µ×^Ç%Û >ÌÝ—-SAV­w­2M彎/}¾ú}P D#ŸÂû´…Z”­ý>ãŒÓÝyÿÊ+¯Ù]wÝy¾?÷›š²û óãÄOvA>ÑHÛ7ÞØÕô~¶˜SO=Ýþô§«‹&Aõ@É >ÁBí…¨jêJôôçõˆÃÝo¥Ú 3gΰÛnû—«èœÑã~üã¬t=þø»€¼¨3SIåâçõûxÕUÙ©Ñýy¬N�¯Ú6§ßÉŸüä´ào³rÈÁnìÂ… ÜYµ•ô:ºÿÆÿVöLjƒùäØÍ6Û$ø]îWÖóTÞù‹pGWtñ‹sÜR’‡rûNÞ{ï—°«²QIª—\riP9¯ì×¼è¢>®“Dßó‚ b×vä‘lgˆ’2€0uþùszÓMSɲÝvÛfF«±#,t.«í%:Ô~°ô>úò¦T‚Å•W^“\¡'ëÐÈþÇ{Ìu@Æ-Þ‡ÖÖÝU¦œvÚÏ2Ï]{íµÝŒ�C† u#ê5°FíDØVýhçw2tNúMW‚…è÷$œ`ÑÚß>b€¬E=J‰á¢¤µ¸ÄOå‡ÞŸ,äÞ{ˆM°xøáG2qd•þz!úÎ~ûÛ+2ÿVÛIß±<õÔS®\Ò÷óÿ÷£  úkÁ$Ïûî{Ð 4Ñ>*qU±‘G}ÂÅFDI0Jzó3!*if÷Ý¿bçž{A&±C‰?þ·dذüÙõyj_5K›ŽÓ=zºã[3þˆ~“R�Ú �ÐÎ4íœ7yr63Z luúа¦9;î¸åtÒ©¯Š¥{þùî›2ÁU4}àNŠpãÊw*ªÃV#•¨ÓˆŠpP3Üñè7¢4ë†2Àñ‹³2ûõoìoþó_2AŒ;¢Æ•¾a¥ Èe—]’3 F‹©ÓDû­à‚^?<M¹ÖCVŠ*癪NkO uhkÖ�%¦hÊN­•œ}?3³ hÍ!¨‘"Jx)ÂÔñ¸Å›¹�xt*ÅiÓ¦¹�ž <(²ý6èœ_#sÿQG}Ï%N) †¢¼áQN?þD&ˆ±ÞzëA‹sfÐôÑÿ÷ÇfF{”3¥¦§Nm[e€:'PÐ& 4(ÁK åpYǰH®¼òŠœ©¿ÿý#ƒ Êqnÿt>ù Œ¦ë×Ô“©Ï(Ûù²÷Þ{fnØ 'a„ï÷4¨:~Õ© "© ñT¾,Œ&X¼øâË™”m¶É™4ç[o½ã®ëû»êª+sÞŸóš]ïM£×4bWûGÁê‹/¾À£´.¯²î·ß×ì”SNÊù P A£Ü,»âŠ+ƒòn—Ša€JÔ¢|híï´u­™h|‚…¦@Ž;÷Ï9ç|· ª3Yó¾ûÝogêO*.¿üwAz‰õLǽ™IYmàÞ{ïuÕI¢„#MÇíé7ñ;ß9ÊÕÍUï×ë¨ßÒ“Nú‰{-Q™îÌô¿óªùßxý>ÆÇÕ¶ <íóŒ3‚ßÔ+‚Ël‰öM‰)êpÕ6.¿ü ;ï¼s¬þýɸqå'h…Gú%Ì¢4ëÎÐ¡Ã‚Ž¤¿ä|*+Õ¥z‰<µ„d9Ë©^ Ž}÷ê`RGUt´t¸cZKm¿ý¶„…G#‡ë¬J¼ô£ˆ•€pòÉ'ílKš©Çw kK©·¤Õ¡ê—Yzë­·ƒŽÃuòž¯ûn¼ñ&w]åœf Ÿ+êÔ=2³×Ä©¦î®å TΊ:s¯¹æ9Ÿå.»ì”ÇGºÛ^}õu,:±pl.”j~ûˆvL °Úz”îÓw!¥–�RûF‰_ŠAÌ™3×%3Ä-}NÓç¡÷^ˆ–QÒ—hßôî²ËN™û‡Ö ªk*é¤X’§öGå^8éãÐC±ÿø—|£÷×]÷dMÔ~”p½ê„Å’õfÏžãŽÍâ—cÕç¢%e•l#wÞy �:sç�@; hOc­Lv?rzܸqyÉ¢Šª:pE‘ZcÜ gœGGiû+³Z£;$Üù¨€FIˆ÷…²“µ?'œp\Þ~ibÒeœ+˜Wî»ï>w]5Ú¢Ó Âú)åT9¿ãŽ»rî×r=t_¸*§aåií@/:m§¬¾3U‘èôËvÖYg°ž_7³ß~¸µÁ ]¢Óz:N˜‹[§Rk¤ªcOŽ9æ‡9É¢€à©§ž’™Æ[#´ô„èÜûÅ/~–·Ä†ÖøU™á)P.½ö¯}±KêòI3Ô ¾à‚‹íë_?Ð?ü;nT@¡sûöÛoÏ\?á„ãóÖÍT™ræ™? =¾ð2*ÕÐç§™!D‰ š"ÜÓ4ÆÚ}†‡šj|G“0üT²í¶[g®ëóÖHW­OMm3¼l“MGåp\r…ÊC¬QÇš‚ѲV¼P AA  -Õ¢|¨æwºª?i*oQÇH8¹ÂSýI#CEçFÜõLå¿FrŠ~ÂçW5umÇ/Q¥‘€Ñ:¿f:¸êª+ìÑGÌÌ6Uˆ‚Û?ýéÏìÍ7SÉ‹ê¤×Ò ­Q‹6A˜ÖP'Wˆ°N:é„ÌvÕŽ /ÉQL¸ÍVj¹€0%DèuE#â ÑÚÑïQïW#JEïW±åÒèPOË„Diä®ï˜þÒ—¾TÑÒrèúTN<ñD*‰KÇo¸¬Äru¼ijöŽòÐCe®ï¸ãŽ9÷)9ÁS›?ŽÚg~æ+Õ¢‰HêÈS, P9XmÝ=\Ymµ±y‰*j/ÞzëMöðÃ÷í«c Wx ¦ðïIµ¿}Ä�Û?X‹z”Ÿ½B6ß¼ørešKû²ë®Ù÷¤¹Â”ˆ«ö¨,*5ÐFÉ~‰0ÍʹË.;åܯïEq-_U’çÌ™3c·¥Y{¢3jh<ò{™¿ýöÛV-Í|æ“+ükœxâq™‡:–Ë= –H°�€væ+óânòï?•¹¾÷Þ{lÈõ«Ù5Î5u›§‘šžN45jC4ýœ_ß/ܸÊpk+DSõ6,ïvUÀÇŽÍv8jârh?}ãD¢cÆŒŽ}Ü>ûì¹~Ïždš1Jl­5éiŠÜ°pÃ&º¥§J±5O£ &üùj)ö1š6ö‹_\ß]׺¡>¯Æ¯ŸŠWǹŽÉ8¹åä•®y®ç)p÷ÏþÃùuÌ‡Ë u^j´ÚÁ3o—G|¢ K\CôÞü >j�ûQµ¦)(½_Ìšü>®¾úê™Ç(Q-<¢Ô¢ôyh¤H”:­Æ—w»Ê­ŸîëD)4³…>WpS²†ïÌŽÚa‡l¨Òïhjʯµ¿ÓåןŠQþÜQýH#Jz^Û·ª­¨ÎîG¸jæ­ /ü•MŸ>=ç¹J (§Ãýüó/ÊLy®rA# [»þu­Ú^¡‘ÞšRÝ'bª“GÉ—å(Ô~«•/~1¾­±úêÙ„\¿\C94"Ö/?æ— /âg ¼gžù¯[šB” mßìºk¶®ÿàƒYGв~Ï=—JŒVya„Ÿu¼‡ËSï™g²É!~Y£(ÍBW‘jëîãÇË”™ZÒI3üE“¾FÕêrõ#üVío1ÀöÖ¢åuhæÏèÀ›(ÿj†OïÌ9¦Â³Wø÷T蘓§žúOæº_–5JŸï.»¤ÊQ•Ÿú]ˆã—fŠ /Ǩä²j(±/:c‡(™%|{¹Ç �ÔK„�@; W.}&¹L™2%sÝ ‰³Þz놞35ç¾­·ÞÚî¼ó.7uÜ|hk¬±ºkÄûi³7Üp7¢[#'Â+5r¼Bk/J±õ†ûôiÊ\÷#AJ)÷=«2jÔH›:uš[_RÛf”kš;5&N|ß×c5qxíÁh#Ck$Š>›¸)†=­ÇHGf÷¡@sß¾…õUW{»¦ß,ÄO©cw§vµrhT“²ôÕ`÷甦ªÔ,¥Ìž=ËZCÓ[j´ˆ. F¨GAIòT§ŽFGüIöÇ?þ!32TÓpû ¥F¿›ñå _X'3»ƒ¦Ó-µ´@kä&X¼ä¦0_Îi¹í{x™Qô>üà›l²QÁ¥7´žòóÏ?oï¿ÿAðøO]9£r)\¾‰g¯Û;övŒˆ–aÐ¥”Y³fÐ^ZS>„µæwºásç¸ãN,ë9µÔ3ý®úNý^ùŽ»ZÔ ~øÃïÛO~rš»®Ù04U¶fÏS\mÍš×™öË_žãF¯{çwvfakÔ²M …êj²ÆkdÖ^×o9´Œ†7sfù|•5¾\ ¼Œ*ÔÆêÛ7[in.¾žz˜:dwÛm7·<’IÂË„( Ô¯¯zX¡Ît_=ôpæz\â´f=Ñôò:¶ul©37n¿¶ôØcgÊÂm¶Ù*ïõµ$ˆ:†U7QY¡v@4yzúôi™ë묳vÁ×Zgub— ¨¶î®Äm-«pÓM7»÷ò«_]j¿ùÍïܾl°Á®c\ûÌr€_¸ã7ü{R‹ß>b€í¬¦¥ýñƒ:t~—›´©rAõÍ¢8ŠDýÀ ÍÆãßÓ{”Nšôßê qm6O±çÛoÿ—»î—BŠ*\É–É•Ô_â(9¶ðùTî1�µD‚�´³ðÔñjô{…áE§ˆ S–®§FT˜2ÏÕ¸ÜVã꥗R£I5j[SjD“ÖJT#E#·Õ±èGœj]¿RÓÉÕÒܹó2×Ãã8 t &œçÍ›—™fQ ¨‹/¾Ä ‹ŽLQƒASÖù©£|`XëbÂáDt}Gõ=—%_Kác½\~dGô</Ç¢E‹­Z*kvÞyGwQPèœsÎsç™õ¿ûÝvùå¿ÉÛ¿rÎc¯5ï«êV@D£êýHͲñÎ;ï¸û7Ýtc7òDAKšTþiÔÚË/gG±Æ™X½è¢K2K„i„ŠF˜…×h¯TkŽ‘r§6j­ÜòAªù.G¸þT.ÎÔ»?þ$s¾„Û µ¨ì°ÃöÁïÙùÁyú{÷»¥ßIƒº¨“@çåW¾òe·œF¡¤€pr…üõ¯×ÛÉ'——à§m‚°b’á¤=¿á™B&M*¿¼š4)¾Ý×”P¡ Ñ2!>Áâ‰'žÌL£ÍìˆRÂdxÒwÞ™høÃÕyó–z¼–¢Ëk´µÌ&ÚG%WxZ š`áËSÅŠ6×2�qjQw×rNZBöúëopåªÎMµ9tÑmê¤<âˆoº 3Yt^¹1ÀìïI-~ûˆ¶ °šzÔ»ïNÌ”=[lQ|y¨¯~uO»ì²ËÝuÍz£‹‰ßËÌȹÙf›ØèÑ£JnǪ+WŠÅž�)$X�@;R&uxÒð´sᤊbÓË/\˜]³Ñ¯‰ç©á¤ŽC5ÌÕ`ÒˆˆW^y%sŸ¨ñ¤†ŒFÅ)#[•fßàÛzë­ÚµáÞÿðZ”q.LâÓþùÏJÊÇÿãLãI£°ÔØÑ{\yå•Ü´›9öo»MK4Ý®:_õÝšÖÓ ZK真Úù†þVÖsVY%ˆ— ZbãüóÏ)ùÜZŸÇ fœ}ö/lソæƒ/¾ørfIø<.u®øóX¢åW-i$›!<Ј?âWŸË¦›n⣀†,üÈ”ð•h‚…‚¯²B´ÜÉ–[ná¦eU‡‰¦¾÷Þûì¼ó.´Ö oµìì_ò9í=ZˆS¬|¨öwºá2Rû¡Àr)Æ 5 ž…§ÃöˇI­ê:µî¸feÒTÚêÌÓÒ93gÎršnZ1—_~YÁÑ•_øÂܺÚz¼¦¶W`§v´Ö¨¶M¥Ž˜B#çÎͶ³Š%µ‡©Í¦ÏA(*ãʱïgÊð÷ØTGñ£]5c…ÚiúÈ#fÓÞ⨚‘Â×wåž{î-ùœ|°]%Í<^ÞG3I”š=âñÇ·ŸüäÇ.Vâiô½â&K—.uåX¡ö“OzªEÝ]¯ù­on‡rk‹(†óúë¯Ûo¼åÊ]”<¢úÔ÷¾÷Cç^Î.ü[P‹ß>b€lm=J3az›m¶™Uâ+_ÙÍͤýöKv<ýô3™û÷Üsϲ¶£Ï@û©Üâe_áØ3� … �hGš>Î7"Ö[o½œõLGÊ®=¨`å&›l»·Þz's=š¬»FekÚn5œ4’ôí·Sßj«-Ü_Už5zã±ÇžózNãl›m O Ø4âÛÓ{.D£cýr(ZOØgškŠCß°Rööo{iNÐD¦M›^p»Ã† Ïtz«aTh}Uÿ­¥ó[Çš×#GŽÈ PŠÖUÕy«Æ¯¦ß¯gY-®¼ò*w]ÓYþàG|¬Ê5ÆèÓ¾hÄšõšÞÖŠ5Òß|3{ž—3º¢µ” ñ—¿¤Y^}õUÜ^|™·ÕV[eÆnºK‚Ñg!ê°Š.]r÷Ý÷f‚ÍAöÃþ ï5ÃS‘¶F¸<¬õ÷ ´F-ʇj§Ë®?i Îtvú½¹í¶Û3ÿÞqÇí3×kY'PDSNû©ñ•< €ýgœåÎeMaýÆoÆ®C®äŠk¯½Úujú‘ãçž{¾­½öÚ×S/¦Ú6A”êîJ„Œóæ›of®«SMU®rPºj_ýýï7ØÑGYô9ª[(ùÒÛe—­½í±Gª3Fû¬ïSÉ¥JMeÞÞ³j þ=üðÕ>Åž{î·´áàÁƒ­=(I(:j½u–ª#rÇwÈܦX€F³«ìÓl3…ÊÓ>š{{-ëîšACá¾C\çìÍ7ÿî¸âîßûÛõöï|‹Y,:!Í0à—eÒqâãrR‹ß>b€lM=ê¹çRÇÂØ±c+އ(©}»í¶±ÇÒ �ÑÅàÓq ™Ë¡¶“OÑŒ…–H*{�¤P3€v¢Š«ï¨RSEÙ»ûîû  îºë®Ìõm·Ý6ï~?òZ†GyÌe²«Áî×ç“­¶ÚÒýýßÿÞpQƒ%ÜØkJ"ñ£8˜ÑŠq4rÆOCn�†×oÜe—òVòÖ[…má)ùîºëžØÇhôû[o½e@54u§è8~ðÁ‡ >îž{îsÇlxýH# ê˻ロ3ÝtØ‚ ‚ãøîŠ–©Ð”´é¢Ë?ÿy{Ñ©²Ò¢ŽT¿Þ¦öÏ'„)L›8 .ø`Ȫ«®š3Ýv­)ˆáG•¥¦ÙM%Oø²OU²‹¨³A#<%nypY£‘#qÂÉ#­¡2ÚOi®Qv ŽÅyï½÷Ý” 3gÎ4 -Õ¢|¨öwºš±Æ{à >NÏçŸåAP×Tÿ¿ä’Ë2k]kšëðoWµu%ªCAIßï¿ÿAÎ}ê(Øf›­íK_Ú%sÛ'Ÿ|»ýï~÷[7ß<5í¾:0ö³³Z•pXm› êî»ãëõêŒðÓ¢«}´ÑFZ¹;ìÌuuvª<)DI2¿üå¹™òF³g[ë½­ì¶Û—3²šµK=¾~Áò ˆR¹ñÌ3©Î:•wÜq[pÜ<Uðâã j·„gFik>øHæúYgý¬è>yäwCÏËmƒù²T Õ4Þ/·UmÝ]åƒÊ#-å­›¨|:üðof’ ”¸ª™;йh»³Ï>/ÛÛk¯=s’jõÛG 0W[Æ�«©G©ŒP‚‹ødªJéò43Šÿ.•Ä©eOÊŽ=ú T&=òHª¬U=B3��ò‘`�mL7Ýt³}ôÿe¦—Üb‹Íl×]wÉyœø ¢Ê|àF+ø…§Q >è¡é­·ß¾p‚…ÜvÛ?Ýß7ÞÐeË{[n™j\Mš4Ée€‹F1Zg¹áõL£3Ú'ßY©ÆÆÏ~vΔ¤¢ÎÑk¯ý‹»®Šý¾û~5s_x”Œ}¦‘cW_ýG+Dë"úéú´ne´cXû«}ªt„ ¥ ¶?”h×èWgÀÙgŸkßùΑAyñÜûöÝwŸÌõ³Îú¥ ö…é½ôÒßÚ¹ç^`pHf´S)9¡Q¨¢\'žxJl‚†Flž|òO2eÒ.»ìRpÿ.½ô²¼mhÕÑàí·ß>Öá A¡`Œ¨¬ðA$M±ëG DG³n±Eêßê<öI->&lðàìúöZÞýê°(Ö±[h¿üå]ÝuÖ¹ðÂ_åuRiù(•I§Ÿ~F\Ù735(ÐjQ>Tû;]u*iK~øQ·öq” §v†{ì ¶Ç_-š,tÕy?þÄLr€~Ë4¥}t‰ŽjêÿùÏÓö­o}×.¸àb»ä’K]'L˜êá>X/¥f£Ð>þâgÙС©ßI=÷Ê+¯Î{\îï÷´¼û«mD©,ˆ.m ©®Ï:+[¯WC%Kmi*pßöÒçvâ‰'»<¢å‰/~ðƒc\ÝÀ¿·ÿøD«µp§R¡©ÌGŽi›nšJ‚}öÙç\’…¨Nî�ä‰'žÌ$ hTwx¤yœ/ùK™ë<›¼Ð³gvÂä¸ßÜpŒ Øò¨QZä7ÞÈlc‡¶+úø]wÍîãSO=“È X€wã7g’¯<ÕÃ/¸à"·„HœjëîW]uýßÿãfÔûë_ÿž·ý?þØÕ“ü{ÕL:èt<öØãöíoé’!E³0}ô÷rW«ß>b€Ym¬¦¥ýõå‰ON­”8|ëOúsæõ÷Úk²·¡%üw¤D•ýa:~Ï;ï›={Žû·â#áÙ—k¡T½�: –€ÑH3ÚòT±ž6m†kÀ„G3L˜0Á­¥Jþ™gþÔŽ<òû®£ïúëop:e”«QñÒK/ç4 þßÿûIl†²:D42\#´|Å>šm¬éÝÆçöÍ?&®S±¸Ô(XUÎ'Ožì"«¬²’}󛇹ûô£ØÓO?í*Õ jpÀÁ®sFküiD¹¦¿ó›ƒ>ÈÖ]w̶5Íaÿþýܨù‡zÄMMªÆ¥–_xï½ìÞ{ï-¸¦¢h$Ù>û|ÕuÆè5N;í§AÃss[gulîÜyö裺mkÔ™o„­¡%'¾ÿý#íòËï‚àGõ7å·Žç+š]§ýÓOgnßþöá9Ïß}÷Ý‚cü¡ AÿŒ½óÎ;Á¹pX0Ü5èT\%8îçºÛµ<‡h}Õý÷ßÏÊuâ‰ÇÙ1Çïû XtÐa¶æškºóTë?ü(§SUÁ!?rÕS€Uû÷ä“OÙŒ3í°Ã¾ånÓ¨+MÑ©û|‚™:l:è@kµ×ž™iâ”SNså–FÞ„G§yéòàƒgÖ—Õ¨úè JÂPG–‚8Ò¯_ßœÑlž¾+%ÊÉÅÿÚ%m¬¿~j[ê\Öë <(3Ýhk{ìƒÎÿºÏLCšæu—]vrA”)S¦¹5®ýkès,4ý9P+Õ–ÕþN—Cu$ÕŸ”ȪßòóϿȭ{¬ó£wï^öÁ“\”@~ýëûåŒÚ›F³ú)u̪\W9`Öq}ê©'çŒ>õª©¨MàÛ j[¨óGËH 2ÔuJh&-Ý'j³Äý&F©ÓOIÇ’{?­N}ux:çÔþP'¤Þë)§œê¶¯}ñ3)TÓ&ˆÒo¤>g½Íj¥º—F˜ûε¡Ž=öGV©3Ï<#ØÏã]‡™Ê@-¢Ž1cƸ™{>ÿ|²û<ÕQôœ¶XºHå°÷ç?ÿÅu<kdntI—=öØÃM¯ÏÝ'ï(¹¤-:Õй=ôPvy]vÙ©äãwÞy'ûÕ¯.uç¥êÒŠ‡øÎÄðLu>ú˜«¨þà™èøUù%êÈÛpà ík_Û§dêž­ø³ 7n5[c5\¢ºŒÊ_æ¨|ýÒ—vv#þ¯ùÑŽ³vÚ!ˆ¬åê-?þ„}öÙgné#¿¯QÕÔÝ÷Ûo_—ä­ú‰’µTn«ŒVùôþûçëÝ™ºË~û}­êúÚÆgü<hë§Ž{}_j +9FÉÉžÚ¡_|aì2:µøí#Ø~1ÀjêQ~æ+Õñ´ýÖP½B¿ëŠûå§kªdF.ÕY~øÃïÛe—]îbϧžzº›Pe”b6J¸Ð÷&ú¬O9åÇVkŠëx—_þ;— ¯}QlРA�µ3�¨¡pƒ?J šÎM…j8\rÉE.QC@ï|Æ»§LãÓOÿnU!j`h¶ Ïg«‡©cQ«ìs¶µ¶¢‘v ˆ2¤EŸ…ÖTCèÊ+g?þñ©nù�5Hÿñ[ò¶¡†Õ1Çü_Îmj¸vÚÿsŸ—G ê¾__0+䤓Ž~³\ǰh}L¿F¦uÔ÷\ˆ Të°Ã ‚.+ìꫯqAyót Ó±¦2"îüVb–f¸Ð( l‹RPâ ϯhÌ/~qý 8z¡Û¶‚ƒ©µ8óËQ`ôì³îFDFýò—?η³Ýþ)H©àB”¦=ÿüsZ½~°‚2šbWÓäú}Ô¶´äR´\Ýzë-3ëÔ‹¦áŒ¾®³áÇ(èQ�öÀpe“«Šðôã=øá‡ºÑÂÕPgÇï¹KQy¨àL܈6~/¼ð\ÖaF›«¶|¨Åït9Ô¡¨úÓ™gþÜÕŸ”ø¤K”Fl)¨ t´bm†Q£FºDêbÓ1·¶N v„~‡O:éd›>}†ëÈøÝï®Ì{îj«­œûäÍžQˆ~cµ\ˆêûšÍæ—¿<'øýúsNy dÈsÎ9ß]ÿ÷¿ÿã.êÐðÕ´ ¢~ö³ÓƒÇç:?t S¹sá…繆JéwúÊ+/:Ê.±ûïOÍ\¥5u¦Eé{<ãŒÓ[= x)š\ *óôúª_jMõh‚…:Œ/º¨ÉÕüÈÙ=ö`yäR'eø÷yçw.ùµå•L¥çé¼W‚†Ê?~œ¯"š5Beƒfëô _ûÚ¾™vo«ÜQÂC1á²3:£^!Júö ÚJx/sÚi§ºëzª§¨¡‹§¶GSSï‚ ÕÔÝ•üñÓŸž´Îw划ãt‰Ò9\ªÌCÇQ²ŸU%ŽêÒJVDœZýöÌÞß–1ÀjêQZE”´UM²÷Þ{ïé,<•iåÖ×<}¶Ë–-wõ}Žìð#ªÇüêWÅÆ~ª¥Ùþú×ë]ýEIhÿûõîvý¦l·]Û—�Pk$X�@Q…\£ÆÔñ¦Î¹=÷ÜÃ5¢KQ£ç¦›®·Ûo×Tmÿ¶)S>·ææ– 8:ÚÝwÀ_/T&ºo\9Â8¢”¥íGd+ð÷˜ZùÞ÷¾ã¦¼÷ÞûÝ´þÊ‚þì³É®q%ʸ¾îºk‚@ånÔ©FÃ*X¨Š¼F‰ï¿ÿ×]Ã4Ž‚0«¬²²«+û]£Æ4B@¥ßýî·cG „i¿.¸à<¬QÃO˳,]ºÌe÷tЮ3F£Â€Zøö·pÉÿüç¿\À_烴šrQ£1>øÀ 1¾jìs,8ï¼sܨWMgùÎ;ÝZ¼½zõ 6«ºóþÀ¿ÑªÆº‚ÿ*wî½÷>7íå|èFœ(Ù@çÐ:ë¬e; ŠjÔD¶Òþiê[K'¾ïÖÖè•ñãÇ€½Ýˆ®j’4ôꫯtÓ~j„ØâÅKÜg§Ñ/ÑÑ¡ù +üìá5ì=}Vë®»n&(m¥@ŒF üë_ÿrë®.Z´ØM¬Ñ{iQ«$,ˆQy¨ µ/tÐïÉšk®á¦:VpŠQlh/Õ–ÕþN—KÑ7ß|ƒÝqÇ]™ú“Fa© R‡£½Ìú‚z¤ºèðáÃÝh¾í·ßÞKqkЇUS'˜0aM»á†¿Ùm·ÝnO=õ7Ó“~Ó”±Æ«y;ºÑ¥ö!êè£tç¸~Ÿužkù’+®ømæwï½÷²>}ú¯}“½÷Þ{®CVÕƒücªi„©ýsíµ´«®ú£«—h”§~³UvØÁ­J®ð”ÐùóŸŸé:'´v¹êsZ^É¥šÍJ£cU7Ø}÷¯äL“^kjGýþ÷¿ :v®pK¡©N4oÞܼÇéXÑL\~ •‰Åê;èž´œ_.OuãRËyê$ó›:Æ|‚…\pÁ¹n‰¢^xÁÕe•à£óDç…êçž{¶KFP[CC"h7Ì(úZzœŸGu¸åRã¨LU'¢¨ƒSË*ù™2ÔÑ{Ùe¿Ê›ûƒ²ôn×ù¬X€b8ûïÿ5—rÍ5×Ý~5uwÍH¤²í¦›nqm µ •ˆïë.*GŠ ¬A}Q'wß¾}‚øÚ÷[¥:p9Ivµøí#Ø~1ÀÖÔ£´\OÔÒ jŒ?ÎÍ6ñæ›o¦ò•¿<H˜ÊkÕn¹å6÷9jŽ>}š‚ïfå lßÅÕÛTF¶}W]uEP6ÿÑÍf¢2Sß¡f€Î¤Üô¶D™÷%Êø›(ðoiýõ—Æôm‘‹îSÄ aÙ²åO������º•C9Ü„•G}Ð% åÆo²ßüæwîºfäRÒ(€ò(9ÃÄ¿è¢óm‡¶7�¨„’ØN;í wýw¿û\�ÝY¯^=· þh:áyé¿Í‘K2ý·%tI†þF/VàßÅþF¯G»Ïa^a������  zî¹ìÔç™ kÊ”©™åsâ„—�Ò¬¢�P)?ÓfnÐòI�€® ������ ‹ùðÃI™uß×\sM[wÝu €¹éðÏ>û\ÛÿíœsÎsKsDiÚ|-;&ÇkÓ%�t]Ï?ŸúÞpÃ/¶éòa�€öÅâÍ������@ðùçŸÛÿø'ëÓ§¯=òÈ#ÖÜÜìnÿæ75�)MMMnv=ôˆ½óÎDÛ}÷ÝÜ,óæÍµW_}ÍüIK&S³CûÛGXÏž= �*uË-7� ë!Á������èžzê?vï½÷çÜö¥/íì:¤ 8Ð~ó›Kí'?9Í>ýôS·ÈÕW_“÷¸††;âˆoÚ7¾±¿��� ������@0uêt0 ¿-]ºÌV^yeÛ{ï=ìàƒ2�¹V_}¼]ý_ì¾ûî·Ç{Ü&N|ÏæÍ›oMM½mĈ‘¶é¦›Ø×¾¶­¹æ���„%jð¸DÌõbþí/ ¡¿þÒ˜¾­1rÑ}õwÙ²åO�����������¨+½zõÜ&øÓ\æ¥ÿ6G.Éôß–Ð%ú½Xû½Uì>§Á������������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������PBë">}ÿY÷·¥y…����������€ŽÕÐØeRf°������������(¡Ë¤‹Œ]yLêJ²Ù�����������@K4ZW ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%`�����������P ������������%ô0���t˜d2{{"‘°Ö>¿Üç����€úD¼��€úD‚��u ÚF3:/}Ç…¾ÿrŸ����蚈t_Ä ��¨O$X��PhôvoÕM�����]ñ‚îx��õ‡ ��€:@Ð �����D/�� ¾t™‹L'Ùœ�€:Dcí‰Ñ-����Ð9/@{"^��è]ë÷‡,��hŰS‡ ����t}Ä P)â��t,,��è@K�����@ñ��€úÄ!��Ô'¨%F³����@×@¼�µD¼��Ð1X"¤.‘`�è,‰H 5p ¤ bA&����Ðù/@-/��Ô,��@Ô˜%¯Pp£òÛ³×9¼���� ó!^€0â��Ô§®“`Á�€:nĶ´´¤oK<é¦JñÇEôqq·G7E}����:â#^��èjºZ¦Ë$XøŠg2Ùb��´…jz®oĆ7£F¯¡Bà¤û¨tºÎèmá–óx����@Û!^€Z!^��芺Z]¦Ë$XøŠ�@=ò¿O¹“D&xâ'þv J÷‘)$©tZP����@}!^€Rˆ��:¿®õûÓuf°HÏ\‘la �@Û¨6x „¤‚$ÙÛÃÁ%ÝKü¨’øûã‚%¥‚-����€¶C¼�m…x� +H40ƒE]ja �@KT‘e™°DN $:ÅgtJÐp£˜àI×RzäI|@¤X $i…G¯�����ÚñÔñ�@W•èb?@]'Á¢…,��õ)<µ§º$’‰LÐ$MÕl€D¿oáûžt^Ŧéô£“ =ÎLÂ’èfŠP����Ôââ�€®.aÌ`Q—ZZÒ,��u¨¡¡Áý Oï©[âFœäÞ¦¿É÷YÎ6ѹä8Š:qKÆ>6~{L���� 3 ^€(â�€®&a Ö•t‹æTbE �€:“’ÈöÓÿbùªEáé=ýó²óÛ‹nõ-?È‘½=oÔIdôIøvÕwŠL ����PçˆÀ#^��èÊ’]«ÿ¾Ë$X¬X±ÂýmiYa��ÔHÑEq èÈ<2׳SFù5W ÅEšÔ‡B#Aò‚ %~äIxÔIþ%DJ±à ���� ~/èˆ��º³†®5E×I°Xî,šI°��ÔŸTÀ$ IN²‘ÆÆ†Ðí©uW8ñÏó|Ð$u=ÿ5št¬Jƒ%âgÞr£L’-9Á?êÄIrÿ½=îõ˜����@ç@¼ ë#^��èî­Ké:3X,O%V47/7��ê “Æ &™ÒÒÒ¨´äSüsã'Ù©?=‚&£Ü�Eøa>(â®[~PdyP· GZZ²Wp%oY´È¶����õxA×F¼���³Æ®µBH×›Á¢y3X��êF£(è‘lLZC2Ž$B#R|ãVA‘TÐ$¼nªn ÿ;*$!hÒñâ¦ãL&­èz©ÑQ(ºžúw:b¡àIs‹577Ǿž-����@ý#^н/��tG-É®Uÿè2 ‹—,sW¬` �@}ñ 7ågð¿ÆÆF7ͧ›ê3h7öhLÝÖÐh=üõô4 nÔF£´´dF¥ø`ˆ•Bp¤¾Dƒ©DÉÜ@HÒOõi¡ÀH2‚¤!îoKsêúŠæà¾[Ѽ–-S"i2¸Þl�Й©üóå]›é€ŸÇb/Yϱlj]S½s]óøÒ»¢‡ í£žŽ4~/jOí@¿Dˆ>a%W4öh°Þ½zX¯ž=*ŽˆŸÅ"‹ÈÞ†ŽG¼��JSù—šÍÉ¥º†=ºÖ]&ÁbÃ-v3��êQ´Ý4„“AãwÁ¼™öÙÇïç¤-]²Øz÷îÜ×ÃU6’É.h’y~DIÏS°Å'l¤$Ùà.£R:FÜè“è¿}pËFümú·‚"~:Ï+V¸`ˆ‚$šòÓÁ¿Í†ZÕz÷|Ó J©1�èLâ¦!^¾|¹½öú;ö¿7&µ_ˆ3:uv{i(ûiN4X=ªýçSŸï³;ª‹)ÀíDuwô–qN¤Rþçë’­;¢n^Ïíu&»[ÿÉì~ºj×~¡ó4iÙ#,÷³(¹Árd­ý<ëë[HVpjÏ£ËiÔT‡ƒÚƒsçε [ix£;Ôš‚8Á€¾½¬wS¯àëí™nSŽøßõhÌÀ'røç/hÄ � ¸Bñ‚=z؈à ¨W]&Á�€z \46?¿Áeðð•ƒËJ¶pþ,›òé{¶bÙâ ñ¼ÔZ\Ð$i={öH@Z2 dzÆŠÜÊg6`~=&'7ˆb9#Rô?}¿¢`ÉŠÍ™Q)Ë‚Ä ­¥jAgcc:rUkìÙÏô·d¶Kæ6€®"éÊÀ 4´Ú•‰DÇtê™ò2ÙF¿Ëñ¿÷•½V¥Åù¯ÕŸu²C¦´N}6±NÔ7’EÉvÓñuÒÂõ§hRT¶C²¸DCåcG|Õ¼f[ï¯ëL,xoÂJoë*3 K„*{Œ_²¼í¥¨}.·Ëÿ [qا~‹•ßWr_\Ý¡u? msl'ªÈg =7¸2hÐ 7KÅ {éÅÁ{cë¬6Àì\úY¯Þ½ÒmË9mÅ Z´„ˆ5|$VÔâ�PÊ3Ô7,��èP ëÛ¨›°‰Íšþ©MŸ2Éš/ ‚&©‘ ~ ÐÌ£\úPð—`Ilj®—šº,ñ#SüuMñ©)=—.YFmÐÐÑÖÔo¸¢÷™¥`��ÅDÊô{Ø®/›¬ƒhÏQÀµ$Cç¬[%ÝBtÉ6üÈ*I¬éÈÏ0YpâÞ2ßWÅõ³Žú Zûºm¿¿ÉУ¯L?ß“U´„;M $�YY[e›´&­‚™XÊ}\N¾c±L¯dë“!%ö;s.'Z1-u²ʺDN†ŒKÈlN/ñZ:¤Ÿ½ûÉØg¾[¹ÅF ígÉ>½][Rñ‚0?(#nßRK £/�� k!Á�€:ÐÐØÃ†ŽëþN›ü-_¶¬ðcd±Ôt‘ÙéM«1ƒ¶æSë¨ú�‰¿MS|jjOK–/[nÍÉF<|ëÓh:° �(_Ç—›í3-s±Ñ‰‰Ðc*ÝfkÄwâ ãU´¤@ůä8ëàžðb°qwùŸ‹mÒ=®²s-ÕÉlHË&HøP’ÑÒ4´¢•î[ïL’É¿¥›¹ÿ•,é¥BÊ|bát¥¸G¥ÿ•,òøjʨô®[[l;ó•$WÔP¤J °èis7Ú»Íwð#‡šõn*ðť㞄ág¯`‹ú@¼��€Î ��:˜nhé¡#VvIS>èÐáǤ.©Ù+4öFA“pp$<r€IÇJF¦éM],(ñÿö#Q–-]îF¢ 1Öšú é)Ð�ÕKqÝ.45éQ*o3±CȩԫšV-*øšÝQR7‡EöSÈÛ¯duÝÔ¨R&_%æ`ñ·…z÷“ÑçubÉ"IHɸ÷œó€Dd[V~ÞSæÉÈ¿[Ï¥#DfäpúE¶ÝÚ,‘z²Dw´ä=£ò¦~°T»¿Á.ëá’,ô¹žÅ R3Tø¶¦„— 'Wdѱˆ��Ðùu™‹$5 �@'l(h¢é[‚FôÔÏÞ³æÍ©+šSkªúƶdbÉü¤ ~ë‹›ì34%¨ž(X’Ôúª‰F<te,ÉŽô$à�ÅôìÙÓúöícýúõµ^½zXÏà’ú­l±–A0zÙR[´x…-X°Ø–.]jmM?ý{÷°Xÿþýƒë½­A7*12(ó—/3[¼d‰-\¸0اnTb]jõÐðÖΞQ ê7esÕ‰¶ú¼Ê¯£$«Y &’¹×ýñ,°¨«O·”Üb¥“íÈM$ÚþLV[&S?μ°E’·R×s:#c¶Õ©% ·Ý2GYÁ7™{¬[n$G›~¹‘,Š•…sKJ¿Lè¿:U'Ðoo¿~ý‚ßß^Ö£gІN¤fX¾BK+,~{¿Á‹ê÷÷·'ªç,YÞÓ&}6Ûz÷JØÐÁ é‹T’‰Q¬Œ"¹¢þ/�€¶£öwT*11•œÙ«W¯H¢&Pf°�� á Õ>Î6RS~fƒ J²<lŒMŸúiгÀ­¥!™³6gjû¹Ë„dŸŸ4ºO¨¸ï×CÂßUø¾Ìú©APOSÓ~6qäÞA°d˜›æ3õ=ñ]uWѲ#óï*†ÿf¶‘ÈdeE4LÝ‘÷Ø[ïÄëJsw£ÍùòÒÿž…ác?½æAŸ¾M6|ø 6l †ôì™J¬hllÈï.É¢¹9èTi±eË–Û¬ÙólÆô9Ape‰ÛP2oöü®Vÿ{›3ú3Ó+ë0n|¨ <ÀFŒbƒ÷sûÔ«g/kìј9ŸÜo@s25Åóòå¶xÑ›ìϬ™ólñâ%©Àz"¿ÛпýœÏ¡†¿Z¶ ºµdÒÍ‘Uγ-w_ªß¯zL­¦>U˺W¹ŸM2¯c<áŠäÈd VÖÚr±Ãá+|O‰øIÈyo‘`©Û—Ëț÷-ú¯Ÿv½ØG”ÌY"$¿³2Qr¿ÚOkö:~Ý'–ô³¤?ë¤/ÿ³ßlôs«õǘðu™ÜWÍùgU‡p _®—LBÊ9FK>¬š /ç’}Dñý ï{nYÕRàžÔ1£[ ìk#F ±ÁCú§ë=]ûY·L¬Ù͹4¸Ìœ9×fΘc‹/5Ÿx•LŸËþ«Jýþ'Óßéó!])&\gÈü†§‚‚Ë™¢$‘zlæSUý¨1÷é=máâ6{Î"ëÔ‰\(xP*6Å"™wìåÈ ^жˆ -´*^Pb–¢rã—n¯Uò<ÊT+šXìØr¿ùA›{Yzùm] ÇÎ5CõÕ#|ý!ú8 N—I°à@�TªÔÈJ*o¥Ä=§Ðvt{c^¶òªkÙGï¿â*†ê¤ 'Sä. ’¿ŸÑ©@Ñö PânÓÚªÍ-Ín4JÐ÷g#W4w}@C¹Ð¥ä—Q­=—}·‘äGïKÚœÙsìõ×_· 7ÜИê6M^ì@A¿çž{ÞÖXcu=ztÌã8†Q™ðtÕ™$‰–ÜN'=FŒsC]’E¯ž=b;lÜy“ht ÁS¬oŸÞÖ¯=j˜M2˦OŸm -ŠôúfG­7¤;)bgs:ªÖÔÔÛV[m%—\Ñ«WO—ä‘/™Y´¾{ôèaM½{Xÿ~M6xð�[0z‘}òñ4›tô¬hYI²Hd:—òßg^wy«$ZqOëWZ=&WÄ)8Ò<¦ÎØž¯ïåMŠŸîÌ;b’–=Š&ñUùgûÐÛMñÎÞdNwp¢è³k»ãq5¼¶øh*=ú­¼¿uGy*˧¬e7–hÝNXõŸa~S)÷†¤µ~'÷[Vâ1¥’ÖvåIÕ”¤WîA]àöd±‡$B’¹7÷éÝÛV^e¤=8¨¿¿="Oõmáਠ~›{—ÞÁïtÿà¶úÙ¨àw{òä™6mꬠ½½<ãZf#õ¼Ô@¿ÔoyCÉÜ㜎ÏdôJ¨ˆNË’ÈÖד¡÷ì¾D"Û)¯vdccûøó96lh?—hÚ’lÉtÞÞ·ÜãxAû"^€Z+;^L–õcYh°–Ì;×^{í5Ûxã]¼ ”T¼à9?~¼3Æ€j•Š«û$µn&Ëe™ëÅÚNþ¾TR[³{žf¡ŒK´?‡ßMxÌ`�è–Ê©åD«°mœZïÔo£weÀàánä­bEáµ8u=®¢W,é'n”Š¿,]º,¨À'­±gßL0¬³t0¡m ²ù³³ìÝwßÍ»OŽc=ÖM‡\Èœ9sìOú“}òÉ'vØa‡Ùf›m–¹Ïw"ßpà öØcÙ¾ûîk_þò—íÏþ³Íž=Û=~ƒ 6È™!G—ûî»Ï®»î:Û~ûííÄO,kô PLÜïWBéÞâ¾}›lÜø•lØðÁé)°‹wJEõèÑè.«®6ÊFŒl'~ãó,·gH¿Á-™ýÐom¸Ìvû”î¬Öeøˆ!¶Î:ã¬wS/—”QÆ»Ìy¿½z5Ø¡mÀÀþ6eÊLûðÃÏlñâÅ9ýŒ Éì>Õ'¿Ê;ê± ô‡R24><g/“]³®X¬ÓÐRÓÙëεN¬Èßráäðr‚×õ¬–ûXÖ¶‚‡´tòzS4é¡âÚ°©× ý~ׇ¿kMXÕúökjÕ”ÞJHØSˉ4Ûêo“>œìf¸ÒìVá¶»hû¾-žH”΋=’±W‹ÊΚ‘š«¡1÷uuü,KöµEKVØ€~©Aöâ“US3Åäv@Å%¡#/@%Z/8Æúõï[p›Åâ¢2äïÿ»=þøc¶Ï>ûÚW¾ò»öÚk+Š$3Ù½@õ¢çAj¶Ÿn& ÍVá·KmÃÿfû„J]_²d‰»ôíÛ×%Z´W=:',��(¡Ð þzNgPŒÚR•°ü祂7ãVÿ‚MùôÌ(†p'OêQ½®5Ê‘ ’äNÝZiìc ŠÑ±2oÞ\›5k–M˜0!'<hР’eeâÏŸ?ß:‰NèË%U¨1ª�ˆ—þñj¤FË?]¶Ùfûøãm«­¶r·ß~ûíöûßÿÞ¾ýíoÛ~ûíg}úö6 RÙå=rw\sͱ6dè�ÿHk-bíׯ­µÎªöÁûŸÙôi³ó’,–ð>¥^9µ$ÈJ+° kµ^½{[5û“Z7¾ÑV;Âzön´wßþ8/É‚T¢A·‰Ô_I¦§]IwÆ?)YÎ1Öùê*ùõï¤Õb½’öNd/ñÒRæLáw™™È*yQ]Z"Ó•ìÒ„å¹ÇW2¦:iÍyÏJ¦“Ùâĵ­âÙËQm°¼hrI5Ó }nåªæí´æ»IDÊ& #G±5×ZÅú6õ±jhOz46ÚÈQC¬Gð;üþÄOmÁ‚ÅÖ‹-é}Ö±Ë;TÒ‰éäˆRû}†¸ï¨Á,Ô9™ª—4[¯žMöΤy6tP?ëÕ’ÛÖ´È6£I©íêñT#/7nœ555eîKÅ ‹ÖõŠÅ ¼ÝwßݵQvØa‡ÌãçÍ›W4^ðÉÇŸ¹xAƒxÁ?‰ f¢õ ‡JŠPL+îþBÛ—·þ9:¾EÛÓíJ²P} X7º/,��¨¯„©Ò¥‹:b|#ÄbüÅ-÷ZÖ?¦Ð6ýhòÔc’6hÈ(ûèý׃ ]̈_±‹vü¤®(©7©u{#—Ô|¯¶lÙrëÕ4€P bå4øÒ·tÒIAGóš9S¹°hÑ"7¡Ï²WÃR-G.sôCô·TASjäßÊ+¯lßýîwÝ¿gΜ™y}5T,XàÊ:-ÏЧOwû€ÜhÿZzýÔ(«ÔõÔˆ~ #”/'y0}]Çé ~m5V©IrEXSŸ^6nõ1îwsæÌ9Áß–œ×&Gúß^%XŒ3ÜÖX3&¹BËDëg›9j¨ÛŸwßùØ–ä%YÔ3f±(¤ÜŽÛÚÎÔN®HÍÔ™f>îxJVò½ÅÜî,5˜Ò‰õ,M&*ÿ¤ã’-’O@ÓgVj枆êëdù dDg(¤µßuÜoCÑÇ'¬p†EÍÎ÷êµþójß÷ „…#†Øêk®ÔG{×àåÓ$‚íhFŒäš+Ûû'Û¼ósf°Ê<:Qæ‰<¦1Ýžo êÃC÷wu˜þRutQpá‚%Agè<›3{ž-^ºÜšÃ¯eé<rLkf¯ð>­hêésuþ¥n94·tH²!7Ñ"2«&êñ´V\¼àÔSO-/PÜRíyµëu]·©¼kHôHÕ ƒË²¥+lþ¼…™x–ellL¸xÁQGåž?cÆŒLBЊå-¶`þ¢üxAÿAv衇ºrOÕ>^ ÅÂ… ƒxAÏVÍ@„î§X‚¦Ÿ¹Bǘb]þ6)g†µd$¡Ò´Ð¿uŽøû£3Y� �€n©š¥4ÔpPEËW¶üvü_Ÿ|á·«F†Ošˆ›Z,:ûEö1Ae0ÑTƒ× Ö M eI²¨…F¡øDšÔz€-î;Î~ŸŒLAü¬9Å %L\ýõvß}÷Û÷¾÷]7eç-·Üb7Ýt“í¸ãŽöƒüÀüT‡ÿþ÷¿íÆo´©S§Ú:ë¬<þ{¶úê«Û_ÿúW»óÎ;íðÃwÏ5Põxmû³Ï>sSjÄÉj«­f?þ¸]vÙeî±m´‘[bD¯ñüÃ>øà;öØÅ# (%.±Â_WÂÏØÕFÙÐa~ßZþ¸5¸eGÆ®:ÒýÎÎ;?“dþ=w°è¯öeµq+YSŸ˜ä Ký}.VßÐXðDðÜÑ£‡ºßü‰ï~ì×òI²¨ü—¨úìî?µ|ÿšÂ>w¶³"}¼~Ö�= ‘Ûýžˆ= ?Òƒ´Ûú¬< ÅÑnýž•×N¨`¡WÒ"o­’DŒ¸t™°„OÊ)¸Áìr3•|/®Û0:{Eäù~¾ Ôk”$¯D2Ò‘¿ÖECìcãþ]ð5,‘“DÑÖe\[n¿Ð¶«>”Ó‚Ñs,î¼k>ÏÁƒت«v³P•>­‹ïœŸé'ó¸à߯ ~[lâ{KmYzðDÎ{Owzÿ-ot‰ }úô²á#Û˜1ì©WOŸÊ‘yœnkÚÓ† `K—ް)ÓfÛÔslñ¢¥nÖJ Í~¡„e7Õ¹«'„gjQGP³54öp‰Ë—¯°ÆùK›…µ&ö¶C¼�­ÕšxÚë÷ß¿kÏï¶Ûnvë­·ºxÁN;ídG}´+{4Xâ©§žr·O™2%/8ò;.^ð·¿ýÍÍZyÄG¸Y,¤Òxèu?úè#;æØÚÈ‘Ä PZ´Žç+öî—‰ÆØKÕ¢?¨ÂÏbá“7R³Nöä7yH°��Àò3\Õ¦ðuU®|r…O¢ˆ …ÿúŠž²¿]vxCCÎk……oKm7‘™™"ÕÐN¦g±ðËmTe+’$Yt¤b†á�J6¼7¶Ý•/Wâ‚£o½õ–›ŠSTž((1fÌ·´Ç;ï¼c>ø ›]âp÷)Àá+Mªä‡5ÖXÕC¯¾úªÝ}÷Ýn$JœéÓ§»e@PÑk½ð îö3Î8#§œÒý›nº©=ýôÓ¶îºëضÛnkýú÷7 áßÝð,M:æFa£ƒÎ‰6|u8¨ŸYiX8Yê.Ñr8¼oýúõ³UÆŽ α~¹›)s€dKþhïD"Tþ»>²ê(›9s®M›:;øwz´xÙ¿éåÏ&Q»j‚ÿ=cZG)@ô#“æ.È>/ºä\¨#1çàË=jòú¥ÛPùÈI—ù²ø lèÑEÏ…zîôË…”ên‹=ÏŠK&Š=.u®·ªSß÷ûÆ&WÄ<-Ù6Z2óŸDôÖÊ·•Ó¿Õ5ëö™.ÞVž™ó)Y|f’ðy§ŸIÍŒ6f¥á6hp¿trEƒ•þÍ)zVXƒÚÖé$ _N¨Î1oþ"ûô³Ï][_uW7Q=À¬dY 6úÀ}mìØQ6tè€Ô¢bÉâ{Ó»w/üî2À>þhŠÍ³Àµù³3\&ÓÑ_¥š´X*'µÅ>}úºòÚÇ|¼ ¥%5"—%EëñT£5ñ‚í¶ÛÎÞ~ûm/8p ‹Œ5*/H•ëšÉòý÷ßwí{m_ñ‚{î¹ÇŽ<òȼ×Òý¥ã‰œxÁ3Ï<c묳®m½õ6®]”+.~®ß:%ùø©¤Þ—ˆ‘Ì$7fÛ|?@tvj@H°��ÀJŠò#T©RåÊ/å^®£Øsõ<?Å^xj±¸„Žè~-w¯×3³­R¯‡úã%⦜KMV47P‰?ÿùÏ™òBA‰¯~õ«vÀغë®ë‚&ÿøÇÍnt‰’)N>ùd4™3gŽ+«HÙgŸ}Üå±Ç³ë®»Î4 /qndjzO­µª1Þ|óMûõ¯mÏ=÷œ›ÖÓ—Aj`N˜0ÁJQ‚Åæ›oáF©°¦jס …FiÖ“Ñ£GÛª«®š™âºvéð¿ëŠp={š½bäÈa9‰*Õ1Zô}‡ZðÿAûÙÀýlÙÒÔoµÛÐo­Î‹=lÈÁÁy4Àrg®uVGöSõ…™3fØ¢àœ9b„õí; &)3½?‰ìûT’Åøñ+¹N–¥Á>%­ÒeGÊüdªù� nÐj½QT(?y7J°(=2?¯N*ž¹Ú¾ßqù³$-:´½Ôûô³> —–~íìˆòŽPò“)ôÝ–ÚjΆVé÷^zÉï†ï.,¬½µZ?<w¦˜¶ýòË9þËyµÚËd63%»íèï›OÒIFŸ[Þç­Ç) ±¡1øýè–ñH$ÃÇaëÛáô«Ð/WjPØÑ#möì¹6þ‚Lb‚K!L$BÏÍJ„ž?h@“7Æ%o†+eüÞÐ7¨c²O‚ësg/ýò'c–ÍÖzõìe:Õš›[Lƒh¬ uÞ%Ó×[S =/@­\{íµ™A]>^pà©xÁ6Ûlk·Þz‹ýýïÏÄ Ô¾›={v&^ Ç§âñ‚?Û'Ÿ|êf×K¶$3夯ôíÛÏÅ tQ¼à’K. Å RûÓ´¡&LX+ˆlÄ ž ⛹Y3Rñ‚Ö—ã¨í/ÈoøÙ¥ó©S¿“ªˆ”\h.ýé~[S£ÜѺŠÞ£0YËßPÅ ¦L™ê–ÍQ"Ô€ýùîdH°��t.5Œ•¨J'?øŒUUàŠÍv7#…¿]ÛÏd}L±»wРI6äN#‰Ž `åÜW`=U’dÐZ{ï½wd⮫Ñê×WU¹¢™)b“&MrÇ×f›mæîóÉ`}ûöµaƹëÚ†:°ÕP,t,4ȆîÊ+MóÙ»wo÷ø X±50ѵ|úé§.P§ÑP Ìi ÙñãÇ[­¤ÿ‰ô®“ ‘h°‘£†Û€AMVhêq>žô‘ F”¢cW í&ÁÑw6×ú4õ²áúõ†/Y–Ó)èg‘R‘¦ûÖzê9I™C>7¹@S•¾ñÆ.ñHINJDÚyç N…›;JQIýƒNža6é£)5ëK´ùé™û ý ĹÕ?B]€Õ½P¨ÇвÊm}hUš\QI¿Ð¿»‚ªÎÈôú ¾#Úý·‚ ÅÅ6°hÒWÛÖ)*y39,úɶv/“%î­èí'ÊÜdÞÓrîª,'ÿÃRÃÓHeWïÞ=mÄÈ!Ö»©wè÷×ÿfv¡[“~ußÀM6jä0[´`±µ´ä–¯>Q"ül¿©¦Þ=lÜj£lpðûݵR³Piê< ¯5®:ÊÞ]¼Ì-^šž\%÷XÈŽ ÷3É)ÿ}û3ô;Ð˺zG¼�íiÏ=÷´#F¸ëZÒ@ñJŠL˜°f/œ‰l¾ùæ™2ÁÇ |ûèÐ!®ý£t•3©ò°1™šº ˜Šè¹êT÷ñµÏ4«N¶¬_ÌÊ+ÃÑYäÆ ¾Ä Žªq¼ þwËÏ.wŸŽÙ÷&¾oß{Ïůb·d6¡BÇîªcW³ 7ÚÐ%§§–\Ìn×/EâãùµøU"ÒóÏ¿h=ô͘1ÃÖ_}ÛgŸ¯Úر«:,��uï7¿¹Üuv4$3Óe3bäP;ôÐC­±SæÆ,ù¡Ê”O®ð ]7ª¦¡¡äö¢ÛRÐg½àèz„ ZùøYZïÔ'U„-]²Ô5hÕx\k­µ\ÐDSpj4Ik-˜¿ÀlÑ(ªÉ“'»©•”¡À ºM«éd(Ó_5þk0‰£ÀÅèÑC Þÿá‡ÚwÝiï¾õNY JFZi¥•ìë_ÿº›m%_ƒ 2Àš&Ït y‚àJß~}Üc’y£ºóiãgŸ}Ö~øa[´h‘;o8ùüóÏݨ0%CÅKä ù]yå©‹ŠGXçvþåõ#%ÂþÂåMëUÕ­Û¥´E¯¬äô!“Ìë¤ÍéÌùgjôV%¯åæ¨OuÊ–QÿÍ{vM?›Ê’+ n¥ëåmýJá® GŸM¸³¸¬-dÅ~¶1Ó+ÇÉÞóøœY j#³uÿ!dŠÑ˜¶_èXNuD[äÜÈF-ö¯¥T¹ÞH¡Y%ªÞ Ûhü¶Ý?Kœ[9¿E‘7Þ«wO4¸øÒs•y½dj&Ÿð :ÔöÚk¯‚ÛS䓧ز+¬\£F u—­á—Mq³` ìt޶O>–Z¤€ì2Hèlˆ ZÅêïJèn·xÁ‚üx’2ˆt/¹ñ‚·Ú<^àŸ\W¦jùÜ®¿É^{íõt‚Eì–‚(5°Â'XqÄ·l«­7‹}´Žs œ¬Å,sçÎ bÚm·Ýæ–ôÑysë­·ºóRËö¬·Þº†Î �@Ý»þúëSk 6ô̬Ï^̚ƕ`QН¨5§§fŒK¾¯Xˆž_.D™ä¥Þ€î)vV›ôM÷ÝwŸ 40sßèÑclÛm·u Úÿûßnäˆ:p¯¹æ»ñƃ†ÙznªÏÖX°p=òÈ#n‘>øÀ5”7Ùd“Ø€‰¤¼üòË64Zo¿ý¶Ö¯?ëªvZffà 7 ‚¯ÙlàþÝÖ êgM} O+úüóÏÛ›o¼iëÇ÷àA©Î t´°Žÿ(}´~ðÝwß] Á"TÑ”Þó,²-¹£ª”ð¡ûz¿Ý¥úà Ñy£ex”Ø¡YgVYe7“…ÎQMÁ«Û4b,W"¯G°_ÿ>n½ù9sZe ¡­Æ>­ô¶e?²ÐöË:uöކ¸)×}ý°#Þ›_ò"Ýgl…‡N'òÿ7,;þU vV—/>ßÚmµ>¹"œPá±µe’…;&¬}…Ó³¢Ý•©ùüö*yF2/‹'7¹¢çLÞ¡”È»’ûødh餵ûwÔ!ÂFè¦ê7#Y|™«Üd›Üͨ½<`@ßà÷´xøZ¿ï…ö(3Rzìjã‹&X¨¢ßßé3æZ9zöìa+¯2ÒZ+û¤ÀÑc†ÚÔi³mÅ’e™ä ŸÌFç<€bñ•‡j{Z²Añ%W¨-2vìX·HMâ òã›nº)ñ‚n¦­ã93I¥ýò šM"îwñÉ'Ÿ ޵—l“àxÔl,¢Dïð¾rÈ!¡G¦ž;mÚ4»ù¦[즛n²­¶V;=?öï—êªöwXIIÿüçívÇwºÄá‡nk¬±º=ðÀƒvï½÷ºØÅ¡‡b»îú%Cý#Á�P·|€óòË“‰Ý%J…~‚»ûöícµ¤Š›[Ó,2½cÒn¸á›2eŠtÐ!nt¬¨Qqã7Xÿþýí{ß;ÒÌr§wôY¯êxaöŠ®#oºO‚_¨‘Ôz)nìm´Ñ†nùŽÇÜ-Cpຎ[MÓxÝu×¹2ê?øU¦Åeò>Ì-%òꫯºrNÉjü…—8òÖ^{mÛj«­ìÅ_tA– 7Ú€€I¡¥5Ž:ê(P0¬Ðµ4dØ€¢÷ëxÔk­µ¶ 4ÈݦÄÛl³MÞã5šJç·Aà/+?…`Р6ejС±¬%{_²Áž<¸ø>ɬY3]°Dç¦æUç‚L (*¸©ewî¸ã¸Ñçùå/9s>åýf¤{{‡’N°¨TY$íõÛTàõë”Ø_íìÑwD=/ÛQœ¨0i!®ãÛWÀ“ñ/ãã B‘ñŸC¢Ä¿sö#~ËfɲFÇ“I†±Îr´V¯=Íœ¶“µ-÷Z‰9Éø¶­“^23&¢IX¥ŸîL^n¿ò«ýñîŽ+])²Œ\¥Ç]Ïž6tx鎿Ÿþô§±·7䦥%¬wŸÒ£«‡Pv‚…›«O/KÆLx¡ßýéÓ§»:êú ôï;ï¼Ó àêîÑO¥)¨w ¶¹øó™ÙÏÕh_vvÄ ÐVÂñ‚G}4g0—:¾5£P¼@Ißÿþ÷­5´<HN¼`ãT¼ n0ñ‚®«½ã:Þ B娒~–,Yj믿n:Á"a3gΰY³gØ®»îÝ¢[®ãÎ;î¶wß}×|zf´Þè;ª1uêT»úêk\²“êGq¸;/úç‚’Ÿ´¤¯ÎË+¯üƒ;_÷Ûïëé%| uŠ �@Ýò˜-·ÜÒý­u0°œmé1J†ˆVÚüsU|â‰'‚ÊÛçvÚi§¹™).½ôR{ýõ×ÝTþÑQ&álÛrÐèº/¿ ‘ÊSO=5hDæ/] ŽÛAƒÛ7¿ùM;à€\§®²à÷þêW]CM‰\Jö:úè£Ýz¨ €Èºë®kgu–Û¾F¬(вÇ{âÖ¯_?;þøãƒrª%ðöqW•ƒýúö³!AãTû³í¶Û¸ ‰¶-j *0£¥4Ú_Át ú][yå•Ý¥½h´j1~É®1É>q´D‡ŽÛå¡ßól <iêÓÛC·§Ó£Gc°Þ9·Eé<¹ûî{ÜT»Zdÿý÷·ÕW_Ý}~¢`“Î1èùË_þâf£QÇŠBâgÂJ½V©Ï¢reL7ÞŽIíUÏ)kY6Ø•êë®ácÎ'þ4ä½Fî¿s· G‡Ó]ZB׋̽f9CÉs’Ò3F¸»³û”JR /Ð’ÙRô•â?“{ã“;’ 1ÏÈM|n­L’E¢šY,üwÕRòQí­¼9LÚèµ]Ù–%ÄýõßUhöŠd~Î[YòŽ«L-“ªbšœ¨53¬”º^¹†Ì~e“,’Vù'W+ù©MáóOõÔ>}z—ÜÊ¿øÅ¼ÛRŽI‹¦ÐèoN”î©0°¿•kÄÈAïÓ4àÏ=÷œëTQ}\usÿý÷3qŽ<Á>:À&+ÁÂ:îÛPß*‰(ñAmþŠã 8¨¿tð¶çž»ñ‚ÁA¼ ¿wü±Ö¼¢9h#ÅÇ ¶Ùfk[kí5­ðXÕ Ç®ºJ/8Êæ/88h[õtƒ9Ð5tD¼@ǪŽýBu¢L¼ ‡Úâþ7?a¹m«dæ¢óÄÅ –/Ýžo«ûÁ—­¡$-i¦#Õ[Ž:êH[gµÝ9(£F´Ã;ÔÅÖ.¾øb»á†]¬n·Ý¾l¨_$X��:‘Ú… NÃS:ûû}‚EÜÔÏt –<ÿü vöÙg»Û4õž*KjÀÄuVèº*{å&x�è>â¦þÕm©r —}ú4åü»¿~îâEG¨©e <eÊëâ;Ä”MŸÿšýûpOIê@ÎLGšh}ÃõE#'4Õ¬FYl¿ýöny‹Ö®1^®þ:fÝÞ¾}{AÄüN—=¬Oßâ< Æhéà9âˆ#\€)ôQòÒvÛm炚—_~¹{¼,â+|'­û,òûŸÚLmëánýÎÐøÏ=7¡'ÙÊè–È–Ò·ßJø»Kæï—;&Ã3´¤_$¿£Ô=#Q¸µl¡ß•¶HÌI¦§1 ¯u=¼-¶Ùj¡%â¸D“*w5û=%òoK'W¸7”¿ìA±Ç¼'Yûï±Ø>$ëä+ŽªŸÅœÞ¥¾‡RǯŸQ¦ìÇ'ÍŠ=D¿É}û6Yk$b¶¨ ì¨$Á±Ø šª7iÆ M®ß~Õ 4•¾:/¿þõ¯[tŸEÇ,¤!¸­%œ»F|�èÖÚ=^® 6Ô]¼Ñ£GYÉxÁ€ìö•°>4xþÐÐ6Ð5tD¼À':Ä…•ùû©¤îD~zcµK„()äÑGs Çw¬[$:ÛË€ýí+_ù²[NçôÓOwK`QßH°��Ô5U\6ß\#;ð g6a­qvýõ×§Yƒ�Dfj×P%ÊW‚”ý}òÉ'ÛÙgŸk¯¼òŠ{ÌZk­å²Çu_x™õŽÛ (ŒúÂwŒZ þÚÛĉí¶ÛnskìjmRÍ\¢ieÛRûw¤z™R3IÄß_j‰2%Nj½T7}òR2Ù’3›€Ÿ©BŸ¡‚3Å’¿¹¯ÓÞŸE´¸•ƒÊQ¡ø$wU£èíh"\²ú¹gË¥šãº-ëXn}e§U½Dz†�-bGC´£½ÄãKÞï¾§†œÇÇ-£cVú;­‡zugªÛ§vµ@âLÂgU$s’AÜ(è2Þb9IBÉèã­:å|pþó\‚E¶ƒ$u^§®¯2nu»è¢‹¬øë–¿çö-xR(ùX#ÃûÛߺúýŸ0a‚sÌ1n&«Œd×ÏÛv̺D›!^€Z"^€ŽÔÖñ‚zHPÇó[»/ŠL›6ÕÆÔÖÌl/ú:¼´Áë»ÁžsçÎ3Ô7,��uM• M5ßÐOV²hÀ(%™™Ò®Ôv‹Ý½7òÎ_4^jM´†ÌãRëÁ¥‚áç* Rl³J¤²g“n-¶p€’Q-m¯P€8ÿqT$nI¡Ô?:â`JvÐ뢞466º-ZäþªÁß6ÖœÈ]Π¡Š@aô©ÉDöâþí_%3Z4Ydîdîv ¼žaªNëtÇõý÷ßoÿüç?]°I#U~vÆY™eu¬àë„¶žì‘ÚhìŒ0áÇ& osØ)V7ª¿NŽBGbCè¾âÉ ¥¶;aFú8KÖ.Á£3ªe×eÌÜu'ÜvPqÓPåWž:Ÿ´½˜¥lB@²ÌOº3$W„*ÛnG…G^¶؆"³\”ÕîL6†ž›~^C8+™÷S•:^â~ã’¡¿ÙÛóÚÿÉâ¥äàsÞWô·=µ RzxG¨º÷¥Ó’-¾ÍŸÿ{­÷â*}¼@U¯R œH‘Œ){“Ö¨Rh©m'Û _Rqê�…xÚJWˆT6ë�ê][Ç ¢u ?‹„_"§¶™¿áã4¼Dˆ.e.U»}Õ‹ÒÕ˜›nºÅþt͵.‘BË‹^ýÇßÛ ASUÃWPó×-,��u)¼TÇ}÷Ýc©Êuˆb£Ï>ûÌ®¸â {ûí·mà 7t•,Mÿy饗ÚñÇo«­¶Zzê²dN¢Fí+��ÔÞšk®éÖëÕr[l±…­±ÆÖÖ\Т¡µA‹j^7™íHIf{TZLI¶XC¢²}š5k–K®O>ùÄZ©|Ÿ*Nµâ’5Û¢»½^«g†±–×s5ät+NÊ<"ï}‡:>ÓÉᔋðÃ*íXöŸu"™¿½ÖvR—z½d܆EÒ©t¾ûY,*M\ÎYïÀ/ÆÒöÜ÷“´‚ `aÉÈó<ßqÜ’(ÿù9·ç, „»™A m©£#Æ©þ8å” -­ÞýÎ)wy~VMß]¸gÀwÆ•“˜‘: S‰Åå•Wæü;®Œ©T%ë¬/X°ÐˆO üüóÏÝìšï¿ÿ¾[FTeÊo¼a×^{­[R4¼d_JêƒninÉþÛ•ÇIÿ‡ŽI�Fç©g£µÚ;^à¥öÇUÒÂí§è€Ë¸˜ÕÐŒ~– -ÖܼÂй`�¨K™�ldö‡J+2µ¨ø(û6.À¢ŠÜwÞé’+6Ùdc;î¸ã­gÏžöë_ÿÚ^~ùeûÇ?þa§œrJÎãýþh›Ì6�¨wtk„G× oKóç/²¡CX{[¼xiÔÈÝÛ¼b…-^´Ôúõ+=öZñ h;]/à[¼S0•7Pú=§“ M; .ú £åvìç%æøÄâh}·@"@\ÒEÞcÊ ÔûQå³Òï'Qä³J÷»WR_ï¨få&§Ä¥Ò¸·Yà=Æ}Æqßsî ƒ1ÛÉûb³£m“žÓ…S%ŠiÝù_^bE~²IνE¶Q‹r)þ;meÒOÝ ì,¼#ù MåžWn9-ýþöïcímÁü%å?vÁbX`†ª|ÐÞ}÷]Û`ƒ ì[ß:Â{Øu×]g¯¿þºÝsÏ=öýï?ï9ú´fÏžŸºžô·ø.â�:—rgtAçÔñ‚p½A5¸QƒÊ;–³_Eë$1¿©¡zK´¾ž¹ºM•ØEÔ,��uïî»ïIUšR½’u‹ƒØöÛoo•ŠVœü¿UqS%Ê'Yø©ÈtŸ¦üÞ}÷Ýmß}¿fÆ s·ýèG?rS‚ki“Ôöò÷¸Ü)Óhx�µ¡Æ—–îѹ׫W/ëj´>ã’%KÜ”ŒJôjoË—/wû Ï¶õÓ%ÆÓ´ÊÓ§OwåéèÑ£Ûíý阙3gŽ{?ƒ¶3f¸ëƒ êV³é¼ùè£ÜÌ1cƸ™™tœµ¥ùóŠ'Xè<Öñ ã® .t¿§¥Î}uâ„*SuàuV4÷-±~ý|OûE9æÏŸo¡PçWe˜‰¢ÛoO÷záOVr–j*/øðdfNŒl-¼!òœø ¤…V|IĨíwYøýûœD…I¹Â˺–It°¶-]‘×ËÙ‡2Þc2ôX+‘<»ÝÈ'à‡á»-$CË"Äìs¥Óˆ×èC,8ì­‰ÂÉ<¡g´÷(Þø×)}Îç=#Ù6Çe*Ù#5Ke2WN$¬9øM^¤ßß O<ñDä™ÅË-ͱÙf›Y1 æ/²r͘6×V3"ö>ÍP±ÓN;Ù®»îÔ'‡¸ãà°Ã³x àÒ¦ú<fΚ¿$Y¤“ �êYø·H×§N´©úÙ€íŸL¶Ññ‚èïbBÅbº?Ñ xÁ²Ð­…ëEjskÆÊè~Gg¯ðqÀ#Á�P÷~ùË³ÝˆÒÆ?ëC‘Ž­ ’²ÖZ«·*Á¢u¤ù‹ð(]öÙgŸP1µÛˆÃíè£rÏIŽ’9ÁAÝ®N:*e@ûQ£ïã?vÌQ£FYW£õ.?þø#[yåU kÛÒ¼yólæÌ™®A]ë`‰–VøôÓOÝ÷6räHk/Ë–-suÊ+ÁbÒ¤I®Á­ |wJ°ÐRXšÆZ³5­»îºvÔQG¹õAÛÒô鳃ÀLáótå•WvÓkkô§?Þ”ˆ£%94Tª•(£û×Zk-+fbEjIŽl00iË—­Žñ…6|Ä`+ØÍü¦7LJ=JèPà°àëÌ뎡r’½”\ÔQª›i«¼Î×Ϊ¼ÒD¤ÎZn‡fÛu¾ú:kf†~?µ@¢øk».ðLvMÌLIÍRa±_y¡£ Ø±^¢'oò‹to}Ò’ÕR™÷?º>óv“Ù}jˆé$KÐí±¿'µ½I(ÅÞKµï3Qâß™×)rÎ'ó¶Pæùí“)b¾GŸÄ>cvÊ*ÿY–Ÿu‘L\î ïg¢Ò]Ë3…¦jië"3çü-.\$$²O.¼éôw?¢œ£;zL¥n_±¼ÙfΘg#F¯Ûæ-bÅ,ÔùS*ÁbÊç3¬\s‚úâ…K¬OïÔïz¸í¯ÄŠ( Ì8ôÐC3ÿŽîê’ÅKmÎìéô¬l RêôÌ-o� ³PÙøÎ;ï¸2Xmjb¢]CGÄ ÔŽV ¬P"®j}ú¼l/<ÿ’ 4ÈݦÇO›6Ãn¾é–ô£²õSŲ-\dë­·že“£³u~¿,I5 z^SS“‹3ÍŸ¿À Œ™ù*ýÒÓ§Ït¯×ÔÔ¶[P=,��uïÄO0å)ø@gñ9,’6xÈ@kB•$Ÿ`uThJTý3¼\t:1UÈÊ휣Á¦óK9M¡¯FŠ VZi%·Ž¡’)tž©Ã_òú·|}úô±M6ÙÄÍN –Ù®5‘Õé©uuj[êÄU(Žž¯ŽÏÉ“'»çû×Ñù­ýQg¼¶­éÇï¶£Î_5Üôx=F³1ˆ2ýu®«1ªL{í¿2è5#„:…•X íkÛêPVcQ³(hÆ =WÏÑì Z³qÚ´énÝK,´ozßzí#F¸÷£D=Vï]ŸÙÚk¯Û¬û•Ô ýÐg6nÜ8ëÛ7µ<ÂĉÝg¥×Õ¨<%hêcFѶõY꺒4“Ïü~¨3\Ÿ›>c}úŽ4>ïhyç“bÞ|óMwŸ>mëÅ_tß³öOë}j¿”„¡ÏVï[Ÿït×ûUGÏ×þèµâFSèûÒg׳g÷½hߢkbë{Ó~ë8Òç£ï`„ 5Ÿ±£ÞèsÕg¨ãYï]ÿn뀉f°X0_ÓmÇ/ɱå–[ºcíõW_Ë›áAËsI¸IÇžŽá}÷Ý·àk.Y²Ì-M^"Äý†ÿÓ¹¨‹%K—YSïø2Aç§Ö›üÙ'ö÷¿ÿÝ—ú¼Ân½õ– ÔÛ:\,FÇoêýµ®ÙÞq5ˆ£à;I‡Põû™,¸âõ»RÝíñ¯•û|+ºýDô)É¢þ\Ê$gÄm1tc¢Ø ùÌã‹ïcftvxoüyYô©‰Öe#¸áóîJÎëå$Y{zÌ,x9{•(=ƒEÜõjÒ›ÂÛ*ã+ɾ~Ç}ìsÙï,ÿþ≭ݗðÇí¿Úd(P^(¿!u_"t¼G7l‘}kå7”Ìî[t»îŸíRD&âoIº·ŒJúd¬Ê>—ð™WOÏZ©zŸ–ßXºd¹õn*œ”xÄGäü»Ô¬ªŸ³háR÷»_îW¬äÌO>žjkMëþÝšc7üŒÏ'Ï êééuسÙm™ÏŠÐ}(Q\1 ïPlAídµ'Ô¾U›TíµýußìÙ³í½÷ÞË<_í µ•Ø¥8Ô)S\›VñÝ®‚îÍ7ßp墟±Q·:Ô=Ví^ÅÔT[[¯¡vŒöA±=Gqµ³µ?ÑX§ž«ýWü@ÛÔóTFê})fÐâf*Zdn¸Qpßâà±gâ(Úf±¤uÔ‡Žˆè8-6‹ÅÎ;ï¿Óì…ç_޽yþ•½æš?e˜^.PçÉ„ kÛ7¿y˜E,DǬ^³š í¯8&}ø‰]zéo¬ÿ€~öÊ˯ä<æø£Û—O?ý,ˆ'ô öÉi¯l\TŠ �@Ý;äƒÝßÔš£V:¾S£úF¸Ò¤Š”:Xâ‚%>cÖÏjá§÷ÿNí{*È®ÆFxzûêF‡Ý›Î5 Ô0Wã[šjÌýïÿsA_êøW0BIº(�ѧOSÐqÿ‰½ÿþû.@ Ûô˜W^y%ó%n¨±¦üè’>þuÕxTg¼÷ᇺ,z�žþy<Pr‚ &lµÕV ´oÚW5B• `‡$/¿ü²mºé¦îýèyzœ‚zŽÊ ½–öY¿Ï ¤èùz]5ÄÔÐþjÿô9è9zO>È¢íhz¼7â–+ÒûQ‚B”Ô }ÓuR´}6úÜÔù«×XguÜûÑE¯¯2NÉ¢}Óç¥à‹öY¯§mhŸ´oúLô¾·Ûn»¼Ä•— ¬è±Ú_?3Ç[o½å¶é—êP†>3½”ô¹*YE÷)CÛÐ~i¿•°¢0%WhŸt i»¯½öZ&y$LÇ“\i_ô‹ÞW¦Ïu£6²W_}5|mØn3ÀL™2Ó®Ÿ`¡d!Í µåæ[¸ ]œp§¨¾O‹«­6Î ÑHÑ¥K–åo'™ °(ùbά6zL|‚…Žß=÷ÚÓî¹ëN{öÙgc÷ë‘Guu<n½õÖ¶ýöÛY1:f[£–µŠbDù÷4|Dg«ë´uHí·_úó-¯Îy!`ÌìnÒ¬Ø6Êx[U ™à„%+J(&”˜‘ÈM²p7Å$OTò>’‘-o-òðž„_ËÊÓšw—êPîcóÓ@RÇIþ(ÂD4>¹/çC)ðZÕIL¨VõîöI¤(O©Ч¥ÔFÎùúxõÛ<kÖ<³Òð‚ÏÝsÏ=sþ]í²&S>Ÿi•š1}Ž Ú×Õ7â•ÈH͆1sæÜÔ3¹å\¡‘º�º&Å ÕžUûKe‹Ú¼Š(î öµÚÖj+AAI j¿ªí¬¶ªÊ ÅFÔ.W\Aín]W»HÏÑ µ“uÑ� µÍ•t¡¶¿âÚŽÚÖºO1½¾âzMuž+^¡v¸ž£ŽuÅ6ÞxãœÙ,µÿjkë±zÚ%V¨,SRˆ(A]q-åðÎ;ïºöº^KñµÍu[/O‰êtT¼@çA¡ døæaß´vÚÑSVlÙ´ Ò óbÔÈ1¶æ%†ÄÔ|ÓñüjÚ1Š×iŸþú×ëíᇶÅK¥ëÂÙ6ôí·ÿËýÕ9°ë®_â »ê �€N#Q`”O{P§¤*Cª¼éRNÀ5:u°*lª�†G;“\TO5úuŽþ÷¿ÿuÿÖÌ:•„ d5öhÐ,ýûp÷)˜ ç©ÁîGghöý[$4“:CÃ4{…êô×ë¤F×-p >1C·ëßz^xÁD·ùe4”è N}¬×¾i-fí§¶¯ûýìÚ¶öOÏOQèË&ZôZ ªèß/½ô’{¯êü×cõÞ(Ñ6õþôºê¤Ž›MG¯¯ä DhÑv|cRÉ úŒ4ƒ„‚"JFÐ{SB‰®z¼^ß'šÅÑg«m*QAßÏC=ä9Ú'ñe§ÊLl�Òö}2‹öÃ'9è5}Òƒž¯ ‚PÚ?;ɾð·O*ÄÑgàg&Ñ~*h¤ÏBÇ‚¯À>¯(½®öEu}úõZ]=ÁBÇ«¦ùÔgëÏ¡Zñɇ™ø–f·Î€¾—3æ¸c~Ø ÔºëÑQë:FÁ›BÝ eÿ¾êüX²Ä¦Ï˜m —,ÍîûÓ`-– ¦, î›>s¾ 2Èú6©=wÔ‘Ó£¡Ñ¾¸Þ6fä(7å§Î£¨–ôÞj‹¡C‡¸²*&mÓ=rÞ¼ùÁy?+ØŸÔ¿‹½Ž¨I„j8å=¾Ûvµ¹¯Î–rCýó»ÝÓãÈýƒbŸÚÇ`&¡ÙŠìI‰Ã,™Ì`Þr™„€üD‹Ìc*–pËÆ•K•œáîÙrö¢¼îÜøý(#eÇòŸ™Ì”U…&€Húk‘B=‘Yˆ¢þÊ —>; G:©ÄL·j;FÛq­Eçz±%`JÌ+óïøò­úÙdýn.]ºÌ¦O›eƒ‡ô ~›,ûy'-{üUVžºYe©ä1ºû=ž;?x½™³ƒÇ´¤g3IG®n›ˆä¡µXúV[ºb¹}øÑ´`Wz¿ñ3Çréä•Ôñ¥÷ªäŠ?žb‹—-ÍÔ–o�Ð=¨M¤6˜3ÐrÄ=zôtmàðÆaŠ ¨}ªÇhÐ…ž«¶´Ú&¾¬Y$4E÷+î ˜‚oŸ««D µ¥Eqµ•p¡6¶b+~†ÚjZ‚Qmú'žxµ£ÃKèvÅGô|m[qÅ5t¿^Sísí«¶­ûcQºÚÜŠHÜ€Ô—¶Œ£x‘ŽW?°!w&i³±«®d«Œc…kÃþGÞÿ«Áý`'Ó#5ƒ)ýñª¿:÷Z³d¬ŽåÍ·ØÜV^ee›ï+šWX¡Ú—Þ—>ÇQ£Ff÷u‰ �€â2UÕñ¨J9$¿,H%Kƒ„_@a:GÔøð£ÔÙ®ÎqÍ. óMÁ?‚#ÈöëªQ¦ëjЫaï—ÁP`B#Dôü(ŸPá—-DI *øýÑu%bøe |Yà­üãÔXóI =Ü~è6ÑóýŽðû.ôyøÏA ?s…®û‘z}m»Py¤}R�G#T|ðA—`¢!ô^Ôx}æ™gÜ6´?Jxж´¿å–Wþñz}}æÚ®>gm/Zž†¿7ñ\}Þú ýì!~©mCÁ jàÑçpÏ=÷¸ç©ÜÖcôôÝûŸô]úïDÛ.–`á?;%e<õÔSÖÕé3SB.m!5Ûu"}^fk-ZjS§Ì´¡ƒW)þÜ"÷•†ÐãfÍœï:5\ 2}c¸#«%ø«ßüA‡ËðšgH{Ñù˜â/Ô<´WÏÁqQx›­ð¨u/‘ž¦ôƒ‚sxys¨£·Þ‚*­ëPì,j5J¸ø!-ÅŸÜÞ E{�µ/~}wb‰îØ ÇÕ(ý½è<.’ ‘¿ñI±ÛµP^J6AKÂw°&Ê:•3u•ÔL*Ix^Ü}Å>÷Öw¸–Ú—ÔñÛ’³‘üÄŠzStÖž‚÷U’öRz»¥êxõ×QùeYþ29•¤û„¶ü¯%øõœ3g¾›!bìØQ¡…^ªø<B7¢[™:uzj´kÂr:WT÷S} »Ÿ©}]°`©}ðáçÖÔ'†”¹Ï¥’,’6gîûè£)A›aa¤\Jm VI6�:µÃ4#€ÚôØ ŽìðlŒÅÊ%P¨ÌÐ’ jçª\Ó�%UøNi?ú_÷+Ñ"<ã®OW»]÷ë>=FÏ×}Œ¢×Ð� Q\1µ§|»Z×õX¿tˆþ*¶áË3Åп}ÜÅ?VínaPZýkëxAŸô ×VL'*›Q"b:¼Z’Í™‡‡ÿÅÇñªýîÝ»—?ÎÐu`�èvZ;ªÆWà|€EŸd}\fíèt£A•¾j§/|^Ê AƒÝ( Îðtî) ]²G|�@ }ß0Ó}êŒ÷k,ƽ¦šÆÒS@ ¼df­øà¯‚ bh›Åøç¬X±<ç±Ú^ÜZ>Á!Ž’4ûƒ>‹ðç @H)zFÙrË-ÝûÒô¡ Ƭ¿þúî¾vÚÉ%ExzßJp(ö¾ôø ‰Þ›>k_+™AŸ[9esê»kÉ$cèsÑLÚ7½_OÛÓÍè¡Q0á÷æƒFþùþøðÛ×õh2Žç÷[ü¨TG§KkÈœ“>é"iS¦M·ýzÛÊcGX­ùî ysÇïŒàXÏžKqË{¹Y,‚cã£I“­OS/4¸_N’EK:É¢hÀ¥Ì*€^ÃOŽŽ— P‹í•¯PFë“[ªYÞ‡2Ù^ußd%Éq) ¹3 ¤¶Ùf¢TRL]3ßœÌ^T¨-‘ˆlËÝnÙ}N†ïï‹¿Ñí„·Uk©àsêºÊEŸdQÎë¹IÚì)œQê</]¤»ØËÞy=®T•ßf2=qB~rP-Ï/ÿ;Vá³J>"•JJ+w×õÌeËWØäO§}M6lø 6[^å³OgØÔ îþl+éLÑã.XlßýÔ-=¶ò*Ã6Cï¢ KK–,³O'O·©ÓgõLuhævøä$OÕø;Pßt¾k‰ Í�¡6³–4ÕÅÏ èˇh\R³FhöÊ=öØ#3hCËyèqÛl³‹eüç?ÿÉ)Oâ:DïS{Èß®d ?3…H⟧ûô7®3\ÛÕ~&ÓIíú·þúç…è˜S¬Mq«p .ü·¿x®;ûbü±éÙ䈨:›“�€ú Pª‚¯ œ%~Úyß ç§ì×m~T½®‡g¯ˆŽÈ.çµäóO?³ƒ®¯¾úx7ŠB¿f©fb=N úðì3ºèv?kÁ;ï¼ãþjêK»á5D=ãêÌŸ4é#75¦¦¹|ì±ÇÜTšêÐ×ÌZkT¯£}ÑkV2M¢öIÛÔ>̘1ÃmK³O(1@#:4RD3n(H¢$>;_¯çg‚Ð z/JÐíZ¦ÄÏfQŠÞ¿>7%VørÍ^ ¢<ûì³î54BåùçŸwŸŸMÂ7l5ˆ’24’E³Hh?}¹§Ä­«¿o¼ñ†{Œ–Jˆ&3ÄIm#‘)Oõé³U�I¯¯ÏMû®}Ó¾*¸¤ïC´?ZBFŸ‡^_Ñg«ïI šõBŸ¯¸‘ŠÁûÔqäGßèuô豚½"PBkåö|0CוôðÁ¤)6eêl×…£K-C ‚N?œt‚ÌÏÝ£Ðqè“#Ýï{p™=kž}ðÞgÁq»$Ý ˜í\jIdãã.ûÞ,< øóÉ3ìÃ&[óŠåVÏÄ–ÊVNÙV}ø-E.åhM¢@CdÂû‘âßkôýÖòýW²­üó.ùë¶hÅfµ(¶í–tçw²ÀóZqÏËß›BÛ÷—–ÐÅߦòº´(oT–úò´Ðv,tI„>‰ð'Rù©žÈI2Èý Êlÿ$Û·Œ)'y¢!Y¸ƒ<û[%¯ü†´”¸$ÓKs'R³™¤ó~üÅÝ^@ø\ _ŠýF¹ãÊR—â¿]µRú\ÎìGð¿ù ÙGA`Þ¼…VË¥d\I|ÖJpøèã)A½}y¦5¢œâGÕ6>ûlº½úò{öö›Ù´ ³lE³5ë3.Ë›[lÚŒ¹Aåc{é¥wƒ:ÿô Î³"L“ÿ"‰ �º6µ—o¿ýv7›¥8øv‰âj£ªí«¸€ftô30ªý¯ØÄlàÚèjŸûö¬T†h{zn%ÉcáÄsÅB—P[ÛÏ\¡„ mWmrÍxé‰(ž¢¸„£ö·|øøBøõ;Õlš©CÛ|õÕWí¹çžcP òmtwÏ:áï+õ| ‡þ·ß' ùÙWõáD#Àc ��JˆŽ^ñ6U¶üúkj`D_F¡�Õñ L>É@‰ "<òÈ#îüZuÕUݨ%C©#þõ×_wÏó™èþüÓ9¬^~ùe÷Moø…/|!3ÃB˜ZBÁ ¿D„–ÐÐmºo‡vpuô+cÇwtñ 4-ƒ Ú'?"C¯£Y4ôWQ‚‚CÔá¯Y(4¨öy‹-¶p“‡~Øí£Þ¯^S "zJxÐ6t»;zè!·}%è³P°Â¯)ú¬Â#^ü¬Z«õ¥—^²‰'ºmo²É&®a©ÏHŽ»ï¾Û½®¦Õ¾i î(ùBYo½õìé§ŸvËs(A3ŠøåP´=}_O>ù¤{OÛn»­Ûvôs'¬…gðŸ“ÿþõù(DË™èßš6U(½]vÙÅ}zßÚM±ª÷ª`•è3ÜxãÝ{Õ¾jÛÚž’(ôšJüøßÿþçCÚÝç׫Õs·Új+Cmd—Évªïeñ’eöÞû“]gʈ©)c‹-‡¶?ábû ØîŒ©™"|w±¿?œq÷…–è™:u¦»}ÂÚcƒc¦)Ø—ìLÅ~Ó#ó]Yø]4-š–üý÷>u3èxµèÄê˜:^|òD"‘MR+ü¸üdƒìóu»E>c² ÕkÃ#ɪýLr¾—dtFŠrÅ=/5ÇDño(Ðó_I©Ty æW «6!n&Œj¾›R§KÜùÔ9:ŠS‰щ)²û®²¿ãÚr…&ÌH&³KËÔôœËÙ^å‰Záã®Ò¤=pÖì¹Áï¤Ùêk¬lƒô«î˜M_4%øŒéó\r㢠ó±¡!7Ù3µ‰œD‹B²µ”eAãÔ©³mú´9.i¦ t¨PDNÐ=)& ö«ÚÕ*—|{VíRÅ8»Ð`µó•ð rJƒ ÔŽU»\ív=V± Ŕ䠸€«6¼‡(.á;}ûÛÏÎPn›k ’(žxâ ÷\Å´]Å 4»¥â jCk¶ ͺñÀ¸}Ð{ð³*ãËYÅôÞôØ{ï½×Å6ôïðÌ™@Tx©S>‰È'J–ó|{.Ò¿ývý¬¶Ñ>@*™»®œûeüMø·¿4XîP]Ó·5F.ºo þöÓ�@ áNÄzPªb¦JÝóOÝeýúhÆŒ 3¶GР 3©lÚ†ôZˆA%0‘a›ÍªÍ„ÂQ½pp-:jÍWÆýèB?ò]gú«@ÛŠå+Ü(‚9óÚ„õwd$Rˆ œª3]3H„—ì2dHβ­}hƼ_òC#<tÛFmT°S*ÜùÞF¥”¢™7|ãSeŠfá¯íZKJ\ÐL ®(¨#þóPÒF˜’ñk+~–u´šÍB£o”(ƒ¶£cýÕ×Þ²^~'èÜhÈ9–ãÎEý®6n” 1Øz÷ê™:þ‹ÅLññ/_Þl ,²÷>øÜf5îQ‰dNwqøõÁ–ì¾5¤FWÿ6lH*É¢“õò—–" 9£SÍÞ–æ¤ DN:Í>šôYŒ\fy,‰–¢¿áíÿûž>ìDÕŠJËÈÖ”©ñÏñ]m¥·W«¯±XÇ»;Ò+~¡BÉC¹3WÄ?&_-ŽW?kDK‘ƒ°ðwXêõó§ÄkH¿oW>$·ç–9Ñ¢ÀMBÌ]®£Ü£,6Á¢¥²c´¬ï&õÀœ÷Q|–ÒÛô3ûä?9,u®µm9“ÚxK‰ädd?r÷¹õ£;¢ -71§¼¥BÊK°ˆ;öy)ôÜàw7Ù³-½‡úÙ„ «ýƒŽ>=/YâLoHÍä¢vÙŒšnª-Z´Ô}×=â“J2³ÖXi Ë~Öþý·|Á¶[RÏRŽE¢Èk„Ë ¿ÝÞA|`½ñ 6tð�k êJ=µN|cz½øÆœxï@Íþ%^ÐVˆ «È”aéxAx™„j;šËI\C÷•šE³Ç/ëñ~FWµ­ýLn¥„AŸ˜á/J<R2Q4îÆoemŸã6–ªLÎKÿmŽ\’é¿á©“¡¿Ñ‹øw±¿ÑëQ% (f°��t+•Tàã:4ý6Ê}~øuã¶AÅ è8ÅÎq]3èÒ¢åAÉN‡4î4u¨.í)nªj5~÷Úk¯Y×R£~´Œˆ9Ԉ׈›5×\ÓÐ~Ôaaáó/²þ¸:)-^jïMüÌfÏZ|WC­ÿ€¾Ö”x”cÙ²¶$ØÆ´©s‚ïx¦-\¾4ýz¹sãGCIár!ó[žîá˜9s¶-|i±­´Ê5z¨õmêttô,k´]°™?o}>ùó`[s‚@z õ‚Ô¶IµX&$.ó¨ôËœh!µ;¾nÜòSâ~— %¶V¹Ÿ{ëƒöÅS:¤3 þNÛbšÝ¬éD2÷"…:zËK*H& w']l4aŒm¢Üd—r+ Ùã&‘šMÆZ)šg…÷!6 ·Ä¹×PöŽ¥¬À{É)€ò_3¾T‰ßšf~ðI~&‹ùóÚ›ÿ›Ô†¿¿CR ½Ê që¨\ºd¹K¶œ2uVðû;×–ÙÉD*ï&Ð µÕÃ#[ËUIQë‹ô?bo2u’Èó¨3�h~¶ÐèÒIíQŸÊå— Q‚¡_X‰jÅŽµp)•˜Ú†+ü¬¯aüî"Š �@·ÒÚLëp#¢ÜÇ{á×)tоâ¦ùk¯Æ~ôü÷:-¡7r.ü<[g L(�®eS4Õb¸<îHš±Co­C« ‘f×7nœ¡ý¸Î¦¤ObP/&A1¸,_ÑlS§Ì²¹sØ!lèÁ±Ô+‚ô ‚ ©uRSOÁ”಼ÅW–.[jsæ,°Y3æ*K²CK“>8˜z­ÔèÔÜŽŸüßèôq›Hýgñ’¥nYéÓgÛ°aƒlè Á>õ´^ Ìôèéf›JÒn±åË’.‰G#k/^âfJ™5kŽûwf4·êtB5Råeø–jÊDn‡X¯§ü§Ç¾~ÑýOæü‰îŒU®e´_® ‘ùwê_‘zqþ< VLîHïÐïdÎ6ó÷%󺫅ϸ¸wÞ’óÝG_3‘s-÷eÃS XL'já÷šðûZÆc[/‘šœ&ç–Ö½N2´É‚¯æë0UeT«Ò1Qrk…“*ü¬qÇz’ù[OûWkfâ)p{ÜY> ’ág—1MFÞûH†žo¡Ó2éë�ÉÜã±!aKƒßÓIM¶™³çØÐaƒmðànêú^½‚:fpÍ¥zžûý]Öì’gÏžosfÏsË¥^"éf˜Ñõ–L½ ‘J£I×Q²‰ ¡ý¶ï3\Ï÷çXÜ÷’HÍÖ‘¾šy‘L[!™,ñÝ@ÛˆK¨¨Mû=‘—´–?>ýRÞºèwß'ùK4VïgÖ_%f(¹ÂÏòä·‡c �€n¥’JP\bD¹Ï¯õã�Ô^8A¡=ÏÅè”±ajԩÿ˜Î\nh Õè:ªÑ)Û›Ñí5K rizùÌ(Ït‡ïoó1Ó´/Z²Ô}¾Ô¦N›c}ûi ­Þ.ÉBSˆ&RWJ°Ð¬ZF%Z¸í5&|vDèx˃-* uˆø.޹óæÛ¼ù ì³^=¬¿&—D¤ŽíS6Á"•ð±hÑ¢ÌÒ4©×nLwl&óúþM'rƒA¥œŽÓú-gJ'±ÛVù/[$®Œâ.÷».3É7ó¸†b*rGÜg“,˜<œ·…ØÇåwLºû}ôëýDÎwÿ¨8‰Ð£ü¬2™é×Ñmäíeh#qçvá÷§eI|ÂN"š`šf":@n§lÂÊ™‰ çñynˆ}dÜwèî‰Ï¸‰l1ôÁ%­ïÀM„RhŠÌb‘ð^‘ó¯Ü%-Z¿ÜF2ô;T,q5Qúõ“qß•Þ^ër,Šo3‘ŒíŒÏ<ß'·æœa‘ãØßîÛ¿Ñ;Ò·Æ'/YÞ—‘ o‰˜´dvçr¶ßH=:•Ý’þ Ï&¥[šmö¼¹6oáë=µ·õ ~{›ôûÛS+–IìÒV%[.Zœª$W4‡ö)ôªÁ.´õˆ¿çÉì¾'Íÿ&çìf¬„Å%Ã$ 7ùñE~I”¸d§T^fÜ+@ýó‰l@µâ.ú$ ÅzüLáeC|REøâo o·Üöº/,�����í+=š·Õxå-Í6gþ"w‰rÓÜûn̴졎ˆH"G«FúÆLþtérw1›Ÿ¿OÉ–Ìzç>ÔÐÀÚÃÿŸ½÷€—å¨îüOõÜøîËOÒ{Ê!$$„�"lŒH&í¼aðzmƒÍß»þÿ½ÞàÏâÝ–µ×¬±MX³€Ád F ‚M"IH(£ôž^N7M×NUWw实é¹wî½ç+Í»3Ý•º»ªº»Î¯N­Id•¬¦Œl¼l2Äó0§Ïâôõj>.fÄÛâò›ëÕ•°f{óŠâ3¬·ÁJèÝV²‘Ç{­˜GÄ` ËX Çë À\¡Œ!ZáRdÀ­ø>â£Ü[iéèËucHïšq9;U *uF¨.wj½ãøIò4m‰L‹Ã=û‚ ‚ðÊã>œÄä[îÃ׎¯ . ,‚ ‚ ‚ ˆ%‡CýÌ˨1#6KLS’ Î wß JWÚ@Š2Ø4<$Ïlañ¸Mòc¶ûð%`µÈ@ÜåB–£ ÂòJshHhÁ!º¬ÅRâó0¬ª¼x÷ñD ÄâWØží‚í°´%Ko\S´ÛVÛ½Ò¡Yô¡}Ñ´8 àQ¢?ʳ0ü‡SÝ«Zôn34t±»½I½qÒà\²Î>?ö¹ôÅSB µß'´(÷ºoórŸŒ/³-ù”÷È~ê ðcyÄàVš>Ô3Î(Ô8‚ ‚béÔ¸±g‡~Ÿ‰Õ ,‚ ‚ ‚ ˆ%ƒS;0€60v•é׿œ±Œ³_•w�΋èŸèÌwõ×cHê7/¢–ð¼ xd[©æ|3¦ - ¿öÐÒaµ/ÓðÕtŸCm¹'œ7[\¡œ…Å)éÖ ¨ú–“°§:ŽbŸ2‡Žp“•}~[¹ÆÌ¿BEBD6`¿/5¬½†Ø o~á»P¢¾âoVÓ6ÌÐn]La‹,Tßf‡¡rn¬$ã –xTÕ%xÈ&a×;ÎL¦›„–êø¹'Mæê\–\ÀDAk…Ø3 +XAAAKHe¨¬3õ´!"ðÍ4És®O†-fæ"l*W ý ¢ÔÍzž427ºcµgÌ/%Üù¥ÌF+qiÐ2/ŹÇå%Ü|Œ¥)4c²0Ì•uyPW¶ýÍt¶æ¶¿j_îš-c*rî\âæi¥ÏtSm:4³_jºðš¤ôxUºƒPÕýZ63@ëÆÞd/=hLî¦ïr¸»°‘JígÓ6.oä1¡.ŸAênØoƒz JŽ[ˆríx½Ëë7e0ö‹³[ÎŒíâ/.¢:D®"yõs.› -BŠ~YJïA±Z1ÞŸú€îÅD XAAAK„2Â,qÞ6ℽKà ÚŽZðÊPÄ¡™a±œA1Œˆuã{ûpæn9sµcÐÒ²Åéîút–ïØ™ÚÎ!©úۯТùyZöúÊ«úÈWÔѳ¥f!Áˆ5 ›zšRË]ÅÒHdðšæ¾éø>¬ Ö–ˆ¬‘nóœEÊù4„'п eØíǼ¿@_ðÂGG˜°ˆïuvyì{²í=Ê^âƒg˜iK ç9³„QÑӰϳ×;Eñ—%n¯ƒ¼WAD3êÆbH`AAAA¬*t7þÆöÀìX®­ëö>áOÓŸ³‹2éëΫí¾p¾ñ£#¾P†´A½%,m+t|³µ3Ïþ&ç§2N²ŠÛ†‹¸‹”z(g­çåwßþºR$Ùç5ïr¼½¯=ª¼äl{eÆ#­ó|ênCÁV–+/%aÁ˜ü®_;ûøóV\‡úP'=\Ö!%IK ÑÆ5ë·ýøófiõêEÍò^e\Þ#&[3ãÍEºW _Ý­«SjÆÌeDŒý•O^Š9láâ d<]Øàx±°:2µ¿ß’‰xœDA±ÔôãÑXýÀ‚ ‚ ‚ ‚XB”14‡nžÃ0°ÍÃ>ƒ,olÜ Íl¯§Í²—öÙÂ#:›êÌÌu†ÝáR· d8õyùPuvËm»uFǦm=ܦXa3f΂9¾¥”øAsŽc´êô¶+Ãuuƒ­&tŒYQ¶€g޾û5÷x¡tÚ4>—«R…;™ÚËqY%ü1¯¯²ø×—·¹SàS¥#R(E(¡ú¦çåC<ÀÍ¥mŒ O8¾:/Î6(´@¯_©K„èW£ ©B‚ ‚ Ú…D„XAAAK„2ÙUÌtE£—=³Ø6îø\•7¥42êÛ éc¤”aé~lóòÊ ÎÀ×MDiÎQ@Ö+l·yMÍ›‚šå¾U‚ûê^Úb;ÄÒæU_¢‡÷ˆš ½…±L ã[ (†o†~¨œÜê·Êþ |>fì#q£ÚËÍÔó_g6ÿ‘º<Hé(¸/å˜Ãi,!HÂËTžÊý ú)ßõÇójkæ=x­ÓÄêÓ¯‡ qUíÁ¨ƒ…¨£ï<ûê„©u/µTYMÅÌÛAA1$° ‚ ‚ ‚ –˜![ò¼ÌAK,cŽÏ%¹¾ ‡¾½oR•Fn|g >¯qtɽZ¬L¡…vűtXB˜•€u½Ë)ÿK›oµ<ˆµ r=Y0½òlc®G8¡§ÁYW[­å}šx…ýnVºÉqú"¦ý›âÕ@–_Ó&®I»ßvØÖì~™¸oM`Ôá»™ûXí-¤ù9²}žpëo8=¯ *a"ˆ® Ÿ;Þ+ôô|ˆ„Ê ó“‚XpVÖi7~JD[¥læÌÌ…ºE^³¿ ¬ù#AA¬ybÏ_ÑXAAAKŠiÊëwP#b d†?÷ZÁApv{C±…o¹Am]¾dÐü›3¸Ñ±=ôsÑn™Ò¿Í­gƒÎH¶ã/¥;y¦ÄËd›ânO!÷,áàŠ+b‚ f›g½1ô6VÅ¥q—k- Ïû±òù1û,^äK…ß*ác Ý!´ñÔiÿ54I"V …îÛn‹+Ò3ôÕûxSéÇÃðšßõ˜u2=~®×š^!•§ÿòLí,«¢×¸Qí4·;÷Vc~Æç½¢ü•x˜Fûõ ‹,BI뵄‡ÒfÀú¹¤AAD AÑ&$° ‚ ‚ ‚ –Ž3¼¹e™h_`!ö*ç2~ÛJã cr6–‰ ÌøDPgu1$‘…iû•DÕ>SWµ]Nìç V2Íxõ)–Þ "yòʨ9L›`H0QŸ§Ù×Ô =ª6læá;:Sˆet1šÑŸ£cH~Å\þ€iåȣǨõ‹`ÐÔuïIå…ˆ&y¹“dí„ÛþR9õéûŒô¾ö®¼+€±;âÏ}Kõ¤áëà˜Í›¦¦J`‘¸©pû¸=׋É5B´ðæuà¾x–· °b0OvÆñ2ϽX¥«h*rÓÚ/®iF ^Oyq]ŒÞ{Ú þäDAA´ ,‚ ‚ ‚ ˆ%B™†i‚…Ê@Æ•a§Ê×0ygÛÖ¤]Äe D)$»/ï#íAèÃäVüm§ŒÌÖ@?RKçO„{·¯t³•)@hÇ9€_TPºöWMI‰§†Û¼½e1 ¸š ÊX’ öv¸Jx R6ļÖÈ.&,€0óƒt¸abö°~ëË)È ä/{·ì.Ý0UØ´~¨QuhXYýAY°$ÆLž8•°ÂÝ›‡„=I ™ïÇyãtu‘wD†±:US’"ªOœ`^'¦•Ñncz0P{ncOt¦+”g‚ñú»„#€hp©Y‘G(N¦ :€ ‚ ‚X.H`AAAA,K¶f¾V»4wpŽSÈM£¡îÞÝžw-!)ËŽ¤ÐúY6¡‰¡ØçQ#y:,¯G¹i¯f³sÍÕ(%gKÆl?�<z¸¤Ìšö5´ÙÖkÝÀ𢅡™ïÌù—YÐövÕî«ò ž/Oö¬`%Ò¸íU9ø—MHO¡{¤T4‘ ,- š¨Lú¹ÄRe­éLï õâŠJÜã¯/ýÔIU‡"!R¼~€ôà 9ˆîÃ×Ó„Ê£îËÌêÏÕ=‹×x›bÌŸOkâÇÞ‡¹ý®Ðû<ɸ’§"íR˜ò o&«ažt—¼™AA%$° ‚ ‚ ˜9’Èr ‚6ýdÓÅ >«cÄiäàåž­Ž=jõ„ŒDæÌøfç¬Î0]?1\UfS¶ÐúñËÙÖ¹ePcÔ=ð;ÆXBÃUª¸Âkd¶QÎÈôÙ€º¦„Òòù²O‰s­yuý¹e›¯¼ „ëHÝòÁÃa™æ=B+¬å ¢²‹r#]\þLïÃô,Uš¶ÎÈô´á¤â5.ÇÒao*n»ÞtIË>”¿#±B¢ =¶^Ÿ ÉŠîC¦Ñº7’ÁÒ µjΕø°ôÕ­cê¾[݃UĪdyž=§¨4ÄÇ# ,ãÚžö^c¿ádzþ97<räv2�Ž ‡{Ííö²!e`Júœ¥P˜™©s9–ðEA£JûÏ£‘NÊøAA± ¸í¶Ûà»ßý.>|81½¤1\†9ÛÝ“øD:ËÝ뙳ñýß—ƒØy) ]-l™iåB\ØW°­<MÝFo.ãÒk†öY.Ô,çè¬l-Ñ ~cl®}–·Ž¹ÄÄÖP–·­dAaQm{J0žÁI´ÛlØçDoÕG\EΣñ› Nb×aé1ëºçœ4W”{ý¡ræâí<ܘlàk¯÷©¾OuÌYñéÿúÔ‹Oš§ç÷ŠaÞ't± s͸:6]”Æo.^§’Út œ¼ü¡]ÓºÓ™•òháÓD0-Lµƒ\Lm³sçNøÆ7¾G…,‹›¤ì¾‚ "õÄrB,‚ ‚ V8+ëöÛo‡O}êSðÓŸþàÜsÏ…—¿üåpæ™gÂøø¸1Ш¾ã@Æ'>ñ 1¨ñ'ò'pá…Š }°óºë®ƒÿýŽ¿„ .¸@¤·}Çq@A,ÕlÝê÷( "ÅË¢Ïúî'Í4/J}-×Ð�}&³½­ êÄ)×{¹ KQƒ" õ ô(alÄ ‘3ÓØ#„5zï1ööòw1㜣•~@`éõ›†Zå¹$ÆÂwl¼Ø®„C0®<}î—:&n»ïˆG<d|Û Ð“˜Þ+b×¢I7[6£¿þŒyÒ´cÈ„ˆ¡ÉõÕëJU%©úvý=Å›c®¨¢P-T†×LeæÄÕKo=†ˆœËã­B÷j¡ïÇïÕ²q-†±Ÿ»%ÐÓ2ÊPÞ5–Ãå1ÒÜyçðÆ7¾Q|ä# ¯yÍkÄXâÿøÅB§Óg>ó™ðÛ¿ýÛ°T|ä#¯ýëð¿ñpå•W:ûõ¶‰eüó?ÿs˜œœ„w¾ó@A£ ,‚ ‚ V(®øÉO~o{ÛÛ`ß¾}055%¶]{íµðÃþþóþÏpñÅq”€bffžô¤'Á‰'ž§Ÿ~:Œ¹ÝÅ.ÌÎÎÂüüüPUAËc\Cg¬¿K1,ÙKŒ¤PÅ©Œ²£îÞ´4œÁ`3…ÌY»Öõ`u&©ª f4¿ñ» ¼6Ê–²©µf‰õÉô® uóù+CéADìõÔÏR„À ½úË‹ì,$’`e+–%®7.úÒ‘ÒÊË…‚ð”€Û9“Kq™kÝúïêºd e íÕϤ¾ÉZšÀ¹~‘4ÊãYrü?ã¼ñuΨÞëoº›ÑÂyÂBbšž€]àšÜWp'M»ÝÔç ×F[âÚɪêg·aÚ™8?¬ì›y ¯B0QfXüá¦è¢ª?æ½Ï^úCå­D"þë–—í,óy–±ë* y"b§ò´~7kØdsfÖÙò«ó’3  AVMº™®õ)¿Æë±öP+°^ÜvëpûmwÂ#Ï9O´…ûî»n½åv˜=:1&&j¤ðîw¿>÷¹ÏÁË^ö21 £_žþô§ÃÆáÒK/­ ‹csss@A£ ,‚ ‚ V{÷î…}èCBñ¢½H|PdñéO>ó™ÏÀßüÍßÀ_þå_ŠćzHx³ÀY88‹Gw>œqÆ™â;‚(Ô@A†_˜‚ ¢b¢‡¦3ëG‰æód}¡Áfó‡riÝÄÑz¨Éóƒx²Xr¯É'I¿fí_«”Ü9óVz¨P†Ý»€å}3ÿv(å"ÒØˆèž(¤ÐBšp•ÐB£âÛ¿=Gm‘Úg˜ÇQÈ%8x=%øÊol õ“m‹+Dy´vW]‹P]©ËCüë,”¦BNÄ—V ¹ûíÛ›^ßôô²âxs=‘Ú®¡±p‡ª0Ëêž‹<÷Õ}V¦a×Eó»,«žbuÌ•0Ñ6qÓãŒïÕy¸0ó±K^„SÇÇš 1ìðâŒËk<q”%!‘a‚ž*Qhž/÷ïß[¶lï}ï{bÇ»Õ{?Ž 9rD|ðûøØ¬_¿A„ñ‚CoL†=»÷Âæ-›DýÃeG1ü>11!Ä8‰cqqvïÞ-¼dào‹À}§vìØ±6lØPæ{ðàA# ܇i‰‚ b%@ ‚ ‚ ˆ�:<øàƒpýõ×ÃcóxîsŸ [·nûð;€ìÙ³G Œìßw®ºê*8á„Är¿øÅ/à/x|ÿû߇úç¯ÀÛÞöV8ÿüóáÆo„÷¼ç=p×]wÁ9çœÇï8^ tA,%Ãøe•+úô¾®M‘E^DV&Lû›~Õ<"‹!À“B¤—!åÍå ÒIW´lTh~Í¡åRxᙡ/\›Êí[Â!Gã°ÇPkR 'TyáfƒóP_Y,Ï…Ð"ãnÎþݶ+ŠDüe`šbåáƒI,ž,üK…ÈHžš÷¿½A¡‰(DDÔ©½¥°BýVÅÅqꢱ=¼¼IéÁ“¶îÙ!Dèê羡–*7wV§B"[|#÷˜çŽ[i¹ˆË« ¥Å1Wå·—ª •Cm7=]@µ$&¸ðy•)—£aym¥]ÞVT‹º¶yå¦Ã*©Þ4š—uÌ*@Ë} ±êÙ¶mlÚ¸Y,î¿ÿ~X¿~=üèG?+.»ì2øöw¾)Âu»]¸ûî»…‡ ôˆ‰û7nØW\ñLxö³Ÿ-–õ¸úê«EXœÔ±wïxýo¾NŒK|ö³Ÿ…Ÿýìg" NàxßøD±ïÿðÅD“O>n¹åxýë_/ÒÿÊW¾¿ó;¿#Ҿ馛àãÿ8Üzë­¢žüñbéLƒ ‚ Vé AAË\Ü{ï½bðLp·íܹS š<úц§<å)b¦ËäÌ2œ­‚¤À D Ρ×5Å‹.ºÎ8ã ¸ãŽ;ÅL‚ ˆÕ€îvÜ¥¡¡"Q"Œ-LŸaÍÍ,‡O€áÐì ª#Ï[L³)ÃPA úù÷+˜˜Jì‹2·ÂòÒÈ®²!f ‡¾°û‘œeâÃA~ì2èñœ´ìf|òêÓà@ü} ôü-Qï¯b•–D.t’{D *HJ ¾Qû„ ã5¯Ž4!P,¾ƒWqôøv¡cž)bù¨}¹vm…þÈø¨ûAü?Æõ¸KmxÒ°ËQŽ•‡(ϱØZ*!3¶Ëtp[ú°²}_DϨëÖ‹ã[Æ7…z?`Çó…×Bx¶U{ÔG´:íþí„ånîýô5安Ë냄�'bœrÊ©B<qÏ=÷ˆ÷|K@¡z’P  âæ›o2p©Ñç=ïyÂÅûÞ÷>¸í¶Ûàñ<œtÒIÂNÈxêSŸ*Æ>ö± ÁÄ…^W\q…ðXñö·¿î¼óÎ2í]»v‰1‡Ë/¿\¤¡Píó«_ýªðK‡<ãÏi|ò“Ÿì•õãX8§ZOAŒ&äÁ‚ ‚ b…€‚ 9û Ä(åìÑ9¸úsŸ‡ÿøÇbvïRþÖ¿ù-زy«ˆØ¾};¼æ5¯ÓO?½t½)Vïn¿íŽÞ Ë}°cûøÝßù]X¿a\sÍ5ðîw½§ÊPN·sAD;sPiÄb>šÁ¨ÂAMC&”>ƒ´°S…‚W¦JϾ"âJ™«:JåŒ×abxth)ó•Sú#Þ.ݰ¼pÁ‘jh©¼°za‡^‚šeT˜ÒXŒWJÍf·Ú¼›oqUB•¾Ž– L"kC¬�fñ˜[Õs$×*¼k\–×Jž 6°aLo¶-Ý@îÕ˜ñ™õ·:~ÛSDLÜ”{ŒôN™bã\hžú…Ûb±±øÞ8mVÇw„ºgˆ¦0û]‚ûI!/0å_oâ¡|ü¨|ÊÊÄ 1 ø½‚˜â#.<Ø8"®%W„+ÜðÈþGË[…ñ‰JäõãU ¬J ´}m´+bõƒKràÀµ×^+D»v= ‚'<á rB†Xê'ƒ‰ñIxÌ…õÂoê5HÅÓÌÌz!¼@AÆsžs¥ðxñ¹Ï] —^z)<á‰O„¯íkpóÍ·Àú™ ½x›aÃú°yó¸ï¾ûá«_ýZ/Îs�kôqÇm‡¿ø%"ž@ ¢¤kxî•Ï…[n½6oÚ÷íÜ)ÒCïû÷€™u3 Ä_XΤû$AA,1$° ‚ ‚Xà:ª(˜ÀAµÂÞ½ûaݺixÄ#Ω©ián=YÌÏ-ŠðnݺuÂs~ϲ¬œ–±<¼÷a1¸±iÓfغõg[ï/®yZa3Ø ¢=Ԍ٥r{ínš‰,Tu.ÅË<”‘Å.¸§L(h|³Ë3´ ûÜö“º2†„– :™‘ñøÐ’Ê#zZÊ£1¼,}ÆÕò;sÃòbGQ±ô Àímií¥n¿½ä€ÚVº¹4Ç›]LP)›Þæ#)ºÑX4-•By†¡Ø¥Z ”Ÿ…2|%:©ÂÆÑûa7Ÿò»³Ï·µŠgIfŒ¿I†i^•Í(‡Ç󃯬ÜS¦PYmšôÙÞtù ý¾Ûë(qa(¿ª>Äóäš°‚Õ\s§ý&/jaïw^ÔÆºåzª{h%pÒk½‹Þ'¡GxÑÒ^64R™¢u˜ªø±¶åüÖÄ\å’T$® ÀzyÊ)'Ãé§Ÿ&¼X `bnnžüä' –jL`~~n¹åVáMì[7¢!¸©‰E•„ :†©Éuðàƒ»`_o\âÄNŸ“N<¹T&¡ðâ˜mÇ–ˆóJ\Á{Iç;× 7ÜPŽS °Ât'Ã1á1ª A1jÐ!AA+�x@±Ä©§ž wÝu|ýë_î;qù /¼�ÆÇÇazzº·ÿÞYÿ× Þ²e †‚½{÷ÂÃ?Üp™+ÿA,%Ëa,¨\¥ã¯fƨäô,j.UΈ¤«þ„´CÆ­hFÕÃÚˆÃ"æZ-\ãcÂBU†`ÔI–F;nn«Í#ŠÏœ³™©­pÊ#B}üʼ)ÿe‘°Õ¶ò9©¦(±6(Û³[ä D)5´p¡OM¹|)–K;¤dߤ¬&ya1VµªQÍJ¸¦\+šåA89C\ažCýYX_%—Á\BJ`øãÙ¯Î�-Ç‘pJúŒ×NfHoÃñ¶%Tä¹g¢Þ…—þ llF•†ºÖñôô¸uõ^õ³zßR`vå,Û‚1˜N¤ÕÔyDê¿–kSN9E,ŠK}àç„N€³Î:Kx°Pm`ïÞ=‹%.#ò¸Ç=^üâÁÉ'Ÿ\x9R Y£Õï™™X¿~F¤÷¢_}!¼úÕ¯†§=í©bL—-UØ÷!ÏPí=U|ô£Ë‚<÷¹Ï…_þå_.—Q¨‘}†%‚ ˆò`AA±BÀµT_øÂÂßþíûàãÿ8|ÿûß=ôìܹžÿüçæM›`vv6˜†¨ÀÁœÕ‚®?ßñŽwñÎ ¡ ‚ –ƒjFérä ® óÚ8‰åu'¹T.Ç#òERKΚ†Ê9áПÜ#Bâ©:æY,I–:Mžù½WxN¿2¤ë9úDJ¹g› ì3jªYö:¾Ùïö>ÝÐ[•CÁ0'§æçË13ƒ¿nÖ§m_­ðÕ³ ØÅVŽF3]¸ }4ùu„¹‚˜Â ;¼eX³ïµÓÑËg‹“y o#O毋ýÜß8þS:…P¿èó:a†åå¶Ô’‡òÊó<ξ÷Ï“h[¼ìëmí¾œ†XÆÜrÛ÷mÓEV%\][}_¿p­žž)bÏM® ±6Y¿~½xçÿÖ·¾‡‚+¯¼Rx¸ÌX5ß'l9rDL²@±Ãu×]׸G»¯lÞ¼Yx·À±Aœxâ‰pöÙgÃÏþs!Î8öØcáG?ú<xþàþ@äBµ]ì>,–1}àÄ'‘¨0Xö±±1سg|ìcƒ—¼ôE@A£y° ‚ ‚X!LNN ·ž¯ýëaûöãàúë¯|¸êª«àÅ/~±˜‘¢3OÜÁ]ü‹3O~ÿ÷Î=÷\øñ,fµà� ®×J±,§h@Ÿ€š:û7%L,®Ïb3¤è× uóêëMc+—á Žú²†×Ðnz±ÙëæÌó*Lx†º?ꉃgò£-ÿꜙöV8ü—Èx–­È´¿U~þ2Kc»þqŒãÅGN‰Ï€ç¬üØj…Ðq$÷/Ž^¥~)$<3Š«®$&%ϧO˜P^‡Ài6=m¨Ô+Òh¶Úɪzg|Àû)}õðþ‡tC^”wc¤¤×Ük†¯mեí¸àùÝÔÓŽ’9–0amHžÐõ©rÙa™–nJ|‚h >GœsÎ9BË€^rÉ%b<¡›wËz…âˆç<ç9bl�— ¹ãŽ;ÄÄ ¯„—_~9œwÞyb©‘o~ó›BüðÒ—¾.ºè"øÁ~�ŸùÌgàèÑY1ÙCy¡ˆ• Á¥O_ñŠW@·Û…O}êS“æi§V¶eLÇ=p2 N,!‚ ˆQ$õ-˜%îc Yà·úØo™øéÛ:Ö÷¡ ëÝ|¿ A±ÊÀÚïó³03= ÓÓSÐëÀÄø¸0¨w:™0¦g³ðeU­_‰àvD7ªíàL¯~ãuÿÝÞ_üޏ†)þ_X€Å…E1[dßÃpö£ŸÚxàl¡—ÎøÀ™$øˆ4>>&ÖK•!�ÝE»víˆlÛ¶­,×ÄàÇÖ­[DX,nÃt0,~ÐûþÅ]¬!`9A „0q˜_œ…ïÿøføÞnHÁºdT}1C6:\^˳.<”–•L™Ì´0z\½ÿµó«;_±ýöúòMƵêo¦wú}Ôö:KC a²þóÌü.®S½Q¤œ çú嘸lg¶i”t¹²â_æ¤-ÊYÔQ߬ò¤kªy°Ð¥93¯ƒš Ï‹Yêexmi�ñ,Ædiíg6#Ký·}ñXº*¶O´ep¯{ü¼Tç˜ófå�+/ÇCóÏŠ·û;V^k~,ãÁøuðÀJ®¸"&” ¤k¡¶céÙŠÊèoíëòˆåêÜÈ™7ž¼°ñ¸¾ºæ¤“D^µá@ˆ”~P¾“¼3p%iàåý/V7e[ªÎA(þÌ ÜßXFm[^ôeX½û½Ç•×ÙSÍ;`Þç8Öñ¨º%Ê«í*ÜÄÄ<êô ¶nÞ�S½1ƒ±ÎXo¬ #Æ ð¯>^€câØÊ¿fMãí±\ã=Qà»>z¶Tc� ó °¥7€ïù‡†C‡õÆ—ÖÁ† zc óÂÃEw± “¢âÎÍÍ‹ñ�ôFiìß¿¿3P2ÐóŽ`ùÕøæ‹Ç€Ëb=ðX,†Ç<qiSô^c…æqð7îÃ<pÿöÇAk ÷ÄûرÇÄê£÷ÌqÈ—Åß®õáÅß\ûpí¯ýÀïØ_û»MíÍ—–!‚ ‚Xaà�ºê i;vì(+7À8X- ô°ÓÁ‚ ˆåD7.ô;sS—ÈN2•ûY!dXE³Pû3Â(‘HÖrºàˆWV©çÂ/’‰ "Õ˜SÓÙï¹gtÎuìºÇéué‚8±Ìš¶žb4.+Òø´Ùs–ÜL3PoþERÌÚæïo ×ÖÊÁßI§eê}æx.°E>…Üž{¶ VÇCñÑP˜ÜÏ1=lƒò$êî["{k9þqÓ©–øàÆ¡Õúy0¬qU¯ U]7Ô-„YÍá‡D¬H–kåÌ!,þ�p=+úx!-aÐârQÄjÅ èBgË–-Æï™õ3â£@Q.Eê'—Ë„lq½\nØ8#>\ŽEsŒkűÝ[&Š,ð½jàG•ƒ ‚ F XAA¬2ÜAS9€I³’‚X)¤¢,qw7pyW!CrœÂ˜V“î°=X¬«Sʈœ×ìï'MÄw-ë¯ïrÒ´Žfí:CŒ0Üþ@¿®×‰ÿZ”ᄵ·Ÿ6\C£vÂåHÈhǵ ´­ôÓX! ÅíɽÞ7†Þ&t46•؇—í&$˜“ÛÍtÍ}iWÂ×>í6ŒžO"Â#ˆ³ìPè÷Mß=4—Ê`¹Ç#Ç|xáUfÉq‚ ‚ $° ‚ ‚AšÎÓ ¥ËfÍ-©ØAÑ̨μFæù¥‚õYùÍó“e­ÜÁ»åÐ7à±Y®ä…÷J=½Â%:— ê³Wõó—qÍŒËܼJ£Žr¯•³ µµ5­)7£¡ˆ%x‘·µÔŠo¿ +—¥ð”¥Áº*A13“s²hhôÖÓÆ¾ØLOŸ·‚@Hæñœà+[ï¼f,|}ë½%Èô•ñ·ôÝŠm"¯®‡ø]ÚÒ¹ Ï2sI‘r Ïò åµϱ‚¿ìØ—õâ©3ÊxàÙÕjËž´™ž&ô#vÀ~!÷œK³ÏÑ·šõÍŒg/%â¯"Z›÷,«’Ú6Ð3ˆ™~½Ç<¶®5øÚ…øæÄåªð¤Áµ}m¦L—gŽzêx]ŸX&Äöžà’™Õ´F”`Š1X•u …hÂw_3D…²ÛX%CqMrpîÁnnx4‰ ¤@iƒä¿zR¯«™V)XÕ‡•˃Y· Õ—Ë€©p —7²‹‹åÈŠç $/ûB>²6bØ 2^04hIQ‚XÓ,õxA,7$° ‚ ‚Ab.¨íýÕÑM^f‚ š¡Œ1v_SLÅ¿Eèq®)<°YÊxV•9).Íh©–t)/gåá1¡%Pu<¢ƒÆKK(+ÙÌ�äš1¯¡Ñ®©ˆÃ2<–Û ™2xl\K¿|®©K™{Ÿ‡Ü<U)ÓKZF÷’«c°óÖE:¼0ÛÆ=_ð2/µ\B§¡"¶°OGÓW »ˆ•ÅÅî»õtbja opƒqä'u":+^R_Ñð†ç”I;,áØj‡J(0<ÚH¿®ó¿ÏT.ü°žm6–‡z†ÑŸäu‰¿“1`†ÔÞ*° ]€è²>å²"‘´ÖøÝ}MCãAŒË3^@Ë ,‚ ‚ F”T×·úlP,!b˜¨¾(eÖ\;ƒ¸¼f{|T¦nð¹J£0B§ ò0eÅÙàj6uCãš×Eùðúpº?¤×E2!êÞFZ4i©dYÀè›TæšÑIÈ3_ *ªrq¯xÃýf¢ù;†L«þ[ƒ¬Âáè"¹Ÿk婾›.÷»y5{]ngM›¨×<&{Ÿ^ª2`A³bö¾›®W_R´Ñ<ñZ*A†ú«‹‚ÏŒ\; \õ\ÜxŽ4r2ìÛêØÌ2ƒu\¡â×ý´b™¿µó,¯³*”^Çê¢Ýúç_‚kB¾P9Ëþ¢©À¾mp­ÕǶn;êH¡Y„È<סîýBø¦ï¨ó:"¼¿ðhwé•ÀמԞX^yÑæò`ŸéUx¶i …U~-¼i‰ïªÝõŠe,(®Èì>ÞÓ-1ëtá÷˜¸"ë£_#V4^@Ĩ±ôã±|À‚ ‚ bDi<»4²n1AÄ ÄfX†öê@‰Ï>D]åG`ʰK°¨Q2VΘAÛN¯®Ìib“þõû&žL\3§úˬ¿ƒ‘êj?t}¹×3_°Ã4Ò U–B¹t„žŽ>ë>šèË p¨f¼q¥P8׌߮ۂcéîŸYžØFCâ½­r^´yoF¥ôÃMëêjY-õz!̰À¹ib—箊d,™P”3c¡l̰P.ËQ]·üìM£Úæ¹·‰q+í”4Ër‚:ýiíF﯑Ü*›m$¨„Q…ÈŽ…Ó{2`ÆWãœGÛ‹ÙÆªµ(Xm“ õ'~‘ 8ÛtAXíâ\µcsi&£êz•é†+‘ö«v,L ÿÄÄL¾s`n ˼]‡%/%Ü#˜ÉÁì'˜ªbZ]W‚­°F>ÏÄÚ†Æ ‚VÓxA¤B ‚ ‚ ˆU –1 tcšoVŠÎʸ[“ûú §›’&·Œ;PµR\Š§Ð¦0b%ÌŠŒ•±ª³Ê2ÆËþm/ ¢›ÌXbíj³M¥¤•:Û[lË@ ¬öIuÜ6ÈXÜSŽR+a{à¦ñ=·ç›skfzY23\#ᓯý·ØW¸2ŽóHì`þ K}ô¾¶êŸ«²ªá~—Í2˜3úôã‘—˜o ïyd–�¥ø×LW’[Ñíã y«PåÒµ¶!Þ£ÊÃ<—À'~±êz j‹s¡µŸñ{ŽÒ=v»¬njÜŠ—[lVØÉ¦×X°¡p×[DùŒç ;Sc‰®§™—^.T‘Õáfç,cÆùôõo*½¦r0³eU±Ì4Xµ_@(o\»ú¢”V˜Ü:³YQé|gLï ¢ 4^@Ä0XýãáB ‚ ‚ ˆUBlöADÔyAÐ×\]9Ø?éÇPg°¶ ––k“<R„u[)i­\£|šaS†6ÔA T%§Í_JR4#Ée*,ÛÌø-R¨ ŠgËDåôoO#.×§\ÛÏ<†RÓëŸCÁï ¸ÛŠoCle­çPç=Þq¬J›½HøÓzzªÒJ[¡uã·J/¹ÛàÖùgÕ1£X s›Gxà]rÁŸ&€)¼‰cŸw;¾Àóô+þ‰Ω«Ü ๻1ð‹/ÀYB $–”èý LÁ‡ïÅ~¦<@øë¡)d0ð-‹c”‡Ë~ˆž7 ¯ê|¥<+(1†!&ÓŽ†A%Ȱ—Qq2nD4ÚP} ¢‚Æ ‚6«s¼€ üÀ‚ ‚ b Ϩ C/)A “Pë{VÖì”j–k[TÆNÿìàA„ ¾øË-”X)^,šGj4E¸°ÄnÞÝ2ùë$x‚Ùqƒ‡'+»üªVÇç+X(^­ïz:¶ù´\6DZgÍ|8g÷ÛÕÁœñî/Ÿï7 xt(Ë�…aW~ÑöŒèz@0ßN—E˨/QÄÝýE”±Ú(·%Ê0Ž•Ay½Í:ìwxë_µ?Vö¸ç þ¹ý $t÷Fž`Š+ÂÎÜÅUbéÖ°JÙŸX<ˆPJ/D7K®†¨§ÆXâä¢ß ¡GÒq[…Vâ§j©!s9Jrá)ƒªQyKÿèËŽx÷Šüµ ŒëýÖ'áôýzzry‘êhÔtbCãAŒ«¼€ LH`AA1‚èƒØö ‡ob?,AM°n!c¢NJÄ“—_0L\1*"€j8OÇ’·+êÖºõmW'ªîdÐŒeÁûp0ÇTc‡ž½Á(CZûò6'ošÊ8ÍÁ±·ë^ì<s ÙÊé~ùì¢Y¯¹öÛ.›kL—E͵zÉ=FÞj¿–V/\nu<g¥ñ8œ¯ª–¡¬ÓVüÈŠ:d‹§*}‰[OÏÊêÙïT03]ñl•6‹ŠBŠ$Xö‘é‚•ŒgÚ1Tõî@Žêrƒfy¨OÉœ2êßsfµåšæfz¯Èª2‚œX{g <ư¸¢Nà‘äí iù-<ôGY‹Km,ÕÁ¤Ç„º¦uÇSÖo^ÔU®=G€%œÐâä½m¥Ç†Àr.§u=M„=bðJœ„Qý£ûÞBœ7¨ê‹:Åâ;¯<Uèaª(K˜iEÌ 1Æ€MŠXuÐxA£Æ°Æ bT!AAĈâØT(zý¯ CÑ6yž¿ëú£4WûMú+eð¥&,K¿È#ÆÞS@Ô¥ ‹Ò×|bðÐÌ,Ví·ÑY[†¸5²˜z¯ym|ÙŽt/�¡ª#ÓGCvîÙn‹íú lõ;XÛ`Ê«tt>·fšËã0,üFxŸÑ»2DyÄÞ”ü¸³ü•ˆ!w©|ËmÌàM_?NYOó2?ÓHÑI6`?ÇK=…v>‹%êû»îrç$êí!<àn 'lƒ¡48ÇÅ>t!‰¸>ú!ܼ·Èß¹È'×Ç—žøÎôíF(hŠÿ¼Ø×U»×Úלk­ó4¯ úñ3yÄÕR؆uÁM´ôPwÌvž¥+霙B×sÛ,Êò°á.kMxߥx!Jbæó$7OŸŠbgÙ*“#:cfÚø7¤—iË‹k/ b”ÆxAŒ2$° ‚ ‚AìŽÔ™Ëöì‚ ˆ¶È25s;>CÎÞ×þÀIZ·Ü6¦‘ËÞ¹<e£A,,½>¥ÎØnr6 lÍ´µå( hëÓQaíÁÑjðÔQPý7ÏÒ…?ÊÓ…á¡B®p+¼0„÷>h€Ì=ç<'× Æª}¦J¶ôp¬,¤›6 zÎp-<&ÄÒö2g™Ûÿ*£nÕj–|à¹Q•Ü.Ÿ½ìˆØVˆ-„œ…Ò‚Òh]gêõÁS6w›¼–ܤ´³ªÞ¤z¯Q^<:òZGÄ/Òʽ]ü[æ=(~‘„{ªå8ÌÖíx›á5³Ø¹ûÞÁ 5€´‰/ ²úú·Â»Ó”!hœQÏeD(Ê�ÌZ<%+–·q[°}n¤€ˆkõµ ~1ÃWy»5>¯.C)6Óû­\Ë'+tE33òÔ&¶È¢ÌKxðVQb @ãAŒ£3^@K ,‚ ‚ FЋGÝ ˆ­'‚h‹ºþ'<#9š*Ôåªp̓ëf捻™T²Ú|Ò©5àƒÇTÞbþm0j呸D‰ðzS¢k Wqüm&8ÐØº¸¢ÿ°© ¥h@ûmÌâöyoðæ› ‘„nŒäš·3n1x0|Š}h‘ \r¥) ¿š'Џ0Á‚©¥ ³/«jŠ?dZ¹“»J®®b¾t’åk:`­Ä3Q*+åÚ¸y6iûæYuäU˜Ü³DIMbÚö¬qÓ7D4C¤tÀ`.cg4¬~ÐL×—GøÚ§”È_n³­éç(3¨pv)ÜXÒF¶qIŠ:çæR!e`�»/QÆe«¼¾Ã¨Dv²5Ëpñ¢q—x±É|˜(ÁS¹Ô‡%¢PB [h¡ö+ì¥G¹:åÄš„Æ ‚5†3^@£ ,‚ ‚ F{PWw¯§ ¼ÆÅ-ADèƒ80«Ï– NÓú$i>[zÒ)Fæ†EæýŸQ[Ǡ†ÑF, Á:Ú@\á5Â]èmÆŠÕ,øþ¼Ytµïñò÷óÜ ëIá6_¯³†NÄžg^—GæõP¡Ÿ¦¸Å¢ç`n(®p\ï3½e©ý†T#cÖEPÕ¹2C¦ö=Nzÿ îÒJØâJо@«SÒ2k{#ñæË <:=„}/pÊ2þ99hK~X{*q+E!vz*¢ÝÞ”1¿îtçõA¼Âs¿oëpH5Nøê²¯Gˆ À|ÛêïiB )*Юg•x‚å¥ÈªS¦'Óô—%3³›#y{î»`´^mk/¿Ò£óoèÖ¡£WS©¬�¬p\•òh¡Ú¯ÛΉµ 1* o¼€ FXAAŒ j0$ô2â ô¢¡¡˜Òív ¢MT_¤÷IL›]nïÓu—Óh6 Õâ Rj­×�wf|›gľGŒ‚Èb%‰5RÅÁYìʨèO<$&eÆú:X{œ5×*I`dyeà‘Yôª|Õ9uæÊ4[‰-Ì8ºXÀ0‘ªrp]üA/MÑYv=/EFyxå}ÂÈß5zY“óõDªYúz¿›¹Ï‚eÿlULÜ5Zû`ÅÌ®m`¼õmÆoð£Çõ-ëR‰ƒð´ô]bfKè<÷¶Èþ&ÔŸóæiºqxðgjú¾w£Þëù;±™‚¡yÑKøkeµ—¾é¡ªtt!‚íñ%T^$·¼hÈp˜Ž¿DγWý\^‰âT%ÔE_ B\&ÈöxA:4^@Ä(±RÇ bH`AA1‚¤(¼q€D ’˜/3@Ñ*Êø§Îâ6œÕ‰{ DTIJ7ß5Á†Ô†™A{˜i…\š‡ö-%m–Õ#‡Ajžápõ0‚i6gTåZ1„Š•†=;VåÁt1 㕇hö,ðÝSxàÖ”qÝ(©ú#¼±O–Õ0Â÷‰Ï`åüö®MÀ-‘….ùÝŒkÏìÓóCOLWš�ž,ŒìÁ|_ýJ9+ içFÝPßÓ½ViÖÔÇꜘçÁ—~¹‡ûâ„ ç†÷•š6¯D®š£yͪÍk-M_þ¾ü|}€Qõp {=³^Ø#kÙýv\\®ÊI^þ›1­Ï1rö½+ÅE!2Mî:¤°D±{¬ŠY„,¼¥˜!;~)D(—Ox±$ˆêà \W˜ @¬Ih¼€ ˆQbÕD$° ‚ ‚A|/êƒ/+Ýy266SS“0>>Þû>N§÷éß Cáû¡n7‡ÅÅEXXX„¹¹¹Þg¶×±^ÿ3á1ªõ YÕgÆà³2r0Ž ¡ÁCöñ©¡²i§xèsVõ¨ t-‡¨BZ÷êߤùŒðV<†4HBfמ¡ò2cú¸nô«~3MTP„Ë`ËKÉAùÀè)ø<%ÈÞÜÈ·_B†«Ð¹PF}}·4Êû©ž]NZ -uaz(¼‡xDN¿¬¥aî¯?¦*7¾1OyÝ|ë±Ë̃aD§-ë<WžØ|‚SãycÞnÛîg“=R€»„O¹¯¼Uu"6·Ó· éÂå¢\2Ä'È@_\‰,ÒÊ–_»0¥*¾7šŸž' •Üœ¸?¼xnMt(‚WpRX¬Yh¼€ ˆQb5ŒDSH`AA1‚øäÔKÇââ‚0LOOÁºuë`bbB(—ÇEÄZ�>ÆÆ:⃃´ÓÓ“päÈ=zæçg{Û'Ê™)ö€ï(aÌôç̘ñ\ÍÂõÇM0Ïû„©Ðš¨fƺaUYÆnÆ¢¿}i ƒ~ÄË[gââŠÒÀï³ÓŒpU6®¯]Sk±s«3î>Íc‚·ŽëNîK4l"Q˜&¶¨©rZ¸uBýFû¦u-íJW¡ÕÌ}=^ØàZ_Ý2F<7Â2&ѽTûÍ~GOÃü®y©ˆœŸwæ•˲Ïäð¢>ä–PþñR0oœX½à¬¹ð`X„¼…Ä#a-~ßÒýÀýY S㼨°ÅÕ/ÛTJ›iÒ¿…úáÆ÷°Ðýƒ©#¨þ…šû2×£ú<iˆ£Q‰åÆ ‚%VËxA4AA#Ž>cSºùä°~ý ÌÌ̈Y(ŠØ¬;‚ ˆA° Ø÷lذĂ;xð`oÐdA Þ*Úž™;(ÁÕ@”…¢ü.‡f€§2×øM>¯•¦éñô#ŒX„¯[øþʆç<*]Ò{ž5ŒºRˆ%l±P(}Có¤ ÿP€yájØIÇÛŠ€çÅZÎÌ Ë=y§¢wUüJt3—3øœÙòn5ج{¿à¥@ðÝ" ¦—Ï‘æxP!¤W¿ýW·Ñp§Ä#fêzs-Ž&þ¼š{Ê¥Î9W¢Æ°² Õ ðéûé›Í8îýÀÑäû=„ÙI½ßŠX*$éþ$k¸êGð²'Dq*CuïTÒH@jX¸-´Ä’¨îœ;‹£Ð¡CãA,7+}¼€ úAA#ˆz9)]Åë§âJpÀÝ{ÚÐK AÃ@Õ¿OMMA–u`ß¾ý½A“y1‚3SôpËÝ/±†ãÈuF»Øñ°>gþªÃ^£4oêM –OzÙÚºv+G¬Á\KzÏs…Ü»Úhóú<˜¢sŸé‘B7’sÍðnØ+íÁô¢Ñ¸ÄåÅ/zÁ²Xº©Ó'dRË™¨í¾òvœ*mµ›³Ù}% ­-ÏîYöÅré ·ïWûôÙ‡ û)�K¯–ɲsŸ7 ?yá¥À-?+óáV·ü¶”Åünˆm<ñõY•z\Æ5À)SxC@ð>åñä±\ý·_d!8¢Ý3»_ƒ#õGþ:ã,ÓÃÜ6VõM ÷²`qjâ1ˆ®rÃk~k/ b”XÉãÑ/$° ‚ ‚aÔ` ¾t,,HÅ÷úõëÅZ…:Ë=JÄÚ@ €è¨‰‰qÑ/íÞ½[¬õ¬ïo#?DîÒ Z†k{5yµEkÄZZ‘Åòήt.†Zi^ØÚWôCX8PœWˆ‰+¸6ÃÛžÕ]õ=êyf_L+“ùÕ\½žšA«2„=O¸†io�‘e‚üB Ý3/¨YþUœzÏ;¥1N†åÈ ¶Ê׉_þ5K¤Yx ¨0Qîëmï *Ïþ¦sa�QáóïK=.ªSI«: ·ümß/ … ÷³~™Gzœ.H©_Ö#3¼¨WÚ=[-cÄp–Üñy»0z”¼×f2nå͒ߟRÃë§´‘ø¤B,‡î.D/ b”Xêñ‚XNH`AA1¢¨<0Y\\Û6mÚccr˜Ò?³ÔßA 5b÷3ø×YÅÙr‡*õ¹ÖselMÀAÍgC°J8ç€ë†×p¼,¿)KÙϯ‰yž™?¹=àè ãZ#m3qШÐo™¼Ëe€ßÀm‡ÆQ΢gLŠ zF%Æ$+… Þü¬xaïþðr@ÊiJi÷!cvm_Z x4CDaÁ‡$ƒp$lØ®ú^_Þö÷ÜòHâ kî =?uuχ¤|4œMšÐ¡ú>h[4b¢D»n¥ÞãÕ¹ï4Œ'±ê¡QË2‘:¾+Æïaö²Ü(»OЬþ¹!徨H˜Â•èÅ +.LÑä‰5 1J,çxA,$° ‚ ‚QPÙàK˜àÚ…ÓÓSb›š¨P3W”«=‚ ˆaᛑÞéd½þiR¬¯ªIÔ씥Fäo´r°~Lm~DÚÜÛ&Ë=Þ–‹¥ˆã#X~ž•3¤}qBùóÈ oI^lovÞìtšž÷a P¦Ö=_¿ oâ ¯8A7œ‚ò]az·(“® F¸ÙNÏõ^WÔŸ«´íUÉÕ,=×Cƒ˜)É"yTéWuÒçÉBž¦JdÀ!Ôû2X­‡Ÿ¢¸‘ýÜ{íCõA‘—>4Àé?í²b;*ìÏ‘Ff¶ÒHééMÏ%¦À†3^kÀî·Ýùâ-E?jÓÆyÐv»-Àªûé”×CÔ݈(M¯—¼TxÏMn•MK“«¬´kËÞ,Êôsðæ—R¯Û@ÏÇ::çb”âbÍBãAŒ"£>^@mA ‚ ‚ ˆF_KuãÆ ÇIL—{ z1!b˜øflVn‰ŒMˆ5VçææÄà-~–»_òæß¦¸BX„¹Õ°Ô¤8Íi#M¿!s�xŠ¡@3Òkáà À°×Íà΄;VÓT)ô0Ê<®RÌ#3 Ëk÷¯¥z^p½xD‘×— àò\Û Éò1ÃWøÒ²½”´Ûå ~5Kß-ƒÊ[Û'ÄCP“õz¯¤ …`Ís¨·ŽÊ˜Þ丼×ÔuͼámO&¼ìfmMˆ¦½¼[V–¦Iz.!‘CúíOÍ>]ïÏÌtÅ6MK¡<5…ï iåõH\¥”º¤÷Š6u>|™û=Y”xðHβ•þ€×ÒÒ?v#1*¬Äñ‚XAAŒ8Êíçää$È 'þz1!ˆ†k»ªÁæêcÔL8tG<>>³³³Ð„˜a¨#|­ûra=É“â7cp+GÛˆQ&Å0¨Œ^ƒ"<I”É´gŠ—Ítkoã«<#8ëÜŠ“5H3•r™„HÊðФz °Ó°½YØáJ1(#¯{)Hð,꽌Þ*/-¼”×ÅÈ™þàOªúݵÊàÍ0ðÕ)®ýëÅ+@*–"ЄGi·¿¡Ûô�!S ¿¸ð QÓGk†dé»ÀGáÍÜõq×p¶:ª&]råj곬e6¹WØým,npm Ÿ`lH=®¼w 1Œù…I¦ÐÁ¬ûè%³– iãþi{3©óôÑoÚ)az·#R¡ñ‚X>F±ÏF™RîciãÞxA{ïc±œÀ‚ ‚ b€/3h¸$bÁj~¯0pà¤Óé´bW4ò…M+‹2н\ˆ6Ïžæj4ž+î7A÷“¶>sYßîdêÒ&æÛòev¯¯¿ÎæžxÎóuÐW¯EÃú§{F¨–õÐÊTb¸§5È_ë‡Ïô°Ú2"v¾*°[ü ¦ŸYÞKδúãS$í"M8S\¢®xmÈ«íÌ(š“nx¹\¦A°áI¥è3mÉÊÓÓ¼pí:¹"ûØyq½UšæÎLíÐý€Åzá ^RbXµÏÜ‘Ÿë15þ“v'©EoKásÄPÈ(cÔÑBüÀ½^v|ªÑ*Ծ̊X´ 3-`ºÈ Q“º¼røÀ*±†ôžÁtõFU®RÜ!ËÄ‚Åñ,-’@Sƒ -ˆ&ÐxA,¶¸?Õ³ }U¢|Þgú-S¿÷G-5ÔF™aŒÄrBw]‚ ‚ ˆG¾hå@ckA ͨ3H*#1X¢”CúÌX‡]ÅkBi¤17B¨³.í<Œ­éA¥Ôcæ9²S mqE]ùôe úÅö†à aæ)eÁÙ6¡ø1ãkmš2BùÝ5¶ËÝ\³W›„ª¿Ò=ØÉ8fÛHy•‘цÁ³Ê«ÄEfªd~Ãså ¸¾ ìòª°ÆV¨Ä ‰×ƒÕñ»E^ =üé™÷ ×{‡~Ž´kÅýÇQÖÎU¸¥~ájÉhnUVÔ»hœ ðK¤�a”'hÞ‡¥&¥>¹$§:iIÞTü§Ìïbe%Òa²NuÀ×ÉZR¤ ®:#p«.…LÖˆ ”¸ñ ™k˜Â bíAã1Øý4 ºÝn)žÐøQËdØñ›Þ'RË£¼ÝÈ%;¸! PËuèeªôi+ˆÕ ,‚ ‚ V»A+mΫggÂÌUÓV\7Ü ¥?‘¼Ë# ( ¼4qCÊ®�?ç}äÍ¢tÝL÷¶iklØi6/„šIßBRž™cnvj{scØ Ä ìö~(^ïc)ùåF,ÅI¢KK“gÕDY½%tôtÀ’äe9Õ,sp„/zy ÛlÈ&^'”©™ÝϵUO2<»ßÎC…bà:Èkmx_(Êz÷b¡Î¨º'0oú~ã9ó¦e“ÇŒìV{vÄ!›{M5^eœW?¬ÄBâ 3½Ø5lÖW¸Ñ™ÿ»‘½kØ×ËÕvôÎÂŒâÁ:|³O Íì­ÂÖ•¼"²äû×s‰÷—¼ìO=bÊ0ï?ª<éqÂÄh°°°�‹‹‹B\uQƒ.b@occcâ3>>m¢ß1o,“*}¨2©òèeÂòà÷ö©Ä&±Ò!AAĈC/±z±Ì b`tçÞ.ܶkvîÏaï‘æ»)qSóã05žÁÉ[Çà´m8uÛ¬›È¤¥¤…Y}vÎòRc4å…•…Ëù­À"á 6kttúç~fÄÆÂ/—˜"Vw¸¹VGÁYõIùúÅAƒ£î•ZÀ2´'EÐqT!ÒÒ©þežøÜNŸißõÐuUˆ›¹aô4 ï¼ü⣶åœ'‰+¼Å)•hÌ·’ú¨ëN›×Ž\Íx½mºbˆò§ö×6#3_™‹@†X£¯¨>ÒOO×c8W"G ÂýíÒ®¿ÜºÎ<ÎÎW+•––Rà)ŠŽ@_M×NÓÔÎDr²òaÜH \ßè׳,…ª6ά[žd¨Õ[Ké-�R½Üøz™òX˜-à` ª«w‰:ôsëiæ¡ò¥^Ùº6ާr‚e¹ï+/ ˆÑ�… sss0??_ŠttÁ~Pì€aQÈ€‚†ÉÉI!nh%Å<T™|ïé*–?(Ä@¡–cbbB|t/ƒ"ô³$° V $° ‚ ‚q¤ª‚XefŸ^#¿}×|õ–yøñÝ ðÀyØ{„á¹Þ Hνq¹Ä‰}ŽéŒ1ض¾Çnƒs¶Ã“Ïš€Çœ<ÓíÌP‘&°„X™vPVÍt^#×ÝÎ Ãa*!O uø–Ë5à@@ª=49Í8uÓ°Éš÷™w;†µáÌ´®ÊR#ù¥¾-öy1®-ã…q¿2k*�¯T`5ôšsí7‘úâ°2(¯Âø›6»<~ yÃð)XâŠ@®¬Fcã.sÀÊxÊÈm ‚e×Ãj§Þ{Ý!^–"§²<œÇ¤ÁXâiî·o–_¶aÞp{™_ñEÝø“ë‘ôoRŠ,R§Sq55H¼ºö<\ï}"ÆRØÃ\‘…8^ÔM`ý‰,Q´/FÏêg8ÇA¬vh¼€ –&=zTümÚ—+¯Ø–§¦¦„¸aÐ{–…³³³"ý&`9”HD•©]‘§>‹XÀ‚ ‚ ‚ bÙÀ‘…>wÃQøøfá®=ópp–Æ”¡Œã‘2«,.rxpÿ"<°¿ ·<8×ÞyžñÈ xå7ÁúɶN–bĤÆâΠÚÏ#ÇeŸ<²k, iÞ%–ò⤘ÔÂåêgÐÐ5r¯\xWû{%¦ÐÌ™š1=Ï]Í„,i&Rª4³ê@^wù„þûD÷,-5rÉ–T!Ÿ!ðŠ+Âæýº~`Øw–T7NGÅRÞFôsëxm& "7ë;|ò•hø#‘ÑÞ™ÕÿyDíP(;–�.Õ3WëߣŰÎAÑ6Øg£¨âÈ‘#â¯ZÄYVÎsO@ñ‚žŠ4 ²d¦… ,æ¡—I_þÍ.¾A¦ƒÛ¦§§[Y,Õ=œ † ,‚ b„¡AB¹¡ê@« s‹‹ðáï†Oüð(<t X—úEL 21Sõ’S'à²3'à‘ÛÇaëú »�;÷qøé}óð[gáî=‹p×î.|ìGáþ=~÷ëá¸Íc½¸ÕàIÓò´yïŠ3„JWM¶çæß¦ù«þ—³emS'ÿ�€í¥¿¤ ›[;Š<3†S¼^èƒw¶‘ÐwMÄrt‡ùüQ{,Üs]‹¥ê+chÐ/&ƉrÏìëê{5«^å¢Sg¬åÌ¿Oø—asÝ’1MðÔ*çÚ2ðÍ^«Âpm™�®ÚK!–âÚ5•uÊtOàlï‘1óYKîÔŠ“‹<«ã/ò÷ž,h^–ÉÉ Üg¹Ã8ÓËU´[3 "ìå¦Zº¤ÆP® ¬Wùȸ¹­Es’RÞ2}Sù%Åcg™d•„¶DJ^7Z¨þ¯Û ÒÜ_„½ˆ„¢3k œPœðí‹y#—Þ|1X^ó«aíÌö*áK0/ž=rg—Z.Dø©Y.Ä×JÕ’P¢}—¢ë<«%C´¥mJÏܾ ó TÛË„cBˆ*W8eEy~ý7¬&¢LF¿s«,L[îCã ï¯mh¼€XkÄúÒZAà�qC —]È€ØÂ‰PY|÷GY PE(jhZ.LãÀÂk…žG]™Bâ>Œ‡" ,׆ Är&ƒ¾£ÐX7±Z '0‚ ‚ ˆ¥©1ƒ ˆ•†¸ý`þþ{³°çp¦7°/åœÒ8¼æ‰ÓpÁÉ0=žÁXo $+Æ1ÎÞpÙYcð/7×Ü0½n:˜Ã?ý|Ísø³¹ ˜hôUÊîSOò¤8Ãè ‰+|Ë}0oŒÁÆ}d¨†ÿ4Eu­Ûœ]å‡{ ”âëTKt"ªí2´¥~g[§%Ì-r,dÜØ—ëá¸f`eEº–ñ>&Љço hrPk%Ï<ïÕ½ÊÔëÛïk¥üÖ÷G…2šb¡NPS¦%Â{ŒÅà¦cK\šœ{“Eã¹õeð5¼ƒñKÏGÃyO×ô—0„»Ñ€7'™}è~ÉE±d‹eX´Ï¢ ±ˆÈ&W¢‚P:Ì/l@áO§J¨Ì+~"Œz4}<. á!dù®6±'—J0% CoŒk/ ˆåÅ(†ÐÅ ƒ¢žÁ0݉‰ ±\ˆ½ ‰ë1ŠïÚì0-LE(üåMk XAAA,5½Áˆ/Þ4ûá,<|8‡AÍÊÕP|žyîüöÓ×ÁI[Ðämlîdøa°cӼ겜½}ÞòÅ#pÿÞYøæíGá­×tàßýòÆ‘Y´20TN9Í“fè/…÷†ÊøÓý pÜÀ|9½8ј<æö9!f$®=ó a†= Ù¯Xxœ(ã¦z�¨‚‡×Ȭ€L3-úÜW3×½Y‰iàÕ@¶™—¿Ü½áå*®^“Åp-.c¦a–—ž7¬$.áíâ_¨‡%Ïre*føEÆ„»›„› 2 èý"Ä ëoŸ´-n ǰ0Gü«Ý/Mѧ-øjrï(IÕ…ƒþÈRuÂC3{¼=éF#£|µ³¢‹rðÁ~˜w¦å9w4‚ ˆµKHx‡bô1 PЀé+¡÷}ŸZÒ£MÁ‡zëÀ¥Kì¥B–â=š FXAA¬Rð¥êðáÃâ%gffÆyÙÙ»w/LNNŠÏ¡C‡„ûATÈ|);zô¨xùÃ2a¾ø‰/­èæ]úÖ¢ÄcÅýxœƒ¬UIKÅ/vwáêŸÌÂνÝÍCÏ¥™©Ãá)gOÁë/ß�'m±=´ï•§¹¤ÈegM¿åxËàƒóð?:—Ÿ5O8s ˜¾Èû* ©¡ÍY9æÌø¸Á2w¥öà2žŒyíãº7Eók5˜!¬¸Š�MÅ2xLy±â­.|¬KoŠã!¡@#Ccf 3$¹2X:K ¸KNˆÙu Ú >;¸¶ó4ƒºk|-Je -dXf„©¶ÛבGói„–؉‹IŒøæ: Ѱ2ÉBÌÂÛ8çJ^Á¼;£åÑ—|)µ�¬~ ¥ô ßûM Æý”œh ïÃúy`ƒõ)åRHÅÅÍ IiuœyqÌ€çŸaK¬__´«N™.÷ÞgËDÝg.fãîKƒ×Ÿê~’˱Š:hÀű�4ââ»4þµ÷ïß¿_¼coÚ´ úg½ãûÿúõëô}åÁ1 µ Ž%`yqýºuëœ6‚ùàr 8¾€ûÛûÌÁ²LLà˜Ê„߈Yí¡–Ò8rä¨ð86>>Ñ»ÞÓŽ·¼>X7ð¢@�뎅¥ô³>>GbZr©¦öÁôñ±.áqUK± Ç͆%øPé«2ùò'ˆµÆh¼9AA­³gÏø«¿ú+ø‹¿ø ñ"©ƒ/‚¯|å+áSŸúÜÿýðŸþÓ‚ýèG0lvíÚùÈGàþèàßü›oxÃà]ïzÜwß}ÒÐ ÿÅ/~¿ù›¿ 7Ýt“wÿƒ>¿÷{¿?ùÉO†¦Ö'ˆ¶èöªèî^€›X�Bg74›ä…aWýÂï9œºm ^tñz8ýXÊÀ罂9¿d˜'Ÿ5/Ü´°,ö‰>~]oðia ŒúÅäèЧ ÔŒT}fjÓ2ƒoýî4üRa»\׷늠ߓÞR}rñ‰çY•Ë —³¤2çœ/ï±ö™Ÿ„%–—Ÿ*nRÜL×ÌË<çà,z¾ƒÑÊs– /œw=aðßðyLÈÖ°O€þèëœù¥œÃP~vÜÐöjz•žldÄ>ôó;îÚtjÛ­/R&ú,±bÎ�y'—Âõ“[þ¾¼åàþÙ½mzáA,í3ÌsMÈõ×_/Þ³ñýüŽ;îpöç;ßç=ïyðÇüÇ}×Çë®»þðÿî¾ûîÚ°7Üp¼éMo‚»îºË»ÿŸÿùŸáùÏ¾çØ·oŸ±Ë÷Þ÷¾^ò’—À?øA¨ã@âž{îI2J£øãóŸÿ<¼ùÍÚË{?ìß�þÃøOðå/EÄ¿ãŽ_ôÆ8~'8fA´×þcûD¯^ý¿½q 7Á[ßú6¸ñÆ›‚×·c]ÿŸÿóÂßøFQÇÞ÷¾÷ÁîÝ» 5õgULëÄ0Á<t‡ÊßöÀ¤þ6-ŽÃÝvÛmÆÐp,Q…oUäJ+XAA¬R¶nÝ yÌc„¨ :(¦À™(—_~¹˜‰òœç<N:é$&øüþ÷¿®½öZ¸âŠ+Ä ÍUW]%rÞþö·ÃÃ?ü<æ˜cà¥/})œp @+]‡8üøÞØ{d^ˆ+!BÞ—KN™‚Çž<é gš$ü®¼p·~º=«ñÏwΧÄy5HAƒø¡pu†Ã6 ÍÊ5ŒãæÌk€-g>[†ÕÁqÅGÍIñr ÅJÌÄ‹Oµ¿þX0„sðÒðý°?…\�?±pÁ‚ègË:;x9H Zںׇòã7¸W¡†„nŒ³,/COyõê¸tq›§Üɾ¶ÎÄûìJÂC« ¸a}Zê'3?Y·”‚iíÄïnÚ<®ÒmÄÏó\«À§êŽWÿ49W±ëë»^MÓè÷˜$æ9•×ç/ÎK$œêï¼åSçüåÞ6X÷ èO¼M^õAƒž÷"¹Þµ·[3tqo€¡övĽAàxZíÙøÿøÿ(Æ Ú*µ¶ôºyóÍ7;‚ œT‚Œ7&¥…Fâïÿûðæ7¿YŒ ÊÖ­[à%/y1ìØ±ˆá¾õ­ïÀ7¾ñÞÑK„x½†|èC†‡zÈE4Ÿþô§…— ãP(ºæškDJõb¡Àºƒb†AúþT>>„7¶Ý¦Þ+þÇÿøð[¿õ[bY‘Ô2$Ãô’A+ Z"„ ‚ b•‚nQ4îûn¿ýv8÷Üs˵qàá¼ó΃“O>Y¸àD—Ê;¼Ý{ï½pçwŠ­Í›7‹°ø2ŠÛP°ñ¸Ç=N¸ìDqÎ.¹ð … _´¾øÅ/ÂE]ǼQžþð‡bàæ¯x<þñ/]~žqÆâÅîÛßþ6¼ð…/ap&‚¢‹ .¸@ ’ ‹OåæË…Ç´sçÎÒ])y® V ìÏá·qPB3Zô4Dœ°q .=mŒwä¶`º‘]¦ÆàÅ™‚¿üêÌ.,Â‹N¬]ª`¥¡Fõ3Pœ:—J(­º|š”cäݶ–†ô0Ü0´ÛîåõãnM1áKa€ÇSA(|`p–\å/ÂH] â!݃ãÞ`ö^î ®ÎUÎ=³ó á‡JМU®Â¥7ÞJ5aF5´ó*Ý9+i/‚£¡J-uá)ŸÝdy¼E:z©¯+ªá5éÚákÓ­Ûï\t÷:ûSµÎ—Ýìõ¯+Øê¬ö½ûaéïÉÞ2•k´øÂ[›­0fžþ¨ÚÞª>È¥oThn-ÑÃ5×îævƒ¹a}3ƒñ"ÄpZg?w‚ã10žpC$ˆ–Ù¾}»ø{Ë-·À¥—^ Û¶m¿ÑX"ñÝ—¾P ×|àÄ;=Ž9<ò‘,÷ãøÂÏþs1n€†oŸxáÖ[oãø‚PËnÄÀ¶xê©§ £3 BpŒC-sŠ9pœ�ÇtpLÃâ„O8ûì³ÅXŽm w {øÚ×¾_|1œvÚiâ7zűÌדּΪ-›\–¤ZšgúãØ÷ÕqbÞuË£qØßûÞ÷ĘҳžõLQ'Ö¯Ÿ?ýÓÿ*®)Ög}y`}Ä:óâ¿N?ýt±+©èËIáØ×°=8(AÖûÞd—à *øKÇÕ2!ú=³íwd‚X À‚ ‚ bsâ‰'Š 8xð "àÀÂø#øWÿê_‰0øRù¾÷ý_xõ«_ ÇwœxùüÇüœX¿_þ÷îÝ ?øÁuðªW½ª70q;|üã‡3Ï<¶lÙ _úҗᓟü$üÇÿøá‰O|ìÜy?ü—ÿòfø?ÿçÿ |Ù¸;v/Oô^,ã¯ÿú¯—#˜×ÕW_ §œrŠXóôÓÏ/”˜î…>F¬?ùýïÿ�>÷¹Ï‰88€±œ«Ë L¬>¤A`ï‘.<x +FÒ•=À2ÉA|p]Κf¬0Øå]8fzÎ:v¼ëjx§zZÙ4f^vÆ4üå?í†Ùyw=<¼±%§A`5ý5²»Jqq^Yý qy]ÒŽ¥4ür{†·L¢n‹‡Ù{Ò€—=KXšñ™sÁ‹Ú­¬ÑÚGÆ‘û´ ʪ}mß TÑÄìiîn—ûôLî í÷nðe aM=sԪҖ݇ Ükß ïÊœ�uKŘR ¿x¡JC¯‡ªúè}oXød#ÛóFåÁäªþÏ×6¹§ö•¡p¸û ô—Á‚×9(îß婌¥-;�w~0-e°„0æµHI•Û}+÷·û¥%µ#ØÑÒÓ¯sÙÏYÕx}\6—É(Ó -«SÊË:À4!ØR6nìG”‹Ž§þªþß06©òÁ3­Šé" q¿uôÌ+ÊpŽ] Ç­b1ë·êk¹·<Þ"lÂ%i"œ"ˆ~Àwi4ü£q—U‹Ïþ ½ñípÚi§ÃOúS± Ÿ$ 0¾§ã6ô6yé¥^$pŒ�½ à$ OÀmUáô£ÃG?úQ˜™Y׫ߙ0T£çÍg>ó 0Ÿùüs̱b àg?»±7ñÄÒËåÇ?þ xž(Ê”ç\ô/(A/èíË‚Œ¯~õkðÚ×¾¶7~°î¹çÞ^ùŽöŽý½qŠ3áá‡wÃ?üÃ?ñ†G‘ÄÕW^,Gº}ûq¢¼¡¾Ó{ó›ÿ+|øÃçÇ\¾ð…/ô Ò¬7þ1&ÎÃSŸz9<íiOãD=:+®ë/ýÒ/•×'áÄ Ûo¿.¹äc¼ ¯ï½÷Þ׫33âúâuA‘�ŠsžúÔ§Uï#‰·ÈÒcU!z¨Öˆ%‹éÇ–ÒÕˤ¥=û¨2)jú{Ô–Iy°Ðï—$® Ö"$° ‚ ‚XÅà,,ùú׿.ÖWDhàËÓ“žôä2àK&ŽüÓ?ý³Øÿk¿ökpì±ÇÂ-·Ü ÿþßÿ{xÜã.37ppàÖ[o" (Y¿~ƒxaÅ]GœxâIÎ ùù±NéæÍ[Ê T¾?á Oж01 ‚³gpV¾(?ôÐ.QFÜŽ8hƒË†¼ìe//Ï_øÂ5½<!i”’ – 9xsd®7y͇…±0覔¸å1+‡ïÅÈa¯]¬غ±ão©Í¢Wœ“·MöÚÙ<t{&]æ«b7I'^xß`Co·8Ø$¦…&ç…‡œÅ.ÇÀ©SšWRm!bÆþàg"h ìk3Ÿ~Òð}¿Aže”3gë™>K¶L¡-rËCB•¾Ë:f•É볂¶ƒ/èÓ"Y˜ÆËô²çưZÚuÆíëðWQ™'tmìp²­yöq=¥,(~ð °¸­†Ð ¨¬P"p§”Pzâ4ü]´vnûhª¼fkaŠ€8æ`=çfFÊa%Šy~Jƒ¹ÚÉ´Ó]_G=×Nz-t©Ì©ÏnËmú©xæu°~_Ý}F,¦í÷ô=<$D²¼Sè*ŸÁ‡UÂ-ÓG¸w—EàV¿Õ½¿úWÛé~¿œë/WܾÑÏÜ#ˆ5Ö÷sÎ9GxÀ÷|?ÀwïÏ}îjxîsŸ+Œ©ª}âØÀ·¾õmxìc O{ÚSžO~òSðÎwþ\pÁ…pÿýÂÕWA ®¸âbÒÆßÿýßÃÜܼhf8.ð—ùNáóÅ/~‘˜<Þ5¿ýíb=–#Ë:pÞy‚o~ó›½1ŽÂ3Ä=÷Ü7ÝôsxÕ«^ Ÿýìg 7‡ë®û¡0º_yå•=ƒú#Åä’·¼å­bBÉ«_ý*xö³Eà_þòWÀqÇ+ÆPT‚Ç‚C>¿ÿûoêó·àE/z‘8/u=-æ½gÏ^øâ¿7n‚—¼ä%BpñÝï~Wx÷ÀsF‹þY\ì ¡ÌÆJ‘l§“ o)8æd{6×ëöÄÄd99ç›ßü¼ò•¯ìÕÅó¡)º°"$²Àmý×( Ó…×¼æÕb™ž>O­¾û’ÅE7Þx#|ík_%ª¸ÿþ‡zíÀ{ßó>®09lß~¬¨ëuåQùðÀ33A¬H`AA±JQƒŽ80€./Ñ=%œàà�ÎÙ²e“çÁèíBPtÑíæâg­¼ð…/1nºé&ñˆûQn/q°�×±|ÊSžããæc&–Ãêêû¹¹ø¯ÿõOEú¸ÿ¬³Îž,ð½L¹ݶmk5s¸ø‚eÃ(8ëä”SNÛ.»ì2øò—¿ ±À1‰Eü€¼ðpÀÊ™—r ?Á0_x¯Xär5ò¬÷›]5Àßf™gå€ä,¶Máû¤™8,`ðã•‘Û€ˆö4¢?îp\+õXbåYrÜaÂ+Éaj à öŰûÃL·ß´J£3W“PyCç2ŠÛ C4ç2õ0Éd‰ÆVSõ&sguëÏë‚V=İ2H(‰ðrAnÉ wÌ*œ“ ÆOÉwððÌúë»ÞÅÖÒµDó3–)ê–ê.RêkÈHß/ƒöJR$Áò$-Åb{“Ðþ­‹Z£.ïø¹JýË‹æÊ 1A¿Ú_•ƒW™W91°â]€žŒ¿„  ~|Â=ZÔYsšícº0!ˆ>@ï“(¬Àwþ'=é2¸ë®{„çËg=ë øüç¯)ág¬³_|ìØ!—yþóŸúЇÄ2£ècaa.¿ü)b?6¡‹/~¬0nã÷]»†n¸A Þóž÷Š´~xW/ÞB,^"RxÔ£ÎË—üô§× O×\shœ}öYe»Å èÉ=tâ½ýŸþéŸ�[*.ýb‡ßø«Ê1ÉÉ a¤Çñ‡Ç?þRá}ó+_ùŠ(NBÁr7—EÁ1‹W½ê•å˜Å/ýÒ³ÄÒ ´DÈ`0æ5à5VKâšÛ»Â îCaМ߻¦á]ïz|âŸèK`!Óßpÿ'?ù‰Þ—ˆ –uá¯xyP`a‹úSžYbapLQ8aC¿a~æ3Ÿ-¾åpîyˆ ,êò ˆµ ,‚ ‚ V1jR\†p �gvüÖoý–÷E_øñeéQz<úÑÛð7Š(pÀbff½Àøá(fc(ïŸúÔ§à„›o¾Y,5bƒ‚‹-[6 !Æ¡C‡…'±±ŽlÁµ/q½Ôÿø'ðÊWÊeKp& ÎLQƒŸºkÜ<ïŠY¸Î¦bÆõ¢,±èU}˜è0˜_À_L΄âÒÌ”4pÂÔ,–ÂDo€}®Ëáȇ ãÍ e:˜íþÃÝ2í™ÉL«ÿ$¦Ñà ÇPÅô)­ºOòHL3ôõ3G˱UšÝÚ ×î�¨n³go#‰Æ&kÐq9àC¼ØÞ—¸"Å€ÇÊþ¢ uçGÚà[,eñd‚ÇŽ½Å©t¼ƒ��ç¦A·)ï"¥ÉÔ0kIìûþ²˜×³nv¢•"€1;ž;i3¬è‡ƒi0]-Æ‚{™•_Jš²/¨[ZÆJ;œg9ÓšÖÞJ$R]˪§t?*(€º¸ž8‰åI24÷dRÜ´C"n¦ïË3VþxyüâÐjy [è1t‘…ï1DGØb ñ¾·ÊJ ÀìC ¹;æ=ÓNÛh$Æ>ÞpI(‚ˆ€^!/¾øbx÷»ß=ô0|ñ‹_Ëo¨åBøîŽïêʶG|·Ç‰8'f ÇK\ŽA133#ÒǺŽ-ð]þ™Ï|¦ð¶‰FoÜŽñˆ³…çÊpù‘ .¸@xÝxÖ³ž%&”ü‹ñ/ĸ+¼Õ,,Ì‹üp’É“Ÿüdá¹�óÂeDP䀢w»ýáx._‚c¸ìÄ)§œ*&4'‘t»]qì*yôä‰Ë¢ƒõÏåîÝ{Ês‹^-öï?�gžyVQ§ªðXñ: —UX ç‹cŽÙ&<¦þÝßý4%$Äó…{ÛÛÞu,l¯ÃÇõÞö¶·‚Zrôï|§X—ãšÆ%{{c�3aP5!ļO’à‚X«À‚ ‚ b•¢^vP ƒ èBgaà�È9çœ ¾ÑW܇8ˆðä'?I¼¼"(~ÀmSSpú駉5UqvËyç ]t|úÓŸÛ0.ŒxJÓËó‘ðÝï^+ÖJE÷›(ˆxö³YÌÀ¸(Ñ_Ôp­RèÖóÁ2]ô±MyÐ ˆ•ÀúI[g2xp¿g½Aô@‘£' ž,Ìfìý=4Û…û÷,Àºã&`¬ÏñŒvóΣÂÅÆxo|å„Mc€™-“áº}VÖX*±B±pÆHÐï,ëZê¦ Ò  ÿ«Î#Fyµ4H“c4=uøcõw[Æ“×Eð΀kmÉU$÷øbƒÒöQc|B}ÐŽLËGK›WÒ+ïµJ0R6¹Æq1†-øÊEÙ2`‘úpYLò»ß産Œ50#­´Óá7âÇjk8‡ת^0(µ·â²N…Ú´êžšBq—RV&Ьµ·T½u%•È¢ØQn­Ò•¢µÌŽˆË¡MpK´jx%‚Rz5C8ïimkðêxÌÌÉ E´ ¶nÝ*D èõòOÿôOÅv^4üƒÂœ”¬–8‘(H@Ž9wß}lÛ¶Eì¿÷^ù®ŽuøØcBô˜qÉ%‹ðhÇ¥¶lÙ»ví*– à†˜ÊÇžðxøÒ—¾$<Y¢¸ãŠ+®èÅ]Õ ¢Q"(è@˜7¦‰Ëœ`^º'Ñ5p÷ø±XRâ×~í_Šñ ôl“IÔ²i÷.ÆM0ôªxàz¿ž:cKBqÖ­›†íÛ·÷Æ•~OúÓÅu¼õÖ[ŲxnÇÆÌ‰76l×ò?ø¨'ji‘|PìëÝCk, zŽÌÇ'üÓóÑÿÆž°=T¢© f֯Ϣ\ø¨ÞyM¯“>O!±!AAÄ�½N ¸?ÏzÖ/ ‚|QEÏ8H/ýø‚Šâ‡øÃðþ÷ÿ_¡f?æ˜cÅŒty‰³E¦¦&…€ã3Ÿù <éIOr–Aðý]mâKð_ÿõ_‹`|ÙÄÁ™ø‡îGï÷ÞX„Õ_ ¡ì¨2¶nÝ"ÊøéOÿƒx!FÅ?®ûðÃÍÜvÄr±m}Û7p¸ïbopE ݞݕ35e}Œ&Š™ÞÅÚ§øÉ<tpn¹ÿœ¹}úÓúîD››çpêÖñJè´B5Þ&íüùèÇ^¡ç±ÒÃ.CÝ64·2¨¼HðúdÁAì!ÚS5â‚%®HÅ<–B\ÅýûEÐèÚ郜éb‹ØŒ»F$Š+¼eÉeäœUFá²|åŒxS|À9w®J¸®pÃH. )¬‘aÜžÅÛŸ’†±:b¹¨šØ*÷`z¶äf˜m¾¥Þ#„_€#V 1Û}qš–SyIYNb¢œÎ·•&Kðú1Ôº“³^÷`óX¥�B| œƒÐý:n”íÝ[Xî鶰Ϫï?ݼêëb[é¸uD» WŠK.¹Þ÷¾ÿ ›7oËp@)V’aÐÓå׿þ ±Ì�—qŽw¼ãpå•Ïïéèµ'f|à,–ÿØ-«É7®ž&þüÏÿÞøÆ7ˆ÷ùÏþóÂ8þú׿N”Ó¸ýö;á„ä§žz œyæ™Â ŽKàÅáÃ¥˜/çb\—ƒxÿû,ÆÐ¿sçNø³?û3xÃÞ�;v<C'.rË-·ˆ1Ì ï÷ÜsooÌdCoœásbY…óÏ?_ˆHpÇ.p9“ÓN;MLHÁÉ* áèAã˜c䘎u Ð=nþýßD,ÓŠñH`Ñ?8)—¥}Ï{ÞÇwœOàRèµE>xn¸AŽ;½ñoËÆ`]Æq­÷½ï}ð+¿ò+b< ¯Íë^÷:‘f˜ÇNÂ¥G† Ö±”û †Ã:Ší'BaØ, Фìm±!AAÄ�_4q–Èw¾s­p…811U¾@â˾ˆá@�¾Œâz‹8€®1ï»ï>8å”Sà­o}ko�b‡ë’¢ _&O:éD‘z±øìg?—]v™pµé´ã�ÇoþæëÄ ð'?ùIøØÇ>&AP”ñ¦7ý~¹6©*“a°dòˈ³f^ö²— ÷¤oyË[zƒà¥/}©ðha,@#Ê ›28ç„1¸á~Þ�YÿœwÄÌN¬ÃèR66+D˜� wúc8ˆ²Èá¡}óðÝ›ÁÓÏÛ$<dôÃCûàƒßß ˜ðÔDž|æFͼ±r . ¯úFÞÀ@ç¸(_¸³ŽûI„Uv´2× žjTjnë¿ßÈÙv9e®Í’6véñÑ aEO­‹uÔ¶† 3tæÝN³×ÿE‹04ZûBêRPaš`×E•®o¿xÙ¤_šBfâì¯+“ÞïˆßÖþ”´úÁ{<ÖÒuÞ*ªtbm»hg9×–ÀÐ㦤_f™:ì~<߬†ô Qy³pj€GdõHˆ,�´g}Ü^¸*O¸_;ËpxÃËt o°´ç=­VË Ñ bbpÔL|õî†kOüò/ÿ²0Ø..Š5 KÏ–'Ÿ|’B|èC†ÿïÿû#1Žðœç<þõ¿þM!ÌÞ¾ýXøíßþmø«¿ú+øƒ?ø·B�K ÷�å1âoü]a$Ë[Þ*Ä ¸4É«_ý*1N€ÆáÇ>öb1þ€)žô¤'åÅrbžêûå—?¾ûÝïÂóž÷¼r —"űl.{Ü%b áø�|üãiþú¯ÿ:<ëYWˆ°8ÖËF¼ùÍo^+^ò’—ÀÁƒ‡àoþæo„ç‹+¯¼RŒq`žNÖ;ž3ÄXÉ»Þõ®Þ1ÿk±ÔÉ{ßû^16‚ã(xž°¢pÇ,°(èÀý—_~9\uÕk„¨ƒè\ò'ï h'íÙ³G,}qÕUWÁ±Ç+êÙÄ„ ô¦‚¿ùÈsD½ýàÿþèþHÔ¿×¾öµ½ºû+M XñÚâ„!$~OõÕyR>)#š ,ä½´“÷Æ&´rÖ—±±VI}Bd‰ûXÂ_ø­>™öW}:ŶŽõÁ}èÇ'ëubß‚ ‚XeàCú÷¾ñ˜™žì¢§ Ó{Qœè=\Ëgùb‰/±ËÊcõÀ«fÇ\ÉýáÌ¢äÕšÃr¶D.þv{ñ;¾à¨58ç`qaQ¼¬ï;pÎ~ôSƒ3|ó"> äÚ¡gÃjÇò\nÓ=Y„–!ˆÑ§0#ðþñ¦yø«¯í‡‡w3˜sœQ rýcìbƒ(8ƒW˜Ä Ð^ßÒøÌº pòÆ ^ÿÌãà™çoê ”4k's 9ü¯¯ÜýînëY;_ðØðÿ^yl¯@Ü1šÅسgŸ˜†³¿Ô`qÿárMäùÅYøÞn‚ï^{ciZôÁûñ²ßÿx9ýU?ÆQ[¹÷¥¯ 5úË®×þ-Ã{f{ >FœL–»îÞ®—)´}YѾülb³±ß9³¼W¨0™ñÛ6x)†'¨ðçWy`Ñe'”«iy¢l©Î›Ê°ŸíRÓçLŸ'¯[jÛÅëŸ[Fùò{¹(Ž)PÈ9wvÜ*,x ‡M¬}V?òò:ÇηŸ6ã½ÓFè·^…¼OÄ—©—¤‰ÚUx2±ÓnƒÔöØͼË(ñŠÒ8‡õ†7 Mˆ,î†VÌ¿ŠWµvfì“ýNf ­™¸µpK°­¾Ëvç½ßb›ôyËÒ5 a?VË%™â»é©1¸èœ)ضyLõÆ Æz†G4.ãxþÕÇ Ô³eõ—Æ †ÅZ/Pïï£^}bˆ¡y¥¦0Ò ë1®ÉuWí—Qm|`^Säd£ú¢èdvv6±<ö›kÚs ÞWp‰~ß%÷ìÙÛ/Ø/(À~ ïc¸´±úè]óË@VºÅß®õáÅß\ûpí¯ýÀïØ_û»MmC"Dm¾AA„ð=nTž6hàXé¨ÊœÁ¥'uàG'ÃöOÃBW¾7¢i kp!ú–‡#ë9”Ë*dYº<‡;ö/À‡¾»6¬ëÀcÏX“c¬XÛ¼jGy10ϔ֣·ãÀl®¾n|áûw3ؼ¹Ï{Ìz1˜Ÿ ½Íñ¡ ’•9=…UŸâ‹iÌÌŸ 3 Þ€+cµ¯ï!‡¥2 ÛùùŒkñˆ ‚†÷š‘­<â/¸×5/ÃS1ÒªÒ +taˆo°U·'ͬ׾3cà¿XN¨¡a¸é=49}ýÀBKª;*s÷ZâŠê¸ä¼yžÌkŸ«ܵ‡“x9ÚEH|Tnçj¶ ÙvBb…Ðþ"Ygúì°’ ä5ñBíÔUDvâÖh9˜:ÚŽlâA@ïÅRÆàì~.…à9²ú—H Ñ{vÓþ_¯k'Lå,ËæùÉ5‘Å ^,bñû9ßÃ@.“³´}A4e^ÙSÊ ëÙi˜aå°œ×J½«+/°(@AƒòÀŠûe«ûR ú=F£�Az›­?hŒƒáQ˜€-Ÿ7&õ~¢ cå±Ë„{y²kXIø:dEÿƒ)/¯-AAA¬4ŽÛ8Ï»pîÛ—ÃOîÍ¡+Æb¤Ñ)ã¬Æe>ˆ‘¥Â™4Z2\S¼7ÜuþÏW€Ùùcá±g®‡ SrÍúr&ga¯èöâ>¸o¾ø“}ðÁo<ûærظ®¯òvxÔ Ó…·„ÕAøÝU mf«/nŠÀao(¦1ƒtU¶´´F 1¬ç-: †/¿§B†XЦ¯ð¦i°Òí ,Tê¾< ó OÉ£È)bèsmlªžB¦×¿½wî4CqÒv^M<J¹v£n†dÚ¿â[Í97÷W•€à c­ŸC9H#9¥ª¨~ü)ÖÖ«ŒôYšÓf_ \¸η]ÛÚ‚á_ï‡íVÃ`0Ï(©b‘¸È‚Î]’eÄ•O=èòØÓ/2Q¿¼K‹ˆe«ââ‘ÂÇ$m‰Øæô÷£Þ»A¬>l¯HÒ[И5è^›<sÛ÷õ…ÊÃíÍÏ÷]•ã w %ö°=c6¹Ùù`ÚøÑ÷ùÊBkXIÄfR ·ã¤N™ ‚ ‚X0xÌÉSð//åpd!‡[D7¿ÅŒùòŸ…AÉ%7˜pýÜ{½ëtá'w†½×,ÀÓµ.9cN9f¶ÎŒÁÄ8ƒœg0;—î p냳ðÍ›Àwn9�{Ž,ÂæÍãðòÇ ¿zÑV1©z5¤DÌwÿv{Ÿ“ŒöŒôuiÛ^(Â'ÌchƒÁÌIÜû½‰‘J3òFöÙa* ¡r¥ÍbçzVÎÉÐLl³Ôòû=¯Ì¢<p¤n‰Ÿ¼&¾YÇã†ùþÚ‚«<c}c˼™eB÷”©n‚‹r€Ã"aRpÊ(ƒ¦4•¡™åÕ;_׃‰>œOUã �×[¥4)½aõîî,Wõ;Ô펓ñÛlÃe‚ÁŽ><¦XåÒVŒš‡ ]8cç¥ê±;qÌÈÆjgõÏ@>CR“¶×LLU¤_h?ä./%‚XjB ô¡–þQ‚†Ô{‚òˆ¡ 3ÐkÅÄÄDòÒ zZHWxÊ„FåÑˤ“òØ ‚À‚h©Ð‚ ‚ ¢%zÏÖO>k :½1˜ï(üðî9è¢È‚Å® ‘•6ŸL¸s|ÅËᮇ»ð¿º ¾qÓ>8kÇ4¿ ™ˆtàhw›ïŸ…‡-öòÏà´íëà—lW\zLoD§—ÚˆŒ›´!ˆ'Û~¿©K->³§ÿcM1¤Ž_ÿ»Tïx^73Ív!C+OHËÜo]wðx¡H†y4 ¯VË@1�çNVþ²3½2ªM¥MXß2ºB_ñ²m pÐ@^ôgaÜ8©Òœî7›)Ô¬9ó:Ά¿‘ÌË'Ô±Û–]·u±Q^L#ë€ñ`Ž™i±pû§u8®ø�j'2ÈbÔõ<°}pbmÎì£}„2¤1s¶­~kÿÚŠƒµ\á<ƒÞ,\у ËBÝ"�”‹|ñˈ¥iò$Ï*^¤Á¸M¯+ïmKбAµ(A æççKAâ{†IM…>1CH0¬ßOPð1== G-Ë£/ó‘‚ý<¡Äx¬!d7$Ö"$° ’h·ƒlrS¡Ž™ ‚ ‚XàSñX‡ÁSΞ‚­ë:ð…Æá›·ÏÂ={»ñ<1 4d¥¡á Ë ïôŒ Ý.ÜþpîxèPoO^'ñƒKt:lß4 çŸ2Wœ¿ žúˆ ½Á¶äà­t›çî±SÅÌ$Ü5Þë^ &Ë{¼.K!²p<WÔÎb7·óH¸Ð錟gžNÏ«8Ük^(#„Q—ëÉ;‡É SŸ]pf„�= pÓˆ—·Q»u3+„iés®Äeþá•÷ {¿?-]óàOÂÝŒkÈì}Õyûxi–½Mý5 œM¡†œËß×qâí§Qý’îKÆÁ¤•¥ºÎæy‹…õå]]t”.!a lo‡ø’æ63ŽÏ@¢Œê¯ ?XySÄ,Pç‰ÁÑ8íÑìcU˜p÷-´eD|xïꖈǯPu”%„í§wizÿ%ãAÄh /¡¼Làgnn®\š#õ½Ð‡"HèK{ÄD¶ÿbê;z³PeRÛêʤ 6¦¦¦Dšör#±Ö!1¾›€MµÏ|Õ®‡^‚ ‚ ˆÕŽ4–<êÄ áeâ©çLÀï^€wÎÂ]»»°ëPs‹õipn<™ôèô^ôz#Y<ïtsaëô¬Þ¶ S8~Ë8œsÂ<æ”upî‰Óp–1˜[úçï:{n?Æáfn·ýï(ƒˆ†!Z—¶B ²à~ÄðFà!žÆ`ð¢<`”ße Q‹˜¿™Ç­lÀÌÈM }Ûq}3¼ëã zY!0±ò6¾G®!SÒ"-m_Y×YÓQX ûÛ ˆÓðxM7xJ`‡O>qI¡¨5ôÚ9^Z´òpw«‹åÀ>fŠ-Ri6¡n6ýØNRã.O¿ÜÏ=!~>Üú6ˆàÊŽï]BF*ždúK[‰F¬Týbõ/g­,En”#~ޤœŽqEënmôA1š(¯(@@Ïz]'0Fï*< ð[†Ãç5¾7(‘¦ƒåAïMž©”hÅ#x\>Ït?"X ÑoÊõÑ‘#G`ïÞ½pøða±®ªâð¯ú`¸<ïŠø-fãsO´)üžá§×ñ‹u²Nï& oøÁº"Z¿~=lذ¶nÝ AA±ò‘#é[×wzŸ ¹cö™‚Ãsfñ¹»IJ…ÁäòyÎ…L¹ËÇçí‰ÞxÍôƒëÆ`Ó4>g÷BgR„Á`4Jš Å BjÿRxlˆçáXí›Y&W¡™ÖaÌÁȼ6Ý€%ªOÌ ô±t‹rª¯!†nôÆ6–3�5¸—ÉCf«­»ýˆ–¬{(Žà}_±%AŠ ÂéÛk„€cÄÅ ú€tÝÀw%ÐòçWåÜôŒ¾–¹ÆðÐu®u^¹ØíD,5KO83ÓmÛ;‚¼á0zXg›Æ _0’,áêá—TÁIÚýKuJm—ÞÁééJA€Ùg9ðø³…ò¡’×µj~‘EéÈM ½Ž0pö ªçnbŸ!#?ΡÑòׂ b¹¨»£ý Åø=Y,..ÖÞÛцaPÀ€Â ´ùò°Å ©eÄôÖ­['„©eRâ ,Z¦$Åë…ŠKk XvßZ ÂBá¾òè‘#°gÏxðÁaÿþýpèÐ!˜(vÎ(ž¨^йázHÍȨÖWÕ2cÖ+pé~¯PÂ1ùš¬:wteœeqcÀTÖϬ‡õë7ÂÖ­[à¸í;`Ó¦ÍâæAAA£ ó|Ãïë§ðÓŽûÍðøIað`ú¯Ñi6{9ß6æ•Û•¡ˆåNÜØzí¶;ÖfåhMæCaX¢ÿõ«Ï§îº»KtôOé!¡0Ð õƒg¿ù[‰+Šewòš2ÖGΠ͹€Fn -¸æ#ß':`EŠY÷¡uxT.¢…s2ÏŒcð^W¸"|Í•Ñ7ÍP­ÿUßÍvÀ4ý†ØŽ)Þô6š9é‹TX&™}PVƈ‹-šy$`ïPÖÅŒsÛŽl•døðâ²ÙKÊxB÷»¢¶^¡8j¶€˜¤fø¬Þ ­/N•¿ŠëÖC<d^ŠJü¹§Ê¸ØêïÅrX‘{ Nª½–: îÎ"Vc¼MøD¢­êªh+í?)5õz5Ìg‚ "LʽSyŽv«B,Œ““ÑN¦ÛÎPX?à_µmÐ2ø¼[tŠÉÌX.Ì'Gã¤i51Z…U“œQ$‚¨r¥”„ÄZ…¬Ð„ŸÞKÄá#‡áwÞ ;w{wÃÜÜl)œÀN;a…ýò¯“^�õ HGå±oïÑáKQ®{5Û¶ 8ç\8餓£.•‚ ‚ b5ë`Ö¯•1(ÒÔµi(®kpæÊ©kÖ;†Î†³àC3}úmðÖÒ6aá…éM ÄTXQ¦§„É.ŠrÆD<ûò2×&XAޝaîÏŸž×¤ÚÈ(?8T³Þc‚ £¬\ YRΓº.á´£åÓê•Aø—±á½}¾.Âí7r§lÌXÅìo¸±]NraU·$¼ žçXK¾óx*Ø u‡û¼pËÄ4š—1X /Ku-–ƒT¯öïþ—°Rýl<\ì>º—–û­¾É'^ˆ¦]bž,xÑg±ô´æ+Ël &ªÄ‡¥Ê‹EQ·T<OØAñžC!zŠŸ'2fAŒ&Ê6¦@O숲•éûSûò&ý~èÙBå‹^)ðz? û A¤C ¢‚áò‹p×/~7Þx#ìÞ½«Ü¥”ê:JU§ßÔ *®í„^.8 qr™\xº8‚ëP ‘*õ˜ØŽâl B¿÷:ú ؼy3lܸQ¨þ„ÀÜóÒ£nN˜6–q~~N(ï½÷nؾýxôù‰'žh¬gEAAÄÊ _CzHÀ0,Ðü’™èËÓfyW‚¸Âüí1h' *Ô>w¦Èx%¿d� êWi¤ƒ€˜WïÈò :v¬á<bâ zê¯y´]*Ñ€Ï^¼¾…ç \êȲ+Ãxì=¿§°ãò`¸hzþ _sN‹ÚÀYéÁB•ÃWO™&:`ÅlõØ`ù øÒíFö©íMòÕ_.T$Yßñ]ˆÒÏý¢ß{L›„Ú|­Ç‡a oÓï§µ"‹^ dÑ%wóº¥I·èX^m+zû�%ü\!âW‚ "Ì ÂýQwoZŠòaB B€ðƒì„k¯½vïÞ-¶™}¬+®Ð;xG<xî¿ÿصëáÞ÷ƒ0Ö™(ÓŽq1ÅÞßCgÅoå2 E“S011§v*ìØ±ÆÆ:‘Á &DJtqÿý÷ÂC=�Ç·žðÄ' Á†‡ ‚ ‚ ÂÅÙk›• ó¤<‹ÎòDd2úï>ÊHnnÍ!l|÷Ì}“¼q•m»K5ø¨ög¥·[<!ÂðÊpŽ¢�ïò^c¿f|é×Îÿ™·ö +8¤åÏ+‘J,¼-Š@rËXÙÔƒ…nè.“pÞSY‰=ÄaФ|ñ±¾uµíV*Cåí‚ͬƒ^¿X݈‰VɃëŠï¿–U«_“¦×}ù¨D4XiBªåëÃÕù5ëoè‚EÏ·=QŠ§Ý›ŒëÊ«|ª%HÜ6Ôä\ rZÛ¾.¾~ÆçÁB-çCcšAkºg¶a‹/ ‚p!!Ø»w/\sÍ5 ×Õ@º¦ÔƒõòßûŽž*~ö³›`÷Ã{!Ë:bVÆÜâ‚ðž%t•ð^¡­)%÷åâã”áð÷Ü,ôâs¾(^~P ±nÝT/ݱèà”Ú®¼l Èâ[ßü:<åò§÷ÒØAAAŒ>£o$“(‘DkiiøÞ{V†p¢Ó¨ÚW—†ø×ÝÎÔ?…Îð7_¿Æq¨<â_Í®W‰+$º¸":s?Pî8ö²•a¿ÌŸyV`ŠC«GZÙfQ'¬P¡”X|ËËK›zÓçyd<…½ñ =qæ,wP{ÅÊ�ºw ´z2ÈÌÈ¥E¤".©â§•q—ˆPöSª½äN=òF²XKÏG¦¥÷7u²ª&éÚ;¤˜eñ>Í3…òÕÏ‘ê·mÛWD’�¤­ûpPÈäÙ¶â+;AÄÚ¦¹°yØ¥z> ‚ÈN÷úë¯BôþP 4ðâ Ã~ÕpÁe<Î<ó »Ž>*–YXXq±Ïît2±tþè.v¡3ÖQ�!Ö“-–Áíyo°cbl\¼2¡çŠuÓS°qÓ8ùä“`º÷JÉøn YV©í1þ>tè�Ü{÷°yÓ…�¬ù€AAA+‘ú÷™ä”ÚÓQ$äU¿VýÊ SÆp4ŽëïeþÙü6º(Ãëɘ³ÅÄ ¬ ¬Ä>c¿ðzÀª$ýþ4e?NŸ!­ë½4K‚È¿¼¬¸f·-Ï¥å]¢Úð�á$¹ù„'k”™B\¿³Äƒ3Ì…8´2—{Ïe¨½BŒ6ÌúëRM´©U”.häoN¯Ì}¥õ“\yŒeÚ˜œ¶»±WI»çÁ_SÐwDïc¼×¡*‘…òÜà+ŠÚ:L4¥§º5YçÞÖôP¹E÷hýš¨JZBJ ‚ ˆ•ÈR<“€‚ –X¢Ó=räˆDLLL‘EI‚j^¥ËwlÙ²öîÝ'ÒS¢ \îCÿŽB äG”`þøml|\¤955ÙKs3LOOó¾4â ËÄG ‚ÍÎͽˆAAÄê#$ÀÖ=Äfö„f²mÓÆö‹+ìtS ‘õÝ*×ì]ÕÒ•‘Žӳʕ’¯Ç Ø†¨f¸F×2U×ðð®‹+òr7ÒUÛ˜á%Ä'ÀH7DWEÔ—vá ®©üÇ·dB(!®•Å.¿)¸ð•bµ¢YÑ‹¹Ï¼¾)g«i=hBß퇻ý ð嵂 âÍ(õ<ø–§Jé׬ܴô<1¼$ƒö…åóBÍ~fÈž,|ñ+ñ‡¶ =›A­Zš !A¤C‹5ŽêL÷íCQÄQÈsSSSÅ2r0@z‹¡!ô²¯ÂNNNÀöíǽ#Öozç\–—(‘Å#³³spðà!�ºIAAIJ#VV¨1¶7³‹¹â‰ÐÀQp_aÔ¥bUšE£LöûHüHª<˜˜án¹ƒÇÉå9*f®Úûü9º†È¥Ä¸fj‰7”ö×cÌ+²½Qè&1|ß³ïMªKšøBæ*Þ„}FNά²Ù¸3÷ëó­Î‰úVg˜öåØœ,žºAVüÃýåôÕ­íO‰YtÏU»áZ<ýˆcG÷žP†an¬ðHH =�MR¥ÍÀ'á•Q] o´÷²¯,b%xzX^ ’΢?®8fÐÏ_®.Î ïó2È¢çV¿ÎÁ§K]*Å›«Ÿ,ef[ˆ‡7™xꪜœ.˜²rí2s�gÌn¯ê¾¬„ëÛœ"éÚéW·Ÿ\¤Î£Tˆô;“ÖÛkmÞ•ç¹±‚ ˆ•Abé6°Å”Ê®FD3H`AP`±k×Ãb©ÅÅ®XŠ£Óbµl¾ü©¥9pÍÒ¸’]¢–ÿÐ;hŸ^§N)®¶ÉåE²b€R–Qnýñ"†Â ü Gùùy8tèÐëA±’ít‚ ˆ(…Üí=Ÿ6.¤æ‡Ê¹ór‚qµÖ»š]"}À¬¾_WF)™g©èЬü\û„ÌEéeku@Ûï{‹u@`¡Ç3DÎ~#1+¿@±jÞ=]23ŒsšM¥7xMxS%Ïä«…gòX›,µÑtŽsè\ªr°¯lÕqûóñ .\¡€Wø–üÀqˆ*Tì„A¼®øë !Œ©v@*æØFèÚ¨v^·uq ó/0*ƒóqÒËWw-Êpàë âãG) r.sÞܬféˆaãwÑï–‚¦â¿ðrG<)]S_¡×h^ ìfU&ÁYq—(Εíé"X·—¼èϘ-ê²¼Í0-†yMÚ]P©"–Rý®ŠÎ´ýfÆÜ¾X{ÐxA¬Fñù„Ñ?$° ‡"D÷1>>.Dê#E (fè€ù2%_FtÑ…-À@ñƒ[Ñ®ÄJ0!E•Š.¤¨CïyÞ‘nwNüÆåHP`qàÀñýèì,AA±2¨gû¡!5Ýè¶&†‹œõ3ýý±.œ„5L¤‡·„ÅjÃÓBéÁ¢ú¤ä«Š3šÔ‰ZùM =0^«að‰RÏ+OH|(¦*_¡k£È8̘ÿòéßèŠnÚIwúm ¼qHS¤'Ê;Œ·de\ï{ÁWìa^‡ö„ŽNLð*ZKŸ ‚ ‚XmÀ‚ =Mà_ôô€Q\177'¶‰O§Ã ¯™&¶PŸLû©2ãÅGŸÉS¹ødÚì,n+ìA6õ˃ßñ¯üT߻ݮøe‘a»¥ÈBìï}ïg`ƒ ‚ ‚ ˆá5Šë?Š™§¶Q*l$W)˜û}o½ú«B̘âìó¼gøâ§hBÆCSðáÎà¯hžg(1BË…ê]!týë½ èä Å"ãÚûgû¥ò&"Ž…ùÒˆ2˦‹:š\;_z¾ø­A­vãfhžûºç…¦¥ŸR¹­¼?x¥« úd– ly°†½; _LÐVŸQN¾ †ð·½ºôÚb ôZêVýu£}šÙê ¼q•z/rÃé÷ôΗíͳÖùÂZÁÚº¿²á·i‚ ‚ ¢=H`A„�¡ â‚AG|_„.ÌÏ/‘‚XÛ0ëÀØXï3.ÿª%:”— ÝÓ„ù„+O=¬ktJáƒzÉs94²°°úr$JD¨mÝ®UHÏr¿|1Ÿï•sL|Wñ[AA1Ä æžÐÒ,Â*;D½±Hîr#OÃ3ðfž*FžæÇÒ†¨òêÐ\<b쇈ä¢t‡nŠb8¸B™&HÑ%JÑíyfhÃ9¾XÎÂI1õʘ0 O>àP-ƒ‘pÚ›_íÓŸ wi^wB NP[/Ê:*E9œË¶›–¦«œp–& ˆ+Ú3æWPB׳Y;T⤕a”­ñ)Ë žú+Cÿþ+y&2¨7úóµïžº¨‹}k´Waªíú„)°²]µDáDV,MBâ‚ ‚ „„�=?dc`L ,à_Öéô¾/@ÎåKQE 9Ì-,¼R¨åC“““•èB­cÈ2#<~GÁƒîÑ…¼˜•&½Qä`/;¢€Š}<«Ür9À‹L˜Ü—«¿½4T»AÄ2÷ÄÝ»÷Šïê>L1j9Òî’|ý¸ýo,(ø]„놟qªÜì±b AC¢Q^gIgE£áŠgá0¢(1Ïáôy@õòøQ¦"+R•BÝØî÷ÆÀŒã1Ä͘ÉßÇm<¥=8uMFl¯o—Þ;,ûe¨Ý‘D%¬h¯‹1VNÛ:/ÞùÿƱ!ù`}CË Ë0n _Ê_¼ZIMŸåÑ#zOã¤cÇåš§!yNuÑ„Ê;¶Œ–O *wГhÌðJå»O†¶—eíõ3,<O:º¨Ó{ob †.‘ Ï»òÑ`¹kŠû|B:X_÷îݯ~ÁhönA¬uŽ= ±Z !@¡ jYAtY×p·ª”ê(˜à\}Ç=U˜£Gçʰã†G ü//^êpIµˆS øBŠ,*:嚑冼\’DT•¿5”hƒ ‚ V"x¿Ü¶m AŒ6ûÄ2ƒÃÆöPOÈ-84³W ÉðŲ̀Zg\fL#ãŸ*¡JJX€4qâû2oÞÁÓ§—Ëì«`§‡W8‘BåKq1‘hÜë×8ß¶1—J?u å±Ò_¿úc…ì•Ã0o÷`‰šxËMMý«‹ŽÚ,·žv3êJQ/ƒ&§º.hß×m€~}ºÒdY œÚËk—Â%©;Põ-z´0ÊóR9%ÇûÌ0!„Úo#ö%.baÑAx/dJ>MÓ-ÂI45*B,btÀ:±eË& ‚eðñ`vvøã±À‚(OøW.ÙQ)Ó Õ¶¶Í§^×÷+26&=Np¨^ÚÄ !jó\‰5réæS {¢xC 2,¸©¬7_6Yùñ½è’À‚ ‚ ‚ V/aƒC£¬%¼x(Âz=UTêrw_àwh[?Èt†aüm^Æ:Ã¢× 'È¢q̹ÇuáÌm°­ôV¡—Eâ•M›!ž€ÌÉ ¸9ƒº^±÷LP®£_ôrå,-œ½M¿iBœ,˜._2aE™:èŽô‘ŽÊm.û+3âKú<%žûŠÕ¿xc€LW ÁUx<ØÍ¼#\FÈñ6¹ß¬‡¥wX±3‡Ðr!Pî/ê) ‹ež(ÄV•[6,8'\¯qîŒ[Ê1„µLˆ¯Œz¿Ã̵ÉÊe©úñ*TWÍc Õi‚ ‚ ˆ• ,Á‚ø‹³c{iŽ¡]œ¡ÿ¶Ãªð*oEìe%ävP¥ãÌS‚ ‚ ‚ F‡¾fžëÛ¡yóXZêýÃôb¡ ·«mU~®a„% (RÂŒ")elâ]"%?EÎëÝÿ—û•ØÅ“ŽïwÈ Ëû¸\Å+³Èüé–‡‰kiõ]ï ò–­wÞYEq¸Â‰Ä2à?úeöžøjõÄ KH©µ×1â='&êaËt¾|ÞZ—,O¦Õ ðVâ2(ÎÒ‚ê;tÏ�JÊPÝS¡ªô¬òN›rŒí ‹2Ô†©K  ß"­„{?AAÑXõSAAAK…iø‰`•Èvð`ƳÓs¿‡òÐ$!ƒIp¶¬Y"³ÙëErG&jèÆúª¢”Yĉ‰ãù„ü–™ÑÙâËÙžYmä£y$qâ³pšÕSÀº¨ŸySQk.Ñr½_ÛäÆ˜Å¹y9c±1/=¬7I?'MêÕN}ð¾òo.3uËÒ]€4T—¡ âý_4Ÿ‘Á¸ž_b%æÑ´û=ÖQ1€{ÛiÛyhy•Ëz^(ŠÞ´¸DU}3j!Wm[y¨Bèº7)Ê`^OCÆ}Oüc./e>¾0æ6^Eô»°Ðâ˜Ï Òc…ÞwÏ6ƒ°`ßÙo#aAAÄèB BZ‘ ‚ ‚ bYP†nߎã˜$ ÃFÊ;Žehñx±ð[Ú ,²€e£™°‚5~äÚÇ¿Ÿ—FW_Ò®€ÿ5 ìÜ£Ÿ –³\„Uù3Íð[F3‹\_ô0qƒqêé´®5ŠŸ$æ©1v{/4ÓI-æW�d·óxG¬sC q—W¨jŽÏƒ‚yˆº0Á$IŽ<¾sëkŸ~"Ë  ¤Aë÷šMÑ’ØÂ¾ÿå\ßòvÊl)”Üf¶)(ïÉ2D¦5³¬L¯?€ô ÁÀí·Ýû\Õú–‰“*¢+€¬ŠÌôò3ЄyÄíªâ×@-_Ôª7”•Р ‚ ‚ Ö0$° öò«}‰‚ ‚ ‚ –¹œ`4€^·Ø$?Þsó‡áñÀš÷faš]b^-’f×&³ôï1ý}†´~ò {·ˆÄ+-æYm¾aq…+ (=£^2”Á[p0óðp>^#3@R™û© އ¡S ”ô-Ü[õCGdmç–on€ÔyGГæuaZ&¶D^̘wû __¤NbZ¹9º¶ÆOxDùШ|…ßG]I‡å�hú“z~ÍÌϬ¿¸D°½L/ît¼ðžT(Êh2p©Ëàz]ÎA¿Ç¦Ýíí烋úåzÀ(žXu׿…�¼‹ƒSßOuœe\föm,¡¼!ïP!xq 4ŽIA1šÀ‚t:ã·î¶uib†ËZ’A«ÀìmšÖDĪ€ÕZ¾\7ÜE<õò°A û(#…Çû„·K­fü†½X¸nÅ£x×(2»\Ù„kJï}õ Ø“ ã}Êw϶*ƒª.(OÞÎ×LQ÷\aüyÜ0j”A’¡Y–´ùÕojØk ed Ÿvîècº±ÖMÇŸ¿“˜B:cè°0ú•¢Ž×“1X{´s²pºLëì}jììѶ‘GÒÍh|…?Wí«Z–†«Ëì3ÊKá‚hÛꡦ‚ñ²Âo<¯î¹\ðç-Òa]•¨ ê»"8ÿUðß“ªüì´ÌßÞrçÅ,BnTÎôv\OøØ‚ ‚ ˆå†„`l¬ª ú�ÆjƒAÄÊ¢ÞðH±ò‰ÜkÞI #Iièa®‘WSK5‘ÔæéwM®ÛQ”±É˜n;#ö Η`l@�ÁK½O‰ÏÂçùÁTx¼P¨üy¼�B �ueÒ iöQ5¸gãõȃg% t}GÓ+ÚÖ²ýägâÎ\Å f$+ûýÞÆÜADÚ6Æö›ZM RõXس›Ž;ñP¢Í:+ŵö´m{˜Ðö€–’.fî×eÈ›b)ºN/¸Ö2+Mp<Y¨pÌÚn®w sé[ùXxäðzÕp‚ʪÄMOWuÞ©eIîÑAAD«À‚Ø,t–k¶Ë0 ‚ beA÷-‚ ˆzXiŒöšƒÊª§¨³Èy<^ûL”q¾¾÷Ž¥»r(caA)®¨1¢Ö.Ó¤,övˆˆ+,ú³mlÏ1±@^ƭ̑зAY¥¥–(HüI3c›j%îòõu¥¢¹ç ÎÒÂH½-¯OšÕ½uÓ“0=133ã05Ñ3“°ý˜غeÖOÃÜ|Þ{î{ð�ÜûÀ!xhïèæyBq,GmXjÁ“§¯>ö§/ßQE)%•˜­.ËËLáùBöWrÉ„‚A¹¦‡øäN¹õ2¹Š¾B¡äK:¼ËC‚ 'ƒÌ TŽ/xÂ}ß¾O¤—Ÿ ‚ ‚X*H`A&&&`XpýÈzG_ª—õ‚8>>AAÃÀ¥Æ×›&ÖöŒIõ{¥Ô‡aÕ]Lݶçã kbU®»«È`a8Øï núnv À©m;¼Ïc êg¯J}Èu«n‰†”¥1RDBtÀ¡4ð©™Å*O®í“ƾ"®ø'Óóžî\?åàÕ‰pî÷²`ˆGBa¼ç)“uß©±óÁ"{ÒëÑrô9òZø]‡øÏQjºÍD9º8¥.\s®­OžÅ˜¹'÷œfÜ{ôg‡ªf[q¹9¢<xËé°è€LÑr0ü¬È¥$8dÞwý@™L÷s^MàÉX&úya2Ϲ±\œñ±¬[7Sã055“½¿Û·ŒÁôºI˜Y7Ýû;ë{ß§§'zcVÞxNÖK¯/ç5sc1‘^ƒºÐírXXìÂbïïü|öîÝ »v= ?»sî}ð ì=pÔ=Ò>ëà ø=9 7]ÿ3ªºW2oUZ2¬ÝFd(Dƒ`ßÝ%¼ìçe}{üÞª—‘ﯮCŵ±ÄžüCØ.<!ÀñpU“A±úhÒÇ·ºÄTä‰Ð}‡ Ú„`˜‹å@ Ôè/;¸<ˆ¾ AAD›˜‚a×…Q­yž;KêéÆðvË­ Í5¡¢ŒÊÅË›ÅwMâÍĺ‘4~Î2-$/cÖžk^„O¼m_CçLp«Î03LÊõS³¡›Åñ¤0äż[øÂÇòQñâKW(ü^)¤À ×m×õ½Ø SÕ«ab_s•s4O+Û ¥¯&|0HQd¨e„x^Å×ce¾úPžÕ¹ÏBÙ4h³ñëØ¤ç‘}Uìhq¦œ dU¹2¹o¾+KÑaRØ„çkrc03=ë¦&`¦÷}ÃÌ$lÛ<-¾¯›ïý„™õ30=5YŒÏÈòac½çað6”1éÅ�ó+un(LÊyq~ ‡ð —‰ÂûÆ“"&ÖËkë¦upÚÉ;àñ—tűÎÎ/ ·Ýµn»{/ÜûÀÞ¶ˆ±š¼T}b^�ô>Ê/ØCTŸe{£Á¿]ùE\3–Ëk¡’M6*9^²²LUÙeö¾Që“Y‰˜F$î ¯C¦ˆÈ[¾>Ýw™z!‚ V < ¬ lñ|¿÷ÐØTŠÓÞßFybµBÖfB099 « éˆPÎ**™$›·tùAAýz®›•G¬mFµ.Øâ døe§/= 3ckŒ\^£f1ó›i;•Á•Š`üÔŒö©í˜iiøâxgéêñkóo4hÐÄãj2x§ö¥åʞׯ¿„AÍJ¶·VYÛ‚ í<²ªlœCm9óAª¶k¯K¢ô\!~ø÷‹äk®’ðöSÔoˆO9•óß“gèé­$Ž~ºï5ä…†úò„f·K{­0õÙy½Sa|"=µ¥´Ó+Ï@(qDUa,/Ê“õÆJd߯–wÛD¸ÞöuÓã½Ïl@o3°a½JLÀÖëazª3¸_xš‡1±ô¬ê«ÕóåõÂ4Þw‹ÉTÖ‘ýW/NŽeÎÁðFÐ媎…bôãäö1ÊcCO¦ÝÅY±}ýtÎ9íXñQì=xî¹ÿ�Ü|ç¸{ç~¸×a!ä¡´‰‰Tbõp)¯x3˜&š©¶ùÛº¾]yßÒ·•qru¿ÄûS%²ˆy¬°·›Û”„é‘Ê{²“3×{–â¢ñÊ;[†p<7œðæÂòe™¥LA,?¾{>£,,,ˆ~_\\,ûÿNï™ ?øŒ‚|^Ö„•Ž*–§Ûí–ÌK•?8E°úØ�Ý·Â ,Áj[:ƒsp<XàM€<XA1(øbš"¤؈I¬JRÝE £çQÃ_ÿe¨Œ$>QÅða`ÊÂÔvu„}x‘r¸mšå{ͰP¶‡Ýèç‹::¯GË‚2^ù ^Úò�bövÌø×.FY<Fr!p7ŽEßëÎH6Ó¶÷e‘2Ty{¯-×-LW§¨I–ÑΉËÓ¼Q¨ý(‚°ôŽpb„îMÚ`<laxmžH yœRD•–ŸqßÖ<²ø<s$—Á¾¦¬ÆÏû_VLôå JoèI #„½Og¼Q0¹½“ÁÌÔ8LOÁÔ´ô0‚ PÌ̠׉qX/öOôƉ:"Œ#Êd,Ñ}‰ ÜœmS Êg¥2”*0ÄND¯œñ—õ®…rØcFbF¿§–:Q÷5uþÄ’$Ð÷S`á{Ý– ÓâsÁ#¶‹¬Ú}îÞyî¼wìÜu�< ‹Ýæº=£'ºº_XIà=ß7KQ÷ýÙ#T}÷1Õ^DKG žw¨¯Ç彎A½ •ŸÇã.<“¯GÆr%ê>"þ8R5ÐE5z¹¢íRÜUºš€£%£”jIe!‚ –óù#‡¹¹9˜-î…U…øÁpxoFQÃÔÔ”8´á1¸?ŠùùùR\a— ÃàÃ`¹Ñ††²±\JüA÷‚p!k3!X} nüU7Õ¶ AAKOÈ ­L«ß½ˆŠºº ?pP?8�‚¿]E¨A9ƒ'h€ëãƒÚŸZæQC ¤Ñ„™[½aE˜:˧€AÌsçZw¥‹T#]|Ã_&}[¿”qy¸dþô³`¹8ÄÍ“¶÷ n QŒ}¶+y+®"ŃDH|£¼”88âm–7Kvø÷¥´C!2ê{=éÅ@ŠJÒÄ"¦à¥ÜjµhhŒ–§·J;µ<)¹Ô bÛ³„Äû•ÅùúhŸžÈ`z²šM˜±E±]-ƒ:95ë&Ç…·‰©É^øÞß ëp9ìç'{q;ž±^<&®4Š º\‰3ªkž+øèC3Qðœûûûºu´i¿½ACtKojÉa¨çP.•`¦œ•ÂAU®ê\¦œùªÇo۷͈ÏãÎß!¶[¢‹öÃÎî=‡avnQ|އ¹ùEXX\:¡[±º¢“j¿Vß4á°-®œF°ò»~ŽѱêµkÅ�¢¢ [daÞSÁº•(¬4B—[¦›•qTo”útãŠ?áÄý<-UŸ°.I„«‹,´ ‚ ˆå… JXệ¶ásב#GD¼éééRh1ê~‚e:zô¨Nè"Jû^¯ÇÃmÊÓ>gb™PlAcZáB B033« sf…D¹†¤›AAƒ€/À1‘b˜HdAÔ‡ƒ+ø}˜`V"ŽÃ‡;bÐdff]oàdÂï]aP¼^lÃk$ºë2 ¶:šE«Â{â0Kd£ÄŒMÌ3ËC¬ïi*¶¨zÿ§‰ ˜¦ò´áæ“kb‰P)ä;•wŸ^ĵæ5ŒëÙÎu5D íý¤UúA. ÛJÅKHNh2U½h.¬Û.]Џ‚÷Qâñx´ªvšAf&sX·nJ f¯ß°N<fN:áØÐûŽcëÆçÅà;ŠäÆÅ2¨²Õk1ËÀðàa‹@ñßÌ0Z³2ŽóŒÓôdúÜ+ÅòXxÑ~yynísì»oÉm™(†ð<9^ˆ{{çzN9?[Ê­ÎÁƒ{ÃÎöÁ®½GÅï#GàБy8Øû=ºݼ 1xB}h®‰Œ `]1ÙþX!¾ÑRz±íú%…1¬TDä…pS:vàeœ˜ÈÂ[jG|T‰.Œ}ž>¦,£h•˜ˆ½Œ/½^t!æ­.^¶J¨×ä= V¶òª p’WAŒ�(dÀwkXà÷Ô>_y–R^$0 ßÏñ4©D(®À±…&¢mÝÛ•šüqð¹“Æ´„„àÄO„Õˆ>€€Ð!AA ŠD¶·Å~k} Üà¨ß8sàÀ!®P M¹äT(· ]h �:tèHwãÆõ匙ØLÓ¥%·æ \DÚ2,#H±ƒYË<È •1Ñ5ª‡Œ!Ê€T„* F>Ã]Ì�3tÁUêTÛÆTç§Þઌãþr¤˜_SüÜ60y,Üq÷mÒgE.ÜL0æ%Cþfzð`¸QAy° 3Ø ¯übÖ!{Vz…ª?q‚íˆ53^[݉^D‡ØÕãuš}‡-Àæ±}°yflX¿¶n›†íÇm€ësغ¹Óë&{}ôº*ÏžJAWÿ—k&U‹,øútßq'lëÃô×Ç1¥Œcþì~Uÿ«ïÛ oÂP�ýÞ7ýuqã†iñyÄ©Rt±¸˜Ã¾³ðО£ÂÞspèÈQ8phöö¶84/Ë /¬ÿ ÀãÉBFQûd ò=û¦õeE½ôTºvš ÒÈBß&Ó…Hî½É¾GW™Q&=¼¿P±òúÙ† ‚X9(q…ò\¡ )ï|ºíÊY âÉ…j↾ ˆÊ'µLˆhà‡<Y„ Y›×8ªC<ÿüóá+_ù ìÛ·¯ì0õN×wSúÀ` œñr£œp†Êz±òb§,ã 5Îö8õÔS ‚ ˆQÀ6¤„öo_<ÿ8>O¾ÁYݰ¾ÜÏNÄòà3èà�ÊþýûÅóª´ÀÁü‹}PoÔÚ©‡.<]´S§0Ýýûˆµå7mÚè5¦ô–« :˜|î1Tk!lÆcFúòµÀ>©Ðú Ve|5÷Cp–ªJÛÛ~K#ìè¶ñ&3–Âi@Üpd´ãÆqHßìO™7Œ:ÏÕ¶Ê\ÿªÞ¨ýÜk46ë ïæë‰XTéæº‡Ï7mcIîã=i¶S/c æmCqXiÈuÆ<¡SÏ·º¤xÜ\‰{Ò‰•M¡´Þ} âm¨0rç]Þë‹ÂÞ™œž€Í›Ö C›7o‚mÛ¶ÁöÇŠ~· ïCcPÊÅ8«æåc¹nuW+zæ†Ô׉³o¯§ÃTûñ¨•PÎöd*={Tç"È�'‚„N'ƒm[֋Ϲg+¶ÍÎÏÁþƒ³ððÞ#°ïà:<ÎÃî}Gáá}GzûŽÂÜ|@øQSoã§ŸE†i(wázÖz{T}cµÝ'rÑëÏÀeŸl\OÈKå˜&\ÔnÀÚ7(óâº'›÷%0‰‰1d½LéãÒÄ!M ÷b8X,A¬`š¼ë„ž ›ô³z¿¬ê]¾ìû*~0=D÷d‘êéIy®À±µOå“ZF»Lj©ÜŽcuå!ˆµ ,Á–-[àe/{üìg?ƒë¯¿^Ì ³]Z§É˜/ÐÚ ^Þ]?VãŒ<„xÆ3ž§vA1*Ô‰(êö3ï0úóOhao·½¢„À(88³nÝ:ظq£ã¹Bb |FdžÁ¸GŽÌB[,,,öÒ<$]Я›n¯ÎG%t�a±á|Ð<VP¨Ú%g\Ÿ7ëÌŽ†á@ê†ÈBåž >àŠ°Rå®Cy>Ãç¥/x|—ë} L®ÍV‚fˆ&ô¿z`1�éÓ™#›â‘­ãÐ9óîQ3õt9„O[¿°)ñü®÷«r…ã…öÔ穊å5–rŸÀ ·çàžCUêz' +Іœ|j¹Y—ôÍ}·œ¢¯èË×Gï|à—œ-Š6Š:uä0.å4[ô[÷ QzÚ°q&§&aëæÍpüŽã`Ó¦ °nf¶nÙ c½><)KèŸa=Ñ”r&Ç3˜¿žáߌee¿bÇ)r÷éhjr\|¶³AüÆr>ڻϒ‹ÃGçàÀáyسï(<°ë0ìÚsö8*Å ±â€½Œ½ìGø¹=žØýAu.ÁJ1+œ)tÑãå3îRä¢d>Ò9 sDz<™….zPe±ÅXš(¢¼ß³à%7û’¢Ïfáû´ù›{÷ÛéúÄ'®—6ÇV‡Õ‰ÕÏ0ß³ båÑôÝLõñ(fÀwz5QY…Aúéëuá¦‹ÞØñ½_íSËÕÚï•ú_[°—±Óï§LÊSŽ„&ÄZƒDÉ£õ(±TÈ1ÇW_}µèŒ±ÇsõÎQjt»SW„ â{©(‡¨M%6ÞÊs]-(•t ó½›Ï‚¸áoŠ\rÉ%ðÌg>N>ùdZ"„ ‚ FÝÚ?ÈÐjš¿úžqÔË®úMj~"Vp;Æ XÍ.™™™¢g|æN1(V.CÍ¥E˲oßþÞs3.Q²:ž…q=ãÕ;¯ÿŽø.›„˜Æ__^Z|ãG¸†žxx) É ¤i2ÃË*I|WBwíõáyéã±ðj�ïŠ\¦©<GpÃ蘆“n®+Õw& {U1�"å.ýÕ¹pÑTzuKˆ˜­ñ¼x´ ¼ö!Na3m”¿.´`éiØ”í‰î7Á([,Y!èèö"wÑÍ¡ƒm9G¹F^ fgzŸ=ðÐC{€e Æ{c릧…ðbzÝ4ü1°}Ç1bìãäSvÀ¶-ÇÀJ‚)yŠÖ‡•B8ñw䆯˜ÑË¿~ݸøÜzqOZì]𣳽ç#r ‘ÙùEسញåFpŸM¼…ÆâzgwŒ*"Võ]\O3ì¡Bm¶ï#)3b SnCÁмö ýJY¦´!OþT¡\}«Qax;TÕu%ˆþèé/‚X«èOå]RW´‰Jßù•WKßX“.v@aEH\Ñ8†6C‹ÐËCã_ÄZ…¬Í„Á¦M›à1y ÜvÛmðýï_ˆ'ÔúÏjÍ&ìÐq»þ×V®©Î÷y/Sú[k N.ðæ"Åè¥BþÆÎ½Û]eœ››ïý–77,Ãgœ!–ñÍ$‚ ˆÕŽzÙùùÏ×\s ÜrË-âþü¤'= ^ô¢•îý|\wÝuð™Ï|^ÿú×à 'œàÜÓqöüG>òqŸ}ÚÓž&ž|`Þïÿáxü꯾@<oH|ík_‡Ïþ ðßÿûóÄìÞž¬þìÏþ ^ð‚ÀE]ÔZÚöK¤Ïe²¡NB¡ê L(q>kc»Pm(µ®`øÍ›7ŠœMÒ–˜Ÿ©>Ô+×fEÜ#õâàŸA#öäh¶Ë½ï,u^X3´a¬Ú6bSIéœÙ´‘4å±dÒË0¹pW|&'× ÔÅûUVYçô­Å¦ÊàÅyŠ×Ï~}™èþâÉóåÄÕ§Ü—›Ìã”¶î+i鄯¯}8±ã »f²-ÃÕµ±¦pxɘl•öLÅL£™nÐu묯—Šõ5yÑÆpø=rf¸üiÆÄë63ZñÒe0ßÅî½2u–Á}÷í÷_LOM¶c¶Á‰'lÏqxŸÙ¼ys9(>’ðj"Ž~¶B¢¸á˜Ú¢þYs¬“Á†™±Þ§º& ‹]˜›_€Ù¹Þµ]èÂá# ðàîÃp÷ÎpÏ`×0¹áQÂpc‰ AØ¢ /Ÿ[±|¬$È1´\ôÁÌ·øïh¶AÅïùÁwÝp[œ¤%òd¶g Kà!îɬ8vk/cŽW Yú€pËsc­ŽÙ³„XQïôsÃ+}U_4Oh§ï'Ö2Uÿ„ïêøÀàØc·ÃK_ú8ñÄŒ·Þzü·ÿößáÜsÏ…ûoÿ臟þô§b\á5¯y˜Üãæ›oc ¯}ík½a¿óïÀ»ßýîrùô�øèG?^þò—‹{ܰ߹÷ìÙ#Ž…ñ8Î@,øîû½ï}¯7–ôy1.uþùç÷Æš~Ž;î¸Ú¸÷Üsüíßþ­x^zÃÞ êPTŸ­¼L |/Çrâ{¾ýLj£<d¦ >ìûtZ<<÷ø,©… KÐA£ ,ìq výúõ¢3V3�Û¢ ü«>øb–eÑ™ªa\ƒRíCä÷Êë…ú¨"¼a¨€tw$oT(¤P³üdXù‚£„ºÛ#)èÈÄMÇ—qû† È AA¬9Ô}ïßúÖ·Ä äñÇ/¼:¡ð�ð…ô­o}kPñ[·nËøî¥ ½Aßûî»ff6_¨ð^}Ûm·‹A|¦¸ôÒK4À¾}ûàöÛï€a€Ï¿øÅ/„—€:°œßùεpõÕŸƒ÷ïþXç<„rËh¿Hê¿C³ÿˆÕK“Áq¬C(®ÀÁ ¬{¸œrýÙô4m ½X`ZªnÊ‘#G{ïzýCF…x[ª '¾v(we·#|Ò-7kˆàù´×Ý€ø¹çåþxœÚμXòÒÂÙîpUòþYîhˆÕ •<,0·³ZCoôü%Ü#Bmº­û‹}/kÞÆ0:&FZŽš[3êãñË}<Ap(v^O/‡/lÓóç#ëöÆ?zc ]˜‚ùÅc çÀºÞ˜C£7Ë¥à@sŠ¿ÊÀÎ;e9¤GÏüìã÷Âm·ãÎOajr¶oß §Ÿv¼XŽ ½—¢!BãÁ4Ô3ärÀ:•—�…of¤.nm[¸´T„êëXï¾;>†Þ.äs˜8tÒf¸äÑÇ÷žmsèö®Ïî½GaçCàçwî†_Ü»_ˆ0º].O^¤7bÙ˜pé ÅêÊÙ±y!´P÷Êkm™†Vmo>Õ¾L cld²µÏMæ~÷¾£ÈƒϿŒzð…MM— V.øÌë­·Ã 7Ü(¼@£ Áæ‡ÃôŸûÜÕpÓM7 [A¿àûøÝwß-Æð‘XûÇw|‡Wamp,ã?ïyÏŒ½{÷б7¿ùÍðö·¿† Úî¿ÿþÒžA,=xîüã‹1®K/½Tx-ÿ⿇"¿„að¥/}¾þõoÂÙgŸ-&ï¦öìÆó`¯qàxÓ0Ÿ™Ô}W= ©í¡2©°©üÉŸü‰5½÷½ïíûM&•IÙä”èCm'ˆµ ,|©RÊ=ì(Ñè¢nøpƒÆ%¼¨㥷 5sNÅÁíJü�šg „^&ÔK|®ýVÛTG­„¸ gÛbj 4ü(O2ÿ¼ô¸Šº&ÞA±Pž›ppⳟý¬ðPõêW¿ºyÆ3ž!f…|ô£…W¼âÞ4Î<óLøÝßýÝ ¨”Í8ÃãæŸß _ôX˜_˜ƒ»îºùÈs…²„/¿—)< |ÎØ»gÔ þõóa{³°Uüú6bíb?‹*l>«â³m¿Ïª ]Ããó;Š6Ôsö à3·\cuVÙ©:Øßس{­™§¡"iX ÛõÙµŽˆÀû{hƒƒ¼³ú“¢ ÒûqÝøžjÌ·ENŸ*î#Uº¶Ü!µæjê¼FÜx[ø%¨†ÔÍ6‹ík›6Òl* D<õ¦ßÛeÈX-ËÁ¼Bb‰AîÛý\gOض;ИÛ×û>. àGg‹± ìãQˆ‡÷ñl‘)Xï{!°¨Œë•±@ήÄß‹½{Ä,ìë¦n¾å¢ÎŽuÆ`ûqÛáŒ3ŽíõõcpÎ9çÀöíÛËçœåCé–³B•pB.菉#e]Š¡”º V œim£w\ÞÏN¡‡Ækºiã4œ}Ú6¸ì±§ˆzòÀÇá–;{ÏÜw> ÷Þ¿Ï»¬²0¿PLvbâ£ÆÝ”G 5JµücÞÓÔéæŽ¸E1MÄ=¢=Õg§ß§,‘MDi·á:G©šˆ´}× ùùÉe~ª@±gRZ1p"Îê¿õ–Ûàâ‹/êÝs¦Åv¬‚_úÒ—ÄX šä6ë3ŠË/¸àa ǶrÒI'Á›Þô&¸óÎ;áôÓObuƒKÂÿó?ÿ3œwÞyðº×½NÜ·°¿ãï€;wF=™Üpà ðóÞøÔ…^Øø½Yy­Àü”Àb˜ý´º(!‡º?ûòTáš>¿îÛw�v=´;9žÊítÊ.GkXØ1ꃼØYâ‹<v ø_îååBvÞ¬ìÈÕ~]]‡nVÜ´„Ê Å½¿J¡Ï´Ãïj›òh!–)é•i²7�­fWLNŒ•=®Ê?˜×T‡^N‚ ˆµήÀ{óe—]&f+*N;í4ñ2Šû‘Ÿüä'ð¿ÿ÷ÿ†SN9®¿þzxþóŸ/f¯ ’ý/þâ/Ä {œyòáDÌÀûêå—_.f Äî¯=ôÜÿÀýð+Ͼn¼ñF¸éÆ›„ LO†Oê³ðÁ¿û€¸w_qÅðâ¿vìØ. ¼ïÿûáË_þ²x‘Fפ(úÀ%ÀÔÌt!гjÐkÕsŸû\áÒçæñcû˜‡B<Nä÷ÿM½sqº”ù_þ¿zÏ‹ðš×\W]õ*xÞóžÛ;/?…¿ÿûÀÏ~ö3qþžýìg÷Êö«03SotÖEÄÚ#6ã\=3cÆz5èÒè9Ÿß±ê‚çAÀr., f4éƒEJ(À“Œ+Zýí¬ᥭ®4êë‡èn#de8 †1fkW‚µ¼CRÂ×yŠ”@‡ÅŠ•G\ ò§÷ÿŸ½ÿ�·$¹ÊDѹýñçTª®®®ö¾[¶å ²Á $aÄÀEð€Ç|ß.÷1ó.\æ=f˜Ì� 03y@ÞvKêV·L«½+oŽ÷Ûd¼X+re®Œ4{ïSçTUwÅß½ëìk­?ÖŠv§;$ ÷уbcêN‚Öe!BŒ‘¼bNØ„z“Âý`êV³etvMƒsÆòòŠëWŒñ`š `¶D¤‹8I\ zпô·ÓëÀ‘#Gèƒøä'¿jÖgSpų´.Bz¸IßwÞ”£¸ž‰Ñ^‚ÖXpq‚Ÿ:¬@O²øóòæ¹]: ¯~Ñ•¦_÷`iµMáDz|;ºÇO¯Ð.ݰQ£ðºÝ®ÕËÊzÕ: >ˆímÉì%Œôr‘·,,‡$—& @ü=—\±-¨Ý¢Ý˜$;™5½ûð”"�y<µ€ïÊÑW]y5<ðÀƒpâÄ #k[’§?ý’[žýìg“GJëÕ"¤°£(ƒßu×]”îe/{üüÏÿ<Éà8W=øàƒ¤G@õh—PÆ×»Þeòÿ4åÛm·ÁýÐQHÑÁêœö`„¤ =JáKñþâ/þî¸ãz1œ)æsàßö¶·ÁŸüÉŸPÝèñó½ï}/üÚ¯ýC¢^÷‡2êþàþÀè~•ôX.êÿÍ¿ù7¤;Áùò—ù—á¹Ï}.ÝçÿøÓ†l3Ì u¨ƒÀvÀz¢×ÿñ?þÕ¿ð…/„7½éMTw´g ¾åýï?Õçá_ù•_¡§(?â5X7¼×K.¹ÞúÖ·ÂK^ò’m{C|2½œ  u?,÷"aŸö9$Þäµzkùä'?E‰°ãf¤a!×ALhØm’o@Î#æÉ²ÙƒÅà™É=à¦'^—É{—Ž<<.6x‚…GL`8žDtÀxžb7¦M±g VËÁµkwTü¢ ãF³Ad L»eTÚq=dâQ¬G;@sxR2Dž*èƒ^2PØ#!ЖÛƒXYÍuDïˆAìOvhÄ„Ä8‡¢ðí =oyË[R×8q’”¿ñ¿AŠTH#Ãÿú_ï'aÿ~áh‡À'>ñ R B$OkˆÊGy”æå[n¹™Œµÿd®?yòTL°Àú ›O$>üŸÿïß‚ÓgN‘W÷¿ÿáÇ~ìGMyÿ_üâá×ýש̿û»¿‡ÿù?ÿ')?°ñîw¿ÇÐ×’7T2 ¢•Â?ò#oÉ5ªíNþÞ7¼*A¼}üïÿû¯ÃÁ˘:¡«ÄwÑîT9sþÓúO°µµoûÛSmí~÷¸x =•Èßò¼ ö`q}½ƒUZ±P>;Ù-i¹çqëñ¶¹¡ÐÏ £r¿–ÖGð0v¢½‡ÍC uöüGn¿×Î_™®Ì|:%Hyã;ïb—ï ŽÒ¦eÊh7wιÂ"vÐp¿$€³=œh,T®Q_ç§¢‹Ê]ó:z‡"^9ä ÒWœãW$Ý›sa�]Õ†ªîšs5Òwp:{Ïø«“Æf ³h$_YY6뽞968,kÅ~¦—¼aÆ}¡)äÌ™úÜu׃P5óÊôÔ´1øì‡Ñ±0kÉ}û÷A³Q§s £âÝŸDîPyoñUäL€½q@i8 9÷^Ì£E¯¢qÒô“±Ür-~öÇiŽŸÙ€oî‘w9\‹/.-œY‹˜¾×éjØjw£R–Pa 5`/ô…C‚}æ Í,äy8k"']ä8"Õ?óŸµÎ¤+ƒ$zô…S¿âËv¢ƒ‹¼âo^vð8¿ ½~/„›nºî¾ûkDº»òÊ+èÜ?üÃ?Ц ùNb¨¿ø‹w›yg ~û·›<è!Yàw~ç?Áoþæÿ NŸ> üÇ ££c$;ÏÏ/þoiã…ÕQhø¯ÿõ¿ÁÃ?D2>L€áPæ8>üðÃô}ÿþKˆpþ‡ø‡´‰ã?þÇÿHòÌûÞ÷^óy…HæT‰äþæææ©þX¯ßú­ß¢±ðÏÿü/è>“0ç]"q¼ùÍo†Ÿø‰Ÿ ¼Ñ{^‡2�xñ¯þÕ¿¢|pÃz¹ôÒƒ´QÛ ñ»¿û»$¢þ7»`{`¸†ú§‚×½îuð‚¼€t.ïyÏ{ˆ@€ã7ê;^üâÓùÛo¿¾úÕ¯’î‰ PÏ´²²³³³ñú×#èÙdnn.—d€º1l«“'OÂýÐIÿt6`»/Âã?å ^M!NŠô˜7ß´kåÍ•Ò|ðýÀ>në˜÷¤MßуM“B„„äõ‡…5Žêämmž`á‘Ðq²—±Å™<Áµ û‘ǘØM<ÀJwK)¥“QŒ¶šÑ€Ü e€'Jz¦àk±•Š¢ÅLjD§ãoâqœlg#ÎÃÃÃÃÃãÉž3q^EE�{‡bÒÅ}÷ÝGì}D¥R…g>óx ü¯~õwÂÓžö4:‡JU.ã£ý(|Ï÷|¼üå/#]$"1/ ×(´Ëòk_»®¹æZ¸äÀ>¸©}#|ä£Ç{®½öÚȰ\5‚\~úg~Ò(DöÁp,..Àç?ÿڱ厎Ӽ¿¹Ù†û±·Ò:ãLßÿƒfÍ1ß÷}ß—_~n¼ñFc˜'’G2EÀ:a€\wäšväOŒB½Q…©é ¨×kF�ÿ µÙW\nê4O÷‹»RdòÓ?ýÓ©uÛþîw/p^\(ÚU"ÏãûÉJ™íôt?³Γ×΃|ËË€]G6˜ƒs~ˆú«Ø¾í¦‡Ä(k½ 03BE#ÄîÉuôhiðgC:ï@UC¯t®Äyƒx¸ŠoÆ–%£™ö“hÇ‘C£LmJd‰Ç”:“…mã ‘BëÜïhüÓ©kå÷€ z6=“(x‡t& 67ë$¤$×#.'Ú&œ]dþ‹Ž*YÏ|b”R•,Ñ#úr½ ºiiûôé%eÏM•½}¼H [.¬O¯Nâ5D×&ïE(ë«ã·Óþ¯Ê+`7X(¨¢§žz�M3?7Í\:®Y ´;=útºè%SS_ãø¤?ˆÃQŸŽß_HúTªzšžkaÉÚž]erƼ}‚¸i¨¯AV×ÁßmßÀ°ª+$ò;ÕC[ÉuölµÀ´Y³p¿BzÃ50éÖf¤çP©;±í£3$\ß wƒ®¹öø‰“ôA4›u³F‡½û&Íú« W^vöîÝCž4𯀄Ÿ–ƒ¬ ÓÍ××6­¹ÿâå:o°Ž›c'æ·§*°Ez†œ}{GàU{°}Ñ3Õ!Øj÷àÔÜ:9±GO-ÃéùØØê˜õvÖ6Ú°iÎw:Ö¨¨(s-B6‰­‚DYý$”f_-âX Òf 7JäÓˆšï°ú”ãCü¶B´–J¬ô;ÊÇl>ñUÑ}@Ÿ:¨‘ïZ3ÑjÃ΀Ê-SÜCnÛú÷ÀãlaÇ뫯¹NŸ9wÝõ5xúÓŸf ØkDø™Ÿùi:Æøö·ï#Ù=^ÞrË-tì—~éÿ¿ð ï Ï±c'àÔ©3ðïþÝÛi“vÛӧω BÁ‡>ôa"S`ŸFoW_} |êSŸ†‡zÄÌ+{£œ¶¼, ˆ5øÖ·î¥KKËð|Ðè0žAzôqï½÷ѦÜ(é77·ÈCÅñã'`ß¾ýB7 ZAUˆ´Ž›LVW×á'~âmpóÍ7ѹw¼ãáç~îç(%2ð’—|¼á o 9ó{¿÷ûá7ó7©]PÇž§^ñŠWQùˆç<ç¹p÷Ý÷Ðæ—'ž8 >ø0Ý?»±.XwlŸ{ïývº}Œt1Xïïùž×Á›Þô–X¾«ÕÆ�Þ¢°_/~ñK൯})¯ðù¡.K‰µµŠ¡ÔBÈ’°ˆ?wÜñeò^žR¾ñoÂ0È#4èœ5TºŽ¡Ý˜£kÅ«®Ñ_ý}ÊÛ¬¯Ý\"C‘Ž¡ˆÊøìg? ¿÷{ÿ \¿ø‹¿È¹ÀM7_O^ls«åÍáN½žËãb‡'Xxd€7.’àà ãr@Ob4Bæ Ò$ÿ–“CŰ$T¸@Å€«uàr˜hq1¹Èòððððð`°2ì¨pÇðÈBÇùÈGáèÑcÄÞG÷”úÐéÜ]Qú…RÜÁ˜™™I…úHCSzTPÜvÛ³áŸÿù_hŽÇ$è‘âyÏ{.)å-q²Bä  —HùŽïx)y¦ø_ÿëŒašÊ|ÞóžW]u%)(Ð $§Ͳ=pà®ü¼IÚÝ*b>ÈäǺcÛ„¦®è) %øwؘOM¸ý©¬å)G.lœï:ž£A?EÔù”øU쥕ÎEù\¸ýM÷5’Ê÷¦¬Oê‚kËïµ÷ùäŠA~ïvã¹)i®d²JÆR8Xtáq‡¬ Òi)„€)¿Q³a@[MóiT‰DQCBE£#­*ŒÔa|´Ó-Ø3Ý„ÑV ÄK«[°´²Eá­¶™§Í:§Û £Ð¤FŒaÐk¦ùnC•†1)¿¡‚>ž;ñ{7ìÑ5!]oÖ3óë&ÿŽÓ>’䓺½è¥”Œ‚l:wbB*F%>ऱUöÔãàšˆu*ø×¬Áµ ~ð7®k®.‡ËÈÓÇ ÑõÄñ9ú ük_ý6LŒÁì¾=Zdrröî™ ó·iô0¸» «±þÊZ@ö•Ò‘C”,±IAƒ†Ç`hÔ+pèÀ8}�.%rÖÊÚœžÛ€#'—á̽[ë¦ï¯®µÍ¹6¬mv(ÔHÛ{ö1†Ž' ¨/*€RïâÕÈÛ¨ÅÇS}YgÏÇ×äL¨;9ç¾g¶Ûˆ*ºïÚÒ÷{Ý�é1 Å?ø!Úáþ™Ï|–¼"ÜtÓ)‚’ê4ÆÇ¯Í•W^Ecn@çô&Àó\BzL^!Q?qçwÆ^pîEo8(•–á]`Zô ðÿøÚT‰áJ°¼ßû½ÿBçQzƒ/ËǼqþC]’z‹òÇú¡~ï ‰„ŒC‡ƶæçY€ú ̽ éçVi0goàXwôäuùä'?™Úsà 7nls|_þòWˆpúœg>ó™ð¢½€òü¾ïû^øÜç>Om€º˜[o½…Òãœ{±�É'I¥ Q„^Oƒ ýp±½±ã³Å Cƒ„{uQ¶±¦lL~Å+^a”èÌÜ+û–‹¢ù­¨ŽýH¨ØÖÉæu××¾KF¯†žj¨?›Ã^ý°Û!ã<<ž,ð pfR‚$K¸¤\„ÝSä6ÄG—„ éFˆ½að÷¼üdù.¡Â-/q©êÂe¥‡‡‡‡‡ÇÅœ Q™€ÑÕäUW]EŠîŸýÙŸ¥¹øþè‰�1¨òzTˆ0P •B­îÞøú׿A ô–ñ¥/ÝNÇQùŠT|ì1JxV(àÎT¨ Ø» š¨Ü@Wž§N$w¤_üâ—È-&ºÏį(D£ NT(àm ÷ ˜•P¸²l‰k–¡×ëW,•?öc?Fíˆ@C*‚Q ÷ð@ jMŒgÉZÁÜÎF‰×ó.’ävvcy{?((6';›t’–m)ö@úš‚gÑßÄŸ¤Ó¤Ë\~Ò;„Ý{K÷•ÁJ*îc*Ùºë^³Cv%Û R816§v%’WA¶¾:r9_F®È\³M£ÖÙ\·[>ûÝÙB͇òPÊSÑÖKƒÜÑ.I1Ñ–tô¸€Ä‰‘V ÆFë0:RƒF­Nd‰‘‘:Œ™ã“ã ˜kÐw$VÔj¼Ù#ÊMñ'0×)˜ž‹ßñèí±FT¼&®»k¬„h÷ª†žîEd «KÍ÷Ž1ü §¬n=d„pû=GᎯ3k›0g¼r©l²ÊÞaíüµßy½”§ áöæï’Lk"I A£ïø› £¨;‘búõ;*è˜6šŸ_…y³–R‘Žhll¦§'ÍólÂÞÙi³~ÚcÖcô{jÊ7)º°^.”»÷ù^�âÐö·í˜®Ád§ß‹e„…�ÆG›ô¹úrK^Æ÷`qy“ȧç×`qe“ˆ+«[0¿¸I'$7m·\&h§ßËñ£ø—*¢³–8‘-Þí;šѵEˆõ’NW4ÆË2¤Á+¯üBâø¾îq/z—@/Ÿþô§áMozS& Êó(w wî–HªÀ17C ‰çô.±wï å(ëãqL¤œw~ò'’6M Ћæ‡00ÁÈ{µð]@^¡B1´è¾ð…ÈÖ�ñCSùûöY~uuE„ ¯Q¬sÀëPŸ`ß3 9ßÞC"[-,,ÆçÏX?œs1ìêÌÌ4ÕïC^ ÛI�/|á áðá'à+_ù*…yç;ßIó(Ö³ž >ú…¼ø›¿ù[Ò£`‘‹øŒ°¯=òÈ£ðüç?ŸÚ‰+Ø_ùÊW’g Ùw0tûíwУ¯|å+æöž{î¡0/¸‘çð‡&¨ð̵Iàºêßÿû}ÑPÞL<LÊ€dg>óYq~õWÕ¼+ ðkÿúÿIú5‹>…=ÏÏM;<ÁÂ#Ñ !½XÈZ%¤W ô¥ÐÀç\oî. &Gð�-''¾N^F»]eºÐ‰3Å ?Ð{xxxx\̸âŠ+(tƧ>õ)š¯¿þ†ˆpñ�íùáþa„yxÑ‹^DŠ–›o¾Ù(ϧH8}ì±Çà¶ÛnˤE¥ÄwÜAîÛßþÓÀ ½¿ó;¿ßüæ·È=#4þðGàe/ûR, ¢� ûöíƒÏþóFð= ¯zÕ+Ii€n=1, ®®ºêJª*T0>)^ûÉO~ ^úÒ—¦” ódP@o¸kw‚Ôë xðÁ ~šÒ` @‰ÊŒKßo¾ùj§{ïýyÍÀ{B÷£W]uÅÉôðØxíËä$)!y©lçJ? gšµµuØI°Lp¾1¸aš÷ÉçC¾5ÀrºÈ%wAÙÉnÚ¤œr%Ylâ •º¾ ®áePä¶¥Î|IW§è:QOyÞýž2gÊ¿i··é¿ó;¿m’2£> ŠÎËTÙœv‹\q¶ØIå¥ÛÎIH$’„.0Zæ<oqÒ¾S¨70*€±Vˆc#5˜kÂÈh‹<P ±¢Ù¬š9¶ãD¢¨C«Ù€ÑVÙXcw™*§¾ô=PŽ!Þ¦§Þ£Ð„Ÿ<ë„P‚ä�üR� ¡Jj ŽK  × 'ÂÜzÝ,Ü}î8-2$÷tD•Ê}Žº8¿øyÙc‰‚=ëÁÁí'ø7¶ðu8ïpULOÄŠëm ¸B£.\}P^Óc*’Q:0¿°dÖZËäE ?££#019Fñ¼÷î‚YcìBƒÛØè(5}ëUA‘£•—¨€ßCç^½®gxè~mæ0ÕðÎLž©¸áª:†¡C–W`± æïêÚ,­mÂÜây{YZ1†Ò­^œGB›)B@!H¨/ó{ª’wj°10KtbÒWfêÐL²ê?—應7Œü±Ò½¾ŸœÅF[%œ¡DG •s½ïÿ»ô*yë­·RhP”­_ô¢Òq©s¿òÊ+)œ'¬QfÆyäoÿöo)Ì(z`¹ú_þå_ŒÌýZ’uP¾ÇüH¢xÎsžùÈGàG~ä-DØÀ°¢¨'xÍk¾3!ŽFñË/¿ÂüN¾qNC’Ö??ôCo4òú½¦gŒÙÿ޼v¢ƒ}ìŸb/”èñu èñ é†Ã~"Áõ¼: ¼½nŽŒ §mêú±¨ à¬qýõ×QùŸøÄ'Ìý¾†î½Uà”7½é‡áá‡6Æÿ¯Ã³Ÿý,¸é¦›`uu‡à=7׃¿ù›¿!’z¼ÀÍê‚É" ðb?E]¶>×üã´~¹öÚk¨!yÃa > ÛÓá7 a_F²’2Ð[jI¢LV•}‹qvGÚÕ(7ïÉŒÓmç~ØÆž`áQ�ÞÁ€Â5"O€U™] i†ì%ÓÎõn!Áž1ø¼<.™’ôQ&dàBÊ 3Tðº×½Žæv$G`¸ t©ˆs-Æ ýîïþ®(e7í?øƒßï~÷_Ÿþ韒ÒI¸s ï:tzäÈø±ûQªCRŸI£|y:‘/¾ç{¾‹”(è¢'Š?üÃÿA»G0ÏW¿úUäáË@¯=ô¥A¼ño$‚=L»:PÁƒ@ÅÉÿðÑ÷F£Iqa?þñOö$}Gå †HA% †aÏØ—]v2ïz×»L›½Ö(5žM‚÷W¿z'|á _$E®^õªW€‡cе¦L‡ë]&Xàî*T Á¢C!svÒU'“•Ï;ÊÜ÷ñ‰í¾Ø`B1ЕMÓ1´0ËHCsÑ®Q‘¸H¹j!]³Î+2&*Èニ÷<y*)¹ ¶!ÊæÄœ—NÅFãAI~ýŒØ\VQ^±!º#{¼ˆX Å=BŸ<ÎE»› Rà p½¤.S‘ÃdèÄc{ý¨TKžoÀäXÆÇZÆ`n‰HžhT£p­*y§@ïYò£ÄíÏŪX-%I¹]]ñyQùè=¡‡´[‘x¢ïŠèÞìq&ôð8€Ç1 ‚5Â*ò¢a  ²V®BTÁé; "Ó«üûŠwÔ—¼§â˜Ü€"õ0|Œ‰L|Ž7·H7Ùr žCìÚê&4š5zæ\†«èçP¢^ØopÝ´¸¼KæƒÇy$ ÷çÖ£…é3¦ßÌîÛKë=$Zì›ÝK¤ 4„ð# Èû‰J9Ú)j³…*b¥¢F#€ÙF f÷ŽñIXߨ"Ï6\O‡BÌ-mÀ‰ÓkpüÔ2ýÖ\"íxÒa‚MQŸÏŸß£Z¦Ha!]rIyó¼}åâ="Eé¾eçé5ó aîïÌýiÈ´òËóðØi¼ä%/&òn`@Ùçž7×^{-­¿ô¥/‘lÇQŽùÅ_üEó·J^#¾ÿû¿Ÿò@²�’!P?Ï?ãñßï{ßßÀÿýÿQl xþóŸGs@½~äô¿üË¿2׌ÃM7ÝPZ_œCÞüæ7Áoÿöÿet _†ç<ç6xË[ÞL2ÿüÁRœëPZ­N*‘‚ÆuÔà1ö–…T^ûÚ×RÜ‚óÖu×]·cÄsÔuüÌÏü |øÃ6ú?ŒÃz½ô¥/¡v (×½÷½ï£ôH¬øÑýQ£·ØKºL‹uÇ6ÃM$6|êUp1¡Ùl‘I)ýׯ_¾÷{ß@ú&>bν—6ÍÜ|óF÷õúˆTjÇá¿üË¿†o|ãëð?ñãÔG·|l;Û-à˜Ï¡dò ç"¬:’w³NEõðð¸˜0h¯WžSüU¿ùˆ¿ü©DÇ*ÎÏ¡/éÀ¼Ä_ˆhÄ@×SÈ2Eö*WyàÄɈ¿K·Á’ôÀŸw=[ä‘3¸lWБ1^x¸ÊÇFç¸j¨¬þµ_ûµX9¬K®"pÜúòç>`”Ó ãÑ£u#ØYãœUt¢ AT>JOBv£ëzò8{H…ÏCÉf&³ØÙÝ´Ý!hÿâî¾n§KŠŠÅå5¸îÖ—*Q.êa,ñ^›È7ÜpŸ…Á—q6/4â?~<Ú9¢hÇüå—ŠÝ�âqBQ™11aÌÅÅ%òPqË-7“Bï=Hœ8qœîÉ íö)Köïߟ2îby<òyÏ@¥„„Í:Oñ\ççè7îvyüñ'èÞ0/Œ±LÜ™D ÜÑ‚;GQá€J¤Þ«F1r„vo »OŒ)‰Š&eâÎô€yâN–Ó§O™òŽSû£ NÜ‚õ»âŠËiýpäÈQSÖÊ?¸BÅ *90Ï}ûöSZ2Þ-èý7} wÐ`CÅö·í„äÀ±ßK$áºs¬„9#¾¸ËxXÒÆüü"íÃzà;œkˆ ÷‹_þ|ò ß0†¸%.¹U¾{Ô ˜yÆ:¯â¼¢ð-7¦Ýô#Ì̱™¿ì>Uu-þãÕ/§)úå7 òø,‰÷ˆT)✛ÖÖ<9§2ó¦ôNÁý4Ô®'‹ cˆÒÂã…K˜£krë9ht™ÑZÃòÎÇYl›`¡axB”b+Ù{­ú+UÝñɾçŠHt<2´ŽÃúäX&'°oï…î˜0¿ÇGêf=Š›2*–8Q7kScT©W+¢6T*y’ÂÝÊ·{—ÉïÒØ’]ò©>¡ùþPGЃBƒÉ>(û]4(Eãi—Ò&*+üïÔü:¼óoï•õ-“_%Mèˆê’m[Mõ ö5§CfoÄéøwº×Âuhvíz(ñ¶ã¶Q˜y§\Š«+é·KŸ ©÷MÛo(sLLŒÂÜ™eÓGzÆPÕål°‘¡_“÷5"·pfö`|ÿi$âŒS5ý ‡] 3{&ab|Ô¬Ýfi—jÅ$®22kÑÎü×½Wså´}·§as«Kd‹õõM83¿ÇϬÂáã+prnB‹ 3^)ݳï$õ¿ õÝùX"P–4•. ?£T<ĤúŒ É9H©°pŽ{£<ê\Ù»¨¬Ôwú™¬EÜ5¤íënfœnTàY74aÏÔ84ΠZ©’Û†B¨¤ôÒ˰ýëõ»…s§/°×`Ú´¾`p ò2#pcÄÖV›Bzâo”O° ”×1np@ Ç„ãÇ‘,ýõ¨[à>„uyâ‰Ã¤@BÝÔÔ4}¿úê«bÝ�Êø(¿`ýq3ê!ÆÆFé¾{ìq2ž#™½LH ütúôSÞåDÈ@`ÑX~é¥Íç€ÑQtb‚­ß^£_8@Þ”lý6áÁ zbÙ¨ÁûC=Ö£nÃb¸ ô^‰¤ˆÿðþÜzë-¤@[nÐ@ <wß}÷ÃÓžv+É?èâСËÈ.À{ÁûÇö´^?B ÿ÷‚߱ݱý°lüéQ¶ <vå•WPñY œ…:‹­­MšC±ÓÓÓ;J´¿Ð¡#'ꔎ;Jr%¶!>'劲6Ú·ÐsEû4êÀÐã>cDÙ˜G–Ã烤—Ý$4`™Øgð¾²ÄÀôc_Äzõ_Ùkî»ïÛ¤SÃÍEVÑ-…} û£$Y C°ÀqÃî ¢/Ày ß_§Ì3XµÁrô·ç|tô7-þº(ø]ö×ýî¢ï 1èÊÉ,."ØÀŸýÙŸ™ož&rðXá+oþ+wH øï˜;!\á]º­äÅ!ÇHçãœ'ƒ¯q ¼°ÄžhHù¥_ú%O°ðððxÒÂ,.L<ÙçEJyßiTª¡² džƒ’»ØaÇjT>|”æƒZ4?œ-Á¯ÃºŒŒ4‡½t‹¯Çnßs‘cñ—÷TØ^Jç,coDàŽ0q s,›¿K² öAÖHAl>n™“ç`ߥ~�BHæžò1L*r¢u¹a6ï·%Xä§ãüäûº†Yú“í¿¡Î‘Ù“„Nž•›&ãµ",»©²(¾GÎ÷\,líTºq3 Ê•¼<6ðZeeÜÙ9>Ö„{›°off&›äb¤Q…F½B¡8j´é¢ ÚÈ ÙöW6ÜN^—“íïrÊ :Ö¥åÝrÏô‡#oô7d/aMëÌÅHÞ”5Ýñ2yoì®ö¥Õ6üþ»¿˸ ?¬æ¶±$L¸`‚…-œ2’¾ŠGjz#"X0ArH>aƳgÜ*NX0LÒ2 "ܤ{i™/^‹d »‘Ææó¦Ãþ#ÿ¶|•2–»kgÖêä Ý¿% š~Ö¬ƒÈì¿d]v)Å—ŸÝ»‡ôS8ÇñüÂùyrÅù…*i~|J(µÛ= /Òîô`c³KD‹GŽ/ÃãÇÈØ²¹±eži˜PdéŽùë(;[Ý{_‚‘´C°È«¨ï¦ÞQß\Þ­bRDÒýÈÙ<TrN~e×3F›UO°¸�ñd"Xx$ÀfF£û»ßý"-¼øÅ/¦÷Ct`¸‰?ýÓ?¡ þU9¿Ø­)‚=ˆ ¡Á [¿“Àñ74áz]êä_ $|àX°[õá5&Z\‰'Xx ƒ§ Á‡ñȇAHÒ Üø›…s—\Áp‰ÎG’5$C'dþ|-B¦ÇÖ€C±8ÅAÚ »…ŒýV:à_T(ànÜa‚Šôƒë[Þé4P1ñØcOÐu®Ái;°;®µ1–#Vv$/Ðpþ ç©5›eÒÏ'm@e£œ´’›cA¹±¨´ÎWбI¶éúçõ›ä¸c°u úýêÙ¯êRQ)Z9·ý[î®w GÆsB-èèÙ¡Q_äWâw“+䱞[‚ÌBGÏ(2¸ëL~;³›0u?`½#€Sg.O© 1Σml¬{&›° S£0kþɕ€Òྠ‚ÞìoÊ9°.PÂ;ˆkhD¹?ÇøÈ5Î#$ð=õ­Ì1ûnBüXŽDh‰8‘Û¦µï/“𿊲mÔm»lÆôyƒ\ƒ'×g¬eÇÖ@W —º—hü�VöëTE÷œüN§ãþ“%#¤ë‡eJ®¾…Œv‘nE%äypÊ’¤ —$ˆ°` ¥ÐÇ9 ËÁºà\f½¤AìßLÇa`Ó$ªèÝ I jwÓ×6±"è°¾¹ ó Ëpäè)¸çžû© ÜÙ|`߸ôÒKÈ‹ÆW‚é©I¨FDsPò‚Àm™ X†û.JÝ«Äųx'Q6—Ÿ™j�ZšcIløƒ—MÂÓnÞO^cðØâRNœœƒ_ƒcÇOÀ©ù¶y®¼›6­ךõƒƒ¯ÃÒõU úëÌ¡ˆ4ç½÷ýÊÍ›ëY_š¼oy½s 9Ž Çç?ÿ¹ð÷ÿ÷ðw÷74ÿ]{íuð¿ñëDöóf†óóñ \BÎ[({³Ç’-ïº"¸:™?~G+–#ÓI{š;¿`z"j™õ”[Π$Î×-ókóˆ#<ÁÂ#8Xrl±´œ&r•±8ÓŠËì_ö¹,&mÈÁÚÄå1&W  Îñ³òXsßÍÃÃÃÃÃÃÃÃÃã\A®}³†cˆÉÄèZ•¸®Åc<ð�y`C¹¼æÍSVà7t ‹®oÑe(®Û1¿¾Š b›À±¨”ÁØÀl˜s×å;³à1ç©…ÑU«ØÈ––/¢çY ]Y4äìŠŒÛ •Y(…´Q¹‘¦°élžEžr/¿F ±£L!˜—'·½{®Œ<‘C‘¾Ðî— þî’âûɹ·^®‘¼ÈcCäe€<@b,îŸKþ»¨û’@€<p d{M7azÚ¡÷šÏþqØg¾OM6`b´õ{¶dKØëîÃ9;±e?£î Ó¥jA%tHÚ!Kt ÛCxð=†‚<aÕÉýI¥3ÿ&o$NŸM—þ}L6yô]-E^ëÿtµ$micœq¦°.*õ]S8ƒ¤x~S0¯ñãê]òç“§Ë‘éòïO§<šâwÜÕËù¢«u9‹zÖ/ñ\•.”xæx?µÔ¼‰[ºß¼ëk[pòÄ|ížû Z È5<ºFß¿öÍî…+®@ŸÉ?$ÂíØWUónV„ÇMs‚Í^Þ_èüåóÞ`p¶k!9–áðS¯Ш۾1>Ú€C—ŽÁsž‰¿n¦´'O.Ã#‡àÇæ)¼ÈÊZâ^N˜´2™syþv}O ¦Ôv~‘ïpz.€ Àë `ÊW>aI’™¢B’ È|oR'Ëå{xxlîÚm .á¶Ûnˬ;<<$°Oàúåù¢0!¼ÆBäå¼âÚÓØC¥;‡”õE<‡›¦‘„k9ž3x½ç–é^+!I¹œž=fòoÿ^x\ìð x‡2ð$[M*yq@Æ4eD —qçî†éqÀçÁ^’-ò„—ð‘W&ÇxÖRð𿇇‡‡‡‡‡‡ÇN¢HA1Øc^‹qb‹?H´@c§x}ŒÊ ¿qüø ,™v°ç Þ!œ Ý_ùŽ÷ÑjšúÌd r»»~N ò;ŒQmÈuIÁ;Ôó®áë¸Z©³¢º‰!†«ß\ÓÎ!zäÖM\§wÄþ—ÍdþŒ)Î6âpX"Ÿ¥Âoè¤^ôKhàcÒ OJÈø\ôcLÍÞ_ç›á7”6R*” .”AÙnn×°ž­Kô„•õ"Až%"h¬cÿÔÔì™nÁ¥³cpÉ^ôD1 ûÍßš1:·»l8ˆXA wXÇc–Êö}¥Š•·Ê‘ý™0aŸ‰õÞJM-ž‡múnð§Û 3e&²}2vIò…$A©@Å^2¥ž`ç`۲Ѩd½™ x=ÿµÄ®¯/©‡a°ž%i<š¼ìÙˆ•ë®VæÁ!Zù:nÏ~1Åe>é½XàÅžEQ¿„1ëѳ~—ÏZz¸àû”ú¾‡Ø0�–<²¶¶ßþöýæcëÝiиâÊË`ïÌ4Íg33“^Ã,Z2¢Jl§7ÜÐE‰÷aNç±]”½ BKþ<0c>ÓðÒç]EÇÖÖ;pôä <rxž8º�§æVMß ¡júG[$•«tƒ:5w3á!oއdnÁ‹*xØJ•¡œÓŠ_øì|ŸNš›7@æÝµð ³Aží!ÏË•‡‡“eÈ%\Ûà¸Ìk)÷§²ðl×nÆë]\³ €É EõÈ®å-Á×Iè] ëä†}Ô>&çövk¸s£#ððxrÀ,<r&»dܱÐë†úÈcÓå±ô\æ¶,‡=RÈtyõ”ü¥ î=Xxxxxxxxxxœ ôÛI’÷›•.³³³¤DA’ÆME§N‚ãǧvšðº×êб|ÜÝÇéÃÒº±«ÏÉÉñm)_Î d'-V: j(U%;qØ+㨧ä б-ïþ“¿EÏy/âÞ`³0BQE UÏTÊ¡žYÖ03h›;¥º™_çÁåó×’HQR Nyó2ÉÜ{Ð2ó’:õ;æžO6 R‡èOIZÙ>‰U¯(¨UÑÐŽ|ü ßé±±&LO4`ÏÌì™hÁìL˼£M˜kòÿ(IWj²$KЈç’´Ú!¥o¢§Û|ƒ1iƒÛ5MªHó9|gÚ`h=iØ1°–ºNæ:”´o]XîˆÎ÷ ÇÂm«1:R‡Te€ ¢ Y‹ë£KûZRG€¢qÖ ‚;ÆH"]f,Ó‰çO—¤çáCêYø8ëdú#yºY—}•ûèÍIƒ\¿ÍÍM" bi@°sZlIÇrìà¦ÛÑü·¾¶ >r„>•Š‚‘Ñ&Ì왂ýûfafzØÓæo½Ñ4ï]ÍDš4—ÚyÐöËD•?§xlî{šú^}BóÖàú«fàú«g Ð=òTrrn Nœ^%OÇN­ÁÜâºé_Øj÷,‘,"7ó®XþYBÖ¬Es뎧‹(äÏh¨‚w?òU0¿—ÓÀwQ³†;»s¨‡G° Áÿb¨\óÈõXÑš*#«ˆuSQæ—å S'¼žó• wΫ“».drê Î&©‡ÇSž`á‘ 8îƒw4 ä€+!ì<ÏyßÝÝy?—%Ó»B7Ãó<Áyxxxxxxxxxœô[‹2ÁÃr "„ݪ£á‰]{"¤+v4Hâz]+ÊËÓ¹e®ùk022j \”!6¾r(#ÈÎ#DC*€p@[wBÚî¡�2îÀUäµ@Gμ£$ÒÀ¡ ÐÓÄp$‰,d„aò±†Ü¢sÛ{fƒ âïP@d( Õ§Ó%mÇ_Rd…œü’ëUä¨2ÇÅE©ëËÚÁ^ä+GÒÆL�2ŒÉ+黪Ð{…ž%0DG³^Fß»Šy‡09Þ€éIcžhÂÔ„ùmþNŒÖ¡ÙªÓŽû¨GF¤¾UóNh'\…ô<áðóÀNìã´`É ½Ÿ$½°ßk|ÿѹÐ^žj›Tyª"òHaNúbƒ|ëdž» ,g¤Y¥­íZI%5×']/ÀóArÿ"9¤ÒØ—#Ò©dõ#î}»Jow“L)"É3y¶nÚ¢ú§çžäÕ“a\ëqPß„ú>‡„ ÜiÙjмÄù[ר˜ëTÔ26lŠ$ï�ˆ>iŠY]i›Ïixâ±ÓP5Ï­5Ò"ÓÓ“0>1/ÛOßÑ`€s Ö©Z­S¾Eíæ1<ò?ƒÎO ²ï}‡<V˜¾ »&F+0>2 ×\>íNŽœX;î> ÷=r&ž«ú•VDTdoADÐpCý”åWhPSÉ}¥æk-F5X~QjðððØ>òÞ/oDör goðL •v«Ò9!‚\!ñ”C«¹×æ®sìlL²À¾Œu’Þ5¹'yoì}ÌõÏç=<.fx‚…G.Xaë*Å’øžÙrEWº3b…®LëNü×ÝY!¿³²À°øþ•L?/{xxxxxxxxì¤QªHÑPtޝ!… *Ap *g²;¿q‡o-Ez.‚Í7k¼ÄëPiƒ\/ç¢ùz×¥è¹DbDOÏ¥cã·R ï*¡l®¼“•¨*+“ä•™œ³^,ƒk„‘QBLñ5ˆ1µ¼>ÃA’3ÒõSéD9õЙc‰1*WéXðXR»Žã"‹ï³¨ "{U$NTa¤Qƒ±ón™¿µFF›5©ÂÔ¸1îN!‘I 2êZ¨s‚LQ4^©z†n‚øn2÷¦)EÑ‹õs“ºÖäÊ y&mˆWQYXï•Tö\pc8ó±aVø¦ûŽ,—ÓœüŸglm!Átîù$ìWyD“<c½¬·lö¬Ò]v™W>©Ež“:˜¤Ý†#dÛ;½ÑÆUô˺º^NYyo½3Õèú­­6Çð¬÷A½R2g™÷ b‰‚¬ÿÁ& uò{;’ëÌQX]]ƒ••u8|ø8(témòšœƒ}ûöÂ8¾Ÿ3S0k¾ã\Œ†„‘4p4@nôñn¿×¹sp\ÅãjŠi¿c˜­v×\׳ä3§ïV«¦ÿ1Û‡»`¸4œÛ“>ÉDw¬Ó™zkAõ©ûM^·,ß“OÄÔËü|²óœï—gƒ¢ùÒùÀI¡ìuIîæc™^ÊÚö“?ykÆ<›™{̵¡q¸Qœ[q]Îkó¼üeðx6®ÑÜu»?<<,<ÁÂ#8€â`΂7 Áy‚2—Çø8^ÃJaW¨v¯åÜ9%w"’Lx·l<Ž“€ð=<<<<<<<<ÎúÁ¼žå8®¼³×5„áwTÀ ·Æ•ÊUZ·Îç{-7,:æÖ)W–‘‘9"ÛgZúC}aáÂ6oô#‰ r}ê7À¶©!œ_Æô¯Ó,è·’Ï_GH2vÿíÖ"ú«RGtA}¾=´U 1jŒ°ÍfŒï­VFÌgr¬ÓMkбzÍ((ÉìîÄV‰ÉÎy<e]\Èë<~ÔÇ¡ýr”¦`Ïl¹DòUÊÝÿhŒ"’QÚŠè…‰Ü–Р¦=RÈþ&=ï)‰‡Å }yòÑ`åÙ{5Ï’‰AÅu £ë¢ï±u79ç\%ƒtó’GbJºÉs*ƒKxÈ3”å‘o资©¬—¡¬\‚khÀ9Ç0t�!µPßÄ òr„‹xÞ ãû°ä¢ ¹! 7Ç<S$­cÃúÉM8~ò  §F£N¡²&'ÆÍûÛ"âÅž=3ÐiR™ÓÓÓñ&¿»ypð³eý HÝb–`±ººZÐ%¹ È“²î èùñëR5?ª•hÌQÑ(½›ì"Ö1Fy*~ßĀʉò/àLe0ÈÚA޹¹)µŠ©og3w{xx ‡²yÍÃ#o^Ê#ç M × ¸^àͼÆreT–ûy£3þå5”Û•ÙÜõÂzèªÒZŠ=drÜp¤LaÂ~wËàôž`áQ�ÞÕÆ/6X—Âx‘€é$܉Â]¶¸«àå<\?©€æ»Sòðððððx2B ¥£`<<.l†yw9-{c¸ŠŒÝòGƒ_;øu$khw|P°­21˜ ؘ—UødÚÑu*‡d±ëyi�ò‰BˆhªI 2Ï2%˜l%>n}³×¹í$¯,‡Ny“³y9¡0rújQ癓6ÅÛ Y–‹’¥ò<_Ò7SÏR–=K…² ~A`{d˜ cŸŠ#ÍŒZ²ÄÄX5r׋ħŒ´jD°C‚ÅHƒHÍF•È©wG~ \»Žûa’P^çøÞI;DWÇÆ{6Ëg¦²cÙ8Œ †‰ažÉ „±^óŸ,1"Kf`Y]ŽSé{r±ýq,1NÊc²â:kI !‹lt¥¼6¿_Z„¶iM™åÆ*«¥NÕNü.ºÞæ­RB§¾—~ÜqOêm¤ÀÕøD>>&ÿ–ßgúý/3< 2>ÚûT©ôønµZÍ(Oˆ‰Aìîš ÷øwjÚ6Al,à¿x íÞDO-¢NämÅüÝØìÂæÖœ:µHûZýQ"Z´FTþ¾}³°o/’.¦éØØØ(•W©T1%!Nų›êߎ»lWÌK‰{cGìô«©]ÑKϤ #yæèá¶KÞI,Á"®Äó7¨tRsx¶’öl˜Ü=kóì*Q?ÏTô\dá*}/rîÉ:ö†’´FBÎà_rP§¾Pà ‹~ìaÅ=Ïd„XU6\òL=<<ƒ×¹xaÒ©L‡6)$)à|‡ëw½ÅŸ¼ŸÃÔ#oƒD˜Ìk$ödáÖ‰ëÁu´3<ÁÂ#ÌV+S–1ãœw¸„ ]Ò„üŽ,‹ó“±]b…$SȲQ˜a zxxxxx<iA:º´ –œðððx²a;d‹a¯+È ÎCù åikð¢z±iUˆ&Jå\óëÂ;fóωBtòØ0+®’<Ru‹Œ)R‡îãDk(²ž¸²“J[¤¶ÑæƒÃ%Rð1YnÞ¹ä7Õ,Ê#ˆ ÜØ”]§uêš°ÀX¤¥á\ & h±÷6ôÇd�ÌØ¶QZ½FGÔI''F`|z„ÂvLŒ5 Ù¨@£^£Ð-óA²E­V¥O½ÇÄ'$Ș’)¬œ‹w­À5’®]/e‰ççro˜9Ž÷feb÷eޭϲp©y²ä÷06ÜñqÛ¿ ƒô±¢$eÀጃ:ý]É_ö9Ó½E'‚0©y¿‰ú`–¤QðNÇæUã¦ÔAè¨Ïåµ±“‡æ±ÃaOó3¶å¦ßkÝ÷¾óˆü[îB,ª—{މÒƒD?%}úÜúC¶Q–à³¹¹‘òp!uE¨#Z[[£]£hDÀPH¶¨×í.L,»¦j)’4|àq"n˜´›ØØê�œ!z<üÈa%ÕZ�ÓSS°ÿ’YØ3=“c055iÆŒ¦é'VEÕÌwçÆž×²œ´l˜&Jq›"™?½®ùëcäé±Ýãü¢çÇófŠ\(ë’iÓˆ¨âµU©Kl‘¶´ QŸvçH÷Õ×"/Å_ó&8§"ô(âÖ½øÝŽõ¥Ñ0‘M ÐǛŹéVÈ£-I´2´}ª(¯a¯)J‡ ül»!szx<™á ¹àÁÖE‘0,c@Ë42f“$Pð5ìù‚Ir‚’e9Ò…‘«Xà2ù·'Xxxxxx<•ÐétÉÀãáááq!Âîá\ ²•£ÇwpC†$âJÙ!:›ÙQJ©`;– iB—eIÂyžìW¸˜c‘.§@Û®A´´¬œ2Gt¯9×"ÀnxNÚÚ~/o{åxsÈ#t$ÏÐ>ò6ѬÁÄXÓCG`j¢eŒ £0>‚Þ(*P§ÝeÆøÚ¬±½WðÎ÷Ø£LDܰ™j`†„å'p›ó&¨¦TÑPÜŽýNžP"¾‡†ˆ(8SbfP8æÞ°aÅãDf®P›°Ížˆ�*‘ÉY.."ø¸í'ïùÂCÔ.�!Kþ¢#ŠÆ:Â$KM‰vŸ«„tC׃j<Nð³7Fš�‡`Ô÷Hå›îß ÙB‹2帑ʈ~»Nä3Ë^¯2Ï[wß#—¬±cЬËNæÍú$Ôañ}pt|_¶¶¶È-6z›`WÜ|ž ìÿb éñÂz QÐí„°´¼Ë+«X*<Q9­%Ï6^dzf¸Æ'l1û÷ÍÂÈH z7éýÔ¼#4Ìã |¿ˆAÚP>_IB!¯âo/—<Ñ‹ \½Ý„Ù¾Êȯ‹Nýè†Ëî)f²EävfJ?_«óI'ƒÔKëÒ48£…çå;˜x´lgǹYWyxxxxxxxx ¯¡÷È š ºPÅ¿®g ÉZ—ž$A `Ë;be• @p¾yJP÷²â¥b@æ)Ý*y‚…‡‡‡‡ÇS8ßmll…ðxxxx\ˆ`íø9í‡~Ìôéã|Ê ‰lŽƒ1ò¯FiÔ¦£²Ó†Sw3maÞAc§Hƒ’&†#WЙü„+ur$ñO2òs´$I¨'ÅÈLNNÂôdÍ|Z05Ñ Ðã£u"LÔkÖ;c­Ša0+TaµDî&ˆõ`úCÒÞAäÎèÄ<ïìNäÏÄCų¶÷ß‹ë±JÈk Ì’6å¶Ñ܉ˆPÙ%YÚÔwÀÇÕ1åÒoK¬@o è–ß–m¸Aý!e÷|.Ûy¾çÉ3QÂX›rÿïðo={h;.aµÛc _…ÅÅEXZX¥~sÓMW‘§ƒ4ÒU4жšëÒ¿— ¡ÊßË!ÞviV6¼A* È"ɳa£¿,¯ìÙá»Âî©ùš<#3ƒ çýóé´ÃìÌD22¿«¬Çb]ê’XŸ„„ ++Ýa㘂D L‡ÄŒÄ[jhËDÏûÕÊj–Wì¸~âäxä‘ÃTVÝÔI—\2 —]Ф‹Ø»w/yÀ @¥ úïF•÷ÍcŸ »+‰TüÛ&ºDxdò„%S$ÞgÓ$#ч¢Ãi;¿ËÓõ Û\H2*!%¹ï©¬—ñn¦ÈpÑ•L‰rH÷Çt~xF’(âþÈÄ@ó‡ìur<øŠò-ÉBAʉËO˜ŸñµI‚äL<<<<<<<<<Î;<ÁÂ#$%ƒôÁ<ñ/"¤p'•. ÃõˆÁ׿ ‰(È)fÙ+ ¸½c$. “ï(ï”r×ÃÃÃÃÃã|ç<Tâ.//ÃÄ„'Xxxx\˜À5<îüeCÖ¹@(í”ÀîÀ…A¿�±}Ó1ÜY�gg¼Ð‘D £¸{^ÊJÛ-c§Hƒ”5ì1MÄ :20u]¨i¿ íQ6Ÿ˜€©ÉQ¸d¦ ÓÓ3°w¦3S-#·6È Ú#9]ñòf–aù Ø:±AŒ Œ±‰M´eb>R# SÂÞ4BëºåY6 AÏÞ"wņ¾uò¥ ³á--7CÑ'„ µ ›±wG6ºŠ~ðy{>Òý«È“‹²¾sþHÉ»D†F¥*±ñœëÜÓ–˜Ò3mµiŒâk«pz~VWÖÉÐ|âÄIØj›s›]ØX_%·ÜrÜpÓ•Å.ú£ò7Ûó,uÆ žêóNûµoY3êT> !Ã}^¬ï(GXßâz •y¸d ö�:ývP N6É¿®ìÚ~c›ô¢ÊÄ-Ö3ÉÍ?xŒõDøIóóóV‰øáp¹x-êÅ$é¤Óí¡I†Â:¨­˜P57¿>v”Æ'ô”³wÏ$\²/ÌÎî1Ÿ½°ÿ%Tß›ô Ë„Ea‚y,ïY–y–ˆ7${N¼Ûéë¨o:ý¢hrÏñ¸TŒèÙFcª}f@D1{eBÔÃP%mjŽy—·èÙ-,ÌÓ3Û»wFGGÍ÷câçƒm›ºÇ4a×AÝ¿êÏmÈí§*/ >ëÈ# l›‚âááááááááqá ¹@ÀÅ ºY€dªÜÉÃ)Ð3Á‚wEH—‹˜WvëȬ{™þF!‰]$W°`)½c¸,~'3Ø{þµ»î:GÚÃÃÃãBŽSëëë´.çuÿ¹$:ÇF¤äHt¼ ­¶»Ò&:ˆp‰q$ ¹ûÛšM²'•2„]¨$‹A‰Y`Ly±ã6öú`ÏÉžd6KfQë~tZLMŽÃþ—ì›=330;£azz:–ïXFuå=U±scn›Ð?¸{;L¬dôL {šHÝgÔ?zaW”Æ÷E÷„9({®'šF†µä߇ HËËH¦Ð#ì…´Ëœï+!Y±¡XÊÝévH¼¸FÐ<"@Þ¦ˆ M~¶uJH]ÍÆæÂ5¬¯oÀâÒ²1².cö"¬®m£k6Ìgs« ‹«°n Þssópøð8uê¤é?ÌNÏÀ•—4Æò®¹ö\}Íå9¥ ϦmëµlÈ ×ƒ…lÓ¼÷0n_UL(ãà Ç*Ë-#[pZÿàö·Žn’á°û}§¬^|Nê°˜(áza•÷Žäeœ³¦¦¦â¶ZYY1ýh“<œ4›-",!ÙuVÕJ*õJ*I¢×ê@·g=^èȈ$­­ŽY¿+x|í<öø ¨`~ÕŠÉ®¿þr8th¿©C­h"Ç û=yö¹@€ RD,Nª!Û‡S—ªrV”D9ÞMòÆY_K˜°„²Ü|ã¿ 9¦bÚwks‹ô}ø.#ñåÔ©Óæ™¬Æm]7óD³Õ„–ù4› ¸ä’Kˆ4Óh G’:…OªÕkÅí£“ºåµEÑs°c~Îû­E»ˆpýçù€%©2ùÓ-?>¬/äpN<Á£(¼¹Ê+<†Æfñ³÷WH’ìyrù»`äëxW� ³H¢¨Q,Ü* PEBŽ$i0)C ϼKÁÃÃÃÃÃã©�žOŸ>—^z‰W¬yxx\P@cªØèt®Ç¨Ø‘Úaê’"œk¢$îŽÔ"£ŒÍ[»{Ø3éÒ»Ô³FiçãÖÞÓgíFÏ"Y¸y˜4Ö“‚õ$Q!‚š¡ªÆ`91Ú‚ññ:ÌL¶`ÏL ¦Ì_üŽF3L›×°ÌÇâ¿ìr½Ä¦f¸üÛ¥ÝJ³ça¸Äüذh‚»ëݺwz:r¿Ï$ a4 "²QìE¹wÀ³»~z¿ÀÔU4ŠÃ+Ö5Ôý½”)Ü~çþÍ´Ï.ô™A Û- “Ý®†N»cÚ·Kä-$Q,-®’w”ÇŸ8LÆ×Í­®1¼®™ñ§ÇŸ‚Åå2Žã_4Ìâ³±FQló¦Ñ¸}êô\z`/¼l†Œ¿NK�“UCvMcT—I‹ ©œâ6èV¹í›x¬`ò¤ÆöZüLY/RD¦‘c²ÔÕ0qƒÏ1)H’yúa"Ö0ýJ÷é÷ƒœç424 ß«ÔC¹íÇödØÜÜ ù Á!Exc~Çc¬ïÂð![[äI$÷eI¶"R—)¶Ó³ži€¤—8Åõ–ï%çžzܴâˆX‘מ±…ú×ïØçO”¿ß¨óëtløÔ/.IjH-HžÂÎ^5mŠmƒºBü ÉŽ¿×êU¨Öªæ|- í¢ˆTíhŸs¶mBe —.¸G¥bRŒrÎÅïŽùô¢P! vjÌäõÂù=<<<<<<<<¶O°ð(„$0 p± Éa…¦´W ¨Xøcïr×…,C’70 QìõÂÝ!…b cLØàëåyO°ðððððx*@ÑîÂÂLMMœ³8ÙeÀ5ùÂÂbì]`8ÃOd¸É;3 A?MVÇû¤MŒ™•ÖíˆkR?’<£Ãz€:ÈëuŸÒsQÜ|ÉnÛ’óS&\ƒiT4ÎCU ËЧZ­»^ `l|ÆÇZÆ06“#06Ú„ññŒUA?P×! ‚ R^—BC`ßíJÜm ¥köÈ3…ŽÂÐŽëÄ+–ðAÆÒÈ=?z¢Ìýb¥Éx®ÑÀWåÛ8t¥ m(Çå~ʸÍsü  äpRX[g­¥‘ËJ{;ífïɦµ†DÜ {guªE‡4`cÈ”Ýíˆ@ÑiwÉóÄÒ²1¶Î-Áœ1¸..¯ÂV»k›°¶¶A^+zäq“¶GFÙÕµu2~SȰæ\$®Ø{Ágdßq$H�…v»å•uèöºÐ #Ï&Þ16[£iûèÙ M€¡3;çóz±|4’@`Ï©\Âo`á4nù|ÜÕ™äémúÝK?l‡p‘GÊ;Ÿñ0à±Ü°´®NI¶Ü¨Ãmˆº.Öw!°¯"�õVH®À°X˜ ÿx¬Z©ÓõTL&èõ:¶¯‡½˜p‘>²ï¹¼oy/ÉsŒ¯-"ßu·’U”$¤;XÒW¦Ìx.ÓQ둃C&á8™„,±c’KÚHž ¯{ø>/ÁÊòÇ{èÁöáUÖ{n &&šä¥½yÐ\R©Òo"µDÏBW,i­X¢ ßC% d=$éL¿HõŸ ßgwZu¯’ˆç5<ä»™^(Aú ”º Nƒ¿Š;O°ð(³òQadð£`ÃÄ þÎ+ aÒØÃÄ öFÁJW¹ƒB†a¬”b¡Tº^äp |—‚3‚ !;Ã*÷ððððð8·Êpöö„óÎu¸Kwk“AËÃÃÃã|å„3gæ‰ü…®¹9Ìà 0k¤9;RtÆØÈßuô±îâ´ñøFçãD g!>2†ŽÿÁ²­{ WIä•äºP——ÈúsDú¨òZ_©Ñ]y‰ñ¥_ËS4TWÚQ\¯G/úÀH«ãcukÂÔä(LNŒ˜c¸«Ûª—öI+2|ˆ¶Ð‰s‰¨t¾‹Â§Ì‹a2õgã•ã¢Ò˜)Cš$¡0ù·Rv7z¼ëŸBà(29ÚaÖ#�X¯–ÓF åRÑoA©Œ!5öˆ×)ÝK9v¼dmàJüµdº•î»d,ïMrUüvEÏJÅX»Ã="¢(klíšöiou(üI·Ûƒõ5kœ^]]7†×ów 6Íù£ÇNCµ €a>ÖÖ7aa~ W7èüêê*]—GQ•j\G¬•{’ç‰;Ø+dx „÷‚N§Gdl‰]û`Ÿa£^<aÇôÿôØän\±} Õ#ÝBnHqóp§ËÏÿ- úùõ>{kî°Fé2NÞ}¸$׫’ÜäS”—Kº`ØPø7Îw ¤ób¯¨£jµZ±§V$ŒŒŒY2‚îqaD" }–™�løAI%•ÌsŠð*=·DWÆcAYé• #D,7;– Ä•,!"¤¹’Þk<†^eº–0ÒÞjÃââ¢yG7Íñ0¥›ãµ€Õõ9¦Ñ‚ÖHD‹tü—‰/è™C{Tðy¶Ÿ×¢õ„LÇï�}” ¡¤‚æ*¼ÑŽiÏnrx±HÚR“±m_D²�'ÖÉ3pÉOî»ê–%Çp=òÖ¶²á¼“ÃÃ,< !=XH•ÉLžƒ»‡‰r€tè ûL´`"Ç åóL®°ÊNÊue^9ì ÃÃÃÃÃÃãÉWyÊ KœÑ•.+ÆÆFIéïÉ„ç 8,á:}}}ÃWŒá“Cºcѹ›rˉ7wªØ0œ2ÎÚ“Yè2ω7­o�n]xwp³¤À˜bÓÛ|í%ùí‚CÀPÉŸ2Ï ƒ¶>»u­f ˆè¡¡Y·nØ[ª1ŽÕ`|l„>­ ëæ:k�Vü…÷Ð} ¨ìA¿ ÙFƒ|Ò°d$<pÛœÏôÄ1Çè J´côR™6LŒ•ŠÈ/:EäOþò÷Ęmó£ÔH6ÀP)ñmªÂú%ma?Éy•2¸Yãi@;ȹŸe=¢ô7¶Å×Dåêøêä›ÌUÉ hK¢Ô‘1½LÐÇ\ÑÓD§Û#òÕÚÚ,-¯š¿èi¢Cd¬¹¹9"XlnZâÅá#ÇÌ_kf<ÙØØ„v§k»Q+ic¤4ˆ:¶$d™BÁì¹C[O1A¡O³aiUÒEtJH‰‘{Hƒlœ]LªïÄãƒk¨MÒ$måþ-"E䥱„-ùŽì©¢Ùw¡œH1(!!õUîµrÃÏÙÌSèÑÇKÖAayž=[0!ù‚½\ >­^«Rû" ÃbÔj�5X;ç=ô˜!½š„qhÛç»ôžv#ò’&B&Pt{QØ^º‰M6\O/öTÁzB†¨æ¾Æx#Uy4b²e%’_"(ñõH´"O@1YIø;z>H²¨D×Kr…ü¸m@=W—÷Ù˜C‘Ž)–:kFዜ6N½k<WÄ— rœŠæÇ’>œS¢ülº8|I&¯Ý{7=<<<<<<<<Êá …`–8ƒ…)¹›…-¹K…S銒 RÀ‘‚<_Ç“t™Èy°g )P`™|^ºqdÁÿ¢KB'#¤á„ÿò܇À¹ ›¨Ø!7Ũ¸µsrñ®7Ag@c$îhEÃ)Ž=hDBàøã@vÒQd,Ë3Ò±©9ˆÖH)wioÜzŒŒ 467(2rØtö|ÞŽUȹ¿BcŒ{@ÏOFÀ]Õ˜ýØh@ß‘ ×jšïhü3³VSÁøX3:gŒ€õJdÃ6 #… ã¡RØ¡Szº†aȲbr>ÉÏ,2dÍ´‹ôn}[žMÖM…CH?!k@Ω‘æ~"ÐIZû<بWI IžS¢ƒŸ_ÈF6á !ý\óŸ±R®1œåæ¤.®=É?sw%×êt­">iÞÈ}Ìû¿ÑÞ‚Í-"S wŠ¥¥%2¯®oÀÒòšù½jÖ&Ë0o>k«Æ@»Ai1ôÇæÆ&yºYY]£1„vÇ£>ÀÜ÷;†T“h*Ϩž´§*¡iñ<ÐP«Â(½²}ï‡ŒÆØoh2̧٨Âòj¿ñ"ê?Ê­|6L`l¬t7¦”|^¦+&„¤ÓsYÉñí{*Êsë¹·²4îÜ ÉgK®p¤ŽŸ\<†z)ìk¸N§pè ¨V5éšf|M­ïæÅ›‘,¢—cCc¨X¯FáxÂ(¬¦Û0ï+{§°ù$z5©ß³:ÁšðÄ!WSú9 ¥‚ˆÀ„„ üm âc–`¡’cÑ'^?TT<wó\S­TSéŠÈ t<nÉwNöô>Q‘haP©76S’‚˜”ð¼à&º{•¬'´Î+ÅÃÃÃÃÃÃÃÃã<Á,< Á‚ "(xñÎ&ܤ· ìLn`R{¢`¬L±Èå°€É0ç%‰œ·$_° É±žýt EŠiž™”ˆs*pŽf¥mþî'€ÁŒ.; ½(„:6Ðàz›]v'nÀÓ†A×àƒÊwìBîNV>n7©*à]ÿ™| m® +óì"ÌÒÈŒ¥écÙºFqÔ¡È8È;Æ“ë3÷ýTb·àv®7j°­º1Þ5`l´£#Mi0‚‰`¡`tT™ï#D¢h6*)b}öÞx·o�6äI˜:­R!J,AÂZ첆NkÈ A Û“'ìmåt£DhŒGÏd¸V×cbAzDš¡âç¡Ul ÓIÁq=åNbÙü‰L&+–|§Ç(ëÖe}ޝüÕÈ'dÛR‹w-!aôCšÐƒMn[Ûw°wÌ»DˆÕµu:¿¹ÑùÅ%³Öèšc«°¼´`ŽŸ8Ë+«6¼G»Cá<Úí¬mlPø€Í­v¼"êô’*T`ƨNU± <&ñ�ÄaJäýÊv(mG&Ô( r¡b/+öíÖè¡ÄŒd û¬“ð]I·#×Ú)4j\ÍôªøæŽÏŒNNu! §K’pŸu™— ·ÝòiòxroÛCQ݆ú-òλ›{Ü<ƒÚò®+ªo’ÇñÃës";h$=DëuqíØ÷ë 6| ®ëÑsα¬×bo­œ§ŽHOôÞ†L°0é)” Ñ 3ïL:¼’;ê i!Pqèö$Á!:8Ô’»èþ¢±·R­¤æújùÁ%D`¾ñ,ºÐ† ¢÷ÑÌ+Ýz¾Ù¤{9uê>|®¼âxÚ­7憛rŸ¥mwK BBhLªSéç•ú® ÏÜS4Rž,Üz„xÏHÕK‹¥ƒS¾•3æ¨Òw/ŒÞM¯ãôÈö/ô.'Ž€‡‡‡Ç…&¤zx<à …`E)ƒ n&T°ðȤg f¼Ká“ 8¸²ð)!H¬ÜB¡“„0'„çÇǘ`ááááááñd…«@“ŠJž«q>Ä-ÜŽ ?zxx Š"†Œ}Ž^+xrw–"\ð¶¡ëÕðcYbÞÎ!1hÈl2Õ¹$ ™$ö@á=eªÎN>0þÔîÔëUóê0ÖªÂÄÄŒŒ"Â|FP­Uíùz…Â|ÔkÊü®åÔ­ßó!ˆU´[—Ã`Øí»Ø€a’ Dd°Þ.ìó‹ü8ðÜ”"9DG˜jgKv<[óUÅ®µŠ^�ƒÎqIf ã¢Eœ6JŒ¦JÔ7ǧ…çèyK/¥ï‚è„iÒD¶÷O Üv¶z6aI[ôBK¢À]í#7£šµ•u"I QÃv ‘½M,¯¬™c›°¾Ñ†#GÃÒÒ ,Ã/.І»¾¹EaÐJ¡6´ðÜ TÜåm{Gnÿ“»H·¾ð¼¥£g“5-I…ûmjn—þÏuü¾GÅCÇ·{$Y„t?Ë^Š VÙŒ4yt‘ùööÓÈóKL0ÈÝœ,Ä8·`j<u çò}‘ï¸ ÎµrDÌ#©%i‡÷^1(a˜ü!?¸÷+Ÿy¶Ï¸ïÒÙAnJâ¿n([ú«{ä%¨RÎEa;”²ä­¶Ñ‡u:¡y§Ð;Ô*½S–#ñ4=kmß©XªPmVAµFÄq¾?å[fE%çÁöC$×…ãHçc7@‘žßY­SéìY=_µÛ[pâÄ ˜_˜'BH£Ñ„±ñq3—5`d¤E‹õ5XZ\‚S§N›±ç <ýi7¥î%ô¼£î‡$“^È!£¸/Èy_ÇcS)Bö«87QžSíÏŒ;”FxaŠ wûo¼bQŤ)·~ ô:æáááq¡Â%¤zx<Ùá …@¢Ƈĉ¼Çï,(æ ]8P2ÁÓ`^ìQ »œ_²{¥àã’`@§g²†kL’‚œ7(yxxxx<¡s”r‡ÏË2Œ—üëæéáááQ„"rB\X1"$ÒàÇ8{’…0Ž‚.6~ô=ž5²¥ !)CGT–†Ï‘²ŒæBæ7H»XyGÁH³³3#°wvÊ¢Z䉢٨‘ŒU5ƺ†‘ê9”~R$ù¾¬Žô½-à×—I=@g뉉Èx«¬½œd4AžP1 ˆÂNð¼•È”!»¬[ :× #¯t.1Ó[båφã‚Û(˜K1T¹Fí¼ëù{\ކ¾ùºs²Jìj@f¸ëææ£~lŸîd§z*{­%_bØÌ¬,¯ÃÊÊ: Aen~––Was«K‰•µ X]YƒEcÐ<=·�ËK«&íš ÒíA·g½Ö`~èÝB‡Ñû·»"DÕT1, I¡`Â…¸[ËÑ?SmIÆžÔÕQߦ}¹L¾¶Ó¶¬gd¨hË*È7jC®”$ÙL$yÈ­¯ÇÓõÏŽEëDÙ_Ýü¹\¥²ca>c{kÅAט;M²i8ë‘Ü6rïÙ%«ìX¯•Ê3Š»Ãcs26Ú²Í/¬¾Lë½’`ÁcDù$HÈc4npŸÆS•«!n ÙFò»${HÃ2W¢Î­ÓÖ°Žd­Õ58zì(ÌÍÍQÈ&ô’411AzÅÉñ1XßX'òÄÆæÝGËL^£#u3ÇUÈ;L³&Ý´7°Ï$\í•pÿ#gâ÷ß}D™õßþÌÞ“’ôÌiKüÌ ðl‡H›ºN&†¹¼l~dîò¸ø€ýCúxxxx\ȨTÖÁÃã©O°ð( A###´pgrsPÁÂÄ ^¼±°Ân‚Ù —‰P”&džìÝ‚Ùí’Ï×ò5V°{â¼¼=ÁÂÃÃÃÃãÉŽ"ÅY™ÁÓU¬û¹ÐÃÃcP¸cŽk¸ã¿ý Òˆ{2„1•‡Š E†på\“, ®MÙ»Ï1°Wœ„KöŽÂøXZ£ÖCE³Õ€–±B5u"_`¨­\’„Îýš…€AŠ¿C$6¶ia%Žú†fbD�ì¦ ]*6ð…19BzD´†î¤Êl¶ÆBëš àlÜc£½ ¸¿•“E2„• g3ˆ›¥³ö~Üë´ÄeF3KˆSB(£²¨$\Â’(ÚD–ÀÏÜÜ2µëââ*œ9³›ëîc¶6Ûöãø‰ÓpÚ@–V`Å;»adFÙ75Ä^D¢òÄs ?Ab¸‡DÁ-Nåßý`È3d;éÒ1&K2H¢­‡€^â)³Ò7]½¶ÝÁé÷DÖ19¦R䊤dïS’lÝ¿E}Z dßÍŽ£ÉŽÿݰ$‹snKÙ>’L—&ê$ÇÎf® ì§öâJ¥`[£7•®‹ŠÓ²§W»óɶOº¤ &$÷Ëïªý©xÏ?¦!oÆCoèoee–––àÈ‘#0??OãÍèè(ÌÌÌ@«Õ‚±±1X_[†ÍÍMÒÏŽµ aô„£c£F§8J:ÃQ3wÍÎN˜{¼0•$IäuÊvß[oµègö’+ã6-‚m×ä^4¤ßÿ¼®ÆiäU­%àܯ ú-¼œçáááááááq>à …@‚ Mn0Á^$Ø%¹FÙ³.úYI!=]H!!ã_¼žcȳ Î/v« •®²€cSº öù¹ÓpçW¿L÷;½Ðý`Ý(#뵺)§F‚^¥R3‚\Ùçáááááq®Pf t•ç©xäùÚÃÃÃc§5Nåc˜utן;aŸµ¶Ê;às/L'ÂÈîèÀ!è8[• Gb=#ôè”õ› »ÿÈÀÏû†+©RTª6©¶ ¼Ã´‰W¶ë›AUÈ3Ä䤂Օp´.åmÅJ` ù–Ì^!c/Ê35 bdœ¦‘qíÂ×dĪyÏ£[ú† 1†;"4 ÜX²Èž¬;dȳÖ¾¨¦èÁ‘­Ø½Ž¦Ã#‚UL€s?JxÔÀôÉ:m'ÝÚç#É*2°ó×>è×óŒ¤qI%ÆW&íä¥)¾,ëA¥áÛ“ÂЮø.ɽhÜ\\Z…ù…eX˜_6ýd67ÚÞcs«sËm ñ†ÐÓgÎÀâÂ"y¨@Oaä¢!ˆH0èa!dç hôT ™%n•Ô“IL°;ñíû%Cíº¬½†G9xw¾¹'EZ±iâ6:´L­k »x¬Kç(´Úf'e§ð &Ÿžc¨æ~‰a ÒÏÇz™‘Ï-]ǨUÙ}ˆûÛŽi£¿Š Ä.™" &õÈ4y»ÿó ™j˜Ç´]rÂ0$‹2³<žWùngÛ?!¹X‚T˜ò~á’«\’ —í~·¿ƒ˜Õëih4k©¼iŒíZ’„=êi"™êÊ:]3VWãr“16Œß;®K/²±ãÑtˆ 0‡L£h,ÙÜÜ"BÄòò2œ:u Ž=B$ ÔÉáF«ýû÷[òÄ謯¯Áæú&4̼qÕe)4~ðž¬çÛ:L\µØ[†$MÐws?]"Ÿ›M�"‘0̽·Û=kÒyÌG‡Ù6çûdo7ø§Û3Ê'-Ã<…v|Òiß)æD_Nø¨¤ß†*ˆçy¢ÞÀ}Ä –”Ô+ð˜ö–…={4ñðððððØEx{™‡Gž`áQ”¤w T@ é¿£ úYèÀóì=‚ɘŽI|ž½Tðõ¬|Ãc<8ãuIš`âþæëY@e¹'Œ®EåÓ?¼ÿýÐ4u¶q¢ëtO3šóÃëHñXGÒEî‘=pàwü‹&žŸœœ$!W#E§uÍ[¥kø/ßç “ ïöœH°M¨X?/zxxx<eà…Æ…8®lWÉ“»+5áYäÑ(Mä<6½fŒ<6U¦N:maòyêZ$•£Ñ åŸ $ƒxÖÁص¬W™_l´RÖɵjÈF(TT$Ÿ¹¥ª ŽD $dÔ+$Õ«5ª/^;»w¦§Çh÷pbÄM<²‘ŽwücžHÒˆ d@SD\·éºP„ÒguúÙv ÂiBHÊIH’ †“Ã3°W…® ëaúÀ²1z®Àüü¢1r¶ausƒH[í®ù½eŒ£kpâø)˜_°¡=—W‘Ó’2Σ¼—x†¬c´%N“ç½W®¡9>†Þ5TdH„þ÷½]äÐÙXËd Ap’rûú‰ð:¹¾MaBº¤Ch™÷£¬k ñ{j´á¼÷Ò*;ŠyuÐ}˜DÛïÓåÈ#6ìdYe$â¢ôE»øóˆƒ×#=ô”YòÊrÿ²ïG¾?nzÙrñÒJ­&<Vèxl‡H߯d "µA2Ÿ N ?ëëhŽ9Lž'ÉÃÍÞ½{`vv–ôZ­f6͘‚¡röLÃå÷™¹¡E:4ÒýQˆª&éÃÔgFöøžd˜0ô<av|è÷½´$”x£pËívBho“Íí©tüÜ ˆä_%*#¯+)Ø …$R äMc—Þ{<Èõµ‹a×^Ox‚…G!˜<Àa8X°“ñÜð8*çl|W+À0qÉL²`Ò xàeå–…ç$)ƒ…6öŽáz°à|˜pÁé9]×äµj>è²™øXG¬?–!…\<Žhl¡Ón‹’$ l¥çü‹jÕ(AY§žÝIEDH3h7*=kú‹ÇÈõd‚sÉü;ƒá5¥‹ÒdëšB”Û˜wyxxxx<9àÆ…>® BtàÝ»ü]©´2ˆ½R(íz¡Ð #ÚØšÞÑÚowµ½„ËSDuYæ…¤´)ÕêMèn¬@Ï1ª²<†'2°%eàõˆv G®×“¼xW:]_…H©C«Þ"âÅêê´»û`Ïž)2¸cždwϲd=X@L®çûqC<^hpûIòì†5T)è' ÙMÒa´áYÅruÇ´þE£æÖVÖÖ6`qaÅÈ–mj÷“'`îÌ2¬on™z¦hÃÆæ&=z æÈ]ÿV»ceºH†cbµ º‘ŒGÛ¨m(Ä@È;÷Y±ÈÂ<Çd¾6 v߆;9v¤òRÉ1YRfo¤{ˆd[ëÕB“ÇN;$ƒ,z­”È8.ÆÒGª5eäôDRÖV|>{ïl\‡¡ âz_ÜÕ¢¾´}Ìê»ÂÈ. I¦É#ïõ{nòý¢ÍK¡ÑO]¯v³’ «±ÕÞ‚ÅÅ%X[]…ÇŸxŽ?k+kT÷™$ÊM[BD½fÆ—M¤mÁÕW‚FýZòtÔ2ú»f£F}j$"YÉq‘;~§lØ A8„z~Û%Žnú> ·=]2ŠD¢û“Çû?ë.†Mꆅåã8P¢Žt d}óÓdëš>§DþàäçæYFnòrž‡‡‡‡ÇùÂn®Å<<žŒð B ür&ð/{¤ÀßL>àóV®a>xŒCŒ°Äž+Øe£T4Ê<H yÊ"|=׃W|ë…ßÑÅ`Bh¨@Úµg˜R²GWQ¨”ŠëÂ^,¬+ITl†‰0ª’XžÒƒ“Pð8’3| ÇúÊrËà ëLÀ`å§$gð½ó³Å] ‰÷ŽjŠ@b !•èCN‘Så(vUªTì2V²Q;$;è,ù$ˆ•º Üÿ&÷'víü¼îááqà 7O »Ã9¹âõ k´H¾CL²(Ê7ט¢#ƒ hH#‘”3âkbãJ… aÒ Æåh6d¡I Å!\C›²BˆŒL9F©”¬½1[¶ÓñÙœï`ŽF61†º­®1¼Õ ¨V`d´£æƒžÿ*‘ç?+ÙÐÜ^¶îa\–™_Ô–ƒ`7wâ—=ßíÚú侃uáVŽDO(öÌ1rſцµõ5X\X" ‹°¸º ëë›°±Ž!=̳Ø2iV7`~~æçŒum 6ˆHdX%¹Uõ¨° RBrX3¨Š¼«Ð!·¡á±AEס¨tæ\bH¤g&*JŸ£uHüŽóéI# g££wƒ‰QÊêÑÑnq«3èÅýÙÞO~qèid¼ÕHô>ÓýÚ%z¹†\Câëúå]|lPl'¿¢óyíÓo‡c‘ñYžäø0D‰d ߯8 ³ã~Tû”ŽGêv ÛÓtÔÕÕ ÙqÏÝ_ƒ3sgHo„º”©©)سgŒEa|Û-©Á-7] ZƒÂu4uÚ�˜1 Õ´c9ÿ¬§!"éod½£â«IØ´ÿŽèXq^q•ùžÂ0õÛý›ºÍœçÀí„û;ÈèéòDz…¡al(˜~pçq&H$­‘ßW¥ÙçpÜ tÙ½ö[–«üF(ó O°ð(‡a²þ–D <n‰ ALX®`å4Ö»'XhâO®ç&dðyÎS~gƒ |[LìÀîÎáI0={ç@pþ²~xžëÃå0ñ€ë-àTkÕ¸=Üûä¿E¡TFr}¸Lþ=¨òF’Ndþý0¸ÌŠ•‰'@:*1IcAc[1‰£Z­‘Ëa¦¥"ÜWbïø] ˆV`”dŒ@¤ R©{øà´ø«úß–‡‡‡‡‡‡‡‡Ç¢ãÙt|RF¯´bãR’ÆÍ?¹Nîbe¯òZ6bɺJÙ€Hib—©"òyÆBH–­‘9ÊšÖ#†uT&çtdRQ;ˆP˜8¬Ž6·¶HVª×«DNïv¥gŠjª½¥ÑÇ5B¥Û2‹sb|ÏA™awPƒt¨-iå­NCu´i÷6†qY_[§ð++«°´¼kk›æ9j8}fN™‡õ X[ß4òc¼Uœ8}Öˆd±aòê¥;âX¥šÈGä¯BԿ²]Èý4HÈ®Sx¯(z‡ÜçÇÆ~­¢†ƒyÃж÷0™'úzî ï#ây`ùI´‚è½#²“¢¢´¦¾óü`ÑéØ ñÉ`;7é}ï»Ò—‡àF ÚoÏöDÙ»=L;œ¯÷Q4èè¹o·mòË‚8O™oü[–¥lùØÇ¾ü•¯™qdf÷ŽÃÁ3äu¢ÑhÒŸz¤“c]K%ˆt¸×‡†Œ )\Y²—) ³ï(§w)å\¥-¸Ñ8m¶yuúVSóa:O&EqièÉ#&†¤Š,'é ª× 94û)öHÕ?_-4SGÏ6Üäù0}-ÕHǘG˜P¶O¸ó«›Gê:AòóðððððØ)ô›g=<<x‚…G!Øx-Cs0‘‚ ì ’HÁçX€tÉ,$pIXà°$2-çƒÇ˜L"8 ŒŸ‰ x æÉa5˜T!ã3„•ƒ|oI½­Ùœ)¸žy8› êl®-‡W"pû‡¤øívs„CQnB¡aºÉs’HÁí÷A7˜ÉïjošÈ/•)'™Ä*E Á´ktllÔ¤ó⇇‡‡‡‡‡Ç“ ¹ëd-Œ²uräí2%d–§2/ ㈵ÕZ¯l¬å´Z›¨¬ Þœ1¾PmÍ—Š2rWϦÍÔGó^bK*¶ Ǥdˆ6ë'o&\ØÑúÿ3Æøäªt‘yk« ­Ê?!Hr½¬žñgPÒËùBÑ`q$>ΧPÞÁãèY¢½ÕMó·ÛëÃv¬­­ÃJD¤Øj÷àØ±“°²¶+«ë°¾d•llnÁÚú:,.-S˜4ä[Ò‚"ãh\¿šÓÎÑ¿rÏ4"FQH3Ó…-ˆ¥ûŽ.0 çòÄÉ8ߘ`¤ul˜$¹_EûÁ‡+éÃÊ©ì½BËÚø µ ¾_adPo·»dˆµÏ ¶WʦU¶-ñݨTúï¦wée÷êNwÂÀ_–G™ž¢ß6ß Ë%Çû¦ËŸIÁœPR¯¼´iB_¾îÅm1›W««›pÍÕ‡àÀìh¬ßÈ3äË9Ç &bNÑ9vGÞóIÕ8•Æ%d$‹Ÿ3êXÒ×iQ×J&½›‡œ39ÚoR²^-¾ß½°¬?'£çÍó8“_윜}?Ss=@¡,MÞäk¡à=gâ%WÅÛ=<<<<<<<<.LxK¢G!Œ°µµ˜,ÁÄ<î%˜dÀá?¤>Ï„&\H‡õàãÒ;…¬“)¤Ë@Nß‹cÚvSd Ο | 6äKbŸOˆ%ÝøÞhÇK.…ï =5Èû–p•“ƒÂUlº9„C(aú) ¶ƒ~Š–´²(+Hö»ÞõÆQ„²ÝhÜ×8< OŽÕ`||\r)\qÅ02:JÊìh³\‹å¯û®×4‡8°nºy'~áZ/Ú.›1ÖEµIHàÀÖ×Ä"ŸKŒoÉõ‰J9 {ç¡Hî1²ˆR© dØŽê–·;6ùÉ|Yj‡° ;‘ÑØ:Bòü‡.ÞÛí•§—5,Z·kY×÷3Ÿ¯¶$ÖK£g§Ó&Ò†òÀ¶ÀÏââ ý]YY£°ëæ<~?zô8,¯¬Ãêú:tŒq~ÙC‘eyu 6¶6‰Ta=;ªXV%9c $ ÃÁ•¾}7õìðwžQÖžÃÈ5Úý«Ó}BKoÊz‡è'•+W•?âÚ¹5ÍÉ#L§ؼ¬'Ìs³Ý6ϰkû?m¦ˆ6l�€rÚ~ˤ«Õ*)…[¿¼ñb$eæ+¾fP “vl‡Ìáb²Í úŒAŽ/ »‹6©Õ·ø>rt ¡Îé²HæÚ„‘VH?pHRùˆlgW4¥iY&’•MìßAžŠæÀxzË@ôn—y[®ŽÛi;s^—§GÒQÙ“ Z¸“ÒDÉŒ^+¥›s½ÑŠ3:Ìíw:™’óÑóЬ!â#JeʱçÎ×LêááááñT†·…xx O°ð(º‡ÝÜܤï’�ÁJ"—!ÙûLtà4LP`²§—á3ØÃ„Upub£8çËáG¤BƒËâ¼Ù³*„ÐÊ(×ݺVtÖý^†ÌRT¦ËãºÉ 3"=cH…ãð9¤ê  ŽåÉ÷'ë×OY%ë^V—¢2‡9¾Sàûs1\o*²-ð³¼¼ s°¾¾O{ú3¡Ñ¨s.àáááááááá±;ègƒÓ9F(†»Vw¡R(\C»ÆÏ4‚’$v`c¥C¹;œ#ò†µÆ¸ i°Q¶ŽI1;ÛÝÆÊ@£ óÂ@ìž ²^¹ëêx}ÏíßÑ¢ Þl«`£×íYu$s%aùR2„Ά7”òOžÚ‘\('MRÏI»_øg≠#Ö ndÜN—By W‰j¥ +««DšØØèGŠUóCv üøãGae½‹ K$›;4çLšµ5ØÜÂð [Ñ#d&`=ŽÔ˜<¡²&0ņMUÙ¶¨¡ƒ=§MŠÞ‘B¹N)é&õ¬òNBü)»‘óݶI}dÚôîsÅï« ø(ý‹ä{ìH°PÎ� ¥oêO¦_µ*”¾ òg¶=•êK4p½hèÿÜÊóR9Çú]S~®?Ùeûȇì/Û%Yð±¢2ûéodšü¼é_kÈwßÅhì•çð/ê$šÍ…�)oƒ–I]’üÜk³óɶ RRùi9^(ñ=>`ûmjž4eOiF¶„J̵Xê‚õRÓ óûWE)׃‡d;/ñ þÉŽé2“¾Dãdô;UœvÒ Ý¤ûKY‹SÈwÞÊ, ùäááááqî1èÚãló<_ù­×\™ÐÃãbƒ'XxIèÁB*e86hËð9°bÒsC†ía=¤\þæïÒkFÞî#Š…kÊÄO·Û6 KìÀ&VHM˜â\éÅÂe¦³bQÞ?—Ã!&d(“Xa å¶‹Ýš€d;É¿Z(…UŽÒçl´šü·ƒ<e3ÿ•Xð7{°°¡D*ѳìÀC?—<.½Ô/ <<<<<<<<Î_z ë ¯YcƒkÊþd©“ž icˆ Y°eYiÈfOV°D .‰ÛqÜ5rJî�k>b'ïHǰ&Äo�®Oê@®q9/D(ïßž°×)H݃N£íßÄ %ª#Hy‘ Þ;bTw+™”ÝšN"1qß’)0ôÃúÆ&¬aÈŽ•5X[ß ’†îX]µ $NluºpìØ)XXÚ‚µÕUh£i>˜ßÚÚ˜l kdb[t=‚˜¨¢ò-d/97¦·ÕDLš)Æ0Ï.oCAô…‹‹Ï§¨ ú Û)uqþ5…k™T•Œ\'új=SÄÖSqCJöœÝîâR[ËX~¡Õ¨9Ÿþ¡$òÐ¥÷®!'}6ßücªoºaΟm>EÄ…AH ÃΆd!ó•s‹|ny÷|qeu2Œ´þ àÈ‘c {!Ôªý¼Ûp?î~O!Sÿ¼ß»¥ÿ(Ï6û^¨H¯Ö6óQÀa°úÖM& 7‡qØ2=_P¹UÀ¹FÞ)yûÓ*y”Z¬p ;©¹]œað{õððððØȵ€\#°§u–µÒ.áz‚we½¨ç϶‘2áž,ŠCsI»’‡ÇÅ O°ðÈ’¤€2Š'&@ȉ€=Yàqé!ÃkðDÂÇ2D_Ã!=xbA‚„$7ðµ<°3ÑëȦÁ<ðÆFH*¨Õjñ5FƒòÀP<Y0q«‚1U%„';—H‚ǰ.$öú !Õ&çs¢áòÝ'y‘Â÷lʽPàJ°O 2 Ÿ·$Í BÝ"?ôÐC0;; µz<<<<<<<<<.$¤IñѾÆ8‡tAkM)2žirz¡b+n¼WîpÕé˜ìn½$ÑÂHtº,ÅÆê06›ëèW‰"ñQy:mpÉÞ=ä™w²ÄŽ€ŒQx¯hB‚œ«Úk¨æZzÌ;{CåƒE ðD‡@OÝÊg=ØÚÜ‚åÕUX^^5²YÂuÌÍ¡WºŽùlÉâä©98uz6Ö7`qiÙ¤Y%™ok³‹&lmuL~Å¡ k‚o«¦r¿gîC%a)òЃÝëñ‘ÿZÚNb<”Hmb°ì¡Ø¨¨Eš¶÷Ärå¶Ø"¶ß—Ÿß™’_K{·°¡a˜Pƒý,Cå‰^x¼uÚ`¡ª `òA^Ûo B®„Ñ/Ý0yJãİ:…"B…[æ0¤™G¿²ÝròPHÄжsž8qZ Tèƒë?ƒŽgý¡*#sUIû®¯µaxØq«ö/™¸ƒÜ·.æy¤H‹9$o¾nPóqž)4@!é Òë 9æzz…‡‡‡Ç…9†ã¦e޸̶5>Çiy(~ÐV…öŠ2RÃÙ�Ëe¢‡´ÉåÝÏ7ls‰ƒ¬<<.x‚…G.pÐÄA'ØyBÀs8èãyhYà 镂¿sž˜žÜ«j 5"I xžI<àKìë†ç›Íf\W„evHÈÁóL*@Ò,8 “ dÝø>üÛõ¶¤ ö\ùãïäÞù>U×¹Œ¸Û!?ø¯<æBvb¢<×$ ÷þä÷„TQIy¬@ÈÝzN—úÉéÓ§£ ‚ A÷åáááááááá‘‚50(5øîëXášë‚d·*M¤ÑBxœH—'w*«Ä€bÍi¯´ß }à¸=à±Õ ,Šé=ª ì²µÿ¢TÊX¶8µQzGU|¿:1Ì„bGS¼³¶RÑè´ÜCù û‘bH’ŠÈóH¦è˜¿ä‰=O˜¿(j™›‡ÅÅ%hou`m}“<V<ñĨԴ |a~ –V¡× ÉÐÖ1ký0’+1Ï*“&¬,–IÙ+EªžP†°Ÿ¼£KM_»#hHŒTnÓ¨>LìŠ7Ü÷—㔊­ép:eЃ$>½4nª´·K‰Ä󇊼´Ø°¨,×§Þx•6š"°]kÕZ¼!„Š@æÝa LTVßnÛÑ”]S¤/zÿó~§ƒ‘'òHî{ÌYJãH^^î»UVNtEîuym†ý±…›‚."D™þiss;‹(, ÛÌ®Ê>«˜øºïHìΙ©)\§I‹ñ˜¯ÓÐJ=SðñˆÊYCd ZŠ=_ÄG<<<<<.àº7,ãZ1oãμéíZh»hµZôw'm*¼‘YzŠ/˃¶«ñ&å¼õع´ýxx\ˆð \`ìÇ/|á pï½÷’‡`ã4{Ž`~—$ NÃ$«ÄêÑä炈¯ç2pRáëYØbì¬AàÄž,ð;Ó= bÙVy†ß%ûŽË“åòƬ>œ"ª‘ R¨˜ïLaoìëÈzF`bç> Wp•B}‘‚àlq>'Zžø%¹‚ŸO+lmßD¼ÙlÑgii 66¶,¹ÂÃÃÃÃÃÃÃÃcW¡õÙ¬AuéZ 2o!‡`@ẕ̌�ò]º»Ž•´„Ä€c€ápnÞT|R¶MS3Æë.€ãÃæ'ʉ Ô®L•îìŽB „ý]Æ&ׇt/\&·«ôžP^z¡@¹+´dg$>¬¯­ÃÒò*Ì/-C%¨ÃGŽšc›FÎëÁª97?¿H^)V×6àøñ°´¸ +k«F3kzs½*‘'Dó76§CìI¢¢ #ª¤.ü·hǘë…b‚Åù@æù)k’“d#‚>¯íÆ·˜jì¡ÏO;Äï3äÂuº^h“DòI€:€^¼»=’ÜÞg"9¿jwJ¥yvC.*³ˆ˜p6y W×PtßÛmíSú\ÝHô ¶ëmÁM§å;âè^r æg§wZ©0¶;2BÃù{±åïgN/À° O=8?…ìj‡ïUNô|h'Þukõ€œ²ô˜ç p]‰ä ^‹Ë9·lžàù¯yU7 Ÿ ؾåzŠdÎ’ëü°½OÞKÑ&W‹ ž`á+° wÞy'Ü~ûípß}÷Áêê*},±¢{—`à@Ïä΃ ø›½\0) 8 K6bss“z˜ŽÉìq‚É,db,\þix€gÆyÀèF.>ÍñF½#£#±ç<Æñ­xRaÏLˆ "x_æ{P ¬{T1©0¡„IL,aOéXš:cë\"V^Bv‚“aW܉?ŸÝ¿=œ+’×™Ÿ$TpŸcBöNÛh4éèTj¶ÿ\ J§ÎfÍ…†˜b2�­çœ]Éò\²ë41V0¹!•¦£p!’¤QäAƒô–°¿ˆ  ë™Þ�=âiö>˜5ª^±qÞ¥WÇÀÃ2MÙº»pçl”{® ÃÔ�ë`®£\Ws]PŽêaÈÆh»/{Œ£¿æ¶»,/­ÀÜâ2¬­oP^è‘bn~67Ú°²²A!;î»ïØ0Çùù˜_\ 4øCró›Îù̬ÿ5–oÖþ‘ Ó¡ØütÇ[DTÙvIFJÕ1"R@DBpë¦ù×¥‘L:„ê½L¾Ð2‡4´N¼YîR†|P‰KþÜgãc¢¿Ñ¾<Ø2ý+ìiòƒït¨¢=è:ß»A…äÇé$Šêv>Ë;a4ßny× “ÏÙ¶×N(ôƒA’gÙ}åéM¶Ó~)#‡ùËú­JE•‹ª‚6¾ ^h-©Œ¨Òn¡�$a¤ž­Î>ŸÒùWAAX1Yí|¢XY}’¾çL®àö±]‚I¢oÜר&=®3ñ7zmß.xÃ2Ö‡e%>>L2={ug\è¤ssO°¸HÁd‰ 8|ø0|ýë_‡;ïü ¼ì¡B†þX]]#E{@ÒOxËxR|œ•i|ŒÉ ’€À“ ¿9Ô–Á.;%ãŽ'ž$ð&uðäÑ3Ç›Íy±@‚{ÒÀ<ñÃä éÍB²øˆt`òbr*%‘„É8Ñ1AïMæSDX8—p'¸<Å“ÜiÆýN+Áv{¢ågÉù9 $±‚.ø±ý¡NŠlº}e’°BÝÃÃÃÃÃÃÃÃã‚Câé¡dÇqdØ^¤-&V(èëÆÛž„´kngØJTÂÄ­C”š*Jž!T…,ÀäÁ"¯Ð>ËÓ~;°¥QF+ëÙ §£ÊoÚz–(ËF,›±,„ëè•ÕUº Û±²² ó+´3{uuNžX 0èú}m« «æüÜÜ<t{!œ8y挺I^-ìó©Ð³±Ä÷­Í«ÕÄ3 É-νSk…ÛNa 2®Õ5jåµë Þ:Šî’ˆ˜6ê4‰¢@Êž(¢n˜©wå#IZäSìÁ"€ACù ŠTÝ TI½2-é$º_쯢½’s Ðçí€ßkéõ2»!ûºÄ¯ì¹aò.ÿíä7lƒî¤¦]óˆÅd Û„.Ä5€¸(}ŸtºL©gaò_ü[Y‚O½ÀÝD%('ž-ÊúïÙä¹ÓX]Y‡aqVú7Íy CZLŽ.•)›‹kí*MáóÔìâüúÊõðððð@[ofð\ = òqFÑÚóA›mÞ¦' ö†áÎenŠà’DøZ¶©H “¯‡ÇS ž`q‘¡×³q Nž8 ßúÖ·àÛ÷}ÛÈN;fÚYöœuSXiUSÞ(pàD¯ì }úL°àA¯Ãr8}ç4äñ±óBMÞ2° üMs£åè´;¤ø "Ëãúà$ÆB”õÄÑ#½I£Q‡±±ÑØ«ÆØØ¥ÇßÌ䉎]áZ ÁòÒP`… ¦gK<±HAÕ¶a@ŠV¢ŠÍ ±ížy€rá½±j+÷l$¬üì„§cáQ xMzdž~šÜ"Å…«PyíwŒŸ>;&VpyñN¹Èƒ *xåè(èì3ÛØìÂvLC`—[º„'›>­syí›g5‘×F^È€sÎ: ˆÖ¼*—á¤æö·¥�É#{ÈÝñZr� ‘£ÿJÞ–I2Qφêè÷pxM.ݹw:]xìñ£ðµ»ïv�§O-ÀÆú&¬®®ÃÒÒ*ÌY¢4è%qiyÖ·’<åfd á@Ï¡Š?Iþ³­Ã2K�Ét¨ÙA¤‰‘ÁL "KÞƒ�EÛÂËûÈuýˆÛ~=*ÑýcÝúô›L§¾çyº Ù6þQt=Ÿóé|¶ƒ¢v”¤(`²’²¯x¯b2X—Ñ&ìïøÉÞsRB"ǹ³VqÈ%6ó~Ï3¹÷§†òy§ ôƒ–Yè%`H}Ã0e¸Fû¢± ¨’´§ú-o|IúÕnA—ßNžmeUL`ÒšÇFmt—›0,0›0b¯1q²ß]Å:¹¼þ£uöîð˜Üß„ì;¸¤²CcÀNõyíƒ71çÙ¤§ó<ÒfƒÓð†b¶e [§´}OºÞ%„ðõ¼‰š7'{xxx‚ÅE •±ººb”Z‹0?}ôQxì±ÇH±…Š„J`囯¨Œêôþ úk„3nöº!lmu Õªš4[dœ¶“F%ŽWÊáA¼Á ÀÙ .ØË{•@ Yƒ&SŸn'ˆÓÄÞ$aƒvXE“’+˜¨ç‘PoÔ Ù¨ÃøØy˜@Ã;žŸ˜˜ˆÉìå€'7LÃ.›8?<Æ!P¬’NÇ¡Dø|BH"¢…Œ{lÛß’Ò»ø<5ð¼%c„ñ1ÖÓÞWÚý’Ü—Lzé’<bÛ:ŒqzY[®¦FL0ágÈÊÙ¸OÉcⓜOOÄòxk’ñý˺§w…@TÇÄÓ+Xd–.ˆY댤Šz½{^‘õ°ù‰:+ŒÅ»a•°´õm÷âŸzxxxxxxx\̈wÄ `l`{A!JÃ2vMK2<e4H+2œ$f'[q뀉Êl„5Ÿ D™‰i_Q�͛ŕ5Òàº30Ÿª‘FšU¨Õ‘`Þ&Í,í¬R,!k@±(ßàgïXîP c’2æëº’ígÜ<yò$|þ‹ß„â‹€v±S§N‘¼†²Ú]Å£ -‹ʠö ’µ¹]¯‹:Dv[b9V޳œsÇÀ©’|Ëz`Þ¹T}¡?äcbA‰ ‹RâÆ Pé>œä-¿§û•kŒÌ34ÇßUÒbå9†%Ï$¿Ò„üˆücÝÁÐÛ§P6¦0<øQQˆÑŽð²Dïµ¼‚  “­�žˆb£(Íç1E¥ß™ä¯m07TŠù¡"Ù3I›<½üçXØ&ƒÂ°Ç/T K²(:† äñ¢tyçŠÎ‹”¹y‘>£Dblº°guRýž÷Ùx…qõUEõ퇬^êlG¬dÒÄ1Éx[ÑF®a€›¶Ð#’Ð’ABˆÔ12U²ÐQ¹ú*]t>Ì2$¹2S¯h¬Àg:m,‰býúZª¬¨‚î8îá1¸ßðçáá1(äü‡rÊ;é5h’Qf3ÉãùÛ¥Z­V!¡!»¦Ñt/[ËAåÌo\W¶å¡=¦(½‡ÇÅO°xÊBÃòò2,ÌÏÃââ<?~~V¼à8$ÔqÐF¦¸£Ð[ÖèŽj$Y°QV è˜ǃ7ç—(é’ØO[’èL¦@Y„ÏIc» ï�‘w ¤ ôX1:Ú2kdL1÷ÀûáÐ&ÒÃg2O ’0À¡DHØ u| ³|½ÜÕ"Ù‰¶‚' †œD¢…N)ñ·ëv)õ”£ëeþ2OþÎy²'‡¢É›ï‰ïÏ%Að½JŦ,“¿•Á}ûR– ’^ °6­dEæe5 û…öŒ‚ç™Hc?ÕT›–MüLÒ¡R=<<<<<<<.Xûíp "wÝ—üŽä•ˆðœ·%‰•m&O¥ú—CÇÂÄÈÏríÎôØ–6’+øÑVÆFªP­„æ/Ê �ssk ;»F"¾ŸøŒÌÐC";+Ît®±©0e½ÅÝqÇWàλï5"[%–=¤L„ˆ×ð 2Þ9ÊvC)ApmÓq†âõZÑlYÇì*6v+8‹ëÑ1áã#%›å¦Hd«Œ‘”¯êSñì½ v§ýd±¼ôÃ`~Jé@E¦Ö6Û1©È’2B‘™’­ævÕh:Mz¡¯‘AVç¤$G½³éΆWþ§^üL^ƒ,òŽjàætE“Òš‹tyíá>’ÎÉêÐp ¾°Œyíâ¶ÁvÓÉøÕ0?W–סR­Á°Àæíõˆu `:£ *{ÖeþhÊòкÿ¨¯S“WT¿èˆª®6—þ㵇G1ì¢ôÌ™3pÏ=÷ÀÈÈ(ÜrË-011žJ…¡Ü>÷¹ÏÁìì^xñ‹_ Û’pï»ï~xö³Ÿããã¥iÏœ™ƒo}ë›ð¬g=;S„}Ï{pìØ1ÚDº²²Bµ:7Üp¨s0|¢Aý¤wóÚk¯¥0åÉšÎI.=z”<°c;Çw|GßpGŽ1ÏåòŠ>== ÏxÆ3Rý Ÿn:Æö¡Ë/¿nºé¦RÛK8<â0rÄ0`[ÛµŠæbY¶ ç±`[ÎvˆOEx‚ÅS ÖÍrêÔI³9m@spüøQX\\LîÝ–³gÎ+¨(h4ëfòÙ„v§g=[(ëå�CvPšÀzX¨VƒØ@φxüŽ“€,“‰’ íº—œc–žôê@þ@ņsœ`FF@Q%ƒ{£^Â@Ôb8ù²W ÌÏ%¤ËÊþVT&_Ç„Š„Ä‘ì®âãL¸°¿Uj%'>W ’„{\¥„tyÎ%,H‚~ºÝN´Ëâ²LnqK¢„d Êzºu—õ¶u°uvû’$pÚ¬Â"È”-Û'ÝfI¹–TQ‹½°ç^äÆ˜Ë´!@jñâÃÏÖK.\0= xxxxxxxxx\`“š»†+Sìä@"(Q¬}SAÚБ)/e»/0ؘOˆdâ8%·^âÐ௢²›F~Ù;3õZêU$)çæÖa}ÝÆñE`˜Ci“ÝqнYÆ4z Ä]¹äÉÂbTN6˜njj VÖ¶â5<{s×ùRÖ(ú[Ze•®“$Ïã'¥ø)ª„L!.VRM1Š \0ttÿÄ I (C™!y;$ˆžó(‡‹Hÿè¥=¶ll¶)Ì(…öÌVbíõÀ]„ÍJôî畨Š;DL´JòN¸.l˜uÛE;Ë1l“õkãažLº]]û c;?“âóÃ’,²ÇÊÊÏK—o/&V§“”jmfÉë &Êô*EHÝYJ‰F9’MW¡ÞhÁÐõ1Ÿn/Ñw¥Ÿ @Ùæ ¤*ÑØ¤t2N¬§Ã˜’ù @—öÕ<}ž¼/þîá±=$}ñ‰'ž€w¾óFÚ‚_ù•_g>󩔟þôgàw÷wá9ϹmÛ‹‡~Þóž¿4íC} ‡†¿ø‹÷À¡C—ç,P¿ÿõ¯>úÑÒzõúhÀpâßõ]ße>ß » ô~…u@5é‘@òÕ¯~Þð†×“^Úãì€úûûî»>øÁÂ×¾ö5:öœç<§”`ýø}ï{m8¥gòíoÞö¶·‘�íH$úð‡?LéñÙ}êSŸ‚ïû¾ïƒ—¼ä%0 xNmÞ%plûÉ›7ä¼À›œÅÃ?Lï’«%šH;£Ÿ<.vx‚Å“îÀ…ˆ'Ž›Ï1˜ŸŸƒù¹9XXXˆâ‰¦=H¯r Då§ÝÚj›AÔF”6„µÕ Z¬ æ mnlÑÀn.‹ˆ‰à‚çÑ8Í?ãÐìzS’¤q·hqݰ<®c="NqÝÔ 'J률b[£$ÛT+ÕØãǧÂòЃæ…ÇØkß+Oü—Ï39=ä±Ç%ñB~g­h‚qÉ I~*&t ¸~ò)d¹ÞÜP2„ôÔÁyæMÆòþlžù›;™óýf=Nä+à\a1KÂH¼0™Fºf’Ž\dT«µ˜\cÛ„%‚Àã´]®’%Jƒ.¾0¬Œ‡‡‡‡‡‡‡‡Ç…ƒ\dÅN©l†´‰Ü5î¡ñƒlÓŽÑ´ÀXÓ)”戶:ìÀx«Sãu˜«ÂhKæ‘åbk“<º^ïδæ¿Ýõ|L Ñ–ì®Ùƒ…†Œg½2(+8Àüâš•it9™"︛>ï^BHv%Ç×�?’ "³€ õB¢•Î8ˆŸ©[§¬@ÊCŠów·÷w¾Ï„xâÊaÖm½H˜âdä?íÔŸ\JUz/#ò ê.pÓ»ÙW¹„”D>© Y3›®¸P-Nõ]ð}ûØM¥¿ÄùèE¤‰¢seé·[~ÑqÜ€“貆}DExXElmv†Š‘~.áêÄv._HXŽôÛèÍûˆ,ZÍá !Íav¦°„F©k‚Ò±‰; 9Ò¤QÓ>ÄdÝ sÈ›Lу äÏAEz;7‡ÇðP©ïSdFcëÍ7ßlôðÖƒ ¾SHd¸ì²ËÎzüÜ©ñ øÀHßÿ¦7½‰<k`Èò/|á‹ðGôGpðà¥pë­·ÀnË~ÙË^ Øvøýk_»þîïþ¾û»¿Ë,v�H–¹óÎ;ɄĊ{ï½·4=ÎÿøÇi“ñÿð“7$Wüþïÿ><ýéO‡ç?ÿùpúôiøô§?Mºþø ûö£÷¼ç=t÷ƒ;²í ±[kaÌŸI,'éÒè`²dríƒ>Daoºéfc‘l1¤]ÑÃãb‡'X< Áut“tøðpúÔ X^^$¶‘ €ü€vB±ñÛ k!Ér`ÆET¥‚ÿV«´Xhoµ“PŠC£$D–½ +Ò‡kàú2±A²Ã“zX²CµÄäˆn7òDÐhC‘ŒçH€ Ð‘+0ŒC³Õ$ᆠñˆÄÈžJ˜xÇp±cÛB VA‰&Ño&WHÅŸKRàüm;¦aI²H“Ò Ääy©Œ&'ÍËŽÒI‚‡¼NÖU,Üç-ËÓ!R;*V¡”/î½s]Ü{Ô¢þò¾]b…ì§¼¨` .´ÐËD%¨ûHWMBš©û•åg$1qi <<<<<<<<<ž<HÒÐ~†5Œèèl~6v{ÚK…ròLç°?®G³Q…©ñš1ÌŽ@Ma(º6¬¯,Á©dÜí q8ìä“Ù¼k¶ËÈ&d×ÚÑ×ÐRòD¿öc‰þl´G°¬'yRç*J•“,ïDé´|¾ñ?FF1²bÐP0vijX;Ó†“æ^:Ù¼•.*ª˜¾œkX,{Å ƒa.ñBå'ähœèlš¤ÌðxN †Êrµ Óî“õÒЛè-ø/¾#H°€$˜JLœ°D%(ôð’©�%–š—¦ƒ´SYš2rÀ Ø‰gÕo\é÷îõëKƒ‘,äÈ>X=òÅFñ 7 Ò%E¿¨/†»j! ìö!Í5:&DôBûv;]XZ2óã©ùT|÷Aëeu‘!’š»ÑÅÕÉìqH÷Ë!ÖDùõÌØëᆧÂâ KÉ< ©±º˜d“×Ç.üãñd�†S@<ðÀCäûÀKè7†õxüñÇá5¯y y`œ<yŠ<[ —ìÏ}îsÈ{o İ"HÌxè¡M^(Ùï±+⟀Ûo¿ƒæc ÓðÒ—¾öïßWZO/°Nä‡~è‘®IXq÷ÝwÃ?þãè8’E>ó™ÏÂ¥—^JÆvôlpã7Áw÷wÃä¤õŒqìØqøØÇ>fîñ òý‚¼î¿#zèasþŸLº£°wï,…©À0'½^î¹ç뤷Æ4ÿðÿ@•ÿãÿøMxõ«_EaCÐûÂ[ßúVØ·o6jÛéž_÷º×’× b`»¾èE/"O~·ß~;Üÿý¥é‘<¡D^þò—“'œ?Ð+¶÷g?ûY"P  ûöë_ÿz¸êª«èº7¾ñäÑâÁ$bÑ0`Û×n‚ç ¶±õ ¥È›ùw9”ø+?Tri9Ò¶4ÈZÍÃã© O°x’' ôÑcÅÚÚ ¬®,¥Ü–Ý  †Ã*³lǼ Sa<x@Äïh¨–FlNc½@X¯È H¼(à‚ CVAךX&±Î;Ê“Csà" ‡udr*ë¥Á†r¨‘bqtd”,¬'Æ.Ãë8ÔC•HØ]­”B¤†hðÆï®["LyZ¢E@ ôm(”(Þ¥²íB wbÊwãö‰C«üV®@- .!‚'9×ó_Çn ù~†yž)Dj±•I‘ò&5üÍ¡Z¨LA´÷' î}òoûŒÓag\!;Oèä~í[é™"©"ê«\/ì(h[·­6m½Þ m8ü‡}޽¸^®²Ö…«4ep;aÿñðððððððð8¿(3&ôSådÉÃi¢„›GÉ"÷ÚRE’õ€ÿ¦Çë0»Ç¬Yƒ­gWV–`qmÝÈm’£ÄDηŒÌî}PËr!É=26[/…à YC ™ÈÈ\ É ®ŒUš”Žd_‘¼u°µé ¬íÂèþ*ì¹a “U˜¼¢—ÂÒ‘MsnÖŽµáÈ— ½2˜—"yA"”ºÈŸ? ÝÍ,?± v„ÔSª]¶†Q{C†-דÚ:´òd(ˆ@E 6¢v'™flGN$ÏA®£²ÍC  *„v$o’ hX/)!¿¬ÈVt û÷H+ÚáÈ×è{”«´æÎã-ú]W†r¢@œjȈ"ÁN*ÚÏVq_FŽHêOÿfÒKOÞµEãšSƒ¸¥óÓ¤Ïþ ó¼0w„æÍÇùú1ötkç2ôHÑë=cdøé=b§ƒqëÛÐÞê=ã&,.­ÀâüªÑq®Œ™ƒ —Þ�‰¯n·—”Ô×¶{Þ<˜Ü‹²!²ä=RÂü7+dÁÄŽxØUÙ´I¹yë˰.¹ä!O«ðØa úÆn‚G}ÌØNÄ $ ÜxãDxâ‰Çé’'Þ÷¾¿ãÇ“wÜ †Þ–––É£’¤þê¯þ{ìq )‚‚¿ô¥ÛɸÀ±IúЇˆ¸ºû»îº Ž9 o}ë•ÖsmmÕäûìÛ·®¾úêÔû1bì ¯|å+É#êù—Œñü#DÞ@c=ê{‘Lõ{ÛÛ~ÜŒ¿5ø/ÿå÷Èîð‚¼€vñ¿ÿýï'{ÁK_új‹ßû½ÿ W^y¥¹þÅpìØ1øó?ÿs»žñŒ§±Û ‰%hœÿæ7¿Iä믿žÆ÷o}ë^ oñ]ßõ0„9<úí8ü|ñ’0??Oó ’y˜œ‡×â³øüç?O¿‘`ƒØ¿Üoð;†8D¢Ð ‹"ÒænÉm iÃ+’mù÷n\Ri^=<<.&x‚Å“�8Há"ÙzȾì´7Íd¾ –0`PáB™é{D¡0ØÛ x’”€Fn4nw:]³X‰ ä2ÆTÇHÖSPZ$C`è\Ülnn%Ĉ5®Gä6†sH6®k£Ø {Õ’Øe"þ&Ýgâ¡C›pÙà ‚÷i7OÒ+ƒ5ú+R â$ÌäIBa°7 n7&زíóàz0x1ÀÏ„å*‹µÎ1\æaÙÄ©¨}ƒÈÄÊoñ¢Dü–}Åõh’7YÊò]ïòÞ\&£õJÒ]Uq^ü¬¶zœŸŸ­º]IBň²©?vBR\ñFñ=k«޾ËrùÞ\(÷{~?<<<<<<<<<Î?òÖÎÛͧ,R’Q-I9€Ùé\:Û‚Z5¤ðëk‹°´²bÖªKî…‰,¢"rƒÒD¸Èõß7b'Z,кšÈçC]n åæzTRâ®Æ ’Ùd{¹Dô¼¿e JK¬ˆäógd_¦Ÿ>ÓO…ÚH�÷ýã\ýº=pÕËöê0dò²)è>MÃÖÒ"<þ¹3p⮕ qKÎ×fªpÅwÎá†Kž1Ïú¥Ë`þuè¬9µ¥àÌ·×áðg–`ýD[zÂß=óXDØQîNx» ›ž­«ªî« uŠÔ¢tbàÛNÿ+{Ÿ·«¤˜\‘á5¢Œ žåT 99Ò�ËWܨ‚›J¶Ú[ÐjT!²U7e ^f•\¯ùiÈ H[gûÆ2súwQºÁVnÿcy´ï ¢¸ßŽrß%™õK·Ý6Í%h�‡Iˆ6‘¡ ¬³âù‚ÿn¬w£®="Sà{ÕnwˆH®ûŒ¡ `ë›ë´ldlŒÜ´OŽO@Íè+AƒÖHÝ|Ðo.¿òZÚîp'Ý¡ÎÎ/äMìù"â ¹ì×É΂@•ÕŸ‰t*Ÿx±Së"°ö†n„S§NÃ×ïù\wÝõ¤ý—ùø×ÿú_ÓîQßüæ7È›Å÷}ß÷ÁsŸû\pý÷ßÿû‡7¼á ´¼ë®¯ÁÛßþvxÞóžKv‚u"d pœøÓ?ýSxÇ;Þ¯xÅ˨oïÝ»>øÁ‘ímE@1z¯½LÈûØ»w/yøÆðçøö¢žÿYÏz¼êU¯Œ¼gðgöç"bÏžøùŸÿyÊkffšê}äÈ"A¼ð…]øÈG>B½‘Œ155Mc’5Г…Œæ„^7®»îZ“ߺ߉‰qJ‹¡)¾üå¯À«_ýº=o ëèQŽaÇ;loœƒ$i!æ±?à8J^<Æ!í¹|ÆHº9»uDþuønüÔOýôÃüÁ·E„þîÖa{@‚†´áyÛd*¾vff ^ö²—å^ïÚ«<<.vx‚Åù†+<©dpBf݃Ü<ð�¬®®‚õ ц"ö¼ýðî ^ÊS~8‘Hã7{Jà ÈdÏxœÏcúFCGÄN%%Zä1€?<‘IÂÆ”šR·¨‚X©Èá@Ø[CUxÑh™ï ÿ ‚$äE52€3‚ xO’\w:,‰"ˆÿʰ)’`Âän6¶s\Ïì=ƒw d…7·“}»|tŸ Ãu™›Æ…Ÿ½Í;ŒïÛÖ3;ÁÊ6HÊQ™ºðó“¡Uø¹Ê:ÊÐ/|½[/Y>“8ÎûY âŽân &6Ä}¢Z£{‘å¤î3ˆ÷TÙãуDù5˜€Ê}a·Ý|yxxxxxxxxDFó2£ºs.¥XŠŽå©‘l’� Á»KUì/¹eö”ÉYÚ†ÎP)¢“5ïÔh®»j¦Æ«°°¼jIFQ‡Dó0Ô)o{Š=ÈûÒÖˆok‘s#Ï™U<Tª¼ævïClÓäS¤|K<h@J’2 •¬ ˆæØÌôœ>s&2PVeaˆId‘h”¿ªöDÄhºyÓF=# Ç‹‘fŸÙ„Ïß÷}à(¬é@£ÀÞGaìú&4'j0~é\rã^˜ºlzÓÆUcÌ[þ6\÷šƒÐmB¥QÞº‘ÁŒáNù¢62edÓySlÚWõLëš:ô"ù;´Œ¢g¡½S¹E´™ÝÕBsŸ‚C/ž…ÙÛ¦aêš1lÁ‹þ·[)äe£U…Wõ¨U+ 8qÓ)Ø8õ =¹@;·YâvÉ* ¸)0¯'–èÎSrU,ÏBšXOm!å/Í\³Ûµw6×–åY$çÉ>Üí ѦB: )@›'(J…Vewýx¨ÓYƒQcÐ¡Í •!5X#j±="Uèä@&…ý7ò`£‹÷¨ït»m'¿¨ƒ›G™QàlHý ‰¾e8#…„û.$z²ü)ˆ:…ÂMÂ` î‹7šºÿŽ]Î/TeFŽô\¡c6_º®œEˆâºÓ{Ñ£w£m¾·;!yzÁߨ·A“ÐØ‰›Âp·8†F![ÑX„ÌN¯ cã ØÉu0>1 sÏÕZ•ÂþÖjÕÈ“G@›ªpάÕkf]…𯓇'·L×75‘8¬>(Mò?`ù2áIô…¶ìò|£¤<Y¸éâç(<Ã&Çï'EÕ¦pGàá±}DÝöì‚§=ýf"G¼òU¯¤ ¸|Ù˾þê¯þÚöeeà>ÿòËãtƒòÀ H"x衇Èû6L`=Jî¼ónz?qNŸšƒßú?ÿ/øïÿíÿGkã¶±3Tª•…‹ôxšô}¬O­V¡±ˆ7nÊtèyÇ\,_º™™8tèP*àÖ[o¥q ½QÌÎîÉÉI !!D}ôòZqðàAû~ø¸îºëh<CïÛõú$¼øÅ/¤ws}}#£w§ÐçÎ\Û ‚è½ãÿøá‘G¡1 Ù7ÞxC)Äcxàs`ûÛ©x,Å5ž´ÉþÂÀ9 IÛ)·¯l@}­%+ðú´ˆ È2›<æçoœ·ÝI mŒf³^ZW¶ëô [âqqCö@%¨²`hO>x‚Å‚^φ#ÀIþÑG…|�Μ9{" δá²ÖäDâ¤Áß5ˆãƒÓÛE¤ˆLhÀ ‹3Á^4$Á‚óÅ뤂Ž!½'p:„¬ M€ÕJj’䛽_ä «L–° ¯Z\. mˆ®ðè!ë•—߯$ȰÉ3I·)·2uTŠœÁ÷Íßc&½Öñ½&d ^Lfмˆàï\/Üžœ·Í·’Q˜¦”¿¢¯„"¬÷G&vpßà¼ÓÊ(IéÅ‹\ºE‰þít :öJ‚‹X¾'K2vBÙƒJq''X›gÔJq ½Ë¡T-úkñH‚OÌQÖ+ߤ1]sÅ4웩ÃÊò’QJÍÁƒ§ÖIaåÊa’X]®/‘; ’=ºFÁlÂnƒ‰ÚViB×÷õÚPyàº}ïÞ¸ÿGȘF„Ù÷ÌŠÞ ‰¨`äÌÀÈF# LA!˜8`”Ÿc!\þòpàY3°µ¼³×ï…KŸµZÓ-rýÞí`Ì”ú­Ñ)²»F1é3÷ÃÆ™.œ¹÷\þâ4M;V5Ô§«ÐÙè¾[&áè#pj~”:&2ÐDtPÈòhh˜¸¾W¾rlœnÑO,Bo¹j*„OŸ2õªÁÄåãpÍ+/ƒ=WLYò<yr¬QÝí.ì lõ¶¬‡Çª½ÿú”9~‰)«aä°sÀá&¹P§•Z1å"Òn±í¶bî; ñ�¬Ñ}wTR¤Ç¹j‡µ±$È„Û9—pÉeç-êaOÁHk, G©£±¡¬ò¨ã¨ÅáW·Þ%–]„ÆqiL§Óaa5òdÝ<"Úv¯MŸKt\¡$ýÎ?d;÷'Üm—ˆQvÎŽÕiƒ‰û· òº(Ç(_ˆ7ÛÈ:`Êj5 ƒbtFèk‚\Ò„r¬ô¡ùÒ’z1©‚ëˆã–Gµõ4Aä‰N‡<NØO/ÒÏtak£M›«p^[XX M`¬3Äڸݫomuà²ËQÜ{Ü N¤ s_õz5Þ …„¤Ø{m õ[јX2é~"¥•!6*rüÒFoQÜ—tÞøÄm2X_ ¨‘5{ºØE{ê\ªÿD”ÎíÇEïf:MÚÐ; ùññ‚HûØGÉKëÒ®]ABê—­><é»<ñxù'ò'099AúpJkÞüM™†ñ¤êññq¸òÊ+áöÛo'Ã5’'�Tôºi¸ãŽ;ˆÁ$HëI¹¿/r£è©Sgàç~îçà†n "¸cÿãÿxTRÿ¹(¨ ·C—¢ñ?&í=LöðØY`_Dû>[–ø&}ˆô‡ý½)aøL‡ sùå—÷•ÓÊÊ/êXzÙ.Rkñê7H|?ÐC ¯'0l¶ÁüÈÄâû­qËÆ�÷Ö£p—AžóË‹ðT'XœGôzØ=ÑÑ#GˆåyìØ‘ ) g‘ÇRãc( u»i"/lìùj|Žì¥Bz¼l4· þƒÃ:Hæœ$ ȼ06Ä#¬×„DxäÁÓ¸åIB 翱Íd†KB`Ï XdÏò}ÅaUtÚý'¦Çg"=>Hr€ôê Yz‰â4«HMk•™“cA¡ðŽŠ?÷e[»!E8$[0CS)È%xÈï|­ åàüX8DV®$ŸHœžÛš™¼Lx‘±Ãؽ$· ëLÂàt»Í†Œ•ñâ»7ÃÔÃÃÃÃÃÃÃÃãÜÃ5Nä©´¤×x2}ßüãëajÕ€vË´ªppß(…�io!™â Ü{ß:žÒë›”·)›\–+¬¯Yÿ†UktEÅr׬¡k ¼mvHÚ)Œ×æ]”Ó`8‚*³÷í¶Æb”YMD…D4®)lÇ�ª-#ŸLì»u/Ì\1µ–õHQ¨BOwaíÔì»y&ŽÁÊÑu¸â¥¡·ižÃH:sëpæÛsäÅ¢yuý€î¢Å© SWÍÀƒ{Nß;oÊ¨Âø¾&8\qìksðÄís0ÿø:`óVZh^7òeE“\£L]S‡«_ÄŽYj ^ð ˜{`¾ùÁáÊ—„ÑK[0¾FgFÍóoCÍŒÎÚk[Ði [:í-è© §ŽõÅ6,­mÂÜýK°òÐ&íd>¨ ¹%H<d ÑEó¶!§ ½è0#æ8²)&T˜‡Ó`r‚ÈçÎ5PþÆ 4 o‘Q9"[õ¹¶ÙlXw3}ÂJd‘—9“-ÂòëÎØ0_žŠ [Œ³{îgßgʈùé¥ÑZet7yØÎÜ"ëgu%Gøj$daèÓâk,Y"Ñq] E²›VÌ8â˜Ô…­Í6l î±Ý‰ÇwT¿tNûÿÒâ,,.št[Ôü¸»zÚ«&ÆÆaCxÔpÉ%û`|¢I»|íNpëuÂê{.·¡~qÃR¬ґ׆²¶aÝ™ŽuUL²„”˜|Ûè&"ö.!E8(a‡ˆƒQR×?VéBÈîvΫ_¢?Íó›ü¥ãçsˆðxÊᆮ'ãó?ÿó?ý÷~~ù—9“fß¾YÒ?ñÄa36\B}øË_þ2yƒ@ò{´þæ7¿/zÑ i|ºÿþû`ÙÔpŒ8tùe°wvxð>øÎï|­Ÿ;gÎÌÁèèHô~�yÉ ‚ôy_sÍ5ðéO>ó™ÏÀk_ûZ³Ð‚õÅãÿößþ[J‹×àæ¹Ã‡Ã3Ÿù Ê÷ž{î!û�z©øú׿NõÄô8¶>ü!×\s5yŸ@ï<ÓÓSäâ®»î¦û¼þúëSm‚¶k¯h›q¨I›уÏ7ÞŸÿüç‰\ñ´§=‰x &ðžÿò&^>œÃ0Ü>Ï+®¸‚ú!f0 ’-°íßö¶·Qz$» ­áÞ{ï¥ç‚óØ'>ñ zöFf¸v<¯;íØE´Þ݉AÚ¾<<ú!ZŽÑÇØ¯~ãnøÿüùÁSž`qN¡‰5‰îªðƒlÐÇ{Ž=f&ˆvlÈ·E²èv™Ð.‰ =˜©Ô +=4ÈônÈΕ‚¸Øàcl8çºÙü’—㺳#¶y´¨b϶\»8bR€œ˜ä}æÝ¿$[ä¶°˜@¸Nœ@¥w—°À†~&p>…óf/L*õuYëü e¨Ù¦Rp—Ï%Vb ORQ+É/2¤‰¼Y/éi£× ÝSòµœ§ëæI>_émC’Td]ø™³ .þM‚~·HL5ùႸ^·.Ü\/ƒ. ÜtÛYPð5ÈÞôðððððððð¸°p6ŠœdÝ]t<2h á«¢`r´uchŸnÀÁý-c ï#Ô2<òèqXY]'ÙÀ%TÈõ±Kæîo@>Èí5VfBR~µÎj‰C®ñ'ä‡:–†y°Ø3e½6Ô†2båž›[М¬CË´ã%·ŽÂeÏ9ã—ÀÚ©u˜:8e”Uâd,Ï-ÃñoÆtÖçÖQ”„é+'AõŒ¯fdcxTæyL]= Úț˛°µÜ¥MX[]…€Ã_:uóÜÿÂQ˜¼l¦®‡°ÂÆ™¶±&*“w fn¨Ã%Ïš„щ¨Œ¦f”´§;pý«.‡ñéóìë +Ú(n×`ò†q˜üöM c3 c\7µ5ÆÀ°@wošö꘴‹ ÖX¹f ˜Æ ¹>¿ ‹'Öàð'æañî-A¼?7–0&WÄ„‰dú¤fgôÙkaÉMõâlèl�›s¬p-2P–Ƀ ¹æüÖÖ&ɨƒºgnµš–\ÁádRVV¶êæ—˜¥¸=ó÷»Ï}ˆs.Ñ!/MÙ±,ú+ô“|²à~Èï'ý/ÄQ”¦ìZ©Ûé×>yiòÛ9}N–Þ($®e‡k@êéÃR…Z'z¢¨LJÓ‹þvz°¾aÆBÚ¼Õµ$ `Þ�këäö{ueÍÆž7º1 sƒ¡|ÇÇÇ`zbÆGšpÍ•‡`ll*…ï¨!qu<¤#³a~ƒŠÊè}$Òº;&0Äg¡ %-Á0 ¥A:£(Éðãˆ"¯ò'ÉR$Фý±oöÎëÌõÑóT*C²pÿfô·ì ŠCu)<ôÒvt^ýðâ¿þóþ/´ÓýŠ+.Ï„PÆ0÷Üó Ú™ºS|_‘ñS?õ“äÅæÀýðìg?þñÿΜ9C5$?Øu3—›ŸýÙ·Ã>ð2‚£gôò€záK/=@ÞÐèýÅ/~ÉÊg‰œ áF^óš×À‡>ô!"O:t9‘ î¸ãËðú׿^ñŠ—C4d’þË_þ «8¾|êSŸ‚ïüÎï„ÉÉqs×RÞï}ï{Ƀn|½ÿþûáÚk¯¥r¼íðž÷ü%•yüøqªç[ÞòpíÝl¼ÿä'?EÆû[o½ÙÜO‹®Ãz¢nüúë¯Ûõ „O¬­­Áƒ>H¡U¾ñoÐ&È/}éKä9é/xµãG>ò¸ë®»àïx\vÙeðªW½ Þõ®wÁßþíßÑç _øy¯xÅ+^Aybšç=ïyä¥ûnîD’ΛÞô¦m…aÛ‡°ßMÈËyë×ε]’â `¹Ö÷e¾K”“1ãõg¿ò%ø£÷¿¼¢=Uà 稠Z]]6 “ðøãÓ¤¼f6Fb¢<ì¥ÂºÝÊÒò òîbš6â³Q›C’P!ó—\²@bOÂV0ÁÏñ1IàóLÖàßR`åkeÈ „¬»+¸J–œËw‰$LDpÛN*?!Þ£–Ô‘Ù‘²mŠ Z ¼ C‹$¤néU‚cvé an±»^ž(¹½\¯iKâmƒ»“l‘â)¸‘\—&•È<˜„Þ+ä3ÅE7VÅÖÁö{\Ð`á|x×\Q=Šp¶ä Ù°îl—HƒcE¯ðs‰º˜dQ7†ó‘ffgŒÁé²qcüêÂÜÂ>:O¤Š cÈRŽŒ ów‰ ErD~¥#ã¬êF\#ƒ…æØpž$¶ 6äÉ\GÞçÌžIÛæ˜¹•f«ž= WÂä¡1˜½Þôfö‘,˜©et“Ü#„FNØ<³ËGW¡:QƒÕckК¬ÃÔ¡ X=³Õz6—¶`በØZk“‹{ØÔÐ[¡2ÀäM#°úøÔF+pík.ƒ™k§Ì5æYN5 R¯Â¾›faáØ"<ö™ã&M nøî+aÏ%Ó°iŒë],{~ÆgG Ü02Ko ª¦izËmSFN}cFFÍùµ ô¦€®™{l æY€ÎzÖLÝñþ'¯‡õ“k0²¿ {®™†…»·`®·^(sAŸÅ¦d¦e8+lZÃ]nY±áo0ÃxJ–[Oz§Ò™ z€‚Œ&‘’QKò.oï(À‰ÆÝî[´ »±ñ´ H° &%ÎŒ½½Â¹ÀnW‡!I”Ûw ƒ,¿VçÎ y× û.»×[WbpÇqqyeNŸ™#’�¦B¯v—nB¢k”Ý̲²º KË«: ¯¯+ÇÌx591cÆ`y`ß^h½ ö]Ô½ Þ±‚„ "M±îtSèýFÙ÷*ˆÑ’¢R•µ}zÞË#%í‡óNÂsHôyÛ1X…½$ü�åÆõÏM­“…Ñþ,÷¬“FêºÜRŠú©V™1YñX…6>uòðØ) ¡á–[nމ ¸›ÿÕ¯~<ûÙ·Åzm4XsÇÄAoyË›ásŸûy©À±Ôßýݯ¡ñóûñ+À¿õ­oùàu¯{<òÈÃä¡ñ?ðýä âöÛï€v{ ®ºê*xå+_I ë¾ç{¾ÇÏï„“'ORø9 $2 ÁâÀdDGC<Þò'ÂÓ_Iõá1 ìÏ}îsɳ°0/ùËáõ¯…‡]¿ò+¿ ýèGÉ^óô§?~äGÞbÚay ¸êª+é<’G>ÿùÏ‘W„ŸüÉ·Ám·ÝF›I‘ aõßóýj“¯~õ«T>,l[ÍyÛ�=,ô›k<,P'ä $¼àø÷Œg<¾øÅ/Òˆìcûöí#o&êûíOýÔO‘“;3ˆ2ßÿýßO}ýÉH¦øÊW¾BóÌÞð"Ò ×ž‚yb_Ø-H;Ü „iÃëû>cßl6›Ñz¤ÿú†Ç„¡d\‹hüøíŸƒÿï»ß ßzè~˜š˜4ëͧAÇ,ÎP:rä0<ñÄãd}c=ðÌÉPù‡C™Pçvü›½:d ÷‰·Èøp>8iä‘ä_&p°× &8Èúº×0p²`‡ Å‘wßò|>Ñ$©œ€¤±>½£,ñÞ€%YD ÂYƒ¤Î;ïžå±¼ïì•B>Ÿ4áE¥ÚÇØÝßå)Ÿk?¦cQ½ÓÇÓž-ØK… Âçðvå…¨Vë”Î ö•¸oÊ$ò^òØÿý°r…[..<<<<<<<<<vZlÈÛŽÁŸ¯+[G֪ʡª0n ï±ôŒ6{01Ö†ã'ÁÚÚ†ùl¢© ²U\b« ´L=€Ñ%çJûwÅ«^Nwã¶M~µQÆædѸn§ÓèZ~xˆ™©‰H.²òQwC{Ô`öÖ ¨· ŒÐÙÚlȰ҅ÅS °¹Ô†Å-X<² ó¯C¡6¿×`æê1"œ¼{zë 6ÛК©C}oƒvRãëé«ÇaÏ S0qu öÏ“EðÀ3gÉcñ£Ö0òI­ jÌÈWWOÂÉo,ÀúÜÔêkH4ÆÅVÓäÙ¨@g½ Ý-sÿư¹úЬY‡¹×àÌ·W¡½¶›sÖëäžë§�£K¬žØ ÷ûõ‰*ÌÞ2 3ÇaüÀ(Ì?ºS×N‘rþº58üñ¹]5„ç!îûñGÈ*!¥0„A MÌȤÑxvØaÝë ï•[Ïl‚�}Œ’a§ÛKbÅ÷Ï×*é·zí¨#þÑ®s]ZŸ„vb+‡# +ê\á|ß^Ú®l<èƒ+ÊrÏV1ßol/‹Ó׿o¦‘_Ê7×ÈKÒÏ>ÑÕ 1Cñ�Lú·ÇŸxš-Ô±4I_‚Þ'¦IeC®NLŒ›q« “D¦¸ü23Ž´ QG¯KfÌ3ƾ€ô,¨ªÒ¦.UQ‰î+"&ÅwMª¦ä^¹ ÞÀH“V’¿n.I*­#t7x \ºây¬\Çš&iå[;óôžÉót‰?Æ L¸àAR 6{’…Çnáꫯ¢Ãaüê¯þJüu¸¯~õ+S×`˜7¾ñ铇ÙÙ½ð¶·ý„s4Ç+_ù ú¸@Ø÷~ïëé“|P§ŒDü”ÓÞtÓðæ7ÿp†Ü€çn»íÙô)µ×^c>ÿ[æx£Q‡×½.m˜Çß| ß×5³vDÏ 8–#)`||ü+<0ôÌOÿôO—¦yÙË^F ôœ‚Ÿ"àœùêW¿š>g ¶±=k·Öú\Æ ã?ÛXúoVMÎ=ëYÏÈ=>H9™\ý<åá� Hûü§à?¾ó÷áȉ㱗ŧ<Áb—n°5wøðã°±±n”U=ÇsÂÎ+¤Ì;ð¥·6xK[š`xbàkóÅ¢pyÆ}7 Ñá^ÏeÓw4Ø‹ÉI9ÂVQùn}óˆ ü7ÏÓ·ôò!Û!Û‘‰ QESÜaÙNéx‰Yáž¿‡aR/&WȺ¦Ó:¡XiFÞ'ÕK©Bö½[Y§~Œ}ˆvçÈÐL®à´¯ãA³9“y¬P w¬’\’s² g» aBÑìì,xxxx\hÀ¢ïÿûãß8f¡+Mdî£ûIfïoèŠñk_»Û(ŽÂ _øBÚññdÎèFÒÆ\}&Åâôððð`àîÝñÑ LסUW0R72TÐ%/ëF!º´Ô%ë.-ƒØØ¥%p×Ù»h¥]·‘|¢mè‚Ĩº}㪬—»Î§ºÆöE…é­794ô9î É³›™ž°;£•²nê;š ûŸ=ÕH'ç¡gŒÒ«'ÖamnÚ]h/õ`íä&lœì@m¤­}8ô¼ýИ¨ÁúñM˜<°*ÆH8q¹‘)&k j�­Qc`œ™€Z½ŠB$èj*M#u{°qfÆ÷Úf#‡ ‘Ä1LÉÜCKpâ¾3°yIžX¡0=S·`Ìô‹ó¼ë!,=¶§ï1ç–Û°µÐiÙ®múÉl‹ÚjtO f¯žêX…ÂŽ ‰dãÌ&oNÕ‰¤®ûkÓTZ ºëçV›ËD*1ôêØÇ‚Êt'iÒ…”úRéTvsƒ†rS|žü>,Šd¼¼>§7ÈÉ‘öµÛ![Ôß)´‚¦×Ê^s¤e ags£ C“GˆPá¼Ó±çY¨|ƒ‡2Øiì–± <ÿb]ÅnÃV§¼¹:¥¢tâŠÔ¯øb#ˆJtHk˜ù7{ŒŒÓ.ÛÞž)s¬ÍØû„ÝD„Îo‰4ÁßUÔfT%Ý~2µÐÒ{)¼‡ažƒ.øÞ®žŒ½žu}”E/z—ñR}êŸhR‹ CÙ1ÆÇ9³2ü yó¯óÆ)§66¶àŸþéŸÉ Ã¥—^JFlÿj?uÀc5ÎÇH|ì)7 ×ÞâÚ¾ò6ßæ­×w ² 2lµ·àCŸýüçw¿Ÿ8–"à«s+ï*<ÁbW¡‘â.øæ7¿AñÅhg¿ª¤Xð 8tƒ½Bé$LAÅÀ%E††FwWKˆ *CHJ‚Ä"ŒXÝIØ Mç•PÂXçÃn¶˜<ƒ…—àcyÄ n«Ô.­K<EdIý ɱ<7F²exn{Ëça 6»’á^T®°žÜ �Kƒ\?7ÿ¼I“…NûÁÆMÒÙgq9¬ütó’‚žRir‡$Œàov÷D•þÊöAWnÛw�1ñ¢V«Ça@ø8§×*ÖDzòÈkÿ< ³ppËÑž¸Cdyež}ÛsD{zxxx\XXX‚¿|Ï_AÃ(^Ñ-"ºpÇEëþý—Бç<ç9F9[Û¶0…;µ¿ô¥Ûá«_ù <x]vyêü®®yž‹vÖiëϼ´L•É"Iëœ/~ñvøòwÀHk®¿þÆh—xxx\ РãµévP¦Ø±§"Cf$¿TÌI{÷ŽÀhSA=èÒ=*l¬mQøŽt©ªS¶ªÆ@·N®,“‡ä¸h2 õ€-än¼ö<Y'£ìÒ–äÀö[¶áÊõoll—r‚ùvíwI(ÏÖ7s÷05=³ø§b’ž¹{î ŽAuÄÈZæ–6O¶©Ru$'ÌTaâà(ŒŒiØwÃÔGêfnëAÍœÛ{ݨ¶X»y ®xÑAcˆ¬@½UåMX:¾J–ptË\­TÉþ<>9z³|ø1ÝÛ‚KŸk’ ›}3,Ù€3ß^†¹ûa}½óÇ—aåä:œ¸kº›�c{Z0}ÝLζ >@}¼ûoØ íå6,>¶Gï< ×¼ê ì¹j ¨Ö«¶¤½Ù¦¿¨X=yÿiSï¹èLݶæ6A/˜~7ÙÎFªºid#S™‡P©* å ¥Fr<=¦PGsbb ‘÷C-沨pw·¾x>‘<ô‰øµÈ<¹¤å/CÀåÂ#ÊÕ –¾ì¼«'q¯uÏÇÆh;«:ôü8<NP)7ê¢^¦Qǰ=Ñ‹3 Ø0‹dj+ÇŇ¿dCǺyÅ/õ`¥€J­ÒyEåª, ?¯²q{˜…Öp÷˜­Ž.éS²/äå‘õLÁç}I¾>Â5`°®ÇMkugé|â>Ú¾$ÇWÜÝ|Õ•—ÀÓŸ~­é'½t莌1#½¦Í¶JU)ѼéLºò'¶««ÿliÜGÃüÇeÀ;¡´=çY¸_ü|ùݳWó\ŸšFu9âkCåèÖÐY±^Ž¿óXÀãt2Ä+Ùs óe}®‡‡G|·.¿ü xó›ßdôãcç h_¹ì²ƒ099A=ü&¾§ä†]Üä„6 *$—ÔÅëTþí^‡ö¾#È\Ÿ÷›ëÄ¡Kdžyu(_—gdzöÅJ}ë¾d1BC{>øéOÀûë?‡Çޱ ¬ õ#xÊÀ,vHЏóί’ Œ÷ÄFøDcQ&¸”ÔÞéÄ=z­’«GFm“/¬1?&c@b,æP‰A;t” öxžÇ(r…$@ü=ËæV"]×!OhÓ™¼’vL+Mø{ÊH/Ò¸äyŽÛ…Ë’÷›¦‚•,r‚ãûã Å%gÈ|åDd2ý wâ•÷—®Rÿÿìý˜-ÙU ¯ª“:÷Íq¤ÑHšQ3”…dø„%lŒÛ²ñÿ<¶á³ù –üÈ&FF„rB9Œ4Š£™ÑäÑätó½»Oªúö»v­ªUûÔIîíîÙï}Îís*ìT»öÞk­w¯•M¤QN€„âDO–É]i™ð<pnc(/K¥rRï2çaË¥±@­G(:+¼Û" ÂÄ"ékqn!RôÜÜE…~Æë7-”Û+æinvŽÆÆ'Ìø©4œrÈÃÃÃcã!.ã/½ä2Ž a1&¿ò•¯Ò—¾øeºú×Py¼B«¿‚ä_ft„¤u‹5rB[ªLìϺ—5O–ŽM¾Ç²ÆHê9U¥‡‡ÇyFºÆ[ÿ5—uÛÝ¥!MŽ—éÀ¾qÚ1iÖ¤qƒ W U,"v}³Á»]Ù(erW‚"ÃT¸Šµîåõr<5®HxJŽÈdø«Â-K˜²""Pv–Ò^ecgÔ¶2RÁ¢<\ïBnh±JLcQ#¦•3 *¯4²£L‡¯ÝM‡ž¶Ÿ*S!•ªõ4aî-–iin™Nþð U§ª4t‰v_1MÓG¦(¨Ôn´)n—©bŒÛµ±*²Í:5Ú+4wl‘Væ[ôØwOÒÃ7œ Éý#d¤…w 3/Ο^¢£·œ¤hÅT®ÑèŽMÉ]#T›¨ÐŽƒ;¨j®+„´´²˜zˆZ˜Y¤É‹¦Lúó”Cš84Árx{¹E­º1Ê›­F‹fž§‡n8FÓï«Ñò©yl†Ž{†ëTŠk´| ¯ŽÕCœ´Û-ëY:iøXú™é“É«!¡'ìƒ-1™ïR Oõ›¸ ˆí°+Ö:5kOÂÅzÊ.ÄhÝŠ°9 É¡ì&ˆŸI/À“Êhµ”Tx¸2 yJÞË@<ZĪ­¢H.ënäêr|°±¨?bço†Ó; þƒ§[lœèVç[RLÜ°× B’ë¸[Þç,5WïÌGDB„àô(;vN²ëù0(òZ²m^4@l-wölšM£[b}Û ·Ú>޶oaðtÈB±›KçI$úØ(ÍÓÕOÈ\P&@Q7t’5´>X—Wyà¨C/–ê7p¬ôðØÊ@˜|Î0Ž¿ð…/ í ŒÃØX ½œu5Šˆ­úàÚ“äl*Hé[&ñv¥ËÓ`[œ†¾^Û$í¢zz<IáSFÏò©¯}‰þÿø3ºÿᇒð”!YÕl²IÝ,<–‡zˆvíÚ•ÆcÒžxP íΉۙ;ŸKÌ:…ÄÞ¡ƒCj€MÐA^ŒãÿÕ`h m6ˆëûJ©à¢”5AÞKƒœC]¬ë£Ì£…xí¤)ü4¡¡Û�ì’tÙºAb2æØâAç® Q$ ¹¥ˆø Ëˆ"Q§—•ÙÊJPÂH8]¿4Ô‰RxŠG—Ä‘{vÎ$ç*c‹¼f :u†f Ó>ç–WÚG5ì~²d=°è˜_Q¥J(´Ž[få(+4IEÚ,PýÓ u?•6ÒdMfY+ô¨Ó§OÓìÜ<---Ñλè5¯y MOOû҇ǦÅää‡Ù¹s'aßûÞ÷hyy9O~øÃÒÇ?þq:zô(g/|á éºë®ãq�ÎêSŸ¢‡~˜×)Ï}îó8þ©;Îb¾ÿ‹¿ø ºýöÛ9¾é?øÿ€Óüð‡?L=ö=õÊ+idt”n¹åzÑ‹^ÄãçŸüÉŸpúozÓ›è†nàø™¿ø‹¿Èk¢/|á tß}÷ñ|o¯{ÝëØÃÑñãÇéw~çwè)Oy ýÂ/üûä'?I_úÒéÇüMôìg?›~û·›Ë÷Îwþ}èCËÄ8”éÕ¯~5{ó�¾õ­oÒ—¿üen‹ç?ÿùI{dõñ£º‡ÇVÄêÞ܉cÈß7IûöŽƒè2µ›+ÔZ®Óœ;šÆ. HÂ%öLk1x5DŠõ�}R—楄èn?k*RBÞ`Ù¡ø¾²¤%M[ÂIjôqÖÄ…Füä:xo£™¹%&µÁÈ5q¸B‡¯ÝaÒ èÐs¦hÿizï$“Fd â]ÇD'î:Mõ¹&UÆ«ôÈwŸ r•ýàÓòlƒÊ•¹å1jÌ4©±Ñéûæiñäí¡±½#´ã¢1z즣&ä¢kÓÎ#£ŽM˜¦=G":ð´=tú‡³ôð·Ÿ ÝOÑŽCT¹¢b”—#4Z£VØàú7ZõTî¡¶9¶²Ð¤»>ñ�U'+´2³DQ³Í!Aš-„:Y¡™›Vhþñe:ýµ‡(¬‚ bÒYiÒÊ|Jñ•ƒš1‚Á+%¼W ½L[y§D¶ÿ… ™†ÿA>ã_x­`™ªmÍy1¥„H»)ÃdC®"D4ñE[|BÙ½Ý"–iõfâAqPFámÆâM/mJy©ö!Pï—ÕŽ3ÏBn ( ²ù±‘ä—ó"½Šlêfé$rt’=Hù(z¶v3JlÊ妦ÆimþVCÜÙ4AD‹ õ¡[c¦ u§IÇ]æ1>]øÜ-É"Wœ>z¡ƒ•"3´zéò:õJo–Ì2€¤ç¶Ùûèááá±Õ�ý6šÂÆ í,îxï®)òz³±kT¤·–ÀºD‡o ¼ãA®Óײgþr…·<Éá<þf£AŸýÆWé÷Þÿ?é¡Çåìì• äaco Jƒ‡€Û ð‹ ÃqšŸ_4‚R•Vb¬¶;)Ó]ü,LG9ƒ»£óDzïòׯl´qe—SÞ#±¡\ Þ \/Öˆ8ö.Æ3¯–ü‘…‰ÈÊçj=9¸†qwׄ‡"½iÉÇ _!ÆyÉWˆò[·¥¾ÏÍS{¬Ð×H™…4#éº%Š&ÇX=²ãA&�v©§[.I¯„$á’Nt\á-«CÈ!@$Ö—nkÔLÒ˜°aØRëþÜüÆPÖ‚]ßîX`èç&ùk"Œë•dX¸w.'¤Šùùy6ÂáÝ„ñU¯z5=ëYϢݻw÷ô¸âáááq¾w'Ož¤'NÐM7Ýık¯½–°|þí¿ý·|Ýå—_ÎDˆ;ǻ7¼á ü$ˆGy„Ïß{ï½L 8zô ú±û±\> i|îsŸã1däóßþÛ3iÜÉî.gggÓÏ¥—^Êóò¿óÎ;éÌ™3<`Láâ}ï{çÂÆ_”¤‹þÏÿ9×ç®»îb÷‡²FAýî¾ûzÙËf˜È‡4éþè9Ô ya™ã[ßú“AyäQºä’#ô‘|$!„z¥£‡Ç“cœ:¼oœ.½`‚FÊMª/¯˜±ï™cO�+™p!€Y;bsï"'!¹ãH›Î=ÄJ©ßmk0grt÷2­ëÕ¬eŃŸ¤»dØÕ ƒòNMMÒìܲ¤ÈG÷^5M•‰1ÚyÉ$UÆÊ¶~ˆÒL6˜Ÿ §éø]§iáì2! -ºû“Ðì#K´|ºNaÍz¼(ã6¾ƒ°0¾³JS‡@°¨Ò®ËvÐÎ˧iÿÕ{èàÓvSm¼DÍåOOPÔj˜|Z:½B¡‘qæŸXa2_´²LŸ>JQØb¯"çA˜››£ú3ß|s†æhd†¥}ã;hñä2÷™¸m m澺5z¹Æ°1š¦–yv-âC#WÈzPaò}ÅôýZ¤í$ž+R´ !H±½$°,¡”(ãÑzƒÆWêõ:µš{'é„k­U³0²a½¯›"èÍ,²g=N½˜èÍ8çâ! ‰$é“CA§…1¸w]1 ô»&;¿ºûºýv¡u#™Í]¹Ü.(t…fœ<—Øú! H¿Xg³ª ›Ã†2G]6¡¿wá9u\ ¾×<ÜkÓ‘Ë.&’Paç‹êááááQ È ÐeaŒ†ÎÌÝÜkQ4¿ -Io-e’Á: »žoºAì\r½lºumZY>ÝùÀ}ôûýôÀcØþlÖ¶¥rÉn"'F-Ì1ëy{À,6èD\p0¸Šw mÄÖäíý€Ú6ƒÿˆa>Îï]C¾û]ÿu½gh½t3r„v?¤ Üš8!“… Ò¢ˆˆQ^à®1_—£ˆÙÝ Ò^.ABâ4jbˆ;Q¹"ˆK¤aX~˵R6M² H ’·´‹Í’ßÉ@L:p«Ú­ŒÑ%{½‰A¡BFß§ÓA¾2aÂ`¥Ÿ!ž³uÚJØ ]©ÔÔ³ˆ;ÚÊ…´³[ñò¡û ò“ç9Œ{bíVÄ$$0IO:ÅÊRì|FŸýìçò®îƒv01ý¢ÁÃÃc³âÖ[@¿ök¿–ÎUð/Ç@†ø•_ùönxŸßüæ7é=ïyÝsÏ=ìe„‰û￟Þö¶·ÑÛßþv:{ö,ý‡ÿð˜€133“ŽÑ7Þx#/0VþÆoüíÛ·É7ß|3{šx×»ÞÅBߟýÙŸÑ—¾ô¥iåxÎsžC¿üË¿Ìä‰Ï|æ3ôƒü€~üÇœ~ê§~Š ¿ù›¿I÷wG?ñ?Ñ¡PL j‚”¹å~æ3ŸI_ýêW™ìñÀp¹A°�i$xÚÀ˜ÿOþÉ?) =ÎÃc{áОqºú©{hj,¦¹ÙYZ\:M'ÎÌÒJ}™òí‚Xï%öJ�M@˜„b¿a¼ÏG<óLF°ãŸõv@1B`÷ÒRÏ»;e˜.ˆ%^vÒÆ½ÏHX›—réö’›22BŸ°µ1òëÜ#u:}Ï]ù¦ÝT)ÓÜÌ<‡›l®4éñÅãuZ:U§Ço>AKgš%LmªJ».¢Ë^s!=üµÇèÄË´÷i;hb¯I»ÓøEãT*ÓÎ}4=5N%SÎVÑ‘ êþ25ÌP3ÇË s ØÍÀÆwUÙ-ÿìãKì¥cåä‡þÀ3_:Q§S÷œacûüu:ó­jζL_iÛ>d’1gî0Ü·Ú «P ÙáÆÐ÷‚(!PP;y V$Ækó±Þí#ÞL§ ÎRBÀ±¤€8µJŽø}Ê')Âäºa½QœïçàõK7!˜ç[_©'¤Ìþà]…•Rj >ãd7Ma vc%!ކIX@ÿ{dMFÎ1-ˇ¹k‹Ò´>œ„msòȧw~®=ÇÈ.×ë:é5lÎuÔ±ÑD'owÀŽ˜mZ[g`l®5p¬§¿Ôô™3svþ£Á FðÔ o4‰/ŸÎ€2,ÈÑ£Êù¢{Üëäw/CZ/²Å $ÉŒt§{™ÆÃÃÃc3�ämŒÛЭÁ¦ˆÍ p‰ur^æ\7>>>tXnÀše›N/QCo®Öä A¯yÎãÉéQ ‹‹ô•›¾M7ÿð.ªÁ2=>ìRÙ!±I{óÈ×O°Ø@`¹âŠ+x·¦î@$„þ®¯ ©“X!†qþ„ >;R&+d¡<:•”œp'÷æ½3i¡”#…dƒs>´„()äI+Cžlâ¢>;H4@+uÝxSª£ˆ$!ÏÆätx9ºI{JûMRB(û\å§F?áL“G¤|½ ‰E}N—Eø«Û õ&8†‰ytt,éW"‘t*"´w‘”ìBaÇs‘ç†ü‘Ÿô-—83È" ¨ VŒ’+„X¥) …?ó3?C]t‘_xxxl9ÀóÄ›ßü&¿ýíosX xŒøõ_ÿuš˜˜à±á8Þÿþ÷Ó£>ÊcÆrŒƒð 1øÅ/~1_·ÿ~zï{ßËéâÆD¤õùÏžýê¯þ*>|˜ïGHäyñÅóc,<W€Ä¡çK\ 2<j€L°"pqˆ1wjjŠ? ¶=ñÄt÷Ýw3a#¯.Vø#ý§?ýéLìØ»wo¶ 4@Јz!/|†¤í ÊŸqéÚ[¦åùctô‘ï¼±< !¨ÇéNó2»‡ÂîÄSùÁÿ`L?/¾À†°†¡ˆËkËT¡v«ÄÆù®·ýwÒ¦²�õF”¬Ý[ñÙýÛ e3GLMM$!W6µ—#:ú3T®´r¶E3/ÒÒãËÔª·¨4JT7ÊHc°L%w_^ãpË3+tÑËöÒÎKÆilǺæWÐèÔ(Uâ*“æ—hea…*æ™UËU£Ø0ÊÃ`‘ö_½›fž˜¥Çn=N_wк m-SÙ¤¿r*¢³÷,²íúèŽÓ©;+Ô:Õ¦G?gä„G—¨~¬›—oVÑ' ›—C*–Lµ[¦ì脉’ätö"[ÏQœäeÃ9Ú¶¶„ ë /×F‰ç„DDaŒIÔAºÐQgð·ÝãZ…¾ V!OõRλC»—!³›q„*Š@Vi™õCƒ½JÆq2H/££¥´”¡è!Cq÷²”÷Ø ¿Eý/¦A§n¹{Õ¿×=®n$+R‡k�{gA^E=Dá~¨ ϬLédåêe°îv?Q\ØVîýA0ÉÂ^—Ýç¦C©÷mÈÏŽ[dî“72ZÌæÔ}¸Žhqqað»™”a7ézñÑýšŸA¯ÆågTJŠÔ¹1¨/ñÂ%éW^•§WzÝòðz+þØ>+­‘Ç ƒm~ðqm ß%,!tsÐsi2Æ kAÊ% ñHž·åuB6 Š-ªhMéç$÷Ó5=~”>ø…O±> dÞp¤L¥ª±7r_*ñ¦ljˆÃ€¢m4]y‚Ń ½ÑaÒ rã]Vd£¸@y’Db ¼\`GVh¯/ DBÒÈÈiZA§7 Àô-õH{Önˆ6†)ý\ƒ¼U(Ù{ú ôr&5¸^6䯰þ„X!„Mìûuy5A³ ¥Þ’¿¾§¨|®‡ )—Kp Õî®· üµu±¤ˆ^$ ݆Y~qª€“øY: ˆÜ‡°Y{–ØP…‰>ïE"H:O]^©ƒ<ñ~¡Û@òÕqÊ„””„{LÞú^ù€HcâÌŒùãvQÃø†zÀ˜ã ‡‡‡ÇVB3< ^*Ž?ÎD #àÙá÷ÿ÷é’K.¡ë¯¿ž B–yXI\ïb¼…wÌ)Bð”5 ÆÑO~ò“ìâСCLÆÔs‘)zóL\JüGM,µ,JóÅ5˜'eØ»F„‘9aeH÷›ÝÇ€#ûÌz³½H÷Þ{´ã\j(6Ô˜ÇÙAmwˆG‘ì.ÎŒžÖÓùÙ@¹ý6«t¶½‡(gÆß:ÕJ¤ô6TêãyEY@”ÀŽÏp±ž'É÷3: J Á‚S ’z™v>uß-ÍÕ©\52g5¢=—OÑô¥“T.QÅ(_&/œ ‘ÝF©X-Óâ1sí™ÚeÎCû2º§JíFDÍ•º1žµ¨2ÒÜOÄÔ\lSc¬I+¦êí:‡ïxèË'éô]gQUjSZ:¹B˧›túŽyšl™j*T1I¿è×СKöÑÌãóô÷ÝB›)®T ž ´18H¬z™ ÛqYRD»). q½ÝÁ&¾Èí„L;B&ù¤‘&øòŸE(Äþ8¶ÄŠÐJþš ÁÏ´ ûr “¢æL˜¢U·k5Â8»n8*Uæ¢B œÞê^VÖ}˜¶nÁc©H£Ž0.¦¯ƒ�#XºÞ[bÖ×Bæñ2Š£”ͶW$î�6ôÁ¹Ø°¿Ö{kßîyu†ýÈ.í¼§³ý\‚¾¶øxþÞÜNšºLƒ ´¼‹.ƒ¨°jJ¥'«ŠÖmxmÒ°`zbA»ú.ð3åa%¶¤¨¿Ê=_4®êÛC‡ˆS”~·<û•ÅÃÃÃÃãüB¯ÆÆÆØ–½>Bn±\H ÐÃá£=¯w™ôf(!ZtËG“*´žM×­[>½Î{lo ´Ûç¾ù5ºïñGXÇ[3vÄéq*Õ*¼®jcwÓÈŦÖà ƒ� ÜúˆQy½0HZÚ ‘˜Aâ~0Ù•‘zgÀ IpYš šêš”\„Ö3!LN‰¯±ÞìÅ8ÇéKXa‘‘7DC$ÌòŒµ$ që=Ãæ“yF…_ÑØ,¡*l2Q_S7ÀŽÐ¢=RH[fyE$;䜡„œ!†$!hà{>J6™¸á`t9ŠÀíDy/Ýž¥õÒ¿/dyÛ²‰×‰r9H'p­0åÝj‰ñË*ølÜ/ Œ¶žYÚ6ïü. —h‘ÅË“n(WA!“·&¾Hû÷‚<›£xÅniì^„a ß1È·Zí\Áh­1¾---rh „jºïþûhfæ,»ÆX}ó-7ó¸ýÚ×¾–^ð‚°w %�¬KŽ9BwÞy}ösŸ¥±ñ1:}ê4ýÿñ?èiO»ŠÞò–·ð|X­Vè§ú§9í¯~å«ôÿó÷qÉ%—òxŒ¼o½õVΡG–—‘!Ð$͘ó¼øâ‹x ¾óÎ;™ð±ù±ÇãsW]u—Â'¼ ¡¼ w<ôÐC)y½51NàÝ_øâhzzŠÃ³Ý~ûm郉ÃÃÃc{`ey‘‚f7·þÖB¬ ýb|Ž£0% óTß³ÎCÄÀc{؈ËaJoÃï2Õ¨;ÃB+¿†)WŽä-;У8 ÒnG}ïsQ1ëý½»v[ï ”Å‹Ÿ¼°B¼t'Q3¦½WNÑO?LûÇÙ(]+¼Ëž%@’8u÷Y*×Ê´2× ã?8Iû¯ÙÇ<ªã5jÍ´©9o4u³öo†tìγt48MKó+¬¨™?¶Lá$M_8JÙ&Uª%Úy¹ÉïÅã´ÿiKtògh¥¹dÊA´ÿ’Ý´gïn*ÇUÛ?jJ?Ó­…¿Ü}mßhKU¬1Ÿ¸Mà ƒ)‘.Ð>%>–µ±HoF6Žs¼éöX\Hlà<q´íœ.8HˆÄáKG:|,Ñä®Èð×ù.¸ÊØáæèÕ+rsïLL9Å÷ ¹ŽÔ¬.$vÒì§ü :­î±È»‰—ˆØ%l¥õ‹”5êqn°ç&.„;ÐùëŠÛ¿¿§ŠAÑ«ov;ÅïrÁÉĆOA¤¯S£Q7ú’­¾„[j.Jˆs 6,Vßg¦‰6IH0ùÎBŠ8\ŒWq2Páà÷ŠìÓ+¿(H^{5æ<Úw’,²4;;9‡‡Eà‰8çEd66›O/¬×Z¥W™ä»l¶]o JÆSa£%Y7kÂz£A+æ/Ân,!äL«Évµ±‘Qš0zÔ‘jª•*ÕŒî!7€óÒªÉ2ìñ“ÇèŸý•Ke5zæ‰ÓTÛ1ÎÞ[F_Ó0:ã¸Ý`9•×Çm"Äc�`PÁS1\˱µ¢¯ ÐyCþ\h„uƒK=™CZ¡lî1÷» õ¥qv,< MÂ$ rž,Ñ )h×¼)™Ê=j/ž ì÷(Š;v`Ù E©Ts ÑŒ” =Qè²Ê³µßñ·œæ…¤½/Në¤Iú·ýž1µ‡ ¹&ï]$Lˆ$QzN“ô1”G˜‡ø‹IÝî`.§yé€ëjµÑ4vX–oò\â UÂŽž.n­"!ÛñÇùöÕí ]©�ªÂ¯è{uz …,-[b>p/ñÎàµBvC‹›.¼—p-ïááá±õ�KKD÷Ý/½û=¿ÇG0Þa|{õk^E»vï ç<ç™tï=÷Ò§?ýi&4 t†ÿôêW¿’ŽŸ8JßúÖtï½w3 ìú§^u%MNM0á÷íßCÏzö5ôÄÑ¿øyzÚÓžJ/Ù+Ø+ÆÍ7ßÌ^2@j@úµZՌؽuD¥r@åJÈǪÆHvÍ5Wó} eÜwß}œ'ÊBB”€ ñò—¿œn¼ñFú£?ú#ºð ™ÒOeã([Ž"ºþ%×Ñ£=L7Ýô]zôч™ ¸ÿÀ>öΑlc÷êGM^­®òå\hTh¼l £”¹RµËUk„¶†jk¸°­ŒøkG„ˆ ü)¯|«Øš¿ˆ-¹BŠÂž dżýazÝ>ÌØÀfŸ‘®áúÁäuô¸QtË£ˆÈ±kÊ(SÌS‰¡dÒž¾¸F‡Ÿ¿—VæëtѳAˆ«˜¹¢Få^:Ú–ÐhÒâ©%:~Û U&Ê´<[§³ž¥™‡42fÖò;j4ûÄ­Ì5ÙJµ|²ÎŸ±5š¸pŒ¦ŒÓE× ?˜¡Ã/ÞM_w˜I*%#‹íØ¿“Šè)/½nùÜtüÛ³Œ˜²EF>©ÓÔISÒ£ÝZ¶Ëñ8é+݉àvCƒ4pÌ®QCe7Gïc;^,V7¤ÌÏÌHÈ2_Ùkƒ4¹\ј"ÏxÆqF’`ƒ^–ܪ!ÄŒ"ïö=^£QgãÀZ•Ð<˜FYYYf™Äüé鉞z›Å•9šžçgé’,úCÆ›„�–¶™[¢N¾­ƒN©†}ŽëYžN}L·sbÌ ¾;äóÒ:ŠÁ ñ�ùæÓKÃHYXOcí¼mv^îGHÞ—ÐÒâJªûëH/GL/¾L§`çF¢ËS ÜÑ®Ý<G$dcfv¨ðÞü¼‘Ûoµ±Íý®Û JûQg™Â>,м„ód‡ô-ñجC èóçþs›ýt,év>?F¥µ•Ñ—Jœ\°dä£'OЙ¹c×Z¡…åE>vjö,ž9K'Μ¦‡Œnó‰ãÇivažÆÞöðƒtä‚‹hßÎ]´sjšvMNÓóÑb¤6B£FºcrŠöîØE“ã}7,sqDÆ£U ¶~ü+Ÿ§GŽ=Nã;¦hrßNÚup•Fʆ±¾´B­ÆŠõìØ‚^£Ü7$åV‚'Xl 0PÀ`QNÜbo´ ¼Ñ(ªCÑ�«_\û=Ê ¡"X”“EŸ&t#r¹Á½&ÿ—sé¸o;‡³t®‚®ò€a>#U„ÊÀß©�Ö ù.^-„8 Þ&l=my\ÁÝuÁ+ùçØî¡Mºíú±×Lú¨TÊ É"LÃ6b�·²ØÊH:ñVÝVnú©§²õÈ<j„¼Ëëâ¸T-$ݰ)R_MœèòE·>Pü" Èé33ìF;åð ¥lâ…õ’Éôô4yxxxl5À³Ã›Þô&þ.ã"ƶÇÓ _øBöñÚ×¾Î̯5züñÇÙCÈ ðp"X—8¸ŸÞùÎwÒ÷¾÷=-/3òìg?›ÇO„Ù½{7<hîGŽ0 âöÛogòHoûÛùÆY¤ýàƒr: Y`Ì•°$ûöíKËëÞñŽwÐUW=•Ž=Æk£Ë.»ŒËŒz Ü?õS?Åõ€"„qÂqxǸä’Køüë_ÿú”tz#ý¿÷÷þ]~Åe<ÎÃ3ÊæÔ e¼ÿþû9 í‡(!ik¼"1XÇÖc@æ€Àº·kOK¸°ci“=וˆu.å?-û¸aøº¡› Æ{Ú«ØYR®”hjz¼ãøò‰&íöÙÅqWÏ›1Ê¢ú™&­Ì,RP*ÓÙçéÄ3tüö³T3Fï³-ÙS¥Ö|D|ã Šš^0Jå‘í­Ñ¾çLS¹ÒŽCS4>=JcûF(¬š9çÚ=tøy{RÇÈc5öáK+uuU¡µÌü0sbޱrG©jd¾Óv+ë÷ÌldG5‡ô¹OÂ{E˜ìl“M©«ìï™æ)`Â…l`Û|d‰CVšÙ;‹b–UDqšF’Ü:ê0ud” «lJ²àŸC*M7ò]éý.„Ô†Öôë!3q™Ü£ø sÒôŽÕÈ’1uhƒÄØž>  2}ˆÅå/2ÔvÍ}È6Þˆ4ÕÉß¬Þy}M¾o¹4òÆðβåû§¾·WÅæºÎ¿ùg†T¬‡ÑR³Ú^F;Åé¯|·É÷ÌÇ+Ëu&Y O O·J!Ût-ù¦¸?t#"Ú;³Eq—@î;ô rtêÖT‡ RšOzMPG/’‘Ç“v ²¼ ™_Ž ³<<<<ÜñbPÒ~7èë _bÍ-6¾í†¾²9 Ï÷=òÝøƒïÓ7o½‰9úÍÌÍÒ©™3F‡™xç´ìÑäM«>פ3ó³të½w±Ì&6*TíoÒè~Ç&&hjb’ïÝO—]pÚ€ï;@—º€¿OŒ§Ik¬å)`Õõı£ô×÷ ªŒÐäþ´çÈ!šÞ¿‡C.Ï-P³Þ´žá5߬ÓÚØHÒò,<„ìšCùV….{¯zˆGýî^Ÿ¹ÝD¸–%‚ Õ¸ÆtþZb€„%Ñ„Œôo@éŽ5N7,ö²¡CØPVhÃRz\\ët«£Ò¢1@+6´ÀT*DÒÑuÕõÑp˯ïu‰+ú Ðÿ$¦—([%T†Gp >è-ËÙÖMÏn«p’6 yןݵl‰V©—�Ýþ£C®H;¥d Û!8 =‰P`c\…d |`ˆ›1F?„A Æ4al£^B‘ï� qx/=<<<¶öìÙá:zãëë^÷ºWÄtñÅóÇæ‚W¼â¹c/~ñ‹ù`7Ù—¿üeö8ðè£rž_|„ÇV!€¸�)ã oxcá9Œõ‡¢·½ím¹ã/}éKÓï?ÿó?Ÿ;wÑEÑ?þÇÿ8g¬�É ¥ÓðððØ^hG2H$ëbY:ÆÖ¯@—”aÚõÕk¨™hµ82Ÿ&=Ë_ר—"èŽxâã¿-+·eËñþ†\¦wLtŸ{t™»å8¼|ýþió{Áå j.¶©¹ÔdïsG—hññÛUe×¢Xó_ùã‡iïSvÓÈî˜&ŽÓøÞIªUidWÅÜÓ¢V½M»öí¢ñ‘q£¬AŒã:¹î5›4ûðºà9{ÙÓ@«a ô U ­%¢ãœ¤½{NR}¥AKó‹LêXO‚ËKì% ‚ýÀÊ¥ Ê ÈÌÿa™´ÍǃìVÞͦÂ8ë¢xËHlÏAºÞîÞŽåÜ# !Ÿ?ÓËŠÃ<.um:Ny<¢’‘™`÷Wöá}À±¢waÕŠâ ÙX@:ħüÍ“ z¡ˆp!EÜëú¥3H^kÃêÚª“$QtM’C7ÝvZô¸çu:ÏÞ†„aÛ"îÐaÜEˆ¾T7Fkmßõúfã8«Uúø‘òê1ot<##£4l–(g«u!fÏ9[1ôH+¹&NÉnú¾~„ WWtMÑy} çèrÅãîù…=6DÇ:gŒYØœ è¥oöððð(B/O®Üéžïu/Ë`f½Í±bS{R ™öï}øúη2¹â®ï£Û~xÍÌÏåéÕA¦Ó°vÎÌ[^,¤‹@¶>ÛçÐ2Wœ]^¤™ú=~ò8§ýùomaví¡§\| ]tè:°g/]vø"ºÒüñòL–q÷¢÷š=pî“_ú=xê(í½ø í?r˜ö_qUÆFhev‘šËu–ñÜa³‹±¡;„KO°ðèðXØÀ¼• ƒ¢›º“ÕxpHvG)tz.ÉÀ%adé ?@òL¸Ì°>.¶|}\{‰p=kdÄ {û"!K“+� "âÕ¢SÙ™1øµ‹¼wˆ(W_}ÄÎÊ<ƒd!T¤>Ö‹†Ìð4ôKëÝ¢’(amYl9böø¡Ë¡ŸKØ}°ª‹üÖåÔnBeŽ”Ç©× ¼‹KË)±B¼UÀ5>ÚBA}„4bC¡dáQ¤½"Ä Ãã*Æ×üàtÓM7ñœ‚¹ð ox=ãÏHC‘¸Hì@ëŠ&BÁg„<aí!XÛPEl¼Lþjײð‚­Eï¢Ýº#––› À˜•XöHˆVÖæ±Ðü§¦Æ;líSDá ùÞ--.QÔ4ëó*ÑÔá1ªŒThÚüÝûôÝT ©:a䓱æÏÑþkvÓÈx•.záÚqdÚ<ʲù]ã03'Î2y‚=ó™OPN„»v@Üp‚OÕùQ6ëTŸoRã1¢ÙGiþØ"µfczðËǨy&¢…£Ëôà—ŽQ{)îC‹ŒÓƒi%$ôD EK•‡ãÄ‚Û/IMžaBŸHåÀXRµç#Õß)!qŸ^Ey•³ŒzZ :¿4ÿ@QQ\ íAÔÇšŸ~ªD´±È˜Ãéx$ÍÔtÛ™¶ cω›M )ȯÈX;,†5 o$¹bÝŒùC¦•×Gõ¿.¯Û ¡Æ ;÷Ä ïϾã§OŸ¦f«‘m6‡®¢“¨³¶réf•0ÂZ6=kæžÙ™9£¯ª²~) 7¾ †ìˆŒ³cr “o"²òÚ$ƒjö'ÛH(2ÉAçfÏK^ªÔ…dAª¿e7uöŽx3ŒÆç Z_6BÀˆ%rùzŽ©O^­º]×m1dLlÅ%›`·ÛøäÖgÁد>òåÏÒ-÷ÜE{‚î~è~:uöLv½s*¯ˆ Ö)í ÈÖ©Ì–Ù8í²%Ó ½?uœž8}‚âï›jÕÚ³—.Øw€öìÜM8D×\þTzîÓ®¦Ý;v:)._G}MžŸýÖ T2²üèÀ¥ÒîCûyMÛ˜_¢V"ŒœUoQ”lú–õïv'Xl0Йášk~~¾ïB|³£W¹]’þ¦‚SÜq=O :ÞOLù ±¾/ÙUÒUíaÞìf«¥EÎHÜ\°¡=,qœyF#Te¶±k’„=bĶ„aâQ£ÓƒDœ[ØŠ§I¿ÉB§#]²GZ‡ ï™C”;A2’ƱÞa•D˜¸@®ÀäwñB@ë¥×ä‰*äˆ"Ö½«TÒ÷¹äiO©S·‰YH$(æÌ;tæÌ ¿K Vˆ· q+áž)„0¢ÛÅ%XÀM¾‡‡‡Ç¶FÏ-«_ÈÖFªôc?þFzÎsžE‹Fyƒ1óÊ¡Cizª‡»lG‰X|~5Ø>‹ráÑŽB²Ú©ùTv{D‰‘2ÂbÐŽ­Ñ›”Ûo‡ü£hË-"³0§$ÐDôÁ+dÅ­,DˆÈÃ,Æ'FÓµwšnƒ¥( &#Úsñíºt'í¹tM"¬GÑÈÔ(•¬‚+óu:qÿ)Ú÷ô=F1ƒ°m;<NQS% lhB3ÏLRc¥A3ÇæèäÙö€Q7÷>ñ½“tòöŠ›ùþœQìDÔZ6rÑlÌå� /ÿ»&ýÆ25[Ô˜mq‘×H«ÌŠ~¦$t£\ù'Húl§;¥#ÓiT›ØîNŠƒÄ7…6BVTÏ5£]"AߢJO:;LȲe«Ýä~÷!X@W�Ï d‡<‚l€âŸ°Á©f¬Î#N×N›…ÆâÖ-îr.èso‘18Î]>HyÝF¾Ý]ýÍ:*É%#œ<i”߷И“Jt¾±ŠoWçd!ú.û~ MææXæàùy‚¢1ÕÖµ¶l ÊtmBÆ´(z³:t^IB)á%’16êØTåÖ/­SÇ÷¸à\ì|ïì¯iY‚ “D÷¤³=ºk/èIggçhïÞ=äááá±^f-Õ¼ˆðóîn€Þ–0MððÑÇéþö/és7~•Ž:™Êk½Èð=W_qÜAºÐäËPý¦Dîd¢*/±ª·šô)ÓýO<J±‘ó'GÇhßÎ=t`ß>zê‘Ëè5/ºž^ðôgÑ“_T!{=&sîîǤÝ졽ì§vÓÈÄÕOÛÝJê‹FÖ6v½vaAâdÓS‡-O°Ø``°ÀnùcÇŽÑVG/Ë5´kTêµa=¹1ùK{I§ôRâ¸pÏ¥¹+À„¤‡©v`¯&%BV+<8X’…ÂÄêQN¼EhXEÆT×aAŠH ®G ñ@!çå>! hAO<V�ê¤(>9^r)r…ý].Wirr:M3Ë‹RB†.ŸmåNÂE®¥ãN·–r¯MP}öÄ!ǤLEýD ÔíìÙ³4¿°È,GáBÈ+ T  $Hö<Â\¿Óí7õÛ³XÅð=11AO½ê©4<¶ÏÚÃÃcs IüQûÛ¬<ÀDƒÀU(²&h5Äîù(]Ç„è…óµ#§Ä*2°K î³»¥)QÂ$FþD¦‚…–Sú#`7÷ ßÁ‹£�k÷C/ØM{_0a,]øì½4¹c'ÕJ5“i;‘Íuæ{;^¤wÎÐøá1:ußšØ3J;.š¦ñÝ#Ô\œ¥Åc+æ–NÞ1Cgï[ ¥“ j.µ-y¢Ñ¦ú‚ùÒ‚ª£M“+LÂ1Ò@N7ÄÞïfŒ88ÓHJ­Boäš.3|¯Üÿx4ˆÖ˜Šcp°‘5ú‘õµbýWP*‹ù5+C›Hy¸ l‹6Ù «+gjß²ªùìÄP¼õ\ý²ÂÑe§GQÖnÒ>Ô¬­sþÿÅóN˜ô—õA܃9Ó}ÜÊ:Ev‰|’Zä\[t?®qCŸäJ ®Ï®Íôԣ܃KÝ6wdç³rôÒmu¿ð²HNn(Öz}…j£Ât¢m­or7ÓX»õF…)x¹¾L³ KTÁ‚†æ¬å, žCÁ+yµê ñd‘%¤ÎèÉŠôkq:þSÇÆ´4EðéÝלRl³þâ18´.Vëáñwd¤Æk1½éq[3=<<6ºÍ ÍÏÏñ_»é7¿x«¡h¾èòÒ}øKŸ¥ÿó…OÒ]ÜGÍzƒJÙŸ[ÛÆé=9 ’¯½!ý©ßV/’µoTÂE@å°l®mÓR£Nœ<ö}ÿî;è ßþ:=磌égÞðfzÁÕϦAðÈñ£´Ü¬ÓôÄ(MØCã;¦¸ðÍ•­˜õÜÊâ5–ëÔj5YÖŠ[%ÅÛgñâ  ,d8@wÝumuEB„þ®HM$(b°íp ƒ"ß¶"ЇùrƲ¸$²±N‹Ó�9AívÓ7·‚VBÈ{d�!¬\Î×ÛõÔ ½*èÁW‡øÏryâBÖVpýÅ¥„ÇP ò; KfA=Áiè!Ò>Q;k+.KdJ¸OâÀJ™\A¸›œÜQœkێ֣ʢ½sdmn˳³³, H³Ù¦3!Ùð%eó©0©Bˆ¥R†H¨yNøàÚ]»v‘‡‡‡‡Çö@?¨‡‡ÇöE‚Öú N'k|‰RjmbL ¿q˜h+:c´kf5D‰ÕܳÞp‰Ü]xÈìN²Ž·ëæVâjݕӴ·ºÎ2ļO,X&06é§ÙÝúèx•¢VÃÈVFîˆüÜŒº‡ægé‘ï§'n>Mµûfèô=ËÆH°@ó<Ê÷![ì~bc\ÃühR”ªå…$aˆMûœ‚I;-U–$@MôRÈKqâ±"9ËîèDûf½ªØgæÈ Ö#†5PƉÇ7B„µ®˜²Ë8Ø=a~µUæ^[N«/`p[Û¦Ä�Úû^!úCI¼nˆrJúb©qv#!0ºCNJÓåÉÊç¶åI%\crç}]¿Þ(._¯q½?ábü’Ÿ +;Ti;Bë©D'd7ETo`·ý"ë¶ŒÈÌ ‹-Ú½{7ƒ-ÚjG©‹ô¸~¼è>@é+%m‚8ÛˆÕAØpt›®ÞO_çêCƒ.iyYÆcˆ^sÚ™3gYÿ‰yî&A×[²‡‡‡ÇZáΡz®Ãœ¿h ígÏΘõs5%Xlet#TB6ø_Ÿøýá‡>@§fÎZ{ ^ÔÕï[Ñïnyçî)hËtí"×´ìº%66¿6‰c#2Y9²cÛ¬C?~ŒŽ>E_¾ù;tý5Ï¥Ÿ~ã›éúg>zá¶殺Z¦1#û·LBq5dbÅœ™ƒ–f穾´lC„€Ì޵“,¶®ÇÐ"x‚Å „#%•`«"½Êß8QD,pÉõnƒ"îÐ á@Û)`4@@Éñ—ôo]÷tóÄ «,ËŽµÒô1ÉXR…u?jãNÆLz€V~µZãkÄ“î…@.Bª&󌌌òíÍAÚ&&åå;”Kq!1F·IQýŠ„RL.B0¡$, bn¶¸ìvaòÃSÈPÆÎÌÌp}PG–DE–ed£ä˜tÇ¢~•µy˜; ðõðððð8·Ø¨µW<zxl]Dqœ’rWƒŒí­€ªT!Ö\ÀÛ™ƒžÚ•,Þ)r¶–T^¡UËçQ —ž#4RA{5¬œ`Dù$ ËµÚHºæ ‚v¶†ùDi0¢ oÈé¶Î—”ݵu7À¸ Ùeb,KKî{|‘æE´ûâZ9]§ÙcgB&¢3÷/Щ.P}¡I'nœ£•cÍ,l†ù,Q½@ “°NìB%–œïV&ìLb@ãBÜožÉ§¥FÓ8!xDöYì¶Â>³¤~,±;‹Ìª‰L«ú¯Ý…äÈZ’EB؈“Íï‰p½hÁ¶Pƒr¶Îby?o0Íë(–ò2§ÈÖýP22éèØ5gó‹Þ÷ªg)Ä‚¸x§}…÷ê|V»ü|Œ‹i˜á0Ÿî`ă o‡í¿IiCt¿´†EÑÆ£¢c÷E¢³ÈÆ ô¿ryŒõ£•LU;LyÓ¤ám5ÉÁü{vÜ8€Š?Öj¬Þ) ²MEÐUµ[™> z l–A¸×åeèu ßiÐÉSgY÷ƒ 5msÝäÔ$ë¬Ò \®Ñþ;é%/y …VÝFÞÁÜS¢F=îêÄ}o\2Ué²0¯XñŸ óÈë6yçl™õŠÉÝÅÑv²Tx ÙP¦õï²é cÉÉ“§iÏž=466šd)Ñ5{r…‡‡Çú"?‡RºÆÁf„|Çœ ³Ø(«í4öú­7‡ñØ›|’1õô™3ôÇüKúóO~˜–í:!Ž]Ë$o¸kÇ^687éxœçóü#+Gv0Ó}ØÕ6DÂn !¯„zTl˜ÊД«µiÎ<«Oí‹ô©¯|vMLÒÛ^óFúûo|3¹èâŸu_úú ÂN7R¥ÑÑQ&S,Í-0±k¿••&µÆ.Ž-UÏAYý[�ž`±Á@çžž&<ÁÀ%_¸ØÎlm«¨Ä·vŽÉà7ˆ ˆg‹rÙ2Ë´÷‹0\N˽Ýd,®eÑ-Ç3¥ÎÆÕQê%e–Iõ¯8†ºž1ص`½U4“]D-&R`òB…Ü+“±zR6¶LÖZÀÅ1ÿNzxxxxxxxlt3S p'Ö¿QÑniJ FçFYs.”BQBÈ ’Ö•¾dõ/ TXëB<ÔP\Û®qÎÜ0iAþ˜žš2÷>a×îÉ39qó,Qõ‡ô`\¢ã·.5cš{x…Éatt… oUM¼‡36µGÇî÷ÄŸ ÂÄì0J ™â±碄öžÊg ãÇéÆ ¹ÞœfLk’óz4ú+DÙÖ—‹²IÑäÍ æ-‹lØ–~€ä9R-Ñì:ì‡Áfò´³ú±†ÿOw¶e@Á&ëSƒ’4¬~&ÿB”|wÏóö´Ð¦þ(ðz"_d|‹Å`ò{gšöŽÔâÜvÎ]%tT«§(Z͈VŒwÑ(Ñ­.gÅk󆙹ù9š7 vÇ!è`jµ*íÛg½»vME|&ÆGhrÒn ’ÍFBvc[ýîÓc}ñø«Í½ºíÄ“E¿ \ú¾~ŽnÄ©þúÑV»ŽòØÚС‘uß/Kx—žxâ ]>==Åï/ƒ8]kÄf=°L§Ndïƒâ]]l3Ú+¢:~«@FR¬…¾ø­¯Óxß{éÁǵ³ò€kÅa®‰"‘.“ü<ô¯¢5F–N”³1»ß7 JÀÃUL.-»Ö;½²Hïýð_Ò_é3ôÖW¾ž~êõ?F¼€C‚"Åoß|Eæú±±¶aÖÍZ=WÌûÞâ µá½Â<ÿ¨¬—"!™Ó¶'Xl0Й§Œr©—'€íŽÔóƒãJ¶X˜ ‰[ cT¼ÓA{]Ð}…½]$C¤!"ÊN!1èt¤,úã€(—þFî&vI(§¸€q‚w±ÍÍñÎ+@´Àâ,kím÷ˆK;RD&`¤%í çdb–]z×&t¤çáááááááá±õÑÁ"´† ˜Õ™ahûÀ¬i£†©R)µdÇAÖ¹2„eV¼¯ÊHEìÍήác£@Nf(q˜ÂñT‰ÆO&©þXD<zÖ>%NÒ¬õµ øT69Ï.ÈÂ(º,AeR»››Tñ!Å•x9Ó‚˜¿ñ1˜%÷ĉ‘iQìØ>ºˆrÇìs ã`M$‡¢Ô»1#y ÉUYŸJöìÚ‡D®„LÙbEbB„¡^•°aàYq3¡Hǰ÷ôKc-è40®·t“Π×õÊ{=t)Z÷°7'~y¤_ÉßAó‰S†T œ Ðׄ ž2{fMþ¶8t‡%'ÀE‹õMâ¢NKFYÏìAµbE‹ffgiž=S¬ðX1jj‚½…îÙ³‹&§Æ©z ÂEóg^X«PÜ—Ù;«Ý òf"ÑûH»B?du:40Á&äP:Ä¡­buã Ï*G~‰;=¹)p,èé ÚW$Ý|h”È9ßõnòxòAô®®‘R‡ Æ9ñƒ÷¬½ õÌ9s$ô;ì<‹d€õ؞͉[Þ›N rÅ }æ†/Ó¿zïÿcÖE ö¿Åþu6Ÿ§s|ÔÛ~˜‰™A*OªCYû&k!×Ϊÿ a¶Ç0 ™—Íwx‹7ëµRÅʱq³Lgçè?ø—ôɯ~‘Þüê×Óß{Ù«h´\¡³3TÚeÖxµZYZ¡r3¢úÜ25W¨iÖíF“"„÷LHÙújcl’çž`±Á°!FR/[0°^p…GKªk·c[iƒûWÚ@3ÓI&t„@`ÉöœŽ›ç’’>„àJµÊÊUwâêÕÆ«=續”<ñ»@Xƒ ŽÅ=gñXE0ñÚð¥tò•6Ñu„" çuÛ !r¸Â4¾m±ÄÃÃÃÃÃÃÃÃãÜk½F„µf“6Ö?[GΉÎâÂÙÖL´&”#"HîÖsE›eO¬ÿ±ŽÆZy5€a­¬å-1º:T]+Õ íØ¹³+Á<ŽËÊΗ„nIIç[Ý’)û° Û"è$>„Qâº=Ìï§8“oø^ÉZZ@ö'YYFÿXBL²4.È~mýq=‹°Ü&úÁ®²è)÷ß>ó$ bl Ô„¢†1 Çìù…ú#ˆx7~–Ïð½VúûvR0žo *ç»—iC~·Í0.ò†xêéy C/‘Bëgx\HbRÛ±"Ñ ‘è‘:ÓÝ|6r-œRÓ'RQ›½5ZMÓç­çP$–Wê6ìl˾0Œ°W ói™û-bŠ&&ÆÅ ¡rÆFÇÌù1*Wà5Lt9(8Ô-“(²zc|;g€dËô;ÁP¼ ·í(ʵ‰û<´ŽÊŽóvÌ¥‘ †¢>§!~lÌ…^=O—¥›‹Kv‡ÔŽºg@Obõ/Ùh&ï”lN[\\d}lÞÈåááá±>жüÕÉÝMÕÛ\5Ô§¿ö%ú÷þöÞåRâJ„(7Ç –ráÂÔõ©èáðµe Ò ñ'¤‹ ³ÏºkN¶eÖ‹F¾ @ºõË6„H0R2Ë2Å•69Eïý«?§åótí5Ï¡ÅÆ í™â¼@¨h­4©>¿H öjÖäued™7¹jo§ùÇ,Î0ˆ@Á"æÉ¼xég°„)¾ÙwQt¹¿]2„+Tévˆ Œ: föjáLLr¿K(ˆ$¾¯R¸ »y#Ú×]Üc1òÒ›­ˆ¿/,,òDe¡¸›—ø+°†®'>²ËA{¶r"0È1©/vTxxxxxxxxxl4Û™5$N,SößF.΃Ûz„‡`ãOB®&k¤)LׯZ¡ž†Ökß¼–6 v ¯Â ¬Ñ''&»§vzÕ8?ÄŠ"‹h—ãîN("ØCâmÐã  íö"ë¹BNÅÖ›EjLM}Ié.ŸŒVCêwä”#¦`[rµ©åí”ó×E‘’µ›¡±â¹#È=Ãâ~+;üåy´á©‰°F ˜S�çD%óÖªå,lÏ€ýÆIfUç6“N©¸,«'ôÊg}½Xðÿ æîš´rÜ~»’±àéGë;0Öb¤BE°HÊwnÔ‰b[†VÛ’'fÜF¸¸ân@ÑhÒ Èˆm> &ÝÙ\Ny6› ã159É õÝ»všþ]¢‘‘ƒT®”™<*5c(.ªT–p­ò·Äd Ö¹CDúz/3£Aö rõ1ïÊCðªtUAÌ!Lú¡+i&HÊI}¡¨ĤŒ Šdá'z‘ß É…åóî<:QäuÅÕ Ë_¬Í4±¢ ÖÃÃÃcµr C¶ËzG¼ìè± ØŠc64|ôKŸ¥ûï¦ùÅ…”`ç6Cô‡K®ˆS1¤³m@ÄOSŽ;×)QåÆ}þ„YX3—`‘¶'žÍl8ËÀ2V)nšçiÖ|Õ³þ3ëÁȬõ¨RÔlÓã'ŽÒ‡>÷)jÄ-&×Öí/\4²‘±û-Í-P}©N­F‹7|#ýdYœÔÑ!‡lqx‚Å9�‘I#¨À¸\´ày²À<n»¶{ûtk‹^lvñp‘ť±RŸåaG¹ð,炼"Â1&‹à©¤ ü^X¬“솃ï„yë*ªÌ‚ynWå…Ríůø †4tHIÀ΋'ãûçááááááá±)¡ŒCßjÖw„`!I7z•w~@‰'Î{6¹É]ßÃ\µÕù®©v(¹d7vŠv?|ˆ‘ Fþí{ãÄ…]Ãîm×u|ÂÆÒè)¿º×òö u¶”´¬Zh—Xµ?ÿË ªþE§&e°ÑCâÔ‰E(ËÒÑ*_§îXezA,MÐêžÛêžuž€Ò½ðB|Á•,K"T%{°èWᘟUµV¦˜VÙàqö'(<yþÍÃè«zŽÏ º´ ס?ƒ%·#PÝkÑ[ÕO·%éë6Ê Å:ñ2QF!ÞJ‹†7ž FQ ¯ P`l®×[´´´ÌZà–: ´j'>¦Ýl2qD |FGGhll‡¹vë`@œ€÷#Ìì…¢dÃwp:‰ražXIOÝìªßƺ}ÝѬÿ;“›—h˜¾Hìm£÷5™þLŽeå§zÛÇ;ž;”Z º øþ˜âˆTƒ½‹^¿õd…«+½°û½è¹ßMÏÃÃÃcµÐ ÷»ž×Šˆ[ÉV³dÖWüÌ'è?ýÙ§¹Eå¹BU¡W}Üõ¡FóF½Ê ´í0ýg¯KÛ>Ó5’Þ œû@^%Øíš&f~E›Ã[†F×ÒŠÍ:²S©Z¡r­Ê1Z•:µÌš4lØ Ó°ù…Keö`±ll€+‰‹D &nÄIÚQÚÛž`q�!å /¤Çœž¬èÇà.:¶P4až cùvœËvÿt»O~ ‘A·¯&[l$ˆø€X´bÙúÊJ²+£îªƒ«(ë±¢Äõ>„˦r à ¨q©'vV MaGºõÝ¿?yxxxxxxxxl´£€…ÿ`[¬«¶BñRâ­Ã¹*ÏmpYZxÍ_d(Œ“&íöð¡Êå MNMv’çsd‹Â¯Ô·ÈñÆ>çbq´‡ŒäÏf;š@À#HÈáÒ.Qlå=Å¡I |š<§Ùìr»®×±²?J΃>…à{ôÃPž,I©^o°¼:ˆN¢ÕnRµR¦ÕÔ.NˆFi±‚Îwp˜´Õ£ cH³çz¥÷I¿øÉé,z§ÝŸìÒí¸(¯‡¿w°óƒ=¯¼¹^?çÜØHփżќ:uÒt°5£¦%[¬4ØÅÂÂ’ùÞä4*•*‡bBŒs\cu!»ãc46:¡;ž.b£“¬ÐÈHÃÚˆw#(8Æv�E¢{ ÃÄCŸç>`·ïh¡ (<£ûŽ„}•6Š{}×,,‰ƒ²qU Ýúù!NÆ`·Î®Tßß+½¢²zxAo>sÇý]‡—Ž Béxr…‡‡Ç è6/i£½{]Ñ=[u~ûø×¾HïþË÷Ѽ ’“áhx¤cpìÈ’Î8«µ ˆš'ÐáÈš±º_Ö|éÆä/âõ åBĬsˆ’µPllyØrQ6kÆJX¢Š±uWŒMo¥¼ÌÇA¼h4êT^)Qc±ž…i¶Ròz,^ݶáTã ç�`‚_uÕUtûí·s<qw#p«ËÝáÑ9Öôg{¯kÜÜ]T/?QÇy÷ÜV`û•½ß³Ñ»ÇäzV Ø@IdG¼ #½^ùJû÷Ë»ß3Ñedƒ0Ï(q«jèðÙcÅÙY3ÉÌ3©bÙ|šfZlì@ßÇ_ŽÇ™ êšM¿p ‰ëÖý¤eÒa©0êÐ>“SÓLfÂGÈ"8HšÀÈÃÃÃc« Ã8¥Ž{%ˆ‡‡Ç¹F¯u®k ×ßû­íW;ž±× ÖØ8ê™Ýy;Ž%£çí®ìØÖ5 Rn -2&*M؈XWœéÖãÌHV4ÇÀûŒu8ÞNdWñ<7@žžâ°|NXDñ½ OÚ8£r§Z¬À˜œîÊ":ÓÔ)Æ™]=PrZSº Ú08ôGjû ÒDceg Kc½y(pЧhŸó$Û[¯Åž,âä=@ÛãÓl—hÙȬv+S�ö@Õ(Gjb¬’D×g܉Ixïõºofé¼n°’ô#@dÈç[|oçº68ýîFèÞD‘aIÃ裹¶ÛyʼcжÛòJ“ì šŸ=MÕÒ(•Ê£46^3:– á T&&FijjÌè«ÜW9¾96¯ÔªL �ùcp’&(!Q yBÊÕ­¼ü?m,òí®f%ž·Ú­á7Aï#a­’ ¹…ïCZ‚œÞÍ–)Çtt`…µHÓºÖM§ÕAìX§~æeÂ'7ºérõX[t\÷Kõ€&rily¡ZÖ>qì}àã¦ÓgÏdü'Í Ys‰ìV3yÝ¢_#!3’¬‚$¥díHþêoæ¤-ÎB“èŠéÊ’½*Z^É„<!ëž,ã–ÂØn`A2¼¾‚GýFdÓj¶ˆFG¨j>µ‰q¶ßqˆ‘fLõ…:­,.Sc¹Am#WE­6_é”ÅT£_ÐD”íO°8ÀàrÑEÑõ×_O7Þx#={–£êDb5¢‹á¹“„Ñ)l-š†Åz j½lúoÑ@»eÕèUW˜ê…¼B$ÇeŠ»]WLŠ~£ÙÌÝL)kQz¹Ý‘,ă4 ÂsÌÏÏÑììCÿ†p+n…«FÐ¥¯ìšÈÒ¦´Œi¼è¤ÿ·Z­¤+@âXZ^âø¸P&Lå-¼VTk£9WGR÷™ìرƒ<<<<¶zñÃÜëááá±(RÜjôZ_öBÜÕˆ×ÖQ?v“‡T)µ#Mb8Ýf¢» äŒõü¿Zïb=55Åßm¸¾†Y£7áð“Ôæ¥ýqòˆ³°„Qd»pE/é J°€kùññcô«ØA’9m& ÖCŸëKO‡Iãó½‰R‹rAï6°�Jx¡M!NpÎëÄ™R.-×:60§®­¡ú\¡¢4,¼N°‘:�!…ØöõQJè é?¸Ä­7ÛV†¢žeFZÕR•Fj–4”sñ1\é Ò&ʼZ#èò{J”Éä z“8Ò»‡èŸÝ AúÂä—˜`a=yâ,¼T /íÙ½víÚÃGFG«i(U„î¨VËIH2+Ç‘¤èNúíuËY„s§“ë+5Œª'#8C°Ò>Â\Eö :ß±žõËv.T;Aû“,4Q£;¹£H/8é¢W¼Ü÷ä…Öñ‘(\]4 ›Ð\=½‡‡‡Çz¡›¯Û|µYɹ՛ù±°´HúÑ¿¦»ï»— {Ô;!+Äa¾b!Ì Ñ ²7§ë�$!áTpÖ5B•µp(âì»è:š7Y—¤ä ¬mòDˆ6ƒ´ÌAX²rk`½éËf�‘um»ÈŠ£6g„ã.Äk®48\HÔhS} ¡CZÔ6r•Õ'Ø‚I”)ðvšy<Áâàk¯½–žñŒgÐÑ£Gé¶Ûn£»ï¾›Ã'Èn |ð=ó1q,"Vži˜­‹Ik]4 "€¹ìWwa×[t¼`+¡›€^¤ Þ¨ºÊî5!: Þºß ºØ†Âvqq‘NŸ>Í *@²ÀŠ)QÂÚ eþà·ôõH)®„LûðÁµ\’ÅÂÂ"ÍÏÍò1¤ ¢b;ƒdÁíGaa=tøx‚…‡‡ÇVAn!>„1BÆ{õ†&÷#çês äÚ2ÆÑj%ÞÆÉL}'Öø0ñÞaÉùÉÙØ†Ï“õ¿6¼¹s ëš_ÌÆ*Ì':ÜàÀ¥ àűlŒƒ#´°¸L¹[ám$XÃZOïqØEë<­ª+Ǽ£.úíc 2¢ +·E™Ø_EèwÞ+WÞ&¥0)[`ÉmV9f•{ãó2­ ®¸t–ϵœ%J¼|è§<æB-42¤¤ññ^)ÚwgĹ¡\áY†÷_«¥FWêT,DH€È¶ZRng™ƒžã{²4DÕÛ=ÏÁÆ”¢ttÑ÷v´xç¹¾^Óƒ’4xŒNIkÖËÐþûéYϾ†ÆFG©T±áƒ hO½O$I…}ÔÒ[[/”Û3Ð]æ%n§c¢óäs’;FÔëÙÛÉWýÌÞ¡ °Ÿ]Ë’ïÛyã±Ðúww¼vuóÛAßîáá±ùPd÷ê*‡*rعЬn©>ò¥ÏÒG¿òyZ¨¯¤ç¢„ÙÖ3´k·@þ&27ZÃH׉WI!a$¹(2pœx$Äu‰“NëE>!Ø‹ü—æÇÁ‚ºÞ'¬Ì¤$Ž ²åMFìµ¢dËÍטÂ1!„ ÙbÙ“u û[·mlxØ Ý¬ãÓàt¡;€„ &¿v™‹¶Óä çèÀ‚Ïž={èÊ+¯dC2?ü0}ìc£ÙÙYZ^^fv^ 1LË #ÆiuÓqí"ûC€þqœ«åÅv¿KyºÐ;ãÿbÁµ›"UçÃnd”ÛZ=xº»sÝó›u€í†açDág!2ŠÚW_'ñÑ»ÓÜgÅÜü9sÆôßyî³KKKÖ%PzÀ¤"!UH^øAVúµ0ä>¹^Ü!/x¬À{‚ºR*Óôô“$ªÕš*\uöQIGòÇ;…ryxxxl5 Bª#>šd¡´^‘âáá±Z`&$Xû½b•�ëös©(‰b %†˜xkɃ#N-f]]’ñ]v%fWáù`­‹OFâ§‚gã¤î¬÷q^ÖÑí$nêpÏ3f×÷£#5š_X¦M‹ Ù6¤÷6 ë!!$»:ÙHÄy„q¢\ÿ}¡RBDÌn_#kdMË–ž¯c½ä*Q«ÁMFÛ1ð%¡:Vc.ņú¼q±ˆ p®ˆXAÎàÞÙXG É¢wb1-/-Ю»’VG? “U€nfe±‹õ6´Å¢.ð^Ò9­žÀ0lûö{&î9=V®¾ßÊÜØymÉèÈJ¡Ð¡¿§&'h×®i›ÖÒ}z•m+Èpb:©/KÛí8ÙçYpÍ�éeM£6¥çT¿¢l£gû»×_³uƇô'ѹ»ýCë¨]£¦ïG×ިDZѸä m»Ù”0E{ôèô¹oÝ@Oœ:ÑÉfHÈÚ–T¡HåRJ¬†{.û=NHöÖSb¹i‹VXÙ… ø¯‹ö€Ç<cû;dmÇ DÞLäBaÎÇI˜I¤gŽÅ¥dŽHlÊðº†sL,@¬°ºgümG-jûˆü,Í"ÎÚ"#%lox‚Å9„^ÄÙ;ð<Hãããôð‰²ÒvxtD˜e!¤ $X<‰ç mÄ2Ž¥qwɾ„î&wÀ³®+i9ñ»¤õúÚ¬Nœ:IŒ^k°wzE¬~WPÞŠäŠ"å„®W7BÊF– ~!ýF²„ÂT÷…4®R˜íæ‚" Î&f€Ñ!nde¥Î^+@®À_ôx“ÀßZ­’#NH’üú9'D üéß‘.ÜãW™Üס—YwI9u[º^;ðÁ{æ…­ w•qcƸÑÑQŽÉìááá±@¸¬íúo%õR&k¹ó…V²¼ÜÎâ;ˇ‘ßË-}”´ Ì B²Àœ€u¹&¾÷3¬e2±RGµ‡+kLST„ NѦEa½Ù!”EÙ½k¯{Ü$ròFˆ-C,/óN¥T5&2Q“ÝGAʶHèaziLaždÇ4±›WqáÚ• ÓúrG P,k%o’4 ?œÞ£Z­j »Í¾žÀìæ±ÕFREiQãnV÷>=ünú¼÷‡îç³õìP¶ê5c5ÏdbF¯v²z¸Î{j#53VRJÊ!»!Ĩ«Â½˜ Ò­|nÚ[V!??¿´ª5Âû¬e˜IŸ5ŒG‹6+åÚ<Ö^¥ð¿C° z‡ ¤v^Ðö%˜zô‚ènµîÓÕ½‘Ò¼^ÔÃÃc#áŽA¢+€œ*ò¥ØŸ�m‡Úl1õ«7}›n¹û&P"å<&!A@J(Á. rEÉÚbá=¢ÚPf$›;-î C•PÓÚ³JB>’Y‚ƒ”‰ÿ*’E?§9IÉ®N¬û &X´cÈþ!“)ÂØ–¯“ÍûøÙ†\ÛârD­¶­ür€TÑ4ë¦ÐCâvd5º„­O°8ÇÐ :é3ŸùÌ”à�À½&)ô�„€0�1˜kaßa ²„›óž-¬ëÊ‹’žì\#¹K…B]'#È1få˜ÔËe¶¹ußìèVÖ~ÊÌT¼Q +“±ã\þºOÙ}lvfžæ¸ŸÍḬ̀B½Õ²äéoÜ7@~@@’¾ìt”¼ñW\ë6b÷Aæ<<V ü†bxzzºÐë„ÛG¤Ìº=å]‘g€rzxxxl5¸J<O[­F:¶€v>›O ö;>““ã¼<yò¤Y»5¢…%wµ|Ë(àÉbðhí[vSID¥Ž3Y!óá¹´Ì:„;×›ÜÀy%óLe2¦öp×È®júÉØèH𮨠§‹^}»³¥O&r¸üÖ¶6£”âf÷üþ$Û±qmgÃD¦e^˜BŒ'ðvmVX¬æáš éÉB"˜¸"»×˶I9»äºZyx-rtˆq?¥Î˜w§Å;àÈÙÜØ¦j¹Æ;Ï¢UÊúB’¡¢ë<vÆñƳkòïDïü\àjŸ¿ö4p>!ý©óxw¯¬P`—ʲv·á@j#•l|ˆ»¯ë£8ïáÂͧW›lN[F8Žž8AÃÙ[Öxc@äø²(êg=ûž gU´‰ÊÕiÊñ˜:Û_Èq<ØÇ ô=«ÁFê=¶´>´ÛúÄí«¢7õºõF·9MÛ„\»c¯û6P·ŸxŒ¾ôéäÙ3¼^ëXñ²-­dC¿a}W5ºØxC+»µ´mÿ… ¹„í¬¥lƒ<– Mcïm•(jÀîÛ²Ô|xƒH¸”VRU¶Æ0ˆdÁ!>ÄF™,Ó£@x™…ý;ÆVŠ c»nápˆÍ<Í)y&¢f£Ú©Ûm«Cx²+�O°8è¶èÉâ¶ÛnK ÐÝcIÊ®Ù-&¿1¢gJ±(}#¡ô &^*ä¯Ý =`È5Rþ¼qÜ~´q^Ò“<ŠÈú{‘`°_À^$ 9_Äzß(ȳԮ–\¥·ô9€h³°°@gÏÎÐÙ™Y&<¡¢Å®~ìsÅ­}æyï(Z™+ýÀ­·¸y€\!»î^^´Àà’Üßîw¹Gþ"<‡‡‡ÇV…ìNwk/ABÃXéáááq®cþáÇٻ™%à¶Ò5 °VãÙ €‘ÄŠV[íµghpòVAÛÔh…Iñ“”®vVwÌ ˜&ÆÇ©fžÈÏ=E*¶ ŸŠxK;{†•ÍàMizjœ6ësÈ×' avÿöRæûº€ƒ¹ýi•[%!B>¤”C{D€U¤e-YJwE;0}ÃUúm¢MÕÓƒÅ:c½Ç•FÃz¯û¦›x%­…¼ËBƒt«Ú©Dö†QÛ.úûöl“n«3Cß±¡Š3 Ø%òÆ÷K3îšöÖVf‡´0¿DÂß@ÙÙéž[M{)Dg~q§W€¢krÏ(Èvš†‡Ç Ð†K—ÄVt‡‡‡ÇFAÆ¡¢ã[ ¨¼3|ë¶[è{wÝ–;'ò©ðúP.Q Þ#Íßrµb¾[³{jŸ ²{ÂR™J#*תT22;þ‚(0ÑJƒl˜(7.¤v½‘‘Šã Y—d„¶9ë‹nbñ|¡ˆø ›^lòŠì5 ø3i¿°ç „-! =ÚuªõPmöfѶñÝìïÔ &uÕElíµjž`qá*—]vÝu×]Ïg»c(ymRc²6®Øs`H1:ŠY f½[´ùZ»kÉ` ⃶H ŠQ(JÅ;†å n|¤Ì’†õºa‰Ab`ƒ„˜¥Qæ /¶Shƒ<%ש ÅT¡”6SÑ"0NÏI=’lÎ \ªÛÄQÄœ×÷w,†Ýt„²Ö§ šh£I®`Ä,Ñ¡Áý`~~žN:EKËˬhBDÿá°4Õ+LÅÛ ž¿ý!EÕ!Aâ8s …>&¤¤»¸¸È„ô¯;wrØ(†µ—~7!´ˆˆázµ8pà�yxxxlUÈXŽñn¬§¦&Ùxæáááq>R,Öqss éškà]q"î¬ɽ}¶ºª¸›"*9Klp§†ù3šåH¬qÞ==Öè»wïfÏsXwcWL£§Ùµímˆ@=ï § x~šš˜(Ü¡_$Þœäê;©Âi§`ÐkJver½möL)ÂŒ(ĬžKÉiZY–-¬×ƒ ÕVÉõqrÞjÁâÞžèû@¡¡|]hqA^루 ’#–`‘ynéYȵ«ÓH^¢¨,Þ<$ÿòO™ÏR¾¥{@ꥥ¥¡`î¾µ\÷¹f5eê––›n¯ëú“a¨0t‹sU’Mgw ÔßL‘7XÊýé!;çîOûkL¼Ë‘ Gãæ +2H—^‹t3*´ÓAe>‹‹Ã,ï˜L<W¤oT<Øû äÚ”=Xd!——éFÔ—\Ñ¥˜6mZ(¯Ö¤µ½OO&è¾ëê{‹<¯¸÷xxxx¬'ŠÆ•¢ñi+@féG¥/~çtêì*å6ÿ&‹‚ÄÖÉëº È LTØ“Ö%AK®Nä�عjeªŒŽPmbŒF¦'it×'UŸ_0Ÿe Œ­,WØ3 A²É޳‹Rkqº~‚~O’…¶W’³²c5GgÙ(LlAb—eÏ”l‚dóGÄáBxIEÙâ8޳¼¶ñ”ã ›pñ å¤5XçìÚ8ã´œs•]0XãÒëÄàl½P”r›•J5MSv‰A<uS“ëul7`y9N_Ríõ¦ #|ófÁ.sR2¥^Ä`¯C:ˆ[[yÉ-Y$ïžVØû’gV7Ê•SÎwÞ[|®E Q-@÷R&åå¦ç²‰¹Íã6àùrÓÞŽ”¥Çùøzn¹tƒDBä‰Å¥e£Ÿcr>ð&þ$}LÈ7ké ú™…eÓ>…ç 2…þàzìÀFÿ‡G í5E ÉRG݇5H“T\÷S pxxxxl5È@ÏÁ ’…‡Çjàkë ô#„uk6[f ¹¬áÄ»Boĉ1eÕys" XV¡Ó†î Æë—`-ÇòeÀN‘RjȳæZÓÈ!æ…lÝŒõ;ÖØX[ïÚµ‹N:ÉëzɃó‰-ÁÚîxé ÕÈrf+Î,†d‡ññ±™ «‹6Z­O»ö“ëâ4.FwÃU7yp¸ƹ¯Aj• 3ú²„ä‘W<% ¸¸¸l'œ]«oû+zqJ\Ó½(颠@çÞtÏÓƒw•­ ÜÙ3ºæ9 ò²°«À†”:ïk¶šýIëe€¦‘ŸK¥šùæzel·7P7 žrdݘíÖÃIœ(,‘B¿ØÝaì˜Åq¨r(V^÷ÖgtWlsþiÇ÷µÁ"H®v<×í,ßÜçÕ¹ó™ ÁLÔàùû²÷Ï9ë´)!ëX$ù¶ Õù¬Žúñbbï·åÈt3‘ík1žu¢ÓK^†R²ùI2¨ýʨòJ×»wŠ2Ü{­½žïzŒå¬æj7iniÉÎo=6ÝÛh%æ€$>zz.Gªé$Üt¤%ï¼¼wze”ãÜëú¤§çèUa`â¤ÙïƒÀ¯åŸÜV§íÞãááá±ÈQ‡]nÄ6ÄýÍwÝAߺõû쥞¢t>·kÌR`Cƒ„F&€WŠÒh•Jµ$Â�ÂB¦6¶7¬Äk|0ªc5ß=M;/8@{w‚™@K§fhvfè¤Y7¶ÌÚ£nî/µ(2ò>dvq\É¡Ûd Z·×£­£~rBdåË@ä>^.F,ƒðï8Y[¥+3TJeSVS˜¦©o)¶d xÁ„=QÖÌa²fâp&IŽÁíð‹M—E¡¥ÔBTa^¾ã(®4ÉB†�Úk»ºäÝüÙ‹'Š2ëΗÒ]°’¿¤« ØEtÎ+ÎÂLdÞ5ˆ•y¸J¾3ôKièN+r†y©«v-Œ:é¼¥L’ŽkØ—p¬œPaMz),]/"?¸×÷ThõTeé˳Uu½?FXzè6ÒT±´´bÃ,.rHx¯¨×‰ÇŠ:§öGßÀsqû¥&¿Hºº¯¤ ÚÄ­0ò’p#HÄ ¸ÁDúšœ3Hê~^ôlݲðŽááá᱕ ‰sbä‚çŠjµBÃÀ5èckÖ]Xga8ÖyÕj`…ñ^ý‹»âúĆq°…¹¸æÛqá!M„ÇÇ’ö+é:»ß{î´åo»m]{‚í’œûóÔøÄhΔ•Ùãõ™(â~F©@ŒÛ§ú©‡C·úIó{Ó îr,èwÓFÍ'“Çz´XÐñ}e¥A-x mGNÌnT•j‰VZM›F‘ß¿GLѤ +ÓǪcØïQj°ß¸¶õ�òúœNƒ¥lêYÍøÐÉ ±i‰ÞMT:PÎW«– 8LÏ—±ïÕÔ‡*E›XGXRËà÷@'ÙlEy0¹5oú-wŸØ#ôüWøîw)K¿>Qx>Žy O4 (Ȥ}ÒÞ²†+M ™[O9M_úîtja–m˜QÂ/¼f@бwVü=R£êø(…•šF//yº…˜B_²ÑÊFF™§±S4¶sK±Æ2F+Fþ®/.Sya…ecû„”í¡íœ 0]G `“ìKìÙº2É„ínÉw$Ä6›‘;DoвkZüo€ªH²Þ‰“5pLÛgýâ › X�zA¯Éú¼�AHѺ¦aá-Ì^>!D௄þÐ%‡xÆÐ€X‘*Br^äDŠ“kq]Bº#ª%N…‚4&‘9§½#h’¯ MRɵ….2råúcχ©'Îsüò7O¤p‰ƒ ´E ;=êgªÏ÷“)]Åœ[GJ¼T ¹ý óó47g?Ø¡âÈ08Å8ºÚQÐj"‹&k¸dé«r}gyy™ÿâÙ"ü‡Ýy]c‚§»ܰ5ºíÜ(º¿È}ž`áá᱕PD`³FÌ o÷X5ÖC�óð(BQÀcÖ•p³_´¶Í#pþ®áᦿDÛ®á7¦lí £ kxYkA˜{)‰¢G¼†6ϱÍļ¼8@)á¹Lãã$^#¬Þ&N2DrÐZÑMQÓ1Þ¥.\44É"°ª¢ô‡S¢^ýû|ŒÂÝø%bï_í“èf u Ö«CÐåûú¥ ’V}¥ÎJжZsu¿ÝöÛ ÇWnª4{=Õ¬‡vêð;ñ,“†%ÏýI1§“æjó_o¢Uqúƒ\ÙA£~mÞ+Oý=Ž3½ì.´:¹d\Nâi³ÇÙÒ`¤Ãþ Õa³ˆVÿ4Ô-ÖƒE½í±èÉõŒÝßÅíBäËîYKßUZ¿Ü¨!ñÕm÷ËÆ”žYù%½‡‡‡‡‡Çšá®Ï>I7Þò= Œ\´£ü|MÄ^+²õHVªU©2ZcÏ8Ù‚÷Цù;“·“¼ù=±Ïâš•…esߢI§D+‹ËÔXZ6÷5Y&‘ÕD†©cˆ–6¼HV,mI¬üñ(¿‘= K µö\c,Y9“ëÅiùu£õ×m=x‚Å& Ïaâ&ÐílB¤#²>®=UÈ5úœ&aå á0Œ#?ëŦ©]ÀŠbA“tºöZëúo ØJÂ\âO`CzÔªÕÜ /u¸*D¡¥I"êÄ%xéC—SÒÄÓ;Ϻ-rä‹ä{¨ÒÏ/(ULé`$DqÙùLsÊÏbF7²F~@Ïïæá¢C§´\M3È…f@‡÷ˆ³gÏrLf!U@+»ÒÊå »œ‡‚\³È3r 2rN÷7ùgRÒ—ò¢#DˆD.©B?ß^È)„ãÎ:n{kˆE<<<<¶ Üq¸á×ÄJAÑÔéá±V ?aíõ–õ^ÖǃEºã;X³Íâ~Û¤S"ŠãíÛ¯]Š{4¡A°2³õv5Æu[ƒóNÌ=í,DÈà "dbr,³Ü‹±²€Ü°FÖNeS¬úY\Üçø–N™"ýìÊÉÅsîM ÂMÔ‹LÈÝÎw2I³‹l»Ztö‹õ#e¹@>ðä¹ïO‚…Ý´b=Š-ÑàeŠ39=È+­B!ìôÓ‘ûá±Ð:AœX¹»Žê:9T¤r•õB:b=\E“í U£‹ eõ“ýyCÞ¦]—ë-;F«ÃAJRèœEöë<§(A.›dÞ z%ÿÌå{œ13ºÜ8ß‚|*p§‘=<<<<<<Ö=o×½ì· s,K#Ì)Ç 1<W˜ã¤R¢êØLSu´FÍFâv‹7˜·›m&WD‘µ½"ºg³aìfóK¼ñòöâÙYN§¹¼B‹³ó´2¿H­•:çÅBìPk€8¦Œ€©Â€Òçsâ4ÀÉZ£a~£:¡~l[–ÍЗ»#y’vî�rkÂkè7`€v½CˆqXC{©Î,ÄÛ…6‚Ë_( ÂÔ•‹íìVä÷9½J‚(²ng`hG÷Ç_Mf‚râ~6Ì·£¨’ buS·§#Æ÷ Å\’+tÝ\b‡=!Ærü’…E²{‘®u-ˆãh[ÙÑ¥½`€ü]:|‰´!bb†* I Ú[¸éÎnçNÝ/—°àîT–¿%æ$ý«ˆ2®"KgP„ÿ8yò$ÍÏÏ3ñA<J༚”JeÞ}ƒ £ša4 FÊç–Yž“tÞbnDÜCÉ‹O‰]^V ÛcPœ+ ºåÒÄ [·ì‚‹äõVÜzxxxl$ôBY\¿cw¸‡Çjà*{ýœè±€Ì�¹ën¬/S1& bX­:@ö}FB„lLŸîGD8—ÐÝHÜøŽ5> çjµÖ!Oö"U�2ÿDÊs…›W?TàÑdl”eŒf[v⇴©-‡ÒšQÁX)v¬ids@™ú…´-:ß«g‡qfž„/ÒÙ·VÿÞôêïÅy­Hë¬f³ÁÊP­Ó(Ì'ŽRÙà~Q…qʬRÔºËm§$ŒLyº‘ˆã|9}Ï×J Ñé úW7cüé¥ü…v¯oÜ5­tã‘RzK l)JI_À“¯bƒK(|šþuÜ sÒFaX29ëÎR‚EFtÑý9#Ñd÷hô" [RE²Ž ²ëÝ2¸(Ò¡õƒ‚t¬MBJµ?Ò3ëõzxxxxxxd˜]˜§nþ.…Õ2 "»°à¯5Ø{Èeö\1:9Aã;&yÞÁÄ x°ˆð‰Ìú¤mÓ«Ñ[Ô­t¥AK3óLÐ(aã¹9ß\©S³Þ ¨b†ÝäÀ„9@¶@° &ËÔtãóÙéj7¶Bë$-¸ IýáÉBì“ Cg€OPJÖC1å<l’?¶ÑÖ,6`|†wìðï&,‰‡�1€Ëu¢³¤ëÝA›-¹"LÉ�²·º¶8Ýi¥hf”¶ùÃ�ïQâÚJ2!bh2„�1pkˆ6eõ Ó²ÚP/DICH\âØºÒrNvU YD¼WˆŒTY˜ªÂ’�QÚ6¼S«¥Â>â©Aødž/ìBr§á"#_”rÏQ?¹N{ß Ø÷Y»díÜh“„õRRþ«„´3ˆ.££U~–L6 ó¤ ]6)Ÿ<cio!ÈÀ;ˆÈåß±cï<Àî9é«nÈIWסŸ’@úYÑõZ¸tC•¬j„‡‡‡Çy†Œé2/b­àá1,\åë s®‡Ç°ÀšÏºÌ·†A-'tø×bB„·Š €ÂÃÈ;QHyï«W2hh™êü£»‘OÖÇ ;cmŽÆ º[ö”°Ì$w;<»ÆGÞ˜·°G×a£5*k78½Ï¥ÆïÍ”8Rß¹~èô¼i½ ~çêýCxÓ:oЈ ë õ âÁ¢\)'×ZÆ û#¡�D…ÛwÃþ9ýKë6V×úy È“Ô$ÛúÚáÛDøµ¡ßÎ]ö»$ÏÞ†BuàIŒñ±áu71,šö=J¸|k7rº&M{‰;õPz|è—on,)̘¬[nÊQ|Tú mÊ9ÉÃÃÃÃÃc+ H7ÝëìÂÝ|ïT)•©5RF²¥±ÔÀÆìr­LµñQÝ9aþŽQËØÝÚ5WšL’€gx¢`{#ßÏ j›5K–lˆ‘Z…‚r‰õL¼…m¶:#gæºËÖ‰7‹Ø¦!Ó¾ØÚbëjqÕb'”!ï²-ÉyÖïàw²f Ø“¨õ�X6mÅla!£äÚwi{ mx‚Å&”`{÷îåïîî|1*ËK£Ã…h£ºa„�à·$Mw7†2®þ…Ì  r¯f”k2€ËÐ¶Šµ‘Ôè.Þ„ œ¢tE~.¹$O¨Èê§ë©Ë!-$ ñì¼àIC <qRw©3¯ 4Á½O’'¤)õ)X—KÚ°Ì åŒ„¡ÉRM((bÏKÙ原 ïÉóÖD…4­ J #ø Ì­V“Û¶aòzÄ i7)PoFGk)áA÷]?6F®2Ò=uê·ž/€LMM¥Þ*¤Í¥ìnŸ)êGÝ€ûÑ—@D:sæ +>ÌyiBx<‘88/Þäáá±U‘y_~»ýöÛéCú½ò•¯¤ë¯¿>wî]ïz]rÉ%ôOÿé?¥û￟~÷w—xà/1'_|ñÅô–·¼…®»î:ž70®Þpà ôÛ¿ýÛ|?®›œœ¤k¯½–ÞñŽwÐøøoýÖo1±í×ý×i£pï½÷Ò»ßýn./€9óÈ‘#ôó?ÿóô¬g=k`7öÝpã7ÒW¾òzó›ßLW]umU¼ímo£ñ/þ½ð…/,\ƒxx¬7ÎWÿjoŸI-CmæwGË%²®Æ8^« Tî¢úA‰Ã‹.ç^°4j4bä…¥åžeØ\íšÛ"\ŒMdÈ%ßæE^W 晟+ƒ?ú»Õ'dƒIWBb²&«2¡l¸º$ßH‡Ë bVÓª mV›×êð°c–KäÚõB¾oô¾nøñ¢?©Ëfwͳȑ±Û7º‘YõoÑå´#›fZ—8ÓKy]|á>hîz=Ó[Y"‹{M—÷Yï¶ÇR:õ½Òë•§;êßq¬é‘Ò«žGáááááá±ÎÐsµl ^1vijó³”Ë™­1¹>²3™ \«Rul”F¦&¨<R¥¦‘{Û+ÆWOHÛæbö Ù²ž'8ýXm†'Œºµ›–ÌýS‡ö°GŒòÈ(5—ë´tz†7+ÀÛ¼``qÃ!;”‡ÉõZ—g U47<G²ùÈ#-cQmGÆ.×xó9+f”-w»Ã,6„Œ ž�½h×Þ'tX ñ* 59÷Àà cˆjÒ†x§%/ë @ÿu¯"ÎÁè-ž$¶”I{•@:µZ%I ÷”Ù€nw¾QêVX3¼ã¸œ+ƒ6¢GQ-G´\H䇬™±Ÿßû¤,ãF "”‘–¨`ÛYòfwÇH,ñ$¢ŸK .O”s™‚BÈ%BLÐaJìïL˜®TÌ`œ„sÁàdF`v%$ž9¤< 2,¯¬ÐÂâbê­Cê,íÜl¬p}4áddÄÆbÖ^;¤ý49E¥ý mŒ#ð\û§§§¹LB’qû¶&Wè¶ÂŒä¡û–(ˆÙ‡iûÓ§OÓ‰'¸¾¨Èš|¤\]à‚ .X³±ÍÃÃÃã| “5ÌÂ4s‡Üh´h~Î,ò[÷ãøòRCåCôº×ý(½á oà1þÛßþ6ý§ÿôŸéç~îçè'ò'YQ‰ôöîÝO¿ök¿ÆcÿÑ£Géýï?ýáþ ýʯüSÚ½{ÍÎ,šù²¦ÊÐzïÆÃ|[«ÒÛßþ˜�‚9áÓŸþ4ýÖoýúã?þcÚ¿­ÅfrâÂÂRênÿÜ"yVZšYe23gS’©‡Ç¹@”¬‡û22ÄÔKî{Þiÿ‡ð¿Ò –ÛUˆÇú¾lÆrÈp3jÖµ!vÂùÑü­OmdŒÊ•45@¾(UÍÚ|,]û!R»¨ƒ@\‚Rªø‘µö° »Æo³¬w®Ék2ÈÇÌW]CÞxl6D1ç$Ù6²wÓ¼KP¦6ï—€«CÉEÍ{‡ˆª6ôê0rfÖǬÞ@¿›VaiÏY bXõ8·°c“ÝkhŸCÿëãdg!àê8Üà 5Œ.úè‹FJZËz·è=†*LQ'1÷÷š9‹*çҶ´ÞÝÆt­«IÃNÙ\y<ÖÂÒ"½èE/Èvdöl›¦£BªÃ;-ÁUuw2W¢;©BßçÜCÅú³Ü¦®¸8DH/²EçùRr u)W`ãœû)ÉÃÃÃÃÃcxîO{àûwßAáØˆµ›-Y5ƒÌ×å ÙXð¨#5Ÿž¤‘±QÞÐ bEc±AÑŠY›Ý)+Z Ýf¤ÌÙ•¡¾Àœ0qc%šÜ·›>åröŒqìŽÒìÑLÖ€ ^ „IÙ¾Uê\³DÙšPËïlƒläná\`ËÕVëÖHùØ àq¯•µ {ó‡ü(H6¢=DPfrE%^Ù»#¾Ž”]Ñ®‡iÛÁ,6,Ù Æë^c¸x£½@/âå¸Ë®–ßbàƒxÆÐiK¸1të€>: ‰\ë’E4YA‡‹Àw!aIC\¡g†¥LÐ�†œ×Fzñ’€ó”K{O�`’ð8.ž.$"„ü€úkòŠ&ˆÈ5r 9”Ë™æ†&Ò†Ô[?ûŒl‘oÃP BÒöÀÌÌ ÿ•žRL¹Í£65жšà!»uÙp\È*Rg\'†%y&øP Ò_vïÞÍá@äÙj’ObU^Ý7¥M¤ŽrÄ x«�±B¼Tàá£]åíÑå€W o\òðððè x£¸òʧ˜ÏüûyÏ{]qÅåôîw¿‡I ‡äã˜W޹˜öíÛË×bÌýŸÿó}ìa‹lþ/&îaÇ\kçÏ MLŒ§ó[³Ù2k¡ÅtžçPVEc8悃ÐSŒ\vÙ¥tÓM7Ñm·ÝF¼2!„Ô9L–Ìqð~¤çœCyP¤‡óE±ŸQ®ùù¹4ü®_\\âxí–ÐZå2ÛûÏž1×Uy0I~¨;€r ~˜«ÑN³³³l …A`CO£I£,¬fîŸå¶ÂZQ<”éò☤åúäÄyxliþ…8¶öõ™%Ð6&W�vO »ËlܵÈd ¬Óe`̃\„qV]¸F ý]d1Y§ƒ13ve íÓüš|p.=Wd¡AнQ�AëžÝ«¿¹ßM«ð‹9Ä&Bâô34Gp…Û¬Sµ6¬¢0È}Ïö©‡éÙR,Þ2­_Î5Šä_î®ø­‹¬ Üueß;ckÆôž"ƒxÑ9M È?§bravo²!„ ÎX­^e³X›K§îmÕIÞ±=Ö;)åd2Å£¸Q»Åó4˜ ³Nm4›©÷Õf»Îk×F½L;wí£GÓ`ƒ<· }ÜÀ••Kt„À!÷Ù˜ãÄc?G*n«¢?ë=îw<<<<<<<†€]&Z2@èð¾øýoQÙè!›õFþzÌí%cÃ)ÂÈÆU£ó«MãÂb‚\atKu#'4-É!%:€‹`½OD‰¼Žc i„•¦ï£Ý—^HËggéñ[î¢vCmôJŠ!õ$…Ž7,-` %Ä .G²Q;Nê¤îczq ;yÆÔ¡ã ¡MÂ’%~Éu|¤lÒÛê ›èdP´k‚EÑb]\V´$„T =‘Aˆ büСfpå£Ãy�’ É:D†ýa�\š !„ ‰\D<aÜp½H™]‰«$´†šP¥mw@¸/"RV׈/yâ:Q6¦ù:¡5Ú£•Ô½.”+l q=cÈ=øm=xTRƒL¨Èšñ%†"Ü]’|‰òáI‚ {"Jà¤å¶ ÒC¾åÄý‘<;C<g ¬ŒÚµk™†uc©I5.ñGÒjpX“9Nž<ÉÆ"\‹zHßRL7Å’¤+iÂh蕹ÃãÕ¯~5ýïÿý—ôùÏž~ög†e e‹={vó\$á¨dŒÄé®6¢x>ñ‰OÒwÞÉkõ^ä…/|¾ïëôï|‡>ö±±×"Œû¯}íkéGôuL$èÌ-³³sœ÷DB,XX˜7y}ŠÃš`NÁ\ðº×½Ž^ñŠa¢Hù— [o½•Ë~ðàA>ÿâ_—K»n„ª¯~õkô§ú§ô+¿ò+¼³î®»î¡¿ú«¿¢Gy„‰†§‚°%¿ú«¿BOúÓèŸü“_â°>ú(×a:Μ9Mÿø'¸îh¿K/½”Þþö·óßV«A¿ôK¿Lÿèý#zå+_Îù~þó_ ï}÷ûôÓ?ó“Ç4ýÜÏý<½óïdÏ"=öíÛ·~ê§ÞÆùDQ›î¸ãNúÈG>J?üá½LÔxËOü¤õ†åáq¾tÝzIýÐË\"Â?o‰C»n¦Ä˜o· X÷â}†²E‡%Ћ9²5Ööð.yÀ]);qÛ²!BÚm¬Å‡3nŽÖ˜d‘*WkÛ¹4ôº²A÷ ­‘t0‰ápû)ˆ�k�–¹;N«õ¬¯Ý韇ÝÁÇ[äe4} Yo±+7© œ)—ª•ƒ¡ª&Æg¾'kdóÃ($ÛvÇXŸ´†5Ü®·¡÷ÜB{ýºœÌP>Lž½Èƒ¢h rß è>ì&¡sù¢h¯ îñ¼G†Ž;¡R;##µcsŒ +ØÁiæ$K¨Ž©Ùl's±'Ö¹¹yó·ÎÞâÊfŽ:xðY??…öïߟn¢ê¹ñ§âçÔkÞêu¼;i)Næ€Î÷ßÝpT”·ÖYöÓ§ BôñððððððÉŒÞc¼ë±‡8üGÁ‚’y¸dljU£3v²©Qsm‰–g–iyq™‰íf‹ÃgÄ ù“É í„p‘¬¡¨R¢òh•¦즑‰1:y×´2·#W€øQ­MÕ®ÐUz-Jô–·DÔåëÛQJþH mKþ°žÅ‚$$H”®wt«1qV씡]‹€ Ṯv²‰&!XHÁ9íÉ•¶ <ÁbA<Xô:h ©çeøÇ]Ži¢6®²×F{íÀ4Cò¡ÇM_çã\£‹ä) îD�.)Ј¾F<1¸ßõ± ȇTÁî›/¼<”R2ˆ”G“ä·Ü/ž<Ä}»”%3&±ó@ŽÏ Á²„8W/Hï “²B1Ì.vQBC~ Y¤éÖÛ1‹}ɶ_þý u¿R ê.^K`l¹܋ݷøÀÈ¥Ë5ŒPçöK¹mÀ»2vñÊ_F*éëz‡±®O&«7Œmž`áááñdÆó»ï¹›ªµüÒonn®ï½:áÅâàßz'eœxˆx衇xŒñ.¯T œ1Ÿè–[nåqDõþ÷ÿþßôû¿ÿûôÜçþ;v”>ó™ÏÐSžr½éMヌ¾ûÝï29¢ˆ`yâ‡?¼ç¦£¤ýêW¿ÊD€'N²7‹·¾õ­œ&Îá _0×\DW_}5ç}óÍ·Ð/ÿò/3ÑÄ1.¿ü²tÝt¿öµèÃþ0ýâ/þ"]wݵì©ãý¯ÿÅùþ›óoØãˆ ð¶Ç™sË-·Ð?ûgÿŒ=k`.Å5¨û¿úWïâöúë¿þúÃ?üCú¿ÿïß2sZÿá((¿ôK¿ÄdÑ¿ø‹÷ÓG?ú1ºæškسÕ_ýÕ_s;ýÆoüÏçü›%w‹<<6%‚n*Á‘*  (bzr¸Ò·;icG-¹DÖñvܵÞu„ØÝ3ŸӋE꽂e¡öPk~$5::Bã£çÆf¨Ã,¨¾•¯w—‚Ä=ÎuÅù#YDÖžb¤”²."¿NCá¹ô´±vÄvW}³•ÛPÒihµºªfÞ†§ªÔErI·÷$ë‹BŸˆr½í„·ºD-êôVÑ©ˆÖ°º^†X›Î¹~¨yü­cLëN²„f¯ÉçYT×®„ ]§ÏØÝ~A¢°Y¥Ï#,‡xåP·#”Õ–Ï-‡*õCï0"YÚ©>,fE;wÖó„݈³²E“×¹6Tˆ{pžÃí-.1¡d»ƒ‡. ‹/¼*U¶vÄÌ hkìOÒ”­(*8—ßФ¡Éټɿzô™ [|¤¯}ïþå¦Õ™gg“vÌ«™.T•ÆÃÃÃÃÃÃcU°2£K¨}øäQZޱ9z„Eë<k5²€‘u+ã#¼éº±¼Bu,ÌúˆCƒ$ë’ÈÆÉÈdçï’¹dÒèPÃÍ=EmÜ××Wä”%© ïº.^³Ú ³rbWNÊÄv4ØÚ¢d#=Ž·óaªã4µâNä“@®ç{KvmËz&¿VÙŽ¶9O°ØdÀ£~ò„&Yèºüo€x¡à-€^,qM2ßÚk…ä+rB®B{—ÐeÀq!7hoš ¤ 7-ÉOî•öqIú·öÈ!ù¶ÛR]Gä“…fŠ€òÖõ-G{MF*ÑÄ)»üFlM©¯ 66v«ìJ\"ÇpÒíŒó €D±¼¼˜Ö»´›YtÿОL4ÑB·¥„\!äìú…ÑFú’Æ0ƒcùÀx†P P.ÙHܵã½ÐDœ²¸aJ<s¸žK\TÞÃÃÃãÉ Œ±ßüæ7éÞ{ïVGCö4à^¾ÝÎ<l`�¢·A‚xîóžG;wìÈÍ-2—ê%õßøFöN13s–üQöþ�bÂmH”ž†äùϾ96RX.ò¾÷½ï±7̳(×Óžö4sÿ"MMMòý 8,..ÐñãÇ9ÌÒ†g ìœûú׿AÿðþCzÎsžÍe=p`ŸÉïyLüxøá‡y.üò—¿Â.ÞñŽ·ÓK_úÂ|üø .ß¿ûwÿ–žúÔ+¹,¨Ãã?ž[‹½ìe/ãôpè»ßý—áïÿý¿OÏxÆÓùxîø—ÿò_ÒÑ£Çè SoØtüÇœë…uÃË_þrúó?ÿs:uê“\Ð?ñ?AOúÓ9Ïw¾ógù9yxlN¬Ýب/L°ˆ’5<mW$5†qŽEùŒH ëjŒ[Z¾ÃX„upñ.Ùâݹ®l*[†�†~„;Âø½ñj×òœlÑ ¢Îc÷è}ŽŠÐù¾:×­ÚàÛ‘Ïv€U“‚¢]ùVFn&^{¥ ÂÑòòMOÝܳN³gyðná=ded¾•ñ;Œ­º2¤&—%YM¨ÛÏß:weHU·C`íe+"²äÏwëÝcZ'‘'Y©É.òiKH×aPd´'|¬K•ë±Þ(eÇûV3!P°nȆð€§9»Ñáý¦Œ¾*âsÍÄûè¨YÃONMѾ}ûÙóô8µ‘‘}¡.¯(áׂ8²sa;<4ŠKlÈžYg É<±›ž\·Fâh®Ïزôì“üßö3Vxxxxxxœð†¿sÏí4:1N­v‹‰!¡Ð°)!B‚’Y×UJT›£‘ñ1Š›M"Ĭ‹@®°2/¤wë¹"²rƒI£R«2Ñ´µ¼Â¸ŒÍú«—óÏnkE!ˆr•œõ:ÿDyx‰hòÇz4 8䈱Äz¯€PšüQß(nñºŠ%Ã@e"kØ„9!u$&iDìÆRKÖYq¶FŠãíéyË,6 ô‚‘a˜ÝErŸëíA®+ ³Ñù’å bà×éhÒ„öà ôÚc…ä!ä mЗߟ¾Îõt¡ÓÑЬo—|¡!„}ŸÔA~[ Y;B¸Ô v ‚8/ß+[?sÉ R$äY q–¨ÑÊ1„ÄÐh‰—†0ç•pNÂt༸–v—:ºp‰4šè néi+ ±BÒ\ äùHœx잆AL€ˆ¸œxáëu8!Xà¯&áh%‡~þh£acF{xxxl'€0ðŠW¼Œ^tí ÕÑ€þõ¿úÿõ½ÓˆW^i‰k¡DýÁ~Àãð]wÝÅî|_ûš×ð¼¡Çãã9¶ÄÁï}ï»të­?àcBŠy!/^ýêWÑ7~“Ãc`ìFøŒ×½îµ499ÑQ¶éétýõ/¦W¾òœÖƒ>Hø‡DŸûÜç8œÉ#<JŸùÌߥ޿@(Á‡9B<%>|8U\Â=ó¥—^’”7fÒÄý÷ßÏ˽{÷±b�¡éíÝ»7-Ëž={x¾±mdçÖ;w¤i# C‰ÿÀý\w”«ÁBÚÕz ±† ññÑÔ›È(?ŽIž‡ôóŸÇ¦‡•Ñ» Ú½Vžâ‡}9DpY’qÔ÷¾­ e8ã$¯y�Ä7$ólt•‹À†¶DN�¡\èú–4°,Æ™ —m÷]w#'ô®tçôj‹w$¸!H[péëâê´ø¹ ¹bê°ål~Iy%L¦‹|߇œN4 Y<H÷•÷ÉÀ*.Ñ0‘hI6šDœ¦‘êͧ•y“ ›¡1×C!:èø±º´z·ûå-óIçõBd z¤›þ¢žˆí;Æc©ºÖõÛEõÈžO§R]t[Bz†ç6‡íhñZx ;.A�äcxÑ(Wªjnjjš°—¨Ý.Ût «VÍúv§Yûà¸ãÐßTO¼ZgÓ«¬¹òÑÚ‡ûìö®‘¯{±þMî)J§°Œ]úNVvÑCe×çÓÔ}«ØcE1âu!mxxxxxxxtB¦_©e~¾ù{hbj’u†L¬ˆÕZ !Ë‚ Q2k ÚÄÕFj´\7ö´åº ïõHšx"c­‚¯à”Œ½n¤JU£»+Õ*!Ì'{1‹û/%•³àlš¥½.[‚L'òGe’Eȳ½´dÙØäÝ6ukÃÞÆÄ’8ݳ ëH]+CZ/2TI“‰‹IÛ ž`±‰€Î Aè&0i²&@È=ú#EšöÖ ÃcHr¸‚ÕiêßRÖ"¦¾[VI×õbhRˆ{½k ×BPWáÆIÛ­{ž ç¼f¸e×ùaD·„I(`´‘_¾K¥­5™C— Ù­ d ic·Ä—,¶%Š ƒˆ6ŸJ.Ö²x¯ÐDë # “¢ëˆë`ô`®b”±¨cïÁ{8 -ñVcˆ®g !‘�hi/!TÈ5ÚKIQ>RWDÖK‘ãááá±qrrrŠI�ƒx÷¹ýöÛØ›ÃÏýÜÏñoŒ«äߘ/>ûÙϲ‹¥¥¥%©„œ:uš>þñOБ#GèÅ/~1íÚµ“zèaö®!ë‚§<å)tÉ%—škOÒÝwßMŸüä§žûÜçtŒ÷»511λä€Ý»wÑUW]Å䬿á}!Bþá?ü9&H /Ì?˜Öàás̱cÇèiO»ŠçẆð&aÛ)`ïM¯zÕ+éÁ¢~ðƒLX8|ø×s+ÂrH›‚0ˆû³ºÇ9E=Ș·æççRE<ˆ¸yN: (»ÅY?`®c%ùRv?<m´Ûƒ)ë=<6+ú­àì †Æ•(@8ÔmJ®P»Vâ0 2à,0¦hãp%ñz'ò®lY,Ë,¢$f¬œ°´<îŽ(+TœIÊ¿¦5z@Ô7ØlŸKÒ¸©÷-[ákƒ ákQM)Wþ¸È¨kI= Üœ·_B´C£Ñây³?Ǹƒ0!eÛ °òi#×ó¾µ /* Ùå07ælÐäw. â´Qiœ¶2;ìÚq KipÂF/3¾ÖÉïâýò.ª£{Ö· @6n5ÍñbmÝÒÔ›2=š%ÚµÛvìnÔ›Æcy¹aÖ ‹´b”ÿ áU¾gtd”¦vì ZÕŒÕf=”Æø^„î˜2kÝÝ»vsøYõ p’Î.óƒT-«bïg±Q•ÄÐjåŸóЄ‰ý©H?ÉÇsǺF2’¡M+MÉIÅÍ? Oõ™=<<<<<<º"•GÕ¦gϰW.O£V;·n ¬@N%³6ªŽÕ¨6fôWšÔXªçB|Ⱥ Ax­Ï$ ëù¢:1Fµ© 3Ï[ &©dÐîš%È ú9Ûêâüj‰‰Î�žóa‹CÙà¿”„i…\ÿ¸ž\§ÿåÊa=aI¸xìKÖMX3fþm O°Ød€¢_{ (‚& �:,†@Òp‰€xRÐFmñ² ÐÆi÷~M¸‚DáB§¥½S¸×h2…öf¡¯ÑuqË ¿5ùBÿÖaHÜú¸eE[¸!W$/ýL´g÷™è{uù\R‹×ÏOÈš<cóÍ^ àb@š˜!Þ/tòŠG )/Œ6ò* V  ÒOܺ ‚"âþ‚PC RØ!í%¡>4IE“W¤ºnrÔEÚÖ%à7vD[O ù¾íIÛyåSŽƒC;ˎøìØq& dÇx/}⟠k¯½–CoXÅ_Ì!©àä‚×¼æÕtÏ=wÑ¿ôy:rÉ…<—ó§-Šê8YˆCé[¯¯¤÷///ѧ?ý)[sñO<AýèÇ8¯k®¹š=T,--v!@‘Ú4sÊ,—ŠdÜçwÒÕW_Íã¼õŽO»yž¸ýöÛMÝŽòÝSSSô¾>üá³=näöÛï ·¿ýïó5¨Ë³žõ,zÅ+^A¿û»¿Gò'ï£ý¯ÿ<x€½W|ò“Ÿ¤û±3ù¬Ð7¿ù-&ohÖxµÒÒÚ{öЗ¾ôe®æ±~ðoØCH¨ÿ¡C‡èßø]~ùåÆä¦›n¢:×=N? •¸í€Ò1Þ;ÆÇÇØ úáÔ7ÛY”ÙfHí¼1=|ªEߢN§fÚtfÞôeÓ•¢Àã ¢b©}¯ÂÔb¢AÀ["¬ J‹Dñg¦øR)¦©‘€.ÜU¦+öWèŠ}e«•ølÞ!Âæ°–öêÁqb1F<{Þ’(»{óÀ5 ÉS²Kšå$1ÂðN”<I]<ãÙ5¸d¸çhû™-ÆØAŒ‰#fq,ï|gúÿšzVìóòl~ͺ£[²ëØýÖ«äñÀgË1Î�hsÊWÝH/û3 f£'Xôè¤V-u¤Aåô’ìäÊ’´;Ùì(¦:ËF«AU#ï[]o˜¼?ƒŠ•qϧ,<XÞEŒ=¯ +é�\ÝkðîRº (4i^Ÿ–O—r笾'Ëû±G6ÇVŒbzëyÄìÙ™"ÞXsˆšVÛ5à…¢ÑhÚ¯+u^¿ÏÎ-rx¼j¥Ê$Þ}f[3zžruŠõ"ÐÅ`·%Ö““éæš€ãÜHÑ¢‰ÝÒÙÙêAaÕס¼S:Ï8ßCÒ™Qç»Rô úmÜ*¾Ö)�u·½ûuQÉú]¯[]ýVÖ¿¬A#Š·ÆZÇÃÃÃÃÃcó!±a¥¤ç€æ—hÇ®ýv-)¹ RÒ@Éè4kFÎ7//ÁØ ‡XãÒXwÂî…P‘¹£i툡±mÕÆj4¾{Ú¬ËÊ´<³Dí†õ˺« 4]3#¹\Ÿ¬Ûrk¥„ð·ÿ&aSÃú4°åeÛ›©W5¬R\2kMj°÷3ÐÄ™' '»ö‚ŠE4 oÊhS),óz6HÂj]õ*÷…'Xl" ci£v7ˆñ] Êbtô¢^Îk‚"C‡£ÐÌwMF{tÇwÉ .ÙA8´á¼H Ëª‰ Ee–ïrNÚË%oè²kã{wa)Oq˧½O�0ô oi_÷ÙIººlEaWÜöÕ×ä 2”Ë-øî–U÷ýüuþø`—­¸K‡0=11‘s\Dº,ØÕ b\ªc·Žñ޶$ôˆîÃB¶(óN‰ —K<oˆ7‹¢~.yé¿r;…`ááááñ䀫õìæÅÀÆÇÀ»ÂG>òºá†xl†‡ç?ÿôÚ×¾ÆÌµ”Ì'F} ³û÷ï£W¾ò•ôñtÇwЋ^ô¢$¿(-‹L' ¼ño`bÂw¿û&6<õ©WÒÍ7ßÂ׀ЀðŠñ·û·<¼êU¯âkмaÇß_ýÕ_Ñg>󙔤¢Á[Þò|ýë^÷:oò;¿ó;¬`–›,Ìùw¼ãô|€þàþ€•Í»w聯¼ä%\§Gy$Íç / _ú¥_¢ßüÍߤ?ýÓ?£_ø…_ ŸþéŸæ2þÎïü?ì é¢üé(·>:pà�½á o Oú3ôž÷¼'=ö‹¿ø Lˆ@ùò'Ò¤ÿ§ô»¿û»tÑEÑèØ(Uª•” bËíÎÍöùÁ«È[ßú&¨€ ‚¹Ï><¶ìs¼ûhƒ>sû }ÿ‘&Í/7haÙë€ZLš°®åƒ�kšˆÜ8Ù! »Iù½‹Å…C¬ÒÆ«ˆ7+L³. h¼ÐÔh‰®ØW¡—_Y£ë.«šceê?ίðÛÇÌ•ûÕlT+˘³õ ½ 4‰ hž/ˆ¥À’bô½"ÀÐ&ëa¬ËåJáÚ·<Q&¶£všþÛ«.Èk~–Cz\·™£ˆ@ïž[­W‰^FÒ A¦*:wžõ5Ú‘*3Ðw;¾Uf¨RݬìÎÿäXJÎÉ]IL‰`‚…•µÛqd÷gEm`¿'›@ÂÎw6N2‡‘4n·h¥Þ ‰ñl#EQú½› Eeí×O¤ov^Slزk»µM7’åôUŠ;ËE¼ëÕÿ©Ã#Fç"²õebà§OŸ6kØš­ˆ½L -ŠÛJ<Q´8”G“——i~nÞŒñusÏZ2c=Âx`=}ÁÐèd‰vïµ}÷ÐlÃÇ'sA9§êì§ä4ïù—Ýá»Ûª$J¼qw##ÈoNCÍcƒŒW…í$åqôp4)tY¥Âsy"EХ̱úxxxxxxx¬gç(2Ssm¼–­™ˆrdr¬ç9´½Ñ×…‰ç÷úò µÍÄ+„]áf=Í„)¶¡FÊFß2¾kšF¦ÆievžÚæ\¤äì°'Q4Hÿ"F¯µ 3âˆÓë]{2ù“„2ŒC!¡ ›h™ëÜn’õÐÁ<á U9Å’¦]S"¬õšá®›Ï¿†i}á-Ž› 0 ô:¥üE‰HÇ×Äù­ íâ@“„ !žD!&$ŒÓ(É ×¹4ÑA<c�¦B§!éˆgùízp… —€ Ëè ‰n;)å·ú˜+´‹Ku}­@ŽéÐÚ ÎË_Ýf’ŸRŠG©¯¤Èr¯t¹t<O”dœ±†3¤?iÒÇ ñ?»Aˆp޽ø.½~溼²ÃN“]¤/ê>"Þ,t»éºêg @¡àz…ÙªŠ?aoïz×»xÌwñïÿý¿O×_|1ýçÿüÛ©·슪ժ¬¸3‚€±ôºë®£g<ãiX Œ§8†Ð `¼þßøBbÆù—¾ô¥|?ÂY oà~äG~„CvàÞ7¼áõtýõ×ñy¤oE$)~û·ÿSλE©T6õœH‰—\r1ýËùÏÙƒ’5ô²× ´¦öqøÙ%²9{GFjô¼ç=—‰ðt\yåô_ÿëï±)|žýìg3 9P¯{Ž?ÎÊlà¿þ×ÿšÞ ÿ«¯~߃]…˜®P/3d{ö³ŸE¿ù›ÿŽë^«pº˜Û¦§§¸íßûÞ÷²W&Úü·~ë·Ø“ò}Ö³žI§‚ú¢-÷ìÙkÒ|&G<63 „Fô·7-ѾcÖN ÆÀfŒ,Ad 0æà["“ck@ò]È!ÿ¶Rj²¾b’EÛº¢äßf„~†ãæÓnFToµ¡EŸmÒM¯Ð­O­Ñ/¾lЦF’ÐA‰Qp+ mêW `äÄ/­ÙnÀZW¹¥Ä›EœÉu ‹áØc6\Þ !¡\Hš0Ôµ‡ƒ�ŠóªÕ ­4[´žp¹epî/3ÄÔÓï}¼yß!×øXL¶PgשƒM1®Ê6ð3„>¡ZF{µ]£½FLâz",Ùç]]¼[K‘JµNÃæäšU”žÒªÍfÛ ïQâáÒz)²;Ô%(=»Åù!t ÞO“íSçZCvm^“„¿+ e’ÚÓ#…:°8JÏrš5³þ\^š§Å¥:}ê áX =vœfÎÎPÕœßeÖz9B/¸„¦wLsB_ÁØ^6!³•ØÅsØ[Ù>(­‹£ó?µrb»3wmAüLŠÖ�<º¾ÿ}H>¶ˆÒ_z%Ö˜¤ë­Œ8Ñï>¯‡‡‡‡‡‡ÇðÒÿäw@GO òh…j£ìa^DSq.°!>xOfí`%öè`l[Øü’¬—Â’ÑO98,‡ÔXZ¶¶¼jHÕÉQš8°‡ZFæX™]`¢c_L7$rƒ^ÓPÏËã1DŽÉ¹ãq~}ªÑí EQ3JËʽ8 /°wÂóe)ì°Ñ’¾vÁ,6ÐéQ|iC±5ÙBí±@ ú’§x±ˆRažR…¾x²€ä-‚œ¤YT…šØ!e—<]ã¿üÅ58¯ÉÚ€.çµ!Þ’ôõBòë5¹A‡þ´¤îzà‘4Ý2J»HÚ®7!Hôà$í*ßuÛÉ1íCH$âñÁ%EH}4IB·qßç9 huŸ™î'«ò‡2�Þ*െ/Ôö-µ„l’‡´+‚ˆÛ>òWÚ\¼nôò’‚sÈÓm/'  pŧðz �ÙÞ#zc(<#àãæsxfèŒÝ:_�D8æ'|úéô+¯%ìáO7€à ·Hë‚ l~ düþïÿw.÷ßøFž_úó*t{0ÏíÞ½‹?E�q£WÛ]xá…¹ßhw„Ñé»õuïñØl@ȶ6ýñ×飷,ÓìJ“Ý3¦jöØ®ãì**HöF^§fdÖÃ¥jâZÞ¬­Ùº±+Jö*ÏÄ®¿¢F?ò”zúá*í™ 2ü£gZtëc úü]+tϱY úÈ-+ôÀ¢÷ü_ÓT+•‹lz›™§šmKš´!öëUrU`Ýt&ç]yP�ñË„<?,¬,‘­å“̼;æ! ­­7Áb£ }ÖÞ® ]æuе‘Ë•“‚sJ¢@Y¢>ÙE§Ø07¼—N‹òÃD_™ë\Ž)]ŸMfÈL/5ÿê{°aBˆŠ«>`CvB\…§©ïÔ ù=IOµ±UpJƒ¼|+Y ÜH™¸ZIÎ…I©¶Ä`¼!ÄÈœ¿ŽN·Hé›ýîç…@ÂQea©º•QtWÙ&)ë=. l–p;IwÜ~;û˜zþóŸÏºèJ^4:–ó\[6ëÄR¢3qu$ü=ξˆ‚¼¨îå•-ˆdû±èÓœ;yΩ×ì% ëðÛn»žûÜç®ÊCÒ (%|¦8)Ô!Wï ÛtEÎs-Ú„U\¿NmÞqÇ·yع$èA ’¶ãÞ:¸^ýÕÃÃÃÃÃÃc}pôôqªŒT©<V¥REyާdVO¦cö(‰µì~FÎmÖ Y"aXY½<Raö>³–3küÚÔ(LMЩcQ/°Î ƒ®âu~Íc×v-w%‚Næo*·“2‚y…ÑN¼ý'ë^ça-[NÖ²‘õ®ŠÓ™túØÜ‚<šÈ`1åÉÛž`±‰€Ž!¥_g¯ BJЂ•&3ˆ‘+‰»¹_ïú—k´±]v=écBÐ$Qäi€1„¤!yjÅœ& èAï¾’zIº®g ñ† ë¯¯×D!hïr¿”yê0º]ty%O®&­è6/’¾ÜAMÚLht8ÉO·Q\O®Àˆs :€ø�£ 2E„×£Æ0Àõ¨Ü[b/ò’> à7Ò^^^ΑD`ÐÓ¤üÅ=HK<ZÈs’2K;ˆ¢Xm¤mIõ[Ž' ¶KÁÃÃÃÃã0—¾õ­o¥÷½ï}ô«¿ú«<¯@!þÎw¾³ƒ<âáÑ Nÿü[Ëô¡›—i¡nÉ–²»ø ,±0Pâ¥+¶¢= ¨aXf’mZoa²ƒ—½àâýã—Ž3±‚ÃIˆÑÏ|vM”éYÐ[Ÿ;A_¼{™þüÆ%zôL“¾ýP~ù³ôÇ?½¦BÚ2€WÓf­Hvog8á—âüZkf¬û-!¹D £ðY\\JÉïÃÀ®ÏÛäôA[ ¬ç­§¤Å´ŒÜg0u+oœz*Y?ˆ#¢<¹ˆ’Já&èZÑ:U;“{Ï×K!¶ïnXo%Ò«7êéæ�»³¼KûÖ¸¢SÍ(Kë(é@qª -*_‘!:Õ]”a^¯Ñxµ¦Ò‰EnwÅëFc-í¼©ZOeÑY'­ÿq•ÜÚƒ¬Þ�¨P#ðä†:y'_r jAèÇ ìõ:ölcŽÖÉ8þÎzžGàùt™ç Šxàš™å>(¡\'N²G77¤îz‚Å$eµN·­Ò^/�7ijŒ®³~&]óèf˜p®Ét}B´(Cì\o¿‹ž®¸ï•Oß+FõDÐñýëßû6…•µÌªÂdƒ‹ ÞÔMV6nE-j€`aÖ"Â5ˆ9DçèÔµŒŽ'2JŠÊhͬõCÚ}äÅæXsa9ÙX#,Òb[Uwy¸s£q‘½+='ì(#nÉ‚&Vi’ó]Ö«b‡e[œY¶+/‘Cô… Õí†%÷t’™·ÏºÆ,6%Xè—H ÃGèK“�1 ‹’­È :/€;"„õ}R¹F´RÏ%H¥^" iˆä%„!Hµ ]^íeBò–û4)׈ÁÞ­‡ä¯½DHÙJÊMޤ¯…V¹V9v=eBŸ„Á²êk×›ƒ]´w —¨¢‰ p.éhR‹.o~gEï~¨ <(ox¬Àné'¼¡àEšØ!y¢/€äón›È3€"VÒ"‰´“ä¯û½î[šd„|ôsÔmèááááá±`~BÈÿò_~‡<<V‹¶n?sÛ2}ò+´°ÒNˆÆÙµN;¨‹k퀛L¢€· ,ƒÊA……ò8jR‹Ø*´«Æà÷ú«Çè]?F§%ÜG–¯^WCú±kFéÐt@ïùâÝ{¢N7?¶Bÿù3³ô®×Lš´Ê4 Wõ C¯5iÎH–Aè VSl?C¯qI¯ó%Šrc/x‹Ãz»Z­¥ëò¢°Mƒ в’ÚËà e†§ŸQ³‡²).uÊ‚½Ð¡$Š3CÕðâDœîÆ)>ß½,Q`ßÅ Ù±s®18¹¢;i"ÿ> ·ƒ»‚.÷=ç˜â¾$‹®÷£ˆ¨Ÿ¸×@ö ¨Þh&,z=!ë-BvlßÅŒ\1 rJÑ:‰0õN#á(ÖÛU–±qðkSs8‘‚…zÌ#ù¹3ÆzÙ<”é,âT÷R„(ŸQB¢ïN9ô€¹™ö „ a¥xÖ—ÛífJjµÚ¼ ¡îŽ;J=öX¢‹²ÞE¡G©ÕÌ_xžÛ?E—^´=hèMT?t,Ýð³Q}*’z ÍP—¶­dÛKZ(Q‡7"¸F‰nÆ÷ýÜÝ]Ÿé5ùᦡçÀ¨0¿,ͬfó^TPΘhÛK=VŒ;Øà&›ñ®2º\xiÄX…–Û²†¸ï‘‡¨|¡+keË²Í ¡ðÊÆö¹R§–3cÈmëêª2Q£ÑÝS4wôðfïdS#4ºs’NÝý‡ßÔÉö#RH!c’ßaBöŒû’,: edQùÒuÍ>n“2Øn‹°È)¡œlhÙ 'vFM[@ ݆KO°ØdÄu«\Ö¹|׆x1΋áÚ%1‘´7�ýréPÚc‚¸<t‰¸W”pX˜IÝ$/]n!*h„¾V 2šŒ‘îöHÚDÈš˜!žš¸!ç\/E¡3t[h":=Mâ¶Ò-lë2jR„&‰èüô5º½.É@“&ä^°˜Öí¯…Ji]‡"ˆP |aaΜ9ÃÏXòvÀ_»cͦ‡ëA´�‘ {œÓDyNºÌÒW5F×_Èîd"éˆKdÍ„N6è3w,ÑÑY(>r ¹v't‰$LGÌÄ «Fù\˜52»^Œ­“òÐ(K[U"zÅUôÎë&èàt©@¿/.Í$;£Ÿw¤Fÿü•!ý—Ï6èáÓ-úÄm‹ô¼‹*ôÚgŒ)‹MzæAÄ-bÃ�-^oWCC@Õîã ù£e‘ @x…º=G…F¤~4EîÁ:\Ö5:6’z´ëY»BÓàèG>`ý˜ýFkïǽ¯… ¦sdÃ0Hÿ¦ ”§›Tâ"Vçð·iò…×—V³ 'Z˜&’©’uïääê¾er¯18(­Ø÷¬f;Ùâ0}‡Ý{1 ¯©v‹`5}§ÈS‰«[ȧßÍp_œ†&Y€”ƒŒƒ†ÕH´Q}˜ûZò‰pF©ßl5©QÏB !XF sM‹}ìQš9;Ãd R©lÆó„H1R¥K/½ˆÆxL™ût),q=3ªÁ••lÚQ›‰¨ÓFmæÝ(Aÿc~5ƒˆÉ®##ÌÿLsC%cfþ uN®n®74QÂ=¤k7Š7ûdáeô¹Î~'붸GY<ÁÂ#èi¿óïÐç>÷9ºï¾ú ÂW¾îu¯£—¼ä%ì±_?¿ýöÛé?þÇÿÈ¡'ÿøÿ˜<<<<¶2šm¶V8qö í¾|'U;Â,+Þ3q_(‘°kó_\Q2Ç«£5ªMŒq0±ÉNÞGÍåeš?~:[Ÿ (3¤6¿X•;(¾† λÇõRÖª„‚B¨=`ÿ‹’u þ¥vbVc™äð(”-RÂ…äçíŸÛ Þê¸Éà†ˆ(‚~aÜЀ& hD‘ÇÀuY¨ÓÖä"Cê&6Q¸É}blÇGBEˆ@©Ib€wjÝ„¢0ژôä¸K¾Ðá0´× }_7"„.— ˆ¡C[¸÷ dnu¹å·&N¸„—d!ÐEdƒ""‰NS_‡g‹]q³³³œ¦„ÑÄ )Ÿn¹Ð^4ôw¹F{#)"ƒHò¬„`ãÖe˜œœÌy&é%`»ýf#TMcü¸åÑ:Ý{ ^*b%Ü‘µ¥jgÄþ(`;¯i(Y+&6¸7èÒ}#ô£Ïš¤ wɲ/Ã=Êj�zÞ‘ý_ϧ÷|ñŒ)ѧo[¡—_9NµÁ6º­kÛyP~§'||J[t ×}陬Osj  ”îtç£ÉZ ¬Ññ2X£Ñ´ ŸÂ ‚ì¯ìbQ°Äê( ›0,&ÆÆilt´ç5ÝŒÄ9åKv:ƒÁ{Ï0×vM#•ä³¶þ;tþké×qÖk6\Y«HѶ*yl¨F*γ ‘ôuûœ ®±õZQ©–ÙøõÔØ["¢®ë¿Ù¼Ó•Ð)]Üã¾Æê ¸ƒ«×ƒöìYY’c™¢Wùí¹îyÉFDtoaÒg8[ õˆ•†ì<…„lª¯ÔÍ8¿Œšû*vAb|ž_˜§“'N²ñ®/бÔjUÚ9=Aì5ó:H™¾%HÂ6•œ°³yj²¤«?¤ßS.;oÒYb"ÇääD_ý'…ýØÒ UJªU¨ZB]¨†_äßb†¥òj¡§‚ñ¦Hgè~/$PŒ[Ù±˜Ú±ò`ÇÅomn.)î_ù²EN^r®×ºÁãÉŠz½A7Üðuúó?ÿsÖ·?å)Oå~/5ÿý¿ÿÿóæ7¿‰º†ÀJ8ŸÞ`ûèãÃna­6Ï:ÄÃÃã§gÏÒÁ‘UE èÕšZ#"FÆVV–/0k›±]ÓT1k¯È(Vr¡3v_z!¿í‡6Œˆ–Á@\°®a")‰í,³²Ì×gjQ‚D£Ç…öÖŽû¢¬BvãÁŠ+ŠJIÈ9J2íìºBÙ~Á,6Ðá üôR^iD‘ÑX‡ Ò„ö¸ ž+Äð/ è oIOï„Ò¿9®ø" ÑBÎi#¿„“Ð.f¡”IÂJyÀ U"ùK™%ýׂu»è¿ú¼{o7»>'Ÿn„i7÷˜ †û)ݼ„¼awC”:„C´¡uýXO‰® Çqa9t…X 7"dä)Ï ÏVúô3ä+ýLB†�r¯<cñ°"}Sú‡ôSM*qÛD·+~kÏ'pe'»æät«ÿÐ <!¡óÔ|“n{¬N³Ëyå{Þ6¨•“6žºSÍÚÞ›£À®aJ0 E-*W#zæÅeºæP7cEÐ÷èkŸ6I¾e†î;™Oî9Ö¦k.,Qf|§uâÕ›}Ã8°aS CÀÎ ó»m>e„SÙ€­þ¯è\£òÑ@vƒˆ1&1Ü$ÞN\Ù ¤ ¬ÁµÌ¥=%f2Vš²ß69Giȃ˜Ã„Ä}Ã&at´F#£µk܉8î4rÅÎßs‰XY´VÓú•9XÅ=Ãå;\*çB6ˆ|PCy×ûƒÞi[äœF+Qõk}ˆ²åRo¥aç{ש[aY”šT ´ÒlP\ üŸÜrj¾¬e2êB4ìÐC'c_á¢Wt¯—M:¬«2à%"]U2¢€×4}`ff†f·}coÛ\ñ¸<3sÖèefýHÌ$ (Êå>¼“F๴Zå¼]C؃ÐPr6oå[$H»£èT0Ï Ôán½õtËí0ÑãùÏy*]xááî$ è¡æ(ºëªLMQëò‹)1óY2SI»… &5-QÆîÈÌ¿ÓÝ\‚"2‰†¨cä{YÖgä}§¼•${óz]7Û|9´>ŒÎÏdè±iqúÔúèG>FÕʽõ-o¡W¾ò•¬½ñÆoÒÿù? O}òÓôº×þ¨YŸ°n÷Þ{拾gÏòxràÀºøâ#466j'Pý!»qï¾ûî£'Nðï½{÷Òå—_Îáà:}ùË_fâÆ•W>…yäöšqÉ%—d…ãd|‡õððØ|‘)j¶l˜Í’Õ°­2Âk¶~'#‘“£v¤6¸xz1aɨihlzœ‚VFÍX¹ðÄŒ½7 ×'EDÎô\Wòh²’ˆ»¯:òRdP¹®Ÿü§e{%~âŒ~Û4c±Û–’zDýÂDnUx‚Å&4ýšP  ÆúÏEž¡É’§6Nkb†¤+lñX ù­ÕÚ»€s­„]¯cùÂè.$�! À(w….™DÒH:.9Áõî!J ×c¯ÁL<I¸Â—›~‘Ñ_ß[dÀ/àŠnyÝzÊuš£ÓÊ»£,åH7nYܼñ¬ðL°èÆ»áäœxž°ñ«i{‰7 ÉGÎI”|]o-rNvyHÛ aÃí³n¿rŸ³üÆBßõÚ1ˆbÄ“-<<<<<<<6 Çæ"zðtD«‡µ,å³P`ªB/¸h‚jåÕ¯a¦ÆBúѧï ÿ÷‰Ó´Tè;/Ó5N&yѦ„)ð—7K€yR¢uÁ¹02qKós·%SÄá8#³ƒ CÖλx­î’‘mµâO+VÒµ5+ìF”(ÊËý€KÆÆGŒLWÉ4Bý/ȶ÷¸_¿(…輇Ɉ{”¡sƒaê¼¹úmot-«²P&:¹®Ö0¹?.&át‡6À†©•}ïL›e뾉P9´·šF‹`àv7*Xãxw¹?Ý,‘((áAƒh„<Vƒ¼a}p¸DŠÎcœz>'3œwêŒ�­#±c±Õk„ÊsêéS§èìÌYî+uc¤DNŸ>E­¦õDQ®”8œG5!RìØ1F{÷Mj=Qo Ì«­E·’Õ)és}ÆÜ®çìiñ®qd îwßsýíG¿H<>OW\~):töíÛÃa]‹€3z¨ú™Ó´;ÄfHìŒ,wø‚£îz³]¨O£>u-®sZ«;qªð(qè®<u69g?™«¢9Jí|¼¿"¯‡‡�ïÙÑ£Géᇦç=ïùôÒ—½„&&ǹ˼øÅ×2ynv¾V˜,ñ¡}ˆ¾ñoðºãÅ®]»èo|#]wÝuiãšÏþóvééi&p¼æµ¯á<~ï÷~u¸/zÑ‹èØ±cô£?úú<ÁÂÃÃÃc3"Ò™uß®½„¹¼ÿ¥Äî—^§²4«aÚ XDìQ,ÈC»Ö*Ö¨>·È^Æö\zˆ¨U§…“g}¬5°¬Öô`Ï%e¹"ó‹–^ã®ulºùÈ‚ÕnAèDóø oFQ².¶ ‹m O°Ød`&{¹÷cÑá#ŠXך@¡ ýÚ+&>hÒ…é…À eÑ÷‹\ ç:]ž"Ob0—PZ‘gcC¶R²ob¼Çõ(‹&-¸wÀpØè6rëÔOIè*?ä»›V)¥ˆÈà*3å»GŠÊ©¡Ÿ©~Æ’Ž¤!Ï´žì|ÐBvQ4°ØÆ® Äî“/òüeœÆC¼RèrQ‚U*Të¥D÷/MÖq˨ëÚ ú<„uQhèüzµoÑóöðððððððX/œ]ŠéøÜê ±Ú¾shŒˆvUé²½5Z+žwј„OQ½ÑC'VÌzhbk¬‡ äˆ°öÝ®k7ëÆÝ®s£äÖâ‰C( ùäh(À‹—Íy¢DÑšWvšÀˆÆâȺ§cc#lL¶´È¾ãLm3ìZ|S<Þ¤ýÊí$*BÔÍý»£dŠãâªÅ=”QêæÎ †3D«™ &ìœî¥‰Š˜'CpâÌè̇V›Z›U2Xó.÷Ocð­UÄ#6’„òµ+ƒj=ŒXŠ­â1Nòo’ÇùKšè~MÐñœ‹ŒûöÙ[£»ì-Ç›_ÊdƒÌDFç2GgÏžäq¶R-Qm¤Jí¦ {x-§PÄcE(éêK]Êê’æ‚°{X€€º¿»6™ 5,0Á¢=x_…®ïûßÿÝyÏQ®ÏÉSgèÄÉù¾$ÊÄÍ_|‚;©Z)¥JìÌ|`©+õfGm‚‚]œñ: œQT”ŽöV¡ ±êRªŸèÁ*Èeš|‘¥GDÊãTšZ¼™‚?yœ/h}þ©S§ø÷ÔÔ$íܹƒì$CLÐzùË_–Þó­o~‡>ö±ÑÁƒégögéôéÓLžøèG?JGŽÉ¥tAÚøë¿þkÞÄö¶·½óøä'?Ió7Ã^,.¾øâT¯ O¯xÅ+L:“‡‡‡Çf‡^.ìÛ½7%”Ú#Y÷å׆qº¹!j[ù–×j d$Ÿ2¼¸C–6ö0|¯NÖhevž½o–¡Ëú«/ÉB­1²%ƒ.’k î/ ‚Ê­©l2 $Ý܇z¶á4Ïm´xñ‹Mˆ~ 1Zk’ë)A^�íeAB-h€|ÇGÂ1È‚Hî„¡à’oÑ WTAÑ‹…cðXkâ9F~|à9att”ÉbÔâ„|/2ÈKý5¡¤hg&mè¶q‰,šå®öš¬!;ÄÜç óÒíÔ­ÄK„”Í=§ÿê<õ_¹í©C‰¸çuYp-ä ¸ í%ÔWÚS5pÏE»½Ô}D¼£HžÚ;…~qcÜäÝ¥Ž¾è‡ä˜Û~xA‘çÚ+¾g/³‡‡‡ÇVvÀç•W^™†Lqî†n`ÅÇZǼ3gÎ$Jœ)«¿öµ¯ñN–ÕÕp-܉bþyêSŸJë¸<…+Óç>÷¹]Ð.@0D»íß¿ŸDعƒ]9““vW?æ?¤u KßþöwŒ‚ê ŸC~û÷ï3J§+Ìõv}7¬=ôPÚ&{öì¡§?ýé|?æ_¤uíµ×Òz�s)âíbçž9¾#ßõÚI„°awÜq·Ðí9£·Þzkú\QçaúÝÉ“'Yéwá…r~ôÑG·ün¨åÑüÊê¥J}gì 36ìÝ¥5 ì­ Ø;µ£žo’67m¶RœX¸ñF§ÈümmS‚…­cb¨3φâäYÇ0Ò&$‹Dn°¡ùª A½D¥2ÖÀòš»öí0vwK;u}:|Ÿƒ‹jÏ0] E×ÒfBÜÿ½Hw+gàvw. \½]v¦kqÏz Ï;º%4:uüG:ƒ5IÇàcØee7}ÔyÞdrPaaƒDG¯Ž!“ØC£Ò¯ˆ@6ŠhÙV¿±\A®h¶LþÙž\è÷Öu}™zÜëêQ¨0L‡AÅ©Çq׈ICñàþ�½_¢À¡bçÎi7ãe¹rÞ!ëTòk«€¤ïHyB§\Ab Ïбöí±þêù:ͺ²Rçp&ƒïÖoX B·ÈkíãÇÌûñ¬îYš²Ž™õvùòK™lÂúèù’óBú€÷—ù%ŠÖz€ žiÚ{»Ì1kSe7©n¬Xý_¤sÊ•)pü_¤Öó‰ŠÇ/';¤Y]iÿ¾üÝï~—e÷ç?ÿù,»Ÿ=;Ãrø—¿üzâ‰'RÏ2¢ýáÈÄݼàôÚ×¾–ÏÝÿýôÙÏ~–å×ǧúá7¿ùÍÄÃÃÃc« H¦ï‹]@Ì/R¥;äbsGÈÞqb“jC>nóñ0±we ¦û ¨mdŠÝW]A÷}íæâ¼ Ö|«cçt‘ã¥'ë»LŽÑ¹³q‰-ÐÎ?m»µ?:®Û.â«`0-³Ç9ƒìÞïM€p är^~kƒ²~É5ÑB ãÚÀ6^K¸ñXੵËY·ý Ý^r䢌;vìà<ÅÕ­xcÐ!F\‚#¡Ë¡ôÝÈ)®ñ_‡Ñ„‹^¡*\¡I+ºÎ.¹Bˆn¹ä»ÛƺÌEí(ç%DD:örѳ¡Â.Ú[€H{éïrNúˆ âmDúˆä'Ê%¹×i%“n ‘#ih‚Œ<é‡R–¢ö–xZYÍ„r®&!<?~<·C ßxàu1Ì`Þ€á^­%]ÜÅ ˆë¤Eîã?>T™°Ö@p¯ (’tÌiÔ�q• …Ü«>íiO£K/½Ô´ÿ"}ýë_§¹¹yn#¤;11AÏxÆ3è)Oy ¾÷½ïqù0÷¢-× (ç7Þ˜–dNÖ3}<wædJŽ9Âuv~ÅN|´Ö2XÓ@!¸ÕŠQS´–!YJÔJvQb“lyBcŒQ„½ÄHG’õ,mâüÚv˜O‘ ­Õ·Ðn‘9üŒÛ5K²Úi]µÜ€±knn–Çz¼3øÝnÖárïVḇý5“ÿ°¶‡œP3ý³ÔÓ€ž¦“þ hý{pÒÞAï+â ³›vôc&Q™)Ó úýîÝ|Z†RñÝ׊Á[Däh‘ý“ç[ožÍF›ÚÑ!¯±FÐZÕè-Fkæ¯ Ý ò'dc|dS†lÁ<¦õùç˜äÝlt”ö|‹¥k‘‹‹ô«IoØþ>Ìõ(NÐe—Ÿ-k±¾¥è{ÑuöCI³:¶J²…›ë*eèÝ*æo@ì|,LØa¢EòÁ½ k„AÞ#hNäCÊvÓ­ fÍjú3B˜ KFªð.wì–Ç{ñ´«.£k_ðÔϸ.píŽ]F/htƒ¥Ši3yN-¼8¡—–›ì ¤×ØX¤_Ó¡vå»&IéónÚº}ù¹(]¢ª}ò/´Gd¼‹ózÄüÜkŸ#Ï!”kÝ»™×[=Ù¡7Ÿ8p�GX¯ €�sÐûßÿ~z÷»ßÍò'ä+\Mø;11ÎrZ«ÕLõî:}è0vAW÷0p/dX]ÈÂ[ ˜MŸ{õ3iafŽ*±•±Q¡’ÁÍÜ$^È Âb½&6·DGѪ7ÓuR`äèÑ© ªÏγD¯ç}M«ìµ^¶k<«ˆíЧ»ŽH6áPÔe]4À2yõ£»ÞÄzˆ¿Ø7å·þ»à=Xl2ˆ¡º `@Y¦C{¸ì&mä !!$hÒ€x À9=¸¾™ �b,/©ø@7ƒ¾[†µùbÁ†6Á 0„€!Æ{rÄÍ[ê.Ä]>NE"@éóº=]b…&E¸õ—tñ]ÚT”,n[æÙÆq.W0ÖnEµçí)­“ëýCú€î#0ê ¥M幋Ы‰)Rñl¢Ïé6b…èõõš #¿%$ŒÔM{Ípû·K°´©ÃÆ(<<<<¶0îbG <`¬„§‹+®¸‚ÇÐ|=À“¼3¸ž°[åæ›oæ9Æûk®¹†ÓÀ|Ræðg=ëYlXÞí·ßÎJäë{yîBº·Ür “60Á ÒB™á•ç <Ú·o=ûÙÏN½MÜvÛm\Ü£= ½{î¾ûnÎ÷ˆ;S¤÷Ío~“çžÝ»w÷%¼öjOxh¸è"»kçÀ}¦n5m|]}õÓ9/īŮ™¿ýío÷Mm€úÂ8ƒB/yÉK¸>x uH›ÂC„(ºàℊøÃô¼ç=óQ;à}⪫®b’Ú J3x5ÁõP~?ó™Ï,TŽ¡mï¼óNž_‘—̯Xç ,wÝuÿƳ½ì²Ë˜<‚{PVô•¾ð…L¸@?€b.âç�ßÿþ÷9]äz"=¤s�úáW¾ò¾ÿø�½êU¯b/#îó…—´+<ƒ ?#M2„ ƒ²¢lâÕ}åDÛàÙÃ#ž‘Ú}J¼ _ÃP ;ºäýA›àx?ƒAÅNª•€ê«ôŸl°``%eVCÔlƒG=¦±Ñ5¬yLÂ'æ[,°ÖBê¿E­X›pEÖeº¤ÔŽdWÄöòJ(oQŽdåb¬Jx@ŒèÓÕjê+õtMÜ Z†J¿cwÙÐ h´Ú-&Z„á`Ï ÅƒpllÔŒ¹VÚgaN¤^y9–mcÑ ò¬\³–W$3îgf¸\×o¸Bj“/lWb¼ög¾º$Ò·‡Cî iÑ×5 ¢³@ÖÄF•˜ã*ï0 SöPw†U9Xô0˜ÛðÁ5²9A?S+âhû(·dÞÐÈž}~ÌŠc­Ë_«õ<ö:­/²d ¬A+ÕJ.í TdÆ‚¾ìêìß°ëuýHÃ#_¨¥Åe^O ’œèx^ùŠë©62ŽRÐ3¯y*]véÅ©²Ú¥˜NNÏÒxy”&fF©=¿†gâ±7‰ï½´Òâtñþðñ ˜˜°[‹òwuHý6Iÿ1£e;H³¯îXÒmÔçRC‡Ç€@ŸÁ2Ð}÷ÝOŸùôßÑ›ßü,ï|úSŸ1Ÿ¿£±ñ1šœ˜fÏ€_ýêWyó�ä_È“á!¿Ctû?®‡,†klº˜Ž=Êsòìå1ØÃÃÃcs"ñ$ $ëBºü¢#´ð¥Y ’Í¿mxcàñP¯#DÔ0c"ÖBð‰u]Àž¶ˆ×"õÅ%j×,+4íÆ­v£™4Çë»Þ¥í-¦¹k Kî¥Ô;‡¾&HC™“‹óëÙÞk÷št-JΉ,{Žá › .öîÝË»»A“+\c¼68ËG{�08ˆáÇÅ(—&ˆwÍÚ–{´pQ$è 1AʺZÈK§‰`ÝBY9”0¦ˆÇ©£&1 M]#> ‰’GQ¨ MBºk²…û] í&!2Êé…Nò„~vB€)j·"²…<OÉOŽI^x¦ò¼µË-¯öZ¼…Ų(ˆ¤ìÚ ®C™‘‡´»Vàâ¸ÛFºnrá!}RÒrŸ(¨tºš$m+»†\Av IkÀë<<<<¶:0þßtÓMôÆ7¾‘ç(J`|Çøã 5À›BÀÂu×]—Þ òæcŒëW_}u:Cñòú׿žcµÂ¨ƒ=Œâ0DKˆˆ/~ñ‹<·÷ £7 …pCŠ2!.ìOþäOòš†n¬™`° †u½‘7îƒkRÌ_øÂRc7ˆØÉó#?ò#¼ž@°Sk îA8€Áéá:x "+È\ôAˆ@ùžñŒ§¥çhoìê5ç N À…+ÒB@†Ào´ ÚädŽ)Ïàƒü ?[¬°¾©mB%HPˆA‰öñœ½n\ýõÜN } „Œ„•ðü@–�±ó+ÚLêò ÒÿÿØûpKŽë<]½ãÉgò`a‘H@0™"ER%*Z¶uŸƒ$ÒóµÞ'JïR”­lë“%_Y‘’®mZ `@$  HÄA 0yæäºoý«ju¯®Ý½Ã™}fÎôì9{w¨®®®®Z᯵Þð†7ð}HƒþR,¢ˆ <\}dÝ»wsŸÂ³ÑÏDd<;ñ4Áó:žÝG?úQúþïÿþ. „¨(ç _ø%Ðf  ¯¢îh3Ü ú!ö£ ò•¯|…ÏCÿÑÀý¡ q¨×m·ÝÆýí‰þ‚>Š÷÷‰òQv/L´u" ý'huBV†ËJÏŸ[éоMºt¼N'ƒÇ.sùH9zö¦úÚó+NR?¤ÐÀ§ÓÙ˜ò[Ä¡H;nåʲùŒ™/FŽ&Èù ‰ïÆoôC¬Pœ˜˜ä÷ýv5Æ ›[Ö:°ÂÕd.0É© ª™÷µÕ^%£è4 ·Ðϼ58¬Îáô¹vŸãÏXäU=:ï¬:,YB6q_‘«Ÿ>hŸEdú¶#ôSYH‘-Ä‘,D I‡ÊÎv,0(oÔè;g6|{ÀÿGñê=ô0ÔgKãè ånsl¿7Áwúç#õÓýPê×óü!:àÌÌìÀã‘\ÿ¬³vÒ{¿çí%KF½Ê€aþx{žî¯<I;ËÛèªò¹Ü†%y}ÑÖ¦ÕÚæïŠqbðØÑ郓²uŠ[ÿ¯ß&Ym¤íg=.²†|¨ûzÚ&(wJ¬8µ$ÿyt†ÿN ×ýðÿGªø»¿û(ÝrË­¼ó ÞƒŸÿùŸ·„§·½>õ©Oñƒ_ø…_ày „þ›o¾™HÊhè6ôGDï{ßûX߇žý|€ç5èp s@‡, 8Ó$UK¢>œ»u-;NG¥ /ÜÍvŸƒÍÑéŒüâZµ^ã´œì74r`k¹A­F‹"Èý K|N{@bªÆj ‰ü'Ô<„B£“¿–/߈îÃ2 ÑÆ÷±‹ué€0"k¢D– #ä)Jâ�—C~‹³_”{!aˆ“^§‚}Z9²^6_I{èwÏYçæ•  }ÀœÅjCÊqp(ˆ“];„  ïG_[ÚQGšÐ?UŠ[Pžn;¿td]&êå>â•h®íýç®™^>ÛKŒ¨ú™ëû’•ø§€N—á·µ]}¥ˆ'(çK½DùÔ‘!�MÜmÒNBڢʄ³FÊòÊ2†o¸Ðm eéëøýLÚŽ;ižòœ÷·@6d\ô\"cµ¬vÑ p,Œ' à7Û VÜzë­)‚…Œí’JÆìë®».ŽÈr�œÛ G™ˆ(uq|‚…Œ¿ˆ¤€:!º EøÀ)R�H� `NRƒë¯8ö8¢ ZH!¸¿k®y%–— kÑ8õϦ͛·˜OÄŽwäšG>¢.�pœ£¬¬¹�ÛB²ˆÒ&ú<‘í¬C¹ÕCúҗç=ÌUßõ]ßå òÙKÔ`ì¼Ã×Ç?þq®/®‡(xN~=e¾Æ9ò¬AjÀ÷‡h¨ÓK/ätW]u5®Ï;oiÿÆ9{Ì{V\&ž%R›€Ø mA Y\\æãwíÚMÛ¶íà2p lP7!m¢>xŽxvè'HŸ‡øÜÜ‚“Y­ƒ\ s¼–©P–þ+�¹ÎdȈ’ó} ¤ <g\}×ǹX¥4Ïx8õÃsü‹¿ø –1å>…P*Ñ?EÖA9 «à~SÏÐ. °ë"J6ÖŒçÛ¦Êtîæ2í?Ѧngmrr9,q˜ì09G{d¼ 7è‘éâ5v8ØF£ÁØè‹ßX Jhœ}¥]z–’G3ÒŒQ¤Ýè%“uÌvµ/V­¼Z¤ƒþr’r\ÃB@ù‘ï|Ï+7‘ûýÕÒEÊfJ a5tùNùÀÈù.¬óäĤkÛ/ç¨Z3cR9bŸM}2u@qúŠ Ï­¢ÊéêƒHì<}¢b T¦¾’uIB£¡ý$niY®#·W'. ”¯ehãO7uaóSc9® ê² ¨_ù‡.­lWßu°0è~¢Œ·GÏóêÀ®ëÇmùµIðèsÛÖ93Ö§ê× Ê)bùFdüm4ÿ`•ÚâÒ"G[‰M®9¶  ‚… Jβßt㳈} ŽlÑiRÝÈcÍŒ´ xïåÈ›#†5Š&uMÛº âðMÎ;Yøed·UÖ8»“PŒìÈÚž&Ûx,âŸÝ6² HŸ—Q(Gö×dHsRåš„ðƒ±Ã'C–Yg9>Ïö‘>_•¤ÍJe†òÑ_[õ…´§ ìúfd”½ôÜÑCT› æJHã<÷¹ÞÁÑ+ {fÇE¯ˆ’{ÓÏ@l„b“{Ì/3öu—Aš\#× £Ä.g›6ˆº,¿¼ãR]‰z’z§.—ÈÄ¥ØiÑé´GDù+°P®ôš®£ßøÍÿHÿãü&Ç£ÿ_÷êWÒýرábçYÛéC¿úANvÚ÷~ïwÓw÷wó>àûÞ÷^&aÜ÷å{è'ÿÙûéßÿ¿£¿ýÛ¿åEÀo~— }¤óZ½Âr'OªÁHr!(P ÀÚÁÍÕÎÒÁzÆ–É ;4ÿ ªo§Ú¤ñaU̜ۂ\Ñay£Ô‚ýÅÌÉ MVUÛÍ–õ¢Œr‰e½æRƒ:͈Ӻ-sÔ¯6UŒ´=¿ÒsÎÎò•Ær¥5œd"[GRzk””/6€^2\žË™J½NÉHVæëa1PÇØ ¿sª’’w?Áb±W¨l@;þu ‹¼Î©™Ö:ê…DH‚ü•ú„áh…¢<ª—Â’*à¼r¬Žg½ÅéK²Ò~ø„_Xê‹c�i??Eˆì÷Õ«_äÙêç¡g+²”?±Aê«É Bd¿@¿œçpPéëË}êëøÑ;43MÿÕ©I$ ~ÃÐ+Ƥ¬!â ÂqÉC¢d�:j…Ô1«Ýp®Éª× x¹CÏ9züÆü‰•ûHÏ�¢Èp¢Ë*\üñ¸ütgMéë_ÿ:Gr¹B;°5Äé £pá/¨ê‰4ˆ* ¸$æ3ûa|D�Î=p?_ûÚƒd ¯!;Î᜗:‹8/eÚ†'´›-·™¤}ãœÚe¶Ãù.ìGä‰W¼â ºï>›dË–M=•ÜŸŽr{–ù²_Ø ‰@å·5Ú mƒ´oˆgƒëÁ`«c@Vpwʲ€ã$…Œx¸÷N§Åm+ò€ô?´ŽyñÅ—LN±1.+ɰ —DëÒ}ý�D ‘ç²Ò¾à^ADÚ÷®Waá\¬ÐBŸ }Jê‡6@Ä ¼?h¤ÁJ.\;~.ld,;G²õrОíuºÿ¹¦Q:IhPÚ#ãd8¾Ø¦û¾=Oo¼l†¶O ¡æ©Ë¾p¤EŸüÆ v¢NWéÕçM$^εôkõ@/]$«ïwÐÿŒÕ œ‰J»v­x8¥ßyç$äJº´4ðXá—©#Z'Рmk›žš`ç!ŸŸÚÐpý>èKȨVÖ¿—ãoT×êÚ¯}¢3i¢EêyóT`dˆl:œv‡·ýŽ…Ó(½(€È èm5”Ñ)Ski5ab ¬qϿIJV¹¬å±ˆ(‡œ—eçèÕØðº£Ô¦Ë{cèìkm¾—äÜÑ;S1Ÿ5?E7.\DÛ&7ÓØx)w¼ë´#&Z){_²_ì~"/rùʆ•ºnMÆÓöÁ¼cJFÞ ;Q\ÿ¼ôs´s~ÉÃ×ÛØ>$qrBRÊž[D(ÐóÏ?Ÿ~ñ1w?úô–}èC¹Ç€<�úï¿ûwÿ.óXìûä'?I (p¦�³ª] “ÆŽ-[ÝjÆ6Ç‹–ÚäÆA�2E³ad÷eª»‰D°`~Ah|`K+6Š™‘÷Âf›Z+MsÜ5ú,�íã]-Á'GøÄûAÐ-· Uƒ¸ ñññÚŠ`4:özBA°Xgs–€­‘×5qÀ'_È~íœâDz‡„}A®9*d+É>ý·°âF D³À*B8`ƒNe¡#S|Ö¹(]€I¯›Žz¡Ï—s}â€<ßH¬Ÿ‘ÿ¬|ä±Þ5ñBoĪŸsôªYyîš°!õ’ˆ¬n#9ßõê)CV²ê¶º£ÊJ[Y!ûü($º-ôõe;œ:´y ¼qs�V÷‹ƒNgÌ¡"ìÂÁ48Žb„EŠ  ã)áYssB(ÈŸ·1~£p¸#ä 8ëeŽðç<l“ñNk™Ÿ‘ZQPD¿@4 Ô{‡r@®Cô•P%¤à�jµ:4vîÜÁ„o‚&䔉2p]lÇï^÷# ‰”åï·9ÜA(8Áí¹{÷.¾&æ?¬Zœœœ k¯½†n¿ý3æúÇiûö­¹×Cû#×­*<?[i¯¼zöÚo±„DÜÏ÷~ï÷0é$|¦§§RÇ¢­ÑG:eJzÔcjj’#j¼êU¯ŒÛõùBꂺcR}@f»ï¾ûâ}¸7\ÏAÆÀ3ø_-׈ls$¿=ê*$ž<™}} ©Lðà\ô¤HÈ\Då@ßÁs�!Ãpo=ô¿_0XÆDNŠÜ%Ú4Ðõ{ªtßSUzöhÛ)ö«‘µíê6èztÿ Ýùè½ëU›h¬ZòŒÖ¹“¹¼Álš3޽?¿ãEízÓeStÞÖš­Û:×£PdâÀE²°œ–3ºøÎª€âg§7Pgzärô[Û–8‚„¯Ÿd^=C÷))BœSõz²-Ǭ˜`Q¯:‹Š‹äÂHzý@}lDá 5u§àE7kE1…5ÔÑ©ãb¤‘-š­µ:éÔÝ0rñþ–'Ý‚Wž¯£§mÉ‘rL¤ µYÑ+ œÙHl8Ê oæØJY̺ ½ ÏA0hŒìŽ â÷YMÃÈÉá–xÔl5Ùépüø 5§¬ÍJuÌ[Û7o£M­Ù8 ªFdä+&Ü9¨Õ&&›²»¤dWR”^mé§ÌÅG:b«¾¾þîÛ²ˆÖneÉ€Ú&ëŸcËÒç]÷®Ÿ‡Øƒ ¾­®ñ¤@ (pò¸æÂËèsO=D[Ú›™QªÚèY¬Æ†*rf£EÅešÜ6K£—Xç66"cOi­4¨ä±—Ê%j,,QmrÉÏR׊läw±3ÞE¹ú H‰nÝÛïJA>™4ëøÌc¢ìcô5 “Enáu ç0ñ¤ XX#ˆ‘ºŸÁÇw´kµï`—ãd›Î#OáÈZÕ¨ÿŽÚè0,sIîh/üaP‡3DB=‹c^¢shòƒ t»á#Ñ/²î]·»´—no_“ó53Þ/7‹ ‘G Èr@e=!±èE°b~š`"DÍž÷EÝ–š|!Ä lâ„8$„€!×cF tuZí€ó•T¿]t{À1˜µZµ@^N€ó+î¹i:0N>ÿüóq: Ì›÷Üs$œÎ˜[A¶@Ä 8¹A€# 8ÑAb�ù!/"Æt8§�õ@}à FÚ 8ë2|U×p|ã88 áp‡ãçà@À5á¬?pà@LEZÜê]­ÖŒÓû�AŠ«sgžÙË)C°r©7M÷ g?îÇà^õ ·a€ºÁÁ.Q;àäÞÄǶm[9 "`¼ãoÏ-Ï)[Qs"w€¬âÏÝ>ð,ÑN h€ ægµ…ób?ðÀW9½Æ‰s¦½W\ª—„¨ˆg…<½¨`£CØÈ&Hñä“OqÛbÞÞ»÷iN‚ˆc¨?Vn"jŽ)A¢b€„rÿý÷sxæ Ï¢ïá>ðýýÏ Ïm'Q4P.öIÔ!X º„–‰} -Úç¡ÿ‚È‚þ‡4,ô_\ÛÑ–ø+ýïÏÝwßÍ„ ôQÔrh ÖrÍõÙ¤6_½»B¯¹ Fæ#Zi±¶N1ÓŸzûR»öÁ©”iÿñ}ì¾#´y¼D¯½l†ÆkŠde„•wÎÜc múÄ}GésÌQÇ(¼»¶Õè=×nrä ß pj1ŒŽÀŽè¡(ÍXR^ýeí1X{G‘8ÉÒº…!„ QíT¨5sÓu—Ûí4Ò¤ía£¢¬éi¤í«f8”ä¢ABäqv£.g„sPÝV·EèY¬×DiGèÈêåÿNî*YÏRï{9Ã>Nyœ„(&'au~oò(ÆÓQ­8§g(:qúHßi-ÿ½*Sïègò3ëW÷,›Ë*¯DkñnžÒ¶ DWÛGzÿ`uÏGSèŸjLZ&@L°iq­¦ÑlÓ²‘½—8]Æñå•%:~ì8í{áÀ�Q^òïaÐç Y²þBÎjù$$×0!«ÄF|ß^¤ùïc·íͦèòåmm“ã“wÝ¿nD2øç« ±³CÊͶ±Å‘¤bOE (P`T¸þò«èև¥U=¬bd'„|måâô¿+FFÂT\56±ª‘“@Æè 2;ýÈb#¤•]^¦êä˜ÿ=R…žó³ƒÀšlºåÿoßrr|‘i¿¥[2Îͺ؇¶“;'TA°XgÕý¾£]ï×ÕïìY_¶ûÎn‰Ô Îl ©¬‰ú÷Z +Ïø ×ÓŒn([pú௄—œð€N“â+Bº=u™>áA ‰*Y¤ ú™ùɼg›ŸPW?ÿž„L#+;³�§œ<òHL|öÐÄ M>ñ šˆá_õª7@Ê‘Èþ`ï§ñŸß&~ÿ—:ÃÙÒ/åN ltÀÁŽU÷  ­ÆJ8çá,ÇX‰ù¤$0~b;œÎ£½eàè¹Áò˜wá˜QáŠ+®ˆ÷ÁÙ '8ÆcÔ×aB"Qœ{²PÌIâä¾ì²Ë85Ïßô¦7q= Ï n( †V8èÅøŠº#H$8çÊ+_áH‘©Ë9æ¾vÄÜ7¢a<þøãìÄGºå¸?>í„k Áã¼óÎeb�®CôöíÛ˜ ý˜AdÐå^uÕ•<ÿBYÃ=\pÁ]×IáU¯z=õÔS\6Úmƒùûòd´Úí‡ö@)Q/DÒÀ¦›nzöí{ž 0—\rqŠ\ ]@º@Ûâü«¯¾’Ÿ%”ͳÏÞÍå ¯ ^h[ô-�ÏLH¨ÃÅ_Ää ´1®ƒý(oÏžóÌýãÈ8ým~…¾‹~†gzýõ×ó³Çv!XH_äù¢®8�ùBžÚ÷‚6Á6´úî åù$"/}„<oô?Ôçã}Âý /àI'3ª#/·Ëí¸8[¦JôÝ×ŽÓ Ç#ºÿ™&çóŒW@GÔs±~² j™Ïq%,…ôíôÿx€æ!½áòÚ2YñDŽXð*íçŽ4èöÓ'¾|„æW"Ú±¹JÿæÍÛéò³ê¼B;e¿?¿×*ÑË%{Ãîžñþ†Aœl;–|ý0•¢°Zá{9‹}ÄÿPäU,€)D°«Æwä\‡‰Av7‹$žh$䢸ø‘ TÞÙ¬ëÅ ºô”^Ö±eY¶Ö+hüA #?&Jú™Q´Ýa"êÙdt'e‚EiVKÔjvºÞ3ÿ”mR. :÷˜Ñ×Kq3.ÐéÄZÚN?Nõ Pš`ѱ ŠÙ6Ó»>YvžÕ@H¡<mÀ.cú9È øÞ6ý©âV–4odï±±q«3©ïþÎÏÏq$¸³Ï6ò®‘{ã6eïø1WÑhàwhKY÷˜:ÞüÇõš_fR2lZ­œ(/‘LMñûeÚ|» éZÛôä}û•>×_P”7Æ§Ç &Eè¹:âp[’öÃÊŠèYv»´=°ÌQ;‚¾tÜ (P @_DQ2›.Øu6-ÏÍÓüñQ°Z¯RÉT+žÃ!O!²×ò *J•2ÕŒý¬ltï6|cm»åŽmš¦v£Éö{=ÿòQF•¢.‚2T?ßÇ)èÒ_ú6Á0ò„#—;»•%ªG]÷%õâÕßàS…Œ³ÁtÂóx‘e@¢C¯"}ä¿z¥¿´“Z¾Ãh,+ õË›GòÚ¨ã8 õX òä“O²A׃£Aí(ôz~ýp?0Š£L í ù8ü%:BV8òA2ŸAÞ«}|âÿ]—Õî>™"«nºÜ$'rwŽ&­$‹ÐìÙ³‡pHÈJ[M¨�ô³Ê"{„H¡Ã˹Pâ5ÑC«Ë“g¥û¯¯Ìfµ‡&à:Ya$ (Pà嬾¿òÊ+3÷a\ÅêûTJ8¡ñéW6œÿ‚7¾ññw $R�R>½�Â"@ÊÀGs9æ-|ü¹�q� D ©@ï Ò¢ôÃM7Ý”ú9KG§xõ«¯Ë=aÄA(ÐØ¼y“i³›Ü÷͹‘&à´O;îíµ1‡÷ˆYÀ¹šH�¹ „„~@[J{ .�íP—¬úè~„ù$¹DãÚk¯ÍÜyR�Jý"ïù‚ð!€| ÉB xä]7ïý¾ä½?ÎÉ•Üjt(î!¹%tÅ®ýØ -7Czä‚›‚åî(qÜ íHPŠ,ÉÂô³oíoП}þ�=ôìÝxñ]ºkŒvÎÖh¢^bGùüR‡ömÑ7ž_¦/?>O›ãÚ±¹FïýVz×Õ³‰?;J;ˆN5úêžc‘:áú“ÿ†Ó§ô’÷OàV{È3Eî>[­ALÂj|èbÃêt\~‰˜�Ær{ØI9œúÃ:&'Ç©^«Æ÷–e€‰Éü7êÚ§K´¥ rÉñ!Öqe4|àn+’.Áp×<™ú¥ �R¡I I·Zè÷³_Urê»U \û¤¢§˜ß­VÛF€á…¿c¾Ã”\Ê¥À8:èEÍÆŠ1¼F]}SÈÿzñ‚üNÙr:Móž5éTb”ïÄ™ì^dŸs4À1´JD¤‰< ¦"\t÷1ª¦}È…A ëŠÀÄ·`S¾!‚Q3Ž7?¿he…ÐXøŽ´­f›£—mÛV£êTÅÈ÷“ή²ƒ‰zß*•*§–›˜œà+OÔ–YPgÌGˆü’äNØïd¡Wð>=¿ï�“Žvï^¢sÏÍ×I°Š4~/)Mbèw8±ç¥÷šà ö6ý=Î%î½ÇøÛi§ î*ìˆ ÔûÏçbRPJ+„@ÌZ‘Ô)Ëæ(çé~P @ ñb…Ø<Ã8këv -Z<>G“S“T6öžÃ©ã"-(B¤÷[nPsi…Ï«ŒÕØæ×DšÌûmçó‚~aŽ Ê°Ù˜9½ã'âê¤õ¹n9Êä&téBx Õùuóé£8–GìߨJA¹ ²È쎻aP,Öx•QΊ{ßQï+âL׎iqX©UM._Ž^E ”6(opª¼óïäU† :Hnó|¯‡ýeFy»Q—¼( y÷è¿ØR.H¸žüÖDŸœè”½ ÛÄoã~$ (b:]‰O®È»OMìÈZ]æ—§Ÿ³NÉ‘•F”B8H$—;€zú‘?² ABÄÐß)Eþê¿òü|#­l“ëK]²VèûöÛŠ:>Á¢@66üq>‹pQ Àéƒutne%R…D‘q²)wáõ{ªT«NÐßÞ·Dw?Ñ ÎÀʦ’ ÝJy(í¥Àæ}i.¤O>pŒxjžöl©Ò–©2Õ«VÞ™âÀ‰6=s¸EÇ—:l0¸øì úñ×m¥·^>c}Ã1¹B®±¶>ØÕ"æ8 ©;Ñú­oOˆµAyY‚ Y­9»E,‹ó?Q.!›õ3¬ª ÛC#Ò•b¢ÓIE¥gq?àÙLNŒ›¾WMYýú¸iòž§ñáæê‹0´i³ØÕ/ `u#W¹ø€í9ê—¶e­ŽZuå†D¬ãú]`ä†8qz§¯Ýn!½N‡WEQV#jrE@e6–¸ ù¯G¤ÐÎWZ§ª,Óc3YõݬS²Ä©­W¯k=Ï“j拎«x䥲Ä+ü*—l_I•D¹ÅëES2¶ƒ|Fv<^YnÚ~k¾/#ÿÒò5[-ª`áŠ[p¸r¶±‘ÕhjrŒjõš±ÅUø8Ø\Úºêò‡‹]2ÒNþÐÌ'Õj™ÿÖëµZ@Ȉ†uHò4È·ˆ Ö‹d±²Òf»ÎÇêDzÉ¥ÆY%š´zû,µIÿÖÛôo=׉ ,s±·KŠHÅìå¥Ü¥ÔYê[ ~¡ŸKäwÿ (P @£Áx­N›Ç§hyaÑ.‡ïr›3<°`ä0È핵Œ¾]5>5¤ a2æû°cS©™jîÀaß<A“Û¶QÙÈZárƒ¯Ó¥WFÞ6!]à¯ÔHtñQï…à•íû%½+Š£7*ÛŒÓMÙÿldÍûeÃDïÜ (§y¶O²èç<ÈRZµs\¢øe ¹B”5ßAŸGºÐu¡áªAª�‰CrŽ#wõÞð†8 6®Hâ쇒„—JÒJ Œ6­ññ &\”UÈÄn–yºO¢Ç@Aõ y|ÇvܯVj²œô½fYtt‡<r…®«< vE‡ ìelñ2y$ ¿ŽIùá“ t V`õ�Vï"´·<ÍÌ—úëvÓ„ ÿ9h2‹äÖm­ÿjˆDñï1+„¤ÿèЫ¸'M)P @/†Æë Aü]³$ßã¥Ä΂W[3J|‰.ÝY§Ï~«IOîP%jô);ò¾Û|„ެRÿâ\›^<Þ°rYäŠÈæ›9~û–:½îÂizçµ›èúó'¨V dáCÖŒ1ÑØY´(›'ßvé4b‚„ì€àò:q(•l¤u¢ºî`‡¯gœpÐ>f.ÓµÖD&†>ÆdöJ)7·¼-#Û¡¤ë;”:Ö¡$å B°�¦§§X×èöµ‡ÉëÃ:jO¶ÏæÍ'Yú[´Š¾6Œa«gÊ !Ä ‰Tź7õ"÷Ó*ÛmTùWNYÑšˆ°ñSÆÑvXâ(ùiu‚Ô׺±=LLŒ0¼‰#Ô·Yd-ÂÐÎÚ©‰ˆs$ÇSÅÂG¯wm½’8,úÕmÀw­Ç{9¼S[Ær¦UØ2øü’#XH˜i›3æ3\¦cãPSÙhD°³5@2ÅÒ2½ôÒ¶uÁ†»Ê@ºš’‘jµ§ƒM¤Z±Qk‰‚ A•²%QÀîR Ò-#¶§î[q#>$$”Ûm›JŸ-óÑÓ{Ÿ¥çž{žî¸ç1¶9}ûé9ºæª 韼yÚØ¡6eÚºpsvo£-›&hvv†‰)â4Hdؼl;áâÉÚÉ(·KäÙW³œ2§Š=K/fJêiçY&³P:•sl?sDX)Göçõ)ë°p«=Íódò,¹{LÙ&M݂´_ @ ±ËxBtèóvŸC_á Zž\frE©êˆdå6|ÂV‡ËMj¹ éAJ¤jþB¾ê4L¡mLÛej­,Ñâáyš=û,›¬sÔ Ê‘©GJ`ˆŒQîñYHɨ«˜¤‚üˆü'C¶H-´ UJ) šBm6šÔ‰$êØÆ@!…­CHD‡^«Œòœê>AB”½O“ ü¾2©‰�ú8Q «ä f“¥IŒȳ r…ä#@n”‰£¾ÌŠ¥(Œ(eâXœ[¯ÇÎvŸhi Tí�Ea¶‘+ûèÑ£œ#c£´¯OtÐåö"ÁȽfEÑÐÏA—­ÉYÏÑߟu}! èëùß5ùAòm ¹Ä¶!²OçG=öX*¥Œ¾g}_:}ˆ&KÈ6}u@{ƒ„ƒPòrúøD i_‰^áD|  ËD_Ó9î (P @NbžEàmK–œ¿­J?rC…Þry¾ö\‹~.¢'†tàDHËíþŽ£HþrÊSD%„a4¿KÉ2‚J¥A›&ªtþÖ:]}νúüIºhÇm„3>DZ²fHƒ+²·vUp)ˆÓ3„œ"D¦§C9$ÝŠøH¹ˆ|ñ‚u w”è$"«‹3ˆeèJw»È9â­1„úWäz¶Üph'+tÛ±ñ1^É;’;r÷e?ÝÒˆyÐç-…£yCV_rÍ=ÔûHµYÇyüÞ¹"{,¨?eˆNYðîYçeÇ"ᬎ¨QzÁG„ª‚ˆF€sªÂ`”Rv€ø A÷ Ù.ú´vÚž ¬†¸´þ0H› F5Ò¯¸²³ÅûNÕÑ2s|»Ý¢å¥¶ùÛ ÅE,F*щsôÒK/²ãþlNÉðq•j‰êÆ€¿}ûV¶¯Àžû™ Á¸ #?)ÛV¹Ç¸öê ²+_¢F³Å„ ꊬܷô­ù…%ºóλ辯=O° ª^<N{Î[6¶ºc´iÓ,§ñß|Ÿ™¤É‰:Ÿ#s"w™‡¶:Ò¾ŽZ!çSwÿÖöÐî[ŒbBˆoo’÷TGkMÊ Lý¬-+põcGÃqö½€ÜB¦rê>{ο‘#ÞÄÒM¤ïÒžÙ'8=ý»@ ؈¨Wkô¶ë_G_ýæC´41F5GRmPÙq ¢²`±Ü å 4³y–ªˆ ‚E­J­•&EðQ•¬Ö˜_2rA‹êF¦‰É¢±=(ƒ ¯ÿ‰î)äÈä9ûÔѳŽíEL–ãã(lŽäkm‡–P,Ö!ÐñÄ)'ôëHþ>ÝquøV”—AAqzç)õš €rAZP}¢h`¼÷¾÷½]9ÖqO`×kÂé¬k(#*ˆ–lÑ1Šå2;Ê9+_GÜzYÑ@²@ÈÁ_|‘Ž;Æ4D9ò‰$º-³ÈÝAÚ.…®óÛÒ'Âø×ôË’ý>)Ư—^¡¦ÙõyƒQP.rÙ#úž)ÈØ&ûtÓ¦4)B?½ê ±lÇ6éš<#¿¥ï£.¾Á¸ôþ‚`Q @ 8Ó0=˜O™ÎÛR¢w\Q§¦ÑÉÛ¼2“†/Üì@$Í\Ù)_æU U〙0ך+±L~:‘ÈÀʇ“![û€Î�¿J[ÈÁKKh³`õ+ñGŒá˜B/p£ìPâ‰Lž^«u"¾v¥t'_ާK¢;X眀¯¬Aç25iÓ6òªì~ȩש„¤Ía}£\¤: réhÀ¾{sKʼÓìsïg¬[K g2œÇXÕáQŽsÞúÇáMYwFJÔJÅ8Ž+Õ®ˆŒ¾^®‰R€}ŸC&vˆ£ùTÎ|r cæè çŸ^û{3(Êå =·o}íûiçö¼XiaaÞÜf[ÌîÝ;hÜØ5Ä.fSë<ãÞKñ_û)E¨ªŽ}ûƒe]áZ­vHÛ¶m¥îyªû÷¿È¶À—^ÚÏ¿ÃRæjtàà1žÇ}›`º}Ê]ij“{2ãD)¤væK CKDpw|óˆ�æMØtZ]mcó¯ëÿ•¶·¤ Ìk*òk[VbkdÂchlœ¹±¶.3NeôÆÍ6‘‹äåÛ !»•HÛÄ|ùh#¼Ç (P Àú@Õø0ß~ãMô‘ÏÜJûPuièëÔ(9½ržAmàø-ÌÏR`ì+5BÇͱ+ j/7‰dñ²9¾±°Dã[7Qiÿ1ŠZX‘ToÚO¦©”%K ®we“Ò_¥G,åèÊ×ÉÄ fyAÐÆ‘] ‚Å:„8šó D­�øJˆ d¿¬ê×á\AxÐÑôwíÐöÉ( „(ÿu…—‘ ?ð?@7Þx#;ÔõKƹ!Cî#pL-)[αu·Ç!G#~C¡DuDù«ï_G_Àv8é‘ÛqŸQZ‘2dÛ¶mñ±âÈ/s(ÎvåAçRô¯çGnð#„ècuZ Ÿ“Ǥ—g¡ Y.Cžµ6®PV´«|H_Àù Çp¼0øuŸÂŽ=4ÁD÷Ii'I#õÅóº¡Fú">œû!ƒŒ‘Ê_‰×k°Ç1è“B@áP˜ÕB(P @:qâÝsÏ=ôÚ×¾–£?,cù‘G¡÷¼ç=´^qÇw0ô’K.8Ì}£E@y*t½b?«…+)½µK‘&«ûräF:=Cë¸e?t|-7C&ÔH9$Íiu£‹@~ŒS,G‡„X?MþÙVãÀŒ¢„„žvž$ŽD&ÐM©(²¼/ºëWµ Y‚D˜©[h]ÏÏ3¯eï0”p¨Ã,°ÂvrbœÃ«¶ÃÎhh C2h·Z|Ðç1jç~OrE”8ìà°ú:øõ‡pÂEîRë!‚E‚ˆÖ,ºEè¢kÚw†2/¨ÅücõÍNMÒK¥9£6)ŠS5TX÷ÕvK¬Hœ¨z‘¢Ã`¼?ui.O‘cm‘Wtõ/ߙљvïÞIµ×½†¦'&9:Å%Ó˜qÓ-HýŲ&~¿¾Ÿc'ÌÛ6x]Ý‹‡Ô\æë…^àŒä½Ïƒîsw>Ló‹mN+Ræ•‹°U•hl ý½·GG8•mÜÌÿ hżs°5¶"›¾¤^7×(•ã÷W¢Røö2±â=;—@/>óc |[YÖû„:VL]ªA9žŸQØ®t$}3¹4 B ãý%±A1ñ϶‡ÌÛëu¤.P @Î<`îݹm;½óæ·Ñÿý‘¿ä¨%£SWŒ|ÑÁ ˜YÒ0;Ph~7V¨±¸L3“TŸš 1ó·±¼Lí•&‹óVæiñàqšÙ½ÊFÖk·º)Â>ÁýdäôL²°K’EZíG.öëå_+rßÔ~ˆ(¡åáZª‹Vïwo‹uð" Ú±îÆ4±BœÓâd—ï’‚D—'B½Ž¶ †9mpÃùH¹aÓlTãÔ §‰¿H rýõ׳sÛ�$¥ˆ¬æ°õ#ÅúÃ(‰"eå Yà3;;ËQ |òƒ&‚hH™¨R„ÌÍÍÅéBüèÒ^ÉÃwêëö•çä]|£¤Ž(¡÷e­&ÐÏÔ'Èøú²ÒÖY)6šð€Ð’ržO˜ðiš ¢ï_ê#ûô³‘ú@™%×ÖiODy²Ô½ß„¢ ÆòÜq x¹CÆE-ø„!ÄIÊ.ÿ81úã¹_¶lC¦¾¾”)‘°ôo!PjÒ¢žC!õú|)ß— ü:ùu•Uk ¬_¬¾ŠÏŠhjU+e“N—i^ȶYоN—¨£žéñ kËËA)E1™{Žhc¿ßQfê…òÝ—ãý(€ñx›cXIéñ ]I2ìØ‰ð©ããìXÝôT# ‚„`ÃÒà×Ü(&$ˆ|‚­Ö`ÐiM12ûvâß]»ë9™¨Ýãù‰¬ÑáˆL“S4fÞ–9D ‰Ì)0|¬,cåúýâô™/ûpÿhÛQ´A4²Ö�܇Mi68ÚÁ9çœEcÆ~a$rŽPAQ½ûðǦ,ÛPªœ“D½^ã—‹ Ø^SêmZÆBžŠ³Ÿ5ÛÌGuóΜ¿ç,Ú¼eKê¶òêž“Ü}ð*/7‡…eS^Êæ]lÅŠ±¥F.€—Ö4‘!½`<Rcºš (Çøó¥ØÈº‚%A” * )Rt"Œ3d®®Tj¦½*±,—Õr&©ž9Ãz (pF�¤××]ùJúÃe#×/¯PÝøÌz3€ûª“ø»ÂVÄé@Í3‘¢T-»(5j-5Ìß±zD¼3~Qè S›§èøÊ1Š:Qߨ'C²�|iàt┟OEnìG´è"W8bEuLàtOØ`!UŒ,ØŽ8MÈFZäV,Ö!$¢€ß‘Ç.Òßušî"È‹“A;ÝuYYd€f³EGŽæä 9ß:9"NÅqõÕWs‹,²޳a3+Ê)‚2J)âB:’„­~ƒÙæ;öC‘R@¯â˜Ç_(upìƒäqüøñ8]‰Ü»ŸÒÂow¹Žvød1¶t»ùÏÇÏ«™ðº |ÂLVyš¸ ¯ë“.tš˜¬6âü—*êƒDóð¡ þu¤mü>*At@Û'„œ µ@Ê’zÈõ«.lE$ ~Û#|fÁ¢@ˆç¼¯ýë} cê+^ñ ºì²ËºÆHŒÓˆ:"%ÆQÌé_|1Í=öïÃ\¼iÓ&Žt´[˜—±ý¥—^â¹úšk®ás¿÷ïßO>ú(]zé¥1uyúé§¹.{ö졽{÷rô+óÄOðõpÊ‘²1/ Î¯|å+y¾¸÷Þ{9:ÕW\ÁäÉ|.¸àžÇî¿ÿ~žãŸþyþýú׿žvïÞÍu}衇¸¶oßÎ2ÉnÎg] ÀzÅÉ)ybS/õüt-Ø@iRT 2a”&Pûd_»Q¶”Xq—{C8m¤³ÈáŸ2¬Î’^Ë’oT‰âãD·4ñÌ:l#­åb="ëêAwd N„Xá;…º£�éûÆ©b NÑRÐÓGQ¶³È¿fŸF”D`Ðu8==¼<¦@üTÎ$‡Y¶?;g|ôs] ¢AˆDÑ2£ÌüLÎiX]xÌÈSuc(´«ûâ#ŽS|x•/J)yd‹Ä`#„Fé¥À èEö:3"X�e*Ù:ù]JØ®{ TÒ‹Þ÷•e§dÜ„\†1ªÕjógl¼>Ð9;ŒÜýoþï£?ø£ÿMÏ<w„¦¦¦èâ wÓµ¯8—¦§&z–!v,yW4É D–”´Ò°ïY'²+JùݪØOÚÆæ§NÊ ãcµýOË~Ó¨‹œáË,‰ Oì|8¶ÄaÈ«•z<gƒ°Õn#er3¶Š],ˆJ*Ò†ò¢‚0^ @ Œ˜ÅwmÚB×½â*ºÿ™oQÍJÙFÃb£GðY! ØŠñ7ÎÍÓøìÕ?ª†(³Æ¹¸BMãGy:4ówc~ÑèF~š™¢ÒÁ9G’Lëä§JLÉ*–:<J.ÅY†˜åWl ¹CëëÃÆJmãøì ‚Å:ÒX|ík_£o|ãìp€"Ρî ,¨ÕšPÈm�Ñ@À!½áôðï²JR„fYûN{‰ •°©=nþ¶c¥uìW^y%;7²^*�÷�'VôÊ4q®Ëµ­5qÒ ™ãرcìLÁý‚h‘—vÃoœgG0^àž4¹�÷’GBІJ_ÉÊsþ˵õj[:Pž‡~ºÞþ}èßYût™R®6‚æ‘ $l)�R‚”):²ÊÒƒoò‚‡^=¬¿ë6õÙþr}Ÿ¸‘}ŒD¯DÙ/P @màC(®»î::tèË `NÔèBHëyd̵8î…^ 7½éM<ððÃ3qÇàœïùžïáùù[ßú“&dn<pà@¼ &Iê­o}+Ï9ÿøÿÏ2Ü|óÍ,×<ðÀ\Æ»ßýn–!n¿ýv®Ï9çœÓóÞ!#€èr@æ@9ßñßAO>ù$Ïï}ï{¹wÞygJ)Pàå‚,éètùr­ÌWápçÖ±¦RìiýDV€.ÐfRE ¸X95`’ÅéF>9":Ô7¾ûcTB¾Ð:´£Ç—‘—>p‡J[Z=,dg]@½jÖ•  ±cÃ{Û¶ÑSg©V ºÜj <%ágDƒë'yíUÁ…dQÀ×ÛVsþPçJT €LäVK †¹N—³Ò#ÏŒî½Å ÈFõ±œ~¯HG:|U_�ú,> {Z²E“–W–ؾƒû‘H’2N”Ë|ÞFZѵ: Ó“1q-0ô;1,\ÑÙ T¶«û‚^)7!@s¼»3/¢Q¯sû¾Çx‘mŠÅ¥¯F°Ø²e–æ>ò3ÿŸï§þ×hÛ¶Mô–›^I—\rQ×¢¯L½7¶EŽX�B“%v~)ÛcÙYBB˜“è)bÔ×Ô)qûµ¿Ð)«ÎºÞú»¶Êwk—³¶9Ìñ Z ® N;ð¸çÛ?»éé—y (P @„];Ï¢òú›éá½QÓÌÅHùU®UËÌÑ­6§Î ;%j7:ÔXl0¡éDÊãÆo;;IËs ÔXj2 HóK´xð(Ë,‘Ñ3VŽÍSg¥IHݰtÒ~89:ñ¡VåOéJê£!'èÈ]ûúé•¥nÙÆÿ"Yà{Å÷µ‘E‹Ó 8õ±Ò+/át�?pTd9í¡œã!9Ó±SöÁYU™ˆ&ç‰&1øÂ»Ž4 ý¾ÃÌôãÇçâp®:õˆU�"£ mã±pˆt¿xÉŠŒC‡:V¾0ÆË©k2s_;Æ£Dª ŒLÇæì…¢•¨Øö»#÷©k=Œh8V$]‰ìǽètº^~hsý]_SCoÓÄŒ¬J+GºÎº,ýÌôyR¾8§´© Òy†Ml�iG¯ ðû„¯‰":,»ytFü™EH2º>þ*½òN}üëäA3ü‹ô  x9Cµ˜£ñäŠùùyŽ?ÃhÒæyçÿE” ™+9çbþ”hP n`|?ÿüóù|yB ¥82Ò{!ÆqÈ68FRu]xá…Lø�0ƒ( ä!%.ºè¢xž‰u‚Ežá$\÷Œû€|…h¨3~CVA™BJ-Pàeƒ<Û{pê}Êñ¥L ]ô–dg¨H×eÖdÁfüúG¥ø¶ØÝÂ+CÁ#Œ¨ È.`ÍnµiáÈ|YIà¥8ñœˆ©ŸQʉ”å ÒõHxé¯ýÆCÖ-N"‚ÅìÌL¦!eµ¤�ë^“s”ÞèrCvHÙ¾“ßÑãk¸ôl§]íâzÛuÀêpù÷±úÖqmWkËUGó ü÷"ÝþÙ sÎãíwó_¥pŠîqQ˜"¹¦?äR Úúƒä…-~9ÍHØT²l›ÊZ"Ë œuÌðïÿ°ç ó|×¶]N…œÈéž(¢’ŽJÄ£[ÛGÖøÄÁ“ñ]æ„ä „ØÝÄû Ú¾‰¹`nn‘ZÅóNBa‡;ïÜ]täè úïÿ#ƒO³¼>ˆÍÆ·M¥ëcGÕF›#;¸<*¶î+ä±Q‰¬!‹Ø`¿I£í_Rù›åH™E×Õ_tå—¡ïMìyé›GÙ6¹½fäÆÛ�ˆv#$®Ó'É8S1¼ŒZ @ýÐ;Rᙆicã|ý5×ѧ¾t=ôìãTžš rÕø+FîèXyˆuäv‰‰+ó‹4>=A#™c'7ÏPc~™‰ø»rø=ûÒQªšy»±°DM+\ª¯¸Ý´¹ #Ê<•‰qªLá3Á„…aô1�õ“­nÈZ\_Jü½êBéòD—C6ƒ Ä'/k„~†¢Çœî¸ãºûî»Ù9¡‘åHp $ösÏ=Ç‚6œX1 g…D1h"è뺦û–@°¸¸Ìu7ÊÅoÉ—Žó@è€$»ÞBÔX¡Ã‡ño«´8CŤl¯»HÚÉãô¥rÙ*.ÕJ™£i>|˜kbG?²”88༠ØX ×—È y}_9Ê{Vy ˜O*Ȫ£O®ÈR(õ±þñ€0ô¥ ³ÒÎ�Ò'PÚE“%¤O䵩¬0EÔ'’ˆq\È8òœ³ Ó„hC”nÃ^ï…&tàyZ%³@^¾Òä‚gžy†‰2wgű£“(} dND׸ŠyBæ1ú+ÏdÌ^ZZbr‡206£¼8Ì­9ßõ<©çMÖp¬Žæ%×—¹FÎóçî<‡¤#+PàeƒuÚÝ­ñ ‰¬ ßo‘#“´‚vü±òq@e„RGNÓ¨Íî©À9¨:f[+„óÃÛ²äî(vfΨ! Щpfú`€Ð8j;± !ãm›„䧺z)Æ?¦ÁSòn%5Þö1®'²¸uvLÚvfªMŠÖ×LMaþ(åê@½ˆ!ÝÇH |qÜæÝG‰WÊ$\”õçLèdzÆ"+×G6·õz† ¹‘uøjÉ5ñù´zøýM×EVŒçE¹Çn²¨¡Í¶¥†1’š÷ƒ<=6> rO¥fÇ9D·€]�d°Ò,;‡i™ªc3®«êvý¸´±e 7>„Õ–FÑ~÷—––©ÕhQy¬l#/¹-™–µ¸ŸRF}d\ç_þ‰é»ÌWâqÖN3>!ËF±¶s/Òç4ͧR­Ä䡬zÚbíÜ066NgïOm뮂7—¹zë9@ï(ÑWìjçô˜P—3It¾/Eêâ S‹î£‰ò[Û®ò"âêñF)bB¶Ei’—þT+UJö!Ƕ6KÎ)P€2‰=Y}QÐEæ)P @¡—ÿF/ÓcÕzÆEçí¡®º–|ìQjWZ–ÐZr~¬¶ÈÆ~Ù4úà5Œr¢Û•­ì?L'ž}‰Â¶™³Íqa¥Ì$ŠÙßiŸ§9&r &m D¼hÍ-ð‡õ‹™)ªÎNQyÀÔmZ.Ì’±zù,]VÒTuæfZ·r¢o‹7;9¯R¢$À‹5B–qÛVûÓŸþt¼Z3ïÜQ„…„Àýì³Ï²SeÇŽ¼JD_hÏ‚Ñ`Xh4Vb²4IcbbœÎ=÷\vÜäÇ-,ØÕ£Úx*W׆TRí�ˆƒE˜åroA`DûÀo\_GHÈÊ‚ƒ$ÔGr¤â<œ¯¯ãöš@ ë¨ï3o ò' ÿ8@ËjìkÊ6ߘ™EžÉÚ íˆ’Ùo0„ð‘•úCê$ÏI¯L”ýÒ¿t ²¦_ðN@Yñ\ @/gØ_G9Íǵ×^Kû÷ïç(Y@ÈjÌ© E¼ôÒK<ö"2Î)ñ»¾ë»xlFÔ-@ȈŒ9Q"Þ쪫®â±×|ík_K_ýêWé±Çãí D"¢[€pT$YóÊÆÜ "%¢Q . ^rÉ%¼×EPgÔåeAæÌ (÷YÇ#šä— ¬DQ·ke6<À±_.uùª;¬†R’Û<dgP²¢6C¾vÜ ½+Šdã0õÎ’ÝWc1P„8×8:‡vÒF݇FÐÉÂÌ:±l¥ýh>)¢o4¡!²©A°ª?e~Ù3Ó Á"_rSÉwNL¶“° ëÐh'QûT­W;eoO¢“AÚèˆ]<¹"ïš•'÷ÄÿŒˆ&!«Û³Ú:­—»1Çljw,¡ [õ*xù뤬JµLQX§Ö‘gÍÉU ƶš=²Zmø1©úÙJÖ ý®»Þëk ™Û-‘§~6ýlFj‹ýÄäÀ#îDAlØ—S@N$å("±ÚE6ÇŽ/%1È;@=§½nšþÝ]ÿ,;Y/4Zd¨(û|ߦ'‹Èd~”ˆÁ�lƒ²HÞiù®É Ykõ|–¤lîØ´]”ØKeˆIWœ6­TJ5Lªl'ÛT…°¸Fã`3 ÉŠñ^Ë„˜Å©¥ýý (p2yÒÿî£ÛÇÕG8˜š¦Ëοˆ¦ŒrÁØú~ ²Ds©AË ËÔ:±HsϼHó/âÔ!±MÂLïˆÎßi´©6Y§v£ÅçJ‹UÁ´eëÄ<*“ãTÛ2Ë{ž2B±Ax½_¾–EfrdzœS, >úÑò ÐA0 Á"‹©ê΃rÚ+¯¼’#Zȹú“8¼mj´£ALŒÙÙMLÞè¥ø@¡€³F+Zèó �šÌ¡‘ãâsÍ_@P6€ûDÃ*X8yP>VØê(¾Rç³Ð³„Õ¬ýþ*Ÿðà³Ø}%ÒÿEæÐçú†iw|ÇýÉ*a¿ÞppI¸^RŒÚYÐĈ¬3º/ Qu"‹ÿ¬8NV kdÑGàÄó-P @—;0î"ÇSO=ÅQ³$V0îÂÈ{ï½÷òü™i4@vÀ˜Ší’ö ÀvDʩ⮻îŠÉŽ2`nÁïË.»Œ¾ýíos$ ¤èÀ÷ûg¤!ìCd,3Po”‡².¸àž+Î>ûl&­bŸä/è9U¶c^À9(uÅÜçGÈ(P Àé€"P÷*X^¹iƱR§e!>ˆÐV¢J¹Fà|ã5·ò+ʰÑñ:í(vÄS¯Ü(Î" ;V®¦Áj?Rc´ònYÓƒùt¼}‰cŠU¡ê|+UŸ”s<Ê6ÖÄúƒ·Í‡.KÈX¡£#Xô–ÙíC�1~fz’ªåJß6ëWfg¶=ÎÌÓÒ¿Gò ¢n÷þˆÉÝ×<ý€‘Sa÷ÂÍQ6Çëeþ”K5ê•*!-¯¸/°«e#ÏXó\'&0ɸ6X»¬wÃh¯¿q¬²°gE¡uÀ—<y¶úÙ©ˆ¢Œ²ì[)FÏ:Aò;ÀøN6u Þ]is"Ö9¢ˆCR_êYOm×õØvüD#ã¢hÏR®Ž  „R/@"¯Ê1z¾ã#6-‰„¡ïG¢aø¶V¹¦Äu*•ÄnæÒè2a”\J“’T–¨‡Ý1¢ó.X-²ê¾.ú?ú›µW ‚EFÌoZZ-«»ã¯O´è&]®ãñÇUõÊ /¡«ÌçîG¤ŠC˰«¶CžÓC!­™ßcó´ï~ W¨R«¸H!µWšvBd“›µÌïêD-ŽbY+ʰ… ‹öâ26¤¾m3•Çú§b;Yh�]eš è–ÿHˆèåį(§ùÈGèŸøÄÀÇk'õ Jh–ã<‹,�">—_~9¯$õ!Ê(NøH$m‡Ž6}33Ó}W€b@ÅÊSï³×4‘BM°Ð@¢g >†8ZMSç*¯rž™™p®`å+VÜb+Èšˆ Ÿƒ´á ÏC?»<ÃcÖóÊÚ®·ù$ ÿœ CÇ_´=Ky“œoþ•û(MöÈ:O§‡ñïW×U¶kVšÈÓÝÏuŠ9vèrà˜Ã=(P À˯1G#æ"@ŠôçJì¿ùæ›yNÀ¼ˆ¹(0–âóš×¼†£>`;Ê€²$©È1haaƒÌytçÎtã7ò˜Žˆ˜sQ$®¹æŽ>} 9‚Šï _à<"W`<Çu1¾K}ðäÔr êƒ9�õ@97ÜpCœÓûÞøÆ7Ƥ Ü'îå\|ñÅ|Îzqè(ðòD¶ó0E°6ÿ•KFV­ŠlhW—7ÚËæ¯1\Tí¬eˉdÅŒ1dLIZ¿~×÷¿ŸlØä“3Ø©¾[Û:±ü{ CY}fè.þEä•MJW´ãm>’mŽŒ…vn˜veëém3³SÆ eK«Ex¦×Ñ™Sÿ<Ý1P1-Fm ] ÉÂeS)lj¢Ž‘ul_OÆ©,]¨jœ¦õjÙWùd¾7÷"Ë]v[H9êY©Æ×±öŽ8UÈ~¶§ lïqx@⯠ZÐmwÊ´'Ù«d–#ä9K°â”X]iÉf®]iyÛ|Ì;±´Ò`¹üŰÌ_–ÅO}H@Y ”’:œ|ÛŸXè~_êNçáÿµû,‘)kì2¶´³^ý/Ž#ßyÀ‘?ÌŸ25’Ô‹6‚¯KK¦‰Ü$ R…oƒËZ¼äÛ(í±TàeŒ<²ôI‰Â]ѧA¬€cKúf Œ–Ô:¿]“æææâÔõzqój|n§ —ì¹€n¾îzøÉÇh±Ù 1c§l¶„µm{?KûQãÈ1*U‘îϦ,‘¾>9FFË)ì þÞZnRu¼FåzÕêŽ7Šy½½°ÄŸúÖMTß¾™ÖZ¦+]ò–|g×m Êý$Ç3 Áb þð‡yÕè0ðéÞë¯ÜÌrÀcõ(Âd¿ú՝ޣ>Hè;�ße…ªfÀ ÑAÊ”à½Òƒ�’^V™Æ %u–O®'d£P+8—jBÎ…²gL¯U±º=àXÁ*] öê\˜½ºÜ~¤—~J¡Žò ÷ËË3Æôº9O¶éûC»ãÚ¦³êŽßpBÉsáÄ/_Mõè¯üõûœŽ„!Û%R†ÔSç½ô#aÈù~ÛåA³"qO¸ç (` … $ôÆg!�L50þb›¿À¼‰”"øh€È€³}ûvþþ /0¡bÏž=¼ÿÎ;ïd9×@” }czÞuu}}èí8$ùŽzH] (púa‰¸»7²ÈáQ$+H›½BÄAަ`>íN“JbÇÿøØ„]J j‡võm$¤ðRü]Ê·2k·cmP5lÔÎewu¢T´ŠÔ½ãP„q‡±"ì’õù·K~êë3ƒÖ=9Þ‘¤;Žø%rþ`eAç¨ÐÄøÅ«s‡Dd.è=3Y_O-FÄB@õÃAõÕSt¯rQ-xla§”Ø>dOö a «VÊü—ÍikT ]|š !RA× ›´Òtª² %ʽf|ûÏ ïç06ˆÕ?zDt: k •³g+2O²)›hÚ6þmÇòÄÒl´©‰\ÞÍŽéƒ ó»Åv!ØÖ@ˆn4[F—§M›7ÑYFÆ>çÜóéU×½ÆÈÕXÔbm.Ñ*úª®÷É¢‘¶Ê¾ŠÝ¤msÌrîèúˆ-R¢RtbçGÒÆÚ†jßñNl«¬pú|Ê©é=q>$rNWý3HŒYõÞÈïCþðíÔòÝ.šlð¼433eìÝ“.U3(P Àš‚ç@#ãÄXØŒ1 s¥D7—cO¯L9�LõÆMõ­7¼>óå»é«ÓÎÏfŽÛ- MZ~éÿ `×�¹ÄÈU¥²ñÉuJTÅ¢µÍSÔn¶©Ý¨`FvYi1Á¢6^¥°eö1áÖ]pDh9Ní¥eÛ¹mÍ£Y0¹Â}e)G.\ê3´þ–rRÇœ©(k8 þøÿxՃĠ!«»V!e(y¿1¸}þóŸ§ë¯¿ž~* ,$ül—Èͤ8múÕWrÛëGÝìk|ÜË%u‡‹¿eAÒN%k,µŸˆÉX™ªÃúùÐm…c@0Ay8Î)ÐÑy&Z¸Õi/tóyeú¿³ˆ¢xÉ6aÕ÷*WHr¿B°†½”£sLÊ6M¢@è/:”¢#¬âÞ‰ûDËÐåùm“•¦ä8Ô+“…ÌQ @Ö0çîÛ·n¿ývž£@®@äŒ ¼<‰ã‚(åÄÒÊ€/CÖÏ+œÖ¯ìˆ"·Ù1Ùj5±ö›‰Ö‡ë Ù€Qf™6_ü&Z§äàœ¤Y+ŽÃôõ „ø´±¤kekF‹a ÝöùDòÕ¦‰RN!_7IÃê°§LOMðªÝpíD%çÄ+°‘ÑO7Î?q°Ã!aØ­˜dÑ·L™´dÆ,pˆz§o 6Œ 0úq©LcA›ŽÀ¹mœÙ-,t™ i­+øcW¯ñ`}¾Ï¤q Çùä“p؉oö—ƒ|ãsVhì]jŽ‹F!ö=!R 2Å¢1º?>O'°ºÔœ3==C;ÏÚI{ι€êcU㩳ÌÚ‡Ì [µöœaSìiÙ(>–WZYWu¤¼îù)ËÆ¤m\h'½È À=‹=KÛ¯´ Œ®µ›qt ‰pQ©ÔX~ÑÑZõÂ.ßnÛëýì&¢óâËy �%õ2CÂn¿ï] ôd*° ¤Í……¥xÁ®ïZ×ó™©Ú•_Jo~õôígž¢e#Ga^oÍ-Òâóm0ÜOh£H‚0ÑqD¤›§v£IKGB—*„,áÂÈ/õÙqª´lÔ<¤µ˜ÛYnÐâ³ûiü¬mTÙ4•qkéHdÃêb¡p)(‘i"9ŸÉ6g Ñ-JŽh±P,Ö�ûØÇèïþîïhµ°«J=÷ë•þ@Ö*ípÏsRcßý÷ßÏä‚+®¸"v„ ‰’CþJÄüEÈí^@yH¢W¢•Ë¥¸N:‚…/õSQ#‚˜p!FX.þŸ\”KHó^m($�a%$:ˆjá++:DVÔ]®¯8jr…|—s³ YÛ²Ѭg¯·Éóó̃´±ô,4㹬H/ú:ØŽýÒôJ Q@åñD¶ ùÂ'VèkkÂÏ ƒ»ô\ÃÖ ¢@Ö`àAº;~2Ïj°VÆÛ Œ#óAþì(}cB5vDp¼;b}jUodswFVž/Q»Óæ•·œæ¨bd÷©2*x¡DÙüÓq BõNnì½(!dïvÞÖˆâ㌠ÝÔ£“Ø}½Ï.‚éÖ9z"òñóâU9‰2`Fx®MG_{€ë†A†çLô#¹ð §=;Ȉrið3 ¨ï ªûä–†½m³$¬z4HºJs¯ÕФ¿é}1±ipjŸÈ®ú¯˜1l¼jßíj9¢Ý›¼Âiõ«ü9Ç_ù|z fýÐïyôGÏôn[±±ˆÝ}Uld-cÔ_^Z1s+¢¢´Œ«ald‹tüØ záÅmd»sΡ‹/¾„ö\x9G§˜˜šTó.úa…SouÙG4†ŒZN8ªN”Ž”%ï¹nO‘Cd±WÙEÍÕuÖ‹{¤,Aµ^ã“e½ÑdB 5–ù©VÊU~Y¶6MÀr5™&ë]-tž—7Ävª ;bž™™#J(P Àéæ¼M›6™y7d§ýˆæëN¼G}ÿïý!úúcߢÛï¿‹ZGæhùÅ#‹öŽØ ™õe#1Áb¥E¥M4{ÎVj.5Xö 's¬Ì-sФé4ÛhŒ]d0]y(`Qú‹‡¨n®]Û¶ÉÛG™¢óÉÈñ¢é’M Û}Kʼ䗂`1büíßþ-Ýzë­´–ÈJ5á;¢õ_ >ú( dW_}uL°°}=bÅ aµZvQ^¡Œ×rPï©\cßC=Äß%å†8ïK`æ—K.|ÙJì°·Ÿ’ËûhŒ¥`ßš+:X‘)U¯E }Uªu3`U˜o%m€hø+Š‹äzò�/5rÑÃ{âĉ8O¼´™4@3킌 úùø‘ ügæ?ß°‘E ðŸ±Ž({¸Ô’‹^ å ½eŸâZYÔß5 “!H Ò–`G£,¿¤ý„Œ!•¬¶ÐFs?‚†&®äATÜs¯1 (p¦Âæ?ó1jB…ÂÐX À™KvëáŒbÝ; ;dCm‹\hu�Y'*AÙè·j´iô¬ÞM7²¢b}Âo„,CŽHAmþPœ Å#NDþŠùnR~â´)S²ô »Í¥ħÓ|NrFèt“c¬ûuú8­ý½¶^IÖÛ8ŸÛ£áê] 2Žæ¹ìs>Y?°¤Lq+]—ô{)›‘  fôÝv QerêÍïŽ]%1ó«Â„¯VûÒ„€ü…”J"ÙÈ5 lXûŠs¤›O}l‚æ–he¥ÛLŒE„ I÷!‘-„ �b""PÀ~ÓFŽófËå9_¤ÃGÒÑ£Çhzjš.ºè"ºä’Ky;ìB :÷B©$sH'[^_%sj›äêÒþ#Ç踱åMŒÏð;U2ïV©pÔ%?͇o‹²¶Îj¼ð(oA•oçË[(%éW ¯à9—ìâ–M¿²´¼Àï7":ÕŒí ‘¹JA™ldÞäzÚî¨íþ<­S xyAúؽ1oá7l¢H R @ë–d1CJÍÇÀºµá ùÀ‘,¶lÚB¿ô/~šî½óKôâ¾C䜧6 „]Ù`x89®ÝjsdºÎR›Æ§'hÓ®mt¨ý"ÿŽÒÈ[Í…%šÞº‰¢É:-!¢dìa§Ó]—þ<î¾h>ÆäñúŽ-I±A~¤Ï®mQ©Â®b±Û"‰N¶¯ò ¯i‰,ù„wéY·)20Jr…/4ûûzýÖÛú9¥5{ì1>ö²Ë.c¡ €ó]ÒL$©:l„�(ØBB/ *ÄÓO?r€³Àƒ©Q(ë•ØA/Nz‰œqJÈ`#$!X`øÝ^YæcP?Md,--qý…( åú¤ìÃ= lùáÇù<.tH@Ÿ™. ®OÀð A]FNµ½ŸÑ¨—ªë!÷"õ‘íšH"mà—öÑdL´â)ýP‡EÂÚ]ž¥ŽL¡�:¼¢Dïí¢¼úÇK›JÄMÖè7áb?î ϯ@ (P ÀF@ÿµ2#±ã"Š$²_‡*,ä[£SÔŒ³¢ŒÌóv€ÊJqëíä^ÉÊçÔÑI7z”L±å„#mHˆxu# ÒÇpEÂzC”Y×|ý0}|—'´:\Çé !°uÆ3›52z«•°rGïÎ:e�œN²Å@~Æà¤í`ë ©~ÃÖ´ìFˆ‚üóGú¼øUˆrwõ<5È7ëáܶK«vtº¢²ˆOÖVR挧½l/Ö>k ‹ì l‰8bFÈïשêÏÃØ‰†9vmѯkKàðˆ…`a5ö5±À=¶áƒ…F û´NºqtŠcÆvƒh“´uËVÚµëºòªí4==Íd ! dÙuÖ#ü¨ ƒER±Ç4›m~¯°h*›ì¼/ö%ù û—Yò®ÉwmʪަíUY¶+ü–NÖNÖa;(H2+ 8cž«ÕGèòëå§t^[ÒJ3~ÿ»êìla-P ÀúæADŽŸŸŸïZ¼¼Þ!Á�üÊ4Õ)ÇvˆÀEÝ´©6„ÉÐì7s}»Ñ¢¥ùªŽ×irfŠ–7ÍÐBë„’gÊk.­Pcb…êã–ZŸl.É‚+CÃÃÛ<z‚ë®Iñ!}žCJF‹Òç â¯No/< -È(#WhÇ}¤Ck$K ñ£ô{QüqVêöCHOˆB´€bPa Ú³Ì‡~8&ÈàYq‘,8/‘#S‘Cޓܾžs-w`(µÊ'¶K^9}¾£~8äŽäüîvÒß¡„ÎÍÍñ9ø®‰šL!ed1Ç{aÐGZÉË{nú>D ×$@þÊþ,h‚Î=räHW„޼ºhâƒ\Ï'°Hˆg<'MjÁóöÏ÷I*šÅ˜×¿³Ú ©a¶lÙB (P @6 "¶hz “lÔ;l²ºCÈ¿‘»Þ’ܹ1Á"v¹ÅùÙ‰(^Ma£%ô³ZXÒ­¢Ô_qêF‘Þ§ŽŽJŠttËìÉm÷¾eËûÉw{`(ä GÈ(«–Ê¥ò@ÇÛ{Î_IœÜB:oì©ÀF"M ƒ”>vÚsž¬!œþçu'åX•ñ§ëq :¯Õ½Ë™:lÈ1ƒCrx¼ê˜qƒÓJg©§­@¿‡òÐoÀ[ÀxU.ÙÔW–lqãÇŽQ«ÝŠÇnÌEË+ Þ‡ãÆjÛÖm´{÷n&Q`‘l²(u ›Òú Ét#kl¶®í–] ÉmÁ²B‰bO”PäbãË"WäÕ-‹Ðg[åÅG°ûEÝÑ…I“C©LµjÅ|l4`Œ ­fË¥,iÄשV+<ž”\ˆmíÐ`çýbÎiS1>¼<¡û¨,–ƒ·^¯Q ¬7`nãÅÍ:‚…ì[¯ö£7þßOÝJ—í¹€æè…CŒÝÁE§#%‰F²°<àT! ¤n›_ Ú¶-4»}3µ—Œ|ÇiD¬~½xlŽÓ‰€dÈ­ÈøÑ"/ \¸Çï'3Å*DrRãÈ Ž¾1fê2t[x RX.RßygüÖÏ5þ´Ž÷Ð(#ÀwÞI÷w—Úæ áÃB3̳Êè6zucµÌfD²€â±k×®Ø޲$Z„\'½-íèàb’ߪ·u¨;F})ðW»ÒI;ía(’bïéöñ‰8~Á v’2BHrm]®@¬@0ß¡´:B…Ü›ÿú¡Wt m€ÉSôüóôqzàáÇk²ˆž<?|Ž?žº×,‰|Ю`ÛC©—h’÷Ož¿D®À~!âH_B&‡äõû~ä }œ¤E)P @ (pæ#!”SʺìƒÎ€ÐÚV.󱯖AíNÀF >Î9á#ëÙ MÒÐKAòE¿:Ñ !‘„Qž£PÕÕcÿ¦‰½ô.%å(OoóÉèö|ûéÀaåHÃ:À8‚Åì4ë|ɽä/&x5zäžï)°ÒldNÁ 4‚E¿2}VÃ;jtÚ a"M°Èî—èÖ+ËKtüÄ"UÊÖ‘Û±ö cI\Óá]€15(W©Ñ^b‡°Žl0†Ñ“}gע̓‡?^wÕ¦Ç¾Ó ¯^bŸ!K„=%(Õiqy`N™šš¤mÛ¶ÑYgŶì×i]i÷õF¦~¾îY–˰KF4V·v}—nXGgET±‰M*+冮³¿ÀHoËZÜÆãÔfA¦жE®“‘aJõRüœ%L³Õ$Iÿ!uAi-ã¨jÑ:{äN´}["#:s ¬Gˆß~:,DV>]ò~_¨jÁÿûQçÿ…몋/¥ÃÇQ³ÝLüh”H«<>c¡¸‘÷;Í6-/,ј‘ñêãcœ¤¹ÒäÔ R€T±pôMmÙDõÉ:ÏýH´#GºT]V1á[Ö‡þACǨT5¾ÝÙ$ÔÉú±5Á–•öÙÊw®Í\ ‚E|z¯þÌ3ÏÐÿñg­¤¬ÕtNq<w:¾Çù¿ó„øaðè£ršDÐD)¡”/„ ý$@Vxî¹çâS“„°aó¡1DÀŸ(6:C’g2 ’CQÊ /uÂqºžòAØ! ¨øú·Ô÷ RÈO)yìôõ4¡_D Å@¿(~ßóŸgžáÓWþ�i¹×,à9ú MrÑí¥û“n;]gýüu™Ciâ~VYm3Hä9eöK[S @ (PàLA‰D C븕‰Œ½ÛGN70ŸÐ™9RrsºôhݬúŒ<¾Gн?†½/{?%Ò'¦ÈÑ®Ì~„‹j‡¢B›WiúG°ðI,Ínš¦²G°HùìûÈûý ªwçS;ú —÷刓 Yðé§Ð˜:L5Q½V'䜶ƒ´^ž½Hb¬^£j¥Ì ðŸÞWÅêycˆ­”KÎ.Q†G˜Êû»lÞáÎ|È6ŽÈ³N°š|t?@ÔÑjwîÜÉŸ®3ƒî1Xmšuë¼ “©›mC¤Õ˜œ�9!PÛª±J/þ'4 6JMˆòû½þ›ºr†Ž¯åt²Væú ª²l€É÷ˆ‰’J„ä#ñ_ØkLMMPbk-¢W(P`=dâR)èò­g<³w/ý‰ñÿjLONÑ¥{Χo=ý¤³QhÜ©IXøÑaÅ‚šˆZ1·@cãc4>3IKÓ´Ð9A&!GºX<v‚&¶LS}jÜœ¸L̯è¤å¾.i<ˆrvZX’±Ù`åÅCT«™Oú"J5úÀF°Ð Èùw)Y‘’ƒ6˜Nñ²'Xä)‰YÂnþüÏÿ¼§‚ã Ñ©—­OÙÃz1«‡®Ó·¾õ-ºé¦›âèúe¢„(#šà iE èÛô D6|]’WÔ*. sƒ+¶w: Q£Ó Ó$ǶBšLEC"Pd‘� <!퇎ƑuÏBö˜¥ƒ2Ñßu›êT#�ê¡£Cä^|rÄjž‡.S²‚&/hr…´§ô ´™Nñ‚{îÕW}¢D¢ðë&ûóÈB’úêëøÏHŽ„шýXáQ, (P @6|}*qÌ;gFˆcB%vŒC¢MËÈ%gWâÈ’U"FزuÜ È®§+O½8c´S.f\°³EÈ$±#)ŠÖÄÔ¡åéaTÁôyÞbȶŒGÐ:‚ñ}¸Ó33Ón…¾”OªŽ ùÅ×CÕŸ²÷n[ò5רÔëÛöÇX `Ðr3· 1hbµG0'5‘"¤:–ýèþ¬òBOÏLñz51Œ‹P‰+•2Õ*5Ö¿#ÉSJÆuàH­×«4 ø 2Nö¸AÎ?½8^N´§I¸�™Ô&9ÈõÖ#FY¯N;+êQ~Zì–²È+!\Øw±SJJ±óY»¦¯Zêùìüù GiQdûû:]Ñ6âr•LÄv6*ðr…ôCÛ‡BN-S @ëv¾Mëzk¥¿Œ þð‡»ý‰æsѹçÓ¢ñ9>ýÂsfö/ û‘•>œ  I¸(óKTŸX¤ñé šÝ¶™Âv‡–Ž/@é0²€;æ˜Ù¿yŠjSuŠŒ$Ð$„‘ì¯så6_š x»V^<L“œM¹Åf=—”]Æ—(&\tg3Iæ«õª?®Ŭ» È õ¿ÿ÷ÿ¦'Ÿ|²'›†T¡ÏÉXVSÞ ×Ô˜››£'žx‚.»ì2þ-)>Déï~¸=þ=J_ÿú×-k‰Èæ Œ,™B++rm”#Îþ´€(†½„Ùæ;âå8ù­ë@iÂwMÐu´D®€B…ÈpÖ#ʃÀ'Ó Éb˜ "‹\ÐK9ËSô¤=å{V ^M£¼Ú¦ÑÈdÔkr„½BÂJû ¹CŸ‹r%R†&Kh‚…^Å!ÏJï½bÐã (PàLÆÈÅÅ%½… (P`½AVYŽ 6<vZy'œ"pðŠpF‡ÂȥɫBîwaÕãÒ|¹\è±g?^zzHµ(¹gÈÈolµ`„ì –sóŒS«!yû«pð¯*Å«€û—‘Þ6;3M5Ö=ò£øedÕgðú‹ûÚþ‰©*ÖêCÃb5Æ¿aôõµ,{ÍÐÇI|ºG®íA/Ç6!_r@íVdì-îïÕj™<†ŽB`tÐ:MOOÑô|Ë–áô^I—‰±jii™Á ëße¬®7¤!^ÝÖ±„£ñíT`c³Ì°©`Ît¬¹Ó$ê¿Ç· „l!﫤Û—¶qæ•›Z%Ñkãêñ¶0Žn!63&YEv™ /°›‚€S­TmJ-Ô#p«A)YȤë_ÂN—%´íœh};) (PÀΕ˜ ÛG,?øÈG>BO=õT×vTäéKÎ;Ÿ=LKËËŽ_áìB4@ôGc£ÀæÆâ2Í:jäÿ€ê“4³muŒÌјgº5.Û-_¤‰Í“T›¬S3j{ÜrStÖ~AÎÆÎJƒÓ…ŒíØÒµ;u=OçËÒäí³Ô‹ô­íÂ÷o®6Ûzņ!XøNZy9EØÌsNûŽö,¾~Ñ%'Rƒüýßÿý@ƒ@/ÖržQD„ø~ð¯ßï>ýsüJZÀ€ðÔ“OÑ9»Ï¦ÙM›¬ o |0 ÷.ŒcUäuÎrÉq(å}å+_¡Ã‡Çz™ ƒecøì8¢ƒ½FÀÆBDqŠŽ¤ Yå Q"âÕ(½Z«PÔjÇŽzICÚÛ…¡Žz!ŠÅÔÔTrAùW¢X;vŒÏ1@÷'Ÿh¢ïyµÈê{2éúƒ’.Cê(Ê!>:‹ ›ˆm Ô@™è‰: …|p®ñ(CÞ i~QÈø-‘D4y&/刎^¡¡ßW¹WyÞ Èø}=«tÛúÇhh¢J¿ã³ÞÇA¶d'[֨ʾ”#)ègô>´Wñëä™(�Ôj£YÙX Àº†?ÅÙ›Õ®üs½óƒ>Ç8yHHîþ´û;×QÑn·YZ?¸„Œm Ã.¢9}Àɤm^=âAÄW ñAE‚Ðë>ƒÈ®Í"btÿrïkpø2}”"Ø[Ñr¬ÝÎ WÿN¸L•pÜï¸OÏH¥IzWà É–qÊòœs²ÆH¯´ »téä>t9›fgì^v$¥§û:©/ÇÇ: Võöib–Û£(UM²ñÇ6€EýY‰4IqÛö¬Ë�Äÿ¾{CÒÁäÇÄRÔM XÅ'Õ ãg);¼b×7hô’­û~ò=§­ƒä¨®ªIñ]¶H=í;Àï™[&÷jût@M£G¡Ÿ¶5Rí;Q«F4æìö|µ ‰ÃªÑWkB¶h»IËͶ­”Ë5«ðZ¼3»Ìùó”EâȲU z•g÷…®“÷Øï§iû„=ÎF0õÇr¹!ÍEqÙL,QïAË~I'zûÉêj«9p}ZsÌÜT¶¶;W WÕÔsTöˆ<;ééÔ“qíV»ãFŸ ÷ýÝ·‹=LÄŽ¥£[è(:ÊoƹoÇ69ŽHÑIÍmöÙÛé¥R…JU=C`°»‚8êÍ­VJ"“u"G�+ðrÇ`rD†Ea^ $:ðz·öîÝKŸøÄ'z3iüP—í¹¾þøc¼�DÄÕX+f6‰Õ7-d9Z¦ |Œ6ï,Ñøôµ½óÂ{¬™ë[ËMZ)—Œ^0i.@Ô\jr n·(Ôër0€?Dýh>FUs-*$Ó—XÊêÚÖŽn|¶Bø´LûÛ‹&YrŸ4]m‚¬¬ÐéüÎÐËp£YSþvIƒ€ßpXãåòÒaœ©YʉÞ&‚~/džüòû9>©ïãO<N7Þp£5^€aêÅ+œ`_«Ö¨fÚõ¢Ëèßø†9>¤VÓ:ùñæØT ½€kÀl/(ét§ ‰ó™É>§ÑlŤ©7È:º†¤+ѤÅBrµ‚4==MÇg‚ÅÌÌLªñ@¶¥ê8Bä)‚òœ|ä9üóˆ:Bz~†ô B’" †S}ßÒÆ~ŠÝŽÒ6(+…õ¯'Ï”‚IÙD)¿]³ÚYêˆk€D“E¬òŸ³¯Dk…ß/äþ*ù«Û8¯_è㳌RyÆ‹AÆ“~ýpPCÐ dÞ˜×#Lƒ¬ë[gJWÿÉ)¢×ø­ûh¯ºçÉ… ^`Tq»@ŽÜ¹dÀ1=)ˆRäŠÔy#p>ȆÈEýeQö#^­!«F}ùPd-Mz泃$šË}®ÄxE„ùцü’JYhw8ne?xöPglËúô¼·þˆúmëks$cÃTÛÞ‹Šd‘–=ä{HÝŽLŠS8¦uçîºD‘ȹ6—¬èW©»Né´òD’qb²Æiâ=}ä+¿ óšñµ»÷$ÿ:Ùœ†@”|±z:ňkÞû0¶~­¾rñsŒ‚Ì+uÙ†Cû¹Ž¿º‚{?ž~F2¸V lzÒ$õ¦_^ºìÐì3æ c')Q:Ýëýl;Ö¾ƒq¬" p› ª+Æ€Z¢&W¬î g1e8‹5yéÔCë· ù"rˆ£üòwÔ-I”ce›èVR¶]t“lïŽ|Ó3mÂN,Øî¬æ,Á¨tÆaIyïÊ v9¿Ÿ½b-ÑjEq_ìé_~ŠZß$vDȰcj²>Æ •Ê%¶IZù£ìÞ—Þ£c#T„R¶‹Hã0XòD@–ŒåÙƒøFx+ùv#@BªÛÍV(l  (0ZøúI1ÎŽ¶M×»~ô£í{ 䆳wžE‹‹‹ôØ3{í9/Q6Ó2H«CËsK¼€}fûfšÜ<k“@çX²”õ²,¬0ÙbljœÆ&Ǩ¹Òäèa›HÒZ}:©K¢ývÛÍr¤=©$5£‰óÎêí÷ ­IÛO$::ŸêH#ƒ¦|ÔNé‚ýa�÷у •"DXÄâX•UôÚ¯#ChG°jå¯ 9Û‰‘T>ø }ík_Ëu€ûBºFžÉw8Ë}ôB¯ï;ˆ{ò” ÙöÒKèðáÃtÖYgñ›"ʆD7][ë´?ü0ÍÍã  ‡ÁB £Z±ƒ…œ[­ÖȆÁµç'ŠŽ&;HYp8¡l1ôIû ¹õ'ÿääd|ßú/ ×À_<oIЄ¸ˆ£]uZ¯5R)UÈöaDtÐFSÙ'÷ƒ �À3ÖFjMZÀýr¯ÒÆò\�Ýg¥=ðm¨Ó†hÒ‹8tûɵñ‘´"ƒ´¯<ï-[¶¤êä)ôñ]®V¸µá^ßADÆÙ&+!ôyR¦O–ÑŸ^\/ãó ðǃ<"À F’a„ÍA®9 $å•ûÖÃà—}\Ö8ê·MÞ÷^e(P @Á e™ÁO²¢¼}Ý>¬§UAò•g ½¡R­xŽu•¦Î­2×zœuD¸ãSÏ3"‰ºÍ«+¸»:z#)ôŒÀ®ضA‡'nD¶HöRÒPA×y)95`Z �WéÇj;ƒ\¡¡§ü¯sA¤žššH“®û|gwD©¨"Zž'¢`Ô/morZ_жµ%W¤ÊÉA÷X¬¹×! äþÑóQfr}%° êÀ°iƧttE°ðˤý'&ËVŒn]©ÒxmŒÆÇŒn¬P°{E“–––ˆ6SÏzöÃèt íä]Õ®D èZ–LaÅAœ2Ô¦5òõ÷€l„½àBì:éh£t¬Gð"¥zB˜^¯:a–Ξe—駯%p¹f«óÚE™N²~z½o–¨b[FšFsż¯¶¿ ÁBút¥„ª×ªÖF]*{×/¹ßÊ>¥Þ“®}”¶;ñœ¸ýñ{T¤È- (›÷‡¶1xYࡇbÿï ¨ÿÕnã7Ýwø -!­³JqŠ9^l0N i{ÅøãŽ/P©R¢ÉM³41;M­†ñC·Cê4!×`^7ºÈRƒý©cÓ–dÑ02wk¥Ia;²!%"\$$q«jj/©íù0å.,Q{q™ªFWA,ƒEN·‘*™xíô*Ž@éӾł C°"„Š}'8:$œ½ò›xÎá/iäÜ•–ûÅ ÌafM·Ýv[×õ}g½O¸Ð×ÌB–Ù‹`ÑKéôéY)zo“×МúôÞ§éÜsÏM]_-mcx¨Õã¶>xð =ñÄ㦭L|@›Ùнö»„Ô“{D¤ iüÅoŽÁÊw;Ž8!ÏXH¢øà/Œ³R›#µšÚ/A²‹ËôäBÀ_p<úÊ$„íé„ôc¤„#)9ü>ƒ{B¤NpŸˆ:²…Fbk_.D“+ä½B®'ï¶Iûk²K²(J½§ø.ÏõC?⌎’œ‹s$‚…OÚkÈ>yCŽøÏT§«‘:ë> }KHú}J HÝ„Ù; Ü6©£î_~®Ð¼ºúB¢üÕõÎ3‚ô3˜hø†‡~„p°¤ï_úG)ÿX\²”v1HHã Ê þ{4¨0žÕ® (P £ ¦ÎËÚ©¿Åð|ÚP­Vbò3àË0Ö)_MæR÷ßÑ:ìþ£–d±±vDHÉr¯Ds›K´ åÌdÿŒ³„ð±ÔídæS}ò©;Ñ+ ¯µÛÝ$‹¾:ªy&ÓÓ“1áÂ^?}€ºå«¸_ð1Xõzq³uqwÕhè@ §¥œmÝ÷"†³@,lzãHœ~QWÃä=ãüö˪4m¤ß˜/r¼=¸×‘¥¬‹t]/µ;´ú"!}Æ«gãZ¹”[ž€ï)²«Ý™laÆ·±ªqØ6ìâ‚1^Ô³Bƒ _ût§ÃÃŽ¶¿ñ‚4¶·Ø–ǘƒ|ÑV–…IÉy¾ýDƧô³w´©Øñ݋̒ÿÞgéhëecLŸ˜‹cOäÝGÞ!Ãö‡4á1ê©/ç]gÍž‰)·Ù¶Ñ"º—WLþñí/±KiÛ©@Ûc`·[ÏynþDj¶mÂ>élfìì(….õGÀ|-9TÚL潉/iÉ%Ê'±ý…Üó-M¥@^NðÇMŽÊ³±xyáÓŸþôPÇošž¡Ë÷\@?öm#3Ýœ×9¸¾Ã*Udþ±¼lü©+-Z8:Ç‘,&f¦hrÓ4G¨hDËÔ1þP ,‡4Û´tb‰Æ¦Æ¨6^çþÈ$‹–³h;‰CfÍéÆZ"o9>4ÁÂÚ^\XÌß>åÄIªÖ6¤UfÃ,Ĺ.° €:íG]¥±À68oá<׫ñå/Ž‹€ýÄOÐ#<ByNI­|ø+ᵂÙo0×e÷rôÝtÓMô³?û³¼íw÷wéË_þr—cVê⧊Њ„ï�–t ŽÅQ,:D[·nßQrxKqé ü}àè…ýÏÇ+Â(!8Ȫ~©Ž``Ÿ›Ž`uEDÀñxfžOê,Œrù.Ny‰¾ yñ#䉬ö”¾€ó@Ä@™BÊrˆŽd¡£eœ ŦËЙqMVìT?Ë#×蔸_´+î÷©£¼heTÚHˆ8¾âRÆHºMžëKT@ž¡D“‘•�šd#©~P¦<Wù›9W?[y6R'}?>YÄ'eh%ÛïúÙëPÖcô8”õ~éè úú¾±BŸ«•{¿?øc‘.K×_ïÏ2¶e²ÊÒm§ÑuÒ5t;ä3,ÒeäÉ"ulÐU)’•“ ¹4G˜Ž²÷ jÜ,P @ƒAK7k2‚Ч˜¨ÏŠçÃ`5ó]ä+²‚NhÉ�2§eS_–“²øB¸}óŒräÊÙ p¡ùcG¬èN‘i¿'d Y“ÞOño-„Wž½.ŒB'—¶»t‘túå²Û:Fnžš™ ’±8 â´î±7UnÆÉ™û’¶ð?¢Úšê§µÏ÷Zà!áñóÉ󣓟³IQÇ$¶¶ ÝjôŒúß:sóç-­7`…;“,Ì 5£zGeK-²‘##X¬5‚@ÆSyg•þ£ãþÊX\qï·~™³†ál‹K VYxøºž9úòccµØY¾déßÞnþÌýr²Žñí!ë­1Á,(¶$ß~èÛVô>mÿÁ_±1Š}JlH€,ƒ}JìXþâ•8H«Ác>²�§R©ò;”Òö¦rl€ îøÌi‹²èÄõçÊG™dÓ (ÐÅØY üqúÆ7¾1Ô9 ÎÛ}6“.}ê ã73þDD­*ÉB1CEôÖ×½ž~íÿÿ+¼ý×ÿà?Ó}j“ã4>;Å €"t±B1¡Æü2o«ÔªT5rd»Ô"jZR8Ej9‰ akÄü%Ç÷L‰îÒZ0×XnPE†ÈDøßÈ;ì÷í¸©Ahu?ÑþÖT>ÅØ0 6QZ“(’7O€cÄ ¿¼¼œ:À±óóó±ÓXœ¡wÝuWfÐçjåC ìyçeíÓ+ä}ȱoyË[èø@¬DüüÏÿ<ýðÿpWòÊÉ«sj»úòÜóÏÑÎ;ùg¹ZRÎâä÷íÛGßþö·xA»!DNÉ9íq¼D‚°ù ÃØI[ªVm 8ßêΚ‹\DçÔÆ³k4ÛL–Ç3ë=@ÈâüH+KY¤yÎø‹º‚d#‘OP¾g('³&òŒ½œ¸¾ƒ\§C¢DùCÒªÈ=£ÝqŸB„Ѥ­¨êíÒÖB”Ðni{M®Àw\Gê„çèóE ÕﮨzAˆ1xNYï“6¼ëçæ—¡ïUúmDB.ÏWâu»dyެ{ÔÇúcž>FîÁ/K_Ó¿7ÿؼctÙy}S_+«^~yâ—Y=²Ö$/J¸0JÝ÷“Wß0ãXå (°VÀüææc¢I}®>Dù£§!B–*C¶$Ÿà©yäþÚðô"“j¤F^ ‰SƒPä{¼ß…¬\'…qÁw˜aekäB†fjã6¢^ {Dz¿5âˆ.׿îú½´+v6ož¶ÑÃ"›. ×=un"¯l]¾’/3Žä\ïžhuXÛx{Ó]“ø^#¢`Hgu×3E(ú"¸4̈jûš®Ü0abå<Ýò[Í;Ö1ãN«ÓŽmý²®T±x¤ìVpõ¹\2F¹q.™£eìM¶w ‹<ÝqãúŸ›èŽþyx-ÃPþ³%ŠŽ}Ïís°zp-S"ÍŠ¾,í’Õ€ýû–Öq‡Ç)žFìï·;&ÏF Ïê~Y)çtjÛ|¤éÄi°ºç-SèȲ@LoˆGˆ~SωQÛ°pìøX-&gàbOd{UµbmÌ\f%–k¤ì0êžÏõþø™° kgð`5Œ¤ (0 »ïËwÜq­.8ç\–v/­Ào) ÈUWú¿üA:kÇNÞö»ú úÅ_ÿ Ýõõû9C�mš¦E»dômDŒ$¸)êÙe©iþŸ\½Ê2Ë68¦Z!"²I:bù}€:ûZgóØ\L°H¾cû€Ñ*F7€~P)±]§T-3£½Út&ÙB-_žb™q-±aZ¨ÁY:”½¬Ž‡€+Q �8Òý"pÃY-d€/}éK)§f*¬B—�Ü£Þºþ¾£Ô¿7O®ð1¬‚“wœÞúì³ÏÒ«¯{uêš¶]¬SþèÑ£¦}î çžÛëlh6F³eÉ Zy±äq|[g«ÕŽ·çQNœÑ¢Dè0~rŸâäׄ4 ÏJH�RqúûÄ¿ÍQoÜ—ôI‘ç,^-F5a ‰D¾gE.Pg(ŒÉ,û‘ÿí¤Ó‹øÄ�À' 9B“tûkã·¤ÙÖ¿nC>ĤÏôJ"ÄDÑJ²Žt¢ßKݺŸùQ"¤Þ²Oú¶!b…NoHôA/„ÔÍ'Té¶ö·ù}_·‘´£¾/§üsòÈY}1‹‘g ëõ»ßöám$Ov»´BŒÈ0TdÔLÙª½{Žh0ɤò®]í ( 1’86òØjWï"•=üN-É�²ïâ̈éD1áHËq¡›ªõ|-yÐ)þ‹¦!oÐÇme^ÀF n6÷DQœN…÷;ýŠ›.H;‡ˆú§:ÓòcÇéSâXõM€ yÑ×̶͛7q=±ò¸\)»Hù×××N·]µLÿ²‡z!’ãV‹é«ÇÉ žéç9zÏÚ !MäwÇA‰ig|J×чdìw;ýµiô>,â4=žIµRâ(½mÎB~[C¤7ZdÓ£F¼È‡6 ÿìûÙVÛ– iBë£%÷ÞʶDoõÉLB¦±c3tg;’( É9Y)€ú·ÇÉéRkú2ws\­^¦Q¢ŸŸµ¯—½Qo÷çÚ^å¦|jB>™¾ÙëÙb×J³É6Ûz¥Ê!·AÊÔf#±oÅd)U?‰ê*$ ùëÛYÓ}?©=,YÐÄç±í*àß•j•ß°Æ6ËÆò 5\™–mJXåt“ÂzÙe^Œ¨ Y(P À(áÏ:JR Ì×wß}7­˜Ó/:o÷¡'ž{Æ’,DöðWøD6²Ùo~àCôÿûµÒ_½×È%šœž¤es\cÉH ñ3uJ.š¤ñs5Œ<Ñ©R3v£K—ªVâÈ¸ØøßD„Ë"0{Z§)¨ub‚³w$uûéÔNGbé²”©ê†Hˆ–‰zñ¢yYÝÇ.vÝ8ö¸ C°ðÉ ¾Ð,„ 8G!|Ì.O9áµS²^¯Çeásçwò +½Íw^÷ ›ï+½„æ<g0 ä ‰Ðàþëý¯ññúúÃ*3±óÜþŠ·Ã˜¶ÿ tî¹çrn@aJ3+»Õ¤‡~}ô›l,«¸Hâx—‰H§ŸðzV!±¿‰œQ´b^HÎyªÒpˆr$‘ÄÁ¯'>µAö¡l¹7‰< Û²žƒ”!ib8%Šçˆ×)6ÖCŠ©›U¨ë~¸$¥€(x>¡BoÓý^¿?Iz—ôGŽÓì©«ÔI—ï“¥ä¯Ü³oh•cóRthƒ(Öºmô{« ":ê‰(ÄØ/Ñ?üzÉß,ÂD–`æGD‘ò²Ò™ôS¬åÿ½—¶È«KÞØ™W¾>&+‚S?)JØë¬Õ‰ƒÖ'Ð!9»vþÁ•Ÿ5ž¤‹Ý8DõŽnçÌÑ#ÇhïÞgéÐáÃòº÷¹yrŽt ‹<#FÙøêÝRÿú5™œš¤Ý»vÑÅ—\ÄŠJO™Ý¹ï¥#ôÂÁcf\VWP÷sïm—‹+ÈÜšߣ£¬zHùê ¶ÏÎLÒÙ;6ÓÎm³ÉF¯LMpÄk¬•ù-Q¼äÔäj¡*L{rÝ3“zE”M‹Ëü©OпkÅmÅ¥Dº¸¬SÜyºÕúÏ8gn~™Ž§…ÅefâÃqÏÎ{cÌB‘K”|ØÚD™puÔo)õ¸&‘Æ´«’V“¹™Ø@¤Ú“Ü3ˆb²8LÂØ8o«35Q§í[giϹ;NÒÅ;d•¨„Ó?–çí]¹:gw†äÙ…±³Î ÌsêDºOmTp NóÑc{ ¦ýžzí¨wF^còž½t£HÈÔaŠ<ŸYl9¾mÛ¼9‘sÃÈ:ºäÔt™Ôñ]æ<êØPt’;Šÿ5ÔCøx¢<ç'1DqyÏ2Òƒ¸Þ.Ýi•í™-W™}AŽïœöp»âóýOÊqêÆq«“µÙ vÂŒëD©+ ’Vniƒ¤Dk‰â¨/ÄàvÇ-2¿[Ô´× ÊœJ MLÊœ=W ­/öÚ¦¡õÊîgV"ëSNÆX»_¿ÇQªœX’ „¼! 8ô3_ëÙGc­ç† õÿ•‚Ñ;i´Žž·/o¿}L©dŸgªD‰ÜÑó½\cÝ—žŸ_12ü"µ*6:D'Ä{›Ø@ÄÎ$„ŸLáÛClµ³ÇŸä'¢^àÙ B™$¸ì2•ƒRœYÛ4å/PâEHÖ_J\·ô‚¤ž6ï`ع£@l;{Á^:~ü8÷Y¤ ¿ä’K⨽ýð /ÐÓOí¥7Þ| ÀGóío?N³³3ÆWqNüž(p2È"WÄ‹Að»÷™g¸¯7qjjŠÎ>çlÚelPåòhçöØœPà”âþûïg»ÄÉ�2ÆÅçÏß…dÁ²n`gë_ù_£?üÝß3s~™Å…’#YüÂøeúÂ}w1A¡>9Π¹Ü N2Mhå/-@Ü\iQ©j|mFÿLß+³ZûTœ‡]Ö“ÓbÝ-[‰C´‰Æ‰ªÍNåËxN œ½Kûñ,ÁÔÈdõg™ ¾Ø•€ZðQµKÖ§th£`CE°ÈZÝŽíx)d幤üÀ_í„Ö DÁÔ)E€o~ó›±cY;bzÀ•ÁØwDûÊkž€ì;…ozÓ›br…‹rë·~‹Ó—øåh2À0?E‡ýöçÃ/sÙ9?Ú¦]÷í{–zð«´0?gYØ.䣴¹8×uTÛ†6_©8®í•l¸X1øê:á7ÊR€Ü¿Qšp"NlýL!â\‰2 I:â‚”ƒrAB£¯¤ÔÐ÷pª§û}Jú®8éýôò]§¶€PªÓŠè¾+åëH0’:CúYèkðÊ×nò[êêGzgåG)ÑÏÖ_äšB¦AD9O?{?5ˆ~ÇDÁÕã‡~o%bî÷‘¤¹ » z|ðI ºÞºtûjò‰OšðÇ7Ÿðà+Ýúܬ1AÎóËÒõͺ†A 4§Y÷”‡À]VZå-4hùYcvWÙjÿziŸ/G$Â2"D=ùÄStË-Ÿ¦/Ýy=ýô³¹ ÃàÎ ïøA§Cwºÿnprghï~Ïz9UÓNù-[6ѯ¸œÞýîwÐ;Þñšž™ <4ŒBrÿ7ž¢ÏÜõ=òä>:rtÁU1íÏuýô˜)ÛôïÔ<ÍJ•.#}o¥íÝÑâ9òG2\×öMtíå{蟼á*zÅÅçP­îæV9/bÙ?.cì/³#ß¶p`Eñõ’¹“.‚¸TNŽ—ˆTÄ))®œ;#í€õs¸g¶ºn6yF ¢äx×FYr·œ„4Çç–é©§_¢gŸ?HGÏSÛ\¿…Ôg&µšËæ= y%A›?*ê¦(¿ ãy9` KÌîo½¼Ò0ʳ 9ŽVر+b¹9vg89Ïì'ÇAš­R½§ÂŠzdClø‡Á²„©PË­¤Ä§Ñlñ= <=ÊŸ™ªÓù{vÒ›ßx ÝpÍ%41V÷môÈR' ¥me®´“AŠ68ù}$–5M?ŽÚóœ\zêÄöSD°¬v\’Q!íД!5PL„øõ$ÛY¤aÌÅ%p‘/d #‰bض+RrWt±EÇ_:ñ¶­3³+„eÜÌÖY»å° Œ¨Imð©Ê¿nVY »`Tòðú•Óv‹èúÁ»ÞquÍ [&ulÊ31d … A¶·ÙêôÖx>/Å' ç ç×`à `êðøÒæI«kZÒ>Vr%ë`‡A”ñ˜w;F.«NÐì¦Í¦´#RIòg._÷×½"yß²¼öšv¿>^œÐvîaª ›guZ§À“ñ\+%þM]-Ò×^;(ã©1ÃVËÕÁ.i‰Ô+u•ãÎ@ýCÕ-óø ygtŸôeáµ椹ùŽª¸w¬Ýi±<†w¯Z­ñ"yT×3.gÀúgµy¾œJn¾µ‚ íf"E¥LUNYŲÈ\­Ž‘ý–É ZÄD2iá'pó©jë~¿þùçéÖ[o5¶‚§ã÷öÐn¸ÞûÞ÷D²xðÁéÏþô¿§ #bQߥ¥%zøá¯ÓöíÛé’K.frÕ>ÿEþ¾k×YÁ¢ÀHÐ-ëˆüEt÷]wÓ'o¹…Ä)ޱ}Óì&úÎï|]}ÍU™QÄÞcu"o}ë[ÑÁƒØÿgÏóëæ—K=îƒ ¬ÇFÌõí9ßÈ%mzü™½ÎCü¸?ó…ÏÓ¿ý…ÿ“~ÿ·ÿSL²€Nð;ÿׯÑ/þÇÒ§ïø,•Í©@¸ïDMù¶¡Râ£é4üÐlTȲ%Z”°/°i9´½/î*AúKW7ßo~‘ É&oA¯’KQ`5£ÈEŶj™j“u&‰à=i{Scq…–ŽÍ³œ{XÔ¢ ƒ 3óhÃŽ<t„šF°¤Б ´#6ûh¥0H9)yä‘ÔvÐÔŽ\@"bhhöt¯?RžÔ1¸þÒ/ýRʉ‹ÈŸÿüç»ÎÄѨõqÍ”¾|àÀÔ9ø@ûêWï§§žzŠt;ä9m¥ tÚqÚëë~Ú !‹HTíXŽ ÙQ”:^¢XÈ6&D¢`äA`ï Q K;]JMjpSðÓ ´ÑEî !¤ê”9R¦ÿ }2Në!ׂ‡ÿ̤Ýåyøu—çá§‘ró„ŽGJ܇ܫ”¯ ~¿“c¤žÒFMÅÕ ã”r!Øè~§Sƒè÷_ï×íÛA¿7Y¤ ŸðEºÐåúåùí¢ Ûú9ø×ÔeK[ës†ÅhŒÐùNÏÊ÷p}”¾ÀEò®O}êW À©GÒÿžÙû,ýáþ Ýyç—hiQJ=±Á”¿A÷Î6ÄÚÕqöEü8Ò×rÆD»¶ß•‘ì?zôÝu×=ôè£ß¢C‡ŽÒ¿þ7ÿ"·*w|åQú«Oü#=ûâa[/rc_ÊÝO™ò¡À'¤±<…ñ}êýRÙ¨ÇØÐkÔHÍǶâïAD q!JןýÑKÇNг/¢Ÿøž7ÇùÅN)²Ç[§¤-¡ÅÎ}W¸'8U±/²ëã›ÌŒÇ!åX«Ç#,n=D²aÿ¡ÖU 719×µdLÈÔ} n>ÅÇvkƒÝò«7vËp¯|£öo9 &Oœ8±Bã¹ðüÝt±ŒZÆé¶²Ò¤E£s4mÅBæØ ŽÖV)Û\õp¨Ui¬VæHmQ¦—Íy‡ŽÎѾGéÈ‘9s­NœfoqižæLÙPœá8�a¢dW8OÕŒâºeó,]tîvÚ½c‹‘ƒêF¶«ñ³h@‰m€dŽâJLˆnµ-A¹Á9Á!ß”»¸´L'Œ½„ÕË?{Ÿ=@û^ú"-Ì-Ñ{Þv+èü´Fd õ!Ï[ˆðuPˆXÑíGhãQÀ1&t$-Wq”…íƒðÉ…c÷ßýõˆ„1A+H7G¨=ád;õJÅ@)GNüNrÿ¶éA,(­S%Ó@ý ÔõÚ´iÊŽ;¥Ä9¤‰Éx›ÖgƒT]‚”c·¹".¯Ëa=ò|ùýtúÁprýk-3ßœ&U7yŸ‡hšžÇ¦vêIÀ‡í³–dòÊ+î?=uKâ‚ ã*Æl@ÈDÇjµºŸËnáI…§X&`´N0Y óÂÉ`PyLËa}Jì’×|ýYƑ؉¬ÊMÆ"!Ou§@H‰H4ÌDsrcòÉ'Œ}ƒ>ëhuL‘™5°ÿ½Ê øÅ×Ï´K®õ¶çý^+@¾i4Cšœœ¢zÕ’˜üçá½’…D’ŽCÌ�Ú.“e ó1È»#óžî×ÍÛ06ØÈ5p†tR.@dÌHR˜Ø1*ŽÎJUÛf �û“Ÿü$G¯À"D­À»?ÈÿüŸÿ“Î:ë,ºùæ›étïÑÜÜ<}úÓ·Ñ+_ùJ&ULOOÓ»ÞõNšeBU'ì×óÆÞÇ{‚þôÏþ”n¼ñFzó›ßÄýïàÁƒÆ'÷ºåÖ[hËÖÍtÞyçѰKB¿zàø l/†÷S Œ{£BéBÎÝC/>LÇOœH< æŸO}æv>F“,0¿ÿÆ/ÿ ëØ·~á3L°@êxÚA‹óŸJd=± òâ#ûGÔã> =Û*$Yü‚È—+£ø_?úikq‰´­ Š”lçÉú¬ƒ†Q";:[XÅØ½ÆÞ_ŸçãZ+ :aî'|Áøº¨¼®m+ÃbÃE°€� 6æàp…c´Z­¦›rŽ8š}¥ÁwØïÛ·ÏVOtwüó²Hr\*¤ƒDuÐåù‚1~¿ùÍoÎ%W|îsŸËlßyÛ«íßxFÊï¨úûòÊŠi‡9𙙿c‘#×߷ﹸ íÌf£²3¸ !B§æöÔÑBtÚ]'™Ðü6”HyŽh@*¹ŽN3"eê6“:à·vªëýú^5™cTðÛYûuÛèö’6‘6Ë:OúŒ@GމW3ër|Ç‘ÿ\äÙéïrœ,�?MŒÔK ²€6Ž C“¦|øÎ.| TûQ$òH € 41퀿ˆêñCˆYrïºmý÷U§ñßUÝ7u_õIþû(u”ò¥]2wªYmäüý€&Iý|2Š?nõB¾1.û¸aÔ[è‚Ücå:ñy”aÏ…„ 辎ûϸO£.¯@¶_?~‚>õ©ÛèŽ;î0ã=gü¥hD Z—¼B½k“7—Ù÷2‰agÇ R<^&2T¢ @õÂF½Ò5À»zìèqúïÿýoèU¯z%½öu¯îºîc{ÒÇ?ûznÿ¡”‘ßÙ:KÐ7»Ò3ŒÈ©q5RNþŒqÚ—Qt+ :DJ +kÎ/‘vrZE «ù¾½w?Ýv×ÃtöÎ-töY[ôMðŸsÞ +GÎQB T˜9Ì\€È„Pææ·k Ä6pîZ.3C%ˆxÕ{ÅÕ!4;š\3DP>&_”ù8Ëv/ËX,2Fªõ=#u”j2G‡±sAQ†k&^—œ´?§ôpŸçÜ ¿cœôSÓ5Ÿ°2,B1‡¼*ÙF«8>ß •å6Ù¢KEbÌ(ÁæS¯bU³]‘ }Ý>ÓwKUó^º‘ž?p”C&ÂL^.Uì]qBMã$À9æÜj½B;·ÎÒöm³œŽך™§]Û·ÐV£¼NLŒÑ˜9† Æ(¿¸h} MZXjR«Ó¤•F›WP@öš™¬ÓØæ*_{É(»¨üñù%:øÒ!£ü/Ð#ÇéÓ_ø*]tÞNºüÒó¨§/rÐï…S$šÅÒÒbʸ•÷ùÇØž_µ†…(k Ú8Öª0RQ=$öhúßož\’ÈQ–̹þF”ŠÚfu¯X×åð|"Ú¼eÚŽù 'é`öZýÓ/&Ï4êO®ˆÿ]½Ìu²iE²1ŠBÓ±¡Áýe¸£l‹Ü>·Škô'W W(Æw¤Të¸( ifž³«^+S­Ž4§u›ƒ8(Ǻ¦Õ=J/³1¡8/1r);;É逶'$вD"£h½JÞUy*‰\‘8ùÅ‘M©¿iûEú÷ÚªF‘÷÷ÔÃÚÉzG˜æ}Ì)!gÞ³ûúëŸi;§F¯sýz¯µžk#•9D»±.±ü2¬•µAÊE#…­I"²F¯Å#Y¶Åìw%§~Êâ¶Äzy&;FÀŽ9(r6ËVlÓÙ¢Ùíû!ï˜+v„fÈ/#è~ýì³ÏÒã?NoûÛÙ±+vû .¸€"€¾ˆc‘Bý¥—^¢M›61ñ„ ±íêrAˆøÊ—璘ãaŽêtùåWpÚsDÆaûØÇùx,úÃûù¶·½ÍøfèË_þ2}ë[ßâw÷¢‹.¢÷¼ç=üüå_þ}ãß ýû÷ó;~ÓM7qD‹Ë.¿ŒvìÜÎ×|ì±Çé _øûpvìØIoxÃëéÒK/å}·ÝvGÆ[^^âE¢°'¼ímo¡ë®»Ž Ð}7kœ iË–-ôþ÷ÿÏ;À9çœÃ$¿{î¹›S¯£/ÿ¯ÿõ¿èµ¯}-]vÙe<ÇÀwöñ—ô}ß÷}töÙgÓ‹/¾ÈQèŸ|òI&ß‚¬Ò"È`õ¡C‡èþà¿Ò?ù'oã¾ûÍo>J÷Þ{§ðÙ¶m½óßIçž{6G ¼ï¾/ÓsÏ=Ë$¨‡z˜öìÙÃQgðþ<üðÜúþÝï~—y.¤ýÿ/ƼQ~¥+.¼ˆ¾úÈ7ì¢`GH€!,“dadßü¿~•å¸[>w•«e&N”‰ -bòwéE¼ÄiCâ…º±îA.ð^À¤@ù>ÒT '8Ñ"‚þcÆäR s§Cy>%òÞYƒH}µÉ1šÞº‰ªu.arvÊò>Žÿ}Ï´Õg6 ÁT˜É<„™,ä íXÕŽA1ÜYŽ@q,"D–ÀwüûìgÙÓ+´óWœþZ¸—sð°’E®øÍßüͮȾ°ŸV~³·e(åXêôM›lo8çŸyf/ JÞW§zëAÄ ¦êvÊ;(ЫÐü¶‹Ét|ÏŠ¦çpŽ,¹CÎñS8øŽ_Ù¦SiøÎtFcØ4,yÈSغ•³n§±¾l“T8ò[—vĤ!“½D~Ðí.÷©¯¯ýþjA&0è²´£^¾ËóÕ©LäË>¹^–S_—A\×IžŸ6pˆ¾ÓNÎGÆ8‚1d ¹oÎ$‹<újRŽn3¹OÙ¯ëœõ‘±Aߟ¾G=–ùýV¾ûa—å¿ësü:é±I¿Gò줿HY²OGMñ릯룗‘¢—¡ßA=dìxtaícïƒW¶8$ò®yÇkmt*P�‘§¾øÅ/òøÆKîGÿÜ?Qï ]¿xÌaFCããýž³9Ë#o_büï.$‹ì2 _}èQzvßãаNûúÛ²„RU"_^*¥Æ8]7Ý.¶-ÒÓ,™+s{¿1Á•ï­ncB²ñWêáæ%ä|ôÉ}ôØÞý1Á"RBßq3¾79‹Dèü@“)Z‘#V˜Ã@´àÐæïH–öAòŠLD¨àÄf7fÑ ÛCy=jÑaò…Õó*üÝžSÒNÒ’’¡õ3v]$N”áÈ,aüìÐÍ­«VBÆVBTaL¤I Œl.K÷SïB” D|@dæ²j«R”Ê¥§¼ã4 =LÆ<=5FµŽQ’mʹ¼ÒagžÅÑã'hïsGhï ‡èÅÃ'8‚„í}¾FUÍ8 ‚ŠMíQ«Ó®³vÒE“S㦙š£±ñ*¯Ü¬V^%ÁaØÍýNMTiq¢Mó Z6u±‘Œ<ÅaÚ#:1·@‡O,Ðü‚]q}ôؘ_ …ÅEj¶:tèÈ ºûoÓ—î!7™Ä!œ†–Sä#ÑêX£ŽMq™ªTJéyp¦RоB›l>Ò€²œ‡Õ0®çz·C¤C‰ÊjÁÛ¦ë*‚Lÿ²|¹“_…¸m»J†õ°l= –Ï„¤nƆM“N.nÇUë^¥-©øÒõê®ë�Ã&Ù1(ôq‚!¼ÿ½eàÑõ'Ǔȸ~Ÿ6êC®ðwšh’šCGMªPE"¨d\7ç$~¯UÈ<²A›ò"¿41V1ãî¤9¨MÚ‰©99}]ûNµÚ ~§f¦ghµÈÓóN%w¯QÜd|è’C”)½Í‡â‰¾ëj¶ÞþØ•¤C 2·¬ö~³ú@/»•¶ èß«E?ÀÉå6[¡„×±RŸð_¹œØ´´ý6üM"ÌX›Ÿ¶áfÙœtßÏl9¥ÔyºOGžŽ¿K¡•h1·JZ!YÌ_ß鼯¥£ÃyµúÆqR8uÐãùáÇù]€C¸ªÈ~ø§0Þ�ÎÇ¿üË¿äw¤ /þäOþ„~ê§~Š®¸âŠ”ý$†Ï|æ³tï=÷Ñ+®¼œ‰ìŸùÌgøZ?üÃ?lì®côÀ_5Îáçèõ¯½9ÿrÖ—þáþ£Q^uÕUü^~êSŸæ¨|ï{ß÷góeôõ¯?B»ví2׿”¿ÿþŒ.4F¯xÅå´wï3ô¿ñ›tÍ5×ÐÅ_Â9þê¯þÚ\ï‡èꫯbrœÐ y¼ò•¯âHø‡HüàÃú\*P@CûE0#²Á»ßýn&W$曀.¼ðÚ¾}+û0·Ü}÷ÝtþùçÇÄø!`“{Ë[ÞJFN¼å–[ù]ºöÚk9zÌŸÿù‡éø€)ç"&JÀGóªW½Š¶nÝJ_ûÚ×è£ýo¿è¢‹Í»ñ(ýöoÿ6ý‡ÿð«T¯×è±ÇcÂÓ÷|Ï÷ðû¢ÇW¾ò.Ä¡{ï½—~çwþýþïÿ¾yŸ*éN 'ýÉŸü]pÁùLnS)C—ŒÍàoþ毙Hòs?÷s´Ñ ý¿£Ä®í;èÕW^E<õ-{Kd=Ù$ ²$‹ßúà¯ò˜zËg?mS€À…¿,ëtlJC6’àŒÄÉ6øºôÂg³³PF-wŽüÒN{i…ñ½:*ÎÊ%–8.$ÚX•f¶ÏRmr‚¦7OSÕØ®æ‘È[¤q&cÃ,à80þøàÁÃ(ªvûÎK §…nÝq 8€™é+’z ÕðíÚÙª?:U‚'×ÀoŸ\!×öÓ‚øõÒB¸¯�øŽ�ÿ%ám]Ëä7BÚè:Úvc‚ƒv8ãƒçÑé¤S'ˆÓ†qQlt4ÆAœÛ¢âyI”8äÅI}:Ý„8ˆõ3i»°ÚùîÿÅåØ{°÷Šëû© ²Úv ¦¨å#+bvÂûu•í¼‚qf†Y“Y©5¤lí�Êræ:-Ú ÏH§Áq;-ï©ôÿ¹Ë±:rCV»úýeâ^4)�Ûu½Ò¥Ïá:`™BaÀwD­@…Tƒ{¶Ôif¤ŸI¹ÂÖ–û—c¤BÌÐýZï—{ÒÛtö£¬hRŠ&€øõÒÏ\Τ }]ùž¼×QÁEï"“Ü—ÜôÙî¯2Õ×ô¯Û ýÞdÔÕ¦öBò'è[F®1i„6¡µ64( 1wbŽü µåäú]u åƒL_þ!±<nl ÃX°çât ÝxïlÂÉøo‰™×4çC!ÍÂÓûsê…0Ò©"ëCg‚zGKAÛ ð0‹Ü‘Ïtú±(ã>å»ûb·ëïþ1™H ´z,·ìJ=½=qèÄ-ÂzÑ ŽžPd…Ä9‡HN® ,ÉÄ�y-`R¢9àw‰£*tœÓŠŸ“2"K²€ŒÁí‚(6¢®Á‘0BÛÔpò×|,ù‚Sˆ8XYÆIW7;¶‡q3ðj}”çòOòoGq.`®ÔÏRä»w¬³Ýl‰4Å„JKtôø=ñä~Bîk{­Mßi´ÚLp¨Vl ô…©©Iššg™d|Üë+ß'H�pÒÍ-6éèÜ5VBZiv8uËãÏ0Ïd‘ D®àþUáú¬˜k”MUKU~›f&é¢ vÐ+.ÝEõ1r²\Õ=Û“A`ÔDJ¬¯—ÍgŒÆj Q¥Zv«8C:>·H‹ËMzñÐ :pèµ›-NE2ßX¡ÅF›¯ß1áé}i-´%µ¼Ämïdw^aZ±O² Bsð—FEGÞ’óâççÞVÇö‘Òjœ·'!ŸŸJ€¬E–ªD½ˆ#¾^E/T.±òœý Þ>v¼ÆX‘VŒ!|y¥‘*Óׇt}|¹_#èU€‘Žr´Œ‚T–ÿ’ñ|­¯TÊ»\¯öó,mkÅ#~æ¥Ñnç¿“#–ŠN¤u-ÀÊ,Éqb³¬U+,P¹!Lébö{ää¤_Ž×騑Ml9‹N'üwPëX“NÉ“û:ê·YÒ¹’ˆ’¤Ê“\d’î ¤µÅZ—¿:ø:{¿ãÖZì_3®õpΜjýÆVœ µ¤õ'ã t„TT°'ã#xÇÌ;™È#¶Œ 8vö¤Ô¡NIž9äÙ6GÊé´m*8Ñw´=H"m$òŽMõh ^ìV=Ño œ¹÷Ul¢Ð_òÀ¢T�°™Þÿýìþ·ÿößòÊ}¼7¿÷{¿GŸýìgÙ¡,åa\ß¿ÿEãܽ^sÃkŒSú;yÛÙgŸÃÎäw¼ãfî;‹ß·íÛ·ÓüÈq�sóÍo¢7¾ñ´cÇÖk‚åã˜o¼IW_}µù\iÑ nî²uýÛ¿ýhóæÍô“?ùO¼9nœØû9ÅÉ=÷ÜK—_~»{÷nzûÛ߯õ¿öÚkèg~æ§é›ßüfA°(‚ï׳ »—M¿9›bCŠˆµÚ6ëûE?˜ŸŸcRJßùïä1ü¦›Þ@Û¶meHx_÷º×ÒÜÜÝu×Ýü.€$„wñMoº™þý¿ÿúä'o¡÷½ïûø}ƒ/ä­oµ‘aŽ9Ì60Dr½ì²K9Ì?ý§ÿ”ýšçž{ Ì‹x׿ô¥/q” ›0>€\ñ§úgæÚÿ@»v^™u­ðüóÏÓZ�2Å®;izjšö¿ô"}û™§9’hàxÅŸº=›dñÛ¿òX`ø‡Û?E¥Š³bS¥Ì©BJlKƒ\B˜°ò„[ä\*¥%í#‰ý.ùÄÖYiRmSÚN™åcFä ¶B–7†=,bë»Rs¡A+ÆÎµ8q‚ªc5ªÙjjÇfªÎLÑYæ=zêKÑFÁ†!X`µ¹v˜¢ " uVÅÑ!ÁwjгTr�ãÓʱ ËÀím—zÈyYNMßñ)ÎJ„úÙŸýÙÔõp®+´œåTÌuö@l t·Äÿ&ëŠ0¤ %’qh/q¾â;B‰ÃÏAN]K1‹+6ä™XåÇîãÌ^›Z%¢“"hÇ´8ÏEyÂqòWr¾…"˸'ýA"h#®ïô>ÝSÝ¥­µÒ.õÄ=abÆ¿ÁŽÄ{ ïA¿GÚ©/Ä ”ÝâÞí˜ !!ü•ï8VÞ1‰ ¦#€ Z”]@RtHÒ92åÌ‚pû�ˆ.$Ä´n‰Zƒí¸w\  ŽdEƒßDqÕѤõê@úìÓ)WG‘vôŸ•¼26éqD¯#Çè±D ý]÷ ý> )C"aŸD¥‘wM÷ýH;èßšh"ûS!rÕqYÏsè¾î‡ö�Ї¸o§åàÜëêqº‹Ë¬K^½ýzùÇå9 @plqèµx-ÿH è¯òÇŒ4¹Â®¦wnqõn»cãÕvõs©d#`µÛ.’«YmãŽèN—s0`å¢äÍ›�1Ô[­W»îIî«d¿tÝ»Eƒ’]e.Ñârø”ü¿:’ƒ/F<Æ·SÛc²c«D<æKÈa×n1™ÂÌCæû2œIç¾`'»m‘YÍÜ@5¢Ìd œ×2å5ͧíž#”¾NÅ<„Äó2J_#èТÙßt&j”S5m€¿5S">ULu²q‡Ðæ×¾¡#ÓÙgBœ‚Ä팉ö æ_—z€ 2Òn¢ÂÊ®"‘=øC‡ŽÓ=÷~ƒûhÆlÓFsóË´‚0Ófž¬›¾…%šž¤sÏÙI{Î;‹¶n›¦úx•WN‚˜9wa¹M‡Ž.ѓϢÍÑñ¹e:6·@ K+nέRµ6N•jÍFÑMkEª”B#×T貋wÐ%l£™)#UÍ;Ð2ï·i––Wèðñ9:jÊœŸ2û's lœ}U{ߥ2×¥eê~ðð=ýÜA:z|žž{ñ0ïß¼y†öìÜJUó¼žÚw€9ÆÑ+šÆÞlK˜µA,AòW/çR"ã—©^ âPß0òŒSY¾×<;,lYD§6äÎ “.*ìø’Œé' @<вLŠrdi#'üq•¼(x^³Fî>qb>ý¼’bÜ)I¯Óº»OéåìËZ%?,R¤‚0 ¢xL¥"ÿ9¦ŸGÖ1=Î[FEV‘£»ÞóDí²i Ú$¡n{³L£eôÜ•%j¶Ú¼âËÊ:LSãS\A>kKÝèÉM9³6A’xkäqÝïãp°² ñ<¦ÇWŽ’ëxåÙ*+š!滿äél˜Ž­A8Ñw«}e»3]_*9;À õýF¶ÊáËèÞÖK^³gfúb³c£ŠQ¬CPfݤ,6&½˜JÈKË‹l§Ä¾8²EX«¨ë˹ˆdÑ"b>vv^kCƒÒ!K,²ï*¨|ìÜ]²²ºZx$ãH™W²Ú÷e|¬JgøkQà4AÞO¬¼—w °‰#=ˆ]I¿C8Q/°b>Im‡ï`~nÞ8’/¦éi›Náú믧?ù“?åô»w[-ˆ ›6mŽûðÖ­[8íÇm·ÝÎŽhD1³\NÞ‘’ _r'#%ÂüÀЖ-›¹p(_pÁœþéÎ…`ÊØ¼yG¤îòæ+ñ/áïÂÂ|¦ wÐ1xÛ¶íüþÜrË-Ü/_óšë馛Þ/D_æ 5ñåúë_mÞ»î]ãè.xç¾ÿû¿‡Oý˜™™fÒÒ”qäã}Áwœ‡÷7¹ÏÞõEY?ó3?Ñ2þæoþ†¯ñŽw¼ƒþú¯ÿš#ÌLNŽÓ/ÿò/ÓFÒ·¬Ðf¦¦hâü ŒtœzìQcÏiÅbÅ­·ßÎÚÁø$‹ýGîÿpÛ§(*‡V·€<ùZÝÄ­;Pò|áY¶Kߺ#}Y|tÍV|drH¿†Ké y§½Ò¤•¹%šCD#37,ϛÑäæYšÚ¹…6íÚA—¿õFÚ(Ø0 qæÉ !‚¦5¾-ÅljÃ@gðÊ€8.Ńï˜lý•Ú?e€V>ýH¾‚«–šàqã7ÒOþäOÆÇH½@®�sSê¯#­ÈêòuÙþµ³Ú1.“²©0f¢Ñhg°B‘PÚG˜ÕVa)§Vökç³}^ä>‰9µÂ“˜sÜK$QèE˜Ò„á-¿åZ%CÚ*ëþ}G‰6hòŽÜŽ  ‰§: Iz›Üê AmL² ø©r²KºB6Ñ‘C’ç“8ïÅÁò~c…"þ‚l#d í\Òi^tÛj…؇lC™Èe€í‰V`{J]'Md¼÷`o¢l1 ŒñÂwN¡$ºŒ( ò‘ÕROO䣗zˆ²,Ê‹~G“Ô9i‚‚”á“*ôûH=åxŸÐ eú©Z�ÔGž+îí¤‰2Ò'¤\©³ß7ü1I¯DbŠ~Žx&yÏT÷Ç,è¾&ñ×'rtïÝwÛŽ[9åä 7ðEneUàžâœËªS¯zf+ºOd{²F¯²Рδ‘_9HÀò]æléózŽ¢2ªµ MLÖ™¼Ùl´Ù9·²Ò$RÑ4Vƒ”¬¤©¥Az>Õ!Ÿ‰ìÉ qJäòÞqù@É-•+©m©ñªTË­gàBŽëzHÝlþö´áئˆøfBÒ¤c¯«¦’ßðq :E;²+ý‰Â¶ƒuÌZjB‰ eçHm—ZF*S ¹ÄÛ7š`­›ëœX$:Z‰èHÕ̵ÕÐjÍùËhþ«…)DjæÔ±ÀFÆ@«“ ƒ(NRVõ,;"Œíɶ>X¹9‡lÛ08â%Q,콉²éŽ Hâ¶e·sFüÖcÏÑâò“•¹ƒ ’” åJ pª­,erÉè»¶ÒæÙIšœ02’iþš1‚ož¢±ǬÌÐD4†CXó]†F^Û? ãù»\™ ±23]hÏîiºþêsè¬mS`ÔÐ /,Ñýì£ãs Ó®ÚµsšÎß½ƒ*AæÚtüÄŠ)#4ͺ1°TM=ê¦nD S¿ƒGæÉ<Úbê³yf’®ºø<Ú²iŠIˆvQ5×;qÌȆ¤£ƒÐš,‚ …]ÌévâIŸ¯VËìðƒÜµ¸¸ÄO²‹¹µ.få;D#+¯j…|–î¶çfîù‘páʹ•^÷É£#î 9.« »Ê¿›� gëäÔT¬;ÆÇSÀbJy#D„t™AέYãÒI#Y“úyòèn£AäÝAeâ˜|—æžd¢ƒ³¢š$Evm>D=ú×.8ùwt4°ÏËêV6Tÿ @Ô vk‘Ž=ÎcÖÄć‚î6DñkŠžÛ Ó2Ð(‘§C ûާS{J¹ZÓ†$…Õ¥pù„P›.Ÿ£Å2b°áÉ1N8Îȳ­ýƯµœ7!7"¥™•ÒŠ¾î›:j* £ØJ_†m¶!»¼²Èö-`ÃÂñ°à˜jµÆä†|$é=°2¹Ýiñ*Ó(Lìe(¯Ž¨©lO²N;+m !Cä.KÒ’úû nøjA§_.P`XHÿAä Ø'í*÷t$‡/ù˼ýMozSl× '9…·³óù¶/üWV©Ë¥*kgXáÌ|¥0àÈ}òê8pˆþÛûcN=ò†7¼Þóîï¦W\q}üãïs#öÞ[èöÞ’H¾Ö:›_ú]Ñ  ¼|àËžY:ŸØ–ñÁ°sçNzðÁéío{ê¸C‡ÑC=Äd²/XâÏ„éŸïÿ‰÷ÓozÝwß}ô©[ogÒÑù/ÿ…Ï·ã¹­‹Øï¼í×òÎ ,¡OȃEHíß@ù¯Ýëèÿûóÿ'ýÎïüýùŸý}ücÏã�ü'¿õÛ¿§?Ùh8rä­5оçíÚÍ}ça&YØœ.äöÛy8ûýßúO±¯ºñïüê¯q·øûOÝb eή²z0÷I{ë¡QâxM‰bï´ßJíu)jwb{—~O²ú£Nç@zv£C+Ñ2Û­:Ƴtb‰Ž>û§ÎÜ4Mç^r!Mn™¥‚ E°Hd¢ÔNMmćP ŸŽ ¡©rµ½][?’¼â,Öû¥¾"ÈË~0‘géŸÿóž2 ¹âsŸû\WüvÈûí ;yƒl²]‹÷ÄáWñÂ5Vñ$cÃ!OÑÁƒb…ƒ¿U<ªÎ¨Ùvi[²…uÎ[&”&`h‡ )&tMD‘6«vøJÛŠ"ýlõs{ÒýH Bº\ý¼³ÎÓNÔ^ÐÎ,¬@®­ %ò[ Ì1ó݃0õa˜Fƒ ÉÒ¦B  ÝWRñÌ%=¤”hÁaàR¸àÊXÙY«–YY¥¨cê `eŽ&ô®àx!s\)°¤…¨c¶9^5ÇQÅn¾ÏÈ=8„Ìd…@ˆ蓸?yæ`}b’ÔdÔÄQ¦Ÿ@}h#‰ä D/á$5$t£&IBÚVH%:²†ŸEà’2uÑõ”ëÈó–wƶqrmÝÏ$ý‰Ü³ ¹my¤ŸHµQÂŒ¡ë(}×Oµ¤£Íè:ù«Ë±_MâÄ”÷Nê¢ëÆÏ ‚A)½ßŸÄ ¥ÃÕÆ#¥úb·KÞöR¦2¦¯ãßG²Æý½Ÿ\ À¨kD`¯¶÷…ú¼ŽWN:|=òÖ qjËû-ó¶Ítè^+_ØØV7cVÓKÕhl¼FÈ7Øian0s:ÏMy¥A %÷W|P:œȧ]¨×Çâ­L²€GΈ`^*±’ãkPn)ÉX¹„O`ùÈ:Ó+©9]ŒN9nNw@nüãz¢ŒŽ]!‡ßHÕZ/¹•8·Š C¤y)L¨ :¶TE°oZ1ÇÔ«;á7U"ÚZFT âvM]›ˆŒÂHòƒ‘¥Í}N[Ör=¢ÍæVLí€æÃs/ØÚÔ˜ÓÑÂÔm¬läãÍo‘%¥”qæúKfËxTæô!ɂӠ°ã5pú¢ùVŽX™ œÂˆI¶³ÍŒg€/“Hv•Sä "ÛoAlˆÈ­Itm‚nµi9.ÜEû_:dŒ''¨Ü©RÅÔò ¯Úºâ<šŸ_¤›Ï1:>¿DŽÍÑ®Ghr¬n ÿ-Z1}|br‚ûòââ =¶@‹ó j›¶ #Õ$ŒNà"†˜v2o G´¨ò[¥Fg‚ö*qj¹ zä©#íâòK7ñ¼¾uºÎ+¦Wš6%F«rŠ‘%£Ü.,Vhól‡&Æ*´}çVºòÛb“ ¶d þ KüŒÐ¿§f¦éìÛiœWÍ£í[gœ«qíæ¥¼9¯ä­ØÔc d1+§XyVR½ÉöÄðÐJ0i?VíHš¼7EtƒS ÛV ñ #"<?ûžX’‚ŸGV@ÿçvÙŠûœß©Mõv%×¥ØH#+Ö%|×xÅqœRóB£Ñ¦­›§yü/ùNªØ8˜ÞžŽÚPʑȓ=‰çé{þGƬðêšwù(ú˜UËŠþ½'ãTìþE¯vðû˜m‚°sG†½–Wüí䈘ïá`…cÆ¥!6MÖá¹ÞÊ@Aüߌç·oÞA‹ f[^ ùÇÌX‚ÆÇ&.<Íú®¨Tæ÷—i7çhyiÉü·²Pý2Œe¾WôÓˆ‰ŒV/ïð¶´Ô ‰ú¤9¶Í9í;p¤Ð¼ÿHAP…óʹl}CR trÛÝÊ@Aü¾‹+ï<"gɘ$Ñr˜ƒÈ³m<D.¥XZ6LGÛ´;,ÓäÕgíp2}9Xå¾Óß6©1LkûD¿sûq«=·læ¶vÃ:£ÂPæ”n§Y–޵Mt‘é©Y'o‹­¤iô•­¬€ÔiìAåGCš6±—a?ë¦ìN,ó«jƺ‘ë²~ù´¢ §ŽýH ¬çwG8¾ë®»hÏž=ìD!ø?ÿçÿLßùßÉ6V¤ÕxàèÀ´uëVîóO<ñþù± T¶6CØe¹â¹çŸ¥W\yï{ä›_g9ü¢‹/àŽŠeS7ï{áyš_8A?þ? Ø|è«FO’¶¾VÇM¢\Ú¹›xe?ê÷Îw~¿Ÿp|?óÌ^ãßnîo†çÑõš2ªÀ©…?ïdýö·½ûÝßÅïûÞõŽB¹cÿ]wÝÃé4ŠãœsŒþ^­Ä1£ó4yŽxüñ'­]¹ÒâÒ"§Ï™¡ùÑ ïÿþéŸæó/ºèB¾dN¼C›7oáÅ¢ûö½Àä]ø=Z­GuAÔû0ì&¹ÊûPŠ¡úD¹÷ë©EßxóëŒ-ãgè¿ý·?¢gž}šßÿ_ú¥Ð¥—^²Æ2Ùéëž @.8o÷nþûØÞ§Ù/…v<»õöÛl$‹,’…Ùó‰OÝÊ‘ZI"eaÜ JN'Va,x¨³F-–…2tK´_‰Zn†mFç(Ç:¼D®s¶‘ÿ{|öØÐ'±àªiô‹¶éõ­µŒÝ©lúSä!Ç^:A ûæ8ìFÁ†!XÈD.!×$ôv ¢�ÈotTq2k[ ÿ€8 ýH¾“O õheT~‹“Ò/|%ýÔOýTŠA‰ëþú¯ÿ:ýã?þcêò"_I•íC!!~'6<÷½ÙjÆ+ެӴGÐÄ’„t@)§°ø¸ízE¼Ü3à¯~×Ê*q Ës‡¡[ÚRÚÛý¶—rü|ª>YA ïM¯þ‚~yßû6¹:VG‚û•cô±âpt Ÿ´ãCú£N"í¤ÛF§Ög�Èû†ó$µ¾óõ(ÉWɶí[â´- 4ðvDލŽYCx­bœ5gÀê¤Rm#Ï (õÃ=€À¡Ó”èÔSn•ŒcÉê™0Î&d!^IP¯Ç¡¿ä|‰ì ý^—|¹Ut]uä!QøD/!Ãèô7š !ï›ÔW¿3º<m¨–ü¢ºM$Š„DÁø'¤!^`ŸNi¢ÇMÝ¿d¿¼G> "e4БiÔ>\S÷{žSßO¸>¢#Ìðö ¼K=+&P”X&p6ÔLûWÊu$ådg²®ÕU^!~£ ¨N/¬yÛ®'îû8zh(Á µ-tTê {‹×©¬1ó‘]�"…‡š\>”É ÛlUhl ûÅ9„!%ì=ØkD‰/“•ÌU%GB Ù(9‡U)ƒ«Ü’î*–UX²"Xà|kpu9•Ý<‰®’zN‰lÄc_(2QÈΓ1·@— #«ýáDZXGGa)ìm�wmxpÅ8…LyUã|3åT W™*ãe:§PÝ”µ€4a™ iwÊ4QAªˆS…ÔA àh %š[îÐ\$Hâ$Sæ¼™13ßÔìj&” b†UàlPô…œ†c2°‘+‚(»§ Ä/hƒlX²E‰¬Ó«mNjaŽÂ¼d®ºWc‹uè v,´gΫ1=3aŒ»™0:fd—éé š5ºN¹*tÝ«¯`rÂ3{÷s´‹—§ý/¦—^:ÂÏÕp&ÐT8W&V@!6s4G,A? Gô°7 ç7W‡Ã©ù¡R§¦ùûìဎ-™9ÒLùÕú4½bO…fÇǨižÃä¸yÆÁŽ…�móûÄ|•ŽÏµÌwDã2òd*s¡-›¡ªlœz‡MÙ!-5VÌ{Õ ã ´R£H›†œœ£‰É³h×Y[rž¬%„X$uãþV«[Mòl#^i*zŒ=McÜB»ÇxH­ÅÀÒ}•‘]Ç:›…HE”ò8{D¸“…}Ýґɲt¨^²ÐÖ-³ülºöˆŒ°èrã&[õ¥’{[«×&OÏìÅ"³ uÂPÄ“úÄ{ü¾0‚6ðË·dŸ W†0n d•(êvÈ©†6óf½ÂsÅÔÔ àŒÑbW©V­™c&y|¥ ÂiWñbAÊ„qèò{$éH"r«Élš+;òÁ$¬�«c¦Ñë"ù`¸¯pÔ¦2€°×¡²;>i·x"Œm5yˆ£ùé4sˆB“¬.¹cÃ}B’Âx]!¯ýQÆuRåÊ"™î(R÷á¡ZÙHÊ]¿zØ06¥AÐKÿ̚ﳎñíRƒ^o-Ћtg³í·OîÇØ¨¥6:/"™5ŒmhyyÞ|2/hl[ãl›’?©6Š(e«ò¯™U^ößF8Nßõ®wÑ_ýÕ_ÑïýÞïÑ•W^Év98}±ji7)î†n û￟>üáÓu×]GO>ù$§ñø×ÿú_³=¤ Øòî»ï+¼ÂÇ|ö³ŸcG3οýöÛ馛n¢mÛ¶Ä×vþAœÉp"ùË_á÷ ‰{ï½7¶bþ„]ù±Çç¤E[åþèÒ?øAúË¿ü+v€ûÛßæ2~ìÇ~43znÃà-oy §¡ùЇ>Äß­is{ì1zç;ßI¯xÅ+xÁõ×^CŸüä'yìFÆbi!·"åÇG>òž[2)) ¿^~ùåü 27yßsÏ}tÉ%—0‘âcûŸsñÅóû‡yï}ï{ÙHÌÑÐö°AçÔñ­o}+Û—@¾úÞï}/]sÍÕÝù a­qmÏî³iÇæ-ôø3{éÙý/XŸ™‘±oùô§˜Üð{¿ñÛ ÉÂüþí_ý5Z4uüì¿`äÿ„`ˆ2pñ(¢ÄfBŽÎöÁÈIÇ"ǹïiÕ×Ù;Î)ÇdÈ#L qŽNs[¶‹1"øÌ`‹Ã¢^ãwbît)p‹¢LßjFëYô†`!« uÈ5Y}­CßkGªvNŠÃT D:Œ¾8µ£QŽIXbÝ¡ðý¨:|>G”øüàþ`j Â6M®ZpT(ç#ÿ'dâ\•¶ˆó‹¥Ô*÷¶ËÙŒ¼Bö¸jÊ*/¾¼ÔBVÈŠÐïÀ϶“8rÅ9¬•yÖâ˜Ö}C!y+üïr¬gt Až2ª 4Ú)œEðõþ÷¬r³ŒšRç¼€ä—Dß–ÔÉj”0uŸÚñŸ<ßvÜB’±e$í9;3kçmqŸ³Lÿ$rKWl­ƒ‚7&µ2¯ò)u±ü:’Ö’bDÈQBŽ@Y¸R¢H¤y¦B‘„”ûb„Â’,4aH \ôxÈñ>1FG¸Ñ=6hò~Þ~d Y.}LîK÷‰rk¡Žh ©-í¥ß=.JÐuÔõÔuÔ¿uyú]Ð}ÍoC96RcƒŽæã“=ô÷¸~\Å‚©÷? o'Šº,èvU3wN®^(&δ0‘ñnöú=(²Æ“V´c.²Môà›"£L­,‰;½-M=JýTY%)8‡°ùgo»ÓH¥Ô€ÓwÂ8‰eN ]X;‰ÑŽlX]”Ûh5BaS•Áßá±du žPÿpòO2þqŒˆ€Mþv< ›B£eî¡âÆv'8•kl¤ Ž^Qré@JI$-|·ãÅÎqŽ„QvŽ`”Y oœ±ŒÂ„ìÈÄ+0Ö·[Ô ZTê˜ù)@„†&ÃŽ]í EJ½½€uwÆ?D[Œß›q\O•­{¥V²«â±Öý˜qÎ?·bæ5SŸ=ãD›£2Ívõ f‰qsNTéÐ SÎ s‹‘%Ò€/S®÷èaå FTû̱™õf[½dsiw~ÝãkÊ/èþ-YŸ—ŒgÇ).@2á”)%Š#EÖ öÉ>ÆùÒ+UvfsöNÚ´y†‰3HQ3?·H›f§AåB&Œ>÷üAºã®‡éég_2}·ÃÏ´R®RÅ‘’¹?•©Ïd²óK ýs¥‹<P†«,¨p‹(¨Ñb«L+‹f.7N¹Wž_¥ ήÒÜ‚‘ÁÌ3˜tQ8œc«bØ™)ÈDÕ*%~Ë+D“ö³¼R3Ž¿:5šPzW̽Ìs(¾6/¸%Ä6ËN9?½ó‘~'´“�a2±Êf¢<Æ‘Ñd¥±DAÓÈq•“K’±k°Uk½/£Ã(Û4`bS«ÑF•äÞY2֠ϵ˱±á>yuU»Kfñu«nY& m›gí*~Šb=€r©T£AFqÝRÏ뮕<—´=­>¹BR†Œ¬^® SlC$èz<Qì˜F˜ÆÅ»Q¼‘ZRÝ'»­‡M‡2á‹õ\wXml‚?hååE36­=sç¤qc#Ù<3etØ :qÌèŽ3¤ô(‘ßâÙ0àYfœv²@=6 í;v˜ñn…Jf.‚A~¹ƒùµÎdÔrIH¨m&x¦ ï% ÝJ¹üFàIA#‹gˆ„X‘ äÚAŽ“²“(fé1)±‹Ä Á"kÖ8¹wG¿ÛÝã%ȼüt­¼6M‘Ìrl[½ÎïUÖZê´½dÛ¼qßÚHòÏkµ ÑF,OKäxqVd¼’bTÛ�‰¢¥íkÉü˜¶¥¤ìAöb¹NÐÿ^óš×°]õ‹_ü"}ík_c¢œ«ïyÏ{Ø–Šc.¸àúWÿê_ѧ?ýivƒàð/ÿå¿dBö¿úÕ¯¦7¿ùÍô…/|Á{¾9÷]¼à NaÈŒ¯ýë¸<ø �ƒýöݰ¿ð€>õ©O3æ÷¿ÿ'èÞ{ïããQ¿ïøŽï0çÒwü#½ýíßÁ«éwìØÎïäÕW_I¿ò+¤[n¹…žxâqÚmœ—ïÿûÙ) :‡¶£ÎplïÚµ‹ èLîç~Žû;ˆ?{÷>múÞNúgÿì'™,Q«Ù~õC?ôCÜ·îºëKÜüÇœn½õVÓ×'é¼óö˜ý?HŸùÌgè¶ÛnãÅEˆbÿš×\Ïç€Äôä“Oð{ˆ¾ŠH.°ÛþóŸã÷}õW~åW˜¤[ÕjâÞÝaäÂe£ô#ꪭs™ë&ïð°€ç]ïz'^Ŧ§x¾W^r)?«½Ï?Ç Û1&þƒÇðå÷~ów’íFžÿà/|€>ó…ϧý•kcÛ¨ÓóE÷·f§ÿM‘)"J¬¢štÁ¶·ÀËž"}’ÒœldU8,î‚0Lü0§šO3¨m YgÃ,ÄÁ&/„8„ŧëBvç¡v¶Úa퇺§¥8µ³Ó7@ùŽ8íHL9û¢|ör–p=ˆR¤¯á×¥â2”!$>S½AR&ÂnÙÐÔvUfÅ2aÄ­Vƒ8ºƒ&´d)i€väêý¾âˆ[ç@Ç3ç, ŸqÖó‘r¤~¾1PC_W“$ÄÙ®Ó•ès|ç2E®Ðû³¶úì|æÏ*”k`ð mtìØ±˜€ ë'÷£¯/ïH âl—´5†Iæð1ã,Û¶m+;ï± ïññ±¸QdÅüíJ^<ƒ2Ùðòe®#>Ø'T¬l:'“&*àú*ä9â~$*‡–3„8º†"È éH âЗ~%:dŒ‘6½éwXú‡Œ5ZQÖm©IúÙBÆ!qHY:j…~'tù’QžŸ&r«n¿Î÷ ýÄϤ )SZtZ=^J›Ê½K›è¶ÐD }ïRmXÀv‰¬!÷©¯)í(ïc|úQ8!€œmÖ•ÈPŠà\ÎZíOñ±ý*àðñAWea˜ñÖ'  s~ýàü¥Î`m;³3wó~߀ªEêî’²¾'¿#E¾þüÿ²÷§Á²eÙY ¸Î9>»ßùÞwß/^D䜩ÌìLHZ2 iÚÔH¥€A#5¥ŒnºLt#™ÑfPmmÖfèGc2„2fІ LTª(͈,II*S9EdLo~ïÎ÷úìg¨õ­½×ñåçºßáMqñáÏýºŸaŸ}öÙ{íõ}û[²r}”#G6‡¤K‘!i#Hý·XȪò Å+nâÈ 9ˆpƒÁhzQÎeáxÿ (\u( -'ðÔDÇzécB?™q y+T =HäÉ‘(UˆZEz%~ ÙϧD*y2F#ØåþAšäý`êÍ4†l±;G¢^†4 4ì ÁÄ”Xr»×¤žR2ªñOƒñ_=¾´FBÑ2»Të< ‹Æ‚ô©PTˆ„\R É5¿Îãx#�!‘ÐpAFà‚…€F\Öm¯ö±Æß]âcòÙ°è¯â14¤A¯En }Ÿë&{¾Œ"5áG¤®‡½Ê’"ä—»Œú&È”Ê ”a×qŒp6ÈÒm÷éÑÃ=©·V«Nn_"âß úÖkwøž–äZ¢µÕE¹/Ë‹Mª@%¯?rƒ{é¹ÜÓçVgNÞºy[Ãý,s{(Ë}u~v™KÉõ -…+¯Ãçñu-. µb•rJGm¢ƒnH½nLýžKI¶Ð,Qk=ô5Pó`ÌÇÕ*ƒ{ËTåcß㻆L!ÝC}Žbç·¹qx ’Ç'=MóÑOÚVjJûO˜Qe*H²‚âR¹92i’rý¥ s”óCS~¥§cO3¨€úÉѾÆ}ñäÙ²‰àÈ™J˜×=’~(IsŸL¿›¶ï´¿qêU~Vèœe™uÜ'²,8ËW'ØÙëqb¯§üÁësZAá|?»ß|<³‡`êOÇ‹ð´ËX^Iê3?Ÿ:“J3·=úËi‹úp¿5MJ¸…¢”§Vê}î“jC—}›ƒ¥Àƒ¸êä|„Tžaôåiææ¼H?õö;GÔj6xüY¥µeÚ?ܧƒÃûI˜Ö)Dj³È‘!2MðL‘ÿœÐ¬þÂ3¢áò}µÎ+efd¥,±³<~Dù¹?ÐgÙx[gã<ÒgEBÅtÿaLêz<{?ÏÕŠ¾¿ýnúöt¦þEýK™7Û˜p=u˲cêÁ'—Ï–¶güê ùÃ_A~îR!ÈÂ׿=œA|F ½d”+§ÂÇ×…f— ý7©æ0ùJ×[‘œ1·¹=kCýèG?*¯Y†¶ e ¼¦æ¸ÿÍó7'¾ûþïÿ?Èkš<Q´}ì£ò²ö§ÿô÷ùãGômßöª¼Ô^yåÿ<±-ÈJ¨(”8Š×óc?öc4·¹Å0ŒÀgû¾ïû^yͲ••eúÑý¯'¾ƒª…”(ðšvü&ûtí¯ýµ‰ïA¾À«¸-ÈEâb>ÿyßMq‹¿ÿ÷ÿ>Íí½mè;?òò+2æ¿s÷uûN&+MOöŸÆnæâ’á$ytì_d>=ná�Öu'2„ 9ÈÒ1ŽbÏ7—FRïݸÉåѤ Èq—QÿùYž¥]‚…èìÍVPPA>K†PP¦«Ç5ÈcÁ:líT%ÂñE¾¨>1ÍŠÌd=>ÿ‹ñ/„ýieñâ'~B¶9¯ŠÅ4€¿8‰šõ›?�M@-þç0 'Ž­rß Ç9�MùdBSJX€Ù–³XÞbý¨é}Ñû­÷­¨¸`Óvä ¿o6X$^Ì’9R ×Ð_ëâê}[æiõ[¼ö³ÚñàŸ~lù”/‚ÚÅýP~\ÊÀ3À* ^Ûú°*z6e…’Œo4ê´¼´(2X�ð2Dœß[6›RF•à0cE�ž9Gfð÷Kë¢0Aײ@ÏšÒÇ‚#6´¶O«´¡u£*'ö:ð»*]ÀT C 6‘í/´_AÝÕ ´>­Š ̪nXe û²*8E]!a‰–dïP^Lôq]x½ªûÙt ú^ö¬*¾ŠíÛ*IØþÏOë»Hè±mºX_ú½îS$¯ØzÑö‘¤±[%…þ‚œÏÿ%ùQ5€™ˆ+M’ÉÆÈž‹9gŒõ<Z›µÍ4'ä4ens{óp(ØÌ|3VªžlÊùÂ'ò¿Çç9ÎÆ4G™ðÍ´ÏŸ#Šœ@&žEÈqËjÿZ]&¯2fxinyΰ¶+ž(—<¾LóÇý GäÒƒü•yPWäøðc¨ä ‘# §ÔáÈB´P’…ïçq½ Š” ^†ŠE…〭ôåQNâsdq}Iý(‘iê¨DÈñÈ¥‰Q®¸GÉ`‡zoÓÑö[4òd$“²¨²B¥JƒÒÒ*¿×'n¶½›ëå€n42j1 ³À—S †‘‰ZàD&h…¿¯×I RDZe¥¼»7hc<×£”6jDovZj-ó^â}€ñ ºD!ûelëØÒƒcòÆ@à( l>i'Ýê,p÷$æ‚î9À*_~Á˯‚¼HÂÍqþ£¿¥Iàž.èúx{_ENnÝzÄõV’jëcÚÞ9ywäòE õ5îÝߥÛwÒ{ÛÔ õæQ¢9îAT.EèS“ÈõGrÎÌ·/iSÒÊTcŸªÁã5ˆ1¼(!õE™ë·Šô'!ŽRZ­ãúy¤Ê@]ièV @a Ž…Àû§’óáîHîÓÆJ…VVtØò~À Ü@nA–øÔ}\R¬Ü,Jÿ;f€šÜ—žôSìß(»(WP +Ï…”Õgß§Z& ð½ÛöS‚SLûꌎGK`xÂÉÍÏ`LjxYæg§b‘¥§ƒ¡“¾’K"þeïžÿóTÈWö|-ŸOÔ|,³%;ëÍ ´¦YJ¹~ì—éÛ÷=óýµ‡gl§•K‡ÿT iEmš Á\ýƒ(ž(ªHßÞ¨7ýÜ%vªü]§ƒÅ´Øô©*µœ4î+²,¢Æ(Y,,Tig4 ÝÝÚÛoÓÒò‚äë^\\ÂÆÑ¤4¸<’2#I¥,9©üùOo—úÃM—ô~«êŒ#µiÊ2WoÁÄ\Û}¯ýÇäXRìÿ\ýâ•>aŸ0.çøïÂïÃ9׳ž/Î\4`ú©i»ŸJ·~ÎU›âWÖ,ñ,uù4Ã"cÆ1×)Õ: >;NH²žœ.õ‚ž›*)ãÏx·Á{TÊU'curÄüïb|{ns›ÛÜæönÛiýñ»ï_ÌÃÊOfŸk|Þ?áÃ/½L­zƒîo?5“ÿïûÿ–j:¿‡óÿúÿü·n®%YI˜ó´+§¤ÁA(?¬ëú¸Q¦ÑãÀ-P \¨ÎÚØoŸígëñÓü¯±¢†¨ÒÅño. ÁBåý‹û`– d�K¬P€O ø @±‚©ØSg¼b[³+Î- oËS@ò _ø‚|Fþ2u¨ñ’Ê ®Y6¼Püí<V ÏéäÌm%8(8 ÀŸQ‡š†ÁÔT.^?ö·jVáaÚõè6šºÅ¦Y±×kS¾¨:uu»âyf¥Øm@|›²ÀN¸f‘XfÛZ´¶Ç+Þ¿¢Ú€ýþ´v‰ºÆ}B»èŽë²@º^—‚þöØ à+¹B � ˆÕ3`Qº{»IgT›HãS¬k}>p>´€OXEYô5¸S¬Ýwgg'' àú@t°ª&øíèèˆ>|˜·´n›&D{U»Ñ¶®ujI¨7Kx°‹"ɦX^˜K‰Hú¤©ê„þ†kÁË¥ã }ššÙº(’‡ð®ASÁàPñP‡%6Ø ¾Þck–D¡ý•þ]lZžbÛŸEBÒû¬íªØoÛ}Šu©}zÞæ}HY%ô3sÙÀ•` “©Âù3·Ê^ƒÑ²;µ2¶š6àd)ÑbÙÎbÅ61·¹=-s~ð˜DA‘r3˜HV¤+û=Æ6Ùž'•<9C¢`’H8IÖòc~ybC–¡x¡ÏGßbú=í࣠ã¡�xò\XHÜêK€áP)x¢ùcà®!ÿXø\oòWè•/<™Â!1J¤p*ä¯S€r¯B�B…»6ç*UŠØŸÂ JQN¾(ç‹0û*Ò‡a…\âeŠA,“ô#%wo“%Ã]ê¼CÃÎ6% Ò :ø5¤4æm¢*Uj”U©Ú\ãß;…Êp¤7CÚ¬òXº»‹Úò'�ø>¸mñõ´²H¾sH’Ÿ€ù‰šk#PŽ`?Bò´gT+Ô¬í2Úãaz8`§ÌõV]:ñÅágîØ‘™ßY€/o™F®]:’EFð~8 ‘æ¼wU˜ôü¶€á«4 öŒÇȺio÷ˆÊ ÎCbqiA­¦´U´ÇV«A/\»DUÆ·Û=ÚÙ=ä`ú@"Á¨³H!ÝDŠ4H„õÏîY ñÀ] )Hjõ*Ýuêó=L ¯T „˜~jÊõÔ‰3Zµ•”ë‹ËRs·¤Q-Ñ_ðîAL~B÷·0²ÅtÔŽé­Û [ô‰-ÐÆJƒÖÖeÂ\oTÀ® Ao§‘ë ½ÛÁ¢é>€I™cÓš~Nö£TˆZ•°Jñ¥Ò»})ÏÐpíèzÔo"ÿ¿$ |å�SÐ}Nó>äÙ›˜Ÿ¸ãf©Kõ'+v3GÖµjpºoÑ'Ò{µܧ1‘ìù-Nò»ž¹"ß-3îißÏÙ%˜Z‚Œë¤ñ¸Ì|ïöV{l_6{ö÷}âtç('ÆÝ‰Ô�%­:ÚjèÛˆÛìºN¯ÈÅ+†BŠò·’tîP·<¤(íðؼA‹QíR ôyp÷EÇ$õŠŸ¢<JZ ËWÖyìAzíïÐþþ!-¯,ËØ±°Pá>½/©ÖÜJú’kXhby8&@̨-çKæóF%Jø®ôµ–açèYÃus¨‰f.Ÿ5EÉxÿi~èÓ³§ÑÇœÿSê7˜”>õhñ«É:=«ç2ÓOåäl³(cŠ96M^ñ³žã"ÞDÁñÅ!.¶Ës§që+H Á+…•uaO4V‘ C7+\_`úBÒ4”# ÕP¹BépDÃÁ0ƒºØ—#['!M‹£Ìmns›ÛÜÞïölúò,£)ó-ûùÂN~Ÿ‰3y·0à/^¿Nÿ»ïû>Q2êqê%aþý7ÿöÿƒþ=cÃêwŒS º·±Ï ~fÑ3+XàâOÙUÇÝÏñ ‚ø˜dhÙ™ã$É_ÏÏêcv¹¸n‚ÀÅð•÷‹]‚…‚‘6×­Óý0u²2Ê@©®*Ç1×ÖÖdUü4Ôbš")`2L4•‰î‡s~éK_¢ŸýÙŸ¥ù‘™Øïoý­¿%Ÿg‘,Šç}R³¤üãç(Ûsáz@:ÐóèŒÜ*Íh*©BÍ%ŠeŸÐXÐWèb:ý¬ïš"Á®è×s*nÉ/')X(¡@·U‡-¯ØML<ÃðÄ{c÷?íXE³×£õªå›µŸ’b°Ýþþ¾¼Š÷Ct›ŽÁ’/ð=‚ï˜B­âæÍ›"ƒU«!ˆíž=q"/ˆçl0è‹:…%M�Xp×útÄ'GÖq@S·ŸX_zÝ ŠX2‚ªghš/^{í5º}û6äÄ *H&&Û�®"YQ8 d°ÈÆA'ïYAÈñýÉïU0ÀÉõP'äcµŠHÁµÀ­`®”Ç £J˃è„`�¾Ç«Ùhù”u¹· àþhÛéß+iCëE¯Å#´.ô+¶­b[Æñôy‚Ùt"EÓãêg{<ûìgŠmÙ>J²Ð2Jwå•+t[©_nÆ™'Í@F;qP[â¥å±B+Œ\Þ{ÅÃ|4Sˆ"â'Sûûi@ÐiNí´çýy s»¸–MªU«â´±ˆN± ð^ü.˜¨»6ìóJ~n%3¹‡ Áu¬•Ô¡[Éïú£’ï·ó)Š16å DàŸÑÇ1Ê{•›©ÏšëiÀ×Oàö± @àûj÷ sV€¤ûÀ +Û¼:Æ’RTjTªTáß—Ê¢fár:»‰ÌØ'p„1h¸Ÿ-†4Žyâç”3´Pwÿ5êî½%c°Œóõ\O ¤ôhÜ¡”ôîαڀmÖá@&MI Šaæ�8|àH¸ ‰“äR=ËAƬLa&KùsÁÞU+J€ƒœºÄ€ˆ' Xð6Í�)G§&¸ó—�Œg“MË7)÷gFyj“4_T,FüÅ0ÁXN—Üø\å0Šë­se´ ƒñ òø[^^ õÍÚz´/þÊÊêݸqEî@,M¸}‚xñÊKWhkkº‡yæ0Ö;ÉÉÇ»²f2©Ì}¢ÔµõЀQqe._·¡KÓ‚ÖˆûP*Aí%hûDR5+!ûø P± zý6mïviÈÏÚî>·‡`Hƒ¸GŸþÈ%Zá2Cn>Ý+Ñp4 åjSÈ>í£6õ¹üÕªK­ñîŽIÙDêÇ"©B ÷×Í•[òc:>_,Ê¢¹~×­$wÝî4�/0ÀÐùî¥w¥H£$Z÷–œ¬‹¬>‹dbOÞ‡çç8[gþ¸íp¢½@ý³cüÓÆÀ'·c×nþ<æôÔIùP:ë¸Á´²œ­òùR6«žŸ_¿rÞXIœ¸ÅBŒpŒRŸÆ=^zQîyi¢Ó9¤ƒýmOôö \™›KG¡#YF삌‘ŠJWPY§¦ø@ Ü¡8æ~YæùQ¨G "±Œ±»]ZÌÜÜ·V-‹ Ø`”P§7¢m~55F2Dz²ºL‡m£vS¬z­E•jx‚êF80;5‹,ïoÔÇ³Ä gi+œ£ó@9ºì¢sê0÷ÏŠ÷vr.ö4ìñŽS(—ö£yúøý™{/~F‹±¶Ç9×Ôß,QŒž^]ŸÕ@t=<<äg5ÌÉ :69®q,O‰ .Êó8&Sã+šÙjìAÿ±ßŽw)ÆJ5Þ,±J’—ñÄk·qªÀeI9§1—ÑãÎmns›ÛÜæV´yìøéÙÒÒ’`dï¦}úÓŸ¦þážXŒ:äXÞßüþ8ýÂÿð?øÎˆ¯†” Þ‹’%ÔU›ÑFü*ÎÕ¤hö“]Låâ„Ažzן(/Ç1ÿ4Çl¿@º õDÙ¿÷•]¨!vºv.�õæÂ‰µª08»ºÂŽ­šÔñØ4À?"IgW`I–( Î¿:Ð Jâõ{¿÷{²/({\,pŒ_ú¥_š°šET(Z�<ö»–[ÿð‡i4Çê õ¬à­÷ òû"8®ÇÐk´å.—ö¾ÀôþàÊ·¤ Ûû§ê6@ž ç9­Ü6hSOØòë~é)Ò¹Åë´ïÓÊ5ížZ„¶«YׄßU²pkkK`èáz´NñÙ¦¬À±± ><x³ÐZ ëׯÒúúªk¤C5p̪íù¦é•Êó”¯ Â*)ðÞ~8@@ËõáîL©B •••¼ÜV]î/ÿÁ—è[o|‹vwv]Ûáã”K~•p0ãüBû8…¼¸OÒ�á!E=„áx”ÈW5.ø5åYtƒÏ8Çf¤y¬Û‘-RÇQË)AÔB›P¤RnUtI@”²NÊ#·RZW`Ôø.]ºDT)ã:Ë`“À ¹4;:×ɾ}þŠÄ ˜’`ú,Zµ›ÚæÑû¥} Už˜V†ba -›n7®·Ô­à´„; lò>á…ƒj…¬ZÁÐ: K$CG.@úûçÈ3>5ïík,ÑcÚs^ Šœ$9oðwns;ÉÐ_¸g!”çÞ鄾›Ç~,òß©äMÕ§É™$iŒƒ’ú¼¤äsÏi–ƒyr©„ë;c<ç „&i(ç‡Ä é,Cég“Ì퇗r.éƒÇϦ«Ãüjh¿8V/â{•Ȧ7±’ê™OýÅkçŽæÇvÀmèÉq%ÿ¹âe…CQ@¤@À4@ß,ÁÓš¤é¨Ôª<΀<W¥D‹ ‘¬€ "íÝ¢Iì,?>G¥!…ƒž¾R«‹²A·©×n“äUb§êÀe”•³ÃX@xÔl6ê›;x�%¥ª¯.î…å…{]ÂçDO<6;±¨,CaÙK²š7K}]F4È@ÀËh‘«ù…Š[%;Bß[‚J”ƒ¸1ÆþPR’ -È0ð„ÔµE×É °'Ža`q-ŒW®!FÀxö3bÿ[Ä-©”‘#ù¸c ­IÝ/@J@žÈ.×Á¢ÖI8^±ñÄryu‰^¹ù-..1 Õ¡j „Æ ]Û\£°ŽCêuûB�Â=¼qc“öĺû`‡Á-§T!é@|>{!CÈ…a53¤ªy<Ä Y$.‡7Hž Å Aªñ$OÔOå:KêÏWìê) ¥Ž€]A:¾Åu¾Ô 飄îïfôhÎÕ= Þ°Oß|sÀc^H½R½RbðˆÞ¸sZ Ò}èÆG²èQoðˆý =+K³ôØÊÒ1ÓÝ"¹SŸ¹ñ‹&|ÄñóêÛ6×G/ …äRÊ\@ÂÔ] \>yÉ…CcظÚ€9vÉNÎtÞã?îm¹Oж×Â|7/Ò sŸuÞþ^ùDßéYÛùÿó·§tpöýl¸Jþ~àZ6Ve8»½{ÏO0véÏ\ éWlÐÐ[“k°üh–¹ïsµFôãùqþ‰B߆ÜxݨWä9”~ó3'Ê<æ;•&õ)¢…*÷Ñü::Œ¤þAÞ QF€¾æã[è}1éÀB%]8o®V-ÑíÛwÙ—¨H¼ $‹z­D Í’˜Ž:<>„-öŽ(AÅ舖–[ÔjUhoÿöw;tØN¨^_ fiPõ:ձϑEû{!YU?›Æ7Äù ãºwû:"혜˜û®¿Ñÿô›:ù<c)ïñ¾ývogé;‹ÛL‹ cRg9ÇYcæÛü=ËÉ Óˆ2³¯iľ’¤¼íc{ã…)UI­&¾z䱸øŒ{ê%“ ZDyÏÆ‹`Ž—¥° ®X¨l| ÜsÍ\ŸS*9"Q©TáX´K³ÇCŸ’>}×Ï1° ªÊÛÔò”AöÞØXð<v0·¹ÍmnÏǞĦ~ü{èœïwÃûwÞy‡Þ-³ä ˜ÆÿÑÏü#úÒÿ3U± Øbaœ sÕT·ØËú'Þ Ñ¯Ôw/âN3|­)r‹?©oãß‹Øô1ßÄ“+t–E>®›cjÄ. ÁVL‚—%Mà·’_ýÏø „ ¼4g¥ý�« ÀI Zu-É£xN-ŸNÒ�·ª  ‡AÉâ§~ê§èoü¿1A@øñÿqÙfš’Eѹ~gûXpÇ¿/2˜­Vq>êõ Ìãt 4±¯¸ÁÓ4c,9æQÀ^÷U²C샘ÕϺ¾øàOûnf}dcÅ [v½÷Ó&ªErÅi¤ ûûi“Ùb û½mSEb õ‡‰(V»ìíí‰: ®Ï‚¦TÁ}Ôvªd½' Sܼy“.onÀ`UTJI%•Xceƒã8ãs7|=¸{/«Y$7¬{îâQbêMþ¼wæš¡ ²ººšß#}¶¿øÅ/ÒüÁPûè`ÔGÞK¬ qsæÐ.p…3(éJWë3ßRßV•}gAõqùì1p7n“³Ì\Mæ›è ƒ Ÿ£ç)STI$ð/ŸâEŸ#5­×Û·ß‘UÑÚÇ!Ëòò2÷k—¤ ào¬È•<Úþú-˜¨ý¨þ{œß3ßæ´ŸÓÕ–¤¡ÛÚ²i¨¦¤ ÛªŽMÕ2~ÖG$ <X˜á˜#¯ä܉“®Î8ɽ2ƒz± âN޾äV¥~E±/–`¢±Ä§[YÏ`&‚‚>Klˆb¶Ž´l=Ù¶Q4[7E0â¹Òçö_Œ @ … éâÐߥyŸ7n{:NÁlP10§c HAmœqZ—Þ�[ 1 IEýqu!Iä«Ç´q}¡`S±pÊÈZˆ”KWYfu`á8 šéÕäßÙ•’õ‚òyÅ [YæŠ(VxÞóçÛ§�± oà ùŠyO€C]�PA 7*W©\© ±$¾2ÞAÀ¨Aµ‰Ysé4‚q Ø‘¡4#(3€<àVç ÐÉ¿•+‹UZ2¹JG]¹Oèÿbô…èßýd*a<çqv88^)ƒÓñôª8r‹ÀöÜ^0 ¸?a`  þrßÚÂëM Ãÿy’ÿ¬–°b);àæï:f<ˆê¡“QG+©b;œ/s¤, ƹÀ¥mrj#žì£¾cæ¤ËÈI_rÇ…úFr}RêÒ„fL+£Íƒ4Âÿ"]ÈAg@ •&W÷#µÄîþu:]º¼¶H­F…·íѽ[¼iB›kK”p] %ˆKaC´´Ò¢±ÂG{|ÿbwM9c”ˆBì Ì=7Xú1 „@�Ïo$=!•¹S8É"©·OOúC®gv¹FŒÝUCOT"·š�síín@_»›Ð·î¦´Óc_m6sâŽnL_{ãÝy°Cõr@[»»´t$÷àÎýmSŽèÒz“úÇèYáU#öûÚB [qÀû\òä6ö峉ùûØxÞÛÕÑ ü=ÞE½7± §È&Ÿ²±¬ÿ¬mÝvúyržrÌ‚ã¿g™’S§þs»'ÎC%m]­Îmx4u>ôL- ¦+ÆíãÄO;ô1 ŒOgôí¦–OɃ4.ÿóJ'r\}â|+ŽäžêÃ;ñÃc>ƒyŤÓîÈøüÅí2šÒU¾wÄïDošÎ‚òƒÂ¾Ì%–x޵¼2û’ *%G@Ð# ú;Táù òV¹:‚â^ìÔ–È_$ùý¼¯µ=¤1p¡Õ µ•º}÷>ÝãÈ›—Ö×xœR½Q¦KK<×oS·ïˆˆ‡<ög ‚j$žÁë×.S‡co¿uö÷ÛôÊË =(\9¢…ë-Ó¸«ý³.¤ñq*Cì¼ÝÅqœ_èú„tâ9ÓÇAI¹Jº8© ˜ì/Ò~×¾íɯ§>'3‡{7x~á urÖþwVûþq€½pÜÂ…çcø±qè”>—Ÿ ‹Ê•Xâ[ˆ Vw‰?U+οö$ßòÈ‘,ܱ'çDÅkÈÎ\µcêµÙ¸d® =HåéEéFïÅ’V1ˆû¥îS/²EkjœÁû=é˜Ìmns›ÛÜæö¾²+W®Ð»eEr cüÏýÜÏÑkßü&}âÃ¥®\¥¯¿ù†ÄnÜø?Ž•&^¹ ñÖ ïźÆù{FÓ6Êô éÉ/NÉìÏÁÄç ¯­€g¨Û_\l xq|— C°À*u€¾`+k0�œlÛ0ø³+m bï φ4ÖQ…SŽß?øÁÒ¯þê¯æ ­s`Á˜ltu¾Jò;¹2±b»xLu˜¿ð…/Ðßû{~ò'2?¦*YÀΚ.䬂‰ e–M¸Õ––—¦ž åx« ¼®Í®n·çÓúTpÂÕ¾§·P &}$£»½Ž‘ø òt.ZOªd jÅòø^\[ç¶ìjzMz/aØ×ªr‰“ßI‰%‹÷Ñ2L‚É“u=íÞi9í¹fÝ÷# ¿ñÆr¿<x_Ÿ°? Ø_Át­Ó_|QHbKÐ%½Ës©ˆØW•.´ÍãùªTÊ’þÃiÆ9.!j(çµõV¬GsÑù5ƒ �C€çÂ}³ñ[¿õ[^–±ìJyýXÙE%樺†}¦aE"–g¶ºˆ{hNzîŠmF÷-N–åx9ÿÂ×C¡nÔŠƒ°¾YÆõm ÔÀ”Ü¥r”P�¹zõ*ݸqƒêµ5ùm0’’§p_UqfUx”X¥mf Eemã–ÐfË«†ö£mGÛ§=¦ëÏ]͸ú¥m©ÂÇ(2XÈ€—‚®hsd xU 9fx%íÌ…ÍmJˆ¨Y„neþp4®½OÚ—L#\Ø>ÂÞw{ÝÇî÷Üæö̸¼~<Ág¿ŽvÜ­ø@¶ícƒ|rβK}úî%ÌÆ„…ìX€<ó$\Ä3:íé©!‚HVq†BR$Xcr“wA$ðXŠ*B&sÏ ‘äx…@3S»ò1ó„IsN~I%òÛÈ©1Hh^ä<ã! ãÔ¡»ýׇ1&”dì†Ù«éÞ ©œ üU­SµV¡J½DÕ_k™û’:ÆQ€éºAõá Èñ/÷Ð[U…˜ d2ÔâÍæŠäwîööI½¦Bо—ýQž“Q~¿µ&ÐïŽøXI@õÊìo…ލÐe0f@"¤×KŸïCåå ~i[HKßAª¹Á×¥ˆ˜÷ÛÇxÄ¿WxóJ”‰âU™ëä�¤ ÁQ¢Ìß²Ð; Š/I£p3!ÐÈMt„!!hüdþ½q?í%ŸKr2)ÙàËD6{©ß²¨ÄÓs@¸>ï?Ø–•É‹ 9kŠx| N·#¿UÊU:êtiw爚 uê†ôàáŽH9º ¹«#¨T  ØF™¿„¸)mIT"y‡,}÷iØwdÀ˜ËVªâ85ñ‘Qüv¿85–K2ä{tØ i§C´uÐÃN‰z Í@IER†„4JÝ3ïíÇÔëw¹>Ù¿‡rz½µ$½ÉhSk¡2ùð<e0H}2õ,™i<^ù×ûÔYþ}ãñÕ7®Ã‘_˜gáâµN%E§oÒÉ÷3.8HÏŒÉþÌÏ”¹•·xnD¬íœ•Šþai©E½G»tn{lP^•vf]ö“Ë”ÎNƒ1¾'²]ðø’ \=Ít!g½‡îÙšÞÌ"é¨OqÌNª°ÓÊqÆÝÒàÌͼpõåãcs”Y&dv׫Xø‘«ò¤2V…¾?BjÂ¥FFk-ŽmtÚÉÖøWGþ‡‚D? ÐO/Ì<™Ô‘ ¡ªèÒ‡Àù¯^«ÒË/Ý W^Jè­·ïÒ›o‹Í%ž×]áñãHGH†(Ss¥EÛ;‡<v¨ÞlR»»O‹\ŽOú#âŸÜz{K�_§ê7VÄ|ý‹K¥˜_mîód†–îSmŽª1²í<؇)ó¾_‰fݱÓÈfKzêƒÕS³ÙêjÏ­fîiß§mWŒqMû<í˜Ç¶™ÐœÎhœÆJ;~ž³ô“ ÃK³’Ä+4f‡80b‡xiŒ±biL[ü¥ç¶±<[–óôÛÅmó¿³”T OÏç„"!h)™BüC¾· °çÒ¶õܵÀ_ÒXgŸÌçq„¹Ímns›ÛÜžÐ^xáz7l¹âŸþÓJ¿û»¿+~Ô+6ÖÖ©ÕlÑWßüݾwWHànÛÔÇ>G´ðé‹ãjM’,½¢H‚u1„¨Z9Ñ·û6Ù˜Ö\ô܆Çö}·}á§m†`Ç ±‚v ÊÁV'Bl ÚjŠü ’…Î�âµ¹¹™$$x[qÁFlÁCKP%�UÏPà\ÁI¶×À¢þ¦@ïoþæožH²@º"mkeôO² ’û‚t……}œÖVW'öÓ¼‚¶N-`_TxÐë·Dsyò  ·(^xò„O”4 ×BM ×û¢ÇÜæþÞ[e %tØû!P’L­'m'šR/çÓû¥:K¤(êKL#WëH÷³ï֊ǰmÊ’-ŠŇ}ìcÒÞq-¨«b^ë!dT×öâ‹/ÐK/½$«]´¼%Qw§jP¥}°Ÿ¸»¿Sÿ,ÈUùz‰øùm €P,÷iEm ¸,0ðà™@ꕇh Á{mc–œcƒùüDQ8ñ,áØÚ¶4õ5+Ýd_'™ªºûŒÓ®ù¬¿ÍšÔë6J€pm†'íí#zç·éw~ç?J}"­ÈÍ›/Ë=:b°hØw€’CëWï9úV%ZèùT CŸA­SímÛ×6¤DU²õ=N©äò#¨‚�¿ ä„2‹f·á,–X9Ú æ¹þ ˆ]Z–Ä—Ó³Ò.¼ü¦È]çÒYbwÌJ8)ÅUìJ z2Šþ¦å´ê.³‚4³ÚÀi©…æ6·³˜ã¹U[)iÿ e†ô$msœŠ)ðÁiYyW»9�Uc2¿2LQ!ˆL ÈI¢Ácoäòìe¡ä-×ãú@Ó8¯·+«S‰pÏÆ8€˜À¾#XiÐ6RP°ð(e"Ó]¡Ùx`Lë×'Æ ôÿø,D ?®€Å@ETq HR‚L1ü‡ŠS°p*eªÔ"ª7B~qYw/žÇ¸P@ªtYƒ@?÷ÝC“†®ÏBÅÄc\Š~rHñˆA“NÛöSÒ¾Œ»‰O…#.{ ï99Í·ÜžßÇ6o´Í'n”\Š>Ô- R-¸ E`{îaû|š�ɹ¾*¡#48Ï’¦$¤6ï×âßWùDÐ*ÀŠXÔ[©®ÈM÷@ž¸»šz ^Ú^Ýdï8¢ˆ?½•츧ŽÁ›˜q/u}{ƒïU5ò+i¡Ï¶‹ºÉ¦·œé Ý¥o¼yW~¯×«¢�Qáû»Ê�q"Áý ì‡tz|OËÒzŽx}®Ü3Aãö8©ê4ÐëONRCJTˆ÷ÂdDA\¢‘å]J¾M²PοäHPÝ$¤½^@¾æ~(m*¥(–çãY¸ñŽR¿:›Ÿ¥Ô©£ãk–׋XªôtÇ%oáwœ<ÞMNÀ³œPCþ³7Ý»ñ“éâ›Èðg•‰[T¼3«BtFÓ:-!Ïw»â¯dcÒÊY1l·°Ø¢ûvè¼ö¸ ’/Ù3[1>“X1•×½g|¼ÓêSü×ÉÇÉßïìØv³È'ýþ¬mÚõµ,ÄJ*Ÿ®–PœUÊ%7Ÿä>\<¡À¥ù<¨\â>¹^’ݧŒ Mü€¿ïs<*©8‚h`È4b$û5%x:¤NwÀs¸÷×Szùå›tóå+ôèÑ.=|pš5Žryx,FÚ,¨8¾|s“mïÐ~í›Ô¨¯R¶y…Ǹ-IO¶ÐXà9j_ü-8!ÝnŸê•E3ÊBTL’™'§’v!‰û’î�JJ:uuÌ}MèI&)®ƒ<æEެaçÚø Ç—B�9ˆÞm{VmU|šw9¨|²PÑfÅ7ì<wVÍÎÝÆvõჼ³(Æ-NºPF¥‚ޏÆnsQuS,ÊÃ1ñâˆkÍ*§ÙøÅiå±åžfMªËŽÕº]'ëÈîðÝ ž+ðœa0àk¶©/ïã”Çz=˜Ìmns›ÛÜæ6·'³—_~™ž·F®°&ãÞŸûø«ôÁk/оù-zðèa>7ϱ QPMŵ’Å`³–‘÷M(YÜ¡(D\+žVDË8>+gq?ë?Í ïQ»víš8Ípž5 ÇÁÁAð+h‡w0”Ì€}°%.ØUÕøÇŠ}HêïïïËvC¬Öɉ²¢0=ÌS*¨S®$ñ‹Rò°‘IG ¿©cÿ¿ñòþ?ñgR²˜œ°N‚x§™ ¢øÐ[6I®¨×ê"ÁgM¯Y‰':°¬j›@I ú j½)P«€¤�ýþo%.h*™@Iô;»b÷Qï•ëº M#:Ì2›ESè½Çwz-Ðj'bÓT)f݃ӾŸVV{a')X@½âüƒ@¯¾úª(X¨J…ÖŸKâ&i—/_—………  [ÛòEÊPDVéCÕð ‡ À ƒ‡ü´{^>(ML:O"Ø|Ý�¡öòÓ?ýÓôöÛoËd“fœÓ‘�¢|UÔ¹ö(ƒ>-½F]õí9cbŽÞKKÒ°Ï««K½nu%Î¥iRT #ÌÜJZ•KÒs¯×>϶l?rR]Ͳií ‡�ñæÖ­[tûömúÍßüuº~ý:½òÊEá¢Vm08ɪt%@èÄÞ’*`¨M;£åS¢™n«ê>j6’ö 0í[r2@PØÃj¬D@ ü82K߸0ÃÇ, |ÀÂ+ÐñYˆr’W8vA/OLN0K³Ïµíû‹Û*9Ì’.ìsiïé4�wns{:æû•À ø¹H³É6(+3¸aþ™‚`ËÎRã: Pœwbâ;8t Ý`eÄä;Q¿-?/ ¦‚h *Ð>€’|†’¶ý13ñ* Ì ÁÉRŒ»ÊÒöþR¾j2õ ÖrßQ®L­•r¹Ja©:áãLö›Ž|¥�®^oþîÕ7M ")†|Ú<ë‘#ë…Ü_†¢\Á}ƒðåj]ê�‡ z”ëUU[<Qª%žQ#bð…Ý œl1Òk0^Ní÷»¼Íh�8uR—à«r¿78¤agŸ†½Q¨�Ñã\ãkæVŸ¦ž`p¬ñ·j­ ˆ¡(!ñدmQþVþƒ˜À÷,ã2vxÛƒt@‹èÛ¹,µ ó«”ùÜHÿÅÛ¥|î#¬„åïWÊ|\?»üj3èRãíê|Üúá %Åë$…”1ÌËWË-z–ÛîW»†®ún{.È!#QKÑ P*¬ŒÄ·¡b½¦zzý!õŽYaÀ  R£V¡•Eºó`[î‰ø`2ƒëçe :”rD²ê°"ÄŒOV¯]¿$)>î?:”Í©­8Å ŒWHé#2ð™Œ<¹#`‚U›uúÈ?Ñvèüõê2Åøð÷|ÿð—ù¹Ã3í}Qr(– uŒW´É\*“ã4÷ï@fŒžóܷ蛸>iL`¶>‘¦™›åÿØ[ŠÛq¡I™%¿eã‹ \j€ Hº ó[q^©¤lU T;‹ƒ~j™ç”Í&„?_{V Ý€‡ÏhEýãªXœTç'ßu8‚ÛI÷ÿ¬ñˆ§eéäБ—ál–ɘ õºR&³ìuUyŒÇøB†;§#Zl,•éúZ…:í6m÷*¹ª,æR „|� r²'f4B.%×?—yŒ¿venݾǯ6-.­Ð`´GË 5ººy^ºY¢½.íîx¼8 AÜçñjÀs¹ mn®ÒŸøîÿ-=|ðÞxç öÁøX/R¯;”tðZ Uj¶Jtëí»Ò¿4› _É„˜7¢r%’÷0r€0ƕɹMH.WBNÇ̧o”¾Üñp*Yš÷ç3wÞ·s£âó‚Ôie÷àúT{ï–MÎ;ÇËIq²iãí´í‹ÛØý$øoæ!â;ÇI“g¹ç Xd'´ÄÇÂ#ø6ˆsà…Åyx9²EUR‘IŒ" ŒßIµàaZ?—/q×®Êr’òGÆS7±5އ’&*b6ž€ØrœÂ….Fáø÷(¥í½÷À8:·¹Ímns›ÛûÛ€Xü÷YÛyÈEC9ÿøg>K»»»ôµ·ß¤ÝI3«iåÕŸAÜžxèSßS0V¦|!™PÂA³Vñ>VV ÚO÷7ÔóQ_.(+ŽùwïW×~Š]‚$àpƒ�¬*�àv ò¶ŽµŒô )áA>%U`{¬‚·7^U >õ©OÑoÿöoçÁ$KPP•'ð=öSi{µiÕ”0P$Ø !H0%Yh qÉ¢ØhÏèO4|ó›K\¾¼yl_¸ØÏ °[Z¯fWý¬ŠV…Aƒwº¯%[h™­ÄŸMû¡�¿î£�§Öu¬ÖòϪÜèuå ”ÿlWª[rŬIèIÍiåš6‰µçÔº˜6±C;¼{÷.½óÎ;ôþà ¦‚Ö¶.1 …rˇ>ô¡\ùÃNÂå~ȵ‡þ>&¹Z=ŸlpoQw�0Ytj27É”Ét(«„(˜$ ÌšÔZÐú«_ý*ýÃô3ù¶ú,)¸’…’xÐqM*õ¤Ž ¯/×V“‰ödï³U×°÷[Ëcß- Ÿq~%åhÙu[wìÌ“,"! ”ü³“¯ˆ6+Š÷C¿/–ç<æ®ÕN3!1à8h/ \ } ]\¿5“Whey…ë¶.èú| ¬Úשж-˜ªþX"™²l¥mR ÷Ò¦ I}Š™PääYyÛGÎU9¦%úà·Ü 0Gxq+¶EB<#ß6KBÀÁïhÃÒçÈõ'.]rpRNÖ1éÊÖ·’xôZì˜Q$]ÛÕ´€ÒãÜË¹Í &q[,B„Tâ•!È·?2à%VOÒ˜,7¹â^Ó/xR•ÆN9ú!QÀð{•°YaO"Ãx&«¥ª#!ˆŠDYö+—Üsˆƒ#·#W¸. çÈ€å=Hü³<ùÌ„^•Æ%™'€˜:ñïHß•ªÇ‚ǹåòÅ49 ñybE(ÁQ§Äá®Iå´G4ìw©4Œ¨¶vEH%%¤©p�·\’E¥Æ`=+DzÆ G*Ê ‹|Y‹|óZ Öz"EQ‡_Û 5ð°1(9Áp¬ð©¬ÛÑ}"‚Ø'Mû²ê�;äÄ…”&ÄUÍ—~¼_êCD5_>ä|ÜÀ}ß,qÿ^Jd%ì"— ‚óó^o³„N‰ä Ot÷*“¾+S‘¤ºtH‚þ»™9¥ŽÔKƒG>e˜ýÝ ›¶Ú>ËÇBü•æmÖI/gR7©' …^Ñ¢J®ïÇÐ2”¶‰*ÈUJ9Qp @àÛ5žd^¹´*îf£F/]ߤõå%úæÛ÷hoïHÆÎa¬¾¼»á. H7^ܤF£Nýè‹tÔÆøùvbIÑâˆ=¨Â“D¹ÛøtVüé)/übE‘Ù¸>düÆøÅ-\r” �áÄæC!•È8ÅBºHR?öÒ䳄UØ Ô®<ÃâYâ@3'éæ™Siù,S»WØ‘}ÓÜ"šÌ =ÇD{PŸÕ¯”?éneN­HÇ€Ó,o[ÙxÕmN~÷þTñž6÷ÄqVW–sbõÅ·|ôsqêóýgÿfÖzž¶•—}úv¶vøÜÍ×拱ÌKÆs—“ú¬RÉû&xÝ`íÿÆ\4 \ª.ŒE<fû,GB6èu÷¨Úªr¿‹1‘Ýò¤?AæU‘é>H¯ýÈËttxD;;mÚztÀ qƒv÷;¢±¼´ÀŽ[GH†ÄGxü>:ì²oR½ÉãX³Fßþ¹oã}ºB"©”ÔôäøƒÞ–W[ôÙ?òqßéÞÝG´µuÈã`“ã\<^ŽàG…Ò'Ci‰rå3­%ë†~NÈø+‘iŠ1—Þ(MÉûÇëÕYVx6ölç^Ï'EHÞ?èªÄÉóÇëö„cš}§úÏÁ¤Ïf·‰Óxbü€¢¤*@¦˜£ÔjB@URÛÏI·ŠbÉŒ²I¨wÄ‹¡š…6‡iˆ9tºmyaþ®±_Ì?"UÚ3Ç8KÛ˜¶Í¸.œ¯ç5]º]]8†¹S™r ˆ+O-WÐEú½8žE§D–ð"šÇ æ6·¹Ímns{ ö‰O|BðßgmOB®°¶ººJly™¶v¶éÍ;·iç`OR¾;¢å.<¦KrAZÒ«ä¿ÓØgu©Åñ1·èñ¥,5~L6éÒø—<þšûN~Þ8Þì—Çt¡ü– C°Ð•Î ¨ªÁ!yª –± '½ _¨Dœ‚J¾P¢Vñÿú¯ÿúıa8†‚JÞPàß‚ÞöÑ•aj,Æ»]oM•,þößþÛàìÿøËu0·ÇœØíØo.Š–°GÁ öYûkÙQ·ª^¡)@”Ø2 ŒÔz)•Ê÷Î’4”ijä{N‘Á6 ­–AN{n[>[†Yu¤û*ÁÿEµŠâlÉbaÂÞ¯Yû}ñ}"#Ñpk Ûìíí ÁAlù1áÜØØ 7® ˜®)V,áAë�ê oû`Õz*Ö›D;B”¨Xx Ï(.p¤ucÛ¬À ÷ÿã,Ä(ÈZN%ÛX‚„Ø+ÀmÂ"¹G÷·÷ZÛdñZ³Ò›úYÓgèõÙóÙ2X% ÷YSc„²2+JU•EIE*'iËsÞÁªFhÐÛ–,Îýý=zóÍ7¤?¸qãEZZ^“þS‰jš/TŸ{› Ū¼Ø:·i‘ô{¼”˜£ä%¡‰*EêÊ™p�1FþxO@J“’_Üà‰Žþ�nÃRNfA°ÑŒHNd1ý§/SèûæbÙþÂjz콱ċb[Ïó÷Üæö¸†¾’ÐÙx-¿h¿P‹6›j?”Ó)ÀŽ Í¢çðʱ@DÀSõŸ±ŠŽ*È©)<JãÕŒâ“U]þc÷œ•eŸ;NÉ¥*H•EØÄÊuß\ð^!ð<êöŽ<% !–¤þ¸Óe¦‘¢ùÆUö<>ço8îØ§(¾GÁ˜L*Ù¿úímjo¿NÃÞ6÷‹ T©~·Èû*ùª\)ËÊÏr•ý‘*É;”ŒK\W‹|L(B,p9j#�hG:ÍqM©»10 ¨Þ¨Rsa*Í ŠªûTÆŠÛ.·£yã8Šª�ïrŠ�…wù½ËÕÜeÔ‘Ô$ ½—êK„Ô!©¤¢Xâßü:ä]‘"DÀûÀ­xA1A”Žb�õì'7†¬yšŽha\�¡Æ¯º/e®]¢TdÌÜž19È”>Ü˳rR>ÚG¿«ðû¿èáú¸í»´òX µ‘i(¥{+—K Tµhe¹EŸúðK´¾² ÷º\)ÑåKË¢hrûÎ=ÚÙgpjèÈB¡“~'Ó¯cåðµ«ë” !3‘Ò®mÐb¹F¯ßÙ¡;ñ•´ÙR®x”Ïu}MåžT8޶ë+2Ÿî×Ê÷ˆÛÇb-£…š;g»›Ñý-¾n¬–ÄsQÊä9Nph§.ÍMÊÈ*Áþ_ï5¾®Ãƒ6ƒÓU`ž¶þ: nìŸåXNîcÒ„¯:žÿhݧî~K€`L»X†»—8òYrò8;Dç'qJý@ð4s*"ñ(™¸'ùö§Ì=×ÖV&Žo;ÙÏ/r5ðnÞûÉ>÷¹5;û5?ú9÷D›æS¶ôI«Ù×[âÕõNR°PsqMAêSÈ¢ßÜóÓ¬–hm©»x>Þ ©72ÄÍøˆB0KWx§®ŒeDý„ÇdŒ­uwoŸŽÚ!-.´èæÍEj÷º´³s@{X-ÐZn)>W³V¡—^¾B_üâWèè¨Ç×&ÇÀªBÌXYiQ³U–±;ðýã`8¢;··h¡Õä˜À‚,ºèvpü}žË÷h8Pé¼…# è"|—ú’’ uNíü4§Xá•.B͹ë}¤yVÏ^y‚ü@ÓcJvÛi1–iÛ‘ Î$™Ø..Ðσ¡SdõKòiù1ÌA@Ž.±oµ¾¾DµzÕèO¯§‘W„8ÉŠ1÷w@­VK¾Ó…9x¡<ˆUa~¢Äm•(gÙ¤¿2 û¾?‰ýóæ1MÌШÚê¸þ‚g&ðR™ÕŠ `æÚ<f0·¹Ímns›ÛS0ž5ÁâÛ¾íÛŽ‘+à/ü“òOè÷ÿ÷鼆ãln\¢Õ•UŽImÓí÷i—ç½^œæ#u~aNn4…¡œI×}_Zl:ö7¾b=L'}™¾¥Ù1âmj±Pší¢g~ú~° C°°d+Uƒ“šÀ7�d€°ø Y8]ÁϺºÁe/+ÈúÙÏ~–~îç~.Oÿ‘KÕ{ÀY·‡)hÁ±âC+:Á êïE5˜’<,Éïý¯ÿõœ`ñ$ε­á/¼pýØ÷Z^”u_TŒ ¢ @Ú’," ]PÝ*}LéõoK¦Ð÷"QÅ‚âúÙ`‹%;ù*Ö‰ô~X ØÈE’Å´úšö]10<­,îÞX0¦«Ò¡) =è hø™XY]¡0_[_£< ›y°ŠtUp†$¨È—ÇVíÛöÉ4ê $·:EeÜm |\vm.(c®ÝÜ Ûv4Ÿ¦%èKï¹*$èqôw­ëb Ã)¦ÝÝÆnoËY 0O:¦´û»öC|·iRK( V}—©‰¬¥#aDÑxµ…äÚšhZ×”·Š×]üÛÔ@J{ýõ×åµ¼²FW._ÂÅ¥ÍMV,äu¥%ߨçE‰lö¸J†±mUÕ*dðŽ\þ`´Ñ!ø/pí¹Ì B™[h¢Àmƒ}嘑[i.ðTšø~aÜÆ¹bœÆ¨ŽB]ñMôѶ~Š÷Øö/öu?›ŽF÷±/ÝGÇ•¹ÍíÜ–98,*{ò¦€Ú©¤IpâAÁzƒêÉEWµ!Ç“)ðLàxh·�¯Ab Üs%©2|Š'UÚ%vÄÝ þT4¤BÊŽ²<£Ø«Ô@²(1˜wH‰Oÿ! ü9@¾QIVvAìÑæD´¢È%>`Ij 2 Yk×Õ£î 9D  Üoê8—?¾9ÙãTi ƒå¼ Ž;UÍ)*¹œëi<¤£í·i÷ÖW(î=¢AkQ䇗?@Ñ‹Ÿ¢…¥*#5H5ä¾›r.B¹’ (ŽÒ€ê[Cÿ(èúý2טN´€D¥žReÄ~í°Fk—_¢kú£\-mÝý ®”ªÍ*÷•±¬nC] û|¢›ƒ­¸tñU“¯¥‚><ô@ þB¤HP31ÚJê¨(O_ÕNuà—¿«%ŽøR #Ê¿¿ÎÕ¯q/ï_ø{6 êÿŠO™¼©?G~ͦûOÚ Ÿ½ºÕÂ]þ§ÝÏxàúû…z™òsNŸø»Â÷ðòÆ­,4$ÿu§ëˆÕQ™V–šôÁ—.ÓBƒ¯o&ô`û@TD‚Ü¿´ó€”Ú‡2fw; P- èúåž/ÒÊòmt‹i$¤ŸÉOUt*•RÚXhs äâ”ní;"Lêoj«Ð奌–*ŽJÕ!Ý Ño×%b‰úXèˆ2¶AÖ=q¾SJ¹-sƒ\[Yrã¯O³–³Už‘œ¢ïbQØY`õÕÜß î¹ö€z­å‡<ïµgüî¼V¼ÎÇ5%¢ãõ ?A‘˜—9k6ûµ”kvN&s@ﯜtœ¢¡_¨›En–á TtbÕ>I­OŸÑ3´g÷Ìœ|žÇ¼¨ì¬ÇŸµM6ÑïM=Ef~•†õŒêè”*8iί†çnŒÓæÖ´ï©ä 2ÆŠ;xk•V—8–Às—Έûç8’¾[V—Aª¿GÕZ“ý—²RsÃk~dt¾Yꔡ*ÏÉútÔP½Qã9X®_½, î@æˆÄ>Öpp@ŽŽFôÊ^¦.[AÄètޏ 5z´ÕáãÐB«!*~.µ¥KI’¦ìD½bÇÀ«W/‰vxxD6b�^]0Å|(�±#ODRȩ̂ÂpÄWõmH|IWÕÿŠÅ—\¡^ 5MïwÓT(Oµëñ•,ÿL3«ê¤8„îžSz ÛätÓ1oOó< á }Úâ¯Ã!·y¤gÞ?òÀêê:ð6Ý|„Û]ŸÛ)|,¤RÜß*åͲ^wäÚØ ×9Í$¶@g)Q³‰TÒ —®Tйx.Ê7XÓMcQæ1atœ”æ‹ä¼r¥üäño ™+U}ìÇ‹J^ÉSð±³;5­HèT6ƒ1XãƒO¹5Ímns›ÛÜæö_¬}îsŸ|Ó.’}ÚöC?ôCO\a­ÌþʵÍË´±²J[»;tïÑCÚÞß¿ÌÅEœ¿‘.î™<qÝLb©'jÖeÁ*L¡Êv¡!Ýâ©¥ær‡ã^ø‹=ëüûâø.†`’L×bºÃñ½¦òPp9ùc¸"ä Ë¥/èO¤™ÀïŸüä'…Ťl8Ù²Ó�‚ÄW€ÍJÃk™l�°þ+IÁ¦×°6da­e±vÖ WàAÈâ¦/ݼ9q®býjMë^¯AAnK–P³Ä K„°©Š`¦Öê^‰ºªh«>P$xزÌ"4èoú»¦À°×d™3BgïI±,öz'€}De®ÿJ³l¢Œ¶níyl=IÛÀ;åLn/]Ú”Õ)xÂÀÝȯ>QÀL_nҘʄPßõºÕú¸÷¡…dbÚÈ9]ù]Å‚&®ì4q”tQ|¶Š**©ˆ|ö6•ÉñôãòK ·íÀ*ŸØÚv[=†nÔŠíÍžC9­½Ù6Tìô…¿‡Ãq?£m\Û&dö+ÕŠfpTVRû@'ת²¬rV2!”™Aæ“úŽý½ÚÛݦ;wÞ¡/Þ”"¨B~P%ßh?hIzÿ”|q|eȘäƒrKn_0 ‡Yp rÅ( `W«òB®ú0Ë$ð±ûœÿëžY–zÝØAÐþOËc÷uû'ÜïÝO³ïVIÅ’N´¬úYÛÙ45£¹Íí,†ð[•ü«›Ujïs¿Ï¨wŸŸ‘·yàè#ô• ÏB<“ì£0°*Êž,éf„øÓ|Ìq+Á¢"}|¤+EõÂüBœC™ œ8u–ßÞÚ¹¿+üw•ª•&Å|îQÒç߆î‘2)S&ˆxâT‚”\VäCGQH¡?/[¢xá'´/ 61ÙÏIÍTTb ä Ê”a™~'50dæÁ}£"׿®@!Æ �$ݽ-êì> A§ÍeNø}Ÿ½ýûÔÞ{‡ûÄ6¯ßà~§JF½«uî»j�cRªòq8š\ bÕ¤ä©->zÂA™ÏSå¢T3Gn@üâ¾ÇµÅ5Ú¸ñmÔÙ¹Cû¾%i7’ˆ·©s¿xpä‚È~²3ÙŸyµ€,SæöÐ(ÒÖC×÷¦ªÄßaŽ…>·íëuÄãRUF©¤ ‘ ‰ô1ZCÄõ8âÔåjFZT^$Š%kpu!únœçDŽÈ`¢tDZù—¶_§)ø\¦½½ëk½zG†É"!]H@=Vð,ðo}¾ˆ€ÿX[ެ(yç¹Ýmí슚S…ÇØ€Ç³Ýƒßÿ: ÙŒb„ôX™ÆÇ!û�,€V,bõïÊò"5:`€ }},ùíë4â÷v·Cñ0qAx'ñX‚ÄFrœn¶7×Iïñ Ãã]âÆ¢f%£—72j–S:<ˆå:c¾?Œ±ñã»: UQõ[(e$ê#—v„<8ˆû°µ{Ä€\Ì ÝbÞŸ<‰6±ãkѯbu~©Ý§xì©þxæÊ?àºjɳp¬ÁžÔ›>–?%`<pêYÂwÞ¯(|úœÉº×:óµYPÑš�— s2À¹¦^sòî ·Ühë«­‰ù€Žƒ=áZ×':˜ÿ8¸ÿ´¢e§Ì¿§Õù9Ï:åœÓëèqª.3}°ÛRy™ùpÞKvÓ—Ó/$oñæø'ͽŽ}ïK‰v'8ÎfÌ»­U@Œ–‰mš(5Ç´¶ÈýýˆAf]õ‡ÎwytľBÖoScýÃŽÐJª~‘äí@dO‡È/ÆÜzE^P¤è´ùuÔ§Ãzš´°¸(àî�‹@ë é+_ýµZ<þ´2ÿ_æ± ðþÞõúP—lqy0w#§(°Ø”ñg4Hi°7¢ÒÞ~…Ö×W9n°ÂóÎíKÿZ*RWÏ %úêÔ]º™KaDWð9›4& ï˜Ó–Dy‹G-:ù®>yü4í<ϭ̅˳ÔœeÿbÌdì ú’‡Î[·Ù~üLú 9M#ÿ»¾?‘¹¶(>tûÔå6¿¯\^…lXÄÓëi0Œ©ÕÄ"´E!ïˆ*à A¾(F/ÁDmøáY\ùKS_ÇêvØîÒ,›ö¼Û}'û)G./—*òâËð1Ü¡ø~H¡ÓéIEI ¸‚”ÓÒ98r‚¹‰Œ‡î¸,UJù˜0ªä×\Œ'ä>S&·m÷crN@ö¿·ž‰¹Ímns›ÛÜÞ¯ÿäóŸÿ<ýÚ¯ý={Zä kÀ°¯]¾Bë ZìíÒí-ÚâV»}ä6(øŽnºâ¼‹¨Y£a—1•Èa8‹|ÜWT¿"1ãБ,t¾“‘u/Œ¿“m’wWWòiÛ…!XÀ‘‡)x¬ 'LH@•`‡ûa°’°*0�tÆ;È´»»+Ûݼy“~ù—YŽcA0˜N<Š ˜%eå,pfìc­)’®åÇ~ìÇdߟú©Ÿ¢gi/¿üòÔïí5*ñ`"ˆC%ŽãÖŠàuQu¢¸úÛ’Jv™dU•ƒb½[ð´8Iu0 ÙòÙßg]›@Áùb™í>Å2É÷Áqâ‰}WåÛ.‹×‚É0$Ê——Ö8°²,/´yKÀ³PzÇmÔKúçÌÕ‹ º¦„Á$Êò¼Ü=iòpJÝú@ª›íõkúˆâõà3$í³4+àe/l[)’`V…ÅÞŸ"q¢xžiÛïŸ%WØý-ÁJË{Rû@Æ“Kð÷ÖñÏŸ,üªjÈ·¸©x™oGD “z7ޝe\f½¶“ ÛAèk_ýCºsû–¨Y€hâNTIS ຄcò™*éÂ’‚äž'n¥º”JY$«EºI‡úq_BeR4Rr0$ À¤!iR¦¿-ö¹–ðeŸeKô(>·ö–h6ôcïQq ˜˜Ö—<nÐmnsËÍ7EŽÓŸùžŒîÜ h7%Ž¡ÓA»B‡~–\¹QqIˆK¹z9à[VÐgŽd‘y‰g›å¹.ù y$„ q³E¹"²CÉ“+ð9Ë4éH(é{8„ÉÇ©qÕb_lº ær¿–„2ÎI6o>o5)Q/9¢!?ó 3dÒ„.õOê¶ =èvwù¼“TÝ•*÷Ü/ºœ‘Swþ#̓ËrÌ,U¤œÆbÈåE'ñEnÜõip¸C½ƒ‡:¢6€{ArÈ[´sïé`ûƒ´¸þ)>(ÁÛ2oS ‘¾ ì«"« úGôM™» ¾§àúD}ð¶È1¼Ä>o üwŠ H•Ôa@ßwÈiÝ— ÷ˆòÜ2÷É|E6ú¶‚닸$ü{›ÏÍX‹¨iHâOÊ‹Œï©”˜`å`À Q&u^ ÊT-G´„P[ [é ‰ñ䔑»49§“NŸ(ÊÛ4¿ÊÿâÆÔ%—±^©7L(è²ßòÂFY®×Ž¢øÀ%Û:èÐAg ûº'„[ØÚÔ¬5h¡Q’•»­F’”7x> Ü²²Ø jµ$Ħ.Ÿ/ä kt8  ÄsÐõRzó.mC×nu>Ol××ZüŒ†Ô•iÄÏB­ìhƒî;_CÙÕiµ’ÑÍõ€.-pq¶Rž<¨Yâñ6 èÑABí^Â`\" œŒs[¡€15âöâ žK<[ ”±B!W¬,µèÆåU_§çBÏkEBõx œŠ>½¶œ  cÒä ì¨ÈpÈ]óÂL™àiüAGPóßÊ¿¨UPGŸ:›a¶MÖµS+S_38CcY^Y¡‹fO*ÆpÒœrnç7áõ?/íÆ½TVpaœ˜ ‚Q6•xVá18 'Ç¡2‹—W± !%F¨Ó å¸è“ãÈÛ¼Ñ")@u{'•hââ<4Mº´ÎкÔnw†tï~‡ª{uZZlÑpÔçùRŸMœ­&sÆNÇÍ¡HÑhUiccUÊ‹õ@½^ >Q§;E‚F‹çÕ€®\^ ½žïµ‡ôÖÛ÷DkcmUæþ'ë5Ž-,·èà°OH5—ÄN $L[§fé²!©‚š*‚Ià6 Ÿn,½˜YœÈaçnÞži<-¶±ãq=0ëÆg‡f}gç¬9‘"NÄ—9+ÝêGöõª Y`ƒÏ¾ÝÃ|%ž“×[’šÙ¦ÔÐÏØ¾¨[œëÚØŸ{~&ãÓl8:¾@䴘̴˜Ññ¸ÛXµÂ=Ž`ÑåWŸ}ü.;ÿ bàYA̤"¨{)—ª9‰¤3Ê̵N;÷¼×ŸÛÜæ6·¹ÍíÝ·ïú®ïz¦‹þÏÿ9ý…¿ðÄøùŸÿyúƒ?øzQ€ë—¯ˆ¢Åîá!ûñG‚s?ÜÛËÅ `÷:%îÉñ¬ê#Q¤yÜÓ«Å+Þâ•n©€ÙN8fC*Îq/Öqa"Lª¡Îi½^Ÿ�³@ �ñ¦Ä €ð((yy²©,ct‡’+p$Î5¤í®\¹B_úÒ—è«_ýj®JaSUØ}–`];‰Y QƒTjÓ@\kH ¢iA¬'*§M2N³ËW.óÄ{}êoE@¸ìWm•ìy‹¤“â5+hoëЂ˜V-Û«’Å´ žÊ냶zÎâý˜VßV- ø½M0ë^ÁZ=_ñ~Lm²ãÄù.Íh©Å“£hvÞRluz­ÊA•&w¶yiÞTU§€l»ÞŸ")�«´í[R†ÓõWq<�˜:Îë¯dLž°`¶Sò“ÂísA·Å66‚ÝÖ’p<,ïIñ¾êßV ¥x_ìó=MqÆ’…Š€½ÝfÚ~öÚŠ�½}®l›ÑþÌ}P»Ý‘ÕT k<¸‚pÑhV© • ÿ öýüý¶Gʤƒ¹ÿ>]¾|™n¾ô2÷—…Цý«M¤×g¯ /*R˜X©Ûíw(ìQ_�ºjÆ×ÔeI $“¾´7Y\O/¤íHú·’TìµZõ ´AÛNŠd½VEɺŸýïº nšª‰í‹´œÛÜÎkžr@‹K}÷Ÿª2^f€ÿö hgo…ƒã)}ùõÚ#¤š¨Q»ËýÒÓ¬$¤‚$óx|櫤Di€ƒ‰¯ÂA‡@)°ê0(»³f ùq 1tjü¸™ùÔ X!gŒUjR©¶"’Ùoy DËÒämBÆÄë!?’·r¹iHÿàô.Jà“hÀÑw¢*¯=ÙÇVÙ_¨6h,©«ðã…y”Èõ8’ƒO–’¹ãB‰!’±…_%G¶uÐîÒ¨Èe[Ó͵õ�®“öþ=êÜåm?ÌõSf&¤*ÒVð¹¡`Qåë¯ÂUÁvwDi?øÀHßQÁ>¥T@“^4¤£½[t¸óÅ£âLV‘¦‡¢Tf®Ã#N9˜‡¯ùÃÁQLÃJH}þ‚1yjsp½ÌW"B£ ‰—ƒôè#OºÆ�‹ødX½È‡AŽy ÎÑ€BGèÚâ䢡êÅ}ÅŽO É?,w+h]ßÊuÎ7mT „Óãz‚:’n7áGÃàwzõ#Gš@ —$ƒ¯@’ʦÂ}u«Q£õ•º(IɳÔ×ó…ò<A  ü¦!qg«MÛ‡1-l÷… ˆgw•V½LWÖ›ôò5Ûø·û!=d`«YËh}9 ZÅݾߓߔ¥VHKMHÙCM/Þ~@í~"äc,¹q þ žeŒ“¡Sç€_Õ“õ•*½xiQÈ1;‡mi/µjÉ× =‹=ñR•¶ŠdXׯ¤Þ—ï—ùU´c¢u:1Ö«_QG,u¾ÿÅ$Xí÷˜ûR!œ’Pñ[èMYšNt5¹#Â?^€#óõì|žt‚`q[Y^¦Ç±Ç™Ë:;?™ä‰C?~…ÏãXq>òvOª1ó޷ǹïOrÿìøëæ ±,o ÉBÿÖ2"]T¥<ž‹CQðc//ÑJ3“@f»ÇãI?“•ñ£Þ#ÔJ£&¥5nßãq“÷]˜Q"‘}r~ü ôßwï=¤…Ö"µšužß•©µØä¸-¸ÿ?è A‚£ZB\\Xà>½Â>a¶wèÁÃ-*í:EŠV«Êûud|̼ZÕÖ.ÿÞnÒï·´�Òß¿Éçüpû€=3HR¨((Þxá’(ìî¶é­G2ÿ\h. ÉêH2¯ ü|Ù÷ëÅ]’+¬.ªa,‚/p(= ñ\yz|oœî3ÈN#Uè|¼Lß¡>!©=úC‰`KŸ?×j ‰Fì÷'1æ5™›W+-ö󚢚))òdì. ¡Ô.n²å>) “X"{ÅZ>½ÎÓˆfƒA:u®<-fs|£cÌ ¯ìA>Åm,jyxw}ÀPž¹Z­éS¹yú¿'O´À;æ9 ÜJнAFSÿeSâb§Ù´øàÜæ6·¹Ímns{úö¡}ˆ^}õUúÊW¾BÏ€+ÿÄOü=/ÑâÊÆ†¼ <v•q›‡ì§ßßÞ­3Žî±/"Ý_<é[qè•’PÕí"ªSY eQ•Z@“1ÆYØ—Äe.ÐäõÂD˜¬d#LWs«iê4(U¹p‡¾€gpø1yPà  -�Bl ²Ò& `„cü™?ógèµ×^ËAlë]*„þ¨«©,¬òš‚oJL°ßY©¼óšuÖ‹«ðuÿyí#þðÌßp<Ô«M×ú‰Bñ|`—iLЕíšB@§ïZ_ºz_oI`XâÖt{{_Šr¸ö}šÙI(LÓX‚HqX¼§ÅãÍšôM#]X+’5@N)M|ç™’æÕžq-hë6—dȤ±R©{Ò“dTÒ’½®‰4&aRŽîA#—£ÖK‘ë+ÍrPíªËò{£Ç)ª‚hp\ÁïYí`¾Þ“Ržóöx ®OÓ'ø¶mZB†þVl‡Ú¾-nÏk÷Ÿ¸_…û<€ÏZF«Ðb¯E_<¦~çîŸN Àª+üPqÿ ¬0i2 „ç·V«zpà ƛӂÅ6†s¹~ôˆ¶¶¶èÃþˆ¼jŒQÒ çÖþn4å× ÃŠi[²‚¾K‡ÁA›a;ZŽœJ8ƒ­C]úe²‚û£r•àñó§iHÔ´ Û‡Žº½½/èÿm›RP§Ø^µ-ê}±DÛF´=ê}S³ÛÙãÏmneèCFèŸV©Îý¥Õº|¥JI7 +]Ú\[¢í¿¿ø ½}§K¿ûůQ€¨_YÔæSÈÍ{¢B*kö#!>e’³ ÆfÅÅûA”¼Vè3¸ x Â37 �ЇÔSÇ€òET„`Q.µheõƒÑG¼o—Òr(à.È¥ bÿ‹ŸË½T�ÂÊ5Cþð˜ÿ†ƒO¢tã‚:\z*éó³ËýÁ8€ïÛøoG›-Ÿ6Bˆ€$€y†¾¹Ðñ<Kž‡Ô¯úwÄÐãBAÿª\²,S­ÙôJS.…rŠ]*W@h\”àõþö]þÌÁì4¤»é:—Ö׸ïâkÎܺN-r‚þ€O±Ý_¯¨_Ôd¯`»Ÿ«M]îw»G]êu iç8éx‘MO¡�»·ÓåºDAªaˆIÿz(TSIë.du\Óa»OU®‡²�Ùî\)V>ÆîšbŒç|Ž*dÇË‘KMãÓ°dEÌ3g|<³ý¨ÿøôH—–2È…yçEßSêœÛ|«Õ¢þ0‘À8È#K­ uû#:êÄ’£mMúoù)'-dž`Ñé%¼LQ…Ç( b·F`4êSÁ¨ âREö‰¢@RbA)d¯3 V•üÜ�½bÀdÜ.!ívù3Ú#×i„ÝLTKRÕÓ°ÎÏGÄa´=.c)õ €XÕ2ú…PžM<×1î3?ÛKužp³ÈçÇø‹ûÓeíÑ0ö·Ž¸oqi1ÞNúqî9ˆGq>~}8Xqµ¬õÛôï^RâÁÅY­d3ôáÙÏ‘º ”¸•y~R4»Mêý›Øûnެ}vÛXmÐóµóu.OºzJýÙ´¾©x¢,'K?Á ò7>ê9õ^ƒú²§ñ gîºb¯Ò’e'ËÙâ÷Õå2}ò‹ôïóm +«ôßv…–P”êÒþÑî>êÑáQ’Á.áCé—@¸HÓ#j…»<.±ßricÆ D÷‰Ü-”tS˜Ëß»÷ˆöë´ØZ’1 ýèÆÒ F<þôÅ€šÄpÄÓ$Àüæ+Ò§îîÒý{÷E‘ióÒe{@ ­ó±ÉcÝáaŸîݽG;ÕmnnR³îÔ7®n® ©ïðp$eB_¾ˆsñ|’}À…Ŧ?@»;»tÿÁûLZ[Û¤;ñ¨C®Íú\ÐdÒ·ú¾ê¢.±\‰ÎD÷šÖ'Û˜”}wÙ4Æ©=ÈÓÜöÎ7I, ‹e<=âXçÑ!ûŒ],B %uLçéú*oÇþϭ뵺ø?•ªä¤Ì1‘b"öâ}ÕÀ–Õ?D6.bËmãBÔ*ƒè\}Ø(q•Šk›FȘÖw*9ÅÅ9\ŠÄK RX–]ôæàá™âç¡Ñr@‚Ä;]Ê5ûPǣр<Géñ³Ž—ÆIOÏûéå³õ6·¹Ímns›ÛÜÞ}þû¬ï¦5Ø/)zmy™n¾pCp-no-4ÄŸôsbJ>%QDõßžDºØ•ÚØß r2†ýMgRY|±H¢†`¡ä]9Üétäû"°© ¤‚mpxñ‚Šö@Œ¼Ê´‚T±¾¾.“ {Ü}ìcôÉO~’¾üå/Ë1ìäÂüà”ã8JàР_V¢@`Õ‰Ëyƒ$Ó¶/’-,øš]»vMäþO3M»;i¥~ñ7G+YB'VÂÞ;¼£NQ Èê6 HZÕl-ªu`W—Û¶R´"®åP¢‡ž³¸­g[¦“êß–OßívVÑ#ú=i�†Ï„²âïøu¨:ÈàÇFI^ÚNgú +!“M� ižUä³5ý<4¡ê vÛi©ÔTÒÈNÚõ¸–anà·³d K®°õg'éVõÀ¶×±¬å$Ѷ¹âµÙ:²ä‹â³`Ëaï‘îoý<h¶‹ý}Ž»C/ó™É¤} +—°J¥.}¢+‡–åñ‰^RìííÑþÏ_¤îÓ§?ý̨ÑlHªêùJÓRi ®�Hâ ßag•¾ ÄõaƒjaCÈAåj™ƒ#‘/ÊW©•èë÷‚‚Ú~Vû^­c—;vH6že´ mÛØu¡º"˜£¹Tmߢ)¨lÿŽÏ8®’2lz#[_–ä3m•ÏÜævnã¶7àÈã;ïì (ßéÖéC7רUM¨õéú&÷‹ûGtûÎoSТVóˆj•?i êÊüŒNyHRhpP«î8(_æ�,•׈G�‘€fžÖV_`ð|‘vwñs¸Å~vJPªÈ’DV%R*вz@rP¦JÀàq\¡FÔ¤Q•_èÈ¿º¶$Š;£2ƒØüŒH5U.QŸÿ† FäB‚ƒ$å Qfb—¢Dî;qöóáGÑÆ”ªµ”¥Ua $~å»$…ߌä]Vün•ªò3B%Aø¾àH]¥h•Ö®P¹¹@ÃÞ5"ähÆ3Í×ÕéÒÞÖ=ºrx: 0tFmºýÆ×(¾ù}àóßÁý„[Á™ùUˆÎ~ýë_§G¶é£ý8ݸ~Ê¥µÎ =ûB�@ ÂñµÔ#ª7ë¸öÁâ°ìý‰€¶i&¦Éñ˜ 5’Pô2"!Eð7ÔöXm­ ÕŒúÝX ²^~0eŠ2È®Q&¯Á ?q¿Œ´üLÇ*%Þ?â¶!´ñUB-›$|ú!æñøŠ2Kœ&2@öz0Òˆâ`òSFc&^kKzõ«ôp·OíÞˆ–[eº¼Îm•Ûå½G]Þ?“û–n³-/"OYê&¾i*íbh•à  Æ%¤ˆa#r&ÉyïR« -v¸^÷ºêsY{IUúƒaJ÷vù¾×øÞ„‰H©G¡“[¯VùŽ1ØÕãòôùà+K%ººÎÛ%C!j´»­4#Z¨§ ð… ®ôx¼äqŠŸ¬PH¸bÚ<~òö}w:¢è‚Ñr{žQä$áÀûöêß«Ÿ–“L)™œ¡ÿ£còÛÖ¯ƒÇÏ^?~êž÷”e¡W¨:)p© š„°J“Dߓ晳~ÏçL©#Y!}‚K'Eç²õÇS°x¿Y±Oð0Í$Zd“Û<Î)Šå|^Þçé䑳Å,ŽíCO`ž×µo¤»ts•Ù»h×V—hwçUé>ù¡hm!ä9WG”ž^¿½OíS5äXS5¥Rã*¥žøø#j.½DNüb4ã,î䲤%:8èÑòR‹.o®ò<k—nÝ~ÀãJVV–„\€ç(«P­î”º¶÷øü•&ûû|!­¯.Òæåe.×ÅCîmEm)u§zµB/¾°L/ß¼J;¼ß½ûwé÷£+«+´¶u´#ñï0Ž×êU£†ôö­;´¼¼Îû"ÕH‡ç– ôíô:mmmÓá!ϧ¼wþ¿ &Âxm« gÚwVke:ÂfÇ‹ŠD87‡�à98æÄP¢88<¤ÎbCö}ùþ¬R½Ñ¢K—Ö8öyÀ÷»"ñ�¨M‚T±Ä÷Ï©RD¢J1¸`Ë"e?ü—úü¤™'ô‘¥¥Ì9QiLøE*¯ŽZ®Oï{RßàÙ±m•dŸ_‰×.æ˜ÈÂøÇPÆ´JXºh ‘Ê¥!V8 lçgMÖÃdL�V.Wd1I–ĢІ˜V¯×‘çŠ8v“ç²ê3°±!%At’ƒ2'`Ìmns›ÛÜæöüìSŸú}æ3Ÿ¡/~ñ‹tÑ þâ­x-3þ½¹±AüðGèsßþGéÿÿ«ÿ3ýÚoýÖX™›ÔÏË>ŒúY©[”›ûöÁØÃwþ½ùÎøs‚ã\ ÇæÂ, 6aAr¼@ŒÐÀ›ªKàe'"ˆÁ ¶k6›"k¯)plÀ`±¶¶Fé/ý%‘rQ‡¦çÅ~´ئ èÄKà¨V‚‰�Öí-)â$;>™˜sƒ 8ØŸe¯¾ú‰SÏmÓƒà:ІÙUÝvk +°oÓ^Ø2ÛãjýÂô¼z?(Å6ú+‚Ùg!°XмH®°ê ú½ÝoÚ})Ö]‘x`·Ë²ãì~¡Cä+ÅÆ¤„õ8³LS{`’Ãþ�´1©¶“u«:´ÄŽ1‰J ¸E%ò×.+Š£¼MÈj›Èï<%ï‰ÏqI¨”= òN²“Rÿq" ‚½ÏØ [OúÌÓvèKŸ3ûüO«3í7`º­­ûi Ø·ÏŸ>×V¢Hª°„KÊÑ6X<¶¶=¯-O"�di‚X6N#ãÀ ío è‹V«)d‹……– p_Ÿ$¬u…¾÷wÞa ð}úÓŸ¦ë×oH`fÕo´ŒBNà@ãAÔ¡ <”•½ë„UøMG^õhÀA" ähŸÇÁV³%àB*á±>µø<*™CûgKŽPC=è~hoÚ¶¬ÒE‘…�•Ua±˜öÿ0;6Œï{–m¿9·¹Ë¯ÆJµ>ݹs›ú1žWh{D]¨ÚÄCÚí¾Iw¶nÓ[Û À"^§ÍõKÔ¨,ÐíšäÚvèˆFüâ¾yi% ?òퟢ×ÞQV¾Ì÷]1H½ºt™AþË"!¼—%XêÔ•� £ßDO=pÏýl«åÕÂ*Õã -7ø<å&õ¸oº´Ù¤Ï|üeÉ#¾3¨]£(`ŸŽAú·ÛHÔ*X5 ò�œ|¯:àg–úÀeIr çÒøÞ;”ºüûÕWø¼ „…×A6bà;‘h£îŸ¦O•Úe¿J ¤ÞA‰�«Ã’ƒ:  %‚öÊF’Ê„T²Y�öˆJØ–ëe¡ÒÆÒ>¼Co}óK´óðm* Žhð™W)¬.rŸ‚ô, 3èÿú[ߢ÷Kÿ½ùæ;ôé·Þ¦¿ðƒÿ]ÞX"CßDA£Æcn·œrP·"« °I+7îÊØ!râä ¾ØÆâë`Mµ<âcº :öLÒñŠÝA?T!èϺ ²D|ŽFµLËu¡Ñp= ¹}‘¨f49`‚LÊ‘ƒ‡¢L³°?_Y{\ÏÁõQJ]ägðaÐëˊâ?/5#¾HJÍ*ÑËW›Ò™hÆ´Ôà±|­F‡=§•ÈxéRR”Jƒ®ÿΤ턢z¨Œ¼ÝeHlGÔ`ee¹Ný$¤Þ  u(L%|œÚR÷€–&âEPHB!m4„¢ŒŸLÔOªP4á î ù8 Oòq–eIÓBÁ‹çFµÀ/ Öfî:@„ÊJ Å<Æô+QÐæ×@ž”)0`cð”o˜ŽÑ:þYrºSتMU¨Óû£V»sàδõþˆþ 0M§>®8Jâ“Ãr�í<ÌÎÆç„Š,Ë~f>-Kš y>gµZ> ³vRJËlg!œåÁS~ÍYÏxø'UŠ8þì>¾I,zZæüÌ…â<æ“ù}úEë\îÖƒ#:”iu¹IN[~©ó£7ש•¯¨J«k+ôðá.ÅÝ>®òE¤F„¢ÀM»¶ '½»ômHúò³^áqhƒwes…HãÍ;\æ®_»NÃ~ÁbŒO<V/6„œzë{t°ß ÅåeBVŸëëkK@Ú`ÿŽÇƒ˜Aèƒ!û‹|M+Kuºzù*]½r™<|DoßyÄçîÒë/ÒáÁ¶(]U”¾þƒö]!èîí2o¡œGoߥ›/|6Ö´ýhŸö2‰HîfYl“¸”C¨?Ì}.pvDr›ÕÑÄÚÀéfçü0;§MŒrÄ9¹!uËáa—ö÷$MÅÒâ2-.-ÓåK¯ÐN´K««Wk¹¢^­ÖòÄ®"¹Aß­lñ7}Ï‚ãétÇ϶#åÊ\Ÿ_CvN4s‡ã­Cöǰý+ØämëÇ>1¶å ”-P¢‡'EA>W§­7!ºT+\UI£‹,œßŒUy"†jº¸2M»_¡ÉCñËÔàX‡¤Ñëìô8¶Ü•ù=|,t„R××8kN£˜ÛÜæ6·¹Íí½b?ð?p! Ö$îR©Òý#?B7nÜ ?ý'ÿ¤QåW…þÙ¯ÿ²\?0sX%̘™˜D… ^Iö3‘÷õãm.e ]»0ȪØ`RØÕÂø^™Ùpìwww%Õ€EìBÒÊÊŠüïä+0 pÆŸä÷‹¿ø‹)-b‘_ƒ…ÂâóÙÎp°ÈÓ•úøÝ®°¶@pq2£ÛƒŠÅß설ø·µ“&.ÿøÇy"¶š? ÓL¯SÕPç�-qJ6Q�SAéâ5h0B뺨ô 6™F„ròêQ'LøNUB¬ÞaH/NZ§©*è}Еs0ÜGŒêy‹äˆi ýD2˜®îQü}‚@4±ÂÝ®‚×òéõO3wÏ%9¾/˜ôáùÐc(p ÃoZ%Ox€œä˜¬Qæ~¶ä;Èq— ´Áïl’L uÏŸ€¶*4z>½wåRÙ‰¢ :m²+,Ù@É#Zm›ú»4[%˜’­¤×{2MÉd–2I‘ cÉ!öY°à¼˪cX‰JÛVõ^i;Ð>p|Ü옜6” Ûïw'î§*: ïêæVW–øÙ_Â…MÙó¸¦eaí÷~ï÷ä»:%O8wÜï¢ýiýô8¸W>`oaÔ ZÒUWƒ´Cå:ˆiYò6ªUz}Ȭ÷)ñó#(’åi¡ì}ѾB漢¡¤-mKø¬iŸÔô·"ÑEÉAú7ÆíÓñÒsj=èxa ºb×Ö—UšÛÜÎkXõ•ð»XÁÎ}Léuzýþ[tŸµM*¾õèMjs`¶ÌAÿ*ÃàAÀ ñJDŸze™î=X¢ßÿò€âAá`z7(c‡zs-¡ËK=zñ;רºzÞ¾µF¯cŸ!½UªU¨ßã¶ÜBâv¼»B>tH5Džä ¨[£Å…eZ ezaí }ø&ƒ =nÓ•«¤i‘î?êp¸ÌaÖiye@ Pgxë÷è>= !éHRäê–1‘ŸÈâgxÖRZ\l2ØçùÆíÇø¹ì~“jýmj,W©Ôrîð {@q‡ƒÒýû” ¹OlS¥þ!j,^纫Ò}ì=¼GÛ÷ß õ—>JµÅ5!t>¸K^ûÏtðð=ª Hƒü¹”V) y¼åk[` cãò Úâíï¾õ-ºõú—ùúŽhw«E÷îߦrzYÆDÈyïpÝÞ¢EÌçýòþ!ýñoÿÚ`ŸLRHðu¾óoPû¸Õ^ £û\®7iÐ;ä:I<¹Â§IUÅÃ+WÅUÊ.ªgo¿Í <÷Y ²WáOð«V¸ Ügeîxܽy)jÐfî—yœ>pÎc[)”~¹Ê…¼_­Äü ƒþP@)‡’FÃH—‰ZŒÓ<ES¿Òç½Ô!Qˆhcì@Лû1‚ïÒ^'§G2†reÈàC”eh…¯e±QÐl¿ŸÒ­û‡t»#Ül×äú¯q=yL:bðk˜p0¿\¢f½ÌÏÑ‚Ëß<ݼMƒŸ‰ÃR&éF ȘHŠ/¨[´Ð,ù”-)Õ¹h—–BɈ*ÕÀÝnö=>ÇhÈuÍß¡øÍzBµ�¤@7ά Þ¡6Â×þpo(þÁR‹Ç²lD£®é[Êr¬:?çí^…–[ :b0�²ÙJ¬xqŒêª„1Õ.­ÿãî§Sg‚ãó7WñË|Ði©–>“ky/˜ \}(#FûÀI‰ž’¿XòÎ;yôsC¼=æÔ< ÷’Im<‡öñ¤D‹“HCÀ˜˜Çža×ì)Õ‘/MÌ•5?Ç÷IM瞉O¢ã ÑñzvçÌèóÿ›Ðà“<K¡8 ;÷·©ÓUå>Ä2I»1—iÈ€w–"ýVèÒr•ÊSËá†n›zuľN™nß¹ÍcÎ*÷Õ˜›ôø»}Ç·ж¶öطاVs™Ë~DÝžSù[ßX¥Oj…vvvx|ÉžÇ(ö‡£LH’�ìË<4WštÔ=¤»wrPu™V–‡|%ICòG>³ÎþÂíl· NÓ.ÏÛ²ð)(——Ü_§¯}ý5úê×Þ¦kW_¦»÷v¸Œ{BˆÔéX‘‹3!5òŽ!–¤zx2òÕ{¤– vÍ¥S;Æw-˜ ýaÞŠz†"ÂÑa>Ü¢ngÀ÷fƒÖÖ.ñ¼ý2]Þ,ó=ê:%†jY˜‹^»v=Ÿ¿Úxœµbl©hÅØ†ÈCãñ&1Š[бŸŸEÙÞÞBÍ}îû1×nqÌe}u>òÑì”òë=ËBƒQ<©ø¨1\›zT¯ó}¨ç)J³pâºtü,E:^ޝ{²®Nî[²,ÌýÔyý¾Z­!÷ûmO¶hóë('[ÀšõìÏmns›ÛÜæ6·wÇ^zé%úþïÿ~ú…_øºÈ†k|ùå—å3|“fèÿ^^#Æ_ãØä/ýÆoÐÿô›¿Fø¯ ÑZf=I&Š¿3-ŒÇÎAr Òæ‹÷ž)ªÀ2þ†¯ ·Á KUÔ˜ àw¤À�‰@ƒyÂÊñ¦„ b‚˜ÇÒÍX•=À �&Ö”èaÕ”Q­„XQÒÞÚã ¦ôûâ±ñ”:>ùÉWÇàñ ÇE91Q€iz½ .ê½±à¸Ruòáò4"‚'/hP#ð}™'ªØï PAppÕqºšÜs-X]4+í?Vcß=æ,rF‘0QTæ˜F™ußíK¶B'©ˆ¼‡¼yàWðd²tÖÔ-òsd)r.U*¥0VÚ-¤"!shÉ)8g¯7™T¬TÙHÜçQJù¥cUjT΃O¼Êd>rJ-hãÅ4#E²‹*ºL²ñª¯rÌA¡‘¬(ªÔªù=(>3JôÑ{®$ [¶]ZàmÚ´”ø`Õ´ŒZÞâ½Ôö¡ý‡Ç¨ŠíB~ÝNÛy^þžX°^¯Á¶)€3î˜éæVeŒSÊØ”&ÚÖø×a[ú-ܤ¿˜HŸÝÓW–ZC½‚dñ'þÄ÷ÐâÒµ»G|®Ú?اAÀís:é 5Û-Z¬/R©VÊIÒWvÜ})s@Š6£Š Zô„>ßc|F_]$À ²iWœ|g/¯_½O8¶séoÆý¶·D=®%Èév–¨¤íDû)íÃô8:VØvYÌ%?·¹Ù$æ‰àj‰Ö.3Pz§Mm‚&u¹}Ýã ^Ñr£I­€Ût™ƒ}ƒv»ô{w¾ÁÏÙúÀ ×èZ}@{‡ z}ïC´uÐ¥ýÃ7éöë]ºñòï³GMî_–¸º4 ”ñ´Ã òâ]][¤N{Ÿ:G<N iÄÁ÷,î ˆP–è…… Zú0{[Ë•ø_ iÿ­ˆö{KÔ\‡_‘RÌY÷p—®]éÒ««¼o“²GMŠøù¯rŸÄ×2$¬!q—I ’Õ—ÖëôðÎ-zíÑmW1s+@‰:»ß¤Þ£w„Q÷QúÝ´w(îP˜" HÆAëCm}èÚ'¨¾ÈAßJƒ¾ð;ÿ<|‹ÊÝ·h‡×Þy@;whëá=î;°r­J Ôð§  D•i¨Â@Ktx‡î¼ö€>z 0=×?üÝoÐÿßÿÿhe骆<xpÚm>÷Á×.÷E‹týÊ%¾„.}õõ? 7ªEú_~ç?RÇý~ô#ôÚ׿@_ùO»Û‡r.\¤ôÍ™ vƒ &I?x,ùüÒã¦âÌ …ô¡HPä4rýYJ’’¡äÒLù$AàÖÐÆÀôCïSü‘ðxGÔ“U¾PKðïÎ/U}å@ò—ÑgfnE¼¤²öù¡�ÑŒÆcžŽ_Ú7ºîЃÈyˆfœöDÇV)#±R¯ÅßöºtÀuÚæq¤?RÁ¦ƒ_=+ N’åºÖþËëÝçýâxHG’¬ú—rõ!»ô#¾ÞŒªƒ :ònõr($›ˆ†ü™'¨\Ã,ydµ ÂQ_ðCn#ñ ÆÏ)ÑJ³$i>pg@>© P¡z3â:ƒJE Až–H*‘,ä{Áeúê©u®$@½³›Òñß.AŸË4ê‹Ì=ÈuBj0~¶øL‹²R˜Ë ²(p$Ô¶i¡Ú¥:ß”}}±ê‘½'‡fc�4£Ir:ü ¼0>#•K­V÷êk“ ‡õ³'ÏÊK|aJ„„ðµ¾qkÈõÊõ½Ñj-ñ@Ê4�å¤%Ô“àË{Æä™³„2Cø…/èf4AxÎΖNbÚÜDä@SõS:«ò¢Úý¤F½|ŒàžQöœµm öœOý8dˆçÜq=Ãú±�î™¶ŸQžYûOµN¿ô!H%`Uî\ ‹üìc™G´¹¹N[[mˆ¾vïãGèy«1i4ìËØÞïcNÞö)k¹SN‰é½²LŸQü›’Ëp )€d†-¿/´Zô™O­Ñ;·îÒûïpÆ>M[Û÷yþÖ ðÝ¿·E’E>èÁƒIgµ¸°H+•+ûôæ[÷y¬Ó˯|˜ö÷îóÑ1?èò¥Mö§Rº}ç!Ý»s@++ëì/µÅ?Ù¼²Bë ÚÛ?d7§J£,ÕŒO©Ž:»\¶ }êÛ>FÿhB¯ëuzã­;\/7xî·Èý:{PYäú$qÌHR^ì—e§“ùÞ{ó¢³è7]lÂýÒ“2¹úÀ¶Î€^ûæ[üóüü ×ï û«ùÜíH ,-µŽÅþìßÖœÖOØ8IÓ¡ÉñÖôùÀ»Î«±¨ópÌ£_Å ¿cQö_^^¦_|Qþn6´¹q‰xJ’Ç£l æ¤ç¶Ó>¢GìƒkÜÏ,b ¨Ê0QX:¶¿ -M.�š¬ƒ³É¨LŒÌï¼Ö½É×Û\5¼Þ°/‹Jºìcö±8#$þVª7d>” ü†ëG$B C7žcŽƒ"\8¢ãiĹý—aú|Îmns›Û{ÙÒôý3fýÐý}å+_¡7Þxƒ.¢½òÊ+r³¬Ì±¬¿ô²¼þ¯ÿ§¿*¸:ððÿñ ÿ~ûù½}÷ÇBäƣɅàùËùû©ÎõžHÿ^³ C°€3 ÞµpÎ!»†w�WPžÀ N?&—.]b…®F¶“ÞUÎ ¦A#aò4›â´ÿÕ¿úWéïü¿“nz^¨²FÑñ¶©E`(‚‰JJP`ç.4fÙI üyLÿÏ}î³ù1O›Âêv·d‡ü8Ap ÖWñ\|vu›ÊäfëÔ‚Jè°“?KšPðT?[�ZpVͪ�húÝ~šzE±^,8[¬ëiÛú°Ç’òn†ÁÔúr_Ê‘¤9< …v§çD[SðYÉšBAÉBîš]àSÏiÁæ±yvŒ`Õ!4e…ÞC;‰Ö »½®i÷D`칊 )ÓÒƒ¨ Ê42„m+j6%‰%Ièç"¹ÂÞ;-¿=_1x8 (žÓÖ}®ìKËaËYÜO÷Õº×óiÐÐ^7V—H¿¹¶F›—Ö9²$Ršãã†y�ì¬ý̘¨Ó£ßùO¿Cßý=ßK—6ÖêÓÁhŸ#Dì”äÑno7ïO´-jÉ4¨bïH!0%°éùµOÅwº{”§é?`Ú¦4í‡^ƒÖ™MbIBÚþTYÅöûZ_š*Ķ +•^¼Os›ÛYM[L•Ä/1›ÕéîVê’tD ¶B­!QwÓB9¦Õ¥¶Ž¸(uiÈcE£•ÒJý>t5 o¼Æcë!‚•ø7;êZ^˜> vСf½GÕ…†€»½¥€76éclÑÃÛ[´·´CXÁ@éˆÁì½.µh•>·¸AÔ Øç‰ï0¼@•¥”®m.Ð¥E|ã…q›£!nQ£ÄýhŸY¾./שZª;Â%ÿ·¶¾Bׯ±_ð¶{‡Hmc ,3¸O`W'fÈíµéá[_¢½»_¡áˆ$uI’º•›AæÇ˜®Kýpÿߣ$\fÀ{“ÞøòWø@m ’-Þv@]>N¿Ó7 ðI½Ô“ æ¥#jlÑ[o|‘v¸„dxL¡¬²ËhçÁ÷¯S³U¦¾ÞÃCG¸ísU¯·€èW~ó¿£Ûoߣ×_¦|ð£t÷öWèÖ·èk_þ%ppvûÑíîtøóHH‰ÎÇS\M ¤ºÔæFOÝPgßÉ’w°Â¾Žô«eIé"~ôIã1ª5Qºea-–¼òEÒ/Q;"‘K–~.ŒÄï�)©Äi#"Ô•jBì, ™oTåD4-?î &sVY õ‹‰�0íƒñÞiwEªi5Ü\.BÞ>ü·w¸þ»}¾Ÿ5Aœ ÐpxpH•Z“þ«ÿýwñ™*æ9r+ô%W7ßÃa dËHˆ)®ü<!ÀÍŸQ©+¬›4Š$¢#àB®b‰†B* ©$¥J8¢Z…?‡©Ô5ˆ•rÂûÄü[Â/öuÃL¨0érõ\Þ>”Ó¥qù•<X.ªPs-Œ‘kÛÿ±:×ÃלÆ} b›DaLIÂòPÎtÌ)ÏoÒÁ„òL€-ïÿÛyÎÏpß1Æís¸”vΟ#/‚c�§ª[Èó8¢ Ôn¸%µÏÑÑÈɨs_sm%‘ö«>ÄûY5 PLæ(:ãk—ºˆ|µ¸gÞµÛÐ=ÿ"«~2¹»8vÁ1ÄÇFÃøÜ¾ žû•¥…ã?ø®ivK{6÷èYN=÷3z¾ÎzÜÓïÝ““¬ž‡…XqÞãIФ}MÒSAW鿸¿éö�6'ô`»K»»˜{ë<·Dµ*û;e¨$2ÝïÊœ¨Ó=’ç¡^mR«Å*)Û¹§] öÏq$�ëÞ^‡–«}é¥ëtíúˆîÞyÈs·jÔè€Ç•ý½G܇Žd,‡ˆ#H»Ûû4,R· ļåÅ}æ3§v§G½NWR#¤<ÞuØêhum‰>ðò Þ¾EH¶wèà¨ËÃYÉñ¡>±´ØàqpH÷îÞ—íâd…öî Iã#û }ô£=`_'MüJ rÄGç‡8²ë¯£c×g2î¼ &sÃ(8s H7tþÏáÁ=|’Ë&-..²ƒ:_œPåœÜog(ÆÜŠç°ûÈqL̉ü;Ò«Y"Ú-Æf)ðÒ±D M©‰X,Æl¨š\½zUÈø±T¼Üø;PÔ"jwÖr«bÎø@£¹èÕ*ªãùYâ¤ÅXܳ°P2 ±&©Tmr|!v)ybîñPÈå(J‰ýT¤t‰ÊüÎÏ”¤sýI >åb #ø×ÙÅx>æöt Mª´æšÛÜæ6·÷šaÅûÉ~ø‡˜~ò'òÂÅæáóàÚÎcðá>ûÙÏÊ‹þ/$"_üÖ×é?}á ôµwÞaÿ>Ï3útÔqª]ˆÃ!ŽKŒŒrEû‹d†`ç\c 2ÂÁ×wÜT8Ý"cÚI³u&�9%:¨s­R|ú›‚–PÇÀ9766è/ÿå¿L?÷s?7!µoW-+�kz+Wg¿ƒ) 0ÇÁJrK(˜�›îêo“¦)f'ßþíßîRƒŒz:Éì$NëH¥ö­¢ÀÄŠÉÀßâïîØîo ~"Nmg•0,©BÕ-ô·i¦“êÖÖ›Ö-p_œÀžT·ÅóÙï,x«ßÙz}(›�á¡Z¡êZ÷ùŠwOv°×¡ÀÀ[ßiŠ}u{˜MÁá1R@^Ö`¬6¡åÖÉ­¦ÏÑ öYµÇQÕ¶‹¯MïPl3z>lÐm´-·SPÛ¶»-[ñ™²÷¦x½'mkË<m`Ѷ`‰Óêܶ{«raIÅgL¿ÓgÔ>ÚŽt;Í…Þë¶…”¶¹y‰ûÈê±vyVÓ²à|îƒÿð¾HŸøÌ§©2(XR9cà6X¤Z³B¥¥J~Ÿ•$¡élŽŽŽ`åsPVlpQÚ6ô7%OØúÖÀMñ¤„)­OKS™S­íß4H¦÷K÷Ós)¡GÕot_˜^S±Mèö¶]Ïmnç±Àƒi•JH«ëMZÜéÒA/ ¡¨3p;«ti±BûÃ!«@ȨoµÄASák)­,Ä´Rô] rôˆ¤‡T/¥ Ñí»»|œ6­_zý¡‘‰.uîÒBã­¯-Ò(k1f7b°¹Gë-¢…jORipt2îSjâ‹]jïP–©ßjÒÎv‡Ê p×èíoís ¿C}î/±O¶³=¢ÝîU×úDý´¹œÑ5êvŽDz»ÎÝ@ '._ÈÀt@U:°#ÏI¤Ø ¯\a­D°?5 ¨OÄn…ž<§üª!Ÿ ”ãî÷ûÔ'.Cväd­‡G\‡\¾z@¨J>�•¤%¡(pH:�™²�á#::€”ó–#Pç!� 0@É)Nä^ÕjP“JÐïöViH{TÚôöÛoÐbîÐ׿ú;Ôt¥=ÜOøˆe5,�¼Ëørfê�Õ̧!ÚHC ó?·¾þë®ý ƒZ@ ï5®×ªO/5ð£$ÒÊ™(b a@.(ÈÁQ­y‚ë> ¬O—yÕ ŸÊË+aIU¸®Jr¼räˆ P†9¹’æUÅ*O^ô îeÂA@”‡‚1YÑõé  ³ˆ°¨e0`kñ9*öóG<C¤&å =9rª¨o•òuˆ&äýy9A$õ‹z×+sÀ‘dg!hq$à>IYüØdìã'™” Ö0+ ´6juÙW¾çc£n£¤$« $51€TšæûQŒÕ¤=ÚÇNÁBÒÃÅÒQg‚ŒKI„ú¹r„‚(껹û÷lÆ¢"0d}0™›U«’ÊEÁÌÕ4åÛ¤/…ˆ<é\bL°ZZ�<âg©7¤I'Ä>‡#o(àó~�“›WìH¹nBÌ‹5§»ÿ¨Ÿ˜’#Ê>ž?§†4TxF,ô,ÇŸŸÁ¥Å&¹”/Ëœüüóº §Ò ²gC€P{Ö~^^~ ¦~?ñÝ Ey¯àxç É=i�OúB,‚¿ÅÞËP—äÍÞypD¯ÝÚÕR¨î’ïßH�`ôe‹ìoõü¢šn{û#~~—ŠÏ„ŸÔKæˆuèѰJl›ý2#jôÒ‹/ÐèÚˆãGñÊ à‘º };—/]£Ë› >·hÿ Gö Û½•vØW\jrŸ›ÈœB‘’ÏÕí#½É>Õyl£QèÊåBJ9€ÄÇÔØß‚×ghq©NüÀ ´»·O[;Û|¼ Ÿÿ…÷yÛÚµš<Jû¦k[’ÜÌ™»>Ô ü.«8ðþ7 %“Úp¥H¥œQJF`Þ Ÿ¨ÕZ•ñ/ Çi²Njãž˄‡òãcq:öë6¤·éðùuN®¿áo”ͦހ*>#øŽ¹9Ú8Þ%-|=Ñø¨|¥Ñ±[ŽXTBg5”µÙlÑÚú†K Âeë´ÄwÀóU©Öüœº<UÒŽE?äY¼¶äZ¤‘¿4žñ“ÏõÔ� –Ÿ),4éÅCjó<+ ÚÔ-Wœ’¡» I)WâyN•}º5,€Ê.ÓÜæ†¶¼¸¸@s›ÛÜæö^6øð%Þ/öÒK/ÑþèÒ?ü‡ÿ.’ášpmObÀŠþ4^ì»äoøŠoß½M_yítëö-zÈ1¼íý=Úc|»¥3ösJ¡Ë„p‹.†]˜™ À6˜L6؉q7 ä¼ÃÁ___—w8÷:yÐí- òDŤ�/ËÊàaÿÏþó²ÊûßþÛ›—g¡¢H°�½•س«ù§M˜Î€)N¤ÎÒm>ñ‰OÈÕegÏOl«�µ€çÙô×kœR+àjSÀÆûÐî€Êq £H*Ñíp¯í9íyŠå>©NŠD‡ià"�oŸEÂ(~.*©Ø}Ì'Ø^Jкšüdtì<ÚÆi¨J.ßi(9!Ièˆ.%¶S‚…ºu®"{Ó‚ªú½U±ízéŬ’…þ¦çÁDZ öyšE´ÐöUT ÐÏJÞ)Þ÷byaz-·d‡byíõ©ŸÏâõÙ¶kQäõ³üÅÕ—E5{>üõwKþÿ–I~lQ°ÿ¥KÜ—6ŽÝ£i×V4½è;ñÚÛãv°M¥V™–Æ-ª„U0íýµ)“P&ôñJþÐôxéqõÚp.%@(9Âöµzßõ¸8†ªi{·Š'J’°Ä1›¦HI.øÑÀ˜^»Ö%ïh]kYõ;›6dns;—¹ ªÖ©ß¾ÄÁºü>â >·í¤EµAV78�9Ø¢ö;¹Gü|tC:Úç¶Y/Q´À c•¯û5ºõ6›‡äk$…ÆoÑ7¾u‹Ût@£~WzÕJ‹®Ýø~TJjtðõH°¤(yûµ¬‘ç1¹$AûQy‹î”r°6¡­‡‡Ô\\£í…u*o^c_‹Aþû¯Óæk刖ê*¥˜ *Œ)dôÆWŸÖ¯®R³Õ¢‡·nsy÷©±°H(Ì” ‚îmÑáÑ1pÖ§?;H+²ÒZ’¾¦\ágˆD”í2@2ý Žû‡T«` R³Õ§H<hŒŸe’†ìë â u‡U"ÍÆP»±º©( t�åˆá}H¾æŸ§Z/ËJÒlK:ˆ$øéÂi½~,2н^*ä�ßÃ~"ä°ý¡ç(‰‘ÊÄ3S!iŒ†¡|ì\ú¹LÆY@ú’±ªÌ¥Þò°Û¡›â WïsYP™¬x¦€tÓ@÷sb€úi +QýoÎq㺠ÒÊäVÿN¤hôfWF’rÈCÎF8.£'†@Í,ókyÉD‚9y›OA ÂI„ià‰‡üR[W9ˆ4< «g±¶ã1(ˆ? áúð‘ÁݸáÀi)MFy’DTC\}¥r\F¾Ç)üªÀ5^$ )EÔdbp3R©q ™¥®Þ"YåÈ èP”ã’»$"ñÙJ¨©$̉·P¥´è¸' L ][‰9�‚Å(‰óëq+²±2I{7¿æŠe6º«’ç�Ï2Í™®òã(›¦¸/}«˜$%»–RÞbC%+»gtVðI„ˆ‚  )ñøý`Îw“O€„ÑÔU`V÷¡Â<æÔsR´ˆ‚EêVù+‘ã¬mJ+k«‹'Ð+Y<ã¶÷lÿž2 鞇\‘yY×÷‚¹™I–~v‹sÇó4QýI¼šfV„¨Í2¿.ÑÞѾùÖ®¨ MT²ÌÃãôWð% 8Ñl4l´xˆîP—ûëz}z:YIàèbrW2—¾ÄʲGÕûaìß­/ÓÂ"ǵº|޲ÄMÜ·¿}ë---ÒÆÆ:?{1µ;ì/õØWÈØ°²²B1c%ë*÷‡íô£Û£F­!~Þ•Ë—%Ý×>ûnÜLØo2PG€½Õ•U~-s_Ý¥#êô!x †¥'Éü¼—13óêZ’áš»ï®È5€ÌÅ�œÆ>¨mu:ŽÔ€<dgy$ís®óÒTçÃ^1cŸ¦-ÆøŠØª*Dâá=öi_kÕšÄ.onr[Xà6Rói•ùUwäG§FVÊc+J¨ É¡5*¢ì\s^W? '7å%1’@†ÔçÏp#+•ºK½"”-,©Ï?“ñ>zv&¾¤øÔ.}ßøzSñ¡¨W­¶ø•Q3Ås;à¹Vç=ê´i‘ÛÂz)r¾'ïZöh“çTÇ!?Ds›ÛÜæ6·¹ÍíÙØw~çwŠÒ÷¿úWÿŠ.‚ýàþ \ÓÓ6ø‚zéy©É^öÍöhgo—v÷öh{wŸþãÏÿ]»0 Á0 @CÇAŒ±J¸™:yP’EŒU�Á©J¬Ð”˜,€¬wLB¾÷{¿WVTýÚ¯ýÚÔòY°WMWL[ÐZÁD õ¼ºýYWYÀô<“”øÃô‘|äØD,8å|Ó€öœ QŠrÅ‚i†S©’OM¥³Œ&êΪËb?ÛëWƒiàùiÄ%XpT9 $/–Ånw’ ÅkÐß²)ª¶>¦‘ŠÇµí¾ú M8ÏÆÀ‹ O;éS äÁ™ÀžC¯Û¦V±+Im½ëʪ)Ëm 2 ø[%ŠiAÜï¹=¿•….+ìöv{_‹ä{_ŠuSl?Çîo–M!´·âýŸFÈ€iÝ+i¢¸JŪŸh¿ˆ>T'Ûðï»»{yðåÚµk\œí´rMû Cߪ ŽÕæ{¸ÿh‡n6_¦V°ÀàWÕoYÄ™$,QA%ËÙ{¥r¥ª¶¢_,AC¿·ªCV®Õ…´?Öc*ùÂÞSΫçÐãê1¬B‘í3´žíozOqNŒ+ªÒ1·¹ÇtH†%:|°HG[;o0H[áþ»ÉÎlF¹v‰7¨ÐQoŸú‡‡ ܹ ßL¨SkÓ£hH]ùËT£V%¡ýv ÒÏd¹}R û8æØÞÖÖ6¶#j…e hBå¡^/Ó0CÀs@ÍË›4â`áöî- ¹ßæ }ÆàæÞºŸ>¢KÔå!í<øíï<är¸'H¨Ë×°¾°Dq§Com¿Mw2�Ú¬QÆû—cº×üZX—�pwg[R€P9¥åÊä yú¿bŸ†’:!îá9çkF0j)r}„ÈHå•x`ZÀPf ~”©ŠÕxH{•„¥€kÉwñÈîQ¹Jýú˜TÈÃQ,ã'²#ô‚F.’þµ_ær¤B®@þój9ô 9T*Ô>Âvnìk4@(+‰"IÄ€D­Ž•þ¤öèõb<ñ;�‹s;pH|ªHWÀNZ$\™¢4ðà‰¤@zÏu7ô¹Ÿ¹ "ŸžxŸ ¾ò`C1%Ír2†«Í,ùO¸È<™V0<\kšŒÛqÁä®Àç‘4'’ŸDËåÇ@ø—J͙޻>‹}à®SÉa6¬pÄVWÀÄ&wß1‚¨Ðb5±ö3YÅŒUÀ"—î+«öA¸ˆbÞ&äqd þ\¥üÇ6QÙBêÜî†Áˆ¢a&çÁŠÕ*ƒwU•�Åã&£Tˆ<Žƒû1âçc 2ôÒ~³D$ë“Q&m|0H¤¨šE&>ŸKm£DòÞ`œ.ëYÚéóW÷ ÚØ<ï–\©$íœø";S~ï±Çù<�ˆ�TêÜKUÁß8«œû»m:gÓöWôEÿaê98åX§Ì]ÒŒ&8.@8Syù¿ÕµEjÌÚÈ]Oa®ùXV8ǹˆ9±ì|ç>+9ä<Ä”'1G.š¬ŠüŠN<ýcTÖ30!Ñ ±ÀŸ)8™_ñØmÅÝŸ31/—/z6ÁB¶çŸÚNí êZÅÛZ¼×J~BQ]ŒªBû LÄž ÙÏHeÕzCÚ/9a* ”¹ØÇ€¢–ÓyÀì§#é@rÅØððá6íîThey–—hq±ÅÛ÷x°ª²?·@øv€÷ŒZÍ:]»ÜÚÁQŸÚ6µ»mþÌ {í¦²XÆíªO²ÍóÅ=è×V–hy‰_Ëë´°Çã ×a õ'îÃã¶k‡ÚGIêwYEtÑ,¿ßŽU"ñ1sƒàÄ>"ó$”DÒ¼:õ]G~à¹n%œ¹'|IS—è<Ç@çw]”†ñT縺xã­¤"á6 EŠz«Iu޹VEI¡&ߣ¯ŸXèR.M™È;¹´TúH¦6þô#‰#1©ZØ´xBàxiý_ðbžE!€Ô›ò‚ßb3”¼F<Ÿ º²SµRwD \GµæÇKÊ_Yþ˜=£~,pªfY ã²÷½… 8Ï<H%-Oj¨•ôéf_¸âA6ùY¬±O¾UáùÏ3|¯ïñ¾÷—VèÛÞ+,¸¹Ímns›ÛÜ.¨ýù?ÿçÅŸúwÿîßÑûÙþìŸý³r-ÏËàÃÕØw¹²~‰6Wן?þ]² ¥`µ ¨O`ÕÒ€hª *À…‰�¶Q �L'à æ)è¯/8ì²á·ž—ÈÃñ5ôWþÊ_‘¼‚¿ø‹¿˜Ö,°gNXìÙãú½~v娳¶}èCôꫯÊgÎJ €Y×®l·)t»IË|°â8¡@V¹BW‚ç{@ZM]aÓ÷"h¯�¶czÙœÙUþô¶ |‘hp’ÙÀÊôàç¤M8‚Ù�¶NŒóÔ4^iæ®;;&hÉ=ÚnÝg7»L}°VžƒAaZú 7 ògN•ì=ÕgÌ‚àÅk±÷fZyaJ°Ð†–È4íU<?¬˜†Ä^Ï´{`Ûc‘d¡åž8³¦$†¢òƒ¯H¸°í£ø®ubëYËdŸÛ¯àšUòÛžO‰izßòra»Ä’{{ûRßH!äúC:v Ó®]AtÏò~yÀÀÞV—V>¼âS²šá„L°ÂC¯ ÇÀ~è+ñ-³*\ŒSEùu(9NÛ‹’ïP|ƻֶ -ŸÖ^šbÄ’ïŠý‘^³‚<Zß éß¶¯ÓãZâÊ®b?Œes›Ûy-ðͲßMéoéÑnËå%J�>8ÑÖÃ6˜ã üá~Wtôû«­*ƒ»èS3É|˜xDº‡ŠŒ&‡ ÉýL%C¨­”W(Ê)ægºCCª5#Â÷¨ÍÁÀF«N·i¬Œïñ¹lQ¿ÒFåU8:è²?Öß¡­[_§…Å2Z±ZëP ½4äÑ+p³*}+ý¦ý› Mª.®Ða÷Ñ`-j- sß‘KYÉÐSÀ».Z÷ºG’n«Ø|!Í nâÀwI’"…‚’ øC‚úáqþ9DpÇâßGBJËdû”ƒ£‰€Ø$y“e H‚åP�(Y*G®¾ùüG„†}.4÷}*û«õ2´! °# xt,Ä wÝe!´‚xRX*ä ¤?Aä6e¢d�€÷Z£D¬QÎ@˜,H3+8BBà~„ÚC(ÁâĸîïbW”:פ“2“ª‰Z“;–ŒWê$vJ¡#n`E{(Ú®Tª\!ýc0'¡‚2 ‘&ˆD}KV$ެ!)Qð¤”Ñßr±bIçáR¤I3Mîq*)>Ó ŽÁÂåH3!/@)¤ŠDýÄÀåɆ²ŠKVñIJ$§‰Ê™‘¢2—q4…ÈXK ‹ê #j4¹<&†%Yý 0«Q¯È«T‚"c2¦Hc“óÅ¢^µ“aN°@SOÂr»èó3ƒÕȃ¡KGƒÔ6¨÷·íˆšNÇgÞJ*Ýþó™‡Ì¶ ™ôÒßPñpD‹~N®!Â*áå�¤¶gøH¾-‰_ËqRNÜ=É*ùx­«xE²Ÿ­9ãßûD ÿœrk›�ÐÅïTô2óÌì9Å“çz³Àÿœ¨ëýõ{Ô¯9Í�@#í€#9…U†óXvêOߊäYö´Éù3 d¢‰“Ñ1žÍû#-H–ë9<2åö+YÏÍkcQ°4‡i²A˜¸á0Tb„§zeãÏùñ'JäUƒµ‡-D|œÃGT û´´Ø0é‹ìqíXP¶" ó~VcPyùr“:´»Û¥whw¯,JMÏøYÜÞêÈX€£zÿá¿ÄcN6V]ÊÄÃ.Ô,ØOÛÏhóÒãmQ¼h4+´¶±,©äŽŽzôpk¶viuy™Ë^¥zd÷ ííöØ_ÊrÛ‘“Èx^¢iêˆïW› øùžÄÎøÌËø8 f˜‹c\JSGf†i,@û`Ì••¹6Ï+Ř–)· LçØªÖ»´´$ã¨.ˆÀ/¤öˆÊ%QÞ(G³I†SÊocY^^?ÿlÅâÏÅTª'÷‡¾ÿ:˜ s½Þ¢†ÄDÉ"NbQ«Ùçè—ùâ:·pÃ=WŽdñlˆ>Žþ{¿Û1«bœ)¹®´÷ieÔÕ7Ìaq‡®ðýþæÒ:%µzØX£n)¤gû)Ò§Ž5ˆæ‹¹Ímns›ÛÜž¹ýÅ¿øåýýJ²�¹B¯áÝ0UÙ½Hva¯‡c Г¨VÀa+[' ¦é÷0uÞÁÎÖ¿ñ;& ^¨ãw•»ÃDûc’¢+£u"óçþÜŸ“cü›óoäx6À¤D 6(ÔÇÊ·/ýŠ)G¦ôÖ¦º'ÙÇ?þqQ¯°e•�ô9¬**(hI%V…¢8!+*uO? Ä TN[¯�«ͺ²Ü®$/–ÿ¤kS@\'¢znUH°u\é§(ŠÀyñÚ-ÁþŽ ~‘xbSØÕõo‹r…ãõZ,Ñ@�ø8ž�“'®ÅƒÔZŸ¶Ì�0âd؇iÐz¸‚‰¶m'Û¤ ˜ 3è÷x~,XmÉ –ìcÏgï§­s=¿¶ K ±Çµ×;í>Û²[+^Ï4Å»ŸMaaI=¶MèwÚÙã)ðoïµUÌÑ6cSéù•cëHÔææ&]¾¼Ikë«€±uO”Í$VèªRUÆÐöæÊ˜p�¨-«“‘+s+Qy¿L®Ý=Çèoõ9ÓrÉ*îgl* U3²÷QÉZŸz}<a?UÂÀññYÉ J6Ò¾F믨œƒíµlYæÒŒ ØOSipËÑt[Íi‹wŒe íûÿ¹ÍíLæözôŸþÓÛÔíu(ŽÈþ�Û#ÚÚ>”>»\ ¨ÎÁºf 9”Ëüw™z %%’ßJ ”8À‹œÁ%À+Mª•—À­8[.­òÃÅ}|Ú¡AÚ–mû Fªø3àg®Ý¡aŠíåg Öæ€|™’Þ"Õâ:Ú½Ëc÷÷Gñ@žÿ!ËQV7i%ºL_|ë‹Bˆ|€ÒÆÑþ�Š—·sÈï ú=VE|"ˆÿ“ë…{ Žg×å~v MŠ?º” ç$ ø�>7tñyàû \®òDB¡”èœR€¤pð²Ç f’"DG·G™¬àDažcdh6«ÔjTø~Ô¨QcP‚_QÜ!–…îXHe‚³–«šÁ;D¥�ï�xOdlÁå¯ðß\Sk¡B9à£M\ˆÈ%’:#ðºPû)òÇ�É””:• $$”ÿhE¸—¡Ôé`˜r{H…ˆ‚ZDýXxÀ¤¨dp©öZPB |\.¾® cŠHŒ»Õ~¡@@"ÈbYˆàz8r©8xßj¹*@Ê 2Mœ&r¿¡²q�$Gès+F5Uˆ[ÉÏÈ€B4Š8j÷NEâËr;Ñ䎠L¬òM‘‘#ïê.ØbD )ƒÿòØT‰…´ÓqUðÑJ¢ ÒlŒxl Á"bðM0Î&ãï"ŒAŽxñ3’…¤ ñê%royz´Ø¥>·¤ É’‘´ÑJ)£j êR˜×¸4\ýá³'XX߸8g |›PÓŸÑ?T«nŒÇ¸ ¢ÆuJBl øGˆN±ü Ý$âÏB¾ó?_c‚¦¾«¯‰{€J UÅð½dâ….MHFðƒóR°]Õ]B2ƒ`\ŸÅcù¼©#Y‹³îáòR“Îay$‹÷š=Éõœ¶ïI¿?SÒÄ3˜IßðËì³JÙbŸFi¬î8{[ô}!ÜùçËû0÷Ìw¶6÷з'Y™î?8¤ƒ­7hcu®^Ùy˜ŽAvŸ1ÑÂ*¦:¢üŒI•a™V×VheeYÒy<z´C·îÜáqe.mf’J e =™/Ú¼ÍûxeI ÒjÖhuy…ÖV3ýTˆƒðzìÛÀ¹Às—••E[ööiwç!mo¢f"Ç0îúžÉ‘K³ÀK¼³,8¶8ç"X7ðŸ%]ä“ú±~Qç‰>京É<óFÄ&…üÂc Î#•pù¤Î7…D û—P¥Põ'%S@Õ¡R)O¨æ1¢Ð¥p‹ÂðIJªŒÄ߈ó²©bÉu;m.×]»¶<‘†3¯?%ÜN;ß •¨Ç‘´j%GªUâ àÕï¹X,êLcóuJoO¿ Ïe?¡¥~›>²÷}摨ޕ¸,­aŸv«uÚZX¥¬Ê1”pô¨¶Âó8öåK¡Ÿ]°ÏÉÏuI8‰¨ØÍãs›ÛÜæ6·¹=A¤Ô÷[º¤yžÊEËݶ æ²\‚Åõë×eÂ�ƒƒŒ ˜]=Œ@˜’#@œÐ|‚0l‡I‰Äàôc{% àx:qaÂàK ø]ù§þÔŸ’ Ë?ûgÿ,èô<¨cU›ËuØqòð^¾6¥S?0+޼NÌN³"ð;Íðýg?ûYºyóæ .ÿÌ1ëO;“C­$>ê%_ Nn%ÈAžòÃø™_õ$eÓxY`’Oµƒÿ^Š_J>èT@ÙÊõÔÜb¸yY2Ë®›Uu°$½¾ié.Ф�±‹¿©Ùô Åmìqå7“²‰6S$%äíX€LVdr‰ä„aòˆö]á‰t(�®Ëå(÷1TŠd) ¹•Î’ûÑ-ÆBêjç`›ÞA_ErB1˜® ¸­/{v;€î¨.ngÛ‚’*¬r„À¿˜šF·)*–(ÑÆÞ+{¼bPØõE²Jñšl=ÙW1í„U\P‚…žGÿV‰PýMƒz 9àU¸|/AV{áÆuZ_[•¼ª5À”Ê%%‰Œô¨›{Uϯ*86œí#B �×ãþP꫌ÓXdæÑÎѯ[µ ô»JRÀý·ê$áœ8¶ÞCm#¶ÝáwG º‚ÇTRžÞUÊР‹Ö­” ¢eÐúÅuâ8J +’z”x¢ßalÂX‚kÀuÛ•Es›Û¹Íƒ’þßÛÙ’ ¬¤¾'¢,Ïx9 JÚRèü ôá|“óQô‚(7û£Î€BˆÏH‰ €C2ÿlÄ ÖàE`¿Ä€þ@Ƈ„9ÐŽjŽÒªü¼ÅØ+Ø:ÔïŒhÄ�ý ,¢TÆ3*k)#êw{ÔíñØÖ¨;êJ@– îRøãgû[rÍPñ̨—Àºð¾Àåi–¾aXáŽ>(àW‡ô'è*`¬Ø^)9¸J"Åœ%^z]–Õy¥ öC¸~K¼Q¥ß$°=ËJHºgÛ¥ÒÀŠÀˆ¯§\s+‘z©>U'eìÒ60@…Ž€þHÒHT°½[q\*F2þcñΉ2±Smp€F ©C\úŸ‚ZþgPv~”R¯�Òä(…ÏSå:á=øX1®MRj$ŽXÉ¿×ÙŸXàò6ʎЖ¸ S D!ÀJÜAF£÷k¨#€ùž¨rÛí¢À/^ è@©F%>Ñž¨pÀ<J´He9Ñ%â²AÑåÆqëQYÒà^d‰#¢à¾–œG#ãY}ÊjEÜÏ7ÆÝ£!ÕÔpìR&K?ÍçªWyìáz‰¬ïô¨‚…WÖ�¹Áù‘�çà;²RNÄç’¶%Û”„¼ÏX�™”¸LC€X¡È¿A=»ÌÇê–0NõåÙ«2 R)…r|¨S ºm¾W ²gnÌïFBz*ùº=b ¬ÝIê¬|Á¢T†o9À<úb;K ÑáÙ͆§5uE÷Œ=ØÇ © ?ŠE­£×ç¾Rà^ºFÆ~¿†_”®Â²ø¡�\ ÐDI!2þLýEõct,×ÕÀ ç×(’l§]‹ýî<ä…iÇ)ÎÔ1þžéXÔPì®ꦮΜ¥ž´uzºD{n%A n¬s'"é‹…Ë…çyVW—§4©Ù÷[Îw2ùÜê1€1«Tø´ýdötÏ—™vvÒïç1Ÿ©Áƒú“‹rR»¿ˆ&Œ(@Ì3^�€ Ïv–j\ark[Ôb<€¨H0óŠO<ε žѽ‡;<רÐÊÊ ½tã-//›ãÑ´+ÍÏwèð*¬çëüì!}ǶiëÑ.¿vèêÕË§Š¤ÏGëºzí2mn&tçö}ÚÚÞ¡£î"-/10_Ƙ<’q8c‘¯wÐÑþA—j5K¢N³´Ð Á¥>mí¡·åþ},Ò ô}ëë}‡'YAFqKŸØžì99¹Ày¼#pÉÒ4Åf0cÛâ¡ábqÃÆÆíïè+_ù2ûñ³Å‡ o‡$ü<¤k5To4yœjÊX¥sd!S”ÇŠM–LaßµNrÿØß¨iã\™4q)ê@Jœù¶<v>zôHÆÒ‡ÒÎî®(W,qû­B]ªe,r‹ÞŠ‹dމðøg·?rjj¶,¶]ê7¤²sÊj2æG5ÊÊN±¬^k‰ï…¹É`СûN½6‰¯„B:ámÊðãàwJX6±| RI…CQN½‘øô˜„™»'Bú™—}­Vïˆ>~ðˆ*ñ@ÆêZÜ‚Ä×6.Q§¼ÀÏ:{¥üêFü¬ð=r¬o§\'Éðlã+BDà¼ßxÑÀй½ìÝó7žÌбî÷[ùçv±lÖsô^o›ï×çÿiˆ ÀL~æg~æ±æ#ÏÓp~ôG”¾ó;¿“ÞM»¨­äÂ,4åˆ <b çA0¼ÔðæÔmwÙɇY0V/�Ð)ÀŽc*;Ç´ .À4ø dUˆŸþ韦·ß~Û9öìX÷{�À* @M ¼’’Ç'U§QÎ+n µOúÓy=ÙßÒÔäÇ6Ǭó[ ]ÉŽLᤨ•`SxX Ü’,°`¦]åmÍ®0³e)à´ ¾‚¬vÛYƒ–Nȵ+ÕiJÝÚºÔý¬ò‚½ ¤ëù§¥€iåéJÊIVýæ ‘sû6®õ±¼¼"ωÊ?Z _¤Êeåþ$±B@òú‚9Œ”—¡à9¬xÏ´ÞT6ئ‘,1©xßÔ” /UEPU fÛ 9öÃsZ¼wöøZ‡ú®VTë(’!l`¾Ø†fµ-5«"aË®ïZŽ"QÇ'Ф ü 0@¿/ôYÍëó$A»oÞà Û&·“¹ó¥‰û1.—ËA¯DÍŪÊ<zlûlãéx¹¦¶ë{Ü/^½rÍ5¬ÌˆŽ:mékmÝ©â·v¬êDÚÿë÷m]¯Û„‡öjSÅà>銛Z c�ö©¶W)r=¶¦ŽÒû¨eU Ω)¥”СmLü†>YÉZ–÷º³6·÷¢ù>TBä �Ó8Ê/„„Ìy¡'ì%’Z ”ÜÝCnÒH%1\H²U +é‘R `?,»•Š ´ðþd‹{’”„@Vö'žðÄÏ,VbŒá€|©=xdã¤Í82”Z÷4æÀ#âi‡nÝyƒýXr' ÷ûèKBé·”àÇN–\¢¤óP"šÅBtð†'<¤îù|`_ê„ \7H¢R@”Wú ÷3�[”ðšyár76g`Œ$ J‘ â:B€yîÿZe$$.ÈŽ¸xêÇó(ªJnÂ$�Ý|œÁÈWÒ�RÀ#þ»/׌JPh(ƒ8À¿ åCA Ÿ"£Ä‰@)ÈUÅÃYJ>ã³\E·Û—"ƒX₺‘S­@�:ÙD¹! òKwm0X¡S’àcT1ƒ`—9p ÏÈÑŽH°ï÷â·‘’k¡Aâ¨.W0–®]±?hø;ÅŽ$<Œ%²š2RúÒ!ÈH‚TaIÚê©’·g(¯t»=ŸNDGh¿í)|6øDG<V9›ôË‘ œË8Á×À«¹\Øý¾á¡çÀ‘jGf…òˆ¤qég¤Î0^ƒ`‹ä ÿ]–û2â±VuD!~lD‘$ŠçÚ~+†¹îê¢vr?ü€¼‘z0ŨP8‚O ä(Ô úQ·Àñ¡ Q‘ì.‘KcÉ»Òdô,§ÃE¿z¬Ìg$ò—ú<y*ºt(Û¨2À=ö©A†}«�Éýe0Ÿ@(Ë@4SË‘h‚ œo§þ¶,16c1|ŒÙJ¨„iÙŸU°©äš_H}(Ê}5Éôw­OÊëHæ™ÁÙË«{B¶°>¼3òhv_ËêʪWñ™v=ÓΟwæïy;˽’öqrŒ@çX¶¿?¿emçù›Œ¯Á³¹ãö9râ Ò$ÆQœ¦5=­N@^[`Þ+,Úù°[¿]z²æÊ:-¬^¦ý­Û2áµ·D÷î?à¹Óezåæe¯Æ:­Lî»|n™:%¤ év1OqÊ+«-!KôºY~ý7vwdNò~€ë`H·ïÜ¥·Þ|78 ¼Éeì¸þ% IµAvvRûh‰ç51Õ› èóÀ´yyCÈ£‡‡#jw†’zN.4ñô·<—9 ­ £?P¢ã_æãUn‡ŸÃ:P½Ñ¨ó«)ãP«µàü£Ä`•%þ„N]ËÄK|2?ë,² ø^Ùx¡‡’U™ûa\Üßß—E [[[´w°O¯*¥1ØÍÍK2—G<Ĩ›ˆÏ ÅŠ5a-1›÷q8ï'=Q!?2áuQÁËÇ dAÒ°Ç>SW|Ê?'Éþ5+ öÝ—¨\/Ë~‘_d‚9C–“ñ—]Ú5¨ÅtèåÃ-z±³ËuKùA¯­²ÿð»›/Òa}CTþ²RMÈ2žš8KÂå u¶6hN¨˜Û»j6Æ9‹¤0+ú¼mVÜ×þ6kÛ¹ÍíiÙIÏ´gå´¹™ÅªÞM{/<ã聆ð /ÐÏþìÏÒo¼AïE{å•Wè‡ø‡é¥—^¢¹=»0 €_„\[[ËsÞë@ pþ±Rο‚gpîáð[@MAcåñYI¶ Âa€uÿ÷ÿÛߤ_þ•_¡ŸÿùŸ§ž\ŒbÊ2ýŸtM†®ŸX¥á'÷,œuÅŽ RÚɆ~þÈG>B¯¾úê±í§ÙiŽ…Ö¯‡98É¢•&©€+M”Ñp×{éþv¹Ê­,¿Hoö‡TLã àn¬Wp_·SÂA‘`aÕ Šu€cÃ4Ŷ«B0­ž4}ôÁ²èJz„r9Wè°$”¢ƒSÛ¸Ö­M_R,“*¯`Bk·×lSJh9Q&ý¬åÕk×`sÇÔ'ìwª d=žž{¡Â§HjÀ3ŠcI^P½@°åÔkÑmfå…Ö¶§×¥„-¯%Ùè1í=,¶ÅbÐΞSëȶËâö–hb¯Ã*RØ{ÓzÕ`‡>콄Ùzäǽrõ2]»vUúBH—ë³Q¼&­OÔ¥®„±$]åi‰MvÒåÀ‰A~O æsûömj6[”ÙÇ/tûa5Ž^7únôËZ¶Àkè“õ;ulݨBQ‘,ƒë (æŠZVœÓ*a`{GÓAa[œíD¥ÈõzTŠU·³íVeXõ^âz0–¨l«*vhš%í_ç6·Ç5 ¦‚Ð�“¶y"SêIŠ~/€À<�ãá09i×o¤² VÆGPàg;Ø“Hº‡à;Wþó3šŽ„`‘Dê8þVÆCñ�=,‚a†Õó@t9@ËÛÛnµf2àýÑÇsùj¥ i¹Ç¡*”öBöK<Q’(ï÷Üó{‚“Çš¼È P%È¥Á,ý‚¶©säÆc¸S �ÎF öô‹J!˜”—®Â¡#Þ3þ õfNÕ¬^¯1¨žŠrŽ+Àƒàƒá@ÔAF:ˆQì=ɨ,À¹”%# òi褜SU È­ZüW“c!(q/uã*¶çöP‚LxÄAçû Ö·“¡#>ô¹Ÿ‚Ü2» x®€ÈAQÂK�ìG\n¨$®+²®OVú ¹2à Þàº"ÍçÍ¿¸uÛCZ(WœT5È*P^¨`¼‰ä^GÜ–P}àóC¢ß>¤*c©ÖGàï;H)—Š$8q'v©¤0T¦‘¦RK¥ŒP»y”UÉCî“ÑWK‰zá^ÁB‡íXVl†’æ©5F Ô¡M É% ]`ßg$ê"|VY½’'ïdNÕ ×ˆ6òMmÄ×L}£R!lHˆ=ñ„´Û8‘gU|`(™ î…ÄäTd\þõ×…Káv‹I*5hW1ˆ˜P«Áó9Ü+›TÌz^¦ç²ã¾Sà¦è‹º¸zIê j2ê'9bc"Ä1ñÿ„`¤«¹SO„r —fí‘ÂpLÖ¶$k%6ëñïÞ½+c7€"(&Âì¼ë´àØÓ6(•î”9ò¾³ÉùÍ“ÞW»DÁ'Õî[tæc»ùrC|N(¬\´�ÝYîýisð'9þøwz_šÆBžˆxü>¸>YÉCBèò©¢™rv¡‘¼âÇcíSäñ[0M›÷áOQ+êõi8p„Ô8v*õ…Uª4—ipp—ö¶ý¼¤Go¼ùݹ{Ÿ^|á*½òÒU™çŸr¥~n‘9²*Ÿëååþó°nwÜ÷‚œ·¿7 õ=ÚÚãßkô‰O|‚^~éˆð9Ûýº|õ=¸w[ÆEˆØ\ÚØà×2=ØÞapý%;UZh-Óêãr‡?cŽäc‘ëY ^ÆJ§¤97cP�  Râ{±N—*’Ò¥VkHZM¤o„ñP¯tŽ\œ‹Ë! aQ-÷{Š“%R(¹Pçù˜ïììÈ6·nÝ? ß¡ ŸÂܯ5.ó¿c|ÄüßaÌÔØ¨DBixȾJçÌã€ÄM½>q dÿvªfBàß4Ÿ+. „P • \®¸ä˜Šp}ÕÂ&?M!èØ?zìóÆÔݺOCÙ›õEŠª%¡(Ëb²NB ½‡ô½÷¾‰dnâgÁ§FZÅÛÜþ¿ºþ2 ÙGEl$Z¦¿;Â,|Ô0Ðð¼ýÏíýaÓžU.ÆpßM+–+ËŽ«JOÛþ¢ù¥s{ØyæŽÏ£ÎÂ5æ66þîßý»ô/ÿ忤_ø…_ ÷’}ÿ÷?ýÐýÍíÙÚ…!X ¬*ÞÞÞÎC @š®pÇ6�Ƭ ·Ô­¸ÙÝÞà ìåÎQ[:Žº0€íí슰´ØÖÊ2Â@ÚÈW0ó1ïÝ»'ò|ü}ñ‹_¤wxòA^rÙÃnðFP>ð9´Í‚­I;ð¬Óz fZà÷Ê•+B¬P%�´û @àuZpµ�cÒ¥ÊTKÞð4'&ƒŽl¯ÆŸ6 œ,›Ë© ôÜñ•£©Bð·¦P‰~[– a¿·¦ß)x¯ŸU9À*¡XE-Ÿ½V›²DY†ViÃK€/’ì½µŠ ®ÛcÛûoÁbU.(’)”£„$ßõÞÙ}PŸ°¢2‚‚ïzÿaJrÑ:°©0¦‘!,)B'õjú›¦‡P•�K6Á3«’—º=¿^«­wk–P¡Ÿ-ÉDëQëKÛ¼ãmÛÑϰ÷§x¯´~”lcŸ K¤Ñ²è*N%lÕ0Š„ ­—®]¥ŠÕÕÉ·jÛV±k³)3´ìd)¦Î°×fÛ¶wé—q ÷Rä¶9è�D5]‰Š~C°FÕ(°½¦pÒ}m½â¼àØgBÓ…hùPì§é£`ø]ï#ʆ“2áØêzL%Õá8ÚpmJbRò¾ÓçOÉZoFáø Ú¹–ðñ^Ëó>·÷¯ésEŽ\�Õ�Q¬ ŸJކrG$ϼ*D8rc¸Ô ]JSBJ^h¨)H·‰{ €­;ŸïKø1ˆL) ÁŠ·Q&äŠ ]äÈAÀcyœ*†LåR- ©/ \ÐÁ‘Ñœ ! _<VúÑþ#ɦ¯„ =Б+O`?¹†Ä‘)Ðïy %÷K$ªçód r+¹¥]t–ƒ¦ÞÉ œ6„H|“‘.ƒDª¾'¤µã ¤@ç%SFÃLV˜:�$ɤ/ âT®{ä vj#�îC¯˜ gt«ñ|:/¢áU ôÞ8¹jŸ,…"m¸ËH¿•¨&þ\ ÀiÊïu>ÎQÚ§n»T ©4Ù6ò‡Á$ôuŒÞ«* x $˜ ƒ�XÇ— âÜÿsý½'Ÿð¥J]”,âÄ‘€OáÚb¤=Ð}О‘¬HL¹KBµd�Ò‰K¦rÃê[aɵ¡¨"ª�Ú³ÀÕ…(Hx…¦:ƵÒä´HÛ…‚ ›aEˆ9®2#O É)]$~[. Ì"m%Läz2¤¤@Ê »gR_"C Rê7^ežT@š„CF®0oL=È—O=ÑU|…H&vx6åøB¹q*"Pj�ù#Õí“‘<�ðÒØ¥Âïñˆ}ñЕEý–á`HÏÒPoK­j†}†a:‡S"õ¤¿­«v<Y5 )ôR•ªÜ–”ì8äJÄ8«¤È0ô~wäs+]7êüÏìyV}}«š¦>Ö;wħ�ÑBýRÝOJç¯ëÙ­2šÊ\±ÝÊgE©3X?à?ëûÔÜ?¿€ÂÊy‚Ò�A²Ø?èœi{9êcâOï‡Ô"O+pyü8Sif 7,{rõŠ“búûq¢ƒUÔqßËÊt¿çtK©Ví(ÒtWþè¤Ï©ÆLÐ?©"Ÿ<7 ž–*²ÀójmEVÿ—«GŠK^¡Aÿ¼ùEÚÛÛÍÕÁ¾ñÚ›tëÎzùæUºùâUI¹pÖÀ¼›Wó¼䊬$·ÄÇËW–øÜeºs{‹=Úç¾mc] ÄWèòµ+´ØjÒÃí®¤!Ã@Ûëöè÷å záÊuº¾™ÒÖ£mzý[oRûˆÁö¥M×O ûâ[eÒ÷îsêæg’âHº«y�ßîÒl  d±º²ÆãOM¹Ü}ö ªÁdŠ]»ÿ@B“¿YAÔ.>ÐEø1T¤úÐX+æÅ—1îá…ù7æÁxá³Ì³«.­Ž›:~O¤jFÞÎ:Nãqªe{-㘆#OŠŸž:’…¸ë£ª¤÷@}ò½‹/Šÿ9²v¦ÔŒ¨QkRÚb¿iÀ±Ã ·î±/~>Ó? Óޤ!‰áç ™7¤_Þø�í6×(¨€ô¾§¦Ÿ“r„¢øeA”ŒVžaÉÏH‡èÚ>Ímnï[+ú¹G„c‚ÏÛ&HfÂ…–Ïþ=’çö<mV;T³ø]Ñf)?=òØóŸöÛü™!!2|îsŸ£ý¯ÿµ`Àï¦}æ3Ÿ¡ø˜«V<'»0 zZÀNýO0]Zt9ý09�„wn½%+§/]º$’)ëëkâh7šU™° èƒ äÂ":aqV}ílm“•îGày¿úկ҃܄‘ÂËË‹ô=ßóÝt÷î=þíkt÷Þ=ß ù m@…É|&ÁYb’›Ð9ÛÁ™æ›¶ƒÃg½¾Ë—/ç“™â6ûÓÙ­ØÑ*èlÁâ¢#åÀs&€T Tê½´ä \»Édœ÷ÅŽ\'p ¨kª˜¿m Ô–Óšøõw¼ÿWöþØ’4; û]Þ¾Å{±o‘[UVVÖ¢ZÑR’JJF !Ðô t#Æ™æ¡Çcèalº1CØH€±I# ©AB%¡ÖRªE*UUîÛ‹xûz÷þ¿óÿŸûñÿú}ïÅš‘‘÷dÞxwqÿýßÿ³|çF™°ýhûÕ*W æ`{øÙ*n™‚ �ë1gû…ÏG•!‘ûb=츨‚ÜÍ% �ñ9ìkßmÚ Â4ä[ ƒS°MÖ8< ø™õ°ýƒ,j8¯œ)ðHÁ~e¶…c`#QX  ïF,ÖgçI D¨‹^Áëùœxì-ðÂâ²my6Íïµ Ö“Q$¼g®Èñ¥%¹øÔygÐ_òIðƒ,˜¯` 2B¹?¼¡0î«ØA_¸Š:„khpãæM·×{72dDa׎•êAp9°ÞPÕZp-Ç×ð:;¶LÿB¹vÝ¢ž¶L>Ÿý%)êË4R7{ÚŽßq¾� ö9÷<iFÌêˆî—*Fƒ°^S× UrçH®i(²¾7Rû˽÷ü.”ûâ¤�:¨?÷ Ñž;“%Ùw߸óÞv’‘üºLõy„Ž&º?õ„^¢ðÀ!ï窄Ԩ¹ãÁ:=M17Ùtûƒ+¯“ÊNuîãq2àÙï§U¶§DÕý4Dó@9I(#¼€Qì�ŒÞÔÕßUI/L5§dZ/5#j…–ïA%šf¤ëû² 0~kú=Ñ*lÈÚ0˜¬‡TžODŠ€ šc©Û“Ñ#¾ßá%‡{‘ ` ýÐL[ªÔí÷»A±ì£¡ikû$xÖŠ*yÃÐ8£t[S·ä)xÚim3Òslîïj”ˆq÷B¬6xI6O0Övã°£€dÆÜµãYCç†drŸ²¡ƒ¶ 5G£%í‘*<”sð€@4½�Òo "4ô÷&À(î7D‘ðÉnrï¬)/}‘ï[#³8ž¹ÕÔ Éž3¸=YA¿®.]äÀN“`¸Ét:hôŠ^‰Üí)xà™Ÿ4S?>Ђ-¤b"Jݾ%:šòEÒ:~}i* ¬ DqcÓLs}ù<z±^ßï—s×¥M€dtź66Ý3ºÅM£¤€/Ë<€"ëyŽ„~%X:A”š¾ƒ¢^ þèûè ¤Ê{F£Y�äÑ(בòÝîC=ƒŠç,%çÁP6ÒëWå[Ò±¦äÏ k€Ÿ×Td8ÃÁ»€§ÁùŠß3r°r¿ŽÐ‡i•7"BþòyÔç:Àõx& Lþ%Hòá+bòk¤0¶IÑ+ræêARž4óÑŒ†ÉRÆfvZV×¶F¼Ž  ŠÉŸ,Åæ°~x”ÏóëŸ|D^�#¬òÉq¬{ï•~¡ÛÍôl@d!Ê0” ÇÔrûÎnßó<[Ò 2¹¿WV–¯Ê׿,›[›º‡cýí¯¾"o\¹)—.ž’ógOéYx$ vÎT=­7ΡµÕM÷œ)¹p~Éñ3"¯¿zšΘ¾xÌÉ1[qk|rVy)Q° “Ï·÷/³çþ.K{¬!ÇfåÛ?õ ¹výº¬nm¸^\’Öøœô»ÛR >¥oöX­„<Êáœ×?‡å£v¶weeuUŽq|àXÐ¥e*ÊIHd䈣Añ…;¬ P(€>î\܃Žt{KVWVõ<ƒ¬Š87¡ @ä œkpغpá‚ʵ�QH™–º«Býn³g }Ÿ˜ý‹)e-�C¯©éðÒFªS"UXSžzà¯gõÀó;ùÑûÀ‡åt‚~Ôp]Çk‚¿Úqçz.»›riý†¼gûŽì´›>­ +ï·ÆNÈ+Héç¸?wBÆf§Ø«z¤±süž_8~)Ø ã®41lÂ,ó©Ù�ŠÎc@ÖˆFôxSQ5vY¾ýqÓiÅufÐш5Ŷ%ýêÈl@Öó(êA[‘uz­‘A áÇ~ìÇä·~ë·äsŸûœ|ùË_–GIpªÿÌg>#üàeDŽž€Ñÿ ž�Rll¬+ÊúÎÛªXà Š5à#÷䯯š|ñ‹_( ÜØ, @@P '2„‡¹¹T¶xb|RŸˆÙŒ¿×®]—›7oC§ ‰‚F×sçÎhþ›7oÉË/¿"¯¼òª†wVÑ2Sw:ý«¹›÷½�žrËC<‹#î_Øô ü ¼£AuFTþµB”öTÆÅׯD…( ð6}†5(ÇFeº¶4ÊZÏ5{/¿ã{ÖÇF©°é ¨ðd]ìóùµÂFZ¨‹baAüÝF/°Q,(Ä'ø›ígk ¶‡"Ëâw¶~Œ–PÇæ7F(à8Øz± Yð>[_öKMƒd•Av,,p„ gÛ‹bfùÍ+{(Û1°L{̬c½ÛÃÞ‚xèsœXn<6ñ÷öwÛŽ8z¯!è‚é1âT41ÅŠú˜a±Âx½ðy¶Ž‘ZØ~BÈeäÇÞuúÔI9yò¸*ðø,R,ô¨Á á:ÓÄöcŽ`çšfcÀèQ¢Õë4ØS±3 ÊÝÚÜ’éS3z½¦rÚñaFùÔma' vÀ_F¹°}À”%ìZ˜¡¡ÅC$ünÁ+ ô#Õ°}Øñ^enã·‘Æ"½€ô¬Qvðë@Æ/zJ³ÏQŸ=¢Ý+ÅóGçr0$¦Á{>ÏyÖ‰*™×mDØ/R†ÀÈh†T²"ªC?ó)CAÄ£~PV£Dîój^¡÷ ¢*…Å›w¼§ªG_hT59ÅãæNKÓ)L7tÏh;¥pîŒ)zfaÍÚ¶–<Ű>a?h«=€")Ó™hj¶„ûYì�Ia›„b[£€„ö÷4âF¢ŠY„ýÍR(iS ›­‘¸g(áú±§ØÚTmØÒÔ(û®ÔK5ëéµ ˆq!ð•ðÕÐí†-¡éúÜóUÊÛ6Úê‰×qåôÅHÔØŸ)ÖB"´Iñ®R4Ò†tŽ—sûÓvw_Vw·ev|BóE|ƒ” é¸L·½gâ–«ûN¯#ÓYÛU&µÍ �QÔ½™úô H÷áÚ0íøë”ˆž ¬,ãëà”ý‰ "g;¢c4%Œ/Ø{Æ|ù®¬Ö˜B„t#ýn_/ˆf‚ØL-1ÑÓ1Ðt,Á ú ¢ÆX3Dß¶~„@‰,Ìñ´è1øßÄÐék4\Ï€ä£�ê5C ŒqÓÿ8:z¹ 4I�ûlËž4„ÓÔºû´Îx@HÓóˆ¬ÑN±®z>2Iž)°�´ð@ÏÕ˺þ™8³Ô(îß+( z{¿àÏ-ïñ°| <_iĬt†§^óë6ÓåɈxþUò“ÛÔx9Þñü†ãöövÝ™=%}×]ßé…W¯‚§’*€ËMÖHJ~‘©C˜žŒ` òT‚4MNP~n^¶oÑ?}a$ž»!Ëo2‚Ó(ÄãÕLb=RèÌNϸïoÉ“FÒ±ÝÝ=oOý‹u&Õ?h^ØÊSußQž€ë¹ëøó¼]_p¦)¼66×e{kWïÇ�ÌwÀ^ÐnC¶h§‘Â.dÙ¾×!ª3L-,•‰éEÇ3tdíÎUÙZ½&[N§…º~ù·_–7®Ü’§.œãK‹2>æŸ×h”Ñ{J¹FŸ q!¤—Z[CDŠTúÇÍËŠ3¾_»¾,ûݦ,ž8%�ª"X3‘ÓgÕ)è«¿û²¬n&ÒÞ—WÆXQ Çåé ®?rÇÓuõLsüÔ½:ñ|€qáå/]¹7â~7÷äæÞ{™óOF#¯ŠHO«««òÖ•rîìsú}¯_M½›ˆÑå‰àò ÇÞÌ‘¡ùê„9 y˜àìÇHÙqòäI9~ü¸žk8Çì‹àAê›b_E¯’”û~ÝYªu|’®£ƒ±åð°òm 2ö~?ðÌYÅÇö ¨äÚ¿0kiO5áÐàøÜÉÞ®çá9¹·"Y¹"{Ž?Ðälníæi_®,œ”/¿({í ŸÞòãY·ö�PÙY½- @¾íI·æ¦”Ï•w�´pÏv¼mQžR¿»áûFâå¥$ðÀ£!#z§P3LÇKöýÛIVÿjéq«çˆž|ª³ÕQ÷ÍHÖñ|}˜zbëLÌÏtê?ÁÈÖ£ˆËõ€^_ÿú×å~áäóŸÿ|Ñš [|ó7³|êSŸ’çž{NFôèé‰X T´Ï;èñ¿ü¯Ë•+oÈòò²x C*qx*þ ÞxA1† ©A¬q)DðpŸa4»yó¦>‹›žæwÎJÏ͘Nœ8î–%ùèG¿I^{íuW׫rõ­·dscSQä4ðwP†«r�Ó £%¢U RÐ匰P —”¼Z¢TÈ(ÛŽ²aS¸bÓk^Ãã›ô ¼Ö`-"fȬÙó àø±]|.^Le`#?ÐG\(æ‘�ˆi¿T -10aH#6æÇŸI¶6q¬ð±ýe"Œ,Áv2<ˆÅÖÈo£hXƒ¯í Bà{ö‰'[ö½5P×Íø^1Á Ø^éÐ )'ª}jSDØ9`AuL¾ebÇ6Rß·BJ  ‰ç°S«Àão¼Àr9ÖÖøoA,øŒùŽT ,ÌÏÉÒÒ±¢oì=¬ëO4*SXý4NÙ—Q7FWØqd]ɘÁ£/<ÊÀ]§œ°€Š­MUøXà”¦vB~ÔöÇÎo|¶uD˜žƒé:@(Æ•$)£Ðp~ã:Öó˜L­Ý iÆ2”LÂý‡©vŠÔS! aø«@’&„ *z±ÙvhD’à5åu÷ö¼ ë:‡.Ð)7q ün*«[]5 C)ˆÆ”â‰æ.†‘¸á ÷!µHC×OîCó¦^1š}5ü©ç|?X|4 © ¬Ž;Iœò´#šª¤‘¶T0=íŒ;îÌwŠ{ ‘H´E™OP|_ë˜HîgrïÍ— M �–ö噄¨IˆÖá ñP’öƒ¿ßJ}ÚŠ°Ÿ …¼ÛÒÌ@õ1>ë„4®À‹nÖóÊèFZñ×H -y¶q£>3QF€)�Î(¨ýŠüÓIîB#³O‚Ý=•Påý�žHr¸­‘º5áê3ëŒAÓ-·7¹g›”Igü˜j´\Û ¶˜“–ÌŠÛgÁºvݹì:°ã”ÿí$(‹†È| <¨åΪœ|êÐô©"´½Àï¸}༟Èxx€$Œæ†nw?ùh+]ý¡ßó�–>¼ÃÜe:U¢§þ~Ì[€ÆZî,qŠp��d ì1ycE_=Iu‡2µ/sŸBES„dÞ#×Ûµ=�)/¢xCB ÷û©z5ûj6`ÑA–¤Ž €?‚]‹ÈKßLZ Þ��f¿“è÷míkH»™ø޹ΒZP‚Ö3SðÀP”ÔóOŠ3=÷Ñh+Èð'÷•à^Èó Ã~“ˆ õÍ«iôȧêgcŒñ<n£ðÂõ€Ñmg�Ýt}0!{3É?€ ƒá‹-cy>AÍò‹ªâÌg^z-&Žºÿž(ñóÑ÷M•í;,±æê»SÆ4þ:·sïEÌhf”$%ðÓOå9sèsÞ)4Ì pÐïG¡£”ñ žóXÑ#nB…´pk[AY$}˜nDåè�ET¨©ñq‡¶(‡G ³{Nbmý%U �ߺë5âž{ÍÌÎI÷Ü3²¶ü¦Ü¹yE¶6VTÞùÒW6Ü•/ËÒâ¼3ÌŸ’ãK 2=5áä“fEà°,ì!”‘!ÛìÉîNÇ3M™š—Ù¹9yú¤Ü¼u[ö÷öezfI óHŸ²¹±#³gg套Þ+wÖVdùÆŠë³L¶wÜk×ñm™qû`’õ¼Á;ñ`0O•›êž¤=©ò§G§û›÷ù=^äÏ9¦ÍÜ‘•;rölOžyØ{³¬Îk)ewoÛÉ{*—R†…^óßá=ø#žK/^,έ™É©BßéÁ@í¨1ˆ‚T>æþšmYý†¦7íyy Ù`4¦[»¨ëŽX‡²‡Ô~nŒ›ýžœÞY×h~�6§Ž§:³µ,'··dslBz-h]™>.¿µxN6&&ï>棂%>ùÝxF,Çß7¦ZÒššÔ¾ïìí8Ù¤#]�.v÷•·˜ªÝš1ðî­FˆÅÖrœ¾º^6ÒyŸ<\PëˆFô0Èêí¾ëø¦c¶¿hDo7QÍÓÃl$km$Ó0}-êhuí#$�ðú‘ùùµ_û5ù¾ _ùÊW4«ÂýÐüü¼¼øâ‹ò¡}HÓ’<*GŽÕÓÓûׯ]Õ<•ÛÛ›±9)ý¦S"¿“dÐHmðØ;Ÿ` NÀ涺ŠEË›o¾Y[—: Àà†$ ÇHŸ<qR¦œ `¼°È66·TøQ/i§ O Ûè=Òh0„‚BÌ#âlHƒÂgÛöÙöÆ×ÄŒ7&Hí=Èi,Êç%…1‘{UxM§½ãg×ÕÓÞoÒ4æóù,ß bö=?+(² v|ãº×•mÇÄΓ¸íq»í³9'cB‚{l„Ž ŸG¨°õ¥rØFªà{ ذu³†f 4‰…m ! ;¬c¦!þχÑmfIö/=6’M#bŸ]QÄ'Ií³c`ˆGë)+ êÚh¯Á|Ï—çbþf¼/( 0סðšœÉ)¦s~nV÷(òªæDÿÞqØo(ÐVÈ#Ÿ/¼\Õ šÇ@‘ê:‰A#üŽ{/?[ï� 4ºÛÇ x@xÛm(BbF¶à`¿£'2Æžó߆&ãõŒÏŒØýÔ¦"1ÚîáZg}Q6æ—]wdnù=êD…”£x.ë‰k |$à‚‘‘¬§«ÝcÔ`=ê<rF4¢»¡˜; ¹Àï'Fù})\Ÿø ûªÀÌô½xÖ9£ÔÀ³À‚*éšÎœ·¼±9á>$A‰ï#b€ºyBÛ”áZwÍî^¦LëtâÖ¼³âOŽ75 Fºß•=D„ 5^a¹¯YÁ¦OT!®½à]êÛ•kÊ…~Î*ðü Þtí¢LHXïÁ œé.�Și%qàSKh‹Wˆk¤°�žÅÿÚçJ<�8¾í¦¨w›‚U°_·¼¬Ï<‚´#l›7 öƒwÚ‡Z`‘4<ÏzÆx‡FæeøfÏjìÈÇñó$˜_2MÒÖ}× Ú•ÔXꆘÉno_6wveÚd&°?æ¾¾ÚOâyY�ò¼)]f»~V€Š»j  :Wv'ó)-Àg;àtÏ!‡ˆOÕÒq¼@Ã+«©Ì‡s F€c49”ë'¢ßÜôíl¤\‘çüSå5½‚Þ¼¡ oS5@åÁj€±õg·ŸIâ7œO ,J´Hô\õ àžå�ƒY¢/ö€×È|º@]0<e©‚"àµÚë»s» ã]í…–LO¶5½Š¦øAÊ w]·CãB¦Æ>D¦IQ)”‰y‘ûñóž“}_Ïœ€ �í‰ D?xp¤³"Ï<çlÄ;ÿ×ÈvÆ\ée%y1Ïi aiÚµ«éVöôh+äû,‘*ÏnyY[ç˜?$Ðüø*5cOeµø9¼g¤¨O^�'ªýT©gù­HµÀïÙü&ÓõÝTÛ®ºßªÏä\É”o¤wüpåtdÞ� Žçaô¸ñCw«„?¸o²óçÑQy†‹9§îeÌóâo‰9Êrs*æÎå%è2÷û*Ò@õB´›ŸîöðÅc3êý¿³Ýñé¡àŽÀÆÚûŠEZsAØÛä�ÒF?ó¬Ì;#ëw®ÊêòuÙX»#§¿ºukU;}Ñœœ9µ$§OŸÙ™Ii¤¶cê6¿Æ»ž¬w·eckÇÉ1àÚrêÜ¢¬ln{¨cšV×6eùöºSøN;ytZΞ>ãd¡}ÙÚÞp÷íÊv§éκ}w^7Ë.¤Ü-½Ðw¢XÈôn0~åŹëMñãˆ"æÎ™[Ë7Üë˜F2óÑyû²©ºÃí"Ê$öb�q5z¢;àfggôÌY<vL^|á}n.¬89|Bucãc…C@ú�)”¯ªêKD¤ÖÉ|¨¬[tÎ ä]ð58ñéH¶]½1æ º°¤©äÀ¯iÔ¶$•Ê^dç…ûzw¯«o<ؤZ]©'­nGNì­ÉXoOÇÉΆ¼të†\™š–ÝÖ¸c¹\;[ò;§NË›3‹Òi75Í^ÞôºÏ;5̉ÜŸ‚+ óW”§ÂÙ7‰ôt®O{ýi•ï÷;{Òqý¿çô*MöŽ+0¹Þ ÝÒrÙÿÊ™úÍû‘®`DoÅzÖa×<<\̇Ŷ›aºèèaRÝœcúéø:«cd×­}¦MUc´f&è>ùÉOê tõêUyõÕWåÊ•+rýúuM˾QÃAÐÀn›/2À‘Îþ—/_–sçÎɈzb�ßxù릒8ëIT(àr0nÓJùÞ˜ixƒ‡¸5®ÖÇö!¤Â#�Â<›píÔä´ŒµÇeáX·bèÆBø\²AuF̓(VÇßÅeå’ LÉëA¤Øxㆥ"Ó”cƒ+þÚˆ ñØ$^/^ÜÄùÞÉÙt ÖãlXÔõ#î¡!XÔ[_;,‚Œm‹ë‡¶}fïË‚iœ:T·”uDÝ9W휵õ­[8ÈÙoñXSÐ&€Å‚0XvÜç¬c(Á’­Øëñ—ÑJØÇxoSÓ°½Ôï€% 8^¶^¼ŽßÇà‘:€EÝXòZ"[ëF:Þ;Šè)&Œcýxð>™ªD‘)Ûj ­JÞ4 Â};;ÝÒ“¤Ò΃¦áˆ7$ÚþõíÍ5êP¡îáíþfšŠ`_•*L½bÓ?ÈE£ŸÉèœ{'^Gä/^dþø™×Òb÷~˜Ø‡Ìß ‘zxV \¼÷©ª<¸ 8õ4 De“õ²{Êå1«#zäìË(ªºM1N­ö‰šâa‹Ý„²Ûóൽö|0il ˆ0¯m5পìb}ñ Jtïé¯Fê´zöæA¡^ºpEìú•çzýD6·{ ^˜™ÆY/25攕Ͷl;ãèŽã«ö‘BóPk÷Þ½kÔ³ºšv#ñFŒ‘C{ 꺷7´ú;#^{R¤äå�c=ÜK3½'ëâÛÔ`8`õòÎÀ"7í÷©â|T di†òÕ=£I¯R\ëÁ uÈï$Ü g�'N)ÜwãÓÉ:B E3oùyˆ`¡«ž‡T—<Çí8#þŽûr<qõ€14€L¹ujxm¶7Ô&xâ5d‰?·Ú8ï{eª;ŒvÃç p}ëçP+D‚È\z©hßxL "v¸6åè ߯Ý`ôBúá™Ì("¹Wt§‰êàõÞ©¦ð)ADû‘04R–èœÏ<pÃýÝAxè<àŒ}QË€“J#X�D€˜C)ù„Ad u�n„ö$œÛyH‚sBá/Î`ç{ßñüŒb DoAe4jÚ ±M‘%}ý‹=ãnŽÌLµenz2�ÿ|ª+üc`ºßéBܼÓð누ᗱ.e”•žd\ñþoàý=¨$+ÖæÃ8ЬŒ0Œ@bäÛ$p9䬻ˆ:“ i­¬2é !9"Æ( ‰e—Ï&_Åò€mƒ•)Ñ‚/\Å ~/BâX^老ƖF¦ª¬!•:[*Ò¼„ +|DHä¯òhwK~»ô{›‹¦OtÀ]E{�^˜Ÿ ü[au•E÷:s¹?T2ãæ(2¸ ¹çÞûüñUüû¶ù޾›:“ ïí^{¾FÆYî‰T䬳äœÔ:¯~ àw{B ÈT”¤imÝØ^ìåSã©%ó¤ÜKÃáVÔ9ÖiÄz¥jÅë)ö°öØ„Z,œ‘õ•eY¹yU¶6îHwKîÜ^Q¹äÆ­;rê䢜8± s3ÓjT× mY¤ I*} viO@>u\Wû,…<çÖò®Óoݾ ‡¡M'ó̸µ=-‹ ‹rl¡+»îúýnËéqªWÂ|“Óÿ¸Ùôçß»”ìð<\ûü´ܼuEö~mMÚ­qlâ{ÜÅ<Îx4Òùê⯙vç ÒÄŒ{ ÅéS§ŠóÉêÑô!‰ :ýNês½Sf¦ K}Ó@ç '2œàU]gæ"Ê;¶8ï “^6 Ï,¦#랥õ €Ã~Ýqæ Uø£…½m9¿yÓGýpŸ[Ý=9¿}GÖÆ¦eurÞ÷mùÊ©§å•ù%ÙmO)¢™Ç÷jKV®Ym\¤ OÁEF,pZÔú×Ë Ðiàý€úiÊP÷~{ß§k©þN.x1‚–J(CœÎ’ÀbDïPº^éaP\X§?¢½]Ï?ž1Ïÿýòµík²Ößy¤»~ÛéfNÍË&/Ê|c²¢C‡îºðÑ::: 1I<9ôÄ�,˜sÚ¿Ï ³ÌÉËßAVxàæe7k줕¡ñXö0C1•jvÓa9�Tl¬o9Ac§Ø0éõO@€m‡"½Í÷Ã6¬¸}|?ì³í‡ÅðÄ©)l„ƒXP§è´QCª ª‘Þ¶Å8ìK”Å´¬ÖHnû%¢,±bp€HØ6ÑèÎ9b­V(ö|ž5TÛkl”•¸-À"ž·Ta#=ØïÙÿôÈ™ÍXùc¿£aÚ^÷«mÃ0Å Ÿu¿³í*DC1Sš±}m ;Rb­W!çܶí¶ó—{ˆ›¶í¬¿³@[Ï¢/pmß×uvvZfgfdrjBA�X4ÍylÛÂT>ÊGC}û¬ýê¶ôV—úÚ~9Œìº­Žej®a¥n/Ü•™æ˜Þe™ÜñÖ0×­ª±[”cÁB¶®PÖØh,ØoÕ°g@#Ì‹ïy ‰ ¶ø<Á_”MÅêM…¿C‰Ä9è"L+QadásˆbªF¼ш$y#$•”^‘YÌyü¶"äÉakÏ)»™÷¶ÎÀð!`!rX¡à ÀS-Õ¨ð’Li¼cô£Y>©¢½ß?^ü r±±Û‘ž³^ÏMO8¾3”§™LO´Ô`¾ÛéÉ^^¦™†«–ä€ýË(+­¡úD2ú &A‘ŒKáíï# x�‡Wì¢Î½^VðÕÒðF|E!DÓBtbÑ Q(ýâ<–ý ÷@˜FšÃC©ØÖź_§º‚=J1¬Ð û#(ì#ÊC^è£C9†74]®FÒý®ìdéCwÜÌ4Ä9ú9ÖÕ£m…§:£F((ÀC,Ò,UOB�?šcÍÂX¯iJŠ”&™¦ºÈ5eJ"-ì‰�,4£Úvž+ðÀƒ#¼i}Ï>hàˆošƒ�É´Áè™Ïmøt*8wšÁ#/ä×ÔN¡¿çúh£·?�< :~ñz÷dàŒ÷¼@É·À 3WcE¢À¬‰TÄ��Jž_ïO1ÂÖeˆ>’ÊA=õ%¾¬Ôw·¦#o75Ü;<‘ÇJtƄ݆OYÒuÊü=·.Z Ÿ¦}‹þÐÈ/ æ�òV`HôÀŸ~�)ù8óz;(¬ÊhÈòÈèl»þ}R«xŠËH‚·¬ ¹Öò),¿kym+‡çŸàô¯ÉøÔœ¿)™Ÿ |¦_Çõ}Ëvä!óÂèäëªß–—Xs~ï²_Ìgzp‹_xu»}-ÿp€)Q#ôœk»­Û¡õGOZaø Ë‹iPž* åwWFräe_$¥0Š>lŠ×œ'#×Ùy欕½ÅÑ…ô\pŒÊôÔ˜LŒ¥îÕ”ñ¦OÙ1wzrÂE›þpNNaÁz±œâ»%Ÿ:=ÎÝSµÏÇ&¦åÄÙi™™_”ÍY»s]ÖVoÊžF|½í Þëríú´œ<±$§O.hjÉ´¶]Üû«uÛÛë†úúïaiiÎ鸶e{k_#Ënnnh”YDÍ@Z’¶ë×Õ•-='=è‰<¡|&ùÛ±ÈG ý iát¯œñ²jß˵ˆˆ„�ðf„L ¹‘yÑé8Ð*t˜;—5k9ž“”Y‹ˆA ½R0Í2Î8:EØ{�üÀkiiIž~úiï9ç‚‘ãb}©�Nºv¶÷äÙ«¿+éö¶¦³ï4»»-3ÝyeîŒìOIÇ­ƒ¯Ï—›ó²>æÎš´åú3Ñ`aÍÀ aM+—¾: QTî㤱ýJG Œ‹ï¯®ãq;²Zû»ÚÞ¶‚,œÜ¯ãÖ,xuÖ¡¬ÎhaŒèñ!{ŽÅgšåcÝëÛIG­ÃãP×½;‰|-SpعøùíoÈg7¿ ¯ìߔͬFoñ©åͥΌ||ÿšü‘ùÉRs¦Rgœoä}G4¢w#=1� k´´‡·=ØíÁO-"Gi…ïè1 FŸÆ-F. Ñ‹ŠQPh`Pñêë†g1Ü RUüåU£·ÖYŒ¢=Ü€x®nâH1Åý ùŠØ?Ö8j½éÙF‘ªÖF° Û·ì_kܶH>©íõ¶ÿ ò ÷Xœî#6|ÇÌ”MÀçØ:bl87ê¢XØgÛñf_ðl›OÐ*žoú± Ìû¨¬•»lS ²àýusŒãÅÆìC¶‡Ÿ9nvãöìÂ{ù\Û¶ø·ªâxpî‚ °Q3l$ {맆¨,XŠ}kÇ–í‰÷ ªaÄ‚xîÔ­K»6¬ÅމÎá¾ϰs󳪰׈-5•õ©Î5['î_Tbó¤�TÖÑ+4ì¸u¯¨kkÌ ŠÄ œ$„Gϸð /^œP@� �o¶uÇ_(ø,zưl®G(˜|øoŸrdL½v|šìÁv ²ÜXä½Öå0² Óà;® xáw(¼�® ¡åq­YæÏàºçïŒàav#ѽPÌ›äæ{PE1þUp…Û":½L¶özîo@½>À—8-”’mx±7ê>Ós†úD£>4 à¡�ò…ïfXȃg)öù¦†ç^ÝÜWåûÜBìûc­†F$˜l7´Îˆf±ë^Si§¾O|¼‘^£1øÏj°í{#![¬õ D€°7ˆè%˜£ûÁ¨äSa %E®À’¦3àöº8§™jJ*Øò,€ñ‘„x¸búáw8ˆšÃÁ!U�R€ø �1ô}Z M«áó¿7Ò¦¯wnìιTŒN‰µ?!]Š{å8ëÒàŠ6”ó-¢A¸}‚¯>ň‚ ®Ð”0ôI- âÇ3anèÃSýõLZ‰ &ûè�Ì›LžøØà˜qK1wSFÓȳ`ì ^Æî?¦3ÑÔ*-BÏ> ’kЮ1§4˜‚q:�QvQ8²èVÏÈ’”XáÇÓ.øcõ·@J='SÄ—™ú¨ÓàÝ´>2ˆ¡�ÔH ¸ÂýÓvóaܵkÊ'ÇÛ2>ÖV`…dÎÐÑqív¿µ`‘èÚh„ùèÁ8¾ÞÅ)­?ý<œ±!Pªõ;ؘøði_äß,«Î‡òÚbÚU¨nŸaz–fjÖEr0èbØo$Ë+ÚûJVþg¢-_õЬNÏËÖ¼3Þ6Ô¸ëykz,çÝ3yëò¯õ¸•0¯KÙÍÃD¿Ù[ �c™¦˜ë‰„52Q P"ósS~íUÚðpè ¥¹­ïÃV®×ÉEw{ÿQî=êuåõÅ»Êþx«Õ޳á5ŽÚç•ïk”ÆͧRÃËû³8®W8uÿx¢êäLK–geéØœ®Aì©‹ÇæõóÒÒ1gÄž’sgÏÈ©S'$=Bw’‡¯«cüÙʧƒ&¦œ,95#³ §äØæªl­ß‘ÍõeÙX[–ÛËk²±¾-ׯßrò渓[æåü™•_Šz2ºO^×pü–êùëð¹LOOËüÂŒô:]Y¾µ&7–We{wGæfçdéÝœYù=Þ_“¹VÚG¹¼A:'œ‹359#Î?ådËiÇÓø4›R`ÎÕE¤�' «¢Z¶yë°ð¢ž {;"¸dAŽE Ƚ7nÜP'"Q`Îà7ü…®uAÞ)7AƒÀüeÈkžg™ãe×Ýœ,éh{ÆÅå7¤sóò¥ö’Ü™˜Õ¨·NK§Ñ–å‰é6ÇBt=Ï·6´?}:5jIˆ^•z†ÑÞ°'øäÞ×cì�Äþõºeǯån-Lj*—nw_öö÷l‘n§há®`#µúˆ¢2¢=vó3v‰yá·“†ñ/u¶£ƒîшÅsÑÚg@_Û¿.?½ùò•Þ5É›XoGêö�Žö¦lÉØÿ™Ý—ïŸý¨L$¥'tÚ1¸xD#z7Ѱ(àRèåa^z â70Ü1<<¾£`Bã© Ð@É{iÄdù *SéYÅzt:Þ·½½£È‘ˆïHXX&ê‚gÑXhÇ4Œ’,(#6Xa]z{íƒ"2OÖ£±nêLã²­¯§‘1öðfŸÚˆ@€±ã8ÚP‡ÊêÊÖ' bë`ÛÀß­Wÿrüð™nû¼xÜø² [ÈFßàØZ9…6K¶¬8Šü¶ ¶ k„Ñê@U0 GqÚ ;Yoz1Ô)’bAß¶}Bý¬RŠ‘l„ ž �†s‚Ø>{½]71®q ª‰ëGd±¤ý‡ï|Lp¯„ìûˆ 3³3 ¬hµBô‰†‚*Ò´ Þȃ’œuì_ì'€øjXãç~½á$fò¢xý°ïê+Îu„ Mñëcû˜‚اh ^Ø À± (ïì<DCAƒë¹Wâ¦ô`Ý-è÷¡\W¸Ç®I¶JB³@¸ÎFÃ@¹ŒâsànÊíÛ·õxæày¼ž,ðB-‰à>¶ ×ÍûsD#:˜êÖîAÆ‘Ü#ÔÈßsûÓö^WöºýØ ºö~ïU–³5C?ÙCT„ÖÖ}Áó6ý~;THZ‘wzUÙ‘ëáˆTÞÈ­Í}é¸Ï³ÓÎÙJUyÜTOýÔžs™t{èŒkÄâÌä°Jë¾ëë-ª€…ñ ´à/ä‰zÿ µl¯�Z¸z;%."utjèy`ÒH°]ð80$ieÂÀH0‚×ñ�hg–·Xà) µ4X¢àInoïI¿ÛóQ%�mAÔ�øÐ|×¹·¨"rû¯è]Â{?bþkD9hЗ‹zÑ!¤ô˜û‹4©kwÇ5|7÷�€ÉÔ}ÛÈ5ËJè[XDuð� zê·šÒÃG³È.E­¬>ß·hë?ØFT‹Ô§y up‡ýŒÀÄ\ÇMù|žýâ£?Á€ƒT"Mð÷� jÒ@d©¦A”†~â=Bõ7׆¶ƒOâõê4Akõ’*Sr Zíc­c’øh%è-R¬/A©!4²I_˜DM I?²<HE"X ð6Q4Ý "¸W?I B,àÿЦ[é¢ïÎ$­FŸÑzä!NŠoL˜ÂI!âÀ ௯ïë˜'?Dp…vy@ î%£,×ùò0´vÝÆßÇ<¬åcÙHù}÷ÛÂܸ5_yõмþƪLLÎ*?4áôS‹ ó °õEÔ›m=ÚŠ=!g¤€Ø änè >°äÉz:Çë½à«ä—€ªÍÍ͈Ǻ=| ÏQåߺ±~Ðô¨”e[Žr]ÍEák; ÕIÜåžcEª ¬wu�¬éùìÏß–[‡³s“²¸4-gN.jtŠÉ‰¦\z ázOÉÉãÇÝïs±ëpl¬­2�ä29õà¹:ÑvrÎê¹u{SåÈ^Vñã`çúƒìÏa„'´ÆÆeaì´Ì-œnç’lnÜ–›×^“•벺¶©¯[ËkríÚu9sæ”\8»¨ÑX‚‚ó¨ÝšÌGÞÁy¾³½ëdšŽkkKåÙ³çNÊ™ÓÇåÆò²ì:~rs+s:6È7»ºç¦IKãN¼žçŸM¤ñðû$¦ÇÖçÊ_îívUn^tsÀ…4õiø¬^‚4pöE=ZwV®fäH:@^Ço7oÞ’••;z-æ2¢Ož<yR¯;uê”wõ(�zT:6àEýõ1Ö!¤¬g&ÛÐe�šÌ‹µrÐfðrL~£}Zî4&¥11/S3óÒj‰-—« S* r½ÂV“¾&âÃw(6Kså/=TÈGÛËŽ40ÙC–×ê3ýw^wÄÔ ccˆ:2­}ÜéìkŸCŸ€£_ø×˜hÚÂè1¡ƒøbÕ±’o5Œ†é%ªÓc{.Œè‰#k—¢Ý†„9úåÍ7åµÎ²8Ñîm—»IO~~ý·å÷M½_&B„ì<ÏGN#z×Ó”"¤¬q1W#g~!óÅPv40Ã@…_�WP° ‚^AòÆ8ö<0‚ÂÀ0´ÑØg•‰( 1`.ù€Ñ—Òøž˜Y©»ÆÃmʈ£NJ,m`È{o$H e"þZƒ³ŠX¡06H[Ã- ­ûû>]�ûÆ lßQ¤g;Ç0~ï‹A4Y¶“}IP Ç}a qª;>Ö˜Ëùfùl ½øñ,Î[¥‚×TBo{æ·¼ÁÐFáØPùG °QXoÛ‚l›ìX܃pê”Ô ;VñšC{h´¦1ÚöA\o‚+0/í÷¶žvðÙ,Fr[Gkäg[ì}±’QFŠˆ¹K ÖôÌœS`ÍO…F a>SkPô7^ŒÔ@à�Á'cò¨|Éô�IEÑbiØÕQõÖ‘Ëàƒ:"ÂÖå'?ùIUÐ@ƒï±_â/ûšáO9Æ ´ ë€À3\®Çµ¨<i0ô¢Áõ¯qÞà™ŒPĽ…‘)Øn¦%!�à<‚%!CóÝ;‚ ^<øþüùóz×?®añb(\Ù6üÎqå:÷ÆèAPb¬ív?ÓÏ™7�ƒSé:Þf}Ç­µ¾Oßv;_Fdܤ"4/¬èRœ‘¢Ÿåmx±Œ$Ü”'UŰUvè>NEe¦á$qÖå½®;Ç6û2=ÞvÆ D*HCX_o€V`€ZZBéýPÑ4á€Ã½Y0ØãHóýcv8›Ñ�úBdɽw? ÜYÏ3�Üàvëìü®Ý°ßåß8OÙcz5Sÿút�èg(žr¸×éÐAChï÷½Ïzöö$´-„0)Bݰs‚¸‹\Æ[cñ�†¤&ã�"dà²åxÝ;]ŸVé¤3Ϲ}ý[H+ä£îåäišr“��"25Ò¸þÔ(>åJ"D ¦M �”ȽDËîçŒ"jh@ú ·Ô÷OV„wOõyH/Ò@D$W?&×ÏžªÔ,‚9¨ÑGB:\ïÕ‰¹ Ó÷ó8#V”‡Iq®£½šÖ%g$ 1ë&­‰å9ž…røœ‰çM£]�d|�(Òëè«ÛÈŠ((yÖUC"4’L}[‰O‚½0wiHèçƒÉŸ§¡|‡†gߥµó“ç2òÀ8"›oAïvo+˰!ÍKK_Æ뙟Ó0êuó~uß“R6³ï»a:ë ™§NžÎxõò«o:ƒçm›˜“mÇ MµW?qFÊcy…®>×eœø}»2§ïÃ#7~^Üæ,£.«€‚)IPó Óáüxü<žêÆó0Š»9O\Ùñýww/¯­›?÷A‡lÃê9ì¹õó{8é)SÇ’ Cáü&ç‚1AJ¥ÇeiqNŽ/Í9|B£§œ9y\×ÙSÏÉô„7 ·Ú-·>{Ž7ßvu‡. ã¾okºÅ´‘Êaø¤ÙéI5‚oíôUv@ô<è—<Ðb¼¶ob9êÁR`�ðWÿ±ñIi“ñ©Y½}]®¿þ%éî{ÕÚzW¶¶_—«oÝsçNË… 'd)Äÿ*g™ž%ȼΠÝ'Síº½®•ËüìŒÛçN+˜ìö]YYÛtÇqCƒäÄ‚­ÛŸ7ÐÉÈÃê‡ÇŸ*<y"¤9¾g}cSA*““®_‘«ê´Ä÷,£²Gﲦ-«¤öÀ_8šÑâÖ­[ú²râæåÂü¼:Ày�²6dw¼ ë^ºt©ˆúKýi ¦`êÚÞišžöl¶Á8éìqÙ?ý”ô·¶ÝœÝÍÝmŸ@:Õ)ÇÿMH£•(xB¹3o®^  poBu˜«øÔb Õ=„ã¹;žÈ:ð öô‰þ7FöPý´Ó l#µ´ÓiPçù�QLÆÇ§dD#z\(æ‡ñ¿÷Ëó<H²<½µ‹Ôñõ#ÑÛEöü\îmʶÓ)%Í·_7|mMºùÁQÚF4¢w=A� ý·’ÊŠ4¢€­×;iŒ�A¨kü(Ä þØøNF™Ï¤‘ Bôêꪢ÷•!Ž6@C.¼‡pãÑÌ-Ù ÞÔ¬ç�@cÈoÓPXÃ<ëhA�,˶ïþÆ h+”fRcl¯ˆ0ª�¿çËD, �ÊX ê�aœéýÍÔ�ôz·�Œ:A”Äþ"耂b BˆÛn˱À›nƒÑHœ§lžãª5ühÀ:Ø:¢|–G gæ½D _X=åc°t؈ñü°s?î ¶Å*‹âñ·ýn?ÛºX€ˆ]·4Ds­ð{®]×"£9ð3Ÿ¹Á(Vøgù°ØèØyi£g°¯mT öÓçðYPVÌL~¶±\›ÕÔ8PZxAå…W`´Šz`ïÀ§¿ñd<eUA?h°cÀ:Ö­‘adçë\Ì™`ðÀœÆ:„‚_î;«Â·ûw¨„>Â>Œ² H°i‘ ða¹|ÊGÿáÅþG ç+¯#`‰iEX. {5¯eXUŒ ØOp/£h°\ϸ×CQйôÆohû xbŽU(¦1Ï¥7çú‚€ {ưOð¿˜Õ=H:Èp¡ïÕ®ª‰ 4$ðN§¯{P¹ïÅ‘&†;(È“Bʲ) U…ñåñ§á™ Cù°¡—xå¨Úyùìð©@:½}köd©Ü Q,´>º—÷å(}’ ÷_÷Dðy0 ¨¡;ó«‘C9uû2Þ#J" •Œ‹#´Ñ$ËR ¼Ô(r@èS~4ÔãÎGàá™àö‹¾.ÂkôSð­nj”@Èz�Ó¹Qkj™Ú@Ôx¾"ñ9¥ u°³9l_ˆÇ6´š }i8å a¡Ýo8ß]ý‘³ w-Wô®>x6ö¶Ì÷½�Õ°Øðc* tðó#qˆ Q?j˜ñû úÑ%:@ñ�IuœÆš€IT á(·(æ ÈdÑÐú§ýÒØ–ÛòÄÁ`¯€à¬'%:ˆ#v1ÜK•wŒ©œž„øñN #¸þ–2-Wjz>¦ A?£©I’ð ëÒÏ _Îð�;ÛŽ'ë6Ôhâ{Òïî»1C›2dÀ˜¥Ý¡¸­£ïqÀQx0 ê €K€+yŒ`>7’ÇôÃÇÆ@ òtžWI4Šé¡Õdz#ŸµuŠä:…rÌGÅÆ¦µåø€í]5^ž;{Z._¾(Ë·–å¿ü¯_”WîÈäÜIiNîI3Û’¹¹Y=%ÑþáåƒTJÑÏÉŠ>+ «©óìJÒE¹aëëº5Ýh¥Þ{øe î³SºowzGL“<zÅ÷0Þ9¦£.—ûUÞßËý~ž~w¿Äs%¿Ë*=(ýCÖ ÐÂ�Ëô û²ãa.=uFž}þ¼ÌÍL¹¹#ñœ3ø— çOɉ'45O#iª7ùíÛwÜ}Ø7›*kÍÍ.è^é÷ù†øeœ �Àþy�FhÈ7ôH÷@‹I•𻕓cÁÝ‘‡NÐS*{u:{¤ÞQ>ÀÜ{îÙ»£:“Ûo~Iåì[ò»_}E®¼y].>uJžºpÊÕy¬˜ãˆf‘‡”`ˆ¼äÁ\©þó†|w>í‰ÜØ_uÆî¶œ=wZúšÄË«dJ 9(ã>:’{*kC÷ÖÌÍ]ÙÞî(Ÿ©Ó$ïÊÓóìëÃIÇygß?–——•¸yó¦Ž9æ#dPÌW€ƒ°6�¬˜_XÐï™Úƒ/«³/Öß~>¨~ ?.¥Ý@ža› u´a¾¹ùמž“¤ÀqüÎÞζìlmËîÖr‘vtbú–qŸf� D k [KA¥,-S鬑˃�#ÆgÆQö;‘â?D ›l9Þ`6D¶èh4ä­U§“XÕþŸrmn·ÆÜ™ÛQ`zéNÏȈFô(i !¤{”ĺÆr¨ÎF1¢=JŠm3VžÌ”ó<šlõ°)˳Ú3nD#z7Ó°`ÞFéX±»';Ž…�²  JÁtŸ>}Z…\OÞÇt­±±4‡PΣc�ı¡F¸2WR£0ØÙ‘^HÖÛïé¾ßÙ/ r±Qk˜WÓ;X#t¼É1ê7<`ÆC‹Â|݆x7ÊFö/CõÃРᲅ×4xÓ"E)XÞý,`ò öéÎÎ^Ñ1¤#L@¯~†8´¡ �à³Y†5èÛHx Üà{Œ¿c´z£ˆ`ÛÍñcßÙ444ìó³#œÛ4ò@d…[›þ‚ãÌè6½£T ~vÝØ¹cç­3kP/B‡yÊgòöwÌ`Ûù+¥íº«‹xÁïQ6çv\9–l7#ŒP@€AÄúó~Û?sÞëx‡±äõñœE‘ÏùàùAPG"Ý C¯z¦¼TˆsR9PÜæ!SJpÌ,ˆŠý YHbû:ø 0±cs˜BÀ2ö¯ÎO§¸ÙÞ&°B Ä—ùñB¿Ã¾‰ˆvn@¹C ë„6pÀ:á=”•ðžáþ B_ãz�*,0/̦çà82—,ë3/œ \‹ìDÄÀsY.êäu{ráÂY\\,æë˾cZ*†LE½YÊżE9øÎö7ÆD#zX4`opEÔŠÝ®zp*ÿ“ð,¯Þg÷e¶0’7‚X-ìaïÏ£ UÏ,: ìs¼Þãr5~c»ï×pȯmg<@$‹©±–Lši þˆ©0ÔŠúóiú ¤ž`ô…<Dðg‘=·25üwsï㦑`ÀÖòB½ò'´®ðækhèl€ :wFôËÔUì;¯0Ï‚±Â§ñ¼­OK’‡ÿð½žùY À`%œÁI� h@ ìçiR5«æ®¥ø,~èÔÃOÏ€Ô‡ON˜Ž#ñý=›ŒÉTÓG-D i:ƒhGZ¹O¯¢ý¡Q62�Hó•­¡ ct8‚E#% Â’>'Q`ˆŸ#Þ{5Q Ny‘—häÞ˜F�‰ÞƒT,IHK“*\C�Ség½9çQÏM� Pa€HÝðÀð‘GºÕ9b°<•hðCÎÃÖXšüye-á܃ÖoÓd¼„^ѵ!!bEâ#[Àë^Â8¿vœA)QZmï=ì£69cEÖÕ°ë‰úf–Ñ0Ò�úð¹ÇÃ3$À¦jÛ’ÇB3èÙmù¶no¿à÷m´1_C¤äÿb 9i¿ß”½~"u>¡{dRÀ¿‹ïåþÇú+â.ÛrìQÒt{ÃÍ5g i+ÿóÿ÷¿_¾öµ¯Ëí•]5rŽ·dë­kZßó1S Ê ~TŸÆJ9ñÃ]†7sò¨¤‘ShÈS¾´uä{½Õ”Çs-¯lHzmí ¢:ƒÄ;éþAGÕ3DI@ªì‹3?ïé}æÜyî¹gåüâ¸LMO8ý”<õÔY9urQ&'& a³Ñ’••UM·•ç]YpÆd=cÃù*x†½ÓËiGód¤Tö3½ý·œñ2"`?¢A›ºŸFã^S�X=P.ûˆ¸³)] Ü÷]g|îk¤¨¦F?À‹2‘ݳ¦g—d{ó¶ÜzãË*GA‰¾éd™ßþò+råõrùÒY9ïúr¬Ý*Î"‚**�®Ü÷'R€(ðÏé·¾þÊ[ Ä£ ?ƒWB—êy¤§P+@ÁÉå^&ï:Úº+yk§çèzÐçÞ^W¶6÷ÜFêÏ puŒôH¹SS|¸¹xõÊ7ÿ6tþ!µdQü}ßûÞ§s•` ê|dÍfá„PÚKNëë&+¿áÅó ²øþ¾òÀã!¦aôÔ¦a Fûøeð˜}ð€ ™˜™…™Em÷¶›ÿ»»[²½±.‰›ïãN·0åÚÖšÐðb8›(Ì#@YS#Zô}´<!Ž¥Ø!¥ö¾¨ ò¾µÔ �åÛ;[ €ßpí¢¬Ý—ÉñIшî‡~ó7SþÖßú[rîÜyù áG5:¥ßøß?÷çþœ|ô£•¿ÿ÷ÿþÀýp*ø÷WõWåý£$õ¯þÕòcú¾ ïïý=ùñÿq¹|ùrí5еýüÏÿ¼|ö³Ÿ•«W¯ê>öÝßýÝòÃ?üÃévc› ×é_ûkM÷¾¿òWþJñû0^~D#z˜Ûó:GŠÏºØþ0¢½›è‰Xø¸}E?¯¯oªç ðÈSMæá“Á OOO9CØ1'èNG‚A顲Fh•X~ÃHegÛà €z¯GØ}z õ^O|¸»$„·r¼Õòžœšg2÷ *5ÕÛ'õ›iô· *çb ‚Ö<©FÙðý’ Aâ÷–Ù·žÔÞóC†Þï?³ÏJƒ0ÍÛÛ;*´Sáæ ÛÙ€‡¼5¦Ç†l °ÑðBŒ ì“ØÊ @Â_F‡`ß1} ëÃ~±FØÂSÔD8QÅn(— Ö› ~gV1lÇïÕ$6’³¾ÖÏIÜོ†él¿[E¯M›bø${-ëÃúZpŽ5ÎóYük “m§ísû͸`Ö¥.4%¯·ïAè¦bˆSÆøÏ¥Ñ«×ËtÍ«§††Íf¸ó`|s×¶4'|¦¡¥ó!''ÇTyŹJSo$É2†¯†ÏdžÍâÃwîåµe²ØÆ2†ýÍ~LŒ2Ä ;uÞ·ñøÄÂ’¥< € 3ß ìàoÏ)ôÆÆÇUYƒT ÁC@¦ñà c×Dò!a�F x ׯ%”÷(å£?m:ü†ñÁ½èg(>Ù7øŽ`Ö¿ã30¬xü�\ñ:sæŒÞ‹Ï¶Ÿ8O ’`]˜VÄX9‡YgÎMucD#º[òÆÜ`33gŽWÒЋÔÞ»[çœ{·ÞqJõ½žš^a×)5žÔƒªxdð¨sŠÎ¬øÍî/U°œå1Ò¤ «&Ń*‡BôYêêK„çUÚa¯ÜÙïÊæÎ^±—ì7·kû¥×q2UcŒÚ~óûk_•¿ˆÌ�c­nñ &mÊ_O$ÞÀPYJ^†Ñ2MÒhô}”ãùgy›½–¡À6Á+W÷âÄG0hÂ{Oìõ ó)Æ­¿çùœ)xŽB?4•}È}²�5Bñ|5VT&ñ3a¢Ÿê˜íç×”†Œ¥`žMÔ®Et’ú°Ê{YG&1áøïL¹Ú0ÞxT&0Le]W/4ºli8g]©Á–DO�]4 ŒS†;›·$!3v"I1&©NoÈ)x²PÅ,D�!ú£hôÐï�/&MŒ5<ècsWÖö¶eÇ'³z0¡ò‰ïµbÀBú…‚Ì ŒÞ¡@.YZY¥Ñ ãX¦ÃüðÁßÜ|ÑT*Y�ޏ¿iOÁ™ˆ„Òq}ÚrŸ÷ÀSäîüÄùøN¤rwòÞÞŽz+C6R€F®aH4šE#�6Äøa+à(j?ƺ‘>ÜP¤±Óò©öòünG÷SKá\PÛf5á°çYÊ2‰@ ƒ×ݲ(Õl9I�¸4Ô@æË5þ*H?ÒtƲUÙ\Ío3/[¹3f®ËülW.^¾(ï{iJ®__—å;벚ŒÉÎܾ֮½)í1g”]˜•ù¹q×Þ$l­ëÓ°Ÿ~?¤2òuïË0ϼ”TORDHñ9†dh?úuWÅ[ù¡ÎÈT~6²ƒ»à‘4)ÚQRµ¯JŒ~”wàh+@+¿PŸ¥p¬è«¢Íy R—`Ý cV£}f^ÿœÊw9ÏÍškòÔÄ6òŠÞ¡û_¸¹(Ö…W³Ñ”± ÈN©,.LËûžJΞž“…ùI9¾´àŒ2îóÙ³ze?ðà»{û’µ¥ëÎïÉ™éÂi‚åû³¬šº Î3œëÅžnÏ}ë1Á?åaOa¿ƒ‡€Ìy2Ì–[ë»{ë²·¿áxŠ ™žšs×ùhVÍ•²ý¥\Õéì»rv} -Èââu­ñ1Ÿ2qr¶pˆ÷Fo´†55ÕV�×ñ“gåæ­kríÊ+ÒÝXÖ4TëN.ú—¿&¯¾yCž~ꤜ:uÒ« 4kRÂKQmüÕì1L‘ê6ÝWßpæ?z>§£Yã= ìè�4´й¯¼Áþþެ¬,‡sD*i0¡djËÕÕY]óQ¡;uê”|ò[>)7nÜP¹ôØœwü€CT»=¦ßÙÔþÙi¡GcÝC+ ] (àFÆ~«ºMÎQQÞ%÷(ÛpVtÕ£ãøö¬ß‘±¶“™[Ó‰ ¼ˆò9×O_þœØìv”çÑoR&èk5e~lAææçtm�Ø´»·%Û;EŸ`žK³íA¾˜“ié¹)÷ò©Óß•<`êÕ9#‡–@kŸ¶_èö˜83úÔ…ùÅBWä×~§H û@¸½‹ :ì¶|ýëß×^}]žºø”ʤŸýÙÏiä”Rï(UYÞÈ ñ¾a÷ÆâJQ¼×z-ÀbÿüŸÿsù¥_ú%ùÔ§>%ï}ï{åÚµkòÓ?ýÓò¥/}IþößþÛº·­󃌗"U{}*øèQRì<}oþ¨¨”ÌJ>ipmÖ̈ÞÝôÄ�,:ðüuÚ0ìç¹T sÞ¡×'‚ÁtÁ”FÖpÀËi|[[õ!çá˜ð�„LëQj=ó¯%#]wURY ÁÝn®uŠÁØsÔðy È =}õ(Ê)uK5ÅCœjd½þÁø{%_ð0ëvT (y^©SEÀ~g îL۵µS©/ú¡6ѯLÂñ£RĈüÍFp°× DI¥/ĦÈ`9¶ÔÈãH¦ªˆA2¬'Œ|Á:X£4ëo¯åœCßC°fý)œÙºÇ‘$ìoBX0ÆÞöI €ˆ…Iû²Ï°íª*xò"r‹½Æþn×ÛI!Ó>×¶‹bøïó}æCLÂs‰Ê3?¿[áÙeÔ•~žÃ½¨!ˆ@ð§!ݧïÐWæŽm;癥–Ö¯™²?ÑÖÅ×¹!÷ªüá¼³Ño$dêŠ=à/øì@!¿! %’Y7vM¼õÖ[šÒƒ OzqYO‚øÏˆQ(Ø€.P”K¨‡û ê^üFE×*ÀrTº0= ÊP”‰±`¹¸õ‚§Ò‚°Î Löa:\ƒ9‚úè…g1uŠ–ƒ~#àbD#ºWR¥f0*ey²gûˆYß+:™‚@ùwÁÖnOÖ7vd¿ÓU#! 0y†>¹–¸.c¾Ã×§ÞØ–4Œp&¥ŽÐó ¾!ú6«†$¤‘ÃF;â^“…zÔQ¦©,zâñ UcÛ9°ýåy¨J.ˆWV<¤!ë—`UFðJ¤<›,Ï`ëkyŒ8‘ï×Þ€ò´F£ª F3+úÑ6¥F ‹kn'wìuÔ)u:“SÍ ïiš2òB�è†éÆçµöcðhÕ1FÅu!«„¢Ï“ÀsvûEŸ‚ú‰7Z%D¡Å¸E£oýh=ØD/Рª´×rœ»íþNa¯F½ú];©Œ7D&eÄã^s‡UHaˆ&H¤ò—`ýÊל†½Ä/\ítÌ«ÌÍ^׃¶÷ÅG¶@$ ð˜MíKQ^¥òªûPðÝB¾ðcs°â¦Œw@$!ªÊòwY‰Ÿ™ª§oÖ0#¶èjŒé:jµš<,B¾«¼^Ž$?éýwÑÀ:¹¬ÊO…yŸ°Îë5©PˆþÖ—ñ‰1yïûædsc[=ÎoÝxb\dwÖ¶åØÀ˜N¦psuÚµ5Ÿ–´é l«ë²³»'+·Û²xlV¦g&Ô8•š½$m´Ýµãîö]yXVã9 l<\ëÇ׌…_MÇë̺¶Éõ¹ëºÖ/ÚǼÛìN~9 Ia#Ã×s|í£#“FÒ ¥áÖÈOŒ–95ÑTg‹§.^çŸ9'§–fÄÙŠåü¹Srñây9vlA¯§ÃtDŒ² Þš }’¾s©®ý–¿ðg[`ó%ûò±œE#{ÛÕñ¸ÛŸçÔÓ~oGnß¹®Qª&'\[Æ'B$«ÒQAù˜}Ýg¢ýŽ×yéÙ�(<øÇ'µmLáPÊÂÙ¼ I0h{ùôĉ³2=5/Ûë˲~ûŠÊ=Ýým•~ó‹ë"_üºœ<± O]8-KÇæPïÓæÿ”ÖŽó»‘êxÀ#Ü¥º‚©©I=ó®¾uEnß^V>2$äbü…œ ™ÎçΓ n�ÌÃï0/¹W7ª‡ صŒ4š>…‚9–yÁ‡¨ZIØû¥ä-4C®Sïx†3¡� ¸9Ûítõ7”µß3R¶6dÎÉÿó ‹n5•/‡£ d¤~‹#pÞ]§n-Mê kHÁU»pâØW1†br+'­@ê ypÙ‡ó–Dz:ª¬ø êf•`ðúVOÊýÊó<­Šs^Øñ·Ýj¼M{÷ˆž$Âùôµ¯}C>ò‘ÈìÜŒ~¿±±)¿ò+¿"þð‡ƒ ÃŸg{{ûŽw]Öˆ*˜pp:}úTQÖ€]››[IKpZºsÇó³³s!u{ûÀz¢Œ/~ñ‹òë¿þëòÇþØ“OúÓÅy‰zÿ¥¿ô—ô÷}ìcºÆ çC=Qw:;©{fÝšAtrD™ÚÚÚÔ=aiiQ£Ôz~G^~ùZGDà…î’ ÎhD#Ñ»—ž€ÅÛ·u£»õìdžtvvF_0¬PãÒ‡—ïÛL[•ÒÕx' ²z<—>«T%bž^~–(ÔĘz Žê”Úu u ç Ø£ß–UþÍk/ ‘ç¥5l3š¤@¿7Œ¨G¯ U ¥q”ј¢ÂFˆ  ÓhضdžYÀûžmæ÷DÃÒ�j¼C• ¶Ï* I4"Ûhq´«$/ö•Ƀ˜B¯·Æ|•#lÿÄÊ-+„ÇÑTlÛ8¼×F+!ÅÑXŽMåc³Ñ8¬’ÂŽûÚeXoÌô˶$•{­²¿\‡Þ(ƒ(ÈÝóŠ+x¡p¾qÜËõžeûßS]PÁvÑï ýðl¯˜ 1Oäh†‚aTlŠÇÜöW•üBWOînO÷C¤3‚¢Ä@Tô‡ –‡õƒ¨Pø€$¹íöòL’ Bk\s̰³ß¸Gâ uËÏ>%‰ß›rÇ÷5¨2"DÀË{“miÙ\/já|æþ³kÀ”€ʆàÈÌUËT>LB ç•¼L/Åßéµb O#ÑÝSnþM*t€=ð“qÎe×ñR+Ûû²±‹4^{¢gy~¨ZÜ6m4({Þ×ñ' ~V_o}—åר‹¸7ô` yدò,¯)Ó{Ãeýl Þ¤¬ŸU¹ ³Of”R1â‹Dž¬ÖSå³Ü ?äß&,•¼Q½M, Öy5¼(úå^!ºiØ9‚ç0BÔ8Ò­!zEÓ§*¡1IŸgëk©¦ÍþçÌ×+/aÁ.ìÝ„�ôQß÷-ÓºT W‘ƒ@‰à›ÓËÕðo�”„²Åœwþ;zÓºz`K�~ÃÜïYþ׃A’ð<t¨W\çÔ2Úñ0Ä”à 7Ò� �ÿÊBË‚!†5,z>šF/A ”~�XÙ#¤”)# ”ç3 ÖØ_7 ØþbŒñ)ÉlÿýAˆÕ:Þ…ÀÏ{¯n Ø2óL’ŠìRÊwGã™°l|Ÿ\ŽÁP/íS©—e\‹yðT%?ìä˜^&ãàá//ÈÊíÙÛÙ’µõÇ/ˆL8æ$ŽgL½×wÛñ­I§è=1'iã-§ØÝÒPñàÚ«®ŒÅ9õFFz$åµ1mzˆŠ"•t]g^N†l;Œg©“74ÊGî#ÀÍNO`»1…­@s†¼WÝat7ÞöÊ3ßž©÷ó¬œûhò'É‘Èi% º…Dì‰ybé Æáÿ¸|üçà<??'O?}Á½_Д ÊyàÙù66ºdñÔHÖ5½9kϸ$€Šr[}žuîŸ]¤Ó£#-€suypa~ÉÕw‘úpÝíË’nh1­{ ÖÔþþnà'!½F¢Fã±öD0¼¶ÍÞéëŸ=Wì`a)MË(¹ø_P›¤nÿ™žžÕ×ɳOë>½¾üºÜY¾.»›wÔ|óæŠ,ß^ÕýçÜ™Sr|é˜OßY¤:ñû3û´[ ï“'™¼.ëîT°Ê™ãYy|Ì;œ8qBŒÜV}§OïY´=ÖVuKü›~±™°¨µ*øÈ0ƒÄÏÿ$Èðe$zò—ä!‚°F°tûOùŒ~�SìûhS¿ë¸: ž� à©é†kÓœ“ƒÇÝ\Ÿ’©Éq÷9)ø /K°>ƒ”ùMBïóRׂ¨éÌ ‘¾¶ÝºÛ–­íMui«~f\ד]S5¥ÊÁc6¨û° Q:lð;‚h°–ÇÆ¦Hãu Í‚·É  ‹]Ã¥,Ô‚þåqØÊGôŽ&ìÏ<óŒ¼úê«ríúõ`ñ¹Ïý;];ˆàú­_þåÿ"¿ð ¿P¤¸ÅYû'þÄ×])?ÿù_q÷~NßÃ1 º5FÚ½úêkò“?ùSz?æ2�ßömß&ŸøÄG\exö+¯¼¢ú8€>¬~�³û±Óç¡NˆjñÙÏþùÆ7^.tpŸøÄ'ä3Ÿù}….’kÀ«_þå_–ÿøÿ“žyø “ø?¤iJnÞ¼%?ú£Q¾ïû¾OËýèG?"?øƒXF4¢hDïnzb�HB¥÷ öÆ|€*r+ŽÏ+%†—QÞ®FÇð†55bC —¤²×*–í‹÷ÓÐ`=Æ3cˆ¶Ï©câÉ€äÅ+÷bà€­KœêFúÁ>0Þæ¦Œ¸}ääë"#¤&ª€}vLqßÑŸEžªìK ‚°Æ–B9’”&¬Aß^Kbyô6·ßñ/¼$ aß1 ë{ïÚ:³-ñx3úG-"îkаý@´/Í"dt¿Ò¶ ¾·‘/ìóí8Åà–]g g?ؾ·ce¯ŸS·ð= Î6leh€m°s‰ ›j¿Š ´¥§ y[xÅÓØX˃ZM}O¯K¾$<·Œš‚ëàámàU±¢Tø43yáùçÓ‡T3ÿY*Øö/ $ô>¨BA.! ê9B‹z¥Q£ ¢QËÌ|A€7憇 ç#ÙÏØƒQ®e_0]ú”{,ßpþ3ê Ê…°ÄhÜßY.û€ ‚^°ïCðC]ÐVlx6£æ  *J ˜â>^ËT/l?½Py‡{<Èî5` œè~¨0C¯K£¹ÿ a²·÷z²¾Û•ŽzPû”ei±–㟴ÜèÜãÚäoñ¾SìÙuJÒ`¬H‚÷ZVH|H]:áöóáÞøÃ”Iš«Ô§ H ÙÂ/4ƒŠò0îš,)ÂçA9­Æ¬<�-B¿5 ÏÁûIØãí9HƒŒïg6=ämd0šûã‚äb= qimßÖŒÊYó µI·¯Ï5}þmí©ç“!ý^Ô›à}@RxUk$ ý!€4 ü8ür“Ñšr½! ý“ûqÓgäaþ&fjûxˆiZ¾O|j“žßÏÂü }˜ÀÈ[ ÛMLú=M,8¢¤¢íÑ<³×¥i ¾ˆÆ0MÌÜæŸ¦(ÿѧø@J.D‡ÓÉ{Ê«xùÁ�iòÜx–Ê|oèȤŒV–WYC!’Hb7 9ÄŠ}Dè0E2C–‰áùcYå$/‹çäá˜~Î!G'»†c¾Öóž~<‘N¡¦!4ºÀ[€y¡ø]“ùÜ)±gå}/ÍÊæú¦¼ñæ5YßÚpÊíug<;éÖS²·»¡½ßv}õ ÏÊÎö®\½zËñ&Û²¾¶ª vôãÉãó*óNNàѽ§!Ëó»1|–€´QAÂá='åðòüo1‚EBãÚÝQ±ö‹îfY<œ%TKºFòz�uöŒ©“‘$ =£‹ØŽµã£†â8ubNNž\ÒH-ùÀÓröŒ÷®}þ¹ó ¾V€‘ÊVÍJ$P¼‡lþn¤Õ(‡uu³ïýú•§€êõUу}Èrîý~·£íð»µm”žñLo‹¨CyØ“›îê7zêÅPEo§§©žÐ¦ù¹%צùèƒÄug¾ILªeðl-eá²ÎþzM«pñ™]º(›wÞÛË·dk}YúÝ]¹qkUVV75’Å™SÇeé8R@N²uuâ?êEúøeÒ»£Tõp&Cd“gž¹¬ÞÔŒ¸HÙѦ€±ïùÜ‚Šá(#µå9à\ º0 ŽAG´tš†&€8;îÜé¨üÛUEÓêi´Ϫþd`)iµg¤Ùòú¶–Ó…4TNO‹Ï͆çíË”žñ:šÁ^AÊÔìÐã"‘ÒI%|“xG€¦§f(ÔéîëzCšÝ½ŸzÈñüäÓ¨ ÒûYžŽZü§|Æ åCo€1ÄXÚH¥u|Î@ëâqш�=ÿüóòë¿öòê+¯ÈÓO_ÒyöoþÍ¿‘ïú®ï*öL½—_~E~îç~Nž}öù‘ùS:Çê§þ±üÝ¿ûÿ’¿ówþŸ Føÿâ_È‹/¾(ßû½ß£Q,þé?ý§êôÂzøÿÇÿ·‚ÃþüŸÿójÃù¹Ÿû÷ò¹û9wî?pNCŸ‡(à —‹éãÿxq� _ûÚïÊõ_ý°ê ¿ð…/È¿ü—ÿJ.]zJ>ô¡Ji/yíµ×ägößÊ?øAùÎïüNbñ?ñä_ý«Ÿ‘¿øT¯£òGôÏkt‹hD#шž€•‡²aÈœžžRã^ô¦¦a 9@ ÊÏÌ×ÖÖ5„=òöÑ» Œ/ ްÕÀt0eƒl` Ûý!!¶cÁß ÂÙ!š¿X¹WGqXè²æ,·N(/˧‚C›�o ´ß{,¤˜Œö{<ƒhî:¡‘\h¼äx0‡-›Æb>­È ¯±šÏb$“8·©5ø3ê(ŽL×'án !Œäaëcö~ö‹ØHü+Ø|—‘ bàèaÇ0VÖÙy<ÔP!ƒ)IHôò§ò€¿W¼3Òjz®EÛÿUPH9×b¼)ìb?Áœð^ i!áRögí4÷}òÝÍÁ+ý¼a ÆúN§ç _ýl ÃÖòƒPzÖ)Õê¾S£¿«ãÞþž†ÑTOX‡à”ýE&ï$XuãuüÔSO©0ÅÏhy®\ü†¿@•cžCÀ©4l”"Ž^ŒPÁ5Ît ®#>ç>àɦÝÁ ÏÅ ×Á[‚×êÅ|Î$†Ä8ÀÁ¾â^ÁuG€Þã¾¢ïÃ~dW#ѽMø…á)O¼6ü+“Ý®¬níËÖ~O#Wäa"ØÀkú*3Ëu^î)(Ìßd¸!ŽÏ÷kœ¯2¨{‰ÏÑa¼zf$@šP‚6Ó[ê*æ€`Ï*¥Ÿõ¬Í¤r7“±(¢Qb £ñbð¼„Q¼‘–ÀÅø\o€E˜áÊsRX`ª÷ ‹úò€s¿Ÿ©œ¥Þ;}е-;á+÷ÿЬ¬2âYHSCEs¸ ó²Ò³4¯Oô÷rL|D‡¼0 j_„ªhªœ•òã#~h„Ì·‰¾ÑÎÆ­Fƒ<—ÂHV(¸‹öÕƒ+’ƒæ-ù5 ˆºÆ’TQíSôZ_×lž5€&Cˆ�¶çGhnZ1ž–üeý«Œh‘éº6cL”Šäò(4ö˜o8Çcª®åáÑÏLW A#Ö<¬ ±ñ¢¯ÃD|[÷²Œj¦ÿ&%€h¯ë”Ð[²½ëø—)gð™˜T�Å®ã!®\¹áþ:~¤±äæö¶F¼¸}gCÀë<÷Ü%åW®\yK6Ýþ}å­eå3çæ<àslOÙKî‹bÞ®üÌýS‚1_‚ñÍó·i̓Ëý‰ýãÁÏs�XTÆëî+­=zï·¿£(“Úk"¼J…öîÃtwS¯{ù­×÷Ž&SÓréâ 9¶0+K Óòþ÷]’§/?%'NÌËüܬÎû]•Ïxþ± ØGb†ê™X/wò,±�G;âûé9ŸP…OÛÑQùŸoÝÙÒ¿œã“zýž÷êÏ=  Šnσì¡_‘Úg7ÚzÍ.¼ìw¶Ü½ûêqëah?J?'E›ê~«ò �Nø[· ›MM½ ÓÇ.ÈúÊ Y»ý–l¯ß’®“¯ß¼#wV×eñƬcNž<æö+€ØS©ž­ï^²N;‡S˜?A€9~ñâS ò/™ÉPžÕ“€ø¹—ŒheÌ’w�˜QÀ+t8�àƒ¾ê3úÊ_¦)÷ëLc� =MÐxJ£ä)›©‘=ÿ6¼îLAPB¹#)x‚=<Üêî)æÑç©ç›tg¯wÖó€ ¬;´uEÄ8È Ú�ì/’HAp+Ô2Շף´*u8†ù°ýºfÝòû¡шH˜Sˆ�”_ø­/ÊG?öQM­h ßýÝß­`Òk¯½ªgì·|Ë·8ÝÞEýé:þäŸü“îúërýúuuú}¿ï÷¹}ë‚ÎoDޏzõª^‹g íÈw}×§åñôÙ7®ßÐ4ÂW®\qz·‡Öõ°ßÉê«_ýª&mtòä ׎_”ßrí{ÿû_,öK¬×7ß¼¢×|úÓß)çÏŸÓ÷¿÷÷þ^ùÿàºJèìðû… çeD#шF4"а Ñ a"çœð …Á×G+ 'Œi�Vܾ½¢LAi´M]×Ñ(K¯mp­0aBCh‘çÁc±|ƒÆ+,Å‘î—bá«þ»dÀP]*†«Ê›ŠÂ*üµ=Æ£hWk•à¸Ä@”RÐÈ+@['~GI°†Ö›@ ŽeÕœ D¤(=üʱ°iJâH¶þ6wº{Xï~ÞgÛÎùWìµüݦ ¡áØ‚BøSbp<b3wbǽ�Àòlû¬!¸Îð`ËŠ[;—,‚íò9ÿªsÍÒ ’HŠ1á81mC3„>‡³�Â*ïÀFÓ$lñ>å»×Vâk´yo)4ûû=¸J ?¯r}…”Î,Šg›J¦n-r|Ø7÷«�µýb÷û¾Óéª@( ‡*ì˜CñÁõf×]<‡³¨]øíâÅ‹ B öSÍ!¯¡1½â ›nƒk¿8{pÚ嫆GuãaÁxßl8r»7ñìg” d<΀1�®�ðƒuÀ5Œ\{ñ=£oXà“*mLêöë`÷*_ø|‚}F4¢{¦bÝy•¹‚Õ‚=§@EÔŠ}§Àßwk¿çL ÷j�‡"5ña®³þQ˜©Ä=ë®/½g«õ,•ïö'5´K¤( ÷€)öw<øì: �[•FÙ)"Õ¢šã99€²=oÐ|ïñ}W%xú ûåsô,4‰Aåõž‡â¹S¹?/S©g‰Ùócž¨®]ö{ò²Z§Ú§\ í }Ú²gq(#-ŒP䑲*Àó£‘s“Àc=ãƒ7o×í•H g–5¢Ù=4ªJÎc3Çr©ñ`÷Ž4"è9¡gEV*ó1nø”[£| 0Èäaó–¾ n0ǹ$Õ”!i0.$¢ýe%@$÷g.¾Cš?ÀÂ�yâ¹LÞŠ¼-�BeôŠP¦0‹osµ/Å ÂXöÀtn4ªë8 ` +Sxoq\ëû“yÞ‡ª|j¢)B2öÈ=Q¼ßäfÐÑIÈC¦Á+WÔ(55Ó”7߸.[›S2=3+[ÓcÎО¤)—Ÿ¾èö\ðà ÜX;~Õ±i²¶/[xÃð“ÊÓO?¥ãyêÔ†,/ßö)!æç½¡ëþeHö×ÀÞöá,ŒS+‚ÏeÊ[†½ÑGRò�‹™™ IÑg÷FÅÌ}øS· aƯî=ÊõG)ëÀ==œŸ=7–7ïµN\¯‡_Srˆñÿ؇Þ''—äŒ3Êô›Þ#‹Çd~vZfç¦*Ñ"½LW:Q0šCby|<ËYñ{ü—&iÐìãÒáA<�½`EOå§­íÙXw/'\¿Ó•ÛwnÊÞnׯžÛ³ €xâ=ö[Þ`›*˜2i³Æø>¦`Š©Éiõ¬ßÛßqÏÝÖt�𪟟RoüPÛCÇnøïVÇ#°•¼cA6šœ¼,óÇNÊöÆmY¹uUÖn_wý Åª¬®l9cÙ9qrAÁsóSE=uõ?8ÕVM[î•Z¥ j6ï,kJNÈœÆD!s‚¬ÍR<ÎVOåyèÀûö3(#kvºˆØÛóàÖ$ Ž$Nno9¸íO4MªÎㆂ°ß[‡—$-£Î‘Ö?ågÏë4Òf8÷ÙP€ä<CÖ "X¦‰÷6R!ËFM ]ÐD6UDÐÈ{»®OÖ4=O{l»ãAo×Ó~³Ñ)˜²§Ý†Žc2¤‡õ`FDZãäy³¼èû럽u{ÙˆFô hl¬-ßôáËÿï'ÒÙCîÈ¿ûwÿN>ô¡ɹsg+×!}z ’FÊì-««« nÀzZX˜/~·i76|úÞ3gΩ“.\¸ —/?-O=õ”loí­#öA<ëÍ7ßÔ(ã(×¢T0Ò-ô€xOò<çŒ{þzEŸ-œ§P?€%þ<DÄ èí¸Ö°Ž§¦¦eD#шF4"Ò°ÀˆCSÖz®4ŽÎtâà|ùå—\¡ÂEÇà °FîŒÊiOb`„U`2‚Þ«RËñÆônÖ0ÀR*¤eêM-1L)zÕ!šc¦Û°­qÑ‚,Õ)oê|*ûÁ$1ÚƒÍÃG…°âïm=càŸA% ¿³^í֘βmŠ ,uÆ_¢Ï v°ãÂv‚0Æ ü§?î;®¬7#h°ï ¬°í°` ôà5qÿÇ}d¯³u·åØ2ì}øžà!¶ÍzÜ[ Ÿ?—åØñµ¿ÙßY?–×7n S*°Ì2bD£b²ŠúT€ká}ƒõ911¦�‹8`#Žž¢ÁÈ{[ ={µÇŠç3¼5L|Ï)ÒàiHƒ”¶YJoj.5;žå˜ï }ç•=kóö´ƒkÖÇ~æ‡2aûP÷<\‹¶Q‰C` È_tôJC£ý^Ç0¯‚”ØN*¸B FôòÀox&Óh`¼!œ1•öR;!ÐüÁùŠ2rÀµö¹È ‰så`^0 çç=×*rÜB8<sæŒæ¸eÔ ?ìžC€ Á;¨ƒÂp¶p΢m|”“в‰Ô,€>ÈJ0¢'†8ÿ`ÈóJÂÌÜž¶ÓMdc·§€ ¤ѹœ#L¾7*«Wö†{×½ù¡ÊðaFžø÷¬fö¿fJ B¸¯â][T#ͤÐ+Òòeñ94¬®Ê^£î,³åTÒ-„Pÿø‘{OáÄJkž¹º?EÞƒ|~Ñ ×Më—|™=òâHо)ø¨,7 L?HTgûe1Tq†ê Æ8êHjFc>À{$ÞxNs=üô÷°wjtñó”Ï °WPOZæ G•ÑçZd�¡îΆ˜IÖ¤ç¯CßËa>å4í& àA4“^OKÛ&S~<ÇÙÖ˜Š~Ï7x�ÊàXøÊø±">BCk'ioˆ"ÀEû ÞÒR#XV*ƒ<E,Oè‘z0QÁ—…º”Kðá*ïQ'*.q¦óü/eŸ¼Vñïmý¥hGÝX^ ¼Ì½·˜u 5á·˜eÁjÉ:ejl‚÷P6'òú+×dùæ¶´×&Ár^ÚãmÇ«º¶ô÷uO†™)i¥ÒÎrcùŽ»BæfÉ^Çõ[×ÿ~áü YZšqüD"·W¶ÝœØ7sôpCÔa}vÐ5~þd:–[÷årµw°æg¦=$¼îAu‰#3Ô‘ÈýÙZß!t`3£¡¯YÍwuïï¥/V6áÙSòìås219¡†”ßw^ÍÈÄø¤ÌÎŒ»ë¬.ªÛñ©Á<¿Nð´màAg},ÿÄ׿¹Ù/¥ìK+7ã=x)È,>¡“—»=MS»¹±£©z6·ð[GöÝ÷_ýŽ}©“Ûn_“‰”¡ÕÓB‡àÏõ:îG:ˆqéö:*wíìºçm"uá¦þ659£ér!ÀÕœ÷Zf£v<ø·ˆZ•g†Í*àJ2ŒÔÐ4=#“ÎØ4»pB6Ohñ¦¬ß¾æö¦}¹y뎬®mÊÕ·n;ùk\–ŽÏËéÓKú>y(‹3‘{_ôw1°:nG¾MÁ4wCjøëuÔY#MÛ t HÏ^SÇŸØ÷6Êd�a­¡Ÿu´LèC�^�8ñ¾äP:Ÿ(ˆ×pþ¦V÷’„ˆc¯IJ (Ä+?§öœÎ²Ê+Vr€|Ô)9´ï,?0ì\²{?À„5€@M«k·e{gS×¢X  õž>ªËT¡?i6ÛF•Gk*x¾ÕÁÛ§b}–ý>I’wÅY7¢GGøàKòÓ?3%¿ù›¿)ŸÿüçåÇ~ìÇ®a4XDû&]¹ò¦®¤âÀo8/oܸ!ÇŽù4ׯ_+ÒßBˆýå£ý¨¼øâ úÝæ¦;Û6¶ää©ãòõ¯}chý /\¾|Y~ã7~C¾ô¥/É·}Û·r1ž÷wþÎßÑ´#—.]Òµ¹¼¼\Ü»··¯öÜouÚ�!Ýê  ô†X†ˆ¨'«:[ɈF4¢hD '`qüøR0Zy ƒˆ=ùЋTþ$TÖ<†7(ÄàMg<Ñ÷ ° |4„9Pä±¶X2 Î ãð¾Oo@¯Ik(f=â0¾"RIk0,¬`,XÅŒ¹UØÇí®gäÒRJs,¬±lÈi„¥‘B»}†UîРoÛ{ë[c¼˜~³B‰}ËA],ˆÄ–C#* ¬; ì|®mÄL…UÅm/Ò'0…ýküžamm?؈ì‡ØX“U¼fKÀŸÅgðž8$ú±¶ Sö­³6ÅB*ïµã˜DsŠýBp ëÅ( 9 …N†ÄëÞ8â_š½#c¨lï嚈÷¼³ $6ò[Ãã�CÍ0žP"øåeHÊ4xê7¡O|ºf怱,EjŒàù/&MEání÷ 1ÚQ¤ª¢Šû×d%CÄôcê?'Ro<´s‡ýÉõ¡Ÿs¯F(ô½½UÎlo免Ð?3Q(+hps^ØõÉ5… =‰}ÅDJÿæ*±.^8 9” # À ¼¸çáz*0ðL\‡}:öv… acqçÎtk¡è„0Åvá/ž à…Ï{êç3¢Và^Ü`¹¸Èx}Ðg¸÷ÛºpÍíÂŽ¯åúÁgÖ×úÈ!>í Ó—às~7š»HÊý8Ñ7VºAAr�»)Ú   «kø þ»ÜyͰªÎÚ+Ksî™ÌÄ0�Ѝ‚#J;# ÿRî‹ño5úüÜx­K¬@΂Ñ‹4)Ìí0 #ïóô ÃhWïk9%5œ¥± ‘g? è;o“È‚‚àðo()j�{Aßós S“…:¥îª æ®,m[Ï+žôl·^ú®�4àÑéSØ3ׯÇ+!„ºˆ^—áy9ËèûHA‰Ï¡^(´“²»Ò¤z¾Ô6x¨±Ù á•ãA"±|h*4h$¡ßñòF´�°žiž‡ˆ }Oƒ¿÷ãíø7u¯ÌµïJåx8gòÀ‰_’´¬(ÝZñ7(ôµœÌ§ÛÀüVƒÀ”}i¢øHR©ü\¯Àbë”ÜeÔožÓ�+ÁP_ðÛ¹˜SÎi‹ÄœýI€c&/ɺn~¤¾_Ý<Í ãú·2Ûö’á`ÿê*ÊÊþÎóÒcËýû¾ÖŸãÝHy˜š{F²bô,ðÐøÌs:–ªü±”ó]â4tø7-®©#öƒ‚¤ädÆâ�²üíðßYO½Rû•ÆK€„ð¹ßC´®]9áäØS'Ë­›wä•—¯ÊÕ7Ödjö˜ÌÎÏj$ ˆV~ÕˆœX:&ÇægäÕW¯Ê­kWdÂ7g⺩üdžîESÎ ÖĺmVú­4ºŠ©=/z$2ë÷âÜÈ)Gç[�°˜.×µ¡£a¨§…¯ «1—[þð¦ï� 3Švý]õû`!•~#nËŸg¯µò˜nÝ®€ƒŒÐþò:–¾ß¿ÂFÐs—ÏÈ'>ò~9{ö¸¼÷ù§Ü¼_T |{³™`4ä>o¬EtADyáZlv¹—²-1¥[’—¼ ï*örƒÉø½!ï!²Ÿ39ýÍ®3F£~ûnŸÚØÞ“õµ Yßè:y¥Îo¤pèÉÍ;YÙÈdsgÌÉ §ÅCèPÝKíþ{”ñÇým¤'hµÕè ïyì™vvn¹}"U Åää´ǵ\Õžf¶¬ ÈçG!Ü3>1¥Þýs Ç¥{é}ÎH¶*·ßú]×W+²·êd°ÕDnÝ^‘+Woʹ³'åÂÙEzÄA‚î«Þ˜õ8ÈDuFîa¯ñöxKõnõ„hsšÒ¯ßSD¯×Q ÿþöêÙXꦲ"²‚¤¹¯ó7Ë÷•§kµó5Ñ;(4šmås¼ÓHÖÒàÀÐ,ô` ò3¿sþ*Ÿ˜¦•ïÉÇ×G}Æ3ÈîC¦ç|d‡!û‘‚û/ ëü˜)ÿ.BP‡çGëô’ìK%s¯ˆb¡ú^WÆôÔ|áXƒºaýù(û…cŠ×Ô§þ6æw3§m=+ß½ýËbDïx*ÏT¤¢ûð‡?,ŸýìgÕÎò¡}@×Ï ÷¼ç=òK¿ôyùÜç>§ûöšÿéúŸì�û Ö"Àþóþ/äðËúú†üò/ÿJ‘š‘Ç?ó™ÏÈ?ü‡ÿPþÌŸùÓò ¿ðŸäöíeùãü»ó¤©�°7ß|CSŒX;öš—^zI¾ò•¯ÈOýÔOÉÍ›7åÙgŸUÞOÿôO«Îð}ï{Ÿ®Ç÷¿ÿý…ãòågÜë’üçÿüŸÕë#ùH‘Ö™QkŸzê)]ß?ó3ÿZ¾ç{¾GŸýì¿vmú–ú9h’тѻ‡òÊ»ÑÜшêè‰Xx柂«'ËÈRáCD!×àqã …rƸ›7oËÍ·4|Ult®ÿŇc…ÁzÏG¯€²FBi õÞI3/¨àY`Zâž E*Ö­gw Š Ý‹ iÁ à ½E_F÷Y§4Á~´B Aà‹HlÜ/û5x‡†2iÜeŸ@Y"Ÿi0è]oÄq„ÖcÂ÷ŒŠ÷L«Á4xOp쬯õ²#È€u±e{†¬*�Û¾§ÁÕö—{ œ òÒZ(üÕ ìúŠÍFÔ°a>ƒdßÛT¬ûÔÖA"Ñ-ìœbý-°¤œ?©š¼"ÚÏ<„äg;W4¥z4I¡Dò{@ªk{rrB¹ñ¾WY£ÑpØàÃþ€D£é#&Ä*8&ûBsG¶­VX¯§#¬Õp«5‚”†„ª â°oY¶¹×íËfH_=/F\€1Ÿõµ‚‹ýŽcm•¶6 Ke_Jê[ÉqÆ>‹2$g;©}Žya†yAølû÷áZ(e ŒÀž ¡Š×ÑÏ+¼ÎÝ_\e$ÊG” €.P€ð4Ì›“'O*¨åá‚3ìмá!.ê�ÁŒë‰Â#®cÚ\å Êç=ðPwö®µéJìXŒhDwKí±q™˜™×Ü© :ãså}R~R.)©^…ýµÛsŠÄ¤%¥>€”ϲ{B�6Ò˜\§�=Ð2V_©{EJÓ^Ö0ˆöX[Ïæ„inn^Cøú¨HYå|QÑmÉ@¢8“ðÜà}ª{ARðÊ“„sÔ[PCª‚�ˆÄEð:Ä>d’ ´Ü›ûs ^ziÑö,üÇ8jíNÕò-½¼ëŒ?$às\§ÕNKLÔñ“܃±¯Å¡TÙ¯Î×¼·´Î{�À° #ðoø-(4Ú…”<#Ši$! ŒËý²8OÊ~íC}xR‚+ó1)j •¯-GªuOo¡æ_͇ã•÷-7~ 'N)`&^8CæçeÍ)Ëg 3®¤ñ#M¿H EE.¥¢X3”SI’ADž÷¤Še»fì÷•Ï•ïüÊÂÙŒ³ðaùq‚€´À¹ˆïpz^Ý@y=•¼– p–À[KrõÆòß±A9Ô,åó± î×C{`*Ö°™$4tboIuL•oXËdg»'3³ãrîÂiyú™‹òò˯Ëëo\—·Þ\‘ñé¹té¼taÑùpöÌY·VÏÉ«¯¿.¯¼zE^ù†´Æ—äÒ…SއßÝQÐqÃÈ#o¶÷ GŠ1|å>ÂJuïh”©}Ú­3Ÿ£*TÔ©î–¨”@‹·›*ò`¢óäõÑ`ê)&„o³ÆÖ: ü‰‰qùžïxIÊŸ9sJ^|ß³23=R ´ >YÁw)À%˜eœ–$P§ÃÜï’¢š‚3I½ü;ˆ±WO÷ö»²±¹-+«[rÛ½¶\=76®{ A€+k]yùÍ'ºõ—¸ó‘+ò %z”*¸áà±ñ{ ×P7‚>›žžQÝÒæ@ ˲¾±êdDì›…À'ék²N·t¯„zµÇ'elbJ&±lÆñZׯ_—íåo(€ú2¤SY_ß”7¯Ü”KOËù³'Ô"*IWºç}(Œ÷ä]¤~ä:Fú4ÌUïЕ©ƒD©+£S@ç‡3dômU4UE«ºùËÄä¸ò¦ªhú¨ž‡ô€ ¦KÓÁ¨ ñœµýPèW%hoü>nÏÌ»¥žãûYýÙV=ã«!;ÍÓFæt$Xãû>iÐ+jD5a¢¶[cS•ˆ©$Èó¸{ô:ÿ¡Ï˜šÐh<ˆdQ>÷h`*»w×õõÑ÷ðè^¨\/ßüÍ߬`…OúÓªWc„2®!€~è‡þ¨»ægä¯ÿõÿ«ÎID£ø¯ÿë?£ûɉ'õýOüÄ?’ÿî¿ûkröìYe¬«<å ù á/¸ßBþ‡ÿáÿ¡29�øÿ€Fų^xá½òwÿîßUì4–à$õC?ôC ãçþçåŸý³¦úAÔá‡ø‡õ”ñ]ßõ]ZçòOþ‰Ê(ûÏþÙ?+Ï<sY÷ºïýÞï•¿ñ7þ†ü­¿õ—ÿþ¿ÿ¿)¸ã_þË)?þã?®z¹O}ê[åý¡?T‰X<¢hD#‘¥'` ¹½¼2­ž’`4°`� 4|ÙPïP¨"Ðß`˜ßxã 7µ½í•¸hp €T€ÉV'‘TÁ|†…‘м¬Tèƒ)Çám6âèn¼˜+J•è{«øà³ŽÂèóÞØ+^ÛÚá‘«ÝB�aùÖè[†Ä.ŸÉ(+P1iŸÏ´+¼áÿ Z±õ°ã÷-Y#4ƆÑH¶Óœ`_xa˜2íu„-@Á]X.Ûlç¦MBì}ž]رá}˜—ŒFÀˆ(V`&¸‡ãgû‡9x­í‚ƒlÛ÷Æõ#„ß…©Œ»òaÁà&¿A æ(i  ô´Žç[ldà<bÞM®[¼‡!õÀ_‚XÊú–Ê«,»_U`ͺÆ@&^ç'Ö¹„\ª»ûº?ÂðqÂx¡]>¥R:TqÍ9AƒÇ0nã0…IL¼e">C(Â_�€· ¼= 2¨?Æíaôìh Ú…<ŒØ£Q¾C½q-æ¾%\{Î&8¿�„Ã}¯¼òJQOöž‡r! Ñàe žK¯±xì0íÚ¥â…ý‰{ðB9·àyø ucÔŠx,F4¢{¡cK'äù¤¼õ¯ÿ…<â`£:y£¥7ôg,X÷½`H$qo{£¦)1Ï· ÙŠñ‹À`tÆ@%~ÿg>S[æ‹Ï}P~ñ?ÿ{gDÙtFϯx¥jW×,ÁzÐó<KìZ J¦<VÞæ’™l&iâÏO`0ü!M2í4çI4ªˆßÿr)Pœžß(Ú[úÌþklYß^øJ‘#—‚¿A= àºxábm¿¼ô{¾]®þ³Ÿ,yäPŸƒ¨»àŸ2¼¸ú8y”Ž0�Y¯Wéü3U’ÃÀÝ `cðà 4è{#Óuíæ<¢ìRS±Šxð Ù# )<ZÍAÑ�„‘ýÂo}±ønÀˆ—”`šòK߉ Ï·îIñ)Ï«†­qÂW•/ÈúG?,ÐBÿJÿH÷áŒúÀKGAZàÄÄùsyŽÇÆJƒ”ÏUîåæKž“<j•·¶� ¼D¿w׬nå²0Õ—ñö½{ª”>É?¡”<ß«û”«?" íí! M[6¶–åÄÒ¬<ûÜeyñ¥÷Êï~õ5yýõërëú M"É®¬®mÈ•UÇkÌÊS—λyûœ|ýw¿!¯¼~SæfZòòkw¤=vBÆ''ܺÙ=’œËJŸw!G'§Ù÷ÂÖëzÏ麵T¥Ìot¹çó§§'5b’Îëdx=}…l5òbû} NG1¨ñ:Òý¶£NãY¥0¤ä`ƒ:hyùÁmSa¿É“Úç€0þÅ~ðü9y|A^zñ’;oÎ(˜ xÈXÛäË!ÃQ¦CØo(›Þ=P§¬Sõ³TTIÏ#·onîHg¿§)b÷ö÷dùΪܾ³%«;AàŒÕ�dÃÈíó‚)PïÚ­=yãÚ®xçàÓ:{Ä:©£a¥œÈ¹åõΠ;1åä‡]Y߸ãtWðÆ]qûç¬ÌÎÌ+ãaP,’–m°µ¹%;Û;Ž÷“é/ÈäRO¶—¿®2€`++k²¶º.¯¼v]žæŒFµ(Òò–±DDÄÆTɃUù±M÷³6ýÐtó¼t‡ßþ¥#@¯ÛTyócÝë;½^ "R4ÜÞ‡±¶F†Ñ4­f±ö4ýš¦iê|¨NxCÕ°_§ëàoõÀcOf‰à#!prغ³g¯²¹F£Á«³]‰šªÑ)§f|$ŠÆ˜Pw·ÙŸß£À¯2z&t »»;N·qSûxllB¦&§5Oã.RÃX=×”ým)úä1<ûFôΣ~ðƒ‚sìâÅóòÿñOÀ"¬?ý§ÿTEGûþ÷¿¨ k#à>9 ¿´çÕÔäÔ«ÏÍÍÈþè+ÿÍógõêe9§ÿò_þËÅõ1áå9~ðå~àŠ5A]>¯Îñ~àûåû¾ïû„ö/½ô¢üÓúƒÒÔhøÎ¶“å?^~æg~f¶шF4¢Uè‰X¬®m¹³Ò§ÆK/¾$¡®ŒÒ3¤ÖHhÓð;0¸åøñE9Å–|@•ðpèK ñqÐâjDoP±§n«ÐfîNýìê8îw~Æc˜ Ê:ä…AÛ¦{°FN~>ˆÈ [†=šº—Ï°×Æ‚•˜4øÛôVÁÇqAøÐpaëFsõª´s ¼L8n4*Ûh¼}j~¼:•È dy-øÌH6Å£_€8>–ÑbÊ«�¡ÚFuˆ•$q³/ù>´ì¸ò=Á ¶ßQÛÎø:¼Z—‘4hD£gÁ&¼‡‘W%ƒÏ±à•8­ ÛÂuÁzú&W øMëiÂG¢n0NƒY†ÆtæãõmëzU(¶¨T@¡ÐS&u � äæC?ø)Y!D—s8«jsÔ5uÅ�öƒ5ÄÂ6Ç~o·#Û±Ýí¨O€æ&31P‚÷Úˆ+,‹)sø@°NwÛ.ÜO`½¯ ¨à{(Œ˜ž „œ'ð¶F´ F˜£0À0úƒU¬@ä:� š %´ Ö }„=혨v¦ð{=ç ó/¢ãÁ‰QA؇¨7Ç {sËPÁ¨ˆÊAðg¦AÁ ×q¼F4¢{!Óÿèýüö]Þ|ã{Þ—,q-çù`Ä›4µ�Ì4ºçÞžÝLÒ§ÝË5ŠÕ¤Ñ’ì#òÇøÿX[æÇϷ˯}ùóòsÿþ³…-0ˆ«±PÌ~œ— ¯ØÊJ°Gà4"Bû[³´¢7xàŸ¤Œ‹!ApW;ƒM¿pN2¤Ë"£‘íF>#œ¡$Ô=óx¿A±îËÂ>ó-Ÿø½òÒ ¯öWèÓïüƒT¾ñÅ_“×_}5<ÓŸQa`Ëó à‘ž2‹8¥uÒÐPåEŠ­Ôø°¢+ÜomF`âÙB;WfN‰! ýæ_>,Ìt¥¶^NÈC g˜@ˆég.ÈÇ¿ûû¥56èYúÔÅ3òíßþqyó꛺oû¹(QÿId-!*BÂ^æÁIi(DP!ø‚Sò.Öò Ñ±ú™`ìøá<zéý/È·Û‡åQÇ|·O«µ©g,¼´m”7ŸJ +ö•$Õjê¤)HÒŠ7®zçù€ ¾zi�r9yl\ T÷~öbvAÆËýüÍó¢~žWiȵuºåø›uÙ¼¾+SÓ³’õväÖÍu9uzANŸY”÷¾ð¬,ßÚ‘·®ÞtÆßméô{âl“²¾ þã–ãƒçä©Ëå}/¾$7oÜÐü×Ýýu9v꼬ÜÞR#Tãøµ»½žòU)€D´¿''Çe͹9$ïón‹bQìËÕÉò Ô øB@Z�Ò$¹ÇCÏáå:'5¼cÊÇ>ô¬|Û'Þ/—/Ÿ‘K—.(¯K�1ÊľI�;^bŒ­W]DÆÃæÃ0ˆ‚"^ãuœ§;ûˆú°+»;û*÷íììÉæÆŽ[7²æþf®Žã­T&šŠüŒõÝsio¿/_þÚ¦[‹= Ðj'¡Ë†×Óê(+4V‡µ1vp€Q}iñŒtfö5¢ÅVxa[R† D ¸÷³å‚ÚÛßQŠ‘Eu¯sÏìä£ NkÊ—sd}å¦Ü|ó+²ãäTìƒkk«ò«¿¾*_åš¼ðüi9yò„c“ª‘'Ãl9BÄ{Ý7Û÷Ä~„6MŒµå¨EqŽ@î=sæ˜\½ºâÖÓ›2;çútz"8NLèúòÀ ž AzœÒÉêʈ¾VóQq»úœÊðßêúï~ú:Á<—Ú½Bÿ*ø.+Ò£à…ùiS·Û“23M]PKh|õk´ª¤¤ÂËÒÁ/ì3XÛÛ›n_ÙÔ±AZŸiwÆ·[ã”DÃ(ÞŸíµBŽшêˆë‚„yGQ’ðšæ€Z‚â2*ÓR³y¸Éê ûI~½§CëhÛyP›êúdD#шF4¢'`‘k¨<„”íÊØx+ñ*”¨2 ±Q ©¥wSéå„p—‡uáÂy½fss+�.n8Þ^ˆLá Ïû­i €äl4ƒÂÀô{Îp Ÿ– @´J?›rà #ÛAx| … Ë„ƨ[å æ±Gµ5ÂÒÀ©u6†ÙòZ-µ¸Çðc Ëñ@ƒ¬b¸'…F{FR°)X>ˆ†~K©`±à «à©(hŒa™`†JcT œ`$ < ïm¹@Cå“ «K!ئ†‰£X؈T8Û¹cç;ï§ÒŠýCã5Ûg•êŒÔÀ¾·Š ö±)B˜ÒÁFºàs~±J$ÎŲ/DCZúnöÌ+ÞC(SÅë„z‘Ò㉠k*ÌE²Š}ßsœ9/¡†QV|XÍL=Ù. Ð)çAj”!Õô.uëò~„_;ÇIv|Ô,„~ ß퇰–�Tà¯zF¶šÚvôç<•§|Ïh%è+V¬ëûn•Þs>Ñ#� çê@�v~X磊àZ¼8n DÇ è®) ‹ÌõËýã­·ÞÒpøPö\ß±®Q9p?®E?ãÙŒFá•X>Ò ž‹ûøB PF;¹§Ùþ`Ħ3!À„óŠ{Þ£n#Ñýпé£ò£é¯ÈOüÏÿyýµ×Š5t/¤kÊÿ»†¹÷ Ƥðx+|ËsA¬®5½ÇˆÏé7æ fÈCìf«í –ÓòáoúˆüÍ¿ù7å úä¿Õ|±ÿËÿòd}cOß-<K‚çdÒÐ ‚m‡¶JÞÕåY/Wy,|탰Iù$ú @ Ÿ$D# $áü驺[i0Òç‘ñ>aÇÒp”ùTW=9”`oQÂùß–ãK'å|Ï’?ðûÿÈÐ>ÀàþŸþ²üÜOþåõW_qÝé÷º•þ®£ÄÆß݉‰IXh]‚KÓ`K“‹š÷—çJPZçR¤‘ꘄÈú_–çsâól %ÜÝë…-àÛãròÒ%ùŽïÿS2·xbè}ûÈÝÙ²-?÷þ£;îàÒJÝaÁ5i;4t¼¾ó©s†Öév!Þä±]énÍåsò*¯ä¿*ŠÆ691&/¾ÿEù‘ÿÃ÷Ë£"{z…l«8ãqî"ìý8Ri ­Fà1µ…à…²</ÿ‰0ï#¡(OÒÏÔ8É™jÄóy_}³!»Ý†œYLej¢&5Í‘Èa}ýhDýü~Áô.¨Ó„ãÕž¹|V^}åM¹yíY›“ÙùcÒ鯻}'—¹Ùu×nðÃ=7;%[Î |ãúM™˜œs×%rsu]ŽÏíÊÜ̘|ç§>)kë[rõƆ´Ç¦¤åÙ¾<lÊò*À"?Ò U4Y0’‰†¯_ÛDd°*zTv½M•}¯i³%0ã ùâ¾Êó*Ñ€@V.ÔuÔô×ij޾7R"ºÈü¼OË7>ޖ矽$ŸùŽÊùógœlv®àÛ±nÁƒ3ú^ày5Vrp›ø›•;ŽÚÃd1ì¾Xëý̧þØ bÆÖ®ìíwÔIgsc[6Öma_Ï]è’fÜZògo¢<Róø ]CGno$råúžt0>a ;2¼žÆúY9k¸!·¤(–UúÈß_ê±õg|ü”ãöö†kÛ†¬¬x¯úé©9õ¨OŸró€lSÙs{/ ÖET̆àvÈEø‹(6I´xùê²,ž8+Ë×_•Û×^uã±­|ä¦Ïÿ—UwÕïÈéãKrù™³²¸8§:€TS,‘÷á¾úN!vp¢‘;è(t”M…º0ȰÏ>û¬œ=»S|‡±k6« Š*˜b0­úÎ~ÏgØçÕñÜV/P÷}Ýujÿò�…øíiϭ箉,Z8Qu÷ôl‡ó@´©º$ðàK¡Ëm·ÇBŠY:®‰¬!bxʤŒÔgy'ê‰ËîHÌ ×ãì^t/w–wÞÚ*"[`ܰ>g¦Ä@ÓÚ>i|¹É=ò$#шF4¢w25¬þçm¦4y|Ó¸hDo=1� (l!£€ ÝïtewÏ+ƒ²€×þ2ÅAü²Â;¨ ¾Ðõ¹ÄaV½‘oÊ =Ϩá ×Í-YvÆÀõÕ5U‚é‡qÌ>ÊUP…MøçäEŠ à󘺡N¨¹C®5Þßà€ˆ`€$°10mÍ¥ mH¡Ü vlg' A †ñ¢áŸ`‡=r¿D¯Zƒ2Ëcì¸[Aà dàómÛ‡,ÃŽe ’¨4°|¶¿aB”³¾¶TXÆQ1h(¶cɾáÙñ! Ãö¿¹ 0P€`·åÛ¶ðùq_° ÍÅŽ«m‡zÿ´|>б6<3|ÈÅ †Œ-„ÝÒЗŸ|çæÚËϾ?}z>”ÞvR™ƒvžÔ*êÖQ<¯î•캶JO�B  Ô=%¤‚‡'ç.½>µnI¹æ¹‡°1èŶ‹÷p^Öí1w»‡°\¼q/´À(âú@J&Œ">à7~�÷3?;ÚÍß °#šJ(�:a$Q8Ïñ¤A}žþy½×cßæE9øÝz®á~(™6õÀ}Tp¡.hž…¿˜ÃTF¢Þœk(  ÔÛ*L·Õ£« …§!шî–0¿ïûPÞûž÷ÈÏýÛÿ¿|éK_*ÖÏÝR?Ã¹Ö {g?´½2JÃ$�äôß$ö‚“NYðR¯³©Ý>ö‰OÈüáTêA`Ô_úÑ¿.zñSòK¿ú³rõÊUý>—*(L‰WÎB ÅiÀÏž7ò* O¯ã>�• *¥uÜï±Þ“°°›'^Y›…0ûjwLÄáÑ l  ôƒž½ù ð ïõËO?/ßñÍ@¾é›¾éÀ>Ayç/]–?öþ¿È?ÿŸäµ¯}ÅŸÖ+JåòLÈ‹h­’$¨—ƒ¡¼hWP;çå]±]Áþ~*ÎáhÂÏrÀDCÝË4l“Órá™÷Èû?ù2¿tRÒY@!ÿ¿ûžOËÓO_–_ý_C®^½jR÷%µÌÃëa)“­ŒÁ"––NÈ_zZ¾õ[¾EÅ|çA‹0ÞíîìªÂ§àk^ºše"D¥èg%ø4ÑW({x^ºæ2mMÚl»2š…º±º/›;¹œ?±/óSi�üÞMgûy¡ÆKF@K=ÀC4"I?�@Ü~Úqü´3оôÒózÞãëoÊúÚMYYkÉâÒq·Ç µ"­�´*pÿø±¶l­¯Éå+²º>)3 sÒqÆáΈ´´0©†#g—­àRiÈýQ¯«c%åüñü‘o£ò9G’O=Ñ>Ú®]SÎè+ùÚ€|6`Ä»KÛjžÈ=+ÞÉ4LOõ+ nÜÙÏ€ìY86-³3“rúô¢|úÓ–…™Ygè=¯ç'îcZEð¼t|�ÿNž8»az‹ÊóA˜a—×VËg”¦þè+ˆ¢ãþP±åÃöÖžFª€S€kk[‰´Õnêù5>9®‡´O‚Ìåy}šìî'²¾Ý“Û+»îoU¹|/�œx¿;¬„fïçwL#Å~ctxÍOOÎ:ýØ–lmo89MA¥*k»ï[îo öÞHÝ×þ£î@TœwV~¡ÓdÈp^Ï&áü çbУÕî9}þ9wöž—Í•·dõöuÙCŠÄÝMå1oܺ#ËwÖäÄÉcrñÂIY<6¯0A'õ¨éAœã^7æöð6väƒFv=xÏë¶®+ô·ÕGÆ ŠºËñ”ÕðæÕºXG\¯aý0À“Õ´åA}ïö®{íl:ÝȾ0wZîLÇ|ˆé‰�¤µéo«Nwy¥LOMê"¸•}0ØV»Fùœ±ö„¾æçr~ììnk´ã›·®†4"ã291­ëÏ««�˜ÃÀùÛ°F4¢hD–Ž7gd:mËfÞ}hº…£Μ³c ÒJïWºшž,zb�J¹ÍÁK#³÷övU‘åu-ƒön¨’Î Y!˜[aÄ{UÃÉÚ0ôD%xÜ/.“ã'–¤ßõi`ˆƒ÷5 kPœù0Š0H—Ñ pŒhhÌ£qÊDFDfäìŽA0†5x¤¸Š‰¢òQ ­ôÒ& ÁûÉ4Š>,ÜÁãÁ�¬ÑŸ¿±ß­ò‡eá94“b`…5\–cšFV¾·eÇž½1²œéO™ÂçíslˆS‚AâH$’ãúÙÔ¬S‘Ø(¬³-er b`­¯iØß8q»ì÷6’I¡lÀ ÖPÏh4øS9èãPÔLª1k ([ÊPv|Xô–âwì´«Œx’W�L–â9vb¯îžƒ”G%kÈ'øƒ:§,ÜïsË{’yNΤâùëSYƒ=Ç$êÄÊ{]’ônÁ, õ°é?ð ‚,ÐDw@Z|GpS|°Í>BP«cüN ë†ß:¡q„Q+ueŸ:uªH7âs€{0öc>‹û/AD@¹Ì´8P,˜ï+�7ðžÅ½ 1ÎMzõ¡ *,9Þ µ‹z£(¤8у¢ç^x¿¾ž,ºŸõáïýöoÿ”¾)©^š‰Ê5u;auÙZ [¸'>{Š’KÅ®-=?b;ƒ“Ýà÷wy.MÍÎËïùÌÔ×]Q^W¡»¾äᑵß½÷ùKú:ê£Þ ôö©h)>ï”ßs„÷û¤;Gq®B¦ë8)CÏ[1ùm�iA Iô¿™–|b´kƒÔtÇ}W•7V&d¿³%³S ™™Ljy¡zJ*k݃=rõ„÷ Ñ¿íîudc{KŽ9žbaaZ>ðÁ÷Éֿ޼öÆ[ޏ#·nnËŧ.ÉÌÔ´ìl­K¯›ËÔĸ¼ôþ÷ÊÖζ¼öúUÙ\wræm‘ùųšS¾ÝbºüÓ{¨ƒœK™‘|d¸þ÷¬òš1gÌŸžž”ºE˾–8D®}·¤‰©¢' @/R1ÌûTŒ"mM­7)§—feÆý½|鬼ø¾KòܳäÌ™EA¨¯Gñ�mŸ*Ë“ÊqãðÏÒQøØXŸ0ì÷˜œ×W2@OAxitÓÝý»µ¹-;îïÎÎ~!4þcjÌ�|z-Š… "Aøˆ€{û‰|íMÇãoà7'‡ðàÝRl0=:U,+þl©ÇÝ~791£¯^¿ç£ZìnÊí•ùklÌ£›Ð«t¤Óë¸}f?xý»ñnxgŒ/Ö)£ñÕ®³<^¿Ã(©Ÿ¦§ß#§/¼ÇÕiKV®¿ìdÀÛ²»uK×®/;=Úšœ<qLΞ9.‹‹³ x|§zOâ4kûÈí‘1È‚ú{Öñ·ºy4,*‚-¿nl’¤úü: †cG™¿¾¬Ã¯9 YïÊúžÜYßugèž4œ!NÞž‘ñ±©îƒeÅýpÐgêàhwwKù™®ãkîìÞò`4ÝËDEŸuÐsù,mß»ôŒшF4¢w½æ‚ü—Þkò•Þ5}úv€,pþŒõò³/Èt:.#шJzr"Xdý`LôžAåfÃÐmÎP¼»½ýB¹Ða Û-F?Hƒ× IReøÁè–aè(ØøÜ¾>—nª¡êþUº´´èŒx'ÕøãÛêêš êAá rˆ¸Á|•0¨!œËBEµÀF°ˆÁÃŒÀöúƒ ¥¼¦*H•‚—�YVüÙjiP'¨ Ç‹¡,ƒR#Qð…ß³¾Þ˜^/З¥/DY3([;Ù¾*óPÿZp†õÀg=ãþâu6Šý�‚hå÷ÄÓРJ¥o<>4ó¯*€ïhص‘+â(4¶ÛH”BãvœÆÄΖA!žéj 0£7¿^tìt®#rTfN …Ü{fº˜¼BabbÌ)vœ`¢@a5yˆP¡þ®åÒ-,TÖ;ÎFŸ)<ƒg¯dA1ãû ¶1OXÀR¼&bŠöú£áÐWÂðÕ¹zat¨¢Ã¬êIäç5aè¿$ìœã�R¨/`â£WÔ³Š˜£(3‡õÁ½Êaä ¼g*¢6àE@çÀc�Ô°4A½h\a(×á‚tP€¸óà�,vãâÅ‹Z3è}Çþ`*¾àƒù[ñ„{B]ñ—Ï& ×0ÂuŽ€>7DŠÁw( Q6æ*êú°#шê(‰ ¤±oÎ#9èéÕÔñÍà ¨¨³ÞæôqÒ³šîyT€ƒƒÎ¬áçôáÈ ÊG¥ú‘< õ®ûåÇežðܯ“S<ß�¾áw½k[^îKÕà¦ÁÄ&Úƒ¹çYÖA<­ òص)YÙìËÉcZLÀ8æóÐFË ¼”ÐÀä½Ê½Üèå¬f«©<àúÚ®kSOfg¦Ô�÷‘ozQV×ïÈ•7oÈž3„ÎÍÌjY;{êÏÎNËÜ쌼ôâ{|ä‹W_s÷ß’å»rúÌyg Ÿé®»~Û–F“iõ(«(“-LUâÙö|/Ì“á¨-ÛÞÑ„DÓd*À"D° œdùæòo)Ýá¿`qÀsò·G¡ø0éÀÖ´éºM8 û;ñ}®ò,é;HCNXtÆëræô yêüiùà‹—œîbIÏ2?œS¶wºÒ0€`xÔ[¹z˜>¢ÒÞÃÆ/¯»Æ®Éòo‘Üko¯£�t€'™B£U JÅöž‚¶Ýg´¢=ÖRPES½îBºÅ¼tL œŽ””ãеeÞ­Çy·Ö¶w2ùÂï¬Èæ–—UR€ÖóƒÛÀs»¥òDÉõÝ\ãﯳiƼnE÷DþÎk½@Y½?Ș½~7ì›)¡ÏpÞžœ·º·£à Ô{fzNSÀ»^å_ÐàØäùAÝpPœ†o`ŸzæC²pjKVo}CÖVîÈöúŠÊBW¯º½íÖŠwsò”›§K‹�MÕô•ÈÁ«ª®VaJâ±8j™,£ž*å&‰FÖ=%> HɬšZíà[‡q–×äü,¿W ó´¢ã0¿UʲEÅó$Ö©»îp*¯GdY\XŠ"­†ŠÙjQ—ë‡Xǃ@cvÿ«?ÄïùŒÉI¤.Öµ··¿ãt>{ÊÛ@GL½…£Ý†¬ÜÎS³$yýäшF4¢=VÛô†zIÏ–ïŸùˆ47¿ _í^—=c×|(õÔJ–Ÿa[lNËï™xZ>3ó™HÛÅoI’ŒtÖ#z×Ó°€@œÁ3ÜDr)O» õài³³'{É~Å«¾ô†·J¹PZa¨ç³ýˆ†”ÈU  FÚH‚RÉG¸@H×'Ž;ÁpI¯ƒ2̇¹ßu €ý¼¢X0"txÁøÁßn\vsŽ•W$þf#ðºh0¸ÙE›)Ï*@m¼ùúmçQ8‘÷üÍ–M¥A!Ô0"î×tÞ蟆1Õû1x¥yÅ8LÐB©‚O*�-PÁm5r†>aCÿÅQ2ì<±†ýºñ‰#Wð3£=°žÚØúØz²~TYE)Ó‚Ø#|f\/[ü¦‘-Ø¡èÓ^¿ èHø¢‘Ï…@85æó\"¤'>{ï¦q}Åé)è-Tb“b-rX¯›ÒÑjØ?6µŠ¥ac0L௞ âoÄÙÈ8à[>ëˇ÷õÌŠ( ºloó¦°Ç+!ªK`P® öG”±‰”󦨑yZ×þ¸û|”ûñ\��: � è€ðÁ3Lc`•ŒJÁ>`𔋾#Ð Q1Ôá~C*”ß¡>qâDyÂF¼!@‚õgÙ¨Ÿ­ êM�Rê ¶“/F  xî1Ôåq=âZ¼G»¼—ØxäÂuGU hDïFJîâÛ»¿¦îŽ{¸ï!:9àÓ;Š’{úéÁV!¹—'~Ͻ{om~ÿ=å×F&Ï`A 4/#à¬äµ ëñ©qå•ÊèwÃXIb/ÒwÔò|™O%—xì[·g\íÊÒ|î {-g¤=Êœ |.S÷²cý üñìì¤ÜºyG6Ö‘7ÞñmMÇwsM÷Á—^;+ŽÇÙ aÃϽ·ß“Αs™œjÈäDK^z?€]hÑÏödgËñ“ðÎß YV|_æ•öÖ,’pk^ù½ìI)ŒÈ(»Ÿ3ŠˆOFV;¼£¼SÂÌÌTøâ`Óìat/<ӽ퀨jî…ã¡¿”ö¤NöÌÃ÷ÇÉ¥‹gäü¹ãröÌ¢\<wRΜ9!gár[·çÁ½P¦æYXnH48È+¾R÷BÖô‘Eë@ßmlakrït»ý"’__u)Ùrz”Í­Ç‹û�ꚤÓSùhÌY`ÛãA~¢N$Ž™OñÍôTKõ7³3³²´tL‰O[ãiÜ›„žH4eÖN£©e"õ�<ÒjÚ[Û�pȃҢΘOÈQ¸š<«F$¥ÜÇÂw�:¨ïåcý�Š~¿£Ïn6Û2?·¨À´vkLö;{Ùimuê!-æQXɯd±¤ÁYÆ‚,â}ô •8l>@Æšœú€;¾®©CVo½%Û›«êíõ­[²|gCͨÓ©ózýQ)ÏëÏþ½÷màà=§pn¯3<j™ºÇ�‘͆~ð^– ¹ÆŒ[˜»Ãzic•ÔµT.,u¹¼Nkkî%A7�‡vk\†©l{ÎAú¡£œ)u× »¯²nÁÓLLë«ß몳^ºçö›mýfššúv¢&ýaé¤3¢½m¼ÌˆF4¢Ft&ÌŒ1è“SÏhªßÙs|Q‡òÝ£!¤°:Õž—L\ù†ÄçÆºýîh” µGŒhDï4zb�Þþ[*îŠÁ̽7Q¦ÆiŸO!ö¡T€ Ýhú¨ÞK¹©BÞ{c{®/ ÃŒá™ïy»Z:ö(0 LÂ=PÀ�·¾±¡¨eÔèÑgúÔ�Ú”1ÅyóHŽAöo’ æõ÷–%ë`¯± ‚@h®æ9 eÂ–Ç 6hëcÛÔŒÅ6eì5eËæw4Áñ³é<bPˆiP^ˆû½®Î ÛV>3uØ(|ïȽÂèξ¥×AÖ Íô0Þ³>TxÚ¾g›A>"„vš”ùNmJû‚1xrzJ•SS>„(¢S œ–*¨’ʳcpëBúMýÁq# ud$ƒ²o« 븟ï—âµwØcŸ:�dÉD Xß{Íf¯3þE;ñŒŠíŸRùæ‰}Â:òuŒ çh¬p}Ð4LÁ€×… dqqQ×"40ú Û†öa×&þa×5¾#å€ð—9¡zà\pãúõë:ñüãÇeá�Ý, cÀè( ã„=Q/¸@™XE0…]wR|ç£|Ô™Ì2ÒGL…²QÔ9­ñ²€˜hD#шž$êìwôÜ+yo\·¼ŸM“± ù—Ú€ÔósO£Ylïl)ØÂ§)h ðK$ÑËUþ)�9SÇ{÷YÙLeϱæ'œz~J*Àט†óXÞâƒIôÎä%ç\›Û²rç–ãSM2>îxÞ|ͧ<É}j‘±1„ñß•ååU™[Ù®»o+‘¹Ù1Ÿ¿ðÞËÎPêŒÌ» ÇSl»û›Ú óÍi™‘ïÌË8ìÃh‘}5`SŽ"YÉØõïøxK凇MÃS…ØñJîß1Xò”GŽò,?¿½1Nà%/ž;!/<wVNŸ:-O_¾(çΜӧËìì” ™AÓ2¼åmWÔKíQl-¥0"¥#t3ûðÒ]Mû¯õõµ-ÙÙÞ×ù½»‹(Ý wɤÙòòc«":²>Š.É0€Òa?µ S“ãôut_Y\œW€Å�ÛE;9ÆÉíq×_s> éö†{mʘ3v¶ÇñbR ái•þ¨ôK˜[V.¶rYúÀÊçbê1L�Íò¾fÕ:y€ÐÔÉêSnŸ˜Ñ=iPg>© &ÜïÝÖ7W¥áÚØV™Þ§6À}¶îEtHSÏ!]b¯ŸœYñ©™[<!›kwdåÖ[²¹rÓ-®íÊí• yëšÓ;LNÈ├<y²ˆ08¼Ü¤¶o¥qú¨{AR€*l]b̰{õã@uºÇ´ádo7'‘êfŽj �ab)oÆîú¤‡¹g×é79&š‚©áézŽÏÐõìÖÒ‰�@™¦[y¹¢Z´B*”Ž[³N‹!pè1¤øÜшFôø’•¡b¢S!Ó_[›Õ3c'õõv“µåÄzð{¡Ç…ßш€…1ôÆßNƒB¢Pd}´Ý‡ýÒð«©’Ä+ÔÔs©o ñYaøCž_F¯€p f¹ßï)ð‚Š,}‰††£T0…æžvJƒM5Vã~D¸Àç:du]›c…—½Þ…ú| ?ýïƒ`Џ4â!€v2Í„ŒPWGö_|Ød5^LÙÁ¶ÐXªQZÍŠÐoAV‰Jƒ3¯µ€ •¼‡íÁ}0ðyMà 0#îSOb€‡í;ýÃö->\cÓÄÐ@kÐö¹4ÖdÂôö¶?ø|ÞÇçkÝÐ&ø»e=eØB$xùÀ®ÜF¿«àˆ$PbÄ� ¨°Ñcb@—`ùdýÉYäZðÀý ÈÃî=J™Õµ‘hj ý=Ÿ¯xÍè9—Øf©¢]D÷à÷L[Ï¢Â5ÁÏu{b]ÿÈÛs¶çr�pÀ¾F� Á l;ÚÓn€YÃ︑'é`!€.˜¢‡m‡b�¤å¸zõªþŽùzìØ1½÷‚P@¸ž©HP/6B þjJ›�¤@{mÄŽ ç4@øÏÆõô¶E[`Hâu(¿a•©mºZ/ÞToÁhD#шމD°(唘¿G({¦Üð‘)¼1rÕÄø„F÷÷÷do×:Ög¯H5÷{£áËðrâË$$e9“Lã *?…3•­n[z«™¬9ïéc]™™lÉXUåQQnCyê,ï¹3O=oææ]ySrãÆ²\»ú†´Ç§e¯sÌ'5b†FÓpu9wþ´,.íÉ+¯\•×ß¼é~_p¼ñ’«©“EÀ‹¸ò5•\â¸Ï· Âµ#W£èƒpú±ñ)‘º!¯½&æÉé1R„LM†z>$ÃÖAÒñ§#z=ùÙC䑃u‡=êŒuú×Í…÷¾çyùÈûÏʥ˗ä¹3rúÄ‚ÌÍÏ«AšQÙ@ˆè9>ÞV}ž—&÷æ·à¨m.�:®.ýžNtºn.õ¡GVV7X±µ½£,�þ×3" &ަÕN�æ=·Î}š…†“fÜk+FØóçNi_€—ÿÊW¾"oÝX—çž}N&¦Žù=(/£ Þº½¥4�àBÈþÉlÒëhœQwocEù/ôVc¸ŠMëÕ— G’Ù£|Ï>‹»ÈGÛïôàmØïìºþq}”!¢G@K^‚ 5>^¦bDލ—)ʇAó''Ü^:­`‹Ý-'íHskÝ·qrZËŠõ ¬{"ŒÖq?äõOØûgæ–djÆÍÝcÇemù†FµX_½¡²Úõ{:ß®]oË•kwäì™SræÔbáI9ÐÒ{Ò>@J$èïâ–Hv?ÊysØïJîP啨ª[`È—>Zd/8¯lèkggÓñS *ÒkÔP®Ô>ça]+–ô™&rÀ"xÐFèTOáÚÖÙXwú¶¦O›ûtfˆ›çÏʈFz˜ ¡hD÷Nñ¹3l­BWL‡¿:½þÛM´7@—}ÃÁˆFôn¡'(EHV«\8¥Âœ–eXF¡Kp¦ÿȺ!÷oO¿ORIÀ+±’"þÒØæ×•iõ÷–×åïx³5crj¢0vÓ�oÆeÃ68ªÕ2øq¹4Ä«w|M¹1ˆ€Þ. ´—(6-5/rZøL+,fy^ ® 1’ãÜ € k¬‡€ÑD8Sê£ÿÌ[zõT ý¶½lS\¾­KQ_M‚ïmä–Ãëé©ÎvÐkÝØÇô;X,#iX‰M-‚{qàqñ~‚(øl84$¬»HI–±<vl^æççÔ PCÃŽ©²Zû$)•€¾ iáùcÁ:,Ÿú4bówCeûß÷…÷hdùFá{?¦™Ä ºy}·T§ÌÆàTA n¼;=UôC„ô?LAaû†Ö?‹k…×Äí«¬°Vj¯½/Žtó ¨®<®#ÎM€0·VWW €S…�l`D�Z0ÊêŽþÃ\D¿aþ  |Gp”Å·nÝÒò°6^{í5ïµwñ¢,--U€^+++ À ( Ï"Ðe㹦Ö}ϸަF‹¿[0 ëEp×.™O�C˜uG4 «èFùh'"f0’Ìê¯ÊˆF4¢hDOÁ;š!ÞKPE!zç-y"Èà1aPày OU€Û‘2ÒGïБ©©iõ%(£ä“ Ÿ^ò œø~Ä0졟we§+²Ûi¸¿©œ_ؖ٩vq^³ÎÃM¾}¨š¶´.­V¦@ú^wÆ•“Èùó§ää™E¹vmY^{õU™uÆÅK—ŸQÐG¯ŸËx{JžºxÁˆOË×¾þš¼ñúM÷÷Ž3BÎ:fô´rË{ûΣ|HRDÐ)¸ÂƒF¼¨«oüÝQxF`V¼çü`ڿÔ‰í¶3¤NO°’ò°@o'=(ƒ‡Ê–:)ý+s{aa^~ï·½¨Ñ)^|é½²xlQf§Û (.Áö¢óBefÈÎMF ¬ª…†éŠªæÛ'…¡Ÿß…=H>Ä<¦”çßÝqrS?�+z²¹±ãøå-Y¹³¡)@’†‰2hPšijÊTEPÊeÚí"ÈFn=9ƒ­‹šJgÛɯ½¶"[ùŽÛæC䉆|é+¯ÊÎ^WÚãÇ4JÅìLKn-o*O9/_íÊÊz¯Ðy4“¶ãÕss!r¢YllÜq×efjNÐq)ÖçwRSý׉‚DòÀWOÓžìjÊ€žÛ× KÊC?"*äñɉqÈø½­Q€Õ`º[‚Þf½¹ <{Ë®×ÖïÈúÆŠ¶ûR¤X9ÿAQ¥¬@;§gŽÉÄä¬,ºàö÷=•ån_ý†lmÞ–ÝŽìîÝ–•Õ ¹ruV.º=ô¬[v_&Å{Ó£¦º!Ãêÿëöá{\e?¿›rv_ÆõÝÙsú±®„õØòà0GHÛ£ëqÇéÜšÜÜZWpæñÔôœ®É¸ÜX¿º熻û‰ß‹HRÉ!ëú€©vÜÉ´h|Yº[àΈF4¢èí¥ØVA Úbä ¦p¿zÀæˆèm¥'`Á¼–•¯Ž¸Zó¼o„,/˜{A8-4ØÃó%WåZ0ÆÃ8è®ët·ŠÍÆ?zâ³øÍFx€×<Š<pÀ ¿ÞˆîÊÕ\ ­`ìö‚9Þ•ìíØõè4ºÛP¬ÖËŸFXÞ lÃÊõ÷ä…)X0I^¶—>£8ÄFÞº²lýA6=jªHng¨UDvHþ²­¹EM,¸‚c¿|¦UÞÒØ­ÂLÇÄ Œ6`ÁŒ0`û“ý`û—Fb äˆÛGÐïå!Šz0²Ê`D >ÛF `;,á³ùÛÉrØ?쯳gÏÊÉ“K27?ë„Òqü `ˆ˜Š¹Sù¶TŽÒë¿�¹ žRU±lÿ ÂÛ§ê©›÷uî—¬ð](à+a•}ÛÝò ~€P?•¢¥Šþ$a„ ©¤˜àܳë0ŽNAeû‡õáõv-Ùz² ö§ÆÔÙ¶Ö7þcùˆ"AEúÈ*j74=Ò^ðš׾Ü@:„�pÀ‹„{¡4F¹ÖóõÚµkòòË/ë}˜ÇèW€m�öù™3g´n�d ²#Rà7\£#cp-BÙÊvaœq/®XÂî_'NœÐ²P&ÚC~'u$ mäÜáYx)ùˆF4¢hDï@²¼•OÈ#ùtbøn1@ ÜÒMHÃORg¤G4À½�²è©•²™Ðf#D•À ï)Ê2÷9õé áÑCt.>Bƒ>ßý·½—ÉË77Ö•çÏJ­1϶ÓSfê«Ø×‘·Ö¥·žÊüâœ?6+ûÈ)Çs¬ËkoÜ’µ•UgÐÓˆo¾y]–o­Ê©ÓÇå…÷>/ïñyùò—¿á¾¿*7n\q}Õ’‹OK£åø‡~ÇÙr¯¨²­5êdú݃2Ëpü˜z3V5Tysô3Ó¢ïZ °H´gß~CQÌÛ>Hyâ¨À•<€'êËœ1±)û0¢T\”sçÏËåK—diɽÝ<œ˜lëkŽgE¨yðÉÓÓ“…þ öXÙÂm´ÄÃÚ7`ÄVýI_ÃÝC²·×Ñ”ø‹µ¸çd¨[7×du‘*6/Œ”‰®; ¢žu*Ag’ä>]kRÒLNŽ;ùuAŽ-ÎÈÛ®ýkÒq¼ôäXÛͯq¹yã–“ÞB Ÿ˜—¥cSN.X•¥ã'eyùŽìíwå‹_ú²lí¥re9 €i�æóàXÐðà¤Ð(wá%ßíÎÊÆæª¬®Ýv†ÝU™œ€Œ2#íÖ˜ŠÅZßd!’$Õqf_!ÆÞþŽ‚úý®î9xÒ ÒÍÔÔ¬î5ˆÊÁñÒW:Ü3þ^ç¯úû6"EúÑÐÎ-X�háÓ‡¤‡Ê”wûìèh161å^“29=ïôÇÜ|Y•å7×íù+š¾åæþm¹ãöË×Þ¼!Ï\:­Q-¬Èž5Ã@ “bÝÅak1Ö)ŽÜÇɃßKãç&á1QOUèÈzuȉûç(^-·ææf3&h±±¹&ë« À˜p2ýÜì¢^_çpò çp=eÊKhö9y¢íÂúßÝÝ.ôÃl?ÎÉéé)85‚ö ìЇ<бÑãGö¬õ“‡<‡G4¢Ý YÞ¸Üg¯ãotL1½øÛ ´@],°ÂÚl½£Œöª=ôäD°È«LlÜ;hÁÚè–ôxäé�Pï³Ìý–σà!°½½ë½ÉåfèÃÚû0“>•ˆ÷¼Òœº"E _5º�úý®z)0E�¼±ò|0ʃ5¸Æ›v©ìÊú†íçï6½…½6 Ædg)¤ò^Û?øŒúBYÈH èƒjÿÒ{«L˾²) lû@Œ¾Àö\áIQŽU–ÚÏc#0"„G¿7‹~c |±C[øL*‚q/ʲ©?l?3š ÇצJ¡’—ýÆ~Æwè6h&¸¤H€€Ä÷ÐSßÛÈ6- ææ!Ú‡¨§NR/”|Ñ´‘åxa<¿Š6„¾A™šÒ�Êt& 'g•öóþêZM+ @ÿ{VË|pLâè(BiR§-Ûœ¨¢t2<(›ÐœÛYH±BFÄub… ¯a›8Gm?ÙzY¥ƒU6~°ý3LÁp¯}Ú ÁÿæÍ›Å: ýÃù `€x±œÛ·oëÜÄ5 Pkë óe²_�¬`T‹÷¾÷½ ŒÀ½(À ÛÏ´è€Ï¸†}ƒgtÁëö�À×â=÷A¬+܇ºÚñaÈsÔíG°·àw¼•E|ަߙÕÏX'�ŸÜï<шF4¢èq¥˜§) ¨ÊS3Ê`Ù‚2<àB ïÔTP"W0•øð àÛãTj$òÎä¿Ú-ǃujÖÔ=Ÿž#uÆ\Ø|ûYHcçþ®ï¶ä o4å¹¥ÕôY'z9Š<XS£¯e®üξ—OΗ+oÝrFà›ÒÛ[’å[+òÌsgå;.?%·omËõk·½'û]�0Á#¬H{,sÆáùàûŸ“O|Ó‹ò•¯~U¾ñê5Ùsm?¾tR6×—ELDFôg’§âÁGuF8\Q_Wd¹¦°<óðr|hŒ—Fvs²I÷1ày¦²ïè†Á~˜žš?û'>-§OŸ”çž¿,ÇŸP' F’/ €Q–wCÂc…|T^²àee(qPVg”]‘ªc¯Ó•­M;:G`  âÎíu¹ykUuHãys·Ö‰‚'$¯‘9‹~™oÉÒâ¬,˜W€ CÐ]¬.oÈ­åU•5¦§ÜoS'5Š` ~c×]·åʵ5yýõ7e{/‘^>.¿óºwhð)„ £!E,Rú…ögõ6kïÉ7!Çá³³¿çä‡5ô€×¸‚æÝï“aL™ÎC ù{•ÊÊyWå]è„`Dž^ðަö yºN)mu?–Ä|ö)F2?¿ää¬c¡«²|ûZ0h/g‚2m¢ÜósI–¯²VvÀbvnAΜ9+[¯EV^ûš\Õ¨œ=¹ukY–—o;™íš¼ðüy9súT¡á¼¬%åR:ž„9Øï¦ºµkë{XÝfÛ•QÄî)Ý"Ülê¹>l/õ{QZ¤´A÷!ª"ͬ®ÞÖÒ‡ÌLûô¡ÔyñÞ‡)wÄÉz+À,è’§G­íx@¢ ¨ÒŒQÑ™MChbb¢}D%1MíˆF4¢Ç‡ì™uTp¥åõ ÛÆëq¢ø>ê9D[ȈFô¤ÐÁâÞsÙô"ÊŒëf”BýÒÓž›£ˆ”ʼØ#\ ëNq°¿×•}éÊζG™1¯eòh޵Š(øï)n”À^°®n\|vÁ›d½=¬Àk^AYõ ±Šõ6ɳŠÁ×F>°]Fï°†c ,ü>1‘8Êe™6íE¬(`½™Æ‚yF›ÁH !‰¤™‚õ&�‚` zгlF¢`ú [WMù²×ã{”G#®jÏ6ýˆŽ{¡ˆê…h¥àßív8§dtCØ_\Å ÛÇ~$ ‚ÆkÐÔÔ¤3ösJ‘Y9~â¸S8ÌkY@‚=Ì‹Om’9űj…Ô,i£³�”Á6[HžWè~.¤•rù[R¶NÿP„ú#0òÞ"j Ö7r³¿!ÄLOÏD§×ìÑO@ü3,*ˆž–ÖoP÷XÅ)_vžÆkÜF×a}†õáý’GDt`{ñ(óL"£Þà…Ô�@Ùˆ×7*�-Ì70h(Á:â _ø‚>ëÙgŸÕr‚‘(Ðçè3�‰pÀ,›}å>žÍ=H'î(¬Š–k <e“PÀh#ÊFºöGÙô¤åÚ@ý¸àþâC8'8`‘‘ÂdD#шFô¤R]šPœÆÇi–å…Q^ëS1æ Š—6 ©¼lEÀ$ÎÜñ‰ñ Ok˱ç¾r®¼f êLyqt'�è•6àù¿s}JŽMõäé3 aØgÊÄóp5’f0Ãø¼»íxŠiyÏ35RÖoÞpÏž•—_½%c­[rl~‰œ±·-sÇÚš>áÍkë²0·ä G«rëÆºœ95/O_¾,—/=%o][•;+ëj Îáéžø•Þ°—iÛŽbÜ»«q4õ~Ï(Ír©Db 0Æöºhb ‹1é:¹ùa±Hî‡Å}Àõ©ç·Kƒ«OLjô—Mùîo}|ø/(Oø­ßú­I!I2iµ}ú<xg·šÞ©cvvº’ ùnùûÜ/$MW‘&e*Fþv?GÑô†Ã}o<Üwú½¾,YbuuCÖ݆|;1åä¦1'ÏK³2/²P/øô“^öu2ÅÉy9~ü˜“œn¥•h¤Eÿ©W(Pz}G~÷Wd騂,ÌŸ·Ö%q}ôÔÓä­·Vå-·f~í·×egžîYÇ4íG)3Q dÔ¼Lu:,²îA4‹cÇNÊ1÷i}ýŽÜ¾sC6·ÖÔ ;=='='Bž´*;�™˜<¡) Jý‚o·¼Ô{ÚONì{yhäŸ  ü¢Ê½ˆdT �ZÜYi:ƒðŒ¦Yn&¹Çt?å<£fL¿õ/ŒÓKµs¿§ínoÉ\oC¾e|W.Kå_íOËç·2™(îÝ rè‹ï¹伿À¾ÿ(Á%åBÐà½Ru$C'È’yˆô’½—:u{rõ­›rg«-_}MÞº¾,»ûy¡?ÅÚ9˜üù2=5§/ôÃúÆÕ1,//ëga9]£JÞm_qþ ›GÜW1ÝΞÛo< ‚º2ê„Ô±k|JÁZõQZóÛ9¢w7Ù¹ÇÔº#ш/ª;'êÎ «£vÍÛI¤J:茉éìí½#÷ˆÞÉôÄ�,Jãm)@X�@ªª0X:F†aý"!dy}(¾ø^½ßþ¬ASïIJå Þï;å\Góåya±ûP²IêŒàY<û¡Äëk>á<K4ŸíääÔ€w>Ÿs "6PÇQ,â¶Äí¢Á¯hŒ”ÆÞaFY>Ç"ó¬ÑŸ ^cù|–ØvÄ ŽrN ƒ3„%«X"À€õ¦ÂÂF.¡!›u#QIÈSr€h€¸!­°.q:(‘/ÑçF•° \ßWdë¡„atŠRÑ�…‹ÏÃ*úY(ž ”Á� /{x.!'/@Í–O ’�„ÖY¢©nŠñÈ¥2v|q>ŒOó‡r|4dr�R؃²JuieÎýoìý°$Yv^÷Ð_ÿÔ:Kktwµ–h,-€&B41àb%f̶FÐ8´…ÍblhFŽ‘fØY�.8ÃአTC°ÑX4€ÖÝ@Ë’]U)*uæ×¡…»ï;÷ùu¿þ¾ÇÏŸ™•UYÙ~«"#~„ûó§ß»÷žw®k\O¯ó¶õWù^òá*¢‘:)²[#§Åñ}‚X×0¢LâðeØ:ú-“‚Ë aj‚ �B€âÉ£ÄÖeV=Üp!R¦¼!®ƒ"o®Ð}ôf74yé§€¡t Á �‚°?@ñÈB„ô€“džCê¬æBgΜáïßô¦71€m$\+÷!i"hW<KB– }�Ž:EžÅ)ƒö›†€šð=Þ¥®%m¤ƒ<à3ò ð„�K'¼Æ&¿£ÜrœdÓl(»5ŒRH!…¼Ör' ¹5¹]N(}b4o¿’2ßYg£vŠ ÃEºg ¸ "@E„ éºü²6K±Ï{,²Qp¿¥Ýž${¤ñxä·ÈñÁjÞaÆU!!İó¼ºEÔîuéÈrD ³ ª×RuÛÖŸ¦§™í-B¾'C³ŸAÌø!ÍÍ×Ì~æqzö™çi}eȧÂËžqÆ„öt{½Ô ƒ{ÌþaeΟ?MåZÝ8›Pw¸Nås+Æ™\£ºqÂ×k%ê€yƒÌ„ÆNóÁÅñ¥T4Í1“´Ã.›\ï)µãȆwtO7IûE18&â8|uûÖÓF¯Î’·wv…õ¦(Q‡Ý_igÇ%éëÏZ†Ãw~¶É€ŠÓ_ßõ¶Çè±ÒÑ£‡èÈуÌR!{I0âa/Y ¬þ1;3›ì™w«ïL_é†ìÈ–v³Æ¾ûQÜž¶ïXýÖŒ“/œ.ôM_ÞêÅ!@�pêѺéÛ››Ø“÷8R1:i¥Q¢š_ÉÔy’ï”cë·‹ tpo“uZÙû1°‚n8º«í×СÁhÑjÔø·•µu:{þ* ̾¿Ý‰h­ã»LÈ¡…0§ ôè'Ð÷áà¥, 'Ñ•|ÖÈÈ‘‚O¤ÎíüÀu(b>Õû½˜ñn…«`98ßJ¹š”ÝS‡¬(Ý׳àé;ÚNc¯ßÎfáöçizônĽ—ífmšùifn‰&�¼w·X‡¹rµÇl$"¡2½2—-Jêµh˃l—âà@vRE”ù Ós¤)[3˜÷!ÛÅ"c91¼Jï]{ŠÆ¦AìSU L¿<?w¢ùGèþ¨AëW^¢Õ+çhhæ|´€ïn^å²OG.Òñã'Œ.¶hÚ¾×ã­Pn{»®7m#Ó÷¾RsÝõÒÑóDúY¢òm SçÅ[èOXu9¼j¬óŽMÂÁ„¿zùÜzî¹Sôâ‹géü…ZÞwŒžxÇwÄ1k[nZç¹Ù%ó"fîtÖyL®o\å1 ÂðTJ^†µùEhiže¼œð%sg œ°Ÿ ûIȤƒ9awð,8Á5»VZ§¯|!¯O‘±Š}ïÖVÇØ¦æxý+¤Bî ¹™uþvéÞ·*ù ÀÝ•Ët\ý½B^ïr×�,å$×��m¸ÐXíÔü‹èSÍ7#:mˆþ,Ôp–©`’ –e/§>43†äÉ’È{ÖØH™ßµh°C^(7¤†=1±;qÈRò,1ä9•õ»ûYŸl“6¥.NF„Æ *=Ä•8Pâ”–ëd!u­ÖÂN!á4$Ÿ–¦oœœªGy´3U§§YL„U@B` ]Û6^Âà0™¤'V†Ãq¦}­â–"ú¬ƒ:R, evÞã™�QHTìÝ»— ÇUP¬òC¬µ'1Ÿ†1ìÀ÷Htûk@…ôK͈` iiýåµé4ÉäôoQÌøân.4€ l)ƒ×4ñ”¡Šë8ŠÐÒïøÄD¥ !ÂÖ ‹ùH:Òw4;…ü¦Ã»Hž…)ÇÞ+†:Ì;)³ŠäOס¯qç<¹F×—|w3ÀŠ1ØêçãY¨7ÔŒÂBs…€),@È‚˜�:°7’N–àIáDÒóÏ?Ï×Áy²ÿ~þŒö‚à:×�?ào çaÙHFIýá7Œ!aë�ÎÚe䬒.Ê�£l qu°¤!q>Œ&x¾Ìä@ˆ„AZ’6ÒD= ëE±é,¤Bît‘ùTåeíË[‡ Ù½HÊâVEïô^Jö2ý›Û¶¯´ÈlÀ‰4´†—ÑUÄáJø4ïYÇëpm\cŠðÍÍ  73ìì•kì~{œ”Y—;ӟጽ¯,NöTæÕ§À8q«tx_…ïõ¨QͲ¥å²Ï©š}BËìqÖ×7 Q·¶F&_=zà¾ãÔ6Fòk+mS¾ª§ì°ß¡Ñ8 ù…YzË›Ÿ`§õ³Ï½DW.½Ìì89?šÝ„º1x}Æžô¶à�?þp¨Ïz…¹QCžÛOP‡.ëÞôûb§t|I­^¥FÓxÎÖÚ™ý­[_·" ,ÀËqêÓùõìk·,®>îîËÑöï]0{I„U¬Ð½÷¡¼ÿIÚ³ŽßCIxJì1îeOˆ¿™©b~Î:ôœñë`x¥%ðTñéòñhÂc ŠN¯ÏŒî€ÁB½ÞÐôéŽÙß©dœÚÕšqÆ7k™z‘úÐuS.—¨Ê×W¹ö,¶hqa6a°ºw<Ä€«±Ч^·O—¯õi~n/®]kÓ…UŸ:CËvƒ[YŸòÂ5ñ\â3¤ÄüIOÉ”Ùîó-˧=°1fƒqÚƒp¢–üíY>À!4ê£Ûkó ¶ 0?ÀùÚjÎ1+ Âä„;´[žÝGëàòüîÚRÜïäþëÎíòÜø³¾2d<„™ŸM9Je„Ùgôµ±)ÛƒÙÖÖ¯1»ÈL­EÕæ yh[c˰}WæpóXv GÔ4v†ÙÑE¦NA—Û:Mû†Ô.µhlê Ÿ Íú›ù‡éLcŸQ¦ܦ7æÓá€Òã´¸ÿ^꬞¡µÕ«ìDõ·xÎ>sn•.]íÐÁ{èØ‘´¸8gÚ§úš:#·Y™ o"ÚÓ³ãoiH䕲ÀvÔîôÌܳï]¸x•^xé 9s._Ya Ö„±B6 3Ø©JµÒuŸy½òJ9ÜrÔ‡p70Ž‚‰e48¬Çó2öå˜È.’q˜Å!#Ø&e.@_³s„]{mØ2òCÂǺö«Û5gr÷‹»O›Ö™™;+œ@!…|+ËÍèÑ·Sÿ~­ë#löÐ+?×öPH!¯7¹k�âÀ§º|§YÚù˜gT‰¦€nv³+FíMŸë“=Ádõ&ž€gŸÐÝéÌ×sNç*t]ä9¡Ýôô3²ÝöºÐNu¹_;á4Õ×@4pešñIŒÈ6¡Õ/õ)kP m¨²�›Š—e[ÅéèAêy“º°‰N‘‰ƒ*§¯0!Ì :ÿÞCêWÒÒÎvÛ7£èaËHl@rŸSIòY kZ'.à¬Åg8]qâ]Bx¾({Ùv#1.ÇuIÃiŸR)¶™xI¿g²ô_yi@ŠÄWÎ#×[§}Ü{µ¡(Š(÷÷ì5;Ÿ È»×ÃFN Ȋ°iç1€ŒGT3Æ®R¥œ�Y\C¯�&ôi=Í û¼Î‡Ï ¶g¼¤hc¾jèü»u¥™Z®'2æEWv“ž›Ÿ¼<¢~ÐW! äAž…Ÿ¤�À ãMÀZ€ð꿟>}š¿»çž{èСC\� �ŒÐ¬ú”ÚïØÐIlJ©Œ{|‡<Ê\‰çƒuŸú@úgà~‹HÈa9Áµ<6½”q×Kø'|¿1†q­�4d΀ . ƒK!…òzY»0O XS¡ŠóîEæ¬ ¨ÃW*h@­ sVÉäáv·™ìA]G«Ý QrºØ¾G™0„�¥Ê>]ŸöN÷X~âȳ!Ì:Ýåþ¹5Y3å…³£Î�fŠ40ÔÒ“GñNï&Ü—CÞ?ËÚ/ûg8b*pˆ{v¸Ö5úIg±Òò\E±YÈ~Žÿe§,òwâøaN÷ìÙËtñâŠÙƒÀ9;C>v]¹ºaôãœöºÆA UŸçghiaÞýÎ7ÇT‡ž}îÚ\¿dœÚØ2Îû`Ò7Îâ‰jC{BœÃå>m7Ðï$Û¯äv¼Ã©¤Ã<æ§!϶m ‡XxŸÈH†|Gà­öÅÈ)Cžìö¶ˆâÿ´¸q…ÑOæ›´wyÇ×ÒÒ<½ÿ]ÓñcGüsï½Gøô1œü·zIBûWfŸïOg“¼Y‰SÛVïÖ‰R ‚ÁÈ‚Ñ{Æ!¹Õc�E§Û§vÛ|6ùÞÜìòïfóØšiØ”ôoC�è´! \®ùÜþósè× vDŠcÓê tãÙtFƒ‰yöȆÛÛÐåÕ>]¾ºN¶ ?ÒîXšfÃØª š…=2ùÌØDÿŠ¼Ø©.ì7>QšOm3€@“µMÚÄçÃej–›æY5f¦pûÒì̿ƓÏCpä‚Õ¢j桜¹�Z”+SGê’§çÙtÜà ò›>(°cŸq_fÒ0ùñJÜobÎNSîÍÏ.Òœ)gÔçPSÖмÕºi‹U¡+ƒ­ÕÔC=ÐÁáÕ£1Ü*ƒ6lбÞ9ºÒX¢^e†FfŽþüìãôÍÆ!êVghbê¶nÚ*ðL0† Ua' ö“……7Б{‰õÃ+ߤՕk4è®óºzæ,û«tpÿ2>´ÏŒË9Îßözyåt1›¶¯S› ¢N9ÝJÈ£ÑíotÎÅ}X_¡Û®mti}³gÆc›Á/Ÿ»D§Nã+ë[XÕc)Ÿ ÄC›†a¬Pe'!ìÎõž9-ŸÛí°ùì›xÎÒâ>JõL_E(v{“l(’š± ÕylÚMÆA4$öBÜcí}ž?ªµ ƒ7kµ§ ›’°¿z>e쪮-¦Ø#r3¢Á–2ß#¼mµZáW!…rg‹»NÝ­kÊ5ôÙ¯},·r¸½Bî¹k�n(1ÒiǦV$óœ¼ÚY«O¼ZžÑYK”x'²lŒ�°ð,ÚÙlä¡�ÚÓcDæ\×¢An™óŒWîwESËä~/Ï‚r¥cŠÎ»-íX´ò‰†E™SkȾiˆq íŽg¹ ’„ñ"¾GØ4Ü0$ЈƒS þu¹ÄYŒò¹u.ýG×µ5;ò<‚ûqØÝæÍRŸÚ8’u.G¯zƒOïÀ;7;çœÊŠ¥ƒóó{Ú¦úqÙ¸µ–FUNÔx~öCêÊ*ŠAz$¢,ý©œðñ2m×þÓÄMëGyãsÚÂ+m¼- ó…5š%Æñ‰e¨Ø—ÂÆÁÎ߯¿DÀ˜9 ƒ\…\>ë9Ã1¼I¸¹ÞöAÒä4ži x”°;èôݲë9Kú¸;v§ÍsɘÌ1Ìި씆äu ÃèYa<EÙù4©šÄ‡ÏâLÂ}Âþ�àX�Î&‰cÇŽÃÙBâC=9!"uƒÓa‡@Þ¬³eŽ¿ÇxÇ÷:Ì~dz¤h# Ê!l2O <Âx‚ÏÈ›„CÁKƒ o2?â>ɧfÌA ŠQH!…r§‰^óeM‘ÐK27f‚Sö…¼ºâ[Ñh/ÙÿbMÂú$�ÇWJÚI\CRvï‚üj…?ñß©#ÛËÕ+�À°§Jö¿A¯5?öaÒëaï&�“R|ºŽLÑÇ6öê¥rrN¤ò¾€Ô>(Ê–i«çQgàÓ`Ѿ¹‘q¢–Ùñ’î(Þ÷Œim}Ãì=“g©É§à»óÝÚÀ\ßg‡Mo`÷ë72mumµM[1-/·¨ÕlÑ;ÞþFsý&>{‰½M£è/r(£‰e²°õäÑ"òâ¨yôÊ´m$á ƒEÞþ•÷e (#ý¾Þ¨Q³Y·`pÊ×5n÷Ü¡_ Ó7VbûW”Õ¤Ü ó³tÿ½‡ŒS½EO<z’yè^SÆíÛ»@{÷îIXeiÁiãÀëîãsrLQ”Õím9n¶MMz–Q`»7Œ31 ¡é›fOÜíôÍØÐÖf×ìkûÌ^1˜ëp­Zf¶Š¦Ñg=ß [š€•"î—�` ½qϬé¿ó3å˜I®’�˜D÷–21h¢Ý¡•µ×ÝÊZ^¾4à5¯ö°B[Ý1oU*ÕÌ»Ï >òeÆôºRÔ£Yã,…e{˜ ,ª3­EÈmð÷†ÝXÛa�~JAÔâ6,©±´“gÜ8ÿ+ö>0Ó =Ëö°qÕ|× F½i² c”iWŸru7­ºí/ßMë»™ÛÝß3º|XÊÎ#‘eÊñã­FÓ”§AÓÎ(ç¤Ó£Fç*=QéWnšÛ†Ôœtèðpƒ&¦Vª ä™ùµß˜§/·èÙÙ{i£¶À¶ ÿRŽð¿ )â!øQ¶!«yQi*`:ÙÜÜ›iaßm\{™ÖV.S¿³fAûg/ЕkëÌ*sðàÚ»<—h|eæ[çtÛd7cÚ^L÷¯ÝÎ!Ðm1¯^½Fë›}ê˜9bks“V×Véü¥ ºxyƒ™ízÏØ[ø6�‘ÙpY©ªvÿaúL£1Ãã¡^7ëÛÌâuó1­/ßèþóÏÜì÷ááºû&Ûðzý÷q„÷Az° Y_Ä ÐO¤Z®eÒÜÍv»÷X…ܽ’:(KdÙpý° ûÂEkàt!…r牶ëßú^þΰX­­­'Ló2_k`!¯w¹«�.0ÂE+‹‚¬ w®ÑÂýíVÄU¸ežs9U‚)vˆ[ÃNWA„Š.O9Ö¢Ó——K!énô]$wÆÀE;>K—¢OÇo+#eC~Da‡y6€ôÙé£wjPRŠñSŒÄâœÔeãkãghà…Ô8ä„»8Z]f 9ù®Ù+4Ó€e@$„„±)—=6(µZM6ž¡}‘Ÿè¨Zã^z#l˯ÀQ¤â?Gl(õ¼´íåD/XPK–7Ó÷²Æ. ¦më#I?¡¤@êÝíÓÉ/Þδ´ºM3÷îЧuŸtïÙþ,5Þã0`¦@{HØÝöXÔѨk®/Jû°¤#{ÝÇBu¢Qò.íoŸ9N^’ž…ç O!Æ´ÌGÛ!ÓÜJ¿“¼ÉDò%éî¦îô»fÄØ©­òd§ëõ3ܹçäÉ“tøðaFÒK?ÃC?GýKhYH<R "¿]¸pàô�T‡®Óc/9‰‹²âw<ÏhC# x2cNì À³ð»<°“dk+ÓÖH_@¸à¤{q=æ<S;¨ðp×pB�8Ú× \‘¶*¤B ¹“EB/ dÚút3ëO!·W¤­°&É^ ëÕ«µþä;|¼tŸK²¯ð’ïõ^Ô:d­³Ù²¬Ùý¦ !bÆx!º³ � H˜í¬ãÔ8J*µ@QÉî§±çâð^FgKÁ©î¤AãaèѵMãLh®ÒÁåRÂò'e¶û¢!-šÍ*9²ß8ªÚ´aV/¼ô2-.,Q³eU÷jÅì‰L9®­™ýQÕ8hÍž±fœB{–ìÞáMox0>Õ_¦nДs½Y%“"²Œ�î„^çœÔÌôES÷óyÒh�ÜÜÈ|÷Êö¿X‡ÚéŠ)? Ø?ïg‰* ÀÝ7>v‚––iß¾E:qü=öðI³ïkÑÞ=‹ýCƒ*𽄫ÛÙ!cBë†éóoEp?ÇDb6¿Ñ„í­®Ù{is£C[f>`‹‰éƒ6ë(¦O–*é‰{„|ð¤Îâð”�U€ÍmÜjÕãÏuÖ}+äOµÃ Á6ÓÆ‰ø>­o¬›}û½tiÂz]»ЇošvÐÚqPE•ë¥\®òw[}äãÇäÕüV1º/ QeúÝ„)Š'a™©ý)2i›yaÝ”Yô/œ�.1¸Ê¶[•Á‰‘BÙ]ÂLM­k[áqøÉy>T@G¯ß3úƺ±m´ùÄ<NîláChSŠ[Wy'óåºmýc—ÝEÛx´°N:1ÏòÊ1ý7Lçk€m0·ìéoÒC3TF»xЩ†´82?SϧÊË4›2›ë¾4w„Ö[i­µLžqN—½’´X7mû¡û�òx®Aœ—Ð2ÁS=ïºEbÐÓâš[¤Å½Gicå"­­ÝrËêp§Ïöèʵ X€Ep~~Žöí™çC.¯”°MaW'5](×.î¸î|™…Óå­»;¥ÝõÚÊ]¼t.]Y£k«f<®o˜µ¨M—/_¥µ^ÂʨÓKú)Öi¯ëèÆ†C-õ&Ój :µ]{kÍÍÍ3˜b¾¥ÝH^_½žÝÔkÒû 8T/òÄã*Þ‡ŒÇ6v¼ØhÄž—´Y´c&3ö2×^=MÄÎVH!Ó%Jö¬²ØF3² ‹B y}ÈÝjûÅþ�€Kø ÿ‹Ú6ïB^Ïr×�,¢0Ê„YЛ wÚrÐNK=ȯ·ßí ÆŒ kà‡vèÊóå^}Hß聯gÌrë@—{š"’*è±âm„d¯Kó-&M—ÍÁM›óN””O¬a4{J_bÊIë¼ã{qªJ½ @B—WœÞ’–8:5«|ô%Tˆ\#ÎP©s\'À É»8Æñ‚±ln®IõFƒ°F=¦¬U­#¡(Ê¥”Þ’ÄÀ''’´Q$[f|d#pÙ}R%–ø¤‡KK|R,À ¤pœhöiŸ ø†ò%¯ï§¦åé’2¶Lï³ÓžçyYçqy99k_}0T6žË¸Öaäï$ÿQ”Äñ•°rŸÛo] ƒU¶ÇÜ/tø°#HüdÎt«Ïöõ0.Ÿ_-i¢}`DªÓ<•Ô§žÿ¦Mô˜rŸ&7k´€Å‰'d0ƒ°C ®Ö××™ÕBŒÍ´þ \‹ØÅ‹y3†±väÈZ^^ækŒï‘î‘t˜þ{k+©wi ù‚ϨW¤‡ Dò¿å4+®o·Ûüí)óž À®—1ç #ò%@ I‚ëê�eE^D"!AP7¨+é;7[ÿ…RH!·Sô:ƒõJ˜¡ä7½NgöÅœvÇ Úë¦�§9Ù^)‘ýOvïe¾×zÞÇØ[°—µ¡D„jN’ V-¨öq8!^­Ôí©uZÄ€cìêÍd?‘êdYp…ëvõˆ»·Õ/Qw`öãŽ.w¹n³ ÛÁÁÝnÈû@°ÙíÛWæ“þNhô…¦qjorúË{æ¨5[§sç×éây0_,§øÕóó!;%-³×=V!-¼¸®>ñ}K\ó$þ¢€Ì `‡‹ëÎÝÇp}E>;`}J¢ >µ\#ë¤ÞÎzñJËNóÐ6W@ âS¿‡îvÿ=éþûŽ1 àùw¼å1ÓófOØàwìû°g@®Ö\S^9w,{D×u(^Oý‡$'ÌŒÒ3ã¦Ûîq¨5ã8ÀÕð¥À7F¤J‰ÃaxÛ€ó阅z ýwv®EM°“�@Ó¬3S À¶l^áP—ñƒ>ƒ}óºyþ^]zùj@[– Î/?@aÉä§K“Ñeswߌ›ˆ¶ì^’‡Ø+™üÍôÿ¼Võùû²y~­â™<õ̘1ãÝ8ík„¸0{ô¦ƒCl[ ©iFŒ°ÙIý[’°ˆì¶êÝ6Â\„ñÑç"°Z TÀ ãp†³YƒýµäÙdôÜãΙ¶6®Ï^Ã`1¤tÕ/f<ÓŸ#èŸÄሆz°Ž–Æ[\'s“.î^¡çZ÷Еúõ[s´9s¾^jÒ¥Ê Áð×ïÐl"¢zØ£ZË<·ÚH[ ‰dJ£øK3Ï@gøÊÆ®^@=Î/î5s(€‡h}å ­]=M­uÖÁÎÆvŒçå¥y:|p?í7ã»^¯Ò­ Û%®“Çlÿ¸> õzc>dós\ººEgÏž§ —×YïÝ2sÃÚú¦yuh³Ýa‚û¬„UÅ¢‚la¿DKKûiv~jõSTj foeÖÞØù+P65ð¼~»Û"yÓYz]û(Bö�\51ã{Ì CôË1Ãl3™·‘W Â%áKQ/�XØ0WÍííáeóG™9ÓÉû”¶Ü­o]qûµ¬£QÈv'ìé±Á¡¦‚Š¿Bî\¹Ýúök!˜`Ûà àŠ”ù-aàn,{!ß:r×�,$ƳëÍ çXÔŒ :٘܌håv{È/fÉ´!B„¾6ŠOAÉ£Y8ô k׸èöò(™ÝºqË¥cˆnKŸhÛ‰ ]NG¼ �B?C³H䵉6ÀååOÚHò‰“Qâ|'6¾×u.¿i†´³œ²ÔôµFBè­¡TAq ‚äM¶RN\C) e²yÅßrò¥ÑÜÎB õ²í¯ òRU­’×[&}*N†‘ööeOÆQ˜‰9Ì/|Va+Ü6uAF®‚ªÛîFÅ‹]yéMë#bÐà�1þKû€²Öbåa*¨/Ÿ š¹AÒÔãŒø¦L%äg™`Üëe¼a³ � }!¡?¦ÕÝö:IûBÙ˜ŸÕ¤¬:Ôˆ Òï5@ÉûtøŒmFîëäïzF¼kô ÀÁÞ½{žà¹KKK ˜@?ðY˜„ U”ïÁ¤ãÇ'ÏÁ½�HÈÜ(a:¤þ%䇄`ÁóqOϲv ^0fQßz.ÀýÞeAúüÀõ�ˆØJÚ F]øNBÈ\‡çü! .É7ÒÕábPš §B )äN½NMÛ?ìf-,äÎÑ9°Ë “Û-‘‹ÓgûS¸iÃ%pX!¯A8¡$ˆêg6ä¢q””ê©ãn8߆cäç°p5âÂvŒAÚ³¡ú#ž~w¿“ý‡#ð¼ P^;=ã\ë]iBÔª èðžr´e÷;3ûý †Ø?”è྽,G´±°D‰AQT¡ã‡÷ÐÉÇéÔÙKtîÂ*]¼„xÛ 4‰M¹&T)#ŽüĆŒ<‡:?`%EeºçÕõ$ŠR]jgAf°a·thœ‡^<I·ÓÆv£{^V”M]ÎÍ6éÉ7>@'O4ûØ9:yì8v„ٰ߃ƒmss#Ñ%ìÆ‘´µMÔ:¯Ýgßne•ôº!H‚IÈ`ôAÌLýq¦^ۤͭ­˜½ç`>�Øcņȑ°bCIë‹C^š©bÆÔÏÂ|‹f™±¯^«rHØJhžÎ-s΄^¾¸Îz�öÒk[¦Ï›±R zf<ö¸ßwÂ3 ¯˜;öQµ~”Ê¥esï–éçM]4Q"™'Ðh64ß$OEdà !eèˆÕ:³<Žhaev¨²-ÈÌ%Ï‚‘Àþ8W i®ŽP)cÖ½Çcó,¯L=o(Òc|w,¨.@KNåF£Ì` ô#„(èõÀd³JUfþ›aýCÛ52ÝÁ›®_»@[;ƒ,ôÜ•QŇOÜ<Eoê¼D‘ixßÌ»µÉ€–Çm:WÛC_Ÿ;NÃê1*-­V©[®RP®Äl‘v€—ê!Õf–¨lÚhØ{h‡:ƒÕ«`7lQÍÌ ÌV…q8‰ØTâ©% ¾ˆl¨‰(º¡ÙŒCE.ì¥Fköì;Dí­ ºtækFG³¬ˆN×ÔŸVW6iÏâ"9²öXb ÛÍJ^XQ-yýÇužÆ_îÊá>-=-`‡¹xþzé"½tá2]ºr%Ñ{fŽØ0sB·7J›îô,¦Ì.Ðìü>j™¾:�ú®[û¢Å¥=f>©rˆeí";n¥nìX²U…4ol²˜Œh›Í"lkü÷y~;Â~Y£Õœ3Ÿ½P† Î[ hà †™†™p˜áolÈ±Ž™W¶,#mc&fàpêgÊâVì ¹¥|–þàÀư‡¡Ïc/{µe]©Q!…òêJž~›¯ó¾¾E|j²—C˵Z•»¾™Ü}N!…¼Žä®Xx”JÂX òÀÚA qHaÅH7(•L(­tÊ}.[ƒvgŸAqZÖ¨ˆS Ö f€�®NŒžº¬R>\#FnýlqÂJy4€C*Däy¥À‚LÙ¬'Û1 ”¶Jôéti'1fz”T58#y–ªKP 㸨n¸ l$åÙRŸâ˜—vÀ †{²E€“¤-õiL„ñ˜™™¥¥å6p̘ j½Z³y0Š˜(øá—*ahÃf„=Ò‹ 10°‘Í+%å¨À!ÍßÒ¶û¸,è£ ¤ô™(ŠOÔPúž#;¡—§9Ì¥\qûÆNéæ-œyF¦L_$bŒ‚h,Ö0„ãoËb�Å×˪6n¦ý™8Öµîx A??»^lÈñí wÃ#ãO>È<€UABFä•%1f]g•€°§'*‰“_úˆ ¨pç0=®]#Ãn €×=¿ê<ˆ±BØ( Ì!ÏB &sÊ€k4³6b`­@HŒW™§ñêZ�¼¦Ž¿ÜnÇÕ RàùË"i‚=Ciñcî" ™'öíÛ—�-�ª€S°fÈ<$'‘�$¤~„aÊ,®•Óø ÚFô#œÒýéà·ówÙ†»B ¹»dÂñêí|™ç€v?ß}²Ói°)·Gðv›XçãN† ½‡Æ;Ö®[•i{w_d÷4Óó…uq2Æ!îÀ’ !@lˆ2ÀÌñ¾Ü÷ O”2{�ÛK%/“ž}¾ÏοÞâ![í5>=øï3­¹¼mŸeãå$$‰¤™håJœ˜zOèq—è |êKÔy´4oöseª–³¡èàSê÷º|i…͆I‡�,[ÞÖ– ™püøAzð‘“ôÀC'é…ç^¤³®ÑÊÕ•LöíÝcô8QËÓ¬1ÓGdYåòêYÄ»Áý�$“@øˆuZ«2g™ÛìÚ GÄ{y€,¬3͆ZHó',Ä`&Éyþ6­'Òc!$î½ò¤ˆ÷³Ø[3ʇêF?_˜­ÓO<DË‹3tÂÔ÷ÞKû÷/1€À‚ª ¨×F\N"ñìäèÔý_Þó °y¢ÁÓÉ;¥:™=‘ÄL#¹1ÀÆ8 •k›|"}õÚ:ƒ,0¬NJ¬¡bJåô„Y$ìÃø ù_^hÒÒ‚qÚ4ë1ƒc™Osk¶?©Æ10uÅ,uW;´¹µF/_ìÐË—D ñ0d׈à!þœi6Ó7üUF—©ÞÜ þx@£ÂblycÑ8q¯'ðYšŒ»fîêð³ÐÏxv½5ctë{éôàñËîþÁœ/ß%*™±1‰j<ÖáÚo›å­ø1 Èä/(Ñ’™g¼!;X'ã¶qÖš¶÷öPà79-§ ÌÆþ2Rà-v˜2ƒ7B„÷Œ( —J¾—¬@>*®¨Ùh™6ëS§½EëkWM?«ÐÌìŒù~>aÑKôëHÆ@¤lCfzƆÅä>vþŠâ÷2ú:À fÌâ@rR޹e¸¢ôŒé@Þ±þ-vN{Äl`æ3Î?µç1ºÔ\fÐ @`ƒJ“zÕ¦¹J€D  ¯(î«h‡ZÙ²$P2Ï2SJ»½NÝþ&á[ÍYvV£>¸ž<[>üïG–¥“»"‡Kµó¾Ô—> ”VÛ>»D™š[X¢¶éϾ@›—M[O¨Ýërø–+×®Ò¾=KtâžÃ´oÿ^K0Wø´è Ã(*ÑØÔs9œÎ$«eÇ}S´3˜DlÉzâ[°áØŒ‰ó®Ò ß<CÏó4>uÙ(à õcŒ‡Ì¢(;\Ü| 6²Ø(6`š¹¡Ì¡=êFwž[ÞOs³Ël»Bx-Y‡¬ '‹é¿}Ó¶ƒËW¸­›MÌŸM‡!ƒìÄÐE”³=J»Q”´!Ö^k#Ó /7L1ÂU™)Å*¬Ýˆ™fË•ÄÆö$„9Bùp@Glw鼜³„ װݯRâB-3¿À~hH¬S¯;àþ‹y¿Y‡-›ç´SÞš›·èöÌ»·o]É‚ŠýÄFnöd»Wí÷‡¼ð¼õÄ–•¦ÁÿR!…RÈŠ^¯´RÂv–JöËh†p­]ÏGRH!wºÜ5�‹ > ‡•Yh:Nˆ#^·v¸ xÁEUéÓÆr:]‹6ŠAôIs½ÉáS ‡t¶2 8 4t. ‚ΣLRú¡v*K^4Aò‘çTg¨—ݨ%J|Φ_òàÒ  PA‡J0€.«¦‘•û´S^Þhâ‚PÜp/RvÝî©“uÄmt`àÑ÷ãûùùY:zô(Ÿ˜GH‹¶+3ðÁÖq¶î]IÛüWæZ[iû4cÚO>eæKßÃm˜”SœûºOídŒ»â†qË»“¢çæÑͯü-iòcȧ¬z}«£ìpÆ£ì©àŽa=6J%?ãø×ý8«€gY\ø{Jî€Ã?ï”gÆè5¥ÌÓêIƒ%ôæCÂfèß4À"ÃÈ¡˜od< °A—wšÓãzyÔï:ÄŽþ u#í„w<_ê.91‡å@[£|�V\¾|™Á2<ò<x™"�ˆ¸ví?žÓXà ¤‹>w�ÐOtXŽ.ÇŒ$!b$” Ê �ž‰ïðÂýº 88˜�Ò@%¯Òð;Ú_€08y‡úÀõ�Þ¾×m†ß'9M�Á\%Ì0]Æ“B )äN—bžJ:¯½\?/yÀóänµ†_ï´í-K´ýD¯ÞÛKH.÷´¶�®átócG0ƒ–c`³=™í'ÎmH P—“Ï©Hžku˜ŠÑö˜}C—O0ÃÙv:P€G¡ÇÆ¢�.Ð(­å<½Ê-iG>Ø6<cŒûõ†%ãØÑþ%ŸZµ ;¼XG�€z…œ ŽÁ«k8§O_0ÎÖ---УOÜO>þ =ýÌótöåËŒghvnÎÜ»¡\:n¸=ÑQ${øˆC÷Éw×Ûúâgìù�rÕn¶4]ÖÚÉ!ÓÛa\ˆ_`‚¹™=xÏ1:yâ0?zÞðÄ#T«—Í~p‡0)—K ž°Î ¾•°ÂV†–éa·z™;z¶d¢·Û…çÛ’I÷7èÕ¢%²zK§Ýã~‚öš>¶±Ñ¦UÐû¯µis«Ë×VjÖžQ®Xýá:Ü|¹cmµ¼4GöÎØpwåRZOú§Ö¹%콯\Û2¯MÞÏ´üÍ‹Œ�1:UyŽJU€™ ¿›N‡oô“֫Ѩf•ƒ—ŒcwŽV7«Ô¿H3 ÷QköóÝ£+¼hœ¼ç¨Þ�ãÆœ©° …¦Î�¾bí:>°ó@hƵ7´ÎytŸ …¹ÃèÉÔö8Òx„?1y1:§¹öòÚв&˜DÚ£Uóh®jê}²J£Iß\?f V¯r„|8Wc‡ÂóMÛ  8©)õ o[°!,´Ã²¦Tš‹ÔlÌRЧvgVQw¥5j5þ3³œDf`MOnü±SŸprг˜ªŠWá2DœÁCžÓÀ.À˜�!sÍd“žl?GoÞz‘,(Ìè9á˜Êј¾<ó }uþ +óæÂUÍ=Ãò,Æ�¼E6ç ¨‘¶WúfDYG¸ô|¦�0»6laœòÝ-ßà5 ðÃì";µóÆ® |$ƒÇºuÀÛ5€A"1xj'Áõ�YÔ›s4·x€úí Z[9G+W_fv�eÎ]ºB—®­Òòâ<=üð½Ìh±3޵Æ�‚ÈŽkÏ‚k<ß»=»Ï2uŒ¾zåê½lÖƒçŸ?MÏ<{Š^>{‰&AƒàÆü™Y‘bð`)n·’ž…hUæ*­Ù%j´f¨jlWÍÙy>!?¨Ùšµ�e‡õtà­Ö<¯gm³ñ¡ÓÙâ¶+ËìÌ|µ]¢x ñâµÑç)[¢Ø8úý.‡ØÁÞAÛp0NZ­¹ä°BUé~h«.k§•<ȳtÈô.ö'<T KרÀlÛ~ÃúfÖx¢Ÿé–I¾ßÍ>Ì^_Ø ¾Uŵ3jÛ§ý®Â� éZÅk\Çÿú\!…r¢—¦~”R•úâò�¦zÝ+¤×£Ü=�‹�T—2v¦kmôP„frG›ëDÕÎ}IKhî…:W#°4«D#4Š+¶äÚ)ê* Ú,kÉÛ„k D³o䥑ç�ƒÞ%ŒŠ�VÜðx ­°NËe±Ðʵ=‘6IB*h#Ž«TØ0aâlÇßrŸ®¤‡<Àð%”ûrÊRÒ€ã÷á„:©PzàH•“ôÙÍilØ¢|áS*QþI0IK„Hx]?œ?ЎäŽ,•’—éKyië¿u^o‡ìÄ|±Óoy’äã·†ÜVBÛ¸±¹ÁÆ)¦uFØ>`ТÀÊ3¥~Ü£ûMžÒªû¬ü.÷É5’†Ì@ƒ ”v€ì¡û´¤±­ï8†Æ©#¹WÂH¨ ôU C¡Ár¯nOJgÚ3¯—'·|ÀV $C^„õu,¡Bžzê)"Üwß}´°°ÀסŒŸ§¸¿£Èg0[ <h 1ÐÂôõœ†äCæ>·Nq­�4p?®“¶–y_òç Æ÷��@„;p/®0¿Kß“‡ÅÈ|(à ”ŸÏ½XÄÊ,¤B ¹sÅ5~kc÷7ë=kˆ}-Äžú':’Þó²Ó-"J˜…íùM 5¢çØt¶³êßq²Y¶@®¾Q©4¨Üª²cŽ õõ³_i1m=@8¥ §eó 9t!¾Ó W]·òšƒä:„&Àw}£Ç^Ù,ÑFÏ£c{Æ´4[Ê”3Ѧ‡,põê„*R{kH+×jf¯´H?þ0=úðýÆ©¶FkÆ¡Î^UvJå…í¦+®¸ÑýIt-©_Û.97qxy¶­÷Jµdö=U¦fÇi{×i>kgýœçÉß¾ÚhÆEìµNž<Fß„ö7<ñ�9´ö�ØC$¬3@ GI¸ì7]°ŽÞ×ݨd@D1ó�ü[\ìÐú°M³ZÊzð0èzTÈÌ�ìX�ȈÖV7ÍþwËö•®Ñ‰ëS×eæÀs œp’‡9Ä, !?€|óÇÂâ,;8—„Ê@…6”êSi2–y¯¾Ñ¡ —·èÒ¥Ktú¢ÑñzUª²Ô`O© ‡p™YÂQ`Ïq˜0@ŒF¦îûÆ)»Ù¡•µ-Í7é`kLË3fOM-jG§hØ_5ù:A‡¿Ñ|g^ÑõÚ/›tV9<I€±ÅŒ"‘u!Cå.Ñ^ü'Òþšþ‹"™€ ²'÷qâl ‘qVQ4$¯lô“¿ÐÜ;ŠÊ4m0Ï`lFÔ¬·©U ©nÇü¼: ý}ü\æR Ǧc ¶òâ~ hÂyòíIz°1°+Ë^‰uzý÷]èö*mµ7hffŽæŒãÎn/nGûNÌš€1²áMFž±ÝÀ¨˜ïzT®Ò}ktÿè¼Ìá>|3o\©,Ñ'ç§Ë³ûM3&_f‰ªlóðJC3£ÔiŒtüØþ”øJÙ³N{òüÌá½î@4K¨ÌÍ¢C‚Ý Qo1`«³Î¬Bh1oæ¿=¹¡«<f.ŠF¶Ÿ×ßn„sfÒi¶fÌXiÐÂÞƒtäÄ#téåçéÒ…SF*0:ßåk«tíêØ·L?z’ÿù¢æ+“„mò›^ óüWf€º<uúeúÊ7NÑ׿ñ49s‘®^[¶†Ç‡ÏŠÂmĤР^Àøµd Ôœ™¥æìÍïÙO {R úº_â0:¡‘²³ \†Ì{*ÈÏ A 昲oæ‘eóݳ=l™öìt7LÛ®ÓLkÖ̹ËT­lZ¤s” +` Š™úƒ¶™ëz±oÄk€5Ó‡Ð_`kt²kIÖ¾ÑvÛÚnÄ]31Ç Ö͸CZÃáÀØ:|€¶ÌŸ°3X=û!¹<°¦Ø\0ˆÊRˆ™WõžDÛ“Ý>öZê…RÈë[\â4ÝàVü"…r'Ë]°�-”†±QÈ/§JD±#Š«ÐÉÕeÈcjÐ@‡¬¡+ÚæÈÅw0¸@äÙâ v70‘{%ÏZ锿Ô 7ý.øC¿ëüèÏò<ÉcÔšXÜ(a Ð$É£ÞðË)Í¢=Ä®ÿ`‰žx5;” Æ…Áf›•)�:¤ÞEy´ºvœw:mî/�SÜsò$>rˆêzlh•º³T…¸Î5 òÉ*gH¢4ß‚dׯ'ɲ3ËIº0V#V6Ñd~ÌbaOÞeÙHÜör§Ûm,Ïë3yùÈ/ާ)�™IL‰Ï‚wƒybvÆ:¼å4b©RÎôs1ŽBÐöòY�7:4ŒZ¹Ð}M~Ó}[opÒ†Cù„ç¶D4ËwÚ1ïÎrnÏ<£‘[¯0êJ¸=Öt9ô}yóA^º;ÉŽm«êI^KKKtÿý÷3 ¬�è9 †€``�ðáÅ_ä÷7½éM|Ê'à Ü+ùÆ€úÇØF]¡=Àjæ <çÊ•+\'´�KÆ»Ä~;|ø0§ã$^0vàYRÜgæ^bTÇ §í¤œ.éV9”Ozjy €.²ô‹—é£ßJú(#^RÇ(/òħ9‹g!…RÈ/XëÓ8£vÃÉ b¾‚g_½²BŸþôg鳟ý,={–éíÛ·—žxâ úЇ>D'Œ3ÙžxöHé)¶W7¤Éh<ʰÈé½sª;xDN݉~'{,¼pjÔ‹ÓÂ^RîÑ:[ºÿ³!2\@®Õ»ìÞ N¾j¥n8`¹êš=à*¯ËÖaSb™œ’–{óöÉ.*ûAfð8L�¨'�#zé2ñéÞåùšyv9â×{7„s8pp‰—fèéoœ6y¶ Dí¯x›ö.ÏмqNŽàœÅ °ˆÃ„¼B’ÝãÆ ñ ¸át°¿ƒ^ßë¦ê2˜N&Êñ1y±^U.ÛÐÕJƒ™}à[;Lós³43‹uzòM›ýá^f¨°z¬=eŒ½žØÐ7%ô…§N/K~¤/Ý,À"£ÛEè’r¤á™‘´-œµM¦ �?�Dè÷†tyeÚ[}Z[Ýb}³Ñ¨RµV¡j½RÖ�‚RŽ#`¥˜›kÑÞ½ f=KB[ø†O­¯X}'´'·Í˜¾|é2]ZðžüÚúÖz³±~UcÝ—¹˜¥1`V îÞƒ8œ‰™K™a!dpIÙ7ÓV•êÍ=Ti,ÐV€‰>-Í™~Ó7û~ºF½ÉUj|…{M»§Öìãx[4êž&06�d4‰C ”=Ó–�9“X�úôñÊ8Ù'ñË®ç0sõ“qÜ.}ªøåøÄ?ÆQÉ‚¥†ºÐØ4X zî¸ft˜1fþ'!ZjÐL°Eã ˆ£O³4¦ºqh»l¨sÌžÕU�P�¼@‡’_åG¡¾ÄN#º ˜:ÆA}¹{Ží`3sKT¯b¼—c.“O3AÌú6æ—Þ:½só:2^¥Ê‚ùÁ7úó¸A¿¿ÿ=ôâÜQ*• J b¦2s]Àå°Âg qy0—qX&óÍHlg^–Í@ÑÓeNÖó¸ï¥‚�Y^ÜÏ íöu{[Ì‚€1 F 0Xfƒ´ó<  ÿæ øQÂxÁ¶'óŒ#÷¾–ö k—Oѵ+/›ñÖã~|îÊU~U*%:qd¼ç3÷Χ!J‘÷wŸÙw&a”E…ÑΉóbÃêf|ÜVŒ~ùì —èk_û:=ýü/¹7GQÉ‚È:ý}ÏOÖ>þ›�UªTëÔœ™£Fs–Z3ó\^/žÍVš$ÈWÄv)àQÁOØ)m?IŠ÷WfoŠô–²éÃûÌzµH½nÛÌ[tñÒ253¦mây_úeéÈ¥×k[†Š(¶+ôV­™ûLþëMfCÑömǤHÙgT͹6·mÍ2Å~”~§ícÄ¡Æðb@¥± �´¹ººÆk l°'ÕjÌ™ò²SÞ ùÖ“Ýô×"ßåÝ[Ø )¤•<¿ûY‹;ÏëZ!¯w¹‹,"K ʆâ8£Ø´[ãQ –0yhNw#«ÚÁ&saoÐY¾GÍ[S…n7Þé{Äp¦éû%¯šÄ ŸÑ,Ó”í`–gé<HB®u`è.ðAO\£’äYèò\À)Œ‰©1˜J{ègi ¦.ŸÜƒ4ðY³Šè¶c¤„Àg\šßš1Ü:tˆŽ;ÆRŽ EOSf”Eû…n;Ï×NøÔè¦OÅK Ëú©v>kcdÈ#ý!WH›»÷$ùñ^[$`ò\6øÖ˜eË&á>F̰#|·' ýõfÃ(÷­„æTÒÕy üÑýB4°BêFùÍû®r,×H{¡ @{¢ÿÀÀ.ùÈ«w)3X®\¹l =N',løŠ4o0&À„> ƒô?x†6dºs• £Ž«@¹ã4Oy¿ž\ïZ=^5› Nó <�I�È€º“ p€qáÌ™3 D@þx྿c|â…z—ðHR߸bñödë‰'’¨w€a�ž�Ã…ŒQ#å]º =„ Dúò…ÏHÏü!oÒ}  ©oÔ-@%ó9Γ„Aßgƒ‹âõu!aAà„Cý@ødZÇÒŠŠn!·"è«èóÂ$P’„9BE?·ái¬a󱜲’¹Tõp˜ˆ`ÍÂïëtV°Î¸‚¼`m–±TH!"è˜ÑoäÄáÍ æqôC¬»'OžÜõ}X;0ï¢?£ïïVÆÆÉùå/…~ã7~‹¾ùü ¼ßÄ8:xhýÃøÿ¤'žø¶Äá»ãêóŸÿ<ýÚ¯ý¦qn^å1¿¼¼‡Ç2@ŸùÌgè/þâ/è{>òaúþïÿ~.#dš#ûÕœVE=»ú‹Ö]°ÖÌSrmª›Õûà|IœtbϦ§A ñ2ÀjˆD8%‹ÓücË„Q«6Œ§lÿ]ZàT5¨Íáœâ}/ïyCÖ4àVÊ’0ŒE6Þ<¨Mú–%Àg6ß³:íË«eºÚ‰èøžÍ·Jñ>0Û>p¬_¾´Jó 3ô¶w<J§NŸ£­Mó€ºqàh£m~e/Þ‘ûNÔ÷WV²{NâSþh‡@"Ð:Ë´¾ÆºXëÌž¸Óä;›(X°»—½{|r>b€j¥LšÙ[›úû££cG˜vkðº÷þ÷½%³/„ˆßëÙ}:þf€”g0^¢…’ò¸ ˜7«“¹:DŒJêö Ëö0¸ôÿ�S�X±Ž›=ÚÚì˜W—ƒ$4šUã¸/qÍ`Éìxm]„R5×ùF¯BK˳ ¨˜i5ùû;ÊÅ)+4ý–ÝbÂß çass‹Î_îÒÊz›.š¹áSÖGûÍuevôZ€%ö)êû°8F aBÛ®ÆñߨÏQ³Ö`¶:Y ~ Èì£ùä÷]5ê@£Ò š×§r°E‹fHnšü 6.S£et‚ò S2SÃdtÑŒ?è1cÎ6–2°T3s‘Éy!Ú`àGŸìG~0–�"@(ߌÓ@úöÿHËÃø7:…cðµ\ß�a•[tiÓÜG¦=ü†é“cš­ŽÍ³6M9&tâÞGé™Ó+¨Zö tìC[˜ôÆ–%}P ´ëüü"3X´·6¨ÓÛ¤õ+çé$uifi/EåÍt¯ÑÑÁ ½¥û JL]'6ÒúÂü£ôåÙ©W7sY¥Ä`€À8¼‡gC¹Vü Ll̬!ágü‰éSQ…„|(Åãp( ÜA*‘—ŒUmËÑãB|pç±óˆ½é–K¦o.î5zÖ^v®Ã!¿¾±Ê` „Oi6g ”ôQm?¸Ñu.½$‹Ú}ni™fͺ¹ÿÐ zé›_¥N{…7Ñ$äqùÂé+tîÒ&=¼ŸN;Hsó³fª0dz„,4ê)Æ8Ù'8S3öÃ!ìCOal@'½pé½øÒzöù³ ºäŽùÇZ×*£ÄÀůe³ó ¦ß,1¨¢ZmÚu ‡{ì‡TAæÏ–ßËžTd­ãµm’¬ÇÚ^ûÇÂÂ2-Ì/3øí  K*¦ÿl]¤ÓÙäuW�"�l ßטêŠEÛulKêüÈZÌ}ÒË_“t_ÌÔ©wkÎh±mÀ¾ƒþßí¶6NB¤,åÚ®¦Ùœ )d7âÚ’§IÑ· )¤•¼õQ?í÷B ¹[ä.²jËé#ëØ‡3̈ªY+ ú¤‰¦t…h €äNÙJ Ê8>åo¾œÒÒI–Àý,éi Ãtš¸1îµ\%s#ªÞŒñLÀr¯.†9ÑmËEldÓÏÔJ‚(:òîæ;™œ:ÑQ'ÚEòw´?êTX,#Jœ™‡ÚPÖÆFÑ<°‚Ÿ”K×=YW¶CB·Ä€Ek *Æ0jfZ=ë…gZÿÒm°­‰¢¼Ð.·gs<Íp(Æ¿0JÙWT!´DRb…x&n#NH[Kùå9žRØõ ik /£.r¯6àè|KžõÒýLú¹�yÄI.aAHÕ³6á>ß76Öéå—_fG$êÁ5¶ë÷N'"òœ={†ûõo|ãÙ )!ktþå™84Jq¾§S÷¤['"»U¸u-õwaw@ÝA$‡´ê–FÆ ÆŠƒrßƬ&zÀ=H_˜%$ôÒA œš“ðh'´—´Xç>Ÿ;w.kqšøôˆ�:ÄЃ®Çs$6¬ô ¾“ò =äUÊ*õ-aŠ@«,�"”,È/ÚIÓ²^Èópo!…ÜŠ<ûì³Æáúkô‘|„Þ÷¾÷e~û…_øf™ùGÿèñ|õ ¿ð?™1¹Áã}cèÑG¥~ðtøð!6 îsŸ§ñ/þƒeÞÅšú½ßû·Ìœõ¾ï_þËÉßýÜÏýܶüüáþ!}ãß0NçÈ€¨B ùùŸÿy^3ÿÙ?ûg¼þÝŠ`îF:`pøÄ'>±ëû~ý×>þñÓßû{>úÑîò®’YWÎÒ¯ÿÚoÐÅ‹—èîçÐfØûž9sšþ—ÿåßÐ?øÿÀ8,Ó½ÃÜü¼Sù4ü+!X;>ýéOÓøÿOÿ~èàw¿ëÝtÏ='ÙðÔ—þúKôÉO~’Ë�ßþèr8*ÉÓkiTÍÛSؽI´loé~‡]x‘uôêtÒòx‰ƒG-ØûÛýböµè]|e¼5Ð3öôHGbÅ,‹ýGqè[3ìX²·F¼ßÕú„ä+q6ñéwËPà±Ë8bÇ+òåÅÌýA@Ï'ÚÛX¡½f¸0[%ʉ±¾¹ÑaGܱ£‡¨»&°‹tùÊ&Ó¹ÏHês0óL—MBt¿3xå9|ô÷\=}ï†Ä”öà§2ÛWyˆØÜhÔ“ýÏ6ÀÅ� ŸÖN'>¡]¯‚Nª3RØ¿D÷ßw”öï_¤V³NÜwÂ|·—÷{XÛ¤lè»×}DÒô³¥?º{æi§Žw#Úö ë’aÀÎVäk/B´·z ®@¨’õ €pûæ».3š”XG-™¶¯š: ˜='ÕG•ÁYí[F‹Š 2??C‹ËsfŽjð}%ÇQZ=Œ¬†8±‡¿²Ú£K×Ìg³g^i×h8Àq�Ñǧ¦„²RFKŒ78¢k–§ÉÎSɬ8ê£㸞¸Î H0mÒ{Ô �ZjÑLÕ§ù†·Á&5jFÏèmš>³H^å(Õê÷™ºè›ç_2M ‚6ë­H;ôlÈf±4,ôãñˆ6g�…Ç'Þƒ1žì3á<àšÀ¢�´�PÁ´•*6JT満maÄzr…º#Ô/ÊY¦OŸ¥VPÞ€:þ2;£ À09 úñx#Gÿ(iܧ¹pD+¦4ͳ£.½¥wšöžŠæy[Qƒ¢²G9ÿ]­,еú2õë-›w.°Ñg|ë„ £l¾'_tû€ÃAè=FóL†-1";C?n/žJ”ä¥ö ÷0OÞœ/ïÈú„„šàk}«+Ì0^ƒA—Ù��|ƒá›à‡hùD 0h7C2›'±„1sH`?cn3õµ¸ï$-,¤îæ5êš<Œúíd.yᥳ ˆ8zx/=tÇW½Våú¶vŒ˜uÓ|î>¢Ç,4�L]½ºNçÏ]¥ž™^¾ºÂº¢¶%êúr)v}4ãºaÆ© 09ÔfLÌ.PÕ´yÕ|‡08ÄÀ†ZÌð§Ãkå‡ÇpEò$v Ý®iöÓßíÚ1(?#, Õáh@Aw“VV»\ÿµZ–—0kI)fÂx‹¼0™ž½äY¸Ð¬&y¶!]†ÝÊníuY/°¾ÌÍáÐÉl|h£Ë,»x•™ÅížUÚfGuËPÈ·®\Ϧ—g#v÷n:­úo!…RHž¸óŒûÝNr½9¬B^r×�,ìF!LhWÃ;çÊÛÀš ®8É .€A‡ìHk<Ó'˵SD uÚQì*Ay Úi+Àq"KøˆVXµ²ªò íä—×NÎg]L£?SׇNGþ¶Š]6”Š.§N[êOêG³kè<é|iô»¼‹QL;£(JœDpÌÎÍͲ‚kÓg¿NO”M›/«˜y±*äv�«[§;)Üv×õ§e»a˜¶)Tw¢£A-ÂØ"'¾&A˜�,D`è€AS‡Šq Ò'ã2­`@÷/ˆ‡ú=¯~õÉ«ËÔ�žQ8ÚQ>8uXwüÀYCÈ… 癵B@@ºÝݼ¹ŸeŒÁò×ý×ôÈ#°£Rž«Ç”ܣå¸l6y)c^~¦Én~×å@›`!Fj P—0ÈÂ�*S€�^@È8k1Fkq¼RÔ%^¨ “£êiK¢�Sè‚&}\'À\4ÄPë._¾Ì†a§€‰/<_æ <_æ<CÒ´sÀ(iàm ¿ /àoü†rÀ¡%kŒa)ÁûdbO*á7aMÒíTH!·[0ϼ÷½ï£øÃ3a{þà>ÆNïŸýÙ˜�‰�ˆú'ÿäŸÐââÏ¿û»¿ÇŽé£G0PªB¾¥Ä8—6Ö7饗^bÓOüw߬ó¼ÖüîïüýÞïý>ýÂ?ÿŸ’Ëa,ãÇ~üÿFO>ùºUÁúúôiúßù^³� yï{ß›a9rô >òzç_ýÕÿ™.ÀÆõ}ß÷}æ°;EÒ}"Ù­xhݬøCÀÙ«»zLºŒ¦qZâø‘ýV6å¸`_k˜îÚÏf?S/±sŠ"Ý6Æ^Ãá)ÇU–ç!ŠYð˜=âœécvª†ñPtÕÕãpëté#-ÏWsYPFÃ1]¼°Bós3ôè£÷ÐùódÑ1NÝ…å%ó¬Aü ½ç°ƒè9;µíJÒýz¨�Ó7àü1÷·š åÕ¿3û‚Í5ò�S̶Ì=µ ³.ì5ãî±'îe0ÓŒIkÑü}Ͻ‡Íosd™PRý"{@ÙW¦íö—ë9,¤žÜºÜÎ&¿‹Í@t}Þgš~Þî¬ãµ?4ï�üv8|F§Ó§áxÄ´øå öØŠ3lÓ‹|Òkpm­^1ueêl¦aæ¨T@/¶á ÒÃ6<#%í9@’­>µÍ>vÕÌuç¯EÌö³aöѽ‘ÙØçV­C>L÷°)‹cN{Þ ·]3a’ÃØ;37 •ãS辌[;Ì—`Yjâߢ˜=JuÛ¦¡GsAÓTIÏxý«´BƒzÃ5ó¬%ªÔ›º8nê·G“ð" # ;Tö(e{‰M�>óVX€‡=Ö†1×+OK¡9D|žbuV3*"dÀÏ%%ŠÐ²CpH[‹J ö¸L¥ E‹3}ª®`® Ë-ó»y–_7Žxë§ ©9éÓ¡ñÛg"Ó–†4ô¨jÊëæ¾ËóGè¹IƒV¢ |ª˜²vJ{©V1vœö7õíñøœ¤`%Î#r:$/�@€S?¶3Q 6 Ñ?âP»qè 4RÙ+ÙöÁ\Ãß{ ›€>¬¢íG®nªmFÙëEÇÍžê—Ð ;`µ@(§vá'»Ì�‡¼ô7;¦§ëTv¾JÇ!ØPb“ÖÞFl[,™~°°¸Ì`€ú=™q°Jk—O±ž74Ïõ;¬ï>ÿÂYºxqŽÞÃ!öí[¦M³f¬?Ý¡ö†K›[tÑèž/Ÿ½BçÎ^¥«WÖÔúYÐÑT]úõÙ¤.QÎù…eZÞÔÌ -WJø//™Ó(^ âð1vVé%ÏÎo‡9-kKPKú]ò”ø`Ò˜Yk0ža;BÈØ´}f¥@� éõÛlšÝ­Ø¾Wµkn¥dÓõ²áŠtž\û›ØŽù6eʳO¹v¸m¥ž²VM“í×ûÌ\W�<7d[@· �]ȶ…FÃî/ÄV™Ÿ^´øVÝGoôž;Á®\H!…¼þåVæ’›™Ã )äN“» `Ál‘A”ÄÂ…dŽÛCYˆsV‡ÐÎIwc-ß˳&ŠaÚ»¾GîÓ"yPˆÜ«éeÝ|h`…«œj ‰Î«Ë†àægGEÂQ:Ürh‡´|–ú•¶HÒ¢ÔxP‚HþݲK™ù„ûh’Á:è' à fóósì…¡™ïSI”B$O–¾P¨…ƒ$Ö©´Wš'o[þ¦µµû]z´C¾b¶cÚò®¯Ñu¥¿Û–Ÿ(ç¹î5^¢t# 6Ð…öÔB½ 9ÆxÀ§«0æ`lÇУBÁ‡ÁÞÆ0öƒZ`É5† ÃeoqïÑqu_pûŒ6Œçõc—ÁE÷EWÀI�®"ñI¤±1hŸg'$€̘…ä²Åd øq½Êï00ð©2ãÀ”px>œ�œ<y’Y-$Ïîxv˯ßóæ ];mh®gLÐaTô6Ô„ÅÀ³0&q¢/�V� A¹p�0N¡=q̸҃€\ƒúAzúþÆ52'ào|oóôù3žƒÅþýû9m\CÒÇ}a�°×á^|/`Ýå;I_ŒÅœƒ>ƒzp^c˜Ì/øŒkaXÁÉXë°)Êo!·(è?>åóúf¿‡ïàÆñ f‰ÈÌ;'èàÁCôsÿ¯Ÿ£o|ýzÓ“OĆ͊¿{øuðà·ÿëÿúÿ1ý¶,üøµC~bùÝßù}ºÿûÌÜy…cß{Ï}tðÐAzá…ç…o}ë[ãÐB#q‘00N1~1‡?~,™_Ÿ{îyfí�@äĉ“<¦0¾ßñŽ·óï—.]¦§Ÿ~šC�O=ñÄtìØQ*äv‹Ý“b­DŽ1cî½÷ž{èóªTqª2í702?ûìstêÔK: §¦Á²rß}÷2« ÚóäŸþéŸòòŽw¼ƒO¿ëçI?¼pþ}ã©o˜4cêàazìñÇ8L�úø¹sè™gž1ûš!3ý%ÉÇÊÊ*}þó_ˆÁ‚Uî£oûÛyíÊŠÙ/ĆñÅ¥EW@à(þ;çûhfv†.]¼˜\>€žûä“oLÒpëkgƒyú;Ö•¿ù›/Óµ««ôÝßóÝ ’Bè-°5½á o`pñ§>õi^ÏÞýîwÓþàÒ¿ù7ÿ†¾ü7_á±…ý…ç½Vúí ÷t]oS½$λˆ¢÷;V—ˆ’Ðöôqº›æäÓ{"½Ï”{l:Ä68ñÁ€~Õno±Ã§Vµìyç œ±0tEB¬§Z0Â$°{¨”Ù­DÍÖ¢™¢«têr@}ãä^˜)ÓLÝ2k¤ÕÀîfÚÜêPÅl?÷-/Ó3&F“* ƒŸ¸øt¯¯®·ï¯Äþ"Û~6Ê$c …„½Ìk^š€DfÌÞ‡(DqÈA«Ë€i¡ÕªÓìL“Z�ÍÏ6ÌØo™9ä08°×|ß2u3cÖPóÏP£^ÛÓ$úÎ Pàl 1©ËÀ9INVç¨PÉ5ÑÔ¿ó>»º8ÑöП�’‚õϼzݾ=ÑÞR»30{Ó¾™ŸÆüÝ+šþQò¨Q©‘Ì–…AÓcpK«Õ f£Æá1Áê13ƒzk™¿­³Ÿ÷¡¥4´" *p#M»Óåð†ëë£ µéʪOùgÖû­A“ úx>@*ÕcP…“6ì%ÆE½^Š÷Ç匭E:1‡&`ŸÛ0VA½R£ì´ „ÞaCÄ&ãŸ,Hßw&�0=”â<Có:C•à"ùÑóÝ~ãœ>núªOãàš¹º[Ǽ G@‚ó‰ñˆYÀ˜Gn�Û3jDüE¢3óæ9L9Áׄ%b& —Û¢0Lú=ï]pˆÃÔÕJ@“•L¹ë£µ¨c¾¯S7¬ÒýÝKt¨·B ƒ6Ý×™N5Òµòùå*­Öö0;ÅJ©IÚºÈcPHÍØ6raÒëSkjC3OÕfÍ­ñ˜BVC3Á—Ï`BAYc4RR×` ñ⺵¥õâiÙ‹]õ\D1LÅKA:Z?uÁ®Ž¯¥×§ú³;ÏÃvcC.ÎSÃ8©‡ƒ>ï kµ;[<'[ ý,³³èçZ]lÆàˆ÷hû÷„çz�æ|¿Ì€ºf³ÏUfOˆÔ±¸„ƒ œ÷n{6W/ÒÆÊUê™ço™qôì ]:{á =¶Ÿ:ý!zñ"ƒ):f|E~:_x‚Ò!äYJÙ<³jÚ¬\­'Lª>^Ыgöp¿âü›ûfÍ^y¶íbû˜„nIçÛ̊Ԟܣ¦K”Œ3¹_v"I›ÅʼnÂ(Y£ÂЭä`×ñxÈ7cŽ@=ƒ9B€ž²MµZ3œÆ`0[XÆÔi.´âÅÌ6”é{qÇ!Õðv~Œ¤>\nšïl ;­ùv¿ëK¹ FM˪),°¨/ì/06k¦ýýØÎ&aQ’|¿6Û·BîÙÍ^n§½I!…RÈÍJÞ<’ç+ÛíºYH!¯G¹‹�Vù€q›oHÊe6M˦¯s  ÐÊž\¯Å®²¨Aú”»VóNèË}ú%× ½ÎWZ)¸Áu¬ê ”»±šæ`Õϰ´œöoqxë]Ú©* KËæ–U=$SOæA§éŠÔ“.·ˆ�Vp*†ðö3õ±8)çv’¶°‘L2uw1pÛ-þv[Þ\§µÜ«®°ºhd?'t¬øêçåIâDϤ¸]¬]0šú;âBݼDIŽ¢ô‡„hÐt®^Ðôi$ŸãäaÃj˜+’wsn?–ñç¢óó ï¹¥ŠòÛÄýM+ÒZ4ÐBÊ';spÄ ¸"›70Œè©§žbÀ�ì6ÿé¼$Ï”ºÒã-çQ¦ó,áI�Þ€Â-ÔɺÜR×Ësä±ìèçìd�ØÍoQ” sÇ%êMÚZ@`®€ãçøñã|zÀ õà@”`î“ÏH[~PÊ%á?$d ê× �Aào8ñÂõpÌ è÷"Ô/òŠë%< Þ…ñe ‡0[HxäÀ g‚ßä~”Écç@5é[ø,ŒøN¢H;â%!V )äÖÄ‹Æ9+Bä!¼m×ÀpìØ úÌg>Go|Óö6gN€AÛ/9uÊéFS�Éoö9ÿþßÿïœî#<L—/]¡¯}õi3wì£z£Â{ºO}ê3ì¸þ®ïúox,ýÒ/ý2¬ï�Sàõýßÿý ²øÆ7žâp(ßxÁy§ü¾}{Ù1ŽpD`�pNù—^:EŸþôgè'ò'éĉcTÈí8.Î;OÿþWÿ=?1¾ Öýør?³€Ÿ‡xúéçèWÿ¿¿ÊŽžѵ«×è7ã·é‘G¢{ï½çد~õk¦ÿüoܶïxÇ;) JÀç§÷+¿ò«æ™/ÓÕkWèÐÁ£ôÑþ}Çÿå}¦oœ£ßþíߥϘ>€þ‚5Ë2ÚYÅåËWè?ý§_㔳s-^?ðìm� PÁ‹S"ÙãD¾öÕ¯Ó–1Ž;µÁ†gŸyÖôßoÒý÷ßÇŽzÊœ�ÕeÉ/¹kÔ¾ðEÓÏÐÛÞúvJ}å+_åp<o}ë³´¸¸HôGdò~/½ï}ßÎë|3}îs_ Ó§Î0êFœ�·CvÜãEê7/?,DöX©þdç3{½o›Q”ìÑ /¸u,ûR9õ»Ýñ}H‹Ož6Zñ¾cÈN=�‡�D®×ì$²ûèQ’Ÿ0œÄ{%ÙÛý[ !ó*T¡÷6l|qÝ£Í^DûæZž-%:SÚ�¶Áþ|@3Í:í]ž¡þ ¤••vâh‹"{zlpîÛù?_ßr÷Œ®Î˜À:['  ƒZ-o/ã9EtðÀ2íß·HÏ?‡°6dH³U§ù…šŸkÒÂÂÿ~øÐ~Ú·w‰Yö,/šù|Ñ”¹Å@-yæx*g¾Õa+SöTÙòºº›—ÑnV¬ŽeõNô°!ŽÇ`¢0ðNŸ2m¼¯w#Ñ8×�hJ:ÓÞUË ¢ó,ú,‡B0ŸÐ¦®[3ØÿÖhn¶É€”;eM¿òJ1CE줎Y„Aè‘Õõ6][Ûà¹ù‚™¯×ÖVͺ;⺆ó´5nÒØäi dðÌ|�'tµÂ 2äh°$ð³âzÜv ?ž+¹~ÌîÂ:‘}y¼P&îãÀ]`ÜÄ6&Kˆø>2c20eóc0W0Ö¼ õ&¶FÉcht5:oêtÝ”ÿ ÕK5”çÍu‡V‹3†×ózdçŒä? »L&Jx$³ÕÌ$p÷/f݈¯û6´',˜hK†¤lŒe€‹;ÑÁ  6i~`ôoB3Ô3eõé…¹Ã&Ÿ}zðÐ"m7è¯ú‡è…ÆZ)Ï‘Ç@l?ÃZŽíTÈ扅ùeÖ‡|`ÛCàymÖwpr!­¼˜qÀ’êDìе€6k'ˆ|J¹b{DüÈ–—⾈÷0¶ÉøÑc(oÙnÛJ×?Ö_•­B‡7rçg„=ëìÐÏÁz�ÝêÚÊ3'·ÙQV ¶ÿÄ  Ë¢0á:ç¾ Ÿá³Ã»ÌýØ =áérxÜç«5 ¬k4ghaq-ï[§õ«—heõuÚk ”zî¹3têôå$¤+#Äpe“? €½¡6C´ùa?jõ¦ù»ÎùdÐŽÒ»uhÖ­v‡Êý;ákµ&—y›)3í«ùm'Hr¯mëYf¡ØÅuŠ5ûf«ÆdM´)Ó‡ùˆÙE´.e‹Ãø0ã ÕšåöÆG¼ä€ÒÞ> Ý9úÈ$›í3y{\»eNõØÏ^îµÒç5 h÷â1;Š„Kˆì#3÷v9͘ÿ .Ðoø€XPÍ÷q…ÜYrc}îæï)¤B q%oMt¥X³ ¹›ä.XP¬T Ùp"ŽÄ0>à‚&D´"'ÎMíüuÁ îwnšòL `£/¡Gôõúo½éÖ@ °Ðôšî†ßÍ‹Ëá(ôËILCZ‹â("�}úKž«óŽë˜rXåaƒ€gär¢\§ç¦«Ô¢ÏÕe€ÆÞ½ûØ™2??Ÿ8«%T@†Û5ÜgçµÕJªÐ¥ ¹¥öCSzÝôt<o{ÛD¹×)‡ºs­Gº¿Ä§„`8¶GƒØˆ%� qì b^˜'¤íø3 õ@“x)9Ñ’¨·‡Å‘¼AÜ>¨Ãh†¾/ïóˆ›'ˆç#@,(ìpì�€¾ä†Ô€±Ò¯}íkÌ2!÷‹s‡.§¦=•P(š‰Æ~oÙ„Ñ@®È'®á�Ê£ ÝÍ&&·Í]Ù͆ÇCú9bàz�¨'—Q¯=ö˜q˜àq‰rI½ãoÜÇœ]šÂYB‹XCs9Z[ ~GZ¸÷Ê)8ÄpŸ€… 0ÀHȈ o“¦Ÿl¨üºGÈú&Œ98Ag ó„´'œoè3rZß!mÉ“žCd!¬øNBšÈ˜,¤[ô_„ðøÿýùŸQj´Ä¸<ÍÎÝ|‘¹™ uéRz_æi {Ì“_úÒ—ø”üÌl‹nF`àÿЇ>dÆkþãÿñŸèÒåKô?ñã¼–Ãþ…/|Þÿþ÷ñX{ãßH?þÏÍ_ÿú7è÷~ï÷Ìü9r˜>ö±ñØù‘ùoÙ©ü /Ò/þâ/r:È/Â.,õ·ÿö÷rˆ†õõ úŸÿçÁŽèŸþéÿ ¹}Ö«S§NÑM_yûÛÞaÚào3p/ÌyzMùåóô™Ï|–)’?úwÈ´ù·q[}ò“Áì%˜wÑΟúÔ§øýÉ'Ÿä4¦ %¾ëÿw^¯ÿà÷ÿ>ÿ…ÏÓ[ßö$÷‡Ï|úÓtÏ=÷Òw÷ws~ù—™\‡óÈ8jž|ò½ 9räíF²ã7~ã7è+_þš™ÿ9WøôÔSOÓoþæoÒÿøÑñã–E%ÕvÞjÁ: ÑÃ=Êà ¤ñ–·¼…2þê¯þŠ× ¬gßû½ßË×xßý÷ÓÇ?þ Z5Ô;AÜ}„Þ›û¾�Oí õ"ûS’ Œ¿ðC6íº“ý é¦ûÐ0£Ëh‡þÖàîT,˜@ö"¥Â9´M¿Ý¢±ÑI=ÅŒ‡ºì¨+•9TƒÝ‡Û° ¦ðýôÔ·³ÏMt"ó¶Ùh0ЍÝéÀb@ÍZÒ·ÙòšyÙ8êûƒ‘ ))<·S[¸ïdËä—¢Xo0ó€èBꮤL>YDz§�çËKóôØÃÇicu…ª•²YSš¦¿¶èÄñýfÿ»L{ö,0Íþ’™ß[ÍŸN§È†±�“¥€Áeï)¯Ýè Óö½»Ù»bËÈÐÎÛ˜ÙÿŒƒ úÖhbfcÚÚìІY?ÁLÑÞê1ÀküÎý€ÙJÓóYF°SÌÍaßÜâ)Z…A)ýQŽuèn^ì¸ |fÁ³�$k›µ÷Ê•ºzu•Î_¼È{Ö^·“°±¡—KTc Â>"Ó6Uú_„| ò|?q†s8Ÿ®>§ËÂ}6î+QìW‡Û9ŒËiÙ'- —»”ŒyŸŸÏs@ p°DJ10À\r¯ŒÙ*Ô =/ÔA-1Y!¿2¤Ù Âp€f‰z¥‡Í3¯Q8^5NøóŒ‘«°ï@ïå>e¥aÌØÂZ™gÁJìØEh(5�XЈÌï3J“!®Òá°C{F+T3Ô™q—Æåu'­ÕgiµºŸ&¥­x{h¼P¢`Î8ÞïÝO_yi‹KéO,0@�a=i}ѲXÖ¼ÑpÀà„Ò�èl¦À8ñtƒ¼G\u\…˜·¸?‡¶`](yý—ضWƒÑÑ8’°t„Æ` ?®;˜‰I…ìú»½ßS$`†l8'YÔè‹ËkÁµÙ9Ýîl˜9±Ãà7ë|ÙI ðA¥l™*„"w¼Q¾ýÍÖ}6eSŸ {Pkn‘¾»±z‰6W¯r]Œ˜=ÆJ%v¢œQx 5(ÌzR®šï›\÷�€ØçùvŒy^²^ˆ C�|0fÆD¬]ê™6®Vª1ðd&׆°{ñRèKDq_·¬ 2yœñºÌ6#£çÖkÍ„½†+ÀP!ãe—öm;bPF©œ”W"å ÚQÂw KQnir×µëÙ˜\Ûéî×ë—ÕËMõ‡6Œ;\Ç#fñrûr`d\$*|U…(¹ÞÞåfm©…RH!7*zß$º|!…ÜMr×�,Äű#Ší•Ø™uËõ!ñWõi!ˆ(¦b\H Qâä“ëpëPÇ©84ÝMŽ‹f–çI( ²ëàø†1Y—EîÕ I_‹6nˆÓN;€¥ r­Î§›>ò¡©òõoÚ1Äõ®ëA+§nh^D®Ñu.yõÂ0ÃrgÀQyøða~A©‚q§^5Å/E¢¸ï,®Ñp7’¿IÒGz¢’ú¹ý!?Mk�ȈrÆk0Eú³Óþ‘=}"Ô¤–‘‚vÐŽÂP!}ýKÀ*¨SX$ÊÈžJ'·bÃóÓçK9u;¹u¥èÒwä~¨1 °ÛvÒ×»§ ܱ g:úœt.¸‚¾õ•¯|™™+´Kú°Œœ¸`æz†f¶Ð !| ÇT‰ë[Â_Èœ€<¡}à¼×}H¬ƒ€2m£?ëvsø»©C÷;ê ÎO©G8Ð@UŽç +Çoè[úô‰€PôG8m…©B®C=p }” Àæ^©CœH�ODQ7Î8Ü/e—Ð/Òßå;wH˜]H_GºpLiðÒ¦S�_�L"m%éIÈ|äZI_@iø ïÓæñB ¹Á8:qâ¸qªÞC`ñôSÏ^÷^tAY¼ô‡yïŸþÓÊc@3ôíïÿ;?hœ_{éfä¾ûî‹leZ\°s.Bàô2ÀX`À30þÞüæ7Ó³Ï>Cù—I/¾øç§»666ÙÿÑ~”Ž=ÂóÄC=@?üp§gœÞg̼ýGÙpU™ ¹}'æÐ¹ÙYz饗è¿þ×ÿÊmûÐCÑ¡ƒ‡’½:Ø~çw~çÕ·¿ý­ôÞ÷¾‡Ãy`^|øá‡èô™—èë_ÿ:ÏÕhK¬ÑsaרÔy."NŽ;̬%ø±?Žr›tÑ8n{Ï{ÞÃ!FÐÇÿâ/þ‚Z�ZxßûÞÇ¡Lb—B~!í�áõé|õ«_¥÷Çûé]ïz;Õµ´àŸø3}€ÙɆ©Ñ'=Ú­µÜ:ÌFÉ^c/ °ŸœhEÙ|ðÁ¸-ü„©i2~íA|Y0… ÎÅ~¨¢À²ÿ•#Äçßí^ŠÇMÌœ=A¯í5abìÑûV›‡¬ÞÂNó˜F^˜Ã¢È:qi '™¹/÷™±Î8·XoôK™}§¤ÍzÚ?GÿJòãÛ°ÉOW6#êš}èÑ%¢¹™j⸴õdOÝG³ °Ø«’=bìÊö½àͶaâ<Ž÷_“x_v½þÌ~ðø§jŧï?F+´¸4gæò}tìøaÚ¿o‰jõ*Í´šÌ(ƒ›8œÞcãä:Xñù”½·s(Ì-×õ¯á)ý×´çûÃ1‡Ñ覿�h;¢­M3÷ äÆ*Ϻ¦MS6d¹¦ŠJ9ó\nÿôA,°o,."&ØšŒs¶V¡Ê°ø xð$T…'Lv`‰L>°o]¥µõMº|ù*½Æ HF}bMg耗ÕÛØ®âwhÞ<ƒª-zûbØ£²c7²,¤jÅY\ÝMtË0Ö™¹=b9˜ B€UÆ©jÁ!ƒ¬—7Œ¡#6ä™eó0ç’Yã=¬í%‹Nbá°;#3¯f|ŽÆf~éÃQ¹AK³³áÙ4¿›«*sÔ÷ï3¿_6í·žÀ Ïæ—òp€CWÇ\‚±ç 3˜ ý™¶‡ssÔ¡{†—éÈhÇm*�y ¨S›¡UjÒÅÊu!㦡Éè°lôqßÌçÌZâQÕ´Ñ™ŽO‹ÑÕ¢6J ”®GQH”™7bѺtÕ8ñ«¬s4Ó¿Ç@‹õõ¾Ñ—|ž¿fgç,«j6ŒbðJ2A2Ûϰ¶Á¬mÂ6W÷={HXQdûw�'¡ôšà3 -nnÛayÜ1X¿ÏèqÌ€Uóa™ {ý޽‡³ÊUª4jŒA;Û´Ý ›ÿ|Ð�sKû¨5»@{ž ~·“ä,,ÕâÇ E�Yp«PNbéI@IsGv‹çGvA}a�° X<à„˜6^ßX1í»Fu³µš³ ,¹q±k0À9Ãv&Ë�Ävœ2FPÏ�ÛBÊñ|´*Šv§çÊÞ.3Çó“Þ÷غ5tìõ W «äŽ%‹¢m{mË’¿¯·&ètôw»’(.÷[„D ã¾ÙpIè¯Ò~˜ó.eL {Á·°äíWw#EŸ)¤B^mIýùßóR!¯W¹k�Pˆpp 'Å�€öd2‰=Öx¨üòYœrú¹€ ´¥l!éhR€"yŽ28…¼(‡š!5V¥L)£|v‘èn¾4@Aþv™. Ú¹õ•{ H âÐ7Æy’PøàؼhåÞuøJ�Ý>ò›.ƒ¾_NÕ@qõ±8ÃaLN¦*” ?'_avåÆ'w{ŠEV O×U¬‹BìYžMº˜.Q”Ú4¼ØxŸ—WmHá¾=±¦­A ¢ÀOÖ¡ÛKØ)$Ä€(ðGœ(ë.%.·aÄgQ£›Ps¸4Yɤ£Ç›ˆã¤åÍö·lÀ ëÓëÏçxÛ©I5°ßmñ‰²6;S\†ÉÛsÏ=Ǭ Ò7¥/r¿/¥Ï.˜B^Úh)Ì6„ÏãIíp6É8ƒ¡�ùBèˆiýS³Óè9@¾wÁÚw½zÜ©~ÓÍRÄ ‚x a®�Àƒ u„úÕllX2e‡ƒU@%ÂH°!RÇŠwi3¤…tà¸ÀÀ U„ïaÁWã„=õ)é#mM1ŠôqÌKxázÁµH ãe°Ú e¾zõ*Ÿ*¶4³å¤ÝÀ°!@&�P`Òs½€.ädN!…ܪ >ùæ7Gò»Ô·ýéÇ?±ã}2ì_xñyúŽïøþ}kí>ðA'üÇÌãë±Ç6NžÝŒd ŸŽã1¥ê'ãz†þÕ¿úW šÀšÿÄOð\ƒ¼5öÚ±ž¬ù¾e­®®0ƒÆ+�ßùß3ù±Côæò]Èîmñè£Ò?þÿGú̧?Ë € þìÏþŒ~ø¿ý(}×w}_‡þÀ„ã¨g`Ë8U±w{ó[ž¤O}ú¯èsŸûÏ«˜+Ñ/ÞK×vYÓ5R@‰XWyí"v<ÈiwŒY³1?§+˜‹wbÈൔb�ªy½eC_üÈG¾ÛôÕ{¶­Ù`ä�HS¨±îivÏ`ûgÍú‚ý†Y³–—¹^Áü"ûb¬I¿ú«¿Jÿøÿc^Ó°NbÍ«7nÆÉòÊŠëØ°'Ò#‚˜Ä×Y§NÀÊÞ!»§K™.P—ÌÞ3*h½'l-å»Ï:B;ÅÉ/º#�²|Òb÷ ý“¹6¿aüLŸH8-9…ÃÄ'×ëu8z:ìü�E:œ|pFJ~ôžÌ:½ÄQµÍ©C©Î'ûîv?¢®D´ÐõèðRH3uë’ã{¸äaòw D;w>A¼Û=¢k ‚i÷%{М`sŒò=ôнtü8�QsÔ0ã`8$3M(çëäžq4•¸>ìöy�m벇ØNùÛ„Ñ$v~E ªÀœÅà�cºººNëkmÚÜè2àÂ:žMÞÊ1,À÷Ïa6<¦îß袨„D™›Gè;ìU+\%èÃ;ÿϾ Ö†�k£™G{ý]»¶N—._3{ÓzéÔ‹<ÀÉl÷ ñéødÝ•qdYal_1iNŒ³/X§jØ6ë½GãÊAŠà<„IˆHÖ. !6¦Óî³Ã?s=�,ƒ*ÐÀu½÷�‚Ø›ŒêÇý yýu÷©‰ÃÕl *c½'Ûû%¢ShÆ$…fÎ5&1£¹˜/Ç´Ò3éFk4SQ©Ö5ßmQÅ;H“êêôO™d;ìàä0%¡uúOhh Tb;�ÒõLÿ?Ñ=G÷kt¼‰F¦P­hHõpHkåyzª~”Vê{hT5û|3 ½L™&¥ºy¾eŽà¾áYÞ ä}bž×cÑ\ÙŒp•¨ºdŠì%{3]§z~¸,‹xæ¬juffç˜%:O¯ÛfÀœä3­9v˜G<ÆL8XCÃxEÿ jìô¹O—xN™X¼‰Ò Ýqå: µÞ_b0Ž—€kÂH‡ “Ø›»&¿ã‰ G¶*¢fZ³ &a6ô§’Ýk"Ôö�î–yG|oË3Ìò mbÂÞ‰>ç„d²kM¾à^ß´s¥ŠpGóªã§aAl˜/ÞG¨ ¦ˆkGKêX8Ì„ '2Ó«â0[ôL¹ñýÜì"—9›8mKw8ì{Rß*Æ£xý*Å, f©”kÉ%{(O ãœäÕ)ÏN¢nýkÛŒ°´`O' ç «¾×:BžýLž1ùh7kƒÛŸu=L»—+F0ó2ö ¶oÙ2Í4æíÜãÙ½‹Œg€7ÑšÊuë±»_¦íçDÜy·B )ävÈ´y(oÞ)æ¢BB„¢Þ:kÆ£©¥§÷XÁ§¦„¸€h–a²Í¹(¥QXÅ™+!´qL®“´´’+f}8bµ‘M–Í»„€ÑTŸrÇ»ˆ‚'õ!ù#—6zéS[zÓ¯'6­ .¡8æ9³3 ^:9 ¨¢Ç|uj×ñëNÀyF Ôwiz¨o×a@—p*ú9™ü²%&Ûw¦*©9ï´PHð]wî}žŸÆW¹ é ‹TÙfãWLñËœPC|6(ض¶Nk†¦?Ãù c®™™±hwkTNË,À�ù,À°è¾lO ¥ éÇIâ~†ÝDœÑºïj–}¿¤)×äõÉ< ÔNâöoÝ&ºÿÊ¿A!ÏÊìÌ̶ôp?N?Ÿ={†ç ©#‰3t£8…&}ÙvÈw2æ“ñ £qɆœCº<C‡oÁü–W.—mCÏ šUG®uA4nYw#:2Á™óôÓOóÜ…Ê89+4ð( pŒŠ .aªm>aQtÀ…ÌÃ’w´œbx¡®<°’/唋„o’ù ÷ÃÁ:ŠÇ Ú7=•1xyÀ Ú�Æg ö„|ŸÓÂ|„¼àoäWÚ ùá…8¤ŒfËÀ=`õµù@Úè‡f¤BnU0'¹@×‘ì ¦×?þã?a Ð>ðä{€…ÞñŽ·sè 8¿ÿÏÿó?Ñùóéð‘ÃÖÑõ ˆžäó'?ùI[?ó3ÿ×>ÿü79< ÖÃÅÅ%.Ôõ㈷ Í1}ó›ßäÓûˆ½±‰¹áA�ŠBV¿ñ§™-£Û+˜ËÀd„yí½ï}/ýÄOü³Xüöoÿ6}ñ‹_¢oÿöoçë07~ðƒäëââãú ú¡ú~>±ðR`e@˜¹÷ɼŒ¶Ç||âÄ õäˆ#ÄdîÉ7ÜWæææùô(žƒH¬7c¤–ÞŠ{¿üeËnõá˜8ÈÎ?W.^¼D/½xŠóŠ~i}#zO³ÓÞ0\q ð Ò{ú©§è½ï{×Ö•ù‘áþý¯ÿõ¿æu c ëã7¾þuþì!¯µh°«e$Ô` ëØµú‡ ¡÷ŒöoJÖç”á‚S$ÙôÛ}WVçpONóþ( Œƒ|ÀŽ\œ u÷ˆ•J™pzà6<_�2Qd÷¸å„f¾­ÔÙ4õ¾Sñhv~)Ñd–ìÕ}Dïç¸7¨=–ýÒçP«í:=ãÐÝW¢Åâ>­Ùïìü{£o£p¾"ŸÉ˜-a¬BFN®sJõ ”ùÀAË€Œm¨‘^φ:Á«V±LJ~|jÞºžµn¼"„<![Öˆ$#“¿¾qŠõúÄͩÓÐÆz›VW6imm‹FÁÄ2jtPòlV쥡;¥í\Q€¯™&íÝ·HË{æÍ|WRLRF×��È÷âä|vx²3tf•Ö×6èüÅË´ºÖæ0ZgΞf'kêˆNM©>Åé‹®˜¶çÓ´i©2!Ó4T_¥ViƒF´—Æ¥eÓ ÓÐ’°¨p½E~R¶<G#—9° |RŸY=NÇÆ×´ÎqJlAr­éeà“±, ‘u<V<ó}Ùècæo´¤„ÁÐ4Zx »£$Ú²â3@ĸŠù™}3ƶ¦¯ jT6Ì«MÍR@³õ Êï4Îéošt{¦ª ¤¡,Æa}h¸Æ€ŠÃ㚺T2ù<WßGÏT÷ÑÕò¢z“Vë{)hËì_&˜ÏÀ‰1ã™’˜gÀýïÅå3%´,že©p(!ÛÆ›“yZ¬n˜î¾N}o9sðÆu»v Ñïñ5ú‚ØU|3§-,ýŬ‹�Y´Û›Ô1¯FÓ8¥g—ì!�0wx‡¯ñ`?` eõ Û‘�›P8u<¹ß郲¸B€shwœä :ìì!”@‚z­ÅySE K%9sªôg<`ú*3íôzdž®TÖinv™÷Œ¢¯\’µ›IºîA'WôÌáM¹v§½ø´ýˆ{È+i_ÊÚÀl@@3ÌðÐíqÈ”k×.ó8øÏ²"4LÝ[ðéhÜCõȆÈ)™:®3X×Y† JXñ3}™/)ÎS˜„úÑöm³pm~y¢û®ý›ÿÍôq÷ÐŽ=¨Rç<À½ 2èåX“äP‡Î—ûY?Ûmò;;—†doÀ]¯gw`Ä $53æLþªló¶;Ï-Ø(¶åøŠoIqûìNr³{¢B )¤‘™knÆîRH!wšÜE!B&ñI£¬n2Ê>Ä©„ eS�…á(!À Ùà pÅBœÏâÃKž:LˆP�B¨á!ò,qtÊwr¯NWD+oB#/éºÏǸ”A3nÈóÄY ECNÍY�E)FI— C’?˜/p|²D®Ñ¡ÞØ!1¦IC)×Nu¹Nœïú;WAÒHùNÒ…Àу˜ØbxÔʦ+^ŽÁÚUšôsµ‘b§‰ÿz ×Áž½9šªÙtýÄXÌeŒ‚¤hc+œÓ0¨£]áL‰õ¥¿ˆQJú€ffÈœ£Ì˜ë!¶½R°”)O%3W·Ažâª¿Ó×é1Ñ�&×`š§ìæ‰~® èÑm,ý8ÙÈcñ@߃s§Oa|·q·KÉøµaAJ¬äJ¿•úÈë›2n!v¾©$§i%l…Ô“8‘Ëv‘MÇ-“n6úÇsˆü®?ïÔ§Õ«¼ë~$uùì³Ï2Eùý÷ßÏóèÞaì€ACØ)PF8~/>5e¾‡SMƒkp=a(Æ:ò àú»\ƒ:Í?ž#× |…ôñ7îÁKæ<ÜÓ½�8È…ïøðƧ‹z‘P$!åÄóðÂ5xÁx#§ðp/®Ç3 !¡^PÎ6Çjïòõp â:P棬�bà÷Âñ[È«)ÝN×8bNѳϼ@[ưþÙÏ~†þèþˆþûÿþ'hÿþ½¼É<&@¨w½ëÝô…/|‘~ë·þ3¼ç¸éÃûév ÂÿøÇéé§Ÿåçìcã¹æÛ¿ý}fž¨Ó»ßýnú/ÿå¿ðXBØ\‹ßßóžws,{„(úwÿîßq^Áb¦8žögÖ8Ã?H…Ü>ÁÐÁ¿ý·ÿ–öï;À¬F`øÁzûÐC&,&ܧÞývã$iÐ/üÂ/Ð'þôtòä zç;߯§¶ßþö·1ûŧ>õ)ïÍòÔSOÑ/þâÿÛ8$gé§þ‡Ÿ¤ãÇNÒN�ôãÇŒ>ÿù/ÐüÁ0ÈB@s7^6µ~F– éäÉ“ôþ÷¿?¨ Á€þ÷ƒ?ôƒñ<óFO¬­ï}Ï{賟ùýÕ§þŠâ1úÁüA~‰ ŸC°þaó…/~Þóî÷ÑC?D¯µ¸�rÙOhP»Þ÷ÙÓ›6üm¯,ÓœÙ6]¬Å²¯œ°óÇ/yü½;—%™qËó°§ÀKë[ÖalÁÎ6/匞h/FÆ‘›‚7ææ̾­A›[ƹ³ºÂŽ;´™ôµä¬tÄ@1YˆÈupŽ Gê®?6û†K!-7FttÇŠçIž)ÎoÎ^Ù ãò¼rÅì#`û ÉCž"áQðÓx`�hÇF£ÆswfçÙ3ýyÚ“ëÀ“ïvã›–†äy4²{;ÔùæF‡™3!ƒñˆV7Ú¦mou‹CàqpÞú¦ µ²Î½è#–•¬ˆ[&²‡öX¢½{çhÂj9R×y俹Y}%úc³¾@Ï<ý ?,jO?ý”Ñá‡dÙ%l§Œ3Ÿ,®Ç²¤úX”èŸÒg6X$ÌØ¨˜2˜þ SÎKÌâ1¢%�dCÑ”¬£œ¶Síëñ†TZ4QÌ3Á]Ë iCo„QÌ�¶ ô¯qÀÏóÆ'†#Là„Gè‘é#(/˜<ÌX,‡5{°ÁÀ’ õá¡ÿ-d‚ �”`먲ݣ? ©øöãJ—ûNæú–G'.]¢­}†QÅ$aô¿ƒqÒçg¤[GéZk¯™¦(c“³ AŒa­s/I‡¦ AhAË>‡²É[Ù”-âº2:?~R¦ÂÕá<žÓC‡öѳ§×¨7gÂhý^ô~ `›Ä‡Q¶³$áZ8âgçÍžjÖè>hÑ7ïu„=œ[â<N#>`e7²Ìœ~‰-l8ÛÏ"Ê,¼ëÚÎ#ý,,#ƒQŸ*A�oÌ^Ã`Y>½gª‹¦ón©¤mnbƒrügv¥LõÅ&-.ì5cz‹Ci\¾ò²Õ)g—Ì>Ÿ±Mi»ÂíݦëæGÏéPБ®£[Ûru»[¼.­¬^â_gHÌlaׯE_T*Ö¶çEÛ%@ œ¼‰ÍÅ›Z¶ JjwuâyùvÕȱAÙ·ëâxA°Ïþ{0´1@ÛøM÷QwÍȳEMµëQz¨EêFúÆÀ<°ˆ}×ZÀÇœéÓ­4Ì6¹Î©ßÂ?õ--·k>*¤B )¤B®/w À K0 ©Z¯''µsQ^nxqòã{}¢H®§µ8¤ÅI«Ã_hG±€äD´lôÅ."y– É‹¤!'±ä³.‹¦ Õ €¦“w ™SRê­ˆèr@¸œ Hñ2éHyôI|Q$Äá/Nù²¢ýÔ ¸˜(ð†V\ ‡Ô­´/N2Âá"÷”JÛO fÄ»¾3~êo´“î²Ýp·]9“ï(6z ß‚>¢4ñ÷ÖH1ŽO€I_ŽGì�} ŒOž� ¹�B¿?ˆ %.H,¾ ṵ̀(ÄÎxécZIdÀG”e_€­£,&9ý‡%Ñ5·/Oë×®±Sÿæ‚’vjW}bR3½Àù g¸0¢èkñ;;ˆÛ“€±.uÀFX™ÖåÕ}SŸÒÑó’UÂË<§áô‚U¾#¦¶;EO]@yåÔåÕ† =f!züÞˆ¸ãÄ5Bƒñôýo|ã¹¢íXÀ 'GtØ|/áC4Sê[÷I‰© 'ªÌ³�@�Ü� …´³Ì™Â§Æž!×à> Ã"ár¬dO½·øZCà]ÒFÐWðס €!õ² ÌHm†ë‘_ô/€Oð½°U�8‡#~Ç}׸¾Ó¥B ¹iÁ‰k€€ªµê¶ßÐÅ船¬;�%üÉŸü‰éÏ-ºçÞ{èŸÿ󟧷¾õ- @ãéÉüS5 ¿õ·>bç¿Lß|þ³.ï¡9c(œ™iåæ§Ñ¬›ûg“û- І)�ûE³Ùà¸è2/^ÂëüÐý�'„ Á<ƒ9 ˆ#Žiè‡øïšüTè×~í×ÌXÜd7XÚí-NëÉ'ßhêã§è?ÿçߦŸû¹Ÿãtæg~¦�W¼ ‚½È»Þõ.6îÿÁïŒÃl-,.ÐßÿûŸ>ø¡ïJNŽxW¦ûî»×´çÓ¯ÿÆoÐ_ÿõ_›¿Oò~ïï|'³^`ŽFXé'øí‘‡ææËËK¼ÏZX˜7m¿”\S2γ¥¥Eã4±ýï­o}«q�G&½ÿ ?ô¬¿ú§Ÿà~‡</š~6;3£ÖÛü}"ú0Ö¤ .2àç½ïy/¿¶º¶íÚËW.ÓŸÿùŸÓ’É'Ö¬%zµ¬q<ò×/ÂŽüú¯ÿ:}ß÷}_–«ïÑ'¼Ö}ùo¾L¿ôK¿ÄÀä÷¿ÿÛÃlŽnÜq«ÒôyÝļ"k°ˆ­sÃ=ÈÚ¼ŠÞ�'|ªƒØûìé|bO°VÀ™:N¸°§²iYà5ÀÁx6êªR±û ¦û­Ìæ^Ì`¯÷âÛö$*Xø4<öæºrµaÁeÔÃÞÁå¥ý¼?P}˜ë°×“k´®¤Ùeÿ¸{¯Ð† .ëVÂ*õÏõéðž³ÄXv³39Ñ;$ºiÙiÿˆ¬Ž'×uê`›âŒŠä{]£Qï‰õêÌmÓOzsk8Î1×]ƒ+HœÓ¢3GfÝÁ°Ï} !@ú浺bö{ëZÙØ¤ád3°½l¶©ô”0!ItÀ²• ï¢_VkÚ»göì7kRÓ²uø6ô‡× ïßK^¬;F̰2`f´‘ÉÖÙ'_¦sç/çp›®^¹JW̃ƒ'–Ñm/zGćQìw©n#ó8óê’Ø,hÂq,‚ÐôßqD­Ê UªF?¡&MF�,7T`O@ó)ó‡ £¤å<!<b'iègçÛ8?(üª%ϲ;q}ÚÙ“öq!Oî<vˆÇ¬ç%Ç߸>9dDÀñBä"ƒñÄ<? :á5¦1˜J†#:Þ»Dè|•ªÞ„þ÷“¦Jk†.?IÿîàªE`-!Úô(0éE¬ Ûð`{ð£*®�)!OdlCè[\¿3×”ÌÞÊ«›ïͽ�S Û� Ï¢³™6 ™±'Ę¿7û>ÕV¯Ò#÷¥§_ºbæÓ¡M±$:nÌ&ù™?V? (Ëš”¶5ÏAf^Y¨í¥™ÙEÚêl°cøê• n¥53GÖ,³À©ñ ð‰çH�n¬±ÃŽ{ÍfjA:Vz†H°6¤>‚ö¬™y²^Ç^±eÇM&v°pÀbËUʱw¥™°¦0€'®›�Ú@vgÁ[í5j6f‡5µ™Ù½ñ­­¡7ã•v”¼Èw)P ŠÇ˜Î›µ1¡Ž�k³+'34·g±]©Õœãr'sÕtÁg;' +»± )ݾî¬í»©#mÒ J±¹ì&¬¦0^BÿÇÞc=fµÀßË!1Yÿ¥~í³e/°$˜Ô°cÇ„í�õmFÙ}Öw9@’ ‘¸ ”„¶‹I{Ú¨Bv”¼yf7c¯B )äF¥˜o ùV“Ýîä½]þæíâÝ›ò·¼|õ.¯Rü]Éyá7XýŸùéŸü, U8!=1JþüÂ"ÇÆYœËú´=D�÷d’L.õ®jy÷d»fÅÆeƒÐ“ŒÎ‡ëÕ@ Q`H'5ŒÈâh”tµ£ÙM[ÒÒ§Ë­âT˰Qˆ¢(€¹®Ó²jg³(1Zѱ�—Aò<1”j¦×®ø,õë0¤þñ=;êKV„�°<‹ì¤¤êöÍko'÷u”ßìsýmßë~•ms{’IêWêpÓ^ÂØ ài3ü¸ýU Óòf(qr](D¶Õ‘wã§6nÆpp«¢ëX tuÛãdçñãǹo¹ùG»|æ3ŸaÇP©ä%1†Kû”€�/aÑÉŽ3k´§ÌGpv +Ssš±Ÿ2ˆ„ÆàU£'N°s1O„uAç]³gè1§óä¶‘ºÄ­[m,Ii½'ì°üžïù6 >�l0GÂZ‡ªäUNRá%u Æ¡îdCP’Cƒ'¾ÔžC vp*Öh7Ì”y@Ñ~8I‚{al‘vC¹Žœ`E:È®Á}x!M ÎA~QF)ƒNp/¾·q®S0“ Qà%ãyG8�EPgHOÕŒ¯Ò¼qvÃáa5f(•ÈãYêiÕÖßÏÎ=¯Å8¼[Eϛ霒þ-c#P�.Œ_¼Ã<[ÐÜÆV—îì}¹ ‡;¶Ð|ð~*dº`ì`¹c %0VÀñýÓ?ýÓTÈ++²`.Äüœ·ß}%Ÿ…ö¼páýüÏÿ<?ãW~åW¸­_s‰ÊìÐD¨œO}ê¯x¬†‰óp{]x $jÒwþ7ßAýèð¾^Lµ"ëîÙIN:Åuòì3ÏÓÑ£'è=ïy³q4 âg?ûYúüç?Oû,3�ã#ùÈô"EiÈ38íVÀðµ¶¶ž°?ˆsͬ{ÿùcI¿ôüqžFõžÕ:o<VX'Zì�7ޱOå[�„œ\´ì-t8Eˆ”É*ÊÛöÀi.e�áîp÷Oî¾’!¾=a/ÎC�ÇJ¾§œyž§àðD™gggb§NòOÒwÁÏn>õ~LöF¶îBšo…tØl·êÓŸª{Œs·g*kÀû×0¤<nÛ3j‰Ùù·=Û½N×±”ÖéÄÑ}tß½Giyϲ= ÓöOÛ[Þ¨¸õ|¿O3ãåÝÃ0€Höã cQô{C³ÇûÐ8™»ÔÞìšý\—66;\²“ü¸ÏÑz8Óô—¡#ŸVÞ»¼`˜�êV©R³!D�ªðb°ŽMςƥÚïvú´¾µI/Ÿ»H§NŸ3{Ò!;wÆŒ·kfI(IÝ^îKçuûu©1ÿ?ÿÈ8M™ÁþP§•NÚ»?/•«ªUüØ×í:|­ÏýDÌÜ�Ɔˆl�îËÌNaÍB!³8ŒH¼¼>ú¥TáÅ 3>�ÔELá–’WfÇi˜okѹCŸêÁ˜–ý1õŒ³¾1êÑ›Ú/ѽƒ ´UnÆ„5Æ–dœÐ_l>Dßhì3ûp££”CªÕ‰j€E̽C¢Ñ¬%U`|™2E° ™Â% ba¦–ç‰YÐV`Êy" ÔVã²<0ã%öõìøµ ü6SèÀž&y•&º°‘YKl¿K™[S`?%{V}­fÐö�¹n8웵~ƒmƒËgL�±b£Þxš­ÑSûbaòHÀô‡“ü°sŒl{ p·Òà9àCj×=X ÇZÚϦõm/3·êCöïì!%¹s5Â8 �p¢¼•ªÑÃJåd¾MëQÛUܰÑSêÚÖIV/—ß²åÊŠ.›fxr­ ¡ía‡U¯‰$䕵]h›Ú/» ù7è´ºÔ3lºGÐe#R^žõ<2Mnvßx3éê5Ó²Jôø%63”yÆôm�Oìø)å¦Åvœ({„Ôth4¥m@v B§G‚ Ämß¼õTÞå×.çJÓ¬#ïÃÆ~µ4oìà5“­Í°”±èCö½°Ü.y5ì7’·o&½B )¤ëÉ4M~»±,ß%>ÄUÈÝ'¦?¼“,Bw+~œW¿‡ê©w÷ESþÞéÝýìÊuË»†Á‚EŒ^|:'uZêͨà¢Ð"U)WAÑ´qrC+aò›íĈ¤ù^;¾adÓ ’~¶6d¹i¸NN1äèp"¢0iƒV&†¯qòK°c×Ë2h‡¢¡H>5�EÀÐ –žhqm%fñpŠn{Hp˜h ŒÈN~]—¯ô†2Šä™YP‚OLã†8ËÐæ¶(¬…8k­x6)fœÐ'Ý YƒtªŒI?×€WÑÕŸõ˜É3¼”®<E"k�§Ü¾ˆú‡R ç»ô?ÝïàÜÁ Â†ÐØ°¢Ae‚Å5|h# ­z â7´¹€ „G÷=åµ…;Çé>¡Ë!×èùÄÍ‹Ø$=å~}”õñÇç¹pÁ(FÝW%TêÆW ççDÀršÎ Ña¸ LzÐuŒ6GÇd.¶ �*$6¸Ì›ÈŸœèpÒFÞð.ŽïI[!È/ÞÅ™„둾\ƒëežÇÜ%ù8öoOµ ãèÑ£1+5zzv• )¤ëË¿øEf�³æ „M:X, ¹ýr;÷˜ÿãüôå/™çÕø¸3À£{ì?°þîÿíÝ·Ì@9-œ~'ƒ0ëäû¾ý½<×ëýÙõ+;É=÷ÜC?õS?E¿ÿ{£o|ãiú­ßúÍ$œÖ�3¿íÛž ïùȇ˜ äz¢u’Û%•r…Ñqd÷ûÌ6S‹¼ç¥8D#Ù¥“@NdG\·Ö0m÷ϲÎ[+òí'ëµ%»o×§÷R.ØÁ:&£ŒŽ™M“ÛöÌ“‰ ™½bñëMžÀdÑíöh}cÓ²YÄŽ¹GXãì!~<;ØY·èorïz;â{ç|šm^¥RÕ:ŠPöô¶=M{³2­op¿‰uÀh”ýý•<ÃmÐGñõ}$ŒQl™1yÆÈ¼†£1 #-0¨¢?2{;€o´‰}`È7Á¹ŠÐ%ÛÊ;NÂHÂ$xâ£Q¯0ÓS³Q7cp–æâÐ~¢;°;ZœÒže/™<tøô³ÉÇÆ]¹|•.^¾F—®\å½ïÊÊ“Ç.;æÙÑ‹Ð\8 ÌÈs0Ëßî÷Y‡-åþn_¥Üï!¶? hÏLÄl[«4&œ7ºM­ÉÑ»D· BëfV ©‡Ð‚J"3vB²áw0#@ÿâ`Œ¬âг  Ï‹“‡-Èì×+µ¸=|‹éÌœ©dî;v¨ar7×[¡¾2÷ô®ÑÁ9ºTY¤I©Bc¿Jߘ»Ÿž© A¹AƒÆ ü³N”Ü0ÎË¡k½î„óІù{¦î›W‹jåuGæ·qÈ¡CÂÀ¶I‰pŒîÇl¶’Ç�ÈIy8qÐCV@â±îÙi,"æXLÆ“k ^hŠVh€œªÚ~%ÏÔlªz~³ëHݬY™aá%:6ƒjÕ3‰•ËÕXgÄ=–1H†'}0ÏÃÉŸê—e^êõyî'`M°úç8y¶ÎŸ«ë~ª†aÆŽ$}3í£Ûû­®“tÞ°ú/ôB€®†9{kky:š&‡tÐlCiô’¼$@;?›GÎĵGìªsÛÄ®E–Aó€b³¼Â¡wÈK@¨ßŠi£F½¶ "χ ?¤‹2cº0åºMCOååOË«±ØIòlòY'aûì5q°cuí Ï9è×`0)18®³ïØ0]¨_®çɈÿøPúƒqÚý‡eKIûÆv@ž;ÞõxÕö·ŸèrRÈnDÛÿ )¤Bn—äéh…r7ËݰH‹Ò¦øT‰¦Êã«â …� ° Ñúò}æ 9Æ QZe³®)\† ›¿í` ­@º¬:âD�…~®.“¤…ïÄY©òZ!³ŠT–]Bœñiy³“£vdºi‰Rו´fåpë2É "Lw‚–Ð�(S¾sJ/™rMªäxê_¦ÉÛ R ˆE´¥|2çø(ã p…e7Hi‘áÖŠ¿5~ä;³uÛJ=»àˆ¬Ñk»b–>' îÉSà²õtcòj/¬»yžî[R·0XBÁž¦¬,�'8~ç“ZlÐôÄmÏ9ršKò¢ÁTcdû9ú�œFBMi¯KY0‚Ø,ifI)ÈKò­PZqן]]ÞµAO§™×/äæzòÉ'g®F éãlô__ç{PV” Æ  xá;´ 0êÈÜ"à ü-'A$œ‡0…[î€ æNI틼ÂP„ç ãDh:…MGƒ;„1ß™–¹ÓAW’yHÀ9x—¸î(‡f6a?A>q"!Bàü{ Ê&m•¥-¤Bv‚¢LÏ<ó ‡sÂxü±û1ž— yå%oº]‚yôÀô¶·½Nž<IßýÝßMwŽØ5ñðáCô£?ú½‘'Kú÷­Õ#ÖŸøï~‚^|á%zö¹g9\�Ö(8‰ºë‰'§Å¥yÚ9O¯îž 8¬^kz·Ûf'œ0` Bt.qÜkpÖá �_Cútq”8 Óý¯ümße_­Y RGe”ìÉå7ב—)—f�°:öL±>V­ÃZæ0)½>hñÇœ8ÁØIƒ|±óUÒ±å §îß²{9¢ö J}£ï›éÀ’Ù‹ÅþÕ´Ÿ½òmmA/!ƒ;n‡ãgZÿäòg«$wXG;Èï#ž`2¶{j„UAÈno@ínŸ":>ƒ:í¾eV©–¹‚•ƒë•²:,ä‰CÖ·,cõz…O#ä@Môï’Õ|ÑÛȆłÃÜìÔ9_ãIH[íŽÙ'o2¸ã¥S§éÚʪÉK‡Îœ9M`.!$‚gFƒ ìÉù´?[pQR'S^ù¿«>ëå,DÏÑãOtVû[H‡–Æ´g®JWÖ´Þ3¾Cælì„/'ùKì4ž¤p †‘å²ÀÞåóbö²Ìæ[*ñA&£s™û°@˜aÛÁØ¢blì “-Œ{t04Îaã FjLôÈð‚ü0CE§fœ§­}9z€žjž µê, «sö4¾s‚0HÇçú/•"KY*7DŸêݰ²L³>ÕÊcš/­‘Ѧ™Ë* †>ÛЬŽ¨Äül7@¹õÁÑì<‘„øaÝ,ÿDeš{«¥1-Õ=êeó¬If-qõ{±Íh;ŠžgÒ±ç7þNíM£#hÑG|¯Íóp½Öä98ÀÁ‘ÉAö B…û:Š`Ž«V꜎€¾’ñEÛú |¯íw.›…ýÞËèÖ".à͵©¤óDäèëi�|/a/´@è‚¢¿Ãž£›l²:$iѯS==ʵ·ìd¯²¡®lÈ ¤ Ûçp4HØOmÈ?“¯†î!œþɸ§€¦Ûz|gë³³ó2Eôj° ]*•k™¶Î22äÉíÜ^O´Ëµ;j[¦\+4ô9ƒQ:¦·;›\V�ŒøÔxÀóB9O ¿£ž±n£oë5(»ONMn^Ü}…ìy,0'koÔów!…\OÜ~âên…RH!¯´ëS!ßjr,,¦UÐFl©… †(P_ó˜ò�Ú Ñ� RÐÆ-IÓ=õÍ9󶟔Ҭr2ÝÍ .£¢œÀ–k´ƒ]º8%P®•ktHaº'®UÖ\ô¼5r¾ñýd’Q¤òNà:KåSV Böž<%Á â¶®'©vüê2JZ7%QVéɺ=9q:”%bð&꤈¯NDIÛ õ 8Ͻ˜ªOÚ7-‡Ð¦†×X¢øÚ  ´ñKÚ]³ŸÈýºÞ¦Õß4…7r»Ùiíï tô¸ÀgaIßt]ö é×Ò–bÓßiã>˜¦›Žä *JÓ§ˆ! *)‹ô1Å”¤n;hЄ{êHÒqË­EƒsòÊ?­Î¥ŸáÎL¼� €!÷£Þ`xÂéwaò ®¿œðy€ù,ÏÅ}ÐPPBú‹Hs¾Ã³‘>^"Èî¦ D±†±JÒ™…e×�k…uùÀ»°ÍK…ÔÊ…¼H¸é�mà:|ö�W:tˆŽ;Æe@ÞpÒ�¤P~ )dw‚½Áw~çwò«WWn÷`íÿðÓ)¯ÜíîWnFÀ†ðÄ·=Ư)O™z¯»ÏÛÉqòJ•Xgm¸ŠTÿºn9¹-§„qJà‡rÙ‹­æ{0‚iþÖXÑŽ7 ˆ°{Ï9}ì'{ëðÍ:?HQÐëÓκ®pŸ¼©ð%_Û÷dÄŽ/qÚ€�û8ÚA½g çË·5›¥éûsý®Õóy­ãÑÒ¨÷)ɳç½òãV÷ßI0IôÜÔQtë’ïð…ú1zD–¥b2fÖÑІÿ�˜¢½@Eý‘e®˜ŒîSå²OµFeÛóìžÜraÀ)^­”9ÌG£‰°pÂUh~Á8Uvú—ý˜ñŽRƒíFW6mÚÙlÓ–ÉÃÚÚ­¬¬Ó©Óg˜yɆ^Ú¢­M�ƒ˜ž?‚?žŸžÒ/R@­‹<€…vO¥À¼{2ÝGôXÑuR€…Ýë6³ÿ¾#5Zm—éêZŸ6{öd¸eë³!úd¬…¦„òyF,PÆô"ó]‰Ãm 'ÞÐ †ˆÒ°~ĵ00Á3Îß™I—ŽVɸ„É47ÍŒ×hOЦƒÃuz¹²ÚÕ&ùæ¹/ÔOÒ™.Ug©[ŸGè)`7ÒŽpÀi<ѹ�@»Ã.‚:çùà ÓëP?|˜d…6ºU|„R«zš3§L_2ú‡)Ç`lt€Q‰á"(3žRŠÃj„^‡xÙ.<_A§÷,H‡|` ܉©¥Ð¤í7èÈBݼéôEÓo:ý\=Žç†¸³ÈXµåKçKyÉ<iÓÉÚ³àÔ·‡~à\¨×ï²ó`›|Ä Œ™–uÒcž³v‹0“ä- A›êÉ ¸ž>*å’¾¯çÁ<ð‚N+ëØNË—7Ïà;¬E•Ê<³W€½�õ€qjô55Ôkuž?(|eô~ÇÆ•W¶ìÀÖõÄth¬—è`NÀw2ƒYþ¦©çŠ©g^ýl(øéDm³uÉ"]ß‘ºp¨ 9�9ú¦;Ý Õ�xP3ÏDû–+i( Ióµ½vçÕsÞïbÓ ˜9Ë–ó÷ùÉ(å;¶}{fÎÌù³™}’eˆÚÎR!ÏÒ6QתǢ·Í–ckTß»“]§B¦IÑ_ )¤Û-î§Bîv¹k�â6�N‚ ŒqÖØ¢ÑùY%jºÃÕu.Š‚¡š¶ I xUf¶+¶ZtZîIIß  N` TÐJ°8„uZš¥@ò§·r¯|—L†‘šzÐåÓŽdOÑ“jY+núï<p‰û7^p¢âž¦»Ô²Û \_—iÿ¤M‚D$T€UàÝ*F´bÑS@˜rûP?W÷/cèXÈiÙ¬Î5Šic®îwåŒ(“7y®–¼¶Ü©oeCþjlæóž‘§Hç}Œ™pæç)á`R€Ã¿Y E9qªk#£aìÌíSY‡è©'¼„‘q$Î}¹WÆ?X/*ÕZf¼J>u™²°rr& ¦ÑŒ'ÓÒš8`ªiu*åyâ‰'Øð€êÆÍï…ÍFæ=a­zokPn'ya"‚q€\‡qç ÒÇ éã>´‘€ä^ï´’0GÈs""íC/®Ågäà¤)¬2x†�#d~Å;òÇŸ´^[]ž'àŽGƒÜ.^¼È'ì ¸ï¾ûx^Ãõ’¯iaœ )¤Bî4ö2ª0àíNòö\®sçÆåÖê^ü5 øívØ † "ý„€…á*4ŽHv\Õ[ìHÒÎHj}BÊàž]Ñ][E÷áÚ‹ä8š%-ÏK~Þ–NêV“¼X}”O3Ç!åĉÃ×ûÖiWòfhT*óipÐÐãdp£aœ’^…â3îN^lšY'(?1É«ÝóLhÐ5ŽÀ½sDšÊSD·Ëîe÷¡X„|‚úVû¦–<(œÍ!â—O¬®†°° € 8»í³T ȿⰘ՘®!:[ÜŽ�n1ƒ\hî }˜¢ÙªÓìLÃ|®3í¾=Ñlu�ÞãE©.`üµM³WÒÊê:­®®™=ç&¿pž®\¾Lëk«ÌDÁíCq?æTˆOJ1늰Jˆk%ó·çy×}eøéØÉû]|P¡ÿNu!{ðNæKDKfŸy£BW×Çqˆ¼ï®Õª–!·:X'æP$ÄŒ#�5Øp¥aœ9³w7_µ†«ä™¶>1^¡½“M*OŒ7éÑÑÑ:]õgé¥ê"çåìÜIú&=@/—iX2:ƒWcôEÖoÀ†²®€""Ã5Y'³FÌ‚04`xV)Y Ï2mðüƒLßù—id~Œ"jšy«åßoúŒÑ[êg¨a¾ëê<M fË‹ìü�É5LÇÀ„ (L`ñ<D%ZßêÓLÍ£ûí¥S6™•E³>$v,™ßôXò²ð D·, C§>Ûd˜Aalýv.Ä�…Áálç¶ _Ï÷FaÒoÒ|Ð6qY%´MNÛ9´­m»l.ˆ¾«ÅÓí+ÌSôõ’OZH!SlØ”.mn ¨ë”XË('dÏ4‘çˆ^Fc[Ï;[ûB%óÑâþÂk‡_ÉðpŸ“Õó‰ÛD×±——¯x³õmA1�ýPƒ0`qÁÖ8` ØHª•F¢wkÓ­ïi^ÉÚ:ìwb×s_�Q”J3cæøy¶û€¡À–Áö�¬# vÈ ±<û‘Û²Äð[‹·Ý¾)ɸéÝ)u[ÈëO´Í¸B )ä•”b]*ä[M» ÌÃà1YÔ±8À±9vÁrŸˆVÖ4²X”(­¬¹Ê‚6lieTƒ9ôg¹×u~ëïµSV§%ÎAq|ê2¹Š¤»áÖÆ<6ISŸzbðE)¥…téÅIêžÀõPD´1SÇ%ïšéB¾“ku;AYƒ"§Ûuýä)5y»þNÒg¨Ô­¼#o’žäQž§CH>tÙH…VÑ *º~u}䱑dÁ¬b® Ú`ì¤\’¦66»Š¸ :È#܉‹åNÊ[ž<ÅTÊ…6‡Á/¯Ì`*€ã_þi[•£¢T­aѾg64 b˜‘Øàš]F˜,Ä0Pñ‹" Õ˜þÚËdŒjð×Nu1 ,¥eúTÏ'2¾Aß–a”Àx…qɆ7'Àɧ0PXBBk@�ÌÀ½Ö;ät%ø×"}¡k•< -a©ÐãB˜c€ÜïpÚïÒgä Œœïp¿Äg•taPCšÌ¥È£ÌYœô¯]»Æ/äóÑGeö ¸y€œŒÛB )¤;U4À¢P¨oNdO§Ã¾V†Oy¶´ëíÜûY†§†=¹®ÖkÞ‡ï±à¨ƒ#Ü÷6$M¤z%�W"aŒÃ DXïoÓƒÜ2óÎO)úÓp$Y€ª8òtµ$:#Ù°%µW`›?;À‡`‡©OõF“JÆ) g]¿ßå²ÏÌÌò aòRC+Ñ6GŽuÁ!7´ÎXì Q^¸†Ã™ÌžÔÞÞ–¶E¶&ñ6mÊ´ÉÍŠì§íþ3b節R;ý‘é+æ56Nn³oëuÆáÙ¥öV—6¶Ú4Æ©ä0⼡»1KE½b´®@qÚñw@þMšŸkÒ X*êû–Š*ŸOðg©cnïˆY2V×7h}m‹ÖÖ7éÂÅKfÏ öŒ6¿V®]á=è¬-œJì¦T÷Kt߆ªÐ ݦr­|ÞéeA¾ãÀÎ>oØBôWWP±þ½^÷M½•éÀr•.¯Öéêú€Oÿã…}8ó|Èß³ 0”ì‘z/ÌŽ6È3m·4éÐcý3TE6Îçr8¦½ã-êzu:]?@—f÷Ñ ¥éª×¢kåÕ<³G¯}=${`D˜"™&`6 R DIàÑ¡ˆ’z±@‹‚£pz—JUû=ú7¤žx?ígâÄìéƒsä ÔwM¿ëS³¶Luc«Zh\¥™ŠÛôC£ëø¦¾¢ ×F•Ø; oƺá„Ù,JÜ(Ùà·þ¤D/]îÑ‘`…î9¼‡¾òl[õéí‡\òl|Ý‹™‚a|Àdϵ¥ðÖ¤rÂÖY)žWm=Á¦ßëR¯ßfv�(�l8åÚ”Dïu%Ê…aª ë&;ÇKYâf¯c†€\»€ÌåzJ×ŶvPc@ÊÀà‚˜ˆÌXÞØ\§RÇçP(ÖÒ®+’_9\C  BæïÄÖW²l³»Âþ’°g–2cözâÚ!u{»¶Q„p±5×� £ô^�-ä+h¼^Yöû’°)(³Ì¯Õ~†ËâØ m]™ÙkÁ$fü[lA�S  êCÛkÑïÁZaÙ,z\n¬Õ` (²ÙœaИô=)¶—€2õú+¿moÃ<fQ¹vš]«Bv’¼¾²Sÿ)úV!…r3’]ç P`!ßr,¬’ãëÌá8Q–`t±¡C²”óZÑ”PÚ9®Ãlˆˆ£SO È •­´Š±Tƒ8$?ò·8Eõ÷éÉ& B|I9âN^’>ò.4ôú¤”k\ç¾*HZR^½×ÌӼ⤔ߠ¬èï5¸Dž§A�‰Ñ1.+¾‡£Ë 9niбäEœ½P®P?p”ŠCU÷R?6À:ÍËI^íixyF”i[ýØÔ°š2HzºŽåZ­Àé~æÚ¥ ´QË5®É»6¸mé*œÒ]y=/‚R.סUæEÂUÈ5R‡bìЧ³,‚’þ ð ,rRÅ}É\�g‚=Õ’w40BÂõà³äGUð·0Øèr@$ )—»¡qëE·/¸Ÿ]%K¾—y`ïÞ½üla©Ö ŒQV\  ažÀw�]HÙ16QF�4ðCØ)$\®Cˆ€ûQHŸñBZ`•Æ |‡¼È|†q/�\†<C@´ò&§ì #6Ü™ÙièBØMä>|HDÂá>äãÙgŸå4Q_ËËËœ6�¨#ÝÖò7ò|µØ„RH!w°¤Îm+·ºgxýõv*ïÎ�P¾"Ú–~-ë@@tXÂÛ±D߆©ÈOAÙ¼×.WÙ‰êsœ’ŽúÆ©1f'ö�~ìhÆÞˆÈSÌÁ¶}—-CïÝÓú•=˜¬½R2‹¢÷Æ)ð”’ëô~<ŠÁ´Ö±'bOæ Cž;%9oÿÊÌ%çÇpµÉ±Ü777h«½Á¡äªÕVFÒá7‚pDÚ@t8{à�cA‰’z&ÅŽw»º™­ÇÀ2&úâ+Ó¤nq¢ÌØ¿‰s²? Í~¬C[›8IÞa– i‡‰©Ï—Ð2å¸Þ#ƶ¸‡Cw(]¶ÕlТÙ/ε¨Õ€£´Â÷âðŽ8wl0ÛÚpBW®®Óµ• º|íï176ÖinaIL>·6ÍuÒvf¼•Äî†:HõõØÖàÙßå•§o¸º¡«÷»×IŸ²¬Ùtôõ�—t²!Bü ¨B^ º�ëŸIw®Y¢Å9³§6{èkëØ³[€ó ³A³sóÔœ[°{üq—ö ÖéÀx‹ŽOÖ¨5nsø—¹ O¿FçÊ{h³¶DQ¥L]§NT¥v¹NãRHú¿_f¸DdìBèèÊÅs/WÀ‚žYòŒC´l>›>Ð…‡¾ÅuRŽÇ\dûØ,¢`Ì€(Ëu§È†åðqëD˜ƒxl¾Ìý¬T¨c~©Õ›yí�Í;H³á uÀ2cž×e™Pµž…þÁ‰Pv pbò4á\„¡ÏÑSLiè @ã‹´\ïÓµ~#ñ»ëж  ]Ø:ùZ/äè)˜ƒ+ÕYnG =aí"©-ÄóÒò;®‡Ã@1ô÷Í­5êt7Net¼Ö,³!Ø{ä>?>¬@»U^Þyx^fì¹zoz¨DÛ«\ÖŸ8¡íXÚîUr˜EÜÃHrm•çé*‡ê˜|ŸAý$죰1B¬j˜„ýâ4™}ÑÌ;eŒR…çß™c´½È-·�Kd± 9~÷òt. ¬ŽŸ]S²L"\C¡èèº/Åí\a žƒrA—†Îޱ ýúòífÚ&bG°€¡q²fBPшôêùË#aîØ.¸åÅšŠ6eöJÓ¿{ý³yTÊõ„eS‡žµ÷–rm2Zvê×®}0ïþB qEïqÓ5%ÊjÌ»§B )äF%YGsôˆÛaK(¤;AuæɆ_�ÄFĵM©2À%´ƒ82…EA;9!âP…¸ÎHy×N5­ èÐ%úž¼É%5ldìr*ŸÇ1ºZçQ€ò%T3ih¥TNb#MmTÔ …>=À0£TqœÑ¨êU9Í%ï¬T£.ÈÒm"&-‰x´â\Ô[©#ý,_p^£ÕÙX£s³óÆ Ú´é†^rZÃmƒ<ç²V~¡ÜBéãSBqÛBñ§µ8·%ݬSÞKNXeÕ‹ûLL[J^b´•çËý¢´é0 Z9rãòî#îbä*WºïhÆ )“ÎWÞÂæ÷廼gÞ)²›¿Ýn=ç1‡È}P’çæf¹ïØÓ]3TXc„ )ñ‘+?6ägû;~‡ã\úš3l_ÇiŒUJŒ,¢øŒÇ`T¨)9e:ßnùuYÜ¿Ý9Oê’Ç^¡A2×à3˜ `cqƒ ,�貈CF ùÞÒ€§§Waˆ(BƧ�)!ôáx 8¸^ò#ãYŒ2WâÖ üŽg‚yŠWü#�b�F ¤/íhOÜÖàîÇÜ"ÌÌüc®�ˆ™O:ÅÌ÷ß?³}@÷ ÈDêV³›RH!…Ü©"늰2 ûŽþ]_ww„o®,®ÑüÕ½'r÷£²/5ÔuäÜÎ<A²€ J¨V+|âNº^«MãTl2«ƒ=É+ ëtÁgÈÃ1³¤{që¨ Ip‚ÙgQz¯ÚÙt³€rBöÚ1gN)P¤T§ihÃ�àN§Ä!Oø7JC[àd½o{¼OèvÁ Ö5éölY=ÅnYG<êà]væD µ{­zţźÙOù5Rå| O¶(Öã²Àiè\ɸõ¶³ÀéwùÍÖËD£IëLaüâ,'þ³} ÍC‰Pt" Z˜Œ#z ÇåC DAŸ÷š�UôèêÕ5]TLŸá=%ÒˆÛ+ÙOEÖaÈ ‘Õs¢"àP4eZÚ»H ó³Ô¬cÏ^e@E•C¸”à‰·üž�l¼d¿�G§Ý§ó®ÒVg@—.\¡•Õk&OíÉt„M0ó£êZ°n0Ç`—2ç3#Á‚©¶IRç¶M„½ÀO€ö÷ؘé«üÆÊ‹œâg0ïÿ}Ö _=×óßñ{B˜ZøÙÉgyáx)v{¬a(Ì›íõÃÇð¬Úì4L=›ºÞ¼Hǯ<KïÙ2ú‚††ˆÊ¦ýјΕ÷ÑgëG©\mR»µ@ícˬ5•2\Æ4ñJ¬K!tÆUdúˆÏp c¢‘mÛ¸ã…]bg:ìÐL»”¢jl7²iyñxE—°AöæRƒ*" ¬�«„‡±Œ-¨‚;pÏ7¦–�Ö0ýf2äþofó{Ùè—©ç§oã5+ÓìÌWh¡´AÝQHkÃ&ƒ‡,c„é·ÜF%Î_3¯ð˜`Vš ã0Oæ,sýùµ í©{´¿9 •Aªåš rÂÄFïôÓ¹O£ñ$ ˆþý,± ‹ŠŸ=Èaû¥eó±v8÷€Fº7°iÎÐÃhtb{L‡Ù,æf˜ù!;æê´¢«ûý<3bÛ—ž»å÷퇣R››ˆ·!¶¸i¶éëL–ŽªVüªU‡Fܤ­­5jw6l¿#nèšósó|µ•ÈS�®CŸlMÄóc`Az‘fA½$t2—‚éDê.ŒÃ qТLy3Ì!ÉälÙ+’¯}û|eû¥ý®d&¨Ê6;„i··D†úÀÌì\.“LH#špøK~Ì="ö² ^›­‘Ç^¼~x™+uÙîӂ£<V2kj+> cç]íø¡miEÛúOºf¦k=€ kÛœp0²Óms]ˆ]ÁöÛ éÛV’¾¤?ËþB?_ï×\O!ߺâÚÂóìœbÇïrˆ{ëë¤L…RH!7#б¡ëÀ޽¦øJ®wCò|Q…òz’»ÆkÃñiÍ�í›ÍZ¼ÃuÆAÙÁɈë¬ÖÎ89a¡9‰ ²f#€è .D˜D´SR®Õgš×éʽš@‡}ÐiI~å)_«ƒ6 Êß6œJ|Ò$v^ŠaУô¿ OÅ€ Q†Ç©£Öü”¸„вè|¤uæÇieY:,¸Â^ ‡*N #ÏØë‚¢({:_œ˜8).aä”W3K0F¡¥þ¬bï'Lâ<Õyq-n;æõ qÜʽ®"åŠë×éë~ û²> ãö×¼çh‡ïõòs§Šk(ß RãU3¶èû!PŽ=já«Ü‡,�¶;N  ?ÙuA|ÂËÏ�lЇ1.Ä©®ÇŸDé>˜ö &œfºfضИþ[·™ˆN_î·Ÿ½XÙO½8§6ìo)€ˆ„L9 ÀÖÙ³gL±ÿ~:|ø0- À �Ê¿±ÉÂwÈ«8&àÈYXXHÀø^€z^Ä3–�%d¢,ä¿‘>Æ:®•SYÈ7îÁ3\†öÀux†´µÑÐЦ2‘æ4Ü2 ªf Ìrb¿¡ìè/§OŸ¦Ë—/ÓÉ“'“tEÉÅó„¿á;Ízqw9" )¤»Q0gb–¼=r!¯¸zÞÉžëGv;÷~aìM`©ìedí‡Ã‚Â%œ &ãðq“ú嵚³Ö±‡LÀ‰ë f/ÄžÉÞŸêC„nÅOÇŠ>å*bŸ©#Mö ²ß�â·Ëï쨾¢Kg€ÿd˜\Çï¾½ôåØ?0E|¢Üî-�³ÁLh8-“¯IìT¬S½j´üV­Gó-ªøiMAÍ:Übp….›Ý+Gi=êö m¸ëð¿¾î¦0{êxóÓ%î‰ÃÏä4FS–qp82.sSØN§O++�ð¶Í>®ËÀ‹jÝê§eãx÷áÌWì+–¥BŸÜ ìÀ'˜k9×¢ýû–Ì^Ýô{sÅô©²WŠ <€jj ¨+Û~#Z]ߤ^x™VWÛ¦_vèÙçž1í„ðwmSïAìäK÷Šž+”<Ÿ4€"û²Ï†¤¬”«û»NÂ$¡®õ¡×ªïðl %×@w)ùÛÒô} }XÎü–‚)<çï,»žcÃ'ÚïõóÆû=:ôéOÓÂÚL|jU:tÎ_¢S!½T2kÉÒ!š,¥È8l{h× ŸA.°O˜÷‰ÌӞрY$Øp‹%f –ÙPÉ8?9ÄÄ8ä(!œáðïšaP®ý­bêÍŒ5bv”r슶ü~±Vƒ3Ô¯r› Õù±Cò&3í”�`àÛBâˆ#Ãɯ™›JÃxüX– ÏÙYíy`sX¡®?GƒàQS7‹t|áO¨54:ÒЧa“û>€?ž7æC'¶½³àÓ¸ ÔÕʰE{kmZnôÁ-@/]Ú`ô<Û.e¢‘2+¦éZÐ ;”ý¸Æö'a9ð¼Rîœ sœžðæ­f£ÉzóæÖºÇ <�[ÏüÜ3[è!Ƀã@γ‰]L?Ï›\û›þ^új””/ßuZyó][b0C ˜ÃüÝtØ PI³ç4LÙ리íÎ&Áp¬jtÙZµÆí¨í„¤ƒÑlÏ&ÑÏ­]æÌKžØÃŒÚHN¯+°HÞÞLŠ¥X õ ?P“\§¾@ ÌUÍÇa‡e¶çÌܽºz…6:śЉ£‡è‰G¤#GݼbÖq�:«f,ú¬—c^B° •èÊ•uzéj—VV7ž<⹘ëÀb' ˜­ k K…Øñ ‹ÏÎÎ%º¶=fë`£�¤²Fr¹•ýN@.øÁ™F� A;3“g,ƱµÁ,0b¿°¶¢xŸ ÁJÓí6.XH÷Å×›m®WVô<©} Òod‰þ7;Û"Í¢RtB )ä•Ì=psÔë)S4\B³~·ôÀ¨»+¤×«Ü5� >™¬è\- ÀšR¥ÄÆ(­ì‰M°>m'†·<#G\§³f“ЬúoW™sÈòL¹^”G1ƈ²�Á÷˜¤Ä±¯© ]ÐNn•¤Ü2Dò/ŽIˆ8õ ˜ü$\î[¿� )ÅÒÐéI}äMBhJQ]nIåÉœ¢'«4 ­ n—뉤+í$`Lêpˆb’GšbD–z’¶Õ,yí„´$\€ÞÌjc‚äAœö4!ì&ºOâ3 ¦D²ƒv^Zš‘@çIÿ¦ ÁR)ï´EÎíÃ;Éír ÜLº®‘ÑEuë2Ì#cÐ5ñÉ Óo€ö€�Fkh·}BÀÂ: ´“â ~%á)0Ƥ?ÈøvÁ F ê2³À¤ÏºFa¥ÑéÀ�–žìÌHòÛs;¸Cד¤ã~F½}ðƒä±–†¯~õ«ô¥/}‰Á�9r„Çþ–x¬(?X!ðÁ;€ø×¢Þ¤~ðyß¾}\0¼XJÏ•; Ï ž!! 0]ºt)3h� Œ˜‹�Ô[YYIBIÿA9qÞñ7~G^0·Èü‡|áy¸N œ9s†™+¾íÛ¾™+4ÈDŸŠâ“L&mÔ“¤/ý¤B )äN½Wƒ¹ó(æ.½Öì¼ö’'·kîw÷vúoW‹“{ýí’Ú“Šn‘îK­³È²ƒqùÄ38»±¹fs‹|*Õê+³€ñnM’¾výýOº_´ûê;?¬¾3Êì]fBÑ5 ˜?Îè¡€0‰ýÉS§„-P4f4œ ϱ€Ò:—'c±ètºÈ1ƒ,p·^…£t@ õ jVÆÉþ‰™ÆAÚ„3/Œ‚Ø¡“\k.›g™(ô>š¼íL|ÓÄ‚´þƒh;8#uZÆ+Ó�ãN�”ï'Ý&­ÆÀ 8ì±'عZ«Øý®§už˜u/a•‹Ë9ÛjÒ¡ûÓÌ,¨Ü+ì4,ÃAG9;íÉq/f3PE`Ú¨cöÿ½þΟ_¡gŸ9Å gΞ¢³/¿dòmŒ‡ìd% a¯ÓcΦ+<ÛG "D¡¿¶‰Üßb¶ òXÂË%\ÛGÞ÷nHO¥7í¾4L&é{µZ‰6¾ó»èsŸ}š®uÍþ¾yÀ\gÚþ@H½Í-jwÛ®\¦Ù™yv¾{`ù˜D<žFÞ$f“ˆ¡x6Ù¶ÂÉzv6èà˜Éb°Æn¥ÄóMà¸3æî‚è\a‰&¦Tá,ò³iE‰Ã9;˜ñSŽJ1`¤e™&‚±eÃñÈ2 �ÄaÄ> c&0=€c˳L2ÆZBƒþ—i•é¥ð½ÆÙ^¦C­OÒL½O›}ãpúÌbˆt¼!€dÜÄ#.îk~¢Ë`~q8 ½{æèÄž&Ýp†¶æŒƒ\çJ–}"e*¹QlL�%1@*ƒ+âx¯$ÏÔú¢Ì‰ÙšéÜ›‚Ö*´gù -/0ãºM[í5º¶r‰¯_ZÜKæ¬ ße=Y½-$ µ¤çÑ}õÁ'=ÇLc¨Ð�<™;ô»žõú¡ÇêåŽz‰îhÇ|Õê¿Ù$÷ÎÏ/²ó½ÝÞ +W.0»ú8˜<´}Ò®éÁË"aoyåûßçeC_mo„™rÉï:´±>˜c€%(Ûú!~KžÆ@ pÄkVèÐò^Zœ¿—NœØO÷œ<`Æ”±–ý˜‘Ãm¹Cvþž<r<aO©š9yl¶›[]ºxyž?}™¾úÜËôµçÎRg£mÆL…Á|Ø»À�=ZŸ”M€)^ÈöWx;³sI¿Õ}#³>Òö¹;µØƒh‹ {¸]±.€½dssmp:ÍÍ¥ú¾­ß hèlaæ9® Z·_!ߺ’í{iˆryáo„¥m6ëñüM…RH!·MÜ}’ „Í{ÓJ%{8Aî)lD…¼žå.â…Ígƒ N¹@áFLÓrLÙ/F.Qì\#�²Ðf‰ÈÆV”X ~ CNZk‡µvÖ»cí—¿E‘â¤-ÊŒ�"}Š{0IÉ󴢤ó¯7Z’9Í­¯Cú£˜²Tò% ì”õ³aä4¸>¯RFþ»”N°)EYK³ñ@¥®¸Ü@¥—*ÉIïiÔŒº´²£ä÷üùóœ”.80¥|7”‹N+/\H‚†h›’ªû–¤éz´R¯ëU;õµq`§EFòž—–[&W)Ì[ä;uºn¼š àÍ>ËEü»†ù íºwïÞd¼¹×AÙGÿ1{[oÀå@Ü.ÑL$èÂ>C Òdzä»Ä á Ýs%Eà4„oZMÒÓy”G|BÊóË´Ó¼¥§)íI1Œq)“> ãXÊ.i¹s“ü pűcÇø:„¿¸zõ*]¼x1vtè™gž¡§Ÿ~:³2Ç��ðž\ðØ"t» à×ìÙ³‡Û€AÁ"x€ ¸×£N€ <WX1ìé˜õäHWè;‘G€5pÏ€È8Â}�l4â“^�J |x>Ê€4„ÙâÊ•+|-�R/(·pB” ºÎaxÁ³eŽwéö )¤BîDÑû$ÒaΕÓÛÚéV„w'zßÙé´å¤éîË ÀPÍØðjH¨Sïoÿÿìý ´,ÙUïˆÈáfæÍ;¼ù½š^U©æ’ª$FHÈvƒ13 Ä` Ätÿ¬Åb5îe÷ÿ·Wc¼ÜC»Ù,mla„$KB%¡±æyxUoî˜sfDŸoï³#vDæÞ«WRիد²2o 'Nœ8çÄÙ{ûÛvª ap2FKUÚ쬳ã¹îÁf`„€Á“`9GîË´àoÕ¿T´ë^»Þ²ÀLÕi˜5!— 0+GÖ„1;ïqš°UõsÀyˆ>¡)θ®âÒ>!Gã¶ZMêu;ÎÁÜ¥ùz…î™ÐÂ܈A¿šB@õ2¾FÂÔ nmuŠV×Núg-éÐðÉÆeœ:¿!àU:þL/áÚðÒ²¨7䪬¿G�XL¦Çzœ¦_T-ˆæî÷n]5p¿Çì,ëå¾I+ÜÚk­ãî¹Ï‘Ñs:µ©³^ÚG¢Èõº¶Oᜊk»V³A{÷-:.À²sÎù=ISb0ØÀ³S¡”g"ª‰ú ÁsÇOÑ#<1=sì=ùÔ㮞}‰N'IѨ·|›øÊM#l¿G?|ôrÑ)¬”üÖ¹�…þ.‚ŠÎÑôãA)@" )="‘ØáÌò,ÀÂ^Ó2Xdçä`ÉÊŠü½ôª·ÞMþœS®Ö]$œ6gÑ9dçZ´éÖÃúáôÎ )RsÙe$¾g¶Ht=R8w-§#¡°NµÈõ1èa˜~ !ëJŠH@`HÈI ¨ÕÜ6§£CNa0‰GÌZÂ)fºXBýÒ~Äœ¢€ ®�GÄÇ ¾à>aƒ¥ñIª2x°<ú#»x9E͘Ɯ¦ì¨ên|„FÕ«è©á›i®Ò§¥ÚCÔBŠ gvØì'ìdFS۳帺€~¹×ж¦ÍE;3;ËÒ~jÖÛtµïB+rŸ!íqÏq઴чMÂÝ?;ä3@~ 0÷Qõì§Œá ²9ÉêkÚu.,:ïmß×9�šùùckëçéÜùÓT]_¡…ö25Üó®²~kÎñ”íCË+®1t›eª-Wh³$³Ã$~~½ :ehäw‡gC�E{~™šòCÞ´¡Î÷ýn>_bŽ{:}ÌS§ùÖ5[mÕÞI˜…¼ '–m<G%àÏ‚K‘½‡fÍ=Åg¦ÏM@E•ôk§ãy2”¾0ñÛ²mèÎuã²Õ¬Ðu×ì£ë®Z¤#h ¶¹ªŸðPÅ„Y dl9w¿Ó£™u˜ßYcÏØâmy°º}{÷̹v;HwÜz€¾ó›^Eë=òäizàÑsôäskl?ÜûdŒ1âq9ÕÉDÀs‘<0´SÛ‰µíhj˳íXö7Zææš|¯½^—Á‚çÎå>Pr³Ù2€ŽlÌ.E[ží良|¥„hSøâݵ´´È€º¬¯f6ÑË¡W”RJ)¥¥¨Gc®4¾77»¹íYn©W–RÊ‹\®€…Dþc‘.NIB Ô"<DìÕE„*öQ1t­Ím^êä×ãSÆì26†ŒÂ%ìBØ‚<t{‘²Ö:ÁUÑ…•Hým_*zªÙ2ôe­(‚,ˆ$1‹z5@jŽ‚5¬ÂªéDÄ€eþ°NZ«°)ØDY?ÄáÙæúó1'É4ôv–⎿Q˜phÃ௑çj¼µÏAë\Ûì3´ kŒÎ€$q®o¿‹õ¶¿­|;±íªb Úv¶®³®ke«—Ú,É—Kž¯âhÿ¶ý!Ú÷ì3™etÁ³Š«>EEÙaì\A”õ'ÊêbÛÜömuè> ‘ß!,P¶'ìØŸÕ¬C@·u° 0[欱¤¿u¬ë¸°ã &Í­P7ß|3`€à�)2ðÁ±ì¨õ��s¹:ä¼¥N:œ‡z(�à¡:lósA}�vÀµq-me`ÀÇ�<¡%|�jÀvulÀp†2q¸Ž¼[†|œ2cXg¢­pO(à °y�TÔ28ç NêÀÂõ8ZkÏžP!y‰»Ì ¡ì¥á¤”RJy1KñQ'ÌÏ¥¼xe»uÝ—kÍgqd!ëk |O¼óPÖZ8Î(ô³MÎõ�¤ëoÁ;å”r;h 4"ŽÈ1Ù×+¯ÇÒˆ[Œ­N @UÕ±p>"Ú¥¾qÊ"Áë½$IA´X'  Z©0tF.Nµ(­^«ÂÑ\­JM·DZl:'^Dì´):3së†ÔÝă|{®½d­Ô˜Øbêss¬3ëºHî1ðõŠma”1pÌì@©;ðÌôžt}o<df^oÈÀ GÈë¬.Ö66©? ó‹ó>i7¼qFeàü0PG@ÉZÞÓvç°lÖåÞ°6L<=E N¤•èuú|ÝNgÈ©H¾ø¥ûãwƒ×²Ï<ý­¬^H­�À©è{(ßwˆž ‡žFPËó%R0²ËUÿì êjy‹"p!ÂS€ “"„ÎþSBÌP„3g@Š`‹}Ó©D¤ù~Æ ˆÞþú%úÛ/®Ñù• ä¨Ds´´\wÎæ!u;›îY¬1ƒK{¾Íÿ‰KH‹Ãº!„y…S}€Ä Å>£œ(PFì¯×¶aT#øsñÌqn\€A˜—ª> Ø/�‚Àg„”�TqÙ®ï8§:Cê#|!]j2–gκ•g»ˆ*Hh"� ŒÕ¡sΧ©Z  €û»f|–z›gi\;LýÚ4œ¦vý,-.õyì¬#êöD¾¾ÙõseäÚ«FsõÕÚ5Ö1íÜ €UÍÍ7=g#Œ+ÔpóG³6¤½-§O ÄuwO€q : þ ›K˜&¦HbµßÓK>ÍPÞ)oÄEÑ)uâS1ÀÉŒù»ßÇÜtžV×Î1x®Ùtö z“S×DìüO¦ËEû†Õ{­®œ›£Ì<©À8"Ë ‘Ùø„Q°—FUð­0dË‘òãô~%5„FLK‹{iqa/ G=Ïæ±Â÷ v"Ì˘Ë 2ª"`‰“é´Wi›'yûûYÑ—¶†L<ÞÒ5‰}„<ÐÂý¨¹ÑÞÅ9:zõ½âúýtè€{–õÏÁü̂ȿGä„qÖïwi®Qsúÿ÷|k ¼<L€ë0R«ˆí5æ©Q@*¸ãÆ|¾ê®è«^u÷à +«ôèÓ+tÿ#§èØq׎k˃-bNk“\'¸oÙÚ,­ -ë/”k#Û§Šv¤¬=#Õ O£?a>CZ)Ø$È£åÓGžšd`)M«§Ï@Þc0C¥OªÊú­ÎÃ{÷îIÓ?Ù> )Á¥”RÊ -Eÿ$üx…â½gÙªJ{w)/u¹b�blË)ä‘nwà 5 WÏêp³é 4m†uºC,¨b+4•5Ô‰j¢”�±Týž5‘äs¼F#YˆEžêq–i#e’0 ®ýh[èýC`x³Nhetšr£Øê`<ºï;sÎm1æµEª]”ÛpÎFòNûdŒ®3´ˆ"hA¡ˆ‡óŽR­§–iÓ-Øt+V9W±ÎðY Ó"Ûƒ^§¨tÙãŠÊ›1ìÆ°å­Î-*Èv[±Þ—Û ~¹^–—ZŽ=¯ø»h�Ò1fç{Ž:‹˜9!ò†½@#x2 V.Êr˜*;lS4bÈœ1aÖŠŒb´ÂÆ1®3å)×u,ês”ˆLš2:ïGꘟkŠ} ØUÔ°ƒú½á o n¸Ç>ÊÊQp“² í@Q¨÷ã À?üpšfE™*J¿ÁXòpÊØÆ5ŒP…Xì³Ôë);� XÀuq @8ÛPOl·åá:¸ž}† ~Á>Ì):'â8ÓÐ=ö>|˜n¼ñÆôʪ`…‚lØÙ0’\ë)²g·҇–RJ)¥¼˜¥¸–±Û!å<öÒ¢ãeÖöË-Ô ±�r®ÊµÅá¯QÌ @­×šTYªQ··ÉLcŽˆm3E9D×e‰‰ø…£#Õ[MEÂîqÖcôX½.ªfA ¢)Yz†—:½-HÁ �RðÚÅ9’ˆ£w3=jâ_ì "Jü?8Ȥ=ˆö.„ÎÒò<¢ÍØ@}d½hõEF®!Î¥Ðûû¥M÷i/6;kìÔC5@c§ÞâÂ×NCƒTŒ®æï-H]³%æ5ªOû1tŽåÁˆ ½þ6{ç4p3ôõÍG4 ˜…ÒGÁ;‡j³Õ`Gº”磅ã$uŠéú�Öln­\wÏnq©íó�à6ÅñïÁ YJŒÐ3pÄÜ`6üÀk ¨xâ‰ctò”°¤=òÈ#®Î}ƒqÄ;NEGÐö•çÏ¿%4[œwúoq¤ÎrÒñ³(-‡iAVß"«…,¨ÞªãÅ~ô¹Û´E€ïCŸæ"œ  ˜²(ÖC¾i[€¸¾þo?&�LÁ3ƾ9÷ûÍwï¥Oß·F'OË8âÉ� ¦sÀ:gs¿M›ÝuZôº4ך§ù¹yç{­xG³I$Ï×q¿ã*�`IReÅÌ^�’Æ4YjT Ü3võA˜¸±7šÈq®¥,釸|€?"FD0­¿»Î "´CäYBx<3Œ‡<XNqñ3Æ ‡àè­¡Š·7™ˆë€ŽÁ1êl<I'»cªÔÑÁ½s´oÁéÎ)½4wŽ"7–’ ú}“ªõ)ÛŽSe3dÀH5àù‚’ ;É×{Zë-4Cj7ª4‡>Íqª¢ÞXØvC}„² °GÆ>#âÙv¬Y¿óuÓçAF•ylûöqc²Kî3[ln¬RÕéQÍF›ÓU}еÛh_·‘Ûé Ã)Ë,ÝàÜøÄ¿w„Bæyox§(xÔN0J À ë”¶†ì¾Ó–É}ã8�Ýpä�£EУ³gOó»£Õ–°K(öoqÝ•$ù@¤Yö&m»­À�ÖV`·k=®‚m!û—›tÍ¡zå-hïžý…‘Xê�ØqZ¸<îßDC7ç#ÍÏò¤Èh¸vô 7ØCa—àë„¶…¼u3[Á`Ãé8ü³_\hÓëï^¤×Ýu›+†ôÀ£§èó÷£'Ÿ9G«ëÎÀï<’à17æ¢Ìá³l |/ÛkѶ[´íèoµŸà7�4Hu†¿»ÝŽ­ñ±è_ÞЀ {yNéZ#}^ÉDN]ÊE‹µÝéØÛÆØV6ÔËmó-¥”RJ)Jñi·çSFïl¿TK)å¥)WƒE5u:ÆÙ=$š%š½°µ, ^˜µÖÈiuÀÎZlÛ¶e2(&u»ÃÔHR¤šÓúèvëÀµŽZ+ZW«8Y¬^ß*UÖ!\Œ6`ÊË Ìì,ÈÖg÷Y#5žÚ…œ:$mB™XXh§uH•Ê@Û‰¶c¤*°Ññöþµ|5°Îb›°NpK5\¼ž-W·Ùs‹ýJ±íq)Ækí›ÅkÛ¸¨àë`ÿ.îÛÊØ¾“lµ˜ÿr‹½ÈVõ²ãÕ¬(x@XjÈçÉL¼“=IÿEÖe­Ñ9Dûœ‚zlžO)£.ÑŠ){o{o4Ñ{²)…¤,2ÇSê0˜ÕgÕ¡ ÏµHŸmç°âœ¤Ž�®ºêê”ÑAÆî#S%Ú§Ï@ìSàûqÜõ×_ÏÛÀ8qüøq>×Àñ�,àž�ÈÀñ\GÓü�œÀ9[G#O  khS � Ø®iAp Eòƒ-BS·Ø>€û�«Œg¨7ŽÑô%Ú:Ÿà\Ô Ç`¾yöÙg™¡ãèÑ£täȮꭩ>ôyÀpð¶k„+ŽS DÓļXÆR)¥”RŠ»NØj­°Õ£4ê½8dÖsØj=ùBÉ,Ý)«KÈŽ=©‹ö/q\ËZ+cy˜©uÙA…ÜöuçÀ¨Vê~]�Ày2åIõDË™k¹hlýØhhfŽH²ú +@DõJMœÈž ‚bÞ)Ÿ$€¹a`RxV"sŸ®ZÕ¨Jû+Ôži{DµjàY ß&ëÀÙÚ/ñ€ 5²Kd+®³ïk=³ó—ï_~0„ åÅÊŠsð9'6hê¸Àš4ÀF)h„«½Ýsõ�R¤ýX[ÛtÎâ>3StºîoçPêlö¨Ûë3“J=|µ^  Ñ…ÅñN쬯ÏÕøþç[ ZZ¨¶Ns¾Íƒ€r€}>JMµÝ¹³hàºÇŸ 'Ÿ:FÃÁØ­AWèì¹3Ü(„>‚_Á%:×iÉšú3L×èùOæ/êc£+?¨ å+×ýa”1_�¨sT‰rûŠ)B@÷YduË9Ñ ÐDH³R\ŽzDšnÅïó� „ ®ù#õ ØV³°Ð 7Þ]£Ï>ѳ'7i23;…kÀ°RsÏ¼Ô œí™Ýoloº~ZuýT‘Ì|=ÿ¸ø=;[—10(dæÍ¾sáÂÝ:a’X(JОaœŽMŒ[�.Êdh:�*0¶=#öÌøÖ¸<a¯I¸¯$è/ÉD�Bè×nGR÷XØ;ÀÂ*)b¯ËõéÂêõÆ×¹qrµktàеtpô8mêS†c~%é³ÔùD"÷3ã5³s¸±€´#½‘›GB¤1˜¸¹+$ç/çó#gs"IÏ9©qF`ÿÀížÚ2 ò ‰v.´kí3Ù<? å× Ùx 8Ê€>Àv€(ë¨Ò›cЦ"S}ØŽs­Ç,A6OR]ØûTL%ÜlÌ ÓPQ– XR€šµµäÂl”^qê=:ëo­'æÛZm?×€AôóÍΑ‚¤Vcç|f)®Ü•ÉlVÔ¢^¿ÝzÍ–›>×@9Wdü\up^×a:´w^XkÁЂ6ô ™Õ†áôx7×¢W]uÄÝôhׯÚwä{ÐÌ9F�>i÷¹–o#@Ðûh»÷Áë_s”n»ù =öÄ)zü© tâl‡ž=~–ίnºs·7…Û¾;k{ñzö·]CLÛÓô²ã Á©gðÞÑ ÌͰY( GíE¶n¥ ˆCtœÃÖ¦ûìq¥”RJ)_.)®9 ûló¼(º+•RÊKV®€J’(ïñ¸Âß“I— /0êD# Ù CcÐð�]¬*+þV¥ªÀ~%¤eY€�D6–¯xœ]x«sÓ::óJ›ÒäF\¥ÎÔëØz¨ÃV¯ÅÔ"E#x1ÒÞ7ôïÐäT~k»X%BËäöJÄH%p<ÚÉÀ[ä˜b2ÉX5Ø) ±è~KÚ—DT3WÊ5½}k+Ã/ê'%(ö!p”B9± ·QØ6°÷¡Ûãí6Uêí3µß¶?e«Å­½ÎVŠ•¢!zÖu¬bmËÛÊѱaÖ¹/öEº5¤Ûv°2«=¶RVq,æ8Õa<‰Â,Îrÿ?ÏšŠBǨPÉÆ©‘Z `L#‹±âŒ gÌI$‘v¾ü¥EֈΠT‘äŽ+´È–÷9«fµ£u0=z”£.67…½�”ƒ²VÀp `‚¦çÐ2BCSŠ`®À8#@8�``�Ã…¶ÊøÇ¡<\ó7` Œu”yR¯¿1'àùà¼ååeoÀðq¸ÊÕ~‚24»ÒÛ#¥þÆ5ø ùwñ7ˆ'Ožd X+î¸ã>O4p6¯;ê‚z«ÑuÑôR¸>ú˜/J)¥”R^Œ2Ë€_ÊK[¶Z ¼Ðë=»N³º“�¼£œ£BûZ({žè<X[Õj Ö!C°!ôhh®.tùºP0{gø6Å›9ÞàHìù¨í$e7K’lç5oâì—؆¿½+^®5ñ|AÅå˜û PXc9|Íèðž-/VéÐ"Ö—ñ²Ê—hD= ;²“PÖˆ§H˜ˆ~ø”pôÅÞéëõ8ˈˆc¢Pbïø”í`ĤÍk}.бÓîú¯UëU0t„)â [aG,²ç/lÐé3+´¾Öqk­[ïŒ)5À 6�édþ¨þ­ŽXѹ‘š¯9±“qn®Î ­ù§>`&†€Ò¶Öò(ȀΓ!Ñ™³« öXwëÈûï»V×VymvòÄ ކ¤i4Z_Ššäte):Ìý¶ŽÊüoÊÀ�iB£›á(p©î0‹1Âþ­ß™Q2œyŽNDž½Â¥çØòiª<FL³W豑Jø{)¦Iï5 S ,ü'«|{æèM¯:HŸ¯Uéñc«Îù0Û‹ê/Mu0Z4Zîy ØéÞti8èQ£Þtkç&Õ\¿ÔëÀ2Ãà©H†ž'ü\#á" Ä;æñ�ǵŒÄŒ…DXPWQÇ’Ô¡=žôý³ŽX/ÄæØ3c~n‘Q{v„XX2&2V9]‘»©CÌã¶—F­%L^W‚~8w¶• tfõµ6íiÝB­æ˜Ú•ÓÔwý{£çô¡Ô&’À?Ÿ(g»Ê†ˆ0æ œW»ßòó›«$Ì*0WK¨Y x|ã¦Àh1rÏc0©7òö®dl$i<@:· ;EžÁÁ³íl³óûÀÚ€TP˜Çñ¬ÁN»¹¹N½î&ƒkÀ„27×{xiož"Ã(µ‡©NÖ|LQàߘ,lÁ½×Œùb€LLª¦'b좬IòïN;—Léáé{@� ­&X-šÞéîÞg`gí¯r*™´„©Ißi64 Ÿæ7«C`ìEɯãüñIöKÏÍ®þ{ªtÕ½âèZhE xbûjµâí­±oe ¬ÍM7V{]ºæš«‘1DÝòó’̃¡ŸÄÅöáç|'QÚ–ÚNAZË„, $IÓYÉû}±…4"Géµwß@gÎoÒãOž£û>NO<}†Î­tø½ºÕòÆ®k·²›·çézÁöõÄ<« È—%}¯Ê¶µ àý‹Î°Ø °íêSÊËCôùg¶ø ÛÄŠ©ñfI©·•RJ)—[Šï$ûw²fGë-ße¥¼”åŠXd‘× Ó ŠS3æEk%],¨èb6|A1¶¨ukêô,:Ñ‹ÎxÝf4ýÛF<(HA¯k•4»(W£5ðe†Å<k„–e‘«ÅºÛo”¥‘Û6ÕIñ|ý[¯c2Š€ KÍÈé7-5Öè¯dyV6ÂMPf@ íE§H¶8K5'£Î¤†G•Y�u¬Âñ G*¤ìŒDö¹Ù{™%»Y„ÎRvvû²˜å Ød±S¹Åsg•¯Çí¦Ì‹Y„ç-·xßíñ;·hÂŽ»b„æ¥-ž‡Å�”–ÄS3ªQÇ©Ì!ÕãM±)}°eÂIÙN5pú”5Ó7ÅŒ™0ŒrchVj“­Úh0¬(Åghç̈@py€#Ð6šCÁøý�Q ]06‘F@ ½®«ÌàëƒB8VÙ2Àxz(ßW]u3^à·2B .¸uÆ9šfåâz¸e»Pf ” Ð…¨õÌ'@Üê\ (¤¬À|sÍ5×pz\;ãÈ<Šzáš ¼Á}hùh#Sð7Ê×kàó\¹Ø,¥”R^²Óš¤Tœ_:òå|VÖ)a%u\¥ë2 ­€ â˜À‚S á˜@äïÈ9Gœf@t$ÕcŸêƒùˆ€õÝx2öÎcwÖܺNœîA šµz³ Nò xöþ„Ý`šÂYâ[Ø) §ëò|….y=pG '’â@$¢00å'¨£[w†š^ÄëoÞY§ôûvǿѠ^/–6s-¢Æñ-kÜ,õd¯7J«ATe§ä\­Â€‡j}^hüë┇£ lýÁN±�·©;¾šs8yý0ÕO¥Þ¸wèõ‹ uçLDê’µÂ$‡g¬, êÀË|‹Rî`8¢óçVÜz,j#Z]Ù G’Î_8Ï÷¶²zºIÇ>¹f�)¦ÈÅþj ƒSÛHfg?;)Šº«öMûwñø"ÀAõâ„3®™ÉÎÏ4ì±èÒ‘×iä˜ dFÓuau¤ 8`Ä„¡s*ºï9çà>°Ûê´±9¤§;˜!ú Ôkp®WÙÑŒ(ÿ.Xú×[œ"ˆ*âxH_âôþÁ#`š@Rôøq…º±íaâuDlj8nÕ¦úûT�ïu¾ƒørüVô{¬ñÕÁomDê4­×ÛéÜ¡)yÄ£mÎ6 îæ=W§(ÕètŸ»ÿej·öP½rŽææOQÏ͛à uz±0qè ¥ÏIæå-,øoè®àÆN×}תn "Ö5§;·Yw:J+`0AÌ Ž Ÿ3t×ì �¨r:ôHÀã8{VÚ„E(shk_J%I²1LäYTå7ìx­Ê<Û‰´Mûn.ÚmR­×aÆ¢¹º�$0‡"m‹�)d.Ã|òCˆ›ss‹÷D^«äÆpa"ȪHYŠ¢Ä×Uûwû¾dú ÷Ý ˜z/d·lR–òœ Ayßá﹚»·š¤•°zíf6Î>O˜?W'±•!݆VYÁ(‚K…³Á�i_ŽÓÞœÙÊ|€Ô|#¢kÔ誃®ŸЃå=Ám8§UIä~ÐÆxVЩ¸i�Wa&›HÒ‚ >¡€¾07fà‰0o³Q€P2 åÙYì‘?ÄtpO“î=J·ßtú4Ý÷Ðqº÷¡Ó´ºÙOm.¡/*6GÛG‹ö]{-*¶™Y§Xû ž:(%«]c@`7Ðyƒç9o_À;€ ÀCº ñEÛÛJ¹òD-'œd§e|©“•RÊ‹WŠ>¥Y>¦—²(ó7ÞiYÀi9'•òÒ•+`ˆÅ<;ô‰ü •úÒò"U;]ÎëŠÜv•J5UŒTÁµ€ ËÒ Ê,D½4Ô!¦¿sJ‰Wޱ.–­×+‚5Šë}Y®g£Š û¢ñÇ‚1Š@ =^©âNS=rtE"ìE°G‘ÅBë± {OE&m¥þ—ý©¹1'Ûp=8<×ÖÖXñ„³û,d¡Œ^EÅd«IþÅ>ù¿˜^P/”²·[p…Ž[ ‚²ícûhÑ ž3z¤cÕÝ ’‚‘(Ìq;gà<6ú$bè®Õ*™ÑÝD1$q’«£—ÙØc‚5ïöyïdÜÙêýèœqÓM7Ñûùº�(£„¦Ý� û0 à¶ ëÛEÏSЖ솱Œý�-(«Ø"�¼�¸e)hã‰'žàô¸¦¦ÒT&(CÁ8ŒÊD¡`‡sµÝ1—àZÌM¨ :£~'NœàkÞpà ®@ŸÏõÓyV¯¡ lÇ1h'§À”+yÇ>ßo•J)¥”RJ)åJ»WÈ®…t}•”ÁB�«]ç!Bk«ZµFICœ¯ëë«Ô¯uÙ9‡¼ð ݈'i´°¯…D1;‡U2ýO"ÚóìrºÐm¶þ?/ï¸ÊR+Ù­UåéSC:y>¡Åù*-5¤BõªÔq–¨+‰R§šoŸ@ÒŠà4µ‡ž£íìÏa.àá1§'�s@-§£Z€ÆÄ9úÆÃ> ûˆN†‡l•Y=ZMçðk´i¾‰üñCªV$%(l[È3ÓµeÌѪ[ïYnºµ”8 A#ßjÖXÏW€²eIÐç{`Ê ”n·.;霯C·V<K=öGO#|£³ÁW~NìdƒÀ9û“0žjßâÚ:ïä› °Èí£ `Q4áL–ˆÙ� µ?Lƒ(f±[Ì.o`ASÛµ{®Ü‹X˜ëAé6s.�3óm‰ÊG¤6_ŒíɈAH òÔsëî{V:rnq‰·ˆ3ýßÚ* µÚÛ‘6S‡øtØÞjµ™Ý@×yCu5ÔΨl çÓ½bŸ´CŠ·� eýÐód½?ô�%Mñ§ã‡û&Ý‚e´Žö·Î<ÿM¤OcŸö'éS˜œ ÁxƒkË4W]pNø#Ô®£fí<õª­ *L’-²9ÉÚ‘‚|!éQ “P—Ó É<–šÎÀQ€Ø¸=œþW—²,U˜­&ŽS|õÀv1Š|Á©EÀfd ~âûc°J6—&ƤNý u <V•5ܵšÃ³£>H3ÄÏ)&ô¯j¥Â „Z³–llÿ$û™_Ÿ$ P.ÔG�X ´€Ø÷Búv1:vÑ–u鳉³t»EÆþE|ï`pi¶† ¼à渎›kõ;Üþ æ¹W· ðíSB°�€€û“µ„•<@ Ý�t€Ä&:Óe½ºVKø] öŠtîKäZ°ˆÒ4¡ÐÏŸ»Àó|•S¯Tù¼¨Jê ¤‰rÇÇ`Eât:nÜ ð$Ê·_ÖfAúœfÙrtŸ<Ç€Û�àå…:}Õ]×Ò+®ÛC¯¾ãúÔŸ¥/>x‚SóÄný’‚*‚ôu1R bÉ·¥MC3m¥özÊ…m˜?•uì¡ÊÄŒ¹¦QŸ{Áln¥¼øÅÚúñ»´•RÊK[¶Ò?¬Ìò½TD×Õ³Þ—¥”òR”+`aj€ÃBTk«%J<£0ÂG õ‡ýt¢eX0„R2ª“KÓ‡(]»FPØ2¬‘Á:àÔ!i"´ËQD1«Kv-W”jø€ØÅ¸5Þéõ‹@›êCËÑëØòx?Œ�\[뮓!޳ö¶ª0èyÖ¨§ ˜"²Ñ¶Lihiïˆ"(õA´:œ¢ñ® 6½KÑpeë[”­€ »y™mrØnßå’/×5 ÛµÑWBŠ×žÕö™[¥\ÇŠ:îóroÜ 0¡¢8¶ZõøÀG±$yV›Ðô7ôKKbÿÈCÓõÕzª±£¢q·º˜öÙX£:ÆÖ]w½Šn¸ázs� ((B Ó`tPæ Mo„ã0Îõ¬ƒ£¦YAy8^™�j�ÛƒÖ†´ýÕW_2Ô ,�0þx�£„Îa�G€ Ô ÛBõ¨ì vP-ž®‹ûó˜1t¾Ây`àxæ™g8-ÊÅ~œƒûÀù(Ç+@Ûq.ꇺ*»…p�…hqm´mÑÐRJ)¥”RJ)W’ä;aÈ ¿UçP]KS!fz‹Òþ+‚:;ÕÉI ´gp…û£oU¢±”âTìHŒH&’žÈG‹Cnlhå­óSÖŽ\Ût-”ó¢ˆW—¿9¢º“®A­.ê¯ þõîˆV;c:‰T ¡s Ôˆö´CZšwÆšYÓÂÙšþé¯Éû$@ ý¶uÆá½—¼v 9RÎ,W¤ê#z+iä½ê~ÖÁ¬íÏÏh2tÎ^ç8]nmÎ…p͹µÍ’[g-P{¡Å4nïIF./Ï»cÚnMV&ƒz…2f„ uvqÿðÕÖ~±¾Þ¥cÏœ Íõž[gŽyùàCÒ…óg9ҽ밦wŸˆõÌÐ;oJR ô4hy–³¸o+Ð×7È3XõÏ­X(r¿S@IÄNmÙI¤·g£Ø <1 ¢w°Ðþ8 ø¡û‚0É¥!ÉŽK¸ß8  Šª[Ë·hï¾}Ô� �IÌc`èÖÓ§N®ÑÃ] Ç] µ °PŒc^ÂìƒD£½“™Ì{R©4y\Æ Ôë:§{w“+gÙ¹Þj-r_TÛGÖ§ç®QT5¶)�@Lì%Ý §úO˜øq®ÎÑLŸ$Yص}dR±B¬mIû‰Ÿ0³EX•èz±> p“ºqƒzƒ6õG‡ÝÜvíi>àÚc%.tœl"í®s&ev\’JîÒn08 Ç27:Õ}r•„ýcsSÆÕÚæˆÇ6ØH[Èሚ®žO±Â/"N‚çÛíÝ·û=Ñs5?KÏ–úçáÙ4 ©> PÌdÄé&Ðö˜×‡£>õáÈëé®ï�|1?ߦV³Åº6€Ò>“ÎíÒ*¡´ò aW`V’8cQò{H9Ì‘Œ™)-}}’¥‡²ýÕÚëtüD þˆd€,�ˆ0ÛC%`ðÆS n|Uêmnp¿ÀßHŸÔB @jk”ù=†x›Yy–Š$Õѳ ª˜Á52×Ç Šã1U\ù›î¹›n|uÝ}U©Ú (¢:JKÂ:âÙ{,˜)Âs[¡ÚƦӉ«|/5ŸŽkÔk "��cRöáŠ{ÿEiSˆÑ–2mûÑ¿ñ­ï6íYœ§«/оå&}âïžæ9ˆ”’¬½xmZ Òö’Ù(có®ÍìMÖf3Ëž©¢ó-ì° HÚ¡_J„Þ‰Ž6I¤ïÆ€ZÊ'ÖN©óŠž–RJ)W®¼Ð¾žR¬®”R®¹bÞºˆîõ„)Eù¡…)ìjå?rÊf‹éé`hcú@g£œñA¬ªèbQ«ŽÑbÄ.€¡`«ó,Ëõ˜ä@;¡(C× JPG¯e€0 ­1êi9Z®öÔ¦×(F)HC¯£ |=ázW²ˆËZas&©£TÛ@ó*ÈÁô~„ÆlL×_} Ää;™ˆ²i):ÇQœ£ê„…SÏ@)÷mt€Ò ³rÕ= ÄNçîF¶s°îôRÝíõŸï˹hz¡_”[¾5PÙ~œÁiº Äà c³X–FV8Ê$ „„H’j¥ê'ÂP€ykú = 2ŒjܲÆ= PÒç¯Fm¡¶sãv7àŠY “íþ¶¢eë˜=zô(]wݵ LÀXS¶5h[bÚ� Ì�hQ$(8ßú<p€ pŒÛP®‚0W@t®HBÙ'”Šç¡n`ÍÀçØ±côôÓOsûã8\ûºë®ã{ÐÔ!Ôóˆ^×Eý”am pƃ>È׿ãŽ;èðáÃü[ïEçF”‰÷�è:ï¡ ”CçP°X`?î£ÈTJ)ô‡5ç´2[¨”RJ)åÅ&xW_ŒX «}çÙ<ãªûäÙÈ&©?Aõ9¼‹ÕÉ)=œ£­aVX“t»¦ÔFÄ;œì$K2êzlCÊN!âKqâ©ö=X[S‰é{Þ²Úu°:Òô¿ƒÆæþôxÕ¡Šk9D~»[ãzÇpp%tìô„æ›D{Ûí]pŽ5¤\ YÅ鵡F—»#°³ß¿BR0H Dò!—$ºS€„0ªŠóŒõGa·@º»v¶ÏφS›Œ7àpæì ¯`]v͵Wsöµ×`@RDÀAˆ`D2£D]/KZ|*ͧ€ë3¨âìé÷ÌGôÔÓOÒ‰Ç=ØPR°£[nG@!¥äó´ŒÆ˜‹êäú$‘:ð2Ç®î³zäN@‹J8;ýÄ2QÌH =(0KAE€Ãl †2å)£E^Iëé>=6 Ü‘ÕÝï#q:çÀÜ„fÁ­{÷íÛËÀ I™8aÆ‚ñ°G›Ý!<٣Ǟ9O>u–V7ú4pÎö!ÒoÄ^¸'‹ŸSãÓ¬}˜ ú�R"f®Àgss•6;Ü›ÍyjÏ/1›i¦[£ÜJš2%Ž­ÝEu³$íØ&ÎÎNnNâ4Bn^Àý £Fhõ;Ù¸·u¶bíÖÎ$ó‡+6™DØ �ˆb p!™tݯ®»ß÷wB›5W§Æ]tíÒƒÔ¬»¿ÝîÕþ $0IïM G6šZXkˆ£øe—Ì£‰- J’þ! 3}ˆ>³º9f˜â.Ÿ|Ýíý{ΡÑ|£FáJÓ!ÅqÄ€§áhBk›=·­êê6¿1§* ‰ü|3¡~·Ëó7æåÄ�*˜wó»>×§Ðèz½lÿns Ú&×€™¦4h"ðw{‡R„dl(8åqM�Êf®^¥F]ÒÚÔë�Ó¸ö®„ÌPU„-iUª‘ŒØfŸü$-󴟯u}?ñ` î¯Dðx§»v˜8&ì�—anļ<ì¨ïÞu`"Šú +‘ô;WŽ#}×Þ«—Nô Ô)öu ðúÇÚãtóVeHaÇ£ŒD’>+Œ&~>ðýWŠ‘÷ À ®kõ“±«×ÄËwÐO0ï7^wãŒEæœû4¨áÞÏ�\TЮ�YTt<$¤SŽùâ*þο›c€ñ3¾ûy`ß<½ãí·ÒÝ·¢Üó}áÁSnNêqÛdsÎîA6hn–}ž7‹6MeÕÁ: ï3µEàºÕ*Ø6Ø~$sx¼×Dª¥çiÏ+å¥+EEPö…RJyÉÈó³/Õñ®U¶~ÊRJy)˰ÈÏ5‰VrÊØÚú;È0áÀ™¥Q×jÀ‚ñ¥ÙBÞº&m©‹Á率ªTVÞŠl ù Ôí6…ö)å<ÅJ[¯ôøºV6 h°@ »Ð†XãÄ.œôúZ¾žor­³-¯h䱨éâ$§](ªÊê!_yÃ!‘|´†Þ–«çªñP+(ë¶Ûnãr q±‚²àØ„ÃåÁaª‘ðzMë„.¾€l{\ŠÁ³ö¿P/½®½Ûë_.°ÅvNúÝ‚"vsÜNÇ÷[fkÌž5Îô·Œ}0ñÿseq¬J’±ÐÇ`špFF¹Øp‡<ÁœBcÓý]CæZêõ‡yã@ä|¦ü³FSsjºçÛnÛ§ç ãÃ"§Ø�(�àŒ70:@ÀDƒ¹�° ãŸ}ûö1+Úà Ì“�g`Ζf6 0QØÔ˜WñÁ98‚²ä�èA£KQŸýû÷ó\�æ 0G�hÀ®wêÔ)n7ÔÇáƒ÷®ûÂùh[Ô çâƒë<üðÃ|ìÝwßÍ÷k£P¤/Ñçªlxö¸Í«ªï°_`Ú s ¾­“ç”R ÓÃÂB›J)¥”R^Ì‚õŠßw#³Öá î¡wrøÝ¼îŒh0¤ïwˆ:”U/dF‚D<ìê¨Gº w‚ñnÅ9qZìx…³BÖwp¬ŽØé‡²+•);†‚=- \׎¢Uýúq˜®™TQ½Iu.x/¶ž§Çã8½çÁhÈ÷§ûF7 N?¡'OI,»WÃ¥[ZNæô·×Èô½L7(:‚äoYèqAÝ R}ðzk¤ !“4¨ ÓUãÔIËŽZ×´ç\[YYå¾ñ÷ßö&:|h§8/èe†6–»®€¾[/Ëz¬C_úÒcük¸§žzÂ9”×Yg/®ã3 Chì2QÌäæBŸÁ´G¥ÓmXì¯ÅmzmòeG3œª)€" ·OØm³@6…Çìs zEЇáî,$…C˜êùrßš¢ÇSû»ÖæXOcíŒhw#iðz´º1¢‡9E÷?r’NœÞ Þ ‡8ÖÃ#IÁeUBïÀ …9Á=Î0ÊêkƒFìøÑô76=)¤ÕZböŠnw“Ö7V8D{~Ñ­¥–ÙYiѶ-Ð'ãÄQS��âãQªÖªMw~=lëü¢×æ>¬‘×/íü¡ãRÛÖ‚/ô¹N�œaT"¥ à�Ó1Ý«ÀQ ›Ô)>tŽj§—„ΑݹÞ©ÕþjºvùóîÞÇn[@+ý*ƒ"¤ü„çII«aC<�% å'2oL˜Ù&c¨TCÏ”ø¹Mù|¨ žµsªŸßèsÿD›kÛV£F{—ZÔn$1Çiê §/#8Ï•)ÎŽå êttúìŠÌI!î]æ�s�¾@ê”I,mO–D2öNvŠY.ªÎQøÐUœÆs5Ƴ/8 ¬î>�˜CÚa÷Yj7©5Wç¾1��Åœ{¯TYçóÁFHK4ÖZ€QbòëB_u}fÃíK&ãt~”ï‘»ŸˆÎmFîYl2ãE*‰b¿$]ú®Í÷‡þçÛá‡ôUx0¸&÷cÛ¯Üq#÷ŽÜp:,úçüüBÊ )¤ ÒOq Õc•)¡Ûí¥inðLÁŽ�=m0JFT‰Àrçw0à…Û×§˜mÒ7p V$qjåùÊCu\3qãÁ½CŒÿ¾ãTÜ{Ú-w½&€ ¤ŠªS£YçzHº¨lî”1™·‹ØùÚn·ãõtMâ›sýîæöÓõ×ìc6ßüý¿¥³ç6ÓóÑ¿¥LJÇøVb¯aß r´vY}ס`P¨Ús¦Ás@E4u_i9•‹·¡–r¥J´õ|캥”RÊ—GvëË™åûy)ñì}Z•òÒ—+Š7Ê:)ùÌ`,f«Î7 R y¥£‡"C˜8ãÛnaÛe%Ñ ýAŸ?Z6Ê‚L ‘nkjxƒÒ£‚‚:¬£Ô‚%lK1ºÞÒßÚÈ.½†5ލÁ稢Æ0Ýo£­ jÀ+¢§õZü …â׳‘ã–ÖÖ_ÏE[ãþ¡,h›¡^êD„=z”êlÜ­Ø6ƒ"G/ÊÅõP^‘µB·yžŠ/ªç»Ýîüz»Çvû‹Ç^κ^®æ¥4´?[ÜwÚ_-ðÂRwÂÀ)ñÓ¬A’7^ ¥2¥ ,ê$Pƒ:Žy#9GFB!ékÏ![VføË�Bv¾SCé,‹­ÚlÖöÚWërôèuôÆ7¾ÿÇOA5ôbœcŽÕñÀ¦A½1^Ÿxâ‰<vÁ6o0o뜀s†PffUF Ì_8s: í (ÃÛP7e¬Ð¹À‰;3ÏXB�s(ã˜3ð  ½žá³Ï>K<ð�ƒ"n¼ñF®7Ú�×ñøFY¸&Ê@ÝpîÍMôùjù8^Ûí¤Ìjˆ-¥‘K–RJ)¥|¹äbç)«ƒdÊ̱4`)`S’¥sÓtŽ ²¯5rN‹¼^ÃÿçHY‰~ ¸êÞ·ëζIãÉæ[ ì ËaÑÁ©Îû¢321€t»žTgiªKùºéúÒ:]tíd¿ªoA„1Ã3I˜Ñ‘ßi`mÂäétfeDçÖbçü iÏ<Ñþ¥œ¿’€Ó«ví;ÓDTàE ™M ¸vÖº)�ë0¬Ý œ×ûåˆð$ÈñemKtíuÙy¦À�»†xg.œ_¡{ï†ë…õÕ—>÷IÁ)7ñsÕhb<7mK‡Ììkœ¾Bû–סýýkô¯]_Ï2b ÅOq%œNá‘9òg³QØÔ!ö<AÌ*¯Xvz>‘IP¡¬­[×7c²¨ÏÌ|À¯w›Üžx΃ÁVέRßyÀzô}ösǘ±"Æ~<3¬e"¤¹Ù<N¼ŽÆŠX¢Úá8NØT•Hôý8É;FÃL/³¶k÷Ðú³NRo²ƒ ª fµXs «Öørþ˜çØ�¥å0+Žo6½í$ÊÙ=´ûZv Ó¶ïØ¾¤sˆØãm° ïKÀæàZmâæ±ó‹³ŸG�U>‚ 󖤔ÓˆÖ7?Itæi±u3j?DíVÌÎðÕN…Vû˜OÀt2[MÀ}Oî)ñ ‹Ñ$V¾"Þ†9`4ö³ÇÔ=ºöˆ„“VÈ1Ê x jÔ:ð”sø'øŒéøsn¬;;;Ø[u:|`9|€æ�n¨Wé¶°=oÂó9Ø ªâ¸¯x 0÷¦@aPç>æ¨j¥&é1‘œrĵñpÂÌÀ[w ÚŽi£Û£Ø!Ü®¬uh­ÓwýANe“¾�±`&¹nìß5`Èãd&c‰Ì'f¬ûtqâíhÜDÇw]æ¼Ä3ÀÑžª#Šó= 0À�7ž«µºë*8qúUÎW¸7›-ŸNY` ã…Ú�b€ŽGç¾Ê§·’“.Ý{ßôÚ×ÞFÇ:™Ÿ!…I¥" «I%búp ,¡¼;2`Xâç €-BNg3�4pïô+æ›H{Ò¦Ö<R¾¸:5êü.ç)Q2ÐËÍ÷É씫é3ã”8°‘Ðõµn»á ûì¥ +ByòÎÙÉVVœ›Šû jûP– ó˜`hP`±ÉßWñUÊËSl?°kéÚþ\J)¥¼°2ËOeÇ43ñ{`¤¾K.§èÚDÓ`Cß»œé‡ŠïÈrÎ*å¥,WÀ"™r¦Û…-©pb©â §›Ò¿Ã‘…h /Qàj s ~5äE<”m(dBy+ùdÅ êÓmÄB5'‘b„³l}¤J¾*¬±IiêT%VaW¶ kHPP†!,s…*ï:©C×ÅÞ¦R±u` ‚/_™7Ô�%JÆj³õÓ{·Ì½^—•X¦ÑlÏÓUW]•Öëb&ÓÀÔ Ê œ’ê¬T£¦¶…m­[ñZ;9—w PØî¸‹9¨\Š‘z»ó.¤p9^n ®¸\` +ÜdÇXñ·5PêýgqYb¨ÁóL.¹¥)e™Ðoe‰Ù$atQÔEq×vW—lË¢ù,ÓjíÔ~ÛíÛjÎÑóìµ™‚³�¤X^^f# Æ"Æ$ 1Ta?>؆±‰¹WÁj@Ðù×B[ãZ°MÀÀƒ1®iBp>ŽGy¸Ê›„ƒ4ŽÛ†F‘ᣬF(s¶eÇ¡ÍQßû￟î»ï¾” rï½÷ò½¿úÕ¯æsQoD Žú,tÎ`^ÅbõÐDy8 a�4Ä UOSa>Æušœ«:¡SåB³”RJ)¥”+P8;ç¨'Þƒ¼]ˆÑ³¦Â�N#Ákû0uÞ«ž‘¢ˆ×HU0QZt県9X[£{‘®)¼†X›…s¶‚Þiß‚@ÒŒ`¦Ññ6 AUù[×”êìUѵ¢£­s1_×tœËåGAÈ~ظÂ)Dà•«ð}Ãï䅄άÔ8gQ@{æÇÔnÄì4«1Íz^OÆr4N$eˆ‚ ØñHâ$Ô{Èê¦k×x"‘良G\û{óԔ )¯ëÜcÇÎÐí·_ïV¢3özCÖ¹OŸ=E'O¯Òù ÔsÎÍcÇž¡3'ŸdàNˆ‰‚Od‰º~Ãm{nM2Ê}~&ò`|û°„ßèsÛX¡¬Z†8UÃt_…Ùð °AÏeÛÁ4 bp!Ôô³Aª¿˜-|Úƒ0¤)G|N¤m2ëX2Eì0­ðóÅšëâö¼¶Î¶²áÖÂ}猞г'ÎÓ}÷?K?zÒùÒCvþ×êiÏ ‰”ø¾°’Ó!úž3MÉåM8åê8•œž|ù³€º}ÄାÌîzHû••snM~’ÓÁNÄ ¨£Ìù v �2$ƒ˜ÌT’HöqÎþ¡ã[ûydcFX`(mseºÐqom3vŽÐù!“`.Â3«ºó¹ÁÀì0×Dç@k“kkûMÆ=ZÙømôÒò|‹ö4NÒžE§§´«´ÙCú1 †Èš$Y¢V�’IÈŽr<D0E03KÊD>ÍŽïo~T!-ŒÖIï3K34âym0è¥LD ˆGŠ•J…�˜ï7†ÝÿøéŒÉôæêÉ(K±™^H£·=¶ó¹ÚßFã¾Óõ΋„{xþË{öqYãÑ€ç¬$ÉÒEɸ=°€¼yTîOÀYÒbÿÌ…í‚Áe ûô.:äHțLö„ÒΞêâ” g6-î?‰·Çùy÷Q­Ì1 ºí©S'Yo%:ŸÖAY sjŠ]N‘„þ>ó ºÕê€êê+�Ïþa.£ëÚ¶Æéy%åÞÕHûgŽçvPƒmló˜¤iX²ÔEºBÛöú1õcÚØìQ«Žt£®~ MþnÍÃÑSgöâZ-›C‰ Ž(ʺ†3Òww¥^ ™kãDæÛøõ7Ó½Ÿ¦Õõi6®ldÙZ!Hm?hØKÅ ­³t´Ù¾lƒçf­%L"Ï"¦\º’¤d°(Eûæ´#¶”RJyi‰µÝÁ̬AÆ/„EEšÅ¿Á¶s?wò¬÷r)¥¼Tå Xd‹ÍÌÐRpxz¥ œ|J/¯Î?ë°Óíæf‡b§ ̹Åûh®–Kû!ÑC>ß­_ ;]-u|ª±ÍF?¨ãÐF]ØôVŠó]e[ÁlSˆØÔ&ÁªÇ©á •*ïA–;' …n˜4Š©D4J_Ûm„ßýA75p¨rŒ6 ýð‘Ã4{”]ì*›¼5` >x©àÙU*•4Jݶ¡eÅH•)Ӷʼn|'`ÁåZ\ÙHñ•^T_NpÅÅ�CŠ’.Lôíë9ãFh i€t»eŽÉ§=uª”ã M…:éØãRL”Q›Ù‚I c‰Fñy|-³ÆnúòvÛ·;¶8Ÿ(6>púøú裦÷Ѓ°_Ç%� ˆ˜©°1ªÊ”kÓdhÔÊÀv¥ÇÈ�‚ý(GA ä@Ýp 0P�¤¡tà8ÏF‰ê<롎˜ïxþvÛ�ìã^A�w¨ ê{òäIúÈG>BO=õ—¯À 0Y ]$ªG¢¨PÊGý´\\K†jLT @¸Ü/Ú ï5�ÚÈ×R9.¥”RJ)åJ¤fÜØ\÷, Äk#¬©àЭWê ’ˆ¡¡ú5L¸‡¨ƒSt&ˆóº’êD²¾AîyD;7hq¡Ê4ç½^‡Y yÕs‘ªªÃÈ0ò”ÿYä<;2£0­§¾ûíúÒêPº^ÔuœM9iÓJBR¬‰ŽO4\01Li*;‰Ÿ¸*'­u+ ®UÚרtNU8¾ˆS4(«x¨)ñ¼s.} ¥é�bJRÇ׸P�xñËQÞ‰€ ªà¤¨SÕß»œÿÀ#OÒÑë¯æTyXo=wü$;vÊ? çž³Ø9~é<ÀYôûÈ.ÕsêrÎuIy rŽ÷­¾‹¿3 Ãö¬E'¡#,€X€ašnCõT fPÐD4‹Â…³ÓŽdýtvZ‘$]DךÅ1¤Ì0U¬­Ýú}¾ÝrkÛ%Zh/ò¸Œ'’Võä©ó´ºÑ¥•µ9ߥ‡Ÿ\§gŸKm�•Æ<…ªW%’€Â<™ûŽë38JŸOªƒ(ôã(Hß* |Çü $@¦¨ËṌÆ2 eBÏuÜ*ÖìøÞtóú�ÍÆË8óþ\š¯[@¬Í!Ó%%­>[™?”EõŸät-+À¥ícŸ-ØWLØŠg *bozö9µ…É%bfÁøa��9ýl}…6ÖQka@K­홫RT_¡s½ŠÓUÆÔ¨Íì(*öà+õï~WÀø“„iÝP›Ñ8IuÚ T!Nf™ûÄÙÞn-¤Ñ‘iêÙXÝÈ €XT/"ÛWª•\[rûQ>²ß:ªÑ_<œ‚ðñ9î,__Xêܾ)(À˜P÷’LÂ&yLL˜ÆCú¸� Òdlj9=^mnq\èC §>‘ê31›ÍŠ}.õ)m§)DâDXY�&Á˜„÷g5TGV½4)àY2ÈPæ1 ꊹ Æn6OBg zÄž}(€M±Æ÷Àˆ:‡nnïWÂÔI>uKœð»JRCE~œÈ½lú~ƯÙì;çŽ{7lô»Ôܘs}fÞÍGMZXj¹z×ÈÁýÁ¿W)7ßiœÁøàŸc5/)°ëБCôUw^EýÌ3¹€5}–Öflí1ÚßX{�>–=¶�¶À{ Û'øýÛµCÞ¶« ÃR^ž’·'ò–Ò~TJ)/a™®PÑ@EØÂ-@Wõ [FÆ hßt”õ°IÛÔ#_'�#7669uR†ƒeª”RJ¹b�³œ…Šè-î³ SˆFIp¡Œ˜¬ðÁä¡@(„««+¬üiz P`*…¤‚ P6G(G1+bhËâ½n *Q¸²H ÐzZªI5ôY£ˆ]àëõ´î¶\-S˳ùr­ò` •`û²>É,ØBEŠ J´àl‡BŠ}0“KĨÎUÔŠaÍ+W¶]‹þ»‘í^hsŒ=îR¹Ïwaü•¼öÅÈNà «p^jYyðU~DÁ©aÇ·u ©[#VÁ•r ø! sÇZv¥ÚÔëZJW1Ξ.”à‹Ô¢³”ëâ¢j7m3«=ôØbæ‘#‡éöÛoKçÌŸ8ããQ[˜#aÌ lSê2�̆íLí]—<Æ�hè¢lø­@œ‡óq œ«TÔ8ÿÀ<¿(­/ÎÇoAÊyçK^èÍ4úUŸ Î6£ˆ oøÆ}\wÝu̸Pîïá‡N S(Ÿ#GŽpô^Ð<z¢îÊ¡¬Ah¾€s™Íg® ½RJ)¥”RJ¹Ò` P¶[GtÞ.Žku*zæPJØ¡•$c,‡«îŸ¦é—5:{#j¶šÎQ†µEŸ×ˆÒU‡“ž¥À"µë/ЕgkÁ±BdëŢαz¡Ök ÄXðˆFUgë@Y?|°sÀ‘ÐÖàοƒ¹ëTgÏNX±)¢å¥:µçÐþcrþUN/°C-Î,¤ q€yˆƒÐáþï@�êÔvB³[]D�¤0Öxô¹Ï‰V×iZ´Ó§ŽÓæúy¦èOëp N§iÚõÝè-Ö¹Vüm·ñߥ@üE[,Š  °È#| <ëp6[EZV(ãâù,¦ÏÑc)ušÚã±FeGwcŽ#ûÛí–sb¶Ü¸¨ò3:þÔé tî|—Μߤgž½@Ï<wί�ãôþÉ0½g/úü$> )¶{±¯uykDV}LÆØ€´³JùqnìÁ¹< øÎuœ 's³9ïî±ÅÛÀ¢ÐëKT9Ò‡À)]síP‡³= sN} ~šv‚ (Dë–ÍQ”N«Ø>¬ó‚ ì5fµYHRÔMµ\®/ÀãˆÓ‚à#¡ArœFk­wSXÙG‡Ûj×›Tkœ§sªÓ¹œƒ*’qÚç$ñ ªñhœ¦Û‰“Ä,4%Ò8Ø#‰ÌíÒ¡#!ZÏÁêÖ–„YúýØyQÛÀÎÚç㈶.‡&¾ÔÒ4“™¹¶v#2[�|Ô�î«JÀÃd”Y8áë(¸ ß´Þv<¦÷8Æ;­­¯XϤÁB:ŸKš Î?{Ô�7ëØÏ8ÜÔrs|5ÕYñ|p ôRè×Ðyá,ÁØÏ˜[’t) ÇhâÆLèæˆŠÓ_#w½ñˆl:ÓÀƒÈänc8VðÍ€Á;œ(’�\Cõhui?‘ù-ðwö˜0£ÑY…û´Ùmк«ó|kνËÚÔjÎñ}V£J ±c&Ãß%’$·Ñ:Ÿ²qùÕ¯¾‘admïA‚²îu„Y2@Ë0D§¶|ì¼kçˆY}({‡S Œ™ul)¥”RJ)/~ÙÊ^¿Õ\^ÜŽ÷6lâšzۮ݋ÁÆXà8 ú“À�_SEíÞ?f뫬ƒ‚ܳGØ©K)¥”+`aóÙ©9¥ª0¡Y%M!Í7ˆ(f,ž¡¨(ê{yy1aÀøÖéô|þÂ,g&çv¬!·c˜RM⊂خðy#G(Ê8ߦ² Jrà U UéÖûPºØ”1#Ìèd­ñAv{¿9ƒ["©>´|k8På«zEï[€JN6h6ÂxeMís>_©(´L+ꉻ¢¬ØBP6—¸ÊR§iÑØ` ™—¢„ìHq¹Ž¹Ù饬ÇÌÞ¿»ù )³÷b$ËÄ[yig ˬcô™F£süo¥Þ´maÛ è±‘ ÛI:ž(o0ÊŒ„qážÅ ›ÝÃÖÏ»8ï÷m÷·­ÛiMü¸n·çd àÀih ÊñAº ´Ús~kÊ eµÐyAÙ(0Ç*à@œU>à7Œw|0¿ÚE%Æ7ÎÑùKÙ#p>¾Õ˜{P¤¯Ö ×C9˜;p/̸ã¯ãNœ8A?þ8§¹þúë†:dö8uê£ySÁ¤ƒóy ÷©ûÑV¸åiîU½—Ó¨ÊóÖ(.œ‹:•”RJ)¥”R®D‘õ@ƒßu™AcyGcÞÁÑñ+HUÞ©Óú Þ‰ËÉ1nŸ®K�²Àk eÈBµœ/N\»N´Òê šÒGu}¥N’Ø8Ú v­§¬v?œ7¼Ÿ„M™Ð$â{œ^WØ»¬‹"+ì¬ ~ꜚ*;6{®ºç'¼ÚDàq»‘óSÑ\5æ´"µ R�HšÄ·O^vÔr€vࣲ}ʇ@’ÙS¸›ERÉ:ç‹÷>’ÓMëÎá £[˜GÙ='IÚ¶T�ïVl[ÎräÛ}³� ö¸¾å3 ºˆÂ,MÈ,`ÿ Çb$ºˆíç–•‚ÿ6lE0ô‡PS€„ÓiEð­kq�‰ðÍ kíù4"°£ ]8sžNžY£“g×Ýg“ž;¾FgÏí…ÑQ©sTÛ)õMdÓ˜X��¶Ù@íÓl¥¶–¢>$ýd˜Ó©ìQ«×DQ«Šã©?ˆ„Cût½ÞpmÐârÀ¦Óïw¨×ߤf£Éû*•Z®ŸÚzi]‹`‰"@ïÁÚlâxvŠJ{Ÿ¶oí7z­b[Úk¥€fˆÌñž…í=9îÆÜ1:>3Á>:¼°ææƒeÚ7V{ u�´Æœˆûœ$â¹v8î§ÏFÀ£Ôè ×Ü\3Mƒ ¶ «cZ DL$3Ç©.ØvÈ¥Y ¦ ٸΧF½00�¸g¿ºzŽÙ‚ê5AŸ Še…’Ê#ô!A8ÍŽPÔ¥ùÏÒÔKç5ÙîçZ?Ýò9Þ"ókœÚ΄b”Ωø "é@ÿŽI*í¡únÓq¤ŽèËÐéq>ž™‚-ì½wÇ ÆjU:œÊ% û<W'`©HüSÉ@Œ�ÖáQïñïª!ß-3Р¤ÀûátËIwU­Cú`÷½Ž ›lÍéÓ]g3hÑÒ‡ð|VO»ä~ýÈ£_l›d  ÿDŒm2d`V}®ž&³¾èÓ¸Žäý¤`"<b»ª´ú”¶1æý„fÛäfÙ†Š6t~ˆã4ý”íÿ¥”RJ)¥¼te»wƒŠ!ªíïhæ±_m†àˆu=D  žYìÀ|4Ë¿é¼1ƒ,`GG]J)åå.W ÀBºø/*§z ¤hì‘}¢,LOl+$X¤/..Ðû½clÀ úõõNêøƒ³ “¾ù3À‚;‹€Ÿ8¥}4ôQ L'(†:už)0B"/&¹ÈE@£\kPÐóð…<D)ñ‹ ž*س@Z†B Z†:ù&A¼(RðçÛRö«a²Zƒ”ÖS8AåÜx†ÁngAùpÒ*E?^,úÌÃ0¯8«’_„1n+gæ¬þ´Ý1[•¹S=Šýs»²v[·bYÏ«¹Ý9/´ÌWXE׊‚,žßµÔ8NÌØž4ͨQEVç kÌ™µ_nÅ…‰ÿiÊèQ@ÖS ,³¢”ŠJxè•wÛ€öï™û²}Ýâ\¬á @P«ÑE º¸Ã˜×È$ Àø`XÜá€Ø”çrôÕÕ4eŽÑ…$§ò©E0Ïb>Á5õ˜p lר\OS—è\kYoì}¢L¥§E}PÞ±cÇLqË-·ä�j ÄuphÔ � ìW–ާŸ~:}>(uÂq¸/,vu¾E½±0Æ5a¬©BJ‹RJ)¥”R^’9”Å™”­u°“(lâ…QQç(:býa~m˜èZK»Oiä¯ý LpÁ9¨iËpn³1ïÏýu&)–x‘©6Ö˜ÓC‚ ·îÊêl£¯&ìØdò(c,:ž•i‘¼Ò.‘sîTø[Å:e!ýqBƒM¢ó›Î9äkÖÝZÎÙÊÂIjQâV@ˆRçSÖˆ‚ÿÁKÆx aÀ`GåŒv=­iãì³TP,èöÃ>]À.�§­Þ¯8˜âKr.ÛØþ]üL"²¬¶ÏÓqXpE¶-0�‹l»>PB,‚ˆ,È"w×)H EdRŒè~œ}Xc=ªÀ ü­€g¬97‘ªo³OO;KO<s†ž=yÖ6c:aÈÏ5 Ðç³zZ"ÓWò}«g±¬ºÝt\i_W[‡Ú6ààÄ3‡l•ǯþ]«5<HGu/Æ„¤Q~Ùø#>oqa™ªÝ^‡Y-zý.ÍÕ› ÀÀ~­¯ ^)Úì=¤ŽQ£SQaLX†¢¦8F4f›”‰“\ÛYàRL8;L�}"òûpÿÚî¡gåqm;xœŽŸwmXKhßü5\ûÍ7V¨7ˆ™}�ÁEë=°‚€#av6õÚW*,ØÃÎuùþ’ ÍÖ¿m{é9¹o¢©}z.hómpêÜjµ"sÒ‡8½®·Á�‹Æ\‹:�äm.âô.Ö5w/3ßHÒŠ* „äï8‘T0ñÄëð›ìÈxàÆAB˜¥’¦œÐOL¦ŒN¹÷¬¯ÆÍââRH['ô^¼ÿ„…¹s—>2× \êîÝè¶'5׋œŽÌýHR•0›p,ã-1v¼‹À‚ä±XÌèÁ÷æú=¬fà™Ô*i°Z IBC9ßõÇþ`Èýs¾1ÇÌ;Íæ\ šÔq™qŸZÈãÈf´óêfž:vÆ9Χ€á`Èi¢ñ Ð÷ñŒ¤¯»5CÔäqÅifÂ|Œg¼«f½ÃŠï§bI|_°Çgõ/m¥”RJ)/f±óùnÓõ£ ÌÃ;>µÝ²GÀÖŒw˜0B+ó—NÛ,ŠÁÔúÎÒu³2j�daÙ3J)åå(WÌ�j¹R‘ü² LÐnº­ @q®S£œ–¡ÛDY‡q¢íkûØÀ¦¹õ€ñp´­®® ²º×wFŠ } œÒŽÆ“qŠªÎha³”" zÈê’Wè¡ô蹄a™.ÔÙˆkZêY| ¡ÆI4·uRC(ù6µ�˾a£24íˆ^SŸ…FŠKÇÉEƒ+´ÞšÂŽJ|ô¾ó†ÓüKɳ›ëØvß+ÖáË!»»–(ØÏWòŠÝô¾d …rËZö +»=o§2Š „¢!;.h_²óH6nÔHš~·¹V ‚à~<™Š€²}ÔÖe;E;?Gd†ÿ­ê²];”‡Øsæç[tûí·óø…!õÖôZg,ø Ø •ΫšVÀM+‚¿1oªH#pt\cÁˆ¿áàPF ýûž€ÁG£v�Ä@}tþ’(ÔA:i”ŽÖQ.¨#ê‚óQ6˜)Μ9Ã̯|å+ù^t~Ä~‹F™Ø¦ó-R• -ø%ùO=»Æí ©AP7šàó#®¡©MpÏ:7—RJ)¥”RÊ•,ÅuǬõ`Ñù`ŠÙÚMþVlQ—Ê~[Šv¯_%èÍÛjµ9N]ÒÅ;¹ïô»¸“:{²º%~Ý•øõ 8ÐSç(yMR½6z_Öa¤h ùE0]Àz¥)?¼CÔÝ\y† Õƒ�!»²ÖÌ;­­0hÎ0§ð Æ €hµãîa §Æ=çh h©]¥=Kp6ºu �&Þ.P‡A‘–J[=ëâ3±gÓª³c³áž´pb<WЧôûÝèXÅþ`ÿ¶kòY¬YŠ0}Ö˜!œ°!`¡Ï' v °È®™–€EHf_V'½¶þFÿ€qUÓÐIІzº¶Ešs}£C'Ïtè©g/ЉÓëtæÂ&=wâ¿°î#ú‘fÏ9«Q6ÞâD@5žÁBŸGnýÊÀ?fFŠ%jNØ.Ô!›BAÔ†fœç€D™S9²TYÿ’ç¢:€ØeìØô�‰g Ì÷èíùEv”¢ßõ�O;ç1R‹4Zì„Ï®3Ý¿,@Â&Šú•ísdauFëÏ@dIÁÈ-ÇDF§Ôy†û\¨,©!eÓO’nÓ¶àk2hm~œŽŸGäý˜Ú­EZnGÔž;Kíz•šý€Nž1«@-ñ€ŠHØ´²ãÓŽ%»Ýî+ŽeÛ´öXícE;Lú~ “£ð|ØáŸäíE–Ms ��Ó5æšìDØ¢×Û¤ÕõsTï7x{@‹°’ÇÙy£xöÝ5­ëOítž;b—ÆñˆS»È;-ô)5PIÌD0ëš9Ft¼y¨\ U0šMWFÓÿ{¬_+›æ½Þ$qïÈÞU®>ÐïCIG×—F®w7FÿMã“MiÿÆw’Ù=&î9ŒûVCZSw)À¡Ñ¨§ŒÀIÉÈÛWÆî} €Ô€ug€ ÷†á À ªí€÷.@ Fb¯u}ûÞžàÀ Q`NÂ܉�<MsƒùBúQv–:ÛþlŸ³íóöoeW’5Îîld¥”r1‚þþÙÏ~–{ì1~/!ýí×}Ý×± îsŸcÆÚoû¶o£¯„`n|ôÑGé/þâ/èõ¯=½ño¤RJy©ÊNº‹®ð.†ýï ¼ aß}jYãxœwöì9¾{sQ·ïÔ ¶tØÌK)åå,W Àbc³Ãt€@[Wª+Gˆ@Rj8ë ²JEdÙý³~“¿E™Rd·îß·o¯«ËÈÓÅMxÂQÇ™ÐÔwœ±â‚wþ¡#þÆb].™7ªò© 9Ï´yà †ˆ*Ÿª¬Ûè.5Ø©r‡:ªsP#BôÚNPØ+‘PÝ[dê 1Q#K˜½‚#I2őތ@WÉ.ŒaöYà<€W@E„kÂ! eg+cYñ|Ën±Ûkªl÷òÛ©Ÿ\ly/™ Á®”»íŽÙnì]j™Å㊋«¬SxH¿¦‚$;óŒ‚ºŠ†+–V+£Ën ÃyƒÓ4u¤‚=`è*ž£¿wûlô8‰1å媫Žð ãõ°@Ù �_h:%ÌjˆúÞ18õÕšZmƒ¿5å¦ýÁ¹0úb®Áo̳¨ƒ²V(ðBÁ¨?ê¡T´º U°‚Îwº8Uv Ì+`¬xøá‡¹ük¯½–QÁ8ЦFÑØsQG\Û”C  šîD)8‹b|Nž<É÷ŒòðcÏž=Ë+”©×A}5ŸÞùTJ)¥”RJ)W´æê˜&Ÿ>Q@tš·ª¾—OM••9¯²’DÏÏ"á.À)™8ÝiF•QJ¡Ž”õZÝ3TrÎT^ß00Ý€)üú¯¢àr*è”­39Šw,k¦Ä߇SÔ@ÅE)˜AÓL:g8 õ~ó ” —>ð ­Vâ‡U€D“ Ѽëtre“–VbÚ³àõ §‡5Q¯˜*Þbí‚g¤éS( ­œÐÛ®KCŽ©÷Ïmމ çô„³{äžI<LuÙ‹Ñ­¬ž8ëcô í? @Lƒ#rÇÐTÙaÌpØr²!ÁÔþè# ™e¨¾‹u,to¬C•DÒX{¢Ÿ;±B>qÎ9Ì»ÔéöœcrBçV:î{ÈÆ×¨ÒrÙŠ� œ£¶€šÍ†OÁ'évàüUPº4‘¥µL¾¿Y±SÓé ¨ˆ“»„sh:`EAv»Š°Ÿ4íÀÓˆþYzd®ÞHí½žÓWºÎëÖ÷nÛ|k1gɧÈ;Ùóc- šaæƒ`àSíÛs´Mœž]'&{À/ßnG8»%  s*?…ÐÀ³°*8]@Dæ· ©Ór³G‡÷lP»! g;~Ž™È<$zŸ¡¤Œ0Žlµq…ž5VcE@‚¤<šnk»+ûí½Z)n“€¬i€–”'׋}žrÌ;HSwý ›^¯K+kç)Üp¶¿Zƒš-7®Ü÷,›BþÙÌιž2J„”*¤ÿ̸Ýœ{UÂj ²ÊR`Mß«cµÍж²Yö‡¼í@]j ªjyÊ&ëÓÊæ¨` •Ñĵm‚öcÈ•{‡ºù†ûl%¸××ô‰±ð ù4]À@  Ë2¾ xÄc0\ÀfÐuº6òÍ×ÒÔ.bƒ;ìÄ5àµÆc§ó«îÝ5fæ•ö8Zü~Ö¶€ˆ¤ûê÷G´¹Ñc€ÎÅ'¬ôù{Ÿróß2_m€¹ûä][á5�¾µý2М0}Ìjçâ8/>¯Yϳ¸M––”—¸m±”¯¼À¶ö|€î¿ÿ~ºþúëy|úÓŸ¦/|á ôÏÿù?çqÿÈ#Ð}÷Ý÷X`þ÷ÿþßéÃþ0ÛÑî¾ûnÿ_.ÁóK¿ôKôMßôMtÇwP)¥¼¢ïpMcßXÜ=¸‚KñßÂfþÓ§Oó–KYpIAU;·²M—RÊËU®˜Þφ2·€ G¼¦¤Ï �(�´¨×ki¤ƒ.,ŠÜ*¬v+ Öì:ö·N*¶Ý.(k4oƒÏY^^äo$Chì ¤`!Ð|©½Iu圽¨»2L¨¡B£¿õo šÀoun2¥;wÚy§ÑÔ0´h„¸FèïFÆxaÑzèý«“SÎPLqm å:Ä ¡LØ=«ƒF©\:#ê[£ÃgOgý­×½X …ž»Ûº^ŒÓüùÊv`ŽÝÖ÷r\O÷]ê}]®öØ®ü­”W¿³¶Å9‰L‚\äPUÓœÛöxÛ÷ÔdË”ˆ)5cúåVmaŸiñ~tñ•Ì8‡v±Íï˜2^¡NW_}½þõ¯ã± 0ÌU 4кÕð„nÃ|¢ó›R+…FÏéÜ¡À œ/óãˆA ø¨‘ ÷ C±.(5u®ƒ:A m•©<¹aÒëbÞE}$òÐCqù`êÀq©‚òPˆž«åk*eå@]ð7 Úz¿8_4p>®qøðá4Vç5€,�¾Pö"”{H£”RJ)¥”R®T):º­3vH ÁaÑ!;E—¬�ÂQŠ:f,»�å�àÙÚ̦ÒèS¹®8*mD9ÞÇxgovÖƒgÆuçÐi6Ø0³ˆ}­¥2ÀþVÇþÖ5Ošî –h_ì—u¢òňƀ‡ f|(;Úx혠†SúŽm_½¶êÂb—±~(3CÎéK»ƒú¿ÑlÓ _¥Ó«]:»Þ§¥ö<-¶[®ÉÇÔ¨NhßB•ÚM§ûÆn]çœah,ùìu§´Í”LŠHÁp4"J>žk8'÷z:‚w¡{Y0ÂnÁú1Xì ²È~gíŸÛ¾ÍuBo¿Àã)Ö·XFN§Pëi¬5±Vµ)D±ÅZøÌ¹MzàÑÓôèÓçéìù Nâ4öÜØ£«ÜC«Õ`@úŒ¨ptÂÙ,Œs-v0ªN¢¶›¶5ñdm‘¦"pŸ1?ÇI:ö°_¢Õç|ÐL•lð‰Õ³²ñ$v8õŸ±Ô„~Œi¿§Ô¡ã¢m¥Ûl[�à` €&›·¶ïy^PйÞ?¾u®Ñò¬­)çÜ.蘳òúÛÚ…t¾°ÀŽ È˜#ŠcI΋™@æ÷œÝ éÀƒt–%ã:Ž0ã¸ßU\§Gk›g©×³ÿ•î˜j†æš‰Û6¦Õ^ÄŒqšª$Î=§¼®+i†l[ë¾ô>'[ƒì½Ù2Šv®Y@kÇÒ})à)'&”ΩzMزæÝ§ÕZð`›Mf4éö79}Ìüü"ƒqŠ÷S¬³ ¸€0CE¿Ç,úLuŽV–´Fi»ù;—ÿó»1›lêÛŠ,¶ÅþQ”"¨Eú“Á,ÑhU .ÀœÃ)?Ñ–“1±8©0°)bF“˜Ó>%½Eî éœîµâÞÚo y“-Èþ ï»*³& †7 kæ5×´9pmmmç¨*ÒÔ¸þ æM°í èmìê²±éæ÷®®¹¶]\j‹ÂÝÄ02$I™Cœ¦)Œþ8}Á]#l8›@ƒÛ÷¨ïm¤Âz� «3ÛÌs!}> ®ÈæoJŸßV�ªb™õŒ¬}é…²õ•òò¤·€âío;½á oà¹Ì®¿ø‹¿ÈÛï¼óNúJ æŸÏþóô5_ó5Ì8ûÔSO±íîË5p{¾ú«¿šJ)åË!ºÖÓÀGõ]œdïœ/é¾wf±ÐõºÊVþMÑ],Jy9ËÕûE1¢*:èn£ñÄ)~C¯|D)›‚°+D>?$±KËÑH)Qò£øf׳ Ä*u¶Î3˜ˆ" %7h£‘Ђۻoï]{ÍQF=e&Ókιî…••U÷Y£Uçìõô0rz2AIÂJ€* AyP²†>AA:Aªf•M´‹ ³'SFÎI0¡ZPóF¹ïŠî{ˆˆp¯0j9êüÔèn®»î:VÄ´­Ù2Ë�¨×–Ȳħr{ Ù——÷NåÁ”sò--‘]#C}Ï–˜h›>V¬ëv²c߬ýÛ¿¥s|ƹ6ʯ¸oÖoû]ìß;ÉVõ*Ž ûR.ŠçËßîÞw³o«{ÊÎÍÓ-æë­u˜¯H¿ƒÄF(!§ªÎ#�2´Fö>m-¿=(Ô+mKo€ˆ·i£Ú/0Çe÷%ãðo|;ùa¬µ€Vá€0öadÁý+;DÁ 0Âà8|Ô¤l�$à8­Î8èZ³p¾ÎWŠÚ…¡sÎEJÍ—ŽTjäÔ9óæªSc'À"Pï½÷^¾?0W(»†.>u>ÃýÝçâº�EèXÑò h+ÜnSˆ½olC›(#‡¦DѶÒTH¸.”ÝùêÅÇRJ)¥”R®�¹Tìi°E9iy¸ÃE“޹ܒ1J¤‘ídD!ò›KD´FE[‡ €ƒ (ïÿqZzq½¥ H]ÃØcCŸê@S¹éZ"©Bêàë9'ÎG¸»Õ].µã8ÎØ Ô¹5vNL83á¸Aw¡|Óˆd¬7Z5ç¬vkI0Ywlek=2Û ¯W™hÝ;§™×"€.)õˆ*âœK&qÊþÁçÂùë¶Eµˆ¯‹üõ±s&�C_Å¥ð,üña�çyÌÁ œ6Å9ûÎÁ¸²²îÖ2#^t\½×!Õ¢ 5ÜZi©Q³îÚ<O9ƒÒuf‚Tšú$d—kxJzD1÷Âp[#ò¨NhIÖf£!MPwwÏqâÙí·Yt´:í‚0sð[Ђ<wqćál N׿Á©@— ŸD¾g3P(("Œd”eçdú,ŸëÍêë åz°c N�"�T±gyµš-ø�Òë ©»¹ÉÑÙk›]zàÑ3ô¥‡NÑÊú”½gKIÐçeÌIGÅŒ#?ÎØÎ€©ˆ\oq4{§»ÆŸöü;Ÿu|Aô¼jEÀcýA‡Ó© ZÓqT8ýHs®•°}4ÒÔ6¢êY4Ä2äõ΄õ.aºQ ‚ô#çµÔ6‚:)C¨žo™ ”FZ�Ìì\î 8¦Ãí±Ø^HY5Y/H’”yTç 35úû©„pWÒ~)LÂ;Á©p�"„â¢8Hì¶<™DM†Ð-z©½GEô†·e×–á#ãi*‚ 'ÎêîCÆ{èdÿ6"çT>Øþ;šw¶­nH«=Wç±gq}i2H˜Ó³CwŸ÷“TÇÖ4I¡m‚TUO<8ÃÏPÞÎS¯ùûd›šúLbÍ>#ãÎÏ3rÀ�iM˜gâæ &Ù˜mZ%TË=›J@•ùe×ç—“}ƒÇÁ¹ó'ã¾I NŸÃ<Iy‰OÄ�” èv�ÖŒ"6È(_ž[”‡2„¤žÀEf#Ó:êøS£"SG‘éÖwlYj Ôc!jã#÷ü«•ºO":7l«UgK]h/¥Î�§À@0EJÄïq4ÌÀÙ.‡#W^ˆ ¯Ä=»„*æqß/“$sú$ò^âw„ŸÁ¡ ÊÓ§WÝ»/a[dg£Çû+Hë\§ÎR{¡Å€H Œ?ù,ë߬‡»~?öslÆý³s¸Ïýž¥'žq¶°øøG©ëÀ4Ò f&î‚írÃMšl’9.[ hý…é‡R»eúŽ õ9ç],@§hËɶ’K]0–RŠÞƒÝnßõã¶™A07ýÂ/ü÷mæ­sçÎÓ¯ÿúoÐßþíßòþw¾ó ÈP6î?ú£?¦}èClËBºÝoÿöo§›nº‘þøÿ„íZßýÝßE‡¦/|þKô¯þÕ/Ðÿü?ÿ}õë^M§Nž¢ÿçÿùºöº«·dÈxä‘ÇœMmƒ¾áÞÎ×¹ï¾û`q�¿Éÿò¿ü ú‡ÿð ~ðϹ®ÿú_ÿýÉŸü)8qÊÙÙڮΟ¢W¿úÕôßøî˜r:Ø�â'ÞMwÜq;_ãøñô§úßè3Ÿù ­7¾ñ |ðÓüÈü0;~ñÿ }ò“K?ð?Hÿå¿üW>÷ïÿý·óù?þ$ý¯ÿòÿOÿñ?ý:Ûô~ë·~›Ç*æJÌßó=ïtö¿%úÏÿùèSŸúó7¿ùÍnû÷0 UçýRJáw©[KÂö¬�‹‹O×çq¾¬cWÓÀêÌÿ¶H7û{V¹x¯°ÑjQ)¥¼låe/Rg&ÓÅ1Z¼Ÿ9TÖ”"º­êŒHa F,’)”ê'›Ùo?e€PŸ(œš´´Em]CYä–;u^_ßä͹sgÙ1ˆ‰Û¥nAÍEI–oÀ ø04†$5b&©aAgݤ yÍÑ*m)‹}5$ÂÀS­TRê}(íŠîfe¬:O7ß|s¦°ùz…•ƒ5Œˆ¤� \ ÷ %ŽHy±TH£¯ˆŠûÙiBò}b¶C¿øÙîü`—+Ÿ‹9v§r.‡\LÛ\L™—«~³^ì—CŠ`ÝfûMÑ›¡ÆE=Î.>¬ÑMÇzqq2 Ø`ÿœuoÞ¼<uLúMè")X,ë"Ún–Òf ÌP†�ÀØÇXÄ|€¿&P¶ (`a°[¥¿Á:£Ê˜¬Q�€ip, ˜×�J€1u€ò†¿¡¨i*McP‚'4 æÔ MÏãqœ‹´ �Wà> Ø(MM¢mƒóp?øk 8uÇõ´ÍpMETß)zŸ¸î÷ŠvÄ5tÞÄ1�[à˜–_ ¸¬O}ñ#TJ)¥”RÊ•&vý1Cž×Ò1[gåxoSÅ9uÑ/¯e/sü„)¨ÀF}‹£Ò³CTj©9€ÐsÔ `käÏ¡œ“I׉˜®¤Q×ò¾NØq¤F-©—èˆ�›ƒ.~0œsïo�'Wùq¨„Þ!LÕûxèÁq.zeÌÍ7¦"…áWq.)qžW+¹¨%‹Ô V§@„°:ÉÈ3$“ƒ*8TjˆÃ½Ê`ŠÉd(kHçà âP+v¾€õ+u.{8p9•±ûMNý†ÆZm‰œ/•úÝ;Ì›mç¬ÎQÏ9•6\}N­¹²ÜµêsuÚ·Оù±«Ã8·N9^<'€!üœB¸<áô׃ºû¸úáø‘Á˜ÃàЫrÄôصõ`ïhË�ü™žøn¯ ­Gü ý¢²˜Å61½}ÀQ,_˜)ü¶ b }{Í©2ƒŒ¡Â:¿kõ*¯E.n¹þǬX3º¾·êÖ˜ãþ˜VÖ{ôØÓœ³ð4;±Æ@‹ñhÌé;ÒñTMY'ulXPŒŠ2Ç ïV*cI0œ§µõ ´² fƒÍ·–$�ÂõE¤Tè÷Üßð›ŠäÇQ­ž2$(¨ëà €¦)�t|hš?m›v#s>Û4@Ò®Hi¢LsZ¾ýØsí¼ ãÊ£Æüü|›Ak :j6ÛÎñ.kÕÓ&I–âÇ:J­ÛÚ‚FƒaÊ€‘µ½&äS„(ÄÞ)+ö")KÚ €D׃m,!“8s¾3˜Ë§Y-2¦ª¤}‘Yd ¤AqâŒò‰»ïñYêŸíºû_tzÕ txñZnaN^ëGÔ Ç4&ì( (IàpŠ™Mò)?²kgÀòDfwžѰ`EPP?xî~EH7½â×ÿ":yz“|ô9ºçóÏÐÙ ›dٸߌ'¹ûc‰¿.À@ ¼à‰}.{wD¡´ƒ¦ÁAY í=Ôl,0Øneå¼söw¸o€=A #cÀñ`™MÐþpòëó·cÎöéY*jÝôù¥RD¹qœ/'Ì1Ë蘷Ï\ÇœM¬ïãtNCû»÷ Æ1œ„ÃaŸuZè¶§»§ùÞ¡Ï{–lj¿þ 8Ÿ®G@o ×ßÚèÀ“äÊkQ½2¢¹°>))à�ýÁÎúìЮµjÄ©³"ŽŒ*`h y.¹kŽ\{µ†xOÃI5à¶G*“áн›Ç}C F`Ô»>Ó¥û=K'NoxàeD)Îè­Ö<³ø(k%l  ÀËì”2†°†±cÎÎ/A@¹9MAZE&}^úüWJ)ÏG®½ö:¶Cýê¯þŸôè£Ñ×ý×»m×8Þ~î^ŽLèÙgŸ£Ûn»~üÇßMýèGé½ï}Ûùn¿ý6ú½ßû}ú­ßú-ú™ŸùÞö×ý×ô+¿ò+îïÿ/—ýñÂÙ/0›ë=÷|šN:IŸøÄÇ`êÇŽ=K¯~Í][Ö©An¾ù&ºå–›éèÑ£ôØcsæòòÏgNŸ¡÷þöûèÝ?ñcnÿõ<G\¸°ÂiO~à¾Þô¦7Ó{Þóú—ÿò_2 á»¾ë»èýï?ýoÿÛ¿r÷ñ^7—­ÑïþîûéĉôOþÉ?á±õ›¿ù›<×½ãï ÷ï~™·ÿàþfúÀ¼‡ò5° ‚µ:@ª[ÀŽ $®õš×¼†í¿ú«¿ÊÁWï~÷»yÿûÿïéÉ'Ÿ¤ÿýÿWåP~ÈÅø‡t Œ®eŸÀ¢ž¾_.‡ˆ={H¥”òr–— À¢8y©RÁheï$1¥tšŠP®{g¾�12%C43¼Lµ)Ò:Òò·sìë¬JvÁqEòÈ‘Cdé ñ:>Jy§þÞÜìRبJ.ÁÑ@hs9ÂËMÐÍ ‰¨��CÀCchdU•ñ )Æ农Xò‡Ž¢é´P^°»í¶Û¸=Y =�„òy3‹m" L’>UÚ°Ï«à@¬Ñëbe'‡þV/¿­žåvÇîöE:ëÜ‹¹Tf¬°ßZn,0ë¸K­_¼?v§{²uz>2 à`÷ÙïY¢ã`Vyúm#“¬1¢øÌ‹çÍš—fý.6øÛl/*é—"³î ò-ßòͬD€4*˜ Ð&M ‚cÕù0¶a>€¡ã�_�´ l ø?~<5ê  eƒ€ÀˆŒß8eè¢Æ«gŸ}–ËD]p\Ç¡ž�_h$lƒñÇ?ðÀü7ÊêçaŽÃñÊn ½Ž¦rÂ5”©ÛÐGÐF¸†`;¾8ûÑ9œ OîZ œÃ± `Ã7ê‡m:×]®…o)¥”RJ)/F)€,üŸ1;çbò„|tql;´Ò2Sg•®;F©ó6 }´<}åÄ ŠY[I>óÈë i—õ8Åq$é3˜ÅϤ €hyÂôWõÎ((ŸäÊ‚seE>ýÆ„mâ#¼Gu¡/b ±¾¾êœ6nm0ïó· ¢ž¯Ì‰ü>"./[oi*¹ŠwæJ½¡/ CœGúø+Þ¸¦Î—±¦>quÃ ŽˆÛZÄu»{#¢G@ä¾g@`Þ°8¢]ˆùÌÝ1pxâ»ËÇU ‹‚Ï=¨8=¡éÏÎÑô͹yªWÝڪߣŽs0;7+µ—$zÙ¹pÙÚwkšã牞;Òœ»Öþ…„ö.àZÎé!¸;À}‚(á Iœ~¼IŽöbÎ~8ºÀB‰g ]¼âᬫי­CœŽîØz½wZÅJ®ÑÝyç¹uFÞ‰Y:X Ä4 "‹¤ÎŽMòç…ÊbæÖ©£<˜Ð#ÆŒï¨"é°.FÊÍ…öÃGÐß»`osN\8*ŸzîÝÿà zòY·]0Ø& 5E!¢å#ŽÊFó©Á6 ¡œ3UÁMeÓ{âØ­D ÎhÏ/Š3¿³Á@uúb~7æZî˜=>µ^˲ì38FÙ6Õp¬uR³ŒMÊÍú u[ÑAu¿^KÁEƒ¶‚Ôõ^ñ­ÇI÷ç³[Ô!mÙjZÍ6µóÞî"s¶-,,št<A.åMÛ’Ù¡‚œmÄÎÚÀ°Àö'ê[QÀ€†N§Ç@8¼3vŸ:5šMfÛ@YèÈ;vóýMme¤óC5p½ºùdÍéwHÔ¡sç?C«Gh±¹@µÊ jûiy¡Kû= o4F*ç„/¸ºÖÙv‡„çkÏ‘΋1ÏJ2FÀr[ZhÐÕ‡è–ë—é–›¯§«ϧ`%•ý{Ût÷WÓ÷~ÛèÉgÎÐÇîyœ>ýŧ©ÛòÜø>SÔ­¹=C½6åÊ”v yNKHÒXØ>Øl´��ï|¬`ŽRp¿ëö]§ÏÓ.”ÖÖwã„}f‰éKú¼­½LAJö¨cHËT±ýQYrµ]PNƆGT,;]»Ãúï§Ëâ§©=-ÀÈÏ‘ˆO"fbê»><×i#ð ¸5÷¾hv¹2F<ñLA™ý…ëœ2?hN¦ˆ„A4d¤–¼‹w[ì¶÷º}~–ŸBïɵ=üäy:qf“†Lã”PQÚ7tѶ³c¿¡ããƒ9 ö0›œrÕ97ï¡ `;ÐY'޳«Ù˜´©Ñ‚BßËæ6í;Ùø4€ÏÓfVJ)‡¢ŸþéŸbPÄŸüÉè}ï{ÝtÓMôÏþÙ?£×¾öÕ| úãõ×_ÏŒHóÿ>ú?þ_âqÂïÿþïÓOþäOÒ7~ã?àãØOïyÏd¶‹·½ímÜgOŸ>C·Þz }æ3Ÿ¦ýÑ¥¿ú«ñ|ròäi^ßãš³Ç|êS÷Ðÿô?ýlSÐö<�^ûÚ×ð1?ò£?ÂàÒa¼¼âÆWð6�Lï¾û.¼á ¯çú}ÿ÷?ýå_þ%³ÚPòS?õ“ Ì�;Þ ÷Üó)wü£üûê«°­�‘}ûö¸w~gÇvÅz)E¾íÛ¾•×3�™À–ùÃ?üCé½þìÏþ,ýüÏÿ<=ó̳\‡à+©”•òe“âºt–X€E‘e¬”RJyñÈË`¡J…•iǯ|å,xCLÄtWøߘÔtb«×›¤)�Ä—):9¤·q€fJM–rdÖ¤š)šÉÔ6»À†a ÷……¶3¸Ì•ã†.ô•®ەßf¶y£C¶@‡ò26ʾ²hp$‰3²Õ«ÕÔh"ô¥B+Z4DAY€SÈR8\ãd»¶È·R1b§-œ( ©¢ÃÑ*šé½Ó‹êR�Ûs± Œ"Ðá…”"hÂ^{»}[ɬ{ÝÍâ`·å ú{»všµo·ÛvÚoç­ú«Ž•­ŽÙ l‘ûm $D»«óNí¿SûQ2M­‹¨ o¼1–°F(!š“ãû1ˆpäÈ6¨�@�°”ÌZ6€ÊÒ€ãPÎC™vñˆòóQAkª ™¡à(ë„Ò”‚Iûp¡QpšŠ×øøÇ?Îۿ꫾Šë!F±õ”÷‹zãþ”Aó%®ùS œʼnAî7æ)m/nÔÁ‚: ¯s#ÊÔë*HÇá¸o|PÛ·J)¥”RJ¹ÂÄ!œôãi½?¡/Ðgžу§Ætb5¦îh÷kÅÀëIº.È¿CªÎy°§ÒÍ«ôškjôºëëtxÉ9Šj¡äLÿ HXšNØÁ%@ðЯýC£§L˜u"ô`8í²¼²‰w"Åâ` ƬßɹÐ}„ÅBS¹áý ô¡œž’DijñdäÖ]ÖT[[5pŽ´ev*‡‘€7ر ‡…išE8Xˆ1ñו‘ÅûV§¯ÖCS˜ÙõŽa½ úXPcÐÌ÷™°ÿ’¯ NPƒ¬N Ù`c"Ýz&B½é+ܦXçÅ;ã+�„¸þˆôÎÍIqKAí_­Q-h8çm‹Ûk™U¦?nÒÖw úY5e]9/ر³czêTL ­*í_ i¡6¶‚ÀÛ¯Ðý1z í þþ«ðÂQ ½3‘íê’õQȬ•j€\,ÞÑ8–ð5Ò~•ï_ÖmAEC®0©:šeðq‘2OÜD`‘.2ºÿŒ=Ãêc’’¢îÖ•ó´ÿ�Ö¼{(ñ «^¯ïœ‚Ι¹Ù§“g:ôà#§é‡ž£õÍNÜQÌ:�Ö�n�µ¬åÖúñ$­¿ô5J}Ò×D÷W0DSÉÙz G}v–c U*Y$=Rç�tÔtw´À�dŽä L!6JÉ–þ¸ø\,Ã&GÆ'I.º\ËÓ²(¯ûµ|ë¤ÌXròiaì>«Ç)s¡þP¦æÆÒ³ll¬S§»É€O0ð #-@¦ÑìœoµŸžE¯­÷ËÛ’ ©]Û`ãÁØ“9‹98Ý Òµ€i¤Z­1XŒGX<HÛ°èÜUQÛǦˆHü?¤ÞhL@n3(`Û<R<¸1:9KÖN»ë¤jý:Z§7?E‹µãœJ¥éô¸VÔ¥ê|Ìm†&í +´ÞõÏ 9QÈö¶fcžîsv¤köÐ+®ÛC×Y¤¥…¦Ø0/n÷žòøŽîçϽóôÀ#ÏÑ'>ó$}ñ¾ãîÙ 8„JhQ´#é;NyH³\ ïù–ÜD›«Ä±°/€ÑzŸ¶µ½f–ö)8X{‚¬XP‘í‹¶ïAÜׂ ƒtì öž‹ãÀÖ«h÷IÏwÏD 4¨º0ú:•Ð{y,øvÀ8`6Ú„/èÞ_ö>ê»wƉM§_7ܺˆ¨]wzö\"`¿dÂŽÒŠë{<š™ïN*rŸp$ …Ú¤Âýï^›&©—G1Ò}… F»°Þ£n/cþ˜Lâœîmm»ô ÷¯vTS♫.æaœƒ¹@ìõÜ|dÇŸ}ßëugPÓçiæúŠÂdK¹RLßùßAÿøÿczüñ'èOÿôO™íáßü›C7ßü >lÛ�W Û©­ sàsÏ=Ç糧ï¾;-ëØëΞ=ÇàP€}äQN²¾¾Aï|çwÑ>ð'ôàƒ¸ë=ξ€f ÒŽ`íý¸–®!žxâI¾&êƒiiÿþÆß"ï›Z½Æs†HÀõÖñ£þa-³­ðóŸÿ=õÔSüû¡‡¢;3ôý»“Í;óñÈ7À¥`Ó¿ÑÏ<óŒk×ÿŸg¹}ké ÊW´ìÆ÷S´íë¼9ýF/´ª”R^nò²e°€l5¡(JßŸÉ lä"ƒà…CH¥¥t±;Ϫ~›(|ÐùªÕ<E¥‚#Ôp¡¿·r´gÛƒ©{Ñ]š»1ׂۤ`€zaaÓvJ;}{Í5¬ƒ8Û&4|W “´®¢ Iä.ª¬,É”}¡cQ úB䔿д÷m_E„=Œ5 T”t�¦­š¨­¢|1�b[çÛwûs.¦üÞÙ5_˜U””{iàŠí^¸;Gv’mÁ4 ütyÀ«´nwÜNõ**ÝÅ:Aù}Óåi9¼fÕ#Û3«L{Íllï~Ñ”P¾m0o¹å&V*°ð«ÆÆ´²7(kŒ'hÍm „C �  ‡}J£ Á¹PÈ�È@ù�XP®…CœÆÉ3 A”}÷€:©G¢H:|œ(ºçž{¸^o}ë[ùø … çáPŽÅ9šGV)Ù  âx“èœ û8G£T”…ìLGêÚA+p>�'Õ£‘v�æÐb”9·+ÀX)¥”RJ)/E±s{B§×GôÑGô{{ôÈi$D˜Ì<rçRO!/ëÀ8%Çð D­Ëçã éP»Go¹¹Fßtgn=<ÇÑ›_N±zeéSž¥:Š8Ñ.”à(Õ TÀaéâÍ}¤£ptsÄw@vH$µ³øM¤½äú±_Ai„ÿØgQ˲¦)DÜõû=Ÿ“~Óé•4õBVÒzˆLô3a>G°pä©â­ÓwV;ÙHVˆ$ ˆ…F?!q`h¢O@‡>æ{„“­Âè�u %ü;‘\!Î@P'*o3°tA�.\ýGLI.|pâ..-Ó¦s.Cw¸öhÎÕ)¨fΨ8I¼]¡¡sl¿ÐñصQeD­jB‹Í!5+1Í#ç° h:§mìêŠ#=p}²‚´xþa`õ™ÓßÀÝ·¸T£ÎVÜnhÐë{yàD¦S†L¤Û‚`v>×‚D óײ  ýëB]O ÓÛ"·žGg³OV7he½Cg/ 艧/УOœ¦•µC¨8ø£QwH™7˜ü#V–½€Ÿ}¢ ‚ìú±)À¤miÁã:˜qÁ§½ÍÎöf£íS~HÞpŒþ@œÎH‚sjuçì¯ÔØ&!ŽÈ,(BÆw”ӿʼnOé8°Nbµ1¨`:.¬~„¿uMoÒ6òÛ¦M°ŸYÎT»MÛ ì0äSt�ƒ´˜�²@ ‘öüU1_ø9‚ifmtþ1êæØEÌ2JT5-Ýy.jú¹’xÎÓo¾—p:Ð¥è4/ÚR@"ÿËÂõàT%�5…Uî;‰gÀáQ‡T"§#u†nlqÇ,Ñúø¨;ã)Z_;í¶¹í4¢Å†¤¦]h…tÝa§#!µQ}]½¿él×Ò×´ha¾Îã^wdÜj�”ÕqãØ².„9Û˜6â·\M·ß|•/gé¿ßó(=øèIZYíÒ`4öc—x®Põ¾èÈÌó]LbMUaU£1Ÿ²½ªMKƒœ ûAïS¿eDQ 2�C–dVß´öa¢çú¥ÎMzð’Ž=ëØ·}Ý2®Ø~/`›¼ãߎ ̸èåÐeÑ°å¡ ð´ä诰Võç“Zž¼ÄRj莯N¨3Ž]«G&Ãí_Lh¾‰û›ð˜ yNKÜ8¹Ï˜Ÿ ^óƒaB÷n‘”DcÚDÚœáˆVK´±¾&€Ä@ßhim-xU´áعÀ%,«là&€ I#3Ÿ`Øö³6¥â󶬪ö𥉠”Ë!èK°ÁN�æ+Øoºégèᇦ}ìcî÷+̸Ÿ¶›kêu›.Cç¦fSÖH-ò©O}š>}Ïg蕯ºƒæUzÕ]¯¤Ï|úïèøs'èMo~ÃT½t\|ðƒäzýÂ/üBºuF0”Ú*e<eë>f"JSAév²i)cpã7~ã=|M0^|Ó7}ýÙŸý7TÍî;È]ƒ·ÇIºs¦ÿI’¾×ñÁ¸¿á†è]ïz]wݵ(…ÛçÁÖš-avoË-å¥!»±éÎòXö(û.¸)®ÿ.—”öêR^îò²X\гxö1<¡”@aí§Æ5°aóÕrFÍË+‹„pjAbÁ[9”gUU¯ùéó؜ۅ@¶›Ú@”{UÌÈ¡9õ›üqˆ¾ª¤FUH±ø2™P8ó%`ûm)8¡A1Õ\¡6BE•MQÆ2£JÖ.[;Ø· °™ ̹˜²vwl¶PK¦í%oßI¶Rlµo'à•¢!übÎÝ®Ìâï­Ê4¸Ø²/õoHqq²Õø-.¬Á#ÞÐß»hÓâùj$ÙêØí$1u¼Ö-ö&ÐôšK”¯Qu��\�c fÇqÊÀóXbÊA™ø†b¡Ñ-HÃÑ”¸>®ƒoͱ E ÛÔ`ƒ>(C/°_ëEK 80fhZ ã±ý–[nIÛå ž0vàXœ€¾±ׯ=â:¸g݆{xåaê¥×Rã/¾qÿ؇ºà¦XvõDY8ûà¡ÎÔÇà\ØËk)¥”RÊ•+Xg?~vHÿ÷=ú뇜 æ¼ççþ@rÖ“ÿìkWè@;¤…FDuø4ܲ¥;Œi¥Ó©µ˜NoŒè¿|nHé‡Þ²LoºÁ½YKÌ¢½^H± ŠÔ!gôéi~yïW0©:Õ)©Ž&u>*µ;Ò~à^ ³€µ/Œ|ùž¥N{‰²Ÿ°3u.qžxqþ�D07'°‰£Zü@nMTc§ o››´±¹.ìVaÓ·`bî%6Îõ€£v5ZÖ®ÓÔIÇO!ÌÓ„s‰Ib¢ÿ…nNÞ}ûp>Œ®'½Ó2Lxƒ6|]À6zõ$’`ŸÁˆ>#f³ðQÆa…éŸvBtáÚ BGº·®Ázj h¾ ç²€U¥4G½c¯c"ò{Ò¡ølÏÕ»O›}šoT¨ãÚùde‘†MDâ£-FI26 6V“ÑAü³ÕÈ37¢ç"MN€! émûÜ4[Åì!òL<ÓeÀ3�Pa4p�¢•Tõ$R `+,'±[Owéôù5Z]ëÒ¹µ!<³IÏ<sŽN]c›u<S:V^% *þþÈ;jÅø>˜Ñûgc[£75 ªü=I×¥qä×™ÅÓ¦ ßÃ0À^–—ÍÍ5ê9‡t×94Áê‚}¸/iÿ„$ÝN”³‘¨Ñ×:þm†ÖÅö}­CÑI¬ç`ÝnäÖa]œ¬“³8öŠäø¤åQ6~EŸÙãAâ´ÙÙ¤ KÌÊÐ@ö«Â|êí4‰gDMF©CJÓ0dóŸ¤A;âè7éýsê¡ TȽVIGãÜýÚûÔv·Ûm›0('‰RG=?—DúÝ„Ûl’Ž9‹ÉùQ°á6<ìîzÏUÌžS»›ªÑYj5;´8ߥ¥ÅÚצÛnX¦Ã‡–9Ç=ìi¸lN< Lö.KÒ÷ÐlfZ´—8Ø26ռ̓è–W £×î¡Çž8C÷|á zäñÓtæüÛöâIÆ ÁéuÝŠ2Å¡1–9)KÀVR`R°p»$“\}p\£Ñä˜a;ÝëÂ�ÎKþsó9m磼ÝqúÝhùéü[Øy¦–ÉŶŸíÛŹ!X$‰¼ûfØýøC®§ïPM жÈ�m°²")TÔ¾ €ªˆSC%qœcçP¶]œ§c^ÀuÚœÌQ¿Wá¾BAMÖ®õ°KÕн·-pß溑Û',.'WT&É)·Œx¯Q fïyº²ï$É·›}?dωx¼*¨B7.œçúbλ‡�s*ÆŽ3]ûœók*¥”KkKü¾Hø‡Dßú­ï »îº‹·ƒµv=0Ûî$°^ýõ „@`'渇~”ç½»îz¯o¿ývúËý}êSŸ¢oý¶oáó^÷º¯¦?þ£?¥ºóŸÜvÛ­¹2uü<y’¾øÅ/ÒÏþìÏññ¡gAúÄ'>AùÈGØÎwýõ7ê=Ù¸5@’Âöì·¦&ÿÆoüèo|ÛBa«Ä|/õ¦Ö�ìpŸÇž}ŽN:ÍcõÌÖX¶åüë¯?JûXÀlGå÷@,¸Î·~ë·R6å”ö¿—£í¾Ê ÑwáóXàüN§K—Ó¾Œ²4 `)¥¼\åeÇ`Q\4«ìäx,N>E­¥ÐTé÷£ÜbXíòƒ ]ˆÛ¼†vᬠÛ9…§¥¸ët$j¬ô¿W`YYHÒE_JA®^¢£M(£ÐŒ±•)áF!Ûª­!‚‡.n4šG_*öT™K hòY÷Y¼æNÇë·SY;½ fÝÿVem%ÿœV¶‹ÊòVû¶i'¹6×çWü¾Q£ùå–­�;STb‹ÇouÏÅ9§ø­¿íö®µ•\j[Ï*ÿ 躣ײ~~¡Mä�@ŒK:�6PP‚‚�`$AŸaß0¬`…L#v0è¹PDp. ¸oìǹPXpÌ%8WÕ4AØò`|ÖòDø(@C;8J¨ø�Ðxýë_Ïå`?ê‰cUPfè7ê€2 ôàXÉ#-5x -°M©^ÁBûÁ¹h�Ið{@¸?ÜÊ×6ÃvÜ3æ>ʳÌ¥”RJ)¥\™òÀ‰!ýÆ'6èóϸ÷Ÿ§z>k!q¤‡´>¢;¯ªÒn¨Ñí‡ktÕrDí¹€£:/tbzæüˆ¾plHŸu×}äÔˆ:5¡ûW›ôc_Û¤ôJ¼„­î…6ò)ÀÓJÞ˜u©¦ ÉaêlKtùŒÓˆTÜ ƒÁ™.8ò‘ñÞ¡ '[>åºìô ª©Þ¦k3¤ýP&�DpÇ€9ü ç}ÚUçTÞൠ¢dçà uïò0ȃÀ¥Þê¸TÇY>½¤ÆW=³èMÒÞÑ–âüL¼âÆ5õz\À`Š€£`³�;;ÙàûÊcÐÅDR† M+Øîî`VN5")/âÐ÷aä糓¨=ߦÖs›«ÔY?çî¿å> wí 5Ç}Zu¨áÎ[¤U];­Q›œ#Ó]¿ÓŸ£M¶ŒóÍ­/ÎÑBõ{­B-W—ˆ|”và«=ÃHnVã¾^!§xIÂ1ë¶Až×'é¶Ï}Æá†4†É"w.��¹²4È"HÁÚÇ@#¯kd|°†ä5c§O'œáýÙ“«œþãÄé :{®C›½‘<Ô¼.–¤Ã3äT¤qH¢*ÁÇ2K°„ô›,°C Êê`p$×ëMm.}4Èõ;aóŒR¦ ½o8žö°Ã´ÛݤޠËcBR¶Ü~Ñë'8¯óNà"ÀÁþÖ¿-¾¨Ö¯Ôß9=:):³ó×ç¶@F¹í–1Å‚SW‚Ðb/5Üú¾Ûë0ؤÓÛàg®¶ \câç%ÔiФ:¡Õq,抷Iª¡ŒÝCûz%ªùgãL<Û×3 ™Žs;ïZP‹~{X˜Œ!>7K+À _®¼ùÇÿûÂBLK +´gÙ9Ú÷ÞBKˇißÒ˜ííÓ½ÂúPdoà¶¥lî§n¨Æ,ÊÉÆÆ&=ýÌqj6*tÍ5×LìýaSÍ9Ôï¼í0Ýpt/=þÔYúÂýÇèK<CO=sšñOŸ;â ¡Ÿ (HR®�`ù4.‰܄ۤ,^ ½Pu=| B‡ä”Jssimßæs} ¨­ÒGèTèÁÚ_¥ÿLÒñ[_ÜNphûˆ/Ð PJ€ŠþÝäíO8WÀ(5nS°=iú a¬yv‰ŠïÓq®”5s‡§�E\&Ž3& ^Ò¢~œ9WÕf™¶™{ïÍUõ½®¶Ð­íB¶/Yæ-¯È0¢ÀNiûÌfÆïÆö3 +£‡ô‡ϯ`÷&5~gØg£×*Òd}".}±¥\’¤s®ëo·Þz+½â¯ ¿ø‹1ØûÀèpÇwÐ×|Í›wUÆ÷}ß÷Ñûßÿ~úßù]žÛ`?»á†ë9-/äꫯbÛ×C=ÌåâÔ;î¸~åßÿúê¯þ*ºêª«f^ãoþæo8PëíoÿNO¢°Åg>ózì±ÇéÈ‘«ü˜(œœìÌB­ç!•@"ŸøÄ'ݽg[ÞÚÚ:où#9ÉÇ?þ ž‹Þò–·ÐÝwÝEñ¡¿ ßþí÷ò½Ij¤¢Ý7»Ö-·Üìêý:fÕ}òÉ'¹Ý}ôQn£êYÊK_.æÛµ 6i€Õæ|)‚õ0Êy> ¢ˆ^SÚ­Kyy˰€‘JQŒéI+ÙÒyº“Ìrx§³dˆ\ºD¹<‡a΀CYšŸjDΗªù]?ñyÃGĽfQ¡²õÖo«ŒMk S×0Ü¢9F#°]îs“2T¡nÂï©b^lç¬ÚŽÙuÂ9Ùpœ¢ÛU©ÐëL—eîè"Ö%Û=ÞóVŠçsÌÅË4`B[åvÖ¶ôx5éo¢Ù¼‰š1ƒÔÈÙó›4¸ÉÎK¶Tr/(±Ó¶­ê¼]Ù[„f·U»Ÿ=?‡$¹hB¸$Iv5/mSØðT«Ò™ÓghˆÜ¾Nñº19ïÆ!Ø�P€1F FÊP¡éDPem°)2° J Œ $@]í¢ÇÀ‚ã œ(P×`1ˆk) ŽÚÁ&£æ•1B¯:=öØc<w îGåùÇ£ ܇²GÀÈ7ÊÕ{D½°e¡lÔÊÏ{>²¬ç#55%IúÉE‹o�,€ÞWã2ê€{Û…ÕТL¨¯Î{¥”RÊ•+É. ?¥¼ôe 2Á¯ê˜ž<;¢ßùt‡#ã,“HÐd‡2“ôh^›y ´ssÓõûkômw×ém·Vi;Ê­áïŶýíJ_sSþôKúàC:¹ÓüX—ö:ø›nœó~Z©ý ÕK9/|amŸ­iò,ê¼Èµ‚_÷X'”¤ý¥`ŒØGí£‘ù/©>ê…´ì OAÖé%K¥éˆVqX‘wU˜.¾Rˆ#©·ÉõàT‡•Zšr1´îòmï=OÛn¹^UÃ;¿  êÿ‰_Rô¦1§ñl h 8Åé/ÌRèŽãAHŠÂiBQ<Ibó‰A·(s& qz�Ár¶ðúrÄ 8–ç(j.Pms…®[?Fëë»­aöŒ6iRm¹ãGtªÒ¦“½ôHÔ NP¥s‘sŽ…H ý:îÆ´ÖsNþ¹ˆÚµÐµaDsQBÍzìÊqªô)@»±PÆ Ù¹¶€ƒ-bç/ëÛdëy§e¨Û<hÂ2S¦}×èïât´€‹0÷7Ö ¦@Ô2;Wë5¶ctzcçì=GÏž¸@gÎuèø™=wâ<uû®­n Os FêȦ#šyPædà4¼f¥ÎFubZH­Vá²g9¨“D¢òƒ ¯“Ùþ«mÃãu"}¸âî¹½°DµAÓ+`L€*_Yð˜†Çk¦Si»’>·Dõÿ(½Wý¶it¼bAöøŒí"IŸuzMã@ÖmÑÌ1 (ˆ<°ÊjmìÀŽ'i ~î®]—ëËÌb°ºvÁé¨×¯¥L•¨êÓÍÖ¨îÆ ž±8Z«Yý5ÀÅ«˜g s–«“•ã¡Þ“I‘Ãs^"v¤D¾5Ý;sÅÄÄé@ü ÆÁìŸq ³ ùì;`n�“Ø&"¾ÏÅvƒìiÑÁ}NoÜÛ¦ýKMÚë¾÷-Ϲ~Ðô€2gס³ doEÑCS Eúøßóà¾}ë8ýëÏ>ø7ôÄ“ÏÒ5W ÛoïÒÕW¢eç䂾Õó©›Ðpä @^�DMPÓß~˜n¼n/Ý~Óúôç¥{<A'Ïn¤©&•qEDÚL�e"ª¿ây×qp$›Ã\£z êÖuýuÛ…Ú¼2F¦Ø7½g=òãŸy˜1h;J|Sc˜Ix3Ø+TR�Óý=0€¿Ä2X„ø†Ò{ÍÞßI¢ï5±×j*ÔŒOü|ÌêÏ Ôšž0#¤Ojï'{ÚER>5qþ¹x`ÂÔÊ&ÈkÁz~q»¾?0pà.{0’g¼âÿÌ×�ÓûŒ[ólk8{F·ÓåwÞ“¸çÆ\ƒÁ9l—ó`ÆY6ÕÔNpIöŸRJÉäÈ‘#ô=ßóNº÷Þ{þuçwÐk^óNW†¾}÷ÝwÑáÇÒõl]`{�ˆý¬�>øàƒl§0€„ýû÷ññxß|ó7Ývû­tð €:H?ü#?äìt×¥àË¢\}õÕôîw¿;®€ .ÿè}³aÍÑw¿ó;y› æÔ׿áõ¹`ØW¿úÕtã7¦i}qÌüÀ÷;Çõ2Ûß¾ã;¾>ûÙÏr�À¯zÕ+yœÉû ä6ëȯyË›h¾Ý¤cÇŽ±­ð¾ám\_a8wzØÛÞÊe«`^C‘캨Û;Þñ-ô¦7½‰.£Ï»”¡m>ÛÙô£|Ê� ;µe0»A?†Ÿ cSטÅëí^²ã1nK‹R^î²[;Y°Ë}Á.¾ƒ-þÖOh¾õãµþ¶ìƒ×-üÿâý[qÎRåZi8EgžL¤ìb»è˜Ü£2¹ ‹Xkıu‚ÑÇF¹ÈoC+JbORð‚¯-©¢‘-ø…úV±íªlÖ¡g,¥ûÏŒÈ;:a£ˆæ#FýÔ‰*nsÿYŽU=OŽê4ŧb”*›åW£]¿ ž¯ób7çïtÌVû‹/¶"0¢xÜVßÅmú±çŽ §ó:Ûz̪o+üå”Ë÷ô˜¢aØö©YÛgí›õ{7ïvÛVãÙÒTnW–U´·Z¨lg ·ÇÛ\cÖùú·5/MVøo¾ùfV, `)ð@ 2‹P¢4æ8×VV� .\¸–Š9І“\G(+8ç`ÊS „Žu.`ñˆk(ÀBA�h í·J«,T› >”†PŽpMÐjT_óô¼š®÷� ®£|¨“F×(K…½ÌC‚j_ãúHT^3eõPàˆ¶Qw,ŽŒ—œíãt®ÄuÐv¨ö¢†g\÷Þ¿ûKšoαâ9e­æ#x„ I"`à m íçŠRžŸÌš¿t“¾GÅé›èPùÂÑ1æ«ÕõÝtç×m9·è¹:&µ”+Gf½kK¹2EGx`6¬vFô¾Ouè¿Ø§MN?¨ïð„†=Þ¡L³–€ møÝ?Gß÷Æyzë-Ρ[¶©M&§Öcúý¿Ò~úƒ€n<Ó/|Ûºf¯=¼S‚vP€_¸°’ËI?«ãÝøGü$ýöþ›Ü¼YÔ„"æû ½S.I;>ÚœÙ(2Ö?9^tfÀr̈#_ÅiÅ`ÔË« |=8|-îYPŵ­­ŸÎÑSºe(ì€pžô=Öá¹_«ÖIÓ•$”­•á  ½£76óBÑAlõ´4§´û¹ûÅ+ÊŒšöcÂNWŸ6…E½½ mÆX/Ô@~»µRŒ"n]I’ ôiEÆ©ì¶ÖH"Rá~ æ•pÜ£´Ÿú´<°„¨5êÓRÜ¥Žk‹q•ÆA…ºíeÔ÷ÑŠ+cµR§s0³c)Õm­]#¯ñüêî’¯#÷\«vÎ}ê’$¦m•]š0˜ tVagPg:y ±Ûdé=*9 · ÌñÛCJ×búÁ:kg¬5RãBS?{î<=ýÜ:vbƒNݤ «=çŽ3 H@¹>hõá̱—ï{B©ßKkOuºÂ™/©9¢”A³¨KZ`ˆ—:ìñYz~j3Oå3IÓì) mð‘0gÊxKSôl¡—ê}ØëȵBo÷É¡Å1kÙ�Tìü¤m¶­ˆ·'4Ón⇷ƒêÚþÂx:âñ‚(õÑÐé4ιŒ¹iii¯ëm*ŠÖÛ¶ʲLÜnìÜOÙR=6¦ÊÓçy0NX x J³0°ì=ÞaÜj7èо]}p‰lÓ¾=ót`)!N_jøqUÐCöÚf¬‚e`+hjâ&�|ð¯>Nÿõþ[ªŸíÛ»L×]sóÛïÝ»‡ß ÃÑ€çùfkŽÁøƒÊ(k®Hn=þô³èÇNÐß}áY:~z%w]µÍÍ*è3Ñ6·ÏË2Øç AZ)e)/1?`®€^™ÄQî9j™üM2Nè㯳›…~k=4íŽíÃE[‘ö1rH 8ãZÎ É2ïêª6¢‘{ÊR©s;Ö�ÌôÛÞ$IY%UŸ‡.Ì÷P®MíØL<�ÅŽÕ̶¢Ÿ<€DÆKœ³ô0 ¦(2¼ès/nƒTÃ(·ÏÎIEѲ5pCÓ ª½m 6Ö©šc;¥Ù¨Ñ÷ã ´ï"Í5ÀxSa¯Ø#¢œ½@ë‘}—ö‚J¾œöíG˜Sn¾¹´”RÊ‹MŠ6ýÝ­¬Í°C�àAÐd7åybyfcA:ô]]šdï8°j` v±‚<çϯ¤¬nÛÙ ðS V)W–¸gþ&’µî¿'…Oâ¿cóIÌwñC[ü½ÝwñwQ¶ÛÇr1XŒS'D' F<³²A9C]‘‚Ï:O‹zÖ"&¿p¿x) ŠéE†Ã$· ‡èß6ªD•ŸÐDÕ¨‚£¹VÃ(o|ÝJbiazöQÊÄ íRIšƒL1±à ©ÿ–—ôåfÏí€IÊ—R&ª¢h E%sÖïÙךnÿÝ·U?ØêÜöïTv¶=˜¥CM•=랬’TTš)¶m‡<º?™úmë(QnbhI5iý&3Œb9»ÝžlYÎlÑVŠÈvûS ‚àÁÞ‹<l{:{›}úwzß.ú;«Cv9{~ÑRø.>Kôº�U€š�€½{÷ry0ø`<ôT6Ðìšê”Êè�ƒ !Øù`5 £ °7h•aBÏSçæ ð…¦ÁX‡!uè@Ù-°ÝR*cîÇ‚óêÐÃ#< µ×¾öµ|o˜+Õ˜£Œ:g`®ø­s¥±‹FlS Ø7´ÞhìC›¡Žz |�¼Ð…°¿<†ù\Ó‡  ´'ŽStòåx¶¥”úÉÿú_ÿÇ'ã�©oþæo¦ë¯?Ê}öcû8=óÌÓôOÿéÑå’ßø÷0ƒ ãrÏž½ôæ7¿ÙÉ׸þß ç#pÞ"Çëõ×_OozÓé¥(˜¯ÞûÞ÷Ò;Þñ:zôhiÐ|ÙIBÓ§žpï¤AæH%º˜~à×u‰ÄHÂ9¾·Ñ;·ÝRsNçÝ—uh!¢w½nŽV6ôÁû»ôØ™ýé—6éÿóÖI;AW³‹«ŸuÞÏÙÅÍŽJŸ—]X$ÂW"~ÅÙ-Ñ>s¬ ʼn:¡¢Ô¹€‚­)E‚D£Á…©O×YjðÑ÷¸uTá“¥1P—‘Àizÿ&ß"©76Ö8uB«5ï£ã#N½Áº9=,‰x ¨Ž<un `CÀ|M1{}e%AÍ9¨�¦³ó3ðmƒT`@€ œXÐ ‘Ý„™CœýfŒlVÝ~DÝ%N—ıÎ\À-ˆÈ\Ô ‘ûÐ3ÇCZêoÐ5ñ&]3vk/wÐØ]{ÿ¨KëQ6’=;·—&ý;GÏ:ÒÒ ÆÔàtR¡p9‡g‹ª5çÒ´8¨/3äÖ¶O Íc·>&Ü^PWj€ÍZ@K-D¶êi¤�€Ñ(¡ÍŽ €gk^·-dÙžm9};!øçy§¤û*ø¥¥~Ö`.Q€ÈfwLÏ<{‚î{ô4=ôÈãtauHau6:Îñèž_%T‡mÂÆD;&l¿³Î^uÌ)hCŽ™¤õÓvj‘{™ ªà~¢}²à(Öu¹:“­£>ûNr,-8Gê&ãÀ‚v[Æ'¢è.\Xu¿{9ÆJ½ž~+ã§þ­î¼ýFÀEÇ·]?«}BS è½HY™ÏRÇTllEúüô>C?GP+Ì©1(X[ïGSD‘�Õ17ŒÝøªÓÙ µu±ÌÏ/Ð\½‘ÖÝŽw2eÙvçþäY Ô©­ýÄgpɱ{H_`2%ðe~uìAe<æ)MsÓ^˜£ƒ{çéªC‹tí!è€ó´g©A ó`d©q#XU’D¹þe¿Ñ~ávo”mÀ…‰· Ý¯½ú}í›_C÷=ø¯©Æ£¾›ãúÌðv°2аÇýðÙg»uèëù¿4â2¦…v“I7ÝO¯½ó(}ñÁcô©Ï£3ç×S[£m?µ‡©3\ŸÅ,@RÚÖA{nx– ÜÇ5 ÏBïMS_6ZîR.¿ëR@î1í¸fÌNƒ (½ž>ƒbÚ‘Yãyëõ, 0¡ÌÞ’Y?Ì`ç' @ûX0æ5 T@Ÿ•PÞ1^¯Æyø†ŽŒãZ ó<gH;äm'–ÕJ¯“ZdN*ÎuäÓåº^áYmÅzŒþÖõƒ3={}ÅõBÑv©+øs!ÚLƒJ`A?a–ÏùVJ ¿¸£”RJ)¥”+G0Ç+Ó2Þ °Ã¯Áö²uÄïS€+ÔîlßûÛ]buìo9FÁ¥”òr—+`a±ªÌªsL”ûÐ#w³èüxƒÜVe^ÌöçS÷–œQ#OL)ÆÖ(iÁyÃOÞÁnÏS©¤h1´¥¶I0¥ŒÁ0ˆ…½DQÃŽÞS¦´lfÐr¡HÀi …RŒYuÞ ù]œü·“Ý>C{ï—{ñnS º“vÑ€1kª(‡Ó9ogÕ1ÿ" ,JµPHHÏIvYìö÷Ì:lQÞn®9ëïx‡kÇæ¾ÒvÒã‹×6Çq[κ>mµ€Ù¾Íúûb¹}>Ìsn@ÈJ~èyþ†³ÿÚk¯eàdX <y’A p â<e¨€Ãç!* ¢Ì(†½üËÎÃñØ®l�4hz Ì ˜�VÀ>= .`·P–Ì!¸Æ'?ùI^x¢LÔÇ ‚¿uñ‡{Äy�yà~Ô¨…û„Nëù×�»…R;ãZ(Ç)‹®¶@»(D ÞÊüvÄuñÁ¹¸5Èâ¾�ÐÀ=©Áç¢|{¹ß;¥¼¼duužzêiºé¦›è–[ná>øw÷wô¯ÿõ/Ò/ÿò¿cã&®û￟.§<øàCÜŸßþö·sŸ~â‰'è÷~ï÷xžxÓ›Þ𼌂 FþÖ—r¾GÌ9ŸûÜçè­o}+•òò“ABŸ;6¢c+X;Û9^½|;1RéÂK×Åâ$¿õpÞ~kcpÅì}ûÛ}ßëèìQß9°?úH‡¾å®]³·F/ä[¨è²Ûù=9’äyW0…�RबUk•>ũ H*©C™¯ƒHùÐG¤NÆ$>«, V؃\îû¢ãÊõõýœÏÍ.Ž–(Œ¼3·Åúœ©Ýî&G-c=Q‰j¬›V˜Uc,¬^÷RÆ-ˆ:öD­ä¢¨Uâ5½;®ê™À8*{”-ü&ìÐäu&;»Ý_h7W×0‰\ß™0øØYÛN¨Âíèt¾`HÍ΀Ã5::Þ CA—ã.Õ‘.Ä9)ד:=R]¦•æ"EsÆsÔuetwnx@±ÓSçbwŽ«“›¿7ºk4÷œÃvU£j¦>„Òæ¨­2,؈q â#yîýјzC¢NŸèÂfÂ:-.»Ðiy>¡zÍ;ºùæ%[Ú¨ÛçèÒRÈé:rz’ žý6a“Tç¼u^ɾFsŽ£æ±–•©"ZYݤGžZ¡‡Ÿ8M'ϬQ§;¦õ>­®­»õqÇסù¶s²Î5Ý)ªë»of §P ++ÂÈ´_jJ|ÀÌa—Žr/yÀcÚÏì·nWv9ÕMôþõÚY;Hú;f,Ð!sHVÜZ¹Æ`‹N§Ëïs¤T} ˜T¯¥×/ÚH옰¶­›¦Ñ‰M„03£(ÈDÃ~Êåû• x}6að ¾0€dÌsRßG›«YžCÅõ¹:U2÷�t ãÓνõzƒÙ;�ª�ÈbssÝé›Nohó6�s’$Éû-ÓŸudstb˜Ok¤ú·Kœº°¬œjbâõv×çDN7¬ÐÞ¥&½z]{Õ"9°@Ë MN­Ñj€%â”=QEAÊE«wªý.›Ú•E@æÉ­d+{ƒ4ÄA‘›Sî¼ótÍ5èÕ¯>N?ü=}ì—‹öD“ƒª`þÅÅÖÇêsâÔGÑܧhÄÏȦäšoÖé–ÐÕ‡é«^u”>{ï3ôñO?Á@ ['±3fíj€t<ªØ1aíY°C Kb…׳èÍæ<ë™Ð7;ëœ:da~™÷ ˆÈÏILžŒ!-³œkdvRËdcÙ7 vnU€_œäÁŽdR豬5vÓà µ bœ7¸¿ÔÓyUYyµ~œÜ*$?w È€iN¯æTœnŽPVu i½„AÃ!Šì>ù”œF‡‚m½Ó@azH…5�ƒŠüøXÄ‚'Š6A{m[žîÓÔ(šbéCxÓí¸û¯38sLj{óŒ2¥”RJ)¥¼´Å¾{ôïMÍ÷Þ±°«!ˆÁ‘Û±P€mvê'Nð¹šm'p…Ö¥¨dë yWÁž¾›²J)åJ—+`1káª�"JPFé1ª V|ž»ŒM,ŸKò‹à"Mã唼ò¢÷¡Ê‡lǙݣ"³3v‰€v»½—0ÈSËÛýE¥-£/“Ò„hý´®0 ©±l'Ѩn8Qñ<`lÈ¢Á|ýÂ,­:X‹m7Ki™uß+;!v»K ]œˆY$ f°SMm³ Ù>>Äþ]ÖluOÅzÙ}y…<»W«ˆúS~Vù—Ęõ÷Å–§÷4kaQ<ß>ÛY‹Y¿g»ÕX-–}9c镯|¥sò}=ð¼16�`}F‘®0cq‡…¨É`ø�³Æ.>XìÝwß}ôÀ°Q�  �34  05 :E™$�€Ð9F¯£  \†K_qs6€¨§R £m>ö±ñu[ÎdŒÀ({Qã+¾âP¦ 56*ýê¥ó ;Xâ:¨‹2f M�¾ÀGÃçZ €8 PíK8uÇý¨í‡ë£ÝÈzç6¥”riÃò]w½ŠÞò–¯á>÷º×½Ž~äG~„î½÷>7^î¢Ìi¸»÷önåaüÿ½¿÷ \.ÆÆ¯ýÚ¯sn×;ï¼3aíF'Ûº^/m‹â¬÷d)/IèäÚ˜>=¢œÚAºªÛu ÌP`ôx÷χôæçhÿÂ¥:n<ÑÛniѾ¸N+›1}þXÁt’“Ë"IœO/‡÷cž HsÃáXó†!ñ'Ĥ¹ê¥0]˜BœÔY:BK`M2-Ž +Y¤«8*á8Ujó|š¢sÒ¬šéÇUGøz`^@d:œ­X3­qºy^¿T¸Žâ7KÄ‘ên‘a0�ûÄeŽ2]6´ôô‰DÁ‘:B®û@"wùÞܶ ;´"¾ßI0aºöú§£‘èÛ#ëݚϭ›Zý ºy¼FW…]:Ò_¡.©5rTúÓsKtßÜ:SßK£ÚPÔÁÚŠA/$©FÐHCÁŽL® Áô�GsXiÑ9ÝÖVWÜç‚Р·©V™Ý;sV½VÛ^uCulZ'?þF�†cIÍq¡K´Ú]{L s1í[t5'9½¿²:¯òÂBB{—›æYÊóàß�ݘ@ H‰3ëI�+Ø‘ïúÏÀÕ»ÓOè¡'ÏÒ½ž cÏ­ºµ¨Û> S —Q¥¥å}ÔrŽôóN»5îYj5²˜gÐâqÀ € [weEf„(çÀ'r9oÓXf«‡è¹!­ fMq¡à XPð‹Ô+s6Z&N=^ŸcÚíyÎíŽõ/ÖÁXcŒu¢Z=mnŸ½‰(ØBënÌÓgÏÓíކ~<û1gj(¬2#nÿ!õœƒs<§lzê UV:±)Ux^Ó{Ôy.¢PÎŽ1Õj.¸gߢ^¿ÃL7îºÛÖ¦…ö2;¦m[Ûñ ÏNR$åYòNÛÌþeûëž©›—�ýŸoÕé×í¥[nØO7\»‡ö,⾜m¦Vå¶ Á8çôAOaÀä!lW (C*j”>¢mˆé�À¦}ûörºõ–WP�p»¦hÊØÐöÂ⢕ x¢cžs„yƽ[hÄï:Ô³Õ¬Ó×Õéš#Ëô†×^Ï ‹O}îi:¿²‘ÿØ:é;CŸ—g–Á"w�@RSQ $€î¸±±Ê 0p0§éæÉš %ò>S°Dц~²ý .{Š£R/iÆæ„”áV~h³Àõï(†ÏápÀ  } ØN‰ãÔé¢àG ÎÊÛB´MÒº'~\ ý#­-îY¦wôÌЋч‹s„ФmŠfÚoì5í\¹•GŸ¥ÎúÜŠ,VEû÷» œº¾g(ì<ÝCÞÖ¬í‰çÖíuRð §VñsŽô¿˜’eQJ)¥”ò¢•Ýø¢¶z—c®‡];8ÞÏ<ó =Hªé²U4­ö©SgÒ÷–¾7¬.s±õQA9ð ýv¥”òr•+f$¨â®ŠwàžÈ/ŒU­ë;ã‘F‚`Á®@ -C”VJË™µP¿g}Q¬c[˵hh+³€içl*0þ,²Hî¼dŽ»00û“$—oÓ*–z“ëš]«*ŒVYÛŠz/½¦S€`ôÐ(m8BápAÔeßÐëjnJ½öôËggÇÐÅ:2f½àfm/îßîÜ⾋15l猷}©È\RX(Hc«ò¬QËþ†Ì\ïo«íEEw7ÇÏ»˜ã·’펵[™í€vûv`ŠâqÛ¿U½/Ǽ£‚ûCª€×¾æµlÑÂy_ݵR�×Ã1�`�‚²4(»Â7ÞȆ œqŒhx j¶øÌg>ÆG l•Æ#‹sN:Åà ƒ21ãºØŽc�`Pv ƒ…ŽC½P'�4@Ÿ‰ëื¼å-tàÀ‰TòFX\G ·j˜·†½6þÆve­@=q?¸¶¦ ÑöÇñ˜¯pO#ø9 Ç‚™CŸ•‚(›…’ñÎÑûqJ- ¼Àå¯^Æg^ÊËW4ºg3‘~†ˆÒÿëÿú5Îsø]ßõ)óË[Þòuôoÿí¿¥n8J¿ñÿ‘·¡¯C¡û±ûQ:zôèÔ5Õ¨ ÑÈT¥Ç2ãÃþýöoÿ6ƒ˜�Æx×»ÞEo{ÛÛø]ŽõÁŸýÙŸÓüÁð¿õÖ[é§~ê'Ý|sƒÔÖŒ‹gŸ}Ž~õWÿOλý®w}/;m~í×~ƒÓˆà>¿ök¿–Ë»êª#¼ÿ—~é—ù<Ìi`‘xÏ{ÞC×\s5ýÅ_|ˆÞÿþ÷óø¼ûîWÑþàòu!?ýÓ?Mo|ãé{¾ç{øï§Ÿ~Ú]ã×èüƒÀ€•_þå_æy÷rÏ=÷ðØþ™ŸùzÍk^ÃuÅœøÃ<'}Ë·|‹w¾–òr”³›1=»:ÞSÅlÉzÌë¹±WûÛºóÈ=ŸWü‰ïÖýù—œSgÓcg&¤Á‘/Ä«ïdŒ·ݽw(à#†ax þ%ì ¾¶ ¢ˆ½·Rñ)DLd±–«‘ý(a<IšÏtH>§|æp‰Ù©)º µÙ8Õuš:74iý²]ðì˜xź{×8ºì¾ûÌf±º:tNÔ%¦¯Väϰ‰|Tt ?+Í\wÂQöQXåˆa.Ƀ,Fp¾:çpâôµ1ÏNç«°…»·ÈµÇõÃóôŠñºvÜ¡ºs¾¹˜Zq@O7Úô…p}qñ êm.oˆÈä "©'ƒ„©’Þ­[&5J*p0U8å ž•ÓÜhFW&3ž!eIT§¹z“ºÎq¶âà4µæ[ 0)ŸRuÂ"kD`ö}€õ§j3ý¬ÓèÙócjT:´ìœócƒdi1Z]ïr8¸Ñ·oà¯Ïz/úǾ}ûy½YÈÖ­ëÖ:}zòø}úÞ§é‹÷>Á€‰2†Ž0‚{’öQ]'îÛ{ˆÖ7VhumÅ9W9­ØMúý¡¤¡ðNHT`\u†b{õ&ë ´ŽFËÈ¡}جS^)´`û¦^[Õ2±†¶@½¦Þ¿´ý„× `†3US$à]©c}®êìµ@Ër¢õ·ë}†Ö!+`ª8´ãs•Û\YèPe ±×ÓHzè:µœx" 12'UÒ¶U[Æ,ÝåÂÎéÛËœ2dÃõ 8×ÛóK4ßZà>‡ú+ÐÆ>ÇÀGÖÛíš[›ëæ·ësÓ¶Àõ®=²D¯¼e?ÝÖ†# b׃Û}'hú:ÆÞ^Äïål®éøM¶Åãí¤Ï׳ÚÌÚí¸íÐþ‰eP½Ù:ÓñwèÞòükõ*ßI%iÒ­ÜõjÕȵÑúîo]¢¯Ó+è#Ÿ|’þö³OR§7àý ºW­w^È@–ÉBÅÚ¼4xIe¡½—ZÍEçXwó¤›ÀÌÁ´à®´Û‹p ÊÓ¾Çm4-A"PFÆY®Ú–�3èñx_F™ýä0Oö +3¨bÀï7ìÃ;§éêÙlÎ¥ó�—‡{ñïQû¼ìóÑûÍÙ8‚,±1¶ÁF±¸¸Ä@èÊpaÝ�½s„}Ù÷¿ž_,_ë‘»èvµ§Æ¹yÅÚ9myEV=‡á½¯ý 6cp+R±ž¶ïœ¹§±'µ¢ðÑcçç›îøÛ©”RJ)¥”+OT7¨¿a3Æúï�-ôXy?×S_§¾Ÿ%ÕáîúS ‡Ôci[æŒRJy¹É°°F9ˆ5ʨ¨Û3E"Ê«�]ôëÄ£4±³á—»þdê©RT*·«Cñþ‹Û¶—$÷+1hjVÞ¡¨Q2¥X0ÚÜDÈ\ŒÀXŠ6‡‚„cLÖ5â¤×¡Ùzùû¥y–“úRŸ*âÅÓí5¶[l·¯PAº±  ¢°ÀŠh¥`˜Ûªž¶½­¡`VïVfJô3ë˜çs­Ý\»}[$ŠJKµªÇ##t{ñ^g]{–1àr ʆaN@Ðó>ùä“i.77¡´Cà4Å6 c”…“ŸbPãŒ7ß|3_wÝu &€!@ƒüã|<Ê, œ€‘À ¥=Cpœ«ÈX5´*òeÁÈ�g&ä;¾ã;xNA=òÀ~”‰ùå@p�9`qˆã8àˆ¶µ^×@Ýp/Øúè3‡Á@€C4‡.îÇá̨£2‚À¡+‘<qšrãÇ£N8NӨѬ”Rž fŽ‹.½÷½ïc0À«^õª™ÇjÎt;UiÄ& ¥è£èÓßû½ßËŒ1ËËK³®ÊŸ››—ŸøÄ'9¥� èëŸüä§èWõWè‡~èŸ2‹ÆñïüÎ︱s€n¿ývúƒ?ø/ô×ý×ôÝßýÝ røÀ>@?ýÓÿ#ýÞï½?­'êsüø úOÿé7ylçw~»³-úÿá×èÏÿüÏéç~îç0 Ò0Áý}ô£uuy'ýÄOüƒÈ>ô¡ÑûÞ÷>úáþa77]åÎùsúõ_ÿuúñÿq¾¾:vŠí¤FSüþ«¿ú+ú±û1z÷»ßM¿û»¿K?ÿó?Oò'ÂmàÆ#<Âu˜ÿÃ?üCc”òò”õþ„.tПÔásñ’tQNL‹€®qÎãçC2¸Æí‡œ˜8GËs+ê|¤D�^ÀØÑô€ÅüâÖ"uúDìÜÑt ŸL²õHVR‡•¤ó¹ÙLS@Ä|–w„b¾+m}°_Úeš®R‘”*??0¨ƒë)s*€9aX]…c}Õ­úÔl´(Â)‡Ï¬6±`vG Š*Îq`Ád@aŒäH ’pD6gp[ªN÷Ú3éÐ ½óttröŽ»4Ó„+w=¬ÒcA›žmí¡ãóûh!rÉ:$ÉG'ÓDP‰D«³#9¬»…“{78‡Û8R2tNj€+\}Ü^WW>X-Æ=Äîjq‚×]TjŽÌíllÒd4qå…ôùYÇ£²@ôY’EQç«PÐSgb÷ðÆÌžù1µê#N“p~e¥Ó}XŸÕ8@#ðÎ|8…Æ¿NKË{sòä9zîä*ÝÿèYzà‰ÓÔÄœù�`š ³± ÃÓ:ësU}ÏP¢³{õcÀpÕºÕZdC*Ö‡ëˆÔg_ÔÓt¿èõTÖs”aE³ú¢:)-ƒ¥–«å(ÐCƱ0<› øàç‡t8Q%Mi¡ë \`üâ>±æÆºksèxwb>xŽh{eÕP�Ã8g»‰Gì½ê'm�¢0çøÄu±—ãÄAª€pSpûŒ¤ý'c×&ÉXúYTKíOúŒ´}‹zŸe³ÈÚ/­´ç™Ñ� 8ÖhÑZrmÓNu«ƒË�Ǻ pávŠdìTÝX;¼¿M·Þ¸Ÿn½é]{5úy…ç™Hæ „AHv¼–KšÞLA‘y‰AIj'º™å`ÞÕy¤u•zz“÷7îÇîY­­öé¯ÿò£®]7é5¯}¥[ßÝ$z�,ë$v0ó¬uäÐ2½ëÛ_ËŸGŸ<Aüð£ôàc§˜mmõH;ú\m?Ðgo`¬^mûúàòÒ>Ú³¼ŸNVVÏñgmmÝõËÅ)€§‡¢ü{S¯¥:¬²¢è9–õDß7:^4ø€AG“·kµRõÁHU¡ :î}<‚¸ír©H¤=ÁR|j‰gã°ö* JйOs½c^€ýãõÓ4 ÂD" _ÖîeÛÓö) HË®·58ö§–©s­M»ÄÓ©ô\½–›e{Ìs"à mò,b÷ü{ü,$Ëè¢m¯¥”RJ)¥¼8e+»0ˆµœ† ® ÿ_öþ3X’,;{舧õ{ùRkY"KWwµÓFÃ@�Ë!{Ar¸F³]›YîWð×ìݳ3†€4²A�  hYÕ]2KeUVVj­3Ÿ¡Üç~çÜã~Ã_ÄË—YYÕUY~²¢"ž‹«üÞë÷œóÝï$¬W1°Â¿£÷†«_(HC¤Jéû'•Trßr¹(J›¾˜¨ìñ$�A j|‰kX`­Š™5²ù^Œ@WU•;q‚†·aZð</²:xþê!I:)žíÅ«IÔ&dí²¶¾¡èÓÄ{Ô9¬×c‚à ©Š†û{5€8Qø¥€ÉZ§×èà¾T1첸]{ܳúîßï—tzù&+@D~·Þ+}˳ÆÏþn¬Š*b0q•Ťtt’Û]ë>çv×ß (c­i¬V·ß¹;µ\ö™Ûµ…›F§URîe/Ęۻw/}ýë_7Æ‘œQØ@€é.í,Æ)Œ›jtD}1^’€Á†8\ñ[_ œX¿~½Ä7Ç‘v}ÃÉxâÄ zçw8]8@qNNŠ\C ®�p VË:AzØÕŽp(ã—¿üev°ªa×ü€:©E)|u>QP„:Ž•ÅõxB^¸LÈSC~ ŽšÊŽ|p½¦ÔXª!Lp\´Xã7Ê ¶}È›c¬ZcòAþ7.~¸æŸT>z`Ïÿô?ýÏôoÿí¿‹Ö=ßøÆ7h5ݨó{FBŽìÛ·—¾ô¥/t¼¿^o0Å‹/¾jŸzê)Ú´i#á½òôÓOÒŽ¿ËŽM8f�Ì |8•Þxã f‡øò—¿Äãö·ûŸÑÁƒ[Ö�WüÞïý>�1úÓ ã÷Ûßþ6ýÓúOé™g>Á× 9‘¹€Ü'žx‚¾úÕ¯š¼ú¹¬�B|ík¿D_ùÊ—ùÌ`¥8zô(³ô´Î£cÒVŸÿü8]ŒÝòOþ ýùŸÿ9Ïu˜Ç0ïa¾ËíqìØ1Jåã)uc,_=9éBûÎ ¢ÝØì!s9PÞx±+Å÷ö¾ÀÝýŽ0ï°¦G‹Ëwé![£„¡¬ù\‘tFøßÝS³ÄOW' œªŸÕu«c)ã…‚¤=ŽÐê‡Bë4q aÞÐô°›iÖ�¼GÚÖAÏqÛ)×BôÈ‹òÓ²×ku¾m G;Ú Rç9ìØ%'|_ÏÍ/Κ5Χ°�päs¯°N/¬Qt=É ÕY°gÔ¨rb'©ù»€¡Áô ãË/ÏÓDu†Ö‡ 4XŸ3OÖ”%[¡ë¹.:•¢S…š.šã0`1ñ³#Fhœj¾Pþga:ÈùÒóMáNÁnÿÆ’<ã˜òó r¼Ž ÷ÍZ½nŸE“ËfàèÌHßg–£uƒ­Ä¬E—æiʬ튥2Ï›º ‚8Äšê6±þ"ý ýÛeMP0ŒëLSÇØÙ®Ï„\¿¡Þ< öšò^_¢Ëæ³É8ŸGGú8<Â8ùôôÇì2ýøùãôÖ©šžš6N¯ZÔUoÆóÅÓ²'Œ o.h0ƒJ£)�+ϨT,˜:÷Q>›7N{ãÔD( S¾¥¥E¾WêæSÌã:jµ^zNÇ“:PÝÐ*$Û¡F@ê¶�ÈÅ€+m6ÅÖÕ‘eG\ëf×Ö–“Z³Æ÷`ìøv¬áòz½‚Ýê]]ݬ›(£˜©ÊưK¡†aЃÙl.ZŸ(�Cë í¡wû¥S«ÆõhZ}aˆŠ…¢éÂc>ˆuaŒc„rÓÖ¶ÝE¥›`Ÿ_¶åY¹;ã% 0%ä¸>Úp‚÷ç†xN˜_˜c�²0n«Sà”&Ï fàqjúJ±”·�!ÙÈ6ië– ´yC% Ïæ9ysÙI@'l"† qÝLŸž™wC™GQ\=pfiÙ”/Çz¤>{Ï%t´w­ÅVÐ>ÜÚ%:Ý%eX0mÅÏ Œ9ÈŽBû~‘òÃezä±鯿÷úÞwHo~‡>º¶lÜL=ݽ´X÷éú¥³Ì–€¶¢ê—ieÊÙ±eÂ|ÖÑɳWé¯~x–NFÈÌEZ®Ö¢ñFNÿpí. Â÷W†„P{#Â;5é/h€÷F†×™ù£F3³Â®ˆñ!À¤2÷‡ —Óe”•c|h¶�\ЀöK ë ½[mÊvR, Û‡×òe^v"˜÷Ü)bKj¶Ø^£÷²m™äé8‹\îܤcËe¤‚ž€ë4|Úúž€ÖZŽ–q±«Ûˆc»M+ð­à’¡dˆéšv=¡ @–)„ÃãP<G«]UŸ¿»a,¹4V˜øæY<<±QSĈ©aÄ8Œæ;SIåL±©¤’ÊGLtž×‡x?(ð®3ª0(fVlVŽÓ[-/Y§ À\™%3”¾jRIe¥Ü7� uø“³xÂV*L¢•̽¤]4ûnè‰PLc)­6¶Àˆ„Eº †s-îRlºFd~­%NÔÁ)ŒRQ:/òðàÅ×ë=I`ƒë|Ðc+ËÐ* StÈø¸ˆÍ"£fhÁ&:›†­…o©÷íÀ jÔ‚BtëÖ—Wwq'ÛϽ‡¨Ä‘Ìo5Y­ Ö¢Œ¬æ�wÓ¼][»ixn[ÞÆÙžìOÑyí÷mX+4t‹K‰ê;T…IÚ¦ÛZŸØ@ÑnˆxgŠ–µ° ù‰Ó¡–ëÚµe|°ÖgÜ®ï%ûK»ü:I§r'ïíÂXMü5�´V«wŽA}`€�u=è¡—ƒF¤¼c,Žóœ¦q>a´€’ÅŠ=œ�(Ýî@ E ÌøVŠ_D°\Y`ŒP èÍPg[Áá²yóf>Ò˜ìØ rBwák(¥W3@ ¤�ðeB¾0Râ7Ž£.îNA”¨`�-®‚¿Ôøaà ï¶AÈ çñAÛ1ý¬Šc(/òU§Ž¡ h5pëûéj¾©¤r÷Òèè0ýÆoü;ÿ± êСWé÷~ï÷xŒ}ñ‹Ÿo™ã”Ê7“0&kÿ„`\uw÷¬š+úñ¾ðúGÿèršçÏ] ?þã?¡?ûÓoÑoþæßçô^|áeTLÏÜ2sÇUMé¼%qdd˜Ã†©|ö³Ÿæoݵ†ð(ûoþæo2#Š 0 æ.�6T0ßÀå¾ë0‡AI”¿å¾ 6F÷`Î4åºÁã4Œœfd_ܲçS¶zb¡”¡ÞžvŠ@ ø¢YAóßccãQú‰¢áWR¹EæžÝñXÓ{Ƭ»s� Ü!°"JדT¥/6…ÄÂ8Øà¾|/o 8Ñ–‹½fy8òkìtϨr* ¶Ç˜Çû.Ž%NÑŽMvì‘Ö7ŒÀí`×3¾ÕÓšPÍ„ÒÞ‘0.À¿‡ñéY¦Š�Ô[0r½°Á±ä•JŠ3N¡ŠÇô2qÌdáTo `Ó&?8&s`ÕàsR' àt!Ô Ê=ÂŒ iööô‡nžC†ÌÏM¯q!œÖì¾”I�ÄÐFÐàùˆó4ŽÕ‚)`@*õej„u*-ÍÒ–Ú<õÓ2åÁ`œr9SŠ›….:Y¤3¹>š/”¹¿Àm‰² }-J[À‰ÉØu#Ú5¬ª£Úç]ñòüÄi¢-ëÐ5êÖ‘dÛV†Æ¹ÉP"^ûȼe³Ñ§{ÙÔ»-š¹]fÊn§bÒ–ÂnCq¤?;×)qwh'C4p“Z=~fÉ3Ìó²>›5í8r³ÎkÂ1.Ιbžøá!ºxe¶E/µˆŠxÇ:Øü8_¼?Üâc¼± Xâo—i"ëß2-šüáäž^àâpÊšP@pú7Ð9Qßl¦…m’tRjyU7T@¯Ó2jû¹ŽRuöiBç¸vÙx’ᾉ„ÆiÝE;ICÖ=þÛ·Ï2kË-3&þÆïS8ÈçfLŸ˜5ŽóÓ'Ê"™blù›ÍÀ©«ô©K-‰à[é”å¹gø“3y¨á8 !RÌÚÂmå0z™–Í$‹ ³Ÿæ|®'~ƒ•azðAš>ëç™h§:;Mœ"Îl±A…ë èú‹T«TiÞ´ÃÒò<U닔ϩ\é¢r©H]•õvi°¯‹Æ†ºiãºZ7ÖGã£Æ!޲æ(î¯E6OAJ^ÜöbC8 aFYÄñ7ó#Z˜_¢ƒ¤‰ñ>SŸ¼€Ñl˜%°{àyäÌ �0!'îÄ¿2D®+ñšÔ¾ã<uÌËXcèÞUKµˆÕF/Ç«ö×ЩÓçiã†1Ú¶u öó8ìéïãݜ۶m¥®_+ÑŸÿù·éÙçž§«×nÒÁƒS416Á�Ä›y¶ 0Qþ‡Ìó'6Ùv’µß¶MãôßýÃzçØ$ýøçïÒ™óStËŒY°Z¸Nt]C»¶…¸Û\v"Ÿ„ј7ï 蛪.//òûó‰„ã+1£ ‡p í\@Â’ �7´•‚þu >hW …ϵöù„ ˆUí¯íßèó—¼m}$ vjRà,,|¾Èk±3 «„«“„ü µŒÈSAÐð­›*àŠÇuÀ}›m¾Ö¶J䵨’µ¼îüç͸NÌ $´Ï�Cm ÷ùy¶¾:7»à´IƲð›W“C×hˆ"-æÀ‚ I¤l%®­ ß%3x÷z–J*©¤’Ê"kñI%¯Å;_C¤uwãä‡O¼qÙRIåÎä¾b°H:foçÜtÌú·û-ʵ?góÑE®Òä:´ÝÉ,iàpËêþ½ˆ:ÇÕ¨—(—[ˆ»pÿ0Š*Ap€ ŒP]šQœWe3)É6[«¬ú¸Sçý\“_Hùù¯øÜ*}¢]yãt¼ŸÖð ¢ük÷#jX1*% nnyãrˆ2íÒHÊn„ö€—v _»vK^s»cÚ~µöît­;f“÷t*k»ï$ ãÃ:ÞT´Œx^0Fìß·w]¾|‰Ç¢ ��nÈ Ìs�Cl Ç‘€ ÇHKÙ`œAƒ1Z ?0f⣻l”Cw`aüão¤uáÂOÀ8‚{®0’Àyм�x�ç¬Ø½{wdÀV0iŒ¡Æ!¤¡åDÙÁÔ<qNÁ¸é(@Cû=Ú¬¸uÒ°FºãGwù ÞZ/ü­L(—ìü)òµ�¢¸ñ¦ñQVeÇÐ:é<™J*ïE°& �,/ññ fùáÈ�‹ø]@°¢V«Gó»;G¬UúùØØ(ÿ=1>fÆÃ5úÑ~L7nÞ çþ‚ÉÿGôë¿ñëôÔú'¸Ï#DDRKKËl¨—Ýwdæ‡ <²k×NÞ]øÖ[oq˜‘½{÷ØñìEl7a(lºC½“`ŽÐÐHƒž8büh'4ydNËv—e(€ÈI‘lY*H ‚¼Ò@# íŽ^ûg)çQWÁ£é¥{3¿c¼-˜îyk¾Ic=ï-&꥛UÞµœÏ„4Ò“5÷Á¢ vJÏ/‘œÕ¥üx½‰v×8;úÍ1?GGèKŒA?´t3o4á2×ÁùÌZÇ^B¸.ÅIjTa8Šˆd—/Î7ù~8¾ræ>aa'.Òk(‚8¼2â5a:v„´@^¦ÝµìKc5­þ–%ë¥ Q§”õÊæËÔÉQÕ8ÊjU³¦€Ã8³-w&³Ür•†ƒõxuÊšù#W§Ñæõ™:UêUšÊzÔȇS¡DïøýtÞ/ÑÍ|er¦Æ!í5êÒìÇ­ó®[žß‘Âm!%8xdnƒ£›ë„u¤×´õ“™ŽÛ¾€ôÅ©nð¾B|„í:¡C«›Ä¡#ÐDâ°½EYÏ0ÿ¢OÀ©$a$sQGL:½’z¶ PýHu/¹>vøk¨ qÊÇ黿ÑéËxÌGm ¡)Tdg9ônc¨K™ä=!l Tð…¡LA�XD›<¼ö w\ÛÝÕÇád>Ew•ƒU¡`žmÞ8 Á4Åi醿𰇦›´¸Ÿh·|3V¸tú. Ï»•­Á¦‰üª|Œcœ¡¶‰d�­«<GÏ4fµÒ²g²9êïC8Ã%q$/Íó7ÚÎSŒU¿8`‘Ÿ–—W8GÕñšáMþ ][À^´ùAËí:]'¸¦«õlÂùÚ°,Z'®v] dŠ}¹ÌÓÈåÛvðíøâ6–i†óèï&„Êøfœy 馭›×ÓÆu#49ÞG£Ã]T.d-ø)kW#³/t’ÐÚ›Tn½¥«»Ë‚y”Q!+s–™?Êåýä'ÏÑÑ£ÇèÁ‡öÐ^£O–K``ïvRšyj ¿Çè4]vÇcÂÀÊf¨Î M´`V²Úu–iŒ3çŒîºXÅLÀ cÂ$`Ÿ±™ëF†‡èرãôïþ-mܸ‰öîÞJ;¶o5çŠÔ×ßËkÑ›7§™yë[Ì/ÓÓ3tõÊ5Z\¨ÒC?@““c4<<À 9³å³NÙ\Û„€Íöï^GÛ6л'®Ð˯Ÿ¥£æûúÍy2ËÏ[F’±ÂenInœr¯sÛ'by´�ƒf³'²­AÇ…¾]*cž(Dì.a¨¡ÿ�¨� òP;&Ɔ¬y}FŒ@\vÏ_±pç]±YÆãBÏé\G[ßó[îuAtíl0ñœÏßø»h�* -ðQ–\> U.U·lš¶0IXv$gŽJ2ø‰9UÏû8éY€æg0ø¶N ÀÀ1Ìq<g,‰½� \È…¹Lf ¨póO‚#ða ®H%•TRù؉¾¿W;ÿa”Ô¼Êý&÷]ˆWPY p¡ a°ÒéêYƒK¸âš$BYk5Â+àâÒý)…¦¤!Š´¢·`œ#=‘ç(¸Pwý¸N]·¬í”Ô_Ä„êyY,t÷”?8N …bôBˆXÅ’¸²Ú¹N׻弓ûÞK[¶ÞëÝæüÚò[ ÖYyŒiŽm;f"0‘¿â%ìöm5ŽAd7XkÌùÐE(tãU†-ƺv@ ÷þä±ä¹v¯&Éë:ýÝ.ÿN÷$¯_˹µ–÷)PÔ{ìQúüç?Ëó'`ü‚QåÇ1°Iˆ1;9ùñ -vuC462¾1ž]C£�LÀ×�”€t�@@º0Ö�´s¸^)Í&''iÛ¶mœÒ…q÷¢œ§`dtt”眰À¤óꤑåB>È[Y5'Žã8kQoœÇý0Æ(ÈB!öeB½à¸HB¨“Þ«¬ºÃ¤É;žò;†îÂu(§:t5Dˆ:›t>DYÎHÆ©|týý`8}�\˜[ ‘9³¶KãŸ>}Ú|Θ12D¯¼òêÏo¸ýFk¬mö¹óg©P”¢gÏ¡‰uãôÔSOðµ/¼ð— óÆ÷ÄÄ>|˜¶o߯�+”ç[ßú ú­ßú-^7¡Œ{öì¦'Ÿ|Šþàþ€Ã‚ ð…݉ù—I½½7� �³vïÞÕ¶¬ÈóÑG¥Ÿÿüç´ÿ>ž·^{í5Ÿ›7ob§Ú  ” $ŒÒ믿ÎsÀZ†' A㥗^2Æþ |?ê‹ç‘Êý-^›¿ðÿÞr††»³4½T£»g'§¨4½Ð 3×—i´§r÷¦vsã«§ØY�Á†ÁÂ]rl¬M0øZ«SµV�‹ æ„�¼ÀNúz#r¢1” |^S@)0(ñÙ•‡+/UË>‘áм¡;í®UG¸• }|Èdm`ðíŽ_b€kh¦Ë·»p9 Ÿ1ÎNvžd¨ °B`Š”×Êß%»×MúØUL!ßÏ„²ër¸GÀQ*VŒC9OµåÊÌ`}V¦‰¬q|eC*Uç©ØX¢‘敃eZ2Žú[…njšuÉÜ�Í9:Ÿ+Q£ÐEgÁT„`ó@žØߨQ;f½¼¥û6 lrX Ow[Àœ@R@`ÎÊØ0,ä8ðpÜg—´5$ Ô eÃSÿ"ò -€Ã³àmqže™­ë!¼Cj5�hãõc&“oq8©Ã-¾¿ÕÙç,È2S¹ÌëÜZÒP@°ÎÅ‘' ê`çÇÍFäŒÏç.t[¬˜¿3™LéÆa¶Æuò…Ž^ÅþÌØ’¥žî>j”ëÌìF ¬½+Ù¥ÎÏÃaêH: Õ©uUClÒ†‘¼FïuÿÖóêVÝu ëõ¸FĮΩŽQmSiC¿Ü†¬CHù$ŒYp‹Çí öŠR©‹nÞºB·¦®qä²EncŒÍ¦ ¤À |pŸ²SÄ@5î¶·°½% ýÖíKîóLîØ-Ë÷§Ðk )+ašÔP\&÷ßö/.4Ø$){–º+yêí)ÒÈ@ uÓP_‰F†ºh|¬zºJ”U€µyÅã5xÜz¶=:‰:–¹˜[þò/¿oÖ+´s×V³1I欎R¹R4k¥‡éøñSôܳϛgpÓ¬ë®ÐC=@Ý]eîÿ ®¿võ’Y‹maÀ½ÚÁ\IÚ9\ûQHÚ§e¼HC‚>ÿì³/Ñ»ÇNÐö­h©Ú -›×›k|fû(r´uëf3— ÐóÏ¿Ä!â¾ú_…ÔÕ3hÆÎ£_N›5d…A¹� ‹g~üø síkô£NÑÆMëxÍ8±nŒuäB¡‡Ë77?ËíU0ëÂl&×ÂJQ,dé½FÝ<Lï»Lo¾s‰ŽºF—®Î0ЗìXk~­´iÿÒkõ9E ¶ß1c¯ kŒ2⃶Ÿ7sÅôôMn+ŒÌCÒ³Š~géÎWuâ»ÏDöy“®ó”¢cI›M+«O‚ÃwìxAëù8Ÿ0bëÐë›ÍÐ9‡žqA)qÓ2× íw‡2Jò¦‚€�¶H‚&´|QùÇ\û‘† NžcðC#ŒÁ>E,[xǺï eÃÔ±Q1ï¼B¾¸"Tš>ëd;ºí.cŸRI…(ÝžJ*;ù¨Žù0$g]žÎ]©|´å¾X¬æMŠ«¬´ÌþnQ<h%¢9é¨vclªQÃ]Œ»;9Dñ ÅýJ¥?©¼¸uH^ûANPœÓn;ëNow—8‰®"©×~Žë;i§¤"¹–ëÝ<’ÇÚ=¿»M_  Èèî,íK®Â˜4¾µ«;€„Ò5sظ"ù‘{V¦¥ý×M·ÓwR™M–ïv¿ÛÕ§Ýñ;=–|~k9ÿa5~>üðCôÀýìÈ �J>Œ_ø@4¼Æ*À j°PªLe­€R!p^ãÀ)E' <j°‰wÞÙÉãÒ×Î�RÀø2jxä«:~9Âlp´" ´ó¥K—ø€¸Ô   Ô†&¥W`òŠâA›4P.Ü(ŽëÎŽi¨@¹pŸÆCE}P5h©ÑDë:(°C ßh'´)ê«m¤!CЖp¸âœ\ÚÅÒK%•;ô«ï|ç;ôꫯÖËËUîs¿ò+_gÇÄ–-[èûßÿ¾1¬ÿ}ùË_¦ƒ2 Œ�,(¸èNý „õ¯þkèËÏ<óI£òŸÿóÑ¿ù7ÿ6C2Ãc`Ä¿øúö·¿Cø‡ÿ™ç ¬ÀÀÝ“Ø}§ë$€²~õW•~ÿ÷ŸËÿ÷ÿþߣüÿ1}ó›ß¤÷ï~7@pÕIP·¯ý—9¯ÿøÿ· æ ´BáüW¾òúßùú_ÿ×ÍsꤱÌU’k7²;1}þ󟣿ú«¿¤ßýÝßåz õý}·O¥“ˆÇ"‚XŒödiã`–Ž_»K€…²Ãþ¾<S£C§èÁM¦eîn²P é;¯MqÏ5>=Ú·¾Hï§èú ”çpÎ)sŒ2 JO:ï€ ¼Ó›'BâX pB±ï>tÚB|ÏõgÖ2¹ !*œž ¦ÀÞq8y¼¦eœ°Îp„¡º„(3ŽppYXö4UÈÎTqyÌÁŽ¥°Á,pl`­ðÄÌ`ùÐgŽ hB�€@¸ãDô¦¯Q¥A¿J=Áõ.ÏP¸Ј/@³Y³¦Éè|yf)O7(Ç� ˜å]Ö²½É»Íeg5œÊ-“ÇMä5 q±ùdrvfÂ94›QHÈ0€ƒ[HÀÖž9 sVSâH²# ŒdÙ'àC]ëSäH—eqé*:‡‹Ó»UßP‡‘Æüm4 f>^Š€°ÅbÈÇUVÐ$ã„ûŒuAº6wC‹´ujªŽÓ´� Eëõ’.ÏÎ:aàÈå²3GÈíÁÎ5 `ˆ6_„d Ubˆ¤º;BQ£Rîaçá¼qðÎÍͲó�|”™}VÒÛF2ü€û;n?oEù\»ƒþFZ1�?XáôÓ:h¶ê¨žs¼'Åþ¡ù5[6¼D` _Ã#(FêªíC5»F 2œ“¥R‚CÙîTÏdZC§&Ù7<}Ån–aE¬C'ëê:ÉUZ.2Öƒ¦0îðŽw_6ÊXìWb± ¾€Ãà¶­”ó4ØWf�Å@_Å|JÔ×S¢áŠÑ9º¨»R Ýœã€ì4´'—›„Õ‡ç[ÎÅ¥*MOÍš5I£„]+Ëã™Ëb®;y⌄Ø8u†zh/M®Ÿà5˜oûëüü¢9þ =ÿó—éÚõ›ÔÕÝkÖg²‚:ê8éé*Dú\;qí0É>W­…têô)£3õÒ�¹å-(ŠC6yt`ÿ^Ón zñå×èÔ™‹ôЃ{ÌZm«iŸ1òL›Ý¼5G·¦æirÝz³~•’gÎ]6åºÀzÞÈÈ =þøƒ\?ä‡q\©t3kÅØØ°Y»¦Ÿýì%³>GO<ñ(mß¾Ý8Ë,*W¯]¥z­ÁaQ&×MÐèØ p,¶¯TÊzô¡Í´kÇ8}Þ<rÑ|.Еës+ì†Éþõ'«'md+ÂUp¬G,6<&Ba‚©Õ0o.’²Ã tý£¦®¥–gÑιÒJ;Òpm9:gµ³Å$ÓtmFä\„òv¯Ï˜O£Ùtæ[ [è·äßÎÞ&yÈ|…Àz²®Xæ9sqqAX-°Uj QÜ’®MRßš÷g¬ì—ÜÆmM¡ ûшž‰Ó´ÍØ‚÷Êíí’¾gSaûHî|–J*úNK²m¥’J*÷¯| A¶r§’ÊGU>6oÜ$*ÒnQÞÉ®"Ç-Eaغk&yŸë̆¨2à.€›í-±AvGÉBZûî¢]I핉d}ÝïJ:9žqŒQó@ÔÇ%>¨ ŒDz½îOTVÜ©B±šs¼Óõk¹¦]šÊ½–:¸`d>I°„Ûã¿âz=~»r'C‚ÄÆ.jÙÉãRÉêï¸.í@I<¤dÕ“!GôûvÏ»]kù;yn-ý)™×GaQ€²ö÷÷Ñ'?ñ4ݼy“žk065œ‘Pü1Nñ Žén �Ô(®ãç±»C\£»—À¡4ý䥬ø(¨�eCê¬DØ]¯sv)sÅÓO?M›6mâþƒÒG>—/_ŽŒÈlpjb'<@ º{e(Bë{eº1ìàÊÊ€¡F݃|Q.Ô×+0õÁye¾Ðö„S�Ç4ˆ2Xข[О8¦mŠr%ÇO*©Ülܸ‘¾ñoDl)x ¿‚Iaûö<¯ƒµá¿ùoþ¡56féÀýl€=wî<È÷îÝkÆÒˆ{͸¨00óÉjò_ÿ×—ç ÉSâÊŽŽ1CM¥R¦Ç{ŒËqéÒEÞa àÆèððß³oß^3v»yücL`LîÙ³—ã õÒ/ÿò×耴±Ëðüƒßä:b>þ¸¤yFY¡ ŽM_þò—$®± „1 Ö‹ôþ!<y’óÃ<£:ò€À¡ðßþ·ÿSÞË\† 62p@00\hyÐ~*ÿýÿç6CÝ}ôn3�ÃPÐZc×ä† RÅòc(#ÝÚ7‘¥O{4·ü^æxñ¬Áµ¿PkÒ+'çè“»»èÀd™îF~òÎ,½{e™‹ÛFó´o]Q ÌÄpïI¨u-©,JOÎïH31n»}K«í�<ð´Áåòƒ ƒìæoj6BoÜ;dBó1—2�Â8æ(@žowÆKt8L<€AÀl ž€9‚Õ¹|9Þ­Œ{›�`MìØ'Ø–c'8€Ì¯©'á "u³žhÖ$´‰qVŒ³x¼9GÃÍE*Ö‘õ€UÃd\5×Ï–ûi®ÐM—Ë´P­Óé¬q4+Ø&ÍaQ%ð2ì2 GÏÑ L»ì,m„R_€AÀº‘ç¹&‡*‡W‘',v?Ñ6Ù¬;íCÞ;Ì¡RäÚŒq[ªøP� À„®‘½Èñ,Lû·®écG·²]ˆžë�y@gļ)aë$lˆ†ojÕUb}G™Äb½BuœfKÔü�ŠÁ.c0R€Úw‡ÛòIó¸„MÑM ®Ðµš„© WÄå§;· ->ÚO#!4A‹ÃÌ]([â…l™ûf6»ÄÎS´…�~K‘³ACaR'‹Ç›Ë,‚!t¬öœÛ/âô\´ÙÆì:þÔ©ëýòÌØ® =©F×¤ëÆ™]å6¡ÜÇXèáq‰ópž¡¤‰@ªB °hl8ºdÒÑí‚A v‡ÞÊÝún}ÝvÖÜÿ�^ð1çj:⑆gÏIsf>åsê¦Í“}48ÜCÃýeêï1Ÿþ õvÁ œãqÁ€ߎ-OgcÕÿCÎKÛSB yâ¼�ÏF±Ó§ÏÒ›‡Oо½[iÓÆ Cæ$ È+ïþ¯1xâÐ+¯Óõk7èÀ»i˜·2ÂjÓ@(3Ï>ñÄtkú—bvæ3ˆõu÷rXÓ²;b5LJRÇdz…SãçÌÙëôí¿ú>¯;wíÚA7­7eÍS.Ÿ¡œ™g÷íÝÁ †ùÅýä'?¡3fNhþš„€4×N®¥¿÷wÿ³¿  ¯š5é™3g8<&úÍöí[LC¼vÓC¥«L›·lä~5;³H‡¿Åsa½P©Üm¾—©¯¿›×r˜Ñ¿\`mÒÖÓ])Ѓ{'iËÆ!zhßz:|ô"zã]¾6õ÷zSئ’è«.øIû ê¦�¬©_Çvy˜;eLIHŠZì3 ŠÓ I½;ÿ¬´wø- «d’€÷Y·Œ¼l›e,£” 2 ýÖð·l<. Š ŠÒ¹GìE~σú÷œé3KËK<o–¡Ã'@Z—e$ª/§ëÉ;Ðv'¼åYÔ"O5äÚÀÁ\6kY0¬ C…µ_]…Rñ–vuŸU²|©|¼EÇ Ö«m,H%•TRùE Ö%Ö/•TîùØ�,’Æ HÒ)íJ§A®;ˆbóBè^¯ùÈÅñâF=nÏAMÎ eÍ»­‚˜*ÂÆGVä)Šc©‹j×`‘4Ü®N÷J\¸{L• ‰Ê Ø>5€At—|RoçÈn—çZËÚN:¥µ–|’i&û[òx”“<Ñ'vèŸî=®rÙªh¹  rŽ©¡oe\å7Y.ý[i9NeØ™™"ùi9oi>“Êw²<ÉrÝçå µ“Ni%µ<Ï0\A´Ú®~ؤÏÑÆé$úv� Œ 8g¡[q M�'0^•²@°9(È�‚ãj` Ø±q©»›!˜Aóá]JÆß(òƒ`± v=û쳜'@Ê’²¡ì¸GA0*c§= ˆpꢌ�]¼ýöÛ|®Ç\g(îSêi5N¡L(eEÞªœ¢>¸ù¢m�š@š¨®Áqm7¤‡ö@H|”åCÁ ÐP eðp ]¨Žã<òJ%•÷"�ð|ö³Ÿ]õšîî.úô§?Ýr   |T~é—¾ý>xðaº<õÔ“«ž‡ó  |Ú ú?Æ=>IÁx ©�…@0-}ë[ßâP_ûÚ/ñî°^xžAd““ŸâkôZW0†:Á§ ‡~Ø|Úžn)Ê×¾öµè7æ ðGeóæÍ”Ê}.Öý¶’ÏyôІm?ž¡WÏ5è= ûwd·7Àùò-©di¬?GɼuvþãsרfÖyãCùêƒÆAVòí*t2»÷âîT•]y~¿Â1¶°Ð b©B*ðyò^ËbwxÆ8fr™x „=¢Y'/¨Y–Š€‹Ž¥™§£„ÍšúGÐh0�"°z`î¾';eLds@Ž;¤š¡Ä‡2ægóÒì`²�ç…¹‡©Úè@gÔøÂz q¾”ês´yi–z³U^Z6“JºMy—¼,Ý¢])öÑR¶@5S¸š_ 9Ï|gK ¤¨å—iyižhqž ¦ŒÅ²€a9< 3 ÒWÊu/àP$8Þ Ìú#¬KØfC]òª{6Cæ0—p Y¯…™�×4qyNÒžÐe0#§%±Wø¹øÌ¸ LÒw¸Xž<7Õý4qðÛÞ9ÚGÏ!žÇàPçÈÊr¢L@®×‚k’¶ p—ÝS✯I Õq–`žî¾çcÙ@A¬KI›‰n®ÎöXÖêîâ´ÛWþŽËè�áGH¤S«Õ¹|„€ÝC-ºººW�#ˆ’»Ýcð…‚œl‘Ôëô^}Nú|Ԭתþ£ýEÓÓç¡ãÛ“­àöùâg ´�a ª tѲ ßp¨<èýKÜ÷ °ÎÞ¬è'æ9±¹¼¼@Ó37ÍüZ4ïÜ.vªºúµ»û?éHnuÖÚ~¨”ZÙ=\g«êåÚ%d És•¨8<Ç{€+yê/Ó†ñ>Ú¸®F+Ôß[¦Þ¢צŽù¬Ô× -…”ˆ¿ŽÖãÙ±âÙ÷‹gÿÙFµö˜gÉU:þýÅ_|Ÿfç9äÞ=[hËæIÖ½T¿‡nßÛW¡]»·rh¸³g/R_ïÓêââ2™b)K_ûÄ—„Å¥�†ãÄ6ëq çÌ·†?i¯»ÇÌ.!jô7ßÿ?w™nÞ˜¦«WoÐäÉqÚºu“ÑáF©`„nݼÅý!BNžœ¤Z½A§N§›7gX'`âñG á¡þhì@ŸCˆ¤öÑ¥KWè7ŽÐ~ð,íß¿“ÓHnqÁ§K/³Þ¹~Ã:£O^£x€rfþyãõÃfy“¶ïØLŸøÄã44<ÀánÑï�²eP޳)…_Uv³Kow‰C‡lÞ0H훤WŸ£¦é¹šÓϽ–íSî¦ÕYÑF.0 `8¬1•1ìI!¹ìÍhÌ`ú1ÅÌŸÊ¢¨ãÀµû¸}Þ-‡çµnô‰aZŸs«ÊB×rû4ƒ¶s–CíašN²Ïè<éŽE÷Eä%ƹ„lª˜ysÉruɆ:]`–eÌ’0–¹) [Þ%Q{°Vì"ø(Û¥–éçsÊ•³Â°çÙy@êä'À#I°HÒæ²ÒêñæŠö¦®T>â‚› ð1`Œcl§ÎËTRIåÃ(¢UÛú»RIå£(÷5À¢ÕˆÒÞ™œ\ĺ‹ÜNi¹«²×E~¸Òi„ív¤´"¼Õ°)ž$„nŽ"'.°õ<î…R¥­“–WÓ9ú ÎD¥GY¡ÈŨ±aJ“ú;ÙÞ*Ég†w£MxÔnïôì;K^Ó.­vÀ =ývεCâë¹NàWV‘6¶q£3XƒüÖ¼ÃÎ`ר§Ï&6ZÐB|Èj@‹–z…íÛk5iצkùÝ.;ɯSÞíïƒëÝõË÷Wžzú)Þ‘ … @üÖ¢x†8ŽÕ�¨òÃv€cÜPà‚ð·”Ù 815MôK€ `èb££¥ÊÄ50î¹;LÀØ�c D�eàøË/¿ÌÀ‡/~ñ‹\f\‡kp ,ÚÿðA}*�‚áâ˜YàòãÐæ"üF™`PÄõÈKC˜Àø†ã˜G†4Ô¸­ï ”Ì8¦€ ” ¬:Оh+´Æ WÃÒ�³êŠûp-@nz¸÷¥Êq*©¬]BëLÝ»w:ô*ýÿÃÿ‡ÇöÀ@?}úÓŸ¡G9H©¤ò /TOmñé »rta* ks½ɰÓͧec°øëצ¨bÂßÿÌ ÷®mípÅ¿ú«KtâÚÆðô®>zfWÅFÜx×4­þXïfù]È CªGÈ<ï6-óNí¢Œ—60u3Û�v™ÇîeG,v† ãpy9ªê€0wÊ0Ñ”ç3ÎÎ,v”#½Ð†ràõmA¬—øÌíÏLê$€‡IŽ+øŒ«`ÎÀNð’ø@ÃoxémlÎÑDs™rÍe5ê2Ù^/Uè’ßE' =ä Ô4Ηå0CÕÀ”™×î²»®àB&O©TÁ8-=ãà¬gÐ2ï@®g³y>Æñæ Ï7õGèS˜,êè›r¡|<'*EÀ×#t�v7x-ßF‡fÓyžGu®†hçtÈýAu0 ˆ¾áYŸr`A²›u_œK¢;(­z†õƒ‹>à…¥`§Œöh’†ˆ@zêHTp0ò+’ê¹îÜ¥°‡#T`ÉÛìÎåIœr¢ŸŠîEöšV‡ž~\Éu’*�Aü)p‚Ëg7t Œrp(´þqZx~ÜŽ¦Ÿ0€cXW¢ƒPì¹Öç9®—°Y,y•K½+®óV °pÏiºNÔ,ш@Ãz_lÑàé‚¡Ø4Ä4y7¹‚e\0€Ý :¦(œˆoûr( "R§¤o£eª”º©Qî¡Å¥yv"×f ˆYíª7¸N]·Ï¸veÑKÖGë¬zûle£Mìð”è wÑæu½´u㎠rèîrÞ<§ó ¾ñHPÊL!NiYd„Çô­Y'É2h©~Þ ‡Ž�¸{™¾óÝŸÒo¾ÍºŽÞoÞ¼AÛ¶n6m³!KˆC_  ;vl£³gÏZÛOŒ1`l¬È,pêŽ ñn|±i qðKÜ&)+ž1ô6èjj&i‹ ¿ŒÑË—®ÓÜì¢é!³e,/Õ8íjµA.\§¥e£_™gºiã$ýö?ûï¨nSÓ³tôØIf"»rå3¦íضÁ´³�mF'dÓ�žÌ©SEúÙÏŽñsöýݼ±ÀÀž¢¹vdd”°O>ù¨ÑaüpÇ /¼LGß9FS·æŒ®9A?²Jel((ÒB5 é›—¸/£™•1Ó’¨«R =;&hãä=öàfzþµóô¡³¬k¿sm)ʉ¹Nj÷A¿Ö0DqÖ1#ÿäÝ&sWÖ<«;þ«åÅhóô\ ‘R‰6#¸ý> jp¤KçK½Δh,Y 7=7}'ulé;ó¤^¯s¯Žk³Ô!É´ÚΘÁʶs¹dæŒr…YS�Nã0Æs³fî˜çv(Wº˜©ù+xƒuyóLêµjK($< |ðaV§LÂTAqXŸ„ݹӷ_ܹ¦cˆ2ç¤’ŠŒLdƒwY·RI%•T> 0›T­eŽºöîÕüyï罩¤¹/î"X%ù»“£º“S4 [î>É´ÐÎqAÉ´ôzw׊›†‹ÞöHC<xv7P\†âAÖÛE•Y5’ˆB 4•0r¦×ôðtWSB–r‹AL˦ÆU�Õ™ˆo y"†)L#ê~ë®v·½ÜvsŸIòØÚ¥5,Åji$Ÿãª©†Ãθ״;îžk—ž+­}P ”¾Ÿ‰ ”²Èoéc‚ŸbP„owáJp„*­aâœ8Èñ|c`Eò£i¬vÜ­c'¥²][t£k‘µÜ»Ú5팎®HùèC#ZN(ç~ˆÆŒC_A0ª\¸pÁ†ê�€²*�`€ŽÁ°v~�žP£ •¸FA0"a—<@�0¨Âôq�0VÀऌ 0BàCºPœÀ×€y@Œ¯|å+â�yªå÷h^8ƒšæƒëq?ðÀ ò€ñäüùó „À÷«¯¾±Q ,`¶P0Ž!/ ?â¥Q.ä‡z#¨ ¾Hy õ<×FE×À €®Ó¶Ó!h+ ©‚cn$iN%•TÚ‹NÍ[Ãà·ûŸñ¸RÆ¥ÖSIå/ùÛ‹Žåͺû«vÓŹýÙkƉR³ÛYÝèÞ!ÝÀI>Dü ãtÌ0sÁ’1üÿé¡)º8Û¤ü…1õ‘ÔaPY4yþøí)ú?¹F'¯-Ó²"û×é_|e”zò6„n™~ŸÄ]_©ƒFu,è&ÅB-.Ü¢¥…YŽ{^2ŽÄ†Ud'M�<7ã`?Ï¡ySæ:S;ç›°‚Q}½&�Ìf~0½ÐSp<¢sxLÃ_ëìÔ†ãÍ7Ž¡¦ùh›óo„Ñ€Þdœ)AÃ8{ê³´oá*mÍ,Óèò ÕMþ98ó%º˜é¢wŠC4“뢜Y3ÔL™kÆiØðŒc2PØ ÍºŽ>8«IždpV)d–‰€óË”³¯:Ï;õ——#¯ÒOÙRƒC.dd „e±B²–iZ@%ÌÂÁkw£óQžÂŒe–ptÕ÷T—c‡_(¡�Ná0)žÌ£ÌÚÆf@Bêïüm ó€o>º¢]»¦gp&ë½nœzߨ�}'Ÿ+›{êœ6œvØ<==eŽÂ8¦ú(v&×M; €è¼ºöU½·ÕÉ;cØoq°©¨3Tûª:]šM[û8Œ\‡“‚–†Å@ ÷0¨l(�#àù™ö'¶€ToÎf‹Þ Tª˜5ë-šžš7ãeÁ´Gi2?ßÈ  „F6Ðh=´ý]fL|t‡v¬{JÈÝY/ú *?á `…ê²®óóPÛ€ê‘ÂXSŒÖùÀ3UÒa‹ë5Œªê½h é_ÒGØ9j>pÖOOÝ [7ùywwõÊFŒŽÚÑ–L¡yjÿÖcãõa(¦‡œqö6lßcn+ä3ÔÛ•¡É±^Ú²q˜&F»hý䨩Ÿg>*#|;ôã:¹ÿ|qH¸<€à13ЗèÙç^¡ý{·Óø¸Ññ¨JµeìÊÇœ˜2ç)_ÈS­Úà°JŸþäÃÔSÉÒK/¿M3F·iÖêt½»`ÊÛCÅRR ÷O] ÌO?ýë41>Ä:QÁ¤U�PÅ‚ÌøYå,C…u áF†Ë–å~²]â~ÿ¹;wo¦‡ÞOCCýòÅŽGÔ0cæªzs‘áe÷ï~‰Þ>r‚^|ñ°)Ë<ÏÑW¯Ý¤EÓfg¦^¸‰}üèc ‡iÓ¾YÚâOÐÞÛè䉳ô_þä/ègÏ=OW.]¥G{˜º{ia~™Ž?etÞyóÈÓÄØ8ÍÍÌÑé“g¸_Ϙ´ÁP± Œr‰–—`;€.vîÜD6®££GŽÑýÑŸštÞeVO|âi^b6‹©ièÒ5np{U*Ý$ªÌü¬Ï@‹Ržvn¥ëFè“m§>÷½øÚi“F- ©‹ç€q ãº-úµnJÒ±+cÁlsʤ#s‰OÊÃsbSÆrÉÌ eóÁ=“Àìô,ÍÏÌó‚’©{& odç;ksôø=cçÊfYŒØw† ˜%(ŒlNºH‰"ÚeÁˆÆ»ßºyH™’áh]p†¶‡~t=áÚS³žßb+æù$+× %žæœ1mqëÖŠÐÊì)�ÔGæ!ÞhR,sµ0èµÌW*’—0 è»Â¥F×û\FŽVàµØ˜ZÀv޽+“h*÷…¸ë }§2àljÆØ¶†Ó¾‘J*©|¨l|�ù*¡n¾Vê^Èø QàŠ»ñm}@n½>N •û`‘ì¤wâ”íä8mçÖEpÒì.Ž]„qÒ±®ß.R½“ÓveùZ•îX_ë¼3_• ·<î¦è1Ef+Cw¸$©4Û!ÚqF,è\ªAeÕ€!KË ÷»íçs‘Ø�0wëpïzàsm®í”G§rµK{µ<!.ŠÝPèµI0N¬|YE¶ h³(¨h»&•¾d~ ¬Ðò¸»‰Ä(·’n·];¸ m;�EòÚÕηk³ä¹µÞ÷^å£örÐçºgÏ((pBÊš� ‚^« øÆ| Ô¡˜pö=̆€0Î$Àß+ƒúò�È�!D�¾Pƒ³‚`ô„èNœŸþô§túôiÎû©§žâ~ˆTÊ¢k�zpÃphØä¥@ 5LàÊ òCÙP”éèÑ£\fm€:P0T`çÚ` \û¿²Uhûéî?|p€ZÜrx¢áG (ã©S§¸Q&” iáZ{(‹Ò¿u9ÕŒSIåNDAR©¤òáŠÆ õúD™øÛ‡ƒŒ}žÁ|¹GéäMÿ_¬…ôƒ#3ô“w¦è3{{èsöÓÁ-eê*ŠÃæâÍ:½x|žþêÐ zçÒ’ñ=‡Ì4°o]‘þ¿jÖ Ý·˜î×=—v:•®I ö²å*]fÒlÏ•ŒSì 8IUã˜çI£Ye@�KØIÚ „e G8Œð\™€CwPÆc¶ €ûE 3pZLJqlaëq³nîÉš{à ;ßülAam&oÑžÚ4m1Ÿ¢q¨Õ³Æ¡iî9žï¦gsct¢<BõBYÀÈ·)¬>ƒÚM\>ãÀ2©&³¥!iõ;©<0K€ÅÂ8İ[þØBÎ8As`-0u¯eÍZb–g¯˜õy¯„O0åË…`â0kºº Ó.q8(ÁàqˆÓdAw3£êÍ:ƒ/ØÔÇxÆê‰Y^‹@רóu.#†ÂÈIÍôÊqÔ’eDzÕ;«KѦ�×C\ýÒ 3ªÖ–ÅÁË€À´×Ìlfç¦)œÕûcçX ùïðWýT[1S¤ßfDÁ =¶èbîÆMÏ¥ëœ×Ê Ç8ÍÆEùDvƒ0ŒB hß×|T—I†BQ ‚¦…Ýö8633eÖÊÓ¦}̳—Û�@ t@yÒï�ãÇy6µ(½öznÈý" …UĺJY…h;â8+±Ž…m ^¯FuU† Ý}/ ‘|Äð¦ÂÏ –™Dê-úi;ýZA*dFäàà0§‹58×¥R™z{ú8oÌ ûÜÀCΜäY݌Òb÷¦_�¬ÐÄØP7íÞ6D{·ÓĸY×WŠ”É  ÷‘ŒÖ‹á¥Îв£>=}=b€–¹¥úßü½ñÆazñ¥Wè‰G÷ÑøÄ(ëDʰ7;·@ÕS\ÿþžnš\7ACƒôðCûèõ7ŽÒÙs×L?¬Èu^¦ÂŒxþår…ÿ.©"Ó†¾Ù œçä1�à™ÞÞnÊ|êíë⺣¶°°Hï¼ó.>sÊèZïЧ>õIZ79nô¤>s®1â¹ ü#ãÔgÊzàÁ]ôÒ‹oСCoÓë·LŸö¸=®^›¢«WnÐÃ÷ÑÎ][¨T)ѲyÅ‚é{¦_–K¢ƒ>u–uJ´ @zÀacúú»èóŸÿýú¯ÿJÄqíÚ-úÉŸ5ù½J¯¿v˜>÷ùOÓð6ÌÓØØùæ]-kžkÿ@/½ùæ›æ·ÇúÆWÆ´Ó£`™®îa¥!aè$h €Rú–H©àÑö }´éÿð úÒ§÷ÐþésôÝ2ó@–½½ý+ú¹;>Ýq sûþT•çÁ|Žû4߯á/ÎehpˆÇ•°š\§Ìt†×ÐÐOÕY«a|øÆó³Îm !”dò,:€Á[–BÞÅÍhNÔ5€°O8‚p¥5N×À Qza+ÛŒ Ócf£½mÎ;ô?Ü3—™c°êæºY }í’Íhè{¯}7¹ïÍCa:W'Ã2É ZÞ!nùÜçìnîӺꦨlnµ™%•‹¸ï@µõ˜ù?•TRIåà þšÝÜÑï…«åný5¿(?Ïý>h·~ÑãÉc÷«¬µ†ÞÏykøö:ü­ßùÖÆ’È$>8ë¹ÿÿøþ¿Ž¦;9ñ6äv¿!íþît]Œ¤ŽºnÉ<T’4pí:ÞÛN‘Ðo•Žé:«;‰k¸RQŽ‘íÖ]׸å:Üݾ* z”EثҔ¤UÕtİ’mI[ÓIÊZ­UVfns~­eI>c=—¥è·Æet¯ÑöuÛL?zNc»ô­íÚÛEÄkùäZAÄ»†ÍȨ­F$‡©B”¹XÉv7I`…æÓ©_&ß8Ñ©o¯–ÆjׯåÚN÷·›;î4½â%#Àƒ ‰‰q4(»‚–àegÐ\ñޏlÄ.¶ CX e­Ð0ŠaîU5ÎMLLDFäÃ� BÇt'9Òx†!0J?~œA!>ú(ç¹Ê!òA:ÚaÐÕ¬REkG>`˜ÀÂMº›QÃn \(‹ ô€MÉ�8¢€܃P"Û·ogÃ¥RPk¹î… NÈGÁ ¸éàƒs¸ù •ó<·›Æ†à>Ô õvw¾üÜ_R¥T`£ ŒSy¦“–]•â@ð"£¼;Ö“;ä> ›JÚÍOzÈ ›-0ùýr£.`ÆéÙÚ¾ïSçH×)ƒñ¶sçvJ%•Tî#aã<þп~‘þÓ‹Ë4_mòÜÞ%{QجçŲD# d·µ€dÍ{:v:võà&v›÷É'÷ôÓ?ýÒ0 w;ü»xmÀ±‹ÝŸ®µÝûïÑ?ýö³ôûôƒº»~Íúˆ‡.—ÅÅyªÎ/ à bÞ•a*šÍdgy³ÊÎf²0ƒ¢AOhëÁ�3Ϋ&täaæÖZ¸Ì »€á�Ã_�Ä‚¼ÚÌ;{¸:O[› 4.·mÍ\ãÓL¦Hç½n:\ê§é®AãˆÍ[�EƒêV‚@ö÷ÂŒ“õFçyß8]ØÁ‹q¸c<‰“%õ=*ÀNùe®gˆoê&‹ó3T]Z&ø¥Ê}½T ‹ :kÇ ~ èeíb’¾Ö¨ÂCؾç1ëïÄ„9EÛ>©› †G˜ó8 € íÝèXsÄ î ï,W§¸ê“¢k3ªHÚA‹ÎQ]ÃÝŒüÝ �>0Sbm™×Ta؈ʩý§¿oج»­þÚ´;æÝÌÙ˜%Á¥ßWIn&@V]XßÍÑ0ñb¦—Õ±](Žöà…ÑØP½‹ufŠÙðrùl‹ÎînŒpLj>#×a‡óóó³Úe¸¤··5RþŸ°AP&Ìð8ŠØ'„Ð$ÝÜ¡ —:–A³Ö¡Ž_™ röƒ\\Ð…V\à‹ÛnÚôZýí>Ç¤Ž–ËÆI°î@ý�kôr¹‹ÙU4¿ýÏA7{„2Œ1Ž …‡ôèî+ÑÎôkÛm^×G½Ý�"ˆy   Ï2<„^’é4ä  à ä=æÝwÑ–-›Ã¾OÖý…L4&0Ÿ\¸p‘þ_ÿòÿË;‡‡úhÏ®Í €þ%¬/âÌE»Œöp ¥ÿh?hp¿Êpx<s|»›k¼PŸƒØ lMäšquíê}ûÛÍ „ƒ Ñ±až ¼È¤—á¹í§?ý9ýÎÿòo8üÆŽÛiÇÎmT®”y.°§ÏÌ_[·m‰tO„»áÐ ËKôê¡Ãô³ç^3:ÚUË]•n£O©Ò§×Ñã=J6nâgtþÜ9£ÇÝ2i6M¾K—.]ä<ñÜ/]¼aòÞjÊù�O ›ô—¢…BÉÜБ·ß¥ßû½ÿÀ,!»ví 'ŸzŒ ¨36ÌÍÍrZ?ü0÷©Ã‡ß¤·ß>F3Óó¦L]ôÉgž¤ývrˆ ?bçÉDæN°‡ÖíxóIÃNá]ef :vò<ýé_½Bg/ KÑrµ¶¢Ÿð8‰ÚXúw»P:f’v© µ2þº¬UÓÞ·¦nñ¼Š¶ÁóÐÍ˜Ï ¾ˆX$�&qÒÓüyN Z£Ì/™Ì Pîl­vQ\ s¦J²íXù¼£§é;…çr®ó‡a²çPo¤=çÀžÕ‹÷l¡HD+Ù*Ć;A |p¯ÑùÒÝÐýæŠw…ŽCwÌjÙµ}u>ËÊÿñ+›hxД¯T`@>²C8Ób/ˆíˆúÚ Þ/ù ìI»-¾1†ñ쇆Ó³©¤’Ê/\0Ça5;;ÏkMè$I°ƒÖ8˜Ë†‡‡è£*íæîÛœœôKß«ônç'3ë“§HLS³ö»™ø„ö;p>¡óüP‡¿WûNþ^QºÜW I廓ÓÕ½.i8YË=îo•vNõä‚>©Ø¸ÒnqÓ^íÞ;]Œkû¸ñCëu‰u¬ÆuF¶kWw§‘¦ë~Cp/vnšÉëÔ¨„´]# çE…®h hÿÜ:I§öëtï cX›óÉsÉcÉçæ*Dîy^\·)WÛ¼-""Ù®¢ÙŽ Ã-£{Oò±ˆðÎøy¹Ê¯ìZ ÚÞï~’õh§`¸Ç;) «ý}§×¹ÒîvJû^ŽÃJÀܰ{×NÚ¿;îN�KƒŽKœÇ¿áÔÇ® üÖgFÃðh?ÓØ¯0>`ì(€ôÀò�Ðv!!mTqçaœ@:ëÖ­cCÒ€a À äF°\ìÛ·7ÒÖ°ø˜÷hY`€D^ø[iSñ7JOÁ(ãnCóÒþ‡ÝMj\Á÷–-[hÓ¦Mœ€�k -äûÜsÏq»Âp‰t5þ·2v�<þ¡À Ô÷*˜í Î< #¢uб‰vB9Õ£ TRI%•TîCa {è<Y¦×çèO_­Ò›ê´°\§å†Y£7­o|­Iç=<Øì@E(¸íAãŠ. ¶Š¬1¨ç³uå}Ú6R¤/îï§Ïîí¦îÒ½¡æ¼I:GôX´CŸj¨;…Šyã8èËQuÑ8<槨ÒeÖå’€LC…q�Uƒ†ñõ4Ùq•ÏîPm°Ó¬‘…# ÌâêÌ™ÿùÆIYf¤A]Ëó´½:C½æïî`p5hÖç3%z3?@çòý4_ê7G³T D‘á]ÁËÔ€ãÊ“¶n"/'�ÔÇ8ü¨ =G: \“ÉçéØÚPµjÀ(SZf¾ÈxPÛêÄÔÀQà/LZùr;{æM{̧X³ØKå®2ïJfýΤZx¿*!=_ú€oúœX™0#ì%¦uЈÂ@| ÂñTÿ PÀ ¦Œ>˜6¼¬ÕóÔ±/L*ØÍí:˜DïùÃ`^ "p½<g±ŸÄëòØ‘§3Ž«s<Þñ,ÀìôF`‡v£6Åe³æ§ù…¾ÌYfjÈÄ“ ‰¤^ßÎq¯`X×±¯kUm/“$u½b Œ õš©‹oCƒøÔ²[ïÕ´ÝØ.˜Ã+¢ÏëŽuŠÖšÂî6kœ¦uêéîc`„”)»¢ÎøWO=bÑzÀ *�Š&ƒ)$Œ>!@aÅ�@Á�TðsòZwpëx×Ýݺ^Öþ‚k“öWqCYºà˜d¢œìÔ4ݪ««; ‰8gŒ»÷‡8B9ˆÍCv¤ó·© úSÁ|º*Fg*æib´›ö省ú¨»·‹Á*Ã:)-ãE¨LBÜïCÇ®]y$¬ú9ól/\¼Löçß§þnzâñ‡iýúIêé3Žî®Š}¾àÉÇ÷Óþão›ùb™Àü0 f˜À k#ÏòÚÕ[ô¹Ï (}…Demcûáp¯s¢Ïä&Q£™ÙÖ—~›NŸ>KOâqšœ§®î•K½najú·öO�å�ÞŸž]¦M'iïÞ­æž ÓÖf¾H 5år/•j%zâ‰Giû¶-ôܳ¯Ð¡C‡tbn¤‚Iç*Ž^dðž7Œð�{àó¸i»¼ygÌš2^¿~ƒ~òãŸÓ»ÇŽÒÉSÇiÇŽm´yË&£ öpý††FÍusÜfŸüäÓôçþ—4;gÊyþ {÷”Ñÿºhý†u z)•>*d¦„ ùÊW¿B¯zƒ^zé5úឣ·Þ|—>º¶l[ožúJžß_˜û*�C… 6#ý­!€8„:Ù³míø­ tâÔúîŽÒÑWi©Ú`ðæßf£¹Ânæ>·¤È,Et.ƒtKw>„ ßcóÆ¤ËØ(`‹n×b ¸L¢¯Jºïî¸lµzd‘„ȇµH+H ë¿Åfén�Ò>ëE]´Pâ¶AÒÖkïàãËÕ%Ó/—ãr",‰/ÌåRÙ_dî# t{èýS·¦MþMÖë»À¤•C˜ºŒB®Í-¶·Ö£¹;i{“y]@‹ZWmGwc_ÒŽ§ö‚‰*•{,nŸpÇ?úú�gX{U*åä“J*©¤òA‰¾ËnÞ¼ÅìP¹\!bÐk· û~”÷»nkñk­åºµúÛ’¢ë ýíÞ·Ú½÷Ó3ÿX„YM\Tôí® NíNNaw!¯‹Þv&™V|ÿEþÑoº}V·Lî¢^weÇ ülÇØ±•®Æ‘d>j8SCˆ»#»]jʬᦕ¬[;pÃíêÝIîÕ NôX»¶Ižw¿ÝßšV”v`㯆ŽñÓQN‰ ŸA‹NÅeÄX‘®S–h‡”c¼Òó1Т3SEò“l÷úä¹vÏén^k×z]2­ÕúÙjõù0ˆ*V0~ìØ±ƒ|ð4([Œ `g�x@÷jx‘€a›;V`LÀ7�Jó C ú�îhC™ƒÆÆÆd�Їµ¸u‹AøÆ¡ ”åÐü‘'€�1<ñÄ´aÆÔ�àò‚ATÂ�œ@ Ç8ãò�p‚¼@Á='‚ë]ÀÒE9•IíC!þFÜ|ʉ|Ž;Íi¨³Î—ÈSÛ×iè%ä:t¡`\ƒ²�PÐÒÑ:¡]qåXk_N%•TRIå£(¡]ÜËîÖ& t`]žŽ_kÐkç–éäuã›3ÎÝÆZÞv}g¡ýG ¬h Ð?cö}¥,Mäi߆í›,óßìCoIéƒ׉‚ârYÔqB9—á#dX8�.¨5Ö›1kc¨i.K¸‹¬q²[0˜!<€ŒQ¹ 0�KŒcÐ8Œ‹µ*•Mº=Æ‘FÁ2õ-ÍÒp£J}æ7ÚkÉËó.ôéB…ÞÊ Ð•\7Íbç?»P}Ä laUv«ÇLƒË9v’y¾´€° �{ ̇qœáZÀs T „l0×ÔM2x6¡ô°m | Üi//mJþz†£š€¿^ Lžw¨–LÛäin~†k ´<3O¥B7r%v´#_)¯É �8Ö&}�2ân6Ä)”³»\áøcÇNSvV¢?d¬£<ë‹ÎØ „CSˆÊò½`ipº l€Èóµ”ðÜ'ë+œâêä榺ãH”4°Þƒ2—é=p†™,ínÝ.!�Y䬫ÒcC[Äúê8û—±J%ï80õ[óÓ5¤®Ï\`DÏë±N7’ín½Áâù­ÎBÕ•4-7=¬£“�]‹j[Ë&b°C>Ÿ5m1G·¦nØöè¦b!Çà™x×l½­@Ëkfg—#Æ/bNó˜ ºòÔ ÞEDáC´þ:Þ¥œ!;Óýƒ‰¶aÜobF/ ‘ܱ®ik»ë$a4³ÒOÑûò<_,,-p{L™»Ì:|°·ÌNôJ9Çuî¥ c½´q²†ÊÌ^Ái ßqh†6\«ggq¯•)€7]yñÎå¹Ù:wþ"ÆÇFmŸ.Ê34ÎmÌ}ýFÿè§£GÑôÌíÝ»ƒvïÙJ½F—ÁXÀÎæZµÆ^„½ÈøYÖÇÀÔtS¾ Ì `…¡‘¡¾\‘´M…Zp¢h|ãK@ ó‹tø#ì`ß³w7­›—Ð M’ ÿìܹÃÔi‘þð›ÿ…~—®\¹Nûì¦õëÇM?ë³ý´iê˜£ßø_¥'ž|Òè”sôÖÛGéÂ¥ëôÃ?KW®^ ]»¶Ó¾½»˜Îžoñ¤o€¡}³§·›¾òÕÏУ —_yÝ´Í MPÄyÓžjŸ1:âØØ0³�ÍÍÏ2(¤«Û¼ãú·Ð¦ÍèÅ_¡¿øóïÒó??D×®NÓ{ð0?Wçôæ];9¹Ž¾ò•ÏKY—éÍ7ÓÑwšçv–öìÙIÃ#CÌЃþ20ÐÇý~ß=¦­Çé;ßù>ýì¹çY×Þ¶c3x`­›¥!ó<Á´Düž x^F{#lÚï(Ì<ošßÛ7Óæctôøzö¥tòÌ º~sŽμ¤@e›‘÷=­�$¨^罦©%ÇeÔ#�*0ýú7æè«øLMÝ2ß²i�}V7ðø3eR�—˜eÀz|<²…a+¨‚^–ÉÃeÅàò)Pë\¢µOµ³Á* ÊÖ´ 0 gŒ<¦`†k«Pè† :Azh èîHkÞ¼k—« tóÖås�`uY¡\KèÓN)w>Kùdnk8ãp% mòÝ ec[Gþ¾4í§²FigßÕuúüÕ«×y¾ÂGír™Ì¨N%•T>¢k�_±¶RÖg°…)ƒŸ«ÛÜ+ŸÜ–ñýÎûnìøïÅö;€ÄZêz;ÿÜj÷¸ë“;¹ï~õ*¬“£tµk!I`@»ª†¤¡SÚI¥fµ{Vw21¸Æw±îæí‚(TZºp…rãþvÏg2þŠ6I:²Ý…¡µ¬¶”9ù:[KÝo—îû5ГíÙÎyÚ |¡Ç §·Õå¶¿çéN³•@"}6*Éã®2™<ƒ+ZÓp pÉtÛµNã¯]ûß­ƒùnže§1´Ú‹ê±è$( §  Öó¢NzB dÁq¯FY�!�TP:L,z`4Àb×áÁ.€p½2A ¬@ 0® mÜàòW@ŒrihºÊ${ðûäÉ“œ7‚ìÚµ‹j,€AïìÙ³œ6òѹ `7äÒŵ¸aL�Áýn”1ƒqõÁâNË0ÚJœb$–ØÇ¨®Gú�B(ðAÙ;Ð`àÀ1m+¤‰o€S� À9ÞùbÊ„ú°ÑyQw="/eÝ@í�l©¤’J*©ÜÚõÎÙ¥ ü;Fòæs‡ªZèÅ_ž„àpì3ïÕšìloÚ<á|ÄÎS¥‡–¼?xi§Dº ‰04¶šu>0Á8î»+½´èÍSµ¾LUó./—°.óy¦þof(T©Ï8UÊÆ™_2Ž›žå9ó÷<õ†U*Ô›t3_`gé²1øÎÒE¯B ¹"Õ̱¼_ †gÖ å‹Dh#YzêI5éÃlvûuvæ¢ýá(ƒÓ—5à@Lð9Ô ß€÷=ƒAH¿¾D¼·¡8mÍu5“&… odü<??8¤ÀÈ ªãSß>Óø½�vÅy KÄ`”ƒìº”þM#𸠱 åk’uþÀ95³1€Yû;®p~) 'dg qº8çY¿—Ð S„„¹i²ÃŒìî~ß0(ÚQMÊÀM¯}ç …¢M¸c!vþ ð"ýDH`оÞA³îšç¶˜ž¹IÅB™éht¬ ·ºO$õ(HLO³S¸º¦í†íP])“`jQ#$�P­ ùØ@©ùi àÑ¿cHÖÙùìs¨„•XXœ3ó@•ffoÒ¼yþ0tæy'™´[T۾̴a :NÁP(ôDÏ$nÙF<O¾­ê|khQÏÎO1“ƒŸc£lcÅsquM½Þuĺ:®€Y(Z¯ÈäÛtÀÚ7:Òm®¯QWŒ£´wë³(ŒÙÉÇvš=?v¾òLðMÅz'~[ç¶GË�HõZÞzû]úÁ~F=]EvcÝ ýrÞè ÒŸˆÖ¯¥—_>±ù©epp)bNþ€Êþý{é™O>iœÇKÔ7Ðkuœ^3©XƉ¢ÕiTô‘qß²ã&v ‡lGú�1üÍß>Ë}àÂ¥«´wï.Úºu#Š¢çh!›²íÚ³“žÿùKFŸš¢ .ÓâÂÕª zàÁý´s×FS¦nzòéG¤fdë¶M´yËQúùÏ_¦#GŽÓ±ãgéÚµôÈÁý¦žCÜw�".„¹eè}Óæ´iÓz£{]åÐ!gÎ] [7¦ÍŸfàÏå‹Wè굫´Í¤ß×ßà ècÝ]Ý4;7cÚ¥dʳ~þÜKÌjqöìyã(¿ntËíÞ½Ó†))ÓvóÜV,hËÖõtôãôÚk¯ÓOòëvûL»ƒ™bi Ì`‰¼B·nb3À¢é?%êè¡Ë¦Íð™X7L>ü 0]?œù`8BÊÚ±à ŽIâÁ Ž}»'hëæaZ¼ôú:qú:ݘZ`�Œ�aÈQ-ïN€t¼¸ŸÖ¾®˜¿ô¸Ëš�=ú6lÐeçfgYÿ-�d‘ÍqyÒñ[Æ;fhåØ˜2¾õ¹hÜÚ1å9ó®”#®“Ìõ­¡j[� @¬ñ¸Q`EÄücò+Y€^Î2YLŠŒs�¾Âx>qC €PæÞÞê zMŸY26ˆš[˜æó˜O6+xÅ( }à㆑âc¯Zíwmæ—‘Cêl×pž:8µ|œ%i?Ö÷­nhR»ÛBÁ~rüé,÷ã+•TRùàDÞ›!ÛìñÁz2épC(~¶îv~÷Ë÷w»ôWós…wà ]ë}·w-¥º˜»\Éõ»�ÕkÒ} °¸§çí®;=[‘â]+&»{V‚\e&ÙiÛ-¦[Ó]Ûq­Ëí¤“!É=&ƪØé®urC}à[é;Õ˜ã¦éI$}oE¸’¤Râž:åZ­w"ïu]m"tÏ'ºú»Ó=Éò­¾PðDl¤j¯™|¦òwÏâãü+RÚÜ݃l0µ¤KWË» ­Õ÷¤Âž¼§Üé‹amç¥ î•¼ß/â»?>õ©OÓÁ‡b#€0†�<�¥FÃo0Aàz�ð,5,��࣠]ᣱ•q/Œx8æ™Zˆ�0b0�€„ow·�œñÆo0£�>ø ¿p?Êdžà@;à¦,HuR:aÌ5Èס.Ê ¡L`’�˜uF¹� À½¨—Xð­ç‘þÆ5(+òRJOUN‘@#08Ap ò;¾¯\¹ÂéâZ”YË…ëÕX£eQ㻆QÑ:!M´³2o¤’J*©¤r?Šã¥kY¦„w°bñãû£{CqpÚS‘ÍÉzÜ®Ð( «à•RH¸ÞÕE’ëIô0+49G“ë'®(˜õE>¨ÐÒòÓ¸«¸L¹ õ„UÊa—ªqvUç©à§ À›™-æJt"?H7Ã]õ칂¬«›;VÁÖÐÒ�¡Fà|kCàóÚ a;Äé*!°;>@AøàY �hS¤Á„ðˆ÷Âu5åÏHLxvê4š|8Ãä•õ¦ ¯ÃéîiøD —tü¬ä‡öP"N©|X¤°BT]Z¤e8Ó«ËÆ¡T6Ï>ˬ¼‹` “>î«[g:;õXדރö•GF@´ëäYY°• úê„r3›E ,A¨”øæYTë-Ï€�Ýméy13ëDõubûŽÓ^œNX#Šc_êgW– ó:ŽceWt¬q9ZÃn4£ö‰êŒÃXx-שî”ÔÍ¢ÐA:%ÚÁì‘„�°ýÞ¨C½õª–U¯×ô˜å VÇ~ðÎhCˆôñ¥ê¢q€ÏÑluŠiý…æÞ·!X‚–´°Vų‘z‡‰Ú1»ˆ>¢x·¼:$Ò°k\¿u7=b»ƒkxMÚ\£Ÿ¶¹ dÑvд¤zÒ¢RÊÓð`…†‡z¨¿·DÃEì¥ñ‘.èïM{‰¤ˆz š¯6fh'p"_0ºÚ f¦³[”­jô’Š™³0Ÿ½ñæQºxé=ôà^Ú¹c³Ñƒúh¹^‹Ê>4<H<°Á «•L�ôƘB˜ŠñÂ0ýò/yx?‡oÉX®gÁ- h °¥}ÒÝ1ØlÔSß´y>ÓÒæÐ ¿�zy<ÃãÇOÒ¥K—éÚõ} HéêªP­^ã:C§yøàšX7.ÀtÓÞ×®Þ¤Ó§ÎÒÌ̬ч¦˜Õbdd˜çÆl&Ç,"ûöî¦AÓö§OŸ¡ËW®Ñ«¯¥î®<ML,2«Äââ÷c��"�XsúÐæÍÌg£iÃËtäíctøðQ:wî²™[dÇä­›·LyÆLÛngÆŸ©[�ø‹>¼g÷N£ÃŽñ|0憋®ÐËs¯r½GÇÎVáóx½=}´s×6Ñòþý7é•W^c@t7\ö�ä™3ãÏì‰'£õ“ëM{]¥wçÍß:ÿ]Z¿~‚|h/­ß8A] ª)²ÍKÀ�ÒŸe¬ñè‰À(¥bŽÚ¿ž¶o¥c'¯ÐG.Ò;'nÐÅË×"Ç=ÒQF‹uh±ÿ¸’4‚·ÎU­!7t cœC…> ýº1úóbs–«E*š>�}ßÿ’c—ß›k°Ÿ¸bI/tBCùQu¬¨mB~×"°Ú…u|€ áÜcÇ“pX\wË®ÃQÚ(¶_¢ñ‚DXòZA#œf¥ÇŒçn³þX'R}ÙØ2n˜¾]Šì ®]4i+£66M‡1¯µm4,Qh™mÝwc*?qmÆú;ɪ¥ôiôUŒa× Ö^Òµ©¤’Ê‹gÁöj×V›;d5Vû$ØóN¥Ó|¶ŸÓZýR·;Þéü{MÿnÓ»Óölç£[±nYã}·»×»Ï.÷mˆNNüN×ÞîûkÅàŠë¨vïMv¨¤ã»]ZävŽ})åêvQ/1iyŽ!‰èd kÚ†–VVóÙ]Hbp ìuž“whÓö"…ÍîBsÛgEá­19¼£ò/Îѽ¶¾ãQ´V¢‹Ý>˜\''Óv•Ïv/·Ïµp¸'ûµ«&Ä­Ü Ñ)vy¶þæÿS;¹“纶±ôþ€+Ö2Ü.µJ§|Ä “£û÷Ñþ}{x'I.×Å×ÃÐ(R0Œ�|€ß`a€I§ ’À5¼øa Çð Þ/ ˜¡¡8”u€ ÄÔU�†‚¯�<`úMKpÅ™3gèá‡fæ ä©ùã€Ü Ãê€ô‘ 7š?À 0ü)‹ÒÆõºÓKÑú¸eT ½_'jôÀßHGcV£L8ŽkÝP'ZW€'pN'�B -äÅ»blyÐn¨?®Õ2á<Bª�4ÒÃt¿~æ@™p-ÊzRI%•TR¹Å[õ÷ѽ³ðÚÿ躺3”w½[Ýxg§ÄEÇqþ˳z Z}‰òÆa;ÚX¢~¯Iýµ9ªTgÈ_¾J}ÐpÇäb¡›ó%ºžâÝú—)G3¹Š9U¢¦PÙ�¤àÉN`‡çp�§�M„gñ„ý±ë3Öéý‡u ìØg��T?žiÎC¡Ï*H�×"DÀ–Y Ëky´»e9hr‰X'ƒïÇ·qà)”° ¡ut±SÛêKh®f­Îñì9?�b³½T5ŽÉ%ã \0Ο|3Ïl~(ž×LÎ:­�(ñÕÈ%ú¬°OØöÈkE¼Q ‚è8Êh§N]Pù+Rí†vm€Ý£ƒ0àì†#XB‹ø2Ãî ½#Þ£»gpNBO6ÄuÚg¬c>‹x èêê7¯ÿøz¬óÀâék¤@e¥ÈDެ ˆ.½ëLl·FOØÚt^ˆ¥aآ繺`áöç°�¶ ÙI gœUÒ$/z¢RÊËr¦ÈoHÿƒS¬ X{óNWf§¨°ãW˜b† qçîÀÖ²ˆQTƃt ÂÏõ }U‡¹ïi™8„íY$¼Žgܵ°°bzÑåùÃüר›¾f~ù<{º 4ÜS0Ný>覡¡n¬ÐÐ@…z» H`0ŠuüªsYËí{ú—<'8i¯JÌa¦|hÃ7ß:Ƭ ÐÃvïÞAã#F/ˆóBz£ã£´{ïN:~â$;wžw÷tÑìÜ;ê1O`¼àb°E 1ø{rr„úúº©¿¯Ÿ9³štsì«Ïbß­éÓõ†ïMù\<žÓ <§y¾´9ÎáÙ¡ŸÒ€†×Ñ‘wŽ3‹DÝô›'À,ˆ¹e‘FFiÇöm´nÝ Å<ß;cô³óç¯Ð›ƒô³Ÿ½HW._¥‹®ÓŽ[iÓæõ ˜°_,0ƒM ìæžË¦—.LP>[d‹¬©W¶T4m0È €JÀê }ýpÒä=2<@Û¶n ·§ãÇÎÒ•«×x.½~õ–ѧ.Ó•k7h~nž6nš4mº‰Û� ·",Ûw\g0ij?ý?]»v]m„èa0Ëu˜™§"@¦‘Á !l‡ž™k—hç®´ïNÖï|Ë 5>>L;M;NGÞ>J¯½ú]ºr•|öíßM=½Œh£E£/./-òs3yìܹÓÌ‘>‡šrí8Ý•<°žvn¡wOÝ¢Ãן¦ÓËæ½–€L†2¯0‹ŠµÓ1؇çØÖ aÉ=DI»Ùq(cCC~âYëæ Øð – °­(€-° �ß“÷…†ð]<—¶Ìù�›xv XOm–dû§†ú@ˆ�‚PÂU±  RàßVð‰�ÈýB~é{/ƒ»™LEq{´ØN½•!Iv©T¬Èæ–ª0· -–ÌÀµ h8*ãÑGtÎ@…°:¹eqm}+lËž×Ö&—ÊÇOÜ÷±û^Öþê2Õh_q7ÑuH•RI%•Tî\¼–P‰ª§©¸¿×êG&¸í=·óG­Õ»šokµ{¼6ïådyÝk’ç“ë ×g¸ZÙ]z7Ÿd¾îµI¿£æíôÜ<;éºÉú&ïwÞÚä~û`¡†·C·žëìØ^«s4y›fòºvçÖšÏjùs:k»¸íámÑ&ýäµnzªpDu´ÊZÛ"¸÷еnUþ€d~†áv»g¶Ú[ äk¹gµkÜoŸÚv’€Šv/˜dzî5®—¼ÖóÂ5¥q»üÛÉZ^–wz~­/ĵܻZÄK"™¾�aýÌg>Mc£Ã €S_t�& N(U>0ˆ�� ` ›Ç? (È×�ü`†ÁiP¡t_È × <=";¬‚ ´J»xNŸ>M{÷îåò�Ô�Ã>¸ 0J ž(3îCº�(¥!ïš©V£(“ÒK»!?Pv¤¥L¸eWàÊë7òBð·†ÁqˆîRÔp)5K=ŠoÍG ÷(7˜=À‚úë°K—.1CeB�¸¡`ä<‘ŽiXÔëâ}¸�I%•TRIe5y/óþGëªÓžÞf€€Ã£aÖ›™�àŠ*ƒ!zkU h¸a‘õ*ÜÃÔÛ¬!š½q¬zt««›f2:cœ33Ë5ºšë§ dœ‘p¤˜«êp¶Ã‘p�/dòŒˆ0…8ûC¦n7¿3‡åÀîzÞñêIˆ¦ggMÀ»¿©.΢¬oœ¨Æ‘É!BàS ¬q›'v§“¦©—8»eá­½ƒH 35¬Í;Ó¤#ÇËb°Êòng5Š4æÁ\®@Tö}™ªËpúTy ƒãÌ.Áõ - Á:»ÙA¥tä3Þe± ­Z'4ír<`G=¯ÃÕÜ`=½EQ´†a$AqšÕQŒJ~¼óžâ8ïƒÈh—4B%ÃJb�†Æ¯Vý(d›¬+‹öÂó²Q ®ñ-øÇ‹w„ºL.BóÃGËç²Ü²j»E,k#vDã¹Ô#FÖpš_ÔB Úi6#¾›È8–ñ£µ©K•¯m‚º)HZ×ÄBeý^BÄ�KïOdðî3‰ ÉEý#è;€‰¸aË)eÎe>ˆœ¼<a£Qyp~ÏŒS§Ðä²£  „ÜX7Öß‘A³®î.Pw—Yß÷uñwÉ8ÿ9¹È�hËÄ…0—RTxžßÒ¯tFÕ{Ý)uDÛ}÷$}û;?¤©›³T1ízãÚMZ·~Œ6oYÏìhk<¯ÅÅe”+%:wþULÙ¦¦çhÑôIÔ:Îu÷tÓèèˆÑ Š484H]å’8Ê=Ï–Ïœ±è+ê,^6é Ñ·1_åÀvã“eÛ±Ì3©cÈóqh£™™)~fwQ«Õ°`Ç'Ÿy’™'ŽŸ8Å!<nÞ˜2yÔX·™™egx.çl#3æàAõ÷v3Ûô4°PüÍ÷L¯zËä1Ïùvw—ù9/™¶�lܤ?`òÙ¸q=mÛ¶Í<30,öš:(Ó �{üLën}´ê a<6ÒøÄ(íß·ÓèšçèwNH¸’óWM¿©ÝpÖ´ñ"÷½ ë'(%*•^hÒ4º$@%Ö›éG?ü ÍÍ.ÓcdFÌG`¬@>¿ôµ¯=nI؃�â0:ô›o¾K/¼ð ]¿vìßKÛ·md0Æ-@*»÷줡á!.ÇO~üsóž(Ѐé³³süÞƒŽ‹<#̇”0˜<ôèqÚ±¹ŸÙ¿ŽÞ<z•^yã4]º:S¼ÍšYvœŽáÛ£ö¡Œe‹Ã%®C¯EýTÈaÞØæçç˜Dtû"ƒé$D•:z%u°¨m5šy.ÌDï ž÷M¿¬YÝóTZHæa7ì‡kØçr:�=Çs9v•¢2è<D ˆçxûñŒ½’ ;¼ë�´(Âû>j/)—+ü|x]aÓÕvÐ÷"Q{g‰ûw§÷M*?¹Òe Öë!.kÓÝæ›J*©¤’Õ»ZýT­ìS«I ¦iŠ®ÜUZ}Uí7(»Ìï˜2Vó™i’çÛ’k÷X»ùÚýÛ}Ÿ»é$ÿÝò¹ ºÕØ]`­^£i¸‘ \p¿[¿Ní›l§d}µìÉvwÏÝr_1X$Çi¡Á[|ЩÃëy÷»ÓùÛ»[ù(/`Äpá­©¿hå Ýd±*ø$!«õx"¤ÈøÔîÅàÝA[ub®X­Ž·9›‘.Ÿ4RdŒ n›¾Þ›|t’Û)îy?äNÒýEö[”óK_ú"=þøcÆ�Ѱ»Ž–dç¿Uõ˜Ëb¡Š¿‚"ðLaäà†3y�N@È œC8 M¼€àÀy¤´ šD™'Ð>ï¼óƒ+pÍg?ûYο5œòBy/Œ5�Nà~ÃŒk ¢ùC´º»ip@0î€%×âo”Õe¡Ðp$�3à˜‚&”E¢á:ÈRˆv=B8­iS¤§Ê­F{q‰öÓ<Ñ~¸W× ®�Yà£l"ÈuÇ߸GA©¤’J*©¤r?Šø7<ë06ï]ëäî­.Ò¦¥¤eêäÇp&4ë󞼞)Ò¥â ÕÙ!S¤Z!G ÆiT£;«™yªgV®¶@åL‰¼lž ¡q46‘ö² ¯aéÑÃ$ëU!gœ1ua›–9k¿åzYÃKhœ—c? â\Î’@X&2^–c – ‚I*<›F3äp �’°Ì$’õe¹Oqè²iö·®šu¹ëœ¸Ç•¡¬`œ“Uó{nNÀ²ÌœååùzÐôÆÃ $ HH–|/´ºF“¨%ÔcÀ4ìüÖŽaÔn"6ègÇ–9ÏÝØ¬I€9þTç<ê ´²Ë^ÃkÄå‰ùêèWIÛÃ5rÁÁ@Öap”ÖêUvÐ %q:‡âTor40|d[Ú^ój¶P¦·dÿ‚eǰeŒhãý˜Ö¡<"ä/m¡ëZ7\§¤(`‰Ø`²’×ç…âè`ÚŽÒ–’éoØ-ùÔm8•%¯R.uó5A Œ¨ îõ8No°Bßã20»0[ ‡Ò±çð\ƒ0 ¨ãŸÛ é†2ö„?ýÂŒ»\†òæÂ¾îMŽõÒæ 46ÜeœúeYtçsw¥(á‘ü¬ìž'e¥ðÈSõÎkZ¶˜Ð‚¸”ö™ÅÀ& IàŽ3Œ`Õ‰+Æ¡ÞÛÓEÎ]2Îæª){•—8DµZçú3€LÆYF†OêÌn±më&*–ò $¨TÊüsZ˜/¬5è¬kbX=w–.œ¿Ì ïѱ!Êæ„³´TeF v@³Úè2ÂÀ´Q#`ö…«×®Ðµ«Wø9èþ180L;w=cœ<¸›C~¼ûî“Ïa¬5™ÕáÆÍ[JLeSîî®nZXZà>ÿÀÐþáŸðóè½QfÂJ¹Àúd—Ñ›�~ÿ$õövSÿ@/‡4œ³È$ë- –ãž°•¢²µÌ¡JvïÙNgÏ\ C¯¾E'M¹1æÏŸ¿F³3 túô9fÙ´q }I]¼p‰Ã™Œ±>wíÚU* €G¸°s�ðž �˜;Ð{wï¦W_}^>ô&]»~Ëè€ó´eósoer¡ÉsžÁZû÷ ?þ£?£Á~ÓçMyK462Læ Å’0(Bw;Q`YZûîß�ZØ3I›7ŽÐÁýëè¥×ÏÒK¯¢éÙ*E»šœ¹’çÃ0ŒØj“}âÎÉ:ǹÎ~שïÎÓÌa¾9ü€y?ÌÍÏ™nX(šgÞÕîÈÝ9/  $±lP fµ\æ53~\§À°x>£ŒÀjݲkûa~ñ¨Õ!Ò"ªÙ"Wæe¿¥Í¤ÆÝÐÝ „þÆÀk—A?}ϸ ?k¿å‘,§›¶ÖÉ}>±ÓˆRIe…¬æß€¸;ÉSI%•Tî•$œ_y]'›ûTÿ–ê’Iq×FIÿ“"ɽ>é#v×&n¸Â$0MïO–]õC½×Õ_Ûù•’ë9eâ8¤öèà"4m¬/týáÞÛηé†,CÚºq¿…•­}ýÚµ³nÚE~Ê^ÞÎ÷禡íÃú†ñ±¼_¾¼_„ÜW�‹vâ÷X»{ÜsïOWA>Nr;àÀ/\ÑIV[”¶SzÛõ5÷ZQš[cîµí&¤äwkzÞ Cc’Ú'YV÷ïäË(ymò¸‚,VK³Óßk‘ÕÚ»¬¸q§ù”»‹`¼Â3‡"¬*óxI©¯@8ô@›) ®1wˆ.��øA_¼xÃ0 »UpòÒPÈŒJªÀ¤uìØ1 ²iÓ&.ëääd”Ê Ð nz ¢Ì06A4æ«:pù"|�ã(;4. åB€!CÃ} œ �Á÷",ˆê¼î`÷¢ p-îÇFB€4pŸ2ià~ÔË]¬éÂy ÐÈnܸ‘™4P.]¤ SƒËú‘¥’J*©¤’Êý(=õeʧJom™Æs4YŸ¥¦qlçë¨A—s=t2[¤)€sešÏ—iÎx`–áø5NÑl'Eƒ7üæ3ã°Î¿jž‚Åã˜Y¦°Q§bá¸ÀBAöü°©Ñ¬±?» Ù…ÚlX§´„'È #Èô‘a“NmËèÀŽ ‚¶ÁŽ¥:‡ÃÀJK²Ž8À œÊ5£|û|-‡êÈz¦vM Ÿ°»Ü†‰ IbBàÊB�Qç–€\*q€réÚ×7,$lF8Ý NP6 бg¢p`§ÀúKœë±Ã ù²³ÖÒž ¸!g hê0RÁ³Ì9 �©·ìDvw߸à­§  Ð:Jþ¹=ŽO PqH‹ Ò¿ð|ŠÆ‘‹5Àpb ÖÝÝËŽ±Ðî`†ƒXX0ZÙ+Ô@å‚>’º“ÖKzØ’ŽK ´0BH¨¸.1Å*Ùò6”_-=k¾¨[Á†$Ñþ“Ô­”EÏ×+x÷ósÓ¦ŸÜ2NΚYó÷Ú:g¹ O:»:¨»kJ¡Zv.[�Є2Ÿ˜vÉÙR6¤ûVù‹„\Ð"¨ooOÖöÑþ#´n¢‡F*TÄšº Gf> iâ)MêÝ¢ ‡Óàòj�Û÷xw½ÇÆ>„ô@—Ö3ž2¶DeZ)¸vbb”¾þËŸ£;¶Ò¡C¯Ó¥K°Ö<«&@b& 0& Ó¯ýÚ×Ùï›Ì�.�Ó„Ÿ& ß“ZÍ7z‚�þdbS^ÍŒÏóç/ÒsϾL`b9øÈ~Ú·»É³fÚ@ù¦gæŒCŒ%Kæ3ÃÏá9ff�ö¾fúrÝ”k€ÆÇ„…ÁY0Ôš6ê¡ñuƒ¦ÝGiûö-tüø9úéO^`†ˆÀ̘gj,ƒƒ}F›5éÕXÒ4鮟1ϯ—>õÌS´aÃ:nca>È3ë� .£�\<’PDN¸Ù0ŒêíÆ(ÿô'&FŒn6H[¶®§Ã‡Ós?;džÅu¬UÍ»FX€rtãæ ³ûLOߤ¢¹oÝú úíþ[œÇÐð€i‡—Ïbn„Â>ôq<O?ÈÒ£<DS·¦èõÃïÐ@_uUŠ<§„¦ÿÎÎÍÑÂüœÉc–öíÝI_üâgiÏÞ]F—,X–Ž|4÷IÈ}Ò­4Ñ1jBÞS*]åíÜ:J“ã}ôÐÞqúÎß¾E‡^m™Ý92[x^ #P ”¢¨5ïNv'Mu(àÙ¢ïã½ýÀ•Å…e>® -ó†ùþ‡¹÷¸ó™êܺaÁ}öíîyqèÄs·{ŸÎOfSÞIðž›GäpA[:ïʼnè\«y¸ŽÎàoô=ØhQ0R¾—wSØjÿÓy›Ÿ#Ò ZËèîÈ¥4œC*m¤MÕµ¦�‹TRIå^‹»>s¥“³>y¯û¾Öët  òv~§¤>Ò.Ïd>îq7oWGK^çs»ß.°?Yߤ¿Ë½^ I¶×Ï—,‹Ú ’ºh»{µMÝcªÏ&CFµ«7$¹y í¾š´k§ÕÃT}´ä¾X¨trðvrš¶s^ßîû=”Žè í}ïå|EÑ+8ÊÛ©í\4üíîuÓh§ø­6éµK¯S>r_ç>ßNAvDÆ=ßé·ò;6v´»¶Óïöc°óxíôB^m,¯v~-²Ú½·Ë÷!04<úè£táÂVøa$ÖŒ�<€¢/\0.�€�»¾TáÐÇ7®U& €1ª–N€ ½¡lû°Q�è<Ý…òxå•WèÝwߥ={ö0›„‚;4l‡»ów31ì"ƒ9\à®G¹a$pBi5/\PÒ„a÷ázPÔ°áò±# eV¦�'Ô‚ü‘&Îk¨i LHW.?Žá>¤©aL/îÁu�hàÒE¨ŽkÁ È@^�º žøõÁsE{Ó)¥’J*©¤’Êý&;g/Ò¯\~2ÆÁ”7ÎûËå:›ë¦“… -åá|Ì™7 Y7ph�€2Ôä¥xƒr™¢ù3Ï¡B–`Œ0'™:ž¬wÊùæ<há§goR¹ÒCå’qîÀG¯qª4,åyÈTóØ>ïSѤÛð…Í¡‰%æ»Þ¬3ð ëILxç;yw¹Çeó>!»øCs}Дp~¶ÀyTUÞ­Ÿm6eÿ{´ÛÖ'2Å1Ù!ºÆqw k¨]{*£€kqA¼ÆÂZ˳ ˆžŒYƒ-²sgzú %ÃõµN­Jó9ë jrÈvV!ÔG®`òÏG ì�š‡ Äéå£2J:Îð¼Vih65ô»Æ#5¹çã4kl‹EÓN!$¿˜× Á÷e—q~1oœ ³4eÚ;­8Ð2b­­ëÇdx’äsR :Ø$<G³åå2ÙÈ™‰cÊ¡uÕúÁ· ç¶8^u—âê‘RÛi¨Rž¤‰ë\ƒZr'—®ãÝÚù\ѬgM™¥…ÅyZZ^4NÀ~³Æï¶,ÔRo·Oj½ÔP×ò¬•‚„ØC@M|‡ÂäRÈgÙ™^6Î÷É‘^Ú¶i€¶o¢ñá.ê.—ÈÏûTÊçy¬h[·*¹“Ùþ@tOEs@' èo¾ÿ7 ¬N•Ë™`92pb÷½†¨@P$›‹³Òþyn‡ ë×ÑÀÀíݳ“×ð¯¿þ&MOݤQãè߸a#u÷tEìâX—ºjñ1ÖÌd$åó¢ щ“§¹|ÐI2$ƒyÅ•l™>ú0?w•žýé‹flÏЉã'顃û˜Õ!“™£F=`�X¬\·,uUº¨«»H»vo7ו-ÐA�HYô!_íaqS„6ܶm³Y¼øâKtsê×gxøº�+Œà—¾Þ>£³ Ñ¿ü—ÿ‚Á$�>äò ñ¼iÁ.Rç_§wØþcÏ‘GIÚè$cöK6ùü¡¡aÚ»o½óÎqzî¹çéæiž¯1Nàì1ÏlïvŽ ¾˜ E3Oäm¯èE¸P8}0ƒ,/WXR7í‰úŒÒÅï] sãc&Ï13–¦i ¯Â` SÌ5Ï<óÕl®•ý ¥oF²rMÜç3-ó¤\ÊѺñAÓßèíc×£yÇÕÅiŸ‰æ0eljí­cÆ/´ ZºéGC|BÀüƒ¹Œ$èoз¡C¿…½�Ü£</xn …É:2ìÖc i+sßyQžÀ"É÷‹:ô~¶‰…áŠ÷‡ øÓvL¦©ÇÝùÛí—ÚužF@Ý8œÊ<]¿q=²?twõ¬`rí[I'‰Ž‰äNáT>^ÒÉfì‚…V³+§’J*©ÜKI®Ë]YÍWé®í’× SV®å]I2Gè»Ö]·è;=¹–‚hEœc&.»VH®7:+ð.‡(“—êðIݼ]]•i\¤ÉîýÉz+9ŽubPIúÉtí¥Ìª³êZÅm7m;÷Öt(7Ö².XÕÕ7“m§e×M¬¨³†”¿_ä¾X¸Ò®#¶;ÖN’ÎòN÷ÜnrH¥UDþp+�·›”VS`Úõ7÷\»´:åµ–<ÝIÒ½_³äu«¥Ñîš°#P¢=˜b­²–{îÕ5kH䶘ÿµÌ”èsÅÂáßøíܹ3räŸ?'±WñÄKÆ=¼¸�\@9áà«„‚ðÁËÆ0(Àù¿µ¾�h�<¯ÖUÿpü«!` ¼à0èïïçÅò:rä8q‚žzê)Ú¾};_cîÇâ ÔeÇo�'ð­ $¤ ä¥Fx¼üQV”KÃg ]€$4Ô @�A  §OŸæ<` „qåG½`¤DÙñ­ì�h Ít¢LHm †] ®(/þF9q?¸uÀ÷­[·Ž#MÔ ×Ÿ;wN ÙfQ‚2!]´ ^HC?ÓWR*©¤’J*©Üo2“ë¢7Ët¾{fK}fS0‹-uò30Óð© ƒIÖcg3˜%�ŒÈú9ÞI\¯/È:ŒÌߨ®î«³ ¿ìòÍJ4·pƒæ§©¾´È¡@Õ0ù¬ ãaœ;O`þ2ïéyÞDÏN(0^˜÷¹ì.Ï2#´qíáHô�pȘûM9“@ž·¾›Óu¡h‡“)l.s]3¡ €#90äLÞ90:0 ¸ ×¤ìê$sâj QBÖ²¸†N×Óñ>ƒ*àܼeœ¢SÓU*º¢µˆ8‰Bnk°Mä `y(µGØÅNñ:;?á “tkKÔ���„ʸ Ž+b§&œ—î®gw× ¾Ýz¸a)\'–«G©“¢ì î½:Èrþxn²óX™$<ôõöÓÒò<Í™~v“î®^vœƒÀeiàPÀCQÃÖ‰wU[Ð.vN7š&íFÈ ®ÊØ”pÕZòTÔ£þ¡F<¬átÇGó‘²à:ŠÊ(!¼Èˆ¨ýFë¢m«}Iœš9™ „ÊÌìMÓO®ÑÂâ´i“¤˜kÔ0è'“_}F90Z˜ú5L}ëÇ …:È` Ò0e¬Ð®-Ãæ3B[&û™¡ám0®#G&ú¦³q�³ás<æxNq‡ëÂhk„´ÈçMûrÌÒ27¿@ׯMÑw¾÷7¦îyz÷ø)ãˆßA›6OF¬v‹Ë5º5=úÖä ¦ÆŒ“˵ä9šóêé-Ó†ãôäSG%‘r…‰²®´`Žƒó†dÈÜì=ÿ³WéÒå ôÐCÐO>fK f¡V¼,·ÕöÒáÃoshŒ¥Åe3Žþ®î9n³j5 ª©ËüÂ<ZÃèe[ilbÀÔ§ÂóB¾‰�å�fföQÍÍ-ÑôÔ4ë/qR*þ4Jã#tð‘è#ïÒÛoaV’-›7Qa\òÊRQ°ŒbÄÖãÁpø§ööÛ·ã¸fúçQÌ12%çñ|íÎqíl&¡eBp jtl„††é‘GöÓo¡W^~νhtÅ%ºxá*]5ºæ®][irý:Óïœ1¸<@#£Ãf,t™>\æy@10ÞÌÌLI8 „2iTmˆõë×ÓvÒç>ó?CeJtŸ¹�6ôïÕâO+˜+S¹Lúz£ ÆÊZfŸÖ<c¦ × î¶¡8'âëuÎiaJ@_÷cpOäì[ÃX¸ó$úB¬@ÿ‡n=¿0½×p/tdØ+0WiyuÌéÖUçSvF4% — ¸ÓûµúÑwŠ;OEà‡qGi.€Oß1A4w7[Êäö?x¢÷ÌEåRÅŒßnî㺩ã ÐJW…ç¬Mt|`®Ìf²1e9Þo‰pU©¤ÒIîÄ‘J*©¤ò^¤ßK¿“ÇnçwSç?ÞË‹‹X#„+Òt¿;‰«ë¸@�Wgi§#µ[KµËë<´«³èà™,bª«ª&éËÓ5J²,î >m'ˆ ÔèÔÖ.XBϹÏ'É”¡ewÛÓÕwÛ1M¶º�]øoî'¹ïí:~˜8ÿ^´su­’.²ß›Ü«çÚ.v/•N‹ßä±N/­NyvʫݹN/©N�‹ä5·ë{ÎßMŸm×6w*µ‘¢t‘=ô#ð2ÃËéæÍ "@Ø ÛàÜWÇ¿†ŸP$%˜ �ðîÑÝ%—/_æß �1°ÛBà¸imذ#/ õ LÈóäÉ“´ÿ~ £¤k¨ר÷�HÃ% 1 z� ÙµUæ2á~\‹k”I‚ò ¬x™£-puhõÒ—('ÎáeÒPÄ)òB»¢m?êŠ<QnݨFVmCE_â:�:pÞ50Áh¢‹*Ý™‚¿µ^}VzÊ…ûRI%•TRIå~•+¥^:4°‘8aÓÁ7Îï†g!pÒÇ`~çàd5NY8RB„k âØVÀ©¦ŠÀ®çÂ<Óˆ†Í*ï„æ�ÆÑÖ] JÎ82Œó|vnšúú‡(˜&¦q@†Ì:QE9°2LOßÄýÒhRa²lžMïyf8ÇwhÂŒìt®Á9e.�k¿ÿù¨0\4ëË ¶ Žh k!ìJ­ñÁe_p)Î5¬ƒRå‹ñ%ÃNG ÛЪ „x qBZ\š7Î×%’ÐD˵sŒHÑÝÕg‚²~©[£ÊÂ�0lXæ €�ÔÑÅ�Òú2‘»ûÜ'fÑz ¡šì”Gˆº¸$a.0Á]ã«?ÓVü®aÌ5¢Åž Å1+׊Ã2ãÍ!;…sYãèZœ3kÍ+fÝ 'É‚B$_´‡æ¯¿5_M7Þ=ÓÌ"oôM”D׈J¯� ¬Yñ‘Ð$ñn¢B!óJv ïÄÖ{ôY+øBB´îBm/»¼²Qû0�¡^cçrìxôhxh‚YMfçnñÚeÆ:]ó¸;›ÜxÅš7×ý¨i×·ÌÜ¡žîm˜ì¥½ÛFiûæ!ì- S„:z=Ÿì»VŠ ;x=3|‡­;Ýø#Ýž–êKôýï¾@>´ƒÆÇ)_`ˆ“©gÈL•J‰Š*´sç.úÙs/Q½ÖàpLí3ºÑ83M€Õõ°`aÞP«! vG}?)YF[$ª¾nûm(3ØÔ° $SÈðüS(–xþœwòÄ9ºrù:?w…n\›¢wß=NŸùÌ3ÔÓ‹2˜~™-qº×®OÓ¢yv›¶®§…%㨭ä©ÜU¢½ûw™g8Êå?wîýøG?5úÙzóðQÚ¼i }îsOѨi›B-G.¦È,? `_™Ÿ›7:Â+Þäþ y÷Ý«ôÉg>Á îá M~á3ô¥/~–2ñóØÒúK·ðíÇ# Óª‰ ˆ o¾yØèºr»àÞjuÑô§•3¢·iXEí‡ñÜ!…†^ËFÇ,0X úžOO=uÐè§»èÐ+oÒÏ~ö ÍL/0Èbzj†ÆÏ^¤ƒàJ�ê-Ì×Í|‰w×™±‚AKc&a:è/Ó¦Íhßþ=ô÷þޯټݘ:ËØ“ñÚŽÁ¢U�DÒ4"@ãz½k°f6„R±Åø®cRïÕ .`CÇ*æe‡I²ƒèâ:&ßÂf”îÇ{ŠCbØ9 LRÚ`;€þ [Ë í¼…PJZŸ¬§ÜÐJî<Ìí7yt\œŒíÂk Éä†LÒ6idžä‚<ô[»Lî;LÛEBzLóÕrqzM€7ó480dæÃ:ƒŸ¸­`ó€­Á݉ۨÅë� ’ÊÇ[:õ×±w§÷¦’J*©Ü­tM¬6ß´ó™¹çbAÐÖ¯µÚýªŸ¸l}.``5_[r­ eÑë’>µ$0Á^B°vs™*“uÐõƒ›fòŸœ×uâ‚cÝõŸê®~æêÉíêâÖSCË»ë?Í×½^ÓuÛÀ-‹›wÌÄuÿÈ}°Pié€áJ$‘þí~'»Æªv°“³:)éBøÃ-I´Új@…ä‹âvÀdé”vr2n÷‰¯×IMcÄòQ’¸¢­Š»œO¢ÞäúößíêBÚÕ÷v}ÿN®_Mî4ŸÕϵ¯ï‡mœ¢<02|øaV¸Ï?OßúÖ·ØÙÛÛÇçvîØ7Àß0\Àá0^ŒPÔ¤€{”ŽJC_ °ûÀ SJO8ÿÕ¸ŒôÀÞ� ­�là% Ä›o¾ÉaA`|}ðÁ¹`v�PCÙ)&ÒSÖ ó´L(®³{p ʃÅêŽ2j ‚:è}J+9LÛ)˜ß�3 ¬(„w‰˜|P/´ @0üàǵ\(³æ…û‘ŸÆ)Ö…‚îþÃqÞùfò@}5$ ê¬� €Aê°†† ¨i»F±TRI%•TR¹œ®†�ü„ <³ÎmTë h�y<Br`A›1ÎóŸ„0Ž˜FÎq¼f<A[„pžãý'_3`gY?Ä ìÊ/ó<[ ŸWÂ’¥ �,¯™@6Tg<@ø;QN”¡ÊN|]bòê`Fð$‘3y¡lMÞŠP$â0gÇS˜a‡±îÄGù²>vÏ YEw†¸¡lTN¥C­ñúUv³Zšwë”…`ç?ïšh¥Q€ ë !åòXO ˜õJѬq@ѾȎ5„šóPžlžÛ“ÿù±óžHœ_MqnûhÚz¤Säs%=D Qõ .N5VBøŒ¤gÞê4tRø­àŠ8I«#¬ñN5IzV5ð4›¡MS@ jÄ‚“¬d©ÿ‹Å ï–Ð�Ô%ãìêëZ±s\uE « Æ²˜A#¦£mFi«CÒ³yc}©ë]|Ôñ‡u$‡Èæ#ýMvT7L»L£q§l óð£L®¡.?„ܵ-¥ HGê& ™ÙF²¶<êïáþõ:Ö´ RÖgÈýŒ¦�‰8ÜM†C}”Š9ª”ó41ÚG»·ÐŽƒ44ØÅ: —‹÷=ݱR ä�,xÑZØÙ=eõ]üËfxvà9›ëkõ€௿þ6ýàoF¯½ú6|t7íܹ™z{º©§·‹YZª‡³Ü Ï|özéÅWéêµëÌÂ0ukΔ·×è ËvG¿Ôgaa‰.^¼LŸýÌÔY\à@8ÃðÿèÏ=÷]1út»¬és½¥2÷î·&¿ŒQ»öí—ðÿúwþÀè~x×z½þzâ‰'Œž1m>·<qùÊÖ×&×­§/|áóF7æ¶�³Ež™JFwÛG[¶l¢ŸüøYúþ÷@ï¼s„.]:GO?ýmذžë)€óœÑ—J\0< ¤ô§õÖÑðð÷AVu™oßÚ¤÷ø<7;ƒ2HÝ%Šë Wƒ¹GSÓ³tè•Ctøõ“¬w½uø(<ø íÞ»ÃèOf,øM»,/×¢Í` øˆA^µ:ƒ$ÐFÐÃ*FçÂÜ Ð úg¥P”ö7×vwWè©§¡;¶Ð+‡Þ wß9Å:ÛåKWèms݃î‹pjЗqp~££ü]2Ÿ|Öl(þ„V ì‘‚Øb[ÎJ[‘„› íX­3SC(èÎΑ¬›[£·.§Jùf+™ 5DˆÌ9xÇøÂªÊsRp…–' ÐH:2Ž¿atµz-b·Ñv®ÝcÆtc3Àà�½w‘7\Ö“®  ;O /¬¯dˆõ,‹C²ŒíÊé¾Üp xh÷>qY}ôý’ â²,é;ËMËu¸Ç4=Ÿu®è0ý²+²SÀî€ç6ƒý@ÂÔ8íà{ÈD@êT>Šr;ûkê—H%•T>Lâ‚ úw×!1˜ÓoYë´{Ÿ»`Sè\Êf¥ŒYz~»�½×õjZš;ß`;±nvU¿„2b­Ö Áz e‡`]ènØtÅ]¹ÀWÏ„ŸdµyßõAêýºžBy4¤ˆ[om74¤æµ Ú iÀ£z®Þs·þÀ£|l�Z'ÐD»Óná½–<ÖRžtaóá“;y&ïuRèÐi×W^ï&’é®<–ÌcµßÉëoWÏ{  Xkúk9çÊíÀ0w“¦^û~cM/¤O~òôÔ“Oð N{0Dœ:uŠ÷W¯\¢+—/²g=@0~â… E/b0<à˜2Sà…ö |«Àé¯á0ð*\ CòÄ‚@`«P ]äsöìYzþùçiãÆôÈ#0 ×aA€2�X l¡7Îó ]|À¨†riìU qm Æ\Xà7îÅ7ÒÆ×+]6^ôÈ[™1p?~ëq\‹ü”5÷+øcA€:à:eüÀ9\§Æ,p-ê‡g…ô•êTC¦ /°n�8㨛–åR@ˆö#¤‡{ñÜæož TRI%•TR¹/Å꘦2ZSá½Hâàb§;°ì² í%Õæ’q° å?.ð�`…R»±\eï¨Ý/l²ÊšuP--ÎÓòÒ<5²uónïç ¹&ëgâ�çmÖ“üÍA€€=£Y¯Ih .›Ï€Œ ;™²ÔlÔ%„B„X6ÊœõÄ©¦ BX/kër¼°cÔ=Ô=`ÄB¦AbSs6Õ1ä[÷-Œ5Ü„!‡”‹ •½†É™l ”+欑*Ãç±nB3#œ©pž/-¢tÉ“㙬ð€ˆ#5d:¸OãêX‡ãÎÇ&3[ðcµL!;å#­Œ‡ÕPÖØùçµìvwÞ´ô jÝa£Ž.¬Ûô˜ÁÜô\C‘¤åsø‚0rÖe"f3�Oæçgã÷:•KÝì¨ÅÇ ÛÒäºK»Ã)(¡HšÜVè¯pä‡RFêÊáFœ;ê(òzOA\“l³×Ûçð4¶Œ¦q·rvr±ƒ¹^‹Œr.ÐDÛ°Õh) &z ,HâGÁ‰ 2ÀzUu¬¹±¾×5-ÂöäM�¦èï«Gi†ºir¼›¶m ‰1ã\kœ ƒÂx(Û—²‘M°ÃƆ0°N`T„Çy_½zT##C”ËËsžy䌳vzfžÌð¦³çOÒÜâ]»~‹ç= –m%Y`&øôgŸ¢W^>dÆÀ‚Ñ/¦i`°×†"ô©\)ÝjÀ|$4`!çsX „xqø;¡ñïªI“wŸgbŠ\vˆ‚¥ÁŒ¥j½J'N£·Þ>JgÎ]¡»6Ñc<lÚ­(,!ÜßJ43=cÆfCWœ;wÞè$˦ÝrÔ¨›g“Ìs0Ïbn‘¦oMÓñwO™gct›3tð‘ÔÛW6:I7õa3s�|ç¥b†ü!ºuóýõwDµå½þú[¦8€0‡¾T*]Ô×ßGë7Œšúo² {ík îʾ!}ĆHÉÀñìYòŠV„ÀðZw÷I q4¿úÚQúÛ=O 35GÍp–~úÜKtþâeÚ°qÒèEæxƒæfæL›4XßZZ´!Dò£Ÿ¥^x•ÆÆGhÇέæ{ˆÃ;ñ¸-dœ„>±À¬éØãcÃô•/†ô!úÑ~B§NŸ¡+F¿½::"@si}º?à»À/—©†œP­z¥£Ö}!ÏüNór-sA4fÍûfnaiK…$*@¿ ¿;Ip+d^æÅØü¶åˆóøƒ1Åà!OuV¸œy€9bf¤¥¡4PV�_jÕF<_™~P*Š@:·7$ï²î®nê2ó X +OMÝŠÂsº÷…Ô øÐùZ ÷Iç†û.Iø\gŒ <Ñóú¾Hڇї‚0tØ>šZN÷}–ÜÙÚlµLoO· À%xÿ,.Í™yižßÉhS ÉÅ¡®B úãE©¤’J*©¤òa×Wr;¿‰û~‡èûÚ  qÁ’«‰»YAõ,¤§€…Û•[™¨\P¥û>_Ígä†ôÛ‹À.Ó`'qêÑzwjCWÏsõ]Õ ]¿O»{“ùC”é¢Tow¯C4<&DÛ\¯½ß6’~l�+D¶‚´:´*Ôò»Ø"•ÎÒYõ~H»<n‡ÌZËuz¾]¿¸—²Z_ü ò»pDòEy§÷¿W¹Ä{y~·ûïßÜãD™víÚE›6mbP^ªø†A,8C'Â`�,�Gÿk¯½Æ/E¼Ð` Ä50\à Ç=>HCw˜Àhªl �À ‚^º“ €7”Á/X ãpÅ[o½E[·nå° H×!´,pÄ Îp(3Œ(j°Â1�PΉ‰ nS܃E€!8‡tø Ìh €GP~ÐÀõ§÷£œjèQ¶” ÷)…ÆOC; }yñ©¬º @^AÂqSyw‰-<´NšÚWY;P\§åUŠg,‚к3ÐEצ’J*©¤’Êý(ê8q×m‘‘%À.öŒ8ô‚*;e3~Þ,àQ²Æ“f ` 0ØykŒ ìÜ–]ž~>Ãá:ü¦Ïïâ°Q Å*� sT*”˜–_بŒƒÊdZçkë Ø¨ûYAt0SS80£�>—«É¡ àL‡CŠÆuÊÊní00Ž"“/KaXe&‡ §é3èê¦ìDâÕ.8�ÙǻěŽC<¤8®{ƒÄÎ#¡C„Q!963™ViÛŒ³‹×g$Žá£À\¬ó8Äe×lÆ÷bX·&€Æ@�qù ~‰v6gb#C<å&ð¸4F½»›X¯wq.-»k4r`z¯Ké¾bWïª×ÚPàņ<iÇ€™A´ÿåsEêïË×;B©Tš¡õ[¤Ñh¨ƒ¬F¡e/ÝÜâ ”]çq\6ÛqŸg·#«C1ã kˆÖE@)5ëï öÎDFH—DsÚ¶íØÑ\Ê}φsÐç­¬ˆœ�Eæ¹ÂÑZv–®R†ÆFidxú*4:ÐEc]49Þg§EÙzúÔ ñ<Ù9Ïã%\¹‹Kë* £ 7ˆçey ÀñxêôYúÞ÷¾OCÃcôÀƒû~ÒÇÌ,¾'pªÞÞ~úÔ3Ÿ¢|¶Dÿú_ÿ.ƒ(rY Q|ÎÙÑŽg»aÃ$mÙ²™Î?ËÎÍÍ›7½§ŸŠ¥‚Y‹ç­Ñ·ÏD@a™•âr›ùãÌÙ‹tþÂEZ¿n̬ùGTc.ªt•%=£J9zä‘4oÆÚ±wOÐ-£·\½t}ì Ñ5*¦ ŽBxŽë×®=n½‹>ƒTâZ¿~œJå"—,—.^6mY§7ß<B¯¼rˆ.^:OO<qÐèe›ØQÞÓ3dæ¹¢Iëë-F?C;€½ebbÄÔµ›*£c#¬ƒ0KO?ó4û„oòœ§z­I �ì/Ê5°) Í�ÔÀ$œIì.ŒŸ½ô‰0ÃÒÇ>ýÌAÓfýôüó‡éüù‹ øš››¥cÇO˜| ¯õpx™þ¾n¦íÛvðXÂ:òEÓú©«§D/¿|ˆŽ?Iì¡Ý{¶Sÿ@Ü‚š„ÔA{aœ€z]__?­›(ѯýú¯Ð /¼DW¯\£‰uôqÓí ¹hœÅóXôÄ£ùBûmòÛ³@¢0”¹7>oYg£93(Ù6ª6ê-9éœA«MÒiQ«‡¦OÕ[X+ÜgàΛʀœWÝüôyé½3…þÄ‚ZÕÎ/2·Aï…ÞÊaf0§Ââ�ܹε™à^ âêü¸Gíè(«‚Üþ”±a«dÄæã€ìÜë|¡÷©~î‚Ü{[ž¥Ó..@Ã}6IÀDÛçG­NXã–#Ÿ+ÐàÀ-3“Ò<1ØØîaÖ,oûKæ•J*$õe¤’J*”ÜOÈ}7êÚAß«íBóµç̯ë‰Õ€ 펹!Õ’!*;ݧâ¾ÓW€è×Ð.xßky`±Ÿ” ÖR’DË~'¢ ¬éVË’ô ¢Ý±fÑM¬íä~{}|‰›T„V·Ü+§û8ûïäÚƒÜK'û¦µÖëoθWŽódY-Ýä¹äs¯íº€Eòüí@Éáû-kÉç^Ž‘µ¤u/êÌƤ'Ÿ|’¶mÛÆ/h0I(ú0|ðòRÖüÈââÅ‹l ÇK „wÞyÇ›Ž3+@p. ¼ôÀ4à† ¤*Ø` »HŒ'ÈŸ3gÎ0“ÅÑ£Gì±{÷n¾�¤…û”€PÀ®ãX4ข pÀ‹í©±žñ’Æ5¨ îSð‚2N(Êóø | œÀq“ Ê6¡/}5!/ä«€ ”ScêpÀµ8Žo”ÏÏA8¦�üŽ âuNKãn» ä…ç†2hÔ×u(¤òñYäWõ/J%•TRù0Š:j×*ê”Ðß±ó܆.ˆèÿ›Žƒ¯ À2!¬ Y„ãðír6€£]véJªMvŠÁ‰Ê!H(G~¶Èšp€‚%8t©apx·ç|$x¬*×ÙÁËÎ1! Ž`·K(ñêüáLÌæL9<BÀÉŽ«› ”ÅIœñÉœ’ˆÃ¡"Ø¿…ehJˆë$FýDÑ´Ž 8þ¬‚@áG»DtÝ 1ˆîvIîþÕ¶VzóB¡È` ±ÄùâXѬ]Äú£NM[fu”‡=¨ów(+‚<Œe˦ 7~k\uáo7>­ö'5é½n=õ>×ñ¥÷@ر…ºzÎî㦠§‘³ùf¬ã< ÉFXO*ånã/ÐÒ2BçM³c]܇këÌlÒàp)`5@½„é"/à_Ø"�PêÌ,#ĉ€)" I(aeøz­»·¹?ÒJ½Òµih»)Åínè÷[ž°eúе§ç铿ç9:ÔC#½4Ì€Š ÷̱^îcö 8Õ›¡„í@ßÎ`|gìxtl/`]?{°bIà1ê•r…rXsg$Í:Æ0ï"ËSÝŒ“3gÏÓ±çé²qˆïÛ·‹&'Ç©ÌôµÆ0¹\§Åù.Çöm[y½lú4vÈÃa^*­.áSXúzŒ3³Ÿyô�38ȼC¶Œ^ÔoŽž1}¹ÁŒ9pÀ»ºÛ¢Éã§?{‰ŽŸ8E“ãC´gÏnê*I˜Ž‰uë¨Èa+|fìÙ²uƒF^;ôº)«èd[¶lá>çêÜÜ-:súœÑé®r™''×ÑŽÛiÐ<2}×Ϙ¾›ËR¡°—õ98]øƒŸð}5¦˜Å¢\¾ÉÀ´éé)Ó©·¯›>ÿÅOrÈM›6ý¬KúnˆP4Ë B;s?6÷¡ob>k˜~ zÞÌÌl´C :êfÌê‚þcY¢>ÊÁQ¬þÞb[ˆÃšn3Ïjdt‚.\¸h>—¼Äã8ô¾7Å;ús¹¦Ü¦äÈÎíM{ëÖѯüÊECƒ#ô½ïþ€Îž¹HK‹5Úµg›€$̼«;•2¹TªÈøôÔÕ]¤ÏáÓ8ƒ9:d‘ FPTV,FDG$ÅCGçGŸDÏcÞÎSMžÛë-ì21®}˜È¤í¥Õn aRÜ]‚nÜlbé|/óxÓ)«oØÐ;ø]7úlÝ?4§eÒ)K”ËçìÆƒ Ïï.ÈÀ÷Z†Ü¹ÚÃ5šVs%tàžž^ΡCP�m ‹f.Èæ£ Ú¦íÖ ÜÓãn[ºÌ.ϵ-µÎ« hi ¢uPЇ{Ÿ[¦$à¿m+Û¦›& 2¬s˜M ,™~=µz•Ásó3ö T¬WR{A*©¤’J**éäÓZë=®Î§€ÉN¢ïce^€N¯>=·Ú½ åÑð\*º®X­ºYRõ„·ÀÚIT÷†`]íæÝ)ßx-*k>ÔAàhùu¹–ü‘†úE4ïvyª¨¾© Ú½Ýý®>?­[>¾� +íœÖî÷‡]>¨r¾—<î倉w·È3 ïLs'Ïeµöé”Îû1 uJ¼—û;¿›4ß˹$š.Y¯÷Öœad„¹—¢©åÌKù™gž¡Çœó€QlÙ8ð²‚C/i€�‚ÐÝ"£ /t„ê�À@ô`}ÉãÅ©T¿�>��¡F'¤§¥³èBµ0V"D vB=ôÐCôôÓOóËT‚D =Hùá%‹ûe‡TžÏ¡ ÈOÃw N‹)5†á^�Ið /¥¨E�`¨q^çse¸àÝ@& �B?ò‚(¨D)š‘'ÀhW´€¸WîÎ¥{Æâ ã~Ei"]Ô@ ,n´nh]ð©iâ¾ááan#¥[,•TRI%•T>êâÆs÷V8dˆùÏÁnÍLÎ:€šìÜÌ‚BöÙ[׃((Ȱs $ ph‡pB4Mú`š a²0fv¾fÊ]Ô¨a6Œ ËäWz‰“G|ÈŽpa °.»EÁá‰#^Ã…ðƒ`E Îy8I8Î}À¥Ëpr Á Ð$RØ­Êæ˜„A=PØzy ‡›ÇYY‡¹Ì±c]×X-ÎÇ(¤ë _à0Ddãä*2›G†phb—{>_äu©°€0$^@3ðƒ$_pÝCDZ%>U$XšW÷£eW‡“®Û“»~‰Ú­åcà€Ww'K_j "KDóJ–i"|´ÒÆK›jß”!ž×E3¦Mf°ƒ¾Õh  ñrEvxózÁ.¹–2 ›‡qÆYg[¨hèûד SâÐqbp“ãaÑâ…ÈFB9¸ôµê�TǦ:&“ÂO1º£låbކú+Þcl¨Ë¬c+4>Òÿûû{©—þ"ygb@MÏ|ÀÎ{_¸L?2ÀÈ÷bm^Ã÷½yø9w™¶lZÇ ´)Ê58 "Àš÷Üs‡Œs±aû¹€ X·0ù5Ì3ZX\¢]»¶ÓðÈ� öÓèØ³,TJeÖo8Ôa¹   ?ŒØX,}ƒÖ@ú®iÒ3§ÏÐäÄ:~ÂÒ"}„4¾!íݽ^{í :tõ]¹>E»wl¡m[Ö³®U`§´„ „þ43=Ç`½{÷ÒÖm›Ìg³iÛóA(£evì_½zƒŽy‡NŸ>ÍÌ›6®£ÞË ¡œyÞ¹l‘ª¼»}™Ö¯Ÿ¤ñ‰1:yâ4MMMý¢Î�©óç/Ð5“ÎÜܼ)c–¶ïØL<°Ï´c/ƒƒÀæ�º „(ÀÜ€eê5”Ôͤ…òß4åž7úV¹,a1à7Ø9*•2?g6°†A‹’9µp‚+ꀆ~U0úÐvÓf›6Orý1×ëMºqã?vÊôÃtìÝ“¬Omß¾Éè¯#üÌ�´@عs;½üÒkôöÛGèøñÓÔÝÓE~&ä~‰ç = ,`®€nÆóª —Áa¦"“9Ø¥Œ+AMa¨ã@ê¤óð‚Øùîî¤Ô9FÉ[\ǼÓ*N¶Žu-‹k/µËÕÍ.Ô[Þ¥ª¯{á{1à…ôýQ ôªç꼡:.¾”&éÛñîÇ1ÒñQ�‚ êpçw>Ò2rû�he-cI^vBšyÀu€ÁA7p½lh~.#– î`pïÖ~ç–Á¾ÃNáy1Ûê‡ù.P Ž C9 ¼ÏÔecÒcÌÆå°qý9 W ‰úãF³„Ù½ÎaQ°é#¦›AºK%•¤t²%ÝOέTRIåþv>Y ÝI\]Pÿ¾Ý=î½v÷¯v}RÀ¯`ÕÂ`´KÃehlÇÆØ)Owç~:ù“zu²ü·„h®N鿝™ÛçŸ|¾÷ƒ|¬I@…û»¬¾XÍ~§æNï¹;æíÄóÜïöýט×ɰw§éÝ �ãýz¾É6ëôw;@ÂjERàKÒøp·€v²ÚXM¾,nWÏ÷&b L¦ÿ^ž™˜tÄ8�Ðî�0ÓÁÒïÀAè 8þ¡ Œ^pæ«Àè  Ù ÒÃE2âŒ`€L8®Œ0`�X�f \«a9\€p 'Ožd6 °k L� Àh…29@7À ’� ‡+p Ž)“òWªb5ð nDÁ¨ òAº¨#®A}sLO;À×!m°Bà¸2FhØ´+>eÍ@º¸^cxãYêqHà˜2S(#‡‚JЖºƒù¡z/Ú 5®)sÊ¢uBùt¡ )åg**xJCƤ’J*n“ïNÅ5‚´¬ßxM¯x–wÌr8ì"õìz‰ž0D°CZ€ ±qÄc�DÈÎ?æÍ ê f¹`Ã@Æî6å¥ê"-ÌO‡d7e}ã¸Ìù|qÉGŽ4„�ÀJ-°Œp®cp­¡Ž¨,;>Ã&ÈŽBœõ;Hà< sŠãÖ�� œÚÍ:…¡î‚Á&püf44‰YËš[œIq[ª#+iXIR¥'×éXÏbÉ!k­ ƒ,À^!aá$¤Y¾Q”c(_(:PïC2¾°i4ŒÚÕlÈlh䦠R/l¶ì¬Öòê:OË;*[wxë}î.b=§†-=¦iгSÐ^�2hý£ðž²Ddíqñrx8J9m´M™€`²Àú¯»+oÃÄe"p ß¾ Ø™´‚Ô)Ž:k 4ý�Žóä3‹èï=ß:„ãç‹ÝãASž#³¬8;à;=󤳳PÌÓX wÑÆñ>Z7ÒÃa?ú̸»@ùR.~†ŽSRúÉXMˆgA!¾íÓI=?DeNܼ5EñWkãïP¡ÔE/]£ËW¯ÑÞ=»(_È[ý�árf84ÅÖ­[èèÑÓF¯@ˆÄfTh4kÖéotržFFiݺ .ßàP¿YkMZ9gù^Ì"õÐòCç x9Æú ò}ñ…—é­ÃGhÿþ=¬÷”ÊyNkþAî£3íØ¶…>´‡þ·¿ø>÷<›Þî’q~×Lg¤tóÆMª_5õ@ý™O=Mý]¼K^˜ò2T6廯àP7­;4FßÿÞLþïÒµ«×t²~ý;òù2SÐÐQ>ÿ¹OÓ>ÿG²nr6�*9zä8ýä'?§›7oÑ•+×Mþ·h×®­Ü.ÈsÑŒsÌQÒ4‹Mô<¯B?A]K¥¼Ñ}ÆX7Ìç3<î”àÉóÇ?7“-.€Qp™4ðLTŸVÜðì2òwÏqøŽ½{·ÐƉRdð œùÝ=eé¥ 'Yþæ7ÿÄ”ÿ¦qº?Bî§�.fü-,Ïs»vmãöE{°ÚS¢b^ÂXpÙ0³ó‹˜”b •;&b½>îa¨sE&:¯À*°é§fÃÄvü’k'ã¹^ç/·M¯=H@æ[a™Ñ{,9}îzó¢iÇK-¬E-iÂÎÃóƒùѰ»-cãx3± K¹T±ÏÖg•ªôÛ}o'A}ZŸ$cŽã£{墖ú) GDzØ–yÎe¦JóŒÁÖR1ç0p¶Ò)°ÂDàÐÇžã‘<ïxî¤ÀàÙÞÝæ¼“‚æÊù5fòZ(Dq_³I[¦ªÇÏfiyß'Ì”dÒÕݱún`,¼&•TRI%•T>héä¹ÄÕQ’¾×Vp|k^Ê„­ë…; ±­vyìñnWOMæ«?D7pv ‰‘MC˜º–ø7|®ž¥â®t-§÷k8êÞ)Š»þPQ’‚EÞ¯X%Öªš–²vhþYSõúdY’õº_äc °p••ÎÆî®h¨¸“|ÞoE*«;Üß‹ÜpÓéØížá‚,’r/û‡"þ“ù% îjXX5Ý0ìp?­é¾÷ëü^›Ö$ïqÛá^ôAUñRüú׿Î4±Øƒjü†ñ €¼ÀËlTˆÃbà7B€àņcxYã~¼ôÕЃë&''™­BA� àƒ°"�ZÀHP ¤ C"ò �áFNœ8A;vìà HGÙÔÀta Á=ccbˆSf ‹Åê‚ëQvüsX˜(Êà*(ÚuÀ1€!8¿‘Ê à„î\D~(Ú�Ý‘ƒt‘Ò•Ø®ùh€E€#¨ò‚Nc—á:eÌ@Ð>(ƒÖ ´%ʦ¥EóÒâùóç9/”uCÙPä« ï§…G*©¤’J*©$ÅuÀ¸s,±�@€# €f€…1@ÞópŒ§¹'áØ×ïÉÚVBs…¶§:%À8Påð"a³�lQ4Ý Þ×ó3fÝ0KùLB¯D²ïY�žîd†³„ã™"]‰ÿ 0`Ge=uÔ;ç\˜òVÁb2¥=9sÎ|òƉ˜aV‰˜÷©ÓF–˜ïšw$êˆruZwÝàîviÌcŠNaçp …�öU,›…¬§àäÁZ&ÃÀâ]¼ÜŽ`¦¨I+U‡£9^� ÏkPèsw™\`„»’Œq¯Ž´¤Ò]«»iªXT1SvH ¸¤ÉýIÒGVÔ^~È;ûóEc8ÊåeG3˜>Àð±0ÇN¿pLe  y[‡æ ï4¶à}ÂŽa¥¦ŸÃñ/eˆŸ¿kð l處º§€3ܱäå4=]Ób<9R¦­ÍzxÆG»ÌóÎPO¥Àà„"@¿ ¯Âùzîl­“ØL8”BÕ#¯E‡ [÷ZkÄñb1G7§f©\µ¡qê�aç9”ŠÁŽl+p]·oßhôŒ~ª›g×cœè““µm—©Bm  „*4¤Gèzø=PLOMÓ€Ñy,“¼r9i÷|.4:ÒY:~ü3) <6­£={vQ& Ý d¶ˆFm‘×òׯ3m:BSF‡[XXägŒÝ]ÝÆYZ¥[7¯3àüâÅ+´lî{íõ7hçÎÍ N@ÚÆÌ+ —BŽúúºÌ¹­ôßúMÝšåð$'Oœáð :«‡\&Ì5�lÛ¾…ïÉd¥ÿ£~›6MÒÐ<Fè‡?xÖèrG¾²Àe8p`/xëVoÂÓ`¡À®† €5Ð�Ná±ÄÔ# à¯P¨Ix˜3zÐÒü-/-[ç}Í­m8 '¬ úÄsÏ¿Fÿå¿üoæxu«‹F?Ú³wí?°Ë›+6tG ó˾dçî-̘qúÔYf,éëGxš<_ß8Î{{»èw›4¶30gll” Å,3E!v˜³›v´{j_•¿}k,!µfcs½Q‹ Ôî‡Ç7‡•réŒD’üi%°Ðã×jOqçuü\ªútùÊe:zâ&=‹æªtíÆ¬é‡–t¼;øÁH4¿°±@*8‚Ù)̸÷(Ž7îÎSaÛH=/À!Ì[o—ÜO;zjwNÒ¿Õ0ï†ÈT#½‚þxƒéÐå§§gxl¡ß¨ BïÑg—Óc¡†)hžZƸC'ÍY!ÉšÁ¹Öe^JÖt¾k´Ñ ÇDò}­ï$€¬ÐÏ———xŒã=‚T …²=–Iêé[æ”J¹˜ÚSé(Iûn*©¤’Êû%æ™Õ|`Iß“.ôý¨~ ݈঩÷ph1£§Þ©( e€?É:ÑÉרnݦ~”N×´;çCQþvùǶ€Ö .èB×ZkñÓi.Ó£[÷ÛmwMªë:P«Ç“›<ÚJqL!÷ƒ|ìC„¨¸$q&:ž4\½_ý»‘Õ&ª“ÜkG÷Zù·Y´“µ‚0n—÷=“ÄDy7/ÄÎIß»r®%­µ^s§õø Ç; P_þò—é`0ƒÒႦ™iadÐúBà 8üa`З®²8�h¡;ôp?ÎcG �P(PF°V ]0[�päÈ6x¨‘ ß;wîd:[ä©» ñÑ0X(B¨Œ78æ²P = œ0LÂx Å•+W¸6lˆÂ‚hè eí@úúrH#‰^ÕÅîA;¢Ž('€nÙ•9,ÒÞÙhá¡!H�x㔯˜îT¥¶Èu‚±åAÛâƒßx^¸_C® Ž8ð‰Rì*Hi �dAÝvnê¥TRI%•TR¹EA…ª¸»¡±šp¬ÀQ -7‚ä½ ‡X€ƒµ‰ÓÌåõ,‡ð`<¨² ÊhZŠv€�¦€“˜AÆIÑd‡œÏÖûÀNÐÕGAm‰ã¿ãþ®Jà(c72ÖgMa €_;™y'²0ø¡P}/7kÔ¬ÕmHa{`&‡Lñ9ãü CŸCƒÈú4#Îf"ðy—m6g Ò¨«MœA²»89ⓆwI.'a+Äù'y¡»«c=7àòùæ<Øp|qiw¤ÃA‡,v£œ*멚€øÂ¨`wD«ƒQË¢`¤¡È˪”ô2¥Ýë:Î4Mhé=š¶æ#×(]½Ï;ƒùÚ nA �˜y|~â1°@€»){HÀŒ½=}L_–™™[¼&ì6ëk±j›¶l¦Nù¬e«‡šµŒî.py4…-EœÌÄ»šÝÝé®3’ÛÄüW«ÖZŠÄ!î¢][‡hÇæA¦b!Ëìè/är‚bôDÄ6a3mv"©pŸ1õ˜_ªQ© ;«sYßöQj5¶©‡[ï³i ÄÄ3O?F£CôêëoÓ©³fÍmÆÙ•+ר9"uãöžžn£3}–Cn OÁ/»§¤]òYCaÞ€C¾Hq’Çau�¶Ázü‡?ü8`t¯™y3·˜¶3cUÂThôý7~Õè#“ôþý›g=ÇóSoO/³C,Ì#æqÞèi7èêõiššž¥ð¿cô²a^û÷÷õrýÀLyÌ›6o¢o~óÏèäɳtÓèjÏ_¤ì¶L0dÒî7ýªJgÎ\¢é™iêëïfO}úSFÛNëÖÐÅ‹—8Ɖcç%ÄÊœ°ì!JWÑ‚wPï‚qÂö²ÞöÀƒ{éÂÅótéâeîc˜ã††iË–M¬?uwCéævD›d"}+à9}0d9|Ø*ÊòÖ­›4kôE£¡âù¬1111†`°iÖ¢ñ»~Ý0å %S—ˬ 6�þ_XdF’]»vp¨�%0^ѯXùÊW¾Hßÿëqè“ÅÅ}´q#6}¬$mœÍÉ{…ëv\ø¡«Ó+èJmn_—9Uæ(鯾çG|aYŒç—z£º\ }[X&ZwþyžÃB”0lë¼(�‹V tç+×–èĹ<8}Ü´÷Mfr©ÕL®Çs¤²Djû2ûƒ¹ �…,€ë”=åáo€Íhˆ0ˆ?$‡¿;BHøw~OÖ' ¬Ó¶‘pž1p%ièwîü!$\Éò’0] ‹d†uìJ¥+J7Iu:åqY4ôý¡}!~Vž]Äï`-£ëPÐyVoîõrM1霭yêûjÁzK2ï34À9ZÖ"¬ °–á:iÏ·ë›TRY]ÚÍ5w+©ÿ!•TR¹¹¸"ù[u_Ö x¿ãOØûÕö?Âja8â´â¹ï\ØØq ëØâï$”þÆX”Á³ë#×ï :œ+.Èßz‚ëáûÐçz,éßtufÕñ4T¹†ýÔüÝu¨{/$y¿º\©ZÍÛ]÷¨Î®áÛq\7þºù»LŠÉûu-}?±u§�‹;w0è÷íïeѱ–ÅÎGaQÓ®Œk]ÈÝSû½:Á;Mî÷2?÷íG퀤$'àNeH–}µónº«Ý³Y ØåNÎÝI9nWgWÖ:&3 1ÒÅ‹mÏž=Æ@´w½{ôï$‚QŒCCö:\Ð�x±i:8¦ì X€hÈ 8öÙ¨jŒjX@`A�‡¿†q?È ,H xiâú^x^~ù娂…@L“k^츋¼,Á"Š+€)`,h@QŠjPF0@y]Ç Ê `…2w \0œà·†äÀý¨êˆrlÚ´ÉÝb†.ôÙ|¢� ”Ì Ô^¨7Ú eÀ5jV@~è2 ýà8ê‹rk;jY!8†tQv ä…"ïæ²;…tqöâ‹/rZ›7o6çJ*©¤’J*q ‘CÃ: @ãïù�BÔØ3Âë¸ë›ò;oš~Ö·ë‡ÜFÆèEŽ^g ˆÀ8R”ÈyyvðÉšNè¼)´×"M�@}o¾g猣tî–1tIÌy¶ â2[�v¯gx]Ó Åêƒ6˜YÃîŠfFªbÙ?2ì<av 0pØrF¬aƒËÄ;‡±V4åDxuF Á¥ö2œVÎJv Õ8œ…Ï´æÉ°ü—u²úèTJç‰óðN/gÏ ËCÔd"e lºxg-œœiëŠi8‚¸¬lHñ¸,¦™Çº&´À�^`P ­îã)[dÌÊ‘Éd#']“ÙZw{6n½8ìš6ôG³eG°æíîæÑµgµ:Ïßâd—2c§±P¶aüçZ`Á/°3µ²«h?õ¹o€)AXáæÌZwŠAÂ¥b1r¦6˜¡nú[«Þ‡Ýüìð´¡4ØyÍ}×:Ðl(:@¾8å²9Ä8‘' 3X;M?-–sü\†û»h÷ÖaÚ·cŒ6LôPOw…rÆ9™ËzÂìâ…–Þ^úƒkbL†!iJÀÒÝþ2Î<:zô„Yã.Ðöm[©Ë¤ï£$al„éÍ‹Âï¹€aœ(5/ü›7o¤—ŒÞñö‘fÝ<ÍÆ;¬ËG‡+T®”%$a¹bÆV@òG:ëÖäêe�sL­ð³hš1°´X£oþ§?¡Ó§ÏÒá#§èÁ‡öÑØè°É¯Èm Q©ŸCe,.\¦‰uãtõÊ £ßÔ¸¯”¾°°lÊ ,3F'€Nqýú Z öR¡'kò1áú,Jf±¨t•hûŽMôË¿üyúÿÿÿŠ.ž5ýÒ8WË]ež.]¾fž Ê=lŽÖMöÓ?ÿ¿ý_Yß*å pÂóèe¶ŒgŸ}‰þöoJo½uŒ._¹J§N¡ÏþÓ܇F†ÇL=£ï ,äEªUÔÓÕO{ÇèÏ<B[·m4úa CgÁ®Æ:Ú¹ }þøf>î*÷p{ÖêKF6ÑÛ¦L[Ì3ðjdx”†‡%G!'L=ÖxÌa—€šcSƒ&ÆÆé_üóÿ3yû8}ï;?§+7/˜¹±nî+ÐðÈ8-.Ëœº¼¼È žîÚ³w=öèÞHwŠ ÃY’Ð šð£¾’0´ö‹€AfÖåw¾{0¶$MŸõñš™c«KÕ˜™Âyoù¡äÁ¡…L†QJQ<t`d(“Ó-Yƒs(gÁÐİLS×&¿Él.'OÍÒ‰S7èì¥ëtkÚ8²ë©™3ý¥Û\É”qJæ÷¬€#�Šhr{-ѲéS ðX¬Tê¢B@¯‡<Ë€À@ĦgYQLY�سíˆqŒöÇ»#ËËij„Ì“nGvxÎü­äZŒ—Œ/Á£â¢V�ƒŠ�;¼ëyù¬kãý_6yL½|ŽÇ‰zÜûõùº „¡çeî£üкÉN¦AyßJI2–}K­» ÀˆH³.ëƒF­Qƒ×Ío¼‡ôRfp€Mü>ô„…Ó …½È³s=ÞÛž¿SIåN%I¤’J*¿hIú[Úé…™»Aa´€`Ço—N§<\ï_¤}»¹ÐÍÓý[C}»iv’v¬º^rÅ:•]™îýÿ;{ÿf×q‰¢kŸÐ9"g4r$�$Á(‰%*X’-[’íqžñ{®Gsï÷<¾ïóŒ=wÆ~ïûž¯íë¾yöؾ¾Î²%[Ñ–d‹¢(1ˆ9 ‰œèFçîÓ'ì[ÿZõï]g£‘H€Zgñ;ìÆé½kWÕ®ZUµÖ¿þá>%” ùáìO‚Y<X‚€Ð7˜-‡ ]ÖõrêÀzà‘»�hÿz”Y°x3ŽøÙ a›¯—y©Žòï·ÍÞµ0~ßjÞ (èJµûzÓa„ ~‡à¸On½õ6g˜qF¾I0,S�BÀ¹ ®Åßà¨Ç"€€øŽ{À:Áôxî°�¦Øà”‚ L H¿@ðÚk¯)ˆy‚Q°ZàÞo~ó›z@0d .k×®Õ{aðâ;Çæå0-êŸ`„@]Q7êv Þ¨3 —Ø81UØ!ÈFkÔØê®kiiIÆY ÐGL ¢}éîC?¢naÔ 2�G îx¨'ê�† ô@)HŸ‚{Ðo0šCÐf^° î¡°OQ.s¤â'ë‚rÐ?�‘à9¨+ó©¢o:$»wïV掯>& iHCÒÙ+Ü|? ¢âó3ä‰'H2Ц½3Ûò¿Ó¹EÆPik9º§¢ã»¡ð¶”ÓÓ–#”æL)zçJUåX¦+Ó0<8GoÇŸÕ=ž§êpø8GnFWêtµšg<ÈKGkgùaéLò‰³IÙÄÒ!0Š7McyÃÅ´T£¨ÎÑgãw5€ä¢}ºRRÊó‚§½§ƒˆÔî4ö”Ë¥€¤ì:ÏváV1 q >©YÛÝl}Úªuqý ë„wd‘A#¯53ÔXꈚïí|>a‚h*´ÔrjQUAø{Î;¸P7«æ œW}úŒt?FMӉ˾¢Ñˆ×r?†=ÙÃB#ÊøïQ‚åÒ@fûÑ4º ûE” ð,öw ®wÎ2Ö/KïŠý4Ç|X¦ƒr 0Êç „bœ)îïåªÃV¼¥ÇÑ‚E%’ËæÈòåsåæÍK•¥¢»»ÅÆDÁ˜3j °E¼#B‡¥H˜»ãƒbr}¬Nrëã²sŒ¿,O>ù¬¬_·^n¿c·2 ´µ7+�µ[ "ÍÑ'+]:Nê~IÇ�ú„eË—/“úÁJ]Š…lnd{7L¹@–“’›îÇOÕ´­­çTÎI“`|´:'qAÅ®OkÎp;ØïÆô°²&¬[·F¶l^¯@&°Íĵ‚œ8Þ/'OÐ3ÃÆkäÀÁý²ióZ¹ë®Ý²`á­÷äDIúOÈ×¾ö w^9)CƒÃòò˯ºkn“… ºÝ»è’î|›«s‹ê£ÇëO¤°8°ÿ¨Ž=¤jlkoÑ÷�ÇñcýîìÊâ”aÂ@(p€ ¿Ï×%ùÁ÷ÊÖmåOÿä³îyÔ§Bìpç¹.9yb@Yp6ð£ÿ”±èŽNÊ÷ïM›Ö8@ÇeųNi¿¢]ˆ¢Ç܃.ÃX9qü€×Ï`×8"CgG\?¶Éºõ«]]z4EŽÓdÊ`ç;îrþ½E,ਮÖJZÆÈM7o—;·ËË{ö»ñô„›»“rìè!M™‚w¸|Ù"éh3p ïç®›>%Fäu‚b±1^œíâ™)À €ïrÊØfÜ‹³6t‡“• ©–èÊ0@Fubú2`hàÿb½ö§²ÎcÎ-HµÊyfà¥Ñ‰Šì?0(ϽtB:.g†FÕ lA`;rºo¬´Çµé¤4·.“|q­ÓHQ¹_Ê¥ã2<4,e< ét\{ZšZêÔ9¥¬Mn¬þ¯¦`·Ø§Cޱ&Ü•ó�¯jM×C¤ÀÒuAÿ¦x/edÒ¹QlJ@h�uÐîöM^Y],ÍEº>…º%Ôÿ\³9ÇiÄû‹Ì¡¾dd+Æ*m�\M’6 ÚGB]ÌgòÝ¢Ì|d€­lô§î=œîÀÇÞ+£9=XR £X‹| ¬Öìý&€ ¹É” ÌÛ‚Lhï€d#Jq)pÐHCÒ†4¤!×·„þ@‚äyf2pAUíë°Ñ‡û¿‹ù‚p/| ô[„g >ïBuÂý Å>Ï'.E˜÷uüBÏ B° ™ÈÙO—ZìAàOÁ¾~”°—b‹Bàó@9Ø·às9@ ‚I�Ê&súl‘YÅ`‘Tßo€‹ëlñý‚¹Öåͼ“7û³FºË½÷­üýZ“‚…ñ¶Ûn“íÛwè‚ Ð0 À¸H ,èpò‡èF,HXq dž…– ,Z0ðâ{lp/ÊÁ†Ï4è€^‹M@ (×à;\M�Êxä‘G´>ïyÏ{t3€ ÅêÕ«uE¯¾úª¼þúëz/ ƒ/¾ø¢^‡kp6¨?€0"¬\¹Rëëad ˜Ï#ã�hîÅï´å Žè'€P�BÐÜè0 úý‚öâ^ô Æu\`6 à^P°røðá$íú×£¨?©¸hô KþwI;ÊDŸáù¨®A½”‘ÄÕÛhAǵ짟~Zë¸uëVí«ó!YÒ†4¤!³C.UÇÏVFN”øÜ<蓉 8*°G0pA¥<mQ¿šÃ(ÑÍ!_õÌåsΆ4ЙSóìö(¦ÿ²°cì'Ôñ×âœÃ¥ ·~éG£póÆf¡ …¦¼QéÙä)äcÝ'9~×½süŠ aß“b”‘±5_L+t 1âƒ4핪9ÚAϯ :”ò¼¬÷!*<ut™‘øt ©ƒVû¦¦Ïì;eÞÑö¥ \æpž�|X”-hͱßÁ>ÔìŒ`ɫӲjõ‹D.ä›´ýÅBM÷e Ö¯{çRï@#¨…ÎÜÐùD°÷}VÇé$ÏTìʺ(+Dàh#%²0HȆ:­Ò(+¦+Á {ÐI·ÿv}Š=#£ìyÒöû¨'ÞŸŽsr* ŽIDl鯂¹÷Wtý2·§U–-ê– }óe}ß<Y¹¤Çõ—sºwžÇ˜øÂ<Éî;>#€ÉÓÅSÄøß%©'�ƒî¬Ðãž Æ5:ûr>ÚºCÙ÷ž|òyú™d߃rË-;eËæ Ò?= -­ÍÒT—ñÑqe6×÷©F¹æ‚Íá¼¥í¡hd¶¦îÑ!ç—(aGI·¹d®üñ}VÇôŽo-[×¹ùgQö-­íÒTh5'¼ëÔ_ø7?'}çqùÿýÿÃÝWsNé6™?wž:GG'Üw‡dppH`Tœ–ŸþÙŸtgœ•ÒÝÓ¡L èS ­ææ6™3¯C–,ýIùÿæoÉÞW÷ËdiR¾ý‡dÍêî¬wƒŒŒ¹³ÕЄžc†‡‡Üm\Þýž»ä‡>>GvíÚ©ý 0X;^}õ59ÓZ&ƇåÑGž’C‡¹ko“+ºþëpýÚ© 00œ8~PŽ9æî”±ÑwÖk‘!WÆÚ5keeß5#"L#{÷¾®åãúGyÌ•{XvîÜ&½sºÝYÈÒƒ€™¢4U–áܸ‚-à$&{Œå¹Æ¹å´>xL8,«×¬”ù æJOo‡¾H©d 6œqz{{\ßÇê°Ö gÓ©’ÍÕGz^Ö®_)7õ9'yQnÞµÍ}¶¯9NƇâ�ÎcLN#ù£ÌzRSw­)3 •ÈëðfÕK¥i7>+ÓIt #üô~üçõ("’êzΦÁDõÙ” )QÊ A‚£äÆØ‰“#òòž²gïq™”)Ÿ¢kJ¾Ð"Mã5«IÀœûј{ïÏ Ò·µmpïvƒäšVH±íiË){RçhZ*e™\5¯óÅêj(€È³»ä•ÉýËgsÜ;§†O‡Ef(²¾¬ˆ±ç 刲\ÄÖ¯… ‘p­ÆšEUᘦ3 Á…!`‚ï2‰4uÏ !íóô~:>”cÚNè\œÅÇ'Æ4µ-ô™>%Xì²±• �žµ„¡"¬§ŽWŸéÊôŒ{7®ãöŽ­MX“0Þ¹Þ ?Q?6CÊíp %®d×Á‹EÍ6¤! iHCr=™CFC| 49"X» ÈJvÝ SPP¿åR„{”C@xxœi­ÎJÈøÀ4søZ.öìd”œÿ£:Àþù€ u`ßÀ~`Á ¹¤¾^NBæô ìb¶©pÏL_./V‡ëIfuŠØ"•·jŒ=ßáá­–q¥åJ<ãJ¶õJÁ¯Vß]év¡g^ Ýw9Ï»Rm»Ð|¿ç? �`Ÿ¸ñƲté2(ØÁ[Ôù£`€!š)8ð;A `:Àµ0lãZâ \ Ê…!ÌXÐu‰ûÈŒÁ?Pl<À.Ô Ë—/wõ¼QÁ Ød�€À<aø Œ]»vÉš5k”�@HsûaDe^.\ÃÈJ€0 ¨Œó¨ûmÀâËh@n¶P´÷¢®øÝ"²N'ý‹ëÑOŒ€Cÿ0 6(ýFÃ<ÚKàs˜…9ÌÑÿHƒBð >(ƒÏ¿q/€L ‚ç8ºa#ˆïQ6ꆶ=ËÍú ¨Ö[n¹EúúúfUN²†4¤! iÈÌr)t^7…uÈL3nT=ø€yË%I ižú²:C£(ÛO‘FÊóEÍ;ý}ÞOu”Ä ÞÈùT´5›ó+{G½E.ë~i0ò‘Fh#¥€¨œ¸mZŽ…Ïç ‰CŽ;K—cÍ´sJ„QÖÌ_oѾŒ¢­%�sîG Û†9}bm/SI””œőiXúœ¨è@7ÜŠQ²P€¿k¤r.òNE‹´µ4Þù–/x£’µÍö.ˆl¶ýܤs`1â»­­]Az‰-Ÿ¼:œ3QY,¬.¹|ÊP¶ÏDo*{÷æÜÍù§ù_³Tìdð +A 4”éûÐýv>i „Ï SŠ0r*ŒºÎ:¹X×4z;—ä³mv™J.Y¤iNjÉØ¯ËU똚ÆÂõSKÎmÒÚœ—Eó»eÕŠ^Ù´n‘*Ú[›Ô‹ö¨³ÌùjÂ�’÷i3L¼£:Ñ7æ ˆ¢¹Ù¨t:Ò˜öÍû¿+g†4âŋtŒqïŠö ]�S#]ÇþýG´ž}öéq{�râ÷åRYç×þýûdûömrà [% ?W¿‘"«ñNFÇ&Üü+ê¸EZ8wuûñ\)×ôÑÜÖ,¯<»WN£ÇOÈÍ»"èT�J-vç—ö.)MMȯÔ/˜¿ êq} v…ήNY±|™žN¸ûÏœ9­©7zCn»m·¦ijÊ+ãÎ ˆò«€C?þ/~LgN`¶ºsË—htB8ìê7¬Ì K—-–¾UË•9¡¹%ççXMæ¹÷|ׂ[eÓ¦ òÅ/~E{ìiÙ¿¯äβsçY¸`ž;›,rã⬌8GòÀ™!÷qã¬Ø*7ݼKÞõî[eý†Uî8_ÈB€EKk¯Ì_°[6n\/_øâå±GŸ’×_Û¯à‘-[7ÊòeK]ýMÃÒÑó Î\ ÎS Dkk‹ê´S'ûhqäèyíµ×õ ŠM›×ÉÜ9îìç®kiiuó MY0�ÊsuÅ=p~#ÝÇ´Ó3+úÊ¡Çdã¦6f‹Y‡q$!ð';NR¡Ž‹ë�fHk¢ã:{Ý›“”ÕhTªµiMA–…pžØIêXT¨ ó¤–à@¢d®)þÀý¡R­)àd|rZJn|ž:=&ûÈË{ݸWv¤ˆŠjn݈ð1–#˜§UÃL`ƒé°‚1KȳNïžrspµ4õÞèÚ3êÚqÒ]?ªs펣&ŸF)‘bÏFbó¿Z¥ƒ?¶Ô>bìÊxY:Ö­œ±Å5>ðéEð]‘�ˆHÒÔ5·žÄ‘0½ òÔ«tZ„ï‹B°Ïãœûa*1~¨Ké1]š—ŽNgioMX#pÆf*"0¦äƒ4!!5¶‚7Šyß7ÞY]E½MÆ ‚òÈœD0£nC[a¶Ì°/Â\è!#ƒÐyQîâùçÒ†4¤! ¹Ö…LW$HSaÀ¶¾ØAä|MÙó÷RžOfúý \ÉZq!™éÌ_~jʼ€ÑúBB`?8GâlÉÔg—*!ûÏ·d5¿`÷Ä(uÀï8û¡-¹ËØ{pÿ‚½?Ê‚o†Ì˜³EfOŠùþQ\Ž\i‡X&ËÍв×\Ny—{þí™úä|×½rµX!ÞÊ{«×]îµï”`q¼ùæ›å®»îÒ……(J£yŠu!s‚�ZµMX˜±IÀõ�`aĆÀ@áÀÇ¢GT#)1ñ,”C=®C9/ ��l p©§öîÝ+/¼ð‚¬ZµJ>üáëf‚ (`8À&ÏÄï`›Àb 0 ­X@äx饗Ô0‰EõލûÒ¥Ku£D`Úzã{”‹>Àueä +™‚Óu ^0ì1•ê‚¶„m#°ƒ› Ü‹¾´H,£e=ð üÁ5ÜDq‚,!¨ž…òœ`ßLAýˆ÷†>ÂOzðÞR¼¨iaöïßï ©›dݺuÉóð÷ ÃICÒ†Ìj™­à‰K•Ð ûƒTï9O¹m×Cÿmñ‘²‘w¦3êâò-úïÈðLp¤¬�„±9XÂ+?uÒãÞ’F\—4-‰åœ Y½JtØ�@ÀFê1ÇoÕ³NÀ!L† ¶?ëäQB.ï >¢Ù9¬ãiêåïœÉ�-Diº“¸VKÎÆÆæ18·�@¿%©(¼³Ñ@,Ì1o©B¤°ïjœQÍ8£DS€Ñb||L÷nûª4þæÀã³ÅGÄžÿ{Gg}jþ´ö[_Xß—êX#Ìq\L>aD4xq: )ßS'n6z˜-:øÂw4SŠ€”>Ã^—©JÐ7Ø/f S!¸Ïx`NO‡ôºÏÜÞ6Yº°[ÖôÍ•UË{¥Ó9 mÀ¡œeЈb!sþ©._D¦G5·gÑ;ÚÛ[œs}X-6f5K×c´¼Øcúƾƒ ¿ãö›dÙŠÅšê¢CÙJb·¯”Q·^±r…?qRÓlLŒ·»ýûY7? êXÐOGš’… (À %c¦™Yÿ…OìôMÉ9å¿òÕoÉÚÕKdÍÚ5¥²›+MZfÀ&`¦[²X>òÑûäà¡CrìÈIçÌ·Ô7­–®n0Š´»1Ú®ìHçÑßFî}ß»åŽ;o“µkû¤³£Mšš›tÜ,XÔ+ËW,‘ÇʵkPŽ=%ßyðQ9~ì„ìܵÝæÉÔ¤g»qãó´+ €…üc Ãß¶mÛeóÆîü0*O?ý¬¼²ç‰öä\¿-wg‰a™7¿WæÍ›ëÆF›!ŠM�TÝÏ‚»w‹<ùäsîÜpBJÓrªÿ„îžÕ¹ÑÝÝãÞ[Ñ=sȵ­GÓ™|û‡eðì€ÜtÓ®M:78îÊåŠ2oÜtóNÙ»g¿¦ù@9gG]9§erj\çïªU+•™ï�FôGnÎ\¿÷­Z!ÿbÙÈæÍäK_üšœ8qFþΓ2àÆÄM»vÈܹsÜÕcª#jÐ�ïb̹0>-žëæH§ìºis¢¿/$þ{Êš€+@…h:’rÅ€Pµªé8²D‘H˜V*´o)ƒE²VÔÿÆ^y0X&&¦õ3:æÆÄà˜>yVr¿ÃhoL Ú‹ øPŒš”µÅ"=FA�ðÕ*p‘sã²(m8k›T4}Àf¯9ýßë®™ïþ¶Êõõ¤Ô¢)ä'ܼ˜–j<­ëX›*b验}"gPÉamq}‡T ø.¯éˆrÊÆú¢&TRA&Ë;’€ð”„ D˜KÔ¥ÔKaD$:“:<̵šÞOlëgNçt.Îü8{3uˆ¦Ð“×`žŠ8¶%e¡ˆ°H=h'ƒaîrÖ™ ?K¯Óœ¦ óìLŒh­ß礱!˜‚×q= ‘!Jvð†4¤! iȬ™€Œ<ÓYêïP?“ðÎóÖ`HÈx¡ûy-×Xøx-¾Ï–“-“g²PÆÀó)——*w´=@È"îØöÐÉ=IxVÅïðEd÷2¡°þŽg(Êg³Œ°.3íÙod­ Ÿ÷g÷A׻̀œy8¸â%%/r–*/ÕiÿvJ¨œ®ä? ⸔뮆ÌTþ¥¾ƒì½×Ò»{;@ ï4ØâZÖ»³£CSdlÛ¶MY�°¸€!Î{DW*mªÓgø� �C�‹i†É6cÏ£Gê}DV¢l°1À3hXÀçá~~O€ûöíÓºl ¤°à‹4€`·�ÈÀrºæF\ÓÔdTݨ�� À°ëq/S‰0¢å3D9¢pÚöá{´ ýƒïðAýÑ~6ðAà¦!¨„uÅ5(püÏC? ßÑÌY¢Néda„)ógƒ‰}Àg¡¾¸õ¿q?™4Ð6�Lp/ê PR¬àôÀDvòY ÃICÒ†|Hý÷l—¬aÅ~¡RSÇ0SXÑ 8zíŒTKœçöw‹ÞW€J©ù|èpf×*ɵd{hr«¼[wó |â„r¿·8§,Æ�Z Škys3>­Î• � õ`‘Ä¡ ©3¾ððñßd €ÿ‰Q&¸½RfŠ”ÔPGY"ðï(yg¡’Ø'Ω`ѹ•:ú¢Z>y€)°/Å5!#Y$¬®y!ö9¨Ô:×›[ ø[Š3ÜT‚¾ "žƒ>#à�ÏVà /|Û›šš“”YCPýËm‚q¢(=KóY4¥÷ÔGídß!ŸÉïC§XÉL{x4®a¿½"ÁµØâÞÎÎéél–Þ®&™7·[–:§óÊŽҷ¬Wz»[­íÏy¾Oî cuÎ2”ˆw8ªã2!¬0’Ц&˜–ûÿé S;v®—%Kç%烸RJØÛ°_]¶|™<ûÜ‹º—}øáÇä–Ý»dþü^}ˆrGØë._¾Øµ{‡ÛÏö»=§tvµK;›=ÝÒíÊ)jäx›ßóRGldó’ý™ô­Xš(’:gìèØ¨¼òÊ·wÞ+Û·Ÿq{ð9 J˜3§×Õ·SÁ­-Mn=©©}®äó¾$ƒgåìÙ9Rò@�«ÎÑ3ÏÉ“§åرrûí»Ý»hQ–™réY¦4 N³kkkÇ=÷¼K™(þ?¿ùM›¡NOWǵkWyÆ”V÷Ìieijx`¾Üy×-îþ¢ä´=; t~OŒO*Ódzϼ û÷”wÞ kÖ®”9sçè³:\ÿÃÁ~òd¿¦)A_cœ¬X¾\Ö¬Z%Û¶oQ–3ºÚ»V°Bo»|ïÉçä•—_—ÁÇeà̰¬_¿Ê½ã%®Îíû‰ñ 8#Sn<îºi»ôõ­ÐT>==]îüÓ¯g°•�t…nWÐtˆJEbßò4æPU6n^#÷MÞ+ŸÿÜWÜýrìh§,Y|BËÏòzV¢Q` ¤›ij^¤Lø{.²÷<“a}&™i]Ì)#CAuK$¦ç�`(WË^ï”tGokÓU„ç­pþÇ~ šÞ3Àëa  »@ˆÓƒrfp\††§äÌÀ˜;9"'úGdpd\Ápj¤3‚?\UñC·Wdʧ¶ˆ Œ/�ŠTw¤%oì7Ee–((…Ó˜ ‚Àœ60t?‡\º%uº>èv×Ì“J<êîrUŸ”BTÖûU?úu"™q¤ G�Lx.oàoÒ:W¡Cj–Þ¤3ö‰œïC’åhŸˆ1×Ī£rI®O èú� ÂwFX†Nö}˜"#-ÓëèØ³�¹5,ÎY™˜Çf±@‰É© ÷Ÿ´EXÙµD'Q¯3@Ãè­ËI}É\dúÜì3`m Ó‘…u%Í7×2o„ ?Žíð÷¼΃dœ6l iHCÒY$á~�vuìEάÀ‹éÝp~ÁÚ~> “Y`„±1¶éï('\Ïgª#ïe¹LMŽïq–Âþ’]×yXÿM¶ÜKE˜’ã| Ìp¯ÁýÙÃôæaY@{XϬ¨ëÁ÷hY¦­ð~‚Jp Ú”îa9³Ef Àâ®»îTº÷7ÞxÃ;ãt“É íÕ’wÊéu-‚, ³±¯Ï'oö\¯ŽÒìp9÷]ê=ëÍ8(SäRÁrMú� ÛÆ5EÆœÞ^=ØÃ€aNP3�’”¸ ¼å86:(8å±Haq¢A```@A � -O^‡ûñ7°198S|0')®°àµ×^Ór¶lÙ’ƒ¦àóP)6ÁÈÀ<Ó�Á|âØX0j�\ö£ �$�,À5Ô ”È6܃{ 4Áýø ®N Îx^h´F½p/Áø×¨‚ëP.úÏ$+Q¡DzààDH󉺢­xó|£¯È`{ðñ´uã»C9L[æ ê¶sçNe a´ ÓŽ\íu¬! iHCríHvoùý�¬°C¾QC,ú7uäÕœ20Àñ¡Îf| £ÉŽ 4áŒP†c°ŒTÊS®t®¢wTYúHB„+'®ÖQ—§Ñ£pÈÁ’óŒ Sºæ#ª¾­µÓƒÈ 'NC-ÂTFºÒɇ¯øöeL4BÐxb@Ô Är a‘ÛöÜšgéˆS¬êÛï)ÍãH¢ ±Xªñ�”Zò^X_3¦Ðcà¦þ`=±‡íììRöL ³·žZ`ˆ)øzÛýT«y …Ÿ¤]06°fuæ3/Ï`i”q®Ž1$39?¾Òè'ޱÐP…=ï ª¬ohð û‚ß1'46%`‘8R‡DºÄ¼³­ óæ´Êª•+¤·»Yz{»eáÜ6Y4¯MæÎ1ö:ž$mñã!â˜2à„}üÝ‹9«ê˜EšŽ¤°  Íxãõrâø)Ù°i¥,[¾XæÏ›‹—ê£ï'tÏ;§§S&'Kú˜¡³#5_(j¹š2§¥(}«–Êî[wHwW§‚Æ‹~LärQ¸ÁHñ°ÎqÍÒÓ /Î�Ø¿SÔ¹ìÁÜèëv÷·›vm“oüÓòè#ÊêÕ+Ü™e“OA9àú¹­êÎ.§äø‰ãz߇~àýú./Y$k×­vç‘9ÎÁß,SH1㜭û÷U Â#?æöå'\™+•Å¢­­Ù�BÝ-:—�vÀõ;wn“^xIû�Àh�J††F4E ˜0:»:¤¯o¹¦ñ<Ó/-­E›à¼s÷lظZ ˜ ÷ßÿ ›'%yê{Ï)³È¼á휙Ðî¡áQ9vü„=úY½ªÏOZ –¼¶8éM¤6Ù¹k«Ìsí;tè°?vJžyzÊÕû¸¦zÄøxåÖÞÞ)+ûúdž;Ë`N‚uä7ȳÏ>/{_}Ý“Ê xö-²bÅeœ€n)š4¥ÊÄø°'c®‘ºq®¦$yê{ÏÈœ¹* ~¢>xí'H9bì"{Ñ ÀtI:÷„s0—ïtwN+KÒUĵ¼²3�Laì=©¨ó -$ÎÉP$ŽLûŠâßf޾ƒºªI š£A˜ q9|rDNŒÉÁ£CrôİŒŽMédÚ2r}æŒË…V·FÕ´�[€I¤ ݧÌNOTª^Ñóy‹öW± cÆl±Oßdà@¯÷ÝÊù5GÁ„X»"ü}ÀÕíŒë7/òÝî:°œ,wí˜re€q?¦*ésѰDû• —HÖV6!â\U_'ÕW�¨Å^SvŽª ñÇ|ÆAA0E–"ûþy^'R—*Ô¹öžªÉÏ:€¤¤©^¢@ʼ³ÅÌ1€…2Á‡¯°+0ê•ѰüÉ4Zù|ÎÛQZ°œ­ÑÆ.•®q)+†¥qJáz‚øÂu(dU‘` òoQˆTkHCÒ†4ä:ž»B€"VQ¦<O—¼H÷`á=dŸÆúÍTÝ3ÉL@|Ç_ø¾”™6„’6T@ =}! ",'h„k?Ù+ð ™çz¦ô “$Üsd÷Y°Ix-ë¡ob¦O¶ ö îA=`Åïá¹y6Ù¹f ÀbùòešÃrýúu:@Ÿˆèhü®”í5‹ É"~/&39¶ÞipÃl5´^NÄìáo¶É[}—sÿÕºöZ‹nl–Ý»wË»ßý.5Ÿî?¥‹UGG»±Ð §îØØˆÏs"±(ÁxC$dd@Š ,šØl„‚ Àè+9pÀXÈPÀLaEŽ~¤¨àÎ;ïL ð,\} Ð�ÊÄ¿É=ãÀHÕã0ËÀ½¸‡@!šX¿~½"C °À€0;Ðù€{Àúg¢Îè3ܧŒ±¸mC=(Áßø,~‡ßað%sé<q? +ü×ázæI³w4¨uÃuT…„¨ÐF ×àݱ(—©Hp-Ò°�ˆ´ �W0Ý îǵ¨3ž×�X4¤! iÈÛ'Ygê…® ´aô<âDég˺ÐyâR÷—çsHÐévÃHÖébò¶œybÖ½>§:!4¬˜—&Vð„‚•êÁ ´@d±ûoºT ¢Œíïõ›¦#€�X@§¼:ŽªV¶¦‹Gjˆ¦¼Xˆ7àÔŒ#2�>H‰µrÒœ4pähtGÄçXÝùBgPµJ& cçð*ÏGT+eɦ‘`›\›N-ušWj‹EÅ Ä;3 Æà¡N¯ªÈ£n¯Iò`ߥ@ŒsèXZ–À¹™+(u<�,LÙÂ÷Ç<÷¶œ’Òô¤æ¼Cš¡é”™"e€ì!¸ÆQ)hCAâ+-œ{ö“{Y›ƒqàgªÖEÙ°ŸÃ9QO§š¾+Α,+HØFÎk3$Uýø°úñ>´ÎÑÎöfY¹´G?‹æuK¯sØÏëmÓ”]V:á" :~‰­È0T¤‹z‡0žýÒK¯kú€¾•‹%_E$¿9mpá>’k“-7¬‘'¿÷¸ ‘S§O9'úÙ¸q½ÆÅcL¡F`P�CCÑ9$—,îÓ1>4 @w‡´µ�]Ê¡ bwmÞ§¡a¿ÖéìqË–®õÁû®º÷vøÈQùǸßí÷WȆ«Ü\²‰� �˜ÞÑÞå~GÞàVÙvÃÙ³çuyñÅ—µß[[Ûõ9Í-püáîug­·‡•‰ÉyÏ»ïtå.Óºa~7ésASÛ)7Ý|£‚­}´C¾ûèn¿îŒ¸#:O/Y¨ç¶‘‘i”áÑaÕï»ï=²ë¦šjdÃú5ÒÚÖ"#Ã#:æ±oß³çU8<°\.ì•-›×K¹»ìꇳR –|´ÎÝûÄOÊÑ#'ô…v._¶\º{º´?QØ/ ùH†‡FÔ´ `‰èwíÛ°aµÌ׫s©¹©MçÌ€;O‚cÃÆ5ròÔ ;-_¶RÏd½½= þhooÕ~*jÙÆ˜ƒaÔÞ¶@»s @ÿôOß”ÇRž~zJ&'&ÝßwùÔ*MÊfpö숞SpvE9­-Írûm;eó¦5²bÅ wžtçŸfKaÁÔé''ihExƉ¼:ïç2ÙY 4¦:Ù3é ÷ú©¢úd Aöñë‹£È~_ãÜÁˆ‰-ÝE¢#t¥éA왑L•ª28T’“§GåDÿ°;ÓMIÿig<5êÆ‡±¿DªÏLïØWCªZ5Ñ}媭Óî©Nº±ˆ÷ÑÒ–¤³$‡**åd­S#¦›MÛD>Ý•F$6–&µ}jÚ,÷î”Ô£îž÷ç.‰ KÝÏQwíˆë¯A÷þ+Æ#®ß«P-è{èfå¦Ðg¹^:T%ÉÙßÑ6½/&;Cjj®xpDÂnÕ§b¢ÞeÛÑn€N H’óëAý>¦L€µâ8H)*Ÿ3& {VU×{¬Ódªù÷biœFô>Ì{1וȳٴhª.0‘±“ë9À‚þUԭݶ—±µ7˜™°ýÉû ØTB†‘z@EÃ6І4¤! ™ž·LRv‰ô h@p¬÷Æ ×”0,@èGÈ®™YA œ¬Õ%ñAY› ×äPA–6^fá™1\×C@Ê 6>!ÓÃLv$þd �…0 3´CE3€;²À¦NÇO´ŸÐ~q±2ø;«x>ÞK,öÉl’Y°€“ ŸnO“ˆƒ%œˆÈ}‰üš##£©Á-ó2/´Iå ;®e§úLu»ZñK1@¿™r®§ƒÃ¥ã¯y+}þVÃâåƒqb¹Cébïšu„^ºé¦›4ýôˆRª”Kšƒ, !K�`4 éøžé( ßÊÞ0Iv °V`1Æ‚ ÐvÜcƯ1 -Q¸×ÃÁÖ ”‡ú€eƒ9z±¸0A ø7ÀÈÀh3�%ðo�5P^Ø6<÷ l<›9¸V€°\2Hðþ à@Œìââ¶-^¼8a `Ú2b=‰û˜•”aøÀ€BдõG]Ñ—¤²bÛp/ÊA½P¶ õ`Û˜.„)H¸.‘º e?óÌ3zý®]»´Mè[|O¦\‹r”†4¤! y{äRõ-Aw¥Ré%YàÃrö`z>¹Üó×ÙÀ,Fi2ÅÂ¥ìã¯Öþ648¤Îêú¾D4²åéXIÓFÐ9oð4¿»•kŽËš–�jÆd‡G. ÒD©‘}F€ˆgÓ¨ùHUî6©ššZ”"\ï vqœDŸÖ4õG!©‹•™Oô(—¶ÑÚÅqQ³ÈaÔµg6 L‘¦ÛHö̉ÃÑ ªX‰òyu.³àŒ%}>™),I¾îÝë‡x`-à½Ø{Í«3 ¢� M§R‘©\^ÙIN,°0:—LŒð%˜ÔéßSV Žó0G}êÔOßU}¾Þ”u‚ï$œ—`òËæ»ç˜²wW Æ&˲0ŠzìKW,é– }‹ÜÞ»SzºZdnO›~Ú[›ì À¨ÌëCïŽóo*’™)þÒ¶ðÝU+¶o<|äˆ|û'ݾº]÷¶}«–軀sܵÂ9ß±ÿŸ–…ÎÞÚ^”£GIÅ9ü»{:Üþv®:ó9ÞK%‹<Z¹b©|èÃvÎż‚"æÍíIhoÑÔ)¡±,ÔˆÔGYˆöÆXBµ4·$zh|jBž}îyÙ³w¿?qFŽ»}ÿºu`j˜/Óå&?_*i ‡d|bJÖ®]#o¼¾OÓ] uR`€92<<*oì=({^yCÊ•)צ'Ô´ný*uh×âf¿´7wð&kݳðîûîrâØIõÒƒ½¢Z3@Æ1Ї7Ýt£,^4Gvì¸Aç;˜š[ ²°uôºþ[¸h¡¦ýøÚ×¾)ÃCã® ó\;›Ü= 4ÒÞaFGœõ�–Xµz¥Öù–[vË7Þ óÝù@ôúsÁ‚^wNèÔsÏ‚…óä+_ùš¼üÊ^9Õ?à>§eëÖM|TG[‡gSPv’¦b‹+óflܰm£,Z¼Ð½¯&Ï{6ŸŽÈ†‘²àŒÚëžwÇí·È wzéå×5õî_èž@æ-ÎmùB¤}ÒÞÖ¢m[ºx‚-8O£¤`{fú$:)Ž ºˆÝ¢:$ò ®¼- ?”ís>™ŸS©®ãŒ‰£º9Åé¢j0ªwÄ×ü5~- ßg‡F娉a9rbDŽ÷ÊàДŒ¹y4>QrãÓé<§OáÄÏ‘É!g¬H<›3bU#¾²ò¤@¤™Œð9ßQ]{"Ÿ~Ãë_¬q^Ÿ«å¹±åj ÐBÛ¤:zÂ]:æþ1èúpž+Ãõó‹Ý÷½î»³î»!WfÅ·Y”U†ºê ¢?NYެkcr¢¢1@ïæê\;‚½þFºê0EF-ö M'zW‰˜²¶¢(unDY—çðÔØŸ‚øà„¦Î‚þŠô„ô>f7(%ëX™:::¥USäàK¬ïøžk¯±m{·´S«ß‹…`“ªÑBIB Û݆Nš«bìjHCÒ†4äm”,"] ²(×,C‰ÐO”œég(ŸLüwÖîÀßyMÝy:¸'›ö,ü𺰞3]Ç2X&?a@= Têú‡§Ï%üŸ›µÍÔ×iZÎjÒŸ3w³ådŸE;A+Ùz„mi�,®Q!]=œ—p¨ÁYµtéRulmذA¶o߮ޱ}ûö«#±ßF'4Ò¨ž…4  03MÔkMÞN‡ÿ•zÖlp$fëײ\¬¿ß °Å¥ßwu@WR`0¼á†Ô°ÀpØC`¼ Y NÀwp´c±�‡Nƒã@8h˜Î4¦Ý�(€¨EíÔ¸æ™HMŒú@w‘•©EÀZ:ìØ±C¸,Ðw|Œ€�iÀñÝŠï¸ø¢~�²q¼ãùJë 1hA"(› ô ˜`üEß0] Œ-(mkÀ#h/ú:þðáògÏyñŵ<´ìxúŒ}AÖÔ`ÔÿF]Y?\‹6`}Àõx¾#¸õÃ3¹qÂýF«Ûœ°q A` ®°? xA›pêˆk^~ùe퇻ï¾;I ‚²QžÇ 6(¤ÓjHCÒ†\] Ïç~B/c=âÚ,Ã}_x0eF¤y¾gÞ?‡ÿži/™}:…³÷††x®/Xç°ŽaM£C5{¿Ú{ól½°¹‹<ˆ¿À9Ž“wš´—!+SXä4D>WÔ(\‘¸Î0£L±9ˆòù(p¦;c„+;Yš^v‹r­¤Ž0cUHiϳu6§JÑ9‹J™OÊq݇4·ž³W¥‘gÊÔQu.û Þ Ó…T«)CB8kà€3çc5qVÕ±2DH·Q¤QÒn} G|a•�T"'·[J{fJÅjN´jà(*ú~/k¹•Ê”^£´÷®~­-mÊŠ� Œcs”Ñ‚yíSPY<˜ö#5†ÁÁjF§|0z uÁÿÛ`ì³´_mœÓgÑäÕºñæ´åµÜ—±ýœkôv5É¢…seýÊ%²aM‡¦\�kEw'€»`  ©Þî`é¿ճR\`æˆ%-»_™VjòðÃÊ#<êú¹Åí¯›xTSV,]ºÐ9öA¯uzz¬,÷Ü}²-<ÿÜsrÆíO‡Üž<—³´† ÌwûÙ^e¼èë[*ËW¬Î¶VßϹ¤OÏ'ì3°-ì}ý€lÚ°VõÓ2Ÿ¦qŽú;ï¼ÝýmJøÖ£n«^C]çÌé‘©ÉŠLNØžøØÑ“º·_¿~­û¬QÖ 8þ»ºÚõw8Ø—.Y(‹]ýç/\$_øâ—äùç±ï”þSý ²hïDneW÷úiHŽ=¬‘ëwÝu»Ú‹Þÿþ{\›—)ãÀƒnßþšìßwDÚÚÛdØÓnºéÙºu‹Žgè8£{{æH“;kÌ;¡õúÛ¿ý‚_Ã:nçÌéÒþZ¹r¹;´HWw‡‚P–ÎÖ÷žNÉ÷¾÷=¹ãŽÛ•½ÂÒªôý 3þ\w®Ü,ßyð!w:¦cõ׋ÒÖÚ¬)9Z›--"@ÇŽŸ”ƒ[$ž›ó‹—ÎUpÆØØ¨ê@p8=Ô vŸfu`Û¹®¦@0—àÙë7¬—={xrã¸MzÝ»€NÄÜU° Ò$�ÐLD}\¨8ÿNÁe6Œ¥`0)�X¥:Äõ/˜ L µ†O!å9â ßD  �‰fœBµ8’@fe$k…:òíw=w•×Êѓξ8:ál‡TL•ÊI %Þ´öX âX)0¾-*ÒÀ_x8rí¯Omq®aŸŸp¯î)T?AWçŒÝ`A°y@×£†»ðé´´€ªö­{óîÝ»y ,jµf÷Ý<W¡åîšù2]=íz~HÜð0FÍS—Ä`‘3–'‚"ëq°\|{*µœÖ…zRÌc-J×§Ð ²MÄÒCÙu À"Ð)±Ýh@–B®.Z5Ëø ~”ÈyöiLCš:Zjš6‡¬�2’sttXŸÁHL¾²°Ü\À>~fSP?†é?²ïŸà¾ÐÄò¸V%ãè·;6¤! iHCr©‚L¢ä<ˆ=Öi…†àÔ,k×Wî5èà »mô\§SÖÃúº„`îcpÞç¾�þ†0ýdxö¤„� ™³Qì÷ОéH€3>7 Ǥ÷okz>Ï–í“°_Âzð|˽+4PN68ˆõ Ë`}\Á¾ ÏG]B&ްœ°M³Ef ÀâèÑ£úrxX‡“T&xÑH#ÒÞúÄÈž÷)Ø¢\!R»vÎ QFaNÕps{­ËÛYϬöZìŸðt1£ñ•Œ\©þ¸ÚÆnÊùœ WûÞK|‚\ÜøøÎ ;wîtô÷(âĉ“ œè�ûÂyJ{ #˜àpÇõS�p�68û¡¿à¬ç¢‰kŠ "‹¢ˆ˜3e¡è<èC �b°¼e‘.tX<¿ñoèÂ÷®w½KÙ-p?i” E¸˜3 ?nRpž€ ¬+îÁ3PWôê àÜœ Ý_nú{®æ®iºeË–©Îës±¥)E §85-Y!Ð7hêÁzâÔ Ïƒ nh¸‰iƆÿÆóQWÜ‹²™®C{Ñ�GP‡pã…kÑ>ÔuǦãŽ;îåË—ë»Àó°f¡¨®Ã}Lr=¬5 iHC2[d&À×+Û!¡C|¦=_xž# ï©Û/÷L:•ñ;Ö |BÇKXŸ,`"['F N\ÿ²`᫹¾=ÆnÖK&•is¦¨á¢ ÔÜšò"b4oN@æù¡Ó.gNm8Ã+Þù0B\•4ÝëPSGY^ÿ^SGaÁ•o‘¬¨WUË Áf¨I©îážÏ7Ik‹E€+¥¾:N[=S…½“š»Ìµx:u¢øvÁV Ù3'm4™sõ©%@¦#©úˆ[sæÁoåÖô~cȉaR£RK…bãÀÀ80{f%@ÀyY‹cJGK—:íþš{'C“SczŸ»¢§a¼SP__>$óH–̓éBPWŽÿÐÈfó¯fîÞ1kçü¼w–Š:žuƒNXFã„,}>¿·MÖ÷Í‘uk–Ȫå=ÒÕÑ¢ã²Ý9ÛœÓ:4HÙøŽƒáç«H7mÏÉ¥,ØV×µk׺=ç°<üÈó2 ÇTS‡sSK^ÆÆ[½#ܘU¦¦�°è« ŸüÔËÄø˜²3D¹XÙ%ÚÚ[=øŠÆ9w¾)4ã#>Ç1ÈwÀñÑÏáu¿½ô­·Þ¢éu,8GtÁ•ßéš­Q“3NŽÉšÕ«äÁo?!§NÖgvuu¨“à%¼c8¬Fäà#²yË:Ù²u½ÛK/ußãœ3æœÇÝš–"vV®K{åæÂf9zü|ýï×{Õ­ïÊpädþ¬{÷oè} ÍÕr¶mߪýØÓÝ¡lhóŠ eõê>ùêWþIžþE:; ƒ®=§ûÏÊöí7¸þ”ê<7‡s-îìÔ/Ç•3Cõõ{ïý!ׯÛ]™ÝN?´Hsk“ŽÝžžY°p®¬Z½ZþâÏ?+o¼¾_ιs‘S²mÛVTX Æ.Ç\¹gäŽÛo—ÒÔƒ2o~¯Üwß=²~Ã*w¾ìPæ¤.�ØbÑ¢Åòå/ÿ£¼àê{út¿Öñä‰3®¾[¥¥­YÓŽ€•bºT‘ÒĸL¹5 #îw¦2+ÈÍ7ß(;oܡ㤧·ËÝS €mLgIÕˆl<˜Ýæ#Ç‹éhKo«¾)š ä×¼±yJõ@QŠÕ8ÑU¦oÅÀ3€9Ìéok SfäâÔ°].;=ÕÊC9rtHž}ñ˜¼ºÿ¤”¦Ë2åúé?JÜ—‚¾"í»ÄÀíó|Ó舱=>,ú”GIú‹ZÈxeŸpmIõU5ÙkhÏÒHΙ¯ë¥Ó¿±Ó¯yW¿¸"1+’õÍõ-Àj`Èðà‘ô4ˆ4"�qÝ„û9î´ �@ó%WXé:m©L—û]YýRŒŒéÇØ"jú`eÉpãAßßMÍ ó À@<ËØB kÍ ûœº} ú,_Lö®ñÏ£ºýÁ–a”'r¡±^÷ #E0Æ©§p Ù#CG†ÿZp=ÉøÄ˜¦Ãwz²­­½Î±Ãw‚õ½Bø‚$x¾±Œ½™}Ž×0E ËÑ4¤! iHC2;„ë×GcNSRr@âLv”Сí%´ƒ„’-+{}¸÷ Í?¬kÌJøLÞÃ}�öÀÙz„e†í Ù&pædY¬ËùÚÂûCÀkzÎOËͲ|ðÌ^ÁOø7ø<>Ÿïè|6.¾»Ù"³`‘Óƒò\Ý0Ã9GœŠp°á¥’"N/‚/n¿ýV¥ô{ñ…塇’SΡÅnà!ðá$¾žä´×Úd™Ét©×C®àâJ8J¯Pã­¾¯·û}_m£ÿ¥JöÐ †0Wàà=>>¡‘Dp°#§íÂ…ó*i²$�È�‡=™Â ‰0ÿþ=†r óÀÈ€ý�8 L”`øLM>8ïað{ðÁõ0ü@_Ò˜ÀÜcÜ<à;”C`Ài„àƒgã:€& ci<Âý08áy�@ðÎPGÞq-Ê¿ 1 Ô ôSˆà'®ãó�BÁý¸ÏÐm{å•W`Æš5kô''ÈÊ¿ÃØ‹2QÚ@ ú×�…Êõýç¡¿¸ñ�`ï u eÜ(ðy`<òÈ#šæL!æpÉ˱cÇ„©X˜"íå;&ÀcèÔ«Ò†4¤! ¹ú2¸B #¸²g’™œ8\ñ=Ö–ËÝӅ׫£Ú³%ðN@x ÏÖ)ü;ë-¾#Ðð|}p5`£âN adf€£­ÍÉùÌéÆJÁèØ¤­9%(W6…ôúš~§N o@Ñ=H”:À§Ë¥Ä¸`}TQþõH¯)x‡U�j ØÁê[õë?Ö}·Oh**[„:q¦§5ÚN6+QA•Óåi-+Écû¨V=szV ‘$Ç;ëö€IÑIèØL™à‚Cú í 8ܪ¤‘¯yÖ Û[2ÍGµ\Q0¦qÀ¦ý÷ƒ"tPùÔu4HE íD:¢Ü €Q "ÅÁ²Ñâöd °W ö?¹\³:|™FOÏôù:G*ÆKEA3)Ã$Œô¥Š{6kOzÆ"<÷sߊÈýð¼à ÊÅózzºä¾;ÖÈ®íËdþ¼N76íoÅ|½²ºÕ’ºK’¢ÀƒhÔi‰wh@cJC´9sÞPÅsAÑ™³šnµ(Ö{æÎ£ †å«É—þîQ9sjXò®ÿÎôŸ•ή’=+ªAÏ··]*»vmS0…î‘^Š$pœ‹9Rƒ1FÃôôöË! „¬øÀQ F„cÇŽËØÈ˜ûyBvîÜ!Ë–-5çõ”;ëä[äô™}røð3wÞy“<ÿüÙ¼e½¼ë®Ûdé2IONN¸=÷°|óŸ¿#'OžÒóÀÁƒdç®dë ›u^Uœ=jn•¶ÖNe+9(K/uçwÆªÄ ˜3§[¤•2ÆRÕNH_ßr¹ó®[<x«&cãînu·º½øÚu«ä_ÿâOÉÓO='ÿÇgþÐÍëªkÛ3î7~»Úµ-§NžVÝ>àΧϜÕó‡]ZTRuz欛;ù±‚ttZ ÆöŽf×εò ¿ø/å×ý¿ÈáCnn•0o#Y¿~45 LAîî÷+—É;·ËÿÈG4µQssѵ”¦¥µ «Ö,‘_ü7?ëêû¢ü×ßýŒÍ™ª6mZ/cþýV0G§Ëž}°){€‚úY[AÇW @®{ç2¯[Lœ¤’ÀõLÛ”/àÔ&åÒ˜²Ý”ˉ®Àðšžžðó>§�:ê+ÃôX(A€…éd(0*6F‡JÆAñ{ìÄYyqO¿ìÙwZ†F'tTñ¬Bõ…ÀC£ñžyà^ìsf·#ͤ?·'ì `?òó—éŒ8?0R«ÖÚ³ú,à1q¦CGFîÞò”öæ5�6ù¨`ú¤f鞪ÓÕDGãšiw_®ÆõÎéÀ´rCî70Z@/ΗBq‰»v¹Ä•3®ïNº1@Ɖª®'•²>(òÂÜ¡ç# � ý–Ãél žÃ8¨&í¡-€é_°¶U«ç¶ßtNÊÚ} €oì7o¹:Æ0JïïŠÌ þs‹‡vßÐÙÂTjmn>`Aï€ ë;æÊáóð%ê›KmC;Ú“Qnö™!ð‚÷f4a¿püë½Ò`¼lHCÒ†Ì ý±\çpöa`iÈð'†{ƒ0 “�X¬ýáÙ²Lñ¾q‚LùFû=÷táù/dB̦m%Ð{ÜG¿D–å!»þ'€S‘doëB抰ï²l÷8ô;‘µí!ø|gÚÐïÁ¶1E;®Aì[öoØ®¬ÂzÍ™5� P¬“j/μèOüLD#*7Ò<øôõõy ÊX¯饗Üyºncn˜ÃÉûNÈùÊWÓø9ä­:⯨áZ’ìîÍÜÿfî}³Ï»Vú’Á¨Ï¦M›äSŸú”ö˜ ÀPá—4éï?éôOs²hÌ@§ ˜Èô@ „9ŽdÀB v €8HŸÅ ºëàÁƒ @™4†c±äžÀ0�¾õ­o©ÿƒü ê?܇®�õGÝqÏúõëý ˆúáoø„\œÉÁž:  Þ4¸tZd…�(l¤éBù�1�ˆ€6² Ø� žÌýŒzc@›ÐwH§‚ò�~xê©§äé§ŸÖ¾Å:°zõj½kÖ¬øId+ 'ø ŸØ>Üáõ XmA›Poô%™;¸IÁÏgŸ}V7ÞxcÒŸ¨; txúï—‚>!À‚ÏmHCÒ†¼}º±N×ÓH§û‹¡ïC§/k!Ê3Gï峡¼I8.Õ9˜BçÑùÊ$0Œe±~ò öÁÕc–*'ÎžÓølÝCÔÝ!uÎ#Ø~òxQM#4ÔAçÒh œUï€JûpÀq.=ë†tõtÎÀé—Rx"}X51M#B&ŽhÐÞnéààÌmoïÐßÃxÞd„4"xÁPš¶H›Ê´ÑlVf w†…-¶HíB@gªŽx‰ 0]F$I¤ŽE‚ åŠÕ¤ë`Ú°~uÖ`©D¼CQŒžyéS«}ꜱÅVMÍ{öîmÍ5­ß[ä9óÞ}Ùyqþfíg‡°ž¨¥¥5p<æý^çðjÂ^Ï×;uɨ¡F† Ï'„ Ésƒó;÷ÇdLã ÇVZôž›6tËÚm)‚þbÑ®QöûˆŽg2…«„}—î“ï0làè’çŸ{IY-^¨ã ËÒdIÓTÀÉŽý¤¦€Ó8Gmè;iФ=×*Í-nuåÿíR9°ï¸¼øü>™š¨Êò=n?Ûë‹mZž¥,JGÙûªlaßõŸzR–-](›7®ÖKð.1®qNÁX‡ôötËÿóþÈW¾ò5ù¿îæÊT(«¨¥pÝ'£cSʼÇä?x¯üäO}Rß5úõkn.HWw‹2M¬[·F¾ûȳò§úîìs\&§J®œ1Y½¦O:»†]ÛÎÊÜ9‹ÝYà€ŒŸ•±Ñ!ùÀ}wËûï{Ÿ¬Å5mî|0(Ï>÷²<ñäÓ °8s¦_öîÝ+·Þv“¬X¹Tæôv»ë\rMÒÒÜíô­;+ •i7·G5 DSs$ccîú%²fí*w.éÒq ÖŽ‡~\žöEw>(É·xTŽ>&Ö¯–¥ËÉœysTÒTl×ÔG§NökÛ?ô¡ûäOþÏ¿¤héîîpïk±,YºJV¬X.Ý=] ZJÀ:žÅÞ‹>äbÿo€ïF¥4UvçÒµî|²Xì?¤ãå³…µµµ*c çn÷>Àò `@ ¾ÊÅQTŒi%â³f’ú({Û9—h+@WÔ H«2= °ü 2ÊD\pM”«é\C‘¦ ’œ!LáÙx26‡p}Mæ³²eÔtÎHlÌH§‡Få•×ä…½§eÏëGXO6BQo€b »éô†ž`ºJ¦u€¤A»Ýë.^Ëû|Oh¹YæGöÑL:Bƒv6XS¢¼î¤…­]ÕØ�p„§¨¬­ÊT”/¸>VàÇ´²&•ª“¾LôÙ°”knÉ-r:e©{'‹ÝJpVâêWƸš>P¦ Õ…ÎÖ/¤`5§«±?I!n­ò ÃÐ0Ïw§ïÿÕÒõ˜¶ZÕÁQê˜ÐuØÇlZ,:>þâž4à°óÚvé`°öÓUSÑJ¸æa_aëBÁÍÍÕod¥£{0ª5d JBçO¨k³û9®EÖOUBš™Ñ¢a)hHCÒ†\ïÂsW ° R£ÕÌ—@ íá9n&0A€q!|.% Þ Y+X§0]ìL2Ó÷aêöÅ"’ÌTNÀº„`ôIØ/Y`nØ_ü®~ïcû'œÇ/$Y!ïc}ðoø7ÂgfíH!8úz#.¸˜Ì€D!"ÂÍ&Q3pÒ!2ב‰2œo˜‹!ßÁ¹‡#@pˆw‡.nÔ9¨!!%Ûµ"ç›D ¹2’UvW²/¥¬k˜ñVåÍ3Þì}WZÈÂ�ûG>òêœÀ‚SzsSAÙ`ÄÄŽt�è|‡ñß,�ƒ$ÿ\ð £àt‡ñ‡ÏÁßa`®õ¬ûðl� £°@‚¡ ¸¬��€Bº†.Œ¨3€ �j@P€ÌÓN>ÊSst¡Þ4dà^F12ÝÊ e‘¾ ×¢~hÚ‹¸Ø³M�à9¨ú }… t:@FÁjhK²iàY�»°‚{Ñh; ¹Þì€úá™dœÀóð~Ð>|PÒ‰’FýŒïÉŽpÖü ¬/x&�è—-[¶hêôÓ‚À°I6 ´…ïí@‡ck6!;Ò†4äZ•™öö4Ö‡†rHxPŸé`BYnxÊÃÚBPbøì™~¿#à#<pgóa›Âú„�Œl4£)Èžt±¾¹Rp æ4§Ð‰¤{þ…Ñ®yï@¬iäuH¥iì)sAèð‡c©Š4Î)‰",Ú»ê8FIŽrÕØá¨ø¯YÚ¤ý’RÒ[Ê3ô”J鸠Ӟ cshvûŒQ¥Þ‡‘Œt>ÒPC`ªîÿÊÓÁX©&ÌpRZD·¥°�…>¢~Q}øœÂH^Ræç|*Äá# JÅyª C„=«¦ÀˆòÔ´w•“w¯ÌeM~ÌÆ€xNEŸACÛÇ©Q˧ÚµÚTR&ú~îÜyIšKUÓæß½±†Xù¹ný™OÚfá–Â#ŠÒ÷:s9B#P˜:ÂwFÕ„†§Ð€–4s¬¸ºw)cD[kSvˆØ÷'}U7k‚é‰þSÉ©Sg4åÅ3Ï</û#¼¯o…,Z¼À9¾;\Ù-ºï„cíÔ©~÷pŒcÏÉýc.Ÿ:è,…� sd^¯Èrw6¹ëŽ]>¥‚=?ÊÕÏcj©ÃtZÞƒx<ÓgÞÁ¾Um(nþÄOÈsn?ûÒË}rÓÎmnïݣϟ*MI[ç|imëp{õ9vç˜HÏ�š3š|Á‚y (9xðkÛI·ï=!§ûtϾë¦-îŒÒ­ïÌ!==JÕO Íâ%óäöÛwËW¿òuu‚ÂéÙŒt3ýy/Ó¥WdrbÊ•³AÞß{åckV¦Døc -k[$‹—.–»¶É¾ðeyú©ç•½àÑG¾'§Nž‘›Ö9½Ô,½Cã®ÿdxxDNœ:æÚ3*½=såþ[n½í÷®–ª¤€€š]ûW,_(?þ©”Ý7ï’ßý¯¿ïÆÌ)MOqz`PÖ­ë“5kV¸s‹sÒ¶u*› úiJæÍ›/ï½÷]òþ÷¿WA$]b€ ‚°&G6ß Ð3íÆöèø˜€�Æœ°\›ž•ùäÊC~WÎ œÖTííÍÊ„³SSs“´‹uºÎ@LášRKÆÏùÝ6³õȾ)»ä0]—É)°#L' �ÙüÊ6;¼;¿ž©â°™Tó AJö‹õBäu¾wÌ'Ç$¿fL—« È’ÃLJä™=ÇäƒgðÂqŽg.X°HûddLß±±8ˆ FëxLJç8:èËeû¤ëj>™“üFð¥ÆÿjݺſÍä€O·TBªs¢ªòùfOEû—Ù:”O€è°]�¢UÅÒ™SŠ€°¾T‚ô1¹‚[cOIiú¸ëÿn.vcgƒ\Ãîç)W6ÀUëo´i¼ª‘HXº¾ñ뎂2ì_ H ´\Mu¶�êx¾{¶ßôW}ú î§x¦g Þ%÷‘¦àªÖ<øü|ÎØRø× �VRŽwúH^uÊ….È‚Ï&KfšÝ—q¯²–@lµnKסp?Þ–=›í„ iHCÒï/á9>&âü€0öMY Eø;÷N8g`}†pïÆu9d«÷^¡O™k0ËÁyÄ‚Zê˜!…„€X–Å3<mIÜ› =,' Ú˜Xîu˜"žLÙ´u„÷‡ö¦°¬5mbŠX”3ÛDÈàÆýQè¯Á~Üzü²Â}_x?ÏàYûÚõ,³`heÒ¹DŸ „‡óƒ/—9|àã„Åu0R·³³]©+׬Y-¯½öºœ8yB¯:;¤gÐMžm~­Èµþx'åj8Þî>~³Ïºö\±\¯gBô-Ò Ì—];w©‘ ”µS“SÊ`�ãð²eË`…NúrŽt8Ýá€ç‚ }eçB]t>ÐQX´`Â_:ú™"¤¯¯/ÑyxA`k�‹ÊÞµk—lܸQïÇ3à ‘„4 `Cc2ÿf¾QÔz€èYnJ¨gÑ~€PY`|`ºæzÇæ�×öjDU›Ö—LØ4Àø‡û ƒñ;ú“i:ЗxîG¹a@YXÈäg­[·NÓœ`#ö`À³ñÀ,2±�‚>eÚü}²ˆ eŸ=ÊH<‚1Ð.Ô?qž°ÊÂ5�]ào¤ÅûÄóPYLˆþ´H܆Ѥ! iHCÞÉîí¸Ö„Ñüžÿ>Ø3Œ.ÌÁÃ&Œ— ¶ÅºƒµäB,áó³ÿŽãzšÿ°>Ëétž©¬+-¡B@gb˜ðý €BXïH¡Î|a»ò¢ð�%ÄýË¢u£Ä!©qÚ9ˆÑkSЇ] R0?KF䣻 øIyÚØ!À6‘‹-=‡_;œ£jJ+SîÝ!]@“»'‹˜ÍG9-Žiu€LP Ó¿¦)LàÀ$DJ¹o4ü색ÀÚ^ö?Å÷A^gµÓNT¨‚hcæ´e¢Ÿš›[tŸ ˆÄ“:o ð±”,u®s JµÀa_v.úa€]hôÀ<϶rF±Ÿ0“H×ríϳDHõʺ¥Êt’¼#×" áð5J=óKjœ2‡3úu8q²ß½§²Œ·{²Q™?·×í!»µÞÚÓá¼T_àÌ YM‹SåË_úyè;ËêÕkÕDÚŠRiZ-œg†3PÚÛCàÌE€H¾`©lêiŠ–Y<„šÆ3!”ñžœsÓRõTäÄñ“ 4X¾|™:›-Í‹ºç»óœ¹H™ö¢E eïÞ×u, /nܾIæÍ푦&8+]½K䰳ќ<ÕwDlÚ´An»m·»w¾ž›à,]²x±¬]×'ñç_”7†(óÂðð¸lݺN6o^§ïh|¬äºàô6g“Xý„,X8W'�4jïhsd×÷nÎé{9uj@&ÇeËÖnÝ)æookW€CìÆç¼ùÝò©ý¸«×fù½ßûÚÍ-Í2wÞwRÍ"ò~D&Æ'eldJö½qXÚ:zäÅ—^rõ#AU0UÛÚl¼¶µº²ÛÛtÏéí’ÿðGå·þ÷ÿ¦=^qÎo¤fépGÇZF¤³ËíýÝùcEß"÷}»¼ï}ï1]…T p¾)9&0}-2 Æè:˜Ý˜#ÚPõsŒ!íí-òo~ég´<<å+cŒåDê@@dœ1}` )é`–ºßP›c£àtAEY‚ª2>}Úô•jµJléb–gÌ2n+C ÌáM媧 FŽCXÄ‘Rgx¬i1/''¦åäéQyåõ~yuÿi7&µ.îûæ–¼ÞEõŒ„<Û‚EçC|0çQ. ϦŠu€ êDÜÅ)`1L³ÖŒª×dA ס>Ïî/ÂßÃr¹€Þ˲V$E Ш{’šÉë^íת_9O†RÐteʼn«)¶Ó ÚÇy÷¬bþ”»|سyçÝ™?^-•xÔyÆ Ó -HYŸbôoEßo \4v ÓÁ‘g½€`kðk¸¦½ªÖT7{.%ßvö7ßY^û¬pãTÉéà ŽHÇ0á¾+t,„ —äåH‡éûJ€b}h€ÁÈ„jªóÀ4…9Ï`ìË 1~BVî9²l”¢VøÇYX_Õî9¦ˆ’:'PsqÖ˜öÒ†4¤!ßÇ’µ›„kbf÷M¡ãž~‚@@ÿ $ P ××DÀµ¶zl-m^±ˆîÍÂ,a}à»!ëh˜â$|dA¸,#,‹)Ï®@}²À Ö- $e›ÈXJÚ2ž‡À–—2xFu€ìyð7¦€S·„íʲ—…ßÁÏ3[dÖìÂ0@àÔ#ÊÈpŠÑùˆï0°Éåàa>=¼TÒ’( ¸ùóçÊ 7lQgœd¯¾úª:ã°qÆóp€edǵ&3C ‹++a¿•¾½°Æuád½„:^oÎâ™Þ A½½=²eËfyÏ{Þ£ ˜) KΜ)y ASÂ$AvH˜û ‡r|¯9{T#^‚pÍÊ•+u…ncÙ-¸ €þb.vh}å•W´Ì{ï½7a«à¦ƒºßáZ°S�l€òPA�L�À…\©ŠÝýø›EÌ-Â1¨‡æsvבFßáYè/E�*�ø�÷Óq„ïÑoзœ[°Îì'¶ÂîEßÌÁw¸ý ~¢<€,ЗhÓž Žè²#1"”ÇH¢Fñîh,Ã=(ã7Þ×^{͈·Ê¶mÛô^²w°Oɸz³_Ñün¤º»!oEHÁMê8Õ1W¯^åæP—+±ÇÁèJ Æ3ææ#IK–,U*mŒkèè'€¾°×º\az#�¨Ð¦7#ããÊ2C6öÈ–‡HHè#´lE+W®˜±,D@¢/‡ƒe¡MË—¯ôi䊞ý‚þܸqƒy¥†èË€À ûÀæ:Ô¯Eî@ ï�} ¶¦åËW¤Î§Ø(êÁþÔ}}+“´W“ì^ŒQÛ8ˆfY„fr„œOB£~vßH£<S]ÍT~hT€„µ39b| r©mÍ/¸NÑ€þíjIè| ‰S_beuP‡ö6°¥Zó ž5@Ë¢3ÆŸãšEÓ¡®Ž\W«iÊ üŽÈöä¹®ê ,ÕÔY¤né\àPÓßiˆ°hoЦç|Ý‘o¾Rµ”uz¸}„sÆäœó†‘!7>ÛÛ9+§ÎqÏf¡QÄ®œ‚9XI1nÎ#Iqš BÀC9¡eZzN 5uY¤4R~�p®A»Ná«D=¹1T$½±§ï/H^ÑzÔ¼ÓÕt‚UR6 ënÓS–ÃÖ"É ìµg „¢4üµd?k×p¼ZÐhSM3]7¦Ì¸yã^5vϲQ"ò› ”tnˆoGEû1—PÆ­;ãníšvk*êêöƒe%�dð Ò,ÔϯhƉºÅN¿¼ïÞw)€`hxÜé÷Q7&«êÛƒWbFSU§¸DgÝ:µD˜"—ËR°¦ÏÔ:`ì«3aäè;›ßãcnêtc¶&§úÏÊ—¾|¿Žµ-[6ɺõ«Ü8C?Uuã¶©¥M·Åæ‚€½á©ï=¯)w-rÑ<ušöôdxtR^Þó° Õ6-[ºX~äG>ª©("7¶KÓc®¼ŸŽ"' ΗO~òcrèà!9|踎\TU‡ëBštl‚ºtlDßRsÜu×­æüôú`ll\^cŸ¦çxãìkò´{öÁ#Çeݺ®=k4¡Ú´¼á¡ ÔA EK–k{.^ +û»þ]®Î÷ç\ÇXËD[[“sì»=à yüñç´Ï6oYã®_âú1§ -Å&KýqìäiuÔß°y½ôÎéÕ1××·\ÖoXçÎ=‹|ª÷.à ×4UÕ-i¸¾ñS(� ï®ŒÔ ÊÿÃÙkz­ªÏ…Î뇞]:œ¶©YSBpì¤ú<ÕµQTþKæ†~íSFI|¤z´èu¬{§Î>QšJÙâj\"cÁˆ¨3"¬éc<h¤û´±éU u‡ÍÉØ½Cœ…§dl|ZÎMÈéÁ19z|Pöt¿Oy› ™7puÎpMÑQó¬T“Þx^ÑýœÿÔCé|«%çXc¬Èy†ê “¦¦É{@�#ú²kfÆäÇï³ÑŠ´3„Î÷™(¡1'ôÝøuÐþ–Ón ×!€ãQÙ}ÀVT›Væ Û£³‘o45‹(h¤æ á d«žJí´{os$ÊÏuß­vÏuûæhØ}òÌ9Î lÓUc/C²€aVS„{ê 5c½ˆüûÖ¯o€9¼£éJÉﲂijdÛpc½£Îf!kHÂðì ÎM§Áu'iš¾?Öõ§4ä–JK¼Í+ªcNÆ™vÌIìAÉâii˜ŠI� ŸŽt Äɸ-^“ëßSÐd*ƶѰ4¤! iHC®o!@>¬ƒLW)R¿^sφ}1Ó~0P€¾_î›C–ˬ % 4ÁÚMGè7† †ì™¡Ý„2DðZîéèŸ Ó„íã}a½ðoÔvÛóëÚ:Â}&Ë,‡û´ õA9dÙÈî]³@FpíW¡O(ËX1S9ü0¶ÈÙ"³`ÁÁJ# ^0W�BÁLt 6¿0¶â'' ²pÁ(˃6Èh``‚Ž@м#G'"±y†Ó‡r‰¢aßï?¹ÄÅî;årž÷Vê–½÷J·óRʻҎè8v6oÞ(;vìPspA§À1ƒt 8ÿ Šº@×àïpÒá^|@)èè.\c&Q„Ð5á.°tÎCB—ÁùÁ¿QÎsÏ=§¿ûî»XÒfQ‡á:iÁ¹ °€ŽPÜKàœµpÜâ^ˆˆdfô]ô®%¨ DŽ2o3Û'úŒyMih"³*øßá^0…–õ@ýp?ÚGÄ(úÀ:Ö¬Y£Ìd7"ˆ÷?ÿüó´ `aª”…硞¨ ѤL`6 «W¯VÇ/ÚB”(Þ+Ax}¸uåfŽ õy|ÒË€+>ó™Ï$¬]–£~Jõ×OýÔO Î÷ßÿ€¼òÊËò[¿õÿ•+%Љ<ð€|ûÛßV�© 7lØ þð‡4úõÔ©Óòû¿ÿ?äW~åWÞÀsô›ß¼_~îç~VA—+È•þÕ¯þƒêI®˜»ví”{î¹Û÷—È‹/¾$ù—©óò½ï}ïŒ� 0}ýëß={ö¨"hìæ›o–}èƒêĺò¹Ï}^žzê)Õ-X‹ `ñæÖ¹gžyFSâ}úÓŸ¾¦Ð…ßùÎwäá‡v¿—ÇÇ¿ü—ÿR©ÔñޱŒñöøãë=�îüØ}*aºdYäÿÕ’0r1ܯÌôÜl”ãù%ý;hü±¾½ï}ï«£ ¾”:e)«¯Ð"‰ØœLõ¨Bâ ‹b‹Ø®sÚå-,J{ž:%ÌATCÊÀ‚뾨ú¶ª%ŠêÞCâÈfñÑ*ÕG“�Ü�I"aP~-í/ x§Y`þ|r.µ}VäÁU›Å¹Xï!-¸F”äŠö^LQñνZ#Ô@ q@0K5‰t0¶‡jÑ~…“™×’ÞÎd–IGSù¾Dâä;)ð»±x5™S*&ý}ìYÌqdÆ—¼ÀÇß7©W Lg˜ÆƒQÀ4…á4NeéQC£÷ÁaÄ* "p²Á)‰öó黃Ãè€"#2âïã“ÎÙ;%ó6Ä9ñÛÚ[SGZD\=ÐÏ@Û�èû‰Ÿü¸[«ËÓO=#ƒgGÝÞvܽ£³ÒÞÖœÚ9š ÜýhRã5Y½¢è\}ª¬¿®~`éT0R>Nöà(朗© ©8žyö·—ÓgNËÆ kÔY_-G21Vr÷ì\’þþAçØì”M›Öë~);–.["Ë–/UF Œ+€^Ûû†[_“C‡Ê‘c‡dÕª•n]íq{èùÒÕÝé’í2]2§ôíwì–Ç?çÎgÜß[t¬Ã¨zöì°L¸þ=;4êÖúµ²téBWÆ™œss�h<·´iãYíž3:>$>úŒô œªlØè¾sm˜–Þž^ª:|LNœÖ=ýºµKe÷-;¤wN·Î›ÉÉq„� ÑÖÞ#ï¿ïݲfí2ù³?ý‚¼üÒ+2;ÒÈûŒjÊM96esŒ­òßø¨lݺIÇk[‹‚(˜ÃÙÕDÁDÊc¬˜g�ÛL•`ÈœÔÔ=%WïI÷.ktÄy E»;£è|i±T:!ÀÈœÏ)˜ ¬T—ýÆ"ö™2uŠ¥òéJħÜÁÙfr´nžñw…væs) Ã�l¦Aˆ#©yp…•ù¿Uë@JE8^’³28äΟ£%9uzTã'db²êry½¬,!8‰Æ_Ìs€w0˜–ó‹ÌŠø‰ñBã1~â¬ÛÒ2åÏÜ͉½1Õ±UÕ‹çcHÈôièæ;@ß8Ⱥ£R½®çü.Õ1Q]lN¹:×u+£þŸ$¥Ö…ÚEž:ò€´¯Ê¨L^wJrµQ×ÇsÝxmwß.‘ruÂýr%¸u-š’|ÞïJcu+Pu•OkScàð©Pc�ƒ¨‹ÕQRJ#QñÎLÇÈJ6Ù8×¾-}˜'ŒnÚ4n‘™¦©:7gûLï,ìûÐéiJ–ú”.!»Æ‚8 eéFqÞÇø"«ßÇËf*´ÐI“Ö¡ÞéÖÝÖæ†4¤! iHC® ÏméÏœ2‰…çÜús{È,–×µ–ç<Hr¦fðE|núŒl@MÈÊîBðãùÊáwî3CvHX.¯g›Âs;¾'˜@M–‘ì¢sÓ†±<îmø“gk2?fë>7lK¸¢?Šûç°Œ,Ð"LsBpüB�¸Ãž9[dÖ�,˜Ã†Ž@ÒQH9ÂIÆI™s˜„t0p¶Ñ¨Ã\ŒpÂ)‡ <)à:ìœcgô@Ì22³\­¾¹˜aú¢â¨oV²Ï¼Z†èKyö[,Ì~È›Î)y[D’·éX„�P�Π2Æü‡®!CŒžÐ4¾é�Žs|Bt ô æóâ‚Ïpœ¡\è3€ÈÜ€{™N /¦× £õ€C 0‚•N€© MAÖÒLA˜Ĩ¡óI=àlDq ‘4 �Pãò Dx†`‚á ·™Æƒzšu¢a:ì¨/u;>düÀï\Üù; ñp¨‘º ßÈ@0 ŒÖE]Ñ&èv\‹ëP/ô'€(xÞ믿ž�ð˜ ÜGæ ® '`AùènfpÛ€:¨ïqóRã'!Œ¦jHCÞŠ@WÜsÏ=rë­·ªaùùç_ßû½ßSž+–É•ŒY8ï?ûÙÏÊ»ßýn¹å–Ý:ßöî}M¾ño¨Žø¡ú˜:H~ögF–,Y,o^"y3�8 ¾øÅ/:§ý#ò©O}R0v´ñÈ#êœýÈG~@#ãzè!ÕÿÓÿôo”I(+p^¡]�jÜ}÷{dóæÍ:×_zé%ùò—¿¢:ã£ýy«ëç?ÿyù™Ÿùyÿûß§úÿ­@6ÐSLåt­ ˜+þùŸÿYn¸á7fïQÝøÇüÇ:¾~í×þ£Ž7€Ÿyä¹í¶[Ýx»Å9éŽÈýÑ)ÐíÞ{﹤-^vÉ(ƒ« .Ÿ“»ÍIè¾ÔúüÍßüŽCÌÃKX„‘ !ÕùÕÜÓ& ìé‰\Æ¡FúÒÙ’%ÌDÇ”õ¥EL[JˆzcYëŒ�pz‡9@½±£fÔôd²ðbýCƒL”FŸÐF ל”u(ã^_«nliqF“<€¸EsjÅihóŸSõõ÷©T|ª¦Â ƒÉ�ªÅ$Ê߀yOOïYj‘:ÀIŒçæ"‚P „õ+X ¬]Q @²„ЀcL •Ä'ž¹¢š€cÉÆDÂ<óÜ›a_‡yNÐk˜¶&Ìa¾Cþ-EžŸ<ÛH­>goÊ Êœs…:ƒ]1oŒ¼—étÆ'`ch“c'N+#@`sçõH'RÁ4“1nËT=È‚F©ù`~èîr{Þ¹røÐI¿omqNóVý´E­­U{ê<ǸPúÿHrðG£ª+è ëÛcÇOÊSO¿,›7­–¾•K>õj-§ ù\S2N/Y$·Þv³8tTŽ>¬©7 Ë–-–¶ÖaoÅæ~}'GÓç|èC÷º:/‘ {ý9ÆÒ eÆíwÜ¢õ2&½WݹgTûgËÖÍî·©µµµäöÂe™3ý2gn—|êÇ>nŒzn­Ý°a:Í8,/<ÿŠìqå ž9+‹/¾UKeþ|w^Z¼PûÌ!³ÊèîÁ~ç»ß}FfÜgcîuƒåTm>-2oþ\mp}~ìØerjBV®�ÓV»ž{”qËõ3˜,�Ì@J–Ûn½Iöï{]ÓJŒvhz’ÖŸN¢© ]®>Œ4ó±ôªCbŸqÃ’:(À)Ê‹1PØè(;‡6‚w&''ôƒó&"÷ ˜ë5Ó=m®î�o M ¢øñÉAÇD¹`Ž,A5çCìç4mV"L9`é�æoÑ´qc>¤Kõœ›—šN$Ï¡¡–€"‚*ÄëÿÔº£;Ï%À’Óƒ“r²T††Ýø8;&ÇOË©Sƒ ¨ˆÅ€\`á)4ìiŠn³4F`­¡.À¾×æ±éâ¶6¯s‹éü¤ž‚0_7Ïñ�ù”¦'Ýhu÷µ×1<ؤìõ]®>·7*‡vGÿM×T“¨ʹ�4:¨³hS`™ÙI|O¡Lh£Ë6þrEKq"±¥¶"ó�*è¬Ò¸$¬*±±Mèxšr¿sºãì6˜ÿËÜýî|-cnN¸k&Ü󧮩x�_A×è-€ ýJ–¾o×ÇÉûÂ^Ç}ÈúP,¶)Söãy@¨Úŵ€ÕÈֹРJ¦û&tNd×–ì=¡ã„eð{Sz§ Î:Ƙ2•Øhð;ÙCCçOèÜ ë’ÖׯkêØ‰)BÒ†4¤!³@µ/ÜÏ0]$¿Ã¿±GÚÈT ¡s?»Ž’™4»Gbàc˜RB» Ë maá¹~¦ñàþ-Ü?pÏ@û%!À—ŸôÓ„`QHh—áwá‘åчÍ`Vúx_¸Ç S¤d?¨+ö0ôµÐo“-'Û¯3PŒ ßìzð…Ì™5»0к"µéT£c “ N-NBÒ±ãß0Rãå2Zßà ǜlaÞ8áC¹0LãàþòË/»ƒùquÆä==‹rÉ\i Ó•”™ Ηd„Ö3¿?ôÊ•­O(WÓ8}9e_¬ïßÊ›¹ ¯õ¢¢Æ;IË•ŽÌõo¼Qvï¾EÆ’c)A # Ð=ÐÐGX˜ ø"7#8♌È=¦„€J’QÉaZ :ù¡— (‡éBðz Ïõp4á{�+ £P2dаƒ¶¡,üºXÔƒ´OXÔñw´‡(£¿¿_Ë#å% Þ]\Av n*È*6‘m‚z™€ ´i è3|ÏÍSv >bî\|Ç{ Ü ®'ÛDHF€Ù;ØvF•¢î@Ý�8Á{†¡uÂï�R ­�7=( ×a½@Z›nº))Ó¢olÃ…ç1/ ¨+Ú‡¶¦‹@M§2ЈKiÈ[΀ *»»{`ùœX€v€\¿sçÎÄAô;¿ó»òÃ?üq`ÀÅ\Àؽ뮻ô{ þö÷ÿ÷²nÝ:ùÔ§>åSõDª0ﱩÆs`,}òÉ'uƒ `åBGÜyçzý£~WöïߧιM›6Êí·ß®Î”¬ÚG¤îO<éöd/éœCNû;ï¼C$Yƒèþû¿%?÷s?'ïÿ½É÷+V,×{Ÿ}ö9MgràÀ~eE€ƒ³ú£ý¨Ö! °_zée¬|àPÃ=dÕª>îîï?•D…�‡6cïˆ>CñLÈñã' ÀhÏöíÛÜú³C^xáEmÛèè¸þm||L!’ÃGŽ(ã¢l!ýןÕ2¶nÝ¢zæÉ'¿§À”Ù­·îvÏžãêuÚ=ó˜¬]»6IWè6è:è2€0 ‡�$~ôÑGµ\0hà}­Y³Z÷—ÂñVãý‡ØŸ »wï–/}éKú;ô?Òøð öô`&B=¿õ­oÉ{ß{Ïeãgy˜¼Úó! Ó}q‰2¿‡-Y.TÛ~5Á%”8N@ë©ã(þÙY¢ÄØÂëRJz-ŒõN•|ò»‚§ ïhTt\¹©2ªÃ*“Ò¦žE£'\ZÈ;Ç^GQ“ãžÒÔÝ× PCJ‘žF‹½º:½À0Qµ|öS¤mÊùT –>$uº¥ýÅ1�}¤uQGP.ixÆ*¨Èkv]Ó,)8ÁœmšÂ pÀjU‹6– «7ê™:Ëz-€Ú·‰£±VgÈ-”еr¯”ÊSÙè l´r8öC#ÇNX‡Ð`¥¶j^š µ:Ç'ëŠTÓÎ;:<æ±Î¡ætíœ^g_èéJ¢–²ˆýX4G{”°I@¯^Õ¦ì ⇟¦Ž†1êû(gŽùR©¢Žõb“Ï † �iœ³¹ÿô€<üè3òìs/Ë‘c'd×[dÙÒEÒ3§S×öjg}_•ò„Žu°L>tP×á¡¡³n}Z"]:¶ÞØwH÷¿H­æ‹9§“j_Œ û±'Z6¢ïz×ÒÑÞ¡{åÕ×5-D{Ö‹œýØþ{ldL–-_èž½Âéù]îÝ·h�8€ñ¹páY°`®ÖãÛ<¬A-ýîL³yóÕ“Ó ˜hiiÕùqºÿŒŒNÈŽí7ê˜Ü¸i^»fMŸ_'Á6˲®Eʨ1wÞéêl–G¿û´<ÿ·>Ÿ•-›×9‡z»êéRMÙ †‡Ü¹Á­Ý`Êø‰ŸüQMÉÑ;§G–/_¢e`í·ùk4=€IL㉥×)À®šsõt×Ä6.À `G©4¥©HJ“SêØÎBAÚ\¹ä~‚¡ÂÆŒO-ÕGÓÕ«ë\œ°ùÀu&@IE)älïP©MÙ\¬–pV©–”õ$4 sN„�¯¬Øßm W“y—^WSý+OF<qu<qjT’Sg&5Zÿà¸ôŸCL9M="¦ë,„+£fú{ºRöé¦ëäÆLÑ¢ã-Ì•m)¬VÆPÓ©žÄ8Ä}vnŸ’©’-Š0œ·"P«OÕQ«c‰H€™(¾,(> ÿÎ:§†ôøœ}BHÁkö¬ðºp½ ù…‚§Õ«æõR,XQ°^@;ŒøDûëÓmÄx†.o¸¦ìÖ4¬amR‹ÜØ–×=N¿ÁÉ0ìîvÏ­*÷Rhzœ½ËiÇ{£^£4þ(´µ&)Akq€áª¾®–VKÛYMǘΣ˵#™Þ.2ZpŸF`† ‚RG—B`_øžÃHO|Ï >Ú&°žaÝ7peKØá{fB` ×£z6€mãØ§5¤! iHCr%\ßB0ƒ±%´xVDK£Í½íè!C6×ÏEŒ€®£\0uÖdØ´È<βÂrCV–Ÿ ⤠Ÿ²õƒWRÖ²8Kÿý¨a]Âý,÷+,í„ï?|Ê3tH:eÑÈÖ?ÉÆÅ YúÌC¶ŠpïÊrx5ðÆê7‡ÝöE°óL?dÖ�,`TE´6^|x鈴+iíSz>©Pp0Ñ)† #8ÊaÔ9«¤"eê‘;¶ë5ˆðycß~Þddö… ¦ ¹ròf@ñÛ”ØåzyïÙè‡Ë½÷h§‘l¾u9§îÂ" @À�~˜€y…Œp<Q—\'?œ>\°©ÀvÀ´è€ §¸€…yBÁÖ=Ç\Õ0€V|”žÿ½ï}OŸ $i(¼d¸ås1VæZàZ²X0RÏg½Yg´†Ëÿ;°nÁïq=SoÐð 꽉ëQ6#ÐÙh#Ú‡{Ш3 ¤ÜTJâÅ‹ # Q.îAŸõ‰wÂÍþên´—©LA¹fp‡:áyè{¦Waš¤=»ÛˆõåÅ_Tg2ÚhSˆ0MêÂh|Ø>rÐ>Ü‹Ÿ'6Œ& ¹r‚1':ÆàªU«Îù;ÆßSO=­: L,X 5ÅwÜ®cNkÌ�ÏàðÞ4 ¿òÊ+òË¿üËuìp–  ÌŸÎÎÍÍþ·û9ùÄ'>©Ñž�<`ž�Øüçp~þó§ ¤hü#æÜþè§´Ìp}ÿÚ×¾¦Œ��D ææ/ü¿N@ì1ï‘Â#Ø P_°Y -ôêA½±jÕj§'Ï>|XÿŽhÛð9˜×÷Ý÷>¯3#Ù³çUe €Ñ�®ýû()RæÏŸ«N£Ï~öoÔ¹ƒwƒú}ÞÛ;GV,_©Ž´ó*€�Î}®Œ§ÝûB¿`ñ­o=àtc‡ë³Íî óŠüÙŸý¹¶u¸cà~àCÊ(òâ‹/(xÏø“?ùÝODýö¥/}YÓ¨¼ÿýï×>G:•*Cœ _ÿú×U~üã—«)h+Æ£¥W²1Ð t,ÞÆ"ê‡VÐÑQdãõüîw¿+oF² Ë…tôÅï¿T–Œ¬“ë‚õ‰YœH¹ô£¾0H#4ò¿{ºsy 8—m€çbÊ‘¯3ž„Æ™ÄÇMŽé Ê$žæsùL!BcŒö‹˜s‡û äl@cBâüŠÖ4ˆg@Ts¬aÈÔTI#vÛZZÕ1­­ö*u>™S)eŠHû*gÑ눰o®ê1ŒŽVŠ‚¦:±ýÔ´þ´ít)]}žÑ±5oÌ)èxªÀéš�b1cQ>ç:jå„Á#@½†1{–œ‘Šhð>6ôdÂfC0oh8ã Œ!"޽z`Mä×Q]¹SÓµ$MHÜ0°á°½ÇÉXº½âáÃ'œƒ¿Óý»¤üŽŽv¦&€Ä윯c±Aý=ϾõMzýäDIÏŽ(ヶ+%zi!�|@twuJOw‡®A¯¿>%ãc“²yÓY»v… v{°©€Ù®]:¬i»�¾ûä'ØozÜï½2o~¯ôh ¯HzzlÆZýˆœ8Þ¯ëéSgdûŽNÿÎÑþÓw»±[ÄY‹+²vÝj·v’éÒ”ÛK/”Õ«úôüsðà!ç<Ÿ³C®=Ëeûö-ºçÀ:Šñ„±ÝÑÙ&Í-Ù¸y´¹uíìà°|ûGÝ8¨8ÇnAÇ/úõÆ~,�)€ùÈÎfâPòê|7†˜fœÇZ›uÝܾm“›±Œº~zøÑ'¤2í ‰`ã¨æ5ÝKOO·ë^­K—ëÏæ–¼ömÁÏ= Ò´DÞÙ.~­Êå›}Ä~N}ÙHf05=ecÚ9ë±çÁ§Ïùô!9éhoQC2€¤�­àci 8~u´×¯â$†1‚ß~ÏyP…jLyYꥊ2 pn—œPÑù{&0Ü %`_ñó$ÔÉ¡!<‰¨ƒ¾üŽ3{‡gÇåàÑAٻý˜˜*ËЈ¥Þ Ëä¼5cl¬}8£8æolÀ/üÔÇ4Ú’Y…©¨Ì.dü Ñ[’3:ëoFwÞÑsæ„{oΞèÆ�íínD™ œ²F¤€‰pÍ¿î¤ÑŒYÀYÖɶ)Ÿü½f/Lª@@û `¬Z|�ßÅ~<Ôâ8Þäu „ú ¡œê*´ä={޽Cc}Šl«†´5㢿ÆE·Õ� kž«Çh ÷Ü!7î‡t¼\)—ôùÆîQ”&׿íÅ¢_ËBŠjÓ{ZG1¦SÆ(E¦ª"ú ®X ¤ô«¦ëúµ’®5‘éÏp­à¾«dâo…z€KèŽWíkÏF݈±IFN| ÈvÁ³F8X®®sÕZ²Ý çY>×HÒ†4¤! ¹þ%<…¿8qÌŸ[£$h’€IØ­²ÎúðÜ‚t�ÉßQþFVlC²áïáºÌóiXgš¹sAÐõ~a–Gÿ3 \ãÃàË‘ï†û–ÅŸ î mMY`E(,÷²]¨ƒUýhXlÛBÛ î‡½A\}}}j¯ƒýîRÓ×^2kZ‚ˆAÁaDß¿ùÃ+ò/ãÒáG lnἂ3Ž2DdÐ(C” œ†¤¨'u?œjpÂ1ƆABŒ¥ÎŒò²€“!;pÞ 'ô•~æÅ ÁoåÞ·R×™î=Ÿáz&eBy+í»R’;P¾åRî½ïáí”KqX„w¡îvºóz/DCp«Yppº3Å :{ [(Bà~8ëq-tô ÊPºƒì9 „@ ,ŽjàyD]âZè¿§Ÿ~ZËݵk—^‹gâß(Ÿ .dpD Ì6$x¯çbŒ:ÑaÅÍKb P ÂT(нxY$¸a¨�íF½Ù>èP2Ð`ŽöáºæGÙ¨_h B4À“®Š›€EPüíÃó Üp <u£….²wpCƒ6Óè6Xƒû0>ð|8…Ñ_0êÂI‰ïÑ2_à^ü  ö'>k ‚ça}¹´hå†4äÂ'ÇüÁ8gýß*háìÙ!ùÄ'>! Ì÷Ç—'£��üÈüH2ßCÁX†N€~Ì Mø°ÓÑéF}ýúu®nV.X ×~ú§ZA¬˜£@;"÷DfüwØ“'úåþo> üàå®»îð€‡ ò»¿û»òòËw:½¸³®Ð ÐmMõ[_GÌq‹(.ÊwÞ.ßùÎwtèCœ1ôóžÛÞNm æ3˜8Pg0O@÷`]ùßø *üÔOý„öÊGŠ èñáá!ùoÿí÷ñ±}DV,ï“ßùÿêêt—ìºi»9/,ŒPÎ'¯¾ºW×¢üÁ©ŽÅÚZòÁ‚züÚ¯ýš, ¨�kØptëÝwß­Œ`ؘSV‹« °€¾$[δÿ÷_={ö¸¾ø­õ(r¬‹oVB§ÿùþþïùßKȬp®Tå7~ó7Λ†årA ÛÓ�xòùÏý½ˆì<°ÿ þþ«¿ú‡Áʾ¥òéOú‚å‡Ñý—»—z3’�!„�ÔYÁˆàs¢DáD—ÔP:à²N*urĵ¸¡÷×ÒˆÙ¬AG:)Ù\Xn:Õð 8É¢dÂòf¥=7ƒNÉéLê6EC‹²[ä Q,6'yÚÙ^¦ !£€4æ\ŠÄR{¤ôø�@X17it/£QèŠcÛß!r›‘ÞÐpˆÙ;ªø÷d Z`à‘¤Ý9EÒpGà Û@}öo8ö0ÿÑÿ�¢~•éî²FŽÝ°Lþ-ë´¬?÷åPH½S“ûð¸%_g` ë¨ïÂõÿá£'ÔÉ®éõJÓšîaþ¼^éîéJtŸÏ_`^©QLÇ«_ÑÝW5çô™3ÃòЃߓå+ɦ-«ÜÞ²GßÇ`­f㯫{žlÚ¸^^xáyúÙm¯Ý\Tg~G‡QîãZ€�®—­7lrö“µÒÚÖäæ1’DQUÇé²e‹ÜºÙáž·P¾ùÏ»õá{š"kbrBnغAu.�Bc£euDžê?®Œ»wßäÖµ›¤PÌË¢E ½f±,Yº@›°Á€å€µkWé§£³]A¹\“»¾I†Ý:622ªûo2Ömmß(6®sõ™çžmcE7Þn¼q«tvµÉW¾|¿îÅÏžte¹µm£ÛCôézŽ'(»Ut41>¥ì/¼ôš2’T±zuŸÌu﮽£UÁQ¯ó„ó^OëpÞÍBSAA ?SÓÊN1éç8ö ? žp—u¸¾n׳Œs6›´Ÿ 䓦€ˆ<ئnˆ(°#wÎX6Iue>×ìêmé`Ê•’ÓmÎì~VÝþ©âVÐÆž“3'v.urëó%40›C?ëì­wDÇ 2!Hà¢þÁI9pd@ö<-g]_Œ—dx´$ƒC“Ê¢Sps"Ÿ«×åÔ4XøÂt£žÿòEoè50 ÷¤)`!…eÓ{ˆç|(aºOíMMCcç}è#�ÔÆÝÌ#-cÌeNkê›,xŒå„ë“ïbsžK½QšëbØÿ‡ûòÔÖô肸˜#Ïâá\óQ¡µ`$‘) ŠÖ®üœ]`k*ú¹fN�øŠEŒ w~Çejuêvãy‘£ùn^tsaHZ[š¤M™XLÉésò¹dŒð‘Œw0Ýä,N dÁ™½lɰ|}ȑՊìÙþ6†’Ķ–K÷ëȨžõB’¥¬!i]Ò=ÿ%²` Œ|Bû4SS3$ ¬!`&97űg_©)kÓNÒ†4¤! iÈõ.\;C`ÖAì±_Ã:‰�IKƒ™Oì¡ ÜKe÷r´S2ƒ;CfþîçXføoØñ;Τd'›C¶¬p_˜eÒ »'L#Æ}#ÛH9_ÝèS@ÛP'¦- Ë;_?±<M·è®‡??é¿È¶+‡@žÇéï€O Æ`ùFP®²•`èÙ ³`Áƒ¢µÁZÁ„|ÃprÁ` Ã6¾‡“ ×Á ¾|ùò„’Étb`S0pa Á@€‘Æj ”‹‹gâƒC¼¢“[Ú”Â~ÊatÀÀBÝBÇëõ*WÒàúv8Þ/·¾3Õéí]œ�r%ú+‹0»Ø53É…êñv÷Õ•¨Ûƒ…èÇìÇÔІ¨DèÄÌßN«~ѵ XÇ}(º: >¨ôtœüÐ Ø @‡@_Ì (  ~ˆðb$)þçîåõ02!JõÂ} GcdÓ ¨�e@ÿÁÑnðAaä$”zŽ ,‚Ì¿…ô'ÊÁ¦†èNÜ«kµ”æ õB 2@Ýñwl$Ànàûÿ&#u/Êĵø7w¶F…À¸v!”w‚2 lú õÄ5¨êw…~$ó‰¡ÜL ¼7FY&êüÆo(NGÒ\a,ÀY‚ þ½þG=Ñ_¨�€dFB}ÉøÍ"S…üòvèdžÌnÁç0"?ñÄò…/|Aç›6m˲_„iAB§æ"Æ;çËÅÖ_qÌã¥K—ypœþoèœ@* €2pÝ­·Þâó.›)–å‚Y)/þäOþ/ù›¿ù[”ª‘™Ð/‡Q�TXDÊÒüÜùÅùÍC~“èºsÛÔ³Âgb îY±b…Î8OÚÛÛ”mÌC�X }èÛÕ«WiûÖV�êz<ت&m­f@…£ËÐèp€^`vîsŸ“ÿíûÏz¨Ágýúåu+ö¦dô c’LHq')ÞÏš5«Ôé…k�@~öÙgõ}¼]t€]þò/ÿRþÝ¿ûw Ɖ¢ÔÁÕ•xÆ%oZ.€xáÅ\'^À°U.šjärºëŽÕ©þÀ JFÿ4ç`›”‹Õg¦ýæ•Ü÷Ï$Ù¨]ÜÃþ]ƒ:˜C?ÇÙ¼¢4ÎÔ³c¤Œ‰ b9çÃT8i+Iª‘(CÙ.uÎ’Ô %É>Î Fïî[§Š®XÌë\&󤈟ž†Ó³âè5\tž‡ù[ñ*ÈHa‘¿9avìUMoÕ<£ANBp…êêxc¡®¢¾¬eWƒ6£ŸÑDý³STUŒ"@´Ý9ÌààT|T4²Ô’¾Àuæüª$Ï"(7d 1t!ѯ4ÆiŒ,kÉ;Ë8Uú’=ÄÆ¯9õàˆMuG-q´²9fðÎ8îC@E87ÂgŽOx‡°s–·”¤4=àöÓ2ßíAçÎéV½9ú2bª™Š¹±±qÙ»÷ §—4‚hhD¶íXëö—½}5Y‘¶Ž^í›S§ú•}¯¯o…<|\×<\£ûÐË4­ÈÙ³ÃòÔSÏ( )0&'áüÓÄ<ey€tŽäyóçHS”wû‰E²pá„3ÍQð3Þc±)/=Ýíº_Žk˜³±³Ã–Ûn¿Y¹rzº;¥g�×€ …XZ›Û¤³c­,[2O¾»füéŸþ¹Ö}ttBA)+W.WPC§kK‹[sÎ ʉãÆð·ný*·–Ý(»oÝ%K—ÍwÏ/è\ÊåܘÌפËÕeÛ¶MºF}ëþÇäïþîï 8>%£#²Ä=³©Ø&ùÂi}–¾¯$[·l‘oÜ®©ÀPÁµŽ¬ âiû£x:#]lœ/—Ý.Mj¿ãýLºñ:êÎÌïÜÙÙ.]n?cé>ܧÉÒø  ù\ÊJqîÚN窥 1}P“ä!Æ@c©rÊR‘Ï7«~+•Ýbº<} –Z²ÿRÝ5éÜÕÒtÊæ%2£ûÓ5¢*õëC²nhnšvÙØxYÞ8<(¯î£§Geàì”L¹¾(¹1¥mð=[tõn*æü™55B„OÝÀt:¶jRàôw ¢ªy}%�¯pž†ì¡>… ê&²E‘ÕlA--�Ut)ÈbÂ)Bà GpFŒUH�\4ŒW„�”p}âzÂèÁsX2zˆëS.aiª$: : 0ØJn.DH«á 5‚œ9Ü”5¢ª 1jˆ<ˆ¼÷œ¶§¨k ÒÀ`XVËÓªëJÓ`cœrkJvgùfg+è^/Ü\^äÊt}äœEK¥£íÓl:±> i¿ˆLƒÅÉËrÅF ÙÆÐQS µ~—³zDÊä%÷s½LØDþSñI SˆpL‡¬gáx ×Hô ÇW¸÷à¾‚ç ¦­Æ~¶ èoŒ%î),ÝVUf3Í&ECÒ†4äûWðc°æò,ovb>ÁYßVèäçŠ@]2gãLI@Dæà¿Ã=BXNè;±=aK]j‘°¬Ð~P!%îÇÚßî7 zÓ9iEη ÁÜ/++ž¦Çk­è†�[J¶ma¿ÁÿA».ú)<»ÎdÊö÷:ô—ÀMpEcã,‘Y°À¡Æxû1ˆð¢ûúút ÂYˆHDºaÐb³ Ê`�Õ 50`…‚Ü‹Ñ�Ç({pVÀ@Î\?œ°˜d/¼ð‚€ñò’ƒÖõÃDY·vµ¼ÿ}ï•7öí“GœS[Jjô‰Þ¦¤׎d ¶WË¡‡ßÌ3Â{®�Á[‘‹µÿ­¼ƒóÝ{µÞë…äÂï)Vcˆ¹óçÉFçP‚0,Àmmy5ºª‘õ†¶È‚ õ^PÌdÊu8,‰\„®€ L|‚  ? ³¸ C/D}Ô4�à:è PÞba Ó_�Ä€ÅëÛßþ¶ê)è8ÒŒ=R‡ç…i,h,€®ÃO\F�b1ÆOÒ±£®¸×pÀE› ,Œô†”z÷áz:Wáà ScpqfÄÓo ~¸–ÏÃfå¢P6úí ÛÇçA×c@ú*ÜOàDh G¿£O±^àþðy¸:©¤Ðø PondPœ‘{÷îÕº`³À÷‹2Ð'¡aíF=ÈŠqgê ú‚w3í ûóØþë[×4äÌ¥uëÖÉîÝ»õß»wß,ÿå¿ü¦¦«øõ_ÿú9g:ؤÑa”p“N Œd Ã8G‘Pƒüµ×^“[oÝ­N=7úf އ8ŒÏ†nf§$óYë¡NÖªJmÞÖÞ"?ÿó?Ÿèh£ÍŽtf—‚•+û|Ôì˜Ò£‡û|èè‚´.&óæÍU6è“PÐO¯¿¾OuSœê›ýj‘å ý9ï IŒbG[5Ýw¸KDº‡ˆy’¥Ù§�küþïÿ¾2<õÔSšFå¸O>õ©OΤ(˜VÊððð”:Të÷>tTf´W[À ÷ßÿû—ÿñ—{ï½Ç§2 ‡ÎEÎvŒc£…]; SߌdØ3µýóå/Y.&¨ÛL÷ÏTöÅ@ adëL‚t.ï~÷{„޹_ýÕ_Uß_ÿõg“2:ÓÒñþ{¦ß¯”` ’Æ[Ô)b`Ë»îöHà÷÷€ ž“Œ¡€kl<ÚÞÄØ!ÒÔ Ïdƒ ó‰ÀU½_)ýCÀAdÎZP˜ÇµºhaëKË‘‚ªŒvÜŒ fPös¬íã¾N™½œ³û¹p£- ›/*WUiPKN?¶ŠŽ­jMÒ*ĉžÐ~ÐbŸ*nÒmª¾_ÌÁˆ¹B`"¯a 2à­HêȰFH?O0¯í¹JI€É‚ì_ø~Z)ó[C Lµ�¤’¯3:1 �)VyÚÇg2%ªpª¶¶Ö”`h¨äöW]îßmÚŒR·´~)ŪÐ u†±4:*>Çiɺа¥ô¨eÌ¿œ7”U´Ÿx½–!æ”®–ÍÑ]qö¡3ƒÒÚÞ&c#£ÎëË�ZÌïÕ3À3Eh¥¿óKšòçöWò¯Ûí‡û”a!vßéc%™˜šUk–»ý£E>r£ z<ãôâYÙ¶mƒ|èÃ÷8§~›²VX×tí@š‘eËÊò‹]ù-ûÞpõ“›Ö:›Ézwý´4·´ºO,ó›;äèácrèÐIe€X0¿WõÉ]wÞ*ïz×Ê0òqÆ´ƒròÄ)îØ±M6n^«ï¦èæBk[‹¦¼‚^ljn“|qÊ=¾[wOK¥lR°k`Žam] {ñyn}o’£GŽ+Qœ“ýûK[k§‚Ú; ®?:õ=5AÃ�C—»'VÆ<ç sì¦Jîg›:{çtÊÂEëT?65ô\˜‹Bv�cðÀüÓëÜnRàæÆB¥RªËål€lKsˆr‘l^O—'‘îsRÇ—w`$‘wåÆr`Œ;éÁõÀü6@‰×ËØ7¥"oé…�ŠšœFJq€LMMú}[€Dñ3¯™£ð˜jlsUÙ+L¥(#KMÌ!­µÒéÞ{ÕÈ9½päø<óâaÙóÆi9ufDõ9«Ýܩؤ{=èE¯Ø0Ü«•ªöóaÓ¹Íóêœãú JÚO\¿Ò4qc;Œ´Ë€.xÖ ÇL3bÿ®%ýˆ÷ØÕéÎÒÅfMLŒ»97•€þmÿZHÊà�ÀßĈúÒ`‡hͨ#BgÛØÓõ$ªcf ï×ý&ö•x÷>UU^Lïç¢ Wù”[+¦+ª'âÈ0¸¦PhÖ½{¹êÎÛ®=ù¢­;ÐoS>(À­7ÍM­ÒítsEr“î]ï‘RµÛ饥îñ‹Üe¢t³Ii†~ΰãžO;š7ÆŠôÕ4âØæF):îS‹˜+<Ôå¢×äò);1ÇBÈÂ~Lç{”¬<‡‡ï&¼. Mæ‚Ô³€es”Ó±Ö cv�Ú“ñ!£>dÔN¹\”›—Fž†4¤! iÈõ,ç³5pŸžŽvÒóÙh²Îÿp§U›ìÑ{>ïåÚµœ{E”?ÄLõÈ–Á5?L) üø\ÌÖ BM¸D?1Øv¦úd% å^?±Á™úBÏÏ~Çý)Hòþyìeàßâ>>Ë€|½Ë¬X`C ŒÔˆxiŒnÆË„` 8·`¤…Ñy8ü@,jpµàBä8& €pÂñPƒç1B‚ç‚‘ä0èÂaö¡}H'¡0ÖÃÙ†{Ô±ê+¢á…âÅ_ Wf(÷–¹kZ.eâ_ìþ·[ÞjÃr.$×�ãRûùj€*®e‰¼áÚ{ï½WiÙ1g±Ác¾hSÑ~ûí·;'á­ºàìÛ·Oî¸ÎCü@�t ÀXÐ3XP °Ø@ÿÀñƒr�˜ p‹5À püA€ ÎAèè&܇:á9_ýêWÕhõ¾÷½Ou0Üg?Sˆ@áƒ6B/ñy¨ >xte\‡:ì@Jvü›ô•Ð00=S-ñ€º!J‚rXÀÈEô#Ê…EI‡2 h+ê G%c¦õ€$B6 ¦A;x/ú÷`Äþ€ h?Ú5ï…‘÷øI*Þ ˜@8w¹À5têâZ0áýrmA›Ð/X'a‰gâÝ .¨Úˆï Áš�pÚˆñ‚>Á»Eý0^ا!•mCòV$4b\sR¸éçÜÇœÀ¸†óúС£çDH]Lçßwß}òOÿôOšÆ ºÇ-&•]s€°lÙ21WxàÛ ‚€®ÁŸ;®€°õõ¯Þ鿨R½Ç�TÆù„ýÕLNv¤Ž‚Ãþ×ý×Ô8‰ò¡¿|ðA}€X—"HG=úÀhq/í¸kÇwÜ¡?Ož´ôQÈÛ }ðÊ+/ë:q©Ñó!)ƒŒú££�ÿv:Ý2² ˆ`†^þð‡?¨)N¾ô¥/Ëc=æúñhpe3^?vì„ë—…úîE9==½ `îÔè÷Ï|æ3n½»W>ò‘'H˜á`ÅþTóûöíWF;Ôû‘G‘íÛ·Ë›ž%.–¦ û7+Y‡.¿Ëþ΋‹ÕÉÖ*XÓ( «g[í_;ïý¡CúJí—/*‘íLj[î5 ÊJÑ”ÔÍX*êìDÚ¢>Œü Ó„$Α\Jƒ™ÏDÓ¨êÉ0ÒƒN ®É<³…À =#æ-÷;ÇgY#zK­{Ú¿H%/D s–y‘,= þ} ößpV!ÕÛZÿReZ%¡ƒ'çŸ l.rmtcO,W=iήxÑ¿ˆŽ@Ñ‘~¾¬´ëèc ÖÔ×ÓØÂ¾3ƒ—Ä0 À(:'7žoÎbcÈ`JPXV ž(&}Ïvñ߸×%Mïa_‡u ©”�î°t}ùìJ0M½C‡xÕ׿æÙ*RP‡=×öiÐ߀À±øúÁHævÎ÷åÕ;ºü‰Â9úÃ#ç}ͱŒOL«ã1_,¸÷šse"%\Y.˜#sæv*È¢à¬u¬B‘Ÿá\uNÄû>pŸ<ùä3Îæ°O–-ï“W‡vç”Ìäåø‰~#º6Í™3O×¥… ç:‡~Q©ø ”4Ç|Uçƒöm\Ñ´‡;vÜàöéï–¿úó¿wõQçf[[“ÛÏq¿Ë©“g\›÷ºýüˆ‚Þ}÷­ò#Ÿüp¢+  ùáO|TþìOÿÊí‰÷¹}ø„{GcrðÐAÙµk›îsKSU”–æ:;.ÇäÜïÖðÅ280äÖÛäºÇí…Whÿؼp³W~à#Í›·ÈïüöïÉ‘£GtOq²ÿ˜lÛ¾ÉõÏirã§«Ë ×æÃ‡»Ï~÷¼IùàÞ'}÷qwï&¹ãÎÛ\ÿôHOo·¬oÜ;Žâ:° ´r‰ô=Zd|�Žlœ¤ Š }ŸHY²`a¯¬^³Ü¿cFÈ‘æ7¦,²ñím>nüÄ 3Nο32Æ#€–`A=ÀRÑÔÜ*Ó%çÜžžé¸êÁ^eü¨hÝSÁ¹ú<ªÛvC±�¼šW4D5öÅpÅ8,J·7;9*/ì9&O>ûº Oiý€8â³1Õ âšj)Pò € º.Á1í#£ø(4Ø&uŸ Åë©W`% ”Œ$aŽêÐPÎòÂß©¸¦PŸSoY A—ÓÕ®-£Ê2Czfœ³eRò…z€A:a4%Æt”�Dªuô”ÉÈRuDA´cÈÈGp­‚‰�sÀ X'skžÙº$gLR³±—Ó5 ¬¬Ñ�Và pº©XhU°I3X_ŠM 6«•‘õŠŽ÷’«qõ\,¹Â2W0Þ8=ŸuóÏÙ$ÜósW_°V`,—Ý=|«»±ÖSÙ–ÐUûhy v-Å�%ûƒ$½îñÀœp½±ûÒ4¡áx .¡3‡ý\óõˆ%u*Ðf@' Á@YÆ”Pç‡u‚Ý€Q¶°‡`oŽ9ÑÕÕa¬-ŦdÿVB€× ¹‚|ßEè5¤! iHC¾/64œ .g¡#€öNžag3¶²aÃ}?Öi|¸¿¸{ ÷Øg`?�êH¶ïK„çcü,ðO .2dŸ{)‚vÁ_ƒ½"ÊGYð+ñyÙsyȲÆý4ÓøaÿßêÿÎØÇUû{ü{61Y̪!ŒpfÄ0 R¤™G27`¯À$«dˆèã};vìH"Ö Ó ƒ9wøÀYG$=�p°âyùÈG´, Ê„ÓN#'Ä&œgp8 :ä1GJ0_`0ѤHl‰.yR\2Òl&#òÛQ‡ï™iüÌÔ3¡ìÞÌ3®‡þ5CyA:œÓ@Dv“Þ s“ó öX¼ð“¤�% zŽ8Ò¡à�Hs‹ s…AÁi]AÊ܇C �8øhÈgŠæÃtÿý÷kÉ‹E pÔ÷â¹M n\´I5‡ |¸1€^Ã5LÅA#ó‚aqDÝño22 Ž¤EÅó¡áddÉ:ÊÇõ0ÐxAÇÙШ…E)MȾÐ×áyhê…>€õ@¿¢Þxw¨ÛG#êŽç“]e1o.îG9ø7ÊÅó�†à†�4°•€ �TúèKºÐßdÄ èƒcT-ꀲð>èäÆs¹a#»E›æbnÖM…˜6KCòfã @£¡5�¡¿ø‹¿ FSÌUŒÝW_}MA]pV#2ã:í¡‡ºl½þñ\÷Yÿé?ý'¨ooï§Ÿ~Zçÿ/ýÒ/¹¹Óëææ™ – *@ ð üàu>ýíßþ­Î¿{ï}¯êlÌçW_Ý+wßý¹ãŽÛåÿøåÃþ°êªo|ãk:ó7󜲡ÿ?ýéOËþÏÿYþ×ÿõÿ¥€Wè ¤ë€þøùŸÿ„F_Š�„õÑ~TþðÿP~û·Çé†[´¿àà‡žü_þ—ÿY:`íø«¿úk÷ù¬2Z ½�¿üËÿ^Þ̲ GÎ’%‹TŸ}þó§kö’ÜoB¾ùÍo*ðà'ò'µÿ°_Å:¤º%Ü‹½ëoÿöoë>eâ>¤¸ ÆK/½,ï”`]:táÂEnïþd²F¨çàÖ­›Ý»{R>ûÙÏÊm·Ý¦û|Œé}ìcÚ·—»f¤!9WsNgðù„†}:®¦Ð‰övûÔéࣱ¹ l4Gx†] æ%e½Cv½NÌéD& ö_]ô©jX9¤•÷,9Þ Ê(aFpXlMY4zi½jv-œè<ÑÍÂŒ Í>iQÁ!Õh ïϵ½=EQ2](I[k{“'å?|AÓ ä}´r¬@-·›S6¡¨/ªƒSÙ,þ±2;Lû´Kõ†+ë‡\TðÀ.cb괌тHfs*•l`Œ$–Î 5@Åê ¢Î‹<3Àì_^‹ë�0ÆÑ4i:ÑuÅ&J2].I{[gbXBéH­/3çY„,= R9˜‘¨R—B€�d”z ¢Ï¨Éʱôvä!Å1e1GµÚ‰"0+iXµ:Ýô-MW4į́sÒ:*#㣲xr,˜Û+-Þ¨°YM ¸EÁäð¿ùëòÔÓÏÊ׿ñmé?=(Ýe0Y¸wÛÉôTÕk:eÍšn›-N7ÆqÅúvzJJS%imkuc©Ã9>ó–f'*( çôéévk~¯[«FF†œþvû`ØDÆ$´ã£%¬^ݧ{ÔÑÑaí³––Véì2F»¶¶¢üë_ø9·î’ßÿÿÿŸrâøi¾Æõ}}“Êè€=Çð°sªOW4yôØQ]7Ñß;wmuûðy®_«nüŸõF¸B�@ÐÂ/ýÛ_ÿý·>ãöø'‘ôÈ­M®¬²ß˟ПšV¢:)Ý=]²vÝ­nOòM=`«ÿØ|²iš Ô3V›—�GA?a.ƒƒöZÁ¢‚ßÕÞ´h¾¦(•À�êµô6Ä�Lv6àÙ9Œ„'p¬ c>a5µ¶¹±Ë„;£”ªS295bì4µHõ¤±D‰Þ©Oç»"5–šñ:¦êÓF mQj£3wÚí!§JÆøü+Geïrr`R¦¦=%pµ¢séNò¹f}gªo 5eÖ˜vãpb:²’èjÎ5žÅ8ÿ²©,CR|ÓH%ó…�÷.èàÁs<ÿ¥Nq s¦ þç÷|~ò¼8evuuëx%èÆØ0ÛÖÛð™,;2.<!u X1ÝT”LöUhô·T'žé ZYAV‘mÄ8 AÙ9Š-Ê[bÌn.L90\RÐ ˜°þ� ×ÑÛåtJ›vB¬@×F§ÿjUK+»+×£\Ô¬¬-ùÜ{þ€k;�<sÝ3{Ýó\Ù#îç)wÿ„4¹µªš«(ÓF-.+@GÓ•A) ÀD ‚…-oÌS&‘ÁƒýQ@|aº˜ì¸á=! y–nœ’µ]„ÏÌ^6ô[!=7Ç­Ëã$+l(Ì5‰€-cÕ™}tÛ iHCÒ†@�F8zÁ“6˜…é7¸w£8^.+ÁÔ ˆÀàú:`ü%÷dÍàþ-d¹ºá^ûË0E%ê_B¶mj+A( í #nšéú쿹ï ëÅ@UúËàcY츳If ÀÎ�‚ážÇ3xáDƒs@Ãç¾Ã��RN-»Ã¨E\rð F…ÃŽ0& ŒåÈqŽë‰†çA<D3s3Mú}üŽú \8yQ_…áȃC¹\Ç]õÐó6;¯¦„ò|¿_Iy»¡\¯ Ž·Rïë¡Í˜“Pæ˜çÛ·o“ùóæê¿1™?•ó Œ€�\˜!Ñèù7¦ÔÀeà:Q €³zú Ž~Ìk87@€žÁÜÇ×Â)ý€ºáƒçáY8PãoÐøz ÏþÀ> ÈB܇=4<Ï¢A�÷è€vpÑ„ÞÂßP_¦1B¹(›”+ê�pÌ¡¾¸ž‘G¨®‡Þbù(›‘ÜŒàZ¦â@] Sñ<´÷¢™ @ö„ì¨3€h§9+  €wˆ÷@]ËM Óvà~\‡z�xÁh}´‹‘g�WÀ1ËÜráàƒƒ@:¼; _Q´“9ÉÈÌò9v�ØA¹ê‘ÝÏÃ5ø;ÊÃ÷¨®EÛð7¬-è—•‹àІ¼yÁØÇ¸k>0Ôcl"•Æ?ø¯`âcþë_ÿºsÄÿ yï{ïÑ1úÝï~×é¯=ò£?ú£n\žH€e�]¥á|‚±ýþÃP¦è,8p�Üø‰Ÿø²~ýúD?lݺÅÏãœêM²ËXÝÛäßþÛOË—¾ô%ù¾ zä]ïz—üà~Lÿ Å¶m7((bݺµòÓ?ýÓ:zè;JM¾qãzùWÿê_& lÙ²I~÷wG>÷¹Ï+˜�ó®`ßèë[™\·té5f^èà$ôë?ÿóýòàƒßÖºnذÑ9u~ÈégKtóÍ7é3þáþQ�K–,Ö>@Œí]»vFÕR"Іyli6mÚìÖ™y.ÞÏ7¾ñu}G÷Ý÷×öá$½É'>ñ }&Rƒ@7hü?`�ô5úÎQ” 0Ì_üÅ_h¾z2;ÝsÏÝêëèh×½0Ñõ¸ý }µ÷¦Ð×\[¾ò•/ Z§ÖÖùšò ’¯~õ\ÿþƒF]ÿʯüŠ2›¼™êÑ:´¯´°\ž .&Œˆ ™ÎS²Ð�±råruvçGâÅë”켚‚1‰uó‹¹KC‡¸9¢¦Ï1>Ð9 %zÐkŒ‰cN p‘F„›cÂÒÑ@€(Ö0’]Îqα<uâúHèÐù‡ÿ0Óœ¥V¶2T”ñìjC†ÀƒHƒ†ó~ŒçuîÃ)Žœö££Òîæ>=àhÒvÀxÀtIèœÅ÷ênò”ï4H£çí<™KÚeãƒã})ë„õqEÒhûH×뇪Xš’\Ò'iW•C’”.ÆÁôR©œ¼—ÔaY¬s0ñ½">ÂÕI‹¾¡N€þšžnrN[KïF† Žá”m£¢ýj ŠU¤€/ ¤Ë¾I™Jh°Ûs0–…sв|sü#M'×"›cêøË©“R]êp’c|9‡ã©þ3Êè–¤^()›Å¤,Z0Gº{:¥¥¹)a?9w~ç,=”kÃÜy]N/ß)óÌ—¯ãw>8£ÎRE:ZKòèäcnmØ 6®Óô†h3ê6…j%rë{Yë Ç<À�T€ ,Hùè}rðÀAÙqã·7¸IUìIyá…—dÏˇœníUÈŽ·JOo‡[¿ ©ù-wp^ð~�*ü»ÏQÊå¥ÚŸ-­M²hñ<Ýo—¦œ£~lPâ#–Ò  ŽcÇŽÈÍ·ìõV@Áõkww¯t¶wJsK^ÙšÐÑwÝu‡|ñ _‘ãÇÊVÎ[z°#Üyç-ÚOm­^g`üXz“Øý8“årEçf �ŠŠ9›yf¨TYÂ"³¦¥«»ËõC!ö£Ž¥‚šÆ3’Ú( æº{L<PIÓ¹¶Æ…žó`äïÈçݸpŽãÒô„«Ç”sry–ŠªŽ»ªþ.Ê0GU#@Å2#T•= »Œé;«é¬Ô`ÃbúSüõ�äŽM”ÝÜ*ËèØ¸;9"¯tg¾c£rf`Ð}ÎØœb45µJ±ÐäMÆr €#½OêwxnÞ3á̆>äÙ›:œú=›>-L{Áù˜ Ü r¢X&¯á5ŒÄ Ó8„ϧž™’¨[”$(“épNÔ „ñ1éhïH‚B€Gî¿c4 ŸK¦{¦Õe‡}Ãö§,_¹:öÖ84])ùv4=ÆÚàPÍ­)˜HiÆ$h´&ÍéÝ&M�¾ŠuάC>™“ÓšòÅö­Æ|QÖ¹æÞ«[ÏkU,Šð.޹¸{p¦@úæ•R® ¹ºŒº¿—À¡$e¤HÂzyv‰‚Í c_qÇZ…uL׺¢Št±v¦°¿“:×ju@‹ô@‡ÇA¸îçü«IKjµºqîQXnöݲ,Òp‡îeøþÈ‚Œ5nJíP£úÎ,­Q“Xz¬‹ïïÒ†4¤! ¹öª ÖK°Èúñ![ü�E`ý…ÿ‚6†ì^1{X.™p¶Dy°­Á?½?,3Ëô–EVpØ÷±ÿ…/u^¬^ü7÷~ð«ðÌ B½c†ò²ubYdÝF™ðgaÏ1“Í3Ü¿ñ‹{ž«É‚Ÿ°ÑÁÆÉ}¾íWru,_³‰ÁâRÍÑ%þ-º„ŸÑyþÍO.øÉóæ3ü­ ?Ý ý.)ýé0£c1t°á #67Œ ÇàÆ`€Co8µàôƒÀø >&% çq1¬Æ^ÐNã™p2àü b‘-úo<uÀ¢³QÓt˜`p¼-„zÂHÀë0‘áÐCþdÐJOLÖù®¹X}ÞiÇûLÏÏ*ŸëAB>äj‚!Þê;{³÷_±zá(tèkÖ¬vU›£XhÐ^ ØAèŠPùÓaŽãxôæ>ALuëðo8åD�0�t”ÃŒ,Á5æ0jMêŽÅhKDCÿ`aG°�4Aöèè%è8Ð Õ1&Կ㙣APÔ›¨Åp„¾Cÿp‘Dy�‘€Ùƒ;¶ô^øÐÁ€2Ql�˜2€ 5úÂŒ«CIB‡6¨ïÉœ²¡› ,!5®Á=¤íE90äR÷Òh‡÷Žº ‚¿ãyhx&Ê~ê©§ÔIŒq:õhXÁõ¸L"ÐáØÒ˜…2ð<æUEÝñL<)®ØF\kÈÌ4zæuéêhÓÈ8ÐÉ6ùþ„!ÞŒ6‘9[ ÷s ¹22Ó†ž_Õm>ã©É§1NËfŒ—u[ß}Þ5Š÷âZŒå ÖICÒ·GèüÏF˜^)¡SÅœ’MußϤ¯ Âc~ú«¥ÓÉH•¥f¿Ôç=;äÎTg“½ £!²‚uø³_¼_þûŸ~Ux.ö$ç8*Àp‘KZµLH6Ù”¡‘ÃÖGRÇç‚ßtÍ4gH<·âÓ~äÕ!êãjÍ"ÒC‡:gàüŠÍÉF_G–¥®¾üéÂèßQ‡Ü98¥°÷Á?[[Ú” AãŽ}Yp\á9p|å<�‚©ÒrEïaD9û åÖ/y±èõúÈ\+£¢Ž«ôü‘a ötö0í%¢ŠÑÏÆf!‰Ã›û1ŽýÐ: Cç"ÊÀÂîgªæ±°` 5ÏVôï ’€a(tzqï%yЈQX‡´ã„C^m9YÔëöªmyiiÊéûÍ+ÀÅ�`¹È›7"]`Ÿ–×ßcY¶b™‚:ÜÞnáü·G+sçt9l«FÎ5:Õ³‹X›j2<:!=ö”<ñÄsrv`DçIoÏ\éîiRÀÞâÅ ¤oÕJuÄMNNøq! `¥XlÖw‰â‘¤»ÇÙ*:Ú}t´‹ð\�b¾ùÍoÉ#=#‡Ó²çÌí– W˶m›•-㣷w®ÞwòÄ)gø;+ûÞ8 =ô°ìÚu£|ä£ï—ÅjL4¦0=hª ÷„þSgåŸÿù[òÌS`U€ÜæÍëdÓæ ˜Àþº·ÇÎb‡tYÔ©"/½ø²Û+ŸpeµéxpÏD™ï~ϲmûzY²h¾‚l®§ýfŸXÇ>XQ WQ&¾7'|%Ð%vn£U± :ª)9çiJ‚£.¸×¿«ßï™:§õG"¯ËÀ(�0Gµf){ Å¤tY£¼cã¥jT*šnˆ†Ö4Š–Í§k»ù!¶ÄK$qûR�ÀÇet|Z‡&äà±³ràÈœM€dé¼0öž 7¶pÎA*¡ft‡“^ÁPîš|Žù–„z>Ô!Y0�¿ AXYƉp~†i~êâ–’%d; m@á÷¡>cùÔ“¬/Ù B=Õªuëï#pà'Ú ”[$m–¦è©odë“í£,cGÔб2Û‚–핪Wñ QX£~fjjÂ@(1õnA™*Zg>®S]›.aw€#Ÿ³TAºªyÐ`dP"EôxOd�¤¶ˆÄ� ¥²»/ê–(ßížÙ$qì,§ÜP.+Ë pHi‚ÂìZº;ûç’z`Nà¼Ìµ.dõ`²Ïø9@ŒìXã¸ÿìpœ†ã*ëáž a'IªÏ8ÓúDª›X>÷¦Ðx HÒÚ&¿ô/vÉ‚y=Ê\„w–;³áäëì|vú³a/¸ZòvØ Ò†4d6 mü°…‡`Âp]§ŸöÚn°×ÂY>„@™e+Ë‚é(»>~¢ Øí îOÎý€’ub9Ù”r8ÇÆCß0|¡=`¦=pX^¼¥ÿ öš.Üׄõ üÉ6¢¿ÐNöYÅC6‹:®_»Â2yÆFP*|êð/Ýpà u 弟õâžÈùnCœøŸÕÌ'ö?kR¦?³9Ï¿/ô3û{V.ºøÎ ¼DFZcÐÓÁ‰ï0ˆáܺ‡8¾ˆžá&–1 ˆàˆÃw¤‡É“O>©åÃ1ç(�p$‚:yëÖ­:Ap)éñ<| 4TrЇèi\OG"êÁèmààE=ˆ8XÏ8§ ~ò-_‹áëex5ÔWZاW¢ogB³ïï«ÏÅÊ¿œ2®ô» zó‘Ú�Y¨®hFžÞf¿LÑ�Ç=ÌY¦ÑÀ‚È\°˜ÃÐ ˜¸:ƒN\;sÈp€g#Êeb¡Î€n˜ �*è(.R(e�È�½��SGàûo¼Q#!X ™ ôÑš�@—‘-‚ è'²ahAö´ß¡=ŒˆA :`ž‰¿a1'PסhFÈždƒÃ”¸Žº™ì aŸrãÄ|\4:‘1ï´í!À„‘FÌã‹ç¡ÜAÝÉPÂ65¨A'Œ@ÿÒH…ï¡{±Q@¿#eÞ 7l#îÁs!Ü4 Þ!b“l 4Ð2-îáÚ…6âßcムÚφ4¤! y»… ;®ÏWZ ãgÊ1JvŠ5‚ëåùö`oeÅ:e˸Zûd´k±9LK @²Þfiòq„Ñ%šbƒN3ñNƒÈ;qb ÿ‰®_ÆQ[£s#pЍ±Q±åiï IéýÕ(àô³¾JL£ëŸSR„ôâa„«õ¯Eúj=Ë„Ajê Äž }495)¥¨äö°-šJNÞXÓ8#”sÂæjžâ¥fTïiÛë@¡³ Õ4Çm­Î¨±úJHž9uÜ@ªÕJb€©ûÓîµô(9­3£w Œ ëF£KèÐb¿¥4ù•:'(÷úpNNZôæ/÷WLѦéÔÉŸ÷Ì%挵¾HÓ„„ý@c¾‰œc9'½"s»DzÚ]û‹®¾µœèÔ·Hg7žÐÿN9¦¡"SÊH4yè„LŒOÈüy`³èÐóI±¦=÷¬„ræôtÉ{ï¹ËæÊ÷ž|Fö¾v@††Ýߺ”R?®Ò6uv¶+øc¨§Ç@½�wt{3&$"ÀH”VÎ €>ÞýîwÉ¢…Kåo>û÷òº{ú¡Ùƒ æ/˜'sçÌ‘á¡e«Bj �¯q¾‘mõšÕêhE ÔãiÂÚ]0Ÿ/ž/ý襳£KþèÿL$´ïÝßæÏŸcLåª:ç»»Ì(ÙÛÛ#w½k·ë·IÙà ¼ºgŸ¼0ùŠ{æ€<ðÀCš~k×®M²Ú¿*ÕRòî–� ¤¨Àü.)+EIÇ*XgpÙnÚÍ îú¦EÏ%Ec‡‰BðSœè… AöÁ|60þó içh'¤:]òú½êÁW¦â8Jæ].¢‡.JÍ‘¥8²Öb„ëWMyéxBj•‘±)ésg™ 9xtP^;0 ýƒîlR©i=êAN–Nl<㥯HIœ!zbT?ì°twöø³eýú¦FÞZ|ð!»††Ü ™L ú,—¦^b]YNhLÏ–Ia¹!øƒÏ¤âu¼FËÖ#þ O8¯b­ S‡ØÜkN ôùÀ)ÏþNÞ[°n„�4®A´gR¯²¾! –¸u¡âDų³(§bk(ÖŒæ&œQ[ýþ$§sºˆØôƒ%ÐùRÔ1�†¹x‡€_rrTp ØU0„ËU7÷*S:öÈçÝ<¬M¸Ë`cïuh—¨°Ö©¦!W€›µqaº)8ȧc?XŸÔTD•€?fxGü>üßy8^è6Üp<„ýJvýÈ.8ø÷°¬zG‰Ø¾ Ç”cMú|¦S ™YÒ†4¤! ™M´‰ Kÿs¹ß‚Ÿ‚ýöUØ¿sŸÈ}\¸Noé>™k1|#zÆqåàƒ=,×k¬µõç€úµ?\ëiÓgz¬Ûðë2ø$Ü_†{µðþ°ŽôMaÿHVlgà4²íd™Ü“ÍÜ΄u>•°>a[CðË#sXÚá+».M ¼È‚OCƵëÅg|)2k�pbýCy€Á‹ÅÃ5Œ’!³' éáqœ’D:á^žxâ ¥ÊF3®%˜Ÿ9DcÐ…‚Ž[2i0â@ 8CiP$Õ=®g47>}}}΀±H'5œy¤ÈG”óµ¶©žMevHÖ`)wÄ—€ÓºÀý—1®æxÁ¼³� HÁØ3 t5#f1ISÁt� ±HPÙ˜à Ìstæ5þ†9‰9 =Áü͸:†Q+[@•ð¾Ç³pÀ{öìÑg \êPÐ#ß<i›¨çðw|à¨çBËÜWM0eõ$ꎲÉnk!Ô{M`q„a÷…é/�Ò€ž‚P'¢Í܈„ÈG<ý„w²GTè,qôÚƒwEÖ ž‡¶ ïÐLËBfALÓAÃêM½Šû¸‰¡¡íFÙxߨîá÷|Ò&€É¬"�æ ž¸†àDÆàfÏ» 0Dˆ¢NL'C¯N×ô)ó²‘^¶¡OÒ†4äíF·Ó€}¥…kUxž Ø®¬S¹z%…ëhÖhpµ�ɹÈGW“ýŠÆ ®Ùtf%ØØùç¨E.xu¸$ΤÈçj§qÂ�•€A±(‰†öÑÃ1Y$juÎ}sÄ[ ‹‚gŽ€„yÖmEfIœ¡t*óÓjD‰CN­\à Ÿº ¦×£.>YÀ^…Hâfu ONMèG›qA±ùÀ¨R«U‡¨uþT—ZEû-RgW>Ÿóy뫾51ŠÝPZìFí'À’ÀPd}ÁÔ+t úñÈ¢Cgß]èe×;¤0 Ún�,Ô1¨ï!çjÕdü`Ü`<¡l¦ƒ#‹It¡Á'jÐеB'­ö(‡®»Fª2<˼®œ,š›“öæš½_ó»ñ+˜”ùJ¢ïú¡Šïáˆtmרq°TŽO–da©Wæö‚õ²#IßT/ÆŒAÿ~‹s†Þ´s›;K,“Ç{ZüöcîrRY Ð'MÍguÏ=&‚6V¬X.]Ý©!ÍRF,-…«7Xš›àð,ú÷ZÓÔ§û”†ûŽírèàQéèl—uëÖ¸2ûdÎÜ^™7×öÑ“S%' jÿ¾ƒrâø)yäáÇåôéSz=�ù‚•�rèêìÔþ:ÝÆ ̶ƒ!°,Z4_:»:´=`Î(€áCqHxeW&Ù¶}£¬YÛç>+åéï½ »~xö™—dhð”D÷æ\|t[MÁåi‹xoi5Çss›‚P�:QãlKsÂ$Ž‹älì3É?‰ëÞ‘þÙï�U@çÔª>‚9¶1[®”th ›Z”̽ÈðVú3å$ œ øLÍÚ‘¤ÇwT«I¿ÚXvÆã±’œ:3.'úÇdð R}ŒÊ±~¤ý˜Ô”!Õj LÐ4-¾hHµT)esp.#åGww‹>×Ò •]€׬,˜‹ú=-»œŒùl”uE}ø2…©/,Q®OXo¸®p󽄬GÔçÔEá<ÁaJ/?ÕjÐ×q²fñÞäÁ”•c¨ϸ!èŸA�ŒHTÏ\ßHÀæÁ>«¤¥ÀA>óXÿîÞÁ>ÍmÍÊ0‚OµæSBå|¿Fq2ºáäÇ/‘¦•Êë¸Äõˆ´W`Zä™+¢(X+"ϘRIÖc€*ijNä"ñ€9Ñõ<—wçû¨äþí쨵N×n°ˆÙæÊswß•C$Xï· ú!'á\NÇM\·—b‡ ‡,cI½£¡¸“Œ‰ ˜BÙ‹|¹uN+°®Ül¨e»¿•ü|ƒŽH×.³Ù´À¾]4{ÖÕÚ§5¤! iHCòNJKK«ž‹Âs:ÖEÚí!L½Nöë±"Ü»…€ÉLË´nØéá¿ ð€û¯1-Ôr¦Ÿd½h‚+ÂO–i"˦A%˃Ý~$Ô‘)ö¸É~„õ ËÙÐöî–:ÚX ç”î‰â ÛŒza p‡á«Ú¾}{$u ™4f‹Ì€¢¦I¹‚ Æ€—0'¢ñ óD„ˆ!$ñ7¤ÁóµŒ4!ˆB§S#RóÃÆôøÆDrÀ J–b5< 1w:¾3çܘ"¿.tÏëî’Þžn¥¬PÞnÔß.ÇÜ;å�|+Ï ‡lûÏצ7ÕMoñ•^ÎøË¢ì.ûY¼7øw“›{ ,ÅKËb7Wöõɧh\˜*MÉàÀ™é€ù àtFUéõ@`f ,5X„‰’$ú‹t�ÊáÂO†,²LI‚ò Ÿ¸à’ÁiÀœ�`ÊÅu�Q€MeÃè=CC tž‡ºãyø05]Ö`\KàY £Ð&Í™+NA]pÚÈþ ¡u‡,è'€W ¬ÊB{\#BPÀdûÁ3˜JÃ�0Í l?Üì0Â6R·óý¢�¯QÄ  @>_û…yÚÐ>¸ð|¤sA1°ž�!Ø#4`¡ïäAÝðÎÔ%k Í¸ýA@ žE€ êÁ~K iHCÒwF8 íQT¥¡}Kh,‡ðZ–FÈ_¬ þN 6ÇÙà‹ÉLuâA8ŒÒàµW[bu4DÒŠgû½ òŒ£.–º!i©·`PÒ#5Aì7æ¼qï ¿g¡l¤3ÓW¤ŽŠš¤”ûy¥&W#@Á(µë#>$‰ºÆs™ßÝR¾[$:£Yûçygb® ÎeÔ_©Î}tzU#~cO§îÊö)A^õ 当•‘«SSÆPPf†ïŒ|;«A›}„oTá9‹†ûÞ"bÍëjø0¯­—äµmè_¦'€3Lc9ÒÙõßqÌT+öŽ˜þß۵ΠV)'©ãÂqkiGìz¾;´)pTàŒ®¦ªNiŸ!—Òê·¶¶[Ù‚w_ÒTpÚ"ªÚ˜ÓZê FtVá±UÿÞÒ¹-u‘ÅáX¢N0ƒU$§Îdª˜μ,ìEZ÷ #0±¬ 5KÅPóNóšûcäú)@á¨DÛsù¢‚&'J²`~Åñ;•]‚uÍŠYsVΛ3GÞÿ¾w»óÁ<Ùóò«òÔ3{d¶e<°WrôØ)éu׌ÑÔ”Oìf,erhk-J1_JœÓƒ âØ±ã:VÚÛ:äÆopg¥…Î>Ñ!«W¯TÆ ÝO‹9[[òÒÞšwg¯yÊøðwwuyN$#²õ†MnÞãÚ ðGÝ|¯Ê‘£GexdTvßz“³µ,”wÞ «úVHG{‡2ž( ïZ§6Qè\ÓW`™Ø¼i½ë‡òuûl̲ìÝ»O-^(åi³ üÞÖÞ¢  €íÁRÑ vÓÄËþ®ùþõúD ˜Å1Põ¼ØRmŒl€ñôï˜C)Q”ê6±vEWø¶RËPò©µX»•ø²4áƒ=ÓéŸñ‰ªœ<5$‡ž–Áawþ™’Óƒrò̘ŒŽ‹¥ò±7˜ws®XÈhý´!JYú¤àÆJXSj{œÅJI®iïõz€Ü%1W%ÆÕð|2 q^§}nŽme# ÖÓ8Qóõ¬A?D©ú&Q0Š0¬C ÈcD§m0 ¬ÂZ!qÝ{!Ðï:„ðƒµ)ŠÉJ454¥c±½­=I?C½©å@Ðn¨u˜=C}$ªûÊ“ež“,ÚÔTÐ9  ÈïG°æ(ƒÑ•Z [ ÆÐ¿£/¼Î¨E¾Q¬€:«Sý¾H× eW±µëu,9ÚÿE½/®z€ŒÎ ¯×dÜõí¨›s#n4·¹‡¹3vÌ¡�áÀÑ0êÊs?Q^$IZ,ñia¢¼é¤Ø¯ƬP/ öN¸·æß×q?ËlïG&”¼gnŠü8ôåúq¦iOòÌpFŽJÉâw¿îF±ÁµtÏõ·f@#0ï`þé{Ór :Ï�~Ëå-UhäßusSs=Ö«! iHCÒëP²¶•Ô–?•œá  ‚÷Ñ6‚ÿoöþ¼Y²ã<óýœˆ»ß›{b_ à"® HmeUVf’ÊF6cVSVÕÖ3õß´Ù|ù�3ÿÔ|…éîÆJ]ÕÖR««T]’¨*IAŠ$H ö…Ø3¹ç½y·ˆ8§ý÷¾þœóFäM� H†§Eƈsü¸ûq÷ãþ>Ïû¼ñ¥ü"RÄ’lôRX#x¿¼"~,ìXe¦A9–<â½*wÌ+~¥Á;ù)ô‰¾‹ùi¨¼HÑiDNþ·¤`Î{¬ç,qTï³aýTž×^{Í¢>€—€1Åð"1¿¸ïëÙ›!Ý4 n"7‚7Sà™Œjü&C¦n"›AçTÜŒ€ €~tZ"�ÙÈ÷÷ÿ÷Mî�Ób¡å #$ t*@4ÉôþóŸ7Д¤¥M4�d ¾S<F®#4’€lò×ù @è¯Ë¿ôÔ½÷¤O=ø€m| p¼ú³WÓ[o¾å þö“þbž~þÔ~Lî÷GE¸1g‹<Þ�× ¨Ûm·št.„ÆÞO&¿(1�èóã—ñÏ\Âøc,Óž<p˜DšWß17DC À�¿s=æ Î' õPÂA” ɃEjb!2W1¿p<õxà¬N<ãÌIÇñÌ_\ƒð bRºÅhCÞ\¿õ0ão¾ã|©Sd4Sx’æUÚGž¼’¥¢ŽRûÑÂDõaŽòxáÞ™Si6e0âÊÀœH½¥BQòTaW˜W9–¿5_Š rˆæ}‘ Äb!CªÜæVêE¹´Ðb꥗^2&!A¾úÕ¯vª›yÔ‘C(+ßÓ ]"ï$ÚH÷r¡”ÁobÇj‘%Bõ  jˆ°Czçgó9|žæižæé£HÌÑ §¥ùž¤Íûû¥ƒˆ¦È÷FÀéAù(ñ<!\ÏöŸ§L‘d.BÃ/3ÚÔ%ì O*Ïý½ülåç"ë65†¤p5q5äÿ[WFDzŒ$•dŒ‘­HX�„jA`§D3ÌÛ¶�™&‹^€öY\Û‚@€êêƒÚ½ÍMÈ nBœöÆÂ˜¡@½x‡ãIŒºÁ r_>VÖúÙ`èêQM­Ì µ¾~KV¿ÔM†[ß h™š®,©šöÂt¡,ñL•röžÔ³ÞѦœaF”T¼ŠdžV³è½w{ƒÖ8õ réƒaióqÉb2™J…ß?…iq¯xîÛÒÒЀ4Å÷õxU�By,­[ž»{„¹»fí·¸°Tò`Û5\%£7*EÂJ{r‘tFù·«×†,ͺíQºûV_Ïhg„ïKŽÍÑvxL«¤Š+—¯Áb3ƒÞ×¶vò:û˜‘PVxÙP4wxÆô¹µ•åôØ×¾˜yèþt÷½w§ÿýϾÞ9}¦ Wzö\Þ³<ùlÞûœK>ú©\W(QÈŒÝ]BÏlaqmmÅ®{û·X]VWVM â3ù\#Ôåú¦Ìᄔ͙ ¦ÌqÏÝ·§/|áÑôƒ'žÈû«óvoÖ7Vr}ïHÇr½Ž?f$š—_y.½öúéò¥- á±´¸b¡Sp~ßܼd÷Äê2 ß8¹Š±n4‚TÀü]Ûw@à¹ó®ÛÒ‹/¾œï7c�Òûa»a>˜OVWó\·X—¾ãá9|º¨œUªÖÃ\M…´P›­ï¾Z¹ªxm­ÿºw¿¿[?nÆÓót!òTu•úáÐöNméÛœß*ìLêˆ\M[Î+ ¼‘"òŸgÏmf›Ð¹ôæÛÙf´™÷9—·Ó¹ —ÓÞ¨- ·çe¡Oº~ÞLí­b#õ÷â°'çh|¸¢ªö@xòŒb¿Ã<Źqß9ûl”BSümJ  ”!ŽMÉ^!ÃAn›?«žˆ 1_‘&SJB©ÛÛ«]fˉƒp;U¦8‡¤Œ=*Måp´×)+J®yeyÍúŸF˜ƒ&N,I6_ö¤²h”—A>Îÿ¾nXîÖ4jg)%Ž4gÛ=èÍÄ}[åz5mGb˜%Ȩ®>ž¦Á +C= ÷ )s`c$ÏÂ(ŠöœC]É} OÓîæïò±ƒí|îb>o%ß õü]¶U´Ûy깘ªÁ5+Ó ’JLcíÕ$=ÃË=KU?¦SSþöç–‰­Ý#WÓSžw¼Æã¢ja㯵gôp’ˆ‡UâºF¢0âŠP#Ú¢LÛS öí`aGwl Al›ì;©c!ÏÅnRxîA°hu^ÛtÏÝyš§yš§yš§OrÒþJÇäk_óÈ©,‚u%k÷#ÙT{ÑI§TÙDÒPtìïØë•WT†˜%ÿöûà~í,‡IpÎW¨uå§<U&…÷ˆë¥¸N¡A‘À¢ä Ë4K`Ê„òŽä`°$•v›UшJ³ë¸¦éÕ5äHŠS0XöoüÆoN&E¨m�1Ÿƒîñ'9Ý4 u$ „  ìÍ7ßì6u F:=ƒÀ>€Í'Ÿ|ÒX8t: 2ùÈjâÝÇpõÁÍïÄå;®áâoþæo,~h¨Ç5%[/°Ž2qݨnø7—qàòŠÔ‡wêÈ1’øçw §NÝk�ÂÓD}÷컾!h§¥MçéæO¿ì 룜 e¨8uêTzøá‡;/LŒªŒ-ù åÁ�Ù2‹PÀùÌ#ŒÀs@xPò°`üsœÆ>ó ƒÔŃE‰üùŽq©‡þÄ6λRרÎw=tîÙ‰bK>ú¨«¸ëŒÊGþÌ5(,p>ÇC°`~”!‚ÇSVÊNYIœÏÜ(R¼sŒæ(󤘡O8OíMûQ&=¸Ž©ƒäzR®Éœ§y‹ã6C€€Â•ˆ4ØÜ#B4‘4wq/Ed3O¨b "?‹}ò¤•:Ò.”Wd 1@)m%/`)#×$< m‹bõ"/ê¨R\—c9—róRø [´«À3ò¦/Q^)úN×™D¡O´ˆâ·Yéøyš§yš§yúå'ž!ÌÿñÙõAS$=Èh ïÕJ®8(ñìÔþEÏÜú¼ˆ�IòäÕ3gbj=H#B‹)Yìí¦í½í 쮈Ñ6BZSH  M >ÕP16ÀÕB@ĤÌM`¡S¼Š`]ÓoâÁ[eÀ5 ’·‹{ K‘¢ý*Ô.œLa —-˜LŠgKãþ÷”IëUWC(`_9Ö£h•§¬¯äÙÛ{»/,,@´³ã¡/¥ñ‚”ðª¢�F®’Åßj@ßQ1ÄD#Tq³50¯)ÄÎqãR“R¿âª®Xaê)ö±ÆÛ­í[ýï½rJꮌ át¯kŽqµ¥@iÒ¬\¾‡e©»ºÔPhºvHÒN×¶²½ u¨18™ÂÈbà¨ù¤KÍÂ9d RÞR³ÐßÛ8ïë÷é»mÚÓñ&Ýz4ßï¢l`Ø[áÈÒÛªt0ˆµ„çÛÊûí\îAîû#²½›n=yÌ”"–:øBjP¸ºê€Ë:÷wÔ-û7¿žî¹û®ôÄ~’þë_¿óZ²±µã^`Gsžû£ÝÜ.»6XC>|$ÛVíZÞ—d´k‹z-SH0mX/-d0¡Ú™ü²ñ Y ãñõǾ”žyî…ôÀw§¯ý«F€X]Y6»…ÃW—ÒáCé[ñ7éÍ7Þ¶6x7ï9P±øÔƒ÷f 9¹šKZQ YZòº3Ö]€þ%ï.Ùñ¯þÕÿÅʶ²²`kôõUKRy©¤ ‘ªŽPÔ–qRt* ÑB^è“BÚ !& ð –KŸlm|¾ÂCc*ûÈmdš4H!rÈTßí§]‘å ‰¦Ê|ž4j”YD°°ßPP¥½q›Þ=5½øòÙü:“ΞßÌ{‹¼·ÙY;¥ð/ävp<¹éçqÙéù¦gU ie}£áµ ä«¶íÇ,/ùrL`Ÿ$[]”6ö=QÓí#£—›öÚ;EE‰Y7I¡·úy¡íö–RÑ‘S…lk±Ü¤H¤ŠùFÕ¿ON¦HÕ´z…ˆ'Í !ÖËÛ.hn¡ŒÛ•´¾615 樋.åö£­V‹Q^¡—\1¡¯Oê<Ýs3?ïFœQØÊHJQ}»ðÂ"à•½²©H¤iÕY"L4Àë¸èMÛAy¨- Øó ñç³óMR“<¤ })×<f&m[ž›“ÒŽ[¦ôÐ4˹ßn¤am³Õáܧ¯åÏgS;¼f©*Ÿ/µ&wÀÉ÷û݃ÆHÍ8×·Ö=M6¿ Jø+[?´ùº“Úˆ‡mëã’ò4ãBtªœ(Q …�×pËæª„xaÜ×CWËHEE[£´ÛÅ.7"arB~¬®/çû¸`¡wxtêQ€$% IÏ¡4·ÌÓ<ÍÓ<ÍÓ'<‰ŒIªq½Á>»9Ç€…J=ú ¢@$jDåJ­ÝäxÏ3˜u#y)TÛlx‘H°Ð¹QýBØ.ùq¼í=2Ž 'ÿÙ2DbˆáJ„[種1$ˆÖé1™ò™ ¢¼HrþUhõÙqMCŒèo® Þ^þ3*곡Eb¾Ú+{¸³Éukì›!Ý4 6ð�i€X�X¼d$”Ú¿sœ€Vu mü´áÀ8õ½ï}Ϙ8t’Ç{ÌŽà øF‡dÃØÈ†ð€|�w¿öµ¯Ùñ?úÑÒóÏ?Ÿžzê©D0e xÄ@�ðÇÀa3�^~ùe» 'åÆëœŽH˜¾‹€$ed%®éã×ý×í<�ÃgžyÎBUv7[hž¦Ó‡yo?Žý†þ‘ …Œ° —<ØØ¨^»¶Õ3Ž•*c›ù‚±¤9ƒsSŒ5$Mþ ÈGêš[˜W0‘ócPD.~‹²ª$æʧ!d)ò…4ñ­o}ËÆ1c—²âvÉH%ÃóÍ7¾ñ ûL8¼#¼Áùœw×]w¡@á6¨¯¤¡úD‰2s=ÅõŠ’VÔ‹ï);çGb˜<i¥t¡P+‘™)’‰È-ú޹•¤Eˆd¯˜cxÅæ>Ðvòðá|~£]5/Roê(;çÈÓ—c)—î» ‡Üˆi:`aÒn\O!LäáKò<á^+üT4ð)Ü Šúžcôì‰F:æn®!)x¨Þl yš§yš§Ob¹š$¢³Öà„” ç¶B@ý"ˆ R² é™ñAò`˜ÊôQúªþ‚Á3Û§¥¥tm÷š Nœ¡¡ˆô§1±Éw÷:‚BFx^�ªuyæ.vJT¤i¯çª#<¯ª“ñ—¿žÇøl†Ž É袲ôÞ¼•&U•¦Œ“â%Û)r'PÚ¤JS Hô<k“ Çuipê¶¹yÕBIŽÇ^­iÒ”G‹{ÑNº5?Bÿm{2¾K•È5£Ê¾½ä­ß–P®æåSò6ž�¯W[ÐÚGk SÈà¢cc¼[^€ŒóÝëH©x#;ù#·•ÝÎ&y¬úq"JõbmmÝ€,öéWFWòr£#OM&MG^˜4ûÖ×�åÛv:6®îEP–¾ ¥´¶„DÙÜIiw?¯ñö«tçñÜ——< ¡7¬›¢²Ø×XlÞ `ru‡‹W¶Óµí½´»³—nÙq5‹US•¨Ô+=¯*µj'»pŸ?õà©tۭçÿð§iká¶�–ïœ>—¶®í¦k—Ó—¿òEs qл÷`ÊG–{•\!Æ”\ä¬áát¥Ì)]¸x>_㌲¯\²=ؽ§î1Å Âã,¯,›*†ú1üÈñôµÇ¥{î½3ýéüVÞ ýMÚÝÛ·°”½åä±B„áx7¬îåßÒUŠ••żï¸+·s'× ­\‡9VUTêøi¤N)„úhÛNÐß­Ò¯…%[Ü+3Ž÷­=ñjw…š¦ÓŸè¨6j”Ûk{og…g2RS è~O>>ù©v´7»”mE¯_JO=:·ûfçó~mg7mïn» ä¯ä÷rˆâÁ°¶”uoo”ûçnÚ+RÆ2"CzAÁ$¹gÁv½k|ƼâïReìñ e?¨ÐŒj§¶íI"6jΖC€òUšUÒЕq8’@â*ûŸl€"ÛÇ:Guå?ÔSåØuzÅžYOG7¾O¦žÏ‘‰*FÀÌmÏœ.5‹ ÎwÏi)2Ь"£¾ž—ì%å`¢9ÖŸ°uQ*œš:M]S/Ý¿h³ˆ±¼)E…ŸæºõGœº¬ÿ´yÆö‚çPKßäÞqݦí@NŒœ8},„ê12W2ƒa¶5,’÷‹vXOKÕ±´XÊoæ<²½ga?· Ïá‘©F¡Q5=ùCÄ9«³œ amR¹—,ÅèsEÅÅú²‡àé8JV´¦SOöY£±ç¹‡qÒ¥ÏÙù<Bîì0îv]F<·È¸Ëó"Ê=CÖ %¼ ÏQÈ"F‚œ嬺¨g5=)RÈœ^1Oó4Oó4OŸô¤uC´³H±•'íå+La–AŠÄמØZu„Ôªê•Åø[N±Ódèë@ãÚ1®çäx©µàlùfË××r65u³B\X̬­&~î÷×}½}¿´×$b»”Ïlþ±®Â2Øãá\L¾=ôíÁFÊã½òÉùfI7 Á‚›7Sbõœå´c Ž|””W;�%¤:  %Òð€z’„4Ó&¢¤Z´“Ì= $ y$#7ÿGôGVÈ„¸S8¼Î$#SŸrâ¡.)® ¹‚ã"#H`§¤m�z¹¦dö?ýéO['Ÿ|*ýô§ÏX]H³òW=ý<mðQ¦gÓÇñ>~Xe¢Í¸?ýÈ#FR`<ÐÿùîØ±£æyE:zôˆ•ñĘc¬ðY`=cPŠŒ3æ ÆºŒ7tSÌ‘}G9P;  2j@ àw^ÈSs ¤ƬzPýÕ_ý••ï_ü‹asåå!Ïø§œ1>åÅJ™Iü-ò�$ æ³gžyÆŽ‡¸ÅüÂ<@ÛȘL½™ ˜Ã¨'‰kŠB2¯š<?QfÞQóá;•kJù‡¹Js—²Ô1ÊE£ äŹÔQä1dhÊF¹ñ¨sS‹#å±"EV÷’óD2á\î‹Ô0D@9äÕW_Mßüæ7Ó¾ð›ËµÐQxÚAýY„‘Èþ\0Éî½®ý˜ï©çs® RB¡oPv)Ráz"†Ð/æižæižæé£OÌÕ</˜Ó¥GŠY¥¸îá<æwÎûyT+bê ëEÑIeRÜÏÙòè}C‚Ì~Ù)>d¬PY�úÔæyðâDÑ:€ò£¤ð€ì€S ÃE »à™cØKÑãD ’›ɰâj "Høé�Bz¾;tâa�Pd�ð7C„#>ØÆ½ü‡¦TÐX 1Ð~ñ– �£é‘DwPÐÉ£Qk@ÖV¦±ÿÞjpöM™¢²>&Ò&×€<@›Ä¾âF% SÅpÕ:èË:Æ¥Ï{u–I×6½ñ§÷DtùÒ£Qc²æj;ì<F¼<Æ´ukœz€|'àž>ò¸îã캢…ú ÷ny ˆâ<õÎêÚU dÀq¯hï´#^Ô„Úܺv%¯Ù–Mù£'jTF&ñõf2rÎîîvŠáÔg£w¸êBeðw/Qê«Ûuº´9N÷ܲ˜NAÅ €¢“A)k„1¶Ö’}€ìË5üÞ4<Ï jžsNž8š×kFRp‚F²|D‰å ±ÿ§ÿä7Ó>÷púÿé/Óò\îkF¹|ÅUé~üÄ3é׿™í!‡7¬|ô)æ·=ë÷ìXÛîîî›:Ê ^°ö²æh+SÞ¸²u9çw);{>¯¯¯˜½äþO¿oáEÖ×–Œ`!R¡ILq$×¶E‘¡C×°µñg?û™ôío?žÎž9ma<î»÷Ž|=Ÿ—4¿2…z>ìÞf¦n’Ï!mRÉ™›vŽ!fÉʃ”CûYë%©«p>$êlá=&´É¦…!qU–B¨h=\Šßx(¡Òc»¾H]¥X"ešøjdh¬ q¦í¥ÿÛI›÷/»éµ7/¥ï?ýVzý­Kéü¥­2NšÈVF¨XÈsÊâpµÌ7…»Ò˜3ªÆæ&Æã!îe4¶º¹ ÌÉ>vú6Õž,ÎÛJ"ÉH.‚û"ž=RŒä¹‹—Ô…8VƒhÔV¾³õy=G4iüø<TuåÔþ-¦(³,òŒª ®ºPMy =™"@Dáwæmå1»ˆs¡Ô7ÌÁ¡w{ÊK—/æñÕ?Ÿ!Ðfëe,¶²¿¥.ež_X\00¾M}h$›çCâó"ü;r\¹¾êK‚@˜ÊüSUU÷\m Õ̵«¦Œ —‘ͽª‘µÇV^ÏjPY¦<Q{ÖóS=ØLõðRÚœË=ÿdZd›Aµ‘ÆíµÜ×Ïæßw¬}œÀá£ÛI K6f«¢ B;®ÄÈ0U¡CAfHÆ[ÄÈ*yH¡üü¬Æ6¾|Öö{@y—Whgc8çIìøí´»·SÔµ&iqi%9z"-- qª¶yÆUJ¸Ccÿ‘ Ѥn É-Yø‘º­‹RޝÈgžæižæižæé“œäŒ8›œdêá e¿ˆШ¨I±Z;ºÂ—ïcÁr„õ€ß(j€òŠ ¤˜Wt’ÐZì…$ek©T¤è ò‰Œ<ëxÁµ„(¼¸l�±l‘;«Z1ƼÛ�8Ôã¢FTÕP}U¾¨®ÁzŸüä'éÁL_ÿú×;ÕÑÙòÅrª,QÅ[Ÿ…Kß é¦Y…I±BÞâ�stD:$@ÞÇx#r£y§³AÎ`@üñÿ±Ë1+�þ¢!Tr/€]t"�?™¯½öÚ”74À"Xá@x'q=ŽýÎw¾“~üã›—9€!^÷([È»\×äx?åâ8ÀA>óèS9 ‘M*ƒ •I‡kSn~Øãï»ï¾+s›m*_o÷WÍÐ6 Lô(ñ8OŸ´ä^F5ÙãÃì;2ðœ:u*ý“òOÒ§>õ`úÙ«¯ØØÄP„÷ìÙÓg™qÊ8‹cŸÈÌÌR?`îRÇ1áˆ<4&o<82ŒF$„ü¦‡jmÒ£nþA]¢×a®â{Æ&syìsÎüÁYƒ:Rv=ÜߌcÎ¥>Ri zžPŽxÀ^,&Pe |¼›§X.s‰úBÚRHêHÌw\ƒ9RÆ,=¹~ôTä{Üz˜ƒ˜»hSÊË‹º0Jñ‚Ͼ˜K㢇ºÑ&RÚáþPæ³#ŒshH(ão‘æÌ¨xJI݈ûÈœH]ø[’œôä­hò¥\"Çh&)v®ÉgE~áE¹fF‹"ž#ê8‡kò,ˆ‹Aúe”$“âÅ<ÍSŸæÏäyš§*Eòó¶ÔìfcÕGZª³²âZcGpèï›”ŸòÐfY’’Q®[ÀK$‚«L³åù(’mÞ'ÍTÝ¢´§NªØ+ßÕieyÕ ø1‰þÊ|ãD £D„z./­$-Q-â{íª5„'F•)7�ò ‹BªZo¥â�+`+­£"K´%”Þïà“½ñG^ÂUjuO XSWSÆ#ÿÎó§=tœƒžC ŸÀq®¤uÅÖ¾nòû=˜A<޼2�Aúµp-ãuñló=pòÇÈHU5.y¶3�¨“zuȱ¹*5ãRßÊH0¬y ÐhÔK®î›‚ò÷ö©7’êB´\)à t©-�ªªà-¯hÔ½ÿ ƒº°Nä}cãPr¬êúˆƒˆû]®÷L¼V«Þ!ßÈÅãAúÙ™lKا;N�(æ6¸Ò„ YJ†úÖÄA{Æóú¡cXÇB†Îã–ÇÓÑc‡sÿ_îÁûÖCšTש6øšý®»îLÿú¿ý繆ÿ>}û;?*€¼‡9wi3ýÍß|7}á äµò Sï  ×¶vÒhœ×­—ìóx4éú’¯ÿÇFh?qâXºãîs[n¥?û[y_óf:{æ|úŸÿýÿš~ë·¿ž÷#_Jëkm!æXkqaiyÅ®5iiëÚÅ @n¥cÇ׳mäÁôWõí܇×lßpâøQÛ_ •¿¶î{_Ÿ‹8Óƒ³ÓDŠYREOXhÍ%Œ¯a76è[ôˆ5Høïïïæ[±YúŸë^d®$Ó‡ ©Í›]Š"V$¬ÛZ¯m,?i|œ±bU;6Â÷ggw”Þy÷jzê…³éÙßIoŸ½šöꋲ´¯AíóÇÒpЩͨ µ¾Ï¹¶ã .}ÉÂäyj}ýP—]I²bü”Á3>ëäàûº ¦ú ‘´§sõœŒÏ,ö…Ú§Ék}sÖ¬:L?®SÏ>ò”¢Ž•a;†¿Ì(~ÊS Jªc];é…ÃJÎ’ò´ï%_Û6}<é*õë…èô…2ŒòŽåˆmf¿å¹ˆ.J]·¶P%Ú±9Ô‰nm7¯­®otŽÊK2Ðj3Ê&†݃½}«çâÒâÔú M&]ý§ ÷ƒò|œLÝ¿ø|¶kŽö»ÏšcùËB2ÙËÏØšðùú<#šžT ÙbPÔˆ<ƨÌk®`¹Â®S2Ú$·sMÏÜ~élO.åsårœÌç<”ÿ¾šó8—Ÿu»i0l0Æú€g¹©»”HK#S0*sHëꃚö–ñ,BTU~¿y3H]T¬&ƒòø›ägôJ;F&a~ ¬¯ÎóÞRZÂŽbXËÐÃÿ4®|ųˆ¶ª2´ð$Vͦ¬3S.w;´ÑïJYökšïçižæižæé“žú½®l�U·9räP·¦QŠë¨N%´^eíŽÊz“=¨ð…HtŽN1ßHˆkD0~—â¶B‚DlF¯ëU,{r²Ê–ÁÚü¤xªu_TˆÐwq­Ub}± °^¾­sÕvÿö¬Þ9Âó§ùáhäŠÏ}îsÝõ%>p)eö>D²ïà(7Kú V´êþV}€÷êŸõªÃ»^ Ì:˜yñ›YBòMzœ Õ1úðú ÉS@„ØI˜÷ä“O¦oûÛf\@±BŽcèМ#”w!žå§Â�}ýõ×í]ƒ’üxIÊO–M$àœ¿É�“sØTÈðq}@8 VH ÖØåy¯¼òä­ (çˆr ®°*2Š<ÝðFyò©§,¿(‘£ôq&Zü<e»$7ªCÙ¾‡±¼MïWýåýQµ›¬< À˜cl1†Îžy§÷14ð ¡¿+>)cC¤ )"D£‡ÂT0Ž2(<…bTñcBãŠß�÷>ˆ‡¡{\.Ùü!Å È '“6ä:Œ9Bð#¯Äø'Oʧ¹HR ¨ÊÃ|£øc¼Cç2Oqœú�mA9 „šå3’‡¤Ž§ž¼h?HRñ ¾“7‘ÔB(ŸÔ* ¤p´0ášœCÙi/Ñ™W‚$i8–¹›óh/÷žÛé8Ô‹9˜¼(?yÄÅG AB¿ÐýàE`U»Š�óÓŸþ4ý—ÿò_¬þ_üâ;â„Ø³R8â>Ò~,œ¸Ÿòà’ÒmÀyÑðÄõ87²ki©šÐδ-çž#R×#ÿÍó/¥Cë«ÆÚE¶{±„ŠÁPêת̋U†ºÞ0:-ÓõQ¯n¦çÁ~áÜî¸aq:)žFû°‰Gn¨¾|õZúÔgûÀyUrîZØ2~øá4Oó4O]š“=Epgö»xN<æ9Ï–é òÄïI³ S­~Þté¡Ã.uä’(/Ïà?úOßNÿã¿ûV£«)o8²ësÓÚ⦳!o@B¯Ë¤¬\…ÂA"'D&£¤PÞ..ûÂg4q )á5䟣ý¾Î¯åót!tT½§t$ÍS'¾F‘Ôü‚+NØŸ£©{¤üg @D“ë Þ%-ï!Šj@¾ÄhìR£úMñ´æNúöðòÆ»§ú º=‡Ê~®Ò«\P·…*…×+’-å#@“¯m†Sýf<Þïö¨±E1Ä×ÃÆÕæN„Žåö¾!mïJj›îÑŸõåe<ÿE’ªÃ½•ÇÀL[_¦~,NÚâí-f×;´:H÷Þº”Ž®³žs¢ˆKÊ{½: ·&êº'wpo»%ï­¥[O3bÃÆÆjZX@,ÕûѰæüßþߥ<ñl:“÷!¬CÝ>¶kyŸt2¯_o/6‚½´·ÛØ®w2Ÿã6ŽC‡×äÀË mº–×èÿþßýqúÞwŸH;Ûûéx.çÞ“~ë·¾bvÖBÞ–Œ$EÖç.žË€g›¯µk¤HÈz¾üå/¤Ge@x!�¿ÓëÚjvùTÕ‡éR4]9˜Z›Gý ^´¿é?*˜/|þIÔU„‰“ºê½ëªZ º¿¼ú< U‘¢PÏ}£ù:é"%ÙA{˜ëÿä gÓOž=“~öÖ%#޹qŒ¾ŸshË?ùüU•09|M¸$”Q\qÀ ¶Wíea&m¾‡p“ÖǾî¯ús$ ö„°^å@íí\2nKý «¹OçıÃdo')dú£BWi?©kk/û@¼Æ¬ç£Èq û~¼íÖåšûgŸá2B“â~UuÕ5ë¶?F×W[(W9òгe¶Ï©5"m!âˆlZlÉÉs»{FâçÅߪ¿®­ç¯íQ(Sn ûˆG1¼‹ÎSÕf×z¦ë»¨T2KÂèˆ#å¹î=¾÷/™¢Ï!xCôÙa]tŒ'{vëÀäûÝ2©Õ„¾ÑŒm^7‚¥©G¡Š“Û+Ρ£ùëežÔ¹~oç¹òš+ÇãÝd¥1Eͱ 6ŽŒû–ûÆØB¿L a©êÊDyy)d‰«Õ4¦ „ áwìY”Ÿ'„{YZZMKËùQFˆj“=›PòI%‘©b”½¼9¾[«J <“í9Ô–ïÛn ãÌ{NA–ü—¿{*<v8-¯,Y1Ÿ›ý=Ú "Æßçö‚+ý2ìó4Oó4O7KròršÚãÊIÑ××ÓsêAës$Vˆ«µ ¶|aÅ‘ÐójšëÃtóëU©•i=$‡×÷³óÄßUF©¢ª<$ÙPâZñ |Ú¶½®¨+í%ò.ß—¿ˆyÍÚ”´ï!Ñ~àÉ(¤ƒ¥á8¬òÅ|âûʨ5!xˆÓ¿ñ¿ñäŒø«å}2ó’GE^mxŸ}¥|~¯÷Ù¿gÓû>|o [$[Â;7 Cà! $ïéXlB�R!W0X‘‚ÿßù΂M‹T"�ÍÔ�=ÉO×ÔF1z«iP/�š<ŸÙñù’D�?®Éù€žtX$Wž~úiå(ÿ©S§ìz º¸Qá<«ÍƒpRl,Ú@uçD¾W¸êG=¿öµ¯e`oó3ö™²*V%Gëop:®yú˜¤¸pÿ¤&™¤Hl Ož8™¾öØ×Ìã ãÑ»Ù(xuóª3òm@®Ðž…ÖÅ’cŒ- Z!AHÿ06*´Â )Ö¹<mÀûä!¢c†qqb– Á9Ì=zÐ11Ö1"¢šCÈ õ"ˆi,s,ç3~EÔ`þQŠy…sô "ÍQŠ9…¢”DÖ¢}˜8žúCô í(/ÇK)‡ëK͇‡,×ÔB‚ó¸f”R[Ü)CH H-…b”{ y"’&¨?çpŒyîr‡Œqº¦âÑ;°0éd¿X©¼Ã5!š|÷»ß5‚ ¤æxIÚJÁƒûM]u/ÉKMº&yI݃r‘ÎW;êÙC¹øŽ20¿KšL ,†¸žÀ)ÍÓ¯jêãôÉ ?ïó4O¿Ü7…ïED¸Ñ\=Kdøe•é½®Á‘_túûHx–îew2žLyòG ž»m�0¾ìÈ´YÖ7îÎZ€wÒyš7EuÁ%ü6Â%ÞëΛÖÊÑú^¤¶”z# ^¤€¨"½¹ZBêH^ÍÞ㻓�m¸Ôyz„ïI §n;n;iò¦õ8îÔÃëã„%÷z÷!{{;É=ñý˜Å êðr°u×Ö„ðóKI%D€Ò ÷ŒV’÷y_/'�PÞ=¼â­ü}¶{7(õ«†,_'UDÕT%œ„á °ˆ8©<lô+•ý~ör«zWx’÷#û@åžQiÓª€Á y]¼a^جcÛm#Y𽃔 Öï¢7»ÊÒ+]öÞýòžL5:Kí ÿ¹¼ãÑ ýìQÚ:6IÇ×éÐZ‘x8¡"µÞ§*ït¸¯,ÄLÓdà¼9™Îœ»’®m省íÝtëÉãyÍœAµå\ψ7Þ›¯­­¦ÿë?ÿƒlÐúõôÿÿ·”žᕢƒ’ axœp�¹Â‹éž{ïJÇÏû€£ Öe<Tf—h xìàkë éÿþ¯ÿ¥íkþ?ÿïÿ¯”È×?ûÌKé‘GèGê#>‘åßí¥• @®¬.åkÜ–~ø”“* H}Ÿù3nÃÏ>/:©Bc”mé'ÃÁŠ-¨è/{û[ùÝ‹¼Uè„It=<…Hþ·{Ž—¹·qO{ÍOÖ¯ÂîöâÖ Ð=!Lå(ïòkû$î‹é‰g/¤—Þ¸˜œ0Ôš2‚“(Zóêgž!kRH€À>þÆûAUûëë®nP%‘¼�“ŒÌ“J9&Füœ$£¢ÚœÄo…ðÛÔWùÚµAêÇh4ÔÊF‰TQ8扪Æòò±.t%„'Æ¢öê>üºòJ›×aÎÁ*†óÉ—¾D½÷do›%SÅóT§Î6×ô‰‘8¢w}W²¡ˆ#rxš5{æÙý[ÏïËSe´¶BéðbçDÅþ˜„“„öÀ1üU §B2‚ ÿÊoò:T™"êoõ åÛ"m"‰ïln¬\AÅ•}z’‘,ŠV G°¬¶°9¦2¢J“ÖUlÐ |®$œG]H#F˜¢?/'ÏÄÜ®cHJ„" óíôœ<׿›ó»šÛ3å HOV^ 9–û$Cƒµ'TÙÜï¤;†Ml pµo*MùÜ!ão9­Bˆ±Ð;K¦HÓÚXž¤¦H5Ö’}WU ÄweÝy£õ>;¦ï ²û·`mÙ{–¢x’A˜…ižæižæižæé“—ä¼ÏE°'ާˆs÷äç¶#ÄõšÔÓpö~‚Ý>†‘–!bx ‘5øœ $:éGü#†Èh¦HtýúKXŸ=ôáá.dßlØ ­R‡P™)+ùRWê,rE,c\“b¹bùh¿—_~Ù°"ÂÍã*L+ÖW6›Y ½ÔžÂLÀ=À9À—n–tÓ,ðØæ†r£D&�ìäÅð'‰|^ 6mt<ÇÖ 4#G²}$…Û`�0˜ø0Œ ç�J2ðéÀ&ɘ63`Yº9FÌ|mþ Ox@@ÊK§#¾ ,u�ŒcÀiPs<©%È5E$„Ô&r*T‰Xì|GÔf‹¹žŸ~äa ·°µ•ÁÓ·ÞNgΞ1©OÊÂq2zʸdŸË¦¿-O.‹ÛÔx•|LÒœýûѤY£ÃÔoËwŒÓûï¿/}å+_¶±J_„4ñî»gl®,÷j<�$}ížW»Öçy°@L1‚ 7Çq®ËMCê\à›qÏÈ.…âz`ñ$?²3Æ?¼˜;“S5¿C¦âAõÕ¯~Õ^R-*ŠÌ”_ó“Bf,t ýŒÄ<Á‹úå#‘7‰ÏË1(÷‚<¹s/HäÏ1¼3ç)>®ÊI¢.¼ô€d´``bîÓD›ˆ4Á1J,EÒ¦´1yPNîßq]âÈO߉¼Â½çÍ=•'•æ´»gžyÆÈR LZ0¨ÍÉóDÐ|¨0$+ù-ætæd…oaFç@f‘žü%·* çˆ�Çoü­¸fóô«˜ªÎèhس··ŸûÄâGÏzÞÍÓ<ÍÓ/&ý}ˆ ¿¬ôó–éïCQ:hŽ™%vŒ p˜öy¯dÆ€  ëagPˆ`œyöÙFßC�~à‰ídö=Û�2PÛ9@t/@‘!ƒg‰¼¡ æ˜ñ‘"CSÖX³¡]Ò1@{Eÿ®éÔ,:OÞ¦ ONèÁzÿl%#4G•¬¼CÊÒVYšÑ^ÿ\piBh‚JF5¥üÅ5 ¤°®¢×Ö6Ê›=]mÞ´RʈÀšH(�8Mf'“ýÔ…Üh›`v£Í‚…ü�€r ¹)÷`œDX‘§¬‡ p@UIž4uíãÉÕ|/»˜zYÓ(¯:.ÄC©d8X%U…PÛìsÕ‘¦S½ÏÅŒ4(mÅžb©ì){ƒ÷„®o÷†½¦+Ÿ²µ<å›iÙÕ½rßß<×å éîu:„šÅ°'#±²jœ(PU„�Jéõ×ßÉk弇¿¶caevvòZx'¯yIë¨Y˜*†€^‰ƒöÉîAþíî»nMÿÏÿî¿Iòþkzá…Ó¹ 稱aw/·ë„ðªw¤¼/Ýu÷î]ûºu2n‹ÒH]È1C# X/™´FθãŽ[ÓC?žøÁ“(^HgÞÎÆÑ£ÇÓÆ¡ ÷¸^Â3?ï©Öójép·ÎF©­š!—jüÍÎ?ÝÜ”¦=ÂRÑ|pòUQ;1p3Y8"HR×v6 Ôî”rf®‘,ü‡ƒº³ŽK¦:“ +-dŠÊ¦#g¤žX¡>âÞÈãtùÊN:™âòvºpq7½ñöÅôΙÍtuu 'uXÿa„ë ÞÝÛé ©2TªÎF/{íÉ4‡z؉ÉÔØؽœŽÛí<½RÌ4OùB¤ª eþOíSª7“~^R¾³ÒÉ"…‰LGù··e¯~¡S²èB[RaÒ M{6&*ÊÌ>›´ïŒãSž‡jíû£l±Bo¨^µ…ö—º2"+E‘)¬]ZÂGìYû�ªËA`Ö9A)ÞoÒpaXæòµÎ®!5Dµ¡Œé*³æ;+oÝ{0꾨^³Š$"Øu$”ÔÕ2Òâïí´bWOJ©¬®7F�IùYÙÔI¡’&×ãùi©SôÁ®ØšÒÕÀæ÷ÖÈ ÷RGÓºú Œq22XUåõÅňkùèË9_Œù‡òÍ9b¡Õµ\¦¼¯ŽŒ`Ö0w–2™*ÏcTAòø%܇õµI‰m>alçܵÅ5#V 034¦[ cR/¦RE ±„›"DR•Ÿ+…, =£ì¸¢hQ Jpmž»Ýs“ço!’ÍM›ó4Oó4Oót¤ƒ5do×>RëH$%E5L…-çy-µ/Ž•BXG~ ëRå¡üu¼žÓà SξEΠZÿÆ|#é8¾km%§NÖpZãªìq9kS™­wTêà%§[‘m)¯"Dr…Öô³Ä •‘XÍã?nXœÒq=ÉÝ}¶uSμˆs„ñÜ,é¦!Xpƒä­L’¤¿:47‘Áˆ—6ä 60�šÀð6—w9y(Ô‡T$x‘“ß�éh1Aާ´€7ò·³€8 &®I^’ñc`Ñéø_þò—­üÔ €•cæèØbâYÎ;õð+p޼5‰ˆE9¨ e1©±Ë—í{®%0˜ï™4N?–¼vÞü_4 ä~ØRVRUw‚ÖÙØUçBâ¢êcJb˜“+Þ?ý¼Mô^õ÷kýÎøƒ@?ÿú׳¿奦@=046e(Ñœ@ŸÜÇAÞ"M@B‚ô å ~×\!â�/y–0n($±9—kˆÀØa|(¬åÒåcØ×Ø#¤Ä,ó˜+ó…H]äÇXglrMIGQf’šò^á:¨Ô(ŒŠæ)ñHéߤ^Áï\“9„6b¡@ûH½†¼!^<÷Üs–¯3GOtÆ2æ=¾ã|‘&Öƒúi.en‘ …êÆuµ0¡lü-cíÃKä‘NÈ—>AäѪk27Å^Š“«:*„ ß½úê«V'X˜>ú¨/µ…w‘Šb–Å0M\WŒ“F¢¬ õ!c 5:.F¸—jê-B¿QG){œ}c–ÿª¦Y€asójî/=Ó7n@z`ažæižæéÃOÚ4“4ÿ°¶àÙ8+!~£d„Æ•ÕH˜ÍÓ|ÿ¬ üîäÃÖHg€áËË#óÚ65„Z"zî¨:îu}èÏwXŽuàØ¼ÇAhºã¸÷P½”z[B@8 /ïçHü»Zß�Æ5EÍ¢.à[2r‚' 4äía%R|CH™âísíçNÐJ¾ú»+±Ú)yA S³¨bõªÓ-êYF„ ÿÎAuHƒ"Aî¤G r‡<ü#Xä ÃîZMÓ‡‚ÑñNÄP;÷Æ2'¯´I¡\”wÛ¦BX©‹”jÓ]Ë :c#‘TU$xÔF¨€8"#š“.Ú¢ü±`í´Ó…X©¬½L*¾ÜsÙ”¢ÑJ ®ýöî@[õ½Q•^>=I·iÒ‘õAÚXÍm:hð<- +Ϫ˗¯Aaqq/íæ{Á‚õð-'çýÀF ©a­WÓùÔ%®ûšÿö¿ùƒ¼.þYúÓÿü7é©§_°6º²º–_±µµmãkgw+ïWîJ«ËÃn|˜ëv OQQÆ€ük[›¹<ù¼Í­ôùÏ&½ñúë顇ïK÷Ýw:y Dðcim}Íî1Ä ]CØž•º¾â¿U¥íSšFµNª=ô@'mQ»i‹wº‡ýGZãdˆ¶¿FêBˆÂDQ ³|ÊQ"G¹JE² sÓösa$j˜réåtîâµt)¿_º|5½}úJzá¥7Òé³ò%�oN XXö6 w›zRŽBFˆ( g üî›Ì<å(óS4xFr€ÆÚ;TÛ”º}Œú\ ÝÔÏëí”aUùÉêv¢T?šë Æ$[e¨Õõ´?”}Œ—BuÓ`å¤/ÈS=9`aÊþ7kxFôÙöð¹£M]ˆžBÓ¼áódŸ¯Ï-ëÃÒADÌ—±[m&/ÀÞùiÐÝCHÔÎ:WeŒí¥ö¥O7UO¢“½OŽf¸^YN+¨(0ÆCcc�BCUÚ®êæÍxßâý‹md¤!Æ}]M7¢e|v«Ÿöc£1µ륉[ ÜÑš:…‘ ’Õu â½q>g„ÒRí–ÆA ¥áÄ&§XôÎ_Éæ­Ô¶…èç¿™HÄ­j?ç÷Vþ.?ÿGs}岬çÏ8¤\Îǵ%ÿdm5ÎÏÂ<e«ˆ¤áâÊ,#]¬.¯å9lÕGƒRnŽó<³ >=±i0t%'NŒØèêXE½¢öù¦4LGóî:°öH6'ŒÊ\ècÀvÜãmžæižæižæéž´þšÞ“:v1)ÏÑéõv$ÙòŽMŸ5‘0a±‘8 =[Ì'’ÜãºF”lûÂS´nÓšGk·¸'˜%X8,ŠóX*ú€ê©õ׬*Z¬7)®Ùx‘§ð“˜_Ü7Ï5fÉ*#u&Œ=øùg>ó™ôÀØ÷‘ä=½'HÖYçáoîøÈØ7KºiòP  &/gn6 (*Š_ hI‹Þì1ˆÂzôÒ„=k k~ñç3€!Bè<6„äÉ÷�s”Oîòf–„¼/ °Rrü9ÀVò)œ0ɉ{~£>÷˜PøÌ‹ó¹–®IÕáùŽßñð¦.$Å"âE{PŽÛo»Ý&®÷Z6’\Ûº–NçëÓΖªî¿T·lšŠ‘¢m‚Iâ£Osài:}P¢Ã‡‘÷ÉŒèõB6@>Ê‹ƒßW­“xkŒr=Œ <øDšÐ‹w1EFùBLAÆžHQŒoÜù]ÆÆcM ½¶"0¶H"9ñ€ãب†ƒò*êFh"Æ(cQåU¬YŒ0Ô™±[PäðR~iB6©(È FÞ` "UÄTûñç¢ê vU(!ÚÂòãPF‘.ÃYd~ãzZ0h®Õ5ic‘#¤¼ÁµE^áEý8‡ö¡, ßÁ÷R· œšscH&…Œ¢ìRü oæLêðÙÏ~–x_]Yd¼TsOµ`¢ítÏEÐ"yPm«°4´™ Ÿ¼Ó¨ƒÂÉp¼ê(µ ÎÑœª>%XçéW;É(|íÚvžƹ/MKöÎÓ<ÍÓ<}Ø)‚-úç ­%x®Å8¢ï“«ýeÝg=IPuÐ1}üÕÊÂ8,-­äµÄv!7&ûÎ÷9Nøv#Ië.†oø÷; >sÃÅR¶‰)b´Uï^ÕB®H Ù  €Òä:ïgѺWl ): xN (ÜFQÁ€*ˆ ­ËŒ{[©-¼ ”0À¶é�dý&AOJÙ³s‡€³ %‹gÉ~ õ‘¦ '€–~?]™Â‰ƒÐ´&ÚÖ—¼žU×"&˜¬{š ÚóÓo~ÛÛ®n=xëª!¾Nd\YcÜÝ/K]®ß÷ͪŠ@\•¤ž!–IüNxq÷•Ò§ºk÷$”i£^|7c€fª¦}_öõ.é ƒty«MG¥tüPÖ—«ëÀJæúrÑ…‹Wò}¬ÓÖæÀ!Û,vŽ¥ãÇŽ¦µõ•BTizàî:5 Ï¥Àù/§{î¾+=÷üËéÕŸ½a$NlÞÊ{þík¦pùÀ}w»\~U/jÀ¾íR—‘]’oòu?ûèCéŽÛoM<üP:txÍú` w%…y‘ƒ†ömš:º¶0Ý̦Ì�"fP/Y>F.à^¢!aFÔ‘©ãØ\Ð ØÔ<&{EêÆÉÔß…XaÿÒ‚•cŠ+ôä/»ƒÏ—¯î¦·N_Iï^Ķt%½}úr:ýîÕtysd}ÈÈHã:-­1oø½|Ï Ä_«ÓržËööw§<ÛDâ _²ŸŠê’%¦ˆ(N‚QØ ëð(cÜÍG]»5iVu"ÚÆbßïÇS=åݦ4ë¨1§òéˆNŒ7ö®J¹g¯h«bn²ó0öÚ=ïçõï¶"—Õf*³æA —¢Ej ÍI6¿™ÊB åc—‘›û%¥uß|_¾ÐÍM*§Úl–•vdl÷»d’ŸWÃnÿÏu!8ùsq§hgãý†ñ¨:u®›z¹ìøŒÖñ:g°°Ï;˜«[‚Òå Ê•§¬éK…$QY[’^é‡ö,®‹²O*ß5Aù§Üë›ÜŽãþMœô`¡ŒÛ6o¥úrΧ¼Õ| Ž8(e^±×þÞ5{ž¡rãa¬*›¿xn.­,çríÙfEžÐf °2¬bI]ÞˆeÉ)ÍÕ¬FF¦dºò¶Z¿‚<bó !QxÞ'?ޣ꒯ڷ'CÎ,æižæižæé“Ÿà ΀íµ^á'X+Êq•µ"xçùúg8µ‹a#)7’Xë`_`Êñà¼bD$Õ¸Ž&Ee°Ù0¼À8žu=e^¢5j ½×Ù1Š>K¡sÁ¤Š=›Ê×ÜQAKùñ·Ä ÷ˆ�@TPWã+Ö;æ©5£0,Ηs¼7Cºi’º—Z7×믿nñbä5 ±PM2õ$€. &±‘èp ":>ïb0Jʯs…ܽdöé$|&Oä OÅqåš Ry‹ÊòXÇq”kò÷#<b×äXÀ\€<�O<±Ÿzê©P¥l„¡MTGÊO>œCçš+ ژɻžë ¤Ü·ÞzK:uê^S³x167Þ|ëÍ´³µk{7Ö+4¹ùðãæäŠoêHM¹ïA€úÒ—¾”î»ïÞÜ™q€05çÏŸËãï²G•r€<\xË( ‡ŸÈô{¤@@ÿ–"…X~z2î„!1þ¸&ßñ»Â_ć'cL1½´ëáÉœðÓŸþÔÆéc=fsŠ$ÅÞÒƒ‘óâC`^cXòÙKžŠ#æ†Ö½îzbh*_Ê ‘J¡B´XàÅõ˜ÛdX‰!*¸h®Ã1"dQGÊ ™…"Ì%ÌM´%ÇêÁ †ïÈWÆ&‘ ˆD¶'e!yâ(„‘ˆäCÙ¨óŸØ¨š³¸¿ }"…]OijgŸ}Öž ¨¢@"ÑâDyñ7דÌĵ-×”jˆ XÔs!—жºž^´™<Îȃû ¶ázQCs°Èn©"³vž~5S4d»ÔÝfîëGßóøyš§yš§;E²E[À-@ض¼ÿ|T<b«ièø7IqÏ’9@Õ–g8{¬I˜èE…`P/øZy s2Jš&S/u$=Ö»yƒw!.Ú´Ž œãGJ2zL:Õ  ¼mDhºszoqíä‘_YY�rYôIåêÐàµÚ…Iq WtHÅØ±`¡:\Í¢÷àŽ@gŒ¿ ¸»½½›ö1–ÔC»§ÖUo,râïR1FÕV¦O¯Ê{8èÛtÞ2Úö÷ÐAºI㤈º^÷¤éÚÒ6=™#³òrP-éû6ɳ7Êž*t‹0IÿÍ=œ#¨œR€Nöì‹Eñm/¯=3ØÖ,˜Ò�k5¿v[Àçö†R©Öÿ›é2ëwÛ‡—ö¤þ[;mÚŸTióÚ$ÝztŽnäcR“"¡I ¢ÒÞ>¡%70Hë‡Ò;g/dp zßB†:ľ$ßÏaf•,”(Ï-'O¤ßÿÝßNŸùôé?ÿù_¥ý虼ÎÏe;yÜúÄ‹£yßA}µ—HÅà B®­­§õ5<燮”R÷ÄqÌžVßÒç˜úï489 û㦄ùHÁÈ:)ýÓ=Ìë¾RÈ5_Û.¸@éëöß5Mùì¹¥fÜvÀ;a ®ln§·Ï\N/ýìBzëÌÕtþâVºxeÇîATø À^U‹…TŸò¾cË”bƒÍN‡P;Å5wÈ-’ " Gã¸?5ÕI;UÏhU:g>D…˜7õR?ŽyD5„àkìF“”¯RO"h»¶@…G{WÂØj4òï‡fÁÇ™ß÷ž¨óŽwqF—š$’/ê#¨!Яm¯IøÑݽ‰ñ>ßâ°rijòŠã:Î!:VÇL¦BG¤©v×þ:¶7ýd½FYa1íîõŠ‹RŽ\D²i®3€GÂL¬sœ»\5¢FëþFµ ÝCk;ó·*¤‘‡9êTb˜óéËa>Ðëú6ÏäÊÃÙðlƒ¿À˜kêþ¾ÔRsJ";UjM¥2wdW­Qw ¶óqù98‹r5ÎûþÜv£f9íOçû—ç³Å‘!V4¥þurDÓ”{hÍæá;&ö\Ì÷ÒˆœÉŒ¡¬#¼<N.‰¯'ù3‡Ð#mÕmS˜JSþŒêÔ¬Rî_æ ‹yš§yš§yºRO†ï×kØÊ··QÒŸ&™J!L¶á° '®µf\gÎÚ("Tkl)zó8‚ÂwH±<vgó‹ktý-‡NELб¬Ñ´_WÙf‰É±|1_©Àɉ_kF0ˆ¸}iÍ7«^!, Œ¼<¬EëûYâôô>îzå •Sªðì¡…Ÿ+Ï›%Ý4µxÓÍ´”ûñlà(ßã)Î1t@8Àª¤èéàü¼>ß“$/‘|7‘NI\W±ÂCÒ4�t$�C:€)×å³Bhs<¿Cz …&€¤!Byœ:uÊÊ!òƒ¼ìÉ—Á@Ýù ñÎ;ï´²”ä³<²¹åæx7¤-v5ÊF=¤à¡ ”5ŒnÄ€<qâxÚ¹æ!ÞÊme1Ø7™tá ÍÓ‡—âCá—•âµ~@ýÐþdîGŒÁÛo¿µ ªb8ðxÏô=Æ€”j�é!ÄØ¦" ú ²”:‡9€Äø#1Æ+%I]À™’Ç,O‘x`)Ć@pÆ sŒ¼‹¤ž@ÞŒ­Ÿüä'¦^€ÔD¤’ª„ÊIAsŠ2¢g u l‘4Á¹zÀ*\Š#”¿ˆ$ KA]”íE’b¿Q®ÉñR耼ű\ëˆqzÊÈB›(¦,eäëSoˆ RìÑܪy‘ï9žrsß1Ñn‘¨¡rÊЧ¸cZ HáB Ï<óŒÝ‹¯|å+¶Xº…Œ{2˜s=òfŽgÞ•7ء̥RÔÐ"AIýˆöÉBs=ù™\pQ½àX…­áC¸Ÿºº&¿Ÿ~m˜ÿ*§hÀ”:Ìò2†Ò•©E²Òìçyš§yš§;±®a-À³U@þNa AÃÎëÂb·WS ½Ë³ ŒÏk•ÕTqtÏ€Š••B �4k¥`ØãD À’¶xŽ:9ò¼†jFÅ£Ô½Cðá€Q]°¼¶Ø ˜»l7€‰)d´®ˆ�¸Ó@8h]!BÀ™¼kÜÀ1 u) ;ªdÕ"9XʱÈÆ¦¤Ñ4Cpá�̸3D¹!f4奣Ð(¬äõÒ LÜ(2™"jŸ¨w$ªôÞî2ŠMŠ7¹ôy[<ë"%†Ø õ�®·-¤ˆ=Ø9éÚ»¯ggÛNÑ‚¶îAÃa>döš×{„70Úý4âÀ°¬ë¯E¼åâÕ<ì»þw^Þ3'yÙu 1€´·!7Üö›tùÚRºãX“ÖVú>sŠ€í›½pÙúÂöµ¼‡Ùu/®'öÒÑ#‡l½0\XÛ§tcâëæ¸7ý‹þÏÒgùTúë¿þA:}æÝ\¦õ|ò³}Xŵ\žEË›päÝD»É63m$mu«ºzø÷Æzz]?ögú…y¤¸÷“}ïû­êTuó.˜"ú½«€ÛЩ7^º‡=ô ¢Ð§››ûéí3Ó+o\Jož¹’÷K;éÊÕítîÒµ´¿7**4©¨0,vm­û¼¿“û>¡wš‰G…„ðDŸq¥ƒ¥n/¤½€Þ½ï×Ýü1k­öÂ:Om Éú;:t~ô@‹ý¦#L…г„ …–tÀ0µáþ+ž³Œ½ÚGêº*o¯ ¸Ð9 (ô¢‡AZž"SÄ2Ï’*ø}ÖHìáÒT{DÒ IuÙÙÙ³9FÆí…zÐ)_ê¹åûmWñéCJM“bòxTX£YÌl" CÇvä­2g1.µÝ-ª‘ÚFÏÃh¡N †ÚJm }³”Rì˜ÉdªïÅã'åùÛΟ«ö|k ¹°rÉo'Õ ]…¥ò1èaœPz¨l|›nÈÀŸ…ÖfE½‚±ds|!$ÕBí׺JÒ`(ÂsòÄÔ=Fû%ÿ1eYÈëˆ+iqéHZY:™ï݉\^]»¹¼o&{6´„>·d›Á’‡ô¨'¶~p"➯ZW–©}™E±5ëú‡)XU%:‘×u`^·µ·Y3­¤Ò‘ i³Á!³ÎÓ<ÍÓ<ÍÓ<}üS\ß(ùºjhk¤èóÂÞNbm#|!*-ÌÚRIÑQ6’Cu]òäXòW%ËFµ ×Ì‘ Ê±¬ÃD|�cPùbžq]8Kø˜]¯‹ø!Œ¬!³"üÏŽU樮ñüóÏ®f‚ã>ùiß:[wRÜãÌ–QùJµœƒ²*/ao7KºiDr�ÄüÛ¿ý[±¾þõ¯[¼ÀJn¢<§Õ�ȸ©Üh€@yikÀÉ\¬'òçå¡ 6MfžÏRŸ OòŽ¡9Ô™(‹È$Êà&¯g×ÕÆQ^ÏòΧ �p|/Ï||�“9^€$ <æ‘ÂH ±‚öˆD ŸlQàÎL"€¦‘ŒÂ9”#~G~Uî?u*·cL§#o¾’^9ýRÚ:½)õÛ<ý2É¿j)nöÿ>çð¢_¢äðÅ/~ÑÆÞŽ-÷ ȧoËN 6ä ©5h²æ¯hd`,*T„†ÇSŒ=ÆŸ/ ûC¿æÚœÏ1 [¡‡«H"[HڗϺž€}ÊñꫯÚdžù½ßû=#<‘7eAv‰2pM©!Ð&Œ+5·šG{Ì3ÑHËøWL1…• ±*¥æÀqäO[ñY* (îpO‘Ëâƒz1¿’—B¬è!,ÕæO®Ç±ÜGÚìÍ7ß´ë}ï{ß3ÒóíIý©íNÊ!C—®ÉyŠC¹Ä±€ îÌA¾ôµ‡"˜ Íòk¿ökö"?-(7çÑ6Zq$Õ%ƒ‰úJ™‚ö¢ü|fî”ú†æTúíB¿8¡¸Û‘�#‚×Ôüß{ƒÿAãkžnÎä‹âº3¶ÓªêX’gžæižæéÃN³ëé¸Qç9ꆃÁuù÷Kd¥i¹ùh¬÷ŒWá Heɉ ©7D,-Ö…ü¸g ëâÒ²‘Á”ŠÂBÎÁA•¼–ÝóµéêWH)x{T¦X‚ªš>®ZH.SîàG“ÜSu,Ùn�žXa¢L)õa:`y2*ùÖ¬(ªC[·ðЄvsU74yX¢Œ°oõwDz ð½¼|¨�Xã´·¿]€=ÀͤuÀ«ßák!³£T*ç*åÚ´çùZq\Ö8ÒÄ›·é"mho­T bëý¦´óÀÀ|/Wš’qÕwºò,w»0õ Uý ö`µ__y×u“„òÂa8˜ØÚàu†ÕÕAG QYD–èHu/½Æ«Hl§7ø~oÔ¦ WFisk’î>1N'ot óÔØ¢Ô½w_³Î¼ãλÓëoœM[ׄ&dÈÆÆºÓÕà½Ç%}ú¶[oIGM§î½;ý¯ò¿§ ¯¦/ù+éSŸº×׻ˋ¾F†P4¬K_¹~ÌOà| Y Ç8¨ÞKÖÆû¦6Û/„újQ´Ð¦ç›¶ûß=»ƒ±³ór/@oÛv}:MyΛˆ¿}Gè“Óïn¦ç_9Ÿ~öÆ¥töüµ´™ûÀæÖ^ÚGå¡„ ¡›-f°•q?éæ°ª#ä‹ îê)[÷¯¯¯%)|¬¯dAÿb>¥Ž¬ñ"yaVAígß''´”KŸa!ª#ö÷úz€Ÿ$›Uc=ai0E¢SÞ}XC¿×"S4Mo öò Hœ¦È*Oþã¹+ cI[±Ç•yuu­ÌYmW]c‘2—vŒäå )ÌË<­¢v‘SE$ºhß·¼°8uŸÔnôÕºôëèA ÐÓQ¾±'MGx™õ¼ì;“ý´'ŽFnT¤ …âËê ŠØq,Ùéb“³_U=Q*ÝïžØL•·Wcjèë“úGGØ›¸âLÓ%ŸAeä�»KßóDøú^Sæ…­©Pù}"Bú^å¿×±ÜQʾ‰6šøxlFÍÛ{{ÛÝœE˜±¥e†´Ùµü¼ÏkŽQ¶´Ù^RΟÎylæë_´g�Ä ’‡ òöB‘©µ: ]ÇâGQËðþ¬_m/ˆM³WŠÚ4\X2g[ºí¨“<o<ÿäªÞW£ò'Ì÷ó4Oó4OóôÉO³kNí ¶?~lм€Ý¬‚u$0›gí³„€YÒ+‰u6|lû¬ pÊ9ˆP0›gÌ'æÍÚüƒõ*kF0-ðRT#‹yÆ2ξ+O9È㈠ÎÂZ4žû^ïq-'Û2å{â‰'¬=Q\ç¥p¯ï—çAå$±no¢]Á¸(k$UÌ*u|ÒÓMC°PhHZÿÙ?ûgéTþ)K’Hb´zI‚^Þí’¡àã³ÀG ,ÅõÜ� Õ  ÓHó·©Üt]À@%®Ëù”Oy+›&^ 'ÂäÉ‚Á© 'ï²ð=ŸR@!hbè�4r~îsŸ³ ˆkЍAù™Dä%/2ŠÊ­¨kªm‘\Z[IWó¿Í•Ëi÷þ½´0ZNw½rkzõ'o¦yš'%ú'ã‚q+îË_þRÙ+Û�Ó¿_ô9@zMÎS$ŠÈ‡±+Ò€@lŠ¦è¿Œ?ÆãGj ŸCßã#¼y‘/ÇéÚÀ9^ª7ŒýŒ)ÏpÌ?RóOÿé?5"”Ômƒã!&ÉÈ£rÉpÁø0Oâʬð"]`TR]˜'¨'0)ÎhΣX0@baG,B⢠-X΃8Á¸W;‰¦dGYi[æB½ˆˆÂ<Gÿîïþ.}ç;ß±ë17S~•/z¹ñâš2¨“æ!îsßs<uà8ÖÌGòäºÜG)ñLà^@æùô§?Ý…wQy×ü¬úèÞðâ^*~›È8|æº Ãâï©ÇÈ;”¼¥F¢ºI¢•òÒ.|f®WÛ*¶°”Mz�fž~•“nYo ;ò'}œùDýKÇÍÓ<ÍÓ<}é ù…ç.ϯsçÎw!feÆß7_@ÚªT•¯ÀVІáp1)ä†ÈܺÃ]>}™A¤áb~Žïíäõä®yËK.Å/¢ç¬õzisÖc„€Éx2Uo7Dxø±N®¨¦€ÉdñÓÚÏg_Ô­2°ôÓŒ ÈN=12$ŸŠÇ<erÐÒ¿kÛÞ»ß×mNÚ ‹^"t·€ô^Êèa>Jû” ô„ 52àP"§"‰®rÓn®Êµ××Ã<‡…Ì  0ˆ«vš∓V—ì÷……>TŠ“lGS}B ž�iÞ}§0�ÓFW©t$ �0ÝFv µyjmÅstŒà³B»xYÖ7Û¢¼¶vv·ò½ÞÏýkÕ~Ÿõà'/Örô™ʶAéU ]_ku^vß‹¤üÅ‹U~Ö/§GOºugô²)¢ àá3Ï>gä‡í½l·ØÝKÛ¹_œ<qÌÔ,VV—:°ïÆcµ2EŠî¿/ýwÿmí¸„JÀ .ÓÔ±¡á»�¬zòB|;sO –*îŒAçã¢03­ÎP`±IM­ÿL¼Ï’_4šBJj“T_f—Sž|æÍôƒ§O§·O_1Å ÀlÚr´'{ãÀ¦ +þ+}ÏH\M§„*UP’‡?Ì@÷òRñÞo»ñ÷»®f±Ýy¦±7!¬ˆËЄ<DÌ&ibüêúm¹9‘\ >qüÎz˜ÙÜ8qòÒ,A o¿¦ÛÛ9©«îRÇ…È¥c¢ ‡Ê­±®~>{onWy0g¡,³µµ™ûùNZ[]ïöYSFnÔ,B˜žØö"1 ˜W[HÒXíÁµ±¯-›ÚO/Ú¦÷~ŒÉ~÷Y÷J¿Åö‹{¾HÖÒßñ<‘­R;­ø¢kXÛ16*žFUÇõõÜ¿7»Ð!FÉßÏ*Ψ"a2æu†3ϹèÅØå—œh` Pmms² >@Êj=<–‡¸û¼W®‰ Gec¼uõ#1G„¼ŸgRY+4’ÄI<:w÷ò>=ÏÕ{#6Æhu%© Ö,.,G'/N ÷ÁæÌóú ÚÉä=ý´[R5<™s?jD‹¦ÍöžA~~TZ«mŠ Ö˜2W2¤**0F.ÉsÚØVE¸‚{>±Pfü=Bá*cጠáõµ†«½o2ÿ, ,êý =³r^Ë‹7—'è<ÍÓ<ÍÓ<ýê¥Ù}³Ö#„ eM&5B^ØÝY£a›g}€m4ªV(Ÿ¸¶Òšê µ9˜²6"O>Ë‘rV½!’“£jÅlž¬å¥^Ízž<Ák´—eŒÄâXÞYuò#‘R·TÖ#Q9bJ±œ³*j_ð’þð‡†ã€«3Ö[MI³„XÆh Q™…P&ö�8RGgÒ›ÍIð¦!X¼öÚkéÙgŸµB íL W!/cÉÞs3=4’k€Ç�"Ñ)øà ÀP_rùò,§‰Tx¬s<€ßqM:<�Þä¼Òƒßèd�J ÀG©L¤dA¹_|ñÅNr”Ÿ  /ÅÜ¡î `@Q�ŽU¨‚§Ÿ~Ú€N”6¨Ç<òÈ#v¼<ÔåYÁu_{íÍtåêå¼þ'8o›¯y1íïŽò†e/9´‘Î.¥ß|!=µýTzsùtçµ;ÒoûbúÊç~-þY•žzê)k×7ß|+—ë´m¶}c® ×?:èÜ‘úþ“@½¸úó�¯ÿÐsß¿ý|³ÜVn¨®›Ç“̯»ï¾7=öدåþ¸”ûÎánl6*3œ¦´?¾lãÆ=wßcc÷|›¨˜àÕOWŒYÆ„!1ìèïŒ-ˆE£ DÒ²XÔE‰B„*¾‰ŠüEXùƒtÿý÷wsãš1΃Ž1ýýïßBR0®QÄX“I׌)0ð°d>#QGæêBžäIƒñh”`ž¹ Xä•¢µŒ+b<*ô=æ-…¶àšÌ1\(„,êG"_¾¤ˆ¡‡³˜“\¼RˆüP«€„A9¹jÜÊÃăœºQÚ˜¿%Q„kМËu5ïJEHm+ƒž´s9 ”!sÅœÊs2¨oiŽUØú×¢Ü"M0Ïs¿î‰D?c®å]}HmUd d.f®g§¬ä¯gÃb•¢‹ÚV‹&I­ËH5O¿Z©ךNM%ʉï}æÌÙܯçþ|ÈÀ%=_çižæiž>Œ—Ž€ù G¦0 Q’3†LxϵlDÆíxÊ iOQ'I–Ç£âñ^bŽ;·ÂB[ø¾Év~ßN×ò~kÓ�ù.vhE9—ìo‰øúRÞ×NXÀ˶í@È…^Q¢äï¡6öK8�—–÷z Ð2²}ç÷€gwC<X;§rr‡yŸñÁóî½Kj#¯ˆì e‘J)Ká�cQ“ðµP~)䞇îp jaaÙäÖñn†`áÆ+<…¦C ôÀU]”½–ÊóF÷lTˆMв©~í¶\·7÷2ð/f@ôDÚP™‘G·vnÛ@¨¬ŽÚV!ÕègôÏqgè‰yë^Æx¯}EhH©—¿(uýZ¬ÊëÈ #œà ¾·»ië8ÖyD¥-GÜŸäžæ€gZ¯*|!¡<\b…¼]kc‘b–—Üyb!×uwܦ¿’Ò§ï¾Ú©³ Š JÝÖ$î‰Ê{‡´9~ìD^çŸÎkÙtë-;é–“ÇÒÆ¡õ\–ÁªöR›Y{äæ:|x­ÿ­™:°7µ=ÁÃÈÑ êD-R»0eðóþásÊÖÎV´œPÑßÇ6ù…£!®ö¯Ù?Š‚ˆ”h�i<ÝQYtBNJæM® ¬-ò RÃòëü¥ÝôÌ‹gÒŸ~-½òzÞkä7žô¤µ•ÍMƒžxå Ù([T*š¦éúþÚêFgìŒjõB¯Þ§q˧x¶pyÍö¦˜xñJ‚[ûÕ"¥ÔFjòð(µÑÚ©)ýv05ŸF�>J ÈWý:â@Û‡èçÉ”q•ýPk3š§{Eœ*Ï3‹Ý1úNiÖ›Ž>¥Žu Æ]?ç òøCÉ¥Ù+éê&*˜»ööƒUßõlà³²úz@L"ô‡ÔFº2£¸žcrJ˜U©J†ÃáÔB’ÍPá–â|ç­õµ‡ŒåS{Æ=¯î“Ê«vR4@(ˆ•?—ò Þ¨6º°êgkkëic}Ãú¡ÝvÒÍSN,c?÷»a=œ"ùÄúÆvÑ}U˜(ËgHFCS¬@™¦ä}0,ý“;®ºsÕÿ\‘¦(á´NdÎlÛÒÎù>B a>]™ŠgìzÞû¯­g;gã϶*s‹õûÚæ£r4<×'vÎb~.òÞ4ÒÞøR~?œ'–ãù¸rþ—óqçr™G¹=jŸâlîËçWèMx?Y¨}~äzÆÈÈ}{i9¹¢O]öúc#b³r–«[¸­‚õ©«‰=×QÉà³µUs‹yš§yš§yº¹R\#bk€L«P—ZËJ©\Žô7J³öô˜·ÖgÝÞ'çÉõ°ÿÏb_³×ˆ{"Oµ7˜%›Æk|Ðzë:_¶à~o?šZ+”G$SD’„ÖÕ`µD@xà 3Á¶îò~¸ßê"ûDlEˆç½Ÿ}è“–>¨ ¾ú€¿UེÁg½êð®× |7˜yñšöõ¿ù7ÿæq�Ö/ùË]@8:ƒB7—؈Cs8P±kàII@¡@<Þ£Ô>y�<Ô èTx¹6B o�€ œC^„5±)˜ë/ïòTä£|$~£œ/ðÏ=‹ö§dGz衎\AÒ@gðYÀ“AEžxw#Ÿ‘ˆci?€Ç½ÝQ:zäpºåö[͈sþâåtùÊ™´»³Ÿ6w6Ó‹õ+éÕï˜að‹û¿–~óÔo¥[OÜ™ë>~'í`Ë5Ef@ô�­I÷E–ÙÏ“2¬éïøù“’>n‹÷̳3?W©˜©óßã´’7í}å±lØ;™>÷Ù‡ÒöµítÏœÝlpdC߆“.æ¾µµuÕúþ=÷ÝŸVW–K¼Ë&ídc ÀµT&t/¦!EÈÃFßÓ¿[ôo~—R E?x£SÁ`‚W¨ -S�û¼4pãŠñ,•ÈçG?úQzüñÇm>‚8À5%óªp=”±Ï9":É[Ãã`^u~cŒrÝYù'ÊIù fÈcÀb@QxÆå¡ÞÌ4¿0¯iþâoõ ® ©"Ït]ŽEAe”Kó&íȵÉëÒ~Ô•ù—kR?HÜSæîõƒÐyEƬh|âZ,�ô€Ö5yçZ´/íCû¢˜“gá¢D`Q˜'}&Q?Êqb:žwêæiæ_µ¯ÅãÎÇqMÚ’ëJƒ—H.üN™¶EF0=¹ïô>Õw©+í+—íK¯¦Cë«&F¬×År}<R뺮®‰&Å_ÔÜ:O}ŠógÏÞí?k!; ž^…Ý?2�Á˜×W¯¥O}ö·œãâ9‚?ôpÇ}§ö„£›g±úa¥ùx˜§yúû%³'êïñ™¨Ië´›t61ý/ú7é¿ÿ·n §žùZÃk¯$ow%Èø~lïN’í�ÄâͪýÏ]Ö +Ë«FÄQÁæíÆû*¯y¿–¼Uó¼.Þ²þ¼îÁ%WØP9‘¡pBl ‹º‡Ðè÷!ãIâÉãØè!F»·g]ÚbßCÕe E×h¤¶÷0ãØöë¹W¯æ½±• Iô#E› E;6e†Ý½m;pxiÉUÎ’…S˜tä’¸§êÉÛÓUòÃG ¤M®T!% O3 ÌJ­CaPâÚ¥óØNõ”ê‚'^¿ºì½QCíA¾qÃmhýMбoýx•·÷ž¡lè[¬s![ÄÐrjSÝ»Ç?Š2f)^g̃䲴Ü9Tx £Qp'Òw.åýSOæ˜õ2ï÷øn¬å5äâ =v(Ývëñ¼;ž÷GŠšEšJ=»{ÑÎüîü®\sZB$¡ºZ˜j[)ã^îÛ³ž[ÊË<Üo`Žj’+QXˆŽÊ‰N*' ©ºÛg@s3ñ¾¸G¸¾í&½òÖ¥ôÌ‹o§gž?“.]Þ6›‡…'iûð;�ñR|‘Qw¸PÛ}g´øÊ܇BÎaâû°›_dÉ*ökí9Dò #¶‘æ0jʾr�Uëóí¸',Lí†Vo3¾Öíu ü¬±5’0Ò˶ï¹HHßUÎïÄL'öYѱ ªÅÄ~tm…jÔZzÖ(®}±úŽ“,.Û˜Z!4ÆR!ÿçw:F_n/§Æ#ûoL‡Šeó¨Ý¦æ¾üo¥ì“#é@çùs¦éBP©üQ=²Ÿo¦ç>l$u;"âŠl*C7Ë|À^ш{…T2›·ú¡¨÷Öµ­Ü;öŒpÇ®•nÞ·k$…åšVêÑ~$¦ž<5Ýfö§2a7?5Å\5¶§õyÌÍÁ¨ÎLR*Ïca¸de¡ßKˆõ—í­k¦B1¨ê¢Ã<™çä<÷ ˳¿±çÇÔºK¦c@» Ém]—ðXƒÚæWP‚è”m¢ƒcVƦ9—ÿ¾’ŸÃ{¦$aa[&¿oJ¶V±¶NÖž,"”`Êmƒè¦õH?™VF²°1™dÇØúcÔ–ço¹—¨Q‡åÜÿåïÞ—N;œ–W–\ c8(ë“Á”½ :ùûÜ^ða¥_†½`žæižæéfN ±Í³òêÕ+óºJµV‹ê Q¥MöíõdGå8Öñ`)¼+€ÖQmá Å?ÍáZÃǵ;XeÆÖưÐÙïSN½3ÂôRÏ•›ò€Ù(š�kcá>±¼ñY>»¾EûWðº£.ÿÅ/~ñ†í7TÖ¸—#”)+õßQTåËþáÉåWËûdæÕ–÷&¼Úð>ûJ7øü^ï³_w»Óû¤›†`ñï|çq¼Äå=M)A¡>´¡ãMGçxn²ÀL~§£ 8•<£dbä•@â\€‘ÀÀñ’¦?@0�×”¢ƒYàÇH‚^õòš ˆBßÅÅ¿SO@@Ûä/©W¦’Û'®É‚‡7å´“V€/çÞwÿ}éö;!L,XÔTî.]=—^¸ðbúþ»?HgVO§[®Ý’NmŸJÝöHºûŽ»³Á&ˆûK.eN=rà‘vœ,å761NÇ“Iš•Wü‡¤Hª˜Ý|~ÒÒ'‰`a†\ýŸ7­ãí¼ÞO_ýú¯§[x0}þ«¥õŒ,•¹c§ñð¿xÉ<Øô?~"�Qd9d†6§ƒÚ½ è¿ôú)*ѸÅ8bl065¾8Àž1¯q¡?R¡è—"Mè¡"ÇK!BFk”¬GÌ#(WЗ!*ýöoÿ¶•E`9×d.h!…e㸸buà… ?õ•7u%?Í#Rf`ÞP|Z±©'×”‚C\x0ÿ Ú!•Ä ˜Èeäš|O=8VêRfàZ\—ßi7©>p]êJùzo¢ª#”@„AEC$îæ0ˆ_\›¤pFÔ_sŸôˆDÂ= lf¾ñotÊ%°P=Ü×èqëò½ëÖ†ZІ´ õ£”ÅŒQ¥ŽZœè¾qŽÂJõ`GÛp¸®j ‘}¤ŠAþÇ;õüÙóßMëyN,>>é—a0‰ÌV(ÿ&ä-£kÏ–þùŸ£7ú¸=?çiž>ÞIa´vˆúô*ÅçÑAcF‹ÿáÿbj8Š .ÀÜ=&ÝðÜ�˜F2å}\rÿÄçdHÛ»�'Ä�2ÂJç¡Gå­—öa=AÄW·þ{ Àžhä!(¼}¦ëINóyƒºû¬ë÷¤€Ú’‚X¸^™^¶i•Wp¼ÿ‚ýîòý*‹µzr/Øi¹T7÷§€Mï ¯L¦ÝI¡cójø—¬¿Ú•ëyˆ”i¹PS­9{R|MÔš’†Ê¥gÜì3+–Ù‰0Íz –Œ?gÇFÞà©}Ä2FÛH“°ÿô>Üèü>öƸ¸†•‚@p¾×^Äïs6¼í:õµÀf4Œá=¯z`/š4“ëÆŒÖã\ciئ»OVéðúÐ$ïã´{Z·a,z>ËËKéèáõ´º¼ŽÝH·ßvK:yòxZßX5/¥vÚ(Wˆ ‘´ñÞÏ>sÈ/’“­Mé»Mk*1Ñø½ÝÛz:tB\ï©cæJ#ëZÓº­½­¦¶ ko—>½›NŸ»šžyél~½›Î_ÀŽ7,¤‹òšH­¡5eŒY…í5´ŽïÁøåŽ„ÕLzæ„)„§¨” )€³M!hÑü´uíªyP¨@¹L¤.˾j°ïûÀ\S(ã]íÕ%íu{²K;EŠÓz³'ðÔwÕÉv›H´“7Žh¿h¤sqô¬‹ÆðŽpŒÜÊ»ë'¡2W@pÇŠ‰ÝŸ••<~†…L±ÛÚjkî£öÐ"Bž;â8aÎ4›WÛNÍ ñ؃ˆ31EâMü.·#@ vŠÏbÕ=*“TÁòŸÅzŽ¨ç»½Ü·P1r¢‰“¶!%i»vRâl¹ëºžyŽôÞŸžwe}ÚÚºr ³Ÿ =O1´zÂ+SXßDr È%4‡Æv Æülä á²ÞGrçygbj>­*'Oa‹Z4¢Py¶1–NÎ#ÿ±BŠ™e:_¿¡ß.[›¢‚1žäuF{4ÿ¶fÄŠñøJš´çòñyž®÷Ó`aÙ”,˜Ë‰6pÙ¿G¬ jSæs-*j“º<ëJ[Wu©{²°O"HLLaÄg@œ«ù™ó¯~ïÔœ`ñ1Ks‚Å<ÍÓ<ÍÓÏ—dã¿rårâÝ,#:xÆ=›ÖuqŽíç×IGˆ#$ïä)ÇǃÈzE‚òNo¬¡ÀIØG“'8D$ÏÇòFr|´ïêZ/R^Ê©° àZÃÏ’nD°˜%€°~Æ™óoÿöoÓ©S§Ò×¾öµ)bÉ,$îÑ¢ZåUž´%¸4Ç ;‰eŒíªkåvš,øí##X¼ð 3·R #ƒÆà£csãé”’{á3@#@7nò™Ý¤À@•QŽc�ÿ؈i`X|ú´Ã¦„¼)“$ße(ã®pG'†4ÁqJ o@‡g`Ꚁ˜Š·.ƒ G:°ò¢üü&SÆ É‰ò¿Sö¨¨!ÅŠï~÷»t’/ ²ÅÃà¼ãöÛÓ‰cÇÓpy1mm^Nß>ÿ·éÇû?IÃñ0=´òpzl#ÈÊÖQÞì°‘X?tÄ61€Š´yqÝÇG¡\ÿ@‘f|=ƒ™&’ü¢M?¨”ŽR4 Ä B4Ø|’Ò'‰`aq´QÈòl²J_>ýDºýÂËéêý¥»ý\:ñÕßJKw<YJ K §úòå+éí·ÞJûã}óÀ[ÎÆoöÀyêÏ`rÞà¯ä1–û¼”(7�6ý—$2ý—q °›ã8æÎ;ïìÆ©î?ãМóø^ž 2xI q@¾äÉxF±$¥ˆ¨@R¸þÍo~Óú{Œ-E?f~€ÍÇX†->ó�&o¾güê8H |oƵrMÆÞ­Ýs>$æÕoø[D ò’:uå{ò’¢ ù0o’¯Hf´/µ¯È¦ôàÔCœy€kr®ŒÁÌ1"/Äð%ÌÓ̯äÅu¥vü�©EyPÎaŽc ¹N‰²–å/ÿò/M1賟ýl×¶œKŠlFûrÿùŽòó}$LhÎáwæ/úÞ§>õ©.$L\¬ˆ4AyŽö¤¿H…ƒ—Ô7¤ZÂo´%mEþZø(Œ õ¦l´ËOþî?§µl,™,>>é£2˜DC|üãúüËNŸ4£Ï|<ÌÓ<ýý’ö qC?k¨?(ºQºÁ‚Ô+ 4@@|tØ" pÄVYTÍK¦Ö•ŸÃ£ñ(m¬2�Æñã¦x· 0¬ªºË×ÃØ Ë>êH”ô7Ù€üÆ4Û QÔ%¤‰ÏÅ2Â4e,@oP@ÊÆÊm fr zìZþ¾~[è@1Qxõöƒº¨Rp12:ûB@ðð ZÇ4^¤RÊì�°‡¬ ¼Š˜—ÌkØ•C¢7ÿÈ®ëkèª# `ïð6¸8¾-€[*aG¼=ªŽ8£ºÉ£_Š^?…•É¢./÷.ö6—´~Û£ó”«M"©ÂûUÝå×{ÔIÏòÒd¹C¤kíí© ëâ‘ÚîaŒÔû €wö**€|F¨ˆ ëྷwO¼–§¸Ê½´8H·¤ÛŽóÞ©îÖ|½á®*ÞÙýžxmu%¯!9~˜×—‡Óí·H'O¸wÕòÊ‚õÖv}ó0žÃ©ê®±^fgq±œvϪi�8ö•.5ýßûãÔ¯‹~bS ;ÛÙ¹•÷+»ãtþÂ¥ôÊ—óëBzët6¢š3‡d|²±Çþûc°yJFXæºß1L Ï?Uê¼ý;¿éî—�uWêÖhÜ—™9Ty(oµ @í(ƒà›[›vþâÂRZÍû)BÉô$¡qQŒi»<H„’É ëó–a4’¤Dö‰÷ÄÈ#øU`d;‹ä¸hKëÇo¶2’W¢:ˆê®~$'!Í]´e,·~/½1I¥ÈŸ¶®¦ËWÞM`Üš“}>],D¨UŸ9>ì¡özõšºž%% ü^¦jÊ`=HÓû¬HŒý Ö7Ž«hŸ%|M¶� DYhµ¿ÊÞ=«vjo¨2±iS;Õïœøå$@ö¦dCÔ>ßçët]¹ã<ÕQ"Ae*ôLSÈ)Fòç@[Æq?çúýH•<%GFÒbÏìÏHW½€hÄxtµÍ¦<*ëïf{·9µêÂyMJȰܒFXp"YSæÒ(§Å…ÞÎ0™ìæßÝ‘ÈB†Y]`e›F}kžïm6·[yÎG¡e›m»“<Ÿ˜ZoKÿe„Ö>¿Ûúf`!Ř{¼M¥ P&¬EZŸcu®‡×xâDŒõµõô¯~o®`ñqK•½`žæižæéfI¬w<:eÛ­Áß/Å5¹ѤÞÍž-**Deòø,Œxi\ÏæÍÚ„µ“ÖÏÊSxÅlžÊg¶¬qA½ÙW’†’¼£úuÌsöù‰ÑfL9ÁšpJWçˆN°q-{P›ÆòƼÁt¢C²Vµ¼Qþ¿)Ãt“$€B@D‰: �–ÀUÝ<‘ %�ŠéÆk ÑaÕ�¹Ä"O€N…‘º� �ZŽЉ¡BWyÔSF¼Ò9OF~£ƒó;õ œ Y  Q€*ç+Ü�u%O  !ÊNÞ”“ã�Lñ‚gBR[ªj`éšòÈ&Ê/ÂïÙ§ŸIßÿ»ï¥ûï¿'­?z4½vî•ôÒê+éŽñÝé³KŸNŸ¹ýÑtëÆ->ñ´“t9—ýg/¿–.o¾“¯ãžðÔƒúrM ´£B%�„CpáÝ=·÷sÛ^0ÐúZ.çÉ;hjãF¥n° ˆ† ?l¾YøE&M”êÇôSúݡÇґÜÇêlØ]Þ{0­¼úƒ´”ïñÎsO¤Wÿë¿Oõ7þÏiãÈá´tâö´yø¶tmœ’Ùp{Ï÷¤#Çó÷‹ éZ¾ÿÛW·Ìˆtþâ…ü¾•$+T<p:C^Eê×аO¿×d¨Ï8Чoò=ýKjŒ+TÔw¤Þ@¾òXb¬ñ þ‡?ü¡…ä,E›Ð§é³œçÆ/sƒH ”Wª ŒQÊ%R¿IiG×Sx©oÄù‹uW=öSÎ×üE¤Ê£¹Æ<!r´ ×dn‘z×ã;Îa> \q®b¼’¯ÊÈ9”:)¬ I )NˆðA½R„úXÊÓ–ÿä“OZøŽ!ƒk¢²Ã½{bØ·¾õ-›G~çw~ÇòDu¥nš;É‹¶‚C]ÕŽ$ŽáwêJE~£ÌRJ³•ò‰¤#©.ÕS„ ¿SÚKäÕUó±B©ˆÈ'õ>`ù<}ôé gW\@Ëߣ·ã<ÍÓ<ÍÓ/2Í~Ñðð^IëÅæ;põRô0éÕ ø6`�0¢t�¸‡è½uEÄèJ1úühk®k 4•'€ÚI•À?ÕÕËÓƒUŸÛ‘tY‹Â†´Eu­ó((ç;Ù¢u/¿ï¥l0)d?�o†ÃŒ¹ÃAx•º+zƒ=€Ó¤éí $oí€S÷”u5‹¦#+x{¬­Yùˆe?ÚGYŒ5í Smð}–+gTUìž?Ä÷ÚïÊjkó\a!6«\joo£IÚ“‡ÿ^B¬$ ¤mud´ñ{7(j!ºn$èD3ÞG%÷D¥Þ–RABuö5óxÊkgTÀx3ª PNððyȶ¯®8yºiÚ.vn,¸‰)z£IÊr#öžÁºsWê ´éèú(m¬a`ÀŸ—\ý¡îUJ¶¶wÌã‚Å$1Ê÷ްûÄ9vôpZ[_Ià’ÚsECš{Ž ¨\7öM…rÜL½½wSšj?‹þ}š8ª÷ÞXXYþWÝUËu¶wöÒ…KÛé|~½þÎ¥ôÒkòû•´½µëØv€­÷ ­Ö>Ÿ@¬j1Œîç6(@.ÄŠŽ@•úðqýÏøõ#¹—ñb+ò-žóªŸ¯Ç†6N'¥-´fkËq2ÈFc%ï1Ì-sÁ2ŠyOÒ�á|FWvÓ^þŽð„þ1¢N7Ô]˜A7÷‘ð {•¦‰H©»_Ñc.ŽÝWÍÃ2Ü*ߨ⣼5/IA}%'¤Mºk‹ðÖIÃØìy¨KúËnÞ{áÝ¿¼¸lˆq '…š a0!áówc÷r¿(éH¥2ªeôÊ+½}I„‡ºMSÄ!7K<(ö:eŠ"Fíç$åݯ_ïÇëwdŽ)hÔç¼îm!Ù¹sí¡Ciy1«‹y¨A[ÉÉ+‚Rs‰yÏúœäÈAQÚ(¤¤ª„~r’S²ù‚ÚÞ¾ŸÃógß”Z{˜C „á+Ú¸¶g—‡ú°y¡„›â3¤„…+¾ŒFëÔT£¢zSÔWmü8)ƒãxN™êLå¡©ª:ŸÏ|–ŸÇÈsÔ‘y{�å ËcXŸÊ'¢º™÷ö“½4f¬WNTY02 ×c~ �Ï#ÿ]Ûš 2r “- y4×5W#¡´c[Œ&"•qQÕin✧yš§yš§›9ak?qâ˜ý׆³{†üÇ}ˆHÂYwÉ?†ïˆDÖYrjÌ+ªVãÀÆ� 'ª6”גּD|QNòÃ�¢þІ |µþUÙgËÛA8™0e¢|þóŸ·Pê*[Tr×P>³ùªþ*+x”D¢JcÌ?Ú’" ùfH7 Á   K`ŸHÜtIÌ ÜãE' ãæÊ{B‰M4E^ו�I9Ok�J:=ùpžˆŠÁ)2ßñYj䯘? v€6IûSf¿ò®§,üÆ59GI!C¤:!V;åãÚ”CÌnm\òHŒ%íÏ` =%ó¥/})½ýÖ›éñ¿ûÛôýÍ'ÒÎÖ^š\›¤µ·VÓñöHZ¹7ƒ€»yp­åÍUÞ|ìæÍÏí–7«x\/-vŒu/(¨3×d“©ƒvVÊáÂÅüÛJ,�ÙÂe~ö™¶ß/ÞßmÙ ’"ø4ËüŸ3¾´I§hKú÷ì¾ûî˨cv ®\¾h†¸{îz,­ýãßM[o¿•vóƱýÎÿ–®^8“®>óxÚÏ÷tû–{Óò±[ÒðŽ{Ò~ú|š¬>”ÚlôÛX^O+‹|#뺺œ_këv})-p}ú6}˜>ÍÀ˜‚¼Àضs 1‡}žwÎÀ Rˆ~ŒMò¤ïAšà;$¸&¤òóؤËvÜSO=•þú¯ÿÚB‚üÖoý–=PÌë/Éü»«²ìXçoÊÉ5¹ù‹4Aÿ%ê¥9Œkqã^!+Ôs,åf¼’ÇF"k¬3~ :§æ�ÊϽãXæÞÉò+<…âzq,e`ìÒ´/÷›|DsFénÇÐd.¦þ„ºRùS~ˆ/Ü#ÕŸ±L¹5Wqõ'OþºÜG…:zî¹çìX®“ó~øakc¾çÈ Òe¦lÌoԛ߸?ä-‚ˆ š,¸h;ê¦ð2äÃ1œãÒ³MGôˆ$)1WK΋뒗ˆyzi¡ñÄ} -²eçéW+EæA„A=Ï"³šôAÝFúUê§óuÄ<ý*¦H¨˜QÞkü¿ßÜà„…É ó^(^¤ö{Óƒ“ß;©óªxh°ÍÁ£»¼uÏV…^ÜÉ€¿£dQPǯ/Øq˜{åå9,åùdppƒIÛX#'c' Œ )`Ò S¯Ü00k¶ âDlZ˳:‚z®À1(eq ­WñpÅ…ñˆF …ãèÛ:‚ÜMðWH€¡y3´‘‡rÌs˜²JÓ…q�¹Sb(y>KÅAáFªJ!KD’ñ,½ñI±]'žõ¤ƒž”Ѷ½òÄ xékŠözGp]èiêÞõ}Q@¦ž¹=™ÄC"Œ­¬¨uDXkú¨§u¹ùH·+v?S[îM]MÖu]<¹K~=¹¨lcØ‘:lÿÃK›M:²6H'ŽTéèF3C•ßI¦LQ¤õÉug{vÍBNìngÃÆÁkÛéÄÉ£y=»Öíâ¶pe,´3ígOšŽœ“â3/ú*F)E'mâázci*zZS«Hfó¡âÜ…l ¸|-Íﯽy9½ôú#‹PUÆí`uO1\JccÑûݨ“µ5’K1&2/�(ê^­@íi �ÖF¦èïIN%#‰€2™L‘¢qUj=i¦-s@¯Ôؼ×/~ƒü„w½9Ÿìí[?3r¶…t€>HR¢QHëS´áŒ:ËA„–Æ«/Άþ˜U÷Ð|©cHšã8S½»9:•†‰~é¡„úþâí6 #zp¬ Ýüm¤«B Yƶx4·•Û»öö¯91%÷ö€j7ž1nð•Îõ}4¶K´3™¡i¯3–DZ‰EÑ8=M2J)’ªtžòU£7`•®'ÇL4]îNqƒ¶ „:…ÿ¨kõ•yŽäq€ýή;;ÉÉBÎhqÿç«ëÈ:FF*åi]gXíÙ´M(C ‹5éç7#'@ªXYM‹K‹Kóñ¸(›x9Z›#×’ÊüŒ\G¿«Ñ¶Hù±nuvåª~އÞ8¨} adOsãZ§5â…µ¹©B,&‘E`ikW¦HÕF¶lšlÓ¬×sß’?C˜ØÊùà³oeD€ÇîEÕ8É¢-ä–‡c¶ôCÚ.õÏ/Í/e³Ì9Oç¶‚yš§yš§yºY˜ÆÙ³ãŽPxã=C¯�Ñ)•µ™Lµö#)¬y\»Äwå5µg)k_‘„ÿê9†G•¯˜o\cGçñ˜/ç wˆ ×å÷‘¨É&RéÆqõÇ?þ±á¯<ð€]#–ó òF{GÌWÄ áV$Ö†ÛÅA^äÛ¸÷QžJs‚ÅÇ0Ìèa4èÒ@á{:’@,n67ðPDçÒ �ýD>𠬇Öp Gg"Ÿáè,\à_�ù3ˆ6D^Î*çs=Bdpœ:çéšœ§Ê1%ö@j j±íE°�àDÅCÞ÷$©UÐ6�©ÔÚ iàhz«z+m>´mñQJ¦ã«·¦…*]<w!ýèO¤W^z%ƒ®w¥£xe/¸n}ýpºýŽ[ÒÆêzoSáD„!qÚX“Þôd‘LŸ×úú†}çÿÛv yQ~ K2u”…G1iÃÝnÀFjžÞ?i"åÞ ¦ï®ó:vì¨õ{6µ À==sæ´ÇøÉOÆ×‘ÃGò})­>nf±ýû?•Æ/=—®>ûtZÞº”6¶ÞMÍ;/¥Ý—ŸH§Ÿ~<íÝu*­ÞzGš|ê«ipì¶tîÝ3¶é¼ã¶;Ó±“Ç­lR ?1vh‹¬#P_„') HA?QøÆ$ãTÄ' з¤ 2 AÐϘ+~ò“ŸXHbV)„y“Èpy‚²@„МD9¸¦€~ÊÀu5Gˆ4¡çPmê‹"…”rDÑ\À¸ ?æò‘K!H0@J¡œÔSìMÅÎR<2yTÑî(ŸæòÓ=A­ö$Ú‚²ˆ4¡öUX#^äK_âX‡»×)y¸º§Ö—J»B<Óý~úé§Ó÷¾÷=;‚mÍ¢ÏO¤x"Ò„³_OX½Åb¥/‘d€ä3}‡ëÒVj[ŽõÅÝY+§È*|'o+D"Â=àAU®Á1"‰ÐÇqº¯Z̼:Ÿ·~%S$PÜè·Ùïtlô|ûû¦(yÀ¯ý«ÐWçäŠyúÕM³óÑ/bmí—~1ÛÌ·òúŽÀSí^«©)’Ïy.îàf[b¿7ÅØÈ…8°²š÷:Û­ÅoøYZ,$‹¶WY0.¥ÊûÜ�³Æ=ïÍà0Þëˆ"m¨Ü�K Ãâ}í 3¶õnӺʅɉ'÷ÐOêIQxh3pÚ…7˜2Õ¡œX6“¾ÜzC@Ø k‘X×sŒ{‹;qð ¼ööw‹*j^]ŽÄs`]2ÿ¢"È6î@4ÿNžÎ®1 ,ömÜ_Ç•6œè"°µêäãÀšîYäŒH@¬:€–û O³d?FEž;—Dv3G×'«T�˶¨ @ÆfݾWÖýyO»¼b^× '1)Š"ö¤òfÕMí•©<”K2Ð’¶iò17«´³Ÿ×°;mºõÈ$’öÅëY™—}]K*?™jƒ/¥í=¼¯vÌ¡a29jkeÊÚVíP:šôÞòÑØfeŠ t*JYÑø©±cD‡¦WâÒ÷]¾Ü×ý¼g»˜÷`g/§³ç¯¦³çòðÂfþ;Û®î©¢Ç Q%ÿ5,¢TFö“ÂöØØ){ÅŵuSŽ¡˜ÂŠ…¨ºþW…ÐA@ñV¯tbc§ ¹÷Êô¤¡chˆff.‹ýÎhfÈÝv¹˜iä6îÙÎ)œèO K–×öö–Ù=Ü›ll‘Â9š2‹ø±2ê8Í5Ýœ<�cØÖHþmfÕZWÐùê»R‰¤a/C3CJ˜&ë;Γá9<T^s8a¢ª]¡ÇÏ£Œck/> ž@Æð×n!ëûÅÎá@}ú øHù u.%¶­Dª®§æå«sd|VÓ&3Ï×Y"E*ÏYE>¤<¿dÔîÛ;·[Õ$)èpJNjŠÃ’ßߥå%#øÑ¦ŒÙ|h+)Z(LKÊБFRQYÙnÜ”^*!QªØ/JMŸ1J?1gµILkÞÉçu -N¬­³·åYWÔv:®NFmG3ar5Œ¶[c4ö\˜têAÉ$ì9ÂÒ8qËì\ÜožaWd25 {8åõc~1ÛÚ¼¾˜ä÷*Û0ÓñR?BTcšÁ„ã½/õ„,k7kžý¾Î“ÖéXÙ]e„gˆ+P5–ßRÛ‡3™§yš§yš§yº™RTœ%»êïH�ˆkn9Uʹ1†Á:¾b:ˆ¸¡µ§àMàZÏi vP¾³ûœƒÊ,œANüZjó‹D“Ù—ÊË1”< ¬'zp­•ÏÊ{P¾jÚV›Ú@ØìAíïÕGåøa¥›†`ØÅàM*tFy-ü6*q¬B‚+º�¨td6 �z ÇF PŒo.8 çðY`!×”Êçq ±¦t y—s]6&œKùEáűÚ Üd@,Ub@a8H’Œ2‡L([›[¶˜_]^Mkkiem%mo]K[W·Òµ­¼è_HÛ£kéµöõôbû¢Ü>·þhúõc¿‘N9ay—/]¶0�ί¾ò²žÈ›ÛøLwÞq[·YtΓA^ü’ðdz\ >åã¾)t� §ÚÅR~ÎrÙðIc‚0¤ìîd0ûò%k“Óï¸T¿ó{»¾ñ{ è`€éÃŽ2P·ú^±ý&å÷ÊOç'mn˯ä©kÒÎX„<‘ÁöCëvÌVž0ñ`@âöh¾gÄg¢Ï2¸ÁíÝsïæöÞÎ÷~5ç³ÖÝ£7ßz+-¯,§µü›_ˆÛÕB:ôè—3|kZ®²ñàÝ7ÓþÙ·Òù—ŸNgÞx#­=ûã4ùÉߥ…#i{%ƒþw>”'»·Ü‚oô©Â…‹—Lå„>tòä-Ù¸Q§Ýl,<}æ´õµ•õ´¾v(íwÓ…ÜO7sŸ¿ãŽ»ÒÉ\~ †”¹IäCé#zøPnúýNÊ7ôIúBQ –@_ú¾`&…P(ú=ueÞà<@sú¿ŒB"©ýEd`¸Îgò¢\ÜäI’ çIÁ9rÇ00ÆêÇp ”AD ¾g>áº\#¤úÁøpÀñÌkZ˜(ü’¤¶øžö™Dñ¨õpåX‘FbùD²’êó§æX-^¤¡)RÆ‘Â!ZȃúSfÚKm(Bó&u•çü"”¨íHœ EÄ:Íñ2ŠñY**z&H1‰2‰4ARXê¯yO1d¹.÷…D¸OzfHîë xÏÓ'?½py£ßÀóçéo?/ÐúÉHsÂÓ<ÍSë‘Ä|Ðüq£ïÃÝ{§$‘úMý(€s“Ú¢’ ÜÄ3uÜ‘ÚаV5oóÖ½¶›êð8 hÊ~a;¯_—–#ÃÚ¶x“ody»ÂCñbiÆhÛí¾‹ÆÈ ƒò£.uµ:âAÛy¡º*„T$©n¡2&£~` {äd0 ü9˜Y¤Ò“ƒÃ�Áîßt„®á�~?ïS7XZ‹¤8±–Ú߯Œ˜²µµiþ¦�R;5‰º–²È$¨RD² ®]OäA05Iê *·@AH)±ÜN¹ÞkÚ ƒŽ<Ò…_©zå)ghm+"±‹&7woÕ÷´6sÇ Qc}¬‘ÿ¸Ô$i£Éh)÷1Ôí¶-o't;ø^µU!³8™hPB¡šÖCÏF’E”æ><tåÖXÙÞÍýy—P m:qxn=¶@ð²¬Ý‹Ü‘ö±—lgà3Ä2ØÙÔyáÑ¿àê'­…6;‰¡`¯Öêµ{}wc¸.]“.ŠÚHª:>¢‘ -ì½ê¥¦¡If´ÛÚKÏ¿üvzùgçrç:Ó¹‹›éü¥­ÜžûÝ>V÷q@{»eݴ͔Ҷƒ¥¥EêÑÅ vçµÉU*´ßŽr¹VÕ”¦¼âüš×µêÉ&šSôŠJX—Š )ªªè¾K¥eÒŽ»ùÁH!ù| w8t;á5±u@YÌãÓB TíTÛDbD”V_ºÈO½QYåŽÊ j_e¯ºé³ÚM=Ѱ<™ôsþâb/Õ̽€!ÕÀq7×,”ÒBˆoí 'VÅþ4+ÔJ±I-.”ùl¿ìW÷ÒþÞÈæ™5œ¤ŠTWA™¥¹¹O{öÏÈAšŸúH ¥TÁ0CÜð• Ù¡$ÍUjÝ˨„ÁwQeÄçiC~°]ÛOÍ-Œ÷ÒWx戸Fb̬ä6ƒ&gíݵ7oý}·.d$Æ"÷‚g¥pÚIG’äY²²²fjmP\‰¤¨5µnÕš"Zj¥ ¢ð]•ͬž©L•çc°äÙN|"l+)Æ4EeÈINjð¹ØÕ†bÇÆ´+šª¬¦$ :âÚÄžíÔÒÒ^>~3_{Ò¡üûñü^Í¿ç½þd3 «]›3ƒ‰=Ïœ€XæÐ<çV³yÍ‚”T®h…Þ†Ï/Réhí»yš§yš§yš§›5¹3ýátB©#}…©ý¢Ì-ÜìA˜Ç,Iá rÅÔ5Z·˜ÝßðÞ3¶.ÃΞCÃÍæ«¿gm!°9[Ï9¦û×fÜêÎtü–ãוï½^ØÒâßnzþ…çÓ+/¿’._¹œ~ã7~#}å+_™Zë+ŸÙ2Çö×p›Ç(½“1\ÒÝwß•Ûö¤;Øîªš"(‹ð;KÚ¸ÙÒMC°üˆäÿµ‘•·8Z*‡bäHF_À½d÷ðH‡`!B€ÔÈ ÀQçH™av *,ç"²éÕwxx $U¼ÊqÏ=÷t±jz"‡Ð�lä8uBŽ×±Ñ $ö×ä¥8@æm¯¹vËkË(L¯eàñžSw§õ•T¯ Ódod1=Ï_9Ÿ^¼úRz~ô|º4¸”oI_Üøµô葇ÓmÇn·M){+Ëwä‰nÝ6.nDòð„xâ‡?0ÒžñL:Lfª·<´z€ºñâw… ·>÷€Ô7ÌU'Áo’¦»;ùú«6YŠ¸Â­€$À½æþÐv‡òß·å2 CjW�n�T&]y KYC’é‰$}d)NfSê{œ#0ضU²†þBûs_ ÑÆRDA-„˜¤°ãiîßËqéâ#Rð™<D>b|@jàÞ*äƒX 7‰l$%ú/}ÔŒš(V|æ+ií ßL‡Þ~+½ùüói÷rîçϤçÿ"¥˜Î>õéÜݦÁ}ŸOÇï¹/­Ürk:sömÛßsï½éø±&å¸7Ú3¬‹/¥óç.¦!1†º³!îБc¹ÜfF ÌŒçïµ-mÅKêJ?°.²Õ3Ï<cª ”ýßøF:uê”ÕKNÌô)îôUêJÇy‚6 }iú"×åÌôE'¼¬wá{¤ê b’Ê#Ò„ú© ÂÜÆžX„ä%%ÊǸ I‰1 p+ 9¤9’>ChÚF!(“úã^ Ó#uòUÕ6qãú×%_3 u+¤F¤yEª2ÚÆ…Øa~`aRg‘Xë yK¡Ax§OSNæy®Aá2(lL D]U>IíJõC^;òÐâwæ2ÎÙ ¼MÓ¥&‰>Àõ”—Hw¤¨(4O¿z)Þwý¦ú|£ßþ¡éWƒ$1Oó4O¿ˆt#ÃAn>ÈœdF† ¹ J<¶Îi¦Ã9´m:ЃºüZ®Ûá²ïm¢ÂCƒ-ˆ„d<à7iØôÛãiÉÍâiQÖ:µ¼¢InX©ÒÒ"ÒK©*»mAµÔ €âˆ« ”Pl‘ÈûP <6ü"v}í°J>ÜJ%cÚºW¦€iØw!… ^óö¿û°¾Çðvó5å¨׃Åxz³s9þÖ>C²P;UUê<‘]‘a˜¾ÅËéž·¾‡%…Kñý¤·£È —âu‘·ïÄÀ4§‡S}™ö^‚<Õ/Ô7ܪ©«õ›T6tüt,ÚÁÔ^lbžÒ=@)©ÙxJ¡Éu_^^5ÚlsóªíµV–×Reà`ÎϼÉ`ÛÛoœ�QO{ÎÏÜÞN‡«±>L¼Ý:íåŸvFMºýh›–—ŠÍ”ñ+Ûç¥BRª °¾µM}®¤¦^(!JÈ•~º`ý´ò>ì­Ø)G0Y9¶hw¹éÁJól§½šëçµ!å¿téjúÙ›Ó ¯¾›Þ<m®¤·Þ>ŸûÛ¨ _ʱ‹AÂî7„é°ïÔ>Š÷¾ˆÙ1r¯&Á«÷à²{^X$¤/¯s�pÈP@ñ|ÍI!ÞÄ9Kå'ÍxÄÏ1ú¸ÐEá£RÈ\ùûö[[]Ï÷9ÛœöËž)Ût†„¶Ì õ`XMyŠÅð41d‰®kûñ¸¨øôq£Õ�½Õ !¦ûm<ž"èº^ÇIgo‹Ê±MôRxF©ŽTQî#û+©aÄ=pUõm¢öŽû{o;ÕkhóÏ‚*.„¾ÜÝëìT~o¸·ûÕ¹®¤Žà!bÊû‹úG´É¨]b{Ï%fËe££hVZ¿uj0WɱgŸ=¿ 9¦4w¨m=Ýß½ ®$™�e”_¶¡h/`ŸkvBíòÜu[Ÿ+ÈxÚrÿJ×»~ÃÔ§<äBMYYè«•1'99€â!BúyÅB…ØX‘‹QÛÙ¨SæéÚžµ#;nhm²àD¤¢x‘ʳuŠ& KX‘ÖfÄ›:™R“+дöŒ±ÃŸÉIhõ^þúbÎ3MFôÙ»Ò¸ÙÈkžló_Î%¹jÏSæª[WÄh¨kmÏN»_ö¼/äÆçW€â¸aOT§yš§yš§yºÉ’¯Sü™^¾I‘¦mêRú–ã&÷\Æ>ΧÙÎ~;ν8ϤšPÈ7²WÔm¥&¯9È÷Â…óéä±ãéäÑãi Õ´j¶D©¬#Ú®´³©*/ß;ŒÓ¹³§Ó…sï¦[2ÎpâXÆ£eÏÜSû=ìy-ÕL+Ì w¯ùš2cbi/ã›»ûé¥wÞIOeÌdõðm髟¾?Ý}(¯wßù™“bÙÿ-9c„âÁbÎxñ†Ê¾ï3£Fz7×ÿü»gӡÇÒÑ#³a\u üÐrð> þ7Ùºå¦!Xà1Íâp’`" |À4n@²Ú„°ÐØÂÓ9²¬$µ'‰Í°'Ïv�Dòã{®Í9€|Pûàƒv ©6OæYpH’¬¼:³À7… )k²á\äåO½ù^ *6=º¦‘8¶‘ÞÏ�ð…w-–/œÃy0¬¬®¹"@5IõÂ0íåýÜÅgÓ“KO§v?¥/ ¾šŽ/OëãÕ´ya;]»òJZZYLG)îçlsŠ9m,`–:¾ð  -âˆ@Mʧ6æ7êJ(+ùpŒ€eÉõ+´ŠÂ:ð±ƒÆ…ºŠP"ž£(!䥤vá8 (3$dsäy/t…x‘§˜ˆòNÿE¥MèÚàFéTß,º´!FQ—˜çõE}áÎ;ï2² íFá}tõê{ÈpÌÆÆz'“Äýà3àò•+Wíê ˆ¬P:lˆ¹¯R0—áƒ>'" 0" p-ÚU†ÈG!,,ÿ<¡oá1uÏéÔ¾”ÖWr¿|ç•tõbîó/>‘vþúORúþM#6à‡Ž¦ ·?œîøÒ׌\±”7óM6î.%$™é×ßL›—‰ÕØÆxo+½ôò³ùš‡Ò: 5kË©ÙwcGá$(“BPF~§Ý©/!A�ï{ì1ëOšSø¹ƒã!0(/æH’Žp¯CRÁ‰á#¤jC9dL /©(®ÉgSy÷]#È€LþRéa^â^PVÍAÜs)thÜ@ Ð=’Òy0Æ*…D~R^ n”Qåá;ÊA;jn’Z‰ºr¾Ú@y?É(Êqêwü¦üNÛüô§?µ—ÊU€x×6à™@[ñÎÜDýÕ>´¥H)‹ÅJíËu™+D£NŠ3ƼìÞoƒn.s…åîY¡¾¤p1RÑs€z¿Qž#N$ÁyúÕK³ÄºƒR\¿(Í ó4Oóôa§ÀÄïâçYô%“÷TæI`g€I›J(‘Aæûo@FcW¡ü+ò€Ið£']LÌ ƒrÅn³“×L×Êp`2òÚ“!Íïr—Ó¦~wRò [«¹E[/I*/•8:ot¾÷5=¡Û½r}=íqS=Ô 0@rÚ\¤p‘<äïÀœƒ2£ÑnÒRÂ÷ ‹Ý3Æ UY‹ ¨³vä__º4¹¼¤÷övŒœB›ˆkù.”°'•Ýè­/F¯öà*8.°Ðë/ÃØ<Ï«r/ëv¤.J~O! D¯y…dÁç÷¤_«k¿(§µAïÅ?ìÚ3î½â³6‚§:/’<îëPb–WÌC{ii¿Ø®Ù}][Ûè$'" ‹ÇzL*¿]¯­:X© ç`÷1¹8JW·ÚtÛña:qÈûߤñ¶š´~2#@ÈØÏÀö¡Dwòú|;ïWJ¹’í1£c¬•79&·*’-ü~¤¢È8Ý~²üìýôü‹/¥¶i{ÐÝQÚºFØþÂÐ0—+ ÛÝÖ€X,Råamvk�j k@Øœ †×«ÀE<¶¹î§]3è\êøHŠ^'ÛË.ùÅ "èØHdˆ4óÚ¨/é{)(8[«š"õ�\3_ˆ\5Ìãi´gãó2!,ò½c*Ò©+7ýU/õ3\]®¯v‰!CŒìî£ÊÒ—=ÙØÄö ƒê螪«öPRš¡os/ÙS‰”P•ûÎé×5æ]M§îûÝÌ=Öu"ÁÉv‹i5ÛÃPh`Ï΋kF{•È"2f“¢Ò`T5QÞƒ5 µû¬ƒ–ò™%“D¢\$`èÝ›HÔˆrÏ€ðñÞ‰„ÂG}¡°Sµ£¦9~3G+Ü˲é-t5Îä¼6ÚßK‹K>>eàžZ}jWþY3¥Î>“­T”rFݳ!Q$7L‰©Œ›)e$Æ-Ø3¢2~IkŠ/®*á!«Rž 51‚U~ª•?u’BÏ0 «ÔìÛ±uÕ?—!B´¢ÃƒäPÙsohe´¹aâjNÉ=ÙÖj¡Arÿž<—óÏm\}*ÿ´–O¾-—óBÊVÎ4$Ÿ<ž}’ïç>k‡IQÆ* ZɹÆEMca°0×Ö›§yš§yš§›6í<ÿôûìãá›ëíã¶VŸÚÝ7Â�ëµ¼®3&viq)•eÑTíxxÚ/¯7'y¿£ÃÞ.ùæµÖáõtÞ”²«T‡<?PòEª©Žöwíù>ÚÍû.Öy½~Žý@‹ªXQ´¼Eɘ¹¢0CºõPeÊ`¨zæµÁöf_¹r|~o?-ž¼+>,íäÓwƒrE[Bº‚Y¹ÖAd^¬—rùF{î ¿ Öš1ŸK¹ ®Tõõg¨q«6¤½?X^K7Sú ë°êþV}€÷êŸõªÃ»^ƒòÝ`æÅo‡xÏ…ÇYx àÔfIx@36�=»5  Ðà œ4À  £çHÒ‘¯@0ˆò’ÖóñÄ–w6X¡ÚÐȃpO€- $ïòV–3ïÚÜ‘¨ƒ¼ýµqb#C¹ò‘?×½÷Þ{ Ø´.uÝ+Ò8çÞ=ç€öÆjÚ͆‹Ý¼ ‚ù½±t(-_J?Û|9=¾óýtur5ÝÒÞ–~kã›éÛ´¸’ 5äQ¾@¶†±RÝÛê®ÛäÔFO×|ê©§:ùEÊÊw|¦yä‘ô¹Ï}Î6[/¿ü²Õ6V]E„á¾Ðn —ÂqRÆ2€î­<ôPi'€Uyø ¼$þÈOÒuEPÎKà0ÆGÚÐÔ7µµ }†ý žû§~$ï}yøÏJÎÆ4k�R™‘úÌg>mmƆcW ¥òâ‹/N+CuRè©+HÆQ@=eá7m€Ý³Ã êOêgl ¹ô)m„ƒSJ ¼«o+lÂ_Ðv\“û*ïkÆH~Üsêžt÷mwäQž7”­{�Mv3ÿúKéõümºòÎkéð+?ÊœêEäO³‘íÿöÿJGM‡H£lŒ9wæbº|õ²•ãøÉ[,tÉÕÍ«ùµëȸÝJ8²1ä‡墯H¥Am@ýèßÿþ÷Ó“O>i@øg>ó™® @§ ˜èwRÒ¡íÿôÚWýÈ åNüQ¿‹ä/õÚÒ‘yùWÍ-*'¿‘?ò…”�A@D.ÍI qB]8Õ…"‘QHÞBRê‘'çÑt¼ ÔUÄêJÜo…¾ Nü&•Ža.iBùóN™8Fä4úýEs ’ÇœòÄO¤‡~Ø”+Dü‘A‰~­6PˆÚ™<¯—ߘ?;ŒYêÍyŒoòåÚR{!q<aaø¬¹ŽkrõŒ:£|Âwô'ú‰î«B†på’Ñ”¼Ô÷tM,EX¹zîÅth}ÕfðZì‡ÈóÌE2èõžM½Á?¾ÏÓÏŸâœÛƒýçÎÐZŒ¢‚lÝ�‘¨Äu¿|õZúÔg;½‰&â߯\óû<Oó4OVŠsÐì\s£yêFóÏäÿåOÿ&ýÿî[\Dà*æ#Û× ®Œàk57.t ´EO—×ïÀÈüYïèInÏNÕ 50¿|ëeÍ;¹òø@Èpép„Á]F~´ï@ŠÖîù<(ÏæÚŸØ3P»�ÑIûÓÊcÇÛs½tÏ­ë4­hà{¸><ƒå Ü{3÷í§ç’¯©‚„¼µ¹@³Ôµ­I…ô¢õU*èm /A}E:§ÝXsã nRíMÈ}К…­<×|Ô¯}Rw|Júo ÷æ`â¸ÜÏi¯m’aEªq²qêC9Ôeí]w`u’`Üäê×u.I{ÆØ·Õ;`Ý€Å)=úzïÿ}#¼lm9ÁøÈ‘cFÀˆ€°í&ã©ú]N·}õ{w¯ª~ÌYH“ &ž8\§ÛŽâØPˆ8ùg” ðÞ6¥‡üa[Nœ<’î¸õxºó®[|o�£ãúĸNE0îä$§b3 k£¢Ñú¾þÍ3×Ò³/¼•žåb:‘pc_Sïgú¶Æ§úëbˆ½‚Iê^ÕY¡\, @ÓLí½cÞõŒú€®m)„ùˆÀºö½gZFI‘HÑí)S!QbLÑeß¡ÌÔ¥ kÇŽœ``o¾Ÿƒ>Ì¡«ê4Ý¡ûXíÞðÉH´/yÇІ*w7–ý¢ú™•‘v9`^V¹9NC¡BÔ§µ×ªC"Th¦þ,Ç#Õ1*lŸq¿˜’?+fC­è¸Á@j“T—9—ñÐç$©›R7éÊDš7#‘Aeˆc±íÂ8…ðEId£jª¿¨~*¯æËÏ/2¥2òfصy¼§–ï°ìC›Ûü)RM(ƒÙñÚdó$`¾H*ÏlR]¥°á6Ñ+½Î¯×šíÊÈ=ƒÅ$%)ÒâÒ‚={|ܿȶ÷æ„LçÏ}ÝÏ2ŸëÁX‰lÙ‡©Q›Ùw­‡@ªŒHR•¹‰{æ$ Ô’DäK©WI²þšÜƹ`äµ<ÖÒ~¹ßÞÞEŒ˜2ñv´"5&óák‡¢‚SW=1ŇƒB†Õri` ­¤½ ´Él›LëI“öü÷YŸg­Oxø¬º˜¿‡¦ÄZBC2¢üù:ky\ÿ«ß»/<v8-¯,Y˜ˆšNªLÙ ¢ªŒ¿ÏíVúeÛ æižæižn¶d*×[›i¡k‘i§û&Ï—ÏgœêݳéØÑcéd¶é›Â\]w(ôAµ†ÿ=Ùi£I:wöÝôîùs†i¯­¿l¿^lÕlžïC¶`’÷îçs¾(A?yÂòÍ…íY ­´ ê”ÚHoÇ{ùåŠl¬÷v·ò³¢FÆ™2Æ vöê™wÓË?{%ÝwâxÆto7rëÊÒr-¯›ráîâj. m­`˜P¶mŒë…×®÷ýsYϼóN:qËÉtË­·±‘L ÍwãªܾuYãÞýÈg¿‘üÖ\-ï“™W[Þ›ðjÃûì+Ýàó{½Ïþ}}5Þ'Ý4‹¼1‚`$o6ŽR{`‘φN„ ël4éH÷Ýw_'/à Àc¢ÇÀ%ê ³ }…Ä�0lاÍ!YÊÂÂ@€p�2‘8À|z0¿5p@2›$ÊÅñ�~|G½Äç:òœæÅ5y5E¾ÿÖÛïȈÚL 0P xã×ÓKW^MÏÝóÓ´°7Lì<’¾rê«éÔñ»ÓêÊFaIûB ëÅ—_²k ª!œv¡œ\ƒ…<`)íHù”Ò*ñ>ýõ×móJ>�׿ó;¿ÓÕEm Pm,œÇ¯­­DJÙ±Ð'r2œ:uªó  p¬ûJâ\Ú˜÷hTá×"aø¦ÊUC('÷–{(懲œp]<åûŰ{ú(DIÄ©epÎÿñ[{}úÓŸN<ò°«”‘~HÛSwÊ÷ÜsÏYÞ䥶SÈò“÷½Œ!ôwÝ£Ù~ øŽ"eq¯¼e«#€2íè†Ð‘õSêªðüFøŽ¶— AÜ䣿BÛÄ eãxúëå&ù‘ �Ý·œÈDd&—c~ëÍwÒÙÓoÙýZÏ]äÜÓO¤s§ßNGþâLíêáÜÇs;ž¸#]üòï§úø­éTÎãî{îK‹ë+¶å Õ“ÍðÅËWì!yáâ…ÎèC](£ÂUШëŸüÉŸØ} ôÍo~ÓÇAnc¾ã© H1‡~'E õc^"ÿ0O©èKÜS© èXò¦Ïó7ä�À)·p}ÊË5y'ß3î5}…q¦6—ñ‡¶¥}ø›ÚÚWÊ&* Ç’cˆ²pßI\Wa1¤Ę€ˆÁ1‘4¡±Åœ@{HI†DÙè§ô)c‘Df¢Nä/% ’–p Úä»ßýnzôÑGÓoþæoZÛGc8}1+cíC¹v$L¸c“ü¹.d Ú‰¶‘µîs÷óþûï·6ˆmF9ÿœG¹„6ÖÜ­$r}žDÛ‰¨!ãuU8òå}ëÂËs‚ÅÇ,ý² &Ñ oöúñw•%öõyš§yš§_DŠD‰>ÿC“ÿ¿ûçÉ ®ªÚÍ™šë†&e™¦@è(·®ã”¤ÈF’bä 'üî0„=|]Âz­8¨\‰*…€Æ½=ÚÞ›wXHœ§Ö}ØŠÞÓ¶ø“$î÷Lš¼/o‘oÔHupY�IuëíÐNíSª¦Ê®¼#…õ‚«WH=£.`SãÞÅ]þ.¥nm[l„a}Š·.ä_›Õ¥ü"c´PÚï}’¦«{èËy½g¶dåUG’€4³¾ž_2ÐN{+€-­‹hoy¤;0¹Ð…~Ó}ŠyË6 ºÇû)’pßæÕ” ä'fV¥n^'oîõåËN¸ÝX?œ×äkHH1šöúp%J–÷¤"x¨¿[¿ªûp%:×�ô…&Ýsr1;Ä:Ò½°mŒU~fq¡ÎkæÃé®ÛoÉû¼f?´ž™gÒÔÚ"ËfÁ¢ïš§¶— !MtúÜÕôÔs§ÓÓÏŸN¯¿³¶¯mÛ¾p[cg–ð` }rÔþÞ®…VѽR=©m¶¼´ÒíC¢âƒÝŸzšLÑ“Šš®Ö!¹á4‚Ú‘|¯}u$p–ˆ?öÖÞ`¼>öœ`1(ê$ýzݯÁ^"†Ïø "¢›2Íx¿«Ó,БJq·w¶ºÐ…ŒO^\_J".è~H‘o–$¡òÌîqIqLDZ™#ªÌÌ’*¤¨©P°ÑÙá 2ÇÊGû]•Mט-Iý$¶§æP‹š“ÿÖ8æ<îûEÙž¢Š¤îÏ,0åÕ&qßÃ̆‰Ï±˜P a¾ŠuRûè%²ÅT?/*O³ýGÇÆ²Ūê¢3b$rÔWø,–ïeSwi7òaOë6‹¥Žh±Î ò©S²èxMMš";‰P¥:i¿ËX"D‹iwwj"S¹½­®†6}þõùhdªH}7.tíd¤#(Ž“H„‹ +± nçÄBŠŒ -™}©®—L©Ä/_YÝÒ`\Ö®ª""_j\m+·°«Õ°d)íŽ(U¶UÛzc4~-- ®¤Å¡‡fQ[—Da¼ì~%óå‹Ss‚ÅÇ,Í ó4Oó4O?_qâÄñð|šV½d]y&ã8?r4Ý‘qÏ¥Õ•Œ--v´“Rø œnœ˜‹ÁHÞxíu ‚ý~™|ózr)å@Ábá '*s>xé˯¾bø­ëkëS{ÉÙóTþö€ëª8\<ù㟤?ÿó¿HŸzø¡ô~ûwÒÑŒIÔC©g¦)‚­JëE}’D>`'¯õÞ|ãµ´·³kåÝÈë»Åå•>ߥ÷YRäµÈœ`qÀoÁ"ƒPG/y^Úô²Ø7õ† Þõ³®˜*mF8a©`Äè¨ @È9€¬€c½­9^ìÊŸcä­¬–6š�’€™ÑsCá�ly) ×f“˜/…Éçs]�Z]“r߯yüØ‘Ö7),~rþ©ôŸ¯ü§´5ÙNi-}öÂçÒ­+w䉨ÎùN·œ<n×ßÚÚNÎ_(aRV3ˆ|O†dsóZç/P_õÂàZm© <íÐÌdñ`“ó�%?ûÙÏÚyÜCŽS&)*ð=�¯B·pïµàä^(tHœ$¸\“þÛ˜ 3÷E¡KH´#e‰CªRIáëÉ[Ÿã8÷%&)ˆÐ¯¢Á˜<™ ¥F@ Añgög–×ïþîïXÏ÷"MÐvô ÊDÛÑf¨Ä6VŸ•§<Ç©¯I5ü%CJùè{G)‹B}(Ô×ç^Ðïê@„#Æ…®§M°Ôah#ýÆÌ}‘÷Š6‰ôUÆ mqòÖ“¦rùÂÅtmkÇ6§+ÃÕ´~äp6 ¡‚p6Ý’¯{Çùa‰W"È3»×Ò?ú»tî{™–Þy! 7Q„Éõ?yWZ¼ï3éÞ¯ýãtòÞRp•…v¸˜^ëŒÅ·<rôX®½?©}#�ãô«?üÃ?´¿ÿÑ?úG¦¸¥[¹ïôMB̨os®;2âèžÓ–ÿ韴¯ …’o¥¿?j"‘Dü¡Óe4æ|À)„è{óËýXóã‡kR7•ïEš Œ Ï¡± C‹Jôͯêà ‘‰ô;ƨ”<è2ÈP')ˆœD›Ñ.šCɇ2‰ô@ÙŒ ÈX±$êI‹d¦{ªöÕX×|«0C³ô_Ú"×$æ$H,ä!²†ÚžrrOøŽçŠÔCø1%‚×¥ÏО7ÈKc„ú‘u•â ‰{zî­§ÓÆÚÊœ`ñ1J¿ ƒI4¶Î~? ìÌ,æ÷zžæiž~ÑivÞÑw³sÎ{ý“ÿýÿô¶7qP½å h)°}0t‰lS Ã¥°Ì)'P.Œrg0fý�ºâkT^€â;;»ÝzeqѽÕñX­ QÚ¡ª€'ÕÔž.*b{˜´wå¡+´.ñú9‘Ae)EíÔ&"ˆçõ—víŸ÷„4€á¤Ó‘ƒ?ÜŒÞÎ*:«Œ—kÀ)m�r�Æ¬Ž¦”1qÀn  ­È£§¶#´“©‡[[RÏéÀF’6&]9\Á îQîÄ W(I¡mªë€>µ k.Wáh?è€àH`ÖùF^ð®|²p]?Üßß åê÷T^Ÿ¦ëK\ËT*Æ=‰'5î»Ã¹ Cåà7¢-J‡—,|'F@µR›W‘î»òŽ¡š#¶Ã”Õƒ°À%-å=þÝ·,§“G2xǘ*}¢r‹£G×Ó­·œHwßu[^«¯™'w·¯{Ò°Ý‹Ao+iKÒÝ<¾ž}ùÝô½'ßL?}áÝt1¯s–‘ãk£¸vá;í#D`ÐÞÞÀÕÚ•Z±‚Š€öß¾÷OFê‰û©q^Šà½ÚnŠ4и—¿Î‰¡nÔ_"Öè~Í*>¨|iFY!Çñ>jþÐ=UµHÌ�DžRn˜ôª±û$¿{NÚV¶-ߟ,Z;ŠÜï¯öùê÷"´Ç4»Çе£úB«Æ#."__{ë¨ I&ú¬¼H³D í¹4ÎÆ%ö±ñL™H.ðq:1cøl?’Ò¢lM<NRyŒ xïîx÷·H‘$•V tŒ ™@´hk 龨¸IN:ÒR}NhÌP}ÊúÐŒåÒ‹!ú•ýæÊ ׇ?Òý‘Ý®™4>Oœx§pºjwí±76Ö¦Úmss+çë–xÑò@¡”çʸ„¤’b…Ht£‘?Ë1ppB¡ÁR!. ðÓ6“Bžðó[#ôä¸ ˆ~÷jWè7#¯?ÏËÔLs¢’Æx¼ß)¨˜³ÙÄÃ…ZÄŸ3ÂNê^i„)W»ãPZì÷èµ7yÖ§Ðß(ÓÀÉŠ­«mLRîÛƒÛóqÙŽÙäßêwr.;y­ÛxS ¼se×å›ažÓ¿üÝ9Áâã–~ö‚yš§yš§›9‰‹]½'‹Nº½œí¥._ÉÒ¦©4Ź e¨õ ÙVº=Më„j›w›~mËšUs36zð©¥¼&:‚cw^·Ö ¨žÕa;­\—Ú°÷¡M%Š`„_YXtG_sò­ëΦߩq•=X çûâ4EÖúlí?þÇÿ˜÷pw§¯|õ+iu6*Šà´ÃBÚN×!iݨ5¡0’BǃÙð¢¬îÀÚ‡ïÓš1â¬þwšrðP¾rê&ߌ¡Î üö‘,¾÷½ï=ÎÍ£cFojm8�­�Í�ød”‘aà  MâÝóÎÆ‰ü��µ±"±VœçË›\‰ŽB^tpÞ#[ͤ’PV­€iútº&Pž¼èÔ€ù\?nú¾öÚkÝ@7yÃlä:zèp:tdÝ6W—'[é§o<™~0þQ Gé¡­‡Ò§ï4=´q6:lnævÈ/(wËbpÁȻӷߖ7HK¾àºmêÔ#äqM[È“›{B{Jv’:¬S_ÀHÚ™º!ýO;ðçÒ \î¤êï­ˆ)Ì ø¥Å¢çXôÚNa¸×´?ï’ëçþp÷�0Wê Ê[ "Ô—wýÆy�Ó”WÚ‚ã�§¹}…ߘ˜®«/}ç;ß±{P¹"†˜!É£ò‚6Ž”Ea&äÍaì²¢ÄB½èg¤¼ O{¾§LÜŽ9)’&x Ðç8•‡²œKýE}cåͯ>®>}ÚˆûAùè´A6»l§1Øž=ónzóõ7̸¼0t#±lð;¼~8 —ìxšÄ˜:sö\zýµ—{×j²ŸÖ^ýQZxö»¨9¥ý«—ÒÒ±“iÿž/¤ã¿þÒ;ç/¤áú‘têÁϤ£'ŽÚF\‰²ÐS¶oûÛV‡o|ãÖ.}h˜^þ”öd¬éÞr¾@$…õ‚ çÒG™cާ,ÄÕ«]`l¨¿èËñËýàv‘@áV¤ÈÀyô'®-um”ú°ŒSõá^~×ûùÓ§(£Ú"’Rè7Ì_ä-ò™æd=Ä2‡<è#"Ÿq.×¥ÜQr”s j07<ÿüóv ,•+†æPSH|¯¹˜º*NÛ×ÉXÜcyYi!À¸bŒ¾òÊ+]Yjˆ¶‰‹kÐ.ºoÄDž£®äÁ¹ “¤E H,”?Žq~SÈ)Ý uúÙ9Áâc–~“h¬~¿²Ìïí<ÍÓ<ý²ÒûÍ9ÀJÁâÿ"Å-e?§öùtë í•[Åk¯§ÎuuËÄŒ%mãêzþúÜ,oãAâ‡S@¦}y~¾–Ÿß”àÀÛå¡…R`>—G:À‡.ñÄõ³Þ¯³`eXãσÑTÛøõ=þ{Ƶ/’‰·Oÿ|ׂõ€>“.@ªÌhcDz~ÅP•z»jTn?¶¿F/½/¹{7’L áÅÏCÑ‚6Ä•L¼¦"͈ AÍ~ý#‰÷qGªp 4M³4ŠHl_ÿˆ|QÀ¾ïS“IïïïuQgHåš©`£Š¥—¹ØcL©ºÎC_�¯ÝÓ¢Pâ䕱5²B:Îׄ:Ýîˆÿ®V8íý?ë_W=èìïêà1gkìÚÃǬ,Ò·/§ÕÊÁËœÞÒÇŽJ·Ýr<ï/`aÄ BT@ ¹zoOÆÉÄÂã\½¶›Þ|ûRzòÙ3ééϦmܱQ\¹íËÂì¤4µg$IõP„)ÕEíg/ ’ºýPT’ÃÇé²õ¹vq<º® zÂÓàº>m Íøú{ÞA} ÷ ÆÅ¨Ø�y¦`ì·S÷´îU[¦Âƒøêc”¹ˆÔ‘>RQ”€$5öñõHR‘â�Ia>5&5GMÏMu׿³™˜·õ×ÜÏYãÆ{«úq­xÿ•…Ôß"ÇÌ*ÎÄû£~éùTSûÉYµ]¿»ïFðØŸ"ÄüIÚGj~““Œ¼+Õfqï•Xbþ±Í5ÿÌ~7›”w$Sèžõm' ‡ý<¡þ.rÊ m… îý³Ê ÷Øêâý�ÈX ª»>ëeλ׌䰺ºÞõ¹&E˜Ö}¿ò]Nä‹Ä&ÝÿÒ댴h{á¤çœå’Æá¤ d½¨ôQ€blÏM#jÔƒwmÄ7µ6Õ×qÞw%"…¡2ºJSfdJKôZlE³od‹¡Í±Ù&9ÉvÕbzb„Ö OPͱµË$ÛÇÔõ¶|­E3zOÆgó1»i°T[yp2j'"¿`Ÿ84ò1Ls‚Å<ÍÓ<ÍÓÏ—äH®tžœ” Ñ?×ëŽX_k=Äêhk`îM×Ûôv µžðÍ._{•|J~Å_ÁËWæyÏ«äï™Û¼¾‹GþÇsz¡à(ÚSªzUª‚yƒÌšr-_Ÿh­¤çˆ)xd …nÈ=üPÁ ÊšÈó‹kç˜bÄvPþ´¿µq^Oà,`ûìzxàzÁ› 90ïøNiçüÿñMA°¦›$ØŠ]Ä ¤p€(É{�1ŠãÉF OæíbDã¥ÐòjCÀ;L†?RÇ�xã{~Œ£r žþR@Ú$A3  (Èß�ë.Iòò¦Ó ¥êäõ¤®ÁæãÒ¥ËT½6Ö7Ò­·ß–Ž:œ._¹”6¯n¥+Û›éíóï¤ÍúZz~ù…ôns&­¦/Ž¿™~ý×¾––P|Èùµ+É *—/.¥·öFÖ“ T`¤x÷Ò9cnÞpOû…Å¡Mt´À õ)‚Ï´«BhĤ LÖ‚z~Í>òù€©R} m©¿T,È›ë?ßs/¹_´�J® ­û)â e‹Ê RlÒ‰¼Öe, ±øµå~�úò= )dƒ*�ZäêJ™(õ•'}‰{νöÙgÓã?nõúêW¿já8†k+†,yÐoÔÎ 4ù|¬“?ä �dmÀi?©´P_’Úˆóä]"#õâ;=\æC!Eë’ëJq€s!èÞÒæjÈ"©M9†º.æ‰z¸¸`›<óÈ›‹!RµG¥Ã‡6ÒöNäóôêå+yÖ˜ÇÍáCëéÿ`ïOƒ-»ÎóLðÛçœ;åÍ›r@Ì31p'‘’H ¦dY’ÛRË%‡dµºÂÑŽîptýstEô?ÿrý¬v9ªÃ®Rý(©J¶¤²EÉ(‘)�8‚ æyH$Èy¸Óvíg}ë]ûÛ;/@"!0yâàä={ï5¯µ×úÞw½ß…óvòÔ‰¦ÚáC¨Òìµ…Oüt³‘o^2O|ÓN<þ°ÕOÜgÓ—³Wþ¢Vw[}ývaó¤-\»®8”$ž†‹Ë6ÞÚLÒµ÷ß"ôüýŸýû¶Ùü†‘ýüsϧ ê*Æ»&ß"dáoú¶ÛnKíB™èkî¡?¨ž©?¾µˆ;½¸ùº…ì!ò‚ú }€k´-}—k´±®  §NEš NuDö">¹²!>â‘{âQ»Š|&Bˆ8äUn^t~µ^�‰åt$"DHmE$õqÒTÿ–ÁŠñÑ…ë÷Þ{oú¨,Râ ¯Ë] Aî~Ô7¥HB=ˆd¥BÌ]Ì7ü[îOÈådlòJR4‘uDYgYJ–¸ß,ð”&e¥½UGħú§NxžrŠTB<äGDÆæ©Ó¯>fóðô.郔ÑÀøV‰o-´ ûy˜‡y˜‡~èÏ3}²ÅN›ó7#Y8WbfÚ‡ä€cƒ>s@mšŒYÝž°ec_Nª2¸Æ»ƒ´Søfµ,H�.?06øÚºNkÍYåÒIbËä‹&ÞÝÍ;šÓ·[[ ¯^Xp™Ñ F€°A•?Öuƒî;PãJQq‚ “'îvdબt"ƒ€²:­‡ ¾NpPFF›H'‰ð>›µÀâžeå‡*äMZþ *åf3+†þáÀ <^žYüT:8%Å.¬�§–Õ/äa•µ”dãYÓãÆAdܦ ØJ§”«Ö]‹¾•îx<1W·˜f…ŠY)\7»êD Àz¼®Eð¨*?­2ú©ü¶#Öu4 Õ%σ\/Ú Tóv‘A¬*„þÖ4pZAv³’H&æ}Íï_Líä©/¦ëëë›Ï…bkðô‡…˜ÍÉçÖ8•O0Õ³œçÊdÈ ¦>§ï²ú löõ3{ä¥ »ñÈ¢í[elЇ¼°8N 9}× j¸õX_ß¶‹Ízxý¶½~zÝž{é”=õÂ);vœ59þi¶;z}2hHž¶ÆÛåÄ;Á]Œ;ªÚÈ•Kê/ŒÑL¾'8»àÉî$ا$Â@³_›¦C(+Éø—@Û*‚†éÿ™dÒ;a–㇈TådÚ§©M¥Xéñù|‘Ôq¬ ÜŠ"ð2ïÉûlÖ!Dð=’.vRœq2Ž»ÏQ[zÚ>ž¶ÇNa¬%jŒK"±ýuÌþI.f©GÙ?è?ùDJWµw'ÌÄí×¼¶Š+®$—$…ì0këb}¬Êí$r ÷EâM$Ö˜Y õŠª[ŒßÓYT²2·¤öIy÷y{<er‘Øðú–;™YþwU€ÿx(‹}!ýŽzLý"Рu‰QÚ“FµÇ~ûŠL"C\ÿGÕ‹Ô?r½8yÂçÇH&I#pPßàJÇÓžvˆª—4§SçÍØ÷÷JÝ9à%{¨öôúVßPÞ¢ ŠîcœnoíJsÄÆæzšç f,fÛ TYW«!³[*\*EIKÀ¡^Ûôý]dí^&·á¬¶ðž•[¬ŠaÃü^š9žQ7c¹±w.¬d·,™Ð·=8™Q*O'é */ kºQ³A=÷%Ãj!÷yg¬dF>F‡”aÁßGS÷£>ÎÄËY=¶ôj™½ÐĈ‹k›‘ŽØ‘M¶Î7×.4ÏÏ|®JaºÏÃ<ÌÃ<ÌÃå°™ïi0¡:Û XO€3²ãš“FE‰HÒífgY±±ž¹›°Y^ǰ®¶@¼Z¿Q¼éï¬qéïôY‡dê*˜³äbƒ<ŸÜöÃä‡ÊÊc i=—Ö$Ú' òús¨õî4çÓm&³i«PIžÁ Wp˜÷Ç~ôÇ’"á0­y‡­zGå„yBÜ#j Uê´–ÓtÒ�ƒ”×)Pj]×áâ"h½ÕÒ[²/ëKâ•ûË!\6 À͸€IB ŒAg;‚�5¹AH2³0$è$º˜ör Á0S§žÔp’–ÜV�ÊAêKù!À V”6È›€5ÊĽt|¢—©7÷»{ŽÆ°µ{]{Õ[\Ý•Ül@ßÕÕ{áÜ–}õ¨=²õ˜U“Ýtæf»iíz»úÀµÍfg+D¡ ÔÝ ¸¯½òš4�:jCùâ™Ói`P‡ü͇ɇò‰ˆ@݉�0 -2÷PÒ‘Ò,å7È&øÀRÙ =PW>ø`Š—A ¸Lþ¨NÇÓù´³H¸oñC†’èjC$Ú•z–‚ÆA©•oÜKÉ/y8J /”U.i´ ”»ââÛåc]Qã±Ç³‡~8DpC‘ PMÿYH›YÊ£|�ä’Oß*+¤ò¦@º¤Cºªs‚´áÕ5î“"‡ŒšôèרˆˆˆóIyi_‚ˆHžhχú£mHŸö¢Mè³ôeÊ}#“ÚäÀCi ɰ 5ÒM u“¶N:Ñ/äc £�²P×½÷öïº[ìÔÌÎ<û¼ÙÉ£vøÅoÚÆùÓvæÏÿw;ËÜý¶{ï6Ùµ=öÚ){ò™çíÚ믳_þå_NåÅܵµµd.ÏŸ=“ÒÜlÊnµ¿@örƒA:1ç'­(›ú7÷P.¾é?ôg&¨kž¥¨S¹o¡¾©_o¢" ø£Š‰úŠTC$£¥úŒä÷)îù¡¿èe)ré’'ùå¹BÒ‰“:�äW*´£ˆ3ä4i'òË<ÇïÄ%¥ ú½ž•;%¹Äa‘ÀØ _¨Và¢EŠ)’•¥Œr["Rƒd…É«Üyð!^ÊÂorƒC¢NU^1)NЧdÔ&ÿäÈÌ/¤E_}衇ҽrCþ(7õÄø¤¾!MHõBe%ÿ2\é=@ºŒm:ç'I~8C'ãw ý“pó0ó0ßÏПg¾Ýß„oGþ Uò¯žôòa gw’‘ oâ¸<u2ª õv š�z�`‡¼ÃÛ;«IT—œú¯3ùÀ“‘Yvé`¶”Œ8› ( ‡›‚aö©>¸äÿ¬@,@³*)Úú©6ùwÏõ"p–“®ñp„ªèË@z€ZÀLÇsZ Ñ:_0÷�JÍš¸gY Û‡ °ñg\y£1¨$Ñ÷/ò€�i´1¤ŒBHw’ÄÔ,¸MqW+‹y-µžê¯®w5u_›Ü´'fSiâWרP)¥ÚEûŠ¢Ô]™¤M]¥bÛÅó3È$…é ‹ƒŒ­­g A¦ªJúNÆPÞZ²†òl4u¢ÇVJR'†“;™"Ò©ð&})>&@4íö&EˆÍ´ßJ„ …Æ(¦±@ÿŸdòYPWXˆîA&ÅHéðf÷� žVöü+S[]ÛÕW.ÙýÍZ”z¤O6ßgÏ56õfÿ³1¶³ç×;Â9{þ%ÈãçlkìÃÊ5v›ú«’Â…™ƒ‘Œµtú<Ÿ€§¾[BÅ u\mr)i&ÖºD°Ò_0òß í=ï‰$A;4åÁ2FȤþÙì;è'é“ÝÔX-Š uÝQQÝ%).`F¹Íë:�Ó­»•tš}Ô>—âN§ÇBËN* ê7ê'8¾OÖ ß©ä¼H¹Î•mt$Z'ÔÔænîO¶K?!4åìIØŸQ`¤À0hçÚLJ’ºĈ­­Íœçv¬ÉííOI»£Ø2µ’ïa—)_ƒîÉ6Õ“ê=*›Dµ!æ©)zF­ÌEÕpÀt1·Raü$c!e5À¹UEIÈóàæfïUž«†nÈ6.wW³m[ËÛiY\Õ­Z‰Ê#¥‘aÝîá#¥ôÃAë¤î¶Ú÷U®‚,k턈"V·J"’³Ü?˜‹’K wA¤6á^‘("éIAv:^+ý±§Úû¹NjÆ|CˆZ[ÜgÛÙÎÀ)N>Ä›ì™\£PÞwaÌD‚J›v<‰Yßä31Ëz¡ô<ñ·csPÞCþ¾ÅI&Ûä9h £°•H-°Âz€¹‰ù=‘.+µaU€S[Ò?§¸)1½»§þâÈ@®F F6wŒ¦i}dv´iÇf-3[ó“pÓ]MÛ®77l4n$bÜ|8ó0ó0—khÁûYÁFXÿ±CÁVïë¿ãzD'²‚v}Y‡ƒU°žgŒá7²É&AH£¬ßÒÒÂרV¼üÊÑtï¾ýûÜí}Pç‡-üÙ:è¨êY'ÿ:d÷®O>ù¤}ö³ŸM¸øG?úQ[ÙÕB:uQíÇð·öN’n•ñ©° )“GîHªPþúu®}ÿÖsþæ «TÇ/‡pÙ, ÑùÞI…@>î#aB`>¿¸ü2(ù( Ø(&¼ÄG'“ä½:†dñ•&ù1ƒkS"@БÉ�@”xµ©%M哎Ƚ¤0è¦ ¥Üp €.…¦3¯¬îN2qç7ãB“.¾JOoœ²—N¼`l~ÕŽOÙÞ¥=vÏâ=ö®+¯³@ßÍ©½pÚOq“w”ü[ª’,¥¬ä ´)¯ØìòË#iSòOy£›¹½ào·rËÁo�œ”“òê;y0 èÊ@üò—¿œâ'Ò¥þ  P/RiRÏüÍbm'X�7ÏB" ]⦬jÊËs®œJÝòj³«Íž €¸)›ÚRÊ_ÿú× ™ä#ùHJûÕ¥\""ñÓÄEœªÊ ðZn?tºDÀºòB"˜ÖKƒß¨‘ lù•q7úYrß­K ô–‚ò£¼È½×¥¨Aû‘¦Tâ Ãt£b¢$ «M9âA&’€ýÚqÃ&|ÝmwÙ¾=°åÁ/%U—ññmöèvúø+væ[÷%õ—õ…}v]3Äîzײ­Ÿ=Õ¤7´•åU[¡¯ìmæ‡ÆHtáÜÙt‰K@€Í­ ;úò+Yía)ÈÀ ¨vcn¡mÕä³T¹Ò©‘IT.Úœú¡=T6®Ó‡xV§DÄaLñÍ"]êQ¤ ©ëð7uIˉÆßêß”gtúˆ¶ÑxVº<C_å^þ‰€<Êð¤ùTäòǘ¤lo´%s°\‘°P€LtÏ=÷”rŸæ{ܘsä*…|G7 šWU|DQ¢\Z<ÐäWLä1D2Ф8Q9iŽòQŸÔsAý€rqŠÐD^ R¡]”ꞿվ85ó0ó0óðƒªªkôh¥Â[°pb2¹ŒŠÀÙ #dˆ®eŒÐÉÝФïañäž`š@³º(4¬¬8¡0Qû<ò4ËJíú¿ÍŸ"oyþ»$ ¿ÏÝbx9t:ÛÀó5-@ŸNºxù©~WX0ù‡—²Â p®=±âéÖxÞÎí‘}Õ¦µ¾ã•®f1½ül!ÌäÅÉ¿´Ñ,­¡Í–øÉ‚:sõ…Î {îçÕ¹òé`ªŸÐ¦N$q.ðØóâùkÁ®a®›*ŸHöÍ"IÄÓÏíó“ 9ëšr-кq±r_¼7’"EÒ™M½_$usB‚Y{"Þp“Ñ ‡‘ƒÓ›é¤7`ê%V<ïÃ.Áĺ¸fÔI!Ó^hË�évB! /4ù86³óë•:×ì•Ϙ=}”ƒÛöÚ‰óvüD³¯Þ˜¸kRÍðqÈ6y_HÀñ +Îl—“ïê7ênñz$¿£âYJ)Þo Ä£çZéÜ*ƒÞ®z zÐ^XDkí¸Oÿ«~Ú~Ö`³bŽæ™h˜ŒýffÝùGª2^ÆyIõÞÊ¿wBUÕ铱ýbߊsG:íaj8ê|Õד*N2·õŽ@"÷„>+ÕÙ*QC6ã­l7XqÕkÕF4ˆ$C?]]ÝÝ!=H=!¤l ¬®a¹Ý†yœ¦>3qÅœi&šUƒV9¢o Vú±Ÿ ø§ýš¿0æf²È5© ¼‘ŠÁ×Õ}p 3Nd ñ4¼}¬ô;É3»[©ª¨úaˆõ¤è!Swo3Ìsù´Óž±ãÜ£rÊΘò^YGBõ‘3ªtÑO5μ_´}«.ªz×d4 C Qe4Ž å'Öy¼¦¼µs»·=Ä yĬØndËÙÚöùBö¤èòw2ŠW}¢ßcžvRž‰õÇ¥~WþõÛ´yŸ™¸Ž«RÅwƳƒ4Vúfz/g¢D"Ÿ™»‰ª2†ƒ£ëéBVu"+f÷ìä$—\ÓÊ]” ±¿·Yu®‰«±±Öûl8CÁ¢Ïzr;2mÚ·°ž‡y˜‡y˜‡yøÁ ØÙOœx=½“Û±f!\œ.î§û¤æBÜ—kÝ/â,kpá¬o¤†¡Ð')ÄõžÖXÂEÀ�¸Žý¿Ÿß7ËsŸ°+2:eàÒæ[o½5ÕÉNyßúw¬‡¨¸!"-؆ÒãèMÞ(ÿqïÒß/KEúÐ!ðË!\6 IÜ ”f±.BAm ©ÓátrÀ6�P±‡ TÉÞbªÃHI@›x:÷®±Y >î É5:½N Èo#�@³@oÆÜd8KëÊ&ߢŠ[�?ÀÝJ“6’ð•WÎ6‹óÆ`²0µ‡†ß°“çpr´nw.Ümw^q§]³ïj[]\K ›QëØ«¯¤4õ¤!e ÒA„<RV&5Ò$)×'’øÀʽ€ùrk¡ ·¤KœÚððÍ3¤ç>h¬˜§Ž Rxúé§“õNê”;÷“.¿Q‡Lf:±.rM”¤!¿Ú´Çú¦Í(«Ü7PV±"Fˆ„!²‡>ô€TîÇ%ò=ÄËix@dmdÕޒוr†TPøM@®NèS×Ô#i¨ß‹è —Oti@Yäç)Ê(É MýDr„Œ.”—tEâËÚQíâ®jœx"ƒõ,w&"§¨¾ù¨O‹8B¹¨;‘=¤F  ¿“â´&>)¸h¬ËEÊvÞ´¯íÙm{öñiú|µ`GšæìºkìÂm÷س÷É^<;µ¯šØ‹ 6={Úê/ý{µ1R­ïmÆÕ•7Zu˽¶Ý-Nœ=cË +väÊ«l ‘¦¯n6•ɸ™gÆíõ“'Òé%ÂúúFj ú¥@vÊ%u ¹ ’êrÑODR’|«TlDxâß"BQn¹¥!ð»Dt¢~Dšì•SѵˆHVôòG=ò7ý™oîU»ª¯GU©ìÈ@•x GqŸ[Ro¡EDÆ2ä#Æ…ˆG”IýJ¤*î•rå©Cã”y„rR7ô#¹Dáy‘Þt"G÷2®IyMªzW0vµ°Ò¼!e$~£ì"0Q7”1'b uÆ8•%¥¡²P¿üF~4~H›0'XÌÃ<ÌÃ<ÌÃåt2?‚"ñT¬¯å¤dÐÞï–Lá`»ÈÈöûÂ)îA&H¢U7b„Ÿþp€ÌIU^]ÌëçQ9!>Ì@ZLr\uÝæ¹®»'tOÁ€ãx9Ç%ϪíT~w­Ñ%  2@’-´>ZÛÓÆu!D 3@WU ’k’ µ¡Êeq`Õ÷y­z3/k$™ð ÊHŸ&W+ÍšÐÜÝy´'н ¤h°PÜDÄÓë~ï$©T¤»YJ5‘*<磌,¬;à™ö@ V}Eéỷ’þíiïiPô¼´`žN ©ÿ¦g’âD®“²·ðÖ2m¹�E‡#ˆ=4¯·ååÚÉ=YId’ÝLëI’¥÷¼z›ÇúSÞŠ:‚I fè®lÆð­omû4î@càs§‹bBú¢ÒMü–]àŽÒäy+÷¯Ét–Ód Ø÷¶­+—a!µ¸¯U‘ñz&Y[µw ¢fw€ZU‰T‹aœèoùfN.Mó‡xòJÆ¿ÐÖÓ6?1è¥Ùª ÈÍ€\ :}"“¢’ÈNÀt”ëd²¾=ÂÝÆ°ÚÌuœ¨¯Ê™÷|Ê>µqå°Úr©)&’½b¼"‘O&¾Ot¥½­bÏñN¨X̪ q¬*ß­òŒuƇ×{VM@=f:NeЂû'ùrNõbÓRöhÈÕ{@sµÆsiSê8+àÈ_µå†VԄ꺨X‚YÅÇÕdZò‘Ü2•´3¹(NDwÉ´gmO/n÷Ú(.W ©õn ã®ö£¼Ç¾ÛFÏhžŽsŠþݪò8Ù)‰!ä4bü‰|ÁpÓݹŒ“+InÇö@PGñ³y+Ε±ÏÆwZ$ ż«ÏI5RöFö×ê‹nšÜ<EÅ ÅÇü$Db:„in¼8ÅÃQz·ÅrFÀ ÝgJ;(ÆäþU…mzRÛA&e$¿#Ó¼ne~T£¤’“ú~YÔÙ¥ÙÐ-R}MÜ5J3±¯íæo”rO6swc;™6¶Éú@S‡gæüŠy˜‡y˜‡y¸,ƒX>“öFØõ±Á ÓŠD‚7"*h ÑßÃñ^×Al<ãkÉÞݽ»H¼q½D ƒ}k©¹ë èå;®ñbœq=%r¸ ŠÚwÝuW:´-Eïâí“¢M¡Ÿ®j¤ªqÃ~¼qÏÔÏsN�câ7H!þA— ÁEÉ€w€’§AE�`á®Sßê@tLùòõ (Iw�4@/?¹´Uq¤â�QCRjl´8yN| ‘µ 1Ñ5Y`>’<P‹ÕM¾I—¿U^ ,Â7šß_?ùš=úÒãöÈà1;½pÚ\¼Ân¼Ûn=p‡]¿vƒ­.í*§iê-ßÉm êA�(À"y¤Ô!Ê’÷'ÿ\S>¹Ni“Åõ>;ž 8×eIWå"]µÈ#Ô#ióo€W‘$ûÏ5NŸ?þøã©=¨´”?DüФÃß"Ä4†•EÜý‰—þ"ÿK|óœÜÈ­ $J¨›DxÉ2‘»+�])/.P¤ÜA¡¼:9OºÔ;Ï¡ª!ðX'‚¤D@=‹!—"¥¨]ø›<RúåyHî?Ô×D¢ˆRKQ2È-JÇi|PfÕ+ù‰..hcú÷Éý}™ûEàˆîw¨›]ÉïõfQˆ®H“òÓ®É-Hv£ ¾«$}1ùêÚ»§‰×-G›tWm¹ÉÛž¦®Æ‘ö‘Gš1òä3vàÎÛUï{¿í[[µz£Ú_xÜN=ù-;öüó¶ú­oXõ•¿6[\¶­µ&½ënµa“GŒ{œZ\^LrÛÛ+¶½9¶WOŸ·•UW¶!¯RžBu$uêœñKyU.ê˜þÄ8§Þø:�À§¿Ê�"<Ô›62bI6K -ú õ¢6“šÚŠ~"ãÓ˜å΄ ¢íȘãßR{!/:…"’íOŸ"PÒVŸÒœÁs¤I¹!Aº÷Þ{S_ˆ*rEy‰“x¨;ž—º…Òå~`sg‡S2àÐRÐ|§¹Hóšâ‘â÷Ë ×È‹>¨#âR§”?ˆKïÊHùrôB!)EwDbw¾úÂ\ösæaæa.Ï7úÑÿ'Aû@¦……®;\[…0nU\š{8lOVËíÀ®�n¶œ¦ya’%õÈ 'ð›µÞ¶“ EF†@ ¼¦}U2~xÞZÃC4ÆŒsþZŒ”“¬! Nê 2LHa#×Z¤¥ðЂp—*+„ #ÛÛc³â–cPêJ÷¹ÊŠ{�/‡ƒJÆýžI™#¸¯:ˆ.NÔ^¾¶™MŠ{mÕÐK å¡UD¨J»:é¢D³ÃB4éª^Ô…P/õƒh´"D`Rëb„ö>Öó½›÷ºñžT7¨4 r¿òzUz›¶�¼òϵÑ`”üåjßêò‹‰¬¢ 'gù´>ÿn|OOöý2ËH(¿¼©_«tòÝAï¶?ÈÕŽe5„:~–ÚQnHpѓݡ»ï‘òAUYè^¥Ô¾R²ðñ8Îõî@¸úKì¿Þ§ÜO±ˆk&“VUAee®ƒ"r·ÈuÆklç>軕RP5¨ÃI®RÞ|ÜÕõ WhãóY4Ðê^=ß’¿ªbïéçO}Ò¥2œ ÁFû¿D<²AéoÛ¨‰4¸"Ecgœ{ÝÝÆ$µ¿ö¥¯hSW¤\*ªÊs1.ç,e…ÚºJ!"Éc“æ?ËsS$Ìj¶îTÆ8¶s[ t×µæ@Ï×ç°ÍGíJ%¥äwù†¶¡_Í$M`"3´êC‘x05óÅ¥D:LÆG¡4Ïõ]U¨oE"ƒB_ù%¶—Þ‘"Ì2Y.ÕTwu!.BÎrwDq¬ÖÉE”÷hÖ{U*+šÛ#‰± 1žNŒFôøoõÍ?qN%Èlª²/ñIJ™´]ÝýûcB¿Ì:„«ÎülÖ©÷¾BM•]ÜtÚt(RN•}žëÝî.rtOÊ—uO‚¨ksÒgÊ|f`$RQ"§aC"W£ôI®±fc'XTS'�™+ϤÌ'2¥çc:öwÑö˜z:ÕDÍ»tÍ«šÍÃ<ÌÃ<ÌÃ<\޵ÊáÇþ#ì*îÅ}"AŸœÚ'-°ÎÐáe0�ð‚èê­¿–؉¸±S¼Â-À^tS‡Í[Bù¥ä‡~~ -9·ý¼ˆ©¸,ßûÞgûØÇ:ûéêäýë~0ö à`7oD¬Ø©ÞûykF)ΓWܯº\ÂeC°�(&°Ø¤#�ª´¸§ss ¨Åu©B�ÊÑȸ_Š î²%€‹GÛ´Qè7G„ènƒÉ@¤�f&-®‘6€(e`�*]mD¼’6@³:°˜[ dÎ>h_¿xܾ¸õ%{qõÛ®ÏÛÇícvÍÕï²åéj³ŸØËG_²•f£¼wm¿Ø€~ 89iò¯t#Mº"<oÊHš:N1@›s±¿¸ð“zx¾«u’^JR]�ìÕinÅ!RIÔpyÔ §Þør_@˜pI“v…|ÃäC[2ˆ%õ#Ù~'¯’¾ ¢…H”tÉ·6¹’d2vãCKŠ‘ 1ßD¢øô§?ÊÄ$x÷Ýw§8ÝØä�·ÒÕÉyÊèJ¼ªg¹¡�îi ò% ä )LPÿ" >jR™¿R©#�úJU@.U$¹$�Xd âãy^@:åÂ䮲rŸT3è¯")iŒHEkŒýN#.½<,ã‚:’Ô 5ù#©ÕÜæ#Wä‰4I{ÔÁÒ&ÿÁ¸>9ú²½Ü—ŸzæY;öêkvå‘CöÑý¸]ÕŒNÚ5ÛV›ÜònÛuÏGlñè+vü‰ÇlëÌ1[|é [}êk6yúËvì+b/ßöA[<|¼õ.[9xµ½Ôܻތ§µ=kvíuפvT?&ï´¯6íÔßr§!Ù\Í1Ô mÉó”WÄ/êNuÌýÄ#…ž+RÊ=JWF©[@Ž’Ÿ2¹4"nê”t¹O$Æ‹&äÂDs:¦/h 1öH“ù"¶¹oÔ¯D^Ðx…|ôðç{¨òNÿÛS§Îd¤a\ð{t«C¾EÖq†º!N)§¨Ÿh¼s?åv0cT\¨®NôÈý eáyÚ„zà7ù-Žã:ÓÜ&RŒHuRa>Ä ŠÞ<C=2ŸÑF’I%ó0ó0ó0—c˜äõŠÞ… " »à¨#ç-"…«%8QÀ`d˜d5 {¾Gsp¶*d@j Z7y^ü~v”žw wç’Û8’ët éx):8#Ét‘@Z¢‚Cºfyð“Z9öÚZe‚îé~¤Ûµ‘בƒ1×0)ª°¦wPšO«$Qg’‰×³“9üwÀÛÓØÓ x’ÇSÞÓ²Æ2‹§‡Üöý²×Ïòò‚µ„™KU\íBÐm•êV{EººÒî"BøoN<©FýBä~ÐF=`\kbíÁ )aØ­gõ�éhs8™NÖ7õ7ñ„¼åvU[ˆàÁéd“!ÊP䃾oH.2z<9›€î]+»œX3ðÓ÷É% §Ôë± �T>»'ÍëîÕdÎc£öSð‰¸0”ÒGcç�øÜjúûÖ¦Ÿªžù¸KÀëBî­,äø[uú ªãqKdh 3UG Ôt%¹sY¤J„ ÙZD¤PhIÓ„+n)m,\‘u7ãU¤­±õŒúü$+¡ ³{—¾0ô¬È ôƒAþ»oŒŒÀt`VYÈ[4vª¿s0¦Á^S/Œ–Š:Èl&ÂCK¸h ®nк·¸¢EÕ*øD×%: áý’\#Ñ766S=ˈ«üñï2æIÁVj«ÃœêùkÛgTD� R$…æ˜ì*F ·ÆµòÉj3ʶ½íå D¾q{–I‘°Ú'ÞPº`Š#:}Ê]Suç'l ±¯mŸqé«‹é>à›÷˜\©j<Ў̃٠3N#ÑD¤­HX(õ]¾ f�ÆRê·ãô~R»ªOázhq—· 9ý>¦|)~A½O"Ù#ö—8.4&f³®Ìtìç‘‘îÄrÍÂb9}•EdT¿kç“.Q¢Ÿ÷Ø?£ÒE¬Ð» ?žã<âªZB‡æ¨â:75ÓœA™Æµ¸‹>O iËßÿãäŠLuÌz.G••­xµ‰Ü20'smn¡J»žU`,ÍKé$,äÓí¦þF6?Ž1ó0ó0—cðC£`>»Ê¢€›ðFÄ„>ATîÄ…é C÷fDˆ>q ÿo©æK©uÖdZGEÒFŸüó÷ºnÆyÛm·%· Úß(.­ÇoD®èïIô‘Ò?õ-•yÅ×Jýü÷ãê“N¤àNÜ‘ÁEv"­ü †Ë†`xèN鄽¤íuz_À"ä´Wçשz�k~ø®NYã:Ïé½@E€j¾å€tÉÿ )Õ )b. "LJ:u¡tuŠA�¢H<Ïo€ÛI}bm½zö»orŸ½\µ«.¶÷ù){ÏU´å¥ÖîÏ”‰äØñWíøë¯¥ -›ç+_YÔ 4(¥èAT^Ò¦Œ”zj÷ P'o´‰Ê À(.Ô‘ÜÄ:”ñȨJ:"8Ïóù'nµy‘Ú§ÞEà‹ NÄÜ~ík_K÷b¾ûÝï.y”ÑL§©˜ ãé}õ))Lˆà¡6'¿ä¢A3×yŽ|à‰~õó?ÿó…è¡  Ü2p¾Ào�³ŠŸò d©C !L¨ªg‘a¨_ê¤5ü¹ë‘XTÏéT@n7ò¨e‡è!â‚üD1!’'¶§Ý?u£üd í¥nAª q“NTv¡­!Ĉ"@\€=õJ=K‰@Š/\'½`I—gi_©,-5`þ.³µ¦íÎ4uôúç¶²kÙî|÷MÝ®ÙÅó›öZ3þW×öÛž½«É4k [£fCëvhï‡l?Ä£ÓÇíøãß°Ù3Ûø `ÓÕ=vìg¶tèJ;väÝvõ{?`G®¿ÓÖöìMÆ©ƒP´ ¤n£î©7‘ÔŽÔmο!=qMÒ™"wQÏÑw*÷Q/ñtŒ^dÔéò<¿Ó¿ég’ÖŠŠ'r}!µ â’"i«OÉ-÷ÈÕ‘æÇ芇|ò­¸™cå6E}kŒ“'žx"õg”]äEä@~rj1åg#R‹ ¹;‘ª ýBõ ~&ÅWE²{ò¢Î(¯Æ ×É»ú ÜFi!ÁG„!ÚtœÝÄD—:’£~D²`\0?â§X0qiH¤znæáÛ…>Ùsæaæáo¾›`Å•b�J‚¯eð·@— ª|ÊXŠî¡hS éo­†¯ ¸Çó[¹lŽˆøh1€ºòánð¶²?ÈÂekɴƶa)W]3`Üî#eÄ™Ítêz’ÁÏA"Ml‰'‚[¢A÷TN]ûB†‚ïi–Ljž&k<)lÔaè.Mq!©T©=]ùIÝ*qS'Iº<Õ³áä:­Òþ’ºjÀ*“‡ò h'Êø¾g;¶ÔyòýÈ(¨p´ ²BF9Yh¿L‹à^\ÿz}zùÜ­I~ëV)Eûò¨TP�µÜ#p¨òé™ÀvÀ¿víÖ€´³±Ú¯­'<ËJÙø•]pÊÜûû8ïÙÒéz[ZNÄŠM\"®§:AÍb˜Õ?Tï"ªˆ ßWL�äO}ÜÍ2$IÖ¬.8i½¹5NnÙ&»vH Kî~d÷ìÚÏjìñÁ%ŠÈ UpÇM8]ƒê¡úGcÑeˆß¯6mÛ^®pâºYcŽ|&²s³a]õ£û“‹ò0k•$â¸+`}Õ%E¤9’ÕtÖ9ß_‹µäŸA¹'îÛDNŠŒÒÇ*vƒÕ@®|,ŸîÇ5Ž5&%^ê/*f4fìi§>N=È¥°�c'bÍøÞÜÜ*.W¤é!?‰¯¶­s½L3QB•t ÅÓlûd…ÚyoæÊ˜ïÄ®ºC¨ˆ*%^/"Qù=I-u6MD‰4Æh£I—Ì"Bê-ƒNŸœ‚OΕµ*ƒ4&c»êÜ9Õµ\#ÕÅ~æê‹»y„úf¼bËXZ^²]ËÍ^´)ßhØžlU)ò»¯õ^rÉ» ÌI”/«™¤ƒ$ë“Ljò=èR3VW–w•¾–Þ# ±?ŒË{°?m_[Ýéó±u¯È5-‘.ÏÖŽH܉D‡î>º)7©Š’#ãS‡á°è°O$ ©ý”¯H`©3 g•çz•S}&’@Töølœó«¡&iаH~¢"åª'å/¿Ç4ßBzZ&§æÔ‰. Uû»7““zÅh–È7›Ûm»y—¤±:sU©••Ý©±ž‘»E¨Íó0ó0óp9Öçε·jŠè¯¿õÎçwâÒûýë lù¬5Ê;¿ºTù!îceöÚ“°&�(ÀNqî”ïø­u"ë;p“§žz*á”`1ä[®Ì#Ù¡_öÿºÖAä=’Á6v²ýĵ`?ïýü+~ê\ûê죿ÇúAoµ$Õ[¼V½…ïê þÖg¾õæß†½×öðÝ4Ô}ñT‰äXè|2œ° —{ì:ñ.Å@6:ƒk–6•KEÊÁ)câd±€@<€i�Äqó,R‚�9â&]:ù…€!_¡2H`Œ#tJÀ8âTyżâ4ôgž°çö¿`gÎØ]›wÛ^ýcväàa۽؀Ëlhšæ¸ÙL}騽zü¨-4e»òð;}þœm^Ø(@?ñ³±a„¼¢Êƒ6Ràˆ>©'êY'hÜKýˆK§ì R‰Ðiv©$“‡T5øMêbiñ;›|Ñ‘±E>i3@Ký[ Ä}à 7Ø=÷Ü“Úz$Ô7ù!>÷GÚ’CøVûjâ¡MúëwiýÁüA³?ô¡×!RR!ßrÍ Sð7ß|sº‡òÉ­�éÊ]€&lÒå´{¿_©ò¬‚@^ÊLÝ3™?ýO**r P›ÉZ›tꋸ¹.²†8cRƒSOäúíBÓ¨?Æ$þ&]ê‚ßåêAd�4~‰'ʦô¢!>ɨGÊ™H4»Ú`!¹ 9ö¼ý/ÿÛïØÂâÐ~îS?c‡^‰IÛN7e]_ßt£æ 1:mŽÓ‰R¸ñÆlï›8°<6 8Qøü¹öò—þÚ^ùy»êËÿÅÆ»V­ZhŒB7¼Ûf?ùk¶ÿ]7¤º"Èå’BÊK£Œô5~çåKÒÿ˜â)!½üD¬Ò©Oê‡>Ø'jP7´ õM›QÄMûJEƒú¤J"‹{H7¾ð4ö¤*#U —ê:œ>2xhÜqeyA„©cˆ$ÅÜõWõW©?ÿäOþdúMij‘¢¸dx%oô‘;âˆJ0ôg¢Q*GRP!mõ‘Ƈ wÄI»Ð§£²:Æyƒü¡¹Y +‡ˆG ¸0’;)‘e “0~QáÆìÕ¶oÏîäs©ÔÅìóx8ÔIºªøŽÆhIP¿Ñ"h¾û-C·ý»°‚³ñÎ ˆþ½ `‘åµÏœ»h·Þý‰ï9!bNÊ™‡y˜‡ïuèþ¶wÞüñíßÿöŸ¤9°¯$ÿÝžoA)_蘤ñ+­Í‡0E®PrØ (R\®”±PÒõ¹{Ü1VHå!c" ÐbMÆ=¬ ’4»ßiî:c@Å…’/¥+’PÃ%ï®za™Ä0 ùlO×’7 ïžð%ïÑè#"‹¶Ý-¸µí'Ê‹ •„B�²…?»”�À0ܤPö¶.«¢øÕ–sVN˜;¹…4['"¹’ .J RãpÐnÖ3ƒ¸{yf—)Zûèý+`Ù÷ŠƒLÞhÉñ$P\;EðOû®Èú¿ö°Sü¯u_\S·¤ŽvÿLˆD ¹ÉM�0vVKvv;‘�¼)›ÎXqF©ÝY´Õþú÷ÂÀݹø úf½Ë÷œÓÙ¶m%×zÛÉ]H"É$5Š¥ä2HRh0ëœ`oÓp¹Þs¥¶µ¢fÐ'IT™¤±ÚošÇµ“ƒä ÓO«°²]ú´Öã±ÞãÞI’¼s¬­Ùp¿)šñφXBAòz[{*>›Y—à#DÄ9&Ž¿HæˆÏ{™ºu# =®ë56 Rˆ ÔŽÿQ¼‡ÔE¥ Ycµ¬iöɈrˆ„Qæ©tl¿Uä€(à6²:íiœˆ1H ¶\µói>4S¹;—Ô¶õ¤Øo¢ÖI ©Ÿàˆ¼@²[ D¶J*0m_Ö˜Rý¤>Ǹ®‚êAÕQ?Šd…䤊d©YÞ7 JÝuÉOu"LXqâ#-ÆŠîqegTššï¤¸+’Jì#‘DRH9ÿsšotø‚ù Kòü Jj±ïLÊû ¥ôbu×?ùN.’bJL¬W•]yïâ|현8^ûó¥Ü9K9Sî@5®ÕÖJ[*DÝ÷wÕiWÕuŸ”%ÂTe- cZGImÑíTUÇ~™É„æ¤ Wç™$ÒZò2pÅ"ƒ@ø3SŸ¡Ÿ¬'Ò eB­fye—÷×aÎ?y¨¼ïjl¿þs7Ù¡}qe)Ýïî”ü;Ú 4o´ßs{Á÷+¼Óíó0ó0ïô ÷ùþýûìÍ^OQ‰!~´¾à¹çžKëð¹Ñš;®»ûëoÍÙ1^­›…`ÇÁ:9 ‰ñÇõ]ûnhß ZW ' î§Ÿ~Ú¾ò•¯Øûßÿ~»óÎ;ËÎÎ^¤÷‰õ¢x[Rñ´¬±…ñè0¬¼$¨Z;L7î~ÞcœZó7øσmè´ê¥Á©>f~"â\þžö>uþž…O¾û{ƒ¿ßì»ÿï~ø¶/߈`Ñ4Ú}qñ ÐEÇf�ÑA䦂ˆˆ �‚:-÷€lêDtž!-èµä>@ÿh¼ã0î™gž)¬%~gã¤�é’⣳¹'=�uÀ7 üu€êWŽÙ™³g\:åy=°¯o�×w]í›]WµÉÖ†=yô)û‹Óe/^¶Æ `wœ¾Ó®±Ý»öÛÞ]»mß¡ƒ¶{ïŠmol§Ž-• H"ÚØ‘_êBÀŸ6<L €­€žn”kOjÐl$!Nî§Žu2„ò2‘ ('^î×is®K PÀ­TäJ .öF©ëh¼qt©guÍ©p‚X^ä pY®ÉõåäC{ˆ9|Ú†¾E9È·&¹g Ò—»ÿôŸþSÊçÏüÌÏØ?øÁt¯ÔRäîARA¤ÙƒôUÏêC|ӷȳHšŒ�{©#m2I›ö NÉ�´Ô6D^àoò)Ò à·È$±?Dš2…\”Ȉä5ilSè¥:Â7qR§Ô-yäûÆoLßý@9¨;îÓf›>%rBì‹€ö´#é©ô'Û2ˆñÜïþîï¦gó7³ôOê™òª®Uä/ºzÐ\pòäi{æiúO3æn½Â^à~»xæ¸Ù_ü¾ú­&vú†{låö÷ÛöÁë¬ZY³Ûo¼Õ9˜N}Õ9Ü¡^¸xÞŽ¾ø’?{Î8¹ÃwøªÃvðÐa[Y]N ${1¿1¨¾ôòKvª™®ºº¹¾¸l'Oœ·õí‹É¨D]Ñ|äþ‚±Ä"’è{ÔíFUy©cÊ+e •—:Ô!7-<Oýk®“ò‚Æ4}“´UoJ—ô¨cž}ðÁS_ÅwsõÝ=±æs÷?å Hä*òB$^ú }€ñI"gIшgÉý€8£Uc@ïòCŸ¦k~ä!ú y¤ŽêŠ*IÌAóš[¹&_l2€Å±'w?<˼vúÕÇlÏî]s‚Å;(¼“ê(Þ8.Þ(D9Þy˜‡y˜‡ïeˆ›ê7ºNè¯ÛwšãÁâ¾`ÿ.,"XGÖ?’aw€¾ê€¨ºw2‘K'4¨×<Ý8JAó·�?%ߺ0ŒÆ‘dü�´šºj çÊòj»¶²îB ¢_'ªHÓ©Û ¤ä ²3È¢÷$F™P¢2ʵB»'jÁ*ÓUÖþº×ê¶¼îRd¡´ƒêµ Ç­ái˜÷~’–ß´–’ Éýºe›0‰µû#žu5@6  "-1dÜékPTû”Æ!¨ :¯=€·hˆŠk³>±6’)ôw—Ým̬ôW[pw,wש.s¿Q|É•ËtlNÖ¦±ê"ß·¾q±(`Ê'ql'}Z@Ú:ÆF¹1ð¾3L„7¬2¡fZì#}8ŽW­õ2-kïdzÿiÁÓ'8Yz˜Oào—xõ-U�¹êñzœtNÏ{î¨÷c~c-é[ö5r™˜òIݳNèۛ—øLfÓKNæ×ådzÛ¦ú<þ‰Š¿Ø�êLòÈí–æ·évé“ä!¦ïöW´`.qÕ„NýÈM…ú½)ZR—ìQ¸m³Öà,;‡úõ&"ŠúZ$1‰€/yÿ!öþæ£vÑoq|*.Å!‰!êv`øF¥ÔþIù‡{jWPbÝrÇd*·+ÖY“'ÒÑ@u£÷H&Bhfíø`<_¼¸^ì"ÌwÚo·ÄªvÎá@ˆ”}Ü-åfqÿ¡÷…» Z-ö2¥Ÿ\ÊTU÷fR˜˜uÉ;U)^™Ïâ<ÖÚ±ûri+òŸÇ€?;*{QõCÕm|wÇ:×ûk©÷èwÌy}bfŸLŸ×ܨrEIŸ¤·˜ eå`‘ SwHuƒlÞ)Ï*'‡Í\–ƒÚhúáB"�Í’­¦׋K>OëD¨@™ˆ1χ–Z]]³¥]�?ÞwÇÙ½ÔÀâòõžµÇ¯ÿƒ›ç‹wXx;ìó0ó0—Kè¿÷õîæ=vøð¡oûü̯͑Øã{ì±´^Âf/¼¯ŸîNñ½Ù{‘{Àˆ›5/Wÿà÷wD GŸC©ïyÏ{Ò¡T¹{ÿÛÆMÞ9¬ Ö>Ánafì ƒï8~·l¦C¨¬Ý¨sê¥_—Íßs‚Å×þÎ>úè}�‚lÆ�²è€rË,6? ð À1¤@Ð_„s?`:ðx†¸ÙÑ9øÖF“N#rÔ xV §Ô)´x /°l›¼žÆ½ÄÑWÝuÃЙÿÍœbû×öÚÞfá<B*ÿÂ1{èÄ7í™Í§l}׆Ý>¾Ãî<t»Ý±ÿNƒ}úô);}ö”m®m}k#rH0 ZºäS‘0¢A ‘:J>`›ß( D@TÐ’õ—¼ññ,m�Hϳ·ÜrKú[u ÄH)†žîF¤œ!ðV‚äôuÒœ6@¡MèwÜ‘ÊÝŸ(¸"0Á�^ €ž ~Xa”MĹs¡ ¥¦Àó€ÄbÖ“úá·¾õ­”Ÿ_ýÕ_M„ ¦ÔÆ]!.ð z%mò)Wê‡Ô5ñ2éq]®1èS"yPü͇öà^jôb -€[ê9n®¸—z&½¤œBÛˆÜ šrÓÜQŠß) ÷‰¨O<p/iBŠ‘†þÂ.„6ïÄE”òu¢t£¬\B¨/Ü~ûíŰ«~¥~ñÍo~3ù¤ýÓ?ýÓ)]ê1¦+E ú*rÏk ?ÈmÃkÇš¾ÐŒª;š¾²¼¶jé<Sc½p¦å{Ü.|ó~[|â«/œ7œæž½õƒ¶vèZ»öÇή8xØ+M7ÆcÞëç/ÚK/¼˜ü_}ÍUVOÍfk3tØÝl°÷  Óüûø«Ç›û.Ú5×^gL~’½Ž·›>²U\ÄÈ¥ñ)âB4 Ч(/m,Uú–ÚVíËýri‚úÓ‰.ê™gD\ªs#éjq jô ŸûÜçR=ÿÈüH1rŸ\Ó0ä«‹9€ÅŠ uJWýQ¤ ž'”§o¸!P2«?r/y&]‘ƒ¸—8™?¤¢#eû˜.}ŠþÇ;AÏÈe;¼þ¨cÊFº<'_prÁÂï~ý³MXž,ÞAáí&XÄÅ}<ÓkAK'�çaæa¾—!-ŒvØ$_2g½‘±C‹ßúÝÏt€ mä•–TmÚY‰¡Îj 6í€îJ;Â.dày»¼¯»§o£×:¯û~E'ù3- ¤=\Ξ5ïw”�¨ÝGì°èê#Ã…—/–{f­{º€§ƒ�ÈJEÃÓw0ªN@‹¿Dê´|[÷Ô“H<Žªr¢ <ßWl�¤meëGeæ'f–¼ŽÒ9Ý®‹ ¯WËdVéQqœît€4?³ž¿V“GûŽóº‰`X—„S¥ri )µE©W( o·Á%€^Ì_t#YÃMë7âIóFwOöÌ.é©m¬ ,kÍ> Jˆ¤=ì¿ÊD»'ù˜QÁ‰‹Í}+ùÙ*nWün¨ÛÌ�µ¦ €Ö³Š_÷Ǻ!(ßqÌJ]Žôä*ÆûpÛ'$_È}ÏJ_`yKÖðû wææt| h¦O´mèäW [gî’ûEîgŸ]¶c4Ÿêé ¬©;dÆÉ`xÉž‡4âÜÙ7Öªu M!öôœÍRù(æ1=Mê¤"›ÐOýoW¹EÔœ—”jjÍiîR£”µjÁüvÿ‚놉E× ª[êu=»[é<íÃk=Æ7î2h©Œ.'-yH}<–_u¦}S;fé7]âTº‡6ª[¹cÖà¼&Ãa'ïj[2*À:–;®â×\Û5’{¢Pï®a/½>a%©¨¬_(íž—ÆVÚ+äkÜ+’ÁU*K»¢¾YþTi¦Öª¾Tæ]¶é£Å¶¿Õ—ªøÄ½¢lnúíVk²§2¬U¬ˆ!ÖE$±¨ß«Ý”®úD<ô¡"ì¿Ùó¾Õu'|ÞÙN$ïÓ´oVú‘¼£þšO´ã´Òü^™”xʻ¤øäë\ݨß,Œ\ ò "îBi;íÓ¶Ç›™êsÇâÒB4©uÂsûü8­w/âãÖ3˜~íçnœ,Þaáí°ÌÃ<ÌÃ<\NAkøÞç½´oß^«ëv]¬ï¸>í´Öa­/·óàš}l$’‰ûkÂâmçëiQTç7ð�Þשb(¨,:÷VR¸þÌg>“p“ýÑ-nãž3’>cü;å[u*z0ÖqÂãz*æ½w¿îûÊä]x { WœZ×7éÎ ;\û;#Xü›óoîéPŽGç�œj7BÎVHοÓ°’pÙpŽÌ}�Àù`ÓQtšYBÀ#'0w>:/V`º\+H"…6ëëv¢¹÷Üù³q¤É×þÍõ¶Þ�§§N¾nç/žlþ=±³§íÕ•ãöôÒÓ¶»Zµ{Vï¶ù¸í_Ýïrt,º£ÚúV’=fÇOž°Ñ Ý´zRW”I@u#àëä‹!„ \ã>ÊÎAOÊÌ$ÁAn6xB õ™äN³› ê—{hòEÛ6îRµ`¢°I¾!@DiE¥K=“®ñ’.ñ*]“ }øÈDØU�¿ÄA‘WÊÇ3”Ÿ¶…|! äõ†ûï¿?¹< î�ü9‘ȬteÌ!~&xMd\‹î"äR€ó;÷Qâí«Pw|d0Š’D"Äh#K?„`Á=Ôש7 û .ž¥ìÔ?A q4¦I±Â¿I…²È‰€kâ¢ñå/Æ}©éW"—ˆ˜¤1J^È¿)âæ9êZ®\ˆƒº!í"Gš 2ôÁ¿üË¿Ly… ÛODò"@“.›u~#Ýx’Im¦1ì'•šòâãÊ#¶Œ!¸¯ 9Ýuúô‹/5cù¸M.žµƒO<`ãØVÕlšO7õz iÇŸøÇ¶Ï^›ìÚk¯¯Ol´´h×\wcÓ.W˜N­7i<}ÆN­÷MºµŸšØÓô¿+¯¹Æv¯ìJr¶ƒrmV”yh×öTSWm…oÊ*’‹ ú©Ú‹1Aÿ$.©žð;u"E›ö¤š—™¸è_ê¯Ñ@Mê” cUˆÏþóilýÜÏý\jGâ§mh_Òä>¹¦iB*qa"×&r ¥—µòËXA‹øE ¡OKI‡:Ð\ÃGdåUÿÌM¹…ÒûD Ò–šõÀ‡rÄ9S.£bº"Ɉ/ÆêWïûc[]Yš,ÞAáí4˜¼XÊ­ÜóbúÌÃ<ÌÃ<|?‚û”ß.ï«�Œ7#UİÁBó§â!Ô³ªøŽ'ý(Ny]`n À;°2 äàϤ�8í:eX@ey{™' ¤°çäì²¢ÊD s¥ H¼Ó4–—w•ø!$²±«ph,‘ÊCŒßÕ†éÄñ¬ZwÀz•ÕÉÖ«}Mâ€[$>(´®VÔÛæ®?¶ƒ?úQzŸ¸âÀ°Cäk &-±Ããòz,k¦zà÷˜Y¦Ó–Ø—£TnêÎ×ç¾/�d§~äÚÃËèàqÛçœDÂ=*»ÖE#X¬ºÐ:1JT§ÑP xªÅ!ÓÚAéwIFÑ×mUÆ‹ïÉààÀ›“%R?ƒSYê3qÏ'×8ÕÜJî»*õGû¬/-­fŽ÷9É̪¼RœÔ¾IŠ*¿ÊË£q×7’¶÷3‘q¼ÏËÝŽ?;)Ä‹®qÎÊZV€µö-2Å~£ö•rŠéi‡¢4ûÁˆFrƒ\ ª|r?°Éµ…“é"É [€Rõ5mæ¦á`Ð#XÇUK|&’¼bßu®~–âOD‡Ai ùKާòI;ä—½~]®\~Ä¸Ý Ç$ͳ¾‡Š.=Z7I<«û‡£–\³±q1©2x»890Ÿ~ín>ªÎ‰2>XGIx—ÈFçuÓU‰}H}Eï"öGüG/ëpúý «‚¡È…0 ¹`æ{ªAUæ&Þ;šOrEæ:í’e4oz<®0]ËŠ<Ñî'k;ÁÉRðáY'U ²aIA…礊ÛËóñWÝ÷mzä1¤:Hý~`•›~¿ŒzµI$µñwÉsªƒH”ˆ‡Êø¸ÚGW}J{˜>¹­os¡ªo×ê·QM¥}v–æ§8kþ‹ ÊS$ÏezJ›î  ³NþmÖ% |^œÌš¦N*4(0Ê%.@›ûQ¸pÒ„“ †~—‰œz_{Ýxß™¦ø½îÚµ<W°x†9Ábæaæá; q'RªurxŒ{¸þ¿u�[*_Ä]ŒwÖ„;úqÆ¿EÜ h]!òƒÖ!}bB=²SüZ[°6CxôÑGÓoðÏHrïç{§¼÷ó«ø…eh=Gþ£KÅ·²ØÉf£wër°å7ºéïoÞûÞ÷Î ;\û;#X<øàƒ÷ ü¤i(�RüÛd‰ð@ç”ä:à`5N ¢ '|èlt:²NBÔHŸ%6>Ò#^ùÃá7N_VJUƒ\éJ‘Màä¬YD:Ô€ÚGÙƒ?I¿±qß¶W¿l_>ûM{òÔãvq߆]»uÝ6¹Õ®»ê:Û·Ö,¨WÓ"öúx}Ó^=ùz"k¬5i9x8¥O^ä¢|RW�<£a‰º˜§ÌÚ˜ðMÝ�¶ª¼&@ʨM]P ´€{IW䞇CÝhÓ¥tE à^ꚺ#])=Híë¤A?ào)8°Õé ÊFÄËo�Ë"9¨i›¯~õ«i2PM»B®à~êI¬7®S/ÜO;#Ûs×]w¥¼sM¤)5Hiƒ4¶£l(ù¡ˆ<ÈÐCy¥Š¢S÷štx) õAÙô‘Yýt!`µÚ]“ õ$5M¬Ô!ÏoÜÔ“OI ‘7ÊBÝSVµ/ý™ghsÊÄojc•W.SH“çuŠøHWu]÷H@ãSD'>Ü'¹Mâý¾êèCú}à(/Vú iŠ<$¹¶!m½ <C:"v,dN5rÿÔ‹M^’[™•]Íß›væìùäyÿ¾5;xÅ~[ÙµfçO¿n§žxÄÎ=eK_ÿ¬m]¼`Óó§­n ðÓ[ÞgG®½Ùvßz-îÝg+W°ýz:p’Ô±£vòÄÉtJCÆ5¤të{ÖöÙR³‘ÞÞâ%æc,º¯  ”OD©rèåF}ÑDšˆÆˆÌ›z!j!Àß´ Ï’–HR<OÝiN }ISã€>C=ôPºïgög‹;™¸À`þP¿ /ŠÀE”®ž‘2y‚ASFINËךÈDüÆûAd8ωÀ£|jN„Ò%OÔ)s qk|F²’Œ?2àúµHq"… ƉNº©m¸÷ŧ´µÕ•9ÁâÞƒ íUï¸ /À\íÎ$¢yûÎÃ<ÌÃÛ�¾x_C¸ˆàÕN†„Ÿw‚Åÿô¿ýÙ%À+¡ ª…|Z€ÏÄt‚ÅÌeÕ¥xО*™˜«8Xç´mÌ“¿ç;`T$ú'}ý;H'P'Ùõ…Þ·�öjþŸ&Â<ïè••ÕBF°ì·ÝÁ•VrÝ%æe,ÑÉl—¯óIðxंAGŸfr®N«.ëD¦ðõ¬ç €CÕe$œx™ HïõªÏíûN€¢» q ΔêÒ6ÑÀ$ |>ZWª^ônC„µ›Ô,‘e0Èù÷úÛi]£=<éW•åºië!‚yq½Ô'ëDނք:Uû“®ÇÓêÕ>ZkN&Ù}Ç€?d¾•~ŒßÛj’dÿ=­IQz𺇤|¡Y‡žÏåô5àÂÂr¬i'NSÏê:™6oýrËÝØEC¬ÃhŒ‹÷--yÞ4&êZd‘\B¿ö>LÛÇöT~¼ÿVAEÆ N²õÉ2Ú¿EåˆH2‰ý]és]v ÊÍÞ7ºíŒÊÖÝJÛFS"Ó–0ãQ=æ3å1 "Ø­üëÙ2.Æ[©~b<]È*Ú4.% Yg̦1^%ô>¸µ+üÔ^·L éù*’µfˆ]9Ö© Ûc'ÞQr™ê¯ö¾¾=Ùr›Vè+L}‹òÄ‚±_"‘_m]Q¶aÕžìƒW2ñ’Bì\–Y®£ÖLûN麢iûåB®ÓªÛƒÁ%†f~“*Î%()@ŒÒA¦ØX×Ë¡1ª¾áùªÁ¢rŸ(>¾òˆHý'«0Þ!‘ÔÖ'aô˸3Ñ öÃî¸÷wŠ~ï»öˆcOåRüºOuçÛ8¯´$†¶mûs”Tt�F{g•1¹XÍ5#"R,£òÛ7͙Ö(%%OÛ:ïÌTެv¡1Ù´’%rM“·¤VI(EP)‚ˆäöH'3MÕw©·¤|%… W̨rû’P"ð˜»/ód›ýàl{î"äÞ{Á<ÌÃ<ÌÃåúëá´^ѹ¯]#Ì:ëÙ᱿ƒ°f”²D$9Ç}FŸ” "cFâ®` ¬w±ñGõ‡Ö?¸ä Šò ¸‘¹u0ìé¾ûî³»ï¾Û>ñ‰OX{�äÍóëEåhIËž8˜‡pUÌŽ{c}úkƒg? ©é!«ìt�;Æ›±¥Ë‚`1²Ë$°ù€LÁF„NG¤C"?ÏÐMŒpNLÓùjŠÉÕÏ< Lä#Yâ‘;’Ü�¶¼ëô5 à8³pfpð<iòAoâ,†ŒÀ³‹K‹éT ‹kü,âãseaÑÎŽÏÛ±S¯Ú£¯?d·C«íÞµÛÍ{n¶­ ¶u~ËŽž9fU³˜^Û½«‰w\CG]i‡.F&�P[à>¹R‘ûmn¸".0@Úr¿€iêœ2ɇ‘@Qê�\à(+¹VhÀDmÜhÕ¡Ô<¨_Ú •|IuCõL{‰0Á7ù!¯Ô1u­ ”çø¶¥mHWƒYîJ(3m¢Nz´­ÚKD�p)Âõn¸!å™8)åûä'?i·Þzk91/î¡®¸®rÃ'a©~è´õÆO0ˆuF}@ ˆnDî« Ò׆žg%ÙU&´)¥n•÷Hmƒ<ó!o¤Kœ”™±'Õ 4FøÖé~úŽ^v’²$=&]Õ1qëõM’Íäš”Q¸\D))}Hy6~øá‡Óïþð‡“:I4$ª|ª[‚û}¶Bˆ ®þ+E)8,/-'cÒFSÏ7cpcô:uúhªwvá{Ðsm­¹oךÕÍÆvï‘«ÓCÇÙ}žþÆ6>}¿ö´m5c÷ü“_³×ïÿŒ-¾ÚÞr§Õ×Üb£ýWÙÉó§lscÛ^qÄ>Ôäi1¥µ‘ÜÑði€ùSÇš²_HF,µeøÖ8ˆãFÊ,ôꡜÚÊÄ$枣¨1è#\ç9â9†º!]Õ¥ˆ¤‹2Ì“O>™âf‘ÀøÒ\!#&ùqAD*)ÏHíAs‚Nj1î)#i3æE�‰ªz'¨|ÉWzínLÄØÔBÛÓ?(3¿KaB}š |JGjIôGÍ)<Gýˆ@&ây÷“™£Rf±rÉñ‘/‘¤¤h1?Œagr…@úÑž=»/ñ ?ó0óðvN'C?wÎ ã~z~¡:FPìÍBÜp˸à–6uŒ_�@Ð� CËDˆ:(Ñ͇ˣgà!ý\e€¡u›—¤Ô'Ó|¦%³E`Y'_}ì{{p•tÂ9þ"3ˆd ÃÒ’»Ø@~”Ö+‹ð—"„Ü4°ñ42`VNîO3‘b!¼0f8ÉD@LÞ¤ÈáÏc{˜äòŽÓ‡»c“ŠG™1Ëjã¦M'Üñô…"U7°´nJ°wÄÚžÖ0ô ·‘L²{€Öp3H§œùPˆÊœö]X\°Å…åpRz`"³¨ïÈ%J][&L i;†¢<½ö>}€0Þ£=aŒG$‹ÔG@±oÜrIùY!¤~ž `‰4+rE3(púÙÕ Kùx_ÝÞv|N»RÂ0ƒÓ“ܶƒìòoÙÕP(;)û±xjOH˜Û—ªí“ ¢!1ª�8à<I}Ïû樨²H‘Â÷¡:Õ?Éuã²¶þiÓiKHñºÝîÔ¿NII CÚh�À­¶‹ p´ƒðaÝ/{Öëů¹D߀ÝýöW¾”Oå=º»Qºê_ÔKëê£%ýàŠGñ©¬�µÃÁ°ŽÇ¶jçÖa4çdü,™àö£iÖQåv„¤ˆ rD–�j·óRUæ›!ni–—Š{\?¸�A}¥U<¬.•Eކ[‰{W#“kõɨ&ãùïú‡î :têÆëÔûjrÕS ø™¬Ê¤©ghž!üvÛʰ36"Gc\§¥:"ÜñÄxž“¨ê@}U¤�æ]Í#ž‡L6.d2žÆé$ûr!šê¾ÎíWû{&֗ߓ؈֒ô¬3ÿÅ÷²æ…ÈJ‘ˆû ê­O2êª µD/Õüù.A2ôÉ_TçÜhÞ"è1ï±N‰j*ƒHO±œ1Sk]˜ˆ¸×2ñ}Â(Š;æ×‰Ü…øÁ´Å]»“꨿ÛgY*Ï™p­jŸŸÓ{Âê2nãa‡»Ò‘H6NdŒdÂy˜‡y˜‡y˜‡Ì õAü;®5ú6…¸þˆ„j>ØÝù-Úëãž0®SúyˆA븾g½­Ÿµ‡ÔÏuoïÙÏ»ÊØ_wh¯òÜsÏÙ—¾ô¥tpûãÿx‰?æûòëDé) á»à`°Â<û“~=íT7ýuŸöTÂl nP÷Â÷ÞJÞÃeC° Ñ²ßrË-‰DAƒ¢>€Ë€Q6ÊlúXTÓà�ÿ€q <®‚1Hèrà "€‚ûõ›@|îÕÀ�X#>`:€FÆF¹%Ëùýäˆ)`òâúFJçÌÑ“†W¿z4µ'«§ìÙóÏÙéÅvçÂ{샫²›®¼¾ÉçbZœ·6`ø”mÀôÓMYÒ& ÙX¾â@ڷǶ6FêHl.ÀDÒä#7!R, ¼�”_Ê"§°‘qA.%D¦àyoÜ8É %ÿ‘"0H!CD~¨Éóñ„=ßÜOžH“¶#ßIjÑd(UÊ —é:)/ß«äRik2Ö„Æd!† ïñÇO‘PþèO¤¤Ë5)Oí]¯ˆ¸À‡²�ð“?Ôtú#Û|SWñ”‡Ü\è£ILà3ñÉå…�cI)¦>×ôÚç´­ÔBHSJòÏ$ÕM´< .àžøH[à2ýDõ/5 &w䊇<K€$Vȇ@èør¢óMÛᎄxP‘2ŒòãÆ*ñÒv”Y~¨è·b%Êu u)×9)Ù2ÿÞß<Μ?këë¶² ÓJÌÀ×’têÒÊrò‡¼¼kÙ¶66ídˆÃרµw½ßöïú‡¶yáœMŸÂ6ŸÄνzÔNÿéoÛ™åörýM¶ÑTíÒÕרðö{m0ÛÛ±vÙîÅ‘íN„KñÑÍtÒb÷ÚžÔÆô-Ê+åêŠßÕ×!™Eê™kš³\†k’Ê+% µ'õN}0h;ú5iðפ^¢qC{<øàƒ)”D˜£å„í ×8ä‡<О|D cN!/<G /ЍD;ÈåŒä­$yL|”g)³§\c¬É8£>Ç7 )­P¶È‚%¯”™@f|ˆDÕVdÄ!RÓ!R¨ÁGªŒÊ^ÄóÒÓs£ÉsÐûŒ åŠåeTdÖÊø˜‡y˜‡yø» {ö¬¥½Æ™3¾nˆ' Þ ¹Bkæþ)ˆ|5!ˆeU?NX;±Á%Ø%¹ž pH ùlZ�¸º²€€o?Õêj.íÞȸ×UZðT.¼lS“{wER§¼y¬¤Sçd·'†Ó§éDnKfðõ{÷$ŠKÔµeEŽx¢¦.ù7‹§ŽÛ¿(_¸F]â÷ÓîËp±c0ˆJ³r¿ˆE-#ù t2…ÀëºöÃ%"™ äŠ⟚ÜG$ ²e†¥ÎŽuÒfk{Ö—ÆÉŠÚ¨ j!Š¿.§BÛ“âÊãp8ì€|~_«Õ7Ð)D0·-oÝQ¸SŽ÷èZt#àn3† ÔM}3vêÔGº[Ϻ¸õä EGSu÷iW)¹¨Ï r6jìÃTû>†ûvË^‘�óg:™@àè:¡­·è¹OˆòúNHð׺}‰„‘wÚ9A„ÑIY‹«ÿh\Èn0⛆îévÅ¥|õO½E’M$ôúh¹^*x­b‰öø¤9è�ͪ›aˆ¿m«qÉ›ÀÚhTsß8x—rǃKË»’«¤a'žÿfn¶ó¦"†–»çøK-}’2…å1l:5í@ò “ÀêÜïùÐÏÓDJý¶,¤þJ;�.o{jµo’MI¤v•µï–"…½=»>ž5gĹJcKñ$5‘IK¢JórÕ5|;"JIçáWeUŽzVÒk]6ù ryã= 㤠d¹Fjû‰ì …`ÐäY‡W¤ˆK\ŒYp’ͬ•Îã±Ì¤2q�õ— pm<QI½€ye:î¸öˆõ®ñ úd âqî‹DŒHˆ„ŠHŒ‰n‡"é)Žm¿Þý=’=4¶dß‘mWu½¸¸\öèJ;¾K#IL¡?¶+ŸØò<c…\XNµN¦ÅÍ’¯¼ðÎòô›´“b¹ ÖDÃP§UK4­ò{9Íj–Æ®çÏÝ„$%¨Údž“Òä6dæaæaæá7t×-¾%BC´ĵ ÖÐÚ;H¹Œ‰µ”¼Ä}öN`\gì¤Î µ«ƒo€Fu¬þš)î=vú(naQ`,`Ž`·ß~{Âp„-÷óß'˪î"™Cká |S¬‹È»ÖA‘HÒ¯#…~ÝÄïi&šJ5]‡ÄU/1¾Ö^?èá²!XÐI¤z E6@ƒ Æ|˜ìƒÁ©©Ðøü͇Åy$H>E ÷³IÔàÕf‘Å=t(â`O~¤Ü SËü¶™N o$@ �NÀòž={mskÃŽÉž8ú”=[?mÇWOØþíývÇìn»½ºÝ®Üe³É^L›d铯XÂÆqq¡GWö6q¬Ú£ãöÔNž:ÝÔÇ[^Y.uA™¤Ò�¨'ðŸò0Y0€ÈäO›"©Äe^$£ÏoIʬµ™ ä²zbR$}ÊLýªÌò*6ik°‘?µ/A†1D~‘Ë Æ‘@ Ÿû¥| “ãzE2 Œ€µ<GyäR„gé7üFþ¸—¿o¸á†ô ¿}å+_I¤€\H�´+€?ñAäq²*]µ jõ-•Wä¹QÿàåY•™ç(/¿“¹¡Ê`$2 A@7¤Æ€ ?JW*”Cnè”Y®[Dná©„¨¾È—Òå9®Ë߬3È'/(µ;uEߣÄ)°šëä±Ìsäß¹ïk_ûZz!ѾýèGShrê"[q<ÒU×:AB´¥H0R~¡Îx~¹1þ®¬®$ Fü§ž8y"ÉŒ¾ë]×6}qÕOàllÚúæ†{ýdÚ/,ŽÒØÞl~¿âÐwÑŒãµ+˜]sƒm}è“¶üò3¶ùÜ£váÙ盾qÊ'šyãÙ¯Û™gµé¾½¶rË{lpݶÚ�‹»÷ÚkÍX>¿~ÑÕtšxâÜBûÈ— Ɖ\itúº ¿@‚‘êŽêL~ËøÈxA\´DJ“AHR¨Ì5¸!¾÷¿ÿýIñD$ÚIî’˜cIŸ âýDrU"ÔˆôB9è«" ÑÆ’XÕA„ž—ëÍ!"1þ˜TÒ!ÿ¤Á¿EÞ£Tó¿ÈRäI®¦47ɸCÝÓÆ"Mˆ„§yGîMDjáÊLürG2.«…Ç<|gA› ­9ÖÖöÌÉó0óðŽ ¬“� DÔŒ`Ë·{‡ùfÝÀ ®ŒÐJÝ: ¿µ'Šý$§%àzVÏBÜ é¤çpÕ²+ iU5ˤ ¹‘B'E @Ê¾Õ“Û ù¹„ôµD”,üÄò¬Yßìê€ÅŒ³ìÎÃÝhLÃI婵JíIj$�{Ü½Ø ‘{ã‰ëVQ¤Ê@§ïq%goÅÅÂ$×O&š$ÖÊus¹¿%~H¾ÜÁ.œ‚µÀkßo­5ÿ;ʺ <u�ieàqêëæ´¦ªó>`ЋSnc,Ÿì—âD×°$…ˆëùx’¹o¼Sy´¶Œ!Åú¾áHåSÀ ƒw›âøÆûvªò*‘…è3IýgšO-ûÉ{ï7K‹ËIn^y. Sò€* y˜&ÜÐ? g&"°eCšH ãI[gÖ‚Ž%ÏáÐBtQ¡¿½îZ·ñ¹ííͬP1-ýÆUer[ÎJÿ!8p-5—ª€ÎNÂXLåPÜ‘(¡öЇ+b{F#l߈¨ö“ÛŽè“Ø÷ë ·:·Ñmfé3½þ®ø£¡x˜Ÿ‹dŠè^A„v©ëµ@³¹ ’º5@‹ôá÷¸ûÈT¶B6šd—“$5$«„ˆ 2­äZˆ¸§ ´õ“õ®j!×CƒzXÜ ¤2Õ®Ü]Ö¥<%’ÅjjWê.[‚Gƒ­ÆF_Í`' >Ž­ÔkŽ*ñÖ½S~Žd_BÎ Ï•‰ªBÓ<+U'’µ$¤”çâ†Hà·Ú{ÚQ"QE6‘Œ´Þ%äMîe¨?æ>”|HW62íÅÕ7 ¿”y%e'÷¯äþEJ8µ«•$Å„¦µêIú£ñ?¾£#ÁBõçÂ*Ô¡úµÆ@$I\òÞmí¦jÿ¸×‰ñ‹ ÖŸs4†#h¡g¥é‹qi~Ó§HêIy™LSªï¨?Æò ª.ñ$9r3“Òhì­ ‹®H,‚NQxÒ»Ó2é¥Ê¤î«òœG¹ò{vÚ¼s§cW”¡2¹Š…ì4Ë.BòØ]\¼lLûó0ó0óðCâ:=’j!×õìr‚ÈŽì±ëó®Ç†¯ÃÊ­ÂcWI­OªˆdH®Pü:¤.nñPºâ‹ë~…¸ÆïÇ O?ýt:¨ö#?ò#[k–>$¦ë“CT0=â›éÛ’µv‹kÈ'1~¥Ïšˆ4¤ê¡ºï“3TO}ûÀå.›U "@•dØÈ °ÕB›SÓ�x4:€ö7¾ñ"³Í} Â~ç«N¨Æß ^Ò!]žçwIÈ3àH €Lj Ú\¦{šç’6ÁMZ+‰¹¾ì ÷Ê iÖÏÛS[ÏÚ#»µê¢Ý²tƒ}xïG4Ú¥/=fg–O§<³L?{öL:=ðàáf@°Õ]ËiS…r¾‘Éà˜E€¬XL"€¨Ì€ü’Ô§NEfñt­¨0ÈÕõ ×bs ´�XÀy>š”PiÊG<\÷Ó7ã¾ LçwòpK�¼ü¦SúòÉÌ/)vŠ4B{i2&-â"NêŒ|«|ä‰ü|ö³ŸMîp;ñS?õS)Nâ#4q#òÍo~3ÅE}ã6„8åšFJÚ4Ëg)÷ÐGh'¹Kar¢î䦅² ¸@9bèKmÀV§”v–ê€6—"!ñ!=úãG`ºH ªSâeœÉ]„úéÏ(›y[ÕM¬|S–Hv _ô)¿ˆ#R eæwžU9P“.u®qúÕ¯~5=Ûm·Ùwޙȭg±ÑgøD8!Ä©tyF IÒ —*‡Æ1Ïœš¸1ÔûõF2^yåUvðŠéôSIÕ€ øO<{æ¬fü<‘6ÂlŒ!_$Eƈ²1†23þ®¸ÒÎΚ—èêUvxµy95FïÉKOÚYêùùÇmãѯ[uð*;·Øíoz¿šº>täj[̾²!x$;ëë‰\õzÓ·7Ç~‚g·6G›9b·íÞ³»I%mä‘Üv¿ÌC»òÈM;n6õM]7Ÿ³çNuJ¢EÖ{úŒH<Œ§'žx"¹j¡@ÞÑK]ã;ZÔ&Ë"GЦ2Ühî¢-H—¾#·8Ó Í)%˜¤¡ñ$ÐA'‰”'ÉfinÓ˜a|wúJL[F}Ô/Õç5Ž£;hS̯Q1Fã2V[Z*J/óðÃâBW cú §¡æaæaÞ)y 9x­ÁµÎ~+ _[ŒÊ½qã­ÌÓâ Ÿ¢.8É<ƒ�‰­¬{ jèè4ò ‘^“Á£hÉWL.9IyÁ òÚ=Ü]ƒ¡€“2>È€ákÈ M=I}Èeêʉn�áTë —ÅO¥., 3ᢳôw—œ pv9«Iˆ�Ñ>ãDæÃìšàuÖ#L AE÷sy0˜ ¿.§jýš@ð¶Ý…ìIüæù¨r½GàÌÛ­ãFÉ·|:õ;'—+Ȭ;Ð>Ê`¨Ü#ŽSù[.�êzòÔÖQŸ$E "¨(¨|rã½]9ûAY›zr=ओ efUŠÊó^eZÜÖLÜEàrã¬ìD£ÍäF¥T„žt u¾>EYp!Ý»½½•É×}ÀŸÎ\†ÒÔcRUÜRy¿¨üˆ|Û­vÇ“N’Úwá4õ‘T7µe@ÑÇ«ú,Ë~)˜0¶Çã:f…,BœïPµ?õ=¼ÈÆÌ¾5u]í¤ü·ÆÛq§meØd\j¯Îß»w¯¥qÇGKš–¹JéT³ ºO¶mskZHì ÃQqG)U>h‰}sHKÑM•öp®FgZyïÊÃ+Hu˜ •u]sT©OúX™LݽRTûhI.yþxý&ÒÏ� @§,.f€À™¨¥±&À[$y)Æ6jÕJºc©Oìq5–a&CŒŠ«©ue"ŒF¥ p¿0Éý×f"ÔY™ÃçIdu!x ÜTç¾k¥>¼L …(FºÞG¶Ú¶Í}SÆwR¤Ð\’Z ÉËdÖÎ+©þš:lö€“åi¿r[#7¾‘%0?Ù2Q¨ÊýSïÅiVÕ(jJýºeîó[«tä׬î*KD° –9’`úþhï+©¯G²†È+YDt”K+o'ÑGå’›öPèÄ­T‡.ŒSý‰h!ÂLšãÂV[ïN½‹’Ýcc½Ó×¼¯l™ƒ ÃVµ+=cÃwKR‰k¡Öí¿ë†’»)ï±$?“É,ôÙ´w较Zen‰¤öí݃ÏÃ<ÌÃ<ÌÃ<¼£C\ê Ûv5˜ øWÝÙðáÝ ö�†ƒTú*}u‰B\³èoÖu` ¬ÁÀ…t8>*3(¿1î~‘TÓ`}÷­o}Ë^xá…th–C©`'­‚Þ`Ǹߨ ‘Ø«tHCÀ1…Åö‰ý¼÷ÓˆÄ ÅO�³æAü`.;ůòì÷z¸l€Òbi,:A%w›SÌ:‹k§Ô¥?ÿùϧ“Ö�Ã$¾ÒikC$P›Ž$7’ä—:CÉWò Ø|ÍFôÈ•{€6J'ìâÙ3¶k÷«—+;vî{äì£öòð¨í¯ÙÇ}Ìn=x‹\>ÐļÅ]é Dd#FºÔ…”H}”üü:`ŒaOêRNà´¿@M¹R  Lü.0]¤ƒ¸I >&¾5¹”$Ÿ#H›¸¨òÂà–B -Éì‹(£IQ~8E¨àoIÿK}€8u Ÿ<ÉýõÃ7í�)@'Õ)»Xg<Gß!m®ßpà EEA`:×”6Ä ˜eŸüä'íÝï~wʧ 3:O]HŠˆ8h#)+0ar‚Ÿï¨ !wR‹à9)Að‘ч|S>Ú¬ €•je¤ ~šp’ rw@Þ¸“â#ÈåKì[~úh;ÅA]S6'‚=¸_*!´uÆKˆ|.ÏKUßé/¸#Q{‘'~§¾\‹¬¡$º#.òΟÿùŸ§²ò2¢þÕŸ¨© x§¾ˆO„©—@|‘8ÈŸúqh¬(.æ(±©8Tÿ–_$›[›éôd†Ø6©¼ë';/À1sËxÛ®nòxå‘ÃÍ<Ñ¥î|hò3=sÚ.>ÿ„úÛzö›}ö÷Q¢nŒé¯=ò7¶uË=vàžÙÚê~syìaSŽq’Ó>xø ­5sÌ`È Ó vªÉ+íµ¸´hk»Vm«é_'NO'ã\y$¹9Á8°Ö¼3×ö¬ÅÚ•¶’L§UE’/oê‚uH»Pw"L¨¥Ò ãIˆ¾ ÷Óg ÄO›1ˆ¸}ÓvüN“mF:ô?)½ÐÖô[ÚLsŽ ¹:™Bù ˆ8&£–Ú\iËÕõ“ÜÆ4ýUò["=ñ±„téßÔT2â‰êHªI}fê<üp„Tiqïn‰Vì2[~OBdEÏÃ<ÌÃÛ� VWw¥wp<ñþVHÑÐç½V‘ Î Ѭ€´€î&ÝÝD@Ý¡QæÑt"ÛOÃŽKš(YøÚÒã™L\é�à¤5PÔáã§Q[`+úeÝRЇk~Z|Ь¼ëëÓ'f*?ª4üd¿ƒy:=­|úÚ`l’®×úc˜ÀÙ¥p*xÒ!@)§­ \§õ¡“TªD2‘GKhO”C¤X\–õQk\!"µZP¯˜•µ‘c¤¯Ó;N"!žQ@«jPÊ®|ĵµƒ”K¶hNà@ÁÒ⬩ÃÝ¥Žä†"*8ˆ?0³„àg$HDãH½QA¤ŠXîh¸“[Öœm_nÁÄDŸL‚Hà]Ó®ˆ˜L[%ú_:8²àkñ¤P¹§­!Ä$²Ï$»øÈqO{'Êõ;$ êJ{[­“!` v‘zëÌAÌɨע®ðâm¦¸¢Ñ.úî�¸Gj)ROÑËûЦ €ôú\HÄQ¿Éaf­+ž–Óq’»ìQÛïþ‰x=¥æ§>UÞìoç…²¿ þ¤ª¨>/åƒ4æ2J§½lV­+$Êm4؃”õ!îyI㉺¶VÕø-»ù¨3@œäö!Þá Ú¢rþP j ‰p1Œj4Ó4†¥VÁ|ÑÎMü“º{°3%’Ï%@_d“qgÎס ¹:eãýo©”Qß;±þõ·@úííi‡X "”úÆt– ¬%Ï@b°JŠ@­‚òé ³u&Ñ h]×VwêƒR$ÐXg^ÒØ×a%}|d‚Ÿ×å6ŠFežYtÑUqE ¹‘ýQŠ RjjãÔáGu¨þß'?”=G˜õPݪþõ‰íë?Ú5ÔFú·æR=« ôµoÉÃa³%ÃEáYèç•…©½´ê=RREÕÇݲ,'µ˜Í1roÅ3±MÒ~>–С‰Ø7”¯‚Ú I´AV…!r2iÉDe ¤G̉,R«à§L&©Ç¹üEÍKd–Á|ï3ó0ó0?ð¡oÿÔ¿yÏFÃKî“§�ð Þ‡rýßë1|'ïJå?¶{0Ôðåá;o§øYï€Gýë_O˜ó½÷Þ›¾åî» Zß)oRÉ?çC}£úùvù·m�Þ¡ÃÎàgßMü?èá²!Xø£±å6P `Ÿo¹y¸KÃ(ãφ 6{t:T¾üå/Ûƒ>XÐ{ßûÞD^ˆ§ Ôa�ÀHŸ4tâ×ü.0–…0é&0³‰ãºëÞ•�Môû:ì§÷_?Ú�ðOÙ‹ö²=·÷k–þvãÂõöÑýµë^o«K«‰a¿<Z(r•R>Qøe0ÜcÁ/Wò?iB rÇp)€S6@?¹¨hªSÜ”W$ ®³I–Ë�&¹R nÀFêR�rž'_\#í—^z©€©rgA;Šõ/"åfò‘Ûò$×ÄOŸ'ù¡¼�§l¢¤òÀ3*s{âf’&2¹: ¶9¾øÅ/Úã?žòĤÇï:eNß!€ºÁÖ™Èüþè£Ú“O>™H<ô òF9écrW#Â×ù¨å¾  hõI>R£ .?èÄ!°V,|ÊKß§Ì"Ñp-*u0~øôbcŒèäE”‡$ Ú´);õAÿ\O ç;uMž(#Ä1Û¤#@[j+2€Ñ^¤)&¢ÒøþÜç>—òøK¿ôK©N¤ªÁóÔ€vÊBžè‹r " þ£´¿r_Âß”E®]Ô'© Í9ôWÊ,õò.W*”OÊ6ä—™Œ$Ôùšé’?½q´Åæ»1À-®4/Ø•Ý6ݽÇÎY3þGÍ|sý]võê²}ê[vüµ£vÅ_ÿ¡Ù#÷Û±?ûm;vÍíf÷ü˜Õͼq®©+]iW]}•-./$÷¾}ÒI™õæÙãö≗ÒF~Òä¥ÁFÒ)̅űªÆ88˜•“’x¥,ôþf,kA#åÚûoþæoÒxúÑýÑTGê+R¸àÊL]P÷RY‘ÁVF ê]n¸'hî“ qñé¨o«®Eœ¡Ž¹G†Ö8–4ö¥4!CŸN¬1®hOˆQŒé8?‘G~§~û* E"x‰$"Ÿmä]†Áh ×ûE`Á<üð†htEf§…í<ÌÃ<ÌÃßuð5’¯6 8z3DŸÁßoñ]—ð>úIV„÷çüô±ƒè¬9·Ó=Iù>Ÿ•º÷%7!Õ¨<þIâå>ºéò|r8tú8 •!~ÿ \ rˆÀ’•'}^¸p.¤®v82Wƒ v'ì¼ ªfe *à À4ºH!ïº×ë¼UÐÚŠ{ü.ùßÎd +m¥µZ{jfTÈ&®®Q Ú×i-Á]rú¤A]‚úþÁr~G W¨"­:Bì¾.Z0wâ§¿«´&ÜJ÷8ˆ?Èm;L·nG¦¥üZF¥ ~Ñúj*£»VhIªkï“ìêž*jßä}¨•¦M×!4u¿µ½ês˜NA//­¤¾â¿e¥–Ô@uλI¢'|-ÈMËÎ{Ýo0Uùà ™’ ëð={v—ÞæUùRÖ"· x!rì@RîàävÚK(]oßIjsÕíîàr»–Û_;³þ¶Ò¿¥xÀ=îz‹Ãr”àsŠ�l‚l8"pG`ÜŸõËǘ矨ßܩòŒˆÊãõÐõõÍrâ]cw)¹wh‰*ƒª+½«>§~¡úó|æ1ÑÌ)ÛãÍT?š–h³T6s÷>i¯ <«ËŒÔÍU{¤“@ôL�GÕ§¶Y©oMP9ñûœdAòvþs7NQa#¶ƒ�níq¤yáÂùtøÀÝO.—ñ%WºÌÚõû\ ¬O‹»>A&’ÁÔö©†wD¤×üãi·ï¡QyÏh_@û‰ªjÇ…—c%�u&ڨâ ŽŸÔƹ?H]Q$†·öœñðöíûd �E$©ž–Ú&¹&Šä¼i!Ź$¦Ñ'œå‰ÊÝÙÄô5WÆ=ìŽÝúo×�š+"‰AåDQRšÕ—*®h|ù;´}—ÈíhQa½p:¹0¢Ýèƒ\ѾÓq«x#;UçVu”}b½M'èä÷6 >y}PçµÂ;ÓLòÛÖ™?Ò|I¦vjʪ±^9!Êë1§1˜“+æaæaæá?ômú¾pábÆhºŠWR~ÇÏz\.Õúdøg\¯Æýa$^³Sâß`7òb xûîAâ¿ãÞó¥µÄ„/|á G»å–[Òo¤·“Û‘˜F q=¦õ[,‡0aÖŠ¬}8ì®øûêo´'Ö¿c¼Ú ÿs£þÁx¢ºÇNu£´/§pÙ,�óhÌè‚ðZ'̽⠔ºè\"CHz^nžzꩤZÀ3wÝu—½ç=ïIÏÐéå2ƒÁ –Žˆrj6,Ìýv*s~¡ª“Qõûëõi{hú-{eï1Ûµ±ËÞsñ.»rå]¶¹¾e''§­¾bÖ<·Ç.®_Lqóa£H-R‰T (3ƒ¦e{ àÝ5ȨD¹©€ÿ¸™¡NÙü<J„¿,¤È©kR=P¹åG]Ücp¯6ˆ|S? B1þ‰[Ï €@N”…ÉûHWå&>êBjÔ 1¿tÊœ2Ë•ikc-0^ä‘xàäæ�BÎÇ?þñt]“õA]Éq‡n¸¡#KDß„-F¿B:"„ êŽk¨apÊŸxØ0K9 e–r�1ýZà.ñð;ÏÃÚ“jßÊ›1¤8 ÀW®l~âf¡¸Á ÏP‡”ƒòÊM‰6š<K(÷˘N=‰ÈCÞ<ŠkýF‹ä >FÝÈÝä¹L¡MQœyæ™gRù~ù—9-Æ«âb,PWÑ(Ó×é•Y#ÊA™y–iÊ}…Ô9 Çľ ¡@êôWÊJKýQe¦Œä‹yI êìôé3i#-õŒQ'N·+±ƒGÞgkdîý¸M'¶þÚ){öÁÏÚÆKÏÛêSYõ­Ì–Wmvèz;wó¶o÷§#,nS°Ò4‹[H?UcM9Ùpqh7×íù_²QcÀ[Ú5´ý{®°]«» ©€:Ð¸Ò VÊ)”™z„ ÆœøÑ~´ô ½°%m*¿´RR1.E˜ ÏÓ¤ AßNÊ æ/|5äúIs­d»¢ÁG}\‹òIàíÎßÜ/7Dä߉—~Ç‚‡o&ȯHMä[ó}@Šêךóˆ“þ¨Ó½´3d0¥Ës¤AÝÄ…Üúégm~8C\œ‹WÍíh;†þf©šWÔ<ÌÃÛ\úzTÈÞJˆ›yÂÎz+†¨TÐ7b¸ VZÜOáÎŒB3XdÓ¤ (pšà§â‡yâî>ªªk°pÕ )öi}3,`‰ƒC'3d`Vy]XXNÄŠ­tª}3#pWPž”²„4@¾â”¦²º¬½ŒMVÈÀд¿"Ú)ŸƒAKjÝ „†èá'ø©y €ù8ÿVåôÚ“îj)Yt 7íIôhl‰@™ö“z^`õA oÔŠk|¤ØÛž„n•$Ô×´/”ÚÖŽ}ò…H2÷"é$œI§Šp¡üûÉçÄ”;�îY 7{â…VíA mrɰûs•Ó$Ì„©­è:ÊI⿞uHÄÚÄöކY9p=VW³úejûV@ý^ý!ŽMÅ×w7 vVýÒNp’’†\êŒ3YiZ\šDã£êЪ´TyÌ]Þ0fÚ“î­êJ]Àp†ïŽá¶Í¢R‚ÊÕ.DÜåC.žŸÅrˆ@4o8ùË è®ƒ©ý²k˜&V«ªì·¸)ƒ4‘®Éá)?™¸”4JëAgÞªLd®VAj 3¹™!þ¢êB¨“z ý&‘+²z ð¿ÆÚ2-“‘Ôû®—ub"UøÒ+#jc—]É=îR²/^\O„ö¹"û´ê Öùc?V«Ïˆ°“[ýTqÆ9NÏŒF*_÷„¤ ØHdí]Ö/,,•'£¥çªVmd{{Ö'q>ÒÞQcLcKm¨yJ®¬J_ÍñIQ…}¸À…H”KñOåªU÷‰ãt6mÝOU¼Ï¬%ƒE¢YÜKÇñUa¿Ê«~TEá]ŸÈLX'RºîüÉ¿ÚXý =?hUq”ÇHÄP_eÖÁ µëTLÏiúà…2žœð°`»–W¡Ñ:eJñM» ­j åõ˜òa2ÍAYî|æ.Ÿ†#'wzý8Qb8¬Ë<Ç8Mõ’HÙ•ó¢Ö©w™+®ðž˜6ïïî¤ë<ÌÃ<ÌÃ<ÌÃ;%hm¡ý‹ÖŽ7œ6w7Yç5h»~À®.´~| ‘$ðF!’´þ'”|£ø¿]ˆé s}ä‘G~�¤õ\Ük~§!’Ft°ZefÍ(o;•áÍêe§ø "¬\!l³³{³.\á­¶Võ¯Uoá»zƒ¿õ„o}´Êö>\4Àë}’Q!D �œO l�à$ýO界;@ $ 6*tÀp¤îùøð`àKßýZ-�³‰Sy➸Âö [clºöµ§°Ï ÿÂ6mbWØO­ý„ÝxÅ-¶¾µa§NŸ²­‹áš êx3ùb%.6 È¯�ƈ2�FÓÙ•/‘;D²PýG�>ê€ëëåcH.9xNn4�åj%�,õÄ¿.¢�P.ž[Ɖh�€ @ͤBþIƒtåÚCÊ�€„;î¸#Õa¬iƒÔ<C9¨wmð˜¤kCKy(3y$Ò&o"ÔP>‚Tî»ï¾ÔöœÂÿØÇ>Öq9#5â’Òe¦?$"M–Š›TÒ€@¹¨CÜwÈßq‘ß;ï¼3Õ1äâ qŒ‡“#í¬¾E9é·”Gä!å•ÉšøHƒ¸(Ÿˆ üÆýÔ+y'Löô1È1r¢‰™¾¡¸d /'âPº-ÛðB"“ÐN0ÔG岆¼g®Sä‹2G5Ñ€Ó¤ÿ¥/})õµ|ä#©]äî%Æ*õCyè×ô¹¡!^ê2ŒT&äîƒþJ©QqEJê;´3ó…êGõA}Sžc®á¹ÕË)1ˆ¬Eyi¿8>7×7ìµãÇRY“¡²ê{Öö¤9hÏÞ}ìß“ÁËÏp5yh ±Ç^>fO?÷ŒMÏž´µÇ¾h+Ï}³H¢ž{ß§líÊkì]üˆ-¼Ò^xöy»¸1µÃW5e¹æê$õŠ!nã–?uÒÎ\¸hM{àâ„@¾%»ÛXscð÷ÿ÷S{~ðƒì h#êU>Ìèc\£OP'zéSÇRãщx -i®U}«Ô'Õ6:Í$Ò‚ÈZšç‰[®H[~e( âQÔgš{´É4IC.AˆS*%¤«¹X§àHWþµXÔX}îñ/Ùî]Ëéä+FñÅLÔÁçFÂ*ûçî²N[ß´om‘3o=Äh�õw9eÝaøf@‰ÅîØÎgÎ]´[ïþÄ.h—˜x7ÈÐ6mˆóÁœ`1óðw|x¶qÛ“™—ŽGÞ‹ðG_°ßúÝϤ¿#@£€}«Î{p5®½tÍA–ÖÕX$—;˜Ñú4åo@Á$so¾¦Jxõ`Z 1¸jÄ‚¯½pÙ‘Ál–è-”JQÀ¹91kç'ò¾± °¸áD‡jXÖòNÆõ<»«€Aq $^vßB{‡åÝSUu »GÐk”H*ªïI>+by<áܶÁ¨%IÈåFViÜÍJ<Å,÷KE vÊSÛÆÚç¨ȸ¥6o5(F6ÖP´ëSN ooOr«{@¢À¯¨ÔIpÝSÈaYÜ:dp-žFŠJ1ÿ"°¦ÛNäïo‰|4\(JÔ¥öă�&… “ë”vÏ)ÊB@™ŒKýzþÙ5è¨�²|ŒrôŠWnGQÉWýÈûé¤3b;*¿"0�0{~ªÒ¤R'õ˜Hè÷}ôFçïÁ`ØqyãJ[¹þ†Seª{µ•ˆëq 1í4ñµ±‚Œ©‘®5\Œâ‚\pºÂGôjúDۃ܃$¢K3®§ÁؙCˆ.O“ÚÇ´K4Ó\ÖW+�íåšBŽÆµ®/.,綯S?‹Àx@w…™ÊU�¦Á ]Õ¥ÏõÕ"™GvåKß"!Å=³ì7»wïÊdö®¢¡Ú(‚Ø\—[`_µo¬ÉK«»$�‘i¨£xBî$裤/rV:è±"×­ú7-‚ÿu- ~Ø!(Žø>ÒøLå­\Q¤‚¶Šc1it‰¾Ž‚ÔîÝkÅv $‘LÕ "CE£¾ÚSã®%µJ5—Ôm ëűIŠ;žnì=רZÒîmð#2KRy°KïõþS™Ü½ˆpÉ„¸j¾pá¬Å€ë©ÕÕ=¶²´p ù®Œ±ìnFåŒc w ¨U¬¤²Ñ]ÿÐN–UÌê–°X·!žqBé0½Ï¤`„z…ÈNzŸz¾wÙ¯ÿƒ›íн¶¼²”‘ €ú¼5ìØ â»Ê¿çö‚ïWx»ìó0ó0—K93¾_Gamãöwp!ø ï?¹í"DBk$¾Ç½mT9ÓZ,~?ýôÓé:v{)Ö÷Ùôï¾ ^ñjÝAˆ6Ö®`Ÿþô§“m—CÜrùצíZæR%ˆx( ÂõîÁÜ\B®ÎU7JCñGwoqï¡« ª'Ú…v`Í æ·jÏó~ÉÚ6—¡É×ÇÌý¸žËßÓÞG¾FgáS‡ïþÇÞàï7ûîÿ»¾íË÷²!X<ùä“÷ÅSÚģ#Ñàrâ'6.˜d1Ê�`rx�ãSvÄ÷Õ¯~5§�q€ˆ(Z�ÈJ ‚ôéÄ�»t:âæ>:›ÒÞoØÆzc :°b_=ýu{rõiÛg{íS Ÿ°;®½Ó–w9ˆ÷}2fhñš?q¼ÙÓÊÀ‘øãÉlØçÊ @'— d:µNèÔ6ƒS§š�.‰O›Ò�TfÆ ,õÃ�¦É×¥�@½ê¤ºˆ´ ù‰ i4  æymĨGÒ& P t‘c�­ÙøRÏr«A>)ù÷qd‘ 4yPNÀRH(—ðÛÝwßmúЇRÞ#“]Z&_~“›~ÓiêTåH§>É#€­Œ(~2b3±×PËàµý ’ý«Oá>”GDP =ÕN¤MÙäÆA®èÛäG“›”-¨?ò7×(…ĉRmÃý(»ð,ùbÌð›Ü[P·R�{~G¥#ž¬“[õMè B@ èH¸N>ÿäOþ$=÷3?ó3éw¹­¡ÓFRU€B¼äþ(Ò‰Ô>ä.(žl¢)7qFFÜP)€HÍ@ä)ŸÐ6ä“ö¡,¤/ã”m˜¨†¨3Ê,7qcK|ŒAÕ#fk6×K‹#[]Ûmû÷]‘NYpª P㥞µå&O‡›¶ÛÓYΟ9a§ (ýÕïÙø¹ÇmÒlÖ'çNÚÂþ+í•»~Ü_“Ýrë]¶rÅA, “‘uNJ­_ܲ¯·×O¼ÞyQÒ©sêŠ:…$ôGôGi‘óó?ÿóE‰²F©.Ʀÿ;½li?-œd’²Etk#²ß´³”S¤.!’†TBx†º–êPÿªoÚ┌r¤…‰#Ä ¹JýL.¡4·ŠÁ)9.òDºŒ«xÊFéSOÄG¾ãBäü‰§š¶Ü5'X¼ƒÂÛa0Ѽ$‚ýéÖ[oîßJ5¹ùо*ÂÙ÷:O¨uºË%”—¾ç}±otþNëè; ò_ÿÝ”‰öçy毸暇y¸\‚,Τëõh è,þçÿýÏ;§Uâ½îR %Z8ˆâ¤¿ÞJˆ;X¡g´ì*Z´ "ÚÍ’ôoóé@÷ ³öo¹å¨Ê; ºí ¸¡f’ÞÇRxpÙòiIŸ2¸«Ý)ožŽŒ&­qÆó2,ä GLKž¸§ÓYg?ƒÜ1è% ©Ê<¥+" !’žcÞ^î®%ª𳃂²¤äø‡…O ÷óÝÎé³p:^æ'œp²œtüDùb®ë€ãìe™öê%ž€V蘢¡+’0dh’Q.î¥ÜHV¥µ[’Šº ™¤dIÔ®` `ÜëTÖtÚ«AÔ¨¬%yÔ™ÀÓ!fdµ~9Cy‹õ ^ÞÑR“Ô»)Æ!’„ú©òËŸk,õ!3û{©øsÞ´·ð~>Í�üR©DbŠÀf¶Xv‘ãiÌ:FÌþû_m*€ûÒþÝ~Q%Aý]j*² É•ˆäÚ×¢(#%Õ÷—u¸åÓë¡ÿ¸[—ñ%�ºÆ•ÈWQ‘FÀzXýÁº€©a½ uRé�¸9¨¼¸¼qBuìÊÙZ·.@¢=DåPþ*ï<ÅÝûVÔ9â÷I.ÑìÊG웜$ÐWcˆ* >‡iÞ‹dúƒH¤/õoUÇÜÖã4ì·JŸédyy—É,qŒRµûÆ8æý=6 äÂvΑq:î=EJQªlåÀEßcŸì«a>{G­·™ µ_%¯rEûX?ͨԠ44ß™u‰¥»U-©%Εª;ßUßcÄ=¸@•Ø·¢KÜHÒ×þæï1Í_üê?»&Oü�…Üâz ·?ô7â»xñ¼mn­§¼®,î*k˜–H÷؃NÄù¤¼«¶¥{²Û]g?ŸPƒé´óNÉÎßC‹n~Ò|UâoçPÒøµŸ»iN°x‡…·Ã^0ó0óp¹½kãÚ_îÄpk®%Ì,AÎãZBϽYÑfgõ裦ôÁ΄kÆøâž°ïNiõ‡ÿóþÏ)ÿ?ñ?Qo”ï~ëÇ÷å¼3ÀÀ3tè<Ü¿ÛøUn­ÙÁ`°‰‚óIe|§8¿]üMÛÍ ;\û;#X4�÷}Úø  dÐÑh€m möÕl࢒6z€ƒJ5°‰;ž¸„g`ð;A¢Ï®² g@JŸ ûê©Wí¡—¾aß\y¤YOìÀx¿}tíãvíÞëmßZ³oú°“Yhm¬oرW_³Íí´X>|Åá4ÁÈç"åô“d ñ³¡"m� ÊÁÆŸ|ò*o>r» ƒ�e@N�AmÞ¸N:”ß!HÔ·Nq$w/e êŠÁø¨A@º\§ ˆKÆÊ-E ®ÑvL Ú0Š�ð+e Ò`ðsŸÑ`HÝ0¡þÅ_üE"6àf$såªAõM¹È?€­Nõh©%P&Oô ÈêcÑxCy™¤øM (ôcà-ì6¹ë ^®QòI}ˆlÂ5ò&`[†#úñèD¡iÊ2ž©¼R˜°L_˜MJ™„@¿Ëò ¦Ôí£ ²ÊÍ3”S®PÄ ä[.9”.eB¹‚zýéŸþéôB¢îé×’i¥é£z#mê½o¸¥nD–Š/MÒ¥oøçCþȧ®iÌQVâ¡Êÿ N§ûhk‚HŸç˜O¨wDŠ¡oˆàÁsÄÅØáÚáÃGl©1<nlmÚù çmëb&4E"OÇ^=ÚRvýµ7ؾ+Ú(I\d¡MêÜ©3öì}j§O½nW=v¿Mê¦ð©½¿i›÷ý¤Àǵ7YÝ<wnslçNžJóÐî=ki’'DÔ¾´õء̿ò+¿’êNãM}Lýƒ~.à ߚäZó$mC ŸEÒ}AmHÝòíùŠ>ÖïÛÔê[§)qö™œÄKÙ˜÷xŸ6÷Ë” ,Œ!òªüHÕCï-<DÀ ïªlJWL[˜4OÊ5©i<ûØ}¶¶º2'X¼ƒÂÛa0‰†C?ez!¹ªúNÃ×¾ö5ûßùû…_øûÄ'>ѹö/þÅ¿HóÔ¿ü—ÿÒ¾×yëÿð1•y’ùeÈqŒ×h@ýNƒæQÆ`Ÿ°ôý ¤Éê?ü‡ÿÖ r£óSŸúTš¾]Xü»÷ïìÃþ°ýâ/þ¢ÍÃ<\ŽrëÜ6èýúí zG•€žT•ƒÔf­L¼N¶ø;° `z”âlA/†u"1Ì2ðk@HÝÎïÌßèÝ †Œ9’³Ÿe`gÀaÜLÊÉS•€ï{).×oåþKyn¬KÜ€#“É´ ”.vÕKuNÃ<"78`ØûZã’Ê5ëœÈõ{êLDvPÜó°PÈm[n]b¬R>•¦Ç?JˆI&´ùä÷¦»péˆƓÒÞÖNz±L4�ÕiywC ©z€ðúæÐ'H脼ò¡ßãig“¸Õ7u‚GiD2rÜÛ d,}9ÔUKš% PmnYb~2ÍêÖUkˆeHµé8בebyã‰óÞª Z‡â ç9%ð(ƒÖ!JOc%‚±`§ Twíß*スò‰“¡äÆ mc¥1 +ãÒÞVUq3RÀÔ~×Ñ¥Kìã@ QqAö(±Û¶ï )¦øItË{ðqrwáJ‹eAžèÉÊ—Ô ¦—¬×Ç)m´ë¢vÞtÇ"dW‡´>Œ„‘ è<¦2ÉØÚßûÜ<J&C­aq; rAg£&_ƒa{¨FÄ›H~P½éÙBȧ÷k›u„µ¦|}{O,G?ôc¨µ¤ëœ0L÷L¦þåîš¶J}Ò/˜^HmÜ’ ¼ŽèƒÑmAóy;O´ µ•ÊÛ!¶~‹sÊ4 ;õ>ôù@jûáv)ùЧ"£­-¶ẆީŠ7ÚÉúói¬ å?ÞÛ"§OΈq)~ï&­zUŸè¡üGµ wMÔÖIT ’Ý÷Lê# <Ç~k²íc^d•å¥å2 q¶´cOyá÷Ygª£*뙈]k‰lƒ¼N¨JF#¹¢Žê–¤(\ÁIzN4b¬Ì ï¼ðvØ æaæa.§×5Z§¹jÜùÆöw.á`#Ñ%xT8#D"*AñÍÂ\•&øö lø`2Øì£½>~´¦Š ¢í"’.õ;ñƒ5`3E¹BnÄûñö×Mq ×Aqݨr¤ž„áôI³ñÐê¯}GµêJ£][ù¾Hâ2è«UôÿŽDT•A¿5u}Y,.‡'�­4.�1 ­ŽCg¢³êd’P®Üø·\dÜ%MÏ7ƒ•k Xð€Π¸¢‰ûž÷Üc'ÐõñÇŸ°§ŸyÆ>ÿùÏÛRcŒØ½{Õî¼ûîfð\L¢�í¦ƒ]lë/~ɾúú7ìùåmWsï{·ÞcGFGl¸µÔ�¯4ÀçÐÖv7`c³ˆßÜØ´ÓgN'Cß»®º¦éx{Ëž²‘WÀfÈ#eÐ×7É�Ä&K¬vÇÔå҉ʤ´ÑÄÉßÔ¯âP©!º¨ mMBq"#ðqË €ˆäš”-4±̦Œ X÷9ï›SòE^i#N·«|Ü£ûâæŒü7e!]M$ÄO»r]õ„"Åûßÿ~ûÉŸüɧNÓ>yŽF7Ê[¤Ï„/òÏ醨d�Â"µÐrá úáB\¡¬ä‡¼}ùË_Nu@›P7Ä÷Þ÷¾·L†äÓOo-¢B”s­2«¾ÉñS¥�(3ýŒ8©G@%À1MÖ Ä©vÖÆœ¿å„8I[í @™tê?ѧ-í¤1IãïÿñO £|hR|È÷à×ÙXC^i/ÊD^T7"X‘Æ´ê“vï+ú6縗oÈr£ú†ÄAy!W•OJ"BITÊüNÚr=¡1G[ˆŒÃýÔõˆŸ yêV ½ìNô×O¾n/>ó²]Üx¥™–Ò¶ûøk'ÛÌÉKø ÎùÙœ\´éU7Ù•·¾Ï®þÙÿÊξô„³é#÷ÙÖW?kÇþâ«n¸Û†û®´sË«6=p]sõUvU“OŒLVYÇÌoÏ=ûœ=ñø£ö͇næ†Cöþ¼7õ‹¹Ž'ãì7íLšß®jâ¤oÒÎÔ¹NÑ+n×PÖQ}KžKrÆŒ#‘°¨_ú u¨6–1V âŽÔ%è2ÔJNUä<@g¹÷ éÝ!ò”Ü qMAÕGA6–À˜¥oÔu¤w•UÄË5Æ÷R¹Ÿyþ‰ïˆž‡Ü7Ñ(û‡ÈmÝéÚ÷>0?üÿÿM¾é—~)=È ögÞŒÇóöOÿ鯧~þ–B}i6sŸýìç’êÓûßþÒ8|#ƒ �¾¿m€¤õ¯þÕ¿Jó¯ÿú¯§÷%®‰>ó™Ï¤9ë7~ã7 ¹ìÍÓ}óÌ|¯ò;?Ø¡•ÔÖ»¤5Ê~/‚È ¾–ýîü|¾qh7ÏoÕ¬ûv:Å-Å'68Y"’Ø_KÜA'êf�s5^³pZTÀÆÈ"AÂ×Ô–ŒÜÊ›ZpÖ÷•ƒœŸY?·‹â„ Ü×?íÝ’ª%pqX%Cº¯øfWÜÃÖj<ž&p¥}^+W|Í?é´ªžúòú캵p"I•Ë0Í{-Œ3ý“º£ „ÏJ$¸t6˿锑M¾Ç”[—Y!¥xü~R^�y ŒµDh€@'+Úïxžäž`à§0V|½Iý]¼x!Êòp(C”Ú1îûÆŸxØ"ªèºæjÒÕ¾ºoœê“HD(°Ô¯‡©ƒz=9P6mú) rÓíI©Ó4†y=óÚÚ™$Øšû‚YKrˆö˜Ÿ°Êp¨ì…69ˆµ?ýUý#÷"ù$ÚZ¥­]F…ÄàùpÕw›¡q?.}ÙËTwò¦4 öç Æt±ã¼mí8h•NÔ?TÏ>^‡E¬Uº™d´#è·RQ”U WÚ§[Õ%†µ†ÓAÚãÁò¼Lº®]ÒX«zóȰÓO½®›¾Òü‡êAŒ¿%º9Q@ÆX'žùØžŒs¤dàe‚L 4ý6P¿`¿©gqƒ2éÍ…šwûÄ AèCRE•fss+Òéì}Œy˜›SMgežK$›4-v×ËÊ_ÇãI6OÊ|Åý¸vY˜7TMJþŽhû¥”tœ¤Wç¾ìïŠT^æ¼iÛG£šS4Vk,Å÷¼ê8—à’¹I}©O2úr÷&nÇÔÁ…BÐvžíƒj£èÚãÈ ºíQ"ΨÿÅ~‰|‘ŒçÝ'° %«L7ÊõßçúH¹2ŽaêFïc/o${x\[[Ûk³‡/t¸,JxcîW=tæÄæ½4‚@™ U®b•Û˜¬ªB¾šÕHZ²Ewôó*S2¦NBŒän¬Î}oZÔæÀû<ÌÃ<ÌÃ<\.!®x/ê},R…”¨¢ý"îSúqõÿÝÝgN> Wq¤Áº@‚>]Bo}IÜ„¸¶ŠûGxªõ(¦sHZ.ÁDb:of“‰û̘áRÂÖVÖ€}’ƒê*†xm§øõÍÚRj¼à*Ã`0xÓ6è—÷õ—C¸l2vÐîƒu©È} %P¯1¾c8`Ð�ÔÒÙ�²0† Äâ@2�6�Pb �È!sX€7éÝtËͶïŠývñüz:½pêÄkéÄèBcPØ{pŸ]q`¯­ìÝe'íu{ºzÖÖ›vëòMvûþÛìúÕëlßòɨvöÜ;á¬?q*uZuL€‰µ=«‰¬Ñ–ÜB~ɧ6\—ë6¨üF]$g@|œ©#Ê‘´@<ÄOEépmhˆ[*"!à°¤1I›¸HWÀ³@Kâ$éómÂ3"{@æPÜÊȳÚäž” ä‚ïÈ#]Ú’¸äF†ç¤î@Þ�jIóë_ÿzzŽÓ¨ýèG;€ÀÏiB‘ëò#ßµ”“r‰@ºò %’ƒÈ:¡A~x†ú‘ëÿæy¹Ám‰ú°È¸¨‘‹ õa€ Úšgik¹„Ñ3”WJšÐI;ªpˆÈÁsœº¥<ª[‘t²D~I›1Gþ¥Ô!U ÊL]sŸ&còCÛHõ„ w.rµñpÞÌA¶¹÷Þ{SEŽJ' 2Š:”:‹ˆzp?õFÛÐNö©Ÿ(™D¾dô¢¨uHZŸ2É ñè7Ê'åêKŠ+êßüNY¤êBRn LJ›|‘¶”c4OÉ(Æï"jˆÀA^¶6Cïpf‡Jñ‘ñ/¦S¤Œ5‘^¨‡Ýk{q!›®:âyý±¿ggš>³ýÈvî¹GíâóÙêÉ—ìÂÕ·Ú…ƒGìäkÏÚê»n´êÈÕ¶4ZJÏœ<qÖ^}å¸=ýÜM|7ØýØO6iз·›v~5Í+ @°°8²uÈxš¼\{Íu¶¼{9Í¡ôM¹©áCËpM_”d±N$^ð¥.BR"dÂAã“z—__î“ü}ˆ ùG}‡¾¢>("‡HP"Cˆ|Dúêÿ<¯q¤¼*nò@»Ð/¢1_Ê'"8ERT‚d¨™‡yøÛH€œµKµ»¡±Nó. èŸ{÷îI’oŒSÇO“û,Þ/�€×\smÚ ,--^í—¾t"ŸþwÿÝ¿¶›o¾)ý†Ë«C‡ŽØŸþéŸ6ãíTš¿øÅ¿Nä±n¸>Ýãn·žI¿9r¸Wì©'Ÿ¶ã¯»‹$Þw7Ýt£=ó̳öð7±£G_µÏþ¯š÷öÓ\~ôè+öÜsÏ¦ç »ÞvÛí)žeœ½òʱ4nõžºûî{’Ÿ41PRžÛo¿mÇÁþá5csËþõ¿þÿ6sÉþôÛ»ß}gó;lý׿=æN°R‡iº‚Ó­·ÞVN$'6ùc®!|ž²ÇŸx,åceeWS¾››gÞ• ú"Ó6'N¼nï{ßûÒ\ö½Ãçá$A¿±±YÔâæœP×{8:é¡u…Ãïyßz+ñít¢¡«¤ ¹‹ûÆ \8ï@}<á>I�•Nò{Ü3 ï„•pzÛd q°B@…ãWƒÑ`®ûéB+ófW ììëãKso:?ä^H©³ Îâ‚`=ïqFmA"Õƒew1þܶù…rX)¯×Ï ×•�²ª¼üþöõDt‰'´6öÁ[Î^ç2�Àó1ÿ^" È LUÀs‘`¨•òªu:Ùë@ñB3ïC¢öµ¨ƒÃÔñÂ%Æ¢>0] H3žljI$ÝS9ñtrŒ;~§2poX[e*7HÍj)8Ìütq5(Íœ[(CÕª@~À[©³dr !jƒKIƒ)"’&ˆCû[©¨ùIïåDœVõÝ"ȸ&¤Æ­·ó°�ÔNö©2HîD‹ÁÀ¯3Tži%ýz —:‡âS¨Œš?¢b…ÚM�®HRÅ)$¶«l ñäZ! "Gǹ_x}ù>@d 訿äªÁªKúLÉ×$+ÀÙŽBÏ-:}ÞÎ%nŽ2ILýtU/¬àwª´|^†ÖY"‰8é§Ù?Aò°øU½¨/µsCuÉÜC¼Õ´ ø+D÷,åwòæ µ‹»X]J¹™CQ€ù9‘\­‹˜”ïLBt×+(mX§µ¯,î'j¹ž\èLfw--ñÄ u!:ªŸªî¼lSs¥œ®‚œ¦eÌ÷Ûú;R:m<î¯ã¼«~¯8cÑÁêP¶3Ô‰„0½¢«™8âü•)Tݯòù|4ì”MŸD^ .@ú0õƒªô×;ºã—Êdt1‰Q-¡¢=í©wD°hÛFûy꽺ìV²ÃÄ÷@\¿híÁøµL«btÞ³–ß ÌåC ªÙL$W)„¤LR¤? ‡ú`UÍbÌÃ<ÌÃ<ÌÃ~è¿ïõ~Å>øð¡ È4è¬GãwŒ#îÿ´—Ó¿…§€å°Ž�[Àn¨ƒ—qϧ¿ûŸ¾}&®¥”vU°¼'Ÿ|2©Ò£æ+€ÊÓŠ¡_–¸ÐAnÖ*r›Õ=býøã:/Æ­üëßÉCƒÏ‡”+„UÅrôó×lñÓ¯¿ôpÙ,�XøÈIM@§Ôr, §c ýNÇcᬠ’gä6€A¥Þæ´1o›8_·­f0îoÒ¾¶v7×§³±½Úù_;úº½øÚËöõç²sΚª’qþÎñíöñ»~ÄÞuðêfâÆ„Áh`kÕšml:Hê t@>� ,aÀ $_Rà ¯b_ña¢ÐéyÊCÇ€Œ¾ tæßr!€”,¸‡g$9Ãuâ“+üø.)p¯N£3 äÞ„ë<LJô);u�B\RE l”‰ßÉȤ-‚ß\×)Ú]§ÿp«é+�è¸zI†‹uޤ<Q÷.3»XNÁå,¥,¤©rÓ)÷ó7`о&õ5à'y– ³6¿r! ò “ÏÝwßêQ.H“¼å$ï"E• ~ãßò a6вJ"ˆ´À3Œ¹KÒ÷È_¯”D° ,Ô€’T!¸F›ŠAÈEÞ ¤%œ:ÖÉÊÃoœN†ôó| }×r‘"r‡ˆF´—Üü¶Ò•’…ÔQÔNR×qDL?•{ˆÏOÓx߈/0œß(Dê\mMÛ«®äE 9i‰©S92Nˆ‰I<R•!¿äSãFÊ<¤M>I‹¾+Õþ±…sDôqþ±º÷ [ZÛggöî·“×ÜaÕÅóvÅÉçmõL3·ž9eÇ>÷Ÿlwcˆª¯¿ÍVÃÒéÙ‚=zê¢m/ï±››qó‘{?n{ö®5Æ­ƒiãÀ¸Á¸ØÜ°SÇOÚdµfm´ØÜsnãB3áM“?[ÍAŒ òCy¤dAùɧNÞP.¹˜Q0¶¢bÆ£TЍ_1ä+LþTÕoexáiH†¾MÚZ\1hG©½ˆA+V­úiDZ!2•õ ;Vs´Ê,¥×?e4óð½Z�3®~ÿ÷ÿ -œ™;/¾ø²ýƒðsi ýéŸþ™}á _(dÃÙìKIQècû‘D¸ˆ—A÷ÜsO!W(ÜsÏÝMܻӼJøÿÇÿ¿ýÃø Á‚Äïþî°_üÅ_HïÏ}îsöå¿j«»} ð™Ïü…ýóþÏ›ùÿ¤½rì•ôÎyî¹çÓû‚ëïýÞï%r™ˆ€_úÒö¿ñO›ôŽ4ïÊGSÜ(?1¾PŸxôÑÇŠ1–y²Æ?ûgÿ¬É÷|3Üÿýö÷þÞß+ä †ð÷¼çžf3v0åÀŒzB KŠ<ŸûÜçÓsŸüä'.©û'OÙÿú¿þ¶½~âxS/«ixÿýØ?úGÿ—Dôàßù—ŸMÄN‘B0aË3ˆ,Ê{Á»ïŸÑ\ýHÒÄ5ÀÛMà‰þþ†ž?M/‚Á°€"ñ~êlI¼yZ톾ª¦Ö*„ÈØ 9ôI篃€öۓžZ „È–€ εîÈ4ï´àñ,¯ñ˜Kg‰ °±1ËäÒ�¬ïq: —çCFWzèƒÏ¾kUä‚Aå•+ ¾Õ.RP]ªb›L§­*‚¯gg¡}»ªivgÑ'> nëÄò©u'jDƒm„Ú†’£B˜Ù½"ÿFY·O<­6qGý]äýH¨P~#Ù6’ ú$†8–z³l0«]\§Ü ‘�€ÀpОîOuD?šøéj7ÆySfµÃ(ô¤ëé+ ÔÈ7¸ÔHâøãß"Ë–R×ÖQÐw4ÄÅþDzÅVåA‹aÈsIQôW/õ7ï‹-@‘Fª(fÓ¡GsÉN�4­Ó•¯–´Ñ®ÍµV¯2©¥Ž{Ü£LHªÊX‰n ø]ꕸÏA‘ñ–lK+•?Ôç☲LðJ`l®£Y’®é‰UOu§»*�ÔÓöl«ì-c¤ÌòÌøÉÕŠ•øÔÖ1-Ís"m‰È ~Ô7Gyœ‡Ê „©ü8yn!ÛZ6“ªý˜9WýYýDîQ/q‹`’Æ1„ÂÑBÇE¬Æ¡·¡TŠF&5F•¡•`—÷Nß R­û%¹”°Úl'rVßøßö%ÆÉ¥ä å? ¼¯“VKtXÌv5ØŸúA‘¥T·±­bb[ôdÎÕý‘(çrÔKÕà’y6;È(iÆù¨O²Pý}Ðö)4vÓ‘(]¶ïåVÅ&ºÙéƒ'ê/i^¨­” û�¢íL:ãݽˆ¬RH]ùá&õÆÆë¤OÏUS\y¥é“ÓÖ­ÑëyÉ—Ö%¬UN’²<V}n¤~›kͼÏüžÊ8ø^«ÍÃ<ÌÃ<ÌÃ<¼ý¡¿îÔû»68WàüÛ¿ï´'žÂš{Û›©â¾•ñeÒ`ݱ‚ø¨VüÔOýT9ìù½zo³.ߣàQà…1› ööÄ [nt…Ù¿ÿ‡qMrÙ,�£Xøö\jÓ'àY 5 ‚WŠl< “g¢ ˜ccBZ€Ã<‡áhÜlä®lŒÝãúÂÈ}/6 ék¯»Áªå½¶z¼YD7êf“uåä]¶ùú†]8µnŒ³³WŸ³šA¼k·“p7(¹§í�0È»€;ò@,pV6tlŒí’Ý(K¾aIi²Œ½ÈðÙ4ˆ€Â5#à´Ü+°×I{~'~À|ê\›*òųr]B¼Ôyâ[„šR’°(`I\Qy@ ?qp?`7ƒš2‰5.Àšöƒ4AZ!$Ë (*ƒÔÏC=”ê¿ðø@ÒÄA:¤-CŸêŽ4åf€ 2Œ�Ù"PGüN]HAEùÚr+ 94)ÆSõÔ9iÓ? ˜H‚S®HA¡¾hꂸÞ•¶È <GžDþ¨«ISõM;ð·\YHÁE/ ZKÚ‹ð@½Qšx «n˜“Ž$2jñ,'‚yQ|âŸH'Ÿ¥pAÚòÃ�Î=<«MµN«ˆ$"£™6Ѥ+·0RŸà£Í¸U"bñ‘j‹6ÕR2† /RžÑf]ãR|â€/‡H"ä‰çé/üM»ÉÕŒ #š4WEÈüjRØà9¾éc¤Ï}¤Áó"/a@Zßj憓¯Û®µf|Ýt³íÝ÷IÛ\¿`½jã Í8|æQ;ýÊ ¶~ôÛjÀÀý K¶zu³¹v¿]|áI[¹ín[XZLÆœ={÷4Ä%{ý”K÷ìÙm»WwÛþºN¶‹gÏØâòª-/µÒRä‰öcNQU™%qJÞUwR¨ˆ'ò4ÆiIój‘$—7šô~PæÆ6uNœJ›e"’)Ø_¥~¢EiPßrm$™È¤GÿáwÆ5÷Æ“F"Ë©Ìó0ö}rç!c7ïÂo|ãö+¿òM*NO>ùTêôñW_}Íþý¿ÿ÷‰|ðá8ù»ÿÃ?ütþÿ¥ÝrËÍÍØ¹:$ZKóþÔ§>uIZ�¸ï~÷åïþi¸TÊ<‡1Žþú¯ïKŠ¿üËÿ(%q ‚bÆûßÿ{ùåcöå¿bÿäŸü“´áú­ßú­fL¶_ýÕÿ*ÍŸ¬[pS‚bÆoþæÿ­¹!c|üãKä…ûoÿ­ýÚ¯ýšýý¿ÿ³iðßÿ÷ÿ?ûêW¿r Áb}ÝI[¨ÿ`ø(A€0²¶vkú÷c=aò'b¿ð ?oûØÇ )ä?þÇÿhwÞùîKÊúÙ¿ü\"yü?ÿ_ÿ¤„Â$?þãÿÒäáæb°ýÈG>l÷Þûâ¶h.¯ u¯\…Ô] ~9¢ÌÊÉò¾â­†Ô¨ñ¾Ñ»‡>OË~)Øw:_õvªªÛ<߬s$¡?+@W %yóøº`ødâî(<þA:0t_¬8—[ ¥Z ÝÕêB~è‚eN¬Xè ‘\‹�æù¿½¬uVkXNù!}\5¨´$WÀn *Êü Óÿ€ô³Y”ËoU6DxÕÊŒwOãÆ“Ì<wp[®R-:äÅ÷Œ"šTUK ‰€blsê5έj#)Wxþ#°WpÞûÀ,Ÿ"·tÊ|y¹JàöÖÖfÙ?K…A§–tº]eRÜ:$ ÚõêÖ†#hZÊU;0®:­œè ~àŸºZJܦ~4Ë™ªuq1Èñ“ßAU§³KÊ@ûú^¤*ÀnJcV—¡©g´÷ñ2´~µ/òCÛÙਲ਼û ìÎàp×½AÿT<í†B‹ê”(DF’òŠ“E"ùj+ôçî ÷H°ˆ†Ö­KëþEëx’_ÏDB€ÊÑEó”» šuú‚÷9úáb·±ó Zš,½y$‚Ñ£¡|/×¥í ç̘O꺓FÌŸæ„2ýÖù$<Ème•a•Ü5ÏTÓtjÞÉ0‘03,Æì”‡©¨%@" »§£:qµm|éxÑõ>¹ÎãBµµÝ›éý'5IÆ*_ßÖy•ñ.E!ÆŠå9CjFrË¡÷lÛ}ü‰0X!y)(ÿÌ]>~' ïš4v¹·v—F³0×h>Š„'…2^]¥‡¨šëÔã ï£Oš ²2†æ½óçÇÅv"RBì‹Üå›/‰»îÔâ8'áI=éŒÉ4w¥—¬ÆòÔ¬ÌyÜWÞÔ.*�ó&ê.ÛãíIJ6õû}-åzv‰"‡¾eKP~ Ñ­¿-AŽJö_?<#AtM*’‡UVÞÿiòŸUyî5å§q™~¶©æ~\åøjî­Û±\WUÞ¿d7!´cªÇ*Ôßw·œ‡y˜‡y˜‡yx'†¸¾oíµ‰ð¿SèÚº{ÌBtÍk2Þßà à@ü Þ%[¾â×~(’2cZqï D}â‰'ìÁL¶I”h¹Wiôâ§_†H{Q~G+ûˆîSvJGeÚ©®bt@ë’¦^t¸4ÆûFéìÏx9„ËÊEˆ�:ZàœN–‹0pƆA¤Éð³0—Qðš{¥¶@ˆ`žN’¯î^³ÙVmçÎ_°qÓÁ÷5Ïœ^?ÓâÏÚ_n|Î^·×lieÉ>¸ða»iåf¬ìå~ñ…íÙ§Ÿ±‡öìMàÚ.@ßå»òª#¶ïÀ@Ȱ@* ‘#È�?¹üÜ=eÑ)é�{êøÚôCp�L.,ÿ bðX \iE’ÜOHUC.”6öÑÆ„û�6¥:@+¹-щuM†"1<U9hoî‘B‰|0Ò¦ ˜ì a|ò“Ÿ´Ûo¿½¸Bˆ€N}«®ˆ— ¨\5DÃúõ@œäKDòDú:…Ï3"¸ÎDKS¹I[ $´¡\^ˆ8 G":ðMû’Wâ– &?ˆ.ä¶B²âÔŸÒ&=Ú‚üJõ€üÆ>"E =§‰SÊBGRHÚô?uÝhȽ‹N¾¨rª˜íñ"Iß°+õê‡4 ˆx¤¶–Rò/Bú™ÜM¨\R{ ŸÅÓd‡ Ú@ó›üYÑ×"/i£-Å8çôå¼9wÿ¯ãâ²EiS"ä(Ÿ2ѶrGB¹( 8˜D\ñŠl$š P:)ˢ;†øm”iÆBÓ/ãø®=WØÊžýiC¿~ó]öòƒ÷Û#çÆvÃU·Ù!Ê÷Â#6ûâÿa§V÷ÙøŠC¶}û‡måÀ![¹úf;qê„m6õºÖ܇ÔÿÒÊ®$Y¼µ5¶­-»¸~ÑN7÷¨ xQö¨°CYtjHnj(‹\žˆ4AÙäF®h¤pAP;3Né ô ©Op¯H‘0¦Å 'Û¥¤!·7ôg÷D¶êcRPiB�÷P>þ–{‘€¢i¹ü9ùÊP‡ïOˆ‹[ú?s*¨@ÜqÇv÷Ýw¥>þ7s_"Ò¡*ôõ¯Í0�J†Žy‚E ß åN×]wݵöè#$õ†Ûn»5)A8°?b\\XL'›¹yà‰'žLäî#ÏûöíMïx0,¼{ˆ÷!7ÞxC«¸žâÔþ>O²~ë‡x’ý6u„o}ëá4@PAÕ‚ð?ñIûìg?kO?ýtzï¦ã@ée*êÙÉW«éÙOúÓi~#ð k©PÍÃå´V”Ò”ÔÜ�ÖQ4hÁ}�ÿrΞ=ßqg¨ðf}”ЛZËJ=Œ4X¾]!‚5ýð-¡`Á|f¹,dÞ«ÔD×€íÚ¢º€ÜQðÝžVŸvöZ­ø¥rénðç’TŽsF „±–©C[z>%×߯_gÀkÉ±´´’.K`_•×nm=NÓébÚ—;¯+¥-%‰˜ÏœXáù³ªœìP¥´¹Ççõ6>ÝãJuÊ@£§Ýžì£kÔ¤y=‚†:yÝ­)|D…„ÏÀòç&ùô¹f(Ãâ¢%¶·7S^¸Ø”a°™dê-«âIr­·ã‰æh‹€[Ÿt¡öŽ�±È%œdOª�@†U‡ä"ЛÓ÷À¯„RG#w)A5Ù™Î\=eZNy‹Œààç¡{"ÛÃ,·[«šÒç#@?˵ ñWyZÌîÖSؽ{-(žxÛ©O«Žâ {Ý'b‹¦(}CÈ!?Ñ%ˆ.¢ñ-žpñª¯!w°Ù^í% Š?®…Úø‡-‘$·ŸlA2*ú3­[õ•[s·öíéÐO:`r¾Y§¬ØòÒJÇõ¡ò%†SǵÀ UäP^ûýTdTgêÏÃŶ 2áâÒpP7).ÆZíu9ÞvÃì (Ö¨ÁÚ6ˆdž¡«¨ÔV!2îFã¶ÆV;·_jì-$,f‰@BMWVNf¿Æµêį/5ûÄ¥ÎøŒóF„UíÜ1s•�)U(.Íy³YÕ™£D\ò¹·U©3³+¾bù£ý õǺ•uV{¶D¾Á%cfP]JòiÛÜù4£Üb~ãxQ¿_\jl³]C\Ä#ÛAŸœ ~Ç´?±¯+¨ }Czr{Ãßj_úÊ´«Ä2 5õ¡äd²UÆ´pêKýy¬oÄ׺½²Öõ˜ÊëQõOH÷TN†pݸˆ¢<òž&-ÙúF¸[›e2 kˆ‚Uî¹" ï`È–©ÌNè)܌ćËÄ8ó~0ô—º>Ìn€¦IÍhN²˜‡y˜‡y˜‡ü õAkW~ÏûöïºHè“.„ h¿À7ø‚”åãþ)*íd[‰{†¨b§}¶RÔ+°©€Å±ÞЇ'ãz¯OJèïKâ¿c¤K¼üÆ> {m?®>é¡_ž7JCé°æ~Ä:ÜJ‡Ñ¿]:ý4b:Zï].á²!X�dIòN�;A jH€lKµø•:à€NÖ3ˆX$K¢]ÏH)Àý’ïMqîZn6'‘óüú9;sâ¤~í¤=3Ü´—6_¶W_´SƒsöžúN{ϕﵫv]mË‹Ë6lëW5ÏrâóÄë'ì±GoÀä§›x7l÷Úît:ò¦›oL ²�7:3Xö P ø"FDÕ&B“Fy€gvL�(:yÈ'c.ß)Ÿ$kT‡ÄÍ7  Üh¢ž sñF×!2fD)ƒ8ù7y–:€ RP �,ˆˆ |Ê¥‰”,(q”Ò>2fpgyî±ÇK€yä>êVnÚ¸©.©o@þ-½R©?w)kÈh# ô¨ˆ”vÐ'n°Ò)Fâ¢ìäü3aRNòËóä`ëœv±ù!òJ<p#‚Ziî6¢a‰:áò‰ø]MH …2Ë=Š€lÉ)‘¶ÚZnU¨ÀhŒ s"|ùË_NÄÂÏþìϦû¨7µ5“/‘èH¦‹("Ò‚ÜÔÈ&/ôú¤ÔGrÿ b ÷òòS?#ßüNºþçiòËÜCœ‘¬!e ‘cøg•¶æ õOµ7éѦ´å‚ £9ˆ2s?uÁ‡ß¥¶ 9‚t¸&f¡Ò&ï¤-rò@þE8£<kk{l­÷6ÖÏÚ ÏoØb8.¯®ØÞսɿí±×OÚ·žÁvßô»þ°ƒûöÛÂú)»pò¸½öÐý¶ùüC¶ñÌã¶Þäiie¿m¼ÒF7½Ûöz_:µn£Ê–GËɘX¯6`îxwÓÜ݇ŒOR¾¡N(›Hc"yÉõ ù–ª÷뺌I<#eõ3¹!!ä.Fíª9–{TO"z‘'æTù¦–ÒŸèkO1."YCcZ׉‹1+Ã÷ó·Ašþ6§”ça’ŽL'—\“d5’Äý_ÿßí[ßz$)PüÕ_ýUþÿñ?þÇE) — 1鳬Wü·6^T"žzê) 6ùΟ¿ÐÄÿ­¤Já~/]ŠêÆÄ¯üÊ/ÛÃ?ÚÄõdr½ñÛ¿ý;ößü7ÿïìzD¾Ä­œh”XAï ÒPô[7ýK‰!œB…(iñ'~âk¨f<ýô3ÍûàêäÉÕÁ¬$ ¹¾â$ºÒMjžë£¡È©Z7D蜇Ë3HYLŠT¼¤hÔß VY6žþؼ՘͘XAëº7 qóÉÚHËMbÜ|?ƒòÓßDPÛUªpªÚò}“ëào<ý_�­Á0“Á¹J… ª3-”VkØ ˆ™\1–B½×…x@ˆ§¶ý[îHtêEä W5ð©mHWäÁ�Wz¹êpÖvZyz¯[mª£Y&"ÄS»N¤p xNçOsýNKy¥€!ò…×ï4«_4@ØvKˆiËéõ®vp—$mÿÓzHk´…SCŠÇå×ÙÛ·õ :=>úisªÄ㟖5X³³³…z–]¿-wÀ¹öù¬Ø”/)Ò ãS}µ›ß`tr\­ØÉ ƒ»˜”:§ØÚÍr\© sÛˆˆSe‚¤¢”Nzû‰ðÚäóšušÞõHÏ·ý´Nq%r޵À«�ߨb_õ~4HíGÚ®0ÈN—“ï^–ÇW•É.SÛY]!ª¸»……–4àê0³Òïò QÚ@ÏÊ¥ƒöëZôÕ¢ÚF$b$жC’¨;§Û¨–g¦]7$ôu¢ó¾0ê´}t?¢±ƒªÊÒâRÊwRF…ðÞÌA»V]I°²K]E@N†A×Bç+Wð2 ÑLê&|—¼M'è+q›1fÀ·Òº¥ÉÉ’·ÉxÒŸ§U�èG–ùj)8Y¦.¥”ÿ“½? –ìºî;Ñ™w®U(Ì�‹$HPÄDBà N)JE…Ķlų¤ç~ök;ÞS¿ðó—î¶ÃŠŽîVø[GÈîEÈݶ[á°%RAÉ¡ÉEʤ8ÉIœE"bjï½™yúüö>¿sÖ9u (�E”r#.nÝÌsö°öÚÓúÿ÷ZUÞëHj]_wd¶.¾³EúË3Ȥì_ aý|ˆâÚÁzÅ|½‹D’M©vñ»9£›Ðm‰yÌ£†7é}eÒùHeNhH=Û[­Œâüe;I†­R.‘uǹƾŽ�eÔå$˜5ß±÷œwÞ””ƒe´e&£–ôáÅú2z‚ˆm’5úÿ.k³cì‚qß„Ä`L«ãösÌßþühI ™KÐy*µnî‹mß,óâØ‰ºõ%ŽÏX_¿ŸŒ£ç§Q;¿ØWÚ8ãù?ëçöV¶{¬®OTm_ŒŠGB{d5£f,«ÆE•½[ŒJƒ›>f\Vy^e\µ¬ðÜÕ¼“CNá £yg‘i‘i‘éÅœâþ'‚ñÅNŽ'ð‹/vÑn÷-î\÷õ.f(p1©¡ýÄ}Ù0ÿ¸ßÐKžûR£%`7äÂÚÍ7ßÜÖý‰„ýäÛ1üñr¹ÞëõÎ=ÃŲü;íî›Ý7×·«aöb—Ò–v¿ÎÍñÜöbO— ÁŽáw‰þ­VáéhÀ7ŒîqÍ @éO {@>†i@aâ8 £ToÈ9ÄÈîõ´Zÿþ‹G¾œ>³uo:ºz¤>l§ï?öºtÇáÛÒõ»¯O+µa„ëÖzBà&A• “ôò¿æº«Ólkš¾ôå/¥o|ó/ÓW¾úåÜ@ €r�Dêðk˜†èÑÁwC<Ä4d'Ery<úñîƒ>˜?‡TÚ¦7�=aÊ+sdB¹€ÁHòv€iÜAýJy†ü%H†à#„‰Ï²Éƒ¿e‹3ØéoPÞ5ÄI<¬ò€êL>oyË[²,õb‚Pgò¦>–M^€¥ÞfçßLfÈ…6{¸å·áUÎ-Ûp(Êœ2â!?èýAï�䔑=ÆOÒ€„>ëÍDã�@?yxXÕ£ m”˜âûx,�8û⿘ûrÄádzÌ�ÄÔs=Ÿèꋼ%-¸€�:Gï#.N‚àzf Æ•ê§žQæ‡>ô¡¶å®¼ík_›ë-ËÐ06”­ ¢S¶TÈKÒ /Þ*à7ùó�††YäjÈÛ§·¾×Û·<x޾Tæ1Ôu ÐweÓ×|G»ì+òB÷ô6ƒ~ÙWzZ |Úí¦�¹Æ~% Îóm¦®&òF÷i×+ëùïºë®O“XÀ•ò©'3PxüØÑôÔäH:}òxúÌŸ}:íÚ·+½õmoI×ÖÏ.å±}uÚxÉ+Ò¯zMªÎOOÞ{ozðûÒèɇÒÞÏÿqãÞôôÿf:öÚ·§åWÞ™Ýx¸._m¬ÛªõâéÖó º†ìÔ3Ûí\ÍçŒ%t(ºÈ·/™¿Ñt[£±a=h³¡jœ‹ ÏÂûŽoC@‘áJ“ðÐsËÖSº'„þv³Pn�W­Ÿx›•²Ç$ÔPÉgÞ–%ucA°X¤ï$íÙ[Èa>ø­Ãp¶¬‰gbÀO¾÷'òs�x{÷îK?öc?–o©âùÐïxÇå±Ç8d~Þ·oO6ò1FOÔsÅN ì{Þóžô ¿ð ™Ø÷š×ÜÙ~‰îw÷÷Òóßü¿ë±w(”ôHEžx¦8qâx3ÇÀñõ¯»;½îuߟëô‹¿øÏòûÿèýÿ �٠ƪž¾tÙK„ÏbnýNSÎ=÷¼=ýûÿïÓOþäOÖóeÉ“1ÿÙÏþyúèG?š‰(Ì'„·ÂSϨ1˜;VöQ¬‚´Þh}†¹"áær‹óÚ"]Þ ýadýA/ô&v©„š••åì©…4$Y<SŠkŠç¢øú¨×¦ç+†ç³ÕÇ3Dx ö#‹rÓ¿œk:`Œð™dÔ’ �ðK¸ oF°6ãÑn»%=äG †ä«�U~Oбˆ(ÞÐènê@u+ šÇç�If9ŒÃ¬çõ@Yw¡3ŠÛýâm€g9ßœ‡¸QUgk=9—ëT6ìâÍùBhHÉ2ó¹F Î­j�Ú¦’x¯„™öÀ&@ðÒþyÈo’ºãå(@9 ‚€}e=°Ê¾~2é€íÎëD  i Jœ¨·ñrüÞP%¿iãñ£Ó)¤�TÖ±BJÞÎ`~r»út6¿ž2ð¼½"Á%îó¢'¼QêßDŸ—E =£ëÅòÒd©©Ï´„þH„uhu˜[Í“â!aÖ„R‘xƒ¼ó;ÁG^“Rg�´ ÊÑ}r¬/©œ±ŠŒ$üyɃÏô˜ÚÐ@“† ÓÉA]Š^ÚbÿPEÖü²ßï{20Ôy*(yº—7/÷Ï^P‰¤ωÑëÀÐÈçû=¶ÁÏ#@k;ã< Îm€ú#ñznšìªÏ[Ëç›ÌÉ´¾¶ž–ëùœ>]¦þ©ަ܍/ É(Øvæ…`ÓDJXåüÏ9ʮۺTæÔQ#ãJ½7”æÛ;ËÜ5êéü¸‚çÊœ1_Hn©g0¶Ÿ-§#̲‡~3ï±7”p8­—HÞÓM±ç}ÆúNëZþlÜõc‡ŒçF¯ô¬âühêk©çv/¤Œ$õÁ6 =oú~4F÷ȽÈ)=”‹ƒ:©­«§©!”ÍzÄ=¼X7/ÀØ?–£Q^(yzÑ ÊnH²0︦µž ÆeîkÇ cl4î­õ1„l±)žÏ{`ç[ \ù¹Iê§!ik8×*ƒ¡8žWÎGQw»vv!ƒLáf'!…ßÊñüésis|>-5¡PÙ«l¶ë½.اO*e}+ëöÀ :9nÆ+ýÈ8˜5¬½Qñlum‘i‘i‘éÅšÜO ×5.@ìÝûÌ?âžo§³çïÂÞÂådɤ‹­£ÃÏw²ËÇý,öð<Wp©™ÁìYÍ+þþû™Ú4´Óx ™ý¸±ûÖgËÿ™Ú2,‹}5—ŸÙ'‚K‹…\,ÿKÙ‡ ËX,¾“†�C=›[< xûÃঀo�HX$- t“ `Pdžœg1xçþؘ¹óôô‰'ÒçúLúüìËéìÒÙôªÓ¯Jo|ù¤³ãSéØS'Ò©ãgÒÞ+Òƒûòqö‰'O§ÏœLW8˜®<tMÚµQÀàk¯»:mO·Óã=™>ó™ÏdO Äëaà¿úÕ¯Î̧èñÀì%vêG!.Ð&€VÉÙ G=Xh7 $‡S=uHZ é¹"†KðP« rtR‘8 a‚$°î$@ÙÔŸz _ú„úòC>´°Bf)J%:PÚHbÙ|&9~üãÏe½ûÝïn½R…6Ì@0Ɇ:½Äv{ófJ<Soꣷ‰" h;òÇÛ‚dYc&ñ™eËD³lãÅÆ²=ÜÊÄré_žÓ£²ÀÅ82•…Æ-bÚ ³Ž6ñe¾îu¯Ë€·Dåí­êÉáуŸžC?èkdJ‚¹§Îƒï©7í€ìνë]ïʺN×”K»ÐÊ64õ¢lô€~¦l ŸÈ”þ ]’ˆxý0ß‚úÒfž`‚ÄäB[tÙŽÞKÀ ïx™üÛ™‡x—úZ6 .ßZ‡þá}t=3ÔaÊp,“5ŽH“PF{¹=Çðœád¨Kgu¿¬áe¢6Þ­,ïIë»v×ÿœ¦SgN§Gz,}ì“Oë»Ó-¯¼5­èùž=ûr<Ò%n]íYI[+«éèkÓÞý×§›ê¹ììßJG8Mÿâ3iòGïO[ŸøéT=_¹ýéÚknLGöL+«™Ü£ÿF¶z%’4a{«Vã•FPêD£c|/iŒ±-Ñ yÐ×è²â–½2#/Êå==•ÐóˆF%òó¶¯Þ’$¦¡«†‹AÞüm˜ú[ÃŽd"æ õS(‹›ë‹ô¦n¸1Ýu×÷§üæoÔúu"Ý}÷÷gýµ_{_^kÞùÎÊú÷•¯|9ýʯüéoü¿‘çleMš¤;ï¼3DþÙ?ûg‰p1~ë·~³3‡Ò?øÿ ø‘îºë5é‡~è‡Òÿô?ýÏ9¿—¾ôp½6#éð‚qã7d�ì¶ÛnOÿá?ü‡të­%DÆoüÆo47ùÙ+=™~é—~)½ä¦ÃéGßý®<ÿB>xík_“çÎ+\‘Ž?V”î¯0¯Ê˜÷¿ÿýy|ãP& ÿñ?þÇéùH?ñ?‘þäO>•~þç>ýÜÏý\žßñõ‘|$·•ƒD”ßÿýßO¿üË¿œþÎßù;yžþWÿê_eÙÝzë«[oW?\ö–Yþ—ÿåÓûÞ÷éÍoþôÕ¯~-ýÁüA&q°ö,Òå)®/ÏuÎ4Þ·oo»‡¿”4tÉomh‘$|7$ëӑ×8R~ðr;¼UÜ×—[ö€ç„óŒÂMgu=ÐÖÖk5ƒRqomrä}Æx%³yÉgÜURÏCýÝ7÷oÁ�zAO%£æ¸À°{™|!=7 hZ\ÕÏ`g–É€ïëëu–V ¹`Ü…ÈáÞ¶6›ü‹„ñؾÕ{…Ä÷ÜòÐî´iB,\Η~˜5ä~ÁHoγ'ZmʈÀlÿ6éßìÃ'•°‚òz©YLÛºÆÛ¤pö$eðØÏ%²wÂM;{¯ÒÖ¥œ7’Æ–½±Þʆ7qÎý[RBLž†·uø¬%ФÔÞ(Ï7¯kÐsÞç…T@(“­Ê-{v¤¸¼´Ò–E%|!E²·ŠTú!ƒÓ“•F¶%¼Œ€j–é\FT (J,ŠD'û]o—ÈÏöz7ô]i×Ú1*8¯æmþCOL-ch–$#yþ,á¶ÊÍ÷Ì­ézÞ„Z[[nÂg bV=âˆg=çm>>É2Ú€|·z:cïð‹mˆ2êDö®ØètgÓ&,ç•Bõô©ØŽs⸱7M§¾ppš›ùu˜´mh‰@©x HåÂ|ûl ÛSôÇÐ;ä§>Îo@|ŸÛ@ÞÍèœÎ:Ûƒvë½AØ·‘„`¨Qæ&õ/öƒcÚy¢6³~I^!?¼H +úTd³¶¶Ñ„Ü<›‰艗†Ô·ÈÌÙŽË2ñCߨ!ËÍÛ9cxíHb‡ ÉEqówU lŸïÖˆ†4Jm]ìƒBXéBiDRK$/i‰$ç¶öV&z9*. Â~»„­Ûè‘´†8Jÿ/µýêªf}"\j}¬¤V_õüièÒ<>–Îíy{BI¥ªGˆs¼åºÔkó¼Yãºc⻕¥¢wÖ!ö¡yfÙ‘g³–iŸ‰Ä’HÀR&|žmpõÜ|¾^c6ÙƒÔkåúÆz&QeÒK}¦ª¦†'+Þ˜(k)/úLz¨)cÁYã #Bùxj¼ZdbÆìBÎ"-Ò"-Ò"-Ò‹1 øHÀ}6�ÿ™¾f­ÆÎ©'ðg{ïRÊðÌ`¸{°Gì‚o}ë[{ûúo'íTû&/ëÿùÈ{ø7ø{qpĈ×|'i˜Ç¥Ú®^ é²!XRëÆ4C¡Ñ%1Î{`5”Äð ,Pyôé#yãŠÛìsg·Ó‰“'Ò‰¯~9mìÚ›ì­àÕIzìéÇÓçÎ|.}méK50¹šÞ2z[zÛ÷¿9­­Ô›«GYùFŸxâ±ôÈ£æü) ÷ª«®Î‡E• ÆýÊÊZýyJwÜqG&!°ñè€ææ' âöÛoÏï�z[šÖ� ’|W₇HžTñ°àçQ»A£<$v¸¡Qôæ€Ìè‘5Þ(8P˜´¼õOùÈÜC?Ïð,˰LdB’ý7‡¼!ÉÃ:q8GN|¯A =г >ùÉOæç‘� DxP”8@9�Ω»a$pÐ%ʦÝè¤U~ô€Ò€¹¶ÛÃuá3ú Ùƒ)€:eó½·½¥ó>Þ-¼ù_nŸhÿhh´?Ðo#3@ 䯄†¬¾ò•¯ä¶á _È7Ž_úÒ—æw`Ýi`¥?ôâ€ÒvêA?S6·p‘™ä>ç=I6ÈÉ#ô7}ô±},ÿ†ØA~è³.*=ðR¶ág,›ï(ƒ6ó>õWir£Ï AB>н—P®ó2×[Šã£Äz=“¿£l XÈ]ž6鹂±™& ƒC¿PßʃDÛ4D¸àßRhm—¼¢g ÊtÜ“/²£ÝzN Í’ŸÈ‹v2n9>5nAÃ@¾)“òq?:q&ƒ…L?þã?žË¦Ý?öxzìÑDz.Ilaœ¯¬íÊ„‰军ÒôÝ»~*}ô¡ôô£ßJ+ŸüOiÿç>œÎׯ†•غãméÈñGÒêkß’6vïIcn6ñ~·ëßGŽMk«ËéÆ^žfÛÓôÔ±§êº?”ãÌ΄±¹]§{ìáºOϧ›o~e»‰q °¯Ðä#aBŠÆ5&ŽuÚç\Šž¡ã|¯×#žgŽB®Œ'õœ>à=C9'tÆÿ¾Ë3ûBC}ë:AÿÞwü›i‘éÛM++Ké½ÿÕ{ÒÁ+÷fÂïüÎog}Ç;Þ‘þþßÿû-9‚9ÿ½ïý‰ôk¿öï²¾²üÃøÿ«÷ ×g’Åÿö¿ýóô/þÅ¿Hÿýÿßåçyÿg~æÿQ÷]”‰.ÿ£ôëùà¦ô[¿õ[yNf^ú©Ÿú¯Òÿð·ëÑßû{ÿ¯zÎ|8ýÿã/ä}É=÷Ü“ç†Äõ×_›þëÿúÿ™þí¿ý·é¿ýoÿ¿y\: ï¤W¿ú–zÌN¿ø‹ÿsns±¹ñ2ñË¿ü¿çüþÉ?ùÒ›ßü¦ü|™S#˺€žÅ½õ]ÔPI\ïþÏ)ýëý¯ÓûÞ÷kyœ"£ŸýÙ¿ ìç66ÖÒ?ý§ÿ$ýËù/ÓÏÿüÿ'ËùG~äGêvþ½Ì¼'ÌÈÝw¿6ý›óoêyd-ýÍ¿ù7Ó?ý…ÿ!ýʯüJýÙ¿Êû£¿ý·ÿvn ©�å†ò"½¸RÜãÆÏHîkØ7ÿ“ù>Þ .‰ñyÅûZÏjTŸô@ÒêaŠû”ºóйs¸cŸæ9ä…J£f?,Ìa|ú.,Ew;·kSÙóB.€„  ~s¶êÜÎog`b9ΦÔ°Ï.þ3¨RÏ…À0™¬\�ÄPk97fI¯MË‚A<êa+‡/‰ýW\ì—ðC´ïÌ™Sõœ3+`ôlÜ¿É;ro‘ZOÊÔúƒÆ8ÏyEK9lÇ({±˜÷nø ˆu©“ý]µo ’a¦¨dG‰Ž .åЛ¹cGVý÷dCrEÍ_Ϧγɸ²B0®p·¯Å3ÊF x±·”…¬Rn×/·í Ìõàïƒó«=½A.Ú"Ð) šð4zVd’ð0›µÞ4²TùÜPM]¹x±gTuc"î fÔz0Ðû ûêÚJK.šÍ‹÷ƒ¢™Ò8�¶´£ƃԅ!¨r‹Î3eñ¬ÂØ*ž$Î%ø0YOëuxiu©‘»¡2Ï—0ÍYݱґZJ]ÖÖØ8æKÝ$Šðùë­°„þKm˜­-�åù^'ì»n~3,cxÞ^¸Pÿ«‹g”q;¯HøáyË QoÕU¿ÏulÈÑsÎJmÿa<¢'Nž®ÛµÕ^BiGÞf¥Œ1!;[Ø«¨‘\â¼j²¯mëpÊão?ÌqÈf©˜š[ò©½\ Œð²£Œ—ê1ƒ® Ǻø½@½žqŽÕ«Ÿ›ÿÞ½»{.KùÛíœIÀôS­Û»7vç±løFžÙ»{Ož{ÔéL�J]¸½­9/Bøïæ_ëI;}ï.ýs¤õÊ}ÛH"¹HêeÞx<bèç’VFóR÷ì­dÔ¿-ض¡Y»—êu2•sW$TvBªþzÂiRžA£D ú!žW‡—Ì_’Q$„"Gé¿ÓgÏ4Þoº1½oϾB”õ-5âp ÉóE¥RÑ2{I9õZ9•u>Ïjx‰h¼0Ip³N+KËeÔÉy:ë#¹Ná9I î ËQ/â¼Q<é,ç!†=[Ïçëý”9ŠÇ‹•¶_ò<›÷t¥”ßôÓÌö”7‘\“×çZ–ËÕ··\¤EZ¤EZ¤Eú^Mݾª„öŒDqûo÷ñþHrÕk=k26z°Öf÷Êþ&™—eżÝS{aüþè²=ï¶ÛnËvÊñ,†g”Ø–ÎvÐíM¼0"¾`„1ÀØŽè…-¶'–åd9îëü 9ayá×|wjËp÷(ò,‡t9,.Õ\;ºÄïF—ð{t‘¿ý‡ßþL’þ&û?|š:þô§?ý):À �2zy én�%—áí!ƒ÷Ðép€”–ƒæUu~p‡Íz:JG=]ƒ¤#gާ'¶žLßÚøF:»q&½üôÍéM׿9½ôšó͂Ѹ´òA¢ ßÀYî”@8j}?y–¿Qfê…!ÉMInðB ,@MoÊÇ„òÜúFw…�€®˜<18yŽ:.£Ä ?Û\¶ìrÀtþ Ýö›8Œ�ªJz°l@Ê:„þ!€oæÓo l¾§-ÊŒg%-jF#2ý ˜ú| ƒÝwß}w.ö2áé=€w(Q_¾Gž¼C Èn÷p)0ù z˜ 9ùñ.íÖˆD‚Ô žÙß”IÙ’ èSd‰"s'Êá{ò%OnÃÚîØçbÙÔ 2yÇI¼õ*B }™‡÷©ó.r&ÑxRœŽí&?dÎÂIÈ3Ì)º÷Þ{3»Y¿ñoÌåÛߌYt¯ÄSÝÈuá;CxDHQŽè¤ãKôûÐ¥+ãLB úDôÆ‚Üòa¿ åAÙȈç k3œ[xƲÕ䦞u7¡ ! f#‰<éW>SÏÈß°'è�ò¤ŒñúF(zN!éEA$ÃÅc ·ÒéWtñ®·Ó ÛB9”û;¿ó;ùo@@ƤmpÀ3ÊLÒš•¢k.°u<•ŽŸ|ºžÃNçŸ~$]÷'¿[~>Í—×ÓÃë-w¦¥[ߘöí?¶&«é±Sgk#Â8ÝòªÛ3pYçÙ°tvó\:qìhW½a9}60N]}èÚtõµW5±Y—{í–´ÀüæÍ4e©áȾò掜ÛÈ'ÚŽ;Æb(¡Úh !œtaLþ<Oþ†ŒqcÆóäçœþ§ûí´«wóí­ÚP¸Òg&©QŽ<Ü *ÿ¸[¤ç'E€²Û w»¡œ… ¾ vâng¢×É3é·ýà€§)nÜ(^ñŠ›Ó"-Ò"}ï§g#X°ž°_cÍaÂÞ&î/žkbmcOÇ:_Üé_œ`q©‰õ¤„ßÙõœÞ#,ÎÑ£ÇZs¼:¬óoýþÇÒÿõ¾µàY¼™JàdM÷o�ÁŒ8?ú}4.À¼Jžº¥wÏ8Î@avLq™¿€¨¾!gþ—ù_’Æh�.J™ôŒ€’F¢A%Ê©Üü_E @Znýng¯· A ü‘ð4 X]ž£f?Ô7º¯ý½ƒí5 "ºÇu/hê@=oÌ[™rByÑ&Ê¢l¢áÇçý)ý½Ô#}*·òcýµ¸?ãw$gønÿL]5�q?dˆ}í;Öch„³ü(—¨K‚·¥n%ŒH4Jågš¦Å‹!E.Ûy¯AÕãçtuaFªÆ»ÀòRЧª=؆$veLÛñ`41Ÿq–(!îÖ2MÕöo<%¯y{æõ†¾ú¡ûýÞFƒžïÍ…2<LdÉè$@|ÑéªWG �Öݶ‚GÕ“:C0ij·:cãyA/Dcõ~×>@�mAn‰6“–DÖóQF$‰R;F•‹ˆRî<“w$·åU3öGóàå&KºóÄ’  ¯E“þåØ¿SÈ7 ÙÀP›^ø‰ós4°ºAÝYmÈ0T¢jH †^„ßµ»–£kkž729eÜêd'‹Ô ù2¬C¬Gçy¥ê¹èÕ"†‹‰—F¢çƒèÝÂ9Ŷà¿ófáܹHm-ñ­ñ.篎p×'EÙEÃz<+š?úˆ,íÃÅüMq‹Ä=UloSD· δÖ: a”;s"S$FÎae½,:7.3Û¼¥$õ´íM…ȇ¬Æ£Ô#ï9ÿÉd¦ÎëF×®vDÅç¢7 êŸç·¡lx—qÍOœOã|?£êF!^vD–ø<}ósïyy:tp_Z«m´9­¬I“ž½@í~/ì/TúnÙ i‘i‘.×Ä>\„ ;Í;ϳŸâ'î}¼|;Ü?[ŠeÄ=‰ý&˜ âÁaðÈÞ…íÞ¦xÎÚ©¼ø=kBlë·ûó–±S™Ã²âß®G’”É[Â÷Ådv1>[9î‹xÿmo{·áæÉæ÷lðS5¿çá§ ¿‡?é"?Óïá¿/hRz–tÙx°Hè£ó-=dbÀä‡ &7(ùžï¢Û|o‚“·Åo¼ñ¦´ÁÁ¶.cÆFzi;íÚSêW,¥oÎîKîy8íšìN¯Þ¼=ÝTÿW¬ßL+«õ!iR 3ä%àLÙäK=d×SgËæÇ0�¹ñæ=  4nºr![/á� hÜ æo®cd…àÀdÄ@×[‡�!�3É[öä‡Ü è2‡>Cf xFW1f^–•øžvñ¼Äú‰²õ&Âs´•ºêúŸ6 #7üÈ$ßR¯'UžXÄ´Cc–&Ê@>xü Ý?õS?•Û#ƒ ù1 ùŒ:‘/uAæ€Èæ @N½)b ï1‰¡Säë ŽxÀâ³Ø§OøŽ:Ñ·è!r2ÄýCÛ(㺓}ÅgÔWÒ‚†^äAŠ<ˆë¡À0#†MáG"`.¿©ùÓfÊòæ$îÛ%jàÍ2ÀþÏÿ9—èkÿ ?]˜ÇÛ†v¬FÞð²l<e²zM{ɹÒFÞAG z8Û_ mw4F7y0Ûzû@‡ùŒºÙäg8 ž1œŒïáåÁñÇ{äáÁ'Þ.ÐØ@û ?È[O,è ã×qQ¦e“—}mh C€Ä2,7Š) = Î ysztà3ôg(qIB^,nÈÅù9ƒþ¡]Ü6742çoÃ)0§Œê’=YÔßS.í[Y^É7¿{ò©ìºõꫯKn½%íý‰¿•Ž=ü@:úͯ§íGîKé/§sÿéWÓ¹3õ¼|õÍivÃ-é¦k¯I›§n¬ Ški°%´i}#m¬®×ýq<=:}4Í6·3逼¸ÿÁ´DH™½­¾P_õ1® B{ݨ ÷hüÐ{„471|æFŸQï0Ÿ–ÛV{sÙW†®"Q¶ájÐ]+ó½ó#7ÊÑHº8L/Ò"-Ò"])4‚–1è·›XsX£X—ž¯T€E@ÏçF°x.)»ËŸN/8´w7.&Ée6Ïuªª�÷ Pˆ%ãTŸ'½Ìf@êßþ-kµ7ÿÃ÷¨€Ñ}0rÒÝJßnN2Y ‚MUå”QÛ†ÌV É£=²ŸyÿÆy”K Ù´yÇ[Â4[[“ø]__Nñ–v q¢Û~ “ v`ê46Ü$æ;ëRÊ(`L¼…_ä-A¢óÆ¥—„ñ8¯#]'Ÿí¨m=L‘°9ÛÌçì¹Üs÷Áõy G’Fis(ít¬„d(6³7‹2—ƒÛùÔä­Woþ÷M†oPWãO¬¿à{4ˆõoZ5 bß}/!BHÓªè#Þ)ªæ™Òç4SŸH%\FŸ`åÔêRsÇ%zªˆõ.}Ñ×ïTÚœÎæ›éçrx‡rS{¥[)ƒ}x\ˆu°Ì¸Ÿ$Ž2ÞÜsǹA?þ]Ê/²èH/%ÿr³?‚þU¯þݘëÆhÕ|'ž3‡À¹gÛ(³!ñ&Ì¢HÆPƾ§7ÄâäLn/r( vG®Po”ý¨!¤0GDàÜ2ì³È›õ¼CD�¹§w”.dH™Û�ÿ‹œ¦-‘+`&‘¦¹//íC’Ô!/a0C¬‡ácªÞY?Ú>Ê>H3eŽJM[õp²½Y¼°."Ç|>#DCÕ…òé<Ït$½èI"οÑcÚÊt(ßn~·y8Yf$ðdM pnÝæÓ²Öu¤ŽZ£*E’›çñ¬óþy±[ÛÆ­(÷Y?ªŽ$Qæúª­cþ bàÞ"êóýùÈЗz’‰í5LM éSCq¼®äp>5ð_¿«7›(;H„ÒITX^iÜ^çú>¦ ëŽ5ÞkÒ¨CÊ È.µmê¼õlõúGÝtnð'†\Q¦CL (s6ú ^ž1Träg«ÖÍÕµÕ^(.ë=\;Ì_o,‘0é¼ô\€¢EZ¤EZ¤EZ¤S:xð@:tèÊüïHHŒëa¼xÁÞ‹'|náÖ‹y­·-'á:[DgÃSƒ\¶õö·¿½ÝÿÇ|/FlÞ© ’eX^ÄŠÀ) +÷Äæ=üÛ¶˜o,+z¬OƒOÊìbmÙéˈ?^Ö/Û¼ÒeC°àv=ÊǦÅèBA�©tï coðÃgü ¤ >Þ÷¶>6ù¸«ÜÜæ€v&}æ©Ï¥¯û‹tbýXº%ÝœîÜõštèú«Òü| 4ž9—|´egU ð•P€Ô–Ö�;=q(ा” €n¬È첿ùd>ÑŽ‚& å' D H´YO ´‹ƒ$7Êùl¤otC@¹u§ÏóÈRàЉ7·i@4²d°ƒ‰…g•¹7êoúI–M�b)I|àLž”-Yƒ¤e�Ri’ž-ŒÉw|†W~>|8»ívÐÒ”#¹Ä²)SoL(†!!ŃùÓŽÈC`ùñ,å"?ÚI=·éI �ìü¶lôÀ>Äw²uRµ©—$õC0×I—÷¹a#È?†I0¤2ñÀç$Y�FRºú‰O|"×€@BÛ)Cz¢· òÒ�E½ô¬AxHľ‚0D"€l¼=”’'Ž) NtÐÊ…(C}Yxô¾B>†Qn,J@— A{ Âß÷(W7I»šÛ0¼GÛKÔuú*ÇÔmH=ÔOÝ@.è} ËÞTâsá8)ƒúðÏy†üiurŽqüòãVoèQߨ—–¯‡ÚJß°A@Þð†7äw©‹ÄçHò‡°Á{´â�åY6ï?q WçkyÖŸ]yà`ºêškëòëy¦–镇_ž¾äåµä]éøÑ'Òc_øt:ÿÍûÒ'ŸLÕ“÷§SŸÿPzøóŸJW^{S:øŠÛÒÚ•W§ñÞƒiZ·ÿé#OgcØu×_“öîÛŸj'O©igÚ~w>Uìl7õ&ÅÐBÙ8Ø„üaLÓ®èÒÓ¹ï%ºª+Uô¬´ûx«g|Î;è#:âs¬S6å2¦)0<RŒ½H‹´H‹´H/Þ4œÇÿ½i÷ßNr½+û¹I l~'‰:*¿°©Câ­ÜHn(®Î«¶]€3¤ H5žœ –Ñ_/#(\@£I�‰gáÖû¬+RÜ‹ ºÌ#Â(€çÅ•|1Vǰ%ÑÏnÊ É!:pL@·”;n�. ]È’«½j‰†HYÊÀûé†pR…›ýåÇ[çºS•ËÀ­læÙuzÕ‚ÊÅ@raØÌYR·s$è!¥fÅæ-)!·,�¼ ò|ÉÑÀdÞî9í·X¦ù›o|7޵¢)G=xRx!¾®®Î³Ž•ü:ÂLy·Jzä舣ö9 C„‚ÚñÖ´²‘<®~Gãž1 0”ðù\8Eÿ‚[þÑä‚ÛñÓíYÕ1£ÌÊ çú<^7í‚ÿ£Æ3A”iì·Ø†"ÇICV9—Ÿ#dƒ$&ûÉñm_žyÐÁ"n G"JßcÀR£L:="¡QÒ¦ùbØ›ª!U ÐÞÓh„ ºz;ÔMÛÌ[稣q|Ä3xñfPÊE–†iX]^¹€œ#¨ø åFý²üxÃÒ¨Oî‰më¼ÌÛ¹ïL_™úÕ’â¨w3§Q;Î+¼ ÎòOñ¶Ó¿²±±+­®¬fBA™#S*!XjYWe>ÑÛH”U“KÿOrouó ýQ+§õÕµ´ÝœÑ<yá"Ø]þ£Þ|ûzzƳx4Z«ê`Ô!ˈùæOŠ£^Æx.£*ÒŒ�@7†ëvη{õêÆÐ$Ìõ}–CRM4ˆ«C]ÐŽÓ#¬4öHlÔUÛ¦ï cåd¾’†–š9�zXéëQ;«&LJË)ÌS³<›–õ«¾ð^±º°*È·‰-Bh§LÄØ*ÞÂ9zhDY˜lÏÐ3VìÃÜ©òZàßC²C\ÿ$ZD»®:Éçq­‹€„ùĺvëÑü‚1¿H‹´H‹´H‹t9§H¶ÉõYü…ul›ÿ·†õb‰u>X,Âo¹å–¼d¸¿|¶¶Ä=Û0INà7íz“÷¹g+‡4¼Ð÷+^ôeog¸ûç’†û©‹µ‡ý¸ ¸ žù/—tÙ,�ªH(L�Gˆt`•†oDVº·‡Ùà2ðèd³O<u¤Þ¦?•vm¬§‡Ï=–O¦/Í¿’®\¾2½nï¤Ûwßš®Ý_~ãå|›·�Šßøú7Ò©ú}¾·îsœÈP6eP¶,$Êf2mÅû´úS?žãoÂï@¶`¥ÝŸýìgówlÔQXA»èÂ=e�’§îú¨·e+I)€Šä ¸Hù�‚ü&™/åÚn“¤…*“WÖzaJ(;ÇHl@u'Hú‰ç˜Pôš  ‹ ‘—DÚˆL ÞH¨1yhAO([·:ü-a‚|u…#)Îò‡PúCO$ÔÛ[ƒ�Ñ‚÷–I¢]‘Ð 1‚¼¨¿!1ôfâ¤ÍoH²î$‰Ð_z)¡ž–…ëĉ–~¤Nô¹FkeCûh ï(Þ#_ò×Ûß ü"+ú²E1 ­çº ã…$&h ŸëÕÏwÝuWž´Õ7Þ•\ g�rÚ»|ŽQÞQ'iõÖÃý½KðóúÆ$Î;z/ ÝÎÊœw(—¶Ñf~¨2WÞäAý<$¦;.ã-Êæ‡²i7ïé½�…ápt‰Êçʈ“åSŽÞôP"±‡º¢Œ IRŽwûQ}¤ Ú¯.:Î ]ò¹Ï}.qØ—Ô—Ï?*iAâ�rTÂ<@ò-ä ú™;v$-ãA¤.ïÜù3éé' q´§‰Ý¼œ–kãî p£6ÐM®»9­]óò´ï®b`ûüÇÓÆS¤³ÿezè –Ö÷Ôz}ý+SuðP:=ZN_úÊ´go=f²üê1¶Z«i»6Ü0¦}¤¨¸5‡7¢sµîÐö•|{f¹õ ãüŠÜkÈDy3¿è>š÷$ÑFtÓùJ¢ñV‘»ž+œ‘_,[ã,?ÊM}EÞ›ÙêÂh²H‹´H‹ôbOØýw<ÿ:'‚è±Éu1ʺم€œÏ§= ·UøFSï@XSö§KòŒÏ[Ò‚{8>+ùz7æõPê–€­Œâ±RbD);µ@¼e”¿«Pç6w�Ê8y³^Ó|Êß[ùyÏcÜþ=w®„qÔ–lÒýôC$H6™LJxN–Ç‹ŽL=!”:*Ù¶ÌGREÚ¡-©Ìgá†oŒÃÅH´WOôð0¼‰oÑìtÛ\`ªëÁùÒgØûmnnµ·ì——õ”QÂÔH`èt#Ê©ju¯«[j‰(ñYë×Ìç¼0µ ‹z…ÜR¡ìm3a�À§”KÝ.È=in@§LmÇÏ×z“ 3­zóT!7\x;:Ê9Š^”Ûé8<_Ÿ!Nä6Èo6«z„Ú,:9¦¤7½Ït!*&9¿Ž\0ÍcÔÛê<¯7‹8.!~H‰ ´õqñ|%¹I]µ¯øÌP8;³¼õ»ÌÂöEÌÓz£Ú ÐIúwµZM1¬€vm+¶›p!KãqëÑ!Þ¨óBl; >’rËòÜ °?šw†à¥<vFÆÁvJMȆ­­Bš¢ï×ÖÖð¹!A–kê^òe‚K‘uÕöiçI¦¿FD“FGÇ´³˶½_&ær‚çx=œx–/¶=“oCr‰cÙúE’ÂÐËKGžê<s”w›ðófþoJóª?Ç:Ìæ}FE®K›BÔØ×‘ÀR[Ÿá¾#Ó™kªÔkC\ƒ•Q!¬4HÎä~.—¶2YжCÔd}¯:¹u¤•Y˜;–2b”F=9AU’%aäI+ ê0™Ì“a‰²þ#§ª[ããøŒýçú÷f‘xâ¼=–øœÒS^ê†ã3ŽÍXI/ ÆS!–$šÅ¾‹}u1ŽígWi‘i‘i‘^¬)ž3/–ò%ùÚ×{ÖUp,/Ç}Ó0E’A$QúYôfæ¸+Ÿã¹âŽ;îh=3 Ϧ;í!/­ÍU‹cÑðÒ3µç¹&Éàt´ç¥/}i>ƒ<Ÿe˜Èý`‡þŽ=¸~/¥Ë¦%‘9€…R Vò·@®îùͳ€`zE�Àpã=nH?ðØ7Ó½§þ<=Z=žŽí9–n<ySzõäÕé¶½·¦½{öÖƒd¹¸²ËÌ¢­lÜÕŒ+vïk•R€ãe뮟M4@*u¥lêÀFè5&)’÷ éá!€ÁJ}QPAp¾câ%Д6: ÉÛÖ�£�І10m’óCÙ刭DÖµõãyÚ ˆ­‡ oì<ò,ídöÆ‹Ìx@sI ´9éMÀCŽE˜V,�•ñŠÀs”ƒü%;T{KÝ-ÈR¹îgõ Áo@dò‰†3þކɆ3¼|µÏ‘1Þ(ÛðÙU`ý0›2%/í–\á;@Ž”C¹º¹%ê/aÙ“òÔ«‰á)#õRÐSÃQð¹¡e$»P6zÆyÆ3®(Ÿ¾Fv´äÞ¥mèáW¿úÕ¬“oyË[Òë^÷º,C E”e˜ÚHß!ä$Joè y‡²é ÚNþ|ÉäO~ÔËP,èŒ2§lÞs¤ ¼ï¸p!”xB»!2ñŽºÉwüM^’5ôJB~”O½ CÔwµFF>7dºì8çß²y‡~¢]$tüù[²†„2ÚÌ:@Ù´ÅC|‰c6mo¼ÒGŒ!úüž{îiÃåð›¤'tK5äkŒ®èM…d|]ôòª«¯I˵AfZ£~»6´./A@[J[Ûu?œ>—`7ÜtC&M,añ½áp:½y&|àþtî±Óæ×?—N>ú@šÜÿçh9ÿè}ééû¯Ok·Ü•Rÿžƒ×¤jy->WëÕÙsõG+mx Ö]#ªºî£‡ {’y¢‡ Ç=Ÿ0c½ÕþÖèÉ¿õv‚¬Ñqo†9öÉ™Dnìøœ¼ž~äKi‘i‘i‘^éR Ý ƒx9»Iø&Ű1Ââ)éÍÁ!£‘ `éð<á^½¸*ïß>.àGG^(ßGrAjÊó¦ù8~(xñ]ePNR�!)žº2æ 9`–:OÞf.mÐ.í§Î3BÕµ;âIiáA�™Êžú\»OÑ{Eú»Ûí’":0x€µYë ªR¸‘IÈrÀð.ä‚íêƒÍè¨ëVÏqñ¦v<×÷ÀÒѨmG<AîØßñæ¾ÉïñÈÑéá<“Mvï^ɲ,!ã6›snGL(gPÃ/túp¬'å xè#?swê}lg®g&=L³âŽÀZ6ò!Ë ¤w$L�šôoýç÷Rã~ U­ÞoOg=9Åpzx±Þ±_"ù©ŒÍQÒË ã®èt* ûöV£+í¹Ø1®>Ä›ÚQŸÔ{Ë(rš÷nspÖ‚òÅ»KÔ÷Y È ‘„ÔÉwÞ# Hür°¿b_ÄPGž†€®ïø÷ˆçÏ)’Οë<èTi¿j=~¤ÒÕó–\Ô÷b¢ %’D"°>΀¸õ“à"¹­‘#ànC˜Í Á"z?€XA_¯¯m4JRˆ–3©fɰ}иèMÔ‡ [GÿκÄÜ“²Œv|çñX2Éy{4tó¥ú"‹Î jèé!öm¬Sß‹DŸLåÿmš6žZ&w¦<àáaZæa¾W A-5®Ÿó3Í<#1Žñ3® Ѫêƒe>¾ÐvÛŽA¨šnœ¥VÞù¥KH¨2祼æ”P3«­—MçÁÞ|ïX—¹dÉ¿Ô1{’JeÝa>.$—&H|VÈ}Y†ÙÑLG’€X’$a4eä°9Uu!Ìþ‰)þ=$ ¨Ä¹h‚ÅödelxW/¾¡—†OrìGTjæ‰è9E"Ñ"-Ò"-Ò"-ÒåšÀ×zè[É3LLî·XCÅQÁºø²Å¥¦¸wë.ot{™è)\l \Œ5ù‹_übÏ~÷Ã=Å¥ÖE¬@,YœïùLžoÀ˜hØe ºÏ•²Sò „÷AÏ·g‘¿ÊtÙ,�½I·Nntºê5À›ï†ä0äÞ"˜IÊ7¿Ï=•îŸüezp׃éàÖ•éæ=¯L/M7Õ‘q:òÄÑtöä¹´‘Ý rSãL žHgk�ñêkk ìÀ¡&.â¼Шƒ¼ È2±Î† -ñ 0Ú¬÷ò‘X8H[xŸÍ>m5,Ä×¾öµìú_pOxÀVÉ)"Ah½IðC>äÏù�ò>’ºz``ÀöÄ0�ŠÞèçGP\BŒ$†èEƒvH’Ñ[ÉÇ?þñüÝ÷}ß÷¥W¿úչʊÏab xŸmn°ÓçÑ]¿Þ˜4îi^ª5h( äI=!Hp1v*õ€W€¸ühØ@†z0eé9Aµ¿y>’èg½kD/èšFI ÈÜP9ð U`= û\ÏtÌŸ¿ßô¦7e3LmþÊW¾’ÛM}y–Ï ¼þõ¯O¯}íkó{±lʤ~4hðùò¬>¨¦í8èGò Ê…1(Œ ãHÙç¾G~E$QoÊVÏõšb]iu":BðÞETÒáe$ÑÉ-,dꟑ'm£,Ê¥œhØÔ8@[¾}Îw6,}¡ß×ü&éRž£e9NcØóv¼h¨’l"‰ŒgéK o×^{]ºbßÅ*¡t˜Ï×}²UÎm¥“'ŽÔ?§Ò¼®Û®]õwç²g‹1?µ±{ׯž´ñ}w¦Ó7¼4=°ïÚ4>y"ížHË§Ž¥³§Ï¤ãŸþ£”¾öçi¼º;ݳ?}ùéäʾ\·<ÇÔãR}ÇM¸'kÈ^/´ÕyC’ m§=z ‰¡e5Ÿ!+I5ê c¼§rBo5œ8Gðœ7±ü>Æ›6¿çcC³H‹´H‹´H/LŠ ÙÅÒð{4RtŸþÔAeÏW*ç‚ï<ÔÈ3% Þð”œHê ýxãågi�:Ìšçº[±eßã‚ÎÛ2MÊ¿;p°ÜÜ/ Mv¼½2 €s ÀšÞæm™C$-Ä÷"ùB@ð¨”Ñ¿ZÀ«âÀ:ƒÍ¤mƒ{Ëræ<—Ÿ[YYmöÂå‡4u@S,Çó[xC;Æ " Üi4*aEF)AJxŪè‹ÜKßEÒv yÐ7huýÉ6ƒ± „ºÔïƒh£ ã64í¶†@ŽÜÒ.·¶×z:èYBÂL$ÒDðn& †7Ö±Í?ômÛGÈayÒÈSbG•AÅù¬!PÚO»p#ñ6zœ‡&Ö¹*7èG©óFÉE§;<‚~æ]@Ô¾w2–÷BKÞó¿0iõ¢s™_…ù²ô—².íMÉ<E?R&_ôõv’ç6C—”ü»›ê-Ye<¾€„ó‰$ ÿŽd¬Ø×¾7 +2Ô e| 3ˆõ¹ÕùRO­±~ÎQ÷¢w˜oGm>­§‘Qö†¡—š2¿–‹%ŒŸ80?­®”Ë4£†`3næÏ<îF©'§¢×…Tú»!u5輻Ö)êD‘gjçUjËùrž‚×–Ì•¨.zÈ^= ½¾¾ÚÎ5^੪~¨—á:îÚëõ@}*^iªìå!Î'ʘn<¥ª•U3ÄSá 0>ç½pbYWø´še‚K•úd•!‘`râb$ƒ8‡zQ¬%14dˆLœ©uÏó«vMìn^j"¤‘:–唽d8ÏLB;º9'·¡g I'·£ñàÔ‘1‚E§‰£Ô´Ò¼„„rí¶ÝÑ“Lì3ç¤v,§>8Ǿ)ÎUñÆçœËÎyÚ6µL·k0geÚÚ$ÆY†óI>íü±4YØ i‘i‘é²MÝÞ©êí¡YWو͉ÆíRÓÅö�ñüýr��—PÁw°õ{É2zbŒûúo'±Ÿ—$<JHÞx>×zmG†µ—Ó´œH*ýNËaÏÖ‰ é/ç^Né²!X ä&Pp�dë¼AçÐTwõÎ4> ©b–V×6Ò•fe:zôD:{æ|ýÌZZ«äÙÍsé«'¿š¾tæséd:›nÛxuºãÊ;k€öª´~U V7À  âSO?U<Êá‚ÛÒWÖ@ó¡«¥å¥Î˃.û#€†âê–^÷ðzru…’óƒåÓ£yx›ZàÎp!€Ít lÀR>@#Ïæ€÷ §¸8ÿŠW¼"ËÌ[Ù|Îû„‚í‚Ñü8iPOåBƒ$+Á„|iŸSg½sè9„DÝ`™Q=xß[ä¼G¹ÈèóŸÿ|þî­o}kvÍø)©€²ø›‰ðœ$¡“ø^àž|xЙrõžà„Íå{èæsÞá9äž“±CÆ}„ òt¢ÕKeè!üÈ‚u§O é!x.i€`CËP^$‹P/='§áqx½¥lú;÷õ A^† ñÑ0#™¢ ?äC~êí&ÕŸüÉŸäwi#íás ÞQ^ŒQÃ~(;cW)w <6ÐÆ ÝÊJ*Ò�¿.šH~=‘x0-ÆëIÖ9¾'Q²âG/$È‘…z {e(‘Ã1*p¼hGçz¶ŒO½ÉôJÂ3¼G›£‡>'OC°�ª?7õÈ¡ç ÛH”‡$ú Ù¶™ò,eó¾1Ai§ŸKØ0ŒN$P?Æ/Ÿó<D \o϶ÓÊd¥54lìÚH+k«éTýß±£ußíÙ›víÙ ÕΜ>“ Ÿ€%ôF=†Ÿx*M6ö¦—~y]ŸÚБòÜÙ´ýÔ›Ó釾•Ž?Uݯ1{ðki¼±?-ïÚ“6o|y:uËkÓòM/˱~—¹5·Z/æµ!‹yþä±zNZ[Oûö3§Î¤óužxÒXY^K«»w¥å4yêéB¾¹îºkÓÞZöË9>ô4ÇxÅ�rú ណfù²Ô{EÐUdƒ|õZäø×ãP½Ài‘i‘é{;=Ûa4Þ –¨=Ä=×ÄZ|æ {Žçî~²_×x[!åuü…Lz¿‹ M‡Hx0LÉï~#˜Q€,o‘{$‡*ß–ö™íð¹^#&´‘p1wS/lÆ,$"PTŸXVUw3˜Ð) ÎæÜRŠ ºá¬ …èÁžd ÕîY§í-boZKÖ,„ßóÙ«" ]!˜JéJˆ·³K;ÊmäѨ #Ðn_ôohÏ[�›úv \°e?—CY´7~Ç-0oývýì'=òA¼­ÑËþK!üEô�]º–çÇmߥ¯í⩤žÙƒ &S.aèÃ!ù!©ä#àÏME?ºÛБÀû6|Ból• áÀ{jh›dœíK£ÆSCC¤Íê:,2¡XBÉLÍÄ–\ÇÆ¥ýˆ›ôÓ|[~6ïôphŒ˜è&·#Дq‡ŒøaÜJ¼‘ Žn"Sd+ÁFyÛ¿‡ñßÝxІ¥ž\ùUtpš"YŠ~/d©¥Á4] {æey;yVñ[N}6ögôHß{>ˆ`8wä®íÙKa^kÐ âúÆz’<”3õ.1WÛr•m¿ïƽ¶t Î3Eü±ž†ØÈÿ^^-sIðd’çµ,ïª%d“ëÔ¼#å´²KÛy\’ϸ߇2Vs§y ©“ét“qŸìЇ IhÚÎ <#Àµçôéi½­·v¡¨ êÜ…7G½qmÞqî’à7kˆlÔuŒäU¥†Y Á’F­û+¿ŸInµnW£¦Wûsfk ×£¤ºq§Ã¹<ËrÔù>è€ÿí,//h#)çÙÕ<μ\R>¯2íìÙrAGï¤Ê×縠F_ogýÙ¾@ÆyÂDÀrÙ‡ñS5óíÛêÈIÏãÔ‘&ÝC¿ñÄdH¥& ‰ŽÁ¸ßðsçôâ!¥ Á2ê‡Q‰$‰¡ŽÉÃ=Þ”u²»xm¾;]ÀŽÓLÞ)|³EZ¤EZ¤EZ¤mŠ„áx9xð@þ&ÖG¼‹³FJzð÷sM‘`×p1&<²ƒ=ßzë­ù 0b;Ã=bÜç<—D›¸˾€KñàÛßÉ%œ‹%Ú~Á²ÄÑŸï†%Á¼Ð=Ïå„s\6 PÏ‚ä€Vz°`ƒ}êÄ©”}*Mëg¯®ÁÁýõà\™�ŠÎòæ#ÇžNG¾õD:1;•¾µôpzl×£iÏÖzzÛÁ·¤[¯|uÚ¿qE6n±q][_M[kÛéÔé<~¬FÀšŠÔÊqºÙäëÛä�™�µ€f†º0´„ 8 ±7AP>�TòqCíá%¤Í†Ðp3ŽÒòŒž<@P.y3á¼üå/σFw9,>ö±åì”Å3äÅû3˜œ<ð`'r¼¦üx€Ð v2¡}”C=ÉÂm£®�Œä(+éä‘GÉ“ƒ›ç=ŒëÅ€ßÈòÃþp΃:á¹B@^Ï $þ ÐÍÞ5É ¢§ t…º�r.ÆP'’BdæÓNÞóPFþ<;tµIâyä‰õ0{ è¯Ã‡ç¶{[ÅÐ-‚²xƒ0l õ%ßÔª`g ’A,4´Ãú£sö'²§l>Ó›‹ž ¼i£Ì(Û°-$õ1ÞÖÑËýJ>o~ó›3ù= !XÐ&t*$ô“vP¾L}u48“Ÿ¡Ï4–w:‚¼G{õì¡N#ú‰:xëBï$Poê¿kÝ2éÃôr‹7I4$Èn¤NäÉçzñ þ豞)ySH qÜ–ÛA³ü $Ê‘Œ%xoÙê¼=~ôp!)Š~·ÏÕ÷~ô£ùÝøÈ‹ª„-CÍè%…±®1‘ñ!éʲõè 3Ñ04™èS¿¢ñ¸Ã{ÖÛy›Qö»óŸÞ% ùÙvæÎ½™U¹œmë»÷¥ù¡º>/½=-?ñXzìÊ›Òìô‘´Z÷ÕÙ'J“GîO[_þÓtnÏþ4¹í iõÆW¦=ûö§sµñèñ#ÇÓ¤.§ÝµAm†Io»îóÍít¦Öõ£GŽ¥éÓG²‘çüÖ¹tõÁ«k™^‘C€¡Li×ú®l|y¤ÖmÇrg-*·¢Ö[·Èê:Â`®Qß$çè……¼2¡löüÇ?[¤EZ¤EZ¤ï^°#á’ùž5;’ Ÿk:¾„þФ‚gJ?ÐF‚Ÿõ&ñÂ¥ì‘ÔÌžIkÕÆ]ïÂT`¢¸ª  ¤É¤Ü`.{Ծǒ^'"8SÖïBÆ(.ê•E÷}Ô†bè»{/¤ åj9ã^9–/xÄåò»»‰Sò‡ó•7õg9ɼêB‹Ä½w4¼�v‘Š,ç9 Br—[@·š‘&\0ëí«½)É Ê=á"H x*芼$,XGeׂÁ©4Ç[I¨ŒÞYô¢  âmÞxƒ¸“wÀëiÂ~•�0$=xæv_úô©ìÍ¢xD\éß^Лø±Cp:ÞÆWžÝý¢Û}À¯xiIÍÅ‘¥ÉRhW‘%ZTÓyÐ×qSÿöôl4kÿV7 ëÑ‚ŽÙFñŒ-E»E<krjoX7ùäÎG�²œ›–Û‹ å½qã%§3¨*£N§:p2ÊR·jç±&“Ræ…ðB(ÂÈ-D#=a Chw›ÝþðK4¶Jvˆ!† ç°Q>Ãv8>†„"ÇK4Üæ¼š[yž8O0_mìZo‰Üùª™$?ÅñdGŽãKc2aræU§³ùK}æ7D Ñ¸Ñ©Y 2›O³¾èMa©ñ~áËq¹´Tæò,‡ªÃ¿ý¾Ü:ìú[ÙÌ7 íqHï)$ZHøÈrÈʘRÞÊR“ãüÔ©â ýÔƒ£ºC°G<ÿó\”¯i©!0tã«#ÓU{ø>n<çT–ËRFaVuÀ½„ºFRy1f‹WÂÿÌ{ú–½gŒÆ½™Q¾zw”T¡çJ=Sv^{$Ì’ÞmHzÄE]ǵCåK£âiÚÎq}â̸!–M*×ù­¬×YGÛñåZWå‹e|T%H3ç•.˜eq•°!UÏew rŠ^Rv{qΆ¸–ÿC†v¨Ø¦H"Œ:×»ØCÝÄF2mæ]~$¤j‹@Ð|6Û·EZ¤EZ¤EZ¤]ŠgR·>. H®àLîñ”ç3Ö‚‹©`&„»÷ûó]k=eÑ&°[ð©çâ‰ãR{Ê�›Ó뇞ӟï„üô®O9/¼mé¯&]6 €<8h 0'˜G‡n�4×@Þî=»[ö<ö™µj-ŸŸK_>þ¥ôµ¥¿HgÇ›éÚ“W¥—m¾<]·ÿÚ´>Ù•ã›¢Ö mn,“À£&P=R�\ ž(ª¾C QR„^0ŠR_ÝÕË�ד@dãÛFÚ¦w o®S¯ÜÖú3ŒµÔƒ¼© À½îüHL ¨ž `dÚ¶è½Á[ê–ÏàAþÈã0õB&˜p�´i ù!+ÛÂ3€ßÜ<G=iƒ7¾MDG¶üàsï¹çž Ü땚º#3ò§íÞÂÇ­N¤‘›^�Aé£b·�|œ\t¨G�qÚÎÄDÛxà,/Ê ä N½»DAä%aÁ0ä¥×ŽÖ0Я$êè<ùNLŒ´™ò9ºD½ø[ByP7Û,‘™7YøŽ²%ôØnoA¯ïêúì í|æ3ŸÉ:òÎw¾3‡mA.ô•á$Ð3ôísŸû\΋qaè’èúH#–á}HÈ]o Ô‰¼ù1¤ ù£S±í÷Ö´]¯&|Ï³Ñ ‰mç;úUÐYX…øÙèY™APÒ[ß*Gâ€nòGvqAxñ=tƒç¨'zäý¼£Ú¦>KòsòQ^ü¦ÜO}êS¹ïxÇ;ò³F !¤\õ:B>|GÝiƒívD?‘+z(ûQC«òCß5>é’•E–wLq^$oBüxûƒº#û2¿íOëk%ôǼþî̹íT]{SºnïéÀîâÊùô·HGüz:÷À—ÓäÞŸÎÖFñSõçO¼ìuizÝËÒ-7Ýö¬o¤Ér­ãi)ß¾ÚXŸÕeïJ'6v§‡¿õÍ´Y ǵqñÄÉã9Ô®]iϾ½ÙÀ8Áx]ÿl¦éÄ©“-…úéÝGï3Ê]Õë–¦HüQWþËù/ù÷­7L‹´H‹´H/tÒCëÊ¥&蹺’!Ê$,?×ôl‡Ó!0ÉúÉ!ïÛ©¯$ÐKqñÙòw÷œÄÑ2UÁà û÷Ú$@üþúž^GÙ{@¾0ÝãºÑ}»DAHÝŸ—äÞ­�? •„‘òmâò™ž #–Q@¤”Ãt·Òû·ñu…žËàvò¨„ò�`2ìA Z—ó¿K PLŠmÖµº^ѵååèá!õä�¶¡Hp`Œ $uá :°¹�šK½[Íh[È‚ÕÊÖ³¨ÏYwån;¼=m2Œ‡òë.³dÈÏ­±å 0kt êÌ&6ÛË`Ÿª×�~—}^ŸX_@2ÈÙÛ-¸S<ÏÆöy•Ûø%”@SÏ4jjÇI– º]ÆGT­ÈªÊa�ÁK¨†b˜ô_iÖÉwHÎÑkd&;Ï·zäë®\ßæá9W�7·5¥–²Ý…9å̙ӵ^ž­eu¾‘åréÓ¨Ë\E9+ÇÎóˆnxÇí_ZªÂ%­xí�g¢Lîô¶OþQo;À}œÇÏì–¡î+‹áüëZ‰ʲj½tùKö‡üÃ:ìe”Hì± ~6¼ÏÈžSô‚'mÖ©xªhÂðT f”Rô0”e•bO]m¼ÎæÛÁÓKÕètê… Ú !;,c¸Fµ$—ìÙ§™§S!ͪy,5š÷I4Q—­«¶CÅêéÕ½ê»sAŸÜ3î̓Ê<˲™»"yEnë7JÙîxÔ‘9ªqé/È*ÓYÊÏ3§–ùlÞôÑr»>úY&•ÌG= HVñò2@k…¶ <AŒÞ†¤ß5ü©ä4/˜è¥t­þ,“ÓFÎËÍ8ž6ki• ÉiÔ†‚dÒô|3>Š×¨\6^§š5pk{«­KJ’ÔÔÔ×ýQ¶„PFC]Æa]›´ã§„½J=›¬ä+ç#Iq}û-û½ØCËÀ¥nNzµÀc͸Ï^Þñ¡IcD=[¤EZ¤EZ¤Ez1¦ˆ‡Üc{Ó©vξ, |à ÂEůLC|q˜\¿I1|!I»üÿñçrÀ¶ô /~HŠ—"~:ÜÄ5»Ý/6ç êŽ-›8Ÿ³æ»O5Å}³2‹{åHn{b÷®üö2(õ€œÂß’Êûä×qï\bî;¼�N¢<ÿŸ£]àmî;Å„_BÇ_UºÔ–Œ.ñ»Ñ%ü]äoÆá·?^k˜ ~ø_þãZ>Õ7æ¤ÖkÄc=žYÍ"ö_±?]wýiw Œ•˰}«ôåǾœî}øÏÓý»HWÌö¥;&·§Ã§ùæ8¯¬0ÉWñ€pàPVÐ#O?™¶k mïÅ#ƒÆÇh ¢l@Pʈ‰Ñz8à¨ë_þå_fEã Ç3´Ù@6Æ3(“Ûÿ*¥mgP À°ž¢kJ˜V R¢åSW”°˜÷!B�~Ã3åÜyçÙ�k‹ö�ˆ3£H/í¦M2úÉ“Ÿ¡‘–|˜˜(›ß<#i€÷™Dh7Ï~ä#I_ûÚײÁõ'~â'r{,¿Ü.*„䦱“Œ‘<¶›„¼!FÐ~äȳÈW†8åP>Æ L<9¥uùØÜò _¨{œ8i�òu–Áߺ¾È™¶“'yH"0LòÏ:W×˰-Èñ¯7ÚãdÒ?<»6\óÞÐ`¦‡äæí#½/ sÙz$&g>7t2øÒ—¾”ö7¼á Yw† 5É@È“¾Gþ´Ï:#¯×¾öµ­¡ƒ:O‹ñ†lÔu s¢Aù:;l;åCàG£‹a|$©xsÅP6<K¹Œ#ÝÙR.úNÙ±)[‚ájâÞÃ�F{•½^7x™ Pñ.2½ï¾ûòØ‘ åBKÛ)›<ô²ÂØ£,än¨“¨s´gÞÿþ÷ç~¡œ_è[òpñÔƒÏSGdïíRCÑ½Ï #ê™I¢Oœ›x–6ûœ‹¶D1t=ÎŒôƒòz€)$‹s9<ÇêêJÚ»oo:rüH:{êtºþ%7¥ëÖz;Z.ó;îD§õ©çë£~#=ù¹?Iãÿ"-=qš¯ïKãúû3·ý@ºêæ;ÒU·ÞoaôÃ}éÃ=˜I®8˜®8tMª¶§éäñ“é a¦f[µ±p%íÚXO«ë+µŽIçÎ2ç†Ü‡Ã¶GB•cœ>Cnèj#¼Gÿ~âŸÈóø-·Ü’–çGÒ¾=M׊çŒÄ··D5ÅõEƒ[4J/Òó“↲Û(w»Ìæ1v_ù½el]æ°“gÒ+nûÁ‹Ɯ׊‡“ó鯸9=×Ä8b¾g¼ë=üÀ>~îç~.õ_ýÕ_ÍŸ $A¾|Õ«^Õ‚Ëï{ßûò|à×nÌÓè!D ÖšW¾ò•½rùœòî¸ãŽô&Öš÷ïþ]ú»÷ï¦ïÕ„œYo¿ýöÞüë^ãÙÛÌ¿ó;¿“~æg~&ýU¥üã¹Ï¾ÿû¿ÿ’ßa=`Ý7ë5kù÷"Ù‚u…5¾@— cÆÚ‡>ÇľìCúPzãߘÛôlÉ}ÔsI®Ébù7ãˆòžÉpa>©ÞSÍcÜ›¸ v-Ú©ü\v€sùžÏ$©>×tìØñzt¬ÿâMà˜׿õûO¿úþµu’ôkhº²‡M-€j›õ¶°ÔÄ—0\ï"±"ÊÏ ³YŒ•ž"EêCļQQ£üHųÒË«#môÃePŸÚ  ÏT-0^�šîF¿€yDÂ})»€S1D�µ« †(ÀW=  ]쓇7§ãÂuÌòå–}G:ÁK†ÞîH »Üʪ“GöŽ«”ÇÛþÜŠI€kxóÞ:Y©uKÖ`÷ã9†c¤¼?M†g’>F °‰<¼I,1&–ÑõwGtéÚf‹yÖݪê»ÁmAïi!Y¢‡þÉ}<ênЫW-Áadè•’²òæ~ìõ5ËiÔs˜évëINyѧºuUþ-ÙcÞy‰º=,DF@¿ìk0ðkÎ1»Û¹kH´™ ¼¸E"Lѽí>‡¹†ñ=4’ÐJ¯®xž§q,xÁ±/‰È:ùnÙ£^ùÝÌíêÔ 4|FÝïyV©ªŽt“ Ý^€9ŸOêú°o‹a.²ìÓ¤W_Ëp|;:vôfÚž)šðGQUå¼yám|ó±m®wlG ±l©7†ùm¿ û£ǃNhÈ¡Dæ}1ùŒÝèEœ3œ«:’CGžã\É3%dÈ™ÜæÖCcŽWí|qþŠåÄ1cý·íˆFìél»êÛ¹$/gîY?Äm1çŠ6ÿæLêY|%–ÛßÃ91êf$Ä6™×ÐûƒmDžÛ[›Ù&»{ï¾ÖËQ74e¨ëÜ6,7uN9¼ŠzG_£ÿØpç-1²êÍoY¯R I’0&’l_Ü›DYÅõc¸·°ýC¯4$Q†qðwôf‘/Â4Þ_RÇä|ÇgÇsç ÑBÛëúîÕôÓ?ú²tèÀ¾ìm2kL!®Nzö‚•ß {Á •¾[ö‚EZ¤EZ¤Ë!Åóë°À¹sgóº.9ÚçvêŸË:÷&÷‰à-\ Æn­Ó³ïðBøsMñ KÒÞ{±6=í3‰!z‰!† ÛIϵŒøo ª|&Æfr×]w½)apIédó{6ø©šßóðS…ßßt‘¿Ÿé÷ðß41=Kºl<XDåö0ð‰‘w÷î]éêÚлUoFŸ<•¾ñõ¯§åÚ(t徃i¾<O>ýpúO郩Ú=O/[yYú‘ýïLW¨›¸«ÆÙý]ö°ðÈ£é)ÂBpËay5Ýx¡ö·Æ†x˜£|ÀcCèIo†G�TcÃ+›‡wP%�8’—7Ò1œb wƒ!›AGŠƒÁCe£°�½Þª7·Î9\Ñ6€>Eé1< ÄâÙâ _øB¾íN[0þòãùN‡ô²zÛ`B44?ÔÕ¶3è�wyÃ>²ddRãÙ׿þõ$B>ñPCy1”?ÈÁ!h©¿acxŽ|©å!Od"SÌÐ%¾#S’ŒD•xó èäï!“:S=~ÙÓ>äŒÜeIzX ¾§Ž¼O^¼Où€çsý|nèt†ÏùÍ»èù{EÂrÁO_"{êB¹|NÙè}Æ;èåó|Áù7²ã9tåÞ{ïÍ®ŒðVqœú ÌÛ_zý@ïxî­o}k®D@š?ýÓ?ÍÀ :í’�À¿%WØç<Cý 7Áå _<{P_ä2ÔË$Ôq„¾Ñvç >ÐG¦”ËXŠaI‡žPÐÊCÈ‹±C;Õ7ë Y€ïuô` §ÚaH~3î©3sƒd>·lêG›yŽvQ]sòc_©«”óÛ¿ýÛ¹=?ýÓ?ûÍ0 äÁœ¼xúèý†ñi^¼cټ˼¦ÎóCûõ2aÒ ƒnÑ^äÎxÔóóßQ7êLi ¯!€È§ŽŠ‡Ÿ‡ùVz¤–{â–Îh9}ühZ-¥}{÷g¯£qm$_¤µ•]éŠ^‘NmÒé—½6]¹wW:_"G¿ÿ¦Éçÿ8ûògÒÿó¤ô²W§µÛޚήn¤Ó›gÓ/yY:pe­ó6Ö×Òž½kµ‘çê´un3=UëÅSO>‘¦Ù¤‘w:0ÆwlOt í´ÇþFö$äî܈þ3v~ð0‘Ï~ê÷Ó"-Ò·›<˜ 7×ÚIèÞ»ßýî<þ˜óðBĉ‚9…gò'2Ï[è.ßó�Ý�Bò  ‘Õ±@Ò¨dO£áÛñ4dFûÞðùhŒìƒ+“ ŒÍí-ÌyßÝÿ0?ëõLu£˜˜ ÃæÀ÷vÊO#öðû¡ax'9¹¦ ©.iüa­bgŠ²Ú x5¡;„™"1—³WEgœ·£\-k'Aw»¿+ëbý²S¿Çgv’‰õ†}뺮~FP†Ö½÷¼ç=;æûËôí£%{k�Ò-ù»Ç~¶0ÿôÓGÓý÷ß×Zwªß0]JÞz4ûn¤¡.ºÐC]Ù‹2~G-°¤g„íí¾ ýÒþIÒ5~$H˜ˆà‘åÒC$£x~ï@ÎrÆ*Ïv$ ¼MPno}wû±]¥‘½€(£T<IÌ3 _æªx¾ªòyt{{³¤€øÎ=€R¾g[èGˆx èÀ×q ¦Ï ð.¿§Áp•ZÏ"°û8.ã8îâ« ÂV­Ql:] ‡l}4L-Ð6�·þ#àeþ‚ÊE/úÛ ØäºI-¥MŰÆT/‰e^ïn‹{¤?‘)ïteÄ[RÀY€ÃQsÿN`ró\oOi——V:‚z:dÆkE3oÖ:8ntÅz*Äü&ãr¦ ½ØÞ@ï‘I›ßã3;yh輗̃îrsi#‡ÚÓ&eê1@€ZYµun 1Y½UhãsϾe}.ý1 áUÔ¥QUä¹ÏCˆ‘2×lµÞ=Ì_Ôó­sE<wF@5Ê*ÎY|F>æ/`ÝéÝRî¿©ß5vžv]ªŸÁSëVo³›ó À¿:­LO,Ž/Ä‹+y,fлÊúT<ÄTa]œeY.M:°nX5.V 0]<ôØŽ®häíÆ¡²Šä ó>ž4¢ÝÅqÜ‚ßUqþûOýñFžä8GÙö£ýŠ,´•±±ÿŒ¡2"‘@Ò•D¥xÒùOÙ;¦º¶u^J²¬&E¶ÑKˆùå‹S“~è$ˈsÜNà>:A”¯8c}”¿ò½06êý;Ó>&¹ß÷­“óŽs ¶ØrìXã)sOØWzã¶äB€ñ÷RCd›ý¢üI&é «Ôö¹m¤nqÿ÷æ¶9Þz' àß‘l$!‚ï£ÝÕµ0î•ãÜdzz8œK†„¨Gyn©æí®w*t/Ï™³µ ΋´H‹´H‹´H/¦4´¹†ÛÒz]¦ÁžÍ ÁžgÝú6_jŠ{CËã7Xäg?ûÙŒ‚YñYÄWâY7®ñq×ô˜¿v ÷à$lTÎ͇öDª;Ùû†í!E­g÷j`HàxîOãþÙ2ÝÏ Û´Óïè…Ã:ðoÐ.=£š×å*ä²!X0ÀŒÕ‹Á ¥aÀåpáãª4K'jÅ}ø¡‡ÓŸ?ð™ôèÖéW=öl¯§×œ»+½áÖ××ÀÜ>î¤âzf–¬£É8»ù[æ�º²\cyKéÈÑ#µ1àx¯  p 8rœó „±”º¡Èt•¯r¢I® ù¹nø½-îD�¡6bŒày6Ú€â†#æ0HÙl¾Õ%5xHâV> _4–¡ø-܆§<ÞLg0Âà¢Þ2§94Q>yrÐü ,˦Ý�¹ñ¶rÂÚ¨F¹Þ”A½¹aH›Þò–·äva¼§‘K4–IŠ î´‡ï‘™7ýéÀmdÊó|ÎsL˜ñVÿæ3ŒËèÏiì¡üF¦mHôm§¨7ßKðÐxÐ¥ÿ¦nô‘ámœÄ pð¾z¢'åÇwÊ<ŠøÙÆ£’xÏE™p£MÈRb‰‹ƒL9ÚAÛ©§“»7kê"õ<úä'?™^óš×¤{î¹'×K¹s«—¿ÑÞ1<äƧzwë­·æ[Ó” QR ïêNèpC4 žBí[þM{(G÷žè«F#t™ Þ0ä%!ˆßê ²ºÿþû[]â{É;ÅÞ’ùŒ¾'Oô…ò©¿ó�}‚|‘5:ïø€,B}”!2å3‰7€ëŽw Añ ïÁݰÔYò¹c‚ÏÓVÆíùÿñ?fy@®@þ<OÙÔ›vè©Ä²%4D£K\t]„%ùÄPA¨xŸDÞÔ—ù†Ï$a¡ï´¶K,òƺnÙq£4É7ŸŠA #óÕx¿™o§³çΤcO?Q·áHö:´{ïFþ==7MOy2ÍêöÜò}¯ªå±·žÇëù÷5w¥#uŸ<~ï§Òù¾–Ö¿u_:õͯ¥ŠÛzW½,Þ:“6æ¯J³+®J˜Ý&k«ù6Ô¤Îóࡃé<·üÎm§C×Ê›=Úmx(t¹SgÚ…ž¢Çü8i›ºŠüé3Æ ¿¹AŽ|Æ’Eún&Æ%ëãyÝõ¿kã—uV wÚäK¤Ä+úÏžoŒ €d€nædæ/-ÌaÌxª"„ï3_ðNÜ€3VþìÏþ,-Æ cæË_þr~žº3ÏBa¯Á:ÂGozÓ›ò³xébÜ1¾ lÒ<70W’ùÓvÞ!?Ö# “ìóx‡öÓvBb‘Ÿ^¯†á$xOÌþð‡3I”gh»±Y7£÷ÚÁ< ¹™°VéYLÂÝÝwßÛÏ|I=I^î)Lx,b¯†<¨eB#åÑϬ »X¯9ó$êBÛîºë®¼gao�é–çÕÛÞö¶,æ4Þaý¤®v ^2ç!WêŽüñØFø°xð¥ ú”=ë ^@(‹v#gdNó%„òBެ¬a¨'ÞX‡¨nië¤è ÞÿèG?Úzé@_È‹>B6è zøðùßè+ícïKØ«dÏBÁUã·›\£ãMkäG²6JÞãËÃñæf EÇ@0¨Ä®Ÿ¤K!P ÊeÞ[»_è¤a!äIŽyôôôéS;¯sJ`ìÈ1]Œø”$@ðïîêòòZûïÎ�·Ù#%”üÊÏ®Œâ £3˜x3½„w˜Ï·s;àvÖF£i&ÆŒFp$N ‰D «Jzêˆa- È?)ˆb˜–'™€Ñ£ä;rÑÆÆ® ë‚¿xYnìî¶uÕ€½+­g»(—ö¶ålŒ+©•™@Ž(«Êüó¶´WÒ)‘ª#1"˜"è¿kÉtUnæ,µ^NLÃ}õ°ß%X—:—gð¾¶»•§çˆ¢ý[Î¥œÍ�P¦A%º³]^ZnÄl‡¹?–VzçäÔèÌ´q¯?oni÷É<ã @JhÊ8Ùnˆ4yÞ©ûe4õ@åDWïŒÄè>—ÏCù[ wê•$¥òY9{ò[iº¿'úÌï]+ôÒèYÌ>éBõtdŒòÞrk -Ä£iêÂtº³¼¼šINŒ;úªΣÊD˜ˆGBÑÐøAÞHèæ×¾!×ä<ès1ÏvN¯º± ²¥1©õ:áÅÝðòÙÊrÕ ¡±Vožõã þ¬7¢^c·voñt³þr9ôG×e¨Zãw™›æ™ˆ±<^ju&¾=øcDBB´¡åq•:’ĸ™÷òú0žç0ComŸŒFáæø¼‹í?ö†e-’<p¾gÏ笪ôEYk–S$ïÐú †+Éóh ÄÒ&œUÑçQ[Ÿñ¤È­„*Ä·Î{Í$÷QnC-Òylð†¢}jèᨗQ—w"IlZÂÁ|ÞÓר׮ƒÙcånB®§ó[%¤òæfñ [lZÅ{”$3È7e~ž¶a‹Ò`\Tó’©Tm9ˤxHå¹ èrÊÏE�&®ee.œõƵ:•×qú¦ê‡Bqîµ}1„û–HÔˆ„ž!i9r†É”ûP¹K\‘ˆ:N³n1^¤EZ¤EZ¤Ez&÷žã\; ´VÛ¾Éë¶8l—bóx®‰rÁÁ·À8~ôG´‡Õ>Ÿ‰½¶5ʤ,lχi§„l±?‚‰‚Ea }.D”ç’Ø·yépÄý.×tÙ´Ã,F]6èguS_MÍ€«J\Âíñvzjõ‰ô¥½_Íq#¯Y¾"Ý~ò®´gmw:sº6’ŒÏ¦U ”õÁ~¾5O'Õ w Ìq 9D¨‰}µªÞøŸÑ~úLë…²í9°B0¸&e×m ÂL¼"ÈY=|F»8ÔIäðÆ@&@,ÏS¾7Ø(‚xnâ�3Ptò”qM9äåA›Ï<‘-u¼í¶Ûrž|Ž¡£>ÆŒó€/ôyWO1<mb@ÑúGPÁI³¸a<Ý‹ÝKû0ìc\gâ|ï{ß›AêJ;õÊaÌLÛÐ’jB„d þM´ Á°È˳Ÿñ,ùÑ·ºl&_åÎw�È…öò¹^#0ò+ nȇg(›ÉS·Bz$ÐÕ¬©7!ô~!Y„m„4À{è‚À9uEæÔÕƒ¿¤ÁI¼+Ñ# £ dÚɯý.ÁÃ÷éôèÏÿüÏ3ȈhBæé/� êmYä阉†@å,� ÑdÀ»�+ü/ã ¹JÞA¿‘ßÙ/èõCŽô¤¦|ȯŸ—5o|Fc/õ£?y¹ù¾™7]ò‡‰|ì5ñc–º«ó‘PÅ8Q')_O3Ì|FŸó¾ä ‹–.éõ.AÛ)›ô•ñJ�½«.¡L’PÐ3’ždÈð‰wh·ÃâÐÆ<m7œºj U´ºG¬ú¤Oƒ·ã3’d$Uáô©'žlBÕããài©18c˜9zäd:sît:~/.;êù®þòÀ¡«ÒÒò8¯Ù~5^IW^Sýsc:òDzàþ¯¥ãu¾û¼7í:ýDÚþÔï¥GïWÓÖÝ?’v­-¥·¼&M\U¯)=NX›�¾þ†´÷Àžl„!_ô™¡7ôu÷ö”áz¢Á ™Ò6ú‰:Ã|‹.ÛçÑè³H‹ôí$æ æBÆ$‰ñûLzÅíþÀy‘uF`=:Îaâ}Êüáþá¬ë�èÌEè7c2�ó4dˆ”¬óÌ)Œ¼·0^ 7ð,Ï‘¨sõ�dg]eŽÀ“ufOÝÈÓNòâ}òåYÀzžýô§?zþ¾X’܈g&H Ì…1˜óXWÝ!2/Ó>êz´û]ïzWößñŽwäçX8@AL`~„ Aþ$ÉWXãXW©#s*ù ïßýÝßÍù@š /Ö dJŸD/&ó„tÂüDy<ËZÁ󬧬 h¤<ˆ.<C½‘{?Awd‚\)›9‹w©“aó¨7õGô ä Êb6Äš‰ùÂdšû±Ë}Ê;äGùÈœù”¿Ñê‹.²GäyÖö!ìô¤AðÆ!əį™Ã2²gî%oʇHÞ [‘(C™ô5r`>–ä{±Ã¯óû¥$ íöã†õý2õA§éÇ'Ÿ|*1¬ºöŽ{©gJ;WA§ÕÕå¼–·R^ºGÖËý)ýKx¤sçÎgà `hêE¨àØlö4³†¼0nŸ‘D À[܉R„¤ç¾ׅÒ׳£Ôy§&B/VÞ<ïÜ@ﺄ/·É»½_GÖ ß €ÝqRÀ´¥ü^)£´¡?Fdï<Ï0;n ©Ð_ö)>Sú~œÝã.$¥*^:wöÝ-ßR_½rXÿR×Qãqc»ÍkÔ†1›ä²ôd!™Áþ'Hñ¦ñͶDÐ,‚Ù\x9‰`bsýlèî=‚á¶Ã¶{ãß1g=��ÔJ*Àþ¼%è  ŠÇ‚èk¼£à]Âg%ÀXÏ|~žwv„5:¢Qñ^€f[mÛ•ÕÚš^ "ÅýÓ¢[©ê­Ê¾v®‡@vf ¾Ïó)À­!!¦ÙKÄÒÒFs#ûLcÛØè•ëe–èm£ôõ(ª¥x ™æ< ‰gÒ‚ Å³Ì¨õhõßvÛHÕ#1H¶p<¢Ë„6éú8z¥é“&v"aD]²’Ìâͳ<Nø{Öy$‰iääŠw笽£Tö~¬%’Ô­¡øw©K3Fò4iæëQ[†Ÿ/Þ6&-Q@bŒ�q–uUˆV£4êÙ„ZOMŸDà_ŠÞwâZ=d}KÅî'¸ÞÍ¥…´6i<AT¡g94GŸè"е_©z[‰žAÛþuëz$I¸LÙõëRöΑŸ¬ºñ“ç‚z=ËíPV¹íe®…@@öyÏ“ž”ì‹è5EÒM«§Íy5Ú@â¼;$JD"˨9kÏgó–'É/z Êmäßaþ(kg•×ðýû—ò*ë@ñÊ�©o)÷]ÏÌÛÎ)Ž"çL;KÕ¨óºá9/5¥žU:sô:êò޳vN€Ü©e4ïÙËZBIð4¬g´ÿÆ[«± “²–Xíi”Z@Â68OukHãUeÒí{i‘i‘i‘^Œ)ž'➤`"O罄ØÇ A® \ìküà3&õB’+XÏõîåãŠ\áÅsìXœÀ®.Åfôí$ö'^<E†È¤Ë¦…WÔ†À§j êô©ÓÙÕ$Æ&xnƒ,q«§6ô|ëÌCé 6}sþ­´oíŠô}³ïK¯:tsZ¹f=©ß;qâx>t­Âþ?{>M·¶ÓúÆrºáºëëßÙBµ\oØ×kƒÄ•¯ÌFkHCó †ì€qš    êÆ õ»@$?$D„Ji€•¢)[㎤þ6LIÂJN}˜”¬'ŸGà\—ˆºœÃèíFÙÜÀdâ¡\€�ÞÇø­· óÔOcRÊŒÆ(O{ ßaì' ÞÈ PàЀ[†™½]ƒÜ ebôG¦¾+i º)õ–8ÏQƒ\—Ìzž ÑWÈžç©'ß3Ä AÒ�mdBùÕh¯ä”ΰ9jÉÔ‹ç� ˜Ôçõ”Àg´½¥_h „ ÃH 3ÈR¼aƒüÕ‰¡¡‹Tn:n¶º¥Ar,ÙñÿFïdµÑ÷Ê‘I¿¸v<‘Ëô¡ EC? CRx;“ê-®ÇÞ¥\~¿xOï<OÞô ߤx+GÂmä³x{@OÞTÓ}§!høÛv{C} /"i€w‘—®Bõ,¢!A%Ñ0+¹Æòø-XŽ|½I]tRFô°¡÷ Úæ˜Ô3ˆ®]‘‘ú©Üu;ÎçȰŽñÉ _êÞð½7Yx}gLzEF¨$$¾§ïyÆÛ:Ô 0’¹‹´‹ç%L86i;²¡üŸÙbñoôÉp|î<A½G Rpºn×¾ýu0ŽÆåf ¯m‡HæûrÛŸ¨ûcFHq?Ve·¤€Hy} ¾õh)#¼õîý鯫®OW¾é-i“6Ÿ:™ª/~<}âëiëìVzäÓÿ9»öåiùêÃiV¿÷\s PšO×Óx©ü¯W\±?wÑ¥£µÞ®¬òÈ“O=™ë‹ßÉR-÷Ú°F({€—?þDºûûïN·ÜòÊl²T*`ÑÂ`²HßYbÎf]®p½…ºSr #¹®@„ Ä| .ÃÄûÌ£zT`Nw_ÜÍ|Ç<¬w$½11ç2Q.À·· I€êx·øÙŸýÙvÿäžB²k…mŒy107ù,@úG>ò‘pÃöÂÄ{¬†ƒÔð‡ø‡¹>ÈÁu’çX¯!E=S"½ýèõŠy]™3ÏAÔ H#Ô‹ö0HNEžì=ð¶@?â‰9s'`œ<7s=ë ï37ó,m£ÞÃC·_ Ñ„|i7ëýD[Ù ÇgKÈo’;ùM]b’MY<ƒ¬ùaeOÉ:áþÄzK]¨mç‡g$$“hS$W<S¢®wüÖ«ŠÉ[ݬÍ1œÞÅÒs™¯#¸kè@÷"膡φ7IÅcÅJ»ßí¹¨¬„ÄGÍ?¬S?ÜdÝ‹{nc°ïß¿÷»ºæà}Ü€zåïxóì–²NB² Î´»ª¼%ßÝ—\!±À$±¢¸ù·«ûî=çs]|wódÖ ¦L&ã¤Ç‚ŽLas�J0™çu›_�2ë8 ô(¬û @Ý‚§D¯r<úí §4 {nÚ±”쎬PÊH-à 㽄4-„â¶®(°PÞ¨cß»°-‚|q](¿ ­Ò´vžz·¥ªë"è¿W¾Ö/‚ÕDõ9ûyè ’ª‘©ñÎã8¶£ôù$¬åv9v’{â!Ù©èÒ¸w“Y€¿ï¡‘ã<’Î ù'{˜à~rݯÓÙv¯>¾›e?åxí�ñTn›ÛëóY †,¥‚fœ ¾Ÿ½_€Ó2Ñ­ìEãB÷·ö)Þ`ž=í‡!ù@0P8ë¡97y»Nò« »ÓyÃ(sB!U”>GV]=—²Q3ßL[RËÒRçJ·³’¨úáÔ»x)a'Ïê`ôÐ3”ÕÐã:m{[ÒC*¡@¸døÞÆËÄVm¯š7¤±ZÅ 'Õ¼;šxw<D�¸uœùUÍ\À¼’²bKͼÏ`1|Sj–œB¤€Øž‰`a ä¹=„jQ6 y #)£ØX†^kàÑ8jûá^ÒsJL£TB˜( × u^D2 'k’„•xï…ô[/1qMs+²ï“l1µ24sÛxÒ[o¦Uéw=×è©B²û–èAöÛNËR¿Z»ÕxÔ^ÆÉG1ŒE+«0bX¿,s‰zmhˆ… µœÇ¶rÄKU&x2Þ™ÿ2Þ†Š7§²fÅ0]ö¿å²ÞMšw;O óžžH`pΉk‹c'ŽÍ!jx1'Ê@;¤rÊ:z£æûkèùÆ:jÿq<ñý½g×ZZ˜ i‘i‘éÅž$Aº.»æïþû²ý«[÷/-ÅsJ$öûÛÈûØÇ²-êío{^_‡{w²ÿŽkûNÿ–}IO¸®ñ¤ážk4º¸Çà‹µ%þ`ÃÃ~h¤‰äq|±2ün§²†m"y׋ÍñŒ1”ãå”.‚ʼnã'²ëÓ5Ð5©A®3'ϤÍéùì>&»Ñ[®ÒÕS龪6ÏN§Ã/I¯»âõéÆý7Õ�[9xØ{EVŒý€|éX‰“o¯íJÛÓyZ™•Ή‡ƒ%†Á}€T ¯ºúÌy¤Ô2ÆQ*ŒÀ$«äËà{ Ï”©ƒIo�ºF$Qž€/‡žì]£! xsBÐÝå¼#P€!žç½õ®Wê@ Ê6âáÑÉ �c=õ0¤ 8e’çZ€”¿©«Ää '�<Àõ  €� ÖÑÃØ„Ñ¥©„Ùú´Wb 8ú‰ŸèÖ€ Îü=HÇ Ñ¤KCÚ$9€¼0ðS'&¾çsÚC¾|†L$b 7êdO¨²%ž3¬†‰#OciR¦õÔ%v,Ó§ÔKO#%–uÑ•b°.d$t–¶P’Þâ¨>ÒÇ,�pÁM~´“ºS¾º§WÆ $!û~ÖŒcGÂDfÒÄòç]CŸ°ðAî N¼ËMd½X(7ꯒáC¨:' ù K ?ŒÊ@‘xDÙè/má9½Yð.y§$ zŸpŒòIX´À³Ô‹>äßÔ•òÝP¨o”!Ð$KRˆñÒuéLÛé'¬ 3Ü66\à ²‘ CžzщïÐJ½À9¢3’g¢½Å {äé­Iûœò¬¯$$ÚŽœ-_’ ß1¿ÐÖì·n?à£Ô¥‰}ë-#7,”_Õu¹‚\-¿Î(Æ<ÙyÊà=tCÕ¾=»Óƾ+Ò®}²SÜê–W¦ÓO>žN|ëÁ”üJÚ~ä¡4ûƽiùü¹´ù]éɧ­ë_š–^òŠ´¼§îƒõÚÀ1f.:Ÿ¶7·ÓÆÚFºòêCµq)¯ËÝnÈiUÅ-ÃÚ˜º<J÷}íëõü÷PºõöÛ@s-›(×w­§4¿ü6‹ôÝOŒkÈ‘zÙa þæoþæEŸ×“ã™1ª—<1wH¨»ÔÃxò&÷ÑxiYû‰9’6‚k\4x3lh<·IIîÍü·)Š­Ïаïsñ½˜÷Åóëë-ëA$6^y[š62÷ñoC»Yks¡*˜ç™—!»B„8|øð·[‡ „?«o{ƒ2vI;ŽïG}Wü* D ƒ’ІeÅÛåî)Kò§žºXKì÷èÑK‚‹íŽù=[z¶g §™švІ׽îu¹^ßI–I=$Ò6ƨnLJá:P`Ü„‹ˆÀ,…êJEük4J=°ÇÛ¸1ôÝw3Y—‹ºÝ#ᾟ½Š·U—ã-\ÿŒ Ž<ôσ±¦#QDпÊO@" C2Eý ù!øV@Íív¾ðŒÔywpüxã75àï¨Ëàì¼LÇÞ€-mé%dÆIbŠäßâmC0sÔ€UË-xJù877·òwÜ¢.à·Àîh�Dp\ppšt†ÔnìœKœ;:YW½yµèÀ¤7Ÿø¹y˜"I"šÖ!ybŸtsú8 ôWUÿ®.àçMçÅBr)íÈ7¯àUïP®m£‘sœÄú%µ:uÇ(Çm=¤šÑxÔÖqÜ´#EЗ0,×^©íGÞ)ûãå Ò–v”gÉ¿šVmxn%É<ö{”©ý3¼étäö'©[ç ` w1 ûõ­­IïlåX/sãvûY†š±=DS£³ÝøŽó«ú[ê¦vz0K( ×Árß÷wü,ê¯uk´ãTφCY)WHUÅCÂ4ÏTî†a$ù{¾ÉyoNÛË^F°­Ñp;4’:^«Ô…U°?ó\2Yñ¡L˜Í»ºÌ›±éš’תÑ(‡ÝÕcÊpÎ7ß2?v$¢¸Ä›þåÙŽÀ’çÜ<�$‰u¤ëÛé9;®¡Kµ-ÑP[[Ó ì0ÚY<K“wÜ‹F#>²›Œû!6ÇGÇnþ®2¾Hñ’½éÎæ”OùYˆ³f.‰ÀC<‡Çy+ê†åçßœAY7ø¯Y7GsçKÇDG2jÇRó^$D_ÔÙ8' B¹.³ív]ÔÉÖÖR¤¶mïÈzµY›òÍl»›S.ë†^râ<îúØí{údû<ÚW;rM ɵ”†žn"Pãw‚"QÎ]–Ÿëše¨ïÝ|7íb¸À±Ü¬ëØÒ%î{i‘i‘i‘¾“kàpÍöߨGžé’ØÅRÜë»/òÇõ{“á… WÛ†à gÎøïþ9¹ïý+îG†?ÛÛÛÍç\{©ŒÛ_´cÏCÍNy“¢­Ï¶•Ðl›Ù祭¸ÿmÚ`ž­ÌxÖ—$o„Ûµ“ü.7¯—MköìÚö¸"­¬­æ}å;ùÉÚ€ý•G¾”¾yúÁtdåHZª W/?{sºcßíé†}צ•ƘDò–¿·âe££$ÞZÇЫ— $o¿EáݽðCB‰�ÉGrE4Zx„² ó@}të HÊŽwPTê@^’<<bÜ¡¾ü0IX~$ÄÁO°4¼%/È|Çg†V�`ÐèÚ°ÞÊä{ ߀ðÊ£:�¯Lq“‡g@܇ÚsÓžò$Hbˆ„ ÚìÒ£™ ôÖaøäÀ¤‚‘œò#i€r ÝbØú2Þ¨G/hCÇi'ßÓvÚ¥ÛGo} :ó¹mÐ…4ûšºëeƒú"S 9éì;þöF#s;”zYßHXÐà¥kmê=Kè „zæE#´ _¢ys‹" Ä Ý¸kTä{d&ñƒ¼;qô.AÒãåÒ÷ÞŠæ>Sgs… ý…{ydJ=)“vòŠ,@úwåz™ CUÏô©zlùƳ巀ýÊ»�€!.ŒÊŒçßèŠ7–eZZ¾úŠì%·x€§.è¬åkˆ”°¡w =O É)Ï·x˜¡M¸¶ç·„êmÛ¯€¥Ô͸½´4Бxžr(ƒ¶°8óŽž`ÈKÀÔyˆg©'s”äÇï8Ú§¬ÌG5ÉÐ9|&QÇ<αhôêcùŽ7’qp­CÛßµ¡âôÙ3µÑy’½yËfï5×§Õ½W¤Ç÷_“ÒMO§µj;í:õTš?þpÚ:u4ûèRuÕMiißÞú½töÆ[Ó@Ÿ:Ÿk®»6]qà —»Ò^ô»6bmA®€rôxúâg?Ÿžªû”‡HçΟËëØ2c%Ç£½tfî"-ÒÅú/ˆJŠÆsR4êõư@&çMhAõYƒã^"&òb~Ó;óŠs ãÂë Þ[HzõqÏAy˜k M“r†á ¨OöSçÍ3ü{§Cåó,uf¾…¸€×É©zo’ôfè©aÛâÁƒyµËvÖëbï†ðë1Äê¶Ô‘ùšðhxê`/Ä|Mþxôâ{ÂZ0§1ÏÑæböMx÷àïH4°¨'eê…JÃCTìk~è?Ê÷ †Lô¸±SÒÀJH þð‡óºÀZ8<LÑo<Kßà±ÂpwÜqG»wTÎwÞygî+êϺw+‰¡¬—Bzð°y©‰5‚~¥>”ó‰O|¢%9>)S$TZJ2A*MÇ û±ÁgBhŠ Ó…®û#x0ú+2ÎGЋ4$2 P{‹Ä±$¹„V59ÊA_ãLÓ!�ºÆ›Ÿ%å+ÚÉ0!¾#øWB x^ëB‰D’R$ºŒ2yeÖ|_<l˜:кä xŸ�,+uiÀÔy �b e1mº‹Ÿ÷ŒRxÍ$/Þ –zà­{[@ìét¥ñ„²ˆ‘è! oÛ*ûqÒʸôÛ¬}N’KGrXº�4€ëp\øL4ÎDJƒ™i¨ÓÝó³Ôyé{ oØD°Y¹ î¦C½tÞ$� yŽÚôÁ,‡uè{êP[ú:7œGÒ´quÏ>r逹ñ¶¶·zröÜW¼«,å|õž’ËiPɜרóЂˆÞøæg>ΡgôœË©æ= ;Ê+ŽÕ¡Ñ2Õ<ÏDâA!u²vMölí9‡ïY—údšN?ÉCRA#áºÎ³ÆÆ‘hÖ¬Q]ȉjnT-©%ÎAþöß”uÝ‹ ©ã°´yÜÓ·˜×p¿×ÎnüŽOõ™gºÕš2ô>4¼u8zUñ Ägžó|nHØ\!IkÜØÍf·šªÚj‰kE·Šä¯öy–ŨxK)öªitÕʪ 3wÆïHÒÊL]èåUù_N©Ãö}j'bŠd•ò÷¼gŒvÝÔþÁ>ATÊÚvG@ݺvsaÑSçÇœ÷¤[×FÍ8ÝÚÞlò1TPÓç“&Ä쨿rj òUÖ–2·(ÿyš÷ú½Õ¡ñ¨%‡´:ÎZ;ªzd›6ÏÉdÇyµ)>‚Ñ߶䀴ž‰-›ç7[‚éêêZ oñSu™Åv4HT œè¯>@£þ“$*Ä5sH¸I ¡%É{.ï1DUßÃQàð³XFÌ+«QÈpçdQ.V-§ñxÔ6æîi‘i‘i‘^L)’âšXΗx6;N<GƽŠû#ÿvɾì¶*ìjq÷ñœÝî¡BCƈ [#û8ìlðwQž—b9±N;µ«;‡Ï[<›„Ýuhÿ‹õž!bYßXV<Ïy ϋ͑Pëm»þªlO/DºlûŸ}9€¦z“ýôÉ#é¾ã÷¥¯¯ÝŸÎUgÓK–nJ7¬¼$í]Þ›6Ïm×FøÇÓÚÆ®´o÷ÞÌT@0Në9�%ñÖ3Š‰Ñ—Í-‡)”ƒõð¦?I7Ú(FxŒÒn’ŽõF kcþ&?íÈ�Âøì!˜ƒ�FæBòF_êÃ3”/aCoü–,a[ôž@Ù–/xÊߨ8øù`ЖgM�!Ãi   ï�˜Î9ïz";dÀ3€öÄû&–9`¸Þíu!ay¿qŠ¢±Þx ÈA°Ãúðoê!p[nÃ2ýÏ3+mô¦¿.¨£Á›6ºÅÃdq³»Þz#Äà}Ëç3ò”¬áM{ô½B†F€6¬Œ`»$žØ’ˆC´ç{ú‡ò(õ®á­ ~󹓻®Îõî¡ÜÉ‹>óP ØE_qKöž{îio×J ‘ù×z‚IÝÍÊçÉ@|.™‚úQ6úÌgŽ7ïhd£,tˆúò9㕾—�Á ÐÆózD!žÓ=¼2æ{ꢇ‰´ïl;màyä¬G ’ô‚ÌôFAI–‘ 㢯>!ò¤m¶½x9¨ZbïèqB/$o¤“®Ÿ�G©¿.óéS=¾(ûxÓ›<\•£:­á.–ϸsŽäo L=h¿F?eB%kHv ß‘1åó½å;~ùú¤úI ÀY2A‡å;‡’G$¸xûžç Y’çÖ³õ¸?s.»)]_]Ïá<¨ï“O=ÎmžO׽俴g7sgmD?}2možM³GHg¯AÞ§Iç¾ö¥´ýõ¯¦Ñ®˜Þw0?óÊ4žn¦½W]ׄ¥Uˆ<õ:õ™O6=}ähzͯI×\wM6†;~,‡?Y®ë7”Ò� ‹´H/db¾€8§w�ƤŸH° 1F+>8„<SLB‡„&aì2fYcû¬¬%1¤Ï2·1Ö©‹k{ôxÀú…—æ:Þ¼g.„mNݽ½MŽÖ Ö;ˆgÎé°Ó)çðáÃéSŸúTÏi{¼19ÌǺJÞ¢®z´HI† ¾hä�ê½hxÈ@¾xð‚D‚§&d׋?ýÓ?mÃ3‘I2Œn”‘ïN±ùŽzRGäÏZØ„&úý勼‘õ3,$#cÈÈÇþc_€¼‡‰ùÂ&úÄÚ<è+öX$Þ‡8©lܧ“Þ«\ÇÓ³%I~È–½æ¥$Úκ †££‘,ú|¤á!Ö}Ç31ûŸ‹—ŽgJñ@?Û©n/TÚÉaÙe-_é$�–…$y¦÷ë €Ÿ’d T¢³ …$@5jÁ(Ú€v NŒw^ 悪%Ìš›Ø©u[žZ¶iYkä0<ƒù¹ÏCËvþ·m¶N‹óìÌ¿%=è"¼¸>ŸÐw©1fLÚ¶¤4ooú v7` Ó·œCšÖL°È ñæsñzÐhz6èú¬\æó­ö³Ñ¨#¬ÙtÿÞÉUú­«Æo¯Ÿ"†$ É!å½~ø “g£4 nEwôÚIÈâ žAÖV›sú(^¬èÂÖpÛ>µàí¤¹U^ˆ]?4$ŒLƘõ |z©|“ÛSg€' õX—6‚¦KãåüQöøRÍÚÛàó&dJ ý7o\ì{&¨"Wl{ìå9$® ÙNO:}°O¡=«xöÞºñÚúEO»¿m¸:Øy>p¤>–wõ†öÌF‚àèÐ(ÙùIPb_îä*×vëm¥€«ÓÞ;ÓéVî—!È¿ŠÇÊ0cþþžŒ—ÛPRÈùY²÷‹dú!ˆœç»IG~°ë&cÉ-E7û�óR& ÌF]x¢Ò¾ÆƒAè÷h8– TòŸ$/ÅvX·Ö!Ž¿f˜§qꯥ)'µà´s{̧YHê12n½Æ™:^ûûB½>yÕƒûÈ¢7U+ËŽŸê¹¡–jÑ ¾mÆ6^@¶·»[‡†~)ão-ëòÒd©mGÖ×ÔÍב24l+'‰Ê´[C&¡ï ù#æõ+êJ,'õc¿å±“ô 4êÍm©ñD5Y]Ê“ÍÍs9Ü¡CÔÛµöâSG"–òº>nטBjJ½6v¤•Q»gnçÇÔ­m‘ œš½€sñ0ÏHÔÉsèxÔ›ÿ̸§7ôñ|:o‰K‘øaûãšØ‘ õ$Uˆ/ia.X¤EZ¤EZ¤qŠ{’ký®]å‚ë3™%†6‹ÕâùŽ}0ö6lPØéðRêEàèM"Ö-þXΰ¼XFüÎpó”í »Üpå>ahƒ¹˜½æbçiö¥^𯶿Eò‹µ#þîŸñ«‹þ;’,(Ë‹\^nžåw*÷rI— Á‚¸õÜ Þ½{O €IÇNL|öÓ“ÛO¦${ÛúÛÒMûnJ{Ö÷eW˜[€€g§Ç},==) 0SNo"™Â(¥a&0cÜ|GqyÃ/ÏË€��|àYwc´ òœ·­u×¢áVe³|þ0&Q?]üë•BÀRp–ºZ¾åB„A­¢{ d€–Áöóžn¬%ðŒïPíöæ¿“¤òÆ%9å{SϹ‰ˆÑÞA% Ê­Mn´Jâ \ò•� Á³Örh¿,<Èð¬7ði}*a€ö \ ðóC9‚´% ð^#Œ‰dŒl½CÄ[ ”mÈ IƘD�"²º¨`ÿ0XCâßÔÇ[·Æ•·Ïh‡Qâ¡!3ÞåÇ’%‘:C½ÈGˆa1ø^ï äÇmZ�þæ9ÁÝ4›4bPý" Á[ÁzB‰á%hÏY¾‡nÞWn<#"ö› »}Â;”Í{€_Þ–¸aá„ÄCYè0²3î �z*hbߨç–oõ¤ÁA œ.2”c}$½x[H2 úË{œw$eÑ>ž¡Ï�wóLÑ8Åõ¡ úŠúXA&Q'5¢QgÃöP>y¤¹¸{#Ã0*ü £”aùm»ý)!ˆºÐveÅû†‘L^¡{Ãò£ [ÊDÓ¸:t}Z€—î¶š^DÔ_Ýa'×ò ©ã\àæ&¤·ë²ñFC¿?’žzº^pÛ¼ÿŠýuÝw§•µ•ìÞu¯Iõ;Ókëú׆ôñ£ßJO^ù)>ž½\LúJ:ÿÐ_¤#_º2«õatË]iåÆW¦¥3'Óg¿ôõôàæ»^÷éÕ¯º%{ÏÀmîŒx·uYg crìD¾p¼ÓíªEZ¤KM¢"(Ì¿ßùÎw¶cè‡~è‡ÚïôrãÚF‚P'™‚ïñ¾À<ʸÁ«@$Zšñ%ù‹9Å5‰<Úõ<ÃgÌÔ…µO T©ßóÝ»Þõ®ü<ãFŒaæmÊñyæ çjÖ”Há߀êî¿ø»ÔFÄg¿Â¦CÑ> X¤w¿ûÝyb.á; ]zÊ‚9‹ç$±²ÞPs-2Ö«y¾ãïÈyÑ.ÚèZJž®Èœ÷y²#Ï"_ža]ë‡SY³80º^ò¼k õŠ2B–ΩÎË )“ßÔÿMozSûr@®zÛbí¡®uIì¯Ø›RV44› ó cÊ¢|úEù£ÈËqÔ‡³l;m¥ #@ð^Aè ê³î{HxEqÏü†7¼¡eúóœ¤IûãùJÏtxÞé6ÃÅÞ»´¤‘¡(÷ž¨ª‹æýLß}§iRÆú¾�™ºì é·�Î7ópKºx“(7¬'-ÈÁøBfàïiƒ±y£µ�6 «üìc/£X³ %IÕ1:ãÈ,�'“^ûË~û|+§Ž°Q@6< 2zM ¤@ö”ú–<õ61É^3&kü»¸ggn¬ªy v–³â¤ÉsÖÖ[Õ4$˨¹¹Þ‘VFMÝ4�u†šbˆÙpІûÀ›J¨ößC·üQžC@Ì0/å¼4oûožJd÷ûè²½½…Ü€ÞeOºÚ\Ð8ŸeÜî]S¿ MAËýÞÀïfUmÈdš¨, ëJB$†XIm{’F¯Æ£@¾µ>ïn£K6(ò/º( £Õ£Iߘh¿äöâáeÞ}n(¯pú†ÍH(}“zezÃúHªð,¯wÅò~Ô­Y&·tòZ ú5jeYtvÜ3*_RôŒ0$ïHäô–Fõ\åÛîy9Ú]Üǰ>Gƒ)߯®¬åжÙÞÒ´:ëáö¬G° ÓÇ£¥Ü÷Y†èGš÷@ZÏBzÝ$Oψ‚Æ-¹`^ô¼š4Þ‘lû¨ ‘ÒÕsÒÌ5#¨õ»áD™ä±Ô$s“‰Óíöû¢ ÝûÄñ£¼¬cëú9•p:£qçÉ~12vûwõƒ¹¹j.êtáªÑÔëSeäE=+ºçÕ›gni…ug^©d›ã1fé|ÿ:푺ÔóìaÆq–ûµ–Ç|”ÇbÜWYïHþ‰ãØõ*ÞŒäßUׇgШïÑÍöN{‰>1f”ï”>k{+¯¹¹-Uñ¸3NW–ÕúœíE‰|Ñ Û ä•ìYjH‚«B;Æ;ÿ‡óÙp¿ÜŽ¡Áßܪ°Îö=ÆX†ùvku?¼Hþ=ëÖ7mZ’‰$9Õßlü<Ϲx¼¹¼°ŠEZ¤EZ¤Eúk˜†g:Ó³™ v²©\Ì®BÞœ'¸@ÃÅplUرó<W[ÇNö‹XŽŸ¾žr±Íy±{¸‡¶ûÙÊÝi/Ã{vJldØÖâyã¹´íRä¡Wq/‚GûÚ_—t©Z3ºÄïF—ð{t‘¿ý‡ßþHgŸ ~øKëø¾û¾ö©³çj0´>`>zöôà‡ÓñÙ‰ôÊó¯Hw½ìµéú=×§Õ¥ÕfDÖ RÚŽ×ÿûï«tÝaÏÛõ *ÝõóFaÈ üV9‡ÞØì²Ð ô0$†‡@@HH(¢B’Fì—œ2�ùÍ Ä(Lù P>sCnÞº”;|øp{Ó;>8ø0Ð&cGj4ˆ�!10)bí¤M°|Ç3‚¶È„¼)ã<åÇCåñ=ž>þñ·7â)ÀæÇ~ìÇrÑ-e@¡|A{>—Ü¿%‚?²EŽÈ>’e<("7=èΉÀPñ N~ñiùFâùéƒ<èw&1ûQ–O¶‡<¼%PÈ¢§€Xgd¤÷úŸú‘‡mWw ŸB} á à ‚àT쀨X¾úD} óò±},Ë`‚߯¾2¤ åQ–äÚmùÊÑãëE™,hò– +kÔ1CùôØbùùôºlèãgÑ縗G¦z¡l€,ž.NÈŸü 8P¾áP çc¿K"âYäKô.ÓÝDÚÎmáÇ6?<§çõŒSÊ7½qÀ³ô Aù¿÷{¿—Ë$büó¼e¶È1ï!_bW\l/x™Bð¡<êÀ˜áYC) Âêá‡>“0B’¬¡G ºøF÷Œq?Ü\P_ngÓO’ÚH†*0l“Ä æò¥OùÞ1ç\IÝõL¤ÑÈö\ŠäóMÁ§>©ux·“Ú(¶¾¶+-¯–¢„ÙµgWZ[]ËÆæ­­³é[<˜ÎŸHÞ“®€°qúx:þÈéØƒ÷¥ÑC÷¥åTç³¾+êºü—­]é†7¿=Ýy×ëÓ^€AÚ_|¼r)MkƒÓ‰ÇÒSOIÇŸøZÚ»{#»PÅ€²Ò� Šáf”ë k¤bä|æMß"}{)ŽÕΈ×ýÝÞ›wnÓ à5Ënf¡ƒÇOžI¯¸í/º‘vþ(DÌóõ:ysZ¤.I@Ó›ž ˜7 „ìäÉá¯cúõ_ÿõÎËp.;͵/T¢æß~ðƒ™ÌG%Òb.ú«J%}éÙúäRŸ#;ÆþX \ÌÛëóoýþÇÓ¯¾ÿCMþ>s¡+Jõ6 Dž;w>¯u»Û}¥ná­wâwžú€Û4Å«Ÿ’ ÆÍ-m÷-Pñf®r±þzÛ([ÿî–lL8¨š¦*„`ˆ1íK{F­—rÌõæ2«£J`Ùú{;/]êêaÙ¬E£qR±ÎL§³ºï ´®§nb@ªi4+¿û`¤ëŸ·«ãgß‹·ÖËž¸ÓÝûÇp CP^ywä˜.4Q¿»óL< ÛÖd^ØF]U^ÝMöÙs¨$H(ÑE¾+¸Ø)w©ñ0²ÜO²L&u^õÞ`ÚT�ÞrßÏ›°ôÕ¤#Ã@ÆÕµ¿$ŠH&ñw µ0J â0BžðûÂ3û” ób¤GÏ!öaôÈDåÕúÞF£‡åXˆU»u¼—>œdÝ$”aô)yˆ÷$6'zî+eÌÚý¿uŽ·ÖËg£<–Š·›ÑŽÀ±òŠ·Ì#pÁmËö™!‘ˆä>o Þh[mBBDýç<÷þù‡§>é…¼s¡wƒzé!RÏ ÑÛbÞƒæù±#Q´·ßðªÓÈvž=3ï@C0Ù‹3qÈŸé©eÉp¼³¼hG8ŸÚw;­'yN+¶}9$ \Œ,0\”[ÓãíÜ ±)ºÐ"äû^WÓüd2R=¾9'BPÏæá\€Î¢kåLPÚ/±À¹tÒÌãÖž4këçG펱ضm'}Ô¯ìMaÚï“H,ˆrö],³»TÖ§BžÞ¦)†èÊ}’šõ:‡ù©²—%l�êq R<IEomº¹%µ¤ªØ§‘4Ç‚óýðŒÏq?0~ÝtŽìdšÚ>Õë¦sª¤ ípí~‹uey©íSú#’ôb[7Ö—ÓO¿ëeéž×W/'“†¤1éÙ ¬S÷{a/x¡ÒwË^°H‹´H‹t9¤xÆrÎÔ÷¡CÓó‘´O3à ;"ø Xàó½þ9gsäÒ/˜‹$W\ìï¤b˜`8ìé½Èí¾ñùLî}‘%X—¿ž«ëg¹¹ÅFðdó{6ø©šßóðS…ßßt‘¿Ÿé÷ðß45=Kºl<XªÁ¼¿|ô/Óg§šžØ$ðnú¶tã®ëÓ¥ƒiuy=Ga±x>x4Mê æ•õ`2ÌFy”â€.ã 퀂w\®QTÞ7„ §·<t‘â$Á`dÕÃnñ G!pižÅ0ííuòâß¾Kù�±´ ÃIŠàs”€2(Ò‡1·©ƒÞ6H€–&˜àô.Á3” ûËC<õ2„�ÉC—.ûByîmo{[v…gÞÿíßþí Îâ€ØÛóäKùÞÎ$/ä.a‚:ëZšž‹á3”‰.• ©@pš< ’0 ‘·€=�yNè̓þÖ‹}ïA¡ýÑ#A4DñŒžHȃ¿i^=±ÉƒÏÉ[†áXȃüÍGï/¼Ýjû=Ro¾×›y¢9Óz èuúÈG>’儇ãÕ[gå¦'�d«‡—x{Õƒ£dýÐ.þ¦ïô¤aè’ä ]šK˜°ßÑMÊGÿ4ÊÆö[>òt¼P^TÐCÆ ù£{Ô™1ÆM\äÂ»Ì |O[пè¡ÂÐ#üP b”A Ãâ8Ô{mãyŸÓ,´|§Ç 0ÈD/1Ì?äA¿¾„ï ‹ðÙ'?ùÉ\·þáÎä&ÚiùÈ_ˆzAùÈ6«÷$äCÛ‘3íQÿ,Ÿw’4®Pv$ËØïȃ|(Ÿö;é¶Šwô„Ãw”o8%ôÏ0,†,"Þå{¾³°AãØ£ÏÔIC˜°Ùp³CèS&ÖáEƒ¹ ƒLÝžS'O¥¥ÑRºêš«Òžý…HBø3g‘?å?ÉûöHGŽ>•Ξ:›n¸é%eÄÁçÊCiýúÃéª;ߘ¶ëwN|ã+éñîO+}$ݶùXZþìvzê‹J¾êÍéªú½+o~E]ߺÒê-ĩӛµasá½b‘ébÉy ssÞvbrÿuNÇ¿Óܳ•ÉÚüá8ïçXvªÃ_÷ôBöÁ¥¤K-û»SÇ>HA’!6|F/'ì¡p% ±„Ö�°ðüU€Ûr;¶ÜØ/ LÕ#B4­lÝ,êê$�‰‚;p;Í OGªÞ¾ÜêBM�h–=HD�í-e6rÝ2�߆‡(Þ ¦3oÓ—ùð†\/E9tYnx“ÒvÂmæB-”ØUá¨ðtÒÔ¯ó¦0Ÿogœ3z^(šîL4¼­W‹8&¼b|Z nDT®¶#‚i�ì]¨‡dªë&M¾Ý3Co#‘„QÚ:Î ¡7ð‹~uað:°¹YnaóÂ$„·à½ÍÆcžmË$æÕµBÖÁ~ô€m\Â6 ¹­³”]nH•÷Kªü“à ÌbŸ”ßãQÊ"ÍZbg–cÒp™”Îa‘`0¼-Õ…³YÏE¿}†Üˆ±ìç)ÅK%¿ä’F­§»åårÆ*àdwî-Ä~<Œ›y  {â9Ó1=$ïPnGʨ. „Ø6e%Ñ!ÊJp5ΑeÖ‚¬¬_Ë@|GJ‹¶�xú?ÊÑó½õÈ`mUõì?êüÐ+‡Ïx[^û€J]çYל#â˜]^†àUÆøHe~@n¶Õó_,‹¿% ”ñÓÙ¨$¨ÙCÆd©%‹ C÷DÛR†µ‡˜O´ÅHàŒ7¹"a ”1ï½Û/¯Ø÷qŒ Oúëüù³Ù#áæÖf«£±ïãüˆÌçòx†5/á<rX ªï± ’)loÔ»®©7þZrEJ­ÇœyUíHìæÝQ2•ãe(¯Ø/½rÂçŒGåUd8ÏëõòÒJæ„ö¤â ¥jÛ[l®Ê›ð`Ì»vï ki¹ìCl¸æD"ͼ Óâeç‚H�Šr‹$ 0æÉZ~WôÒYÝÚSŒ›½ RzËS^ñìBß³¾º«§º ÖÙŸõµËÆ´¿H‹´H‹´HÍS<Ï–ýÄÙ–¸SŠû‘øo÷.~Îø øx¤ÑâÞ8îaŸ)Å2#I׿ ÁÎxesx®ˆ{Ï"ÏdwžãŸéµß½ 祈IúIÆq¿3”%É}Rw.)ûBpÚÇY¶™_üwܯ_n6ÁËÆƒÅ'¾üñO}avozbt$½òôËÓ7Ý‘öl¬m'Ò´ªßµõtðÊýµAc5?Zƒ¢Ç¦•z{Íuצ={÷åCcT u�p�q$ ãðN7Üõp"®2Q0oš \ò9Ê'aÀXæ’å«üPXCÄðјAù�¡üf‚`sO䥫|Àèü¼ a@ 4;(ÐÚrx†öS×8èý^€œ|)Ÿ¼ßI@‘ŒˆOœsÊ‚\›p6äCxn RO§@p7 ¸Œc8 6�)„ êÆ„E9ÞT×7yQ/òÕ€îÃ5~ð#`ìÁŸD¹€ëÞÈíg²D^Ö¤lüi\ER¾îxøž¼‘•3Á)›>c"¤í_ ºêNB´Ÿ¾²ý¼G[ô™äôÊaøÈ€Rä©m½ªèA1ßyî=ïyOëJ=&ʃ\Bû=`òC¾´k�'¡#„ê Ýô)ÏY/ÃXxØ¥ÞäËû°ü”U,[™ÂŒÆ>Ú§ì%zPc$äLéCäÇçô¥1Öê•'ÿÖM},Ÿ6³+’$ôÎ:ûÃâf,yÆ¿aZ$wéу¶#>£a惶«¿ñ¿Ñ– mƒìÕë†| ÏaBÎWË‘íâ3ú‰ñ?÷{%L¸Ø’'y;·D™¡[ôí¤ýÔOb™ÌTÞG†´‹òy.– æ’ºxäU;¶ O žº£,å¯Þ‘Fðý{¹ù±‘ž:r4Ån¼á†º-{K\ÕllknfÍð®s&=úØ#éL DŒ*Œ_Ótøº›ÒÜ÷çDc⿺Ì'Ÿ|<}ø#I›ÇžL÷¼ýi~êXš|ä×ÓìôÙ4]Þæ»¯JÕËnIû_u{:¿²žÎž9ŸÃ’<öàçÒž]ë ßC)ߺÍ{÷÷óu#EÞƒÅÅSÄ\x«v¡ó©½ñGÚi ¡d¤N pÄ5dÑ/ýôÝÓÕ =X¼å?Wÿú×þ`@\èÇ(ï@ز®ãż·Ëíçræšä=Àòòj¯m<Ë-a %¤2&ºÃ~™k·ó<^@šÎE4 ´nÌÇÞâ7ÀÓ¬­—àywfå|Y“ñºá~¹¬ Ñ#DôèP5ž*&©„5)@‘ï›(‡slg)ÀmуÀt Ýá-ý²g.„”ª*ybÈ´õÖÆó}𺓫’ɤó Ñå)�›©WGëÏZÖK]ñÝx+ؽ|LÑK`Žw2vù|_RCnÙÊíkpú~.¸:iÏj$ŸQ_»5¨ó–RH6 Ð]o+sõ`Û ”_t±#5·—vļÝóGpSP®ÜsîêRÀéª%±˜rX˜ñ$„bÜF¯:Oñ†ó0dúÏÙ‡>£¼(oŽ]—£Î:3W Ï ‡ñLìoÏŒ{@ìµ5B_îjÛS¼‡œo÷Á¹­7‹hDœµžýb,S }´[w½ñEà=J}.z’ô"Ž:hX®8×xvV·òó”“:Rú;4´Æ¹Ô4ÌO‚ÈÐÃßqöT^ļ^Y-„—|Y© ³ÃöDYåÐKóTæÏ&Ôа õB½†AðÙh¤v>ˆúØŽ¡ª#òäÑ2 Æí,3]Û&––{2Žº8LÅ6ÕÈíWu~èÕ%Ž'�9d�ôt¨'++Kic}Wý{­!Êuž]2ifÖŒù>ªï'›”Þ›$ª‘†úº“÷…!aÑ™èQ6·'’â>[ù[ Ey>·c.ÎÝúZÖJȃÙ;ï Œ”u&oÎóÚYYŸ Û¶½=Ëïûž¿# §í›@Øöo·'˜¶yØ·‘0Ǹ²ŽÞ{ /ß~0zÁ‰kœvY?‹vâxƉsU¾à´¾œ~ö=·¤C,¾—ÒwË^°H‹´H‹t¹¤áÞ/Ï56ÅE„Kp$ðŒó$Ø?xi'gq¿³Sz.ëá°\/‡Æ³«— ãºî︮§ev{Í•žý#–ù\Óp=#mæÐve/íEáaºXyÊü5¯yÍeáÁâ²!XüÒWþ×O-VÒÝëw§;®º3-×àØR-ê­ùùtô©�3Œ ÀÀNo$7×,!X°yç¹î†Ärë@º€<Ê`+¨Gâ=Ào¾Gñ4€§‚ŸQÑI‚͆!yhá�AݺQbÀA€Hþ&OcP›åÓËçòðFxdõ{(¢í”o’0Àd�(É¿=<�ŽBî°aù²Â EÁùî–gœúA[ʧ=¸˜á]C³Pg€^B9H é\ÂÀ²@*�1À±²ã‡ü÷;<õFfzã�Íc<!ò0æ3¾ãÉ 2ÅX¨åQ>žŒE>í‘mŠ“-z%  Õ”`o\tä„ ­ A#9†~¥éƒØëA]iû>ðœÄž¥|tFUoèú”2 ÃdžC½� §®,dÃæö¿òç=C°HpºcÔó†ãùÐ÷´]½'Æ ]¥Ý´I7Iq¡à{ï½7/¸äL˜Ð;H%Î÷RïyÚOÔ‘¶!{úž9‡úR'ˆ.††á3ÂáHn±/{ À8^I=$N o41Æ~ó73?ÿ·þÖßÊs²—0Àó¼èúŸ÷(=ˆI²²Çhaô;åG桉ç ËÁsŽIÈHðBnŽIÊ¡|½‘˜xù0¦¼Uâ¼Bù­¡:t¬/m¥|>+›¯r;†6R>²F&Ì)è}Û¯g=ÖhÔ@nÈ?zC‰‰6éåý'çmÞá‡1C}©×g?ûÙL¢ú‘ù‘L\Ê:φñ±ÒñO"-=ð…tît=gmÕ]W¤é¡ÒÞ—Ý”­œÝ{v/ßCé»e0Y,i‘éùNÎ7϶& ç¥K]Cž+Áâÿzß¶ó¦(ú{ó2v{æâ>¼##”õ—ïwïÞÓ1Š'ŽX"@Ñ÷†àù;ÞÎ.ë« §7qû�´çªLIh.`ýr�áK³gÏåï# Š§~J»SÒûE|n6›‡µÝ0ó°T0oÉ"ý6/%½”3\’Àþ™NKX…òL #!黄§\Íßwk\ _2Iˆ7ü;b@±â®Ê�ìR#Ÿy<Š:¢FbÄN`™ûÄaŸ(ƒ!ɾ¶=]ª2ϸžÕ8>¢§ÀòLÊ}šŸ«ûnk{« ¿R�;öl„ûXߨ•=jÆ:JÒ{ÄÄãï­­íœGt3‘h>kÌž¼$UžNÀNCÂθm¯2-áFå&ýüÂÐÑSEì›xž‰r‹ç9÷üÑCD¬Ÿº!Q ‰ÝÅŽÕC.zÁB;ÐÒÒJ{+­”±ÝŒ­®÷cXmCC=Ž€¨à­ ¨2·­ç%ѳƒ?ÑëŠù+á¼BxŠjÞÉÆ~! ‰Q×'¾ê‰KÊ‘ï‹ÇšyëÍ‚ñ Xë9(îocÿç¶äùrT<¥4a,"‘¦­O¿Ö#z¨!Q~46[OÛ?GÇÚþH© /¡Sþf=Žæ†+eB‘w ä…âMahkè‘\RÿV¥ë[¼ÉçÊ~6Ïg@ OtgâŠÄµñh)“Q”Y$È IPqrÌuceÞúL‘øûyXŸØfÊ‘ ¾F9 íVC‚Œ:Ë(:Ò‘ ù˶vk”^òÚd áCb dCm=”ï~ƒßq­±ï"9fX·(¯¨ŸÑ>mF‘ˆAŠd ¥ì±h3ë°ëEûÒÈlËÐêüa>Ž•¨s1¤Hœ3xo÷ÆjúÙ_,¾×ÒwË^°H‹´H‹t¹¤¸ÿv­c»òÊƒÏøŽku\ý›}8ëá¿øÅüvC]÷Ó‘ =$\’âžÔò<_Äy™ÏÜóóÛËÛ`Jì¥ãÞ=†–ϰ1ï~´S˜ƒÞ¹õNò¬ñ¤ŽàºsÛâoÏ'±Ý´,„¿Ál<?¹—òw,g'YŽ.“!— Áâ×ï}ÿ§î¾êµéÆC/I+ã•bœÊªZÉÎMÓÃ>œµxxó†¼àŸ£$†d@�Ì�–’ùܼ›wÃ7>Áz”P™òã&Ùp¶|ç€Ð¥ ƒ‚¾x°÷æŸæRGÈ 1$„ƒ’6¡ôC7-¼héí~òâYÊà'/¾§M°‡7ì1´Ñ6Ú€ëmðVšò9\0f‚÷ 0ø�.©³²/7bºÛðÔ `“r¨? :¿i?å2)RWêÉßæeFtÈsÔ×pN2’R LX>m¢ÏéÿrKæ|n‡z`ŒŒ ßÛïaÐØ”¥g ÑÐG9xx /Û/Yý(‡ò]Y/x–~¥ŽÈuHX ?ú ²Šïª×è~ŽbJò<²ßûÞ—Û÷æ7¿9!È#’5¨å#dK{Ì£þKô�€÷–u0,Žž6â!Øöó9Ï‘ÐIÊæ]êì˜åY,>·üh07tdêjÝÈÙÆ›¾C}!8Pwd y™è.Šw‘ 2”0€ ùÌö»�ñ½a+Й‹è?ïDzMÈZoÌ)ÈÝp2Åp¸Þ¹W²\þèþ(Ëö½ï}onS¼Uƒ|È߯-%_ÊæYçÃhD ®xŸzò^œóÐY=ÉzMß>|8®1†Ï$Q¿hd lê0tL2d ï#k’üH–Ð…ª6žAVz˜!ñ¾ÞXÌcØþn˜˜_œgd|ºÑ#Fò£ÿyVö¿.À:W¦…ˆƒLˆïvË-·´kH–=î·ëŸ=~$=ôÕ/¦O>žv=ü•´¾ZoR¶ªôø+oI{öï[,¾‡Ò‚`±H‹´H—SÚé ÿLŸ?Sz®‹_}ÿ‡z@\2º÷ú$ �ÚÕ‘3¶û ‰ÑeŸÑ_Ññ}÷ùeí·D](r>ß hëÀ©¥Ð®ÍÞ ïè1@ CQRx¿¸ØïHÅó…€íRCø(N ø]<nÌ›Uþñö®dŠÞ¢ Ñ÷|€Ë¶«ó„1iåQê¾Õ†•”˜<jšòo‰d-1Áþ‹7q;9Rô<!è+x§.D`0ÞŽ Cð›4 å>8, AOÅ%)sÒ[›‡àâÐPe{\³ :+†¦Ý†T9®ì‹Wë}ÝÚJ½w {$~ä2ÆKiHpž6DŸÖ¿Æ‘ly²Ü»m^äQB~(kÛÀß’F­Ž&Ƭ _c]b[Ûå�¥óY;”Y,#šÑÜÖ[cd<š<+DWü‘èÁelC¸=ÙÙN{ã·Ôi¥Ë}%ü^]f½w$øY,ƒ<¬¯cÜùhè Þx÷¬õ«'Ó/áà8öK´)ØNê£b’Ç~‰P>Ïóéæùì!İíÙ1u¡IJßÕ}µÜ÷¨á¿‹7¿*4ðFIô`Ý ñlù¢ ùRçÖt;{¨ˆ2aú[rnÇ.z¿= úUô;œOí×›éÔ¾§¸Œðz¹™¯«VœAÛuf©¬EÑÖ¨§PÚG¿äþ—± ëü,//¥úI™FÏ ­¼V–óYÐ~–T4”c“þ{89~#‘Êþ‰²úCm´uMUë]Õî_”˜ÙÍÊüç•ò{©ÌŸU.‰D¡^³„Ü©ö‚x‰%‚¥Ý\IIQg­C¼uŠlçý°Î¶Y{ý‹ÍÀ 2æÇíH58¬+ºVBuU½¶Ø~ Xüô¾,:° X|/¥ï–½`‘i‘érHÎqñ,É~†µìСƒßVž^¢þèG?ÚzèÆ&=„?߉= ¸ø+½ðüB$×°lÊ„ÌVúB&qnð °  |;v£Ë…`qÙj»uåûÒKÓÖæVš/Wim²š¶æ[Ùxq´V22€ð‚ºü¢£ � lÄ-½ùí­e£( ¸Ç÷€Ú Ü0»¡v³îÁƒA¥›n°Sòâo@O½D` ê jhÉ$êM”Ã{ ëÔ³¸Âܼ€IO›ø±|êlù êCû-Pò,u'©÷½R@@à9…ÈŽï,ß‚`ù‡>ô¡<Àßð†7ävñ.rÈÖ3¿i;u¥.z ¼ �v“?D‹Ï}îs™´§@Už¡¼G^ñ& ù‚ê}BŸñCÆ¥^€²äÅ$¡!‘ßè»3Èש1!uÃ#’�x†: C–ñ¹€12áY ö<(,¡‚w!6P7êÍóô†®†î}©[‰U}º%Ê?ï“çþáf]ùñÿñ<1›?ãAÝçô²‰åG#ªl4Ê:(YÀþG·÷ÉC$òÇ`¡gÚÏöЋ®FCm<8{ˆ×íŸñ.^?ÈýQþå‘„ ¾ƒˆr÷Ýwç~Gïi7!nÈS¢‹1»â‰|Ðmƒh0Õ€¥w ¾§ DZ¨«á{è ]aJÔpþa ó·¿ýí¹žñ€N™èmD¯É×¹AÂãE²ŸwŒwõƃ3Œ~ã7óïèÙÝÔ…}Îß|NßÑ^<·¸1âoÚAý(Cã"ù1¯Ñ‡ô©^OxO™ÑnêHþ<O[¨£s¥›0dJùÈŽ:G‚z$«S’å“?ï ï¬Ô—ri§áXwäAùÔ3z#¢¼ËñÕ WÐfB"ñãœöÙ7D“zØœçFÕþzCô’W¥+îù‘tîìù4Û:ŸF|>-Ò"-Ò"-Ò"½Péb‡á=,ì�vŒÎ©´:ƒ‚ë?k¹¡×ôâEŠ€&gñBP(^! `0ÔÝøÇ5û¬Ún@¬¢¢|]{—ü½A>k�Ö­ž§÷¤x€Ðcm¸•ìPÚ’šwÆíy®”b³Wå†xy¶ ]Q€–À,ä ßÛí3%I,XÊÀW‘eÎ=¦ ©­½-\nâ"FÄ/#”€÷cÄàé±ÿ#é¤óPÒ=Ç{Ê6ʘ$À-pí»z4‰Ä ½tL…Zd+è`?„I$ktd”i[7Ú|«û})ßêg°1“dÖG™4¹ [ËÖ³�ße�l2nAÈãŠÏ&YÙ$àİã¶ݘ²^í +t¿!6´miôgÞxˆÉ@^äwDƒÎ+HÑ—Q¯_2±£]@>òÜcŸz›kxCKˆ)¾À¸tA}¢Gñ±¹Y\ÿrfÚµ«j‰EC¯�îåíÿ^¦Ö®c_Æ1mÈ3^°^ñIÑa°um‰:ÏÑóy?DÅ2€sS·HT’5ÔIÿŽžT#©À¶IM¦õú¼…çÎ0†’\_ßhÇ�º´¼2iCŸ´àyjÎácC$ÕóCUµgAR$Ítžo:(C}ˆ2!$cUëÝR¸¬ë3ïô]dÝçÙQÿRÁXP@ìQ¯-Ê+Ú¬;^døásuç.C@dâ–ÀvÓNmô ç[Iük«ë^ ®;f­<âš§lº±0*Ößæ{/ C²Äp1êaÔ©XFœï†åªsÎÉÑ+Äð…ä&û¿Œ·Y®sªæ½~Ѿ”çBîÔåùª#U½f>"ÄÊÚêZ&X!S/D /ò ×’áZ/©D™Eò‘ßÇ5HRU”o IÛ¦~Äy Ë«nÇh@rˆ^1m$»Ä¾Škç"-Ò"-Ò"-Ò‹= ÷„å÷··ÆéeáÃþp^ŸßøÆ7fü&^4~>“80¸g.vƒ;¼ÐöppJð°Œ2‰³Ò>°1Ù~ýõ#k^6‹ý{rŸâlZ]ßUWÿ7{ov[RÖw×Z{?Ϻ!ÆáS®·ºPY!Ò(Iˆ2‰1æC®+ùhü\I¼’|Ép] !¯¾äÒÐQA *ÍP&Á6¼1Žºû ϳ÷z÷¯jýVÝ«ž}NºÏé>ç<»šÍ>Ï^kUÝu×]µªêÿ¯ûþ ›M Ï¦ÏüùDÞl –9Ù•0àév�;�/’LcóèzQ/€m€õ/÷èzž<ŒˆQ Jr/ÄË×e<å<~ò±|äsÁ7™YŒaÈÖAðÕÅ>ò;u‡°à ¢w {ÊXV7¬Œ‹7˜Ô*ö@²JdâSoÈüàóimB‚�(¢OÃHPtÑÃÅu°L’‹"Áü›o¾y"• sÚð£ýh–bín µB¹ÔßzQw½rpÏÇM2ÃpÄS!ʦN 9ÂßÖ’Ôy£Wêkø uGù\oË'oÚ6¶;I¹Ü4’XcùÖL¸NжØ)6  K†m¡|ôOžVh £è†óB哸›ß©_ìÑ åKPA‰zFÀnxð;òp rKôFAÒ£õ£¯a‹0è“èOÏ‘H"aÛˆåS–^°!‰W\ã%(›Ñ 2 Z<ѯ ’{CnõÌóè„ë|ó;íŽüœxž{ÒÒp2”ïKJ»#O~CFˆI†…ü PO®ÛÉ“r%-q/òsm¯ Úïɽ2VQí¶FÈ/S‚™ö„NæM¸½é„ý“rh_ò²ð›ž%¨¿ýÉxhŽm‘(#‰ÇÉŠ‰ÊfjñVáf–D‰o\#/ôªçÃ8æR¾^Z¨+7  Eù<'ÉCÂŽ½éõ‚òùýcûX.–,2èν¸¡wòñw×é®Íý§ õyI§NŸJ'?¯œ&üÿï7Ò.íÒ.íÒ.íÒõ˜æ Ñ|þ_AØÃ‘”PRq¿ P!JØ€»ÇyÉþDŽ€¨°\ö#™ z™ˆ9ÛNCÂ(@l9,!˜\]‡‚BÑög�xrËóëu=ÅjÙFzRð·dð¯®ÍÊGÏÕåÿ0Ê·`Tͧ’/ŠsÈZ~!IÐkj™¬·ýýe>I}îÜù‘D±ž¬ êÖ²ô.·šôÁé¶ý‹Þ«‘$á3T®åÔS¿�‹k©B ™ƒ×ÑÞü½´Ýb”£ÌÕ*™¤z2© Xñ8ÂsÑEj&.Œyv–Á½›v"Dȉ“'&°•0Ñ»ÜЕ !‡«´v£7 @ën<ÅŸr]†œ§¡ s[# xI]†,ÝDÊd°Î( õÉê*s1úêºâ'íFW½Ú—6‰Æíßöm§ÉüI¶›ýÎ6Œ€8NDB}ûĉÿ÷ìYÀë?ŸemÂ>Ì2ëð`$P0w=#Í(ÓÔ ÐAU金¸Šõ‰v½­DO†±Ü¨ï—Œám6ê-´‘„áµi!”öHDèsr¯¬wXSk9®Ó£ÜŽ[+ ¡§x׉ý2’Â"‘*’WlÛÖÆ²|£Ç‡8nOu¡îØØX—üDŒ®ŸÓ)ªM‚[lûø¾‰òGO%¶ƒž*Üï›y Øäµ¸žö+r]7ãê™3g³'˜“¬e¥_ÇþÉ ñ0ådyFRáÔ¡Mæí.¨¢ÝEð!Úa¶‘<Ì=ÛÝ—ún;t´ØŒW‡“¼yŒÌýª/n™Ršõ¯®+cjZ×viûG|OØïô"b˜÷V£=Ùg¢~¢EXïú.^M*#!(îÁø;m ‘ÔI3ÙƒÇ0Ž™ÃpA)ö9ûòÔ.ŒÝ;ŽÅ.íÒ.íÒ.]ÃÉ÷4i¾Ž˜{•jÁ|ÿç…<÷¶·½-ã0_ó5_“r:_>2·läˆébåùoçà `0à'b³Ö§%_^¨Ì¶¼‹Õ\Œ ÌL’G›ç¶z¶)–×þÛ¿Y€?ñ7õs>ëqÔVŽmå]éº!X|馓œß,¤ÿàþ0ýñÿùÓôþø6››sÚß�uiriÕÉ1 œ`­  Ä T ]¯z ³¸Øæß€fÜ`H‡Ò� 'O ÄÅ¢ ÿâʲ0ÍéŒäO×ó·ä À?@Pžô4„ˆž1”G#“Zb<@€qþí)n¾‘I¹X¤ ºl(äy€PC1 3î€&ÌùáçiO{ÚÌ%Ž€*¿IPQ˜Ô‰úÛ.‚á”Øj #êÂïx>`ðÄ»÷£žA÷|ä#gÞ@¨¯^xžò¹.È‹ži] ê!Boä‰NõÜá© žNô‚bøʧ]‚cý‘ð¹È_Ï”£÷äA€îÊïæ²Û¶üNY¼D$­prôZX޽0 Ó®„Ú .ènP¾Þ8‰úÓö$Ëç9ê/Àn,lÈ-”eùÔu‚àAy¶ϹI%ˆ/‘PÛðç>IFêM€[±|tåf‚DÊç9Ê'_É1ÔCÒ‡›%‚õäÉsØ6FäåÂý‰GÏ$žå%g$é Û'?HV¶2P)º–, ½ Âð!\ÈWÝÓ6nðHr¢o’'òH¡|>ÚòÑ/rI<pCÃÍ=ú:Ä^xÆ“¢’5”Ûxè<«G¯SIk’¼Hzƒ¡M£KU_ÐNZ¬ר;ùX¾D"äE'Ô“1Ûòµ=‰6Ú;yèÍ…Söäºu¨.ª©+ר?ßUЙ}ÛM³÷¿ÿýÙ6÷¸Çe¯,Ô]Û“è”Ç6BŠ|æ®ûêôéÒ=9Ô*õKê¾—®£yÇ.íÒ.íÒ.]e)‚1FŠ‹ð¸€w-#°A–梬­Š‡Š'öG å|~‡ž<y*�]¾'mz(� /á"\&dpP·ÍëuõT!XRæ)}ñR!™C/�N‹:eN"è§ç")bÊÆÐh­ž*�œkU§ëG‚DªÔ I²H†�lPÖ-)땹O$YD2Œåx YbÌz½šÊµ¼à;ç§s#ˆ§.bŒX®`¨yZ†"P8~¼Ó�bàe?zÐuwlI.ä¯Kÿ©lÊI…èp¸J8·ì¦½ËßžŽ.kIÂùmæÐãÜ7^RqßžÝé§ŒU.i 1a�$'ðr¸5ûÑSE±Ûây›¦‚&VëEp¯×®Ù‡¯WÅSkÜHkÔH@i]í«¯H˜hNþŽa#"© ’ø.'âõ’ Ýímæâ{¹?rù¶û ˆ¼ZcÍåôÔë…6K†[àÛ²½7†½Ð+F´=å´nQg^ŸÕާñ±K5Îî–ñ²õê¢<qŒiAÞØ¿âá’Ü6è›ö ZzÖ¤.†R,cn(ö6Ž3‰bu>õÃbìg‡Ù㸚ÉCC¿ãþXê*qÀ$à?½§6v|~ux”TÂØ¨!|DÛLA‡Ñ–U{•| ‘"oŽwÅþ%eŠ&z6)aelû4ŽØ<̳¹oônÁûâÄþáÆFϤsçÏ¥ÕÝ«‰”É`©º¾z{‰À}HYãø×z�R®H<‹àBK�šÞ#A«·ÖyÌXg;-c^ëmdÝ­gàEÛ×£7—ìÇ1q|¹*¢O¶Ë2U"L}?äk¨$=H8n²Å}¶ýý´Ä%Ê„Ø)Çwõï}h§~"_xϤ÷.Íú^Î;u³÷ž×㻹’æ1Ò£¬±ïÚ–†‡Ù¥]Ú¥]Ú¥]º^RõÿèÊÜcÛ^¿E"7{úùÈGòû–½xxZ|Ç÷¬ÇoxÈÁÍÀÏŒTÀ#–í<@¢}›ç…ö[.DèØöw[YDê1_ñAp±d¤€ýɶå´õ‰ë14ÚÜÃôq½²í³-ŵãõ®‚EÞX–EÛÞf2zò† 0}zVŸ9Ÿ>{÷gr,\�9 0˜¿ Å0Nú‚¶üNç,m] `’ø·a'\”‘y àJ àw:�¼D Ê÷t?×=©Íó|êFV¹\$‚õ$Aoò¥lî•Ô ‘ ’§ûýX¾€ŽC‡´|'ø–O¾ X <Ô‰AŒëŸÈ$YÀ0†O,G¿vVO˜ÇòÑ-ƒ`­§ËI xï¿ù›¿™cd׳rQmǽådËÙ\ì�°™ß-ß“ô†+@o|SÚ r‰„×o‘°Þ0#n<÷DRE´îE>ìJÐ9¨Ïk—ÀÔßð–ä'�/ÐN"OíOzÄ.!ÁÜqÇùß°ùn¹å–üœ`¹/ÁbÚŠv§¿ 3ëax Ø�eZ>yIbB. %¤ðoCØÐg¨u•¬a¿@/<‹­ê‘†DžöÛTr‡^$ù%zƒg©vM²o¸áFý¹ROCwÚ[§îÐ=/\ÂwPrÚ¦äÏ3ñÔqØ“„É<|[ÊE&D<¹‚ry–:Z‰XÜ«mÚ¦­«LOZ¸A¤÷CáP¾2qŸý›ßy)Ç8[Æ”u#ùi÷Ø>\³ÍÜŒ \drÌäÛò•?z‹A¿ÔU„åK0ÒÝ*:—d¢·›ÕªºX•Aý¸_B™ÄÊwÌrÜ$Ið±|½‹xR&’ÝðLƒ¼’qì/¶=å“?²þþü~:¹ÑýCðn´¹þgŸýLê7ŸnÁ6Ì~؄ܥ]Ú¥]Ú¥]ºÿéb ÷¸Æ¹Ð¢ør¦>(K ¸"ˆZC$¬Vp¬AöZÐÊ;›ð�X¾Ëçu-¡4*Á¢Ÿm,�H ®(WVçÞ3ü 3(‚™qëXEêU7#Ê©{ë5wç^d¬›K5üÈp(†uÓP$«|ß0¤±Uÿ’JpÍ®.(_/uÌy$”5YðK~EžRŸÕœ©ß\•¢Ž[»‹@ñ üëº#$ŒxÎÁÂbEÇë D‹©/'B‚!?Úö¯DŒJ^(®ïgàír£û¢g£Áö“G„"»ëZ�ÇÃ{'°„ñ( óÃõá*ŸÎçßi£sš€Ö’ç lËøc"»~Y×sðz¹¨û ˆßèÈCäá4Yßõ³¿[‚̶6jO^G€T`4±-I¡MuCuúÿ"^(‹½•ƒi]O›âY¦6úÑ3Iš#’‚V‡Ñ3Hôl!°jû+›œÑ•¶ÝÅbäÂÌÇÜhó âiùf!ë�9xΈ^ZàzÛøÞnš!Ètóp0ÙCÁz´°çã^R^ûœ)žWðÄÇÎÚ¾Á#F ”¡äõP‰ó}ŸÂ8“š±k~z/ß³ŽŒ¹ofRÈbv-·on“ù;Îö®yê¹+¢gÛÛ¾éXX6ûÓ¸Ö=œmw f’ÂD,IÙ“ $Êôàä‹“ãÚÝ~νŽIÊmyÚK´Åh™˜`&)Í‚½ãLèkæSÆ®q\¦µÛCmÄöŠú¯k_t¾œÚ×ÍúüüPH¥’Õ&³ž¸g"äUõµXô_ûuÉÛ6B—’ùÖ¦}lþ¾¯}WoÆÑËlÞ»Ù_ÎÂþÄzÇ÷õLA¯Ó¼e] DñýUõ7}|ïD²flÿ…cæƒÇ“Ý¥]Ú¥]Ú¥]º,É9d;ŸŠûé횃ä;–w$Ø ^¿Áªn=¤‹Å‘âºäB@?˜x‡&ÁÎbYñÛÜè°]Ó^ê¾Ê¶yÕ¶¹½ëά-ƒ¿Å¥ùà݆ÊaÐ'=éI3Œs› b~èWïð®¹Õ£Ïĺo“´#X\¥éÓŸþÓ  uOúì]ŸI_øEľÿ pubÓøÐïüfèLq•/YB0€Lгnd-'Ï ):+à%‹tCðœ$@M žRÆ�l%T`\†t�,æÛdèòá9Ê3! Ay:€‹kÝÖ3¹€—"‘k’±yÒƒŽ›žî·20 ÖêaAïžèfÀÜÀý�ŠÄ6’tBùÕþraÑ+ÄÀj;&eóAFêÉ€ò‘ݰ ”Î,ßÁLf’"y�tò1Ô�íN{ŸûÑ…€¼åÓ¦ÔÝ™ ¥PÕiF@>íŠß% ^&zÄ odâ^Êt06„ 6‹Þ8áï€$ &z6pÀÒ“@±åHØpc„çÐá;ÞñŽlk´«öìézI(è<H¶·'bÒ®¸H2Ñ»G$QõâÚ"‚!G¸­ž[Hz-‰ v¾wªû%t=l`ƒ||qX/~±£Ì•òyžrôhÃÅhxÊ LÊ€,Â7ÏÒ7x‰QG‰$Œ’2È D/öÏLž[°_È;üþu_÷u“÷íB¢ߨu4$ y�ô£CõOimÛ°$<¯ÛKÇ.ò³¾´÷Å0n®KQ_ÈOÂå"ƒd"Êçºc–D-ëÎ3؉uÕ{ yÇMGÉs$îGf=­2Q_'VÚº!LÈ8n[ÃÀ8Y ÉP±ÿG÷¿ç=ïÉ÷Þzë­Ù&¨?c€ýVo"b7r_ö%_šn|Èy¿<{ 9„äw& «¹b—vi—vi—.ojÁý Ýs±ëW*EP¨€}« D%•©Oñ² 0AÜapsa= po9y¾Ú¼«Ëo‚þ@[åP é° ðlPЊ£á�i ™¡)âæŽóÒRN á©ÿm'k½—áZ iQõ°ÍÕ¸aE ûQNýú‰I0¦‚}‚³Ë8ZDðô±õ/^ ÈT¼4@Z¸Ž`°òoAó4‘9Z�Ø×™âaÄz ÆMëÒ©þÖžº)×kèÇHGÐJ†T[ŒÖxj»Ü_róÔ£á²/®ó c=Úkšî9}j™àsç*yåÄb1k×b%dÊ\ŒDš~¶¡5†%T“ýgäG2€›ÿËhvi› ªã墯ým=…FÞÑÔ'ËIú>燵èE"nvF‚Dl›dôZ$Xmóì‰>'iZÌÄ^Iž´:H%Ä „€~\_ÜöðЗëeè_ÃHÄ:;#.ØÖ®ûc#˜ë‰ ~bãéþ¨›öGï …hï 8¯ç¡…bßóyõûMÛÿg›Ää·.abbþëÐoj»vÁŒÐgÏÉ^P"ñ¨×[E—Rõøs8ó@bÙ4JH£J6Š}ÝþéÆuî[3¯±¿§#ú©ý¢›¼ÕD}WæÐ2–§n!?Lý,¦çðL±ž{Lj®¸ámÛJ~F{-{4›µd¶çuÖ)ã+w³—ôÒÒ¶³rF»³®º¾z;ê°ÇÙæûØ´ÇfëkŠkß.5ü-öá˜G$FO)¾[†ÑNºi<ÇvîÉ{EûEÑm±·eÖSK¢¾=È áÜ艓O b›éí"êÀÐ#‘¼ßÁ³~”æ!G”¥%UÚ7ý-êµ'òþéæúj=÷¾2+;íÒ.íÒ.íÒ.])¾œ:…÷ÏŸ®Ï×wõ7ÖO`'<g‚<àÁȸ¾ˆï帞$±wÿº×½.½éMošò?ضvõßâ]F�ˆó¤n áásÕEûo‰Î” æ½e|.åG½þõ¯OoxÃÒ³ŸýìôÍßüÍÓê¨_ñQñð¨x !êóbu¿Xý®õtÝ,þ÷ïý^ºáôéK¾ô‹ÓC3øÐ5¤Ó˽tê†ÓiõÃlä€õžLŽ€´Lf’ " Š'ë1b~‹§-½7Æß£ƒÆº#&<ñìÆ” £¥®öÂò¶'ûuáïép@BÀA~s¢Îs’ ô,àd½ÌÇ )¿éÝK@T0˜]Ôõ)OyJö\ÜäË=z@fè˜ÚÎg'¦NèY©¿§Õ|%³PŽ'þi7@l:»`+ׇr™?ùÉOf°›²ýáx&8´ ð¸9aùüÙ © ×tÌ߆™°¼Ôçl‘ÝÓùÔO ^½Ûä©m¶E¢þ´#õ·|tÌß”oèÚKRa$}ô£Íz ýñZ1@rÉAš$1F †¢@Ÿz¤ Žä˽”ý´‹át­)9ˆûøúsŸ÷F›ˆ¡Q$ÂP'òÀç™HÈA¯\ãYÚÔP–o˜×ôF!éCt`X ä%1C²ŒÄ m ½ß|óÍY. F´!l [|øÃžú5û‹ýÑÓQØu¢½�í¹÷1yL.”,a—Œ Y@¹$ÄP 3$Oe`¯ô7 ܈àyäB^¼zjáÊwüá‰cê˜rµ+~×#×i+î‘D‚½Ê€$I23oî5Æר§=o¸ñá8ƒŽ m8>R×?i# täCˆâØJ¾ŒÝ‘dL’uôâ5ÆB¾ ñ2âDÏ1»£]Ý,´ >ï/ÖòOž¤ýOoêöÐ¼áø»ÿsw$åzNqÛšq#šìŸùÌ]#ð”vi—€TOÖ~î©Küqºû+ï6é˜ö¹XáÏ­™+Æ–ñ$­¿ 7ŸÿÆuAÿZ¢!2*ðŸ0±Ky_K8-Þ´$30G>˜À?×… yb"0‹¶ƒoÀÛh%Dƒ€Çj’MÝ�q;7'Û0$ñ™ùiÿnFf¨z_O¶+ÈËÒ#Åz=ðªnœ× |–yN€¥4‹»ÊóÅSZ=TÚµxÉÞº¸IT<,3P¯W’4Ö§Þ#É¡zL(ÞLÚuí.굂°Å–"ApN†ñ$4žC*X\ÁBëÊû8ŽsÛ §Ã³·‡T¼NŒ¤@ՃÉ@c:€M¹¾ÏáBÎŒä•<?ƾÆr–ýbò*!Þ—£éÙÃEÌ+Y¦½å´}îK ôQ@õlû©ž°ð^ä2º\æ*”³J»L€?Ÿ4' D¢€©%"”>uÔD$(¸Œy©×xFï�ô˃ƒZöÕ÷{Ó›L`ÁÓù›qÀuR$$)dª~$ T™ÖÓxQä*ž0ª7”aVWåkmÓö‹vgÇÎøL¶ýiƒx]€}dÈjJX™òwé@‚ÛžnëÆ1iÇÇ4zªÆ&yLÉý+M^P†õ¨ßm\ÊY­ {°^/aƒô$éÚ8ÛOê&ÛÛìn…±|ô6RêÕOïIhÚ…õ×¾¦wÇFþ¥@ü&‚Ð!!]Ðy*#¯c§åB"Yi¿âɦkèÏÎ$Få0ãáù~U™W€¼¼O¢—ÈHÚjOaNcSÛ. ÓXÀo˽.íí/gdÆ©)¨Ÿy€ˆžâXßAÓøÙùÞ!LIéÿãøOuÒŽ«‘ØU‰dz!Çqô¿\Lï…ò®.†³):F® ác•F?£ýãûñ]„=â…g$bŒ‚MïãØOí†ü‘X‰ î±æ!ÄBgObôV쾄:œÚß9Cü[ýLDŽì…ä¨'ŸØó9Ì8Žû[%äŒ'@ÇkÚØ*Œ ¥GûYcð8Žï˜»´K»´K»t-§m䀈Õm»Ç¤ÇmB·ƒep0•å‘P{oéçþçÓûoÿ-mþÛuŸÉu„‡.ã;þþ¦me:_ÖK|$&ß×DžJÞüæ7§oû¶oKÏþóg×<èΜÉðó÷·LÒåÈãjI× Áƒ~ÈCºtê䩼ŽàÄj -�¨Æo€y�iz�(¤£’à srAt)Ë¢‘{*% ¤ë’?&ÁMž£lò¥3X¾ä]ýc¸Lú¹—òÍ“ò)C°œû�”ù{�Ió¢6 n, ´R哺ëƒk<Oý‘‰çôÆ!€HÈÎuXaÜûñ<ë·2�»Ñ#²Éà2Ä‚$þ&OÜS_¾‘KP÷Û«|²ç\Ö?`²á0¨³bùüŽj‘ƒgoºé¦,ǧ>õ©“ ƒÄW~åWfï\“DœÖ‰ßÉ‹öäš`¶^к•\á5ÝiJ\Aä‘`sçwæü‘ŸßªuÉÓ Úú§þ†KÐ+ß´—dë/Ù„²ßýîwgSßG<âù2ÈŒm©'ú ñ¥ÈŸ—’y #íús ˜6ˆqRÕ'h[I#è�â2¢;CFPrRGd´ Ü@§l ;nÈémFoê�Y(OÔ—$XOYÖ_O&¾Dðaù†ý¡®z%± ÖS&ñ¬$éi¶3fp?vGÿ¡í)ƒëxá[ÝQ7˜“”±2Œ ¿å %ž¼ƒØ€-Åú;vñ»^]\ÄBˆúë&n<ëyùéÔ_¯ z€Â>f’D/½IÐæÚ†ÞAЙd‘¸QmhìCφ¢þ–/™h †B±ý aB¾nVèÝ#ŽŸn–¸¹M~†‘8Ãsn¢£_ÿõ_ÏcÇ3ŸùÌôÕ_ýÕÓ¦õs|çó’6HÛÊg³ho¿Ÿâ6ïÒõ›âI¦˜‹"ð Ë¹2é¿Ø„t·Ë¶K—#‚Eõzfëˆ]ºôTI�‹8èü±½7Ã|¬kSK(ð·˜ÇkÌ*@L<‘"‘^’E1-#zÎ0ÜF<ÕÇéú\ç'³ èÁQïoO©ÇùŽã|Kºkeô1‰%UvÊègïxjGP.¶™ _ >q+ºštVSñdA(�JN²Ÿ9CHÎ6 Vê¡�¨ë±]Šª7¸U\Ë ÂË|­â#y"zˆº6ÿhÛZMÄÛö¡”±?µUåÙ!´Mš•£|Q¿Ê™É›ÿ$Fä²r¸>Ãr’†P»\à`ñºPˆÐ«ì9s³Ç±ôDT!i¸^*ÞVRXûrÌÞ8´–¤$ u¶>¬‡/ЧŠ`k]?•C}}?æE} ÐW°úÚ-q"nŽªó¸Þ°=õ Òöÿ¸Ž] ÙÁ6Ia~Ô'½®hÓ'†ý„¯Ã ^k×¢ïýiýn¾’º®äk8—–ìÑ÷ÑÍm)»ÊVÖ±ÿ·ëãz­%UÄñ£^W:Îö÷£,#P>élÑ×p›¶\AØè©[—Ð(ú†3°½&rG2œÃ8^ z’`('´B>,N-sÛ6ÈCx’TdûCÎèûùXnÚ±>ŽmŸŸH’Ò†úFA©[!s@®(ù§\þùóç&² Ý»ŽmäÚ:‚Ûñ=ä˜à~LµµnZCÚÎÜCüæû†>{À°-²=®ëØ‚LeÝYIí>—ãÀÜ+DŸ»À"„@Êkƒ<}Õ³6½ùDB@þº+}©è®å�öÉÏ ›ÿˤŸHt"4L'†Òò´D Iëðî-$˜”‰d´ájÞ‚— õ¶}XÍÞ—Ú¶„˜×AXËKpÒËdbʱ¼mÿìA%„KŠïYåŒc…6“½¯,³þë“ë0Ž$êÆr§¶éJÙ]o‡4…XÙ¥]Ú¥]Ú¥]ºFS!?]Cl#<´Ï¯pØ‘}÷'<á G¼Tra_ùÊWæƒÈŸK2Tº‡¤/'¹b[Bà FUˆaO.Wþÿõ¿þךþe/{Yƨ˜Ÿ€ßPxãå"W\oéº!XÐq00�aOÕîÑÉ�ó Í�ð½;¸q@00†¡`¨†’ð$¹‰¿ ßÀï�Õ<ÐPªû}ÝÐ�äQ>€0z,pÑà èŠ –Á}Ü/± ‚ÕÌtdÊB^Êg@ñT¿!<ØH¤~èÙ�Š=UNºï7…‹ ž¡+\�?‹Cîaðb!Í}t<€Mt Ç;;‹È äøÍuC†@PO¢è�YÉ'º»qqj(@JSGË—}N{(SåCà~@kôA„ë¿ò+¿’~ù—9—kûËβ|eqqK}] ‘?6dÆÍL$Æ>yðWzd þ‚¬ÈO½È Z°ÞÅz\\“'å’Ð6Dùsà)ãg~ægr»=þñOzÔ£¦ð ô°�@ìü›{‘;Œ/&Ájì»AwÜK»ð·nƒÜ¨R6dÀΩù’²ê…D!òAgäõeùÔŸ:"/¶7B(y[Ûµ¯ñ¼¡y$‹ lF’ m@~x˜àb!ë/aÄö¢<ÊçÛ0¶ÏR_dAÿôúÌÇ>ö±ô‰O|"{ª í!2`{€õèà9ÏyN¶Û\²„dôG{¹(GŽmùxžòÑmO9<§WÚ †ð@¾Hõî@ëÄPBè#žÂŠgnÞI˜0,‹^m¢Wô@¹ä‹ÌÔßö¤þ†òàžå>Çí-ž€²þ†`Aï”…¸Wû×{†ã':aŒ@Vô7lÜpÑËÉÛßþöl ô/ Iñ‘åK2<P$TI¡|Ú±K›Ù¥ë3Ñ´"Ñ´›ïnк » Œ4í&½»tyRwÑñçÞǦcìºo¶7ÅcÿÙ¿—–"FrC„÷´ռϹŒ¤á6CrÄ (Jsë‰P`r.pÕ‚sÎn#±÷m'•$ ê¸[Æ\d[&=f8.—yVîKˆB*ÐÝ}$ĺGà%ݸœ/”­u,`®Ï E›•Üuæü¬žþïØ*ˆœfDŒùs{3 ±nÀsÉÝ›9ÑggdårŸÛT×ëä½ÔÅÓ×׿6‰.Q—êÖ5šmî¼X/•dÐO÷{¡µ@{>xy˜�íÎð(sð-ê§u/ïØ 1%}ÌãÇrûô C5ž:öOìMmûžº)6�0Z×m‹åH?<( g6Øü`!SŒÏ ôf»IóðÚX²ÓäÑD‚T~fèrQ/Ñž#€É?-Ù'îyľc"ÙŸ»‘¸£×J°¨í-¨Ç1 êݽ…¸IéºqN¬©¡16ü¨óþÂúU‚G°4÷࿹®­f›Î"Ðë^Ð4­Ép0‘˜¥î&2ÀfŒ:X­f}Æûðþ G ÀoÇíL–"TVúBTX;MÅÓ@ûéÓô§ó“‡X¾Ñi¯Ù/jÿN…T=ÅqÐvŽvÔ®g£ÇšÅøÎ‡|rboôR1Ö•ö9wîL~oE™$”½¼¤qÍubʻٻ }‡Ä1³m›2^̉nñ=T<$Ô÷a$pØÖ«†ˆ¡)‹!b%±Dï‰&÷ç”)îŸYf ”‰ü áÃ÷‰<ö!s�7”-s„ÕÊZ›1¦Øu_õA]r»ô™ìUœ[TRA”5޹u,—Ü]nÇñWÝn‹?n_wü—XÇ¿}ÿÛ÷Эd£–Ðh»8.űÜ~mÀþ¶íýµBë£î³ã<€.÷–%œSJGæô¿u7Ï7·÷né·K»tÙÓqÚSÙ­ywéjHÚa%âw#vx>UZëÙ:uÒ[Þò–Œ%p0•w¯‡Qã>A\óù~fÿ‡~è‡fö¿íßqýnÙàÎ)"!·ÝOjßùªs[nüÝ9QœKº. µäŽmen›s´2P‚¿ÿû¿?}×w}Wö‚.Áˆ Jo%Å9g[f[Ÿ8G¾žÆœë†` ‰Q Ò¶|“h|À8ÉqÃpAYÐ’XÈ�"F` ì·û·'ï‚ß‚t�l”è¬ñ°Ñ„Œ HvheÐ Éòª=ÕÏ3È løzG@6ê/Y#žê‘0AZË7l-§ã‡ ¨å#$Üæ×sŸûÜìùÄ fˆ�žõļä îóT»‹=êC »O <†Oà9êN 3ôcˆʧ ÈùÍòI’t{+˜Ž×�=—¼óïÌD@oˆƶIbåHZ¡®†'0\íbhì¿Ñ'$HÈbÛð Ì9tÈ@iX˜È¼'!;ò¢òDNô*x®ð<¿sÿí·ßž¿¿õ[¿5Û­ÄëF;Ó°½RÔ•õVæå@Ê¡ÈKä‰ýx“‡^øY”éKÜ«W ½fPGž¡ß¢íë¶W|a žT$ãåSž!l_Ú€ßìx0| õ*@Ûc/ö]û—:¨�@?õGIôqþF/’i(Ÿü±Uêf8dâ: =ú .\‡TÑÇ g=ëY9èö©žP[LÄtMù<GÛSòG߀ýȇ\ô êJhI+’Gè?ÔÅ>ä&«DŒöe©}r„~„l”O]¸¼éƒ´7ýƒ6@²è;ÊH>´‘„8ìÊI õŠÄ¸8róÙ„ ¿ž‰xŽú;†Óoicò~ØÃ6#›éÙ=ñmø’qZcý=킌L@x†ö’ÈÃß’í¬+²R>r0a‡Ú d+Ç1A§hw»tý%ÚÖ>DŠ»¤ "¬xãr|ºØ‚ÿ8mìÒƒ—®¯¡içµâþ¤8nù.=wîljcÐ Œ,ž;.Å“ìغCâݽDÅ9Š€Š@J\s vñ®å]<Éf<)T@Ï9xõÊ ïÍ3œk†âA Ë «› ­Kwל¦‚Ex Ú9‰2©³ÀRAb×qCB…@âìÄl_ÜûL)§)œźîí¡{C¬¬3‰‚y%s)Ãè8áúu¾Q¦¬ÊEÙ¥Œ,•2Ö© ༴bc¿× ‘hÛ¢ëÞŒu:·’ç“Ú‹~<?OÑn”]ýÆõ°šŸÀÊö¹®z–,SÚtîuÃ…œ`¿ëîϦÅÙÅ‚¡ïçö²V\\ÛÒp!Ù;ã\—÷SôÔõØW X* §Ú‘÷x­èx]òîjŒ6jq ˆk;ó2ERÁ¶“lÊ˱Ϙ‰O|f6”ƒ"'ñèüèï³YgzBP`¹2¶ÞT´Í(WBdÐO$l`“ÑÛM%î,f:‰ ì4lúÚ:Íîvy ‰G…q¦Ýå{ƒ–8.׿ӌðAõ U,–TÆÎðZ3 )“:úM¹«T¸Y}ö¶Â8ë¾{î¹;çUO»­³eϰžÆöϸÆsì[BH[ŸÜ×Ç÷CWB¨ä6ÒäqðààÜìýpúô ¹?[ßY_I•\u?©3ÕƒP$=GÏ#’êã»M›Œõ’„¼aÖï)_{sLqï{eŒ¥??ä!…0±Oûþ³ØOûk¨£ÃINõZò(ïºÜΛ;±ÑWôB’ á<r^©xQˆ{|Ù»C~nt¹ùœ`#>’R+ã8÷^ô:ûxì“ÑSH$¦ /I)¥ŒÅtâ3¾oy½zpÄýÙ:XÎú|$ƒÄoëÖŽñúêàpfoqDZ…wF&±¤4µY›"é§-c—vi—._ÚíÃíÒ.=p)zT3ñïr ÷OÓ:¬Ÿœ«òyÿûߟçš`+F÷Ù¸OЦ·½ímÙkøÅÒ¶1 ÎGI.wRnç81¹–¾’éå/y>ðKøs0ŠLøß’îËäR½‹\+éR5Ð]âµî¾» üí§ß~ão‹æÃµ‡ò½1êw(„à2�¡‹ Ah€JÝÀ‘<ýÍÉa~ 4Lù¸ùÆó€däðÇß�„tŒ lî`tBùä-ËÇçôú@9\xå�:dðä²S@=òzz¢º€ùÑrôèÅSýêÀzù |ôBùè‚ò‘g?ô¡e†r¾à/ÈÀ`œô»˜äuÀ<oºé¦‰¬ƒ:@†Pld±Ãýꆿ(ù ¢€¡8]$¡?ÊwáèýäÑž$“˜€¸�лIÏ�íxÀFÈÝ¢/BŠHp±þ’} KxÊ€2 W o{â€D½ 7â|¬?÷KBÑ[ 6Ë=„ùhOŠQ>6@}hC@{läE/zQ¶m ¶[Ô¿c+ i‚ýB†…ª$þ¦/HØ –##upŠÍJXÚ¶‰ŒÎ ΰäÑÝåPÈCÙÜÉñåCù’×¶A·´a –k;Ø­¡Qâ†z§|ÛvÅãúåâ)½?@Ú |71Ыa‡Z |l൯}íä²Roü›1R�uàoÆ Ú›4‚¸¨§|=SÃÕ FdÐóN+yÑô1OaH0‘°$á‰{)Ÿ~‹lèUýSgÚÞÐH†P!?ú!„Aޏ)ÊßèTõqœÅiìÐ>dÃ’†ƒ2©:p Åîø›â^C%µ›zÂ~=M¦çì´_êΤ [`ÒA_ÐK…aTÜÔA6~‹úЍÑ$û¸{ן|2=ôÆÓœÜlr.Òþž±ÁÝŒ]…vÝl|7fô¶  ]º©m³ò©;é^vµ§¯Ï3?(›Ÿö™»ÓWßú´´K»´Knjçñ÷8_٥˗xWþÜ/¾-ý§Ÿ~ó èˆ!L+ó÷⪞ûœßGO ­ úrFà=)P%Ù;6‹Æ½x-›9NJ%|N%%k+%N¼Ï¦3ÞË)÷®€KíFM xÇwz<éëµ¾DpÚß}WÍ�¿A2ÄÞVÚ7ŠœuCÉð s²‡@§Ä ‰ÿÄ POSÈy8¸¾ïÒa¤Gà/‚‚jÖ%z±>Öµ´O ùa¾ð<œîOéhHewž_Ú4zªs,ç§Óü¬W²�õŸº4³Ë–P ]c;S[­VÓšæÆ2Ð!S~FÙÖ«9! ‚¼¹½77ç#›yâÀý°:².Äa?Ìõ=FD!½áxú9ÉI½ÙfífdÌWùâiÿØ–ÞÁF¯GYâiuú§dè:ì7cËjœ³®°ô/Ö­½¯ÕƒK©ßAЧÔc»· g”Õßl—x_KŠç 2<Á¬«G›6® †LЦÌg’o Ù±�oá'Ù–Ý4†-úålm‘ó§ñÉ:—rEo›ÿð`€^é]ÇEBÔ6KKè‘(Ç­öÀE·.ý8ÛþøÌ§7ùê ¢êéh¨Ž¢÷j&¶Mo3¡d˜µO›ÔG\˪—H4E€>?·(~|V}Dâ‰íc’PÀzò„½†Æûê{ª’Û"1$s]†aæ%“(6z9wp¾êcQÞoã@×2ô‹a|~/œfLãxG®ØBZõTÓ’Ý¢xoë$ö·mä/ï÷°Šc€„½ß=ÓÖÜ· ö ²–pß¶wf´ÛËñ¯µé5cIWõë3}裌³«y_¶ýñÓg|/ßøÐSéE·}Uú¢Ïÿ éä©Ù äÐ2ZÌö ê{×ïÝ~Á•J—s¿àazún-ò ¤{Óù®¿ìÒ.]¾ä{Û÷žxé¡}È´s`ÍùÆ7¾1ãßøß8­Çã¨Ý#7ß7¼á éU¯zÕ¬ü8§ˆ¿­Ã†‹¯ˆCÅy`üwL+¶•iy¾#$ië}q¾çßÏò¾”wù…Êœæ*ã¿ ¡·Oßùß™žýìgOóZ1*S;¯ÞVou÷$øÞàKO¥ÈÍç3ã÷ªù ã÷:|†ðÝ~Òþ¾Øwûï6ÝëË÷º!Xlånè@nø ód¼ìA:Ccpà ÀËÓÌqųõ�l|Œ’FÃvR (H  Ì7@Ÿ"ºÇ�1V€jî4…\'Û€ ùQ'’ùR7C@Ämî§^€ˆÆ¤Szª=ð;€2ºA_ѳ€õ'?@TäÄ«ë¹Â“íq¡k "@j~G¯êQV¹ )ÿæ^½}pú\„ ©rºÁÀ€ÄnœÆv£>”'q†{Ñ#²“<U`lXô%ãMÂåQoB7ІV hÈ |»@‹ƒmŽør†áÐ@½ƒ1ejF ‡a Ú£u�åÚX»É @L{½ûÝïÎ6ûô§?}Zzª9ÜdFèGÚeJ¶±|Ô  <’L’h[OB¹Qd½SDp] œ$PÎÇ>ÌóÈÃ3�ÚûqàÖ%PÕ]iò¬"Pï&eèA½¢#C@Puç^tÃoØ.eÛÚ¤H�p£EÂõwÓ„­á½‚² ó@š@l°º`ƒê^½ãáO$.E`�û¡}¤P>ãG$œ9‰aLÒËý mOv¨Côaø úy(lþmø Û²Ð?c“}Ç1„{¼×0=<"ÙÝi—ô[½ã´„3Ú ýÑ‡ì§Ø-íï¦IÜÜE†&1”ŒÄ ݇bè€Ð.bn½õÖL¶jû‚cùÑvNð©G»ùM õÃ}äùñ½5ÝxúäŽ`q¥Ë¹ar_ [ðïÚz—.W:.›yν#�ۥ˟$X¼ò§Þ´|uƒ¤mƒèAð-ðÑCC8ƒ Q †ŽÈ]®G°qŠp© RÎÏyq¼ƒuÓ‰Ýõ¬>Ö¯=9S[ÿ€à¿÷Gд%ÀG?n�ÕúÂÎNà–gWÓ;®”SNùòáñiæ\†ùY$+;ßa ÐU’zui¨hbqÓ˲bý]7E²I}o3ÂJlŸÚ.•ìRåYÌö�,ÇúX`w¯Ü}!٢闋Y½ËÖi˜Éf½#øXOsQ½ÉE xP9îü4çŸC#¸žÝë5œM.£ÛÔð”í•n˜Në½×óëU¿Ã¼³ïf¤mãelŸHQ¿Ú°×c{EˆíÛÆMNB€Ä>†' €gó©„¥âe#ÎÓŠÜýèñâlþ›¹·ÞcY±¿ÕúÔÐ<‡9DJ±ǃÖÎãZ%ö1ëå¸àßpŽòŽ΄ÆÀÖAïUÒD’è§05€»Y&®¼µœé=˜Ê=‡«âÄñ!¾'÷öyž+A¬Ñ…’×AçÎä6Z„tëš1Ú‰uv¿@;n8v•q§¯$ƒâ©‚¹5uÃ.÷–„ ÙÏÞJ ¡ÚP!|¤ÐïËõ岆lñÞö0@Ü|ÞÖ6ê21â8ì}Ó¸ŠÞ6ò.ƒ>bØ@Ëöý2åAÝÇ0™z»ˆ–ø) ü:ÛG$uÅn›b1†æ˜Æ�ô6¤Ô¥oòhá{¯K㻸’ƒ¸u­Öcx¦±N‘ß_уN;³?ÅñÁ±-#6cÞùƒó³vÑEûþp?!æû£̨[óißS3}usRUÿ¦{ÑÛ²¾Ãmïú~L³Ð,æß…èv¼PÎÉS{é¥ßòˆôE_°#X\MérîìNº·þ°k“]ڥ˗âºÌ¿yOž8±¿Á0>º1œü„ýzÀöÎ/5qhü?þÇÿ˜>×ÄxÌü€ñÚùì•N«‘`Ï·ó‘+лþ=ôû÷þÞßKßð ß.wÚŒ±;‚Å–kÁâÿðß!a‚‰4Àœà­“Zv€§†Þ°ÃTr¿¡3²`ãd_—ñ6ôB!ШW‰’”ð[šüªúݬC>�m€Úè ÁEF<M|Î ò·dÁQ½58Y£lêÂz/ HÀFd ü¸Édù¿õ[¿•ÞûÞ÷æ¼ó˜Çd‚‚ # ©^),ó7:,À È5‰Ȅܞð‡X GŽvñ®È#..%‹DÏ ‚™´1eS¯ÌÀßäC»Qž ,õÕÍ"$ €ò$&åIí¨êF;Ò†€¿<§«Úƒç%¹ oà‹Ág‘³Äþ,¡Ð: >m’8óÈ„èŸöÐí1¿cç„:Án±Aî“, gICºó¥/ðiln´õ2ο”Ó×\ÔkoØ÷òö%yˆ<й/%ã_Ò.Ü ¹BÄ îå=&š›Ñ«„,:u^é$r=ÓH1DòhØŒ®L£H¡ ´)toý%K¨ _ä«ôj€~Ü` ,î}Ï{Þ“å{Æ3ž‘m!º£t !?ÂQè]¡3ÈÔ›7 ÏÅÐ(è€ò$§H:¡Î<Gþ†*€°èØyN“}…úc_Ú`ìCöGžÓs‡^â©dv¼1Œ úR—ÖGòíª‡ ê~‹Ûß½™‡ q\,¨ç¦yãó¬dß †€29ŽŽ /5ÜјO|Æq™oäD&Ë×ОBè#ȬêàŽ_{uºa³Y²#X\=éj XìÒ.]é”O¬¯.¼ž¸è¦R×4T9»oã{Õ5ÄnÃìH,~ü¿¼q "�î§=õ`Š J;6Ï=bÔ0¾+u#ÏßqÔ‚¾Ê@ˆ Oõ×ÓÂëÈO²�VeNTߨÙ6â‚©„星h]¯×G�^S­#!dôPª–#Q`@ a¦·˜J~ýH¦Ð‹…�XšÊ· òdQC­õc; )£Ò"P%Y#Î#I$’d#«½˜GÓGŽÃ6 ®ë¥–Ÿ²×‚4y»È­›Ü² DÊ|¬ÐÉ<^.^ öX›”ÆyÁÑЩ;Jð*6tÐÝwÄwuDLx¸ËúHµ½&]§êù Kòõ~Þ²îR%W½®Fðtî‘ ’#l·jCÝÖ~ï‹@0I�ÞµK9i~n^«·ó^,<€Qíwõ>÷ÜPl¦Øµ¶†×RµÙbß±.Ö±”Cù‚’6g¿lcTÂGú·õƒ8Åua.‰9åÚ0Å^úÅQÏÙÖÑ緕 cÁ}§õ†‰ˆSž&Ï&ö·\—ÕA¶¯:ÖÖ¶µŸ¢[ ¹nŽrj€ôŒ-Àý×OþÝc[nê¿ôàÂPÈ%ÊÙî-ÙV-Ê}Ýl¼¨Ò4¾Å1'öh{ê8Úx|çD½c‡ÁƒNKÆp_C™¶ÀcÝ[ãùc"KDÝñí¾e}G-fvm9Á"Õ:y_¶ý>ÈÒEÒa*s±unÇ\WúÀbôl²>œ¦†¹>Ù~‡qAýÄwA|;¾IȈý1ïlÞÓC ¬©ŸždZ=ÄvÔfµM÷"±&–÷â8ûöól-ÌWâ;:ß7Œ$¶±Œ–ØÑ,ø@°øöo~øŽ`q•¥Ë¹_°#X<8iÛ|8¦ë©MZOÛíû|—véJ'ç ÓÚccƒÅ«~ ¯Þ„N¡‚yÇà¹âs!W°‡ÿþÑ?úœmÚCýôŒu%“Cœ]éw´x…¸›‡Ÿ)÷Ÿÿóž±Ë™®‚Å2]'é-oyËä•“Ä�®íÃ�ÈÜäƉ±”ÑA ¿ Poˆ ‹ü�»ÈŸûIùæy^Dtr½;�ªëÖÞ‰5ùBx(õ´”á)ø¼]Ìs :¿þ3h ›�¥À‹)î§¼ Dð�$/=wxêž¼gÀ3\wÁ 0zÇwdR€ëžð„\ÁnÊ'/I%zhؽa°‘øB}9%O¹n !{táçâ{  AjêBùõ´@±:@_ž'QÚÙ¨'@9r;HQ€Mëoü\½ 3v€}ñ Þ)Ðzã;ù Þ„{$W¸04T z‚0B½ôš"Èï¿ãF1`<÷rý©êê‰þFzdþš¯ùš‰£ "n%y¸X44åK8Ò†¹Ÿ{Ñ3u(§<ÚRWEü.™™  èY ö;Ê®¨—Þ]¸«+_uëÄ{¢>´¯õ0ާbô¼Âuêkß%/ì—2R ô1žç^î3^gÈÉ5eè5ƒòÑ5y¡CíGR÷Óì»ØPôÊ@Ù„:ùøÇ?žË|Üã—ÇCSÄͽ¿Ð¿iêKè‘0”\†C¢­$äH ?¾©‹d#îÁ–MÈGrìŠuê=ÑŸ‘ IÈÀ X²mƒŽô‚LhŒ=‘¸n›Ç „vAþ´/÷8^ê ÈpFþ®‘hÃÓØ·)Ÿ>dô²¬Ú~Üà¥méㆀ¡ ÉKèPùCxV[düâ^7Ë,× “ä=I#ž ¹·EÝ.íÒ¶´³™]ú\R;Æ»ÉwþüA:îà‚ÏÝ;ÁâN¹Èû¶è\î-²ÛååHz‹�ïO9N©ž¯àÖ0¡Î£„6L�)zOˆàºÀ„ r{*ƹƒ�Uô¶ºñ]\¢{Š—4àÓ‘Óüå¾±ëIlÁÝ9°WÀþaFšˆÀ“„ @á¸Zîé&Ò{pÛ$¨#ï)à‡ÉÖ âiñ¨;D[¯»‰ â<¼žÂíF€¯Ë^˜o97‹ÀóQÂGµAuݽÇ9±¤Þö4¶ bÕÇ<ï|òº›Ÿ"/€à*f=¶WõTQÛy˜äѵÿü„òœH¶Î®Ü+Á¥ËÀå:% „•5Úx:z&2D܆©Ý�`º¡<úÔét°yÞ9d±Ù ø•²ÊéóÕZ‚D—IºÙæÒ|}ƒ*qhUÀ=€8@¼>5¢a²ë!¹×’f6Úö5ê((í=ö±ìwþk»ª÷Òî…Xẫ€àÝH(8_€ëÃâ ´¹ûBË”&àuî¥Ц¬ÿôÀRN͘yŒ‡WÊiûšŸø¸^¬wZÛ÷fô°r„èÒuS?ÈÏåÿÕ1³^YR%4ÄöʯâQŽLÄèû#åd»Ù�yôŸñol§ËýÂ>°)¹[åp2Å F±SÉ7c¯›xHL¤s½1°¦7 ­÷Ô±£Ž_q¬Ö´íÿ'÷Êþ‹µ6ºî³œ’DèÓ¥ÍDzҎëÉ6¢ç‰Úùÿ3­'\·LDé¦CSÿnl:z[Š¿•z UY€úræ,®%¥ÐÎ<ëa÷/ô8©¾#Y!ö+ÇS¿#!±)ƒî™¤²Ì„€HRÈ”ÃóEØuÇ¿¾0´ÖÅÃE&‰õêeÓ7ºå¬_Ïë]ß½ð<ØÆ±@Òƒv A,R±Ië;‘aR ©1÷¶2÷î(uu~àÞ™c÷HÆDG¾ÓŸ"y£ï†é¢a«ÝçõßÅÚ¶{Ǩ{›¼ÒœØÆxx§¿»´KW Å÷Ü6Ãì.rÿƒ›˜1[cÇ™àAúHæÞ£®åD‹œÀ»ïH´,ïùµK»t¥Sœ÷Úùïb°¸÷½ï}[ù+å¯l=¤|±ôÊW¾ò~“+(/z‘8í•NÌ3(Wü0ʃî~ð0íÒÑtÝ,˜¸pºØðT;ßL:é€\�Xt„èúÞÓü<ï„™üˆeýë¹ N×÷|KÎàyŽå.Âé€ô€š†/!d¤åãærN`NWò$ê€LÈ Q��Q ßÐ#‚z·`²/Yzó¼À72 €¡úúà?˜¯Ôß|óÍÓý$î!OÉ|S¦�¦'ô I¢£JV@W´ßê ‚´ÔÃûÉpTO­nÔ@2‰�1¬®{êb=M *í…lè�"€„þÑ›�>×){2�áAø ì9<+Üyç(G6)ÜKÙ~“Ü(FntEÛ"£„uC{J€Ñ à¹�­õ$?žÁá7ó7ó½´¶[OlÍ'FÈ€þ¨WÔm@[Kr@g†Î <Õ/“ }b[ÈÛAaÜH%Å»‘-©„<ÈOÏ’(Ÿ2(›¾cPntG{£‰ÜÃG}Å—´ùË:ŒDò³ Ôí¥ +H˜P—ö! ?(Ÿ6YÃË™hêK&¯'?ùÉ9_õÉu½œp¿¤/ò¸"‰Ù ìHvb²Á=ôQžÃ#IÀq û·ÿ9ÖH�£OÂ$zù ú…&7íÃŽ#Ú2“O$«øÍïÔ{Gõ¤Á³”#aͶqls¬–H‚îhɆâ~7DC£ ä­ç ú±A{$5Y6ßÜCùþð‡sÞO|â³~£ èJKÛF.É?ÑCq]IÈ­§ôMý°åöÄÛ.íÒ¥¦bò½K×OŠö☞ãW¯F¤ä¾¤áÚ²ÁÃUþ,6ê]Ö}Ýóëvãð•H‚¤r"AyhçVñÄq·üwÉ7œÆsBI Îø» ™hŠójÉ E¦E2ì…€P•Mð¤Aìâ1AÙZ=ÂÂÜ yž”CP§Ý„òþø|K®¨@ìjÓj˜H>( ç:œÖ^'§$–#F*óÍz:�ŠyáXÈOrD\Ÿ´äˆx:ÜuBKziùÑ¢FÒÈbާ® ¯º+@]iOIÀ4y&.¬‡ìáB2ŠžJæàözF åp!¶gWÛ(§y³¾K¡­W“ýLä˜l€ž »{û‡\\gP´Ë &`f®ãa!ÂdÐq(àù0•“F‚D¹Gð±Úf —“É(a$b÷yCž°ëaN$8 VWûmAÎhs†äkû@™°¿ØÛ2Ið)ý¬žX/:„ÝO°À?wî|&S7,Jx×7ÈÁÇ=¢Ú׊=•~ZCÃXÉ9Ö5¶ï6p;ŽÄ®–[B´`?ý¢ßêÉ ÛúÞ”;’|?Å+K$ÐÇç‡4ÒÑ*ØA kÔgbÏ } ±Ñdœn§W°Ç8þ­×˲QÆu>öÒ\ž¼ÚPÑq?‘2&O ëñD&€ŒûÓXh_.ÿ–,6µ}cm>œaâ’ãmþ½yä~ÝìsıÇý IóÕSGè§#Hï}¼O‹-§m³8’\¯b¯î+¹ŽoÇõãÒHºé›ú”ñ,åöÉevÅËÁŒˆ± žŽ¸>ê&RZ_<‰ä6Þèx¹X±ëh‘œÇÒÖk‰¤ŠH ñZ¾?ÎÆ™Ø&’ÞÚwC#¬³G‘ª‡Å4îàƒ$îãEÝzô´›†ùÜz"¸®F²Ü|\Œc.FIˬ›qcj÷e¿eJº[÷íÒÕ”¦ÅSó{·}}x•¬±Êø¿Á-ÎÎÈsyb"¬^éÜÙóãxt8â[{y¾×M»´KW2µ¸•ó±A°pJöÖ «Nb¾çHñ»µÛW¿úÕÙ3}Lí^{$÷ú­jñ£™×© ô‹õ™mûûíšVâ,óƒ8O¼·2/;ˆ÷Å==…ë5>z=ûØÇ>–~ê§~*ý¿ñ7¦û/µœX^œo_/éº!XàM�Í)�àœ| Î ’ ¢ê‘P‘çM�œ.xã‚Ùû%u�|zr€O�OP œ 9Ä]ÉKˆ0ÔÀ*€+��©Ýœ éÝãçY�OÊ1܃Ä®!‡§ÕÉWy#P¯NÓ3`q/ �bÜh4¹B>†'ð˜d…R“§à9 5²É (çƒЗu¦Í¢7ÛÁÍPÊC>Ctª„òhCôˆl P†ˆ¡þ´…ž ,_W8€ä<OyÜ#cÌä@B™è`o$êéÐ]CÌàÿ¦lë&YÁ…™¡[Ø$C~îC?È.y%&þ¶}ñ¤x!_ò"‰;êÙP-è »1„ 5mŠ-Ç…-m=£˜´%ò4l ÷O,Ÿ6àCÞ´×Ùí%ŽîùɆ<í!á@bR|iò·ù¢;þ-A†<¨“`¶í­ç ’Þô#KÐp6Úö£'Û Ù$W‘¶KÞÊ u€¬ÈÀ=ŒWx!_Æ0<SHÆ2t ¿¤+‰Œ!¶²|ÕW}UvÕDY¼ôƒÈ—r ý@ÀùèýÂ1 =a›ô izW nx"²÷ª¾©ö…žÐ+„‰è1EO)’ÜœÑ  ¹°Årjúü´9D?ôt õ14 :P 3öct‹HÊ®§Ç)7·Á{±‰êOš¡lô6B?ÃKaQ#í?Ž!n&bzFñdò”6D½tæ&Ù.íÒ.íÒ•L ‘,FòàqI¨!ž®¡þÒ.]¡ÄIÌøž“è8R=…:?IŸfD‡Öc)®¡‘g�[8½ë<°�\C³öèf M‘ÕÐ>ªëçùi~O#÷MÝç›4‹Äƒè‹°­ k—ô|Át"ée¢\¥>5”œá¼/‚®•ðâfÓj&»„ çVz£ðYe´ß©Û$ºß÷Þ¨EPš.-¹¼„XùRóìbòFáú2žz®õ,.ï Ñ!Ú×|S¬”ã 1d‹äˆ |Eçý0Ùt ³1Ldœê¡ ŠT$Há�ò:åüF·›ÿJè¹“Åæøÿ~t͸CJTè#{¨Èàèx²>�ðQOÅãµsí¢Eúqì²×mäŠ8U·­—‡Öó ×ô’XûE%,è}£$]ô/'/.•¼µÊíÌx3—i‘ô˜“=ä6ZŽóþbëgǵ¡«¥Œ½¬ºeìg¥O-&/(ÑcŸˆd!íWrÉ6°¾ Ä4çqo%y¦´§$¾ûw ë`çë`û±ÿ&·Ä5u5è¥dHÁs`ö?,—‹©>m==|ÂIÙsã:çìÙs¡,Òz½šé3Ý‘hVƼ@нM,&KÝ7ñÃ/•6©Äù{~xÇ6œ“ÉÒŒXǧ؎q\›•Ò×pP³qrk·šÙ@¬wk/ñý§Žk%ïÇ>´ n‡¹¬ÃLL‰äº<ææ d¬lÏE×ê, ¾?Ò䃹ëâ{1‘6eyºQ·Q‡í{À¤;çQî望–Ìf»ÕPPsÒF´seˆïø8×@æåÞ²|Â<¡x2ZL„Ÿè­B"Û¶w|×Ͻ¨Ìl‚ëìo@~\Ͻ|Lý´/‹h“<a¿K»ô %ç£á﫜|OÂsã™3sÏDÇ'UOmÙ»ðf ÙïöŽ™®ÍÔ®Éü÷õÒvŸþôŸ¦O|âœáwó|†§zToçÔ¤ößè‚ýøW½êUéBä†m¿Åù å¸OÔuŸ;©âÞÊl ¾ÿÅy/–ÿ¥–»TÑþmýô.ß–sûí·gü LÈß.–Ú½ k±Ík=]7 �?�l�J@-€4@>ØM€at@AÔÖ­Šl(�1@¡€3à€¥'©v)ƒÎÌ¿õ¬`H ½R&àÃá~î('¯–•åItþÍ=€…‚€…ȃüõx¡'É zHèw!@žúž1¬ÇDYœÌfàyä#™‰ä H¨‹LClè zJÝÓ䂃ÈÈ.Hœ-HN’ BѹúöÄ€­:à[¹ wÂ�Ëó†kQ´rʾLFg1|ùIÆ@cHò¢©rñM‘}ñÌW~åWf<åÎÒ:ųöŽ’+üŸ£îç9ä¦-ÕºFÿï~÷»3©ˆk_ÿõ_Ÿû¶#H-¸¬}P6 µvC’CBnôÆýºÒ •£þ Uƒ~é†W¬`ùè)z7¡ !W -ႚ>Ìozë@&ÚF@_€]2 h7í€ò$/ÅSt<GÀÕ^/¨ 6­Üh×;ý º>Õ»y‘¯ >ÈŒCrÃûßÿþœn­ GØ'Õ/ÏaÈ-iËp:“¢gôƒ|èŸþ É„2©ä)ØšÔ‹>+q"zFñ·¼¸ug(~“衜êÀDyöC³xúËúëƒDe°ôd!éH‘¤4‰X†ãˆc©c1ù.„öÔS:ò4$×ô#yƾHrEï.zõxfûÆS0<k˜ÚŽ+£¬[Ê÷”‘÷ª_úºýÍñ/Ãþ÷o¦]Ú¥]Ú¥+‘ââ›ñ˜q4%Ç$¹ˆVŒÿ¼<‘¬´m±Ozë[ߚߟœx \T^ÉÔu5¤F$;´ ¤©”‹ü¬÷E·ýíBÞyö¢9A7£ÛœCèé­’B‹;ð ØÎc¬çó߃€^›æ�s  a7‚åå¹®ótk7Õ)Êî¼ØßHqîOÇ›tÝõVòîÌ[Öë!€Ýó|â¦U¬¯÷U"FÓ¢ûy°6B†èe"‚ZÛÈôÎj#‘Á{ú�VYÎìÄyßÏ쀤-DOðªcA!=û©õ©6TBw_;dì'Çö)„Šu_‹ �Æñ¼R,²»÷¸YÚ•"i¾‘µä´8�ßrÈ®çÏŸ/k/× Ù3ø¦êF¬C9 P§;ý1ì { #ia=ôÙö#±dÙ "|ºõD¾P¾–ü=¸©wûXµÏJ¦h½ÕÔ>êFgõ"ƒ®Ëa˜~êGY7#Ù¦TG¤šÅ¬Í¹§„ I#ˆ\Úx`wÜ/*óþÅf®îú¯ß G‹àøtJ~Ó&zɈuŒöÁ䨃õ¸¹;õÇ4+úBvÉ!Dºˆ;%,H®{ßNêŠcåDzJÚúhËJRO‹¢§Øïc}Ëãft=´´¹wÓÖ…xu~ ‰G‘“'OM^ecÙvÆ:+û"…1*²¤ôÁØ_â¸0j¡2;EˆvÆ}cž£—‡¨+zm;×;lG�?öü7í;DÒzÖÆYÖ¾¶÷Å6ª$€y(eá[œzá÷zê»d1ë_Õž‹Gì‰p z„‘,XÆR^&í ã¸1ª7÷Ÿ¡ ru“çŒ8[?ûW¶•T<{ð>^N®êç!³"y'¾ÕÛŒ ôÖ¥n6Oˆï81 q~â^nëe¥Œ;Á«ÆºŽù¦=ô»èS ü̈!#9#ð‹ï®/¹$òÓ.íÒÕ‘®=rý) ç¨þv¼Ò8Çf>¿ùï\&?ö[±£]ººÒ6àüzÚ/�`ñ—ÿò—g,M z—‹kÛøŽ%¡“׿þõ3[Þ¦³ø-~Ø’<Û¼ïË8Ñ®g®sÖGœÄò>×2Ûúµ¿Å=·nÓ«é]ïzWzñ‹_|Q9â:Üy±ÉuA$‘^ëéº%ã‚ Np•ße5�b¦B¶ Sê¢PÔ°|\x8Ñc`â£�ÄIˆlt7˜l{BÞPº¸ÈõD?åIVpÀ Fvj Ÿ{ä$„E È)(‰¬€„€~ä)ìF"àëwÜ‘ëúŒg<#ÝtÓM“¹ßÓîÔi\ G€:ž.Ò­¿õCv=]Häw@¤>‚¨ü’€à£Z;©®k�Ô‘!ÚåKâ@æÌÀLeãT¢�åKŽ‘hƒ× l†ß�© …Âo”mˆU.º¸—¶à¥l~ÃÎhs^ÔÛü†î¸Oâ“d ¾©—žlåP×x@àïG?úÑ™¨í`(Y{Ò«€ ¹äd7Œ‹›”Í Œç!Ù #={èQ�[<¼Ç¶¨/íàb;á:zÖS틎tå$éÈ:ñ}è„þÊuû¢žPøMÛ'_Ú y Ëa²| ’$ DÒNLÈ©w½¨èÙAO5‚øèͺIö¨ç7e@OxùÈG>’óyÌc3!âËÞE¾niy^ÏÈL{¶B² c÷CÐnòi´lô'dÖÓ „û�ú„Q-Ê`ߤ}iKÊ·?èa(eæÂíê&„vŇòÈ“²7Æ5Žã9Éva|¤‰ ’YhO=B`+†³‘tCÉè‰Å1}9Ž¢&nþ’$‚ïG?úÑœïSŸúÔ\ž„$jð›cœ„ ú¸ï'h†$Aw¾SÐ d#½©O¿ÅÝ.]µiܹ{3–½óïHïÜL®ëésH¦7¤Ûn»-‡©:¶)l ¡Ÿ_ÿõ_OÏÝèä–[n÷š®®ÐàJ®˜@ј+—!ACýƒ?øÃO—ÇÄÈ; OO¼ß®dR¾7ôbåéö+1#Þ(ä>Þko|ã3a0ïûÀ>0…­²×JrÎ7Zwú‘Œìµn$fx ÷¸x!4!YNí½¿xìó©êòž?‘=ä¸ç!ÿ(Ÿ'y»N€—ùDmÛ0¥ÖMy«¸© [^ýÔžÆ5¿ê #¥¸©]Ú¨»z½†N±œ4«S-g}àŠD'¯ÇzDï‚Ö‹€µ¸ Žä…¸Á¤îÜðÙJÅ“È-Ųʼ:>ßVGCÓÕÓzV¶ué¦ò9—G6àâ‰ìRèÀ¼eªd•Q«"dÕeõ"á¢�lãØ4Î)²ÌÓïÃÕ•Së9|​C ä:tìyÔ ® ‹ô#YdóßR%ãRô&bÿ™¥"yÂ69 ä€Øç²·’E9!×cÚPÛÎó~]€œöå œæ¯Ä§ÒfµÿÅuG$2œÛ¨‚²’>C ý¢`µrƒÒð1µ¾qìâúb1·í Çù‘ˆÉ@q¯Ã ËüË¢sòõ¡¾Ãõn &Ëáx ù`$ØVŽ%ÕvGòÒºôÝ~ÑMž­rŸï6õ_3öÎÚhF<*Q,Ö+‡!uå>@Ç므€yLcvWì-—3†)D¡èý¢›HJ1b£ý®JȈҗÒì¡·Û±¬‘‹Gì¡Øs –`Ó©ÚX'²äH²È×è;Ýp„PÓŽAuÌ­!šª,ýTFK˜Ñ{kM÷CôÌzÔ;ïƒu 3“ÇúLúêR*5õYÿµ¿¦ +D í:;6™l9“8ˆ2zÙp 1\r${D]hS)aœ§Z—E‡âû§%/EoÛˆ,Œ™«!„nm;‚Ž .ãÃoî¡äÞ²8ú^ëú91$–‘ë;¤)”I|×O Èz �š¬«ÝvÁ.]5©@{ç;Þ¹Yß‘Ázk™ç>÷¹WÕ~}+“¼çaþfã÷Jï}ï{ózøYÏzV^ë=X)’ü|oœ;7Kö`$¬¾ímoË{ÈòÖøˡÅg>ó™?8ŽÉý‚‡?üáÓ~Á'>ñ[ù@ç¶ý‚k)1çïzä#‘q‰¸.6µ6ÿfÿý›½Ëxpf[ßö7hŠg´kÐ •ù¹¤¶|çPà z{‹ó  Õíþ”éo\ч¹/TC°øžïùžŒ{]JY-¡Äy—‘®‡t]ÑÐ\”Ñq�ù0= Ðx¼ÜÔ~çw~'¿Àø�(œb@‚ÑÙe ^A/žw²O~.Âbèd�ôðÅ…¼¡F$�¬éõ@à‘Ľ‚íÖI(ëSŸúÔl,@mçs"@ÝÑÆÊàà ÆÈÍï�´v`6i‘—r¾ù›¿y yAB’%ø ðŸÆG^‚ÌqcŒºCVà:à+€o”pT€šëèМºÜtÓMG@rt¨' ¼Ä<z0JœQ@'u@¯�¾Þ Ô9Ð /lž¼|×Å÷Ü'H &êAÐH _A÷›o¾9ë™î¼óÎô¿ñùƒl€LкãïèiÄðz 7¿ù͹.„*Àv£GŒØ/$¯è­€ºÐO £"@~ ¯€îÇ< 1‚¬\ÓÆµsO´’$7¥Ð9eé=Ä0 |ÈŸ6Ddž'áú„ƒ¶$ZÐyÖ…3ý™z´ãrñ»À:ù ƒž èWÑ; ²‘/à7ù¢z7ðkh>eSî ëWQO‘0îè‰äéOúä‰PÔ²2Aâ;6Q¶)éHO)–¯ÄqŒöã7>¶;ÿ¦½)ƒú3.R.àã&eHL£¾´ƒCâ‰=¸ ƒ“ptÇ7‹”‰g CyöEmT/-ô!dàùJö¡uÀud0œc¶À½ñt¤}‰¼ÉCÒòÒôí\o6$ê÷+¿ò+¹¬oüÆoÌÄ'm zò$š›Ç†br#(êÀ±’ž¸FضãmœPíÒ.]=©Œï¿û¿þwºýöÿ’mx»›÷Øøÿ!ßTtÄ"î¯xEC~ÿ÷~?}ï÷~oºå–›§ Ð×¾ö5›ù×'òïŒÇfrîèÜjÚä ÿ¹d¿ŸýÙŸÍä5I»Ûãã‡>ô¡üžùÖoýÖLF»©Ì_úÑ£\ûéÁHÎ;ØXúÉŸüÉÉÛ¡ÀxgüÛûoóX¼§¿ök¿v"+\+ Q#(A¢Ôµ`wtÑy«�Nô†aèZv&Úùëþþ‰ ö”°mg§ ×]ì°¿”yÏzɇ½H(‹òI„X¯!ÆzŽàlÜì‰@‘w3 ^ï U5E"F$|,H]¡®Ó0H\8غÙAAë™’DçSõÊá\ðÄDÖ-cÎ*ƒ”%|Ãü4¿ßÎåÛ:źG[ˆ å¼VÐxê3ñ¾XÛ;ÚfôòQdY„¶\7m€ÞԠݬ,WVtÂ÷O1/3 #|Þü_$)ðÞí³=®3(@òÄsTî=uêt&.LëÓ”Ž�‹¹ônÖp6ÃpÚe££ßÄSM€ïÒTV7íâfè6/Ѿ+y£zƒhÁDm¡è®€ÌåýzvOy6ŽñëY˜ÛËöô·¸vPîÒfi£Ûâa¯ÝOoGO‚E2DÀSÓ×]cEp}¬SñR!èûž}Z{ ÚžI<ùžÅXv)-fÆfÛåʰfú }!4ô™HQO«‰¤PH%ÄLô¸û¡uhOû»¿C+x¸É5»¡´‰’g±w %\ËèacôLQw=£Pçx °)‹îª×!ÓÞÞr’µxHqœŒcÃ0‘5"øÞ‚sØå6OC™ÔÑx@‰ï»øN’¬QÛ~qd<´Åñ°ÔeoÚ‹0iNMŠ>Vu”í'eý:~[¯ÕáHªu—û¬€Ñ£KöÒ1ê†a aÓU}’Ò*èzoòXÒö HD½G]“â|ÀP'³þæž«ô¾1"Uì³ÞϳÑ#E}7nó#qˆcÜD´ˆ¶�™ ýõóð31TÕú°†PÚÉ&³wãèáÂ磇]Ú¥«)ýîïº_ð{³ñÕ}°«i¿ÀñÆPlÔZŠ“?öc?–÷ŸÙüŽïøŽÉìàÛ¿ýÛóÞâ•L-¡K0=X^,8˜øŸÿóÎ=`»-1²f]¾ý8$çOx[FWìðb…¹Ô¿ù7ÿ&ïa£öÔ!6]kû%Lú_ÜÌ[NÞ§÷¶¾-nåob·Ü/ºíÞû›Ú<)ÏùQ,׵Õ(Ór)½J¿·Ä3è¢Ü¥”Õ–köI¯—tÝ,� ›ñÕ_ýÕÓÉ|` ¬'^^ Ô€šxpc[@΄èu�#ÄèÈÃÓô”§7� büÆ©pÁ< ß"@ QÝ!.g'â&Œ†‡l�¨|xÑ ,ê’Ÿßé¨/Á/,¤�'%9¼éMoÊßlÊršPpÛInC pÍ\@_ç@ºhÁa½F /îuñF¾üCdsm¹‚äÂF“ö5\ “þ¦|tahd‰á8lgÊgc�€™DùèùâIr˧\ê$Ì ¯Lä†qáyÚðgö°‡M5hþæwžc²€û¦_ûµ_ËíC[îD;Œ›Hè‹û‘ÿ/xA2ìyéU=¦�¨¯öH>ؼž9°ol�Òˆƒ«–ì㦲»0†<‚˜$ÓîÔ|”ü±cú¥z$7ÜŒƒ«‹WÃïĨ2¸Ð6\mƒ È…© ƒlöU&†€ø¡wúdôÓÚc G®$ `çz7!?êˆ ‚äô“×¾öµÙ&÷¸ÇåI ÷¸á/ñ¶ ?)²êá#Ú¢Dê‡ýêÊœ:Ò÷)¹)C;¢ôÀ³´òa‡²ôlé‡kzôa‚†={ZÇMNþÖ[2è>Ë>‰ÄÊ€ž‘ SÈŒì’n¼×I½žIbÙ–¯êæ.º¤^Ž 1„rÓ¾\w<г„!u¸‡¾F»>ïyÏ˶®=Z>e`<ƒÝã½Åw‘6n¸&ÿ’ÏAœcŽžhvi—®¦tÏ=wçñ²]¨Ð™W÷¹âßÿûŸÇ�9›'çï|oºù–Gæ±öMozsž»0—xá _ø m\„ø^›ÐyS<]™„÷ ¾{!¶ó.c)D 6 žö´§]Q‚Å0ºdŽìæøë;× 5t \ÈËF ¶Ä¿™[øž¾¶ÒЛ~æ![¢kÉò{ÍÁ¹A\;Tr`u}.έ[Ô{îHèÔ{¾Ë-Ïv IÆl¯�e9õ AÁysœ—•öª€u×%|D`%ڤץ2ðµ*puO¾GàÖ5WœE@ÊõZë"¹uWÁ¨r–ܤѼ®F# %x-è �YH-ýŒX7w£‡ŒØ/ã½ÕQoæ§·Û(‚RQ·ÚCÕAQõjPH,‹ÙÆ—ú,åf]h“±îÃëM ðlo*Ûºåçún%[Òdžòìa%ø,2A �¿�ò÷œ¹g3·þìäm-¶=Þ–Ë v}9‰ʲŸXŸ1˜ùTuª`zì#‘ˆ£M´oÞïÞ÷¹'aje)`2e•:¤G¢Fiã ”ûk½°ô32…}İ-€Íß® %xãÉö[ldN–±F[ŒÄ’"ã`ÒU &OD€~û47¢N[¢×"Ç9ûnGX‚ýiŒ‚L±èûf<í&¢øl37�ÈCö\QÃ9ðÒ-ú‰ •úÕdã™,Á©þ‘`ƒ­.GRE%¤Ôúx¨ÅñB"½¡9µ»"_7.8—7ò­G÷æ{#€áM{\.÷'Ûï‹HœjÇÃè Òun[´ge²X·e>×5ÄŠ:.‚Åò,'Ëæ~"ì3ÑÌìä&¡rç!8âxh£ÿ3÷œÙ´Ë¹é€€etúÅèz¨d~ÙÏ÷æ ™cb)k#ËþþDúÀ3^Ÿ|÷Åðê͵|ì[‘HÛiFþéû#$:d¯ä´ƒ¹æÇzÛΑرõ;šº‹}µ}7Ækî³"ëyƽ…x°bTÝfè­åÆ1Õ¼r}R)ç P+¹¤ŸÚG»I»ø »t¦{î>“Iuü+ãÂÕº_ ¥¤Ë lnKx­ø‘ù‘iœµñ«^õªL²À „ú·¼å-ïÿ ÔÕ<€ÕŽ·†{0×–ì¡€Ý=ÿùÏOÏ~ö³/¸_Àîí·ßž÷`ðrœ¾=¬ ‘‚ä|"î<ö±½&÷ ð&yà §Ó}Mx\¸”„½ƒI0´áЯd¢=˜ó2_Šs^Ò•ƒ(×uˆøÒ¥&tz1‚Ž•kdƒë%]7 =CÐ�ôØ|•Ø“§¼YL�¤döqªœ °[o½5ƒ»LŽDu»0î„^ðXWó‚¢ ƒ¹�“²ð,FHο/͸ùöt9I€\ü‰ LÞ!)pàž2@‚`Ó¾}+ÏPg@>^VüÎK‰�=ß‚•è‰úÒ 8S?®ëõ�€S^pââÈEŽà¡ ½D  Ú‡ºÚÁ‘=S_@ad ÑÞè“úó|$kðAgèÉäÂÚ“3” é¥‡Ñƒ€Ôë< QÇSöè:zåtwsE0Ûͼ `ûûÅu«áÿï|gzûÛßžŸãHþ†øÕ_ýÕÌD¤m^ö²—e;#©ò@W�Þn~P´HÈ›ýSGò&D íh¢½é'ô%C=ôLBôìI2Á"nÙî´›Þ(\Lºeñ Ф&žAúž^!”AB�yS.mÈuÊ5„ 6dX þ¦ŸÒ§é›üOØÎè½9È#ýýD¨¶ÊóØ9y Ã#¹FÒ äòzÎsž“mR3$½Ô kô†¹¹È3ÔI q3›u¡n</q‰òµUÃq/ýGÒˆ›‰’h®C´`Ñ‚{˜Ðs Ò«KÜÒƒ‡¡zh3e@§¶ÏÒn”ÝH´!VG²í¥'"ÇGó‰ã¹´7ÿf¼¡­(ûe<’ÁïÜK»¡'ˆWöaÊ'oôà˜G;0FÒ¦OyÊSr[Æb$p"&a‚|Ñ¿aÐ3õ“ؤ{;dˆžw÷Ñ‘ã*õ¸Ö&À»tý&úçÿøçwÑ…ì’þÀÆÀ_ÿë=Žcbs„qÈDgsàW7cÊM_ñgý1Ö2üôOÿtöŽÃ»îÁ8æ87˜gsÇ+4üðŽ`œc>ÅûãBÉÐ~ j8šËŸÔA äV0/=à‰þf˜BtÅ{„…ì_ý«5ÿÏôG½iù®lÉ©Ws@v®ßŽ)iO’&`¸ëfd‚Àƹ–Úöî©ÓaHS;ã5�±Y�©ÏlÀê¾p¾á¨í”5Æ"lNpžP† Q€¸ZÄ“¬iº'‚êñô¿åµäˆZÏŤ:—Œ÷«‹¨[ÉÈm}ŠLÝVÒB‡ 7Qæ•{hVßž>Ž$=W´»¹ÃÇ9‘mcŠ�gôP@ò¾pVàK=XÇ:~GO-1§ÚÐáÌNh£½½9Cy"!3*ÉÆð1ÃdïÙ{Å^·Î6ÀãáùLtp]¤ìY'hI93œs\ñ>Ñw‹T<OôãܶK7ô t&Ÿ8?qâäŽ'¸G£ßô¤I¿¹Ÿ¬W3Qþíp]@ÕaôpÑ “¾ #œ=[×O<çü;öoë#9 %ËD/¥–36ïêíe˜�mÃôô}i;ì ™Nœ`‚Py áÂq%®[‹ýLԕæ'Dõ¶ð³ŸýÌTW«À¬÷…¸&—ä!è®Í´$–hÿ桾 K0µOWÛM=W[¬åâ•`c­%üC7÷ GeoÔq§66·Þµãõþ4^�èoºüæß‹dÈ#ÁtI6z’¬Þ>õôS½H¨¨ãh?J:7àÿ|³Ž<•½±Ä±áð°x'ÉuÄF@|A9ù÷¼‹½Lò° ʳ…ìDªcU YíΤM’b,îønr\hCÅþçC¶ø…Ð2ŽÆ ÝÕ±úLæpœ²<û•Ä$ËŠöD]Ož:™öö—Y¿…�ð†ÙšÔ÷ cÇj(ıR§”C‡`ÅÆV¹½ ±a•ö K„L›rÏž=“óŽ}êô áž8VTrÄa O4Ôñ y—V›ûÖë©Nê.zÉ$Œnî…E»‘pÇxí"zÀŠïG‰-Ðí5ŽOz”œIyzkIÃ0›÷H<±Œ‰ÄÓ³¢ÝIÉŒï…æi·]°KWIÊû?öÊÍz÷- ¹¢&úžþæßü›é…/ú¶ô`¦8ùnŽû®W*q€ÀÃe$Êçð$£f”½XÆÆ_ø…_ȡؾRÉ÷F$“®$À{oÉý‚G=êQùÐÝ…zá0º»’ûWcÒÃ8{ì?‚B ÿ¾ö îOc‘еmíNòýŽíÐßÐ[$}·zŠûKÛÖÖío’’)W™íº!–ç.—RnüŽk.笅„\æöè%,ÖÙòIìe¢[öêbŠ$v×7É{&ojì•^IÂØ®‚…‹ ‹E�ë‰4&¯'ÀëèÕ‚gx�X9i΀©Ð@’û"›Ç—ntkHâ7�5 À.ºö÷ô6†D^€ŒΔ¥|ܸW6QJ¾¼Lȯe1Ñ‘Ž@4znÀ>‰ <Ã=lR³ÑÏb÷%/yIΛç$ª~!ºïãytAz;¶ž=ôÌáæ à Ï£‰e¡V<\xŠàY¨ºcÀçYÀe‰,èE¢@Œóã›ïÜ ÑÅð-\ó„-2ÄS#‚ôäK~\^Ðà,í@y©#ú¤,= ¨òÐsÏ!ƒ5d¢lI!NÔZ¢�^ Ƚ�pã‘â5¯yMÖ m ‚û!øªb&äC!º?¥mÑqô’BÂNÑ7‰ç)‹kÈ`XÀ`ÊÒcºà>C}h÷Ôߺ¢Þä¯ ü»Ý4v€¥­ù·2ÐÊÀ¤R€=b;ؤ "$þÍ †ç(=ØFnQ^ÜTµ-±eꆩ/6€Þõþ"ñ"¯a HØ : °!dÀK ÿ&”K ³Ñ¾”ñu#_ ?—hdàß’˜|+I»@>=Äp/Ï0žÅõxªÅ× gsÛm·eù!¾À®† KÛ0n¡côÉ8ƒî#%°¡À¿Éßp6Ø‘ÊÐê Ê 0I¾üþ¨ ù cêÈØAý©Ÿ4I-�+±9ÚQï"ö ÉríæJ쟌‘\—•‰L’V(_ï äÉ8÷^9HôÝ‹I¶À¦ÝC>Û"ꀿ)CYã$h—véÁN?ú£?š^ýêWçcëØ¡_óŽ"Œä¬?üƒ?N?ù¯Ú�8{9¬C9Jy|vþ^üâ§÷ïþ]~¯èËÌ_žþ´§§¼ÿƒùsxP\ž¹ç\úO¯ü‰ô?ðéÁØÖe«6}>õ\€”.¥áÊËã¼ì_þË™ÇìòOþɑݵ±ûø[ùýmÞý?ôÿü¿é—~é—rùÌ þößþÛ™\á©Ï§?íÓ£n}Lúþïÿþôî;Þ›^úíß™ßÑ÷ï~_zìã¾6]KÉ †V÷^‹'9L®ýZRI0ÏëÑ={ ¾–UÃfnìaŸ´ §¶ûpŠÖ9 ›†Õ½Ã4l½2ï Ý ÈiÉ‘8€g@\ëÐzªp3¥û—|ëœ#‚ö…0÷|=U艣¬‹<�Ÿ¤¶"Xìæ‘¿ Z ÀR.ó%=Ñ9Gk7¶#¡f[=ã ðXV$’Yóòí ï+0µÖöJõDv<… €¦ž‡Y}²ÜCv¦?V§ï<ônld/†å `úb9l%²A7y8 ¬òOÞQº!^xÝ®×gÓi@ê>xË$ @Zd†ŸФ…‘�Òï@üìpU–b‡c;/3ÁÆzØg q�CƒÇ‘táš-êß絩jïõžº'S^aÑ«J‘©?"‹úŠ}Èþje,Ï×:²qÍ[ÖÛÖ½ÚàœXR‰SŽÚ¯e]Ⱦ¹Ny±Yïn¨v—½,‹-ŒÖ2#šYÎbÜ#Za^o§SñÝØG±­®ŸÆcî‡ txö`¶f,G÷Æ“u•\bè¡ØÞŽуM&mlêì™{²ç4HÑ®âXp1J/»íÆ2†®=¸ÇÔâÝÄk¹N«â1À1$nâ~žvÃGÄzj«íØ-ñű,“ºjûêÎu²~b;§¡NÍ¿m“Ö3Œ{ ±/ùõ¿ñÆý<~‹5ûáæžn¼!¿ãôø“ºùÆ~–¥[ÌÞ]„É9\Œá3ïJç+¾P<a.'²{уPÜGcbô*“íc#óº«cC>âýê·ì;•ÐñÝŸm§×ÚKøÇúVw›Ì³ØÜr"×Y'í·ÈZ=Žò[98qf£×ƒtz<¬â>ˆ²íŽ^³> Ac´«Ý>Á.]éGä•a¿à!›ý‚gÌö ~â'~"Ÿ¨gŸ½ú߃¹_PƲöýïoW2qÐõ‡ø‡ó^%‰1XO~ò“Óÿøÿ#cÎO£9ÀñþÁ?¸b xÆ{× ¼òT÷AAËÞDüüãüóþ žBÞ½È÷”½ã‘X—þðýHzÃÞÿf¿à»¿ë»Ó7}Ó7MûÏxú3Ó-7?jÚ/øö—|G>@ù}÷ï¤Ç>öêÛ/pm½Š~úÓšÇ I?ÛÒ…ÈPàîÉ](E%å3§òÜ×4\Â^šë ןˆÏ·kìû#“ó*õëZésM¯{Ýë²ÕH ÙV^ü·D–x€õzH× Áp@O7ë’�é„€�¼ø@º�\c¢_7*Šû]^d�‹�ª€Û�¹äA~�ݵz*°L2…¡Cxާ³¹|bè“„]Ô;ñvñÄÆˆD7jèøÔ�†œ%š`°®éxIš>úÑN_÷u_—BeУò1�ñœ^ Î)§]€(2êéð&|®©ù{Ï&²´tkć<-‘Á…©d šñä€ (þ­§Ê |=sxJgÕu5,Љ6æyô-è©`9m@”…aëÎO°=ÍoèòÀ– !á=Až ÝÜÄ¡lÜZц¼ ðhñ| —Å‹y‘m1ºÙŒ¬yô€Íñ7`/u¡üèÕ6§­‘½PäÕv(â€m@½¨׸Oð8žª")ƒnÑ©z¢.ô ò¡l Ôß>Ľ´}$+¿mˆ=ȨCOgÄÍŒ˜øÍP.†"aBoHd Ê�¸Ç^ЃDÚûpLáÙÀI.2è¢Ì €g$žÃ­úAOèV²$ÝNq/2Ю’©ÈÇ04¤‡p¢gÇdŠ'cHÔùyÖ~k¿"o #Ž)ä=+ íAè të“þð¾÷½/¸;SqŸò$¸ñ¨ èù$KÄM+ô@Ý ™¶ 9$ÁÐN’ltÝK[9Ž˜Ü䤞؞d+ò£>|"Yš”[9釒<$_Å0"´#ò’ âÄŒz’œ„~Ý#Ú†ëØ£j<£—#þM¾wýÉ'Ó.íÒÕðêB¦¿å[¾%Ÿ<Áާé³ÿôŸþÓôÏþÙ?Ëï.ú(ﯲar¼'LHÄ–eü\ñ}ß÷}y¼dS‰ñÈĘ€^¿ó;¿3}ù_þÒt:`¬‹‹ÙãžxOÜrË-¹/ñ΃„ Á6ºÌç=ÇûO1ÿú_ÿëü¾ƒ ýý¥kË-j{j¼ÓBÅÓô>cr-A0RÉç$Œ4 Ì›Nå$öùó«inÃû™w¾–Ëä_Œ^ˆÖT`ƒ¨Q< ÔSrñT<.ÖëâZ¿ Ì©Nâ³æ«ÌQ/e3MsÆC¸™1¿û#žÜx)Däz ýäÉýÙz°%wD@Ú6š“æ^ \SIbÑÓ`$8x/Ät¹¤ü­îº#ö]¼»¿ã:z�ˆ¶íARö6 k–Sñ¶YJÅÎ�á*5³Mtå„u<¹½†T€8zZÈ$ˆPŸàí…>P]ÙwÙ9ÁzF&Š$#òÅcÅÙs õÌݸ.á4¢g˜E–)‡¢è Ñ$×­¯}ðpuO¥k?Üsòä éDïRN› :Go *®¢§Š–ˆ¡n# ½-X¾cAônb›¨ƒxÓ®ÒÞ¢KÖ£g•èxûôádÓ„%á~eeNTÀå3y­ÆXQâ[§#v‰­ `m3’~&S7y<Pgë¦ÿOõ,¥ÕÁa&W¨»ülòŽ6>[’^F2Ìf<K‹Íõ®ž€;{îžQÆðûû{™\[úBñÒíÁç•;†¾ˆh¼¾ÇõS§³­;‡§„{ÆröËA§ñ´qÞŸÛ °¿KÅ>#飶ÁA&¥evª›“ZZ‚I@œqÇñ!Ž©Ñæí €áC7'pæ1il'ŸËeÑÖôáØÇeËrÌŽ¶ßñ;z4‰ïIlýÆ a€¾7–ìe4“ö²gœ%D”Þ<›²†ƒÜÆ•dÀžä=½Þ¦R7…¹Ìadºò^Üæ!"Ê ‹’´…Ü.ëúNJ™‹Vm"¡ ¹ÇNÏ8þúwlSeÉyGæ-ؘuy§¯º‰jϺ Ce/Ÿ½+íŸ:™çkó1(x£Z³2¬_~/a`âéÖRÎòJcÁ»´K—œŽî¼$ï™}úO?÷ ~ð0êÙãf¿�¯Çq¿�ü‰Ä–»6s߯üНÈûè—ìÆÄ¾Ê‹^ô¢¼G|\û¾1|öqOq¿€ýi< s°Ó0 ¾#À8\ý¯þÕ¿Ê{ßâJWcŠëCSÁšºûðžco_ÏÕ¦vm,Îä¼<zVhç÷'µå:OtnËØVßÚk®¯œcEåbeoKÌkÀKÚü#yõ®Öù$p¯ûC¹ÚÒuC°à´¸“o¾ùÙÔ›�“RbnªÈèâ9ŒË Ø_ÿõ_Ÿ ¢áL0<NI>»P$?Ê,uÎàð©+x>,¶Ý 3ª lÜÈA=;ß<Kð®Ay ‡@9¼d¹_XаéJ½Ðà(@9 î•ñˆGL›´±Ã ƒ!¸F]¹®Ë~7/”‘MÏ”ƒ Ô[ððÙ�yb‡H?n¦Ä¶(§lÖSèò¤,�^]MrMðÝ�È‚ôØà´6×ôpÒõe3±¸:Õ»òP6aûæB"2"ƒñ¯QÏ|h3€SêGYÈJ^ê!2ù 7€=S¶ÞCî¸ãŽÜ¾Èhƒíñ ak r´…2ö� ¿íÁ}&ȯuÿKBòGîºQ5Lí@¹zHáytfXIüޏ¦ =¨cêÉ>q£zP.e*mÍßêÁÜn‘v—¼âÉ!@m Pظ'  „ ñ´v„|”%É —‚} ce ?ò¦È÷ÏxF<Ü$Q´‡aD” =µáø·ö®w7’$LÐ%¹ibÈ’¡3ü]pŸvEg.ü•!†7â:z™¸C»Á87ýвõpóz’  É6رäìÐ$´vs¿ö½å”’5~4rJø!?Ú¿^…lG½Xðù:&XV eÂýÄùC¦Ç?þñyüs| ?ú¼¡™èCz#B.òAžH–Pîç:2vG¯C|£Gõpå3Òz¾Ù¥]ºï1ìü˾ìËÓ_ûk-÷CNž0&<õ©OMßýÝß^úÒ—f¶oß,¡Ç+A²@W„ˆzÞóž—ç^Œ;lš0žFð‘1¤%‰§Ä¸Žw7Ã_y?0Æ0oÇ)ñNÂC ïˆW¼â9‚?$Þ¬Mø¹ý÷|Ï÷læ3èìÚZ°F@+Ö±|w³Óé~â*‚ú>[‰iz6‚Üæ 1žk6¾i“Bz?1F«vOk™¹Ûø §‘ÀïÕ¾õ.Ÿ–GrD9q?—5ÊKŠ'—9NÞÞI‘tP¨RD½­×Ôã~½v¸<ÚFéˆÛr†‰� i¡ÏeG�”yr8׎`²õ†XQ6†j[G/µW³q6nö´¶Ö®âšP�¹Ügu³<WS¾ÃаÞ€´”¦6ÂË�$† ( ÷™AÃ÷ [œŸÚeYâ2dýåü!sŒ`òz2%ÎÌgýö§2ˆ ZÚõD2dÈ4dtxn9ŸËógôÞPÖ;{IÒ€c -P7·®¶Ù1´!uÌ'žfóíÂP5åtù"ôqÊ.! ±©x—±¯û)6]�ÒnbÇÙ‹ãƒý[ï+ùÜ䢮Cùèê·äQ×÷êÅqF‚¼¤+ïkôx¸Åë™p~s‘d1’x°KHç6m¹¿WHÃHIݼN¤ᣯv‹îrhŸá°zGD?q²ì)¥¡Ú\ùc$5uµ­‹WŸJ.‰ã0u,¡&Ç6)kjtÆ>¬Ýj¼è“éäÞ‰É6ŠÊj›u] ó¤Î Iê_O µödX lëÉ#Q»GQþìf¤…8&ÇxÅèVóð-ù®ïfc{ûlS|÷Y–{#3"anÃÄþ¥êX'¾Yg£®åC Ãùtêd í’ú.´É¦ŸœÃU—ÏÜ“‰/9DH?o…¤8Ìô…­FrDÔ‰{€d=̽Ù”]½å{Öãz#ô±¨§vßÓ¼§£^Ú½Z<¥l^ù3â]<`cÛǹßìï Ÿ³÷œ™ìÜýŠl£xÍÒÓÆá*¡ÖÍÉÎBÊ)ºÔ›ŒùïØ»t5%O‹³—Æ~û•0 Ô58 kˆ,°cÖ|Ç5A² ¶þ™Ï|f>ðË{Žýö^kH´r�Q 븦¿ÿ÷ÿ~þfìçÂvØgŽûqœ¿Þö€Ýð^yùË_>>'Å÷$ÿæ ß+¾ë»¾ëªß/ðÇ÷‰Œ¼1Ý—þT·eH4ú@ÙÅÅÙ.$ãåNâ|‹±Ü×:£ÛaàBåù-6c8wºÖÓuC°ˆ,w’žôø@Ãú&êYÂäž@Ç0ø �LðŸÁš¨Á€žSé÷àÎâW†Å'¬•²�Ô�™tð‚4&%2ëi¹¸_©�l<ol%er§M‚ÈL|ä%´u4Œ “}ÊA6”Ï5Cx’ž—£¤ä­ äÆpŠ‹ÁYò¤=Êâ­,d�ÁÉO²e¢¯( Ièˆ2Fy=¸ƒ' “ž+x–çNŽ®ù( `“kzïàõÓû¿E”m0€%G<k!dÐ C\jkWÜ”‘@‹ûÄý\o=0 ¥ @zÈ\ÐöOo Ørà}�=D²ÚŸöF¿Êe°}Á†xÐ3õà9OíóŒžÜô@Ù±-häDFI9. hËI‡¶»©¦§dÌ„­J(®¢† œ¦}Йm¡ ÔÉ u† aü1cÙJ°¢üròh˜^¶2Pö§-’$Knˆ¼žøÄ'Nä ²Ð·‘=ÂÃvçYä÷dNôrÉ ´6ã8‡ ÔG2å òCçêëä-ùIO5’ M¡ Ê7ò¸Îb 8ü [$,�mD¦ßj¤ªˆ|lÇ=Úа z6A~õâ8O’¨£‡Êq33¶ígi<¸.‹•ü°=ô÷ñ<çCØ(ßÈ7㦠eH’ÒK2H1,2PŽä I-è [Ö£†õà^žçßu#s—véêHØãéÓ§r¿þÕ_ýÕìÂûÛßž]]¢`—Jú†oø†ô¤'=9ýöo2¿¯ ¢pšg{:>®~#( —÷!snl R3cï[æ?Çq Øá½„ç-’ó«¸ðW/º–åÝȼwŸ7Üx:]K©Ý"9kAÛ†û1ÁOR%-ô31’ $dXW�×R~jÛõïoÞÓ´‰DëHÀ˜$˜ó§æ´þb›˜WĞ/3ö½yW ª’Z÷ïUgs±>ä=ÌrFrФŠvC Ùæ^*Ô¯kÀÖV«gþ^ÍÚTêR]‡›É,‹¢îcYs"Ù¥­k­þÔU´õi*÷òc˜�ä žö­®&PWI0þg‚Dfa¤yûoÀ¶ÆcQÃBR)z+@zõRþÃÓ¤¦ðÒ~‡á|y—‹J9ÌD„ƒdøR9¨r2Y6÷{ïj#˺€ÅŒ[Qwë±ýZ{ôwïsƒ1¶“äÛrÖFÔ½Óîcÿ/¤¦bÃÔ_†ápôK( Ú¦ôùÚŸ"(;'' x¨ãJªZdýb¿ÜÃÖ [ÉSµ_טÄQ?QþûÔDø¡žƒž-ÖS¿¤¦>±Å3ÞáÁ¦ß®‹×„!ô‰èA2Ln—ÕHˆ:8,äCkÐX«ïŸšõ»uÖýN¡[MmQ=%,S!UNcI;FH ‰ö°\,gû °!dÈ]w}6­öÏgO {åÇñqI˜Çö\ãÒ6Ŧ¬¦±>¥Σl£ÖóÏôo~;ŸI «i|>2îqÿh·ñPX~WPvX[n³qåŠ6#q$Ðâ¸QúÀœä§lôïLèÉÔ:¹Vˆ�ç6v|6{/Êö»\Leãõ$…ºœ<y¢¼/öOŒê´/Ö1¯ècÜ·Mzßßaë£a¾¦÷Xêfúˆ6g,ã`£âœ!’0ãšé½×/BŸŸë2–5¯ÓŽ’)‡IWQÞ|½¶Tß;k¯›ÂÚävÂK ÌD#é’>ê;ìÄúºÙÚߥë(1^—ý‚_ɇ1Xã½ímoKëoý­Ý~AHOzÒ“òÞ*¸ ¡™ÑãMw—jB?*Ø`ïôõ¯}ÿnºé¦ôìg?;ßÇíãx€Ç€÷ñŽaþé~É÷RÙ/ò~ûÞ_óµÙì‰_]ûq}6Ÿß÷võÐi›œ‹–£0p%“ä ìWŒôJÖÙƒ¢÷§ÎÒmLqÝæÃ7ØÌõD® ]7³0À1@W 4/u&£�[ºågÁ6�eÜ;–Óa€’|ØðÄØ X4£ >äAgñ„:å±aÌ=Ê Æƒçü‘ Z7-�t?Çud—©ða:*ƒ&³=!An½õÖ l²ÈÈH庮-‘›{t½¤ô„À}Ü1y¸ÇE'õåº }ŽÓ:çÔÙSô‚¸ü&QúC°}ÔC|1 ²ñáÚÏÓN2ò)KÂHŒù‹žµêoØ–ö=ö€ êÁÎOý  ñ†ÁÉÅ~éüIüŽžÑ7À.“ï×£mè Ç)zòFgL®˜€º)( ‰ýBöáCÞèQO ÔÇnü*u£Ú™. yÆ“4žæç^ê=¤ÈtsáˆÜÈÊóe‘]\([NÜ(£-$ÐzЋY¬£DÉzHQ§èÑ09”eKKz!O_Xñ”“‹Zõ yƶdì‡kôå(ƒak(Çp<€Ôþ¦§‚öäÉMjCÒ 'û¤í`âY=ƒDâ×è—zu0‹`KÔQ´c’}ÇoHTÊ@?Š-Ê`?22èaEDùÈG²~yž|­¿Þ≠d¤ýÓ”º(›rèÄð>’hÝMIP@ò Éí ’ýžºqSæ´I¶+rùŽ‘0Á½ÔMHüæØJý%ÿÄMS7Îâf zAFÚÙ? ‰´K»tµ%ÇxÆCÆ�æE¼§°ÛK™h—Dï{ß“n¿ýöL"`ÉIžÛn»-ëH˜€LŠÇ›n¼!ãá­o}k&[@ä;n PÓ›ßüæü7¡µ˜Ó*¤¼sŠyï¡#l "øÏÿüÏoÞ_yó#Òµ”.D¢‰@u%¬¶>÷ø¬÷ù.®*|/Ž€)«U9/A!>o¬{cÀÓ„\(—SÛ‚ïíf멾Þj÷”k¡ò[€êª+ô¢ƒnº/ÚΕŒRC„D÷¤Yw#q7¤ZP©Ž£Ž+HÝrÈ0’#Ø¥—Eæ@äÃÉ% /ÊmÀ²"0Û’.â åT†Ø¾Qïq®ÁOïrO=ïà0ÔGÀ"}@àÉ„qä‰ûuu¡*ðz°* úñ”òö Z7ŽëBÎHÕ=¾ä¡\v·˜€Nœ(yq ý®»ÎOë¾€n�ê `½ØØ´!C ˜»,d†aîò¤…õªË2F€Ù2c( uíLߺÇ9ó¤Ùî(Ù)Úm)i(‡§$.›£%_=g•©èÛ¨€xñzSûmuKÞ[úãAôÌÇ5þŽá-µ“ªËnÖgc]³^F{u-Sìt™O½kÏ1üˆÏõi>Ô:'ó±³ÑÞFâõ,ž!úìÙ`¹·Ù[YîM!?Šm•PÚã`Ÿ cÓ¬¬üÛrÒ]÷´‰PŽ3±NÊ”êS§3Q`uúlî„{'ª§l‹›Žám$Ùx=z⑨F[Æ1!ŽÅ±=b‘¢¼‘$ÐÖÕ´ai»áÈXËŒïÀ¶?™—ù»WÔü­MuÝ8Mu„�²í˜úìoÖ¥Ëý–½:HTÅ“N°ƒý‘\XljÔßH¼HŽDÃúE7¶Ašêx?ò-*öï({|?Äñ>öÝ8nGâCÜw°_dOÌÉIŽC‡#‘%Î+b_t×ÅW5Ïö=h÷6º$”úÈ�Ëx€Å¹E&¥£$i´ùoÙ-f~²þwç1vé*KÛö 8|ƾÞn¿ &ú1V~ög6ƒåì rÀ€0Óì¹îRʘǻÞõÎLäýå_þå<f¢#Âcü÷ÿþßÓ›Þô¦#!UŽC:7îPÞì@¶ÀûI$§ò.g¿€w{R?÷s?—=X<â‘OWSj÷âZë¾&†·I¼’$Þñ@¤–\ñ@;Ä"Þ{_Ó…tÛ&ÚÌ,ÇPò×Sºnž,gB*À%ˆC@ð­«}î¥ùèVÞÝÞã€D~€u€Ž®uÈŸIe³ñËémò`â k{ò HÜÃïl²S6ybà‚•ž`'ÿxJÉ � $�@OzG`˜Äs¿õ[¿•^Nºã†Ë‰Œ‹/IäÇ lÝ1’2Çð‚éz o@hl‰ †JÐÅ«.ÿÑ… PAKžåEaCûnZ CË$ãwÊø$od˜lSdp½ÔЛì0®Kº¡NLþ˜Ð¸øÑ–$=à­3¿Óæ´òäØrwèœk´eH‰d ®#+±Õ°)ÀlÍIU\œ)u€l¡ò@ŸLÐ(ƒ>@½ù(ƒ6)y�ùЫÀ0ú“DÄïz׈ ÊÁ=ÆJ¦…%®Ûçß%6èõÄvð#AŠ|± ònOmj+ž´Pöyd`Á‡k”KÞØ±!eôÊáF.:0¤ƒímX¿º9ÑÍÆôÆdEpˆvÖ£$u¡ GÚí3†@g†Õˆzh7àS ™Cºj"t!éH¢gBD9zeQóVŽiŽ)öqôÁÝs¡P cBþØäÊ@?È@?â:uáwO/’!>$Lñ¼¶c’¤Ç½HH�‹^ZÜè¤BؤÆJ g¶C$ÞHÆqmõ€\ô)ž§K~3ô‡^t$”hÏ’òI/Jn,þÉï}8íÒ.]M‰>ýž÷¼'{cxÙË^–mwýïg~ægÒ.•Dÿ%†*›$úùßø¦LFá=q\SÜ4æDÓÓžö´lK,ü!Y0Wâ}Bˆ HŽ[â}Â; =ñŽ‚xûš×¼&¿ñ²Ä{Œ÷'›*Ä.ÆÛóýŽë/~^º–R ^ù[üDˆ@x|ÿV°¦‚çÅ3Å<Þª$‚˜OôˆQž ¼E@²�t<æšžJ¬ùx’˜gæÞœËyê ØÆÎåúÜ;Ç0—“¶¦z”ßûÙº)~â\ÞÐ~J>it›&@°!C”zÙFël/€šÿŽ q~«g@Åöw Zœæ±Q‘Ôa¢c»Æ“ÀþÉ�ê+¦øEpÏö¬åH¬) bY¥œ~zà?ç &ÝU0¼•Ïë.€ó^Š!\§æ°ë r÷zØè )@ûMÝx¢œ:¬‡ò=Ú d‚3gî=¼ÌŸE_=ªtëâa0;÷‚Õ€ïù·U®P áôrHl8ÚR \zH ’/üîR@£=G{Œm$`k·áIøw9ÅÆŒê}d±Ø?ˆO¦ê%#ž¶—D#ªô¥Ó§»‰Œ¥7‹†£x qÌ4׎í‡Ö+Û}Q+ )&Ú,¯¨w�•„Ë*“§Þm‡rJþ°„ÃØÈ)É?ëmo™`=ìt㸈9.„²Ü;Êý¡+õÏ�þÆæ�æ[‚Ä6ÒB!r,P×ù“GdíçÕò`Z÷?,�S¾×°LYÓ•’bˆûÓ2ÿ®Î[Ò‡ãÄDTË^e*¡«„ˆJ͸=ûJ}Fï/C ?’ûgªc@·â˜]ó®wçbr}7…¸Øöΰ.“w¦‘ðe(™.•÷v°Î˜ÕtHbJø¡LÈD€½ÉÞK¸«ó¹?IØë§ºKrXç±&Ú4ÕZ­W3ù¬{ì«ñýžõÏ»s=¿®·IC"Yï!3•ñ//&b]š·ynÛõü]8oËù¼¡¿[ù'»OåÅò¡ qßÔ@KÆU<‚ì-xÚÈò°/»žyò;æxÜÞ¥k •ý‚wÏö X³_¶Û/¨‰ñã~áò¡ï3ÖÄò%lñ.¥BÂÉÓŸþôL°àÚ<蛾é›ò½>§Ä;’É ^ð‚°_ðÚlSàIÌ“èwØÞTÙ/`Êýÿ«1mŸßËßÜÎ$¼Q`ÛE±ò÷@îErÐËÝM® ®x÷ýI†¹X¢~èœT,û"³<éº!X00H>°¡ 1Ð+ `qO K Ñ¹ŽÁr¿=½Øm'�Dþ�$/Du·t®ÝtÓMpiŠ`2êUAÏ�rzb  îñÔ?ÆÈ½‚㔃œLÊ�Æ O€û$T^8 ¢­ë ”§g½yÐé$%è±A(€9øv3/‚šêC——ÜÓ‘Êà”¶ Oã“—2XGîA|¦%¯p=¢´%¤ Aaehm‚g ÑÂóè—V�Ú2\3l€§ã •  L£ èöÐCƒ¡!Ú ÛÝBŠaÜØí´@<zÕ&=á/2è„zS‹gððà]ŽÂ:níA’7ùFBÒ2ITÐË€a3Q’€^V$רC7¸ø›ûèw”eˆ±UuäËN/$è(6ôZ¢G l]bAè•ùŒ‹›AˆÐ7‘Å:ŒLÈÁ3´qÔCìüNùïz×»r›ãþ+Æxèºè’$`h dÐ5’ágb_Ñ+ rÛØŽ„íÑ6³¾Lž¨§ä'7þùÐNÈ禂 yeð«W ä×e²á;¸¹£"ѽr/6†r2ùPwYÈHÝxùiGìK~ÒsòsϪFûço‰T_O(o½\ÈÔ”(áÆ¤ö ø‰~i7ÉJ«Ô¡!¦h7þ%OPHF³í‘“k’ˢǚ8™³ß!'÷Ú7¢+ë]Ú¥«!ÑO ¡õêW¿:÷3b‡rªž¾Íf €/ »•Dt\ýœy@Lþç6y:®É1”±y26ÄØ‹wÞ?œDaü#4^¼ íI^=. Ý —Ç>ö±éŽ;îÈ›&¸en˦úaî·:úácó˜ôßñ9þùbYNÅ^+)‚'@jÁðx¯É9M ¦D€Âµà—÷¸^ñ÷@ißa¨'à«—¸sùï“'OÍ@˜ žÖ“رìè’¾=Õ¯<ÕÓBšî“ÀaY‘XAáJƘŸ¤¶œèÀSÞ-X-@륨óÒ&ÆŸ{Ùˆ÷Äð­ŒqÞãzÞ9•kƘâ©ãXVÔŸõmÁÉm›K‘ôq´ªWS)Û6áÂSÕÑ‹Ý0’ 6öyx0zˆ�ãF)¶k™Û.åTóµ ÀÆbà.z$<Ì®þËivd³îËL¦€´ §ü§ÓáƒD Ñu\+9b1‚×#dØG»(!Cr‹|ÿœH0·ënGûÓ&Z»°<¡ßö[Ê[­uë)ÿ8.ØvÅÛEÀ%(Û¯axJ¨ž.Û.'ü!ÊĵÇDúI%ºZ¯W!,Ãa Õ1z"•İÍö"ðký³mŒmÒ†ê)„²û¬—‘|:¿ï'6ßç&b˜¿»î‰äl‡6kÔ—0 q\–\ûb’ÔÐÍ=“ľÇGŸ³=KžÃŒ€V€óùøl»ë]SœgÏã õ®ìàÄ~ [¡ŽŠmÏÃÑF)×|ëØ=$DÛ›€÷U Õ¡mµ6ßIÑÎk»©ßk‹±^ÕëGõNÐõý™ ¡”Ë98b#zÑFóz»tÞ$ÉŠw˜¤­õÆv÷¦°@…øB°•ƒqOáìÙÍ^Êâ`¶öÍemîí»~6¦ë=&aAÔ[–¥¯¡oZ=Gݵc|‹Ôõø4½Û†JÎñý>#Ë£!DÈã`$Å÷:ú‹eÅoÿ=Éúl;ç Ÿæq±«aË<0DÊ$‹ÍûâÓrµ7Ûã˜Ê†-eÝ d—vér¥ù~Ákfûì#rø î`çÇ9ÑŸ[ï ¬ñ œï8æKì-ƒ‘°ý¼ç=/ï1ýâ/þb¾öÈGޜìpè™ýóË_+‰úŽì°_€÷Ô?øƒßχü8€ÍûoÍìdÂï~!—^miÛ;ÙY^HÞvï ~3o‰sWmN󡔦Ф˵ߴm?£ìœŸÊ°ÜmûýÛ~»·².V¾ëû‡¡Q¶•õ¹”íaý¸¿×t|À?ÏÀõZ¿ ¯¿–ÓuC°Ð­ �6 ×t>^R È‘4 –"�¦% °@ˆÞØÈåã"€|É?nêhäm €B~c`cS€›2(‹Óé†��¤cs á”ÎG)À°ºñœÇ%¢,�zdyæ3Ÿ™:ŒÐCÂùSëÈ7`,/*ó•=-(¬‡äb²Ô†î yš›$Ñ�›$á‚oêŠîxi#:2Dòà/òëq€ÄoÈÚÓÔßS!Ôh7î¡ÞÔ…Éùñ›à8÷°YMè†Ïónæ ¬*ƒÏp–á"´<ÁŽ~xƷȇMb‚Òêü Äp˜ëÏyÎs2¨  †À@‡€ÊnÒèÁ›ÝηRû‚ôC[cSL:(ƒ¶áß¾TÈR÷aÇ G†ÐÓ/$QDìö;CB`›2ÑuA¯ôôáÀJ~x¡íŸ-QÁ‰¦›PÈaß'?mB[¢ÈD½•Ÿ<%QFœÔ“'}†ë<‹ŽŒ§‹ìÊàÂúA® �‡èç¾,ôìAz)‘Á=ÊI/~¨—d/ÚŠou w~½¤ð;íN_R§ökäàyú÷’(¸WO%íæ¥^}È׸ÍQl+zjáwÆB‰GüNõ9 \Ø¥a9è›ÔRZKzÑf¨2J¦²-У}ßñ™Ð'2~H„àY‰s”/8… !»žob[HºáC}ôz"QÆ±Ç $ÛJxŽºÛ×¹¦Þ¯· Ç.]é)OyjŽwÉÉ»ßùÿ™^õªWå ¿ùÆvéGO|â'°éؤ®œì%1”ÝrëÍÙÀ鋿äÿJ_øE_O×ÄÇ;…¹óÞ‹n¨3†ã±‚yƒaíxónensœ€Ïþ‰½töäå?ßèã/¤ÏÞõ™ô¿Þý©blóÎø²/ÿÒ<‡ü“OÒjó><±Hºá¾VR»o7¢Ûï®!TÀ´æíÑÓ6Fòt»ùXNÜ”‹¤xŠµÈ  ]OÖ:•xõ§&Yê&CšÊª ð¢9¡SÃ:ÌIëÉéÊRÿŽ®ô#ðÒ’K"ø× b½#qÖ ¨ "AšêWê# –f:ˆäÛ%z0hOê· »á%Ý$6Å|‡€n¯¹¢Ûúú|K~‰DŒêq ‚hGë¶m¢ØEY—¥©-cy“½ùæ`gûëg§¢½¡T §°NžbGÏdÔûEØ9e^�àòÌÁáùpj¿€pa¦[4§ÂGo!wg`ºØÎ"ØM ‹±žú@½ž ͸“½kti"W´:l½h£Õî‡YÿÛ~šÙ˜ÏD/.…ÑeN€}±oê \ëqn~~ ÛÒÍ€ñb7‚¬]Î[;oÛ–ÐÝz2‹6ìÚ^r€ÏYçhcq,óú2€½ñÔ|¾o9®†¢ÿ\wÂplþC®ƒƒÃ¬Ÿ“È×>µ^¬uJˆˆa$ÿHìJ{ÙF»ìÙ`<»,*úZ¶ÕuÔc²L×õþ­W‚h‚æy ÁkÇÚ1•½´Ó¹ÏŸ=—½Þ o+ªwŸB§ŽËe+µ5I<ÑÖ¬Cµtœ6‰@zQšìj$cYž^Žæy×ߪ W½ñ=¯G¢~V“þò3«2¬² ù€Ã‰“ùw÷Öò>QWÞ6‹“eü8ȧ/Ïç[—ËÑËɸt­YV£Îúz$µÄ›Ø·c½m›ü°N­ýFrFü-’&Ú}S$¶²Ä~×öUå‰'pg65¾?Í3ÈHéö7cÐùnÏ2ù=4zç(!£Ú9Ðñ]SìÒÕ—žò”'ûìsßyÁý¿±_pœc�‡cÈMhe/ó¸'ö‡ÁhÞÿþ÷g»qœeÅúÜ}\± ¼_­ž®Tê6{Oû'–Ü“>óY<ô?4ï¼ëŽOå÷Ä ›=ü²_pçfúó\g¹ç&]u© Øw¿çž»ÓD,ß’ÚýS!fÔ{"–êú¹-ÿRS;h¯µåÆ9þ½…¿˜m/¥|Ëõð齕q©‰}ºvÿ&þ[Ot|{`žô@z y ÒuC° ÃèQAÎM€6@4@,’ ;÷Ç8;‚.tÍn=ùlül]ñc,‚…€u1ü/}<B6àYozÃ0œ©.RÊÉ4Ê5|“dà…!‰ ܃Ë$6©»9AÏÆµ )äAjH�äaƒ;n^Jöˆ2høäEB&É�І^(õ€D;“)¨zã¥)ÐOˆ4¬õ„A>ü[ð†ºëm‚äÆ<òéÙI‰�=eAlÑ#EB‘P8†îГ€axaG)ùpO<ý/aB€ +€SÃf{ÈÓ÷Ÿüä'³— ä‡É¤ žä§ d5t‡„"íÔ°q¡ï ‰,è–<‘Ó0Ø$î£ [áä¾$ ܶEÛöâ7CgÐn^Ò¦’´!¿‘C26Íø²P&6„lèÃ"€íÈæ‚SOÈ ·tL?çwÚ›<âb6&ÃU`ïä’‡ýÂqC—ÛèAÒ†'A=èê•vÃûyÀšá€LnPH0  ìolD=˜?õà>½ÀèuDZ€žûè×z›ÐvâËÊgÑcò  ~C´¡á)h#C¶@€¢Í%Ü?rBCÄäÈn-G íf*eñ±/2F žgr 9 ›¤þ´?vHYØ+rÓ?%ì8Aô =IãƒýÄ—¶íÀ9Ðc&e0fr¯Ä‘HÌ£Îz’!Æ fŽ£<ClÛBrNl e žEw†A7ÔÁ~á;éR&P»´KDzÉK^’ØÄcàž{ÎäÏwþÎìžÓ§oØŒ7¦g=ëYùv<Óxl6œ_ö²ïÉ3¾1æ=ÿùÏO·Ürs:œbâýƒ· t·ÎØ4adƒ-ñ8Vi5¾ø‹ÿRºí¹·åÓ)¼—^þò—gÊüÀ?Ìï$N-F7ð-øx-$ßñ}ݦVÍ\~ïÇÖ«Éù‚@OKĈ�ÿj<ÁAÞXVKË3ù×)?ç=lþðÜþþ‰ðÖž|v¾ºÀ!øW=,,ŽÌ鸡c•Ob×Ð’œ-«-_òA%hb‡D‘¶œxâ8‚Í)u³<= T\í§IÛÀpóú‰úŽ §Ä€v-&¯lü®w -A"Œ ëgëà¸ÙDŠ:ˆ�ëªîºn~¢AqÝ´,íp8Ù sã|ïæË~/‡ø(¡JØÅr<Öµ]ɳõnV¾7srÈÇ›ÍÕU>’Ÿ2øÝ/Fwþ‹½üoÉùÔýfs5ý°¿¡ÈF8ˆƒƒ!{Ö(žOMáBrŸÉàð*€Æ‘ô±(€{W]ôÛ¦ÙŽC8€˜¢­·àj$cD»ÌŒmÛ*zr©6kžsbSy›LÓ žFŠ®û@í 0Á×bÃTF´ îÁÛ…öÅ0…ÜÅëç=yÞoèCÝšGô’`ŽÄ°,vºž{Â)sÊ¡,Ξ??#ª”µÅf¼I"øKYûT¯pœô0Ú;äÈ+ë2fb² s/=µßì%Ãuc]'Ù¾Ñ&,ß>÷¨Ôú/emÀ{Ún±W<-teüÙ Î$‹{6eÛ¬åOçëE½ñRÈ+˜®l±ÍÕM¼æ{Ä5q´¿h«ñý%am¾)ßO$‹91gÜÛé ™OO9æßO‘ôahe-ϦsgJ¨˜ Öcû™T…·“åØW )©»6?õÝHÌÙìWb³ã£aEË…“É÷J! ÍC”8vA0܈úŠž&b|·FRCçä¨'òõìL§ßJØhßeÛ29Ïõp„ á;Å6ŒDÆh£ÖsÙoÌ|£çªÌwÑD÷+{›{ÆCN†¯õmÖ a^´*Þ…v‹]ºZRÙ/H»ý‚KLŒèŒ1}zöŸûÜçfÒÅqOOxÂò>ëë^÷ºôÁ~ðÎ~ÁwÞ™ÇFôõ¾0¯SbŽ öK¾ôKÒm·Ý–½_Æý‚Øì~êjƵã;ÚT<̓7 }.z¢p-âûÖ¹p|Ç·{íüáRånÉ~S®#,»]sßײc™­Î%/³Gç†Ûêeº”²Áã-î5èÙ_¼Íýš/ºÒ¥Ö¤»ÄkÝ%|wøÛO¾ýxdgÑ|¸Fë7 öA¬vaŽ!ŽåBÇMÀÅÖ#�Ðè©jÀR^nü.ÊW/|Žn� {r©8.¹ø8oø‰�ˆ¸ôõt³2Š€gòDê¢{z®Rƒ2>ðdþÑ~tL#àožÈ¡‹~Iv] ·‹?[&óÈ@™È€.˜ìó 2   |�zˆhî“,ag§|>íæ¨!Ð÷˜ò‘¤  tTÃBŽC4AÇíi-òDœ'?è6”`mH ™2µ ½ÐÚƒ5ô”m,. ùֳĘ˜œÌÄ 6zØæ"÷aƒ”EÞÑŠ^$ìÎ…r«µAi=¼�jèQºß|óÍ™Aìælûb£ýxΰ $½…hzc0Œß&ìƒÚ¤À5ßêýrÿ¶¶àYÚƒþdØêeØ®æÅp#´‡2D∛o’°eÀ°ãH¸‰c ÏüÚ¯ýZvµEyÏxÆ3¦Suä¯='Ú=@‘ã•6éøb<.ÿØ1rDòQÔ6ɤÉ~Äߎ=%$)!`ºøŠ C›ˆý*�ä{1x.’ l‹m2P/&Àè‚…§‘µID-ÐùIhÃ.c_jeàÃØˆ.")'†RíýK¿ôKù9&¡Žóê Û•6´í]ãxE?%éI$ÅvGæË«2`’‡ã÷7ÒCn Êɼñ¾?nÄzÚq:ÉØÍO¨Nš[&L»tÿÒöIlý{:å�O”r"‰Ëü^þÌÝé«o}ZºVÒ°.Þ˜ZW{mÂÖ ¹4>™Ž«Ç†B¼'Ÿô£¿2mƒ´4”qÑq×Ô¾ÿ/k‘#8mü˸(³ìøïHü} SñÐtúAµ_ÝÁû|Å+^‘ßÿâ_ü‹ÉÃúk½Ë]í‰öÿ¹_|[zåO½)�^1¬ÆêȦÉ÷)íó-ÀȰ8NGðÒ»FŠ€û¢q»ïT|ÅfO$ÃeÄÍ¢0.ò”wHô�!0SÂ�î×íEŽ4¹õ/§îÓxÖú¶^œ§Jî(พ³æ^>Ê{LO`ŠÄö¨«üµn±]î! ÄvÀlÛ*¶§÷;nHúUœ`÷ƺš"èelOјOÕµó¨rš<æYê½ÎåGð:“ ²¦‚îÓ vm´kæÙCMÔùí©|Ϋ'ï%cØ óŸê•æ§ï‘çpu8å#Ø’pÐ1× ©|#¿f´ie)v[lx.o  ·dŠØþ^O¿§ÙØÀ½Ó©ú4ßD´¿ÄvŒàgÑ÷èù`8Kûä¶ò¹JÜès¿j_<:D ¼Ô¹„%)Àr7ÙiäKø• ¶ê­¹™è ôbc…:ŠcX¼G�ØC9ÔÃèÝsòV±¨„‰ЦŸÏæÁ·ïœ\÷¤Ç‡JPÛH�딉ö‰òüþ4™wÓ•9¶S$(D»ˆc™å¯×›r²þ—™0ŒeAòšêüHD+ëRÖì{{'¦:c^çù¹ek±-´SûW´ñº¯¡§šnfË­ýF¢UéGmê;˾í/‚ûîß(Gçãû,z®p¬‡„²7ŽW}&í2 y ’Ý‹,Gï%ý¸-;Œ$‡4d¯M¬ëÉ·Æ—„¸Îö–=Œc¼2GÝÆþëÇ^Û ©$mi¯Ž æû_~~U<Ìh‹ÊÇ?ËQ^‹í’Ig}7#k)kêSi'3Ûì»™ ­]ðNX§j7¾óÿNŸ<•÷”+Çr?µ—^ú-H_ôaóïÍœ ¿#Ék1Û/ˆD¢ò½Û/¸Rérî<ìQO¿bë²Ë®ÅýÆð?ÿ³Ï4ëß2Î=‰2K}J¾| S»öw|cO |â}ÓÞÕÎ!W´ }J¼x=^ézÚ/ˆï¡‚.7ØèÞësÛÆ›—¾ô¥æBŠ!ÎÛ².wrÜ?¢mô®~¥Ëe3®0OÀ"Æv¹Ê¿ýöÛèÝ¿ÁhÀÁ=Ý–½i‹§¦»ñ3ã÷ªù ã÷:|†ðÝ~Òþ¾Øwûï6Ýë‹àº!Xl&œïˆ@¨)S›ÆÀø§c"J2ÀÈ -`( þ-ÐÝ‚h&÷ úsûÈùcâA7e�håÔ»Þ�Q÷¸ÇeÀ‘{‘ç$WÈ‚Ž)€Ü*È™ j<þñ?âCð]ïäC}TùÍ—¸€0Ï«7cä®¶ t@½,àÑ0íÆ£zá^‰|“²©¯¡)¸]ó;ùJ<ˆ 0×=1n9†¿hO-©îGn^<ÔOV•ö€ ‚¨ Г$x:€—½2Ä>2 ³žbâoÈo}ë[s\qb‰é)…zaOÈ%aƒº!v,ðà¶—„ÙiäɽäÓžÈÀ$¢6GØ¥^!ðXðÈG>2Гz£dÒ£›رáwøwÜ8-‰.â µ¸‹Œó,¿ÓÎÜC‰zl¦í¸—þBµêƒ ‚ÓñÄ"mGŸŽ}#n+ßü­KRd  =„°…7¿ùÍy²ÂiR<W`7”CÝi'^ È*SOr䊾#&t9/5Ús^D6©´i‰&|CÖBVÛ‚6UÈÀ³Ž{+ÐkÜØP|#+ùjÏzÕá=:(ƒ®Ü©«„ õ@[P^+z8ËúÜyRšaP°!BçÜtÓM3—$ôÌ”E;£ dBŸäe¼cÚ‚üßøÆ7fÙ¿íÛ¾mr½×nôH�"_zÐKëÞ–ò$L +îQO÷(ßô7zÓ›RkzÇøðû9ÝxúäŽ`q¥Ë¹ar-,.š†8Å;rñØ,®úô ,®¥t5,ÚÔ‚Ø×j’`ñãÿå3 #Ž¡ÚäèuÕÀz½ž‘‡Ižò%Eà„TÀýPÌA×9,Pc!¤HÚˆkNÅë^^À)»[?U 箟,#ÊXÊFÖ4åíÚ‰ü꣎LÍW™ã|.Hmåˆ`\Kfˆy nÅ|.DLi«r-‚éÕ{‡mÛWÒ@œïÕgÓ´&à>¼,H`mÁLõËrãQbF!Ôö3@t¹‡kÑ{„ׄÛñ3“}°•'t¬G–q*+Ó*Ò¶SѦ0‘Ö­–,íõ~q¸šô·uõ¡ qÎH¸*wšÂ0‡.a�ö3Ñ'—××9Êú0 AÒÂáÝmkg“óîØ~‘ˆ¡n+éh9[{¾P9µ¿ÏÉ@ÅΖ3y"ñ¤üv aµÕ.bŸ¶,ëÛ=¶k&ú³ñ9ÆDŽkëXHèØæRW¢úê Ž/Œ'NL­—€¼©Æo‹.{M‰ä÷œ²¾]w](˜BĺN¦Ì‹-äGÐ;ê<Î1Z"ùê"ŸØåSÆ©ŸóélËËqLÜØßU•¡oi"ÖˆîñÅ>O=¶mjŠ®¤[2DÛVqLŽ}X{àÑOk¹98ãrëÝd>^öÙCÉÐÈ«NÝ’$F™¹ZëJ< EÁd +ÃÞµ²®+á {Äé$ð΋!œâÚ6¾×£Çͪ‡ú~ò€vq¡>ì=†òðšßGÈiNØá÷‹kâŸåx=¿; ¡@ŽXg†É¬=Ûw ÿޤÜhv¹˜‰í{tÑïC©¹ÇðBLG—£·*e~èCO§ÞöUé‹>G°¸šÒåÜ/¸–®-ïÃǖ`q5¤ví?\%‹ûöèñ#X´éZß/ˆsÿK%XlK/~ñ‹36‚>¶íã_ÉD˜2¦ƒ¥<Ї…ô4Ƽ×CÔ—;A°Ø–X—€y°–Øv Þ´‘iG°ØríA#Xl@¸wxJÙn�°€Ò4`9`ž§/0*&Ô�w€ý1ä‚d ¾·ùBlàÀœe ŒÆÆã†Í@6€9ä‹L"\Ôf�P�R`ÐMwøí¢‚ ±?�•{ØÃ¦…4Ï�ઇ˜"ùKÂ0"©ƒI» ?‰úy²:7XØ0àôk¬¸¢‡O˜Dà°ykèÉðܧ[|�}Ú<Õ“ÏBÑ}? xPZcÙð,!c$m ‹lõ`¸îsaÈý †z¸Ø6£3d€| ž(“öDÊpqÅËAæ=ïyOn“'?ùÉÙëå!õ(!‹ð›ž¢ q±ŒèØÅ0y ol"žB¡,ô‹m¢+”û¡}h"^ clQ/*�džHˆÎ&ndðå¢;ûK±‘9|)Còd�~/‹Æ‡f@è !ÒÚ„^)гád(W²P»é« ‘·vƒþ¨?åSžcvù¾÷½/“ Vüÿìý ¼mYUŸ ¯}ÎmŠª¢+ÞÐV¡B *éEÅHb‹AÅ›hŒ Ø âgûËûÚ$†„ Œ›Ø#¢¨4J�‘.ôh5Š4R@AÝ{ÏÙßyÖÚÿ½Çšg³ï­ºÍ9·žçþöÝgz9ÇlÖœcŒ9&()ß”G&䤟4DÙ@ÙÓ^k¤›:1'­Ù’ƒ²¦Q¹?™ž Ñ9²EI¢ç\yå•Ë4Ô1׌ƒPÝV'ûÞWÅeÒÎ}i#Î9Ù:&²e ×sȘÊ#ÑZâ¼Â}h{mYÔz‘í²E }$ù@|ˆúB½âØD(¢/œŠ„ƒˆÐr”Écó˜¾,âLÓ:ßPö¤¸ס^Ç 9¤Nð² ¿¤·u΋âÔ–>´;ÒP;mÏñoxÕê`qÀÐÁb,':XìËAt°¸X¨5¢@5^ÇR”íø©]á]•­a«˜+Õ¸R Z#pM'Tgîú>leqÝÂtt×91xÆx3Œá2Ž=µ Ïi¤ƒ•à„õǾ’Íxˇ:m¹uõw'dNЮä©ã¢Œ÷#ëÖÁ¤Ê¯–GuHä€t)íø¯:+äÚO×r®98-P–ŒÕ0xš~µ*gÞ?o“ÎjLZÉz:µ°sÿv¥zÆÁ­ÓG ¥äm•ÆÍÑ=k]ÍñÉWÍÍaŒš­7õ©7”ηFòœ…é©«žûû©âä.§…*ãí>þÖÂxxl%÷íAŸ…A=ÑõHße—]¾<®K_.Û½óRʶ։vl]ëFu$Hý 1ÀVãbXmq³rd©m¬ŽÁrjÀ;ÜĹ"mdC´0DèXmøŠ|“•ùµŸ<yª?¦ÖµZn¹Þ!fAë$ú]Ýòqi_Ü+wÊf)SÚü"B Ñ0Ð.¯Ñ Û¶tÛCœêE¸öfoˆí£?”«¾®ë÷éîºÁ£¶ÑÙÆ|ÙO®ä<_C¨«[%RJú¤ïjyf—¹VŽKºj^–ÿÖj+†íÙv߲زäÈÆ°½KÕy]{íû|e•kÒ<”ÅÖ²Ëõ«Þ¢í+BÛO@äWû‘á¼íEÙ§^o Ût”úÞ ½ôOéŸë¼=²¨iJ³Ð…¿7FøáÚCMH¿1ß*ÛñÈý5¶{•um}y.ôÔ}šwd†“Î6iÜGÿ¸îº;¯ôóÒã—_låt¤K¤Žèï’B•Ù<2ÊO•aÔg[í?Ò¶jß–ö¼ì;fCä‰ú<¨ýr­gõ9¹W§«½ú¶6ãz±èoqŠ™ícçº}=Ùœ†FƒsÑPgh'»ë>r]wj!ÃèM/»ü’î u°8pè`qÆ'ê`qiû%,äB’19ã ëë`Á˜èó?ÿó—öÚóé\‰ä“h€ç“Ì“ã`ÛÚjÎSY\- X¢ÙOq±8X\ˆòœ@aÅ G¥Á�‰1JÔF–È€1[KdÏûL\Rh€L¼êʉ¬fæzŸ`$Ãp†ÕÜœƒaeuÒ—m8jhàD`õùÞð†Þ`Š¡'×á{ {4FòBÇ‚8‘Øcê|`ŸÎ¬~'“gqð b·+|cì$/‰’¨ \¹BV{E4ÒKÞ^:/d€A0ÿÈ3a`çr¯˜“î—í4pØ ì¢€È î(’†„.ñ7[Òã<e•pÜ)d„¡Ÿò¨!IC¶yáþ©K¼È¿g¿Õ:Ù&È·:ŽTÒI<塘-](χ=ìaýÖ‰¾Bz0~“ê Û9¤ÅÙ&ih ôtœÈ‚ßÉyLy~‹a<Q\(Û¡$íâS>åSúzI¾p�bûVæs,é¦~QãœR²Í×D©³Ô«¤![â6ÒÀ=1J“¶\‹²€DçH4~Ï8Ãv¬´NÝ ä3[dÛÒÀgÒF:H¶tAöÈ-äÈï¤!÷3N1‰ÀP'ÓÕI€|S#7òÊw¤2§ÍÅ‹‘²ªÑCâ¬@¢@K¢mÅi#[¤dÂ_eQ¼içœ9&d9„K=ºŒÆ’¨:‰|BYDÈ5[%Ê2«Îk•ªÜ'Ÿ\+ià:ÈÄQóiÏôE\' ê ÛçÄYŒüS/ù˗퓺ñ”}kI?Ä=qŽá÷<à}>égãÙeËYŸm¸N¼¸mW”'u3«Ó¿eà´]•™˜pÊ‘:—6C_Ó+FvÒ²Hÿˆ,8^#§ fu +"rºÌ& üù;ÏÀÌAªqµÞHåÜ¥¢ûªsjë¤ZïÛ«Ásʸ6\ÿÈÂÐuriäʵsMN[m #ÙpŸºÝâà00èr¯í>4ú wÀ€2 »¥±¹5P¶ÆÁ©<å˜jhN^[ãx•M=6ÎõÕ@6¤al”ªeYï_îm¨Æo’ÀnXóáÞ˜[çG®œ_GdŒªƒÁöHVIK½WŽ"úO«a=ÇŸ:µrœŽ=5ªSÃq]ƒ}.÷ØîãF FµnXu݉ì>W«¹n]Ž·—™ílB²¨ÛÃÚó]õýHo\[‘t0®õífkµ‚Cäæ‘ÍE}:¶0N_Û}/½tñßßûÔÊÀY˰§Ör¬Î>©/c§í¥ãBëˆQëmÕéT‡—Zßk$Öi#ýʼnŒá·ú6”ö›{¯î3Û5߬†Ý\kømcq¯qþk4\{ü™¹Ðà˜5lBûO¿–ü'@•e±2¢ÏvßÏËV7‘y__æ‹íh0`åcÿÈ€}j9ß#_G«# ²' ÆÖ°mÑlQ§úÙ8Ðþj›™—ùkÍ[J°êï}ÊÎû‘â8¶§­ÍDꜭ¸ó,ä'„a˶c‹¾i¥çŠìêÖEõ¹S£/L9&ß5š&iã^­QG”ÜkÕßoîUûƪKZ—[Â,ÒØG/Y8ê¤]Õ:xÝNþiãK‡†Ù°½ËPž«cqÀéûŒY7¸èÌm§[å»FЖ²p‹ã†-¡Ve=r&Àlçß‘¢š®ýë TŸ?Y¬•6›öReÜËkçUNmŸZ9˜”k¦|#Ï6ÒL½wëhXå;Õ^WŽ„¼oa–ç%šÌFyN„Ùúdk¾{AÓ¥—Þ„‡ßÒù:Ýíôaú9(hÜ–³‚ tn¬d5E«ŸúÌ+ iy–fëövNr6ØOWÿ™Ÿù™ÝÃþð~Ñò u°ày½ôOþäOº?ú£?ÍZú±Þbñ|µWÎFþ«£`ý{ 6§Ø›ê¸öl§á pÑ8XÄÙ£¯L ³Õ�“¨ÖA�ã^ šY9Ïd$N \‹Ar"ìlBã¨+޹•–t`”ãÅõc|ŒsÔÁzŒÏ8T°"ÿ~÷»_ß `@ä;ŒÉF>òFØ|îuÏ{Þ³»ï}ïÛ§/…´Åùã<JîY¬öÃ\5lŽGa’­0Ø’æ„Çq›kÇ@ÈõI_¶áÚÜ?4ø;Dè�2Y ¤½*Ûj:0$òâ^”Ç’†D‰!”óøžô"O®Kº“/ŽázäŸûSμ ^ÞuÕX¥Wf-¶v@\‹û`TGä9dÒJºÇb\6eQÓOyR~Ô¶tÉ6&SP²gjG¤!ràúq�¢nòéF¼8'räwêe’©/í~¯{S¾W]uUß)Ò†¸Ž@o|ãûï0hsý8  Úí‰WÚH ¸w ë5*ǦWòP%¿Yegê×'U±D^)®sB¶tá=NHÜ?}rå»ä£M¿§Þ%eGšÉ ùÊv7 ÓHÙe›Z7Ó®’ê:iÈ,\„#}Fœ¬‘¸_¶ ‰óL­/‰‰ˆ”lA8†óÒæã0U‘=uœ² =¥/¡Í$ Ô‹šòE~¹}EÊ!ÒÈ©ïä1‘+âìyDž\àð’Èäƒrá<êòJÃo´?îñ‡<¤¿poÚ × ÙËœï9¯Fk‰È?¯DÆ@QºW¾PêDÚXÙö…÷8k¤pNúëDGÒÁBû ‚­§"ræÌ+k[G‡j쪻ºŠ´:IT£V=/ת+Ÿci2—§nlÈ­!ÈÛôTå°tµJ8ó VôÎçÇv­=õNÙfauÿaë~;†Åj•¯niŽÙîê ì¤u<–˜wÙ¶¢ÎǪaº¦-ש+¨ëjݪ�k Oõº+y éÎçÁhºµxºìv~i#}„l3DÜè£( N ›‹tnô÷YEŒH4íQ}©2¨F¶ZßV+ÄS_»‘<Võv¶ËH:;[–SŽç÷•ñzÖG8µ•è+§€c¬ð>R¶5™-æm;×ÜÜ1€nmo/8Ç=:Èšün/VÄÎya!Œ›YÕ<.¯Ùc{¾0ÆiÆíÃ>Â'{‡8n FÌ®¿n­uåyu~¨NS+ªªA¹ÖÓ*ï•a£sæ²ÝÒ@\Û@½omï¹ÿ`¤\E¢¶;ÙX–5Å?äi«ÏoÍc5¯î7/í4+á7NQã>-ièhvúŒ¦‘sæÒÙæ!ÇÕzÛ®Ülû:»½êSûûpìlXßõFòùà$³=_æãdÚýl!ÃÙæR¶uœ·±ì‹7cpQžÖ4Åá¤:¿%}+§”±£V-·e^åÕ¶›¥,غ¡ÿnˆÔ1Ô·í¦þÍ—óÔl·@âPiÕ&6Froû§š¾zNun[å#LæË-â¤SZÇ¡Ôù¾þí”Nig™sN9{Ôôô×[Ôå¡ÿÞœcåß÷ç³8+žžG3Vا^o m¿[9ÖvË«wtÛ¹Þ‰…ƒÅµ×~h•%uºO˼[n9C^fÝî…+õ™SŸIm½¨u¿>o–¯Å6IÔUʾ>·–íccµ-Xí{ª³f}æCëŒQëF-¯¤7¤å!«{µ}aÚ¾¢O϶n¹à(ÛÁ8 ‘‹…úÜ%2Ü>ðÁ®:ζ¯<—³½6—Dp¨Ñë| µÿ\ß4æï¼°ý<å)Oéíig ÆQ\׃üàî‡ø‡{ÛB7畱rò>¥ÛSßN^v”Ø»ãô‹Ü! þ3¾©‹Õφüƒ“£oâ?aØ1¶R©²:˜å7Œ¥TPV¡sN Æ1®‡2NL·¡ß!CYVeáð†Á6•žï97«¤cäŒC+Æù0B~üÇ|ŸF¢°ÂùÕ¯~u_QáS?õSûßs<$}ÃJŒÕ>žÈ‚{“6äÃ9È£!Çð=2B.‰:G:…lO#(iÅXIÉV$µã‹< Î Ù®$цÕ/—.åDzãð‚ì1âÆàž4¤<³Í~  ä±uTH™“Þä;Þê”iˆÃé£ás}?² \™D¡”4®CõÃx»§Q-(Ê‘×=îqîc>æcú:•­JbŽ,% Ž?ÜH¯DîHéOt* äc3i‹Á6+(®™EÉCЏ†qd' ¼�©›lµ€<ÉCÚõ8ÇÖº™(\Ã8ùÏ1Èœ|g_¨xØ‘¿´¾£L¸W"«ðJÔ~çül¯‚,bÌä/2#T¢‹$êE­—yð’¾W¾ò•ý;[ºÜõ®wí¯‹l’Ê�“þÔî•mQRøïÓ_ Kd¥yáZWW.òª[aPï‘÷Éö8=qºMùªÛU9Ä«‘z'‹ÔAÚzä° ¹<ôµ‰ªÂui¯ŸºÉµ¢<ÉÖ¤ƒz§Èï”EîGÝ¢<){Úf¶nJjÛÊŠ˜+¯¼²O÷ #mô•q0¢m"úPÎ'rEÝê'ýW¶B¼sl¢òð;2K½¬d%åL=Ê`‚¼plœƒR¶qêIÈ…òÉþÀÙ6'áSkÙÉád¿ÁãATÒŸ­†ˆ/7ïî²3p¿åN½Þ•¾uaËÏÔiúÎÚy&|ìN¿¹?‡G-H;~Ýÿ~]wÉNÛþ¸«¯î®Àék§½¾õÏÿ¼û‡>>†çÄÑÒw.YÙZzx®à´x»ß£»ÕGÝjò~õö·wÿ°Ó'Üýî·çöu+Î~(ÓjðØï»ö7že8 Ó§ÑòÜbŒp¶h e‡—Y?xÓN=@VwÛ©SÈ ƒ×?¾û»×¿îuÝå;ÏDÆŽq¼á¤ö6–j,©Æ¨�1h­ çu>²½0ÃÒ·†»¶å^ÕÙ •¡}ý€ÏSûÅgE+úе ãÓº>†(Œ¹CøðÕI[U$Íf+#ê^áÐ[#\UbT#P5öµ¹È Þ+ßÕc[CqÍsäP ‹ÓŽÓÑ#ª©²:—|í6+¦7–«y/¹äøÂÁ`¨õ7–ç÷Mݘ¹Çéc,Ÿj,Ï»¥q²­?ùnìøÓœ+ªÃË ôZ•Wê·vÀiacsdð›•Uù}ÔŠÅvÃòòÞëbaH\ÈoéO3[¬@¶mÈuú<mn,æËpÿ½b®wxîÕ×­Eý"�\·Œº’ù÷Îð ¶­¥Q±1NGû9³¤ÎFÆmO=©U››ÓÑij4•°r"À]!í,嵪“Cq,9yòIJ>ƹd¨7Ãg—«C׿ÝÑzª\êyÙ&ýDæ©‹íJúÚ&ûk,ó:Ô«¾l,ê Õc{•†jÜ_–ÕæÆbEü¼wСžå$rŸ÷Û,úæ¾Þm.ÛZ…ãfã>¥åk’¤‡|G1œúוzRuNÛicÅI¯Ï_7_ö¡qb•2>¾0L_×ϳuH½~ Rû±Ü;õ°¶ç< ª‘?&5:ujpH+ùk;HÛ¨Qj™'Rk~XÓš2M9χˆ Ë6º(£n¨ŸóeD#ý¶!}_7[µ‹~‹‰â ·µ5ÞÒhÕ_­æÙq®aŽœ~c×JÎ…³Ež9yU'¦È ¶ZoFõbq^u¾èÛÛÆæÈA°í›6Kt”)Úç}t;éWxU}OMWËô‹S(§Qyìvì[ d–i«y.4Ðàœ2ÊsÃUÞ‡žÙ×¼k¤/¸ùŽŽêª»Ü¥×ƒÝNž8Ù½êU¯Ü™T¿Ýïþžzž9>ý ùBïÉsíæÑ% Û&bùé¬jG?ÉñD0ßKÞ,xC—‰"ö¨c¬©ù|Ž9ß$=ÿôOïïí$è ŽïèNîtç;÷óàåqÝYb6ÛõñBäûú3ë>¸£/ N}pGgL9÷rÚÉÂõÒÌ——=ƒÎ/ãyÕð>ØIvGvnŸ·|f¬Áø.cçÑó³9gêžûÑÞÊÁ‚çöw÷wŸUçŠì ßñßÑ=éIOE냺M\LåñLž-{å= j![roÆz­nÞ3Ž»˜¸h,0Pi0¦%bºDÈ ~Œw4²4Q‚g»‚JV1ÇèÃoVñSyâ¤À÷T¢D9ÈVYÕïø¬ØæáÈu3a&°¹N}øeµ8••ërˆ<Ñ)8†ƒ:yŽ6Îu tü'…¬¸ŽC_dÑzN“ã¹.é&-1Š’Ò£.Ç‘ÇQ¦guu”Hˆ|îŒé$O1èfâ‘H œ›•Iùj ™Àq1–2xa@“Uç‘¿‘ÎåxÒ@^x ÅQ!eÂýyqƒ—8iä˜\'u"“@dÍv.<ÙvƒWœ|Èw]½Ï½ù>å—z8&õšûc¸@–qâè÷ç[¤#õ7ÊšìÄoȘ¼ ¿”G¶•Éê”5†xêF&üM½äšä-0^sý‘i_ȰL‘Èä;Fÿ8¶䟈œ“rB”!ßG\7Ž/8J0€ éÈÉC«ÖeÚ$×KÔ‘8p϶ÞÿéŸþiï¼@„™º¥K¶ØàZÙv9Ô4Ä™¨ÝÊÙ¦ýP×(CÒE~ã…HYs¬€$\“4gûŽÔ‰ÔëDbÈÖ>Ü;Þ›ÔÿVå Çe«˜lA_—þïøB‡ŽÍv*ü–²D©”uÝÞ‡¿³õIMC"6¤Ý¤ %J ç& éoãäEç "Âð} ²â&¤yÅ#hÉOm[”í r㻤te“D©Iε¸?ï)‹8Bq/ÒåK¶ÏI_Y'ÒÇm–´¦¼V+}Ê€äìM3äÐNR§&­Ã÷«‰Áô ¶»à0aÿ‰Ÿø‰>*ûØäÃ×uzЃºG?úÑ}Ý>}f£y؇¯ýH÷ÓÏxfwÿûßgxõþ“ØC¤D1ò£?úïû>ðË¿üË{9ýýß¿«ûÅgÿR÷gög}À¯ûº;u7?z|ú%«ù¶·wÿé§žÖ}û·ûÎ3óÖ“2zéK_Þýñÿq÷íOú¶å˜µ$Å(”ú¶×$êL©¡ªŒ®ßµýßïÿþï÷‘ƒx>ЧÑ÷}Á|Aßo'Íg+]‹ooP{º0J–Yoõz×?üc÷³?û¬~\÷ÙŸýÙÝ7~ã7öϽðÅÝ3Ÿù̾m~õWuw«+Î|ïÑéÛœöV•µÞÎcZ5’Ô¦ãz9ëWã®VWB·Ñ¦Œµ¹W»ê´.aÊà»2¤Ä�^÷w'ê×F7lã±±Ü uÕ¶†ëfÜcÈËöHÑnQ‘ñDî½jûãÕ¼UæÕèSÛu=6 õ>õï_ˠʱU:ÕÕÙ­ÌÛôL½†c7F·Õ}fËñÙ°¢÷D/Ój8«F¹!/ƒƒBÍO®5džþ¤¡¾¯ŒÛݲ®Î@óÞãTo˜ÏõëvS¾¥Áyaø\ž7ß9o«´‹ncWD‡þÅ%ÝnY¶2+ããb<Ú Fø~«’>}«2ÞÜ\Eiä1Ìs×­œ’¯v?×hu ©ËÕšsk™µçZ§êµÒŽZƒA[¯¦ ¥µ<Óf§ ›èWŽL[»”Àl]SÛÈê^‘Ûêù™ßâ7GÇsòê8Õæ}J6ÕA¬¦¿¶A äóí푺^»w$˜ ÏÔíEˆnœ3ø7v€™-ëF×;8Ì–ýÆhž³Õej¾jû®ç¤Ï®m°íË–yßéo7ËwËþˆº4Ÿ/ÚѬï_ã,“9hœ²ÝB]¬PÇTUŽm¿×>£ZjŸ‘ÏK§„#»úÝ”U5ò§l£ŸÌõê}ç]·+ õïþ>qˆâÜY9w{{Ôûc»Í‘ÓDß7u¡¯.ã>rÜŽ£ÍÞ8X0¶iÛØÔs¾:£ŒÛÒlw9oŒeXÛÄòYÞ-ÜÑf+Ç…©þ§}Öe+•Ü»:oUçÍ\£•è|(×í<ÏÎ,ÍqY¯š>°ÞçÄN=m£`Ýüòãj gS_0uÞùä-o~k÷?þ“ýœä’Å5lWÎ<xˆ”Û-ŸÁg’Ök¯ýp÷Ó?ý3½®õc?fÍ‚ŒC¤/`‹íŸú©ŸêmT{ÜãºG<â½®ø×ý×»×¾öµ½ìÐ#ÔÝ-ù};óÁoø†oØÓÁ‚97[(ý×ý2 {"½Õ±_Û—ö¤ƒ<K¤Ï\Ï„çüösvôí¯X.°C_ð%_ò%ËE×·ÄwÝ¿^h¶[׎÷¼Îaó¿ë]ïîõØÙz⛾é›úqË:}Aí_v±Ÿ€/P{÷™Ãûe—]ºS÷o¹Ë9¢F ŒM$ ‘±Òê"ùéþuï2nçÏûý±}"eq®áÔtn¹]€ÒÚ<vµû@Í3ö©|ÆE;F‡œÏuÎÞŽkFû:;\4TbŒ¹u¥oÚ<ÐhPYõß{/BîÕ(�1ÞR10¨e«Œ¸ÙbØãuXµžÈœ£<Ž£B<©,1vÇÙƒûd/*a~&öóˆZAèûËyÈòåî™ÕîéHG&_|lÈéÄA iÈ ?[6p~UŠdÅz¶QÀÌ5¥Êu}Ú9?ÛVð=²‹Á¶g’ÈÃx¢Qdͽb¬LyŽã7ä‡ržEÊ#ÆàDËà•­9(¿¬XOãaœc8Cl¼¼ø­Ÿ¸,¢€Ô§ îÇù1 '”?תÆ`œÞúÖ·öye;—{ßûÞËz¥IœK8yDù[ÓP°IG¶G¡3£ŽÇI<sl¶2!=‰ˆ qzÈ1q´àš§)î™( SƒdîÍ}y"{`"ê-/®üqᾤ´P|_÷M}â…,)kîÙF.©»ùk¥òõ$Fêã  ò’zAºSzì‰!e‚I¶ë¹ûÝïÞ]yå•KG¨ÔYˆãiŽséáz´Õ8ÿŽ8!‹œhW1𓎤!ÎQôóâø¬`®J^î—þ/ÑrHGú³lg^‰ˆü)£œÏ9i[ä!Qn(sÎÉö4­’‹ßIú4ÒG3¾Kôš8m¤-p}dÇõHG&Y…È+,QòD,%äG ®ÃÀ“!q!?ô§”'鬎Tqá:‰b…÷OyÐN“o®—gÌ”SyO¤šêì“>2CŽ/Vñ$‚Eï½½ó×=¾ˆšñwoϲÀnT÷ä`Ñ*G¦(³é$C}ý¬Ïú¬îNwºs÷ÜßùÝ~‚þIŸôI}ÝÅi Û?¡  îþ¯ÿõ¿–mœ:ζeW_}ußVpà;œšB"9½æ5¯é¡?å¹Hô¼ç=¯»ÛÕÛÿÍõy®t⤊‚ä¡}h¯D‰ƒcÊü¼øÅ/îÛ4ýÊ}îsŸ¾o¢_B¦qÒ\†{Þyg.ú)®Á*¢•…)ƒS¾OßÝ-C‘oœEÜ^רÊèöx^ô×/{ÙËvž÷ÿ¬û‚/øü¾Ï#_ô÷ôÇ8©àØä³ø±Ó2®eüÀ߬ÀàÙË8 ™!+®Ë‚hRóæ7¿¹w`åžL29¾Fw[— MŸ®’4dƒÜP¸±*”zÂ!ý í‘6D}#ÿŒ+Y…Ì8–zFݤÞð DÎG[FÆuŸôƒHê2, :½‘|c´:£;ª7ר×Z98L‡K¡}¨Ó›}?Þ®\­ó¢Œ¹âÐS '}ˆîùʸCyÆò+ãÿ0ÞÍœcœ®•´5 Šën4.¬ãÁ8 ¬Œ–»"¿ŒWò92iÇóÅ*ÙZF‘]í{"çÖàWÏÉçZV­Ñ±ÊbiàÚo™R¯=þ<_*”²žï—¨tõ:+Ù·ÆÿÁøµµÕò«¿*³ÉëÆ¢ Wç&ÚCòž<µJ§jÜïËv¾ÛÙ(²Î5jyÕò«u£êFB]y=®3Ó!sksï8=S—ù.[/´e6å‘|µõ Ö­¶Œ÷2¨Ö´·åU¯S@j?Xϯ÷««ÿkºÙÄ`¿µlU~C½Hþã´“*ÛKãyÝb!ç%ÊhÊ s‘lg‘úÙ¶Î,Så×Ê‘‹¾ltüÎû©E}íóÒ·F2lûÃrõò÷X¦µÌÒkÿ\¯Õ¶ûêüTûÅ]Jv>—yñ²â[+c;[¤ ÄaáèÑÍ弓rÅá8×iW>no¯œÞ¦íöŠ´Pëm}öÔzx²È¿ÿü,ÆœÑa¶u¾­¿‘SÛ>úã‹•¦Úc-¯”Á¨=ab{¼íEÛ>j;l•êqhÉ¢ƒ8Œ´[jö‘=æÝraÕÞÏÄq$œ:~hóÕ§1ÎeKœzzÎ2Ý«¾¯æ»5Zä>«ö¼{®ZVqFª}Z=n{{¼ÝWí³k?œ:z¬×ª8 Ì. }Áºç>÷¹ÝK_úÒ~ûäk>pM÷g¯ø³~.Ì\Ûíšß™ïî§/ÀƨßU_Ào8^ ¿ýÝßýÝî®wû˜þïâ/ˆí‰—¤û@¢3§½3·}ùË_¶£/¸¦×O2gC‰þ9D_P-™C3¦î™¶c­¡ú¢ýÆwýñç ªÕ1c>ç~yQ–/Þ©w¸ýz'dÁ|QÈgæùDgž<ÑSñ³�’y/2ÆFÆwè`nw»Ûw~ðƒúÏ\ ¯{Þó»K/»Éžé>pÌWžx¡/`h¶µ^ê º½õÔê Ñe©_ÔÍæ/¨cÐP#Àd¬œˆÝ±o´Ñî¯/휫%mÝ`ýÖÏüÌÏôýã ûÀW~åWö:ÅÀV!ø‡Øÿ]i;>)ì,RóÝ[æÞØBèŸ?Þݘ¸¨,ê`³vÞYIMC£#â¡E#K(~~ËÖ OGO#¤Rð}&¹1‚b¸¤ÓJ„„PCà·“õlg�ñ¤Êªnî_Còs,Ò¤A ïi (—Ôð;ƒÏYéÍqtŠ<Z×NŠ‚‘±CÂÝW$:©H?×ãÜ?‘E")$dþ‘M Û¤¸×!/¤!b"MòŽüø>)2&o”]:~¯ÛDÔAE&sQœÒYQ¶\ƒûS.Üt$j×&-Ô¡?$¯ð1Ìó°âX <ÐbP®Qx!SÒð”kŒáÕ8Ëõ)¯lÇä•=[‘#2CNœÃouëŽ:ŽcOŒÇQÐ#vÈ#é¨[HcЦS—R^¤ÿÏÿüÏ{ãéä|4”IõÔM╲æ¸ÔÙ!Üï%KG¤D¢Aü޳D¶[‰sJ¶k ’ßD¡á·l!R'ljN@ž8îu¯{]_ž HÈ_œk²ÍN\Ùžƒ÷ꨥc óQ4¤®Pq®H½<G—í§›l Â÷ÜŸöE¨+uVîC@^ñøåwþ®{ù’ŸLà‘ij·á=[ç�÷Oôê=çP/â0Â}j”´êå’1qÖHg >sÏl9’6G @Þ8ÿdûʉk¥ÓFk;ç8ŒyüÆDŽòæ>qœarƒA ùóJŽGq˜¨aÅR–鯣´O;Hԓھɂô¥]eàGZx¥¼ëÊ)½ãh³ƒ9Ø—}éëò|¶˜Üîí-½—rå|B]£-d»+Ú9íhÚÆë¾ð…ýÄõ‹¾è‹z#0ýý#\Úó|ÿÛ¿ýÛݽîuïúýÆe;í×~mé7ó7û{оþçÿüŸÝýîÿÉý¤ù°€Œp�@<ãPÑÒGýÉÏýÜÏõ¿‘/ž'ûØÇ>¶—ãŸüÉŸôçÓd;$¶ÏzÖ³žÕ÷\ë7ó·FûŒwÝXù ­¢d¬T™¾»!´†§)åL=&Q¦Þõ®èëcÖ‡=ìa}ýb²O]ˆ‰¾š•*üà‡º_üÅ_ìǰäÅ]¢¶1qdÒOß‹R%ÛûýüÏÿürM]¥e+¨©tï•öƒŠò÷*¶ÖÙ©´1ÆM‰„D½ù½ßû½þÏw¯xÅ+º'?ùɽLYÅóŽ6É÷(5‘72yÍk^Ûý»÷ÍýeÞ͜ʶ *ߺ>ÌûnclmÕàU¦ Nu¬°º^VÈn-1xÀho1Ξ\¬"Íõ!‘¨bøˆ>d»BÊÃëñãÇFÎ +ƒÌF—è+GùhUeU£îUbì«çµýGÝ›ulL\j¾ëØ9ro}Õ°ÔöQõ:mß1åô1õ]5ºæ˜úwÎaÌ5RddÃÔ©S[½±Gžù| §¦E0D!GÄÀPšmE†­j¶ûm60æ&ÂC-ßak˜#]k ­õ~c¶Ù¯ž97:ê�°K¥l¦ê­Ñ5y«²«eÚTkCt5˜ÖºXË*õ©uš‰ÑµÞ«2eT†Ü«Ê§M§”±9&2¬TYÔºÙʸ:U iÚl­ ¦§÷ÚêÙ¡:oÕ¹Ck°Ïw9&ѳ £O·«ökäÚÛqDèv¯›7Æ¢¡°£FU¤2U^µM¦nóU­ýFu"€ê\ßö3mŸÖ>CÚzÞ¿xnÏÆõ}ÎvÇ–õ9s>ÒrÉñKºy·r0 UÖSã°Ú×Ìçóå65߈gÊDuÀ€BŸqäè‘>-ÕQ¤æyªŸ_üÕÅ™gØ6bl´¯é©ÔöÕnA²¬ ÛÙneìÀЖk•ù©¼ÍJ” Ô÷”gë8Ô×çÅ¿­íÕ¢£ú̪·r®Æ¼úüÎïSN€[[íV\%RòÛ·çêÙ¤ŸiŸ—Òo©²9vühëK}¦÷i^üýI-³DZ®[¨ôéîä°rõèø²ˆ }ÁóŸÿü^_pÕUWu/xÁ z][ôÌo‰âŒ¾�C.úæ(Ñ|èCoêçÃ\›¹2óê=ó»ßú­ßêïží0ê è÷¯¼òÊ^èűð쎾€öK¾Ð£°à�:ôÏøŒÏè^ò’—ôFtdŠ~5c,~g¾Ì<›ù6×å¹µ®@ìÇÔsåúRŸ½{ÍïåJ>ÈùeÎËêæ¹ä‹|faÛ“ÕW}U/‹ŸýÙŸí+è©/䟹0ºêúæÌ·¿ýíz*ѨOÈý9ÏyN÷‘ë>²cð25ï{?_/$ó=i¡ І0Ü£çÞO_€.§ ¢¥FƒNå0ê öƒzŽÍ…|`‹<_Ûl×ú½@]dÔ×ê\\ã¿ý·ÿ6r°¨ÛéÄΔ(lçúñ,"Ž-éÆÄEã`ÁïÈè¬)` TvY"#¤$,?çÑ)e@CÜmàÈÀ>•—kÆ1ƒÊÄÃ3F`Þ¹OVäçº1Œr­x©Ç¹�E2 y&tœt”¤½†&åÇLêŽ/¶— ¬,å¾YÙv|±UIŒî¤7Û7$/Ùªß1@FC:¸?¯ë„—kÄhÍñYÁNžÉS ÿ¼s^ Þt~¹nÊ$ d‡˹F‡jH…(/‘'ùçqF@®<¬cŽ!8+ì³åBœ6È_D5rG”7|Çq”aÝò!†ùLì00xä¡Ï±ÜŸr‰,ø Ü'òJ}a cn¢)Ôh*9‡W¶à¨ ªçã0AÞ€�i' ‰Þ‘²‡ºÊž4pí”G¶ÍH™äÁAú² ùʵø›ßó`¦¬1<‘®Ÿýæxð{¶á…Üq(à‡éLù'ÂF¶„ÉÊl7Â5#‹8ÏŽ(D¹nÎ%¤…¾¡–d’€ƒ:Â�/‘c²}K"KvÎ ˜´Ë”GÂõ(ƒ„Ää:È£¶Àý¨ŸäzË`0Ž ‰TB²-òçZ܇tÔhÈ£:àP–Ù¢‡t'®SË1}M¶2©Ñyit¤ßJ½Êöã¹N"gä|^ô‰¸’ö›Hu žúÁ9üÎ}¸_¶>É6;)sò„/icàHùe Ô»œÇäOÞ(RH3×NÛª“ƒ¬ˆ¤ ¸e‚¼âP’ÈÙN(_È?Ó8Q¦é3S7¸÷Š#PUœnö ÀÙH{MÂå³—$eV_³ƒ±÷í‘û%—ܤ{÷?¾§÷†¦ 1™¥£óœ /e  –޶…œzŒ"€gÈ—~é—ô}#“6dÁ؆~•º³×zõ«_ݯJ&Ãl­1µmÛA„>‹ñù`K^Q äYM_¢à_þËÙ}Ú§}ZÉâþèúg#}N—ÿê_ý«~bœ•ÈŽßè˹>ýÇÇ~ìǬ ;Û»CK×ITÅvk”½>T…H½F®½2dÍ—}Ð?â4AþègYEAÿJÝa|ʳˆPY¡C]ú¥_ú¥^±£!uE}'}.u„>öéOz_Ÿc-äÄ1<{÷²%Í”1±¾3Ù J„ ПÎJŒRäˆ åÇ‹vê 8ä—ºB]B¬¾aœ£ÏŒ§>õ©}»Jı‡<ä!ý¸åIêR¢¯¡Ø¤ £ÚÁ‹èQ¦ù 1h@»b¿R ŠU±X­1¨Fé0Ôµa%a]ù:vtu!髆ò0Û- ò9y‰ÑŒgýÉ“³¥ò°>7›ßl×jéViYWºÖÏÉWäP ;ÕxYûª„ pÆNÙ5ôh•K-Ÿê@±—á±5ÊV#iÊ¡UÈæs]½[ fõž¼gQ�ý c­Ì×Z£;ƒ1,Ʊ±Ñx¼’ ¹o.û»!ÿ[ý 'NžèçŠnàh¿ªxscsT/«¡¯]!6r�Ú^}W*)‹¶ÎvMý¨õ¸Ê¼Ê·¦±­SÆìå8fQï©ÏŒ"ãÜ?ÇÔgR5X®ä8^Ežë¶ újàœZÙæ+ó®)£f­“m4‡Ü3Hãçmm“Cîázã>èÔ©A¯P±â˜F®™ö5U78¦­Ï™+Ô- r^í'"ûä¯?v{¾ŒDPÇ­Ü{‡³n{$§Z^Užù½Ü“ŽzŸz<¤?®åÚêßjyUxòS©ŽC$˜Áq$r_Þ{ÞäµÑ_ks4ï̼/Û†´©³1n%U†5_¹vô'Oìû*»ãÇŽPT™ò5;ÍÕ6ÛOoŒ »n:BPêOm“ã=½ãΑÍñö3Õcª¯Ïø**µ>¦N.#E~èÚþòبž¶Ï„ö^‘G>·ÏÊQŸØíîgÚ±B½Wßwä·ó´"jtÝ.'—ÚfÚÏËûñLØç¿–]ígò7õâ䉓#Ǩԧ©~ƒ¤Æ×áyVûæ iTjðõ<{˜c / î± º=ôŒÌÿÅ¿ø}þЃE_ðð½.²ê ˜£`¿ ¾3gÄ)£ê ÐE0„è/@?À\c62c®:<ç}ó¸OÿôOïùÈGör`·Ît Ì—±/0'FžÌ³€‘¾�yr½Ýêw•ý~»!Ôþ¶Ž_¡:ÌsÚ¯}âwôE/ëu�Ô tÙ_ø…_Øç}*º”8P—~îY?×›±Bò®€zÁB Æ¡?þã?ÞËã˜#/æÕ”Á]îrÕΜùA»ò=%‡½Úéùe<ÆV‚.u¤ê ˆ„Rõè¨ð°—mŒÓnqèùÕ_ýÕC§/˜"öØ-¢§?Ô¹}aÆ‹•,Êö³Ÿ½çu¨«èuÖ‘Eû!÷Êý[Çíósêuì̶˜¾x¸h,0ÖÒ!Р¨pY=°rtÒYa¨pT¼ö2™ÅIGN'ƒzVýsŠ:÷¬JF9ÇŒº²ŸtäþYb=1B ÝB…¤3äá@GIcIŠ“E&Ü:cÈ'ÝéXpò £äÍ`'«ûbDåÁ”m’à~ UŸ­;â Æµ#‹ªÔCæ\È_œGøžÆÍy‘çR6ÈŽ4TG®Ÿ¤ƒNy$l?ç0XCÎt˜U†|DZ”Y Rþ\'É?÷bCZ³Ò?×ãêE¶A oÙ®"ò¥LÖ;䙼aLÀ¡�¯2VrLŒöq؈BÒ•-]¢8Éä ™¥>’ä˜2C®¤¥v^™°#+Ž…DvHáZüÆõ“GÊï8¶î“£8çǨΠ7ÛÉd«”)'$^YAû¼×½îÕçƒeÜ”#÷¤®ówœ tÖè)·lI’­L’¶ ëƒ$¿Ñf![¤P/²=L"Çd{>Ón(K AçS7(ÒU·Í \£T©N75 QÌrOŽ¡~"ÓD0H˜¸8A¾È™4§ÝE1ç&ªJ¥|V‡ˆÒ$+F¸.ÓùžëÐg¤íE‰`B~)CÒÖ+~NYU‘ÁL¢Ç@‹Ú~úÜ8q eR6b(Š#ßÇ!„tÄi£®fB†‰F”¿©s k>Þãl•¨*ÙV†vƒÜy¥oÇØ•¨¤—ëRž\7Ñ5âÄ}³ÝOê#òÊ}j¢XB…{#GÒEþs­aÛ£ã“J"9˜ÌŠQkú÷?V+§×s> ­Qß?ðv¸æƒ}ä¬D‡b»¢ DY—gUœéh#QZÒ/ó™þe¹Zo>¬"æ¹ùyŸ÷yý˜8Ÿ•È"ã´ÃeF~x^ñÜ'¿</}m›>™ãèO9-QÁ8'‘m€ßøþ»¾ë»–2F–l¡²4ŠÌç]z½>ûªñ¡}&^¿|îvÞÈ}汃ç9Ê"x1‰§_EÑ<â›-ÜÒ's]>Ë·|Ë2ÝÈeA&ËqÌs˜¾õ[¿õ[—«Ó§Æ$IWÍÓ(‹}å/ˆò¤è.H7r!„,«khK(?Äù9ðÝ0¶KÈà@˜tlÁó˜Ç<f¹JŠgÑAeJ X_uå2Tcs5 †–ñV�¹^;oˆ±ƒZuª*΋cs]qžñ^ 5Ý´dœÒþ–q@Æ6_%j¾rn[O«Œ–{º÷ßoŒ”ôÕ9¢wz¶{cqísªò¨Ê¯5–E~)£j(mWMg~™Öò^†7»!2DÊj¸Ö »U¹¦ŒZ#׉óy¢„!£AÖÝd\åwU¯Vò"SàL1ÜgkY7rìæ&‹†ó•Í‘Û:œ2¬ÁüŽaŽà1"¦œê9Õ <vÀG/¨çÔôäø:¦®}|­ãÕ8Ù–YæuËèrïÔá)§ \¿¦/ù®mlªŸžªC\3Ñb구ë½bðŽñ²u,©òä¼¹pÌId¶¡ØZÔy­"\9¯ê Ú2o˲–i! }PæRü]ÓsN[^£ºÞªrÝzŸáo" Ìw5r¯ºr?ýKʵ֭ܧ¶å¶Ì"ÛÞñ`½kªîæ:¹_¶X¶›íñÖ%<ßãÔ†ż+Îb[C¤™!M«12Í6°ÙÆ”ëfÏÆ„óXdçˆ:̳$ýЪ>·Ö‰œÚþ¢uÚÛ«E¶mË3b¨ßcYÕ¾¥öËçg7 S67§»Y7Žb“²oÇVµ}¥?kˇߒ÷,àá=ÛhŽŸã-¿BêwÚWÍS•ëî>¾å{Ê©§:Ôv’üå˜ú ȹ«~­ë2ÐkïQëíÒéfQ?Èϰô‘aŒ2ÇñâÔdx6mtÙæ,íI½ÁAæ°ë Ð[ñüù„Oø„e½%t=zÝ´ýèʨÇè ˜£Mé êA‰t‰¾�ƒ10GÄùüpê fýœ &Ž"ä ÝúÊ“çxòŒN”÷ؔ賭qµEÿÍßüÍK;sBrÔçDufØ«˜zîœ<×±d}VÔ>Ïè ßô¦7÷ È Ÿø‡¸/ç,V$ÿ±£õš»!ZóSžò”ez9Ž¡è Ðóžèßèd¢_‰Nöò›^6™×³%ƒ³Î¬[FƒòÃ6<¿ó;¿Óסª/8qb¬/ˆŽýr"š#?®A;Lú‚½ˆ 4‹Ãë˜÷|E°È9‹ÒÏ”¢‡Š‡kÐß^ˆ:Œî9 ‹:ßò?(\4Qž$´+Þ;qÈê v`‹Á ãñÊ+¯ì¯‘èëxÏJuÎ¥âd¥sœ6ò°ˆAšŽ c#†ävò5 tÒBX}ÇC!¡ôcÈÅèG‡‘(Ü‹t¢��é§s¤“Å0ɪA þ48~c@DúêŠù<|³Å@ !¼Hs¢ƒÄIïãµ/1R5df5y¶ÃÖ| »L@Û‰xV~snäLšø§Ê‹<òðŒ§eƒ}&X©Q`&uŒì¦H箋q$Ž\‡W îôámË9q®È<rò@Z97Êêù‹—YUŽd02¬p^¼â$AýâZœ/ÞÔ[ÎåÁIÚãXCp"'PÖQt”I%õšt‘vÎOH8dNyð¢L¹W¶m!]¤1çÈ™¿å�' VŸâ”-L¶V•*õaê~œ�Ès¢p~"˜ÐðÀMt‰L´ãhg*¼`‘ÙÞð†þzŸó9ŸÓ·ÅVÑ…PVuWÒG£ç³åL A¤ƒrLdà8®‘­NxQ?£|À`ByGÙQdõ!K2Eþ Gù#÷8kÔh9ƒW8é!Ü1¸i£nS¦¼Õ&õ([w¤<’Ž8Cpoê#é&½ÙN%m½:pŒª|FÆÕë’òˆ³y‰B+ŽrÕ1¬®@Œœè(ÃD/Id–Dm©m,{¨“\;«h¸í' ‚ù"N.Õ‰¥*dâ ƒüRŸ¸&õ‰¼d{©ºUPÊŸ2£¼2 ‰P¿BíÚ-´Cú»Ég™\Xêuês¾ëºqd–ÍM´%[½²þ† ¬o(´Ñ‡>ô¡ýŠÛŸ~Æ3ûULܨÓ8~Òï³*ž¾í Ox®¼Ž# !¡Béß©ßL„3¡£mÐ>ó°¥ß"lÞÂú<ëe# �ôí8X0�ú6Ú4_úIò‹,qü¢AF|&Ú}%òä7ö—eÜF‚³2Ê8àïvž1w¸ã°*«"cªÞÝ \ÎÆ+ÿ U–Ôß’6únBS¥äS>åSú¾È3raß]äFH”œxxþ³B‡\ƒcÈ»ò%ïÈ ¹¢°¢ïäzŒŸ©ÇSùØË0·4"\€Éh”¦I °•ʯüʯôc÷óoþM߆â¬G>YéÄŠžS(Q/§¬xf¡ÈC~qt¡^~çw~çrK¾ƒF-ƒjlÌwÓUðÊÐYÏÛ ƒçÊ([ SÕøšëNÕ8ç{®Õ®ÏX-m!ί­²²R7çÕ9[îG¡°Ê!ïq"H¾ZãYuŸrx¨í·Ê½c‡¼môò«Æ¥Deˆ ë½5ØWClÒ˜|LpkLú¦ a5½ ÕòÉ|&2ªQ'"ÿkwÆSÈy0 ÛåôQëÌjŒYû½­¥°Ö¡¡n98 F·ÕÖ+SŽ6ÕPØ–/¢iÔ±w­Ïµ|ãÐÒËýÔʹ¥Ûë8çÕ{WgžÚ>ªÃOæ@1RçïÌ«ùŽù¯ÌCZƒ`ãÕèµ~T£c­+Éój‹—SM™u»dÙÖ…*¿ä?F¢6ÒBÚx®³Š‚31ãt“ùz®›¹ÚææÑe®¹=ŠTÑ7"¯Z^õ÷äƒzW·XˆA!yK}Œ #Çþ÷nÕ·ö÷Z¶õÆ(ÝÍ'ë[uIº†(¡§ŽHã­jôˆ|—¶šúYóZû²ä©¦#2ê£L¯Ù8zW#ÄaYßJ9öùíê¶AµŒú´D$Œk¯e{Œ›G6G8xQ&uîž­Gù>ýmt—œ_# D6S‘!ªS Ç¥V‡§z~ÛâÜŸ´¦<¶¶·—ýU×­ôP5ŠFÒsj§înù$ µn¤Ÿ¯ýJ¾Ë‚´Ú6£kÊ6­‰âšm@ÛMíü£Õ¡å^µÿ¨úµê S£ÓÔ:;§í+kú—c‚:4ÛXõÝ›“ŽicY¬Rn²H¢cÕ¾/‹eZǘÞ!hcµµHÒV_r0¸XôÔ¹ŸþéŸîõeD `îÁü=Û€2߸НøŠÑ¹µ.V}ÁÛÞö—Ëqè ¨çè,¹Û?r?掇S_0èûY\Â\ #ºcòN9¢;@/Md8 ;æÄè¨ÑÁÜâ7ïçºèIáw¿G/tžœKd œóãx‰ž!ºÍÈ»u<¬u¨Î«Îuüž÷v¼x6² º�æ¿Dõ$­ä = õ™ ô"l/C„b¶aEÏDž‘[ª@}žæ¨'l#‚N¹p½?øAÝ#õˆ=ÓP©ÏV"žüò/ÿr¯/ø†oø†e´nô´/êú(ô*<cí*åƒ|‘ÇaÑ0FûÈG®ëÚ¨ä<’÷8‰dñÂêÜ­î\’HÔÕæ±îþØp~à~`Ýâ†ÀØ46ǽîw6iûæ{Ø@°ÝÒï0^>vt±M.‹tÜÙ‚�èLè0Ôa¼Â —pLvyødÛ‚(#ëªÌD:Àèˆq4Q1¨¸(Òë û:)âEǰÇýd$’ ?+Õs>÷go)`ðp{Ü£Pp”ÿ²ÂœF§ ҊѪG©Ä‹û°‚wœOÇʃ½—Ò ZþÎjõä™q-d@ç‹ñ4÷äþ5úB;ù|]"2Ðøƒ'Q¤-+™È+éã7”a®‡,87aÇbÐå>\7°µ1' YIËo\“t“gö;ãs¶Lɤ›òBæä…vŒûW·öàÆ± (yÞ+QZ9 # t@œÃïÔCù­FÆHdòË})+~C^I#eG‰ì3œ‡%õ,õ²*i㌑H%üÎ;iáÚYaÈ/iÈ*IäL=IÝN´Ê#J.Ò—‡{de/Úù¡NSÞÈ“:<©×„Æf‹œÔoÎÍ"´™Úãdƒ±œ2#mu; îƒlë½:p<†È £" ãä±BZb„ÒIýA&q¢s_®KßoÚUV×ÖvByp_ŽA†<s-þæÚäµ|9ŸòJt§¸r§^·Ñ9#ùA&¤9ý[HH5¾ã¾È1홲á=2l•² `8‡ßèW¸ß%šeƒœãH”m›¥§ê9&#Hêe…Ì9&[¢Ô~/Žt„á'/xár/Úhœ6â B½¤Lâ,'5HôP¸/Ï &4 ȹG­÷°ªd¼r5 ó8_‘ÖD§ }È)Û•PGã@Oâ´•¬„÷¾ëÝ?mnL@T˜l&%ݰjeõ|ØéS>|Mwô&·ì.$QÐ}ÜÇݽW”0ÙbŒð¥_ú¥Ýÿøÿ£û¾ïû¾¾ßý²/û²=ûÀêÚþøÿ¡7ŽÓñŠ‚ÏýÜÏí'‚l'r¯{ß«wD¤¯9ŒÎQêÒчЯÞéNw\ʃ>åû¿ÿû»û±ë#7° Ùဨžõ¬ŸëV˜ìæ9Çß{ÜãzÅÏ“G<âýs>‹°Ž¿õ[¿¹S>W÷Ÿ«q7íjÈ„|¾!Š‚á9°RXT%uháÀ8ˆðžäñÏxFß2>zÔ£µÜ² úK¶â¢O%¯ô“ÿý¿ÿ÷¾.>èAêë }õ(«¾ø‹¿¸WÌÐ_So¹F«¸œú;y»Ð}èÖù¨Ìhgä›g'»/zÑ‹–†¤^wÝGºŸÿùŸïŸ3ßôMßÔ×=ÆOyfsr¦>ëYÏêë)çñ Êrû�êŽj¹µ†o ’8Q¤®ív2ê)b1ÜUcâ”a¿£X5Žfœ£VMgmw[Å0™tÕq^Œ*\;Æ­Ü'i£¾g ŸñHÒãPþ”¤Ý¢]®¶]¨ÆÔªXY­¢¢dŽ™ºRåRÇccå̬_½\WçæÚUέñk5^VÖV¹L•wîÝÉcÈ«rŽA+ÇU'‹vœ[Ñ×f{»á:›£¹×¯!AêFÊ9Û®æU›“«–kYÅù>ÏÜÔê±4öÍvGhÇà¹×ÒÀ·8&ÎÕÕøccŽi°µÕt×>¿~—4·=1.3öåu5V‡…¬¬oœµŽ´u¶Ê7XµŽ´TçäÝF“Èýj¾kݨÆã¡¼òÚZG9¶F&äZ‡ŒŒ!êø©öQõ»ÚäœÃñ<¨Ìu5ýG¼TYÔ<.Ûýö*OµL‡H/q¢"TÌØi¡Fçiçc1Чı¢çá78cŒ£^$ï´Õô/Éûr%×í2€ç¼ºÍË2][«ñR퓾UÝ8µ\�SÓœñŸ³}j\Žmµ³è Q´¯+ô‘;ß§lj]Üîe8VÉÎçãè6µïhóš|Åi¡>‡Z'Ãä¿>›'•·ù¨ÌRÆÙb—¼`ä­Ï‡üÞË!ÎC'·–u:r<U¢/ìõlF>‰ÂEf'¶È¢ömqPH~ës¤ö!yoŸ/y¦Õ|Õ­Jj«ŽŽõÙ´lÓÛ‹>îÈXX>êöÊ©_U¯0´Åaë™ê°R˲öU¤õv·¹¼Kt9\N}ÁÇõÞè ˜Ï³-$ó·ïýÞïíç€üã»!ÓΣU_À|}´úŒãÌÑ 6}Aç#ô¼£O_EÛ'rãþÏÿ¹û¯ÿõ¿ö:È/ú¢/êmB€Ãýsžó;½Œ³¨öã?áãûÏ}îsûþ‡H‘è˜çU§¶‹Ä®ÀïqÌj©ó‡vŒYrÑ.íØ¾öõµ?®Ïhô(Ô¶ ý‰Ÿø‰^?ÊBGt¹ÌwÑ¢¡ïcËò…,Ð# _ .²+ ^°+Ìç»·r¢NQß%òÀ…È+mz2³n<öãÝ1yC,0Áq$sJ¶¡eÆ/üÂ/ôÏ–oüÆoìëv—Èžç²£fÛ"xg»øþ~ÝÁEZ¯x:¡Uª2Ÿ‹\úH7`¯ZǙօú,N]Kôý–V—…ÝדŸüä>Í u²ÀÖ{Ýÿt9ÝXÍûoüÆoômÛjÆ+§#Ïëíã rº’Ÿæo³ÓxŸíñ9¯òž×æâ»ÍæÅo7ã}gúÒ¬˜§£àÁU÷½‰¡•ŠG#¬ƒgtÍê¤%ÄðÌ0´s¬2â!ƒ)ç3P¦ñ$ ^BceuvV˜gÅ"†y~ûüÏÿüåÖµRçaÇyñ8Ë1ñª'Q^ð;÷Ϫv”Ú1ÜqRxš¢ŒÍ sdPˆ(j1 Ž y‘ž8ŠÐ!Ô 6ƒ"ÒP·üàþË}1šÆA€üFÒB'�1 cDEfW^yå("F…t$Z@$¬VöÈÌä‹{aÄáoÒ¾ç„H#i‹q—tP¶‘Í”#FyfÔ šgÉgÂXW…Ç'‚F É”a"Rd å€<¨«ÔYò•ÈmGÅu9òæØL[YÔS" Dî¼²­H¼ïHÎGÉO¹^¶u©äºÙB„ëðu Y§nVå@œT²U ×E8Xð`Œ3�reàÅ;é&}ü]äÕÉh¶ðÉCŠû%òG”u Çõ0\±º–ƒxÎá^qtˆÑi¢ÞÒÖ1‚ÄØ_¡þp]Ò,’>ÒÍ€¥®j \2¤.ÆÑ&ŠÊ&‰¤2IûÒQ·Í¤5Ž1QÐs턯ʲzN¢mÄa‰>0!¯²§éHØ5úGd™ýߦdAYdz’{Æ‘'­‚ŸrÌÞz™„ Ëv˜t$j²&,³×\uÌJ@™fE]´Uê^«¬ ä=}¿‘×Dòáœ_·"ÝOyÄs<yJÄ”´õ(Þ1iH®² üô[_÷'Ýö©ëú­BŽ/ö¦=rd³´©aнRïžÄ¶ïrvh Euò˜ý¸—JÝù¼(ÊOõ/Â_÷‘Ý?|²»ËÕÿ¼;$s<¹ÀLMZÚ Qž§ÓæÙc¹*ýW ­bºUì·Ï›vÜz¡”`{MæªR§Ò¦»x†ß7vúóKû¾—}èåìÂ3ð×~çÅݳ~ù—uª5 VG €u.T FSÆ”êðPëã Æ^õùXCµGñX¯_ÇÒ­¡êÊÙÚfr¤©P“¦ìCŸùXŽ«Î5­õ¾{Ý+´F¥j«+‹«’¨^{<V\­¬Ìئ¦¯WÏñÓ¬Œû¹f7™·PóÕʡεêqmä†ÙlHs [ƒú²]Ž#ü†b72â¸a¼'ã!AŒe­a5NSÕ0WÓÙöC)çêˆÑ˼ö]¯ÆÄ©|µrëç´ÇŽŒêb5ªVG•:·¬éÊqm;›2$W#u½VVîÇ"cö¶TÇúl©†dÈ\¦Î)k™UyT‡ð—ô'Í1˜÷e¼#çy79£DFµ>ÆáÃþ`7la3_D¸¹´ŠÒÎ%’æÙl¾ë¹Zï•tVg‡üVW~N9´$]™WÄÉ£¶å(1S‡zçÅ5j¿Öö7Dtȳ¯Î«ª3SÒQûÉ’÷Ù®~8÷«Ôèmºê6/ù>çÔgG•Ѳ>o·•"O Û]Ôû ‘zÆÇVÃy®' ŽËö¶í¶µ­Û??v|—ãX_¶ÛöVãçW×˽êL†2›õŽaÖgmÕ«Ï÷â˜z½¤Ÿt×6\åIÔêDÛµåÞ;;ÎW†¸Ô×”AÛO=OÚˆµ'Ý}:xN•èèkäÙíÞ‘aÜ7¦ük=¨÷J™Œó´{%wu©u•ߪCEúˆ5)éiŸu ”8¥dX^µÜZ§ !+ç¯Uš‡ï¾ü±ŸØÝæV7=-}Áªl»Q·ïrvP_pð©úì“'Nõó¿½æŽôñé§Výí~5wiõuîTÉÖ⛫ñÿ^Ô¾µ½V[Ìç{9t\æz•`x~©càÔ#ž©Œ‹>꣆mPbÇÁ> Ø0³psŠý¯ÿuw¶‰}—{&ryÈúÀªúýŸøÄ~‹›lD$‹8I„ýêݳŸýìÑçÏüÌÏìm­é\“>óG~äG– P¯;²{�—Ûy]³xßj^óÅûvyÍË{ûêöø¼ß{ûwËÚ'ïEÁƒÖ•[p X4:*p<3¥qVãk&HY]Ìù1¢aç{^ž1R‘¸6Æz*÷Â@Z• üM¥ç>Cd Ž11L’&k™¤% ÂilÜ+«¯³eçÇy «¢¹i¦A¶+æI÷#}÷»ßýzç�œ-p‚@©W'ˆrÏqR!¿ä£'éÁ�I:¸'d›†Dɪöº/vdÁ‹ó1¨c\æzÜ‹kdET«´á{䬳u÷ m4n  qà{ÊCt^jdòÈ=ãÀB:HO;(ïºB£NÒ¸‘'£„cQH²Àù#ʸ„FÍêu>cXîÜ- m”+e–t°¤WÒÐvš|O]DÞ”-2ÉÖ&¨9‡ïxq.é }qjÈöÈ£w âœÇ”k¶[™š,×t¤LH÷¢N‘GÒ:…,¨1´ç{<+ñÀå\ê'u›aüƱ´•Lnë³}˜&: yËÃ7ÛÖd äMx6ÊOX<@c˜Ï6”G"1^d˽(¯½<î2iŽ\ë^z¼Eú‡¬Á‚<Ó®bhϹ‰‘­s²êZ‡—ú`Ï}(“l!B:¿Åa£®ÊÁA†cqH„Ê-ÑNHi ?¢>Ðÿp<}Í”#ùö‰;Q*$Ü™ÇaƒßÈéàúŽ XKúkdÌåA” Èà¢8—kßl;’´Å%Q‹Ž3é¥òùã|ê÷§Ÿ!äOÍ8Ü¥ÆY®N̸.²D‰L“ãqþK´‘ÈâÚ¾o§¿9µT~åZ-ãÉÑxŃœ_ê¤ Ÿ{ÅsVõû/ïL¶N~¨Û<zy׳EB;Ù„j¬m©JïýúƒìIÎêPˆq!}I5f„ºâ¥M_ÆEi{å*_9žßŽ]çÛ]ê¹£Tk=ªŠ¸jȨ†‡ú}®Åa»r7ÆQŒ‡«Ü­°­Ã­/F¢ú[k˜›rÎàU/s|Ý.d¨{«UðÕ R›µ^·ÆÌzßú<Jä¸52àæØú ŠìVe±=é\UÑuìS¹IcdØÞ/i©çT’ƺr¾5$æÚ­Q¬o1„†ÐYn#zâÄÉ…‘u˜3_rÉM–õjµ¢=ub¾èãÔQ-jÄ•ô‰µNµe85·ª+Ö¦äØÚjË6¹w½~m+­ŒG÷/ó­È¾Žm7' ú9çdëÈ8G×Pó\çr­á<×Mº…£ž“ã6›hõÜÖpåþõÜä#!nÛþ„ÏÇŽ]Ò1‡sb¸¨}Ø`8Œ­sí!Cä™4¥oJÿP{êŠýÈ7¿UÃv¶#—¹^æª)Ì;©¯óÅyÕ8y$'{Y*[²Ö@ž´-· (Ñ_¦"D¶)×ÈfÊÀ\˱-³Ô×Üo™ïíU=[³½0ÐWç±ñöD¡]$!sÑk¯æØÈ:Îfü–9eä5v°¶\êå¶pÖš-ÍÚg_žSKG¤¦¬ :IõÇ5ÆýÚêóa“¥=Ì»q£¡^Í–rêeA$¢ÙØ™¯öÅ»ž ÅW«–!‹{ñª}ÝØ‘ãñù{(ð;·ºÒš†Z?jºjßT*êxcs"’K}ïÕ¯L=÷R¯ãŒ‘w3ig5M»ûæò<n÷VýâÑî£n6ëŽ/œêf{o 25.Ÿ9¸½ ¤NÕñYú‚ B}Fž:yj×sà0Ѷé•cÅî¨Oµ?uÌŸgÐÀéË£½O«/È15 Þùd¯>lO–ú|†ÔŸú=6t錽²AŽ=_iÌØ9 š÷£M6ˆú¡ê¾û»¿»·w|Ï÷|O÷ƒ?øƒ»œ,N— á\ÓcÏK`3§[ûf§ùÛì4Þg{|ÎëzE°xÍk^óÒDÈ µ¿A 30Ç@Êà£#ÇÅA!«ˆùŽÊÉñÀPPQ✱Ñxàq.äÒ%«Ï³j¿6¦¬®gŸ,î‰Q÷Ê+¯ì vÙkû`€»|1¡Àq!@Œžu…8׿œ8zdOXÒ™­8¾}hÅy„´p ŒºÔ1f㸃" È•c¸×'m\;éHg—í "Ó(!XµÏñíŠ ­kq®Hˆü¬îN™Ä0ÊßL`1òräAgT·Ÿ }‰±È5Ê,ŽMô€V¤9“®‹Q›ëÄCtdɱìO�žZ}èC—Ûqp-d9Ä& äštÔûgpC}¢\ÚU>1Dg/Ê„¦¼!Æpʱ*39pl¶ÌÉö+1\·|þÆ€ÌC«:ÝDQ–­xe¯·Dˆ!ÙB„s¸7rè½+8ã‘+éÈÖ,íƒ'0dǹ€wÒÍy‰Ž§™lUAIÔŠL^)OÎ嚤7²Æ¹‡Bás¶Í¦½d«‹ì…qªûdBÒQ·÷HûO:R朋\ÇN9ˆµé þ¥nrô)ÈžûqlœÏ"§Úß$ô$éÈw¤#Nµ¯éJ¿—hqºáÚ­,R¯² éçºÙÓ-Î YI˜ô“>Ž¥¿£®M R¦”m‘ûÝínwëûêV9>N@$ä%ýE”$ici?)—Ö™kÒ^qŠJ„~'ªí1ýWuNÊsƒ{ ~O;Ié•·;“è÷½ë/wF.ÞÉÏN›ßy[ä)¡º76V«W —ÙÄÄÊ)ç‚vÒXߣ<]­H”¹ƒ"q{©àV-ï(ìŒ5nÿq;SWûÊzZÇO˜r¤˜ÏO#Ôß|"”>~y¨×ý»&¸½Ño¶º~5ê…ý‚q[Z³ú.ùˆ£c?iŸÍ»3Q,Éé‘?û‹Ïߥ@©Ï­ô¥Su*†‘Ö£EŒ–Õ¸ÇÒzlë`±JGÿÿhõëpÜð[«(¬«s:nˆ2¢sª®c'Di4~¾ŒŽÃXw؆£Êljm5.åzSF½zÏ©(5UÞS«ƒÛs3'ªim¯ÆÀö¾Õ€ZÁSʸqY "+§’UxYŒR›½1ûØÂ ½’Ùpü|1¶V ¸"¹Ž[‡ú0´ùªç×òé£*låQëÔùä¨nÌÆýUMWæœõ^m™÷ÝÝl6ê-Y Mš¶çqŒ!0GV#y®Ã íí¶Õi/·ãÿ½êc[—òªŽCm=¬Ní³4ç27hûúŽV·Rl2öKÄŠÈ÷­ÅV››“í¬:³¤-µ‘g’¶Ú†ª³NòZ£bFo´ö×ê=>Vu¦u"XÕ¥­.[„äüe¾Ð©Ìf£¨5¢Áª]o-ô¹WÛFVrÜ•Om#q°I²¦i™òÒ- õ³é±Òî~mܧ¦¦Ú¤~¤Ì¥% RYvËúÐ:!­ú"Nì¡>õ<ªòÈ1S}HîUiÛÊ^}s•Q"½Ôôô¾þåYÔʰþ=’!õh¾x~.¢ÅÔgZ}ž¥í·s¬Á)îºÅ³nc¡áÈ®ˆ6m=ªyõ¯«-ǪŒêó3ék‰\FÎ8Öm¬œéâì³2”oŽ"w¶éjjúsÿ“§®ÕÑ~<sdÖ=êŸß±»Û]nÛG¯Úü‘}õÃõ§ ±ê Îm]V_p0IŸ†ãÜÅb¬#?LÔqx¯æÙZ›z^út•ýb¶½öžm]¯cšöúí±ç› yoÙŸÔ™<éÿx®ÝêVWô:ó,îÆ^p:QØRöl‘ñãìØ Û>¢0‘ûçû|Ɔ' l §ëdQÇùYœy¾! ±«ýê¯þêž6¬Óaà Œp0ЬRϘï1Jòa ©‰P#t"#Ð@P2cüŠSCÛhê�ž{eoÀ¬a-Æ:Œ¬tæÅ½Ù[:ÛOþ8=p_òA:b$ÇÀ‡±®F”È{õ„¦'B×¢#JÔ€xÛgxÂÜg; ŒÀšiØ8ZŒ†‰ À‹è ëä¡™¨Y¥ypòÁ=jÅD{È8bpFOÎÁ‘c²Z>+Ï‘Wä¸Ç`8%}ÈãSÆ”-×£DfH¿á ‚¬H¿ó7÷1:ÛÏp,«å¹7{w±¥Dœ+ õ y!kòÇuøLžÉ éáÒ‰¿a”ç…1—|dÕO ‰šÂ9œŸˆÔÒ] À‰À‹kƒü'ùÈ*€êu—m`_Ò'�ä@:HCʘ¼fëÒ‘íW’Ž8!pOÎKTx¸qnV~¤Žr^äÁï‰8~`œæ:×9/Î"Q„%ÝU)@y&Ôoö§£ÌS§ãxÁõê œDnˆU¶ýI(uÒׇâ](ÁÓŸðé¦]EiG@Ybì' üƹœ§…Ö±eì_Û§ƒüî™tsaEÕ±þZ‰˜Azhãä?“ól Ão‰J“9yKû# 5LuÚ|Vè sÊœë$m­‹Ò¥¾¤ïlS¦qBJ´>s>çP÷ãÌS•c©l)C¹Þ÷¾÷íï‹<¨»¤¼¤ÿÍ–4|Oß‘-|R?ãäBýFžq(‹R8«îZ§Ê“|TÏïD<yõ«_Ý—EœîâX‚œHS<=¹åAq¯!*ÈN{ïÿí¶O}¤_‘Â>®G67—J’¥¨›^¥Ò*ÌåÜPåÛ*Ê÷:>J­¥CÌæFo´ØÚÞéc?øžî&7½uç\O¦hØ0Uß2)êÖ];ýv¢$å·Ü«½fUÐïi¨; ¬Ò3•®±sÇV£T¿ 9'ìU¯Z]5d<¥]Æ&PW‚Ç1µŸz5&ÔS+_«±- ”à­â2éo 5?I{ÍW»º7NÚI;Œ ô+c.°}E{\kÊP¹Û ÇµÇÆçVþ­¢¹U˜FŽ0lW6A#rleÓÖƒ€Zãwý;å¾—A>Æïá}¾\½ŸÕÙÙºr{ζ;†©Å6 óyMãø“;çRf|ÞØe$«FPŽËÊã>RÀ|>ªS9vÊɽþÞGÎ鯽ZGbÄk•ĽqþÈÆ¤¼êýbœ®ÆVœtŽlîv~9ujç^'1¸î.û®›-|¶úÈ;×92Žp”ú]A«ÓFk[«õr6›VþW9Õ|M)ñ§Úu•)iªÑMcXž2Þ¶í<OFQ fC”Š8õ çvË6[#|TŽ,ÉïÕH\ÛvMgîWWôó™yNúzÜ2‹-Bªa/ùnëèö|åÐÝS¿ E7Ž¢Q ʹîp=—VýníCkù¶}-T‡Úÿ·Ni¹^­k«~fuýÚ&ÚgÎPncç—Ìáëöm„êqÝqØO„‚ÚVÚgÅðZ9¬Ö|e!EMwë¼–•¿m™j/«ú?DШѦžµÕ) :Ì1Ô™µr\^cc·3^Êžµ¿oëou6X9'Åe¶Œv¬ùûxYWŸoµÜëùWó?U·’†PŸEõ·ôi‰|çôqy¦¶cˆÈ±•e}®,ÛȬÛõâè‘Y÷Ñw¸EwÛ[߬_Œ±Ùo ²¡¾à€1ר/8¨¤/ºäø%;ã˜aÁçÔØ÷ 3ê7ºiGàü½×8?ÏïulzÂÞLõ7ísx~+ñÜt iû˼˜‡¼ÿý×ìØ-ÞׯÖr¾£&äù[·-?“¾mék½Ã&T#Y|çw~gÿ™ï÷K}Sœ¨/DäŠØHú1ب¸qsÑHÊ0•WŒ¥<øCXVO×Á1g;‰„»Oø|*-Æ:*MV±eÀc •«:mp>×á…£E7lÅC8[JpÎ8\é°š™F‚Q‘ësOÒ#o6ªr0|‡átÄË‹{fÇpmà8Œz1ø¦ƒ¸Ë]îÒ¯¾&ߤc4 œt‘WŒƒ éÐêʉ¤ƒ{atM˜þD ˆñ5«ÊùŽß¸'2Éö 9†´‘Fä€Ó²†ºú=+ë<i nœoE Ñ ÝÈù|Ÿm^0Zg¥Xê÷K$€7¿ùͽLÈ?û<q<êl™’¾8`HÅxšzC¾‘iêïO}!½D¹¨‘6(óÔãl-€<ê$,àV ‡¾O:" Êj:²…ò³IÈŒtD޼HO”ؤƒŽ6Iíàó8.åÂgÒB^2€K³ m"‘X¸m‡H¤9P.8-åÚ”MFS8üÍqϵïsŸûôõ=[ªP1ʧ‘?äÇõI¢~Diï\ƒ:α)3X)—ÆÞ8µÄ9‹wÚyÊ5凉lÍA¢“·Ô·¤!0|æ·DÉqUG—¤ƒ{"Ã8¤^W'œ”WÊ1Ž ©qPˆcUÊrœ€ð¹:.p,í?myÆy%Ž'ܯ}íkûôãä„L"ïÈ!í%yç»líÒ*0¸m#}>ÇFƉ¾§‘ìÎu㘗H*¼sMîÇdA=M=à|œ‚¦êÅàÔr´{ß»¯íN]÷þîØŽBò«P6,ú„ÙhÒÝ*Köú[Î/í¤¶ŸÏ–«�‡>q8¶7dÛé'¯;Ñ]ó¾ÿ»£”Üì.¹ì •&²‹jˆ™RøÜöŸëUÚj°nﵯbý4”‡“AM=z”ñÈ%½ŠìØÏ-+%ßÞNA­1"ÆŒ£âìšçì”cÂø^cƒF‰Áº±Ëˆ²ªïÝÒHŸó¦Œ5’ÅÔuª!¹žW‰ssæO­|ͽ–«Óç«ÕÎ U^êS¸aðÕö*Igísê½ZY&m+yåV–õZÕÈVߵ̒—z¿)ãlÛ7¦Ž¤,†tÍU…ùÒɽêvb§ÚêU†ú08S°@†mRG‡zš ›c9$¢Î›GöÌ[ m»ëØjŒžu7Uñ]Ë®—ãÎ}ºín4ëÇ—«ëVi[÷jT9×û Ÿ‡…ë5Íu;Ô«ÁXÜßëÔ|Wšùœ1x"ZÔ4Õ:QË=2¬FÔȱ:FM ÚçQ®_ûÔ“”SÚ[‚WëâP—ºÞ‘&×Kú"£lRÓšr­u;÷«e§ŽÔÝ*“Z?ªñ{ª¿IÈ1‰ÀÇA"O̺±1¥•—Žã—ÇôßÙ(/µ.§\[§–^†óùd¿Uåß–íªoYɵ­3­üòžÛ«-sê³ íë·¶Nöåšïâ0Â{ þüãyž3¹wú‘leÅwíëslåFßV[£W[–‹±HúœÕV/ãmcj]¬ýlë0W£3ä»¶oÍk‰b§Üîv;cäs?÷çßÖ¼—{u2™¦ÇpWŸQÕ /繎ìOž<Ñoëôá}Á©ÅÜ|ªäï*ŸzÿÚ®k;j£±lmmœŸ’®ÔáÚ³¥ž Þ›výHž“)êÖ¹©ŽS–u£[õãGvžIw¸õ%Ý}îñϺ[_qÓ>Òåéê *{}/çžÉ1Œú‚ J?‡8vt1&žO>ãÛÐm?Él¾ÁàhÒÙ6Íl´ãÓ:¾Øë˜ö;‘:/ÉçÁ¦€]ë}$ ìCS‘#ÎuºªsÅÔNëxêSŸºë»ÖÉâIOzR÷”§<¥Û+ Õ)<ãüóM]3&v1pÑ8Xd¢ƒŽJ—H ûY=Ù—Æ|NÔˆ¬²®ÆS h75€×§!Ähç ȶœ‹QíïxG¿ÒFyŒçu;‰úÀK¸›¬~s�ià~¿c„æ=ß‘?ÒçÎá ÂÈ€cH3ùÌo‘Y´‡(1Fr ®£úßøÆþ3¿‘w^œOºÉ;Ÿc„&q<È6gc„®_Ób˜%í1ӉƉ%Ñ C-² ÷¤Ó%¹ff¸f"xPG(ól‹0åy•Ž燿ú«¿êË#œDeƒ2Íýñ€cÆåLV9.Qâ¸Á÷Ù…2¬‘9B?ÐY8ÉðÎqÜ/ù‰Qœ%8.ùä·lÕç’„5â•- b@'¿‰|ÒÖ®›èä4PŸâØ”t¤\rMdB}%Ôœ›è�5² ÷åZÔ)ƒ8×ÌÖÔ îŸ-G(Ó×½îu}›ÃÙ‚óã Ayýë_ß·I"Üã÷è¯M~cÏ~^QNðYpê tÄé©:h$Jiâü”IäAž©O¼Ç9+Q]²"#Î)÷l+ÒFH:¨”kú«8$p}Ÿ“ŽиW¢:¤ÿȾ¿)Ò‘è-Ü‹úé'«¢/ý#çS¯³/ZúC>ÇQ-²È€›4#/~£Ì²—-ç¥nñŠ“ÎN䃭](›ªä‰óe@þr_^‰*“r«ÎqŒ"¿\ƒv›vžWÔ¢ØBÔ¡8«E\G5úûôK´1ú,Îa{!Ò•èé#0n¼ÿ½ß½ëïþÏŽÊíT¿šrP–l–ÕN ÅW7VE‰’ÏraXM(ûO£ï»…"meàV£dœ²½£(|ß?¾³»ÅŽrå&—ßR¥‰ì¢*Ì÷jçÕp“söW^Ĉ¸2Ò¥/áz‚ij2|P˜RæL}fu“öM†•¬ý:ã¹¥:0´NÕØPW?gµuš–í §3­1®W‡Õ] Î9~Õ¯"´ù¨÷…ºÊ8Ÿ«AgÊÈÅߌ…{D‰Q·‰Lzsl5�æ^5ÕWÓ¹´Æ¨ý”FÕXÜ:äüjØk©sßjˆ]'ÇÖèWÒ©Ê5NÎUnÆ ${˜‡v‹mÚP]·3¶;Þ·M¨Q=ªño¾üneÃbº’Ç”SK•cÍW5Vb ÜÞÚÞed¯rÜœmNÊ(naÕé¦-ë)ÇŒ uõ|d™×²-%ºt*iƒm]„Œ½ë¶!™³´õ¡^oê¹Wõ;¹Wë”|·é\/+ÍkŸ1Õäó Ÿ±3ÄpüÊùfX…OÙ^–çò\©N.5_5­Õ0ÑÖÑskc¼uG½ö°’}è3"ëȤÔ2ß¿u®Ê*ø®ßÒ¡Oì2mšá~ã y¯õ¿ÿ¾9²°d<¿=Ò QQ¶w9ÿ´u$å[ûèeÿ²(Zæ)·Z²}PêdúÔêp³WÙEf‰¸xjá—$yVå^Ý"=D|™ÍÇϘZ§zGWòßU'‹n9Ϩý{íSNUFÉ¿Åq¥ö9½·¶Fm©ÖÇÜ3[ËÔr¨u�#\ú­JíÛøwjëÔ®>°ß~(í­¯zC?ئu ýÉÉ]N-“Ž=‹:Bú7t¤³5Öö8ª;mÒœ•£õùÕÖÚ×Vg—ÚNSçæóñ³´­_£~{c1‘+îtÛK»ÜûNÝ?»Í-‡lê )ë™ú‚Á¨/Ÿ­€ÑÞ™è°0rÊš;¶6¨|—~5bÙ/[ž ûqìwd?ÚyN>37cL[#í²ÞÐŽ³Ú¿ÏäÞm¦Ä1<Ž íüùú‚­ŒíAžüä'/û›zÿ¼ÇF ËŒ}»ëÆN¥gÊ” Útd>ÇåŒw[¹_ˆè’‹ÆÁ¢vÔvŒÛ"³uEVvg5:¿q,•£d…àbt¤ctÃ@–0€üžˆS‡k†(È0èb NÄ„D`ˆQžtÅà:ÆNà¸<I«·óÀÏJò62dpÀ11\Æá"†ÇK¹~VÊcôË–\'FPÎÅÙ€m8—ã0ŠÆH;¥$Šž˜rÁÐH"£Ë9ž{!oHxý(?ªá•´dE=òH$ê\‘÷LºΆsI|óŽ"'àÚ8•õ€h”c¢hdeY¶îÈÖ|G>É£Öê ”é#œÇ5²¥çFöÙâ€ü’? ºÙÎüD–¤¥¶òLÙðªàD!¿üM;à\7GYŇ @n¨9žü‘–¬²KÍ ©ƒ‘õ”W­Ù6éHä”SŒãqäHH¿‘_®ù±û±ý5âtÄoD>¡ŽrlÁCy>àè+êjÀ8­pOä¹Q>Ä!鸤„¢ÌC‡ Ò…A=Æýä³EQ¶À! ä“ö#~êF¢îÐF&Q"þæ÷jHȃ.‘蛸VêFœ•©"'Ü#N@©§ÙC6òˆ³ç÷J¹Å–GIg넬¹.åAÙp¯l}†D¥HF¾|ÇñqT¨Û®Χ¯ÀI†´âÀÀoôm;«Ê®'›¤#õ$BbÄ ý¥Í$ I¢¸Ä؇¡8[Ä'«Âê‚ßò¼A.Èšë“òÂÖ=ô¥´ÿ+ny‹î²Kf݇®y×NÅ:±T–D›• í ®~žÏ–[#%]£È ?Å@ròT÷þ÷üõŽBñäŽÒ䣺å2T¹ÑÓ*{¡*Nª¢=œŽB$†“?8¬”,U)Ü*iZƒN5®\ÊéÞsHï d^ެŒSy•sG«ü¯†…ºj”}¨g³ÕXº²Ú¸ GF¶ºEÃÍ Žª’±-û)ƒm»r>×HƉÃêÃÖÈÒ¶¡Ü3†¡íÞ 4[nø­*ugöÇUFk¼™’q5 NÍ×ÚÑ•j°káSm¥U¬V£]»J½ÞÊñ ÷« œªðªåÎWWÖà<±µµ½«nä^5ò%×Ì•d¾xñ÷vo ܘm, Ÿ«yøN>çCDj[ùŒÇn+‡—VvaäÔ2Û…àÏï#Ùmt#™M9yTýIû[vU'RëUujÈçÙÆ¸®Ãj˘¶¬"Í0G„Ú®##¨‘jÌ1\§•WMW ß_ëaî•v×ö9õYG•cÏöò92Üvxždû™ü^Ûv½O•OëUe¶—SKû][—[Åf $âë©#;ÆèE_yTÃü²Lgc£þ”Ѥ5æÎ›m¤ŒWE–[Ũ_ŸÙ^§OK¹WÛÔ¾¹•É Çr<ˆÛØà¶@Z¶–uää¨_Ë–‰"÷¨õ£OëÂPŸ>;ÛSfÞÉçÖ©¿¦1´ùK?YHjÑÎ w9šôy÷§mŸ\ëÇìÔêùVÕøuÖ Ñ©Mõ©ãr·Û#³#ËkTy$JEßõ«|Õ:—>ŠˆC½SÓÂ9²½huÄ[>»·‡(8„õ}érûŒå˜°}ÕH‘oƒD¯VïÕ×¥íù.ç Z—ò}»mHÛÆ’ÆçÇlts§›v÷¹Çí»ÛÝö–}äËÁ0zúú‚Z>rpP_páÉs=}Æ“‡i>Xû»öYÙŽ£ê8nÖ÷ãgKέ×Zwï6ís§¿×lìàq¾åkÿwp™š—Ôñºÿ,úœr,hË–Ï™gìG[w+uŽÛ\u4nïGúêö%ØE°éìiüÖoýÖågúì«…˜ó]cïš>ìØb_¼¡ì5¯¯rˆÃ)¶¢©²h¿kY÷ûaã¢q°ÈÀ7Ûv0‘‰¡3+"2¡Ìô²ON1Ê·ƒÿ„Æçø84`|‹¡J‡46Œ³/ùËû´|â'~boüåúÀÀ?†ðl³�Q$rEU.dÐNZHs ®Ãc„å{>'ê�/®ùÎw¾³O7÷'ŸY±C:W;r?ŽŒ¿86ÔIç“6Îåï·½ím½Ã÷Àéƒ|ãrÕUWõ¿ç¡™­²’ã/åG Ò)3Ž%O›(!+M²Â2Û@äÃ{¶~I'”-D9çÆèšÕ È!Ñ>â�Â6|¦ ï}ï{÷ù<¸vŒî”)Föì—„<¹²®å |—†‘sòg~ËÖÈ$[pl¶Á _™@ƈ›tðžtÆ‘&Ž!3[…&ÚL¶IHÄ�îI™e{„8$‘äW˜‘é 89Ô‡YœCª£DUÀÄ9#42£\ªƒBòIzÇGIG" $r�ÇàdñêW¿ºo+Ü—¼D1Ò*¡ó@¤ÞDZ'‘ ¸'/ä|Æéˆ|Ò‰ïÓÆ"7Ê•òãÁ“ˆ"ñž"J¿liB¾éøœ(Ù¶yÄq ys_ÚL®A"0©QhÖ–í &‹(‡³Íp¿8[%Ÿ¤#N,œ“­L¸Nœ¸¢œHÿWï—öØöí¤5QJpZã:÷¼ç=—)hïµ\ÒçSgH'éŠ#\êhÚ<é@‰HÁ1ÛngÂßÃöÃÊ$Ê…ãS—r/®“è›èȉûÆ! ('ÊãÚk?Ô½û]×½ÿÝÕm]z¬_•räø±~¥ÌjÕÕD§ûÙ5 Í=ÆPÛ å 35 žÅq|Y(»AY˜ßÃË 4éËw§Ì S~í5;ýøÞÓÝòÖw쎻lò>rãc0¨F±\Z¾[ý>¬°Þ÷£ïë6ÃÞ@4_•0nòâ"Ï«\vªÿ™oNP‰Í´ÿc{¡dßn~´í}¶k¾{óäÂ~=ï®Ûy¶÷ýgoÌœqùùè‘á¸YoèY0V›m,VÑ÷˲ íÛ|3¹_…·íûÐÅ}¶çÆÁJ¼l`œ·±Lå|¸Ïâ»Á°¶ÕÿÖ§aaÈÛ\\¢›—ªEv>äx~çê›ýêða ílѦ7c<ß G0Ž÷Žä'z¥ûàØºsÌæÂ0Ô-ÎÉ–ÛÛËkFF\®wØÌ*u®½ÝË2y絸ÂêY³¸>ïKÃ~¿Åö†¶·Z1ýÇR‘Ú-…1ï[½ÄÙ. Z[ƒ ÏÁ>%O³…CÉö"ý Vøt+ãfï¾¹±\¼¹±ºÆ°âzá 0K‡k&?Ýl¶xV3Þ;¶ˆ6xíBA¶QÒ1ü7[F+˜-ûºA˜ç¡nÌèóBÆÕ ßÆݪB‘>*Âlu•eå™/êøÎ\y¶{Å|5œ¯œ–v;ÒlÙìâ4ï÷ò8„§ŒÝÃ?>uycs6i´ÍýFy[P>ò‘ïƒÂrµíæJœ»Ý-Ûͬˆ£/D6láƒCôB ˆ~e>ô#Çw ‘ÝlœÎÞœ¼ˆ$B›¥ðJPo†•è6½~;Fßn5_˜»EÕ m¹ð®RÎ}¤yj0hoÆigá¸ÓûÆàÀ1éóNe%„0O[ÛÚ.Jé­þ“vqlÇ.·£=‰S SŽõõ}cQ7gƒ }iô¥~lu£ò¬N�Ñ_åûy‰Ö1Ô­ù¢ŽŒ£+´Æ•ÖÙªÖ‘è ªSOk ®õ¬þVôר8ÕͶ‡ˆ×-ÜäÚý<oóèâS”ô}ñ¥~¬ÚáàоxŽ,ú»ÍÁÀ½¹XqN˜uúí>Ré©ëºË.½l¨cè÷z]NdÅùöÒqn¶0±¦þg>1´Þ¶ÎFíe»ß6(²œ-t5CÚ†vÒ-®¹jCCíeØ^´íú]·8g¡èŸÏ†mCf+G˜‘ü¶g´-ž7‹z›(]1äê<ËpÀéý^Þ±l¶ì€s¿®ÞîèLŽôƒƒn Ý" ~N\×;ÎÐæ7— †»oô nkÑžP›«ÎŸ76zY°ýHÆ }rÉñcc‹~¬yÏ­T—¡M4ýHŸÜù¬‹çC—=Ô‡nè¶m…ÓzÝVyrð­n¾ÑÝïîØÝî¶7ï>j±-iO䊪7ÈcJ_С46ž?ÔLÆóåÙ0ö駃£Ç³>mbþºš˜t“óûÅ\x¾ŒÄvzú„áYSë÷|yÎ.ù.+êõÏ'¶ÃÁjVu³›]¾\Ì}¦LEªÝ¥qô©Î¢~9 ¾§æ:ÏØGïz×».¿ûú¯ÿúî™Ï|æÈþÑÞ»þÍx”HÝ5ÝuŒ[m´ùœE³¯yÍk–6ÝëË”ªza“l"S¶­ê˜>ÅÅ6ö¸h,0^e4ïÙÚ"?Ëà0ªaìäØñ„d÷ê‡DÄÈJo®( ¹'ïÕ0Ⱦýíoï^õªWõi Ï+« aécŒÄ)!ÓTÔ©Q¶ÀˆÊù#I éÂÀÈ÷¤£†¶ç{~ç¸h×àXÒL:èBŒ®{­€Ê>ƒ\“í2¸÷§1ãtñŠW¼¢_]ž¨ü'Ž8Äq% %ùáŽÂ‡ßêJ–6YQÙs|¢@àðÁµ0–bÈ ȈsÛ(ÕÎ1¬.g› >“«®ºj´5CêK+“lk‘mL0 ‰9¤ ø.òHôέŽ9Ÿ<Ä`#v"Ô´¤“å<®Kþxå:YåÏýb$&´äÒ¯ ß9>׎LãX€zccØ7¹áˆ1µçSBaÆ)(Ž=©§¬ÖSIVr ;îA9–v–¨|N4Úé�äƒuA!Qr =”aœŸˆ‚ÀCWœ"8–rA.ȇ‰ºh>'eŠìâ¼…\kýHLVÆñ¹R¶ä›<$CÚh_²muŠkWÎå¹F1Õ¦#Ü” ×Ë$ ñ™¶Âµ¨»Ô±*O~Ïõ¹vúÕ8JÄ©-QC¢#½¤£¶ÝDxàþÜ;ŽF‘Wê"yä÷´}ŽC8Wð~Ÿûܧï_R¸^¶…âzuE÷Ëv$‘GVÈ‘Ï8cp~®G#?”K¢·$Ü‹>&Ñaâ0‘2It¢<wR.‰Ð“Õ(±.ÙQºúÈÉî]ïy{w:ß~ÏÖ#ËU(Ãó`s¤”Ühó(½VJF•$ç—ým¹,Ûå|X!ÀÄ5Š0ÊeÞÆ©¡î°zìäÉwïùû¿ØQÊnw·ýgWuÇ.¹Y¿çj˜Ê‘j´·ûï3ºäÙ;ç°uC³]Lühßzn˜7ʾnéDNËYpa¤„(¤ëêû)åɹ`¶¦ždN8V¬¯¿Û¯*Þ:µÔ- –ÇÌw¯ ž2¢L)öÍS£Dª†óz¯©÷½˜2ì‡võ\V[x †Æ8Ô†Ö`»×{]AGëå*ç’†Œ=#›Ë.;¿{ý®£ÕW´ï—ÖuåVëÉ^rœZi="¿ÖÉ•£ðîm2.½tpªæ±³Ñ\„bÎyIÒZ£>¬V˜ކ\çŠùæâà]2ÙÚÞ^®î¯òÛK8¥3ªåPç {¹´×¬u=שs•ÃÂØÑaj•éT7Û8º+íÙV¡®¾/)íj7ÑÎ=ò}Ò^ÏÆa%ý*G[n5mD‡¶®Ôt×zÕ¦-çÕ:¾Ù­Êtk{pv Ýdã&7¹dÙ$bÅH Ì™·NíÊk}¨åÖÖ““'¯ëïÓ÷';†ýè1!ýVÛ^"‡náDS¯ÙÊ©Ö\§mÓÃçaÞXûß6½m„3yVî§HßžhkSýTíË'Lƒ»X:Ö-d‘ˆªýóbg¾}“£—”ÈOÓ´éèÍ·{ç£v,rºÏZÏ¡B3E[¶äá’#'º;ÝþVÝýîyçïnvùM–Q+Ь¶´[µ—uú‚Ó}NËÙã¼ê n²£ƒÛ¶>S_pC9ìò›HÿÚf?;Óö8výy³Ùé'7>ê㉿q® †Ï„u•Öá!úÿØ/OçZ/yÉKF÷º×½º§=íi{ÿ¸Ç=nô™ÅÝ­³9c›Ø §¢E�iã¾ØMn(í³£ŽO¢‡±MqcgœnNOW…:;÷ÙŸóÚ(ïym.¾Ûl^üv3Þ_õÒç½4X7øÝKµ×95\`=¦UPÔ >$ôå~éh'û¥½_›JG\žŽ<Î$õžu"Û®b¨{µÁs•Ž)ÅE;1Ï÷û¥£†ÝËÉ£=§æñtÓ±ßuÛ‰X;QÛ+ñlkÓÑÖóÚö»ö MG­§Sé˜J÷ÙLG-Ëš†8œI:¦jp&m,õt¿s§’ÝHì×LµÙÓIÇ^çîÕ÷ ®Eˆå©ö¸W:N§ŽL)<ö{&ìÕ~÷JC®—} 7aÉ'Š~IÚðÛŽò,û§æ÷\P˜,Vމ³}•$7¦Í…ât•eQrŒ¨]Ë«•y(M†>kZ|G±»Õ¯jÜìNœÄÀ´Øc~eô´ç³ˆÈaàĉ“Ýu'v¯´8×ϯ ÙUNem¾üoƒ7Ê~âY­;=Ö¯I»PäÎÕØ»ÊÝéT‘V®9gùýlïüµs9NÇ$šãº]Ç2?½²m™ÿîrÞËmÝýækÎÛ¯õÎ÷8çLïUŽ˜Ÿ‰cvæõü}Žžµ÷šþ¾ÿmùßÞÇL]ëtŸ»{Îwî™—ü‡¨ü7ß¿´f£+MüVšÝ|¿óÓÿA¹íyÑÉ“»ëÉÙ-ƒ¡Œ:¿¾“?ÃëÏW5nHýدÜöb˜Û/"Ní¼ŽÝì#q\rüh]¨7²/¢VÔ­A†s§+¦ô>ÓÎ/çS_À˜úÔ©-õ"rQq}Ÿ[ßóýÿ_wC¨6ÄÓgóÿäÓº»ÞíêÓ:þÑzÈèóƒüÐ}íÈûÁsáOþøEݹ`«Ï§õòý|ß·u×¶xƒ{Êg< B^³xßj^óÅûvyÍË{ûêöø¼ß{ûwËÚ‡æEÁâ²KÏó­SׯŠˆˆœ+¢ÜGŽ) Ž#KÇŠ(B¢,)FºÝ “z}¹0´ŽJS¿ÌãѪXÍ*k¾ß•÷ÆÆ 0¡^lÙîÃW_zôøÎ8çÈÈ™§*d‚J94\zI'"""rcf}Á°#:‚,¾¨:Ù¬Û¥+PGp08Ÿú‚ËŽ^Ò;[¨/é®·³Âõ…¾õÿ÷Ô§tßûÔ<-'‹6}mÔ­¿èûžÿ‡>|ùwÌx¾¸ì&Ç»ëÃæ‘£ÝÅÄEã`qlQ·Ün^DDýDx±|öCíW§ŒBàÎFa7Šd˜Xw“Š)“¡ ³ïq£hélΧšÅ*Âõ¢ ÙöF>2[îÜŸZ#ÙäM…‰ˆˆˆˆˆÈ¡àtô+Ãzq²èVú½ôù,õ""g—ê¸x¾xÿûß×=éÛ¾©{ä£Ý=ìáêî|å•Ýå—OoqÒ¦oÖ|^—þ3=þlöeׇÍM,$Gž3#XˆˆÈÁ¢Ÿ�ÏÆ+M²= ºŽüEJ¢U„vݽœ+äÂpú«Rºå^ª Ë\·ûéC€.g(Jê^æ(KPœdÛ#~‡ª0IQ&""""""‡ƒýôP£WLé Æº+ê DDÎ?³ óüc‹¦ç?ÿwû×~´éÛµ€rƒÅ¶aû²ëÃÆæÅ!á¢q°8~ôXÿ¾}‘ˆˆ~¦öAÍ@¨:O´Ê’©ŸUYÒÞC.ë”&õ¸åÆï{1_)Vúó•ò„U*ù;¿Õ¿EDDDDDäðpCõã댯ÛÞG. ê DDÎ/›‡ËN¼Ñ<£×¥ÿL?Û?v¬»>ll\4. =Mn޲’PZ"""…©=QW¿•%ac10Ê{N™Z‰¢¢ä`p:+S²eŸ³›MŸ?,NéW™ ßÏFŠ“úêWY""""""r(YÍû÷×ì^€1[ëX!ƒs¡/èÿœuûê Ú{ª:‘³Ùár° Ñ‘âÁyøiŸ{êÔ©óžßØãÏ,( -rØŽˆˆ\üL)A†÷Å„ÿ¬çO]WëʤýðÝ¢ükP`õÉÒéf6v¢Ø^¬N õ7-DDDDDD‰RQ©N³±óÅn'Œý`¨788œM}Áè}¡/˜/¢_°EH¯Oh®§®@Dn,¶gßûÞ÷ÞîÖ·¾Mw}xß{ß{Þó»y=w’˜²È"ë¸h,R óÙõÛûEDDä\Q•#{í—ºWhO+.nöZ5´gŽÍçá€þïÕ*—nùYDDDDDD>SQ(úï»Ý[´Û‡¶ßM][/ûé &ïÉ‚sÇ6õ"rcâ°=ÿþêíoënyË[vGžÙÖ'OžèÞþö¿¼�×ϯƒÅ…=ê`Þ9p‘ƒEPÑÞ#äç®óö8G.Æåº^q2 š³ŒN_ñ"""""""ž©Eõï½"a¶Ç:„CÏéè ÚèË…ÙB$Ž|ßéd!"7Û#G‰×¼ú•ÝUwùèîŠ+®èŽ9ºïñ§NìÞûÞ÷voÿË·íü}â¼ç7öø3e¶qqM.‹Y"X8P‘ƒÇ^Û„ ¯>gò[?ŒêrѲ*ßy·ÒìŽLQ·‘}¯c…ˆˆˆˆˆÈ¡b*Eý<eÄØo!†zƒ‹“V_°—ΨÕŽSg "7cwêäÉî/Þú–îL¹y=þL™ÍŒ`q Y:Xlè`!""qHÏñwíßSŸåâd/ÇšY¿‡ê®£w}׆ù4질ˆˆˆˆÈáb÷¶¡ãß 3N]C..öÓ„¨�æóÝÇNéÔˆÈ‰ç– ,à¢q°9¨¬Ûæãt!F±¸x‰B­*;öRˆ´çÁ:e›ˆˆˆˆˆˆLÖmºNà<ðâfJ_PêG·Œl±ÎÉBDDDn8ƒÅj é€RDD{mRÛµ_¦ÜhدÌw;]teûn´•ˆõFDDDDDäp±ršß½âÖ9ž\Ÿ¹þØaG[‰ˆÜ±ï;—\_Ç΋Í!T ‘sLëTQ™rªØoë¹8o!³ŠJ1µRi.vôËò¯¢ˆS‡'"""""r~ØoÊ¿.j…ú‚ûé Æ¿O»ëõ"rñããñœ¢ƒÅÀųEÈlô&""r`0”§&¬’""""""ç‡u:ur°:ŠÈaÀ®êÜr½ŸYÁÁBDDä¡"EÖ9‘ó 3ä c=‘Â[)Ÿ;nP-#XLt°‘ƒL;¨Ûk â„U*¢>XEDDDDD.,ÎËdê DD¦9~üx÷‘ë®ëäìƒlu°ØèDDDäœïÎ)/Ͻ¾‘,Òpõ­ˆˆÈ™s³›^ÖɹAÙ®0‚…ˆˆÈ9f/¥ˆ²ª~X/EDDDDDD.ê DDöæÖ·¾U÷ï~o'gdk‹#Xˆˆˆœc2èØ/Š…ÈÙ¤­kgò‘‹õ"r±sûÛý?œ”í ,DDDÎNDEDDDDDDDDDDÎ}Õ:97ÜåÊ;v2pÑl"""""""""""""""7N®¾ÛGwrnø¸«?¦“#XˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈ¡æVWÜ¢ûè»Ü¹“³ 2E¶2 ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆzîßOêäì¢LÇè`!""""""""""""""‡ž>à“»ÙlÖÉÙY"SY¡ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆznzùeÝ#þÀNÎÈ™Ê ,DDDDDDDDDDDDDDä¢à³ý0£Xœ!²”1:XˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈEÁ­®¸E÷¯>çÑÜ0!²”1:XˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈEÃc?ûQÝGßåÎ\?2”Ýè`!""""""""""""""OxüçºUÈõ�™!;™F ¹¨¸òÎwèžø•_ÜÉ™ÌL£ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ\t|ê§Ü§ûâ/üœNNd…ÌdoŽt"""""""""""""""!ŸñiéߟýË¿ÕÉÞà\YÉÞè`!""""""""""""""-8Ü즗wÿõgžÝÍçóNVÌf³~[#Wœ:XˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈE ·¿Ým»gý¯uoûËwtÒu}—;wOxüçvWÞùœ³³pÜlâïýÞg{|Îk£¼çµ¹øn³yñÛÍx?yÍÛ^Ú_q¾Õ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆLñ›Ïùƒî×ë÷n´Ñ,ˆZñ¯>çÑÝc?ûQÝ9g¶Ù¿½ÙG?`çm{çuÍâ}«yÍïÛå5/ïí«Ûãó~ïíß-k+„,DDDDDDDDDDDDDDäFŽúÔûvÏý½vø‚—Üh-p¬xäÃØ}Ö£ÖÝêŠ[træÁBDDDDDDDDDDDDDDn”|àƒê^òÒWvúg¯½h·a+ûß÷“º>à“»›^~Yw^¹È"Xè`!""""""""""""""7zÞóÞêÞòÖ·uo{û_wûwßýã»ßÛ]óv'®;qà£\âØñcÝÍnzyw뺢»ýíþŸî.WÞ±û¸«?æÂF«ÐÁbßßt°‘‹ÎÁb£‘}ÑÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈŽt ïüÛÿÛ¿ooêDDDDDDDDDDDDDDDä²±yѸ$ôÁBDDDDDDDDDDDDDDDd »È>úþˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈ¹À""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""kÐÁBDDDDDDDDDDDDDDDd :Xˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬A ‘5è`!"""""""""""""""²,DDDDDDDDDDDDDDDDÖ ƒ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈt°Yƒ""""""""""""""""k8Ò‰ˆÈâïøëî§~ê?u¯{Ýë»›Üä&݃üàîk¿ö«»Ë.»¬‘ Ãì,7›ø{¿÷ÙŸóÚ(ïym.¾Ûl^üv3ÞOœ8ùÒNDäó·û·Ý—~é—wúе£ïï~÷»wÏ|æÓ» ‰ˆˆˆˆˆˆˆˆˆˆˆÈáâØ±£ØyÛÞy]³xßj^óÅûvyÍË{ûêöø¼ß{ûwË~¿õÁBDN›¯ùš¯ë£*œ.GŽé.»ìÒîv·»}w÷»\÷à?°»ßýîÛÍf§ëÛuããWõ7v9WÀ›Þô¦îU¯zuwßû~r'ryó›ßÒ½øÅܽá oìÞùÎwvÿôOïï¶¶¶º[ÜâæÝ-oyEwÇ;Þ¾{À>¥]qÅk¯÷ô§?£{Ö³þ{w:Ð]zéMº›ßüÝUWݹ»úê«»>ðS»»Þõc;¹püÍßüM÷yŸ÷E“¿=úÑŸÖ=õ©ßÛ/Nœ8±óŒzøäoŸø‰ŸÐ=ãÿ¥ÑÁBDΧNêÞÿþkú×›ßüæî×~í×»;ßùÎÝ·|Ë¿íîÿûu²›÷½ï½{þöîw¿§9l¼üåÚ=ýé?ݽå-o™üzÍë/þâ/º¼àE}”–Oû´Gv_ÿõ_ÛÝæ6·éÎôE×\óþ…sÇÿñKv æÏ쮺êªîñÿâî3>ãÓ#"""""""""""kÑš "ç•w¼ãÝ¿ý·ßÒ¯>—Ý|Ò'Ýsò{Œ¿÷¼ç't"‡¢Süèþ¿Ý7ó·îé\1Åööv÷{¿÷üîq{|÷²—½¼;—¼ýíoï~à~¨ÎóŽwüu'"""""""""""²:XˆÈÐþ?û³ÏêdÌgöcºG<âa£ïØÞ€¨·»Ýí:‘ÃÀ|>ï¾ïû¾¿ûÍßü­îúÂV9OzÒwv¯yÍk»s Û–|ÕW}M¿ ˆˆˆˆˆˆˆˆˆˆˆÈ^¸Eˆˆ\0žùÌŸíîw¿ûvÿñ÷èd`ss³û¡úî±}e÷¿ÿ÷ëºK/½I÷©Ÿú©Ýï|§Nä°Àv@ø‡/èn('Ožì¾ÿû ûå_~vwüøñî\ò|°û¶o{r÷ô§?­»ÛÝîÚ‰ˆˆˆˆˆˆˆˆˆˆˆ´è`!"g…ÏøŒOß1€^²ü|Í5ïïÞö¶·÷[‚ì[<íiÿ¥û/ÿå?u2æ¾÷ýäþ%rØ8qâD÷3?óßöüýرcÝCò îê«ïÖ]rÉ%Ý?üûº¾ðÅÝ;ßùÎÉãÿþïÿ¡ûƒ?øÃî1ù¬îL¸Ímn½üûšk>Ð}ä#Y{·?üáîIOúŽîñºK/½´©è`!"g…¯ûº'î4o³ëû×½îõÝ÷ÿvû·;yáÿ1¬ÞñŽwìDäðóêW¿¦{ßûþiò·«®ºªûÉŸüÿºÛÞö¶£ïŸøÄ¯î~ôGÿßî9ÏùÉóþìÏ^yFß÷}ßÓ;}U®½öÚîÿüŸ·uôG/ìž÷¼çõNSàðñŒgüL÷ÍßüˆˆˆˆˆˆˆˆˆˆˆHE 9§|â'~BoP}üãŸÐ]wÝu“Ǽô¥/ë¾ð W_ù•OìÞøÆ7î:îꫯîžõ¬gö¿ä%ÿ«û¥_ú•îMozso8…¼àù“«Î‰”ÁñüÇ/éÞò–·îPÿ~çœw—]viwó›ßbçºwíîsŸ{w|ä#ºË/¿¼›â»¾ë);×Ñäo_ûµ_Ó=á _ÚíÇ/ÿò¯t?ñÿqò·Ç>ösºïøŽoïÿ~ÚÓžÞýüÏÿÂäq?õS?¹6ªÅÙÈ+é$½S|ÅW<¡ûš¯ùª]ßÏçóîÑþ¬îýï¿f×o?ò#?Ô=ìaÙõ=[ <ñ‰_?u›>½¿ÿû¿Û9²ÿcê×ý7ºÿïlò·ûÝï“»ÿørßóßóž÷tŸýÙÿ²—[ËMozy÷Üçþvqa "+¼à/è^ùÊWuoû_uÿôOïï£7°­ËmnsÛî®wý˜îx@­a¯k„—½ìåÝ¿ûwß6ùu‹:6Å~2üâ/~\÷Mßô ËϤíÁ~ø¾ÇnmmõÛ{<ç9¿ÛGŸáœÚîN‡·½ím{þö­ßúÍ»œ+€­qøíùÏÿƒÉ~â=ïyowC¡o ?âõ„'|I÷ßù”ýß“ÇR¯¾ìËßÝò–·ì΄ýdü“?ùcÝ?ÿç÷ïÿþ›¿ù›6ö«ÝË_þ§Ý»Þõ®îèÑ#;õå®ÝçþçM¶®û»¿û¼î…/|ÑŽ|ÿ²w¹âŠ[vw¹ËUÝc󘾎!Ã3áÍo~K½×¿þ Ý_ÿõ_÷[¤ÐŽi{w¸Ãº»ßýîýué/ÎÒû¼çýÞNûxa÷çþýµov³›î¤÷.ݧú£ºÏú¬Ïì666º³Áßø¦Þiæõ¯}/WîE{»ùÍoÞ]yåº{ßû^Ý#ñðîv·»]w®yï{ßÛ?Ï^õªWwo}ë_ô‘œ(+ú1òë[ߺ»ç=ï¹Óß§ßk6›u"""òÿgï,ନÚ0þ*Ò ŠÀ‚„`K·t—¢"ˆ´t‡€”Òˆtƒ ©(Ý’b ’ÒJ‰í7Ï»ß\îÞ¹9w÷.<ÿßoØáÆÜ™3ç¼sΛ„B!„BH‚„°ƒì0®ZµÆò}” „‰'Ëôé3ýúìÆ› #ûX9}út¬÷`øÂ† k×®—ѣǪó7^7 žwÇøl… åm,àÐàËÁŸ±£B…râN]káÂm,öíÛgùúñã',+� ¸VFc»còût®�eË–1 ×£Õ ëÉ×_ï–ëׯã$¶ßG›Y9W€råÊY:F\¾|Ùh¿qj@†C‚'0ðbƒ£ÁÊ•«%MšÔÒ¤ÉR½zµˆ6¨þõ×_Ò¡C'Ùµë+ Ü‘­È™3‡í÷P.$qâû,,àìâ$pœ>|ˆ¼öZ#Ëì:èOK–,“ ê‹S O�8oxöY\32`ø„³‰Éž={¥W¯·å矎q<8ø`Û¶m‡ÑÞOÊ€}Õ€ï 8h 6B³YG!løÝ Ê£>ªçóÌ3O‹?Àá¨ÿš ÄK—~1¶¯ôýE‹í?XBáÇÊСÃ-¯ãï¿ÿVÇ;´Ùöí;eüøIRºôóÒ®]c<¦§ÁoM›6S>úècËR4¸×ø îäáìÙj6—–-›I±bE…B!„B!„BHÂÁ™ðABñAŽÙmß»|ùWñ—/¾Øå—sŒæÃ†”nÝzZ:Xqýúo2cÆÒ¬Ù›ráÂ…ï.\H#­@ D.ÛÃÚîÝßY¾—!Ãj §¯†Ôĉ[~×jÅwßY_@dy ÇhoH–,™/nm „‘ÆgoØ9Í€*U*ÅzíàÁ¤^½×dÙ²å–ÎV ûÊ_téÒÍÒø)L:=dç €RA?žÇrótæqgݺÏÔ°o¢ýŽ7o¾ÙÂö}dq’k×®ªÃ 2®X9™,\ø‘¬X±J÷aŒoÓ¦},ç OɤM›>û×òå+¥AƒF¶ÎV>|XZ¶l-Ó¦ÍðùYdÄhÛ¶C,ç Oöïß/:t‘¿þú[‚íÈu@F±ìµ×^ײUNò믿íÓF&ßG5dBw•ÄB!„B!„Bt° „Ä ÞÒÁÛe°bæÌY~}nĈQM Ȭбcׯ2dS(UÊ:õ?ÎiáíØ±ã Í`EùòåBÎjàôµ"kCÞ¼Öeiø=ùö[{£%œ¬®Ïë hB… Š¿TªTÑö½-[ìä¿üò‹­¥ {,WŒ×¥£U«6ráÂE †Ï?ß*ݺõ¨¿Ç¸ÿ |$ñÊSŒ7AÞ~»Ÿåû™2eÒ’á�%0ì§à`–r‚“'OËÈ‘ïùõÙ &Ê7¤_¿~Ÿ ö“&Mµ}ÍšušYŽG‚Ò!“&Mñê܆ñÑ·ï�¿8 sçΗ@#N¿~leª7àìÔ±cg=W'ÀXîܹ›^K0 ]'L˜äÕÑ‹B!„B!„BHdA BHœpøð¶ï¥H‘RüáÇÔú¾€±Ê—Ã24xsú8xð Œ3>Æk+–·ý¼· [·z+bL×µzË ±o_lc¢·¨pDëÿðá¯!êÛ.*?gΜ¥ñ/X°€<ð€õç·oßakðÝ´i³­³Cµj•cüÇèÑ£—«ÌC°ÀÙæƒfK¤±|ù G ì@¦—òå+¹¶¢EKÊK/ÕÕ6±2ügÉ’EFnYªÅ %Jd›A}Ã)C<@Ù8(ùùsçå­·zkIŸ@X¶l™¥ãÆÚ;ï ’P“…ÝX1bdÀZ–,YÐçþùŒ ø®:&ؾ⭼ÆpÏž½½Ã_vìØ©YFìH:•(Oòå{NR¦Laû¹aÆûí˜B!„B!„B!$~ñ]àžBBäܹsòÙglßÏš5‹øƒgZ}ÕS¦L%ׯ_“óç£Ë\ÀH5jÔû–߇“A£F ¥V­†á+µ~v×®/ÏÑèoO/^"õê½¢e<À“O>aìg°t عs—žŸ§!FZù­€#A–,™%XÂy­… ys°Ø/åÊ•qý™ |‚Q&$OžÜ®ÿïÝ»Ïö³EŠøWÄ×Z¾|yùðÃ9±ÞƒA{÷îoå¹çbgä@9+`œEfwÐ>GŽ;`D­^½º¤J•RK*Ìšõ¡É­@€jÕªè}‰þøã×>Ú3}úôê˜såÊå3¬¸£öåËW|~.cÆŒF{V‘—^ª-÷Þ{¯„“GÉdükíuòä©X™L‚Åt )V¬ˆ-ZÄ[×eíÚÏ4S†[·FgÅÁ}¨Q£ºdË¥ç³hÑ'¶Žx}Ïž½ZæÇ±cÇÛ:?ÀɤzõjÆ9Ö.óç/ŒÑ'Lpÿ1gÆŒ)1^?tè°Ê@;ð+V0Îë)u�cÂÆ›%PƯ™=¬([¶´4nü†dΜIÏóðá#2iÒdÍã Æ(J†¸Ë±`ðV‚¨nÝWäÍ7›ëµ<a¥D<¹téùꫯÃR ‡B!„B!„Bˆ³ÐÁ‚VPN¢{÷^^£ã ( ðøãy¤K—N’#Gv×k0^Á8¸~ý9{öœå÷:wî 5kÖpý†/d?€µnÝúš>ÞW¯^# ¾¦ÿ‡¡¹|ù²†qñƒXdžÑ2ÏÒp$€ñÌŠŠËI(lذ)l×úàƒé%**ÊÒcïÞ½1þï-{… Œ¾îÀIÃoÙ3ì¨R¥’¥ƒ€ÕÓÁâÊ•+Æý²Î†T©RÅxmÞ¼…bŒßݺuvýÆíçŸ/)Mš´°tÆázÉ’e®¶Ž$ªT©,M›¾!éÒ¥s½æéØn0ÆÊ”)­÷,ÜÎ ujû :pÞr’ êK‹Í\ÿùå—´d2›Xq;zô{*óLà ñꫯçf-SÏœ9ãÿÑnÅŽÞ½ßÒ67É—/¯Ê±6mÚ[fÃ@9 Œy8œ™ üˆËljá<€1§¥wß"þrþüyÛë€sEÿþ}]ÿ‡¬ÎžýQ2d´k×ÁÒùcéÒ¥!;X\¸pÞö½Úµ_p9W�8ßµjÕBŽ;ªNF(}óÈ#íc?z#„B!„B!„ù°D!Ä>øàCMóon(9ÃÖË/דC‡Ù~ï±Ç“lÙ²Š¿<úè£2nÜèÎ�Æ+Õ6mÚdù½téÒªQÏŠ)RHÕªU,ßC¤µ;ÞJzXEJoݺÍò³ÈP¶lhƽp_«£Ê}¸§³ÿî;ûù&žiô÷í³Î` Ád ˆŠÊ"¹rYoóæÏ-_³*IàdàαcÇåÄ ëRÉ“'3 ÑoÆzý–-›‹ÁDï‡ô™·Þêù„«<‡«W¯•λIµj5eìØ –™œ�vZòÂ÷ÝwŸ¼þzƒ¯Á�ÿÆl¿S¼xÑÎ�YfjÔ¨aûË—ñ”/²+…ƒÌ+îÎ&pª\¹’ØáÙ¿ùƾtB¬23àõB…üw®ƒ,µ+£Ñ´icË×ñL¨W¯®å{ß~û}È} ÙEìÀsÐÊ9iذ!2yòéÕ«‡:Y•.ý¼:ƒÄ…3!„B!„B!„Ða Bˆ#|ôÑÇ(0~!¢7Þx£¡Wƒ¯g¦”k(Q¢´í÷ì¢ô‘JÞ”ô@iƒÆúìÖ­p°èã5+§ /ßs’&M …p_káÂ-³BÀ(ùãGÕ(¾ûî»XŸ#ŒûñièiÓ¦Õÿ<øƒX,p> †*U*jt½'§OŸÖóÍš5Êõš]ÉšÔ©SÅr,Ù³ÇÞ¤xñârÿý÷[¾W²dq5šZqøáË’2ñ ýÈ\I\»v]fÍš-;w~!ï½7,l%U¬²4˜À)Â)±ÀêxÞÊeË–Íòõ¨(ûïx:!ØÉ €Ò:vT¨PN>ýt±å{žcâØ±cb²ËØ¿WE¶oß)þàé¤åN½z lß³“wxýĉŸ\r,ræÌ!+W®¶|ï“O>•uëÖi&–9r21›þÖƒ>èhÙB!„B!„B!q 3XBâ ¤Ë÷,Ýà‹§žzÒö=J=Ó㻃šÝfŒ¼ž™*T(kùY8:tÓ©�çräÈËÏV¨PAB!.®m$‰µó€éÈ€ãy:KdÈA%<1 ½(Y`W6¥páÂ,åÊ•µÍFàžÅâÚµk²k×W–Ÿ«X±bŒ´þàäÉSbGž<Ù¾‡sñÌ´b‚Œ§Oÿ,‘Ê„ËÁ8íØ±Åµ­Y³B&M¯ål<ÛÝÎ(ýû”ÿþûOÂÁ¥K¿Ú¾—$IRqŠûî³ÎPà-sν÷úïøñÓO'mßË“'·í{¹sÛ÷m”~2Ay$È+pþvc�<ñDñ8CØŒ¼¿üò‹„BÅŠle$¸zõšfû˜4iŠtéÒÝèçµ¥L™òÒ¶m{u^;{ö¬B!„B!„BIXÐÁ‚/¼öÚ«Ò¼yS ”¸°†ópa¯\¹ãÿ(ía—eáóÏ·¸ö·m³.‚(ö%ŠI(ÄŵÞu×]–©ýÁÞ½ûõïc1sçÎeiœÝ³'º,ˆ]ö Ø Ì/Á’<yr)ZÔÚAenîo³ÍZ`m#©)R¤o¤Liß_¯^½*‘JÄÏï&—'Ÿ|Bºví$Æ ¶WÈrðÍ7»%üôÓ Û÷~ø!IèØ9?€)’Û¾ç;ç÷1 oÇ÷–‘&§o×,W®„6ñ<êÝû-••þrýúo²sç.=zœÔªõ’ 2ÜkB!„B!„B‰,è`A‰S²fÍ*ï¿?RZ¶l.N®wÏã>ðÀòÜsÏX~ö‹/vYî»ç »²Áž“Sx·P¡‚–Ÿƒc°*òØcÖægí,žxâqI–,4C¥J-_ß·o¿ËyÄÎñ%wîÜ•%ÖëÞÚ:”ûÀ21A_+S¦”íûk×®§A9o¿ýÎò=8x+ß‘P¥ÿÚ½íoßõõ¹@ÆO8džÇ,Q¢¸Œ?F²gÏðwÑÿ-úDZ´h-¿ýö›B!„B!„B‰|ü¹#„�ATo²dI%cÆŒ’'O)V¬HÀ%A!iRûtþµjÕ”.]:ŠS Ä‡U™‰½{÷Éï¿ÿ®iÿí"î+T(/¡W×jç`Ò'ÈñÝwßÇzï‰'žL/éÒ¥•sçλ^7³]:tÈò˜EŠ’P)\¸¤N*V ”äøê«oÔ¹eçÎ/,¿[­ZeË×½ewøå—Kâ_~±/?áíºóÏ?ÿÚ¾çY¾&¾ÁúÒ%ë6<ð– dÅš5ë,ß;yò'qšM›>·Íb+W®¡"È`;~ýõ²¤J•Êò=ŒU;£Ò¤I\û‰'oÇÇØ³Ëba×W|ý¦;Y²d‘yófK|ç°>˜fȘ¯eÆM²{÷·rôèQ½v@É¥éÓ?7ßtÞñB!„B!„Bˆ³ÐÁ‚âK–,2 êé$>AJ{O£¾É… çÅIž¾„ 2Lþøã¯Ãé�ñiÒ¤‘Ë—¯ÄúŒÿve7!®®5mÚ´™íéë<vì¸f†pi3{ÅSO=#ë�¾óÇŒc±ü­Â…­Ë{ÊŒ”+WÎ0¸ÎõîKÚ´XÞ´g™2¥-™1ãÃbj^|ñË÷` ÆõZƒóCepýß[¤ÿ™3?{yï¬D¸æÊ•«[¾‡r)«V-÷ú}o%~ûíwq8Œ?ÑöýâŋʭÀ#d”ï¿ßcùÞÞ½{-³¶D¿·Oì€Óœ ,àÄaUJýkÕÆŠï¾³>/ëß|XöìÙëõ‹/H$€1œ7ïsº<>¢²óÀäË/¿’“'OÚ~åÊ•t° „B!„B!„�K„Bn)råÊiù:²IÀÀoǹsçÔ èošv8Ø`¿üòkùúë¯-ß+S¦Œ:8A\]káÂÖY,¶lÙ*.\ŒñJ§Ü}÷ݺ_ @þXß‘ñçŸc; ¤OŸN²eË*NP¥J%Ë×÷ïß/;vì´|3v%‘ôÁõë×-ßûì³j`¶"gΜêÔaâ­4 ¢âíîÕÚµk%’@æ8Yl6l´ý. Ò+W®¶}?MšTâ(Óµkwùé'문7ÕªU‘[dW°Ã[{{{ÏsL ‹„K—Ú;Õ,^¼DüÅNÞÁ±ÃÓÑËŒAÈ@²e 2U@®¡,ÔÇ/’‹/êX@F–5ªK·n壿Iß¾}l© Koܸ!„B!„B!„B":XBn)гvz€næÌY–Á»ï–7Þh*¥J•3 b/H‡d̘ñ²}û±£|ùr–¯ïÞ½[³%XQ±bèåALâêZQvÊåËWÆz­`Á®}+ mqž*zy“GͦY7<9tè°Z­¨Rź<Èœ9“dÊ”Éò=´õÈ‘ïÇzýÂ… 2a‚}v”*qçÒØ~åN†/F9´áŒÈŽ_H¤á­ PÿþïÈúõb½ƒ4NŸ>mû]dD 8pìß@ûúË/×µ,ñcR³f I:µÜ )RضDœw¬)¾þúY±b¥í1=ûï³Ï>cûÙ%K–Z:6-X°Ðv<ZQ´hÛ÷Æ›`[ŽcîÜùÒªU[©T©šT¨PYZ´h%C‡ŽO?],þrãFìì)ã:u1úR=£=J}¦¶´iÓ^ýá‡ó,S¾|Y¯cet!„B!„B!„D6ÔäBn)Ê–-#£Gµ,50eÊ4-Q·îË’!Cty¤p1â=5(š ì¶mÛvưԆñß:ƒ^GÙD滃”øV†âGyÄ6U~0ÄÕµ">yòd±~Ç*ݽû÷­Ê‹?~\¬(RÄ9 P¥JE92fydؽûÛXŸÍáAWZ;êÔ©-C† ·|oÙ²åZ–¥Zµj’*UJ£ˬYZ–oˆl÷ÌŽ€¶Bæ8SX±|ù Ùµk—<óÌÓÒ Þœâ“êÕ«Å( ãîAÏž½Œ~›^£û'¾_Ξ=cÜ—ï¼f]AF‰Š+ˆ¿ôíÛ_ÆŸàúÿµk×ýÎØ‚Ò;Íš5–[”n*Uª¤¬[÷™åû¼£%DŠ+¢~8=ÌŸ¿0†C;¹rå’'ŸŒ™ÁÎfvN]8NÇŽ]ôþ¡ÿþõן²uë6ùüó­(KR°`~K§"œsÛ¶í¥E‹æ*c1Fà´3eÊôŽÕÈðƒ ׋ì&ȼG+G ŒidÛÈ;·Žñx@Ë@8p0V0wî<ãs)¤víå¾ûîÓ×p\8›œ?o]ÒY@Ìì?„B!„B!„B":XBn)`ÌjÖ¬‰F[±páGº%NœXpÞŒ®pž¨T©¢íû(õQºtiM ïRÒ_¼;½“Ù+@\]+ŒŽùóç³5КÀ䡇ŠñÊ‹¸;XXãy¾|yÅIÊ•+kñÇÙ‰ÝÁuÛ¥í7ÓÀÇ*Gޱ|F_³I¼þzƒXÙÐÆèK¸_vÀacõê˜%AÐæ0$ûë<ÀY%W6lØdûÓ±Ç_5jpF ;oÀùeðàwµЭěo¶P‡dñðäŸþ‘E‹>ÑÍ'íÛ·‰õzÖ¬Q:Öá¨e~ŽHØB¡U«75óŽç ^ßµ«‰:)$N|Ÿ¥ã™ ®£nÝWb½–6íröì¹XŸÎü3D÷6|Mš7oªŸ¯V­ªL›6ÃòócÇNéÓ?P™wúô©XÎxîÀ)ŒB!„B!„BHäÃ!„[ŽZµjª×¨uïÍ( ãYïÞoIòäɽF*T('þÈgý%®®ÕŸVÙ/첸óì³O»¢¼"UªTjðõ®½J•J>?gšûIÒ¤I$ È'¯½öªå{È’g˜@hÚ´±ÜuW"‰4zöìnݳŠ”)SJ4¨/á&I’ûeذÁŽf™‰ŦGn*èov¥ZÚ·o°cŠg©_ üOÛ¶­¼~™P¼9W€W_­§Ù4<É›×·£×\ûp–òÖÏ!w‘ýbß¾}^+{ì1yùå—„B!„B!„BHäC BÈ-Œæ}ûöQÃl0 Ú¸OŸ^†Þ·SÊg<üðÃ~}Î3»ƒÄÕµ*TÀg–|Æ\w²dI½~ÏŸvoÙGLž}öW _dÉ’YÆŒy_Ò¤ ,“‚ J ;²UX~Ô®]kñ—²eK놲‘FÒ¤Ie„1’?ð™IÐßêÔyYúõ{Ûgß ¸§L™äx&•H¢|ù²Ò«W ú Ú¿I“7Ô¡ÀdSéÛ··ßÇGiž6mZI ¼ôRmã{oÚŽ#_À‘¡E‹¦–ï½új]Ÿe:PÄŸ5j¸–M 8zŒó˃B!„B!„BH„[8 ÐO ŠéÒ¥õû{ùò=gZ'”m†K_8]ĸ¸V”gðfDÄ9ÀYÁd~@yo)RXÂAÑ¢E´ô‰7ªT©,+WNùðÃô{¸6H:•tíÚI† ä3SJ‘Àáíé 8V ëˆD €Œ(£F4úeO¿XLЗ&M¯'ÁÒý!sæÌÒ³g7™:u¢DEe‘[Ê•+ÉŒS-³7Øñè£ÊرïËo¼îó³ÅŠ•1cF©ó„7àŒñþû#}f²å=&N§Ž1þ’)S&yçZâÄ®OEEeQ‡o™8‰âçŸÏ¸þŸ6mZu&Bû’áŽZ;¶ÓvH’$´Ì8„B!„B!„BâŽÈ´ÊBˆCÀ X¾|9ùüó-²mÛ9xð9sæg¹~ý7¹÷Þ{%EŠòàƒéå¹çžUƒ< èç‰iÓfؾxéÒÁe˜„p_+Jnìß¿ßò=”ùÀoX2!ë×o°|†V2€Ú½L™2òÑG[¾#ª¯ò*V¤L™RÞz«»4nÜȸ®õòå—_ɱcÇå—_~•?ÿüÓ8nbI—.½äÌ™Ýh³ÂZÁ—Ä;èOÏ=÷Œ,Y²L¶nÝ®÷ðÚµëê,’'On©V­jŒ¬‰E*W®¨×ôÕW_k¿D¹„S§Ni‡¿ÿþ[NÒ¤I#Y²d’'Ÿ|BJ–,¡ýÂIà ƒû’2e*ýœ9sªcÆ@¸³cD(³1~üc, 6Ê÷ßï‘ãÇkû÷ßÕIàá‡3JîÜißÍ›÷¹€ŽÿôÓOÉüùsdåÊUòÙgä‡é½F ”Ó(]úyu$˜¸zõª ²ãLŸ>Y¾ûî{Ù´ésã:¾—“'OǼ¦÷ã%Mš´O¡4OÁ‚ürÖLxüñܲlÙ ÙµëKclÓ¶A_Å1³e˪ãÜôadø¨Sç%Ù²e›öudºøõ×_ôÚÑÿðÝT©RÇΣÎmp<³“™„B!„B!„B"­ wøùÞ~ü½Ãæÿæv§Û_sKôÿ×ylxáwþùç_Û„BqŽ/“&M±|Ž =ztB!„B!„B!„^î¹çn¤4ÿר®üÿï?Ûÿÿû¯ÛöŸÛ_ÏMlþïí¯ç¾'ÞÞS˜Á‚BÈ- ¢Ïí¨Z5°ò „B!„B!„B!äö†„Bn ¾þú9qâ„<úè£Z `óæÏeݺÏ,?›={v-1@!„B!„B!„Bˆ¿ÐÁ‚BÈ-Á‚ eãÆÍ~}öµ×^B!„B!„B!„B„B<ÿý·|ñÅ—~}¶@|R¶li!„B!„B!„B!$è`A!$Á³{÷·òÛo¿ùü\–,Y¤OŸ^B!„B!„B!„BH Ü)„BHgëÖí>?S¬X7î}I:µB!„B!„B!„(Ì`A!$Á“#Gv)\¸ œ8qR®\¹,ׯÿ&É’%•Ô©ÓÈ3Ï<-eʔҿ„B!„B!„B!„Ë|î‹}oï°ù¿¹Ýéö×ÜýÿµDÞKŽ¿þù×6!„B!„B!„B!„BHDqÏ=w6þüklWþÿ÷í¿ÿÿý×mûÏí¯ç&6ÿ÷ö×sßoï),B!„B!„B!„B!„â:XB!„B!„B!„B!„ø€„B!„B!„B!„B!> ƒ!„B!„B!„B!„Bˆè`A!„B!„B!„B!„â:XB!„B!„B!„B!„ø€„B!„B!„B!„B!> ƒ!„B!„B!„B!„Bˆè`A!„B!„B!„B!„â:XB!„B!„B!„B!„ø€„B!„B!„B!„B!> ƒ!„B!„B!„B!„Bˆè`A!„B!„B!„B!„â:XB!„B!„B!„B!„ø€„B!„B!„B!„B!> ƒ!„B!„B!„B!„Bˆè`A!„B!„B!„B!„â:XB!„B!„B!„B!„ø€„B!„B!„B!„B!> ƒ!„B!„B!„B!„Bˆè`A!„B!„B!„B!„â:XB!„B!„B!„B!„ø€„B!„B!„B!„B!> ƒ!„B!„B!„B!„Bˆè`A!„B!„B!„B!„â:XB!„B!„B!„B!„ø€„B!„B!„B!„B!> ƒ!„B!„B!„B!„BˆîB!„øò˯äСCRºt)I—.¸…íOÈ­ÁÙ³gå‹/vÉÅ‹—$iÒ$òÄOHΜ9ô½«W¯ÊÊ•«tŒ—,YB"o×Bn-~øá|÷ÝwríÚuyà4’7o^yðÁôBBçĉ²eËVyúé§%wîÇ$$4ÙBÈíÀ¿ÿþ+«W¯•ß¿!•*U”{ï½W2þ®U®_¿.;v|!§N’»îJ$Ù²e“|ùòÊwÞy˵ I8Äųøv‚c™BÈ­Ä|î‹}oï°ù¿¹Ýéö×ÜýÿµDÞKŽ¿þù×6!„„•>úX† iûþ=÷Ü#iÒ¤–¬Y£ŒÅsi)_¾¬$J”HˆHÿþeùò•jdX·nµÜîLŸ>S&Nœ¬ûË—/6úM‰T|õ{+š5k"¯¿ÞÀò½‹/ÊÒ¥ËeëÖmª<ºzõš¤J•R¢¢²H¹rå¤B…r¶ãæÇJݺõí~Vî»ï>ãX© eT”*TÐ8^YI–,™„JáÂÅu!\£FuéÖ­sŒ÷ 0kÕª­î§K—V>ùä£çߺu[Ùµë+É”)“,X0Gˆ³øjBHäùúþûc ¹P÷MŠ+"C‡ÖýæÍߔݻ¿Õ}ÈaÈc“o¿ýÎxî´ÔýþýûJÙ²¥%¾ðçZÈ­Á•+Wä­·zË_|ãõ¶m[É+¯Ôâvk´o­ZµÕqÏõY³fèËi¼É–¸"’d!‘À¤ISdÚ´ºñ€q‘Pñw­²råj>|„Ê<“äɓɊKå®»îJPmòóÏ?KÍšµu¿]»ÖR§ÎËB&qõ,•HÓ¯-_¾Â£ïè>Ú,{öG]ïÝJòÍ)¼Ý¿µk×K¯^}$XòäÉ#S§Ntýß—NÑŠ|ùž“Ñ£G !„8É=÷Ü]Øø¥Ñ•ÿÿýÇcûïÿÿuÛþsû빉Íÿ½ýõÜ÷ÄÛ{ K„BãÏ?ÿ4“g Ãñvé×o€4nÜ\Î;'äöbäÈ÷¥`Á¢ºýóÏ?Bn²hÑ'R»ö+2aÂ$ùþû=réÒ/ò×_ãä¼ìܹK•ì5Õq ¿ÿþ»*t¶lÙf²FHõê/ÈìÙÆ0r9ÍéÓ§]û.\Ôs q‡¯öß´i³k<îÚõ¥„ åë­ÉŒȼyó]²:uêT’2e )Uª”ë3îcý§ŸNI¤âϵ{ÒïÑ£—˹ÑÅ0œÝÿýòüóÏ uLC#úæwáÀ›lAv ³?bîJâŽúõ_×voÚ´…D:NõÎYoâ>.Ož<-‘Š?÷ÌŸµâ7ßìÖu°)óàp†gJÉ’%Õ¹Âó8‘Ü&qÁí$›ã[.ÄÕ³øv‚c™BÈ­K„B‚^øÙ³g‹ñ ŧOÿ,ëÖ}¦“æýû÷K×®=Õ[ŠWB:VýÞŠœ9sÆzmáÂdøð÷tŠ¢âÅ‹Ê3Ï<-I’$UG¤õë7hêÔƒJûödúôÉ’8qbÛßH‘"¹´iÓÊõÿÿþûOS±ÃYcÛ¶íºøÿí·ßd̘ñ8p`Í2ã4*”W¥ØÁƒ‡¤nÝ—ëI"$î`û’ðA¦$$Éý2~üXÉ‘#»þrݤ{÷®Æ{“$}ú´R¯^äfðçZHÂçØ±ã• råÊ%#F ‘Ô©Së}¾ã“dod̘QZ¶l®QÝyó>§™ÉÂAB‘-„ÜN4iò†:#ܸñ»tèÐV2þ¬U>þx‘Ë1³G®R­ZUÝwŸ;ÜJmBqõ,¾àXŒÇÏ-½zõ°|oñâ¥òÝwßë~ûöm$iÒ¤±>“2eJ±£P¡R¦Œï¬a<ð€B±†„ È›÷Y)Z´ˆå{7’NºhTœ,>ÿ|‹”(Q\Ièxë÷Þ¸té’Œ–/C† òÞ{Ã%sæL1>óÚk¯ŠQjœ:v옱XZâ5håÊ•­’å{PFíØ±SÞygœ?Áƒ[eÈáòÖ[ÝÅià´Ñ§O/!ñÛŸ„Í74›@–Ó!¸ª¡Ðt¥®¿×B>(qfòò˵չð>; æ†ØÂIB-„Ün<üðÃ2fÌ­‘ŽÝŸµÊ©SÑYpݦsp¦ÜJmBqñ,¾àX è+WÎ`ùÞ×_ãr°€£D ¥a¢¢²Úê !„øCÊ !ŽƒEt·n]\ÿ÷¬ÍLÈíÆ� O�uX=+�²¼´jÕBÓkƒ­[·I°@eùôéS$S¦èßZ¶l¹q»„BHäð÷ß»öÓ¤I- ™[éZˆwÜïõÄooB! ó™Â¹!„BIH0ƒ!$,<ôÐCj(F‰‚K—.Ú~îâÅ‹²dÉ2Ù¾}‡Fí#M\ªT)å‘G‘çŸ/¡ ¾ÊlÞü¹¬ZµZöìÙ+¿üò«Üwß½òðõÃK/½h™&ÍÇÈÂ…ËW_}­¥P¾^Õ ä—ÚµkIúôéÅðFæ~ .hÝÐgŸ}F^½¡dË–UœâÚµk²|ù WÔƒL—.äÌ™]jÖ¬!Ï=÷¬íw[·n+»v}%ùò='£GÒèùsÈÎ_ÈÙ³gõœsåÊi\ó‹AE²/^Jþüóϯ)Rµ?xð;¶™LþøãùôÓŲråùé§êl)Sf©T©¼^—¯3È{¸eË69yò¤ÖÇD;܃ZµjHîÜI|òôÓOɸq£u?OžÜ¶Ÿ»ï¾ûÔëãæÚµß$TÐH'جYKM»:}úLÉŸ?Ÿ8MáÂÅõø5jT—nÝ:{ý,îÕÔ©3dÛ¶mZÒ$eÊêpR­Z5)Uª¤$J”Èò{fÿEY•ñãǨ̘;wž1æÊ•+Wõ:=½ï1¶‘6ii1^ ¼C›äÈñ¨~¶X±¢–¿…’*h3€ûöè£Ùäƒ>”7É™3g$mÚä“O>Òš¬UªÔÐ~ÿÄËäÉÄÈ*Ò®]GÝoÔ¨¡4mÚXœÀªýÛµë`üÞ1>׺u;×þË/¿¤i$%y‹~7qâdÝ_¾|±mdêêšçøÎ;´?˜xÞôƒ+Vrc‰=zÔóÿʃ>¨ý»NÚéa…SÇq'¹ìÞ6;vlÑ´û3g~ ©÷‘:µR¥ Fßî”|ýá‡C²hѧúlÃs  ÿãÚ¢Ϲ`0û[ƯIóæMõ¾Íš5[öîݧí÷øãyŒ6n¢c £ÎªUkŒgýR-ƒ„Ï Ý.äûK/Õ¶ó ”9‚yž8—×_o »w+óç/ýûh–…Ô©SIÞ¼y¥^½W$**KŒïnÙ²U:uêªûæuzcܸ †Œ˜­ûˆÈB ao`ü4nÜ,Öë3f| › œä{,×ÿ÷ýG¾€óÞÒ¥Ëô~ýõ²1WKlÌS²IÉ’Å¥jÕ*.'? æZLœ˜ÓøóLp÷£G¿§ÇEüä“èqŸ8ñ}:ïyó͆|O«ŸƒSäüù õÜ~úé'¹÷Þ{ŒgGcŽô‚ϬlÁôÛHãv £¯{âþlAi³ Öº½ø³Û)™ºuë&ùý÷ß ™:Kuþüy5Þ!]=žÁæ=øùç3† ûPÏ ÷.Y²¤:|íµú’=û£*¡¬Ìöƒ³ì‚sl?ù ù¶oß]Ëà7ž|ò iÐà5wcÇNP9kÞ¼ù³ßµ’-V÷Ú}LgÏžÝ8ÞôXçì¼ËI°Ø´ésCÎ-5Æß msŒqœs©R%UÎùZ[:ѱvÙ¶m³ ãtíÚõºöJ”È~c%O™Z°àÍv[»v¥ÑG“Åø d©ñGŽ1Ö7´” Ö+V4dG1ÛµT(ëÃ`û‰'ÁÎYC¹Oþ™€5æ¶m; YqÚ)¨<Çøòç7‚íîÏ­þýûJÙ²Ö)ÜCY‡2O ôžY­U¬ž{žý½uë–Æï× ¨Mœ¾Àk‡Ï>Ûhô½Sò×_«þ«J•Š:·õ”õ\½z|ÿý^=Ï»ï¾Ë˜‡¤Óþ…ù†ç3(¾ds¨ã Œ\õ<íðö,vZÇæ)×._¾¢c1º­*㦘ƒëqw07ž?ÿ#ƒ¢4í=÷Ü­ë‰W^yÙç9úË¡È&Opœ7ãõS]gcíƒï.\XÞx£¡¶Ão43æQ{ Ù“_Þ{o„K(s1B! :XBÂÂ/¿ü¢Fb&u½6,° ,ׯÇ4$Ÿ;w^7LÖ?ýt©Œ5Ür�¥i÷î= …èίÿõ×_†ó€n0Ú¿ÿþ{’%KfËs˜7o¾ñþXWÍO€ Œ@Ø.üHºtéd,<+Z~ øÁƒ‡©¢ÞK—þÔEÑæÍ[døð!âP8tëÖÕ~Û‹lø=(îaŒóf A)Sd2èÒ¥»¶¡û9c1ŠÍIã¯/®^½&mÚtÐŶ;Xä`ƒâ%5î¾ûnËïCqv¢Þ,H±a1-à¾5ÂѦ×ÍPÖ`!²dÉ$N�#g‘"…´L”*gΜõë\ÂîGÓ¦-ÔplbŽw(&-zZHÉ“'÷z,\GŽ|ßö}t±€3gnŒ±mž6,´±˜ïÛ·×~¥F£FMUié γX±"²~ýC1¶G åšpL�È0RµjeIH8!odÀ€wUùä ¥Ø>ùäSéÙ³»”/_6ìÇqJ.›Ç‚Žùì (Ð`Tôìÿæyá™…¾_ªTI <#‡/ÆkpÁµL:I§zöì¥òÇ<_G:¤ÏÈ÷ßi)ßC#˜@@ñ<a¤¯CF+{× Äþ†œ,ìz¯páB•YÅ7|v¥p||À!Ç ƒN8ÀÜfÀ€wdÍšu1^dzÏlsçΗwßË"89v|=ÜÁ¼­W¯>*·MÐ6pÚ³gŸa¼˜¦r¿M›öz&pE߯†4ѨÇm…SýÖq5ÆÄŸûäd¿€¡óK8¹˜`ÜCà™>`@?wëÖ3†Ü…ó'î#æ Á:ÄÅÁœïÌžýa¬ßÀùCö4P“ó®P€M—.=´D¥;˜«`ìa›={® ò®­óŒ“}–fÍÞTã“;掻#GWçþ`Áº¡S§nú\uý} Œíôu•ò±"ÒÖ‡¾pò>Ù§â·ßîk^YŽãc{å•:Ò¶m+Ëï;ѽáÔ8˜yR¤î60¢vîÜ5V߃.cÔ¨1jXïÔ©ƒ×cÀˆŽùñÎ1³Kb>rýú1}n¡íqïpƒÅ Ùê8pJFù"Ôó 'd¨\‹žCn’ 6©#æ/)R¤øóÌo0Ï1Á5›ë ¬›Ò¥K+¡ªlÂ8ÃswÏï/Zô‰Ñg6û ñ÷<#a.F!$~ ƒ!$,Œ7ѵo]€(±>}úêB 9°Š)¢æXP¬Y³F'¢‡–þýZz:Üeìâì…jÉ#dT#5¢8`øÁb“jxò{p03f¼îïvÔ ÿûïtq³xñ] Á Å ”4ž 2Ü¥8ŹתUS£ÝÅ€c`âE~TT”„"šÞ|³*ÌöB„, ¼PCYüøq]t¡ý%h§Há wï·ÕF‚Ç˩׼}ûv™4iª^3<Üa$ ÄP4mÚd]\Œñž.¬�"VM¥a† Z~oذzîUªT6Œy5"~ß¾ýí!S§N·Œ FÂ(Œ{ï½W#0%‰((&>úh‘. Ð`ëС­D*0Þ ø®*Vp®D¿ø¢dÉ.'ÚÓÎa(œüþû C‘ÔGûg™2¥4‚Ãì¿‹-Ve(úM»vdÊ” ¶ýŸÇ†Ì_Äx{Tû{Ù•ñã'º¸ˆD­^½º<õÔY‹ïüñ§ªä‘>ÞjªŽ=VãåÊ•‘âÅ‹ë8Ç84A¿5 u+W®–7ÞxÝò8WX`Œ+2#„Ã0~6mÚl´ç4} Q`ùóç×}D B¨òÖI¦OŸ¡9hG3r‘P»víRƒ#2kàù‚È|o†±Pã¤\P ‚W_­§ýmÌŒ ÈW8Œ@†D°¿úê+yçíž={TQ…ç@ß¾ýþŸM£êƒáÇÔ¨oÈÜÒ¥ŸWüí·ßkFȱwߢm Ùƒq†hÝ”)S èçëbu®Ãµ ­7nãØNÌL¾ùæ½Ïx†ãì—/_6Úi¥>g {ûõ Ìu)+ñ›ˆ¨C”¢Û9…ë´޳gÏé>§ì1ÜÁ<aÖ¬ºõêUÃXßZ÷á ×¼ùÍèåL™‚»7V@a å.Àý¨^½ŠöDr!£äž—mÛ¶×þ†vò‡`®ÅɱãÏ3ÁÌíÙZ±byíŸPCN¢àXÓ¦Í4î÷n}&-ZØØŠh–•Ý»¿S'9(“AŠg˜gŸ¥ßFâ÷¤J•J®èK»gK(÷Éi™:rä(¹pá¼F?£Ÿ^¼xÁ¸ÿË\Æ×‚ ưÑ:‡Ä�Ùw~ûíºiÐp ÈXå+žq±F€ÑÁœï RÏæ\¹ré5!B¿k°“_v˜÷ÚnL#£‹;Nλ‚çÚ¤Is•c�ÙãЇ¥ g› 6ª1s:DϘ1-–ñ“}ýãóߎÛi´-Ö8päš4iŠöCô3ŒWóè.Oë×o¨ц“&w7I’$®}ÌÁp͘áÙ™U²dIÎ…QsÙ²zMxNÁÀ9aÂÛÈý`Ö‡ö;³:-+¬ÀýéÑ£—Ž¥$Iî—:u^Ö߀NàèÑc:w3.2ò@€gŠ;NôGo8¹fžäÄ:Ã|î»þH ªp·9@¿@ß3 è… 0Ú­¤!ã£ÇÜÒ¥+4ëÂØ±ãmgu‡õ´wÍšÕ4ú÷êàÁ´_a§DÈt3+\\ËæPÇA(2*>êy:A¨:6;¹†ŒE¸WK–,×±±Š,{&Œõš0\¬^½VÞyg°îc½Ùƒ±ÙóãGÕqÏ8d% •`d“‰Õ8«U«ºÎ‰qŒÏ?ߢë·ÞzÛèg×%Â5#„’0 ƒ!Ä1°h@ºâ?œã2æBaôÔSOÆú,¢Ø0é…âÙ <ÓiÃ)‘ÅP>b‘ŠE“»‚‹J3¶Ã‡¡8Áñ²e‹2 Öƒt‰µûBéá°Ð8¿¡CňšNá\ÅXä´VÅÌСÃôw`ð2ÁBŠz�Eñر£bLìa­Q£š´jÕÆ¥,ªúö ‹-,8íGw"J<´ &ñˆR€‘Î ,¢±H;öýJ6(¹³dÉ¢ÔPv|üñ¢€, Pò›×‹¬¯…<Ê'N£Ÿ v¹re¥aÃ7ôºߤÉ1Ž…véßÿÿ§¸Lc(ÉGÆHµ £æ¸dX°`¡:äÌ™C"¤_„aë?~7üÇ ÅÆZU> wéÒÑÑb¤&4’!>Àµ!RQpøp‘9o½Õ[öíÛ§÷ Š+Ο¿ ýwÔ¨–i �†œ‰Çjº`ȆJ•*Jƒo¨¢‹óúõëÙE!?ºN!V ”"4p}ˆ€¶s°Àµ™Ê88e„3“"“L06ƒ‰Ö UÞ: -*”3”XoÅ8ŒD° åh´ÜŽ~¶@‰èôqœ–Ëàúõk†²wŠ*æ< D¾"]+€\œ6mRŒçÆNäõ×ë¹Ã¨ŽÁ€ˆ³úõ_5ž“7#ù‘vÊS8Ú`,cCé‰ûÇ8×_¬e(jÔ%”Nž¡ÎÜÁ}®[÷Ãñ¦ë5«‘®Ê@Ë¡EÔ‹/¾àúLµj•ÕÁàÚ)Å̱>ä¯óææXÄø2rÛ‰’ž Lç «hV(šK”(¡Ša܇ì×±½§Çޝg‚'0¸á7Ý£ÝpßaÄ@¿3¤è/è7&èÛèˈLÄ óÏ>J¿Ä1î "KÍèÒ@Ÿ-¾îS8d*>cµ»C#ŽÑ´iKnƽ€q�å¢LãÀAv;Ž`ë×f¥ªI ÄÅáСÃFNUG›ñãGǘU¯^U×2×`ÞkÆ´Óó®`s’iX…S¶g¿GiŒÛAƒ†êüûý÷Gkús§û ä ¥3gNá éèyé¥W´¤ŒQˆj†Lv—§ho¬Ùð»ñ'"sí€èsÏ ô[d™B›ãyŒµ"¸­f}H?ñF sÖpÈ +`xÆÀÎ]F`-‰ v7×>½zõêXÛPû£7œ^3Orba>÷€?ýÝáls–ÍõJà˜îÀ°ŠÈ~üŽpÚE™,�çdssX[BU¯^½×p’1û_\ËæPÇA(2*>êy:A(:6ät#¦\øF¦E÷uK\�Ç„#Fê> PÅ]gÖxmÛvt–„B°k8€g«é\ûqæž- ú˜+Vi›šŽ^Áι!„„AüäJ'„$xà5ú˜î[©RåŒÅì›ê\EáŒScML°ð™={¦ 6ضV9&¨cçÏfšCÔš¶ŠJ2|Ê”‰²nݪX‹˜yóèBîö³,I•EëqÙÖ­[ã},Ž@ô‚±·eš>(Zµj)¡�Ïj3M5Œ·ž‹-óÊÞ\ˆÎ™3/VHwÚ·okÁ„h>sAŠLq tVN8P™ m(AàïŽ{»ôèÑͲŽ5¢¼z÷îé2PÀø _~ùµFŽzÛ°Èò‡É“§jä"üpJ‚ò!þ¼Æ½›KY*îé6ùå’Ĉ<ðt®�XìÂÈh�%‰7p¿í iˆòXºôS3f”¦u_àš ï›Š´»Y»Þ DæÛ9W�Œ=(§�ú#ÒÆZ±råJý e„U6œH&Tyë4É“'“ŽÛ[žŒ•fê~Ü[oŠŒP޹ŒtªV΂ZÐ� /«çRÖ¬Qz¯V¯^’áŽE-ZÄÎ,„1ž5ëMyܶm›XFbD –/s BaçN¨swpŸ›7obù®ßT¶y>óÐLç´ 6Ī9…÷�Rö¦O?å—|ñÁÑNyòä±M9gÊEÌãÜÚNޱãí™à V©„5jàÚÇïZ!‘ÉÆìÛ‡‰õ¾“ýÖq5ÆÆÛ} G¿@nÏlQp¨pÐ-_¾\ CŒIÆõ]ûV÷Úq±FX°à#Wzî·ßîe9ß!Ê\Ë„ §ç]Á€²�ˆª ä³í÷˜_C.\P³q¹Ž>ˆ¾f•ÁórbÖ˜pü÷k†Ê*c$ ¥íÚµve$š?¡×cFÒúÐŽpÜ'+L9 ™e%#°Æ>|°,^üq¬,ZNôGo8½vžI„»ÍÆ©é‡õ¡Õzc®S§öjhµ¿»jÕ2-óЧO/Ë1‡9è³ÏF;qîßP‚Á ÙìÔ8pJFÙÊy:I°2Ô_¹ÖµkguÚD€€·²¤áúP84€-šY¡ßõíÛË‘ì¡È¦yó¢û2ˆÁ¹ÇªW¥JÔá5"e.,GþèS¿‰ }„B졃!$, •üÌ™Ĩ_í ‹XlØá¾8ùõטu­azׯ^½Î6­Òýz¦ª‡‚eãÆº_¦LMiGÙ²e\Y+POÓÞåf4(¢¬&PÞ[û ³ÀuÔ®m漏EÃË/G×脲ÎN oîÜÙé)¢XÝK!„ oÆf÷óô\ð¯_íðDáÂ…l÷Í(S÷{ óæÍ׈!oÒXË_|©é-·lÙ*N¥‚iP³2ƵjÕ°}c¤R¥Jº¹2V`ìGEeo`Aã–·¨{î¹)àÀc‡‘Ì÷²�f4»;¨ÁýÕWßè~¹rå4•oB"y™åÈ~c>?LYïôqœ–ËÀJ™ iÓF+v ¶ËXƒ±áíÚýÎv)·~8Ú¨™2e ÛòP™2Ý,A4Èž„2GpikíR¢Cî˜ Ê .Æz™¬�¢Ø·nÝë}(D‘¾T­ZU"‘Çȉ'tÿ¥—^ôš&ŽR&¡>/ípzìøóLpÇ. àpº¹rå°®7û­]Ÿsªßz#®Æ¸“øºOá©O?m}¯~ø¦Q÷Ú 8^C±½Oq±FÀZæóÏ?×}m¬ J&HßÊ:Äœœw²Œ˜t÷Ì3V +ÙˆÃbE»†£"›Œ0’™ãp‚r¸æè²‚ÞÏF$�‡ÙãÇOX~.ÒÖ‡v„ã>Y‘.]´Ã$2tšFbO0°r¬t¢?zÃé5p(ó¤H!Üm6nÜäÚ÷VÊ}kCo ]áØjäcb®©‚+€Pes(ãÀiåPÎÓ)B‘¡þÊ5è%gÏžaò{{ûáÂÔsá<Ü× ž@ö`þ*ÁÊ&<¡¬ @À–·9P(Y@"m. ÐÛûÒo"S!„{X"„H»˜'Oî¯!-<Õ±˜ÂD i˜QþaìØÑšæØ×®]Ó 'OžRc$þîØ±#ƱÝAKxÁ¯Y³N8`LŒ_–Ò¥KkÄ&¶)S¦´ý-œ£¹xDMesòmÇý÷'ÖTÇŽÝ\ìAvãÆ Ý·Sàš`¡„ÅÚ"Ž64ÃCÜפ<_¾|®ý#GŽXìR¥Jíõ0ˆ¤ÊÃu‡Û`ê­¶jÚ´7_nÜø=Æ{?ü)Ÿ{h^JT ¯SKÛiÌú²Pœ={Në@"5ù?þ(;w“îÝ»Æ=g vHj*î¹'~Œû¨û•Åëg©c¦g?qâ'K£Äý÷'‘@Áx…|Aù ´5ê2oÙ²Íõ¾§|q'Iß}QJP�ÀصnÝ:wÚX³f­«ý})Ü"‘Päm8ð¦¼PÄ ,Ò§?þSXŽã´\N)]`P@úc¤íµ×µ¬A¡B…Œ>ú¤£ÑNI“ÚoMã´R ¸GùŠ, tŽàŽ?Ï<øüþû±Þ+UêyC ?Jå4²Ðx:š™i`ˆ-^¼¨D"îY• üõö¼t²÷6vBÁé±è3!Y2{cF ýÖŒVóF(ýÖq5ÆÄ×} ‡Lżà wç§îµ;q±FÀo˜k_Y£p?ž[xãŠPæ]Á`ö̽‚­qŽ>h®?|½gö—@0×AX¯ÁyÚ›lwÿ-Ü ¤¬÷$ÒÖ‡v„ã>YQ³fu-óChŸ>}µœžóÏ>û¬®O¼9+:ѽáô8”yR¤î6¦³*ú>œÊ½u¡¿`|êÔ)ÍqöìY9sæœ<x@Ë#€¿ÿìä@es(ãÀiåPÎÓ)B‘¡Èµøú�=°·ùÀü'ÔyG°² Îå&¾æH¸¿ +a Dú\ŒBHÜ@ BHP BÏNI£ðÚµëuqƒ¨ÏÞ½ûÊܹ³bEb¹páDzmÛv]äyâ«6o÷î]u‚ßBô+j7b¨sˆB,¶<hP0˜ 46¸|ùWËc¸;Ø‘&Mj –‹£=²Ó§Oçó³îçrá‚u)§k‡J°éÍvAí_¬ã÷÷Š>X ¤ýFÔ»“`•E·òåËJ“&Í5E'Œz… 4îiZ •_~¹ùâÍ¡%œøZ ÷l2/†–>ú‹/viý[ÔA·Š”tz Šø-¤Qtï'+VDgµ@´¢U*Í„@°ò6¤L™ÊçgÌr3ÞúQ(ÇqZ.; R£N›6Cš¸gØ�Æ?žÝ(kãTÆŒpê!ÐÏYù ' Ô°†ãè•+W\ц—.]’;wé~… |*ã ÷¾Û±c¿¿ç>çq’H;NàT¿õÆ­2ÆÝ¹•úE\¬Ü%—|áÄ\Òq=ïrÇ”s0¶+‹ÃÑÃiÔs—í®ƒ¬ˆ´õ¡q%+`”<ø0àW 3 æphƒ³1Önž©çèÞpz œPî½7ÂÝæ�ó>€’¾ô¾ä:V®\¥ÙöìÙ«wOp_°ö •Pd³ã�8!£¼Êy:E(ã(¹Ÿ mA¸õŸ&Á¶©{ßóÕ¦xNc½ÿóÏg$ð߉¼¹X  ãO›6o !„ࡃ!$, ÚyïÞ}ZRáØ±cº s÷êE-·wßâò’Çä9sæÌòÈ#ËÃg”¬Y³h^«Vmm#qâÄšâ±~ýWuqŠEÔ¡C‡4Ò ¿‰mÁ‚…Z×¾Aƒ›µ”­ÁjbçÕìÏñ‚ýM`.¬ýY`¸+òœXG2Á^ßÄ_‰ _ m%ú+RñAÑ‚l0ÞRú‹Y/Àø3µ‘½P$™@ц´œ([�¹’={v]x¿÷ÞhqŠR¥JÊðá#´\ÀªU«]?üpH³’€ªU+IB%XyüIMm–Âñ&7C9N¤ËeÔ¥EºÝU«Ö¨buß¾ýš…)TQƲ1 &m$:81Gp dƒú jתUS_O(™iþý7¸>g¥ìw‚[yN—ý6¡qOnÕ~®5‚ûóË#þw†^ Ýñ1ï²"WBëƒÁ¯ƒ"7 ?Äå}B þ?^ å'¶nÝ&ß~û!kQÛìÙsdĈ!’!C†Xß—ã­¸vЏpñg½êmî…L"­[·Wd\‚#þCeŒ3J®\9u=iWîÂ_œÍÁŽƒ¸–Q¡Ž×ø$¹ ø7‚׆Š{Ö—pΑ"m.F!$~ ƒ!$lÀC�†8ÓÁi’MtŠÉ¥M›VR¼x±Xµ¢­"ÿ¬@ù³ û÷Í›·È¢EŸèmüø‰êÕn<Ó¤¹Áß®]k©Sçe wl¤WôE(5KÕúôi¿~™LÒ¦ŸLqî#úH±bEdèÐÁr«àžÖôĉ“âî5cóæ}VâDý`¡ímñ Ù`’&ïÈ+Ö­ûÌ¥H‚Ò¨uë––õ;asÔ"-S¦Œ¦'ýüó­ªÌAÄ Œ_�i@+T(/ @åm øë`ƒ2O¾8{6ú3©S§ Ëq‚\N—.¼öÚ«ºaì9ò£–'@t=Î e¼2d˜qQ+NÏBå©§žÔZÂ?ýô“*ºM‹U«¢•Þ9sæôZÛ:¾qŸó|ðÁtŸ%ÛÂÍ­:§‰~›PǸ·R¿ˆ‹5‚ûo¸GPÚñ믿H¸ˆ¯y—;朶àŒSQBëƒæ5'Ir¿aP\#· q}Ÿà`\¥JeÝ�d8œŒ?ùd‰ìÝ»WŽ=*=zô–éÓ'»¾ãDôÆ­º…p·yôoD÷!dðõ(`Ǹq]Î¥J•”×_o¨Ùa=ëpê 'es(ã .eT0ç "×·õ8æÈôà.[íEÿ*žs$8-y#Ø9R$ÍÅ!„Äá/DF¹mI™2¥kQÝ&ˆ´3£ûºuë"•+WŠ¥€¨-(0rÂ@ݶm+3f”ëuD�˜¤K—ÖU—)ƒéÝÌúˆÈÎá ,À‘Í#X²e‹Ò¿ft¢7víÚåö½lr+ƒHP€v‰Oy6l¤¼ýv?¿"÷Ü£‹ÐŸCu½wìøB÷óå{.ÞR¢ï<øƒ×ϘµfA–,™%¶nݪ‘ºuÔ¨á’?>KØÕ«WÅiÌ(v8 œ�0[P6EŠr+ἉßìÇÞ”-þ8<€¯¿þÚëûH³ È’%SXŽ“Ðä2›à€ $³gÏt)„V­Z%‘F8çÁbŽíï¿ß£ÎbgΜ•èkÕªEnö 5k”kÏž=ßܪsšøî· iŒ[q+õ‹¸X#à7Ìúí»wïöúYDƆ²ñE|λL}4«þ…ah÷îo½~Ö.{UBëƒæ:kl”&º]ˆïû„Èwo'O/ æ××`,w¿NôGo$¤5p\î6æÚ¿ìÞpÏé‰)3‘±bàÀþúì¶Ê\ªÌ §lögD‚Œòç<#@äZ°ý׉õ¸9`á+Ó¯ùO8qÏPâKüøãѺê@ˆ¤¹!„øƒ„°á¾ðt¯Iç¾hðV®`ӦͶïÁ}É’¥ÆbqŒíg<Ü{コï¾pÄ"³D‰ºHsoÑ„XÀ|òɧrøð‘iQ»±hѺÿÝwßë"ÃD´›i惡\¹r®sùè£E¶ŸƒbÁ‚uuÝK²Ä%î ‚p¦ÍE¶��oñõë7xýìš5ëTÑÊ}”ˆ@&”P@´7vÞ™�B}{àÀA®ûШÑëŸ|ôÑǶï]¹rÅeB´xTT †7nèßäÉ“ãÀ¾öç¦MŸ‹Ó@æ˜2móæÍ*7ÌHš¸Æ‰ñмîÙ=dÇgŸyÇ&_|ñ¥WŨܹ \×Z²dɰ'¾ä²¯û‰qy8bĨaÜIž<¹+ãB\:)ø‹s§©X±¼°aÈøüó-:¾ÕåÊ••Hæ±ÇrÉÃ?¬ûü©WÅ,ÆúŠ«Ô$\$´9¿8Õoo‡1nÅ­Ô/âb�Ùc‹¾üòk9~ü„íg!³ÌºéâOºòøœw™”.]Ê•!mΜ¹^?Û»÷ÛR«ÖKêüìnœŽÔ>h7w+]º´ëþÌ›·ÀÛ!t „~.'§ÒÚû3g‹û„cïÜù…Lš4Eç¬@{öÙ›Çto['ú£7"i Wë~_„»ÍAÉ’%\ûf–V+àhu“¦ÌÌœùÛ±ƒ2"ȼ`G\ÈæÐÇ32ÊW õ<#åÞá…—¤aÃÆÆœ~‘‚ëñ%Šë_Èo¿èÐaŸNHá È&/^êuí³dÉ2 –¸š‹B‰lè`A 'Nœ±cÇé>… t½ã©É† -¿¿k×—òÁ³í/Ë—¯”wÞlÀæÉÒ¥Ö“b ÌŽÙ²ÅLß]§ÎKêmŒ÷»víié©Üرdðàaòê« b-¤_|ñ]ðás½{÷µL /ô &I(”(QÌÕfS¦LÓ¶ñÊß•“'£KJÔ­[ǯ:€áàþû»öÙµÅQ; :L#‹­@(RZ´h%={ö’ø�‘¬�÷ i)íŒ"¨™nö{DŸ–.ý¼"k´AƒF®{€þê^~$Ìh—ëׯI(àú0.=Á"÷È4½ôÒ ,3F¤ˆµ‹X˜>}¦×È¢P¨R¥¢þݶm»+{²æ(_â3Š;C•·O?ý¤K96uêtÍ�à ŽkfýðÆQ¯^o«¡ÑÔÜ5euúôé4}r8Ž_rÙ—|…S䜹P®ÅJyôè1Ãè-/³f ͉+81GpD(™ 4(Ȱ’%‹[f)ˆkÜ#¯]‹­4®_¿®þ=räˆ1–YZ ˆÇ\¦_¿R£Æ >3KB›Óø‹SýövãVÜjý".Ö5kÖп˜óá7¬že§N’áÃGJ° ÝºÙÆvs'æ]¾d˜/ £Qš kÛŒX~s7«óëÅ‹bôŸHëƒH«Ξ=k9μP¦L)ÝG�;c®µk×îÒ¹s7©]»NX íþôðgÎ÷ cªk×2mÚ Í>heŒ½~ýº:/�è:2g¾™é̉þèHZ;±Îp‚p·9@¿ËŸ?¯îoݺÝÒ‘}ïÝw{-¡`ÊLÈÄË—/Çz™ùÒ[T}\ÈæPÇS2ÊW õ<#åÚ ACµo!‹žçsáî»oV€·r®ub=G&8¬É“§Yö_ýÕè¿ýã5»êªT©¢ûè_ÐçZô5Þ€üÁ©¹˜¯ûG!$r¹K!$à¡ë¹ Ä$¯8pP=áÍÅ”î^óHOˆ´mX ÁÓ)Ø‹+&)S¦ÐHŒmÛ¶i4FæÌ™]éÙ=©Q£š*—¯\¹ª5¯‘‚®pá®c %¢ÑèK/½ãû¨sÙ¼y=zœüðÃR¯ÞkR±bEÉ“'·¦ÏÃDõÕÍú˜XðT¯^-Æ1ž|ò ­ÅŽÅ"²Ô­[_'بq /ixm£¦%Ω`Á>#Lì€Òñí·{çû¦¶iÛ¶¤lÙÒ’/_^Iš4©NØ/^¦N-�õâëÖ}Eâ ´‹ ²'¼üòKÆÞòØcÅÈd*(OзooiÙ²µö´O©R%µ­QžN3XœšíŽèú¦M›H|€èçµkתÂçСCF¬«çŠÈbôO,”·lÙf(Û£ÓbáÿÖ[=¼Öv]¾|¹+$@ŸCºGÔîDÿw÷‡Â©}û6,Pâ! ÇŽ;5”¾E‹ (b-GŽú=ï6lØàªMåç¢E‹]™žxâqyá…Z,H×…ÑíÚuÔ1ùÌ3O©CdÎêÕkulFEEÙÊ—P¨T©¢aôšd(w®©‚ÀÁÆ›¯U«¶ZÊ,\87†¡.TråÊ©ý²Ê(R¥J¥[îÜùuŒPåmºtÑ ›7oÑÏÃñ÷Ê-DhEgØ¢ãN8¾ÀçÐëÔ©§2Ä7~Ó¨¥µk×ë½GßìÚµ³žO8Ž_rÙ—|EmeŒ!(ÛÑ–¨“[¹rEã½UYƒhê%K–¸¢í4¨/‘†s„pPµjUã·w¨¬¾ùZ‰zèf*\Ô™F-gôCÓ©®FêÆyoÕsG¿øþû½Ú/¢¢² ÁµŸ.Zô‰ñÜŒ6—+WFræÌ!á ¡ÍiüÅ©~cFœ#èÖ­³öøæVëq±F(\¸T¨PNŸc”W^yUkœ¿ÿþG3g,^¼Xçè7¾Òd[9æ (©øÙgõØ(µ€5_‘"ÑY:œ˜wù’aþСC;½FŒ 8®ÀpYÃ+J~ÁØŒÌU mÚ¤M›Ö1¾i}}׃5æ^(5ƒ+ –¸/ sçŽ:æ1÷:t„Î]ð>äæ¡X“ði:À6oÞÔëÚ"Xüé'þàÏœ5.îÖ˜µk¿(³fÍÖõ¢Å_x¡†öaÑбv1½èóÈäN¨ýÑ×ùEÊ؉u†S„³ÍMºwïjèè3öý÷ÇÆèFÛ?¯º.ôô=ô:u^¶ÍrQ³f5]óc­þÚk¯Ë‹/ÖÒr!ȺräÈQu±7™²Ù‰qà„ŒòÕÇœ8ÏøÆ›\K’$‰Êµ¥KWÈñãÑ™Ÿ}ö—aßäá‡3ºö§M›nÌÊk;GEeÑלXCwÓ±cuØ‚#t+VÐg5ÖʇÖì¿—/_QGÓPB¡I“FÆõ|®s°eË–k_ØÀ\}oçÎÚ1¿þùçÓAg—pj.æëþE‘¸– „ø‚„ ð–ц)L¬±Pr‹¢!CÞ•Ö­Ûʯ¿^Ö‰-6w``ìׯԯßÐòØP¼ ü®z»C±€E€ÕB�Ö¨mieدW¯®.fǘ?ß:u! ÿÃ{Þ¤cÇvºpÃÂǘ9sVŒ÷±à0 _Èiqáø1vìûÆäµ‡Nþ± Ææ "Zz÷~+^#ú©_ @>cѲKæ"¢uë–ÚæN#ƒ{»Xõ%�vÿþ}])³ãÜ!Cýh¨FúcAŠ¿VÙí�Ê÷¬/V`áÚ¿ÿ;^?ƒ” Íš5Q%(é{¡>ü=]Œ"¢Ì;; œ+  lÚ´…–æÁæ Ò÷40¤þ›)S&cÑßM3. ‘u›;P.”-[V£ºœ ¶Â… º®í^µª÷ò ÇŽÓ¿Xð;é\ lnÔ¨¡*¡¤0à]}½H‘BÆ=ê×1œ·Ýºu1®ó„*¼aÄõŒÚÅùÔ¯ÿª_pî@;aQo:±¸%U¯^=UáÎãć\ö%_ñö3žM]Õ™Ëý3î@¹ŠïàÜ" 'æá�rÏœÀxÍ›÷9‰R¤H¡÷rÆMê4Š(@ŒÇ+n¦¨~÷ÝF»×è48¶Mœ8ÙòXpÈëÑ£›„“„4§ñ§úm\Œqó™ý{$R¸ÕúE\¬̱ Å> &žÏ28ì¢_B6ã`Z¶ln"Û«c2ûÌéÖ®]¥÷À‰y—?2Ì0üLš4^3Âx £6O2fÌhFG2üÁXïERD¶ÅU«VëÜ åÌ’™2=¢Ú�FÂ)S&çû–¦|·“O­Zµ«ÄW?ñç¬qqŸš6}Ã0 ŸÑ¨w7aL·ÆÈ¶m[Åz݉þèHY;±ÎpŠp·9ÀÜoܸц|ï¬2w×®¯tsÙ`ܵӗ¡läž=û´DÌñb‚µã›o67Þ;ïÕ!3.ds¨ãÀ åO õ<#å®ûw¸íL * YѧÌï"*Öæ&N¬ÇqÌ7ºk6 8Áy›;hcÌyãÓÁs¬Ñ£ßÓùæËpþ€Þ×8Z ÐWED‚/ßáÄ\ÌŸûIDêZ‚Bâ:XB“|ÔºK“æ5”“çV`‘?oÞ‡2gÎ<¨„G9¼ë)‰ä+¯¼ìµV€§ôGÍ×:…ˆPÀBá·ßn¨Q JÔ?†÷0¼¾í€áF6(?‘]� 3D�â:pî¨ cƒb¯ÃcŸA„÷?h„DÒ¤I´ 7~C½Â¨;ŒH¦ æê)X<"’ Þè9sf×i${ :t°¦ÁÆ"÷}ãÒ¥_% ].œ§JH”Å@»`QŠ4Ûˆ\@G­Z5tqŸ˜ÆZ8añ…ŒçÏŸ3¨¿KªT)µŸ ¶+¼Õ½õY;Ðîp‚1<{ölê 4ŽÞ"øýÑ 0 *í{ï½÷h4@TT–@£}uÆŒ©2uê cÜGGO`¬eÉ’YªU«¦cß e52F òõk1&±°E$AµjU4ËÒÆ Dµ›ˆ01ÓøZ”¥È<ÂUF¤aÃ׌{z••(€{ cO „*oáx2cÆC±7_#­™uÏ=wë…ìB„ÙO?ôû| hË–-«Öô…ÒQøˆò@y:µUljk¹ì|ÅoOŸ>ÙPŽ­2Îé3ÃXuHï7²3=ø`½6Dvyë—ñs§ ©P¡‚Ka^¥J%ÇêÎ;AÏžÝuþ…Œ2PšâÜÅŠÈM�ƒ;í5kV—O>Y¬QçÎÕèª4iÒÈSO=aÈǪA—’ ”„2§ 'úm\Œq(×dw0¦pr+õ‹¸X#DG½ö6~£œ®ePÚs+üÚ²aÃjŒ‡R?X0™0a¬Ñçf¨±Ï~<ëa0ûó._2ÌðÙÉ“Çëo-[¶ÌèëÇõXX ºãrÎ[‡H郘7Á0‰4ì;vìе Œ§gΜu9X¸_3¢qÎG×R„hÌa]»v-yøá‡%œøÓOüÁß9k¸ïž™ýú½­Æpü²alA㙉HddòöÌt¢?z#RÖÀN¬3œ"Üm #B æRÑkšS:—‚ãFÕª•t­‡; Ûºwï¢Î p²@¹(N@nÃqWЯ† ó^R .d³“ã å«9qž‘€•\ÃuÂQ ¸_%J·ü. ÆŒ%ï¿?Föîݧ1ff:§Öãhg´é¼y U§uæÌ-q‘3gN©WïÕC!s^|ƒ ©S'ÊêÕk4° @Ð.(Å[¨P!cöºöPqb.æÏý‹$"y-A!q¿ZÁ;ü|ï?þÞaós»Óí¯¹%úÿk‰<6¼‡Ü^wþùç_7óõB!„Ä(1ˆ"ЧO/–±JµF¢Óö"SŽÒäv)l›5k©ûˆÄCÚÔø<¹=A¤êzÃpºhÑBGË^ }x©RåäÆZ~$”òa$áзoH…SëêÕ+„B!„ˆT¯^K“õÿÂÅ­2ãZ‚â÷Üs7êšýklWþÿ÷í¿ÿÿý×mûÏí¯ç&6ÿ÷ö×sßoï)‘Ÿo•B!$H2€¨…R¥JzýìÑ£Çô/"lZ´6!·ÈD`¦êÍ›÷Y:W ¢ß¡ †'k‰[ ì‹Ã‡Ô¿2Dnæ"B!„§@¦“K—.yýÌåË—]™"B™#ÝNs1®%!$&t° „Bqˆ“'Ojš^€r÷Þ{¯×Ï#U%@JØ`JÃBâ8W \¨Y³¦’1Ÿ9Hg驲‰wŽ?!íÚu_¬ã57ÒU£(\¸ B!„ÜÊlß¾CêÖ}MÞx£©êg¬€óüÈ‘£ô/fŽt;Ο– „˜Ü%„B!$h8('Nü$¿ÿ~C¦Oÿ@þüóOu¬¨W¯ŽÏï;vLÿ,X@!‘êEÿõ×ßòÓO?c{¦¾†:Å%JB"æ3çé§ŸÔzÏ$áò÷ßËwßíÑ9GçÎݤdÉâR¬X1Í®ƒ×à¶jÕ-Ò¥K+/¿\[!„Bne.^¼èr¨_ÿu©\¹’<÷Ü3’*U*¹zõªfýôÓ%rúôiýL¡B‚Ê&z;Ο– „˜ÐÁ‚B!$æÎç*�î¸ãcÝA2dÈàó»ÇŽÐ¿t° $ò:t¸œ;wÞõÿdÉ’J¿~}äÎ;™$LøÌ¹uÈ–-«¼ÿþHéÕëmUàoذI7+2gÎ,Æ ’)R!„BÈ­L•*•å¿ÿþ“#Fi9‹>úX7+Š-,ýû÷•`¸çb\KBHLè`A!„§Oÿ¬)ïºë.Éû1iР¾ä˗ׯï.X0G!‘ÇÙ³gõ/Æ5+òçÏ'Mš¼!3fB*ݺuÖÜ<þx™7o¶¬\¹J6oþ\:,—/_QGÏÔ©SI®\95’²|ù²’(Q"!„B¹¨ZµŠ*TP/^*_|±K3Z\»v]î»ï^I“æyê©'¥\¹2Ae®pçv›‹q-A!1¹ÃÏÝa±ïíï6ÿ7·;Ýþš[¢ÿ¿–ÈcÃ{Éñ÷Ï?ÿÚ&„B!„B!„B!„B‰(î¹çîÂÆŸíÊÿÿþã±ý÷ÿ¿ÿºmÿ¹ýõÜÄæÿÞþzî{âí=…ùm !„B!„B!„B!„B|@ B!„B!„B!„B!„ÐÁ‚B!„B!„B!„B!Ät° „B!„B!„B!„Bñ,!„B!„B!„B!„B|@ B!„B!„B!„B!„ÐÁ‚B!„B!„B!„B!Äw !„B!„D ÿþû¯¬^½V~ÿý†TªTQî½÷^!„B!„Ä-œ—B!„Ü„„ 8w\¹Z¶mÛ.§N’Ë—¯HÒ¤I$]ºôR¨P©X±‚dΜÉò»/½TWNœ8!Á2rä0ã7 ºþ_¾|%ýý\¹rÉŒS$¾ ¶m.^¼(•+W—Pؼù3¹çž{\ÿ7Û&V­Z&)S¦týÿÇJݺõm?Euš4i$S¦ŒR¶l)UêyIœ8±„o×s×]wIêÔ©$}úôR¼xQ©P¡¼¤M›Öò³î×T·î+Ҧ͛â”Fš¨b!mÚdÞ¼%I’$~}wìØ 2kÖlݯU«¦téÒQÂÅ¥K—dÅŠ•²}ûN9zô¨\¹rUûÚæ‰'7Ú¦œ<ûì3>Ó½{OÙ°a“íûI’Üo´yyòÉ'Œ~]^òæ}NBaäÈ÷eþüº?þ[,އ;ï¼ÓÇ›c¼æT›,_¾Rú÷¨ûøì„ cõ÷|Ñ»÷Û²fÍ:ÝïØ±Ô®ý¢8‰ûõ}öÙ¹ÿþûýú^»vdÇŽ/tÇŽ-¶Ÿûï¿ÿdË–­²qã&ùî»=F_½(ÿüó¯¤J•JræÌ.%J”0äHiÏVø’G÷ÝwŸ+[¶(}N”+WV’%K&ñAÇŽeëÖíºŸ5kV™3翾7}úL™8q²î/_¾XåkBäÛo¿“fÍZê~ÿþ}õ¾Ô)ÓdÚ´ºÿõ×ß豈w–/_a´Ó;º?kÖ ÉžýQ!äV£k×î²iÓçºyæsþ€ùv:õäêÕkú̘;w–dÈAH¦fÍåçŸÏè`ÈAB"¸z6ýüóÏF¨­ûíÚµ6ÆûËr»9·tércºMõw©R¥”¨¨,ÆÜ¸œ®%J$¡‚µ Ö4Ðu¬[·ZHÜô¿Â…‹«>¢FêÒ­[g‰K8/·&>ï ¹õàœ†Bt° „ÌÌÖEÕï¿ÿãõ_~ùU·ƒJ“Õð׺uKGï …Û±mþøã9}ú´n0°NŸþ ØÏ0–æ¸äï¿ÿ–sçÎëöý÷{ô<ºté¤ $§È•+§¼ôRm™7o¾œ?AÆŸ$:µ÷ù=…çΧûpÌhÙ²™„,êÑ¿` õìƒh8[`[²d©:XôêÕ#$£Âõë¿éöÓO?©Ò´R¥ Ò³g÷ÛjÌ{âo›T®\Q¶mÛ&ë×oï¾û^fÏž#¯½öª×cñÂt®€³Ö‹/¾ ´ÉÛo½{÷ÆzÊHl7n–3>Þ½{Jž<¹%PÐïÍcmÙ²M›5j †7XœNN¦Ã øñÇÕA 2„ž-&'OžB;¶—/¿üJŸ¹“'O“R¥JɃ¦÷ù½÷Þ{_ qã×é\A¹¥X´è3f¼üöÛo1^7×É;wî’ >’AƒòïA!$âb^¾iÓféÚµ‡îýžäË—Wâ‹«W¯JÙ²u¿aÃפyó¦B!„bB BH@Œ7A� †… ÔèkD_¼xÉ0 ЈÝþùGÐ.œ—úÅ8ŒËׯ_uì_ýÕX@Ó}a€´"[¶¬‰„Ú6I“&Uƒ·»w'K—.Óýš5kÈã[í¢¾¡<†Ù¼E¬ãšÊ–-ã5¤‡„w5¢Þa@=yò¤´nÝÖh‹~)ºƒ×Ó´iã¯ýóÏßF›^4”F_È7ßìV¥ÒÛo÷ӌŊ§hÖ¬±±èß¤× úécå²ý<"ö ¢ C‡öz¯æ¯¿þ’·ÞêíŠæéÒ¥•§žzRÒ§P®]»&ÇŽÓ¨rœ"N4hdFHîÜù<>"1î¾ûî¯Ý¸qCþQÖ¯_¯ÆŠ+VIŠ)¥mÛVÉø;î¸Ã»A>Ô6éÚµ³:WÀYgò䩚qÁ.šïìÙ³2tè0ÝO™2…q¯{çw‡$àðТE+£�÷ D‰â’1ãCêtúôÙ¸q£œ9sVŽ?nÈv†rx”×¾™"EriÓæf»¢_CÖByŒ BøMÈ(™Ñïì#ÃO8Y³f­ÊúäÉ“÷+•fmB„,§I“7´ßܸñ»!?Û !„€téÒÏ•f2lØH}ö6ÜØ†xýæˆk×®×ýìÙ³Ë+¯ÔB¹UX¸ð#>ü=݇^�ÑÏÏ<ó´±NªY6áØ}èÐ! úhß¾“LŸ>9l™'É­ çå„B!7¡ƒ!Äo>¢Ññࡇ’#†J–,™c}F­nÝÞÒ…ûºuŸI™2¥¥dÉ®÷Ý÷=¿g:XdÊ”É0\W’„‚mƒRÞ®Ùt°€óI ©ÖS¤HáH{fÉ¥e¬€7ÿ¸qeöìµ$ň#ÖÎ×cwˆ,@ùž={«ówÉ’%ŸÄ2„ ”P;w4 Õ0üÎ;ƒeæÌ©¶Ññ‹/Q#:(V¬ˆ<ÿ| 00˜Î0ÀwêÔQJ•*ë¼à3jÔhîÇ}Bƒ3¦jùo Ô‚ó 2 t ”-}ô±Ô¯_WR§N-‘ŠSã!Ô6Iž<¹ôêÕSÚ¶í 2}úôÓ2GžN�pè×o +â¶{÷® ®lÄûïq9W4jÔPÞxãõXY=âýã²c”:F¼ûî¯c«råʶ÷m¶cÇNÿp`ùüó­†<.o½Õ]â‚+¢Ó$Ãiå¡PhÍš5zNÉ¢Û…‡~Xm!Ä”\[µjìÙ³Wç5pöµ›gýùçŸú�x®ôèÑõ¶Î¸E¹µ@ö4¬Å™ß{ox¬r‹È–‡y6Ö&p¼Ç:õv,¡B‚‡órB!„›Ä]®dBH‚‘Ø0Z”€°r �XÐ#天´\±b¥Üê°m¢•Õo¾Ù\òäÉ£ÿG¶(zâ8­˜Q‰(Í‚ú³NR¸p!—“ ¢€‘ÄŠhE×݇!Žá�™Pô±éÓ§H™2¥, Ó<òˆ :XK�´Ï°a#$Ej¦Ë„£À7ß|+·;þ¶Iþüù\÷e$&Nœë3sæÌ•¯¾úZ÷«W¯¦™p–@é€,8È>ceÔBEù¤ªU«èÿ1¶ŽùQ‚Ù=àÜ€±�‡=°lÙrùâ‹]nPè‡~Ðý¢E‹ªc¸|ùŠa�Ü*„BœÏ 8šÜFŽ|Ï2K@ ¿S§Né>ž»Þ²BHBã‹/¾Ôl> ]»Ö±œ+�df«V-\âN¯‘ !„B¹` BˆßüôÓ ý‹¹/¥$êyvîÜA#äS¥J)·:l›h`Ô,[¶”ìÝ»W³GüðÃ!)X°€ÄåÊ•Ñl`ß¾ý¶™S‚¥}û¶êØ€ûhWûQûx´hÑTîá`Ò¤©úJ³Þ½{ú¬'Žû„’ȬÒ5ˆî?pà`Hå }ôfi‹_~‰ÇšHÃß6c ÿG•¹sç©Aþé§ŸÒ÷Ž=ærºÈ˜1£*L'Ožr9 åÍûœÏÏ¿òÊËÆµ>¬û÷ÞZIx@K/5kÖR3ÎLŸ>SZ J�dª€C ²Þ¤NJ.]úEêž¾¤8¢±á4‚t÷GŽ‘ß~»¡eSòäÉ-+V”%ŠÙfÿ@§]»¾Ò2V“&×ÒNS§NW™†L)pJ©[·NŒR]èŸ(·ríÚumÛâÅ‹Iƒ¯ϲT~327!}5œ‰þþûCf>¨÷£NÚ¶r ¿‡ûú÷ïk›Á ÏdñYºt©;vB.\¸`´ý}Z T©’ê¸j‰”žY½z|ÿý^=þÝwß%iÓ¦Óv¬]ûÛ?èw'NÖû±mÛf-Ù´hѧzï`ðM”èN£Í3K¥Jåµ ˜Ý}3A&¢ùó?RÇ+dƺ瞻%[¶l:vpOB¥páâ:^ÌZÓ»v}©YXöîÝg´ó¿òøãyŒ{ÒDžxâqý<Æ7²,Y²T£ðÈ+\ ÙÞ² ¯ZµZ6lØh|÷°üúëeI–,©Ñ72Hù´]í2ö˜ç‰syýõ²{÷·F»,ýûèxø˛7¯Ô«÷ŠDEe‰ñ]8;uêÔU÷ý©©í^‘›þÈ2àÞQGü¹çžÕvúä“%*óÑGá öæ›-Œ¾”V?Ùüù u¼à^CæÈ‘CÛÂ;ô‰?þTÇó™3?ëýA{"M|íÚµ\NgV˜mÚ¸q#Í6„RhK—®Ð2G8¯O>Yk¬"‹ÛÂ…kD z8; µ@üú{¾2d… JâÏœ9KKD?ɸ·íc|æØ±ãÆœpŽîc®Ö´é–Çò”#/^Ô~ôÈ#èÏ•ÔyÕ. Q ²ªH‘è9é‹/¾ë\áûï÷è=ڷƒìÀý-T¨€¼ðBM•ÓÞÀ½[¼x©–Ö;}ú´–³ÃwräxT3DÙ•Øs¿Ö‰Ç©,X½z­ömDÅ#u<ä;žC¸7ÈØ 8/ÈK<óÐá°¹�y‡ŒaÈLæ ó™‡10~üÙ¾}‡>Ï0÷Å<óÏŒXÁ¶;({6oÞãa\ÞuW"CE©3)úÎeÀ”)U¶Ãíòl2¹råŠ|úéùì³Æ½9%ýõ·f¬R¥¢ËiÙÁȹPäªgÿC™I´ýÎ;ÕÑ™á Q­Z5¯›Yk‡qãFë>æ‚vÜwß}:~à�}íÚoÞ©%%‘íâÀ´o%MšD³i¾þzÃ˶&´ç£I¨ýÏ$”y¼¿@ƒ11‰û Ç0÷®[÷e}VНg](s³ví:ÈŽ_Äx e#M^~ù%Cf¶‰uNNÜWO0ç3eLfÌø@7€õŬYÓm¿ðઋڳgŸk.awÝV„{nÊüÛ)™W²Ñ÷aÉ’eúì5ç*ÐÇ"� ÙϪU«j¹VtzÎ꜆BHdA Bˆß`1°Gd¾¯�5jT—Û¶ÍMÒ§еñbüÚÓ§OÖóÀ=nÕª¥–²gøðšÂ)œ@îܹ Ew- 0Àá`Q‡ª?` þ©´X¶lEH§Nví§Ió€ÿÛ ù~ýúhId»8pÌ™óÞ£þýßQöñ™„X'ù¾ûîuíŸ<yÚç磢²ø¥xò(AŠ)¤ŽD0”Ààáé åP(¢È—ï9I’$‰î/^ÜPÆ.6 ;üzFø†´Nº©1ÛȺ͛·èø€}½þ0СL ž_&Pôöï?PþøãwMÁÃåøñc|'dïY·nLž<Á§cר±ÔHïèØ>ùäSéÙ³»”/_V‚áüùóÒ¥KCy»?ÆëOPLb›={® ò®­¡É0:õìÙËPøÅÌ€‚±yýú1U®AI¥/ gÞ€’´Y³7Uìä86”¸9r¸+"ß(ó¦FZ“ßÿ]û66(´Ó¥K+Ná^ÏÝäË/¿R‡›©S'©âmƒñåúæ¨Q‡´/¾ÿþHK£4”ÇݺõTw Tņû Þ­O=õ¤í9¢Cá=a¤¯c¬G/ÖÏêþ†(ìz™¨x –.‚aíçC»ãã3�ýF `À=ëÕ«¬_¿ÁõZ´‚{*à?ø`š*YÛ´i¯†#“?þøCÛÒ»·lÙÜö7Ð^¸_îý>|X7”aB!8•ø¢G·\Ù‡ì€ xÿý±*ûܯ ÷úO—.b8k…”B»¢/¡ ð{îσ Q…6@61«ò^vrýŒ�0¸ 6((£”“@¶A {ÇYl0ìwíÚY*T(ë3èÓÉÈå~ï�d;6Ü{ÎúöíãÕȇséÔ©‹>ßÜ\ĶfÍZ5úúzFØgfçÎÝ]s]ÈPí6oÞ¬ÁwFŽ|ßö}§ÚÆ×·ßî§ãÁÈNl0|>û¬sv;nÇgý:wZw0o5jŒX;uêà÷ñü‘sNÊU2[¶lå*ûà† 2fÑ¢§v|'(§$Ìmý™ßÂA�óH%‹µá׊û‰ûêÎ¥KªsžíǧH(ÏG§úŸSóxoÀy ówO9†öÆ{ VªTI ÁÌÍ‚ÁÉñéÈ,ŠñãÞöî×ûêÍI/Üs+§æßÀ)™NÙàÐ0hÐ`ãÙÓ©Ìü ¬?ýt©1އ{-ÅêœÇé9 !„ø‡„¿)\¸°NLFö—dÉ’ aÛ¸sýúÍE¢\âï<®»GR ˆˆ^¹rµ*a\‚7<"m°ÀG}[�Ã8ê|‡bÇ®]7•ªeËfœ„‘(MšÔªÌB(X`˜5£9’'O¦Q·;¶ Œ¾Íš5–1cÆ«Ò ŠôÛ}ûöéû0åÎý˜$Dc¢!¡ÌC[Äu™d°1 ÀP „ËØ‡qtþ|t„X©RÏ»^GÔ3,  x ¥Þ5ãMš4We ÂE‹6®¯¤FFAa g©={öjÔ!”·&Œ±ÍÜ€¨»Þ½£•· Ô×,;PA‰,ï½7Z’$IªÎ(Qƒû Cäҥ˵¯Â@ G 3jÒŠõë׫ŠDÁ¢Œ"õp/V®\¥JÃ>}úFÏÄ~E»sõêUm(."8á¨=D*!2 Æ'(®)5cÆ´€l ÜìС³Ä�23Ô¬YM£rÑþˆPC$4’0Úåʕ˕ÙÁ(›á¸òûï7¤cÇvÉ$&Mš¢í %"d"k=A´œú�EëE”'JÓ@ŠãÀÙÎ idÖ¬Õq¯téçåÞ{ï•o¿ý^3±àž½ûî}Ž`l!’QÎ)S¦ÒÒ>‹/V%)žPð{^Œy­ZµÑˆ9�C ÁPHÂ(‡Tçp¼Aty÷î=eÁ‚¹¶Ïòo¾ùFÛ ÑgpÂ=º|ù²f“Aä- 0ýú Ðc˜Qax&#BN?ˆ˜C„¥ƒ"ÆÒÙ³çt¿jÕʶ޾€ÂÙ*V,¯í†ëÜ´i³ž;”ÜÓ¦Í4Îc·öŒë¢E‹èb÷îï4Êò~Ì3¬Îý�´EΜ9ô([„þö„±Ï(o†(”¾ƒ!}¹Zµ*®û’2åÍÌkˆÌÄ3 ÀYc;GŽìšã׋ß0à=ÜŸp×µk'uŘ6l¤L™2AïÆ î/@?¶2æø’#Ÿ}¶Aû$Âà 9{öLWDu|�£°ùLýyá…¡ ¹þ ‡ 8ÿ¢ßc.޾ädº™å «Õ«W7Œ(O¨'ú""aÄÁÚc†K;fÎüÀøÍÝòê«õ´}‘ÑÇÀØŠ–½gŒó¨Ñ©CF«VíT¬Y³çZE£Å1Æ?ÿ<ÚÙ«×Û:Î}ó‚óÚìÅkj¦1Èe÷R N´ Öo½Õ[ûb´¬© YoLYg,ÚçÒ¥‹,·ã³ çñæ›mTdjAV0ô9Ì…ÑïcÇŽ÷ëxþÈ9'å*äK—.ÝõÞ!kdô¸® ºÛµë¤ò+kGŒ“ßÕg8ú‰]Æ…!C†»œ+áë~ôÑl:oDŸƒ¡ÈÈâ áùèTÿsroÇòå+4�ÀìÕW_ÑLè{{öìѱ ‡•¾}ûr,›Îí&˜¹œ`�ǽŸ2eš¾ÖºuKÉŸ?¿î#Ç;NŽOOªT©¤ý óƒ–-£3HÂa¿yófºo—e먥K—Ï•ÌÆœ±’뺡3Â=ÅuCÞΛ÷¡¥óL¸çVNο’iá–x&ci>“1¿+R¤ˆÊ68K!8¿‡Ü›÷Þ³/ŸÊœÇé9 !„È€„¿ÁD‹, 0ñ~ñÅ—5]&–¡D¾ß °mnƒ™I0éÃs%@)Ò½{cÕPU0FæË—W¥Pƒºu_Q…T¸8rä¨kÿ™gž 䫺À„ÑB0~ãQà`!ˆ&”¦¸^drA$ŒUdèíB(m‚¾²uëvU L˜0Ù•Šß¸ŒºqŒ”EêØ±‹FwíÚC³; Ý:”Šqጆ4Ù&Èú.à,�``pw"òÊtfZ¾|UH#GŽR¥,Æ/ú–gj^8A ’ ÊK8èÀóÊ+u,…(gœÛˆC]™˜@Õ £Ñëj ‡B Š(´Ü(!Ò¼ù›.%0”`v Z8W@áhG÷±�E:œ]`$‚1pèÐáÿ7BùŸ©eĈ÷\FQ(å<Ç 2FÁ¹eР¡ªL|ÿýц!h€ø ³H# X}÷Ý1ä$RõB¹Y¯^•¡ˆ*ófÄ‚ÑkæÌéZ.Ì$:+Â3†¡ã5B!Œ´åî DÈ–#Fê> ¦£GŠ¡þö⋵¤mÛŽ>£qýJ¾úõ_ÕlG&p,ĸEäú¶’%‹«c©{ê^œËk¯5T-Œ4žF9¶ Üfiwàh§2(ÿ¡ü\·n½mö/(ð!?Û´yÓõÚó/ø`tÁo!j%LªU«ìʪÅ·ƒÞ¸¡8gmذIÇ€»çã'¢ÖL£.®×c‚6GCùŒ>„þìy®(ÒÑמA 2îé£K•*iÈ—Œ{ÙV#mQ.ml×WatDÄ{‡m-Jð{fy2D7:(FTatªå*ÆïµÖû7tè05F¹Ë§Áü«R¥ Ú·ˆÈgœÇرё€0–wèÐÎò»þÊD¤¢/½óÎ æ`Ø4+ “ z'F†´ʃÀ¡ òdðà¡*§ÌÏÀXdf¾@_™8qlŒvÁ•*U” ÞÐy ž%õë׳u,ÂøÃýwwŽƒž-H©,I˜×àÙ•EÎY¦!Ï‹^½zÆ‹UªTÖû 9a–"ó ÑçGa9/s¢m` 2$:rNix¾ºg½Ã'R¯·nÝÞUR,nÇgœ8Lãv·nc=-ccÕü‘sNÊU8zb~Û»~�ãò †bŒñ\…Q1”¹¢ 2*bdG7žƒk]sÈ.]:Z–6ÅœF\�'¤±cGÅHY2œ˜'ÂH‹±í áùèTÿsroJõ�è§M›ãþẠ(`Ì»«Áz€p¬3ƒ™›a½06Màb•}Îéñé Ö<Øð\0S¯Lxͽýú½ãÙŒçÖTkÖ¬Ó¹1®%O<¯)Üs+'çßNÉ´pËFÈ<“‘é½÷†Ç*ó‡18`À»úü‡“”·5m(s§ç4„B"ƒð„ÓBnI0ùÃÂ?(!01‡bºaÃ7 eSU]0@ í¾¹]ˆô¶­`Á¢>7D;„X4xdGEe‘ø�ʾ©S£kbÂàƒè’p'3zíøñãªTqiÜøu '.œ×¿X0ºG\ù‹Yº‹NÏt§î”*U.V)_¾²F6àºÑ ÌÑHH':zf…ÏÍN· äHŸ>½t‘XfZi” W”¸¢`ÁªÐ0ÓCC9åÚ«qãfê‚Ú¼áÂÝ1à—_ÂSºÑDˆ¾Pv¹;Žàþ™f¢Ó»–`@æDŠ(-=•²�Ï víZkÄ@­jo …¼§bŠÊòåË»þã¸g”dêÌš>ü£íoÀÈÔ·ooKƒá¨7  p†Qß_ÜÛ™QìÄP ¢­ .¨ °@ÀçW­Zf(Þúéø´rBƒÎLõ¾ÿA¯Çƒ\p7`™ }ÍRRÅP²º§©mÑ¢™¥Q}®oß^!×(6ÁxmÑ¢i¬×a Ä3Þ¤mÛ6±~ÊF³á¾B{µdÉ"U@{*wMà¼j:ÛxkWd jÞ¼‰å{ø3¥½»ã%À}3¯6lØ+•?@Þp ¥æ5ú Uö³ÿ¬ )Päšm~èБXû3Ãê<1Gx÷ÝhG<󡬶÷¾mÛV¶Fuó÷’$¹_ìg™²9**‹ah¡û¦’>Ü´mÛZkv<W`TFÿ8«´ÏÈ³ÜÆöí;Ãê¬çY³æè_\§§Çòr;:2¿ª:°™@N,]ú©Œ3JË&¹;˜@ÎAùÐ~.\°=<ï¬2á¹çîXõÕW_I  Âa@žtïn ÷Ī Š=zt³uzu¢m`(F+@ö1«’BѲºwHs»ÛíÙ„ß5ù`°2øA^uêÔÞï>þÊ9à„\˜7Ù_À™Ñ40#SŠLž<U3MÀxøá‡s´ÏæÏŸWæÌ™ek4…AD;�ôŽaœ7Að�Je:E¤?êá˜Ç[qúô)ý‹ñhuÿ²f’)S&ç²<lNüÁÎÍü%ãÓ pÿðœñ|6Gß×6.¹ouÝq1·rrþ œ’iá”ÈHÌcÆ Žå\a§1“}ûìuÁÎyÂ5§!„ÿÐÁ‚˜h¿õVw™9sšF ˜iú0¹Çb³Š«ê_DÄßNÜ®m¥-”phhÕª­«þeË–Í$.A¢) Ç3îÁÖ.õ¤ÖÏ’%‹î#-µé¨€èÃÉD+ Ä&m¹{ªÍ`SbÁˆvŸ3g¾™#DI ¤¯-‚m«ÒÞê€&$²pá<˜Ë“'ö×èTµ{eÚ´Iõ /«s‹g½àPI’$‰K‰aeDu¤7ÇP¹r±#ˆ*6 6jå.Ð6Ñi_°ý”–æïA?~ÂòsHGìžÝŒrí[L€{–"oŽ+Èx`e¨2AJ_Óð²qãFñ—õë?sõ÷ˆF+ú÷ï+#F ‹‘ÁÀ_`ŒC™ouME꯿þâõXˆ´‘¢&žF;¤Kp†ÁÃÔqìp>°3�>üptmay­ŒrÀ={ÒÔ{‚ ˆ„µÑ[wß­€÷Ö®ÈÄd—} ÷ÎTÊ¢œ'ˆÈÖ‚ BžÀiʬ×\µjU » 0~@™råÊaû,7ÛÓ³-0>ûì3݇AÝ[t&Æ,Æ#زe›íó mj?<Áï™ã´L™2ZFÃŽ²e˸¸B)Eæ/hK8ü�<ëQàzlE rÄý}”áˆkàœN€ëÁ³ÍÌ'Ož Mš¼KvAÞÂÈà-÷ž{n‡ÌTâV S‚îܬƟ7öîݧYŸ�®Õ[†5<CüÑÜQQY¼~&Ô¶1Çž ÈÜ`ž½pÚ …ÛéÙ´qã&×¾]Y �¹…RNþàKÎ9-Wû\Ð÷¹"¨Qn+ Ûf½ŒsÝë=¬§·mÛ¡û¸_Ù²eµ=NùòåËZéÏG§úŸÓóx;Ò¦žs›‘ôV@Æ…3‹`(s3_„k|:AÁ‚ùmÛ:)ÓäÂ…˜ë¦¸œ[95ÿNÉ´pËFÌGða‡{_õvÍÁÎyÂ1§!„°D!$(P°gÏnZQÇH?‰Úv¨ ˆðÈÖ€L­Zµ8¥aB'ÛÑÈþdR@*BoÌ™3W7oÀƒtƒžõžÄÌÈá‹bÅŠXFß: ”—¸ßH—o¦óCt ÊáÆ¬ÿ‰T“øí@,ð½›Ç²wÇ¿çûH“Šš“Ë–­ÔÔ›óæÍ7”v» …þx¯Jÿ[…p´ Ò^z2nÜDdº@{Ai€íÒ¥Kòå—_kûlݺU °p>ƒs˼y 5ý¦•ÃI0 {i@»çžð8=™NPBöx‚gjU#­øêÕ«õ`§Ø·ã‡¢3_`¬ÃQ}Í3ŠÀ gåH‘4©ŠUSÉæ‰ûù{sŠq/ÑbÆR�ïß¿ß8ןÄ_̬0ˆÙ)ç׉~ ÇBÔÊ>sæœ<x@³²�ÔHö†û}ñöž{Ä98q"º]òäÉí³”ÓÓO?­”PñÖ?Ìg·sñ·�ôg°;wVNŸ>£†ó…ù“©Ryw¢D»ž8ùÛ‰°T©çeĈQªp_¹re¬ZÖx À‰±xqßóo$Kfo ¤=MGVDÄšíd-ï æ&pA›Ÿ:uÚÒ|ÿýöÏ+üžiTF]nor(úX‰õÙxìX`¢`Áü ÷͘£uëÖÅv~ˆA[¡?áúÍ4ÏqÉáÃ7£³í¢0ƒFó<ªN)gÏžÓg Q&ÁŽ?÷Ìj7nü.`:’�ê¼¹ˆû ã°7¼õk;m³?Á1Ñ—ñù™gžÑšíNp«?›Nœˆ–¸Ï?žG¼ÿŽ%}É9§å*ÚÑ4*Ûán(FÛzspð‡I“Æë_<ãÐ?ÿ|‹–Û€üêÜ9Z_,7&èïæ=ÆýòîJ |ùe`Ùi¬ˆôç£SýÏéy¼/¿ü¢–ÆCi”üC•B… çö¤Ï>è¡ÌÍ|Žñé¦s‹ýûèóÄS–Æ×Ü*”ù·S2-®eãµk×ô¹~òä)ãšÏéß;v¸ÞÇœ'sB!‘,!!c:&€Øn ƒU«VˬYê¤õò0 ½ÓœERÛ ú£råJNp½HW‹lqáXà 1k×®%5kÖ*«C0À9)ͨÔðŽ ÌX"{ eB.^ŒŽDÃýK•Êþ»¸·vŠbÔE\¤â†Ân̘ñÒµk'‰TråÊ%3fL‘PqºM°ÐÇç�Ò”C‘ˆ:먊È')‘�¢x=ƒ †¤J…ÒÆ”Ñhß¾“Ìœ9Õ§ÂÞ~ùåf$ "XŠ23u0fŸ}¶Ñòs¦<‚3ɶmÛ ƒm1 s¼‚_ôßAϳ<C\“:µï6àh…•û5úÂü,sNô;¢#Wi6*d\1kp»ƒ{ëO½Ü`S›™‘ ˜õEš4áÍÚäè—}´H•Þ‡¶tÂð§]CyÎC†ÃÉu—QöáÊ•+®hp8™ÆÏ *„µ…‚{”œ?Niˆ\4ÁÜ4PCƒr›?\¾ü«Ä-Z47 ¹uQÖY²d¶ýl rÆAΟ<ê6T̲p }út pnDY»¯¿þÆ2C…¿ã*\%ÌÜËÖù’{8Ü¿óçý~x#”¶Ü�þÜä¹7n§g“Ù®X«ø*5âÄ30r5eÊTâ ÷¬‹Ì‡|g]TTÝþ¿I“æZ.†(ehž¿»|¿æNÝG§ú_\ÍãQ² a@_»v½n�ë èj*UªVM8u0q=ï „`ei\έœš;%ÓâB6ÂùpáÂuýu»'ážóÄ眆BHx¡ƒ!ÄQ°x©_ÿU)]º”–i€#j ³ŽÜ­Ñ6H'ߺu«¯Ýwß½šÂðᇠ{)wPoØD®@¡…¦¿µwÆ=CS)S}‘5k×þîÝßJÉ’%üþ.Óß~ûî#j Ør&X¶oßF³´<xP•½­[·tµÁ?r¥6-R¤PœµM|â«M<ò«W¯·õ/"Ú·og(ðîTã^ëß Ö g*Wà®\ð½áÉ_ýëû€ö‚’SàT‚LëÖ}æ5e¨¿˜ÎÀ,çã$ÈLdeJAùbÅŠ•;Xøc$±"Øò?NáQh…©Ü ¦…S‰‹(§Ö­Ûkv “dÉ’jÊô‡Ê 5²Q3”f]ípH[F2x.´k×!†Â1]º´jüÉá!cœf’'Ÿ|Rzöìe(BÏH8A:o8X R µ¬ÍÔ¼kÖ¬uµ¥¿)çîÊá`dJ°ý+.åû³ÖߌZþÊ‘¸rÜõE(çÈf8˜À±$[¶lZúóÁìÙ³«ã½÷FK$àOŸóG6úC¨mcFœú2‚;ïôý;n×g“¿Ü\)ü‘«þ”¨‹‹ˆe”(@¶IdŒƒSÊVX•½ðç~%„ùF øº¡ö¿¸œÇ#Àk¨U«Ö¨Óؾ}û5“ œ°nÁ†¬]}ûö‰XR§uÞÄÕÜÊÉù·S2-ܲåGß}wˆK·ùSæÌ™å‘G6žíUŸ†ç;ÊÇq9§!„~è`A ˜ –-[V>þx‘œ>}Z£‡S¥òí™|;ÛœH½ß A$œG$?ÿÍ:0 â`‡ Ó3>þ| P\”+WZ ¢ËdœÒ’`ÅŠUZ*ÌŸ?Ç6Å©»Â#Bì!á­M<Aæ ”Pˆ™Ñ¶5” &iZß¡C‡K¿~oK8I’$©k¿é­®·;¦&iÒÐKÃ4lX_,�ê•:á`á^;9o^ß©dÅÝÁÂ_bü×_ (댙±õ¨×¯_# ÷¨k;΋–Eþd»01ÛA œ ‡‚%zLV©R%åõ×j]Oã&äo8!Æ"N}L=븦OŸ~ªÜ…œDæ«5ª¹êRÇ5È@õÈ#h]g"M‹U«¢’9sæ k´c¨¸gåÜöʘ¤Kx„4inþÊWÕ©ó²$d•#çÏG·qÚ´ÁeC EiþÀ7£pÏœ9«ý6Pà¸h:ÀY�ΟHWíyÝ0HÄ'îQàè×™2٧LJáåòå+*N´ œÑ!§/^ô-‡}Õ¶÷Æíöl2å¢ò}S”¹•pÈU¬ùaXóíþ[¦l îåNœ8éö›1Ç/"}¾áÔ}tªÿÅõ<×ðÚk¯ê†¾wäÈZ ‘ü³6l2Œê“¥M›7%!×óž¸ ®æVNο’iá”(b:W¤H‘Üèë­4ÀÁ3hÅ*«…“ÄÇœ†BHÜž|Ž„[x:·nÝV7÷¨o¸Koe\¶ ‰O²fR‡€²ß¿Ç¯ïa;vì×ÿ+W®(¡âžÞñúõë®}Ô5Á"×Óhý[#Ë…]›¸³cÇN-%P×&PˆåÎ[÷׬Y§[8Éž=›kÓ¦Í~}çСÃê,9é ¢<!Û´içW”Óòµ¡wìøB÷óå{.FšX'À˜ƒa¼øâ ÆomñºõêÕC? EÏÚµÝO3cÍõë¿iªÓ„‚{+ X3Œ9å/>]ýcÞ6òiëÖ­ÿÿ­GeàÀþjh·Š¿zõª„Óéjÿþ–iàÝAZûHòjÀ /ÔÒHZ;ån¸ÛÕÄÌPñŒTà0^8p@_«V-²³W@¦%O­(†¼ó…ùˆ},PéˆHy€² @äÈáÃGÔdͳþwâÄ7ç:ޜʞ<XÜkŽ£¬–7p=VQ’¦LC†…Q£†«ƒ­•±0®ÆžîÙ¦|É4Œ['æ N´YG~ïÞý>3!ËY¨çz»<›ÌßÁ}6³ïÙákÎáá«(!‡,Þ@¦o¥¬6l¤¼ýv?¿2ÏüñÇ͈ñûî»Ïµë6×`¾î àÉ8uêñ9‡ñrU‘Ñ4ø®ZµJq=ï‰ âbnåôüÛ)™NÙˆï™ÏânݺhÙd«Œ ×®]—psB!q,!~:q»v}¥Û¼y }*Œ`Hܸq£î#¢%$nUØ6$¾iÒ¤‘þ…"Q 0 yl8Wìݽx/T¨€äÉ“[BÅ]áä^Õ=ÂÒÎãæÀƒº¨ž¸,7NìÚÄ Pþ÷ ;}{ÇH+ eXß¾½\ÊÏ¡C‡yuR •%Š»~îÜyrâÄ ¯ŸÇâĈ÷\ÿ/]úùXŸÁ½…|üâ‹/5RÊ(aˆ±Ý D£ 8Èå´Ñ¨Ñëâ4Ë—ß<_ÔµöÅóÏ—tÝÏeËVJ ”.]Úe@™7o×ÏBÁûùç[âÝHPêÆtB±bþü….C`É’%Å_PrËŒvš3g®×Ïöîý¶Ôªõ’ Ià ¥ÈœùÛ”üHÕîËØ*›� dÀ²O¾”ÿñÍo¿Ýpí{ãP@†[ái‚¬XèKè7›7G;˜A_®œïqŸà¼K•*¥ûxÆzs´Ä8üüóhÃlÑ¢…ƒrfÄ3¢D‰èlY8–·¨?86}òɧ꘩i¹‘#îï—/³Ä2˜x3:ºgT dÁ2£/^¢éÞíX´è£_W‘·Þêc^hÊ4§¼ÍµP›=>Éû158_×j:©†ŠmS¢Dté/œ/ÊÃÙGÓù3n·g“{†>3+žpä]²d©„J¸äê‚ m߃³éêÕÑY °vŠŠÊ"ðã?j9ü†·9@ ,wÇ-”ÜÄ5�8�ÁqÆŒKRûÇ'NÝG§ú_\Ìã¯\¹"ë×o0Ög£l׌ÈPhf披yV ¸Ë4«¹C\Î{âª,X\Ì­Â1ÿvJ¦…K6ºÏ¼• õ7°$XâcNC!$n ƒ!Ä/P¢T©’ºìØ1éÕ«.Þ¬8uê”´is³®_5äV†mCâ›"E »Ê( 2¡Q£ÆªÀ·2"b±Þ£Ç[òá‡sôÿP"wéÒIB‹R3e2¢é2dÈàz¯@›€³gÏ‘£GÅúþ”)Ó\e& .ä5EdBÁ[›˜ ø®\¼xI÷;vl'?üp¬Ï@‘жm+Ý¿zõšË!# Šåå—_Ò}DW½ùfÙ¾}‡ågq¿PÃÕŒÔB-ÓjÕªÆú\ÍšÕ]÷sذáª,´ýõ£>–ñã'éÿá„àiÀò8~ Õwƒ\ *d—pO‰ìP,öÙgºûûÄûü{Å‹Õ}”Aº^wî¾ûf?OåœtÊ”‰V("c’1r k×îÒ¹s7©]»N¼+ÀádÓ»w?K%12¸Ì™3O÷Ó§O'ÅŠA›éÔCÕŒX~néÒe†Lܬírñâ…€äKÆŒÑbèç—/_Žõ>"v1ŠñN`6 ¸“'O³Œ„ÃÖÛo÷øšè=”Áu '­ŸUg´>|\¾T°`tÉ-È(SN•,YÜ2Ò-Ò¨Sç%×sŽ–îé°MÐ?ºwï¥òíÿÊ+u$Xð{wß}·“ºvíi™•Átæ<x˜¼újK£Œ@Mš4WG8oÊæpâ¯Ì5ËAÁ15**KŒ÷á0m:”⺬Æ(ŒÌS§ÎPxíµzú™4à8f•«“&MÑÓ0j»;˜2 ß·ËØ1}úLG²�„ŒZf¹¬›úõ`Ñ #“?ΛþàDÛÀ!Ë4à=V3z‚ç®Çt’å\o—gÆVþüyuëÖí–ÎP8þ»ïö«\‰?„C®®]»^–-[ëuÌÓ0žM9øÒK/H  2 zôèmk\‡ûàƒÙº,žÎј/cüA†÷îÝײä¢ÍQÂ0!àÄ}tªÿ957¯çúõk±¾ £{Ïž½Ô`=~üDË5#Öâß}í”à™)pw‚°s4ˆ«y²S™sÖp—‘pjneG8æßNÉ´pÉF÷@Ÿ 6Z~f×®/]21\ÄÇœ†BHÜp—BˆŸ´nÝJÓÕ™õ‘Z¸pA­Q‹ˆsÔ¤DD<¢”ÍÉ"ŒŠ ¼*q”KþÔ †ìÙgŸ‰ñZ«Vm]©.œpMã[¥m@Ñ¢E$EŠâ4PT6o]ß³\¹2Æ¢âm‰Žýѯ¶yüñÇ rhÑôV8Õ.Hy%¶m;tÑÖ­[O£¯?¨µ£a4‡¡öøñcòÕW߸ÓÈ 2lØKÿ'ˆt‚ßMá€(sü`ÑÞ²e³ŸC`ݺuÔhÅ1ŒÞ•*U”9U‡mÛ¶»¢Ú ÄhÜøX¿‰ý'”6ˆ.5#jJ•*éRŒZQ³f Ù²e«*õ bþü±j³â¾–(QZ-¨M»l™%‹<iÕª…üøã54?AÚ·ï¤2ñ©§žT%:”õH/Š{bö%Ô4>|°e*mDÆ¡Æ+Œè‡PB6æË—×è›iµÍNúY¶oßîr²:µW6;–/_n;Êõ\7jA£®)Rg›Žl�ƳöíÛØ\oðò÷ïÊ•«®ßð—Š+¸Ê½ †{íã‡ÎèÚŸ6mºT¨PÞPÈ>è2æuîÜQ£ qC‡ŽP…”µø Æ kPÚšåXš7oêµVt\€¾Ýgëi_Ζ-›! ®k»¯^½VûO]»vŽ‘fß:th§}}Ê~ÈÈM/^¼¨ÎfxödœjÓ¦u ‡7ηšaHاýéµ×^7 µôù~ ç˜%K–©"<**Ê•v7ÀÈß±cUšÃp†~‹~§!´ÙáÇU)ƒ*Œ#pVŠT 8Çx‘÷¦I“Z†Ï"ÈôïeË–i$-dŽûX'U«VÕgè–-ÛÜ^«" ¤KÆs©áÑ_yuµ«KΜ9ôdöS^¡ü”?av<úh6C¶41 Èã òR¯ÞkF¬¨Ù°'¾OÏaÕªµ²tÊgÈÕêÕ«Å8"ûôé«c ѧŸM›6–øÀ—RÏ^2e ÃxÙÍò8/¼PCï íÚuÔk~òÉ'\iåa<xê©'TvÛ¯«T©,›7nl[´¯¾ôR]­¡ŽÌ0¶íÞýFz♈1Ô½{×Ï�Œ5!wqŽÉÏ<ó”Îg`<‚Lƹ†[¦ùë¯ÖUg•C‡©“\:¯×ZUQ±¶|ß¾}§:GýüóYcžZÊ}'Ú&Mš4Æw[Ë;ï ÖñÖ¸q3ßa>ޱsüä“%:FàPhÎåv|6¡/׫×@×ï¿?V€K•z^׸?‹/ÓkÅœ#££NËU¬Ë0W0à]í»Å‹ÓLˆ°_´h±Ëx‹c }  ÓÚµkuþŽ1ÙPªTIyì±\z/ §€Ì@¿o½Õ#Ö2 †@ÿqnuëÖ×±€¹;ä Æ�ÖÎ… Ð1É8uêNÌãQŠKऌ¬%Ð7A‡ƒ¹4d ÎÏU̳ð\C)Pßœc-Yr3‚k´H#W®œzÍ0®O:]³;`Mˆ ™�@\Í{ðÛøMèúPŽó¬cðœG‹“81·ò†Óóo§dZ8e#J}áúp 8žbŒ+VLåt6Û¶mS†@‘pÏyâzNC!$n ƒ!Äo0ñ?~Œaب k,Ê!ŒÍ ¤H…±$®"ÿ0iöÇÛúùçKÄr°@æ €Éw ÎÑß»5ÚLŸ>%,fƒ H¤€E 6_ÀØ §ÚJˆ¡C«øPH@¡ân°vÆò·Þêîw4h¨ÏÏ`ÑŽ, È@á Œ&ˆ4ÓÉBqä ²iôïßײ#±ÿ„Ò&ÇŸQ£Æè>ÒEÂAÆ={vWE Úqܸ‰ÚQQY\ï#CŽÉJA)…¾„¬"³f}¨†(8ìÒ çÍûœ*h­J ˜ Æ+êÊN™2]å# جH•*¥aœhëÓaÊz_r } ¿ E±]Š×PäÿÊ•îåAü϶Q @~—âjõêÕòæ›Í]¥YLP¼Â˜ƒ Ñ…¨±}MÉvœhô™·ÔqFA«H[Î2P6Æ7ÈØ{Åú•'_½zõ´”¾ÀstÒ¤ñ飔ƒVuí3fÌh(ÄGèó:`ÌܳgŸÊ.ÜD¹ƒ~…ûwöìù°+æÐnÜ讲F4k=£½íý8’,@ÇŽí±wB•ÄèÇfÉ*ÈN<â:®,`ì„ÂN±�2ò-¡�£ÆÒðá臭µŠ°…|Çó¸aÃ×$TêÕ««F;Ü#0àDeEŽ9dðàwb¥åþã?c”Õ‹Ï4åþÊ«‡ ¤ŽV¼ôRm]ÀÙÆ1D»§½†Q ²®aÃ7$ð<@ô*Æ?æøˆRö÷æwúÏ”‚1^‡#FÏžÝÔ�q”ÃæÆBÙ²e5j4>‘rŽ™0naÓ;w½{¿%:øžGù©¶A6/Ó‹9/Œ|ØÜÁ„A'X‹ÛñÙ™<nÜhãùÑY cf‰Nw°ÆFéD',€“rõî»ïÑR€M›¶PGwg>“çž{ÖhÇAeòÃw† dȆ¡²bÅ*íÃø‹Í¬=à0à)L°vcÖkï3gΊñ>²Ì Ð/ÞK ù‹÷Ñ©þçÄ<V¸8d S ˜;w¶® qö3γ«®µìŽDZ֭[ªn,ÒHš4©4jÔPáÃ;(R¤qÝ7×ßq5ïiÙ²¹´iÓ^×Ù¦¬…SËÚµ«ϺêÜÊNο’iá”GC†¼kôõ¶:¿‡C6wðlêׯԯßPÂI\Ïi!„Ä t° „¼k'N§ûðº…òé¶QÏÆ“4iÐÉ/-¡DÆÅ%ׯ_רg�£W°ÜŠmã$XÈ™ d‰ÆÉvÁ²qãFɈ¨xDµ@© å ”(ˆ xüñ<j¸Fö€PBÆ(†Q”)I—.åg±îÞ½‹þ6”Ì0@`ÑŽc`ì@aR»ö ùgEBé?þ´ ”3½z½­Æ(Àal²ÍˆBÔ,åÑé2ûÊ´i“\Y4Ž»倈²PÀ1[´h¦} ~Dó"õ*œ;î¿?±<ð@ZW_B¤”?õiëÖ}EV­Z­NMP*àxP6À©+**³a¸(*eÊ”Êù ç�…Ò´gÏžM•ÆH]í-#B(òÑצs¢F£¢²øý]Œ‡råÊ©JZ<7y ´3f”¡€c(½öéøE&w`Ü›<y¼–1€ãèÑãš m 0ÆwíÚµ,KÎÄP”"› jNCáûÏ?ÿê8AdQ:µýʤc‡Ùxö"ò cm†¾Š(3<wað &“údŒj0d!-6œ{ÏrôkDê6RâÕ0ææÍ[¨@Μ9£eeræÌi(e_Ñ~l7‘”ç¸g0Þ › 0_BöüùóŠðújŒŽK0~*T¨à2ŒT©R)Îjo;œÉÐ>þøSÙ¹ó Ãø~Z£,|0:{äŒÈNþ^áÂ…õ>"júìÙ3ê(¬Fˆ@E½y<'¬âpʃÜìÙ†æ,òꫯH|b%G Ÿáô—)Ó#Æó¼’F{f®r×ùÎ;4º{Ù²aü×_«,.[¶´fH’$‰„ ÎN²Õ«WÕlX{÷î×g4~Îd˜Sá·ð<´{ì1-ÏôÕW_k–ôDÏV«VE³Œ¡"D,O˜0V "(÷„ˆN<1_,Y²„ñlià¨ÃºSmÃ_¾|ùdáÂõ8xFCV㙄LèfÉ™`¸]ŸM+0$òÉb&?}ú”üý÷?Úï«V­¤m Ç'qR®bM0cÆT-´eË•1—ˆÆ¯V­šÎWB1Øš«hd6À½8þœÜ¸ñ»Ê28±cÜ ;š7Y„sèÖ­³Êo8‰8ðƒŽô/è3mÇJ(À‰ûèTÿ u(~8À kìï½÷]WEEeÑ÷ÑϦOŸlȘU²~ýgZªÆzdAÀõbîŒKq=Ï 8D çG-’#GŽèõšÙ(܉‹yŽƒçÐôé3TLJù*ÆœÛuÜö‡PæV¾pzþí”L §lÌžýQãÙô¡>×á¼ÇTà:qÜW^yÙ²ÜZ8ˆë9 !„ðã¯Æè?߻ÿwØüßÜîtûkn‰þÿZ" ïÁ"qçŸþÛÅ‘Bü� ©Fšè>¼ÀK”(.ÄyÚ·ï¨ÆH¤5kºhØ.þÁvò ŒTcÆŒWåÃÊ•KÃ’‰æVƒòŸâ¢%QÎ rtÑ¢…^3óBH(À°jFfÏ™3K²frëÈid:€‘wÁ‚9B! §de#!„ÜÞÜsÏݨµ…ºÓWþÿ÷í¿ÿÿý×mûÏí¯ç&6ÿ÷ö×sßoï)Îæ²"„ÈÑ£Çô/¢ÿR*脆™ ”,!·"lÿ`;ùÑO W®\t®ðÊBˆ ¢Ù±äÍû,+!Aƒht_>ü£kŸò†B!„Bt° „Üö -@:U'Òö’Ø Rƒ‚i 7a»øÛÉ?LYÆ6òÊBˆ œ+6Ô¬YS!$P®^½ªe9jÖ¬-'NÖTõV8pPK{�”Ö@Ý{B!„B! ‡»„BnsPw,X@Hx8qâ' Mœ8±<õÔ“B¢a»øÛÉ?LgÔ¡%þAùOÈí êŸÿõ×ßZ»|úô™úZTT””(QL!$P뫯¾–þùGeÊŽ_HåÊ$sæÌZzèìÙs²}ûvùì³ú™»îºKš7o*„B!„Bt° „Üö˜¥h` ÇŽE~Ÿ{î¹ûî»…DÃvñ¶“o.^¼(W¯^“dÉ’Jž<¹…øå?!·7C‡—sçλþÚ¯_5„BH  ÅØ±£¤gÏÞòÍ7»eÿþýºY‘<y2ãsÝ5ƒ!„B!„„,!·= Ì^Ê–-­‰ ÛÅ?ØN¾I“&ìØ±EH`Pþrûb–žB9+òçÏ'Mš¼!3fB –Ô©S˸q£eÛ¶í²zõÙ»w¿\ºtIþþûoI‘"¹dÉ’E˹U«VU’'O.„B!„Bw8ð¹;,ö½ý½Ãæÿæv§Û_sKôÿ×ylx+Ò;ÿüó¯mB!„B!„B!„B!„ˆâž{î.lüùר®üÿï?Ûÿÿû¯ÛöŸÛ_ÏMlþïí¯ç¾'ÞÞS˜û”B!„B!„B!„B!Ät° „B!„B!„B!„Bñ,!„B!„B!„B!„B|@ B!„B!„B!„B!„ÐÁ‚B!„B!„B!„B!Ät° „B!„B!„B!„BñÁ]B!„8Ì¿ÿþ+«W¯•ß¿!•*U”{ï½WHÂãìÙ³òÅ»äâÅK’4iyâ‰'$gÎB!„Iœ8qB¶lÙ*O?ý´äÎý˜k®^½*+W®’téÒIÉ’%„Û™/¿üJ:$¥K—Ò1AnøL Ⴚ®È$ÒïK$Ÿû4!„,!„8Δ)ÓdÚ´ºÿõ×ßHÿþ}…$°Àzÿý±²`ÁBÝ7)V¬ˆ :Xœdúô™2qâdÝ_¾|±¤I“FHüP³æ‹òóÏg¤xñ¢2dÈ ¹]øùçŸk¯­ûíÚµ–:u^"†ÜhŒÉ•ê\µnÝjqšøû—.]’+Vʶm;äèÑ£†±ñšÜwß½’>ýƒòÔSOJÅŠåå‰'÷zŒÖ­ÛÊ®]_I¦L™ 99G!ñË•+W¤Q£&ríÚuI”(‘Ìš5C²f’Û_²µsçn²{÷·ºß­[g©Q£ºßß%äVέZµÕý¹sçË'Ÿ|¤òƒÄ/ṈøLH¸|ûíwÒ¬YK݇©lÙÒiP×™Ä÷}ñÕw#¹ß°OBHð°D!„Äõë¿. •¦M[È­ÎéÓ§]û'Ož’°˜1ã™7o¾Ë¹"uêT’2e )UªT ‡‘‘#ß×>íŸþB‰/ ÏfΜ%µj½$cÆŒWåÑ/¿ü*ÿý·*à9"‹}"Mš4Wå>o!áÅßy‚¯94ŒiÇ�ÇáøµÇ}ŽþÓO§$¡ fŸ™0a’,îcáÂ…‹òûï¿ ¹5HHÏ„ÛIGt«@]WܳiÓf׳×®/-?é÷%’Ï}šB‚‡,!„8N“&o¨¢êÆß¥C‡¶B}ô±þM’ä~?~¬äÈ‘]ÿÿßÿ !„$4þúë/yë­Þ†rîs×kéÓ§“'Ÿ|B3WÀÉâðáÃòÍ7»UÈÉ7Þh*£F”ìÙBHd“1cFiÙ²¹¬\¹Zòæ}N *(ÄšîÝ»s»I†ìK+õêÕBnW*T(¯ÏýƒIݺ/ëž$Bn øL ᄺ®È$ÒïK$Ÿû4!„,!„8ÎÃ?,cÆŒ’ð¸qã†\ºô‹î#c…é\î¸ã!„„ưa#]ΩR¥”Î;IÉ’ÅåÎ;c&ó»pႌ=VkÐBvîÜU>ø`º$Ož\!‘Ík¯½ªñ 46"rÏ=÷HŸ>½„Üšð™@Âu]‘I¤ß—H>?öiB –!„Bˆ Dr›¤I“Z!$!³sç²xñÝÏ!ƒL›6EJ•*˹<ðÀÒ·o©[÷ýÿ™3geæÌÙB!„B!„B!&Ì`A Š­[·ÉÒ¥ËdÏž½ò믗åþûK¶lÙ4"´jÕ*ÆÿïñyÔ4E}ÉŸ~úI'N,sæ| †O®]»f6ê˹sç%uêTÆçfIÊ”)õ½o¿ýNš5k©ûãÆ–gžyZV¬X)Ÿ~ºDŽ=*ÿüó¯<øàƒ’?>©S§¶åñ­~oùò²nÝgZwµ:Ó¥K'9sf—š5kÈsÏ=kû]ÔhGqœÇøñcdûö2wî<9pà \¹rUzõê!™3g–Æ›ÅøÞwß}¯µMÖ®])É’%“@¸xñ¢,Y²LóرcšÊ Q¹<òˆ<ÿ| ©V­ªFåXQ¸pq­E߬Yyýõ²{÷·2þÙ¿ÿ€Fì¢ÝóæÍ+õê½"QQY$ÜïUÿþ}¥lÙÒ–ïýž¶ñ’%Kå“O¢ïcâÄ÷idÝ›o¶´iÓêçUaþü…zŸÐ‡î½÷É‘#‡Ô®ý‚”(Q\ÂÕV&¿ýö›žãš5ëåÔ©“òÇjÿªP¡œÑ_ëhéŒâÅKég‘ŽÔ.ZæÏ?ÿ”eË–÷|½9rÄ8î I‘"¹äÉ“[*V¬h\K1K£_ |ÿýY´èٷ={VÇg† 㳘^oŠ)b|ãØ³Ÿ‚3>ÐÍdúô)òØc¹Äh \«;EŠ”píüŽí}ûã?Œ1½XV®\cÜëÚ™2e–J•Êë˜ôÕ>álcÆ|åÊ•b|çÒ¥K²páDzeË69yò¤–€÷ÙgŸ‘ZµjHîÜÙþž“cŽ3h´Í‰'äòå+’&Mã^“FÄêÞTþÇWû™ 3žŸ}¶Ñó§ä¯¿þ–‡zHªT©(/½T[Bż.”›˜4i¼žçÔ©ÓÕ°õê5£ÿfR9Q¹rE×wðÀµC⹃k½hÐàUC>¥òú{hdcXºt©!ÓN¨ŒC_x䑌Æ8©$eÊ”’»ï¾Ûçyýõ7ZèÀ4sCÒ¤I´]_½¡q?³Š¿>|DïÑW_}m<»ÏÉ]wÝ¥Q0 ä7dt-IŸ>½Ä'“&MÕ¿÷}ú¼eÈÂ}~çÍ7›ËçŸoÑçÍ'Ÿ|*-Z4Õë²ãüùóÆ|e¾öiÔùFy¥\¹r×ÿ¢ÏHñHyžã87n6ÆÊ§Æy×±ï.\XÞx£¡Ê‹7Þh&{÷î5æ0ùå½÷FØ+Xዸž? o/^¼TSÈcŽ9бš#Ç£*«Š+êó<'N'O<ñ¸fEÁ¹š÷óU<po<3¤¼ÿþX£?ÍýÿþH×zÏo´5æ×Ë—/¸}Ñ1†·mCÿ=mÌÙÿÐ>™æk. ‚yîú3O@Ÿ dmÊbÈÜ æÄøžù^¾|Ï}g”1—;eÈà*§1O‚üówÌ8_Í›·@¾øb—Žù»îJdŒ±(ý>æ¼ÏíÛwÒÏN™2Q<XµúĆ ›´ÿâ9˜,YRyôÑlR¾|9CžWtdNèÉôé3~9Y÷Ñ_ÐÎðå—_I‡õü‘†„1:.Ü Ç\ìƒfë¿ 1^sŸ§fÏž]fÍšë{N¬õœê7á|^šÏƒ† _“æÍ›júY³f2{Ÿ®‘Ññ¬€<X»¬ZµFûà¡C‡ô3¸Ÿ˜ocn”(Q"ÛßÂý]µjµÑw7ß=¬r}÷Á3×’Oå«]¿òœ þüóí“;wî”_~ùÕX÷§0ÖÏ™Œg_5u†´;óz7n¤ž~8G×@èoxäÎKï d™¯v«Q£ºtëÖÙò\ºÿ¸xFc}†ûïãÜ4xM×WcÇNÐ{†gþæÍŸI¸pâÙÏ`¬¦Na<£¶Ï«K~÷oÏÏöf\š²²lÛ¶Í*k-úTåúJ¢DökX«µ·:"ŠÌsÇSŸ½&ÏdÜãò 5cÉ}O<×+Xk @V—*UR烾t0vx·î4mÚBÛÏç¹sgY~æ‡é}ÃýÇ9\æ^(„¾à‰7]—;¡Ü‹PúW8ˆ¯õJ»vdÇŽ/b¼Öºu;×þË/¿dÌ·Ú辿÷ÅÁÊH_øs~¡<_MÂѧ#uÍI!‘�,! ߀ï†æu1^‡RPlsçΗwßÃ{ß}÷IïÞ=uÒ†…ö AC´¶¹'P*ùtíÚÙå\aÅ€ïê‚Å,î±Á Ò³gwCAYÖöûXluëÖÃUÁ‹lXa±Ð«WOŸÊjL.GŽ|_â,ª ,ׯÿãu´6L¤?ýt©Ñ¾Ã½N¾¡XƒRr„I1^‡Ò8Z)ºNÞy§¿¡ð.,á ï^½úÈúõ\¯E/*ÖЇ}†2uš‚Û´i¯÷ÄFx(x±Á™N V8ÑVGÓ…ÝÙ³ç<^?j(' ¾2lØ`ñ:uS%¦;PmÞ¼E77 èk,0‚Ëñ×_F‰azÿ܃ú9)PP÷ë÷vD¦‡†1ºM›ªŒwç ò÷Þnk<Ž‹66ñgÌÀ ùèêØpŸ ”…RÀ›R$Ô± ÅdçÎݵ ÝQ×±yóf5ú"XùoE\µ”Ù(óà)çÑÇF£JòN:ˆà>AÙ¶muÊrÿ­þýrëw©U«¦Ìœ9Ke‡ç5Í›7ßxɓ'Ø:ÂߥKC™±?Æëè Ø HÆ6l¥ò@îBN@)îÎ¥Kêsãdøð!â8g<·¡(1A?ÁĶpáGÆùvŠá\—@~›ý½§Ÿ~ʯïAY_¿~]­Ý N:­Ê|+ XjÛ¶}Œ~ŠgŒÕØLc—‘ò<‡Ò¶[·žúLõü>”ëè—¾pRFø"œó´' ]prpïÛÀ”?P BùˆŒ'Þä7žË:uѾà”ÓØÖ¬Y«NÃîc¾Zµ*.‹•+Wyu°€C 5 T©’;WlÞü¹¼ývÿ2  ÿA`{å•:Foeùý¸|î:qkÕ)¢K—î:72ü3Çl£F £LcÛc`.òöÛýb9ˆ`] ŠígŸ}Z¼>Ù¶mGíKîÀÀ 9Žmùò•*‹ƒuH xÆuîÜM¯ýÁÓk:iO#[$õ §ÖzNô›¸|^âXÇ¿ã5È<´ÇÔ©“ôyÖ³g/ùüó­1>ƒó5êÞ#8wYÍ·axÂó²Çô]l˜Ÿà¹1tè`yê©'Å0µlÙJçÿ&æóc`Ñ¢§ÕÙÊW™.<礲ÛHlxÎÂ�¬2Ôûo>SfÏþ0Æëø>ž%¸ƒ ”pãä³-Ükx÷ó‚‘üÂ…‹®×‚é#v85.á˜Ñ¬Ù›º¶rÇ\ÃnܸÉX÷ ÷ê¬ëNÈ<;}8pà€np0„®Á&VØ­WplÌm±Íž=W† yW²gTâ 80`]æ9ÌöÂZ c¡T©’(Nêã»ÝJúGo8)#ƒÁ‰çk8û4ˆ”5'!„Dt° „ ¦’ÞçÕ«WQ#¼NU€E6&G06L›6Y#aL1ƒ´ÛP.ìܹK‡î‹UDÚ˜ŸŠË{j˜>}†.ªáõmzÉ"Ze×®]:¡Ä´OŸ¾5iåa eô›o¶ÑE&ÆpÄÈ›÷9]œcB‹ÂñãÇ5ª ‹"DØØM ñyLÄ¡ñÅšòè£êÄÊ+D"Ïš5C?W¿~Cý‹CD9›$I’Düã¸.L˜Íó.R¤ˆzã<׬Y£JšÃ‡«AÏ›·ï7ß|£mˆ…Œ~¸W—/_Öû‚¨f(@úõð¿öî^¦òÿøQ"e6K ¥½¬Ù"û¾$dKe+)Kd_²+QÊE¢²oQÙµü*[(K{¢P)…ÿù|¯3Î{Ι33gæÎåó~½æ5ë{æ,Ï9Ïó|Ÿï#sæÌ kt{8¶#°½±-ÑhõÑGkt¹°^§L™.[¶lÑÊ@™2¥Û=ÚñµeËÙÆt&"X�#¡ü^Wˆø~ôÑŽ3,#*T¨8¢yþüEÚa4z´û|…Aß®]{­€¦K—NK… 4Rß³hÑÝ'Ñ¡ŒFiŒŒdDG¯^ÏK±?6lXOGš`´–5hÄìÖíim´7ƒ,0ZÒÜO;f4vuÒÇ÷ÜSÊè<;ºæšk®ö´8öq Œ=Vÿ/ û…YéwA>räh=îjÕª)ÅŠÝ-]t¡lß¾C÷GTèQyGf�»ÎÊx­cp;æMhTA£"F<\xá…:Úû(Fî SmîÜw´¬DÖ÷É'»8þ¿hŽU”q;v•o¾ùFŸ*THËmdpÀw`”>Òûôé§ßã&šò?5ÖÊ ”ófc8F\Ý{o-—±O,\¸DGÄL˜0Qü€Ì}û&uµjÕBG(aYçÍ{GÁ±c_0Êû¬\éwêÖ­££~йpáb]^4 8D;\ƒáØÄ>Žß @¹†Î-Œ*Z½ú£àS þjÓ¦q®Ahõüó£çZ”‡Ø§P`ù±ÞÑ8‚FsŒörƒsù‹/&­»\¹rêè©n¸ÞØf'õ{P¾£Óîh8Äþo¸&0U®\9œ?Õ‘X¸¹ÁñÕ»w_=Ç`›)RD÷ÙM›6ipÎ?h„Bgbp'y¢œÏñÿ1Û ð· ÔÕ}Ó,#pž~öÙ~F9ü§ëúð«Œð"–×8FÍŽ0Œ«[·®Ñy‹^¿á»çÍ{O;^ÐàŒßé6Çûôé¯ç-Ò¼ùƒR©Ò½Zþà;0J×½=`À`½Î4(_Š-ªæøømT¶cFƒ†ë¦W¯>ºÏ"ëJ“&èµ0ŽW'ázå ²íàØÆº¶Šæ¼ëå:ý¼†tøõíÛO¯°Ýn¼±°–Y7nÔl7(³0jû”ÝÈR·Ï>Û7pÜV¯^M×ÎMß|³WË{lÛÇ9.Ö÷Ot׆z¬7œßy×–èDAóúõ×—Ï>ÛS²M=ñD7 ”G™?aÂx ²°ŠåµX­Z5ôxuºNÅÈx+?ëzÑî7ñ<_âzoÆŒ7´\C™ƒk¨Ï?ÿR³>¢ãxèÐçuq~Aù…ÑÏ—]–]¾þúc9æk=ûŽd†°ÂþÙ±cg-Óç6t°âzå®A0Èõ¦ž={ë9'kÖ¬¶Ë‰sp,áº1­riΜ·uù°]»>%¯¾:ÉqÛ “Á´8×<ôPK¹ùæ›ud7²sa› ÈA½(ÿ;w~\"íöGG”yNAÖŠ† ®0j×d8GŸ‹üæç¹-–ç`Óß7®±žÓãe$>k¿ï¼3_¿ÛË>âįãç2\§ay»u몣¸Q‡E É+¯¼ªË‰õ‚ëAó˜²Ö½ý:¿ùUæ¹µ' ì^¾|…ž°Ïbƶµ U_ÁÈü¤ëŸ5ËÈ´iSRœKâµpÜÊæÍ›jv”I[·nÕí…c¿ÿÆñp­^{åçù'’ýËO©]_A€ÚP¾¼úê}­S§ÇŒzUq}ŒìX~ñ³Œ —ç×XîÓ¦D©s%X‘gèt1ÎíF 'E”×\ø÷‚F×Z=òÈÃÆwlÔÆŸñã_²eïÑŠ.ÄÐà¹sç2.¼ºº. .êpÁÙ·ï³É–iÍÑ@ƒL¸à1bÔ™†ÏÌÏ q©ÿAZáA£:šÑ™k…‘.¨  á ˆbF㸃Õà‘qãFÛFŸ›Qù¸Ç9žG©"\˜¢Ñ#ùñÛ¬ÐùÌØVè8D…ËéÂë/ÖÆ&4h#Õ)ŠÑè pD!7jÔPb•J¬k„3þF¶ã·š,#–Õ„N¤GÃ*˜R"¸qÆu…†3¸)ã[´H^‰BÙ!Ã5º›1cÆic3öUDŒ§ÜCG+Fš¡R²}ûvm ÇˆÑpàw˜!hp6lH²‘g5jT3Žê벫6 <Ôè4™©™è¸1÷I4Š˜°ÏF²¯¢ÑP¡3;NÐ`å–nÐHŠL Öˆ|ZU©RYZ·~XYlëvíNñ]ñXǦPÇ<Êt’'¥“Ì©Ùz¬S. ! x]»vÓÑ hHF°YáÂ7Øþ¿hŽU4›Á(£1JÆZf"˜£ÍPѶŽü æGùïõ‡cÓ ®@úX¤‘µÂñ‹Zاü€]h =zD²ÎÐzõê 0i§¨Ü‚†`ëÈ]L!Ò¾ýãŽ'§òÈl¬Dg2#Xá÷á·à7a2d˜Žf²Âw£ÁØ2a¸dUªÜ§Ë‹óصƒtžæÔ8^GŒ–lô`RªØZF¹Ùé̹x¤¸8uÇÊ×_ï <¾ãoÙ+ÂÆa4!˜Å:ŠåöñaÃFès”7Á‰r>Gg®ÙÐ…k2d—°Ž€C±dÉ2½&ŠWáE¬®p4Gm¢Qóå—'h°” Û S7´jõ°àœÒ¢ÅƒÚ™lÛLJ5Ø (+p­Š2 Ç ,`YÎ`ÎŒ–s%jX`ßðš¡Å„†b”³€qsê�@yŠý¡mÛöú;—/_ž"À"šó®×ë?¯¡ß߉à�kÇ>ü ( çìXÖàŽRœOž~¤·è´FYoýL… å5us§NOhC³tV˜£Q–#8Ëú{±O㜌m‹À$Œösꤎ 0 ×èTyñÅñ¶Y’by-†s&n^®Sý®ëE³ßÄû|‰ YÔWPo1¡ÜC'7Fb½ã†rpðàÉŽ¹F×+­µŒF§pgÎ8—€™&Ü å¦nÃþ‹ßòþû«R\{™pþDý‹8W™P>b[!Ë‚»°¬¸ÎC�˜¤)G@(ÊjëzŹ¿YŰ}‘©�×8ÖÿåU4ÛY:fÎLšžÇÌĉ/$;§à©[·¶nl»XñûÜË:¼ e 2ß`44ÊW+\g Ø çÇPûˆ?Küޝ¾ÚeÔ¹¦&D€õ|×]wHãÆMµìÄõ2 |´Ö½ý8¿ùUæyiOÀô ŒÀo>|„N¥býŒ×ú ®‘Ñ™Œ6Á!CI¼½õÖ\½G]sÊ”W’Õ‡p¼—(QÂ(ãÚê:E€pðïpâ÷ù'’ýËO©]_A½¬¿píèwæ¿ËÈpùq~Õ>m•uN"¢DÛIºˆèœòúëIeŒªsJÉŽÑf,*gÁ©oQÉèׯ^HáÂëå—_Õ×1ÒÆül¯^=BÎ7™-Û%Ò­Û¶Ë€ z3Ý$*æÁˆŠ5SU>üðC)*<€ïÅ#æý›oÎN‘fÍ Ë¾h�GG¦¤®Ü˜Ð9fœ™N°Û·ogû.¶Í‹]d ˆTÈìÒǵis¶Bm`×øŠJFãÃîÝ_§x?Úu…(r4æþ ®�T¨ž~º›c:Àèt̽¨ŒØÍµˆïéÚµS`4/æª ×ŒIw˜—S€Ø¥õE¥¬kפ9*1R#P Ö±]ºCt®£QЃ†~«x­c+·cÞZÆàsÖà�F%aÚ$³aN"=VQfa¤ ÁºgÏglËLtÜ9uÞ™ü(ÿ­b½þÐpjvÚa§]?ö‰§žzÂq*H ]npã+ʇªUÏvL¢Ã"8-:¶!²1™öìù&ÙûÖ}ó¯:5ˆàwšÛrãÆÍÚik…ÆHêüêk›Ÿ;>&n ˆõ>xð�ÛÔÌ Ðy¸ÁlŠ·_Mšr ë×mʱhtïþ¤í<Ô(³Ìs”Ýy4QÎç³g'•…è4E‡¨]za4¨£cÊßeD(±º~ÀõçÂ…ïéÔH]mm\5áZÖü¸Î4ç7¶ƒ»LjX?ÖÎËÏ>û,è÷Ý(KÜ`òæ:ÄèþpýðÃ÷z²Ø\aB9;jÔp™?^Љ©qÞõËOt±ÍšP²d‰Àz°;VpMˆŒ#€úƒÝHuì?([Ý:80mõÚA 9ʇŋ¤zpÎÇèLC½ eÍøñc5ËJ°DÚ'bQ׋t¿‰÷ù2OžÜÒ¡CÊLoè 6Ë=èÒ¥sŠ€&\+š×+(Û0¢Ô ç“ ÞÑzFpç £›Í ;v|%npÝãð€�sÛ Ì êbvëehïÞ=ôw&]GPéöŸ3g®fk�´ØSÐQhnÿXñûÜË:¼FHW�®U0ÐÙq Ô>Ìïã#Ùí24âzÝæw ~ ~•y^Ú0Å®_°ß#Ó²Y˜Â©¯`*]º¤œ¦ó¿Ç®>T¨PAyõÕ—ß³8¬ŽèXœRsÿ:×Úø]F†Ëók¬öi«D¨s%X‘'˜îÀú¸qãF® ‡ÖŘß>F¨™èüÃH®7ÞHšk•4sÚ7Áì„ïf#ȇ~˜ì½•+“*}¨0b¤™\ð=ð@#}Œ ‹Ó…>"„ , ñ‚Î/§Y°6þüþûoŽŸÃHG§´¼hl7+|Ö9Oýæ4b4x@‘"78F†_sMR­ÓïŒf]!}¥9my û‘µR ߃ 3~CãÆîû*€Qû÷¯0: i&zn)Eyo¦R\±â}I$n)‘b ®ÌÆc[…:æW­Jj€C°WéÒ¥?‡÷ÍcÀ®¬4Ez¬"e2F~ö ·4ÜhÀtâgùñX˜‹ÖÔ¸ñýŽß}¢víšâ4òZ§9±ºêª+ÑèaéwM¿ýv8Ù{«V­4¼¹•GÁï[ƒ¨0ZÅÌ0€Ov+¦ªU«8À`9Ìóê}÷Ýg\`²v»íã±òÏ?'ôA~0²B#—]Ã)àÿ™åF–ÙMÁ“Úçsœ;Ì‘ô(#ÜEÝ2Yù]FxËëtÆ¡Ùmt\¦Lg;Ìt¾v0²Ó‰™Å‚· Îãæ9©´>œâïÍìXßæ¹-yò$¥äF– ³C$öË/O™º;Þç]¿ ¹õz"ص×&mŒàG™ie–{¸îÃH'8+v—ãûæz‡÷Þ[`Û©‚:öX”[á@@IÇŽ]ôZå:ZœŽ‹DÚ'ü®ëEºß¤ÆùòÖ[oq,ƒ¯¼2) §NÓõ™e#`ÊÍ`˜zÌ­óu§Œ“:MÜÎ[àVnY÷tVb ; q›Z×VX'ðÑGE4*6ší¿víZ}ŒÎh»@6¦ Šõ` ?Ïm±®Ã›4¨çøÖWIÁ…nûH°X—îãL~vÈZùQæ…Óž€l!“'OÒ¬’Öà”pê+ö—Ñ£GÆ,Sj(¹s'u ›YÄìàX 5ð+˜ßçHíýë\jtãg‰hϯ±Ú§­R»ÎID”ˆ8Ey‚ "Ì‹#;ÖhÙýû¿µý ¢[×­Û ;vì'žxJ_CCF5yáÖȸèCzc¤^^sd0:¹B5d+v6¥7æpµëH¹øâðæÇôÒc4ÿwß}¯p¹ßMfêg;Ù³çpýn4¾¡¿äï¿ÿ‘X¹äç9Í·Na3êÙä&Üueî'¨h…J»í6òb×®¤c"Œ”q;v°ÎMhàpê¬ †Î-“ÓÈ]±¼‰iN‘(ÐñîS™Žÿ;Ù{ñXÇV¡Žysy0êÔmYÀ\t^8¥ôX5É Ô>\´èMÚÜ¡~—ÿñXfg/~ÓÍ7uýŽpÓê;ÉšÕ[c…Ù0Ì:Š#¸ÃÍZ…š£ 'X/IÙ^Îãht3G™Ý~ûí!–1£žg1mO0ŒN3”¼l£‹/ά©õ÷í‹Çê…&?ÐéòÁïÎÊœ9sºXË4¬{L+à$5ÎçÖs‡Ýh|+”X~»@¿Ë/âyý€cÛ)íþù-[q kŠtÛX³ªŸ×�Á(¢@y°bÅÊdéÏq®[½zµ>F– 4ʆ Ó†aÊ ”û˜¾S”+WƸF¸S°ÜöíxŸwýâåXü.”[ÖÑ»áÔî¸ã Œ±ƒi Ð�ì#4ÇÔMÈî‚ë7”»nåD<¡q¼W¯>ºÏ¦Dq«%Ò>áw]/Òý&5Ηn×"á”à6¢° ƒÛ/¿ülìÓ?iÇŽ9½¢[ÙˆufvÄ8±$8ð­m`h¨6@€– ÛâèÑ£¶#{ÝDºýqî0·¨s,ÖûÍ7ß$ü©ÄK4ç¶xœƒ/¹$kÈA,wÞy{`:§}$X,ŽKk™æöž5ÛƒŸü(óÂiOµ^ê+© Á ˜¦AИÊS×”*Uʨ#ݲlrã÷ùR{ÿ²JëíሦŒŒV$ç×XíÓV©]ç$"JD ° "O: Ý­ÛÓžÿîÈ‘ßm_G¥ éÝ›6=;íB8Ól\vYöŸ1SFZ—=éyR4íå—ç ùÖNÝ_=,‰�©ÿÞ~{žlذQ/öƒyí@JíQqñͺ2÷T܈À-0Àºÿ5jämžiNËëÆLƒ^öksô$*_h0Štžg¿§*ö*ë8fƒ�²p—Ç.À"Òc£aLÖ²Ì:Ò°¯<˜rä‹ßå(~¬?s´7RP†Ú¯ræto(Há”G€,h<>xðå;[ÞÏò;œÖ‹õ{ÞxãM½yéþœ9“~'¡"éT %ÚyŽSû|n=¶C;ð[q]eN‘àô=ñ(#âáã?Ñ9ÂÑùm7BÍë:fAç¦0”Ë–%°X¿~c ‘Õš$èˆ>|ˆ 4$0zÒA‰ëq4ÈVªTIS§ñM´ó®WÑ\ûšç•pëÁP†?Ú¨÷ô•]»viƒýk¯MÕÖ3:e肬~~—YáhÕªM²ç¡Î=‰´Oø]׋¼ŒM;çK¯°½æÎ}GÓàïÙ³Ç6ë+T¦ouù³×!Áõùð¾'»å{‡}\ù±ý‘i#”HåÂå×¹-Buä5û„Ó>,Çe´×ƒÑò£Ì ·=Á~9«¯¤&LS‚c`Ê”iÚ™½rå*½Úvì€ÌŸNANbÑÖ˜Úû×ùÔþ˜šed´ç×XíÓÁÿ?~Õ9‰ˆ,ˆÈ“S§ÂO§ è¼uòé§ÉGhüüóÏâ•Ý(ë`¸¨„à‹@ó‚ÔËÅ¡µ2IJQ¿-^¼D†}>±Œß?~¹úê+Fø«¤P¡Œt¾ç»hו¹yéôwûL¤ûM¤Û^ökëga¿ŽV¼×q(‘/Ï ‰•P£ÁiY,Ê7~®?/£Ó#ý}©Á¯,/ûƒÓg¼ü­Ô…‚rÞ„Q?vóx§–D8Ÿÿ÷ßÙãÃKãmúôöçºx—±†Ñ_h\5¡“�)à‘^Ûäúë¯×†Â±c_XÂ>Q«V yùåɲsçNmà.P ¿¾·dɽG¦Í‹¦aš7oަõ^¿~ƒ|þùliC0¥n3g¾)£G?/ùòå ü]¢wã!œëB§cÅtÕUWÉ´i¯ê4‰~¸F¶lù\SÜ£<@ö=ÜfÌxCS¨»M3O=zô2–ùµdÞV‰´O$J]/-/½Øµk·tíúd²�Þ<yrk–|ù®0Ê'LÇq«ôîÝ'dLjYOwN}ßë÷ijƒÏú£9Çú%QÎm^ESw‰ö{í$òùËï2/Úã$­ äAV]LE´lÙ íXß¾}‡^ÿ ƒ2ˆá†éÚú÷ÎsÀHZnk´s>µ?¦fé×ù5û´üªs%"X‘'Hƒmzýõ©rà ×K4Ј8aÂ$}l¦¥=zœ¦ ³6à:AjÇP~þ9é39r$Ï.€‘HËk¦¼uóË/gÿOîÜ9%5!ŸY¹¹ôÒlÒ¹sG)W®lŠ9ôì¢ÊÏ7~¬+sD æFCŒ[EÀnŽb“9‚óÑ®ZµBb!W®³#ž0ŸõÕW_íúy¤¤rÏœ9³¤uñXÇá@y‰}«lÙ{dĈá’Z¬PÞaj'(ƒ9êð=þ–ÿ¡ø±þÌeÆ(4¾»5 Äj¾Z?™û8ÊšP¿L:¿YÏ[ÁûC(NóßZ÷LëeUŸhŠ?Û1‰äp,-Z,Ë—'•'O=ÕÍ×ö‰r>·îщN_7Nó*Ç»Œˆ¥÷ß_h\ECj§NÙÎ7Œçx¨Y³ºLžüš^‡`|ôÑvšeãÆÍú~µjÕRd—®jÕª©7À~‡Lï¾»@¶mÛ&{÷îÕl S§NüM¢wã£éP/0G§ºq›ƒÜ„ëÊ{î)­·¤¿ù]¾øâKû!2”ôìù¬¼ýö¬dÇX¼àZA o¼1KGCâ·÷îÝW^|qœmI"í‰R×KKçK/ž{n€vþ`ßmÕª…Ô«WG.¿<tf;¿ýö[Èú•uû™ûW0ë¨{'?ýtö{¬Ù,b-øŠ—r#R‰vnóYƒBí#¸ž29í#Áεãü(óÂmO°n}%Ö¼ÓäÉ“GZ¶l®7|þ믿Ñ)/±ë ÓªæË7Ù¸V\¼H«mvΧöÇÔ.#ý<¿ú½OûÁ¯:'Q"JÝ<SD”f*T0ðxëÖ­ \äõë7HG."=ØâÅó ¼¼YÛ¿ÿ O¡ÿû¿ÿs}ŸhDûZ]{mÒo1£yÝ|òÉ'–¿»VR"ÍÈñ=ž6Ýk¤¨Ü�¦}8ßù±®Ì@t<oÛ¶]Ü|ùå—Žï™#¨ÿüó/} ÖùfÍôÞNp|!åaÒ²…ž§6-ˆÇ:‡¹<(c"%å‡ ›ÛÜ FË:ó³ü÷ÂõgŽòÆoˆl7Èlè®».éXÅïÁHg7˜ãÔ ú²ãH=mNÃj@£¨S¹‡Ñ4˜¶nÝ&‰ ûn‘"EôñªU„,ËMXÏÓ§Ï4®>3~ãv¹âŠÐŸáH”ó¹5 5Ô~…9ˆQÆÚ‰wKëׯ×{t 7JŠ/fÛApìØ1‰4’/ž”Ê™�ó?›ûO:‘Mâû‚-&Ož(%K&)aÊ&ëù5Ñλñ`Î_½mÛŽón#P"\—]v™v\ 4@Ú·D_C=å£ÖHjÀ4&Y²d‘¶mÛHéÒ%õ5œ/Ç{Ñöó‰´O$J]/-/CA‡¡Y·nذ{9uþx)?®ÛÇ Î•&óº.Ø_l y<~òIRÖLdüÉ–-›Ä ®»0¶lq¿ÖÄèu¯×(‘H´s›8v¿új—ëgpfrÚG‚KÇ¥É2/œö\'ÛÕÑ©¯xÉPã$sæ¤éMCM c ÀñÛ×_´hÑ\fΜè^¶l™çïH«mvΧöÇÔ,#ý>¿Zù±OûÁ¯:'Q"b€y‚ù€14Ì›÷žk…ÌK–,ÓÈw;¯¿>SGÄAÇŽkCG×®õ9.¶Þ|s–„òñÇŸº6ÞÍš5'f¯B… ÉÞ«R¥ŠÞã7`Ž;'¨LÌ™3Oc´ ²kø!ÒôÖ šµã4Xj5Ä&?ÖUùòåßyç]ÇÏa{.\èÉŽùËÍ‘³gÏ7h¸^»v]Ø'Œ6³ÌŸ¿Àµ2¿dÉÒÀ|’UªÜ'±¯©HⱎÃqß}IëÑùèÔu³bÅûºL^R‡ë¦›nÔFDµ_¼ýö\Ç÷ü,ÿ½ðcýY3Ìžý–ãß#Ýï‚ %ÑUªT10‚/Ô9Òú~ÕªU1ʽL™¤‘ÒèüÛ±c§ãw`qÚ'ÑðT¾|Òú]»v½ë¨%ì+ï¾ûž}¤VêÛvíÚè=‚1:(Tc+–óùçGi¦-¨[·N ƒÄ/‰r>¿ãŽÛuDÌŸ¿ÐõØ^°`‘ã{ñ.#b ~-Û%ŽS!�æGŽ—š5“2K ñûåš5IûEÑ¢E5up$°6oþX^yåÕd˜V(sî¼ó쵯õ¼é×y7Üë„ÔL¡]¾|Y½Çñ»t©sÃ4²ìmÚô±ãû({QNÏ;Ïñ3wß}Wàñ±cHj0;° •´yŒÏ™ó¶¦˜¯k1/i×S»®gJkçK7ýu<ð8xð‚8½v¶a_r‚ f)Œ¤/X°€Ø/×_šqÊ ¦áÙ¿?©Í�Û"žSà2ƒÔ>ýôÿŒå8àøYÖÔð~KÄs›nå$²9™„nûH°D=.£ù~?ʼpÚÐ6R½z-yöپɮ穯ôíÛO4h,#GŽ ; ÞÌP‹�§�+œk­"¬°ï Ž‰ ºNõ´Q¢c H”ó©ý1ÖíJ©YFúq~å>í¿êœDD‰ˆDäY‹Íôþ믿–!C†Ùv¾à´oßþ2`À ©W¯aŠQ»wï‘W_¢K•*!•+WÒÇèÌ6;~^~ùU­ÄºA%¬OŸ~z! sH›jÈ4óVh 5SbYÌQ-Áß?xðPùî»ïôy³fM<Íç)sáçŸލR`MÓøÁÚ~¿,ç;?ÖUáÂ7F7êcÌaèÔx‡¹Ñ¿úê+ÇïÉ›÷r£Ã¸¢>FÚÁyóì+Úˆ\晞ҽ{¹ÿþ&aw¸·lù Þcä:,ì*-hh;v¼>Î;W²Î×X¸øâ³ÓÄ2ud¼Ö±W˜×Òé:bÄHÍaçÃ?ÒmÕ¡CGOÓohˆhР¾>F£-Êe»,h8DªH7~”ÿ^ù±þP˜£¾×¯ßhÛȇr~èÐáŽo‰£ «V­¬Ñq7mÚë¶ŸÃþov|á[°`dï7jÔP÷ œƒ°­ì¦GÁˆ«I“^7Mš4Ö ¨<óLoÛi»ð?0Øðá#¥yóV)]2f<;­S#Ršvéò„<ùäSrà€sÇ„¤ßÇ\´€súCµÕŽ »ÆÜï¿ÿÞ¸¶xN–J=ÔRü–(çst2Ôª•”å#¶•ÝzÙ°a£k'ijŒˆ¥«®JÚ68—:°š:uz\3ßຠ¾€ÆÓÍ›“"j×®!‘¹à™gzéÔ˜KÚ®£ûÏ?ÿÔ 6@€–uš¿Î»^¯¢½†öC•*•Y€^xa‚Η Ùù°› õvÆѸM_œ¨eœ÷Þ[xlUì…—²5\±úüóCÓÊ ö|Šß¯k1,ƒY'sÚgR«®gÇóe"@&'sý 3Íî\yá"^­\¹Ê¶~…}×wfç^ãÆ ]¿g„‰¶çì¸Î,{ƒõ$Þê×OúŸ(sqþ³k»ÀµÇ¨Qc$–ñÜæ®i”ÌÜGÌ2.Ô>,‘ŽK?Îo~•y^ÚvîüJƒ31µ$²Z§ÝñZ_Y¸p‘fåÂù�Y(¬ËaÍðÇöAxwÞy‡Þ£gw­ŒãlÈçi&ÑÖˆº#‚¼&N|Ùv½ïÝ»O3ä@8Y?éü­Dj4¯¿ íJ~”‘^ö];~œ_c¹OûÁÏ:'Q¢‰nÂV":¯Ô«WWÖ­[¯©‰QÙýòËm:7tÁ‚ŒFƒSÚùhöƒ“:l0:Ô&T„1zÑÚ¨H"ÍœÕÓO?e\̶Њr¿~u®g§Q£Õ«WÕNï&MÔD\ ?þ—ŽÂCc .ÖЉôÌ3Ý&\øöë×GÚ·\—©K—'5УX±»%kÖ¬ÚÈ1þ¢@gÎm·ÝjTzšJ´n½õ½XGEs–+WFSŸ¡1Òn.ã`HS‡Ôj¨P R‹‘ŒeË–•Ë.»TGzoذAÞóçÏH1w¾òk]õíÛ[Zµj£ûÉ ACµC#ã‘Æ 1ØѰ€m¹fÍ:ÇïéÞ½›ŽÇ\œ#FŒÖ}Û=oÞ¼:2 hŒF# 5t¸s–"÷š5ku9pŒ6nÜLçnÄH”¿þúÓ¨ ~n,ïr=þPëÕ«‡mŠG?aŸ7 <Lx ±ñè´® !ÞOñXÇ^]tÑEÒ¿_yì±N:‡:ÊšŠ+HÉ’%û#Ìì ^x¡<òH;‰…æÍ›éÿÙ½{·6d5iÒÜØ/jëHÔ#GŽè>½qãfa÷ã?Fù‹¶ü‡_ë¯gÏgäÁ[i=:³0бbÅ{uT Ê”ó8þ1÷r"vf{òÉ®zA  Ð�õŒÆLL‹…†/3U2Ê:ãÁpL✉Ž/Œ„oÖ¬…6þc®Y4¢¢<Ãܲø{¬o§ "×]w­±]ÚŒ/l»ŒõÜÒ8/W—¢EoÒ´½h8Y¶l¥N+�h C&«+¯<;÷ê”)S¥Zµªz¼,X ð:®°ïF÷Lš4A"ëßÿÝXg›ô€Ž=œ#n¿ýVMÁúß'ßñ•Ž05{°FŽ|^.½ôRñ["Ï‘áçìèèBYY§NM]>”›7oÖòåö?þà8Â6žeD,á·# ûA×®Ýôø¸ãŽÛôzÛkùò•zœ,X0n×Z8WaD$Íà'”“•+Gž… ÿýdÆŒ™òÍ7ßHëÖm¥aÃzú»ÐˆßöÎ;óØXÁ©õý8ïz½NˆöÚ9sæ4ö‰NÚiƒsSÛ¶jºlÌÑrçÏwß] å‚»12ÚæÄF=‚1}´ƒqìÔ3~ßÍz.Ãú^¼xi °eséÒ¥$^ÊÖH Ðç¡%uJö2:Ï^MVFÆãZ ÛºÚõêõ|„ÔêèL@@¤V]ÏŽçËD€Î-tœ¢|G&Éví:Ψ»c»/Z´Hƒ±Ðá*¦Å~aÖ¯0=Êœ‹¬eÏ-·Ü¬)Ó ˜ûU»víõxĶÄ>‚×@li<ø`3¡o8~«U«¢uFä7mÚ\ËSì¸ö@ðûüùóµn†²Ä-uzÇŽ]Œë”¤ë¼·ßž•¬ó3”D<·…rà 7h›‚Ö>øàÝGPwE§4ö;j±“HÇ¥ç7¿Ê<·ö„?ÿüÃXÎ/4³ ê 8ÖQ× .ÃCÕWp¼£  øèܹS²¿·Nˇsj®\¹ô7`¼ Ë„ ìϸŽF]×Ñ8âšÙ ±Œ¨ßÚe”±†ýçZ”iXV\³¢L2˳ ÎfñhÕª…x•Hç@ -ÖôèÑ]¯×½J¤úJ‘"…uÝb¾öÚT=6²gÏ®7\DË2Ò˾kÇók,÷i¿øUçÄ6*_¾’ã¹rå4¾k¾¥&XQX†¬©³Q¡Aå£÷íà1¸sç•W^Ó tîÜ1żr˜gºS§Çµb¹gÏÍdѱcÛï/]º´Vtq¡ofİÂÅwŸ>½%Qyž0a¼QÉè¥n¸`Æ-FR÷íû¬/å)nTžQé3ÓÒ_sÍÕš^;T"0z¬S§.:Å.>q³Â:0à9iÑ¢µœÏüZW ±cG½u”p³ÂŠ'žèâ`ÃW_}ÙØßžÕéqÐè`×€†åÆ>NÅ×jðà Ž *‚ˆ^–5k8°¿Ñ YRb­D‰âÆ­˜Ž¶µþæNÓ†N?Åk{… ®µŒ±Û ØfºF¿¡"ŽyÔÑ¡ŒÎThјh…cåÜ“O>íú]Ñ”ÿáòcý¡²þÒK/H·nݵÁÖ¹š£ŒPÙO hT~啉:ÒnûöíÚP‚[04üŒ9L2ítëÖU;PÑÉ…NÂéÓg${¯ƒ ™Ç0‘ŠßóÖ[ö)áÑ@>|ød#�"È2…Ž8ó\©Ò½ZŽ™0‚ÞÍHl\Œ1\Ga”çPF:€B¹þì³=™Tü–Hçslï^«e¨qý…mj…ðAƒúk玈s§Y<ˈXA'BïÞ=´à³fÍÖ›:Ï+W®¬£;ã¥nÝÚÉFtU¬XÁèxÊ"Ñx䑇ãï'ÍR¢ÙAPs—.S¼îÇy×ëuB´×Ð~©S§v hå:pq³jݺ¥v68Xàú ø”k3g¾aû9”£G?vÄKÙ)t™Sœ üDzøqãÆ–1^×b=ÖÞ¨K>¡ëaèˆ]¹rY`YR£®ç$Úóe¢èÖí Ù·ï€v:cûšS~š°Ü¸&Ãï `‘1c& ¦}ä‘¶õ+@Êüaûn›Ë/Ï+M›6‘§žzÆöxÒvèðˆ¤ó|‡ \·]àZ×È&ç`±oß>½Çõm8Á¨ç678¦Í}å©]™êeq’(Ç¥_ç7¿Ê</í XoC† ´mOðZ_¹êª«´ŽŠ`++íaq< ø×§èT^²ä씎X/;?nœ^Ôà:|ÖšˇcÊiHüöÁƒeÚ3zíët®Bç:®G°<áH¤óYn@‰%$‰T_A B›6­5hÇ ‚óàž{JɨQ#$Z~”‘^ö]'Ñž_c½OûÁ¯:'ê,fvp÷i"¢X`€…d¸ð¬_¿®Ñ€1_;ì~ùåg‘]·Ýv‹6>Gé¢Re¦h/Vì.Ç�xýý÷Wi'>iCkØM…y~q†’ˆÐE¤u“&÷kヌ˜3g–Vy 5Œ@ GáÂ×k£ŸuähaÔ4'Ož"›6mÒ c4`ÞJ¯•gt"Ξý†±nfkC*½ˆàE'O›6}Àu>»ó‰_ë m³fÍÔý�Mýû:‰Ò#£CAgçäÉ55=ö¹½{÷ëüˆhTÃwaTÃý÷7Ìq ŸèDG F oÛ¶CÿFâäËw…T¨PNߋňl;È"ƒNMth¢Û�õÇC¯¯HÄc‡eÌÛoÏÖF³÷ß_­e Ž{¤DG'8FZ"]1 b #;0ò "èøÄ([Œ@™Œ,mÚ´ò”Í$Òò?R~¬?Œv1_Œtýá‡ïuyѨ‡ôú˜2(i…¹£,ÂH–}ûökc}öì—iCl5tÄ›Sö'@ F0¡üBÑ;wéˆ2_¡¡ºmÛ‡u*�/sÌ"¬bè¬E‡!æXź¯T©’þ»†C4²¼øâ8M—¿mÛvÝ'Íì¦îÝŸÔé&Pn<ñDg‰¾£mÛ6:ê #Ä7mÚ¬#ð1â AŸìAg²_û°›D:Ÿ#SÀk¯½¬£‘Šûl‘Ãh</e¬·‡ô%ÞeD¬`4FOaÛ|öÙÿéñóF¼Ö©SË8Ϊë1OØ_ÍÀÌèR»v-‰¶×€ýtÄ*Ιõ†òÇ ¶®¿1úÍm{E{ÞõzàÇ5´_ÐY[¬X1ãü4O÷ü^LË, 8§ ÁœªÉí;pl™ßÔðÈ0† AdvAÙ‰¿‘tºx)[£Àt`$=êk/½ôr²€øx\‹áÚ×5S§NÓ:&2!àA%Öκx×õÜDs¾L¸Þ¶ÅoÀñŠŽ;¬{Œ -^¼¸´nÝ"¬ÀDl‡iÓ^3Î?ÓŒóà:-°> Èo”µuô\èe} î?eÊdÍØ‚%¬WŒ.ZôFiÜø~=·§¦¤í}ujF¬;Lg‚ߊë.죭[·ÒrÌmº>œþúë!}ŒÀ´H$â¹-¿ö'‰p\úy~ó£Ì³kOÀ9 ë�õ'th7jÔ@1'võœ‡P‡Ã¹Û ׃NŒz÷îi\‡ä’õë×ëßáZ ­Áã8.\Xcp½‰ üN”˜¶ç§� Àg‘1wéÒeƺZ­Ó^á;Ðn’7o>ýdöŠ4Ø:QÎ?è´³x‘Hõ°¢¾6wî;:%! `›ùÅ2Ò˾kÇók¬÷i?øQçDybBÆM"¢Ô–·ϥ³yìvŸÎá¹yKo¹7oμ–!è†÷«4ý‰ÿ¦ y'¢s R²=úècúÑ»hÀ$JH#Ú Ac}üÔSOh;ѹ¤nÝÚ‰QOÈVAñ…ø‚@Çܹ³…:TÌÑ•o¾9C *(D$:9èì›3çM‰TéÒå´“”=ôï?Pƒ³Ð¹¿|ù’dïmß¾CÚ´IšÙÊ—/'DDnÝ£bÅ*rüøq‚-Ú`u¢xq«s"óÛ‹/NÔ ¯¥KÆmðù/S¦Œ˜ßsô=s2èvúÌý)Ëí´å>ø&ÏÝîƒs{O%nx<Q8zôh`®h'{ö|xŒ,*DDDiF€>|Øõ3GŽ Œ‚GF$Š/rb„&ÔªUC(õ C({ö|xŒÑzDt~ §Ü°;ÇîÝ»Oï‘á'^YWˆ(mCW@É’‘e¾!ò“uNdFƒ"EŠ0¸‚ˆ,ˆˆˆl`TÔìÙoI£FÈ3ÏôÔ9·í`zI“’æ™G:ÏÛn»UˆˆˆÒ‚7I³f-åᇑï¾ûÎö38Ž3Nï¡té’Bñ5uêë:©»`‘:Ž;&#GŽ‘úõï——_ž¬ÛÃÎÎ_Éüù ô1¦YÁ¼ÙDt~Ú¿ÿ€tíú¤QŸl"ëÖ­wüÒ›S@Ùc‘F0Ý ¦Ã!" Å,70K¢OÏGç>¿êœæ~Í !"J¥€”sæ¼…˜“µI“¥nÝ::*Ë1.æ¶^¸p¡ÎÕ ­Zµ”K.¹DˆˆˆÒÌ/l6TµhñÎ?|×]wHöìÙµC£fß{ofP€R¥Jpôlœ`îp\SlÞü‰q­±H_«]»–ë¼ç;9Ž9¹1únêÔézmX³f5ÉŸ?¿^3"•ñÆeõêõ3˜·»}ûG„ˆÎ_ÿý÷Ÿ|ñÅV9qâ„tïÞC*T('eË–ÕÌ6xíÇ”eËVèT¨'OnyàûS|Ͼ}ûôžóÍ‘Wf¹qûí·ÊE]$D©É¯:§ù¥J1àŸˆ,ˆˆˆôîÝS.¾8‹Ì›÷ŽüòËA™<ù5ÛϡѽU«Ò²es!""J+jÕª©#ñG§i„çΧ7;eÊ”–û ÅFv 2<Ùk×]w<þx{¡ÔàÚ Æ׆}åÿÛ";vìЛlÙ.ÑkHd° ¢ó×µ×’ñãÇHŸ>ý4˜âƒ>Ò›k9Ì6åù¾}ôžDäË J$~Ô9¤qìØrÉ%Y¥hÑ›„ˆ(0À‚ˆˆÈ'žzê ©[·¶ÌŸ¿P¶lù\~úéG£Bð·^ÔçÍ›O£ªëÖ­%W_}µ¥5ÈŠ€Q@8Ï}üñ':2™™.ºèBÉ™3—N}U¥Ê}Ì\G»wïÑNú¿þ:.¹sç–J•*ÊCµdjøT–#Gyé¥dƲ|ù Ù¶m‡Î%Qê—^šM ( )‹ëÔ©ml¿lBDtóÍEeö왲té2Y³f­–ïGŽ•téÒeJv)R¤°fµ¨Zµ²Ö=í̙󦅣Gîz#JÑÖ9sæÌ)›6­"¢D’·ϥ³yìvŸÎá¹yKo¹7oμ–!è†÷Ðr‘þĉ7%”L™2–6îN·£gîOÝNŸ¹?e¹¶ÜßÄá¹Û}ðã`nï©ôBDDDDDDDDDDDDDDDD®`ADDDDDDDDDDDDDDD,ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆB`€Q ° """"""""""""""" DDDDDDDDDDDDDDDD!0À‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(„ „ˆˆââÀ²nÝz¹ýöÛ妛n"¢xaùCtî:uê”,_¾Rþþû¸Ô¨Q].¼ðB¡óDZcÇdéÒe’'O©P¡¼%Š“'OÊgŸýŸìÙ³Gþý÷?¹êª«¤dÉâ’%K!""¢”>ýô3Ù½{·TªTQ¯íˆˆˆ(q¥óásél»Ý§sxnÞÒ[îÍ[†3¯eºá½l¸?qâß BD” Ž=* Ü/üñ§dÈAf̘&… ¿|þùòè£éãûKåÊ•„¼›:uº¼üòd}¼xñ|É™3§%’Ò¥Ëi'j½zu¥Gîa½ëòç\j]Sôl”µK%kÖ,òþûË…¢óÊ+¯Ê”)Óô1Îÿ¸ ´Áò¦}ûÇeË–Ïõ1¾ßEöX¾ÇÏW_í’gŸ}N¾ýöÛd¯OŸ>E ¾A(íX¼x‰q^¢q yýõ×IZ3{ö[2vì ú¸L™Ò2räóžþîôéÓòÈ#äË/·êóAƒÈ}÷U" ­gÏÞòÁéãÕ«WÈÅ_ìéï:tè(ÿûßÉ”)“¬Y³:ÅûU«Ö#GŽÚþmÆŒ%[¶K$þürçwHµjU4¸/œe –.]:¹ôÒl’#GNýΪU+Ë-·Üìø]æò)RD¦M{UÂàŠŽ»èã<yrË»ïÎÕú;ѹ&S¦Œ¥»SÆíè™û“A·ÓgîOYn§-÷Á7qxîvü8˜Û{ŠS„Ñ9#ùJ–,£·I“^‘D€NtnFsýøãBDi_‹iYƒÆ×DÅò‡èÜöÃ?÷Ý)ÞO¤r*-”™iuûûí÷r>úè£5kÿO>ùT(uảsç®à t’]~y)P @ÂWŒ3>°ïà‰ÎMß/7Þ˜”Ámݺ Ž©ÁæÏ_®(]º$ƒ+ˆÜ¿ÿþ+‡–ÿû¿ÿÉ«¯N1Žýf2hÐPm#Œ­~ÿýˆ|óÍ72wî<i×®½ 2\þùçñ›õšî×_Éßÿ-DDD”¸8EQ jþ±ÇÚËÒ¥Ëåî»ï’R¥J Q<°ü!:·µk÷°6Â?þ·<ùd¡óKÏžÏÈĉ¯عåÁ›Qj{ÿýUÑŵjÕ”gžyJG£“Š(5¤OŸ^zõzFZ·~XiF#Å‹ßí:]ÍáÇe„‰ú8sæÌÒ½ûSBD‰¥OŸ^Éž9rD~ùåWÙºu«qÛ¦Y«-Z¬_Ç#ùòå ù½{÷ .ÈxŽï8räwÙ±c§¬]»^ƒ,X¨eIðÿVµjU5{ÇW_í–fÍà”ZDDD ŽDDqÒ²es½ÅË¢sוW^)/¾8Nèü„ 9ÎQ"ùþû³™²yäa ®�¤Y'J-˜Ú¤iÓ&2særð௘öÔSO8~~ìØñrìØúøÑGÛzê˜%¢øÁ5kÖp|ïÞ}2tèpùâ‹/5£R·nOË”)¯ÈE]äöµR©REÇéL¾ÿþ{éÒ¥›|÷Ýw:}RíÚ5åöÛo¿ ãÓsÏõ"""J8EEí¿ÿþ <Ι3§%жm’+®¸B¿óλ:"ÝÎÇ"+V¼¯Ñ‰‹)Fˆ(m)X°€L˜0^*V¬ Ï1ÅÇ´i¯K4ÔŒ ¦%K– ¿˜Á‚ˆ<ëÔ©‹|òÉgrë­·È+¯LÔ¨í×^›*›7¬£;®¹æiÖ¬‰Ô¬Y=ð7ˆŸ5k¶¦äûã?%W®\R®\YiÕª¹dÏžÝõÿmذQ–/_!_~¹M~ýõWɘñÉ;þÿûïo¨£P¬^}¦¼ôÒ¤d¯¡eV¢®¿þz™1cjŠÿƒôŸo¿=OçcÅoBª?,çwÞ! Ô“›nºÑvùð›}ô1}üÒK/Èu×]k,Ãòá‡ÉO?ýd,k.y÷ݹ)ÖÖÓœ9oÚ~çž=_Ëüù 5- æ_D%–冮Óèü²eËH¬”.]NÓ¶mÛFÚ´i­N .‘ÈñãÇßò¶äË—/Ùßüøã2oÞ{ºüôÓšú7oÞ|rÇ·Û¨þV'^ÖLšôJ`.[¶H.»ì2ÛÏmÛ¶]ÞzkŽlß¾S~ùåÉš5‹î+­Zµ”o,bT®'Û¦Ž X³fµ¸Á|šï½7_–.]!ß~{@ÓÊ^sM~©Q£ªÔ¯_OŸ»­ÃGm'=ÔJ¶lù\— w‡ÿ&9rd—»ï¾[|°©VøCY¿~ƒ± izKÌûyñÅ™åÚk¯• ÊIíÚµGV˜víÚmlÇ÷ä³ÏþO!ÀþT¼x1M9‰''NœÐÔ—˜£xïÞ½rôè1¹ä’¬ºŸW­ZÅXÕ×C´ÌõغuKißþOÛÛøäÉSróÍEußrËÍúyìwË–­Ðåݽ{·~Ób`{¡A4C† ®ÿ/Ü2�Û£mÛG“½†²ów›V®\j¬¯K’}æÐ¡CÆ2.’7ɾ}û4öì—ÉÕW_-÷Þ[^êÔ©­ûg,x=Þ0Ï4Ž}G?ÿüó™}ÿ)Uª„4lX_×K¬ýñÇ:"èý÷Wk9ˆ4ã8vнIªW¯¦çP¢)›"]NœãòäÉ#… _¯åÄ]wÝéø·æöÀòLœø¢î8WîÜù•kH7ë6"ËN4û—ßeæ=ÆÅ;wîÒ²å1ާ‡jm”a…Ä/~œƒÌmðã?ÉÔ©ÓïÚ,¿ýö»q®¹Tòç¿ÆXou´a6T9âÇñ²ç£ÖåþBã;èºËœù"½~Á2 Ü·ûëõÈÀý¥råJa•SëÖ­—§žzF_3Ë]7¸ÖÂ5 s¦ri™¼>°Ž±/^}5Ê÷rß}#ã#…sݲeËs݇Æùcžkq®Ã~T¢D1½ÞôÒAìWÙùÕW»ttõÖ­Û¿7Ô±‡ýöå—'ëãÅ‹ç;./®1q®Ã5®“.¸à½(Q¢¸/—_~y²Ï‡»_¼øâD]ö¤Ç)÷ ¬k¤é^¹r•|ýõ×ò×_ÇåÒK³)Û«Kùòeþ®èÚõIÙ´éãd¯uêÔ5ðøËOtvüûHÖ·U´×iN¬ÛtÓ¦uzþƳtÝ¡ŽqÑEÄWÇÀ½R·n£ŒÍò;ÃÝþ&¯õ»m÷ÜSÞò¸”Œ5"ÅgüXáƒåÊUÔ}ÒiY‡bì“åÄ«HêQ‘nsÿÀoܰa^àzûFWgÈà­ÞbÂÈî·Þš«Ëój¦Luý7mú€§k.S¤uêH×_$0rSÖtéò¤þ¿!C†Ëôé¯%[GØ/ž~”>6§qZ‡Ñ\‡˜¿¹^½ºÒ£GwÇÏ=òH=g,XиVœ!‘Šöú:šó¥yÍU¬Ø]ò ãt?5kŽ®7¯¸N,R¤°ñ"ÎÈdw-dû¥y¬7jÔÐ1‹I4õhˆôøG¸íe&¿ËD†ëDL¥†cÓéÍ™3W³:Fz~ߨ'àÀ±à7·²!ží$~\#cY?üpѶöžq-¿_¿åNéÒ¥åá‡[ëß?üð£Æòo3êÅeìØÑŽß«k.+?ë–©]¿'"¢ø`€… ™hÄBÃÄ_ýx¥6:§ÿ6Qê3Œ Ë—“ý-*ó³g¿eTìß—É“'Ù6” ‚×»wã¢ö“d¯ãÿÏ?÷é…%hÑ`ŠJx4Ð Ô£G/½à ^NÜðð?ð¿Ü*–h hÓæmLŠÖ)�Þ|s–VBì–4ôïÿ\Ì+¹½z=«ÿÏ ¾F«V{öìÑÛ¼yï BmµòKæº3õM‡ŸÐ߀y2‡ ìùû,Ô¹ó“º?[¡Ò‡ÛêÕ¿Q®:X&… 8Äê§Ÿ~>Ó¹ð¾Ñ 7ÐhÜ)mû÷Ø× 9eÂ~ŠàÜfÍzK†¬Á#vÐh‚c0xB#*n¨dc_ªX±BŠ¿ÅûH}‰ýÎ Ž¨4â¶xñRcû?ïKEÖÍÛoÏÕýÌêÓO?ÓF’×^{E;@Q^`;[¡aܸݲfÍ:oÕi{ùU„‚«aÆeØ_É^ÿå—ƒzCãÛ{ï-4–yTªŒöü÷ß΄‘ú{ƒíܹSo³gÏ1¥»KµjU$V°]±=Щo•´ž>Ò€4Î4À蘻Ôö;âQ69-§y|¡ñ}úôyŒ a̘ñ ¿ö¯hË.¬sìG(_¬PcàxD¹á?·3 {¬c 8˜ëåÝ;ïÜ®mÙ²e³ý{?ÖÿÁƒåé§{ÉŽ;’½ŽcÛÌ™³ŒNŸ¡Ž æ‘*]º”ÑiSžÑP†Y§TþØGðÀ5œ[ Q4œÖöEܰ]ä1rä°NÐùÑ£Gï×n8×á†ÿýlĈárÛm·Ú~‡Ÿeçüù ô»¬çmë±7hPÿˆmqí=~ü„dßk œ+qùöé§ŸJ$ýçH¥j¿À÷®Xá¼_ í©§zèÿ²:tè°– ¸¡¿1GŽѬo?®Ó¼B½¨C‡NÉÖQ÷À>úÖ[okЂ[¹Éö·m}'˜ë1Q®_¬¼Ô£üÚ&è¸}ôÑǵSÈʬ· f̘QÚ¹kçk¬?ë¹ôï¿ÿ¬÷yòä–Pü¼žö²þ¢nì ètĺÆu¦1¡óÙÜÇñú 7\oû=‰Rö"Úëk?Η`\Bhv§Ÿî©û™ ׉6lÒl°ÞRS4õhðëøvâg{Y´eHZ€�^NŽ÷¢¶_"x·zõªœ9si'ÿï¿ÿ&©%–í$~óØOñX&+\káo׬Y£m¡ÄëšËÏ2=‘ê÷DD[ ° ¢°ýûïÒ·oRh«V-tÄ.*q¸àÄÞ±c_,Y²jpEΜ9td"lÑX¾páb­”¢àÀ!:Ê •Ð'Ÿì®•@tuýúu42ºi†(`\Ôã‚);ÍèìZµj與cÇŽ%ô5Œ”jß>iÔä…&ìÅÿèÜù Íqá…j41¢1Z¿gîÜwôâüï'Ÿìâ¸N^xa‚VJ«T¹OÊ•+§QÅhðó ëÊ @TxݺuŠÊ-ƲdÖJ ¢¨QÂE6F²"ê>Væ aX¯uêÔÒ†r4€X3G` ‚ è<D@MáÂ7hü®]»´r‚ :éP‰}ì±ö+øæºÃè—† è~튑,h�0`n[/FŽ-û÷ï7ö§šFCÓÝ:Jpûö:•Td¹Åm$çÿþ÷?íüA+Ö öã#GŽhP¾ ãX¦9sfÙ6b¡ L€í]·n-í@B%~Æ ²jÕºovéò„L™2Y¿ß £“Ð8ø»æÍ›ƒ7èñµuëVí@E#yÿþï¿VOÖÛOt×}�û=Ž ŒF¥ 0ضë×oÔŠìèÑãäÙg{J¬ çŒoè¶«Té^=N?ÿüKc]ªí¡CŸ×N4`=a$Æe—e—¯¿þÆè8™¯¥XN4aD\°HË�ŒÞœ1cš>nÑ¢µÞãXEfS–,Y1âà¹çúëúG£rÕª•²é-'ÐЉN)üTܤæ6r#VИm6¾à˜oذžŽÐ@™ŽFst®a!ö[geÊÜ#~Ãh”Çï¬e§¹ž0b(,X¬ÛÇFUOš4!Ũ›x”MNˉÎw,':P† ±Û#Xœ:ðyˆa7jTߨ·®Ól4ˆyåçþmÙ…Ÿfpþ?¾Ç ®p¼¡±·OŸçtf4üÜÎ8ÆÑÐõ‡rÁ#Øçp­2gÎÛºîPŽtíú”¼úê¤ÛÒõë–víÚë²�ærÆ÷`¤$F.aäÑqÑQÓ¦M‘¼yÝG>†SNa¹‘A�#àÉLœÎ™(~þù}Œy§:Ü#]/ëcõꌚO5»R›6íŒk€é’;wè@+œÏ:vì¬çU@ç>:ÜÌk|ÿ»ï¾§ûQÏž½uŸ·ËàWÙ‰² £òòçÏo¬×coéÒåú=8ö°ÿÌžýFظFBv @ F£¢Ãð¿ÿNêq‰@'h¼Æñ„ã°_T«V-°_àšÊižq,#{FÖýâèÑ£º=ñ>^/S¦´T¨PAG0"ðbÑ¢%Z®â;„1iÒ‹žG㡃 ×f}´Æ8>§èk:=&Å‹×ÇÈa'ÚõíuZ8°ÿ¡üÀ(EsèìF` :P.c½vèð¸¼ùæ ­“‹tûÛq«ï˜ÛF«å&Lúj cÇ€ßë1Òc߇ó­Ó²æË—W"á¥å×6Áòc?ýûïãÒ­[W;‚z 2²¼òÊ«zÃ9×ýv×ÁË—¯Ô €6\ãÇuð7ßìÕs)¾ÙeÜøY§ö²þüÐ¥K'ý2~òä)šÇ:öod‹üïvíÚØþ}"Õ…C‰öúÚ¯ó% þÙ·o?=FÑžqã…u¿ß¸q£±¯½¦ë uXÔïbÀJ4õhð³ÌµM{Y°hË´¤B…òcþÑX˜Ù²]*©!–í$~óvûiƒuõxÁõÖÚµë4ÐåÙgû׺þÖx\sùY¦'Zýžˆˆb‹D6ŒÂEöèÑ#4ͦ©^½:FEù!½XÇÅ æ7Eg„µaSˆ´oÿx !•6k¥úH¡Ž@²µ‘#NP }ðÁVZq@CYaÄÿÁ ó&\€ÛèÂß"À#i ŽœÆÅô˜diËÑø†Êp×®Ý4[:YÐ`Œ‹l;hŒA*JtD‡ ËkŽºÂEøË/OHÖ@ŠLÇЪÕÃÚ™€ÆÔ-ôÔ© 4ja¤¿ìþRûMœøJ`yÑnMqY±biÒ¤±ÑÓE³@Ìœù¦Ž�tªØG£Žñý€JÖĉ/$[wÈøQ·nmcY:i„¾¨p¿üòKÉ"ñ‘"¸J•ÊÒºõÃÚ8…éCÚµ{Ø1¥""š5kj46>x µH}ŠÆFŒºEà FH"5©ö³i7Ò åË—×Æ)TòÆ{AGX!Í/`ßž2å•d¡Ø%J”‡j«¿Rk>*sæHt6"ˆÊ„c hPB'*´™à%5u$°ÍZ´hnl¿³X¤Dç FClß¾]oH 9xðÀdÛ£Q£FyÔZ×:|ƒ¢)Pî™å Ê?á¹ÓèQŒ`@åöÈ~œ6ûé ACuÛ#½vp¹kø¿fçÊÝaÆ$ÉR£F5M¯Ž]tX >BËâhSó[a{ôï?H÷I”ùÈr€�'«&MÐì{Ø&hر?ñ(›¼,'RқˉId&jÞüAÛïÃÈpüÿqãFGœ ÆÏý+š² çt4’&L—¬ìA‡®Ð`gvfEÂïíŒó7:ûƒßiB�¶-ÛÐ膲å�öC+?Ö?:øÌ`”»Á#£"çaÃFhcâøñ/bƒÄM¸åT:5µ#°ï:Xà=ÀyÉëÈËp—ÅëúÀ¨kìC† ÓÑ•á@'þÌ©q¬°Ï =ÎwhÈ|ÿýUú­ü,;qý‹ëÛú%{Áž¸¦Fg:Îg8öPÆx…ãV€ëš#†%ËÄ’”^¸–^'áwŽ1R§T0¯ï­ûF{;Xà=03­ÆŒ§A�Øg0â78m;±1b×·8ΰmMîu °fÜBGX¨,/Ѭo?®ÓÂr)­ûÊ<ìŸwÞy»^aÿB€ðóÏKö·Ñnÿ`nõs[�¶YΣcÑîzÙõÍ1ˆÀ/¯Ë/õ(¿¶ :lЙ:}úÔd!IYdîÆ›êïFDzX×/:¸F£x‚i¬#Q÷Áµ42Ú¹e“ð»NjýùS•vîÜQÏÏè,ÃuEïÞ=Œóë‹©cž~º›ízO¤ºp(~\_ûq¾4áüõ0aÂødm<èx,P €î'دqH­�‹hêÑ~—¹v¢i/ M’Öà7™Y¹öîÝ'ÑÀtt„B… Hjˆe;‰Ç<ö3¸¢lÙ{t?µfAÁõþÊì‡NâqÍåw™žhõ{""Š­´{uDD© iVƒ+‚¸­Zõl$8.ÔƒG}áéùL{ö|“ì}n,[¶HÓS>÷\Ûl¸pDƒ"ìØñ•DÑÒ¸…^½zØÎ Ñ”}ûöTFp‘ëQã‘W�F,\øžÎWÔßv£Ï°Ì({4R›ó€ÆFÆuéÒѱQ iv͆§ž³?£Œ†MªÈ¡b€Î©XÀšf ¿~ýúØ®;4²?þxñ U»4‡ØGÐ �èàÂÈ.'Ù²]bt µ³}0fåÙ0‚a^k(Z´¨c]ìkæþ€†åà©<~øá{½GC©Ý(óB… Ê«¯¾,Ë—/NÑq…yWM%K–;O>ÙUG /^¼ fÁ€}±C‡”™B0¥P¡³Çl—.S4ˆ£sÔ,pÌ !ÙÊï2À F`}9<E娄Žgæ§3’‚”0—lpg“ ûÊô¤…µu4¨Ÿ¬Ûãá‡JÑø 8pîAç=FÑX;s e“×åìÝ»g`ùÞ|svŠÃVØÿ¢™jÇÏý+š² áÔ‰Ú×¶ìA‡VÇŽI4b±q]b ®°BÃ¥¹-‘M*X´ëÙ½0Š0Ÿ±SÚY4\¢1­té’z­ä7\[aÎnøàƒëØ £úñ •¸ó‡ g}˜éþ7nÜvc9¾wÁ‚w´Ì n86a´‚oÀîzÓϲ×\( ‚¿¯wízöZÀîØsc/Y²\l4°°æ¦`Áë$³¡ÜdÝ/V¯^m› ßoîwß}g²NëöDðVppÅÙߨ)0âS^ÄZ4ëÛë´pàxwê¬,W®¬î§æÿÁ¨S«h·°hê;ÁüX‰pýÌk=ʯm‚,�vÙ6PGV?ó;Ðd…ï4;Ð:txÔ6­:ê¨ýû÷q :ñûz:Ôúó:øÌN|d-@`²‚B‘ÓN"Õ…CñãúÚó¥ÕOt±mãA½Óì° ÷\ç§hêÑ~ßvün/‹´ WÅŠUŒm\ÆÓ-š@l7Ù³'µMþöÛa‰€Ñ±mªV-ºL‘Še;‰ÇüìÙI×rȸ€àZ»)f‰²ÖM<®¹bQ¦'Rýžˆˆb‹D6¤ôuJovÕUg+äNóß!%¤É®rƒ Q\$;ÍufZ¤s®Z•T‘EåsL;Áûæ(ÎÍ›?vüœÓE¯W¸PÇw¸¸Ë”él£¡™®/0:ÑiŽMT&ÐÀh�q‰ƒíŒzX·nƒŽò–eíÚµž–£)½VpÜÒt"Rßää‚uè”ÞËa6\aª+ÌuyàÀ}ܸq#×Q"¡` Þ7sçN 4Aã„S§ö54œË“çl…ò½÷Øv ãïÐQëÆOtê8­ƒ+¯Ì§÷hTwJã|Í5gÓC"Mª•ße@(X_N+`Ý_â9—+²À`: @�‘5M0ŒpÃ<©ÈÞâV>Gbåʤ8”í÷ßßÐñsì›9sšôë×7Ùv‹WÙäu9Q†>ð@ÒœÇh”tj(Æè¸‚ H´üÚ¿"-»ÐéjŽ.ˆ7»ÒpGÚà«íŒ>'Ø–æûè¤@jÝ`ѬÿU«VÊYt@»ÁÈñÑ£G¦È〉d"ÃTPÁÐQcNP»vm‰…pÖ‡õ}L.L+âÖ°‹u3&]o7¿ËÎ’%‹Ûž“fcﯿzïÀzüðÃõñ}÷ݧS¬8©\ù¾@àtð¹ÎÜ/02pýú )þ£(Íý¢V­ZÉÞÃô6X\/4nì^fšÇ:/öï? ±éúöë:-nå“õÿ`ÅT)&¿¶¿U´õ“ë1Q®_‚…ªGù½M0šÞ :ÌMÁõs_Áÿ°®ã`¸Æy݉ß×Ónë/çhlŒ€›"ÐÊN"Õ…½ˆöúÚÍùÒ ÙR¬õé`˜æp¾ gºU?EZŽÅñíÄÏö²HË´Sñ†Ý «ƒõ†¬iÈæ…i›6m®Ye¡bÅ š1$5IJ¢½F63¢âüìVïs«ÓÄãš+ez¢Õ(¶8E…-kÖK<}μàfm4qÕk¾õˆ˜Ç<Í?ýô‹|õÕNM— ˜Ë2»víÑ{Œ¾7/þ bHè4B–,þŽâGŠs£ñ&¤a•‹/vn ÄHD4x€—´%ƒD„ÿý!S6‡ëÈ 4 µ,Øçn¾ù&/2Tˆœ ­¤éøñ¿?gŽŽp‚} uÅ¿ÿN^¹GeÔ„(·}Ó:¢fÿþo“½‡Ž]¤’GJOLÛƒÔ¥J•2-oM1*)*ø "ÿ‘"iÿÑ€ƒFu4ˆa~Ïxq+kÌà·yÚÝʿˀpà;p|÷Ý÷:Ú÷›6m ¼Ëã;.L~uœD¶IÖÌ‹¤ó=^eS8ËY¬X±Àc¤µ5èVÞF*šý+Ò² å±9*øöÛowý4ø¢,ÁtLáŠÅvÆo U.ZÛøÖ5€$ÜõoîS´tš–#^*V¼WF§ †K—.Mpˆ×�OåÊ•‘Xg}`{bû%e•úF¢}ú¸ýòËÏÆ9ð'í\1÷·”ÛÍß²ÓìÐq~?—^†3úÇ‹yäå\wñÅ™uní}û’7X÷ ²`t¤ÕòåIÓÆ ã"xŸ1ϵhˆÇ:v[ó\ ¸î g®êpEº¾ýºN Fmº¹ù梶ÿǯíoåW}Çõ˜(×/ÁBÕ£üÞ&ÖãÆí½à}ç2(Zô&×kiÀyÝ©å÷õt,®‹Ü ðSLšôJà5Lœ…Ó”Hua/¢½¾¶îùÒÊËu&àœ}ßÏ齊´‹ãÛ‹hÛË"-CÂ…`&¯Ûsúô™Žu?™ûè…ºOÉ2vì  ‚zôxZRK,ÛI‚EsªœÄ9íKvA/ñ¸æŠE™žhõ{""Š-XQÂÁÅáÒ¥Ë4¥ðÖ­Û´â •·¹úB9t(iôíŽ;¤Q#oó<ÒçÅjJ„?þD£ãÑ¡m—¡"©RC±ŽZFjÁPùnBåÅÏF%sÞËH–ÅM´s/C¤ÛêС³#Cºuó^a?r$ù¨¤’Æ>4eÊ4­ü­\¹Jo€�T kÔ¨nÛዊøøñ£¥W¯¾F£é.íäxíµ©zCE tèXCše»´©iE¼Ë�4z½ýö<Ù°a£vÚK­ãû×__~yI-æöˆtâU6…³œÖ€¬pFG¯ý+ò²ëìï³þn'9sæHÄb;_vYv ÅÚÑb-§MѬóûЈª“+ÖÐù‚ÎtÌç‹i7Ž=yøðaÙ¼ù}\­Zµ˜-k¸ëå8ß<xHÂ…ò|îÜw´¡tÏž=¶ ÌN×›~—±˜×Üz\¾ñÆ›zó"øšÂº_ ³É±cÇ#w±±¯@åÊ•Sl3ëñî¹6–"]ß~]§…ãÒKÝ3.`#¸™g¬Ëç×ö?Öc¢\¿„#Û$Ò}Ùµ Úsv"Ö©ÃÕ¼y3™9ó íP¿òÊ+uê'‰Tö"ÚëkS4çËàÏ$ºHëÑñ,sýl/‹Åõ‡*U*{òY´hIL,N:ÜÔx1bÄ0)[66Ɖ"šcÞzŽUö`ÿC†äüÉõ{buÍ•Èez¢¶Qr ° ¢„‚ÈÜNžÐF ‘žðŠ+òéü̘'}Ù²å9#ipÆ?ÿœXÀ( W˜ÐXŠ™H×_½V0¼DÓ'k…=š€;Ö´¡^Ò§>p"ÖNŠlÙ5ª`îL¤•^¶l…ïlß¾CGŸ¢¹tér½a¤)æÄ îÁq6mÚ«F§É&ùðÃ5²eËçš9_~¹Uo3f¼¡éêS+-f´âY`^ç¡CŸŒ,@e8þürõÕWÇøUR¨P=Î;vì"©)5+éæöˆ×2DZ6…³œ±,ÿ¬mÿ 5 Êëgüàe˜sîºqKSí×úO”F²ÚµkjG:~3æoР¾¾¾bÅÊÀvÃgb-ÖAA»ví–®]Ÿ t2æ³.X°€äËw…(pÜzë­Ò»wÛF_?–!Ö"=ÎìFšûŽ—Õ«?Дπ}ÄÜ÷íö‹ÈϵÿH"òó:Í+/iòOœHúŒu_ôsûûÍïõ˜V:q›œ<:¤Ûr'Z: Oª ýé[–S¼®øq}íçù2­ˆ¤¯ã;^íeç´e˜A0 pýìêÕ+R”cÆŒ—·Þš£·mÛ~NXD{Ì[³¦DÓN—×\¡œ¯õ{""rÆ� "J(/½ôr ²X±byè¡Ö:÷\p£�t£‘3gN.[ö1b¸¤¦÷ß_®@ E§Néü³ÁÞ¸ÈNmÖhL] ÒTšòä‰läŒSc…u4•uĈ“´0/!öKÓë¯O•n¸^¢uÞ²es½a=~ýõ7šJ‘ð¿ürP>øà#£’<Y:w~<ÅߢòxÏ=¥õ¿ÿþ»|ñÅ—ÚɆ}©{ö|Öø®YÉ–;­ˆW€Žfå£P‘v¸\¹²)æíµ•¹r…yï‘*9u–#—NKã¥\±ÿûø”Má,'Ž1Sîܱ9Feÿ²–Ç^Öu´P8b±ûí7-Ý�­ÿ+gγ£}ýXÿæ÷aþct^§v‹Ûn»UË4D£aÞ °X¶,©‘¾páÂ1­îú8x0iÛ„{Œ=÷Ü�m8ÆvoÕª…Ô«WG.¿<ôÈ5S¢”n¬çæ®];I“&H¤‚÷ 3ÀÂì¼)T¨f¸J¹ IÛ3K–‹eÕª’Öù}æÅÁƒ¿ºî›ejvÐåÈqvùüÜþ~óc=¦…c0X"mœ·Ñ1f½VqâvÎN¤:u<$R]Ø‹h¯¯!Úóe¢ñTáÖ£ãu|Ç«½ì\óá‡Ûeñ ¥M›V²dÉÍ5kÖ[R¿~Ý4}¸‰ö˜n§CЧvºx\s¥F™J¢·QrñÉFDäÑúõëõøƒÔF|»HO DüF#Äk$­ó7cjŠqãFIñâÅl;¢ýÍ~@J<̽Ÿ~úYÈÏ›ŸÁï¹òÊäs–^tQÒÜ—véÖ­zÏiYÌy<·lÙâö]Ž‘‰®P¡‚Ç[·n?¡‚Œã©E‹æ2sæô@ÅwÙ²ežþþ²Ë.ÓŠÝ A¤}ûGô5Œäùè£5’Å« À¨'säæi­Y³FŠÊ1 -qj¸öÚBÇŸ}ö®ŸEƒd¬ÖÕµ×&íûæ17v£yý,›üZÎO>ùÄòw×J,$Êþ…õoŽôÂ4WnÐiiy‹íŒ9¥±=Ý`=› ÈŸìõh×ÿu×%ƒ8¾-È—‘ì~03 [¦AçåÎ;õµ:ub›½"œõ9žˆèà÷ M{÷îÕÇ 6GmçØpìtí•(e§Œ6ĨV@ ñh™û¶ ‚.±o˜ßë´_˜çÚ?ÿüKS§u±¼NsªLýøãO1ªÔä÷ö÷“ë1-ƒÁi›˜ç²;v†íë¶&R:ü¼ÉœÙ[]m‘ŠöúÚóe¼dΜ9ðØ:…P0§¶7^êÑñ:¾ãÕ^v.A0õoÌÒÇY³fÑ€°pajT�‚'N|YÎE~óùòå <u-ÿÍ7{õÑN<®¹âÕ†ŽDo?""¢ä`AD ?ÿÕŽ©,‘Ñ­!ÍK Ìûî»OïQ½jÕ®Ÿ]±â}ùßÿ¶xJ# ó7ãÂÞ:Ï{0̘ÚиP±bE}lNá£×®Mj�(S¦tŠ4‹æ¨F·Fw¬óõë7ؾ‡JMÉ’IÓS|úéÿÉþýÎót®]».YŠÃD…ÑŸ˜ûæÍ{ϵ3 ëK–,ÓŽ/«£Gê>=zô8ǹlÙ²F WÌÐÐú曳dîÜyâäî»ï <Æ(Ž´Èï2À)E¤µ1Ó-ijª`$È5×$uÈÌŸ¿ÀµñõwÞ•êÕkɳÏöM±ßE«J•*z}ó½:Áû 6–Ö­ÛÇÈÙÏùY6ù±œh™3'é¼²wÝu§ÄB¢ì_H¯u ÈtƒrÄ ö³Hϧ±ÚÎsæ¼íøe—/OyÒ ¼çÇú¯T©b {Ê^7}ûö“ ËÈ‘c"êÈòšÊ¶zõªºLø8®Y“´ü8ïbm?8-K8ëÃú~ÕªUÄ«¿þ:xlí†NE§ÆËD);Ý p·|ùòúÇ‚ÛH7”iï¾ûž­8m¤K7÷‹uëÖûÅZ}ŒãßiýWªT)p]>{öqƒó,ö·H:…¬×þ±LÙìÇuZ¸Þ}w¾ëÿ1×+ÖaM~o?ù±ý:ãµï@"m“òåËé=ÎÇÖë©`»wï‘Ï?ÿÂñýDªSǃŸ×!fÆ™¯¾ÚèL †ë)/YFœD{}íÇù2^p½mr äµf2M=:^Ç·íeç 0H~ÿýˆ>oÖ¬i²`œp4n|¿äË—W#ƒ—[}'­ò㘿ãŽÛ5óÌŸ¿Ðõ¿`Á"Ç÷âqͯ6„p$zû%Ç� "J(W]•”Þ/Hy ¤~ý8F9*Lfã¼SÅsfbÎ:1b¤ã…4*àèÐèС£Î1 æoÆ(L§ï©S§ë:qbÍxñDZ­Ð¤IãÀÿCú@kš<F6öìÙGGŒa[4mÚ$ÅgPñ236EºN4Ú>R§¢pR¿~=½ÇßöíÛ_E‚}ÿý÷2jÔI+Z´h¦÷_ýµ 2̶ +ø½h,¨W¯¡6Ì™ÐPƒ}†Ya×h³wï>£4iŸõ;~ü‹Æm‚¼øâDM…jç½÷[G¦%~•H{8ìÖµ5eõ|hû?>ùäSyýõ™âÆ<æþüóˆÞwÓ²åƒz2¿Õ®ñbçίä•W^5Êå£ÚÐnmÄôCùòeëêÕW§è: †2aذÚÐŒÑôÁëÛ¯²Ém]z]ÎÁƒ‡Êwß}§Ï›5kâiþÙHøµù¡Q£†ÚЋí‚òé×_SŽÈÄÊI“^‘høµ­V®\%‹-Nñ:Ê_fCWãÆ “½ïÇúÇÈ©ªU“‚6múX¦M{Ýös .2Ê£5:² £]ÃÙ§B•SvËd0¢Ã7¨P¡œíªp„Z¯ëS«at(UªD²À—P0G¹¹þÐ8i¬‚ÔùqýžD(;CÁñ‚l_mùÌ3½mGîb;L˜0I¯¹š7oetØ¿eû]H5u ®0÷ ŒÍžÝþwåÍ{¹Ñ›ÔpmæÔ‘‹ýú™gzJ÷î=äþû›„ÝkmäŽuÊäh¯Ó…߃sŸÝ~ŠòtÛ¶¤‘Ò8>ƒÓUû¹ýýæÇzôã¼øâ³mñH·(ÛÁl溘<yŠm=çÒ~ýºôųNz^ÿþå‘G:hWjñë:äÎ;ïÐ{\×Ú]'à÷Ý´+Ñ^_ûu¾Œœ£Ìߊ »}C¯½6Íñ;¢­GÇãøö£½ì|@›¶mÛËÆ›õù7Þh¬óf)÷>š”ÉÛqìØñr®ñã˜G°Q­Zµô1®ï°¯Û}φ ]õ@<®¹bQ·ŒF"Õ(´ „ˆ(Ô¯_Çè€Ù®ÙZ¶|Èè°i é1ª½ˆpÆEzÁ‚©ë‚á‚þ¦›nÔÔŒ«W¨sR"=;*A÷Ü“4ÂÓSôïßW{¬“và·oÿ¸ÎaY²d •a\´š#q.¼ðB£1§ÄÒ*c&*]»vÓ ;î¸M+çhèCt<Ý~3*B¦wß]  Y³fMÄऔ}ì±G å º-š6żŒu¥pá´²±gÏ‘aF`ÞÒ[n¹9Å÷ A©4ј³yó'Zù­U«ºfñ@¥fÉ’åF#Èn©V­Š,[f?owéÒ¥ïõÕWƲ4×õ‡mþß'uTÁüùóu¹n¿ý¶) Ö% ×­Û G_~¹MjÖ¬®G'Ož’èH<ÌÉ UªÜ§ëބ߉õNü=*Àøû¼yóê(Œ._°àìH?3Õ¥ Û 6hœyôÑÆòÔ“[o½Yì‹/ 4ž^ýõº ¬°—/_I¹1§å¢Eó%ùUÜzë-º_a?Æ\™åÊ•Ñ-t(¡,”?H“‰u‡~ÃeË–5þÇ¥:ÚoÆ ú?òçÏïx|¯¿ùsÿnÖý”eÊܹê}7µjÕÔβ5kÖé~׸q3k#Cd°eË:‚Û#•{ö|&Å4FXX‡€}rÀ€~|_¿~}ô;Ðpҥ˓R¹r%#7K–,(µpáÙ¿?)Û ¥Í�+“_e“Ûºt[N”¹XÎùóéq ·Ýv«Ž”Š¿ö/?àXhР¾v b„O³f-t¡œÀ¾ƒóØâÅKtÙpœ…éêįílÂH4”ƒ Õ Œ�ÇèDü†wÞ™èpÃw U®•_ëÿÉ'»ê1„ò¦hpÄq„`ƒC‡ér™Ó�äÎK:wî$áUNÙ©]»¶±›´L8ûZ-‰–—e µ>ÐØøÉ'I)z±®{õê!á@g<‚8pŽÄzm×®ƒ^‹a[šçÉE‹iy‡H§ X~”±†ë¡öíÛÉ /¼$»ví’l)Õ«W—¢EoÒôô8†–-[˜ÏºuëÖqü>üæõë7ê¾aBêb7Ý»wÓuй­GŒ­MØÞ8î à¾@‡`²p×S‘"…õoP.¿öÚTÝ—ôê~Šö:-\È‚²¸NÆ~Šã�ç'¬W@<7ÁüÞþ~òc=úq ¢L2 <Lx ±ñè´vÄ!@Èo‰²M,×­Û“Ú™ŒkþŽ»ËQM뎬`žK˜‚�J§N°xÖ©§L™¬ëÝ»¯ñxaÌF»ñë:û*‚'QwÂ5꽸†À:Âuè‚I#¿ðˆ€ÃHD{}í×ù2^6¬§Ûí>hWÁ±ƒc¢¸E0ím·Ý¢íJvËm=:Ç·íeç áühÂvÇzÁ5&2xX?ÖшC£¾Ãñ€ÌQøßاÐÞX±b9WøuÌ·k×FÏϨOá¸Ãµžù=¸öÛ¼y³^â\ûã?8~O<®¹ü®[F+‘ê÷DD,ˆ(¡ ¡lëÖíšê ±ˆî·B×ã·7Þ;èz1ùØcíˆ'´QÂüt’­\¹,‘‹â ÆK½ô‚ø¸Ã…ìÀý© ý†FÀÞ½{è4pÍš5[oVF¨\¹²Žü±ƒ9!1‚èƒ>ÒÊ<F�¢Â³dÉB‰…&MÐÊé¨QcµÁ.7Öó#´•Ö­[Ú~*oýû?'O=õ´v® ¡Áll0a;b.S§� 0;VðT80:Ç •¿çŸªë&-XÀСƒe¥nÿòË“m?‡ÊopÇÖûàÁŒFÓg´¡¿Ùîw#€§S§Çt¿±*Uª¤Ñ ÕI³X =sæ¶ÿû†nÑ£ŸO1Š uæÂ%JH"ó£ Àˆ‡eË–kCBqƒk®¹ZÓZ¢“û_§N]45©Ýÿ@ãÚ€ÏI‹­—i8ÞÐ QI0kÖÌÀ¨íP9|1º ¨ÌÛÍ+‹÷!Cê>lß¾}Ç‘nw4>Z·‚Ëp vÏ=¥ŒådÛ1ìGÙj]z]N[}û>³ìà×þå—nݺj#6:KÑ5}úŒdï£#fРQOyåÇv6e̘I;‡’FÄnHP`Â/Æ N±-ýZÿèèz啉:Úæh¼4;N­®ºê*£lHOìU¨rÊ®;Pö™)•ÑÐg*R^–Åëú@çÁÈ‘Ã4ð"\ݺ=a”[ôº�Ì,�&\£ ÜGšp·£hËÎxxðÁfº ø-8.ßzË~ªœ×‡âÚaY¶lÉžý2Í�¤ ´ †€¥W_}Ù(3ŸÕõìt]‚ã©cÇÚ¨.¸µiÓZr°o!` p¾5j„ø-šë´p!àFFã°Ë/Ï#cÆŒr<üÜþ~óc=F{ –(QܸÓõkÝ7qŒu ‰²M*UºWŽï©Ù Ð9‹uœÍ©K—Žzse¯:5¦=0¡®á–.>Öü¸Á9¯sçÇeܸµcuUÜLØGpaž'#íõµ_çËxÀèôÆzDÐ2QX§CuŸ>½mò°íßG[†Xß~µ—+BeOA[‚†:txÄ—²ëÇ-‚ÊàÅ_Òkfìç ?ŽyÔù^xa¬¶KâXB>o… ñAƒúk€ŸˆsÙk.?ë–ÑJ´ú=¹c€%TXzö|Z+)¨4"8FÎdÍšEo0#k0ÿ¸Œ¾˜4i‚L:Må1— Fi jí˜Àˆ†·ßž­ýï¿¿Z;‡QI@ºX4Ü#ãEƒõ´á6–0úÑÛo¾9[£íÑŠÊ FAÔ©SKjÔ¨®©ÁÝôîÝSræÌ%ëׯ×n¬KŒФãÁ ŒTFC%æCܼùc<GãPÞ¼ùtý߃ÀÜÈN°-g̘ftâÏ’7éïF㜰­1úÑân’FæôÕù¿Ñ©‡~´À>ƒíÛºu+ý>kƒU¢CA7õë×Õ¹·‘å—_~Ö¬9sæÔ‘7uêÔvÌP‚ÑS§N–¥K—ɪU«e×®ÝÚÀƒ‘3Ø>ˆŠÇ3¥o0T0K•*eótDF4¼bÛ ’sªct€]Çñ¾}û1z-ÑE[ ã :Ž^yÓ¦Mú·æÂüŸfg!’gÏ~CotÞ¢�£Õ°þѸݴé!‰1r×ÈŽ€e¼ðÂL:"¤`ÁžÞûܳÏö”ºukë(mÛvèvÇ6F§.]1B Ùqì Æ„ŽŠHa{Ì™3Kø12¿û.ö=4£,4ç wmÙäe]Ú-'Åpì.|½vúÑí…û—_°¿ôèÑ]¸Ð ½sç.-×Q#H¡mÛ‡%þk¢°�?ÎA&l·iÓ^Ó´ÑëÖ­Ósæƈ¦:uêèzt ”ñkýã\=yòD=×cdÊRœËQ! ¾ å~$#ï¼”SÁp R­Zµ@êêZµjxʈãײحltî#£Fš!Òm”éø~\7¬Xñ¾‰áZÅ‹7®Z8ž#­¢-;ãÇKéÒ¥õ÷b$ôÏ?ÿ¤A”ØÏ‘ýçu·¡ÂÌý ÆÈ\/AdæöÄ´"(7÷îݯóÛãû¼ƒÑÔ8f͹¶#ïË/¿Üè~GSI£w›f.Ñ^§… í£GÔcÙÝp¾É”)£±®®2Ž{õ|ƒ:Ž¿¶¿ßüXу(×FŒ®©¶Q  Ç:?|øw‰¥DÙ&è¬Å¨ýٳߖO?ýÌ(‹2ÖéƵLa££¸©žg½LÇ:u›6­´NóÃß×mt€Ajòã:u.¬ktÂcÿG™…kÔÕåc´Íõµ_çËxÀñ‚ d5X´h‰fù÷ßÿôÜ‚Ì( B•—ÑÖ£!–Ç·_íeç*d€Á~]°`­‹U©R9ÅôYÑÂñ]¦Li½îGÆÔyb—ü:æ‘êµ×^ÖLRK–,ÓL9À3gmkjÛö!=ׇ¯k.?ë–ÑJ¤ú=¹óÚJ–Îã{é<ܧsxnÞÒ[îÍ[†3¯eºá½l¸?qâß”Ã͈ˆˆÎÀœ½H+ˆ†åË—Å2^¼øâDm0BêÞÔnü¤øxâ‰n:¿-¦ƒ˜1cª%:Œ Â4h(›3çM¡” `Ú´×µ<ç·c’.ŸˆRš:uz`„æâÅó=u@¥5uë6ÐpȃlDDt~È”)ciãî”q;zæþdÐíô™ûS–ÛiË}ðMž»Ý?æöžŠï""¢À(ÈPöìùFïóåKŒ6ç*ŒJ…"EŠ0¸â<bf°@ªm"Jû0JÊL!~÷Ýw2¸‚ˆˆˆˆˆ<A&±Ã‡»~æÈ‘#š±ØNGDDi,ˆˆ(ÍÚ¿ÿ€tíú¤4jÔÄ5}-ÒbîG(]:uæ@?_ õ#”,ÉŽöóæ8F:nàv':7 ¸éh¡~ýúBDDDDD ¦ÿmÖ¬¥<üð#òÝwßÙ~ÁÜcÆŒÓ{`;¥EQõßÿÉ_l•'NH÷î=¤B…rR¶lYi‹×Ð9´lÙ ùüó/ôóyòä–¸_(vÌ� Ì_I燾Ն‘Ì™3Ëm·Ý*D”6­]»Nç*ÿöÛouŠ(X° ”/_VˆˆˆˆˆˆB9tèP ]¨E‹‡¤fÍr×]wHöìÙ娱c²wï>yï½òÃ?ègJ•*!wß}—¥5 ° "¢4ëÚk Éøñc¤OŸ~LñÁéÍNþüùeäÈaœ¶"†P‘>vì¹ä’¬R´èMBç‡}û’OÐh’1cF!¢´iĈQòË/ÏQ–ðœ¤OϤ‡DDDDDZ­Z5åôéÓ2zô89~ü¸Ì;OovÊ”)-ö""¢´ˆDD”¦Ý|sQ™={¦,]ºLÖ¬Y+»wï‘#GŽJºté$GŽìR¤HaÍjQµjeÉ!ƒPìäÌ™S6mZ't~©\¹’Þˆ(í2§ù¹à‚ 4°¢xñbÒ®ÝÃrÕUW ‘Wµk×Ò¬¦óç/”?þD3ZüñÇŸrÑEíF¹4óe•*÷1s¥ié|ø\:›Çn÷éž›·ô–{ó–áÌk‚nx/îOœøwƒQBÉ”)ciãî”q;zæþdÐíô™ûS–ÛiË}ðMž»Ý?æöžb¾W"""""""""""""""¢`ADDDDDDDDDDDDDDD,ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆB`€Q ° """"""""""""""" DDDDDDDDDDDDDDDD!0À‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(XQÜ”.]NJ–,#ÆJ¦N®Û ·C‡IZÇ}0í¨_¿‘n«§Ÿî!DDDDDDDDDDD‰€DtÞiÑâ!í´{ä‘BDDDDDDDDDDDDDä,ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆB`€Q ° """"""""""""""" á!"ŠÀ—_n•wÞyW¶oß)?ÿü³¤OŸ^®¹æ)Uª„4lX_råÊeûw¥K—“S§NI½zu¥GîŽßÿÈ#ä‹/¾”‚ ʬY3l?³k×ncÞ“Ï>û?ùõ×_õ5üßâÅ‹I³fÈ•W^øìÖ­Û¤mÛG“ý=¾¿dÉ2ç+W.•K.¹DBýÖ‹/Î,ùò]!*”•:ujË¥—^*v>ÿü yôÑÇôñ /Œ•»îºS,X(ï¾»@öîÝ+™3_d¬¯’òøã$wîÜú¹ãÇË[o½-ï¿¿Z¾ýö[¹ðÂLrà 7Èý÷7”òåËI´þøãY¼x‰~ÿ?ü GŽ•9²KÑ¢7IõêÕ¤\¹²!¿ãÇ”yóÞ“Í›?–Ÿ~úQNŸ>-yóæ“;î¸ÝXκø½œüñ§äÉ“G ¾^êׯ§ëÒI§N]ä“O>Óå™8ñEÙ¸q“±Í–;¿’£GIŸ>½¤fÍŽC‡Ûn‘~×¾}ûŒíô·dÏ~™\}õÕrï½åu?È”)“ëw¬Y³V–-[®ûâo¿ý.]t¡±^e¬ó2Ò¸q#Éš5«DêĉúÝ|ð¡ìÞ½G~ÿýˆ±/gÕíR¢D1ÝræÌ)~ø÷ßõù–,]º\÷ì£W\q¥Üwß½R·n¿Ã¯e´ å¿ÿþ“§Ÿî!6lÒç;væÍLñ¹mÛ¶Çêýÿ¿üò‹ñ»³È­·Þ"­Zµ”o,"&L’3fê~±fÍêd;uêtyùåÉúxÓ¦uÆ>µ_¦O]>ýô3£,;$5jT3öÓÞÉþæäÉ“òÑGkeáÂ…Æçè>‰c÷ꫯ2>_ÃXÿ%cÆŒ¶¿Éúÿ/žï¸~?ùäSãøéª‡ $+VHö¾Y~?úh;yè¡V²eËçºvìØ)‡ÿ¦Ës÷Ýw˃65ÊîâëyåÊU²hÑb9pà€–EX.”AmÚ´r,W‰ˆˆˆˆˆˆˆˆˆˆR,ˆ(,è\>|¤vŠÛ¹s§ÞfÏž#Ï<Ó]ªU«"±‚ÎÂéÓghgŸ‚pC CÿþÏ¥è ‡Óoýû￵3qÛ¶mòúë3eÀ€~(á£}ú<'«V}x-©£y…Ñá¾Ýøž)ÚÁعóºü¦þùG;]qkÙ²¹<öX{‰Jzôè¥ËnõË/ÛGF‡÷GR¬Ø]2hÐ�ÇÎMth5VÕž={ô6oÞ;òÈ#m¥uë–â÷ršÛAj@ôÅ_ìú]èü3f¼DÀÆ —?ÿü+ÙëIëí ø¼÷ÞB7n”mÇ5ö—ž={ËÆ›“½ŽýË<fÞ{o¾Œ?V È/áÚ³çkc}õ–ï¾û.ÙëâÀmÇŽºÝFŒ.·Ýv«Dãĉuýßÿ¶^Ãïþ‹ÿƒà Q£FÈõ×_'±ZÖX–A(Oúöí®hÛ¶MŠà !xbæÌ7’½~øð ùðÃ5²vízc,^aïÚµ›üõ×_ŽŸ9xð <ýt/]?V?ýô³ÞP„²häÈaÉËbë`Ú´×eÒ¤W$xy°]V®|_† (÷ÜSÚöï>,Ý»÷Ô2Ô ;8f׬Yc”ñ/ Q¢a€…¥W¯gµòåË' ÖÓQãÈ0ðÿ÷?Y¾|…fa0`Žè.Sæñ2`D6 3±yó¦šå£[·nÕŽ?tøöï?Ðèè½V³ \wݵ2cÆ4ý›-Zë}æÌ™å•W&¾7K–,âõ·¢ƒyéÒerìØÒ­ÛÓF§òó®Aóç/ÐÑçÕ«WÕì è”þè£5Ú1ŠÎæ)S¦Ë–-[4€ L™ÒºÞ2dÈ`¼ö…ŽöG@:Pñ?™!\Èšðøãµs#ý«V­,wß}—fìÀÿ_°`±ffÀò<õÔ3FÇéýÿVÈ1nÜ‹ú Ô—Â…oÐÏíÚµK;Æ‘!®è,Ž$Äi9³e˦ˉ@†ýû÷k00¡Ÿ³ƒÏ£#Û®Q£úÆ>pv çÏï=Ã2V<÷\Ý·Ìå¹çž{4{þÿŠ+tApÉÀƒeìØÑ)¾cĈQàŠ;ï¼ÃØhÖ£Gʺuäí·çj f̘ꘅÀ2'tìØY³@˜ß üfìcü©¼ûî{º]ä1gά¨2eŒ7^÷ý¢E‹JÍšÕ4«2) A@ø:<.o¾9CߋŲƪ ¾1hÐY½úC}ŽÀ XÃþmWàû±=‹)¢µÁ]øß^Ó~ýþßm·Ý"]tQ²ß}ìØ1i×®½/Àí·ß¦û!2t`ݯ^ý®;dÅiÓ¦±lÓqbåÿûŸ–tB9pÕUWeî£l^*sçÎÓÀ0¬lÃà`-Û;v•o¾ùFŸ*THêÖ­%W\q…~ÇÚµëdÍšuÒ§O?ý""""""""""¢DÂ� "ò #“ÍŽÍ{î)%Æ IÖŒ´öHÍ)ÐÙ9|ø)Q¢xXÆ^¼õÖ\½Ï•+§L™òJ²¼[n¹ÙøŸ%䡇ÚjG2F ›:-ÍQõ×_½ìÞ½[Ÿ;´÷ò[ëׯ+;wÕß:xðP™5k¦í#€€�aXGt7jÔP³+`ĶÙaÛ¹óãÒ¬YÓÀgj×®%*”“§Ÿî©ÀÈtn€2eôï?Hצ+Àr+vw²Ï4iò€`ÚL½€Žn,Ÿ SLœ˜4ZÚ“&½(—_~yàýŠ+ßÑX¼‹|ýõׯïySÊ–-£ÛÃÏå|àÆåDgö›oβ¾üUÿÿ¸q£Cfºp‚mƒàŠ .¸@ÆŽ¥ÁV•+W2:å‡êþ²iÓÇ ƒ€:DZ¬€©+ÝÁ‚ï»öÚ‚Æþ3LGï#›Ûô'Á–,Y¦ÁD`NÛ`…mpÓM7j°BÞ•NÏ)dhÀþ‰ýÔ Sƒ¼ñÆ›ò /éñ0rähyþùa¾/k,Ë dÅÀ2ö}L  Sš`ßwMœøB²@ìuëÖ6ŽƒN$àÅŸþ!Ó¦½ê8µÎèÑcÁíÛ?’"; ÖÊ,?Öï!ÃŒre”Ä‚+‚÷ƒ|ùòJ‘"…uê#ƒaYÉÂZŽ�2™Á8C&ë1Q«VMÍìƒý�eQ"Iïñslá&"™1#©cñ²Ë.Õi1ì:-o¼±ˆŽúFÇv:µu$¹ß~øáûÀÿ²›Ê¢P¡‚òê«/Ëòå‹#žªÂËoEgp×®õñ¯¿Ò‘óNÐñj—.¿M›³ÌÁÝ´i“ŸAÇ3FyÃîÝ_K¸9Üväá‡J´�èàÄ” Èò€¬X+L¹€�0à¹dÁ¦Ë.»L†¨-”€Œ±XÎÞ½{–ïÍ7g§˜&ƪW¯W�2R #ÀÈ‘ÃSW˜êÕ«x¼}ûÎdï¡cÜ\¾âÅ‹ÙfÛ@ ö×÷ß_Vp`ÿ^°àÝGƒLÈv€l-°cÇW 'ÙÀƒ6Ó @2Vø½¬±*ƒ™A €þnݺÚ~nΜ¹éqúõë“"K hëñÇ;ˆW6q ®ÀÔ Ë—¯ÔÇ%Js,ÏdaN‡‚l){÷î“XÊ–íiß¾í{XF$¦Ï±Â±€à-È›÷réÙóÛc¿%–SLÙðá5À‚ˆÎs¹©�£Õƒ§Ó°B6„É“'I»vëÔ~Ë;©SS8u$¢“Ó)›D(áüÖ5ªË¥—&ýÆ+ÞwüœSÖ ˆdÉ’�P¤È ’.]:ÛÏ]sÍUzÿûï¿I¸V®Lê Egôý÷7tü²|Ìœ9Íè8î+¥K— ¼ŽNÑÕ«WëctZ»e¥@G1¦8L©Bü^NtÞ>ð@#}ŒLÁ¸&d8)X°€D ÓË”,YÂñ}dÛ0o,ƒ¹M—/_þüóOÛï¸ùæ¢gzÁtUªÜçø>²�dÌxíò…«^½ÚŽS²@ãÆ÷þ'¦ÀñsYcU½üòä@0–­W¯glCk×®ÕÇ¡Žƒš5kxì± $2­Zµ: cÍlcÇú¾[°—0M‰u¿·Âï6 xfµmÛv9tè°>Æ6túÀÔ#DDDDDDDDDDD‰†S„‘'{öœÍœà4’?^й>lØ eˇt R¥J~·¦È¼‰p~+:›ï¼óÄL{oç’Kœ;yÍÎ\·ÎFsD¸9z>{ö$-FöG’Í£è=¦½dX@‡1²Q ãÅ÷ßÿà8 K4ËY¬X±ÀcLIb×I}ñÅYÄoüñ‡±÷Êwß}¯p¿iÓ¦Àûÿý÷_²ÏgÏž]³— øfçÎÒ¨ÑR©R%ÍF€zdýðÖùþýôöË/?Ë?ü¤Hæö ^¾pÝzë­®ï£ãÝ´ÿ·âç²Æ¢ š1c¦L:]+v—<÷\Ç�’_ýU~ÿýˆ>uàx½ùæ›äã?•PÜöuó˜@V˜PSá8Cf,£[Yä‡ìÙs¸¾å8p@äï¿ÿIöº Ö}ÅNÑ¢7iЦ """""""""""J‰`Á©Iˆį¿ <¾üò<’šˆS¦LÓNÚ•+Wé 1�íÈ,á62ÜM¸¿5Ož¤é2ðñ÷ßk&ˆDrèPÒ(òH·›u:Òú‡‚,&gx °g9sçÎ%g—ï°ÄÒ¾}ûåí·çɆ åÇLñ¾SÖ¦A@f죿ýö»Ì;OoP @ÍŽQ¿~]ÉŸÿ‰Ä‘#GŒï{GƒZöìÙc;e –Ë­9²»¾é=‘åÏ?ÿ2¶ç¯âç²ú]™S‚˜Ð™ï–Ã̼�á‘2×!ܰÎþÏ<Z6<xHb)Ô>ïgLÖcض~÷Áƒ¿ W:F€,ˆ(l‘v®ù©uë–R£F5Y¶l…|üñ'²}ûŽÁ�K—.×Û½÷–—þýŸóÔ1éÄËoµ~ÆNl¿™Ë¯ífí¤g}„³œ‘þp-^¼D†}>MË–?~¹úê+åÊ+¯’B… h֔޻8~‚ì/-Z4—åËWê”&»wïÖl$ûöíÓÛœ9oË£¶“V­ZH8víÚ-]»>™¬ã:OžÜ:5J¾|WH×hÖ‰Þ½ûÈ?þ$Ñò’AåÔ)ûíèç²úµ/c?2ƒ<6lØ$Ó§ÏвŎ5“‚[ ÆÙÏd¿xý½‰P6{e\,’Œ=DDDDDDDDDDD±Ä� "ò$W®³£±úég£ƒùj‰%/oyòä‘–-›ë Ÿÿúëotºdøå—ƒ:mG¾|“¥sçÇ%áþVLo�Y³fÑÎôD“+W.ùá‡ä矑H +ˆÉËwüüóÏÇØFÞÿ÷åÄö5åÎSbS€˜Á—^šÍØ:J¹reå’K.Iö9»¬vn¸áz½2ìØ±SÖ¬Y'ï¼ó®üóÏ?2qâËríµ…¤L™{ī瞠 èðGpF½zuäòËCgWˆ²8¸mÓcÇŽÉñãÇõqŽ9}]ÖX”Aô“Ûn»EZ·~XÛ+¯¼*… ß ¥J•LñÙœ9ÏN‹aÍfáä÷ß“håÌ™”å™O­'T°ØÁƒIÇN¤ÇD¬¬ëÇù5×8gmA@Ë‘#G…ˆˆˆˆˆˆˆˆˆˆ(‘„‚NíAtŽAǯ #ðÝ “Î)@"sæ¤é3즰Bçv8Ði‹©(%`æÌ鎼eË–I¸Âù­øÿ÷ÿÓÇ… ’DtíµõÞÌòáÆ:Jß„©²eK *øôÓÏ$ó3è ¾òÊ+Ä«p–ó“O>±üݵ ÈŒbf®èÑãi©Y³FŠà ÀÔ0áÂ42wÜq»téÒQ^|q\àõeË–{þ£ìÝ»W7lØ@3`8, ðÁÿ÷îÇ矞})L~,«_e©jÕÊrß}uÿ2d\pÁú7Ï=×_—7>‡iD`Ë–-®ß¬*Û¶m—h]w]ÒoÆïÙ²ås×ÏîÙóµb@pYd–»`ò'¦ô‰%L‰c2ËM'_~¹•,ˆˆˆˆˆˆˆˆˆˆ(1‰YˆU€…‰D猼7GÏŸ¿Àµ#ò«W¯%Ï>ÛWGš[™£Ú¿újW ó:Fö[3X=zTV­ú@Fç„‘-[6 ¶�·Îo§©%Âù­K–,•ß?¢«T¹OQ•*UôÁsç¾ãø9¼ß°aciݺ­Ì›wös^©X±¢>F§'nN¾ýö[Y»v½>.S¦´\|ñÅâ÷rb¿™3gž>Α#»Üu× ÖíníöÑGkßCv‹ ʸq/:~ææ›‹Ê…^¨Ã „øë¯ã–ås΀ŽìH‚@ì¼ûîÇãfÏ~Kï1U²}˜üXV¿Ê SæÌg÷ÍÛn»Uºví¤=&O?ÝK³ŒX!`¨dÉâú$û÷'k×®K6J¤*Uª˜ŽäÍ7g¹~Öú~ÕªU’½gÍ&²mÛ6ÇïX½ú‰¥›nºQ§…PÛðí·ç Qb£ë� ":‡´lù Þc”tß¾ýl³ìÜù•¦ÙGj÷Ï?ÿB;À­î¼ó½G�Åë¯ÏLñ÷ 2d¸8Á(íÞ½ûìoë” vA{÷î“/¾H °Ë*‘%KRÇ*¦²p ²ðò[2vìx}œ;w®š‰¢|ù²é^}uŠ|òɧ)>ƒ‘ûÆÐí²sçÎë¥I“Æé 0ÕƒuÓï¿ÿ.={öÑQçènÚ´IŠÏ˜ßñçŸD¼œƒ•ï¾ûNŸ7kÖ$Ðí7ë|ð¡íg°Œvû±iñ⥺?Ïš5[.\dû™%K–é!píµ×‰WW\‘/ðÛäa—±áÇ’‡ˆ_°ÞGŒm{Ü`›á˜‡ Ê%›Jįeõ£ rÒ¨QC©Q£š>Þ³gîgÁêׯ§÷ØÇûöí¯åU°ï¿ÿ^F#~@Ö dÚ€M›>–iÓ^·ýÜ{ïÍ—¥K“²Ÿ”*UB ,ìýÛo¿Uƒ^àµ×¦ÊáÃ)§8Áþ¹qãf‰%,Cƒõõ1P d›¥âÝwßÓ)žÜ`Ý÷ï?Py¤ƒ¬[·^ˆˆˆˆˆˆˆˆˆˆˆâáI|Ì‚A” jÕª)kÖ¬5n댭 Ò¸q3©W¯ŽŽ*G‡ù–-_Èòå+´Óéö{ö|&СnÂçÑ‘‡Vt‚îÞ½[Ê–-«#ø¿ùæí¿ÇHqt(»ýöÛä–[nÖ, èPD§lÍšÕ%oÞ¼:òý‹/¾4¾ãìÈèV­Z¤øŽ[o½EÓí#˜`èÐç¥\¹2Æòÿ¥ÓdÈ!äoýë¯?åÿû\§sÀh~t÷êÕÃvúˆD€mЯ_ißþq9qâ„téò¤T®\IŠ»[²dÉ¢ .‘ýû÷ëçcv$› È/=ö¨Œû‚NŸÐ´i c}Ô•Â…oÐßitŠbô?´lÙ\·S°+®¸B·ó¦M›õ·Bƒ]Ê”¹G;^Ý–3kÖ¬ºœóç/’’2 ë@³fM%VŠ/&ùòåÓ,ØW1ÅöÕË.»T:,6lÐl*ùóçL û ‚°^°¯!CCéҥ߱~ýzýÈœ9³±Ÿ5¯ï8>þøSi×®ƒÔ©SS—Ù<-Z¤Ç"‚ üȨФÉš¥Ó¸Ôª•tÜ:tHV¬x?0…¦“yòÉ®1YV?Ê 7Ï<ÓÝØ—¿‘]»vÉÊ•«äÆ‹$ÛÇJ—.%ÕªUÑ}÷«¯¾2Žƒæz¬\wݵFYpRƒ®æÏŸ¯ÇʪPÓzxu‰ïAY7iÒ+Æ~·Q³å øëÁ?Ÿ|’4-ö+”EÁìR¶ì=ºÞ°ßµjÕF§jÉŸÿcýÿ¡7ð^õêU±Ò¼y3ÝçQöøácŸjnlÃÚrå•WÊ‘#GŒ×>Ò@œ~üñç@¹lÊ”éeíÝ»¯ñxaXsˆˆˆˆˆˆˆˆˆˆ(!%|l@Z° ¢2xð@>|¤ÑºX;ž‘E":Ї (¥J•Lñ:,;w~\§LÀ(xŒR¶ŽTÆß>ÿüP ´°ƒŽËÁƒH·nÏh:í:13fÌ(:=&÷Þ[>Å{ÈÆ€àXàÿ˜ÿëšk®Öå ç·fÍšEìoû[IÑ¢7É„ ã¥G^Úy½|ùJ½»çžRƶ4±Bç::«G«,vS`û<òH[iݺ¥írÔ¯_Gÿþر?¤_¿úÚ¬Y3#î½.'¶kß¾ÏÆ,{``_ìÔ©‹NƒwܬåbÀ€ç¤E‹Ö¶ß‘+W.cjtÜ÷Ô tÛu`#¨�û[Þ¼—K8ºu{Böí;`tìïЩ‚§@‡3öOL©ãG€Ž©½{¿‘Í›?‘1cv§xÿòËó¯ÒÎÿX-k´ez >ØØÖ /¾8Qn¸á¹û1d`dî°B`ö”k~X pë•W&ûPoÙ¾}»£à¬`Á‚2rä0Ûu=z<­ëJþªÁV8ö[´hó� ¬ŸñãGK÷î=dëÖm:­Ð /¼”ì38®p|?ùäӎ߃Àjì²™ùD.<ûlO©[·¶¼óλF'é.ÝW]u•vÒ5jÔ@;– £¾páÂòÖ[s´ƒ ÏaŒ-Z4ÓQíN€ÏN:Ùè\&«V­–]»vëwdÎ|‘ÑAO¿§aÃzš-ÁNŽ9ŒNÑ—eòä)²iÓ&íÌE&…Ÿ~ú9Y€…Ýoýå—_ôÿäËw…Nƒ€÷.½ôRI ¹cΜYÚ1äÈõ†Qïl¨Q£º”/_Îõ;ÞÖóæ½gt²ltpÿ 2XïÈ|qÿý 4›€ŒšÇ”�ÈDÿá…™´ƒµ`Á®Ë‰ #Øî… _¯™3¬Þ±týõ×ÉìÙoÈ›oÎÖŒ èÐGöì[•*Ý+M›>²c÷Ž;n—¹sß2nïhötpÿõ×qÍô€uU¦LiÍ‚€l"áBfÉ“'êÈ"±oß>ýî\¹rÇAqiݺ…ãq Œ=R³X,Y²\·M¦LåÊ+¯’ûî»W·ÓïðkYý(ƒÜ ü4h€fPÁ¶~öÙ¾2mÚ”@ðKR¦•¾:%~ËW_íÒ@ [aßmݺ•–#¡¦¸‚&°îñ™>öíÛ¯ÿ3{öË40¬FšëÆ Ê½iÓ^•Y³Þ’Õ«?ÔL4ØvÌÀvCVŒo¿ýNâ!{öì2iÒ XBF#d©@ÐUΜ9rµ¼´iÓ*dF |eÿ?|/mÛ¶I3å0¥mé|ølºÓ…x|KosŸÁro½áµl¸?qâß BDDD”�ú÷¨Ù .½4›,_¾DˆˆˆˆˆˆˆˆˆˆˆÎg™2e,mÜ2nGÏÜŸ º²ÜŸ¶¹·»IˆÇâ±xx=™ØåV¯„Ÿ‹…ˆˆˆÎ ÈdÊž=ßè=²Ýѹѧ®XÅÔþý¤k×'¥Q£&²nÝzÇÏaêÝ»wëãÒ¥K ."""" é¿ÿþ“/¾Ø*'NœîÝ{H… å¤lÙ²’7ïåúÚ?þ(Ë–­Ï?ÿB?Ÿ'Onyàû…ˆˆˆˆˆˆˆˆˆˆˆÎ é|ølºÓ…x|KosŸáÌ=nœyn¾v îOœøw£ÅÐÖ­Û¤OŸ~Lá&þü2rä0¹úê«…ˆˆˆˆˆˆˆˆˆˆè|—)SÆRÆÝ)ãvìÌýÉ3·ÿÎ<7_Ãýi›{»›„x,!‹‡×“‰W€…yïG€EI`‘M`ADDDqòÏ?ÿÈÒ¥ËdÍšµ²{÷9r䨤K—NräÈ.EŠÖ¬U«V– 2% °8*É,Ì Šh,‚+`! ° """"""""""""""JSΕ�‹ôžŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈAÜcR#À‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(Mñ;À‚Ù)ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(øÃp$ŽHƒ:ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ[$}û§%beŠÓAj%Q\ØÅ $Dü@¼,N{|Íú-ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÎm¡âÂ7ð]jg°ðúcOIò(•àˆa%&kß¾ÝíT˜ß“*ü°8åûáþ/§à Y%»¾}»i@üú?‘¾R8áþ³Ó1~?øs %ŒtéÒ™}ùáÆ�Äêýˆ?Ï)Bb•aB¿÷ôéSG„ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÆ©S§Í¾ü˜Æ ÄC<,¬"ù§]^?}òä韅ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÆÉ“'Ñ—ï6ˆŸñ1‹�‹HÈi·àÏžÂý¿ÿþó­QÂ8Ó—èÛç¾·[$"ý;G©‘Áâ´ÍóÓ.ï ^éx.ÇŽÛ#DDDDDDDDDDDDDDD”0Ž=öõ™‡¶}ý.‚ãN»¼©5EˆÉ|ß³mÛ¶ÝBDDDDDDDDDDDDDDD cûö»$)6à¤D/îAV~Xœñz4?Ò)%YTË!Cv%ŒçŸjöåÛMbŠf*óï­÷NïG%„'Ç÷ì[ z=ý™ÇÖ{Ü2œyž!è–Ÿ]püø?/dȾ„Qª:yòÔæÌ™/ìd<üϸý)IY,¬73³Å)9€a½I”a Ä~l½w{ÌsðE¸,b™nÃËœ)Á+ʼacÈ?|÷‘Qª³ôá£Oß.{…—XÇ)xæ×!á.Äé0Ÿ‡‚qjÒ¤I ° """"""""""""""J�'N\#I™(þ z+Ö11 ÊwŠ·¿Içð<xº¯S…˜·°¦ ùã?eÊ”©ŠQªøçŸV^rIÖÞâ>=È)9;Eˆuz§›¸<±Ÿ*Äîy¨×mù™ÁÂë…J÷NJëçÿÅýúõëæ ¥š Ö¿'–¾|±pŠ °û¼HxÓ‹„z=l‘d°pû»t!ÛÝ;e²H/ÎY,¬Ù,Ìû $)‹E†ãÇÿy!C†ô%„ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆâêäÉS›3g¾°“$e§@öŠÿäl¦ óÞz Î^œÉBžÛÝ»=¯;ò3ƒE°Ó_³{=Tê±yŒÏŸÀã5k>|]ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(îÎôÙ£}øfß¿ˆsÀ„õfý¼X>k'œ¸„¨ùÁ"ø½PY,ÜÛe±°Ëd‘AÎf²0³X¤?räÈs™3_\Kˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(.ŽÿkÑ¥—^Ú_’%ÌìfæŠà짃‡Ê^a÷Øzïö8XBe°ð"ÔsË`ü¾¹AþÆó!C†¼dÜ"""""""""""""""йtéäø Aƒ&JR>úîÍ€ŠPýývï[?g÷8î"Í`áö·éž;e³°Ë\a}ž^œ³YX³XXï3·L[¶l©~ÓMEÅÔöíÛúÞ~ûíK%ij$D0%Xïƒ3XX³VX_ ÉB‚G3µHH±°~/Ô4!æ½] Eð-xš gþÆ`¦ ¹¯ýúëá'²e»¤™QL=zìÍ\¹rŒ‘¤ ‰¿$ijë´ 'Ï|ÔšÕ"8ÐÂ)£…Û´ q™â`a}láhá”ÅB$eö §l™ŒÛExþ×_ÇG\pÁå…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ|uòäeΜ¹»$O`jd°pÊZ|¯Ù+Dì§ñž½"Ô{ŽÒKä"ù‡N?Ènž•àçÁ¯Ù­x¼nn gn'kÔ¨ÞïÔ©S[„ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ|ƒ¾øêÕk÷“¤¾zôÑÿ+gƒ+ÜúöMN1ÑQ8‰(¸2Htb™ÅÂé{¬Ÿ õ·Ø0é÷íÛ÷ß?ü°®Fš·¦K—.¯QT\ñØcº¿ûî¼ß%)°âqŸD,ƒ§q¬0_‹8ˆÂM4S„„úŽt.Ïӹܻ=N/Ƀ+¬Sƒ˜¯e”S†d6nT¬X1ë¢E‹pº""""""""""""""¢ÈaZš5ëö]½zÅÆÓÿŒÛqI9%ˆ™Å"8“Åi±´íîƒÛ=õº'± °°{Ï)‹…yïpa>°° ²HosCÅEÆ-#ž>|¸kÖ¬—<(DDDDDDDDDDDDDDD–?þøã9²•¤àd®ø[RWXƒ)œ‚+Ì÷Dì³YˆÃk"‘MU€Ez‰žŸsš8­ó¹]Š· cŠA´ æ{9•#GŽ1_}µóÙ3¯QhÇÑמ#Gö1’Ô>x»ÌN}ø"îÁby.âo&Ѝ§ ñ#ÀÂ[¤Èi÷N­BÄ~´Ü›Ÿ¹ºå–[–öíÛ§Áß_(DDDDDDDDDDDDDDDä}ëècG_»õ¿Kò~yóÞ.¸Âúz¤S‚D25ˆ/ü˜"ÄËw¥ ã±Ó”!v­Ó‚˜Ï­¯™ŸÍôú’4e^O·jÕªâ¥K—i!CúBDDDDDDDDDDDDDDDêäÉS›7lX7­R¥JKR�(0%È’2 ‚53…5ÀB$e"·À ¯AnÁâñ=ÏR#À"øy:‡× ¸°0Ÿg°|Ö`a¾žÉ¸]h~%J”¬Ÿ)S¦*BDDDDDDDDDDDDDDtžúçŸV~üñæw,¸ý#IÓ‚˜Á)Ì×Eœ³Wˆx ¨5eH8Ù+.À"Ô÷…dávï%ÈÂTa}`a¾ ‹ ÌÏöêÕ+w»víîÍ›÷Š ÌjADDDDDDDDDDDDDDçd«øé§>œ<yòC† 9(gƒ'­â90`aÍ\q*蹈?S‚¤jpø`ê;cd|³f³H/)ƒ.‚ƒ1Ñ"£åu©X±â%}úô¹ñúë¯/’-[¶k3eºðjãå¼éÓ§¿T’¦‰Å:$""""""""""""""ò‚ þ>}úÔ‘Ó§å§'þùöèÑ£_ïÞ½{çÀw¬^½ú˜åsŠøW’2VMSX)‚ƒ."™ $á‚+ ‘,¬Ïà ²°{Í.s…]P…]P2\d<sŸAB‚¿ï´"Yß à """"""""""""":?DpÚåõÓÏNž¹ý+ö*‚§±›"ÄúÜíÿF\áå¹×÷«Îûh³XXGl8!b?mˆÓçÌû –›ÝT$VéÅžÓëvTADDDDDDDDDDDDDt~ '8à”Ç×í¦î8i¹ ú;§lÖ nŸñ7cEªW@,;òãdaÞ»[X³Xˆ¤ ’° °HâûÓ-o´Ù+\ADDDDDDDDDDDDDDà5HÀk‹SAŸwš²#8pÂú~ð{ÁÁnßνÛc»ç^ß‹Ø;Xàtß³>7h:ËëÖû`¡Þ·:ôyëw¤ûk`¼ìbóYëk" ° """""""""""""¢ð„`a„``a}Ï-ÀÂú<ø±ÓMBÜ»R¸ý·ç^ß‹J<:ó#Ída}îgV ¯·àÿ›ÞÃc/Ë ,ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¢ °°{픇ÇÁÁ^n"þe«HÈà ˆWg~8AÁ¯E\awo áuj§ï µÌÁÝ0È‚ˆˆˆˆˆˆˆˆˆˆˆˆˆèünpE¨Ç¡‚BMb½·>>íÓ½Ûc·×¼¼ç‹xvä§ ó}¯Av¯…›Ý á5S…[àD: 8 ƒ,ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÎOá 8"¸e~p›:Ä)ˆÂ.cE$÷¡^ ~l÷\Â|ßñîÄ÷;ÈÂú8’À pÊXa}/ø}§Ï;ý±yŸˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(§C¼îÔà%ØÂ-£…ÝÿðHá5Û†¸<—0ß÷Mjuö‡3eˆ— ‹H3\˜ƒƒ'Ò»|Îí¹¸¼/.Ÿõ‚DDDDDDDDDDDDDDç¦H‚Ü‚+ÂÉ^a÷NÙ|&Üà‰p²Vxyîõ½˜HÍNûXf³°>ö„‘Þá{Ò»|¿[€…Ókn¯{Å` """""""""""""¢´-Ú�PÙ+œ^s ”€Sa¼îg¦Š„ÍZa•õ~g³°>Žäýtÿ.Ô²9½æå½h0ø‚ˆˆˆˆˆˆˆˆˆˆˆˆˆ(1Ä* ÜÌv ^‚!"ÉDN…—ç^ß‹¹DéŒ7!ÔÔÁ#É~ÎßÚýÓg$Œ÷‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¬ÂÉîpZ¼e´~|Z¼HD3ˆ—@¯ïÅE¢uðÇ2›…½XxyÍË{DDDDDDDDDDDDDDDÁ¢Í^üZ4Á‘<öòÜë{q•AO4Ù,‚ŸGóØÎiqŽða°ÅZ$Áv^¦ q{ÏÀ §×¼¼w‰àW6‹àçáN/és§×ÂyŸˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈ*œ)Bœ^ çy$‘<÷ú^ªIÄ V±ÊfÎ{^žŃv¯Å"èÂî¹Ók^ÞKU‰`~YÄây8¯Eãt„Ÿñ;È"’çN¯yy/Õ¥…� ˆdªÔ ¤ð\Á� """"""""""""""ŠD,ƒ,ì^‹u`…—÷S]Z °0E›ÍÂî5¿>êu¯ïyiÐB$A‘~Æé5/ï%”´`áY8½i`E$¯‡zˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(R‘0x}=Ú Šs"¸Òb€Dš%"Ó~Ä#cƒ3ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÎm~Ä2£E8¯¹½îõý„“V,ÀÏ ?_õžŸCDDDDDDDDDDDDDDç¾H‚b™Õ"Ò×½¾ŸÒr€¤‹â3~N„ Á` """"""""""""""ŠF8A §}~/ÒÀ ¯ŸIHi=À¢ ²ˆÕ{‘|Žˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(^ƒü¸õ^8ŸIXçB€…)–^Þ÷ú™Xþ=[¢ Jð#ðἬ0KàWV‰XS0x‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆb!Ü�†X]Dò¹„w®X€ßSw$êT Ø """""""""""""J›âtàw0Äy\çb€„|«ÏúñwDDDDDDDDDDDDDDD^DÌÎßÅê³i¹`‘5¤¥i?´ADDDDDDDDDDDDD”6¥fðA,¦ñãoÞ¹`aŠG …ßODDDDDDDDDDDDDDhƒXä|°€hb,Á """"""""""""""ŠD¬¢ùÞs:¸Η� ð+ DDDDDDDDDDDDDDt.ð+(✮€ó)À‹� ]Q"‹EÄyXa:,Lñ Š`�ÅR<ƒΫÀ Óù`abðQhçe`…‰É1Ø‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆè¬ó:¨ÂŠöhADDDDDDDDDDDDDDç3Va€…7 ¸ """""""""""""¢s*B`€EätADDDDDDDDDDDDDDiƒ)"À�‹Ø`ð¥&QøŒçu%&;œØ)ODDDDDDDDDDDDDDDBz!""""""""""""""""W ° """"""""""""""" DDDDDDDDDDDDDDDD!0À‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(X…À� """""""""""""""¢`ADDDDDDDDDDDDDDD,ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆBø.ŽŒ­Ö$Ý?����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/library.png���������������������������������������������������0000664�0000000�0000000�00000521216�15240005042�0022057�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��þ��¦���#Xæ´�¢UIDATxœìݼ[uÙð÷.PJi ÊÞZ6”½A6¢(ˉ¢ˆƒ¡"Šâ‹ˆ”© â�‘½7RöÞ«‹R {ÞûÞ甄$7wÞÜ~¿ŸÏ¹É9INrr“œ_ž§k��������*N×��������TÁ��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*P÷DgÑ%�������4Nu¢â ‹´ Û������� ˜°Q+Pi>Û������� u5ƒðJãØN��������íK¨-åÙ.��������‹ P —b¶�������@Ç&�ô AÛ�������� R-Ö! Å9ôÒž÷]¸�������XÜ´g(g± �-Ž”¶¸Ï‚=��������MÓaÅ*�´8VZë¾ ù��������´Ö î, Å%ÄÒ’ûÙVÛH€�������è,Ú*hÓ’õvúðÏâ>iÎ}lévê�������(ÖÒ Ns.ß©Ã?9 ÒŸE¹ý„‹�������€Ö²(2M½n OtÖðHSîW[-Û—�������¨TÍ Û4årmµlE茔ÆÞ§Eµ\k&�������ZK{‡b{}‹j¹ŠÐÙÂ#­ÒiÌz*©-�������@{j‹ö]Õ-œßÔå:¼ÎFiiXgQ„Zûò��������m­¥Á™¶ù´Æú+Bgš´eà§%A¡¦.�������ÐÙ´Fž¶˜×”e:¬J¥´$ôÓÔé-™×’e�������*ASB4­æiêô¦.Ó!Ur�¥¹­¹ÚzzCóZó2��������‹BsÂ2íèin�¨"Ã?•6iÍÐOK¦Õ7½±óC(�������ho­†in঺•§Õ7½±ó;œJ ”4§ÒNsÃ=‹º �������@%jËê>m�ª¨ðO¥…Qš¬in¸§9Ë44½±ó�������*U[Vøi­eêšÖ˜yJ¥„Pš¦éÒÊã-Öœe��������*Au3—iî´–Ž×5­)ó¹JŸ´´ÊO[7eZs–�������èÈÚ2ôÓÖãuMk̼E®£OZ3ôÓÜyoÊ´¦Ì�������èèšS9§µC?ÍWß´ÆÌ[¤:rð¤)¡Ÿ¦Œ/ê0PSæ�������tt­üi‹OkTj̼E¦#OÚªÊOSÏ7f^}óšÞÐ<�������€JМÀLi@§µƒ>Í Õ5­1óÚ]G ž´V•Ÿ¶:ßPЧ©U�������€J×Ô LCÓªSë…{Z«Pc絫Ž<iI•ŸÆ€Zòilu ÒËÕµLjÂ|�������€Ž®)­¾ªSã‚?¥ç[jNõ ú¦5f^»èÁ“¶¬òÓœù]y¹†n[]Ó3¯%„‰�������€º´UX¥¥U ƒ=õyê[¦¹ Š­þ³(C"M­†ÓÜ6] …|rºÖ±ž®õ¬¿1€R¦7–p�������ÐÚZb©nÂôƶöªjÂôúÂ>­Ý ,5q~›XT’Ö®òÓÔiå<åÂ> }j9ÖšÁa������� ½4'ÈR_ð§¡[ U•Y¦©aŸ¦TjÌxc絉ö“´e•Ÿ¦~ê ù”Î/­öSWð§¡àQ*3������� ³i¨êO]Á›ú‚?Uõ,__埶¨Tn<5q~«iÏJk‡~šð©ï´´âOaا®óÍ­öÓ”í- �������tM ³ÔÕÚ«)Uª8_jWýiîiCÓJÏ—OMœß*Ú+\Ò”Ö^¥ÓZ+àSxZ.ÐSzZZѧ¡ÛÑÐm.=_¡������� £il˜¥±Ut âÔWá§ô´ð|u+Öw¾¾i™×*Ú#`Ò”ÐO]ã- ÿÔUá§¾¡ôz[ ¨ôrå¦ÕGè�������訚þi¨ªNU#Η€3¤Ô²j@uMkÌxcçµX[‡LZ3ôSW˜¦±ÁŸrCauŸ®%—«¯òO] ÒyånOC�������€Žª%ÁŸÜx]ÁŸú‚;¥Õ|ªÊœo(T×icB?2üÓ=µæ†~Z³ºOá´\¸§0äÓµÌeÛò«4 T:¿”à�������Péšü)7½p^—’åë þä–Ë…|º¥ò!¢êT&ªë6t)8mh~u™ÛÙ%Õ¾uÝçúæµH[…LÚ;ôÓ˜*?…ž®©á*@…§Ý †ºBC©är©‘ÓËþ�������:š¦„Wª9=Þ©*˜¿ `¨*¹\}Õ}ª±\J©E­Àê;_n¼±óš¥-&Í ýŽ·$ì“;_îéZfz¹�P.èÓ#}öi(TWë¯RÍÙÞB@�������À¢Òœ°J}—)×Ú+¥º6¹�мôi¨\à§ô|UËÔw½Í 5f¼±óš¬#šúi¨ÊOi…ž®©îPÏ´0𓛞ƌ3à´ÓN[kµÕV[sàÀ«ôìÙkD—.ih—.]—¨™Ý; æ��������4WafWWW}\]&Ì;ç©S§¾öÊ+¯¼xÆg¼pçwN+X.Â;�š›êû”¶ûªJ WÿiÍ @åÆ;¯ÉZ;´²(C?åZp•kë•«èS8¿WÍÐ=·ìÉ'Ÿ¼Ì±Ç»ÃС÷ïÖ­ë¨�������@»[° ê‘ ÆÝ}ÑEÝuæ™g¾Ÿ> õ̯æ¤â`O¹Š@¥ÁŸÒV`)Upø§5ƒ?­úÉonè§°ÊO·T¾ÕWnzTøé•[æŽ;îØ|Ô¨Ñû÷ìÙs—�������@‡1wîÜ[yäákwÜqÇGÓ§ÿÌMµƒ?…aŸŸ¬¢ª`H©éáŸrAŸEþYÁŸ†Î7¶¥W( óäÆËµñêV2=ªûôþdzøÙrË­¿ º�������@ÇU€|ðþ?€"Ø3;-¬TüYên–Rí¶`ÍiÖØó¥Z%øÓ-µŽ¶lñUz¾¡ÐOaø§[Áxî|Tøéãßÿþ÷—½é¦›NZe•U¿Ýµk—å��������Zd<V\qŽN:é¤áÕÕÕ/Üÿý³j&÷ødvjJ³&Õ©8sRn¹êÔ¼ŒK}š’§i–ÖªøÓ¥‘Ó[ú …•|Ê…~º¤Ú! ÜU~¢½W—gžyf·5ÖXó”šó}��������•hÖK/½ø³õÖ[ïæ´0¼m¿¢úOUCuª»åWc«ÿÔwZz¾ÜxCÓ­5‚?Í©öSW�¨®ðO¹ÐOaø§¡ÐOTû‰ÐO¤»ºN™2å„þý|6�������Pñ¦OŸþ×Aƒ–:7- îÌK Ã? RãÂ?Õ%Ciø§\ȧ¾ÀOcƒ? ÍkP×Ôvº40^8­¡ Páx}¡ŸrÁŸýDUŸcÆŒé?s欳…~��������:þýû62!cÆìÒ?-, Y‘ÈŒ”æHêËœ”¨I©|!›”êoùÕ˜ÌL«è–Z¦5ªý4¦ÅWcªüÄié–¯ôsÔQG ºòʿӭ[·Ñ �������€N¥k×®+~øa7îþ'žxbNZ˜©*Y,ò%Õ%ã9õUßiLè§9Ÿ…‚Zš(êÒÈéõÝù†?¡4qU_uŸÂ�P„~zn¿ýöo¾ù–_×<À&��������:­ªªª'wÛmÏoÝ}÷íSkF禅m¿"�­¿ªSù`…m¾Óò«\û¯ÂÓÒóåÆšÞ –Ú²ÚOéx×TªoÈ…~z¦…ÁŸn3gÎú¿îÝ»o—��������èôæÏŸOß¾}NJ C>ü‰�P.üSÕÀJC@)•�¥’i)••oì¼:uMm¯1½ÌÊM+×7­\¿µ”jW�Ꞇ~ºNž<ù¡�������€ÅGdE&OžrBú´cT÷T;w’RùÎS9å²+)5? Ó꺧Öרö_å¦×µ±J«þ”>�…CLj?]Ÿ|òÉÝ\âð���´Š ¤¹sçÆ/¦²¡ªª*UW7»1,¶ºté’ºví_BfCÏž=S·nÝ���Ðzpø“O>ùâ†nøß´0KÕ~"[RX‘'ªúär(ÕéÓŒJa埜.%Óº¤ò•zš:½ÙšûmBcÛ|•;_W{¯Âóu ¹`O·’óÝ æÇÕë{ßûÞC9ôw5ç{$��� EfÏž¦OŸžfΜ™æÍ›—€~ ebŠ})ö©ØÇ"T"���´Že–2ºæ3÷<ð@´ûʵòÊ|R™ó¹Ó†¾üª/S×r]_£5·¤Pk ÿ”+§Tx>†\ð'×â«_œÿøãÔ§Oß½���ÐlD˜1cFN�ÚGTþéׯ_V���h¹Y³fÞ¸ÄKœž†~fÔ ó?9¿à“¡*‡‚ ÏW—œ/*=_xZßùRMþ¥]×ÔºÛæ«¾pPCé§Â@Pi(ªût½å–[6ú��€–‰ ?S§Núvû\ì{±���-’È’¤‚lI*Ÿ;©+ÏR8­¡‚8õ]¾¾éÍÒÚšÛæ«1Õ~J+ýäªýäNsÕ~ºÍš5çwݺu•���€&«ªªÊBóçÏOÀ¢m¿˜ºvmíßï��ÀâeÁ‚ªGúôéu|ZXá'Wõ'Wí§´êOaåŸÆTý©«ÚOS«þ´KÅŸÖJ56éT8¿\0(ÊUûÙLè���š'B?ü±Ðt±/Æ>û&���Ð|‘%‰LI*®úSZí§´€M]ššyi¬&¯§5*ÔÒ6_¹ñ.X¦Üòñ tÙj«­÷M���@³híO®õ���Ð2[n¹Õ~© c’šŸQ©o™TÏxCÓ›¬=kwiÆôÂê>¥I«Z-¿N:é¤ezöì¹K���šlúôé*ý@ûfì£���@óõêÕkçÈ–¤‚¬Iª?“ÒP 6ö4¤­‚?--yÔÔ Ð½fèúå/y»���4ÙܹsÓìÙ³ÐqÅ>û*���Ð|ŸdK"/Ó½i—lqÖ¥MÂ@M þ´e"©¡rH…ã¥}Õ²cøðå��� f̘‘€ŽÏ¾ ���-S-‰¬Iiþ$¥ÆeWÚ:?ÓhMM/µT}}Í §—º–œNï¶ÝvÛõïÖ­ë¨���4ITY°`A:¾ØWcŸíÝ»w��€öRUU•æÍ›— ñÙ4†êêêl]ºtɆnݺeC=²¡k×¶jDÕ|‘-Ùn»ûßsÏÓÒÂÌIU*ΠT}rZj‡º|2½Táôº–i­µ…êYÖ’¤S]•€ 7z:ùä“×J���@“iñ•Å> ��@{ˆ°Ï¬Y³ÒG}”¦L™’¦M›–}&ðOÌË…~BœÏ…ƒb™X6.—uļŽää“¿›Ë˜”Ÿ)ÔÒÊ> efZ¥jP{Wü)Õw¢[¬guÖY-���M¿Îš?~*Gì³±ïÆ/(�� µEHgæÌ™­òÓø C´®Žêµ}ûöíU€>ɘ<–fN楖i× ?¥Eð§¡„TCa r­¾Ò€VM���@“Ì;7•'öÝ>}ú$���hMø‰¡-D(†ÿİ(dLÊePê+OTÚÒ+¥âÐO»‡€Ú"øÓÜ*>]9”.›==zô‘���€&Qí*“}��€ÖŸ3§OŸÞ.Ÿ7#X?héß¿êÞ}Ñ4ªú$c’Ïœ¤º3)åÚ€• ü4V«ƒUý¤æ„ƒêëyÖ¥[·.Ë&��� I„ 2Ùw��h-sæÌI}ôQ»~ÖŒëŠëŒë^>ɘ”z µf®¥Mµgð§­î`¶Þ.]º.‘���€&‰ží@å±ï��ÐfÍš•¦M›–•¸î¸ í­ cÒ¦Y–öДàOSoT—6ž_º\ï���4Iuu»¶Z‰}��€–ŠÀÍŒ3Ò¢·a„r“¦fSÚj~³—ofi­}ãZW¹Þj…§���½¤xà¡ô¿ÿ=ž^~ù•4aÂø4mÚôlÞ€ýÓ°aÃÓꫯ–6Ùdã´ÕV[¤¾}û&�`ÑxçwÒ=÷Ü›yäÑ4iÒäšaR6}È!5Ãà4jÔæi»í¶M#FŒH���Ô/Zlu„ÐONÜ–®]»¦^½z¥vR.sR8´Ö/nZW‹¯«)a™Æö5ëÒˆÓráÜеÌi÷ONcèV0Äø€8?w��@#|ðÁéÒK/K7ÝôßFÿ’¤OŸ>i×]wIŸÿügÓðáÃt“'ON@e<xpZ¼þúéüóÿî¿ÿÁF-¿Ùf›¤¯ýki5VO���Ô6þüôÑG¥ŽhÉ%—LÝ»·F ›†õìÙc‹š“5Cô:«úä|n¨úd˜ÿÉiu™ÓÜJÆ §Õwšêohz‘öþ4&üSø) ûþ���-2wîÜtùåW¤+¯ü{Ví§9zôè‘?üÐtÌ1Geç¡Ò þ|jÊ”)éñÇŸH¯¼òJÚcÝÒJ+­” #ëìÁŸ ¤ßüæ÷骫®nrk³ø•èA˜¾ñ¯¥nݺ%���>¡ŸÿtDú‰ðO{hdð§ð|¹àOJu‡~«àOáôn©v�Hð��h‘ø0ûƒœšžxâÉÔÖ[oÝtÖYg¦Aƒ%¨d‚? ½úêké›ßüv4[o½e:õÔ“SG4qâÄôÚk¯§UW]5 ²LbñÕ™ƒ?Ó¦MK'Ÿ|jzì±ÇSKDõŸ3Ïüi0`@�� e?ˆlî"ÛKß¾}³¡­51øSøYêý´{ð§}ê#5Na�¨©—��¨S´ùö·¿“&L˜XkÞС˦m·Ý6m¹åè4|ø°´Ì2 ¢¿ÿþûiܸñéJ÷Þ{oÍöIE—{æ™gÓÑG—Î9çì4räJ X4¾õ­“Ò /¼P4míµ×®Ù7™š"ª‰äB?á©§žNUUUYÕŽä¾ûîOguvö«¼=z¦SNù^=zT‚Î$öźB?£Fm–vÚiÇ´ÁëýÏ~òɧÒwÜ™yä±¢åc±®sÏ=Gå��X Œ½ujO?|ª$ñ]GGý„¸½{÷n¯ïeZ’SiZyÚ6ÒÚÊolÅŸr­¾Sñg`œªø��”3nܸtì±_N|0¥hú²Ë©™~tÚcÝü�ˆoºé¿é /N“&½_4oذ¡éÒK/JK-µTj‰¨l°óλ§æøÓŸ.Nk­µfêˆvÝuôñÇSóã§vrÚsÏ=G¥WüÙm·½ÊN¿ùæSSÄ~~è¡G¤©S?}¾þö·¿N«¯¾Zj-Ó§OOxhÑ´ÓOÿa5jóÆ®"}ýëß̪唆œ~úÓ3Óý÷?˜ßyçÓ‰'~+Ñ9uÖŠ?çœó›ôÏ^U4mÅWL'Ÿü½,ðSŸíýìg¿Ho¿ývÑôC98}ë[ßHmíÝwßM·ß~gÍ—ÿ¤ñãǧ?ü(õêÕ³æ} ´æš«§í¶Û®fØ&+]O±üà”t×]÷äÇ?ü°¬U��4…àOý⻉ٳg§JÁŸþýû§¶ôIÅŸ¨â355­âOa«¯æTü©ï|jÄô"ëgk���­hîܹé{ß;¥Vèg‡¶Kÿû_Ó^{íÙ¨_Ä2±l\&Ö?~BÖBlÞ¼y ¨Q)(BC1|ûÛßÍöóõ×_¯h™±cÇ¦Ž¦4d8hPûô¼‡öòÒK/§«¯¾¦hÚ&›lœ.¹ä‚C?!–‰eã2…®ºêêôò˯¤¶ï9"°tÈ!ŸMüã…Y¢¨Ó§M›ž‘n½õötÊ)§¥#ŽøBP��hOñ£§J ý„¸­q›iØ¢þhÍ��´‹Ë/¿"½òJñA¾Ã;4yæOSŸ>}RSE_é_üâÌt衇Mƒ{—\ò§TŽÂö`Ï?ÿ|vºñÆ-óÄO¥Žæk_ûJZwÝuS¯^½Ò†n¾üåãt&¿ÿýyE_ìF¥Ÿ³Î:³I¿ò0`@Íÿ럥VX!?-Öën îùÎw¾›U)*lX—7ß|3ü éñÇ;^¸��è¼æÌ™“*M%Þæ´21jÊ��Ò”)SÒ•Wþ½hÚöÛo›µŒèÒ¥iŸ½&Mš”þñ«ÓþóŸ´ÕV[¥SNù~?~\ºçžûòËÄuí»ïÞiذa©µl³ÍViøðå\nР–µƒÎ,*ûäB>¥m±Jm²Iqðçùç_È~]¥¥;Š¡C—MgŸý‹Ñ;3{ìñ¢iÑÞ«9¥Ý#ü—ýò—?mõè£ÿË®cĈ©5]tÑ¥Ùº E±5ÖX£æÿøÐ¬g´è›2åÃüü ýð‡?Nÿú×UY��h•Öz«=µ$D“kµ¾Ì2ƒ³%=ªÞå㇒çžû»4a„l¼©-Ùsâ67看›ö þ´f¢©KÉ���PË¥—^–fΜ™2d™šl§6)ôóÚk¯§¿þõʬ5Çüùó³i?üpv0ïG?:-zègÓ¤IïgÓã�Þå—ÿ5}ï{ßI­eß}÷I[o½U¢uÄc]cÚ»Ñy”«ìS—e—]6 :4ÿ¥T´ð{î¹çÒ&›l’¨-*¨TWW§nݺ¥öI=Ó=÷Ü[4>jÔfjïU—¨Šµùæ›…rî½÷¾ôÙÏžZKTø¹öÚk‹¦ ><ýêW¿L#G®”ŸÏÝ+®¸2]pÁEùiÑŠôæ›oÉþßW¢Eñ���4O¼Ï}¿Ùï¿?9ýä'?K'tbÚa‡íÊ.ó¿ÿý/~ú™5Ÿƒæ¦–ŠÛ·½¾Ïk«J¬«:µ±J«øÓ¥‘Ó��€ÅجY³ÒM7ý·hÚqÇ“µêjŒ§žz:ýå/W¤x(; Uh=öÈNc]ÇsT:ó̳òóâàÝñǵÑ×ÓÚ¢ÊQ„‘¦N–Ÿ¶ß~û¦ïÿ¤¢å¢‚I,7aÂÄü´½öÚ3zê²óW_}M:ûì_çç­¶Új5ÛãOiüøñéâ‹ÿTs�õÑôÑG§Áƒ—Nk­µf:è ÓFm˜Z*ÂSwÞywºå–[ÒÛo¿›&Ož\³-û¤!C–M›l²qVQiÅW({ÙÒÛ¼Ùf›¤ßýî7ÙAä¿üå¯Y¥…¸ßÿøÇ•Eëˆ/¢rS\gTw‰j ={öÌ qûï¿oZe••‹7Þ°æõãæüx´ûêHÁŸŸþôÌtÿýæÇwÞyÇtâ‰ßjðr/¿üJúÛßþžž{îùš}anÍ~5¸æ¾n\ó±O>¼v¥²7ß|«¨RJ|ÁvÓMÿNo¼ñFºì²¿dûK¼Öü×Òž{îž_. wÝuwz衇Ó+¯¼š>þxZ¸ŒÊdk¬±zÚvÛ­Ó–[nQ6„Yzߎ<òˆtÈ!§k®¹¶f½5{ÍŠÊ/ÿûé¶ÛnO¿úÕ¹E—ÿãŸVZi¥TNÜ÷Ë.»"?Vb=~5ر<òÈ£Eã;í´cj©wSüyôÑÇZ5øóÞ{ï¥éÓgM;öØ£‹B?!k_üâ‘5_€?^ÔâëÅ_®ùÿV~ݱŸ]wÝ¿k^‡žÌªÆ{’¥—^:­·Þ:i·ÝvÍö¥†¼ñÆ›éúëoÈ®sâÄ iÆŒ™©_¿¾Y µÍ7ß,í³Ï^Ùÿ¼R¯¿þF:üðÏåÇã5àÁïÍþŸ^pÁ…éé§Ÿ©Ù¿§fçý÷߯ìuŽûDÍAIiÚ´éi‰%¦ÕW_­æÀÀöÙmÿµ¯_úÓŸ³_ Ƕ<xpÚtÓMjÇÃjöù��аø¼ÞÈçß§}ö95Ÿsº×úÑâÃ?’~ö³³ŠB?ýû÷K-·½+¥V|E«/�� Ó‰Ç…Õ~–]vHÚcÝë½Lüb?B'ýëßj½Xv™8hwðÁäÇ#,sñÅ—æ«þDàèá‡McÆlŸ…Aƒ¥¯~õËé¿ø¿ü´ÿû†tÐA…WþüçË‹B?K-µdXªOèûÊW¾–¼Ë?~B6Äv;üðÃÒ׿þ•fÿúæÅ_J?øÁ©Y¸¨P”óýðÃÒK/½”®¼òoÙÁÚ¯~õKª.pãÿI?ýéÏëœA©SOýQv`²Pü’( 1\sͿҾùͯ§îÝ}„^l¼ñFEÁŸ±cŸL•.Âñk¼xËy÷Ý÷²áæ›oM'žxBÚn»m\ON<ñ»Ùk]9/½ôr:óÌ_¤‰'ÕšU”bˆ0Þšk®‘N;íä,ÀÐsÎ97Ý~ûµ¦o³ÍÖéüó/(º-ñÚ_Wð§°5ãÂËo%ôÓM˜PüÜiIµŸœ 7,¦Ž?1µ¦ ªjM«ªZPçò?ùɲÀLN¹°püúíoÏKÿüçUµæÅÿÉ¢a¼^qÆËîK±Žßüæ÷Y0¶4Ä_Ö?ó̳ÙáØhƒÿëa¾/}é«Eï±J¯ów¿;?ýãÿ¬5/ª=ôÐ#Ùðç?ÿ¥æ@ÀO²ðpCâô7¿ùí¢ƒqÿo¸áÆ,�ÛsÛm~ý�€Å]Kƒ?_üâj>cü.?ß1üü翬ù>ï»ùðσ>”M+½®Ã;4µD;*žúæ��@§SøKú°Í6ÛÔH‰_tXÍèÕú »îºKZf™eòã±ÎXw¡ø%ÿ¢íBÖ[oÝüxüçÜs“7n\ºòÊ¿]æß8>-±Äu®súôé5ÛæÇE¡ŸRʹüò+Rs<ûìsé¸ã¾R+ôSN´^;õÔ6¸\T9ï¼?Ô9êÔ©é裫ú)K¯ºêêš”?O,"hPøz°?ü0Uª¨buÎ9¿) ýš;wNúÅ/~™UjÈE]\gèçí·ßIßÿþ)eC?¥"è÷Ãþ¤Á/㵡\è'ôîݻ֯ ï¿ÿ²ËÆm‹ F…âõœŽçƒ>(Ê.-µÌ2Åëˆjr­iذ¡µª×D;¯xoQN„tV^yd~:´vµüà”²¡ŸRñ?ìë_?!͘1£Ö¼Çÿ¯ÒÐO©¨¶óî¸ã®Ôßþöwu†~ÂÉ'ŸZ6ôS*Þ‹|íkßÈ*Õçã?ªy]9¹Î׊¨äwúégdÕ��€úÕõ½@cí¾û®éK_:¦¨‚o¬3ª¡ßu×=Ùqâ|éû÷#Ž8<pÀþ©%ZzÛåçŠÚ}��y¯¾újÑøV[ÕÝ #>8þð‡§7:‰µÑR¢Ô–[ŽÎªÂä¼òÊ+©µD»²§žz¦Þeâú ÛlÅíüÞ÷NJGyTþCñc=žµ ‰å¢BQäËÙ|óM³îõÉm›Q£6KŸùÌþiÀ€ÙÁÆ+®¸2;è–sé¥N»ì²S>|xj¬8€¡¢ÂÛ•u¢šR˜¦Ný8]wÝ é­·>=h_&\wÝõY³º¼üòËÙi”!ŽÊ K-5¨æ�âÇ©OŸÞÙô³Îú¿¬ZQN´=ùüç?—6Üpƒì¶Dux\sLÿûß[²×˜1Û':·x~¯ºê*Yk™Ï'Ÿ|ºÎ¾õ].¹Î:ë¤Ñ£7ÏîOdr÷/Ä´¨¬sñÅ”mÁ"DmÏ¢òY´Ò[n¹å²ýèÐ!ÙühýS ZrÉ%³/÷¢ºO,U> _+_{íµ¬âöÛo[Ïm_Ì[n¹áYë½W¾VÄëMTüȉpÏ{ïË–/U† 6,­»î:‰ÅCi𥡠LSEmÏ=÷H×^{]~ZT<öØ/g­2·ÞzËìùϹX¶!±ŸÜwß§!¶Ø'ãÿݘ1Ûg¿p}úé§³Ê}¹öbNüÃ.LßùΧ-ÿ"tUï E[À¨~m½^{íõtá…§wÞy'??ÂJ;î¸C·+^âýD¼Ä{#VÈöùØŸBTº÷Þû‹.íÄöÝw¯,\üôÓ oSî½Iüÿÿå/Ï®¹í¿¯ó:ÿóŸ…m[×Zk­´öÚk¥)S>È^7 _¢uY´C‹–®��@ÝZ#<“kó{Áç§åÚ~Åg—¨Z(¾ˆ¡¥Ú8ø_„´îÅE`QšÔì��-~I^¨¾ JT“È[â@Ö÷¿ÿÝš¬Õéç?ÿEzä‘ÇòËż‘#Wªuù8ø]ßu·D´ÐjÈ€ý‹‚?!B ‡zHV'碋.©¹o'em}râ�b„„#ÚâœuÖÏó•P¢½È:묾õ­ïä—‰q·Ür[úâLuë­·Õ ]EÛ’vØ>?_*|å+ǧ^x!?í²Ëþ’U7ª+¤"8ô«_ý2 8°hzè,¬l1Ï?ÿ÷i5VÏOÛl³Mkf.›µ,ɉŠFcÆlŸèübŸ* ÆDp®Rƒ?aÏ=wOÇÿµüø~&«r⦅¶¿ŠÀÌóÏ¿í×u‰}é—¿<³V;­RŒ3¦æµgÕôî»ïÖ¬k|:å”ï§#–Ï/¡‡e>õÔÓùi`¨/øöÞ{ÏšýÿKe«¶Å:‡šµ˹ï¾û²×¿B¥ÁŸ]wÝ©Þר†SXQ&ªó¬°Â ©%&O.®"´ä’K¤Ö­²^ýõ¢çwˆ0p úÓeÙÿšM6Ù(m·Ý¶iÇÇÔúßâ óøÿV(Zñ¶áZýõj^£6Ê‚E±|¸þú¾_gÿþý³•o¾ùvœ}³0•†^ºfßúz~ÚÛo¿U\ª¯_l»óÎû]QûÐÜí.­ú·öÚk×üoým>ìá¨Ñ£GeÕŒrâµ5{+­´b×ûÿ‘G~.?-:êØ¢àq¼_ü� gôè­S{zøáûS%h­AäÂ?^xI~å‚9­ú ­ýŽ&jN¶¥Ýo°V_��@§“û|ÎÒKªsÙ¿þõoùóú2dHÖv#Î:âˆÏ–½|8«ïº•cŽùbQû¨ÐóÍož˜?HŽ>ú‹µ‚KuùêW¿RëÀû[ŒÎ@…¢RNSDP¨Ð¦›nRú qÐðë_ÿJÑ´¨ÖSz€µÔ©§ž\öÀjaø)D £0ô“sðÁ¥¾}ûæÇ£ \i:§Ò0ÝØ±cS¥êß¿_ÍëÁQEÓb_þêW¿” =øàÃõ®+¾—†~B„h¢RH„þN;í”ôÇ?þ¾(ô“aÃBQ…«>ñúúå/Wg«Æ¸Þ¨bR(J‹ŠÀ»ï¾—uí´ÓމŽ)WA*çÉ'ŸJ-õÄÅ-WXaDjm}úôIç÷Ûìù•æÊ‰r÷?üh:묳Ó~û˜þò—+Šþ'/¼­OfÕ‚r† Y&pÀgj­+zQy«pÝ…aå‘#WJ‡vhúÁ¾[³?žWúÉ)W}èÃ?JõùÒ—Ž­ú)w»ÃñǵÖuÄÿÛ¨€•ãõäŒ3NOƒ-Uçõ-¿üòE¡Ÿ¡¥¨ Xèý÷µú�€†´fx&Â?ñヺ~TÓš¡Ÿ°ˆƒ?¡³´ú��h²Çû_¾%T}âWë¥A€Ž.Bžxâ·ÒI'}??­°²Î*«¬’?üÐF­+ʹRÙyñëý}zM«xTÚ–-*+•Û?B8…• ¢UP´æ*g©¥–L+®¸B£®óÖ[o¯ó „Âë "¨¯CTÖ¹ŠQ1$Â#Ë/߸ \GÕAâõ T´âZk­5ÓÓOÚNpâÄ õ®«±í±"„ðÎ;醴ß~§æ€üûiÒ¤I饗^.ª¢JC¥¢½O·nÝê]&B<Ñv0·¿úêk5÷cbÖÎ(”Vû‰°âàÁƒÓ¨Q›gí¤rn¿ýŽ´Ï>{§–¸ãŽ;‹Æ£ZN[ˆ6•_øÂçÓa‡’Ð}ô±ìÿca;­œøßrÞyÌö‰ŸüäÇù/ËKÿ?E˜æ‡?üqÙë+ ú„øŸX„ˉÊIñÿë½÷Þ«Ù?&e·)n_©†¾LßpÃòï…Jow´ÏÜ`ƒõË.{öÙ¿LµÖZk”¾Ê*#‹ÆKÿW��m/¾‹Ï2¥Ÿ#bZüˆöU Áµ—�€&‰ S¦ÌÍðÁ”¬íE©ÂVXá¿øeÖú*FÇùœÏ~ö°T—Ò"qÝ­åì³ÏJ[o½Uj®m¶©»´q´ýŠƒ”±ôÒu$_f™âòS§NËúy7fݪ˜6mzÑ´e—ZvÙ¨ÒÕ˜Þ|óÍü´÷ߟœêR®’AΤIµ/wÛmw¤Æøè£_T‰ðÏãZé'àWbðgÈeëœm² ƒ?S¦Ô_í£wï^õÎá…Óu×ý;=øàCYø§¥º¾°ì²C²€Aae˜]pÀþÙù{ï-.¹¾ë®;':®hƒõûßÿ!?þè£ÿËÛºBž ‰J4…A¢øzûíÛ¶m_T¶Š X1„)S¦Ô¼–<Qó\¼7Ýu×=ÙÿÈœøßÚhƒÞ¿vU¹æþŠ0Ì¿ÿ}Cºæšëʆš£®}²ôvÇëN]•ºš¢gÏžMš��Ô­\H§¹¢uxT3-÷ƒž¸Ž_ÿú·5ß ÌÏZ·†Ю»ÃgVTü��:áÇ×hû0?¿p/­þU!J-mnöÝ÷€¢iÑf"ZSÔåÝwß­uÝÅŒu·‹_篷޺©1ÊõéþtÞü´¨,Š2¿sçÎI,¢ÊTað'Úí³Ï^©ÒÔWU§Ü¯òšëÚk¯K^xIÙý2ªöD‹°¸-o¼ñFjm;ï¼SQð硇É‚?¯½özQ¥³hÁ! :®#F¤Í7ß4 üäœyæYé’K.H hÒº¦Nš]¶Ð¦›n\ó\\1µ§Aƒe•xbˆ�Î7¾ñ­¬]eN„årÁŸ–ü_›7ïÓÀó‡~˜Ž;î«u~¢’_„ï»ïÔ”Ý� #yøáûµµVðçÎ;ïNgŸ}NÑ÷ ¹ànZ\Ïyçý!õèÑ=í²KË€Ó‚?^[<��@»[uÕUÓ³Ï>—@Ï–[nQ´LTûièÃn„x~ò“Õû«õXw¡ÕV[-uçŸAóâÃwTjLË› &dÜËm‡hT(¬7¶’PTå‰ IÓ§Ï(¸®ñe—ëvA…–Y¦yízT4þå/—µgBѪГO>ÝèjVɤIëœûv¡¥–Z"5G„.ºèÒ¢×Ô7Þ0í¸ãŽiÍ5×ȪòÄv;ÿü?¶Iðgë­·¬yM;?Íœ9+饗Ҝ9sÒ£>Z´Ü;ìUs¢cûú׿Vóš|tþ ã·ß~;}ï{'§³Î:³ÑáŸýÄe ƒ/ñ?ì+_ùrjm_|iQÛÐí¶Û®Î_µF°)Bi…U ÷‰e–)n%!¨ßþöÜÔT¿ÿýùE÷}À€þé ƒ¬YßfYð)Zý}ôÑGi·ÝZ'ÌXz»£Ý^]ï��€E#~”ÓPËí†Ü}÷½éW¿úuÑz"”óµ¯}% ùœ{îïòóâ´µ*ÿ4Ô¼BDv¦Í~5ÑVŸ¾~��€EfÓM7)ö…Hã€T}­3Ö\sÍtƧ§«®ú[Z{íµê\.*áÜñ¯ˆ6ÛlÓÔ<÷ÜóYŽœÉ~ø§-Ë"lÔ#Ú…<úècµ¦ÇAþ{hÚðáMk…T”zà‡Ê.•WâvŠ€Ws¬¼òÊEãÏ>ûl‚R#G®”–ZjÉüø¬Y³Ò+¯¼’*ÍSO=S¶úWTyñŗЦ 6,5Gl _c×Zk­ô³Ÿ‘µ:Zn¹áù°T}UÈZ"Z+m³Í6ùñh3öüó/ÔܮNj–Óæ«2¬¾újéàƒ*š­öŽ:긬uWCb™£þR­e# Vßÿô抶“ÑR.7\yåßëý2ý½÷Š®…­)GŽY4/öÑÂÖ`uß}ÅïMâ=ÍqÇ“µL‹ÐO(ýŸÚ¥ÿËcÝu=VÇ÷•tÄ_H?þñOÒ_þrEš0ab��Ú^KÃ3ñà/yvQeðûë[ßÈ‚=QÙ焎/ú@®òO†Z¢“rÚ$Kãg��@§³ÕV[¤¾}ûæÇ'Mz?ÝxãòãÿûUe¤­¿þzéÿþïéϾ8kÉÑЇÊn¸1[wN\ç¨Q›¥E->€ÿüç¿,:ðø¹Ï}6}á ŸË~õŸs×]÷Ô:8X—ßþö¼4}úô¢iÿøÇ?kUïØvÛ­‹ÆKKñÎ;·h¼ô@|Ü’Á…fÏž]ó%Á‹¦ 64m°Áú©9vÝu—¢ñ¨Ú×[*ª%ì¶ÛžÙÁæhsõÕ×ÔÛöŒÎ%ž»l°AÑ´±ct4Xúã/*ªÆ¯ ±OE@¦PsÛ`M›VüÚ0dÈ2µöý¨ÀR.@ØZvÝu§¢ñ‡z8«ü“³êª«¤•W™¨ ÇÿÕ¬ÚM¡xMþÊW¾^3ï›éºë®¯ùÿóf&‹!ÎÇ´˜Ë”kquÿý¦›nº9µ¶xïPèµ×^ËB-QQ§Pìwñ¾!†B#G®”?ááhÕ3uê´tùåWÔºÎø_ú¹Ï}1vØçÒøãl™\U¼¸žÂJzaøðÚ¡¾ÿüç¿©µDkÄØï ýîwçg¯?…î¹çÞôôÓÏdíFo¾ùÖìu(þÇ��m¯¥p/¼ð¢Zí½"èSØÊ«\ø'.sÑE§–P½·a•UŸ�� úôé“öØc÷,¨‘­8vÚiÇ,œsË-·ä§ÇÇøPúÙÏÖ¤ƒÂñköK.ùSÑ´ÝvÛµ(pÔRQ±çá‡mp¹Ã?$kK–ó·¿ý=;¨–3xðÒi¿ýöM={ö¬¹Ÿ‡§?þñÂü¼ÿû¿_¥M6Ù¸ÁÛýúë¯×\öói÷ÝwËÚyÅ/ùï»ï¢ebý»íVªéÓ§oÍÁÏóãÿú×õÙ´UVY9­¶ÚªÙ¶¿ì²+ÒøñŸV@ˆƒ˜?¼{ÍÁÔu³§ÿþ÷²V/…Ž<òsÍîïó–[ŽÎ·i‹/ N8áÄš¨‡dÕ¢âˉ^x!ýõ¯Ën{ Ï?ÿ|4:ðÀ‹hWu÷Ý÷äÇŸxâ©ìµ¢5ÅÁ÷¨hUŸØGGÚ<5×m·ÝžíCñ¼�Ð}÷=˜… ±|Zk­5Ss”¶Ý‹}ë–[nÍZ,F5“h½xÁ× µ¦µ×^;«.ôÞ{ã²ñÿ»8\QøE$_oÏ<ó§é”SNK<R{ì±Ç³¡©âµþ§?=3;¿Ç»¥ÖÖø|âÄOÛQÞzëíY¸6ZÝÅÿà·¼üò+郦Ժ|áÿ•øÿsøá‡µ»ð‹Ó[o½•vÜqLZb‰%²PÓßþöÏü>Ü5í¿ÿ¾ùuÄu“Ï:ëìôï|;­°Âˆ4yòätýõ7¤?ÿùòÔZâ:?ÿù#ÒÙgZIðÅ_¬™vTÚwß½²ÛýÜs/Ô =EKÅh=��´½–†g ?ÏäÚ{•û¬›VØö«Üg¡¦üiXGþh��4ËQG™nºé¿ùVq�,~ÿ‹_œ™Uµxì±ÿÕ¬Û5rÈ5­—iÒºãCë~tzÖÞ#'B/QU§5ÕÕöªTT'Ê"@sñÅŤ/}éØìö…C=8 åPÆvùÃ.L'žxB눃-]sÐòåzsÌQµZ­³ÎZE¡žh•Þ{î‘N;íä,ptÆ?N_ýêñùj@Qéßÿ¾!ÊÙa‡í² SKœzêÉéÈ#Ê?†qÝ—]ö—l('nç÷¿ÿÝÄâ%JŠ@X¼¦´fÀ¯1UpVk^ð'BCÏ<ó\z饗³¡œ\iîÂ_ä5Å[ŒNçwAÍ~4'Ÿ7onúõ¯› … ƒ9m!^ ÿüçÚûp=³× *KÿþýÓ9çœUŽùç?¯ª·}V9ñ|Þn»m²ö[¹jmmþ‰Vv?ýéOÒ7¿ùí¢öYQQë™gêo%¹ûm·Ý¦hZtã=Jaàé–[nˆºœtÒ‰iÀ€ùñ]vÙ%]qÅ_óã.<ì°#Š.•…æÌ™“fÌh–_`zä‘G‹BÁR* 1êׯoúÁü_�€öŸ‘âóKsÚ ZzéAéØcIÛo¿mËDø§gÏ^Y¥Ÿ–†~â67÷ûŠVÙ•êÔA©ø��tJƒ Ê~5•~râà_´¬ŠÐGs?0ÆAÃßüæ÷µªÝqÄáYû©E-zm¶Íˆ*{íµg~<ªoü×k¶ÁóÓ®¹æ_ÙÁǵ×^«ì:ãW5ÎùÊW¾–¦Lù°ì2ŸûÜeƒOGùù¬Ai+¨�’³îºë¤ /üCÍÀS‹BBå~øaék_ûrj©x~\rÉ…5ÛáGYÛ‘úD˜éç?ÿiQ;ƒNË/¿\z÷Ý÷²ñÄü–Tßio#FŒHcÆì~õ«_— NÄqßý׊æ8p`úÎwNȪŠÔÕo‹-Fe¡sÎùMj+QÕíòËÿZë~F¥£ÂP•#*ÿD™ø=÷Ü=wÞùª‚¿<Ýl³Mjþg}9«buÛmwdÓ¶ ÿ¬·Þºéüó—ílH¯^½²÷(Ç{t­êu1þÿwV¶¯Dû²úD…ÃýÄÿðBGý…ôÔSOÕ<Šë t„˜[+ø~þóŸeï³"¨UŸå–[.û¿¯O��ÐÚFÞ:µ§‡¾?UŠø,ÐÜàÏÍ7ߨ¤å#T_8¨±â6Ó0Á�� ÓжQM£0Øñ÷¿ÿ#?®æ`×iM®Ú¿äƒd¥¡Ÿ 7Ü }ñ‹G¦E-n>ôÐ#ùñ8xxÒIß®uPq§Æ¤ýëÚ4vìÙx=ó̳Òe—]’d-gÅWHþó%éÒK/K>ø`úðòJ@:øàƒ²6XåD;¯Ø\vÙåéÉ'ŸÊ~åØã`e|Ñ¿Ú Ñåï¿"ÝyçÝéÖ[oMo½õNÖŽ¤oß>iÈe³ª%ûî»w«¶2dHúãÏË*ü÷¿7§—_~5½ÿþ¤4oÞü´ä’K¤5ÖX=m³ÍÖY{3%…_Qõ'ü Ñî«’‚?aÇwHÇÍÚE(aöì¹iÙe—©¹o§Ï|f¿4t販¥¢jÉŠ+®˜®¹æÚôÔSOg!ÁîÝ»eûlr"˜pÇw¦¶A­6Ú =þøEÓ£•-þ—œ{î9é½÷ÞK÷Þ{_ö¿}„IÙkvUUuÖJj¥•V¨ù¼aÍËÛeÿ³r¢ThëðOü»ôÒ k¾ô$«Ø·p?ø M:-û’»ñúa¼øT—¨Ò÷ý8`ÿtã7eÿ¯'O~?k—í6WXaáz¢½×’K.Yëòñ?6þ¿E…¿xoíÀfΜ•UùÙl³ÍÒ‘G‘­£µÅÿôoû›i¿ýöÉÚíE¥¡xŒ¦OŸ‘ÝîÕW_-{|¢k®!��Ð~â;¹3f¤J"øÓ8m¥Õ¥‘óº4â´K㹡kÁinèöÉ´n%ÇsçÎ{0��”øè£ÒQG—Æ+n/3dÈ25Ó¿öÞ{¯:Ã.9q€ðæ›oMøÃ‹Ú{…¨òÁ–¨ ÓY\}õ5éì³ûxíµW':§XU²ÝvÛ«ìôÜ/ÑJç74½ÔC=œN?ý§ùñ\pÁù‰Ž)ª¤Üzë§-‘âµ>B‹¤,x«‹°SZù'Äó"Út³}��:ê7}úôZ•¹;ª¨\m ÛRÏž=¶¬9‰ÒÁS?9]P2TrZU0Tœ–©ŽñúNKÏ—j°Å˜Š?��@§¿„ÿÕ¯~™¾õ­Ó„ óÓ'Mz?ýâÿ—þô§ËÒ6Ûl“¶Új‹4|øð´Ì2 ¢FÀ'ÂBñ«ý{ï½7[¾TbÎ9çìNúŠEE¯¨b‘+…ýÖ[oga)‹Ž'BšÏ?ÿ|Ñ´]vÙ¹Ó†~hšº*ÿœ{îo��€ÅFT@¯”àOS«µ/Î��€NoäÈ•²Š'Ÿ|Z¾½UÎĉ“² 714Åzë­›Î:ëL¡èä¢eÎj«­–µÈÊyë­·:ˆhåøÜsÏ¥—Ȫ3¶eëÑ£gÚsÏÝä” ÿôêÕ;��G¥Uàioñã˜ÔÌœ93udqý§ñ��€ÅBTþ9÷Ü_¥K/ýsúë_ÿ–æÍ›—š£gϞ鳟=,kÖ£G,Zk¯½v­*/묳NÙù™^În»íœÞxã´æšk¤Í7ß,m°Á‰Žá?ÿùoºçž{ËÎ;äÓRK-• P„z÷…‹ÿã§vr��XœD¨fîܹùêÆMT^Ví§iº´Âr]Êœ¯ï´K㹡kÁinèöÉ´n%ÇsçÎ{0��4B´ðºüò¿¦[n¹5Íš5«Q—‰›Ñ2æÈ#HÆ KYT?:ûì_çÇ£¥Ùµ×^蜢mT¢¨ØrÈ!‡§éÓgÔš7fÌöé;ßùv§ÿu ÊS���4G„~>úè£ÔÅ8#üÓzöì±eÍIUÍ0õ“Ó%Cõ'§UCuÁiéê¯ï´ô|©úæeTü��;ÇOßÿþIéßøZzðÁ‡ÓãM/¿üJ?~\š6mz¶Ì€ýÓ°aÃÓꫯ–6Ýt“´å–£³–?�t “'–_~ù,Ì9cÆÌÔ¯_¿ì5{·ÝvM[o½e���Ê‹`Í€j¾ –:’¸MíúéLTü��€Å˜Š?P¹Tü�� %¢úŒ3RG?èiï^v–Š?»Þ1���P¯.]û›  #±ï��ÐR´‰ÀÍ¢¶(B?‰à���,ƺvõÕ�T"û.���­!7ÑbkQ‰ëúiÍÑ���`1}Ó,X€Êû.���´†^½z¥nݺ¥éÓ§§ùóç§öŸkû÷ïïóm+ðÓ ���XŒùr*“}��€ÖŸ3—\rÉÔ·oßÔÖâ:âº|¶m¶"���,Æzöì™f̘‘€Êû.���´¶åôîÝ;Íœ93Íž=;µ¦Xo¬_ûêÖ%ø���‹±(ã¿®j¯2Î@ËÅ>û.���´…æD®éÌ™3'šûÝQ|†Vb1ü´ Á���XÌů­¢‡;PbŸ��€¶A>}údCUUUš7o^6,X° ª««³!téÒ%â‡*1ôèÑ#„}Úžà���,æ"D0kÖ¬ì  c‹/O���hoàÉUî¡c­���R¿~ýÐñÙW��€B‚?���@êÙ³§*"ÐÁÅ>û*���@Žà���éß¿êÞ]Wpèˆbߌ}��� à���7pàÀÔ­[·t±Oƾ ���PJð���ÈëÚµkZb‰%Tþ"öÅØ'cß���(å��� H –\rÉÔ»wï,:±ƾ(ô���ÔÅÏ÷���€²ú÷ïŸzöì™f̘‘,X€ö­½úõë—í����õü���êÁƒfÏž óçÏO@Ûˆ¶^QåGµ-��� ±���€åÂQùgîܹY�(†ªªªT]]€¦éÒ¥KÖÂ+Â>1DÀ.*ý����4…à���ÐhLèÓ§O����½® ��������¨8‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*P÷��ÐTUU¥ 䇡ºº:?��@{éÒ¥K~èÚµk6tëÖ-?Ä8��À¢&ø��,2sçÎMóæÍKóçÏÏÂ>��ÐQ†Ï˽WðO÷îÝS=RÏž=��À¢ ø��´«úDà'U|��¨T¹J•sæÌɪEø'†��´Á�� ]Ìž=;;(¢²��MÚã½n Q ¨W¯^©wïÞ �� ­ þ���m*?1TUU%��èì"è>sæÌì=p„€��€¶$ø��´‰øµó¬Y³~��X,Åûà\�¨OŸ>Y ��€Ö&ø��´ªø…s~æÎ›��`q 3f¤yóæe h��ÐZ��€VU~âWÍÕÕÕ ��øTã#üÓ·o_Õ��€V#ø��´Šøs��€ò" ï›çÏŸŸúõë—���ZJð��h‘ÂÖ��@Ã"0ï£#üÓµk×��Ð\>Q���Ͷ`Á‚4mÚ4¡��h¢xï¥ã=5��@s þ���Í’ ý8P��Íã=5��ÐR‚?��@“åPD{�� ùâ=µð��Ð\‚?��@“ĉéÓ§ ý��@+ñ��h.Á�� If̘á×È��ÐÊâ=v¼×��h Á�� Ñâ@ļyó��Ðúâ½¶ð��Ђ?��@£Ì™3'��€¶ã}7��Ђ?��@ƒ¢íÀÌ™3��Ðöâ½·öº��@cþ��� š5kVª®®N��@Û‹÷Þñ�� !‚?��@½¢ÍÀܹs��Ð~â=¸–_��@C��€zù¥1��,Þ‹�� ü��ê4{öìTUU•��€öïÅã=9��@]��€:9È���‹–÷ä��@}��€²Tû�€EOÕ�� >Ý��@sæÌIíí½÷Æ¥x0;6MžüAzÿýÉÙôe–œ^:m¼ñÆi«­¶LË-7<�Àâ"Þ›÷îÝ;��”êÒ Ëu)s¾¾Ó.uŒç†®§¹¡Û'Óº• 1o`œÎ;ïÁ��´Šyóæ¥iÓ¦¥öòæ›o¥K/ýSzøáǵüÆoŽ9樴ꪫ&��X 0 õèÑ#��­£gÏ[ÖœDÙû©Ÿœ.(ª?9­*ª NK‡TÇx}§¥çKÕ7/#ø��Ô2cÆŒv©ø³`Á‚tÁ§ë¯¿!UW7øù¥H×®]Ò¾û;îèÔ­[·��Y¯^½R¿~ý��Ð::Kð§k��(1wîÜÔÖ¦OŸžN9å´tÝuÿnrè'TUU§k¯½>[G¬ ��:³öx��T��€"q@¡­ƒ4Qé';cÇ>UkÞ&›l”¶ÛnÛ´îºë¤Áƒ—ΦMžüAzæ™gÓ½÷Þ—ü‰Z—‰Ö_?ûÙ*ÿa²W_}-k[·úê«¥îÝ»'�€J׿ÿÔ³gÏ��´œV_åç þ��@…k6_çŸAVé§Ð +,ŸN8áYà§>Ï>û\úõ¯“Þyç½¢éûï¿oúÊWŽKí-¶×+¯¼šÞ~ûí4uê´4{öìì`L”1bù´Új«¦%—\2ñ©o¼)7¾f» L|Pj ÿûßãiìØ'³ó«®ºr3f‡´¸ºè¢K³ ÔZk­™¶Ùf«&ÏoO/¿üJºûî{³ó°_Zzé¥�ð)í¾�� õt–àŸ<��EæÏŸŸÚÒ«¯¾šþýïЦm¸áúéG?:µQ1"ô›ßœ“~ò“Ÿ¥'Ÿ|:?ýúëÿvÙeÇ´Ê*«¤öòä“O¥±cÇÖl³ª¢é³gÏɆ¨TôÔSO§uÖY+5*uíªÛr{‰VÎÇOMÑÕWÿ+M™òa:tHÚgŸ½�@CÚú½:��Py|ë ��äUUUem¸ÚÒÅ_Zs=ŸþH!*ý46ô“Õt~øÃSÒˆËå§Å:£rI{yôÑÇj†ÿe¡Ÿ®]»¤W\!µiV1eÓM7ÎÆ»té’Ý®gžy>Ýu×݉öÁðáÃÒ!ˤ­¶Ú2�tñ^=Þ³��䍸��äµuèç½÷Æ¥±cŸ*ší½šÓ® Â?qÙOü^~Z´vŠëXn¹á©-M™2%_mhàÀþi·Ýv-ÛÎkêÔ©éöÛïÌ*ÿ¼öÚiå•ßL#G®”h{L{íµG�èlâ=»J’��@ŽO��@^[xàÁ¢ñM6Ù(kÝÕ\ë­·nÚxã ‹¦=øàC©­½üòËùó;î8¦lè'DødçwÌ*…W^y5�@K´õ{v�� ²¨ø��äµõA„±cÇo·Ý¶©¥¶Ýv›¬Òϧ×ñD:è R[úøãiÙiÝÒ2Ë,Sï² ÈZMÍ™3'õîÝ»ÎåbÛ¿ôÒËéõ×_Ï*ÍŸ??õêÕ+-»ì²iµÕVM+­´bÖ:¬>3gÎL/¾øRz÷ÝwÓ‡~”æÍ›—úôé“–Xb`9rdZsÍ5R·nÝÊ^6Ú¤UWWga¬7Þ(=ÿü ÙíùøãXÏ‚tØag÷¥Ð´iÓj–{¾æúÆeçã> Ð? 6<­µÖiðàÁ©1âv?ýôÓéí·ßMÓ§O«Ù®=³ËF(lĈåSsL˜01ýûß7fçwÜqû´Ê*«¤r÷7Z‚Åý?~BzöÙçÒû￟fÍš•m·å–[.m°Ázu»r&Ožœ^xá¥4nÜ{Ù} QÅjøðáiýõ×Ë`9'NJ×_CÉm”.¼ð’üø¾ð¹Ô³gÏ¢eZòض–Ø.±Þ~û4uêÇY»~ýúæï!C†4¸Ž?þ8[GTæŠÇºk×n5õÒ5õºÙs¼µÄm|õÕWÓ¤I“ÒŒ3k¶M×Ô·o¿4tèдÎ:k¥¥—^ºìåâõãÿ[ø:uÜqGgÛùé§ŸI¯½öZÍí^³žîÙã¹Ê*±Í׬õ8µözrâñî¹ç³ûûZ¼>Äã?tè²5Û~­¬­�‹Á�� à��WUU•ÚÒ¤Iï·¤ÚONTý)¾ŽI©­õè±ð£Tbr!‘ú¬µÖšõÎ ÀÍ7ßš¦Lù°hú¬Y³Ó›o¾• Çͪ Õu](¸ï¾ûÓܹó‹¦Gè!†qã&¤^x1í±Çn©oß¾õÝœtÛmwd×YŸEu¥ú裩Ù×µÞzk§Ñ£G×XŠ ÍþóßšÛ=/?mþüÙéwÞ͆6Ú m¶Ù¦©-=ñÄ“é±Ç/š6}úŒ,øôÚk¯¦vÚ)­°Âˆ²—}ì±ÿemß"DT(·"¬3fÌiå•G¦æjÍǶ¹ÆŸn½õö4gÎÜ¢éS§N¯^ζպ뮶آîÇ;¶Åý÷?Pòœ©Ên Š~-1wîܬ½Þ»ï¾W4}Á‚ªšy×<&g·u‹-F5øúëŠðXá~9þÜšçìälxæ™çÒn»íRgˆ¨µÖûâ]wÝ•½ÞŠÇ>Zưþúëdû�‹‡¶~Ï��TÁ�� ¯­"|ðAq°e饥–Šj!…&Ož’ÚÚˆ#Ò«¯¾ž¿óλ³v^ Uì¨KTŠ 0q?¬¸â iäÈ•²€O‚"¤©FÜrËmiï½÷¬UÙ%2wÞyO>‰ÐŪ«®’Ub³fÍÌnë[o½î¾ûÞ, R—W^y% s,»ì´Æ«gUI¢ºHaµ¢gžy&=ôУÙùž=»gÁ¦Áƒ—É®ûƒ>ÈB(³gÏ©YîùÔµk×4jÔ¨²×¿V¿ãŽ;³e6Üpý¬zRUÕ‚šûó^Ö-îÏO<•UÎYn¹á©-Œ7>FŽ\)­³ÎÚYÅ¢xL^~ù•ôì³Ï×Ü÷ªt×]w§C=8«ÀT(–‰ÛìŸÖ_ý¬RQÜîI“&f•¨"(s÷Ýw×<×—JK,±döœ?à€ý²Ë\sÍuÙiTŽÚgŸ½óëíÑ£Gþ|k>¶ÍÕ“"œîÝ»¦ÕW_= 6,»~8%=÷Ü YP*¶WØrË-j­#ªïÜ{ïýÙùh}·ÆkÔ¬cÙšõõ¨¹íS² YTÈiIÕŸØF7ß|KVA),±Ä€ì¹9hÐÂ׈¨ÌUwâ¹ùÐCdÏ·xž×%‚N±]£šRì QÝ(*ïD+îsì³7Üpc:è ³ Om±ž¨¸uûíwdÛ>öµ¨ŒûBlû>ú({þE¨§Ÿ~®æ¹58«@ç'ø��ü��òJ«–T‚Ú·¹íïC„/^zé¥,Œ-‹þö·dõWYeåF··ÊyðÁ‡³ÿê3fûl…"¸ðÀf�Ek­õÖ[¯h™gžy6Û¨ØcÝkµý‰6W÷Üs_"ŠJ(&ˆJ9ú‰Ê-åÂ!Â>ú¿ìü€ýÒÞ{ïUT¥%*ÛD{«nøOvˆ@Âj«­– ªòš6mFÎ8ðÀÏUª‰ÛŒûî{ Gmü)­–-ÍâqìÞ½{VÍ'Â;¯¾úZ *Û=ôíÛ'í¿ÿ~EÁ ¸ýË/¿|ºöÚëÒ‚Õéõ×ßLm´a¶Î\e—Aƒ–ʶQŒ×Uí¥5ÛæˆpÖ=÷Ü“Oâ~F°¨ð±ŒÒÚk¯nºéæ¬Y„V_}µ¢ý ‚T<ðPv>Â+{î¹GQ‹¼ûDõXGC•¦ê3a„¬‚NîvE ¯0$·üòËe¯«¯þWVè¹çž«7øÏm¶Ùª¨bW<×£¥Y´7‹ÊXQ…)îÛ.»ìÔ&ë‰]®BÒî»ï^t{c¯¸âŠ5ϱë³JF–üX<Tâ{v�� ítM���ŸhëƒQõ¤Ð´¼:Oé:ÚZ„tvÝu—¬zGˆ`ÈSO=“þõ¯ëÓ_þò×tçweN¢ÅO}¢êGJB„OJC?9Ñ>)2!Ú•Š0ÆîŸvÛm×ZÁœ&åäÂåD5’Ñ£GÕ9?®?Ba̘1e[3E�f»í¶IK.90­³ÎZõ¶úÚj«­Ê¶§ŠÄRK- °Œ÷^j+={öH›m¶YÙyÔ‰ÀÍÂÛ0¾ÖüiÓ¦f§b)­–Zj©´ï¾û¤#<"[Ws´æcÛo¾ùfúøãiÙùm·Ý¦l€+ªÏl¿ý¶ùmUúçx®EXlëÂÐONTÌÚa‡O×ÑQ…èóŸ?"í¸ã5ëÚ®Ve¬°ÄKdË…h3WŸh¯WW›¾+E�0DXiÆŒm²žâ…L• )Ŷ6a‡~H›T{ cü�� þ���ym}aÈâþ¹Š)-­{ E••öÜ#Üò™Ï움zõZØêkÖ¬ÙYû¥hÏtùåW¤»îº§æàýÔ²ëxýõ7òÛ<ZøÔ%ZaEÕœ-•¢êN©dDE“ºtëöéÇ¿¸u6lhv}åÄm}ýõ…-Î"„P_µ”w|ðAYå À”-®ê«äQBTC‰vcm!Úˆ• ˆ¤´ð1ÎÉ"¤Uª_¿…¡§ñãÇ•}LBTòin¸œÖzl›ãµ×ÞÈN#xUtêš¡C‡fçß}÷Ý¢y¹*>Ñ&¬0¤T{KæC9ÍYèʱrrwCÛ*·ÏÕeÍ5WÏŸã7Ûd=Ä ±D˜°œhÇW.€@ç%ø��Òê ��h7o¼q;ö©üø=÷Ü›vß}×Ô÷Ýw_Ñøú믛ÚS´Û‰�жÛnU[yï½÷Ò;3&L˜”µè‰ö;¯½öZ5j³Z-º «E°åã?®ózz÷î?m}–\²îvNQi(ZHM›6-MŸ>=M:-»M9ÕÕUu^¶GºC*Q$W¹¥®ê3M•~ê«­¥rbûD›¬ÖV¸]ëž?5Í›7¯Ö¼hOíÈ"”í£¢ÍÙˆ#²@T„1ÚBKÛæ˜2åƒì´gÏ^õ>?CŸ> ·ejâvæO¹ËE«®UNÏ¢}^kˆƒ¢º‹ý%¶×ŒÓÓäÉSòëoh[•kÏÿ4øVß¶iÉz¢RP®ÝW„ _|ñ¥¬½Wì«oÿ���`ñ ø��äÅAä¶üñV[m™.¾øOùñ±cŸÌªþ¬·^óÂ:Ï<óLQ(n´ŽZâºã� ÑÖ)*ļòÊ+é‰'žJsçÎK=ôhêÓ§OZuÕUó—)¬"ó\köìÚ•J¢â̳Ï>—…@¦M›‘ÚÂÌ™³òç[£ÂHG-´ä6D(#‹±cŸÈÚŸE¥§B„––[n¹¬TKCRíñØÖ%÷P[SŸ£¹àϬY Ÿ7}ûökðråÚ¾5EUUUzùåW²öb“&MLóç7?ÕP(,BLÑ*.öïÂ}£5×áž]vÙ9 IF jܸ Ù¶ÿšU8ŠvauUê óü�� þ���ymü‰¶No¼aøÉ9÷Üߦßüæœ&I¢‚ǯýÛ¢im´~½íˆÚS6Ø`ƒ4räÈô¯]—Ôÿßÿ/ þ4w[—¶½Š Ã½÷Þ—UÉYrÉ%²öKöOK-5(«@sã7%ZW„¼V_}µ¬²Ó»ï¾—ÞRš7oAàˆi1Œ¹R3fû«Ý”³¨Ûæ¾,X° ÜÚRC"¸Ó\Qeè?ÿùoRʉ@ÍÒKJ ÌÚ¶E ºäåZõ)JoïÂeê;þÚÒõÄkÚ¡‡œµ|ûí¨&6ᓪJóÓ;ï¼› O>ùTV=mÀ€ €ÎOð��($ø��äµÇA„c=*}íkßÌÞyç½túé?M?úÑ©ÿDè'.ó¶êÚµKúâ¿:šeD5ŽçŸ1M:=«„’«�’«n•;¾ð…#SsDû­\0¤W¯ži‹-F§•VZ1_m%'¶YK¶ÞŠ6S,Ô¯_¿´á†dC„¹¦L™RóÜ|7=ûìó5ÏÌôÆo¦Ç{,=ºIëmÏǶ.ñ˜G•¡W\!íºëΩ9¢ÒÕôé3õœ)¬‚ÕT>úX>ô³òÊ+e¡¬¥—^ºÖr¯½Öpè'ÄcWßkÒœ9sò…â>¶åzzôè‘UŠ!D ³ñã'dmÀ&Mz?kgvûíw¦ý÷ß7Ðù þ���…Ô��òÚ£UÌ*«¬’öÛ¯øàôSO=“¾ñoe­»Ë|ó›ßNO?ýlÑôÑ£7ÏoK“'OΪ«ÄÝ›ª°¢É AKf§Q¹#Ú95GT™É…¨¶Ýv›¬úLi0$D5”–Š€KP¸qã\¾1•N:›8a“¨ötàŸI}ú, y½òÊk©©Úó±­KT “&Mjv…ª¥–Z*;PNiµªRQͦ¹¢N4h©´ÓN;– ý„Æn¯ñãëŽÇ㓳ä’K¶ùz E 0^ïöÝwï´üòËeÓbû6÷u€Ê¢½#��PÈ'�� ¯½"DÕŸhùU(ª÷œxâ÷Ó÷¿r֮筷ÞΪÄçcZÌ‹e +ýä<üð£éöÛïHm-*wDè%†gžy¶ÁÖDóæÍË*¾„¨ì“«òV^yåüùgžy®ÞõDx ¶Cih!ÖŸ³ÔRu‡Þ|ó­ÔRjÉÝæ‰'eC]¢êÍe—]ž=n Uš¨Ò­—|ð¡¬2O9½zõʇOÊ…Mr¿Ö¯+OÓžm]VYeáã­¥^½þJ9¯½öZV…¦4ðUŠÂ‚Uéù矯óò|ðAÍå'¦æÊmãh…Vß2ãÆ½—ã…^¨7¼ûNî>¶æzâ2 Šï½7®ìeã94|ø°üøœ9m ãü�� ù„���äuëÖ-µ‡¸žÓN;9m²ÉFµæûTúÍo~ŸŽ=ö+i¿ýʆ8Ób^]¢2ÊÙgÿºÍÃ?Ѧ+Ú…h¯sÇwÕYA$ÚñDð%Ba­µÖ,š!¢UW]¬ˆêAÏ=÷|ë¹õÖÛÓ-·Ü–þþ÷…–XâÓCQʉÐÀ“OÖ½íšb½õÖ©yü~”¼ë®»Ê¶oŠPÌ]wÝ“µ/ŠÐO®JPgÁ¦h­í¼}ôe—ùðÃÓĉ +ØäªÞêÙ³GvZW ¬Özl»u[0š;wN“ç¹R8pa›ªûî{ Î°W„Ûî¸ãîtà ÿɶK¡å*Eˆ%ÂA¥¢^<gš[U(äªåÄúã9X*ª ÝyçÝY…­ÆˆgqŸËݦÇû_Öb+Œ¹RV «µ×Ëßzë­5¯{Of³r¯3{õÕ…Õ¤¢Ýa}¡'�:özÏ��T†î ��àíy!pÿô§§§‹.º4]wÝõù–F¹·Ür‹ôÐCg•DB.ü¢ÕO[5jó,�1cÆÌ,ððî»ï¤VX!«îÒ½{÷,tóß{ïÓVMÑ~h£j¶ÚjË4aÂÄ4}úŒôÀeUUFŽ™µò‰õLžü~ ŠMØl³M‹§å–ž è—… þ÷¿±YØ$ª†ôîÝ'«–ôÎ;ï¤×^{# |øaËÛ�E¸bóÍ7«ÙS§§«¯¾&­¹æiðàÁYõ‘>˜’ÝÞ\å‘ 7\¿Î–K•lèСiÙe‡dσW^yµæñ›–V[mµüãŸ_|)Í›·0¤µÑFÖZDzË.›U¸‰çѽ÷ÞŸ=n¾‰ªJñKþÖzl ˜ÍçwÓ«¯¾šzôè™V\q…FÍçó;ìn¸áÆšÛ6/;9r¥4bĈ,ÕŽâyþúëo~²|×´é¦]´'‹çy‚âyüŸÿÜ”m«aÆfëÕóÏ¿=gÖYg­ôÜs/¤æˆçaìw´»æšk³u ´tV•+®ã¥—^Êž³±½"´×ÕV[5½üò+Y{¿h«5`À€l»Ç6š0aÒ'÷­GÍ}Û¢MÖÛfuÖÉZ!Æãó¯]›Ö^{­¬ýZ„‚>üpáv‹çGˆyQe €ÎOð��($ø��äµ÷A„¸¾/ùØ´óÎ;¦K.ùSnhH„K6ÚhƒtÔQ_H«¯¾Zºûî{ÓYgý_»†âÀýÞ{ïYsÝ÷dî#ÜŒʉ°Æ6Ûl• JÅúýöÛ'«è¡…‚”kwA§Q£6«U5("»ì²sVYhöì9eoÇK HcÆlŸ®¹æºÔÖ[oÝì±[X…d~zúéòmÊ¢¢Ó&›lœ:£xî´Ó˜ôßÿÞ’¦Lù°ÞÇmôèQYX¦TlÇ Eð'BB1„¨ô³Ì2Ë´ÚcÏ™|8 îÜyç=Ù´ƒ> _!§¡ùpÚk¯=Óm·Ýž…jêz®÷îÝ+ÛçʽV^ydÚn»mÒ}÷ÝŸí£/½ôr6Úb‹ÍkîÏ’-þÄvŒ Ý#Ô®Ä4jÔ¦Ù¼Æ6ß|Óšû;+k·A·Rýû÷K»ï¾kQû¾Ö^Ϧ›n’…«^}õõ,´ôðÕ½ŽUW]%{ž°xü�� þ���y4ˆ …­¤ÚC´:óÌ3Òøñã³�ÂØ±Odð£BF„"ÜF¢ÍÔV[mUs~ùüe·ß~Ûì´½Ã?QÙeŸ}öΪ¤DÕŸ &d÷£õN„yâ þðáCÓÊ+¯’'êËî»ïÞé­·ÞÎÂ}ôaNˆ–ZýûHË-7,«ü×YN->øÀôôÓÏdëˆê3Q$*¹Dàbýõ×kõÇ4ª‹,¿üré…^¨Ùïe×Û?B Æ ¯™¿fV¨3‹ªUŸùÌ~Y5—hÅõÁdÕ~¢RK´q1b¹´ÖZkÕù¸õéÓ' }Eà-ª÷D»«=zd}Bk<¶ë¬³vv™¨Ä4mÚ´làK.ØÓÐü0tè²éÐCþä¾FeZö|Û»ÔRKf¯â9Q.Ü–Õnb=Ï>û\Ö¢,îK׮ݲçɬŸí×o¿ýNj‰m·Ý: ÚÅ}™4iRöxÄmŠêJ믿nÍssXz൮wí¶Û.5·÷ÙšûýjÍ}þ¸fÛtÏÏUV™=¶qÿÛr=ñXŒ³CͶ[#«XÕÁb»G ,^7†– £z�‹‡øßïÙ��rº´Âr]Êœ¯ï´K㹡kÁinèöÉ´n%CÌ‹oP»Î;¯qßÜ��õŠêq°¼Ò”Vþ qpü”S~UÛhH„s•ÇŽ8â°«ù´õz� TÌ#| ��´\Ïž=¶¬9‰/”§~rº d¨þä´ª`¨.8-Rãõ–ž/Uß¼ŒŸ���ESÁ¢#ŠÊ?ßûÞIY•œœ¨üó‡?\�� 3¨Ô÷ê��@Ûü��ŠD[œhMS‰Ê…z÷î•�� ÒÅ{ôúÚj��‹§î �� DP¨Äv_!Â?½{÷LçŸAö‹èOüV�€J'ô��”#ø��ÔRÉÁŸ0zôèl��€ÎBð��(G«/�� –¨”Ó­[·��,zñÞ<Þ£��”êÒ Ëu)s¾¾Ó.uŒç†®§¹¡Û'Óº• 1o`œÎ;ïÁ��´šÙ³g§™3g&��`ÑêÛ·oêÝ»w��ZOÏž=¶¬9©ª¦~rº d¨þä´ª`¨.8-Rãõ–ž/Uß¼ŒŠ?��@Yq`¡kW��`QŠ÷äB?��@]|‹��ÔÉ��X´¼'��ê#ø��ÔIÕ��XtTû��â|�� ^}úôI��@ûó^��hˆà��P¯^½z¥ž={&�� ýÄ{ðx/��PÁ�� AñKã.]º$�� íÅ{oÕ~��€Æü��Ô­[·Ô·oß��´½xïïÁ��"ø��4J´Ðj���Ú–÷Ý��@Sþ���Ö¯_¿Ô£G��´¾x¯ï¹��Kð��h’8¡í���´®x-ô��4•à��Ð$]»vMýû÷ÏN�€–ó��h.Ÿ"��€&‹_#0À ��h¡xOï­UÕ��šÃ·ô��@³äÂ?P��@óxO ��´”à��Ðl¹=zôH��@ãÅ{h¡�� ¥��€ɵ&èÕ«W��ïµÎ��ZC÷��Ð úõë—ºwïžfΜ™ª««��P¬K—.©oß¾Bó��@«ü��ZMÀˆðϬY³Òܹs��°PÏž=SŸ>}´ö��Z•à��Ъâ@FÿþýÓœ9s²�PUUU�€ÅU´óŠÀ*?��@[ü��ÚD؈aöìÙÙ ��Àâ$?½{÷Î��€¶"ø��´©ÜÁŽÿD  $��謢fà~��€ö ø��´‹\�hÞ¼yiîܹÙP]]�� ÒuéÒ%õìÙ3zôè‘���Ú‹à��Юâ@H ýúõËÂ?š?¾J@��T”¨ìÓ½{÷ì½m~���Á��`‘Éý*:TUUeáŸÜã1DU Ü���í%ªøä†®]»fC„}rCŒ��,j‚?��@‡;˜¢5�����4ŽŸ$��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������¨{�������€ Ô¥Kö÷“Ó”ª«³¿Ÿœv~‚?��������Tœ.]> ü|:-û›¯^ Ò?‚?��������T”øäB?“&MN~øav~©¥–JC† .©�Ôy þ��������Pa&{"ô3yòäüÔÜùÿ,\¦s'º&��������¨ ¹Š>¹J?…rÓJÛ€uF*þ��������P‘,XШi•Š?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T Á��������¨@‚?��������P��������  þ��������@ü�������€ $ø��������Hð��������*à��������T î �`˜6mZÚyçÝëœß¥K—Ô§OŸ4xðà´Új«¤-·Ü"³C6O½þúéðÃ?W4íÚk¯JÆ K•nŸ}öO“&½ŸÿÞ÷¾“öß¿�����ÀB*þ��Ruuuš9sfzûí·ÓwÜ•Î8ã̴゚IÿüçU©ªª*�����ÀâNð�¨S§NKçœó›ôƒœ’æÎ›������`q&ø�t(£Gož o¼QZqÅSÏž=k-sÏ=÷¥3ÎøY�����€ÅY÷�ÐAœ}öYië­·*š6}úôtûíw¤óÎûCš6mz~úm·Ý‘¶ÝvÛ´óÎ;&������X þ��ZÿþýÓ~ûí›FÚ<}ñ‹Ç¤>ú8?ï /N;í4&uéÒ¥ìeß|ó­týõ7¤±cŸH“&ML3gÎJƒN+¬°|Úm·ÝÒ;lW«¢ÐÉ'Ÿšî¼óîüøª«®š®¸âϵֽÿþ¦ñã'äÇþóŸÖ¬oû¢e®¼òoé·¿=/?·ó?ÿ¹> 4(]}õ5é쳟·ë®;§ÓOÿQš8qbºôÒËÒ#<’&Oþ -±ÄÀ´æšk¤ƒ:0=*µÔ”)SÒÿ{sV5i„ Ùö\rÉ%ÒСCÓöÛo›vß}·´ÔRK5¸ž‡~$ÝvÛíéé§ŸM|ðAÖz-ֳꪫdá­=÷Ü#õéÓ§ÞuÄãrÕUW§^x±fSj¶ËRi«­¶JGý…´ôÒK§ÆzõÕ×Ò7Þ”|lzÿýIiúô©oß>5÷iXV9ê€öK#FŒH������à�P† –¾ùÍo¤ÓO?#?íwÞIO?ýLÚ`ƒõ‹–]°`AúÝïÎOÿû?j­ç½÷Þˆ‡z$]pÁðô‹_ü,­¾újùù<) þ¼þúëiÚ´iiÀ€ùiø) ý„'Ÿ|ºVðç©§ž._k­µ²ÐO9óçÏOï¾ûn:öØ/§?ü(?=1<ðP6|á ŸO_þòq©¹þûß[ÒYgý_š={vÑôI“Þφؖ]tiúÁ¾—vÙe§²ëˆÏi§ý8 픊 R ?ühúóŸ/OgžùÓ´þúëÕZ®ªª* D•>>'NJÿú×µéþûï¯ylÎO ©®®Nçžû»ôÏ^•/4uê´lxùå—³ùÇsT:ê¨/$�����€Î¤k�¨Qݧ_¿¾EÓyäÑZËEÕžr¡ŸRãÆKÇó¥¬âLΖ[ŽN]»~ú)B*Ï<ólÑåÊ…^ž|ò©ZÓ"HShë­·Lu™7o^:餅~JE˜æLÍÛ#BS¥¡ŸR³fÍJ?ü᳊D¥â²Çÿ­²÷¿T€N8áÄl—ºøâKë}|"„túé?Í\õ‰õüãÿ¬ú)aT‡*wŸ������*™à�P1zôè‘6ÚhâiQ‘§P„;¢U¡•VZ)pÂñé´ÓNIûì³wêÖ­[~^´¨Š 6x Ñæjíµ×*º|iåžrÁ—W^y%͘1#?þöÛo× ñD ¬ºÜ{ïýé7ÞH›o¾i:é¤o§o|ãkiÝuשµÜ•Wþ=5ÕË/¿’Î;ïEÓ¢…XTÀùÑNK_üâ‘iàÀEó£"O´Ð*ô\U´½ãñˆ*Düãyé²Ë.M'žxBêÛ÷Ó`ÖÌ™3Óå—ÿµho½õvͲ)š-ÐvÜq‡ô­o}#}ôÓСËfAª¨vT—xÜþú׿MÛl³MÒŸþtqºýö›ÓßþvEÚ}÷]‹æ_tÑ%Ye%�����€ÎB«/� ¢,½ôà¢ñ¨,“•].¿üŠ¢ù묳N:ÿüߦ^½zeã{î¹{5jótÊ)§å—‰[wÜqgÚk¯=³ñ­¶Ú2=ûìsùù¥Õ|Ê⺣ÂÏ[Œ.{™!C–)j)VÎÁ”¾ýíoæÇ=ôt ßN>ú¿ü´'žx2 ½ôìÙ35ÖWü5«(”!ŸK.¹0-¿üòùi{ì±[:ê¨cÓ´iÓ³ñ¸Ž+¯ü[úáOÍ/¨/}éØôÖ[o¥7ß|;rÈAEáš5ÖX=k¯›œÒmuÓMÿ­UÉçä“¿—öÞ{¯üøa‡’¾ò•ã³0U]Þ{o\­êEßýîwÒˆ#²óýû÷ÏBM!*8¹RZyå•³Ç ����� ³Pñ�¨(W¦™3gnþ|„b¢MT¡ãÿj>ô“ÕeJ+Ý|ó­ùó¥•y¢Xa„ Óøñãóó"X”Söyê©â6_[nYw›¯á”cŽùb­i‡vhÑ´®|ðÁ©±¢’Qi¤†~Bf"xTèî»ï­Ù¾sòã›m¶iVèÇ?þaúóŸ/®UQ'ôî]¼­?úèâñ¨lT(ª†~B„v¢âQ}zô¨_¿þú‹N!Â?Qééˆ#>[ólѤÀ�����@G§â�PQ¦OŸ^4^4yõÕW‹æõë×7­¿þze׳ÕV[dA¡œ×^û´­Õj«­šUèÉ…ˆ"ôóÒK/§õÖ[·è2Æ KÛm·Mzî¹…Õ [‚EõŸÒë«ÏÒKJ¬5}ùå—«5mÖ¬Ù©±Þ}÷½¢ðNˆ�L9xºä’?åÇ£U׸qã³j9¥"€4nܸôúëodA¨‰߯9ÿZzì±Çk-W¨04•»Îr6Ùdã¬mX܆r"¸´âŠ+fÕ‡r¢²Ñ¿þumZwݵÓꫯ‘U Šóñ8�����tF‚?�@EùàƒÉEãƒ/?ÿþûÅ•p† Y6«šSÎСÅa>ú8«Ó£Gl<*ô\wÝõùùÏ>ûlü) ÷l¸áúÙ´œçŸ!ÍŸ?? «¼óÎ;ùéQe&ªåÔ§{÷îMšÞXï¿ÿ~­iË.;¤ì²å¦ÇåGŽ\)?>~ü„tÕUפo¼1këÕ±]JÛs-»ì²e—Çm饗®3ø~üãÓÒ7¿ù­¢ÛËGk´Âöh#GŽL‡zPÚgŸ½S—.]�����@g¡Õ�P1"TSXq'¬¼òÊùóÕÕÕ©¹â²…—/­ÐóÌ3Ïf§ÅÁŸ Ò:ë¬o•« ôì³Ï]vÓM7N½{÷N‹BK¶Iéåã¾ö³ŸOW^ù·Z¡ŸÔ ><«ÔÓZºík­µfºâŠËÒ|&-±ÄÀ:—{ã7ÒÏþËtê©?lñö������èHTü�*Æ]wÝ“¦OŸQ4móÍ7ËŸ_f™¥‹æMš41k5U®êÏ„ Å-§–\r‰|€'·Þ^½zåÛd=÷ÜóiêÔ©éÍ7ßÌ/!—¸LTýyüñ±Ù´gžy¦Öm¬«U{2¤vŸ &¦¥–Zªìôº.ÛñôÓZTgĈéàƒHn¸aZn¹áYk®;ï¼;¿-JÅü@Vý‰vaåDÈkòäÉ©!qûN:éÛéÄOHo¼ñfzá…ÒóÏ¿˜µ^yå•¢eï¸ã®´Ûn¤m¶Ù:�����t*þ��aüøñéœs~]4-‚'믿^~|µÕV+š?cÆÌ¢ =…î»ï¢ñUW]µh<B?›l²Q~|âÄIÙerc† ––_~ùìüèÑ›ç—{úégÒ‹/¾X´®h¶¨,¿ürÙ})ôÀ–]ö¾ûî/ Îðá [¢½þúE!ð\rÉé ƒ¬Ùî«fˆ™3g¤ú,·Ür%×ù@Ùå}ô±ZmÁê2iÒ¤ôÑG¥UVY9íµ×žé»ß=1ýå/J^ø‡¢0W;öÉ�����ÐYþ��ÚôéÓÓu×]ŸŽ<ò¨ôá‡Í;î¸c²S9m´a2d™¢e~ûÛóòU{rn»íŽZ ÝvÛ¥Öu—Vê¹öÚëòç·ÚêÓ0Ï[|Ú,*½òÊ«ùñ ºlj+…÷?gîÜyùó}úôIÛm·MÑüþóªôÎ;ïM‹ñ«®ººhÚöÛo› Eµ£Býû÷K·×ŠPÔM7Ýœê³Í6ÅÛ4BR×\ó¯¢iq]¿ûÝùõ®ç–[nKÇó¥´ãŽ»¤}öùL:ýô3jµñŠPØàÁƒ‹¦õë×7�����tZ}�Æw¾ó½|õœ¯L™òazï½÷Ò¼yój-»óÎ;fC¡héõùÏ‘Î>ûÓÊ@ÑúéÈ#N{ï½GTyê©gÒÿ[N‰Ê=;î8¦Öu,¬Ôó«üø³Ï>W0otþüª«®’Ž&Mz?« Thë­Û¶ÚOTÞ)uÑE§m·Ý6mºéÆiРAéˆ#>›µàŠöYaêÔiYhfÿý÷K#F,ŸÞ~û,ÔTØ¢,*å~øaùñe—-n6yòé׿þmúìgMK/½tzóÍ·ÒÅ_’ÆŽ}"Õg=vKW\qeþ¶„x¼¢ÂϬŸ>þxjºé¦ÿ¦÷߯¿Í× AK=<òX:ùäS³ D´Šçοþum­Vb�����è,�€åá‡mp™¨`sÚi§”wàd!’{ïý´mÕ›o¾Yg™¸œqƳÊ8¥"@²Ê*«¤×^{­húÂ6`M=ztú÷¿o¨µŽÂÊ@m!nc„`"è’sûíwfCl£=÷Ü=­¾újéë_ÿJ:÷Üßå—‰€ÍŸÿ|yëýÆ7¾–šr¢E×Úk¯žþùü´üãŸÙP(Ú¯•V*´Â +¤#ü\ºä’?å§E¥ž{î¹/r¢mÛÌ™3³àW9›m¶iö<(¼Ì]wÝ“ u‰ F¥�����@%Óê �¨HßùηÒÏþ³,°S—3Ïüi:ôÐC\ßðáÃÓÅ_ÖZkÍ:—)W±gã7Ì·ÀÊÙb‹Qµ–[rÉ%Ò:ë¬ÚR´úúÒ—Ž-;¯°"Nlýè´²‚ E�êôÓ”¨JýèG§f!£ºÄöüÉO~”rôÑ_¬÷ñYj©%³õôí[[®ŸüäÇi×]wN ‰m´çž{¤3Î8=�����t&*þ��R„5"„²Ì2ˤÕW_5«¨³ãŽ;4\ Ý»wO'œp|Úwß½Óõ×ßµŸš4ibš9sV<xpZqÅi×]wMcÆl_o€(l½õVé²ËþR4­\ŸÍ7ß,»ÞÂV[n¹EÖ~¬­í»ï>YK¯«®º:½øâKYË®úg•t í¾û®iԨͲVZQ)gâĉéÃ?Ê‚6C‡Í*èì±Çî5ãåÃ=+®¸BúÛß®HW^ù÷tß}¤ñãǧ dŸ¸ìG^sÝÓ¼½±Mâñ‰ËüóŸW¥^x1}ðÁ”ìvl±Åé裿† Òàz"|!¥ƒ>(ÝxãMé©§žNï¿?){œãþ²lÚxã²öbQõ����� ³éÒ Ëu)s¾¾Ó.uŒç†®§¹¡Û'Óº• 1o`œÎ;ïÁ�������@§×µëÂèÉóÏ¿XvþÚk/ìøPUU]v~Ïž=â—ÞU5ÃÔON” ÕŸœV Õ§¥Cªc¼¾ÓÒó¥ê›—Ñê ��������*à������ÿÏÞ]ÀÉUŸûÿÎ̺&›dã„—$Ü¥PœRªÐRê¥÷ë½µ[»ÐB[(´´¥w !žwÙ¬»ü÷9é™ÌNFwg5Ÿ÷ëu8:gÎHBö·ßó<���‚þ�������������CÁ������������`"ø������������ A������������€!ˆà������������0ü������������† ‚?������������ÀDð������������‚þ�������������CÁ������������`"ø������������ A������������€!ˆà������������0ü������������† ‚?������������ÀDð������������‚þ�������������CÁ������������`Ê��À …������ô5Ç#��€¡€à��4ö������`0H6NE0�� ��À€!è�����€¡(z\‹ ��(��@¿J7ìC8������)•POä! ��Пþ��€~/À“J°‡ð������‚…xÒmûåO���ô‚?�� OÅI4X ������ ±Æ±¼^oÜc"Ã>€��@ ø��úD*[µ-Õó%Ú������¤"^0'Þöè×ì8÷ØXa@�� /ü��—(ôãŒØz pÖm9r{äq������À`àVúq<¶nË6÷ù|ݶÛW¬`„��@¦ü��“,ðc“…}ü~x{ä<òññ–S}^������ ™dAœX•{Üíîkî16ÏÊÊrB@þ‰ Ežƒ���È‚?�� #âµì² úXàÇ&w» €äææ(;;»kÄC< x������`HØ[ÁÚ¦€:;;ÕÞÞáŒ}utt8c\6öe“†��™@ð��ôJ¼*?nuø°¹±ÁŒ¢¢Båää„<������€¡fo¸Ç&¯sc[AA3fÁŸææçF8w²ýn ªÿ��€L#ø��z,V•à°¹~l²u»³©¸¸Èä�������†# öäåå9“‹566…oгq1›,ä+�Dø��ôÁ��¶Xw² O{{»s7“­—––v vä ������8PXȧ¬l¤ÚÚÚU__®Ž›»wœÌ‚>îd¨þ��zŠà��HKdèÇ]v«üØà……~lnw6Y•Zz�����à@e7ÄåäŒvªÿ´µµ9ãhþ±Ö_nõ�"ü��ÒAð��¤,:ô9YÙb ýØrQQ¡ ������è,ÜSZZ¢¬,ŸšššÕÚÚꄬ*Ü á��Ð��@R‰Z{E†~l ÂZ{åçç ������À>v£œ×ësZÙXš±ðO$Z�€tü�� % ýøý~uttú������’pÇÎ,üccjìÉÊêþëºÈ°Õ��HÎZhý¶(¼��ˆ#YèÇþe6/.."ô������$ach6–9¶=î)z��ìåþ/räÈ‘ûís·ÿ¥â��ˆ)YèÇ*üX‹/«ø“““ã”*������œ¥µ·w8Á¯×ëTõ±y$*ÿ��Œý.Ë£òòÑÎZmm­3·Ð»mï1ÃÁ��’èÐ݉dÁ[1¢T�������Rgcj»wW8cln;’ÈðA��sïa·ÿeZÐg_Øgßþ¡â­¾��À~¢«ýX¸'rŸMnâ²²‘ûÝ������ 1S³±5·åWt›¯È19CË/��ö·ïÆõÈmŠÙ>s¸¢â��HIdÅkïeSVV–òòò������ }6¶fclîx[vvvø—”Tü� 5{ÿ×: ªûÄÂíù�� ¡XÕ~¬ü°Íiñ������ôޱE޹%ªú��à��HÊlÁæVzØ&ë;ž““#�������=gcl6ֿ޻EŽÅ��$Cð��Ä«¸•¶yII±�������ôžµE޽E¢ê��H„à��HÊ-1ì>XŸÔÜÜ\������è½½cmû‚?Ñ-¿���â!ø��br"ìî"›|¾,y½ü3������Èk³17wüÍDŽË��ñð;��Sô`‚­[qSPP �������™ã޹Ù\¬±9��€Xþ��€„Ü;‹ìN£½Ákó•#�������™³wÌmïÍw6G»/��Š,��D‰Pˆ^Còù|BïõtàÆãñ������Ë¹ÙØ[¢±9Æ…��@4‚?�� ®è`ŠÛ_ÜzŽ£g2q—Vô9ð�����úÜ17w ÎEà��$Bð��ÄåL¢Ë 3о¾,ËÌg�����0ôEŽë¸ãq¶à��H„à��HÊ –¸½Å‘ºþ~¿Üçc0�����`è±±·âãp�� ��@lHÇ@Î������ªƒ��©#ø��ÐËY€���������†/¯���¢Ä ­PZ8u™z¯2ùžóù����� ŒÏ�€TQñ��$Ä€Bzzò~%zL¢}éVñ¡ú�����ÀÐbã9Œå��€Dþ���dHº¡ŸÞ†ª"ŸÎ�F���������í¾���@¦+)ÙùÒ9'•œ���������†>*þ���d@ªAšèã‚Á :;;œe·ÏçSVV–3¥[ÍǤòZ�������� m���úItè§½½]1óûýÎd¡œÜÜÜ>�þ��������zþ���ôR*Õ~¢illTSS“:+×É»öQùv/”¯a‹ÔÙ¬PN©#“ò¹ ~µr‹ËTZZª¼¼¼ýΛ,°“j¨‡ð��������ÀÐCð��ÄTIµ•Õ&ÝÐ-WWW«¶ºRù‹£¼5Ê t;ÞÓ^+ïî…Êîš‚+îQˬo«iÒ™5j”�Š èDž;^p'Õê?„������‡XcsŒÛ��€Xþ��€„üÄדJ?555j¨­QáË_Töî7’>ÞÛZ©¢9_RÛ1UÕqŸtÚƒ=Z>Ÿ/îs% �¥þItŽ¡äßÿ~D?þñOãî·×XRRìªN:éD]zé%:î¸éq¿ÿþ¿é׿þ³ü¼O·ÝöE 'ßÿþôØcO8Ë·ßþM]}õ•�����‹±9�� Á��€èIèÇZ{µ·w({Å=)…~"Τ¼•VVÕ25ñCµµµiìØ±1[E>o¬ðÕö±×X_ßàL7nÒ¿þõo]yååúæ7¿¦ììl�������� v���Òê]V±ŽknnvÂ49kROdU¼¥âgnTó?Òÿ N¥š’’y½Þ„×/�t …¬²Ï1ÇÝm›½¾††F­_¿AζÇÒyÍßùη��������0Øü��HA:e•ckÛ‚Á®íNû®žrZ½t«ÚŽÿœ*ü X±�þI'ä“JõŸáÒúëÐCÕoû«˜û¬ÓÿþïoÂm®lþÁ¾_‡2M���������ƒ™W���Ø^"§t—p¿/_~ožzà (ñ¯T8÷ëj¨Ü©;w†+ÖÄ»ÞD¯£'mˆ“¢¢"}ûÛßÐÑGÞöâ‹/ ��������`°£â��8 õE%Y°&??OMÚS|ŠªU½•³ýeùž]§æ³þGÛ;ŽÐ˜1cT\\Üí9£+õ$ªþs µþŠf“Î=÷l­ZµÚYß¹s—z£¥¥E=ô°æÌyU›6mRkk›JKKœpÑ…^ K.¹HYY±ÿ)n×ð¡}ÌY>ÿüsõÓŸþXµµµúç?ÿåœÏ®-+˧)S¦èÒK/ѵ×^÷\.¿ß¯'žxJÏ<óœÖ­[§¶¶v••Ôi§ª[nù˜ÆŽ«t,Y²T?ü¨3¯¬¬Rvv¶&L¯SN9Yïyϵ:è Éq{ÖYçw½­]ò5wîlíÚµ[÷Þ{ŸæÏ]{tðÁSôàƒ��������$Gð�� {}]­&Ñù#÷Y(§½½]Ç\«­UÒ±]½åkÚ®’>®æ™_UEðJ§òÏÈ‘#í¿b…u…‚bmO÷˜¡Ê}ÏL^^Ï«2Ypç¶Û¾æb"UW×hîÜyÎdA—ÿùŸiÚ´© Ïeï÷š5kõ™Ï|^uuõÝö-_¾Â™ž{îýö·ÿ«‚‚‚˜ç¨©©Ñ—¿ü5­X±²Ûv Ù<úèãzé¥ÙºóÎß)@@?ÿùÿê_ÿúw·íZ¿~ƒ3ýãêcû°>ñ‰›»½§±Øñ·Þú™ý^��������H Á��0,õGkª¤m½¢ö[bôèÑ7åP-ìü¼NØó'j]£^ó·©pÁ÷•µg©jNúŠSMÅ*¸X–Èë úO|özfÏž^Ÿ1ã8õÄÒ¥ËôéOÞ x™ââ"Íœy’ÆÚ½{·Þ|s‘’Ù´i³>ùÉOëÞ{ÿ¤‰'Ä=_[[›¾úÕo¨¡¡Qgu†Ž:êH§zÏ‚ ÃÕ‰ì9ñ‹_é;ßùVÌÇß|ó­Úºu[xÛ”)é°ÃuBbvŽªªj}íkßtÎŒ÷Ê+sÃëVÁèÐCq^ÓÊ•«œç ƒúãïqª }ñ‹Ÿ‹{. }ï{?tB?V}脎Waa¡S ��������¤†à��6ú#ì“êóÄ:Æ ËX;¤¦¦&½åûŒ«yRÓêžW&än|\¾šwÔ|ÖO´­£Cååå***Úïš";„ö†c~ö³_†ƒ4Gy„.ºè¥ËÎóßÿýýpèÇZpYð%²Ïž={ô•¯|Ãy®ÚÚ:ýð‡?Öwü6î9_ý •”ëϾKÇ{Lxû§?}«~ó›ÿÓ}÷ýÕY·6^ŸùÌ­*++ëöø;ï¼+úÉÉÉ麾ïèâ‹/ ï·ÀÎ=÷üEwÝõ§¤íͬµ—ú± ÎO~òCxâ áýö}xä‘Ǻ¶ÿÌ ÿüõ¯è¼óΉ¢rƒGŸøÄÇõñT>ŸO�������� =��À7­¼R=6r»Uâ9ï¼s5þëz't¥s&hzåßä uª·²êÖªäÙ›Ô<ëví^¨‘#Û0H¢°ÏÐúkÇŽúíoïè¶ÍÂ)Äyã…áVS矮n¿ý›ájIé°Ð˶m{Û·{îÙúÖ·¾¾ß1ÆúÍo~©k®¹^MZ¸ð-'üb•sâùÊW¾Ü-ôãúÔ§>¡Ù³_Ööí;œ×b!¡w¿ûÒðþ–––n-¹¾ýíot ý{֒˪þX°'«ÎsÇ¿w–­rÕ¯~õ‹ý®Ù¾vª¨¨ÐŸþt¯³ÍBEvl<W^y¹óü�������� gþ��€!-S¡ŸLœ'•ÐËgŸ}–V¬X©eˤ–¬Q:¡âÊ Ô«·<Í*zí[j;|‰jOø‚SÆ'YYYÝ®é@jýUQ±GùËýq÷[˜åÖ[oÑõ×_§ââbõijÏî«Üdyâ1b„®¾ú*ÝÿßœõyóæÇ þäååé ϹϾC'Ÿ<Ó þk%éÕW_sªêkïuÙeïR<ŸüäÍzôÑÇ�Q,‘á(«â“(¨tÓM7èÞ{ïwÂBÖÚÌ®Áª Åòž÷\+��������Ðs^�� Q½ ëØc#§Lœ'ÞþxÛ,(3}ú±N�¨©è0ÍŸø5ÕåNQf„”·öŸ*šýiµVmÑöíÛ 0±®=z[̳õ°½ÙPa—;îøƒ.¿üj=öØJWkk«V®\å,——Ñ´iSòÉ'…—W¯~'îqv®x¡3aÂøðr}}C·}îõ˜3Î8=a0kÔ¨Q Ã<àqvÚ©JÄÚËY»4c¡³M›6Ç=vâÄ ��������=GÅ��0äô4`ÒŸÕÒ ÐLš4Ñ©êòÚkó´Àû%[õMjZ LÈ®\¢ÒgoTÓiß×®À,§íWii©Sá&òšRmý5T+ÿœxâ ºë®;öÛÞÔÔ¤µk×éþ¡9s^Uss‹¾ÿý9Õ‘"Ûf%SYY^Þ³§R3gž–òcÝJ:±XÅŸD¢«8EªªÚwMœ<P6yò$§U,ÖÍõƒüØ™RUWWw_ä÷��������¤‘v��0ìe²ªO¦C?î6 ä\|ñE;a¢–޾AËG½_Aù” ž¶Z¿òå.»KU••NˆÃï÷ǼŽT¶%{zû~÷'«Nc¡ ŸÿütË- oÿÙÏ~¡¶¶¶”Ï“(Ü’Lss³úBCþ @ö:“ItL}}Ï[ÐY˜ ��������ô *þ��€!%@IVJô˜TC5VÝåœsÎÖ¢EokݺZ³ÊtBå½Êf 8 (ùÝòU¯VÓißUGG‡ÆŒã<§[¡'V¥Ÿx|†rõŸxn¹åãzæ™ç´}û555ëÕW_ÓÅ_˜ÒcKJJº­ÿ¿ÿw»RURR¬¾`•\‘! xùúÎ:ë þyJÕQG)��������Ð7þ��€!£¯B?½­”î¾DA k}tòÉ35zôh-\èÓ¼ì¯hfÅ]*êÜ­LÈÙùš²žù šÎü‰vù§;ÏS\\œ0ì3[ÅbïýÌ™'9Á³}ûö”[^>&¼\\\¤Ë/¿lÀ_÷¨Q£ÂË7nJzüæÍ[â˾ŸW\ñn�������€G«/��0$d:È“Në®xËtè'ÒÁOÑyç«`ñd½6î6í.8N™âm©PÉKŸTöªTQ±G••• I¯)Õm=9f°ƒ1—“)((Ða‡ê,766iÉ’¥hÓ§^ž7o~Â×SQQ¡µk×ÅÝüñû¾sçÎ��������þ��€a%YÈ$ݰOªAŸècãíK¶ÍÝn¬ÊеšQ>^oþ¸V¸²kk†ªÈ:Tðö/Uøú©¡zvíÚå´ÿмžx×ëzSyo;ku5wîkáõÉ“'Ç=6Vˆæ’K. /ÿßÿý>aÐæ×¿þ>úÑ[ô»ßÝ‘R5žž8óÌÓ•““ã,ïØ±S?ühÜcÿû»~FgœqºŠŠ å·ÞZ¤ùó_{lUU•®ºê:}ë[ßÑ#<&��������Ðwþ��€A/ÕÐH¢ã,„á÷û“NݦtŽO´?ÖöTŽÍÍÍÕ9眭ƒ¦LÖºâóõfÙM xs”)¹›ŸUÉsRGÅj§µUsssÒ°O:ÕŒ¢÷Ö�U»ùìg¿¨ÚÚ:gÝ*øœuÖÝŽ)** /[P*Úu×]£±cËe«øóÕ¯~CuuuÝŽ±ÊJ÷ßÿ7ýío×òå+tï½÷«­­M}Á^Ã{Þsmxýç?ÿ_=ñÄSÝ> {ÝqÇïí‰X€èæ›?æ,Ûã-Ô3{öËûg!¦/}é«NÐèùç_Ô+¯¼*��������Ðw²��0 Ä«DcA 7$ª¾Ò“v_==¦§ÛgÌ8Î r,[Ö©ú‘e:½î/*Ô*| ›UòüGÕtò·µ;x±FŽÑ5”×ëív§Ûº‰Üë¸x¯)Ù1™¶nÝ:}úÓŸÛo{{{‡âÙ³§²ÛöÏþ3ÎûiêÔƒÃ˯¾úZ×1_rÂ@·ßþMçØââb}÷»ÿÕµýËÎwî•WæêõׯÒÌ™'jܸqζ·ß^¬;÷…†Þÿþ÷êè£R_ùÔ§>¡×^›§­[·9A²ï~÷úóŸïÕGî\ÏÊ•«T]]£É“'éôÓOÓ?ÿù¯¸çºá†è7v½¦7ÔÔÔ¬¯}í[:è É:昣UXXØõºvjá·œç1ÅÅEúêWo��������è;��À ÖÓ~ÚÛÛÕsBÍ•RýV…Zkèlí“ê3‰Î—‰pÑÄ®©`L6oÞ£U¹gjFësÊu(<-*ž»Z«W¨öøÏ9ï]yy¹|>_8¤+°“ê¶hýþillrB)Éäååé3Ÿ¹µ[¥—…¯lZºt™³>þg~õÕWê”SNv–gÎ<IwÝu‡¾öµo:a" ׸ÇE²PÕM7Ýà<W_ÊÏÏ×Ýwß©/|á6½óÎgÛ¶mÛÉUZZ¢Ÿýì'zþùžË>¯ÿýߟ;•ƒzèag›ŠlŠf ŸþôÇš8q‚��������@ß!ø��†ÖÖVÕ×׫µn·|ï<¤œOÉ×°ÉÙgQ“¡ü ü®©ï¢!å¯ù»²ªW©ùŒj[{»ÆŽë„G"Ã?&ºúÏP©üÍZ©Y…£ &èŒ3NÓ»Þu±óšc±kýÙÏ~¬ßýîNÍ›7ßi fUm*+«ºwì±Ç衇þ¡Ç{©ú³~ýz'x”ŸŸçTþ9ùä™N[°ƒž¢þ0jÔ(ÝsÏÝÎõ<÷Ü Z»v­:::UV6²ë5Ÿ®›oþ¨òJü1YYYúÆ7¾ªw¿ûRç|‹/ÑîÝNE­#Juä‘Gè¼óÎÕe—½Ë9��������ô­TÓâIqŸ'…¹'κ;y#æîäûÏ6_ÔdûJlÞõË‹ù��ÂqÜe«šÓÚÚÒõ þÓ¨¿$«”½¿¡¡A•••ÊÚøŒòßú¹<íuBú‚¹#Õ|ÆŠÊÊÊTZZÚ­õ—‰íÄ ñ$ ÷ tø�����`°°*½^¯GùùÎM56nâVdv—�@fäädŸÞ5 vM ÿ™¢¦ÐæÁˆ)1žg=Ñ<z9ZÒ–^�� Ré¶Ç²ÐµWÊ}û·*˜w;¡Ÿ^ð¶×ªxÎ畳쪪¬rÂTþŠýùÄû¼Ò o�������� 5��ÀiiiQ]]½rÖüK¹+ï2 PÁò?¨øÕ/©±j‡vîÜ©¶¶¶n‡Ä ÿÄ òþ��������È<‚?��`È ƒjhhT¨¹RyK~#dVöÎù*}öFv-qÂ?VYÉÞsWªAÂ?���������™Eð�� y­­­Nh$kãSòt¶™çmÞ­’?¡ìwTEÅUWW+„÷ǪôCø�������� oü��C^GG‡3÷T,úP CoýT…ó¿£úªÝÚµkWø½we"ü��������€Ôü��CRdxÄ]îlkú^î–çTòüGÕ^ñ޶oß®¦¦¦nû{þ!��������‚?��`ÈËÎÎvæ 9“„þá«ß¨Òç?"ߦç´{w…Óú+V+Þz2„���������’#ø��†¼‚‚y<UŒ:OoŽÐ?<-*š÷må/þ•jªªTQQ‘Vø'Y¸‡ð��������@b��Àçóù4bD©rF¬åå7)èÉúOÞê¿©øµ¯©©¶Òiý Ãû÷���������ô‚?��`XÈËËÓŒÓU[vªÞ˜øeÕä.ôŸìsUüÂ-ê¨Ù¦­[·Êï÷‡÷%ªo[*û���������tÜ��†’’yæ™Z´¨@+ËŽVV{•JZÖ+»£^ž@[·J4®tƒ%ä÷ä*ä±ü´Çy|{{»BA¿Žj›§¢`­ú…/[YcŽ’¯ì`ùF$oáy²óåÉ꺶Î6…ü]¯·©Bº­ Ôl’¿rô«/eÕ­UñìO©ñ‚ßkÛ¶&Ož¬¬¬ýÿ¹ifK¶-•}���������2‚?��`X?~œÎ<ót½óÎUW稱h|·ýé¶žJt|GG‡êëë•å­Ó¬úú6ôãñ({ Ê=ò2åL;WYã“'+/凇:[åß¹Díf«}Í3òï^n/N™ækܦâ—,üs§vìðjÒ¤IN+¶èða��������€ÞKõ·-ž÷yR˜{⬻“7bîN¾ÿlóEM¶¯Äæó��2"8Á ›ÜekÝÔÚÚ¢`Ð*¹LRH·Tô¶¶¶6ÕÔÔ:yìuD“,äï9,ÈÒÜܬººZå×®Ò”5¿PvGß„~¼%”âMÎd•}2%P½A­‹þ¢ÖÅS°¹R™(™ªÆ‹ÿ¤Ü’Ñš0a‚¼Þ½f£Ã>ÉÖSÝ�����0lÛ¶½kÅ£üü§’²‡ØX”ÍÝe��99Ù§wͬ]DÃæ¨)ôŸy0b EÌ£'ÅYO4^Ž–ô.n‚?��`?C!øk²0PºAŸXëÖ.¬ªªJ õ *Xû€ —ÿ^žP@™æ+¤Â³oSÞ‰7ÉãËQ_±J@­oÝ£æ×~¥`ãneRçøYj:çW*1Råååá푞Xažx‚?�����`¸#ø�@ÿ.Á¯���kíµsçN5VïVé‚ï¨hÙÿe>ôãËVáY_Ò¨/¼­ü“?Þ§¡ãÉÎWÁiŸÖè/.UáyßÌèóeïzCù‹­††F§%š+Q+‘tŽ��������8d ���I«ý4448•~¼Õ«Uöúíò5íP¦eŸ¡Ò÷Þ#ߨCÕß,�TtÞ7•wÔåªð£òW­U&ä­ù‡ü£ŽUµ÷Råää(??¿c콎¬æ½����ÀpÖÙÙ©;ï¼KO?ýLרCµ2a̘Ѻì²Kuë­·(;;[���¾¨ø��†­LTˆ±Ö^ÕÕÕª¨Ø£ìõiäì[û$ô“ÊÍyË‹ú‰”5nºÊn}Uy3Þ§L)|ëjÜ姬uœéégCÕ����Àpóûßß­ûîûkÆB?¦²²JùËýι��0¼ü��CRo ‰ïî³;îvïÞ­šÊÝ*~ëTòÖ¥@»2ÊãQÑEßUÉå¿”'+Wƒ'§@¥×Ýí\WFÎ×ѨÂ7¾§ŽöÕÖÖ†·'jùEÀ����p xê©§ÕWž|ò)��`x£Õ��@ ÍÍͪ¬¬T¨v³ÊæKYõë•q¯J¯ý½òf¼_½±§¶I;*ëUÓТªúfYff̈B,Îפò*Y¤ž(<ëKòdå©ñ™¯«·²w/TÖ†'Ô|äµ*(héš ÔS´���� '™¬ô­ººF���Þþ��€^tå«JSSS«ìí¯ªxá÷äílR_(~×zú±Ë¿b³^^´Nó—oÖ†‰§M¥3Ž;Xçžx¨Î˜>Uédf Nû”‚muj~ùÇê­‚ewªaÊEjhÈQ~~¾Þ‰ ñDz2ð©mlÕìUznu§Vî©3@h���ÇÏ+•JÇŒ ê¼C¤ÃÇP=û™1++Kyy¹*,,Tnîਤ ���ô'‚?��`PÊt«§TÎTQQ¡–Æ,»CkÿaT_(8õVœöé´ìz sÞÞ ÿû÷kZ±qwÊÛ¸³Ú™îv‘›<F7_1K—Ÿq´²|©u}-:ï› T­SÛò‡ÔÞÖJå¾óWµŸð)§¢RQQÏ*¥ãßoìÑÿ¼Ø±…Ð���†—@PÚÕh“W/®—.<4¨OžJøûYßÚtÛÔØØ¤ââ"••• ß óÜzï;zpá]sÒýþ#G('+µqŽx:üÁ®s®Ñ#‹*uý)åúÃGއ�ÀPл�� ÑÁžDAŸXûZ[[µ}ûvµUmQéœÏ¨`íßÕW¡ŸìÉ'«è’¤õ«êsÝ7ïÕ§~öPZ¡Ÿhë¶Uêëw<©«¿þg­Þ\‘òãJ®ú­²Æ¡ÞÊ[}¿M{œÙ`0èl‹®¸)Þç˜JëçOíŠ ý����Ãß‹ë½úÁK>"ûYsÏž=Âð·l[“þ<w—šÚºþn½ÿŽ•Np§§ì±¸s¥s.;ç=]ç^º­Q���CÁ��0è$ ud²…Oêëëµk×.içBxá£Ê®Z¦¾âÉÊUÉ5¿—Ç—“òcþúÜ"]ûÍ{´* N2ë¶Wé}ß¹_÷=ûVJÇ{r UríºþõØ»_ x:[”³ößòûýjiiQ_±J?.éù€���0”-íúñæ (SSkk›jjj„ámRY×øJÞ¾1Š'–Tõ8üã†~_\ÞfçžT–'��€¡€à��öâ…¬µWee¥*÷T*oÅŸUòògåm«V_*<ëËÊ}XÊÇÿæ_sõý{^P[‡_™ÖÞé×ï}Q?ûÛË)Ÿ=ñDœüqõVÎú‡åooUSSSx[OªþÄSÛØJ¥���ð¬òÏÚJÂ?80YåŸöövaøU”­}vºò³÷ýš«'áŸX¡;§{t×s��� ��À Ò“j?=ióÕÑÑáTùiªÞ¥âyßTÁò?ÈêÛ 1Þ¢±*8ó‹)ÿÇ'ÞÐÿý{žúš=ϧö<…ç}Ë©þÓ¾ÖJy·¼¨`0ä´Xë©xŸóìU”â���ÌË°š››…áíü£GêÑ/×ãðO¼ÐÓÎ ��0Tü��ƒF_´øŠõ˜ÆÆFíØ±C;kÄs7*wÇõ‡Â3¿ Ov~JÇ>»à”+ñd¯œ«'æ­Jzœ· Lù'L½•»þQ§ÝW¼ØÞ´s{n5Õ~����³²‚á_¸ÚÚ¨øs ˆþ±@O¢ð¡��0œð“��zôH§ÚµöªªªREÅe¿ó/˜ýIy›w«?X•œü™MéØªúf}çîgÕß¾÷çççN¦àÔOu½ Þý32kÏÛ ¶Öª££SÁàÞ¸T*5¥bå†���€ádOp�³›Mp`° Î#Qá ôÄ ÿÄ ý<Bè�� Q��ÀJ‹¯Dû;;;Ö^uU*Zø.ú©èPÉ=ꊔ[dYõ†æ6õ7{Î_ýóÕ¤ÇùJ')çà3ÔžP@Þ­{Ÿ«­­ç¯µ7•�����ÀðpAŠáŸD¡Ÿ ý��€!Šà��p=iñ•NÈÚImß¾]ïhÄóQîÆ'Ôßò¦_—Òq5zä•å(¾ºÂ¹†dòŽMíõ$’µmŽó™õ&øË1ã<��� •§vï0,eee –xáŸ÷ýß 'ðc“-ú��à Á��0 zúIå8[·©¦¦F»wWÈ»á•>ÿù6©ßy³”3%µ 9¼ºBþ€Š=·…’É™v¶z+k÷› jooo‹ü{ZÍç’£²���@:flPÀ*//W8ðÄ ÿ<¹´Ú üØdË.B?��`¸ ø��„ÌIvL*Ûc­ûý~§µWMÕå¿ùS¿þyü­ÙfÈ“[”Ò±/½µVíÅ®Á7êPy‹Æª7|þF…¶Ë>¾@ yØ)Õ ÐùG ���€tÞ!X……”¼:PÅ ÿú��ÃÁ��ÐïR pô4ôcZ[[Ö^mÕ›UòÒ­Ê[÷/ ¤¬1G¥t\[‡_«6Uh Ù5´¶w&=.kÌê-oõ*gÞÑÑ¡LYœ¯¯_HÕ���Ø.<4¨ÃÇô¬Š&0Ô)7—Š?²Xá¡��0Üü��ýª/C?¶^[[ëTúñìX ’g?¬¬ªåh¾²©)·­¢VþÀÀ—â·kØVQ—ô8ߨÞß>¬Øûùtv&¥ãºYåzïñüS���¦ã¥OžJè¦üü<••• ˆþ!ô��†#~��úM_†~¬UTEE…ª*+•»ô*~ùsò¶Õh0ðKé¸ê† {êš’ã-*Wo…j79skÍÞñÙöæ;ó•w§ò���8Véçö ’·Ò†#«ôS^ÞûŸU1|XÀçñ/§ƒGç9“-ú��ÃM–���‰ž†~ÚÛÛÐOGÿþ_ÊÞµ@ƒ‰';?¥ãCµW*/G½j©væÁ`ß¼v«üsþÑ­š½ªQÏ­îÔÊÝ!u<���† ŸW*/”ŽÔy‡ˆö^8 x<eee)//W………´÷BLç9Rë~zš���†+‚?�� _$ ’ÄÚŸl›-766ª²²RÞ=ËTúÚ·äm­Ð`“j@¦0¯÷AšL)ÈMáZ|½¯¦ãëØÛR¬¯‚?fdq¾®›e“���������†Z}�€>ס ŠTWW«¢b²×>¬â—n”¡loHé¸ñ£K4XL“üZB­uê­l½3·Vm�����ˆÆŒ­¾R^>F���Þþ��€>Õ¡ŸŽŽíܹSu{vªèµo©ðÍËìT_hWžz+ÔR“ÒqãÊŠ5fD‘ÚèÒB•<øLñu%â v8sûxSi/–Ê1����� %—]v©úÊe—½K���Þþ��€“jˆ#ò¸¦¦&íØ±Cíï¨ä…)gÛ‹ê­Ê;K²Soj·¤|ì©ÇNÑ@;-ÅkÔlTo=>gîñx����ÀèÖ[oч?|SF+ÿع윟üä-��Àð–%��€>Ò“ê,Ñq×­µWmm­êêꕽñ)/ü‘<võ…€'[ ‹ß£M¾£ufËCê­ÎÝËR>öò3ŽÖ¯­Ô@zw×5¤Â_±B½”ï?KTò����˜²³³õ¹Ï}Ú™���€tü��}"-¾ÜõÎÎNUVVª¥±N‹~¡Üõ¨¯´eÔÂ1·h·¤Ž<ôP•¬òX¿¯^ñï^®P C_NÒcÏ>~š4Zë·Wi LP¦sN8$éqVí'­¾¬âÕú¡â��������@úhõ��ú]*¡Wkk«ÓÚ«mÏ•¼psŸ†~jr§i¨­hªN;íTyäòø[Õ[¡Žunž—Ò±^GŸ{Ï™(_zßÙÎ5$Ó¾öyeBÀ›ï̽^þY ��������.~Ã��%·µ×Î;åÙ2G%ÏÞ(_Í;ê+ÛŠNÓ‚qŸUΈñºè¢ 4~ü¸½;2T‰¦ý§R>ö]§©sS¨º“iöœ—Ì:2¥cÛ×<£LhÉíÌ}>Ÿ���������‚?�� ãµùJ¥Úßïמ={T]Y©Üew«èÕ¯ÈÓѨ¾òxõÎÈ+µlô4vüD]rÉE*-- QZ}#• mËt*ÿ¤ê'Ÿ¾\F—¨¿ØsÙs¦ÂÚ|ul|E™Ðž7Ö™geÑ�������� ]��À ÒÑÑá´öjªÜ¦¢9ŸWþò»¤PP}¡Ó[ …åŸÒ†Ò ućëÜsÏQnn®<O¸õTGÎ(eB°µNmËLùø‘Åùúã7ßçÌûÚˆ®ç¸ûïMù¹ZÜ™±Ï$P8É™[ÐÊ“Bu%O†*0�������� ��@Fõ¦ÚOKK‹¶mÛ¦àŽ…*yæƒÊÞ½P}¥1{¼^ÿUÕ¥“Ož©“N:1ö1nš`ÑeJók¿‘)ÈÄQúç÷?¤)ã2Su(–±eÅúËíС“F§t|°q—Zß¾_™1Í™Sñ�������� }��À `¡Ÿ;wÉ·ùEÏþœ¼­Uê+•ùGëõñ_V¨d’.ºèvØ¡û“““ãT—é(;V™¨^¯–…w§õ ýüã{7éÜQ¦Ù9ýÉGuä”ò”Óôâ÷ÓjY–H°ëŸ¢Áòãe{¿dªªª´`ÁδfÍZ�������p ãÖj��0`Üj?­­­ª¨Ø£ìÍÏ©pÞí¶G}ãõ¥kíÈw«lT™Î>û,ìw=Æ*Ðx½ùF¡o¡r‚ÍÊ„æ9?QÞ±×Ê[<.åÇ”•è÷_»^OÎ_¥Ÿÿíeí®iToŒU¢Û>x®.?ýh¥Ó9«sÛBµ.y@™RŸ;Ey%eÊÎΊÛÂ+­½6nܤwÞY£]»v©¥¥µë³õ©¤¤DS§¬3ŽSaaa·ãŸþE­Zµ:ÕÓë˜cŽvd úóŸÿ¢tÜ|óGUTT”ð˜@  •+WiíÚuª©©Q[[»òóó4jÔ(~øa:ú裺U«JäÉ'ŸÖúõºm³÷㓟¼¥ësÈŽù˜x¯kÆŒé:ï¼såêêjÝüïFNN¶ó:'Ožä¼çeeeê {/^ê,ŸvÚ,õD0ÔßÿþOUVv~ñ‹Ÿ‹û˜]»vkÅŠ•{Û659ï÷ˆ#ÂߡȿG’±÷óþûÿ¦ÎNxÛ¤Iõž÷\«žX·n½ó¾ìÙ³ÇùnØŸ'÷»1}ú±N½Týþ÷w9çˆ4qâ]ýuq³zõ;zî¹öÛþîw_U.Y²Tsæ¼óñög<//W¥¥¥Îûyüñ3œ–‹�������€Ôü��ý"^ 0¿ß¯ÚÚ:©f­ Þø¾ú*ôðdkÙè´«h¦&Ož¨ÓN;u¿öRnÈĽV«BSRZ¢š¼C4®e™2!ØZ§ú‡?©‘z¤ë S/¾h—vÅGë’SŽÐ㯭Ð?_Z¢eëw)Ç:^ï»àx]uÖ±ÊÎJ= `Bíªèæ®… 2¥&ÿpëúeô/ùÓ ûÄ;¾££CO<ñ”¶mÛÞm»i,ôa“.½ô]Nà`0jllÔ£>®êêšnÛ››[œiëÖmzûíź暫T\\¬žðûNxÄD±Xhª·:::USSëLË—¯Ô…ž÷ùÙ²ekxyÊ”ƒÔo½µh¿ÐO<öwÁìÙsº®yEÔž€öì©t¦Å‹—è]ïºDÓ¦MMéœ/½ôr·ÐOOÙ÷øé§ŸÕ† »mooïpª§Ùda%ûnD‡ÛÒ±cÇN'¬da¹X,øÓö·¶¶9ÓîÝΟÉë®»F£G§Ö~�������t��À€ª¯¯wùoý\›úB[ÖH½5öj̬ãg§£Ž:2a¸ÄÝgP¬JÉ–‚#3ü1^VóÜÿUáÙ·)]9Ù>½ç¼δ}O^_±E‹×íЦ5ÚSÛ¤†æ½ïaIažÊGiê„2pØDvìM*¡éúÅ|ÃcŸS v³2©uô‰Nøª¯ª{Xu›ÈÐ}®¥¥%êììtB3Æ)vÜM7}Щàb¬BŠUM‰Ç‚ –‰<¯;Oô8Š3©°ã{ì‰n¡«ŒbßIûsã†G,Lcá oü`+$Yx#“Á«Hä¶o³€Š½ßn Î^׋/Îvªÿ¤V²J;öZ½cÇŽUº¬bÒo¼™òñsæ¼²_èǾCXŒþYUœñãWò²Ê<‘á¥ÞˆúÉÍÍq‚?®ªªj=ôÐÃÎw#Ê?Ñìû1kÖ)ûmonnÞ/X—Šââ¢p•*ûûßB?.[~ê©gôáß$�������@r��@ÆÄ«êýÂ×~i®o*kw꿌OGmÞ4½]~³‚ye:çŒÓ¶5Ñâ]·µïillRë¤ó¬zH^e®ÚMÓKß“oÄAÊ;îzõ”y®?ߦêKM/ü?µ­xX™Ôš5R¾É§Êçó:‘L´ôŠdÕN¬ŽËZ]pÁyÊËËsÖ׬Y«gŸ}Þùì-˜bU[ܶUvœMñD·-š:õ`gn!–Ï|æSqgÏsÏ=QSÓÞ¶qcÆŒNØæËZrYpÃ5kÖÉ:õÔYÎ{eÁ«ãV[±pï¶VJEII±ö¶Û¾}o «èë±öQnØÆÚuYX#ºT,±–M.kçgí 6oÞâ¬[øÇ®÷„ŽWª"3“'ONû;cŸµŽìsHEmm­–.]^·ÏëÒK/ ·)³×òÌ3Ï:A{=/½4Û ØÄc!™W_«L°öu‘¡ŸÈk³÷Ú¾nK7«¨öæ›o9ßtD~?âìÏ‘û÷gäñÉ\}õ•N;2—µŠ³›ûx»æÊÊÊ®×5F�������€ÄRï/��aö j“½ùYõ…íŧéqŸWΈ ºøâ c†~ŒÜ)’…¬‚FᘃU•Ÿ~[¢„¬ŠÎ#ŸRûÚç4˜5¿ö+gÊ´íE§jdÙ(åçç§ü˜t‚Ö"kôèQÎd¡ˆK.¹(ú1Gq¸&L^wÃ-ÉXàfáÂ}!µ±cËuÈ!ÓRzìҥˡsúé§%<ÞÂ8. UX{:÷=°JIçŸn·*.ÒI‡½÷#Gî­rdáX•}"·YØ&ÕjE±žëì³Ïì¶ÍýóŸªÞ¶ù²÷ßaÆ*3vZâ Œµ?sÙû~Åï‡~ÌÁOézMg…×-¤em±âyùåWÂÕxÊËÇèÈ#POYPÍeß+¯¼<|mö^[hĈÒð1VK7˜9qâÄðr]]½Ó†+Zd›¯ÈãÓe! ™3Oê¶-•€�������€Š?��`�YÅãÝõ–2)äñj͈+´qÄE7®\gžyFÊí¤Ü`…ûKr«úcᎠųTÞºR™ t¨î÷«äÊß(ÿÄAÖÖ¦ëõ7Íù‰š_þ±2Ï£ªQgkòˆÎûÛmOD¸§7U€,ØcS"‘Á“’’¥Â--û—,¼ã²öbVuÅe-¡¦N=8ác¬zDL¬Ê@֊Ϊð´¶î­`“n°Ã*ßXxŪ« qD†/ì|VÑÅea›-[¶¨§Ü?ï®tª¹ØµlÝÚóàOCCƒæÍ›^?ãŒÓíÈâ?f_õš¢¢Â˜ß‘I“º‡]ìc -DäVà±@áE] Å‹—ª'ì}Œ Yð,ºeš…¦O?VsçÎsÖ-Dc¡§xáÇX,ôhÁ9·êÔªU«ºþ>Ý×^ÍÚ¦UVV…×­u[d(]‘ßû³_V6R�������€ä¨ø��Œß¿7°Õ²K™Òé-Лc?­M#/ÒGæ´o²J/‘U}bU÷‰æc¡üü<uN<[í¾be\0 †Ç>«æ9?‘B™k%Ö¡ö&Õ?ôñ> ýHUùGhÄ”c`zðéI»'kádm¾Ü*?Ä8á„äíÒ,˜ðÖ[‹Âë¢H5€bZZ[ÛÂ멆,Hqì±Ç8“t¢Y#òœéV\±àÏÔ©SÃëÖ.,²jжmÛÕÜÜ^Ÿ:õà®Ç¤ÿµÐ“U/zá…—´ïZ'¤\)ÉØu¹`,tIÆZ|uvúe«ôÙ†, U¹,$\2‘­ØL¬ÊQmmmzùå9áõ“N:¡W-¬ìsЬ¼Y¹*Ò„ ÝC>éV„²ÏzÚ´}ßµk×u{ÞÈjP¥¥%]S©z¢¥¥Å9Wd%­™3OTaa¡��������ÉQñ��  mX# oFþQÒ”=^‹Æ}Bm¹c5óÄ’V|‰Ī˜b¡ûôøIS´qË…:ªæeœU×™ý#ulž¯Ò÷Ü-oÑX ÿ®¥ª{ð£ T¯W_Y?âR9~|ZáÞ„ƒLEE…þþ÷÷Ûnu,6zôè¤çxûíÅÝÚYÕ˜T´··kÑ¢·Ãë豩7,Lò /†×­2K¬pP"ü±Š5péèèt¶YÅ–òòrg92Øaç·ªC©Vš3çUgŠf‘3ŽÓqÇMwþl¥jóæ}•†Ò­ö³rå*mݺÍY¶ Ù…žŸÒã,8óöÛ{[jYHÑ^=Ö½n«"ôê«s»=Æ>—h¯¼27\%ÊZ«zê,õ†e"Å«VU\\”ðqÉØ÷Â? î­TeßýM›6‡[‘ß;.6p÷ßÿ@Ìíb:á„ãjW�������€ÔPñ�� Ÿoï?EZ³“‡.’ÙS0]ó'ܦ`ñdç—óÉB?±Ä«dÁŸòòÑÚYv¾Ú}©µ„ꉎsTýÛ“ÕòÆ]N% þjoTã³ßRõ]ç÷iè§*ÿÈ®ßîŸä@¢[-eªÍWª,a!’‚‚ü¤ÇZ Ã‚?. ÙÄ«´ÍB?ííûªÅ¤Jt-=ôp¸EWvv–.»ì]i¿gÔ°Ë´iû*ï¸í¨,à³qãÆðöC=$­`G¢k·JBÑ•r’qƒ;fÊ”ÔNÍÍÍÝÂ9³f¬²²²”ka ê¸V­Z­{ï½OÏ?ÿ¢üIÝwß_v`‘ߟè÷ÈK‘í¯.¼ð'|Ô$‹d-ßb‰Þý¸d쵌7®[€hƽ߉ÊÊÊn­Ð9$3ß SÙ{fŸ������� 5Tü��ÆZp555«²p†ŠÛ·«g<Ú0â"­y…F¥³Î:3#-bÜjDî²UÕ˜<õPm¨¹HG×ü[}%ØZ§Æ§¾¢ÖEQѹ_WîQ—w]@ßeµC­Îs5Ïý¥‚»Õ×Ö¸LÓ¦N Wûé€)((ÐôéÇ:Ÿicc£Ózª±±Io¾¹H‹-Ö%—\”0,f-¾Üª8æôÓOMåiQÖæËea’qãz^ÑÉ®ý‘G ·”²É•W^‘r˜%{Ýnõ{OêêêœHdu£Ã?Lé°ã­šPäu[pÆZ‡YÕ˜-[¶êª«®H©zµØÚµkïwÓ^oäy“™={N8teU‹fÎ<)åÇZ(êŠ+Þ­‡~Ôù{ÊXØÅ^‡ëì³ÏÔš5kÃ}¬5`äu¿ôÒìðúqÇë´8ë­Èç0ÖJ-–èíÑK•Ußq+mÙ²·òRd«°°Ày]ö™¦ÊXîßÓ²öe«W¯vÞg«Ð´yóf}ðƒï§Ý�������¤€à��0öK]«ìP9áRM®{YÙÁ4[Ñx²µlô Ú]<Ó©À2kÖ)ÊÊÚ÷Ï›tC%ÑmŒÜÇÛv ŽL™2Y¯m>OS^U¡¿R}É¿{¹êþq£²F¦üSoUÞ±×Ê[0J™¨Þ Ö¥ÿTë›T°¹Jýawá òL8Ñ ¾$ªö-Þ¾t>_ ]pÁyáu ¢X ÃªæXðÀÚftÐdåçï_ýÇZ$-Y²4¼nÕoÜvXɼùæ[êìô‡×S ÅbUV}ôq'<c¬ÒÏW\Þë¶anÕ#7¼by"«ÃX;4 Yë§TY5$kç餓NÔüÃ ÏØ{>{öËúèG?œô\v=n5;oäŸñDÖ®]®Pcß•‹.º ­öbÆ^÷7~ЩÚdÕìÚ³²|š8q¢N=õç{`Ÿ±«¤d_ûº×^›ç©LQQ¡Î<ó e‚ý]ɪäÄâ>·+Öw;G}T8øcß½ÚÚZç3qYp,Ý¿k-6jT÷¿ÏŽ=öhýãÿrþ¾µç™?ó™�������#ø��ŒUï1b„JÇNÕ²ª넊»å ùSzlcÎD-+¿IMyéøã¦ë˜cŽîuõ˜È O¬í˜2í0-oü€NÝý[;R}Í_µNOÞ¦Æg¾¡ÜCÎSÎa+çà3”U~TZ•€Bù·/RÇæ¹jçiuîx[ý©Ó[ •£®×q‡LSii©³-žž² Uyá…—œu¿?àT1‰UõgáÂ7ýîµ¥ÞijjÒÒ¥ËÃëvîÑ£{ÖÖ΂O<ñd¸êP^^®®¹æ*ÛóêA. ÃØµ-^¼7Ü´cÇN§Z먣ŽT&X…¯#<¢ëýÜ”©¯opB$#GŽLø8·ÊŒI¥BËÂ:.ûÜžxâ©nûÝ*>®?þñÏÎüÚk¯îVAÉ®ÛÚ³ÅjÑVUU¥ÖÖ¶ðºµÆ2öþ-[¶"¼Ý‚TÖ,Þó[*{~ Ä}èC7*‘Q£ÊœÏÌ CíܹKÇ?c¿ãvîÜÙm=Õ°Z4ûÎZµ$·=›}?"Ï©ï‡}—Çç¼cU��������Éü��ý"²uV$û¥úŒÓõL×/’y?¥c*ÿ®‚ÎøhÚ}%ÚTz¾¶Œ8OE¥:÷”“* ™¾Vy½¶Í~)è¡Ó´mÛqÚÒ|†¦4¾¦~èTûÚçÉxóGÈ7æe•"_ÙÁòä–È“ß5/V¨½QÁ¶…ÚêÊ>þ®)P½Îië5PVºN¥ãÑA´_Õ•¾ú<öØÚµko€ÀB>Ö6(úyÚÚÚº­Çú~Ze åËW†×-¸’j[- ¸¸Urì¹­BLOX®çŸ1ô°ê<×]wÍ~SzÃÂnðÇÞ77øc×n›¯D¢ßóxmª"E¶J'øã¾_îrtÐ'š»ßýÌÖ­[ïT‚rŪ®ôÆo†—­ÐÔ©;ËÑß%«úYù)Þóçät(û{ÈZk¹Uw¬ª‘}OÝöyîkX¾|EÄc²{õ÷¤UýyõÕ½ßÙyÝ�ZYÙH3F™ùýHå»������� ø��2(^¸'ÙcìÖgŸ}¦,ÈÑÂ’£4ªa±F5-S^G¥²mêÌ*RsÎxÕ­š¢éÊÊ-ÐÄ‘#t ǫ¤¤$¥çH&ÖuG¿[· EG}¤–6_­±­+•ç¯Õ@¶Ö)¸õ uvMƒ]eþѪq†Î=îØp»¡T«ýô´*6mÚì,·µµë™gžÓ™gžî|_,²qã&§’Oäù¬Y´ †ƒ XJ5¼S__¯+ö†,8«²…ZæÌyÅùž{î9N˺Ho½µH¯½6?¼^\\ä„~ì{˜IV Æ*ÉTW×8•x\ÖþÌZòõ–½>k½µråêð6{?“½{Ýë±ÀS&C&ÉX¸Æ¾+nµ§çŸA^xS•ÆÚ¿½ùæ"'ä:öØc”››«L±×n¯ºº:͘qœN9åäð>«ðãìûùøãOêÒK/qBivm/½ôr×ãêÃÇ[ÛµtÛœE²ŠPsçÎs>ÇŠŠ=á홪öc!ûóXS³ïïÓTv�������p #ø��k‘cÁ «&ÑR4B-:/¼/2|3¢ëëÓ¦Mu±~‘ÝÓê1‘‹ûDn³ç<äC´kW…ÞòB§ïú_yƒÉ«t¨Z³Ê´ṫtÔQG„[ E¾×}ÕÖ뤓NÔÊ•«œÐ±Ð‰MÙÙY Cá0ËBÑ! \¬^ýNxÝÚɹmÊ’±J0nÅûÎÌšurÌã,LÒÜÜâ,?ûìsºõÖO„÷-Y²´[èÇ´´´êþó\Vè}ï»^=e!Žèç³ G=±`ÁáV[ögÇ®;²±0”U¯I$²ÚU‹JÇ 7| áþÅ‹—è•Wæ†×¿øÅÏuÛ_PP “Ož©×_ß®kllÒ#<ó\%%Å:ýôÓÂë�Š>_4k=fÕz̤Iõž÷\Ûmÿüù œ¶Zî²ý½ç¶Š;äiκØLee•î»ïoNe·OäµÍšÕ³jS. Yµ¥Í›·tÛÞÓïÇÃ?þûÛþ,Z»´èðe¬öe�������€ýõü¶O��€4%«Þb¿Ô>眳J>ö‹p«ÚbNFå´Ð™9óD]pÁyÎ/½}>Ÿó¸è©¯®3r›…ìZÚ‹ÕòQïb zs´¨ü™ì„<’UIµÚO*,´aAŠÒÒÝRtègúôcuþùçîw |¸aû¾Å ïD«©©éš>ý˜¸•©¢ÛQEjhhØïx»v vÄžz@³Gä{n­«=ôõ„®,(c“µ°Š~möçûÜsÏNzžÈàOt5¤þ`™NH@±¿§ì»–,Ä”®è÷,zý²ËÞå„"E‡~ìÚ®¿þ:egg«·¢«ûXE¤Èöbé°°›ûý°PXtè礓Nèq¨�������4Tü��ƒ‚ÛVËÂ!&Œw¦¾|.“¨-Y¬c"[YãÔSOÖܹ*騦©õ/ ‘<Z:úu”¦sÎ8-<ÈDµŸTgA²}èF­ZµÚ©¬RYYéT±@KQQ‘&OžäTñq+Eª®®v*¹f̘î<&r¿'ö\‘-š¢]pÁùzùå9Îñçw®’ûžlݺÍY·ÊV™Œûsí¶ê²¶Q©„:,è²mÛ¶ðºµF<ì°Ã´lÙríØ±Ã ªXå(kEuøá‡9Á1 †eÚi§ÍRmm­�³V]ÑßÓ¬¬,]yååNK;«”VUUåjòóóœêUö[X'S×fËÈŠB™jóeìωUš8q¢ó~Z;5�������@jRým‹'Å}žæž8ëî䘻“ï?Û|Q“í³Û§½]ÐÝû��€³ª"D°É]öûýjmmqÚ$Y8 ‘DšLìOUºÁ’xϽ=rÝÚI-]ü¶fTÜ£ñ-K„½Þ)»F›G^¨sÎ9Ëùe¾ITÑ'j?}Õ ƒËλôàƒ9ËcÆŒNÚº ����€á`Û¶íòz=ÊÏ/pnú°qÈÊ×}qó ��ªœœìÓ»fVn½á?ó@ÔúÏ<1…"æÑ“â¬'šG/GKúK3Z}�€~—,¸ÑÓ¶]½mûïq‰B)V1fÚ¡‡iIùÇ´£p¦ ­y¥6–^ “OžýDëiåB?ŽÍ›7‡—§L9H��������`´ú��Ù«·Ç „X×½-r}Ö¬SÔÖÖ¦eúíÐĦ7u ZSv¥6”^¬ãŽ;V‡vhx{:AÂ=0nË13eÊ�������€ýü��&•ðÏ@qÃ'ñÂ>‘ë6?眳5wîkZî¹Q!ù4©i$AO«Ê®×Ö’35cÆtMŸ~lx_:-½hñ×ûßÿ^�������€Äþ��€>‘j¨'VÀ&ÓבŠxÏŸ¨ÒOäºÍÏ:ëL-X­eºQuySutõƒò†î:¼EZ\þQÕ¡O8^G}Tx_¦‚<„~���������öGð�� ™ �õ4 ’èùÓ ÿœzê,eggkÍ©){œNØó'å4\5äLÒ¢±ŸPGîh6ëM›65¼/Q5ŸXŸá��������€ôü��}¦'­¼"ÃéT Ê”xלNøgæÌ“TVV¦7ßÌÒ¼¬¯jFÕ_5ªu†“Ç«Í%çh͈+TP2RžqšÆŒÞŸN ¯dû ��������ÄFð��ô©ž„";zþ1Vù¦´´Do¼ñ¦fNc›ÞÖ±U*'ؤ¡®1{‚–ù ò§jüøqš5ë„÷' ý¤ ��������@l��@ŸëMøg Äký•NøgÔ¨Q:ï¼s´xñmÛ–¥¹y‡êèê‡4¾ùm EO¶6ޏXF\¤œ¼Bwä:ê¨#åóùÂÇd:äC(�������� >‚?�� _Ä Ò v±BKé„òóóuúé§i×®ÝZ²d©Vä}Bš7ëÚç4¾eI׃ÿýz²´½h–Ö¼LÁüÑšP>F3f§‘#Gv;®'¡Z|��������ôÁ��Я²úOd$kèmøÇXK¬²²‘Z±b¥vìÈ׊ƒµ©i½­}Jå­«5=ÙÚVtš6Œ¸XÁ‚1***Òa‡ªC™&¯×>®§‚=���������½Cð��ô»þ¨þ“,T’n(ÕðOäù¢×sssuÒI'êÐCÑúõö€JPvóvmxS“¨ P£Ö”=NÛ‹NÑŽÒ3äÉ/S^^ž:h²?ü0g9R_…~��������$Gð�� ˜èpGOƒ@½ ‰¤DJ%ük[ôzii©�š6mªÖ®]§ªª|í.=X[Û.WiãrMj\¨Ñ­«”lUiέ=…Óµ³ä4µ¬œœuM“&Mt‚JÖ²,Ro>„~���������2ƒà��4:ð‘J²Þ„Lä¶‘#GjÖ¬SÔÔÔ¤;wiûöj-.цÀ©ZÓÑ®¼¦ Ñ´Z£Zר¬}£|¡NeJ»·HÕy‡©¦ð(Õ#þ8egg;-¼Ê‹ 5qâDMž<É©Rë=H¶-ÞgIè�������� sþ���DèMøÇ$ ûÄÚVTTä´Ñ²Ê:UUUN�¨ªªZùÓU;fºª…ÊnÝ£¼¶ÊkÝ¡‚Ž åwV);Ø¢¬`› ò…:”jW§7OÊ‘¿kî÷äÊŸU¨–ìrµäŽWkÞµLR ·Ì ùØä뺆â‚|•——;~¬"Q¼×ÝÓm‰¶§º���������Ýü��ˆÒÓðO¼í©…œj;ååÎ U__¯êê' T[[§`ε–vM]ÇÖªçì™ rrTV6RcƌѨQe*,,Œ|Â=„~���������2à��@ ±‚9±Ž‰þ‰~l¼óÅÛn! kf“U² PKK‹š››ÕÔÔìÌmòûý릀³l-»²²²äóy»&Ÿrrrœ`U*,,pæÖ«§aœLVùIõ���������ìà��@ɪÿ$ ¥Zé'r{¼sYÈ;6«„ÇÆ;o*Ÿé*?©��������€Øþ���$ÑÛÖ_&Õ�Pä¾xûãÛ½iÁÕÓ}é��������€øþ���¤ ÕðéI�(Ùã"%»Žd××Ûc{øIç8���������ÄGð�� E©„’—‰J?}šéMõŸTö§{���������#ø��J5ìr H'ücz�ŠÜïê‹Ï SA?������}ƒñ�� Á��StÀ…A†}’…vÒ96SU~µë‰TŸ©Öa������è.z,…±��Á��€J§R*a¡TC@ÉÛS}U¹‡)��������€¾Að��$Ô=´aË´ýŠ”NõŸtŽ–Éd»¯ž„qü������ô‡}c*Œ¯��€dþ��€ýĪd]†A‡îÒ©þãïJ74ÔŸú# �����€îcD±ÆWs��±ü��)s‚Á |>ŸÐ]ºÕ¢דÇö…Þ "1������Ð36æf_��é ø��Ræõzä÷þ$ÐÓ�Päc]ýÊÄ`R������½ccnÆÆà���REð��¤Ì,àÑÖÖ¦ÜÜ!±Þ€¢Ï©§çë‹p�����€Ì°17k!ø��ÒAð��$e‘ƒ---*--R“éV^¶!ì�����y6æfÜ›ïƒ��© 2 ��âŠ\Ø;è uvv†{Ž#=CyІ'�����€¾acm6æfC/Ñ��‰ü�� E,ø|YζÖÖV¡çÜÍ`¸‰¼F˜������úŽµÙø‹½EbL��$Cð��$å–¶¹Ïçs¶Õ×7™1˜6}������úŸ;Öfco‘cq���Éd �� 7ø …ÂëM~¿_íííÊÍÍ2+VèÆýúò9������ÐÿlŒÍÆÚ"C?‘c7ܤ��!* ��Š5Еµ·ÝWMM­Ð?¢«õv�����Àà`cl‘cn.Æq��@*þ��€ýÄPˆ¬øcƒ6ïììTKK«�������¤ÏÆÖlŒ-rÌ-^à‡��ˆ…à��ˆ+r!ºbLvv¶3¯¬¬T0������€ÔÙ˜š­E޵EWl¦ê��H†à��H*V«(ë9î–®ªª������€ÔÙ˜šÛâËÆÚh×��z‚à��ˆ)ò®¢Èmn»/÷N$ŸÏ«ÖÖ6Õ×7������@r6–fcj6¶æVû‰Õæ+Ö��@$‚?�� ©Xwíkù•ãÜ‘TWW§ææf������ˆÏÆÐl,ÍÆÔll-ÑØ��@2Y��ˆÃB¡Pxîns[}¹ì®$ëI^UUí¬ ������@wú±1´}Õ´}N¥ŸÈV_.ªý��€TPñ��¤$ÖGnùá½w'í-Ilõõõ������°™E‡~¢[|Qí��¤‹Š?�� ¡Èª?.Œ° ?îÀ„qƒ?ª««W{{»FÞ������ˆöVÊ®Rkk›3VfãhYYYÎrdè':�d��€dþ��€”E†€bzlÀ ÿØ@ÆÖ­ÛT^>F������4---Ú³§²[Õl·½WôDØ��ôÁ��°7àk=VµŸèÇÚöŽŽUVV9eeeÊËË������0ܵµµ«¦¦Æ¹AÎÆÊ,ì“““øÄ ýDŽ·E€�€Xþ��€”¤þ±uÛnrsså÷ûÉ8***œŽ‘#G(??Ÿ`������Vl\¬µµUµµuÎ qÆÆÃ¬J¶[);2è“Nè�� ‚?�� ¦èª?ÑÛb…Ü6`î²[ºØ‚?vìÞ~æÕÎ~ÛWXXèTr{š3 �����€¡Àƾl¬Ënz³ê>ÍÍÍΘqÛzÙx—¹ã^îvw9Ðãf�� ‚?�� ®TÂ?î² ZØ`‡»î~¸ƒ¶nw:Ù`ˆ-Û¼¾¾¾kÒ~ÏyŽÈ9������ПÜÀMô<z¿qC=v“[dÀ'2ä9wyB?�� ]��@BÉÂ?‘‘A ·ú�r×mÐÃØ6 ím ’ûnXÈ=G"‚������ ÉÂ5Ñc`{·9ÿuÖÝ ?î±ÑŸXëÑç%ô��z‚à��H*V'^øÇ¸pÃ>‘í¿"·¹".w{äsì�����À`kü+Vh'2à}ldk¯D•ƒb­��ÄCð��¤,ºúOt ÈÝ9¸Ùþ+òñ{+ý(fÐ'r›{������0Üq.“¨RO¬ö]Ñ! xDè��¤ƒà��HK:­¿Œ;°YÑÇ&·ÚOdØ'V(²}������Пâ…tµëŠ®”j•ŸxÛ���!ø��Ò¯õWä¶xÑAŸXçŠÜ������ ´èÖ^î¶Xû ü��€þDð��ôX¼ê?&:�dskÛ¹ž¨ÍWô`G¢!������ôD¢ÀM¼}©´ìŠl–êù���z‚à��è•x{bmnûkp$V(r?������Ðß…|"·§S͇ñ.�� ��@FĪþãn7Ñ!žèí±*ý¤:øAÅ������ôDoÂ7ñZyEïOw��@:þ��€Œ‰Wý'Ѿx$Ñ Tž������È´dŸxǧ»�� 'þ��€Œ‹WýÇÝ)ÙqÉC¨ö�����€Þèm' ��€ž"ø��úD¢ê?±Žs%:ž������2-QõêXÒ ðø��}‰à��èS©€Cà������ýÉŠÚ±}©„yü��€þ@ð��ô‹X T= ’������`0‰׊¿b, ��ô'‚?��`P£Ú������A��0˜ü��ý"^¯ôT*�þ�����À@ˆ¿ŠÜkÙ$j��i��@ŸŠ50/Ècƒ!Á`Péœ ������È´Xmë]^¯·Ûzä1‘a@�� ?ü��}"•À­ÇÚ–êùm������R+˜ccNñ;Ñ7®ÙqÑA!@�� ¿ü��—(ôãŒØz pÖm9r{äq������À`àVúq<¶nË6÷ù|Ý¶Ç % ��ôÁ��1É?6YØÇï÷‡·GÎ#o9Õç������’IĉU¹ÇÝîÞ¸æcó¬¬,'dáŸè Pä9��€L!ø��2"^Ë.�± ~lr·Û�Hnn޲³³»Al0ÄÀ������†„½¬m ¨³³SííÎØWGG‡3Æec_6Y(^�ˆ±0�� ��@¯Ä«òãV÷±›Ì(**TNNNxÀ������jö†{lò:7¶8ãaüinnqn„s'ÛïV¢ú��È4‚?�� ÇbUù±›[àÇ&[·;›Š‹‹œA������`8²`O^^ž3Ù¸XccSø¦8³ÉB>±@„��@Oü��i‹øq' ú´··;w3Ùziii×`G®������€……|ÊÊFª­­]õõõáêØ¹¹{ÇÉ,èãN†ê?�� §þ��€´D†~Üe·Ê ^XèÇævg“Uù¡¥������TvC\NÎh§úO[[›3ŽfákýåVÿ1‘ Â?�� ��@Ê¢C?‘“•-¶Ð-ª°°P������ÀÎÂ=¥¥%ÊÊò©©©Y­­­NøÇªYÈ úþ��=Að��$•¨µWdèÇ*¬µW~~ž�������ìc7Êy½>§õ—¥ ÿD¢õ��HÁ��P²ÐßïWGG¡������ wìÌÂ?6¦fÁž¬¬î¿®‹ ûPý��$Cð��Ä•,ôœ ›ú������’°1´`0 ÆÆ¦pøÇçóu;†ð��HÁ��S²ÐUø±_Vñ'''Ç)U ������ 9Kkoïp‚?^¯× öØ<á�� ¯���Rú±*?ü±å#J������ u6¦æÞ\gcm¶9�� ‚?��`?Ñ 6è¹Ï&·ÅWYÙÈýîF������˜©ÙØš±ÙX[tà'rLÎ��±Ðê ��¤$òn#kïeSVV–òòò„îúz†²Î������íÙ›;Þ–[b ��¤‚Ûó�@B±ªýXùa›Óâ«{ ª¿Ê0Äs����� oØ[ä˜[¢ª?���Ѩø��’²Á·Ç¸•¶Éçó)''GšÁ²‰¾.î�����lŒÍÆÚÜq7×±±8kÆ��H†Š?�� ®X}Ä­ä°ÍKJŠu Š•u¨�����0tØX[äØ[$ªþ��€Dþ��€¤"C$6øÐµE¹¹¹ΆSp†�����Àà¶w¬m_ð‡±��*Z}�€˜Ü…ÈA»»È&Ÿ/Ë)5<ez@%SçËTYg÷z( �����0xØX›¹Y«/·Í—;.gã8î�� ��@LÑ[·SPP á$wQEž£/îÊÊôù¹s �����`pqÇÜl .ÖØ��@,��@Bn8Äî4Úü±6_9†Cx&“! ������ œ½cn¡pÕÆl��@*hõ��ö9 ½ †äóù4”õtÀ$Ó|béMÉæès¦{.Ú€����� s³±·DcsŒÛ��€h��@\ÑA»ÓÈXñ¡ª'átÓÛê;ɤ:ÀÓÓ ƒH������ýÏssÇà\ŒÕ��€Dþ��€¸ÜàHtYá¡8ÐЗáþ.¹œneŸž|vTÿ�����è_‘ã0îxœm#ø��!ø��’rC noñ¡¤¯?}Ý.,Áœt‚=éz������ô‹q+þ µq8��00þ��€4 ßÐO*Çöu((Õs$ á¤êI�ˆð�����@ ð��RGð�� ;™ üô&dwgEN‘-Ó¢Û§ Ö¸áwÙz»GN±ž/^ '•P: ªÿ��������� .��À~bY†JiáLUåIw¿­gòûýá`O¦Þ77dSVV–|>Ÿ3¹}Þ£w½™ �þ�����è;Cy|��ô/‚?�� ¡¡4 ‰ÐO:ûÜøq÷Û¶v§¶uVjs`6uVhk°J¡zµ¨Cm¡µvÍ›½j÷øÇ䆲TÌQ¾r”çÉQA×|¬§TS¼£55{œÎ*פ¬ÑÊÍÊvžËXøÆ �¹a Èëìi�ˆð�����ÀàÀ ��H†à��òú2ð«²Ogg§3Y�ÇZxÙòžö:½Õ±^o6i™¶j‡§V]{÷=ÐóŸ)¿' f_{Œ èš:öNYòibh„¦ë è=X3sUyÞHegg;mÀÜ�»ž¨ÕWoÂAé��������€¾Að�� i½ ý¤º=2ìÓÞÞ®¶ö6½Õ¶^¯…Öhqp‹¶z«´”Nf`ü h‹§Z[T­'C‹åm÷hJÛà9HgyÒ‰¹Ó”—›§ÜÜ\'d ›"_Oº ªÿ��������� ^��À•Jè'Ý*?±?ÎÔÖÖ¦--»õRp•žõ,ÑNÕí=È«aA£Mž=Ú¤=z8ø–Æ´ë¼Ö£u©çx’7^ùùùNÈÂ?999Îc€z[ý‡ð��������@ÿ"ø��†¤Þ„~R üXÐÇB?ÍÍÍjhnÔóþåzÚ³D«µ£O«úôF¥õ ÞЃ¡7ttëD]Ör¼.Êš®’Âb& �õ¶úá��������€þEð�� 9}úñûýNeŸ––Õ5Õë¥ÀJ=à™§ž: %«´C«<;t_`®®m8Y—7 ‘¥*** W2±Â:‰ªÿþ��������<þ��€˜¢2©„múC²ëèià' :ŸúúzÕ´Ôë‰ÐÛú·ÞT§ICÙ5è÷zIÿ ¾¡kOÑ•Í'ª¬°T%%%ÊËË“×ëM«úO*­¿ÿ������ôN¬±9Æ[��@,��@Bƒ%ðcú*ôcm½œi^`­îð¼àf†“j5énÏl=zSi<[7OwÂ?¥¥¥ÝÚeªúƒQ������½7˜Ææ��ÀàDð�� ™ ýD®ÛrSS“jjj´¥sîЋzÓ³QÃY•õsÏSz1´BŸ©»HӚǪ¬¬Ìi–¨úá��������€Á‡à��ôzúI¶Íï÷«²²RõMú»g¾Ôê_Š%Ú¢Ïzþ¢÷vÎÒû+NSis±ÆŒ£¬¬½ÿ<Œí$jýEø��������``ü��ƒZ_„~ZZZTQQ¡]þZýØó¸Vi‡DíêÔýž×ôFhƒ¾Õt¥ÚÚÚ4vìX8ûSmýEø��������``x��0He"ôcëî6›[[¯;wêµÀ;ú´çž6ôi­g—>ã¹Ws«ºÞ›]Î{ùž%j—–h[:û��������>*þ��€!)ÕÐOä²Uù©klÔ_<¯è_Z¨£¸šÕ®ê1]Ú®[ªÏUGG‡ÊËËåõî͉Çjý•nå���������dÁ��0(%ª“nè'hÇŽªkoÖ÷=ëmmögA¨Ç<ou½;•ú×8៉'ÊçóíÝßËðÁ ��������€Ì¢Õ��t2úñûýÚºu«*ÚëôÏßý¤`©¶è¶®÷jg{óÞuvv†÷õ¶í-¿���������2‡à��TÒ †$ ¢X`Å‚+ÛýÕºÍóWmP…šMªtÂ?[üUÚ¶m›SýÇ•Jø'Â?���������™Að�� É'‘ëT±ÀʺÀn}ÉóWíP­žÝÚ[%i} BÛ·oO«òá��������€¾—%��€A¢7-¢¢Û{íØ±CÛ5ú¶çAÕªYè{ï¾éù‡~¸AžíMš4IÙÙÙÎ>{Ï=OÜÇ&ÚŸì±X‹/Ñœ9¯j×®]ÊÊÊÒÁOÑu×]£Q£F �������� ��À nè'r[är0tªÓTùõÏ¿ýd@Zô=¤_úowçNMž<Y^ïÞ‘‘žXaÂ?ƒÃîÝúÆ7¾­7éꫯԗ¿ü…˜ÇYhî¿þë»zþù÷ÛwÕUW�������� .��À/$dÛ­BI}g³n÷<¨íª2c—§VßÖƒúYÇåÛ¹S&L‡" Ö0µ~{饗5wîkzç5ª®®–ßШQeN5›sÏ=G_|¡ŠŠŠ4Ý{ï}Z±b¥³üÀÿÐ%—\¤cŽ9z¿ã~÷»;c†~Ž8âp;V��������`p!ø��\:Õ~â­Û|Ïž=jhiÒ{ÖzU™µQ{ô}Ï#úaë{UYY‚D‡}’­Gê Ðë¯/ÐO~ò3íØ±s¿};wîr¦ùóèÎ;ÿ /}é ºì²wi(9ë¬óÕÚÚê,¿úêK*((Øï˜‘#G„—-°URR²ß1Žz衇Ãë×_n¾ù£Îù��������‚?��`ÐJŠÞ___¯ÆÆ&ýQs´L[…¾±D[ôg½¢O4ž¯œœ9ÒÙž,À3P•€fÏž£o~óvð¶ÒÒMœ8ÑÙ¶{÷î®ïNƒ³½¶¶Îise!—÷½ïz 'ùȇÔÑÑ©7êŠ+.×äÉ“ö;f×®Ýjkks–‹Š uÛm_TVÖÞòóó��������‚?��`@% ÷Ä;6rÙªTW×hAh½ó,úÖÞ7u¬&錚#”——…D†{Ò úôU(È*@YÇ ý~øaúò—¿ “N:±Ûó-^¼Dwßý'-\ø–³þË_þZ§ž:KS¦¤á"77WŸûܧÓÜÜ^7n\8ô��������/Fó�À€éM‹/—…:¬íTE°^¿ð<¥R¡gì=þ…žÖ´`¹²+³œê9>Ÿoÿã¸å×O<®`3aÂxÝ}÷*,,Üï¸N8^¿ûݯõ©O}N‹½í|§þþ÷êßøªTÖ ����zË~¾êììtæîd?ÿƒA¡÷ìg7ûYÚ~&w§ììì˜?£��`ø"ø��tZ|UWW«µ£]?ö<¦µ ý£ImÎ{þ‹ŽÏ`̘1Î`ã`jùµfÍÚðò•W^3ôã²ÁÒ~ôCÚ¹s§³n¯)ÚYgïT—²góç¿"¿ß¯|HO?ý¬¶nÝæ¬[®Y³NÑ?ø~tÐd¥bÙ²åzôÑÇÊC{œmcÆŒvIW_}¥Ž?~Æ~¹ÿþ¿é׿þÝ~ÛÏ>û‚ðò¾ðYÝtÓ ÎòªU«õ¡}ÌY¶ÊG<p_Âó¬]»N3gž^¿üòËôßÿý½òÊ«ºí¶¯;ÛFŒ(Õ³Ï>™°2 æ_zéNE.óË_þ´ëÏ���€á«½½]Nà‡€OßrßßÈöÖÆ~Ƶ�ýüj`��0¼ü��"-¾ÔÔÔ¬4O«´Cè_ïh—ÔÝØt–Ó¸ØÙ>ØZ~¹çNÆÚ{=ñÄ#J… bö³_ÔÛo/î¶}Û¶íÎôøãOê¿þëÛz×».Ž{˜ýÅ/~儇¢íرәž|òi]sÍUúÚ×nsmÚ™gž¡²²‘ª©©U]]½æÏ=aç7†C?£F•éŒ3N���€áÇB>øq«®b`Y È>›6Ý� ?W�� óþ��€A%_õõ Ú¬ÒƒzC½®sG+».[½nù•IGq¸fÏžã,[ç½ï}JKKÕ[6€úÃþÄ ýŒ=J_|‘Æ«ÊÊ*½ôÒlíÜ¹Ë Ý~ûÿsî²¼øâ ÷;‡½_ùÊ×5wî¼ð6kGfÕxì1Vqgûö½a¶GyL»víÒoû«ðû6cÆqúÄ'>î,ßuןÂç¸ñÆv}ùác’‰<Uzíµùá}îvc×eìó}÷»/s*™gŸ}>aðǪ!¹.¿üÝ”›���†ûÙÇ*£Zðƒ—²l²àݸc•€���0|¤úOŠû<)Ì=qÖÝÉ1w'ß¶ù¢&ÛWbóŽŽÎ}¿¥���½b¡ &Øä.[£ÖÖƒ!Mž<I½‘¨úJ¢àOt‹/«8r{èA-ÔaàÌ MÓ¼ïsZ?5*¼=2ÜôIüÉT(¨¦¦F×^û^§*”±pΧ?}«.¸à¼•:w[}¹Î9ç,ýøÇ?è6`jN~ô£ÿq‚FfäÈzè¡ì8²*??ýé/œe Ã|ýë_qÚzYèÇØwݪýعÜôÛnû¢>ð÷%¼®W_}É `E‹×ê+Ýc̦M›uýõp–í}|á…§c>gKK‹.¹äòðµ=üðƒ)·?���0¸ÙÏ>öo~ þ`豟cíç¸D­›1p¬’°×ëQ~þÞÏÈÆIlìÀæî2��ÈŒœœl+SoýSþ3DM¡ÿ̃S(b=)Îz¢yôr´¤- ¼��$R ýXÀ¯†VúÞòlÔ¼Ðç3‰ ÆÄûüb­÷…²²2ýâ?Uqq‘³¾{w…þ뿾« .x—n»íkNøÆB,=Q^>F?úÑ÷÷»KÒän¿ý›Nµ!S[[¹l€ü¸;¼þ¥/}^×^{u8ôcl ïŠ+Þ­o}ëëámwÝõÇAqíÔ©kúôce+ïVUŠöò˯„¿Ç?ƒÐ���0L477«®®ŽÐÏfŸ}†öY��`è#ø��† ŒÔ×׫Éߪ?è%ap¸S/ª¹ë3ihhè—POªN:éD=ðÀýN»-7XcåÍ_ye®SqÇ*×\}õ{ôë_ÿN»víNù¼ï{ßõq«Ùó|øÃ7…×_|qv·ý ¼á´©3V…èúë¯S<—_~™¦M›ê,766éõ×h0¸òÊËÃËO?ýLÌc"·_uÕ���0´ÙM ‰¼áC›}–ö™Úg ��€¡‹:Ž�� _Å …¤Zí§©©Iz"´H•jTòÔuJ5 îjR¨ª]ªï躠N…»¶7t(Ô:l î}@û–ó|RvDÞº°ëŸ`YòeKE]ó®yI¶<£rå“ß5Ï“Fç*”3t2Ú{Ô 'ƒ‹õþö3œ;‹ŠöVÙ±ÏÎmݹk=Ùöž?~œSçóŸÿ¬^xáE'<³dɲðݩ۷ïÐý÷ÿMÿøÇƒºæš«ôÙÏ~*fëªH§œrrÂý³fíÛ¿zõ; ƒáàÑ¢E‹ÃûÎ>û¬„%ºí}°–b7nrÖßzëmç1í’K.Ò/~ñ+'De×TUU¥Ñ£G‡÷WVVêÍ79Ëö^^xáù���0tÙ¿ýíçq ?n Ë~ŽÏËË���†‚?��`Ȱ@ˆ…Jš;[õo½©>áÉ»¹Yþõ mîÔÜÒ¨ÐÖf…v¶HAeRÒº8¥9òN,&Ê3¹È™û¦+4¥Pòe.“)é ]Ùy’rºƒ 3ÞÉ«®sÓM78“…~–-[®9s^ÕìÙ/kÏžJ§–µÿZ²d©þøÇß' ÿX˜(‘ÒÒÒ®÷  ëûÚâ„~jkk5jÔ(gßž={ÂÇrÈ4%s衇†—-P3Ø{sÁçé©§žq^ßsϽ nø@xÿ³Ï>ïl7Vm)??_����†¦––gÂðfÁ.û9.Ù0���|þ��€~ÓÛj?ú±j?Ï—ªÆ“™; =Õ ,ªThUB«»¦õ øôX}‡‚VU¨ëÚ\ûO¶WžCJä9¼k:¬D¾cʤiÅ p ê®Ïä¹ÐR]Ó1˶ð U¢åäähæÌ“œé¶Û¾è´ãúñÿG Z»v~ûÛ;ôõ¯%îãSµc,øcì¼nðÇZÕ¹ÜÊH‰ï;¦®®^ƒ…µï²àyæ™çºž~úÙnÇ���šìçpZ{8ìgyûyÜýy���CÁ��0dØ€c[g»þ¥7ÔSËô¼]-ÿë ½Y¹·ªÏPÓTè:g2òfÉs\™tü(e8Z:¬d@‚@ÿ -Ð¥'8w •B ]tÑ*+©O~ò3ζ'žxJ_þò”ó1Þ3fLÂóÖ×7„—KKKÂË%%û–S)•ߨØó<턎פIViï¼³F›7oÑÁOц µnÝzç˜iÓ¦júôc���`è!ôs`r?sÂ?���CÇ�ß��Ð]¼j?v×™ßЋÁÚãéaÕ“uê¸aŽ:¾¼@Ámš¡Ÿ8BÍ~_ߣà«ÕqË\u\ñ¼ß_¢àì]ò´ö_£Š®Ïfv×gdŸUd)øxŸk_illÔªU«iýú )=æÄOPVÖÞ\|[[›*+«â»iÓæ„çÚ²e«ÓNÌx½^1"¼¯¼¼<¼l!™d6lØwýÉÂFýÉSW^yyxýå—ç8ó—^šÞ¹���ÀÐa?Ïú9pÙgO{7��€¡ƒà��è©¶ùŠÇî4ôûýzJKÔžwÔù¥ÒŽf;|a‡ÿý¶:.Nþ/¿¡à“[åi ¨¯=¥ÅÎgeŸY*zû݈eçÎ]úЇ>æL7Üðá”,+++ëvÅ¿»qîÜyJä•W^ /sÌÑNøÇuâ‰ÇGœç5ñ?{^yenxý¤“NÐ`rùå—…_Û«¯¾æÌçÌÙûÚ-DuÙeï���€¡Ån„ ôûØw���ƒÁ��0èuvvvM~mñWjg§z¢ó§K¥ö¾½ JÖì­*~º\W=¯À–(´¨Zž>*¼³ºë3ÚÚõYÙg¤éO‡2M……βkþøÇ{o›ßþöŽðú¸qc»µäŠöðÃj×®Ý1÷544è¯} ¼~þùçvÛúé§u»ØY¶süûß(žgžy.\È‚HöØhVyÇÕßï·U/:õÔSœå+VjåÊUZ»v³~öÙgª¬¬L����†û™"•–Ä80Øwa ~®��@êþ��€]Ñ%^;(+1 õ|p™BJ?­âÙÔ¬Ðú¡K{PÁçwÈÿ¥ê¸~¶‚ߘñ*@ö½\î|f©¶ûÊtû/«6sà ¯ßwß_õïü·6nÜ´ßóZ;°/|áËNÈÆùØXÚÛÛõ™Ï|~¿óY¥¡Ï}îKª©©uÖGޱ_»+»¶O|âæðú/~ñ+=þø“Îûy]O?ý¬~ðƒ‡·ÝrËÇ•““³ßµŒQ^¶ðM»òÊ+œ¹]³½–}Ûió��� 5„~ï��Àà—%��€>ÖÛP‡:ýz)´Rò¤ÿøà†:!†=­ ܹZÁ¿¬“çÝ“•õÞi ÍS&¼Z¡øÏu>»D•s’±ïNdE›t|øÃ7éí·—è­·9ë챩¬l¤ÆŽëTª¨¨P}}÷P˜Uªyï{ß“ðÜ·Üò1Ý}÷Ÿõþ÷ߨ㎛®ñãÇiÏžJ-[¶Ü©PåúêWoSiié~ßû®×ë¯/мy¯;×ñ½ïýPúÓ=:âˆÃýëÖ­×¶mÛÃÇŸrÊL}àï‹y-§ž:Ë©@d¾ñÛuæ™§;ïÙœ¿_µ¡¾pÎ9gu½Æç}´×oÆŒ³:���€ÁËm± Dr[y ���ƒ��À f•U –ø7k·^=Êñ ñ…Zü þk“:Þÿ²ü?Y&oU»zkw×gµ<°Õùìì3¹¹¹úÕ¯~®ë¯¿N^ï¾öZ5žÕ«ßqZRE†~¬Ï7~P?ùÉåó%þÎXçÒK/qªô,Y²Ô -Zôv8ôcçúîwÿK_|aÌÇ[0ç¿ø©®½öêð¶;vjöì9Îú±Ê9¿þõ/»½†H7ßüQ•—q–­ÂÒóÏ¿¨çž{A/¿<Gý!;;»ë½xW·mW\ñî¸× ���`ð±p‡Ý¸Äbß Ba���ƒ��À ¯ T[[›3Ÿ§5ê)ß±e ø<R ³í¤º±¢4EÙòg;«!Gž¢ˆjµºFR÷¶r 5ûåéšBþ •@P¡§·©ý¥ò^{°²>t¸B…=MÍ ®ÑLæ|†Â1‘|zSÍ'Uyyyúú׿âu^xáE-X°P;wîTmmî±V\ãÇ×é§ŸêTÈ™4ibJçµëþÞ÷þŸN>y¦SmgÓ¦MjoïÐØ±åš5ë}ðƒï×ÁOIx }ë[_×e—½K>ú¸/^âT 2V1çøãg誫®ÐI'˜ð<åååºÿþ{œ DóæÍwÎaa÷ÏN°×ð<^¿â Ú|���CId›f ûŽô¦¢/���úNª¿iñ¤¸Ï“ÂÜgݼswòýg›/j²}ö/MoGGç|�€Œ°ÖCʰÉ]Þ{÷_‹‚Á&Ož”ÖùbµúŠÞ+øcóÊÊJ'Pñ¡æßjkVz*ðƒ% >¿C=á)Ì’*’gr¡46_'ï˜<iT®<#»æÅ]û ÓÏS{:‚ 5ù¥Æ…ªÛªjsæ²ù®®A×íÍ íèšwP@¨$GYŸ>JžËÒû¼]S£uOÁg”——«Ñ£G‡C>‘aŸèàO¬ P_‡ƒRuÖYç‡ï€}ùåçU\\,ìeU†¾õ­ï8Ë'žx‚îºë���:::ÔÐÐ  þäää}˪�{½åç87 Ù¸ˆÝ¼dsw��dFNNöé]3û%LÃæ¨)ôŸy0b EÌ£'ÅYO4^Ž–ô®v*þ��€>+ô“*k£ä÷ThÒ6_ÏC?&ûKÓÕ±±Q¡õI3Ëóå9¼DÞ£FÈÓ5y§–(4ªoµB9^©,Ç™<SŠb'­ƒ!yªÚÜҤкz×v]×kmovöõ©†ù²T¾ºvy?xˆÒµÙ[¥º®ÏnT§Ïù,{:0Õ•Ð;O?ýLxùꫯ���€¡ƒ_H•}Wþ��� >��À€‹×æËî:4oû7*ÔËÜG°Ð§œ;ÏÿÏkxr›ÔعwGI¶¼'Ž–çäÑòžR.Íë~m`^BåyòØd×øŸÍž¶€‚+jZZ£àâj…V×õYe ÀÝkå;k¼B“ Òzœ}f‹ý›taÎñÎg™ŸŸ¿w{?·ûBßzã…š7ïug¹¬l¤.¼ð|���:;; H…û}±öÒ���<þ��€A«½½Ý™¿ظ·Ég/s½ò~ê(ùn=Jªjw‰†Fçj( åùä™9Ú™œ>©!—V+8¯B!›vgðŽÍ@P'·8ï]º7êBï|–nðCßßþöw½óÎçs;w^8°wóÍãîO���`qîReß‚?���ƒ Á��ÐïRiÿeÇX•›/ mQ&9ÕƒÆ ÍÀO<¡lòuMúÂ1Ò¦&^Ù¥àó;$k ÖKÁ ájCéXÜÚí³LV݇ @Cÿÿýˆ¶nÝÖmÛ¥—^¢ë¯¿N����†Ž¶¶6é°ïLQQ‘���0xü��ƒ–ßPg0 ¾z!MS‹ä›z˜|9L¡•u >»MÁÙ»öµ8K“§'©Ÿ.;}u]Ÿ¡_?ažá¢±±Ñ™çææÊçóéC¦éšk®ÒW¼›Ð���0„ æj?@Ài)<oÞ|­]»N••UN‹©ÂÂMš4IÇw¬.¼ð|ð¡ÿÙwÇ~&��Àà@ð��ô™T*ûÄ;Þï÷;ómþJ=éÝyŽ!_×”õÙcäz›‚ÿÚ”v Ï‘#Ô~OP;ü5šêë|¦n9ðt+û †J@sçΤââb=üðƒ���0´YeÖÁhÁ‚7ô»ßݩݻ+öÛ×ÐШU«V;Ó?ÿùÎ:ë }ö³ŸRYY™Ðì»Cð��`ðèá½Û���™/ä¶+…Ìåzå»fŠrþv®²~4Sž£S óØã®<X=µ%°Ç™Û›1¯+D° ����ú›UÐlî»ï¯ºýöÿŽú‰f?K¾úêkºõÖÏjÆBÿŒß��€Á��0(¹!‘ÍÉûš$ò4äÝÓ.ï–fyÖ5î?mo‘*ÛãØ KÈÓu½gŽUÖgÈ÷½¥I…ñöz”õÕ ÎQOmêÜüqÃ\����€e?sƒA &<ò˜î»ïo1÷䫼|ŒÓn8ZMM­¾ño«²’‡ú‹}wâÝÜ��€þG«/��ЯR©îbǸ!‘ÍÊÿ‹§% Ð–&·4*´µYÚÓ*U·+TÝ&U¶)Ô܃@KIŽ<e¹]SŽ4:O—/ÏÄBy'ÊsP‘B¥ÙêsÉ{îxyÏ§Ð“Ûøëz…*Z÷ížVì´ÓÌQê­Á}ÁŸTZv †¶^����0œ ¶Š-Û¶m×Ýwÿy¿í—]ö.]ýuš<y’³n“ùó_×=÷ܧ-[¶†«­­Ó/ùkýøÇ?ú‡}‡b±ú‹ /Ýzï;zpá]sÒýþ#G('«w÷ºwøƒ]ç\£GUêúSÊõ‡)†'��ÀP@ð�� Jîc{B êOž¶ ‚«jZ]§P×<¸¦aoÐ'Ó:²is÷ÍáûåJ²å9¼TžÃJäíš{©Ðø|õ ŸGž«Rö•9•‰•­òŽ/ÈØóí Õ;sî���€Áa°ý|f-¾:::ºmûüç?£+¯¼¼Û6¯×«3Ï<C't¢¾ùÍïhÅŠ•á}o¾¹HË–-×qÇMoûîw ¹sç…ׯ½öj}úÓŸüÿìÝx[åÙÆñ[–÷Iœáì’I aï½WÙ«´¥”ÑÒÁjK?(…(«¥@Ù£´l 3ì„@ $!ƒìaÇñŒ·-}zO"E’5mÙ–’ÿ¯×éÑ™::’¹ì7·žÇÚïé§ŸÕâÅß«©©YÅÅ}¬sžpÂq0 ¨KµÂGü©Þyç]ëøªªj¥¤¤X‰Æ§£>RC‡ x¬ÿõ\yåå:ê¨#´pá"=óÌôÝw U_ß ¢¢Bí¹çx+ô4hÐ@Å£žþ }³f‹ž½Ázüø'UUߪg~:¦Ãáú9ãþïôòWåÖò¿]çþéA4~PŽ���âÁ��—Ü%ÇëœêJ6‡SZ\£ÖÏKåœS.ç¢j×èU”;¯i‘sn¹5y®¦O†’ÆÊ6¶PöI½åìÛ iæ˜)›kŠe3²Õ[óx+#����;«x þlÙ²E~ø‘Ϻ)S&µ ýxËÈÈÐ5×\­‹.ºÔ'04sæ>ÁŸ@Þ|ómÝ~û>‰MÅ!3™ãõ««tÀû<¶²²RúÓŸ5þ7>ëM…[SÈL/¿üªŽ;î]zéÅJNýO0æ}øè£õÇ?Þìó7óÆ¥zýõ7õî»ïëºë~£iÓöR¼ééÏPIašrÓíªiÜz¯|]®Óïû®CáÿÐaÎ]R˜.��€Dйº‡���]Ä=�×hë¢òã®Ó;þóƒZN˜¥æK?’ãßKå\P¡Ÿ`ÊäxkÚnÿVͧ¿«Ös>PÛý‹d[P%[_vmR“5'ø����ñ!ž‚?óæ}ÝîzLežpú÷ï§©S'û¬›3gnÈc~øa…þþ÷{ƒ¶!7!¢›o¾Õ§’[mm­.»ìŠv¡æÜ/¾ø². gݺõ®çûKп—›ššôç?ߦ͛7+Þôôg¨(;EÏ]¶‡2R¶ÿ3—;üc‚<‘ ú1ç4çî•Ý mØ��b€à��ˆ þƒnžàOR«ºBÛ?«ížErV6+Q9Wn‘ãéÔüÓÕrâ,µÝ½P¶ï»·5Z$šì[ßCÿÌ`­����€®O­X±Âg955Õj™‰É“'ù,WWר¢¢"èþ_=ß ÷˜Š<·Þúºå–›tØa‡øìcîE ãÎ;ïVii™g933C^xžkýíúË_n¶Îi³Ù<ÛgÍz·]%#ÿûß Vµ #Ž8Ìjûuî¹g©W¯"Ÿ}êêê­JDñ&>CîV 1¶ÃáŸ`¡sNsn��€DA«/��—Ü!‘¦®þ¬­—ã™´#qV4ÉùÜ 5»&Û lÙŽ¨äcÉ™Ýó¿îµÚÜß´ ����Ðóâ©"ëæÍ¾A‚°-²Üz÷îð|………A¹øâ tê©'{–Mx(??_Ï>ûœgÝÚµëôÝw µûîc<Ë|0Û³=%%Eýë_4räϺ öTqq=ðÀCžuÏ<óí»ït…rà ¿Óôéûx–M€è‚ .QUUµgÝܹótöÙ?R<‰—Ï;üsü]ߨ¡eë5™ð ô<ý“àm¿ý��€ ��@\rq¬ÉûÒÑŽ7ºþoÇ­6ã\½EŽû©ù„·Õvë7²ýP§žÔfÛz¯C}ê?����°sjllôYÎÉÉQ¤rssÛ­3í±‚1¡¢“N:¡Ýú³Î:C>ë>þøSÏãwÞy×gÛôé{û„~ÜN8á8Ÿó,Y²4d¢áÇù„~ óš;ìPŸuåååBp&¨ó‚_åè1Áž@•‚…~^ ô����@é±°G]×´‹;M9^[£f×”´WoÙÏ-í–'�����âEzzºÏò–-[©ÚÚÚvëÒÒÒ‚î?nÜXÙíövëMXg÷ÝwÓœ9_zÖmܸÑóø‡|Û‘½÷Þ ¦¡¡ÁgyåÊUA+ <(àúþýû…<'Ú;h[øç¯Ê?îðwåŸP¡Ÿƒý��€Eð��Ä%›mkÕŸÔV»Rb\>zXäß +É&[~ªk”È5p˜"[f²œIZZ5¶ZAÕ»æÕÍrvsøÈñÙ&k²Mì%ûÅ£eÛ-_ÝÅîÜz?l6Z}����|™*<ÞL«®¶¶¶€›6•‡=Ÿï¶à-ÀzõòmVQQéy\^¾¹Ýþ¡Â?Þª«k‚n ÖÒ,ÒVgð,üsÚ½ ôìÏv·–ÍãWço? ý��€¿=�€¸”””äès(µ-I )Š©¤}ŠåèŸ)çúúÈH³Ë6<G¶AÙ®)K2ó>éJê“)å§ú„akvÊYÑ$gyƒuÎuuÒ:×|mœËk¥¦Ø·83œ_–«u^¹l PêOw•£WšºšÝá.µM;/����ˆæon‡#Æ_²é ¡C‡ú,777kþüo4aža3g®ÏrnnŽŠŠŠ‚îßÚÚñ¶X}yżž‘ù Å£@áô1÷c7B?��`GAð��Ä%÷�[º#YÕjRL¹vRnž¬æ_~.•7¶ßÞ'CI‹dÛ½@I®ÁÛÐì€ážÎÄXœ©®óõM—ÍL»û0Ù\ãRÎ5[äXR-çb×4¿BÎå5R[Œ‚3®Ó8g­SÓìJúÑp%Ÿ3¢Cá¥H¥µmý–f¼ ���ÀÎ&ž*²N˜0¾]éÅ_üÙ¸±TŸ}ö…ϺI“&†<fýúõ!¶mðY.(Ø^)׿ŠÐœ«3Ï<];³x®ê,üãÐ��Ø‘ü��=Æ 9Πی4G×üºâ–­Ô'öWÛ««äX\#[’ë9GçÉ>µXÎA™¾ûª{9M>fp¶’\“°ue}›ßTÈùE™œŸº¦uV+ ¥Éu·—¨uiµìšäºê™-©Öœà����ÄÓFË´ÓŠ999š1c}ðÁlϺO>ùL¯¾:SG}dÀcuÛmkWMçÈ#W(ß~ûjkk­çô¶yóf-^ü½Ïºþýû{2XŸ~ú¹gyáÂEÚÙEÒŠ­' ÿ¸ú��;þõ��Ä%wH$ÝÑu9eg¦]I§Sò ãe¿n¼’NÚ.ô7̵îÕ[öËÇ(ùé”òÄþ²ÿxن娳³Kåø`ƒºJv[øàO<S����v4ñÚ8眳”’âÛçûÎ;ïÖ]wÝãS‰ÇT2í½~ñ‹«­v`ÞLå ñãÇ…|º÷Þø| Éœóî»ïk„š6mªçñAè³í‹/æ¶{~cíÚu:é¤ÓtÙeWèo»K/½ôJܬb-Þƒ?†;üc‚>n„~��ÀŽˆŠ?�� .¹ Z³\ÿ¿Yð3(ËjÓe&­¨UÛ[ë䜹VÎÊŽµEs¼¿QIû÷SW(²ÞÃÄ���€A¼ý}6xð ]tÑùºÿþ|Ö¿òÊkÖ”““mUé)/ßÜ®ÊaÚr]}õ•ŠÄ¬YïZ}ö™f€>üð#-[¶ÜgŸK´Ûn»z–MÅŸ)S&YÄ…~ûÛëuÒIÇkÏ=·¶*ûþû%zî¹ÿ©ººÆšL¡Ýw£ãŽ;F;¢Dùß|^¾r¬.~x±µü¯ vÑþ»ú��;‚?�� .ø·ýJNÞúkJ¿Ö\!Œ¡9Võ]8ZŽ÷ÖËñÂ*9TFu [UÇC‘èÛšoÍÝï©ç9©ò����=¿ºN<8餴eË=þøSí¶ÕÖn±¦@Lèç–[þ¤ââ> gܸ±V@Ç„rü[{¹™Ï/ye»ªµ¿úÕUºôÒË´ys…µlHO?ýk $##CW^y¹vTñø Æ}–þeš���vT��@\rs¬D½„%Û”tÈ�k2ÁÇcKåølSdÇ–d©« ²ZsÿàO<1ßÖ4å×ÍÜÐÌ|gb´MËÌÍÏ^¨¶l����Ÿû÷þxûÛçÜsÏÖ¨Q#uÏ=÷«´´,ìþ3fì£Ë.û‰ŠŠŠ :昣tË- Ø‚+55U¿ýí¯4fÌní¶èÞ{ïÒM7Ý¢ï¾[òyúö-Ö 7\kU2Ú¹ÿv��@| ø��â’;$24%ü7öОm÷Ùÿ2Eöï«ÕúÏÅrÎ-¾s’MÉÇ–S]cHJ±5ÇàOKK‹'ð³3s¿~s/Ì=qâ&Ò78���DÇü¾ßÔÔuÕ_;jÚ´½4eÊd}ôÑ'úøãO´dÉRmÚTný­’••©’’»‡>ø@ :DÑÚÿ}­`ΓO>­ ¾s݃f+4qâ«êP¿~}ƒÛ«W/ÝqÇmúòËyzë­YZ¾ü•——«µµM¹¹99r„uý‡rÐý÷+��Ä‚?�� .¹C"ƒÓŠew&©Í¶s3:ltž’ÿ6UÎOËÔvï"9Wû•F·IöËv“sT×´T³;l’±5øOß4ÆfB`&d&sÌ€.ƒº���ÀŽÇT·‰Çàaþ~Üo¿ÖÔvÙe´nºé÷êóE‰É“'YS´n¼ñºˆö;ì°C¬)^™Ï���âÁ��ЭL;!ÓJ)’}’“íÊÉÌRQ}ºÊ2ëOl[Ze«hVÛæF9ˤꩡUκV©Þ59¼Æ¬dÙRíR¶ëW°‚4Ù\SR¯t©o¦œ]ÛZÉ6­’§ô–óµr|°QÎêfÙ†d+ù„!rî’§®Ò«!KÙÙYÖ{i]‡ë½ {­ìÓQ&ÌÒÜܼÓWø‰†»*’Ø¥���°ãHKKSmm­€h™Ï���âÁ��·LÐ ##Cƒ7öLðÇ„wÖÖ˹¤JŽ¥5Ò:×ãõ®ëØP¿5àKù©² È”mHŽl#r•4*O¶‘yr¦Ç0ha·ÉvÔ@Ù]“[Wµ÷rR›¯ô^éqñmÀÖÖV+ôƒè™ Tcc£õ>ÆcË6����“žžný®DÊ|f���_µ��=*T ó ²úúíÚÔGs´V]ªÕ)ÛÊ-jû¾JZRm}œËj¤Æ6u‹ªf9Íô]•µh=« êŒÈ•m|‘ì{É6¡HÎôøi—‰]‹­÷8Ô·»²Â¡ŸØpßCÂ?���ÀŽÁü­FðÑ Ú��@üaÄ��t™HÚz…Úß]%fBòp=îœ'gäCl®§kû÷µýo¥TÛ¢¸Òæ”óûjkr<ûƒë†$)iB/Ù¦+y¿~rä¥(ž™{;1e˜õØ¿âO´aŸÎ„ƒýÄá���`Ç‘’’bM¦Å/Žûó��€øÂh=��ˆ[IIIJN¶k`^_õ©ÏViÖÅZëƒßËñø2%„f‡Ÿ•I®ÉqçwÒÔÞ²^"ÛÞ}\£o1l #}ërT’ßÏ5(˜l½—=Á´¨"ô{æžš÷´§ÞW����±cZlüA$Ìg���ñ‡à��èv‘TrïcJHçççiøš‚˜lÍN9Ÿ_©DäluH—ªÕ5Ù Ò”tÜ %Ÿ4L޼øùõnhM¾ †ä{ªýDRµ'Öm¿ýtsoÓÓÓ��� ±™¿ÙÌ´#þýtã× ±áþœ��� þð]��×L°À ,íÙ0P1×Ð*g]«³²Im,UÓ‰o«íÖodÛРx0±q°Õª§Â!櫦⺆¹·|+���Ø1dff …Ï��@ü¢â��èqÞ€ü«™ÐÝž¤ iÃUÐ8O•éŠgV²l©rVvâ[ù©²õN—Š3d3í¶Òí[Ûn¥šÉn­s&Û¤†6©É55¶ÉYåz¾ª&i³k*oÚZ½'Zr¼¶F-o®“í°J¾`´œ½ÓÔ Ó5>m¨õÞù#лªO¬+üxëL(åÃgë¹çž¸Í´.ËËËÓ Aµçžã5vì;mË+sSRR��� ±™/m˜6N ññEÄóÙ0Ÿ���Ä'~S��]*’¶^ᘦ޽ziì¦~ú d…b&Ù¦¤sFªí®ïBîfë›!ÛÈ\Ù†çJý2e+ÎPRŸ É59S;\±9œr–5ɹ¾NÎå5r.sMK]ÓŠZ©­c÷͉œ¯­Qó¬u²Ÿ>\Ég”#µë6ŒÛÔWÅ}ûXï]gu$Ô••hZZZU^¾ÙšæÍûZ–èüóÏQïÞ½µ3"ü���ì²²²¬ßï[[¿2.bÇ~Ìg���ñ‹à��è‘‚Üû˜ðHAA¦,¬µRNu.Hä-é¤!®ÑÍdµ=ûƒTÖ([Qºò‘kJ¯¤QyrfÙÛ«+p&Ù¤¾®ç4Ó„¢íÚä˜_!çüÍr~¾É E­É¡¶G—ªmæ¥Ý<YŽÑ¹ê6×ÿ¦llUÅq—$¼Ëê?mmmê.kÖ¬Õ­·Þ®+®¸\%%´³1÷šà���°cÈÎÎVUU•�7ó™���@|#ø��âB¨v_æÛe¦½Ò˜‚!*©ýJkrªKI‡—XS ±‹E)zKfúñ.Riƒ•Êùö:9F9»©QM—ªÔ'÷—³W×·þX“«Ý †)55Ev»ohª;Ú|9kŠ¥_ýê*õë××ú\nÙ²EëÖ­×ìÙkÑ¢ÅÖö¦¦fýûßêšk®VZZÏ´Wë)îû½³¶;���v$æïoô0÷�æ³@‹/��€øÇol�� ®¹C@¦¬´ ^LZÖ?æÁŸ„`Ú‹™êD®)ym½Z__#Ç+«¥ªæÈŽohU›kÿ¤óGª«M* ~#ûFUí'–º¢Ú©hã®jSXXhM{ì±»^zéÍšõ®µ¾¬l“>ø`¶=ôàvÇ›€Ð'Ÿ|ªÕ«×¨¦¦Æº7ÅÅÅš<y¢kšÔn uæÌ7ôúëoZûö-Öµ×þÆ:Ç[oÍÒúõë­õ%%%Ös=*à5›ýŸþ…æÎ§ÒÒR566*''G#GŽÐ¾ûÎÐàÁƒ+æžü���v éééV¸¿¾¾^Øy™¿[Íg���ñà��èr‘´õ Ç´ûÊÉÉÖ>Í#ô^ãJU¥7hgå,É”ýâÑJ>o”Úf­“ã™ä\Qþ¸Š&uµ‚ÆtíÓ2RÙÙYÖ{ÖY źÚO(Çs”¾úêkmÞ\a-› wð§µµUO?ý¬¾øb®Ïq55µÖ´té2}ôÑ'ºøâ ”ŸŸð9L¨fΜ¹züñ§|~Ž–,YjÖYghÊ”É>ÇTVVêÒÚµëüÖWY×2gΗ:üðCu䑇+ºóž���èz&ôaþþhhØyÿöÞ™™¿çÝ_æ��@üãk¹�� Çø‡:µ2%¦ ¨é ’3Ŧ¤#J”òȾ²ÿa‚lÃrBîo•«®6}Ý` ì?Àz¯Ú=ˆ÷7–U:2‹†©r3vìžeSõÇ»$þóÏ¿èúÉÌÌЈÃUP°=äcª�™Ž b¾eûßÿ>ï967wûûl^ësÏýOÍÍÛ+?™óx‡~Ì5îºë.š:u²Š‹ûxŽ3…>ûìsÅBwÞs����ÝÃTÞÅ:XÌ{nÞ{���$*þ��€¸ç®dŸú÷﫽VÕÍ+U›a›«œÓ&%ÐOöýû©mæ9þõ}»ê>¶¹J>´D]Y—%·)MÓ¶ Uÿ±}=ƒÃÝÝæËèîê3î0›©þc‚O7–jöì=ëM‹­K.¹Ð*•n>ϦMØ;ï¼gm[³f­>ýô3͘1½Ýùëêê5fÌ®ºðÂó­vc&ØóÈ#iþüo­íMúþû%Vë1ÜÇú±Û“tùå—iذ¡Ö²yÞÇÒªøc¼úêLM:¥Óï���€“ €˜¿hûµs0U~¨ô��x¨ø��ºE°`A4³oNNŽF ¢ië ¾¬�ÐQ•òô²_2Ú û؆ä(锡J½c/9ÒºöW¿}6 ÒðÁC¬÷(Ú÷5šõñÆPÔ]}Ç´çòvÚi§X¡ü6Ó&,??ϳ}îÜyAŸã¸ã޵B?Frr²?ü0ŸíÏ3qâOèÇý¼Ç{´g¹ººF«V­����cþæ TÕ;óú��HLTü��qÅ]Ý'Øc3UR2@û¬¢Ïû¯Uuj£àË™‘¤¤³FX“[W×cÉoÌдª!0¦¿g 0Xk¯D ôDÊÿ›¯©©©Ö|Æ žuyy¹í*Ùív5ÒÓ lãÆ ¦¨¨Ðg¹°°Àg¹¹¹ÅóØûy͹½[²iÓ& 2X����Œùƒù‚im¬M1“y_MèÇÌ��˜¨ø��Š äççkÄÀ¡:bÅ!>±r„õž˜÷fG ö„SZZæ³ìé˜]nÁ¾kÊæ»Õ×7¨­­-à~‘ÞSs|CCta¸ÆFÂs����Â3Áó7Ÿ»µ3Ÿy/Í{Jè�� ±ñÛ��è6Þ|B­WõÇ|Ópذ!¿f­æUnÐ’‚ÍBÏÙ¥¢—Æ5”hÈA>­¬ÜBUûéŠ6_IIIr8ººÆÑVæy¾ùæ[ÏrŸ>½=!Ÿ¬¬í%ÒÍ·b©««ó<ÎÈH·ª�u†9>==MMÖò¤It衇„<&77Geî9���€ƒùCZZšUýÔÝê‰ÅTª5Õz ü���ìø­��$¤ÂÂB=JG-®ÒмÏÕ’Ô=AøJqØuøª®÷b¤ŠŠŠº³âÐk¯½®Í›+<ËS§Nñ<îÛ·¯¾ýö;ëquuUȻݗ©Î³dÉRŸýc¡¸¸X«V­ö<G¿~íÏkªü¸CZ±°³Uy���vv&0’››kÔÒÒ"Ä¿””«Ê»E5���v |5��t«H+¼„«c*› <PòûkúºABϘ±v°Fd›j?ƒ=Õjz²ÚÑÕgL€ÆT÷immUuuµ.\¤üã½õÖ,Ï>½{÷Ò~ûÍð,Ož<ÉçÏ>ûœšš¶Vâ1•«^~ùUUUU{í?Q±0qâÏãùó¿Õ¢E‹}¶Ïžý‘®¹æwúýïoÒƒ>l Òw���€“ äååYS,¿\€Ø2ïû}"ô��°ã¡â��HXæÛ…»ï¾›6T©åù•ZS-tŸ’-¹Úwã`í¶Ï.ÊÉé|»¨X1¤XÛôÖ[o¹=--U\pžUîÞÍTÚ™>}o}ôÑ'ÖòÒ¥ËtãÔ€T^^®ŠŠJϾô×´i{)öÞ{/}òɧڸ±Ô +Ýÿ1b¸ ¬ªC+W®²ö3•ŠLu ómÏÎêl‹2����‰ÍT’1“i}l¾ð`*™¿Ëº« 3|™/g˜÷Ä|¼ÿN��Àމà��ˆ¦Ò‹©„h9ØãþýûkØàÁ:iI£þ9nŽê“)/Þ2Z“uÊ’1>d¨dqëlµŸX0œfê®fÚ¹à‚sÕ§OŸvÛN<ñx«¢Î—_~e-×ÕÕû´÷2JJèâ‹/°JåÇ‚Ô½ä’ õÀYáó³bBGþ¤³Ï>Så¾ß����`˜¿IÜaS=Õ€ÌÜ=™¿Qņù[Ìü}m¾ŒážLà‡/g���ì\þ��€nçðéÈqîÇf0kÏ=Ç«¼|³NX¶«žÚå[9ý¹9›ëÇ/ßUÓzkܸ±a[|Euî‚Ì5uÕ@rJJ²U}РÖë?~\Ðà‹p=ï¼s¬¶_Ÿ~ú™V¯^£ÚÚZ«ÊŽ©¶3iÒM™2ÙÚ/–z÷î­_ýê*}þùš7ïk•––ª¾¾Þz^Ôš8qOëyc1Ì€2���€`Üa����]'ÒY±E¸ÍÁÜdÙ=%yÍÝ“}Û:»ßd¶åšyssË'��1áþž™Ü[[[ÕÐP/‡Ã©KÔY¡‚?þÛ¼—ƒ=6Á†÷ÞûP3Kë“~k„®3}ý ¾n´8`_+¼â‹j?±¬d‚.èz™™™�����±±fÍZ%%Ù”‘‘iUvWu2s÷c��©©){»fæ[Ä5Ûæm~“sÛÜá59½æþ“‚,‡šû?ööÛîÔä��="š€G$@Ùsϱ:xÕp «)ºÆðªB¸z˜Æß£C¡ŸPbÝþ+ÖUtÐ÷�������€žEð��Äp`Á’Q£FiÄС:}ñê·%Gˆ­þ®{zÚ’Ý­{<zôhÏúh‚>±÷„bB)ÁZp¡ó̽%ø�������@Ïâ_B��@‰¦åS$³Ï”)“Õ/¿—ÎZ<NE Bl6fèG‹Çj@aëGú~„ZŽt[g¤¦¦ ]ƒ{ �������@Ï#ø��zT¬[~™Þç°¿úeèìÅã”Ýœ&tNNsªÎY8^ý3‹´ß~ûZ÷Ø-[|y3Ui¨Äž¹§TS������� ç1Z��âVG[~¥§§ë ƒÔ�{¡Î^Dø§3̽;{Ñxõ·ç[*soÝâµÅ—?T"ü;æ^z‡¿��������@Ï!ø��z\gZ~ ŸdeeYáŸÁŽB]´`‚Š2…è4¦ë‚ïöÔ ×=4÷2;;Û³-Tè'Z|ù#ü„~��������ˆ/��@‰4H’››«ƒ>PýíºpÁ ¨Í"ÓKŽ.Z0QlÖ=ÌËËól‹‡ OG˜ÀŠ©XD‹ªè™{fî¡��������â ÿê��âB´a’H+ÎäççëÐCV¿¬B»h¼FT ¡ ­Î×¹ Ç«8­ÀºwæºEZq)ÔºH¶uw€%%%EˆŒ¹W¦��������ˆOŒÞ�€¸Ñ™H¨@ŠiQu衇¨¤¨Xg.«ýÖ ‘Í)ø±¹þ7uC‰Î^4^%…Å:üðC•““³}{-¼ÂmïéÊ@&Ì’™™iÍ ´´gî‰÷=��������ñ‰Zý�� a˜°ˆÓéìÐrZZš8`}öÙ粯–ÔåêÅ‹TŸÜ"H™­):aÙ®UU¤K4mÚ^>p¡ŸhCAñ¼F39µµµYsó™1ó‰ ú˜÷ÌÌív;a(��������Á��WüÃ;ÑîjÙ<öÙgoõîÝKI_ÍWßo²õ܈ï´&·Z;³µ¹:eéµfj÷±c4fÌn>ÁX‡|â1d^/a��������hþ��€¸*üh[4áîØe—]TPP Ï?ÿBç/ÜS X¥ÙV«%©M;“G’f¬¬+7+GÓö›ª>}úøìÓ‘ÐO<·ø��������Ø‘ü��q©+Ã?Fqq±9ä`Íû¥ÒÖ§hü¦~zcðR-,Ú¤Á¨Ê"¹r¤zµf«I?Mœ8AYYY>ûú��������ˆo��@BŠ4üc¸×ùoÏÈȰZ-_þƒ.\¤Ó—¥kѦMz}èRU¥5jG”Û”¦ÃVŽÐî•}”““£]Çí¢áǵksëÐ���������bà��ˆ[¡ªþÛnÈ^FŽ¡’’úî»…J[•¦áó 5§÷:}:`jR›´#ÈmJÕÞëiÒ¦þÊIÍRɈÚ}÷1QWù‰f]4Û��������=‚?�� ®uEø'в©þcÚ] X¢ *¯&[{}]¢ù5»dµ6gÔ+å7¥k¯ %š²©DY)Êë§1cvSß¾Å1«êCè�������� gü��q¯£á#TØ'P+°ââbiõê5Z±b¥²k²4þÛþš_°As‹×kmnœ ~-ñÀæúßÀš\M,í¯q•ý”™–n~† j›’“}Œ$Ì,¼Cè�������� çü�� ¡#áŸ@ë# ™`Œ É <H6lÔ²eË”W›£½~¢RGµ¾)Ú¨y}6¨"£Añ$·)M{”[í¼ú:ò”––¦ìâl :Dƒ ”ÝnowLG«ü„Zév���������tÁ��0bþ ´.P ÈeJJ¨ÿ~Z¿~ƒV­Z¥ôªt ¨-Ò›Gè‡ôÍú.¿L+r+UšµEÎnιØ\—Ú·.[Cª ´{u±†5)55UÉéÉ*(È× Aƒ¬kOJJjl'Ûxú��������èy��@B‰$ücDÚú+’u&8c@ôWCCƒZ»v­²ê²´{õ@µnnQU[½–g–kYÎf­Ê­RyF£IÅR’#I½ê34¤6_Ãk 5¢¾—r“2­ Eæ3Š2Ô¯__«WVVV§Â= üDº���������:à��H8áÂ?¡ö‰¤ú{á ÊÌÌÔˆÃ5|ø0UTT¨´´L›7oVJMªz;òµWõ9*jnkQ¹}‹ÊR¶hcj­ÊÓ¶¨2µAu)ͪOiSKr›ÚäpÍ·†ƒRZ“dW’knWVK²2[RTМ¡^MYê×’£ÞÍ9êÕ–­T{Êö >éRnnŽŠŠŠÔ·o± ¢ìú��������H\��@BêløÇWé'Üz¸1“ÙÖÒÒ¢ŠŠJ•——[A ººz•8ÓTÒV$5hëä%ص Î$¹¶ÙmÊÊÊ´ž³W¯^*,,PJJJȰM,?á¶E³���������b‡à��)’€MO‰4ücDSý'ÐþÞ¡–@ÛRSS­ª;f2ÛÍdÚ‚ÕÕÕiË3m±–›››ÕÒÒªÖÖV9µµµYç°ÛíV%Ó¶+%%Ù:_FF†²³³]S–ÕºË,›ç °‰U(ÔúŽî�����€È1æ��Â!ø��òÅÄë C¤Á¤hªÿ„Zn›{»™LXÇL}ú(äþ¡®9Vûw$ØCè����� gø·0þ��‚!ø��^¸ N$ûu´Ò·HŸ?Vº¢òO¸mÙ���������]ƒà��É7ÜaÇgÛ/£³ÕÜÛŒPá H¶‡Ú¯#¢ Ùt&ÔCè����� §mwa ��„Cð��´(ãzÙZ �yoµÿ~]%’çˆUà'Ú}�����ï1¦@ã/ŒÉ��€@þ��€ˆ¹‡ìv»âU¤­¿"Ù7’€O´-¿:+–Uyü������Ä3æf0��¢Að��D,))Immmjmm‹ëà[¤ÕÜû‘Vïéh•Ÿh¯'Z]Õª‹'�����€®eÆÜ 3��)‚?�� bfÐÁ@•––ªDMõŸhö4ê¸Xéʪ=~������º‡s3c1��@4øÍ��„e¼êëë•hܯ!Úý#m—ÍþíóuäÚºëµ������`+÷˜›ûËwŒÍ��€HPñ��åß*kë ƒÔÒÒbõOÄoEÓþËû#–mº‚+–:]Ý. ������±aÆÚ̘›ÝžÔṉ�� ��@Hþ v{²µ®¡¡A‰ª£ß˜ŠeeÿsuÅ9;z<������º—k3ã2fìÍc5�� ‚?�� ,wya3·ÛíÖºêê%ºÎ]º»ÅW¸kèì9������Ð3ÜcmfìÍ{,�� Z}�€€üÛ[¹Ã!fÀÁL­­­jjjRZZšwè%Ú6`Á΋ó…;w<������cÆØÌX›wèÇ{ì†/m�€Pˆ �€ 4$'om÷UQQ©M¬R‚µôŠvŠõõ������ >˜16ï177Æq��@$þ��€v (xWü1ƒfÞÒÒ¢úú툺"tÓSv¤×�����°#1ckfŒÍ{Ì-Ø8c;�� ‚?�� (ïAÿ 4)))Ö|Ó¦Mr8Ú‘%bp†°�����@|3cjflÍ{¬ÍL‡ñ��Á��V ÖS¦ç¸»üpyy¹v]Õ‚«³âõº������˜Ss·ø2cm]Ùþ��ì¸þ��€€¼¿Uä½ÎÝîËýM$»=I ª®®ÑΨ'd�����Hlf,ÍŒ©™±5wµŸ@m¾Ñ��xK��@Â?Û[~¥ÊélVUU•’“íÊÊÊÒÎŽ������SWWg¥™*?fl-З¼ø²��ˆÁ��”\p:ž¹{»Õ—›ùV’éI^^¾ÙZ&ü������´gB?f m{5m»Uéǻ՗Õ~��@$hõ��"èGîòÃ[¿´µ$±¸¨®®������€í̘™èÇ¿ÅÕ~��@´¨ø��Bò®úãf#L…÷À„áþ´´´¨ªªZMMMêÕ«—g;������°3ÚZ)»\ ÖX™GKNN¶{‡~ü@ ��Á��1ïP @°p‡Ì@ÆêÕkÔ§Ooeff ������ØÙÔ×׫¬l“OÕlw{/ÿ‰°��è‚?�� wÀ'Ðr j?þÇšõÍÍÍjkkÓ¦MåÖ€Faa¡ÒÓÓ������ìè›TQQa}AÎŒ•™°Ojjª'à,ôã=Þæ�"��!ø��"IøÇ,›õFZZšZ[[­É p”––ZùÊÈÈ ������v(f\¬¡¡A••UÖâ 3fªd»+e{}¢ ý���Cð��ä_õÇ] ð» ˜û±»t± þ˜}·ö3ßlm7Û²²²¬*@îžæ h������ ˜±/3Öe¾ôfªûÔÕÕYc`†»­—ï2c`îq/÷z÷ãhB?Œ›�€`þ��€ " ÿ¸›A 3Øá^v~¸1̲ù¦“ 1ͼººÚ5©ÝsxŸÃ{������t'wàÆî¿Ýp‡z̗ܼ>Þ!ï¹ûxïsú��Ñ"ø��B þñxð¹«ÿ¸@îe3èa˜u&´µ5˜Sî§p‡…Üç…@������b!\¸Æ lë:ëÿ­ew…÷¾þŸ@Ëþç%ô��:‚à��+P'XøÇ=páûx·ÿò^çqs¯÷~‚=������ˆÆ¿…v¼>þûz·ö U9(Ð2��@0��@Äü«ÿø‚ÜÛ½7¼Ûy¿µÒ}¼×¹÷������z‚{œËU©'Pû.ÿP°c½ú��Ñ ø��¢Më/Ã=°á]ÑÇLîj?ÞaŸ@! ïöa������@w Ò Õ®Ë¿"P¤U~‚­��…à��ˆZ°Ö_Þë‚ \ø}Ë{;������ÐÓü[{¹×ÚNà��t'‚?�� Ã‚Uÿ1ü@fnÚvy/‡jóå?Ø*D@������*pl[$-»¼ÛƒEz>��€Ž ø��:%XÅž@ëýÛ~ òÞ������t·P!ïõÑTóa¼ ��ÄÁ��ªÿ¸×þ!ÿõ*ýD:øAÅ������tDgÂ7ÁZyùov��@4þ��€˜ Vý'Ô¶`$þ Hž������ˆµpŸ`ûG» �� #þ��€˜ VýǽÍ[¸ý †Pí������ÑÙ0N,A���Eð��t‰PÕíçm‡������t§hÇ£¿��]‰à��èR‘€ü÷÷FU������ô„΄vü��€î@ð��t‹h@Ž������âcY�� ;ü��ÝÊ{àƒJ>������Øö��=…à��è1þ"������ú��€xAð��Äp&ƒ�����€n@°��$ ‚?�� a0à���������l—$������������� ‡à������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà������������€þ������������� ˆà���¡ššÍžý‘–,Y*��������€ž–,����a­Y³F—\òUVVYËçž{¶~ò“ �������� §ü��=¢¶¶V‡rDÈ}RRRTXX ~ýúiÆŒ}t衇¨wïÞB×8ì°#U]]ãY¾þúß騣ŽTw ô™¸ýö[5}ú>!;㌳µbÅ Ïò™gž¡Ë/ÿ™bíùç_ò„~ŒÇR^x¾RSSµ³‹ä³ÓÓŸ//¿üŠn¾ùVϲùoÍÌ™¯�������€DBð��Ä­––•––YÓ×_Ï×C=b:Ž?þ8!2mmmÚgŸý|ÖÝqÇíš6m/!:EE>Ëyy¹V8-Í™3W?ÿù>ë>üð]BJ��������ì`þ��€„Q__¯?ÿù6ë1át·SO=EË—ÿ >˜­>}úè׿þ¥l6›���������z Á��7L;¯þýXM¥šêê*«ÒϦMå>ûÝ~ûÚ{ïiVøè.¦ZÎ7^/��������€xAð��ÄãŽ;VÓ§ïã³®µµUwß}Ÿž}ö?>ë^zé]|ñ…���������vV��@\KNNÖ/~q™>üp¶6lØàYÿÍ7ßÜßápX­˜Þ|óM-\¸H•V¥–ââbMœ8A'œpœ†¦p***4sæë®çýH7n´Î“™™¡Áƒ[Õ†Ž=öh…<GCCƒ^yåU½ÿþ‡Z¾|¹¶l©SVV¦ ¤½öšªO<^………íŽûá‡:ó̳=˽{÷rçE555éÉ'ŸÖÛo¿£uëÖ)==Í:×QGa…¦’’’<Ç,Xð.ºèǯëÊ+éy|Ç·kÚ´½ŠÓét]ë©>÷ÿ€öÓ-·ü_Àý›››uøáG[­ÙÜ.¸à<]rÉEê ¿ýíµzï½¼–¯±î×·ß.Ðã?áú,}«ººzõêÕK“&MÔ~t†† Üî<ÿýïÿ¬jSnýúõÕ /ü7èöÃ;DøÃ*--ÕÃ?ªÏ?ÿ\å囕——«]v­SN9Ùú„òñÇŸèÝwßs]ãUVV¨±±I¹¹9ÖçмoǬk9׳ÿc=¡ûîûGÀsí»ïžÇ~ø®õsá­²²Ò Ô}þùZµj•jjj­}úõë§qãÆêè£Ôn»íªîÐÑŸo555zñÅ—5kÖ»®Ÿ—µÖºáÇ[÷ýC��������;‚?�� î™@Ën»íâ<Ù¸±¬Ý~&¬sÝu7jÞ¼¯|Ö› A+V¬°¦ÿýïy|òIV˜È„Šyíµ×õ—¿Ünm¼™ „ ‹l Œ<©«¯¾Ò ݲhÑb+p²qci»s˜PŽ™žxâ)ýò—Wêè£R(æú͵\vÙ/¬çv3÷¹L8䯽­]˜#l6›õ:|ðaϺO?ý\JOOo·ÿÇêú1Ç›ÐH¼0÷óý÷?Ðï~w½s3Ÿ/6yûíYºé¦ßkÆŒéê ó<k×®ÕÅ_ªÊÊ*ÏúÍ›+¬{d¦óÎ;G—^zI»cMhå7¿¹¶ÝgÙ0!43}õÕ×zì±ÇõÇ?þÞ £uÆ«¯¾f…–Ì{êÿLðÆLÏ?ÿ‚Ž9æh]sÍÕJIIQW‰ÅÏÎÒ¥Ë\Û¯Qi©ï'LÈËLæõôïßO��������$º$��$�ï ‰‘‘‘á³l‚^xIÀ „7S½æ¹çþ«ÿû¿[næ™guÓMÿ×.ôèzÌ~3g¾Ñn› çüøÇ?m\ðgBúÓ-zùåWBî×ÖÖ¦;îø»OèÇßœ9_êRW1Áàq3×nÂ?Ìš5ËgyÏ=Ç«ÿþŠkÖ¬Ó 7üÁ'ôãͼ¶?üá&mÚ´IÑÒÒ¢_ýê·>¡<ò˜UÕÇ߯ý»°ŸeÃTÂ1û.Y²TõúëoZŸCÿÐO &uçw««ÄâgÇ�þó_´ ýx3÷ý³Ï>��������‰ŽŠ?�� î•••iÞ¼¯}Ö à[­ãÖ[oÓ† =˦-Ð9眭ñãÇY•qLû/SíÇ v˜1c†<pÏ1&<qï½¾m’L[¥O<Áj1´fÍë¦òˆÛßþv‡¦OßÛÓnÉ‚L¨Ä<§ÛÀuî¹giÈ!V;%sŽÏ>û³ÝTZ1í‹úôé£@Ìó½öÚLëø£> =™j/¦…‘7S‘墋ηªð 6Tÿüç}Vhè§?ý¹Ï~¦ÊŒ»½—Ù/¦Ý“ ðx‡QÞ{ï=«å—7Ó¢ÉT²ñfªÄÄî2U¤Ìuí¾ûnVû­—^zÙõ9Ûô1š—_~U^x¾:Ê´‰3¦L™¤ýöÛ× “½ûîûVÅoO=õŒöÙgoÏò×_Ï·Þ_o§vªN9åDåååiùòt×]÷hÑ¢EÖ60ú׿Ôm·ÝªÃ?ÔjË5gÎ\Ÿ MÆÝwßé©宨c4wÜq§Ï~£Gv}^϶ڙ6eÿùÏs>!¯^xÑú<û¼vT¬~vî¾û^UUUûœ»¸¸Ž:êH«Íš©øcZ¿™÷�������€DGð��Ä%S¥ªªJ_}5_ÿøÇí*ðxàžÇ&óÎ;ïy–M¨á¾ûîÑèÑ£<ë&Ož¤~ýŠu÷Ý÷yÖ=öØ>ÁŸ'žxÒ Q¸™ÐÏC=`…ÜL˪óλPµµ[¬e™5ë+d¼õÖÛ>-É  ÿû_ÊÎÎö¬›>}]sÍo4{öÇÖ² :<óÌsºüòŸ)˜Q£Féþûïö7N:éD 6L<ð gœ0SÌkÍÌÌ´ &øãϬ7S´L[%ïàÏG}b]»w{1³Î»rŒ `xàþŠ77ß|“öß{héä“OÔé§ÿȧ:ÏçŸÑ©àqꩧ誫~áY>ýôÓtÅWé‹/æzÖ™÷}\¶l™Ï9z÷î¥+¯¼Ü³lÂlwÜq›®¿þF 4Øõ9¢‘#GZÛL�ÆLÞá7óžû·‚3ï•i5¶jÕ×´ÒõsÖ¬»îú›g? ›0aO~øÑV¨Ë0?›óç«C9H±‹Ÿó3àýß‚­¯ÁüœÜç9 Q™J]üãŸ�������@¢#ø��âÆ/ùëˆö>|¸O¥™7ÞxËg»Ùæúq3!Œ‡zÄÓ6lñâÅÚ¼y³ŠŠŠ¬Pƒ© äͼC?† #˜õ_~9O#FŒÐȑí`„Û›o¾í³ÿÙgŸé\0LË,SÈ^0L»§PÁSõÄ?´qæ™§ë_ÿzÈSÅÈ0Õ‘ºÊî¯Ûoÿ›çþ™¹ Ç̘1ݳ›¯C9DiiiŠ'&$ãú1L%£Ž:Ê ¹u¶Õ—©*d*0ù¯;ãŒÓ}‚?&Hc>‡¦ª’áÿ>oÞ\aU¨ñþÌçççëî»ïRg™ó¸CkÁ˜ÏkjjŠ'øcTVV(Öbñ³cªù‡žÌ6ÿóyäáV•§ùó¿��������‰Œà��H(¦eÏí·ßªääí¿ÆøWHyë­Y>aoîЊÛ?¬°‚?k×®kWUhï½§<ÇE]`Mø_Ë“O>c…„üù?תU«ÔÚÚêóº¼ :¤Ý:ÓÒ«W¯"mÚTîYçΈ5ó|x€^}õ5Ϻ÷ßÿÀü©««ói esÌQŠ7¦BN ðYöÿ¬D«¨¨ÐÓÎ[IÉ€vë¶WIš:uŠõ90ŸÃƒ~ûÛk­÷z=v·‚K£FÔØ±{<g˜÷ÐüL˜Ï£i}¶~ýëó[]]㳟¹¦X‹ÅÏÎúõë|¶™ÐÙ¤IˆiÑGð�������èþ��€„aZM™–GYYY>ëËÊÊÛíûöÛï(UUÕÖ<Pu—¾}‹ Ó6ÉÝÌÍ´!3S$ª««­R ÁAÁÖwÓêÌ;ø3{öGžÐŇ~äSmeèС3f7ś}žââbýò—Wê/ù«OÀ¦¼|³UùÇL†©~cªM]pÁyš8q‚:Ê„äL{¬ÿýïy«íXOˆÕÏNEE•Ïú^½z½ßÅÅ}�������@¢#ø��âÆ.»ìbUá0æÌ™Û®GÿþýÚ…~:«¹ykõ`‚¢ÑÙsø·(ŠGãdzڭ[·µ²JMM­¾þz¾UUåÝwßõÙ÷˜cŽT4ìv{»uõõá+Õ××ù,›vZ‰îøãÓ¨Q£ôè£YU”}6ÌçÍTÄ™7ï+]uÕ/tÊ)'+Zæ¿ûÝuž0‘¿ŒŒ í¾ûnZ¶l¹*+«ÔUbõ³ãžPç튪E��������t7‚?�� n\tÑùš>}Ÿm/ÐW\¥Ï>û³ý‰'žÒñÇ«ÂÂBŸãzõò]¾ôÒKtÞyç(}úôi·nãÆR(R&$‘••©ººí-¢þõ¯Xí™v$¦êÏ?ÿù/ϲ Ÿ˜¶SsçnoËdª¬~øaІ¹Þ-®Œ ¾Ó¡‡ô˜ÒÒRŸVgF~~lÛ_õ”ÝvÛU·Þz‹jùþû%Z¸p¡/þÞªÊc>›n&Ür÷Ý÷é ƒl÷³ÎÌ™¯û„~Lhê˜c޶x¦˜ù¹0•…Î8ãì. þÄêg§¨È÷çµ¼¼\---JIIi·ïÆ�������@¢Kü¯C�€ÖÏ~öSŸê-õõõzà‡Úí7lØ0Ÿå (Z%%”––æ³î£>¸ï½÷þC'tš~ýëߺ®çA+œìZ¾ýö[íhŽ<òpŸ÷ÅLÕŸ††íÕyöÙgZÔ!01Un¼™¶b«W¯zÌ}÷ý£]å–Ñ£GkG`^—iueæ&�sÚi§êÆ¯× /üWW\ñsŸ}M8è»ï*Z¦U›·³Î:S¿ýí5š1cºÕr̼'†U¥®‹ŸSÊ›¹/Ÿ}öyÀ}Mk:��������Á��·FŽ¡Ã;ÄgÝË/¿¢+Vú¬;ì°C}–?ùä3«ý‘?¢8üð£tÁ—èæ›oÕÿû?µµµYÛLÅ‘ýö›á³ÿ³Ïþ§]èdýúõz饗¬VW|0[?üˆ–,Yâu-¾×ûÔSϨ¢¢¢Ýµ¼þú›®}Ôe—ýBwÞy·Þ?p«¥Îr7¼kŸå¿o°Öc&2qâžžå… ¹®ÿCŸ}Ž>ú(uÄa‡ìw­õúÉO.Ó»ï¾ïy¯ sÿ¯»î½ùæÛ>û÷éÓ[&ì©DvÏ=÷ëG?:Wûï°N9å =óÌ|¶›÷é€öowœw¼@íÎêêÚ‡wª«k|–M;=&ØUZZ¦P"ùì„Û'?;S§NQjjªÏþæ~ÖÔø¾Î_|ɪ �������@¢£Õ��ˆk?þñ%zç÷<!Sýäž{îÕ_ÿz›gŸaÆjï½÷²?î}®¸âjqÆiš4i¢‚X´h‘ž|òiUUU[“ùGÿqãÆêä“Oòœç¬³~dLÜ­¦¶l©Ó…^¢N8^ƒ Ôºuëõ¿ÿ=¯ššZÏ199Ù:ôÐíBzì±'TV¶ÉZ./߬óÏ¿HgžyºUÍÆY¾øb®uó<sç~iMéÚÿýkæµäû´izðÁ‡]÷ ÒªÐsä‘Gx*ódddZ÷Æíùç_²Ö >Ì ay;ꨣ4gΗÖcó:žþ϶¢¢B×û1MaîõK/½ª~øÁ³nóæ ýîw×)33S½{÷v]w½çþz3Á’+®ø…ìv»Yr²]Ë—/÷,›ªRæ½2aóy[½zzèß>ǘ6Y¦5—[ jK7ßügí³ÏÞÖ¹Î8ãtk]ß¾Å>û<úèã*))±* ™Ÿ¹?œ­»îº[áDòÙ ·O,~vÌgäàƒÔÌ™oxžgÕªUúÑα>ëyy¹š?ÿªý��������v��@\3ÁÎyê©§=ë>þøS« Éĉ<ë®»îw:÷Ü ´iS¹µlB &Ä`¦@L@à7¿¹Æg N\vÙO¬*"nµµ[¬0B &hrÍ5¿Rvv¶g]NNŽ~ÿûôóŸ_á©Pcª¥ÜqÇߌiqtî¹g««˜Îk¯½îY^±b…n»íoÖãAƒiß}·V:3fWmذÁ³ßÒ¥K]¯å:ê¨#uýõ¿ó9çì§ÛoϲÂQþŽ8∇oLµ–;î¸M_|i»p ~˜G0—^z‰<p%º³Ïþ‘Þ|ó-×{±ÑZ6A¶PŸeãÇ?¾Øçs8dÈ`õë×Ïçýœ=ûck2LE&óY=䃭 :næ9M%o&<Ö¿«ÚU0‘|vÂí«ŸŸÿügúä“O}BFæ¿ þ÷ïÀ÷·‚~��������$2Z}�€¸wÞyg[•N¼ýýï÷Êétz–M…“‡z@cÇîö|&qß}wkèÐ!í¶~úiºþúk•––ò&8tà ×éCj·Í´šºÿþ{¬¶SᘊD÷Þ{—ÒÓÓÕUL($ص,Y²ÔóøÜsÏ x |×n¹?tPÀs{lÇÚ|¹™Vb>úpÀ{HïÞ½ô—¿ÜÒ¥á©îdZvÝwß=V•›pÌûuå•—ëÔSOñYoBi¿þõ/•œ8ç¿té2knBaþÇúûùϪ=÷rŸH>;‘싟‚‚ÝsÏß]Ÿ£>A5aBÿ��������$"*þ��€¸—››k…:î¹ç~Ϻï¿ÿ^o¼ñ–Ž8â0Ϻ>}úèÿ¸WŸþ…^ý -Y²L›6•©¥¥Uùùy=z”f̘î:æp¥¤¤}¾£Ž:BÓ¦MÕÌ™¯ëƒf«´´T•VK¡!C†h¯½¦êøãUQQQÐs˜�Ò3Ï<©÷Þ{_³f½£Õ«×ª¼¼Üª„cBJ{ì1Æj6mÚ^êjæ¾<òÈCzôÑ'¬J(æõæúÓÒR=û™vK&<õè£éë¯ç[-¶LÀ'##Ãj­ä"9úè#õÒK/û¬3-¢L¡Î2á›núƒÎ;ï\ëþÍ™3×õ^nò¼EE½4|øPpÀÚgŸi]œê ýúõu½gº>?èý÷ß×wß-RUU•ë³Übµ«8p ¦Nb½½zõ xó9}øáéñÇŸÐW_}mµ{3•úöíëig\uÕ/\皬_|I .RuuÕ:l̘ݬ Ü”)“]ïÅÿ…¼ÞH>;‘~¾bñ³3bÄp×ë~D/¼ð’Õ*pݺµr8œV[±“N:ÑúïÆ|(��������-ûÙ<5·YvOI^s÷dß¶Îî7™m¹fÞÜÜò‰���Ðm6n,ÕñÇŸä³îÚk£cŽ9Z���������ñ,55eo×Ìášj¶ÍÛü&ç¶¹ÃkrzÍý'Y5÷ì/Ô6 ���Ð!¦j‹7Óþì ƒ���������ºÁ���Dìÿx@½z©¦¦VÏ<ó¬Ï¶£>Ê ÿ��������� {ü��@DÖ¬Y£Gy,à¶‚‚|þ9��������@÷!ø��€ˆ|ðÁ‡×çädë¶ÛnUAA���������Ð}þ��� "--­êׯŸ***d³ÙÔ§Oí³ÏÞ:ë¬3TTT$���������t/[ ö³xjn ²ìž’¼æîɾmÝo2Ûrͼ¹¹å������������a¤¦¦ìíš9\SͶy›ßäÜ6wxMN¯¹ÿ¤ Ë¡æþý…ÚfI������������€„Cð������������H@������������€Dð������������H@������������€Dð������������H@������������€Dð������������H@������������€Dð������������H@������������€Dð������������H@������������€Dð������������H@É��HN§S������@W³Ùl��H��@Ü Ø�����€xnœŠ`��ˆ��@!è�����€Dä?®E��ô‚?�� [Eö!�����€žI¨Ç{ ‹��èN��@·à‰$ØCø������=Á„x¢mûåÞŸ���è��@— 40j°Äáp������ˆƱ’’’‚îãö!���ºÁ��Ð%" ü˜å@ë"=_¨õ������@$‚s‚­÷ÿâšÙϽo ° ��Еþ��€˜ úqŒ˜å¶¶6kÙ<ö^ï½������Ü•~ܳl›¹Ýn÷YoƸµ�#ü��bà��ˆ™p3™°Okk«g½÷Üûø`#}^������ œpAœ@•{ÜëÝ_\sïcæÉÉÉVÈ„üƒBÞç ���b…à��ˆ‰`-»Ì�ˆ ú˜À™ÜëÍ�HZZªRRR\ƒ f0ÄÆ€������ÂÖ ÖfjSKK‹ššš­±¯ææfkŒËŒ}™É‚€ ��±@ð��tJ°*?îê>fàÃÌ 3˜‘¥ÔÔTÏ€������h¶†{Ì”d}±-33Ó3ÁŸººzë‹pîÉlwW¢ú��ˆ5‚?�� ÃUù1fn?f2Ëæ›M99ÙÖ ������°#2Ážôôtk2ãbµµ[<_Š3ãbf2!Ÿ@ Â?�� £þ��€¨ ü¸'ôijj²¾Íd–óòò\ƒi������v&äSXX ÆÆ&UWW{ªc§¥m'3A÷dPý��tÁ��ïÐû±»Ê¼0¡37ßl2U~hé�����€•ùB\jj/«úOcc£5ŽfÂ?¦õ—»úá�"ü��¢Að��DÌ?ôã=™²Å&ôcggg)++K������ÀÎ΄{òòr•œl×–-ujhh°Â?¦* ¹ƒ>„��@Gü��a…jíåú1¦µWFFº�������lg¾(—”d·Z™±4ļÑú ��D‹à��)\è§µµUÍÍÍ„~������€0Ücg&ücÆÔL°'9Ù÷Ÿë¼Ã>Tÿ��áü��A… ý´µµYfž““Mè������ÃŒ¡9mª­Ýâ ÿØívŸ}ÿ��€Hü��… ý˜ ?¦Å—©ø“ššj•*������žKkjj¶‚?IIIV°Ç̽þ��‘H��@üC?¦Ê þ˜Çùùy������93¦æþrk3½Çà���"Að��´ã?°`¼·™ÉÝâ«°° Ý·‘�������„fÆÔÌØšc3cmþï19ƒ0��„¥��ñþ¶‘iïe¦ääd¥§§ ������@ôÌØšcs·Qñ��D‹à��)PµS~ØÌiñ������tŽcós Uõ��ÀÁ��–lp÷7¥‡Íd·Û•šš*�������gÆØÌX›{ÜÍ{,�� ‚?�� ¨@}ÄÝ%‡sss������ óÌX›÷Ø›7ªþ��€P’��†woq3øàZ£´´4%¾!Õ16›M������èZ[ÇÚ¶Ž½™ @î±8Æf��@8��@@î Œw_qóí"3ÙíÉJJŠÏÂ|b+ØýdÐ ����� vÌX›s3­¾Ìø›Yöÿ��ÁÐê ��äø0ËfàÁÈÌÌT¼ð®FDè§ûpß�����bË=æfÆàÍ��Bð��„äv˜om þ˜6_©êiNâ ï�����@çlsszªþ0Þ��"A«/��ÐŽ÷€‚ÿc‡Ã)»Ý®žÀ@Güó~(? �����93æfÆÞBÍ1Þ��üü��AùmÌ7 Óc¼§¯%Þη£ˆåàƒQ������‘s¹¹ÇàÜc��¡ü��A¹Ã1þe…»s ¡³>Ñ v¿:úž»ÏÇà�����@hÞã'îñ8³Žà��…à��ËÞp÷ïîçíêcžÿ}v°‰*�����€ðÌŠ»âã\�� ��@â7ôC+°ÈÄ*|Ó‘J>„������"Aà��DŽà��ˆ+Ñn¨½H_¤h[ÀÑú �������� vþ��€v…Câ-0ÉõP¹ãÝ»pa*ú������ÄF"ŒÏ�€ø@ð��„Ô ±ótæzw¶Á“hC:‘T÷‰´¢!!�����€ðC��áü��q¡³¡ŸHC;|3j»P÷"’àN¨ý"”bà �������� sþ��€×™ÐOWV�Ú™ùß·ŽTø!ü��������еþ��€¸.ôãp8ÔÒÒ¢ÖÖVkYîÌywV‘p’’’¬}“““•’’b- ðì��������è:��@êhÅ÷ú¦¦&577+ܹù„è í¸ƒUfnî}jjªÒÒÒ:þ!��������Ð1��@éHèÇ{]mm­5­nÞ¤9¶•úÁ¶IU¶µÈ!k/ç¶0‰µ`“sÛ\~óí§´E¾¯çÜ6¿çò_¿íx¯mÎpûzÍí®Áëøhöu†»¿ãî»u[ªk*HNÑèÌL퓟¯¡¹¹ÊÉɱ¦`­¿ÿ���������ÄÁ��覻+æ„ ý˜ù¦M›TQS­7ShnÊ*Ÿ@NÜ„~ÜçõÚ8p£ ýÈë¼Îtß­çnr=ÚØÜâšj4»ªV{çæêÄÞE*llT¯^½¬�O  á�����€È›c\��Bð��„o-²Ìõ”——[¡Ÿ'Ó>ÓŠ¤ò •sÔ塟ÀóíOu•pAÅ:ôcó ýDº¯×²iúõQUJ›[ô“mWçÿ������ sh_��ÂI��@5hªÚOMMêëôFÊ·!B?y<g¼‰$ô4È;ф~Bî«èC?ê\ègûziI]£ž/Ûl½7æ=ÚzŽàïc d��������D‡à��ˆ{î@Hkk«,Y×V¡/“Ww.ôqk-yžÃ{Þ.\£X‡~eè'Øs…ýD[(HèÇ}ÜÇÕuZSWg½Gæ½Úz.Â<���������]…à��èvÑT}ñ^®¯¯·–¿´¯ò ä òøÌµu]è' O4ûFúñ®ÈÓ­¡ùîbîú1ë§>­ª³Þ#ó^m¿7ÁßS…���������"—,��€ÑÔÔdÍ—«l늡Ÿ\{–ϧ‰™ÃÔ7%OiI)AÏ[ÙZ§nø@_nYyèGÑ„~ä™Gú‰¸*P„¡¯kv¯›Ò«¯~¾Û8¥¥+˜Æ¶6­««Óe›ôâ+UÝÜ0ôã¾¾ïjê¬5î÷ ���������]‡Š?�� n„« ÓÚÚfÍ«Tï>1ÿ猙š=JtžN,˜¢Ái½B†~Œ‚ä,ý´ßÑ…~"® ´}ÿAX†~¼N`Ÿ+ÇŒú1Òív ÏÍÕ#†ë‘÷Óô¾ÅÛž¾}èÇ<ßæ–­ï‘û½ò<}U���������‚?�� !˜ ˆ;,Òšä Œ1¡Ÿ+‹Tz˜°¿Œm…#ªœÓ¡ŸˆöUä¡m;Îo›w¥žÌ$»¢‘‘œ¬k'í©éýú¶»>ç¶y«çºœ„{���������ºÁ��Э‚…A¢©,cÚ{ý¬÷¡ŠV[[«Ö”¯¢ñýDØZ«KB?Ÿ3`èÇ:ôcækJ7X¯=æèkÆï¡¼Ô´v¡…ÉùDú��������ˆL²���âœwÄzìŒÑÖÀ̱y•š”ì³oÅærmÙR#‡Ãôü5Î&ý·eñ¶ƒ„~"n­aG^™�!ŸHC?΀×ɾ[gÿøa™Î¨Û¢üäà¿&%%);'W……½d³m=>-Ù®S†Öƒ —µý˜çr­tïëý���������±Eð��$ ¿Ͷ@ËÞY#}ö*¯Ø¤'«>ÓWmÔ V¿ Ž‚yÔÅ¡Ÿ !gGC?Š6ô³õ¹¾­«Ó·Ë—¾†mûfÚ“557[Œ–z÷ê-·úë_ß-S»Ð���������Ð]hõ��âNØVOB?f]^r–Ïnÿ«úRŸ´­Ž>ôé¾Nï ‚Wí‘÷õÞ§ã¡EQ(øs ý˜Çu­mz·¢FO/_%oé úq†®îC/��������€Ø!ø��z\¨0H»6_–ÀUvìI¾¿Ú|ÚºZQy|7aöuFä‰fßHC?òýغ,ôã½ï{åÕòfÝ롟Àï[{zÆã?©8D§žz¦–,Y*��������˜hõ��ºM,CZkù‹¨Ò…~‡|º>ô£ÈB?Á7 ýÈK}ë[ÛP°kè$óY±Ùbs.ok×®ÓÌ™¯ë‹/æjåʕڲ¥Nii©***Òî»Ñ~ûíëšf(99±Mž9ó ÝpìÇGq˜nºé÷žmúûßïµîqmíÝsÏ}®å;��������Á��|+È´ý8 $¤z…Ÿ¨Zk… ò¸Ïëõ¼‘‡~l=ú‰ ‘ÞßСŸ® ïtD}}½î¼ón½øâËr8>ÛZ[[UWW¯Õ«×X™ââ>ºæš«­ÐŽ(==Ýš¬å‚‚�������€ÄD«/��˜üC?Î »ûø†hbú‰¶µV¸ :úQèkð>o„¡Ÿ Åšb\é§+”••éœs.ÐóÏ¿Ø.ô“››£ìì,Ÿu¥¥eºúê_ëþûÿ©Qff¦îºë¯Úÿ}uòÉ'ꪫ~!��������˜¨ø��âŠoeŸ i“(*ÒøÌƒ["¯œ£0!š.ýD[(\'ľŠ2ôÓ¾]š÷:ÿ}·WÿéÎJ@¦ÒÏe—]¡•+WyÖíµ×~ú©š0aO+c˜öWï¿ÿ¡|ða••m²Ö=ôÐ#V °SO=Y;óÚÍ����������@ likmõìáy³ÐO¸MŒB?ò¿^u[èÇÙîzåu ¶À÷×gßø«úsÏ=÷ë‡VX“’’tõÕW¸ÖÝ¥éÓ÷ñ„~ŒÂÂBxâñzê©Ç´Ë.£=ëM{°ÒÒR��������Ä#*þ��€´ªOȃÌÿµ¶¬*_§Á½X»˜ÇíC4Þ›ž ý(tè§Ý¾¡ÛŽ…­Þ£@×Û~ßÀ¡ßçZYºQCúöõ<µo4ºªÐúõôßÿ>ïYþñ/Ògœò˜üü|Ýwßßu≧ªªªZÍÍÍz≧­À·+®¸Z}ô‰õø±ÇÖ°aCõä“OëÍ7ßÖÚµë¬ãfÍzÝ:Ÿ·U«V륗^Ñ—_ÎÓêÕ«ÕØØ¤¢¢B•””hß}§ëøãõ $óé§ŸY­Ë¾ùæ[UW×(''[{ì±»Î=÷l76ìñÞ×ûíÖþûïp¿X]/��������è��@Ük äy¤æsT·›µø¿ÖE‘WÙ úɶ§iBî@Mɤ’ô|¤d('9Mñ¬¦¹Y•ÍMZµ¥VŸ•–iΦ2minéTèÇÌï[´ZgmÙb->±¦2¢ÐOw¶õò÷ /ÊápX‡¦óÎ;'¢ãrssõ³ŸýDO?ý¬µl/¡444袋.ÕâÅßÝÇ܇{ï½_=ö¤çšÜ6n,µ¦¹s¿ÔO<¥;î¸]£G xž¶¶6ÝrË_ôâ‹/û¬¯¬¬Ò‡~d…y~÷»_+55U«ë��������]‹à��H8Á‚<‹åúSÛ‡ŠªµVÐOº-YGôÙM'õ§L{ŠInjª5 ÎÎѾ}û«©­M/­\©g—-W]k[‡B?Æ75ºfÁúˆöîŠ6Æ1Ç%»Ýñ±'œpœ5Eâÿø—úIKKÓ¤ITTT¤-[¶(9yû¯ÚwÜñw=õÔ3žåââ>š<y’òòò´iÓ&}òɧ®cêTV¶IW]õ+=ûì“ÊÎÎn÷\¿ÿýMzýõ7=Ë……3f7¥§§kùò¬¶fþóm:唓Ô±º^��������еþ��€ È´µVô¡Ÿ½ô›á«0eÇha”f·ëÔáÃuà€úãœyZR]yèg[›0§_u¥€ûÆQèÇ´Ú2A·Ø_]嫯¾¶Ú^ÝxãuV0Æß’%K=ÕƒŒŸýìR«%WRR’g]EE…~üãŸiÅŠ•*--Ó+¯¼Ö®-Ù‡Îö ýœwÞٺ䒋|ªû¼÷Þûºþú?ø<_´bu½�������� ë% �� ÑtIègëâÔ¼ÁúÓ¨£v˜Ð·^ééº}署VÜ'òÐÓ?ôc ¼¯ÿú¶aÃFO‹*Xéׯ¯ºÊСCôç?ÿ_ÀÐ1p`‰þú×[uòÉ'êœsÎÒùçŸë¢1 uñÅz–?ÿü‹vçyä‘Ç==öh]vÙOÛµô2§n¸V«ë��������]Š?�� .9Î0{„ ý(ÊÐMÃ2ŠtÅý”šyK¨D“j·ë·Çë—¡ï+«»5ôcÞS›­{‚A¦Õ–[~~^»àŠ·—_~UŸ}ö¹Bùå/¯´Â.˜6bþoÚwßÖÊ!ƒ=7m*÷ÙVVV¦o¿]`=6÷ðÒK/zžC=X>ø°Õö«#bq½�������� {ü�� È¿¢O ÐOà6^ÁB?™öýnø!JKÚñ=JMJÒõ“Æëâw?VCk›W`'¡Ÿpy­.l´xñ÷zë­Y!÷ùÉO~4øSRR¢Ž2a¨Í›7kÕªÕzöÙç<ë}ö[¸p‘' 7jÔHõéÓ'äyg̘ÞáàO,®��������t‚?�� áÄ:ôc×glBµ÷ª¬¬Ð¦²RUWW©©©ÉZ—––®¼¼|õîÓG…!ï‘®“G Ñc‹~ضÆ÷~Fúqï·íø8••åy\YYeµý Uõ'œPᡤ¤È^³¹†/¿œ§9sæjÙ²åV0§´´L---a-/ßìyì]i'Ó®«³:s½�������� {ü�� (¡÷y\²“ÒtLŸ1J õõú~É"UWUµÛV__gM6¬S~~FÞEÁÃL' ¢ç—­Ö––6¿Ð¢ ýø¿=¯ÿ~VÐÇ„WÌ´qc©µ.k®¹Úš¼™c¦MÛWmmmÖrzzš:Ãhþô§[´fÍÚ€ÛÓÓÓ5zô(ÍŸÿMÀí555žÇÞ¡¦`²³³Õ½^��������Ð=þ��€ÄAè'ðÜ+—âµmbÞ@¥'@‹/öY°`¾Z[[Ãî[UU©y_ÎÑî{Œ³ª�’‘l×”âÞzwÍFù†~ÂÝÇ ¡yÏ{Vjjª†¢åË·V4zï½÷õ£ññ¦²;ôc·Û]÷0Oõí· tÙeWx*åäææh¯½¦j=v·*ó 8К¯^½F'Ÿ|zÀsx?mm­Âñ õÄõ�������€îAð��$ ð¡gÀÐOà�Ëä¼AŠw¦ÒO¤¡7³ï‚ßh„ÉÊÈȸϴ¾&øS2ôh}ÀÐO5¥ž7}ú>žàÏË/¿ªÓO?Õ ñDâwÞõ<>|˜RRRÔQ>ø°'DsÀûé¼1àûát¿{EEÛ[·™–[á¬\¹J‹ë��������Ý#I���‰f[Þ âЂ‡~̾3òï–,YUèÇ­µ¥Eß¿0èöA¹Y± ý8ã£âq ÇYí¾ �ú÷¿è8S-çé§Ÿõ,›ðKg|ÿýÏã«®º"hkýúõAÏ1fÌn²Ù¶Þ[óZÖ­ ¾¯ ä|ôÑÇê¨X\/��������è��@Br:ƒy|ÖG°oAJ¦âYee…Õº«£L‹0sŽ@ŠÒÓ" ýl›j뇡£¤d€Ž?þXÏò<¤§žz&ä1uuuºöÚ¬V_Fff¦N>ùDu†;|dØíÁý~öÙç‚nëÝ»·ÕjËíÞ{ïºïk¯½nµáê¨X\/��������è´ú�� 'lèG‘‡~Lb%Ëžªpššµ|ÙRUTlV[[›:ô›*((ÔÐa#¬`I8ee¥×ÿüò+\×Õ¬[o½ÙZþõ¯§´´TÝý÷;Ûí»iS™õœþrRS" ýØ|C?aBñâŠ+~®¯¾úZ+V¬”ÃáÐßþv—>þøvÚ)š<y’§š©ò3kÖ»zôÑÇ}ªéÜpõ®ûV Î1b¸ë=Üd=þç?Ôµ×þÆ'\ÓÔÔ¤¿þõN}òÉg!ÏsÞyg몫®±¿õÖ,ê²Ë~¢ôôtÏ>æ5Ü|󭊇ë��������]à��HL¡B?žê4áC?fÿpujLègîÜ/¬¶Y±`‚Cå囬*>“&OUZZzÈýkª«®oq]Ï’%KtÕU¿´–M¸e—]FÜ×Tý ÄóÚÃ…~¼÷³o<1Áª{î¹S?ýéåZµjµµîóÏçX“‘——kµP«««÷9Î´Õºä’ uðÁª³N?ýTOH楗^Ñœ9sµ×^S•­²²2×¶OUSS«)S&é‹/æ=ϾûÎÐa‡¢7ß|ÛZ~æ™ÿ¸¿¥Ýwc…–.]¦•+W)55U—_þ3ýýï÷ª#bu½�������� ëÑê ��$ž ¡Eú‰¤B©ô«Ð781çÇTX ä–[þOC‡±?f2ͺÀçhTP‘„~¢ª _Š‹‹õØc넎ó©\cTW×´ ýèÎ;o×Å_¨XØ{ïiúùÏêyîõë7èùç_t]Ózã·¬ÍØ±{èºë~ö\øÃ :úè#=Ë••Uš=ûc½ýö;VèÇ<Çu×ý6h�¬»¯��������t-*þ��€ÄäòxW˜iî úqFP¡Æ´÷ê*•ê(S«ÈT¦q3•„mŽ ;‡y ýÈwß8¬øã–••eµ¬:ï¼s4sæëš3çK­\¹Ò ±˜€‹ ûŒ=J3fL×á‡êÓ>+Î=÷l«µØþó_}ùå<mÞ\¡ääd«­–y¾O<^[¶l {sÌï½U‰è…^Ò·ß.°ÂK¹¹9Vçüóϵ*�}ñÅuF¬®��������t­HÿeÆá6[s[e÷”ä5wOömëì~“Ù–kæÍÍ-Ÿ��Ä„ 8Nkr?6Õiêåp85p`‰: Œÿ:÷²÷z÷ã 6Zó«ª_ߺ޻bOGC?®ù‹SÎQ(Í~ߺ]Á„)ö™¾_È}æ|ñ©êëëÛ­¿ô'?ÓâÅß[•~ w«¯Üß¾ÅSff–&OÙ+àùyî}߀϶ÇáC?¶ö¡×üÑýX»öë×ך{‡“Üm~A$[€`’-\X �����`³fÍZ%%Ù”‘‘i™ñ»ÝnÍÝ�@l¤¦¦ìíš™oT×l›·ùMÎms‡×äôšûO ²jîÿØ_Ø^ ´ú�� )ºÐç ù‡~"ÉAª«…Ý'//?àú””5JûÛíÖd›uÏ‘Ÿôü>Õ{¬ÇýÄkÅ��������€­¾��@‰>ôckV‰&¤2tØUUUZUbÉ„t†v¿Þ}еaÃúvëïþû>Ëüó¾ çèÓ»X¡ù‡{" ýž�������� ;Pñ��$žN†~œÞ¡gøðOff¦&MžªÞ½ûÈžÜùÜ´9‡ óLœ4Uiiia÷7‡ò ÔQùù¡wv<ôã$ô��������Ðc¨ø��S°OØÐ¶-{´´tí6fõ”Ñ£wÕ¼/稥¥%ªã’M;0×±a…¸ŸÑ„~œ´ú��������è6Tü��‰'L…š¡ϾòÚ7þ¥§ghÌîc­ O¤Ì¾»»ŽÉÈȽcÐÊIŠ>ôCÕ��������€nCð��$¦N‡~üZ~%€¼¼|M˜0ÉjÝŽÙg„ÉÖ1‘ú±…ý¸°���������]‹V_�� ñ8CUïñ „ ý$X…šŒŒL?A••Ú´©LÕUUjjj´¶™vdyùùêÓ»XùáÃAn ý©þ��������€®Gð��$œðAž`­ÀBì›` ­)f" ýød_���������t Z}�€ÄËÐj¢ ý«þÃý�����ÝÄŒïüøß‹Uð“uÁƒ‹ÔÜêPg™s˜s™s^â:·“1�� þ��€Äää‘×<ªÐj,1 ý8¹Ÿ����� ‹}³f‹ž½A[šÚôø'uú}ßu*ücŽ=ãþï¬s™sþÛuîùkj��þ��€Ä(ôãôýÙ×oη·²eWÔ¡î'�����èb%…iÊM·{–_ùº¼Ãáwèçå¯Ê=ë̹K Ó��þ��€´-Ü2ôc#ô¡ ¡g4¡ú�����Ý¢(;EÏ]¶‡2R¶ÿ3WGÂ?B?æœæÜ½\Ï��þ��€„ãÛÆ«“¡'­© ]Zô¡¿÷�����  ¸[^üÅØ‡‚…~Ì9͹��E²���M„¡Å0ôS_·E5µ5jnjT[[›â™ÝnWZZºrrr•™•Á¾÷sûýÙ¶Ð�����ˆCîðÏñw}£†–­aþ1ž§2F©É¿ÿNè��ìH¨ø��S¡Ÿöa¯P‹_…› Oãt¨tãz•–nPC}]܇~ sõ®k5×l&óÂò ý„O ýþ�����ÝÈu^ð«üc=&بòO°ÐÏ „~��@‚"ø��WªèB?^a¿mÁ”•m´B4‰ÊT**++ ½S˜Ð3ŠÐO˜Û �����sEþ ú9ˆÐ��HP��@b Ù~*òÐ3DÅš©¯KÜÐ[$¯£Ó¡¹C?Tü�����Ý/Xøç´{X3™Ç„~��ÀŽ&Y���‰&ÚÐB„~B”¨©©­Q<ikkUee•ät¾p›Í¦Œôtåå(%eû¯zµµÕÊÌÊ xLd¡…ýDXA ����� «¸Ã?'ÜõZ¶Vúyuþf+ðã~ìFè��ì(þ��€„uè'ä¾Á555*^˜ÐÏÚuë5÷‹ùZ¾|…Ìë1bˆöœ¸‡ìIÛ¿ÉfAõ jljR¿~}e·oýu/ôk‰$ôcó ýˆÐ�����ˆ?ÁÂ?Þý��€ Á��x" òDúqoMåhkóY6•v*+*Ôê·>Öìv» ‹Š¬Ê=n¦ÒÏ—sæëÛoyÖ}óÍÖÇ“&kw‡ÃaÓ«W/k¹-Ô5w$ôb_�����€ž(üãFè��ìh’��pB…~l¶SÔ!•Šný&¤S±¹Âg -[¶¢Ý¾K—® zž†ÆH+Å.ôCÑ�����Üáôq#ô��vD��@â‰aèÇ™PjÚ_«ÍÍÞA„ ò ý(D@����� g™€ÏËWŽÕ^éÖdú��;Z}�€ää ´®‹B?¦ýVÅæÍ¡Ûfŀݞìz.ßA(ÓökĈ!žö^n#F zžôŒ E&D'ÀýtúWL"ô�����âÔþ»hé_¦ ��`GEð��$ïÐOÀpèGíÛ{ùÏ#`Â7 POÈË/ÐÄIã¬ÇË–­´æ&´ç„=îoOJRA~¾"Ñ.È£N„~4üãp8¬@—™;]/ÒÌw&I®Ï‹Íf³æv»ÝšÇƒ&G«ÛZÔìlU‹£M­N×ûCC9Ä€Íõ¿d[’R’ìJµ%+Ýž¢´$þ<������xÙ�� 'úÐOû°O¢U¨IIIVIIeeejòÔ=å L±%%)##à ý˜�GļC?îc°ÐOÀyiiiñ~vfî×oî…¹'î�PJJŠº›ÃõA«mmT][“Zœ][] ;/ 3Ÿ¯×g¾^ÍR«ë¿³6»²ìiÊINW’ f�������Á��˜‚„S¢ý$Î?îš`½zõRÌu"ôãlw•L¸ÅLÌÌdî‘ ÿtW�¨º¥AÕ­ TõA0A ªÖzë3˜—œ¡¼”HÛ%������@Ï!ø��OÀPJC?ä ¶ ¢RT¡gœ©L˜¥¹¹y§¯ð wU¤ÔÔÔ.kfZzU´Ô©Ù5zš ž™�P½£Y…)Y´�������×Á�� (¡mß7Al®·éÑy©š¿!I­6éÉNíÑ·MgŽkUÿÜHÃ-ÁÚ¥ ÷$nè§µµÕ ý z&(ÕØØh…’“cû'Ä–Ö&mnÙ" Þ˜ ÚÆ¦j¥d+;9M�������þ��€ÄÓÑÐw0%P(Ž™ÐÏ5o¤kKSûëM±Ûté~¹:b ëž¼¾ ^¿·V·Z¯¢Ì¢M± ýÄéý$ôî{«ðOmk£Uéˆg&˜fª�å$§ �������â Á��€üC?Š,ôãÕ²ª#¡Ÿ††UVT¨µ­M]Én·«°¨HéÛÿ‘ÙTú ú1~¼_ŽÎž–íY>gZŽ5ì«V]¹O“ÂéTèG„~v6± ÿ˜J?„~(ÌgÕæú•�������Ä›$��$˜ö¡[àÐ"ýDV©è†ÐÑæzŽŠÍ>ëL{¯`ŽÜ#³Ýº£\ëBã#êÐסAö¦E¡ŸØ3÷ÔÜÛŽjr´ÒÞ Ç|fÍg�������â Á��€" ýDJlÎ�ݼNYÕ)"mèÇrßxBè§ëtæÞR鉊Ï.������€xC«/��x"ýD°oaÓ~«bóf«"OW²Û“]ÏUà³n¾mš³6ð¯n¯/¨÷´÷r›ùm½Æõ‹ð:# ýXlQìÛ³ZZZ:U•¡™{kîqJJJTÇU·4¨¹“USÞ^ò…®yí^U6ÔX˹úêÊGCóļ7tÝÿô,g¦¦ká/ŸV4êšõø—¯kæâO´ªr£šÚš50¯Xœ¤ §«ÞYùaÏQáºæ wœë³.9)Ys¯xXùé9íöwºþc¶÷½—hCM¹Ïú'Îø½¦ð|n©öõr]ÓÔA»éüÉÇhl¿á ç†7ÿ¥Ç¾œv¿=ú×+Ü®Dqõ«×ÿ¾yÏz|ñÔãtíAç©#Ìg×|†óR2�������ñ€à��HLþA ýØïë¿>»ÝîòÉHO×€ÔÎת…eɪ PdåŸÔZó#vßÚòËžú¬F7º}góZB‰(ÈãLœÐaB)õᇳõÜsÏÜ–’’¬¼¼< 4P{î9^cÇ¤³f´Á‡ë‡³ºµAÕÐÒ¤›fý[O}õfTÇ•m©Ô­ï=¡ÎXV¾VüçOZ]Uê³~iùkzöëwô¯S~£I%»*Z­ŽV½¾ø31þvÛæ®]Ô.ô©æ¶­¯Ù¤| —¾›­ÛŽþ¹NÚc¡sÌg8'9]I¶£j������€ÄFð��$ž@¡Ÿm-¨¢ý8·èŸoÓÒÒU_m]úç:tÛ zì«TÍߤ†–íWÜÒæÔ=ïÖXSFŠSãû9¬ÐOaæöX“y-˜=‚yMèÇë„q 3¡ŸðçnUyùfkš7ïk X¢óÏ?G½{÷ÖÎ(šðOmk£ë#Ò±‰ÃéÐÑÿRË7¯µ–““ìjuDVÕÊT±©mêøÏrcK³.zîfOè'Åž¢CÆ*35Cþðµjš¶XÕ‡.yîV½~ñßTœ]¨h½üÝì€ÁŸW~¬h<b²²Ó3¬ŸÉ µåš³z‘uÏÍý»áÍêÐQS”“–ѹúæY•}RØO;+s?Íg™ª?�������âÁ��p¶Æbú1ÇÕºþQ?7%µÝóäääÆMðÇ(ÊtêÊ}šÔ9¹y×W7nk¹Ô.ô#Ÿ6iÖ,dègûûºº›·5kÖêÖ[o×W\®’’ž©Փ̽Ž4øS×ֱϯaª¹C?‡ž¦GLÔ5¯Ýö¸YKçèï?µ›VZUµŠÖ‹ ?ÐÊÊ Öã¬Ôt=rÚõš<p7kyCífþÄuV믊†jýã“tã¡F|î>ÙVE¢ÏW§Ò->¡!Ö™¹xëµ›¶]Ùiª¨¯ y¾ßx®†÷Úþ9|kÉçºä¿¶›VesÖ,²î]$& ÜU÷µÐžù,ü������þ��€ä2 ú <—OèÇÌ+›š2³²­©¾n‹Y–y™Y·•×µ´k—,,hÞ.ô‡5ÅÒ¯~u•úõëëz½NmÙ²EëÖ­×ìÙkÑ¢ÅÖö¦¦fýûßêšk®VZZšv&îû®ÝY“£U-Îβ2RÒtý!êÌñ‡X–pLÐåú7°'Ù’ô×c/×…ÿù?Eë³U <Ïšp¸'ôcôË)Òu¯‹ÿ{‹µlZjEü™:hŒ^Yø‘òymáǺ`Ê1^Ïû6ÕUZ' ÜEß—­V´5U9iYžŠG -Š¥gæ¿­ß¼vŸõøˆ]¦éªgèú·мµßë ‘“tÿ‰×XÛš[[õÔ×oê…o?ÐŠŠ jq´hha³ët7ù(ë½õבc>øažîÿô-Øøƒë¿H6í7|O]ðùŠ5óY6Ÿé´$þ¤������г¥��‰'ÂÐ3`è§}hhõ–Z ÎÎ øT}ú«¬L þ1¡ŸÞ®×̪*wÀæŠ V!)’ÐOÏWüéŠj?¦¢»ªMaa¡5í±Çîzé¥W4kÖ»Öú²²MúàƒÙ:ôЃÛoBŸ|ò©V¯^£ššeffª¸¸X“'OtM“”œìûkùÌ™oèõ×ß´÷í[¬k¯ýuŽ·Þš¥õë×[ëKJJ¬ç=zTÀk6-¸>ÿü Í;O¥¥¥jllTNNŽFŽ¡}÷¡Áƒ)VÌ=üilë\û5»-I¯žÿWŸj6áÜöþÚPSn=>sÏCµç€QꈊºíU‚úç¶oéÖ;;û¾ ÕZ±y½†õW$ö2Ö þ/-œíüyŵì6cèžZ°a…¢e*Õ7oý9·Ûìš0`´ºJsk‹Îyöž{îVÑP£ žý?}½~‰Ïú…¥+¬É¼î§~ôfävê˜'罩ëÞø§O;¹W]÷vIÙjíR<X±f>Ó�������ô4F)�@Ú^Y¦³¡ãÓ²RÍèøém¶$÷S}]jk«ÕÔÔØ­m¤:Ân·+--Ýjï¬ÒÛG+MÛ Ø…~œqRñ§»sÌQúꫯµys…µl‚6ÞÁŸÖÖV=ýô³ú⋹>ÇÕÔÔZÓÒ¥ËôÑGŸèâ‹/P~~~Àç0Ÿ·9sæêñÇŸ²*¹-Y²Ô:þ¬³ÎД)“}Ž©¬¬Ô<¤µk×ù­¯²®eΜ/uøá‡êÈ#W,DrÏ›­ê ›ÍUègþú¥zìË׭ǽ³ ôëÎV‹£c×Ð7·Èóø£óuî¤#}¶¿»ìKŸeÓ²+ÒàÏ^Ç(9É®VG›uͦeØà‚¾Öòßo¯jtÀˆ ºûãÿ„=ߢ²ªiÚbµFûaó:×1Ï©m[¥¥k8Kýr{©«¼·|žU¹h\¿‘˜_¬‘½J¬õ¿~õ^O€Ç¼¶ÓÆìzÍÉzvþ,«}ÛⲕÖ>ÿ:å·žsE{ÌêÊRýqÖCžÐiëvøè½T×Ò 7]÷ñ‡ŠõеÎ~¦������ þ��€Äã ýk?&ô£ís³ï›ÊÔÐÖª {ð_2³²¬iGÒÐâÐgkj£ýl›… ýô|Åg7¦L•›±c÷Ð{ï}`-›ª?¦Xvv¶µüüó/ú„~233Ô¿m޼٠ᦠé\uÕ/ÚUþ1êëëõßÿ>oÛ¯_?×s”Y¡!üÖçžûŸÆ§ÔÔ­íêLØÈ;ôc®ÑTÊÍÍÑÊ•«TZZfg* h¯½¦ª³"¹ç-Žî Ì™ÐÌofÞg…PŒ¹@9i™V™Ž8dÔýgþ,ëñÛK¿Ðõo< +ö=Íj%õ‚÷­ÖRÞj›ê©ôÔ4M¸«§ØÌEŸè'{Ÿ¨OW.På¶ë5U†vé=X­„/{ñ¯íÖ È룛»DŽ˜¨h|µn‰®xùŽ€Ûn:ìÇÖ=õfî÷ï<O—ìuœgÝ÷›V[÷Ì(ÊÌÓKçÿÅ ågìyˆúçe*ÛRií³tÓì=°CÇü÷ÛwÕÔºµª”imöÚ…·[¯ÛøxÅ7úÑÓ7*Öºó3 �������Áü�� ©S¡¿}ëš[ôŠ:sÄHíLžž_¦º¦¶(B?¶à¡m[ŽÝYñÇ(.îã³lªÿ˜àÏÆ¥š=ûcÏzÓbë’K.Tzzº”1mÂÞyç=kÛš5kõé§ŸiÆŒéíÎ_WW¯1cvÕ…žoµ3ÁžGyLóçkmollÒ÷ß/±Zæ<îÐÝž¤Ë/¿LÆ µ–Íó>þø“VÅãÕWgjêÔ)V5Έ䞷:»ï}ù×ç/kQÙJëñ~Ã&èèݦ«31I3†í©Ù?|e-?>ïukr›<p7­«Þ¤õ5›¬åôäÔˆÏíp´éБS<ÁŸW|mf¯øÊ³Ï!#·Vtrtð®«.Ó¥ÿ»U?Ýû$]1ã´¨Ž3S ×t~»à (y‡~Œw–Îñ<6xÜÃÄèizôË™ÖòG+ç[!žŽóÙêž}NÚcOèÇØgèXM°‹æ­[¬XêÎÏ4�������Cð��ü?{÷&W]ö øÙ’Mï -„&= téˆHQõE^,¨€ˆ»*Š`Ãî‹"`Ã‚Šˆ (ÒA@z'tÒIO¶û?álffgvg7»É.Ü·×qæ”93;3Ë•<ùçrzúÉT:vÕ¾ß>úh²ñô˜2bD¼ÌYÚÝ9·ÿB?%]^LF*?455e·i<W¡7¿ù¨,ô“¤ Mvë­·ÅÂ…‹²mÿùÏmeƒ?Éë_DúIRW Ã;´3ø“,X° ó~:On×]wé ýäÏ{įí þ,Z´8ü‰Øl³Mc µ¯¥/GùôkÝ1¬!¾p؉±¦ÒûvÞÿ|2>{ùùñû»®î•²õËã˯yotî:·M=¾ês§w%“¾påY°'·J‹nzòÞÎc^7cÕ÷¢šfVWžøÝΑhËWÄ߸1>}Ù¹±²¹)¾}ͯc½±“☎°Þ˜‰]¶¥@TîÂÛ/Ë–JžY<¯Ï™»taç¶mÖëú}Þvê&ýüi1þ����t�€¡©Lèg)ĶÝ9[?û¾ÿÆMsgW<vÕô«,Ë[Zãs·ü'¾¹÷^1¼®.^È[Úâ3—?Ë›ÛzúÙg³±ñ‰Wn˜mþêU³âºG—•=öÅ&â*”ÜzöÙg;·?®Kg ºŽïÙÖ[oÕ9 lÖ¬YQÉäÉ“ŠÖÓˆ®BMMÍ÷ Ÿ7»pÔX9sçÎ]+ÁŸµå;×]”…\’ñÃÇÄ—®úiç¾ËWúZÞ´2Þû»¯Æ˜á£âk‡¿¿ÇóŽj_íâã¯86îzö‘ŽçhŒíÖÛ< Ù<¹pv,\¹jüZ}m}l5yzôF Ìì½ÙŽqíÌ;bEÇyo{ê¸gÖÌl_ê\³ë´m£/FG¾ôÀx|á¬ø¿k“mûÉÍ®:ø“Iß}ÃGcmIŸÉ@=FH����x¡ü�†ž Ažm·KŒïøÇùìþö;ÇÑWÿ½ªÐO> ì‘ÅKâ+·ßÿoç—½`Ã?+[ÚâóW>÷Í]ÞëN?ŸzÕ†1aäª?>~êUÄkÎdu‡Ÿ¢c_\fÏ.…”‡tÒˆ®\ýUÎèÑ£;ï/_¾"Z[[³@P©jGq¥Ç¯XÑ»ðÄÊ•½[ôEMÖjà¿ ‹W,ë¼?{邸Ûý7T<6í›8r\ÄáÑ­tÜ?^5~j»©›Æñ//guÉ]ÿ꼿ûôí¢¡¾÷ÍzÃŒý³àO’ÆXµ´µd÷Ø~ß5ŶqÁØ«'ΊµiÃqS:ïõ²ƒª Yõå1SÇLˆ™ žÉîß?û±.ûï›óxô·šaÐ����|�€¡©L'ý$Ùý^„~òõf͉]wS|v÷]bêÈÖØ¯4ÞëS—ÍŒæ­èÓx¯<ô“d÷KG~ ’Ž?µµµÑÖÖkCzž;ï\=rk½õ¦v†|F^=léÒ¥e¿lÙêÊÈŽï[ÝÎÒãGŒ+W6fë»í¶KrH÷Ý]Æk*½ç=©¯©æ‚YƒÑÓ‹æÄy7þ1&ïÙóÙ¨°¤¾®>.¹óŸÙýauÃb«©Óã€-vÉÖÿñÐ-qÎõ—tžã˜‰¾xõ6{Åg.;/ëVô—û®ëÜþúûÅšXÞÔßyUçú”Ñcm:pË]ãëW_˜Ý¿ü›âcëYÝÁê'·\šu9Újê&±ûômcˆ±}zÌž›ì7?±j<Ú%wÿ+Žù1}ÂúÙú¿¹-¡ÖßÒw����`]ü�†žJAžnâcË„~òÛ-Žã¯º6ŽØ|“8zë-bTýÐþ#SêòsÉÝóâ·Ï‰¥M­Ý„~ž@Ù O¹÷·¦l@h][Óî(½ñ—¿ü-æÏ_йþò—ïÑyƒ 6ˆ»îº'»¿¨ã;•:ŽûJÝy|ð¡¢ãûÃúë¯?þDçsl¸a×ó¦.?#Fô_°­š÷|Xm]4·|ðçGZqßc fÅ+Î}ovTȸ÷c¿*Úòï¾w<»ê3ijk‰plvÿ -wm×Û,îŸóXÇÏÐïøõ™±É„õ£¥­-žY<·óñ{l²}¼v»}¢/ÒX®Wm¹G\zßµÛ¶ž²Iö¼½ñ…+’+IÝîšõH<·bõˆ³#fìkÓŒõ7ÏBRW?z[,Z¹4^ÿ“OÄ[v:8Æ7?yogG¦¨úçIßÍB<}yÌ‘;çÝøûhliŽ¥Ëãð},Þf÷XÑÔ—?xs6‚-ï¢Ô_Òw����`]ü�†¤ÎÐO¦šÐOùOémÞõfekküæáÇâ¯=»¯?5öìX67&&Žã†Å`¶heK,XÑ.X×=¾8nxbq,kl+éèS.ôS¡{O{¥÷·ø11ˆ:þ´ösÀ$/u÷IKêÒóôÓÏÄ¿ÿ}MÜsÏ}ÇL:%8`uw–Ýwß-®¸âÊÎõ‹.º8Þóžãcøðáïo{üéO—ÆÂ…‹ Žß5úî»îÒü¹ãŽ»â¾ûîí¶Û¶sÿ5×\_ü»˜4ibl¼ñ´8öØ£cäÈ‘±&ªéøÓPSË£)³g—Ì[}ñêûµ5µñ££Nc~ù¹xü¹U£²žX8»è±3Öß"Î;òÿ­Qðì ;ì_üéK·Ÿ>rkÅ}»Oß>NÙçͱ¶}ãuˆ·ÿúŒ¸wö̘µd~|ûš_íO¡œ³^srÑH²Þ>fÓ‰Äi¯zWœö÷ó³‘r‹—vviÚrÊÆ±Û´íâ×w\ý)}§����Ö5•J�`PJÿxÞÞ^¾}LÑæÒî?e­©l) ýv¸éذ´¹5®zrVÇ2»l@(Jn»—Õ›c»}½¯xlwÏÕCè'ʿޮ*uN*omuâI㮚››£?uÖ×»Ý?|xC¼ë]Çe¡ž\ê´³ï¾{ǵ×^Ÿ­?ôÐÃñ¹ÏÓ¦M‹yóæÅ‚Ïu;mÚF±×^{FØ{ï=ãúëoˆY³fgA¥ïÿüØrË—dAŸÔuè±ÇÏŽKŠRw 5 ý$ÕŒ(Q7,¢®ô»OôÎ8ýòÆÄQc㤽ÞX´oÚøõâoïþvüø–?g£¸žX¸*�ô’Égwìúšl$ØšxÅ;ÇÄ‘ã:;ô±†c¾j:þ—ηå”iÙ¹ŽÞ騫]û㩦Œž¿ÇYqám?Ý{m<¶àÙXÖ¼2¦vlßkÓâ„—Ñ¥³Q_óÖ]‹éÖ‹s®ÿ]Ü3{f¶í -w‹Ó9>¾õï_G˾Ó�����ëXµÿúRS徚*nk*¬çKmÁm¾Ô=¿­®dIûÆ¥Û¦¦æë�è©»I ݤ%¿ßÒÒ+V,¶¶ö˜>}ãè‹rAžÒm…ëùýüöÙgWýCû{úÏóXþzðë‹Îõê¿ÿ9zú©6pSmè§7Çvú)óøýd›*{ý)ÛD¡½¿ùPÙÐÏEÿÛÝæ#¦òÀOað§4T.´&A¡4Ê*…^ú*uóI]qª‘B;ïz×;b½õÖë²/.¼ðWqë­·W||êºs ïŠI“&unûë_ÿûÛeëßüæWcذÕ!ƒåË—Ç'?ùéÎõ#Žxm|ðAësçÎóÏÿQþ©dÓM7‰“N:!ÆŒk"uû©vlØ3+FsûÀû‚6¬¦.61!���úÛ“O>Õñwíš9rTÔ××gõ‘tÁMºÍï�ý£¡aØÞ7é?ÛZ²´?ÛV°´Ü–.Qa½»ÛÒû¥ºÛ—Ññ�šÊ[RУpäИa ±´)u~é.È3ÄB?±¶C?«v^\TJïu¹ÐO¥ÎKk[*‚­Ið§;ÆÕÇøñãc“M¦ÇË^öÒØi§—Uu•Â:Ç÷ölì× 7ÜO<ñd,Y²$벓ºíì¶Û.±Ç»…zúÃÔ©SããÿHÜtÓÍqÛmÿÙ³gga¡ô¼©ãЮ»îœ=o {sŽÑuÃcaËò€¡.}—����Á�`è©liniŽá «ÿ1öÕÓ¦ÇÅ3gVòô¢¨ÐOÛ›ÐO/º•¿âÐO¬¾-úYõoØq|jJ£´iè'IAš5÷µÿþûeK™1cûl©Ök^sX¶T2jÔ¨8ûìouwŠhhhˆýöÛ7[RoBKcëGÄ¢–_™/P€A+PKße����€Á 6��¹²#ŸÊnf/^\tÈ;¶Þ6Þ°éæY矲¡ŸnC4½ ý½Ú^uÙé1ÈSÎéeè§» Oçy{86uúyóΓℽ¦D¡YÏ-‹ò¡ŸžGx­-ýÝE‡®zû×v|Æ× ÊÒw¸vþ· ���� Ž?�À:•‚!íí½ìþQ¡ËΕO=ï˜4¹sìR]Çí{¶ß>[º3ec|çŽ{ã¦YóúúéÛh­ªB?ûÊÖŠ.ϵj{…ÐO¬~½{o:.>qà†1etïþH˜FhýõîEåC?}hä2Pá Jimm°‘_/vé÷¬/áªñÃFÆò¶¦hjk jjë³ï0����À`¡ã�0ä”­Õqû×¹sâ™9³¢·&ÝiFAˆ&¿í!È«ž»ªc+„|Ö,ôÓõ¹Êo/ýìûÔA½ý$O?;;þpoÛó§.Ó‘hIã®kòÞN6:`(òÝ����Á�`P)ìþR±L™ÐOº]ÚÒç<üPÌžýl¯»¼Œª«-9w¡Ÿj-ò)äé|5úIF÷²YKzOgÍz6¾võ²XÒTîuUîøSÕç:�RWáŸþ—ÞÓ¼³V_ ¯­ÉÃÆ %é;›¾»�����ƒ‰à�0ä´§PO…qY·/^ßyð¡xøñGcás ¢©±±ÇPkkK<1{VŸC?åo£—¡Ÿšê­6ô•C?éØÇŸ“ýìÝIï]zÓ{ùà£Å—®Z·<SSñõ¶µ®Ž?I}}½ðO?JïezO×Ô˜úầ0d¤ïjúÎ���� 6.W�†„Â.1m+›¢näÈ.¡Ÿüö¶%KãÁ‰WNž;Œë54ÄðÚÊ”…Í­ñ‹§æ¯Z©ä‰Ê¡ŸŠ]vz òä§ë×ÐO¬>oÇ~ûúÅñ®—ÅÄQQckÄ3K"nŸqÙõ±¤±¦›×›BT)dµ*[¾6;ûô$ª455}×_¡ŸÜØúßžš˜ß¼4`°J~„~����€ÁJð�XkR¤½½=ÖTó¢¥Q;bdD—ÍêÑZK[ÛâO³ğ⹊¡Î—RMçœjíMè§Úc« ýÄêsWJažÌj­â5t÷ºV‡~Òs46õnÄZ%J•4ž*…z; îÅ.™¶&ã½*IŠaµu± yY4µµ  µõY§ã½����€Ą́/�`ë.äQ¸/¿ß8g^t ý´×T­Õ§ÐOaGžjGkõ{è'zúi¯>ôSU§Su¡Ÿôž®XÙºêe>·rÖvW \1bD 6,¨Nz¯Ò{6¡Ÿ\ Vl8||L¨•u�‚u)}Ów1}'…~����€ÁN�t*uÊ·×®XM󟋆I“Víè&ôS¾sNt>®ð¶(ôSõh­*ƒ<…ªýTäéͱU‡~Êï«úIÛ¢¶}UÇ–JžÁ2þ+…YÒÒÜÜ­­­:�•H!Ÿºººµ?ld6þkIËÊXÖÚÍí­k˰šº]7<ûÖ¢Q…�����Ýü�†ŒººÚ, 1¦¾>–Ìšu#GE݈½ ýô¢ ÐOU›^„~¢7¡Ÿèò¢—¡ŸöB?­-ËV¶ÆÄaMÙzú¬†‚<�”¾Wy�(…Ë^lA ôI¡¬<ð3Ý}z|-¯#€ÒÒØÖ+[›£©½%šÛZ£¥½ãó)éG}‘ºúÔ×ÔfcæjêcDÝ0Ý}����€!Ie�ôòN?Ç––Ö˜>rTÜÓÚM³fGÃzëEmÇú…~¢/¡Ÿè¼-ä‰ ýD/ºu}®²Ažè{è§¥9byck¶q«q‹:>¯ÉÙg•=Dºf¤ Ëº »P^ bc�����@eþu�X«ªUî¸Q£Fe·;O’EURø¤uéÒh[±"¢­uUÊ¥½½÷¡Ÿ¢Ž8Õ†~jºýôj´V¡ŸÂpN…×·F¡ŸªŽ]õR/œö¶šì5¶6×Fs˪$PmM{ì½á’ì°ü³*TÍgÜÝv������й|�R¤¾¾>FÛl4-¶[¸8Ìw¶·eÁŸ¶æ•Ks´v,mÏ/)Ó^Æ©Y½­3ÜRE!—rÛ*=¦ìyVpÚŸl¶Ztžâ×Tþ15AŸÊ)•¼Î¢ó”¼ÆJ?[ñcŠ_w}]m «~©«é¸­Y=F¬Ã®fÅöŽÑ£GeŸ•������ÀÀÒñ�4zê“ÖÇ›nºIì9zLlTW ›Ž\¯ÿXÇg3=ûŒªù,�����X3:þ��CJ Œl²É&±íÖ³#z$n¶x$XWR¯ Ç=Lz4¶ÝfËØtÓM�����€µCð�XëRx§½pFT7ûÊ­'»ï¾[´¶¶Æ¨§Ÿ‰í›âá¶öx&ÚcIDZ­Á@VÓ“‡--F/ŠíÇÌŠ F7Ç´i›eŸI²&Ý~t�����¨žà�0è• ÿÔÖÖÆž{¾<î»ïþxì±Çcz… Q%í½<¾ïÚŸ_††Þojj†Åæ›oÛm·möX#½������ÖÁ�`èMןrÛòðÏŒÛÇ&›L'Ÿ|*æÍ›Ë–-Ï:Uóü•¬½P걦aœººº=zTL:56ÞxZŒ;¶ìyË=n?������ýGð�²ò0P žl¿ývÛ» î¼ÐC=ý¥·¡�����€µOð�”ªéú“oKJ»å*_êŪ6°Sé¸Þl�����è_‚?�À:Óݸ¯JûË}º;W¥ã+G±þêüÓÓûëý�����è=Á�`êKø§ÒöîB>å‚%Æ~[›Ýz³�����€ò�€nõÌY—¯¡§.?IO¡"ªÓ×ðŽ÷��� ïÔV�€žþ��e•†j²ÈPM¸¨¯£¼J_·.?ÕYÓî?ÕžCñ ��� «Òš‰ �P‰à�0(¬Iø'ß—TsŽJ^l¡ 5)õÇø.+�����€5#ø�t«8œ‘î\8¦ÚðORM‡ŸÞyQº×Ÿaï5���@%«ë&j(�@O�€.ÊpJ5ëºèPM‡Ÿr¯Ñ¨¯êôöóU„���X3…u«rµõ� Á� jyq¡­­-êêêb T;²kMïÉ 5 Ôß"!���€þ‘jn‰ú �Ђ?�@Õjkk£µµ5ZZZ,ø“«fìWéñIvXº×—÷Ç{ ���PYª¹%©�P-r��ª–Š)¼±råÊXú.)\èkú¾ú,����º—jn©†"ø�ô†?9��=ÊÃyÑaùòå±¶¬i€§4°"Ô½þ~¿¼ß����ÕÉknùÅwj*�@5Œú�**·µªèÑÜÜœÍ_›WõvôW5çc`y���ª“jm©æVWWÛ¥æ¦Æ�tGÇ� [¥……ººúlÛŠ+bmÓ±gðó���ô^ªµ¥zJª½Rc�z"ø�ô(o/œnëêê²m‹-ŽuI¸dpñy����ô]^kKµ·ÂZ�@Oü‰�(«4È‘¯§‚CZZZZ¢±±1ÖµÂ3‚'k÷��� ¤[ªµåu·Ju9�€r�€n•+4Ôׯ÷µ`Ás1Ø”RFÖŒ÷���``¥[aÍ-§�T£>��J¤‚B{{{—myÇŸT„HW!577Çòå+bÔ¨‘1Ø)’����0ؤÚZª±¥_©æV®ãON} �(GÇ� ¢Â"CiÇ—aÆe·sçζ¶¶�����ª—jj©¶VXk+í¸¬ë�ÐÁ� GåF=åW!¥ûóæÍ ���� z©¦–øJµ6ãÖ€¾ü�Ê*¼ª¨p[>î+¿©®®6V¬X‹-���� g©––jj©¶–wû)7æ«\� à�УrW­ùÕ]‘´páÂX¶lY�����•¥Zª¥¥šZª­uW{�èI}��TŠ ííí·ù¶|ÔW.]•”f’Ï›7?[=zt�����ÅRè'ÕÐVwÓ®Ë:ýŽúÊéö�TCÇ� *å®8ÊÛ¯º:iUKâT¸X´hQ�����«¥šYiè§tÄ—n?�@oéø�t«°ëO.#R‡Ÿ¼0‘äÁŸæææX¸pQ466Æ”)S:÷���À‹ÑªNÙóbÅŠ•Y­,ÕÑêëë³û…¡ŸÒ�P"��ôDð�¨Za¨\ ',òðO*d<ñÄ“±ÞzScÔ¨Q����/6Ë—/9sæuÍÎÇ{•.Â>�@_þ��]äŸrëåºý”>6mojjŠÖÖÖ˜;w^VИ4iRŒ1<����à…nåÊÆX°`Av\ª•¥°OCCCgÀ§Rè§°ÞV��Êü�ªRMø'­§íÉðá㥥%[RcöìÙYcâÄ 1räH#À����xAIu±+VÄsÏ-Ì.ˆKR=,uÉÎ;e}zú�¨Dð�(«´ëOé¶ráŸ| X~?o]œ‚?éØUóÌçgûӾѣGg]€ò™æ ���� ©ö•j]颷ÔÝgÙ²eY ,ÉÇz¥zWªåu¯|{~¿7¡u3� Á� ¢jÂ?ùýT´HÅŽ|=/~äEŒ´ž®tJÅt?Ý.Z´¨c‰.ÏQxŽÂ[����X›òÀMéméþ$õ¤‹Ü >…!ŸÂÛüñ…çú�zKð�èVOáŸÂÂCa(ïþ“€òõTôHÒ¶Z5¬=ò§ÈÃBù9º#���@è)\SZ[µ-ûÿl=ïð“[ø)·^z^¡� /�€• âT ÿä…‹<ìS8þ«p[^ÉåÛ ŸC°���€Á \ý«\h§0àSzláh¯î:•[�¨Dð�¨Zi÷ŸÒ@P¾¿°¸Q8þ«ðñ«:ýDÙ Oá¶ü8����Xò:WÒ]§žrã»JC@•[Hè�è Á� Wz3ú+É …}Ò’wû) û” Ž���€µ©RH§»q]¥ªíòSi�@w�€^«4ú«p[¥ÂEiЧܹ ÷���ÀºV:Ú+ßVn¿À�°6 þ��}V©ûOR�J·ilWázwc¾J‹Ý…€„����è‹î7•öU3²«p<Xµç�è Á�`TêØSn{騝rÅ‘ra Âý����°¶uò)ÜÞ›n>ê]�@ü�úE¹î?ùö¤4ÄSº½\§Ÿj‹:þ����Ðk¾©4Ê«to÷�ô†à�Ðo*uÿén_¥Ii ¨šç���€þÖSÀ§Òñ½Ý�Ђ?�@¿«Ôý'ßW¨§ãz*†èö���ÀšXÓ0N‚��úJð�Ýuÿ)w\®·A����Ö¦ÞÖ£Ô¯�€$ø� ¨j@¥ÇÒÕ���€uaMB;?�ÀÚ ø�¬½ �•{,���� vjY�ÀÚ$ø�¬U……|����x!ö�ÖÁ�`)-ˆ���0ú��ƒ…à�0hôT0 ���`mì�† Á�`ÈPp�����€Õj��������r��������`ü�������€!¨>��†ˆööö����€VSS��Cà�0hö����0ôT§ � Á�`ô���`(*­k �ëŠà�°Võ6ì#���ÀºTM¨§°†%�¬M‚?�ÀZQ)ÀSM°Gø���€u!…xz;ö+?^��X�€U®0Ò]±¤­­-����`0(WǪ­­­xLaØG��X�€QMà'­—ÛVíùºÛ����ը̩´½ôµt\~l¹°��0�€~×]è'/Œ¤õÖÖÖl=Ý/Ü^x���� y§Ÿ<À“ÖÓýt[WWW´=Õ¸Ê�þ�ú›à�Ðoz ü¤%…}ZZZ:·Þ>¾ÒýjŸ����zÒS§\çž|{~áZ~Lº­¯¯ÏB@)üS*<‡��Ð_�€~QidW*€¤ O ü¤%ßž Ç7İaÃ:Š ©R£à���À°ªƒuZZ£¹¹9›²ÚWSSSVãJµ¯´¤ P¥�Z�Ð�€5R©ËOÞÝ'>Òm’ŠcÆŒŽ†††Î‚���� 5«Â=i©Í.l5jTVKÁŸeË–gÂåKÚŸwÒý�èo‚?�@Ÿ•ëò“ é6~Ò’ÖÓ•McÇŽÉŠ����ðB”‚=#FŒÈ–T[²diçEq©.––ò)�þ�úJð�èµrŸ|IAŸÆÆÆìj¦´>~üøŽbÇð����€‹ò™4ib¬\Ù‹-êìŽ=|øª:Y úäK¢û�ÐW‚?�@¯†~òûy—ŸT¼H¡Ÿt›®lJ]~Œô���àÅ*]×Ð0%ëþ³råÊ¬Ž–Â?iôWÞý') � ÿ��½!ø�T­4ôS¸¤¶Å)ô“î3:F����ðb—Â=ãÇ‹úúºXºtY¬X±" ÿ¤®@)”}„�€¾ü�zÔÝh¯ÂÐO*T¤Ñ^#GŽ����`µt¡\mm]6ú+ÕÒ’þ)dô�Ð[‚?�@·z ý´´´DSS“Ð����ô ¯¥ðOª©¥`O}}ñ?׆}tÿ�z"ø�TÔSè§µµ5+P¤Û±cÇý����@R ­­­5–,YÚþ©««+:Fø�¨–à�PVO¡ŸÔá'øJ²VÅ����@ÏR-­±±) þÔÖÖfÁžt[Hø�¨Fm��T¡4ô“ºü¤àOº?aÂø�����ª—jjùÅu©Ö–îÖà��ª!ø�tQZXHE‡Â}iÉG|Mš4±ËÕH����@÷RM-ÕÖR-ÕÚJ?…5¹D�(Ç¿Ò�E* ¯6Jã½ÒR__#FŒ���� ÷Rm-ÕØòz[O„�€R‚?�@·ÊuûIí‡Ó­_����°fR­°æÖ]×�€R‚?�@R±!Ÿ1žZ§¥®®.����è»TcKµ¶¼îVX‹�è‰à�Щ´˜PnŽxÞrxܸ±����¬¹Tk+¬½*W£�È þ��=*œ-žŠ[bøðá����¬¹Uµ¶ÕÁŸÒ‘_��•þ��™ÒBB¾^XdHW¥¥®®>jký1����úCªµ¥š[^K ër•jw��þÅ�(«\1!ÍOF����@ÿÉkn©'è�TKð�èV~eQºÒhUð'ùj���� ÿ¬ª¹­ºø.ÕâŒû�ª!ø�tQXP(½ßÖÖuuu����ôŸTsKµ·îjs��¥�€ŠEƒÒíù|ñ4s����è?yÍ-¯Á媭Ý�/NþÕ�¨(/”¶®©© ���� ÿÖÜ ëq>�@wê� yq!Ÿ-����ô¿T{Ë;þ¨Ã�Õü�zA±����–�P=£¾��������`Òñ�(R8?¼t;����0ðº«ÏÕÔÔ�@NÇ� [?����°n¨Í�=ü�������€!Hð�^ä\5����C“Ú� ø��������Cà���@•VΜóÿð‡h|â‰H-Ï= þüçXzûí����•þ����TaÞÅÇ­Ûl÷½ñqëÖ[gÁœ°â¡‡²ç¹÷ˆ#â¿»ìêS����åÔ�@¥óÁÍ €u/Bæþâ±ðª«bÅý÷GËÂ…Q;rd4¬¿~ŒÙc˜ôÚׯ”#Œš††²_~÷ÝqÛŽ;mÛmæÌ±ÙfñBwûN;Ų;îˆÞzÙ 7ÄØ=÷Ìî?õ•¯D{ssv¿­±1ž:묘ôº×E›uî¹Ñ<wnçúS_ýjLÿìg£vĈèå¾{-YucÆÄ`wËÆGãÓOw®oùýïÇ'ÔããîÓ›bÞ%—ÄšÀ±ã¿þƒÁMS¦Dóüùë[ýä'±þqÇ�ðÂQ®6WSS��¥�€n ü�Àº×²`A<ú‘ÄÜŸÿ<ÚÛÚŠöµ.Y+ÒòðÃ1÷—¿Œ™m/ù¿ÿ‹ÉGô¯† 6èv} ž§~Ò¤¨><��xñQ›�zbÔ��� b©ËÏwÛ-æüô§]B?å4=óLÜ÷¦7ÅãŸùLп¶8ûì·ß~Q7jTLxå+cóo;†ø@¬÷¶·EÝØ±1j»íbÛßþ6ÂÕÝ����”¡ã��� RÍóæÅ=‡+gÎ첯¦¶66Ü0Z—-ËF~•zò‹_Œ›oë¿ûÝAWcvÙ% ñô$½Ç¹[l/ý÷¿c ¥‘^[ÿìgAÿ™øÚ×FÃÆwÙÞºhQÌ¾à‚¢mSŽ:*6ڨ˱#·Ü2����Á���¤=å”.¡Ÿáo›œqFL=úè, ’4=ýt<ýÍoÆ3ßùN´·¶®~ü‡?“ÿç¢~âÄx¡jklìÓ¬ñ›ýëÁ‹ÃúÇWvûʇîüÙ背qûî����CQ_���0-¿ûî˜û«_m¹õÖñ²›nŠõßùÎÎÐOÒ0mZlþoÄ–çWt|ë’%1û‡?Œ¾j|òÉxüSŸŠÿîºkÜ0n\\×Ð7o¸aÜóêWǬó϶•+{<Góܹñä—¾w½âqÓúëgçHçºý¥/GN>9–Ü|sÅÇÞÿ¦7ŵ55Ë“_øBlzê«_[·Ý6;×6Ý4Ö–Ò×ó`I˜¤tÿ¬ü Û¾øúëã¾7¼!nš:5®><þ³ùæñÐñÇÇòûî+û<Ï~÷»Eç¹e³ÍÊ—BOés¸÷õ¯[6Ù$n=:®5*»ß߸j<\KKT«½¹9žþÚ×²Ïæú‘#ãÆI“⎽öŠYçž[(«$}–ŸpBܺÍ6ÙëHçH?ëÇÏýõ¯QEÿúWö>ÞÒñ¹¦÷*ý,é{Ò4kV 6Ï]vYö¸µã÷²ó÷c£âžÃ‹g¿÷½¬Wwúûó+•‚…ߣì;Yò߈dÙwfÇÞ¾óÎÙw4ý7NžÿÝe—˜ù‘ÄŠ ���`ðÒñ���¡Ù?þqD{ûê ÿh¿UǶr#ˆri¬W ,½ýöÎm þö·˜öñGo¥ÐÁÃï}o´­XQ´=0šþþ÷x®cIžmó›»ÇeÏ1û'?‰Gßÿþh]¾¼h{kss,»ë®lyöûßÏ^÷–çœ5 Ñ“‡Þõ®˜3DÆ`¥ Íüßÿ> ²´·µun_ùØc±òG?Šy¿úUlÓ±L:âˆè­ewÜ÷v<®ñ‰'ºìK­´ÌÿÃ⩳Ίíÿô§ÑتìIçKŸk.»–Üxc¶ÌûíocûK/- œþœ3?ö±xæÿþ¯Ë¾ìgíXRˆmü+^‘ý¼ lPöù³s|ûÛ]~–ôYÐñ3ìxíµ1¤ßŽ>: )uÙ÷ì³Ù’BAiÜÞ¶_ãöÙ§Ëqýýù•J¿Ò÷rÚG>¼ç=«7tü÷%~²Ï­ð¿5Z,ˆ¥iéøoIÚ¿Éç>ÓO;-���€ÁGÇ���„Rp P ×” ”Úê‚ ²°A¾LûèG£·žþÖ·²N&¥¡ŸR?w¿ò•±ì¿ÿí²oÎÏž…tJC?åÌþѲ�BO_sÍ ý$iŒTêvSú)”Þ›ßþöhzæ™è–ùó㮎÷½\h¤Tê*t÷¡‡fÝŸºóäç?_ú)µðÊ+³îOåÜ÷¦7• ý”JA™»:(Z/î²ï‰Žç/ ªj|úé콪¦óÐ@jëøÌî>øà²¡ŸR)�”ºc­|ôÑ¢íñùJ¯íá“O.Ú–Âe›}íkEÛž8ýôl<`iè§TzÏÿìg³P!���0øþ���À ÓÞÔÔe¼Î¤Ã¯ê±£_úÒ˜ò¦7u.Õ>.—B<ÿ¿ÿW´m«^Ûýîwñ²nˆ­~ò“µí¶ûÒ8£È( ¤pÄ£§œRtŽ1»ì’‘v¹ë®˜ñ׿ÆÄW¿ºh'ÕôôÓÑç.¿<»¹ÕV±áûÞÓ>ö±˜Üñ3V)@•ºádÎ??6ùüçcøÆÓ²hQÌêå8¶gÏ9'ëÈ’«92¶üþ÷cgŸ—Ï™“ua6ujçþ<ÉÇŽUòÌÙgGÝØ±1õè£cƒOŒQ3ft9&‰j]º´ËkIÝx:ÕÔĆ';\qE¼ôÚkc³³ÎŠúñã;w/¿÷Þx¬$@´âþûã©/¹øÉ:Î3娣b‹o;6ùìgcø&›dÁ¯u=ò+eÒ¾\mCCLÿô§ã¥ÿþwìtë­±Åÿý_ÔÓ¹?vRמBñùuûÈ#«:Lu|ïrcvÞ9¶ùå/£¦vu0uszúë_/zlú=ßé–[bÏ… c—{î‰õÞúÖ¢ýO|îsEç���£¾���`iêøÇÿö––¢mÃ7Ý4Ö†§¾úÕhkjê\Oá‹m/º( b$c÷Ü3&¿á qû;d]X’4²kÁ_þ“^ûÚl=u²Ùô‹_Œ<…:RÈ`Æe—EíðáÙþQMcŸnš:5 %©+΢k®‰©oyK·¯oÓOÎÂ5uu±&_w]<þ™Ït{Ìúï|gŒxÉKbM¤°Óä7¾±s}£÷½/nÝn»hž;·sÛÂË/ÏÂ-ÕZvçEëéüœtRçzúÌê'NŒg¾õ­,À“–ô¹u§aÚ´,¨““R——‡O8!×–KŸëâŽc&vتc:>³ÒÀÎKÎ>; eåR—ªñwî½wgç£Ù?øAlzÆQ?iR¶žº8•~ß·ê8&¦r}ä#qWÇw¦\w©µiÌ{Ħgž™}¯—w,rJ¬÷¶·­Þ¿Ë.ÑòÜsYH&·èê«‹Î1Ÿ_’Bd÷vü6ÏŸß¹mxÇçºýŸÿu£G›B¥Ý¸^rÎ9Y¨.Ia­­þóU;:~×F?ÿ:ÒgX���À`"ø���ƒL¹[)0ÐRgÁÿX´mÓ/|¡3ôÓùZ&LÈÂ…[ž+þ ›2%6|ï{»²ÚÚ¨1¢3ø“4Ï™ÓíCRˆa‹ï|gC?É’oÌ–î¤pÒšFï´SQè'©Ÿ<9 ¥€U®ñ©§¢7ò�UnñÕWg]hR *—º·¤¥Zés.ìF”ÞãÍ:^cað'i*x­éy _{ú|6,1•Œ}ù˳גwlJÁ²…W\SÞüæl}~aÇ X.+ ý$)ˆ²ù׿w÷âg:([ºS7jTÑzé÷z >¿hm:ÞÏFê|£GÇvïm u•*} IÈêøÔ44tnë ÿ����ƒ–à��� 2iôO©–… c ­|øá.]@ž¨Ð‰æ¹¿ÿ½h=uý©¤uñâXv÷ÝY Y9sf,úç?‹:“džïSÉØ½÷Žšú¡Sʵýöe·ØrË¢õ¶’ñY=™ôº×Åœ /ì\O—nÛqǵÝv1f÷ݳÀј]w±{ì‘…«ª1v·ÝºlK®†õצٳ;·Žú*í\“^ÇGå䡟ÎÇv|_òàOcÇ÷¡èç{>@V*±Ò­Ö^¾_%u¿i|ôÑXvÏ=ÑøØcÑøä“Y€gá•WXò½ˆÏï¡ãï²mëŽçHˆÊIßÁ4²¯0(ôÔ׾Ϟ{n¼JãÁFw,éþˆÍ6 ���`ðü��€AfØÔ©YÇ•4n)×øÄ1КžÝUhnóU…æyóŠ7´·Ç¼‹/Žg¿÷½XôïG¨-é¤2ØÕ Ö«íÕšò¿ÿëýå/1§¤ËòûîË–øÙϲõ ›r䑱Éé§÷ع¨¦BÀ¤¦›àI|_Rˆ§4lVi¬]úhØh£Xñàƒ±.5>þx<söÙY7¤– ¢·âó+§§ÀÎÖÏs÷¡‡f£Ér­K–dݘҒK¶>ô¡Ø …‹j ú��€Á¦6���€A%á¹õÖEÛžûÛߪzlê82ï·¿í\\ziT«½½=úªmåÊÂÅýG÷¿ùÍeC?iQ—”NëÊ´~4öíxÝ-ÖñX©Šjj²ÐÆ6¿úUŒÛk¯ŠaŒ42nÎ/~·ï´ScÍú¢_¾/åÎÑÝy{è 5Ð_{mÖçéo|£kè§ãs±Å1þÀ»?ÉZúü8öØâßË©»Ð.wÝ•g6yrÅã–ß{o<|â‰Ùïs¬Ág��� ���`špÈ!«º<oÉ 7ÄÒÿü'Æ”ÉTèÁw¾3;.7nï½+ŽN*•º©ªmhˆ½£·fÿô§1ï’K:×kjkcýw¿;q”Æ ßxã,ìpÛ;DóܹAßL}Ë[²%ulYrÓMÙç¾ä–[bñÕWGË¢EÇ¥®:œ|rìtÛmÑŸJ¿/>8v(éÕ“º±c£nÔ¨¢®?+KFåÚ››£é™gb]I£½|Ç;²®8¹ÐÛðýïñûí—ÏJ£ÈRà.²ëÉ@~Ëï¹'ûä'c‹ï|§â1 Ó¦ÅK¾÷½Øâì³³ã—v<z‹¯¿>–ÝqGѱ©ƒ×‚·¾5&qD����ƒ‡Ž?���0­ÿ®w­g¡ƒãŽë:R«Àì .( ý$½ùGú‘[n™uʵ55ÅÒ[oÞZð§?­OûÄ'bËóÏÏ‚?çOïìpÒºxqÐw©#LêÆR?qbL<ì°˜þ™ÏÄöücìñì³15ug)°ôöÛ‹+ýaôŒÅÏÑñ]IáœÞ*cUúýÉ¥ñS¥cÁÖ¦ÔMkå£v®§ÀÒËn¸!6úÀ²@[ ý$Õ~¯ûûóÛ»ã|^ùÊ¢mi$ÙÂÂXid[Ëܹ1zdzÿî¼äœsbçÿþ7^zíµQ[2êmÑÕW���0¸þ���À 4ú¥/íòÿ©#Ç{ìó.º¨(`Ñ4kV<ö‰OÄÃÇ_t|ý¤I±Á '¬ÞPf¤P{Á( Ô}¥´;ÐãŸþt´·¶vyÜCÏuËf›Å½GŸvZÖ)$W:iDÇq¥RG”Æ'Ÿ z'nºï oˆÿl¹eÜ0fLÜ6cF,¾îº¢cjGŽŒ‰‡^´­fذ.!Ž55þ ƒ¢aýõ;×ÓçþÔW¾Òå¸¶ÆÆl\UêðôÀ1ÇdǤ°I. ¥�ѳçœS´-{æÇ?ëRé÷ºnüøìw¬H{{ÌùùÏ+žc >¿ÔÕ'íßê‚ ¢~„¢×“ƒ-óç?÷—¿Œ;öÚ+nèønÞxãxðíoï2ÆkÜ>ûtéê”þ��� .F}��À •Æï,¾á†h|â‰Îmi ÒýoyKH#³RJ]€ÒŸÂ`BÞ‘¤ÐãŸû\L~òN!ÃÖ_?¦}ìc1ÿè û<wÙeqç¾ûƆ'Ÿ#¶Ø"šž}6 6ä]Y<üùÏ1þ¯è<gÖÕ§À“_þrŒØj«·×^Y$æG?ô^ w¤Ï{å#tnKA’M¿ð…×ñ9ÕÔ×gã¢Òˆ§Bé½Oß™þTSWÓ:>Ç™ŸøDç¶Ç?ûÙX~ÿý1åÿ7†Mž+z(žùÖ·bÙ]weûSx-}_68é¤ÎǬ÷ö·ÇS_ûZQ˜í‘÷¿?ëð“~¦ZIããÖ嘯¤ô{~ýЇbã<ûÝI£ùžüüçcÑ¿þUñõùÕ×ù_òÝïÆo}kÑë|èÄc»‚ñ{ÃÖ[/–Üxcçús—_÷uT6¶lø&›Dóœ9ñì÷¿_Ôá(À��� .‚?���0H ›:5v¸ì²¸ûÐC‹Â?I I¤PY55±ù×¾Sßò–¢ÍéôS‡–¦Ù³;·ÍûÍo²eë .ˆõÞñŽ»çž±Éç?æ3Ǥ€@aH Ôúï|gL8è Îõ©Gs~ñ‹Îõº»`ökk³ Qi°€žmñíoÇ{ïÝ”IA’‡ ‚4¥RØd³ŽïÃ@HA±…ÿøGÉ¥n2i©$’*ìJ3r›mbú©§Ægœ±ú öö, ––\§•‚n…¡™µ)$»Ç±äæ›;·=óïdK¡‘[m•ž*èÏoê±ÇÆü?ý)û½ÎÍÿÝïböO~’ý®&^õª,ðWøþλä’l©dòßã<0���€ÁŨ/���ÄFn»mìôŸÿÄÔcŽ);ª«T«5ãoË:±tÑñøMÎ<³ìã ƒ=Ó?ýéØòûßÚáã[çÛè”SbËóÏ/Ú<ñ5¯‰>øÁnš‚ ãöÛ/è½1»í–}Æ)Ö“ÔjÆ_ÿšVDÇw`»?ý)6xÏ{z<´nôèØú§?õÞö¶.û¦îs±Ñ‡>Tñ±égÝæÂ Ëv­Z›ÒëOÝr*Ia¶mº =%kãóK¿¿¥cºíø]- Ú¥×™ýw¥'ŸñúÇÛþú×��� >‚?���0È塇]ï½7 åŒÛgŸlŒR T7vlŒÜrËXï­oÍþa~ׇЉ‡Zñ\œpBlÿÇ?Æ„ƒÎÆ€¥qMé\íííÅÇtRìöÈ#±Ù—¿ãöÞ; ¤QCõ'Æè—½, üìr×]Y÷’ô:JmñïÄö—^“Ž8"6Ø {lzžI¯yMìpùå1í# ú.uXÚmæÌì}žxØaYÈ#µêFŠá›n“_ÿúØòÜs³ïÃ@wiIÏ›žkçÛoϾ©3OúÎfŸùzëe¯MÏ<3v{ì±l¬W9©ÔßúVìø¯Å”#̺SÕ64ÄðiÓ²ïìN·Ý£¶ß>ÖµÄË~O=5Fí°CfJyFm·]¶m§[oú)Sz<Ï@~éw{ëŸü¤(,˜º%=ø¶·uŽñ«92ûïÊËn¼16ìø}O?OêÄ”~Ÿ‡uü cvÞ9¦}øÃÙÏ´Uǹj:>���`ðéùRÁž«)s¿»Ûš ëùR[p›/uÏo«+YÒ¾4ļ¶©©ùú��z­ôùÒzáÒÚñé¶¥¥%V¬Xmmí1}úÆ����ô¯'Ÿ|*jkkbäÈQQ__555QWW—Ý.…jªè �tÕÐ0l¶Žeñó·­%Kûó·mK{ÁméÖ»»-½_ª»}��������`ü�������€!Hð��������† Á��������‚��������`ü�������€!Hð��������† Á� [555����¬}js�@O�€²J‹ Š ����°v¨Í�Õü�������€!Hð�èVñÕD®,���€µº§Ó�ÐÁ� ‹r…Âmííí����ôŸÂš[Oõ9�€œà�¼Èõ¦`ÛÖÖ����@ÿÉkn}©×�/^‚?�@ÕjkWýÑ¡¥¥5����€þ“×Üò�@5üÉ�¨Z*:¤«ˆV®\����@ÿI5·T{ü�zß�€"•懖/_����@ÿÉknùÅw•êt��…�€ŠJ «ŠÍÍÍ3Ç���€5“jm©æ–jo¥„}�€îþ��Ý*-,ÔÕÕgÛV¬X����ÀšKµ¶TsKµ·BB?�@O�€åí…Óm]]]¶mÑ¢Å����¬¹¼Ö–jo…µ8�€žø�PVéñ|=ÒÒÒÒ����ô]ª±¥Z[^w«T—�(Gð�è¶pP®ÐP_¿jÜׂÏ����Ðw©ÆVXsËõø�Á� ‹rEƒÂŽ?©‘n›››cùò����ô^ª­¥[aÍ­RàGÐ�(Gð�¨¨°ÈßÏ—aÆe·sçζ¶¶�����ª—jj©¶VXk+\c¾�€žþ��=*-:¤¥®®®³ýð¼yó����¨^ª©å#¾R­­\ � '‚?�@¦´PxUQá¶|ÜW~%R]]m¬X±2-Z����@ÏR--ÕÔRm-ïöSnÌW¹]¹u�àÅKð�èQ¹«VüjÈ®HZ¸pa,[¶,����€ÊR -ÕÒRM-ÕÖº«½�ô¤>��ž—Š ííí]Ö ·ŽúÊ¥«’ÒLòyóægë£G���� X ý¤ÚênÚuY§ŸÂQ_9Ý~�€jèø�T¥ÜGyûáUW'­jIœ ‹- ����`µT3+ ý”ŽøÒí�è-�€nvýÉ¥bDêð“&’<øÓÜÜ .ŠÆÆÆ˜2eJç~����x1ZÕ){^¬X±2«•¥:Z}}}v¿0ôS�J€�€žþ��EJÇ}•ÛWø)” yø'2žxâÉXo½©1jÔ¨����€›åË—Çœ9s‹ºfçã½J—jÂ>‚@�@)Á� ‹ÒðOáz¹n?¥MÛ›šš¢µµ5æÎ—4&Mš#F ����x¡[¹²1,X] —je)ìÓÐÐÐð©ú)¬·•†|„~�€r�€ªTþIëi{2|øðhiiÉ–Tà˜={vVà˜8qBŒ9Ò0����^PR]lÅŠñÜs ³ â’TK]²óNÙ…AŸÞ„~��*ü�Ê*7ò«§ðO>,¿Ÿ·.NÁŸtìªyæó³ýißèÑ£³.@ùLs ����†‚TûJµ®tÑ[êî³lÙ²¬–äc½R½+ÕÀòºW¾=¿ß›Ðº�P‰à�PQ5áŸü~*Z¤bG¾ž?ò"FZOW:¥bHºŸn-ZÔ±D—ç(<Gá-����¬Myà¦ô¶t’‡zÒEn…ŸÂOámþøÂsý��½%ø�t«§ðOaá¡0”wÿÉ@ùz*z$i[ ­ ÖùSäa¡üÝ��� ?ô®)­­Ú–ý¶žwøÉ- ü”[/=¯Ð�Ђ?�@Êq*…òÂEö)ÿU¸-/ˆäòí…Ï!Ø���À`P®þU.´Sð)=¶p´WwƒÊ­�T"ø�T­´ûOi (ß_XÜ(ÿUøøU~¢lЧp[~����¬ y+é®SO¹ñ]¥! J-$ô�ô†à�Ð+½ý•ä…ÂŽ>iÉ»ý†}Ê…€ LJ���ÀÚT)¤Óݸ®ÒŽ@Õvù©´ � ;‚?�@¯UýU¸­Rá¢4èSî\…û���`]+í•o+·_à�X›�€>«Ôý') �¥Û4¶«p½»1_¥ÅŽîB@B����ôEw›JûªÙU8¬Úó�ô…à�°F*uì)·½tìW¹âH¹0Pá~����XÛº ùnïM7õ.� ?þ��ý¢\÷Ÿ|{Râ)Ý^®ÓOµÅ����è‹5 ßTåUº¿·û��zCð�è7•ºÿt·¯R¤4TÍó���@ë)àSéøÞî�è Á� ßUêþ“ï+ÔÓq=Ctû���`M¬i§?A��}%ø� ˆîºÿ”;.×Û ‚ ����kSoëQêW�À@ü�Tµ Òã éê���Àº°&¡�`mü�ÖŠÞ€Ê=����;µ,�`mü�֪‡N>����¼û��ëŠà�°Î”D���� }�€ÁBð�4z*˜���°6ö��C…à�0d(¸������Àjµ�������� 9‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������CP}�������™çž{..¾ø’¸öÚëãÉ'ŸÌ¶MŸ>=öÛoŸ8ê¨#c„ �0XÔôÃq5eîww[Sa=_j nó¥îùmu%KÚ7.Ý655_������ÐGÿú×Õqæ™_ŒeË–—Ý?fÌè8í´OÇì�ÀÐÖÐ0l¶Žeñó·­%Kûó·mK{ÁméÖ»»-½_ª»}£¾������xÑK¡ŸO}ê´Š¡ŸdéÒeq꩟‰«¯þw�� ‚?������¼¨¥ñ^©ÓO[[[Ǧc¾ð…/ÅÂ… �`]«������xH¡œGy4žyæ™hllêñø3¶‹iÓ¦ÅÅ_RÔé§¡¡!N:é„8䃳õË/¿"Î=÷ÑÔ´êœK–,ßþöwqüñï �€uIÇ������^RègæÌǪ ý$&LÈn¯¹æº¢í)ôsÌ1GÇ”)S²%Ý?ñÄwóï_��ëšà������/O?ýt¯Ž1bDÙÇzè!]Ž}õ«+Zê©§�`]3ê �Xç–-[ßüæwâ/ùkÑö=÷Ü#¾ýíoV|\KKK\qÅ•qÕUWÅÃ?óç/ˆQ£FÆÔ©ëÅË_¾G¼æ5‡Å[l=illŒ+¯ügvžG™Ùqžù1|xCLš49vÜq‡xÕ«^ÙñZ^½µdÉ’8øàWmûú×ÏŠ}÷Ý'^ì}tfsÌÛŠ¶ýþ÷džnØ«cÖ¶ÓO?#þþ÷Ë;×>ø 8óÌÏÇšøøÇ?ÙåªÂäÔS?¯ý���T¯¦¦&úC{{{—m­­­%Ï��ëœà�°NÝvÛíqæ™_ŒgŸÕ«ÇÝÿñùÏ!fΜY´=ÍY_¸pQ<ôÐCñË_þ*Ž<òâƒ|_ 6¬ìyî¼ó®8ãŒ/v¹B+'ÍjüñÇãÒKÿ»îºK|æ3§®ÓÐÉ@;÷Üóã‚ ~Ö¹>cÆŒøÑÎ N ‡ÝxãÍe÷¥€‘à���ôÎFm”úªÖÊ•+côèÑ1mÚ´¬ž”»ì²ËãØc):öò˯(Zßxãé�°®õ�¬)XóíoŸï{ß{ú¹çž{;÷.¡ŸRmmmqñÅ¿O}ê3]®ÈJRxèƒüpUm™o½õ¶8ùäfÝ€ ¿\}õ¿£¹¹¹ì¾ÿþ÷Ž˜={v����Õ{ÉK¶ˆÍ7ß,ëæ\çž{.»Ýÿ}‹¶ŸwÞã sçÎÍ–_üâÂ8ÿü³ß~º:�랎?�À:qÖY_‹¿üåoEÛFË–-ïöqË—/SOýt—ã&Mš›l²I¶ý‘GÉB?¹4Fé·¿½$ÞüæÿíÜ–öŸvÚéÙU]¹ÚÚڬȳõÖ[w<ÏŠŽÇ]›uüÉ=ûì³qöÙß‹ÓOÿl@HW7nl,^¼$»ŸZŠ_qÅ?â­o=6���€ê¤úÎV[m™-½qÔQGÆEý&–.]–­§‹ÖÎ>ûœl)gìØ1Ùc��Ö5�€u"xr)´óõ¯Ÿûí·oûásæÌí\¯««‹O~òcq饌sÏý^üüç?‰‹/þUGqg«¢Çýô§?/šÍ~Ýu×Ç“O>Ù¹žŠB_ûÚWâ+_ùR¼ë]ÇÅûßÿÞøå/‡vHÑy.¿ü±pá€5µ`Á‚¸õÖÛ;×ëëëãÝï~gÑ1ÿû��� ¼ &Äi§}:«õ$“Ž?~|��¬k:þ��ëTê°s꩟Œ‰'Æ?þqe·Ç¦+­þüç?mûÀNŽ7¾ñ EÛÒLö3Îø\|÷»ß+ÚžÆtM™2%»÷Ý÷íÛk¯—Ç>ûì]´-…ŠN9åqÙeWt††R§ Ç{<vÚiBô‡C}M,Z´¸s=…–¦OŸûÛeñûßÿ!~xU÷¢ 7Ü0^ñŠýãè£ßãÆ«x¾&ùÃþ·ÜòŸxâ‰'²î1 ÃbÒ¤ÉñÒ—î¯~õ¡±Ûn»=æCúHÜxãÍ]ÎuÏ=÷Äž{® c͘1#~ô£óº3sæcñÇ?þ9…6{ö¬¬ãRêܴ馛Æ{ìGñÚXýõcmHc±~÷»?d?K u¥ïËøñãbë­·ŠØ?^óšWw¼Ý·ùN»è¢ßÆÍ7ß’oäÈñ²—½4ÞùÎãbÛm·‰þtÕUÿ,êLµÝvÛvü>ìßúÖÿun{øá‡ãÑGgÆ[l^ñ<¥ß¡³ÎúRvž?ÿùÒŽïŸ;¾¯EMMú½Ø8>ø•ñ†7¼>ÆŽÛå<©+Ö׿þ­ÎõžKAºÔé*în¾ùæX¸pQÇïÐäìµuÔ›bçwŠî¤ï綾þ5û~Ì;'»jrÔ¨‘±ÁÆ.»ìGù†ìû���ƒAª|ùË_ˆ/|áK±dÉҲǤN?)ô“þî �0þ��ëĨQ£ãÓŸþñº×½¶êÇ\wÝ EE—É“'Å‘GþOçz zÌŸ¿ kl¾ùfño|­â¹¦Nx@çúþûï_ö¸H3ftÑó®X±"JKKk|ûÛgǯ}QÑö™3gfËßÿ~yœ}ö·bã7îòØúêW¿Þåõ577gœjùË_þšˆ>÷¹Ó:Þ§‘ÑW---ñï|7 ‹vRJRØè®»îΖŸÿüÂøàßozÓÀ¶¾NcãÒÏÞØØX´=}n¸á¦lI]Ÿ¾øÅ3cûí·+{ŽôÞ~éK_ɾG¹t¾«¯¾&ûî¥@MJ²B»îºKðJÁµ§Ÿ~ºàu]'Ÿ|RôÆ¿ø•¸ôÒ¿m{ðÁ³%…£¾öµ³bË-_ÒãyRpç½ï}_Ñ÷ÿÙggeËUWý+Ž9æè¬;VéÕé;‘¾Ç¿ùÍÅe¿iI¯%í?þøwe]¶���`0HáŸtÐÅ_×^»ºct1¿ï¾{gã½tú�Á�`Hã¹zê¾Rª´KÏî»ïÆ ‹Ûoÿoüô§?ËÆ&¥K’ºÎ|ðÁñ¶·“)J¥ J5a”9sæt¹ÂkÓM7‰’B¥¡ŸB©ûÊg?{FÖ}§&µqyÞþskœqƺ„,Êù׿þuu_ÊB0}õ•¯|­K°¤œ¢I]d&Nœt` „ô~¥IORXå}ïû`œþ÷c«­¶,Ú—Þ¿ÏþÌŠï_ :¥ýÛl³uô‡ôZJ¿Ïy'¦½öÚ3 Tå.¿üŠxï{ßSôywçOúsTêî¹?øÁu¼ovÛ=jéÒ¥qÚi§W¼Â1ùå/ÕqޱqÜqo/ÚþÃþ8.ºè7Ñ“Ôñèüó˜c Ãa���¼ø<÷ÜsEžaÃêcúôMb¿ýö‰#|cÙŽ¸Iûu ïÎ�€ÁNð�X'zúI|ð¢õÍ6Û,~þó_Ä9çœ×%°‘:ÜüáŒ+®¸"N?ý³}£/~ü㟭o·Ýv±ÑFÅ@I]iÒxª4Ži£6Œ™3ßýî÷E]hî½÷Þøïï(³tÁ?+zRç˜O|â£1cÆöY Ô]æÜsÏï-uå•ÿŒ·¿ýÁ,ÈrÊ)Œw¾sq¶?…¨ wÞ9ÙíèÑ£;·¥N>¥¡Ÿƒ>(¥•Æz=òÈ£Y˜#¿"nÕy~0 ÁŸ‡z8¾÷½s‹¶í¾û®Y'¨4ÖíñÇŸýìÂì6IïÅé§Ÿ¿øÅAšÖÖÖ¬CNéwh‡fÄì——ÂR)¨sË-·FøÇ?þQô|é÷!bKÒØ¹ÂàϬY³ãŽ;îŒvzYUçN¡ŸÔvüíokÇϰCG‘saŽºóλ:Y°à¹øîw¿ŸúÔ'+ž'…Ì’—¿|÷øŸÿYU ½í¶Û;Þ»_ÆÊ•+;ûñ/ˆCyUçïEú®^xᯊΕ>““O~oGquã˜;w^Çgòó¬CUî?øQö¯¯÷×���úÇ¿þuuœyæ³Q.5IN£ÍÓrá…¿ìØÿùØsÏ—�ÀP¦²� Ï=·¨hýÎ;ïŒë¯¿±ÛǤâÎg>ó¹øÉO~[l±yôF ·¤ðP.@Þ÷¾Þ\ê­ØH¯µ0\”Â'ï}ïû‹Ž»é¦›‹‚??üpÑþãŽ{[Ö9&I]]R¤¶¶&î»ïþØ|óÍ;Þ‹-²qgÉæ›o–ݦ6Ö…ÁŸ3fdÛJ3&N9åýñØcOdš-·Ü2>ö±wîOïó”)“‹^óO<óçÏÉ“'GJÁ¯¼ËS’ÂE_øÂ¡žÞÙÿýâØcßsæÌͶ=òÈ#qÝu×Ǿûî“­§n?yÈ%÷êWŸýìg:Ïsì±Ç”ŸÕW—_~eÑú®»î܆KFŒQ®IcȪ þ¤±[ßþö7³ÐW.]Éøþ÷Ÿ’ˆrÿøÇ•ñÑ~(†^ñ\éqgõåÎQ^»ì²svÞøcǤ O –½óïÈÖŸ~ú™¢×ž|â‹éÓ§g÷Ó÷'šË_ëæ›o–}óP���¬©úùÔ§Nëöïš©ÃíG?ú‰øÊW¾Øç Æ��ƒÚ��"–-+9”‡~R8áW¿úEüûßWÅÅÿ*ëNR¨±±1¾ñoEo\~ù?âK_:«hÛ[ßzlç8¦røá‡wé(”>Ûo¿}Ѷ¹sç­—vPJ¡Ž… mK¯?÷:þøwÅ+_ùŠ˜4iRôÅæ›oGý–8õÔOĹç~¯(ô“KÁ•R©óLJÝ{þýïk‹¶tÒ‰]Fb¥N5©P¡ÂQX×\s]ѾôÚ?üáSŠÎ“îèCˆQ£FÅšzüñ'⡇*Ú–‡´’ÄÙcÝŠö_uÕUE§î¼âû…~’4/½7…–/_·ÜòŸnÏ•ºô䡟Âך@…®¾úš‚çêzmÁÿxi—ןÂ?§öéì{¹÷Þ{õ© ���”Jã½R§Ÿj.0I]€¿üå³bÑ¢E�0Téø� !5]¶¤Cgœqzçzê*’F\¥ÑT©L.(zúé§cÚ´iÑ“Ôåç«_ýFQèÀˆ÷¾÷Äh›o¾iÙíÓ§OËF|åRh£Ð>ûì¿ÿý:×ÓHªÃ}l»í¶Ë6±Í6[ecÊ^ò’-º9ÖÔ¼yóâÑGgfïïìÙs²_7ß|K—ãJGi­©§žzºKg™4b¬œn(î •ºþäžyæé¢};î8#ë’T*uªyÙËvì8×M±&.¿üŠ.ÛöÛo¿¢õ<°(Ô´xñ’¸ñÆ›ªºq÷Ýw+»=uo9rd˜ÊÍš5«ây&MšØÙ ªTjƒž~§rÏ>ûLçý7Þ86ÝtÓÎñjÉ/~qa6²n‡¶­·Þ&1—î§‘t���П.¾ø’¢ñ^éB““N:¡£†tp¶žþ^~î¹?諞ÆazèáÑ©Óña‡ïyÏñÙÅ6��ë’à�0d¤Î-…#™R€åCú`ÙcÓ¨«ßüæâ¬ÛO’B'÷ßÿ`ÁŸþðÇÙR(uJá¢þÌ”S__ß«í¹Jºë®»‹F~¥«Öò¹õ¹æxÝë^ïxÇÛÖ¨{M ýéOŽK.ùCôYJ»%W\qe5… W_É·`Aq'¢ 6¨FYý bM¥nR¥n»í¶¢õeË–u9æ²Ë.¯*øSiœZúþ¦.O) •›7o~7ç™RqßÔ©S‹ÖS0©¥¥¥ó{zúé§Å)§|8ÛžKß™›oþO¶äÒØ¹·¼å¨8âˆ×uéÔ���}QÚÙ7…~Ž9æèÎõt?]ìõÝï~?ú*ý}:]ä²6ÆÂ�ôDð�2&MšP´¾þúëWW•:þ¤Î#…]æÎ•¤‚Oêò“ºýJ…>ûÙÏô¼Y×R‡šý輸袋ãOº4žzꩲǥ«Ø~úÓŸÇ¿þõï8ÿüsbüøñÑ[©eö‰'ž\1ð“ÂEiÔTi¡­¿­I¡ææ¦Šçéî¼Õ´ ïÎ<Xö};óÌ/õøØô~¦ðLO­ÖÖ¶nöµ­w¶IÁ±jÏSj»í¶í(€þ´ã»ö‹øÇ?þ‹-.{ÜÌ™3ãË_þjÖ!ê _8Cø��€5VxÁKr衇t9æÕ¯>l‚?¹¿þõ¯‚?�À:'ø� 3f̈o¼¹s}Ù²¥Ý¿|yq×”áÇ—=.µvþìgOÏÂ0…Þô¦#ã£ýÐ #¤Ÿïíok¶Ìš5;î¹çÞ¸ï¾û³Ž?wß}O477w›Æ0ýä'?‹}èÑ[ßýî9EᕱcÇÄQG½)öØc÷Øl³Mc„ ±páÂ8ì°×Æ@*í:“Zk_sÍ?£·&OžX´^ØUªTáH«¾(×í§Z©{Õ?ÿyu~ø«»=îé§Ë‡¾ÒX´ùóm›<yRT’Æ€¥ S¹NWiÌZ¡qãÆv Ç­·Þzññ$ûš9ó±Žïâ}qï½÷g©zè¡¢c¯¼òŸß—ëªêh���½QîŸî.v麺º��X×~^�@?Ùm·]‹ÖÓ¡[o½­ì±)ðòì³³Š¶¥±B¥–,Y§œò‘.¡Ÿ·¾õØøØÇ><ä:,^¼8žyæ™Ø`ƒõã ƒŒ÷¿ÿ½ñýï7.¹ä¢ØtÓM‹Ž½ýöÿF_\s͵Eëgžùù8ñÄãc§^–…~’Ô™f m¼ñ´hhhè\OÁ¦ûï zkÚ´‹ÖS0%u5*µhÑ¢¸óλ£¯R¡1u¿Y—]vYÇ\}õ5e·_wÝ Eá¯d£6ªtšçGsÝÒe{ú9JŸc£ÊЛ3gN{ÉK¶ˆ×¾öðøÄ'>?ÿùOâüó¿_ôÙ%·ÝÖ·ï#���*óžFg—ºüò+¢?zè¡�°® þ��CF –l±ÅEÛÒ˜ Ù³gm›?~œqÆ‹¶M™29^úÒ‹¶Í;7N:éý]0ï~÷;³ÀÌPñÐCw¼ÞSâðÈCyMÇë?1 4JÝWvÜq‡¢m£F,Z/½J­\x'u€Yº´¸“ÒFmØå¸¿üåoÑrª¦¦æ^“F^í³Ï^EûÏ=÷¼²ã¸¾øÅ¯Äßø¦øøÇ?ç÷ƒ,–Ûo¿}Jž£)¾ùÍo'ÝOÛR×¾ºãŽ;;¾«ÅãæN8áÝqã×V\<ð€¢ãÿóŸÛ²ïwwRpéϾ´h[ ßœsιEÛÒûW¦+õÿ÷½ŽÏ»¸³ÖEý&ÑUhÿýWwê¹ì²+âøãßtHqÄÿÄç?f—«+Óïâ”)SжÝý3���¨FáßQ“óÎûa\xá/³:PZ~ñ‹ ãüókbêÔ)ñ¶·½5N<ñÝ�°®õ� )rÒI'Ä'>qjç¶§žz*Ž=öíqÈ!‡ÄÆoÏ<3+.¿üò¬P¡Ô‘¦pdQUõ|(‰Uh„ñÙˆ£3ÏübÅ×ñ²—½4Ž8âu1X¤àM {ä¡”çž['ŸüÁx÷»Ë:­¤°Ìµ×^ÿ{q·˜]vÙ¹h}Ò¤â‘W)Üñï|76ÝtzŒ36^õªWfïa QÍ™3·ó¸³Îúz|ìc‰M6™óæÍ‹?þñÏqÁ?‹îŒ1¢Ë¶üà‡Źýc·Ývéx-“ª:æØcɺÏä!4 îÄßGù?1mÚF¯g~üío‹k®¹.ÛŸº@¥û…?û®»î’u¾I’rW\qeÇwäéxÅ+öÏÖSG¨ûï¿?ÖD:g©W¾òÀnóÊW¾2ï•K?çWü#Þò–7wû¸/}鬸þú²€ÍÂ…‹âÒKÿÒeÌ×!‡Ü¥ëN©G}4ûýzõ«ËÆy¥\þ^æÒ9;ìÎõô=J£år7ÝtK|êSŸÉÆÁ¥NT <¿ûÝï‹Þïdçw ���XSGudvÑJ~áRºÀçì³ÏÉ–rÒì_þòç1~üø��Š�€!eÿý÷ËÆp¥«³r©“‚•¤C¥A¦( ý$)$ÑS·šd0F'ŸüžøÖ·þ¯sÛC=ÿïÿ}ºâc6ÜpÃ8昷mÛsÏ—gÁžÂN7¿úÕ¯³Û­¶Ú* þ$)dUøþ§qkGýÖ¢s¥ðG "-[V~äW €¤cR$÷\•-§öé8üðWWuÌ;ÌÈB]çž{~ç1)tR<)•¾»ï¾[çzêtô©O}2 ‚v¦IAŸÂ°O "í¼óËâ†nŠÞjmm«®ºªh[½¶ùæ›uû¸}÷Ý;{Þ•+Wvn»ì²îƒ?© R땾ㅡ¡B©¨™¾3ÝI¯I“&ǃ>Ømëøãß•}Ÿré½=à€ýŠÆu÷Z’°J,���XSi yªœzêgÊv.T__ßqÜ'…~�€!ͨ/�`ÈIc¸>ò‘SbøðáÝ—Š7'tbêx¡{ó›ÿ7>øÁ÷ŰaÃz<vÆŒqÞyßËC…¦M›ï|ç;Ê>&uÿin^5fëÝï>®ËذBésùÊW¾ãÆ«xLêÞôž÷œPv_Ú©æ˜ä¸ãÞŸüäÇzì^“ΗާSOýD—}iäÕç?ÿ¹ŠçH¨OúÔØd“M£/n¹å?Y'¦B¥c¼Ê9rd—qf÷Ýw_<ñÄ“º¥î:•¤Î÷¾wv·ŸO’¾Kgžyz—NP…R[ó·½íØ.ÛÏ8ãô8ôЃ£'é39üð×t<Ïç���úËì_þòbìØ1Iû¾ñ¯Æ¾ûî��C™Ž?�Àô¿ÿ{T¼êUÅþð§¸ùæ[â±ÇË:ÿ¤Q]ë­·~ì½÷žYG˜ÂN$/tÇsttÐ+ã÷¿ÿcÖ…'A[²diŒ1<&Nœ”}JUöÛoߊç8á„wÇ–[¾$ë ôÀfïéèÑ£²î4 .Œ©S§fa”sÏý^Çóü!_•BAË—¯È"»ï¾{¼ãoM6Ù¤Ç×ûú×‘ëºøâ߯ý÷?=W*ºvÝ©æ˜äo|Cì³ÏÞñ÷¿_×\smÌž=;ë4jÔÈXý ²Ñ^oxÃÝvØ9äWÅvÛm]ô۸馛³s¤÷.½oÇ÷ެ»Pw„º“Æs•êiÌWîU¯zU\yå?‹¶¥Ÿ3u:ªä£ýPözûÛKâ‘GÚÚš˜6mã8øàWv¼¯1cÆTóÔŸû&qÁ?Šÿø§qýõ×gá¥Ô hûí·Ë~ÓØ»rRø+©Ò1—^ú׸ãŽ;cîÜ9Ù÷$}~éw4}&¯yÍa±õÖ[���ô·þIo½øâKâÚk¯Ïƾ§@Ó§OïøûñAµ„×wüul�� u5ýp\M™ûÝÝÖTXÏ—Ú‚Û|©{~[]É’ö¥K•k›šš¯��x‘9ôÐ×Ä¢E‹;×O;íSYÞJ!¡¯ý[ën¸Aüþ÷¿ �����x!jh¶wÇMš ºøùÛÖ’¥ýùÛ¶‚¥½à¶t‰ ëÝÝ–Þ/ÕݾŒQ_��������0 þ��������À$ø��������Cà�������� A‚?��������0ÕôÃq5eîww[Sa=_j nó¥îùmu%KÚ7.Ý655_��������Ѓ††a{wÜ´u,‹Ÿ¿m-YÚŸ¿m+XÚ nK—¨°ÞÝméýRÝíËèø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� A‚?��������0 þ��������À$ø��������Cà�������� Aõ�0D´··���� ´ššš�� �€AC°���€Á §:•`�0Xþ��댠����CQi]K�XW�€µª·aá ����Ö¥jB=…5,! �`mü�ÖŠJžj‚=Â?����¬ )ÄÓÛ±_ùñ@�ÀÚ ø� ¨r…‘îŠ%mmm����ƒA¹:VmmmÅc Ã>@�ÀÚ ø� ˆj?i½Ü¶jÏ×Ýv����¨F¥`N¥í¥®¥ãòcË…}€�€$ø�ô»îB?ya$­·¶¶fëé~áöÂã����`0È;ýäž´žî§Ûººº¢í©ÆUn˜ð�Ðß�€~ÓSà'-)ìÓÒÒÒ¹½ð¶ðñ•îWû¼����Гž‚8å:÷äÛó ×òcÒm}}}JáŸÒ Pá9€�€þ"ø�ô‹J#»R$}Rà'-ùöT�>¼!† ÖQIÅ����†„U¬ÓÒÍÍÍÑØØ”Õ¾ššš²Wª}¥%*€ÔÂ�€þ ø�¬‘J]~òî>©ð‘n“TÌ3ft444t<����`¨YîIKmvaÛ¨Q£²zX þ,[¶<»._Òþ¼ î?�@ü�ú¬\—ŸTàH·)ð“–´ž®l;vLVä����€¢ì1bD¶¤ºØ’%K;/ŠKu±´¤O¹�ð�ÐW‚?�@¯• üäK ú466fW3¥õñãÇw;†����¼X¤Ï¤IcåÊÆX´hQgwìáÃWÕÉRÐ'_Ý�€¾ü�z¥0ô“ßÏ»ü¤âE ý¤ÛteSêòc¤����/V邸††)Y÷Ÿ•+Wfu´þI£¿òî?Ia�Hø�è Á� j¥¡ŸÂ%µ-N¡Ÿt̘Ñ1zôè����€»î?~\Ô××ÅÒ¥ËbÅŠYø'uJA <è#ü�ô…à�УîF{†~R¡"ö9rD�����«¥ åjkë²Ñ_©––¤ðO!£¿�€Þü�ºÕSè§¥¥%ššš„~���� yí,…RM-{êë‹ÿ¹®0ì£û�ÐÁ� ¢žB?­­­Y"ÝŽ;Fè����zjhmm­±dÉÒÎðO]]]Ñ1Â?�@µ�€²z ý¤?iÄWêøÓÐе*����z–jiMYð§¶¶6 ö¤ÛBÂ?�@5j�  ¥¡ŸÔå'Òý Æ����P½TSË/®Kµ¶t¿°�P Á� ‹ÒÂB*:îKK>âkÒ¤‰]®F����º—jj©¶–jl©ÖVø)¬É%Â@�@9þ•�¨JáÕFi¼WZêëëcĈ����ô^ª­¥[^oÓñ�è-Á� [åºý¤öÃéÖˆ/����X3©ÆVXsë®ë�@)Á� G©ØÏO­‡ÓRWW ����ô]ª±¥Z[^w+¬Å�ôDð�¨¨Üñ¼åð¸qc����Xs©ÖVX{+¤ë�Ðú��èAálñT|èØÇÁÂÕOëVMMM����Ðw«jm«jo©P^‹Sw�z"ø�”•‡i 犧«‹ÒRWWµµk¿q €ÏàTésQ˜���¨Nªµ¥š[õ•êoi½0ü#�TbÔ�PVi˜#­§ÂC2jÔ¨X[ » 1´øì����ª—×ÜR ®\m� Á� [yp#]i´*ø“Æ|5Ä@yáñ™���toUÍ­½³ëZ �P £¾�€. ¥÷ÛÚÚ£®®.‚BÆ‹Cþ9kO ���°Zª¹¥Ú[wµ9õ� ”à�PQi']i”¤ãù<ƒí|믓����ÀjyÍ-¯Áå~�€îþ��åÁŒÒ¶ÂýüXW§o*½ï}ý^����×Fòz\Ú&ø�tGð�èQÌÈg‹÷ç9×ÖãxkSÄ���^ìR}$ïø£�TCð�è…uú1 líêðM_C@Â?����jW�@õ�€µª7¡›uz±ªö}¬6 ÓÛQ^Â?������Õü�º(üèPMµçèïã¥ïOaÞ€„���€³ªÏ�/<‚?�@·ú« Ð_až¾¾…‘¾é혮jWm¨Gø���x±S�z"ø� ¸jB7ýøîéݽ§=…{º;¦Úî?Š[������• þ��ë\wá’¾îcàU3꫚�`�����@ßþ��ª¯|òíMMMÑÒÒmmmÛúkl½Sm@'?.ÝÖÖÖÆ°aò¥Ò9z ÿ�����”'ø�¬3Ý…~Ò²bÅŠhmmíñøžöÑ?ʽÇÝuùIÒç—–æææ9rd·î�����èÁ�`Àô%Œ“‡~æÏŸË.Œ‘·^#ïþo ›?;j››¢_|÷ç1 Þÿ¶PCäõ· kˆæ)ëÇò;ÇÊÝöŠÑã'ÄäÉ“³}½ ù�����t%ø�”UÚéïŽ:åΗ¶¥î0³gÏŽÆYÏÆz¿½ †Í M)¨5üÙ'³¥ùÎ[bΛŽË:ÿ¬·ÞzQWW×%È#Ü���°J¹Úœº �PNm��t£¯ŸÞŽåÊ;ý,X° —.úy6gUkåÒ¥ÙgœÞ¥Œs���XM=�è‰à�°ÎåŒåË—GKKkŒºí¡Ÿ þuÛÙgœ>ëDñ ����� ï�€~××®-+V¬ÈnGÝs[ðÂ4êžÛ³Ûü³.G×�����€êþ��ëTa#u‚Iëõóæ/LõsgeŸqú¬sÂ<������}#ø�¬5=<ÚÚÚ²Ûº–æà…)ÿlóϺa ���àÿ³w'prÔuþÿ?Õ=÷ä¾CrsB€@NAñ�euÕE—u]ÝŸ®®ºÿUWW×uw]ñ`×ED¹ÂMB ÷•’’Lî¹îª¾UßêêžîžžÉ=“×Ó-ê®®ªxd¿yÏç��€®ü��†p,~���������ºà��èU= pü8üð³��������phþ��€~‘Ö ¼lüŒ���������tÁ��0à¢ÂCß7��������@ï ø������������ B��@¿ËWñ…ê/‡~���������Á��Ðkò…6s §ø™��������Èà������������0ü��% .‡¾s��������€CCð��ô«h؃à,~.���������ºà������������0ü��}Šê-8Tü ��������äV&���ÀtË-·Ê÷¾÷oy÷WTTÈØ±cdöìYrþùçÉ…^ ñx\��������� *þ��€GE—Ã×@~÷ííí²cÇNyòÉUòÿøMùó?ÿ ©««��������€Á‚Š?���ò®¾úC2wmòÎ;ïȃ>$Û·¿#¯¾úš|á _–_üâ%#��������JÁ��� y§œr²œqƲœû®½ö“òùÏAž~úþyüñ'dùò³�������� Ôñ«Ì��`@ÐÞ Ùêg¢¢¢B¾ò•/‡ë��������� ¨ø��€ÃÞ”)GHMM477ËÞ½{ó§ûþøÇ;eÕªÕ²yófiii•Ñ£GÉôéÓåœs–Ë{ß{© e{ë­-rå•’bM:%õ9·æÜ·rå*¹ï¾?ÉK/½,»wï‘òò2™0a‚œpÂùÀ®”yóæ¼vOŸA-^|º¸®+×^û ùä'?.·Þz›ÜyçݲeËÖÔuZRË·ÉGL��������Ð?þ���à°·ÿ~úQãÆËy̬oû;ÒÔÔœ±½®n·™Ö®]'·ß~‡üèG?±cÇJokll”/ù«²zõšŒíííí²yó[fÒÎÿûŸ“~ðýÒ×Ïð¥/}Eyä1��������‡à���{?úÑOÃå .8¯ÓþU«ž’¯}íMµ›X,&^xœqÆ2S)gß¾ýrÿý’ÇRÞxc£|ýëÿ$×_ÿƒŒóÇŒ-ó7Ÿ‘Bî¾û^yóÍMfùÝï¾0cŸ~îßüÍÿ“^xѬO›6U®¸â½2gÎlqG^}½üæ7¿•ýûÈ¿ýÛä˜cŽ– ŽïÕgˆºçžûdûöwÌg\vÙ%¦ÊOk«_9��������ô‚?���8,i…Ÿõë7È7þÆ^”¶°Z¸ð„NÇþö·¿3™²²2¹þúÿSNY”±_ÃBßüæ·MŧžzZ¶nÝ&Ó§O ÷1B®¹æÃyïEC9›6m6Ë‹/2m´¢ž{îyyíµ×Íò²eKå{ßûNF;®SO]"çœs¶|èC1€~÷»ßw þê3DièG« }á Ÿ7Á#��������00þ���`Èûüç¿Xpÿ9ç,—?ÿóšJ9¹hõ­„³gÏžNëòË/3¡õꫯå ÍdÛ±c§©ÄãyžŒ7V¾õ­o˜Š<Q'Ÿ|’¬XqŸ¬\ù”,YrJFèÇÒÏ;ùäMhdž„úê&LŸz§Ÿ%ô�������À�#ø��€ÃÞªU«Íü3Ÿ¹.oØeîÜ9fÊ'ÆÙ¿¿C«ó|éK_‘úúöùö·¿)cÆŒÉylMMœþ¹¯W^^^ðó{ëN<q¡©��������£õ���ò®»îSrÜqó3¶% ©«Û-?üˆ þ<üð£òÌ3kå†~,G5¯àõåÍ77ÉÛoo—]»v™¹¶ëŠ^»ßÿþ˜Ê:êÓŸþ SÙ§Ú²K?ó­·Þ’;w™éõ×_—5kÖŸŸìò‡ò µµµ��������Á��� yZåfñâSrî{ï{/•XaÚm544šù-·ÜÔ©ÕæÍo¥¶ß*+W®’wÞÙÑé:Ým{uï½÷Ëm·ýÑ,/]zªi5Vˆqî¹ç>¹ÿþ䥗^–ÖÖÖœ÷ -Ãòéíg���������‹à���{\pž¼üò+rÓM7›p̺uÏÊ¢E'‡ûïºëùö·¿VÁр̌GÊ´iSeêÔ©2kÖL™2åùË¿üë¢>oãÆ7åŸÿù_Ìò„ ãå›ßüÇ‚¡­ÎsÝuŸ «©áÇÉܹsåˆ#&›û8昣M˜HƒA¹ôö3��������€Gð�� ˆ®*“àð3ÐÕf.¼ðüQ6¼êêêÂÀÌÈ‘#äsŸû¬,_~¦ ><ãü\trijj’¿û»¿7{âñ¸|÷»ß–Q£F<çG?úiú9÷ܳåŸøsSÅ(ûiå¢\zû��������@i ø���¤Œ=:\Öp޵zõš°JÎW¿úe9眳sž¯UyŠño|K¶nÝf–?ó™¿” Žïòœ'žxÒÌ5ì£A¡|!©†††œÛ{û��������@i ø���¤<ÿü áò¤I“ÂåæææpyÆŒyÏôÑǤ+7ÞøyøáGÍò™g.“|äj)FKK‹™yäô¼¡ í¬]».ç¾Þ|��������P:b���æ¶lÙ*?üáÌrYY™œ~úiá¾éÓ§…Ë?üHÎó׬yF~ñ‹¥çž{Þ´ìR“'O’¯ýŠno6mšÏ>ûœ<x°Ó~möÿðuijjÎy~o=��������(-Tü��}Jƒ žç ÐSņc yæ™urà@f`F.5DóÚk¯Ë£>.ííífûG>r•Œ3&<nÉ’ÅrÄ“åwvÈ 7ülÚ´YÎ:ëL5j¤ìÝ»Ož|r¥¬Xñ°Ì˜q¤Ù—ËÞ½{åïÿþk’L&Íú‰'.”»ï¾W ¹ôÒ÷ȰaÃÌòW¼W^yåUÙ·o¿\}õŸÉ>p¥iû¥í»6n|Sî¸ã.Ù¾ý™5kfÎ{èg���������¥‡à��p„ƒ_½ê)ÆM7ÝÜå1z/¨¹îºOglÇãòýïÿKjû_›ðЬ0S”VÔùÖ·¾aB9¹ÜwߟdÏž½áú½÷Þo¦BÎ8cYüÑÐË/¿"·ß~‡ìÚU'×_ÿ“N÷þ×}Ù—+¸ÓÏ���������JÁ���–4 3rä7nœ,Zt²\tÑ»ä˜cŽÎyì¼ysåÖ[o–_ÿú&y≕¦rŽëº2eÊrÞyçȇ?|•tttäý¬C ¶i°ç«_ý²œyæ2þÑê?Ö˰aµ²`Áñò‘\-'t¢|ï{ÿ–÷‡ú @ðZÛÅ©(‰õO(���ÀÐWWW'Ç—êêj��ŠŠMuŠÜç1wò¬Û)™Û)l‹gMºo„ÎÛÛ;V ��èÚŽHƒ :Ùem)ÔÒÒ,®ëÉ´iSsž—/ÜÝ^hyÇŽfyü×ÿFúÔn”>õ™k¤O òûßýõÿ4óÉ“'eTü)f9ª¿ª(Rê¿ãÏn’ö'_•äÖÝâ5´ˆ3¬Zâ3ÆKÅ’£¤ü”¹=IWÚW¯—ŽU¯Kbã‘DÒŸ:6uü<©8ûxqª+����zâÁ2¿<SQQ.—\òž¼cZ¥dÛ¶·%–úÿ‹ª«k¤¬¬ÌŒè//éÜ.�€Þ‘ú3ÂÒÔÌMMõÁ<™5yÁÜL^dž=IžõBóìål]þf1��@¯)¦eWôZ|Á*&è“ïx�ÏÝS/Í?¾G’[÷dl÷6IâÞ’øŠ¤æ“çKlâ(ÿœºƒÒ|Ã}’ܲ;ëbž¹ŽNmzεHÙÑ¥?8��� ôlذÁÌÛÛ;äŽ;î”Ë.»tP„���ºƒà��(6ÔðÚ>)ëHH_hu<iܲIÊ+«¤/$œ¤Œxc¿”·ôMˤ¶Ê ixg›”Çúæ·»ÚZ›eÔK»¤Âë›`MGy¹™Ü†w×iü—?ˆw°¹àqÉM;¥ñ[·HÍg.§,.M?¼[¼Æ–‚çhp¨é?î”ÚÏ]*eÇ08��� {æÌ™#¯½öºYN$’„��À��€ ZÀ´ÖÔH_iˆyÒp`¿ô•féæÑµÒWêG“7)}¥1õn꾫ÂÔZë¿›xœ?†C‚ëIóÿ>ØeèÇòšÛ¤éßï¦ïßÞeè'”œoþŸ?‰×Ô&����ÐçwŽÌž=+\·áŸ­[· ��ÀPÁ߸��€>Wlë&í[®šG”¾²7æÊþ=;¤¯4ÅÚ¥~rÞÿØ‘²?Ñwù}`Ï.Ùï»`Q˨fn{Ów…Ê@@iëX·ÑTòé–Ô@»×Þ½ªn,jøE���€îÐñ‡w¿ûÂNáŸ;+ð��2þ��€’QYYiæûæÎ–¾òZE‡l|yô•·ƒòÖI3¤¯¼vÌ,ÙÐÒ }eÃKkSï¨oÚ¬)ûÝVUõM«5�ý«ãé Ò_Ú×ôßg���:ÿ��€¡Žà��èwùª¸Ø0HÃqóÅëƒJ/njzµ¼C6<ÿŒ¸®+½ÍKÝò6i§Ì7Ö÷‹ÉKóçÈkMâz½ßŽËK½“7^x&õŽÒûo'uÿN,õÝc–mÈ+~€Á%¹¥Nú‹»cŸx}W‘ ���ÀÐEø�� e��@¯ênp#z¼ÂTWWɈÙ3eëÑGIo[SÙ.cžÔïß#/>õ°ô¶7œ½Ò(R?f˜¼¶üXém«/û‡—íò\ÃémÏ­\! öʘ+kS覆m=ö(1k¶ÔÔT›ïÚ:”Ÿ�Ëkê»Öƒ?,5µöþ›����ÿ��€¡Šà��(è>|¸Œ7N^_|²$ÊË¥·´:ž<Xþ ê'îºYÚÛZ¤·tHR^pvŠç:fZõþ¥Ò^U!½¥µ²Rî?ïtIzޏ^LÚ»GÚz±jQ[k³<q÷ïÂõ«[¥Í齪B‰Š Y¿x‘Œ?Î|Ç„w€¡ÁÖmûâ1qª{ï¿«����?„��ÀPDð��ô‹bƒ:�3yò$=w¶¬½ð¼^iù¥-¸n®m‘†X:(S`ŸÜþßßï•–_^êOĶI“›×3Õ&wýÍŽÒòKßÁW_,†×¦î×1×ߟHÈMï¼Ý+-¿<Ï•;þï?¥ñàþp›VFúͰæ^iù¥÷¿î¼³eÌœY2qâ‰ÅŠû#(á  ôÅœ ý%>}¼HY\����àPþ��C Á��0 ¢¡Žì€Gee¥œxâ ²gæ‘òò²Ó)ü£¡Ÿ;kZäÕŠŽNû6¾òœ¬øýÏMð¥Ç×Oýïg‡l‘qµOÒñÃ9nL6?Kþðrñb‡rÿŽÜvÙ9òâÑsÌ5]qÌç$SŸñjc³Üµ«.uÿ=ÿè³?xËÿÉ/>Óißëå ¹+õî¼CÈßèý¿”úwÏ™% .ªªÌê …~�”¾òeÇH©Xz´����@o°áŸY³f†ÛløgÛ¶·��`0!ø��z]o8ÆŒ#Ë–-•Í''O_t~Ú~i{¯_Ô6ËÊÊö¼Ç<óÈ=rë ßëQÛ/mïõpl‹¼êìÍiþÆŸÑ(Ž.?sÞIrËg/ëQÛ¯ÖªJùß]!-]”qM3i�(5=¶ï€üìíwztÿÚÞë–Ÿ|7õîÍ{Ìʪvùå°æµýÒö^O_t¼•ú—.]b¾ÓCE8(-å fJ|ÖDék±É£¥âÌù����½EÃ?_|Q§ðσ®��€Á¤Ø:éN‘ûœ"æNžõBS,2Nº­Rçÿðÿß'��ôŠh»¬-±‰:9r„ô•h°cĈR[[+›ÚÛeÓ¼¹OÝÃȺÝÒUôC+Ô<WÑ.¿Þ"ÛË’Ò•½»¶ËóO®²òr9âÈ9]†K´JÎæØy$¾Ev{­æ¸®øÑj<6”4m¿Ù3qŒ<{Ɖw$åˆ-»Äé¢BVZwÒ|ùï]![§L2­½làÇ~Ž^[?G÷íjm—7þýËݺÿ—Ÿ~L~ÿÓïÊέ›¤+»ã®<SÙ.e©7?5/âý;òö¼9òô»/æ)“eñâSdÆŒá}å«ò“}ß¹žƒàPbRÿJ–-˜!‰µoˆ×Ò.}ÁV-µŸ»Tb£j����z“Ž{½ñÆFÙ¿ÿ@¸Í¯D½PJ}}½ÿ(Oóh»t]¶s» ��zÇ?ýÓ?ýLÄüÞu[0Ïž¤À¶’Qìßœôgð'WÈ'l‹gMºOÿæ1ÖÞÞ±J��@¯H&“fàC'»œH$¤¥¥Y\דiÓ¦vy|í§r…Šò-Ûy]]¬]û¬ìÛ·_ªå¨çÿ$£w¶HeKÂLª­ºLÚjÊäÀ¤ùÍ–Ír0Ö³?s 5Væ-\,sŽ_$£ÇN£Çšíõû÷Ê=»ä—ÖɆÖȈïýM:ˆ#6“žûËNÆ6 é ß×(G?·Qæ½ô¦ŒÙS/#Ô›ë5BöŽ)¯3[^œ?Gö!ڀ̆{¼0X”¹ÍRË“~üånÝýÒ#SÏtõôßÿú…HKí0;vŒœ|ò‰2aÂsLw‚?ù>€Òäî: Mÿ~‡¸{ê¥7ÅF“šÏ_*ñ)c����z“ŽyÝsÏ}²iÓæp[YY\.»ìҢƾúж‹Å©®®IÝO™ ÑêD6ø£Ë�� wTT”/MÍô¯cêƒy2kò‚¹™¼È¼« 1Ï^ÎÖå_xü��ôWð'{=;ð]nkk“իטÁIï< …Üöø‹Ò×&ÿ×7#œÌpç¦:éP“Ì8ωœÌ=§ð5³¶éqS~úeé/Wœ¹ àþGœ/“&M2­ÚªªªÌ¶\¡žîVû)´ÀÀó6KÓÞ%É-uÒbGŒ‘ÚÏ_*±1Ã����z“ŽwÝ{ïýòæ›éJÈú¹ôÒKdúôi2þ��ІJð‡z€�� OJ@#×¹2oÞ\9ýôÓ¤˜pŽKÍcâ¦ænêU®g''µL¦JOd› õ8æ<OtrÌäï®®;éëÚmNÖqz~‰…a–-;]æÏ?Ö”ÆÎÖÛ?�J‡3²Fj¿t…”¤ªøìI2ìKï#ô��� ×•rè�� 'þ��€~ÕÓð†=ÏVhI×1•{tJèÜ ¦`›]OxNæ6³ì˜xx"r¼ë¥«÷¸nz[Æ5ƒÏMD×už”’b?‡ú]|œÊr©ýë÷HÅ™ó¥§ÊOš-µ_¸\œa¥ñß{����C¡��0• ���º-™pŋłÖ[~k.S·1hÅe¶Iº]—iã%Ym½Äk[|ÙÚN¸ÖƒŒ^3X‘(“ù-#d^sÌ8ó?edù8©pª%™:¹±£Qö·ÖI]ãVyûÀ˲mï³ÒÚ~P� ÏÅcRýgçˆ3ªVÚî\Ó­S+Î;Aª?t†&�����z“†~î¹ç>Ù´is¸Ð�� þ��€>£•[<Ï+ú˜\Çs¾VwäÊ…#eþÉ£¤zb¥)ñÓôÊoäõŽIrÿqgKk¬ÜíDB?6Ü{4ô“±®ÇG‚@b@N:�‚‚ÀOpî¼öarAÓ9.1\bºMÿ~|ÂXñ4Œ”šâ©id|”ÔTŒñÃg˼IË¥ÍMÊ[{ÖÉËÛî=õ¯KÊUÁ'º­˜ ?T™Ô¿²U—-1­ºZ~õˆÿÈ.ޝ¼d±9����z¡��0”ü��%©?jê°2ùëON—ÚY5â™þ\žxí®Œ¨ò䔎rô«¿‘ŸM¾XvŽVô‰†y2ªüˆ?%£á‰TþÑJ?v[ôü`ÿ¸d…\Õ<MŽOމ;þŸä‚ƒ½djJmÓÉ9ïÐ>c>rýCbq9rÜ"™4ödÙº÷YyþÍÿ“æÖ:éO„w€ÃOÅÇš–]Íÿý'‘öDîƒRƒí5?WÊ—%����ÐÛý��€¡Žà��èw= õ{ÞìÉ£¤7ÄSŸ÷É÷‘šckýtNGàÑÐÎS³acE>±ýùך«¥¹¼*£Z©üãfµòж‹n“ô1¹¶-n-×´)Õeeâ”;~G‹{ / ýÄ?@Oí+óüe½N2µ=žšOs¢Œñ=y{Ïo¤¡ñé = ù†žògɰ/^.M?¼[¼†–Œ}Ne¹Ô\÷n);nº����@o#ô��1��`¥öx÷q•R{L­8ô‰A›Ô½ÚÛÕûÖÅÚQ®¼÷…Åu=°Ñ^nú±¡7ó¸a›/­üãWÿIï9ï‚æ‰òm3¥¦¢\b•qªNMU:•¥þâ\§¸8©õŠ˜8å1‰¥&§,&e©{ÔI!ÌS{¤,^%“Ç\F¾LAàðŸ5I†}åý›02ÜæŒ¬•Ú/¿Ð���€>³bÅÃB?—]v)¡��0¤Pñ��ô©îV÷Éuü@´ý_)2ëœÑâ&<q<ü*?zž)Ù£÷—š-µKÆoØ*o×NLWùѹ™üp.Ûmò²·i•ŸÈºî¿¬|ª¼wØöq*4Ð7ÁMðøÒÕ~Ì-êýè?’©{ŽëäJ,µ_«�ż`žºá˜çÏG|—t¸íÒxð>é ¹‚=Ý û† ý ûò•Òôƒ;ÅëHJíç/•ØØá����}eãÆá² ýL›6U���†*þ���äpÁ)µ©!Ç´÷òÚ=qÛÝÔ_T{"²IŠ™Ü ¤©žXÌ•«ö<áWùÑ)L®“¹žk[Ê\9UÆÉeÕÓÄI݇™´ŠVô «þ”¥æe~((¨ðcŽóËû„“ ûˆ_éÇÎýNa~xh䨋¥²æd€¾æŒ¬‘Ú¿»B†ýýûý����èsóæÍ3óŠŠrB?��`È¢â��(YQéG5Ü‘qǧþBº=õÙq×oñeªó}ºÚ£+µ3ÙÊ=ÓÇ6Ê¢¯Éê±Ç¤¶9‘ê>¶‚OÖ¶ -˜VüIïïUÉ553ýcÁäÄýpOÌ€RÛ´Ú«!×%91×tŸóß¡†}‚.e¦:‘#‘ÉlsdؘIGû[â&öJ_ j�Ë©®����è矮,\¸@†.UUU��0ü��b B=]ÑXg,îW÷qÍ?!#Að')~Ë/­¤í´^rSë—w¬•§“GK2òñüv_™Ÿ X¤­Wtۇ˦JU,†s‚=éP�r½¤òImöƒ%¸g'¼÷ŒØM�Êxn§J*G])-{þKJ_…ƒ<(k×>+[¶l‘ÆÆ&SÚ{üøñrì±Ç˜©'ŸÛØØ(Ï>ûœ¼õֳ즾4DÔß<ñÄ…2zôhé‰úúzyî¹çÍu$›kÍ;GN8aAêÞþﯿ¾^^}õ5Ù³g´µµKMMµL:5uÇˤI“ žûöÛÛÍóíØ±CZ[ÛRƒ®•2yòdóΦN"=u(÷”í׿¾)ut�î=ïy·Ì™3»à9úß²ÿû¿_¤¾³ÆpÛW¼W¦OŸ–÷ºQúFŽ)³gÏ2¼\�����½CÇ����†2‚?�� Ïõfȧ¯+Çœ>9.Õ“*D:\‘¤c£z¶âOê ç$ýv_N‡'®VþIz~õŸÔ¶áUíréÖ•rëg„7«¢ç¦+ýD«ü˜pPj}®;LŽ‹ô+ ‰ rìŠë·ó®ßjLïÅ´“ôÁ,KpŽ„³p%ûÛÐõ²ªùâTίíM9½ùêµ4hrÇwJGG"ÜÖÞîÊöíï˜éÍ77ÉÅ_d6ÅÚ¼ù-¹çž{%‘Hflß¿ÿ€™^~ùU9ï¼sL¨¨;ôº÷Þ{_ƽêgìܹËL/¿üŠ “hÀh $“I¹ë®{L()JÃ.¯½öº ß,]zªœrÊ¢œç¯[÷¬<ñÄÊŒmÍÍ-æ;ÐéôÓOË{n_ÝS1ô½wüÙ²ekFè§»4ÕÚZ'»vÕ™ÏûÀ®”aÆ ��������]!ø��JB44PÕ€jãžÌ?q˜iñåÆ=¿•V,¸?I·ô2A7uŒ­ö“ð8vùì²õ²¢e¡ì)‘;Ü“c[4t¡7ί6„|°OÒ/‘:V+ü¸Áý%ý™t¿ëE¦ ’¤3A6$YÛüuObµgKòƒ?…Dƒ<}âÒJ?üã&<£U~N:éDS¦¥¥EžþÙ±c§lÚ´YV¬xXÞõ®ó‹ºfSSSú)//“%K›ª.±X̉V¯~:uýVyðÁ‡dÒ¤‰2f̘¢®«•~lè§²²Â\W+átttȆ o˜0ˆ†Šî¾û^¹êªÊ@xì±ÇÀÍÌ™3dÁ‚㥺ºÚTÙy晵©÷]/+W>%cÇŽ•Y³ffœ«ú6¬V-:Ù·oß>s®VbÒskjjdþüc¥X‡rOÅòC= W¯¼òª™ëÏV*¤¶¶F.ºèÂp]×ï_¿c xÕ×7ÈC="—]v‰��������Ђ?��`È3¬g=Û—Oð$^.âµ§þâ>®¡Ï´ÎÒxŠ æˆŸ¢q\¿â¦v<-΀üê?åŽ+WmTþsú¥‘pOPåÇK¯û 'ã˜an¹‘ï˜`OjЧNŒ¥>OïFï%îa¤`¿ ÿ$üuNJ-ÈRǘ‘DæÁóøA /]Y¨êX5|¬Ä¼&ìž|r• èhÀè’KÞ#G9=ܧ­³n¿ýÙ¶ímSfáÂ2qâÄ.¯ùÆÃJ?矞̛77Ü7nÜ8™0a‚üîw¿7ß‹¶žZ¶ìt)†‘l¥­ê½ UWWÉ3Ϭ3a´ŠÑ¡´Åê‰ÖÖVyå•×ÌòÌ™32B)pÒPÍ/y£i³¥-Т!­Ê³rå*³¬-¸>ô¡„Õl´5šVӹ馛¥©©Ù§ï´˜VW‡rOÅÐw¼sçNó}k°çÔS—ä½­X¤ôgL+7¢íÚr}Z!êæ›o‘ººÝæ‰D¢$Z»�������J[L���¾®3>æÊ¤âµyâµ{&üãµ¥¦VW\k(˜t8×–`¶éB7~hAùÛrÔþ­â&%59&ô£á]‚u'½l›ï ÷«…Ar;’æÜö¤¸­ 3%[u95µ“Þ“g«ÿ˜)ûxYó üû! GÚãGIoèëï¬ clÜèW.ÒÀG4ô£´2Ëòåg†ëÚž«ØëZS¦Ñiÿäɓ̵ýcÛ¤XöPãÆÍ@ŠVÁÑj6Ý¥á 9i ¤¹¹YºkÏž½æê¸ãæwÚ¯•zf̘‘óþô3m¬Å‹OéÔª¶¶6lÅ¥­¿´ S_ßS1´ýÛ‘Gi–5ø“¯ ™Ç´jþ¼gÿœu‡þÜhÈËŠþ¬�������¿B ��ròDÇAždÐâËÉ ¯è_ü›*;AÕIŠßâ+˜Lè'釀b©ù‡w?*_®ùhººm½åfVù‰n›íTK"µ!žº~L<1GR»LZ[?Ò´øŠëÇÞ”ß,¨úãj�©#˜§Ö“©ýz=ÿ½ KYçÐ륻‹µ•Í’ªÄ³2˜mݺ- jsÌÑ9ÑöO´Ñ�É–-[¤ÑP޶ Ój5QڪɶzÒP±.ºè]&Ä’¯Â‹¶ü²Š©†¥Ÿûî»ß„j”L/^”·‚M.ZAçãÿ¨YÖ N.Z¡&×ýéwauÔ¼œç}ôQò裇Çç;®·î©ú}èÏŽVóÑà’¶üš1ãÈNÇÙ6_Zŧ¢¢B…þü(­Œ”ï™��������ˆ"ø��Œ†jòUÑèOsâ2rL¥©ìãÄÅ„j<mñåxf.aÆFûc9&lãí¾LÛ/ÍÕu¤#ux2Õ9 Ëw<+;)g[/ÓnË,;a(h|¬Òt ‹¥V*4À“úI¸~ðÇÞ—çï4-Á’‘ÐOjJ¦¶uÁŸ„x~ðG‚PdžýøÕ€’Îxéo½](ZáeâÄ yÓ êëL¸¦«€ÈÌ™3Løã­·¶Èƒ®0Õs´Ê‹†i´×O<iŽÓPJ¾ÀQ.]…<´m˜Ò÷¤í±ŠÕÐÐ wÞyWØFLi0iõê52|øðŒJB…h iĈy÷755…á©éÓ3«ÞØïbĈáR]]óüªª*9r„<X/»wï–¾¾§bhhH«E••ÅM»¯—_~¥Sðg×®]æçGi‹2úê=çÀ²fÍZó3¤?KgŸ½|@+f�������‚?��à°Væyr츘ië%¨‰‹©²£Á ݈ãIø×ïž ÿøUv4%cB>:OØÊ;® *ð¼¿ùiy|äñÒâT¤+ÿx¶“�é”™ Žãù¹žrmïeC?I¿Ú B?ŽBò‚R=a‹/úq#Á3I¸œþñCAAU g´ v--é6IÚò)ŸÚÚšÈ9-EU†¹ôÒ÷ȳÏ>'k×®“‡~4cŸ†D–,9Å´®²-¿•VÀyþùͲu …]²½þúúŒÐOÔ‹/¾Ttð§ ®Üÿ&£ÏÊ)'gì×÷ªº 7é~ þØãûòžŠ¡ÿ®kŸÙ³gËúõL 2 zEž^yÅdéw=w½\!úŒ?øÁõ9÷é5N;m‰Œ3F��������(Fïüm��@éëª âRYîˆ×î“gB@&d&O\³Í3ûÝvŸ9ÎNzœ¶k÷Û}9¦âŽ_õgD²Y>°íQq“~¥3érÒÉZ÷·ÅÄIæšÐN»çOI­âÓ–·5‘š"ó–èzÂ?&5%®´§.Ü®×ñ¼ŒÉVÿñÃ?^ØþË.kÛ¯Ô‘Þ4•KÚÛÛÍ\ñx<ïqÑ O[[›cûöwäµ×^—ÖÖÎÇkÐD«óhE ÞPWW'wß} ¡Œ=JÎ:ëŒn_(D£!–Þðàƒ™vbjùò³dÔ¨Qûí{í*Te÷Ûï®/ï©¶™ Gi˜ÈV^RZhýúõfY+iÕ¢CõÆå‘G“úúz������� Tü��‡­a®'ÓG;"手8I¿Å—‰FG«êˆßQËTú±UÜ ÚŽVáqýP€£…ULåSZ'µîï?¯õ%¹¯édÙ^96¬òc.áF*ÿëÈiO}ˆ‰àh °Ôç'SS™çH\ƒAúa1G¢YÿzžiÕ¥U{lUŸŽÈ\ƒD /{’tHüðO" vZ©Eé÷’L&ó†´½—UYÙuàI[1Ý~ûæºÄY¶ìt™:uŠ íܹKž|r¥ìÚ¥a{墋Þ%G5OzJ[^ÝvÛ¥½½CjjªåòË/+ª"QÔøñùÛ¶M˜0AÕŠ›”Z´è$9î¸ùŽÑ÷ÚÜÜ’ñ®s±ûíw×—÷ÔÓ§O3mÊ´Ü+¯¼šº¦_=H«û´µù!¥îTNÒ–fýè5Û4„µaòjÕS&°ôûßÿA>üá«z%L�������Ú¨ø��['J›Ä“®_Ñ'œüj>VýI†ÕlU ió"‚ü*@~µŸ ©ö“Úžð¯UÞ‘m} w•×ÉX¯Oý£ÃKWûÑ©M§ÔA­žkæí©{nOD&×ßnó§È5‚–_íYÕ:¼Îa ?ôS\å›RV]LªlÓÔÔ9§Zºò裙ÐOUU¥¼ÿýï“Ù³g™`‹r¦M›*W^y… vØc5tÔZéçÖ[o3U…4ô£×íN‹/kÞ¼¹2aBçð¶¿Ò–R=¥A3­ªóò˯˜õ… ˜T.6¼ÒÔÔTðšv1ßáÞSwÙ`ÏþýÌw£l¸hذZ™1ãHé ŠE§aÆÉI'(\p¾ÙßÐÐ(Ï?ÿ‚��������Ð*þ��€~¡íž¼ª$3±£CÆ×h›®Ô½Å]‘xêþbž_áÇÌÅL®ø›Ì\oßó«õ˜¹ë™ ?ºS+û˜ƒ’®xAå *þh˯…ÉÍòwþCvÖ®Øâ”ý?i/Ÿn é”tôÖ<I¤n"žúàXjî¤æÑæYz;®ùÈ m—xAõ¿‚O:èãæü¤+ÙjAñä>)‡Ò"lìØ±á²Và>|xÎãvîÜiæZÑ¥«j: Ú³g¯Yž3gŽÔÔÔt:F¯qÌ1GËêÕk¤¥¥UêêvËäÉ“¤;víÚe*ýh5ú3fŒô„V:zßû.—'Ÿ\%7n4í©&Mš$gœqºŒ7NzBÿ=~àað儎7í´òÑÏÙ±c§©˜£­Çr{tûÁƒõáñ}}OÝ¥Uƒô;ÕÏyóÍM2zô谕رÇÓkíì4¨õÈ#šŸ­.�������@Wþ��€’Ñ_á Ô§È ‰vñÚƒ¶^qÏLš&h£¥-¶4é†~Ķûr‚>]6ø#þzRC>â·úJ¦×'RuˆÛÖ$»ªGúíÄòhíØ!ñ²iÚè+59’ ü8&ü£¡ŸXúq"ÑÏüÏÏù¡Ÿ m—xm¿:"m¿rUþ±óJ·NúZo%ò9òÈéáÏ“†AæÌ™Ýé˜={öÈÞ½û‚㻮آ¡«ÐýG÷EÏ)†dn¿Ýoï¥U‹4´ÓÓÐ¥‰Î=÷l3*}Ÿ÷ßÿ€¬_¿Á¬kÀæì³—<G¿‹—^zÙ,¿þúz9ñÄ…ŽÑíÑãûúžº«¶¶VfΜ!›6m6“¶IÓÊOª;m¾Ša~ºû³�������8<Ñê ��væ4¶I­Fe´EW‡kæ^«ßÂ˶ôÛ¾«Õó[{µju /£í—´gÍ;üɶ ³ÛM믄+µ©ófìo-xomíSkÛv“çË®´ÛLÛ/Ïoÿ¥ÛZÃV`ÁñžkZ|E§7úiÏúÑ @ÕÞfì´½”¶áRÔxë­-û5´ñ裇ëÙáöövÙ¸ñM9xð`¸M«i‹/õæ›oš*5Ù:::‹¶p;6ÚÑ€ÊæÍo™pO.ï¼³##ô£•~¢•‹š¾³ûîûS°Y°à¸¢6ÚKÛa©gžY+ ûÍv¥ŽfÍš™±¿¾¾Þ|mmm½vO=¡UÔîÝ{äÕW_3ËÚÞmäÈ‘Ò[ô磹Ùÿ¹ÒªB��������t…Š?��à°R‘teN{›x¦µ—¶ùrL­ôãO´ùò«nèÌ 6yÁ‚çÙJ?éª?ž­�”º¾ßòKLØÇ¯úãŠë÷Ñ’y»›dÛÈJIÄsç¯;Ú_“ÖÔÁåN\’Ž'ñ âOL+þssg^¤ ‘øÕ~´î_t(Ýò+»WG§ê?nÆzÒKȈä –-[j‚ÉdRîºëY¸pL:Õv^xáEÓL}ôQ2iÒÄŒs÷»ß›j@Ú*ëšk®–Q£F™J,§œ²Hžxb¥ güö·¿“Å‹O1­¼tŸ¶õZ»vìßÀ\ãøãçg´{ôÑÇRŸû’Y¾ð ÌçZÛ·¿#üãÒÑáWyY¸ð9pà ™²i«¬#Ž˜,ýI6÷Þ{¿ à¨qãÆÊôéÓMÛ«\ôþlK¯²²²Ôwqº©ÊcßÛ¢E'›`ËÌ;³a—¥KOËh¹¦¡Ÿoüy/£G’?û³„qåžzbæÌ&ÀÔØØ~† u‡VòÉn㥡¦;vÈóÏ¿n;þøã�������€®ü��ƒŽ¶±Šjµ‹‰´áÉvìþf©Ð@ކ|âbZ|iðlj9þ6Óê+HøDÚ|…WÓ]¦Ý–c‚>ží±åŠíµeÂ?r–_Á<áIyj~ÌöFyiúˆÜ7ï5H{û«âVÌOâ˜döÑð¶(‹Él«//øgú6¼Œ–_ æñÛ~ud‡ÜÎí¾jÜ R.Í’O,V¸E—›ç½ ë\vÙ%rçwI"‘”uëž3S”V£9ÿüs3¶iÕÛLCC{öì5×R'Ÿ|’ éuêëdÅŠ‡s~ö1Ç-gufÆ64R;wîÌþh(Ȇ~ÔSO=-ùL:ÅTêOZ1Él”¾“»ï¾7ïñzzŸ–>«†xV­ZmB>?þd§s–,9¥Sfß¾ýá{Ñ@•VbÒÖe½qOÝ¥£c=FÖ¬ñ«iõ§\-äºÒÔÔ,·Þz[ÁÏÑÐZ‡»��������ƒÁ��0è$;’¯ÈÿǘªŠriiíÜhxkB¦6´™J?¢w4ø£Ë&ôãúl ÈñlÂ& ÿ„åu‚ê:&øc?bR7¦ þÛ“~ÅŸŒyBdÚÎ&Ù<¾F«s?C¢åQI–k*þÄLøÇIÝfúñœà¶¼ðx/˜lè'þIxé�PvÕ»mû5!¹J ©ª¨(¸?‘(àš>}š©óì³ÏÉÖ­ÛLø¤"õ cÆŒ1UæÍ›V±´âŒ†PôœÉ“'›pP”V¯Ñó^~ùÙ¶ímÓªJ¿ûÚÚZ™2eŠi6eÊîE«=øà Ó†lÁ‚ã3ö™ŸÖ÷§Ï?mÚ4ó^wíÚe0µµ52a¨ÒÊIÙ´•–¾ÿíÛ·Ë ',C?½uOÝ¥Á$üÑ0“V„ê ååe¦:”V¤Òve'N��������ŠáôÂqNŽåBs'Ϻb‘¹âÁ¶xÖ¤ûô×åcíí…ÿ– ��M«œè_ªëd—µ=MKK³¸®gþ2¾'rýE}ö6»Ýn—wìØiæ«oø¼ «©”|:R÷Z·w¿¹×¨¥›÷ËØŽDXÝGÛ|ùÂ0‰³Ýl«¯Œ´½Çïùåùû¢ÁÝnZ{¹þÜ´þÒ>[®_íGìzBd÷ð2Ys„üÏPóçâTãWü'èBædÞZø~:‡lÅŸdXñ§sø'»õWmâu9Ú½9ï=Åb1™4~´Äcùà ͭrÚ§`–m#¬qÂj™¼trTprœbÿ¨ �����04è/iÅåêêÓ>[ÇGôOtn—�@﨨(_*þßòÔódÖäs72y‘yö$yÖ Í³—³uù[°Tü��%I2òUôhln)ü)O ŠL7V44H[k»¸©ëLÞ×"cêÛÄÅĉ{~‹¯„“H R5âÅÒ-¾lºF=?$þ^?eÖ5Уaׯþ£Ìó‚e�Ò?zZÇ͜۔ u­R7¡*ç3Ä[ï–²©Û¬2­¾b‘V_â9™ÁŸ Õ—çÙ ’çÿéTC? ÿØ)µ-#øãjX¨Ufx÷å¼—Xê]TUVȨ‘à †~ìw“A��������€ÞEð�� :õÍ-2ÉU°&aY<&ãFLo˜,òÂ|))]šVðˆKÿÒ;š =¥á£†¦V��������@ÿˆ ��À Ó‘HJCÊ2 M-Ò‘L ���������úÁ��0(í«oÊÛ ýOÛ‹í¯o���������ô‚?��`@9ŽÓ£cɤì=Øè÷—€ÓÐO"évÚÞÓï���������]#ø��­Ööijm ¬Æ–Viië���������ô/‚?��`Pkik—–v Púg høª•Ð��������À€ ø��JJOÚ>%“IÓfÊu ÿôÏó‚÷ž”��������@ï(��€~¢ ŒôÕñnêØ–ÖsNY,&ñÔ+KÍ š’dê}º 75wMÀJ¿—Êòîý1²»aÂA���������]#ø�� rbùÿ£ûýöSíÒ¦óÔ¤aô\Y<&Uåfª¬¬0ó¼âþ>‚;���������}V_��`PÐ I,æ‡IœÊAiŠUøßM<#ü��������ÐÇþ��€Wl@¤¬Ì¯ôSV=BPšÊkFšy</êxÂA���������=Gð��”œh$º\YYiæµg J“ýnªªªÂmù¾O���������‚?��`Ш®®6ó1ÓÕ‰ ÔÄdôô£ÍR4ø��������€¾Að��ô«C©ø¢í£ª««dòô™R6nŽ ´”O˜#“§Í’ššê¢[}åBU ��������€âü��%!;쑯=Ôˆ#dܸqR1õ„ÔŸdÊ¥Á‰—§¾“…2~ü8ó…Û ´ù"à��������phþ��€AE+ÉLž<I¦Î˜-e3—Ñò«DÄŽ<M¦9S&Nœ ±Ä��������èü­ ��¢ÕaªªªdáÂR6zЏ“NÈ}¼ ¿¸“Jù˜éæ;©®®·SÑ�������� oü��ý._ ¤;­ ÆŒ#Ë–-;GÚ&/Ï¡íW_ó²×ceÒšz÷2nŽœ~ú©æ;ɧØï–°��������@ñþ��€A# ÑåiÓ¦Éi§*ñ1ÓåÀ”åÒ:üHñ¨õÓ/Új§È#Î’øhÿ;˜>}z§ï���������}‹_��%E#žçå]Ï>vÖ¬™R[[#ëÖ='ûbžZß²B’ɤÄS“CèÐ¥^Gê]v4{òÎÞ™¹üq˪eìØ1rÒI eâĉƒ>Ý©ä��������€âü��¢P §»çiðä¼óΑի×ȶmoKeyê85ÕRQ^.U•UÒÖ‘0S{{"\nëH†ËKÞÿ·¢é–Q£Fåü¼¡ ×»Þ¿ÿ€y¾ñÛîÏù^ìûjjëÈØ~dYµLš4QÎ8ãt©¬¬ìtÝž¾3A���������ÝCð��”¼BU€ìrEE…Ì›7W¦OŸ&¯n} µ'QÔµËÊ*ƒëĆtð$׳ÅbúîD\GÿHXüûZ¶l©TUU…¡ŸB-¾ó���������ô‚?��`Àä«ú“k{WáU^^–ÚV)ÉŠ"í­RŒêÑãåÜsÏ–ŠŠr3fL—Ç– K1Õ”öíÛ'íí²î·Oý¾jÆŒ7}×]…|r½«|ï€��������@÷Å�� õ$RSScæ#¦}ΤÙ'˜ÏÒsuÞÕ4Xó,ÕÕÕfÞ1bzÑ×8ë3¯­­•î"Ü��������лþ��€A#WE™è6 ïTVVHÅä£%Y=¶Ëë Ÿ0M朰ØT¯ÑLOî§”¦îÒ÷¥Ï^>é¨n½/}ÇÑ÷•ëó ù���������ô=‚?��`@ ˆäÚ×Õ¶Ñ£GËŒ3¤eÒbqk'H>Ã&L—™‹/N;Ó´øê M_ëÉ3è³Ïœ9Sš'žÒåûšµÄ_úŽ£Ÿ™ë>ŠÙVÌ>���������äW&���h(Ãó<(¹>¿Ð¶X,&Ç7_öïß/;*«¤ìÀVIîÞ,‰ú}RV–”xåp;qŽŒ8b¶qÄd9öØcz-xÒß–Þø^ô}ÍŸ¬ì۷ϼ¯ømO½¯xCç÷5eÊæXûœ½ú�����@~Œ«��€®ü��9e‡kúr¡'á¢|áë´ÓN•çž{^vï.2m~§óÇ+'ž¸°Ëç*åÁ•îÜ[¡÷«×±ïkÏž"Ó;¿¯ñãÇ…ï+ßçöä]1x�����ÐmÕ�@±þ��€’P(ü“o_¡í²xñ)²sç.Ù¾}»466š}Æ “)S¦È¤IåpÒÕྯ%K|_=i×E‹/��������€¾Cð��”ÎÐåiûU(ä£òí›<y’™z»]Y©†Võ95à EJE$‚=������=‘Sa|��t…à��褫6Zº¯/ºjùÕUU {o…öuýõœ‡Ú"A+�����€LÑq­\c'Œ§��€\b��P$;¸àº®ô•b#]U™a¤ïôÆûçû�����èÌŽ¹1v��ºƒŠ?�� h±XL’ɤ$I‰Çã2Š©d.m¾¬z^¥������zNÇÜ”ŽÁ��‹à��(š:h¸£µµU*++¤¯tꉧº:öp ¤ô÷óvçó�����ä¦cn:vBð��tr���]²í›ì Css³ôµî†I”ô¿î¾w¾#�����€ü옛ýå;ÆR��@1¨ø��òÊ®¼ã:ˆttt˜žã}ýÛGÅVþ‰¯z»ÕUw>»¿ –ge  ����� ?kÓ1·x<ÖiÌq��PÁ��PPöÀB<^–ˆè––©­­•¾Ö“0Oö=j8¦”Wй·|~¦������º¦cm:Ž¢coQŒ­��€®ü��]Òß2ÒðˆÎãñ¸ùí£ƒëû%øcu·úOö¹‡³z~¦������Š£cmJÇÞl«¯¾®¶ ��†þÄ���rÊî#n×uÀA§D"!mmmÒŸèm>8ð=�����OÇØt¬ÍŽ»å—��È…à��((×@CYY™™ïÛ·_ƒ¥‰ï����� ûtŒ-:æf1Ö��ŠA«/��ÐI®¶ZÑŠ?:¡¿…¤-¿š›[¤¦¦Z‚øèi °¾ÔWƒ2‡Ó³����� u:¶¦clÚâKÇÜrUü±ƒ��¹Pñ��äd°Ëv*//7óÝ»w‹ëº2¢÷Õߟ—oŠŸï>������Ð}:¦¦ckѱ¶ì1Æ_��@Wþ��€.å —ØßBÒå={öH©8Ô L©kEo?Ã`|������¥NÇÔl‹/kc ��ô­¾��@N¶Ý—Ûm¶Ý—nÓßDrݤ´´´ÊÁƒõ2rä)E ’tÆ;�����8:–¦cjeeñ°ÚO®6_ÑÊ?���¹Pñ��t©På˜òò óI¦¦&������ŸŽ¡éXšŽ©éØÚ`®< ����@^…ªþèÀ„åWþqeÏž½f½¶¶V�������dÒÐŽ¡ù¿PWnÆØ´ÒO´Õ—Eµ��P *þ��€¢äú#[~Øÿí$¿$±\<xP�������¤é˜Yvè'»ÅÕ~��@wQñ��­úcé`„Vø±Ê:::äÀƒÒÖÖ&ãÆ ÷������‡#¿Röiii5ce:ŽVVVf–£¡Ÿì�"���ºBð��-ÊèÑ þÑŒ­[·É„ 㥦¦F������€ÃMss³ÔÕíΨšmÛ{eO„}��@Oü��Ø€O®õ\Õ~²ÏÕíííí’L&e÷î=f@c̘1RUU)������ÀP×ÚÚ&ûöí3¿ §ceö©¨¨>ùB?Ññ¶ì� �� Á��P”bÂ?º®ÛUee¥$ 3é�Ç®]»Ì�ÇèÑ£¤ººš`������Rt\¬¥¥Eöï?`~!Néx˜Vɶ•²£AŸî„~���ò!ø��rÊ®ú“½-WøÇ¶³Ë¶t±ôX¿Ÿù^³_÷ÕÖÖš*@¶§9������ tìKǺô—Þ´ºOSS“S¶­—Žwé˜÷²ÛírwB?Œ›�€|þ��€¼Š ÿØe´ÐÁ»n?ì †®ëo:é`ˆ.ëüàÁƒ©I:}FôÑ9������Пlà&{ž½_ÙPþ’[4à ùDçöüè5ý��€î"ø�� ê*üxˆlõ�²ë:è¡t›üÖ`žØ°a!{B����� 7t®É󷙚u[áÇ›øÉµž}]B?�� 'þ��€.å âä ÿØ ö‰¶ÿŠn³"–Ýý ‚=������(¹Æ¿r…v¢Ÿìc£­½ Uʵ��Á��P´ìê?Ù »?:¸mÿ=߯ô#9ƒ>Ñmö8������` Øq.U¨RO®ö]Ù! |çFú��ÝAð��tKwZ);°­è£“­ö ûä EÛ‡������ý)_H§P»®ìŠ@ÅVùÉ· �� ‚?�� ÛòµþŠnË7p‘ôÉu­è~������` e·ö²Ûrí'ð��úÁ��Ðcùªÿ¨ì�εmWt½P›¯ìÁŽB! B������è‰B›|ûŠiÙmVìõ���z‚à��8$ù*öäÚžÝö+×àH®0Pt?������Ðß …|¢Û»S͇ñ.��Ðþ��€^‘«úÝ®²C<ÙÛsUú)vðƒŠ?������è‰C ßäk啽¿»û���ºƒà��è5ùªÿÚ—o€$;TÌç������½­«€O¾ã»»�� 'þ��€^—¯úÝÕÕq] †Pí������‡âPÃ8½��è)‚?�� Oªþ“ë8«Ðñ„|������ÐÛ U¯Î¥»?�� /ü��}ªØ�P¡cü������ ?Ùñ¨\¡ÝWL˜‡À��è��@¿È�*6Ðà ������JIö¸Vtüб,��Пþ��€’Fµ������ $‚<�� ”ü��ý"_¯ôb*�þ�����À@È¿Šnϵ¬ µ ��èm��@ŸÊ50’/È£ƒ!®ëJw®������ô¶\më­X,–±=&ö!���úÁ��Ð'Š üèz®mÅ^¯Ðv������ ¹‚9:æ”/°“ý‹kz\vPˆ���è/��@¯+ú±#ºžL&ͺ.G·G������J­ôc<º®Ë:ÇãÛs‡ …‰���zŠà��è5]~tÒ°O"‘·GçÑóó-û¹������@Wº âäªÜc·Û_\³Ç輬¬Ì„€4ü“Š^ƒ���è-��@¯ÈײK@4è£ìv�©¬¬òòòÔ ˆ†8 x������`Pð+Xë””ŽŽikk7c_ííífŒKǾtÒ P¾�ca�� 7ü��‡$_•[ÝG>t®t0cذZ©¨¨<������€ÁÆ÷è3¿ØVSScÆÃ4øÓÔÔl~ÎNºßV¢ú��èm��@åªò£:×ÀNº®¿Ù4|ø03È������ E쩪ª2“Ž‹544†¿§ãb:iÈ'W�ˆð��è)‚?�� Ûr~ì¤AŸ¶¶6óÛLº>räÈÔ`G¥�������‡ ùŒ3ZZ[ÛäàÁƒauìÊJœLƒ>vRTÿ��=Eð��tK4ôc—m•¼ÐÐÎõ7›´Ê-½������p¸Ò_ˆ«¨gªÿ´¶¶šq4 ÿhë/[ýGE@„��@wü��EËýD'-[¬¡]6¬Vjkk������8Üi¸gäÈRV—ÆÆ&iii1á­ ¤A ô!ü��z‚à��èR¡Ö^ÑÐThk¯êê*������¦¿(‹ÅMë/KSþ‰¢õ��è.‚?��  ®B?‰DBÚÛÛ ý�������]°cgþÑ15 ö”•eþu]4ìCõ��Ђ?�� ¯®B?ÉdÒ Pè|øða„~������€.èšë&¥¡¡1 ÿÄãñŒcÿ��€bü��9uúÑ ?ÚâK+þTTT˜RÅ�������º¦cimmí&ø‹ÅL°GçQ„��@1b��P„ìÐVùÑà.5R�������OÇÔì/×éX›.GÇà���ŠAð��t’=° ƒÑ}:Ù_cÆŒîôÛH������� Ó15[Ó16kËüDÇäa �� K��Šým#mï¥SYY™TUU ������€îÓ±5c³ãmTü��ÝEð��”«Ú–Ö9-¾������€C£clÑ1·BU���²ü��]ÒÁÛc\KëÇ¥¢¢B�������ôœŽ±éX›w‹ŽÅ��t…à��È+Wq[rxĈá������àÐéX[tì-Šª?�� 2��èB´·¸>¤¶Hee¥nÛoY9Ž#������(}þX›?ö¦€ìXã;�� +��@N6äí+®¿]¤S<^&±ØÐ*8K'óL ����� <kÓ17mõ¥ãoº ÿ��ùÐê ��ä”ÑuxP5552˜E+EƒM‡#Þ�����@i°cn:—kl�� ‚?��  Ñß4òƒ?Úæ«B‚-ÝÃû�����èþ˜›Výal��ƒV_�� “è€Bö²ëzÇ¥Ô1(Ò{¢ï’’Ò������}CÇÜtì­ÐØc3�� Á��WvxFÓHiñR5PŸúÜþì±ÏÉ �����@ï²cnv Î"ð�� !ø��ò²!ì²Â¥8ÐЛÁ›ÁT-¨'÷Úß �����€Þg±ãqºà��(„à��è’ yØÞâ¥äPïçpl –ë™{:xD������ ÷èX‹­øC+{��P ‚?�� Jg°¡§ ˜ä–ý^ºä!������Ð[¿��Å#ø��î†wz#ì3XC‡Zɧ»× ô4��������@ÿ!ø��:Ér)•àKwîc B¥¦Ð3Ðén5ªÿ������šRŸ��¥…à��(h(~÷Á’î¶÷êI�ˆð�����@Ï1¾��ºBð��”¼Þ ò®U€Š *¶½Ww@ N��������ô‚?�� ¤õFè‡ @¹Ÿ­˜pO¡ãŠ õþ��������è��@É:Ô >]ÝﺮY·S1×)µ P¾pMööX,n·Ë…Î/Tá§Øê?„���������zÁ��P’ú*ô£Û5ä“H$$™LšeнîPÀ‰Çãf^VVf–uênȧ˜`á��������€ÞEð�� Jݭ£ណŽ3Eƒ>þÑÐö}®¼½7)›RߢÕ$8ΓÆVGZìõ]^Éþ›g±á–\·¡Çdn×ÇÌ _3ÿ5:_3sŸ^wâHÏ,ÇãþýŽ3ážQµq9ꈘ©úS^^nÞ…ÒuÝ_QQ†‚2î:O€‡ð��������@ÿ"ø��r*¶ÝU|v±ûsm·Ÿööv3éòË[ÚdÝfWÖmJÊÆ:GêêãAx&z¾c&Gb©­^¸Íqb‘c¬¹dïe-)'3ìã‡wìu¢gD·yæØX̉ëÙ]ÑSsÜC,˜'/5wá1³'$¥¶Rdù±1™7ɑӎ®2Õô]i (W�èPÂ?������(,רc.�� ‚?��  þn{Õ“ÐO¾môimm•¦¦&Ù½¿EnyZä¾EvŒÅĉÅÄÓÊ>Nf(Çù8©}ºÍ_¶º²áÐ%ý¹ò;^äÞìyt"û<=:î‘ÈR:ü“Þ>ªVÒ{7ç{æ'ZþÇq"Ÿãû‚+‡Á£˜y¾7ëü÷ñâV1Ï:id³,<Räãgy2}|… >\ª««M�(:À”¯õWWQ T�����g¨·¤��‡Žà��(½úÑ*?---rðàAÙµ¯En]#òû5Ž4µéÞHõ[idžPÌ® ÎŽã¦–ÓÇF>ág†®ìãz®d|Š à䨔ÀxöàŒð‘ëenr¢ŸåøÏ‹¶ûŠ„~ÌDÊ</ BMY…ƒvtäþ½ÔäÈ…Ç·ËÇÎÜ+3&VȨQ£¤¦¦¦¨ê?„���������úÁ��0(úI&“²oß>9x°^~¿Æ“Ÿ?®'¬©ã˜@M´J—q=ÓÜ+µÏ *éøÕ}\³=Ý­+ØìOoO‡~üÈMpýŒóìg¹AÎÈÿL:ŠÞãddì1Ág¦+ùÏ•<¿R­>ä¤>}m‘Ì•Hþ)]ÉÈ‘?½äÈ“<ùØmòþ%u2bÄp;vl¯„���������phþ��€’P¨ÚO1¡]O$RWW'uû›åúS±Æ‰Tñ1g8‘*<âÇsLHÒ­²lñ{]à1ÛSÿˆÙÐDÂ<žmæE:áL2;vy‘"CÁAÁ‡Úû n58.«X¨±÷Î$¥Ëÿ„÷"éû•È¥¼È}¤‹EÚ™IºÕXc«Èõ:òüVO>s~ƒÌhk“‰'Jyyy§Ö_Ý ÿ ��������84��À “/ô³}ûvÙ¶')_½%&oî6{L¨Å¾H°qLzÇVÚñœt•hʼn¬Ûcmÿ`±Ý‚J=ºÓMïK_%³Bxéê?âDöç®—ò‘hÉI}lu Èýf|¸}.IW' Î…Á t5$ ‚D^:&¾ÝþäG6îùÁGÚRï{»L:UÊÊʺ ÿ��������� oÄ��`€u·ÚOö~mïµcÇÙº»C>÷kOÞ¬óÂJ=6À“¾Ži¹•Þ ºHôøhÅ»´³ÇfV’tu¡È¹~ÿ­È9Ñí’ùYŽ#a/²l·‡Ò÷jïÉ͸¦ ò„Ï©TäE®éW*Šœ—€²÷½ó€—zÇ"oïMš •¾û\A¬BëÅî��������@a��@É*¦Å—뺲k×.ÙWßn);HX‰Ç‹ü/ ú˜à‹g“9a�ÇîwlH&R÷Æ6 s"ËÑ�Ž«a›HK.ܱ©£`³TúqìuÜŸÆ|‚cƒÅŒçñ·e€"ÍÌ2 CD‘€Ot=òNl›2ÿQÜôõHë3I‡ö7$dçÎæ;è ��������€ÞGð�� ¨îBrU’9pà€47·ÈþÉ•]ƒÐKX½F2ªþˆ=߉FeÒÛ'û +î8ÑÏL/Gs=ÁÍG¸þr¤Oºå–ßzÌVêq"¡œŒ¦_ö|‰†}¼NŸeï#R(ã^Ç «IVà'|'Ýê+Ú.Ì îÃɸ/ü¼<ùÚ­ž´´´ÊÞ½{»Uå'¡ ��������€ž!ø��JR1í£š››¥¾¾Aî}>)z)«ê祫ëmÒ-¹ÒÁ ªâøAt•›t{®Ìê:é–Zéc‘#auŸÌJ<´ñêàñ¼H•ñ2ï)r}/ …÷g«Ùö^Á½Úê=éJ<éë9Yµ¢ ôµl°)ö‘Ì–dºüÜO~¿Ú“¦¦æÔÔtH-¿���������Ð}��À€éiDÏK&“ÒÐÐ [w·Ë/Ÿô·gW÷ñ$Ìâ„•|$¬üã…ëѪ;Nä32‚;’YáÇàDÛhIØ*K:mwƒNpmq;…}2[~IFU»Õ‰9éÊBѪ?¶j“%9‚Cé+y^v#/ò,þý†×‘tä)ýÞÒïúO¸æ;Ð�–~'‡ò�������� {þ��€’SL¥ ý´¶¶É/žðL‹/ ‚*aèʼn6ô «×Ø6_aÛ¯aÏ Ú~¥Ï‹Vñ [ƒEî-lßÌ=‰VòïÏo¿,†'réëx%ûY™| E®›JW ò"-ÇlŸhå£ð¼ð9Òû;Ý›c?=}_Mí~ø§­­Í|'Ù¨ú��������Ðwþ��€AÅVûiii•-umò§mHÆìõC/A@Æoe•>׆gÂê?A„IŸë„»¼Œ�jÜŒÊ:6Dd¼tØ'¬¦“µn[t…m¿lÛ®tù‰V'²Ç§?6t²Ç‡¡¡è¹y/zßÁ)öYlÈ ï1L(eT/²÷a[”éü—ó]èw’H$÷���������ô‚?��`@ä ‡S!¦¹¹Y\ו{žK˜uÓêÊI·À C+ž ÙDB+’ÙΈ^Âv_ºìdgÒ­Àl,Æ ?/£Òn÷"-ÄœHUÏßçD‚8º_÷Å ïS籰⎽O7 y‘릟٠?׉>Kæ‹ ª ÛH5¤X$ˆ¤á °UZ4­¨ä„ײU…î}>²ZDzðÚ��������€ÜÊ��`°Á —hk©^¶ÛÝ ìcÖ‚â?žIÓd´ÇʸŽV»ñs>žŒ¬‰Éˆšxf`Ƥ‚<É(䟞>ÂÇñ/(¶ÉXÆURû\7¨9ž’ù™¥îVܬàRö­xÎÍÞ{°Å•ƒMnæ=;þ±ž áD›–í¿Ì; Ö5Gžz?\çȵç¶ISS³ ><À��������@_!ø��•ŽŽI&]yõívÙÝ Å mÅËфៈt1a'»L[&?üÔTYzÌ09œ¬z­Q>û_Ûäí=‰ð¥yÙ©&‰´“tE¥ôûöƒUMí"k6¶Éò5&”UYY)���������è[´ú��%£PK(»¬¡móõÜfmóåE& Ã(¹kßx×ÓÃ\ ­¸I¹ý«³»ÐÒgþáµSSï3™nQfDÚ†…¡Ÿè{vÅŸ’±ýÉõ®i÷ÕÚÚ×ùûË·��������€î#ø��úÝ¡„>ÚÛÛÍùk7%Â_ž—þÉ ªD-ÁgÁ•Ô™2z¹L_!‡«¥Ç—㎬ðCPÒ9œc¿«tÛ.7zD°Ï?vý; ÊJ$ÒS¥jhh›o¾EyäQ��������(´ú��ƒ††B4T¢í¾vHWŸ±-»LÅ ‚@a·*'ÝÌV¯Ñ¹«ç¹2¢š?¬ó.DâÙÑŸôRF Ç“tG0'ÜöÖž¸ f•——‡-ÁÒ-·Ü*ßûÞ¿åÝ_QQ!cÇŽ‘Ù³gÉùçŸ'^xÄãñœÇþíßþ<÷Üófù+_ù’\qÅ{Åùú×ÿIî¾û^6¬V}t…��������€ÞCÅ��P’òµ‰J$’&øóöÁr³®Ù­V£•f̱A…Ÿô9nXÈn Ã?&ìâÊáα‚6iN¸œƒ}¯Nº-˜}¯-‰˜hê0ëá÷QÂí¾4¤´cÇNyòÉUòÿøMùó?ÿ ©««ËyìöíÛÃåmÛÞÎØ§Õ€-:ÍL?ùÉ ��������Ð_øw��PŠ $“I3ß¾×¶’ò‚J>AI[‰Fü@fWÜÔz,¹~X ÈóÏ)ÑÖRýÉ3ïÑ ÞGêÿLE$/]Ð'ZÝ'¥·W**íØçÊäqžù®òUÏW_ý!™;wNÆ6 ½óÎ;òàƒÉöíïÈ«¯¾&_øÂ—å¿øßÔÏLf>þk_û{ùño‰'È5×\-���������¥€à��4´Í—xvÐ�†y2:N¥;O‰çø•k´­W§6APh`›Q•†ŒWã¤g¨rM+5ñ[¨I$(eNrý U²Òù¶½r’øß•¶ÒꉾhvÊ)'Ëg,˹ïÚk?)Ÿÿüäé§Ÿ1áŸÇB–/?+㘥KO3��������@)¡Õ��èW‡ÒÞÉžÛÚÚ&6´Vï‰Vðñ¼°âOXŠ&\JþØM´ú2ïÕLÑ÷hÖÜÈ« ö…ï.� ÷¥¦}õí­¾Òç–. (}å+_×5���������0Pñ��”œhP$º¬í£týí½©™ۆʓ°2=3¬ã•k´­•ÐâËò+&ÙðŽ}Aϯ`›¾MÇËèû%aàÊq‚S<ioo+øY}Qͧ7L™r„ÔÔÔHss³ìÝ»·ÓþŸýìçòÓŸþ·YþÓŸî–±cÇÊ/~ñ+ùÑ~šqÜÿýß/ͤæÍ›+7Ýô+³üíoWn¿ý³|×]·ËäÉ“:}ÆóÏ¿ Ÿüä§Íò±Ç#¿úÕÿåºUùú×ÿIî¾û^óï»ïN7n\Æ~½ÿ?þñNYµjµlÞ¼YZZZeôèQ2}út9çœåòÞ÷^š·Óâŧ›ÐÖµ×~"u/—[o½Mî¼ónÙ²ekê:-©åÛäˆ#&gœ³nݳrË-·Ê믯—Ý»÷ȰaµròÉ'É'>ñç2gÎl)Öol4×Y»vìÚU'eee2uê9õÔ%òÁ^)'NÌy^ô½ýïÿÞ /÷ßÿ€yöùõ}/_~¦\s͇eĈ�������ÀPAð�� :ž­&ãy‘TO:Èc‚%^¤—­NãFŽ÷¤2(ßÿÝkyÿI22~à&U²œèºîÚGMí=næH¹pñÒ5/])¼˜¿=¸™t;µ`Ý‹¬:¶VPê-~µŸR¯ò“mÿþý&ô£²ƒ4½áÌ3—…ÁŸ§žZ-W\ñÞNǬ^ýt¸¬!šúúúœ!{Ü1ÇÝé^x`…|ûÛß‘¦¦æŒíuu»Í¤¡½ýè&¼TÈ—¾ôyä‘Çòî× Þw¾ó=°‰Ú·¯]|ð!yì±'ä?ø¾㦛nN{}F¥¨öövÙ°á 3ýîw¿—¿ÿû¿“÷¼çݯÓÑÑaÚ¶­\ùTÆöÍ›ß2Óý÷? ÿõ_?é^�������`°"ø��\1!‘è1mmv«_•&ÞñÄ“Ì,OÐê+hgå1•XWxß¿ecêãAx&u‡Ž§1¹ó|©;uS³X:›cŽÈJÿØpŽëêsºrÕÙSŠ þxámxÈOÑv^a²'¨äDߟ—^nêpL`ɆºªîS*€¢•{.¸à¼¢Î¹ôÒ÷ÈÒ¥§ICCƒ|êSe¶-[¶T®»Î¯>SYY»dÉb©ªª’ÖÖÖÁŸ5á²¾¿gžY'çž{vÆ1‚ٳǯH¤a¢¨U«ž’¯}í͹±XL.¼ð9ãŒe¦ÚϾ}ûåþûÿ$?þ¤©¬£Uƒ®¿þ’Ï=÷Ü'Û·¿cªç\vÙ%&(£÷®×²¾ûÝ C?ºýÊ+¯¹sçHGGB^xáES)è+_ù™5k–ò«_ýZ~øÃ›åqãÆÊûÞw¹uÔ<I$’æ:TÒPÖ7¾ñ-S•éœs–ç½ÖÏþKY·î9ù³?ûˆœwÞ92fÌÙ¶m›üò—7š÷»cÇNóìÿýß?��������†‚?��`Ðñ‚ÿÙ:8¶8òs)®\q‚¬JXqlõÇVØ0Ѐ‹UŠ«0É'RJÇ3×l0¡Ÿàp'Úi+rŒ­ÃãÄS37!®Y(Ž'nä þÿÝ:¦Â’ Â?‘V`~•!GÜàó•›t3ª¶”2 “¬_¿An¼ñ7&£´ÅÕÂ…'u¾†JtÒà¥í½tʦ­µ–,9ÅTÁY³æS-'O?ZÝçÕW_3˧žºØ„T´²OvðGCCÖ™gž‘±ï·¿ýy÷Ú"ëúëÿCN9eQÆ~ 4}ó›ß6œ§žzZ¶nÝ&Ó§O“\4ôóÁ¾_¾ð…Ïç fi{/[ÁHÃ>7Üð#9rd¸ÿ]ï:_.¿ü2ùË¿üŒ<ûìs’Vá¹á†ÿ1ËúÞÿýß¿—Qåèœs–›àѧ?ýW&¼ôÝï~O–.=Õ„¨rY³f­¹FôÝLš4Ñ´Óv`/¾ø’¹ŸM›6ˬY3�������€Á.&���ƒˆ_IÆ Ã)~Å“èÿlµ¿ÂßÒK¢Ç¥æ1ÇÉ $/VžúSY…xN¥H¼ÊŸÊªÄ1ËÕfÙ5Ë•fÝK-{±JqÊü¹¿­2<Ös*RËåâ8Åg¼³[‡…ùñÂÖiþ;u3Þ£~ö»³žRôùÏQ-:-c:óÌså/þâ/Mèçœs–Ë7þ\®½ö“ÒWlEÛpi�%J+ú.µ²Î…¾Ël{úé5®¡¥a–쀑Vðùíoo”ÿøíú±4ŒcÙ Q.&ŒO½³Ïæ­ÆôûßÿÁ̵²Ð?ýÓ×3B?–‚>ûÙÏH!Vjoo—ÚÚùîw¿•³µ™tþú¯ýŠJþÑvfùh((;eïSC]–¶<�������`( ø��JVv5Ûª5¡„±û‚Ê3éƒü}Nf˜Å?7}œg+…äþ‘̉§þ/î÷ó2•zbâš6_1³ìh5 X™Y÷¼˜ õxáöÔ¹z~,+/úÉœhHÊ|\»M$]c)ýþ°“î�f¶äùÐ’¨¬TÀªU«M›(­‚ÓWÎ8ãt@QÑÊ=ÑõE‹N6“zç²mÛÛá1Z¡H[_©\á¥a›ÓN;UòÑÊCÖþýûów≠Må \:::dåʧ‚û=IæÌ™÷:]ô.Óž+ :=üð#fù‚ ΗqãÆå½ŽV²U~´R>§žº$ï>}7Öž={�������€¡€V_�� ¤ ˆøÕ~<i鈧ÛPyé úØ2>ží—e;bÙ*@bÚV•R% ؘÖcéû f^ÐRË ÂKŽ™</hmæhPȯdžSìç‹ÿNÂ{ ^fú ?^çst!&‘ûéºÍ— pê1ÝqÝuŸ’㎛Ÿ±-‘HH]Ýn>ÑàÏÃ?*Ï<³Vn¸áÇrÔQó¤·i[°ùó•—^zÙ|Þu×}:Üg«ûhèG«ùL:EÞ~{» ¹L›6ÕìÓ*5ºQgž¹¬ËÏkll”7ßÜd®³k×.3_µê©p¿>>µµµy÷íÞ½GZZZ̲„ )//7ϬïµóuvËÍò°aÃ2BN¹ÔÔTKkk«¼õÖ–¼Çè;ÎgÔ¨QárKK«��������0ü��ý¦7Â66À–™q2.¶õ— ª86c«Ú˜ÐŒ›uÜÀŠ¥ˆü€R°1r_^ôÞƒ-~ÈÆóOðÒïĵÁîT2ÒÀ‘¶ìŠÛ–h†nÂïÌ n*æˆãyávSÈuüÛȾñ¢Õ^/>%ç¾÷¾÷RÓ>êk_ûGihh4ó[n¹©WƒG–v4ø³~ýSqgôèÑ&Ȳsç.³Éÿõ^5¨³fÍ3òþ÷¿Ïl[½Úi“O>)çõ7o~+uï·ÊÊ•«LÅ l½ñL{÷î —ÇßåñcÇæãìÙ“¾Î7þÆLÅ8pà@Þ}¶¢��������‡ FÆ�À ¢U´R‰­z#y[vÙj?AëªHPů äÙ” 4/zA¨&w+2Ï–ø1kNxÿþä„e‚ëþñ¤sÄ^Ó‰„‘ü€Pºº-§dÃA¹¾‡ÁႠΓ}èfYÃ3ëÖ=+}Á¶èÒw·f_GÃ=JÃIcÇŽ5˧淬ÒûПye«æ,]zª©¤“í®»î‘«®ºF~ÿû?˜Ð~w3gÎ0a£«¯þ|ík/?ùÉ¥7Ù{ëÉ1Åœ›K[[›�����������À cC1éVWf«Ùç·ÂÊ®Tcö„Û={bÉ„T¼È<rŸž“Q½Ç³©I?_€ *íØö\ŽÓ½góó;^x=óY‘PTº¢_e(Z½É î« äô« /¼@nºéf³¼aæíVo›={–L™r„lßþŽ ü¼ë]ç›^jéÒÓÂã´âOYY™Ô×7ÈÆoʸqcM IÙðPT]]|ûÛß5¡¸‘#GÈç>÷YY¾üL>|xÆq¹ª�u— ')m!Ö•heŸ¨qãÆ…Ëû·cÂI�������� {¨ø��¥ìª8~à'Z-'͆gl¥ ´„•R«D+èd˜¢ ôqÑvMÑŠF^F˜©ø³±¡hK±tè'R1ɆrTWÊõÞm»e555I_±Á[Uèùç_0óÓOOjkkeÁ‚ãÍòsÏ=/k×úÇj+«eË–vº¦¶ÓÐúêW¿,—\rq§Ðjll”C5aÂxÓn̆ç ÛÞÞ./¿üJÞë >Ì,kû3��������Ð}��@ÉË”xžß"(]ÝFr´ÇJOÑí¶:mùU*´…V: ä?ŸÿL¶Rô9ÓÇf¶* –ƒ}݉þ„ïÔ‘žÌ€Uö{ŽV`êtåA²5iÒ¤¢ÏsºYêH[o©·ßÞ.Ï>ûœìÛ·_jkkä„dg>/¼ðbxo ž #FŒètÍæææpyÆŒ’Ï£>&‡J+qÆéá½½úêky½ýö;Lø'—x<.gŸ½Ü,?þø“«uttÈþp»¼ñÆÆA0������� 7ü��ƒŽ´ð‚j7‘¶WÑcü=Áš×i›#¹*× ¬h Aƒ@Y{3*úxYGÒmºR'w+3/à ?ÃéžJ¿[/¬–”®LäϬŠCÅ+… Ç–-[å‡?ü‘YÖ`K´úNWª««M%UL+­“N:1¬tó›ßüÖÌ—,Yl‚0Q¶õ—VñÁÊ6}ú´pùá‡ÉyŒ¶ûÅ/n”Þð\~ç_ûÚ?Êž={:óÊ+¯ÊO~rCÁë\uÕ¥¼¼\ÚÚÚä‹_ü²ìÞ½»Ó1ú×_ÿùÎw¾—:þš°���� 8?þ„|êS%gœqŽ,ZtZÎéÌ3Ï•ë®ûkY½úi��ÀàR&���¨'¡Ü' 9Ñå°k•ßÐ*Z±Æ-‘öTzOnF5£7¥eµþ ÏwÂV\NË1×*2„ã¿Ϥ{LE!{Ýð=×÷oH¼°Â­ ÔóÐOyæ™uràÀÁŒmzÏ”×^{]}ôñ°2ÍG>r•Œ3FŠ¥ùó5‡zDæÎ#sæÌ6×_¶ìôœÇŸvÚ©òÀ+ä±Çž0ÛN?½sû.½†¶ÃÚ±c§™”m–MƒCG1Ùn¸ádÓ¦ÍrÖYgʨQ#eïÞ}òä“+eÅŠ‡eÆŒ#;C¥Õ‰®¼ò ùýïÿ [·n“|àjyßû.—yóæ™ê<Tºë®{Ìçë³êgç¢ïêºë>%ÿùŸ?’õë7È?øa¹øâwËqÇÍ—êê*Ù¾ý¹ï¾?…U…4àtùå— ���� 8?þñOåç?ÿU—Çi%Ù5kÖšÿÿù/ÿòZùøÇ?&���þ��€A'wk¥t(&#*­¢´Æ2AW¤›šúŒm;æßk$TSð$/|�SÈ.‹ëÇuÜì6`¸Áç™ð„i)ÏIWIòìmÙcÑûCV¥Ô<-S1Ubôþµ’Íu×}Zºë3ŸùKù«¿úzÑê4JÛw=òȃa5 ( åhðÇZºôÔœ×Õ@¶ËRG9=£²O”†‰¾ÿý1¿©'½vôúJÏýÖ·¾!W_ýgÒ¾øÅ¿•d2)·ÝöG©¯oè4\UU%ßùηL¨ªk®ù°©šôýïÿ‡¹Îoû»œÇuÔ<óŒ555����èšVú)&ô¥c?ýé›_ø8ùä“���¥à��tÒm°<‰”§1Ë&Ôcvy™½¿‚ƒlu'–Úïz%Ñî+l¯eCIÙ}$k[˜ò2–Íq¦"O*2‡cÞ…#a˯ ‰ä~¼¬kE×í~±Q¥Ò­ú“MÃ2#GŽqãÆÉ¢E'ËE½KŽ9æhé  ýŸÿù©üìg?—^xQš›[¤¶¶Vvíª“É“'u:^ƒ>ÚR,‘Hȼyseüøñ9¯«ÇÙà†… ÑëÜzëÍòë_ß$O<±ÒTÿqSÿ®L™r„œwÞ9òá_e‚I½EM_ùÊ—ä /›o¾E^}½ìÙ³W† «5ïóÚk?i* uüQZ=H«#ÝvÛíòÔSOËÎ;¥±±É|?úœþyæsr…¨�����¹ýæ7=k•¬ãÚšz¨êêêdøðáæ—N���†¢b-Û)rŸSÄÜɳn§Xdn§x°-ž5é¾:ooïX%�� Wh/hƒe—5 ÐÒÒ,®ëÉ´iS¥'rµÕÊÞ–Q¡'X¶óúúzSÍä7®—û×L·¸2²ðC=iUåAš`%Ò>K‚¶X YzTÜþõE2&~`EêO6UšÀ jÿHF¸&|ÎPò‰l +ièÇÛ!\6V~øWÇwùùW|c­<ùZsêOTeéŠ?ÑO³¤ÈûL×%²Ÿï¿Ùóçì—o|ôhÓâiĈáýGçÙ˹Öóm�����Å9óÌsM /ëç?ÿ9þøãrûôÓkL%[kܸ±rÿýwË`÷àƒÉ+¯¼*årÉ%ïéñ˜VÚ¶ím‰Å©®®1¿4¤ã#úËK:·Ë�� w¤þŒ°Tü¾õÁ<™5yÁÜL^dž=IžõBóìål]þÆ5¿2 ��mce+ã81ŠñLuÛÎKl„Æ‹´¼JÍ]/ߟÚ—®˜c6.› GA˶ã²Ïì˜Òá¨0ãzE·2ó¢ŸçoûþÌTÿ±m¿ì9éûñïÝóJé}����px‹†~T¾ÐO®}ZÉv(ذaƒ™··wÈwÜiB5���C ­¾��Àà„Tlð$]Qƶ͒tÛ//³.ŽãצñÄ+‘ŒŠç¹™eÃê:÷Ÿ/ 1™‡ O fÁ† Í™ãdmïòó½È52ï+x©é»Ë:.¼/ÿ ªô�����ÐOV®\%ßþöw¥®nwQÇ/ZtšKCCùŽŸ0a¼|ík/K—½2gÎyíµ×Ír"‘4áŸË.»tPTþ��(��À c+ÜD«ÑdTÊ »{¥1­ ã媢8€‚{³Ïån¼Hˆ)rÏ&ü“»²Ž Ùê<±â8Näó%Z)#ô#‘PPfµ¡ð¸ð»������}­;¡ŸÞ¤Ÿ©Ÿ=œwÞ92{ö¬p݆¶nÝ&���CÁ��0ø8NPø&R}&Œñ$ô‰ls¢ )¡ JкË’‚ MÆsFŽO/¦ŸÅ<Žiw Á‰^8¨šä_Äõ×íÿ<Wìš½?W·ÛmË/�����€RÇåÝï¾°SøçÎ;ï"ü��† ‚?��`ÐÑ�ŠkÛcyéJæÉ¡¤'\±í²Ä¶Õ’§­¹üLRV%Ÿ ÒOÌìÌ|»î„‡zÁµ$ÒLŠë±Õ‚ü­AÛ./³"D ÿx^ŸS /����€Ã€¶Ûš8q‚ô7ý̯~õË2Xþ��C]™��� 2~ ,Ç{ÛfÊTù‰¶¦rL`ÆuÓ ÷ˆ©®ã”PušÎ•rü²E~u»-fdC9NÜñÒ‡9¡¢ƒ?Á?/r溮]éçñ‚¶jžý¼ äPwZŒ����€ž[ºô4¹çž;ÂõE‹NËØ¿víSr(zûzɆî½÷~yóÍMf› ÿ\zé%2}ú4��¬¨ø��XJɨn#Tùñé~/(e㉛«ñ‚J5^v…bƒKþФW²«ïH$Íãß½kžÙ Pömt«ÕWÐÎË•ÌwéïK‡¦¢”œŒò?éjJÚj ����� ÔPù�� U��À Æ[‚v^žm÷%~ÏKUžñìöô<8hÀ¥ã6‘ûrÒí»tîš@öÙŠ>›_ÁÈ´ ˼rQ÷`ÃP‘w™ù®r¼;ɬšäy^)¼N�����€œÿ��€¡ˆà��t´­TXˆÆ~œt Å`‚€LÆ< Óxéê5ÎÀGUœ jNF°Æ¶ÒʾO/]]Ç_u%ZÈÿˆdu7+È˨,”co°²×õ‚Ï ßwƹD�����(Eÿøµò‰O|ªèíCá��0Ôü��ƒP¤âLv¬HÕ­Fãº68ã¯ÛPP,hU¾<s+þ½Ù&d^P…ÇoómùåÄ3÷‚pØ*=©ÿóŸWÂ6gÅÝ@zÁ¿ffeǦ}DÂ{ +y6D•®P�����JÏ‹/¾$/¼ðbÑÛ‡2þ™5kf¸Í†¶m{[���‚?��`²rl`&«å”VÂñ"Á Ó*+NÑÖY&<Sl8¦/Ùê>Ѱ¿#c›ŸïÉÑŠËɬ$¶åVÑ9œÌw)‘Ïöߣ^?¼O/Úî+½¯^'�����@W4üsñÅu ÿ<øà ��LÊ��`ò"a?°’îmeÂ'A‚Å [E*ä¤Öc1Gܤ-4°¼Ì*:™-·Ò¡œŒÌMŽs 'u¾n+2â~s^¸%¬<¼Ûè=Ùu›†©¢mÇ���������Ð÷þ��€Adžyl�Faiè$½&’®–“>'R -àãw2ï7’åɾeÉÞá„ëÑPN±ÏæIоKl+/ ÛwÙëÛ• ¥[¬¹þû7ÇgÞ�����@©J&“rÏ=÷ɦM›Ãmeeq9ÿüó��`0¡Õ��t¢¡RÉhQ•úIŸèe\Å„]J 7•\Êj×eîÍÎívûì^Fk3'x^?Çd÷§ÏéZäZNúý:áKõ+#Ùë§+üDïÉ_rhö�����Jœ†~î½÷þN¡ŸK/½D¦M›*���ƒ ��À “Ž–‘/£ÉW¸/›¥˜³<¿BM)ÄTüJ:é@¹+'Sr‚Ðx6¤³ òNXm'úl›3)š©Üã­½ì5×ÖPʸçð^ÅV r²*�����”úyóÍMá6ú™>}š��� 6Tü��ƒŽçEªâ('Œºdnï|¦øa ‚5nIÄTœ åXºÝ–›ñŒÑÿÙã=±x‚g‘6\v›SdªÉ1­¼ÒmºÂkÛwVr:¥‰¢÷Eè�����”2B?��`(¢â��tÂT^:ÜV ‰9â¹é^+Òøk¦.N·ÚaõÔ ëöØûò‹eq"-¶üwá瘪=þ!©wàÄñÄM·K³U~t%õ½È{4÷™ãeVú!ü�����J†~î¹ç¾œí½ý��€ÁŒŠ?��`JWõIWœñƒ+žß«*öøˆñÛWE*ä˜y)4û²²5öÖ2ªìd. ÷Œ¬.—be„~<¿í˜†¨lÈ*ú9º-³úOä<‚?����� ´ú��C��À ”nKn±•o‚*9žmÿeAA"È,{f¶uw£”¿êO\¢íËlGœŒ Nȳ¤3ïÀuÍöék¥›:Âw’®2ä…•…L ­¤äem·¯3òÞbû‹�����ôB?��`¨#ø��/ZiÆË ýûcŽm‰•î—e+ÿøÕjüóš“2ðÒA+mÊÚ 椓7^ä2žÿ>RËógŒblÛÝœ:Þ1Á'3mÂlØ(š/ò?#ósÃvcŽ—#Ž�����JÅ ',Èù ;ù¶„~��Àá€à��tœŒ$ŠmCå„kÒ¡Ÿôñžmí%’¥þ¯¾©ÃT¼Y[|[¬Þõ‰Äf¼0ДdÊ>9²Í‰T7WŽ›1Rº¢Ï^ßÔžzi•þëÓÊC‘÷~®ç…÷V –=/rç´ú���� $ýìgÿÕ­íCÁŠw ý\vÙ¥2mÚT��*b��0ÈäÀ¸AèÄ‹h‚õÔ>/£…V°þyyóHNxGaÉ"±÷í× –í1a{//½-8Ï1'O–;º¨0Ó+oí×AéªIYïÎ/©ä¯{âeuY‹´ø¢Ö�����ª¦¦&c½®®Nz*ûÜìk7n — ý��€¡Šà��tLùi'LɨþäTœ ¤”ªv½þ²V²ñwÇdÕ+»e …Ý»‚P“qß9˜*;ntC8ynR>tvqåªW¾²Ç|– SE–Ý0Pý B ¶y^ä�����À@˜9sFÆúw¾ó½…ôœþçÉØ6{ö,ŒæÍ›gæå„~��ÀE«/��0Ù°V ÑœŒkªÝ8A…ŸÌ°þ3æÄÂ6_¦õ—)XãÈÊ—ëä‹<VŽ Ïh &Ò±÷™uœß·ÌÇ9¦b }Gޝ”«–O/ê“õÙý+×7Òe}üV_öí¾ÎdžÙÂ?����� ˆw¿ûByå•WÃõ'žX™š.“ÞpÑEï’ÁèüóÏ•… ÈðáÃ¥ªªJ���†"‚?��`ðq$Ýê*È™¸®¶«Jïö$ ÖRËZ½&ZAÇϱ8¦êM}S‡Œ(¢5Vß1Ñ$I•l'3HcKbCNé°¼ G\ùâæõ‰[ëšdÕ+{S[i*¥kø¸é(P$y䇋‚ªI&”n –^/=¯¿¾^^}õ5Ù³g´µµKMMµL:UN8áx™4iRÁsß~{»<÷Üó²cÇimmK VÊäÉ“åĦ®1¥à¹ï¼³C^xáÅÔüijj6çN˜0AæÏ?VæÎ#]Ñ{¶÷H$dذarä‘Óåä“O’#FHOôö5ÛÛÛÍûyãràÀó¯ä¨Q#ÍótÒ‰RQQ!¥FïùW¿úµ466™uý­ÕK.¹8㘻îºGÞ|sSQ×ÓïõÓŸ¾Ö,ë»xì±'¤X×\sµŒ;¶à1õõõæºo½µE$ËèÑ£Í;>á„RVVüÿK§Ï¤Ïf7V>ò‘«»<綾^–‡z$\?âˆÉò\®?öØã©{|!ç¹ú[µµµµæçL&zú³ ��� k—_~™ÜqÇ]²aÃÒ›æÍ›k®=X?^���†2‚?��`PÑ€IÌ–·‰T›±‰'¨•ãWÁñ«Õh hâǶ¶rlµ XLþëîõòÅ'ÃËšÛve´ô’0äD÷ÛeûœâʲcGɇ–׿ëwlÏ´M³o-(<sÂö^ž-2dVüÊB²Jß@ðò³BU¥ ™Lšƒ&¢åµ×^7 ¥KO•SNY”óüuëž5¿ÕÜÜbÂ:~úiyÏ]½úéÔ´¦Ó¹z/:Íš5SÞóžwK,Ö¹ónGG‡ÜyçݲmÛÛÛ8˜š^2¿½yÑEv«Ìz_\³±±Qþð‡ÛeÿþÛ÷îÝ—šÖ˜÷û¾÷]n~«²”¬\¹* ý”ºÍ›ß’{ï½/õý%Âm‰DRvîÜe¦—_~E®¸â½=~Ç{öìM]gg—¸èo wW{{Gj:`~Nô~/½ô™>½¸ÿF���èýå‹üàûò¹Ï}¡×Â?úÑk–—ä/K�� ‚?��`³ÕfÒg<Û+ØV¨Ñ5Ïo 溮9&ŒÒ8qù¯»ß°à_­Ç†iü Ýfï3 ò‚Ð’ç9é*<©iTm\®ÿ«…R¬ß>ü–yöŒv]N:ô~žÿ¡þ» ‚@™Çä[XZ…Ć~fΜ! /ÕÕÕ¦ÚÍ3Ϭ•ƒëeåʧLÅ âDihņ~† «•E‹N6ÇíÛ·Ïœ«Á=·¦¦ÆTð‰Òê76ô3vì5j” Ê<ÿü ¦ŠÐ¦M›åÉ'WÊ™gžÑé¾ï¿ÿ0 £U…Ž:jž¼Õ€†V^Ñàǽ÷Þ/ùÈU¦òK1zûšúïÐm·ý1 ý}ôQf0Ø>¿«4T¤Á k®ù°©RS 4,óâ‹/wyœ~gÇ{LÞýmmmòàƒ™÷¢lô稫Š6>ú˜ Ÿé;ÑŸŸ|´Ò ýTVVÈ’%‹Mµ) qé�¾†hôýß}÷½rÕU”žzùåW ôg^ߛҠš~÷…\|ñEæß3¥ï§¹¹Ùü¼¯_¿ÁüœÝwßýòÉO~¼d~&���€¡F+Íþò—?“Ûo¿#õçï?™_\Ñ?—w‡þÿ*sæÌ– /¼ÀTú!ô��PÚþ��€AÅaœtPE[yéÜÿËèh  ¢ØUA`E¼pfmœ˜Ô7wÈÍl–=Sú›¹cÇV+J·÷²¡žôý;Á&Ç ö¹ž9ó[=N¦¯)ê3o~x“¼½·5õ¹•‘êH™ïÍÔò ™À¿%»õ˜}¯öžJ£îOkk«¼òÊkfyæÌrÙe—„û&Mšh¿üå¦õ׳Ï>—üÑJAZFi[°}è¦%–š6mªü¼é¦›Mû.=N/ÑAP ) i;¤ÊÊÊ`ÏDSQçÖ[o“íÛß‘_|I–.=-£U“Vx±-¦N:iaF0HÃ:3gÎ4½Ç5kÖÊ»Þu¾t¥/®©a¡}ûö›åÅ‹™ç°üðËpyúégLøGÃNÚJl é#V¬ðÃ:~Ú±c§yæ\ôg¤§žZ† 5c9ÒLùhøJC?jÁ‚ã€L.úÞl¥­ê3qbúž´bNuuUêgmìÚUgÂd]µžË6sæ ó³±~ýz9ë¬3òäkÀHéwª?«ö{ÏgòäIá¿/–þœéý>ÿü‹ÒÒÒjÞÃŒG ���€¾¡¾×ÿ4Ú¢���CWL���-/øIb¢a³ÏK‡}28~àÆ3q–˜üëÍ/É@HÇ•DċܯçI4 -Ù�Ž}þ¿»rNÑ-¾Ô¿þîåÔEËübNú=Fs;Nð^½|ïO$ã=kK5Ï+Š?ÚÂȆ:Ž;n~§ýúÛ‹3fÌŽÝ“±OÃ6œ±xñ)B µµµa‹/mߥÕL,}~ýl5wîœHèǧ?£Çs´YÖê'ÌØÿ /š¹†,–-;]²iàcùò3MØf„ñRŒ¾¸¦”£¢ÁK·ÕÖú!4é.}7únmµ™Cµví:óÝhÕšsÎYn‚Y=¡¡²çž{Þ,Oœ8¡[íÑV­zÊÌËËËò¶‰³êêv›ù¸qc3B?V´ÒTöÏp1lØMÃEZ'ýï‚V¿Rúœ]Uû)Äþû¦ô�������z��À€²•fº£seɨî%‘Ž_áyÑÏt"'yNL¶în‘ÿ¾ëu¹ö’£¥yéÉVó‘H (rß¶L‘9:¨Xô©w)÷£¤XZígëî6‘xEð Ž©ä_8ý]è_ñÇRŸéfUÒstÆ;w¤DŠýZ±åãÿ¨YÖ N.‰„_M%»ÒÉÖ­ÛÂe­T’‹¶¶zôÑÇÃã£Ç}ìcטyvèÇÒVMV´ÚÞýl i@Ei€IƒUUU¦=ÒÂ…'H±úâšZ">nÊÕ²I?G÷i…mGÕÐРÇ—bè½­Xñ°ifiøE[HÛÚ,ÛL"uÊ)'˘1c¤§´¢S{»ÿF+uEeZeHéû.ÔæK]tѻ̻ˆþŒDEŽzRv_ßå¨Q#MU& gå ÈiðJÃmjΜ9a娞жrÖøñã�������Ð;þ��€Aƪ+¼° –Ôúñ›e9~2Æoœå÷ªÒj4æ¸HÐH·ÙóL!ÄX™|ïw/ÉÏ™%#k+¤¿„ žÉñï]Âà’Êñï7®ÑŠ<<ëùÖÇŽ“bm­k”ïßòŠ :i¹#ǼR/.Ê H‰i9´Q/¼­tˆÊžW4,1bĈ¼û›ššdË–-fyúôéûlõ­“¯“fFŽ!ÖËîÝ»Ãíú> }®¾#hÑó£m¡ôsmE•É“'ËþýûåÉ'WÉ[om «i%­mMVHß\so¸<iÒ¤¼Çùû^ Ï)6øóÄOf„~ìùwÜq—üÙŸ}$üï@w<ôÐ#æy5è¢UœzJnl¥)SŽ#œ^ô¹¶ÚOEE¹,Ztr—Çç ¬Y¯¾ê·²ÓŸ9mA×]ú>´M¶wÓªJú³2n\f ç•W^5s­Ž¤ÏÛ“Š?æûÔÏQ'žx‚Œ;V��������½ƒà��4l…žê¸V¦±7‰VÈñy­¿Ìr¸Ç^7fZ~‰Äå`sBþõw/Ê·>¾Hú‹¹_L xyéçr‚¨OF�dz¡Ÿ)rý_Ø’ï§žM+91 6ÅÂÏ·ŸÑé¾$¨  LE e¼O[ù§»œ~.¤á…ûïÀ´Ú*+‹› 0Q--~…“®‚º_ƒ?öøb¬^ýtØÂé´ÓNÍØW_ßq÷Ýw¿´µµg£cî¼ónY²ä”NççÒ׌>o¡ª5Ñ}ž#ýyÊ×L+ÓlÙ²UfΜ!Ý¡á•mÛÞ6Ëçž{NÎ EÅZ³æós£ºSíç76ÊîÝ~ ìä“OÊ[ ªXZÅI«))mùU(l–þ{ •«l Gßûòåg…û5ä¤1¥¡býïÿþ<çv­òsæ™gô(¤�������Èà��(y™Uz<‰Å‰F}¢UjÒQ• JN¤:åïIc[Y‰§ 2ù¯»ÖËéó'ÊEK¦IÐv%«ZŽ Ö䨦 _¼rž|±í½ÔÍ¿)¿}x³H¼J4ää'z¼t!/ö‰¼;ó àc*yá…Çy^ä–¶|( ‚hÐaÔ¨QûÛÚÚ̼«öIv{{»Cƒ¶Ý”.tŠŠ^硇6U‹.¸à<™3g¶ù^4ôòØcKSS³¹ŽVÔ™9sFÁÏìëkzGÑ}övEÛWÙ`M.Úf¬;4p¤„”¾ïC Ô××ËK/ù¡$­ô£pŠ¡ïù©§V›åêê*9é¤î…õ²ÕÕÕÉÝwßc®;zô(9ë¬3¤§´å™V|Òð—Vå9ãŒea0J+ Ùÿ{ì1r¨4øôðÃÈ9çœMø�������zÁ��0¨hȶúÉUÝG2Â'^§í~ˆH"¡–tÅMÿ8±²Ôz¹|öúUòÐÌ‹eú„aÒ×–dÁ=Ø Fz¯f«‰à¤–¿õ±ùò©‹gKwh‹¯øÙZSéÇ•Xëq¼ì÷eïÃËÈð8A™Û2Ín‹V² ¨þ®æÓ•+ÛH-Zt’wÜüNÇh5–ææB)Äèº-œ†(´Ý”ÒÀÈùçŸ[ðx×õä}ï»\ÆnÓª+Z5å׿þ­iÓ´nݳݪ~Ó[׌>o¡wÝWl…½¶m¡–Ë„ ã¥;}ôqimm“ªªÊC È( FÙVWK—v]Ézýõõ²oß~³¬-¾º ”¢mån»íÒÞÞ!55Õrùå—ÒõÔñÇg‚?Z J+Ù@šmó5qâ„N-À ùøÇ?*Æ¥ÿ»©?´Ó€ÙþýäöÛï÷¿ÿ}&p�������8t1��DüPL´:Ž™2×muœ°V8ó2¦èõÌR¬L6»rÅ׃MÅUs9$~ÇL¬±÷mB6&hã™?´¬‰Ë¿¾´Û¡Ÿmurù×þ$ûSÏäÅâ©?ÆüS×ñ"á£à~Âwhß©#áöŒ{•t R¤Ï£•~l©… Ȳe§ç<¶ªªÊ̵ÕQ!vuuuÁãô3õ³õ4ìpÙe—äl7 ÇuÔ¼Œ€Ž5zôè0˜£a®ôÅ5£Ï[¨Ot_Wï(*ß÷¢”\÷ŸV3Z¿~CxÍîÜC¶ýû÷›ð–š={–Lœ8±¨ó4(¤íÝTmmœpÂé)­ôsë­·™ “†~®¼òеøÊ¦á¯Š ?<´aÃf®?ÚZMå Ç¢ÁÌè¤?ƒZaJÃ>ÚZOßÉÊ•«�������Ð;þ��€~ÓkÕ_l†Gƒ'A%@‰VÉIptæelv"—4á'–úg\¼X¹lÝÓ*ýÎ#Ò÷Ò•rœð>Äo?<ßü#kåáï%§Ï/¾ò†õÑï<œz–6‘¸þå~\bŽ:±Õ{ì÷âå¸t«´ôÜ ÂHâ¥÷Û÷Xj~”Þó¬+˜œpÂñ¦ÅW>¶ºI}}ƒi•‹n·Ui UCy饗M•!úÑ -ù*i¥køðü•¦† «5s­Ð“H$¤¾¸æØ±cÂå;ó…vìØ‘óœ®Ì;G.½ô=¦º¤ô¾O=u±iQV,}mm¦4pSSS#›7¿•1ÙïoÓ¦Íá¶|V¯^ã‡áR?ßÝ©ö£?sös–,YlZ­õÄ®]»ä¸ÝT屡mÓÕôžŽ>úh³¬a)}w›6m öýÿíÝi#éyø¨£ïknÎÅáŒx ÉEŽx‰k‰#…$­36,{ ëÃR»ëXIÜRÄJ¢Ö±²ÇÖ;¸²¥eìnÄšä®e¢DÉž&)ñ4$Ŏsˆ#ÎtÏLÓ]Ý]Ý€ëM DVH €*Tõï§ÈÉÌ7 «¨®xñÇó,e±YH!¥»îº+ÛþÎwž(Uk����`ZZ}�»JÖ^* ¤ðIc õT&ÿ09åe¢U~tïÃûv¡:M#ú-«Ún»«Ær¶ý™¯žŠ_|çŠÿý—¶Ö&h”¼ÝØàáÝ�MûjüÂ[ïŽöó¯ˆiüÒÆkÿÒ#g#šû¢Ù\‰V÷žu2EÝ÷îI³ÛÊ«‘¿¢èuþjôƒEZ¤u_tï:6l±PÒëúã?þ½Ê/)ôó¦7ýÐÈÇ<ÿùwf$µiú¾ï{å¦sÒxñü*_üâ—âcûD¶}Ë-7 ý$©šMª¼’Ú8<yjèyù±Ô¾j\d×<tèPÜpÃõqêÔÓYk¨¿ówþ«MŒR€(KNœ8>qeš»ï~A¶LëìÙ³Yp+9þB|ðƒznúùÀþ ûýýå_þ7?uêT¯NªŽsýõ×Gé|ö³ŸË¶=2qåœ\ª¾ó¾÷uÚ{8°?k×6«ÐOîå/¿7¾ô¥/g¯ù±Çï… ^ô¢ÕjeWWÞ¦1Ýóô\Ó¡�����èSñ�X(u*Æ4ór8ÝàIDôZS¥PK¯’MÄ`åŸÎ™½ Mo$ß ¼ô«5²¶XíÆJ¼÷cÄ/½óS1/yè§Wå'½æV+î¸~5Þÿ¿üÀ–B?ïþè·£Ñ\í¼—áÉóDù»e:•|Š-ÓŠgåëVÿ~æùªf£W(ýßån ?Ç:?ãYTJ-…>üá?é…~î»ïåcC?É]w=¿WçóŸÿBœ;wnàøsÏ=—'©úJU@塇¾8úùéŸþɱŠôž_úÒNå•Gy4[Êþú¯¿•UKIî¹g°å[ª “Å�Ù<®™ä!– Öz­¬ŠRà%+ž»[ýéŸ~6{ÿ)´òú׿¶öãRæ¹ç:íà^÷º×öB/E—/_Îîÿ™3g*¯ñÄ;úI•~ê&qÓM7e–’T¥(…º’YþìÒÿn}´óû—ª8 ý�����̆ÙV�`aõ*ÒTÉÚ|5{¡•Î:`tÛPåç¶ûçu÷ÛÁJ?ÙC Y“,ú“]9ÚÍV¼ûcg{ç/ϾòO#ß´:UŒvü›ïŽ_ýû/c‡Vbyè'o,m\5…ÚÑ+T¸_|;/蓪å7¯¢eZïx;*(¥ƒ«€Ds‡Kÿ¤ÐÏýÑg¡Š$U¨¹óÎ;ã[ßz¸òü[o}^8p ÛN„7¾ñ²JA)¼òîw¿7î¿ÿÕqâĉ8}út|á Þ µ¼á ¯••ÁŸÑ_üÅ_Æ'?Ù Š¥j;ßû½÷ÅãÿMåó¦j8Åê-¯yÍ÷gÕeÖÖ.fUj^ùÊûâ/xAvŸ¿ýíoÇC}©wÝ×¼æþÞãRu?üÃgÛ)¬ñ#?òÀ\¯yß}¯È*=ûìéøüçÿ<kg•Zt%éžça«Ôj앯üÞØnéž¾ýí¿8òœßû½weÁœ{î¹;~ìÇÞZyN >å¿3÷ÞûÒ8~üxÔ±¾¾Þ ‡¥Ÿq¾*{ï{ÿÿxúég²ŠI?÷sÿÍÀõSëýïÿÀƵ:­×Ò}<}úL¶”¥ßÝô;¼égüÑ~¼÷~Óëžæš©BQþ¿¥$µ{úé§³0\jU–¼â/�����fCð�Ø5RÀ$-W; •v¡­W£»î¤)Võ©H¹´û•l¢×>¬Ðþ+ËÉlŒg©œåýv¼ûãÇã'Ÿ‹ÿûþá8zhvíoZív/Èô†{¯_ýû/‰xÙ13ç/ÅÏÿóħþêd4–öm¼þåî›)¶kt3>yµ¤¼…Z¶WH@ †®6µü*´ ËÏh–Z>õ;ƒ >“H•mòÐO’*˜|èC4ôüTIåöÛoëí¿ä%/ÎÚE}æ3–…|ò OÑk_ûý›*¢¤ .ÅsS¥–?ù“ÿ8ôy_÷º×dÕ`r©ÖÿøÅüÁ‡²çý‹¿x([ŠRå—·¼åÍqìØ±ÞX ¨ä¾ûÝïœ?k¦`WªbôïþÝ¿ÏB?)X”·ÃÊ¥öV霥!¿»Aúù'é=¤Ÿw])ä’‡Ã^ÿú×Uþþ§pP ý$©íUú->þñOôB?Iª<4LúÝM¿Ã[‘~ç?ùÉÿW®\Íö§­ö“‡Å†ùžï¹'¾ÿûï�����fCð�Ø5Ò‡ïéôŽ4²¶S½ÒÛåˆJÄàÇì…£U„Úí­ZÝ‹dØ77FW²ÍOõd¼éíï÷ýÓ7Ç7‰YHïæèÁåøÕŸ¹7þ»·¾0¦õØSçâýóÄW9·ñ’W»¡Ÿ¥ì=dÁƒvþIíÐý ?ѯšTlŸ‘W>ŠÂc£WAis”¡7êŒîtØch¥¨ ¤J9wÜqGVÁ'…`Ο¿‡ÌÚ"½úÕ¯Šç=ï–¹<oºîÏýÜÏÆ_þåCñðÃßΪ ¥ ÍÑ£G³¶b©‚P ó¥FjÉuþüùxík_³-×<räHüìÏþÃøò—ÿ*«ð“·«J᡽è…YU qíÍYª¸óè£eÛ¯xÅ˲÷[Ç¥K—²ªPIª4•îE•T)*…‰Òï×óž÷¼¬Å\Ñ,~—&‘~V/~ñ‹³V_éwcX•¢I¥ÿ_‚eé7éšye(�����f£îW¯55j¬Cöó¥YXçËRwl©´¤cGÓúòåõÏ�0©úDúÐ9-ùvjײ¶v!Z­vÜqÇí1­afLJm§j*'OžŠþé—ãW~=?£w| 5Xw»ÑhT„}C/å°K4J‚¢S‘'µâjÆÕˆÖzÜyþxÿ?{sÜqÓÖÃ?ÿâ½_Šÿþï½4ŽNÙÖ+ùòÃOg•~9yqãCûúYŠFs¹ó7õòŠÈÿË ‘ ôúõÎïµGË«úOÞÚŒ·þà}qã7Äþýû{ãÅŠ'åê'UÕP¶»B���À"Hí›ÍF8p0kGžæHò/ÃåÛ�Àl¬®®¼!Ò·¥#Îv×WKK»»n–va]^bÈþ¨uy»lì·D›�°KäÏ¿é`äSµcsH¨1P hóßCFéo¯ò9íR… ¬«U3[¢¹¼±¬Äã§.ÇÿÓâß|ð˱U¿ú3÷m)ôóž|#~êŽÇN]ŒfÖÞkã>5—ºÕzŠÁ§v!PÓyï­vþ·é0Å{Ú ýtÛ|uîgg¹íúýMB ø������LO«/�`WIßxJ-iŽ®®ÇÙË+Ý:4ƒÁ•v· M³* «D·P „††+T¼É¯K‘:e¾°¿ñ®ÏÇ™óëñ+ÿðU±Þñ{¿ó¡¯n¼¶•×´æÒÆ+möãâíbÈ)½ÿVw¿Ñ-fT¨’Ô}¯•“ºãÅÇå×íÝÇn?°Õæ•8~x5{|j�����À|ùD�X8ÃÚB¥í•••8räHܰÿbo|X—ªV«UÑ6¬ÝÝnU>ÇfíÂc³XÌÆ:•K«Ñn®Æoÿ_Œûßöžxü©s±]Ûx®7½ýßÇ¿þïm¼–ô:V6^ÏòÆël”^{^q2‹ï ë„wZ¥pPl®êS¨ô“_³ÑØ\YéÆŸIúÙ¬®®Œü�����0‚?�À¶ÚJð#=6UûIýÍï:¾ÞMü[Måúá”rKÕ^€§]넊K´7·`íT·ÙX7Ý8M3«´}ñè©Kñª·½w&­¿Æù×ÏñÀÛßõÈÙh§ço®tªEd¯­•¿‡R´vá½QU÷©ó^[ý÷ÜèWùé?~0ô¼ÃWbÿþý½þóÓ�����¨Gð�Ø5R $…JöíÛw߸”w*/€ÚƒA—~€¥ÕmsÕ=¿|IïU²¸v¿N#úA˜ôŸv£íær·ÕÖJüúÿù¹xõÛÞ=9ûê?©ÊÏOþÚ‡â7Þõ¹8³ÖŽV:ZÉ*¥ÀOú¿Tå¨Y¬ÆÓ 1 ¼ßÎKö¥ítâûOç¤6kƒU~:·)Ï ½ì–«½Ÿ������ó'ø�,„QU^ŠÇRÅŸ¥¥¥xÕÝGb_ójôªò´+ªÐÂ.ý+´·ÚƒcyPfSÕŸàP;z‡SøgãOªvc)bi5kÿõØÉ‹ñê_xOüö»ÿ<fáÌùK×úB¼úmï‰OõäÆsv[{5—;Á£îŸtýjF…{ÑMçd·¢û®‹Õ~¢t¯:•òÜS^ý§Ñ Ea<%ýßá•Kñ½wîËÚ|¥ŸQª=*û������là�°†…BšÍf>|(n¼ñÆxå Ï ~òK¿ºM7úÒîWõÉgÕnzÕ~ºÇº‰—v”[‡uÆÝcyU ü%æÕRåNë­Õlùí÷<¯úoÿm¼ç#߈i}øÏ¾¼ý÷ã·ßûÅìšífúYÊž¯ûfû¯±û^ùûÉ«LØÜÆ,¿Wù[iîg´[Ý T?ü“ïçÛwY‹[o½-kõ•~F½ÛVø9 ú������Ì–à�°«¤ðÈÁƒãæ›oŠ×Þv!VšWºº'”*ÿô‚,YÐ';¡~é?¦ÝÛï·Å*žÛÀô[†mª0´ñ fs©×ú+µáj5WãñS—âßùÉxÓÛ?ª~û¯Ï|ù‰øÉ_ÿ`ü£ÿí#ñèÉKÀO E'ðÓî§|^S§ O7“SlùU÷ ¼ç(´/‹~è©;Ûža½ûP¾—?xçsÙÏäÈ‘#>������Ûd9��¶Y † ´›3^<–Ö©Õ×Ñ£GâEwß/þöÓñW§oè=®QÙÔÉ+?)»V;Õ¾iåOпl.öS,ªy<¦7Þ)‘³q¥V÷:il)²Œuª~ÓnÆW=¯~Û»ãgxaüÊ?¸?î¼ùHTyì©sñ¿û™øðçí\£±íF§¥W#»V§^O£Ý‹ðl¼ŽF·¥Wÿõ^gw¿xòÊ>ùëî¿éîÑB!¤<T¸›¶_rìt¼èÎëãØ±£±²²Ò þÔmßVg�����€Í�€…5,”‚?ÇŽ‹{î¹;Þøõ‡ãgŽÇz{iÄ•:¡–,ðÒ.†‚ZYhf ôy… <0½vZâ7ݰL Þä›<ÓŽn­~€¥UèI×¹f#Þó±oÅ{>òŸãüð‹@Ÿþòño>ø¥øðçëV ZÝxÜòÆC—6–fþ¢ïOï}”ªöäyzzZQ¨aÔ¿+½÷ØênÚóò`Q??#½®t×ßz:^øÂû²ŸIúÙTè�����˜=Á�`×I!’ååå¸å–›ãÅ÷ܯ9u2>õÝ›;!žnP¥sâÆ^«Pñ¦=é‡YÚýŠ6íBe¡îÉ M' Ô(œÛÉÿtÃ@ÍB(§ÐÉ[m5³pL¤HmºÚ­4¸ïùè·â½ýf¼ì'âÜùõxì©ç¢Ý«ð³Ô­´Ôkº•þÛê¾Þ¼ÂO1U¬pÔ«�T¼gcí(Ý‹nÛ²F!`Ô(ö +†ŽºÉ t_¾ÿ†“ñ²»oŽÛn»5VWW|������¶Q3��v@ÝVOÅýâv þ?~<î»ïñw^Žç:y´%R²^½°O?ôS¬öSÜï<Aòéi·ZÑo¨ÕîUÖilzL±õ×`à¦Ý 5;^Zvs%[Z•øò#çâÑ“³íèŽÇÒJüi,5:×ßxx«ûºêö´ÛÝç+=g´ûáF¿9Ùàk~¢P-¨û¶²{”îAÛ¨åÙX®_½o¼ý\¼ìe/'Nd?“ªŸÕ¨Ÿiq������ª þ��»JIë}ûöÅí·ß÷ÞûÒxó]OÇ¡åK‘W­éW½)ÖÂé‡\òv]0L!@Óè‡|z¡¡Þyn•Ÿ<”/Ñ­òÓ®M»ûŸFçìFs©òi¬D+¥bŒ©ÒO;+­Þ5û¡œü9ò8OcàIÊA v§ÍW»=øþóã‹F1•WÊ«õÚžõîçºGV×ãïÝõÝ,ôs×]w©ö�����°�€…S·BL³ÙŒƒÆ«^õ}ñÂÜ?u×cqdùr!˜½–Ty'ënä!–¼¦ÏÀ9¥Ê=Qàô‚8×¹~£_%'zë~p'¯¤Ó¹n#«�Ôhvƒ>Ù’ö›Yæ'ŰQ~Н¤2*¾Ä~h ”¿¶Â{j”Î/‡ƒŠ÷¦ÑÈ«(uÂKGV.ÇOÜùH¼ðŽãqÿý¯ŽC‡ÅÒÒRÿÚ#ªý������0;‚?�ÀŽ™6RnùuôèÑxã ¾çöñw>GV:•Ú…KzéT¯© ãô+ê´ÛƒÕ~R'o‰U¼N§íU«_%¨[%'¯(ÔnV×ÉŽgA¡~Õ TÙ'~"¯PÔŽ^)"úÁ¡Vzl^Õ§Õ¯�Ô_WTêÕ)ê߇^ˆ§ÿºóçêW÷é_»XeèðÒÅøñ{ü¢;oˆx k·–ªýTýlÆýìêŒ�����0œà�°êVýÉ[~Ýxãñ#?ò#ñ’Ü?~çcqÇg{mú¡Vw¿[Ù§[ɦXå&Ï[eÏÑ;·ØZ+¢Ø,¿h9쓇úÇ[ý²B½àQÿZùx1ÔÓ{¶€O÷uç•yÚÅj=Ý7Ð.{ò÷Ó½ ƒÕ„Úy7²Â[ï¿ÿ´}Ëþ³ñÏ<^œ…~Þ7ß|sìß¿_˜�����`‡,�À.‘WË©ÚN”›o¾)«BÓüø'âØ¾Çã ß}.þòôͱÞ^é]£‚‰öY½còÁv·P9¨°ivZ`õ²9ùã»ÛyW¯Ts§Qµ«�E±mW¡*Цóóç|Ñ…€Qô[›å×è½ÜVž^꽟þý‹^UŸvþÉßÇÆë^n\‰ï;ñdÜËsqûí·ÇýÐÆM7ݘµY›¤­— �����Àl þ��;ªà™äXùøÒÒR>|8šÍfVæK_úRøÆŽ»O=Ÿ?u}|ëüõù£¢¨‰cý�ÎÀëÈ«å ¼¶Ò¹¥j>íÁ ÷Êêtžµû˜Þ)íç|ž!÷£ÝÕô<íÍ÷o`; mÇïe»Ý¿·ì{.~ð–'â¶ëöÅ÷|ÏËâþû_×_}:thdè§nŦqÇ������Nð�ØUÊa–råŸd•^ÿú×eí¿¾öµ¯ÇMÇþ6¾ûìSñçÏÜO^:箬fUx:‰¡á¢~‹°ÂóôÂ1©ÕV¯,Î@;­^§¥ò…»-Ã…çÙüÜíh—:øœý×?üÅsû÷«ƒ!¢âº«Í+q÷Á§ã%ÇÏÄ'š÷óyñò—¿<î¹çî,\•îñ$¡������æCð�Øq“VýþIR0eyy9î½÷¥që­·Æ×¿þõxì±ÇãùgÏÆ¹sOÅ£gVãoׯųëb=û“¨dÉó=…VXYX¦PY'o‰U¨ŽÓ¯ S|½…jBýë7Ökô9øz…Ç· ãåç*?g{àyËU„VëqÝê¥e-î:|.î<z)>ÇßÏ{Þ-YèçºëNdíÔVWW'ý¨ö�����0‚?�ÀB˜eø'm¯¬¬dÕiRPåèÑ#ñ’—¼$~øáxòɧâ–Ó§cmm-.]zfc¹×qúR#.^iĹõ•,s©ÕŒõÖRä::¡š~• Fä•s:ù•buaá›ÆÀX  f_Êa â{«zmÅçíW÷ifϱҼûš­l{ßR+Ž®^c«Wâà¾F”:pà`ìß]vßî¼óޏãŽ;âøñcYàgß¾}Y;µY†~������ØÁ�`W˜&ü“Â,)¬’Ö)¸râÄñ,èóÌ3Ïn,ÏdË™3g³±Ë—/ÅÕ«­åj´Z),Ó©Ü“6óýŽvE§]¨Ôªåô[Š ¶K¡Ÿvá57®›‡‰òjC}Õ©Áñôàüq­ì>4›+ÙxªŠÔ¹/ù½ÙŸ…£Òý¹é¦›³°Oº_)<•‚Séœq!Ÿi>BA������[#ø�,ŒQUê>¦Àé€Rx%…XR¨'Z<˜µ°JûiY__ Ö²uª”\¹r%[’Nð'äçT[¶]~í£®_>§ê¹Óv ú¤ýöI÷!¯ˆ”*ù8Ðoß•>ù’¦¶RÕG‹/�����€ùü�vaÁ ºÕ€òPK ò¤%OÁŸ´>vìXo,_’òºîkÊåê¼îª@ϸ÷5LùZùõòí´ä ´..ÅóË׬36j�����€Ùü�ʸ`ˤ៤<ž\’*¯ºvylÒªDÛ­N@§¸?,è3êzÓŒ×=�����@=‚?�ÀÂÙJø'©�Ê k¹µ×MÐÙJ /¡�����€Ùü�RðOR·úOñ1£WeÑ+üŒ3IØfa IÎ����� >Á�`¤qœ~îI«ÿ”:§êܽh«¡¡���€ù0§�Œ#ø�T*jvj’¡nø'™¦ÊOùœqçîu–³ ô˜ ���˜Ly>Åü �0Œà�°ðêVÚJ{°açÖ±Ó!¡YOüÌ2ÌcR �����`~�€‘ƒi{qÛ~åç%u@¹­wv{¸e’×?¯s���ÈõçT̯��ãþ��›T…lÊ-³vbÒ¡nø'?7™¶ºÏ^mõ5íÏmÒÇ™”���˜Lq>ªjnÅ| �PEð�¨-Ÿ\hµZ±´´;a’@OñüIS~ܵjš{à¾���L'͹%æW�€I4� ¦f³ó§Ã•+Wc§MJɪm幯����ÓËçÜò98�€:Tü�jK“)ÜqñâÅØ·o5vÚ¤Õª[´WÛ{2‹°ŽÀ���ÀÖ¥9·4Ï"ø�LÂ_�ÀXy˜|ÒáÂ… ±HfUŧXí¦¼ìV£ÞÓVß—êI����³“Ϲå_¾3ï�Ô¡â�0Tš\(VÁéL:D¬¯¯g=ÇíÛG[©�T÷Ú¸����³–æÚÒœÛÒRsÓœ›¹�`�€‘Ê KKËÙØÚÚZ,ª½P©gѸ§����ó“æÚÒ¼Kš{+2�Œ#ø�Œ•—N륥¥lìÌ™³±¬LϽ���Øù\[š{+ÎÅ�Œã/� R9ð‘ï§ ‡´\¹r%.]º»I1È"Ð2Ƚ���ØiŽ-͵åónÃæå��ªþ��#UM4,/wÚ}=ó̳±ÛU^öòDʵö~���]šc+ιåÌÛ��u,�@IšPh·Û›ÆòŠ?i"} i}}=.\X‹ƒÄ^cR���€yKskiŽ-µøJsnUræ«�€**þ��C'ÊbVVV²õÉ“'£Õj����P_šSKskʶr…fU�€q�€±ªZCåßBJÛ§N ���� ¾4§–·øJsmÚ³�Óü�*¿UTËÛ}åßDZZjÆÚÚÅ8sæl�����㥹´4§–æÖòj?Um¾ªæè��Š�€±ª¾mÔoùµš}#éôéÓqþüù�����†Kshi.-Í©¥¹µQso��ã,�Àir¡Ýn÷ÖùXÞê+—¾•”z’Ÿ:õt¶èС�����¥ÐOšCëWÓ^Ê*ý[}åTû�êPñ�¨¥êGyùáη“:%‰ÓÄÅ™3g����èKsfåÐO¹Å—j?�À¤Tü�F*VýɥɈTá'Ÿ˜HòàÏúúzœ>}&.]º7ÜpCï8����\‹:•²OÅÚÚÅl®,Í£-//gÛÅÐO9�”��ãþ��µC@Už4a‘‡ÒDÆc=7Ýtc<x0����àZsáÂ…xê©“U³óö^åEØ�˜†à�°Ið©Ú¯ªöS~l¿|ùr\½z5Nž<•Mh\wÝu±ÿ¾����€½îâÅKñÌ3Ïd_Kse)쳺ºÚ ø ýçÛÊ � JÝàOú¤Ï_�p «þIûi<Ù·o_\¹r%[ÒÇ“O>™Mpœ8q<8 ����{Jš[[[‹gŸ=}!.Ióa©Jv^)»ô™$ô�\“ÚuNRñ�¨T®úS« ÿämÀòí¼tq þ¤s;ýÌŸÎŽ§c‡ʪ�å=ÍMh����°¤¹¯4ו¾ô–ªûœ?>›Kò¶^i¾+Íåó^ùx¾=IèǼ�0Œà�0TðO¾&-ÒdG¾ŸO~ä“i?}Ó)M†¤í´>sæÌÆ›ž£xâ����¶S¸)¯ËÇ“<Ô“¾äV øC>Åuþøâ5„~�€I-zðǧ|�°ÃÆ…ŠÅ P^ý'�åûiÒ#Ic)Ôi ÖŽü)ò°P~Q‚����˜…qášòXg,ûo¶ŸWøÉÏ-~ªöË×ú€…µÐH©ø�ŒUÄþÉ'.ò°O±ýWq,ŸÉåãÅçì���`TÍU…vŠŸò¹ÅÖ^£*Uí� #ø�ÔV®þSåÇ‹“Åö_ÅÇw*ýDeЧ8–Ÿ����;!ŸçJFUê©jßU {l‘Ð�0‰yÒ§uþ*€=h’Ö_I>±Q¬è“–¼ÚO1ìS*¶���€í4,¤3ª]W¹"PÝ*?ÃÆ�€=c.xÍ»â��ìAÃZdžM\”ƒ>U×*���€Vní•Uø�Jæú—V_�ÀÔ†UÿIÊ ´Nm»Šû£Ú|•';F…€„����˜Æ¨ÀͰcuZvÛƒÕ½�À4vCðÇ'y�°À†Uì©/·ýªš© ���Àvò)ŽORÍÇ|�ì ŸYQñ�˜‰ªê?ùxRñ”Ç«*ýÔüPñ���€il%|3¬•Wùø¤Ç��&!ø�Ḭ̀ê?£Ž › )‚ê</����ÌÚ¸€Ï°ó'=�0 þ¤Oð&ùËfÒó€4¬úO~¬hÜyã&CTû���`+¶Æ™E �XH“~µ#Z핊?>ñ€3ªúOÕy¹Qç ù����0k£ªWW™4À#ð� kO|ð¤Õ�0Wu@£Îø���`;åóQU¡t¬N˜Gà�Ø‚?�À¶¨ �Õ ô˜$���`‘”絊óWæ²�€í´Û‚?í!cþ‚€=Jµ����v’ �ìiíšc k»‚?³ ç´K �° ë•^§ð����;¡<U¯ÚNFµ �Ò¼r(Ûò—V_�À\UMŒ ò¤ÉV«“\ ����f­ªm}®ÙlìÏ)†}€�€í°Á­¹�àP'ð“ö«Æê^oÔ8����ÔQÌIsNÃ;å/®¥óÊA! �¸fmûW*þ��37*ô“OŒ¤ý«W¯fûi»8^<����A^é'ð¤ý´ÖKKKãUÁ¡Qa"�€iÍ:ø£š�\ÃÆ~Ò’Â>W®\é×ÅÇÛ®û¼����0θ NUåž|<ÿâZ~NZ///g! þ)…Š×�€kÚL?ØZ¤Š?Ó¾1ŸôÀÖ²+M€¤ O ü¤%O ûö­ÆÊÊÊÆ$Hš i˜ð����`WèT°NËÕX__K—.gs_—/_Îæ¸ÒÜWZRhX�È\�,„i2'íX ¬Ê¢Š•‚Úc�À‚Vå'¯î“&>Ò:I“‡ŠÕÕÕÞ„����ì6pOZšÙÛ<˜Í‡¥àÏùó²/ÂåK:žWRý�v­vlü,Døg»ƒ?UažQŸ…JI�ƒªªü¤ Ž´NŸ´¤ýôͦ#Gg“����°¥`Ïþýû³%Í‹;÷\ïKqi^,-)äS�þ€…5.·Ò®967;]ñ§nUŸV÷¼vÅ!�Ûª*ð“/)èséÒ¥ìÛLiÿرc“û����®)äsÝu'ââÅKqæÌ™^uì}û:ód)è“/‰ê?�°#Š™“ª¥5áuvÄ,‚?ãÂ;³lÙ5*ô£5�lƒbè'ßΫü¤É‹úIëôͦTåGK/����®Ué q««7dÕ.^¼˜Í£¥ðOjý•WÿIŠ á�ØU™“ªv^³zži5É'q“>Y{ÎÇËç] �`®Ê¡Ÿrk¯µµµ,ôsøð¡8vì¨Ð����×¼4G–æÊÒœYš;Kshi.­8·Võe;�`®òŒÉ¤Ù”yŸúüíü4n^¥d×m·[g�˜‹ªÉ‡â’&*R¥Ÿ4QqôèÑ8tèP�����}iÎ,Í¥9´4—–‡ŠK®¼�ÌV!c2×,ËvØ©¯áOóÛ#ÆÛW¯¶Ÿ �`æÊ åɈ+W®ÄåË—³ ‹cÇŽÅû����Ø,Í¥9´4—–æÔÒÜÚ°ðO"ü�óÑ͘Œjë5Ë\Ë\Í#ø3íi×\Êç¶Òz}ýÒã�ÌÔ¸ÐO*Mœ&(ÒúÈ‘ÃB?����0FšCKsiŹ5á�Ø^ÝŒI/sÃ3)ãò+“šù?ì;Qñ§]±ßq¼¬|ÓÓ~œ;wî¯�˜™q¡Ÿô­¤TŽ8}+iuuU{/����¨)Í¥¥9µ4·–æØÒ\›ð�lŸBƤ2ƒ2B9ßÒq|[ìT«¯Ü,ÞðÕt¯|å+ß �`nÊ¡ŸôM¤|Râøñc����Ô—æÔò/×¥¹¶rø�˜ŸnÆ$ýƒ{5¶nGÿážUðg\ϳ­¼Éa ©´Õƒ>øµ��f¢<±&ŠÇÒ’—!¾îºÑlît–����v—4§–æÖò–_åÀOqN.€ÙyðÁ‘gLªZ}å¶ÒÒ+|q=ìø–l÷§tuZz ëÖŠêþjiÿê'>ñ‰ç®^m}6�€¹(~Û(• NËòòrìß¿?����€É¥¹µ4Ç–Ï·©ø�ó—²%ŸøÄGž‹NµŸª JU6eX8(W'3“æùâêô>k—ÎÍ—+ið‰'þæ�ÌTUµŸT~8­µø���€­IslÅ9·QU�€­+dKRÖ¤*ÐS'»2ïüLmóªøÓžðø¸ýqÒ£õ;¿ó;‚?�0i²!ï1žJ§eii)VWW����˜^šcKsmù¼[q.�˜½n¶$¥k¯”Í;ë2—Ü1¹FÍñFÅx£4^Þ®Zš…uZ–ºûK¥åÐÆ²üÜsçÿéÆH7�€©å“ ù7ŠòɆ´\ºt)ë9~âÄñ8pà@�����[³¶¶Ï>{: íÛ·/šÍf¶4ÒÒv’ï�ÓÙøœë?9rø×£ú9v_Å%oóUl6ªíW¹sUy;JãQ15Ç+ͲâOÝ4®<Ò$%”Šç¯§õ§?ý©�0SÅÞâ©×xú§7M@�����[×™kë̽çâ�€ÙúÌg>ýþ(dL¢:£2,³Ru~DýŒKñ‰Mü™Õ“OSò¨¸“UiI?”Öþè~þêÕÖg�Ø’|b¡8ÉWýYZZî}Ë����Øš4×–æÜòù·¤8/'�[—²$)S…ŒIŒ®ê3ʤ™—º&¾Î<?±k׫W*)*¶Óù—Óö'?ùñÿ'�€-)O&¤ýÔc<9xð`�����³“Ϲ¥9¸ª¹9�`kºY’ôjÊ–ä™”ˆê,ʰâ4E“Tó™Û?æ³þLì¶=îTUûÉ·óª?Ÿ[[»ð¡��¶,ÿfQú¦Q'ø“Ú|­����0;9·Î—ïÒ\œv_�0;)C’²$1Xí§*w2,ÏR•y‰15>•îÑQ÷† +§TNW¥O#/¦ý|ðÿØX¯�0±â„By»ÕjÇÒÒRì&žè“,����°]Òœ[š{57�Le­›!Iÿ˜¦LIÊ–”»PåÆåTŠçUmo»FL¯Qs¼Q1^+o—÷›¥u¾]\–JëËêC=ôæ{ï}Ùÿ�ÀDŠß(Ê·Ó7.\¸­o»íÖh4¶ògÄ|Íkd‘ß3����»[šÓúÎwžÈ@©íWZ§ù¨f³™­óm�`2_ýêW~ó•¯|凣Óâ+É Ë×Å¥ÜÞ«8±9TÞŽÒö\+Í㯃öÆ«’RåZ>¯êõcK?¸³gÏýÛ��¦’hÊp5�3ïJ=*���0/Å9·âü“y(�˜^ÊŒtC?)O’²$Åö^ù±9¼SûDÅy[ËÈÌÄvĂǕ<6VU2©*]¥ý´\‰Ny¦Ö 7\÷¯®\¹ò‰��¦–O.äÕÍNq����˜¥¼w¾ �L/eERf$:9’”!¹›s'›s(­Âe†µûš6 3s[ þLóâ†ÝˆQUÚCÆZQ]í'/Ãt¹»\}Ë[ÞüO6þHz(�€-ZÌÐÏ¢(„‚����˜œ¹$�ت”IY‘èdHRvd=ú­½FeNrò*UÕ~ê„‚Æ™ú€¥ØšÆÇãŠñFÅ9U×®óØôƒi>òÈ#Wžxâ‰O½å-o½¯ÑhÜ�ÀHå2Âyxe}ýr¤¡cÇŽÆN»–Â4‹ÚZ ���€Ù:{öl6´ººš­›Íf¶..�Àh)ôóÿñÿð+ï{ßûNG'ðs)úEdŠ¡Ÿr{¯r‹¯ò±(ì—Õí|5s[mõ5Ϫ?ÅíQŠÇ¯Æ`+ígåšÞõ®w=ó–·¼ù—µý€ñªB5‹VYgV×Ù yT���¸¶,úü�,ª” IÙ”‰Nk¯”©Ê’³&“Tü)oïhµŸd±àYTýÉ×Ã*øäûÍÒX£;Ö,kV,©²Ñþe%í?óÌ3o?|øÈÏ�PéêÕ«Ù:õÏ—4váÂùívÜqÇí±S¦™àØÊ¤È¢‹Ê·¼����öŽÇÿ›h6qðà¡XZZÊ*þäK’Æ�€jÏ=÷Üÿ{Ýu'þUtB<©ÒOUè§ò)ï—Ã@ÕÕbÈXÄt -¶ZñgÚÐ3^•¢JªJ*úÁÓZkÑéÛÖºîºëþå7¾ñõßèŽ�{Ô,*ä,zµU€�����€kÜZÊ€\w݉ŒHʆ¤<HÝÐOÄèÐOö#Æg^&±åyfüeT‚©]c=l»øƒˆ¨þ]-¬óíµîÒzÅ+^ñáßüÍwüôÅ‹k�À®P7à2Ï0Ì¢€�����€kMÊ|¤ìGÊ€D)ƒy‘|]ú)Ž×ɬŒZ—·«ögj–½!ê¶ü·=¬õWÕv±½W¾_ËÏ]*/G§õWo|ä#yÍÞðÆŸ_Zj¾6�€…lõU'Ô2ìœsçÎEyÛ¬´>tèPlÅ"´àÒ ���`wÑê �ê¹zµõÙÏ|æSÿ×ÿð.:ÁšôáVjíu%6)Vò)"6žø©öŠšÇj[Ží—^x£b{ÔñüÍ–·[Q8Jý¤^þ×ÏÕŠkßXV7–}¿ŸÝX.€^ûÚ×ýÔêêêß �`al%ô3é9³2‹çÚjp§ø„€�����€ÝîòåËÿ᳟ý³÷?i¹ö^y�¨\Á'^í'b|Ч¼5ÏÕ¬?ª[õ§¼ß˜`=l»Xõ§Q+îçcK¥ãû¢‚ÊÎýµ_ûµßö¶·½é–[ný!U€�¸µZyÅŸö@ÅŸµµ ÙØm·ÝÛi\ˆfØñ'Ÿ|*;öógÞû––buy)ö5ÓºËÍÍO×7þ,¼²Öˆõ‹xç­ÿu–¹á†²c{­‚ ���ÀâùÎwžÈ*þ8p°Tñ§3—ÓlªøÀµ'U÷ùîwŸøøïþîï~ìÁ<ýPOªîs)úAžrð§Xé§UÚ˜Mk¯i[|Í, 4O|v2üS^ò`OÄ`«¯ªv`i;U�Z)ŒÇ<päïxÇK_øÂ¾äèÑ£÷¬®î»cãs²[æ±è´ ó©�{N þ¤,M ÍäÁŸ+W®¤>©Ûü™6ô“ÆSð'™Eð§l§ƒ3óx~a ���€•öï?ËË˽àOš·IS7‚?�ìQéÞ‹ívëÌÆÇ;ß½|ùÒãgÏžýÖ7¿ùͯÿÖoýÖ×>úÑž+œ—Â:ëÑ©ðSó”C>Å€O9 4MK¯… ý$‹ü)îOþ©«ªôSö© ¥¿šVºë¥P*ßü)âæÇNÂ'p�������ÀN™&¨2ê1­Òyã5W»ËzTWô)·õªjõUÜõ¼Ó„~êì×=6±y…J¶Zõ§¸½•P9ÐQÝþkØyùz©°Tµ+ü*ö�������Í$¡•VÍñª\W K«ô¸aÕ{ŠF1Û ?;úIæ0ÙîðO¾*Vý‰ØÞ© þ4Æ\¿Yz½ÃÞwÝ{-ô�������,ªºá•öˆñâ±Véüa­·Êžâñò±règÔõ'YÚ®Ú¯{ljË1?é7j+îço´Q/®ËÆ/j•Î/^£Õ?ܪàOùµGŹűÁ�������`÷›4øSŽ© þ þ÷ËÛÖ³ðõ>Fí×=¶%Û2™¶òOq–U€ê.åçmÖØ®ózÇü�������ÕV‚?Uc­ÛåN%bvÕ}2ô“lWÈd’ðOyl«¡ŸªuUp§n‹¯a×÷šËÛ£ÿ��������‹fÒÐϸíq¡›q-¿Šëâv{FëQÛ£Æê›‰í ˜4&<^7üS56i5 bp§neŸQžFŒ4#ü�������,ŠIB,Ã2£*åŒj6,ÜSUágšõ¸±òvÕ~Lx|&¶;\2ëðOq{š@P2¬ÂOñXùø°ó‡=GT�������ØkÚcƇ…mê„€FU�ªzŽ:ŸºÕ‰bÄ~Lx|fv*„2Ië¯:a i+åÛåPOsÄy£öcÄñqnC�������Àv™&¼2*ô3IµŸªý¤UqΤ¡žIªüÔÙ¯{l.v2L2Ïê?Åíºá æë4G\TðgØØ¨ñº„€�������€YÛjpe\µŸacÃ<Ik‚ñYVöYØ*?E‹ ™uõŸâö4Ç57îµ «sl+„‚�������€aæP™´NU°¦NHgšÊ=“„êì×=6w‹™4 3®ÅVy{šjA“<¶êqÃΉ Ž�������,ºIªá´£^ òv;êw¶ÒÊ«N@©î±m±hÁ“yVÿ™ÅvàO±:Ç��������vƒ­Vû)m%ä3ÍvýºÇ¶ÕR,ž­Tÿ)ïoe»J;†'Ï„x�������€kÑ4!™ª Ov_£ŽÍ"ð3l¬Î±m·Èa•YUÿ)ïOÚ&lÚýac“�������Xt“´ú66Éþ4A iöëÛ1‹Xñ§h^Õ&9Vg�������àZ5‹àOÕØ<Â@UûÃÆêÛQ‹üIfþ™Çþ$c��������{M{Êsfþ™fØXc;n7’iZfídÀ§NèG0�������Ø+æþ©›wà§Îñ·[‚?¹­Vÿ©›Õ9ãÆë�������Ø­¦ ÓLö™öœacuŽ-”ÝüI& ÿ Ÿ6ð3Íø¸c��������{É4Ášºã[ ÷ì‰ÐO²ƒ?É´UuæÑ¾k;*ü �������Ûm!˜yV�šdlÔxÝã g·’Y†f9>îØ,�������°¦ É̳ дãu/¤ÝüI[8gÖžI‚;B>�������À^3Ix¦=ãcÓ~êž³v{ð'ÙJøg^Ǧ9�������`¯©ª™uhܱIÎYX{!ø“›g�¨ÎñºçÌóñ��������ó¶Õ°Ì,9×tà'·—‚?ɬªðÌ#ä#Ô�������\+& ÖÌ; 4Íy o¯’Y·àZÔ–^‚D�������À¬lwfÖ!k.ô“ìÅàO2I(f^çÎâq��������»Õ´!›I7¯sw…½üI¦ Ûì¦ö]ÂD�������À¬ìd(fmÁfñ˜…·—ƒ?¹í�Íúñ��������{ÍVÃ7?%×Bð'ÙJg^!á �������`¯˜WÀf+×ÝÓ¡ŸäZ þ$³ Úì��������ÌǬÂ:{>ô“\KÁŸÜ<‚;Â@��������“™G8çšüä®ÅàOn;Ã:‚A�������Àµf;C8×Tà'w-rB9��������»Ó5øÉ þ �������Xl×tاHð§š��������Àbø)ü©G�������`{ úŒ!ø3=a �������€Ùò™‚àÏ|������� î™1ÁŸ½CØ�������¨Kg�������€]¨��������À®#ø��������»à��������ìB‚?��������° þ��������À.$ø��������»à��������ìB‚?��������° ýHqrœ>\����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/screenshots/search.png����������������������������������������������������0000664�0000000�0000000�00002505062�15240005042�0021663�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��þ��¦���#Xæ´� ‰ùIDATxœìÝ|uúÇñgÓ¡#)*Ø�EËÝ©çÙ{;{ïx6ÔÛß³œ½ëÙ»¢¨ˆ€`¬¨ HïBRwÿûLØef2ÛKv³Ÿ÷ë5ÎNÙ’ÈnžÙùÎóË�������������i'K�������������¤‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@Ê´.�����������Gö‹$¿W������������+ÂFqF@%züî������������âƒPP¯„‡ß�����������@r @‹3~/������������©… +~������������©�Ðf]ø������������¤«Œerè%™?;á"�����������i’ÊÉÈ�P&Rñ3ì�����������ˆL"Â:�ʤÀJ¼~VB>������������‰¯àNF€2%ÄËÏ™¨ß"�����������ÐR$*hËã¶øðO&„O¢ùcý½ê�����������°Š5ˆÍý[tø§%T’øiÎßá"�����������/͉ô¹ �mÖRÃ#‘ü\‰Ú7÷�����������HWцm"¹_¢öM -1îÏÔ\ûÅ a"�����������/ÉÅ„û|͵_Zhiá‘x…tÂyœt ����������� ™1|—'Æí‘î—òZR%Ö°Ns„â}�����������€D‹58“èO<?-´„ I"?±…"Ý����������� ¥‰GžDl‹dŸ”•î¡”XB?‘®e[,û�����������¤ƒHB4ñóDº>Ò}RR:P¢š+ÑëCm‹ç}������������šC4a™dz¢ �¥eø']Ã&ñ ýIJ.Øúp·‡ƒP�����������H¶x„a¢ Üxâ¼.Øúp·§œt ”DÓi'ÚpOsw�����������HG‰ìî“È�PZ…Ò-Œi°&ÚpO4û„Zîv�����������€t•È?ñÚ'кp¶¥”t ¡D¦qÅy9ÖuÑì�����������<QîíºX—­‹d{³K‡ðI¬]~½ɺhö�����������He‰ ý$z9кp¶5»TžÄ3ôí¶p–#YÉv�����������€TMçœx‡~¢Ýl]8ÛšU*O" ýD²ÜÜa H¶�����������¤ºxò‰G7 p¶5›T ž$ªËO¤·ÃÙl{¨õ¡¶�����������¤ƒh3ö€N¼ƒ>ц­ g[Ò¥Zð$^]~u;TÐ'Ò®?�����������@º‹4(jGâî‰W7 p·%UªObéòN�(–O¸Ýì÷ ´D°����������� ÕE2Ô—G þØoÇЦ{P°uálKŠTž$²ËO4Û]aÞ/Ôk ´.œm± L�����������ITX%Ö®?æ`O° O°}¢ �¥m÷Ÿæ ‰DÚ 'ÚaºB…||²<NVǧD°>\„{�����������@¼ÅbñD°>Ü¡½Ü¬ö‰÷P`áö„h®�I¼»üDºÎ)Àãö ô 5äX<ƒ?„}�����������@²Dd ü 5ÄV8A ·Ã>‘†}"éÎr¸Û"Ùa’Dvù‰$ð(äcßnïö(ø*x$Û�����������ZšP]o‚ÜAöÖù'€œ–%Âíq“ÌJ¼C?‘|‚ÍíÌaŸ@·£íöÉ�����������H‘„Y íI×wˆÛiÚõ'Úy¨uöÛNËáö¸HV¸$’¡½ìëâð1Ï=ö¹½£O¨×ê5ÛoCè�����������¤špÃ,ávÑ Ä ÖáÇ>7ßöÄiìv°uál‹‹dL" ýZŽ5ü¨ÃO°Éþ¼áv²ßÏi]0„~�����������@ªŠ4üª«Ž;ŒÛö�P8“HlÝ€­ g9Üm1KtÈ$ž¡Ÿ@ašpƒ?N“¹»O–í~Á:ÿ Ù·9½žPþ�����������€TKðÇ·(ø,¸cïæãv¸*hNè'%Ã?9’8ц~âÙÝǼÎî1‡|²îî_ö€}»Á�����������î" þ8­7osÙöüñíç ùd‹sˆÈ#Ö0Q ×à2ÍCm÷8¼N—4ý9ýÌÁ¶Å$Q!“d‡~ÂéòcôdIè.@æy¶i Ûý$ÌõNÿ�����������€TIxÅæz_xÇmÚÞ`šÜ¶ûëîãc?‰i(°`·–ÃÝ•DL¢ ý˜—c ûønÛÃ=Yë@¾ O®l û„ $úË.šß7! �����������Ð\¢ «»ÓÐ^"6¾�Pl 9~ì·Ýö ö¼Ñ„€ÂYw[ÄR)ømè'T—{‡ž, Ê“ÆÀo½Œ9²Õõ×_?`›m¶é_ZZÚ7//¿‡Ë%]®¬ÖÞÍB0����������� Z„©öxÜ<YQ[[³¸¼¼ü÷yóæýróÍ7ÏýôÓO7šöÓðŽ€j%pØÇ>Ü—[Bwÿ‰g §åp·E,Þ¡•æ ý8 Áå4¬—¯£y{¾wÊñí{Í5×t<ãŒ3öëܹëˆìì¬!�����������€¤khpÏ\±bÙäG}ô³ñãǯ–-¡žzïT#Ö`SG {ðÇ>˜H‡âü‰WèÇw;ÚйËO¶8õå[¯~ò}û|òÉ'{ 2ô¯yyy£������������)£¶¶ö£™3g¼1jÔ¨¯dK@GÃ?µÒ4øcû4l~·i‰<üãôiÖðOsBÝwH/eóø–†ñʶ­×î>›×ŸaÃö:™î>������������©M»�MŸ>õ)S�Hƒ=ÕÒØÈüiÀÉ4,š!À½m—àO¶ÄG"‡ø²ßú1‡²M˾ÛÚá§H—¯ºêª­ÞÿýËûöíwIV–«»������������ ¥iÆ£W¯^‡\~ùå]=ÏÜ©S§nò®ÎݼY5ö¬‰G¬™§ý<]Æ%˜Hò4Q‰WÇW˜ëc ý(s'§ÐKš†€|“vùÑá½\?üðØí¶ë­÷v¡������������ múõ×_nÝi§>”ÆðŽû¥ÝÜ&ò+Üî?ÁæöÛNˡև-ÁŸhºý � ÿ8…~ÌáŸP¡íö£¡Mwe­[·î¢’’VÇ ������������Ò^EEÅóíÚµ½Wƒ;uÒþiðÂ?Ûdÿ8…|‚~ þ„ÚR–$Ž+IJy]¨ y9XèÇ)ø£¡íê“;räÈ’ªªMý������������´%%%Çi&däÈÑ%ÒØF³"š±çH‚eNì jDœÙˆò+œÌL\dKlâÑí'œ!¾Âéò£sûÿ0§ŸSO=µÝ /¼xwvvöP�����������@‹’••µõ±Ç3xÙ²eSgÏž]#Ù·m7Í—xlË>Áºï„ú‰&àS((ÖD‘+ÌõÁ~øPeO\ëîc�iè'oĈ¥~8ñïÿàA�����������€ËívÏ3fìÅ“'O*÷.ÖJã°_�Ò¡¿<â<˜y˜¯p†ürþË<·ßvZµ>¤X‚?‰ìöc_Îk(Øä ýäIcð'»ªjÓ999û ������������Z¼úúúÏ‹Š /—Æ4�ä ÿ¸CLÊq�‰mˆsÈi9ÜmeIâ…3–™Ó:§qÓœÆ[iÚ(GC?YkÖ¬¹ˆÐ�����������@æÐ¬Èš5ë.’-#FåHÓ܉ˆóÈS>NÙ‘è³0q—#ñîð_Nëý²ì]ìÿÌ“®×n?YsæÌ9¨´´õ±������ÀQCCƒÔÖÖê•Æäv»Å㉺Ã8±\.—deeéÉcÊËË“ììl���Ð|JK[;gΜ_ ô4fI´ÛfKÌy´«/‡â‘-sç—mKœ;õDº>jÑu„;Ì—Óí@Ã{™oš|ÁžlÛílÓvý•å•Wv:úèÜï½+�������,ª««¥¢¢Bªªª¤®®Î�øb£ï!}/é{JßcªS���Ð<:vì4Ô[›¿;mÚ4îË7”—/à#·}óPÉÁ21ö ÷ñÂmK¡xB…œÚ)™oëä þø†ø*ÖÛ6l¸¡°°è������à§A„ÊÊJ#œ� 9´óOqq±Ñ���@òmÚTõnëÖ­o”ÆÐO¥wªß|»aóäk(È|Ûc»í²ß6σݶ‹øŠœ,‰¯p‡ù  •~2‚ìa íî“5qâÄ=ý�������VÚá§¼¼œÐdúžÓ÷ž¾���$ŸfH4K"¦l‰8çNåYÌëB5Ä vÿ`ë£ïŽ?ÑóN·{§_·ßÜ×í'{Ó¦šû³³³†�������q»ÝFè ¾¾^�4/ö«´´T²²â}].���€`Ü3 óÏ—Æ?¾®?¾n?ö®?æÎ?átý Ôí'Ò®?wü‰f`áx%ÂM:™·;ƒ|! _·ŸÝ ý�����€Xý´¬N¦ÿ^#ß-©“…ëê¥l“GÜîÆï^²²\Ò¦Ð%½ÚåÈÀ¹2¬O¾ìÐ5W€T¤¡Ÿ 6ÐåHÀÓ÷dëÖ­ ÿ����I¤YÍ”xà_IcÆÄäÉÚ<7çR‚…pìÛCí®ˆ'šO¤ÃyÊ+P§ŸPŸìÍËÙ¶I»ýäTTTÞ’——7Z������¢ aŸ¾ª’Ù‹k#ºßàyrìE2¬o¾�©¤¬¬ŒN?@ ÒÎ?mÚ´����ÉSSSóq«V%×Jc·íúÓ`›<bíþãÔéÇ>IÛ"ÎÝœ–C­w”-‘‹6øÉ0_Á†÷2€|“v.Ê»üòË;=zœ������DáÎÊåþÏ*dEyäQô>Ï­–u•nNø)¢¢¢Bjk# ±HíÆ¥S^^ž����HŽœœœ¾ÕÕÕoNŸ>½J¶}Âå´o¸š„ITÑp†íŠd9 þd}öÙû �����@„6Öxä¼×Ë›s6I¬ô1ô±Ê«Ý4' üx¿Ì�©Kߣ„ó���€äÚœ-ѼLNd÷Œ9ë’0P¤ÁŸD&’ÌÝÌ뜖íÝŒÿ]»v'ø�����"võëeíŒ>Ö5ol 9UVV €ÔÇ{���H.S¶D³&öü‰HxÙ•DçgÂiz)V®�·íû8MY¶¹y}ö¾ûî[’5D������" Ã{Å3ô㣩}ùèR’M»ˆ44D>d€äÓ÷ª¾g ���HU:Lm]]1i «“Çã1&år¹Œ);;Û˜rss)++QQEO³%ûî;ªäóÏ?Ù(™mÛlΠ¸7Ï=Ò4 ä’ÀC~yBì“ñ þ„³,–¤S N@æ_º\sÍ5����� Ó¯ kx¯‘ý å˜!%²M§\cù·•uòê7òÑÏÁï«=¼o¾ óN@21Ä^þ��� iا¦¦Æ˜êëëƒîë ùB¾ãÒœœÉÏÏ7¦T ]sÍ>ÿü“¯¤ió3ߺhC<¾û†ŠZ²;þØÅ£õQ¶>Î;ì°������Dà…¯ªBîsΈR9ex+˺A=ò¼S;Ù¾k…Ü;iCÈç øƒdÒ«.C}! µè{Vß»ze4���ÐÜ4¼SUU—‹J´ÖÕI‡¸Õ°{QQQJ€6gL¾–ÆÌIÄ&©~ìšã·jì³Pa §¡¾¤U«Vý����� L?-« 9Ä×àžùþÐÏ/ËëdüûerûeòûêÆïƒŽR"ÛuÎ úúú\@²ÔÖÆè:�‰Ç{���©@?ëÖ­KH'Y}L}l}Žæfʘ8fP‚°ç[\A¶'E":þDûC¸Âœìûÿrsó{�����@˜¦ý^r ö¨ee r泫¥º®ñâ­É¿n’Û·ëB>ŒLÿ£Fvèš+@2ÐíHO¼w��М´­¨¨HJ]ªÁ ¾—””C5‡ÍæDgRœ†óÝŽ¦ËOÜ»5×P_Ñ„ƒ\AÖ»²³][ �����@˜¾_¼ O–÷‡!½‡èšøS•ìÜ=ONÛ«•ôé˜+eUnyû»Jy~F…¸Ãøªæ»ÅtüAò�Òï]���4—ššÙ¸q£$“Ö¿eeeÚyGòó“?Dú按SÇŸhs-Iò+™ÁŸDµ32×åÊj-������aZ¸.ø Ö.­s¤ ·ñëŒírä¤a­Œ0j]˜%çl-}:äÊﬗÐÏF[ NÜn·�H?¼w��Ð6mÚ$•••Ò\4p¤µpaa¡$“)c’È,KRB@¡Æ&3‹ô‡u%x»}¿�����SÙ¦àß½´*ØòÕÄþ åÕo*äÀ{–Ëß\)¿®hìà3vç"Ù¡kž„~.Næ"y<ž¤_\ xï�� Ùš;ô㣯A_K’ù2&‘fSµ=êýãÑñ'Þ/>Ôc9­fž���@Xt,éiÓ¾”o¾ùV~ûmž¬X±\6n¬0¶µjU"]ºt•m·ÝFvÝu>|O)**�™£ÎÔ¤çÕur×GŒË´ÖW¹åê××Éëÿlu|Xß|ùiY­�H¬¥K—Éôé_ʬY³dÍšµ²zõc}ÇŽ¤C‡ö²Ë.»È°a{J·n]����œï• ¡}-YYYÉöË)sbžâ•ÌõX1?W2‡úrnX'Kšþ’Â?����ÒÚµkå‰'ž–÷ßÿ à•$ë×—ÓÏ?ÿ,o¾ù–ÑjöÀGˉ'']»rBh Úºd]eàïUÖTlIþü¾ºÞò Ì’õõRïöHN–KJ B7TnSIÓe�fþ¹Pž|ò)™9ókÇí‹/1¦Ù³¿“ÇR(§vªôë×W�����MÕ××Cl¥}MÙÙÙ’““´(K ÐoÒ/tÂi㜴a½œ$û['W˜ëÌÛõ����ˆ‹ÚÚZyì±'䍣ޑ×^{=¢ö±º¯€Ž>ú8yè¡ÿJ]]�Ho½ÚÿiÃ&·,\[oÜîß%Wr³·|E¡Ã{ièG­ØÐ ¡Ÿ+[�D¦¡¡Áû7÷9çœó†~œh�è‚ .–‡~Ôx ����€UEE…¤ª|m¡r+‘æ`â.U.7sÙnø���Weeerá…—Áâ+ZøyúégåŸÿ<_Ö­['�Ò×ÎÝsCîóڬƖ×=ÚæÈø¿¶“þseHŸ|¹ýˆvÆúºLš:D8°Gèç ×òåËåóϧȊ+h©ô‹Þë®'o½õ¶x<‘_4év»À®>F*¡ ����ɦßjÇŸT¥¯-–ïoÈ)Ë’¹–H^„+Ìõ® óPm’|­’ìóìÍsßílÓºR×ÖÖ})����àà?È%—\æx’¼sç­dŸ}ö‘aÆJ×®]¤cÇŽÆúÕ«W˲eËeÚ´/eÊ”)²råª&÷íÒ¥³Ü}÷éÝ{kÐ<Î8ãlùá‡-ëvÞy'y䑇BÞ÷§euræsÁ|ÚÔçÞ´—¡} šlÓ(”Éë›ÃAÁ<r|;Ù¡kìáŸO>ùLn¸áFãK°¼¼<¹õÖ›dï½÷ÀlÍš5’δKv´sÝ®»öþÝÞ[vØaéС½±nÍšµòã?É_|!ß~;»É}tè¯[n¹Éh¤º:���¢7thr‘g̘*éD/’H—‹Ûµk'YY‰íe“——»§4åU¾yÞ`šÜ¦u:÷8ÌMâpÛi.–C­·ˆwðÇé6Á����ÍfÙ²eF0`íZëíV[uò®?M>ø z@üþûÈ#<&«V­¶lÓðÏO<*mÛ¶•XèøÕpDãÉ'“úK*:ðÀƒeÆrÿòõ×_#cÇ,@¼úB/Ü/ÞÎ{q½Ì^\tŸlïGÄ1{”ÈÁ;IÏö9RS瑟—ÕÉ3_n”¯ÿ¬‘P÷È“ÿÓÖñ}>a²×^Ã%\'tšüúë¯þe{Èéꫯ•Ï>ûÜ¿<vìAÞ÷ݵ‚Ì’îÁÞK;ý˜õèÑ].ºèÙa‡íƒÞ÷§Ÿ~–{î¹O–,YjYÿ—¿.gŸ}†$š††50üÍ7³eåÊRVV.ùù¹Ò¦MéׯŸ ¾§ì¹çPÉÉÉXÝrËx™:uºùˆ#þæ­ÕN•LCð�� 6‚ÓŽ¨ÕÕÕ’ ¤¤¤D©ƒ?ÁnKë-8Â���ÐbÕÖÖÊ•W^Û$ô³ß~ûʸq×IaaaX£Á C+#Gî'7Þx³|þùþmË—¯ðžh¿Nî¿ÿ^ÉÍßP>�’ãØ=ŠB¼_å<7£Â˜¢}Žxiß¾­m¹�-Éüù¿Ë;ï¼kY7pàÎÞ¿Û×JqqqÈûk0èÞ{ï’›o/ß}÷½ýÛo¿#0Júöí#‰ C>öØ“òî»ï‹¬Ûj½_®Wa¤É“?—ž={È…ž2Ä����ñ¤7¦KèGék-**Jxן– 9~C)1Æ���€–ï™gž“yóæYÖsÌ?düø[Âý˜éæí·—üãhËú9s¾“ÇR�¤Ÿa}óå/ƒ"ÿ<—>¶>G¼\vÙ%2hÐ@㪷ÝvÛU.¾øBZ’ÇÂø2ÚG;ý„úñÑ+BµÃ\÷îÝüëô1õ±AC?:Ÿv)²‡~œ,Z´X®ºê:K0 ����­¦&t×âT“ޝYš!CÇ����-’ŽUý /YÖ±\pÁ¹ârEvìµjÕ*ùßÿ^•÷Þ{O†.×^{•,_¾ÌÒùGŸëðÕ.]ºH¼ì½÷péÚµ[ÈýÚµ‹m˜1 %Ó¡þ~øáGã¶}X,ŸËG—ʵ !;ÿDJ‡øÒÇŽ§®]»ÊÃ? @K´té2™=û;Ë:Þ+’Іô¾—]v¥ݬYsŒçèÖ­«ÄÓ³Ï>o<¶™^‘Ú¯__Ùj«­¤²²BþøãO)++óo×.@·ßþoyúé'$//O����ÄGº ½•L±„hÆŒ9ĘwìØAÎ=÷:tHÐýõBÉ{ï½_V¬Xa,øá» }ÍÑ\À™i’ü‰g¢Ée›���� ‰'žxZªªªüË:u4†÷Š$ôóûïÈóÏ¿ }4Iêëëu3fÌ0NæÝpÃõò'«V­6Öë°bÏ<ó¼\yåe/‡~˜ìµ×pA|èÿCýG{àÌâ ý¨ï¿ÿÁ[»˜ÿ-Üö·6rõëeq ÿhègü_[KK¦¿CÇ#ÙÙÙ’,úYKH¢åš>ýKËò®»Ži8¬wÜAvÙe%”óå—3äÈ#ÿ&ñ¢~Þ{ï}˺Î;Ë7Ž“^½zú×iW W_}Mž~ú9ÿºõëËä“O>“ƒ:PÒQs|����ˆŽÖï¾ï7c±zõ¹é¦[åòË/•ýöÛ×qŸo¾ùÆ{L4Þ¸à!Vúšíßá$H¢r(úXI°tëøã s���€ ¶iÓ&yÿý,ëÎ<ótc¨®pèÐÏ>ûœL›ö¥qBËìàƒ6æúX§Ÿ~ªŒ‡Û‡N”óÏÿgØÏoÚåHÃHååýëþò—Ã媫.·ì§ãcë~+V¬ô¯;ä±rÝuW·õÄä„ ÷ø·m³Í6ÞßÇ“²|ùryì±'嫯¾’²² Ò¡C{0 ¿uÔ‘2x𠉕žÐÿôÓÉ2qâDY´h‰¬Y³Æû»,”N¶òžüÝÅè¨d>‰jfͻᆱÜÿ}òùçSŒN óçÿnüÜÿûß –ÇÐ/´s“>çÏ?ÏõþסíРÏù׿.}ûö´<wÜ1A®¾ú ÿr«|—ü瘶rçGåòæœM Þ+Þ~|®¾úZùì³ÏýËcÇ$×_mÈûÍû‹<ùäSÆç[uuño|È=ä裔îÝ»7Ùÿ?ȱǞà_Ö/ئOŸb¼—þûßGŒÕ† åFØñ¯ý‹?}ôÑÇ2eÊòË/¿Ÿ¸lß¾½ì°Ã�5j¤ì»ï>Ž!LûÏvÖYgÈI' /¼ð¢¼ýö{²lÙ2)-måý|ÇZÜ|óxËýŸþ™€ï×'Ÿ|Úûºõ/ëPiï¿ÿv³}^ÃÙ¬Y³,Ëûì³·Äjï½÷¶fÏž×àÏòå+¤²²Ê²î„Žkò÷*77×ntΜï-C|ÍŸ?ßû_çàϯ¿þ&|0Q~øáï—ëkšD»üéßÞQ£öóþ­ÛMBY¸p‘·>ùÈxÎÕ«WIUÕ&ãok÷î=ŒPÔ˜1£¥cÇŽMî÷çŸ åì³Ïõ/ëg€¾g,X O?ý¬ñ7SëóÏ?×ørzNýœÐ¿å•••ÒªU‰÷ýÙ×4ëk×ßG¸4ˆýâ‹/y?¡îvíÚCqÄ_¥gÏ��� 4½!z<îûÎQ¿O›0áno]ŸÓä¢Å3fÊ­·Þa ý””DÞÅÕL_{~~ü†Qwö9†ú���ÐâL:ÝÒíg«­:ÉÁô>zž†NžþEïÉê_÷Ñ“Tÿûþe Ë<öØþ®?8š1ã+9r„4=öÏž-·ß~§ÝÛo¿#Gu„ådøSO=c ý´mÛÆ,£'ûÏ9ç\Ù¸±Â¿NOvꤿ·c=FÎ;¯¾Ñ€ÀÕW_g„‹Ì´¯vDøõ×_“ÿÇw¬÷g<+¬îï¾ûžÜrËm·kPêºënðžžmY¯Wé‰M^{íuï â#ä ϓœ¡[’·Þz[:wÞJN9å$Ëz ì ï›//|Uq÷íòsìE2¬oB¿ŒŠØÔ©ÓäÊ+¯1>ç|-ZdLúqÝu×ÈŒ ù8óæÍ—³Îú§åóÕLƒ�×^{½ñ¹`§¡>þøÙa‡¼ŸS·8† ìn¹e¼¼ÿþ‡MÖ¹ŸÜu×½–×òÙg“ôy­÷Aè'ùþžúè¿•Xi׳•+WI<™ßW>nwCÀý5Œ«¡9§‡úwèÑGŸ0>§ìV®\iL“'n _¨ƶmÛ:>Æ#<.ï¼ón“³þ-Ÿ;w®1½üòkrƧÊa‡"¡h ðÒK¯0ê'úœ~óÍ·šlÓ¿åß|ó­1½ôÒËrÍ5WʶÛn#¡hxèÚkÇYNRèÏ?qâGÆï@Ÿ{î9T����kðç”SN–ûî»ß¿¬ÇB·Ýöoã˜ÄþÑ.®ºÎþ\zD,’üI{ô7���Ðâ|û­µc€^í,¢CuÔ1rýõ7 ý¨´^¯©m¦'´š“¶ÓN;ú—õ œ{ï½Ï¿¬'Þ_xá%Ë}.¸à|iÝ:ðDÞßÍ¿,¡; å<óÌsüIÎ<óœ&¡':ôÚu× ¹ß† å ¸½¼¼\N;íÌ&¡;=YúÊ+¯Ê­·Þ&hy´Œv‚±ÓàŽvÿyäøvròžÅF §]±·åb/½­ët›î£ûê}R-ô³víZã߯S8Ai¸nܸY:òÿwÀÐv9ï¼ C?v?ýô“\zé•!¿tœ3gŽcèGÊ~û°¬Ó¢}müñ‡eÝ¡‡†9 ù´ëšYûöí$VÚÎlíÚuO Ì͵?§q4TãDC:[oÝË?éP¤vxs ýØi(檫®u|_þßÿ=`ûì¡;½ ÷Á–/¾˜*¡<úècC?J?kœB?v+V¬0ˆÚ(˜òò róÍ·ü¬Ðϯ;ï¼Ëè*��� ¸@ß „K‡(>ë¬Ó-|õ1µºvïÕ 1õ¶½~?þøcn±ˆõµg‚–r¹"Ã}���ðk6c‹áÃ÷ ¸¯8ŽwcÈЉÔwÜ1MÖ6Ôè ã3oÞ<‰®ì»ï~º>¿y˜-}W^y¹œtÒ©þƒâ¯¿þVfÏžcì§Št(Ÿ=öØÍ8pÆ÷»2dwùÛßþ*­Zµ23Ï=÷‚1|–ÏO<%£Gï/]»v•péÉJ ™_“vÖÑnJ`Ò“~o¾ùŽ÷äàBÿvý2AO,ê0füöÛoÆ\Ûï½÷^Þ­ídÆ RXX`¬¿ãŽ;-…ââ"9ñÄŒ¡Côµèð_úÿÕwÂT‡ZÑ×È‘#-‹†´–yØ/ŸºæS:Ó.djàÀ½ÿ†‡ÿ¦?ýôsK(A×iw¬—_~Áq.¥!Bý,ÑÎgú¹Ó£GO#�Ð¥Kcû=÷X»ïèpD:¢vlÑý¦L™j}ô=ªïeýÌdæÌ¯y=ŒaÉôê>=ÑïsÈ!C~ùh¸gñâÅÆþf<ɲܭ[7㽎Ì`¾„ ÂDJÿ]Ž=ÊûoqË£kÖ¬•‹/¾\úôécüíÔ÷ŸÏΪï¼óžÿ}«ô=yðÁcŒ+hóóóä§ŸæÊK/ýÏ?¼˜†g´“ŸvüóÑ÷·¹g¦CìpÀHéС£qŸgžyV–.]æß®a%ý{ˆ~Ìžýñ ÃiêûHk€Î;Ûß~û]ùòË™–ûôèÑ]ÆŒ9Ðø[üóÏ¿¯ÉW›èçÂþó ÜyçíŸÓשK;m·Ý¶²~ýzïçÂ7–!tè2 žxâñ��� °x„g|C}ÿ÷¿ù×ù†ýÒcíj¦¡b•àà~ßÅfÐ\ÁŸHƒ:{����„M»Ú˜ ¢Lšô©?Ø¢'³¯ºê ï«Gn»ívÿIgß¶Þ½·nr=ñì¹c¨{…Y«V%–àêׯ¯üãGÝq|}ôqc8Œ?üÈ¿NO@jH(¸ãŽÛü“vÙe°÷„þöÞ›—ù÷ÑÀÌĉ7:)= h]Ý|ó¿,<ôK…sÎ9ßTДÚÝ(PHAipè®»þí=áXjY¯Á€O>ùÌ¿¬'1|ð?ÆIEŸÝwßMºtÙJî¿ÿAÿ:íh4räAË£5œ‚?-…¾‡®¼rË{U‡ÌÓ.?úùç£ï í¢…@Ú´i-<p“á´4H1fÌéß¿¿Ò[¼x©Œ³ôêÕÓ¿mtÈ>sG6  þ¨#Žø›\zéEŽ]Ûô1õóÝü¹«ïí“O>ѲŸ}˜¯Cô³ÍGcK—né(£Ýyºwï&±°wøiݺTâíŒ3N“?ÿ\dt³2Ó0šN/¾ø?ãoÍ5lØž²Ï>{!Z;ýÂüÿ{Ù²îœsβ õýöÛß.¹ärc¥áÔN8Îÿ˜EEÅræ™§{ß‹KŒ©OŸ­-Á í4¤¿ëË/¿Ê¿nÉ’¥F°ÆiØ0ý{úï÷Þë&¯ûå—_±¬Ó¿©ÿþ÷mþ°Óì/»îº‹ÑÍÈG;..Z´Xzöìð9O9åD9úè¿û—µƒ×…^b êg Á���ø º—$ÓŒ¡»g¦‚x]á ÿèоÇt æÄ+ô£â}G„¢É¶$ý3Ô���€§¢¢Ò²l¨çŸßÒBC?:u2†íÐÛfÇœãýíCˆØŸ»¹œ~ú)ÆÏá£'Å.¼ðRÿIBuÚi§4 .òÏžÓäÄûž{5@fÚ)'2Ûm·]› ßSPP çwŽevë 54Ñu×]Ó$ô£Ìá'µß~ûZB?>ÿûQÞ“§EþeN‡MBËWVV&-…†Ï?ÿŸ–uú^¾ä’‹Œ ‚Y¨÷ïYgÑ$ô£4D£Ã4 pûí㽟«O[B?>Ön'eeë%é’K. 8T£>ïØ±YÖi!³yóæË¢E[†ÒÇÒî)HMöa¯t(ÈXi¸Ä,Ö ‘ý;uÇ·ÊÉ'Ÿ`¼çœh»{ ¾Ýÿr≧ÊË/¿jù›ì{­Ú-ÈGk ªÙõï¿ <ÐòسfÍñ/ëûïoû‹÷ïþy2aÂí–ÐS÷¡PŸ}'tB“ÐÓëVÚñËþ{í5Ì耴Ç»ËÑG%W_}¥´mÛ&àóuíÚÅúQZ:ðÀ,ëê ���-žá ÿœyæi/ª‰gèG5sð'-´”¡¾���� b_ýH¨`ôêz{WTWXX(—^z±åj~sg¾}ûʱÇþ#¬ÇÒ®�½{oí¸mèÐ!F¨hËsDÖñÈ>,›vVr¢¿ ᘇúý÷ß×£'‚NÏùÑG“~`~>õÇ ¤}ûö‚–­¸¸XŽ:ê#ئp¶Ù¦Ÿx @Ieú3˜l>íÚµ3º†Dòþ4(¼ÏAíþ¥C -Xð§¬ZµÒû¸+åçŸçZºv){èÁN__vvvÐ}>ø cCß{X» égo²I“¬Ý~4t O¤¦]vÙÅNÊgÊ”)2fÌh‰Å_Xmúï*t˜Jí¶§CbΜù•Äùþûï-Ãiùè0W:<æï¿ÿatãó}Y¾`ÁË~¦¹ýö;ŸïÛog[–õ¾ûî»·ã¾ëÖ­3:åhhvõêÕÆkš={v“ýB}—¾ãŽ;8®·¿î¢¢B£+ “o¼AµÍ6Û8®ïÕ«—eYŸ����’K¿ÓcûwjºÎ~Q/‚?ô^���‘’’bïI®Zÿ²óQRÒô |óPXêöÛÿm }¥'£õ¶ÏqÇ#دp×玗 î½ö.ÑÚ{ïÀ­õD£ž¤ GûönëØÑz _^¾ÑÏ;œÇ®®®–+,ë¶Úª³ã¾¸Ð“õþù§ÝêÕ¯ð×î ¬ZÕô~ö¡€)+Û hù´N·n]Œ!ÀtR—]v±yä’n:wîp›“eþ؇D²³wì±Óî,:LÑäÉSŒ$± ö>öéÒ¥³1|Ð7ß|ë_÷Ùg“åØc?·ÍÙ©C9Dºt¬ÇÒ¿¬áýw(pŠv¢1‰ô èaÆI"ååå}ƒµ‹Îwßý Ó§)Ó¦M7þFú|þùÙm·]Œa°”Ó{P÷ Gyy¹eYÃ0~8QÞ}÷}ÇðQ4}Ø_·ÖñJæååF´���@`N!hM™ò…ÜqÇÇ zô9î¹çÿ¼ß Ô7éÒ­®;å3+tü���ÐâèÉìuë¶ !³téÒ&Ý_æÏÿ]fÎüÚ²núôrøáÖûÝ»w7†‚ dÉ’%Mž;UTVvL»Þ„ÛõÀiœî-Ûꥹ4G›ßÚÚAfØ}÷ÝdÆŒ¯üË_}õuZ‚uÕqº*/Z/½ô?¹ï¾ÿ8¾/µkvÓ×bï¸cÇl þL™2ÕþüöÛ<ãóß§uëRÙgŸ½©«[·®²Ë.ƒ,ÃVÝ{ïÿy§»¼ÁlܸѸ¯Ù A;KÏž=$™Ú´ictâÑI8×\s¬\¹Ê¿ýý÷'úƒ?±ü]3‡í6lØ —\ryÀÀ¾¦þý·µ|ÆÅ‚¶û���H%3fL4¯àϧŸN– î¶|ßà þûÖéó<ðÀC’››#£G ±JàOÊKtð‡ÿ����’®_¿~F‡� ôh3íöê`WC<7ÝtCЫÖõ±Í KÑ|ð¿·éÁ·v#èСCÈÇY±b…qàîô{X²d©e¹´´UØ„´›‡vHª¨¨4=×rÇ}õùW­ZeY×±cè×î¤C‡v–å³Ï>SN>ùDÌöØcïô/óͬ°»Y¥’@ï)µl™5 ÃúECÃ5ÿ÷X>S÷Øc79è ƒdÇ·7†ÝÒßÛ„ ÷$$ø£áÌ î’ÊÊÆ¡ù~úég££˜vW1;ðÀnNHm§vªÌ™s‘ÿ cý;sÓM·Ê¸q׆þÑÐÞÇ|Ñ¿a'Ÿ|’ÄÛsϽ` =飅8`”ã¾l:ä±–®F‹-ôßnßÞú÷ICPãÇß"‘ÒáïÌ?»þ­=ì°C¡ÿ4øTZZjtúûß•x°¿îU«V¬����4½('ÔÛ¡h‡ß»îºÇò8Ê9÷ÜsŒÏ½÷Þïߦóxuþ 5 xšÐìL®šHÔÑ����Íf·Ývµ,O™2År@ºråÊ C;õïß_n¾ùFyå•eûíÜO;áLj½ŠH»„¤=ñýÆoú—5$ãúFiØFÔÃQUUet;±Ó“üŸþ…e]×®Ý$ö Ô´i_:î÷í·³Œ×a¦¯hôéÓDzüã? `ׯ__ËÉlý÷7wî/’n¾ýv¶÷ý^ÑdýÚµk-IÕ­[w‰†lÌŸ±ÚMì¾û:PzôèáKUVVH"hˆpäÈ‘þeí|¢C<éÐJf‡:Vúúöí#‡~˜eÝ÷ßÿ ^x‰ñÿ5Ý碋.m²ï!»ËvÛm+ñ¦Ã\}ùåLÿôÚkoý2]ôfùù[†ÏêÙÓÚpÞ¼ù–¡ÁÂ5cÆLËòÕW_!'žx¼1dš†~TUÕ&‰ûßUf,Ðÿ«K.¹BÎ9ç|ù÷¿'ÈË/¿j„„����$^¬áýPëxsgp û_|ñF°G;û\tÑù– �|40‹üñIH–†Ë.����´8Çï)EEEþe=©ôî»ïù—_zéÇi;3ÜyçíòÔSWë‡:¨|çw-'¬ô9õÄbsÓðÛnû·åÄã '''Ÿ|‚´jµ¥[ÂgŸ}._|^ûcíæaüï/Ë‚ ,ëìÃèØ[ñÖÖÖZ–<ÐÚîwÖ¬ÙFË`3íÜñÀ[ÖuéÒYÜY¢qà£-ËÚµIŸ×nñâÅ2fÌX9õÔ3eüø;äÕW_ :ìZý·»ë®»XÖ9àR–ô ;s7ýlÐàŸyh µ÷ÞÃ%åå-Ë;oÕ佯CÙ;ðÄ“=Ô£_Hj�Òg»í¶“m¶‰.,ˆä;ýôSŒn7fÚÁæò˯’«¯¾VÞÿCY¸p‘ñï['½­ët›îã4Ä•ï9iÒ§oö€ðŸþéý2ü.££Ž™¾ï&NüÈ;}lYoŠtðàAÆ0\>7VÈË/¿Òä9õ½ûÏ^ gõO¹ýö;½_‘5kÖøŸÇ×ýÊg«­:7yŒ?ž$ñ¢a¿Ú[Öi×!ýûm¦a¼ŸþÙ¨ôoýO<Õd����‰kÜGy´Éð^ô1ååþÑû<úèc º÷†–^ý©��� ………rðÁA =µÿþ£ŒpÎĉýëõÀQJ;îéÓ§wØÏ¡'ÍCu¨1c´Žb¥{fÌø*ä~Ç{´1,™Ï‹/¾dNGOÆýå/‡K^^ž÷ç<V~øÿ¶;ï¼Ë7„zÝüñ‡÷¾'ÊA1†óš={Ž|ñÅ4Ë>úøcÆXC5……ERV¶Á¿üúëoë´£ƒž„×ßýÓO?'Ë—oŽhܸyîƒdçwôÞ·LÞ~û=Y´h‘åqO:鄨Ç÷ÖÿÏÆ õÓ¦_@hwˆcŽ9Úè¥_NÌ;WžþEãµë¤'*5htä‘G2Ç{ì.}´åäø×_#§vŠÄS8ïó¡C÷½öŠ.”£Þ{ï}ï‰ö?eß}÷6@zÂý·ß~³ìÓ«W/ãä}4¶Úª“eYC7ŒÜwß}Œn<ß}÷½ÑîÛŠ' njw! ì)óç¿:ôЃéCƒ·×^{µŒ»ÑµÊlöìïŒ)RúY÷Ý÷·÷ߤċ5÷Ì3ÏÊêÕküë&OþܺigºöíÛJuu1ØúõeMî衇øoëߟ#Žø«¥¾xæ™ç½ÿ®—È>ûìmtëÑ¡õôo©Œ”†žfÎüÊß:_C‡í[³f­ÿ1î¿ÿùç?Ï–îݻɺuëäƒ&ÊK/½,ñ¢Ïù÷¿%>¸%¤«ÝŠÎ=÷£6Òºá×_kzÒ÷­=��� ñb Ïh·Sßð^æÐoyØ/ó}£Að'´Tþ0d���€¨œzêIòþûø‡‡ÒÎ<ÿú×Mrûíã½'ч'ð<ð@9úè#¥cÇŽ‘<´qÐzà 7ZNòièE»êÄS a¯ì´;‘/ø£šÇ³’Î:ë ãõ©üãïFÐ`åÊUƲþ^zè¹ôÒ‹>¾‡ÚµkožzꙀû~ú©Ò¥K˺v` õÌ›7Ïøÿ0vìÁrýõ×£›oþ—÷„äùþn@Úéí·ß1&'z’UƒL±¸îºk䤓Nõÿ?Ôç~úégɉ¾Î«®ºBY4øc¦C×TVVJqq±ÄK8ïó’’⨃?Ò„†×tr¢'í¯½ö*Ëy‘Ø{láŠjjjŒe}?ÝzëíÆdfæ$‚ÌÁFýüsú2©Mßg7Ýô/ãoÚ[o½tø,'úïYCž:ü–¯[["Â?:”Ý5×\éÆC\ùhW ‘3jÔ~²çžC-ëŽ<òo2gÎKàI;ôéÈyçýÓû9±¥£ß~ûW^Ù~Óðv2ÓÎBµµ5qòë°Ã‘Y³fY‚ŒÚyÉ’ö)**” /<_����$‡#éñK4à ›é°ègœqºŒ±OÀ}ô<//ßèôkèG_s´ßWÄ™fW<’¢èø��� Ej×®{ì?ŒN?>S¦L5†¬ÒÐG´ŒzÒð¾ûþÓ¤ÛÍñÇk ?ÕÜt¬mó°Ûo¿½rÈ–!p´ûÆùçŸçýŒó¯{íµ×å ƒl2\‰^U£áœsÎ9WÖ­[ï¸Ï 'ï|:é¤eêÔéM†òøñÇŸü·wÜqy䑇äꫯ³„„œ{ì1rî¹gK¬ôßÇã?âý=Ü ßÿCÐ}5ÌtÛm·HïÞ[ 2K§N¤gÏžþŽSÐnW±tßI¶^½¶6BŽ7ß|«cpB;ÿú×õFçhi€àúë¯5‘†ÃÓa�µcÉ-·Ü&‰rðÁc¼Ÿ%5ù9µÓ‘vJAúÑÎ?guºpÕ�É·ßÎ y½òtðàròÉ'ɶÛnct Ò¿‰ ÿ 0Àû·u~ûm^Èýõ ð#Žø‹ñwÓÞ½N—ÿõ¯qòÐCÿ5†/ Fÿ¦kèGDfÚÅðÇ<Òç7î¹ãŽ q þ(­¯}ô #¨Œþ]½îº«¥[·®���ÄÛС{I2͘1UÒ…~mðçÃßh  …K_3B#ø��� Å:ñÄã嫯¾¶;^zé²|ù2ï êë#–K»é‰m{ègРrÊ)'IsûøãOŒÎ>zòðòË/irRQOt¾þú2kVc7= :~üòôÓ'YôêÕSžzêqy≧eúôéÆp%Ú HÃB:¼‡ƒåD‡óÒ€ÍÓO?#sæ|g\å£ì:›~Ñ Wí¨þý·óþ¿y΂è£>’… Ëš5kŒŽ�:me Gvøá‡ÊÖ[÷’xÑPÇÃ?` ‘òÁzOÖΗիWI]]½´iÓZ¶Ûn[£“‰oFKáÌ¥]ÌCÍ}ýõ·iüQìÓ!~žzêi£k‘;Ô¹sg2d9昿[† Œ–~®è~:Dž†3Ö®]k¼¿uh=íÄsøá‡ï³DÒ÷ôî»ïê}OmYoJ éIÿÝzëMÞ¿ß+¼çf¿V¯^müp»=F°«Gî²ÓN;ȰaÃŒÛ>üR‰ÿèß»ûî»Ûûïÿ[oíñ¼Y¿~TTTïßkÜu×ÁÆß–:|,ý›sÁçÁ]nPë}OiÇ1íìÓ½»>Î £{žS¨MA&Ü.ï½÷|Z´h¡lÚTmüm<x°}ôQÆgB¼éÏyÎ9gŸ9:¬—vÒÿGZ?éëÖψáÇA.þ®���ɧßÉéqE:!øžp‡Òr…¹ÍÆÜ`Ù7e™æ¾){óºlÛ¤Ûôè6«¶¶nº����€MYY™œz꙲lÙ2ËúN:zןlœvñÑ„~ø‘<ôÐÖὔvùÑ`‹vi)^}õ5ï Ã{üËú3¾ñÆ«¤¢@Wòù®¸³oµÞnÊ”/äŠ+®ö/÷îÝ[^|ÑyH84?í(ôî»ïù—;wÞJ^ý•Ti ž4¶€•½óÒ:LWº…ùв …�� 4:þWQQѤ3wªÒ‹ÌÃ'B^^î0ïL[—ož7Ø&Ïæ¹Û4yLsû$–ƒÍí·íB1FÇ����-šAs×]ÿ–‹/¾TV¬Xé_¿jÕj¹ýö;åÉ'Ÿ–½÷Þ[†ßÓèzѱcãÉ øhXhÚ´/½'þ§ûÛi æî»'´¨Ð�«ÝvÛÕèbák…½`ÁïçÁ*£» R‹†4íC÷iÇ”L ýÀY Î??üÁ����C; §Kð'Òn홌à���€¯wï­aª®¹æzÿðV>+W®2:Üè‰vÚQî¸c<¡ …Ó/™ èo ‘åóÇ þ¤ýL×á„t#íÎd–-//Oþú×Ãðq ÿÐ6���hYÒ­O²éÅ1ú]‡É›Êô5r!Oøþ����ÈÚùçÞ{ï’'žxJžþE©««“hè‰äãŽ;Æ&,77W�4¯wÞ©I——wvÜÎz'‡vˆÌŸÿ»ì°ÃöFw0í„ÔðÆoÊÇâ¸íÄ—öíÛ `¦áŸüü<yè¡G¼ÇsäÒK/����È$ª©­­õw7N5Úy™n?‘qÅa?—Ãí`sW€eß”ešû¦ìÍë²m“n+ÕymmÝt���€0è^Ï<ó¼Lœø‘lÚ´)¬ûèÁæèÑÈI'/]ºt‘–L»M˜pY‡4{ãW�R‰vl3f¬lÜXÑdÛ˜1£eܸë2öêÀ5kÖ€ôÔ¡C���MC?eee’ŠôN ÿ$C^^î0ïÌíÊ7Ïl“góÜmš<¦¹}’�ËÁæöÛvÁ¶èø��� ãtíÚU®ºêr¹à‚seúôòí·³ä·ßæÉòåËü'[µ*‘.]ºÊ¶Ûnct÷6l¨ � 5¬ZµZzöì%K–,–ŠŠJãs[‡e;ì°Ãd¿ýö�����àLƒ5­Zµò~ºQR‰¾¦d…~Z:þ�������-€ôEÇ���$“vC¯¬¬”TP\\œô /[JÇŸÌìw ������´P.W¸×úH%¼w��l´ÑÀMskŽÐOKBð������hA²²øÊHG¼w��Ð4p£Cl5}nB?±ap4������ ÉÉÉ‘††^ô½ ���4‡üü|ÉÎÎ–ŠŠ ©¯¯—dÐú·¤¤„:8¸„�������hAøÒHO¼w��М´mÓ¦I¢ésèsQÇ¿E������ ÉËË“ÊÊJ^ô½ ���47 åHUU•TWWK<éãêã3Ìm|ü������ZmÏ®WM&«=;€Øé{Vß»���@*Ð`ŽÃ¥!ššcŠöSk]JL'?‰Að������haô*ÊŠŠ ô= ���¤ ê“Ûí–ºº:cjhh0&ÇcLÊår“ÚuÊÍÍ5&Â>‰Gð������ha4D°iÓ&ã‹X�©MOŠü��@ªÓ�¯sR Ñ*������ *..�©÷*���€Xü������Z ¼¼<ºˆ�)Nߣú^���€hü������Z¨’’ÉÉÉ�©Gß›ú���€Xü������Z°ÒÒRÉÎÎ�©Cß“úÞ���€Xü������Z°¬¬,iݺ5€¡ïE}Oê{����bÅ‘������ÐÂiÀ M›6RPP �š¾õ½Hè���@¼p™������!JJJ$//O*++¥¡¡A�$‡íU\\l¼ÿ���� žþ�������Dƒ:UWWS}}½�H ÖK»üÐm ���@¢ü������2/Œ jkk�Nn·[<�ˆŒËå2†ðÒ°N°ÓN?����H������€ ¦Á„ÂÂB�����é'K�������������¤‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤!‚?������������@"ø������������¤¡���€°²¼VV—×ÉšŠ:)ÛT/åU RQS/Õu©­wKƒ[���€¤ÉÎÉËÉ’‚\—”äçHiQ¶´)Ì‘%¹Ò±4W¶*Í����hn����4‹åjeÁêjY¸v“,YW+µõ���R…Ï7Õº½“ÈúÊ‘uÖíy9.éÞ.Ozµ/”Þ ¤Kk‚@����’à���€¤Ñ°ÏÏK+å×U'O���€4¥Áõ?VÕÓgsEÚgËv‹dûnÅ„€����$ Á���� ÷ýâJ™³¨B¯«��� %Ò`ûŒß7Svù2°G± ìY"����H����$ÌÌ?6Ê× 6ʆªúûçgI§VÙÒ®(KÚdII¾KŠó\Rë’—Hv–����I£C}éh´Õu©¬õHEGʪݲ®Ê-«66He;à}5ð®ÓóÊe÷Þ­dHŸV����‰àŠÃ~.‡ÛÁæ®�˾)Ë4÷MÙ›×eÛ&ÝVªóÚÚºé��� %Ì^X!Óæ— üdy+üÞr¤G›éZš-­ Â=<���šß†j,+oÅeõ²`M½¸=÷m]”#Ãû•Êà^t����RE^^î0ïLýå›ç ¶É³yî6MÓÜ>I€å`sûm»`Û ����ÄÍ¢uÕ2yCzõî+ÛvÌ“^m\tñ��@‹ Ý–yä·Õµ²`M]Àýt°ZKÏv��� yüqÞFð���ÈPŸü¼^fü¾Ñq›v÷Ø=_tÊ¡³���Z4í4wU½|·¤&` ¡}[ɨíÛ ���€æCðÇyÁ��� Ã,ßP+~¿N–•Õ:nßµg¾ ìš+ùÙ���dŒïéï–ÕÉ·‹œ»avm“'cvn']Zç ���€ä#øã¼à���A¾_\)ïÌYë¸m@—<Ùµ[®´Ê§Ã���2ׯ|»´Næ.wÊ2° ìY"����’«¥r����¢0ù—2™6¯¼Éú6…Y²WßéÑ:K���€L§Aø}ò¤oû™ú{µ”mr[¶¿ûÝ:Y_U/#ú·����ˆßÄ���ˆØ{ß­u ýìØ5Oþ>¨ˆÐ���`£5²ÖÊZ3Ûim­56����DŠŽ?����"òæì5òÓ’ª&ëGlS :qˆ���’%²wï<éPœ%“çU[¶ÍYT)unüep���€pñ­<���€°9…~Šó³dÿm ¤k)]~���€ph`¾uA‘Lú­Z*k¶ ýÕXk¯!ü��� l|3��� ,:ô€=ôÓ¾8[ß±Ð���!­¡µ–ÖšÚLkn†ý���.¾���Òä_ÊŒ¡Ì:µÊ–Cv(”Ö.���9­¥µ¦ÖÚÚLko­Á��� ‚?����‚ú~q¥L›WnY§W%4 PŠr���@ ´¦ÖÚÚÞùGkp­Å��� ‚?����Z¾¡VÞ™cf 8?Kì_@è���ˆ­­µÆÖZÛLkq­É��� ‚?����úðûuMÖí¿mÃ{���q¦5¶ÖÚvN59����øü���à蓟×˲2ëÕÅ#¶)®¥F����‰ µ¶ÖÜfZ“km����NøÆ���@‹ÖUËŒß7ZÖíØ5OtÊ����‰£5·ÖÞfZ›k����v����41yîËr›Â,Ö+O����$žÖÞZƒ›Ùkt����P����XÌ^X!‹×ÕXÖíÕ·@²9z����’Bko­ÁÍ´F×Z����Ìøê���€Å´ùå–å]ò¤Gk���€dÒ\kq3{­����|{���ÀoæeCU½eÝ®Ýr���@òÙkq­Õµf����‚?����ü¾^`=‰°kÏ|i•ï����ɧµ¸Öäföš���@f#ø���ÀðýâJK·Ÿ,—ÈÀ®tû���š“ÖäY¦,¾ÖìZ»���€"ø���À0gQ…ey`÷|ÉÏ����ÍHkr­ÍÍìµ;���€Ì•#����2Þò µ²x]eÝ€NÉ?\Xºt™L›6]fÍš%kÖ¬•Õ«×ë;vì :´—]vÙE†&ݺu��� Shm>{ñ–z]kw­á»´Î����™à����ùy©u¨€Þr¥uK’åÏ?ÊO<)3f|í¸}Ñ¢%Æ4kÖwòØcOÊ.» ”ÓO?Uúõë'���@K§µ¹Öè ÖÔù×i Oð����Á����òëŠ*Ëò¶“s¡¡¡AþûßÇä­·ÞÇöý4�tÞyÉá‡&gžyšdg3&��@´6l(“7ß|GfÎüÊèÀ¨´ÃâСC¼õÖ¡ÒºukAóÓÝüÑ~Ôöm���@f#ø���d8"`}eƒ9Ë%Ò«Mâ»ýTTTÈ-·Œ7B<Ñp»=òÆoÉÂ…Êu×]#%%%��€Èè0«wÞy·TUm²¬Ÿ?ÿcÒzëòË/‘aÃö4/­ÑµVwoÎËk Ïp_����Âý6ßæ6WsW€eß”ešû¦ìÍë²m“n+ÕymmÝt���±éóËå³¹eþå¾sdô¶’HÚéçÚk¯w ýìºë`Ùwß}dÇwÚëÖ¬Y+?üð£L™ò…|ûíì&÷Ñ¡¿n½õf:ÿ$€´&MúT:vì Ç��Ðrhèçæ›Çê`²²\2nܵiþÙ´i“¼óλ2uêtY¸p‘w¹:¢ûÈÖ[o-£Fƒ#¹¹¹Òœ>ú­Z~_]ï_Þo@Ö¯T����D.//W¿ðt{§òÍóÛäÙ<w›&inŸ$Àr°¹ý¶]ÈVù���€ ÷âÌ•òǪÿòˆm d@§Ä6}ðÁÿÊ›o¾mY׳gw¹è¢ ŒÀO0?þø“ÜsÏ}²xñRËú¿þõp9çœ3%Þ~ûùÏö/ï¿ÿ~rÅ—I$ôÄÓgœã_.--‘W_ýŸ¤šK/½B~øá'ãö…ž'cÇ$�� ýéð^'tz“N?””É“O>–6Ã~Õ××Ë믿!/¿üª”—WH<l³M_¹ùæI»ví¤¹Ì]U/“çm /õé”/Ç ÙJ����D®¥ê ���ÈpKÖÕZ–»–&¶kÎüùóàŒÙ A;Ë 7\'ÅÅÅ!ï¯Á ûî»[nºéV™3ç{ÿú·Þz[F%}ûö•d›2eªœsÎYÒªU«°ïóÁ%,_¾Â{Ù²å��R‹Ûí– þ”•+WJMMmÈýû÷ßVºté"o¾ùŽ%ôãýÂ[N>ùD9r„±üé§“å©§ž‘ÚÚ:c¹¢¢Ê[ý+'œpœ¤º?ÿ\(&Ü-¿ý6_âiÞ¼ßeܸåÞ{ï’œœæùjÝ^«Ûky����™'K����d¬•åµR[¿å‚âü,i]ncÐè<öØ–á$´ÓO¸¡Ÿ’’c¸‰=ºù×éc>úèÒô„Ø'Ÿ|öþuuu2iÒ$I_|ôë×GöÜs9꨿ ��H-úY´hqX¡åëØ3cÆLËz ýyäߌn6:éíO<޲ϗ_ÎT÷é§ŸÉyç]÷Ð>î‡6_€[ku­Ù}´–ך���@æ"ø���d°Õåu–åN­ÛígéÒe2kÖw–u:¼W$¡ ÿè}ÍfÍšc<G2õíÛÛ˜¿ÿþ‡aßgÚ´/ýCNl»m?Ie»ï¾›<øàýrã7H›6m��¤–+VD´~~¾1_¶Ìz¿Q£ök²ïŒ²,/]šºÝÿ<<ùäSrÇwù»%ʤIá¾Á^³Ûkz����™…à���ÁÖTXO´+Jì!´iÓ-Ë»î:غ+Z;í´£ì²Ë ˺éÓ¿”dÚk¯áÆ\‡”øùç¹aÝçÃCBÛm·´mK˜��DÏåŠO·F ÎØ544ØžKR’¾ö|X^|ñÇŸ#Þ´ËRs²×ìöš���@f!ø���d°²Mõ–å6‰=D˜5k–eyß}÷‘Xí³ÏÞ¶ç˜-É4tè’Ýø{{ÿýBî¿bÅJ™=û{ã¶¾öººú€ûþøãO2zôXcš<yJÀýô¤œo¿x(à~_~ù¥Ü|óx9öØeìØÃåo;Ê ãùç_”ÊÊJÇû¼ðÂKþÇ^¿~}ÀÇÖû¿ñÆ[rÑE—É?þqœ|ðaÆóÜtÓ­Æó�€ÄØj«­"Ú¿¦¦Æ˜wíÚÙ²ÞiØÒO?lYîÖ­«¤ úÜ}÷}òÖ[ÿî»ïê­ož6¦áÇ6Ù®ë|Ûu_'›6m’æd¯Ùí5=���€ÌBð���È`åUÖ«¸Kò{÷ªU«-˱tûñÑ®?ÖçX%ÉTTT$»ì2ظýùç_ Ðøh·=A¥Wç±Ô×'þDžà»öÚqrà ·È_L“5kÖ£ŠŠ*ùí·ùòôÓÏÉgœ#‹-–hüôÓÏrê©gÈC=bt=Z·®Ìûs5Ï3uêtãy¯ºê)//��_½{o-={öüü¼°ö/+Û`Ì÷ÜÓzyúégå•W^“µk×ÓË/¿*Ï<óœeŸ¡C‡HªyúégdâÄÃÞÿâ‹/:Óu×]cÔc>z[×ù¶ë¾©È^³Ûkz����™%G����d¬Škè¤8/±ÁŸµk­cÚ·o'±êС½eyÍšu’L n5j?ùúëo¥¦¦V>ùäS9ì°C÷u»ÝòÑG“ŒÛ;í´ƒtìØÑX—h÷ßÿ€ñúÔÀ;É¡‡"ݺu‘+dÆŒ¯ä­·Þ6B:Ú硇î—ÜÜܰ{îÜ_äŠ+®6‚DYY.9r„ 4HZµ*–¥K—ˇ~dŠfÍúNÆ»IîºëÉÎÎ��YYYÒ·ocŠÄá‡jt뫬¬2–kkëäÑGŸ0&'%%EÆ}RÉgŸ}./¼ð²DKk’+¯¼Ì¿¬·ÍuJ2† ‹†½f·×ô����2 ���€ V]g=™Q›ØàO"4=!“Ü4:ÌÖðá䨨ÐX~ÿýîûÕW_ùƒI°¿1Oôù¤ŠŠ ™4éSã¶WqÇãeŸ}öòžì+ƒ ”³Ï>C.¼ð|cûÊ•+åçŸû±ëêêäÎ;ï2B?yy¹rÛm·ÈW\&£Gï/{î¹§yäßä‘G”ý÷ßÏØ_»½÷Þû��š_ëÖ­åòË/1‚»¡è>ºoii©¤Š5kÖÈþó€DJ‡EÕúÍÇþ±‡~tŸ|XR‘½f·×ô����2 Á��� ƒÕÖ[»Íä$8÷Ó¾}[ËòÚµ±wç±?Fii+I¶üü|£ëúã?å—_~uÜïƒ&óÂÂB#|“ +W®·»ñdI¦]ìÆŒ-÷Ýw—¼þúË2pà@ ×´i_Ê’%ËŒÛÇŒ <¨É>ú|,êÓgkïïh„tîÜY��@j6lO7îZ£›O ºí†®5B½©äÉ'Ÿ–+#¾ß´i3äŽ;&4 ÿØC?ºî›Šì5»½¦���Yê ���È` ¶sÙ ¾4 S§Žþ ˆúᇥ{÷n‹ï¿ÿÁ²Ü½{wI&_Ç¡±c–wÞiìfóÞ{HÿþÛYö[·nÌœùµq{äÈFø':th'.—ËxŸ}6Y:è@)*jzroÀ€þ©É“'óÜÜ9üðÃî§Á¨‡ŽüŠ|��xþyòÉÇä­·ÞñÖ*_ùkµ=ºÉ!{Ã{¥R§Ÿ¯¾úZ¢5yò#ÜsÍ5W6‚T‡a0áncŸTe¯ÙÈý����à���€¤Ùe—]dÖ¬ïüËŸ>Å¢Äâ‹/¾°,ï¼óŽÒúôém„gæÎýE¦LùBÎ9çLKÀfâÄüwÆŽ#ÉÒºu1boùì³)òÛoóåä“O“}÷ÝGvÝu°÷õ0†ùˆÖ‚óm·Ý6iA&��؆ eò曞¥K—INN¶tëÖ]öÜs9ôÐC¤¤¤Äñ~ZœxâñÆ”)4Í6����H5 õ���d°d_-<|ø0Ëò¬YsŒ®?Ñúá‡,A"=I3|øpi.cÇdÌ7mª–O?ýÌ¿^»í|øáGÆím¶é+ýúõ“dºøâ eĈ}ŒÛeeåòÖ[ïʸq7ËQG+§Ÿ~¶<üð£²xñ‰ÔºuëyÇŽ��4¯iÓ¦ËI'.Ï?ÿ’ÌŸÿ‡QèPX:é“O>+'žxŠ|óÍ·ÒRh7¢hi]tõÕW4éö£t˜ÒK/½Ø_;¥¢dwí���Ú8$����2X^Žõ Þ# Õ­[WÙe—A–u÷ÞûRQQ!‘Ú¸q£ÜsÏÿYÖ ¼³ôìÙCš‹ž *)iìò3qâÇþõ?þø£,_¾Ò¸}ðÁI²CY<ôÐÿÉQG!ÛnÛÏ{¢«ñÿý¢E‹åõ×ß”3Î8[^zé‘<¬˜3.Š� yièçæ›ÇKUÕ¦€ûTTTÉõ×ÿKf̘!-ÁÉ'Ÿ(­ZK¤†*W^y™%ô£Ã~éä£ÛtÝ7Ùkv{M��� ³pD����d°‚\kb£º.Áɯ3Î8U²²¶<ïâÅKåÆo‰(ü£¡½Ï’%Ëüëô1O9ådiNyyy²ÿþû·ýuž÷õ-5núéçÆ\‡Ã9r„Ä›Û^«¦¾}û¿ÿÿüç>yóÍWå®»n—#Žø«äççÃ=ñÄ32sæL WûöíŒùêÕk��4ÞëÎ;ïö)LCƒÛN———KºëСƒœþy©sÏ=§IèçŽ;&“=ü£û¦"{Ín¯é���d–���±Jòsd}å–•µi]Ø>ùË_7ºÌø|÷ÝrÁËÅ_ ;í´SÐûëð^zÂÊúQC‡î!Ûm·­4·C9XÞ|ómãö”)_È?þñw™:uª±¬4ü®ÂÂÿíµk×J kÖD¼ÉÏÏ7~×:í½÷p¹è¢ËŒõ“&}&C† ë1¶Þº—ÑÉè×_“M›6ýÙêêê$77W��@|½ùæ;–N?yy¹F7œ‘#GËŸ~:Yžzê©­­3–×¯ß GyŒD¢}û¶2jÔH9é¤Rêï¹ÖV .4†7‹†/ô3yòÿ:s7 _wÃT£5»™Öô����2���€ VZ”mY®¨IÎÉ í:còKƒ<—^z•\uÕ5òÞ{xOâ,òžÄª2&½­ët›îcý¨3¾’I“>‘æ¦Cí´ÓÆmvã»ï¾— 6ËcÇF6ÌWÛ¶mý·ùå×€ûM:=à¶+VÊL”ÿþ÷±€û Ðßèú£"é¼´ß~ûóººzyûíwî§¡Ÿ“N:MÎ;ïByçw��ÄÏŒÖn}ú9òÈ¿I»víŒIoŸxâñ‹µk×ËË/¿&Ï<óœ¤ýÙÆŒöþ ×ÐôêÕ«å–[Æ[B?z[×ù¶ß{ïý’Šì5»½¦���Y¸����È`m ­‡eÕ:dTâOèUÔ×_÷ÄÊmòí·³-ÛfÍúΘ"¥Ã[L˜pq{ÿýGIs;ö`ùᇟdÞ¼ßå­·»ÿôíÛ[¶Ýv›HÆ8Y×½{W#è4eÊT9ì°štDúý÷?ä¹ç^ ø<Iž}öãv¯^=OŒMšô©ÔÔÔ·{÷î-á>|OÿëÓçØvÛmeð`k K‡!»ï¾ÿxO ­5¦Ñ£÷��?Ë–­°,µ_“}8`”<öØ“+­+N;íI%.—ËèYPot? å믿•c=)àöiÓfS0EEáwpL„Æš} {M��� ³pD����d°%Ö¡ÖU¹%YŠ‹‹å–[n”G}Â{’æ-#¸‰¬,— ¶§|ùå ihh|Ý©þÑ¡³zèa£ÓÏôéWá|ð‰Æ!‡Œ•‡~ÔjâškÆÉA‘vØÞšâ§Ÿ~’‰?–wÜ^,øÓºÃN» éïwãÆJ¹÷Þÿ“ï¿ÿ^öØciݺԻÿz£S’I¦th±¿üå0 —õqÅ—É¥—^a rõÕ×Cn <Øûÿ·È{"r¹|ôÑDzhÑcÿw2BQ�� qœ†§Òº!²²R³³Œ†Î9ç,#ó⋯$|ˆ®­·ÞZš“½f·×ô����2 Á��� ƒu,µž$Xµ1>'…Â¥Î>û ã*ôÇR¾ùfVÈûè‰ÁƒÊ©§žltÐÑ!î¸ãΔ ÿh fôèÑòÊ+¯ËzúÈ‘ûI44ˆóã?ÃyiWž7ß|Û˜|ºtÙJ.»ì9÷Ü ï¯]ƒþõ¯ë½ÓÍFøgҤόɮmÛÖrÝuWK§N%ýûo'ÿþ÷mrÓM·Á£O?ýÜ˜ì† ÙM®¿þZãÿ9��ˆŸ®];Ëï¿/ð/òÉgrÔQGXöùôÓÉNÝ„R…Öˆ'Ÿ|’ôêµµÜ}÷½þn†‰°ÿþ#¥9Ùkv{M��� ³ü���2ØV¥y’—ã’ÚúÆ«¢+kܲ¡Ú#­ \’L}ûö‘ñão–åË—Ëôé3dÖ¬Ù²jÕjY³fäiݺ•ôèÑCvÚi>|¸÷vwÿ}µÃŒJµðvøyõÕ×+Î÷Ýw£ÃQ4²²²ŒaÑ>úh’Ñ=çÏ?ÿ”úúéÒ¥³ñ³vØ¡RTTô1tx°§žz\Þ~û]ùê«odɒŲiSµ´jU"Ý»w—!CöC98ä㢈žxâQ£ûI¶|ù2Ù¸±Âè*¤Á ØßèÎ��âoÏ=‡Z‚?O?ý¬19r„1× Ð3Ï<'±èСŒ5RN<ñxIuûí·¯ôéÓ[î¼ó.ùí·ùoÛm·ãЩɢµºÖì>ZËkM��� s…ûm¾+Ìm®0æ®�˾)Ë4÷MÙ›×eÛ&ÝVªóÚÚºé��� b/Î\)¬ªñ/ئ@tJ¿kì”víµWCo��´D6l“O>]*+«ÂÚ¿]»6òÈ#Iii©´d:¼Ùk¯½./¿üª”—WH<hèçÆÇ›ËÜUõ2y^µ¹O§|9fÈV��� ryy¹Ã¼3ýB¹|ó¼Á6y6ÏݦÉcšÛ' °ln¿mr,ã,���Ñzµ/´,/.«—t¤Ýo®¼òrÉÎÞr˜£zè¿��ÐRµnÝZ.¿ü#ðJNN¶\|ñ->ô£txÑ¿ÿý(yöÙ§äôÓO–þý·•‰Taa¡l¿ý�¹à‚såž{&4kèGÙku{-��� ó0Ô���ázw,ÏænY^°¦^úyO–¤áeNÃ~ä ��@K¦CjŽw­L˜p·TT8wþ)))2:!îºë.’I4¸£ Ò–·Z«›i-��� ³ü���2\—ÖyÒ¶8[ÖW6ËnÈÂ2ôiîÈÀ©EÃ?yòàƒÿ•ÜÜ\¹ôÒ‹�� ¥ÓðÏ“O>&o½õŽÌœù•,Y²L<·tëÖըƎ=XJJJéKkt·©É¿ÖðZË���Èlá~“ï s›+Œ¹+À²oÊ2Í}SöæuÙ¶I·i_Ú¬ÚÚºé��� *Ÿü¼^fü¾Ñ¿Ü»C®ŒÙŽN9���@ªøð×Y°¦Î¿<´o+µ}[���¼¼ÜaÞ™¶Ž/ß<o°MžÍs·iò˜æöI,›ÛoÛÛfHÃæý����âmûnÅ–e=¡°¡:äñ���€$ÐÚÜúQö���@f"ø���À" G;k‡Ÿ¹«ê���@ó³×æZ»3Ì����Eð���€aPÏËòwKj¤¦A����4#­Éµ67؃n?����ü���`ØÙ{ò uQŽÙíñž`XV'����šÖänÓ(¼Z³´…ö���d.‚?����üvïÝʲüí¢ÙXã����ɧµ¸Öäföš���@f#ø���ÀoHŸV–®?êÛ¥tý���šƒ½×Z]kv����ð!ø���Àbx¿RËòÜåµ²xƒ[����$ÖàZ‹›Ùku���� ø���Àbp¯éÑ.ß²nêïÕÒ@ö���H ­½µ7Ó]ku����0#ø��� ‰Z[–Ë6¹eúÂZ���xZ{k nf¯Ñ���@ü���ÐDÏv2´o+˺—ÕÊÜUõ��� q´æÖÚÛLks­Ñ���ÀŽà����G£¶o+]ÛäYÖMžW-ËÊó ���H­µµæ6Óš\ks����pBð���@@cvn×dݤߪeCµG����ÄÖØZkÛ9Õä����àCð���@@]ZçÉ¡ƒÚ[ÖUÖ¸eâ/ÕRU'����â@kk­±µÖ6;d`;£&���€@þ����jçÅ2|›R˺µ• òÁÜM„���€iM­µµÖØfZƒìY"���� Á����!èßFõ,¶¬[µ±AÞýiÃ~���QÒZZkj­­Í´öÖ����B!ø��� ,c¶—ºYÖéUÉoý¸I–•»���@ø´†ÖZÚÞéGkn­½��� ����„í/ƒ;4 ÿTÖxOXüP%sWÕ ���€Ð´vÖZki3­µµæ���€pü���=aöKMžW-_,¨•šÿ����Ž´VÖšYkg;­± ý����ˆTŽ����@„tèâül™6¯Ü²þÇeµ²d}½ìÕ·@z´æ:���Àgñ·Lý½ZÊ65MÊߦTFôo#����)‚?����¢¢'&ÚçÊ;sÖZÖ뉌w¬’]òd×n¹Ò*ß%���@¦ÚXã‘o—ÖÉÜ嵎ÛØNö,����ˆÁ����QÛ¹G±t,Í•¿_'Ëʬ'2ôĆN»öÌ—]s%?[���€ŒQÓ òݲ:ùvQãö®mòdÌÎí¤Kë<���€h…{é­+Ìm®0æ®�˾)Ë4÷MÙ›×eÛ&ÝVªóÚÚºé��� Ù|òóz™ñûFÇmYÞj~`÷|Ð)GZÐ���-׆jÌ]U/ß-©·ÇyŸ¡}[ɨíÛ ���€æ“——;Ì;Ó±xË7Ïl“góÜmš<¦¹}’�ËÁæöÛvÁ¶þ����ˆ›EëªeòÜ ²x]MÀ}zwÈ•m;æI¯6.ÉÎ��� í5x¿ö_Xæ‘ßV×Ê‚5u÷ëÑ._F h-=Û���€æEðÇyÁ����2{a…L›_.ªêî£]€zwÈ‘mr¤ki6€���V´³Ï²òY\V/ ÖÔìî£ZåÈð~¥2¸W‰����H œ·ü���à7óòõ‚A@>ÅùYÒ©U¶´+Ê’6YR’ï’â<—äº$Ç{4@w ���$“vñ©÷~Å^]ç‘ÊZTÔx¤¬Ú-ëªÜ²jcƒTÖ¸C>†~vïÝJ†ôi%����R Áçm����4ñýâJ™³¨"è`���@K¡Cz ìQ,{Òá���HU-%ø“#����`;{Ozè´|C­ü¼´R~]Q%ë+���h)ÚgËv‹dûnÅÒ¥už����@2ü���4zD§QÛ·5B@ VW˵›dɺZ©­÷���.òr\Ò½]žôj_(½;ö���Ð,þ����h¾а~¥ÆòÊòZY]^'k*ê¤lS½”W5HEM½T×y¤¶Þ- n���’&;KÃ=YRë’’ü)-Ê–6…9Ò¡$W:–æÊV¥}����4?‚?����R‚ž8áä ��������áË�������������i‡à������������†þ�������������iˆà������������†þ�������������iˆà������������†þ�������������iˆà������������†þ�������������iˆà������������†þ�������������iˆà������������†þ�������������iˆà������������†þ�������������iˆà������������†þ�������������iˆà������������†r€ŸÇã��€Lær¹ñC} ��2õe|Q_�€LG} 4Eð…c��€àBÕKX[Q_��G}êK��€à¨/¦þ Eã@�� ¾ìõU¦HS_��Äõ%õ%��@<ez}‰ÌDð-N¤Ë\��8 ç Ø\KµÔƒhêK��€ø ¾lD} ��Ô—@#‚?h1�‡s`ÌÁ3��€•GÚ6×·K9€¦¾��ˆêKêK��€x¢¾¶ øƒ´çôìCÞív ���‚sª§²²²îc>XN÷hêK��€ø£¾ ½Î‡ú�� ´L®/;‚?H[á0ë²Óºp/Øz��€tèÀ6Ðzû ÝÏ·¯ÓÁrº@S_��ĆúÒŠú�� 6Ô—@xþ -;hö} ërCCƒ±¬·ÍëÍû�� 8ß•2¾`]ÖÛ:ÏÎζ¬×ZË©…nª<S_��$õ%õ%��@<eB} Cði%Ô³Nz°\__ï_ož›ïèv¸Ï ��ÎBÈ:]ùâ[ï;áÛGç999ÆA´<Û´Í‘jÐÔ—���ñA}Ùˆú�� >¨/ðüAÚÔòV?¸õ@Y˜uò­Ï–RµX²=ËDêWŠ4¬óî\á½c­Þ[��� ï¯+O$«Ä[hµóIl% ®®Ríî! žVR[[këÁ³Nz è�:Už#­/×7dÉ5Ùòç&—,©öȪj·”×y¤Æ­'h���Ð’0?Ë%¥¹.éT%Ý \²u¡Gúä7HÛlwFÔ—õžlÙäΓʺ,©ª©öÖ–µ º?ß^��DJ+B-ó²E ¼5fQ®Hq®[ ³j%ÇÕ–õ%®pÿźÂÜæ cî °ì›²Lsß”½y]¶mÒm¥:¯­­›.h‘]%ã»:¦®®Î˜+—§Jг~öþƒøA¤n¡��� r{‰;o'©to/W‘±JžsssýWÑ8,7×t$õe…wöMUžÌ\× ó+j�� ú•dÉvÙ²[Q­”d7®k)õe½Û%Ý…²¦R¤¼Z���¥"ŠEZem’œ¬ÍM$R¸¾DòäååóÎô‹ßòÍóÛäÙ<w›&inŸ$Àr°¹ý¶]Èëþ ¥9]%ãóZ˜uÒåW…”¸¾©š&\��Ð\¼%{Ñp©ðì!õžã€Yžuò©m?XNöÁs¸õe™;[>Û+WÖÑÍ�� ™h©xàV¹²_ë:i“ÕÖõeƒäÈÚÚBY¶Á÷—���ÍD+Å®­]Ò>o“dK}JÖ—H.‚?ÎÛþ .œ˜}“(×ÔÔøÇÁn=S²ª>?���©Â%î¢dCÃÿøÙùùùþgßd¹G‚ #©/'UÈkKë ü���¤-è–#û—T§e}¹¾¡•,ZÏ·—���©B+ÅžmEÚfoL™ú̓àó6‚?ˆ™ù Ù<¶ÞÖ–¸zЬó‚ì5RX÷>Cz��¤ªÜ^²)÷`©nè`´ÌÕƒgû®žQææD<‡[_.kÈ“– Cz��¤(ìØ."]³kÓ¢¾¬sÈâ¹ é��¢t°­ê$×Sݬõ%šÁçmûA³yÒ¶¸zЬ·[åü"9•¯ ×É���¤:—Ô)ëûÆzðìkëtõL¼žÃ­/gWçË# èò��â´\<³W¶ .¨Iéú²ÒS,ó×fñí%��@ŠÓj±_{·»*›¥¾Dój)ÁŸ,R€ïàØ¾l?hÖ+gJ³gKNå+Bè�� xŒÚMk8ßZÛÙë=ÿ޶娟5‚úrJe¡ü÷OB?���é@k6­Ý´†KÕúrƒ»•Ì#ô��´fÓÚMk¸dÖ—@<üA³ 6¶N:vmm­ñAÛ:gŽdW½+���H/ZÃi-§5ÖvZã:xV±<GR_~QU$/,®���¤­á´–Kµú²ÜS* Ö ���ÒŒÖpZË%£¾âàšU¨ƒf [?Xu^šû+¡��€4¦µœÖtæ/Þϑԗsj ý���¤1­å´¦K•ú²JJý���¤1­å´¦Kd} $Á4›PÍš¦Ô6jš¦ÌÏZ%9•¯ ���Ò›ÖtZÛi§µžÖ|ñ:xޤ¾\ZŸ#,l���¤7­é´¶kîú²VòdþZ¾n��HwZÓim—ˆúHŽD2ìÍš ô}˜7LaTl��€ÀcÔv¾“$ZóÙžãöLAêË—Vf Çä���éOk:­íš»¾\ZYÀ·—���-€ÖtZÛ%£¾â…àš…ýQ?,ÍÛtòµOk—÷HÝB��@ á­í´ÆóµÌµ0›kCÎÁt$õåg›Še~…[���Ð2hm§5^sÕ—åÒFÊ«���-„ÖvZãų¾‰à’.П9%©­ÓtÊͪ”¬ª���-‹ÖxZëùê¾PWÌ;xޤ¾ÜàÉ‘×–Ö ���Z­ñ´ÖKv}évåÊ¢õ��€Fk<­õâQ_‰FðÍÎéjm›¦óÒìo„!¾���Z¢ÆZÏ\û»j&ÁêËÏ7æ3Ä��@ ¤5^c­—Üúr}}1ß^��´@Zãµ^êK ÞrH¾q±u®-ÓtÊvU‹kÓt��@ˤµ^vîoíWhÔ.—˨ ³²²ŒÛ±pª/«<YòѪïöC* ��¤ºë´DÒZoÿVYR¼¹þKt}é–lY^.���h¡´ÖkÛ6Û_ÿų¾≎?Hª`ccû¶ûZ¥•æþ*tû��hÉk>s hÎXÙ‘Ô—³k “Ÿ«Ñ'Œd��Hu)\ßèÓ5Ö|É©/«\%|{ ��Ђi­gÔ|1Ô—@2Ðñ)Á>>¶~Œf×ý(@"ñ·�ÂÇÅ H”Æšog£ÌËËóׄñ¸"Û^_~µ>íwS °à‹��®¤^¨FIÐkКoxORê˵U(��´tZó•Æ¿¾â‰à’Æ~"·lQS‘:å¸*Eê çµ� ¹âñ¹Ëqyk¾œÜJ©w—øÛäšžíÑæåHêË2wŽÌ¯ˆSð'Î…��lñª?b:ÙáôâpР5ŸÖ~m¤!¡õeƒäJyµ��� …Óš¯¡0×[ÖG\_ÉBðÍÆé@ZÇFTE9˼' à�-H°ÏtŽƒ2›Ö~åuÛµ`vvvÔÊÁêË?ëò¼ÿ!øcQ’˜p…��ˆ—è ò`5NT';ÌÃA‚Ö~ƒò7%´¾¬‘B��@fÐÚ¯H6Æ\_‰BðÍΗˆ4®”1œ=’+Ë™)Þçĸ‚�+^4ökŽ“2Kcí·Q jMèt¥L$œêËE5YUð'ŠZ"ºúƒš��4§hj‘൚SMQ}ç»5¡Ö~ƒò= ­/75d ���2ƒÖ~EÙñ«/x#øƒfa>ð·ßv»=’Õ°ŠS"¹Â=�Ð|B}Gÿźù1-œÖ~Z«Cý[ U_.­‘ÈDX_„_DX·Pç��€æ° T§®ÛÌ5SØÇ Q€´öKt}¹©^ïO­�� ´ös»b«/D"øƒ¤t"ľ^’Æú†u‚–-ÚsXц|8g�ñÎqLÌWù ! Là«ý|µ }€æ`õ@ úrUu˜Ý~"(B×%a<VÔµ Å ��ˆ¯€uz¨º£Éýœö^Ó¹Â;¸ð|Mùj¿DÖ—ÕuÔc���™Â¨ýr#«/ !™þ Yùœ}írýÜ‚–)ÒsTžˆN¾IL8�[„sPìc3ØÝퟷ‘�Eq±/ÒÖ~›ÿŸúêÂhÛåª/ËC˜ ³ˆ)ìâ¾q©E¨g��@(ê«HjKæt¿ a C@a˜k¿DÕ—µ ��€ a®ýb­/D øƒ”à;hÖ”¤qÛS+hYâø ÷ñó�@t¢þÒßû>ò¹" �q<Õ‚xk?ïáò–îqøûm¯/kÜÑrÌ`kDòç£~��‰K­±¹TÏøkú ᅀ �اfó0_‰¬/Ýa6”��@úÓÚ/Þõ%Ob<¶9Z‚x…t<žèïkì#�€xhrínÃy…Š´Õ?៖$‘5 ï í@›c ýxÂz¼€÷&L��Ðl\ë—� Ç c(ÊályºÖ—��€Láq¸¤‚?�*œÐOðqÔ£¸Äöœ�€¦Ì_¸úµ|}è ÿvó6i"Ü«| ÿ &Q½:ðãx_ÇÇ‹¼ ‰:��eñÜx· G’þŽá~Ç¡ºœ@apP���� ÃüAÒÙÇÃ6¯GËk—çseö•È;Ôó��¶Øòݼ'È>›¿ÔwÚ&Mï((�Dø'³«ý[ˆª¾Œ*ôEà§Éãx‚o¹!Æ}�@f §g »Ø×å²×".Ǥ“š.Â�P´áŸ¤Õ—���ÈÑÔ—@¢üA³ã€¹å‰¥ËO¸O˜êµðÏ�bãrê˼%T(P�(œƒ&Â?-OXC;¹oˆ¢¸oà@Oð°Oˆ OTÀ5}\��€¨xœ*öÂv¿&A ËS¸š �EØý'ÄAABëK���dœXêK Þþ�Hºp:öý<Q?Ž„|-|�ÎB¸8m¶‡ì! §!Áì p»ÿ˜ ÿ ,‡~büXW»OÓûJÈ×��/Îý-››†qœÅezœÆ5›—š„|,ÇM@NG!N°pP���� üW¡/°Ö øi²-Œsg¡º E6’†óÎ$z´T_ª;osWëÚ×5íêoëä 9]ô+M¿ä·¯Ï÷ü™!êÖ¹‰ ý8~†}BýaŠ9œí���„«Év‡ÐM° ®,! à Ë`atÿ‰gø‡¡����¤3‚?�â&œÎ:Áö7ð(ì£óPÁ @Ïêµ…Âø�ÒY¨ï¶¿7w9¬w ¹‚>O“€í^¡‚=Nû�± ú‰5ðã°_“Çj²Ÿ,H< ó��âÅVo¸Äå¼ÝR£7 æXês§RÅtÑ@ �Pèî?„���� ƒüñ ý„ø±Þö8ŸW“ðƒ@ÏËI4�™©I×qùÛB}lÝ}Lß×[o7 �EÒýÇü%?]–€�c ý„øqxŒ€"‡šÄCÇ�� ¶Â¹IbîÂ#¦c‡Ž=¾ÛMšõØ/`�(d÷ŸÂ?ÔG����2Á�Iiè'Tà§é:óóHè�’Ó06�ÐRìŒo ïØ¶y¬Á ¦]}Ë¿å$@ �Çö¡‡õ |…/áD/DèÇ1Ìc»Ñ$8ìã‘À q OS˜��€8r¨-\öT}ãÊÆE±.ëv—C§I(@�¨q»ÇºÏæî?á†���� ÓüA³iÚ‰…“é*’n?öŽÿv€ûØÏ“ٷه÷r»Í¤4姇ÖeZHhIœ>¿íŸs¶ïù׉§i‡qúFß)8�¨ûO´á¤'§1ÜÿǑ֗Aÿî‡ú‰8ðcûxB<ŸÓërØ�� .ÌÝ{¶¬”Í+7ïÒ4ŒcÔ6› ü&! ëC7)k<bm>ØüØá†BՋɬ/��ÐòÅR_‰BðÍŽæ–+–ÐO¨Ào/ü£Ü·eÿ~âü¼öÇSM¬q8ñÆo�-IÓ s·Ÿ-!çáµÄµåóÛ²vOs�9uÿ 7üH¸û!5ÅR#†s߸†~‚~…}ƒ>ίÁºóK��ˆIãÕPÖUF1mþÒÄeªI6}lÁœ&! ÿzÿClÞ_l›ØðoŸhñý%���쨑Jþ�HˆHC?Ö®=ÖNMÃ@[–I„…Ä90d>óöPç‡ïFø@zrúèrú<tY/êݼnËÕ¿ÖïÝ‚@.ßq°.@Ûò–çö}i,ücÿø\Fl¢ý8l 7ðc}ßY·[¶y‚¼Nûk��ˆ’QK7))\Ö:à ò‚üA Ó°_æÀþæ›._íÔ$�ä²Ö^Š!ü����™Šà€˜„s®)Ð>öÐ?ÈFà§ñþq7=¿æßÏm[vz-M—Ã;yÆIf�é(ÔGœ9ijeï¾ÿ²¹ûSÈßÁgó`¾.@–PG,‡þ±|ß/?—íû*àßû¡K—ÿÜØ1‡{Ä!dz¬&ë,/É!dy-!Ö��DÀãT0ÛÖméêi ¹ÌA ñwîñ€|Á—e÷Æç{~ǵ¹†òu 7üczL¾«���¡þ�ˆ»`áxǾÜäbøÍáwÓÇó˜N¼™÷÷ ýå_vx\óc;q…±O8�éÆår…ü\3‰î»wËwüæ/èÍËâ_ïòÚ'öð_ð#zAºè ýXÖ;|Äãø1…‚š„}<ž×v›Ž?�� \N]s<¦uæc ïë´yÛæŽ@ÆzS' ÆÃ†- {øÇÿæ’Æl$ücyŽ����d6‚?�¢Îy&§ÀM8¡§@yH/ßv·i_·¦„ÌÛm!"ëë2_Ñ/A·@&p Îü?{l¹r‡‚+ìñŒ5×­;ßË™yI‰ƒ8H–(QO!Ú²,³-·l‡ý"­E[í_v8^w„tG´Õþëån?Ê´Ý–´fѶHQ²DJ$ÎÃ%ïPw¨[·¦3ï@v~+‘Ø lì}öªê ë«ÂÙ{‰D"‘�V®üò[J•·ëê}*I@ö·OèÁº ëÿ˜ïøäùåƒ{ ÿø¾‚y §iô4òÍ.¤Ÿ²Ê.|¦~¼ãU³²¼eûDì@ ‡�Ëß)ÙÑ>éß'Öd„ í©üH@™=d @T$�QæÛÁ>%ÐDè¯ÝÈ?ãNùäé@ ‚Ó!þ‚CÅ4BÍ4"Í,Òˆ<n,,Å¿Ôo3é,ÏÇSr¡b>~šie’q4@pÚ¡T™ÔSÞ^Vð)<¿??CÁçAËÉ;ßÃPQ˜%‚³?Èó¼§§:´;ùÇ¡àïö‹¤ŸBš*ÒO…ÊO9¤—vJyߊcéI㈼=©ªÜ@ G)´—§øã“|rÛ^ 9çãT€| AD•ê?Uäoë.ä@ @ 8½â@ ¸§O˜×»’~0X Âð=Ñ'¾ªO1Gry•óöO~/œÉ8š@ 8m˜Fô)o› í5™HåÆÎûÕ}@RvðÈ<·Ã”Bm‰@N˜‡ü³Õ8LUû©NíC%Ã`Ò®TøIú]Ò½Žiÿƒ<ݘ4…tT2^An¿ê„2 ^ Á4¨*ÿð]å6¹¿^yÛ(ªSÐ^¤°ÙfvOQ(SñÉvgòGô)xöV¹z(Í é%ª?@ àôBˆ?àа›Úž‘®Þ+I5‡ñb¥ˆìs'4¥¬ì“O.£ñà“JùQ:~af™ÁéÆñÇwª—È>.ý4{†‚èËÒf ø;“R<»SR Q- H‡…URJò™5‘7'É3[pè)J;T"ý8¢ŽGúÑ>9§ŠôcþÇ[whý³¿G;_ý3ݾVIØAÈ;GèI’$_‡E³”N¤«ZW8*Þ³þöIrœÜD@ GÌ"·Ìz¿ízû¶EÙvðóp¶‰UõL'Ò}=𦥧>@gÞ÷aŠ–Ï‘¥ðÐX¸Ç¥u} ÏU“‹‹f1ù‡DõG @ * Ä@°/Ì;>4ôãM’Ÿ$ý$é'±„¸x@öÅšúƒ„TР¨¶@)a0,°N£lèMgª¤½cª"¨ê&hÚ ‘@ o¨ùVW)þhïw¦É3Þ>AR,ùå6 RŒº4 ¨Ùˆ¨^#Š“ñ»€ŸáZåÊ>™¦ONꦇüò!3|U˜KíÇSÛ)&ŸBúñHAÒOj×ßüÿ‰nüþÿNiÓ,øíu^’[ü{Î-å¼§‡\Ý¿r@ ‚ã…*ÁÁ'—íƒ*û­÷÷söJ†ü9ºöí˜åú'?N—?ü¿ÒÅý­íÐù‡óP3È?äø=šü_“÷ÄÆ@ § Bü‡‚ij?Õi§íg >$†¿ª?¬â“ÚõqlއšjEáY³GƒÒ$,’Šá§D8òŒgçÓ”N(Ÿf‘ ž '•·¶ªü:&õšØWy*ïSeE#óРožãÃÕ"ó@­ÃÛ?VkãglÀˆüðJTTôñC~•±ÛD_™,¨„7Xå­,n÷I?UY¸ï:Ím‘tÔ§—þ÷ÿ;m}ýs¼©j`Í¡<ãäÀ}úßý7vþ,•ŸY¤Ÿrz@ ǺҦ™´ ¦Ù$ÎÆpä™ßÛÏ©Á6)+9‚²Oâï&ÝßýÿR÷ùoÑ#ÿëÿFA­É KèØÖRžÝS,/gØ-4ÒKŒ}@ @pÊ!Ä@p×°[ˆ¯¢úÏX݇gd»Ø^At–Ú«—©Ö¼LÍ…Ë&eͤµ3ÉÈsM oMåùLn8Åüž T î6xx?1mâ¬í`ªò‡¢9VS©ñ8Š?ÓÓ!¥IŸÂæmJ†·©?x™›kT‹…!R–[&*KþQªä̧¢??×Ò¢î#Ø+vSûq\]ÆWûñU~2Ò@/~ô£ï~¥0X6ëZÝÞ«ßÃeÂNy€­¬TVráÃ\Úò @ ‚ãƒÝúâóôáñÝ‘v€*ûÁ­‡Ýàl ·ß´´åï D_ýÿ zâÿüÿ"þm�¯tÛ—Šª?D]ò«âìˆHlÁáB¤@°Ä·"î7„ø#î)ÊýdGú±cecå·pØ/¦~†Z‹o¢ÆÂCTo]&ààî`"ü™'ù]¥ p? Ó$Ëý‡³Ò ‚ÃOZÀÀ@̳|`žÛk÷oÐæ­-êwnR»Q³aÕÜð,WÙ'µõø»`by˜¯ÝC~U¥¦BWÍŒ¯0T¦…øÒãõ9éÇüyéãÿOê|ï«ïÅ ¦cú€œkÇå_@™Täî9w¬òÌ}—Öÿ=M@ ÁñÀ~í]ß.mà=.OGèqÊ‚Qñ:„ñšFú™¦JˆtN!6l¥‡ÿÁ?g›ßRy(ÿv ùåm±ß´¨þæ‡Ø½@ ¸[Øï;Fü—à° Ä@°gL’wôômSÒ8²OUÞVá'eÒ„Gq@qR£¾D‹í+ÕÏc/1ˆî&ª$Áñ™$ F£|àð¨å­×뼸ßàîÁ=ç'IÆÑ6ÌMx†×‡µ £&Ròs~Ú£\g$ 'éV¥úS<¶Üã‚ JígÒI?_ú#Úøâ§&Bs-//Ó¥K— ‡¼~ý:íììˆ;åÙ÷�Øð.sy–‰?n°ïf÷~ögî—ÉBeE!y? @p|á“nüw|Õd?¿ ]ÇlG8rowøŸÅÅENÛï÷y»O:vé`¿ /ä ?‚++l¥Å7¾“μóƒcò²>¢]É?ü1êà´C>@ 8.˜õΟ@ Ø „ø#î ªÃST“†|µ„ôÒ<€e¿'©¦Ql–Ä zQ›ÂÆ3`¼`,7;mÒ‘%}ûÃGYM�Ž>8î¦Á„ÜÌÀûe ÂÉxÒã²S×ÍÎ< ðgˆúp3>³áœï�®k­Vã6=À9ׯÜû~øŸ*Õ¬ª´îZûI!dM…g·yfaÛ\ÿºy¾÷ â>.’|ì.: V•×ø·t~{‡1ªVû™Ë†ðH?ä‘~°îÖþÿ*É;øjµZÔëõøw»Ýæ{ÚWÜ)qðéH?Ø×ŸV Ô!o÷þÜ;Ðûa<Ü@ÜG@ o¸> ëcù¶y¸¼Àfp—(+ÂvM2i0äý—6ˆÛù?žÉÏ·oߦµµµBynê?ÓêühFèqj=4&ÿìbŸX¾Ï,Õ™pšpWH>â\ÁAqþ–*"·@ LƒÁ]GUH(=5ÄWi[>£ á¾à¶ rƒ‰}:©—wæpòVàþ€%¼;vüaF SÝ>P×p¼º^8cQßG¡àf‚–Õ¡šÍ&Q³±½½MwîÜáïÎq¾´´´ë~xnllÐúú:· ´‰+W®Ìµ¯®œùŽ4´ñDZ–Xp¨Œh�Â0`šgyÀ„Î(ЫĤ2b‚Icžé;–ªùeé…ô¢éᾂ¹0ÉJž©öã“~|ÕŸîw¾DýWžŸrKÈÁ»ßñœö‰‘Žœ”gà;”U„Üv‚ðéfç»A8?¬†?(çàBu@ 8¾pDØnòo_8{À-xÿûa»ð [¾Ûí²Ýï+Î^Ç‘~\ý½rz÷ù"?샴N5È•kpý*ÛNí7ü�©á'ûŽó˜¡ú3µs 858°+v°@ î6f½köi»øï?! ‚2„ø# 9IÇ9sJÛæéS³êOªYñGó§]tÎ(†Ÿ-8ÂÁææ&ÂâÏÊÊ ;wŽŒpFÂQBHyPŽA7€é;,«°õ“y€òÀÙéH4(3Êà<ŽŸÎi 8窛!éêÀÍtÄÀ.ÎpŽÕÃ2È]X(<lmmåå^]]¥ .ðzœŽïÊæfiNÆÝ)NøÐXçÊ} ¾0È ‰s gΜÉëevõ Î&ÊìËÎ£ÌØeõÉ)þõ8Žpç…zÁµpŽ.Ô»Oª€zB[i ê ×÷#�•‘ªºÁµq*An/ì‹65M1åtj#8n¯×eâN½Qç}˜àe=÷dŸß*Sw³‹{7ð³>H)HCÒÁt%ŸYª?U @åu2& ˜½ËV]4fô8Ä—#u¿ýÅ©ûã¾Æ=„ç³{–Ñ|¢ÿ\Æý…mþsÔOïfØ»0îXå™þj‚ íŸØT@ œ”mcßðU|Š#þÀŽ@Ãms}]GLvv?ú™®/éOðð‰ÆÎ~¹yó&ûЯq¤$WFüÞùæç©ýúïw4òË&«3*šP-¢< @pÒ±/»uŸ¶®&±‘@°w¨yl“ªwÓ–¾m%€Á]Å~Ô~Rí~ð=ßÇ0cCFy³ÆÆCç~λgŸ}–ž~úi&ÊÀˆÁÇG}”Þóž÷°âÈú¾qã@,pŽÃ‹/2ÙÆ…sŽÄªPQnÆáaĈ^xUR@VyÛÛÞF¯yÍkxœ›Ï?ÿ<;,q\Gž±D‡+ظ² ÜX‡2b€D �|?,CÇqŠ0ׯ_g‚ˆ?þ8={–ëøêÕ«\Ÿ® (7M�°pìâ·Slqu¢‡#=¸Ž(#Ž…öà®#ŽãÈ;¨+”Òï�ÊþØcM\[8qmp.NA ùãš`ÚŽ».þõ8ŽpJINj@9œë4âêûÖ­[ù=€úC]=üðÃy{ðkƒk„û�m ßÑÐÞ‘Ú êµH¢ÑùŒ_¤E™_yå.?îu\Ësç@VbºÛ‹øWêžÿ.LB ÀÑŸR…ã¾ï Õà ˜´QhªÚOqŸ1é‡<BPÿŧ§Ï8GÀsðCfú÷–?`çÒ”Ó|¸õn€ÎíëŒÜ:F¾}@ 8ðÕvÊ6ƒO*öCr9;6¿ëC¸mn¢¶£ß»ß…ƒÍïÈÆ~9\^øD¿ý ·ObÕŸ—¾;¶³2»ŸÉ?Jg„ýœío?¨¨ú£'TA%ðIÆžm×9Ó„Ü#ö´@ œNìfoÌz·Ì$•ß+sÚ5B�BüÂ<ÜyúÁ9(Õ¹úC>#ÍÿžçUž¹.FÍQ€#€t ƒŽ€O¬yÄ@Î�™�ÛÜ`$ˆ 8eE¹áŠõ�‡‡Iî€STàÔùÄP7h‹²Äƒr9âÒàÓ©Ò ÜNíÄÕ8ײ’Í^á¶ q\»v^}õU.—S͹téRîÌÅoœ‡ b êepj.(·SrjN}ÉW×Ù\¾NMÉ9zûŽ:weDÙA:r„0·íÂ9ŽsÙ)ãà<}%”ÿ8p^Žüƒóp~ <áÜ}²@Øõ 8…GFfíëfð¢ŽA$C9PŸ¸n Üt×�@:´/§N‚ëˆg9ëüðnšÃ}Y¾D6Ð@j"‘#…ºçzUŸ5ðÂ}ÙõâìÌÂX­g¼j;¦Bí'ßâ…âµÓó0iÜso|Rà?§aýuþì}?>qÈßÇW@p|±›_ÆW,¯sª?€³#|U[—v ?Œ·Srù•Õ†ªBºü™ü¿q‹,‰ÚíÃ)Æ2s«þÐxŸÂw!eœì‰\3¯m˜Ç¼‡y àîcɼÏöª¼ªÞCS휲tÎr‰ŸG 8½â@ 8ŒÇÂÆ3±ÊÛg©ý¸}-éÇîo•²ßÚ7Vì±v³ÅÔX Bp4àHp‚ðá�RH? y€Xà~ÎU–üÞÙÉI Ë@µÄ¬ 8UšóçÏÓaeC¹\È)i@ª¹|ùrN´A™QV” Ä8>]zGz�qeƒû¸ç…pg‡äŽçž{ŽV\1¿ÓúÙç�"àœº.œÎçìÈŽÒ ^Áé^õ‡2»0aîœ\£m œ�~C½Æíƒ4øÍá¥N�ÐnܵC{Bˆ´ÝàÈ;€SäqÄ:\ó»ét´÷n‡ï…ÕÕ3Lúárع¸¶BÓ'î+žÙ‹[;/J©¢ÓžéÂÎïNT(e!ì=1F0¡ö£Ý¬ùÉ_n]:èÒ~Quoúfå_å}QÖíãfÚû¤Ÿ2±H ÁÉ@ùý>ë}?üã>íà«ùÊ?¾rP©Ø­óIǾÒOà©6'ýΘð£u1ä—Sý±+©þ”CùŠ?è¤bîþëŒt»}æ›Ð(ä@ 8-8è3¿lí–†ÓyïªJŸÏœÄ$ñÿ§Bü{ÂÞ&ÚÌ)«›|\þãÙh(÷øxy«Ìˆ±Ó¿G�pâ(ã”J@:�aáÁdR~ €�ƒß hø38AÞp*" w 3V± ×ý°]@žAYœSÓMp,œÃC=ÄD|Çâ¤ÊÝlHìƒô8wfpžÈÏí˜a¾\Yq Aðéfc‚täÊ‚cºpcNA eÁ¾îz€Dã–PÏ®ìHwPÒ+®•?píHaX …öáB‹ù2ð(ˆ>Xðçæ‡ÀB]^€k+.ä×qÎ ×ÇÛœ£Üµ½Yíõ„P`¸ÿPo.¬Ú.®í´a.’Î9óñÝ—ï/ÃÝ#h?(3®%öE»Äu·a¼LùC_…÷¹i ¡Ï«°Îzc‘¯S»*àê]7¤³+(£ÒFñˆ<ë iˆÈSÒ>Aˆè@F¾{»6 Pj|x§-Ü•‚ªÂ{ùå”{D ‚㋲]³×YèŽ<ì“wœýáu\¿Àõ×|µAÀõ!üüÊá¿r›Æí—~ÜŒöŒôï3ùu™Õ¯ÇæZ!Zìšã»Iø™–÷\Ç@ ª°G²O9*O€tëiô)›H 8â@ ¸+¨˜(_XR­KëJ³íõ8´—vNé_yÀy÷È#0A㥗^bå@ôqä|ÇöYÆç,e·D†Ã .$™#Jà·#¯¼öµ¯Í~ü‹~™qnŽ�ᮼ AÌ"PÌ äâˆ2ë¢N„  Ç<{ö,osªC¸ŽE¨A=È]…ðé“­ö §ü„²âÓÕÊàÈ-n›#ó ~QVGn‚’ÏË/¿Ì$´%`VûÀoä{œáˆe ›HãÚ®“#òLî-ÔïÕ«W™øã®®+–i¤(Ô›k3h÷Ž „ßÓŽçÚ¢SöB[|Ýë^—oËø³rsÕr×sLJк¨êc7Û€±ïwR@P‰2‰g—´>¹f²Ýò·Ü˜)‡´À½3~_°ÞÕÔC÷ÍBv™/¡sñ€,—•#péÌ÷ÄÙX,›å{òYV…+ž¦žpE Á‘Å<ïói¤_ß~÷mÀ||EA×·õû¼å<Ë!Ä*ÓjðCE²P®ú£2 +÷C3*`YHp\pÎ^È>S3ÇñÅvC®^>=Ì$ûLñu»÷ÚTA BüûÆÔ¤‰tcbO™àãÿo/“‚¬‘#Ýê£G�i¤9@"p¤lÑã0$3ËJA2oxÃrƒ §¤ãˆ48¦Sñ©‚SJqj9¾cs7¥–½daPÇNõÇéÅ‘_éÛÛÝoÀ)äà\¡üƒòãœq½£¬¨+§ äœ�§öäêÖ¥Üy¹spuæÈMhKóà¸+þ�e%ç4Ç5œÕöa ª?NqëP»©÷8²öÙ@]ºë3­M8rÑ45¡0¬Šg=!š’“y\¿Õ„&;ÂÕ„»E Ø+&¬– Ÿ‚¡âöÉÒ¸´…YJBnY*›¦i† óv”IÇï Ìž7ûB(‹•²Ælœ.³Ää .g­]Yt±nÛÄÙ—ÖµAŒª"þ»uÖ~âÜÁiÁ<jÊé¦|B¯ÐãúnUSN ý§úã>ý÷6¾;¥Ú\0#ô°½CEP¡càzÆüŸ’ ôŽ=öKú©òÎMöÙ )hÎí@ 8˜5ÉÊmŸxϨjEf‡*ŸÇTPN %t@`!Ä@pßP5¦6þí…(#ycfâÒ¹ÿ˜f0‚ €d2àä;ª¤ (å`Ù ‡M8Ú/PPü™>üphU¡Ñ@è8lå$(#'ó¤›Ö.ÐŽœÒÏi…›];ϽãÒ:…Ÿyûä,ó¬ü}gÝZ'æsìSéÙ® ¤Ÿñ>Åɺö84ãEÕ éÐ ö=n˜Åõ¤‹dŸì£¬öã§óCf„ ÷mDA¨òÁ/G{Ãx–ò +ödä<=¶b E~{OKÄYÈKc‹ÉtÄ''U—&áBºte•@ Eøa¾|TˆËïT7ùÀ’“- ÈWÊ“˜UáXÙ6{Û0n"€¶[œ|L²QÞ 1àí‡(žìJ¦Ñó©üÌElŸ#ÍìòñG “þLU¤ iD *О @Bþ$Ä@pˆ¨rU¦£IÕŸâ''׋âÏ}A•³ÄÍ�ôÃ6•™NUÆ+þfÍr÷Ú#iå}÷é½ð^¤':¶³úµ»ôy§{I\|ßyƒTZωRPÚáÏ€É?ÙŽ6 ]C–¬ã¶ºüUžn ·N ÐYØ/í%Ö¥½Ž#ñÇW÷Á ¡DÄçn3ê‚“€~¿O§.¤T ÁýÇ,żYjAUðCžú¡Ãü…áªsÕ•é%j"?Œjž^ÂZœ>èÝU~v%üÌðYVÛ–SˆF{°CÅf‚㉽سü’s§4ã±Lø™F�ò@ ¨‚Á1͈ñ <ö÷ì0_ãuã6‡Ü ù¬%Á¡`–ÄI|ÏJ?0kfbY.SŒ\àÞÁÞoª(Ïï¸^º¢jŸ\{÷3ÿÍÒ9‚|‡Œ¢±2e]õ{²â ßñཀྵ(ŒšzÈ`²çD"ó/È$ªäŸË¶SÇ•øãˆ>¾Ê@pZpóæÍ|Àü$!k¡høØc‘@ ¸¿¸_}äÉþ¹.w*Ã}Iàda¦­·GÒϼ„ŸÉcîNÚÍ&›U Nªžç»…VÜ>9ág;¡L\ÜXI�:(ùG œ|ñG Üu” ?vÝìïþ$úü7 à¸Ãqwô”…7g*@{%÷Œ©CÁ.¨4LtѹãÍ@wºdœŒÃ|é òON�BدІýr¹ÌïJ@Ù¾µ4§½U”µP{ ¢‚ÂЬA†ãJüñ¿;"Uy›@pR1 Nñ§<™@ œFX[J+…ûÊÂzéêp_Tür›Já¿dÀëXá ¤Ÿ™Ê=$Ÿbú=‡hF9Å6‚S]"æTmßH]6YªÓU€|_Ó¨*ô× [H&D 'Bü‡Šyº»eÕ÷Y õ5î寨`À t“ ßdm Íóà³x$8<Ls Ìt¬ÜGLSüÙm›@ ¸Û0—¬†À|XŰ‚³6'LLSéšœä+ì ³z-ïfú€Be˜/ò@ÚS&,Á*þ+%´v ”kØic¾/=ø05Ξ¥ÈÜÛ››4¸v“tß/ØWW—‡·Qõ±¦ACû¨Ä'SíFt'=ô‡~å•W¨×ëÑ^±´´D¯yÍk襗^¢;wîìëyrîÜ9ZYY¡7nP§Óá<Ïšgúµk×(ægy5êõ:§E(7ì‡gçÏŸçóÙÙÙ¡Û·o³ ÒAð}ß÷}´µµµkY‚#ÍX÷ˆÔc»f2Ü×´Ùí¼Vûn½àc¤Ÿý~æòsí…4q@ gLõ¦”8ãÕEçå,¢Íxõ rÏéyNõ!ÿ§Bü÷ÅNzñÓ~×Ä "&ªÕØ9Z«·ó܈· ñçnã$ °‰A+Üh0=©¹EóSeJnÅwÂná¾*ý{.ˆ» R Èÿ®KiªXñGeJ5 þ€�§í÷Ëfàúâë^GQšÒ W¯ÒõëR+穽ЦnoÀ6O¿·Ã!6»;[´¼ºÊ»†CšAãf£NÃAŸt§GaêÊQ,ûq%ý�8oÀWüâ@pºñ¡}ˆžxâ ~&üáþ!“wüAÛ¡y>â‚ “‰ÏL¤Ÿú©Ÿ¢ßû½ßc²ÛŸ­V‹>üáÓÿøÿƒ677ù8Eâ¦O¢yç;ßI?üÃ?L¿ó;¿C_úÒ—èGôGéÝï~7}ô£¥_|qê3êÊ•+¼ï_ýÕ_ѳÏ>K?ü0ŸòDZ¾üå/Ó_þå_21hp>8G” ÇzyŸà¼‘'ÊõÌ3ÏÐÆÆ€\Ypnø¾[ÞÁýAÉÖRºÜUŸн¨èì…ô3‹ð£w#MË›ª =b— ÁÉEÕ¾*{Á*™ åÌF• Oz.«ÿùG œ\ñG Ü3Lz*ÆÒüïŽÄF ea2jìäôgÞ ñG Ž.´˜ø“¦ã+Ê#÷h]$‚Îòñ»uT'[f¬vÇ®Žù©†IER�TÎ×T( ÷ÅiUoÓf�ú3`]B1Á9°$¡åstå5¯¡ÁˆR3¼$ÔíìPkÔ§ —/Q/Ò ×£šÉ³Qh{s6Ÿ{‰¨ÓËd‚& zC}ùŠ?>áG œn|ðƒ¤õõuúüç?Ϥ–¿ö×þ=öØc¼ :¿ù›¿IoxÃè~à¨Ûí2‰f{{›ÞûÞ÷²"Ï׿þu&ôœ9s†–——égögé¹çž£/~ñ‹L¢ùÀ>@¿ð ¿Àiÿàþ€ÞñŽwЃ>H·nÝ¢Ï}îs¬¢€°ó–·¼…¾ûÝïò:„ê=øâÑÓO?Mög–—ÿòåËôä“OÒg>óþ Õ G}”¾÷½ïñy€€„åõ¯=çR€ü±þk_ûïÇüÇùPöW_}•~æg~†Ïç7~ã7xýûßÿ~zík_ËŠD¿û»¿Ko|ãé}ï{Œ>ûÙÏÒW¿úUŽ üA-÷5¡æCcWÏn…ª|'»’~ô,ROZú=ìSØŸ¨ò˜å}&W H N&üÅÕiµ.X4ãÐ\ã}Tå§æ‰“ùÈ õŸ²:Ð~È?b' 'Bü‡ŽÝfÏLN¤ŸT|‡~ÁI�¬0çfÌ}´z"Ü—[_õ×U³`ÆÛ|HV°TÏô-Ù4ZSe˜/­«²ßPêû%]^¢ÇÞúVºd~·^x–/ž£õÍ Î"BjSBÉÖ‰¦F½N‹«+¨„ݤšÙ>ÄÔÐ_=Kéh@ýTQH¥L*ª&þ7b´ÊÉÜ8—4û^µLÍ![\—^IðàØâ _ø=õÔSô¶·½¾óïpX+¨Ý|⟠Ÿû¹Ÿãð_?ñ?A‹‹‹lo€XóGôGüùæ7¿™?AÂDˆ`+|å+_a’�;ß¿ýíoÓ<ÀÄ"‡@œ‰ó×ý×ó²€tsáÂúÁüA&#!ì†>ò‘0¹çúõëôö·¿¾ño°ú9XâBz8&¶ ôòúÖ·¾Åép¿ÿû¿Ï$¥_ú¥_¢f³ÉJ= ýÛûo9 ˆ= ýÉŸü oÇ1¯S‚šÑÿò¿ü/LXúÿàpùœ—G lK©Ép_a¿ø=îu Äæ?Þ˜Wíg¯¤ÛåÕDŸ©ûM+›®>þ¬uUû à¡BÕ§¸Ù#"{¿ýP_º´Þ÷J¸í~ù1³ØïZÕãi¡¿Ä>„ø#“ƒ\þ îîûh­§t ½¼¤¿|0ë"ˆ)¦ƒ[˜iž˜ÏœRQ9qRgýØùž)eB@°?L¿é=!…F®¨“šõgÏQÏ|ª-´hãÆ5VüÁ¬¬ÞÖ:]ÛÙ¤Äün¶[tc£I B¹Ä …f]2™<SÚ¸u‹t2¢~·CÚä _žÍ\á¢ãwïã™aŸV1,Mµg_îvVjʧ@ 8®�A${þÑ?úGLªÉJ? ¿üüÏÿ<«ó@!¯ vU ·¾õ­¼/Bp---1Iû8%fܳû…^` Tq ²ƒð`Pݹté/>žþy^u(í@ed#{¸ãBk]¼x‘ˆð`8.l£o~ó›LÈA(0”ÏÁOúÓ\>‚@ºzõ*—ç E"„@zÂþ áxHƒç&ˆ= 4!ÎáÑ jbòŽvë'Ž9îég^ÂÏ´íåï~šªrNƒLn‚£2¡gb;yŸñN“Ê<4Vä¡a§LJU1ïñ'ÞaŠ€XIzNò„üN7¤Ç/î)Êd ª¾sq±3éõ\Ý蔋Nî®)'äŸ#ƒò¥8@õß‹{à0[Ç!žº`Né ËHÓXå§üÜ/$-õ¥¯*¸+˜â¸¯vðÛ†:󥧃 òšk,d³´ÚƒÝüüçi=ªQ·Û£g^x‘úÝ.Ã¥:%e©c f³Í€±2‡Y»bæ³ÇÇO­s§êæ9Æp4Ž,X&‡ûr×àô�*>þð‡é¡‡¢……&±à9¥œþÏÿ9«í€ 2Ô}@xAh,ì÷îw¿›I@ È8üÖoý“{~äG~„‰; c‚¤Ón·9ÜBtA­ðñYÍ <>b Ï#s@ºÁþÀ§>õ)ú»÷ï²sþå—_æ<A<ñe|æ™g ù@ F«««LÎA�Ç@jB9¡V2Bz!=PP(ñ D£}èC\'(?~;…E�$¢w½ë]yø3àhÁ)ûµ±TfÛ(=aüçƒ[2 uì1-·?ÒOZ±n2}ìãÙÒº‚ô“o›RžYë@p¼0sÔƒmÉun¥"o{–6'9>PAÊ<Ó+v„/äW‘Ìcü#‰ñ-…áþÉ?UçªE)H 8‰â@ ‚{™‹)˜³|÷ót^'ó“άÀÃ^œòó¤­rü“mw)ÔÌÀt€Q@µTÓðβCHQÇ ÎæsºÌ— xЩUïÉgi0Áˆá_€x™>þ¸µüò@M™ô#N'¶··é3Ÿù h@Úyúé§é‡ø‡Y¥ç“Ÿü$ݼy“ÃhóÈ#0qD` ¨â¾ƒüBÈ:_þò—™xƒ´�¶ý‹ñ/ø÷w¿û]ú7ÿæß°TÚËäGúó?ÿs.ÿþ×ÿšw ,„0_ á;€ã"4|¡Àº÷ïþ‡îºcÞ (¶¯­­1IøØÇ>Æ$$œp>¨(¡Œ8‚p|„AÃþ(öGº_þå_æ:ùøÇ?ÎÛñ<ÅvàÈAÏÑSÜ ¹Gˆ@ÇSìîý~ªT~ÉG—Ö§åýJDŸ©Ê?zvY@p²0áPÕÛ(÷]ºß9±‡¼°^a‡J o;A퇖R9¨ÊÞ™JþÛH 85â@ ˜Å /{ïÌê‰øÚżs…Ò¥utOÔH‚Y˜Õæe R Ø ´/œ’?ûÇ @ª8&WûÙ;yGúµ‚épí°JÕ§´^WÌúÍÓ¹U¥ö‰¶œ¤Æaƒ%á[JÒ#A–̃´Ê’€ð=uDŸDåƒn¶—_ ”\È<³Í8 N¡Ž#ñÇ…¿A½•É?àðqçĽº;AžáÅ…³rÏ(Þ —S¸é$ .[öüÀ:~gëœZBqA™Çí‹OðÌÅ3djÜ3Éë�¤ÃwlÃ~. ˆ:€SïqÇ!ÇÊU"WWF„êrya?ŽÌ-~>î7€°?ˆO.°ŠEPrç(%Œg®“}y>¡|;©ñƒjÜ9 r§Sª9HD‚#*Íï}‘~üß4IøÑ©U™$kÒNä]uÌòw¿ä@ 8‰¨ðµ”É>öKáwþ©ó„ãuž/ë=΂½Ð`øž¦±é7DÅcföÐ~'<îw?@pt!Ä@p Ì;3-žcFÏnyì–×®p6Ý?ì*½¸‡ÒYHª<¡jCn/g®÷¹í˜ÂW˜™¬J Ä¸Ÿ¾w麴Ís,Q@YÐ; \Oì½(ïïþ¡wÝŠAð⺼çc–€IUù•Û®*}×S¶Ý[œD'_umîõLAÉ zþ+4­*„Á]Áî†Æ®Î~åI-ÛO N+þäë0v‚›wùŠ>ø Ó`º]£ì»!C¨ÌYtBœTµ û%ä@€ç€O\ù•_ù~VøëÊi�G¨qp¤÷|™–¶*¯ªüü<Gø)—ÝOãP•9]9MU>þ9U•S?‚ã€Â,uÑ¢gýÒ)8–¨´é|›&íí½~Ê*?zJ^VÖ<¯­® QŸÜ_8~VÂrù¦ýžw›@ î?v#ÀLø¦+Æ�Ê„_9ÿÌ&p)ã÷É'z™ßiùüµfÕh=~Óá§ÂüREþÕàtCˆ?àÈc/¤—}€ô}¶yt6½MMݶ—¼<yy›o橳~O#cŸNk\Åu»ï•ÿU”–Ö{ƒ^¬`3ìø¯¶±‚ÕdY¦a¢3ãóoöƒyê‹I?þùx3êrÒÏ”¶©‹e´‹ƒ\QòÏaÀ^ƒÏüÐ…Ï1Ó2%ß1[Eî)9þç,Çý½þ‚“…9žÞnVz%aYó,b3ll‰+iš LèœÄ9íÑ›ê`ê1UöüÓ…wùÉ„?x#³ÐA;;;$Ž9´íÔÎgï‹¥ªQAú!ò @¤§ì£m(]g³¥ÍŠ?Ã"Á\ë‰ãXOŒgîO!ñÀ,U»ÐÁÇT{db½š\¯ìM% å­Ã÷Då¹” ) CòÊ? ‘ OTz¿©<wþ9VNœNþ§ Bü‡†½ ;•gÌÛ…JËé í 3ÁxqÛ^PpHTm/ÈPÒáâ¨]¯ýžà)iw‡†ÊYpÉ&Œ´×ÞuÁqW&þ¸NK™ §ï±ïw–ÂG¹3vœ;Xã[êžœGÕó7¥Ÿ¼=þ¥c+8ÌýØý}íìÒº”þà/ëORÅeZºcˆÓd @ �æ|ïûÁñǼj?´?ÒO'ÇCJR1‰)Pš"fþ¤¤Ì k莬ý²ø“”ÊeÓ…ª²ÖIS‚c‡ªéÙª<ãV¿Œ}ü<Tö¾Èü—Ù÷�¡…S2‹bŠOÕ(Œ"Þ'1ï"@þ A "*ñLµõtw’¨þ§ Bü‡ŠI™Ûr'*¿ÏÎs’0p¢àîµw¦zŸzG{ØéÐl½£88·/cö¨G1ô•†ÙŸ&ì°¢¤K:XE •fa´œók÷l 5c§LO< :û£«t‰½P_Zù÷µéèh ÊO¯\AuÍ.*“D5«&¥¦cT§(jR„ü;ïX6ü{Ì>û®sÖJšUKÖ©;Nªé2 Í…KæË×Âéädˆ¹ÒJŸTp÷1`R¥è£Ë¿µžJ€´N˜ìiÆ3¹Jù»t™Âó#©=½ŠÆöÃdÙ³­ºH¤,–o:¡±ì<òUªœK~~å°gs‰·¯R¾êÖ[Õ8­ÎF ÁA01WÕŸ¤Z£Lw¹ÝÔ¤SùXz¯Ï¼û‹ÌW/ ZçXùoåõ sE š21@ˆÿ'ÓB|Öåj=Uá½@úA(/øNt<¤šiGÍvHõ(0 ]³ô¹=¶ ¾¸²Ÿ³’øSAú9Fï6Áéƒ<7‚ÝQ}›¨‰¯$!Ÿ�¤ AÞÇBèæ%âÏ0N)6®a¢Í§y_©]ç©Sþ1>V™è3Y‚¢”9PEõG 8Ýâ@ 8Ò¸Weu{äyìúü7~¢flPÙAàaòÈÁ¼F žù³ð[ìʹP&ºøŸv %ô¶Æ”èuz;ÔíÞ þΗi؉bãÌ%}Šu‡\|ûÝŽ®2üUþ§´·ªJè2Êdc_›ï+yÆßs>.´™%.Åy”p,‘Ÿ'žo#È Ö¨ÑhÐÒêÃtöü›©Õ\¦FÔ0[jf©Ó¡@ûüÙ½êÖå\[*“§ìÞÊ;xýæ“„ösSßKà™”ˆÉXIvæw:±VxÄBõ Gó7ØYÎÌÜÂ’åH#ó ßawYùø(;ˆ¦«oÝý·¬øã—CX@ œphÇ ”÷½À¢hê [Ñ'ý°ÚOœÐp00£§#ª‡)YjЃVhu©EaÊÇðòÚSÙvó• GÒŸæDë³Çû¦¤€´ BOb>ó¹ÝÒ+··i«Ó0µSž‚Ä~R¨ì¸UFê)N¶ç\ùUFAõG œhñG Yh=û÷!©H´¹çÈœùìz*8 µæ3Às‡ÓÈIÁœ™T³{,áaLv8¶¸MA¹ÿ…õNÂnL™ø³¹³F/R:øŃïÑÀ8³FI‡b½Å$ Pa0åxŃi*¶ò«R©,dœÙ8±¯ââcü}Qš@0š­q–mB:˜ì’lkhòˆòcöw.Q¯s†z½ †#ÓdëTo´hii‰Î_|ÅÁ2]}Â¥3æÜC:48ça’PÆî™ þ¸øÌ&ßO¬À”u¸x[éÞºæûÁÄ]kÚ^‰òTMÛ#ö{öî19¥+ rIÿ½HRå_wßĹ׾öµôÐCeÇ#úÚ×¾F·oßaÇOX‹¨ÝnÓ ×ggüŽ¢ˆjµAÛ¬ßïó3& Ü.ÇÞ‹S×'ýTmÛk~‡2éG@ 8a˜óýžÛ)2€u,¡g8úÊvøtµ=™g‰ôc§â«¤´ºØ¤KgèsK´²ÔÊÔƒI 8Õâ@poÀdÔL¡Îý‡¤$j5æ}›{²GkÛ1õGÖ÷ƒw•ÆäK§Ž¨uÅ$¨±*¢¿mæd®’cU&V ' Bü÷ }öÒv+±«IßCÒÏÁqƒøA™p—Œ-åå#:ÃÆ]‡ÕØ4ØêIJAZÃô\´œé~‚€:^[[£;wnÑÅ3!-®®2ñ'Ñ ¢°Å�J8X¦¡ÀÝ¡ƒŠá_ª÷Å@u0žBg~M§%Î~ŤÃ‡2s©µ1St¦týå:u¶Sº~ý:Ý2ä6¨½°L.\ a¼JýøÒ7ieaÅI:¤IB#SÇp†a±e9?* õ•Úû ¬wÄŸ©îˆ·G5Ò«üûp +Väï�nKÒáìãv^\\¤ïÿþï§·¾õ­ùàˆ>ŸúÔQ·Û¥UóLÿÀ>@õ¥¿dGO§Ó¡V«Å AtæÌþînܼIngORλ…ûò >û Õ%Ž+”r0{d[äîwÂíLAYÝÇ4-~ÐϾs¿<M¨ÙŠèáK«tùÜ"-¶쯲yðß,Ǫ†'o>@ öÝ’_þp84ŸÙd]ã'†_ÇŽÇŸP#¢/,óºíîuz#NWƒ?„!¥ò0”J5æÊDŸì‡Ì˜N1„ø#îæüÉúé3·&P®ÑÐ2©ªLO(p73éÀƒ\*“‰ôáŠü£¹ÿå,æ2èìì'kÖÌ€">S ¥X݃æÊ'“$*Ì#›XS<Z‹viï¯ïî^1Ö§¶šÐ ÏÖ ¢,´Ë®ÅQS¾PuèÓNgÖ7oÒrs‹"Ý¥á ÏJ@ª6 z£ÆƒÄ‹­ºYjYáL 5)4ììШoÚsG£^«Q¢RŠÍ¿ÆÂ5Ì�´ŽÌ½Ä¥2”È>Þ‰£M›Ž ”(\›ò¾øë+þ(2VÉÑLXJÀÃ}ÙC¦IdC~mÝ2U©‡4èlÓÖÚSÆL{Ày½¹M:¼CçÎìü~Äý�:cƒéíÛ”vw(ZâOÊÍ,©Z&þ¤%âO ƒfGu`¼ƒÚ”™•“칩ÆÑâY2•m–º¹Æ„ fFîV óöSEýCppLe$O]_+°—zî¹ç˜èÓh6™¼épûömzõÕWé•W^¡w¿ûÝô¥/}‰}ôQ:{ö,=ÿüó´¹¹I/\`ÑöÖ6?gnß¹cjEsà~)ü‚»‹ªaN8”WVÙ¶Ñ06Ï(8–i{Ú“%¥ûزeu4`¯¤E@p?QTSu3Ú«yÓ:Ò8i¨RûÉVL~ìÚIåVm\ ZH+‹MñßÛîóÃäý!8ð‰è“nmm±¯~=,¬8–7QvÒ \5ˆ X$Ò؆õØoÁøátþwä7ö §c H?˜¼5à‰¥šï™ºñ¯¶ZMã›ÌýRw`î?:Hù†û-<?›ìET"ÿðß<Ý4ÕQKN„ø#î æÐ+Ÿ9âdÏëâQÙ¾0švv¶©ÓÙ¶ëáÔnt>ÕæÈû Ne•‡ø*N];â7蘫ŠäRÅEEv€x¬Ä…*ÏòÊ ˜äóÉJD3JK•¤ƒ 5•‘¦îÖõ:]þxé‚Ý/å¡ãÞ T©c‰1Ð]Û š¦c»Ô¤ÆB“ÂV@LåW3òñC{•TV4 )Õ;4­ÑNç­Ý¹FýðUêöz4L”„1=w†šf ¹¦ûÔJ»vÇÔtÖwht;¢ÞÕMêܼÉÎ5sýWL;ˆƒ!uu‡<B‹®5ûDõ.M….JŠâžÚÚ4D¦Ó2ùµÌñ‹§U­“Ç(Æÿ`DIÐeå.²I;ç¯YªNMS¯MQÝ|޼›ÎB€Á¹ Ú² @›|̹¤k×)}æK”®¿Âe…òOšÆc‰Õ�§6VþA˜ž1ñÇ®•)zg]u7â˜øåÂàÂc<úVÒË«æ×‚i‹û#þL<æ'ˆîv;ÏKö…C@†ƒÏ8Gñ¬8þ<“€ük8\ñûÖ­[¹£d <çà,ÅóêoëëëL�Š2'ëAPpUœ«H? 'Ί Mzò-o¥ÇŸx‚þò‹_¤W¾û´±‰FSö�î½Móä“OòsÏëW¯Òk^óúÎw¾Sx†‚¸ôðÃósdI‡sçÎÑ¥K—ØÉŽç+Ô@¨Ä3uÐ_Â~8Ƶk×H Üc‰ïT`V¸Ý²ÚOÕöª´è‹×Ì@j= ¬ÏÆá½ÆäŸ*ûVl^Áé€ß¿ÛÞÞ16ÕÓæs›ý„ËËËlsÁ¿Èг™’5ünP¥IüÎ;Ü?}ðÁ9=�» “Y @þøã³]†¼¥¥%“— G N/@ú¹i|òèËÔjß7/^¤……E~/aÈ aÞ[Qˆ‰Ú é4¿×vÔ0ù5ĉ*œXÈ›V :Ë/s7ü;/¾ø"½üòKÆÈz•66×y%þPAQÍt4._u÷J*~Êß«ò/Ã'ÿÌ"þX¹cÍl–—._¦ËWàÎÜ(T4•e|îýnŸ¶7¶(4Æ©J}¥—ÉäwÓêîîX–ˆ?jLü Guãh2m¬nŒõfóè]óš¶ ƒ ŸŒ(I†üi*š;:0ñжýQ–ìHÊ\sµÝ§ÁMM[/ܤ ÓÉÀàEÍt0 EýAŸÖ¶nÒBk•ÂóC³ÿ6 #;P‚Î=:ò�f鸬â³Ù>·nÓöÖ)3@¤–s§�ÒcPª2 1‹³óäÙCæsdqÚ§¸Ö¡ fÛ§âP™\7k…ü+T)¨G².©œñ½7X"RšÄ¦w(1ψpó&)³Øz4.s~ù=ˆF ââ-cï4Í—ì93e3šŠjÅë|ÍsºòÍÞî6Î…YM¸îö:¢ nPÛœäÑYiß-ýg¾àˆcvÝ[û…ƒç¯þê¯òÁcìýÒK/Ñh4ÌÓ8"l…¾ûÝïæ3*á8½sûßéx†‚$Ôí÷h¯¨"òÌ"ÿéG 8þ˜zgª>«<DõËÒN­I«O¾ŽÖ_½N}¨,ºýó¬m ÉJÕCƒÑ]Çßü›“ŸO í|ìc£ŸýÙŸ¥õ¯þ½ímoËÕÓ0`õ¡}ˆ¾ò•¯Ø±·n1è©§ž¢øàÁ¨ï}ï{œæWõWù¹ RÐ /¼ÀƒT°B^=ô“‡Þüæ7Ó[ÞòVbûÄ'>Aàna6±Cl‘ˆ=ÏÔÓC|áwšf¡£³Oã@O=È&ä”›4)Ái‡ ‡c#Ýb»icc �ÁNò‰?Nñj׌ˆõFÝØN}V4)y€hûû»ðÕõzÓ ,ä½v: 3…h\nwŸÁƒ~î'ôkT6ÔbC€™%�ñ§¨dGˆ*UTùÀò¢N)„ø#N `}ó›ß¤?þãÏÇíË´¶~‡×[ʆOôÑÃ4âËsžu»!'ÿØSÓÍ ã‘+þhWâLÖ‘¨™É¬he3a¿ï­o¥ùàfÄŸC@F:Ù1÷ 5ÃL½†K£ýùÁw‡Iü™ŸR}:'þÔTBz!¢zÜ8Ô·áÚj܉fåˆ ¥$LH…Š,F©ÅL0sMF7»t³Ÿ76¬J„4†ôîzo“nÝ^§³—·ÈôÈ©£7hKÛÐ1Hƒc�“o’Iô6Í1Ìzt쇃¡XY3ƒÑ–,”¤1‡’àh›cÔM‡×]“?`/(2„žY×îÐ0êPcÁЇEóHUY ëî/”shêlÁ”¿è–(v­|ÉcŸ€ç+rá\Ë*]î>¬s*:ËŠLóúfr´kf ìl{‰ÏŸ'àDBO!µî–f.ŒïÃ^x‘—â!ÆÛAÂ/Üw�”}XN]OÍz*üçϬu>ùG œ¨ˆÏ^ Çßø½ô¨$ èñ'/ÒèÕ;ôüà›4ê®å„_ß º×!¾0èÇ8H‘oûÛyÖøc=ÆÏ«_üÅ_¤Ï~ö³¬Ìó¹Ï}Ž·½óï4Rkôð¼?ÖÁÆñ¶2žuW®\¡÷¾÷½l£¾ï}ï£o}ë[<kJ@ïxÇ;XUè‘Gác QY ¸ÇÐ3‡TE±YNÊ >³Àáë9Ô¼Î&Ù‰8 &í$#ã—IUß:àè£ ú¢ %€¼³Ì“…¾!|ˆP­Åz|Gÿk,迺¾B¨aCÁþº|ù2ç‡}N›MU5áwžõ‚ãâ ‹›¨‹Iðñ€Xß<¶y{®ŽÈêòR.”åcGåp_Þ*Ã}‰H 89â@ ¸'8h'û }‚ét€\pý•ktÕ8r·¶6¨Û³•)üø&ò\Ù>a¥X¦ ÒÏ~ «¦DX­0¸T)½;fN ÊRéB¹¼³3û¢ãFæºqˆŸ;{ŽÉêÀ¡–Íq9Ü‘6̸Ò~!¼TûçÀèë\¼Zÿ89¥jÞiÈnÖò$w~žÝly<§$“¤zþv1³rƤ®0R´²Ò…3a¾I:ßy©Y †ÎBU¡³ÑL©ö¨ÉãJJñ….Q7¡F§EúFJ…õ#êS3SŒhÔ8ßN§g:$–øÓ­Å´S˜í¡u£½¢¨±Ó¤ºZ Ú¨Ó¦P€g­FÔº¤iggHwîlY(Óù_¹P­U£µÛ;´ÕÛ ~½K+Wiá‰Uª/Aåg‡U€ÕE<P³}žžxm“b3HUk4ii9 ¾9§[Û\ÑÙr†ép!ÜÔ”°xÊ6ösù;^ÅÎQÖ1óäUõ®³WþŒÿ÷ués/¹”Ú;¦ñÀ´¡¡­}°á¾½œoUçSâR öÜlvPê)ÄTÚ]1cö+lró<ª„¾#Èÿ=q¿Uì3ϱÁýÇnÎ[V>m.ÐãO½›Þò±H¡y 5kuZýk‹ts­OkÏo™}H°8#[…>H1ïÃTbb¸Éž?ú£?br‘@°†’éç?ÿyú±û1VêAý€ §¸' Tá;lT„C~¿ó;¿Cÿò_þKúÏÿù?ÓÏýÜÏÑÙ³géÙgŸ¥7¼á ôÌ3Ïä3rÁ½Å¡„tä0Õ>õúÖÓ÷›®öãˆë©¶ |bÂ’ (8“ðŸ¯PÞ†ýâ·Î)€ÃräØE؆u 2` i ¥ØY˜Ÿ ,¿¿yZúóØâ‚“ ¿íã~Ù÷Ž#þ¸{Œá»q«Þy™]䯂&Uø¯—ߨb@pz Ä@pß0wŒîC˜™ÓïuiíÎmºñêu^@ì <ŠŒÒ>5&Ý?ñÇZ^´7(ª þ¤*Ø�ÎX„\ª¯"¢Mê¾ãSùê:ª4@rH‘[Æ "ÔÆ5ê]érÜæ ÜóDzÎù`öhÚ.A6’Éu¨§Óëò¨€žÁ\/möÏ•tI¹@gј¸.+&ªÉú-_Šq¸Ʊ×±u<¥y t±|s °”[&6"L–¢Õ³]ºl¯ijÓê83üݹ„‹f@çµ…Ç4XØ&ºžÐRÑ|*Úv¨¿c:耺]Úkâ)G·×747Á†Sh¶[ÜéºuZÖ5ZЫ˜ŽþƵuÚÙÙ±íá|›V&Ú¼3 ×6í S-¤ä±5Vtãú6ÝénÒN£G¼f™:wžÂ†q(„ÆÙ ìñΟUÆ Ñk_™I'Šâü>½újJ[ß5ßU5ñg/w¤BÞÚ8,xIìlŠ|@ ÿ²ÙÜ»òdÅ]ŠÂÌ OégF!ö÷Ü(•;{6ä´$7¯õÁè19NS¤c®Âróü'grJT 8,”©ó8x¦9‚ªT‚ÁñôçÀ…‡¢§>ðzâ o¤NZ#›w|¢éÒ¹sô†^¡/Ýú. :Y¸W=ß̽ÛóíŽ0^PöA/LdØØØàõPöA(.Øž'æPB}ôQã…A¬oûÛô?ÿçÿdG;~ƒÔEŸ÷¼ç=ô…/|ó¸qã]¸p>þñ³ª&öÇ,v¬Á=Â6gÞï­ÍבخÁ<�á‰'ž`2µS ÇÙ öÀvI!@žÁ÷>‘Æ©›`_L0Å6(-¦‚ÚO˜ù…ø3ßvÁñ†SÇ‚ïP½zãßÈ÷î w_8Œ§SØ÷ؘäªÇïÅÌ=u¹@ 8õâ@ *öAúQ“a6f}Çg½V£È,pÀ»YnáNÕ5¡øs¯aÝþz¦ïf<ˆñÕ§¤Õ>ª”tb Ó³‹Ë,øñ¾ºrßâºÙeÊ8 ù»ÍaлÔe¡\ëW3¡—Û…õ˜Ãr3ÐÓ~àºqõ*õ·¶¨Õ´ä ’`6§1û/‡@cº^›.œ¿@«+«–äc:ö †ƒ�³°]ả.uÖl¬ï (T›–€¦@˜‰³™ t×1µ”`)WŽi– f)Gº¡‚ÊöËí£§µ!5ÏÑ÷G´åÙg¾ÒƒŽ5ö3“²*üWyÛaS Ü?À¶{ïû?@ïxÏRR["=06ØH3Ñ»F }àC?EW¿ýzå{ߢt0,½Œzº«À€ÒïýÞïÑË/¿Ìö(ð+¿ò+l¿â¤ z@üùú׿Οpri¿úÕ¯²MŠõ˜B0@ B=€(„Pa°s¡ösýúuúô§?ÍáÄ÷;wH wåÉ!•¿§­÷¾»ARMã}ÁtÀ‡^ðV¶l$�ö”}ü‰o¾ŸØb�; €¿ošÊ¬@pRáÈ?臀äÔb9Ö—¡5åï.ÿÝæÂxQq\„¼1µ›Ú§$N„ø#Nl?ZGß×j)ïH»Âæ©$þ/_‚Qe™ùãc%QAú*8Áí9:‡FZâ¨(ò=óî8ÅÐ`wc5 YŠ9%YœYiý—’ZÂM1 ZVëù·ÉÃèq ‡Íê(çyÌ*? f›ÚcU™LÓsâ¸~óZÐÞþÙ5BÓ_X¦Óéî™Á¨1a Ïà˜ÁÕZ8wŽÖoݤÁÎ65šv&O½Q·}sAÏ\¾H—ßøºñô÷¨»¶žuÕC:{PóÇ °l¬¯Óââ]8w‘«â4¦­Û[´ÙÙ¤Ë<`:?‹42m¹iœ AÞkQÙETcî•ëäø5rH}>Táþ-U°¢¬}á^s¤ßaQt`äë ‡Š¡è iò6zˆðŽ{pØ'ÒŽBú™E�'¯yÍkèoüô‡iõ±h«§©>Ð4ì¥R•raé!úkþý×þê 2KS¨í,p'œY ‚z÷€~Ï7¾ñº?ýÓ?-|BÑg®]»–Yèk_û!Èáío;=÷ÜsôÉO~’’@ 2öd§jªVÜÖ%K> 4ÍÖk!¤ s¤ø™§Ý3 í`Òà¯:LïÌBƒ a•�d à4÷ƒ —fa('B¬g'?¡U¹Á =uYÈ£Šà#äàÔAˆ?àAç€rä¨4M(Ž(MÒ<t—3yÀ­²Oiî °alr>Š ¯%’Ì™Æ ©™š]—d¡oI'‘Cc Ç0Nt¤E~èX±ÁÇFŸM Èë\ø.7ŒBª×êl(b_Ä,ç™<›q–SÇpÊBkјdà Ö^§Œ,sÁª� B…+‡ÁÒdÃ~Mñ¹h5.Ðng·m"mÊËø·Ÿ&4?êäÎ#@˜(^ìÖ@‡%Ê4†bð"4‚\å%ÈB˜yÊ/yÊñ_Wë©Wõ³FBT¢¥ 9ñŽªTB>«ì¤‰}•kÓ&FáxçÈ$ Ó¬<hw¦½&£˜´i{i× ê¼œP+ލ®PÍÜZ­™Lž‘)ŨGqg“†æ³¯ÔW=j c™û¨Þ£¤Õ§´Þ1ºEù¥„u øºÄ&m?“1ÕæþÕÚ¦mûf›©ÅnÄ}š6lŽGMóÚö› z”šæøÃÌYgNH6\……™ ‰#Í™ÿiVÉ*ÓW"EMiÖÕþ Ô—©ßÔ.ø®)Éë_)ß«Dª¤ÊåHzyó-òO•û$õøþtdµìä:s®gc7Ûßn&Bû;sÙ÷ Ȉ>Tì(ÒÞ¡&¾P-¡ªpjà~b>8`ZØ®ªïÓÔ{ªÔñÁñÃåË—é§ú§é©·¿î„56U-¥®±‡ƒ”†Æ‹Íòƒ?ôAú⟾÷Ù?4vdÂáV˜¾e},~@ô¹uë àîC“7¸™¯œýFÑz<fº"‚ÎýtñhÄênÝî½Ò‘à¨c¿ý8LÜ ðu»‰ªåßÁiû³“¤ÚÏb¼«b™—²‡›X_çþbe`ì¶îi=÷½ìöe‘LíN,„ø#N ê-ªHþÑ™Ü(>&¢dÛ`…å"WòœNAFe ÄûZzAh °Z-²ÏÉà�Π+³ÒŒrd’!–VàH�:'!å,pðL)Ã0à0M6¬Wœ¥±çeÏͪý¨ì<²âæD€¬€¦·v„ŸC¸ãúÊâr¹ïªÂïc3éCÇ9é×¹RÅ„ #óðAŠ­k¬ÄBÚ^Ý@( ÆËÀ'ÐÕŒ&ëøêA––‡jª™ï¡ sbG K¹¸òêRpµ9|=EòOZÚZ$)§Ü“Õk m|lì•„ä‘ßta@F§vŸZT£ØTßàæˆ†¦åµ[ kÖCªµêÔXhŽ4Ø6m,‘®™ÕÌ÷Èt<"Óᨛúlš¥60éðà© Š”¹̵ÑalÒõÍ%(©…Ôk„dº-昚ú½!mõ:T‹Mmš¼”9f³Õ¢Øì—¢c3˜cPXÛ^(b¢í”yG‡ qLXsÛÈ?S:ÐÐS~ÿ§–LGn™<F9·½Œ d›™×ˆ½Ë™+ÿŒoNnS¹”+ ./íÔ†ÌÂ÷|F‡RY§/ðŸ3þ�>´{J9’¡@pÌpRïû=+ŸL™çU"ýø f2x!œ@Éñ§~ê§è#ùÕ-8€­£01ACZÇÜó)†šFƒ!­,-ÐßÿÅ_ õ>Nk·éÚ7>E·oܦ­k1mÜ!Z0ùaøÁ†féS‰Tê—U‚Iý*3xt©#—õUî677I œˆír|±«Â]1þJÅ0`.ô¿TŽñ|ÒÝ­rÎC–Ž:¤Í wÓî3øº7;Cêözcân¨²ùã÷ŒUýùçΧŸ–&{ÉD-àôAˆ?@@T0Žrò7ì`»%â¸Ø¬8 £ˆ¢zDqœä¬mGÖá|³O¤/çãþ1|¸ãÀˆ‹Â%R¡äÔù³›ì:{6…ÙOÞ÷#)íhŠÕô©7èòì$uÊIö¿A Êë)4߃4¯&ìdNž4‚RÃ,v€22iëµ1i#H5ë)1®&U€0©Ö©Q«³¼mt19ó͵AÓ–Lûi¶ÛtñÂyêÆ]žE°¹±ÁuŽ4«««´²z–VΣn§CÛÆ1†6Þhըݮ±Jd10Ó6¹MB•'Êä€ù˜¦¾ñݪRGB{¯ ý¦:¡ÑΈvvvÌué“çèüÙstãÆ«´ÕY'i ¡Ä ±ÊVÌ—ÓcU®$M0éážv^\}î?‚{†*gR™Ì3ï¶½¤G îY€>Äûßÿ~zâ‰'ø÷™3gè'ò'éìÙ³Ô7¶Z³RÂVrLÝ~BƒQBÃx@ÛÆfK·»lŸ=ùºGéö­ýôý=ЇC 7{ôê ·©µC/Þ¼Cß»½MWo­Ñ wvh§×·ØÓãBÓ½"øàè¡l¿æÊ=ZOÙF÷´G=…JöÐ  ;]l¼B0¥ƒÀùðœ’Iš¦3Ó ޲ovÑJ 8N6,(-"¡:õ¨MT[ ¨P ª¬TT¶óý2Uþ7!Ý H 8â@ 8%ÈRˆr5–<¬’ÇÁr!œœàa¦©asH-³:B&‚4„£ eš=p8daxRíÏu%×å$ýHpÄ#O§3&XâO˜ÅEv1”!Ul :'Ùcæ§™+£¸s-*¢¨#ÀF`ÅŸ$6  4ŠG¬ä‚h RQF€R™:’ b³$9‘IE!“ƒzÆ¡c,cªÕVXñû*6ûƹÚSË ZD²£ÄÎ,3RU�"KzmUf@x©…ÇJY©gˆbzã{3©«®‡B 2‘9÷È”? ^wDí¾©€g$5¨€fõ•Q—òˆX-MáÙ–Mý„£ˆúÑ€† Óþ¢ [¦WW©»Ð¦Ä´é¤O½¸CËç–iq±Nµú‚ºÉ±nÚjbj`Ñt@V”.™</EÔJZMÝ©”¢smÒíºf@h`ª¸—š²šë¢£&%AÇ 'õi«¿C3˜t¡}Ž.µ¨6ŒX9«¾Qû\“¨™PÚ‚gXy+i “Í´m>u&»4ÄöþÖäß±^ V´ôªªöîÊuw sÖé ¨VÍ?•�´×‘i£¶mütqÀæOkåíGtïɤ£(ìÎÑòC?ôCôîw¿›>ñ‰Ophÿ®zê©§è•W^¡ÛwnÓ—`bæÚÚZ¦ö—ð€=žóÛÛÛ44ÏÚÍ­-"Dbé8U$UΡÝÔ|ö’V˜ÁÑÁ[ßúVzó›ßLW®\aÂ÷‹/¾H¿ýÛ¿Í$ö¿ñ7þ½ç=ï6vFH-“v3LkŠn{¼šçJÿ vú´³±N[CèùhÚ^ }ìwéñtHW~ˆ.¾émôȃ?D—_w–޻ܦ=sœ´¶þ ½øÂ_Ñ‹W¿B½çnÓÎõ n úÆ.$K¶ïµª®i«R°Êb@Vµ“u,‰èÞ)ýìlž²GÓO LLn#oê›.ŽŽØNÞ¤µW_¤Û/=MÍÛt8ÂüVN‡Ã¹p܇…²BÞnÏ_uÀ÷ÑQ~¾û„/7 ÒùQ«È`‚é˜6Øï«» î-¤ýž>L#°nÌãÌù+ôø›¾Ÿ.?òZ=[§¨Þ§õÞyìçÖž ¾z!þ‚cifò˜Ø3&¸Æ‰Ì Â=±4¢G~ÉÂ3á@6”Óø NÈÎ0 ƒˆ¢ZêõYýaŸ;üñ(a2Θ´“u Hà˶ 5™êl.ø—æ<�ìbQ²J1Ÿa2âP?ïUÛ_ÜñM´qU"õjF—h÷¦³‘UK%TÍœkjÎ/AØ/S%uû]38Ñ Õ…Ë|áC Lš`€ðÓ^lÓ0Ñ«ë¯R-Z Ë´ŒS Æ¡£úýõ»ÛÔíBMhD—Ξ¥3رÕÝ4Û0HjÕh–——©ÑlS½Ñ q#%0¥Cª·T3×± ’À”¤$E…P_|¹l”=Í`FµînŠ{™‘ò¾›6Gms}Í9jtûf—Âþº)_Cg¥‘bµ¨îè&'ÏT’LŽgL»©¥%5ZÐË<؎Ŷ©¯—:5ÚÙéQç•5RA—ZKšž|b….­’×)V}>w jTW)@ˆ®EÑ¥:-¼q‘ê¦~DU i§—Ò«¯¾JÛ[dœm‹'¡Ù–PcØ¡–LêDf�ÈTèFc‹šg":³²Bgƒeª54Õ[æÚ-lD¸Õ(ÉDªÅe®‹2ƒF©¹çFÔKz4Ò6®øæös½mÇ'ȉ?þì» HÓÊÈD–TT&ö¸àqù§DâãíÒ¡ª¢…•g¨g¯áyfG¨oÚßævš&µÚ5J2ÒOÚ…ÕÀ”GqR}b¡,‡ ;Ìá2Ÿœt4â‚ã„k׮ѷ¾õ-4(ƒò=ö=øàƒ´¾¾Îö�^ûÚ×ÒÖÖÛxàÝâÏÖö6ïW5›«jVl9©Ošp>U |@p4€gÆ»Þõ.zÍk^Ãöà³Ï>KñA7oÞäûƒ•xf<þøãôó?ÿóœ†5.aW˜~DÓØ…íV“–bMþ€6ŒÍµhìì͵ žx02öÜSïøAú£ÿϯЗ¿þ= ÿç×iù¡‡èÂÒ2=tå=|y‘¼Ò4ß#úÀûßIg>ü:glBµÙ£á>ݺv“¾þ›tí•WéùŠnܺE¯ìly‚¤ò<‚SYöã¼Û´.|êéÇ*rßyŸ­­Ý¡ï=ó=Z»qž cìpL:Cè0¼SóIj‡!þŒá«¤Wócž~Ý<뇃iíWÚõÉFñý±ÅÅE~Æ Íûåâö€V.=N+ú´˜)ô—ÕïÔXÎgüi3¤©‘ö»M KñG œPêU¦ö3vxÃÖœ4µƒä*Óù1èEEKÄ!£¬ÕXÁ$•\m‡¼ð\.k=9ô޼ƒ�U{ðqx±´ c‹|@ø©×êYX+bò„ ÍäÏrISg�îÒQPÅÒÅ€9 ˆ]™ºÑЉjV™ ë¡Y²ëµžâ!uûÛl×ÚPDI¨7ضºKaB*ŠH§Ì0íSwØ¡D%Ôçi\54ˆûÔbÎqÀëSµ`CJ™ï&)¥AjòFرµÍ?üŽM~P‡jX1Ë»¢½*;7:(üÆŠ?i¢¨ÅŸ`@ˆ´Ö"Vý!3( I™z¬ÛÁž@Ýä)Õ*8L"vðÄÚ’ÆúÍ€6£^ÜÚ¡WÌ`L³ÓÙsMºÔéò¹ £«ZÙk`ŠYu¡^4 j˜zYU¥µ6jÓðö€^íwéúÍí¬§”ŒL‰Ì½òp;¥'—ÛDæzŽ´q’-7F´°°`ŽY3ÇS7TŸé<Jfë)ö5 z1czÉUƒà|ëöú|*=VGÚmðÈ]#U™Ò^D=‘W~£ÏvHf(8Kª”ž¦xˆöfïãáÐÜç#³.‚sÑê‰á ¢_œXâ"ˆ…x1YP¬jàÝMáG Ø/øîÉž +++ôè£òçë^÷:è@ßÿýßÏŸnöpáY4h¸|ù2ݹs‡—K—.1ê@Ó´¾]àÛåmný4òOyÛ¬pbàîφ·½ímôÎw¾“CvAÑçsŸûý·ÿößx`Òï+¸þ l.¨ý`×çMûkÑØuL6h»m9¢AßÜÿc9·š´ÓéÓV3¤×¼ï=ôWŸümºýòK­?Ow6®ÒZÑ÷¢:©úµÚghõìƒtáÒ#tÑ,+]¡K?DWž\¦ó?p†ùû¯ÐƒIÞ«¿A›ëôøî_Ò·¿y•>ó{}oôŸâª‚Ó‚Y*îw• ZEpÏ'îW ·ô„À zû„+éìRoÁ½‡ÿÌB¼0ùë¶ñï´—)ªÙ~¶3»‹÷©Gþ)ÚÍE[7ë·@ 8yoŠ@ . rá¯UÎp1»±¹^¯qØ'Â,$T’&y§ÓÂv†Q„D¬bŸÌé^5+ÈŸµdá½8Ì”Y8Äd…uÌŽü¼äÞ±ÊÎŽ&PFœs¢#Š“×3Ôx¢lfÀõ—*Köèv©?èÓò™e&q¤ò´|}²Y]40 íÕßT€ˆaÒ F «,D*¤¸;"¥´´´DGe_Vqۘƽδa²¶ªCÙA„Ê ô@éèöí-zþù›Ôhj3À³Ho~ó(¿.aP·mZ'|}¦íc†›Ræ\È:ÓVÍg’hºuk‹¾÷½›týÅÁa,Ž•7^¡ ?bU&"S¶å®)ElCÙ…e7²áÛ¼öêÂÚÅqjŽ—òõÀ‚°bLZê÷MÙwÝaq7óG;íõG¦­&Ùs…¸£W– gÒ×ÇȆ3÷4ÃF£¹WšÙÌ}@pÔñö·¿~äG~„Úí6}^xá…œøƒ_ׯ_ççàÅ‹ù]÷Ýï~—Ã{a=Ý Ï$8‡nݺE[Û[*Ì"�ù˜gÿiç±@pøpý¼çA|ï{ßK<ð�+‚}å+_¡_ûµ_ãïóàÂ… ôOþÉ?)8‡¡j [,eÉJEKµEêšþËc–íôlnóóª§Àÿé~þÿ·ÿ«1`¬'ÆDŸgS{@ë7Œ=ùíç‰Â6ѹ³´xá<-_ éÌù%zôÑ]¾t†½²NΟ¥·?õýôЕ×Óg~ï·I ‡jRíæ«`ïºASaýœøýö!e‹ `χyv³~ UuìüØn<B0œšq™¸_¸1…{}h÷§ä»©z¿ùJóåiçn»ó‘g¤@pÚ Ä@pj ô8S@ãPL–@1fQXåo¿LVÖ‘~б8¼WÓ(;n°~LüÑrÛŽmnŒtåìzŸÄâB|”ÙÜû5Fï‰ù§¦O²‚²K€»ª³ªŽf…“”†éÒQJ ªQ+lp)B…P�jSsa…‚ÆÕZg(Œjt“ IIТþ0¡nB=(§˜cŒ0(a>›æ8zΆµFL°Ð¡6ibJã>uú;´ÝÙ¡þHsp¸&æ’Õu³ƒ•žÔ]³ûÕÌß: ·”fß9„•³Å´S³!L5Eø4õ%AFúQùy ùi7»@Ûc`¶wÍÔjxz;CŽv5ìÇfI9´V) GYø9b2VªV  M¾ 7ˆk*a•@Ré›¶ºÕÓ¦žMÙÌm30«]°÷”–ms.P¿ ´U+"«~"+æ€ç¥uNž3·Ń”â¡)Ô™C KJb£lÑíªY­+êyâÒS>ãYí 6 †¦ Ž=ƒ²Á´xÄJX¨óÊG A%¬óC1@Îxoª´”ÏA ÜOXŽ}Çÿñÿ1/U�¹Ç&ÕtãÆ þ’¥û^ ¥òÛ~ÖÌ×ÝfÃVm¯š &N`àîäwÜk ¯ÿàþ ‡ï‚võêUúÍßüM©ºW ¯úOÿ)«†U¡ÂnŒi›ƶî× kÔ}è"½ðŠ9Þ(æt—.Ñ•~nüßfË´^“jG¼öÊÍz·Bê»I7awkåu´¼t†ÛÑÒRBÿóÂc´¼{ï¿ñþz% ²Åö#È®/…g#~ogá«àS<¹ ëKásPïèwdž—ÂÇ`ßâ™g}8�$N¤Ÿ•¯_,Hò»‰#nÛ¬|üN¨¿9%Zî“Æ1 ÁqÃùˆ~(ÿw¾î.š®³Èô‚ýc–Ê“³ðÎ1Ùùh»c¹Gˆ?÷UuŒÉïíÛ¢‚ÝáÛÉ¿)O¤Ü+`[ÃÞ¾Û66ÔŸ¿÷½ï塾.<`Æ!FÃñ3°ê¾Ôãp_eµŸ½¼‹Êä¡ýä!Ž&Ä2'žŠÉ>9ùÇ#ú¤ù, Å„K®¶ `|ÁptŽZ@0üàdc äòBY…žÀ*©dj%.,¶…pª›ípö ÷É<yy=Õ Ÿ|<³>}‚Ñ,TÎä/Kßp}ΰ(E)õÍùœ2 Út¼M­F“ÎÕΰ BlEµº©Ç­M6Q[Kç)ª·èrë’Ð4ŒCÚêoÓÚŽ©·Ä¬äÛëÇ|ƒÚ+Ët¦~Þ¤iccëeè¥Ã­w6hcsƒT­Eµæ‚)‹iµ£6-˜cÖ2ýAëáâ Ñ4:–u[©l¹Å”EG¼©éä˜a–º+¨ñP”„¼žÏdª0!×l´7y$R5j†m2WÓœq†X⡦®©G¥ú…]Sïujµ#ZhÔ8U:0é$Â='æ>Š)ÁF ÕÍŸf‹â44ëÍxQ;$}Þt`¢‰>Isµ$4 ,¬æR]Ì7,‡gñ@¢ƒZ“bõ ,8‘Д§Ù¬S_·Mï¸fÒ…f‰léçV¯2âÓU¤®»AúÉKÀKjÊ:4ç6Š£,v½ w–¦xΤԪ59äŸNR&°áÚÜ/#³> E„I³ª’øs·Ê.îæqÀNSÿ™Eâ™E §¯@pïñwþÎßá°\ µ|á _`²ÏA€~Ã>ðúñÿq&>øàƒã‰è³è”IÇQTceÇÈØ¾ífƒÕ7V„p®–»ýGìÇè¿~öS4èv&ìZíõ±¸‡Åጡ¸Ð͵kfÁñecC†ôØ…Û¤ÂÕ&5'í¸Gy„þú_ÿëôä“O²“üOÿôOégögéŸý³Æ}$(§aƒƒAŸºÝ‡Tü©Ÿú)zÓ›ÞDÏ>û,ýùŸÿ9" úwÈÇõï€üÿ1½ôÒK. ý/¨®=ôÐC ¿¿õ­oQà 2¾ôòËôüóÏó¾¿ôK¿Dÿá?ü®WüFÿ�ú~P u=~ò'’~â'~‚>þñÓŸýÙŸ±ú"(÷ýÐñq¡êæÎšÈ¿‘7Ò¼å-o¡~ô£ôú׿žÕã@$E¹ ÇÆwWäß!«r&´¹¹I@p¬¡‹*?ÅMžÊÖ»’Þ}Ÿ¯â ?œóûíFì<,”ÕX ÿUðÿ¹É§ÁF¯ Oìˆ?xG ñç`þßýƒžò|òCô ¦ÃM°Féܹs¬ŒI°Ÿƒø›,„WÇ$,ôÉî†ú0kkkYŸLÑÒ™¾gÊH«ÅwÙ”cgïàÔB,#@  r(,ó/-JÈúN�×ùw„À'ý8û&Þlбzæ}7�çKQºtî»ëÌû“ª ižs:êàPfIÊNíµí5ÚÒÔKúæœcv~€ˆejI )T6ü™ Bã°7jhg玌ƒÞ NtŒ£0€Jæë±hîK‹‹Æ9Ðä㥙ä%÷.vî¦qüßÙØäW‰É+àÐ ­o¬SÜPÔ<OµVÀùÑ!ö ËUqêÞà.Ãw\Ÿ z–$† LÈáC@þ¬7ש´á¼,a- ì)&¦C) cS—Ê:Whã<¬ÃûÕLâFX’Z‚x¶}B!©Æ¡§T¦`dªM *6öb &ª“å²Ðx¸BÅê6<!Ÿ»íYÇFëhß(9–î¿Ï„áÐ8ÓÀ<kæ¼3Š— ͦ)'Æ X‘GXtAéØ §Å?Oñ§ÊN(€¦å%Ž~ý×=x€Süoý­¿ÅýØg‰r6T¦2¨tnUF° ¥±lV a‹)½t‘n¾ô ‡ jŸ;Oïú韡?þíß$ïµ-Ê…R;™Âfj, Ö6Ö]³Ç ›îÅ›_cbù£KOz¥ÅN!¹ –•­™hóÉO~’~ñ‘~ã7~#¿ûÿá?d‚Ëüÿ‘~æg~†{ì1úú׿N¿ýۿͶ+H/ Æ /õÁ~ ßüæ73èw÷w9|ÖÁ±gåÙ³géç~îçèÛßþ6}ö³Ÿ¥ÕÕU&`§ÿßô&êözL&±v ûÿí¿ý·™$U&”}C„sÙ ¡Ø¾öµ¯ÑßøFºyó&½üòËvíCúï/ÿò/ù8 2Ý4ƒ ÿÅœKPzB8È_ýÕ_å>ÈO<Ao}ë[™@„óÛÛÞÆÇ;þ<½óïäï ½ï}ïc¢HL_úÒ—øÚ;BÐ/ÿò/BG Á½ÀmMßî¥R~UëŠ;W®u<O1pŒc�ÏH¼ƒñÌYr/ÄŸy•2ËJAÊ´õ A,œ²8‹s¥dÚ²©… ŽJŸ Üwñ'0 à£eßÑ=#fwˆÏHp’àž˜Ì�»÷û¾ïûèÑGe{ú0B}üûömúÆ7¾Aø‡HO?ýô€ãäga陘¯ß§ò@ 8yâ@ 8õ` ƒ‹êŒdãÈ<‡‡ª›wÈÆ“SÞaâfdž*'N¸¹UíP¹SÕxü°^~çÔ@kñÕ|ÙÇ'þ„éd.Ýî¾áʆóƒcN÷Ít’0a'úÀ83FÝ>t z‚°VÕx[Ö¨;Ø abÉóe» rDÊuµ¬l>XÿçΞ¡ˆ$–Íp]IYgÁmãÕ8Úùzgrþ(ʳC›´p&¢¶²rÂtÿx?Œ*Ilÿ!‚ Q³Y%5ã$b‚ŽÁhëêQ( £¬sdI?AhÚkgjTö~à™Ç-´qÔoÂy£½7YȤ‰M›ØçF Yµ¼PL|3Ÿ Ua-È>›¦zL‚³.7ècîc±Œ‚$?ÿÌ=Fw÷âÞA[Å3ES”í]ËÏSG lAÉt‚îE‚#бJ¦â؇žDðÒW HˆcH 8ZpŠ1‡…ú±¥K<H77ÖèJ«ICc'†AȶVî$¦âÄJªFucƒõŒMÕKcý&¡ÖkMzóÛßCßøæÓtëÛŸ§’Ìϸ!Ʊ%« Ûòx‹™a�usëÖ-¶×aCdó±}Œ>÷¹ÏÑG>òúÊW¾Âä˜O}êSù~PöáaÎ0(€Y¼è}Ç;ÞÁ3„aÇþÖoý“€@ Áöÿïÿ=ï‹°jPóIçË_þ2§dHóãóu¯}-‡dIç'L:”©fêä§¿ójµÛô®w½‹ž{öYª›r?óÌ3||œˆ@zãÞÀä¢ð÷ÿ>•~ú§šþäOþ„ÞkòñuÜ1çñª) ?¯¼ò §Ãù ÿúÂÕ«LFZ6ù¢|Ÿÿ‹¿ ¿÷÷þ“ÞjCþ/ÿôŸÒ¯~ô£tÁ”÷•,¬¤@ Ì"œL%ÏPu((©Šôåüðo€|yåÊzüñÇ™$‹w H?Xð®Áû�äÒý�¾(.AÅjýþ€FC« î&úg†eÑ8žÐu:¶i¡µÈïdÍ“†´“vh=éÓ«zHÃZÈe‡åe_˜y¹Ð•åêÜçeê� yG5\¤âId:ÿ$o"$ûjo´Ô>TæË…/HuæOMÓ]¨Š Cw™µßÜá¿ ²sÇ„¿tÎrrŸ¯Ê4<–)Nñ¾t˜õ¡òcæ9š§~Xžõχ¾¹3Á³dqq1«[ž _'ìÝÝB—á9‰ç€çïn$u¤éç©§ž¢÷¾÷½¬¢ Ò;làÃ�žû îƒHäÔ2a³cÝa JÍÌ®ð=ñNó›†ÿ\œâûN„ø#N|OsuÇÙIRÌÎ6!L—ʶºY5™f*3LXÈÔ{FÆQ |Í’ø”w&óY7¼Þæ›Áz_ Ò—š´aÀRÔ“ÚR¦VÊ)¶¯YœñÃE. äÑŒÝåÉ`ïo5…äðá"*UKQÊòÅ5jgF«½È¡ºâtD=ãЈ üâ&ü‘Ñ3Žaêf ¢%A“T‰ßézJq 9..xUQ݆·ÒÍ€¢¥-›‘‹V”Žn±ÙÝ¡F«aãøûL2 Óq R>6“ºÌd$1Ÿs1Á¿ÐÞo=7CUTV£ÃäÏ^‚CfÄ‹ Ó1€LÄ¡äÒÈ8…ƒ: œBuÛ‘4ÛãH±jÐ0ß—fPÇÜPÓ È¤«›ó2ëpžŒ_J…X×µ°P§Å…ÄÔI’ßÃ8¡®qVÕL^-x”)'TZš‰Ú‹šX` ÊAÙý—òµ)Fh0SÆ8²×udÚ{h.˜šö8"ÛöSæ+qh²€ c¶…&s.©²N ±Â] [ÊWdÒ“¡½ÃïhkS„ÐaiÛ”'åOš=šµwdÅ B($ÕXñ*WP6 M»˜x°òT ÇßbÓÔ—ùmŠ0„¢“é7×Àۀ !¨ï¶oJ 18ReÕ,èiä?CyÖ±@ 89�Ùå'þÞGè6 邱³×µ±sw¶hey…Bck¾ï‹ƒa¡±y¹‹cl‹¥…&uFÛæs‘ö;c³…ÆF^z’ÞùÃ?CŸyækÔëvÉÚ` #:Ξµvš;÷ÁÔØÆÒ*³ã2…J5ƒ5ÔÄL\,ßwá°@ÒÁá²à¤ÇDàâÅ‹<�g=ˆ2èuy`àÄÈùãYˆýñ, ³|ÑOÃvuP—]s„{nšVÚ4ù10lòÂòGŸþ´­ “×¶)ˆ8èS®c2Áö6­°‚)B×iíömj` Ã”a}m^}åÚÜØàú¼eÎ iüü@ü¹cöA9VL¾/½ðB~Žu“ÏŽ9‡ sŽ8æ&Íš9æÐÔ öA~8FŒ°Ñ4œåë.ƒ–W„@ ¸›ØE•RWî2»\åñr˜ð^�á¤I ã}�¥4¼+ðìñÅ™ü³ažË{Žiäãqyì öÍ›7ø83ÀŽ2R†MÁžóã²ñEüh²HßGgéÒâEZh/ðv¼‡nnÓ×kôßõÝn5yÀç„òbÀï,ø'ñŽ ‹î­Z‹UçPÆæ7`WGj^‘{ÿäï¡Ì\P:óMé·ÔŒÂm- 6‚ϼWGz6‘�¾Ý0Ûê×)íB:¦ŠSíîÐMÑÌÔÌaÿè=·ôÜkÙÆ l'©>45(vƒ™ºÎ)EŽàp ‰?¾¿˜'A*;˜ëhŽê¸ŸvÚ!ž™°±¡¢‰gìjG$„ÄG„±‚= ûzÜó€ÊçnÏ]¨´AéÇ'ýàx‡<OAöÃÞÀ¿ñ¾ÀDŸøs>?äº#6jÚý~¨RøñÇ*ìAH œ|ñG œø”èIØñõqš"-@åd6'ðb}ûrº6Î÷çyæ :+®#Ä3-R%¶3éˆ?,¿›Áªf#Qfر±¦TnÁ—;WUy=íŸ]U]yßõáuà¦BYÅÿiÐYØ®f«Mí…%ŠÒ;¤‡}ŠÁþ@w32ui^fà 'æ35/1s­¿·Y'j·0ÝÅŒŒ(ióUQ¬Ì5 Mw½n®gË8Õ—Ú´bœ"¤ÇŠ1®XKkw¨ÑlÐhgÄá¾TkD¡ªgÄÍ3¢á@@¬ªV¢™ì¡Ë:…ôÃßuFþq-íδ/³ OYu¨ï€L3Ô J ÎŒL’šQÈbÔƒ\cÒÆ™—¡nÎgÙTY=S—Ò!×­ª™"H°°+Ô¬Ìy·Û‘q2™ŽOd‰?LÞáÐj#ó™:¯1Y çR3ù´Ði ¨ÑRL ÂñAkKp™qFìI³kë<2×T Lª¡UÇ Rv‚ÉVµ,<YFÂÂ~‹O‘סOøQ4‹n•Ñ Skœ‹ÍÔ›6mI£ÔÍ:S7xsÐ÷v¯Lë�êÂñ­ãcb©¶3¶"„Dã™ö¦¾6ÜY«…Ðt5VÁ @2L1[߆Ds¢»|/ ‚#ßá3ë}^¥þ#N60 ÷çþçéÌʪ±³›L*fel&{@cB»³6™¬Íj¥Ä[ŒiG5ó£–uOêÜ -/.Ó›Þø:Z3Îö¿øìgw)É^ÌÕÏ' p!Œ0 €°V�Ôz0@ûŸþÓbÇ?H<.=Ôu0 "оðvÜcv0¶AÉêž”À #¼&`ƒ¹Z j@ âÚµkôï|‡0°qéÒ%ì@/,8EØ/ ºè7¢\ïÿûùØ_üây¢Î¡p- Š=PÀà,òÀ9ýéŸþ)—þëý¯:Ì 0 ?œ#Ê‹<p/Ê¥Ìøþàa8”Œpοÿû¿Ïƒ¾®ž>ÿùÏï:ãZ î'ôþ©²ËXS ~>¥ü\ˆGèÄ3Ïg)ñLEßÏX òºgöÔrxðÕ5ñ "³EÞý7ïÑ­í-ª™üñ}¼uí±¢‹ñ [ô}Ñzï⺴t‰óÂ$ÆnØ¡[ëÜùÒÈø'WW84$½ñÎÂû ï0~Þ›×o{»û"q^HâSëÀ»ïMìçÔÊœm’Û(Þ¨¶µ]ªm ¾¾æ:„šÇ5EûŠ$~z§tˆOöå†ažnVø¶²ÖÕ_ÕäO·¯–ÙWGqj﾿Ø)Å;Uy�m’ÛB¦–ÍP½ýÜz¿X>l¬siqÞøîÒùÇcÿœ7¡Õ).¹vŽ}Ÿ;77‘Öm×÷Ÿ_>7!vZ»+‡²vÇKÓ»H̺OPJ&9e8%ž'xÞ MZ•rKüA;qÆ}ß HãlïyÒCÙ¤M¨`>üðÃùsÏ1ØÓ( òqQ‚ì9�`›Sµü^îœ\4ØûÈÏIØèøÎ îAû³ï2*½Ó&Ã|íš‹>9I ?ñG ¨8�ÆŠ.^ÇÏu@˜ô“Ä* pN?:íÊ….ÊLu¿CSîøäln­3âÂMv]š1lïw®Ù™ZÍQêÃyÂѲ¸´H+Á Eiä–F- 5À\„P YJ´µ°Dª¹L1ÕŒqߣ³,šêjƒªmÏ8Ê{vf+;=[vÀ£‚øã‡iR)uÉûÚ« iÖY‡cŠ;):¢4\¢þÀÆ£{¦Íö³Ž¸©¡9‡QÆXZ0}¨µ%¢ó«‹ìàêõ0ƒ[e!î,ŸM”U®²^>iÍ…œÃõr³¨\Ÿ ‹ æõLöÍoëPÀ=„òâÚ5šuÒ¦¾uf‰ ”UÒ3‹í@)‘†ÄJN8Nœ„÷Çuˆ‡¬RØ@;‹GVñ ÊFh‡õºbu%?¬_U^¨ÏD›kfmóf¥'UÿìDI]p6ÏrJûƒ³Ž%ä àxƒšpXC† ű3¢]ÙÞ,-V¸DßcL4Çç(ÒŽ±»ÆÆ|~ÑÚN—úÛ6\HרN¬7¶i±¦™hSIüÑ^–¥ŒüHj¼SU?{00ù‰O|‚¿Ã©eà×~í×øóÓŸþt!=œôŸùÌgxq�Ùž*|ò“ŸœXµ„+£œÒùÀó¤#,ÓÒ8Ò~€ÿþßÿ{a=öjl¾ý­oçßËçü_þËáÏ~ô£$ÇS@{´MÇyŒ÷sÄ îb°ïG¼àÂ{Ÿ»…™™~œ1|38VNæ0K§ÛÉɤÇû«Rù–ÚKtqé"]Z¹LKf»Î!éMºÈöû/š1ë³Ý!—/Ð[Þò4Ç9°„Aq§ü‘ gïÈŸð±`Ðûµ¯}-¿O¿ùÍo²j^Uh°£€ý Zß…sG=ãüq]ÝoŽ …4¹z»©ƒ2‘(TòPõ¡ÆNµÊï.tªÛæG@pÀòvA–ðëÂÌázE™ï åÄõuÄ-\3?×~ü2c;àH ÛÛÛ¼iÎß…eB¹š ~ûu8_ >V¢p~8œ޶…íU G4òË7‹Há“\™p<!2 àzà‚áeR|Ín»#°&ÐÆê ‹#ð�8þW¿úUî€xä¶¡ãy ý b_�ä~¬ðNðC†9å„ö…b(î<×Ý=u(’Û²ð†s¼ëì{C••}J>@pú Ä@p‚0I†);U¦Ö¢iÆx¾R™Üf5ŽË…ä¢LZ–ט€Tj‰?Žìc%LUþÝ/™;VF½¦œ„’‘†ÈÛBŠQû4Ÿ±a˜mÚµvcüÞçe¡ÕœñYÞŠPQf "jšÓJ­K´ÍJ& þÔkîš(ZX4Ì E+«+´°´Bª±LÝaL¯^•†ÉÂ:Eõšéˆ¶hû΀¶:ë4%LˆI† $«@91ÌÈÃuŽùzC=ÈuN¸óŸ²¢”_}¨x®>nbëÂ1ó2›² † u¸ÓÛ¥Q’ª‡Æ‰ÔçA‘îvL½,œuB( YçG3JisAÓöųëu¡ØQ|Îayce–0k×™êToP û“BsÍj!œŠF¦¬|…ð ™…vÓtˆšÆ954õª3¥ Ô”¯ÇÊNÊ8jÔ‚R L¾©¹F΀F]K¶BX/eʹ°ˆºo XA×Kç*?îûxí\’¸TuÜ "8Yb¿+/I6ó]i=y•uÅ”¿ÝŸGï¬óv•j+w ii´ù¨äƒùy–ÙÄÆT_Ü�¡6Ò˜yiZ-Ÿ!¸ËÎ?š|NªÒ§@ ¸pN#<¯ád:ÈŒ1v„ºwWf«¸™“>vSü©TÇàú÷ÿ÷4¨g÷w¦$P3ÖÈð°çì-ï?/´íÖ²ÚH#ꃠͪŒ©±óš¬D Tj m¼’ïv0äŒ@ P5Z¥üã«¥L{¡(OáÛMP‚M#`P×…–œ§lU¶5lräÃᘴógèœ\“N Ÿäʇò,..pŸ¡âG-ûÚmZÐ ÔL›LöíP0 4&[áø´ÆñÂl¾ãë1 Žp|wÄ“ØpÄœ·#ÒøpÊ%¸ön2•ëK9U_gì.*Ü8Ró»Én›# ¹ã¹¶‡OGCùñ DG BÙ°8¢®#¹öâ«ù“Yõ(»¶(Ú$ìC¬ÇyaÚ¾c=òtÄ—·äíŸ>Z”;¶#Z¹óö S®¾|â+»¿Î'2!½[PÆ.‡˜E }á¸ët7ÔqоðÜÃâHq�î~ x‰r¸ûÚµs�þ<óðÛ…ùeõϬüPôÄ6×þ± =òÀ½Š6xOàw%i=9v43¹‚‚“ !þ‚U µä fsïƒõ*ÿžÑ^ÆÛSG°ôLú¥¬ð“Ë»Å!‹»Êˆ°†;Ci‡à³2¨ImL$ðh�jrÀ]åiJðfMì£'ª†ËÉ¥Ñcu îHyr­‡Ç@P”mr'…òç+uê›Î\L¦#kêq¹¥hµ–šÎl›ÂÈt�UŸ:ÝÚÙép\óö ÝèìFÍ+Ð# Ò>5TBK­†qz,ÒËÝÝŠMÇpPw€0lð�)f6›n¶üȈ?õØ8SLg;P4 ©Î1.aÀKœbæœ$-“Úì«R…#§h(ÅÏOð€ð©"¦¼44ˈÚõM_C'!ít"ŸECãÈA¥ÊtæM›îĘ932íØtÀkM”Út|º´­ÔÙŽÍvM=…ÐR}êö“GBÍv“Z 5¯+0ù&h+pp˜ÄVü(R!À"2÷Hw0¢®Ù�ÇR³eŽ­F¦nMý?Â+7›CZ0}«VÓ ™Kµ3ˆiÁ么'“g4Ò®Eݾ¦µ”v¶í ßTæ,jæT›T qåb¦ã$Š7šßÎ0'àÖ”fÄ(׳¶¨üÚT…Í(´7ÌÜÀì¡!0ÿ@ÎÑzL“ÉãÊ» ÊÞónÉ©ZZeÍ^eüŸìndž”é@ÖÌYà>Tƒìñ¤˜Çd³qHqhø€F£ˆý:uvŒÃ÷K»nÚqD¦‰zíÎ'ê¼è$ÄQǾâH^yø4íXKÒ  9‘×à‰'ž w½ë]<s N©?þã?æ¶Î!†p˜©‹÷œJNZÚͶtŽ[çÙÕI×;G±s<ÏûŽŸæôÕàxªßøÆ7Šê•ŽçL³ÉҬʨ¨È rû~thÐb{ÁiÂaØ™åAÑyóÄ�1€±`×…—= [˼ê7UÇ÷É#9ñÇ#B°Øên þ17™ d ×·Àà;?Hç$臠OmXŽ¢ÊÏAósjN}f\]¡þIÈ©Ù�>Ñõè‡ri}… À‘tœ’T9—¯œƒ´ŽüâÈ>ŽpäÊå®o- cæcÜ:·Ÿ¯ïoÇñ\¾8žËíß|\Ø.À'ùõêTŽœJ¾ Aê÷) («¾”'¤8"ž#ù¨r}¹¼G.D—#Æ -=ûì³t¿àBŒôƒg8žïh㸗!Éݧ‹¶Žç§SüÁ³i}ÂÜn(ßûeø <óbÙÕ‘ZÕ‰>àtAˆ?àDAÍP³ðãäí§ñ,¡œ„Ž;Å“‰#øé\¿&WôQEV‹¢‚ÒÇ$´—Oñ[1Yqh"C5eW=a *o™›=¾äç¯&…U3Š•é„5J"cT›þ[+ÔTk(6¸U8‚N 1àI]³¾AmÈð"ÌTÞˆj˜‘œšÎi2¢ L©YS´²Ø¤[˜5c^uѦ^DƒaŸ 2QY‚ ͧíœÖD K‹ÝY£fFy³Q+匘D£Éªþ(­‹g¥ÆD2¥ô!é¦h¢‚|Kš[VüaÀ³Ñpp˜È•° U $i`œ@zÀ„¥ÛæR4Œhdêrdx¸£¨¹…³_lÉ(µzĪ3 ¥ôúÚÞé§ÆˆÚ Ì2 ™Ô˜ =ÃîÀ\Ó!Òôm™kØ2*ã@¨ÁÙ„ VZªàbª}d 8ŒSVa MÝGf€Â40寙cBÎxÄáÉ‚(äzOÌ1V–M~¦Ÿ8’ Ó|<âYò•*ߺüÅ¿få4¶Ž™ád­pí(RXªâÎU½Î#ÌhUj�þ-ÉBI+ü@e*`"ˆZAœd¤³Ð„B»¿æëlê%Æ‚¶oê6j˜k‘ã;ž'ygÐ'óŒÕ¾,1 ?Õä¹ ‚ÃQo}ë[éñÇgGÓ›ßô&&ýܹs'w,?ðÀ쀇£iข3 Î(8™!3íVѼwÌÀ¾sæn0aIíã4ËË—À.’@°GèÒw=Å7³+ ¦èÌÌÅvÁ]@AÅÇM¦ÙÝÌ5vÊ.‚Œ¨2†¡öÛÙ…*Âà0BI¾òÊ+ûVvð•Xœò‰#þ G6œ’?pzù:Ô ;<AŽ´ õ5D(NÓ@9Q¾ííˆËêöðéÈN Æ'ªà\±ÅuàÎÏÎÝ'´øp¡°Ü ¿#«`?œ#Ö «êØ.t•KëB€•Äùä§&äB…~_ΕťsÄ÷9|b‘_— õµ[#WF§„âT‹Ê¡»ó5Ïî Û]U!çÜïy•¸÷>) á±@ÚB¸-G¼C{ó‰hÓàî÷}7 MA¥ |%ކO(Ÿ𥠽ø¡âœzJð·àX(·»¿ñÝ=�´K¶çv/Ÿ—ó¼ç8«Î©Bd @pZ!Ä@ ˜ébªú§Vžqå`¦å¡iwù|D ½À©À¨ =ã÷¨€õx&MÂF5ˆ?LþÉfø²µ.þm’u,“8ΫÛÎ>‰ø<­‘Þ5ù¡#›)%8Å&²†q£Ñ4ƒ«géÆ[õËŽ—8)Ìâ9j°eŒ™ä®o½n A`ãÔ£ŸÍõ‚?f»«Çá(Ìe‰Qר{ D·êCZm+j7Z™´°ÍÌŠ0CˤKUòpRÊPgºpjI½Üaf3‹z&ÿHÅÔˆìuáhq1¢í„;n +ÕÌ�9®œqa°JíæBÖ<\¢šËú·Ã½ºÔ!K@›ql|ýdD#S¿Íf#ºkãvlütÍJ›>ãÉ'ö•ïwŸø§]ÑI ‚C‡“ÒXÁ‡(wŠâþ„D?îézöüsÏs„‹"ûNñrÔx€r¥{?9‡é8FüÁ j?Á Á”[YͳË4âOAÞR @ è ŸÎø»#z8µ R³Ï!S2Á`ñ3Ï<Cׯ_ÏU v;N•Ýü0™ êÈ~¨/üc¥‰)yºòm'Ût³w“ndÜ#ô!0­ÛíЭ[·èæöMZ­ÓMêqyáGñU`0�Ž08(ÎÓ‘a0€¾ûl²~ÉIû›Œÿ©ÖËõ•¦¥wD0_ïO½ ­\ç_Az‚,$³Ûæàüfð³á: Ú"Êá”[]í×­\Ž2™h9Ç'"¡ŽÐ.\H¦YçUΫ8)COÔ'–²êÕnyúáɪÂR;…!7aFpÿá®· ‡kôàƒòó¾ +çQhríÒ}ß ¸W¡,ôÐCÑë_ÿúœøƒgî#<Âáº\X;”ÁWï‚ÏeÜ{�ÒºcÃã°\ØG<¯oß¾ÍÏX܇ûUH›GùgBXÕùh`â@ 8%Pí”\Ç}j?t–f˜|[Áìr¡¼¼}•s|8ÌOàrá|´ÔJ{zú6N…tÌzO‘V¥åöœ—PëB±ì1}GÃx#Ž©} tCÅŽè>ü#V…paÔFñÈÔSBa`ÊÖ©Ñ„ÒO‹Õ~‚0È¢qð's>æP.IX©% 5-´B:³Ò°ñÙûê‡Iw`:‹5sî*âpRö §&ψΜ[ öb‚‚õ)íÙNl™ßáˆWùŠŽ…SÚo„k9þ} ˆ|m\ÁÁðÚ®™C#þwݧI£´A½á€¦³ž²zLȤVŽ‰Ñ ƒŠLÄê@q‚ß!+…Bž5(I1CÇ8–˜ÙcUgFf¿^/¥Ûwv8¬ØJ»FµµéVRæåW»ôÜók\ÿ¨Ï„Î2y¶#VŠG¶¬ívHÍFj:G;´ÝIèÆ-M›;}Z\×ôèE­$M/1N‘8¤-ãoxõvU‰ju\WëœX\lÑÊò‚)òŬŒ%Óá·´T·½ ¢©k-—Ç*«fU\˜‰UšU¿ÒqíµÞ÷õÔ¹&‘û{ê ôHZÆ­C}ÓÕì1W)UVÕd+m nPtRb¢«]Ešïe¥‚Ê£N¬ñfIN»÷eøN ¸;À}çêw¾óž…ÕÄžþùç 3CŸ{î¹|†œ¼Î™êfWB!È9®ð›gDš‡<ÏÜ…×J¿å7Y•ÐN1.Þ๔ÇÝ;ߪ߳ìŽò¶ª´öùuˆ¡…‚Ó€Ò­®ªWwIi²+45Ï)¤á]1¶ïD3CŽM- î6ò^¬†àbB¹Ú)Öår8b ŽA€)«ú`‚ð¹_¸0¼$v¡£\Ià ”|8iIÓŠØ t˜}׌Oêëƒ5^}©E´/ð«–‰?[·éë5º£»fP{H/½ø"JûÀ�7”0àâþBFz‰³PU˜”uÆlïg BGy¢Û^àˆ&{M_V : ì–'|]NAuïH!øì†2aÇ….Û/ܤ4_ÕÅ‹F£‘¨óœP¸¶üŽ\ãÈuŽD‰çèn*R�Ò€øæ¾ïäûõ¯ <N¡ßAÜáÊ=�ü/(‡kãð±€øãˆB€KëÎË¿/@²Á¡“19vž²ÓB­ë)þ]­tµ[ œjñG œ À<J¡–Je!yY‡²A¹J}ÑI sâ€ÝÄd)ÞO&óè1Q# @ÉfvðÎINþ 3h?jäÇ…CJÂjÖ8ÓoÁ§¡ Û”w\í9ßñ=u„"t[) 2å€Ú=!þ8žL^vW³R“ãÖ7ƒÙ-)ó^BU£Z# …°Aí¥ej.´ÙÂD ÇIf¢Zh ;¦ëL5S×+K!=p±eœ9ÛÔÙÙ¢N_ÓN? z»NuSàS Ö8¶u+¢•s&ÿå†Híаo;º1¤a㼩G“z4Q!¢“«~ÛÖÆMdϵ[ØäÿU˜ó¦s’biS,›²ïÐf·GƒaÂçÓlAÆl‹‡ÔéšNW ‡“Ê:ÝÚ¤CÈ­©aКü{ÐÑÎVŸ¶;CÅ«ˆÓ1ùûZh˜ãéˆúÃ>5Z–0õÝç:ôµ¯Ýd’ :YÃô ê5º¶Ìï˜z]tú ,rȪÄtšnÝAüy(u©ÝP«Ñ¢ g›¬tÓí§´¶MtývBW¯ ̾C&þp˜+Óa¼p!6‹q €ì4Ìù\ ØÙiiºš‘hÐÁL³µ\Ÿùm·«âî .‡EŒì ”Ypدý�AÚwwšöòo> T˜j‘y¶Äèá2Ù'e:ZWþa§ ±Ì·éËšz™”F\¦ ?J‘ª(ÃbÁQ€ãÛÀ úÍo~“àlêìtèæ­›¹ü<Xøt3„ÝlÕiNc_ÙÇ‘‡Ê³*'D9<ûGa¦ß4§—@ 8<è'Øwâ û�ÉÓA N>¦ÉwK·[žÎîÆ ® ñâà+ ìߟVö­!^x¡@üÁkjÒýì{ØíIi@W徤WiDŸÖÛôSž¥­.Õ ~k²Ðp›Ötnš4ÃAB7oÜ È Jû`¿ñÕ`¢Qê‘zÒLIÆ…µÂ#”æ Ç$8ä×"#¡¹¾› ÃU&ËfŸÈŸ æ$?§T[^/}¹“ §ôÿƒSLó}N­ß=kwòáÒ}ß :~á _ÈŸÕ8ΓO>É*CãVqDürMƒSÚ¡éÚµkô­o}‹>ûÙÏÒW¾òöáø(+øÌ3ÑÉm/OÆœK±9WÛý¾š5ÙS œ|ñG œ:ULgXÙ°GÍFƒنɀ:}H7Ž&äzèܲ1"UĆ­‹;쌻f½A­z›äµzúqzƒ¢ÃxPèÎ# ÒùæcpÖÍà}Hëƒ5Úlb;Ù×zT§ZPãÐU0RÁ¤Çñ‰ÏÔ?¬™c·XŽJ8C(À˜ƒ…Q#¢z³nãÑ"¶­ÉCÕ ’{Y“‡Ç‰+›`!–tµÊ/P7Ꮀ O”]QÞnæ8ñå”Zæ¼ÏžY¦õÛ´14ƒ§½.u{-ZN–müótHJ[)[ORm:*ΗتÐÄi>S+Õ©'Í\< =ë|ÔA&ükdUbP¶ÁÀ '=Ò˜m`Ú)ë<WÊøŽh§cœU½QËÆt7!sN‰9ç^·Ïu"N¿?¢ÎvŸ‰`çÎg•ÐNÐ~´Æ,‡Ø´§”¢Úu›F©éDuSß êú44«nÇ×–\ÔÒsÏ­Ñ /gÔ†I“IüŒCjs{h.¦^²Çu>?¼p>Û;š:=³ÝÜ“b.¯š{§Ç3Ú†qÊ×c}}›î¬›uæz&ºaîeÚø‚Ö_Rµíã ð5Å :™²ˆƒq`‰?®å/¾Œ±½\®ÍB]‰c ±s|*ÌÉ:ZƒhšÅ^+G•Ãw¤u**S€JG–è¥Ñ&uë\;J“íºûϱ$?Çœ´³ DzӸ²ßÅgÂøÑ7ÿ†õa>KP ìpd½øâ‹ëcÌ©ûà={ušäº»?ý›ÂϵœÝp”´â¼ö =ó§@ Çoµ¤GH€ïí°Bùv¹ìz§`QYîö´Ç ~ŒÓß^ è%ÓŸ¯w‡ÂÜ?50þEøuØ `ü$}„ž™éÇ:Âpó~ˆãûÃ:®#ÿÌÊ÷nžãa…‡žv¿Iÿm~¸v}S¾RÖ¼DÉYe Æó>•—_~™¿c,¾üFXô½D7¨"—âàÙ âÏÓO?M_üâY¥ã*‡…y&9Í &Ä@0Bü§ Ê4› :³z†.]ºD;Ýmzõö«L6(@zøá‡©Qk2† o”7[-:»r–.\¸@KËK´±½Nw6î°ì%ˆ?>À6ôÇh qe[ ºzó*]»­9Ow\ .¯¬ÐbkZ¶9~“‰@W¯^0K'ª±4%âØFµˆ¶··h}cå,—iùÌ2Ýxõ“`�‡õšø§";ý(ÁÅoæ^dåV‚ b‚¸3  $ &Yxʨ+0ûqÎèHƒÈ‚õ 2D÷I'6¯q– F6~¯UL@>»Ç!¾çДKŽöº¥;|ž˜)¶½³Åç‡mÛ;è¹Y6Ä8ܶÌ9om©×·3¼0C¬×qf,8HœØYi¼mòîsý¢5ÛKÔ¤´´´HçέÒúÚ¦9Žž2¹(¦­Í}ç;¯Ðs/˜¶¬–MÛ×yç)—~ÕpX-WÈ`͹ ÌýÑââº|ùa¾wvv¶ù¼qMoÞ\£gž½N¯ÜTÔ*SŽ€.=8¤Gž|*²tž}•9iÔXCÇ'ýØ]ôXi#k³¶ æ¾$VõÁùs¬såÄTÇ€›a&‘œõݘœfŽN4öCg6 kÔéö3â¦ZdòÉY™ÈÞ/·k`ö™ûÞ'*¹r:R’+³sš6Šœçq¨[Ô¯÷÷ËZ Ìî=Ü·Ž”¸ûÒ¿g¡ìüñßíâ@ îªÈ?þ¶©~·]ìtç—(ûN+줲ûZà ÃçÝÆ¼dœÃ"ÑNœÿÏ—%˜÷D(®?ÿó?ge„ú‚ª²¯ø3m_÷YEüÁ‚kÁ¾õím[égš?t?Í^Ò•VÒ<"@ ð!Ä@p¬áDW¦†ï)FíÊfЀ(S§F½AíV‹Œ9H£>±¢…¨Mq42ëBª‡fà¼ÐBmÉ, Ü¡\^Z¦–®P2Jh-Ý0ƒá1«¤Df°žÉÆ8ßÙêйÕs¬Ða1ÿBÒbs™Î]8CqÓææEI†Û¦ó^‡ºI“’^B£NLËÍZmŸ±J1©¦Ø¬Ã,žÅ…E"SÆá`HѨF+ÑZ]Y¥VË”¹ÓB¸HgÂsˆ7F}50G­™³ˆh4@§m—´º¼JI# $4ùJÒû?“À]5'¥™èµ—ÁZI™ëÕŒ¸¬ 8¬›ú3Bk§nbœ ƒ­o€€Ò5õÛ'µ¶FNAˆi¨÷ì˜õ§Ô*º¹1¢^r›Ã$%ñ 3hôNƒ¤I/ÞÑv²@)^‘aZ¦ÓÐZ<K­åsTo/“ŽÌµ2Û°Ý•]gt û}ªÌ®ˆ²%˜s:•ö¾©±* Q*Ê.£DSw§G¦ÑÐÂâ§´¾Yc…KÜѬ „Nch§èY9k¨ÇÔ™Ü44uµ£$h§‹p\[¬žÕ¤ÎZu¢ çÛôÀÅ6-¶¾>;ÛhÃ]ÓùéÐöΆ#ìoœ-枉µi×qD½¡i‡Ã‘i»]s¡BS†€•mЦ‰Õ”4ÝÙÔôì5K0º½6¤ë7ë´¹e~›üûƒMVÂ5¼rå"9{ŽæÞHM]ö̹öú5êöp Í}»¬2â‹Îkʆýò1Žý¥æ €¥ @ iØØÏL.SÅNÛ,âR+V9ò‚¨5¡¶E {³ýЧG'©}¢…æŽÂ€?•yÆÔÑUd®EÀDÅ4 Ìv[ÄFM™gY“…,IŽ˜ôÃDól µgâ«3wniGI£nŽ{ÉpÁ €Sù)“uœSÖ`ŸNÈ> €ƒ˜ù{ÝWÆ©@p—°—WŒoßkw×´Ð_®?>iÏï2L64WZE8 ©?ögÝkìˆðBíù`BßtâÏáõ…î%ñGpzà?ÜDILæ<Íľ½�õ‡‰’Xœú›¼_â¿ý¾ÂÏByæ%�Ña>ùÁq…Á±‡ªøVЬՎ@áV)ŠÌ`~{a‰Î?Gj”Ò­ÍkDMÍ A}³: zØ FؤK­Ëtqá2«@¥D „ÚjÅ 4HGÔŒZ´°°@«««týÖuºyç /ŽÌ€½T7ôyi7豞0†üÔà%ŠâˆúJÛf ¿Ñp{Dý­]¹r…€sýúuŠƒ„ZçÛÜ ØÞìQدÑjt–»ðY9Kë76øX+t†FzH‘Þ°ÇMCv‡¦SÜeµU“oWÅÔMLL°Äº/(;бŠÑ0îRØ0× J™]ÔBjP‹ÕŠð»c:ø½á ß; ¨óXIÐáÔR³½o‰@‡Ó´ÓíŽ"êŽmŒèú[') „½²†~œÖ(ÖMZ[ÑVº@¡ 8ÄZ´°Jí3—¨½ržê +¤M»H©Æ$œ ; Ž.VnùwGü i>-å"ñ'Í +”“~ø¬ßg«Ó§¸×1å©ß h}«f>“ M­Q½Þdõ©…vÃÔ TŽ:´­¬ÉdÄ—E‰És $žxƒ ޏÃÙ8CtñÜ"]¹Ô¢Åæˆ6¶µi—1“~ÖÖ¶©Û3ÕÆœˆ³ð_¿5Jë4J ¥ÕÀ”¡Á÷Íh¨hØ×LÊJcM·7Í™\™Ú­¯AMf•:”6·Lž©ÉÿÎmzä‘+ôä“ÐÙ³ç©ÙZ4ûÖM[L¹Íq†5³éäÕ ÄÓ²A}Ê[šbs'(T±ßÒSzEÊTÚb·½k3î Î õÅ­,\:œŸÙ§Y¸~ýc¢þC³áÔ0«„ŸzÍÑ“jÖ&Öë¡ §BŠë6ÏZâʉ?e@AĤšP q²ØÓˆ?6mèÚ3LLGànÀ…ôÂ=æ‡âs÷*0+\@ @pš1+ÜÐq|psLÄU”«xOÙ\øœÈŸÿÜkfTÑ)¶ ªj{büZ}ãóƒ²q§[àשÕîÅÙ'„ä#8L8•tçì{UD_Š@ 8‰Ñ@pêà$;æf†„.üQ ’`ýN²C-½ÃÄž²Œ,¾×jËI‚¬³¾½ÎëD§olB!º° —öb›Îž=Ë¡}0[Å î ü\˜Pà1ÿ±AH¶ ûÕj™Áøóç™èƒAþQ2ÌË€}bmÊÆ6¤’NÍིÔŽœ…$:@ùp>¤²¸¾Il%{#Úîãèb`e-¦^±Á*ªŒTʨX‚‚9?sÎ5“Æ3l Î9€P£¾¦^·ÇÇÄ6(Ó O¾¶Ë+¼Ï‘†+иó¯×•9ß>­ÝQw$ÍuPç YQ÷ÈQÙ¸2Ϙêsø3mÕŒ©àhÜ!ÊÂW!ÔI42õ—ÚÐ`ÜÞFY9eë/#¾wFo{«O·onó½¡uÌ÷AskHçΣVSÓK/õøžãºÖ©UÈi6hii™ÏɆ1KÈøxè¨÷ƒUþgŽ´¦ž®oÛgԹЮ]‡?ŒBVÚá?´Wè‚ÔŸeX¸®TžõÕ ”UšümàîÀŸ™–“Kd½ò}hŸ3Åâ€@ œtÕþiU¸•r»´Ms8ŸÂ´3Çê?Z=ƒ¹fÂíž üšqJñ”#1›ü£ÄÍ!œ8ˆÿR œvñG œ:€èÇ ô€å #3°Íj :è479´ÔpD}ݧ~Ô£Ú+QPè3rŸš”¯GToÖ(ŠBžqãìµ'-rbÏ2‹ß䮄LˆÀ�_<²$¤Å ­nÏa„PAÄåB™A @Úzd©BÅKs¡I¡Ž¸|:±iÞäe•@øàó j„¨L Îð1ˆAŒ2‚L2J |Òc0 ¨ÓïÙz©Õ9b–q%å`Jæœ#&²°2”†Ì€¡ Áaò òYªÛëQœÆ¬@1ñªL©%X™k›ýAÂÀv PT§v{ZíæB¤Îa3Qøéçµ·ÚÕó§P–x¦ADS¶Aâ ÚêlÐ7õ7êPÇ´„‡Bø)Ô Ô¸.Ù)pÎ �™dÎ3fâS}Ái'PJ,!„ o‘]ꙆÝL½‚d4Õ9¼òŠ"ÅתÝjÓùóL7ik£k¶™ëh>2×yÐÑ¥‹ÐÊRnݼfʘÐB»Æå tHK‹5Z]i›c&s?RÓ>ñg<‡Í©y¿Öô¸âîÊáuöB¨³m?4íJG OíC{R& …9á„4w­í¾´K¹h‚ÜãU*¿²L°<-Žíò·ë¤ó,Ü ¸{Î)p98RrYal^Ì &@ KqÒϬÐ1…m9³g’,ÄvÅþþöq6Ó‰CjFYø|”LLÇþ„Ì©ëõäú92ÞÝ9,N„ø#N`HÕk5&#¬®®J4mv{ë˜úqŸ†ÉÐŒ»§L¬ €uê 5êêZëÞ¡¥Ö2“it iDCê§1¥½˜ë=Úên1™¤Ö©YkRÔã¼Ä 3«g™d²±±Ád”V³Åƒú£xHA¤8¿Î:éÈümw¶h¨‡´.R³Þ4eU4lޏœ½áŠ:!õ¨KƒÍ!Õƒ]¾|™âpDi“Š4Õš!-,-ÑÊê2­Ý¹CÛ[D¡¦¸0 pkžýù I¥hB…ÀÆU,Ú% 2VvÍ*Kü!s ší&1õCJ% 9Ôˆ8zS¨,)e„U`³¤3XCZ"Vš˜:i˜´æXæú˜½h”¦JÕÌõZTt¶©¨Û±ñÛ6µ-3[£­­˜}Ú­5š<j” פ½ï{‡ž{kšýNAð‰Ìµ]\ $Zävª‚”ÂдÛŒÂm4²¡ÂT�5™”ë j:ÕjÆR d0Ô‹ûUê©£í³ÂNZusTDƒQ¶»D“OÍ´ÕZÍkq„·:5j¦îG ;”Æ]Sw‰YˆI:;Û=zååW©³cÚó`–L›\ZZ¤……”VVÌÒŽ™XõšGëtn©ÎÊ> m)sÜGéÁ‹–ÈenSb&ÚI”‘a(äëhj€ÍæMTªA7˜^E º‹˜£óe¯Òˆ"sßÖk¸IFÜ2+U GYZeÒT "ˆ dè9þf8ý…eÃýß÷¥üg‚@ ¸(8îÕî÷²@ @ ˜»mF—‰ù³ú•„Gü)‡ìR®w?î›Wõ TågÞI÷gˆXM„úR¥Í{”~«É z—cÎØ&CåÇ¢t{?´à°pþiËà°!Ä@p*•%˜0¥(å€È“Œ˜�ÄÃèPNQf}dÖ«!­uÖi˜Ž˜ØƒtP�™úÞ¨CýN—vFÛjÔfP¾f÷…êˆA”°Š8ý^Ÿ¶¶6y=™õµ€UX ¤ÌSy§·M£Ô†ëBH$u@B ƒˆI­F›:q‡¶[¤¶~‹zj×hñìu2û˜pÖªj.œ?OÝN‡ÒuJFÊœ£b5 Mó¸öæJãfãX#8#ZàC—•Wì'ê£@ü ,ÑÊ<µ°ÅÄ•^@º®)Ȇ Ò c çU@zª×h=JÛð(|ºoe–×&UL¢LM%jD4¬z 80íöµê-¾]sÍúµ&j±%‘í`ù²ÀÓjn¾.€ž{‹¥ è£j¡YÆ ;V ÇÎ4³õÁ,%EÙõVL& Mûo5GÜž èƒmØq!¼š­§Y_©Yg- 2UOzkÀñÔA(ª™ûJ<8ˆEˆ M=õÌqã>-/Õéì™ÚÜjr;¿uó¶Ù¾C£Á6-\Z¥Ë—VLkZ\ÐbK³Ñ#Whu‘h{yØVtñ\DgWˆzCE^À×Ul¬îMV+—Ñ-”/®ÆR*BºûP³ô¦g“P¤¦¾–­ †6¤_Ã×ÜýŠ@àüàúä{;Ÿ}tµ•òJâ—ß뀪ü@ 8 ˜øÛjñ3ê€ê”~\EÜ{ý¹¶¶fÃüe÷©}†‡ü¾tÀo·?>g‡@ Nî·½Ëáͽ0½»aÞ>»v³æìNãõzÒ ¥fæSQ†,ÏÂgUþs`¯>ø©Š.¡Šü§³A“Â<ÈS¸T{*é€û€„ »7¨jgó®;ÉâÏþ *ž©þ³Ï=Ó|Ufÿòäʽ(’é)Jo÷ûõ ‚ã!þ‚Óc ¡[¢IÍtk2ì‚qe>Òž¦Žêò¶Åö…IDø‡Áº$N¨Ÿô(í§¼})Zæð]nP®oÎJµ:5ê ÞÖÎÎ]{å--.Q½YgeÅÅÅœü`�ë0ø‡ò ì('uˆz[ÇL2Š“wØäu4Ò¬˜‚m¾±‰¼pŒŽNL^qêçþzåKønI6¦>Ã^NüÑPÁ h¦H‚PgÚ |bÐu¡S¿æZ¸ÁN¹ý×ëùöÜA’IUÈ1’píLjKüQÖ€OtJÃØnõDI†6ß¡©¢£Ñ£wÎ( ¡ %ýmj™ö’„AÄáö–š‹C˜±ZŒ©‹F#¢v;¢fCñ¹"ì[2‚úÎ /µzȤ5lNº\¿8§QGÝ­ÓÇŸxœîÜÙ¤mnŸ:/0)è.Q«}nÝèæ­-º}û‚À0jµÚtñâEZZjQ»Õ³å3×æì¹³f›mïƒ~Ç´á.·Y>omÃçAÈ’›èHc?wVẴ9¤ˆk8_Üsæê}³`™«Œ°ãœz>@e¿Yù'µ×Û…ûb  æš½(ö†óçÏÓSO=ÅÏ[<[?ÿùÏ›gé¾7/\¸@=ö§ÃýíHÇ6€ÁòÒµÌ3õvÆû0iÖ<3@bÒ°@ @p p\ÉêNí'ïGU+óLQ÷¦†ËæÏUåU^·×úÓTÝ¿ßÏuØÛ�r=÷Gì–šHUP—Æë­rxyjáüØÿžn÷ì2 î2ü¶é“+ÄO%8 8âàž±eOyû´|ª~«iäM@ ¸Kâ@ 8u@·aŸRTP=ˆh±Ö ÁhH[›Ôtih¾c0 H=Ýç}{Þ€¯Q=ªÓÖp“zI—ñ€mÉõvFA‹6zëÔIvh«·AÞÅ©É+ XÍd DǬØsmýeZ.P³Ý¤á—m8²„!�Ä–z£Ný¸Gwvn³Š—#î²*Ъ æ_3lS‡tsóUVÚ꙲õ{æ˜Cêô;´¾¹N}Sö”•qb./žnz ϺÑsöXuõo/¼×Ì=Õd讃x ™Ø‘P×ÈMpágdËË*Jp®h8W"1¢6u;Ž¬Î‹ùÆŠ†j3¥8@^fŸX±ZŒJ‡Å‚­=Lmä¨Ô¬ĶÄ×›ÃdÅ1«?iN1ÎÇŽ5EµGzÈ$;£)M@ð2mÉ,õzƒIQÍ\~Äói fuØ…U¬¢€ÂHQ"¤W`ÚWšõµÛ[£a2G0³ß…‹K¦®ëfÙ†c”©§ÐdÞhÕ©ÙX0u?$hi¡ëpR&¦,/¶Ø›ô®i¿w@6‹ŸÍìW§Õe„ú2e0eît;¼miaÈB“LÄ dͽ0y‹gtAí'µçÏm&ðÚ/Íj¿Ùö¬þJÕ9­šKûOÿtMC“×9,ÌЫ˜ æyˆœ:–2m7 m>ó8ìXÊ®·³ñ4¯SÞl·<ì›Ê×ø)Jˆ«L‘ˆŸ)ÙÎAFôq®³‚l¹¸³‚Cˆ9 î€ìƒç.ˆ;[[[ˆ– A^ºt‰‰B r:€Ø‹}@Àágyy™Iƒ�Èð]Ä¡$@ Ü]øá¾ªÈ?å‰4³”&v³ßËçìÚ׬¨²‚EÕ1æÁžˆV‡ˆ¦TéSOþ¬TÄ.¥›ß§è ´Qü¹÷¸_*)G¢øspø¤‡Ýšó8ËÛwS›@ 8LñG œRŒI át‡)6‡´ÑÝbR3^`SB–�’¤#ºº6àyCð;V±1¶­á¶9ág›ÂNhIIÌùqžƒ!½x}È!{†zÈd î`‡ÂØ¤Ý 8$–$ç7Œ´±“жڢÀ OrPÚÙÿ /#ê÷;´që6÷ž“LËpÝä±½f‰L ³8’OJ2Åí-s«RUªÁ jOå’ÛεßAfµRÉ)õ¢õTʄȜy·—$­Q£‰P'us¨:µšm“@)Èœ_hòiD -¶AØRW[%¨ I˜<ÃGOÍï‡�ã0`1ÂLiS,™a‚IÁ8/ºrÿEîJ(çæ0 ÿØ!Ï@Œ "K†Ñ*1KÀ툲d·¤æ|ãtÇ|¯Q³ÑC—é‘+Kfú6ݺõ2 “Èd‰çs´²¼BõhhŽ<Ì'L{5õÇPŽêÒ™E ­EZ] EÛ¬ñb‰+šCU-.jZY ©³Pß¶n¬¨ E ¤®˜WàêBƒ HjÁü4×`ÐQ-L¨iFTÏœiö>uÓùwnÎ4kΖGÖQ»TqN$§&lœkæÚoÿ~›öè7…p¾¬»x– m)ØV sÎ5&±EQÈÛ‚,#G+BÐ:ÍHPž³1?º¶÷š.»@ä tv?à;¿ûU!x7ƒØå3<W¡ìçˆ= õ€tõêUzòÉ'iii‰Ó:UB¼ß‘J@~Ø/‰Îœ9“‡ â@ @0°›¡®»°°À¿acÏ«ž‰}]¸t_õ˜‡øãÒù‹[{ß‘s¦ƒœ2P)¿y0¯bÅ®ùìa¢[™$£UÑç ²Dª”Hx.wtïïНrÿ§(þ'H?7ƒÚSsLAYíKUh¯ªtUy¹íUû Á½‚Á©È=PÀIÓ„U¸ûèõHS5¦¤f =.9üŽ.«ð¤ãíJ;÷Ø7é%ù6‰†éÀr FTtWã²¥¦LCÒŵ.’bS~‰¬PH5ãeÉ ÎÖgĈÀæoåƒ}ÂÏ>Ð*åÏ:æS¢Ð¹×9…jÆaÒl6(2Ž—(°g ÒOCù>õBZÊŠÉ;f‰Ì÷z£i¾¤@±'#=%ºÎ$«(Ué€Ã»éD[ÿê×>#Iq(,¨a_„û‚ªPvÔ‘y]ƬF”NUþ™®ˆrøÆ½›Õä”+2i}tš¿,Í.ØqÄÄÔmÌuÕŸ¥¥:]¼`]z›ý€¶º) “‘qb%Ɖ¥)Œ¬G#Ô¶gšcÄ ’ »!š…6ÈX‡øJ¹þ¡¨5â°\( ”ˆꦠ1©8aU x4 Z`~SÊD:´’$¶ VJ¨n®q»Õ0ù+ãxë³bÐ+¯`°Û†ãSU GíVcû®iš½¿sõÌåä÷<1Ñ' ­dx 2ÒOÖÆÆ·Ñ$ÍÉŸ W,•£©Œ÷¤òî¹ã¶«1µH Ü%À‘2|___çO`{{›y^xá~GAñë⡼ܳ*? µ‚„gÂææ&§›6ƒW @ X8âÂê>þøãlO?óÌ3loÏô×Aºqùì…ø3-Œ €‰ìÏʶÏ$þð'Ý?轊Ž7¹Ï!0ù„EW'¼E”O‚ïKùþ Íu¹@{Á^ÙB%(-¾Áý´»ƒ¡Šœãz¦‘|¦…+ç¹! ‚Âà>¢“x·³7àXr²ìãV"×Qj×;Œ¾>à4Áàe[/ÐRSQ”½¡jZQÝ#þ€à¢T’³ðûý‡ƒBH”°f²ÅLJÁ6vÄ5Å,¬aw@ñÐ*%a»ÎfQaF«;åº@ü¦CVcºïÈø¾ó!­±„ù€0©$'59‡‘;W÷pø(S'n†BØ!\Lœ˜}ïôhs'æç­í”[pˆe¡¾"Ï,l†’œ\¸n¨ó¾)Ë`0ÊŽ1â㌆v�×Çd`9ù52Þ;¦~ÔldÛ@ªÃuKì9AéJ¸†;Û;ôâ ›ô­§7y€\;‘ª#‘jUÀLb,/¾øâÄ6<[@ä\د^¯G…|ó£`s @ 8TÈ{VpÜ�?3/_¾L<ð�û;`ÃoâÂçZ_ËtçüίRv÷D9 ˜û,«H¸ÏiJ?“Äû±×»e…e/Op¾£ijn»;_MJ ƒÐN”ŒãÌŸÙíéx;eªÇ<“ïÌ¿(xöŧ¿` Ë„ŦxƒáˆûCs=xÒç£s Øù¸"RÅDÆy‘^Æêï+ôi½�G€÷wq/ì±…Áý†@éŠ"ºô{ÐJçjeE—«sìÚY™A *Äç?Ú+C!‹¢O¾GqæÍäö] ¶kUúÌ~ej@èà©q¨ÄCÒ뼄±UI5òb‡#´ ^­ "WÅ4  ëCv4ëQ®h’ cÅJàT€*N‚ðF–C©I•' ^…Æ×€°l_å®Ld’„™“!©ŽŠ¦í¢‹gMm&{'i©ÙÛ”]Ú ‹Sü±ÒQŠUpÜ‚X¨7¨ò¤®SÈí-`¢O«ÕdRT½nœ0zÈŠ=íH@PP´¶¶Cˆ>séŠqŠE4Ä´¹Óíõ˜zÝõ¦ÎëÚÔ;®‹UâAY˜T…v±Ä…&HDæwÏ\§~H7×FTowéÑSZ\$v ±“q" †Cêõ{ÆÉ–˜k—Ro˜PkhoqŸÂhDµzJQMñ|0>f³eê" LKWÜ'ÁœõË5”Õå<j?ã:-Ì\Ûc'/ô±—¿™,ç/cU,ç(ã[[/S®æCEG¢Ìî1ôø~v÷´ÿ9ÇîÕëͽÜíõx9tœpŸÔn&â”Uœ={îT¼ÇA²·¡§Ü‹»Ï‰Ü#ˆU)˜ õOhÜOÑžšh¦:jÃ$«±Ò¨–;Ypÿ€‰F¯ýë™øåL`zä‘GØGrëÖ-&xï”9ga–*„ŸÆGUˆ¯ÝÖOä©3ÜlZžÎ;ÇŸ< .›4ç&ŠùĨ7I'Þ™÷wbüx õðd0ãSÛÞÚfÐB{·3¡'›ägçìwÃz<êæ8ðaRY`Ž»ÜnÒÙ•U‰Ühµh`üB·ï¬ÑÕ®ÒÀ›�‘+‹;òŽ­¡’òlì%íôýÁq´gå,?Aù™,GBü§%ª*}ϘóIÅãŒEmÃx,¯ÅüRUH8& 8Jçœ+ö^g‚ö\B*’#(W YÒ7¡tЧ¤³c< X›R2Gˆ?Æ¡Ç6Î9ö T6«*0Φqž‹‹-ª[ÍY“Þˆú;]òô†8üšF¨«DÛ°RdghôÐwϪßN=±m˜D DÓ ´]È#ÿ”‰@…³Þ×¥Mþa-¢Œøƒ!„ÔBð8eêE™ÂaÙ'²›mY96zÀ!ÍÂ(4ŽšÈ8´Z¦ÎÚV+Mû¨‘ùnœ<a>·nm™¼GÔl,ÑâBDÎ^¸6¤o?Ó¥NoÄ×£%T‹†ùŒ¸„,ãàÁ'‡OSA®:4i³˜«U3×RuéüÙ¬‡ì >¤A7¡õÍmê€X4Lhaa‘–5WþÊjͬhhÚ‡2ç  ñdÐ^B˜6{é‰i/hÓA©NgÕ¯#Q%ö“/®w§:§Çml?°„»ØË†«•ò€ÚhÞÆ²¸f9¨â°Búîr }s‘~Äs|×PV °ïNò~Kå ŽΟ¿@'z«É=C§@îÜ{ž^ .˜;–u™´Uâ({rb´Ê?ËÄ à$ öÅ©!\/‰Áï‚ È3 Ø8uœi}÷Y„Ÿƒ�åqårÊ= æÀoƒòÁweÜX‡4Ž$äÂc_¥ði¬¿.±ª?Ž?ÒA]*CØ6 -ȜւÉÄŸÕL¾ÆGÂOT«Ó’ñ=hò=¿´hœE Sã+ê¨7AÄÊ)@ö™2·ÎúòRó̃Ü]œV×׉ow»ù^÷™kEˆ¯òs¸ò«ökZUù Áý€à¾AÓúïó÷eÇÇqm!“ƒö’æÕ´ÊGã=lqÆq`¾×C€!†dCt…5îŒ÷º=v4Ôš ^àx€2P¿»C£AŸ£‘u<Ôj;6¶¶9¯šqÀÉ€u*yÖ ª°bi™g%FvtàXK‹ ´TkZ§Ee³‘ǧz÷LùÝsF½±â‘9|æëÌ`¦ Ý…çfgU…'šÕ“¬ºNJÛÛÛ¦¾­tõbc‰®œ_4ií5XYiS?Ö´¾¾AS§ÚÔYŸ<Pú3Úo@£Ø†ÿ‚BHšÃ¤¥”°êPš‡dc'Pšp^;;ºu+¥_J©FtéÒY¾Ö®Žq]O£n®³¹n5³,´Í±Ìq¶¶v¨×Q¬Jó›sd=K-‚ÓiaÄ!'Ì16'wêÑ€Êÿ“°¡w´ z Žàyúé§YÙçÑGeßBñÞ¸q£êkÊƾ2üðA]¹r…Þüæ7³O꥗^¢ëׯ³¢ò÷÷«Ês¦Ú÷w/p!»\3øó{~7|wi°}uu•×#ì°Ûî”›á›ÃþIþÿÏÞõʲkÙÁàd¸tËîµíÙÇ^sî­kʨ¤$u ª†–^¾ ôë÷~ µÔ�’�¡ÕøTP9U}·®?÷øíÍréðç˜$#˜±2sÙí9Îɽ2# Ɉ 'Çö6lG:|`“QhÀ6Ÿ²ÈiOÄÉg ¤lYú½ (Ié˜íqÇ_Ñû7oÐ÷ÿà÷é»»[´™Oi#Žèg÷Òäxh¯|Q¥¹!žµN³êmÀ;ûÎy'ˆ?틼Z§iŸÜ#ÊõiÓÙÚ#«K‰ƒërRP@@@Àë‚@ü x…¸¸çÎÙ}ãü(D&þ¶'WI/jAãhá䨉—QÆÆƒ˜¦cª²„Î:âf ÃÀ¨*©“Æ4Øè‹á�¡¾ô|BÅÔ¨UEŠQ9¥–ü¢Øx0(Þ`£zœ̆¶6púÍ&9%¼m{Ó^òbÎÇ—4ŸŒ…øsss—¦lð‰ŠŠÄ$¯¥ƒí5¼™Öú|á“ (Á˜$.óuò¶”ë(åëD8¯²4rÊbNER¿¤K!߉aæú6~ª%E´±¹I¹Ni0x /xmÙ`"ÐñqÁªŽ~d"¤+k0ª¤ka“ÃoE&\¼òŒJ†ªƒsîW3ºoJ=n'¨õû|þ(%rMQƤ¬ÓYøZ¸ÿn :4bCÐxŽö"/Œ^@@@@@ÀIøDg¬ x= NÙLè¯ñ'`-< çôÀÞÀÖl°9À^†ß^H©Óà}ÜÇ…¶ºví}üñÇôýï_ˆ?ØÐ_|AŸ}ö™€@>B9^&\H/GîP”[ØæîåF½9¯Š\Øî„ÁÆãosÎ_Èy ”H z„…/ÅŽ„¼ ¶ãAå˜Ü¹ø<óyÎöª!¥üûðÎ#ÚÜ»Fwv¶ixó}±HOGãZiÌ4‚ûs>rzÑ4'Õ¾`Žz%ï™€Ë í ´ÊQhÙwŸø³¬ö€€€W@ü xç¡?:jí[sØi3\m*'¡[û$iK1‰ôÜ„ÙêÇšvÓˆvª‚¨Ôt;F˜£)Mæ‡lHxFÙä)mnìÑŽžRqTÀV@·’”æÝ’ž÷i0Îéz¾KýyIQ¡éh6¢ƒù>ÝJ3ÚíkSÁF†nʦ62¤\¤kù¾2`\ØS<ŸÐÍ„ ›1•ýU36^ÍD^8)g”èÄ„Ûò=ŠVM:UÕ¸3¯\ÁP­Jkê5ZPJb#*+ÄQ‡¤2ÛG2’¿Ñ•¥õ:šúý”³ˆåˆÙ•9§×B®Jƒu²¾„’šO‰ÆÓˆFÓZ 6²ü}FÇ£œºÝMÚØàz:ÊÅ`STk.¨“j)Yš¥&¿,•TA¿gÈ[P :<‚:öÅÔí$ü‰¨×ïs;ftóÆ67K!úŒø|Q2 J ˆâ-Q_š K [–f±„¨Êi£Qy­GÃeÎÅ€D± ç¶n‰H-é›ôR1êp]zñ´§Ú+´K¤jùü€€€€€ÕhÛ|#Ý:#q0Ò¼Fðȯam-` –©ëáðºÃ)ß@ñç·¿ý­lƒMè<Ç;¥ˆÊx=Éo¨üìíí ÙçŸÿóN?úÑ$Ô2øþÕW_Ñ_üÅ_ÐÏ~ö3úÍo~S“cÜñ>\™•ã× Üf¸æÑh$äGÜÁo °a´ òãÈ?°¹€¤„}°›!½SCrªE¨C§òãêûröp½tÒD^)¢Ív ÙxBº4„¡²âú´Ž`8çãÇsúŸþçôôÎm!PAu¨ßësÙŽ$ÏJÛ6X0î\ B.û¨ º€Wˆw«û]ãç²çé*{sZªºæ…øºÌ˜'¨\5ñ' à-Ægç8ˆö Z¯ÏÐ}¬ÊOɰ& )›Èi3¢|JÝHÓFÑFUP̶‚½²ás¶ìS§xFYþŒUD[|Üh>¢²¨èÚæ *SMÓbHý¹¢m6ô *Úâ<·‹cºïÒNE‡G¢à³×ߣ(‰¨“äB ÙÖ#špÚjÂÆŠéˆÒ|N;QN׺‘ÔGCº¤¨œs¹ø cHì]QD«+£"ÃôX5 XFúYl±¦Þ*!ëà"<:EÜøˆ²LQ¯SÙ:…±Ä(âˆ%b£JlÊ™&š2¤OA⩬q&¦á$¦étΆ®)'9M¦Jò‰ã.ño\s‡â$¦4ž‰ºP·›„ŒãV%¡×¶6;œwl B|ÍGÇÆe¢4E,yn¿Í.íî Øp£h0˜Iˆ°áˆ]I—Æ|ÞRg4ï°9Ÿ'§$E¬xî#Õœ¯$«Œ¢‚OœTÄi’¹çмŒü³‚ô㾿„¹U]2æ—Av´»ŸÂ<0 à\ðU~Úzþ_·? àåa­â>9:ॠ´CÀ:´ÉÚ!‹^g ‚œr•ª;. Öîî.ýà? O?ýTq€›7o ©æÞ½{V ßÏ’ßUÞK.$H:@;oŒ›]Øx�¶!ÚXBSø|¢ONõÇ©MÆcêd)ÛLˆw Ï6Ÿª,Ü•²i$¢ç+r:œ—ôùø˜Ï1…‡qÂyæ”EξVQéÑ~.dܹDµÊÙÂ#îê°ªéôªÍW]ùjͯ×ú83¾\´/ðjH?Ëž¥uˆ/eœzÛ!—…öò c€€€× øð qÑ&EçõE±¶Ž|í¼ñ^ AÕ¤Ï ¨Uc¼P‹iÛ劢XŒE†çTb ›››<ÏWˆZ%F¤IS6hãm[càBMá˜þ` ÛàA#B†!ßNÇ|?~ÌFŸç’Þ1t>õÓþB¾¯ ª1Æ(®óK©£‰H$W¥w$¹„ð2¤. ’Ôüîõb©Wl;<< ‡ŸÐƒOøØeŸBÚ*I»RGh¯)ÛÃT4¯Û ç–°j=)©‘l†Çp° Ÿ¢˜ÑÑ DšÓ–tëš® J£Ñ˜î?zF£ñŒ/¬‘¨ϱñ¡×º¢䤣³¬KQ&y¥ÝþÕ‡nQÊÞ7a¥# àM†¿ )¡1[žy'ˆ@´HÔÔµÂáiÊr熨L»ÛP<ÅŸ€€7î=¾Þ5øêc:UØ, „S½bpçαg8²‘ÏK×…“YuŸG1ÂUˆl±§½Øí—Ã¥Ä^¶&Ü+—Sšå³†LŠýeU‡„âõ¬Ûõ"Mü=?:¤§¿ü…Ôïd2¦nÅö(¶w)6΢ýÃªŽŸ—6÷Ø©A¿^ m§\[6„EWH];‘ú©ó Kàû_1ô[=Vö ?>®æ‚ÛÏUyæF¦B˲²jbæ™ {¶S@[÷<ND¯ ñ' à\¸ºçe„—ñ*ñ€^è Õ­¹É°ò~Ú/f#¥–PÓË:´»¹%Š<ý4#ÅIo“Þ Š«”6›Ôï é…ÿËÇ©bF;ÛDÝ´OYš óA“v·oP¿»EYÒ§^/•“N&SÒïï’Hz;\þÝ+©Ê#Ù×Ë6(&x_•b`èrâ^âOb¦›bÜtræÍôd54d§ócY3JI๠–ªS¿‘©ðRâµk‘I®*Sù OÉ|DEÖ€¤)N*êö3ÚÙÙ N7¦1vŽéé³çÒ«,S*Ø0“ðõní¤Ôëf†ä“âü0P‘s <„¦‹8oä_”JâµOg(G%ep&¤/æ9'›Š—×|žñ¾ŒË áçÞý}:Íù\‰Ti>'êÞe1U1çËmÎé£NÄmª¨«¹­ÓÄxfÐæù'Ä€°{Ÿ+†íû~Ë.ŒXzK3ÐõÇ?΃^rBÏdâ&¯íTË~‡ik@@À›‰ÓpmƒÝ‚¤7¿“ž¤øsµpjvUý+àÝBPüy3Úá|¸L¨«U‹ç—I»ÊîpÙ|]Zßç†~ð.`QDçH†0Z_~ù¥ìCÈ/_ §­*qZ8™«�leplà‡¼áÀéÊ…ï½휸ÜwØáD½‡sé\×Á„D+I—­1zk¬½`Ÿáï9Û¹ÆÄõ5³0£­Í>íðg2™ÓñlNùŒ¦N1H×.‡ô2uCm¥RþoÝò\m‡inŒi‹–®å&´e3¹3”hɯ€· ޼ã;Epd…¤½&!þɇGVGüi+œùãžµaÏQ¶€€€€Ë"ÞNø#ÿKÔŒlkÛÂwcØòÇgË&ç«€gžæÝ³<s¿\ð 1Sòs.`)çñ~J2e=u¬Ë¼™zûgÓµ7~w¡Ö›=]Po¦ÇÒeã¼Àól“nts*vyBŸ¥¤jÙaΡ[RµUI%V1çÕ¢ .ñîíioçeYF)” ÏUv**7¡TÈ�J?"‹³ëÝޣۻߥŸ;åíRKP½ácÎ?ñGEœ6ª«Š:+ëÆPíM\O­¾Õ‰êKˆ$d$MqfÚdŸ¢ŠHÏRšÏ"šLMˆ2iŠíßR¤”ᙕ$<Q‰gÔ݈h÷:o’D:Io³G×nîÐáQJÃ!ç§Jʹ(ÃqÎß3ÚÞÞàsòv6½Ì ÞWÌùoEéÜ(÷€p5™÷£ ÊÏ£)ÿ—bà‰á1Qñèi¸9ïã! KŠÛeN9ý€‡ P”7Ô`0 ê ¦ãê…Û7ã²ö¹/Äs¾Ì1WÌÔÔvKˆº^D47€ýëjX-Ö¶ûkº+ê¢#­S!]ȃH/&Õö¼Æ{͘£‡¹;Œª¢z!Tˆ¬áÿWñ'"ª)g¦Í›‹ãÜ´éKÚ>ÂŒQÅ»•‚O©Oå NÁàðfÁ¼—ÝwU«õ9C]­0¸rüež1ȳÚLòñüþ’õ˜(çÚÐ6ll™whÎõÌì‡L}ÿÆóóÏ>#ýË_Kýxá5;Ãi¨Ów뜔ã×áŽ<'Üä;:g^5§_š^Þ0fOMXnu¾|W¦u™ŸLof潉ÌJdþ¡ä¯{‹Fv¿sZjf xqYîøø˜~ýë_Ë÷O>ùäÄþ³*þœXTÖõ?KÏ» ý|ðÁ’×·ß~+Çܽ{Wþ~óÍ75¡GœéØõgØÔ`›Š6Ô€üt/Jå ñiÑæF®_¿Î¶½ÚÛØ”g ÂÑ?Úß§ùÓ§4¨±{(º˜ÓÝ ÞÜgØ G°ÖïU!ŒÚs¨Ë„:’Wò+o~EÆFÕf‚Qu2…-zá›ZqÞµ ™H¯íX´Mœz{Ѷ¬^Í/8ýX{‰qžÐìÃÚž�HíP_«îö9ü}A( àE#Þnœœ\,,óÀqÏ?x;/é§Dêåû—[ŸìÄ—+„^4:î‚n~KshÏŠ¯z âÈO2!þtê´Xõ¼€§Í8›rN›[¯B!0¤¥>êSzõ”nlÓæ`»)¡ŽÍÌrMõn²A4�ß—9äoZP“§/xY­\¶®u+·Fñ'f#ˆ®"*ç >A®™ëg^ŠâÖ8“DJ.†X?>{Us½¥YÅ ^€‹¨*"êöº´½³E³<¢ñTS^ÎŒ'Z5²SÖíQ^”Tq]ˆzïKù¼eJ– sy Ù7›•4›;Õ!KŒRvÄ4Ïù& ^ᘔÓV4ž }D“™ ’ŸA´êt;TL si¬§)Ù*)ë¢@„kUju œÖßÉ?mÅŸ ¶ßŠgO}.o†~²(ïs2c½ÆæçÒýÏöÛeñÏO½2í=Û( àÍ€r¤æË…£,%Ï2’†=þ€ì‚¦Ÿ¹ù£Õ¢Ô|@Ú¾ÛÌ‹µô½ï~ü¯þ¥ƒMÞ6£øOþ ýêßü¿éýå_ÚEêæØ€�ÁUÌã®axN\tAç\Dzéçuž|Ï[v÷žÕÞ|£å8°ÎœúVÀ›Ž6AÇýÅXóàà@?¯þ«_ýJ¶#Ôœ¦îÝ»'äØTü¼Ö)þ\•òˆ?}ô‘Œy"ƒþð‡V=z.](³sîêt»´1°­h‡®ï퉂Ñd:a{T"¤ \ýl>«ÃyéÊZ,l(x¨H'©Y‚Ê‹\Ã� YŸ$òìÀ±HóâGãõhNïohzo/¢;·3º~­K;ƒ®އ9=Ü™Óî §ûÏ"Ú?˜ÐmFs¸Ê]zQýjWDO óâ´Ò;ǯú»Û¾„¤à÷¹ŽŠjâçyJ©Wœ³ÎÇSüi‹ý¿Ÿ¨V ZຶO²âüjå8³y‰½Xb×åzH›8õö¡±y6ÏØ¦Ñ|ÅA?¡ŸÞaQ°ùTº2¦S¬dPÄ7ëxŽÁ¹ØÖ(=ÅÃÚ ^7âO@@@À%qVO‰ó»Jî×È^ˆøC-âÍK€jM(úŒ^•Øwêµ"kDQéF-J½*ò¤|ÛÌú·x�î<*;ÑÉÙ`4Ϩ,LAH2L‚œG 6€‹å#�o­,ùª#†ŸÁ`ƒzÊÒa!òÍsN/jAÖ83Ÿ«Ú…¼´m'hPå(Ç|^ˆá$## XIhM•bLÊsR1òbëˆæyQÇL–kŒ¢º­…€”c†×3êò~‚¢({!/à C)ueçq!Õšßòïúôa’ð–Á½£ðÞqÒÜx‡üý¿ÿ÷ÅËúÙ³gôÞ{ïÉ{ëÏþìÏèáÇtóæMúÿâ_Ð_ýå_Ò­íkôõý{ô¿ÿì¯)}~¿õ2šÇüŽ£>ªKgƒžò¤¨hœõèOþåÿƒ†×Þ'­›SÔÕô'ÿ·I¿{ôŒò¯¿¡$îrn¬,™›Þr¬Uü¡ÐÞL8u9¼þÕ¿úW2§ú«¿ú+úÁ~ ßø=tWȦOŸ>¥ïÿû¢žñw÷w27kã'?ù ýò—¿‚*ˆ.ÜIJqüOúSúÿàÐûoÿþôOÿTÔ<þûÿïKóì\Ë-înooËœññãÇK¯Ëéµ® ï üdÿ^¨,櫯¾¢ÿðþƒ< p/"Ôp/aüùüùsy&\µÍ„Ψø|ç;ß¡m^äÙ&âòýáþ!Û[Œ h÷Ú.]¿~Cwö÷¤Ü{{{2^qi4Òx:¡½ëÇtóÆM±=ágÙÛu$˜%3Ôãœ7øùqÝÌä;ìO›r-‡ülC8ø›·nˆÍu·[>¥?½3¢ßʹ<ÚÜ8¤4É5ç× :¼Etïãô›oôWó€~Ç6¥ç\æÉšZÑ­E{œ¡Ï¨r¾p ½(›yí7Ùú»ê ½˜-í%-½ÿ.ðá‡52á¢&>+¢ÕÞ¥Ð+X"‹ß·[‰—Û¸ô ®¸/º¾¶ ­ªQ­wÚiÄšÓî?µìúÖl¸,‘çõ7ŸïúZw§1ôm¦ªUŒzÐØ¹BÏ¢cë£ÆKÒæ­ÌXFìã°_íKùÞëué½»ï‰âl62cQ¢‡b"ÒTÚÒÓ¼~¸ Zµ¢þÛc¥ üð¢ˆ?o´÷io?9#X„j}h‘|¢É?^/HVä»Ê¢¦-¹²ˆKd|Ûÿ\«.÷Dõ ©Z5ëqá}ꊡõS#½þ·WÇjIJµä܆9¯êѲ²nukñdž[ÒM@$_ÆH×!=0+®< ÔÈ%Nw5”7ÑnO˜ÕÂõèSóZö±§ùÊX”Uæ ͦ ‡ŠÿòzY¡¬ï«HÔyð"LPDíuÌÇöix„c缿¢X™‰ŒÖk*QQÇÌL±¡©§âså” ygnû8Bw” >¦0 )¨!ï@™G ¨Qn§ñLÑÓCþ<-èÉóœ&ÓJ­Á#L©”óä”QÆeaÙx‚•œ šåt¸_Hx³T<ÐàEI;E´$¢»g8u"­LUò}‘¶Öþ¾ìD ´ó€rϹ#{/7!¼ hUØpqÏ2s>oο#„”ãúŠì§yFÀ�£D ‹¬„¾»ñê;¤MãÔ°¼»AS})ïÁÚüö¯ÆUÜkgAX ßûÏ߆Åx[c¡Æ;,‚º1×~ô#ñʆJ¼ýnܼ!ÇmmlÒOþñŸÐ§¿ÿcÊ…øÓãçu‡Ά¸0ýÇY6¯]§µ>ä«öÏþ”v&# ù•V÷‘ ßéôÞ^„P_o#þý¿ÿ÷â ErMM¨åDˆ5 î`!½ÛíÑÖÖ–(güîw¿“wÐ2r�âêßû{OBó€° "пù7ÿ†îß¿OÞ‰ÿðþCyÿ}ñÅôÝï~—<x@_ýõRâïA*Â_�éÿóþÏu˜ €€wËl|އûúç?ÿ¹¤qa±àôg¨|© å‹îÿÝÝ]º~ã:=~òDžO ÅcñüÖí[Ôë÷d¼Œñ4ž (+ž_Bâc@ò³ äÅ ¹ÞŒÇt ùpcrª ¿Ÿ?&ÄôQQwæ:põ²½½%û¥,lúÉmM?ÞscêdE£dWt­ÓÅjͶª¯²„îk„]cÑ´v!gm¬ÍDÚ߯é|4zÏ@åŠÔœ‹Îr}K6ÒbnϲÜNØ¢ëú2„Ϧϻ}º>î,h[œ‹Ú®M§³wZ¿üKV«“‹½î%¼¾V[ÚWòmÃU^ߢm¶=çwû©[˜°NAªµ¿Ýè×IÛ¶Ò£Ùfö••±­W­{q±C]nm à*ˆ?o&ÜhÊãêØÕìå°±‘$|Sä/Š›ã4y“zñð•Ù.’uümîû‚$щßõ%µ‰=K=ék}ô‚ô©¢Ê;×bÀªÅÙxÖ™7åTK~{¤'g›Z8G9Ò†®áêÒ¥RMùµr¤ ³-ÒM"…˱òÊã¾D g¤ jeÛziÌa‹uºn.y^,NkÕÒíÍy´LD¸# égxÓÑ!¤HyQ3íP›T˜Ø”åœ)JÒ˜&“1ÍsãYU•]šN¶i6®ÄXSSYì„údœ§óB>à iòy;TòŠç¤ŸÙœÆœ—H4³1&Gˆ/>!ÆTuŸTÈ> áãHl,‹ØXÃÛb "z~LTÜ«Ø ®Ù®%äÔ’¬+ä_ ú“èþŽOÊåšÒÓÇ#9¦?Hhg'¢^G±‘ÇÔÉú=s#ÁÛ#·ãù±h̋Δ˂AF™º0}µ¢ „& ÍôI„¯‹M_‡7 ×ç,®jÂO;â½k*ãeRiªå‰•6×é¨î›µz–}6J HÙR|ͤ±¥tkí_DEŠ^‚U$ à’Жèê‡ú*í‚Â'Ÿ|BOxãöíÛB:Á» PZÀÈ£ÇhÐïÓý÷)ãW@u8¦/ÿçßÐó_!O@~uytÉ€Ó�/IvÇÛ×éÿòÿ—¤>ù™°ŸÓñ”~ùó_ÐìëÏù®©SvZzï …QjÀ[† øð6Â-ð?zô¨[R5xï`‘s0¼«ð‚B«�rÐÏ~ö3!}þùç²`ŽïË€<q„¯X§ÈƒíPég<‹úH<«òEAP‚r �"Àþþ>¼ëX¥Ú 8•d_Mϧ˜õª¡ì¹SÈD¹@Ò!çã?–¿Øç“KƒB…ýÞïýžl¹QT‚x 2#D ØŽý8æîÝ»ò÷Ù³'R/;;;’7DÓÙTž›xòþBˆŽïG]ÚíÀQí© /Æùu:™ä »Ô4b{Ô`§¾±%êÓh;Kˆ=ú”ý§à…“ÏJü9™ü”tºV¸ñíÙ¾ã©nqÌ1ªvØôjç'þ¬*•>Ï œ©7Œß:,{΢c¸ç¨ßg#ßyR7k*’Ö¦“m­ãð¬~úô™t£Édjó×t¨>Þ¿MþQŽü³´¼/øðæâ¼ã'µ>«štÖ¿/ék~“'äxo¡É„9ŠXè«Âë,Søñ'[~ºS wâwM„häbüt¥8wvnA§ñ"1‚%Í @Ѝò*‰=^¹ûµ¬¥9¹ íΉù켎bÈ‚ZÃÅ¢šÊòö9áÉ¥Û×ð’  ÆÖÑpÌŸ)/eG¥[‘„lÜt„Ùª2éØ0C èøhL%7ÄŸBÔ}²lƆ6D%‘ÇoQ²/’ð`]©{=ÊÃhfãËw( Áa ‹|h'RNBÞXÀqÑlØÐcÆsšÍ1Yƒ©+y MJ.ãt>« QÆcFæœr6•³‚Ô¤dÚfJ»×®ÒpfÍ)j9õê¼9rÕ íýèÇ3¾^wðxƒ<vÌu”€°XV†°ã:ü[‹"SI‰Š©#d+KŽ#GÓ P ÷˜Ç™Ô«JíRœ«Âw¼\¸÷¼#ü¸ñدýkúòË/åý‰…X¤Áž­ þ@ hÊ îÝ7adlWÊ‚ÅÓgOÉr˜/-Áþ6ãÄ;NÔì":|ô”þ‚’>ÞÜ£ÁÎ.·IA“Ñþî¯ÿ’~þ7M;ó‰(þd•ÏhUy¯à@üy›ˆ?o30Æÿ·ÿößÊwÌ}@@uŸ^·ÇSÜH³OÃúOÿIælxOx—­òÿ ¿ïŽŽ…È…¡e,²ÿÍßü x:øª@í0Go".»Pë'!¬66ä¯o;l; bL Þ*ÂÝ‹ÆÇ Ï'ü…ÝÈ…qÇÇ…Íu67¶v¡ä‘Îcxž¸k€2Ô}y"œ!žAÈ ¤¤‡í!æf v">‘ú˜Lf4›N…\”¦šé͇Bô1ç5õ\|lSÁu<âñã„èkF’+Ðrò<á? [à9ëú‹og¾´5 ©ÚN¿Yœ§¬¶ëÔåÖ~ºiZåqß I_Ÿë"—ZØêB{6aïušyêÌMæîqÿ×¹2¸Öå®—x”ž“çtâ\ïʬɄ÷nˆ?',·¿º°àíã`kv„æ©<o¨ΑÞâO@@@À%àÇóFè"Ç$o”:‰9G&¬OåVÚðÉ>.Ÿ6ᧉ¥¬×®<ùŠ?Ðéˆ|µ«ÆC´„ô¡^0ec�b};r.Jñ�*øo¿e%Ú*–H )«ÒR ôÔ¼¬ëTô,¦ï¥NwÁ» XçÙ*aóõ¥M�Ì9AÔ™MgtÌ`eBÜá²nS„¾Š³Ø™$)õ‰r 3 6Ìñß¹|0Y‚ñEúlÓ`sƒºý®Íל!µ`|A:²‹¨øtº)oŒaý}4žÒt:¯ÃÑ){ˆÁ()«#>pžN'Tñùn“-Qù1Ÿ)qA)²÷š!.ÍiVåTðG©eq=á{!ž€s\¹ôuR²Ä7ÐÛJª †6ng-ŠN%u’Œ²nâ É‚ëîq3‘ÕÁPpÅ÷ԫŲñ“ó¬Æ;ß…ØÓÞ‡ÀÂ>­-©Ø˜Ú¡8i£–¦–DÏSÐ ®‚ q‘sŸá¼nA¢‡Ú0–]^Àyògÿ…=£ï|ú) úú³Ïè«ÿý/èÐÏ+¯hZHÝzîÌØ�ðfs_Õg2œùX7ß; îÝ»'à¿þ×ÿJ¯3A:àu#‰ŽØrVøv:÷v¨LBgáÇýÅ"3”´®‚øsÖ2ãÜFÙ⩎>ãñlPàiã`ØËP6ŒRÛÆË‹ßPÐD]Aå y‚ØãÈL "Ô-Ê0(jÀž÷ìÙs¶%l“*ÄþÕØž<y*aå'¶ó¤3úš2ém«fÆ6ÀÂ(ªÁÆ¥6vøømzRNi_'„'¥=íÑâñL”z‰æ¼×µ]yÝ~²ó¨eãoGªpÂ?g|œ+½¨1-šÝñgQeÚZ·V”SÕyºÔ´ îo~·ƒÙ«V-rS[ýÿ’C/¯ºÅïõ…œÜ¾“ìÏo3~‘ÀƒMgtÛñ_Ý7Z¶ŸøãÒ€Àxpxl¿2<Gá`ã x“ˆ?o/ÜZÛ7K7jq€¿0Ò¶‡ù¬û%;§†ªÔváÜ 4#'+#çò ¯æS醸¦È*³¨šÐ Ûµñ.Ç¢>Â( ©Å#¢£AD§MÃEµôDõþº.êÏeg5šj^‘j-ˆ­ÍZI,Ý££æxÝ4ª?º9•Vž¼ŠÅØoê8ÔH)Û>T«•v¿¶R¡>1Kô’”wn»-RÑBšÕWv¸™ž[0Ó'ö*jœœÂ‹ùÎ}¦šñõ:²O‡Rëa†IMQ€¥i>-ÙR‚áDŒ,\GQJibÒòÔ†ªyF¹†JP$$¡|6¢Í½}çãÛB¶ÚÞìÒóýçt°Ài9?Í™ð¼(NrR¼¿›r/뤤ùðàÂNÔW¬bþ$|LNÓáHˆJ%/öEUl”~*CÀŠø¼(£Aw`¯% (�£K¾þ26Y¨“2’cæÊ„ºR^zõêêjÉwM ]Ç„—³Ù\ä®p¾JÚk'“Ì Jmž˜\Îùº¦Üø-êaÚöKNžƒÐ¤ìѸ^¨)qƒ,B%¿zl`ëõzæ¹£ÚEä:®çAÔì¤Øû.実_‹Æ‹ÖC@À»„…{Ä#ã5ñå)à%ÀWüqð v«”ýš ,ލÚiÚoy½.³“»ôYÒêVµ>ÍÚ¼Vä”óž1j§“—«3¨*úÕ_ÿýâ¯ÿ!œ&RmUV£Îê¢ûã,rcöSÏð*¡×üGõtÄû]sC•™›¼B8ÒQ0Žj§1ÌÓ/ŽËå M[ÜÙ¦œCš¿ïed÷¯¾úJÊqÿÞ}¹'AàñDCÔˆ; ,B¢ „~@ÔÁ_ð¹È„CØpÝÈ Ç?þ\ŽwÄ„ƒ ™80u:rg¯BþP@Ã~œ¢yR²ujLû1§O¬(L}% Ÿt<Ò×ûÚŸæBú9µÅÚCËwy~V›Ì i/ëÄ&½§P¿øŠpªæ0M'¦Ê›?ÔûõòóIåÍîDá‰NœñE¢m‹<A :­ ÖUÇ[ÜŸ—…R4Ûë­ ä³EE+ï8µ¸ß4c_‡êO3F‰Z6„*˜sÞâO@@ÀÛ 7ðU<X‹$ι08õÐ^‘êóÇþËw&´W‹˜á€øàJË >ÿ_.—÷%»0/eóBMœ¦"9D�6¢H ±cÝ\@ŸX(YV~7’uer©.3Œ]ð+Xœ±ÙMëÈT«g8ªvÝp|¢ˆ 1cÔŸ„•R5QÁÕ³ Ò“jAA©Þ£Ž2dŒRW2ùsFÇþ¯ÛL7wˆ¤Í¼ž²®w.ø3¿qçT]S®6Î1ðL›ÉÄ9Vl@Š3N‹D êGù¼¢ù¬¤Ù´à~V y¼œ^7cCʦÉu0OyÂãL$Ä’"ŸRÆF—;·w¸ÿ¥” ›ª¤C6ä”ð„�§€ìrDIJ”feY"}RÍ ³¡“¨ËŸ˜ó/h2˹\\çÒt†¤lX6üM£”]s_À <+ØðTÊeýæín¼òˆCBú!¯–èÄlxY/×ËöÙ Öª5?ó-¢jÅ©S2F(sŸK@:*x;?Ní§òæ¦è—J—–MEºîc˜lŠêú)×k¡ÙÀ5s?×ÔKºRŸ¢ÞsMðGÛ8ÖM±ôêòz×6B„Ð6g€}§(@ç¶»÷¢3öŸÕk,x—íñàêý,uÙÍX/ÔEbʪS´.³SqÎÊG¸:[º«>·:¹A-ØY+ù éœhw²èÑîÒ–Ê„i*›©> ¹)àm€¾t‚€€€W¾O+¨“Qâ-á‚‘²as”›»æjðÄ—9u&¯>é$÷=è2!¸ ˆ" Âû!Ü—Sr„"�Û‘îe‡ùP®Ÿÿüçòýhh.~ö³ŸÕ×îÂ}á¾uaqAB=áZ$T¹-7:8y" †4 áxäç¶ãú‘Ωn»ñyiÝ~Øìžñóc¤çt»SÑíˆ6¦�äûtzH_ŒŸÐƒã‚ÏzØÄ€6Œ-ø„ƒS[wHþá™ðrÑ&ý¬&¨-Y£9áÇ¢Ö,=,îk?Ÿ`g f™€€€7øðN�“QÈìâïUaÕ`ÓŸ$¢‰¤>qŒ/óÛ ^µ &êLI¾äðºs^IœÐÆ` RįÂÓè,0*'ê¤6S„ÿ‚qÆzl:qÕLÆ‹ÃkŸ$á§ìw9ÒÛçC~¼?_u§N³¶m^üäXÈ3â¥f~ÃS¡*FbPNQÙÉŠYüDh­*ªj)êÝÝ9žV ùÌ„FÑFêúààAÿßC‰§.!ÃÀ‚r*åYÖ¡n/ær‰lÔ¯×mêU±Ñ+êZ×\ÈHॠLx/#yó¥iÆÆ¦n]¯P'rûÞ´Ep¹~ò•š m ¡× Ò“ñu 1È^VQ%×M¤ÀÆèâˆ?hËuÅGg\ÿî^Àyj¥0ëɯ¥-¸Dµ}޼_K<bÞÔáQ‰.ì±íåF‹ñUÔ½öçI´™¥g/,ÉT]æ¼g=ÏŠLÔÍ5´Uâô ÿëúP« ¤mz©âOÀ»Gøxý⯪ÈÍošù¶1¢à//°s\Æ>ò ˆ.P°YGüÍv— †K`Çl.îeÐ2@ÉgÖs¦ác¦iØ!:`ÔÖaæÍ3v«§£œ¾<Ô´?5Û ¥NøõxS‘S [ØÿŽB)Z°l¶Ã!Ùo vÐe¤ÿ³Ö”÷!Ò­ßÎ[tÑÍÿ»¸½9ú´ó×Àþzuïs…Í÷V§6ÉËãmîÏþ¼þj¡Vþ6‘ŒÒ!ýèÓ="ÃÔ5 à5A þ¼À¤zss“®]»F7nÜRCYv¯ÕÈ©G׋Á±^K£³®ÿY?œ™Yê_›Ša#–0P{×÷hƒë%cã†ÃÆåF©µ¨·²dUû{¯%Ö›R¯ÈSéš!—@b 'ñ‰óÓÉ5´3œ¯åp’Ôãyò ºu²U“Çè ;P=±](‹Ý5¨RÑZH@ØðX…*D¦ÈK!ÏñD¦(á²i‰y ÒN§›D± 7UVSÒE.ÛAþȧ ‡cúìw_Ò ¿AÛ4aC‹?aEÿAŒö4ã|c„øÊ…¬ÒéAÂ9æ²E|BÉ9ŠjN¹„©ÒëXÊTX¥%¤|”Q®áÿ’œç6|H-â9ê ÚXjò9[-C}ì¥$e#vÂu˜Ðb œ- ð£Sj¡ºD çÀ}˜d”B‰L™û“IÔT€„œ–Ćø5ä5 (ĸ[IT&*gö€\¶&+{¼pó·ªf±#-Ì£•o|Á}›gÄ ™l¼Páþx­à „—'ýHnòñ‰*Kº}®u‹F­þ²Ê¨N–cUùÎvÞ™®PóQ´ŽÚ :‘ïIâÏòcW *ÜSï2^Ë9X@@ÀR8â¦päžec¤7Ñ¡#àí„St�áç¼}rAÕÛþE^ ×€äã5~ÈY�Ûñý"ç¼ ÎuN¢ÁËÆŒË÷”Ç´Çlº½D”Ž+¶¥!QbÛÒˆ?¹³}:ŒG„0aà›<OZ‰ÚÎOôN qγÝ`é¼É£æ(kYjvaÛÒº=gX c¹jlMZl»öþ‘¾-Þ†Ìö‰>ž-¿#ks[ÈKÔ¢)S^ÿ‹žkœðÍPKÎxÁðjˆ?—½þ«}zœ¬ßænþ]ý¼<9O^Vÿ‹gS ?Ûk Î1EkZúpð½Û%qǼ âO@@À;…Ÿüä'¢óðá:Øß_šF-(¾vs¿3 ݘ´=>A¤×ëÓ{ïÝ¡¿óÚ¹¶Gfè,Ľö|UÄû½¡ÔÍ.Z³î¦ÎqF™ÌŸ£AÎêûÑF{¹)Òþ a¦": ¹$‰+ŠUeÒžs K­)Wdç4 ‡åI(K3êöºów„¿šL'4Oi>Í…øâ â”Udã×#Í|B£‡s}w«KÉñŒfóŠvwzîë›o¦4<³å…Ó9ÍËcÎ+§´ÛÕ(ÜSP‚¨û¬œ‚ÂÃÿ8Sڃ▉o?Ni4qÿ(y;O¹ãò6l¼1ÊCЦ¬ÂMÊåUcŠ£Ø|z%up‰lç©`둲¸FUÎÈRl$^Þ‰Z[^³ {"~zõ¶‰×hÜÙ%=ÍéüPõglB¸‘½‡t5ÚGÅnH9¨c­çÒ6cVÙÙ¦QôÑò[ÇŽøƒôžŒ7+c“é%¿½+Ïàb :ΫKǛ܆nïø5| ¼^‹X¯náÑ->‚Dy5mR5DàÄ­Ûïžuçm“sôÉäÊœ·]Ž“Xÿ|?™ikü²l`uâW äN¾oÛÄŸ¦Dë±'Ë^8ï2ñ' àÍAeç^~ˆm÷îm+ûøû¯†œp1ø}ýÔvÜ8ò,ǃ܃±¦ ³îàBW9´Éo¯…À^^d¼ü"¯µMè Œ€bBù ÿì Z[ <g(§îiÜлŒšEz¥›!×4ßýÊÕÞ¶óuøã÷5ùmã¶´môºNãˆAmjÈJèU ™Lþq§_¶¯5}[J Z—÷•tá‹^ÿ˺Ü↦õjMKæçkê…þW?}nd˜‡¼¡ÄŸ€€€w˜È|ôñÇ´³»+ñ¶Ÿ={v¶ãÞ‚Þ"ñ‡¨ßïÑ~Hׯ_§^@'%V׿¶b«–ód½õ¶6„| ^À€ùJI?êâ·3ZpŒŠÀr¢³ év(릔¤Ñ…æSíC”^Q—ⱃP_)¥I—K ÷ky^é§ÌK#e-äš„ Q&¤Ü¼˜Óh:¦ÞFÌí×§Nî‹¢[ïoqÚíŒi<®¨€ŒLŽvž /$I3r-M¡ =©‚᫤¤S‡¯»Ó)ˆË6§i>2d—ŠMˆó¥­J‘‚O$ŸHòg³—?™æ‹Q «`ƒr¤¬JŽñÒv5Öý§Ö¶ìºÚ†Ú_WoƒÒÍ]¢Ý›T êFiÓ—”´‡²J=1ÿ'md‰?‘nú“* RÖ€( Ö®·öo1Ägã¢vë>[wýô›Ð‘~NüíoP¶µ-d¯m ¸,°XƒÅGú¹ü¢Dö59UK…ú\Š?¢‡èÜúí =o—?Ë«õyŸ€W.½jü׾ƳŽ,ñ‡Z I+ʈ?ëðZ:_œ€qùiÞg%Mȱ,ð á”~ðá¸@â’kp,”{áÓaÖ;_5áÇ¿&摺ôË6¨ž¾¹pÔ‡e¡¥Ê>£µµAyCyMÎð:!Þ)lllPŸ?»{{g¥ý6Ìb$M´„êu{šé*mmX`Û¹v6ww­Â‰·óªÎsN›Â©kJg8Pµ~ŸXÑZ„ªŠ:‰Ô¹Rw™ ;ú6H>å¼Õjâ†h')¥26fY6€Ä»mΆ«1eÁûÚãû¤×Ý¢ߎh<,i:›J8°,Klœãª–§–ü•QŸÉ’„¶¶¶¨ÛˈOÃç™IL÷ÉdêפÔrÈCò7Nù{*¿‹Â” ±Ûq=ز‹1ÇW ½¨å œ§“eïìðõ~D4Þ".Ì…É?µ`ƒ‰Of6Jx³ÈîW ,41¶TÖMviO2Ë*ÕnCzÉ}v1âÏÒ£œ Po@´½Kq`·™pwÁÆðºÁ3"á-¯ìAUêQÑeB}­H«Úyž…øsiÆgå¬J{–Ü2"R´t«[BXR‚5e /™wøðæÀ'þ´×½‡ñ'àUéþ¸0GŽtø$7Ø0ÎrÜYÆ¥°y´Ëá¾/œC{ª+@Âv¡×Ï–þ¤PŠuºà}|6·$}a[⢖Œ=§nˆ*øý þ©RFeè„–¥ïØ:Gµ˜ý¹ ¨OOB'GÑkÒë“GŸ8‹r×¥[yZ:ÕÔ]T·±çf§—’àÞFˆ>öv,†öBšÅ³ª…rúN|ø›­ò:÷„´×h¹9¹ñ¥ >f[3\»ýØ pˆLÄ.çÏð©Lm[°_òJÅ”SFå ;¯Ò…8M’6*UZ-öF1óQ£_¤è Ϋ­ ‘™ÏПZ%¤Ë´O+±Z,”jï­[D~›öò\8µŸÆö&S4y, —~•<”~ek5Õ'hÒrdÁóAŸ6=“—€€€×�øðN@A9#IŒ’HSŸ¯òêÌ#²‹Nä^Î<°4‹8òŸ5RT•–ú¹tb®Û”¨›dò}ÅŠÏÕà Òz]^zÉ®öè_ÓÙ®©=×=‘Ùy.&EŸ~o“67vÙ¸Ôå¬Ì«\󌧬x*œGl$R擃èÃí‘t(q¤2†×(N(ñ‡'¡USÉå+¹ñ¦yJj O^yˆ°D4™—Tð¾¸×ã<øX|:±18YõL­ç©bž–ů]òd?Þ¢‚Ë6›ä4W4ƒ®Ã†•Ô„»Â„!¼: ²Ø|¼ŽøsÀâ”U>¥y5¦ñ\[rPÄ¿#*ª’Ëס¾â¤OÛÔí‚”’Yt\4&è³Ö³('ERGIo@YöEÛ;—"þ˜jͱÀ«Û ¯«Õ ¿º%‘ÐVLP§’Ò.p3f]Ò¨ßmÅm¥ðºÂÛP‡1¼Ⱦô5­Uü!}’ŽCkª—-Ýè%䛫 þ¼HÅ}‚­W”+(þ¬C þ¼K–†ôjCîiûn*!¯ œs’û~¸aãñXìç9çiå9U9KŸ¾ô¾ âìÄGÞàï}}6k‰Zò[­Ø· zÅ_Z¹ÝÒôÙËtrßɱµËšNCþ8—PÐ3Z¬RÍñ±çh…ÖM¨E;"@uŽhœ—}_YŸ´ý¬ºfµòŒ‹¿|2‹›¸mJN jÒOä‘»p¥6ó!½” ö>µË»{ö7Ûtfþ.½"7Ïq…í£ mç õ¹†S»¨>5‹™·\Î-XÙ,å›%r³ß´qãBg”ÜÝù3nÉM¾ 2[>l/<â_Lw Q‡hÊ×yí°½´ÛJl‰,0®ê§ümLMŽ©búUbk6HE-›!éZÙ¼Þ¢Ö(,)Z«j¿ ú’ó-so¬>^-qúhþ‚ÔeZHúoÉIÉ_³êæ õ”)ª‰ŠáŸóÆ2:yU˾*ÿädòIùÄqÕ*˜w€¿âù0Õ¦OÕIÚ74¼î€€€€W@ü x'‰I,Ê$ežS’¦GÉÉ‘ß2h¢7bÌvž2ŠJ‹ñ B]˜ÐJ—»H•B‰R5=\§­©­HªÏwèÞÎ9ëK­;óYóB¬.íîÞ¢›7Þ§oîý–Ûð©ì)K~âÚˆê&ðFA'–éf%2YE˜,t`¤švRAeÜ¡1?ñôZu(š'4úõÅñ1Íf9%YG<$*¼È<ÊʨÓTPäA˜®8¥\et<ͨUl�›Òtʲy,jAP¿v¢® }ûMÅ;çlaI*Lë;<yãÉ_ÂçøüzHEË$»Ð "ñŠCÖÚu¯Ñu®Í­=¾ÆŒ§m5 ³·•¶^HðÞ©â.éNÏZÓª+îÖk:gë§™¼7^0~RõM®‹}µ½åbzÑJI{Ex¨µŸ€€€×NaÀyo_Ý¢±r+÷}iŠÓˆ?kÞMë”w$ùªe·mq™`õy[y\ê¼ÀIÒQsÄiåX‡Ë¢Þ|âO@À›!)`©Î{ß¶Ã y;N¤ xpõ){–Ð`ícÖÁ¿?V¥]Nl9IÖëõèf'¥ï²}æšåeh«xTÕ¡žhá/ø­êÑÚY‰?g!ÿhïD‹#Ü †üQçù1壟³qêh^Òh4¡!·áL-Ô…œ¥êŒí ]|'VXƒ  4AOƒ¯@sòúÌØyÕÕõìQÚûÏckÔ D‘†PâæO ýÄ"AmæV%_sQVÆ(s--}E[8�ªx“ME[ÃñV±mO³MmÅò£Qj4–b®ìT±5/2jò}Ît‡÷9QÆÉ78i‡·‹Âì…Ém‰†ø£c.›7µ;ìVÜÇå/¹ºV¢ Žû5™G´“÷©SšJ¶ùMË9åU¹  +uÁåI"ô“k Ïò„>/6i¿Ê\Ö©ŸbŸŠé„ÿέª7‰“ž¨µsÚÞÐݽ=ÚÙØäbvŒSäb‰íÖ5¡ä¬VW[lϳà’+Ž_çt(ýU«Öo?ß=Õ„íÍc:::¦çGCzt8¢ÑÌ=KÍÝÐã6ÜÜܤÝÍ º¾9 AÇÔwÅky'–¿+±zBßÀi^Q\ê¥ûÑßsïy¸?Ñï>‘¿MÞjù9Ãð& à#Þ È¤92#¯ÊóæY†“ƒduŠGò«ÅÙ"Nù3C3Qï¡«ô¶ó󱓗!ݽ®mÚãpÝÚWµö·óm;,pwè|*Iâ-ÓžÈ08¤tóÆmúÁ§¿ÇæÕCº}gÏÆ¡Ç O|Eêþ‚ &ÄBübŒ²RÔ j;0NÍÅ3 Ï41“'! Á”¡‰ˆÍQ.Ç.SNÐfÔ® ÖÌx¾<qž|žBî¹8Ñú«¾e>†x‘é’‘”uŒ>4ŸÍ%Ü—;Ÿ¨T±±A—”e„}çãÓG~BÛÛ»V½ê2‹…¦P ±qÁŒt,]2Ë3@ŸBR«¼ý¾±¦¶È;Wy–¤“^C>ÎCˆ2ÿiLEôB+# àpï‹è Ô [9Û¿ë¬yê”ã/òìlª/šÇEÑ­ß>–×Åâ‘á}ð6Ã_„ôC{ù¶�§äÏ%ƒêOÀ›Ž‹ôaŸLpZÞgËÎ~¿Oï¿ÿ>ýàæ6ýÑvDwºæ\E‘Ód2û”Á•eáÕþ“Ê#þœ¥Ü'I.t‚ÄpÒªµ·%±q"\Õ9Œ·#¶Ÿ=©:tïù˜¾üò[šíçK<@È z´ÑËh3‹D‰Ä‘¼D¨°DtK–CµþRc_Zq'‰?-â„8"´÷ø¿ÏAüñÊã‡@ó‰?reÖ¡B3l{Äö=8“æE) 9JûÝ.eýmécIÒãºéZǼ“PbÙ*ë6ëÆí¦ ²”²×5Û䮳Q³o¯!ãälš°MùglGÜœñÓ_Ó~B½Jæ|Y¿Cƒ½mùë®õ;™ÎhŸÊƒ‚}J§&ý¬˜ÓÑtH£Ù„æóy½n ¤¯,£~}` õq||LŸNˆžÏéëiY×(®IH?|ìlԥѓ'4³m´¨û:l˜(ÿw>ùýé?úÇô{ßû>Û2·©Óé,ÔÏ®‹¸&.i–N­oO:×£ã†Nk(Uk ¤lŠÅßög5£ª8¢§ïÓ¯óú?~ñkú‹Ÿý†Fž-dÒÏøúѾG¿ÿé'tko×”¼“P¼Ý‘¿ëÊ·9·Ûˆû}Þµ1çíÃñDþ¿úÝ—4ü/ÿ­!þ¼ÆÄŸ€€€w ¥€(±‚üÓžç #ÿ5^´0¬ÿSS4?•õÆàz¸<eõK;\µÿ<X»Œ¶zÞcmâO3çXKü‰ZùªÖìü¼}/©\èR�‰çÎÛ´³»A·ÞëÑÁÑ#1ÎO«ØHÄ*UG’ÂÂg…e&Õ0Phͦ‰Øô‹Ê†ëò£“h1er‡‚ŽÊ­'ÎI˜óEVa‘ zl Hìo.GYrBÊ•üñ'UMßo¡Êü5FáHbnKùAÀ©CÓUR÷‰Ê¨“uÙ�3 ­;tc÷»ü»/Ç\Êz‰qcΓѪ¤å!Q ü¸Õµ‘ý-Ï'ÝôFôÛèÌ}õì“|çåd¨EhK›w°Õ¼†ð• Wª\ë©=ë÷Òeö_êy{™ó^üÄê2ÆäKð6 ô€€€7âˆpʬM ÄŸ€w‚0€õÑßa™Ífò—UáiñÛcëpÞ±-”è&/”ƒôóƒnÒ-^8ßérÁ˜¹§OÓìx(6ØfNRW¨6Äoï)·´o÷g€³»R–$(ä mmU š4¾”âÏÎAüÊóNS5ãkï)šòzþˆM_ÓÒµ×ú”®mo²Ýi@[ÝT¶Á‰n6+h<«h5ukÇZ¬eëÊk³–~‘¶$zWÎ᪹âEC‘O R.“Ô!/…×_’8B Tߨâóï(1΃EY±Gú$U¨ZÆ’¼¦³)íÐp4ç<Ø{l¦I—âÔÙýˆ¶vw©Ûpku8’|AÊ+å…FsVGñ$¤Ÿo/ãºîvùØ.í&)Ýáô›ÚÔO—ÜÎ+!Á˜m±­pwNªgç²­”6ÞëRº‚…Dí.mÞÝæí]YRJÇ£)=ú”ò§9uŸô)&0DŠÒùÑñDTËåþ¬æTÅ%%Y, YýÞ€½ *¹ ûû¤Ÿ éWÝ =$T )§äóŠ€ ß?Ña—²ÉCªæcþ9%$ªäçA‡®]Û£O>ü„þøÇþèÇ?¥ímêt;D±'æ¶I³ÄØí=0Òž][-ÜoNñçìP—vÒP¾r¬ëÿÍí¹ «êm¶w—\oùˆž>~@×7n‘Î;ô›/Ñ=KüAzøoomnÐ>ýýáþ}úñmÚÛÙýi¿K½k;ÔÙèÛþj#(¯,Ôª¿¾@îñ³nn™œa\j˜¿Ïæ9 ‡üLœÍm˜f´ñ?zð& Þ\Ô4qû]F¹zyB»fÿÁ§íŒjѺ<Ë Q·&²-˜yÖr/µÆÙBµ7œ~ØŸºÔªr.!þ¸¯Ñyίϰ·™ž‚lò2XÊ÷viÎPÚ˜?­Ziõ:¹Ø —f³ËjÊÑTtRJU/|•®ìwn¿‘ÉDÇ„¦×èÆµOhsã&嘰T†hÓ(/™xÐQmTÕBø1DŸª±?XÏ]-^_åÉï¶JÜ,ñŠD ÈM²œáÄzôœ¨]+ \mËìÈ?ª–6ÆEqÃ…Ñ6…tu‡Uwȉßb„RF¢X_µjÄÉ6F9¹%çY‚ÞB‡T }W6{Œ¶æ·Ý¿2„ y9ÐÚýͽ¥š‰´ºèÓ+ àÅÃ÷¦¾JõÁûÜ;íY}u×quY¯?ø–:à]@è@o”ÌOô™LΪxðºã´1&£¡ä±··G7nÜç¢ÃÃCzöì=zôHÈN «VYYbÓpiü´Î!J+·t¿ü~ªm |,Ä—oðÏï²Qô¶ÝÜÊè(Ù¤}5 .ÛSöGôË'éÁƒ#šN''ˆI5üpXËÔnÔBVÄ’”í9¨çðå®)S?UíÖ¨^œo·^&Ù³{™¢ïˆúåœÞ§TöíWŠŽ-ñŸn¬h«ß¥Û{×èúµk4èv(år£þGÃ1=yü”އBš¦¶ÓX{’xLyæ=¥uMÖ‘²[ÛêBìhDuÈâvP§Æö¼` ¦¶j’#P5ñ¦Ÿ¥tûãÖö–(ΘÏ@Î "Ïx2¦£ÑHÒnllPÒéP‰>ÉíâÚ÷Ýßüæ7bœŒ&Tæ¥5…[[T6 xçêÜù)mß¾ÃylòõÅ4Ÿt<<¦|4§ñ Ê:¦\°³Å:¦Ø:¸ý¡ú³©2êE=Úå¾u›ûÀ®6}eƒÛþ¦šÒ&_o–gÍ**gÞYˆý9ÉcÊfœ'ŸƒR¶›òñI<çý¥Ô›‚G]Å6D5§Í×Z7æëJ9=×ûœÛ¯ˆisºMÅdÛ(:ESšgcŠ»Š6”uú\Î.M«œí¯3°=2íßúÏg3ÞN4N:4W‰œ/.Ô<¦î¸ bvÈM}Ìí?¦~·OwoߥOî~BìÜ¥›ÙuÊÊŽ)‡*Ä“Oq\~ü[ n‹ª»2fa'Ÿ+òI@^s¼x,~ÈôMÜž•Ý`Dç©1ö’ô÷úwÉmŸoÒ^”ÒOîîÐó ú/½¿$ªÇ†ø³½Õ£O?}Ÿ>üh—ûÏ#>øJöwû[´S¼ÏŸ›´³³ÍÏ. ÏÊ5Q»ïõº ßciAe—Û; ˆ[ºâç ·-éBž9QRP·›sê¹(@EŠÛò×:"D@@@€C þ¼9XÊÆ …IÔi#\ ñ©Õ3l\âÇŒzÒMõ_í¹½[œ_Üfªm²ÈÂyÉäü ëóÎãÅMmÆ ù{·Z_H ‹eÒç\[aPð'ØÊÕõË3æ]Ôp¸îÚWç¹Þ˜ WîÃäÑaÚù9Dt"ª·nö¹úO¢„¶}þ¨úœ•×¶í[å2““u¥m£}iëÏ»ì†^~ì‰PX^Ó–¨¤Wže‘nåßwKI?uB6¤YëØ«‡ö VΘç«™jº˜GìéÄŸµGSCBÒµ„³ïµ¶î xÕXräÒÅÞÿgÍ{m‚Sö¶ÿ¢»/^®ÓJp*B X±ýÕ>m—…ƒÆŒú•÷nk¿“_FXð€€W!´¤)mmm áŸëׯ‹ÓÒî®Á|ÿÉ“'zgðïwo9"àßkΑÑlXQÝü~KŸ¿]‹4Ýîíô!ý'[4OºôLO雑¦¯ö§4…üp"»…óœ öu{#º€ðÃUÂu¥ëk—ñ“d‘´§ü¬§5¶“Å爮‰PgÁû]MwyÁ›ø·"þ¤\Õ(&‹â?j;ILƒ^676hÐéQš$öÚb:ˆ(IÀÚ•Ý\@r@“EU=ÄGÑ"´«+be‰?|L U«æ"¤®Ê„Œr¡ÀV93hÒKçmU5©sÎ3ªJùk>šRmìeE½Í—"n|Jn!QhSÎÈŠà¬W,áÛ†"¶uw)Ù¸MÝÝ÷©¿¹-d›x2¥¹êqÿ› q¥ÈMz¶ó~ØÛâºý¹ ¨£êF}êñž =£->¿Ø?UI×Õˆ¶ˆ¯¡äÞ, Bè#œƒŠ…ßå|¹Q¨ÖPá)§Hf‰&\ö<•ãR8$²½ºéû_wR(êæÒy"}0RšqSÇ݈ƒ-J²>•EBj>£™êP7N)ëmÄÔu5¢y¡i’ h¥r}lDÝŒëƒï/u=ç­3JãŒûÒílîÒVg‹6øZU…ëá–Œl]kCüˆ½!ü¨Äö.ÇŠ±ÎŸ¶3sóK{µÚ¶·k"¢Dîˆ?ŽäSêfˆbû{Cüá âºîE]êò3ñÆöê¤Ý…3€Ùé$tmwƒŸ›=zxLãѾ<?`ÿîN®Q>›s[kwDÎ1ÕVÉ õ4G¬ÔÆYYev!ëJô%¨ûäâ´Š{%Mù~(sn÷)ç>#E RùažðÚ"ÞyDÑÉ…qåódÆ£þXÑÿîöÑÓ§ÏêÐVðêÙÜØùTL–Ÿ?.ûDŽ”g¶âÍ¡½E(‘‘4ò‘Hƒã £ŠcK€vû]Úd£AdCE5|ŸÅ‚µyVøÅ+´ ¼F£SÔ ¨ÃÄz’@ÖRªø;¤þܾ4Íø“Ôª6ˆ?ƒ�>0®ÀkŠΰ ù9©ZÔ«x´°‘E<G66ê²8Ï”q›‘ç‚q¦Éç+À¼B >~ü˜¤n:Ü_\?ÛoQÏ諨W´IaCºá»¨ãÄF톑ãÍ:µ×Ò Þ4 Ÿ<}úT¾÷¹ýqû×ïç‘à:+«ïQô'Ô)ž ¸Ç‡Ã¡‡>Ž4øŽúEÿr†.—O’y_ÿ~GÿE~h¯Œï‰¬“Šd°´§E™‘ç ¿!ÊH¸'\;¡}Üý‚ó;8CóŒJÄëy!ñÀs)Cˆ¯€€€×þ‰ÃU( ¨Sˆ?ëG§1OS—[[üÓ,ÑúŒ×éÂ_¢Úô êíypâjÀÛ�éÁ °¯ñpj.\†Y¶”�/t‹És 䟀·˜gïììáçîÝ»B�ráıíæÍ›bÀ端¾[A›ôãпú„ ÛEE<×ït)çÅö:¬ÓK€³18Û¨¯ôSÚpSbg²ö Ø<œ­5² '¯Ã³jD¥µ‡1žþó­õ׌k74(9“¤+µ„‹ª„ø£†Ã'úƒU29MIÍÙè 6…þfÈi& ÎÛÑœmZó²2 ¯ìÙ¸&þÄÖ¶}<JÛH6ZGb; ¦Úv{n‡ß ¥Už4—AgB�°HœdN›8gÝúÞA–TZTŠ*6ÏÍ'%•‰©KUò=X¤T͵¨EE,¤&¨Ÿ‹Zï,ÉIÊÇùâ^Ž:lc{°ÊúO¹œœ/Â¥¥iE.Æ¿'“ -S7?º¶ÒÛŸsÇcõ9Åœ¦ƒ5¯~ßaRÓ9Ã}]öduq-éGUžš•%ü4¡´,ùǯ|òb NÔÄœ¡è¬íy¡]2YhBÒÕç ï>PžÛ§¥š±gqu¦ÄÞ? ½a¿Ëàþô•ÈêKn­¼ŽÄŸ€€€w«bhºþgõÀÎmAä›o¾‘‰ˆï½÷ž .1‰šMgôàÁ ^»vMÈ#œ ñÇzí`R"€L6®_—I0òÄä ü;»;B¾hdͤ¦|R3(^¸†<ŸGúQœ`àÚAü¹wïž\7êäGP—B¾ÿ¾Ô:ØtÎP(DžÀ‚Ø�ÒÄ­[·ä˜¯¿þZêu†z‡á“MÔêõ½¿¿/“O^�Ô5<±° û>|(i1‘Àvç¥õº®¢uQ§ ¹À�…kÝ`c®F)ÔH?¨;7qGÝ£ß;à b„#<<ÄP÷›ƒ c4`¸¾ÿ¦À-9¢à†qcgk»îƒÎ8…~ƒêýÙj„Äg¯}üÛo¿¥Û·oKDƒœƒ>zÅñ¨?ô}äcŒËqØ!]OÈ<sP&h ¼ßë×åB>è¿“ñ„ööJJ“Tˆp®p_à|øB›3ºò#Ÿ„AúNù¥¶Ï‡Ùm@@Àë·€°l㲋Æ8¹&U­=zý@鴱ڼO k O!þ¬}¾¯»&ZÍ— •ˆ?¯ÑkÊG©”y®ºi~T-^a¥ T+u¸•1¥Txм“À|s~|`×rvçdƒßØB~Á¾âæùNÙ§Mðñ tî÷Eaìh¥Ø9&û¢ô8…[\¿j8¥ÔAfC|ùûü¿íòÖ¡¾t£0âÒ_¹ l3cû ì+IdÂ|eA#Øká�†°Nqt’ENèD IhÁ.ëŒw‘!D6¡í«Åëõh!'¯Õ‘~ª…m‹ŽZM;§½¢.ƒ±/Åò¼–} X©æDÆñ§j]ì}ËÕ‡@˜H¹nRš€ “hQEšç)ÍŠŒò’óÒQm×Jù}"Pb¯¯Ëçïòœ¦U”©R¶‹B½W—NI¦T €¸å‡øÒôŒÛaÂQ‡oDNt¨EIGÀAõÄ 9—a“Ê9‚ß]üÑP ªTÓÇPÞ Aªò—%ãß%×B²¥Ü4m$]Úಎçų‚bþ޾ *Us¨VA†? ñµàm¨%öým‰15Ó]T|"SVŸô¥üåUºl×Íwÿï™±’ÂE§¦ ™MZÉ©ýÔª>´ ò#Ï4ŸÖ§]ÜlаqÄL“Jž¡ý^—º„²ŠO—£°‹7>¹Ç#JÉ\<öê©ÒX¤b£ðõܕé_žW¸' nÿ‚ŠynÈˤ^é+ à,ÄŸ€€€€%ðùõ놺.ü &IX€Ç$z¼°Ð‰¾¨¶ñ`#Ù†{! ¸Ø0úq&ÂXüws0€É¾èõCÔLþV—O©“ciçu·x¥WÕòÊ=ÛlÃyžàúQø‹z‰GR@"êuröd…<>ÿüs1ªÀÀ⤕‘êUœçŒLÔ­g΃Iƒ#ˆ}H²8Ùeçq¢„xÅœR«/c”P§ü¾Ä\σÈÚZ¥£©%U¡~ð™Íæ”ym´qõ ‰(Íp·*A‡½~³Ýy¶]úÚRwpï~¡s仿ž€¡gÆ 'K-é•‹Çn Ý觨/ô?Èx£^u‡4PSÂÇîÐÇ�¤G?Äñèã0º¡®@X‹SC²BßvêTÈý÷Á1Ô„öd»ótÏ!(÷@ñ}@ßÅ9@ Òb Šçâ·Ã;Êös<× ¦…s"¿7Q©) àÝ…ó,õ¡[áF΃z1"–¾nt‰¡f þ¼:Dí ´W±àcçÿ²�«ÛÄ"øÊt±,d-{~žVðs<sÝÚÿEˆ”ÜD!¬º(ûØ0_§¼oƒâOÀÛç\*ßÁ6Ìßý�霭ÄåT?Z÷ÇUÜ/¸ËKKd™=}B¿|òHÂ{°ŸÁa ö7§bs•h+ý8%WŽ´í2Ž· @mu#§ 8羧ЃÿÃç‘q†J’˜†b/<¦q>§Ê=¼Í•¿V !eNtmk±práÔâL%¤(þ˜0IùäruC`P™AÊWÙü–÷š¢#OØ|„h&e´¡Ôì9œù/X…h²jìÏmªûlCì²M·bXAqÒ¡¼äúæ4žÆ4©@®`ûoϸº6ªeºsoñœbS´—‹k¦c ­„÷^ey;ò!ËáýUÞ%=7õ/$Ž‘ “E³Œ¢yÌI÷J[nk³FÿÊSR\žx’Q9ç]E*ÄCž¬ÊÙÆ'šw¹Õ;¢ wض_4W4ÏùXЮêÑ_ÃpXÐÎuŠm÷ §ƒ=ngÞc¢|L%—C5%>MÊyÇPÇÁ9+¯]udÉ4ÖñÎÍñ\HµÒ\yk¾ø|÷‚O©ºTÖKÎZQêKù$%—FûûtŒ¨îpþìÏåBN'ëÐÖæ¥É-¶ÑåÞév{´ÑO©×áúŒAºš‰ŠòçÛ–­-ñGêÕ…F¨,QÇÈ=f.@„ª¸DºâOQñzĈmÁÃ1UEeòbóò0{¯ñ' ౪e|»É;&NXøÇäc@ÞD$Q2Ñw~3‰¤z²‹ÉµSÅM`õ ïžzåÙñB×P.—9êÁÕŒ¨Gç ¤-ÊyA¢i÷öö¤ž@l@8•ŸÌ*¤8E ìsÇ;%�çm„öqaš\0w·pâÊä<°Ö^k-µô" Î±õbhªÙÔÜÊ,ƒ¤RϪ³C á§@þA÷P¯›EmØAý¿(íþ¹¢üÚ¿!Ë¢hšLÙhW–µ¼yz½~MC¿qä4Ô!àH3.túÈ4¨#×§œÂúª#Y99pœù" à$‡‘Ÿ!¬Q}ŒëÇ’NE"a\FeÝ—QN–Ìõs‰œeADêy^ð5dâÑð¦ í íž×—EMþ‰Vç¥.®ë4\B=ç…žwõþ—&5ðÖ"„ú xÙhÞÑÂ6Gö—ßôòûfe¼wK°fžjÊ D= ’)×yÌ#‹èƒÝÚîvNä¡O!§ú‹e§]Ÿ#Mø˜¯=¤_V™'•*‘Ð4:Vâä_”fÁR+Gòß]êÝðšÂÐ}[–³‚øãB Ç­pÞË.K•U.9¶…}QìÃ=xpHßåµÍÂ9α ×#ªÀ6&méJ¶7ÀéËØ<ö½´öNØäša;©¯Á=OÛ¤'üM%„RZ+†¹m¨K¤O¡H”׿êHBL5ãJ½íÄäˆCý$§$Fˆ¦bEEY›-_çt256G„~âë4ÎqSyÞ%l3‰íµ=¯ û‰3•æˆS†ccKB;äl{) /ä{ÎH5ìN×Ö–a_ö:êËnq,ëƒýZ§¶QÙÔ]S_'.~E¬"‹h çUØ›b:r˜³6Íø=�Õu¢YÁ6q¼¯¸+Éõ+~wÄÚØh»l3¨˜6bØÁeàaD–Òñb!™|n41×;H|L4­$W4¹¦¢¨oH©‘j8QÉö½g.¤u¼h1—SöÊ;‹¤UÉ÷AVÐ<Î)×9Åm©ꪔúü;™—¢ø“”•¨þp%ÈGƒM¤ ÛEM$¾^ó,FWîšlh7©^KïòEÿk®½&c¹¿ç~,,o˳À}¼ÎWyd×@Ú óå©ÿ˜SÛ„Ú•Àüö/Á%ì3¦×»ÆÛòüJ’Œú½Œ:<Ê6dÕäà=¤ ʵ¯Ë¼²a¼É £©XHwh7Œ‰RäËm:<:¦ãÃ#yÞÕð…8T\ ñ' àŒXå\ƒIT` <ƒE|²“Ë“¹Êy0±C:7éÏ@ºAPöÀ>GúÁDÔÅ�ßä‰wÔ /užy¾Ÿöu[ƒÁÊ(|ð«Ú¸€ºpd*!@$IïõàìÿôÓO%½ƒ +u݆NÃwç¹äHUø£HŽè‚m ¯ /”©cÕ–0ÉGž/3öù«�ê}ΧDکнä—þÆÍ›RÝ8ÅàªÔ~^6Ð/à]"F»Ò²ðqF)Vp†%|@JCÿÁ>§¢ä¶ÐÏ¡n…ºEviÑg’•x¿AÂV&¹=Ùïú$òÄö?þXž=¨w¨…á~r0|U·Ú�i…PœÇNkÎÚñx"¤  öð&aÕ"I@@@@@ÀyàÖ1þÆÚ—…pC/•=aÎs‘§ÏžÉb²”…°°©i·×¡ÿóOHÿìBß¹}‹úKÆïëˆ?ª¥JçÖ~ûéíºòŒùæÑCúÿüì/éüÅ_Ñã±uôP/»†^8eÌËm¿ñ] Ïþ½¨î}RùÇ}w}¢ÌeШk%lÌý=€½�ö ”ÿÃ?”2KÄ$±¥ãçÏöEeøÖ­[Ôe»£qavÈö fŠªX8ÊóÀ:rŽ}¨7<k2ŽªCüÀw÷î]Q¥ùú›¯9c§pD*qºDZGÐTÆ! çÀqŽÈäàœ·ç‡”•Oˆæ³3Õýöåùf®”%<Åu›TÖÞˆ2cYŒj•lzÒÌØ|ñAڣÃڱ Ê@Ê*¡8ÑBH3jÃh±ß¬CÛ1be:G@ZñÛqÖ¡v&˵¼w*ÅuhªÀÆhmc3Þ6ÉáðVÔJÙ}جRã¨Ù™WMÁìY~ÆJúÎcU¡b>ߤ¿h£d3¢.ìgU,¤5(5Å‘!Î{|,e1Â/6´Ô›œb“uÒ[z•rù;º^MUj=IÖÙîêÚ|/µßÀ5)e±Š>òžvÊ=VÈÀäKäXPP…R†TçØ`Î!òBª?ƒÒqGú¯É®&ûèEòj?ït]6W2m.¿,å/cŸX‡\»µ^Âä•D ïG×öÍšø£š»HºŒ%%;‚7F†Àf®d½øùôôé3î3ïL¯-ñ' €Ì€²öšX“¦‘ˆô'ÞFÉ‹õ˜c"ëäkSž¸ 4@0èÇD“Qù)LŒX§Ü‰a§Û1ñ=É[¨}t±à¯¼˜Þ¾¬ç)!¿Nz,ìuWG¯ ¦^v¸^Rø3“²Ame7l~ãåT{\ZLúQ_ ˜ÙJ<ªH&÷2po«T”Y¦ ê%ŽÈ�rC¯‡¶êXo¬TŒãñ¨&<@>u_LÏF‚8éMó¦�u†ºCŸtd•©UŸ£&êKŽqäÄ:G_Æ}€¶�ùÅ=h˜õª Îù@›oooÉu`?êýÐü|82™ó”ó‰b¸wןó‚ÃoãHµÁ¨jF¸ÿîO _qdï^­Çýs‹ËæT„Ðo77·Ü EÆ[”Ǭי#¸9u!äs;R—¼÷ð<s÷T@@@@Àé 7W‹pO¼t8E]çeÞ"ý\œÓ@£&kàÂß´ ¬‘]2Ly.pË<y^Ï[öx1òû{?¦ÿíŸüCºÓṇžc¢[;Ë YôŒO™Ÿ®»Ý¢5‡ÞØÛ »ÿ§?¡9Ñÿóü5yŽ¡_;w£€€—̳AdÁ!¿\+ç€[ö#ü6æñ¸çƒCÛî¸ —%»åŸ\T_`[€-eÅw§.ìlq élðõ`›„eb[ÇöÖ6u;½Úþ†cûü¼Dú¹(Ùò\X3ÀÙDñqdÎN|`³ÒÄ.Æ£, PÁ—†pÛêéP¨kØAÜ�AHì(öšœÊ)'»ü{ãœâñÙûp\11 ãPø¦Ûçëµ¶I8‰lsD¨õþ†’(¥Y䔹”‹ø®ùx„¯GA"=)+œ‚ö—~`)=šJ7Ý =V[é%_uk¿g&vœ’:™;t-½ctlš3EloU¢`ÄצJ*åZSK–¨(Õ3Ê¢„mñ»k›/¼#ö¯1%šmkÑ€ë'‚PÅÇC¿¥Â¿Ê„?CP0 -ÉÇŽ¸­¿eûùQiÈ1ÐàL5Å\±íÄlc+8ß,¢ˆ»AÔç:MIrE¿¯t)Jz•·UŠ*R Þš°GÏ ñ¤Lžûpfˆ^Ó(£B™ÐQèPû§2ç6+)f»h„ë9ŸDɵ“PŸt]WF1‡êP_uG®òmÇ oÁÂ28ÒMdZ‚¬2”#„ yè?§=;4­ít~_ð?•÷W>‹$ ú´²öÁ5^*;îYs mîߌ×G:]KŽ¥ÝĪ0ÚPyQåkÂÙa¥ cÕu)õ#D°XRG*1Ä„£ã¾§¢Ê†ºCØÁXîG½01qðú!¬ä¼Ópq^à«ãxü LŠ] dßçH˜hºÉºL.y’iäÉÇF_d^ÓÔR*SÄŸK8$(ýØSXàOW㤠3qû +½)´ºðDðÕæ Ñd›ëa£ž˜¨–k&;X—9Œ•÷ÄoS×$a–�C<1×ÒíV’Ÿ VØ}±x°ßZµ ÛIh$ *@œ€ç1ž'ÛÔµ¡—0\'IîO{Oƒný}õðÕ{`P÷‰#²á¯H¯8NÔ™xoj 1¢æ%«Äc^¤ZÒyäö×Ý'Ëvuøz`èrÕŽ˜Ó6ι}ÎdY¼yGFsòß.<Kë§G}‹D5d£c3dC$ŒXˆ·¤Ä8¶×H¿…·ÝQG›xð.og8!Ë=Ç\9Ú×á†ñ' àM°X�6¼–ýˆ>œ} ²crŒƒÛ¤Ÿ^¿Gžƒºð¹.ÔtiUà,€Ee,ø?yòDÆÞøq8Ô-0w-2ßÒ& S^Åb¶ ymæ¾=ß&ç–%*(ãò¾9/0cô½>¢ô‡¿OÛž3YP'ü‹#Ò£çûôñ'ÓñÑPæ4°C�pç…p [3–Bžôá€GØ>ø¤)OÏ»<Wžæs™3ïð<o—2«ä±ÁÇüñüýàÞSúÙ¯~Mó·\%7 `pCñÆq_»Uxž€ôóÅ_ÐãÇe|ê€þœÝwRÞBõ‹P¶ÄsΩ`£ì8S$‡ª0žsx†‡tïþ=ÙþýïŸv¶wÄ.ç”w X³ÅvÑ,IÅÆ‡gÔ˜÷ÁÖ�E §� òHOOŸ>•¼œZwfí. CÉsN¥ ;Ž}Û;Û&k46áÓ1®Gà ðÞ‚ >Ή ¤p}În{%4nÇ8¥A@=¶ûfp„Í¡á ¶1ަB”t6´×±+ÎfS:âr?=> ÑlBC„Fd[¥¤`—!ÃI@SŽ£�»0?€£Å,¶¿RÔ¦"˜¿FFµ$zô’´ŽÄSLtµ¡öè&u-*S¡jEº¶+®ïĪ¢Tq‡4ÌâI$vð„¦ÔÕOh'UtçÚºµ³I7³>UM> D]›¨;tX±M á" ¶Eò;&£RE\Ò4)ù½ÆõÕUôŒbúÛiFß–Æ q¯ˆè{“˜6Æ9†#êô ê(¶ñ¶¸Ãv·üåw ¤Š9n6ü-¢R¶¸ëˆ*!þ¤¤Ë”ðš+¸OÍʈ&iŸ 2öÍ}î×óŒíx|}Y·CéñÌ:ŽßñÜoãjÎ×ÌíLü®–OaÃ}ÙúCh1T^ ‰EÔ†”#Òxvz£Ìu„Øëº±…Ö!áÈûí£-åWoS'z·s%”GúqJ?Tªæ·á:-‚”#¡þA”+@ÌY<¿ëÑÊI Ù5—8²^éz¿2:RM¸´¶Ç@Euÿ•|…$eì±èSîî2+k;ÕBú|Ú-K6hoûQ'ý–Þ„•œ€€€�Ëb÷UN¤ÐÍb?&½mòóÞÁÇ…ë©$DR!3™À sÜMÚU­êSƒÙª´1cIÔb)äG=â&•±% ȤÕÉRFê‚äŸWG4qp*3®Ž!BE±½¬ÃP9«1‚¨ºN]ˆ0aøk¤× w,</|™d׎0Ä:/!’ä¬áŽ<¶Ø•¦}ypÄi xÊX…gÜÖKÒºûAÙt¢d«H0¯ N+•x ±û*áˆ6F¡ª!5h$•Ä­yö˜{!ZHïÈ; »µ±(Ýœû,$¬4}Ã&-`LöÓŸþTÂ`à›o¾¡o¿ýVcŽŽD-‹PmüÝï~G·oß–c\Z0ÏÜàÕðö˜Õceè÷v¯É‚8²±è Bæ:XìÿÎw¾CŸ}öýñÿ1ýíßþ-½ÿþûôàÁYèÆ;ÉP±øEvŒãAÂûi]èiŒ×ñ~B:·pÑy'´Ë‹ÍO'Ïdú£×é{;[Ô)M¾9Ï›óí}™»dðÛ‡hÚéÒW÷îÓG}D9/Æ?yü˜nnoÑí[7iÐIé‹ûi4™% >ïG·nˆbÁ—|îQ‘Óõ¸K?úþ§ôÛoJ¨šß}ý }Ê ÿ?½¾-‹o Ï·¯oôé÷?|Ÿ~óóŸKÂL"à]… O1æ×_-὜ê€û¤ÜÛ¾j™½äªI>Ë€gœaÃÁs ϧT„g~£ì° Í­š˜ ‹‰bžc 0‰Sßæ¦äYŽ©Ä8al<œ­Ï!â6~ƒ$¶'8òYû«Sp:<\áÒ)O‹ˆ(ðtk¢Æúx>ã|NQÈW]Š¡¶äÛdÏ�C¾ŒòòÖ6m\ߣÈNPržÎiødŸ ~–&Q"Ïç ¶Ñ Œ(SÌiŽæ:œŒì5ÎÅV)e§Ö÷± 5ä;z-LE”µ'êvýtÚߨ`y¿Z´O6ήԈY†‡÷ 6ï\¶ç\O%˜¬Gm¶ךÒõALÞLèýºÙÉhzXñ§¤éĶƺ[TZŠÖ¿ŽÙVžrÃ$‹>—°<Õt”Wô%ÛÏ?/ ¬Ó´ˆio‘:™•ÓåŠfûlGãô Dˆ"ürãzÆ;ŠïG>Fññ”“¨ •PŽÑÖ zl•H(°"/…ø3š%4á¿hÏg¿«3îk³‰ðtÐV/JcÓò•sþ Báý\ÕµåÚR;É'¥¾ÖM³•T‡Ö”Ñ+‹œÝPž!í0_mÞOý[·š»M;‡=»Òž‚½�_ñdž®S¾v!Π駪šg ÍµUn% þp€–5È’ŽÈ'Å-’–\Ø0¥íZO}½–déœ#…í0 HÊ"!Õ !cE ž]Jù¯qNxýˆ?JÑšp_FuÆ(È4GNÁDÎ…üÁ„“€©„ýš‰—Š[¬Ç>nM¶ yA%Þ{ÎÛ¯?è×J)˜ð΋¼&e:#3ç±±gkå‘è$ÿø@}:c�àH:0ÀÈyí8tçCê Žïmë¦/ÝW’Éw×Ê*h´ >0 /'uü®Á}Ä㋨®÷ªe pá®õc ¨³ªV®} Ž§6^¸3Xùž}S\ßNÇ…ıÎP¶ªŽ/R÷/ÁÆðB÷Ï;w„ìó£ýˆ¾÷½ïÑ_üÅ_Ð?þÇÿX(Þ{ï=úó?ÿsú“?ùú×ÿú_Ó?ý§ÿT]±`ûÿã\ þ8èðp x«qÚ¸!XÈÇâ½Sò�AGæô6Œ7T+ðÁÔ©~¸°> ¹ða˜KaŽ…ßç#-Žwó¼s@h<á]!IVÒ2^4EØ_±EXõ¨.Œ‡üŽ»{W­_Ü»G¿þÅÏigï=ºŽGúê‹/¨úð.}òáû˜Tðu,ïÄ!Û0~Çû">¯“Ò·_} †W½w‡¾øò sš[|ÝÓâëR–¥ êHám𮤓¯¾úJˆ¾Z0îoŒCq¨©N!ÿ¸ý¾ùeáˆ?( Ê àùu¶Ï´Ò’u°�ïH<_õ¨ý4á¶:r-xFÂ&„g ž þà ²ÓȪ�ṇ|ñEa>ÿüsyFº^Îî à;ŽEÝ!oGÂw((ñ¸ÿ¶”ö<<£ñqªÇ(3ʈôR>¶%æYNç… UÑ;wß§ë{ò{txL÷F3:šÌj».ÚÚ…N”yM�ƒ-Rl—â¤hÔ ¨êM;g0·½!æ4í¾ØVá¼ómÙÚsH; P¸GôvvåúF%Ûµç$˜(iƒ>¿›nÒ{7oÒ_û1Ÿ}¡<æ6ž³í»2¶`ða$d}lÞ‹½Œí¿¯ÈØÇ“)Òai^ç÷»c®ãQY‡ŽšÍfMÑ&×oÊu¯’™”CTõñn«:Ü¥(!L”¹ÞÆQÔ|¬ý¤´é„ŽñŽåþù¨Êé~ÂïèÊ´¥¨äñßÙܨêù˜ª ÷cÛW—Ôò‚ª—´.$q �„ôNåG¸8–½b•m„øY'eÛ^FñgG³=çz¢Ïù]œÒã9 ×UݛߺþHæ¬î÷±ÍVux›)H`>/[+sÞ…+Ð'¢4»2•"í9ô¨ÅÅ KË’_8Q”I¸º)·á”ÛDÇ€€€€7øàÁ’Æ—ÂŒÙ]§º!QK¶q䓼´yüÐ?¢Ôƒð9<ñÀ¤Çœç‰Sµé§VåPf<ë”:|¯§øó¦~"+¬ê @%dW®Ž\ý»XáŽxåÐ6ˆ´%ÚæéH[®\¾ŽDñ"ÃS ë&]jÅws\ÛóGiZ“~ š ŒšÔOb<v$¦1éZm €úT"0x½”ÒV¦½Lø(„HƒqÜxFœðÝX[ý–ó„œÜ7Õ¡ûâOM\SQMtØNei0 à]°` Å<'¿üòK1 ÃX â0ŒÿX¸Ç‹¢|ð,˜V,ž³À„òöx1 åPê™G9­ò¥±Ø‹g¼kð Ù˜óCM Xìþä“O$±ð´X@‡à`ÿ€nó68ÏÓgåÜ}‚HTàÝ?/l(çO¬#:flÞ½#ïº!çw}w‡Þ»uSb ¯Ÿýö3úý?ø}ºÞIh“ÏUå]ã…Ú¯<”2Þ½}[òSi‡¾óáDzàºÑïÑóÃ}Úåëþ »¼XýÞ{wê%ç|†CCpQJ´[O , €w�ζ䇒rÎ~n[í܇>8ÿY‡6çHÕ&høcP_ã*óbÌ à¹ßx~á¯S%«ì¬Â3žwB~xôPÈ€;ÛÛ²ÏG8@âY†ïPê€Ma­œ2Ðxlˆ?P3vPõ<Ëö÷ù¹ÉϨ§ã,´ÏçÈï@ ZHã+E‘Ë>Ià5ràyŠ ›èêeÆ6Œÿ{\n„¢U"jñ•˜„Eã9Ä?ǯ_¿A×ø#á×£Œ¦Û‡|’\ÎqÖ™J¨gFˆ¿GP)5•y)×(ê%\^ål½°ï Øð_5=¡ž“x¢Äã‘…¼p\†ÏÉymΑY`·3}­ZЇÖN ßÿ«[†DÝ®Ÿ†4Ñáö¼¹»EÛ×wåúŸOç4ž—B˜Áùw7búäFJßÿ ¥ïhºµ3§^ζÃñ”ö6ù9æ÷X1—•ÂýK•”±I¶“ð‰Ó˜Žâ>•U,}é^>¥§³œŽ¸>“²¢ ×'ú\>­l¨5EeÊïç.ßCÛE»\÷=¾„ŒëJ”„ ö¥ü7â.®ºrCðÿÆÎV!Ü›{ÉuµŸ#®¿ãIIOøüù (ÿ€H4ãzÊËœÛÖÜ+ÅŸדs{–u Wö¯#ìEÙmJ7mª­\û“aBU¾|×­þªüß.>Á¡å¡¾Î}ÚG/ß^+©%.‡ò£D¾Ç¶OÚqÙø "Õ|µ¶jTq «%P ÑGÁƒ ¦¦>J!æÁ™ϳ#þ€ÐWË5…±M@@ÀkŒ@ü °0(ò¿>²›°›¿f@i¡ÎƒGÕ ô=(Å,™áOŠ îšðAþ“9‹) ”Cd.ㆨÙù­Rûð/”^;øóHÈæz}Ò]³±²Ä!OY2&IΫ°þÈA{'Ϋã§ûpñÇý0d/þ„e–“ê>³4©ÉÓÕÄCÜt±; F‰4ɤïuÙ@¹É–jÎÂц˜œ²N—º\w}nˤѶú„횉ß[0Ár½ëúúåœë²ÚÎ; Ç8ÂŒ^XlhßÞe¸E<#ñ‹_Ô¿á Œq€îß¿OwïÞ¥‡Êo,´þú׿®=–±€à/Ü,_¼{xöô<ßÁ© ‹ã,@âÁØÞzœš)±ø"ÞGxÇüö·¿•¹­S±ÀÇ)z&<û × ÕNG¼xXØôx Íy‘ôËÇéw¼Pþéõk”å¼Ë ƒݼÁ‹ç‡¼„UÑïÞÕŽGOžÐF¯Cýï}B\¦Œ'T^¤ÄÂsº½Á™mKy¡^$jpVâkšÏæ</ܲ|pÝžžòut*N£Y<Ëyõ/æÿüÞ74K"™joFêÖç´·0y–™n@À›�gëÀœ¤>ÌÛ}à>wÛܳÀAæû–ȲàüÓÊÛÿ}ÕcPQîùúëú;òdz ÷¼S2ÃwÜ·£ÑXþâ÷ŒŸ éàùÔëw…‰îÝ¿gÕvž‰Ú ˆ:ÇCCöbÒC9£ÛëRU4éÉÓRöƒt<<äz€ýc&a¾´¨« 髯x °-ÇÁ-I �¢$­QïñçðÈ,Îãù‹ç,¾;{ ~ƒ¬‰ó`!?¥â uÙìÒ„Ò­-êìíQïÆ ê_Ûãçû6õ;FÝZu+zÿú{ÔŸÇô0(y_ër™3£â¦§üüÏ)ŸæTå¥T‚V¥Ýe°›t’ç6 Ré^N~œý“ ™Á<S•g4NŒn_lrpêC ´ÚD¯d§4ã]­{^/©“³ötQ$Ä”IÜïfüîÙ¢›7·éù~EÉq.êG(W¯ß£OnÇô~ó;iÆïµûÔžsÒ#zç)õÇè=ªŠŒ2>¦ƒÊ‰{iªzômܧgªK5¡¯¸ýð;èP—ëˆv¹Îæl‹øöÚHÔß�ágLÅ ®{>§¾Ù!Ýç{,-¹Ìx×es![u¢\®ïÏ2®ø½7%5MùwŸ¯75b;:¦I4 #NÈWõ\ô¨Ó³8§NQÁU(Er[Oœ?by`eCˆ‰}!Å”„Ár*>®Þµ®9U ú˜íJZw,ãÔnÙG5 ÷v Y pÇë–òS ¢uÝ_­Þç+îxäåöUº õeI?ʆSÞ  Q�:õ1–”¦­óuä.JiGÜ? œ5¨ÊÊŽElF‘ý[_ rÖùu϶Ø?/ž>|$ÏQsI«1‡‡L@@Àk‰@ü x§a&ÍøfYõõ€M-(=šñr$JJ¥žwICü©{ƒâ…A :ÉŠÎ8@lÆÚ&oeYîª̯&ý¼iðUwä·ŸùîOÊ×CÚXGüi§ó¿·Ëò®¡60sµÀø  ú]ìy0aR¶} ”‹…Ó,Í„˜–ZÏ¢ ’°gª<{lx¯HÔÂ’eªUù¼-Ï„€€€€óÀ7zâ/ ÿçåÈ<P÷qpê>PbX•W@@@@À» ,Ðãݲ‹¿ j>\x�¤|ÿ¯SÒ�\HGöqÀ9êwŽóH²»ñk†õZË]ž˜…}öí7ô?~ùsºýþ˜6á¨d§´76›2# ØÇ{»òõzw{a;Àk–ô[×›íÝ´õ]Ó`×WÎ郛{.ù÷h6£¿üÅßÑß}õ%Í#Õ,ªµ½ªZŽúaºð6Á9é€ìçTª}•i_ÙpJ¿Žˆ!á‚<ÛÕÂB>ÑÉÐ5WD�ÂyݘØ)û€Ô‚ àˆK8È<�~;¥3kP~lðlñÇ)¡Mù¿y>õ�D \¿¨M'B B=áäõ¤•î¥LS^t,ä Íí-97ê�ç¡Æ¤7êDS._ÊË^‹„…¥L8Ÿ9OAUV±­Ý7ávì÷©ÃÛ8éÀ!.‘Ç Êš¨„nî^§~ɆãÜä}ûú-¹>ÊiNÅœÏ[”∧NJÎ.u@ü͇¯?‡óHO¥GÒPÊòÜ3U-<?P´>ôAÌ{67¶hkcGH?¨3GHEÛ"Ô‡² ñL;B„!—5¼Œ–"ŒGØX —€Ü2ŸP5=¦r|HÅdÈ×PÀ˜(åô5ݽ¡é£ÛõûJ*¨EÔ床ˌ•¢§ãM•qxCëTPûáO¬é˜+úÞ¬ ¯9ýdRÐÃi)a¾&\ð£ÙœŽ&•ô³ÍL¡òý·Ãùìñ½¸«¨Ú¨¸n¹¿T& ÈB©8Öò½Û“žN*O ñ,‘ܪAYU£’ÓÏ(¦‰Ž¹W§4æô à—9÷qð}øÞÖèç®Ýª:Ô•„»òˆ°Ú«Y©òÊnÁ õ¥…”» žC–Hc WTÕÝ‚º…Ûè“Ü樓®eÛètB‹ÿšoÿ®?Š–)ÿyL·IÖœ°vè­Lݘ<›ã”zùJõ¨ÏòäóÒ©+¹r¸õ yàíœdùVäûurðŒž=|HÏøþÅŸ"o˜oÍBM@@@Àk‡@ü xçaIôml5ÇcÝ…“˜¤™t·é<ñ§5nÕ-›×¹TKÔÊÓ¼us߸‹ÉùŽiã"ñ®ýEÃ�#é܉—Úªö€A£ßëÕÊ=ç!·½‹pIJÓúX$¤Ÿåiœ!±Î³e�z”‘Î Ñ…IÄB„óZ¾è"I­ iÆo?ð.q‹ß>ùç2X·x_‡©öÂØ˜p#favxtÈ‹–º<áEìÿø¿þ–&¼HüÏ~úSúpo—º/ñuÈ‹Çÿ¯¿øúÿýù_Ó¡¨¨…5¿ð¶ x×`BžwäÇ(§BYXße*’ËBÌŸ¦ösUcQŒQÑ‘’„bóÇXÚ¡Úc”FRŒ±q ˆõH‡ëtÛð ;î;ŽCþŽ•X''üñ§(%üqùᘣã#q2Α¥@’pVÊä#!y,F”Ôäu‘ù€SvÇGœ—i*ˆQêG)ímmÑv§_« !Œ#HG V9Ò—¨ºñ5GŠm9Tˆ:Peñ§šÏ„,"×å’v+×áßjòÕJqPDºuû6ýð‡?¤÷ï~@;[×ø\©´ ?P’se;æ:ƒªR]ß'ú¥ü»ho^ÓåÐ'VùÉãXÚ{ŸëçhЧœ¯ åãj°aï¹/úÉ%Y‡vú••6R¢t²E‡q*õÔ+sþDÔMŒR¶.4=ßNŽ Iî`6¡9×{^Òþ‡£ÂÎtfÎCk—¶®¥”ñùJ¾ H_•QÌÎtBqÎ6~~Ä¡®Çd „åȵ–UJø/ÞdfîCW—a ¥¬ùLÔš.ÝT¼X¥[ÄšÆÖêÊg8=‹ã å‡3Xh×E¦ŽöúÐI&UåYµâ - ǹê«}ۻ˯1 ÷-ê¾hH@¢šÅ÷Q„ö0žÚ2~r j ÏHÝšÏ×\k/J�îOña<Ò·_|A_ýîw´ÏÏóÌ*à& à@ þ¼=Põ?gKêTdÈàµó¨iÒxŽuõœÊŸUóåDδdK}ìù‹»êVý<娋ô*ø~}.ßqÊq­ íéËê Öœ@ëÕ¥.vÝg®c;kyX´Ì;gÈÃ¥NIßLßÌ¿«SªVÇmí],nSâ³´|’¬½–ЦÚi×îAÐW–Ó væIsöóž$û¨³Éæ^�Kó}) °¾ZŒ´X€áï¶çôyaŒ©/èðJ±j»Y<ûä·0~nž…“˜Y˜#ÿ·?rnOñÃ}/-ñg:yV ƒœóúæð˜þÓŸÿ%ýâ7¿¥ï]Û¡í—øˆ:ÿãç_Ðáñª£…k x—`îÑiÂÏ'˜8•™6p߃ÄPUÕ‰í«®b QDM1Ÿ"FäKð‘ðEºMþX´VeEÇùñÊ{Þ|ðüà ô“ÉXÔ`²Ô(‹‘n}ˆêðçzÎV‘©jÇü¨‰FÊ”OyW[FPêð b‹®,–˜§\yA–éu{´¹±ÉûBx˜Mf4O(SFéºÛïÓ`{›: ôô»B’¡gJ±¢ç…‚s’R§Bg%*BPÌôÔÉRª@*Ò¹ÆýEÏ…ô`H&ʾ{Ä+GÊ…hJ%ìY§Û•pÆ }ôñÇô£ýˆîÞ}Ÿ¶67åðëôz4æ~xÄßS(-h$y‚]Q5õM-®‰¿]ÓJÛRQæ4p[=å§cÎrVìP•ÏiÊí|8ˆèÛ‡Dwö6©³½AÝmê' Ý„æWSMùvâˆg…(%PÍJJ2.k9§ƒÉˆÊý4„¢Wƒ($Í šÌ ¨Tÿs†1õ:õ9ó˜ûO«Z®¥• qUĉXLj?ü^žó¼1ãþ¦øžÐ üp+PÚÓò=×%Í Ä5WJWÃ;/¢‚ïÍe R76C-rA­G®zºòöÔË 5#E>Zûã¤TcÖ^6ôÛ‰0^ª9omç­èŒ&gÏ0ìwŽVä0ù­ÛÕ¤µ¡¿Ì¥ùyª%¶V[3Bò©D *>°#7ê?hKsR¨4)È7!-Ô¤ð¡æY ’“”y™gÒÈó·Šì}`¾MŽöéÑ_ѣϿ¢éþ:sã5~j•žN‘:Iüöžy—A þ¼E8¯eÉ k²„ã.´þúã5µìK‹Ñ>ÅÂ×7ØøµdZ|îã¯$3u5Ù4™¼ÊFYF»Ø)ï_}Jê3í>µzZLs[Á—Ý`‹Æ†Ö®ÓJñá¦äW™ãéùésÑ~Nžá¥Ã›¿¼ øÞŽÎ+v™'õr¦`‡ x»áÂdø în_öëËueÁ‡PÖ-ð—í™Ý’<Îèùƒ‡ôËÇy±ôå ÆE ‹v„°9ïpˆì€�À)Û@ùÄõ´UfüïØ‚z;Ä×yÈêZ(†9‹è¼põ}^‡bX¡ÉTD£BÓ¼¬¬’¦!®V6zžcÑ‚á¦á$x„„…sjJ“˜6Q•eº‡$¼Ok<oEÈ)Û´•Gœ¥òÕ:”s�PRNç« b“SUŽE5“eÌ"䀦~mˆðm;;;týÚuJû4™LéXh+ÓVo‹önÜ k¼¿‹`QL›[}QO§t¨sšvøºzJ:]êÎ{G)×yÁÏöŠR•Ò ; A¿'$*ª#©MÈ’°"„€W %*R ”N4oëô6èÖ­[ôñÇÓïýÞé£>¢ëםӿæ€ÒNDeÁ} $˜!÷ˬ#ÍN¨Ô!ˆD bÕ!™L݋֜nHõ÷R5ïA×.˜kñ*c“Û0-ø¥0¤b43”ôø˜JÎÿiÕ¡¿îˆ²-J®ïÐ×× Q*ÄŸœz©¦tÊ^rÝ)© ”‘9(‹¨(QNòhÊõSõ6©Š3)XóïDÙœŠhÎcŠÑ§g©ƒ!mtùú“ž”¿Š Ê3Ê;%e]EÉ4¥h”sõç4ÖS– œq Aħà:â~?U%ïÓü)„õ¢4Fž|å XòÞÁšÛHãþ7ä F^íiÉ* ;RW}SêZ9]ëÖ˜ÃJ•ÇãiR]ßU-«ªÒÍ ©êfkHBõŽ´ÝîÿÕÍ¥i?ŸÀ£-ÉõF~ä3Qè1a¸* «å¨¹Ð_ºæ$)÷t1u!„¡’T©…ècž$ä*è@òâOœ5«HÈ?•ïg5Ï#¨hU¸'$ü`dÊa UQe*½â4ÓƒÇôü‹¯éð‹ûíOø¾åòTšü…M—¶Ÿñ; à2ÄŸ€€€�@µ¸aÑ: àeá´y]xœÎøï/˜à/<u±°Òö¨> š|`~Ô—R x}Q/¼ëhá÷•Ÿ‡Nzu¯=×^;%Ô‰xqªgõJ?õ¼§ ~?bÁ ¡Nä…ø x›Ñ&ç¸q¦¯n³ íû®M|)cMíˆ3•|x%œbþ@ÁfÅTñ}=Ÿ¢ú£ÝJ¿öÈ‘¹lêüÖ=«œòF-FBƒ$æAJ”!ì"TeÇÞ&s§¼Ù„7o‘%±p;Ò€[Ÿwê •%™=ÑâÑ´Ê(ƒ­.ÄÂMõz}¢8¥ÉxŸÊYAùvA1ŸtÐÐÆæ%TÒwº<ïÇ4Ìg4Sšª,¡ˆ·¥Bü™S–V\¯Í«9u³õ»=þô©Œšuf”&™{J]Ôs—„¦D ! W˜B9(ÐÞõ[ôÑÇߥOðCúáBwîÜ‘yˆ8**:qŠˆ >VÙ¼²JN†»¡„DdjÕô CX©lÛ5äˆÊ,u_j)3þ;åî4åM‰(¥Tœæ(šÐg_ðµm h÷ΈúI‡ºý mÓ˜ï™2:\¾~Ìù@‰'*„”QT)Ü/ äΗ0‹4 Ë9ÍJ,lšPO—4P©vVLi<.èðÙ„’®¢Þ`@q¿Ç©ùÓéEØŒÓ÷¸¼=>q†kãkŹUEsBÛâÔ~Dñùó¹¡ö3CÛÌu,„šâöÒi‰Ž+D:í«üœP³Ñ­5dµÂR©Zˆ¬Ú4nh?~vD¸…L,ѯ&®œúŒièH5#§y ÔDž…û¾²÷©(èhC‚ª“rÛJ»-jЧ—Œ[”½2mC}•E%½Lˆ|²7–¿ øDelHTèÇöž¯@JÆwKLV–hTâÙÒ5m#ÊWP?›Ï$<ß³G÷éàÑ#š>?¢x^R‡ÓǵǸ_Ùt!ÔÏ,û|‘PåÚ„} ¶†€€€Ë"Ô)ã]Íý¢á“óÎõ–µà!E§t8uÊy–}_u¤Z²½5Ñ¥Å[MšçÙ÷¾ÖxIÏ–€€€€wíÅ÷ÝÍ/cH«,‚1. àíÆš1º‹Zñ"3ã“jÍà™ßT.4È™’.†¦P~ìï&®b\èHë/¢Øå…$“e~^OÓ˜úPŸ‰bšUsïk?ˆ¶áÛ½q÷¯JÕ|à|N @h4|ϲ”’Ô(%a¿O"tŠ=´µZx|µŸØ(þØòê% ¢’¹†óÊNGGGÔM;rm Ùàüsú¡‡ñû‘®ÓéPQôL=èRˆ?=®klO%ÌW%ñ»ÓÉhRäœ_ak›Ô æÆÞ úøãO$´×w¿ó]º~}O¶›z.H—¹¨‚΄”+êÀ¯W7Ï©÷“Qa© )"äÂוu:¿q i×!%ó¾ k×êÏUùèÑÅBB EÇ7hãcN¶ ²Åœæ³”ËÓ±}!ƒÀ “‚&åDê¯à~(!×z=©#„Ýòçy8'ÚfVV lÿyNÅg÷h<‹éƒ>¢÷‹q>#êv©¿½M1çÙétIw*C¶@{ác;•´%é:o„s+©î\…‚Ú–òE(ó<ÒÙM,9¥ªj²‡Q£ªé.­ô–Êæú³;Eäçxò ³Æ*þ =#ǸQ'OÑÞ¦}rŸùažu ±F-ª²$;KüQ.¼—¯&åß–Œçúáâø¢!¡ß¢ÎR-ªë7¢(Q†Æû”(0ÅBÄsy!]eÿúAÊ�ˆC/ò‡tïÞ=úú›oèððHžCæžD÷˜ÓUy#LúT ( à2ÄŸ€€€wgX¯asëÉ–¢•x}b=}c}Æg;î50É­©Óµié4ÚÉ«ÇÕÕîy*F¯=V‘nˆ?NzÕ%ÁÄ2Z•ï²ó4+ù^ÖéÄ0ÐÌþk/°“°ñ•ÝlUQml2¿ÕZ “˽)S³ýä÷€€€€€w m…¶Áï"y-[txûÑU„‡<?N³¸wö Æ¬¡¼g~ÓÙ…·Uï7?üûí/¶.üïÈ€€ ãe“~€ Ø&³£Ká;t”¦ >ýv¢éZZ!â•QE) 1ãòMRÉšpŒPFD'bc-…! ”.Qˆ•YPwD4MlX®Òªý4¡z±­!S•GTAÙÝ.Qra«ˆNü½ 5%”­(rÊ d—¢iʸ¦Í' €”� ®)Ž#!ˆÌË9Å\'0‹å³œÊ¢”kA)„Ã_¥JKú1¡Œ²¬#õµ³»Gwßÿ€>úøczÿƒ鯭[Ô‡²M’PÎå“réœfyNs&ð»2Ïûd+þ”(_iƒIªF-E¬zbÌ)4E6RUE‹zIªþ¤YÌeâòuSšÎ+!5•9ÚÙ„¹*¹Lóã =zðœ~•}MÙlB[óM:¾Õ•~@ãLÂyP>éõD¡¨ÒSQ‚©ôŒ¦\–A¿C»ƒ> S\#×U\ ù¦àý#þ<Ž êsenÒŒ¶¦SÚy:&êvhïfFq¯KC>§ê”qÇýLú+ˆL™ÐR3V¦üép?ç"MTESnW(üŒÈ\S¡¡jtÄ482×Å)Uië]Y²Vlë•–¼UÃ"ÖFíÆ~Èlwd+UÕdœZ¹JQ“–hõÀaQh±ÉÚŠ? ¿u«mu³Y{Ü1 «æö;³ýœðó¬Oj¾FQ“¿O&j­m(›-”—J<3róÜgŠ,)‰­Òy!õr–F¿©Ìs¤*‹Ú •o§vK!Éóm€gÜÑž|{ŸžÜH³Ù\dÄp¿ð­È_ù¯*jRØeàÈ[[[ôÉ'Ÿ¡íàðºƒ]¹¿.ƒ@ü xUX28?‰hi†§ ßtB„>ã¶WWCþY~øã’ù´SKìO}ï•R&KMšeF€UXô>Q¾Ëª'šÚW¥I-%'-#�¼KpÆuxÍÎø~™Å”æ¸úåEAëÒþ ²ëP/ÖÒ•8ýgÊÌÚNl¦ER€òv˜-;ߋ֕lYÊÕú仢9wTOߊ¢l”'xá*ŠÍBi§ R5�ÝLéÂ( àõB—ïÊ;#F àõb¢ Þ¶™æ´EGTð=ÜW%Ç–ÇéˆoâÑÐúÏp`‹@Ôí±Þ€ Á‹æƒ¾lZE¬ÿCå§×ëHJ(l ‡ÇB¬I’ˆúý®]ø/ŒŠ ™gŠ|@ò5Jø)‹¶ 7pßÛj†CçŸ!ɲNJ,4NøZŽi:›Ð<ï×Ïd_ýå6j; ´¹¹)u¼pØ7iXäRúÙ4§2Gá ^”Jø2!Å ýô¹7%÷Þ»K÷{ôÁGÓöî.¥$áö@[ГW%å87ÈÃh-wWzŒP`œ^È= þT†È J#º¹”§²¤Ãψ„$³ÌÖ·½Ó¥ŸüÁmêoìr£~Kó¯F”¦TÌÌñò>¨šrúöËǤFnJôÉ}ºyë:õt‡ŠùÌÐz}iûA7¦<ŸÓq™Ó°Œi;êÑYN£,¡Ù|JGñœfçCÚ'ô«~AOø<½îœnq>Ÿæ[´=Û¡iñ%ÓMî?‘öÛˆ{”t2šoæTe…ÙÁ½ÌiÞ›S±¥i:"Úßçþ_å4¯ zN#n£šÓ(QÊm˜%;”Rfˆ&òk@*ɨąéŽÔWýâT–ãH?ÖQRœ'˦?*pÝš­&Èhi'!Åá=®]Õ*LÊæÛæò˜óPMÖ‘æŠ}[­…oVD´ÄÖªj]dý@uMüÁo§øƒtæ½5æaM SÈ> d7… äú”眺8Ö1Š?Û¥UN:*¢”‚ŠÊzJó×ôóÈ*ýTL)Gí’º¯ŸBú±÷·Ĭªƒ!Ý{DÇŸÉÄÜE5(ª¸Yø¾O !!iGpº \ˆ¯›7oÒÿñÓÞÞÝð€&sâ{hƒ.ƒ@ü x+à{ôú‹——‘Ì~“C{µ•.åû\9¢çTKÿ:å m7+¡Ö챋ŠV†Åq éX¨j{£kGî©CuGŒ€€×Ý$¢;õª>u»1 RCüé'šz="µéD Ïx1ÅŸÎ+O4¹ÒNaU/j2a�´5;Ìó|Q&œH c·Ý(è”UiŸ1æ/ÆíYµ»»+¿çó™@$WÉ#ï©iÈn!Ù¸×W⩪³‘¶ôB¢%Y"Ä\دçÏŸ‹’Ï/Øw»]q@À>|\¨-üÅ>({åŸH® ǃø3›ÌìµÎ… ‘Ä/Ôãt©‡Ò4£N·O›ÛtãæMzïî¢ôsóÖ-êrž¸(©Ê(ô3™M¹Í&ü™J¡¹(-UµºªDQG[Qe9=ÊQ©&IÕi«åZ'NL7n h{wƒî?ìÒþALÃ1·Ã47¤‹Êä9ŸV”φT໤ô|Ò¡&›´‘p™ïS</¥÷º)ÝMuù°ÑhJÃ4/î¯\oý$¦Â<Eœ¢4±Š?#.h¦¡MÓ‡ñ&•´MÇãTH!ÇPè)iåTö4å[ÒinBµåÜoŠ1Êõ„F\Þ£|Ê% J3¤ëÎi« ‚kF]Ð\ïÍbiÃJ—ÜfRh{UÉùµuPÔ'Tt¨&å­OCP#aþ¨X˜mü?ö”Ò*¨ÞQwñµ‹BMDu~'†&BÂQ¤ý-©ŽÎ§íË|*Ý—:M‹(¤íñ†ïkÏas wȲó|ân…¬ÅßO!Ðh’}mVñGI4Š…Üï+mûµ–~îHk¸'äL¹YyÄ(y^sM³£! ŸíÓèàˆ·DÇM<Ëù^Ê"ÑŒ¢Ù`0 ;wîÐíÛ·%Ûý£)U`b\øðNA&§<XDÌÖ)O~�C¸_o˜‚'‰Ä\NÒš!n¶GFzÖg£×@dòä@¤%ù¼H›¥‰xÈ¤Ç „ëÔwŸH>BBrÕ"U=h×vRlóÐUíA Yo„9ÙV2LwñŽÁ@3:õòÏo2Á÷ä€'•“¼ÙGÞ¤Zoœl/iñ÷’ï¯ 07K¹_`RŸö¸»DW‹÷§¹ZôeÄ­žMgâ!„6…4²iûŠæyÁ“ú\<‰ =«tný{8] o.ž2'‘ìWqT÷Çúlµ”63¹ºÓq_ÙZ;9³³<ãQ~œaj䕹¿U*±†mµ‚|ãÙâ®Æs\» qíuK õ€>Id'}ÀŸM‘N¾´ é΀íwàei_Pg4ýÿ¢™Ÿõ8µâ9 ®æùð Mz`8–/¼^Pz=Iõ,Ïq}ŽG½Øœ@/£­?àìm½@, xóÐí¦tûÎ]»u• Òˆ6(§Ž*!CS6ÕdSEÃy%–x\Ðó£’f£\ˆ,X(/½…tGnhÛëœjìT.T‘ D'¬ÓéÊsf4É‚ø{ï½'iŽÅþÔDDþÄt’œˆïí0„ä¥L( „°®Œøà{?ëÐ7¨ÊKþT´¿¿/eÆþ[·nIèIPG(3þŽÇcùëú‘6æÙl"yÈ5;‚ʉýø@í6?Øî@ÚÞÞ’ÀÝ»wëóáZªÊâÊ<O¤îå;¸„Y³D¦ÂÚÈñÝŸ/¸ºÄǞĮWR­¦²ô©Ï‰@îakw· ÇOª…PK•UµÃoÔɽ{÷E5 õÔãÖœ<xBjš 1ê£ë»´ýÁJ³DÒM*:âc'lgÆñI’šöD;¢ŒgÆýtæ®-éÑÆÆ¦Ô!ê÷øXÑl2d»~$D­N'¢rkHIª¥^£9÷íጎ&’þð0ⵃ>¡ÛáúÓ^Jׯ_§øF*mxmP6Ù$õd$m7)§”A‰'1Jxg¶u,}6úªYk£gdÉu–°B—,©&ÒÑb¤½¶-sAK7!­×w}uv£}m/µªQµ]Ù­yT–ôCºå²XÞuáFQGP,øùâ–#þp…ÉU9UÂ㘨Ž”´íÓÖ.íùGÎÐq“¹´%úú¤žišçÜÆt0žÑdŠc!ôw@@Àë@ü x§€I�q_}õ=yü¸Þ®½E‘60œÃôÚµk<¸ßl Øo·N¯!èhËVÇ׊‡¤ã#ʧ#™paâ·½µ!D3HÈhxZú¯¬¯ H?i·'—AYæ=&€—Œ#£ ¼Q›Œ$®‘Â5 œ“LaÜÃ1)OH:©§öyàÚ-ù½œ”´ÿÅ>š]`Û×n�Ö1@­ÍjñwkÎÑ6f¾NCnLºþ ¸_ܼy6n&Ý ë‰q>Cìò>i®}ùùÓ§ôôÉ14 OmAò¦<É=>Òñp(ØO”u9âJŸ ñl³Ñ­MN?Èd¿ŠR.Wl¥|•{ÈMæ+}æf›HÌ<·šYùvÌœø¸221ι»åªO²¹ !EÍùS”0FZØ7{—7›Mé`ÿ@Œæ*U}_žh_žÈÅiE½~F»;;´{í.ííu¸_w×ÔÛ黚Bµ&Ëðj*—Mî¢Å´çkÜ3ãÒÄŸ3«mäoŒb‹Æ°°fð&ã]%¾ÂO@@@À›E—{^+#ƒ±2÷e¨ç8zù› á‘°- Ϙ÷™=&Ôˆ^u@@ÀkŒ~ªèƒ­XÈ3ý~J=„Üb›FB†è1fP–Et<¯ØNÃ6=¾Ï ~R±6>ëêgÿëœO€ê4uÈ ]sÒJ"$£ ´H>|µq€Äwµ¨>ãöµŸeËÈŠ&Tj,¼z™‹—²À|^if||LiÖa;j*öÜy>£ñxÈö9¨úŒåù8î Ç‘o`—ÅóŽP )a}`‹ƒó[‡óù3þ ÛÎ#×›P@xÞ‚ˆ�G·­Ímºu뎄ùºyóÿÞód:¥ç*M¤9—g2Óh|HGG´p@ÏŸ°pÄig4›ç¢þ;]^¢Œáz(ãÄ'Š)Zly°-;r š!Ä*×Þºió|6g›Þ>×OW¾ ¤j!:Rb«Ö&6%ͧ|î9HG¨æŒ26šŽ?#ÍÇv¸®flïîsít2zþ쎧¹ÚgMË\Ô_".[\ÎIÜJ¾.¶yJÈ2¾˜cî Ï(¥û÷ñ㙨JMfé3ÝQA)×¹žÐæ8£ë×»"qõì› =tÌ×1¥ÑQJyTRÞ+Œ Û!¶ضÞí÷©J7h3íSÄvV!£ä¢@¤¸°VáƒjØWºu_¨º—©:ì—j|#‹JÂS‰W©H-‘„#Ûg妭5·F€ø{¾ýÒuy9ƒ„qS’½\´QÄA{›ò‚´DÖiµ)YR9PÙK±å²ÎšVÚúŒšÐcº±a¢¯”6ô– Vfr–¼bkðWä݉M™íñBT+L›—ª°„&ÔOlîQç£Úbãø 2„ÓÃ3¤4DAŸøS«¹<ã¼G3qOç4œð=2å>âϘíÕSþ‹©Ü^?¼¶ÄŸ€€€wNéçg?ûýüç?§{÷îѳgÏdŸHÃFñÒm‘^LŒW<M®_¿A OÆz½¾Lä²OFx R &d I@±ÞûÏŸÑñ³‡49>寠Ï´Æ“ 2q‘K™Üñ§Ó¡¤Ó§8íÈy7¶ÃÐ85Ú‘UrÞˆc‹¼[œJ£Ê!,x~J;­î1,.Ež× ÆAÜèd<!ÙêR|J)Ó—<yøú«oéÛÏïÑÃ_<] þøþ 2N>ɯ¨Ó¶=„œG9½ÖŠ?¸¤”'0=n»íí-ºó½[ôÝ?ù¶oÂÓ$³jOta ýa xôð!}öÛßÐ7_MOŸ>•6¼Æô¤yÎiž?߉Ü^·Ce~ÈýÆxHÝØéÒ>¾FïÝÜ¡žäu…¤#} ³%qã1“ÿŠ'ÔºäÉqe ¼Ä“jÊ'¶¯#xÌ“le<™æ%ÍÕgeâ–+îÏ#Þ?šLEe aÊKe<¡W·×•¾ÀÐsxpH£Ô¸¦œW.ŸeíŽîʶ>ÞxÚ|ðÁ§ôÃVtãÆÚæëQj‘¬rQ8ƒuλk-Êñ«Ó!‘¾hÆžae’Ï>?”�ž?xΠ€€€€7Íó]òO@@@À�åý» /ÂËÜ)Ã)R+ßÊ’‚°€¦âDT üEû*¬€¼q¨’®¥ÚÐ3ê¨9¥¼jÛÏÚÇ%H@)uùŸTšó½¾—d4ŒRIÎi¦QÔ<²ôIÍŸÚ•È*nø @FµÅ8(BQÈØmKqpta²¾üòKÉÇ©ýœ áU.<}œºŒŸl´¸Í¨™¹Od‹^û\‰áŽíklß›ç% GôìÁC6‰å´³½ÍöÔ.%‘’Íó#(Ä<§ããCºsç=úÎw¾#D\llPéá =PD <wg7o ™ç Ûõ`«>>:2!ÅØÆÜgÛ3 °§¡lP°Ùããß{ï}Îï:§É„ SZg;þ‡&Ó‰8Õ GÇ¢(4â¿°!î°úà˜Ë8¦ñdFÓYN3Q o¾ÞÈšï¼4 'Nå§²!” §èîˆh£ã!}óÅ—l×;¢'ŸÐó's*&}R¥ sšYT­ ù,¢£aÉv>M#îƒÛÃÓvÄœûTT\&ÇGòwkÓœ÷`>¤ñ| Áêl7ÌG\ÆMb¶I‚¤Úéa–Ð_O*º¯KQ·šðµ<<ÊéäŸêˆz÷KÚ{\ÐûìÐ÷¾—òufô«ŸУc!ºu: ݼZEÏŸQ^M©»Ó–Јû@ћӂvoôÏÛâs©ÃŽ„^ëQ5c»„ð\eã)[;9²ŸSÇ¢š®ì‹Ì*-öX(j©ÔÖ/²Ð|]Ú‚bˆS¯.Í=AåN™³„ª©¦|:“vŠÍŸHˆ»A¦Ò˜mÃ|oÏ$´ÖIÐÏ67ê Ö_óIUúi–„ü#—`É\æ¦1åV–¤J-!ÈÌMÕ„áBÐvf BÑ|âkà+ç[¡­»gÔœT7Ä#±Ë"’‚8:ƒ€UZŸ½Õ<S@\ãëÌ"î;XWQ†°‡ çÕ¤¬Ò„LÓîY¥© ÷Çé‹iEÓ£9ß9GšŽ&šžO N šñ³ðë;ç ”"ðĘ)Œ…^âO@@À; f'ã1ýÙŸýý»÷ïdÒå â0b%ãï2ôú}™¤}÷»ß¥»wß§Áæ–xV`’Â<< jädy’1›Š¢ÐoókzôÍç4<x&äž½½kôñGÛB¼0JÚâ¼ñÙØ¾F½Á¦œ“7(�%¥™€T$ÇFâu>å OÐp^QV) “_Œq<9�aÞxF]È\‡0ä1).“» Ù.Od6úœ.½šI þüâg¿¤?ûÿþOzúÙ>?ÕûtKe•âqXôr†DmåHý4¯Û°ÚDŽ0½>ñÃ?þuÞû¿Rºñ‘mÇË-¼¡Ü¿O¿øùÏé¯þê/é³ßþ–ž<y"yß¼qƒ't‰LÊóDûÑãÇBPô{Ügö)ŸËñÜÞ%úŸòÄæéOî€âÔÒñ+‘ü-æçºÈ§Æ3çIò|$ŠC"ù[DÄs(:::‚ˆ?Yß4¢¬GÓ’ž±ÑeœÃ ¡"jûßÞõ=Úäò8×x8ùaòöùïþáqC¶ñ85P«êoð}›/Óßûáßã çó£DòC¬ô«‚LPs#e}*ñç¹»ê3ªö,;’.|ì"!ÏQ Ǽwñîz™Rß~(ƒ 1°VMÁþ ßsßyÉË|\f®fÁKoj!ìÍâ;Æ9÷CáCÔêp̺^ôÞe8ÇØ aqcFgOp}p.‚’ ì ¯Y"OE»TPÌ‹ñ‘ 5(Êâ]Ñ”oîJÐå”:lÄëGõÙ¦5D˜­ÊÚ!ý>ÞøÏ\;`ˆ%Ö)qÅÖ(Ê”µã¦«3<sðÝWüû«¨ö,†¨rXö½}|½Ÿü§d«L¢&Bâ`9Îè`ÿ9Å\žÍ^âNWlO9§‚Úˆ7În4ô¹ý{l—{*¶2´5lÁøˆn0`{lWì¶Z=ƒÛÒØ ›˜SÇv„0‚ýõÖûôíî°ý˜óÇ6œ){÷çŸ.vµª*DUÄ©áhHÇ#¶Û'l±Ê†ú²ª>F½¥ªÕÊ¥ŸV†ð)NºªÕÜ+ŸäU¥ !D YÈ5„,Ò°$¬(ÕÜ`òyÅ×7ãÉÛ×ùäî¾vØާBT™ÇÜï"º›u)C˜0¶ÃÏØF ‡X*àœ8•k-¹ìç§ŠùZ¾ZË<¡^јmœ_Lh<’ëît“Ï»?Õ4ØVʆ͟}qÄm6’ëÜÞák¸6e›;Ñãê€f“ufܶòM³êÑÓt‡F‡crÉ#â{m§ÙV_c¤r,±§ée†ðsúÄdȆÂ#Ct4¿¨Edˆ6d)ºPÛ³¶H\³4ˆ?¸ó˜Ê ¯Î)çz‰;|Ÿ÷RŠú©85ƒTÎApÉùzæ¤ø9Gâ™æº›OIMâî_†Ä&/N¡•”j:Xkˆ“Øä~Â5–¢J„ö¯/S©úù ùÄ$d/q:m)ý¨¶‘ª¥Ï¹>E ÿ”MwÒ†,„z‹bþ-ŽSIk” ¹ñ8 Èk‘U@26Ã�‚­ €–sûÍfxöðs®Ï÷èæ5zVñáüÌÛJ¨à{&}v@4ž.‘°' à5D þ¼Àä “(£€€€ßnr ÂpˈüâMKxŠ *Â&ŒCŽ’GÏqú€6DVµÞ c éðà9ýöwŸÓo?ûéÙU9&Y#šOG”OŽ©Ï“‘®ŒrÆ>/¨÷xÒwç£Oiï½Å8�ÅCn1åÀDkjUR0œŽ³TÊÖ¾‹ß\Ø8ƘðüÕ‹ôOˆA¥I9©îÒÄÊÅ„õR†:Ìæ<1{|H¿|Ló}ŒOìy[DŸe¿T|ü¹#5šENVÛnß‹€‘m~œvϧޔS› ÒŒ'\ÏîÓõ›×h‹Û™|¨ �†Ã#cžòy Ý(ž€Í¹–<×PÔÉ„†íÏ…sPí‰x"Çæšó„˜ŠŒ:ÉzÉu¢Ž|�ø›D"5[ȤªfUcÞÆqþë1çyÌùåÜ/ÙøR`r ÂÐŒzYE¹ÂduLåÓoiÌõp</iĆŽÙó}žøò„“]5ãÉ3—ò#*†s™¤°VÍ ÞWÑ­MÊP“ðVšL% ˜(Ú˜I^òŒï[bïpøŒ<ü†î¼÷—ùC2Ú´ê ­Eu«¬gÇ„AÄ›Çóc>oä^N¨¯­ø³òPë‡I=¼Ó Vÿ.LnÞp8Í;wèÁƒ² c*!Uó³Ïyè" ¾ûÛðޏyó&ËÏIð¡øˆ¿0ÎcÁÏÎápdT9_Ýq^ólÃB�Üv¦ÕÀœ{. ã!¶rç Ñšò‘¤ D €€€€7>õfðnÁ»�ö À©`(ÚdûDi <Sž¦¼ðÕ_YPWf!]ñ; I:×oKxš˜ç—¼ù}æ.dO5NX˜Ýà÷›BØ8qŒå½hÞ‰˜,:^‚jÀ» GúÁóG?ú‘8b¼èÆâ˜È÷.ˆ_ýµl¤¹È)îhc uj:‹Ê8Î6U˜Èª‘Ÿä‡¼1.FZçxéÃ…òjòR5Å•Ãw¾ªÏíø…“|ëtç|¬R8ÓÜ9ªí6âq=àQŒÿqú$ɥͧ³?ù9úÈž`—{øð1_ûXÒcî€>áÆò=RÊ’ŠêÊ&ݽ{WþHÝomm[І¤Ë²®D-HH3sC±m[/æ#÷wGß|óµ7’$–üA˜@¨+¼?©Êÿ ¥L6¯ZqÞKS“¼tãéz êåƒ?¤k×oÈöáðPÔdj•×îö‹Ñ¦çk˜rÿˆº©NB)Û»åýÒÅFùÆõG "Û7+CpA²¶t¨ cÅö»ñ|L©2i'Û÷ضg]yÊ…”õ8™Ëœ¬Ò=zös;3ß‹âŠ×ØnžhiéxHšóK"CÀ*º[´ß½FGl ¯ªâ†4g$ùi­-Î0okõ#Þ”!¿ 9MÛþ9Ûw%aÊ|ƒœ´ˆ†’‡ åUÌ ¾†!¯cpY»õÕ€²Í>¿¿MX-äP¸vv·em`|ÀëÇü|Jô•ØÓ˜²^&ç„*;œ?q,”Ûw¯]cûïÀp)U´ îãœvº“!CF”&J:ò»Š Ù°<Y5¾v˜O,•W¿Rø'²õÄùpÅßgs37îörÖóëHÕ¶^Ü{NË“˜~>1÷îë>ø€"nãüþCšð3éÆôŒïý§?û=O) àuG þ¼pÄ Ö1á>3ì�“†ñtFGÇ#“Bçr6 í^›Óµ=žÔð@QGszÆù?¼ÿ€>ÿòKùÜÜʨ˓H¬ÌèðÉêò$Én–P¯cÃPø‰Rž¼m]2õ,ÄfEº¤;1Hy�r ƒàÜ„ÿš%c1Mr‹¹ˆš %/ã X,ñ¢(²©/æsMÇO‡ôìÞ>õf<¹(M'œ¿T´P‚­#ãé±öâ©LmÔ!„Ý„BÛé€KëŽ]lBuf££Ÿ6²ê¤f‡!*­ÊEŠdw‚r“–,5õ©GšÐpÿ˜ªÛ7y"E—€1| ¹fHYÎ’Ï\´†o¼ƒI&øÜ®˜˜b’Ùr®y[N)FÔOM¨·J%62&M<IÂGÏ!<ÌŸ ·Á”'“<R¼€©†T@Æ1µ5Ç\¨ÂŸª´³œ ûOh2óäšû%:Jž`ÇlôÉ:Û”!-¼H4&cñÆ(ÁžãzëqylÜèsÙcî—ê€9?xh”Öð€ÊŽ`ˆŽM{MfGôˆï­Ãã}ñ�1ž4g%þœlÕZŠ–'‹XX…A’ËððZ<VÑYˆ?¦k^ôÎÒ5ñíB¸$ñ祈8ôq|5ê`¯ ÎË×(5VôGôGBüqÉxÖ°ƒ1#ŒìX¨@ZxÜ>yòXÆWø Ã=ž¿ûÝïÄ@ÿ!º±†`<;aPýñ,ïœçHaˆÇùq>¤u†ýïÿûB®|ôè‘”énß¾-ï<„8øè£$?¨é!=òǸV¼Im~08/»VÀ©B¼ÞPzýÈ‹½ø‡ ‹zPö‰?˜o_ÿà=*"ã qôü™,VQl£tÄBÚäyØÁÑ~üÄ‹œOhÄóÊœ¡6wxžÈix~Y%(ÀVpÄóÏ¿·û=þö·âÑO±!TVÂÁ­]6K¼Þ§öÜ1ù'û; à-ƒs Áý Ò#ë9âì/><W¾ÀUéD͆m@%[ŠDi¤&sUŒœor.š±=r‚ðî9‚‘8CÂ|S.rv>½hõpd�ãXá•}�øcq÷$•Ú'£¸Ÿ7!¾š3Ô$%E+É>Ž(„¼ŒBz±0h[w\Í,l±f!ÂäsšCýÚ–[±½ ÏI¨Ÿ ( ÿäùsÊA¬áçä³gû¼m.v^´¿FxÂ}A¹sNfÔ•ÝBœA%üYÁÛ¢P/ס"qÞ„-Û„¨ƒHލc ˜ _á’EÆé1Ï€zK§Á"·ŠJ¹Øƒ]/¹n„LRñÇû’ÕvØ“ $>Þ¦Nrúlïîw٢ة¤>Š öjcÏ3ͦ%t•ÂËk6á÷NÆõÔ£4éPªSNëH$ŸÒJ9¢JL­RÏ}æ<Oc{a[8ê%ë’f[{%(æó¾Q4e{bOÔúuþŒ:œk··I½®¦^Tñû;v1ä2Îh:Ó”ë]ìéPÄÙçsó»u:Ÿ°-”?ÂPÎöÔãÞŒfiÏØ¤u‡K;5d® ê:9ßWè<‰ùh«Šã:•ó€mxP&I½ÝOcÞ—ÚÆ¥ÓVDH¬­Ü¦«$ìÛœf÷ q7‘ˆPè×\×Ŭ |67yÅF> aÊÊYi”r¸O‹íÚª º$á÷Ê™qúݶ÷bdï!7�°Eå'w¥ úð8$Â:FI?„#t„%ŽÒô(U« iï·µ„Z Ô„EU­$dž±±SjsÎ?Ÿårx—û_Ìè”°î!ý¹°ÏDZ€ʇœF'åQJSN[Dõ™¡Ó¥;ï¿OÑ>•>û²yÞÙf xˆ?mØÉ_*“©TÔwàý0fC¶Ás“.„à ©j÷š„IÚlȤ䌈Æâ‘‡8Õíd’6ŽºBüi¼RÜé› (¯p«–J 온¹Å'²i!õêòX™ÀÄôb<ŠÖÙZ§s“{�^+Qמî¸ÞÄ^;ê|fÃJ!}‡'Á×aaãPçUY{È�eÙH»6Ä¿c«ÔÍ!ñ³ù\˜d»ã}âþDÑÙˆ?æ8µÔkáÒЫ<˜„c2Wñ¤Úõãed¼²RžÄ¨¤/û¶·úµ1AÚ ª<–ÓÉsCnÓ€Ê3Ô˜ßFêUñIÏž†Åt Ã]žpfsž˜=}&´ïÌïL›ueò%¡¿f0X€ˆfÚ°?ؤ÷Þ{φԋh<šˆâN—Û(Ëh›¯7É—.t¾(˜k¶„.ÚoÃI3õ-YûÝ{Q f|^\@þ[æÊ#þ,+oX4xà¿¿ð\1ÀØ ¨³aqbggGÆzxw9ï\§¬ƒ}0Ô‹—4¿K‘ï²O?ý”~ùË_ Qç׿þµ¼£°ØƒtøÀÓòýx?#ƒc1.ºòAÆzxü‚x Æ'( Ò#O¼s±eC™“äR¬â€€€€€7xíì슲ÏgŸ}ÖlÇBW¢èñœO¯mSºµAƒ.=úöõoíQœòûªÜ¡›l·(?ÿ•G¼`Éó¯û[ÁóÈ›»7¨w³Ç •<?Þ翼 ÌsËls›r‹ú¼˜zýÍG¼x«eN&3þr‘¿NY)ã´S<uU‡î¨l`0¿x³ÑV˜ñçÌãAqÊã_|ñ…·Ì¿ûÝïÖ6™ÓòQópÜ…³*¦ $•­Â6B�VVågÄûÆÔ¡¡žÓa1¦ƒ9Û8Ùtt4«ø§/]ßë–âlDüádˆvwŠG¦H»¤ ÿEµýNìV©¶-¶V”ÅØ ˆ\@äÜW®½»kÈcgäƒq´Øû`'R%Ï(åÈÌõ4Άî9WÚò̹̰eâùŠIམsLèÙþsÊç…„Ó6IŒëÑÞÿ}úÞ÷¾G}ü1½÷} ï%!EE-®I=p<C(¨Äwàüél¨¢\oÉZu9«´âN !••Q:‰yž!¦,„òq˜HžÃÛ©©ÇFê2i$ÄY%ª0òñè>>­“¼ú úúw#š—4ïRmÐ΀óæùÓˆç0“bÄR©Ì|*‚ÚÍ)Fè¦íÁö÷¨G©îR§êâTM·êi$mTs¹Ž(šPªØ¶8? T”ÐAòئÍë¤Óòõæù”r>hŒzK`+ŸR'}H›ÜÝoÝJhvÑt@ý”¶w2Újúª;¥b8•:*Š„&GS!Ò¢ ¡Hž‚ &N·<‰Fe¦`÷‹@TB?€½™ÛROÄÞ©«®©Xé@Æ™P¹Î”Wæ£ì}!ÊñÊDˆ”UÌ1!í †EwBCÅ•„ûŠbs·)sÓZ¢‘!Ñ)K¤+ÑGS éâÏ|Èeg;m¥x}ctL^FÙ –ºŸäÂ"îÅ=äNŸºpý u\Šó§õÞ5Õ¼Ûñ;²&f!äicC%D.ès½¤æZÕŒãqˆzR£§nj òÆÚ*Ù¦n•É×ZZÔîáÔ,Æd(Ékµ'!ŠñœŸ(62B"éù)'¨Å8Òž L§î?ãöéo¿ø–ž©wãíÞ¸C½;”ƒ–Yƒ¸>•¨ð*ˆ?ï–ɾºMn°DL®´•ÕâüÀƒÈy.ƒ~lñÇM"SþÈâV7·ÌbЈ cóÑ¡LÀ Á¹á{ŠIf'¡Œœ˜Pa¢iÒÙlÎiµg31jEÇc• ƒy*Xæf˜[ÏoaòëfRV_?™ ¢òS¹‰¡§z1´O´WcÖ«=r¼½^JÝB` \…ì¬C å<¸§fÕ"S¾±™ Ù ]³&]$õ3`c¤²¤™„ó$¢ÛͨÛ3iç3‰[!þ”ÎãßLæQŸÝ.Œ ]ãùÙOŸ/¡ŒD&øy.!§H7až|âÒT=šjQK«i}%.Û«kOåjU5žüðÐ0ñ޵õXˆkÏ$•‚üÓ‘þÔçÅÊ´3‰t¡y‚§#ÛBª¾ñ±u€ØËð(ÁNÛIœóFqŽš<²ŽÄŒ†‡(ðHâ‰Ü”û"%?µD¹§ ¥Ø˜4f#À'èlT:< >øˆ¾÷Ýïðýï’©L‡©ãMêo³ñg¾4S¹_@j¥¢ºã½�R›GÌ«ÛÃ>7ÈýñÒ@EÉÍV=wÎ ß`!gXó¬OÏתg™›Î»ÕJ᱆+äÎyéçE@@@À+„¿€uÀÍ1�ÁFÝV üÛo¿­=ñl‡Ú”€Ê:̪ñú‰cw{° ;ø¼\x0G¡'Ãr.Û¡$2<¥q¾86ïGNraÂPŽÑhHo?ðÜáïçøâ`Qðx$ï‰tz&ü®èñ\)ø„T'ãwËm\¿NÜçÅ?M?ÿñûj‹ç†šçãå4£#ž‡mnô)ŸLyñ–U§ž§MHñÂhç{pFÀ"pê-ö:¿|ù¾‚�ð.cDŒïpßb¼ â‡#»`|(N~ VêÒ¶ƒó•êÉ9Eenæø°y‰½ eó=|Ì–Ì!ÛÝŽ§šÇ%–3ò÷™©1ƒ;ÕGX2!uÌ÷Hœ£T­ÐãœÔð½,K»ÍZºl¸°^m;Œ{¼4Jçäí×õ>gWtJ;.L¢)dóg]ëÖGÆßÜ®ýñHœBÝv3`/„³¨8¾qÝ ™ª2DŒï‚ØAÌ™Mfâ`�2½ÊÛ¥Ñ$Ãc%Š%YÚ©•>ë0hDµÍOêHê²qT±aŽ0XUY_èÿŸ½?]–äH²ƒA5_c½knX ¨*v³øu ‡2Ó#|†áÌSðÙøþ£ÿP†K“Ã¥›ÝÕ]ÝU@H ·»Ææ»U3¸÷f&€�LŽ¸á«¹™¹‡é±£G…Ÿ«"¬³Í —«\ÚâMB "Kwªü ˜ÞãÏ/¨. 1J»qÖTìuÙåì4½2—uÊ}.wØeÄui ?B eÆü⌌/®ª–òøwÇ¿OüÌØš1ß’²¤¢Ù„ÍSMë4Ïéää€Ú(§¨*hecL,㔆²±ì8a\y>ŠèÃGcºwz(ŠDy¦D3”/Íø÷m¤!–ë}Y)örWÊ`ÿ$˜jQ×P i¡äK[“)E-¾9¦«…DKB”A}7DÜuÛqHÔÌ%eO«R>r:l‹”(ärj?Øõ9Ú ï–XdDc¤‚Ã4×·dàTeªø4u þ�K1$½¢9kM–¡åþû‹M"Ý"c êVPÊÙ™¤è)÷üú÷�ip$JÄ®G>¹nkÛPÑ Ý-µOû¤’Ü:ý1M"sm¯,$*ò<Oƒ4g0й|<«ª…*•ÙëŽÁª%%#º÷Åõ²¢óÅš.“^c·)þá³äýkGIê=†ó'X°`o­âO°`Á~66̽·ípÈba¡LŠ~_ NÙáB­²né˜Éü„‘9›cZ¬ PÈyð™°ÃÓüpJ§Néþ#Õ6ç´¹ª„mŽ!â8é K 1/¢šÞ‹W"¯Z†®¿üŒŠøˆFùŒŽî Ñ%‚ÄhÜHÎmŸ K/’ë52G¥‘9œ[7·~0+÷G{+Û(œžÌôªÜþª^æ[u<|n]\£íwGyRÕ`…Abœ3ƒ*>95tÿ=$„uÒ’Êw*ÉÉ0ðõ“k³É”’}õÕ]^^ñ1‰ä’>9ÉÅA¶âT·"I¢ Te i¿m´äBŽG”æp:„ö#çMØáÉÅ‘FMæR{ùÀº _oMŸ}þ­—p¨¦D6êë%r£ÐHÍf¬¯ãÞõé·ÛõºÓ:{ëÍN“=bî§ÈÌ]Š8?ÐI…S¿&¨š6pª À¤,IËõft"3™Q™œòºv`§ÜÅáæÑÅ¢„Ÿ‡¨æ’4pŽÙi¬ØAªŒœgSwBä©D!ÒÉðß hñºœ6Ùˆr®ßÉÑ1WnÅeÂyºˆžŸ¿ —/T‚ÑEƒ`|SyÂ`Æ4‘~‚ë—kÁì’lñ”æ·ÍƒŒ¨Žù9a§Ý Ú§c‡sLy:a�šŸ—ƒ‡4É'”DÉ6rf¯¯Zs³®o]ãÑ*ãŽ1´“¢n°:´õNŸÑ$QQ­íÕ‘ˆöŸÃ—Ù6²Å“ärz@þ£+e¤€“—¿•…ã"½P×½:˜„âAB{Èå‚üæd ü¼¤°¯G8 ,X°·Óüä‚7j`ô(ï#‚AºAd.@A€Ýû¯ó©'‰dBëAöšR:àû}ùå—½¡¦0Ø*5ú¨oöûÜOä¢ çaûœõd\åñF~Bäe÷»Cn,X°`o±ÝíqKþ-øë¿þë›Ûø “Îg2ö¿~~Nÿ^ŒÆì o jø÷¢¬+þ­ú#5P‘àß„õÓÏiÄëºË Ot]Ëï‰Äد§T¯Ô•ì?óo¨UÎiÅ8HÖûF7=Úð;,ØíRÆtXvˆ'·Ø×}޶i]¿þó§dwÆ$«¥’Jx‚¾aÜXOÉ ÒŠÿ¾N&BôY.‘½¡«ª£eM.ò¶òËÿåï’ïõ)R™#cÛ4MvP/Ûz j’¾Êµ5E˜ÃÀ’X¿<fæ}`ž ?Ä*üvOüÁ˜cí>E˜Ö#9,Õp›ÛÇ×8Æçþ„∠¸>°]=úvQÌ&’¶EyGâÁ_|ö…(…þéŸþ)½÷Þû¢è†:A{ŒÇ‘�zÕrlë‰R RÅ‘*óqŠÛõ!Hƒ>âîxîAW8ZW´v÷ÝŒÈÞŠÿØ[€M¤–BÚâ(:Uâÿþ$Ë¢^ÀÒ¢Ý]íœ1ÙCÆdgŒ£‹¢ðÜ$§c¾ð§@ü9Û´tµ)Å/K,<çTn0Áõÿîé1Mœz|:9¤£‡©¦Tê+q}ç¥ü)JâŒ×iE‡ãDÈVÞ£9ãH?†@ŠøRUâáÿ}ðÁBüùìÉ ÚT6N¸®ñ›i È`(ÿàyQÖ—�âÖ´¢` `jÑ¥v—ɼC¬˜m'ê>(?òéE’žJ s2G¶·AQqGª/¢`ÿNÉn¨¿¹¹T^Ø,ª;HM—§JÆããòcÆÌ'©œ¿EÙDZ{U+r¾§*\µû´|,ø%8Y;‚3žº~·sǾ/FæN®Œñ„À;ªÈî-»ç—tîï!ò»"«ø=“k.¯é›~žxsã‚vdŽAÃü¼¢?=;[о¸¤«E!Ê»‡<óøz)Ï)Þ!Ü‘çÆ—)~‚ ö[ þ ìge·„HÓº\Å"«õƒM™TIc‰âèd€Èàê>cùlõZ3†íIši>fvnNîЃ‡èê«O¨•¼Éµ8eÓ(¥CÞ÷€Ý'ü~TT6­ê–¾¸8§«üŒÊ_ÖRp½¸iUn5Žúܶâ;u$ÔaUòœB—ò·ƒéyî^=SÖ`p/ .CyáW^_Aþñ ß€0¡ŒÿDVˆ; 9šuÔxšÕ4ži®ó8a癜mãœ[êåk±Œ³†Sr=¯(ß,…Ø3›¦¼T4Êqpº¹´<-eì茲ˆªª)5;r¦¼gn% BˆRHÖ–}Ù[ÔͶ“ð9ùxÈ„F…Ö_7îod;àjHTÏ@FîÛ Åa^^›ÞÝÞ~µ2Z§JÔµ/mHK ³’2ÚuÝËúŠƒ†4gÈ]ÅB»æí_>_³Óe€+e˜àzy±¢@/QÜùï„(œk ‰çvÁNb'þiesªýAš·9çg#›Îitp-+ŽÖt8ãö<#ZSÍNº€"\ß—Õ†?Í9>¤(;¢|O›¤’ÊÕsq°NÇ Ð¬ØÑJ„ä„´y–‰ù™›0801íTh#Ò×Úwê•äÚ¡Þì~Úý#‡Þ©^[ûlwãŒ_ø³ÝïqÔ”Òléå£uîJÍ% Mgzõ!XŸBУùÝ›þ˜Vó­iÎï—–1€ûÁ‚ûñÞ§x""ïC!Jò:€ñXðÎÄ6ÿ~Äß/3}†ŸxŸ*ØH½²Ï]6<·ßW¢‚Ýß~’ÈŸÏÛþ÷} “°Á‚ öã²Ãm†î$z øß,ú±±RµÕš/à Ô…þ®È˜¿D»ìL¥SeÅïb½YãD2aÙ:…‚îú‚.>­0ãMiýòßž`Á~Î6Tç…Ï Upøòˉ¢5?C~ÆyCŒrHXÙI)¾OàØûþMmÅnÿùб® 0!̱„5?öüz  o_Å--ÊŽ.y(úœ_×UC›Æ ˜FŠ»ÙmüU+F—ÆÔ#Ž€øÓy &⑞ÞámU 5R$}xy¬ÖëØþ¾üp±XĤˆ®fhñ¤Œ7¥ H~¯%ü¾K@l€Š‰ê«Üi[Í îêÜÅ€—@QmR%Ô`"Mÿ…¿‘¦‹à¶HÄ÷š8âWµ ÎRU õz%ÄL(òI¦W“O5p‚vÑÀFô¨{cÁ½á¼1i0WrÚ®S•èýÀÎý_”-qb{—[®“íëØüïRßïÈ’±û5…~SÑÕâšÒüœŽŽh4ªQÍ÷Ý$HM–06‹@ArÍá,£Ó ÿ=N4í]‚gŒ)ŽÆtx8c¼š—”Œ"zxÿˆ2`_|­ëó’&)Z9§{÷ïSÎ �5-[Æ3Æ# có—ü¬ÙLH-P’ Q¨÷ð5Z?¬ ?—úäö¸^GT4 Mg‡”Í tJ5÷½§ÏϹ–¦9cÎ9Ÿ‡÷±5· ? eÁ¿«›JR€i)á³­©¸,Ö·½^’ñ/ž׿¥7^‘Éõp!‘„ÂI]e4xWs‰¨ÖØÚPç[?äÀ´[í1ã¾q¦ =+æmñUQæQJK€£ãåþ›Ï¸%ªd‘ªª7PÒ1:O¥ŒMò\H„9¸‡_RŒ‰ÄŸD5¾•m¦k%pUîé½j½_ËïâÅ"èT&\<IªÛé›ýŸNÕ¨µZÏªŽ¤ I¶FM¹|hO ŒbÙ1(rjXÖ˜žøV€P¶Ü°ï~-ýçÉó+úì?“¡ùÁ\ëÕ’*~Nž§@ßÞúÞw“˜‚ ìm°@ü ,ØÏÞ¼SÓGˆÀIâA©¦že#³ó%å¤ëá´TkÝ„¹OßÐuªZrtxH=¢ÏÙ£ñÑ9;‡tÈHD?ŒÇ­.jqpÛen"å’ xr‘ÛÍÖœ±N¹”¿ÕûðÊÖ+e ž-ˆ YNoÄv¹ ·šW¡! ÁƒúËË ª?s‘OÈ_£ ¶Îèü“(Ó$ (S¿ävèÜ$Ë5ìîµòMíTˆ $Ô¬ùþk‰îO2øçܩʺ6O°ñ€Þ¸rµCÅ"‹|àG<è·n.¥Ä\ ÷pu}%‘ ÚîV27q¹f”f³Q€@R—™†SH¬‹+Zœÿ‘Ž !<¡œX/~3*7 èr½”ëø¸)iìR ¬m#òÎS>öäxBÙü”Ã!è̦s5Æ=Qäµa€ˆ<¡í–ç5µìláØ<ó~JxC4Ú÷8âsÍïÝ£ù¬àõµœGÔ›@�*5ï{>:z©BÍÝðîrQ¢`�P§Ïíîˆ?·I\{²êßG—y… |÷ïé#ÍVâÙG±´¶Ý9ß “ÉÁ‚û±›oJDh–õ‘´Þü;1X°`Á‚û1ZŸ‚zoØîé¢=U ™¸Ç¹›Ô5ƒm9Re_+±5�ÉÁ‚½Ü<qdQŽ` ˆÞBèpê'Àu|:ª×%ñì“‚¾]41ýízBg‹HÓ÷¡$Re𦥊±ÌÍoxR}Ýd´ä—É5ãw¥iELè%æEç-‘“ïGG‡2Ñ~yuÅT¥)¾0ᢨ‰(á)vÊ”Ö)ÖÈt>ð;'? ‘@ø‰ˆMrÁT[ÌêÓÔŸ‹ñ+¤"äÏ„¿dŒª5ÅÕ†ªå55섊§:Ê;LŒ–eç59 ì2Ô‡ëXÆÔ@Þº •Îᬨ‡Ö·á8Š*ƒÁÚ2 M¥ŒÀÁ8˜¢¾ãHH?PùâñcÇtzzJ‡\wPi‘{盉Aè4ŠëÔ ü|Zy-_äW(6È7u]éõ­ ÒÎàþìðcKíéï} ðÓ§lÔQg}b·Ã*‚RLÉ¿!ç‹k²ü#凌U¼Cßû2Qø£ñœ¦‰ŽsºwB4»óC9½ª…°ƒgÚñ}¬Ÿñ³“ÒÇLy”Ó‹Çç´i×t˜3.ÆÏ×üè@HgHM¹©èØÖ³_uü‹ ”/ýKS)Ÿ/×tµaLìù%]V Ë0nY[Åø¹|÷î¿'¾9Ÿ£¼âû(#æmi3æ¶7¢ªÞr¥4øäòQ±äíŽø§È%†Y~¦ÇÜ.…¤R“œR¢x¯µf;Æš+>GÉíYÖT9B.úC’%Òîq¤j?BÄj¬ô-<O)¦$M?ƒÅÍ ×­IRI£…¿wTɽзíIVƒÅŸLéãÄ}2âùôÈH:4OPB¡©¹Ì£Npwœ4±|š*¬æŒ=ûΑ€éw2ƒŒ˜>§|o¼jаrËŸÍš1ÞÊ¥?,:¹/™é‹o¥x‘¢ø¹‚Ú)Á¸Ùø˜†1l,QËÛÓŒPÉUn®„ŸÖøø|+¾öó³ }õäŒ>ÿüszv±¤«*æw—às~ÿñ^nSËØiÅï¿¿ žw”adÝ<Í~ ¼€“ ìí°à¯ ,˜˜%Ÿ YÒà$*Aë 0Ùf”&/ëàÌ!w3œ68ÇÞ”A$è¡Z“aÀ+cìöŒ»1;<cvü&pþ²š·×"Ó)Ò› Ø÷< m6’ Ñ/”@UÅ‘ubÕCýg¿tº`~ ±m•ÔvŽ�4ˆÖPoµ66oVžÒù.óØd²O×ï#ާÉkÉ^óˆz±júÈÉ;餜O”¥R²±¤ƒboâTœžš‘Mc14ß DtT‹ˆ!aþwìœÁ‘š¼âœ÷fSR¹X9×’Ñ|’ ¨Ñ”VU$ÑOCU¨»l˜jÿs_ñÇþޫΛõË÷gcq}-2ňRŒï¾ö`@-i¹ð½v5ä5®x¿’×mŠ5]^Ö4ÊŒ�/�$¬ëL㪠¼VçsÌÇ<`gí�}˜¨’ëmµt�°$Kédbhžå jM$åší4¿6œï¦u©¦:q¹4žNhŠ/‘ž®'À Ò­ÙIÂå±CWÒf½–ûAtÎx<¢É8g°l!À¢OM—‘#§Ò;§?5SòÎ6ê+>Oû´84¯:Ôçïº^Xe ·[žœµ{®ÝžjíO°bƒ ö³5ŸrË«þïˆ??%bã–¬ÞãÁ‚ öã0CÞ×Á‚ýhÍsà_ƒLà• ¨†uw"˜\ççç¯Toôv§Ú×··®Rølcè³…föè„  ¹âIuT?Œ7ñþ5쬒]4¸ dä0?ÅÒ@dÑ +‹e\J‘#þÀ€ÓAá‡|€¢}Œ¤%×T`(W2ì“|i‰z‘'·€„” ði™xã»à)µ”€Õ:Ì0w”`®¾‡Õé°K¡È8¢©TEY÷‹¼’J´U@ǽ�C€Ò#‘œ§Ó¬P.í‘¶•¥½¡?�ßž'çKbÁ’!é·±\_ƒ;¹£vþŒÖ‘Ôð -×BþQ¿†ú4QZgv´·è– Ée¾:¢A?CímC#˜Y!W­A¢9?£´áû¨M'Ô0æšD9cåÜ6IJÓÑTÉ›vA«BÓ,ÛŠ1¾M%‘% cFýÌ‚F³ï_1 ¢Î†º ªt|Œ‰¹î6ŒoÖt½Z1\ŒÏ¥Üo—ë%ŸwEMŒöW¢È†·]­6”§±¤«iM›%R”u’çtt<á¶e,•Û¤*ø™el´åkËk²#¾ ŸÓ+þiÅ*‘ÆÆ ì”�¡ûÀÞa•õŠ?èÓëCkEÕÇWÒ×W`üBâébáëJpVd(ˆ$þ˜¯“1æ7‚’–#í Ýñ|#@¹‰£ï¥Œ­Æ©ö_¹.<\–8…LTË{ÉôƒSùŠÚDˆR›Å†â‚ñr°D�Þ]³q÷cMåk+ãPåaÜß®¡ðÏ׬A|jd.ïEÛt7êJzú<ÞCPYê¸Ý­¾3~7p—Ò¹¾/( •Œ{wI¼ó^ôïc¼Ï žå1ÏÅUA_=¾¤Ï>FŸþ˜–\–øð¾¼sV«µ(CÍÉ2.ŠÀ…ÝúwÂO|,ØOÆñ'X°`Á`>_n¤ê/I>rN(¢0I‡úR!ç4,8g þdã1;#PÇÎÑ©ÙÁXÓ‚Š®açÄHàDóˆñ!ˆ@‰ÕÒÔg¦9;j 4u/©\œóus°Ž„-¯ Œ„†¯¯û´.²ƒ:uôÄù†s€ÈHs5 ¥WêPæ=¹4D–â¯WOûãÚ=§xHúé m£J ï)ê!zÝØr½v™:ÿ¼mÉ·V¢áäó‰2övRãœ}—[xXˆÝŒÁvÀœÙ+àØ²Ó§`œ¢²ˆÙ)ÔÉreé Zq]m¸.Љ\KˆZ�€Y2å2Œ$…V¿ÍŽ$Re? W«žôäKgn’}†wt£ï$ùõdÅŽìâúŠ¥‚6¡¢B.h+Ê9µH jmuÜo$$Ž;¢ÈC]¶)]š;Žm>rB±Ü&S Æ­:¯3^§ÐNrj&üeÆŽ iQætÀõ‘¥cQìIù“»>m¸| §�ÐÀT)ä’æs¤PO�Q[Qa"DñÔÜ& ò0çľ¿Dm¬5-­#¬€“qL×ו›;y*À9…¤³v~ÚeœÝRy?B•¦A.ißÏ=™ç®2žÈÓÜò[�g¨d*˜—oîÉ?&8²Á‚ûišW?kÛÆ‘»Í÷NúñÌ]¹ý`Á‚ ö³6—Âæ»°]uá!aÀ¥¬¿EÁ‚}mÔxƒ? BÏW_}Eÿé?ý§>­—à1¢¨£RXÕŸ¢ox¾ÛÆ¥~Ým뿉a2$s<~x~IÑî&˱/ðϦ³ƒÀBUÔð)“Šj ±‡*FÛ`¤–ëÅ ÙÛApý®áïe‘Tç ò¨’t7À2Ì€ºâê¨/óö݆ãxy Ê?úÚ«¹ìk>WåÔÒG¹•TZ‘in©Sw:wn-W"$(9AµzÌX°à*¼Í¯÷ŠN(«(’8’¶{‚W[–{q˜I6ÒÖ.õ¢¨«$:u§D¨¸/˶Lñà=þŒž={Ö§ ö8·'‘ìÜ£Óíñm¤W¼¹ß~Ÿ³.ðð.Þƒïÿ ßKqÁØöAƒc¼ŒyWªžûj/ÿâ‹/¸¬gÚG„RJz+Ü×ähBGIùAŠ2mÂáRꄺ²j9M{ ãšÏùÞЧ/^Іë#gl8¤¨ô—kÙ/ÇZN¨/¹Î—ªö¾»X.úöõJÿh›çÏŸ÷Žk$êNŠÖ÷J<¼MBRÛ‚—îNzêÚ+~ùöQÜϺToq «í£i­¾ïåb!Á€³9ãÕü‰ù ¨¢Gc¤ãr}#J$} ç-ù~ l‘zîàèár>–ë ÂÐ÷� ø;Îuy%%<>8ÐZÞSeC£x"X/ÒÔáù<8Dß6JÀC¼2—KäžÁÄ©Åe-AŸmÁíU¨úRÍ×ij+ÁÔx–î2¯ú¾âkÚvŘ² Ê”ÆÉNÆ;ü+ÿ>ó9%³8ÖýP È=~ü˜>ÿü]\\Q:™ÓÃ(O%õßþâcj¸|x—oŠRÎ,X°`? ÄŸ`Á‚ýìM" \D‰wÚdENõǸœÔpbUúVƒƒõŽ& Cz¨]__ñ@ñ… Ó9†úšˆ¥€"šËøÛJäG„”`‡sj¦YTÖƒ0Q72Ž énÝ[]³]á£<äÓh„Ž:àûKäˆ0ˆzyÊ?ûå®4»"O Â×Ýäà„F\$ ;'c.×4‰ü+”“b!ãSã‘éƒ!›Z™ûâXÇP°‰Èó„DdHœ” ­y)6+ªØù“H#[Sa**êBÇuÍdq­iù<Óñˆ¨áÀhQKÛOò\H*2yݺòPnSüùZæA"É)¾MR•µˆTiÅù É+=ù«˜Xú«ªšòg ‚‡B"¶j $ÒîXѺ<ì¼®$Â1±\§@TFÊ}sÓÈwé£p*c€ˆiÙqºtÑêdŠÜp×hžêHŠD"˜"‰ÎhÙéãLr'w]ÌN¹Fy§ ûN&#vîRQqNe‹-¥|íÉx"éôzÕŸ1ÑÇœa,š80ï¨|”«dô)¾¼ ÁBä¼,mÍdÔè6zɹľ`Á‚ûÙ,<ÉÛéû°á¤…DeÚngÝþ¹ïº&Ý¢¤f­Wœ|õ 5¼sƒ ìç`ßæeo_º¥íTõ3ñØE£ ¢ÆÄnüß9A^CûBª‘}yy#ë‘§aÝ:ç3ø`—aËË^‚û1›'x`²\&Ô‰úàš»H:/SôñÇÝ6îô>ÿ7!ÿ�»,kYU¥K¿5P¬!êUv|ú[Iqe4ØP“ï8•qOØéqžDΧ)u¶c^Q1†r´IL$UO$xYêpSIOÅÿò½q„k Âl‰Š¢„@IY:šòKç4±t”Í&D‡ãˆ³X”}üWò²d¬«t ÊG1“1Ž(„,‡7îT°ûŒT9D ¨ÂL¦SšÐt>sÄ #Ä,^ û&qJãјFŒm*i›JÝ |¼=Œ�ÜÇã?À{@bè:÷lQÖ®³?Â8¢M)ŠàOž<¹Aü¹AÚ¹ÑUÌàt#ȱßËÇØ—¿½{…•rCöúœRþ>I¹^ µQJkÓ¸UGç­–|Ÿ|ÿß»elÖ@•†ûâ ¤®ãfÔÒ¦)Dà}ùtIçÏWt}QÒº¬hU\qŸˆ¨¨Œ9ž]¬©eœ÷zY“d¦Ê4…XYÔ¢.ÓÕUŒç®J` |>ü (¿"¯ãÆYÖÒ´VÅ«¢Ë¨¤‘(âH}£r›à<¢jb–1[Ò.ãùPúi-”l* âí}=§‚ƒ ]QàaL¾ä{¯/üÇȧk9Ö=úCÎÇUŒeo ÁWÓ1÷3þ GZ4Q²e̶óï…¸æíÌcÈ3Ex¤ÖB´”ë'Ό„-c¸]ÙjºÏ”±ä¢¡ÕÕJâ…Güß ’’KR“™ZÔªUÍý·u®f\*ì( ßG"ã¶±Q•[r™;–¬g%R|ñw®kœñ¦˜°é¤4FyØ·¬œäÄËów™%e¶Vµ^~¶2~Æ Lwœ»|Ûôs.Í]Ll”Æï½õzC×—PÒ_p}–”NhÆÏöôøTpê˜1æ‡ï½O%ßÊŸ­ Ï5Î7œ‡¡`Á‚{;-‚ ö³7ã¤d}ô„8)NÃGãÀ4÷6j“î # ÓäøH‹ËËKzòô ;_µ‹dÐå9œ~é3gçsq“|BÙé)UÇÇrM8z kòF#8ÌVêÓz;À¼m°éV¼ TÐH“7e~ƒéóz†û½wÿÍuOêb’²#mºtL|ð.M'#ÄKæ³ÄS× ïr‰hmƒ;=ÇG¹¤ZsØ¥Hš>yrNÏŸ]¡ Ä컩7tQ\ÒÅõ¥´×ãâ3:Û<Nùéñ=:=Õè’ªÐÊúcn£º°|ìJ€’ïÕ¬¦nCÿDß(�‡^Û„Ôƒ#xϹ®õ‹ô°é‰>:H"L+ÑÒd4Ë‘Ú� G´ àt-›5Õ¤À±W¢ñÏKÆÀ HIˆÈôm’d=y§¶;aM…úô�H-ν^[Á¢TR|áXœ�ä¢%òiÄ‘O>`àE¢D~B3£ ¤!Ò�@CÞ;'§ÇtttD‡‡‡òý.ë™ùçejÃÉp„ö†`£ù Õs°`Á~^6Œ¶ÕI §�è&5üxð%gøZ¤éí¹ìŸ¨ÛÆ`Aq!X°`Á‚½i3?¤¸IõÁú6fü)ìÍ)aO}]¥Û`Á~ ¦øˆúëÀø|Êíý}üØt_ÑÇ'úí°»”€¾‰a }æ Æ¨ ä’:ü?}œ­}<þbôF9I»RMäÈ1‰#¾è{{¿(?öAP_‚4ò¼O†@0 #šä™*á€@€àÀÑHˆ?ëªìKޣʋšz£êê|½‡)ÑŸg–>˜XƇZ:˜4tYQ°qcÃå\tŒWu$¤†¬­+‹'ïÒ„Íèˆ?|oùx$„Ÿ#ÆÇĉ*ZOùߺØP‚@5—Þ+gÌw<šP«ê °;ObJô˜¤NÙ(êÛQ º•$’i…¤Áu­`¡Àκ.—u>}ñâ9}ùå—BüAÓ¾íô´o¯èã±ä~³’$ößÕ²¾¯ïÓ7÷0£áæ¶"Úœsõ•\ЧHû5¥«8§ëËFH,MýˆqÕ9c¬êŠ%™æŠáÉRʾYætùYK³UE'÷®,­ÿ¸¤ÕóãÀ†Û1¥%¯#¤¶"¨·sŸYh湪›á%ʤ<M· Z_cZ×=»â~1ЍLN¨ó¹6kj‹‘¥µ1]£ÞLLUtDÍx¾ ¨D'A°%RaµbÀfiDéGÒYAé^TöQg•ôwйoCUŠUò¡Î‘pŠ«’ʬ¦x–sYUU êý&vJVÜ‹k’<g؆cm;¬­iÃØ,úR<(m _¥\VÆbî'sKŸ{Ì8j¨+Q\äì‹©¾æí«5^4B¼Ãµ£†1ã5c΋Fy–ÕRú¯i¸ÿó-ƒÄ·Ac ö;ª¸ÜhGîÛ�<âå9å÷ÒÓ|.y†[!õ@¡�2 F�+I†ŸO®¥•ª$ÚÎw ek~þ/Ï®èiÎÏY»¤×%î¹™Õ4‚ºØœä}‚`ÕRðñÎ÷ès-dF«$gW•âØUY£É\ªBêûx.óÇ”Ïætïè–Ü/rÌl8 5wts cà&X°`o‰âO°`Á‚ÑnDƒ8WvÕ"Û]…Nµ.-´Dän±?Xí "ÖKZž_ÑêâšÚMA1JtÎÆ<xÌSzxrL>¤wîaß³?Ny >j¨jŸQ}ŃÏê˜hvLÝxF•k¹{su¼;U’kF± d%ÍWg{ÐçÓæqö÷ƒTN¶Ez ½·v¼1l¥ojû—ì��T!UíéØ9hsvbç\¶9ƒ�ì<dðN#:|gL“I. „EĄռÃ(—Cøþ&±]poH5e"]ФñjÙ)—+vFtœÎ$‡7lQnhtuNôü)môøŒ Ò^IèzsAÙâJˆ>Ù(çz*¸ÎjZ¬2vFÝÔPOõz·v—eýúýÇ;íep¨û¾#÷D®o’¹$HÊýë|\”Ù7[Œh�*™„|‰%ˆÄp?]že)1‡‡ •M¤?–6\Wé˜ûî„2^àØ±Lëu) Kp¶ä¸zÝ?;ó$kÒj4/#v´ÇãXÓPq}¶’^,’ÈA +R²WÔЈÛ]ÅaÊ·žÑŠ Øp$ì'\ÞåEnvò)åìõúª>½ƒúÚ ÷­M¤´¹. KüäÉWôôéSmžÊ:¯øm:›J¿|ôè=¸Ÿîñ‚÷È]6$뼊°c=òÖ`Á‚ýDm¨êƒÅã~½O£ø¦llÍŠ_7<X°`Á‚{•ÙIm ~ò¤‚>…Nø ì›OzÕ¤ šÍf²ñCâO÷…q¨*$×7È=ûÏã›&Œ Ÿ�Á]¤îd†È‡ívzHkX4Jt‘bý½oÓáì*]J* ¾HÊu%çñxDóÉH*›ICe<µÂO,*%À¸Jª-á¾Ú1HC)È; °¥Œ1¶ôëqC¿šF4Ÿ§4Ícšð¶é‘Ü0L´àólZ+D`¡cŠ›.VŒÊÐ.I¿‡†Ti‹ò<—`´Ã£C:88”2*Ñ ’ööi½4hmF³É\ԱѾ‚á:¬RU’õyåRu}àèÖ7±=&„ÅŸú Qô-Åž†„ÀF§?cýÆšÊñx<ùg¿†ª5·©IÿGÛG±S¸H¹![pyãVNÜÌgTÛTˆXÔ&Œç’ÆŒ7®Å‹wÈ1eÉXïeKË®¢ÂV”3ÞÙ^TBX©JÞÓp¿‘>áRËÒTqŸFÎGŒ¡ÇŒ ‘ªcŒ g—ŠâÏõªaô—Ûc2¥Ž±Æš;G 0µs@6Ÿ?â¶Œó‘J|» Ò‚ˆ?uÁ0ß6Bê*•„ûH­-¨¯»pÊúüToª5£­QÍ}™¯3f\/혓4zÝ`–þ2K‚ ÊLNOÿž+‰,Þð±KÃÅBT(÷› <<11.•>žÅ¹¨á;æ ÆnAKù=•Œ2žþn2)cÔ*ù(9Ä)­—¢ i¶êX$ämÁu1î›p+¦¼c¹ Ô JÚ ãÂ…’ÙL¦*W‘EÛGrPBµ©âÏ{U4©Õ p´Zðýµ+j£–ŸÃVÚ¥â¾ßð³w °þÚõ=»A42ãb}?®ëÆ)¬×Ü*åh­Œp-lCO_/hÍm]PÄÛ¨Õ¶!k=2X°`ÁÞJ ÄŸ`Á‚˜u8òÑÞâ"È6"‘px  Æxãrö"²¥Y/©¸¼ ÕÙ.©ãAtÄÇÀ9<>˜Ó{Oèï½K~ð!Î‰ŽÆe?øìê †/éââ‚6£ûdþ^wÊŽ@ÁçœÃ× TœÊX-ŸDÈ´Ê;[?uù|aH0ìL`—MÑ9ÇRnpP _ƒüóŠMÝ\T­ùR¼qÒâ‘¥"a‡)_Q:Í(‘<µÓ1™ƒ Ú¢BÑ|Ä…yà¡#Erúf“”rQ­1"ïÛ°ÃD‰'¤ækT|l•–|¾šŽîÓñá‘än¾Þð@þÅŒ)×Õ†vø6‘ʘÂù?[|ÂÀÿ ;í÷Ù \Ób¼àpÈØ‰´éÀ‘Ž](Юß,ŸpÔÍ^äËæ<í!ùd'd êü‹£¸kÅGíLï‡tù¦[¼DDià+:™f‰w-yÃõXÁùcg²åO¤E«Ð‚Å}Q(Ɉâñe£n‡9oÍ ¾ïõõŠ‹•œdY"g}-ÎW:B»©ú âs»”@Ú°’ËK{væ²ÜPÂþlÌÎcÎû3¾ÏcÈBg¯,màt2DAê•”<$á'Bþ‰÷êuh¯Žú¾É?x>ÑÇ?ýôSú¯ÿõ¿ÒãÇ_0póL�±Ñ(ß–ŒÛ Š?}ôýæ7¿¡CîÓi’ÞzNëÚ|ÒÝ�)Ñq êCÁ‚ öÓ4¼o½¼þp’B@ùïQÍoø>JjÁ‚ ì»°^9ÂzxÌà I>P€¾–ª]°`Á¶æ~ D r|ö{÷î ! <o (À€Ý- Qg¹ºº’uC御 ¹·7GÐÓ€,O0ñŸ²e'­Óî5‡©Ç|ù†cjOZ¦¤òémqÿ¨#ÔÉ|6£û÷NhÂx¶¯Ökzþâœ˕ԗ'EyBTÇ;¥¬=ze9=šTô`LŒÁ¦”1Ì•0~gÚFëžË•1Ž[Q«ä�(%¹¤«ÄŸžÓD[äÈ+fÛ©g>Ÿ‹ê4ð`(Á<éÇïs0? ã£Iù5g”a¹\îÀhÛÖÛ´]•¤ˆó}Ä"_~ñþ êêÐ_}õãGEy׺M]êeýh¨PzkOñ)“îÞEîJ,6Ê7¯úvC_G¡ðb¨ªz•ï¨é„<%íC›¶ÚRAà`ŒlÉÏJÃxçÈÝs•&ù‰©ö ^Z×€ØÇ+ŒwPGYD­¼A”/5”JŸâ> r–(êÕ­pÎ ·3ÔrâMÒK|%j1¥ƉÛÍ’ ñ5%½ŽEî9ÀœŠî›-9¦9™„¯ƒúãrCÁ‚ýg\_ܯÓÄм™S—2¾úΘ’¯o# ª­¢rO¥Ûî¨çH?FÝLr™C(¯+iÏ)?‹HO‡Ôhã݇‡BÈg‰«DŸjxÂ$Æ¥�ì$Z f.µ[BïœoÔÊóÞ§ t ðNïwkŸúÄEŸRÎ=J¶Ì{R£Ó,îßmîT%{®ó¢(å¾ 0ïÕ€WüîÙpŸÄ{™+,–:?pv&Ïä0]Ÿ¥0X ,ØÛkø,X°Ÿ…™—n3;y¬uP¸ûƒR8ï˜`¿ÿà=::¾/Ž$l"2NûùãÏèé§¿yÕ5Üs7ø„ó7LéôäTœCW7:ÈŒœ£¨º,$Õº]Rõâ´§[E“ ¹ç©Çðà�®-Qf "Ä7Ø÷!>Š/bG7ŠÕɘñ=õ ß±Y1ts=dW5ÕHM¨‹él$ª&™“½…üærµ”Á÷ÈÃ+íÁuùî»ïнÓSVÛ×+Ü g7"–@€ý°Z¯¤ÞHÅõ$ò¯±:¨ˆÈQ™bv ¸¾‘WŽC–¥Ðp)ݾV}½ù‰<ë"TêW•`š÷lÄ™ÑH%I ¼´»µ·;ûÑèA¨EN%ÊÂ�E�hÔ¶‘üË­+œä[†úRs!r§uÀ új–%}ÛhÑä 飒P·3ng+X­Ü¢ƒàÔ‰þhdŽM²È¥óÑP[U8ÊhSœóÇèzuÞ#Þ¿ýíoé÷¿ÿ=}þùç’â uŒú�°„wŽ— Ç; ÷Œýð,¿û�´EJX²{ Qû Ï’s˜àÈ ì§ií‘‹¸õ)¿ð›º?©ðæÌ~‡7Á‚ ,ØM»1Ƨᄾ®ßЧ`Á‚}K¦Uß'y×ùèC Ì?“Ö¾zìømˆãŠ}BÍ$;î ²;Ø¡âF¤j8.¥Ô0`jK˜”Ñ]/µ‡oòßcÆÝ‡ý]/Ö´\o4ðÒa™w©qFÖˆZøœñÍG3zïdDò5ÝKUÓI‘ñŸ‘*mI>H=f„ˆØÄ+íÝ6mãA5ÀÒ“»€Ï�S4¦PÌ ÷"«•O›Æ£±ÃƒêºîOß+³»ûÃ6#D¸fÛݪö3$Cþì³Ï„øƒ¿=aH XžÐé _‘¸·ÉG¶£Áß[ýš7(þ4ƒöòd&2k2Ë BÈÚˆë'ɸ®@<;æD%oµ± È%‰ëëÊŽÊE!çuwÆ;Æ…úÄÇ›l$ ü6BPl")º$-\œ ±KReYU¬QõîïQÎæ‚c¢›¤ÄCÉð»öÑœÛo2›ÑˆÛYÔÐ[q êjÆñ›Jða jÌGŒuÎEHÏÛÆõZÓHõªY¦WÓ’à<—/ ©»>w„œtÝHTw ê3mEi*M e‹e2w4*2å2b=î­qÿ˜5” ÅV•P‡²a·<ÁmËo~š¥Ú7 Šäˆy‘{æ%½ïeýÉá1–”ÚLˇŒ)PZ>wj÷5>7ž›r»Y¨÷”|Ì7¤ï=ê ^­Dª&„ÀzÌhTUIkiÛ·¬+#ž¥Ä=³RwƒÌ è{B^"¤V,Köا'ÿ ÿ£½Ë²ÂOQTXÛÀºçÏ_ð{"–¹Á^W ¢¼ù¹º¤åráÔêMÀJƒ öÖ[ þ ìgbfgr{Í"Ÿ±wRý€0¾Aü™L¦t|rBïðûÁÁ‰æZvR¬Þ1ûãÿHÿøþØYÍx ¼•zÓáÑ‘8‡Pc’B·PIJ NAâàuu¹¡M™ÑÕ8›‰_@è(yÐ bÊÁÁœÆ\¤ÄÙèêêZrM'.š¾rñz²…ÊW–xP§>cÇäèðˆ™wëÀ‡¦~’Œéugú€8»­? 9>ãûDôäJá|#¥Ór±¤¯¾üŠ>ûôôäË'R÷1F´;ZY’É5dàé[‹Ü'¢p¾kv‚/.Îe¿ªyÀ~p¬N6U¥™‡šJSŠeјòŒë9fG*‚ÌiìJíúÊk×Ù›®\«j>.ÂÂO^¶]íb¢Þ!âöNãAŠ·Áö¢µœªý@¢Aõü®a4µ\Û)¨2ì`'ê\Áy_­Ö. ª ýKAU’h§Q&Š?pªf)0#ªVÅFŽ™ñ?8eÅ…Âî�ÇA½˜¿ò,gìÈ#†ä¶õf­`‚'2ýˆ ÷èI<ÿù?ÿg‰Öòa*KþxD ‚8ÃvÈ9ã]òö½ÿþ.‰GÀ¬­dô@Ô6º=’П C°`Á‚ý”Ì¿çt¼deœ4Œªöëß4!ç6eŸ@ ,X°`ßµ Çÿ]·Uå K½©Äƒæ+X°ok=ÁÁÆ™ÀJ$X°T5ÅMâ>Õ—¤”:öýö—‘€¾µ+À„~’זּÃ?Ì6XÌö$v»óÏ!©2aß8ìH&õå}÷{™0î`4¥<&ë׫…¤nŸ1gDµº£ºåúªØö*ì·Ý{Ì×™ò¼ü=¾Ö/&)}4Kè!—âÄ@ºUlÿÕPÆe¡bÝ á"uï=”)Ã@"Ь’#Ì@Íc—šqÉ)$I e*ÁƒP júÚ[ð'<©k¨Jóø°¨µ£­îqãÞÑÃØV½ú¦ýjúô_CåM¨ü|òÉ'ôÅ_ȱCõROþq•HCvÏ.™Êï9Ü–ú¶öÄ®í¹<.j‰n${ Wd¯ž’©¸Í×JN©š?¢†ñVPeº*㳦ÜF‰ëï®<U$MQ•CB<¡ÁƒØ!ŸP"äôá˜ñ\à™ †¤‚åÚdÂ?všâKôÉdJùôz$D´¶ŽØù |}ÄýqÊm %ô 4\œQwù˜šõ¥¤‡"~nšÙ ¥£MOîS^0æ|ÉÏt¡çâ~lët·Î…ýÂm_Wš:ªæú­•Hb3ÞV’ôùzÕP?5í$=ô“&Ò™¤P8â¿W¨"ñÍ q(À÷ÍPZGî÷=RTwBzOG¬Éý¬áëçIêˆx±—o5–ñq[òù—¼4x?‹Td#MÏ%ãþŒ]scNCú%÷Ó¨â6Ü0¦ËeùNNÍýéÞª¦¢aš9¨Ê#ÅvGÜ–˜²Ï�ì›<Ï^"jD9¿/"GB0ÈwxF"('F¿:Güñ¤; º– †VË’–Ë+;ÜîëUA—Ÿ}A–—ÔŒÜîW…~Š OÊ`®EÓ¸9—Ýö|;\,X°`?°âO°`Á~F¦ƒm8ž³Ùœ²™äÛ†Ó…¡eÎÎÎe` ò ÷2”³H-4¥£ƒGtïä°–ÕFÎXµ m•0Å ŽÖ“Çi 義epóþcvÆRd"eÒª)¨àω½æúàFìØdÕŠ’bASv‚JÈ.Š+6ôðô”ê*‘ÿ˜™œ8ËpZÇ“†uØ#eÉ£|ã±éÓ=©iãœt ¢„ld·¤Ÿ7‚!xB†ÙuM?�V‡¦cOºIÜD;+svÔAöIsš±Cqœé(ÑÄÀ©hEÁˆxÀÝ,—4ãûtïžžŸïëéã/iÄÎÁÉÁ¡(á:p Ûº¤•0øK‰´Áµÿðû Oþði§ ;ÓGR'Ñ7ì8XÈ»æ”ØL2Ú©X=¤/>=äﭯ缎®v$)Þv+ QÎQtà@_do¸Ãv·º¾‘õ�„«oä.å‘(员ŽÙyŠ©BÎhHZñ;…\å‘{G_©LFN†h˜‘Eüµâ{‚ølÉõ_ AäÒÍñ kv’ì÷m¾–mÅy<::æún„p¥Š –Öņ°J¤p“ª£1;íø[¤qSD¯XPPÒXy^âéÀàØGâ°ìXuË•�3€iùykxAʽªÒš„Zœãà¥aåÞ¨è—k€}ßÎ@�5X†ZpN TB}‚øUÈSP¹hƒ>üðC!å9 ÖõR¼rw¾Í#³¹æÍO _pYƒ öS³]ésýéëñîݾ#5¢ÕƒêŒIvGŽô6Øwæ{Ã6OàÜ’}î&Tî§V¸]~?X°`Á‚»Ý^ö[ß0LˆùÉhI¡ãR±hú¡˜†‡#ÁoZ êÆüØb+‚ûÞÍ“<<ùÇ“}†ëTÁ{«.éÓÎ Ó7í ÷íM U)Zƒ÷IFºQ/CîÃnÉ?2ÜÀj"AU§i•ƒw†#ýøû5B�²BèFÕÈû§“TL(sª ”ͱÎyá ©¾ ø3±Pý1¼Xñû*ë*!XÒdðÅpÓ’¤OÂJë#à†ãîáEÜýnÓy•lr˜«ÝQí~ãëí œ¹c ˜¤Kr„io¾7à·þþ°÷òŽïK 4xÂWÎÆßÃ>âÏ“'OèòòrGíç%-¿§æ3¼ý­ŸsSñÇS¼<íaï¨ ñ‰º¾ÝwÔ¦‘c«\òwþí1µ(©4óûÔ ”h à|Û] «Ue¤áÝ£qý¦P·É•`–8Å*àähs¤m¶¸6jrŠWfx›j2©¨™jCSÆG¤§nzr›ª×0öŽŸU´oËu¾^0NÁóO©[Ÿë}ò9:¤/ã9ƒ!¾^2ž3ÆœËq†qP¤7“ôaÛ°W©ŸêæÀ—;Ñ\€ºQÕés&L(Úr¬²S|m¤Ój¤c{´æý®¯”ï‹÷‰¦ü9åý•6ÀsE•]ú},%i1GÀÏaâ„EUj6q+×C@s ]µM?hÑ(Âùêäùï<QÎ(¦l¤.ãgœÛ·K@¾kz¬\T¡°4$“Á·n#!Àµu«Ï×@‰vz 5¢Ä¿(êÉÌ[[Iki–¸ç£• nšbQßIxÀºZjú2ß=ñ¬]­¯©ì´|HܺñÏ3†l´óí<Ã÷f°`Á‚ýÀˆ?Á‚ûy˜“4IÙ‘�éè§§§2Y.€È£1O¢/¨n5ý“á¸Mé`vJ§'èèð¾wÊR6 vPWe%ä¨þ<{úŒÎŸ?g§u-©»"ƒ”Q<©„Ö’ë˜4UªáŒvMÁƒéVäHMqÁƒö Ê«µÓ®/)æíG“œòé“ù:˜-Z+Ìô|4agd$çëìV­H”}ÜÀ×;ƒâ`¶m¯ê¢öæ§öí-Ä Ûu­Qò �Rjð½ÌòÍø~ŽÆ:€\ªq‘äUJ£“:=>Ù:¼ìخٙ–úvH�*n“ó³’‹©¾�°¼xö=ùòs^¾  ;X3JÙW;к"D#h4†È†¶cª§y¾!qÈñ7\¤ò³œÐšvà½AþN˜ÔuµS7¯iªI¬:Äp #ïvG½ä)îg2Nh2IiÃŽÛzƒ4jðý\ý°©4«+E,òUJ«EÅ×J¾mÀ�þLÐh?�>ðúó4¡1Ÿ�G$c,Ñ5’ÏYº+�7X*J+€_Q¯B• %¢¤<rD—$ òN‹·)ÏcË�P50(|ÖÕµsÈºŽ¶wB¯ 4zÛ<1�@f†âH<^úΩÜûHÓ Ê6�:�R öòÏÓ§OEÈËK{ù^²7&‡`P¯ðã�+Á%ãͼù÷C°`Á‚ý¶Ÿæêï¿ÿ¾¼;¡Úˆß&¨§d‰q€w™€àw.@õ?þXÆ ŽcÞÝOb¬Æ?ÿó?—óbìåßéƒà]Àõòòb0qÐõ“,v0©àßÑo2•C°`Á‚ûyØ]¿øMyçÑCºÿàü ÕÐ|:þó¸µ[•ˆ¿ø‹¿ þÏÿoô_þË¡¿û»¿£Ê)Œ¾F (Ìzû¹›Wn’¹=©g¸æýpO"*ø•y÷̽} ?ï ûjC £:ŠÇÞ»Å:²ŒwÚ-y“R`±'Æ=á†íÀ0°®Ž»HSMWu~½äñôF¶_Eê<Þu‡Z/ŠAeaãEŒéD¿ÑtB½Òµ‚KU»£qÃÁ†Ué¸M;ÄM)ÔÜ á ¼þþ}=É~UAå%U¥¦ïÂ¥« àòAYeˆÇ`?©§êƒýªJ¯‡m¾nD„ÿ†¯<õ7T2Ýi§ÝV(h½&|C¹t+0½c¾ßÇ>Õ·¹'˜ÍûXQº :b\<í4Ý—;Ƹ>/7HehÔµÖ¢$ÂHÔ)6 “cÀ8¹í…' ~4 *T‚3Ð'@4‰5î¼vm²UIR¼Õv ~ñûW ~×DŒ3ƒ\d%5Tü¯¨-;Ù'Fú2¤vãOÁôŠ%%m*÷æ•ïwë•vRä°l¤Ü³“F)u ÷s#íLÇøjAõª”zÀ&#~¶j‘Ô¡dœRz8r Ü{X`«„²ŽõiÀÚmpK¤ÒNT¼—úŽûúR¬Ü_7J2#ÐâÛ7yõi®‡¢ñ$Ôk”à;I3æïªDBþÁ¹ø¾â1·Ï¦…ÿ«‹kIoöº†rú`I´µ¨ Q×+Â𬠬Ø/våÀvô?´­W©íûÞî}Lßî=,X°`?„âO°`Á~&¦чÒ?ý§ÿT&u0iƒÁï5OÔ`ÂüÂMÆøH89б?ø€~ý'®ä‘<£bUÐj½”è7ËÕt2&S2y6¸w–;‘¿D^æT&ëONNÄ©N'4Oh̃îñf휮N"Z,ŸCœ9Sˆã–Î/ʼnÛŒÚ8ê#J,¢b•E:¦È9Eê¬ØÞéÜLQ‡IœÞ¡Óní0ˆ½yM ÌuºšÏdà®H±äV†š Ú@%„•ÐRÆã‘´§¦Àj%Q0‰÷‡?üA&õÐæhƒñ/þýæ7¿¡EÕÒYÓ¢¨¤í|Ú·Ûªê(pEÒs/2æ{5E\4yž³”²Z‚¶îØYëÄÉC]¢¯ͤ³œA“nEkî§Ò/Äô‘ƒ‰Gô“¨SG–H‰>ƒ(/M…ÂÎe®(ïH!%Õòº¤‚Pi?䑎ô8‰rC¤ÌÚ:°bÃN|ËÎkµ•9n¡œ ÒŸÎ?T¥é(Â`<¢°ð=Lˆ*.bwÄÉ_ý^Û=^£\x!ý&ŽwÏ­¡N°ÝHŠCqL8c’õŽIèm™·m{[ª™Ûl«ˆAÁ‚ ö“6¼‹ñÆ_BœLèÓO?•ß—?ýÓ?•ñ€A¿?öÓ®úõ¯-¿· ý·ÿößä÷Ûñ.ÆØãñãÇ2~ÁñP*yù4{ò;Iå,X°`Á~òö²ßü¾ŸÓ¿úý+ùúÝßý½ø½òRà "Ù'ã½óè]úÿ«ÿOÒ%ô×õW2‘·o7 >¬%¢m*˜Ðì0¯Ör›í¯÷„oÿ·'â ¿íeê߬ ´Å‡:«`Ý0—‘x3üö„}ž­ÃÅ4ðÊ:µt+ª!^¡&q¸ý<qF—F𠪞 ®É/Z1.·X1N„t:8‡W´Axß.Se[—|uh*-ÚŽ^¬kz:²mp¼×2“ªj ”¯¡ZÍÕ~ÁPËsÆÌ®[MM”FXì œi[=[LuHúñþ€¤’¿5HÀ«ðxbR>-Œñn¶é܆õ�âHÀ0¡b LxÍX9"¦*(5Œ£Uýõ  ´^­ód\z¥¤ŸÍ¦z÷¡´m™Ãò*E7ûÑNã·À€¬WüApß@Õjßzbßk´\ð¾#M½†tUHÙ…àVàbÀÓmç<ÆX¥*UÀ�A ƒ"Tw(S'Óª’Œ(ü e˜‘EÙ'‰,6rë;½iQûG*(´cš 0N¾—j³¢juEõjÁËŠºÍ5qc Cá&ø¤¦kQ%¯ë%%õŒÏvÌXéˆÛu«ŒciÆx•,öUí ÊíqS ÒR¸®m…LÒ Ôm:| Y ÷ÊÏ׆ûײe-yäj^—´Ú–\7ñ˜ïc¬ä)u/ X¤$(éCýˆZOlÍ}–J(�uò,J:4u"«?/íªÝ*Ùö)ßT‘ õ¨¯+Ä¢vcEQ§‹¹“YMR€íÜ$©»O-|$ãÔOµ©y©äØÛ±UCûåÐwŒ›qŠbÛy‘Ö6ê{Ïî¸åklÖ˜¨4»€—Ž—Ïnlë®gz ¢—ô}ÍÿxÏÁ‚{k,‚ ö³0?ö:8˜ ù2 ‰¬Øq„ÏÙŹ8Q’Ï7Öh”X"SR:>9¤û÷eà¿Z_Óâú’V•h¡rÂŽ$já¤5¢<¢’±:ÐÖ‰Rft0ÉyÉh:Q^Ž)%uhZ‰ú ªKÃçá…››¸ ‘æ\®8+©MGšf ò›i'opuÞ¶*.žpä»í^49F÷"õiKßRŸ3÷û4»ó+J5H×5gé€'ÒÆ£\�¶1”,8>¦{§§âô«»¤©Ì þb­ª£XçTm¸ÞÎ_¼ /¿|LŸüñªE!¦¢÷ÞyW"A(Y×}q¶ 'ÏÏéÙó†®GDÓI+Ñ8H[…ô^ì–ï@P 1½S¼Oöx‰¢—{qS»or\EßTeÌ0n­)eGù`Î}m6åû™HÄ":² ;ú·8%âå%3)œâ"NŒ r1B‚#Š¢õéÀ¬ˆî&H3—f4ŸN)GWµÐdPÑÁyª%œÓÆtR÷ˆ¬²kÈ£¬`€¤j$¿zÁå³ÛDT—àüu¢¥Iä—H;»h|¦‰GiÖ²ÓH¢â¥NžÙúg/©á¯o «Íq›Sz3Îd»|;×!½L)€¼ƒœì­¦èêTš–Ñ ('øÀíWl@@\Idžu�@Ož|Eï¼óˆ¾‰ms¨ÓVæ8x­Á‚û‰šŸ(áøwÞ¡ø‡¿Aй¼¼"�éçÏŸ÷ >&)�öã r6 û`L5 ¼‹½‚È>ØqíHÝÃHêmT)íDV?o+o°`Á‚ v›í§ª¼Íæó¹üÞOÀopov@PÁï~÷;Qûù›¿ùýM QÁ‚½qÛ'ýÄ^䕟7­þ(cÒº•IÿÎ9ܰÇ/2!}ìÓ< ‰¾RyÀÂcj†²”1)«ê8ás©­ªªò 2תMÂØQ,ª#ž¬¼ÒšÁ8xo<Œc/Q$ž¼o¯JQ7IG ­ÆãU!S´¢ƒ1<ÑÙ†èÓÂÐu«J!s°îGŒë¶m¯ú³[A´CüÙ'ýè8#Š<~;¶ùq¿'øøÔ¿žàïë¾e¼§® 5ì͆2Æ1Ç\o¸¼oÑ&(;ˆEkÆ~P÷¹º–÷3H? •|-\Ã+Ê8>‡güøÛ¸±xs‚/»$NÚ%¤íUÉ ë‰hî÷CŸçƹxŸîâŒnÙá¡8šÉœñ[«D›$®N°ËÖµOÓ2^o‘ªk,¤ #‘M7Vâf¥K¤„"E«ÄÁÍäóÄ‚¿ÇÅ%¤¿jŸŒø:9ÿ6FŒ/Š2Óê‚ڳϨåO!ï@ÚÊ6ÛŠ°5BRÈg¯e³ºbœî𾇄ç�¢¶¤¦Xóõ7\P"îÊme‘ª‹ñQ¬C–®\I+”q{Gµ¤Ø’ù§0?ìG7üNXñ_ Þ R†hµvà¡PKŸUBŠÂ‚ôYÍ’ûæÂJ .>¹àÁ’>MxINíÞj;Ù1/ƒC!+‘É‚¤àk,­Œ48ÞöOvωäÂ*P+ŠJQÆ/š?qÏP¬ût©*Ḛë½Y·";IûDƒÑÈ€Ic‰öñI(ìU|„¼ˆzœ�?-ËI9U T°ä¦Žx!ÞÞr[9,ºSò×ðy1NùiHÿñUçžÛÿ£4,X°·Îñ'X°`?3.mM]WôùŸÓùÅ…J´JþèZFj’o<èSuž)!ÿðùÅcÆ®ÙÑBJÌÎÁÑᑌ�¯àtñ$<Fì–DDI&þ1²%ìèb™ŒR:Ft0¶”Å%Þ;‘?­:Ÿ/wŠa;ÕÍ’×±“³3ÊŽGJ*oŠýJ¤7‚Ì+;75mv3<#]œsçô '‘¼‡ÖZÍËKpš0�wõkÔ!™›h¿݃v{žÎa’àÜOØ9;ŽS:ä:œ‚µëMß„hˆ¨'OlÖ¾M%òN3";ÀæIâúšžñ¿xF‹õ5}ñÕç´©Ö4›éáƒSnײót2ŸÒ£qDŸtK²§–6÷!‘{Íì¸5÷ù··@[iÖÈ*4ºÍ„„:íü­¹Âm·½ÊvÜû²c4ªB‰i;));ú‰: +ñ½ñ=~üÁ{¨¼Ñò$³Ç›ñ^cd¶ N—uÒ¬Üçîʃ—t‰D>Ç®§˜Ë‚FÊ#¥Z²©i6Ó½tD¶X‰âU·`Ç|¾d_uÃÏ�;ðÕ‚ îXëÎ¥ cÀb±.¨9/¶RË zwÊ}2“ Œð쵕d"œáºîÄéÇšù„ñhD+8Êq+ŠBˆÈA” ¢e¤‚ í9‹Ô§ {­»ñ1ø¼íh³F·µ8ÕNB›Q©úª„øƒ¾,QgpÐ Ù­zMÒž!Z‡ßËբµ—y„wÚF"Ķe0·‘†Ÿ;·È>Á‚û™ÆH•xpp d¼_5—Fc#Š—_×qÖ²W…„üIÈKëòÉ'òÆ'&V±/þÖ÷~ÝŸ÷ëyBš¯`Á‚ ö*{ÕoHªÿñ?þGzÙçÿïÿ­¾Q ý öÚ«Hßûi»ï:æk_*åÀêf'X°W÷ñL’ ÜS~v…°'ø…­…œ‘†È5G™€¡aìÛTͧ¥îËëo¯·j4ÐÑ0êÝî–w¯üUCñçê'‹‚2gŒøúeL³ŠCQŸ 䜳¢¡/7–‚Ü fD³QK!<Ý$ÅxLu_ñǧÜÂý/—+II¦ÿ’ò R§Ñ %'!ȸ}û½ø–à¥þ‡íÉF¨OŸžŸXªA­!éóFº¯ŠÂm8ÐäcèîþuhgûK¯v *2+ÆbtÉX`Äx|ÂX{7šmÊžH¤¡J,j;”5• Ó®¯k»D0y¨É�VEt®»Ød#ø¢JÏÄJ*ƒz*°F%¬”–85ñ©ž— ²‹s²›‹­Œ ¢Õïx(*ÁØEE‡1ʦVœ5å~…sQöqi¼úZ“ôe­’ÒÚZ*P¾Åtá&‡o:B Ê rƒ«íº²½Tá·&ü›ÞÞº­SüA�&0UQü‰4ú—3•¾âOÛ âÝ �„dDÇ㺠 9Žœ¢Ò –í”8b’­ ¤ÄK„:1¶„ä}#êòÊÁŠÊçnŠVøTª:¸Å]‡üð]Ð+¿‹*¿>#^5åRu-UDB0«¨åË<O,¤´{]낲©@ ô´ƒkÕ~Ì-}ð†¦€£ ìm³@ü ,ØÏÃÜ QÏŸ?£'OžÐ_0o²ñXHHÛ “3M?¹þâì9Uì”bBh½)xœÏŽëxJ9=8Ašó÷± :Ûû÷yNèBHBåòš}+êB8ï鍨ßÅ ²ÔìŒÔBè1Ö $¡ÜM¨ûŸq>à¡, D­8Á T@ନà©Fåtê Ë Û9D½cgi‘F=ï;ïqfTQeàä¾öpµ"yMÛáG ¾°—‘Bñ©ØH{ª‚wõ-Eý(Û×Õàp£Ž)HS‘«O(eì(Ïç3º÷àž:�ð]2MG•ó2Îs:d2ë4÷òâÉcz<CôFÇûZŸ±¯Yí¹ýÃÊéÌ­7gÍU/­ÔWÓ§öˆ%¼³æ0~ÆÛÆEw¼à›œO'ôìÄ08Àý½f‡Îî(ë¨Ì´~ÐúP©ò‘<PÂðàHÚEÜ ñ¹N¸ÿžT¥.r Ü•|‹:Ó”§r…[?°Yr· ÷YÓ¨Ä3;–ŸKk’7›ö>G£T”‰ºV.D€Á©‰“­±rlëäâ¤nSÈæ¦†æP_ˆ[qøf<a;žŒ…`·­Ls³M^ÇìðÓì}~3ëeïÍV:Û«ùxlF4R'u Fy–»÷ÇXïOT°L/c«yªcé>•$¢·×ÜÚË�Âý4`ë,X°Ÿ¼´÷“šÞð>Ez¯á÷¡y€ÞÒÅÏ7üÜß·GZ_ÂÊO°`Á‚{]ÛOôm Š;ç¥`Á‚Ýfw×^÷Y¦èžË“ÎãAʤýÔzÃã¾É³L¢qŠ–ý5ˆút>û鯶8†.Ü3Ö ï ÜM¤e׺®L;EPeŠà¥ÕJ±(«)à‘x†'Á€„äUrü‹ç®{óqK­(|¬é¢Žè cQ†q×ÙŒqÞÔj lµªZºd|ﺴ¢ø#¸ ãZ%c«£¨Û –ÜÖP_ÏCÕàĸ?\\ƒ±JÙÛƒ¼ï  $»m6¬OUjW<uáÉ=HõÄ –ü5=v„¿‡¤=×K”u*ðo•wÖH`Œc­Ð€Ë»´MFT\HE)ß‘ÊIŽS%€“ȇ[Çz´µÒøÁõ ?Icé³8–¼á”ùQ „e!$Ÿ†Ûs–1P�Ðo±tC?PI;½Â¿|UE"1eÂô‹¨ðàš 'F™jþLBŽj¸½×´Ì—xœÉ½Çå‰ÐZH×µ¨RµkÆt7%uu§ïÏ“¡Áå‰dþ@|JGîC†à§u˸qܧ÷2¢ýÞ*ñïp¨_6MD ®×ðõ¹o—½r­u©¸4UÕ‚¢žø#ÕÐ*‰FSlAÞJ ©ÎÄüi„€DRÿJúiŠîÕD1CýLÎÃÑ$—gΧäöÏVìÓ¥ø4}F–:W^áëë¹ÛŽ:\ô`Á‚ý,‚ ö³2LÎüáP…gHtr|B‡‡’’ Ž¢áË…|^-74žÎd_¤XOÅÙ¹æ'D÷Þ?åçTœ³“ÄÒ);Ð~¶^Š‹sbP G7I ¢¹¡5k¼³æÀ^Ú·3ÂP÷Î8CÂ:hÍGv&Êd‡óWÕú))Ãxàl[Íï¼—ê ƒ~HmFŽ´2J­8Ý?„måz_1p6ýÿÈiÐD—àΣ'B¿ÿþû4:žÓ½Þg NɃ$ª !ñ¿)· ö}üùâ@ѽӌW !…ó÷nþ~o­¾‚Sˆ{ÔôfÛ¾àëOOOÙ9ÛPy�˜vAeCý¾UÓöÇ&&aL!Qã¡H>8×1×ϽfJÑz¥©M2KùIªDHàòñPôAª*D§$>Oæ#˜Ô ¯]Ä×hœÑÁü@È,xîŠ � •ÊÕH unôÙtyµPbž>T¢5çó'4¥…‚º8¼wOÚuÄÛÞVPZów=‘É/ÃðàÂýbñïŽÙ|Æï‰œÇ~°õˆ¶~ï½÷è÷¿ÿ=ý÷ÿþßwž÷¡½ JŒ ,X°7kún½›^ýª¨î`Á‚ ,X°`?{]÷>éÇ8<ñg?Å×~ ¦oGwél¢-@€"%6$üe„À8j…3‘3Þ9f@ ¹„øÃ“ê³¹¦ »æ ýoÛ0–„”^¶-É”Dm™0–©Ê@o"§äQ2Þ ÅŸ<¯£k@ÐqŠ@ªÖUõèF}mÆœx{ãJ— >¶ðù þZتâò¢±ô‚O½j•tÄfšÓY|%Ñ EOPž¦WàA¥¦Þ¦µj\à¦þÝ )Ä«ñ rÛ¦tñûh0f'çÅâÕE­Õëù”aS&òŸfëÞ—ì^à` jé%ºâwöŽí¯ã’ˆ”K ¶Çö &Ùªä€p‚ïýÉÈ"QWn¨Š¬(ä¤ÓÝŒ´£d3mDr§j I¯…àÁ8)ùõû¤PyêTýÜ@ɪ¹ÆkAgÛŸÚ†ñÈÕ‚O·á¾Êý•ñ5jJUšÙ¬É)ÙA”Šï”@äïq˜ŽÊ¶¢üÓ–(_!ψ?[_pkè—uÕ1.ª)ÄZƒ,[C®üìMU-¼[óuwþ ¥ŸK ýN L`í ˆ3ÒjŽÎ¸¾ŠNÊd*^ ®£6¡¨æ§–¯òQç±?½‚êÚXD²¼¿]™'¨<'±n¨’óYGüÑsãú 7;ôI§Š¯ùù¤Ê1ÿ ¢D‘ù:7/Á7Å· ¹¨u¡Xú É~¸; ëä9ÛnŸ+ ‘*KE¡ó8P`'IýW»gÎJ惖+­vïØÆÚÝ€h»UûqÂò´÷„}K†[š;Ö ,Ø7³@ü ,ØÏÆ0P„bœG/á˜å9Ý»ÿ€Ö¹ 2sðß ;¡W¼oÍß7ë•LÂÏæ‡ª &0ñ1°Dš¤|2¥ùÉ}:}¤ùžß™Zzp;9¡l2a°FhÄ|Þd -G —'k >IIT‡xô[6´ÙTT+ZÃ}vœ¾ØE’ÀIl­ÕÈ!³ •gÄG4°­ °U~“HF¸lµcºÓͱõwÔ[Ÿ^´ÓB‚uCÅõ5UÓ)U“­ÙAïê´ß.R¨Þ9‘ÈÍ¿ Æ~žh{@6¢ÈÓ<Mrz8;¢ Òy …œ×|ÌýÑœF=í¢ÞIe6?¤÷ÞÏéÿú³Š¿ó9³Œ'5}š¯%êµdç­}ÀŘo†vôx½ÝV—¯]·æ¥;c úÛGLÿ©çH=Wj„;0±Ñ\É’[¢’>s$ÛTÑŽ'²Gy@"eo,K¬8é¨ç8j(ÍbOS®›œF›N¢>ò r?$õàFÈSüÉm4{½¡I6V¹g¤ƒ?Çm‡KBâùÛ÷ôðÀµÒ‹¥T¤*ñ\”xÞ6Ò¶h“ÖÆ’k[T~ø>l§ Éh™Ö;rY´?¿Y–ó³¥Ï ÞùÞÍúÿí:hC�¯IßnëhKÜFû@­JIUÇz:}@|øœ ±É“ºwîë‘fæÙ³g½óD"õ2”~¥?3X°`ÁÞ˜Y»?…p·íOî ,X°`Á‚ûñÙ·Uo¼K èM™ì%g\a è$¶ñ‘3xxÒtÄøÐ|Lô`NôáÌÒaf]œZ+ Ë"­éœ±ÌÏê„ÎJÃ8fKeÝRµ"Á:´d]º$¤’´` €€c!‰ºy5›¦,+Iâ>­¯O‚‘…4E<À1‰_ñqOÜ&Ê%ä6XŒ\«„ÈL§ØhT-¹ŒîÄŠ¨wGNŸÓC-9ʨ pZ(ü ÅÒ³›R‚0‡ÞソD‘Áv˜D!¾Õt.Eͧk=‰‰úÀÍ›*K¾ýUí<rxš—Ùε…ë+Ý^ ˜ÝÆn»ÐV!Ê: Òããwy}6ù—¹& æ4Hñ–ênŒ÷Ùh")¸ôXÆx£™~Êþ^lÍÇt\ÜVe”q…eÔ%#2˜cK>mÃø Qr pGøåªðMÑÑ!_cDõj-ªúV:“¶‰pn„,ÄW%r±¢ž,EuEvqFf³”6$×!™‚;nU nW‰?*5䧺ßWÈV•‹Z¤[PuÝðm–”G­´Wd€ÙŸaô—˜ï'£¦LiUu´Y•]v4™·t|oL1@Ûú±¦þ"!òð%6T¤¿´ž¬Ç÷zÅÏŸæŒ'Š£#ŒA"äÎ ¼±áë´NqGïdKC°l¼JEµ§àçºñçÚyOûíûPÌ‘¶u2LåÉ1˜ˆå><+x`[ãHDFS€Å&—6+‹VHPZ¯=ånP]®œV•µ0¯ƒyŽéáX°Qy.¸Ÿá~‘qáÐáÎe¹ÑàÖHÕò¡üU–øúo+]û!<¼u NÚÜf;¿"¤&woÃgÀî—uïy©ü¼yÉ,X°`ßÎñ'X°`?K“®Üf£1Ýøˆ²|$iÀà`Þã‰t}ÀïØ±èØ);˜ä4NIÙe’|ÃEKJvÔEã9Ý{ït|zŸ>˜ÔôÎAJóÓSJáïð²kÖB@Êy 9a‡FŒ;® caƒ8ŠH^6´^WJºFöêX'öáL*w†–—½¾ÜÕ ´âXJ”TEÈ©x2‚„[;ˆPøƘνpÙw‰?åbA˳3*ÆcÚd ]ve©¾[qÔë¾Ü’ÞÊ0BX‰éÞä@R¯‘ä÷$š`L¸Ây`_ÃÑá¶‹óŒë%£h£ †É"qኀäòÁ/ø¸ñŠA+:=´t0]Óßþö·T}^R]ü?w‰?ÃÔ_>ªv7ïþëWÚÍc�”¤|öçFìàž]\Ðå5÷ŒÏ>c'n­;ð!QF8¬ˆlªjÍ¡G⸨Ú$a®¶6äÜÿ¦ãÄI³Û“I©5žÆ4š°“*RA × ÷ÓÄÐPrÙ¤\§üL”È·Í×%ÏtÊ}¹Ç._ÎÏÍ|:§ûôðèHû$ƒ ãQJë¦E&˜¾xqÍØÀˆ>|@i”s™:!1Áyam³®i:1üÌ"½^$Ž›D¼óõü«oa/ÜìÝÄ­Î@Ö=dým¥HP*'±­ _¸Æšïé×£_ÓGý‚=z$Ê>0¯ØäI<Øíçõ$²ÈŽøãU„ð$¡¯Eü ,X°Ÿ°³Åéö#§_ÿÛš×=>y‚ ,Øwi_'½Ð}¿bA°`?W³.Qìð tþxŸÖª¤6ÿÌÅÉvzhˆ£ŒKF1½;‰Èèý#¢_M+:ÉSƒR¸È6Þ¶)=­ø~7Œ»-;ºê6tÉXÓ¦ÚIAð?ž˜o½jSþ�.ñ'Œ_ ^ ‚Ó¶ŽÜâpÎ f‡#7áˆ?¼¾„úO¤)ˆ@tPLD•Dd>”ÅÛW¼®~Ö¹ûvË.”çVº�3%õ 5Wáˆ@[åfOÜáǧ,Ê4P麘Š"–î#þ칩Û^Ú›"—IR]¹þaåðà—œ—±ià?À†úþ4ùE9¯â¬þzÛ½ûýo^Ò”‹± ð"rLõÙ))Ajé˜(=d<}¢ÏBÇe­¯»,%¥–ÉÖÀ-ùÞAŠ<áDûŒ5ªŒdk(ßð=fc—aL’²F×[Å= ƒžFTg餖±6Lt›º ׌£VkŠ€—ñ±JAHgÕT¢¼/A³ þìqØ¡#I½¢‘¬kE¥ª<-ߟMkU,Ú#ýèþ 31BÛD®ÍøZ#;€¡QÄsyÊeS>U[ñ³QñóÂxv]8uðî@üE"îG1¯_ò3ÀÏRÂÏn›[Ê&üÌ •H58[OúÒy‘¾HŠ3#åÁ­^5"°ÔÖæFOØÒ{ãÔ FÛ÷ 骑æD!¨Ó罕ýõ9)HÓ…YIû…y‹ÝwáägÈ¥À«D)-#á• Á ÁØÜŽ^aXk]ÇòAP)šUR啵ŸÐ´ ¶vöW”w 9Âõ‹“ºQº—ÛOP³sÁ‚ ö&,‚ ö³0ãþgh;À•Gò"Š0¢ ƒÁtI%ò‘ÇÖ§àÂgåä\³Y)J%‘‹°@.éq¤Ê#ÉxD ; E<È?Š–4ÉyÐTEQÓG_x‡œB ®‘åˆ�áAjÍ.`ÓÈŽÄ3”!\œ?Ÿ7ÚéÎú{ó*"sh†1]Ûíàyv‡¹ò]Ûí¬"¬ršŒÇrOëÕŠ×Õ¢¼ë$mYÓG­xUÜOÂNB´®h“.Äaß\¯hùô‚Š«k!A^<T‚[Ù&ÜNó)=úàšŸ³s“Ó'¥õæ•åÇšÏFtÿÁ„–Ži¹:e§`MÏ¿Ji½¤¯oo´j•äñ»ßýŽþú¯ÿZÒÖ!ÖÁ‰‚#\l6¢R„á—WW’‚ëúzA«u!�$Ofôàô˜¾wä&O¸^FY"Î$q§“œfcºÿ>ÑÇWK*ÚFVc!ãôiÁÐcUŠÀ0¾}\ÿ°€ˆ ¤¬šd¹8ß*ÿj¹¬­%Ÿ¼%£8I…ŒV1ø‘æ Ùi¾x;èˈ®ê"ä˜ aM¾õ†ò•꾋H¸och´lÖÉ<KÊtB?߉Ke6$òtNÊxµ^ÑÙÙ™(ú`˜'þxÀ ï¤ËËKùĹО8×õõcAJ’0ì ,X0ÿþŒ"3ø;Ú‹¬½û·DÁÛ5*mîNÛKðöÛ=Ïn÷ë޶߸`Á‚ övØ>‰gÿûpÂ|ø{7ØÁeç¿3Á‚½)f,êᇇ‡‚Âà§#:”›áÇÿPÄŸWÙxÓ;§Súõý1=|xJf†Þ1ç4£l$YW‘|Ê-ðßÏW9-S%Ÿ¬ŒÛ”­Ü/ XQÍ/źž81&„ºò˜O•¥º"Ûw–O™.çÿˆz…OmSkº+]šqªF;tŒ[æÜ÷‰G­#Ø€@Ä[|eHâòøëP}Ä/lóYò±Êͦìý�ÄãTÉÛŸ–„sÇs ¥³].(@KCã<>üÖ¶äàA>…<SjÁâ¾½mëgoƒ2—õ¢žLgd¦Çåþ¡òS-ª‹¥ÖŸI•æHIvÀZ¶pcàóRtU| •® ¤½jŠR~$0”ñSœ«D�nÓÐc‹4èo·šÜÇËlgûöo´Q ¥¡¦¼õ—;tsêjlª†VŒm·£T{uÞñ½ ãåë–êÒÏSpßìâ^Ñ_TlšNƒ A:,¸ïmHˆ?r}HZY¡Ûô”#ÐI=ð±EÑQl í¦Ô³·Ü²¦`ëDwË~"Mµ²\?òØå¶>ßwÉÃ!ç¡/*ñǾ´ž-mçT€_C•ˆëw:JŸò }²—SÁGyAÚCj>È*pX6ÛÃtº•‡3 ,X°·Õ P°`Á~^6´Ež¬ƒÉòMÑ;Ÿø{y}¡)ÁÜ€ûbB=Z\S>߈* “p¸ ñ Õ 8f„‚ð “ù‘¥YiØÙȾÂü’~\”€"›ñ $Þq›ÐØNÈJ^ÚŒZ‘Õ¹ @ÅÙt,ÿκ¹‹JÙ¨ûëÆÊ«wµ0p¦~ ƒs€A:V”õNâ¢àxƒ$0Ô“¤ •”ð€}±XÐóÏÓ—¿ýG:{ö‚®./ùܱ8ã>ÍRÃ×:ºwBñAïô 2^b½NÑ<¦UýœûÄ:=‰˜yç±:ÏÕ‚V—ãoFüy“Æ÷‹~ø—ù—ôïÿý¿§O>ù”ÎÎÎeSFzk.ïÙ‹´`é‚ë�`Ò ¤î/qšK]¿ÿÁôçÿôOh:;rˆ*ù¾~r4£ƒùD"‘6/ÎèÓO?£e£Ñü-îÉ?¦O?¥)·âPë�tS‚<Ñ¥‚@pÖQ¶K~ÞpMDeL& U­‚&”'òLAHˆMV1´GmÅP –ïm´¤„Û_�¥·ÌÃ=~ùå—¢æƒg Ï3Þ;÷ù_r¸z˶@ŽCŸ�0-äùüóÏEñgë|Ú>âË¿—^p{ã¹Á{õñäÉùŽmؤ+,¨Ï`Á‚û¹ÛÀ¦G¼M^hºÎÞ þì¢w¥êzÕ¤ìëØ¡&ƒ ìÇgûïîÛÞå7&"Ãû>X°7bžØ8GGGò·柮ªiO"y $›˜±!ˆ[¸?‹è×÷‰~ó(æûˆé87tÐÆ”wªµ¤˜ïZ§bÄøÛi›ÒbÌccÞw]=¡R2ÆE÷ø¥*”Cá†'ÿã­ÚÇ>î¡ê1¶×ÙÐtWQÿ·?fŸäsÛº±¾Ë_eJ?C»¿ˆ‚LÛ+ë�kŒ£¨WæqAË­Ø2°°ÃÃ#ià‹ØìF°et`ÓAð‚Ü€ ¡oÌçŠ"¨k½Þh¹V’€UàÆŒï 'ù¾^¯½²IìÒk!øÏãuyBÑHp3!Z ˆÎ쪸ìþ±ß?¶Ÿ·†6ˆº X8#Ý#fü)9&3>¢¥Éœ¢æšž )¥l½uÓA½Éˆ&Œq¸¶(° Ui„,ãÈ#%ã]›㜊]Bø¦чë'É®ƒŠþ’÷[ó1xÆ¢mkŸCÇu ãüb „€G(Ñpû Gôj?D7Ù!Ö;ZÅí‘~¬QûÈßõ‹®é­œ¢ °N.êzUIZ®,åúHOUX:jkçÃBAÜjÊ,ýï„L¦UÇŸP¸/Ý§à‡ª†E^¯ÇP;˜Àó!Í™Þk䜷º| q7¸o¤ÄR|*gPêWòTñLHª6§žImDBúÚOçóëÝbþÙS+Û¿',cÜí¦Æ,Œ¼¯$ +—’ßü<H,ÏŒ<·e%äŸÖEë²M§7|öo”fðžx…HV°`Á‚ýàˆ?Á‚ûÙ˜wvF£1•ˆÄpë[—6e§ N'äeh½B™ƒ×¥Èë”2”pRòg-Ê0ÐÖ¼>?£„Ï=ás·H¹S@;³b‡™ø–÷MØQ@ú(d6YÓdš©V<À]Šü¶  ¤“œf<®?eôî8§v‚üÙk*£œ6ì\—µVKv¦ËÖ9Û:ú%?4õÒvÛ^~g3tÓö]¶ïΊ˜ýUå+;9›åŠVì Òd¬ˆÈ»v2ÁÖ©<¬DÛÀ±áþ‹g/èìù úë«…Ô9" :ÈäF-eïžÒ»>â6M%ZfÃŽ4”™@„9ãzÿÿþÕÿî?ý‚>üåÇtt|D9·3E|ä4†CÄŽÉáá§Üf+š\ÒÉ –#úÃ?8ÞõÊ5÷´ßIMm½ZÚ‹A‡QA ó4ˆé\4ü¦8¥.J„ úK-²ÅÙ¯>œeôK®›ßüâýÙ‡'ü}"}Þ:§Ï÷“)÷½4i¹\0xpMU±a¢ £âõ%÷Á¼KiÌÇܯ!§Œ4s?c( ÖƒÈ`1÷ft0Ó”¿ ÷õ&rÒj]Òãë’ÎV…8]>*j:›Òáñ~žØé·µDütúˆ€ëD2ÎT€3 °N}Ôו¥[=0¯Yý»»F¥Ô;×€@ORpÕ•ÛЯ%W4—Ë“pæò>a ¤ #„*•^Îó ͦ3éûŸþÝ¿¯'Ç0ô)½„Èç€!¿€>½Ã ’¶ùˆ˜”p�A $yÕ3öxrUB‹)X°`Á~Šæ‰“ûé¡òÎÝëÞÕIÿ»5<ß~º†ádÃþúþŒƒëÞUÞÒñ'X°`ÁÞ~{¹R½uŸß»ðªìÙmÏü|=>|H¿øÅ/Ä?޽ï?x€¿ý0fÍ*égÔm»14ŸÌè—‡†þùqEÿlZQf7”1ž“ØJök£i5-;p¥MÓqkiÅXh·T$†¾bŒêº‰…ücy›TY£k¼J9c¬ØQ-XMd¢AŠr+ê!ª°áÂM´£Ì3|¿í«#ïn(Ÿ ïÆÈýw~!—îÇ*/È׬!öÄ|&™¨” 0³uªìª$ÂñdJ}ô}øá‡Ì…ãþøÇ?Ò³gÏ6óàá#!~|õÕW¢ú£øΡ¼gg¢úƒmG$iÄ6ŒÑ¡ÿ¼óÎ#îK‡Rà<PF…m8¨d"àDª:ÔÈõ¡8µZîF6=coÿYèÓÝÒ0Íh£o<RÜ9?&:ø%Ñü!uŒ2ÎXî ¹£ëƒ"}åÈ]J2º;þÙ>=ãšÜžo3´Û+f ˜ìŸ ø™á§­C¤‘ßvÕšºr–c–©P RRIž¬F>B<’�Ùšû6cs(“Ë‹å @}ð. dbˆzåý¾?ºJÊ’U¥~ëÔ¿u;B.c ¨cÜÖvFr ²üö`×d9ÓGŒ¡^Ó~Žbá,¡«)õÇ*)µ©ÆXä>;<OŠõt#A­#±ÙNˆ?äŽOQn™I#¯yûÆh°ñî=Ǫ–kù#FQƘèXÎcù=€¶F7Ü'?À‰Ïä÷7RãMâ\Sí÷<ÏÓ•{¼C)PŸ6>>’ô]Pòñ­>ëz ðæªjøY¨e 󤢽…Ï‚­vÿz² €h÷ï`Á‚{,‚ ö³2 v‘R«Fº Î:•H#30ðî<‹N;qìt¥˜ £>½VU—Ôð 5Íbª¡Ps}%ûÌÆ£~P)d€¦âAô†lÆ×w”±#ƒ^Y4¢˜0D´ÕZí|Å4‹„ŸŒR:žæôŸ¯N æ<IoØÉ¶™Dd4pøì„JÐ.†N+Ý&c+Öþw£Ò{ßåû$ÿÐ.¯Nn¹ZÓ†{ ŽŒAšˆjò±-Ñ9‰]üpAΔhu~IŸýþô¿ûGQF‘(šc^NNèÞé=:ºŸr®Ã”ϧÚ^^rûmèìËsú»/>¡Ã/¨I"ú€Ï Ðe<jØ9qŽ_{6ûœæŸÓ£w‰NOi½d¡°ì`I‹jÆ>";±ßÅϨÝA1n4 V¡!]Û6ê°J]FâÈv&¡ŠB,Pùi:#Žð4íèþÁˆ>~çýé‡èOß=¢ã¹Êü¶[FtS<H#J;Å÷µë *¸ÏìDIîqvªZvªÐNÈ‘Ü8‰DX=òÉ„Ÿn% Út<›Ò)ð¸ÿ_²£ú|ÑåeMWkúbQÒ³e)N17êÉ$¥ÉŒ—)ƒü½^_ñ³¦eë�"`1@ ½cG²‰³tøó²:¥oÝݽ2D!„2•¹ö‘h�o¨BZ¶Rˆ<÷îßë'•ÑOÑßãíw~~ÆçÙ¦‰L( Høà!]\^ÑìéÓ§)öî»ïö‘,Ðòòá ¹ñ7úʈm¢FfU>ûût`^iÉd>¶ÈcÛˆÈÏ5X°`?MÛ%ùZe Ó ì›Ž©OY ŠŽÔ“@‡i‡ä"ÿξM2ý.ùô·Å~hâQ°`Á‚ûæ6üÍÙÿýñ¿a°ð¦ìÍ|vì e7Ò§ƒès[j%` oS:n`oIWÓ„ñ“iJbzwZÒà ÊÊ…ŠŸ 1 $Æ62Æ;G]BFo*ÆsÆÀïŒ*{�û%—DI˜àWUg+ª4MܪZÒQÜ«ý?Ç©nî«ùHöˆ?·íÓßßÞ126ÄØ-ÁÇÐ •O¤¢„WqAUˆ*½ÂúÖ·€hϽ{÷§ÁqøÛ߃Žç5y¤FcÜ ë᜜ Æ–ç#Áw€iÂÿ�&<g¹L¿v„s‚؃þ5«j9®ÝŠÊöZþÆ>£QÞ§»«ßí`¶¾^ò±ƒÀI°^FQ2•ôcÑ샩¿ 3{H–¿×ÍŠluÅ8¸Ž@i+ÆÂÚJ¿§jÄø¥q>—¤µñV™UiYz=ÆÜízÁ;AÉ]I+Rÿ\¯Pg°’:Þ§«Kms9õV+ì—ÎáκXî£ —§ƒº>du¬SûéèíDßVRO õë]ÀêÍÒþ&KD½êO7ü6½úŒÞó@Ýïò(=(DVÈr.u]§¸ÿ­—yãÒ{9bé¼GŸæ UŽƒŠª{Ô+ëàù¼3ý–›Kðeå«N—$¿FËßÉ=¨º•%ëÈ?¯¹«ŽaŒs0·aJºS ¶ƒzS«×·BGq«Ï%Òœá]2L³Ã6í÷•Ñ–¥*þ(ñgêì&ߨÅ5Ãçà6¹«0ˆ ,Ø[fø,X°Ÿ•Á*¨³¢ðççá£wèôÞCYyÕˆGti¬N¸H°’F` ˆ(DäÄùX«ÑhJÇ'cà"&çmfÙÔ´Ø,x`ªò©ñi¿–4ŽU†2ênOᕉàÀ5Ù±LÚ–—f0ø§mŠ®Ûß}po»@ú´"Ÿ¥¢,ó·6Ÿ¸7¬ÏúïQ§Ä€'PEd(ÚNôÕâšâ'_‰Ô-œeq6ÙQ„SŽЫŒÖË•´-#ho´#öõ‘ûÞ¹QùS5´ÇÉÉ)/ñÌhú¬L”«b7©(ëÙSQ ß H ,¾€yÆÀÍ<§GîI¤�((!ù>S#‡tQ9³"Êõõ%ýã?þ#}öŸp=»t[V¤eWW tt*cœ²£•:¥œ€Özc´ˆGÚn^a±XÑ“'×tyyI—× Z4VT‰ä9³ ]7F@hƒÙ(¥Iªù»±ÄÃ?]ª�5"u"='žËÔä”ο¿IRô7DRù<îÚ.Ž8“Ü3œô@̃ä݃6Y­–ôüùsQÃy?~LŸ|ò‰ÔÀA�ƒˆûøãåÞЖ�{ÐÞ>ÕúãPÑç”û& åAßPò–„në¯,Š”-ådŸsyð\áºÀMó”‚ ì§dûÄMYé¤ðe `_ÊyÔ÷¬¾3ñÅ‚w¨FQÚ¢·»?Ã2ù}†ö¶nñ'X°`Á~¼vÛïËmöb#‚ æÌ+cì~,¦Ä¥9/ÀyèTÞ¾£U…*Üìâž0 äUÃÁÖXh¤ê™PV©»¶Ç‹@ÅhKÎŽ©÷‰óû)uo „|ÙºÁèúÁš¡šÇaý}Àð)ÚD‘È)TP¨q$_Fø _|ñE_~¨¥„„‚ûH"X 0 M?ê½ð)¸¦KÏ%Ás ”Y2Á4$†2/òeCаkÆÝà«àû ¤ß•‡q™²“ûD÷îSК﫸¾"suN¦¸Ò)¶Æ§Š¹s¿Jr2PõŽ:Åt)§ZHO]¯¼#í‡>ƒ€ÈhE%p/¨ñq¨Ï©Äšr×ÿ’CUQ^êÁK¾¸M¨·ãÅH´LÛc÷Y!®¯kÉî>þš^i‡b—zjx¸ÝéWÛg‡ÄUÑñÄ%§Ú*éëµ…¸&D#ãÔ˜œï RRŸ9eòÈ—ÌõW99ÝŽ²Ç„Ÿ,—èGÝc?+±}–Œo [è³ÂQÂ~q¢sÔ÷¿íü„?µ”ÏD·ûŽ%ÏŸQ!Mu¦ÄŸaŸÆé4í^Ý+œÃð¼ày�Ög ]Òœš—”&º{¼¤ÁÈ>hèû߃ ì›X þ ìgb**¬­ÐÉ…$Ä;ï¼C§÷É Ð;XI4íÁHõ!%W0ä#›ÍšRÞ¢4Ñx4¥; ‘ âNœultÈI[òþ+ÊZCcvšMfhÄ“L2¥îeel¬N08èp’Q›A¤£”:Zv¶}P¬Da¥ƒ ¦hzF[gÅ1ö©wºm¤†cõ#.˜ð0Qù¬¨cäšFdJr (G:NLïpK*.Þo>›Iº$DÕ›BUœ¬Æ9-ĘØ9¢ääP3>$nÀ†N—Ê–êÏdÌu=Ÿó ÚyIÓÊ4%êÊì�" ó@µçêúZœÜ›¤èätÎ>÷::>¡ÑxÂõdi¹©Dªxµ\ÓâÊÉKóù@ú9;{AŸÿþSúêóÇT_¯$구Zºì*†~¸n#î2Èèr» î/kjoUˆcTðqiª4W‹=}~.RÅ×ü -ùøÂâœÈý’“GÞ” ÍÆt2Inršò¸Úsv$‘ …oì¢eˆn¿¸iß& Ã= Æøh¬­òN$)ñ݃1s—sòÎpœA½¿xñ\Ò¨áâÏ“'OÄE[áIp�7â³-ùý÷“{¼Ì3Ê‚÷È:øÄþ¸.ÖcRß=ø4LCã #ŠI.ªÀ$ÎåIqòÃöó`Á‚û®Ìñ|Ô®Ÿ{n3ÿ;�Û?ÍΤ„âõ`îþäÂ0ÊØî¯{›,�›Á‚ öã·!1Õ“Uýd™FÎò©H‚ öíÌO8ûà(|ÂÏŽ!½zäÛdÀ]"(o$™,&F𥔣¸˜jogë‘®¨…r´UÍ”’÷]Û„|›Wµa“4õ<¹ñ¤ÃWUD•Bp>+ãk#ÄU×Ü’uü÷á;kH0Ú·}rÐþr›‰6‹SûQ‰!_![Ò&uŽ|ЉÿЊr¼W—îUFÖ¼eŸ Òj•ŒÝN)zÌX¶/j[^/{ÂR]_^ É¡X‚éÄ&ex(×g\·`Aוׯ‹º¾¸¦‹ÉåiÎXoMgçtñâ\‰Œ]¯Vkí‡\6\w{y~AuUoÓÝIvØjÖ˜ë}ú­Áñè')cé£cJæ÷(›0PÙ­ÎÉ.Ψ¹|B´xÊeá*ª;NYG| Å` ߯éFÇ2ºF[å¯öãÔYÐêŠlÉuQrEú¨|Jш±e€@ ‰Å ¡"ïŽ@hijG\áßDÞjæ-Ö5>5—'‚ ÿ¶4�ÙiG]|УÈkû¸>eÌà¿rZ¤‰Óý·¤×w}F‚þoKCnŠq%ƒŽHR¦ÿ7 à‰Âš`xÇøª~•ø¯)?_cþÌ”ˆåö$Ï$\͸/æ3 ß¹¢{²ùO²îö]/0Âò“úã†áëñýÇŒá§1㎭¼_Ú®¦$åkê´ª·ºFú:<S¶’oÜ}ôŠ?­¨ýt‘ú×Û2m Tê««¿.ï´-Òóµ ? ÆR¸SñüNçR‡u.µß€Œä®ºŸÆmÐíw×W9X°`o¡âO°`Á~Zv×|‰Œ²Á^±³Ã·“OHþdNà˜!º¢b§Š?Þ)Äd<œÍuÁÎĦ¤NúzIϾü‚ÖìDMî³#‰R8i2ÐÅ *(“ÃcvΦwbYÖ4³FÈI<bš'šHÕ9$çoK.ýˆ¼¯yÁƒ÷•8e3¦ÉzFË‹Kj_¼ öð#jç#«ҹd©W«iyƒc%/m™óÝú&ö{›_²w~a*4¿úÕÇ®ŒC¹U hEj”zBè³=:½G÷Ù™<g€NuÍN~Ø¢XÍ26T$[Bj*u ËÁá}ðáôÞûïÑáÁ!;@#É!½UNs]êßÝ¡,]ô@FúþI0â "y N`½3‰£[°ÃT\/ÄÉI¹p¯÷NOèÞ½Cš2bŸ- <Ã`DUÙ­>G¿:wŽ$ŸŸërÍ@D{¶ QÕ—Z‹b!÷\°ï½,¸nS+Îâ$Š%ŸxS”Tó3¶iAªé´Œi~XÒa¥ ÍÓECçk>–ׯê”6Ü/ ¨Pµ±S×…oBuSÁŽÙõjI‡ÜNXš¨“¾%vF§Œ'²ó˜ÓxÎN2æ6‡çõ‹±aÝ[üµoB�‚jÞ�`~ýë_ QÆ«êȤ/_¤yàh¦ìÍz2ŽO¯õ‚Ÿß³³sI¥†wŽ'Ÿ¡îý±>" ¤D€ öBWêº΃` ¢,؆<í¸ÖÈ»M Œ>òËGˆá:x xö§ú§rI¸/Ü‹HGsÝç㌂ ì§fÃÉO™x0I?¹ð²I˜Œïœt¾‘Ýd„'|úHZOFûîG�Ãü5ƒªN°`Á‚û®ME40�¿cøíòJ¡qôãS% ìÇb^ Ø«OÀ‡?ÿ¶‚«ÆV(ͱŒÙXbt”Êh,Û…``rè:²¶ŒY%Ë\1.÷ÂŽèiSÑ3Æ|žUŒM ×É�¤Ó ÇÈ+fh %k[MÖ*¹FÓ}mÓš•5‡“ûÃe8ÞÞMñÓî({­Oßå’GÉä¿'E^ÅEÉICâ ÆðßBØhDáÄ}<KîÜøþþæo$ØÊ“¾ F#™ŒI&+à³–äŒÚJJ5+õq}!Ø1}ðþûrüùgO¥ï�¯AdBO¾|*¸TÍïôóót&Ž­–÷tþì…SŸ!*Ê‚6‹•`fCdPgiŸÑ`ïb=ØÁZIŽ}@Íô”j¤ ºøŒºåY`åËK¢’?›¢?\s(y…%éadkÆÖ{m#Ck%ñ¯ì Dò :÷¶¤¸ÞðysþoN”1^Èu&ª?Ï-.©©[ÁÝ!¿o] 0# C6›M¸~¸‘òKH,² 1êÉ<UŸ;ëEvm] ®K×%rÓ®_qSó©›hË%².M—í¨’<Ù…ú:‹¥ÿº~Û_|Û<Ò‹¬Ðëx„ï¡Biš¹xQößOG©Î{Ø”ì’ç–¸NªJ8ާÄ+}}_ïi[¹zäÚÅæ4…H]?×EßÞã ã¨Ê nvA.rÐg}ŸØÖ%m =FÉ?t³}>¡àâ”­³ŽŸe„XÂ0t°àZP2’´dF4ƒÜü‰u³Jú‰öÈ?½&аÉo²â‚ ì­°@ü ,ØOÇÌ«6F<ÀœÒññ©È9Nf"‰ŠA'‘b»©Jvbu;§˜ƒ‰Ç&‘0Æy¿r³&“,DE¨cÇ d 8[HÙ3çBVÀHTÒ$™’f씌²„ÆìòAógNAãrßZ˜' ÅÝ5%íšéìô9µW+*ÏÎhýì);×3v¾%ß1GLZù<¾¬¶{Î/ÒVõ“Z?è¨ôædÊ4¸Î¦ROµäwÞ²ü•}ßIšÈK’:<˜S{ÿ¾ÎŽØ—h¨Än±S6aÇ®„CMÎ!g/¤è˜ÍgBz@Z¥ã£cqÄáØt]ÚOÚ‰¤i«ƒË•¥gÏì`§\Æ„~HJ?îM[͵ìƒ]€tèk5-VkÊÓ„¢<ë Ä6�¾|ò”Î/.$ʲ²..);¿àûm%ÚÊâÜè³È[^3àbÍîgÈA¼ÞrŸ¢¿òµ³ák,Û„®+K— ¨IÅtµÓ\K®7-­ù¸ªK¸]2nk(4u²”«Z~FKDŒavÚ6ì`[~€=% Òð¾óìÊàO–S>+±†wèâ);«9Ï>±ÇÞòý›øipBA AŸ@Ÿñ 9^5Š`xÉ ¹éã¤'Þø\ê’-MD± Ž:ÞA Þ�Ä>X  „thø�Òññ‰¤Äy�‚ðƒÈ1�>>ZÐ÷ j\ùÇû8?� ½t²[�Ò÷+ìãIBˆ$kÛC ,X°Ÿ’ 8øï@Œ°ïT¼‘nñOþäOè÷¿ÿ}OÐÄv#òo]ìÆCõŸÆÁ+ÿ I?CeÁ×Içu è‡RÞ ¤¤`Á‚ûñÞå(È]jhøð7ðÛvÛ{þ_þËIÿìŸý3úÿá?ЧŸ~Š6 ,ØëÙ_Œ‹Ç“xö¼UBÐ8`l{› $`1×Ë5óäüŸ¦kÓ1†Q¢0Q¤W6†Œ •U$ØÆ5^0æs¶éx±tÑr‡QnU|H1Uò¬¯¦bœúy"į¬ì?íÎ9Ì `Ïö˜×þ»ÌÕ=Avã}ç~ìà»â¦ÔŸ¿O´§ÈÒ8ÒO-4$¡Ü¿Ù–U.°½4ck1ƒÓÖ+ò߹ɉQ^9¶'ŒõZ®Ï)@1>ÁÅ“3ºfüw «QÁ¾‰9× ¾º®¸Ï­•Tt‹yÒ‚÷O<ïÆ“NzÍì’~ö³}|­§œ0NGùÙÑuÙ5–ñ¯ëçT_>¡Žq(*V Z®„xÓ×½t†!“Â1M¬b×¾éI-f¸¯Ó»â;/Q×ö©»,$m’L3Psí:G2JîAŠ1Òò”²Ùï¥!öýÖŒ½óö¦VÒѾâÖÎn ìÖ•Û×:Œ¿ëvê³ïCÚmuñj>v bÓ+þt7Scõ­âž¥ÛÜ5ã1tM3Àsü¬Ä-Ow0.žó2IitjxúH?À”[ÁÃ%[€(zùy%ýtÍnz²þy”iÛ×Rj[¶m_à(NšŠ¢ƒ¼|à™µ~6›Béw{š#Üxµ-Ó))Ëõ;i¡Îöé÷ðLnS¡œµ`çÀ8¡t¿^T”•ÎáØ™gøœûëº÷À­žðþ#,X°`o™âO°`Á~fÔñÂÏû|ÀƒEKãéDT40iuµ‡Ì;èÊ$<;êä"ºáœÃ ³ bŽ5I.d‡Æ , 8÷Dbò|•Ðe½dG®Òkç–Ø›eê´B•&5©ÊÚ6‚OO@í¦ÓɦÅuÉýKzþü\TCVæÝ‘€’Ò'êH¦NN>×RGìæ4vò–é‹ë…ÜÚùw·kj2¤÷Ò”DFˆhƒœ†¸=\/ € r%ŠZ±£†É;c:qv$½öSÞ†H¯¤‚sàœ¸FÌäqQ‡pÚ¯ݬžHý¾xÖÑÿüŸÿ‹þîo'’M臶!qÅ“>D¨ÖPŒÁPÅ‹ô—%×ï(¦iž¸þKÚ,Ô%îwÆ}ö­ŽÏÑ`ÃÎqâÎIZ±mÞv\¡Ö¤ÐqN‰(BÄPk„d%¤•\Óty•"”ËGmÁqÜ@ÞºÛªRa2e‡ŽÔ©ƒƒvq~A­©Ê:!ÚÌŽŽÙŸ´Ò_Ži<;¦˜Á¤ÕоP 9êeÁ’»<âúÎP‚Ïtª}DÁͳ d3}Ù†ýñÁz¨ø p?øŽº‚TÉ&“izybÏo~óéÇH%%"ŸâËO8c?Ô5ú<T€°ÖƒüƒvÄ;ïùóçR(Þqxn$Ÿ·‹�,X°Ÿ¢y�ïs¼CñÞüÝï~'ïH¼wå·ÿÅ QTƒ"Æ¿øÅ/ä÷m4Òß¼Ï?ÿ\öñ pܪ E}*EŸ†ñ.Íëk~(N þ ,ØOà,ú¯ÿõ¿_åßü›Óÿ^ÝöžG�~áoü»÷ïè¿ÿå_¾•©‰‚{ ãFøÕPdzäƒp<Vüoÿöoßü-1ÅB+Z6…–¾âGþ+[Ñ1Îç)3…Õ=ñgS0–·`\Ç ¸\Ö)]-K[t´\7²½ŽZ ¼´vw }HÞÁ'p Á7Ç#®§¸S{¬ Ë0…îP­sHü~úõwã{„–WLä›A¹ýy‡ÁWC2Äl¤ç¶7ˆ?¨ÆH²X)„`mcƒÚ'!E<Ry­KÁ6… ÃÇ•¼j²ÊRÓ]i{µWž7Î]@ÿ†ª • ËÕÀª€§K�ÚíWìû‡~§ž™d¹e"/‰ÓÿŽŒÅ×B½DŒ{B–¿ªdˆÊL§Ìîw)?§‡<W0Ï(c<º¸º¤§¨×ÕÝ`ÛÐëc(VëèÖ{öSÚ#–)áÇ ˆ?ú]ª¥Wôw)¾Œ¹ñ[nE¡k[|ŸR+IõyCôdC¨‰±àV×ë–ßU…¼¯ª ×Um£>ÅÇ…‡ ¶=éÎ?çÆh€ê¶dÉ“á”$剑 ÿ¬Wµ¤£ A”mwkEʼ�R}øã›#ÓoÓàØZHom›jÝÈsÕ9µŸ•,ÿ�ël$�UÕ}¬«+¯6lŸa¨¨Ö³ ¤Ÿ`Á‚ý(,‚ ö3±HòöžœÜ㉛©@>cž¨ŸŒÙ™J©mØyª05Â6oÊeåÝ9²v>m@Š’Ië…RÖÉI‚XùL¤a#’öV-r^hMcšAͤ'âDÉ` ò cšry)SU< UÑÙ“š ª–kZ˜sZÖOèøä„òÈåÝæ^—îŠO"F¶Q bwRÙï2û’ýÌKõ'ïOŸ}EãßBˆ˜Li2Q’iô¼q9©U¤³ŠcæSIõôñ‡¿ šë%ák‹!>f鼎èŠA‰+ÓÐ’ËY°ÿ0Šr:ÏéÃûèÇïÐÑÁ‘œŽ@’D4³sFâ<-®Szþd$ù¿úòš>ýä’^<G‰;#óº£}Cô¦½„È…šû(ú%¾KÊ9�Õ|ã’˸eŸõ¢¥Œûk–f¢6‰×<ÏøK?ȺFr9,#2†A‰ìàc¢$•H$Q=@ÿŽÔÁD>m’ˆ +¤²R<'ìŒe‘Æç¬ùy‚´*È/+”Û£Cžï9ž5zF6 öQ_P8ø|P*¡@ÔV¢Žu°XÓh¹¡ƒiI#>_ÇÛàÌŽÒ?‡i4ìz·õÌ»+—¾Ýùìsµ³ÃÒ œF�u½âO¥‘K£|$9Ø'Iú‚Õ|&àêÃGd¥Ü—BîA›TòN,€ & >ð3ð †í8H?ï¾óŽQ6_\ Ûñ<á|’¯›·¡Ÿx§“Ý�=@a $8L`㾄xhßlŸ ,X°·Å†`-ˆ‘ üü“òOäo¼g}¬ÿôÀ½¦E)ùýyѧH„a~ ðþÅ»6$jâwÿ›¿Ž Á[û¾“mø=,X°Ÿ„AáÊ¡ø]Bðz% ÚÕ†?�ßà¯þê¯èüÿ!N,ØëžŒ ñ Á÷cFoðéª??¬!u#‘Ž(‚÷€dš†É«ùmÜPÕ0–ÊËl°Ø8âÔ}®kZCå™ÿ½àƒ?_zº²tÅXæ’w«"‡ýEAÆp¤A&+QæV$‰z%JÜ$Dø‰ý¡êlH¬’ˆöÿöcð}Â`ÞH%Ýå ¨“ÿ4 4lƒß<ÑÀD[… çKº¯Æ©·ÛúÞCçØ^§„œÒª1nŒ|z\çg‡2Æä2Ø’M%ýWµ®¨^Ôð:Æ‹±_Åm³2U]IU]*ŽC»ê2;f0¢ÂŽú`úâ‘ÇÀüßf_ÔÆï3\ª²µ ®~Wªpï!ÉîžF°8s`gw÷“UzNÓéBœ­7Ô­¯¨‰o,W’F x&Iðb¤Ä,¦Œ§ŒÛç)å³ ™ÉŒL>RÞð8¨Â#UX§+½ž½åEòJQ®Ÿ(¬i’½;²[rJúÂõ êÉC[•àI!÷„n¶Ç6öûóÞŒÅvPsù'KCµV¼ØÐúEEÅÏ]\ñ'?ÓMÉõŠ<d^Яmí^ú1mãpSë<ñÇ(µFË¢ ÷[ ù”´^VB4ª$€º½µ®vÒü­ãžÛ=âOíH‚�Ü ž,ïãårE›¢Üu׿Ý΋ ´¾èvPÙ¸7íFã ,Ø[fø,X°µí¯ÌÛ ÒÿD)Þ{H±zv¾`ð 0êÏX¤zJxÀÑf±¡«‹gš/—q®R4‡SµˆjY‰$ål~Hóã{:á.„¿Ä2íê 5 WkBšâu:¦ErB#sDS[ÓQÝ c¬‡.Î…ÀÓòµl”ñ`5£ÅjÀ܂¾øòš.¾\?AÚ ‹sºZ't2ÑäøHÔ]ÀXGˆÏ…½½gœ3m\ÆZ­£Žz/ó.Ò}Ií ³wœ¸ÃI®n]bÔ‚Õì=|öŧtÝý^TGÞy÷úð£)Kçn_ÈÛFÞ³Öx:¡h6¢llè—DÙª"»)icÎé°Œx°?¡e;¦3vú^4kºäã—vÅNè”îOéWÇèãûïÒ}n»F”O iïфۄ#þ²ZÞ§/?Ñ?üÃ'ôÙg<Ñ÷bÌަE2]æÐ‹;îÇGxó^€*Šª‰ßœ'+#¤i‚ÒrÃy´­8N¹IßoªŠ*nƒ—;µêдŽ.<¨bî¼´ ð /ó1à±€ücÒHˆ?­ä çs¦è2p˜`¨›JúäŸó2ÄÜÇ)?_DçH%ÆuQl º*j*@Q3ì”!7³s>ÕÁÒ ‹P&äÖn5§ãï†A¤ ò”ŸOs~ÅŽùåù’.Ej–/hæ4›#Is/w»Ó7úçË*Ø9~{Ÿ> –¦{iäeÄ:ß& ýŒù™„Pš¥‚¿NNåo¼ôsÉ.Ô|f³¹œ§ª!ù€ˆsyy%ÎêýûèW¿ú•€à°brÛAì™L·J@~Áó0ÿý÷ßïSáúÃT^�qœOæ·yr‘Hl•‡`Á‚ýÄ ï¿?þ˜þþïÿ¾�éŒÉ|þáO¼GA˜D!ðŽ„,‰¿ñÎ×÷½@ýƒuª‘0Ÿò불L¿~¿l?¤Ývý@ ,X°¯!¨àßþÛûZûþ¯ÿõ¿è/ÿò/{5’ø%ÁEÁ‚Û5Œù|@ mü¸ÑÆ‹oJéçu}vÒîX˜ #ž¢âãvbœ&ëá’'uGÿ颦¿¯R:®è`šÓ,Ñ /ÔÎ/øþÖ›R&¯\û²èè¢d¬Š·7ˆ6K”ð#`  ÙI 0 4“rñuAºw)x<¶â˽¯0¢ê6:®Æ˜;‘ Ì›©À¼BÐð\ÃÔai† 7+°¥^Èl‰ø¯?¾YœÊ:¦þÁVu刃tTr+ªî^©h Z×ÀØbƲâ.’´^ ôŒLΘZNcÔcÄ# mÔûC9E!Ý*©dÏ•€Ô2®ÓöTª;: ïÐÁ½Ž¨±sÿÔ§ó˜¯5l×Ó_íõ±XÕ~@À°À¢v¬mÜ®v,a·Ÿ¾€Ž­2$¥îb«Ñvw«©¾²Ë¶Œ…3öžpÿi«u‹g’,Eð(cgPøi:ÁÛ“éŒòÃ9OïLhÅe]¯K[.3ž]ÆøÍtÌ\lRz¶‹”·ÇÙýod¤ý$’9H³‘íI|÷pÄ0à™®ÈîjzÒ€Œ#êIy…o»ô7ÚÃ’ªþ æœóIÒVÌT •µtþéšOùÞüFØ�ûL4ˆ¹‹45ZOJòå‰\™;êI{¸n¨¡Ó æK¢ÄiÖ5Ì}0®Œ´^PüY]C©²¡¦I#Ú©3OˆêŒí‰?fÆMˆ?BúÁ;$‘muU éó7ËåBFeQIF¹|à©ñ]ÓøVµ®M÷Šápf«Úwß`Á‚{ -‚ ö31jîWÍ#‹A}Y>“èí‹K¤Ð:WølóRSË$|4!<ˆªOžÇ‘æ½Æ þéBT;à@ŽÇ™ÄÈ9~&J(…HÊîÚhBQ>å·ï˜àÖÅHÊ, FRT½^ñ ´dGãrqÅåZJ4ÐÙŠ‹Fré™+[¨§\ó~+j¸¬åIûˆ\„õé$n y— OçsVð­G±Ã(Ó“1†§…Ó}}EEtÍm²Éüp&¤ ªLlú3a %H°¦HYÅõvüð!ûb½8;£’â“¡"[Ò¥I(*S²ULþ¹«æ‡”<8¤û~@¿ÿ=º÷€rn¯EYHŸØ‰àO’ÆS:œ?¤Gߥ뫔6« uÕ}¾þ\&�-E¯¾m{K5¼aSGÜH]AmŠU À (Í´Ò­œ:ædmÄ÷Œ4Ti» +Îi>S ÙS8æj$¡E� ØñK;+§87žMÑÅŸ¼_R—¼ÎÐl2ÅÉÌw ' Na€‡ÿîjnß1—=s²±ªª€óŒ¸m'ÓªÞU$A6â òs·©t}yZ.DDA¹G,ÌÝÍñ5kyïS•¿° -È7¾-ü„¯(0¹¨¼7ð^k¼“ɘ<F?é€xtß„÷Ó|~Àç>% ¼[ Èƒ3¸�D¼› ¥€\X‡sÅ.ž´ ¯÷ ?Ã÷Öã8œ"œòãxÖ@&Â߈Hô© ƒ ì§lxGþÍßüÍÎ:?YFh+Q²ãm«^ È“*ýï—O ¦öÉ3½<ú×°ï“€s“D,X°`Á~Œöu~;¼Ixï öõ ã>MËø7°aÚ)lƒ?îSíÛ¾jÍ0­Î·5?µ<(al!KtœÚòÌ}mAÒk/Ç) KÏÛˆæ¼m¾±4K,å‘ÞCU[Z®1FVchÍ·q^YZ5VÎ"@ r°#¤#– %ë„T$^0êËÔ:•Ÿwaš~¢æUÙïZÐÃaž‹%e¶µ»u3¯÷iÈ—íæ•âûàK·ÿP1t?Õ˜?wÄõj¸2"àÁü/6ÀÔø<’[ žŒhjRþd¬ÇFò))ÁB.]Ѳö‚Ö^ÞöòcöûU¯gBžä×öÄ!ciûoxóÄ(½gK ã”PÏÑzh…¸‰³ÝN÷ïådÏ*æ·5ÃVpC ܧÚ.ÖIŒË…ÚO˜oÆñèèD‚&«…¦$k@Y« Q¤I(Ï ¡FÎN™z^,Î/j?‘¤k‹ú¤xDw#’Ÿ··Ý·¿_³»¿‹l¾ nõ'­o-#ž÷4O(§¢ø#ÄijF1WOV´:ãúÛd|ÿ±KéE; <C%¬ÝOÿ¬ ØW‰?}ª/<[øDõ[}Ö»Nƒ#Aø)KŸyÙ{­&;UÂýȳÖN»%¶NíG”êy{U+ñx+æzd¨êz…s¯”äƒPÝöf³óÇ[†-,X°`o«âO°`Á~æÆi˜È¤õååš.¯VBô�ó{½YÉDŽä•ui0î”H’N#9$UN¦“÷pDcSPYŸ 1Ç`²ƒX 219¯Á-FúÉ(£ÉdÜ�ð/cç­²šŽ >EçÊx~± ?~ñ‚ÎίU¤‘`Ò5;1k»–}W˜œ‚ZQjz)\ïïƒú±uŠbþ’|×ßi*¤’Ö——2ÁV75=|ç!Mg3™L‹œcîïä“ù|®uÌ>DvïmZzøô);gJüY¤Rk%f™‘ý“<£ñ{÷èÁ¯>¤~ñ Q*x-6ÒÎÅbÉuù„ÛçžÜ§‡Ñáä¾$î®èÿÏ# TAŸªÎm>Â�úf–¥ÔÖXçÒÑÕ±|ïe‘¢‹n=NOOh6›Ð†ûTd¢(¡9×w Щaˆfdú¨4IwÒ"P+‘~<îbJÙ1‹œ"–äaw j£uݧšŠÙ'ž¢Š9-·ñˆK[l·RK$ä— j4Ŧ¿_uôº>ýž!´+$ëg‡'”MgJ£ïÎàX ¯ eŸ_þê—ôá‡öÏœÊÇ.µs]‚<ƒýчpO8îüc/ëè?Ô $Àñœ£n´}NE±ëQç^½ç½÷ÞÓ¾Zr&p œ ÇãüJ~ÚÊÝâÙÂþðÂñ¸ΉãAô‘úçó`îÑÀšî†‚ ,˜³!ÐÓ±Þ6uÀm€¥Ÿ$ÀùÒ·ý¨æ»¶ßõý»´0é,X°`? ïó`Á¾ƒÿÎ;ïÈ'üt ¤ic5ÀØüpŸ‚{hw‘®=¦2TÀù6Ï5Ƨ(Çh¤˜`Í8W[[Á@‡æ•‹*†×Tñd’–Áe ÔVÌh”ücí ¼ÀRmãÔF¢^§'æ`Œü’¼Ç*‡ãdÿ~ÛpŸÛÈ9#ÅâÇã}ÒþøúözêÇóf{n­xâϰNýö!Öz—Ÿ ”Ÿ¨WŽº°®·Ö´Tò?~&ÑDR|¡N‘žiœõZoøµn$žŸcöÊÿšnTñsÆ›¬Ñtó]ÕªB÷À|Ÿxé©]Àã sÄ1;ô³Då¦âÔ†l¡i·,‚#Óœl>¥ØpyàÍH=WÔÈ¿GÝÕ9•JÀu6ž[û¼Ü+í¸þa]Ÿ6Î÷‹Doß¼¬cíø“žhÓß‹õ*:¶oëò±ù”_;¢4·]ÇÒNP"‚ýf3ÍhP0v{ùäšË5mVâF)b ™êÎ=7¾’}qÍ^³lÓ˜õDÑ7ò©õ;EÛgåiÊõ[•(áþ5Í6Ýnƒ:éïugvñfœwHüA0iÁ˜2æM°l6_Óæ‚ôï!_ŸNƧ'™ýÇ+Œ¡‚ öã±@ü ,ØOÒö9ø2Ðå¢ê²¸â‰ù-K* (e,h½¼”\¯"x²Nää†WœA ¤(Î%ݯÐÖAxpÒò uüB %Q Ó“¾ç5x }Íg|Ñò`»BêšËUÑÕõJêË«½8/hµîø¼‘FQÄPJáï²´<vf'¦á2×Å£™Âál [wó;º;jº&êkê;˜@²[f¼ú Îk!J÷¹›±ºE^áLàƒõ²¥'_>£Éd&êIy’ ó¾s01òm#'òˆ’ƒ MÞ¹OknŸâÅšŠ2ãz™‘åsѺ‚Ãx>#:š’™äÏ's6:¤+¦(͸­fÜ”÷(JŽ©3SÊò J®è]³ <74Ÿ1xSÒoû ½x’Òfñ>÷—Œ¾oÛOéä^Ý�òÈ#�˜àdG&×ý¸OfSºrLöçFï½ûóŒ?þ\ˆLâŽr¿¥1Í' ã$|¼¡$c ¨M(AîkDg Š íÌÝ1Ï„Ü3ø{äš)£ ÝÒ’{8[ u€†¬æGÄWÊÏT‹ç"êÄàg.f'—“ öÄ9'ö£’°Q"©ð ¢6HͶº¢Ñæ’š å¼ÔÕ×AÎ;N•ˆg†Cœhødnûx½º'%ÿdYN3îO Dƒ:WGÕŠCéß^$%üi:-€êxnú¶|ðà‹DYöm §üÿú¿þÝ¿wOÎåÉX>ªMÓ]Êy°À9‡"ˆFØŽk >ÕŒ¤‡s$ ´ŰÏz£ê('¶)i)¢`Á‚ ¶5nñûäÓ '†“ ºïvbàUÄŸ}RÑ]Ûý>aò6X°`Á‚ ìí4øí^Mw¨À þ>Ærð¹á‡ûÔÜÃ1$ì®�½—'_e8#(H%#ÆwÆeî0¦ÁCP{ÞÔLÔýE] 4‚Ôƒd¼qȺ�$ ;Ä2>®yÿySÑ€ä¤÷ ¤@!Qޝ¨‘ÀŨ×#7žüàžtâƒ2¥<Fñ ÒÔc[Ef;]/øÑ@i¼siŠ<–ãidãýqB^,p&Æ7M%Ál½Ø‡_<¡Èm„ðÔj�§´× H>u–’:·Í¡°C‰6…XOíÀ*E' õ7€d$ˆ6]ѧüJlBc;æë7´¬VTv•`Åy}l××Жþ4ÔùÙ~··œow]ÔŠâ8•/²ýR 8횻ȆlÂ}‹¤qã£ùs›j¨¨bH{év¤sês0™½mè•‹ª0úhÅuŽÎÇÏY]ªÂ9ö,mDå@¶+,Œ-FŒ›Õ’¢ås¢Õ%Ÿ"&MÅOJSêu\gª?½é|‰U} ÏA‡g¾Œ«¡>Ú’qB‚j|+j8hÙŠÿvC…ÙPqyóf'XwG)Ê AD>']OÊzYï“¢8¥:QÉuÚÖŒ!%=CæƒÕZ¯ß¬T)ží’lú;Þ˵CþªÏ6Ýœ|³”Š_3ÑPgÚÏÅ0Ü¥\nÆð¼H´¢Ö4;·ÐòÁò¾âªXó³<e\¸ä÷̺5òú©¤Tü´¡”Ÿ…D³p¿Þ¶äÛY”,K^V Îeù™‹øv£^Mhئƒ© U%óåñ ²ë fPΗÛ]Ä/º•ÐÖ+H ,Ø·°@ü ,ØOʆŽÊph%œsv„6冮AüY\Њn¨óP»¡rsEuY(Ù‡š ì(ÆÈ�>ù@qÁŽŸJdL”ð~ìh–•ªj`€\ÕM/×›&±Lö§M+9káüEÙ˜òI1^oblG´ZúüË }ùå…Lä¯VÉ=Üv±0à…„‘·Ê`ÇÂÿ8…M!äãÉV¹õÛh�ÛGÔØ( Gü1>ýÖ7^Ý ÃÈh+#+”£˜¼D©±9ûVÙVmˆ¾úê™+Þ{÷=QQ[É\¨-µÀJ¢yNù;§ 00²)i]eì8̨Kꪤñ½#:8>¢%ïÛf|ÝqF6g§`¹¦Æ‚Ä’3^qÄíõ%Ù×áŒÛösÊâg4æbÝ¿D¿þå#.ˆb¿ãjŸQ¹zøƒ¼í •ºà>4Yè›èÃIœ©ÊïsrrDÿò#ú¿ÿ?þ‚~ùñG|¿–ò<£ßþöïÈ4kqJGÜ_“Ù„2îï"›äI)7\_*3QÇ}—Àé8§“ãCš3P”Ç:ÚJ ±ºZ(©e49 BÕ4\ ;»);kpþSÓr/àçŽË"žU'1)h…üsˆÔc–ëÄŸõŠûüâœF‹)ÍŠ E£”Ö�_¸œ4çQ†Ü×”J¶Ú‰eºøï¯Yçˆ*ɸï€L°J>Xpÿxv%×»SÐÁþ>•ögJaü®ðïOÊAD ”v ä£=zD¿úÕ¯èÞýû;í ˜â‘'yˆ;P ð7R†yâ~O56oDZ Bz52!þpJâ0L ,ØOÏöUun‹^¼ËTá­½Q¼þÛŽ»mÛ~ú†W•ÛŸëeåÓöM'—‚ ,Ø÷k¯ú=Gû=X°ïÞà[+ðÏ÷ÏÀçªùÂ7÷“ý^h¨à=ÿ}“± ŒaùsÅË%ig<A~q™_Έ>ˆ½B+†¼à#Œ£à܉ûd'|¥_á>•²Á÷ta­SjîZòº$‚éD[챓õmÚ­í$z¼C®P‚Öùã¡kãž”3œ%߯‰ó™!‰Êì3ÎÕÐåó’.6—}çàþ„>8Mê$›VS}Yw}L Lmú¶PgÌí%k@‚b\ÌôÕÙpý–û:.¢ £-„—XqÙ XÛZ”—ìõ±]#Á™=ñÇìÓyvé@¢‹b]z0Xë‰;½ŸS_“¹ú™Í…«ƒ–ÊŽ1Ķ–{KÓVm¤å¶Bn»=ØLàk©ó¸'…Q_¾4ˆ0ŽK Ðå~j †o‘h=½âŽÖ:‚y;⽦”D‡”Ø %eN-?ƒqù”’nMqå”Ï›šå:E›3–æØ7ÚÞ}(‚Õ–¸àKàÕ¢tÄØZÇóÕ¤Ÿ¥Ôo' <ƒ†.;Æþ ÏKŒ¯i3]îÜ»Wî*Iõd÷wߊ¯jnWg(jÁ8o])[j !‚–¯¸ÍÐFžœfÒHÈ|Jêq§xéûÅ×]-í+ÛàN`’PNÇ;nU/ic îí5U­ª¥_TÏ©Šªmð G´à~wÞš¶ ÓHž„5”œV¬3‚A‹ }2a\xÂs) ]ñû–±ã+þû²Ééº.iÙtˆ æÖˆiÍmT&ØìœÂ™Î¥H{¢½7T4žl%òÙ—<f{@ó+Èܹ60‚ öí,Ìè ìgaž5Gûââ‚Îx‚ýúêZ8ª¡˜"LÛêà´SG¾SäR;%éHˆ<~‚ÜÄ µ”MudÉì8áX'骜tåjµ–4](ì~J³â3*6kYqQÒÕU!e¬*„(¡“J¹1E' z.•ÌÄà“öíxC‘É4¢ÆG í[``;€lœÈÛdß›¤Ps‘OCÃ}�A*%¨ÚŒR%Þ ž…XqtLö!Q=;ºyŸ÷%·/ÚŠ=Az(™ù”2>Ö ¿8"š¸þ*)‰¯økv®f:™×™ƒy\ÀM>Ê5òä°!èãU<rý× À ¸.‘K’ÔÙh¤éꚪ¿' @r'S ç)ÂŽ‹Ð‚¡N$­÷³Iª±P»9<ˆé`ÆŽTl@¬»^r®%º Ç༵H¬‚KZ1”%I¶¤%˜¦ÑRE„Bœ\Ä¢i¿Õ~º•MF:¸s~†>ý´•¶‹R{ï}z?Íéô½÷¿3I&zcHƪÔõÓ§O{â } Û@ôñŠ?>å¶­V™¤ı¨g´¼òú;Ô—°à|úH@|Px7H ;þôiÎð‰¶ðÐh3‹ó¡¯âx,xoU <y‹T~å¬ÜûÇ _àx”5X°`Á~Ê6ü½ü:“  c['ù¾ý ³}$æv¿áøå&Ùç–3ïü=ŒlÞ‰j%zE ¥Ûn#D  ,X0OüÙÿÝS ĺôÁ‚û¶æÓ€'Ž�àñøñ~B_0™=åÈÛÔ|ì47jÛqáëòp4P–몥/ÎW‚ UŒ-˜b»SLßÂÜzÜQuhÙ¯ßS0z Ä…¡LtCë–.6– •¸,@;äŸÚ}KÚªz"8³S "ú:¶%qmR4duøý®ƒIó”ˆõêÝo3}響É0½×me¤þѶìsVˆûMiJ²kÆÈ Å“Z·Ü´v°˜AÀ¨¥›F, Ûr H-؈ÚwÛ0r”eÐ-÷é®&‘pòÒ-8W·âò¯¨1ŒÍ7c"Æ”[Æðlyɧâý;7U*’UÖ±ÝvÉc®r\ΈJN¬ß¬jÉõ d¨ÈÀ°¾d\úª¸¢ËçôÕèKQ0¦ˆóÄŸö5ú”ùm÷Ѹ÷JâÀ=vù]Ùpœëf…$JðbSPÁï¨Ymª =-¿’ºé%ªiÍõñb±¢Œç_²©¡*sï>Ðú" ¸Îó–ò²£ëM'Ä+Îί%³ÂjUH¦ÀÒP5“l|Új8¬uí³}SGÒëµ´§µ×]o¹{z9çæÁAÕ7X°`oÊñ'X°`?S¦9R!ŸŸÑÙÙ]cb]6,3p®`R»ì Dªmø¼¸˜D‡¢ ø‘[—ŠÚH;C§ÜÜ ÃÚÖO°ëä{ºú‚òå§´qŠUó¢‘>ˆ±JNáLvSKχCXñy6|OvRð€w¤5v—}îçŒö×K< ¢~âÏÞ`•ha謑hz‰n°ƒ}¬kɃw¨“€Ð’G©ìU¦ñlJIÙRÄuØM5Š ŠL;Bš( vWDÓ¥\¸d yUv𮮟r½žsýBⴔȑÀœ nóÑHu~Èñ¸—R5.ǸFSu¢ìã'" `qÒ¬™KáäSNÕ]Ý«ÈÀ}‚NUñRËÄ&üÝÆçM''’c´®‘~mêˆ?3v¼òÒèUÜÇWBb+ŠVTgÐFP!Úl iƒ$ÍyßTžO2é:Ÿ¿ÚåÅF òqs_–t_NFÙG‰ Þ[~–ðü>.ôøñcJO/hÄÜü÷¤?g’Sx@]¼ǵq„+¬™æÉ>è=Üÿå%)ù·++—´\’_›·ã^�‚„ãS¶ ¹g(ç†}¦ÓÉñG$mAtו´ohôJDžÜƒï؆{™Î‡°O°`Á‚ý\íe€›nÛþÊØÁ8eWýõ~‰¶ãÅ}‚¶àoWÚOýu¹{ïJôM-�Á‚ öã±× êñ)(aâ;Ê} þ ö& ¾ýW_}%¸ãP!>:üy<{ðùa7ðøãPÕöêqéë™'øÁ–« ýãÓõÄÐG㚎’7ýì[Gúù!°Æ×·MWÑÅó o,_’¢¬b©®Ê¼2SåÉVt×8üõ”×¶ûônQñ‘QìëuÒÿöÃk)³Ü~Qe77Ëv³¬¯VŒCjËý¹5w’,ÛY§bÓõ[tÅðš.åÝÎ} Œ(‡ . âŒ<k‘–£~Ü1 KAŧ!mÊÏâh4–¾*Ï!ãùQ¬~Y×§œSbÏ â…³¢œÞ1~ð:ƒkŠŸ¦»¶^H9öëËã‰__ÑïÎ~G«¬Ô`U·mø>x•}]â0HOüñjä;ÊBo؆ï1WÂðLU–ñ͈ñM»¦ëöšž7_Òº^ß8Þ™ºlçŒçGtíˆ?˜’I‘!ö©Ì 4õ QeYÓÕêèJ¢j$aBeÍsC‚„5Åš¯B~PÝŽ‚ÑÖ@ êȾåoµ`Á‚S ÄŸ`Á‚ýäMÝ'eÚ_/ÎèÙóÇTŠúH­¤ @IÑÈ “5UÓ;èÆI‹‚ˆP×%o[Sµ‰©� (Ë(ã‰wLž#¯0ta!Y;âJçû$I5õR¢A 2,Ø*®R>瘌”¯‰ÒŠhù€ècçHHXš¸£”‡¡ë®¤ZA 5ë+*HÚ¤ÖuFÈ$Î ’CÙHŽyÞAõ¥0yÓÃ×A$Æ ‹D‚UÚ œnÆþ­:|¹IèÞјNN(R!u~Û£*@nZSÒÆ’»·)ç|ÏGÔU-ž_ÓÅâ’ÎÏÎ¥mAüb ò]OÑÑ鑤g«Û3®Í¿¥.þÿ~AÓ£/éý_”4?~A6†$ì êIp”¯qK÷ƒ oúüÎ^ñßSEEIGd6*6eÇ7K3Qá $V‘Ÿ½wø¸î7÷ﲹךëé¸Zw“5úM °£¤‚»y g ²Õ‡ì0­èòùŠ)K«)ÂFÜÙY-4‡uÃmTs[Uh+qªj.k*Ï ¢«*´ ¢ZœS.dÄ^±ó–æ)ÅID1ê^úi'é§ò4vû©áùóJFßi»¸Ç �Ÿ|ª¯Ü¥XCœx,0” äu¾üòKi¯>úHöE¹=AmÎ…cqþgÏžI[z2~І¸W\N:ÚK}R9®urrÒ“¼p~¯�„óàçFy@ÎBŠ1‹óüƒk{ð?8´Á‚û)š }„õm©¾Þ²Ë.àþÒ=_²Ý˜oþFÄŸ`Á‚ûñÛmI;ï÷0ðì™Wüy™ÝFâŽA‡Ê”·M¿Žbe¨EjYOÔΈ¸ ö?¨mCçŒq]3üWpÅ,¬Duoè+kÖÑ?ì6¸’ö’riʳW”íÒ`=ùÅ3x\º®×!þ¸#¶Û^Õzâõb$zÙ=5›áºÁ¶m™<Iix2XÍ8ÒR±ì» Ñ_fÀE»Ý4>ðÆñýfã `ôd²DŽ”£)¾4ÃmÃùx}[q;w)ce9ÃŒ¼×V…à÷¶‹õ^;þRmë )ÃúöÁ>­*¦·%?DM²S>ê®È4åÛB.wQžÑïíßÓe|±Cüi¿†zÔNõ¿Â€Áf©b±Ro€Ç¶? é·å¾^G møß’û #ùTÕÇœá}*—%cÄ…¡ëÔŒ¶Ð°'ié ÌËl ©<¹ »TT½ Æ·›nè†kY»¼Cü!Ú‰Mþ.fQ‚ ìMY þ ì'm½["‘5OÊ/xü\bµ·Ž4ˆf‰Ó)ÉijÑ=ñGå¯k*‹µKVS:ó›4¦9}“ÄI½ê‚¿k|‚tƒ …,¡$Mĉ�K|ÝFìdf<¨×4`¦5’^J)8Huå”k¢ŽbØŠypšð`=15U›%­¯Sšq™òi¥r¤.ÚAéJø‘ôeâÄtâvhDñèû³m„Œur­2,ïrEØ’(££ùœfB>1H«º;®©Z‘]ÛD2]›<§|<âúeGiUP§ì°wô|³"U‰Ñ:M¸þOfS:<>”‹åmª¤ÎüÆóK::]ÒýGe4ˆaø‰ô:ÇpPO­’°ð÷[0¶ƒrK&)´ô{Û+ÀdéSôÏ!A„AHe‹;ª:pø¸F£_j§%uî°@vk" D¸HA‘ź¢Ës÷L4|xDyÊÛùœÁļ-‘~.ò®Q%+I%Š^§³äž7…JðL&©–Q3‰k½§wÑÎìÊ] ù.únõ¢Ñ—ð Ûí 4ú|FB²!I¹@Ì‘÷�¿+–Ë•Düa¿÷ß¿—öFš-¨ïø”ah'! r£ýž?ÞŸ¤Ÿ ‹/ƒWPʲ\< ÿ€D…°Ë‹K9R¢”äS¯ù("œd#ÿNóÄY(X°`Á~Z¶‘ë'Sn›ý±ÙË˽=þuì›,X°`ÁÞ^Uع ÿý£`Á‚}Ÿ¶ÿ¾Œøsaöºc5Ð1V?Í€ÎÃféÏ4Ó70(†£¼�UûPbÔ@³ÿ°=÷c¸áfÍ¿F[ØÝ?ì0Õ•}ù9öÛºÐ^ý7;û  v¶ÓÞ7Óï³=RR„톔Væ‚¿¾<_Ü0•±’5†WÜW÷Ù+ñKÅMÍNÝW‹"—šÙ‘y ø#-ÉødWÇÔ˜LÚ¶«+Íà0Eëˆ^û*®ò<Ê“†qmVó~Íi‘:l}'!kE ú£ù}eÿHQíR}aîâ[l¼Ì TÖ¹Œ¦Ý’¿Ëë½Ê$“_ÌiøÙÿr¯ÌÛ¿K~HŸ2›¸]Ь±v ³óäàþZdSè§<t®¥CÀµ52ϰO£s´;ºÍ:ºåñÜïÁm,Ø[bø,X°ŸœÙoL¿{GÙÞL“@½ò†íÚžu±É éI˜D_ot¤CÒÓj%L ƒ1ULÞËò‚›ÌE~R Ø)»Æã‘LÞëu­„¤< ]8ùQLÐG‘*Í÷éx°`"¿âAkvyIM2é‰JQÜ8ò‘‘²ðÞ{YÍ[¢·l‚ é´r®îšÄBÛ”eAfѨ9è×ÿÿÙû³&É‘,=<�l÷}‰=÷ªÌ¬Ìªêêê"…¬î–Ëá3EfFøÀ5ƒÂ·~ P„ÃË!§9Ó·oß.Þî®%³ªr_bðÝÝV,W¿£z�fn¾E¸Gœ/ÓÂܰ(  çèw¾ƒvé!ŒmŠ£ÔKáÖl5éöÝÛ´´²Ìd‰½ý]&UP”Ò»ï¾K›ÏÌõ3ÉŠq…=ŸEÿ•ÔL1«eÉ$'šÄ+!sø¹>€>ÍQ$“8'@ó4‰ìyG¬neú#§Z˘\Õ FNJ[% -î·ßÿ= û44ýSJ!åZ¯Ka³érR§¬@Ôh$yj«ÅK>B_Dj<lƒ+›9õ 5{ÿÙ:±jQV¨0X¥#r*\ ‡C&Ï\fnj�÷ùêÊ*ß«¢ sÿþ}&Ù€”sëÖ-®+•lÿK™pó?ÿçÿ¤……NëeŸQžþ çƒon°-ú&î[ôåeÓWoߺM÷îÝãö·iæìu—k‰º`y«eI]h'´/H_’" íƒíp,,ƒ*RˆùéȰ ÖÛ6®íä·B¡PLC•ìÈsSÆV×'§˜o;…B¡P¼º¨*„”TFèø§B¡x±¨#ýL[œ–œQîØÀ¿Gf÷ÃËu¡\yÌÃyÈæ]s–IÿÌ)Ëœ ™#)¸gú‰›g%U¢¼ÿÞzòûW™è”g¹*¼vT* HL{&s޵Çd_ŸàSGþñ©J¾:QF%É c €mB«Ä?À»IÄdžÆ/jƒ|³ÄÅZ–+׆|‚, q.«¨2M1!gõ¯‰¹wi«tZgÂiºOzÎý_"0ßWžyÕÞRűö÷ƒ€Üàï?K÷Üe§»6í¥P(^o(ñG¡P¼2È<C„Ž‘2›ê Ê7ÌhÇÀ?u²v”m'}+×IÂ~7N0…ÒÄÉšÉv¤Ç bÐ91†D"2 È+ëòù"uHøX5!I+pê¯nw‘â唢þ‘YÏ&Ɉë:•žÔ}ˆW(ÿH¤Âd2æè”Ã= ; ÔeòE‹S3Þq«y ©*ÑzépÆÓ±e� ­&·3mγÜî´s²U”YÉNI?ï©©Â úÔŒš¬nÒn¶©½ºÊQQ·ËJ8hO-@ŒXY[§¨Ù §´½}Hû»û´´šÒúÊ-/d楸oÚ6¶iŽR3\´Gºd®C—ùÿiÖóâx U¢Ô’£éä@ä`RT–:¢Oʧ¬¶Ó@äMæòO¸mX DÝ"ÖÚ¡$lšsŒ¸‡ÎXŽL›âR¥ØÖœÿÑ0¦ÃÁÅP½™#¹aÚd(ï =ÛhB È;KÎ8ç÷Íf«Ëä.{" ÊB;áT{dÓ1©%³‘œ¶Îl—VþeM²ˆæü ¢±Ù.IêL@rB?ip}óh¦iÝnÚï@š1!ÒL\®nvDAG”y@È5YâÎíÛ·sÒÒoèóôÉz¾µÅå Õ®+ú*¶Yè-°‚àìµåÓØVÔ|0qãrÚ7(‚yy»±¯Ô uQ u•2!ɶ6 rd«ó_¡P¼zð´Bò–÷ª3¯›ÊÍIõUÂB¡P¼ú˜•ÆWñßuy`…Kƒ¢P(^ª)¼¦ÝÃY–Ñì”®Áµ»*·i…“¶YPlP%õX œ[}Ñ},«Fì^4œBûμ´e…J‘ °Á†Y%ÙiS&K) …Bq Ä…BqíQ"ø;ò§îid@™LSdf ½ÜÌö ª<,ñ ¢ÙÁ;SðáT:f!ÒJX‚\¸Iów£Õ¥ l°ºŸnˆÓmI9p$º¼I½… j56©sxH‡­: ŸRJÛ‘")1Î7ȌƔEE} i¯@8Õ<˜0!‰Ò1MŽv)îv©ÙÞ †©ÇˆS…‰lgPD80‘#¥P¢ü)û2œ.º‚!Q,~DHÕ&]³I›5²uÚ‹Ôît(�ùÀœo3 ]d…G`ÂïaFGw)èÇtóÆM&7$+ jF NoE ¤C®cÚ¦ÛíQÔìÑhÓÖó„¶žŽhlþ¦žq¶Äæ3^2µ{Û\+›)@nçÔJÔfYÏs“âÔ´sºnÚ5ôÎíÅ¢˜œ,ˆ?œn NÜFÓÝ¡ëo÷Qز–üÔä>Ž{ IƦ[d´°Ð¡ §Y3eAù“Ív±i?A2sCŒÒ_>VŠ”^qN,ËRsL¨beÈ‘Ýà>7Ig M»&È\É-s¶L}"¤Á¶Š7“Œs©3‰)²jU¶{'ÜÆ(+0ûDa›Ò�„£ â&LBzÖŠèÀÜGY³E+ÍEZ zf½éGæ˜cBÚr7y΋³&±b)YsC)}MrÐΠ΀€ƒ¿‘Ò „jXåhq‘Óiáo,Áç믿¦o¿ý–>|Ȥ´ÊCÙhgx¬zP“IB8–mll°zŒvwwéÁƒü7úÁûï¿Ïß8¶GʉÇ:Žƒ¿±-ÊDZqnØ'0TÞB¡x!äI<óü4‘þ;UÖãÙ)JhW<öq ‘Óp§´N$) Åõ†<Çñ¾õQ¼7�ð»Á Éõ#¾*×U®iÛè½yupQWâXLš§òtÖkP0•üsZ?˜ï½Í*k²Yi·æ.Ù~²êRAT¢cjCÙ”Íj°d%m¡b›ìXÊ'AXÚ^ÖŠÝ߯î$” t±ð#½ d'í’•ûý:ÌŽïï¯/-?I^H¡P(®”ø£P(^8Å(¶ØH4ŠŒgÊ)ºlúœ”·µ)³"&ÇØå±™T i2QÔ°Qv÷ WÍ€OÛHÒM/F¬ E6¢¼ÑiS§ õ“.5š=ŠÂ„Szá!†‰9îˆI;Ó’tú%îx–˜”AÁ( ¨¸OÍέ­˜ÉüN×î HL»Yà,`R–e/pÐzÜT,¼‘{i'䄸ݨmêڨͭL®T ·÷©³Ð£ Õ`2–%B¤lÇ ÌdXk8¦`rH‡»}úüóïh{÷5º}êvRzþô öjEG6Åš9n”™ë˜‰âÏØ”µ@OžÑá”–Zô2ü.BFcE©0:&õŒÔp’¶‰ãWÂŒNûÔjRÛ¥‰Ê\¾ë••eúÁ@“ƒ#jÅm=ßbõ™‘¹#«T“ƦOC ÁIšÍXZ¢~ "5B'}Ó—Gy .L”Ç1R& ±McB£–M-òP82ÛŒùÌ85]d‰V|Ï$ø@ŇhÑ«xÂ×f¦æú†|¿šSbDËæ|mî+T£øsQâLÖòD°¤.ù€4Ã$)¤V3ßHâ �ÒÈ:P ¶ !EÚ§Ÿ~J_}õ“n°H9’¢ `'O}LÒzI:3¬Ã1@ ƒý}wü#ºsç6ݼy“ G86êûåK28•¬ÒHR«Ž¦P(¯üñž‘HŠç;ž£x~¿ñÆôæ›oÒÓ§Où9o¼Ó„¼‰çð[o½•¯Ão¼ðçèÎÎŽyßa’ç»ï¾gÆŸñ³õîÝ»öÝh> ‹Ê»ÛƒŒ‰íQ—çÏŸsÝ~ñ‹_ÐãÇéÆœVëñ®À3ÇFzIüI\!• ê& ü‰%…B¡P¼~@ª_I [YRþfNÁ?üä'?¡÷Þ{~õ«_Ñ£G誥W(^%øi÷f­÷×¥S\>.z]JjåÙ�y6OßÏùXƒj)tÂ>2««>s÷ÌÏõUù+'HœªQʧA©€:fEPù³Žè#A~ž0?Zz¬$Ž•@`nÃŒÊéËl»Vƒ+[Hî€òÊcÐ{ô<8îË­ôá;_Pù;ÈéZ¨MÕƒ ñ'+Õ%£J2½¾ …âjB‰? …âµBæØü¥|öAÆ$¨üð¤:øA”§|ð÷ETÜØl×h¶x²(li!X1Ã¥öÂ:Iד82Œ‹fØÌ#íBjQÙ‰öN§MíæˆÚ­„†æXÜؒ<jÒR€º‚d12UAkŸ'úÛ™ÔB:3&y–!Þ!%¹zKxHA…É·àáž%A T†GÙ±áäZµ{]ê,-0‰Ä’­,A†Ë1ç<>Lhoë€ÕVÆñ×tç­=б´ ¦»– †¶I;©DÛô(‰·iw'å ºáhåå"œs'¬¤q“~:4}ÆÔL¿ ¬Œ-“~š ý´™ücï«�ƒtO $GC ‡cúäwŸ0ñ}y×LL²³!É(Š­òŽ5É2&Å®_w{Óß;ލ’˜ríЂÓGML¬@�µ©†¹|™ÏÐl3žØúòuÄyä$&KÂCŠ1Ü/ÈÎi÷pÿ˜Í†ýØ|[U†¥åV‘Ë|.µG;Õ)Q…X]]e…LÌbòã¼Ð÷pNx`2i¾phWLÞþîw¿£ßþö·ôÝwß™þ× •åe&É~¢î3Û´^BÜÁ7&{ñkމcI9†ï#³ÏÿøG3Éü9}üñÇôá‡òİ}°ž5¸—0Iì§µ‘txø›'’øD§V)½¢B¡P\ø%xîáYˆg0Ø�h„À "TÒ ¦†o<_1FÁ³i5±Äœßÿþ÷ôË_þ’ßEÿý¿ÿ÷<½£(*à}`=žË¬zç@8Æo?üáY Çúì³Ïøy1–ãÝ€mP&Þ9x—uÙ½CplÕ9J}‚'§²=G{) …âúï†ûoÿ-¿{þãüùrNq^Ùïª?û³?£Ÿþô§ô_ÿë¥ßýæ7¹BB¡x9¸¨´Bÿ¿€q$û]�Ó4¢‰ø)�?¥¸¨dŠ_ÁW«aUj³Lj¼�¯ºrðl¯D‚œ® 0n·>”ÿ Hñç‰ç©tpNØÀù༤„ð/°)¨,±DÈ%²¯"/ÛúaøNƒ>Mâr»Í«ìcýÅ'³v²9— ¤Ý„hʯœfÞÂg)Çj,Çv++«fÿ÷ œ³´­l‹r¤¿¢í‡ƒ¡ñ›OÜy{ä×Õ.æŠÿY¡ Tý;oŸb»Ì©¹0 §T£ Sû«¼•ôÜh+œ ü‰8GØŒâ—óç$À“ƒc];`_|r^ç¾bÿ~ôþ$ØOÚ¿î¾E»Kÿ½ jch'øUývÉÛ'+¥�Å6ÆŸÙön@!ŸB7ÿsàvÀó?Ò¯d:äûʶs`Uó]™0>4þñäbÆB áž¾ÎýÙÜS~ÐÐ L…Bq>(ñG¡P\k“ã o¹Ho |1dàÚn›ÁŸÆc¹c;‰îÖc`cƒ/|0è8c¸ÙBúžŠÚ‹4¡ŽYf‚À#ê˜i»ÓvÆkÂG&->^Û2iŒLT#7yž2y" WyàÝj´»Õ§A:± # 5šnp:¦ƒQ§N'˜NÌ:(¹˜eæï4sâL6x°Üh6h28¢d<ÉÛAˆ.—9”–¬”Ä]Чp’ # "K”hµ#Úf&ÄlB6›…ª(òÀ@A[„1 ¼D¦Ý[溴: LâbÃ1„qÝÎI$É€hx4ቴ,ÒsÓ.G;0Lj›ct¢ ³ß€FfßnF7q9ã1Ô‡žÓdÜ0•é/È×xfÎÁ½FÓžùt‹ö˜è‚ZW Ξ÷ 6ÚÜ6èSœ N¢7M}“¾é‹f2s‚>tfñ˜RcPt2³Ÿé{-ô÷ãÐh„Æp†á8q)ÏŒ¡dþ p*¯Ô̹ ÏU8Ú8¶Ö//¼]`êbʼn[ò>“Ø–Å” ïæ^ÉäüØ–F*1s.f[N®fútjÊáúNbîëÀ‰¹VEj´Í5EñÇGYÛ5lª®ò7Ï2âô/Æ0´„œVNbb_³ÁŠ^o¼q/W€�¨ß?b¥ŸGÓ'Ÿ|BøÃ8=×îîŽyÎtM_ëäF·85p¯‚ø½8MP&x6a;LRï;•~ãƒëÉé·ß~›Þ}÷]žHÆ3À7†Å±#W>BjÂ÷x2*÷¿£’ Åuƒ<ã�µ777Y¤`<seï$Ö7ß|äì EŸgÏž1Ïnl ÔÜ@¼„²ž½X&BÇsWœ³P÷Áߢ¶†ç6ˆD�¶G=ö÷m:F<ÃAÅûï|ƒð±¼P¨UÓ~g‚H‰? …Bq=pÒäÞÖV´j£ ŠúûúO{¼—ð.±õË/¿TÒBq‰¨ŽµòÔÛ5oþú³~Nø0æÄ¸TR…O#ÞàþǘVöð~R�eTÉ1ÇcÀŸ1«Œ‡e|{•€zßò=ž™�l�¿ñ<•±<þÆ94‰ç)·ƒM;HÚuØâoaREš±«JüA»a[iO´3ü@ÒÞ‚ƒƒ}zððÅûtÌã> ÙLÚ °`àmpÎOŸ>1}ÍöI«Œöƒ…ý~úÓ?1ïª5öiáœ%¥½<À¿†¶Æz(–c¿Cg÷.S)ešûOH:a(~åÔ-·­Pl] ÈœÊ?e9ˆ‰RøÒ½mOq;â^- ïeÜx×¢­~ö³Ÿñr™‡€ (б@‰í@„AðöÇv A9ìS7Kt±þj”!ï{ØŽè[Òþ>1팲Ðo­¿r74|™À¹~ôÑGÜŸò¹"s°¤Éä|�Ùn4šp¿‚¼¸´ÌÄd@[MFc&þ´ålm?3ë콆v\__e-°cÚã˯¿¢ñÎÒ,V¢>¸.è×GÄ:ÍeR(Šó@‰? …â€0ï…/¿„ø“Ú;YÉÏÀ©ÝÀ �»¬„2ì˜õÍj‰%Èd`08˜%φ(Râ4Ì s•ší%L"&0À1Öt¬ûE”kœ3XÌÌà11û…  âê+fÝ0žÐhx”ŸE§Ý¤^wÕ̦nãm3ñ?dc¢gê²¼°˜OØc¿áàȋȅ$„P"ù(5Ç3çÃl§ 6¨Óëp9»ãâ B©cǧYJ—9–Â1EÍmó=rW,bò]iŽíR£5`å“FØ¡½'ÅΦ¨×m0ɘ˜s‘Š£ô›MC³Qf‰M¡1Z²6íï²aÓa,[ä® i™#·¬â’Ù÷i2¤W3E/šk¹º°F»ÆÈÙÙÝ¡›!õ–S.çð oê{`ÊBÚ¤%NƒDÍ9ñ„bcÜ'v¢.O³&íJb¬‹hȲhÂj96‚(jØT^–£2$îÅ‘ÓIJ#c@ ŒSb²ŒGÓRV¢ ¨iúF{÷‚1”Z–l3¤ÎGŽU‹âhP—¶ËæÁr峨Aì"FS&ü„LäY ¥Ib DWd6eXÌéõV½A϶j9è¶Ujj¸è3N±zÕ$Ï”—El´ýÔ\ûî5;=s> t¸ãM—'ÿë*—È>i™�„öjF|Ÿv:-Ž�Y^^âsGdF¶èƒÞÏ£›`4Cÿ“O>¥_ÿú7ì8Ç„°D~Ø'´rm9BªÛË•`œ£|8ãðAÿ…!в`(‰$Ä!´!Ž ‡&±ql8Kð,Ãv8®8“Ä¡d â"íŒíOfú ©é‚JþQ(¯à,QÎRqãyˆg'œ¤x^ãYŒç¨¨á9 ž«Ož<á}ñ,†ÃË@î„sß�ž³˜Àóï,Ç$R®À‰ß(Ïv<qL¼û úƒõß~û]Q ¯LÐÀ Š:þú׿æg·<¿«“Ày¶šL¡P(®Nš˜Å»è¯þê¯ò¨þYûàÝòÿð<ñÇvK0¯†„B¡8 êîAßçSý®®?Ë8ÍNh¯3IE?DEETV|`| Ÿ(€ñ'€ß¢" B2ÅD¶Ö16YÀ: FRˆâá÷ðÓÖ^ˆ² Î c{ ìÐ~ `lzãܰÛ‰ßçŠvÂol¶“´ë°'Ð~Afìòã¼ÐÁe‘ýÇØFü6€¯”ôäéz¶õŒ²ƒúú¿èg¶(ýÀÎÁ×XÍ$-ršÆì?“e’&mˆ 8ô—Í\G”nð-„´/ØŸS5X"Q港Ÿåj>Eš'ö“z?YஃËAs䈲Œ ªlV>v ŵõ!} ~>´úlO,Ç=‰6@{àڣ߈ìQÜ[8´Ê@¿@?9 ÛŠ:¸(x¡Ð7¥Oâ˜Ò®ÒŸE5H¥P&Úõª“¼ àüÐN8G´ƒôv÷v9xÀytMÂÜÁØœsßl{xpdî§ŽÙÓ´Í‚Yfï§eÓ~|}MAeêøÓÞQƒX%mÀNiS 1í#d¼‹�ÅL™hgá>xl| ™™¹ÙÛ …B¡8”ø£P(^”]Uõœ2ØÅ˜_$.}£—‡°ËŒXžÕš¡GÊÈå0‰Ú5 Kd�ár¬29ƒb[͈ÉHb\b0 2EâÈ"ÙI^]Yò$ˆ0É£gÒ°Iƒ8d²È7å˜ýEÞç$ Öˆ’ÜÑ—§úÃäˆõ2cp>¯á(¦£þ˜ÐÝn‹(2Fm«Ï†K3êÑä°MGc&/A HPD‚’¤13ñ¹Î‘y‘¿CÔ ¬œF”ŒBê´ ^Ó£4nP–Z¢8ÏïÒd˜ÒcŒ/¬t(n (NG–´E-j‡]êuqm#Z_kÒÊFhÊY5†¢ BnKF8ôxTD> VÌg‰ìc ”òb[Uú–DkJ@X Gùµ+vÁ7«+«\œ £¡iŸ†Kí$r‡ˆŽ ®;Ôi„�g¼Ì¥‚r“ŠP`r²Æ¬â¹æ4s’Ä!Å›fœ’ ,žÌé$ŠeŠ,4“ˆü“‡²¨;•Òòß{b›ç†:!J¬Ï¯o¿óïÑe¡¨êû­Ïmf ðÔ‚ív‹ÛΜ/¾ø‚~ó›ßÐ×_c&v¿gcN"ÙDZ¢xpoÀ!NŠÐ¥¬Ƚ‹r±=Œq�F¿MØÉSw‰Ü/ 8E›Ù÷?ø½ù曹S@ž3¾ú·»ýÊèQ(¯8äyõ~Ëă<¯ñÌõ÷½L€ð|Ç�1³ L¸ Äy+NUòl‡R\e ÓÞHV§ÊPM P(Š×’x€Ø ~¾µ ŠKEò|_†£(|À/'$ ŒC«ã^ø@>„x‚ßBÊçx¾àÙoøî„Ô.?”!)k±~“«´àgõEI§$AX·K{b{^„˜óåøarWšq€\*>=<£áOçé•IP.ʸ}ûﻸh‰WP%é.}Ñtœµ×T eóÌDéÇWyÄæA_YZZàó€_UTÐ6 >ÀÏk VÅ튲ð b˜øÃ¤¿¢N_}eöóëæ”}$…Yêù¹‹T]Ö—hw ùÝŠ’Ê2>Lr>þbo§T <ÖØÍ‘Iïräǹ‹Ê,Tiaã‰í(j´h7ø#Abú>Øö«¯¾âm%EÊ—cI?Å7®Mamq,,ÇvWhΞñõß¾s‡ë}ÿþw¹}l(»œeë–‹÷Ɉƒ4··‡ôðÁcÎà�ų Óf(qä|«ƒá€}¹ËË‹$^gi+`âR€eeÎ×9O(ã{üW¿ú×Áæ«whqó R(Šó@‰? …âõ„ËÑËä ÜJyb¡rRH.°H½œÂ¢&‚´E<&)Œ�ßÏrR „V™ ƒ"o®1âÆc›ê Å&E®]?_¯U&õH^¾ßŠBYÄŒvfä›2ÆPµiÚHš ™p8ºÂ‘JÄŸ$-ˆ…Æé…¢iŒ†µµuZ]³éÓööèÙó]3ÐÞ µõÓ8«5úÔ…RRcÂx™v·8ê}4:2w8V±S é2†” -Þ0û,:Iá±1XŽpNö¸P­ 2v&4¢&MŸÑ~Ö§;wîÒ;ëGP?ب¡Ù…r6r67Û´qÓ;HíÕ ÐG@ ±9²ó´E[OÜžƒ£~åì/°A+×_È?vYÂê?’ͪY¹áõõ56d­<, ¼^N‰M¿òUÆy€h™É8æcÙþ‘°ÒMXU †9H>®¿#íÖXœ7fY<„BOÂ}ݪJ¥Lx³Ä·‚¼"N¢ÌÝ‹Üõ*Ñl™Oü™Ñ,‡G‡ôíwßÑfâ¶š÷ü"!×[rlKÞkùösØ‹bÄ?þã?ÒÿøÿÃs;ÆðîWÊËòý%"†:€ý- 1ÈŸU¢Ì#?îwI#QâD8 Ì8Þ0É`~ùË_掂¦S“œØR'!fY63?|•0¤P(Šù jB ! ÕAU{ …B¡P(®6¦¥Uºèqü ˜lƒ¨Øˆ‚J•ø3«¾ü$©rQî‘›p‡Do�_¹Ç€¯ $®Zš/�u©�äøAòÁb ¶b €óñ)Ç#~0ñWÙvêçq>„T„ý°t†9i‡öö™Œpæþá‹æ_ $%•µ¢Í$�bssƒÏY¦ jthúÈ„÷™ÚcÓæ–ø#¤ !V‰b”¨åX!GÕ©´xØßè-÷¨;!(`uq¾ï<+ùË?>Š,ð“ŠÞÏiüb8ov@fߢK@øÐçpîè ïà<% µé$…—ø�E½ ýQRЉ"—ß÷ð7Ê’ûPű¤•Ãr¹N/¨‚t¸ÞcKTl°òNÆ÷ìðùôy{°âigÛÆxÓÇMêÐ*R÷q{d¦m{„²±-–¡áØ2§³·¿Ç*CiY\Gôðœ‚m› WBiI¡P\o(ñG¡P¼B8i@x¤×Ié`ÿÐ#J& 0¸¬ÊHʃÄ`wÇ úÌD¸Ùé¼8µÒ ň?¤VÛ Ã6`0Rž„‡aµHEº|³l“s˜|3»ÁºM3…±ôp˜P<ÉØàr {¶Ù.a’¬²íd< ‰)ÃT,¦œtx@Û¿£Ö¾18ÛËÔ[\2Ë—ø\@q c˜Ž†L±¥Ä¥ù²dšãmx1àxЖ±_w9Ð7ƒç˜úÃ&cà) æ Ëq6šÆð ú¤Æi0˜CÖ´gÒãö<Ü èù£¾Uz 2KrAB³û# [ÖI�q™q\¤-ÃXŸvûsgïìƒÇÔå_Ð÷OîÌ´[bh2Î=E| â¤Aýƒ€~cD°Ã' S>Ì5²JÑÂB‡Fccxã¢Eã&±#]([‘iûÂÚ12H?NY'‹Þ‡È„îR‹‰9V}'0mi#::æ³²¼H««KœžªÑ]ýbÓf™1·iûù}ÿÍ#sÞ#ZšÔ^4OÜæš£ì¥¥E'gœ1Ñ&žÄLš´2êg6Bd8š0I *@hOô+hô4MEZP½jFœOHti6¦4N\ÿsw§Õ*¥ó!¼5ª]¹Jr•ÖuφSدB>â6lýÑg ² &oaãºÀ!t/0Ôa¼A‰ÆhÃ4àK.xN hþG>ˆ†‚ÁQ¤¶g æš!• ÊF~øÃÒ~ô#úøãy!‰Ã"IO6ò•ô£P(×JüQ( …ŽÝŠ«£ùjÎuÛøëƒ\äl€oñóÏ?g_‘Ž}úé§ì£±é×ç ¦òë#I<)Ë«iÉ$xÛË>QͼJ`/1Ðf’n2€Ÿ" ôI¢œÂ¾²;€v¶ÄŠcœ•¼ÍDµû¢}àû‘@1IïÒùÆùÁÅÙ 8OœI:¤êyÀ ·µõœÕÜA°€oÇÆ~V1)¥?þñìsC{â¼áûB‡eØÄV½?:tçá©ÓåßBÐñO÷¸/Qêêûõ/~U}‘Ųù{A‚Bê%p�ËüƱñç‹>…óÇubž´«£à;”>Šþ*©÷„€'Ç`?铌o! ¡oá\u‡•ÕŠð¼jD.õ]–t�øüA$Ë}š TMl:Bœ'ú×p0f¥zô¹6ß‹ÏÙ Ñvë뫼=ˆ@¸÷C¯<ìúŽø§P(WJüQ(¯NCüAj¤ÌLž¬=JôIêJÊh8²šNÀ*<.E³ý#&7õLj6cfe#/lšFLþ¡"޼äV>1öá$3aˆ™ðP°¸A†g‰5yð±jOA©gBãxÌd6S§–‘ÆèÌPxŸŽvFf ; haBÌíè˜A¿9ƒqœ©ÂIJd£Û‘.²Ôå)Né¸Ñr~!l¼Ým˜X0’{¥‚‚iƒO&Ø5¦Æ™ ¦#N¥Æ×„/Ôˆa1Ä|Çá„wyìïr‡µÄb.=Jš¦­štøÀÞYŸàm¹ñæ]¨A;œõ#ÍË©ÄJ¹Žiq1 õ¦éˆÀÙçtb”µ]ku¨Ä¡Ê`L\PŠŠÃª;Ð’iº­6-/.° 2J)¹"븉ÂÀ‹Z^Z0ÆMƒ‰5à ¡¿Fczþl›¾þâc„ïP´Œ´jíNžfd¡5㸸sçLyOždllÂÀj5.?›ûe2¢8ÅýaÉ&PÎj7B®RÙEˆXájCÎჾ—òõ-AÇÉì&^ŽéüúOqVç×çØÒiíHg‚(I¤ pH>ƒä#‘^pìÀ‰A0³ÜéP_”'i%¢ ¨‹Âõç‘ïˆ2ªN:1êãAœKUÃq…ò଺wï÷ÑbÔæ©ä.D»V¡P(/ …;Ô _…B¡xáOÞÕMäéB¡xy¨’~êÒ,Uןg\'Ê<¾?Aü�UÕ!ñ/TÉ;²Ì_ˆºOµÎÕíüeÓ~σjy¾ºÐyI Bê‘Të€OüñÛÌ?H BÜ�bà‘Jõbßê[i{8‹lp©ÛD”‰²ÈðÿDÆ×&dªrŸÕf *®'yḥë=Õ/TöqÁ×}°/ œo§U–eÖiÚ×Ê*!MòúCÙýøa\;¹r%8Û ™EŽ8ŸVàŽ›I {WÝü\ò¾äËÿ´2_ýŸwó}²N ˆ²™Ä½*p®ðç *$QëDá×[RÇa=§¤Ê}ŒÅu´ÂA‰fBm{`=Úʯç¬{Ù'èÕ)²Wë=í9à+ þóÊö ›&•–B9®Í”º ©ÌqR?g g6cÃÑÑ¡S8/Î팾Xå³òõɼ.SùãL¨÷gÞG¡P(Î%þ(Š×’WÙþ²’Q›Ëк¼Ìn… /8ÉMâTFf°ˆ}¡n’šß.º…å$a÷7F#+í8öyœòGÐŒ²c¼ìÇ2±€ºí(7ö‚$›Z ÇéƒzOA«G‰©ŸDšLÌ£Yª°®c ¤¾' úÂàR$åC× °½ÜOß;.ÕZãøx™`ÉÝ!K¾Èº†.H'ˆøA{Á@½Óô`ŸûÈ8 GöZ^ìÑd|/Wªšÿ&ã„vvv9œ(ù³aPvšmŠ‚¨dÂ�i„U±œê+%E…1I¹ÃÜ(0}·ˆ"Á~0ìEú7¢3²Ü ãeDŽ”Vï$z€SêGã±=´ ç“ldÚN0J9}œ“ƵN„éF!Ú×�¹ ÊJbô‹4tîxKÒ\n}�‰àÁñqÍYIõÈ2£p}õŸ·Þz‹ ©d<ðG±09 P(×âõïå1Ø«1ZZ= ô P(×¾BHí|EÅ@Ÿý Ååbž{좶™û@ìãq þDÿ4âøJ±Ÿä·¿¯¿USk gO6€_ €ÏDH:çênF('kà7–ã|DñGŽûB|6øH8µkÙíÂÀ*J¹ïÈ4|Ðc 6?±Á£ÌeŽ¿Ài²¸^W¯¡Ù¿>]ZµeY¥¹ãÆXê#àTc oý4âFÙËÅ*î‘KI†v ‹À¹!®ûÊG, ÙóñDüfuµuõuýT_‚±5pÎ'űUõ—–(ù¡…H0C¨@*eåFNAŸ¨ ÍØB¬’¾ôë`Žn,÷‰ÔS ¾^�ý‡}¦®\Q;b?«ÙNTµüûMú©ª°ü‰XŽ@?l[í§~9åv+ʧÄùs«÷¶“m°ç‡ó@9G0ÿPm/®_fûRä?ú†üΘp”¸ý£Êþ÷‹,MK½ ÷æü»î<²)¶³³ëN>19?ß¡c/…Bq1PâB¡xm‘±NúsZ4J‰Ýï ‰¹†Åð ,'(0IÁ "aœXýœÐŠÖ°QS™¸@²À®‡!ùIœšr@üi6£\&5 ¬LF˜Ù†F—ó£€ AØÊ”•b lã8‡L*Kvp)ãÙÓO •„3Û›Šò«6ý±uYaB:¾mãΜhN¨ É§ïj# já;0ع`®A˜¹h� Mìu(ê”jå•| õÚä`ìFõu‚ðÔ{¹Vorr7šÆðcÅ™KÂè‡MÚ0ÿÀPkCmÇ´U·Óæ”[L ]?ÊêuÛÔm·œÓ"±êTã„¢xlúsÂýép<¢þ΄û%>c³lˆ4iidÚ®-ŽÌ~¦X®WdÓÉuˆ!µ Ò RÝAŽ• í OñPPtÈŒJKWÁù8‡CY9lƒ ÚLÆ6÷3dx¡òƒ¿Å@ŸØ¹¹aߺu‹‰\.$ºL$žÅ¨Æ6È3ë+Ä,”!BÙùb| fÕ ¤"„/$šGœNr<…B¡x• ¾ÂYõy7‹$3-ÚqŽ#Ó‹wæÿ=ªJA …BqýáOÜ BçÈ'ç½uÇžýú.P(^H ¨þø(ªÏ’‚¾!¢àá§ñ’tô( 劯DHBÈ‘”FØV&âë‰ØOR aAP% ù¾ !NÈX_ÒiIýN;Ò|.’jI|[ðÅ`=ˆ@B²À·¤ÂñQwi 8ŽGÙ"‚­Íäø•°]Ëøåšf?ì}à÷‘�:9¾\/¹Ž¢^/íÅþ¾RpC9å–Uõ¶D¦Ñê1Q¾ö¢ˆ\! œ¤ÜÒÀU/Õ—£¸}ܵã4ó¦û»ÅþEñ»ûß¾†ú©Á¯¼Üœs¸ˆ¾çÁrŒ“s‘Tm’ήJpKÅÚQ�ÈD¬â›ñGއcÞA—-— „!³4[öºJ?€œ¹g¦µ—ÜÒ?¯]ÐפOË7–sj4×'ÐÏ%àÁ{ø-õávr„¿ýp<Gúª\kÙOî1é#ðCúõ”û õðÕÀäyá§°âŽ%JYç=â[Ú$ð|ãð}J%.¹âG•ö“zKJÃªŠºÜ›=w_‰ow:ÎaÛÛÉ:>3 ä…Bq~(ñG¡P(dÀ'Qbp ¢ÑŒxP°Á1Ñò¤`œ¤–íãXÚV*¤VBú"³< ¬ˆcXF9,‚¬¬+øŒñ�bBa` ÀF‹&0 F}::<¢ñè Wÿq<J]Ú/( ™r“˜&fB?lv(k-ÐÀÔù°Û¤°·BÍö¯K8Zd,'ìÎÙq-\UNÑbåñhvÂÎY0søšûÃgš ­ÜïQdΡ™C¦MÍž1.ŒÑÒ¶k‘ZÍ4ZnàâµÌà~â þV#b%üNL{ïšVtÍkf¡WŸÌ¥ö’êû´~L¶‹Êf§KåuV·)Æè€Q‰HŸýƒ}ÚÛÛgR”`b¾¾ G&ØÔdÆPëöheu•67ÖéÖ êu{LJŒq¼±²@÷n­s®b¨ï<|ø<xHwiûÀhi©»Å4frއ}F‰i¼±ijÙH8-¶÷(ÇÆà·9—¡B"i¦¯Ns K1)MœÌæ¿ÌÊ÷YXˆ›ÖD–I$ÐË0…@1 F1 <pO‚pƒ¶é :X'Ž,D=Y@³|L=Æ} ã Bp–È$4 fõø°j—qü _<MbüJš1?owAœ+áØ¹Ú뉺þú׿¦ÿøÇ´²²’ß7X‡GÛ\Ïf«Yšಃª$7) ŵ€8@ñœ«F2ŸDØœG=gÖþL:®F‰Î‰—I¾QâB¡P¼z¨Xm Æ¥§V(§ÆIã­‹ÁßðÎ;ï°Oã_øà×àtíaÔ%Šøö'ö…¸#鯱 ¾1±Ž€"ø-„t`[ø.°=|øe’œ@áHù’ZKRû ûJQ_ÆóL¶pû‹/Ç•s‚ïLü¨§U�UløJP_OH%HùŽúÀ„rAÀÀ1\…õÒ8¬‡Ú‘#ÑH{îÝ¿Ÿ}lëæ|q V #Z6¾%œ“ßN€Móe‰6r~(Ç•ýå|嚊ï Ï~ës²œðÊ~¢ô"„"(Îãšás’r öG9ØW®‘\ é;Òж>!¥áTë9¸Ñ}˜(åˆ#èl»Ö_%©¾Â¨Á×m8/\+øãP–($¡¸B"ÃrøÏÆPp'Kòñ•v„(¥¥çÏž3Aë7ÞàrÑ^H…v¯mey‰¿%+t›ºÍRº‘ûAHRBæÂrôœê'í‚ínÞ¼Éû`ùÎÎNÞïÑ?å~CÝñ¥(üH_ò™Ê„$˜Øùšá“DyB:ÂÛ¡ (Ä‹ú•Ýä¹!×À1PתªÑY€ããY…ë'eâ7׋}—±O|ÈBüCÇoܯòå"!4J…ðpö³ |¦³‰? …Bq5¡Ä…B¡Èò¬’Š›p/äB-9†‰<¡#…öï‚‚�F9È3ÅoJƒœ dI1Až?6—6 Š u-Y*ë­´j‘6Êbß ¾S—9¤„‰?¹³äŸ9•;qÊ ?ãa—†ýCj6Ì�¿Ù£lbà _ø„Éï,5<=æÛéŸNSº¸!ÍÙ˜OTün˜ßmsŒÑ¶hŒç%3o;ã“qŠ“´GŠ@Æ9Ðnp6¸ @“MŒ RÆ(ð")\cÈñƒ*¹$«œsôÂÙ'2a)é² — õ–`SÆö Î_l·ˆ i·»LÖ¥*?PB[´M¿X^ì2q,Î:8Ü!zdŒàÉvÐwؘ€66m4äè cЛáœÃɈšÈÑí"<XÊ—SŒC+B<*EÔÄ dvírΰGNÍIT¯¨¸«¼@µôb^LÒþhqTˆêˆ?Ïž?cÇ‚¤ßâOæä›ió¼Ò>02‘® Î8,„ä#†&~á„uÙ#†¹ÍA=<Uäßu¾2±ßgŸ}ÆÎ‚üà%#½åT…@rœÖ&ö› …âZÁô ¦Å„JVû¼®’Qëp¡ç¬ª;gÝO¡P(Ši(½ÿô5£P¼6EøàðI7¢("Ä(}HJsÙ^¾EAHÒˆ ¡@Ȭ\ãMÎc;øKD‘E BX‘ßø–¿EýXÔkp !jHê-Y.ê.òû,Ä) œBÝñÁyâËů"ç"ÎE”S°\ÈBBtâsp„>—F“àká]¹B²âã·[Æ7cë8%!&Ęc!  ËYéÄ©7ã:´áÇñÒA‰Ž)D.i/ëßj°ß í Ÿ’(çø*P8·“ˆ?Ò^B ߥ´½¤¯¿”˜üúIÿÿ›l#ļªDA h6Û¼|Xi dGò‘>W%þÀw9Ž­ ¹¯ÕoD9±JåðÀÕé´ia±Çó�ð¥ŽFüÃå†cƒ ”òwTJÓUµã|¢“„¬"õÀ·çä~”>„å¢è#jTrnÀÜrªQ¾šøf%ÀPÈQrŸ ©OT~8Û€ ”m°N4R?¹7«÷®=Ê‘íNRŒšÕ¯DAK®1HP™ï÷˜üãßër¢=@’~$÷¦O<ó•ÌD% e8…²Ð¯ä>Ê•¢Îx …Bñ"¡Ä…BñZ#„»4O2HÆ·rò›(Ê% ñt'ð¤P‘¯@QvKÊX9m6¦PVzv%˜ò9¥œRIÖH;Ö?HB²È«!?ºÄ|!¥ÐY•Ä„`LEíÈ9�Œ3"4íG¶a‘þ«Ýn²Ô«5.b¥ “ ^V‘‰ž®1¬̶é$Ot]‘¹@ª!r…ŠZËóçÏ­jŒi»9Ö¨¶©3”â¼ïØ(c°%Æ`­äkZR‘Ч" †mÄ(⨞ÀæøNœDj XÖƒèšÈåÿ¶dG€s÷RU–Ø_ö¢!†fæÒĉ”­¨þàÜ>zHý£>×߬ªÊ,ÏÚªAØeÀÉN‰ÀgŽDï îÛo¿eòQCt†¸?pýq?  û#Õ×G}”ãÝ„}°]à"ªük ê …â:C¿þ³Ìwhž”ækfï«ê9 …B¡x¹¨³«ò¿õ=¥P¼€`?÷W¹CÒèáCÒWɤ»Eàÿ¤ÒÏBH+>ÀWe™xƒ ”j> w|øI„ôã×Ù¦ªs…(㈚Çy!Š3y:u×6øFž—Ò.Òf€ßžrÜIœ·ü3Rß\™¤Ÿ±Á~±S¬a?¦Ù&Í5€’{fÕjÆ Y?”Uý¶u—¿}ár!Ü�–ø‚M§’&QÄ¿—„N‚Ÿ¦M~ éå -á¿b‹¯ä$}ÅO7'þy�}Î÷F¬Îß`ò‡Ôq Ÿ£ ¨ ‘r D" ìÅ5AtׄÛ´?®÷)ÓIœZÿ ÈJ0æx¶= „žf ·OØ' ?uÇ‘v�´Ÿ¤»«öE? S'Bt´ ÚåÈ·Û$¥žôE!ÙIJ,¹G%­à_Wl‡`CŸŒÇ}Ó©aÖ‰_ØWmBÛÊöroÊõôSòI“ó‚ßYà«õú¤%¾ï\Ÿ‘ö“ûLöÃvUâšôw!JÉyˆj–ÍDmIîsÙî$œB¡P\(ñG¡P¼ò(˜=#‘Ýžæ€ü]ÙpqÄŸ‚ñ6Ö¨±ÙÔ¥/"_™S_!«Þ“9â ”W°*>0ÒB[Y‡„‰’n*sä—<M' ñ Ü“ÉÄã#3¸n 2dHAjŒDLøãHŽ|!$¦³Rr.BDbm4À0B¤LƪG ØÎõ˜Fl 騴·i´E«R«i·„$41Û$ÖmàzUI®ÄâßsŸUW¢‹!xå…æ"(]G_¦Ûér´ýÃ>!ÚØüÕ*Dq*'<͈fùáhLý±1–ÇÖ(†BÔyàl€Ô-úl#Nø>@Ê®qjŽ#7tìdVm+ã|„6^ÌŠXAž[»y/&�e6MV8r%¥Ù‹ï­â¸JÓ!Ë0CEIrÞÃ8déãýÛ—¢"ªH wvÍá4ÀÎn·CKKË´¸¸Gÿ`›;;ÛümÿÞaåßÀ-žYþÚÑFà-C¹Ãë&îð„°gôÝwߣ¶gv.åW`%Ÿ…Ä(†t~%�)ŠkÂÏfyÆÙ1ÜÉ*fçSôyñŠu …B¡P�ÇSõ– @:ªW(^Àw�‚(üÈ„¹OŒ¥?½¶•´RBú³*t01.ckŸTà+AûQò Ê"ƒLø‹oVÒ÷ñG|"B–ÀÇŸ˜ŠOÈ9 „(ñAROI½DaDÒO q Ä*I¿$6€ 8Mì~Ö/;Ž˜ÄGa"Q®ã|Âö i×D9 ÄQ6á”î.H uM’û£’Éõ•![Í«r"*ÖÕmåør½¤=«~A!sÉþUE–êr~@þfâÎ ×K®•D¦‘–§ä„A~Œ¼^îžm;îîíÐØøØEu†ûEfÉ%‘ëÒ¶¢œ3 ÒÏýó•ié·¶ Yá[ÎKC’:׬®«©í°ŸDÙ{ÃOŸ'óÒäž””fr¹$õœ!æ>J€û ×íààÕèÅïŠúˆŸVêŧYG®¡Ÿ¾ÐnÈóNÎA¡P(®#”ø£P(^mÌáÁb4;f˜Ñ$QIµC PÔ†Žpa•U¬rФö²©»$åW@ibIL `(:ôX=­a>¡ûФbY@5óFE““Ì |<¤1Ò5EˆÌ|," š”MSnV’©”cW§sþ]MÙ4æQŒœSÔ0íyé9ˆ\DEã‹XÁ¦Ý2k ¬›„òÆÃ1Rs ÆÆ€Nb;á7ƒRu¾ò&û‚òÎìdu*U\ëÌER¡ü#gÌ-¯,Cî…ú#cø7Œ1gþ#ŽrI¨96O¯Ëd–Ã8¥Á˜v‡ÚÂÈuÆ«K9»È©(œ8ÒP‹‰mñ$£18V êcDHo•§” (Élº¶(l¸(†‹� ËŠ du,¹'³rYH‰:ºV&t¸—8vw÷òh+É=/9°Y‚·Ýòdl/Êmþ ßÝÝŽ(BÔ>V–ØF!ŸøãÇÙÀ·Q0Î}ƒ¾8–ˆ™Á æ|á¦/,--º|î!;yöèéÓ'ô»ßý–ó^ß½{Çœ§5äq."·,Ï;?o¶B¡P\7±[¢åwæÓ&|:u‘œ …B¡P\È{iú8> Þ+¯à»ØÚÚb?Æñ´ê>ycågÏžåétÄ'šzA‘ðOˆÊ¯ôS%þÈ3HBÊñW§˜\Î,Ê’ú! JÒŽ ¡ÂW9‹ÚÊb…|²†¤öí !B<yò¤äGÎÛÙùŽ…HElŸ`¸r¹|¢¼|œŸ_!°ƒß¢¨"D¤ü¸YYQGˆ BÐB„ä#×´é<*'˜RFõÚI[I9uD¹¦ÓÔ¿«Ë¹=œ¯RÈ6þ>ÓRP•ž$M˜( ‰¿Ï'ÄñvÆ·Tê'D™i„3!Hù„¿OHBà‚™¬óÕ¥üŒÕó¨³OEÍ[e²\àÏ{ø÷°´ïªíåg=ð竉¾B€zãùÅë’BI̯·¯TÛëðì«ÞOþ¹`=P}ž(H¡P\(ñG¡P¼ðÑÅO‘â* ŠÁn5¯°¨^È 0ð¹Ž-R2Yypœ2ù!tQ«|"†, ïÓäR‹º rf2îÒhØÊå9Ýfœ±%i ßm·µ@Ý^Êê-1”[BæÄäƒV6‚³«©ú3Ñ8©³ù4!ÈÈ€U^édPc¡ €ä¶õ&ö85V*j?>y¨|äZ®Õ™Oà¢QNUÂÔ6º à8ùÞˆâ$e à6ˆˆ•k�D3ĦŸŒŸ¥ôøé3:8êÓ�\HÛƒÒÃØhsåC(@Ÿ6eÚæOsgŠ(öˆzsŒ¤¦ß!çÉÎ*m#J?¾ÁΊ?žcGî]?rGò«_h«zŽÔí$Ç”çÁÇé÷¿ÿ=§Ë‚á.¹°å>­sR̃„£½â\ÉGòsbôŠCé$ )Vh2Ï2¤ƒš¾5Ê#®àÄÃù|øá‡ôöÛoå’ÎÒ—üH+%þ(Šë ÿ†w‡È|ã™*‘—>dzé1×ÖÖèéÓ§y¦±[UAçfu¿ ÈEJ R( ÅË� ªqù¤VåÕôÎ;ïÐíÛ·é³Ï>ã@…BñêÀ'Ñø~–*�g†üö‰:2a.)}$‘ø…xQwQ䲄8 ~Q‘4S~Ê$¢^ö“1¸?y/‰óªnèt¤¾B8ÀzIOæ×ßúý”Vð3¹šQ^gGà‘ýCGÔÒŒïßßµ9$]Q~­§˜¶ýëƒÓ|ß¹œó<mè_o¿Ÿ�rÝ}¿’\S߇.êO|ÞNII¶ó cLFâgÖï~6U'«°?Ê ÛÞ9ŸÁ¬“s?›O¾óï;ñ{r_Évóª0Môó¹¬ýι?D©È~XwhPšÏ„TM¹§P(¯ ”ø£P(^ T"?ê"Wå¡Âøö±òbPn™å‘3ø¬œO…/“D¢Â!ĆŒNÊ’,9eÓdBÃÁa1©”LDÜ%ŒÍÆÂ˜zΆ™ÀÐtÆ&Ò7¥‰Sü¹Fc`1” kK”UHK…ñ¸o»-¤V‘‰$•Xà÷õ%26לíÓÒ×Ã5à 'ŒØ4RqÞER†äîá>=ÞÙb%D †qÉpæ<ØDyÔQàÔ¬¬¬3k2ñvÜ?]:;KâI™,Tä¬ö¢s8³G”£ã>¾3Å7Öä¾üä¢`sѨܯœ3Üü )YqÊ|ÿý÷ôw÷wôÕW_q$Ø­[·xr“Åb”NŒUÁNÙÇd"ºJ²9Hs×¢••žÌ^\\Ì%~ñAù8/üýàÁŽœÁ¶s¾%#[ÚDÉ? …â:߬À7žÝxfþù缤Ÿ7ÞxƒÿƤ'¶Ã{ûá™)“òÞÁX ûí·ùd…éì¹4>T( …â¢0ϸeù—Écÿ¿ýÛ¿­DÂg¥¸"þå¿ü—ôÓŸþ”þæoþ†¾úâ‹™~j(×ðaü˾FG"ÔBr/ûÄ"õy¡L#dŒƒá+ÁØßð3ÉãcC|°2_UÁv¨“=à›€r ö»{÷.û}$Õ¤ž‚ßJÒ_Á#¾! Âoœ‚œ$]×i!T÷£<ÔWŽ‹url�Ç’Løçö¸wïoƒà-&ó€¸Hª°ˆÓ°Kº5ÙwhÚuæv5ûã8 `ŠB ¶—sÆ6BúÁ1p¾çU%ñ ¢þ²“€kxãÆ ®›(I@-à“WêRxáoì‡öÆuGy8'´…´9üY�®Ã�iá¸Í&¥4kWB`Âùá\Åg+{Cî À'tUSS½ê@?¿sçNî“ÍSÉ\KP¤'ôÉjèè'Ò7.Ãþæ#«Y¯P(® ”ø£P(®=¬!Ê´„bYy jDMêvz<¥‘•vd[¶ •ïcYøQ~,+["ê%.5 °Uœ"Š€ó[šoc4, Ñ�)£ˆž�÷&pÄ ¤f>YEž|wÑæa8±ÇLëΕ˜ˆÁe¸H‹ÈlÐ ½TYdŒƒÌ™iHƦN«Áí‚À1bÂixŽGƒ¤L¡)¿Ió’qd³ÔK²E–’äûùq&A~\ïØ™Ÿ [–O>ˉ>ÅVÅwVÚ7+ÕÀ?¿¬®a BYqœ f/?âï0³ÕÅØFS«Ý F«‘·§(T_ dDp 4sÚ­Ž1~ºV5'2™‹tI&ß4"s=M¿m´Œ1¹¼JÝÍ Š6ViØY`ÃçþÑÖÖ.ÒûÆÚ?:0ÆcŸúƒ„†Æžœd6ÍÒÂ¥~t„4‰œD”Î$ó3µ mƒ V³n’gÏhÌêCh]D8%.§x¾_æMÊ"ÛW`SY‰×ÃüFÚ-ÉP‡EKKËÔí-¸'˜Þ¨ÒðY0e¥œ_Œ$ Ž™ÑhÂÆ·8(àÄ€Ó ˆÅ¥EóœéÒ[o½Å†ùÁÁ~n  ½°îXÒvÇj3·a:½\<P7Ô N¤ ƒãdccÝœG‹Ö××x÷¶é'Ýn‡×߸±IËæ\Ú¶y64¬j”Ësnï›âSêÈîºÇ†Ú …âªÀ>[á\O™´yÿþ}úÁ~ÀÏvQlÃx Žz¼#álÄÇ*øÏS<áœÆDÊ©FÂ^¤sQ'T …Bq^à=B+Þu˜@“TÿM#ÚÖ¦9¸PÅ …Bñr!ÊâÏ ÁÏÿ>÷.Å7")¥DÝ~%Q(FY É ”oì'Ä!ù©Dü)R6ö%|s£YŽg|2(Ëñ-j8(CT—[œ†>ˉ8(uÅX^>Ùh  PŽsX1{ñG‚¬D5õÒ±OàÛlU‹ýL�Êé'0þ9I-_ÊÀþ¢t-u(KÚÙo—óâ¬ê(86ÚJTޤ $E–Ì�,óípÒŸ°-Ê@ß•V´Wëüp sÎð ÁàZ‘`ü~uYœ+à+Ôi m� O ùã>y]ˆ?¸Öèç¸äùÁDEI³…9yÊ',¢?É=ï«)]ÊÓ …Bq¥ Ä…BñŠ ¨UÓÅ¢ÙhR¯ÛcòO§Ý=•±‡Io‰Fp…äòò›ã€°SV ¨:¡9‚R£Á)ò%è*ÔL@J :QÆŠ(ƨiØHÉ$¦h<aç몞¯•‚BݨÝ4F}ä×(æêcýb#£3€Æ¤è)·œ å\4¢ÀÓ|&)5Cë8HLS™«dËçï@HAÅþv]ù·ÝÀ'é¤T]•¿ëúB&Ô ™<ˈŽ÷›â 7ŠÏøÚ¦¢QFÿ;(ˆ1al_°,Íjü�½ÒD5mÚ*š—ôCTwv¸¶½Þ-//ç©§ Õ—×8±Ú¹ÕéÒâê:-Ü|“Z›44}{°Mû!}ùpŸÕjàT5 V jàÛk+²JVl(Tá ü§ãÔL´¦. ¹ÌM_LRlå5J®TcIa—‘¹8å§‹hu j6KLŒ:N²ñëØS*ïEµÁx\4q\À!csa7rC q0Ì‚T]=,$h= ªVâñgÅ´gÔiœ0¸¦è+˜ÔƳäË/¿0N†&§ýªn·²²Ìõhyy©äPj 7º£ëå5ÕŸL®ª�)ŠëyŒÂé ò&Ï$ âîî.; ñ<Ǥ¨8ø± ¿e9Þ p¼J4ñižÍú¬T( Å‹l¾ÿò_þ Û1')` ÅÒ?}ö”ö÷ösµc…BqýûYTÅ߯ÂB8¾�I…+ä,óÓßb=¾1†Fì;0ûcüì§Äv¬Çä<H9;ûûqFê#“÷¢Ž"YLžqciQ „(ÿÈñ$h ÀzQ,: „¨!*;~z²j:,!B 9ÊWéA½›í‚Ã^dÏ|Ò꘺t_8!ùþ??XAêr?÷eB®‘±$u½Ôk&D/¹^PzÂ9Óåðgùä!œsWªo.v$ªëéß8¯ÍÍÍ\ÅHÔ®¤ï Ýd¶—ûí‹öy] í‚6çR¡úcæ{ŒËÑfhô+¹_„ õº¤ …B Ä…BñZ@"#~ò“Ÿ°!ñäÉ“| ,QUãͤȣ]„²á“¼ÉÇ%‘5T7™/ãäÌóÔ’äx!§ãrÆÞ`z]̲œC =.µ-u³ÑÊ#Ô–ViayÕ€™%¨tÍrDû}ôÑGtÓLxA¥ä܆’Ù=jEôãŸþ˜²!ѳ϶éàɯñg”Q¡Ð„ÐÊwMƒŠPeB,(©³'þ{£N”¶Í‚ÌS *åV÷NÈÊ89õš -•c‚¤FiNZÒOÛøÌ5X]]¥÷~ü½ûƒwhcsÝ\›óµqà"_þäOþÄE7uè‹/¾È¥KÅ~�¥–n§ÍŠ·nÞ¤µµu®8 Äi‰šÉ•®ÂÌ©YÙ“’®s‘Ny—œež€êUyŠ~Cuÿøãéç?ÿ9«Ú\”ÁŸKZãYàœ ¸ÿf•ù{Èàû€C“¸wá\O’¸8Ÿ©ÄŸéω‹�®5Òw?ùÉkeú%爔`ö²â™gM«•?ùSì씺H¡P(®ðþDÚF8%"ðèèŸßÔdz„RŒe¼&ÛŠ¤D_v DM¦P(ŠY8é„÷ü ó�jxH£€ TªBñÊ@Re yDÒØJÊ(Œq%EÆÊ¢¶"é½D‘D (ca!ÞHÊ®*ÅWö‘TP’¾ Ç–ÔarL�Šc(ËWý®ŸZWR•ùðÓ#>AJÈG>„ÌAÔŒ¤]P”a•ä4IbO)(à4URo>ž)'WvD9ñOc{QÇñt^vº+ÔËúÀŠ”^¨#οå|I€ø˜|âô is!p`¹‡�é³–ô翯›$÷Î__ø-ŠZ€¨BùjHÒ>®^s…!÷ÚB|Ùl—gE&�éûx®ÉóIˆq¯S[) …@‰? …âµ€D|øá‡üûË/¿¤Gñß¾±!d™Ì‘A¶ Ë`¦Ã'°Ô΄»ò²  ”4Bv¨AU„S„5Óh82Y+çÉr•é„É?u�1© z½.+Ã4;]j´ºNQÈ’fÑüÃþ?››¹u.@E¨Ñûþ–;+ôYçKzòÍS^ÅŠ?HEU"þHûdeâkŸ‚”Ó]ù©¾ê«QÁ4â”íkïøWEÚ«ØWT}2Ÿ´Øß™[šòZÆn_2íå—·ü½ñÖ]ZXíUjsz°‚q6|`ú±ä,G”ˆ8m„¼ ˆ?ï¿ÿ>Ý{ã Z_ߤ%³­\kD–ˆ¢AÙA"çæ·ñS‚¢¿Û/Û3§ê4ñ'/+ù ’ ˆP?þñÇæœn»gÏq¬ pa¡åÔ}lù MýøÇ?ž²÷IŠ>Õ><»§ŸR0åØî¯lV¦×FR¬É3Q"ìæ®†B¡P\qHÊ‚ò²ê³2)½'åo¼wñL|úôéÜ‘ÃJÞQ( ÅuÀËœ<V(— L†ƒX!ˆØÄªÑî7RÚâÛ’|2�!kˆ?¦:æ­¦ôADRSI`‘LÖûÄnDÍÜO?&å×-H92NbɼÂüf¨¦Ñ¹ ¸À¹‹Š‘¤"±àÃ̓§àçuêA6½Sàˆq©~“8Îí 5·¶¶Jíè§/’sÆr9îËÎBÐzU}ë’jN`d'× ýí ?§ìë++ɵ†Í–p µ¤6¸íªçˆþkYéWÒw¤úd3Ÿà„ïBYüÕ®-ˆ…è+¸äYÀ:ã÷FOó•}$@GHRBS(Š× JüQ(¯<òT\æD öFä­%ÊÄ7LüOÙ Üǧt‚™K²Ò29®£ÄÀ acÆL:¹ˆ®+Ò%eõ“LˆL"¤æ±õ!>Qùqôe Œ,¯¬äR¸ç†±U‚V@‹7)êF´°Ö£þþ ?GÌ£ùmSnG$t*ØúÅÊk«‚gãÑ‚æOЙE{ðˆ¼Qè¤~2›h,«QlñSS™ƒ ÐÔtQS‹k Ô^h•¶=G"`ʽùÖ[ô¯ÿõ¿¦_üâ¹SÁwv@]¨Á²¸+y®uQls„16OD^ÒÄdP-ù¸"SyãÀk¯À‘_ì‚Щc ùŠF¾ä󹫨4pâ`°Æx“”æ‡<WªË²2Ïì„2¦Ï•ï:ÂQQsÖ=+ž…줹FÒÉ …Bñ¢ Úy·­û{êÞi—©*¤P( …B¡xµ!i±$Ð ˆO²‘ôK@•h#ãÑiþDߟê>ü¿«ccI%*:'•ë£Nù¹N¥§ÏÇxðý'uçU¶³‡žÂ¼9´¿Ù׃êë'Ǩƒ¿ßÉç7`Ø,ÈuBŠT¦Ù;þub”]„¨%ªF';¸  Å!¤àŸì4H� Z¯#„@'d'iV‚ê´bïÑ…“Þ´ý Åu† Åk𩘾Q’§Þ"*Eªä‘+56E5rdÕ_¢V¤s%ʆ?Ùô}†)œ6Ï´ù¢ÝIpd‰ d|O1šÏר³Ô¦Îb›Vn®¹½¸^åm‹MÆŠ“±s,˜¶‹ù)Ží¸¼SE½J]d‹Ÿ:Â�½rjÇÌڪŒPŠ˜©âO”¯ Ò¨ºCñ+´¤•¼m½æ÷ùDu¤ŸÓ¶¾¨þÀÈY3}YòˆKdˆŸ¢®Î™‚þBÈ2þ6âh‘>ïÿö÷¯FîœåTxv ”e¬âVj ©¹h i¸Š³H¾C:îHºðÉЀJiÿ¤òó¸FR¾.ãR´NAL ‚îi¨ëLvúÔ“—Šçÿ¬)¢î¨UÚ3¨û1Ç„¬AÆ×ÏßOí¥P(ŠSÃSžå}õ²?ªR¤P(×J U(§|A*“TB’r Ëà7‰DÈ:,yšçLu[߇ä_¾L稂Ÿê •ód•WI’:µQ·¾²ýyŸê'ŸßùÉ?Eºä#VB•tKÓ®¯¨îËߨÊJ€*³ÿ­ü­°v±©ñÆÜ{ÏÚoê”Éd¹<éÓUè¨K¡P\U(ñG¡P¼–˜e¬ û^&ÒÅ`‘ta2yžQA‚ðó8‹„­0çAöÄ iƒ`,6M&¿¸ƒ” ù‘›M[Âi'gö+Ö1é§Æàæoº$rÜÊò’ŒÚ;ا£Ã}&¤t{]ãlh1 $ð¥tSKøÉ lc>¹ I²ÑøüÙ3&[À9Ñ[Z¢s½|ÂSqĺ²  7¤q€ì¦!2¬úÕ—Ç»5et) Íב1“˜Õ«ðA;4]t „D Hdš±ú¨åˆ!ã“ÏDUòº#ê(ór¸¡‹£Ó:˜+ÄŸÑÈÊ&㘫ë+\>fP!Z Ž÷ÝËrrûÊ_âðš×Üî›k±mÎkâ¢NpoÃyA˜,eiâ‰ÙvwgÓômllXÒš 1×ß6·uÆyá ¹èÂq#ä¾òIÍéØá{¿ N&(ŠW�UŽ|NrÖû$S?€¿}"íô}é„Ú“ð²¾êhV(Š« ÿ½2+0ß´÷ßy¢t*6‚>÷Š×»Âg„熨eà7£á—X\\Ìýš~Z©W/Ë»‘•jpyµ˜¯ä‹ þØþ±kü_{ûÆ· uýv•Oh‘ß/'E™óñW³_ŸÆN|P¤zK§%B˜³ üSŒ}lУÌÅØ9‡V³Å?OôªP(/JüQ(¯=ª0 7 Ú@c¢¦"R’íN‡Õ/&IœÙÈÁPŠ%‹ < Ïâ4ž-M Ô‘åJ;øo4qtÍÁþ?QQÓ©ƒHndÉs,ò–ÝNÛäM&Í Bj)8v£™ú´©Óé1‰ WòXë—¦ŽRmWŒ‹gåE1Ó‡GôìésnÛÞBVV—Íßm&I€Ørz³”¥MXψ‰ ?™¶jµi8Žiïàˆ·£°IIЧÃá˜É)¸â¤öH…@D–Åß2eào´e;Ùã,´Š' | 7TU‚0Wni·[â¿"˜ne_`³çy©2�‘6È œ»ŸK]$sáÔçŒíA¾9Û….ÿ8?h3ÔFf_«eö•°ÈI bû‰ËŸìK¡2q×Ò]„`Ôívx;äCçŠ46uñ1‘ª×Oˆ>BF²×«Å÷¾/¹”µäeŸs¿Ä<ÍsDHVB(DßtsĽÀž×Ð\«CsÈ=‹¶Eš6´Rü…^£ä·Æ~8ô×Á`È×޹&«&™ lôc7)-un¶š|á91ì\pÎçEF/Ïs¦P(§�Þ…"//Do?bwÖ~>ÙÏd‰RÅÆY“"UÒO:š¯ÞÉ¥Ýê«g…B¡¸˜5IX}Èd~>ÆÁNúÌW(®Î36””T¾Ê…’Á/„OÕ_ú*áj.ó—~Nâû~Æ<5\0Û,8/çæ<û³ +Î{úŠ—ˆs_?»�|¡Sâ´MæD þ»¶CkçQ(WJüQ(Š @˜xþü9O‰ÂŽ`olnRË|ƒ‰£Õµ5züè}ñåL Ádü7XÝC&€˜Té¨0 \2“ô+++„b§Õ¦½Ý].ûà8X‡oL*„r„¤[4“÷Ýn› +&KB‚ŽN·nÞa�ÈBü©’~rãž.3È/r\Ðo#z²µgÚçjnÞ¹Ål7iØ0i 'œc·mÏ«iÚzÕ´Úv0Î@»¢4lÑÖÎ!=}ö̃Zœr íÖ4× j*¸®q<aÒ§½ÚXçõ}síq]Ñ®8F»eÉ=‡c*Üj5i¡ge7ÚëÔpFA9uQ9××üÍrÀi‹k~°µµÅQþÅ´úÚý{àÎ@BÔÍ›7ÙPßÞÞf‰^”ƒ>ôî»ïòÙ}ûÍ7ù1Ðnè£ ku„tbÊ:Øßçõ¬,… 7! 2 ®ÃД ‚ÈD÷îÝáã£oomoQ8põAn÷—+ŒªÝK‚"ÔÚê½ûÎ;¬’ui“ Õ4bt:pNrä77m€6Ä3„BüÝa‚[— 8¸·A8ùÌìÀm6@û¢âZqŸw*N€È'ãºÌýÒDæõz]&TI?öÛgum•Þzû-sÜÞÉ'À/ó“™àèß/arZ¡P(N‚Lp ÖOÓjÇX)«.N‹ê*>Kˆz,Ÿõì;>!›•&Yg)Ù¿Ïž&ì<ÐI`…B¡¸þ¨¾;D­ØÆ™ŽáŠ× ©SuD ¿áƒ@°‘¬S(æÁÁá§^J³”®|­Åë{ý‹Æ€OaÞÚø˜k�²lV¤£ÚÊ …âêA‰? …Bá0M “C¢~Ã*Ø˾äN Xužð‡‚S Â>øÀ¹âöÅÄ~Ç‘2&ckXc"I±€¼}°†·¤š´šLÀ¤¿?È#ÖYùÅ‘€¦MZ½4g^0}EÒaõ(ØõéÈMÊŦ}Æû7Î)N0Áf ÉVkBÝnÛe�È;åü„ oßÃñÅi9-[E!7ñ6Ž'9a‚U–b«€òÛPR1uGfùÄyj/_÷Ŷ/ L?AŸâYîÚãÐo|(Zá\? ûâ#éç„pÂd)³¿´Ö¥.ͧW{þœÉ?P£r¶C¹8.ÊÔ'rO$h{§žeë”åªBˆ¬°$6ë\Â6CȪºæìúf_{!=˜ŸŽì2S}‘ÜG§<†¨¦Uùq÷4ΑëÝÄq«H˜RÞN¾Ü¶(}¡]ïÞ½›«4áùƒýð €J’´mÃá ¿ ‰Š…Ÿªí„Ê‹09ÖÔ¢P(®?d%“2¶+ÔwN–U—± ûŠBã¬}ü¿}²Ï<ÏåÀŒuBV¡P(c¾L‡û Åëø ê,ø Ñ3ÒE)óB| +È)Bq}P—Õ’ùƒY:pbé …Bq¡Ä…B¡ ²ã “äPÛÀ;«ÀÃ;¢ #,Ç2QÙÁ¤¼8’" À¾B¨ÀGHBÀ¤þÎÎNNzB˜m#DV q’»PõR‘LX¡Îm§("“ý™è®^Q Þ =ÚÜÜäöD µ‡ÐÞþ‘Ý 5“bIÊéÏ„D‚¶’É2üŽšQNnáßf;¨Ÿ@Ýé8Í’iËíÝüz¢}  ‚ãù¦F³‘O æ¹}‰8ú£¶SǹJàkõ—ŠmˆóBŸùCÔc¤OC]Gˆ=6ÝV——c½Ÿ¶åbÊ“ MüE´Ô@üAcu&×Ç¥}娏^Ø©¬z. žŽpl”BÕh<Î -|’A~ob{© ”…@ òS´\fûžHÏ…:£-p¾¡KÕÅJH.å—Hgƒ¼‡H{¾ú§<3û@áûݺu‹Û‹S‡¹gÔ¾ÄØDYV¡lÄ×/¸ö,¡hÎóÉI?: P(^-¤8€)ë�ÿY,‚O‘>û*<Rî´÷Æ4EŸyÞ3AUYP¡P(Š3bé4Ðq¿BñZcZ™ØH0’B¡P¼ê(eCðlyñKð¤oã—í}µÏ ÅÕ„ …¢LÖCÅG&v0ñ¾±±Á“ô¢~bSEÅ.µŽ%Lø“A>$2\&–DíDH<rLY%Ã,p™8Ô>@ä�ñuëu;œ )§„($ÄŸES§VÛ#¨pª¯ò9¾ðˆñÊáJú8fâliÍ ‚„vHj4CN“d7ÎXPŠ0P9UÎ?nÚryy‰‘iÿ(ä´R‘#¯¬¬,3™ ¨ó º =:êÁ«Ái‘P9¨¤Ž@‚}ñÁ„^¬öÙV›tM=mófÞÕÝ”¸ í6oÜ ÄM^B dªò³›¡P³Ó†ƒŸ¯РĦ†éã(Gú5Öa{´÷m"×6!ßHi‡ã,™Î09ÈôÛ‰é“�Êy}i¦LÄj•HAøÛÖ³Ã$–ºÉVÀWÍáôfæ8—¢öslrµZþ¬uÐnë¦Ðå¹~n&æ^^à{÷ùx<a夘J×C&’Ó&­ý}¾Vh³Û·os;MY²OÓ‘¨D®Ç9H‹�Ú¸ÙhÒtTÎ ›ï| …â:Àwæ‰Â«%ºw§¨M#äÈr‘û–÷Ò,¬?–ReNÒO±=) …Bqfˆ šb27éü•B¡P(Š×�â�êìtÀOwx<K„Œ¡H¡P(®”ø£P(`’è2ðÁaéæELƃ„3 B�’Á¤ Aœð!ªA¢¬‚”Uîß¿ÏÊ(Pý�i¿ì¢LÉKëͽŒÉ¢ŽYBZ][á`cs£8'óÚI8., ¥å¥ÚcðÔ\@œVjm0¤ñ$¦†i[¨û´Z"=G9žÍï8rMK…”M!«¨“­Jê×¢rdš²îr *:¥ZÔLDJ«öCÎê€þwRùyÙîþU* tí^ËÖáæÍ›„ÿNc/tY6×kr[.(¯ ²ò¦S®¯<G¦"¨IJzuncó½gž1 `±b’ù{šr„¿_usy‚“ZÙ'³…^• P(×2n³éáÈËøy-J jŠƒ¯Îù'B?âOÆk \NS «’|Ê©¾æ!õd'’‹ …B¡˜øü‰+ù[˜töJ¡P( Åëߦ¯ÂŸÃñçd™ ÅU† …¡:Ð+GuÛßôXe#ÉÕFNŠð–o싈rIù#iªü\²ØÆHrZ#3 …o‹@îÀöPuI“˜'˜xÂÉ#%a‚> ¢œ¤B^ÞÙ«:aä× &ÃјS9¡ûà<Ñn¢pÔl¶8W'¥tg~º ”1á6·¤Šƒvwœ4K9µT䮇?àǺÁðÈÔeBËKËÔìt¹=Ë­WUùyùm[Gâ™g[_ºßH!…~Îi´`à8#§ —‚SX™}N™ä*N±æÔPTl$Z³Md^^kW²f_[Îû<r_ÐPN²“¿÷?´%îc,Çv˜Tn·›ÜG®?O#þpLÛ-:Õ%´óÔzçõu™ö— lLlG (Y¤îãõ_°HqÇŠZáÜç®P(×ÅØÌ¦¥Äø Ïéíím‹UI´qöÉ8::bò7³>ä¿¡†'iE±éDAOœ‡¢™˜±Æ=ó9Õ»¨P(ŠÓCl-±'Êï¡Ä‘~Êûà]¥a¼ÛBX¡P( …âUDU·¤“ås5ÕÔ` …BqU¡Ä…B¡ Ù¶2)Åæ»ÆD=RÍ3àók˜„Çä¤öÂo) ,¢Öá[È>Pj‘H5©Cè´jR&Ëœö*÷æî/5ZÜVáÜ@ ˜Ha Büiq*#¢þÑ€Ó€!}H&ãјÏ["ø…¼Â$-Ó¦£ñ(_6"V‘‰72˜¨a ]»ðµ2m{xtHñdDÝv¬‰Nî“#D_G  t°¿o <.]U^€þ‰>{xpÀNaôm|p½Ð–(˦VkrÛ·²ïweU j«5ûþÆ9ñoœg¶¸@­¦¹7M“Ìó©úÐN C!Åž!-0 êÈ´Ò|J]Ç2±?®ÑÀL&‹*UQáÀý/7¡]‡öïúyõ[­¦éÛ±Sa*¶“ëÛ Z…Íy¤' …âÚBÈÂxÿCEé&AüÙÝÝåõ˜ðìÅßX·oÞ‰¢‰ýEÑíùóçLúrݳgϸÌwß}—¾þúkNËøå—_Òúú:—ƒ÷)Þ“‘‡ào[òâUØÇ²>› …BqzÈûï¡?þ˜ýŸ|òI%Щüúè£èOÿôO髯¾¢ßþö·ôøáÃ<-¦B¡P( Å«�߯ÎñÔ)ö+ñG¡P\](ñG¡P(<œD�òxà8E““ˆ?€L4á·ìã0…X!Û‰6YR «‰Ädf–[‘È‚X•ŸÚtX3”_èqŠÂªº"~Î?sé¡œê ”HЪ’LŽ’ù $ ´ È&(„N¼}f^u#FÄ“‰ùŒ©ÕjÛ2ùX)%fYêÕ‹&®1AHÆ×Ž\z¦ RÛ“P×7Nʃvâd 郜fçnúv5Ý—¤ìÒT]¿ÙG¤âó>Žë95&{0òÏ?;K<õ.§hO1àG¢ o,+Ò¸$¬â•°BTæRhÅiÌdôÏN§Þd¹wè¿Íõ¨m–3AˆÕŽ"FT§ÂÚºãcÓw[NIÈö}ÛcÑßñ7Êc•ŠÀ¦ä‚’¾Ã0ÊÕ¯ÒqÆ÷�_CÞÈž¼šxžÕ6ˆ÷wP¿*4xYe;¤V(Wò.!㤲™c,<ñ¼•ç*ž»2ÖXZ²iE±-ÞsP Â{OÞ™ ò€@ôèÑ#&¡¼÷Þ{·Á:”Ûsé…8*ÊxÓP¤e!…B¡P(Î ¼“Þÿ}&´þþ÷¿Ï4üÛ¼AŒ…‚ÝçŸN …B¡P(¯/ð·.½·Oü‘ìþޤúRÑ…BqU¡Ä…B¡p˜mí3¼ñwUå$Èþ’–Ë_îÿöÿžUÈa£IQ9¢€Uüàÿ—’ÉŸº‚3E³j„¬\ÍÈüÓp„nk¤ù²iˆšæ;mÙ×UA(ŠŠ ý`ŸÀ‘�$²ræEAÆÛm.ÎNÜ›I=¤¤Âþ|]¿ÈSBTVæÆ òıMÏh9dÙ™¯µŸMH$¢H jUbèøÎa?ç1öñÓ­ñzó £°¤TR ¢3‚Ë8í¹žòhÜžØÄaÄ ¿È=GyÚ,ÛÏŠûŠ\諵¹ÿ‚TÃçoÚ´ùÛÅ™åM×~uÏ›znHqóqОq‚TuŽP˜Y…ªfÐdRœoÀ¢ZíÌý-jViN ˆ<c58]›e5mHaE) ÅU„¼Çž<yÂä¨õ€ÒÒs؃wÖcòSÞu˜$…"£±AÂþ[[[ù³*@Xwÿþ}ž0 HH±(J?XrD=áʪà) …â•Þcÿ÷ŸÛx²¬x‡ýõ_ÿ5+×!ÝRë›J¡P( ÅuG5¥PµÇ%øÛ÷ƒûݪø£P(®2”ø£P(5ðÉ Õå29ÏJ4fö/ ¹ÊJ`‰> ˆ2/w¤ËM¹ž®9´io¡gSO1,‘ D yº½Ž™³mnUìvV1%¨Hrú9zAZàß8HUÈVe‚ PšP#j˜öF 9èsyJßA?‚QãÒÉѱh†ì˜J¹>ˆûÀÏ{ ø¹…øxë¯21Û<ÎZ¦U—ÏÇô L #—Ý%sä3Û&ø@áý³ l#Êá”v5+lcäÒ€­„\åï'í/Ǫ-V(t*fÁôçFFRÚ”ítòZ¡P\#ìííñ3qìæÏXs@ÞÁz�* Búð]¨8ÚçíãÇùYûôéSÞļ ðŒqHHÊ'¥÷R( …â"ò)”~æT~þð‡?äªt¡Žñ …B¡P¼"¨KçåÃlõ‰Bj¿+Šë�%þ( …C»»n (äùÈdü‹‚%eðÇÕ}®)\R%Ú´Ýj•ÖûÃê(l]Ùj:!Cæ4Ыܒ§©š²5Í½î¤ ½BúQpÚºpZ©"•Ÿ¢ŽDEÈEDs*d½T8å›ÌS~¢,´)¹òågú‡¯ÖÅiµ\z>y6L#r_o·éTU4åcòØ6ëTºÌ)ÍŽZ©®óSzUSàéä€B¡¸@ .PÙG�ò�j=UT—ÉöBÂo¿ …B¡P(®:@TU( …B¡xÕà“wDѧnÈÿöÉ?h¬ª? …âªB‰? …BAÅ ®Žüã.ÄŸ—¥^òòI?Yå{@ NÚbÊŠÓçt˜™r, (¢›8È}±ä†ª¼hp•ô„æé[YÔ¼Oú÷ î‘iû¾°“ãZåÕÆ5pD>¿È}^б (¶ZŒSß‘¿/Bô©æœ¾ Ògܧ™#DeîÒ…Eoe›×ÛW9? …BñÊàJªô) …âÔÐ(u…B¡P(Šù ã&…Bq]¡Ä…B¡p˜•ÞˇŸã¨# ]ŽÕÏñ^^À ˜ÏñŶ-± N‘5¿xÒÿMW<X¥ÿÍ4‚æY÷2úï‰]É«P”ƒ8æ¬ëe?.–ìS*ù„õ ïX›åÍtžX¡P( …B¡P( …B¡P\AT3<œ”ÎKƒb Åu€ …ÂÃI8?Ç«¿ý‹d3шœ`ŠS(Q\ 8•ZvþJ3‘Õ~»^eSKå¸gí‡'«†¤T÷›‹’un¿iœ™Ì)þØ~ü¢ˆs®.Ós¼P€'úóÂËìfqÖvT(Š+ !wËûM~ ¦÷ê™Ó¶­SlCºLŽåh‡¥}²,¥óÂWŒ›†ºw²,K’„^.äªP(¯'êÞSçõcøAQ¯P( …âeaÚMuù,Slq{?ë(Šë�%þ( Å)¡“gÁyÆ/*onpì×ì£f3y6Óú‰5¦ /©o¤Ð>ÓÌíS&'eþ¶n}~ŽAP_fyÏKFFyæRu‚êf”×)Ë(«Ö/¼"ίüt½ ç+×5=~úu @ …BqÅÐl6kßÓpò ñƒè‚ôud>!f–CåúÛɶ8†”ýP¿8Žù·³Ñh•œþþþßuu¿žó¨[NC«Õ¢…‹˜V( E:â¼cxÍŒGn8e¹LŽ) Å뉗í÷б²¶ÂâX¸©·|ZðŽÛ2ó³9Ø9ˆb‘?/q, R¡P(® ”ø£P(§ÄË$þäQá`Të2‹hñÒqÖ‘qFÁy ¹Óì:w»Á˜®ö$sAíõ ¦F¸¢«¥Ñ•@PI@'J娳‚‚:bUö‚Òšyä±Z[0ð6Ë<…£”² )R°q„Þ¹„ôú\,é§àõÀÉï;ú3eÓä«Ô*V(W “ɤv¹¼±^&C«ÛžDœ™5N¬;®_žŽ„ôƒ²„”¦qiÿã—ã“~¦€ªu¯;§ºeR/…B¡P\/àY\I.+žëÙl«&œQ®B¡xyP’ôËÄËW§ÌüÀµkˆìÜͧý_a[±¸³)6»[[D®æÛÛåâ;.|ÂÅújyÚ÷ ÅÕ… …â¢Ëfu#W:¦Îâã$u…#¹ØÿêÛ*ðDp¦K†ú†FéšM¹�™x1d˜™ä°šc5šÃÁ‘·EbÐU1’Š€Žã«BÇdÉO# ©]âuAàyF²DÁäA5ú Q(×þ{û4*ó¤›g_V(Ér8g« ÿ{üñ˼iÊt‚W¡P(®'ð\Ÿ™®Ql"…B¡Pœ/k|¬m…¢%_¼w{/õ$›¾´L�*~ß^¡P(®*”ø£P(Î’þà¥GØÔLö³´'/iÒfž\¹×¹² âg]ÛÀã\eµç·I©¤ŠòMU ç<âFçÚwú'G•ßtʉEwÊJ:7fª'y¨®«ýx+éuG«úGdó"d‚@[I¡P\KÈÄ(RZA¿ýô\ÀIê9Óà“zd[?øÊ ~j1I/Vï ,«ûÌzÎRô©Û÷RÞ­ …B¡x©˜å·(“ú …B¡P(®6¦àÊr_éÐWÕmªª½b÷‹ z¬ªš®*®)Š« %þ( …ƒ?8¬.¿’äŸ<«×ùtÓj̽%Ùt\ÒøBJ žä�é‘¢éh~IZs]*l˜ùiÁÔC5K2Ÿ¡¤öœØ8K´™Ëi$›N»þñÇëC¤ŠòÓ&$ŠSKÝV#+-?áÊV"Ž›_Î,_ÆM”§)ªøºªfEêÔ_øL=¢HÞVØ<{‘ò9îøœž*!9› ƒ!è†C\5¬K]Çæ³kþº2o_)óºݦ,ÏŠ~Î=5[0Ÿâ¶â ƒXRäŸ 6ñÛÆ¿± …âjÄûáï4Í48Qh• q@Ê1ª©¹„lT~P§ˆ‡Tuã ß¡)åÔ)�U¿}¨ÓR¡P(^]È{ï‹ê¤Wõ}¡DO…B¡P(× e•ŸúÀÜi*·uvy•4+àF¡P(®”ø£P(tÜñ5+rºÊ(>>fVŽ?sYtZdÓ*e>)¥IJISÜ?¤t2¢†™¼ MóÆi;"¿‹ms›Â¢øpNìœ Íwä1ó¹%„çä’:æ}™˜Quv¦qR°úŸ„b#ëYíÅì2ñ'¢‚<b&÷‚лöÍê¡K{ä§¾ªÕD9…’N±Oý.ÙÌ+[ÓgªÊC^9Ÿ+ËŽ‘r}$Oå%£ê}!©Ñ²¢^îò\”6ÌìûÀï WYrOÀ”¬†UYÊ™N˜´ð>YÖ7Kžš¿÷]ŒÍÒ¡§rsÅÔþ9{à ü«–2 Íöÿ »A”4M·‰p¿dBþ‘"=â×1âB¡P\ȸJÆ#öwÂý*Á¦nßY˜6ÁZ•Õ¡f³YÚ? ³c©Àücûã Ÿ\T>—úw¥O:ª‹œÔ‰`…B¡¸Þ˜ö|û8KsƒH¡P( …âÚ N½§nýI*·ÓÖUçNÚW¡P(^6”ø£P(5¨²¾gEG¿ŒÁ^uúeÖ൞é~Œçq*L›8ÊÌäÒÞî.={ò˜¾üõ?Òáösº{÷.-®mPÖ] ØÔ|<s=&´&æï‘ùògoo†C«®Òéthyy™V×Vim}•Úí6ïƒ3K²”úý>†#n‹È8,±N>˜ä‚4§kþ7 #.¯Ûíò#zúø §ó¸uëuÌòfËŸdK™øg(öÉ! 7‘†>ÔdòL&ÝBN“uÜÉzV7hV·;I¨f͉ÐLiø)Ñþºy'ë¶ó×Õîª÷â¬v¶œ9çØê©)–SœiœÒ$ÝãIØ0Q3ÐYœâçIáÆu:¡ëòoPþ›rÕÛÊW`šr ТҴÁJ] Æ5h‘¢lLQ#²tŸ U^B¡¸öÀxã�|ïïïçï‘••:88àñÆ€¤Ã7–aŒi„Œ³´´Äc“iÀvxž¢ �ï*~·˜ñÖÉr”¿G£×ÇA]D‰H¶­’¥ý±‡À'¶Wß‘ÓÞ•u§—åØT‡ªB¡Pœþ3_Þg€xS¼Óð~Äûï:…B¡P(Š«Šª],˪ó;Óöñ·¯³Aýrý} …â*B‰? …âõ�dieP–U~Ô°)dj<T5Þ„9åëf‘0N;<ÍöÁ|ë‚òr>B®<C˜á™ZTYפX;h6ŽÃÁ`@ÛÏŸÓçøí<z@ÆSH«ƒM:]Ä OŠ5ÍäU»Ý¡ÑxDC³ýÎî.ílïÐÖÖsã\<¤$M˜ø³º²J7oÝ ÛwnS·×5ÎÇ6Ef_ 3A·Gƒþ€…Zͦ%5šLL˜Lbž0³“`+–€ÔsãÆ Z^^1o!ï‹/>7ÇérKËÆ¹Ù¶“˜˜Ë,õBN·!¤Ÿ Heä¥ëJKš\Z°dV Xˆ‚"WðEà"H?åßN 'W½™§ìàò˜»gü%³9ö�Þ±Êä´\uˆ*w ¨•HAljmEïÍŽRªnLPöIbÓg'»4ÊÑ$yJ±é»‘Y–% Îjàãö>iW!ó”¾ü#êJB ªIí&jZöwhîCÜk s4,ٖ;‹¦/·Ýþ-¯®jô*Šë›F+¥……&ÿnnnÒßþíßòrŒ?Þzë-znÆ2K`òËñ7Æ8 (ß»w'D·¶¶¸<ŒîܹCß~û-ÿ2Æ<8FêÆG½^÷qGˆåØÛaœ€ V}°=ŽóæMÞÿñãG¦–(b3&añßBòQ%üTeÊg9.«ïêiøu¨* ÅÅï—Û·oóûãÁƒü.‰ãؽGÊÏÛ_üâôÞ{ïѧŸ~JŸ}öí{}žt– …B¡P(—‰:ÿv]é<AÝ~Õm¯ê· …âºA‰? …â•ÁLîÍ$¥`¿“Ìfô8Ù ñ,+g¨‘Ì?©G”‘Étï�M«D6ãwFe3¨ˆÌ\:emæX*@#¤ Ó‚dN^ƒ2µÃKÍD9mèxÉ2±dþìš ³õMzçGÒ;7éÝ÷ß§ÎÂ"íQŠˆAsÎY2¦ñ0¡,ML2ZYìQ·ÑÆÚõÍÄØáÑõÍçð`Ç8$û´»·Ã„x �´´¼œGv––Í$Z“ëtxt@û<9‡;È@˜ÀƒšOöh88¢V3âI4¤ßŠ'#®Ïhxd.«qxdL�‚2Í!–Ù唨vp'™þÐH‹$UãÈ~€Ð´­M?f&è˜HÑ0]¨MM–öŒ¿UÉ1Ç[Ø·M„œã/«3jNÂñmWî¼ßÏìÇß7'H9•¤êyáwUQþí®n]æÝ‹|Uœ1–„¬€¦ÜM¼êYŒÛ'ß–¯wßôËŠ“>%“o¨•þïæó—„‰é7±¿Çü8q—Ê5ªëʼiE”š™wu£ Ðø©<¿êi&Å#«øÃ×*}Ï<F4שÙX0Ëß6ÛôJÇžVG¶U(W – C¬4%@¨ýàIÍÅÅEžIggg‡I<øã }D¹“¦glllÐÚÚO¤âoL ‚L¢Ï_|Ao¿ý6z¾úê+>λロ«ñxÃàñãÇLòùôÓßóoQ÷Y__ç1 ޳¿¿ËÇÀ'bRr˜…êÞÿ³È?þ6Õýdb÷$e …B¡P\/@a÷ç?ÿ9¿G¾ùæ&²–&¶¼mñÞ{çwøý†íþ`ö-uãe’D …B¡P¼¾˜Ç^=I…¾Né§,£P(×JüQ(¯<xØf&F²ƒ¾Ô6Ÿ0Î(tÒ̃‰Ì'ôöyvü™àã ÀgŠÒ§1êH?Óˆ?]ìôx™(P:$+n†?ìu¨qcƒ =3ÉÕ’šæ®—SLÂdT×”wãî]ZY_¥õ;w¸.»GGf6)aNSÒRl4ÚÔj6(í¶yI¬Ã£CVëjb&Ú÷ÃqÄNǵ½uv@öz f2¬g—CSžM•‰5LžÁ)‰Á9¢ôqJÝn‡U†’$6} Ï)¼†Ã>GûS†´`cŠ“±)k`¶3)¨ÝmQ«Ýt§æ:‚#7EæŸ( ŠËgŽ‘„¶©0]òOèÖ¥ÔägaÔœÕxÞßÇSlHz/iæ4ͦFL“%­Û¶f š}½ë $!ý'"c•d»Y‡Í¦”|]±^{@4’É[ªœÁÔCÒÿÃÚcB퇨OIv`ºëµ’oÌ`éËâ<‚„.•ô,'¦“²²RRÀÌEw½üç åä©úrBóÄßhã +�Ý&üE!&ªoRz Åu„ÿžÄؤš¯¿þš ?g`²s{{›—#-(:¢Ö#*>˜42>Øn43±ûíš1 Æ3‡`l‚öž>}ê¥kšíFü[ð ²Ê—+çˆ2Æ8rܺ”_Õs­;ÿY¨~t"W¡P(^ €È B*Þxï�ÓžñPûÝï~G_~ù%+þŒa_“B¡P(|œ¤š­P(.UEÛY …u)°§)ù)°«6 …Bq•¡Ä…BñZ ë(5Ϋ‡ß|C<¤vœQ3±µÔŒãâ¨õ±‚8YNhÄ5<’P‚ô%µ_‡Ê">Ç @oðÔ.Ä`œBúq€ZMèN¶uc“–ÿä'´|ç–™œZä´VçD°#å§³hXÒ�&Ì0†É2€ 5DÚc¢MTzà\][£3‡Èy(�õ‡#zòä OÄa;L¨}ðÁfÒl•ž™ë:1“a8¢AüÁ�“f ½vjb2omm•ËDZP—© R|a‚FÁh0¤Ý½m®+ʹuû&­o®É™1Er}Ìü%©GîIl?ÂüßÊ5ÈÕ¢‚3;M-·êxô¾|üÈýª!3- ³.¥‡”1½ Ôê„á4ÒOvQݽT>âÔmŠ”}>3¦¶4zU`›¤ iO‹ÊˆN½2ûù¢P(×§àl˜qÁ„ž={Vrêa¼’ Æ'BHÙãx0ÎÁXj=×�˜ Å6ø´¢ ÷`_þKdÃŒA°ãü ÒÆ)(e` ‚± Æ/ßÿ½W߀Ç+Bþ‘4_þû¾ú–óªꔀü²fŠ …Bq}€wÒZ'=בâë7¿ù ¿û€P#Þ ÅkŽéãã—õ|¼`§šBq áûÄ«~ñyö̲‰…H¤6±B¡¸.PâB¡x=02«Ý|ýí'ÖêhB͉có8ñB¬$+™maReج2“(iPLœÏöe5gõ냋4Ú¦±-äãÂï¾KÉ÷(ÙØ  y—¢ã5j 9¾¦<ñR‚TN$ÊÌäS`&¹ü@±gqaSuÇmJ01föoµ[ü߇fmwÿ€šÈ”о™‹Í„D—ð;tª%PóA ¦n§M±™‹'cV1ZY^2ÇèQ»Õb²ÏþþOªÅ“˜U€°Mj¶<évttÈNÑÀT=lÔíuyß<Q’9O ùÜe)µÇ,ÅÃuÀd]ÃM¶a»¤¢¬’͸joó¢çXçB '"ü±-Œs¬ †ôSì$ƒ|ISš 6˜l3·ËÕwäÛÇ£–\ ŠÈª¬´,;‘ËP™¼RUrý8«k#,‰¼ãEfëÈ[[Ô';¶wà5e6£^5kJ«pso™gRÊŠUT–bÅÛ'à O9M]Ê“¿Ø3Éââ©•á^lp_‚!6ÆF±Ý6,×ç8©q:ÔV(WòžlµB~Žƒ¬ƒ÷6>X.“œ ä° ƒl ² Ë ùûU!©R@à‘}wYåòòîß¿_ÚÇFu÷U~Šõá±hÇ*éwZJ0¿œºåu¿ …Bñêö²B¡P( `œ,jiÇëØX¡x¹ðmÞ“ì_ÿïi$ š±J¼°Ü÷µë½¯P(®:”ø£P(^ „“1‡û=øžø„VŽh£2SJ\äᤠ1MPv óI}|§5Â.Ó‘Mÿ} âÏ IfîRBa攇L»¤þçæwÆ‚6Lœ+UªìÏÔÇòjÈ?#ÝW‚¨ôĨgD®//-R§]Nw%©,z½.§ÝB¹Ø·Ýíð7ŽupxD;{{´¹¾Jo¾q¾ûþ;zj&ÕZ­Ö×V™¸ƒy·Ýb’ÏÞþmomS¯Û¦[7nò1@Œ9:اçfßʈ…@Pih4˜É¿C.‡ó†4¥ÒÝ»wY™ÈyRs¬‚bd| ®gk”Qo˜PjÚ$ЍgÚ³m_±“ ¡I˜•Ûf_½¬öÊÙë“Ê„Ÿ`œdE™UâONßòO¾ÂF5,™¬²ÝIðÉ?®€b¿SØCuù”«ë/£’úÑÉY'+#óHW®ÇÉ?OËÒ4ëòG6(vä÷l  DÊÉ2{ ²ê Ð컷¼™~˜¶)Kž<æ[Ù«S@ ×JAr ;ði¿&“ÙG$Ìz¦“/Ñx‚”1#jöv¨Õ9br^Ô´ý*ŠfS3* Å5žûx×Ãao•t¢<Eh5RPP%÷¼hXEÅr¤¡ïà¬û]‡ºs ¦ŒN[öECª …B¡P(WàãÂ8uA@€Ë!”×Û€/¾>)GÆn²@j[_YÓ‡_¾\Vär…L”_ÔÇ©_§. ÎKÉãÇWæ‘s¬#»gž5ÏÒìÆqÂA‡R·¶ñ‘¬®´9øðà ¥Á0¥„}t¤P(^"¦Ù·ÓR~ù÷ÿ,òÚ£ …âºB‰? …âõ�”X 3RptDÃj¹I!úøÄŸÐç=”ˆ? ú„¬ôb“§þ3f /Œø3{ψK0HûG¬ŽsúO …ÎðŽÂ<*ê>ŽM]!F;œ0ä} ÝX³ÕÌö†Yß2ÛAi5pZn?8¢ dŽ t|ºÝ§-»sû6ݼq“Õ„ æƒÈý/¾ø‚=zÄ)5Ö×Ö©cÊé‡}@BZ[[ãèFLðqô½©Ž ÒRÔŒXAÅÖ+p™»Ëë0cõÓÖ“'L:Š–:Ô]±©ÊÂn“Ns]ç%Ž•t£¼T[óà,ƒ§ÅüDœbûÓ®¯.:]‹{¸LZ’µÓUyÆã ;²†øž óAü_ }$Ÿñ$egÄ);Žà´òWRgqQ‰Œ,>’Æ¥ÕFJºÈ’y‚ ûšŒêÒÌÅ…šP«Ý0}>2÷ÆOjGM3©Ýp¥sºº‰9~ȸÁQŸ÷F–§¦´´62Á9çZ&ÄŸºVSÒB¡¸¾²<gíDž½Y¾ü*c gž(ÄyÞÍUBíËpzª£U¡P(./šÄ©P(®@ú¹sç§µ…:¥¤¤Å¸Ø'ìDQT»?öÙÙÙá1ôÍ›7¹ICë¯àcÃñê „ŒùDSü|[[[\ÞÊÊ —å¢b RÎÁKÎ_†Qž&ðI@BBB™rž¬h•Ó|ìc hv¶?2þ’ƒ½} G¼~±ÑÞ0u‰2úþû=O2:šJüQ(^0ªcß~÷•{€ªM;oJk! ¾Œ�…B¡8/”ø£P(Š ?`-†î´™º;ÆX‡ºŒ~ÔX_;xfšâg @.Ð6ßÛÛ۬܃²Q”“ˆðÙÜÜd¥8}Kâyøð!ýæ7¿¡'OžÐO~ò&õ˜ðÊ>͈Z={ö”€†ã!Ý6Ûml¬S´¨%s¬\$Æ4ÒxBã~Ÿ¾ýúkúú»o¨¹²@›woY¥£î2½LTÓ~øËOÚ8—ü3ËК÷8§%PàLf œ@»Æ‘µHtà2Ápz-JLÿ ¹OÁùsx4d²ÝgLÃÁˆVÒWÅÉÅûËÇS¢€Ã ÇZXlÓâb—–––Ì=Ô¤gOLY1—âÏjSÎÛ´¼²h¶ëÑãÇ™„¶º¶lî——)“ˆºLh{þ|@ß³oœzmãàj›Qá„Z=âr …âU„ 0¹ÒLl�i‹¾jð£}L“3¯Û¶ªä3­œYe( …âjbÖóz–½T¶;õñ¦ÉÖ*Š+øâ ÿ‚b„|#J;c;ëÿ*Ô3„à#Dzø7àÿ˜xÊ8€oàwÀq€jºZöåqÐTÆu¨î |ÔÕO¥�­˜‰JVêÁvBü‘ºI ÎéÀøQG Ķ8Á ÏD¢Èù¡F_ ΩÕlÑd8¢db CK zëÞ5ÃŒö¶ú´·7bõ…BñràSβ‡O[¦OJÔ`…Bq¡Ä…BñÚÃ*~yú®‰ÜÅa”›“‡ÆØë7äqp²¬ÌS )K´dS”Bæ­I=Š;.Í| i kŒ×5cü6`4g5å\2l}\¤0bÅŸˆ9r&´i„œâÉ4pF$÷·B2†ñˆŽ¨A^w™’xÂË‘æ+4†>Ô{àPXYYe¥!¤ôšŒcë0ÿÝØ¼A?ÿÓ?eåŸ{÷îÑÆÆ&õŒs� Dõì=Ú¥¯¾ü’ÉptZPZ¤VФ`”R`&i”qj·À¥Lão¤7ë̺15S 3‡@›VM-ã\º‡.vy»\B˜ÎŠRBºüo8:¤­ëëó%ùÄ!]:N"ä\9#Ê]¦À}J«ÐßR¤³#jw[´dN«Ùά;—R&þ´;MVüYZ 85‹ud5)ž€ðch¸Ì3ÊXr_l`¤¢á„jÐ$n˜ý:ÆÕ«¦éã–,„m.dæ6O&…ó¬Ó ÌñcŠL¿^,QwÁÏ·efŸ€É?vÌÝêZ‘¹?1ク Ç™ßH6¡Ó!¨ü­0…Bqõá§'Òãe½—üCÏDžOYÇN†TUùªûKùYCü™Fþ¹(‡©B¡P(^f=»O"w²ý3%²=œQfþþQæBq­yt¢‚ È8UÖ ¡øË  #*Åðq òšç öƒ¯Mˆ?¢¾#”/©ÀdüuB"²þC›êËG¥ìƒk9Ån<«úƒ!ûh$° ð'î­j²Ù®ßÏÇû¢f4 ibÊäå¡X¥¡¶ñ îÐxdU@@‚RR#HéóÏ·Ì’CzÝ¡öÂë—â“sDmlZÐk[Míåðìu`%ÿ(Šë%þ( …£qÈDõ8lÐa£Åé¼`Ž>\ìÒ³n+ßÖ˜§×WÀ2³€GèÀ,|fœÇ&]¦8ÑÈ "KÛ“%#åû‘uÄÉvYšPšÄù¶LT0ÿðrÃ¥‹qB lç(JÁ £r.lÈåzçâO«ÑâST^ÜwžRÈ”—ÄPîéÓÞî.«ô õˆ?¸r£MµÔí´iÕç õ<{öŒ>ûò+v�4¢ݸqƒnܽKo½ùf݃Aüp0`µ ¤û:0ý'¿ýÔªô ½Wo‰6—Ö©˜k?J)ç92D›óstË („šË8¦5Ó6È6Ìf­ý}3«¸HagÕRË2û9;'B ‘,'íØ>Uí[Õ ¿:ã§ü}Ѹ֓‡BüqËõ²j1E€UsŒ‹sˇܧàT"&ÖXÙhLìvlîùŠìì\*HÞ&–¸U,XÛh”î“òýmŽ$´ykÁü½`Ê‘i'ÇHhy-¤»o-xû†^Єèt5¨|+ ÅÕ‚<ƒ}‡Ÿ8 eÒbÞçt§yïUI@'³kVQÝwžI_ÿüO£º§NO…B¡¸¾¨¾+JïÏD­{Áš™ö–ÒwƒBq½�u(\ D‰GÒ^‰ÿ"ÉSiY?ÆÊ’L&ÛA¨©>@’òð÷ÀøÝ¤<æÁg Ümlù Øô¡ÌcÊ  *¢áˆ†¦ø‰;&Ò˜ )~!¡NÕg—‹PolÇ©ÐÙkÆÿ‘­È?X‚PÑ µØ÷Ón´¶ÖeÓÍ[5{¦ž'Åiï¨P(^ª¤jZ¯lJª/û ©·£«Jg²NÇ; …âº@‰? …B10 ‡ãíÆ#ÚØÇ%Æx˜Zã-úÑÿò¿ÐÊÍ›äOÆì|öÚúÃïéᣇœ“€¡¹¾¾N·Þ}îþüçÔEDùÞÂÌͼü=üäzd>Û;Û,? ÚäÍ{oÐÍ·ß¡•þZ=79ŸÙ8ºÏþ·¿¡oþáÿ,rWCu&°2¹Ëd°¡Çz‘@~mŽžO6°Y²7#":Syˆøyúì9§ëÚßßgõ’v§m :KË”t{ùà†ûýû÷éûï¿§?þñ¼þÆ›ìœÀí#ƒ{äéF*¤çÒóçϹý<x`Ö iue•67Öé]\·[7i©Ñ¤s]VWWiëÙcúì¿c"~ÆžÒäÑ3¾¶‹fê|ðÕ>¥_M{ïÐúŸõhµÝ£Žqœ•á8`¹c¡­_5dêÖU}¸ç!ýT÷­Ú?³&¯+Ø84}»é¢ß2'ùeFâTZVȪmAõ§NñèÄv™ãÂäe:b’wÅóý™øø+=Ó È”¼£P(^Aˆ“‰ ™(˜—<sRù³–û© |òÍlˆ“1›©ÖàG,úÛùäÓÚÒOH 6k[…B¡P\}TßAµÛxÿÖm‡7g6£l…Bq}�ߨ£Gr%€I5žà§öDÈO È?>°^öÃqÄ7š¦’ê‹hŸ)¾œXœP"Ù7!ß<_öžoQ�Ev&ýDÔîuLý.“ÉóŽ�T<‹ŠgRèÆý8îd2æ ,†nûI<áßZÄ^#nŒúGæ¼à+4þÜæ˜nÞ\ä B(=ÛÓÓÇ»ô|ßìÿpZÄÊô‘¨P¼pÈ3K;bç×ùc% |�!2Ê>²NÊr¤ŸªðUôy+ŠWJüQ( *;±`ò¥Æcõ ?¤Ý,¦­´Á‘!Ó NõÆ/I÷>úIêàËÿµA»÷¿§cHõäÁèDº¨æò2½qó&½ñAË ”>zHáâ…7nÐá`@_ú)=98 ÇOs9767éÞ~Hk?ø½ó¯þõ66Kõýúë¯èñ_ÿ©ÛëR»Ù²²©y”4h5ŒñÛ´ÄŸôŇ ÈäSœ ÍÖ(ÏÕmħ³‚±ÏQÿˆž˜v98<¤á`H ‹ ´h–ƒ�Ô!(ª¤”Ä µàtÀçÛo¿£o¾ù†îܾC ¦ýA¤ކÔHšî:fáôä±mï½½=V qèáÃGô½¹†½N—SŠ=5Ëߺwn.-3 ûÐßÿÿ¯Ï\£áý‡4yüŒ>þøcZ¹w—¶vû´½ûœv¶·i¡?¡¼ý!µ7nÑR–QH‹y­—Iú™¾Ý«eá¼Ã 0(Kt›  �ÚIÖKòøT²h1¯'«¬Ïÿ *’û’ nŽÃón©P(× … ›D"˸ÅwüöÝ5p[:2Æ�Î)iÿ¶©8}bÎYR´Ì»~ÖöUæE  …Bq507ÑT÷ Åkªâ�D ?µ¶ƒ,¶yÃóõ€Œ£¡æ#ã[¬Ãþ¹‚ð.äB»|)§ÜÚ; f¨—G ç›Å£x@©Û/2>À4°Ûã¸(¿á¥øª:KJñO5€òÈ?Ø`˜Ó‹;í€VV"VrN³Äø&ôôé¾ñOnÓÞј&IÙÝšÉ?JþQ(^|åB_ÁÇÿT� ¢®S’ßu)Á|2‘ÚÈ …â*C‰? …âµ}Â"•ΠѤýV‡â”öÛ)íÞ\¥½[«´¾¾F!Eôì›GÔÝX§ÑÚ Ñê"ù†áóµeú£û|±²ÂË—h¼ºB­^‡nNÆ´= hßÏ Ý­š}¿3ß\[¥¯÷VéñЦ­Ú^]£EóYZ_§»7oPo³Lüy²¹N¼¹I|ø­mÞ øÉšììÒ¡Ùÿp<áÜ×Yz<mÖ‹�;L=93#}9fú¯Œä„Rf²é¡4¢áh` û#êÑáÑ+þ€T4ŽèèËûlø?}úŒ¾ùæ[&aÈ#D!j Ò¼“hbœMê˜6‡Tðƒ‡éù³g4žLØa°qó6=|òŒ£ MRcüCšøó/è�„£ŸÿŒ:›k´|÷&ý°Û (Ñ£÷éÛ¯¿¤7oߢþô‡Ôlµi·P{ñm˜m ‘M‹«´pHËÆáqãÖ­3¿yY=+6ßè˜n|ø“’¶,ß÷[·ß´ô`µ¥—Ê¢ÚºWm⑉?aU9!OJç¶ üŸ§)=ÿËF‰³=UÂöÉ‚ò¦’§Ìíe <ejãüP¯•B¡xµ ï>qÚayWaá,ï›:MÝ6â`Äq¬r&FRGš¥´C3ËŸ¥T÷·ü®N×Õáe©9¨3U¡P(.Õ´@žB<ÓÔ …ÂBRsÁŸÈظº^þöU2|øÏ•ãëƒÒ¸Dù‰±q×øbAü_b'Çê¿öã—S|Žøƒq¸¨j QÉß!M͘ݔß?Ú6¾Æ!ö‡ÃØ|Ʀ#·eV§Ïku8ÿU½MqÝàûÀ}Bà“~êTñe<ä«ù�ð ÈsMž-U’Sï…Bq•¡Ä…BñÚÃCDdNÉcFÔo´ÌÇx í-öhws•zwïP6igHK ‹/t‰zæFìYö�³ü!Ö³âOZæs«Û¡ÃFHã(¤'€Ö-ÓlÒv§cöY0Û/Ðã›ÒkÒ[ Ûæï-.Q¼¼L´²\ªóÎò"Ý7Ÿ;oÜ£øÞƒu”ÄtdNÙ³Ód\k^°Ñ™G÷pŠ/Kú±iª âÑ<Õ’ÁwfÚÝ ¶KhÀÞÞ.;#@ìÙÞÚ¡ƒ½}ê�Ôz>ÿüsê™ö{ã7lÊ­ƒC&ý@–·Ùn‘inj¥-V$B”ÓÃGŒÿ”nÞºCï½ÿu̾øÄp*Œ'”ììRËì´}t@#S—ÖÒ"­¯,ÒF'¢Oš sü-ºñ–Ù÷ç?f¹áÁÑ€Wi9hRcmÆæ›Â†i 'i|.EáH(;gëÈ>Ó<å(]ùwù¸g3fªe¾2Ñ&m«çQý”¾Ny€üßãÑYí/«øL-í8éGû …âõ…ïü“w“L``²ÁWä9kù'[>œž pOꌦ*Ó–×MÚÎRï™·Ü“Ö) …âzA&ÈjzÈ —úTBñ:¡cü\Heìîîr 0yN�¢ˆé«$ù“ȃÇ×{©¸Ì§ÍªØvýZ»A?XnP×l²»?¢ÝAB»IFçrEJ®ñ$Ë5ב ,ËIEÁ±ògŽdÝ3O‚¦dâ¿”.7!J&P}iggïR(•ƒÀŽã²ÇÒêßQ¼¾ç“ÿ\ûzšºªêã§÷jšù™ÅÅEþûàà€çfÇ(ùG¡P\e(ñG¡P(26Û‚cKA.yþü¹ËgÝbu™³D„CwóÆ ê-ôø÷òÒ2­­­±±}꺦6Ÿ6êÕýûï(ÛÚvQäç°æí²ì…ëu`°ŒsÙfÚÁsè)*Í œ Øöxß¼u“Óšað=Ž8-Îމ-sÞ‡‡Æ`£’67oð>p`Üÿþ>§ýB}@üÙ¼±É#J ´ÿúú:Ë#¢èáƒÔívé§?ý)íìîÐáÑ—µ´Ø£¯¿úš–èÃ?¤ÍuZØÜ¤?ý³?£·Þy‡–7–hqm †fÔ¤•ÅZè,ÐæíÛ”4{·W©·¶™§™Õî•eõÿuŽ–ij@5­ìʬwÔ†æOóõŠ’ÎY×!ÿ÷Ô¤°¬téÔîT(ŠéðƒcཌqŠ,—Ô_’’À¾¿Ï¤,ÿwõï*P¦Dc,"ê„Uéð:ØmÒÒ1ªæÓêtR½¦áe¿³uòY¡P(N‡“žõ³lÑŒÊ~Ÿ«Ïc…âÕ|f?ûÙÏøï_ÿú×ôøñãÒz<3f¥þ:Šç R{-›çKÛ-{§•Ñ¿ºi|zfÅcóúÚ,ÿt@ôÌù7'™ñw>u¥M_rru²©«Ò,8¾:+¾Xñgæ£÷z8h¦Ù ÅUžO°©Ñw…´è§ñ® ¸©®óÉ)`ccƒÿÆsN‚ƒŠ`…B¡¸>PâB¡PHÈFæÔ10áÓjP'ì™™™&-¯.ÐÒò‚vÍÀ²IkëÔîvèÉÓ§Ôl7m+7¥×íÑí›·˜œ÷¶ÝØÜ¤f£I‡»û” Ç4>8¢ƒÄ®‡²ÌŠ1¸oß¹Ã)¬PØÊÊ -./Ò8Óýèàð WïaãÒÔ÷®Ù¾×µªB­Î…‹©©_Híሂñ¾5ÜÜ>ÇÎ÷'!&Ñà ²¸!tX• €‰8|wM;.,,ÐÖöŽxïÎc<ùt8-XbIF óð±1Áf–Fã|0”^GG}& !mÒ{µ¡€mè°?¤å•U¾ 3è_1ÛƒøCYBODô-={úŒn™k³hê‚úܹ{—F‡t8Úçˆ#äO⠥浧hq™’î:5̶ažtÖµK“€<b× m;Ÿ£VŒüãû¾ºäŸ\3§²,+/>¦T5‹L7;Òm®±"ÚÉï+A¥º)•¼M¥2fÕï4÷að2à …âR!D<“1>¹qãÝI׌˜ñÖÞÞ½óÎ;üAäó7ß|“GY€D åÀ>ú(OöÅ_ÔN¬ÊñàÄxã¨ÂÁˆŠa5UB³ÕyüwvuÔÁßv^脯B¡P¼¸yó&ÛÉ A@ ¾ñþâiüË¿dÝ_ýêWôÝwßÑ©ô} P¼À˜æ#° xôè?06Ås�cVl‡1+‚úðÁxy{{›Ç°ØVíØ~3<_�<S°¿<c0þÆþXޱ3Ƽ˜To˜mÀ–£—ñÎj›>ÚìÒ­fBëc3¶6£ƒv‹²AÆ€‡qâ¼Ezõã©Í ÌóÄ:ÉC’eÓ·âÏŒ½ç<ŠB¡8-dîÀ³FžGó–…$64ÊBÀ0€¿«¾vµ‰ Åu‚ Åkk62{„Ó1‘™¯i,v¨g Üv¯Kã»·h鿆3€CcpŽyjýýOôÛO~K3Æ­“,6FíæÚ­-¯ÒÏþ$¥9cC7Qdöùõÿöw¦8TB“fD“vÓÄzç½wé·ÞÌÙébˆÒßþÝßÚèó@¢Ïí¤ÿ_üùŸ³aÝ ´xëm l€¯?~DQÿsÊF./·;OÉ]íx—מŽAϹqÚÏi‰?™G¶h™6Z —£ CËËK<?ÚÜ`‡Áîî89¦üˆv°o ûûLêyç]Ó¶o¾E›ÆÑ9 éÉþS³ï‚Жãñ„ AÛf‚oÿ¨O¦œ±ÙêL÷Ö×xÀx°G¿û†¶ž=7“€_Óæò­¼yÏœr~gôdk‹¾üU0×ùho›:æû†9æâÍŒÍU^.½-ð•{ÏqATâX’Ílë\-¦f"ï$ä ôH{W8/ù§¾ÎÓë3ë÷Å £Á§n]ÞÿRïSÈ8O­U”¶; m&óœWY†Iæ¦[×nBB´É¤ˆsc}y¢¸$½m‹È1xQ¥_* Å+_âã.D;ïìì°úŸ¯¦ƒ‰ƒAˆ1&4àÑ÷îÝãÉPà÷¿ÿ=}üñÇ<æyóÍ7íÈE¢,qF.//óD‡L~`{üþãÿÈcÃéÏÝìRД½*ŽO¬P%ÔV …B¡¸Ú8Év»îßý»Çï¿ú«¿*¥±¨ï¼ýèGô®±¥ÿÛûoôëú'»è÷:¨º«Bq}€qí;w˜èþÖ[oñ½‹oø¡ˆ±.ük§âY€ñ°lR<HB � Pïý÷ßÏÕ2ðl¿„zl_*ö‡ŸîóÏ?çñóÓ§O)2cß^Іñ»â¸oßêÑÆZH+ÑýuwZDïÄ”ì%ôàÉSf¿|"ì²Îáµpcb¯U©® 8i;…âEÃOEˆo|¦)èʲêü„oû‹Â™ìø Aj+Šë%þ( Y{1„³*°A(þ,­­ÐúÍ›|ø>Ý|çmV…Á”ÿdbŒÎ‡éÿñ)69767Ø † £;fû7ïÞe’ÉêÚ%f®~9jüÉ·ßÓg¿ù=MúCLš‰ûÝlB‡ŒäÅÅc€w™P1té¬ÊKÒZ¡^ ö :ïŸýâÏèçú/¸NQj&§†DñÎ=yð€–L]¢ï›¹H“’¨²¼ð¹ü)ysY8mæ2á§'g•²"SN›­V›P ÈÆ)0±ƒsžh#oàü&ݽs—÷;88äöÃõ€3Û †Ö©�RW·g®A·G-s}Â(d5&¬ßßÝã‰?\c¤üºg®ùîÞ"Óúì8Ý1å=4“€ %õÌqÒ£›~b|”4he-¦ÖY~Š-]ž¸++'åW÷Ë(–I*“²‚P•ôsQ䟫„\ØGÔ‰‚b·­“á)¤N*ít(ÈyòmðÀ§6©µ¸ÿ[™mL§å½}¾Ñ…HM«a«P(^mà"ÎþðV5Àß#à}…?üÆßØŽÇmfCÒƒa¢CƒO`\‚ñ�È@[[[¬>ˆÉ ŒáD6ï”±ÊòøcÄã»H½YjÚŸÀSçŒ,‘@§¾ÿë·—íÔ©¯P(¯ð®Â$<ÞO ·âýUz—xÛbÒó ¶~òÉ'üžRë@¡x5�:ˆê ã€�ç�H@¿âƒ1'|_˜DǶÇÞºu‹—cŒçHðÛ››ôöÛo³ªÆÊxÆ`ȆxŽàù‚ý±ã_<{P~<èós¥ÓjÒMã½¹±H ½ u#2þÔEZo´ÒïQÏøû¢pZªB«^*üæÕ—€â Á²©³ueß_^·�eY›<ËÕƒ¦m«P(WJüQ(¯=DM‡a„ ëº0páºòᇔüô'`Qš¥L2A )º‰1\߸{‡ŒÑŠÈ—e—þ *3oÿà=é8êñÒÖƒÇf›oé`{‡'}v&Cz<8ämadß¾}‹ÖÖ×P#Úzþœ bCdpad# ŽóþKúgÿüŸ3ñóÿáèàÑsʉþð{j6Åà–¼*“.Þ0ÎÕ„<©L(å„”äUç);ŽV×±©4šÔéØÁ{<‰sÏL¤9rTÄl 8+àXà”i‹ËL˜‚cÛ -1a‡öEX‡e ^­ß¸EKf¢jO¸n’öãpo—†G‡™ÆþꫯèÝ»·)þéÇDaÉ2£›°d1™ºaò/í®ÒÂ)r Ÿ0ïG¾Â|O›ðó'÷fEöû¤Ÿ:e€óò®7G·›G}à"xÿ2-Î;¯ ¼í‹ “=„üs6Ì$eÕ0vз0iÜnõ¨Ûî±S®ÑèÖìKy«MªP(óã믿æ1¢…LƒñÆ0»a ÇÆ xG`€ßø`ââáÇ5ñÆ< a¬fÇ/1ãyŽèj–EFcŒK€“Twì7ÍŒ`œg< ðÇfÓŽ­NN…B¡¸^8é]ÒÏúOÿ‰æÁ?ýÓ?qš/ØÊ@¨ï…â•û,Úû@͸ð½÷Þãq)ëør ¨hÀ7†u ݽ{—Ë¡À2QùÁ~;|ËXÛÁ·‰g|t7Cõg?ÍhœÙdåK½.­,ô(jöÍ1Û´´²J=㋌70>Øäø‰ð¾çñeÎÃsš2‚Úr^wg3~M‡\‚ÊwVù~5™Sù©º]pYU  ¾Ÿ°­H:m©ži~ Lu^¢<‹æà„�T}ä£P(®”ø£P(˜1eÄÙ¾Ì?Ilþ›jBM36l"OõÂ",S^6¢VÒÄŸœºÁ 0³O<±yïÍ&OîÀPÎBkDb¢§a flI#̃RsòàQã=cäJ>ÙA¿Ï6ºdUçšKÆ& ^ÁRh÷ú|ìÀ‘_ð±i~,qÝ4'\ùÇÿ;c’T>äˆîß~Ããëlê%V7)+ù:ñÀ=°| øÑ&=ã,è™kâ “Il&ä™É¸¯éþýœÚ«ÑlÐêÚ:Wx{g‡&fß!¢&Oîµ[mZ_]£Õåes†œn`Ib&îŽúôðÑczðø =ÝÙ¥µÕjöèÖÝ7)k7ÙáÑ1ûGã .B ·z“B¨8â“0ëê¸Ëz&L‹ì/H/õ“ƒ²íyÈ?WÛ&ÊÊ•O&é¿wq‚zëõXÇ jŽ3ÅX&(UuM_ hbîñ'Oºÿàˆž<92†§¹¯ˆÊMéƒnÑí[«¦_oQË<œÐÏ;Þ¶LõbWV¦X …Bq €¤ãÑÉøø€c±#õb\öÅ_äËA"ªbä”!( a耓ª6Õ+åëª#Ó¯û¨¦÷ª::ëŽ[uj¾,ç¦:U …âbpÚçiÔ¢P(^9ˆB7|“ ®[_Z/_¿ƪøic^×á×% lAoØ~8ø7ŒEÝR&Ô‘6L‚$òñŸÁz`†ÊÛã>¥Í1¯?ì§Æó1|{jNŽœ;¡1Îâ?©1^Lwi).u ®¶ÃãÙc–É9ò]µƒ};ºšÆ v9ìsù»ªäÛß …BqÕ¡Ä…BñÚƒù`†c‡ïxBÉhHéxÄSb–%ÈF6»Nc¶‡?édLclk–”Âé¥$glj£O00dI\¤‡à”Uó)àÈ3p„ƒòÄŒ¨feC@”w(ÏSäH?A˜ïd)]&d0 ²’0îy9)¼ífŒ>±Â ¬“옚K�"Õ€†#›Š·۷o3é Ž }þøÇ/èW¿úúì³/èÞwèƒß§ô‘Ù¦GÃO?eˆ?‰©P{wŸnݸEk+«´º¶Ê× UGÅþÎs:8ê={N?¥ûæ»…|ç›7è½µ5z‡~Ĥ$Ô5!Ï Z”…]s¾È/ÑI˜¶É4Ã'äøÆHÝ„Þ4ÅŸ“PGþ±ûNì©X—?r&-¹§|fÛ¼ÞŽ9·Ëšæ1³bœb;Ö>ùýýõÿïž<éÓζ1dà -,ýßú ôÁ›tt¸OK‹}Øz‹6Z}j…ûæHó«J) …âåA@§CvbDå,ÔIœŸ” LþžFºl¼¬ã* Å« °R(®.S D(V‚à…K�©¿àGQÄt°Râ¯÷Á01èË/¿äí‘þ ¾ML”ƒ_(öC ¸ˆ±¯L¨C¡ËDES–}÷Ý·”l5hÐiµaýˆOÆ!=?ŒhÐO8د§Tý96¶ÌœU‡œ}ÏÌÆeÞׯ¸ k¸QÓró¹ŠÔÎUé'ts8X& B2#Â@mT…BqÕ¡Ä…BñÚÃí€Ö î4GV‡ííÓdë9ì’46†ð€É&KK‹”dÆXÞ¡C§Âƒ}À ß7ô³'O(1ãľÙ†.”z 4Y°A¼ÔŠèæB›gν½CYj'9vw÷X­ƒKI'!Q9È›$)=1凯¸nPH­~F£­-J Å{Ìð-³Ýù×%Ú’ÚÆ|<¶çÚî´è<Á9Gù@”Éœ?6ÉÀÑî/ß?8´†Ã#zôø‰qh<¦Rß´á¶‹âo6š´¹yƒÞzëmêv{ôÃ÷ß§¨Ñä¿oܸÉN´áh4¤õµ5þýüé#&yáXp ¢¡×ãrl»†|}˜œdúA*äs…RG™+@fŠäOÞM+Ñ÷~¤‚ü®F"T'ñJ‡ ¦G+U'Ýʤ¿" ÉYñòíÞì„åç ošraóuH;74Ž·§¦ß-лï|@++G¦¿îÑÁ‘yÄczö|ÇÜ[cÚÝ~hž?®mÓ{ïÝ»Së|·˜B¡P(®4‚ZòNæ‰FœFú‘ßWAÂ\â …B¡P(ø¿ÿþ{þÄŒ¹à¿â”}„¿EAvðí=zôˆà×4€ø-)¿àÃ6øàDðÛÉ„º”˾<3Þ˜eÛÆ÷9ØÝ§½C¢ã×X´âç´—†ô nÒÞÄÔÙøcÖj¯xUf¹Y*8ýd}@ePõ÷¼˜åR(^u\|ÿÏœô¼JûËeþ .àE¾ýõBü‘ý„ôã§ ²B¡P\(ñG¡P(Èú %:ÕžF£Ii’Ðà¨O{[ÏéðÁCÇ�Oh8±Fëêê*“;ŽÌß šHT Øí­-|&Q`¶3QF/Ò;.-U³ÑB§Áû‰”v¿o >0¢Q&ê…ýDfÆ6Œp,‡¡ƒº•…´ØO(Þ> ±©K»f0ZŠØÎ.ϸ”A1:Gý#ŠGNGt–2Ä8@Yhƒ|€ž¤LŠ‚³meñgooŸvL["8r L›‚DLÌáè¢Ã#VòA½°Ï÷îÑâÒ’ÔGLÐAJ6ª¶··h8èó5ñç[Óö‡‡܆ûûôùç_Ðí[·è£>⪦”XâT²ŠBÌ)¸f©ûTÉ=uÄŸcåN!üØï¬v)¯Žü#û8{ËûûôýëJLîÂatÑ`ª^š™þ54÷õ3 Â%úÑGšþ;âȸîÓ³gOÌsbËôí‡ôüÉ6-.âYS»Ù¥›Güy‰'¢P(×§}MS»lL«gIeqŠ:д:*ÉF¡P(gF½+§Ã´1ÚyË9 ào¥!ðÀ¿_(Æ“øþî»ïøo!õÀ—†‰pAÂ߀õÀp8ÊÓߊz†(eÈd9|z’ªKŽòF®ÛÆv`š 2?Nˆ¾1E‰kÃxA©o|°#ÿ¥MÌv1ÆÜ¥³ æ¦okç+-šEô™çHÕ Ì“®ÓE?CO*/›¹g0G}붘·?Ö_œç5iNl¾ÊÁ œ²zªmvRØ€'lZdÇþ˜}°¬rÈàßøç'rµó< B[†<k„¨“¢&àÛɳJž[€|û×GÊT(Šë%þ(Š×ÎE¡¤ÄÂ@Õ ã1=~ô=~LŸÞH_­þÙhkb‹tmm…þâ/þœ–WV(l5-9e› ù§L8ln™Ad§EÆ>e#¹…ôÏÿù?£&…l·ÖW¨sk“î?¸O÷wÇ„DÇÈ�USþÍ¿ù7ny¡øòùg¤ÿïÿ½U2öóR?¡ÎÄNßÙߦ[Pþ¡œšaS˜¥¹d ]&d êFi«‘GûYacl_µR&г·¿Gcã „<ÊAú.äÿìvqœð@Î8 ¬ôìé3ÚÙÞ¥Ah® óPIºÁ)¹6olÒ»ï¾Ck+kôäñú›ÿÿß°JP§Ûá%¦š­·w¯‡ëÑbŽÙlµiqi™—w{‹æú¶¨?œÐÓg;´´²H½Åž9/smSrQH…ÊÏñF¢âܦÉA¡1#—lV´Á¬èý:•€y•¤¼iéA.s²sÚ1/Î ².׊.ƒALOžÐÎNF««wMß‚LögÔî„´¶ŽÈ¹€ZÑ"“€&ÆÑ’Ù¹ç¿ù~—nÝJè'-™*F®vIQÃy¯`^Ã:PúB¡xu‘« zïÂÓ¼g$߃Ôqëö9éÉ:ýŒýÂÚíäØó¤’}qïU…B¡P\%œhóeÙÌWTuú»Ømº ªP(®&�'Á‡IÅ5 P)Ïý&%L{:œ ”›]ÎùWßYu+‹4pŠ?žø4}Žôö§CpÂïy1ÅÙWZžò§a–=qÙ{¿ð: ÂCµ?Ÿdû^NÿŸWù¶êS¯ÚÉÕ€Ûª_\¡P(®2”ø£P(^{`Üáíˆ=HÓ”Lb&„lcøoþð9ýŸfRݲÉ3ß _þù¿ ÿûÿóÿA?‚Ú‹™ðVÎÿçÿý¿Ò>ù”h(µ»4LJùáoÓÇö/h}i•úý#Z{ó.Ýüà=úÿá?Ð'Ÿ|ÂÄ|pœN§Ã9³ö³ŸÑ_þå_Ò›7HDV0æü}ú ýçÿüŸí„SœÒR?¥µF—nß¾MVHãɘzÎþ†’TÓc¢¸— wA¦I¦yäÿÉFeb?¦M='ã˜úG}ÚÙÚf²–7Lû5ZV Ÿá`ÈQE¢…Q5 £Ã>o“°²RH­fD÷îÞ¥÷ߟîšï[·nññ¿ÿî;úÕßÿŠîß¿Ï펖IÌñiee…Þ~ûmÓž·ø8 !á<:]~¨Õ1×5lÐáÑî?|Lo4îÑâê —‘rª5w±l›ÑX³Wû¥TÛX>ÓTzò2|µ'*~NÚ·º|ÞcÉß×Öµm]£”$ë/ñ|Æ£„ž>=2ý©I½Þ…!eáלNpii™Ò8¢dÜ3Ï¥=:<HÌ3¨IæV¡íÝ í삘"Xä&}+Æk~ŽöWp¢óI¡P(^mÈ»Ê_ùäyà«üØOÊcY7e/Þnv¹t©ÐIY…B¡xýPµþdowñgš]ªP(/ytÜq?ÎižKòl{Qî«ëç/+ƒíïwÕϨï„zÔ)°k[Ò3(‰¥ååþw]À«ï€¿_Ò~MSÒ÷ÿV(Šë%þ( …Sú =¥8žärŽ¢°b% !°">9éÇÛ@•ê=P¢i.t(1«YÆ–‰7™¤1©¨¹¾B7© `@e„ü ‚ &¡jkûÔ+»” .®¿“ÕµSÙ¹ÚÒqè8ž#á‘2+ n¯“ )ͰÚäüfÉàеk«ÉíBÏh4¦§OŸÒÁÁ!Ÿ öA>r¥²Ì¶%®C’dLÐyóÍ7é½÷Þãc={öŒ~ÿûß³”1Z2Ðo˜²Ñþo¿ý}ðÁûLú ÆOž<f"×`Ðçë»Ôk( ÒÈa3 ›·oäR¡I–\*ǪŽÄ#¨:uE¶´ªl0Ͼvÿ›¯ŸU'߸š'ÝØUC ÿäFÑe¦Æ«"—¼Ñ$Ù3}ºGËKËÔiM¿K9Õß›!­ßZ47EËôñ67‡¦_ÐpØæþÊϧú¤•€$%ý(Š×¾SORï,Œ÷N~yW£‹hÁô¤=O$þ( …BqY˜æCàuD4+aN6£L…Bq=QæeåßÞ³4;Ä+L ã´\AE?¹(1p* < È ½š•}ñ_*>*ÏW•ÿå¦ùuqõÌý`nY:SÝ'Èk\i”ÈÈNTø’óóh¦˜L¾ýIÇ,·øñ¿gŸÑ¼Š?Á”ýK¿ƒÙ…T[°>HˆÞ,Ô_ïÓ T¥ºwZæÁ»~ù¿'¥ûšR³Â¯žMÙ´æj”håwA‚›¶í<ð»¦Ü^¿nžýeçSáŒÎóÌ>ræÞ” ErVƒ›ÞócçóBR–wϵ) ÅË€ …¢™UÊI“”‰$bšZl7܃º†DÏ¹ÝØ™:‡ZÕ|qᜦ ¤¢´lbFQhI%ŽðRK²p6ï˜Ë•_Ü1‚ Ý®'šm²_râiŸ(¤‚@QIY%&=¹4[ø bhÒ̯Ð>8ï$Is²–ƒè³´´ÄvÍFË|š¼¼ßÒp4ácý_ìýé’$G– µÕ÷ðØ2#rAfb)ÔÞì®^(rûÊeF„A>ÃÈÌñøcd„Þ¹WÈ+ÜYM²»ö (�¹gƾ»-zÏwTÕÜÜcÉȉDA`éáîfjjªjæz>ýÎwPH ]ýþ÷¿—tlBÚáý@(jw:Ôæ2nÞ¼A÷îÝ“´`)‚QYK¯%9Ï£ˆ:ÝŽÔëùÞ CY@Táb…<C¯Ø–+ïë –.ÅHý³º9«éçEj?ç“É®€+Ð2iè2u ×‡—µ7nêܽ¯JãÆÏœRÇ<fáœÆ“‚Ç1Èt êõRêoö©ÙnÈ1ë½CšÏ÷i6WÔ&ZnßóP—¯ÿàÍ›7oï´¹”Xî7Ý€Iö2«\Ý1W�ô‚Þ¼yóæí›¶‹ü±úÚ¡7oÞÞ¼]¦¬ ;/0«þ~UÉ¢:þ%° sŸë¥Åü€ôñ'X*Û¤âZRë®}}cÆàÂÞ{â‰DäeM°Lü±ç¯ÊSé Â_ðoH X„ŸˆKÓU`ÕÞ-“Fê›;£œÏ^?6¤›ó_y{±Úš¥R/x4ÚþY¦¬¼p 6£*ÄÎ>› ~'Ÿ °@*]£AQ-©Þ]|¶%6Uì§S~v<(é×3*J´BCQ‹+¯Þë³ç®6WNy>ÑÇý]:þ“"÷Ï 1g嫜™’pVM]ò^]°ûTsø žªÝý+ÿ.Ó”Ñå®çjùzQ¾6 g+¯öCîúh™øBÌ«Vös§¯¿_œ~eä¼°:gÇÙ•® 6®ÂÚWKÅWO Û|õY+R/ö¬öÓ´\êJåÞbœ¨7oÞ¼½”yâ7oÞ¾ó‡ D²©¢ ¤$Že‚[äi8^Ò@•â…dE@yiœ,I£UfÞˆÅÂ"RN''Gtx|Dn‡¢Fb‡”|×j¦tëöMêm¬ÛÙ¤‰3)ThzªÑH+užói$&=–FÝ (ãðÆåë2'q ™(tEê-NJ…S_LÎ?1È8ØœR8ؽ,‹¥HúŒûi¼&“ MƼM¦’ L”z"…BY¸ ¤ïRyE_>xðˆž>Û£ÿñ?þ}úé§´±±!ŸŸžžÊyAa)À667i­ß§ÍÍ £4„4j¼/”„ú«×ëò{%ª+›[›t÷ý÷…Èur|"„!8¨ÚÝ\¼D7‰-9ãv;Ï—\±Eô†ÝMÑágñ¹ª1+g²­’~ÎôÓŠ³ø2’³¥ù:{uá1/mÖ‘|=ÑEPCý³Ws˜_ÇÜ=¤]ŠÓ[t:8¥¿»ÿGzò$¢ýƒXT¬ÖÖBÚ\óXÉ1i<ä {Z6<ƒ”*—XGXlåa¢‰^§½yóæíÛffÎWœ«ü#ÄÞ0¼ô7æ¾s¿½Wý=2¿·þ©ëÍ›7oÞÞ®]ü±šÊByÏÀ›·o©½ùGÕé ZHAM'¨•V:Ò{nÔ`XÄDáµö\A©ö-£ ”©Ëqt"G2Ï9·Ö´Ÿc—ªû þ u}¾¤BåòjÞ3G†¤PWè›ëWÇšñegöøÂ)‡Ô®¢ºPM²3T­m.z~^”bÑa ªVOå‚­•Ã5ÊóîØê¹­¸ðÅØÕ*kÉ"5â•£Ö ˆRi³PXqK,›À:sÆž3`µç¯FQöº|ü㪮m›kÛaß*pªú¦/1†ôjºáh`ÕJ%^DÕZì½2 —ZÅw1ž]áÈy¶/€gÏçsãs¢6nð­¼ô²¸¦Z¬!8 ×`Üß—£œK!Z(ö׆–¹Xó¢¾j¥4]aØ/ìRÍC^°Ÿ ^dPBS[š×P5xÝ.Õ½¹ªŒÿ²†þ”àd‹xóæÍÛ»lžøãÍ›7ovr.Ñ"U¡erÛmwØñ éýµ š¶×dòŽùbÚŒ¨¿¾N>¤Œ'óeae �´¿¿/é¢Öúk&5:mŠ„À£„ÈóôÉš FBì9œOèáðˆ¦Ó ݼyS&°˜ð&I,ûwøX]>ýô^ø¼ÄÐÀ¾?ýÉOâM–SoÄY’ÊlLÁ|DgS>½Úäö¥[Ó9£å‚€ my!jHî:K»ø†k@{ npŽ0‘FJ­áp 1ÿ=™Møýƒͦf“­Éí´NIÜOş˨…ÑSiC÷ìÙ3º{÷®x@°Ê¬#¢Åµk×èÚõëÔßX—4mP_B]àXàýîÎŽ~ò|.mü>—³scW®±ÃçíXµ¡*ÍGPS¿y�Õ:N•O§hIñ¶HåU'þ,ŠX(.-³9bW!ÿœ‰4Ó«ù¼ ¥Ÿ7oú’ÏW··kF‡ÖÖ·éùó1ýáÓg4vi4éðXE*¼ˆÚ-EýBÆvÎ(NB‰ ‡@2t¨‹qrõ… }—çÍ›7oߨÕɱ¸^Ò‰è*©-êÊX¤ûòæÍ›7oÞÞ-[MQ ;»�ö®ùjÞ¼yû:Ì虿Aø AþQîmv °�Æ.ÒßÔ‰Ê~ÒRɫܤ§¢ ¬tÄ)WåöÕBZÊD^]ržPÈ:dË+¨ 2ÒÊ’ö|Çǃ’;Uu‹a~Vj9ŽÈÁ�—´ØH@³‚ëSökç ÔÈ ê,~¶ «°M*5­*tK!0PlÀ#ñ*õE j-“‚hAüqªçÎ *¬O_ÚãÒòIdAr’þ (õ²êM Q]bÎfsš"-ý|ÆíœÓEø¢ôY „œ Õ\Ë¢½Ìé¬âªáI€,SÆÒ#ÆvËZ¾>‡ø£–‰+^ÆìÔKax«XÙêo¡¢Iºœ%hÁøŽŽ$pU_²}Œ\5øÒÜf‹›pÒÓõ¯Ìëj±ºÞ~5†¹ñ`Æ‚£QDdU÷ÍüA×r-Þm3Ô3 œ%:mÃUŸû*×ûÙ0^Ì5òØRánµ¼ó‚aWÿ®¿^fÀ_ѯžøãÍ›·oƒyâ7oÞ¾óf~qr0“'µ ƒ|´¹I›~L?½uÇ:X%EiHãɈþÛý/’*ªdGÑ¥‹è÷ÖDUæÖ­[ÔdÇ%n7áõÈ„ÿôùýâ—¿¤l4‘sf¼€?kÆtãæMúÇÿøW‹O8H+ ž`Rù¯þÕ¿’÷u‰ß{wîÒ?ÿçÿܨÜd­ùûÁDÔ‚º_~NñÉ!ÏJ'æúhu¢[¾4ÿe u&<ÿ‚æÅY6“v1 #yQ,¸n\ïÑÑ!H*®/¿ü’ööétx* ?hÇ(„sœÒÖÖ÷ÑuºySÑÖæ5!þàóœÛ#ŠÙqÂÊAv‹{¨ 6©ŸM©†Ï;õz=!Ç;–¾aïï½ÿ>ýàS«Ý”}›”±qÈQn·S)ÔS¿½I«ñ¾Î8‹Æ7«-ç¨ê¸ãµvúRõËœÏË>¯Ó‹ÊzUлI zs†û¤4 3¦ÚÛãg ™Ôw'''G žEׄ�tzzBI ±–MDÀ.›®]ô§ÜnÞ¼yóö2æ”ó\ºP€‡x­§ZuäÚUsó ì‡ã0W@/dcû¹7oÞ¼yóö.ÙE \gü¶¯$ðæÍÛ7j²ÏØ@Ì8Y̘Wƒç°màdnáœqº€ç²ÊbZy h1v)Ób-i -O‹ÿ³V2Ƨ Q%�®™W¼/“ËxË­‚MÎåίÈz¹U}qóë†i­à×Rd‹…„’|ÞÂà­™ÎùøŒ· ï–ãQ¢Lþ®I¤“pAü uÆ<ïp¾ sæüÑIHtZd4œ i˜Ïi@¨£-Þ)°ƒ@$d.36A‹N£d±Å\ƒþZx‚*` `ß× ÿ¡ÓjÓµMZëu%à°‘6(I“Ê7‘-Eä¯=› ù�e(K]¨RÒY4ÊJ¯ë:Ýg…ø#X œ,ó’ÂÒHò8Ò0¦ñØ`ÍŒÕ>g¬v8Y Ü*ÅY|å¥1‡”ÇVƒ¯ÃxÕ -j\e 5~¿r9)_÷ú:cé›[´¹µËXzÛœŸ{®°Ô0[Œ!êÔxhB2¢Åµ¿MâOõ[ZѰ¦¦CüÙÛÛ£§Ož‰Jü|>‚YRมQ:r„/7F¤ÝEÅ¡ä½(ÿl=êÄŸú÷#‡ÙïÜÚÆ”#¸)ûjh:޶èO<'p<Æ|†:†lƒcÐeQ.È?®&Z/·©r›ºÔ§ŽÐ†5‚Ìøê†ö. Ü~MÆ>>Ã}G¿wä¹UÜÓ‘‚–Ôµ”Z"Ö‰@uC\føü‡‡‡².{Л7oÞÞuóÄoÞ¼}çÍŠª.¦ 6}V NØõÊ®]§7“V*¤N¯M÷|E÷ÿ =yô%3 ÎÙQúñO~Bwwo9¤Í[ÊÒ€=›¬ÅÎéá€~ýðí‹~ÀÑÔ´³¶A÷®ï “c8|˜`>}úŒŽ?£ûŸ|&LJáŒÍØaøðöúñ~$ÎW6ÑvΓÖÁX¬èð¹Lz«Èë 9Rþ׋ç-œ]qö-QÃ,°A)ªdÄñ¹©'ÉD胃QúQ8Àç¸v²,Õ¥£á)·u)X¯»FIœ°£¼&m>Ù©:5 v¸V88Î:L.…H’>Œ²ût4²c•³#Ѫ‰ås‹ºÝ¶8¢p4@°(¹¿á¼¢lô>ßÙÙ‘Ta«mr©ésvÑ6oµ9 ª÷¯=m âT’ŒéœNNNÅA‰¹½‚*ŠÃHЂ𴽽%í rŽÅÜØXGÏ� $ÇcŒŽÙÙG™pºðÇá<p¾šÍ·W_ú Î.ŽÃ>¢È†Õ刓(÷U$džÏp~×_f ¥ŽNwqÝgæeM½¸‘ÏÝ^¶<c—E°„ ¦µÚMg… Ç£·í¯;¡Ý]±xq™A‘ÁpJÍv@QÂà i2+ù^Ó‚êTQ™ˆ(·;ÀjõzÉϽyóæíÛnŽtŒß¥~¿/ÄaüBs‘ï}ï{üf”ñ»¸»»+¿E=²¿£F™Ñ‰ñÛÃç—+ÿ\þ<öæÍ›7oÞ^Ç^1À&·ëðêÒÆÔSÕüÕ_ý•ìÿ?ÿçÿ”ßGòÊvÞ¼½U;/ êu Š—×a<¨Ç˜ÍV³C7mZcŒG”k#S<VŒãàüS†ëŽSEãÀÒ2 uRªÁÚºŒÉÝÒ!õCƒçD ^Ho“¼§Ó<ž3þ3/M`à€qÖ½2äWmTdøý×ÇÇCíå:ôÑ<§ÍÂ<o@úis]¹Qœ1ÞtšÅ4µÏ£ˆ_’RQXòOÁ0W•"ÁAT⺂è„�BX¡L 'žƒSÆOOû]z^LèËg_ÑçÙŒ>å}È’9@Ä`\SYbFÂul2–€ôç'p`]ˆîwà0P¢Ð¦$ E½Æ€@Þ fSÁ5CÞosëýä{ß§÷oÝfqS0¯v§Í>FbˆK–ø#mÇØÞ±QॠA�{ìp]ÎÑRYúÛð:tEʨh?N¤œ²0x+H_Œ;i+ íŒÁÑýû÷é³?þ‘ô§ŸPþ,güoÆeØôÉö¬ _w·P­-± øJ…Ádñ{ÂO³ ò‰ À˜s¿Ž§sQrßÙÙ¤>üˆ~úþŠ®ïÜ48²Š÷âq$DKëÁßöª¡(K[;Ž6pWD³ô¹8_í½&º T5>‹ª•Z =ùz?ùäSúßþõ¿¡_ýêWB)ò‰ìŒøTŒ£ìbíx6úë3>vÆãÄ”¸ìú_Òt¯>G­ÊÐ'€ÝzF›Ï‡ó:¥²Y\Z·À“P¿ÈÞ×#B ÓeERÂý 2×d2•{¹g´’4O­´­ª·Ÿ!ÅrÙ˜±Ð •ØVæï¸?¶¶6·Þÿ8´Ù˜ÛÜ©gÕ³éÁ‚3$ \Ǩë\ó`Ú r!0ùùóçéÍ›7oïºyâ7oÞ¾óæ$)EfV¤`•:àˆ¸)Øìd “äOƯwÖè$jÐàé~õˆºP´áI°#î}H½$%š±cšŸRÄŽj“øÖ`‡óäèXÒar 6û)«¦m'-:É¿ß^#ÅßùOsÊNhÊKLNAä8=9%ÅÒFö÷è”' ë ; p¢’@RŒ’90¬{Kþ1¢¿5˜™@«*?sˆ ´¤ Ä‘t‘ 0|ªbåà „úäøXœâ7v… Òœ  ‘òDþw¿û‚žó¾;;¹R6yqîúµkÒ¦â¨5b ·1�!¬È¹5[ Ú¾¶ÅV*©ÄPçgÏŸÑÖöµ©Œ,ôг½ç”0Ðí6i:IDÝi¶6’‹SY åÿÍßü ;$[v`¹–¾B‹ë >Sg?Âf:Y•ý¯.Ò×pxxD<0jS|øÃ§<öDÙHÚŠÍ}‡EοüË¿‚úááÃGBìùéOÊ×Þã6ÿ­‹~@„ÈPPdúÃþ }…÷8n08rÎÎÎuúÁ~(íów÷s9ö±Ê,šH|‹¯¨œ9Ô ‹­Ž)W‰¾ÿýïsÙ½êúÎoÛ«ŽîW%ý¨+ç.Þá¢`¡(¨¿žòcƒÇÓ脎‘jޝ;mÐÏþâÇt<Þ£“Ñ> Nsn¿P€´YÒ8ã{ˆ8�KQlƽDB©ZtMå[_� ]Ød~qÚ›7ošæÔãð[ßÌE�žÐ€ˆï�®­õå7¿óøíà'HÀ�bP¨°¹Ìý¯ÿõ…ç­"7½yóæÍ›·7l/RøÄ‚Õ?ûgÿLp‹ù/ÿåÒwn!ؕ߶¿ýÛ¿ñ_ÿëM¿‚rñ|~é¹ß$AÁ›7ooÞ�D ­3f¶Æ‹å»½>}Ø]§´iî}žëð”4R:¯ 5¥ MUÈÜ·‘+Ú.j3V0†±ÎÔ½RÑf`ˆ�Q¸]£ ¸æ¤ø³œçÎÄñÇÑý2¦ƒ¹I[>Êrp `¯¼ÿ.c©Ý( ŽØ`œ­ÇØ*È/þ Ä!F¥hbŸ5Ð"iƒØ\,IGÑœWº@�âï²RXE(|26™[RË(‰é¨Ñ¥G9ˆ Á|`’K-Ú ª'‰™ÿ·»]j­­1æ_€¯ád4¤9S �sd\F…¦¢ÆkŒ‚¹04Ò‹AÅ„ñ± ÆÀnܸI7oÞbCo­'þ‡#0�ñ0fŒ,âr[ŒgÂùðÃå9½lØ®ÞZBH¹ †T䟚Ò[ŒâON”1v›•*Æ0lH|­_=z`ÕiÌïA0*²ímn¬±ßtÚŒ…\Þl2ì¯(fìcåBü!JDñ§Åý3^Þi%Œqóu½î½ÿ‘i¯ ¦2H¹GB{uJàÄÌ£àOï,ZzÅ;‚h¹·é<ºˆø#ÿè%ÒÃ1nºŒ~þégôôé1–?™ŒÝ·f\ñ½}Öú}!³D¸Wx,ØÇ<¶Á—¦‹t¥¸³ZǪOõrÚjiÁÜy5·F9ãýŠDNÝË)bÑœ™D&­ˆ[NW>çrL EKcëLk¨%¶OÕ> ýÅÜ¢RšZBrÝp¾5¾/0ÞAŽÃøÕ~ƪ{=ăûs•üãÒç­þíˆ?õT{usäh!kÙ¿q}8çê¾Þ¼yóö®šZyóæÍÛ’-$%*òÙ<Ä$²‹É$/Æ#O5Rƒ)ÞàL ±3ƒ÷˜¢JH)ÿ€%ýµ–‰»“f¹„!‹‰ÒJc_>Ž\rgsÊg&•Þ#úÒá¤ñ"Qœ+:5„Ÿ*¿íêåY‰×¯sIßåš.:MçŽä[ñº*-ŽëÀ$“x—jÃ9 ~¬ñ¤jAÎéüàƒ»tïî=úþ÷?¤ï}ï#º{ïž+ ñPœ§h#R¥¡‰?qê8hG‰¤©  'g ¢ÒZM˜4 À<|ôH$pã$¢£Ã#QšJ¤Žq(;íN¡Ç@dáKÎmÇ‹ù@«y‹%ˆh©g%‚‰Çˆ=pX †„ú¢MÑp:Ñ Û /~ýë_ñ¾!—Aé�éê¦S(1=“ÅO¤Q;ZX¥HAùPñ£õÅ_Ѓ¥-“jTb€ÌƒÏP8V8,ºâ܈ÚÀgˆ¤p*?è#¤Q{úì}úé§týúuºÇ}ýõÚ×xg\R4RÓuº-âG·qB#zôèKé›k×·hS§ÏNðf‡Å~Äc2g4«Û[# Ó(V _ºz}½kñ°½7oÞþT­¾0 +Ôíð;¥:üâ·éóÏ?—ï¡æ‡ß+üž¹t¬øMÃï*~ûp~Ÿ<y"¿»Þ¼yóæÍÛ7eWQüq ]ð3°˜ëL©³K›ø½ûÍo~CŸ}ö™Qk oÞ¼½®­Þ§¯“}UAãª\¸&æ²›Œ¹l5ZF jü}æ°¡ìŒ ‹ßj®i<gü1l˜TSc”ó¢Z/ÀϘÌinBB új‘²D¤òj”!(&Źv+$`±'ÆA'Œ}â¬vùÅ Ärƒ2…\1â* íiE)TÔ‚øòç±6Š?óÐÌísOʘ”rY¸îb)àË=3×'K;mЏnÀO?œr§‹TMÀA^À3“±³F«CqjpHà¼NIõCú§ápTac¹|¾–””LÜö&ïüÌÞ“v—²,9jeTœ%þ€ôè »tÊ.‹4UJÀDC´Á¦e«+£8¢‡KÝe‚( ä<B½€1O–bF™4f,ßF'ÜÞ3Á[Ñ¿ 15Û¡@0^TzV©¯Â˜GJLZ-ˆ?ø[W˜7Æ2-R­ø£èB¢Îù#èÕ‰?6'–iÕs~½"pÛÓ§OI¯ÅÀÏág‹ýIøš1È4Üÿ'Üß/J)U‘mk¿Ýõg‰kÔ ýˆþ „ÛÇãÕ¥íBߢ­]{“UÆU‹«¯— ¶©¹ÊòœëÖ òÏ‚UUêÜ–DKæ®×)㫌ã~U!ØtÌ7® ãIT‘´®]¿ª”}\б#ÿ¸ÏãyQ3ŒEà× K#Àj?óKˆÏÞ¼yóö.š'þxóæÍ[Íi%´Ä’ r*Î ˆRMl¾e—S6á &œ:YðQ†nØñ‰Èvb*“Ië,cˆ}êŒ|Q7²‰|:F96üÉ­› Ê„=\8xB\A>hžŸƒl¤!×8ÒÏ׸¢ïœC˜È’–™•©EžêE¾Ýz°?8ˆt@;c d› ;:B âvG½áìbûÑ¿'°¼ÿ>ݼq‹¤2jHÎaquéW>¯qŠ“2Ñ—NÒ¯p2pn#e›Ë+¢ÿ¡°soï9uÛ-QBªÃ£C!ÿ 8µ½Ýݾ}[œ5 ×·šM« ·ê`­:Uî{—F ã×ùÞ{ïÉ5ÉAÝ?þøc!Öü‡ÿðd¬a¿¿þ뿦ÿøÇôoÿí¿@øg?û™|Ž…P´Ü ¼(B;ݽ{—~ÿûßW’§’ÿûà€~ò“ŸÐ?ý§ÿTÊøÏÿù?‰ , jA8?êèò3;ç �ÁŸýÙŸIÊEP?Ôç]°Wæèb.Žäwçñ7܃ôÉ'OùúsZ[ëRw³Míµ5)e:ѳ§_ò1ZˆP[ëÿ}Ìe»gƒÀÔó{7oÞ¼]l[[Ûôïÿý¿àÕ€A6Åo~—ðÛ =üîa~dÎÁÏîÿþßÿ»üz•oÞ¼yóö®ü¯ñ/þÅ•öýå/I?ÿùÏeÁ ¼fP7oÞ¾ys´†H1†È˜d ÁŒCö“,Œ¿,²Ít!’&Czb|K3–©bþ „‚füY e$à/Cð\`9'Y)ŠPñÐeAó ”t?aЄ¿™òŽ9tYàv|0#.£œ•"ˆ.×o-Œ¢xT@Œf¼å‚óqùµ4UÊpŒb6®fÙE.;.k©¾ P5t¤,I€R…¹”`&Å”ås€(Àxp³Ý¥þÆmlo‹¢;R~ÓÇ´2äK'Eé§dÌwJÓYÎçɈK@O òL›Ôjvk6éÀ¶k·;R–Q÷1çuþÔ_Ú ˆ þÀ/¹ýÞ-ÊŠ*°­âSJ¤®¹¢•M¿¤Œjxý?¡½X2†øðâ*7Eè*å“`­êYrkè¯4áqÕl0¾Õ d'´ñ\RW¨Èµ¤‹Bì åj¼‚ ?žŽ²ƒ’<Òb•.˜äÈ ÍFŽð³ !IŠ*µR©+Ý5ÂÌ*ñç²¢äsJJ‘]()Å<æ»Ý6cÝ ¥˜úƒBéÞ¨œ7MiE’-ªÒO¹Á¸é§—k»4ª¶Ð„xT¨í§öü—]䆀&}a�S´m,ëªâ4‡fî3K€‚(lã›*‚\¥DÕå[E$÷FUkËX%U*<Pô?o®œ(ŠYÂ[•ªTÖarYk9ðãÖ' ‰N-6÷Y,µ›.2*çʆ§4;9¤Ùñ3šŸîQ68¤í69•}¼yóæíÛ`žøãÍ›·ï¼aN›ÃÄ(Õðä¼äI6' tô×èhÖ¦¡S2;¦tؤýñ mܺN: ¨ÍŽMé"Æ»”n­ÑÁt d¡”âÙœ´ÅÜä/fçé½÷ïPocM"%Ø f‡WSь諃§&´%®ds俞QÔkÒ­î £Ý‘#d‚Ë.ÛgüœŽOOØéËèøhŸÆ“)ƒy)>9¢OÄ#Zä>6)¾œ¨è[2µúÇÅg™Í8" Ê,ëò߆X‚£ñ°ŠPÙÝÙå¹!­´ØT*d'ÒD I”ŒUrÄ©*?°T3… ÑxEôz½®,ôá|ØnܺAëëôÁïSÎí 8_wîÞ¡ÝÝI÷UÚÜàP\BtÂó½ç4žN$¢Cƒ–L¯lôÂvy]sj:hÇ?þñUZ@\€¿XÀD›A᩺  P$Œ;”òÆÈ<ˆÉ »¶ÅØÄb(ÚçÀ™ ã‹¢FuèHÈC¨ öƒc‹EU§ð„¾AŸÂùÁh.y­gÒ¨3Ž­;s¯Ñ*/øneÓöU)z¾R—`Ê„¼ÓëæôÞm(yµ$PjFÇ'ŸÓúµMZ_ëbU1 ëÛƒ 6¢F ‡5pƘ>Û>êü,ç¾÷æÍ›7r) `: ‘}ØV ÊøÝ4ÊT-†~ùå—Õ>¯÷ûäÍ›7oÞ¼½%;oÞ¼ýi™ ÄEiI ¬˜Ð$0$’( ¨h0’XƤ‚‚žò¦su"RI‹&AF4¦YPÒ8Êi«J󰤹(fhY Ê„>¦ÈéžÆ!DYç(i&D!ÆAU" ýäå‚âO6¥~AÔ_Å¢| Á' yc|iÂÛ<Ìå*B }„F[ˆ<%Ò‘ñ#່Fµʈ(VVÜÈÁˆ&Hq”ðñ­RQP>Ë»eá*DiLîµ×·©·yú[×)mw)I›‚_©¸K×NËIŽ Ñ ,H1Ž;)4/gŒSN¨ÌÇ\EÝV‡6Ö¯Qïúj®m ¾µÑNéN¿I[= �Cª'˜SŽöÕ—_Ño÷[ú”1º¼ÈéúÍ] x?@¸’€UU ;Ô´¬`£lj¯À¨AQHRÃ[Å—PȤxRE ê;h+}Uû^>«‘%t]Q^k«¸²‰ÙeÆEÄý’Ä<æx°±m[CØblœm·[èdÿ íwڔܸA 㣰JUe^JTžÌ{—æÞá„n”_õ~P‹F³GÖe/ÃÐ 4iÓ8ë²R­¯ZíÊŸ+訬0y§1ØWeñáêU«ªøÛa›–BûTí:ÔÙkÃ9¸Iù>Gº;eÆIœr¹e:3„™2¢R‘=¯Ágy(ó=åÒT]€—æ³B™g†Q È©w™kpD¨Õ:¹š-þ"­–V ™oõ¸z߸}$‚ ʲ`°È~`ºÀ}l‡U©Ð\z³•ú éçàå'û ”ލ3ßg `ŸfŒd{²7oÞ¼}̼yóö7DŸH¤Š æ…å ãd:¥Ãý}Ú[ïг^lIHá• 9bë½Ô½¶!‘ &=TI^‡öƧÔ(Ôà‰t£˜‹rIÆNÓ½?¤Ùxbädáß‚dÔŒè‹çªG ÀsÑI6£¤×¦»?øHHî" ËSìß~ò{©ÂNá³£CR''"Ú;: DÊ·Kö1î²Sóu›ªÈç™^Ž Ãò—¼Ù¼‘DÉÌ…<2žŒ%-”a ¸Ôf‡¹Õl™RØIÈæ&í”#þdY^IçºöRVÅ „¬¦Uar$ )@üAªf³!馰°×ê4icsnß¾%Ž($QQÆÎÎõJÆ×‘gPœðç|ìÖév©»¶V[�Ôt1ñÇ´Ö›6Ý�âê‹MlH¡…¶…ZÆËW_}EwîÜ¡üàr-ø ‹˜Ø@ðAZ°Ï>ûp»–BÂq¹•c‰j2d5HòÐ@>ƒÚÿ¿øEµHŠ>ÄqØ\Þf´!ÚßaƒÔ1ú ¬8jEPB¿ÕF©×j3uñçze«€”qd_ù¬Þ#GÄÛ·Çw—úý=|xÀ û}J¸ê÷:=~̧?¥Ý>·!òs rY.i&MžüãÍ›7oWµËäÖ½yóæÍ›7oÞ¼y{×ÍÒ$£“Ž6Ѹ4DÍEñ§(sÆ=5çi”Ä[D±}ÆüŽ;åB@¶É]zªRQ¬C‘Â'£9ÑÞ¤ C«’aÎT ø)ö/ ¶R#lÐZPR›wJ¥2\Œ¨ XÄk‚PH$P‚!•WŒM™>°ÙˆëCÉÄàº/}EdSú¶… Ê‚’ Ÿ××àëJQRk)`æ²aQ»Û³j?×is{‡ÒÖ‚øÓh­ñµÇ´É˜ã¿4ÑÑþs~™ÒñdJzžQ9á6O)à‚×z[´uã®Ä­5¾æ‰¨­�Ü2 ðO¼G ‚ð~ûÛßÒã'E%‡ ðLÓñþAhR˜IûZrÌy ðºF2¤G q—ª‘³ª)P4J,þ5œ³^.]<¦²9c³Ó ͸ýt¡å}‘grmÜÐ+îQPo*ø]AQqó1ÿü)÷GÂ݇ãrŠZë%-£ÐÂýDaA*Œ×.H/ªb‡œ0xwæ­ÏQÎ3§Ž£„ôSVÇiU;Öa¿®ñõòwPÎ9LÚ­î½’§§/µJ9t.MeA\ºHñXaµŸD0l‚úJE‘rÍ¨à„²)‡Ó—¦n…¨k©ŠP#—RZzS-͘I—E5\²^]«kä£.l׳}b6âJÊÀ†I5ˆµƒ²¤&Ý—¤óª‘ñ§zoËêŸ×NSæsš)ìSÈíßRõS~Î5øÊM­¨”qéÍ›7oßóÄoÞ¼yƒÙHG®AÄMžì=§¿þˆ~ÿˆ™ÔKÙݺ}‡þê¯þж67%‚ÁäN.鋯¾¤/îi”9ø³‚L˜qìöæ6ýÅ_ÿ5;Ó9=ú”’v“Ú›}QbAš$“ÌQ& Ñ/›[ôÃÿ˜š†e§—R×ÿòóÿFÿæßü©zÂçÝf¡mÓƒÝÕ›”¾Y%He:Ś͹®S®sj'èçJLæ§2ûr»([¶‰41®“ûD™ ŒPV€ Ÿ»µµI›¼A‰§ÈMqN°?Ôj$Ý;ßèw8_ À@ZWR³qß\¿~®_»&¤PŒ¯’<Ì‘MÃÒ ˆ* Ø€ü#yÏㄾ CAÆé÷×E:ö/þâ/äš¡¶ƒvÁxC]a¸n!Yñ{¨ü¸#¤5Áu}üñ÷¤MЖ á€L„±êT~pô×Í›7¥½P6Ô{Ð/hcGòAÐ&®ÏÎË©™¶ŠeßáðcÙׄ¦³©œç›¶*.åØ2/ãâÚ·¶ÚìÐöèÆÚºnÒÒ¡í×Ö:Ôi‡K©ó¼yóæÍ›7oÞ¼yóæÍ›7oÞ^dÀu¸ügªâ‘Á³ÒæL'”/ŠƒHð:,þ㘔ñ·~;¦X•65Say Vi[5"€ÜmÂå çæ½‚Hp4ìŸ—Š¢"¤0N{êáû cT¹Á°ÏœãgùLþ†JzÜHIÅñGÈCHå…4T ½SÆ�c-øI¨B!ý„dÒ&iÇz²Ä}~øü i.ì Þ@X•ÃÀ ~7ÚBü> ’Æ:c¶·Χ¹žùè„îñ¹`‚£Á)ØK‚y!ÀP5ºÔ¿=¢m¾N”ÛM¹]#Æ¿&68/áöޤo¨wÿþ}úû¿ÿ{ ÖƒúOʸ0°:”'i‡¡:ĵr©‹,.¹šÊh9 TY\=*DíÇM’Û¬ásïTÓ1p­•ê-ˆØ×Õ 8 ”Ó¡3·ŸeÙ̪ Å‹1‚óBÕž÷-…q•†ðÇõ£SênÜ V§oÎ l5L$Õ—wò¸’X^åÒ„ ¤­`·:£þrî{Z&¯K÷ÉE”›Ú¯h8®kh£¶XL{*ï¥íƒ H?\WÝp¿$Œ¦i"í'c%4ëØcÉ(2Ùþ, AIîMî”Z’Œ¹\mk ^/±’¥ÍöŠmð2-ˆk�ÎŒ{¤<3ºPäj·ÍØDʼh¡J%-·r?„µ{¤R‘²×WÚ{ ýl8¹;/Î5ÌCj܇Bð¼yóæí]7OüñæÍ›7«âœUqXyò ÇjŸ•_?ÈèïT.`8RI Ö„>øàúÁ¾oB�0áçc†Ó1ýò·¿bË|6§ñ€›™ÉÏÛ_ëÓGßÿ¾äwÛ¾³¾F×ïÜ¢ÒW÷¿’ɤ¤KS!At;=ºyû6ýèÇ?Ò Y)Qüÿÿ˦ŸÿüçR{¶Ø)ÚÄ9Öû´²3˜äòï֯󭵨SÛ)Ïw�fS¤0Bj£žÈÅVR­•)ã¨[=džEÖA!' gÑ1܈™ñ+&ëpœ%¯8_v»ÝrÊZ‚V[ÎýÑǨëzøÓiw„hGÎ:1œ»¿Ö3‘.ÜOè#ÔM¢|š !4A™PаS G͸è 7îÕvy¤î¤S7¤#[-ØÉÕVŸ\r.´×ûï¿_9LHÍå @Œa´-ÚʼnÎ\ÊK8ÊŽ0{»tµôúª\¥®~¦iÌϘ6÷Ÿq4uÀàW0å1ˆ÷mIˆÆ˜8ñæÍ›7˜ßUR¤ökoÞ¼yóæ­2í½y{놻i¢ ^¬‡jÌÑxD ÙDQL!̧^f%‘¨Þ�]Æ µô(Aê,È(&=)šA³E”0ÚÙUŒ—ñ&Ä›ÞK—…¨GCe½ ͱ%ã§ ˜!ÿ±MaÒ)/®g¥Qñžñ FP!â2€­5Óº¼’çod´"`b°9Åߥ )“2)µA[&e‘9¯awàü@+K~¯ÓˆÊ$$™äKŽÍ"†ñ‰ñAl [Ú`6%`MÆ27Z]©·œ¿Ì¨î®ý±Â}ÉVæ3š1fx²¿GÏ~Á×Ê-•iÌ×Sœ>'•OåxàŽ!×gÎ× ¬JØ_|ñ…†`À( )d,[Äõ(ƒH®ßBQ<áÃ¥ì2¤Ûù¢Þ£,"àv憽´SK§…Oå û£~ ÷¬‚å ´:‰Fú1Ñc¢ \°Z­3J›b,@š1¨Ò”2*…ä5ÑxtL袲˜Šú{w4¡noƒÚÅi“û/ÅQç:EÜHëVÕÝ,«­ªÕÕ`$ˆ³V¹^ÛVÊÞ0º’5Òµ_&ø× å—êËdŸ3õ€±dà¡NÁÕpÜDÚEË>°éÌ’ dÿ vמ½“%•BkS5Ù#··Qº Lª7›‚ ÇDÜ>¸ í¥¤dƒòîS¼ ‘§0÷‹Œ•À¤ƒѧ´êëH(Ùd­Ä\¹¶êFZ/ÚkQ[m벨«¹'jîyðèÏ( …Ü|Ø6þn6[üšVJôr¬ªü(ªÆ<Ê0›?r·sQ£Êæ¼ h:äû—Ç.S©/Ô„JÆÓA Â9qœ7oÞ¼}̼yóæÍZÅ^g°’Œå© L¢µ‰rÀ$NH(ž˜&‹æ-™±f‡YÓ„SÉ1 gN\mÒQéÜȲf<™“4›Š3‹%üˆ'¬V[&¤2 G*0œA™|ÌK2­°µoKëȺÍH‹6½W`ÃZÞ.¨V}ÂÎ,4r';+yÍ÷ƒ“Ýÿò¾¨¸„ì4b2_¤üc£wˆ";yŒ£^Â,$=:xÍó’Kv6'3~ÍÅAj0¨Ç %@È‚c°Æƒ.J霿ß[£õuJ>NèÆÔj7…Ôƒsd�±Ê9NBTúÉ:ÃPB4Þ á¥¬Ç½¼ÙH'7+|³KŠ®““–^W–×FWep¯Æšq©Ä rçÂgp¨¤íÛ­JvÕ^ì¢èܺ¾y¼X]¼]î³8ú<3ŽîÕ*«‚‰� •ì²Â“À}¤Œ‚–ïiý–ÉPÞ¼yóöÍš¶‘…‹¹‘y^.€ÞÅ>.Ruñ7}m¦/ûa®k¼{óæÍ›7oïš]òUj}‰Ÿck©¶ËE^ïE±6 §J€ò“u½½][%¼©c¿Îáõm»I€°JÎÛ¬Ìi0Sθ˜à9üY”Íôõl`‘!ù<§iYÐ4 (Gº&ÞgªúŠË)žTImÓuÕ¦^dp³9C1ͨɋës^XÏ‹2NTÚ>k2žÚàãZIIq8§‰ é ®D–4Ëù=/ÈOGÓˆ6×û´&Ô0ž7žI°ß ÌéqGÓ¸ EMëe@·F!ug–Äu›0ãzØà�>W*OpÆVÆIL£&ã¸-(Ó0Έœb…!ÿä¼ ¹޲L¶êÖ:¡¯9š¢HÞJÔ�ŠAaLi;¢Vo‹Z-jw2h@ùt ã£úò—?§ÃûŸÒƒMÆ) ïäBøAÊ¢8‰eÌByA…‡‡‡¢*.ê+üÅŒ±ÌÁéNO†4á6ˆ›9Í#`Çô,®×ásnx:¢Š(&ÀÃçH“T°Îv„Th|~`ÛÚpܨvx§#ËñgIíGÕ2Q)£6‚™kƸçSÆ´¸¼ˆñ^&F‰qÒQ!¤¬PEG™ØN-݈û*PÞWÑd4å>‚Òvû´ÉíÕhwy<¦D‰U�âö‹›Ü¯±%ý˜mUõÈ‘}VUbI@Фü§-AJ ¢îH>F_Û�W`þ ‹LÆy•ß=\;;‚Ö„>¸Oû{{¢v$ Y+ø¢ðc¬z½d Àгe›ßUç;*ª§0s÷rÄ}Þ¡95tA‰ÔT½¨ËÛ°äûÔü†{ÇzH=ßûXçฑ?Ï…øÙWÒZ%<6Se—=pO©JÂ׉gÈ܆¨"ýEkWËj*€v5jCBÒ¶¿L‹[¸õüç8ˆfõô^ Ž Þvä+�íH]¨³ž¼¿ªðqG²‹ŠßË#šOŽiv|LÓýç4>9 éh@ã05gcüNèË}ŠqJç¤2{£V+þëúñs/oÞþôͼyóæmÁ¯"„‚ ·¡ÍS«”ý<�;Þ: î)B['Úä·ž²³<ŸÎØÁ›±ãhÒR‰„)O‘«ÍÖ(ML„‰{عCdDfXþˆ¾IÙñ3Ô"Kæ ž›®hÚ~¯•eØÛ+RØ­ª%½iÊE&Õ•6Z8…RI{z‰Tai2žÊk ltJåD.ˆ3 ù„¹Z‘qPßáp*¤Ÿ““S‰¦€ÃÇ 0�PÒnAžå#Ú¤ÃÎÒw Ãʉ6‘ ¡¤o»¶½Mi#ò’sn ‰RÊ+ÉUlÎù…3Žhü ‚dmûëëÖ!aG2|3é¾V©(—™sh–®“~.&-þ¾ü,u|Í(2Egˆ8á×~6wu¢ÑÅe¼is±'Õy/!︈ s¿SWw •ÊøŸlé³äZªå;Ú§™öæÍÛwÏ–|õß¶ 0óüf»9Ū´»7oÞ¼yóæ­fúõ‘§ú[ØÍ,#/ûxί)ÝŠq7o/m/ã\{«ÌQ˜üqÊxYȘeÀƼÀ-J X´Ľ ²ŽY � ?dƒÄfüÇ1oSP<ø˜I‰ÅtC.j!eUˆMZð÷¥’Åù¹% ˆ’·Ô¦u—ÉI§"I 6Î Q#šåÍø˜H5Œ­õãñI)ÊÌ3&gÀö0Í訑3ÇõÊCºskƒgu˜ª)ù%iÉ<ƒðÝ<(i2†ÈÐYñq¹%þ=™q{Œ ΋þŠñÃ0Ö|®Â(µ#P4(ø1ÒFN)· -P‰ï®mP·×§â”+< _žÍ»œ hxð”Nž"eã…¢"Þõq¨—¨PUé¼€o‚âü`—§§:>>1Š?­Mxe/ΪɸÀÖÒªÒ `ž O4›\×YNó„1Ö¸ f`ˆRjZ}*;âO]YÅdHZF&…`Ò-ˆ V‰ÅÙEy¯¢ø¾NBZ)EyF–hÎã! ù,“Ô`š¯s<P6PÜhQ¦ òÓå—´Ù!¶¹Í æhˆ?gS;¹:×ÿFÝAj)ùÆ&°X¿̘uD Ò*û íá[–™yE›ŠÊÿx"Šòhß,çÏîŒÇ.ˆ??âðâ̦¯³-Euò0l!þ îtÐ-hÄú5@ýj'É©íú_È5¡Ü¨Ï8/é”±¨uø#kÚs´Q�’¶·}©„¤„<„q÷ƒŒéH2ŒŸãÙÙ —$"Q RKŽj ú_žU˜ÔZ´ä“»õ eÉjç¹é溣j ¢. 'tš€Ð–š NÑgµ¿%}¡\‹M ÇO€XÏ©˜(ìÓìtŸÇÙH€g€ ÕRÛÙ ª½y7ÌãÞ¼y[1OüñæÍ›7˜2™R©%ÙI‰zP´ †`â™I/"E@À)-#ßE·a¿vÄö÷ö)O ¸H¹™Sö¨×_§>üË€ò¦Q“Áq•3'¦Ñh-9kÑr:²wØ´U8¢"“ë[µv»#©¦@Œ¤©²íˆôTñ9¹±TÍa0Žk)0Pø9Ø?¡½= ÇKdR!{rÊeϸ¯ÚØX§7v¹}sYÄçýìÙ3qÈàdCêŽv³Õ¤;àYÎç ”~Ù'jpÂq~¤ºúÉO~"㎔?ybH\ó¹%’’wø»b—ùu¢Ž }·MÖ‹ë¤;/ºÆU†Î™/½yóæÍÛ›°ËTtMqà¼ô_ž�äÍ›7oÞ¼­Øk¹Ç¤=)+ã*Çxóö*ö:*Aßu<m6¥iPRÜŽÕÄÖ�ÉGg²à½À@ )Ø$îJAâÉO›ÍAtˆ('³ÐŽ{„”€Lª¢ Ý °S&‚Î3ƒ±–öùAÁ»˜Ð)coBN)šê„_•%æUpcÝPàŒ‰0T2)[pº¸–ºlP¡H¶S¥–D&=T˜TL`öàUÔl*°Š}P[Ài‘zK¨á„ñÌ5ÚÜÜ”ç&ðL(‰ã|™DŠ¢0àã~ŸöOž ~hÈ _»QSÆx¤­jÌfr£RÆ$EM†Ï‰ýœòµóoN¸N (nwir»ç§r¤œª3®^À2aH5†þÑ K|QV1~EÁÔ¤IŠ$x2ŒL:2(¨8ÁAŠ)CQþqä 2 ¬„Òä3("´I{á8ÔEëÜîU¿ò[’òÕt–Ký Y#CPþJ{¯Ï}Í*âë¿%ü> ­‚|d‰ ò?Å<–WùŽ?Oìkì‹6ÄØå~žs;Îù¾Á+ú'‡¢?oÓéLúcÀøô€ñe`Á¨ÿóýÚßßçÏVñgÙ^ø›kû\Q–¸‚ûÐmÛ”î­%ÔOmÿ ™6”taÇÇÇ´w2 ÉÉXÚOpw{bÏm!¶Ø ãÀžÐÇd‰NHe')ö,NâÏ,˜WêQ…6D¤H-Ò{! YèÕ s_‰âO- §Ô|ÕYH…çê×étdÃßNÞ©V9âÌÝO’~-ŸQlç,¸G°áÙˆc‘N exþñy¤ìFÓ§úòæÍÛ·Æ<ñÇ›7oÞÈ®ïÓ2é§ÓéRÒjÑ·;­› &}QÔ¤Ík×éÓÏ>§Ã“ ã@Ô`0‘<<8 þ:Åì°lò+±#òd¸ÙlPÅô‡ßþŽö¸\œgÌNö€7¤ýúàÞûÆq( ãÄ&H-Õ£1;¿ýÕo¨ÛëŠRösˆ‰èÿò·ÿ‹Ô5âIê:;m°Ò¹ÞëÃ9…ÏÇ2‰E!e¶wá­(„Hz'½Ð%™1¹†c§Èå:ñ“oLª···—ˆ?ÎùV6u‡›´ÏEÑg$Î7ˆ9p|]y¢ÄŽ×Éé‰LÜC;IïõÖD•çèøHTyðþœ¤`þ·Û-‰A]Lô…–6‡“9Ï ÙGT…lÚ¤*ƒ5m„Γ'Oèè蘮ñøÀ5>zôˆ÷ ÙyoQ‹Þ¾­v³ZùlY[©vœ~qÀÀ«`lß ²Ï’©3ïô¥²>tuÓµ¶W/®Å×Ñl~ÉÛ›7oßV»Œôãˆ>õô^«Çxò7oÞ¼yóV³× þ¸>ÌS'àž·oµàwr7oήâ×ç‹Ïèk³óÎ÷.›Kõ•òY‘Ó„Y´OÓÌš IL3A‚„|YkeN×y¿–Š$SĽò–šqÉŒ4oy�Õ¤tâÏ´Q É凼¨Î˜Zð>Ñ1–NÚt@9ÿ=äý2Þæã|\îLö‹ q‚‚ò¤I•ЀB:ŽÁä1 B#ÆÚò KàþãÜ›X™´SPø‘ôB†Ø%f_”"^ðW—˸¬ÊiÈÛDV…h¥Ý´IE%ä2¢0c\S‚ #*û̓ã EÜ>ÜnÍN‹ÚÝíh¯RT–JkT`‰2%_?c¸a)$ðMœ€ c°Ï„\’[lÎ`ÕÀ:3ÿ<88$ÕhSÑêQ™4–4H\+öÏ2ƒÁš`FÆ´Ó÷“£ò<¢”«L&¡"”Iª¤@ðeI¥¡~cˆ9u%vw¾êä §„¤ÐŠDùǤ^viµâ8”qZÒ}U Ò\#„h ÚÄï‘þLT¥d¢ÌÜòyù+n—BÈiÓaƒë‹~œñÇ©ÉPRù‡ÇHiŒ§—P(Œâ L¿Ï õ„@Nìšï !þØÕҨȃžq;N'cy…ú¼@LbüØôé`H'ÑoÐFs»#@u)xWúÔ¦¥²×îRUËqcŸšzTmÚ­„Z­”ší¬µè½­m¶ ñ ã+ç>:å:äŒ_ÆÒ.õ¦Ž ’š¶ä9>q‡Û²%êG1ß7 ·K,©û&Ó‚Ë›íºlÌòl¦åºq}ÃŒïõ™¢" ªßs›YÎâ¾j¡&dÉK þ¨ÀÊáq m PÃ:×”bµ@h—- °ªAn­�}•9&0êYrÌ3s¾²¨Ô³4ßÃÙ|BÙtLùlB%ß+P1ÂÚ ÒðµÚ-II†ëEÛcÍ�ýq–¨ô5ÍcVZ<náÍ›·—0OüñæÍ›7˜(³èj2 §qgw—¶oݤ{ýc:ýɇâø`Ò7™júâ‹ôÿûßþwŽ´¾Þcç,òÈÛwèÞ»týú5ÚÜØ „'Ý;Ãûû{ôà¤ÿÿÿ÷_ÓøøDÒZ y¶}ÊNÞŸÿÅŸÓ?ù¿ýI ÕaÇ“XQ|yŸ>xHÿŸ¿ÿ¥8Dd²Ópr|LÿëÿãŸÐÿóÿýÿ’ª‡øn6¥Œ¿§_~Aéo>£hø{>ïŒsyÖÿ1éÊÊ·CüQ–¹ï˜ÿ8)H3PÅyøè!=xøP9ÈÑ‹}ñŠ Ÿ-’‹˜JB3ë¸"ŠáðèPR}Á™EdÈ?8/(þH@šˆS5žçÏŸQ©Öøóöœr?ŽdŸþz_úßÃ)• N§M?’óA%D(!úõéçÖ­[ôÙgŸÑp8 vÇ\ ˆ?y^ÒõÝš·òv¬’‰­ð‚ê~Ä·ƒýú+¬Ý¿¯|-wˆKÌw^Ž03ÞÝ絈÷}ÍÇ|ÿï¼C=�ïÍ›·wÝVYÜs«®òó¢ã<éÇ›7oÞ¼y³öšŠ?Ž�Q-þCêñ>†··eocŽ÷mœGâ„î¯ÕÓœ±ÂqÌ‹ÚHëÓŠ)é™´S{zN#(Ñ”9m3Έ$L; ÈB;/$M J{kŒfa‘=%Q xÿ¹ iÒ )4¥IN±šAE� g vITš|œû䞈íã‚æüÝT5Ç4ª, v´Àœ&mÁa‚fF/K•ŠÏÂ�?_ÆŒ~ÕiŸëB@Âõå¥{J%ø^ªí!>WÈmF9ŸóDe´7ÏèI8ããOTËêêâ[¡(ñ4',Ãé( Á|*$¡vÜ Fœš�FI•Ñ,›’âÊGÍ”Ïh™\³–À@ä¸r¤… 4 -ˆ>h“éd*„Gpˆ}vfóœFÃ1Ó“'O©LZ”^‡KÛ’qHÔ‚ öÑBV™Î&|Ü\Ò«aŸS®CZ’%-%„gÇ ±¡…ÔæbRføï—×™ Ò;ÂÞ(”k�6^8,Ê…pL‡B •$Œ2}†æF¹¢¾ÃýMPÊ1JîªHddê"¤|ŧŒòHÛôLhûœq×H0×(J¹mµ˜š4¤`ZðØiðWäiW(ýà?©;_7_|˜óû,ÔuNù)ʹ.YB ¤«Ð†!“Á?·ª1%T¡@àO¨àñ¼}ž16›”y9cÏü!š·ÒªPÍGŒå´ôë* m`ˆUØJ£¼cRŸ)Q±ŠBKT“ö „”âLÊ÷A·Íý’jþlN›\ïmn“íØŒw¤Ñƒ.Õˆï¬|:¤9ÒV¡Þʦ=ã“E\7„Ú‚ˆÕç¶½­'|¼ær[6cšñçã\Ó@#¥]N7ÖKê¯ñ˜IµÔ$½,7²ÏG<^xìæ&užl‚sjZð°YÿCó*}8|30Ä$�¹-C:‡ëR¿AÂBÊ5ÞÐ^€eM6€™?E­ÉœËôaQ›‹D± 8F 5ƪÊf4Ñüô€/bD?ûb0àb ÇH»§²U…Æ*£R´¨Û[Y\¹ÒïZª—7oÞ¾ëæ‰?Þ¼yóæLS-Ó.;%<!\ßܤÎÝ»”ÿà2‰BðÅxRÒáñ³£u:8f0¢Ñh(„­ ޿ݦ›7nÒ÷îð¤=¤;`Ï?ûâ=yôˆŸ>9ÊžŒ° øãÿ˜vwv…h´¾¹!ŽÒ„žÐçÓÏé«/¾”IëÎÎŽœã«¯¾¢ÿõÿþOèƒ?”j¼ƒÎ —GTÞ*ŽŽ#~¬*µ¾ ¸M"‰à`XÉÜÉtBHÒÐóçÏEþ×¥8ƒƒ RÞ»ÉyÝ$ Âh Ë{!þ°ã Ò”xÆ\HW ü˜\PšÊäŽGÚH„8çcÄís|b•€øœ�íözÒëëBüi4&:ãtÀeL*‰ÝííkBJ‚¤/¾wòªøD£££#©öw’²¨×}R”.ôæ…;I==ñ’#õš$’oÖV¯æ ™-Ò8Q‹Û¯k -,}I­õRª?Õ è ßÔ Ù]òæÍ›·o]¶°¸ª4àÍ›7oÞ¼y3ö*± õßÔ:ñ¶þ{QzNOÀõæííší`îõ“$¢4â…îS¡±ôœoK¨ýˆRƼ¤Ý¬ vlÒé x.È ŠsÆ ,H•Iù¤C^¸×¼ Ï‘ŒWÍA*š……YHŸk!a9‹èd6!S¨ˆ¦Hýr—‘©ß7¨ Mà^Bé…ëÁ¯c^ŠùGŒ Nyß9clsÍàXØ&ü~OtlõÜ¡ã½ÆŸu@Ü&B¿P!{0VIFñç”céD/ˆ?F½Ì©ŒhÛ~ZÈ5P ÜK¨Mz¬ŒÛKÈ-\¾OWl262ÖˆÜV%ˆ \§Ð*ɨ*%ÕBiXgPSxÕÕÓ¸Ù¹ì±>>¾Ga{6ú×)è8…I••…´ÏdžÑñè<ŸK{‚,1- ᦙ„Bâ9͹=ù˜˜·”O0áq� QN!鯿…(ñ…®)¹"m¯EÒEA Xh`¿øS‚“ì¢$•F�ð[8…²_Y(Q£Rª´[@q ²KÈxqL½ÆDÌXn) ,ùä„ÊÙˆ‚ȨԘTa‹¶sj?¨ ^¾B#+T"°”ûEÇŒY'<nMú&c¹<²dQ“ m*b²9•H?ܦө(ùL¸.óÜd�( 0`°e\®ÙÈÂÖ~_ˆ0QIJ-´wÄË ÜFAõ>MŒ“¤ÛKcê¶cJÁLá*ã{qJq¦åú5”²,ËcsÊ8ôŒñè¢侦êþã~æ{Øöõ¸ ÷ÊíÆ¿çû#E€rD§|SESÅxw@»ÝˆÇ˜!†)IUñXgL~Æ=Ë…=µ¯B~ç«PÉÊ0¾¥l8rÖB( Œë^Õ@¢ Ÿ_BÀ*+|]Æ<žAlKûr‡†65¨{‰Š’iO¬9¸õž„ÿƒV1<¥éé1Í'Cîc~^qÑ>àã…B"‹ŒRø…NéÊQ~´'Ùxóæí5OüñæÍ›7“ˆ¶zWMBñv(â nhI*ðI[ÊLáãõöíÛ¢"ƒ4OÚJf‚‚‰´FzA &Xèpæp&«ÓùTÊñ$i¤B6R œjäе9Ý€´Rpð í:ç êEVw"¿1³Ê<ežÉ5€y5@’éðõ Ý ÚRo]»vMÚmÕœCiŠ5²¢8fÂå€ô3CŽåŠô3ãò§ÒfóyÎmhòKKÄLar3»4]�.ßçÆ+{îÞ½#ûÃi{üø1={öTú¹ß_£ŸþÙŸ‰’ê€ôb÷ï߯‡½½=úä“ODr·¸@Ö|¡wúÍ/4Ö >®ªõ÷ƒ5f\:UK ózd˜U�Ü”©jÊ>Þ¼yóæíë6OøñæÍ›7oÞ–m¡6úŠÇ×Ô~¼y{ûvþõMcbï°…³L‡Ìò¼J!Uð"÷”±µÌ¦òydMh™TJ ë‘Q‹žÖæEö4eÌMüÏqf\º?$ÎÂÿ¼ToG Ca…YŠU˜€´ b*CCä�¿{y®ˆJP‘ÛVeEF¹Ê éˆq;à¯Z4צLÐ�P7`ºxµ#¤!‹m žV¥¤rÁ~B²©µ“¤‰f>— ¾ Qüj°`h eA&l+J7Ü ·�îöºÒNÀ% ‘IeË–ÿôÙTÅ%*¸k–ëæk†òÈ?1ã«À$ýMê ²zí±áº€¹–enði2”Š7²} é¶tnŽ¥ )…¼?¾›r=@„hÑcV‘“¾+°„š¢†k)µLZ"Z>%0TãºIõåÈT2Nìõ›tXæx´o§R¯ ñÇ´¡æ~˜I_`ÃîQÒâ ¾¬K@Öh¤ —•Hy ÂXê!㣙¯5°*O8Žõ&2D%—B–*,œ««¶Å¸@7Ü/&ÍTQ#Gغè71°ä¨ÏbI$„ŸF¬*┢°âÜs˜·D>7ç*%ø4á>Ãý<ç¶èÈ Ž%�·(2âäz¹.¸2´Åöö6Ýlt#iKM¤­æAJS>>ärÑ4¢–Uå7Dš@ÒõážÀùŽó ÅɈ¯e¶ ýâÚ««TW&ÆÜÿŶ¤„eõ¡¦BtÊ(¶÷‚zCKx[sÏ|Œùه燛íŽ\›K·†µ¤å“û=ŠÍ:Ñ[´‹IÓþ÷Í›7o—›'þxóæÍ›˜q¾œD¬LÒÁÏ ‰P*®ö)ržXæÈ)HʩÃMÆO¾›¼_då[Ë.×21”É(< JÈá\Jþj̈áØ6SDÏÄ&öEéÈAÌ.n“€^‡rþû`2¢Ó|N³H‰\l™<¾ÈÓ€ñÎÇ#bCÛ\Á•ÂL-À�Ñ!½ ¬L*Ί‰óîõë´Öí °Ðl¶„ücH;­­õ„ܧǘ%û(-Ò¨"éɯ Ñfïù·ý¡HÝ"Ò+0üsë�•rŒp¥@¦‚Ó—ç™´ÈîîŽLðö…í?éÞ½{tçÎÉý‹_plát¼ô÷7¢ ÐI›¼m°Ú–>ž³Ó íu#7HHp�g|î“ÓSZë¯s;4ŽëÒý’Éú¹_éŦiÜLïjZÕ«Ç- \%ø,/Gþ¹ê®/Â/KÏb¾_~]j‹¯Å\Z¯•(Õ—¸`½Ðæ©—ZÛÅ%+‡ÖþVõ®S˧WËEŸS‡‹¿º‚X,yóæÍÛ·É<�æÍ›7oÞ¼½‚½fðÇå>Ü9AV^}ÏÛm#xfp¶€êoäÒ…‚½!}Uu9¿*‚œf 9”¦}güz˜”èŒ&Œqõ‡\CÊ!­("IuM‡”ð~¿™1,9ö ¨â€pPU˜�؈f,”bÈ.ö›`«@ê…¤ÒÙ!„J è26Õ*H­¤¸NóŒ1U®+RsA¥‚ Á~\·ÐFkhƒt_x¯£‚ -!VXRÂZ —CIÄ`´¦†TB8cŠn§€ñKâ뉸ž1Ôb °cäjcDV§„ÛE—Faç/È¡ÝP¸‹¼³´¤ÄZ< ©¡…ë…%ž�i$œSÆ{¼\/eI«¥¤ÝÞÊàzÀ)u!$Ô”œ/”TSÊ’o qjÊxs6P™ÍäÜ]`ÒŒŸ¶ùïA©H©ÕlSÌ[ ùúgR6UÄ%’þKJK”}ȨÀ_Ç9r-m¥¤š î irÑ‚8ÅŸÇÜ9Àn‰Û,g }2庉ÒOI“ Ò—ñ6ͤ]¸[ù˜BÆN•FŠ æ 2‹ßÚþ-r£S$ ¶p»FÈ^VJÊ-ùMBÇ…!…‰"×§F¼’~AתڸaHoÚô­Q6"Q¹ û»ªª!U)$a½ M d”RÛ £íR÷±%þ€\RTµp- ¬á&ÂuÌç ù¾|Îm3oDÔÙ_ç\FÆ=<…"Ö3x¬‡Ê–"‘MÅ÷1¯?ÜXoÐíµ”vgZË!s uÄ["}¤ — E¨€!ð€ï ¶DÕGî ì"é#!Öðuånt×tŽ@³§Ú÷x €Œ$šDz¡ž³Š ºP`§øãÈUx¥%!çÍD±k ¨³øžLApäͤ*TUWq¨"gÕÕ„Ì}#ëBö*Í:ŠU-RªÖ™_£]ˆi¼ÄDÍã"Þ¼}·Í¼yóö7å@.ÀñA„ &Ɉ„?Æ0þ +R’˜p§4ôèÁsž<9oñ¤<6xi¼EáŽøjðÄ»xb ò¸QB­FK@NNä2¤­56úìèLéáÉíÏÇ4OÙb!‰­:OH‘îK!Ê„¡Êm¤Jdæ<¢Á×i˜`† ˜É{@v—úöÄ2ÕRgD1Õª ™ >dr1Ïæ&¢âèàž<z"äŸããþ¬4¤LÔÉæ7t €l6Ÿ ñ¤ŸV«)Î�&ð7oÞ Ò/~ñâ4€|„íg?ûmooŠ3 ç<:Å"¨�Au jEù—IÛ[ÛÔétÙYM¥¿ir='ÓŠ�txxLë뛼m¸ø¦Kï²·zi«|HËò)Wó>‘§Y&°8‚ãˆÕ1±«“7íJ¼È9Y&ý¸×79¦—ÉD b•^8ìWºhŒA…bZXÅ}gÚ]-9ºKí¯h%*î%%e=žîÍ›·ï€]5ˆ_dôæÍ›7oÞVlÅ|«+U¬þƺÏü”·¯Ã”ÅÚtMÆØ-úŸÝ—Þ¸}ÛÆµƒ2Dñ'I(NT$SsóME-‡Ò508s]cÆ/žE㘵yŸÝ¼¤—Ð&ÃsHøûæ<ácC§ññy¥é4Жð %³’èË `„!3Ø€Gà†³ ,Ü l íÊlJH#f¡^d’Z©�é‡qÀ øl¨„{‘ ËÆ¤¬r9—áD\|ŽTY|Li‚1h˜ â`Ѝ¢ZˆtÛzIÚ¬2RLÄçâDR… gÄ|±Ñð†‹HÃ鄯Bž*èàt@ƒYÆïIÈ¥(¹”H¨›E¢Ð£²"2”’âLÚÉDHI’2Á«¡€> ‰æ yn*˜$3BÊ…äïƒj=÷aÊ}…&eV…¤Ü* Ô^JãO'=<=•WhºŒ;OÊ&õDí$¢Q·GÍ›ÔeLvÿh@… ®ŠÆ*JƒÉ&!ã¿D”R@–(rÆqgF¥'ŸqpEMþžë5¸ÜÄ(©H%‘„,fˆ\£ñŒŽ&¢Ê„ †’J,ÂV±b¤«$¼äþ¼0#=sÍ4Æ H!ÜfIFI,„7Q¼Š “š,´ QEi”úsC„‚EVáÅ}Œä$¨Éðp‘ñr°×J<R¿!…ßq(Ë.P»›Ð¦Eƒ‚ϵµ­·&•ß‚åtoÊÁJÚz:Ê$h*÷ªÌhtÌÇoÆm^>�1«KªÅc6L)‘.B0²Q"jðþ4£ܯw;sºÓMè_ok ‘íw5GòåÏù\£Ã ¥™!‰¡•~lÂ{r›f¸çÂȨ{Õ¡hQä1¤Ÿ Â3ÍØw¡ªX+AT·«½ùê06Ò“)û x÷ˆ¤ÍCº7(qIò=°©¤ÏAÌ„”ŽÔn·㇠WàÒ·¹çÿ7[¤: OøžE éÔ°&ƒµ…ßÃÈf l ÁåÚט<]`«¿*îwî<M$¥.OæÍ›·ï®yâ7oÞ¼Ysª)2‰gÇfÊŽÔãéù/~AGÅTö#8ŸE´·wH?øÁh6º½TæpÐ:ÝŽH®þò—¿¤‡ð– žŒ‰ÊøÉO~B}ô‘¤þBdEÎ*$#ÿáïÿ^Ò‰VRtÌÎ⣃ç2ÑÿàƒØ¡b÷'Žh÷Æ úðÃyR^Ðÿñü;Ù7äs·g#*éàÑ#ê>F=žì¾+øU¦¿}G³'–'ÎPU:>=eÈw"—5È7£ÑXÚR±ò„!ŠÃIÐÂÑkwÚ´±eÒyœgóÉÓ§•DíÖÖ­õzòº¿¿/d¢ø‡°2®¥DUìììP÷ÙÝݧä\ËW_}%¯(ö{öì™ôÿ¯ýk®ëHBý~_TíX6okNþ ¾‡£§|{ìÝ^¼­ÝZ_²ø¬l‹ºàûúûêöxñµWÊ_Þ¼yóö°óÏ#ùxâ7oÞ¼yó¶lõ8¨—µÕtÆuÐyþL=å±7o¯bFÃ)_¼_½ÀœºðÊ ”_¹U¾(+v‰¢Ïßóû”»¡¿U2÷xÀøh\‚(åó€"UÒÎiµTò{Y¯¯‚Ë´(Ò8à#°ŠHÑ%Ë÷eM=Å*ɔݗÛU¼Ð´\YnTzȪý‡JÄIT©œƒ²1">GnËa (©E~ÍD1\KÚ(©¬‹œ´* ¡€Ð“CÕLÞ?± › IUAǤƒ y&D“êŒ(iµ¨Õíј±Èùl*߃È$ª/äà]-î»k¢C`Òª¹Ô_ Ä!› ŠçHm48>|YCÀ³ùoHÍ ½@àÉfs>&år¤Å "%d µÏc=°ÿˆ±×SÞJJ)cÓ3>÷À¶CbL£IÝ­kÔß¾NÑý‡Ü¯AUç*]°k80N“ÇFxªæëéª68,ª@¡=ܨ»ƒV‘'/L*­×e %õ,—öÄþÍ´dl7¶ê>¡àlè?§8$£×bû¨ú7WHMVpûƒQʯ³iFI‰ºNŒW¾^Œ?¾  (FÒ‰2’Q˜Éí5‡»1«¬âO(ÿòѹ?sx6Ù6h7"ê4Â¥{ ÜFvA2 (Û˜{Øw£‘R{£EkŒIonRÚêÐL!UÞˆ4Òóè¢*…º%ܰ µÄmü>SÔȸgPÌÊiNP~*Eí 6d7´YêÞ@?h£t?ý¬0¬È<&} J¥*ø×A᪠°T–Hcvò°Á–º¹ôÜ2„"§öïR~D¢¾ËxÌ¢ú?7ý#ÄÁ²Zˆ„üfTŠ\È´¨Ù”`9Æ –eU¼L†Ì*�ÕQó·TíüyóöŠæ‰?Þ¼yóV©ÐƒC•¤ M&c>Óï}qôLÔt©¼rDôè‡?üä³Ö4“h L8OOéðèP zJDp(‰`h5[ôÓÿDdK1y  ˆÃ“qE@6™ñä}n£ dO› uÖzôч²ƒ–H¤Œ³çŸÑ¿û·ÿ§©+;ëÓSŠ'CÉã{ópHw@üQµˆ‚º8ÊÛ6çbR®¬„¦‚•\»õJ:Çy‰¸]x;ä6FþÝ¡Èx¢Í‘³9IâH@eg:™Ê$NV¯×ˆ9pØ@ :Ø?taxÿçþç’ûwûÚ5IÇuôð!ýêW¿¢ÇOK¤�¢@~ö³¿ ÿøÇt÷î]Údg ÎêñèÑ#)×Ð_ëÓ7èü£8¨P‚“Š”a ™üá.2à-MÜß|àÁwÛ^µÛ,ò¢Â]ĶRësAs'?l%ž^hÚE¤xóæÍÛwÄ®BêyéÞ¼yóæÍÛŸ¸½N�ÈUH·«û»c<ùÇÛ•ÌúÔ¯6‡Sä‡Ù²aa|< 1d`Z&Í”®/Õ=JT)a#}P7D¹Æ¤Û®Ç¥(“Ú)µ((mHÿ£úâ]º4D¨…”¥M &Ê6®ŸùPÚ(LàžÎf4Ëf"ß#$ þ/ãsáUˆA%Ôs g”sØôY²?ˆ ÀJ«ê®«@=‡ÁPE.(k)Ÿôt*¯ÓhJIe³¼ ¶É[‚7¼q㦼î{zrL“ñPHDRrTiÛŨ¤,¤3lÔ_nï@ÒD ñ‚ñÍ'Ó!c¤¢¨Ãׯø¼À…ÁÇC­i³DÑjì‚" Õ”Ú€%Of)·ÝlK�c›±ëFž A û 766èdk‹’f9¶,A«$—ŽÍvfR>: ÞìŠö€²N’˜”V8úbÈu‡J»ôˆhg¾#ŽBQ&)Ë\z'2×'ïm攑«Ò£Õ"•œô?”Ÿò¹`É.µV’DԦݮŽÇþhOÛäëD˜ÔQ&Íê‹ûJï´Ä“&ϤO+/}V¹1ê=fŒ–†„VXâXiÓ“ÕîG u}`Õ7o^§Ÿþä#º}kWTm†“ýáÁ)OÖ ¸( $ôߢ´U[’ãB›ætRžÐpfƇ²„6¤‹«Æ$·l}2«äR£:4ª:KÄßúï=­`ÿ/û`ÖÕ}è™0®°~ƒöLqŸÈúKdî‡<—q>F¢’äÚcyAßØ×Œ‰†¤`3 P…Ûðúd¯·‰!¼ÌüèÌœÊÿèyóö7OüñæÍÛwÞ„A¯lH‡D£@Z²¤!OþN†Czæô€'¿×®]ã `‹ž?Òöö úà¯~J;»[¤ƒ¹‰PàÉç/~ó+z´÷€î?x@{OŸQƒ=¸6;Æëô½{Їßû!5Ø1<>>¦¤Û¡öÖ&ìÓƒ¯¾¤Ã“@ª•­Ã“öÛ÷îÐ{;;ô“ï}L½µ5Ãz·s·sÿ_Ñ÷+v"w)é´èÙÁÊNeBÚœ4AZžƒÏù)ß`ç&*“¾ ºê·gâDŒyâ�`ÄGc!΀Óa' ywMÞäRr!cb UlŽŽíëOÖç"ûÚ@z4žä·[=!þ`~t|*m u ”³½½-¤8A˜ä¯õ×èúИßïP¯Û£uîŸV»Å BFGìŒOç3ÆrÉ{ÇõDÿ£Ì§OŸJÝ@jµZr^ìóñÇ‹Sâá#£ 4Ÿ›ºBªDV¸ôí‰þœ{¢¬«–?¾GeÅÞ Â3î>^|híªe˨oN6V䄵yV¼Ä5×Bôò™#/YÉg}AuÕùyóæÍ›· í"Å¿ÐèÍ›7oÞ¼}}vU‚†'âz{V&[^X¾šW¶ƒã°`lHúOv|‚˜�Ò‚â…ìœqˆ24:eað*Ã?ÑB Ê•²ª¥(€œðk›Ã5Òê@-¦Ì… F!ã!T*ê;¹Qä KIƒåúxd -.¦Ú‹ Wu Üêà”Q)2!ÿ Oð:Ëx«Ð#õã}Dõ'/…pJJ"%iœ�²!ðU!óZZÂQÊ{·xy¬¡¹ÞŒß†¥^ÄYq¹%”? ÎØÞŒqB©$HF8O�"…!þ ð0‚Û äÎ…ƒ€³±µ%Ê.q£IMÆŒEN÷y„²9)‘j£$¢m¡ É‘` ù*1Âw°„–ÙdL{OIÙ¨2ˆ"(Ź%ÕRA|)»x|φ§¢8Tf3* #gBQ™BK†‹Ë %•9Ú^ÔŒJ“)el³Áßá:]§³ }-ÝÏã«€OU©!%V1‡&Éߤ †£ MgS‹kCÖ #ÁOp3$µW@+-A­béWgBøÁ˜ bNWZxbŽ=½ôY2 EAJÊæïf“™I©’H`nÈàÈR¥ŒµLˆ$ Qlµj@y)jTB¦A[—&=Ør4®Õ'I 7Ϥ^ØÄ¿ þäÒ'¢X#$0c|ºv«Ãøt›Þ»»Iw?Ø¡[7¯K?Ý?¦üÓ|J*RÜOŒAgÑ êQ¯1ˆLMzü¬›jš Å4Õ‘¤áKxì6‘ž/„ðU¦!˜l¦ A²Å#C¶*¬ª¿(_–LT*“ŠÄÁŶ bI 0MõOάµØàRT rIÉEs!é@© iÛp¾DRðr¯"ˆ·´ê<B(aKRvͤ¬PB©sÁ÷?L”’ÐF ^¡\*°VÅñï›øM8ï÷­zF,ïHÞ¼yóæÌ¼yóæ¨ZÌ7’”‹-h4Ñ!Òg5 :L2êµS‘l=ÚL=všn\ß ?ºË³Æ¹LäqìWO¾¤ O²={DŸöµ‹úÍOPoÑ7nÓîÚ&µØ¹¢á”š­ï\Ç÷ù³§ôäÙ3>ߑԩ§®mmR—=÷oݦ­kÛKdƒËg|þè+ÚìµH7B:Óðd_êpš³ã¦Rv°•qâ¡.Tc€¨o`¢ ùäðH¢Šà@Aµç˜7\'È9ÙÆ†€ !Í€ s||"Djp,üMD| "£ÝîñŽ0�8eÇ'Çâ„9BR£ C:á²úëëtû½Ûtÿ¾‡íàðP¢%Z(«Ó5¦ÉtÆÎçˆÛ)•¦““S9¿� l¨‰ýÉ?ˆAPGuÏrQüqÑEp¸•SÉ¿…ù¸¾ôóZĈý\€ýmö$óø*ã^ŸÝ”“ ¶Ïˆ—eݨeòOu&­jiðÈÇÕÕ~\$–÷å¼yóæíªvÙ‚'þxóæÍ›7ooÖÎûÍ­€üo¯·óìª$±óö3Á9çG/9\é*㤤iÎóäÉI-ïÈ?Šæ® éxæAÉ›Å9„_¡ ±*.%IÚz(Å ¼Pþ¼—€DÁ$”1ã^ ”R+æAÒà/Û%/¬óë„ (Bö(ªH9¡v„-dÁÍP¡Â²yÈWJQCqiwrÊò¦Ф~ ò€h�¥›Œë ÒNàSK4ÂIÕ&ÿ!eÈJ¼­ó~c5£iÑ>c©‰”c뇅XfSQA{åñœJ\'® JG¸®À¨Ì4Ð&IB9ã¸H‰Ôˆ#j0ÎÙh·¨ÃØäh8¤ÁÉI`ãt8 �Jæ<”ñ–›²”Ic'D þHE±¤º G@à¶ i>S *æ[[Bò˜ hĸëP›>) x$°ËÁú&÷©¿µÍxfÒf›TÜ”fÏO âDÔíôA3ÆE' §äs“z lN ×uRdÐh"+eÔ¸$õ·…âTH0³yAn;]gpPiûDÛÛÇÇ<îbÉÑ&ÙÃÐ÷ ¤#Þ{<7$.(É&}–(C»‡¹ÒËÂŒ'U ÊK¬Ê úGŽÇÞ9 ûCI—SÁÜÆ£©!zÉVHP'®½äö…ÂLͨiÕƒîmNMÆC!d!È*@™¤ã2i¹&Ü&PXëZèHqùŒFÓžÏÏŠÊoui½L A`ãë Ì÷¨d ¼¤ë úàãcÐjõyì|¾?gGt2Þ§Q6$JJнˆÇŨ:U<¹¿CÕãñÌçås´ƒ˜Ô¤H{͘nlnPƒ¯ÿé^ÚÓZ‹‚¦Q‰Êf9 '4ŸÎ ‹ É',MCkç@2TÁ úÆDP½ÕÇö^ hA Z Kö²DÅ)ÉÀb³¥ÉÍ'Ï'(7¥PÞR¦ôPҨņ0„WeÈ>íV›ºÜ—Àù¡âTà>nò:DkÊ÷À¯oÌý6ãæâ~Š ^†qíÎåTÁè혢óÉ=«»óýUçZ~NæÍÛŸ¶yâ7oÞ¼ÕÌÉ9ÎlÄ&[FSÒA‰RÍhd>_>ªB‘Í4Va˜[‡ÓIç‚•¯Ù†ˆO$ß0$-ù}ÎŽˆ!ž½ké}Æ£1=xø€ö÷öèôôT&툀Üíýû÷… Э[·h}½/N®û‚Ðcäa±%|ý!þ$I“è1=þœö÷„T„H�Qj‰Z(¼Á9zk=‰†@¹(íâN‡ËIèѣǒªíÚÖÝØÝ¥÷ß¿G7oÞG}ùÞ{ïIÿ¡lô5þFû÷ØyBù;;;´»³+ä!çÒI·ªšä°·ïŽ9ÒNíºˆˆ$Ͻú½¶¤Ÿz9W|†(ŸìË›7oßMó¿·Þ¼yóæÍ›7oß^;—tÑgi—s=à‹ç…ÀŽ€ aq„ŒàO·©ã£ Á‚¶ó`±°Êг°M ±†œB‡¢)ÿ}Td²€Ÿ�çâ÷^(¹ •)JtIA æ3¦‘‰P¶ªÞ «¢¢céBn1Å-¬ËyKÉf¥l ‰ÚF!*/™¬÷+)‹K5¤Q€y©³(5C=&Ð’… ªî¥M+æd€´(û(jµULM^"K¹ÌP›ÀI§$Xž(þÌHó8ÉEj% ˜ºj†ü ›ŠŒ"IÌŸ7»luº¢îÞ]ëS·¿NÆ#õxHsƇC~Œ©œó–ÏmŠ´Bp‚l¼˜(Âð~óñLR õ‰!åSÒÓ‘IqB™¸Ÿ'À‹¡4”Íi<<•ñÞlwI¥mRa"çK:=£ÂTšÔ_PBÏtaI>¼ˆ˜Ï¨9á²—ÀÅËŽh‰+…°JQf™ço ÕF #À(Câ‰E}Å)B91l%ýjˆ0ùâ~©De#M´¤cîW-éÞܧ âYâÒ¤AǪ¦ØîÃH©çËÐf6¥Sš¢ HgÀ£û†q(„ŸÉt"Š?MÆ…ƒPÉF¤Ñ*¡V¥´ôÞã:ÏCNÁ©£†H¡w¡Ñ)üHª´$•s¯wCº¹¥èÎÍuºûþ6mo·¸>\—ìXÖ)†ÆÚAbâA&!µ»MjÆ=Ò<†1¾š|C&a‹û7¦É¸ +iS¾ÂF‹Çf‡ëŸÑñ1_ç4£(áëJÁ¾g ÉE3!À‘%Ö)!Ò‘Œ÷@©šª½–s¶À©ÖèÅZÊyÏl÷ šDÌ9¯„åÂhC¢ “¯™6¤åyaU}`õ´g nËzŠIuÇו¶(iu¹ÝÌ59®ª?‘a¡Q8¼¥µuáÛs—.ù­òxˆ7oß]óÄoÞ¼y# 8V={j6§0Ë)á¿›üwëtDì! ‹>9Qcû”‚ွ\Þ”`ŒsÑMic’ÑÆ4§YÁdH뉦µyA­;,\VÄNU9yùt1—Ùâm· ;F%¢eØúüºÎ[gÂÛŸ›'±õÉ^{<¥Mž„7¥ÌÖñ"vøà\õŠR®w çÑ*ÆK´Gê7/8S•~©â<ñ$Ä€( æÈÄ9Š+rUp,E!9z“XÈ;’g—=³¶ ã¸8N)‰Ôî´Ùjð„]Ñp0¦½½=zþ|&“©Lâ±_£Ù‚&ûPíY[_“t_ ý€ „zásLà! RäUçܦ7oÞ »wîÐÎÎuQ#‚Ai$ ”¿á>xðª5[MvžûRÔ~F|=7oÞ•!RE|Mcõ¢_æ4êO3íL_ðÞÝ5õ×—3+½$3ìŠ3A+&ªË�\çc™&= ½#¦Vþö¥7oÞ¾æ0oÞ¼yóæíë5ŸÂËÛëØ"àåbåÆºÒÏ’º›ç¹ÅeRô9Ñï„ ©€ñ©ˆ±7ew”]¸å(p‹v‡^,vC e¸æ˜qN!ypóO¦ h£g”†M tXÇ‘w„¨ T?,£Ž!h]É�Uý U‘`EÁs¡Œ¢-A¨öÞ¥òR65„€Ã)ÀDá#´J%†€ÔF:–Sè¸ÿ¬r HNÚÖ?e<"i'¨Š$QÂ× ± Å˜b'ˆ¨ÉߨÑÒFD¡­;”SšiLëŒIWÔó•£!ŽÏ<Úߣ“ƒg4 ¤~ŽðS¿n×®¸“*<õéÓ§‚I¦©I[‡Ï€·‚ø#„¤žRM¸ïƒÃŠâOÒ¦¸Ñ’cP÷`2å%ओٔ ¦,`fSšŽå;(UŒmpfd€µŽÂBƈ?¹ð0›^)°$SQïÑfì8¬Ä&p2d|ˆBOXõ ΃�[`grŒ#øÕú0¬úO”“¬‚·ìòÐ#Ö„Ò—0`Ï&U• Ú”öç×cÞ&«NæŒû„*´/ÙÀa|†þ‡ Vks¢ø£ÇÔ:â{"Ùñ¾lÚ¦°*‚âÌý ‹E¥¦E[›k`úÞÍuúèv‹®o6¥>Øm6ŸJ}ÐÞ#^ˆ­:>ðõ.cæ÷nß–1Œ€Ûüh@Ñ<ºá{#…Û„æq ¸y*mX>—I“•óýzžm‰5¢j†ÒÖZ¯ªª]í·_ÕHBu »þ¸6jAvŒ€DÆc. UíqnHTh[Ý¢Žh7ž$½ÿWߎ쇾B6”+Ï;ä[$<&³˜Ç`^õWiӬɸ ÷†#ÔžDÕûÅ…×Ò}¹O.­—zkõöæÍÛ»cžøãÍ›7oäˆf"ÒL$KÄéÜBÍ'Oª|Á[³‚6Ù1Š|A”Hò[6Cë_<¥Ñô`LÓŒ’0 ŽžÓÎÑ„nœN©—•ÔçÉq‡‡ft2¤Ýã}t<¤.OÂyƒm‡)}|8 [Ï(ùò!ÑÉh©¾ý?> [ŸEéç"k™ÌÇü@/dò—·>Oö<1Ž‘·["[,S})Ñk·šU&yqqBØá:a¢-Qüwœ¤ÆœÏe2 Ç ª=˜®¯¯K¡˜œãšUa&«ˆÆjpY©¤å‚£tÂmv|tB_}ù@”z´uêI-rµã386ˆr@žjy°œ]àdÃÑAÚ1Ôß¼±K»×¯óñmv˜3!,õzk¼Ïu)8î‹/¿¤O?ý„Þÿàúà£ÅÁúøãïÓ›·…@„ëE±FÓ8ç9{/ÙâÕë*ýÄG®ZÂw¦qÑ= _°ÁjãþŠçÒÚE.¹LïIœ’^”é¢ÚÖ¥œç[/­ªöùuX>FÛÿõ+9zuª“Ò«×]¿"oÞ¼]Õ<èòvÍ··7oÞ¼yóö ™Zy­þj±ÞþÔÍ©pÔˆKéâhQtÕTa—™#§¼‰²Þes·©W"Jó9奪”8"Q®!Iµ„¡€ãT`@ä8ç ”ÔŽ!Ð  \ÂØ×d¦©Áû´£€â &$âÊ•!Íh«BNA |�ìˆl‡.H;"Ï£b‡?,6â�é'®On1”¥ôédIFd€p^hóD¹.…EP‹Á?µ–„˜(Xl„(B55þÂ Øø”‹1ʘ"ÒgEq$8'°I(û@™¥ÆÔä¶ISÞ¢HI¤Û²8¥¤; ¬‚ÆcŒ“Nâf›šmƒŽ'dâ6ðkf9H)™µÈ’µ LBl:™ ñAMšŒ'Œ£†Sî›\È2ÿ§Õ„ÿ=,3ŸŽ(N[¤’¦€²nGÊc¸[>›M§4/ Ê#’TmB¤È&4žÐĤA«N©É<äq!•«nÎQšþRÁ‚Œgø ’ÏËô³^¨�Á‚ÀsÐ6hc@».ýúF„Z¨¬´š \£ªT¤2§($‰Á”U*m3Öa±¨¸“¤&Ó¥!û¸çþž"]Òz1n ’ú×…wôÿ*4P¦‘rB<¶ƒeDÔ˜æ2Ð/¦.ޤDR§V<nŒšLÌc±‘„Œ'ÔHŒ!7h½×¢ÍÍ>]glúæîݹѥ÷/ˆ+£Ñ˜NNøu<1Š8Xoè¤|޵¢L°ôßßrL–ÒIÉ}våœRÔ„¦|}§®+¡n›Ç¾âjsßóu|oð!eÈ}¡ ,–´Z‰ÁÛM;-‚%]Ú>¹‡-†ê”ËÊ%Ù)Ó:Kfq„œcÆí _¤MÙM®wžÈý¶Æëu„-eÓÂÕ¥PR‚¡~S¤´ãSàþÇZIÌí!K!ùbÞ 5ãu†ljˆHù2˜6£l9eÝÛ³—Á3Ô%Ç]%u˜7oÞþt̼yóæì¢¶ÿ@å6á‰b 鹨aÛ`·p"ÎTa$#ù¯Þð”¿ù5=Ýß'Ñšµó¾ÙgŸSóà„v væš]žh²¦´ÆûGtðÉhÖí gZó4ø˜ú³L¼®•§ì³³ØåI|ñàí¥ÿ@'ì�Ö§gáã§tužÎÅñK4"kjòy×Ù±Ù! Ø1Œ ë(»(sµôfíŨ&à×®]£f³Á“s㸂Œä")0YwQGÎ@Ú'`OŽ4L" ¸M•0GôøÉ‰^€š" ß '�Ä´e•/ÎTWç0e M´†­'Øÿp ðÙ³gÏ…ðƒó˜Ôa™bÀ8{{û´¶¾N›Ç'ÒÝnÈuèˆü,œ18¾­,… \Ïër%Ô¿×/}äwÅ^D|[%úÔ^õ«´áòýQ9ú´Œ…W`FøãÈn/c ÂЛ±³ww½æÞ¼y{Uû.FÂ{Ž7oÞ¼yóö§iºIÊú5µx¡ÊÓzÙx oÒvéæ…„œúbòÊFêÅÞ+p&`HNÍâªæ”r^ÆÞÔ|X-a|W7ÀQ’z*‰¨âBôQ…Y«·m¼.2t óZ€dRùä¿1vÙ²8ã$RTÈzrA Æ!g’>¨°Š9¦,%‹ñŒÿñ>9È:²J,Ê?È|xÁžËÐTˆ D±D/lHµU:‰¶‚Ú)c”ÛF @6F‡–ìaÈ øƒ„ÄדñuäeÄ ûJ*¥¥”@å¦J[ć|1oŸç–Œe¡ÙJ«ˆ#ª8 ¤1%)€R!I(IUƵ £Š¼4‡ 0Pnœ*;­õ¢5û[týöû4a,òŠéû{ôœñÎÁé M'Pg™sðrå€jHM$‘ôE ‹€Ä¡Oîôú¢®¤OJÁ[EÅd‡ùBY>!Œ(àcô4¥r”ÐøpÔÃg§]ÁF‰¯e–†TÆE±ù¤¤ã3!¹RO`IWН ׇӅB°‰?µj)6˜VÔ P_SwªÈ}¥!ÿˆY…—j<”´¤ðdVY"Uh3ÇBÔ ”®Ò}™g‚6å,ù¦( y,›Cé'§PÕ,jqŸ‰‚?#ÆÜ–xEû'HãÆX±J½¨Jé\Ho¢^’(Ôà ±ÅÝ…8#ãøQAÍ‚zƼ¹×: ínµhçÚº}@f‰yMÊ\±¨Hq|ÞÁ‰Q´?>ÒÑá„&“\êÛjÇt‹¿»Ó¢áNL!‹­ë-©óÉ ãàÓ€ÆÓ‚¦Ü°n[FûdQ³Ó¢`÷k}q;œLø¾.RšcìÎcÉ|0ƒ DÔlÄ<Þ”!¥I qhƒ±^b×Md°öù¸¬?»„˜e [:X¢%Å-êNš¯qF¾/æYÄí ),æçWÊk ö�›ɪⶀhÇe'qÊ} ù ÷ÒBõ[›û¯Éë6Q«K!·k1R9(ãm:ÓäÀ d6<û´%²-Æì‹±åW4UßÔR›Qú¡Åû«*�yLÆ›·ï†yâ7oÞ¼]`P¦Áûz3¦ ±Rµd¤G!ùàç?§§QlæµÖyñä&‘»»»â ‚¤§ãøÙ3úõ¿ûwFFr›m ËPïv;B<I!:Ñ£Ï?§g‰£Tç‹LDê“ÈDÁÄ:ãº!ºD`çO3„¹¼3 ‹ ¼|øÑ‡4dç;GÃÑXœ#\¯“ß„ÒO¯×µ)¿"£’BþÁ>†Ð ÙR|öž?§ßüú×ôûßÿ^n%ƒÈ¨ùˆŸç–'¶èO´1rY ÉãÕ¯øîÁƒ P°#ƒ}îÞ½K›››B^!È”P÷ IGÇ çE½–äÃ~pÿŒ‹ÝÝ›ôá÷¾GëØ×ÿò~g­ÙBj™ÔãÀ ŒAó^-r™×ö¹Ê9–öSúk éxGÑ›7oÞ¼yóæÍ›7oÞ¼½%3«ÿ•¿{)hÉç~qàŠK}ÿÛ€.ó½ëi—¾MæZBRz!Ý=ãl ƲJ…XFÙñ(µÙ ó·.JQ[™22Éh£¨ü€p‘†0ƒžO�!eRQ`UyDE§FH<‚x†`”z,Ö}¼X.¢$Õ“>¬Uúqר…xGƒ*J£­,ÊçÜ´Š?A¤…ôõÃ1²ª.N=ÈÖ£Ô‹€Iá6—)•(¶«Ò¥-Ë)(Ch ”q ‚4Q6핈Pg¤rãɦ3Câlž™zƒØÆ3îœ4;‚77»SŠZ= c¤ ЍÕî¥ôlÆçS6Ëxͳ¹U±Q‚!‹ºzI[´ŒÈç–},ÎTBýg®)+WF©fžÊë\TÓ #Óì ¶›4k'T"]<åŒÔä„&“_[.XÓ"šMÙë¶<% ÙÍà`$ŠI.­[Mè§âRHqVmZš¯4Œ4£Àc¤ŸJs¦À¦òrAŸP“ªÎ Å*e rþÀjƒ`6—ïо «D ëdÓ;e§ÀÖAãñ„±^£ZŸ¡ñ‰(#á3 "µJ38©‹ªEªQU#ÿ$q@›ý&ݸ¶&¸óµ6ÝÚnÐÎvOÔè›Í6÷G c8ô}>oÒd–ÑÑÑ èà`F =›TcªEiXÒZ7¦%Eª&î·‚úý„ÆýMö&|-|߯1Ïu™äSšñ5NùZAÆ:Ïi8ÉùÚBÒAÂ-Ÿò¸Q¼>‘I³$ÓÎq_åv¤K-Ƹ!N•äÔǵ^ ªtCÆJûw=0²nPcBJÁxQõYûàz#•0xàñ cQ-‹ÂJÁͨ-¢Ú4å¼n0¥V«É߯ɵPТ0‰ù¹€ÔuÜ_|?P0ÁêŠ<ãf<>dã>È2£&t6HôÕì¬ÂQí;÷´VDËi¾ªƒ/&ðxb7oÞȼyóæmA¤¶s¶˜'»ÌH¸Bßg—'Ú½bA» …2šñ&‡”6Ç"·lZ§D[_Ù0Ý 9tíD˜„ ú3=)ÙD"DR‡’bžÌá©£^ŠéiÙ`êÏŽŒûžkf%Ey)Ñ ¶z2i%{㹿šÕ‚õÎ4¢"çŸe½Ã‰:=9¦“ã#:99™NLš¡�Ôh¤vÒE–8«˜¸;eìH?s‘÷œÑ˜ÛþÉ“'ôÕW÷é«û_Ñh<¢­í-º&Š›z$J=×®mQƒÏÑ[ëÑúÆ:;S†\ÉN”g DN*Dp¢'§"—‹s÷û}q¬ŠLÚ¿×£­­-!4ݸqCœ/¾øÂäõn·ÙI»& �ú¤%È¢¯=°>Û)g¾Áù¿Åþº²Òêßç©ûÔw5@Uõú&ÌÞ/ÚÉé â­hÓdœÓÉé â@‡UéÊ®Õ×Ü3%)?¯Z °….RÊD.­šGíɯlu‘ùG/…ŸxóæÍ›7oÞ¼yóæÍ›7ooÑ, È|Ê;,†¾Àu„�0 ,ï¿ibÏÛ8?XDM„´Ìô“å6EÔ¶Kµ Êè¤È x ‚À�UÀRA&]/ Ë‚;°Œ°¶h­B޲ÊJ „¨BNá)’ð·2DK ’WécI»¥„cIˆNIG[²RE"‘úsYá‚(âÛµ?`t’.}B3鵸æªÂ|Í×`ƒ=gÁŒ¦üwXšý€GhG×Þdp«JYŠ÷ãÖ&˜ N¹ŽÜ¨¢[ƹÑëP™2Z6Ó|pH§Ç´··'+ÔP/à¨Ø\?áoÝép3Á™AŒ˜gŒ}2­rSŸ�}Äý‰êyh•€P@.ÊèA«AÅZ ’B›ÒsгSÊ$‰€µ\¥äR#ü8sJZ&Íׂ¸Eª~ÿ’MÙeûÈŽË‚jÊØ¥Z®È¥çÔäi¾!áÔ‰?Rv°PÿAš´ùlnÆ¥E4%‘2‰ ÈMâHÎ#Ä+ÆKK¢ì8›Ó¬Èè„Ûã½ÕjÑúúµšÍŠDˆ”R’~êœû¯Pöùø{wèÎ;´»Í¸5c{ÍÄ tƒ2ÔúøñcO¸ý›]>oAt°ÊÛŒën‚ZÓ”€@jJýEá~0¤ ×ÁÉÀ±“‘(ã–ûž1z`àûûû¤ø»£™¦ñÔ<ÿ 2ƉÜCsÁð3!�…QI«jgºRîZŒ mîæÚ+ª§ûrõê=Xç ¹àH¨é£g‘éW@±%¡þ þ¬­uùÚc¹&W×_ZÒ¶…2Ð&°)½ûj6GütçƒtÅ×/Ù .P„«Ø´~©Ï/6uÁ9VžY•<’Çg½yó¶lžøãÍ›7o6HÁ¹$ û/QaH¶6"$j$žV2³FºÖì)�AÈ[d9LE2ÖE••³B6ÿ­‘Â4ˆ|­™<#7p ‘Á²Ò3ç0º:™0Ò–£ÄAwkÿÒÍ«rÄuzubº¢•i{í/UÅÉTô�·ïéà”>ýä:<<  ;‰½m´šÂ´ÇüTò_§FåÇEG˜\¾¥8zó<«ò[ƒÐsxxD¿þõoè³Ï>cGçˆKéÞ½;Ôît%ïøt6•ó¼wç=ê°£¼¾¹NÛƒm!þt:m©™sŽŽï;–óåÖ)3Žø"å&ùp$`(÷æÍ›¢ôç uýå¯E¿ûýïE±èڵ봹RPO‚ ó»»³SíûõÚJÇ.ñ[]Ô{æ­óºè…žkœG¢¹Øyºˆô+©ÊM¾´i l´øû™#ÿà¿’A™ì ¦ôð«M'9Doå~�€pFrœ8¸pVû›<–Ó)-‡ÆÕ#Pœ9RÐ˦[ŽJÒqȼyóæÍ›7oÞ¼yóæÍÛ×iËÆE*?J-–—ϦDy±ß hhƒîæVÍãÛe/ðI«wl„±nfº~æGa°I²D‹Ò�ž&èÐb dC†8„²J‡„|Q 9„ b$Ï–]¨/U Š¥ òCŠ$(üâO)*9NýGˆAD&E”#™ˆ¬JaHQF‘^„9š€N%„ƒÉšúËùEyˆñÚÐ`Ž¢†r0ºªG&×ò“dƒZÒ,éœë‘-Ÿ b.#$$(›óî3ÁcK!@E|½1×;(4Ê#Bb*ö¶Hw¥œ¢Q)>$ ÅH%µÖ¥Ðá|>¥é G `‹í5jÐøäˆ-$ðp>Ϲ>µœm¤$ÀøkϤoò27}¤L›?’ôT!§ä‚…ÏCæºf W¨Å ¹Y> y¿¼S1Q9Ë­˜M]Ã)ÛÞè_Kî0ýi±¥ÀîéÆéjCà‘N48·¤å*j*2µÓéF¿à>beñGÈ?ʦSU*0ðg3×ýc(Å@Ý(J¨•´(i4%UúRÒ|M ƃ 1^7r¡²ƒY5¾¡hŸeŠv¦”ûûO'sQ Âõ»'ˆ* ÆÀ×û=ºwg—¾ÿÑmzï½[´¾Ö¡˜¦4Ÿ…ˆx2Ó`\Ðþá =|È}=žRÒs]rQÒ?:ñÅ¢„æ|ÍnÌuK©5…ª=ß|}§Œ_OyMcéÌÐ×XP±6÷U¤$•ÕÉxÈ}:§ã©–1A-(²Ä÷Yˆò&—–Ï­JèêÙà‚å:µ¦z<âYâ -”l-ŽÖ´—)›Šq •ªli"•R}!8êûî“îÜk!éÂ`£ècð[HÛ£®1‚(C¬» _³ª#†)ˆß XM¸MÆ\îŒ7JO©zÏQ1º*ió¼]«Ÿ›t•êÜ}ª5¡Úw>—7oÞœyâ7oÞ¼ÑYZ€pÜ$J/XêBüÒKÇSîP ®#øˆ°§# è`y¨—Aû}È“ö„ÿ]T]Lü1ÎU¹p|´!ÿ|SvÞ™[Í–%ˬ‹Ó 8q,Q 6’OQE`sê;˜`ÏDég"ÑW_~ù}ÅÛ_~IÇGÇ´µµC7nÜ”t\qšÒ`46ò«Ó‰D(à¤é¹@¤€º#I}U„€žápÄNò6—R¢) èÕMƒr{ÝmomÓ÷îˆ3‚c]ùbETM3/¾…ÀÑÛ1¨÷2f³Þ®}Í<D??¤ƒ=çcwYšÈH›Í˜¶Cs "ÞÒµ;±–ÛFWQ4oÆ<éÇ›7oÞ¼yóæÍ›7oÞ¼½œ· ªlhÚeû¯çxÕ÷®ŒÕÅÑÚÂò‹Ôor_f¯ªÄsUå÷ýU$Ô+Dõ™4F!¥HaϸBÈxbP •”¦|™œ~U/? RTÐaQ˜P3iJ‘"-Ï,Iƒ+@� –¥APˆãDTQp)Y‘Ù ;|iuCC‹¢D…6JS „šv©x)H? äØq‚ôR‘6ì,ÜcÇPE¼Å²¼ 㸌i1•qÑŒb*£Lˆ.¹R6$lAbÐHßÅœq—ŒËš›1† qA1_§š“F:$¨@‡õ˜@”~ ÌœF«‘Â( i£ü˜÷ËÝøTÒ¨U[IZ¥PÃGm ’”ZÝ Ú¹v‹¶FCRƒCìÑÓ§Oéäð˜R}Ù€C¤$+²L i6øXn‹1ã¤Hr ˆ_1· ˆZEÜ’¯QçÒŽ±¨ñø8I› ?AîÊ8 D’ñœTnU–¤ý]Ϲìp¥¢#Û¢_W6e—Siªq7ìwFU©\¼jû·®lEŽ$!|#!ù„HÃ&äŸPðu£@¤L*°Jõ d7î±@ ^ÜH\e~¥&Eé:¥­¶Ôw–1¶;ɦ “QN#Æì& ô�GÖ‹0ÂVKÓdš0î­¨ßi<+h0DPêTðnT=¡^¯K·v·èÇߤ}¸ÍÇ¢“§Ü?9íMèþýgôôù  4œL‹žÐ ª7á”±ò¹ã) §<cMóÑ„š\§Û™b,[ñyÇ\Ï1œŠB=ÚmÂûŒæCŠÃ˜N³c¹·f<Žó˜ï_¾ (BrÄ÷õf¯#ºàåB|ÿðPŠD˜ iã2ÃÒ²½@ò ”²"Ø®)í½Àùꖮƴ!ä©ÅPÑnÅ.:r˜@Ö+TM@LÉ5 ˆN ­YþœeLbAáŸ×°Æ€±P mc°%ã÷1ÖRÊ5Qk)hÆÇÍø~˜ðý0žçü\ã×,ЄÓ|O…6€Û]#]@Ü9ÏV•’Vƒƒ]Ê3IKTOóU'g«Ÿ^ª‚Wsö;OòæíOÃ<ñÇ›7oÞ^œ+ºÄ\¯ï j“$e" .9çÈXøcÈ;«…¿L=ß­¥y¤Äê³ãàÔ|d‚Ì× r 6Èg‚|ã$5KK¢qfÂŽélnHœþîw¿£_þòW• ?û³ŸÑO~òSÉ gàùÁ!;mCv®™ã@<:<Ü—t] í`ƒó sç†!/T…ŠÜ÷ÀY¢}S/H£6Ùù²êW(ÿ|ÄBc¾øã´x ׃ºìïP§;—ú¿(Oü«Ú¹`Ø·h¢~•ª®6Û7BþyÃVï£élFO¨AÊ9h+Ç‹T~\¨“¡ÕÁŠð÷îˆT°Ò´žž—öË›7oÞ¼yóæÍ›7oÞ¼y{ì<<ã<|£NŠ©ã Ë>³ª)&XÜà±+gv_`õ€µzýÞ}³ä ¨“#@­(ya( „·9”jxáÜmfo-i·”ÅñÚŒŸm¶[²˜<,#êöû†Ô6ä}zc\.¾ÁDˆQ$Ay0àP/î2>r °·,›ÕkgÒš‡!Ÿ/¥Íµ&5¬â R+ 'c!�@Õ£É[/ˆ)U†,SÌO0~8š ‘EAe%='” ´„1=P?^Äâêqd#Ë­¥-ñ$&Qûá…ÿ,… ¾îy0­Èb:Ê)…Ê2—oˆU15³l6š&H‹÷™Oûœ›CÒÊÜ>ލãRTÉ«ÝÊŠ$Áÿ@­$L(J¹¯Ø_§^¶ICÆ)3wô¾( g’¶7n¯<›JýMûZ&‘Èæà5ÒꊀL3̵ä¢"¤Ǥ95¢Ü ›I‹Â“!1i‹@ƒÌƒsÏ% \P}VV©4dÃ)«kv @èsY†q`S-•\£P¥‘M¦…�äÒ4A1J[…'“n«A/—J.‰®+‘r…ÄÂc M ¢?y>‘@Ú86ÊH¤IínŸºk›ÔiwDµ*št:˜S:)(Éš¢MœsfÒâÙGÕtF²_©žj!ŠJ0i! YÒ$&%UA¤´{m¶7ÚrüdÎã7‡¢PF‡ÇCzüüîetp2b"È6Qhˆ,3ëÓ\1˜ð}Ñ=‚è3äqgž‰è"Å}èHŽ Ã˜ï׎´E«×à1ÄíÓiʸ(BESnÓÑtÌC#§Öœ¯=ƽƒ±ŸY‚‰Ú¾.CnÇ¢"ò8ÅŸÅcvy1£þ¼<›ŽªõBhkåyŠ{AÆh¼”F®ÕlÐúZÖ76Eýý‡â‘²°°d1ÈmÚœd!“ÏAl¯9$‘Q`J¢b ó=&S¾ß"!v͹!q_å6e›ZU¡#:çwè|;蹪ð£ì:’»ïëêuK*A()u¾BÐeï½yóö§gžøãÍ›·ïˆÁyŒFn¶ 3›XÀ“¹Há0#²QpqŸBäi+àÑ&ZØûŠ"]Ÿà–¤/BÔ2ÈMHÝIÝüר>÷5nU}A¿ÆúÖ˘õÀ*Ui¸jä$} ¢—¦È\aýoµ(ÏL0áÜa Dý :¯®ª«(i¤âˆƒLS.¶FË„J?ÃÑöy; З_~IOŸ=cgj@×wvèÖíÛtûÎmZßÜ ^¿'’§>nÌ`Àh2¢Æ8¥Î¤-ê?¨G»Ó¦Ý›»òjŸ»ÅNAÁå?¦ÿöóÿAOž<¡ÂeM²ÑD3v€ ¯Šh´S§Ó£ÝŸQÂÁÖö5zôè1ýê׿g~÷ú®(ìƒtdP ÚÞºF[›[6Æ\åjË.uîÒWtYr”ÌV©Kr#¢’Õ¯—^•Z=Q鞈¾ìíÙÎúWK9µLøÑ—|gʬ¢C®âp­6Me"(-q*¥Íßòjƺ‹[9çìçG¶m]óêzšëàaD»·ãPœsS<sÈ�çääSGTOM²ó7úÔhàBž+gÈ>‹Z]™|¦j”E÷L‘‚iŸ³„ÆÚ9È›7oÞ¼yóæÍ›7oÞ¼y{I»L¸þû~«^^ ]J‘Rée¿™…ί#˜ëmŸx0³/”'aüÂóa‘D‰mƾþìã(e Øð·í댟Yü)/éöÖu*yqŠÙÃcrÍuº ¢ƒèƒú7n5 ¶s×­HHØÿúö&Ý»}]‚a'§§tÿñCó1PèØàÅþÝnŸ:IC¾Ò“/ÐA¾/„´¢Þ2@Á8à47A†QQ«×bܧ0d„ªEw» Š ºBÊ#`“‚LH¸vwxÿ<N(.¡Œ¤%(«Ñí >¸ÖíÉþcngƒ!œœH° ‚!#n ¨¡Kj*KÀÁ«Ùªó‘”U˜'mê‡vÚîoÓv§%Ç!˜ìùþsù¸>cÆÃѱ m.¨–¤eãëA¢HÚçÁd6›Ê± ¹±á6§–îRuUÊZ(“?Çu%a)ã߀h1ŸAÍ=“”Ry®,HóùŽCy…!U‚+;ŽiÏÜ”‡4iý~Ÿ¿o1K½:OD=;Ã9¸¿ñý›;ŒË6Œ‚ׯ™6E©Çãƒã£ÁOqž„û?ËÇ<.²…úo >žV‡¢ ’ãq=n£ÃãcÙ€óŽøüP–*콃ñRÎï¡Ès0˜Ðp2b–3ô[¿¿&›#Ägh»#>×ÁáØ¦©bü:*‚TÜ ©7í¤¿Ð&Ÿ0ŽX®Ñõë×åÖ×7…lg‚mEZœïɆ´G1Í)Ê:U'6ÅáLag¹/i‚u¤Z3ã*]MkAbî/Êéµí ¦Fð´ŸÉó'Md|à¾B_`[ëuéÚÖ&cí›r­ }¡8£Ä_ië!X ÀõΦ3Úßß“21Þ;¼u´ÛÚÚµ-^+è€_'• ÁÉÑ¥u¯“RW‰ KؼZÆdµ^&F©J…Ê~W»¯V¿ˆ´s™«¯7oÞ¾;æ‰?Þ¼yûŽ&U¹lJñÄ5Àæœ,òÇ&⡲réÈÊE4XðhøÁªÏ9÷UºÌ–ƒ–^Pª:ÿ8»§#þÐÒù×qžiZ€&K‡¸Éì K=t‘5¡:Ã8wä7a×6jÄ8™3*Ùi¹„Ÿ‡Ñý‡é÷¿ÿ„~ûÛߊ '—‚ýèGtóÖMêoô©ÕiSÀÇ6F© ¥ ÂÏéé‰Dáßûø{´³½+NV85pzâ$æsÐçüRê D•Ȥð�ñdÀ•²c°#ÉéÆ'´}í:ýðG=}öœ~õ«_ÓøCºuë6õ¹|¤ ƒ¤+œ‹SÈ«²SèòZŸíÍ ^"ÇÂ)pZ%¥Ûà}°´o=œR‹(¢óìͺ�gI:ËçµÁjÔò1õ×óÊ­i‹<çÞ<oo}YUijò¡QÖàü+²ç[åvi—ÛlìÃÒöî£@" 2¸ó¥Žó"7ÌT.­Õ¢¼üäW5+›n�/Ã<ÔNkZÚ#8ç UýëÉ?Þ¼yóæÍ›7oÞ¼yóæíŒ]Fîyá¡æØ3AOK‹žjEE¼Yd´,iÊXؘñ³<6Š)ÐH¢D¡øó¢ÐbA°‚ö66ûôþûw¨ÛL%ÕÕ1®n“ËÊh<’žçÔê6)Ÿ…Ôì4H3T±¶Ö—Åt1@ÐF(°“(§(V²d!¶¶7eK¡ÄÁÈ AÑ£½ç”3ÎÒÉæUò÷!uº]®z@Ïž<£œË.c“p(ãΟJ@_!ñ ¸ÎI>§a6£((©R R1nYðµ—IE¥m°œà2Ê2•E$ª?g×6Í‘¼¦Í ¢4ãs´ø}“ëÓi0ÖB‘Uww[€À‘HJ­ 7‘YžƒÚÈ º€Ü¢FÆuE\*pSv@ùãºÝE»öÍóR×Ö7„øsr|LƒpÈ͹Ÿì(dŸÒ(*¡çó1æêÔÉ‘~LT¤•Q˜fZ')8uö…:Öò= ¼s†ôH!Òc™”ZÀ§pî¼0„!Ico‰K¢ìG‚ã; ¤¼Éøn]ÒZ› ÇÒÿü쯭QÚHøú3!OGãJ= U®Ûé´¤^jfÈ<ASÊí³¹}Mê2žŽEùçÚî.¹!¤€š 1FÈ9ÒÖ©¨Öƒ’Æ)¥Ü'roÄ1Å ñû¤  SÁ|AÐ1mk¶1cÀ'ŒF\n‚•^zÞ!ÒŠAÁ>"Ò[C{%|/´øþZ_ëÒæZ‡ÖCÊx¹"g3 5­§%5cƒ{j¤‹c||Îåyœ„3n㣠£’2Ƭu”PÔhò–Ê9Ñ.IIàm§Ó¥ÙpJC¾Ž¼1¥˜û`<ͤGñlPÁ˜ñòÐì“@”“ø×| µ+¾ŸÜc×)S9•åˆTvJT¿Üf‰mH%‡4]¥a¶þ‰ “QŠ2£Ë¼BÝ«ÕjSû¿ÙlI»á~@ÿ­­Cí§Ç·`Ì㢌©ÈÌs_SU/>¾ÁíÅ#up$ÅÇB¸Kh2ç5ˆÌ¤lÃ}Œ:4¨-d®Ñ„Ç ÷¹’1Hê7ÔÝ™\¶ÍhàT¿êª]dŸ£æÞZà§õ{Ê‘*qß ™÷Ç} ©�-ƽ¤öãpaZƇ_û'ÎÿHzóö'gžøãÍ›7oÞÞ˜aò ‡ ÑC &òqhØöì06*gãì1ˆN�áé·škŸîß¿OøÃèáÃÇôäÒs�àÆ]!×|üñÇôÞ{ïÑÖÖ–L’q^Dµ †Cq|¿ÿñ÷éÙþ3úôÓO%-˜äóE¾lƒ¨L’Áì‡s 'Nçg|Î?þñìDNh:™‘óiÃÀL¶‹\Óóçûôÿð 9?êkÄù>|hr³Ãàá?ø!¥<‰ÿý÷%ÝXÝI¸z›.Úé¢6—Wù×(ÿœ5CŨcKß*ueiÒWµÕòM=Ô%û¯^»ÛŒ-«î@9Þ ;·ïjrZ’»¹v gŽQ+ľ—ÁHk è«šòN 7oÞ¼yóæÍ›7oÞ¼yûm¯0ïîðyéÀ*Ui§úCËŠ?çî}GÍ… åÀí·esÙ”S/’Œß) ê"ªHfU2¶§(m§Ôí·is»CÛë]^±¾E'ƒ”ÐépLýq‡F§C:QÎÇÆÝ˜¶ÖÛ´µ½-D¨jœŽéttdÔ¿ a2?¥v·Iÿàž¤òùìó/dÿÖ{»ÔJzôø>ãƒ!}øÑ‡”—9ŒÆôŒD{´Ï+[·¶7è£>RÏ `\Pg”§¸–€FÐLTБâ'§Œÿžéœ¦IÚ$â}Ñ�'±¢qQ>ã…|S,™AØB²ã‡EHa®D!^‚ø3 ‰²Ã2DÚ'àŠ&]c<p-mÐ`oë³'‹ù°Šç›B,Ág¸f(ÿ�S9jggGÔéðð€ŽŽeœ¯5[¢Äspz$ÁH}Ô.·¨ÜÙ¦˜¿k¶:´Ãç{ÿĬl¸æ9÷3H4SÞ °< )û\·ÿôŸþ#=~ôHˆ48?V†H” iÁ‘.²zPâ³" á×3¦˜Û}­ÉukPÈc 3¥B!5@'‰Sj6@ÔQR¯ë;»ôƒýDÈb¸NÀ…sÆÍ€÷öÖ¡òÞL©Ärî 8iJßk® <ùóÏ?§çϞшñc|'A£Œë¦í®Œ·¯?˜­7iËMÔhó½P!©Á}'$ r@ÜiáfJtAýv“Çv—=î?ôÏÞ32† E#´Õd^ИÿÎp£q%*‚”|/é¾V"‹Eiœ N 2\»©èÚFB}ƒRP+'zÖi4QCÏèv« ^l )D)Ÿ±t®ûTMiªAèãqzÄã^?¡ò”G¯CÒŸ1þ$1…Üþ‘BxcÁã6ç­2O‡ûm=;ᱟKZ¼B9¥oGR‰© ’]¢(OÇJšç|gZîÀýüE°¤Ä‘èo¾ÿ#›îORiñ˜™'ö_(†Q³¤¦`öPŠ –Ú'äã ¶’OÊý»”_Q*ãŠJƒñLžn\3þ>4÷±’ûeH‘‡òlòšFæ%jI¥Û”U7jtzÔàgæ1@ ˆË[›”Bªè¥ø y¦:2œSìr¿O¸¯M`tX¢Ü}åx»×®]“¿Ç|v××eV‚?—A/Q�:/5ØEûzóæíO×<ñÇ›7oß ÓÏlµ)Ù¾F­÷îP2RÀŽ…1L6SQÛx{•iÓ7¥†a|×*—©›7(h5%‚çUY«×çDŸöóØqfÀ@&¸ÉBoHQÅŠçˆ48f ýì=ßÙàÏ>ûŒ>ùäÚÛ? S  ’Ͻ÷? ï}ï{B¦ÙÙ½ÁÝÚ ؃£#9#¢…0q>Š{pp ÌÿƒƒCÚØ<GQxEÄÀúz‹‚LdÈ™"B`ïù>ì±³<7“òÐTùÀA3 $Å� ʲУ‡Dªä¤÷Þ»ÍuÞéQLæƒ ¸b+ºO¦Ej¨eIÐ굞Î5²A¿L¿Ÿõ.¨Çë8Ë䜳ßÖUˆèÌù´CìhUñ§žâl<„0å.5ËEV©x¹W»ii¢%"mÁ¸y³wo݉«Ûj?/‹]®ÿõƬÎ7r`«N½yóæÍ›7oÞ¼yóæÍÛ×hç-9’xæzuh½ÀD1¢,h¡ðæ½×ÕT-ß&²!j9¼ø</Œ ŒvÎ~h‹¡€,)™´ Pâ&eƒB”É¡`jRêðúh2 l<%͘ùÛk-Q hÿpN‡'¢ e“Á0•cûýŽ`e](qŰöŽÔKÓÙD7x-‹€q½cÏsQMf’]%!õZUf6i}Š@S*³ˆåâ\S´QOɬ,x¿“l&ÇÊ\BõÄîÊQ¥t)iƒd\ñ~ªT†’P(Q ”YôJ³^ÛPñà:a¬s U˜f³JS2J§Ý®Ra,K”ïÒÔ(„ð9¡´Ö1„•”Ëʦ†&œ)²š gš‚‰‚�µ•­­ !¶�§„bÒY0txx(Äô·SªNEõ9çñ9ŽwD “¬¨Æ¼S49ï€Ê8„.¤–Š Zë5$�3 Ìý舢ö%| !~€ü„´pm¾Þ&c÷P^ŸLgXyt|"“p·CÝež F1­õ×å˜1·õÁѱh ƒ¢ 6¨ÂFc!€Læsÿ%%¡!|\æŒÏ“O&2^×3â>˜AIžÛqÈm8â2…Ä‘ÄÔêu…õêœ .,z†€V!âä¢tƒz‘(Så¤jÏ¡’Ï‹¶Ÿòµå¥®Ð ži J© I—NKÚàºìííQ<;¥÷’ ­ÇZ®­,BšOCšñ€˜ðýpÂýôŒÏ‹óçÃMO>·}ޱPžµxÌò½‚z– #•f#£®ƒv É`5 ›Ëˆùžið·Òˆ&\Þ(CùP´Q¢¼£Ÿy‰%Ò‘AmyBú‘-•W3"ÉÀàÎÑä¾3êWjé4ÊXŒßó=”¤M©#Éh Da A¼&à˜ŸK%t)mB½*MŒ ×,ãõ†©<wÒ†Q„BÝ l„tmÀû±î�•­VƒÇ¾M=W‘­”qkªÖ3^ô{RR_ç7Â*Õ-«ý¸V©aÈjùïóˆ=žìãÍÛwÓ<ñÇ›7oï¤-å/}nº^[§òîG´ÙY§ÖÏþ†<!Ž‹J¸Ö¦ôyµó¨%âÀU*£/¤y¼ Fª«¦ôÖ(¸s‡b‘™½H)¦þ·:¿ŠµÉ&×r´Ócvˆg´iLÞ@þ)U°Tœ}§âäB•çÉã'ôàáÉþüùsvÆ2‘ªÝ½õmnnXâÏût÷Þ=!ö´¹þSÞçÙÞ>ýî÷¿ °1;!;Ì[ÛôþÑÆÆ6Oê§\Æ–DŒ‘‹™‘¥©HCB¶ä™ýû÷Þ§]úìÓÏ$ZäþýGtxp(Ñ)°@™V�x(šÇ\çn·Gþç!`¾/¿üJR}¹¼ÊøÞHæž×ƺz]ø ò‹®H/t†ø³JÑ5™Ïå¼öÆ ¿xœÖICuÂÉê÷D—R{¼ºlÚñz=²|Îz[ÔŽ|êѹZ(þœKþQ«oÂÚß™XKÔ‡äæ¶ï"éÅ‚QoÚ*_»®(õf¯ý*yª½y{“öÚ�Œ7oÞ¼yóæÍ›·oyãÝ7C¡xù…RÃÕT@HPViäYÈV´œìë±×ñ/¾M¾I–Íéøèˆfƒ#QçÖ*¢{õe!ê,<ÀJ95£bÅ},ÖϦ3!¢�ó˳LÈ&X¨ï÷ûtûÖ-ÁÊ€­í3îv̘ڜ󡨽¹¾F»[Œá6!®ŸŠr#®ln®ÑÇïíЭíuQÐ9:ŠR”3@ü(ËâÜëPV¼ä±œ ¤¤=ËLÊ&ZRÕ^˜I_DµÀ<}%ÄWoÔä´TÉqJŠÞX"®mƒë% ð¦÷ìÙ3©ãc ý¾Q-¿Áxç&ßåö6©¦ )ËÕÍ)Š „Áç@¿ào(¬ïn¹èßL0MœÇ¡ñÊrÊ?Ž´cÞ/_'¾ƒÒ îèÑh*iÜ K.Ã1’âÉ>Àwã|l–@D›Ï{=àcÇBt&ŒWœ _ýàƒ¤~ø|Èc·öÆx,d*´ÊÄ9PÔe{{[0Y\ ÊG:0T°/Ž“@ˆfRƉ¡²„òoß¾-Ä·ñÊòCQwÇ«!D%«½»+j90¨ÎäùHê‹ý hÎÙû(ã{áDÚ¯škÇ`c“Ò<¦fdÊÏ ŠtÆßrî8j2Ø¢ùÌÇÜg8ŸßhgPâ0Æñ}QdÅŸž\o¢byE@  ¦Ò/h»‹ƒV©jßF£¤pš‰ÒàÏ!o:¤X•Ž c!@ÒOb·Øªâ�‡ÅÒ´9W{0u°«šé³±¤ÛØžÏ&4$ÝÚ'‰#WØçéÓ§Ò¦Ý^—?åøáp ϭ¦ŽÛÚìÓîõMê´:žI#i—Ü¿¸'qg¢Þƒñ]{ŸÛ4|F¯êLuSþAyx.â¾2vñh¨t­*Ø-aüKkf/g~^äÍÛwÃ<ñÇ›7ooÅœ3¿ôÙK8ö¯;/ÑÍÑVH­kÔÁ{…–¯QþËNš ¯áìu3¿©;ó þhuñ>/, ýé8ž8ï?ºO4=¥›7oRÚ iÆNÖ¼œW¹oaPâÁæ@€'OžÓ¬{Dô!çÚë±3»-DlÈù¼³»cfääÍ šÂq:ˆÑêtD4að`‹÷ÇäùȪ!ª {ãpFBö´.œ2LôQÔQ37nÞqwÌà‚´ÉYÔRÈÛüÅ_J/¤ûýïÏùs<p¾ŸýìgrL=µØY[V®¹ŒÜrÞW‹Éÿüª¾$ zN_ÖË<lS;ÓŸ¯Vè߯–¢Wësy;Ô¿[}†¼Zº²Ur›•w bé‚è-•;q[‘¢}9¢ßy =ôÂ&Zº.ºÂI–ì 8r þ”)Ñ9îÊ‘Ÿ^ï/ÓMçF­¼s,oÞ¼yóæÍ›7oÞ¼yóöÚæ"x,§ûª¯TMB¹((!óAj˜vwú›;öøZzô³qHTÂZýÜ-Ôvx½Ý™EûsUÞ¶÷20"4<"tB êõ×…”£UTìÌ®! ¹|‚TJ͵5*“ÎE³œ³PôG¼H=cˆ¤ltIuú0܇@¼ÖÖ¥ÛT4:Œ2ŽÒY£d3#Pi* ðÝíkÔ»ùžœy<žÓPÅR†âv2f7‹o^£(Mè˜q<|®­ó±Jö×@ ºqT¯CÐ᥌Øl]§†Jˆ&S©€‹Ó.PNDa*ü·ÔÍ5c=÷#ïÛžÍi«;¡F‘›À¹ˆ/Œ1Ç01D€·)x '’Â(1)‹H ’páV[΋ Ç¡!຤9â²Eé)‡r$R’' JI“ÑXH)sc1—ßDÊ)0+ †$}×–þ@ûõx\#ˆuš—„ž‚jÍ$+¤\|†a™h>÷|‰¶Ez³´M¹ýŒßÐÚæ6¿& lï(˜·Û-ù¬3™ˆzzQäa ûA­Ÿ-tPˆZÍ”¶6ú&´®Áu+3Qüi5£eI?îþí•'¼ŠPkÆEÀ÷˜¦ }˜"MÕœ4‡"jðg©ùœ¯%RÊÃLÆçœbçHM•0ö¼I½Ì”kØØÞ¦ãÊ:n1ð8¾&í’MfüŒ�Ï‹Û"§&–Ó´Òœ?L¹žc-jNƒo³€F<æ# õ"Æ UShÓ·{Ø¢Ö„Ï—ÅÔÕ-¾?2é#£H3§)¿‡’<Ôg”Ô«II{fÔ¢ýQHO”Œ7UᑦþeÉ×Éå”=Æ’×5„óŽ'Îy$)ŸKA)‹hÖœPÎ}¢ ü„TR!Æ.Ú)‘`^Îô\Tª(ã14I%ÍÙ4ä¾LRš”Sš%sJú=¾·Ê凋2Šja·ÅûlÒˆËÍx\—zÆcœÇi£°! Ü‡W–øƒttH­€,™t_‘Kóˆk–¦Íõ¶&9mîÞ¢iTÏ#lký>u×·¨ÁãŠA(·ªŸSÙÂ9™ƒ¼&²\T½ð}6çýbM]ÿŠïa!:ñ8!UÙœ›d8£2šÊx›”†ˆw4Ìh¢yÌ…m~†iÊ£õ¶nÐ5Õ®ž'¨_é~GT«^§”UïYÅô ƪ–|€¹¶{Ü]“VÌa°Uïbß3 ¥5€•ß$©zóö3OüñæÍÛwÂĹˆì#OØ¡I@[3ý*ιzµ©ÒBØå]ˆîYL_«6`ì³yÓ½½}úŸ÷w4;~Nû·K[7C:-'4d‡Ly—ÿ¶"þ 4ÄÁ…ÿá‡VX€NW"5®_ß¡µõ5‘w…ÉI2" @B¤ "…²¾¾n"0ÐØÞÜv?rDÿæ7¿¢Ã£CºwïžD<|øH®‘F87˜üˆQèûßÿ>}ðÁ‡ôÉ'ŸK»ˆÒÈÚªjý~÷»ßÑßüÍßÐîî.ýâ¿È™GO‹š@·n݇ü…½pÎD¼Î½À÷¦Ùô™ý—¢Ø¾%sw-%à’Ög¿»ä½¥^."ðeÌ�pYc ß¼º•ìd»ñn ·–½öÚÇÚË^¥^ö& žù’mu^.è( +PË›7oÞ¼yóæÍ›7oÞ¼y{%;Cîq«¥@تêqðSS\qª?Ê’~J^°ÇÂi»Ó§­Û¢æ²uz«Z”^˜®‚uªóÔƒwÜ9j* ü8ƒ£-Ž[*·þîk„þ®Z¶£@ êX„×+jȲ€o¯Ó¤P3xª(ˆ´›´t(&¶Ó‘À¿§y“rJ¨ÿÁŸQ|ýC*󜚌Ë!8.åö?á¶š” ê~øj¼7¯ÔLà"Ì©‰‹Ë6‰Òæ&õ3Ó¦ ×i·¨\[£1×* ºu&ÔÏ ¹.½^—Z|žý(¤#{y«It—ñÂEH5ÅuYº@eH?•æ6c5¹.­*MA].{=Ï(+K3>%]˜Á@®JAM' x³J!/v¡Ý-·ãºÂ’¿ãmgsG°Òª«¨BQ¯å‘1fBPŠA™ˆiëFhŽÇq³áT*Œ÷Ͱ)x$ Õ¤b®èÙÁ© �¤õÂ8ˆ&&­TnÓ/eÕ€Âæ:dGh¦*¹Üë·>¤¸¹A4B�¤MßUZ‚È?a3çÏ🣽  “‰úÉbðÜÑn5äü»S£¸”p»[3J;Ë) ªže¥®Þd,˜ÚÛܾ!µ®1¶ÛÝ¡[™‡1ƒïSÞp|Wu…œ†‹œƒhÄÿ­ßŠ©±9‘òð9Ž€ Ox¿y4§öõ†àZºÝ§±J$ÝLHI-êG»Fé‡ûc>1œsÅ×Ô†bÍÌ‚2–<çëÑüšñxÈškmw¨ß¸É¯ 8Å9gÜ·y^ˆâ<êEc\î?îãµ>ýñ¸G'_E† ƒ�eªám¸³Í‹”6̓t<>•ôb¸·Œª!Áäi!©û&ÜïHM…>•åhs.7j*“†+¹ÿCÚÓÜ9Ÿ'Ez<®_+£²[PéÓòr©Ÿd e4:ægÀ„ë_D|>>gÀÇ¥6¸)Ûä‰QŸšñŒ±…±#ë2H!†l�x,T¹êz[ªCèmÝ.=“Ð÷ÀøÑÿ*¨+Ùòœ«+{ü,,·Ûç6IIÇE%÷CjQ)^›yL4Iw®Su¬4‘t|Ge‡N†Š×-æ4s?7v¹Þ¢øßЦô~zƒvxl»ç‰S+2ÉÃjøn,æZRj=XÕ¬/„TGþñYwmƒ®Ý¼C­vOî7º@íG)U©ýŸKì9‡t®)ïzóö§hžøãÍ›·wÖÞäÜC&]QT9±&ÃPÝ;^qÊéŠ&e½FEß â18µªrUäŽO§ì°·)ínˆ£= 4aG¦ ?`:Œè8" H×°ÃÛhw¤äô5 „ù‰À$ ™èoln°óÖ¤¤‘Z§‘9þ)ë÷7èîÝ÷…´µuMdo…D&b¥àóÁ—<<>æc›²®îät$Nf§ÓãcØyä×0@4BBwïÜ£»7èÉ“=vÜ›Âsò´ÂêgjF;;;" ‡¤£÷îÜ¡N·K=~¿½µM­"1’ETÂÙ–£¥WÀªÀ ÜrŸÒ¥û—ûß» ]FëZVýÑÔqá\]|‡Øï®:pô¢Ü7‘ù"GÆí *A5è‡êK±ÃF)×ì&éâ/xÛœãçå1_ŽC<{é¥Íêû˜>¦+YÝY|SZ½Ô\í*õ³‘:üá Üãû»ÏŸ·ìöŠO‹3Á'ÞÑôö§aߌrŸ7oÞ¼yóæÍ›7oß[%U˜‰%ý`í\ëPM›®øäÀ«fÓÉ}±˜ ð mò7->î½vX‰Á Ü9K‹g••šµ%2¼E²Ï«™ªˆ< ²¸t>zeŸ‹, Ê¡ø‚T[&Mq|ÄXÚ ÆÔ¤MrÁ⺽ž|?;=%JfÔëo&>/H Àì` ,&SŠ“ul{J*!Þdà¸ÀS¢´KÍ,£&Tl’DŽÇ¢ùl¾PÇ×jòþ¡|^._“Zî¡*厼–¦_¡Â³ ÕÝUMU…Ï©•€.£Ä×7kN ËæFC9'0F`ž‹´\ ìs#Ë1yf¾‡Ò 6ˆ'H—†©(Ø s—žÌœ<@Š;Á›Q*æÆH*áöi Õçâ[k Rƽš=šÍ¦Õ}TÚtDr QÍB¿òFX¥%ƒbŠ˜j#u@RªJkä>|V©ŠPæÚ¿¾Ÿ¤ÑjµdÿNÚ£úO™ÏiäB²D­n£_¥rÃ8€¬ueJy–à†ó‚\¦¢œÚ­uC˜á>ÉùóLçæ›VIÀx³IË,{ޱ¡b*ã’âcÂE^õ¯!±TpÛP\P3êQÐ˨“çÕµ¸ë•4lÅâºQÃás1N|R4i6H+5$¨9WiƒãjjRÑêPmRžLÐIfé]SC#I›å(ðL[£¾¡!îcé­9Rµñx“P”rx0QÄû·ù³¦½êÏØÀŽécÖ=7x¿©ÕÊ‹t bÊy›-œ*âO£K7šk´5_N†¶L¹cÂheÛÞ·þ-䟼J(iïÈ(e a$®°!ûÍÃ&•i(Ï\›Ü‹ÜFcJ䃬…ß^§HZfœv;9¥ péåº[ qIîšÌ3¼µÏ‰Š¬#ùÑÎM©•ºîˆN£(æR§Ñ2È›7oÞ.3OüñæÍÛ·«Ì?j܆Ë÷;³B|Þ>/>&µ&¯2ñ–Ipqá1/埿ì„ë‚ ÿæ •¨ß$i D uæÛ‹Þ¬&£ ò¬ÓÎ{!ý#þdxrHi«MsžtÇ<éŽètKš°Ó5žNEVμ8$åbòlr>ÛRC# ‡­Õl Æ‘oÄ! 3Ú¡úcr‹C1‘ Y6p§×ÛÔ­­I9&}®ÃÛr8âaÁ~D®À‰½uó¦( ¥|ÜŸÿ£?¯H?pQW8¹ #]»~úk}9ßø#ɱ )\�Hÿµ{c—ÚÝ^åèžÓüK [ÑkÎxÒKŽòUÔr4-ŸãlÁõ¨'}NÕÙ.ºKÔÙïÎS1ÐEšY‘A^ôùË“�ÕžÚZ‚×Ð¥B÷ÙÉ;Ç¿(ç 4,¢šÀ©Y’Ξ·Þ¸TÛù%n÷×&Æ\噼ú¢uŠ@î·X!Bk‹’øß�TàœÆW+ø'ºªfÚUW¼yû¦mõ~]Xöv5;/íãEm¹ú»Uÿþ¢ßÈoª?^4×s$ØÕw?~¼yóæÍÛ·ÑÎóWëßyóV·¥@ z@”|Nµn]- V_&Õ TZà­j^׌#%X4í*!$Hj.{Œ¶ŸJ‰¸Nø¡ZÐÏÐB§þ¾²sæ®ïšU‹ïN…â%Ž Ôù©ÍVEÚ(Í ÈÖ^c,Ïpì±aM‘=a|!jt„¬³DŒL0²ðqÈû˜4mޏIýSëÊ$ÊR%’ZyTWY­¹ëWM¶ßÏi7Öª•ý¥/éÌî¶­€*ÆR ¾cξ(<(ŸhU‘Ðä¯jœ+ŠSKP(CSÚì0¦i”ˆ«D$ú1Há襺º2±f…»Î@î Sc!·ÝÚz(¤”*6ÍŽwÃ-XNä>C»6Û½eekª«LÅRË÷é:^iúÄ0ì˜6K{o’DhS™[Õ*½THç‚@¥‹~WÃE}Ò1b;~\yø" û:äSñgAä>ç:ñŸAÒ0˜µ¢%•e „q£K-G³×R]oõ¼YŒ3> QŠ+C¥´«"½2žÌ¸Ã Pˆ´oqÛ’LD/í«%Åœæ:—|½¯têT޼†#âØf‚Z ¦KEu†éÔÔê·ÿe¿ñîjUíµüÁ’E ®ssu\©Ú½´‚Ôþµ•©|éÀ]okž]dv’f$çs5tÊþèG“fÌ}ºü,— N}ž®Î¼·Ã£zæ©%âr«¡ÇŽ_w­ úEP ‚¥cíN´ªösö^­µ•ǼyûNš'þxóæík1e'rWqtßÊÄM2enfüç}Q_fél5…ô.9ÿ¦îh‹¿}‰ÒT Ñ' ºìÞ¾C³ímû9α˜|γœfóŒ’$–ý/-S"^ Ù'´©†ªÈ$hŸB]rA`óG&¢A‡+e©]2P°a¥™ó\diEšVS­ì@À l½n×D pýÞ»{·rB+O Æ?ÈHN](°²·×vvä8vsk“¿ïˆäíK-Ú©³D s}Æ‘;oAô¼÷î3­WK:gº´BTK.½KÔùߟKþÑõréÊmt‘hIòt•`riÑõú†fƒÿ„ˆ+}ƒBµÉ”sÞ²®euÔÛ¹›Õ7à«)‡á-Œº|÷¸ák•ù±w€–UÞ?}ïsŸ7îI&™¸»;!\‚'‹…ìÂ"]l±À"aa¿� Å5Fœâ2!2ÉL2îòü½k]_Ÿª®îj»öîóÿ/é¹-ÕÕÕ}ï»÷T3Ľß�$b8*?µxJL5[3%XD*Å¢Æ÷¿?�U>áÁ´¤ïùRí¯ëA1½/0kÚ=¦g(†Å(z=é·Hÿ,šäßTØòïf;kW?«ð=–rò¹:L|ø>Â÷l¶[Ÿ›T>îü¸ë%fûôàføÙ'QÉg����ˆ£Ú_ ó7È´3b¯áþ¦Ù¶]Âa¬¯*ðÛ7é0íÇÀ~²’Œ8Û´œz¤Î+¬HÙN?^¥•±\¡ˆŽf¢œ¸JXÀ¯¾ÀÇ SÔ£"_ࢶ¼k{¶)•£™Ipôîb¸ú XÌ¿`³˜ùDSEÎ —å~ŸˆÄ= =Òu%kå}a‡]}ƒ²¨xËŠÝ¿ŒæÓÐH3Te­˜ò¥FÁjá`%ö•sV‘²SᛨÆù÷Uâ ««S‘±çØñëðx´û9~B†ÐÇë¢,S¸“r#i?e"÷“`ëÄÚ�˜Ö@ø�˜X¦ÒY:¹EðÕåLa5H}ÕŽ?¦ÁE9m)¶=~hExm:J@ÓH ³g;ϥ˿Š!äÏd)uÛÂmŸv@já?¨¨®gX†qÌyÁ9Í–ž¨×À¡È  tHºûÚ::üA'òËšÎ8Ý–®în2g¨¥Š祈û|hO±Ï[ü±øá€€£•[BñÃ'"¾hrÝ™!÷ï½Åî5< ¨_Ý~Ô¨‘3XÔUo¹MÜùSŸ§éîÐ3OªŒðãÕÝxÌ߀¾‡�TDœ(ˆ?‡"\&þtý}d†,7…gEVÖ´âƒ<I¿3Ú±¦Ã²›‚›Rç–•:622âÝ7_›¯Ã" ™Áð¤cÒ`–•:.g¾åŠhŠ9,«¥ØµÃB,ý¼LP±ö–j7���PŠQÍOJY‰‚Us;,*ú»™ÉQF0½0ls=¢v¹iÂIA¨2‚…+þI‹4Ù–EÆÙ_gËÈß·Û2šG0úO0Ú¬žDÔ>Á1¦  { ��¦ñc/¾þ'4QJ—·¬xÁ©í”Èóm¤½t_þùäm{׳´oǰ‹*´‘&Î/�¨5þ��Æ Ýgó«•{~MÚ¡+ Õ—ã(4™ õ÷÷S__Ÿ »É³Õ;Ú;dú¨¼›«—g­³ãjïÞ½*§±aÜåÝ<ºœª­­²Ù¬\ØùÅp„]G|ŒËpZ)NQ%ëpCá¦Ò*‚ —íá2Z-.s;æ9N¡Åm-m¸ÕæÁzƒ.¤VšÅUi㦠¤ükîíé¥í;v(Ç¥cðòsjmk•3eä NAÈ{WN25k…Ÿçðð|^ nt�¢¡¡Aù¬šššcu!µ¾2re$ ç}å÷¯Yæ—NwX&cf,wüÆm;׳²dØÒžžêíí•ÑŠtNdN³¦"©çP(¨è ÙlF>g]–ËH®%ä`šþ[`ÂQ/t„¥rž’/x2÷ÅO’•#i'¸EÁçÄë Äá™6ç ¨œÒÙLÖËoΟCΑΠ῿¬³ÐùÛå¿[ŽþÄÏ/\>çG¨r®ƒ£„pKùùð÷N«³È<ó…`jB¶X Ôò9~_²nXgK~~ùšü–sóÞg³9ç»dX¦ïjæïéü·ä÷/ÉÏ…©óîÙ6•c ã*Ų‚¯�ŒÚ±p4°¥….åˆiʽv±íRèHvZ`c¶M¯Ç ME¬“.¼]J¢…¸|-nC8º�…¯_Šr<ŒY% ± œ6›†åRJ,A��€RŒVø#ë°¢v‘<ìFëÓd½,Ÿü»gÔ4Åö„¢þ‹Yј&IüSàÏõq>Øœ®‡_S±I¥]ªRáèh?ÁOH�¤ªŠ€¼}²±"63��˜ÂD̰9ðûxÇ‚¢@¤-Ø ‹~d;;O‘ÂuZ¥ýåß�`º�á�`ÒâÚ1µ«/²a 8rNÿÔ?0H[¶n¥ ÖK1;Þ—,^Bs†hñ;®x}Ë–-^*mT±“ìû<hhH ‰XPÁtuuÉýêþÔ9|ŒË,\¸Pçºuîq°óž…H[vq{XT¤Ïçcº=Z˜¤áT|­ñ$ E ?‡tœð¢Ü1½{ûè©§ž‘ë|¿ , ¹¶`±ø'ÏÑryyÿ2ÊsÏü¼víÚ%Å ò92;vì ááaêîî–Ï2eùÒ™‡ÜYø=tÞ·…‹ÒÔÜÒZäÇÿœŠóվǾóWE>b1Ûúõ땸Êùüð3ægÞܬҙ1,øa ÑøsË^øyry1Îçsò³Ïï „ñ~ù¼HMr=ey•bÂŒýN0E…ñÕ±`'iŸmk܈7Io»œA˜wþþòÎýä`yÖùèí퓲ή”ó2@Û·o—Ûóç7I±Oð³ægÄÏW=ãf¹ÍŸQv„ó3›3gÍ›×(Ïágj~4øï^гxö‡³=<<"Ï—9Åù¹.lsÞ³&g_–r²þlóuù½äïɱHoöœ6çúmTágW>dz¨ý÷<�c†ùET-nÔ)$ƒQêÆæw$ê<óáï >®_uy“8G]Ü@R¹¢³^ÁF xÛŒ~Tk;%Ü.m§q ®ˆ²˜ðÇ*ú»4¶v€vˆêß\¶õ¾ÑÖ ���$áÍÓ©’k„mý;'Ü(Ë@gaFa ÐEhæ ?é':3ˆ?%æ$Y–mpY‡/äa1•rò“c¥{ŸÑ€¸Ç�©±TKŠÛưÁ��`jRJTc }Ìc–ŠÆcFâ1…=%D?äN¢Ò§©¢ãVxg´Mf›�Ó��F¹>4iߌƒaÂN<ðÂ"=ÐÀ"  ë×{ǵ#h,l(„"qðö3Ï<CkÖ¬¡Y޳¿Þ�±ãE>:j X€ÂåY¨Âh1€)ba�ïãc,àg‘w£®°#Ÿ_µÈG_ŸËu»i§ø_oªÂ‘‹::Úåg…Ÿ wX¥£õ÷ôɈ&2jŠsœŸƒ8ð:?sítåsµã¯QŠ&|‡¬þðóÔiI&„!oEUÿ·ô÷¦wó3e?þ ñóÒçpä§p4ަ¤£Yñ³ârü¬ëêëdm\†iáŸ7{öl¹ðç2.µKIc¼áýz<p"á¿5ŽºÃŸ½Ý»wËYüÙågÀß*J’Ù‹Ÿ?cþ[×)>ίüYæ÷‚³hHÃu˜ß9:âcÊ”9< Î°ñ[·qãFêqÿ>_·…ß뎎.õ�‹…UªÉ uš+ü`¬Œ=ÒU³;ÁP±üt~9?½£þ=â¿Q3ªN1qNäæäá„ùÏf]¦¸ÈD FÌH?ÅR_Eœ- ×óÚ&’gf›eô³0Ÿ‘NCV¬þRÄ “âÚT,µXøüJ¯Y.I¢)s0N?wý=_Žà'üþ•º6���G5<1„•!0ή ¬è úr;‚þÓ›àg(é׳kUÁ€€]ÚÀ²¼+ðá¥]hv£€t!aˆ{"‚Ÿ»®¬AN���S„~·)êÑÛÚ…?ÆqÝ÷ˆ€ô>+X_¸.³~��€ð�0¦h¡‚ï`Šó/[®xYhsÂxNõÆK9gê”;ì gç|>ÏŽ1›vìÚM½==î¾¼/°0¨¡¡Q–áHÊy¥ê`gÍ–-[g/í·ß~²<Ÿ72ÂiÄúd-.Ò³ïY8¡Å>½‡ëP)–”óP‹(8ÝRsó°,ÃÛ, às9 ×ÉpYŽÆÂíéììô„F5{PUã;V+ ágÔÑÑ)ó°s„Ž6âùìœ}»vî¢\&K-­q¦I¦L’©Ñ8“ólTÄN?&_-™ji8¥Ò¨™âP”r÷Gl*hµozl¨&rD¢èGsIXlÂ’ÌujÉÈÏ#ž¸0§²Òƒi|œ*éTÊí(G.ÿMô9ŸwþŒ¶rä$çü™7#dUòŠõ]J÷kœúU#”ØÈ­[wêøo˜ŸÿmÖ9wêû!ïEãmS\ÅωS ZVFþò3S¢Ÿ&/U`__¿üБ½dê.ŽrUp£¹íàgÛîœ#Ãì Ë‹¶sÇ)DRœšd]œ:ŒYüž:owÂ-ÖVMé|ÆèŒ‚KÒL–`èÓ‚ %"Bôgµëè6Y7Õ^ù0®½®åÏö2#……DI‚-´QßCù@[>f ” R è¤¸ÔY‘»pÛ¦Ïçï4¶Mô1ý˜”n,®ÞÈlµ˜gª<q¢%3µHÜ5âÄNITRÖ<G_7Òvù§¼´h½‡T¿÷"0 Î&���UPåχïìŠ?–$zŽOõEc<¦ ¥£þøëoF—wíÕ´e‚!S~ ]¿>Wè¾¥ýG_S–óÓ ËGIB ���Sž¨½þÄ>n™ð$ŸˆHÇŠFù‰›œeQTô“ؾ2ÆM��Ó��5Ü]S²lå†O%m¨ê ;Ðçϯ/ÎvWç,Ê8NtN‡ÔÜÜä8ÐÛ<‘Pss‹t¤sYvà§Rʈkoï‚~åsøV•�`Ä›ùÎ粓§¥¥•º»g{ް¹sç¹)ºx B9ŲٜL±ÄâNÑÃÎ3^:;»d›Ù¡¦#z(áÏ Œ’£R45”íÀ·¼ü=Õš‡!w%©a<)ˆ['jlh¤ÙÎóá=œÖ(ë<ƒ¬ŒÊ£˜ õ,�ÔÔÔ(Å\†ÅX,ÐÎ?)xh¨§‚-…Ó!qš°–æf%Åunr} R(ÕÒÚê?7ü±ÝW®1NÞ«y3ò.-ó^­’O'øœBçXqÇÝ­ Œ÷RE¹ÉÍÎ}óçËvž…L}××'E?œ’‹ŸÆdD)çYʈ6,œª«3Ä<Îsts|¼«kµ·uHQKgG5Ô5ÐðЈ¬§Á©cüº|%埽:í ÅâÍ´ýÈγ©w>£Mê; ÙùÜì³ß~RàßÍÎ÷ ‹tø´8ó )̖Ϧ¥¥ÍyÎ*Kڜ͞=G~7°P'ãüÍ x÷B!ï‰ uôþì3|=ެdÞJ6›§9sæ9ŸçfÚ³g|ï.Z$?ß:틼бD¡D^V‰gZþQ/"»;Àš²üp·É"+v½èu-®£Cì—-¢NµÊß ZȢ삜ŒøÅ¿GZäRÛm‡y Îí^ï¥ å¿a-dáïù»fDô Ã×fûE³l#ðùZ”¤Å®ZœÄß ¼Îõêï˘¦EMáÈ4Ip\ž…£|=½Ï»/CPdLéÔd\¿>¿¹.¶ôï»RòwàÎ;#÷Íåù~ù¹¶Íô½0:Â#/üÊuªÁˆzÝÍ;×ûŽåó¸Ý~®[ A#ï³°€»·¿_Š6ÓŽ]ÙîÔÁ©)úûúeJSúËt’ÆÍ4/&Ä���’P"ªšR§³QŒBTa˜ZDllSÔclâÊA¼'(�Šˆ(8 %×C5êÚ–gã©1 ËŠÚ~^MûËLóe¨ö}Aì/��˜ÊÄN6¢„±ÊÁM1Á·/,ú ‹ý˜õ&µ5©ÝdUï_��L~ ü�Œ F_>´¿’ÙÕ%ŽSm`Gé1›Åv˜1,"áv³3½±QH§‘Šè£ 2—r–©Ü*µ„�vxñÂçs«YH4gÎ\¹ëåTHÚiÄŽ~ýèsTjž)æáˆC,váW•~L=.ßÑ1,`--Í*zMŒ©'úÑ*Q§•~åTiœ2Ñ3áùÙ²#ŸIWg—|nìÓNIªK§Qb‡¿/fz*~f­Í-^úÿ}i’å›bÚ«þVÈ`1÷ª@T\y*PÍX¾#²vão“?3úyðsc1JÎu8êô(*UT³Ü–é½\œl½S‘N[¥Éòü™•Qm ¶«XÞ3¢qÀŠÙÆz¹P¢!%ü)HÑó‰£ú:ç¾mùÙb!'ð³TéÏêåóåûovþ9-GœbAVõç¸ EgÒ9/?¯ÎzÖqó÷ŠÙ±ãÜt]:-£S é7”Û,c‡4×™Éd=a‘ަS~Õi‡rÉçV^ÖßQþ¹‰¢ `°BŸ8Ìß0þ>ä¿Eþ;–g‡Wâkˆ^U Tô—º:ý{/hþ¼y´téÚ¹k·L5ȶæMi–cG°XsóæM´bÿýiçŽtÈÁӳϮ¡¦Æ&YÇ¢E‹¨§·WŠ5ù»a×®]Ô5«‹–,^"ë8è ƒèá‡qìŽVy;œ:8ãADÏ®y–æ8v×½g÷)–a´Ž|¸·g/µ9mQß}õÒVY´x±<‡¯³wo-[¶ÔißfçùøÏ†‹O.\D¶ó=ËÂ_®;›ËRƒSÏ<ç~Ù&ضu+mذA §Ï:ëLYnŸ}ö¡?ýéO4×)Ã͸¾œcuvvмùóåöóÏ=GCŽ-'E?îc>ì°Ãhá‚…ô̳ÏЉ'œ@·Ýv»Œ’6oþ<)¼ìqîeáÂ…4ß©c—óœ9’·‹…>,ìfÎ:ëlºç÷Ps_l+ž~Úi²M*‚£‰r}[6o‘pŽäÆQ!»œ{•ÏÉ©ãüœO7Ýr‹í»ï¾²ÞVç·`õêÕ´sûy|M~/–/_.¿û¹~¶Y8¥)?wn7ÛŸ:•$ÛŒ¼¾eË–2Eg���f*£6­KÕĈVK×YI? L7’BÁý–»[Ä‹Üó"âOb$u›õûéÂâǩȼAÞájCi��˜ÄŽI&LRŒFØ ‰}Üsã?rf¢È>ÿñõÇ·�0“€ð�0*’=ÅϱR8ø†‹v�y ìÄOµ¨h;%dH»éuT;gÍêrgÇ×y³ùÙѯþj¦¹Ÿ’C×Ãxv²3Œ÷³G§õaÇLkk‹½GGàH"|œëæˆ4ìˆãóy]×£»¦f§縌 â8âÌ”“ aäQ—Û"ºÍ÷U—NSº¥Y¥ê2atdMø93: ‚~ü\Ùiæ¥>I¥Ç-dIKÇ 1£Ÿ£œ=þS$•V§ŸØçåFáÒQôç™?›fZF=w!Ïz¿~†æ{¨Ã·ûÑRÞ9RDä~f«˜ä9!˜Ï0å¦5Ów¼­RÒ©¼Yun$ޯӛɨn:/s`R‹~´XJFòpÊæÝèTúz\‹Šäså÷Àýð>wîûä6V �ägß9¯¡¢ˆYÒ)¬?ëü}Âet$‰ñ$•rº¥ÿ=oF�Š?§š+ú¸ \’m÷{Ê0x¤«À�É2Æw¡ù½hþN™õ›òÃR¨ß¼‡Àsþ¯÷Îìîî¢#<‚Ö¯ß@ æ/”ÛO<ñ}ôÑR@xÝu×ÑYgœ)Ó²xeÞÜyò8ÛÇs¬Œè6=þøãRôsιçÈ2gœq†Œ6sâ‰'Ê{øîw¿KmítÊÉ'Ó3«W˲o|ý¤0eÕªUž€…*>ø ü>d!3¿°‡Å*ëׯ§úÃêiïÞ½tðÁÓÝwß-Ëê{äó:÷qþyçyÑy6mÚä ²¹½Ë–-“õlݲU ŸÎ=ç\ºå–[èˆÃ uϯóD1:Å"GâsY³uË)ÚÑ×cX�|òI'Ñc>JÇ{  Ó³Ï>Kgžy¦ÝvÛm´ò€•RµqãFÙ&T>÷Üs´téRzê©§è`çX«ó]ã7Òˆsü˜£‘Ÿ5kÖÈ÷á€ßÃsgÏ‘ÏçᇖόEG+V¬ ¾~Zºd©l§ˆ=ÙyÆ,xšå´}ñâÅ´ú©§åûÀ×âå”SN‘õr4)þçvò}nݺU ;ùÙïØ±Cþþp[¯½öZ ø��(ލÞn6Å å |"Š3‹,+fVzyQBÁ%lgS\„ÿ0:Jÿxç1†èž§÷ycJ/�ò?(@²"·HpœÐ$’F–õ��¦*åØÁ2Vüñ1ŽgçXV¬0È o…ÅA1׊»Žß²h9�ÀôÂ�@U$9ÈŠžCVhP(0 ‡&K˜醠X†…:å;äUz íÜO»)sê"miÇŸvàë)\ ŠdÚ#YŽýV$u†®GG`’øm0"þL*rjÚ®`ÄÉÈ:B‰ vÀ‘*ë·ü”$¦àD?w3‰Ÿ*Éx®îõ´#e'Tú’<ñÛa¹"~¾ÊàŽR Q#ùöïay©@T§ÁL¹Âh”)È’”´ÿ7î™Nnó}Й&£yÎJ‰¨¥ž@͈|dy¢&!£SèH<qÏJß“Ѫø9ËÏž®q9N÷"ˆ‚ÏÑ=WG`Šƒë0Å>û>¿[¤”U¤Oаþ`Ì)Û( þÒYEZÆŽ.#…È]³¤¸„S`­\¹’?üp)’9öØc¥dÿý÷§ÞÞ^Y†…4,*ÑâN‡ðw‹Zøv¸‹QXœÃ¢d®OG<äóŸ|òÉÀýòw—ÓâÅ%K–HA ‹uXÃÞÏeŸ~úiºä’KdÛø;‰£ûD&ÎÙfíÚµRÄщ8² GÜaÑÍœ9sT„D÷{ŒÅ.9ˆëÛwß}e9Áˆ…G|,xäm MÕ{ÃícQжmÛä½ó÷5ß' “ôóÕ)ÍxÛÄi¹ø{”×ï»ï>ù ø™±‡×¹ðð5YˆÃ÷Àb%n XXÄχëár,ºÚ´a#F²4Ü?@¶ck¦œknvÞ«ã?^F.Z¸h!mqî•oßgrñýñ3ågÂÏšÅ? ‹…¸~~.ûºÑƒàt��P’QüTĉôz±4”ñýÒ2€Ó ùùŠNQÑš]‘¯ÑÂJ�…EFdÔyW1Ú“üG[ ��¦ÅÇq¬¢åM¹íGð‰Ä=¡zJ‰~ÆzÜ �0õ€ð�0®˜}îp_Ú,cQ ¤M$ÆÖÕ+ë.ÚWNÚpÛTÔF)ñE9éœÒQ6t:¾å|÷…@\F x©(*êþ£¼S?§ñÐ)3‡älvvÚÙím2ÝD*5þQ;J‘ôžÉáá®w$´è‘¡á!u@‰­ê½g§SO©Tϱ¨ÓxÕËKªvÆñ6;ñ8ò—á4(¼ŸÛÈï£#·ÈˆMdË÷L :tý™³¨Í–÷OÍHJ£æ]2æ3Çetj43¥”F§[ãçª#Æès¸.v&ó6?o~Îì Œcüû'VÂk™g»Åõ !?s ;î8#£Rd32¥—j‰KÉ”^ ˆTôªçóË÷¦ÈPÓî8Þë'zÜux_#¦ÝïÔ‰rœ™î–Äh?'èƒê(ýe¯œ�ÖD|™Éß?ŽÎ32œ¡Å‹—HqÉ3Ï<#£Í°x†¿cX$¢í.ÏÛ,La± £Å,a{†±€„÷±ø†Óg±P‡aNů7ÜpƒñµdÚ@§.ÞÏ¿µ,bQ o³­ÂmbqÑwÜ!Å:¼£×„aÎwÞ)Ïãrü[Â6×Å‘ƒ8ÂŒhæÜ·‡ÛÀí¼þúëeyÓp[8Ò XÃuòõùÞÃðýþío“ψÁë|.ŸÇ÷Â÷È÷ÆíçEGÔá¶ð½ßzë­^zQþ<<ðÀRðÃía{‚Ër½¼ð}p„>@üºÑy߸ܰӾmNÛÿùècòÞzhïž½´yëÚ¼e3­[·N¶‡#é6©”g-²],4âç®ÛÅuð³3£Ì���±T9¥˜˜ÁŒÖÞ*HT$¢O¨0iŠ18XnÔä¨CÁ´_ª> Ì:4÷‡@^ÝaY‡»n~f£¢ 0þ��ÀT ”=9²sÂëft½?N d™çÅ”-*úI®o”�Lo ü�ŒF¿½Œ²VQÇï˜Û%eµÓwÊë4^i7ÒŽiOˆbFÑ‹>¦ëð·Ý¨ŠØH³$Ƚ6yÂo bŠ!„]©áAAs�‡ TOpCQ#V Ì×$Õ»)R‘kÒòCªŸfd%)Æ"?eU ñ‘ªàÃ^ áýCª¶ZÇ]xP¬T=úy0^Ä™Ðýé3Z¥S¯iQ GRš<TùÍ0ß–þ[0ü(¾öðs×ç¥d ´tàý9äH^uî¶Ÿ©ìúyÆòýýDO)O°c[þ¹�ŒšRßå–ž¬7+~¨1æÅËÛÛ;hpp€d¨¹ÄòÜ>Ë;m÷®=ÔÓÓ'#„ {â~Ç¢U«=²eËÖÀöŽwxç¬Y³ÖÛ¿uë6ºñÆ›)“ ”ç´cþ=à…ÙŸ‹Hï¸ãNO4š‘¢Ç`jÕ]Î=íÞ½G^ï¹çž'?2Ïó¦··O.ÌÝwÿ]¾®]û555Ó¼yóhddXFóÙ°a£—æ3ü =00H>ø\ׯúzºý|ßk×>ïÔ‘£8î¹çÞÀ=<ôÐ#žãIÙ}OxÏðÙg×Ê{Êç ôÔS«e› v^žoK%òÝyï=^ùõ›6I¡ôóÏ­ó>y,â¥XÐeá‹��@Tûk!ìgšýj½-ËŠÒ‚êÀz©ß0üÆMIʱ¡k%þa}tOØC± 2Æ¡Ô1wòÅ } JÝO­Æ‹���Œ-• (Ah¶iˆJ ~Ücñ>«d]‘vA0 ÀŒÂ�@MwܵïL"$^ð;é~]#A”œ<3Æp[Øq%Dƒ+úQÂÿ(N>p:奼èá¨)š¤A%®¨—Ž'•†¯Ç)´¨BŠb&Yš¯rˆåèç`®ó½êˆ2áóu4Ÿrêæ}%@—ç)ËOíežË§ç *õš™þÊ*¥Xõ`Žè~B«1—,ý¾‡ËÄ5èôTDnŠ»l䳫SÖéútT 32G@P'éDñOùâ@šPôw™»åf v¡„~Fî~ãhATÜçG>ëÆJ³S\D¯§?—üyᨼ˜tœRlª| Èïuýj¿óƒåÂÚh=dÔ@eðgN¹ªŒcf0y-¯Œ>ÏûVÿ!\yàA´Ï>ûÐ?†ú{cË„…B¼ƒmÛÎÉk¯Y³¦d;Ìh[£…£*áNr],nar¹¼·S¦r3øÕw΄ϴŒ×ÊÛÊ‘8ކŸS°ÞÒðýé6ªóíçšêÅ2Öu[´›)å<õ|„«ç²•Æ[ €Ò¶eÔL„™â���Æ ³«SÉi–úñ2Eq‚Ÿ¸ó̉7^ÔÁ¨³Ì œ|5ö«]èLYÊS)WüÆù¨¾�ˆŒ:(4!-,¢˜ÏvX¸n ÿ���`ªPlÜ$VP¶]Âëá1Î"Ç#âž D?‰í.b“�¦þ��ʦŒ>¸[.:{'n_¸Î$ç­Ÿÿtb ‘tšE:ªŒ=èè'a”hD­ËÀ<݇ÊG_'V†âž?‹~&_D•ò‰ Lz­)IUº×Rkl%%^üŒ]ï\b…AGqYŸYSÔ&Ês­Ô0Oúô·Í÷E¦>Aá?3rgG©Šìàÿð'z™š¹ùütä ¿c¦ž…ˆÿn³Ü¿ïPÄŸ0,úÑÂ+ (&Š’Üž2Ï8˜æ+p$ô;Ü_-Þ¹EÇ¥\ƒ¦Ü²•ÔbîÜ9ôêW½’fí,åfíKûͨÀ‘eD0òO-~eF2cIô»Ç ®ÇØzOjélõÔ¿u‡ŒâÔšUÉ…ѽûæoÿ˜ØS���¦<²Zß³ÿW¬jlP•RÙ /0é)6>ᕉ‰úX/"þ!Šx'�òêT+AáZŒÈ?UxíŒPBü��`ŠPL�:–dÛ„Å>²V¼¨g´¢Dû`æá�`ܶ‡åʦ°øÇHùeÚJ4±Î*nW}}%MÖ‘i£ç½œ_W%jºŽtšÓ]5øçV8FVECÌPM‰sÞ%„?qâ5¥é°â+îY—I,zðZæF¨ £ šó•Ф´¹ £\Ï-žæ«ÔŸÂ¤#åwøô>µ[Gy«K;ÏÍÕO%Õ~¶Óbð0ôæ}ï'td €Úîh'CÄ!a¹Â þ»f{ÆÝV§WþÁœ;w.]rÉ%tÑE/¦µÃmôÂWÌ¡öÜnZ¿îyÚ´n­LSe2Zœiwñ¢¼‡}ÊI'Ó¬3Ž ji¤Tÿ=pßýôܽÿÔ1ƒ¨ZÆEH ��`Ê‘r#“ÍOD¬î!U7n¿>ÙÒ@–œø•àP‹8³`ÜLìru¨¸øÇ¤d +åÇ<Éåôþp¹à5Cý���ÓŠr£é81ûãDAV™‚ãü²E? í†8€é „?�€qG÷«Cýùˆ±H÷%wÒ„SÔ²ÊkâhlªíFƒš³?:p¤%J¿3‚$ÜýÞ€î=Ò:·ãá¦ÓNëÉbóÏ´¾Gѯ–iö0”ÈG·Ó|£MQàU®ãËŒI? Ú±@Té·qØáÕÕÕEÝÝÝÞõ–.]F/yÉËèC£ÖPnïfÚç èñgž¢ãO8‰.\è³)›ÉÐskŸ£­[¶³gϦã?žvìØIõõ ´xñ"ºí¶Û©§§G–yÍ«^E÷Þ{~ö™ôècÒãO=Iç6‡SyùûRHɹЮ€iüL‹¢âÖòE“S"Lß•Žèï[|êËÈ:ïE4¸h6Ùi‹RN‘ÅËO¡]Ï}œvîØAiaK—W:*ˆy }��`êpê©§JAÎðð0qÄtë­·ÊÔ•gŸ}¶üÍß¼y3~øá´gϺù曩·×OÊ這¡¡¡²®Å6ÆG?úQúáH‡z¨Œðúƒk¾_Ö¹ÒÑöã¥-æçEè_(9äÚ–ÛÁ¶Êú™*=ýƒiG5âFD£ü”�‘ȸ®úÌ?˦È;7Aà��`z;ù³X™"bŸàz‘rIBŸb¢�ÀŒÂ�@MIv›…Êyâu†ß9:{½íqtHQê“Ð1ó³Ç}•_X§uªîpÒ¹„ÂûkíÈófX’/Ê›H0^630¿ïÃÛñ`ª ø|$~¼ß²‘Ç]a²p¿7ÕŒ`;ËpóçÏ—¯¹k×®]´iÓ&]‚ÞúÖ·ÑA$m+ö_Fƒ…AªßÝK™\–þö·¿Q}}=Õ7¤iÙ²e´hÁBZ²x ­_·ŽöîÝ+ÛyàJç ˆæÌKƒƒtÆgH'!;ãÔÓ¨µ¥•¶ïÙIçŸ>=öäTרH´‚V¬<@ œvÚzhhjD¦¾Eÿ¶š"2„?5y65Î_BCuÎ{áKÏj¦ó_øBZ·v-µåóò¤º*„?���&ü»¦Ó%³Hçù矧;wÒ~ûíGmmmÒ.¸ûî»åïü¾ûîK+W®¤“N:‰vìØA÷Ýwmß¾Î9çÔËçï³Ï>RÐÃvEkk«´?®¾újÚ¶m[¤ Ž= ¯9oÞ<jlhLlóe—]F™LFÖɶÉÖ­[e;X|fÖ¬YtðÁSss3555Éë<öØcò>=‹*ðG©~-c�È2_ý‚~yã^ÀÔ%]³XÙRâµAáÔ\Áô_eô­hª/¿ äÕkÞƒ $×��0=©xÂf{%6ŠO1ÁO‘úJŠ~~ø`C0}ð�0f„Å=Úyf¦õŠë䫈~®lK‹,`€ $ñ3¨£óxµc¸Ê똳Ç,2"Œï�çX_Âz£úFÜð52q°£€�,€Ðó¥«Úãw„õ«Y±åU�§¤ƒÁà¬S4-£-'æó˜Ífeº.v1|]Vã裡+Vx©üRõ”jj |sšÎõEô³Ï]Ev굩w=•zœZç\÷ìÙ^ýü7Å48κæ¦f’³ÿûûèÄO¤¥û,§Ÿþü::锓©Ñq¾1i§ÍíuÔÝÚNù‘ÍÂË2’⯨¶¸é.… è§´¨®±‰RÒvpÞ#;f£ó~×;NÖt!K)çä¦<„?��0Õa[ PPßçlh‹uX$Ãb¶¸ Gù¹ñÆé¹çž££Ž:JFûaÎÓO?íÕ¡a›€…>,¼áº¥¨'.3SI’£r¢öövY÷Úµke;ãà¶³ýÃ×å…ÏÑöJæ,öx‡U püz±zÁÔ$$º‘»BâF„„>áè?&¦�H_B×%РĦw¯)N���f eŠjŠé[ÅË”! Rµ”/ú�Lo ü�ŒSàíGûÂÁκ»Ç†HÈw»êU½fÄ�FK¥¥b¢Ÿ˜øÑU [F;MÛ‘£zÍ(ö51"ÍTêœAvh¤Sìà±Âó7À|•ëdEÞ;- ¦„—ˆÈ •‰ÿFÓ©ëØ ¶_Ž9æXZ´hQäáØCû­XA/ºðEtý ×Ëj ùåɦzÇÙ§…C̪U«¤SðŸÿ|œžyæZ¾|¹LÿÑÞÞFW\q]tÑErF~.—£_ýêW² ##ÃôÈ#Ðës…?NýVŠÂn• Ãøá›úÛ–¿+~¿ÃÂ3³t ^BÖÜŽÀÙùË_hËæMÔ’‡ð��¦+Ú>X½zµŒØóä“OÒ’%K¤Xþž{î‘i¾XÄ‚žŸÿüçtòÉ'ˈ@aXŒÃ ~4lƒ„BÞo¦ê*Æç>÷9¯>†S—rJ²8X€üÐCfªëȹÅÇrÂ.«¸È€iC)ÑM1ñOøüHô&F�¤vÇ‹€"õP‘6šã?«�€A)aq1qޱ7ö¸UÄö)&ªTôq4�Ó��cB©õq>5mtð’-|¯°åsyÊò~ôBÝéBÒçd<N¬˜Kèt]ª€m*v°È,«ë„ñ<n”øÄaYÅCs'×'üT8ás„ ½ðH„Ÿ —çò9ªO9Ï´Þ’ßùañù› ö•¨7¦Œ·Dˆ8\á1%;üT¤:bK0íé¾RÍD†Ã­?¸ægù¾·ò®«·SÄ9›LÇZÊ(I´{÷^úõ¯›ø=öë_ÿZ¾^õÍoºmV¿{ |#ù<5r›…Z’ÿ\loâÃ^ODÌ- ÜôçíØFK_ðbJqÊ•¡~úãï~KâéÇi¡{êlW %\‘Oð]³ˆ ü�€) ÛÝ'Ìš5kÛ·ÜrKìù}}}Tɵ֭[GozÓ›äö]wÝ%_“~EÂâ!N]Zªþ@ª¤"HÛIÛýîN{¶ ’œ[zRYx?˜üÔBüÃD¢ÿèóÕŽØr~Y+rÙ²ÛHÑÏ:„@��0=¨d\¢”È'©\¹‚ŸØí E?�€é„?�€šSL”œã—;ÓxÓ¤RÎ"ÕyÊghxh—<¥¾¡…´á¤\vúª0l¦:ã6@">§æõËc~êFí¤´JlO3Š}W”Dß?®¬o˜ióžöFü§%\WuÎý/ä#9)¸0?ü}¯Çü½VXú«`lˆêzeÜo+‹Œô^ª°%ô¶EéYóˆöì"�*?]·ßv+eŸ[O¢±‰ ëÖ°—•–���0½‘¶“ÝÇ2£üh?³ÂÛïíqØ1 SjÄ?L±è?òx™€ÂÄø)Â��`¦ÿ½÷{ûQ ÁOL=e]�0­€ð�0æ„>ª¯7CG;Y죜Ài¹ªKå);¼•¶o¼—fÍ;˜fÏ;È9)íÔšr«ÖƒBÿL5&Ìà´Ê; çv{cGVðŒZ f�Ußrµ'ZE:GÅN ¨Q¢•Z‰ÇâLÔ[]Á<ªCQgù‚ »§þžçiÏŽ'Iä¶QKƒMõuê{ž¬`´>+üè4_f4 È?P#Lç‚!ò‰¤û Ù1MKW­}’Fƒ®±qvttý·‘ÒÍ7õN& ý>4FH ÞŸ}Díwßý‚¥ºêú}ÔŸ /j&’��˜â4:¶St<À Ͼ†×ÁÌÀîv‰þcn{ûŸ!("B ���qóo$+!îIÜÑ� þ��ª¦¼P·¢hÊwÍíX;k¬ã±IæŒO§mJ¥-ª¯WÝx;·—zv95‘sœ%9çNy"ÛÖÙwŒ°Ð±Ñ\Ú"üeÊôá'¿j`úSË ž+˜D”1ùbÎà9*-’¯‘Héð=¢@Â.ОORïî5”*ì‘ßëé´¥ÊûýíVdŠ€,«x¿}VP ¥ì·7²›îË™®Ó}1Í+!ëÎ?ȲœÃv ”Ät–ò,al‡„¤cÁŸœR3¿ü¥w—þJ&㙺+ä|ŠÙ���LEt0½4p4y¿åÇÿ=ŒMÿYF�Ž­©I¥6º·+!ú&Q¤ë3)3"���`Rò·#á¸UÁþj?Å®�˜~@ø�¨ 1}ïÄrDQAÁA¥ø²-å@®¯K¹)¿R”/ Qfh#íÊ즞]S.GÎ>AÙ¬ã`sœkétJF R>9U¿öÏ©uuA}]al$µy¹�ÓäN¦¿b…öé<:–¥ÿÑ¢ç;[¥j$õ½žr¾«3TÈ RK“Mõn*G·ŒÙŽp´ŸÒíÄŒ0:ÔG7:‹X {(>Ý—Þgét_D-+¦æÅûQnûÊçó”Éd¼ºDÄA!r!6äþ«öøÿªh/Â8{m/2«LÛ;Þß­yAËH“ê.VœÍcÑD‰N¦¥ &bV…W +íîK“Š‚©?¡÷@„¥`Lª„>+E���@ž¹SË:KØî –SËG{bj2ÄÔIi¾"/O0D`šP¶ø‡)C�¤ëTÅã…AcI¦ñ���ac”‰¶Ó(?Åê�LO ü�ÔoV<…g§Ëƒm9¸#ü-Wì#S|9 %Ö±]A‡õ±)o娦Ln¯ãT³)—”É:û׺:Ë ó+¼>®�H÷‘Ñ>OÞAÓÔéÊ`¢ßxä““éù…èÿ–e }ô«¥µÆ \-Ü$Wøã z,)�b1ü6¦´ÕS]}ÕqÄŸ´å‰„¼�ADh?žÈ(|­Ø{±¢÷@Q"‹÷9LN÷åÿqè¨?lÎð뜳_EÛy•ü,644P}}½q �‚bâfY±1_´ìÈœõ.<árõ³’} ÌÜã!B·ŒíÀ;äL¨¢Äq��� BÔþW$l£ÄÎúlÇf2E?–ùÇû^ÝuË,ã 0=(Kü£ ÆÚYšeˆ}(Ù)ZR���ÄPÎ8MQP)»¢�@þ��Æœ„¾¸ë$Vâ}œÀBØ”J�Ä3”m9Ï] šœ“ [¦÷J³@(-ç1‘]°Üq; ä ¬“!�"³M"´�€øŒ?øÐñ!8†nÅì i<á ……?Xg±*c“¥E=Î÷8o75¦©±!í =åGGRQßÙÅgïÚN�”‰i”$(FYË ë4_Á´_A¯·y: =ûüó–é¾´ø'P5ÿ¸t0"K*¨E’¢¢ÆÆF?2V*e4³ø_€(vXеõ}à·g"‘O?úÁ ÿ³QLøc?Žˆ?���Š1ÂòÆ]Däµý賨ãè3üÎC8Ú÷j¤û Ø\ „B`ê¥'¡ ¿^ȼF˜rA¥@ôp��˜ÔJ8S–¨FbŸr¯�˜ž@ø�¨ˆ°,n&޹/¸.ÿ%=k9Ø™ÖÎd¡ÁΡ´ç—K‘Jw ¢HœÅvέ+X”·%m"!EA¾ãX }¬@ YÒxÒ þ=„Ðg�L7Â}@³ƒiE&Ù"7ê¹mFâ D뱂ž´ó}Í‘~øÕ0X**󕢨h?fÝÁ{@GTGìLbýyÞ?þ~S,¤ÂûP ê¿ ýgþ«ÞGÛöP~ã3ÔÚÚJMMMR�¸TÄ®("üáÖ¤,÷ïÀªüï`4‡ñ'6$©­„פ:J���’©õ/…H˜ÌÒ´ß!´ðµ—QÑh?jÑ8+ÚZËŠu€¡0½(;ú*¬^ÊÇ9Tã>§å|†Jµ ŸC��˜9Tûo•k}UX?~ƒ�˜Ù@ø�¨Qi$¬hß[!‹ú#?*¸D·…ïô2+ꩳ©®"»Þ¦‚̦¢ýHáO8Å…E?›Ò ‘~��3‘’‘BÑ},2·­H'¸ŒmøÔÕ¥¼H?2-˜{\÷wUj0‹Ì_á¶Æï/=ð¾/ˆG¥›õ†›’ÂòVUZQ-øa;FÚ(²LŠ„óž÷†ÒŽ_}ƒr«–U˜zÔ©üˆ?¶ûÙµ¥­œ9_Šò"þ$`ÙÆi”ïSÒûQäDÄ���£d¬ÿ™öJëÁÇѼ‹ÿMü–Rü{‘}|Q Ú9#!V�MD¸NkÊŽþãŸÜ.r^’ÓU„=���FU­RÅï ~›�� „?�€1')êORßÛrÏI¥T”Ëñv±£+•NÉH?º¾B¶s\E)•R#VQ|´¶' ê1D@DIûH€ø�0Ý ÷ Íè>f¯³jËš!Šè£^-O�‘òÄ@–—L®Sðú¥¢ýX%î�eD"ø”š±ËÒý¹æù¾àG…üñþ(ÕØDóßðÚsÇoh×_N¢Pˆ´¤áOÁM7ÆéÔ¨YÔFøÃõ &���L<cšñÓ±ÿgŸÿzš}Ϋ»?et"B¢3¬¨~µ¬òœfá΋Z!0}¨X�äŸÜ.ã|«ŸRâ!���“k¼ìˆQdBð�0ð�0&ħ� § “ÿR8êL½eÛr@ˆ=¶%äl0YŸã²o˜-´c8%Ê¶í ‰tÚ/CØcŠz¢i¾Üm?6Qì�@�€éFR4o=F€ÞLÂõ"ôħüòE@–ý¤\±•2„AZ dë0Û‡þ,¨a[EéwܘÖ÷胦~ÔŸä”_$í˜î³^EÇžM}÷ÝLýßC¹][ܲT\øn+鿟”Ûœrg<SQ—ƒjGq¥D)`,Ñ"4½V…ð§Ô á��€"Dí’ÚP7gµvµŸøªkïöD?ÅR|¢ýx ‰ƒ¼íàõàøš˜ï³¨f°®Ôç¤F€ãæ0��0ù©±›�„?�€QŽè—î+.ê0œh¦ø‡aÇ–ŒòÃ]å”Jq!A<óœSjØÂKûΩ½”`È÷Ózéu+QøcîS fì��¦:‰ çÉŸà>3Â<(úÑ¢å‡Ü@–!ô!ŠKñ�Y&£Ã F¶X’ŽF£þ¨3bR~±p™Sr¹âŸúŽÙÔ}ÞÅÔ}îÅdg†©04@v.ã˜<¶gˆS WTä©“CþA^Þ±Àî±°Q`÷Lð �� ¨á­W‚»|ÃÛíOøËì ð(N}¥[Ú(ÕØìêtRÁè=r’—/â ¤ø v6ÊOà7n&îŠZØÃè[��˜d`Ü�P.þ��*&,îI.W<êü˜Ù6Ââ%Ú±d ŽêCîLw�±³˜÷qD OðãzåLÿY`Ýs°¹åŸ@SîF�`úQl¶l`Ÿb@ä§öÒû ¯+ÁZOYî>CôcŠBÃç—êçÆ‰ƒ�(IDµì~vBQ,/À¥3}yú-ø‘ Cây®ãc1;À¬†&­ôqÓ o[^6°Ï‡ó“Rœ­¡����Ê%h/ÌçP'À¢ ÇÅD䱬àk¬èÇX÷E?ƹ u'‹•ÀL'©XA���0Æ`,�0Z ü�Ôœr£þèTîQÿùâãlJ§-åDj½í¬¤Sj{Ö̈?Dþ6™‘~Œ`êÕtžE +Œ ��¦;q}ÊØè:†Ð'°mYŽ Yqú$ÑO\‰í mP®]á"A‘2îDéß~ËòîH”Dû ˆØ.!Û¼²'tæëÊXA–!�’åŒ}²z?ü×» 6����¨‚Mú¯Ž»?.zO@Ì#÷§‚eQ("ú)¯¹æP{aƒjúŒ �� ¯�Lþ��jB\tŸÀqòÅ?:Ê)òmÜc±â3 v¯éF2E>I‘}Â)¾Â©»¢QÐÑ�Loâ:¢¡MŒÐ'¸íïü/øñ¢øP²è‡ÈJ¿Ñ3Ã(QQ~ÜLBÔ¹N¾ˆYP‚øG–KÉŠX°c¹™",F�$/é–±¼ ¸ qEÄ>A© ���€êIˆ c…E4±{¬˜à'.jOHô‰úcöh.Œ|0FÀa �����¦þ��Æ”$Aö¯i'¯Ð.Cäc¦ýòš\š:_§Sç{W±Œ n9½,?=‡¬-,ô‰i¨@Ú �À4Ţ⢵mEŽÅ‰€‚å‚‚½ÏÿX±¢? \Òuݲ1mKj3�‰¸ÆH8êOÀpÕ;V1ñû)ŽˆB}©¿Ük‡@ªÎH­øÇô…cì–���P.ñ6³e¼FÒ{é}aÁ{N$µWDÈC”˜,Nô“ÐÎh´�������˜y@ø�¨ -Ü î‹¦ò2÷kWš·]Düã­»â¿>Ó!çºÛ,ÙÇî#X‘(?EÒ{%ùËàH�L7’E3ÉÛáh?ázŠ ~¢ëq¢ŸâõÈW*Ýf�Š÷x»­hÔŸ¨±£^ ñ²UøÓlÅ?ú-rS)‰!p3@n}""ô1m£M¡öáo����Uc»[ã¾ØG‹üÄ wbE?)¿îйqí 6+ÉðA������˜y@ø�3bÅA/þ¡Ð¾ˆøGîŠFÿQçèu#å†!ò ;ª“üeþµ£„B��0Õ)&‹‚’„>ævx¢mXð£yûSz¥"ßÇñéȬ²Ú@Q\ã!1êg<è¢1Q Ýè>‚xF»›ÊËÖÎ,á§î2£ÿ˜ þü{¡ )"Ò˜âjßxòŽ����@u$+ÿ¶uXì£Ëzý2?üoJŸ …[ª#®½ˆö������� ��5%9µWtPèãí ¥ýb„ôr ùb¡¨�H;åâD@²d(yíäh?C�LO’¾ÛЉgÊMý¿M±Q~ÂåS)+VŒiiC1ð˜¢)½üB^®P˾mà†ðq_Ô.Ðå§Çq'¯+ÁO\ô+$�R„+p¶Ìô^VHðãÕýP#:!����*%Öî·¢VÔðwZ}¦À'*"CèLï¨ËŠOñ'J4ðcDA�������0€ð�0¦ø"CèC†ÓÌŠOû¥žxÇ;Èþ÷ø¢Ÿ¨Hž*üŸ°o,, ß��Ì4ŠGý‰–+¶/,ø‰/c ‚bê mP3\ƒÂÆ‹íFJŒø‡ñÌ2Ä?DnJ/Ë/ëè?aõGÕæÖ"ýÄ ª‚����Oy"ÿ¸€E  ‚¯LŒèÇJ<ÏQ´-V)�������Ì ü�T)ê î·g—+þ‰~ 1zñ@¡+m3Sùûôº¬Æ%™`Ò<�`¦‘4^ÞŸm'Nì#_+ü$ÖIÅÛf…ÿH ¬¨?~iòR‰’iô„£øù9ŠTÔ •LGÿ €Ô™î‰®àG„?~…a÷XD0X����P;ŠEìî¨(( ~¼sK‰~ŒëúÍ*eë›ýô �������3 ��c‚) „*ÿ•+� ^+èLGõ‰Ká›N��fåF?+–òK®—üÄí3Ëš¿Å®©×1¸F…k@D£þÖJ@5ÿRYîù^ôo;HU狀ȳU|#ÅS[¡„?����¨QƒßX XåÁãž`Ç=fÚCÆþÀ¶ý$ †¬P{„Gè�������€Â�À¨‹züýÁ¨?‰åÜWAAñ‰ŸÎKÄÌôr…:dñEì5Íè?ú¸ª_ÊÄ õ�€éF9cäq߉Eü±YGé}ÁcLÊ>‹4TLô_�“õ§ˆøÇ²„ÅGRDüÃ;…gŸ¨U}†�ˆ´Ð‡¼(@ªZaÔ¯[(B"`¤����`”ÄÛÓ1ƺ±úcÔüèó¬h”¿®¸ýÜOI¢Ÿ$‘�������Ì ü�Œ©”E¶/þ± g®Ü&_ü£÷ëòa±O¼�ˆ(Näùç(>Å—Ù–ð~Œ�f Ißwqû-JãÛo%úŒó¨t}qÛ�TŽ!þÑ{Êÿ™yâ£ÿh1‘{]§N¦‚ü„D@º"¿ ÞõDLë!ü���À(‰5ö­ÐfHèc¬Å81݈òãVd…> „Úh������ÀLÂ�À¨1=¥ŽÅGá ŠÌý¦P§˜Ø§øþ H·C• ;ú(&Ò�¦+eEýIH p*%”I¨SüBf)¢ý€jG&4x?üIâF¡N6™U™YIhB~ 0íÀ Fùñ„@ó÷‡ˆ?����ÊÔÄÙï1b pJ/u4Fdˆ„‚b ÐãD?–UÁ}�������ÀôÂ�À˜¢]DEâ¢øè?jBëñbŸpZ¯ðq¯œEˆŠÜ�ÀŒ£ØwŸ™ý[þñ$ÁÜ.Q‡5Nù ð j…²WÔjqñ”ýX®øGc¤þ"]“û˜ }µ€1d\ƒŒ´vnD ÿ¾ È߉¿����Ôˆ“Â*n³ˆ §¤àÇ??xŒ¢Ç¨˜èv�������0þ��jBXÌ<æ;Ó„ˆ/Ÿ”ú+|¬¸o«xdˆx1ßóú��0S)%"°ÊqP²Ø'®¼U¢>ßà;ªi'�&Ѩ?UˆbR‘±+ �2¢ ‘k!쉤ø2AÞ._����jK‘¬dU¿[:(Ú)*ø §ØãåŠ~ †������Ìd ü�ÔŒRâŸb‘{Âåäºq¾HEüc‘Ì6Š"÷`^ƒ��`FPɹ•V¿øvܹ¥?f=Å"%@)j!þ! Eÿ!Š�®Å\OèGòª¡Ê����jŒoÌ'nGÄ>Æzù‚Ÿhˆ~������� < ü�Ô”Râ&,Ú)ýGîs_ÃQ€âêSû’ýaBT> „H@�€éFµƒãI§%ï/.ö‰+SI}�Ôž2Ä?D†š'!úQD�D¡‘!2 Šˆr(˜Î4ì����TK)û:bÏQüÇ v?ÁÕ¸cå‰~��������@ø�ЉÔñ§WÔ¯÷È}Æ9q" ]6YôSzL+D�Lj¡™)íˆñTRv”‚è‚@" Jœ]RRüد\FZÓQ‚(dyµ„è>"C|����Ô‹ÊTú[Å¢îĈvŠ ~"ÇËýX•ÎL�������€i„?�€ !ÞÉ/�ÒåÕþh M’È;^DT.Õ ‡��`²P«ï°’é¶*<¯Xuý€±¦,ñ#m Ã& .e€ˆB" +¼#ØŽÃ(âƒ*����ÕRaĵ+¼¯t àj¥‚Ÿ˜kPùý�������˜î@ø�’<Á2Q1OøüpqÑ}¼cEPò¹¥(Õ.��˜.ŒfÀ¼Ô™%B5ü”ª�"a KŠBçG¢ÿ01 ¹»Ø_J¬Ø9>¢HΧJ�����µ$Ù·â 'n% {j*úm������˜a@ø�˜p¬ά$y®I)1P¢H»��`&Rí7`9ßÕ¤ M}�¨JüÔˆþ:fž°eÊúëJNKfÖ����P[*þ·?Z¬v‚ŸÈ9%Ú�������3��cJ9‘ü²þàL9" ¤z‹ �%ÖK���Ê¡Qd¹§@ðÆâ¦¬è?ª`Ô† *}BõwˆêevF%��� J*1ªËNÛk-`YV© ¨â(?‰õ�������ÀôÂ�À¸PÄ¿–P¾´Hצœôb���jO5_±Õ~/ã댚ÆIYÑt=r—ŸLm†¢�yeÂŽ¯äô]eÛNå(£����˜1±¿ËHÿEÕ ~bÏ-ãz�������0S€ð�0nTý'x^pðF”¨ ’±øÅ�� 8µ?¯…øãù ¦”!þaF#� œ+ÐIúP‹ê?ïøC���À˜PyŠ­Ø>@-?‰õ������ÀÌÂ�À¸™ø^ñùñ:¢ŠÊ06��µ§ÖÑÕð] Æ”2ÂÆGÿ‘GÜ×Ü©Ý B Àyøà���`RÂ8Oì $žgU^WYõ������ÀÌÂ�À„2ZP°®Ê{Äh/ ��3€‰H“ˆñ{0®”)þaŠ €d‰`½& B ÿp AP9À¶���@)j‰s4©·ªUt �������˜9@ø�˜4Ä׌µïÊ ��L8ø*“‚2s’Ʀð –0ÖEü5LŒ:*±KÅËøƒ���@•T=FRÖy5û”}=�������˜9@ø�˜Ô”3–ƒ‰í��0yÁ˜<˜r”)�RE+y%㯗DB; ^���À¸Q±ÝQ^ùŠíØ?������� „?�€)Æ}����Ps*�©â¥D@^É„ýˆà���€©FåvJUâeØC�������P������� ‰ @ꔨsJ”<¿‡Â��� VÔ^\3ê…ü�������@Y@ø�������¥0OUä-æøUç-…3 ����KÍÓBì�������á�������TBœCJT}§V3!����åaM D>�������P ü������€Ñ’ä¸G1Τpà����„�������c „?�������0VTêèBÔ����Lv ä������€I„?�������0Y€# ������������@¤���������������������0å€ð��������������������€)„?���������������������LA ü��������������������` á���������������������S:`Ò°ì�����Ì 6n¢±äwgv�����˜9lÜ8Dcɇ6�����˜9lÜH�LZñ��������������������€)„?���������������������LA ü��������������������` á���������������������S���������������������˜‚@ø��������������������ÀÂ���������������������¦ þ���������������������0ð��������������������€)H�������„4±,‹�������������Œ?þ�������À0]E>qLÕ{…` �����������0Õð�������jÄLûLJ½_�����������&;þ�0 k�����Åàgz~_a�����������&þ�0…˜(‡RÒuáø����ÀL‚Ÿ™…ù~Ã�����������L ü`3ÙI˜ ���€™ ?@`�����������&�˜DLu„@����˜ ÔÚfo6Zm������������0‘@øÀ2ÝgŠC���€éÄhm·ÉbûMD;f‚ÈÏö.�����������`¼ð€qd¬,µ®¿ÖŽ ����0U©ÖÎBJ0Ådxãa{"ú�����������`¼ð€1d¬ãå8IºN­���`*PíÁÏ䣜÷¤–v.l[�����������Àx�á�5dª }Êe¬;���`ª3‘éÀ`;žZÚ£ÿ����`ª3SÅì°á�����ÀTÂ�FÁTú”ªo´Y����0])×.«Ô~ ;r¢3ÓÙF3Ÿi5÷ ñ����¦ˆVd¬£ �����Pk ü B&£“f¬Ï¯´S;B t´���0ÖT*úÉçórI:o2ˆ@&òúå\{*ØxºüšJ¥(N-ñ����&úT&)����€É „?�”I-;Ä£©k":æq׬¤c;b]':Ø���� ªýär¹Äãá퉲a&R„RεÇÊÖ­å=ëûà×B¡ ÷Aü���€ÉÄ>µ“����ÀdÂ�ŠP«qµõŒw$ Ñˆy*9¿–B t°���0Qh;ddd„zûúè†íºkÑŽŒM¶-HØ6±y"mWø¡¬!ÿS¯ªn~‰;Oï#ýJn=</\>P—EÑ}úz|NèÚj_è<ãR:Žnƒl_é¶xu„Úl”OY)UÀ-¯ÖÇžJìHõ -šÝTG‡w¤èøÙõÔÒÜL ����0™€ØgüÀ%�����˜H ü ‰ˆÊSÍy㉨œkµ‚žZ 0“����µ ûÊý ÑõÛ ôëí$Å>F‹guy‚c—ù"/šŒÖˆàyr"âYÌÏèóxW*eyUP ^˽–ßFY^ël¸Z[‹„W¯°ÝKǸ.; d"·œžüø×ÖçyÊyMU‡íüç—§qÿT⨑ÏËYväéî¼Ó¥¶rtò\ñ§˜ø¶*����Æ‹±üLW!Q­m4D*�����ã „?�„˜Ì¢RåmÛ,Ú)¡³ÝñÔ3–õ’J¥K±kWšª¡!P¥dt¬���0Ö˜¶J&“‘¯wíåõ,Œ S!o»Â…ehW,½í pÌW3"Oè<O'#Œh:z§_‡ŽõcFç1£©(@ä püH?ºm†ˆ‡|%:EEþ= £||£ÀºÛ^K"¥Ü2®=ehÁé½Z[[iUO<—dª7Dý���ÀDR aÎLŒ4ÚÉ¥êÅ8%�����k üÀ`2ˆwÊ-k»³Éóù|@èS‹º5¦¨®®N:7ЉÆBTm3ª���P ¥l¤ðq¶Á˜ÍY6D?BF´Qâ/BŽMÇóW°ãEß!ò„7Âÿ3Z+ò¢éž¤×¢`”!‹Œ¨BäÖAF4 ò" ©ëiŽ[«>ÏY·m-*ò 3™W/ÅÔëߣ-Tý¼áE?ò$GÂ=Y?ÃdñÏD˜}l‹Óvâ[m)ëب����+Æs2ãL¢‘Êa����€±Â�\j-š©uY>Æ"SìcîÏlÌh(ë,9›2vŠòŽ3ÇÙM¶•Rn!éÐÑ3ºmåŒq–”³žvv×Y65¦5×§¨¥!Mm,öQ¢žÁ̘" ~5;­£Õ²¬y:Õ����KtdÅL6KdpHÚZn$Ÿ`f®€�G‰Z((˜1õ-·}D ˜}ò²gyɾ‚Õ_q$lËH×V‘‘æË*¤¤=ª^ÿ˜[¯å¿ªêD(í˜é#Œ{rÛàÕob'S¥ÄS®ÖÈ+'þ©Ä_Ukó#=©6Ài���€ñg<&2N–º«a¬ÒxUZ7¢ÿ�����€±Â0ã O-˱¨‡E7üªE>YDZÔ?’§>ÇÇ0PHQNÔQÒÎqŽÆú³öôo’¹ÚJIGŠ3­Ó”wöeœƒyçÞ&)rj§Fk˜Zëmjo°¨­©^¦0`Ñïõõõr)uÅ:¶Õˆ€Æ2b����@˜b¶[¡`»ë¨<Å®øª OãE»q8f´ ¿aDÌñ£ì·¼N&,?‚²ýt]:ªˆ‰2$<‘’ˆp„©È-ãØˆV@äÄeRîF0‘¼¶éGg»įZÞ‡ÍÑ&)…Høu¨¨B䉄ª%îmM}¶]¨¨<Äé����¨c59q4çL6ª¹‡J&VslA�����Pk ü L*MûPmÆûp„ŸL&Cƒ#YêÉZ4¯£)ôiеzçé” ›ÁK˜`¤ÐyÌS|i-ÿMÓp–,Ñά³5 ¨)5D-éu5¥¨¥©½@,�Ò¢ R÷ŸÔÉ-·ÓŒŽ2����jÉhœ!ÂÏ¥å Z|Œoaé�9JŒcù©¹Üˆ6f´ hZ0]‡×Çó¨ 3°ŽŸ.+(Àñ>‹¶Œ2Ÿ¢K•§`.Ë2Ä<)¯ßò$¿á¦Ð‡L1åE² ÓÔnê/ãm1…RÅRUŠhhtõÀ>���ÀøPë Š•–ÎT“Þ«Ò‰Š°����@-ðÌhj!Ö©¥ ˆE>͇E?ü:4<L{‡õÛ 4(Z´[(D`.xÙâ½/þ –5…B<ŸyЮ“ËΜ æÁµ¥F¨³QP[k‹±ðÇŒ 4O©Ns¹jt¨���0âl:sG¦¦�Ç“·„8fš,­„qKŤÉÒº•Ì4Ù,#*Žð2:ÒŽWN¡'¥mF·.õª…@¶'Zòuà®(§ 8–+ÖñÄJ*/˜g‰ªãäµKGæ±¼{"7¢Eä«£üdb¶pŽ‘„"©ÈTÉ”E%SUK-@°;���0–ÔRÈS ¡ÏT Uc§UÕQÊ����ÀxᘱŒVôSí±¸2:ªÏÈÈ SÏpžz 4`·Èd[¥IÿE!¡²æ¾"â —uׇí:¹ìÎ jÉP{z:[꩹¹™ššš ¯Ö˜m)P9 ˆÀXq>Û·>=L­ÏÐÖÞ‚üûZБ¦ãöi¤sj¦Æ:|¦���…FÙW®”ÅHO¥Ò^™B  p‡\ÑŒð 8^š/Ë·É„{Ì,ãír8ªRu®ŒÉã¥3Œ>¡êÓùÁX€cY)CÄC®0ȵ§¼ôa®øÆÓñh±’å_š ±Ýë—ç×+ô=9;l!Ü6êû°<T*¥Úg»mð#ÕVüc>Ö±2a—0z`§�f"µŠò3Ñ‚¦ åÜS9cŒÅÊ!ú�ñÀ~���ÆÀŒd4¢ŸZŠ´à‡Å>ƒƒƒÔ;"h¯ÝLC¢…*'NüÜŸXÖÛGÈQ´l°NÛ¹`_¾ÞYêhWÖ¦®^êh죶¶6jiiñÒÉzF!ò)u âŸÉ Þ|ð!ùü;îXåè›älØ“§oÞÚK{‡ìÀþu»ór¹Íé¨^vN'-ëÆÏ)��Lu*µã¢ûü88Âßÿ˜%-Oüèb®˜EGúñ<–W©å¨rä tê/_”#¼kë Wüc»¢yUOtä§Ó‚š‚ Ù†ÈFw%}/)+(r’B[]OE "2ü¤¬”×6¾¶mÛò€ÔÿXê^m÷IúÏDËE9"zžª=)#]Y-Syo¡;ñ�“©h£3°Ó� ™ÑLVœŽBŸj(7ÂO-&*0S€ý���Œ-ø †R¢vPp:®|>ï;,*¨GâŸþþ~êË¥h¯ÝB#b´’1â¹Q®øÇÝ_¶ø‡‚õºÎ¢ŒHÑö\3íÍÛÔ• çY�Āж>¡#̃Ï|Œ#Õ××Ëí¤Ž3:Ô“N]wé¥ï¥þó ¹}Ì1GÓÿþï7#Ñ &šlAнÏeèÉ-Yê±e§s$—üw¼gЦ+oì¡}f×QGSŠYÔ@'í×Hõi|�`¦áù¢/zé½(*Î1Å?Zäc©Â¶˜¬Ôˆ¦ãîÓ˜€íf™ÇȽžg¦yåí<—±½–ÉkÛÂ;—Üö¨êlÏž¿kp ÞeÝ(Ad{Ždyͳ¤HÈVª Õ¦”nkZEúÑQlõt¤ÈG?�Wc{Â'uC*Bð".·ø'élR0˜*6:;��F'Ú)vŒÇ7YÊ qV3r:d»ñ~‹ä ¼ÄýNV;‰Ñ,ÛL7`¿���ã „?`ÆQm'Yïg±–S6éŸÏ‚ŸœE»ì6ʈZþ)šsÉɘe]…ø‡ÌSŠ”ÿð¾¬HÑŽ\õlš• Ö†joo—é¿*éka¿ò³ãó9‚PµâŸ‰ìLóû~öÙ/ˆ=vÀûÓÏþ“RUÐÕW—®¹æÚØcW\ñzÕ«^A“{ï½Ïs(0?üˆ\N8áxš,<³=Gß¹«z†ìŠÎãëÓÛrrýþuúãƒté´r~=��˜ž„m=™âËçÃvr¥2¡Ô_䥧qC"db? ¹y,¢À1á¥þòÏ#W3ã c Â7ÝtyvW‰#õI¶¯?r¯)“…é4[¼%Œ;•¡‚»íŠ€duZ¨d« BrQé½DA ¼ù<ÞU*"ÃbeªE©´ŸêLE=ò#\*ù’+vrŸ÷xŠ&š8û’íå_üâ§´lÙÒÄ󆆆èŒ3Î ìûÈG>D¯}í«i¦]1mtv:��Œ~<3 ‹|ô¤F=î&'7’oãyãt”pMšÞè±CÖ¢§œçÅÏJn;ö«žœ¨£›kF©|2‰f‚}yî¹Poo†K/}‡³¼“jÁ/ùkúò—¿êm/\¸€þô§ßÑTö���0þ@øfÕt’Í}Üéá¥w8G{sõ4d×QN¤HP¥2îvQ­Ù»k;mz~ m^¿–6¯s^×­¥¾ž=”¢gìï¥áÁAY¶¹µ•ZÛ;©©¹E.]Ý´xŸ´xù~rY²ïþÔ=g^H×SøÇuF1#vжÙÍDl³r'9Óz_hd…ö³»¨Îqþ4× ê¬·©£µI ˆxIêPO¥Î´æÙg×К5kiÿýW-wÓM¥©Æœ9sÛüì»»»i²ÀѯÞÜCùÊú¢±p¸Z®ëC/èB§��¦妈•‹îÇÝr/–a*iåŠðRt‘'VÑGµèÇΣ.yÒmo¹1}\A›k‹tú+ɇÜH>Â}¥8H wÈÔ£ì2? +÷ñ…F¡´c: Œd9uœõ”å§Ó" Ê»"ίÅë¶<Ù– œö¤SiÒQ”삺'}ž|ÂÎõ9*zvàŒ§ø'é#2‘ö(‹å¿ð…+éê«¿E`tÀFŸX`§�@mE?,òáI,úa{a(—§Õ#6=‘¯£µvšvŠ4 “co¥Ó¾ùJZdmybkoÅ2¯gn ó¼…Q6¡ÕÛÊ2l0Ý&aØÕf;E°*2J’ŽÄ)ŒP™ÑòþqyÍ‚3) 4?U u:¬¡@6ZÔÒP'…0z §ÊœŠ“Kû” ì7���`b€ð�—b¢~ݹs'õöõÓÎ|3õÚ&|V ·iÚ§iÕýwÓªî¦'º—úzÊ> ¯W.&üí–Àv{gzô‰tÄ §ÒÇJË÷?Ðè|Šââ¹Ëÿ”,ë奨NxÎéœ;cÔŸOS›ÓÑœ=´ƒFFFä`µHíà3Ãä^ýô¼/ñøO<I7n¢©Æ!‡L—_þ~úñ*ß“w¾óí%'ã‡å(µèŒj¸®ï:u~ñ•ÝG ��ÓŒ¸h?úUi¸µ�‡|Œð=Fô7ê¢ /²/ð1ë°<±óÈUqH‹l¤€G×ïü8Ùîo \k„,/|ù<ÓÌ?Ï=®_EÐZÓÑŒ,ËeK_íŠ~(åFéqS~Ù¶¥ÇYçH?Jð”’)È”ŸEæ#£t*å=%Ûö#}+^ê/ãYÏÑLý5ó~|ð!úãÿL/}éEFlô‰v:��”¦Ñ 7eT– #yºÃn¡ûEõ8.[Éi;µ@dF§ôéÞ?Þ«´ñRÊÆóì4RBþªõ57ñâé$OhG¸"Ô6®DW½ÑM-œ'+RN³×ª£-ÎþGœqÉß8K×`žNJйõ{hYs=µ¶¶RKK‹�ZY¥øg2û”ö���0q@ø@ ¸3¶k×.)úÙœk“Q~&ŠB!OÿývºóúßÐc÷ÞE½{wÓXÒßÛC÷Þq“\˜ÎY³é¨O§³^ôJ:æ”3e8ÛòÄ?De …Lñ‘—m,iH(ñO^ލp¬Zü3¸é¦›é²ËÞ›x?7ÜpMU.¹är™lp®éJÃΖÏHáºO? ‰���Ì�,KÑ1´Ï"äYÐâ­ª± SÉò„;–èǰXÓÉž#ü:É?Î)½,/m«+’" 7Ž(¨&ÙJØ#ñ>™ÌMõ _…/*r×ùQ‰$¶Š´c¹G”³'å “´M£„@*•˜í¶#娒î¼q©¼ÿHÑOJ•çhAÎ5 ZÅ¢ y”üp{ü`îõ‰|•ëQòÅ?Þ›EÕ’õgr:p¾ñoÒé§ŸJ³fÍ"P=°Ñ'Øé��@E£ý”+úámüôôôЖáýI´Ó?Ä,ÊjqŽ-Ô9ÚôÓ&¬UúZD®•UJ<¤÷hÁ·c«q„Fió†ÃöèÀp]±zWPä›Ü"(î‘ÉTùò +$²b¯ë‹â‰ö8.•ëómtk¾…NË ÑK‡zhaó�uuuIi/T#þ™ì éb_rÖáá‘Èþµk×Òý÷?èmó{ñº×½6¶ŽÃ;”@Øo���ÀÄá˜1TÚQÖûúúúhhh˜vä›'Lô³aíjºýÏ¿¢Ûþø´wך(Xhtç¿— G:õ¼‹èœ¿’9úy<¸×Ř…mú¾’Å?¤ÊZñâf¸¢Ý™458ï ¿GGý™,ižUËé˜íÛwÐÃ?BÇ{L¤ÏŒÿë_ý¨Lmm­2ÿ†  TÏ“[²4V<¹5‹)��LÊIç•tžy®pÿó:î?Ê—`¦ë"_¸8æÛAÞ¹ZäQH‡¦Ãøxö }œÿl.KJôc ^D×HÅ{–LáÅçÚ®˜GxQ€d{<GPÁ½¶n»M~z/uõÙ¬´uÈóÈ}*};ƒä~‘&J©39âO*r.•òfsSrÃm£û\88‘ÿ¸©¿TÆ ËK÷åÇL2mIßéS IâŸÉH__?}õ«ß Ï}î3*6úÄ;�0Ó©ÆF ŸÃ¿S{÷î¥===tO¡™~iÏ£¾‚²m¶ëB‘p|bÄ*úˆÜ+!Úa!P¡`D©ÔÜARn%Œ'Šà¾€ÈÝ)Ùf:["ϱ Šo©—Ö‹Œºã†+cêq Þšo¥ûçzq¡NÏl§î®.)ˆ1SU3þ8™Å?Óž|ï{ß»ÿ÷¿ÿcDøó¡ý+ò€ý���Lþ€O1ÑO>Ÿ—¢Ÿ¬ítŠi<á”÷Þq#ýêš«hÍ–uN:Íù¥›œ¥…›×fª¯o”ÍT*í-ŒíxIüŦ\.CÙì0e2ÃÎ볌ÈCIp4 óS¹pè‘tñ;.£Ϻ@9dÊÿè]ñ½i1ñÏ@!MCÙœÿðŒšºººŠÅ?“v h§é✠÷ßÿ�íÞ½ÇÛ>þøãhõêg¨çž{õööyÛŸúÔÐK^òâH¹Oú¿èϾÞÛ>óÌÓNü—#åöìÙC¿ýíïexýúõ²³ßÐPO³gϦ#<‚^ô¢Êv…Y»ö9ºøâàLâ?þñ·´hÑÂHY~¿xàA:ø™gžu-ÛÏgžæÌ™M‡~½øÅÒ)§œLµ¢w¸ö³PÆ£n���cO%ÎÛuœV@Òlˆe o‰Ð‚l_Ì#ÛÞ1»àŠo,-`aÛN ˆ”8ˆ´FGž§¢ð–àð nþÈÔ_Ú¹ÃbŸœ/ìqlA9CÛ©U[м¹û=Q’ÐiÁÈ.dyQ†¼H?ÜþT^‰ŒHxQ,+/mRá(íî/H¥]±PJ¥ÿJ§¥ý¨c Ù©‚JÆÿ9ö­%”HÈ.¨§Ìåýço‘FĤ`ôÃS4FL”:þ<)Van¼ñfi?|òI4ž~t„<ôÐÃÒ>ã~ÒܹshÙ²¥Ž x!sÎY‘ŸúÔgé/¹ÁÛîîžå´çÏg˜É[Þò™6KsÚi§Ð7¾ñÕ@v^þîw {⦅֭[çÚ£ Ò®<ê¨#¥­{衇ÐhKý#¹‚n»íoû¢‹^äØãÿ)÷§?ý…>ó™ÏyÛ,*ºãŽ["å8u Ûòwßýwym¶ÿù³×ÕÕI|uÖ™tá…Ȉ­&“ÙFg`§�@2ÅÆ35<Þ·cÇÚÝ7@?ËwÐ…V×üÁÌVa!2ö Qzè:úŸÒ ›Ð5Ô˜ -Bç¸b O!d…Oö×…0&"E‹›ûäíâü¨®ÇT»³™¼ÝëØ¢ßËuг¹4½Éîq~s4oÞ¼’⟩–òk²Ø—šZyVK­íº0;wî¤ï}ïÒÎëééuÆ`»eºÖ‹/~ sÌÑ%ÏgÛšmg±óûÇŸ;m¿ñ8î©§žBµö���0q@øf•8m̲œóš·{ T~ £ƒüíúùÿû ­}jUѲì0inn§ÖÖN§³ÐEMMmT.,âEÓÜ=—Å?ƒƒ=ÎÒ+_“„@Ï>ñ}îƒï¤e+VÒ«ßú^:ë—u;òZü£”+þ!-+Ó~åRÔé¬ð{ÕÑÑáî/¿ã<:ÙÇ{4ýßÿýÊÛ¾õÖÛè£ý÷HÇ–;Õ&ܹ^µêq/ØÙñÅ/~™†‡‡ûy@cppHÎjæNìÙgŸIŸýì§œÏT3U ‹>þñOÊœáa¶lÙ*—›nú+pÂqôùÏvÔa…7ìÉÓÆ=yª––‹–̪£g¶çâëß—×XÖŸ[��˜ Ébj¡^uä! AŒ+âñ£ð¸Q~¤ÃJ£Ä3¶ü_žäFéÑâ9K:rêH¹©³tꯔ{žk?Ɉ?º.¾Áv_õb»ž7ò·]D#þ´Ô§iaG-éh¡…mÍ4ßYo®KS“³4:Kk}ZVWpþÉæiÀ± ²¹õg ´­ÐY†iëÀíÈ:Í,¨ª]‘OŠÅ<R¤žrŸ›Žøc‘­“rï•ÿã祢\A»ðfÛŽ­jñ>¥F" ¥þ DKGñÏDðÆ7¾ž¾öµ«¼m¶á~ùËëœþBå3d γ¾êªoÑu×ý"rlÓ¦Ír¹çž{iñâEôå/‘<p¥wœB¦ðgÏž½ôè£Å:)Ø1ùä“Oö]tQÐyâ“/ù«42LËÀ6X¤Ã˯ý[zÙË^Bû؇©¾¾žªeªØè,Âùà?LÛ¶mcç/wÜqýèG?q>_¡¥K—P¥Œ·ÎÀN�Ìtª\®aÑ϶mÛh÷À0};ÛM¹Ã"mYA]ºwÐÕ�ùx ,ã|s§)° 6’nˆ‚iÂâl3+Z•eÞsXTR3™Z£"O¶øqKG–TÏ›Åù2Mš{øÖl í¶Óô~Ñë<ÿm´`Á‚Q‰&›0h²Ø—3 ¶±ÞþöwÑ®]»½}[·n“Ë­·ÞNozÓèx_¬¨žíão|ãè¿øel½Ú~caû¾ðY9©s´À~���&–0ƒ)%Òʃ…4÷ßq½ûe§Ðç>pI¢è‡5³f- }ö9œ:èDZ¾üPš3gIE¢ŸráèA|­%Kt:X'Èkò¶)2Ù°öúÚþ+½û•gÓýwé q£þ>8×™µ¼Þç0àöƒÿaªMá1,Z´Hvd5ƒt÷Ý÷Êð,ÞÛo¿#° ,ºxv/ÏØ‹~â¸ýö;3XÊ…S¶ñ,ï8‡BŽ8ôîw¿¿äû^ŒLNÐ7oí¥á\uŸ:çôƒçwÑG_ØEG.‰Ÿ}ÄuÿÏm½òZ���¦7v¾à,9¹,Ù¹²³wqÖ3#îk† z=ç¬s„EÞÎ ;çñö°ZFT™Âð å‡ú)?è,C=TêSKfØ9'«®ç¥sÅ;¤„G݇E<B:$œW;x_^nóùv!'_ Îõåk&K³›ÒtÖò¹tÙÉ+黯<‰~|ñitå…ÇÑe§L¯:b:mŸùtÌâ9tÈüY´_w;Íooq–fZÔÑBûÍî ÃtÓ±KçÒ™û- ‹Ü>pê¡ôÅ Ž¡«_~"]qÆ!ôòƒÓÝÍ”vÚ˜wî#ŸÍÉ×/Ü&§m…\A:¸½œ¢ŒE=^´JçžØ™eK¡ë“l¥Ubaܯž ¿ÚBÍV—IØ„r_‰ˆC©òßé8Ór2Ù›< ØŒNÃûW_ý=ª†~ôã±N™0›7o¡·½í]ñÎqÇ+g‡›°“"¶!ÍgØÞÞFgœqš·Í"ôÏ~öóeÙøÃŸŽ©j˜ 6zoo¯c¿/Vô†gÔ¿ÿý—Ë •0Þ6:;��*#NôÃQBöÓÿfºhU¾Ñ‹Ð£Ó·Zz!Ã*2D@z!CÄcî7“<ÂW‹Šž)‚‹ Ù#‹j£ðÊê{­‘RÍ϶-ÈE ŒgÁëæé[C]´w`H¾¶m‡š9uw&‹}9Sà¾Û¾¦è'ÌOzýð‡?Ž=Æ‘ˆâD?a8ÚÒ{Þs Òh€ý���L<þ�`î| ªs–³ÇvvÅ®í[èÊ¿‹>wù›ië†çcË´·wÓ’%ÑÊ•ÇÓÂ…+¨¥…£ÛŒç¬K^“¯Ím`1P[[üLÎ-Î=|æò·Êeû–+þ±âÄ?D•‰,*¸ï~¯¼:§PGš§Ÿ~Z`ßõ×ßؾ뮻eTÍ~ûíë¼ dxýñà?øQà™røÿo~óktÛm7Ñ_þò{ljðžÀì’[n¹ž~z5UÂç?ÿ%9cÅ䤓N +®øˆ\N>ùÄÀ1NMÀ3—«åÖ§‡iïPõ!b_~t+í;§Ž2yA›{ ‰åö ÚtÛêÒ‚)���S ówQŠoò²G†”Hg rý{×gÙK¹^çµ×yíq÷©í|¿ZÏõõ8åu>Ç}ÍìÝEYgÉõì¢Ì®­”ÙÍË6Êôì–åóCƒŽÃ!çŠw´FÈu)ø‘‚ÛÊä]ñ ‹“ò2Š£Ù¸¯¹-mo¢·½}÷Õ'Ó÷^} }à´ƒé¬ýÒì–ÆÈ}oÙ²›¶mÛS±½•JY´ow]xàú·Ó¥«^|}ðÔƒé”%]ÔH6å²,RB BÁm‹‘òJðÃÛòìœ+ì±å"ÅLÂ]w­Eýèç‚|ñºË]ø§Œ•ÍÊ÷ï{ß»ûعR*U˜_þò×2ZŒÉ¾ûîCüàå2…ÁË_þÒ@ú(¶k?ñ‰Ozbq¶9…€ eâîÛL‘Àœþy^t’ü÷-pü ƒ¤+¯üýßÿýLÚ¥§œL5ñ›ßüNFª–©`£ÿêW¿‘©Î4Òn¾é¦?Ó_ÿz=}éKŸ§Y³º¼ãì<ãT•0Þ6:;�0Ó©$ÚOÜ6 C{ûèg™vz4ßä ¡ý…BÛc±˜"œ¸ýÂö…Ëyç’ zÈ[ä‹(½Pd;ÜsŸw oèR§Ýͳ(=ãØ¡9Ûm;Ú­×ùY?’«§·Ë÷€ß‹rÞ³rßï‰d²Ø—3…;vJá5Á^zé;äó9眳"Q ®¹æZiã™°Èvª†ÏyÕ«^Aÿû¿ß¤ïÿ;2J§Ó<÷Üóôío_M£ö���0ñ &˜öTÛAògOçS(Zö¾Ûo¤ÿùô¿I#ú²Ï|ƒN8óTyÇÉòÛ~›~uÍ7(3o°vtÌ¡¹s—:ƒ¸-%ëK§ˆ–/*8‹MË:ËbõÚÒ$¨¹É©«UPS£º§‘ŒE}ƒ  X´nKŠ68Ëú­)Z·9Mœ×B‚­Î©¸]¼d2C´k×fgÀygäYsÔŸÇîÿ;½î]—Ó+ßünª«K‡+Ò=êÀ¼ë{ïø+}㳑Ïó_?õe:ñŒóÈ Ï«³>è:Ü÷F¿_Õ„À­ö¼ZÁ3‚y6³9 ãïÿõ÷÷S{{»Ü¾é¦` ÓN;U¾òìñàÙgŸ l¿ímoqœ+'ËuN±öÖ·¾Y:vx;<V¬XAóæÍ¥rá4aáÙ߯}í«é#ù·ÍTNíÀvè\zé;«zÿ\Ÿ¡j9xa=½ðPõ7ù‹h×@ñ÷á!çZVúo��ÀÔCÛ …á!Êñ2Ô/Ós‘`Ç¿E~V)wö±gÿX~ /׃¡¶my¾`AO–#åca˜:3YªwÎin¥áYs©±³›êÚØXk¡TW“’)²TêéÇ¢¹ùÇdj,Èp‘çß-›:ëë謋é¼ýоÝíž-'Šˆ`2N;¶mß-Û:{N'Õ¥«ŸK’vl‡•s:håìzÝ‘6=¾uݳa'=±£Ïq°¤3Ï–ƒþ©´î°­‘J×IA§:ñ1rEȪõ,2RåRê¾¼tiî½¹©ÓT¦0ÿ=_aýØÁb”SO=E:´ †…QŸûÜéG?ú~l:€0\><ƒø°Ã¥ï|çÛR`Â\tы褓N¤}ì^™7Ñ_ÿz+½ô¥¹e^L×^ë×ÃNŒþó :üðü}===ôÈ#®ÅukXøóÞ÷¾›Ö¯ß@ëÖ­“ŸÃo}ëž0hÅŠýä ôóλÐs qû}t½àçQ5L }M`›Sî²Í¬9ï¼s[½~ö³ŸKûœító¹—b"ltv:��ÄSjŒ“óï`ooÝm¢Û³ÍŽÉ#|}³g—Æ ¿²E…Ç’ÚRÆ~};¢D=–תÈ*r†Y«—üÕ?C§5 „ò¤Äå*‚d¥ð·fie]–Îéé•vSsssÑßʼn›,‡Éd_Î8ÊÒÕW‹ZZ”­ò†7¼NÚ\l{iXuã7Ñ;Þñ6¹ÍÏøÚk¨çÃþ ´á4Gy„L½ûö·_êE¥bqø»ßý.9Î[ °ß���€‰Â0c©dvE)®þÂǨ¯gZÿüGËþìܺ™¾òÑKééÇŒãŽ^W×<š={‰L·UŒÅól:áð<x„ózXž:ÚJ݇êD:~joÕe±2¨òa1ÐãϦéþU)ºÿŸu´z]šì! ’/>@Š“víÚä .ì<K4ýè¾D÷Üz=}ìÊ«iÁ’¥¡æXž3LwÀ¿ý¥ÿðžç·¿ø®ðG·]x‘¬·î4OÖN4w°¸³Åé úûä>v4üã÷IGwàxÝäÌ3O—¯ãåTÐNÍ_ÿz‹t,tuù3ˆßüæ7QµÜpÃíÖÖE( w@~ø9è€ö§ý÷_!ŸŸ9¨\¶÷U÷ì8ßôÛOí݇7dè®gJ§2ØÚ;>ï��€ñG¦£rlŒÎÕËÔ^œ†K HøÞ |èb8'd¤•†+Ÿ¦º\žæÕ7R½å¤÷õR¯c'mÛç�rp,)ç[ÙHl¯©¤ØG¦�+¸QqlhnK#½òÐ%ô¢ƒ—P}ڪȉÃòK—Χ´sõuéšÍB®KYtô¢ÙtÔ¢nÚ=4B·<»îÙ°r…´ãDHSš¯•N»ö\ZŠ›x?;cx[:gœcÊ&`'q„ ‹…âžrÜò]?Â’¶¡o#Nñ¿üÛ¿].Å*™Œˆê©§¥…¥ìb¶¹X¤crùåï÷œ2—°-Ëå57Üp“ç˜Y¾|zè!ôÄOzÇÙYd Pî¼óoTK—.¡#Ž8ÜÛf›óÕ¯~%ƒï§¡¡>0|Ïž=T-SÑFç÷€#î°Js ÇË¥&ÂFg`§�@yD#—d„™Y›~ži'Û@3uèVHãmЍ¾'œ¬tƒ\K*ICá‹YþI6yªãT_©EÁ{”u„E¨;¸KŠä]{P¦Ëµ•gÞÆµÊ ¬ÿt°¯ï¡&ç=áßìº:ß3„>a&“}9SøÐ‡þÕýhXÀóûßÿ‘žyÆŸ¤É”´ð'üŒybæk^óªHÝ,¸:á„ãèÞ{ï—Ûlçòzµ¢yØo���ÀÄá�1˜çŠeôÙ8BÐUŸ¼œúz"Çt:­b~Îô‚SrôŠóò´d¾]yÊ ¥™èÄ# rqLÚ¾;E7Þ]G¼½ŽÖo‰Îà`Ò¢EûSw÷BÚ¶í9ê öÉUtÙë. Ë?õ:íüG›,üÙ7ÁCE “*kéÜä~gy*vœ¹ÍÜù?ûì³èü³·ÿÞ{•Sá±ÇVÉYÎî°iGÈx…üå4<sWsÿýÒ\D|\<p¥œ…ƒüåÌð ž­|ôÑGE:¶ Ï:ùÅ/~JãÁÂÎ4}è]´jS–~ro¿7ðó¶SÚ©»5%Ã×þèž²êšúîC���IØ¶Šø3{Ã-*z-SqårÊeG¨­}¥­àokgf„2[ÖSoc¥êɪ«§”³¸á~TÊuÈYwêR¢Çnlo¤×u�³b!¹ÁqHPe¶›YsçtÒXš ³[šèµGìCç°€nyv+ý}ãN™^!U¨“ TŠ/®Ä<–H«�Î+9û %øal;%#ÿðýëìÌá}¾!©ÒÇ*Sxvxq&Qæ…ZxÂi§ÞñŽ·Òÿþïw¼cW_ý=ÇŽ;Ÿ:;;‹Ö¶ÏXôÁ³ƒã8í´SŽ™5k‚çòÌmSøsë­·I'æ¶Ûn”ñ‹/¤bpª ¸¬[·^¦óÚ²e«L…ÀLl»útSÅFg'˜†<_üF)ÀaÛœmtN‰ÆŽ°H¨&£ÎÀN�Lg’~Cʉö300 £âýv¤•ú ÚÖ!?À$³t, Çä6FGÉ ÁMVt&^x³œ9‰vøD#*#tŒNK„Ä5V¸‹üHâV¨¡ªÃ‡¹"7íX°ñmŽA§ ^HÁVɯšè} YùÞ°íUMÔŸÉ2Ö9ÙìËéGm4…ð&guF@ø³e‹Ÿê+üŒÙ>äTiqhцŸqµÂŸRÀ~���ÆÀ´¦ÜÎòhfßó‰+eª/ûãW&–ãÔ^?øê§éÏ?¿&r,®£¹s—IáLœ%ë…§åè•çç"Ñyƃù³mzË˲rYõLŠ~ss=Ýxw}$XSS+í³Ïá2òÏöíë(ŸÏydžûéK}½ôÑ·ÓÛÿõTW_ïŸhˆÞwÅçé*™ê‹è½W|.¡E®P¨„¥?U¢þ0ìà0 ºskvr™¾ð‚q¿Îá½jÕãÎ#wø9M/šîîYô²—½D¦‹s $ží³páBkt¤iÝî|âñÖÆuµ¤èÌ•MòïïÚ¿÷Óé4Ñ1Ëeçôûw÷Ñ@¦¼¿ÅÕÍv��0y/G¾¾‹U8­U:][fÖà�íÉô“k!»¡I¦båt_2ÚLïUpÅ?bwÿkZNo8j_•š« ÁíÔ“Ï(ÅÿÕUŸÎk4Ìjn¤×¾»ÿBúãS›èͻɶӎ Ù ž§“:'Žþã,ܽM\ñPl7•‹Ÿˆdê/[ŠR®ïJ¸QÌÔ_A§ÍTÄü¼rTÆo¼™ž{îy¹=44DßþöÕôÉO~BFdIŠN³sç®ÀöüùóÞaÛ­§§Wήwí}v}íkWÉ} uV¯~F S¸=<ðw.¿/zÑ…±÷tË-·Ñ¯~õ›ˆ}<–LfýüóÏ¥»ïþ;]}02Ïóϯ“Ë_þrƒÜæYôçž{¶L¿µdÉâ²ëŸ��¥ OZäßóááÚ’2Í—:@Á×H%䥥q"Ë+!"‡KJ§C!„Ììcd g¤¦Èô-|µŽå‰’|»ž>¨‰[æÍêú½\b*ŠÜ²Eät”"!‚÷#ŒûVZ'‹Â·•G #˜ ;†饙 5 Skk«OÕÉ‹“;œî,X° ñó±xqОëëëwúnyùù ?cææ›o¡ràg\-°ß���€‰gbFp˜ÄTí焳. ŸÜñ$ýäö'Ó| Ñç.s¬è§½}6í¿ÿ±±¢NÉuÑ™yúå׆éÓïËÒ+uÇwânÃgÞŸ¥ß}sˆ^ÿ¢5ÅLíìœG+VãÜ[w`??Ó?\÷}úäû/¡¡ÁŠß ó{â™çÓu·>B?»å7ÍWR'8(è‰[/—ñtæ%Á!lçÏŸçmoÚ´YÎ`~ä‘Çå.¼ðoxïx íÏ©’سg/]{퀷ËðÒ“™c—7=¾fGŽ~v9uE½ï¬zÝñmòØO ÑS[sT.Ç•¸��€ÉÇDÙB˜s­“iN –!ÛàœÌ.Ȩ>¼m²òµÏÒ‰‹fѵ¯=‰ÞrÜþTŸ.¯û72’¡Ý»zh׎=´s×êïtÙó4Q°�è-GïGï?q%u7ÔQvd˜ò¹¬s9¹Ø[-Î3°eê5[Š{ä¶í ©¸"ËÐD¤ž‘ü×Ù%\¯9vFËDÛ™ì�øÿ¸"à8øóŸ¯§7ÉYÖIŒ¦Ý*z•>Û’§Ÿ~j ÌwÜ)_ï¹ç^™6KÃQe-Z©ï£ý8]qÅÄŠ~š››eª‚Y³º¨ÖLfßÓÏ~öSô…/ü—œžäâT,zÃÞL?þOšìÀN�€Êáhx,¶øëH#e„J]E ‹0^µ%xÉ;ër)ÈWÞ')[ëÓ)m•1åýî *g»‹yÌM§å½šç²ýæ¾R#XòBÁöåœö¸íÔÛ^»u;kSA¾ä6¯ò|Ÿª>£Iºùz>þ32n7rÌŽîãûÒíušê4‡n¨—QY3]˜ öåt§XäÊbÏa4ÏÈ´É+ö���0ñ â�ã@oý×eo¤§{0°Ÿ;GågΜ¨‚ûM/=;Oïy]ŽæÌ M™$,šOô¡·åè’—æé^O¹«ŽÌ¾G1Zºô`Ú»w›Lÿev<»ÿïôñK/¦Ï|ë'Ô9Ë‘ˆÈ’ë§ø 2ufÆ”‚?ì0øáâíc‡‚™a¿ýö¥ØŸª%©§órƒg ¿õ­o–˶mÛe¤Ÿ'Ÿ|J¾²AÏàf8íÂ÷¿ÿCúà/§r˜;wN`Û Q;Vœ{P3ݾz˜ö &w¤ù8óÆ“ÚèèeªS¹~wž~ÿÈ • ‡«=Û¹��€éI­Ÿõà9¿räĤ™Àv Ùœû˜Î[:hòÔÕ”¦+Î8ŠNX>'nbv"§ŽþÞAÇfP¿ëì´è¤ÌpƱÙÚå ÿDqàÜNºâÌÃèOn »6ì”âz/}·KÈ(IÒËâØˆ,òQ.MVÊ&K¤d$ ÝÇRåÜ4j–žŸ-´8Ê)On>´ ˜¬3·YòªW½‚~ýëßÊmv$|ÿû×R[[›œ!GØ>Û¾}»</nVöÖ­[Û]]‘ÔR9ç¶Ûîð¶ï»ïú—y—LeÂiÁ°#É<—ÛÀQ&YLÄQƒæÍ›'Ÿûk_û§ïM§<&»ÎpJ^úúú¤mþÔSOËö±Hj`À·[Ùáø¥/}…~ö³•UïDØè ìt�ÀL¥šÈåZ 1<<LC¹<ý}¤ÃKÅå©‘¤Ø®�Æ]¦ò¥–ŠŒÈf§Lµôb©×H{½B­ˆ±I…¾'x¾:Œô-‚ǽ눘“…;¼è]TÇ2Êé¦%þ܈"[þ™fL›2,ZêîÁzº$7Lõ##ÔÞÞ.÷%Eý™ìé¾L&ƒ}i2Z{ªVÔªÛ¶mK|6a›ŒÓ‚é~ZøŸxâñôío“ÆØo���ÀÄá˜q”ê,'•«–[7ѧÞ}1m^̯ÛÐÐD‹HÍÍm‘sö_fÓ—æèȵ¡<¹Å-óf}úý9zùyúÒ5 ´f}°½³f- ¦¦6Ú´i5år#ÞþgŸ\EzóKé¿þßu´pÉ2ÿ7ò‰è@ lv‚“Öã¶'œÖÀt*üæ7¿“ƒ7þñR%ðìçÞÞ>o{íÚçb˱s Ø™Ðß?à|vÑ‚óé¼óΑûyÖó{ßû)øÑT’‚aåÊèÎ;ÿæm³3…g«qd“þþ~zÅ+^CË–-£ý÷_!——¿ü¥E;þI4Ö[tÙ9ôå{h8—ü÷nvJ³yAß½«'—•E³s8×h¬›>5���A;1NÉí­ûJ…ìÙ™aGŠJŒrží¡g¹© ·<–wgYg©¢|!G³ëB×·i`¨—lÇ`ç¸lÎËÓÀB#çwЧÎ?‚æ´4R©”^X7Tˆž“ËçixˆmU›¦ÙLN ŠøY44Ö«´cRï8—^uØrZ9»~úØ:ÊŒd¨¾±Q9½Xôcå_WšR2ú{ZÞm[2e¥x=å\¿ Žù¹-\!{´l%rSYElÏ©Æe—½×±·îòÂÿßtÓ_©³³#±<Ûg&ƒƒCôè£É8aîºëîÀö)sꩧȈ<Z˜Ã¶÷î¿ÿ¯LSS“g_ëÿ[`ûÍo~#½ÿýï”ãúÆ‚±°ÑMFk£³#ióæ-R€tÊ)'ËEïÿÌg>HïÀ)ÖX�TNZÞ‰°ÑØé��P<‹Ïk³)ê¾p™#Ü8¢OÞˆÄãrñßæ·®WÂ Ãæm!dy" ´zeaYáÉ{AñOäj"¾!Šßܰb +\·  ÆHxÂ!+æ¦E¤Î¨ÈK ¦£Qð©ê3v;vèêa‹Žm´å{Uíïãdd"íËZyVK­í: ‹·zèa:þøã"Çî¸ã®À¶™ú‹íÁðuu°±ö���0ñ Õ�cÈŽ-écoyIDôÃbŸ}÷=""úi¨ô¯oÎÑϾ’1D?S‡£²é§WŽÐeoÌÉe&|¯ûíw¤óÚØ¿uÓzúØ;_M;¶nŽVhŠu‚hºÂ³ƒ:ÐÛ6Å3ì$»à‚TTÏ~6ùãÿé€þð‡?–) ’xæ™gé=ï¹Ì¹ö‹éœs. ·¾õrp?|žécRŽ3Asá…Ag ;#®ºê[‘rßýî÷e¾éU«§ßþö÷tÍ5?UnïeÝu´´»tÇ—;¥_º¡‡>ÿ—ÚÖW r)·~���ÇhÅÞ<“—ž}¦Þ}¦ÝK¤=KeÉJùºwéJ¹ìY¼¿³àì?€z–òâìwÖùXÏ2ÞÞŸz—¯ ^g_Ÿ³ ,ÙŸcë,¡u4$TêªLf˜úzwS›c*ÖôKñNùU 7±”®zÙ 4§µºðç|/M-ñçd¨`Wg£ ÓÚu[hýÆí´nÃ6Ú¸yåòåÿ¦†9|A7}ôŒChi{“›ú+G…§7+x‘tÊ/! dË}ÂMéeÉ}z‚¸znš/ùG¸ÓÀu™é`²XãÃþ ·Íާ]»v'–g̼ysû¾ñÿ‰ÌVfQ ;lLâÒ^±³á/8ßÛæt$l›nÙâÏæ>ûì3cmHÓ©Ã,Z´(RæÁ¢íÛwÐXP{=ø\Ù>çgaÂ×øÃþ”XÏ&ÿЇ>B/ù«éôÓϑю{lU  Gì<í´`Š5~Êu8N”ÎÀN�€xâlWþMàýÿ̤¨à¼æ³Êå(;œ—ëÒ.r#üøÙº„'H7ÓXQLÊ+1Ï%W dKû+ŸqçzÙÁåœk2y•ŽË6Cð¸'i;KhÛ̬?f¿¡HùŸŸjŒüãÂM&Ï3ïB÷ä7%pmÛ<_—õÓy)d…Ësj1N5&£ÉT³ä¦œòÙðÂûV ©úã¢ÁLåôUi_Öb̳Ô®Kâk_»Šû~ñ‹_ʱZ“3Ï<Ý[?á„ã©»{–·ÍÑ—ø9„áÏ"§eòŸø¤,Ã;Gì7���`bÁ¯$˜¶Œ6gðhéëÙCŸ~ïëi×ö`èÍÖÖN™þ*¥¦!{,œ+è ÿ–£ÃWªÔSž<ð–Wè„#]ñµzÚ´Ý¿Nýµ|ù¡2òÏÀÀ^oÿ®í[éÿò:úʵ¿£®ÙÁp¤jö5¯ˆ²"ÿŒ&šÏd‰Ä3†Ÿ~zudÿQGI . Jàp®<�¯¡K.y›ã�8…fÏž-gZsº.v°$åçè>\‡î„ó,íù—÷Ñ»ÞõvZ±b…ì(þíowÓõ×ß8ïØc¦rY¶l){îÙtë­·{ûØiÀ¹ÁÙÄNHžé}Ï=÷Î{õ«_9ê÷¬³¹< ,碮¸îèk�`&À¿Ei7×5R½³˜Ñ~ÜÌ.³ktjSËnT[O&‘s?íœóš!;3D½Ý´Û±-—?ÿ5PŠÒuõÒ®š;ØOÛßötv„šZè3çEgì;Tñi¸½Í-”uí³#AÇG7ªfê;�6lÚ¡Ò¹ e¨¿oˆfuwUÙâYÍô“¤ëV­£‡·íuÅ; òѧ딭J§ÙC)ö¸8ö;_,gŸ|{¼}B…ÐÚwß>ÏÒ‚ m'N]Ç sÎ9gÓYg™%?Nñúå/ÕÛÇvã›ÞôVzéK/¢ŽŽ)4ùË_nœ·té:ÿüscëä4^ÿ÷¿ò¶ô£ŸŽs:°88Ҥɵ×þH^‡…çl‹òý|ýëWÑXR[ý炘Ï~öóÒžf‘ÑæÍ›éÿ¸¯¨ÎâÛ˜Î,½÷½ï–mJ;Ÿs¶õ¿ùÍ P‡ŸY¹3¾'ÒFg`§�@ñ1J}L§^¢§ m¸¢ …ŽwcÐÆ«Î87&¢Ž·&# çZ~4 HþNX–…È2Å<îõâ¢ç,Ókž±„‚…DÌ!ã¸öDZÁr£y‚&’È2k1ÏQÐSj§þƒœÌ‘Êã˜(û²cžµ v]Ï>»†.¾øÒFægâp$$¶ M±6?ã7½é Ž ømoßÕWOFiçgØÙÙI6l¤ë®û­Y³Vî¹ç±Ý¿ËÔm£ö���0q@øf4c‘Ú‹ÉŒ Óç>p mz>¨¾ïìœK‹é¼uB>õ¾µ·¥-S™ƒWúéW²ô…ïÔÓÍ÷r<±ðiË–g©·w§·ËÆuôé¼…¾ø½_9ΦÐ,_Ùá÷sq—ÿhŠ¥ûšÌ¼ð…/³]ìÐŒú¸™Ó¥xÅ+^F?ÿùÿÉð°d¸í¶;¼í¶¶Vzýë/¦ï}ï±uðì÷¿ÿ=ôÕ¯~ÃÛÇ3K>üá+(‰E‹ÊNf%|â“ò­[·yûxàA¹ÄÁáy°`´º¨X76ù¾]8}Â7��(ŽUßHiNÉ%Ór©Y¿ÓC(¡ eJ‹H:ôyÄÑhòy"Å'Kyg€Ø²ê)»}#µòÎzŠÒŽM5Ë)»»o/5vͦ/Ÿ·ï<ª õÔÕÙN#™Þ‹£ü4Ô×QKk ¥-?}D¹äs™f¢Þ©#—Ë{û‡†34k”Bš:g`û’#÷¡Î¦zºíy5CµŽø=°do—MüT:EvJp¦/*¸N&Kß R)/âvèhñ¹'²”%:R}ä#¢ûï°,ÇÃk_ûjºï¾ûéžž~]lÔ†Ÿÿüg#)4|t€°s1g„Ï;GÎPŽã‚ ΈÌÙ^䈔&ìä`Á:§¼ ji£ól÷C9XÚ¾&µˆÍ¿üË;éë_ÿfb=úпÒÛß~©LßÀ°è _¸2±<¿?—_þ~ª„‰²ÑØé�€™ÄhÆ%ùw€u([ø+Ó³Y¼š 1MÄ8 ­†@zÓŽ?ÏÓà¸õªðÎu°È8›M1™ÌL&?k)G®ë×kêwDDË£VDðlOhó̽ Ôq/•®óp ^Ô!жÇ#ÅTÉ÷°-«ôD…Bõ/'óØæDØ—µó¬µ²ëÂ,Y²XFoäB?øÁË]zé;ä8¬É%—¼Q¦Ó½÷Þû½}7Þx³\’øØÇ>Lííí4Z`¿���„?`F1¡S9ÍÀçÿõ-ôôcÁPý,^¼2RþÒ׿¥úNßd¦­…d£e Ótͯý¯î¤êgaŠž}r}á×ҧ®úÕÕ#"…Å?zWµB©ÉÜYîîN:!0s–gåžwÞ9T)öö³Ÿý}ü㟔3_Âp½_þòK†½åN2N|ûÛW{3É’8ì°C:¿ C•À3W~ô£ïÓWü§Ìa]ŒN8޾ô¥Ï×$/úIû5Ò¤½CµM¯7«%E'îW]š�@qøûˆ¿‹øU/2¤»]Û¿ãÉ;µed™tÚ[8• ¿‚‰Çª«WöGŽq?‹¦HÄ2'3Bû\ëÆÖ®ÇÞ)äIä ”²;1Ý(gFwͦºÞ½òs —yƒ½tùéûÒÁs[jjß°H§ÎYš›]÷§4#ªÆœf{ƒ?¿¦è‡im­Íï$ßóK\B õôûg6©kÊ¿“:~;,¨ÈN9ÏÓª—ß|3E*§JK¥-×Ïã>?S@NæLtò…[îÑ©&ÜgûEÝæLëb\yåäŒaž\ ݰ]yà+‹–ã¨?æ d ÏT–‘—b8õÔSèu¯{­Lm ZxVôX ji£ó}²ë}ïû@ Õ™É{Þs)~úiEDìdúæ7¿&Ó3pTÎbp îzè!T e£3°ÓÁxûöåT…?§òóê¬g„k¬YI ”¤(@‘_Ä"(Z—Q½>O«Dpô.$¿a»ÓnµnŽŠzÑ€RäÚ»$#4ZM®„öy’¤°�È8QWe… t]•J×eÇ}(Xi¬ÊŠ=aĹ!>¬¿[¦RDŸr˜û²Vcž£¥Vv]Žô_ÿõiºôÒ÷DÒÞjÞò–Kä†?__ûÚWè¿ÿûë2Zc1XPÅ¢ŽnY `¿àûö%�ã „?�„­8è_ý4=ú;û8½×¢Eûöño܇ߞ§W¿pj§ö*‡w¿Þ¦Ù³ ô•ï§É´i8úQÁqj™i¿¾çNºöªÏÓ»>ô)wOxÐÁ]Hr³L‡ô‹^taÀ©pÊ)'ÉA÷j8ãŒÓé§?ý¡³\'g{ìܹËùL¶È)ïxÇÛdçyÛ¶í%ëá>ö7¿ù=øàôqãFêï ¦¦Fé9òÈ#dȾ^µp=W_ý-ÙÎ?ýé/´zõ3´}û9{mΜÙRTÄÑÓN;•jE½ãè»ôŒúêÍ=”¯‘Í]ç Pq\7� 6pºAž½ÇæéÞANBßwx–(w¨¹ÍŽVž&O°ÀŽ á;]ü©ÐÆlkßSâ¹Bøíå1™nÊvmY““nQh£áY (5Чç Ë2só9jËgäßH“3hkéÓ5‚fÌ™ÔÕPßPGKÏul‡ž„»µ­™ÚÛ[*®‹DÃνò½756lÁ3Ý4g¿_­÷eäK=V›E@Vk'’|øI³øGe™°¼4 Jâcyï¡~˸îhꯩ §bºá†›èñÇÿY²,;M>øÁËéå/)ýþ÷”âíÛ·ÓÐаŒÒ³|ù2)Úá”På>8Bη¾õÿ"ßå,*Æ¿ÿû¿Iá ;/8u;@ئeûð oxL³ðéOÿ%µ´Ñ9eÛèìðâ™éì(âïs¶ÍYäÄϳGIúãKøÃŸœ¶ýCŠŸøÙp]³fuÉ<,œâç[­ g"ltv:k`_¾œj$E.·ÝÔTÂJ{ŸØ13cÓ+qûEh‡0”Ï"X4"3²Å¥»J Þ(U0R~yE æÊO× îŠ»€zvò1Ia^Œ;–ûüt›~3Dñ:ZG7©´{#ÓTžÄDØ—µó-µ²ë¬X±ýìg?¦ï}ïûÒÎãèŽl{±›ëåô®IðsûøÇ?*ß¶ßøïܹSŽåvt´;Ïx¹´­9½WWWÕ Øo`¦ûö%�I¹¿”V™Ç¬2^­„m½¤ŒW½¤Ý}éÐÂÇx”-•Íæî!0i wLÍE«\yÐpxxHvVÙX®ÕõŠí×ÛIggÎíûgyN‰ûï¼™>ù›u47·9†ôa2Å•¦¡^Ð]^ sOÈhªñ׿§è“ßL“9Ù›€õëÿé¼÷ýÞ>îè~â¿¿G'Ÿ£gÄÌR2öÜUN©… ꯇ;ÐIêé6ë”Ç3ÛsôÝ»úF=#…g pgtåüz�Œî$s‡9nöH¦©©Iv ¹3=•ظq“ óßÜÜ"‚õì 3º90ΘÛÕÚ—•Úáu<eι£38×*ø‘~<ÿˆˆîóÒ|Ù¾DªKÜß!9Õ8§Avž Î}dvl¤eO=D¡¶|Ê!ŽSÿ4Á|g�¥ÑŸå-õD‚F†F¨·wF29g ¼I n8¢*bֶ̈±»O¸m2…?"ðcOë:‰eùx&“uÀòd9¶ÍÎ@¿ßÂ<'æ\³œrló–]N=*ú`{[3ÍÓi”W×ùó3›éÖçwPó7Pç<Nõ•N×ÉhLê5­ÒK°sÌyV)=›œãÉ™iÊá£S°y³ÍÝ÷,eÌ¢opÿξpò"ùÚÖÖkK³/a{PØé –À¾¬Ø—c3~ig“–cò+_æö¼é)‹zì´—›ÊŸ@5ZµctéêˆðE<¦€=\‰RMS¬ÀF eŒ”ZúB°Q‹RÎp©]3T­oãjûַߊÖ_–]&‚åÂm!7r‘L'K2åí¬T®;ئzÇ.åñ˸±ÊrÆ-a7‚©ì70“€}Y3Á¾dðÛ=5hh¨?…Ô(lŸûZ-Â}µE¯á…¶‹½†×Ô´’ñÌXJEöÑÇYKTZø³sëfºê?/ ÔÛÐÐDË–ýðdðÏ~@й'óÖÌúÂ?ÿTáüˆÛôÑÿN‘û²seÙ²ƒé¹çs $•ÿ—Ÿá×?ýAÚïÀChþâeDá¹CAõqXÒR³c¦c(]P;¸ùÅWvÓ½ÏeèÉ-Yê±iÝî<äŠW4Õ[´ïœ:joJÉ\Óv3P�ü½><<\2µ ˆ‡xáŽ3ÿ>Ö*å (Žç qBY®ÇE¸íúžøGõûäqrmO¡"ýpš/õKÂ΂¼qäšÆ&êij¦NÇÙdòôSëèôÓ{¨«»Ët¨—Nmò ГO>ï‰e˜9sºhß}Žk˜enOccƒ\|‘P9^ŸL&¸þaêìj§†º`z¨°ÈùÏÓÛöªHÔà\¿ £ûØ)[d*8ç¤y_Úü“’ee ¡Ä?* ¥&¸ ¶[}q’ré5�ÀØ;ÔØ—£öåä%0¾)LaKq¥…Nº|0˜+H×…)¤ ‰jŒr–kñúµY¤"舠í'b´Ejˆ‹Õ$‰àïqp Ýþ>²{÷”¶µå|–­ÖvJuv“å8î„;vk•/&ò¢GšW“½€TJ:Ù¦da˜·ÉÖÏÊ Š¶0> ¦;°ßÀL�öåè€} @íðÌ*MáÅ?Ú<‹g WÚ°Ì;?ìWþû;¨¿·ÇÛǸŋW:• Zõƒo+Ðy§VÖ–éÄY'Úô‘w}ñ;¾ƒ†ŸÑ’%Ѻu«¼÷iÐéùŠ÷Ó•?ø­TÍFÄ?Œ;Ãh0Ç‚¢¼|Ï* ˆŽ6ÃÉÓh’ ³aOžþç¶^Ú3?;¥»5E8§“–vãç€ZÀ¿»CCC®èŒxà…;Î---îï)+‚î ?’øˆ¼c¶Ÿ-ÁsÎ(Û†'Â.¸Q”“Äâ5é:êï˜åŒŽ '==ô~ý&š¿`556S›vŒKìÜÑË0»võмy³¨£½•jíÜWÁis]*Eµ¦.mùÌI™‚qWaûîâ×Q¿ó]²z/‹¤Ü�²uÎó,¸’ª´¥ž³¥ž¯ÿ%ÜòÓSh‘–zÏøíQŠ ç´'S°'k`§ƒj}Y[`_Nn¤Â¶£e˜žå •ôÆ,`h\bE9þ…ÝéÌÂMp%0¡�:"¦½–o «öjqµyšº($þ±"÷¥l»ÂŽ-”}ì>Ê­r–çž&k`/5Õ×Q«ãX¬«OQ6—§Á¡ÊñÏH÷BJï{ Õ~<Õv¥ºç¨ˆH¡‹£Ý22¤¥¢Ej±c[8k«{ œ0sÇ‚ÁÌö˜®À¾¬-°/¨øëÀÀõööʛݢ­äy¿ýá·é™>Ø7þ¾ÔÜÜØ÷î×ÙôúóÚÌv¼úA;÷Øtͯ|W §D›7oÚ¾ýyoßÓ?L¿ûÉwé5o{¯»'^ü³'ßD­¹ õõõÑܹsånˆz@-Xæt4?÷ònºíéazh}†¶öª¼ò :ÓtìòF:ç fj¬Ãç €Z088(gÉ€ÚÃ::^kkí…@cE&+ÁˆýÇŸ!,„™“ÀV³‹ÙñÁêáFŒjœZ‚8©:z᱇Ðð}½´{÷€we¶{V­ZMr µ·µSÚ 5Ìuííémm>›§Z³š†œë È”^œN¬££•ššj7c«®¡žÌï¦;{äs›7·Ë¹WõD)œŽëMGìC_½w5õd2ÊñÄ'-w¶ã”añ§åèœ,ýBÛ¦–þßw4¹o——",?y[Å ��£v:(Ø—cìËÚRŽ-‘”v6°/\& þ!cÅ S“®ÊP»˜U·E"t‚07µyëØZ¶í[¦½r_ýkúªË;/fÜOÅÙzÔ´ºH.K™î¤á[~G© «éèC÷¡³N?†Ž}ÿy´ïâÙÔÑÚLéú)Öa›Å?»ÛuõšôÀ#OÑ=»Žžøñ׉VAg¿„Ž:™ˆ# ejJ «Óx¸©àrç~ElsuÚÛ¸ñ`sü²œ±LŒw‚© ì70€}9vÀ¾`ô@ø¦µè,ów6›£þ|Š2¢øŸ §øúõ÷¯ ìkoï¦îî…}œÚë]¯å5¯Ì»_G´vƒ ÛïóŸÇìÙ‹hh¨úûw{û~þݯÓ鼄æ/Zê>¹è @–Ò22SƒãdâЀœÔh0¸Ãyáa-r�Ô]o`@¾‚±E‡nkkÃì™öƒ€˜¢rÅ=$½/ñ»O¥S‘~”óÂv+a±soÛ,H±eʯCtÑ»OYFÞ»™vÿãÉ@Ö=¿öîÝëØS³©¾±Ñ9mIáÍà`tP*]_Yš/n_αYP£Ä6ƒ4Ð?DϯßFÚNÎPoß-_6¯fùÚù¹µ¶49uΗÏÌÌOK}]rø¾ô­ž•:¥`Çv¾kò|<#;EœÕAŠyŽ ¸dËÀJäûfœc”òR~EB‘Êû€ñv:Höåøûr’!ÍH?TOŒŒÆC‰m„±AñO@Ú#â…@Þa\Mm"¡1yÛK•¥E@Ò~²|™Q¨ro5hö9vW6C6GÁli“v6 ~†~} -kÈÒ›_÷BºèìwR{c e)“)ÎÓŽÝ;qÇŒðÌuì꺆jpÚvÌËè¬ã¢Ôû/¦Í;zéw¾“þï—ß Í?ÿµ¾üj>ó²#‘“ …øžìøv›»TØŠ�À~SØ—ãìK�ª1�ÄÀ?à¬,Ý[(­*ýÎ?F#ÃCÞ6§­Z´è€@™% ˆþó}6úwܯÿôe‚žYG´y»ÿ`-ÚŸÖ¬és:Ï*%EÆéÄ_óÕÏÐ'¾z1ß(:tÑSh 6§Óßßßþ���˜œ°X“sÁøÁ===²óŒßË1ÀòSE©�1®;Dh‡†å;K´8H:lù¿ý»OEÿ)È×Öú]ù¢£©ÅÎÐQGLÜÿ´c/ù!Ò‡‡³ôÌêµ´xÑbjjn¡††zéÔX´píÙÓ»·µ¶PkK3•snïÞ~ç#rÐeöœ®ÀaÎìØµ—ÂöÙÈHF:[ê;k#üÑx‚î2Ê.ïr•WÌ£¿<·SŠÔÒY‹Ruγe‘¿¥æ—sÔ"ž�Μt]ÊfñÛ¡„[–k¥´ÀKÌRDþ�€‰öåøûr!öùZt3ûlLD cÝ2õ@V‘ Z~+׿1OÄö”­m`¸¹é³”æÚ‰Ðpj!/>™[ÿ@Vfì¶.Ju̦î¡ôñ÷¼†^ù‚I8ŸÉáÁÚµ£†œW-Þ–b}^ <Þ˜—¢ð¡ÁaÊ÷ÙRÜîXÔdÑ{ÞøBºôMÑŸo¹—þçškiÃM¿¡ö7_F郎Tv½Í”gŠ„çƒ1a��˜²À¾`_P)`PI L&#Ó äS4BÅÝ}+ÝçÍ}óçïCé´¯©s|.ô¥ÔÞêö`±xK›óL¾ôïDõ†‘ŸÝüùËÉä·ÝH÷ßu‹\÷ßI]"#Ò4˜#ùÞéܪ•F��0~p.ltš'~öü€Ú¡"þèÈ?–tè(@nO,¢„@®óÁA-„ñ°D¸‘8•ç´úø™Ó’®Vjjl¢¹óæÒÂ…³"mxòŸÏQ__¯3@’ólœöŽ:ô}©£«Ý,i¤%‹çÑÊ•K©®‚ˆ?y§ ,úa8zêErš„L&—pnžÊ“èŒgï3ŸVt4QÁq±XJØÎ3jv¶-#*ñ«ÊE¡ß/IÇYÞ{§\¶áÀ’Ú,��0€}9±À¾¢cZÂ¥¨üRä‰k„ä×ö±¥­É¶QÁ±õ8U•\x½ _U7¼¡·h2†Œýnݺ)ä µÅoª_Žmà‚Ó®¼sͬMùLrÃyçձ߲yÙ6á´eä¶?Ñìn ë¾úºç/ÿ~úåËèõ'ïGþñ§èegEÃýƒ42”‘¢¡ööfêžÓ¡ÝNý Žý+…øÎ…sÒvTßPGuui¹o˜£9{û9u­óy¾è¬ãèÆŸžþý%GPö«¡K ƒ¸Â}.RÀd¼Ê›Ò©{½ç¤o´Ø{��`2ûrb} @e@ø@þ!á0r{íâá&Ù9ðÝ+?Ø×ÒÒA]]óûÞ÷F¢ƒWL~ÎD-‡ìoÑ{ÞxdÎ3œOÍÍí}?øúù™À_üÓk7Ê÷Ž£þ���˜¼p>ltÚ&~ø½�£CÚ›3‰µ©£…"þ«æÇ#\tÂÈÙÏ2ì úSp£ý8Ç.î¤ W.’Œºúzjïh§ƒÞ'Ò–M[vÓîÝ{d¤-hás:;ÛèЗÓQGìOK—Í§ÆÆªv†píÔÞÙQºÔ;Ç9ÂPÒ¹¦½V œ#^ø¼æeNç—ÅTyõlXüc«g®Ÿ•0VÒgHé%\¡Ú§ý:ZÔ��`b}99€}Y;ª†hû„|qÛ3,äÉgó”ÉSf(ç,YùšuØð1oáíag¿.3˜¥,ogò”ϤªÄê†ø]˜â òE//qb!òÓçšuØ!…H|#÷ÞA¯8÷dZ³êyúóïî ­ ô‘w½’K…èþcS"|¶E»g·S:ÍvtÅ3y[¥ãý,âë46ÖSkk“\ïÙÓOkWo¤­ë·Ò;/~ýþÚOÒÏßGƒ_ý‰Þ=g¼w¸ÇÀñJßN™��0¡À¾œÀ¾ | üÓŠJ#¼„˳h$›ÍÑ`Þ¢aQ<Þ]7üž¶nxÞÛf‡Â‚ûÊ쿜èu/¡É¨·™TË›^NtÀòÀ£“)¿tfÓºµô÷¿^ïmlj†í4 ç…|ù½4)ö¾ÇÎ5��Œ ÜQã\Í`rÀï:Ï5Â2Å?z]^ ?ù9\ljí:¤°¤ g ³ ¥Î)÷ŸgBÚ,âT[­-­tØa+©±!h¯rŠªÇW=MCÎ{Zå·Ò)J¥«ìþ9oáô`Ž#$eEëàYÔsC鿘Ʀjj._dÄ‘…Ö­ßF›6ítŸCí˜ÛÚHg,™+Ÿ ;Žä,wùÇòØÊÕÄŽ%­É–¢,H¶§eyç˜���L°/'°/'-´aas!gSv$OÙAð8öOFEñá¨:~t¢¨âZï°‚~ÜH”}'?’S á¬\W¶•0âWTòPÀ°ò‚�ùÂk]Ö¤é‹ÂÙÙÚ±£—þñÐúû?ž¤ë~{—sŸÃÒ~ã(ší§gï€ÂëqG¶;fµÊó[Ú›(ÍB·œâ«±±ŽÌÔ­{óYD4«»:;[ih`˜–Îí¤_|çctþ’:¸òƒdïÜ®ž·«¶±eÛËT¾võÂ���ìËÉìK�ÊÂ� X9Êéz EËq‡í7?øf`Gúijjõ¶Ù9ó‘wYT—žäª›I°¤S}ìÝ:§ÓÝât®ƒÑ“~þ½o¸N U0NüÓW¨“ï!”Ø��0ùàïftš'üžàwsô˜¢Á‡Œ”^¤M_d £¼éGŠLÜT%þyËÑËi?Çé@ò4K.œß|Ö¬nZ¶|^¤«Woé¾rùœ·ŒŒd©¯`Œ} œJ¡…öY¶€Z[›©¾¾Žº»;héâ¹Eâ'RÈ:NªL–lª=/<`Íj¨S)¿ò¶+þQ),„P³×ù}bAP0"“mDfÒmõÛl‡ 9��Œ°/''°/'QsdŽÒ“É“³=!Š-tÊ.ÛˆNcû¢¡mQáÙ£á¨5^ô-h‘©¹ TàH@ÃYçºYʱ(—Wv•¡, F¾1¢ýPPP­£å„ÏUf˜E©ùKhýæ”Íå¨uv ½õug˨Ž\dÛÖ½ôÀý«éæ[¦GYK}=¾ƒ°±¡Þ±¡ë¥¼»­½ÉÕ×§ q¼ þþ!jni¤9s;¨©¥R©”¼—þÞ!ÜÓG_¼â­ôš–Ñà×?Föž]*‚dÁ®d‡Ÿ—'"���SØ—“Ø—�”Â0í)7º‹Ìå<<";Žv}Ñò÷Þ~­_ó´±Ç¢Ù³ʼô\¢c›ü¢›É²u°Eži(æÌYˆú³aíjºÿo·¸[ñâŸ||ÙðJ�ç ��Œ=###èœMbø½á÷Œ/ÍWPì£f)[þäfË ÙÚ™a¬ë4T…u5Öѥǯ]Æ¢t]ã°h§#Ž8 Ҍݻúióæ­Ò®eQKoOíÞÙCÙL&¶ÙùBž†Gh``ȱ¡òT-iÇaÒÙÕFû._H+ö]D‹Î¦ææ¦Šê¨wîkÙòù´lÙ|) ¯5uγ{Ñþóå³µí¼û¬m×Ac©¼,hÂuBYîLtòÞc²º¥ÍR���ã ìËÉ ìËñ§-È»} ‘ [2–e' «¡H<Ò "#2/À!7ŠM8½• ·, \ò¶'Ê e)ŸQB a›‘~„gk"…"™" }ô¡ÇÓªgŸ£¡¼ÿUÔÚÒ,Ënß¼“¾õÃ?Ó¯ü!]uÝ tÅ×~FýóyRÆ·ª¯©©AnsTÊz9Ó Œ;²ØÚÖDÍ-J¸Îуöìì¥Û{hïî>Ç®¤wÑßõ ºðÐy4ôÿ>Cbd˜âÒ}U^ŽX���“Ø—“Ø—�Â�\øÇ‚;cýù:Vñ?__sU`»³s544{Û õDïycÚsü`)o¹ìÍ–ãðñŸkCCutÌ <ë_~ߌ´ä‹¼±+M¹”ìOg\���ÆŽÄ600@`rÃïQ>_½ðc¦ã§ùLéeǵÀòk¹ëÒù¡#ÏØžè­Ç,£æútäZétšZ'Ç~ûï#g,›°ˆåñU«iÐy?YàÂÑwd¤ TÔ¾åÏ­ÝJ?±–žxòyzêéu48@Éeó´uënÊfK>X�ÔÐX/gGWCƒã„©¯¯£±âè…Ý4Ûqö¨”j‘ áFY²ÈK+a{Î,탲ŒuÓ?G��Œ7°/§°/kOÑÉkÂÎxb;(@á}æ¶—L#ÿÄÔŒ�Šnã v¤À:WiÆò:5˜\»×H‹%BŠ$Odbkl Ú:Zè?þõõÔÚP/GY¤ý»þA¹ý!êêžE÷<v3]ü–WÑÝ>û¼ØNmin èŽøŸTŠ£’§(ç´o׎^êÙÍ)¿ò¾@ßmfÏöúàÛ_FûÛ»iä7×xbrµˆè¢Å?Õ¼§���Æ Ø—SØ—�$á˜6TÙ%\ž#Äär9ê+ígíS«èÙ' ìãÈ4&/;/Es»iB)Ýûp]ù¿èâ÷=IG¿ðAZxÜ=Ô~ÐßäÂëÇ\ø <Æeî{¤Ož3‘Ì›mÑEç¿–ÂÏvõãкgŸ2öXÞšn}¡N¾—aev±÷?t¼� 6 Ó<uÀ{U=Jüa¹Q} q² #õ—+‘i¤lß1B:âí:7lÇ‘‘¢×±,rñ°³¢¡¡‘:;»hÿ‹#ež{n õööR6—¥ŽŽ6Z´x¾S>h㲨eÇŽ½´woŸ·/3’¥gžÝà88r²#™,mݶK¦ ›êð;sîòÙ2§üâgm»)Öø}³ ®“Ëðc ßÑ㿇¦óGG°��0žÀf™:à½Gt„m¿ˆ˜@3"´.ÅÎÐÛˆ Â™y¸ŒBžà]ø‘yÈ‹Ðs.§³åˆ@ÙFò”ç”dÜ’,ï Œf™mUÆ2Ö=C…?~Ÿ¾ú¹ËhŸ…³©©¹Á³¯ï¼ÿ)Ù†¾Þ~úÓïn¤GzœZ)i½¹öºZ÷·³™<íÞÑ'ëmmo¦®Y­Ô=·ƒºçtPGg›às{rƒúÄû.¦º{þBùÕ«¼ jþsŒH��˜ÔÀf™:འžÿÏÞW€Éq]YŸjæÑˆF4b[L–Qf¦81Ʊ8qpƒ»ûo²›ì†7ÙÝlÀ&33³ ’%Y –,摆ê¯óª^uUOwOªgô޾ÒT¾zUÝuÞ½çÞ;p¡” C4üwcðÙ¦§%Üvù »>çä"==Ëþì3Æ·]wâ4u‡Ë;ð‡Žâág+p¬2¾s¦¾!(¦{ZñÜkÕÀ/±£Òq˵#ñÅO•bܘtœ|æz Ͻa æ­@xö-û¸¹¹ÎÞæ­ŸÀßøžc/ß#æø›îCG  ~ãžòÞŠA¹‚‚‚‚ AKK‹ŠÂBà½â=ËÎΆBÏ Ä<¬¡`eýΫ̗f•3ËXkÁLú#± 2²þPHL·-œˆœ4âù|¢ÜWæÍ›Í›÷º¶kjlÇý‡0vl)Ò32bfÐ –ªªú.ËÆr €ÒB¡ÜÜ,ã<SEôpðY,[Œ×öW¡!d8Ÿ¼:óƽñ@ó0c'E?Æß°qß¼š-ôÑ÷Õ,÷+Ý|)(((( ¿ZPürð`gÝ­C·–GæÝ´èeöH Í!y”Ò’Ç•ü×gp\ÅÖÏ žãP‚ ‡­uf UÍ£‰‰!2WòÁÚ¹ŸùÄù8{É©µµ¡Ñ°‹]=f:Ú;ð¯ßü1rs2ñíÏþ£(qæ5¸°ÇëµDÞF{‚ˆ8*Òp!øf†Ë%ùVÖLój˜ý²µÅ°·uÚ¶kÒØQøÌ-—àOü ™ÿüKžÈ8úÑ.VÂ…T†â—C Š_*(Ćþ( k$›ÕEÖ„l zÅà4üÞ+ϸ–Œt}¾ì\JG¾ñ¿º6€ÿøÅ><ðT:aôåøÅŸãî¿Åíׯ÷¿U†âB?¥£K—yðÒÛ‘k`;…?o¿ô4>ýõ…ÇãuØ"œ¦ ÍAr`–pËÊÊrÕìŽÛA§    Ðoà Œõ†xÏÒÓÓ…°D¡Фÿ@³æâ¹ìˆg±Îé�Ð#%Ò½n[01þ©¬¬?™™[:#F䡪ªÑµÍö÷bÞü9ÈÍ5‘׳Áñ¸O, í%ïÂà:,XZ¡¹™Æ7Ý¸Ž ddô0Ýk8’–M,Ƴ{ª ÇOP~XòK {áѼÂ!äõyÄ2òMf(>%éÙ²D@âÆ)©   0XPürhBñËÁ]Ê –ÖÜAQ4[œc s¤MƒŸ'ih.é{ßÌ@;®Øô.^÷*fÙ‰œöV4eæ`kÙl¼¼ø2¼sêYhó¥Aª€4·²[Òìl‹æFr«`f‰³fNF 3„¦†–È>/¾ùcçâ'¿zÔ°‰QX˜‹ÿúþ0þ©HËÈ€Çç%óE¤ŸÂè0ì…­èlüžx4Ö˜›i÷I[k'š›Z´ì¬B„düMÏð#;'CdúÌõçã‰çÞAýÆUð.<&Ç–ý ; Ü;S­‚‚‚‚ @ñË¡ Å/ºB}@§B‡·„g†Ù°r9êª+íÏtäæºkz]ùàgûyäÙ |ëG{PW@€Â¡¿<\ާ^®Â/ÿcn¼z$ìC§ð‡}ì5V^µUؼf%œ±,*,)òÂ3“S‡þ((((( >¢K.* ðÞåååA¡'‚³\—™ÆZãÌ#,a[d΋Ò_a±áù“KP˜™8 %…?>¿_”ûšyÊDTUmu­?t¸MM(Q ¿?­‹È'-͋ѣ‹Œí*ÜWa8<ÒÓWø ,¿UU]g<‹âsSs Æ•ŽDš¿29.]ˆç÷T ¾È~×=tÈPä"Ÿ°qO<^ë¯G‹”ù³š}/Å=Öº÷ä(‘¹‚‚‚Bÿ@ñË¡ Å/¢œ,ÁŒ™mF  »ô5fY-ÍNa¨I9µµ#9S<¤i’òÊKœ1sÊÑÝøÏ{ÿóöo$F4T¡ìø~\½úìš0¸ìsxyþEèðù-.e@‹’Ùb%ƒÖ½þ4–ägãÊs梣3ŒŒ¢Q¶5#Ø\op¹®¹h1Λ†Væ9gÖTæ[ƒ¬Æi‘ #ßËÈÎS3UW 1¸<9ù³`9yYƺ0:;tí~ 'GÌÉðãú+–â÷o= ϼ3yp·J ÿ=*ã‚‚‚BªBñË¡ Å/ÜPÂ…ad3ûÄÛ¾³³ÓTõ†3ÌÔ°qðÎKOº>çç—çˆÄ„±Àìéƒ'ü u|í{;qÏãÇb®gš»eç.Ãé§ŸŽ¹s碴´EE¦P©®®GŽÁö·cåÊ•x÷Ýw»ÔŬ­àŽonÇ»kêñËïO‡ß78Ίy§h˜XªáàQ™>׃ÜÜbÔ×GSË_z Î8Žð$ fÛt¯qO¢„›N§K2å¤QPPPèønå¤04!ï_ZZº‡n•ò2Ý%ÎŒ?0)vö˜¥¤„N$lF�[bl}¾vÆè¤Î˨¦¬l–á:kVï¥ $Zš;pèÐŒWŠÌŒX9-5ŒQ€Ö¶TW›%¿È¹¦M-E:EG'Ø7 „lÑANÀàvý%üÉNóaFQvÔµÛÙ~tÃ!C!à÷Þ –™p–€ˆ”kФI–þRPPPPp(~9´¡øåÀBèKdÆ+“$ä¼½EDýâÎôãÜØ‚u×*sk©Ÿ‰^i,<õØnÜóë/`dC…{7Ø›1Ðôƒ;ð‹?þ>7a&þzéxeþEh38^xÛjîD8Ø_q)|³—cË„8^ ´£cÛ\óûÐÑÒ†Žvƒ»z¼ðgç"­¨5ÇŽÃãócáây"³#4©N ƒUÄ*ª°aÓ8tíAœ:}<.»p©(ÿ•ž™‰â±cQWQ@{‡}Y,õåwhá³³3Œc…ÑÖÒŽÖ–´µu"#Ó‚,|üò³ñ—G‚ð‘ðmv%ƒÔÍÌä'š[+((((Ćâ—CŠ_*(¸¡„? '=(ø¡#¡5` `=ñ¿0où`…k…?N\yϬA=hm á–/oÃkïÖtY7qÒD|öÎ;qíÇ®Eff–…â±êb›í+))1œ=# GÑ<ÜtóMhllÄÃ=Œûî»îÈï¿>RŽ#Ç:ðÐog#+³œ-Ý%ÓþøPÈþ\PPâþlZõ®C”£w-H®ùŒ{ʾ.^üLù§    0xP)r‡>xÕÀ9yÈhåHв%øqÌKç‹-’ä…g„èGG¡á@XVÖ}¶Eiœ‘ž¢âb”Mqm³cû^,X8¡ì3“MÔ1ÒÒü˜4q F*BÈðŠøÓ|ÆñÒz\îa 1~ñcf´d—ù»IßLÑ'ö ’n/Uˆíµåæ>™í',² yº8iLAPÄefÎIÑ)Rbq…„â—CŠ_,˜™&ÐÜYz\[8Êi¹¶pˆÄ£U+Qè¢wÖtdvvàîÿw[ô .“ñéÔC;ð‹¿ü?|©t*~«g`]v&O‡´ìtTW¬Ãæ7EÛ„™ÈúØgQ:²�“ΙÅgžf83 ÎeØùBáÚÛ:ðΛ+qÆ9 P6nDD˜m? áñç–ãá'ßBc];ŠGöÁ�ޝF]C¾ôùã¿|“É© ÞY8j” [¢fñ¼ŽŽ�j›c…‘›—!²ÿdçf ‘|c}«(ÖÑ@Aq.–ÎŸŠ•߃o̤.Á‰¢¿ÃJù£   ŠPürèCñK…¿&‘‚ !ÙÈ[–‚"ZB‰ ‡ö|„úš*û3Ë|eeåÚŸiç¿â¼ÁùJ1ÓÏ'¿ÒUôCqË?ýó?á¹çžÃ7Ýd´/>cðjO†³ÄçõEý5×äçãó_ø<Þ|ó |å+_×ëø¼úN nøÂVQl0pÅù^—¿&33Oô¹DmuØc}Ò\$ZCæýHV±­¢µú@@L Cê>öšfgò×]ËdM+· ›åt+Ãn-£¸äª£áKRHNG…ß0n0­ñÂ…§vѺ:T‰ÖÖëØ±áõyi#[ˆ~R^¯£J ‘›“‰¬Ì Œ],„JñÀl–d €‰“¡u³Gæ#Ã*ë¶ôæâž0%“%Ö÷a—‰†7×+±‚‚‚Â`@ñ’áuaØbrX“™H$αÿ±V™Z[£®ëö$šŸ­ýtë¸r1ɺ—0ýÀÖž·×ØÊ‘ÝøÙÑmøJÓ1ŒÌÎC°%Œ›/Z†Ÿ~óv\2FCãÝ߯ñ k±nÅøÂ´ÕT¢£® Gâ™ÞÃ%×]†²©eˆ¤*2Û¶rí6|çA¨Ã‹’â4Öµ¢¦ª ~oFÆ_þöÞxwƒMîhs,(ag4bFŸ+?ģϭÀúM{pp5ª+ıÉSó ³‘ž‘.²AÖÖ4cÉì©Ðw®³x¾)嫇#}©    RP¼dx@ÝG…”ðGá¤^RÒH<�‹Îö“§ÒdÚ$ cGy¬e;}ýßw !ŽãÇÇ#<ŒÏ|úÓH7œ6„š“×pèøÄd‹|ñ\'¶‘Õøê×þAdþai0'ÞZY‹üÁîA¹Æq£=˜<>Ò¿tleeåu¹'î%wTSS‡¹–/}%êQPPP<HQ­ÂЇº—ÝCrŒˆÀ'"1müÿX�zc\|E“1÷3ç—@O@þÆr_'ŽÃ¨Q…®u­hljÑCiBðSZ:ÙY ·7…BAt ¬¦f ‡LX8eBfÅ5˜¥Ål§ÌûÿhŽùTȤ   0ü¡8Éðº—!Ê%ø9ok]Ø£8D>a“ƒFO"#¥=ˆˆHŠ~¦€] …qé/ ¹œH ¬}ÆÿãŽÅWßÀæí»q´¼ûöF¡a£¼õÒ¥hyáAã¹éDKc#ÂÁ t¯mÕ h¤ÇhmŠ”ÍµŽšnpäaë=r¤‡GsKìŒáòs ðÝýÁàÊ­vK(¨ÏÊË×÷ükkð›‡_Gsf.~ò§'°vû^TV6"™UzëÎÈLCZ¦z(„iãÇ�övƒˆZýÿ!DúLAAAA!¥ 8É𺗠&”ðGᤇ…tèþ„ÛmYKøÁây^«†ôÀN<W¿?Zî:÷Ì™3qÿ÷cê´©vY/Fªx=^[Ðý8ÿšËå6^c?¯µïÂ… ðÐÃbúôé®sýåá£xü…ÊA¹ÖÅs½ û|ËÚ÷Å_÷Ð9âL À+î­Rû*((( .ÚiìTP÷2yDÄ>š+CŒŠ@”…23�™ëu÷d8üÆèlÑØÂ¤Ï)Ë}¥¥¥#?¿�‹—œâ*7EñÊGÛ÷‰RýîlèlCh߇®| ÁWA๿!øüß|ã1„×¼ýÐnèÁÁã`Ü™w’-§0½0ÛÎòcÞ§°päD>;ï«1O!4k^SÜ ƒ�ÅI†Ô½8˜™aÆâ3–€Gc"3{ì >Ñ“nÿíšE޶Yí˜~tVÙ—›¤Od[´þM1–|²õÆ߇ßÝó ž{èiLÙ´çd6ʲ˜³ðTãø~¤BÎȱ8\݆¹§N5à±?ºãàÓÊJQT‹ºÆz!„·×’ß1Ãqæ†Ú6<ôÄ›6—ãßì¼|ÃyÄß}—\qþçîcÒ”IxæµU‚S··,Ꭶư,K¾Ö7·ÁèDpÅóпΌIv¿)((((¤'>P÷RAÁ„ 'œN΋r�ÆÀ žô„ûmß°Úõ9;»ÀõyñS5 $jëø§ît-7®¿ýÝÿ¡°°�c°«Y¯�Ù¢¯%’YuŒ©qýŒÌ1þÇ’Ñ>F=ÛŽ(?ýù¸õ“ŸÂÑ£Gís~ý?>Âg£¸ÐÄ’y^<úB$Z;ºÏ·­[eÏKßš Št v ¯K:œó ý‹Tް Aöý÷WaÅŠ÷±sç.TUUï‰ rssD–»¹sgã’K.ïV…xOYNT¡X|äY¦øGÖTЬl>fVASL磤¹™nf«™7:Y~/z.MQwvN6¦Ï˜Œuk·ãøñz{Ýöí{qæÙÈÊζJTõé­Ínzá½ÛºdÙÇo¨^aüݳ• ƒ6}>´S—þ-#¦y=LóùœäuN+Ê17Ç Î,efOЦ4>^ëzìûkr˰p4™ËúØ§Š›*((($„â—Ê_dÆA+Ü„R2iÝa?ÓM ìä“&4ç>ÖžzÔÑì̇†­®½YÆÄÝš‰–BgŸæØ%”–ŽÐ”2FL„kjáß¿¾€)¤cLóïÓ7ЀŽP#˜ëqÌÁ L¹o¦—Mưzù ÌŸ6#ÇŒFMùqŒ?míÈL3®Mr2«¡Ù™¸ðìYxðéwáïð£Íߎ¬Ì,×uçåäãÁÇÞÀgo»BF †l騬iÄýÛ¶|„>܃ŒtŸa? »ª)7¹|{kÒÒý˜>}~ü/ŸÁïîy‡Ží‡ÿ¦oA÷x#½¨„? )Å/‡¿TPPÂ…a€d¢—ãm×%Ñ!ÅñíuÕhjˆ8P8LOϲ?sl¸h¶ÿŸ=¨© 8ÎëÅøCc¼\(œš1øôð¯C�$E@fVs¹ê{ ²D@"zÇÃ2Æ>acÒ(þÑPTT„_þê—øÔ­Ÿ²Ë¢ÕÕð£_îů~8‰%s½¢o¥'##[ô}Ø*WÑX_‹†Úä�\Æ @fþi76õûyŒè‹h$ãhQÎ…ä!ß©†uëÖã£GË»¬«««Ó¶mâá‡Ã…ž/}éóÈÏÏÇ@ï¥K/½Êµì?ÿóGX²d1R ¼§jàœ 4;“fªyL'Š‘˜Xu¤XRÊŒú5K$˜;†qÆø"ô2ëOfF¦Á ‹°tél<÷ÜJ›ÿ67·¡U”6è;‚;7!ðÁ›ÆÜ}-s‡ ôíë ïùž3.1¼7“1P f6˳ñ³'¹ä¶£²3ŸáGSÈŒÖfиfGGJzi€ÄÑÍe‰¶c ÅúŠ_&Å/Orˆ’^ff©‰Ê‡h yt×Næ;Oáû³µÜgp/yµ¼Ñ˜ø”{ûèiiè¼ësð~õ«H›<Ùà[^Q+´ó#tþâ¿á}ôqÃ€× ÆÆãíÛ½è´H'Õ2l€§îþ÷g8ðÄ“h¿ùЦÍÄiËNî{p̘&̘ˆ´ÌL³<™uV_š·\» Ͼ¶Vd÷iiiEkk›ÉuØ6Óšcy[ò²3ík*Y‚ìŒt44µaå;ˆeÙÆñ³³Ó Û¤_ìßÞމƆvÑ#uƱëVR€_}ïóøâ¿Þš?€6ëôH)Ý‚‚‚BJAñËä ø¥‚ÂЂ*õ¥pRC Z»yÇ9°×õ9==Óõyb©99[öêhEîÂý²¿óÎÏ`ÎÜ9¦è‡´È¼yD #ûÏë3K})òx­u–Xȵ¿u¼iÓ¦â‹_ü‚ëÜ{äëÐkfŸŽãþ™JKËŒso"¥"ÐÐÔ]÷ZAAAAa`‘Šåyä1|ç;ß‹9hŽõo¼ñ¾ò•¯ãÈ‘£PHÍ{šŠ°%Èš,ó¥YY€î™xQº�t{g!�Z\ê.ó „’ª @¾æ5ø]n^¦MŸŒÒqÅöº€qŒÜÜLô :kÞ@`Õ«É‹~œèlCøÝç ´ QÞÖï‡ßï7Y”峬2^Ìú#æÍ¬>a]·Ë¸™â®H¬|¤˜‚‚‚‚Â@BñËáÅ/ûš=§w-)wŠdÿ¨¾á=›Þ·zS}¤ìWÔ~& 2÷ GµƒL‘â¹<˜‘οÿ¿¹iÓgÀÃŒ \ôœmÖ¤ÿí„W½Ž›o2Ò…à'ǘ2ì«1¯-Ø;eËÌûÑÂó­ÿ‡†—_Á{ï®GZ^¾ámAX–¶•m4v:uî)øò§¯Bg°Sð·°qt 657£¾¡YY^üᅩܬ û\Ü· 0×^~†Ù—0uÍŧaüøbÙÃèìˆpâu[vãï½_Þó2Œ¶\vñR„v¬±d_)((((¤¿~PüRAA Nb˜e¾ÌÌ1-¡„Û=°Çõ9--Ëõyâ8³$À@N¿¿÷0:‘áôÈ‘%¸ýŽÛ]í¦®B wæ „èG ~4k{—�Ç:ÿÍ·Ü‚qãÆÙ§ uüéÃ~ݓƹ¦¢EWî{ÿÈátK§9§ðG ²†6øÞ±ã#lÙ²U‰ùR|¯†Ãa¤^xá%üå/ùÈÌÌĨQ#Å{1ÇWà_ÿõ{hmmÅÉÞÓP(…ÄÐ% E’Oé–°ößH† Ë¥ ÊNI45µàý•›q`rr»Lñ¬?^¸fi­ôô4dgg£/lXàŽuèxћޅ¾w&…Õz´Ï¨Ì4Óq»îSX7Ë2˜>$ÍvüØ÷LÜë®ñô à uuuX¿~ƒñ^8…Á‡â—Ê_ö?¬’&w‰79Ä>ÐÛÖW!øà"ü믠è¹ÿAîãÿ‰À/¾€à³¿ƒÞÒèØ×1 QuÞ(îE·[ƒ1u©ñŸþ 7ß,Ä>²‡Ò5“+§Í›ìÞ7Ý�Ýà¯Ñß.ÍÚÙÓÚŽ’wV`ѯïÆ[×bÿËoâørìÜø*T µ¥Uˆç™‘‡Y//9kN™6i~ Ù™>LW€k/; ?ÿîxæþàªËÏ6Ûew D[¿|Çøú]Wãò áûߺ _øÔ%¯ö[ühk @òyŸß ¿ÏŽ«7åÇdÉ))5¿‚‚‚‚ @ñËá Å/T©/…aŠd‘R_š»�u¢…?Ñâ“hqJ#l yæ˜kÙ7Ýd½èB™(h]ÈrvÉ ç¶ |~¿·Þz+~þóŸÛËzú¾ÿÓ GÓÀ9;&Žë&ãÏÁ½Q{XôÖÿA³mÉŠ£,æM›ñöÛïÆ]/t%%%8å”™˜4ibÜmýëÿmž3g¶Hí¨0ðؾ}^{í 1ë­7‹û¤08X½z Ö¬Y+æùpùå—B!µj‘|N~÷»?vY~ÑEà&à\V6I|æÀN]°÷îÝgoW^~ ÷Þû€H›{²ƒ÷–Â7œœ“ü!l }l>¡™YcD¹/–‘Ò`‹H"Ç€ðÒ䎄’¦$6ÉþÎÍËB¦%àIÉïüiiÈÉÍÅØÒ1¸äÒ%xõåP\”×§{:° ÁÍï£ß°þ- `P4 ©‚‘Y~KÌcBF‰‹(m[èÃϦPÞûÀz 0uìž}öyìß@Ìá¶Ûn…BòèèèÀÃ?ŠÎ΀øŽ‘ûc(âÉ'ŸÆáÃGPXX€;î¸ CŠ__(~Ù¿°éHØñÙ^Q¦kš#›!×7T#ô·òi#ðøò³3pèpþùg÷ ¤i¶þí»ðÝþïÐr‹Ln )w±N§»Î`ƒV¸My˜ÿ_‰ØÙÒmvØomüóÀ÷àÃlÙŒðÏïÓÏÀc¼ƒ#–¾ÒŒçgé‡[Þ³uK–àøùç¡Ü°Ÿi>¯1ùÌÆ¶ÀʺFT×¶àw?ú2&N.5¸r¦Á™ýÈÎËO<‘f‘dœº±k·^»Ì –„EøÌm;;ƒ“Å 4œŒ*)Bmc3^~g<ÿ§ˆÂ –È CünÞwßhjj÷îæ›o0ÎÉq÷â™gžó#F㓟¼9é¼…7ß\Ž­[{|°xñBœ}öYè¬YóV­Z#æïºëÎ>h(¸A{-í¶iÆwüË_þ"âAñËá Å/Nv(áÂI ©þ 艭õå÷¹>G‹O&÷ ¨Åíæ=Þnæ àê«e]M½ë¤;&Ȉd3mo8rDè„íˆe×>ºó¸—Nößüæ7hkkg.7Ú´ñÃ&,ž7p5D'v“ñ'úÞ˜ˆ˜:Ãæ}JJߎŽN1ÕÖÖaçÎ]˜8q.»ì¡ìVP8™ÑÐÐhÏ×××C!õj¿µ4VF×ìþüç?‹o¼ÞµŒ†HÖ¦ž={¾õ­ÿ‡Ý»#‚ß矟þôm1ƒ9à^¹r•aH| }´Óx.„P–YùæÏŸ‡«®ºÂœK0kÕW¿úMÄÓùJ¤Z½l1Ó=l1àV²”—¥¬¦FŠ€d9°°HìVVér–dee`Á™vö™d ³þbúŒ©(..D~A±<RεG‡PkßHúüIÁà¢Ø°Ü°`Ý„TÁÈœL+*;,÷ٌ߯fWdã½ƒáø±o‡¸ÅšCnžz`ÄßÁƒ‡ìÏ55µ¨¬¬4~£FB!9pÜCÑÁßüÆÆ¦!+üQPªPüRñK…ä`g’tÒ—BY·Ihï ?ÿøê«0Æ"T©Æqc¾û|Æ3ü_»¿}ðe,ò7ðÝöoƃí7ù¤$Dœ·øQ´U´ÙXP=k2,eé¦u¹•QË4™ðøióç=ŒÎÍ›øùÏá}úYx¢¾wòŠ´Ž�ŠV¼‚÷W£eÑBTÝxö塺®›·íÁ+Ö =3 i,k4¼häKQ,é6£ÓíŒ{Tbú¤ø}Öy,A8ÑÜÔnóA¯GCK{;ü™lÛ³ûÊ+ -» žéKl–.Ó ð7çüóÏÃsϽ`—’¡€§»@I]._þ¶˜ç¶]tá ý((((Ă◊_*( W(áÂI ™Î/¬{&èoj¨s}öûÝ‘×ãFSA:pŸwVÕº>ŸqæhÝŽ£ž7#Ï=tbhLs§Ycþ°]Î@”4à_gº^è]5@2 GÒgœ·ÞzË>õÛï×bñ¼ Æu}¾t×çÆzÞ›X±?æ²°5(MµÔ Îïâ|i7 ýìÞ½Ûp6´ ‡ £µIôÔ€YádÆg,EKK‹PîŸwÞ¹PH=¤ÒàŠÏÊ;ï¼çZÆH½èA³á ŸÃÏ~ö߮匢á Ú –~ùñ†Í›·¸–ÓØÉßmN4”^{íÕøâŽw(A œ“@$Xˆ{Õ«iº%ÑZjI°Â–3Æ\<¹ },ÛjfýÉboŠ€2ŒçÚçõõ*£a`ÇèÍIm+HI¦æ8pt0v2z ž.2øm0$„M}áH£³Óž£Ó*l ¸4ɧâÔ¯ÍEügº1‹‡¦( 'ÎÈH¿ouuõ"V ’GAAÎ:ë a?~\ÂLœ Å/¿TH²D©ƒ–º•>ÑÛ—ïÿf\sÙY8\^‹S&MËÉ­² Y^Q‡Ï^¶ÿô/¨Úú><sÏèŸÛš W†^w±¸(™_ 2æXŠ™¨¼:\RjÉ%…�h¡)�Ú´ÿõsøžyÞŽNÇžx Γ»v2×­Çn_Þ(‡‘gŸ†ïÞu#~òçÇÑ¡º¢%£‹‘™i¶I‹´ÅÎäiðæñÓýYHË/:Ú d‰fz#c·–Æv»o™Y¤½=Œ-;ö qü\x¾ô¯ÐF”Fú]j¯RÓ,“'—aêÔ)سg/ªªª±aÃF,Z´0á>Ìf#¶æÎÑ£S#Ãç©§ž‚1cFÇ\÷î»ï÷¯YY™q³ú0s‘‚‚Âð‚â—Š_*( W(áÂI…è`¶¤›Ôom-Í®Ï{ûÜ:Nø³~‹Ûá²xñ"ñ·K}m™Å'ìAØc {4Öµ¥&Ì^ØŠ4Î cÀ ‡lPX €Â‘l@Ðu—hÁÂ.áφ­ zí¹9vê´µ6Û×1Å?š¹´ðg0Jz%ƒñãÇwQSKÐÉðâ‹/ãСâV+ÉÙ‚ó¡ p²"??ŸøÄuPH]¤ÒàŠ†Éè2É<?Œtyä‘nÓÔÔ„ø‡o ¢¢2áv|×0Íyss3¾ýíÆP†8'†ä˜RÛC¦eŠC4Kü»Þ‚nq—‹ÃØl^ú]ÐÖÖað§täæå"ÍŸŸáŒðô2ÍqpÏ–n·qŠÎÍ<"»P7;îßÑ'áË£‰ôܺÉoÓëŒÇIE6Qj̓X%ý¿Ìö{ÐB-BÆä5;^ͼ‡žH»nžÚä‘Á¼X§§–�ˆ"bâĉÈÍÍÁºu„€åœsÎV©¯{�F/¦R£‚ÂÉÅ/ÝPüR!!Á{òcDl#­>ZƒÅ³&cÚøÑXµá#ÛVæ18Sqa.BA4Ö6ãÆËÎÆÿ½ñ"´YgB?~�úê—àÙ³#r=˜5¦(¦¸¨Õ1¯EÍËL™î¢_z×­Å"Òæ/�|­[ÐñóŸÃÏ`ѧ{ú¶\hÁÅÇw£~«G¦Ã§ÍÃóo}€O^z&vmÙƒés§!3+3Âá&ÅpHG§?••µh.ÉD^I1¼¹ùhª8ŽÆ†d¤§ ñ¹8Ÿ±Ÿ?# aÃÅÂÇY[p´¢±V¥¹]CŠÑĤpþùç6ÉC"K¯OŸ>Íà”¹1·­©©ÁúõÅ|NN¶aÓ<©Š~â V­Z-„?éééB ¤  pr@ñK7¿TP>PÂ…“ö Kë›ð'‹Ú¨!Ù³ß}þiÓ¦‰¿®¬>B¨CñE?¦à‡Ùn4ãEg'õÙ¬’0÷bc›pÈ™ý'l‹"óæ4cÆ W[vïkÐkÏŠÊLí¤°ïM<ñÇ'–¥š#&pÐyùå—â¯ý»AþBøðÃíJø£  ÒH¥ßÚýû¸>§¥¥‰AqàW¿ºÛ5hftà-·Ü„9sf‹Ô¼LŸ+Ó¢L~æ™g`Ù²³E¶ˆ_ýêÄ@ôÿñ_\Çýä'oÂi§-ó©–Ub(¾G‘’.§èÇÊ�$"‹¥ûÅéÜГַ¡Y]}vì8 îUVf:fΜˆì3ÓOoDÌô£×V%ÞFˆn çˆa¤j5¼¦tŸYÁ“XüSq€!fLçˆÞ€%¹àô§èñ³ ±tÐx}ñä÷z ‡Â–°Ç¸W>+S¦Ç3hV·±Çë±Ë@Øn´•KÐùÂèlbʔɆÆþбÁßGFp+((( (~©ø¥BòÐÃf0 $I.+™Ö5׎íÇÜ%eÈ4žå†¦V›Ïp˼œL ~Gn7÷”)Èzr9:žý?øv¯ÅÍ—Ÿ¾õM”äg#d<·žÏ¯°)ÙPHGŒ<@zÜ<‰Z¤˜saä9ñhðÏ›ÿ"°Yf�zV€b…2ûyñŽ(üÅ~ÜuÅåøôæ˜=}<æM™ˆ›÷`Ti ŠGš%q½Ùy··@ËÌEåÞØ¿ç0²‹ŠÄÔÑÔ�/Åô#¬?ŒúÚf—„ª©­ Ímh qÌw™^=Ò÷–Z~HÙæ™ç­·ÞF ™"Þ|s¹tÉ2aü}TPPPHU(~©ø¥‚Âp…þ( {$ú¡—ë´nJˆ¬2D ²36ãϱJwËèÑf”‚,×åñXY~8¯QÀ£‰r^f¦+:™ãKOØ*}e9œÄþº(bf krf�¢ã#¬[óÆö£GŠÑ¶»v³o#ˆî{ ìqt,ñæJp©æ¨q‚i'L˜€}ûö£ººF­Þ8ïH á}üøq47·Ã@cǎżysPšëQÛ³¼qÚi‹áK„•+ßÇÚµëÅ<é,…ÐðºX7ÖL!\%Jœ¥§§!//'N0Ú8×]ÞÎ'Ÿ|‡ç乄Rž™’›ÄqXÒ‚„9"Z__7‰c666ŠþfÿPtEÇY¡Ã0N1׮ݢÍ$ÛŒœâ¹H¾õ!Ó'¯ZµFÌã_Emm->ø`ÑæÃhiiQJ—\r‘kÛ¶ÅùxŒ$`™3g`áÂb›»ïþøËlSñ"Û{ú,E·™ßµ¯ýÄõoÙ²U”!a?syaa!N9e&æÎó;Y^~ =ö„˜§(nÆŒéö:öÁ}÷=ˆd‘ŸŸ‡Ï|掘ëZ[[±iÓfq­ì+þN2bmܸqƽ™eÿ+tE*•Uäo¦EE…¢~u4øýã÷"øÂß"âÈ‘£®¼<æ/~ñ_˜6mª½Œß©Q£FâOú«½ì‘Ggþ®3ín¬~÷£Sò¦ Rµdf*A×5+È:lñ‘pTjM¬‹$�2yšÌ°˜åï[9Ï΀ùLñ÷³µ­ƒgB†ñ|²T•&9a ¡Ê£ÝnCAM{ €Ux§<€€qÝ ‹tœVZˆÜŒ´ÄâŠ~«/gï~SÇå»:—ã*ŸÏk „âl“f |„àÝëÈàd ·ìÈxMs”û [â kû20Él?Ì–IþÃß*ùZ[Ûĺ¾ œïäüc‚·glݺ 55µÆù|Æy'áœsβ934‘cI.Âû&9Z<Žåä<wÝug\>HÞ÷ÔSψù+¯¼Üõ›,Áß]¶q÷î=‚7˜ÑÝi‚»S?ÅzŽ$×,,,Àw܆x8vì¸à6äHŒ¬”܆ýŸˆËv‡hÞÇ~\¿~ƒàP<S±“Ó1 ŸïôL5Ï~bÊwö£üùì°ìû•çˆ<ôÐ#¨¬¬Ë™r>‘³ïGÞÒÒ±¸á†OtÙ†Œm`_r\ÀçiĈâ¹åùc½Ï‰Þpd…Ô‡â—&¿TH2ÓL$¯s¥&kYYwŒ¿Í_‹œÌ4dܼÑÚXdGÝx¶¦MÚªíøÉ>‹Bc|\SQÊò:øÛZ1ËÁ¤.’+Ñük—ñ²i®=œˆl¤»74g)�2ì3þBç¶­~û_öÊkˆ~#BÆ{dÌSÏâ¿Î]†züuàæ«°`ê8ÝsÇ÷—£töLކ?'U7¢`Üx¼¶r3N›5Þô©ðù½h««Á±}Ç‘=¢Äàòac<^ƒ4ãuØÐÞ‰zÃö¤4¾Ï9±ù¶M*‡hŸ¡ ˆÜïgÚí¢y$ßÙ\Op]<^Çï<ËÐ0°‘ïh¾›É1È—øŽæo^<›grÂÞ"YNøþû«ÿ È‹øüݦ “}ÌwGox]uuµaÃÚb¼KŽܰÙàÿš8†ä ñ²4%‹T²Ùò}ÉŒø•••Â&Éýi«£íš\QA!Y(~iBñK…á%üQP º}´µ¶¸>G‹O23#CÚ@K‹ûåê$ìRücfùÑÒŒ¿!º’¢2ýXÙ~œŽ™-H—‚‘ù'’ý'leÿ‘¢qî<÷`¡¹98 ×ž•å>váC”ñËDŒ¦¨+<¤•¾,Í AC<VÉ‚†õ—^zEî a«­­Üçž{ŽKIÎÁVvv–„sp×ð‡T"Ïx>z*úá�õ…^2@ ®åHr¢*N”k®¹cÇŽIx,Ÿ{îy‘!I‚®ŠiéÒ%8ãŒÓãîOc#˜œ‘Ç"QætÆKû<`&hyá…EÛœ¨««I<%—^zq\džóXO?ýŒˆ¾ŠTž~úYa�p‚Ž9*ûÙ7ñ¢¶$zû,ÅÓ†ÒYÈA¾,iljƄ뮻¶Ki¿Á�ï3ï N°N}CÃvqóçÏ5®sYÊ L´··»>Çûîòûöï|‰pÕUW"ñæ›o¹Ö}ö™1‰|†ï¿ÿ!ãw¬Í>¿‹EEEP¦Ð,7‡åTÑÃfÆ)1³ÂhvüµÉMd™(füñ£/((ÈCɈÔÔ6blédg¥;¢‘µë­M‰×[%¶Œwõ“‡t´éYbù+•a”dµ`æH/2|ÝüŽ·µ¢· 'd—ñú<žn~£‚®c!ÝxçÑ–&ïSÄaf:ǬýųdƒfeüI5šÉgKr³ ÆÛ"Œ)S¦aßû¹fee¡?Àó‘#PP#A~ …ŸüäÍâ7™N'ß#Ç¢#€Ó’%‹´$…FäB|Ÿ;A®Iþȉœ÷šk®êq„:¯•ü‘!Ãp¢àé /‚ë¾€|ìñÇŸt‡Ùíí•‚3ó<ätñ„ØÝb"¾ç(öq‚ŽNäI|†øŽs:xfÍ:Õ¸ÎwD_ð9àçxàzi<ŽÞŽË_{í Ñ÷uwâèÑr1ÑYÄ÷ò¨¨€”h$Ñz Å/R0‡#¢ÁfÂhk^:ç÷ìë Ï_ºEgLr éð¼jFÙ8 [ˆÈ‚h,Ÿ>q¬(kE2~KGçáÜÓg#Щ£¼¢Aˆ„ĘÝX4¦hy‚Étò‹®I~ÉDäÜK‹™½ÇyLÛkœ?mî<èÆo}Ûç>'„@aû¼‘miEÌ4:å´Õ«ðƒ/¿zù=¼_’‡›¯8#‹ Ð=¨=^‰ÂqéhiëÀó÷=ƒk>q| •5V!³d4ë3DöÈÆŠ dü‰×^Ó܆Í[ö¡°(GU�3Î7ÅT€SïùºvÉ‹.º�<ð°°•½ýö;.~Éߣ+VŠù4ƒœ³<X,ОɬÑåfh§âD.¶ví:ÁÅ(Z9@ÞC~L~#ÑS^G^ôÞ{+]voÒ,rEN j»à‚ó{]Æ,Ul¶|öÈ·i·u‚ûó]HAYwvM…T…â— ý %üQPè8ë œdžÄ—NùWÓB9tHb0­{Í^Æ€\F*›@°J{™Y(ø ‰ì?æŽÊþyíÉÛ ÿ�jytcÀixïI/Ÿfí‘Q7ùB-# Á"jTÓx.k^óYbæ–„à�œƒPFäÆ5RP’ÈÈ €0úƒm Æ+òÍÌZâ[¶l" Š1Q¯H’_~ù)Äl5T«sÍÁ#k‘³׬Y+"Ab‰“èœb:K‚Æ+^ ¯™Ât9etQ_³þ0ü‰'ž²¿³Œ0§Ñ$##C8¥èL¡ø‡â:åH`òê«fdÛ¢E Œö–Šö¦9œÇ4®Pd#…,ìcž“ÎfÚ¡“Š÷÷í·ß{޾<K±Žõꫯ‹û{ÞyËĵ3¢‰‚FEјÀgêƒÖâôÓ—"YÐyɬ‰À ;|¾£Áë£Ñ…÷†™!háóÂ>eÉFñYg$qÞyçB!uý[Á¬ýf`sbùòwân+Íü=Rç¡ '÷Š/&6Å<¦8D·è–ƒèÒ‹¬X“õŸ“ÖóŒ~N¤§ù0}æ$;ƒÆï–×QÝ+:Ôѽ(‡²¡#ˆ6="”ÃM˜VlðG¯o"2×Þ{áá¡°ÈRãôU|“î5ËKÈ{(ËÜšY‚x?#å½à(Ùf;ÕRéR¼M8 {Œ&Ïà{ŽÂŠþ*!ËcÒØNGŽÅw<+iÜç{Úäœ/+›„ɓ˷á{—ü‹íaæÈ‰' žÒßàñŸyæ9[ôCŽÇ¾`„9Å,äxŒ`—‘_|aO_|Ù~7PÏÈxòQf[ä1)(¢ø„ü‡ï¦²²Iè-èx¡‡Ñ•¼f$$×ãýܼy«¸ ƒn¿ýS"#cOÀwÔ+¯¼fgCåýd[éINÊsÈ,¤çÐ@,Ámß}w…žhLÀõùj´áùùç_í JJFˆã0Óy>ÏMѹE\7ß|£XÝqd…Þ@ñK…”‡ñDZ`óÛ(\÷´È¤R‘ ýôk!sji騩7ì993&¸ècéhŽ÷mµrŒ÷feU-Ç$J©ï·Î¦6PbIW¾7²‡ Kº”àØ|PƒKYšõŸ.Ôå"#íÔŒïeúoîF‹a÷ÉÜ» ºZ˜€×°‰œúÁj|õæO`Ëžƒøë£/#3;g·µ•ðoÚƒÒ1£0kÊhdkN+C ¾•û›S ¿a³ ´·¡¥¹ÉxßgãÀ¡JÃvêEÀ˜*ªk¡]½Ä¡ïÒÜ¡šðG€¿1‹/YlÈ5h¯a 0‚ÁdÒÞDw¬Ì/.3ƒ„´ÒÖF»¹ y ßïä´×<üð£¸í¶[{)q(¼“yôèQÂþDg¿äu´‹uÇëÖ­[+Þó Þ$¥HˆÜ·¼¼\ptrPò6 µzšñ3•l¶NÑOff†}­<¯•¶M_½†"¿TPPèO(á‚Lñ‹æ‰ïlÉÌÊFSC½ý™"¯7òõimÓŸ;pÿœl/jë#¾üFNz]ÍúgÇöƒJ/üÝý¡)õe95â!úaÆk …Ü¢Ÿ¦¨ 99> dÆŸÖV÷Ș}ïDf–øÄÿp>dÅÕáÌLÕJp`Óá2’¦¬l’P|;Sæ2í#íTtóùaˆS¬AC;…? ôñ„?2¢œ}ÜÓ 1ä�’Ùt–.=͵žŽ!ŠHè(‘QœÄBUUµhÿõ×Üu$©ÅÅÅÂA@й=ˆä�”QKL?ëŒ"¦Ø‡Ylx :¶z 3ŠùuñbBá‹tÂñze*e–rX¼xQÜcÒ€ÂHzžc‚i„¡²?úX¼®×_3f”ºD_Ÿ¥h050ÛìÌ^Åyî¹ç>1àç}âóìw—©E‹Æ]Ï‹ýðþG?kÎ{Cƒ YÎ4Á¼nø P¼EñŸw¦PUHM»¨ÌJÅwšõÎç=:/‘hðìDt¦ …á)rF5›Âöo³ÿÀæip8d"µ<ýÀU˜ø&-Íåé%Ò2ºÝ„mÎO÷!Së°Å?˜ã¥ »½¦$Î1X0³Jj®Èt] ¸¤çIfúñÈû®Ù¥¿R RXA!³ÓÀÏ÷¬,÷Å÷~ (V&§)+›d/#¿xçw±qãfƒËlË(Ðu¾«)^aûýMÐ91Âr�¥]Δ¶›Ü‹ý¶ÿ~Á­’åÜìGiPåq¢9’YÂt¶pšß¼ñÆ›¸óÎO÷ªt/A'Ð…žïâÃt± )%ñ<|/]}õ•è U.2ÅÏ yP4_¦ƒNrFŠËêêêlþÉþ⽤£Šb':Šb9¨(:—QíÓ§Owe¶äq¥è'VvE:š8xùåW·¥ÐˆYâ¡;ެ Ð(~©Ú°DËa§}Ìø]ßþ>.Y¶…ù9øÃ‹¯F‡‹¡§eš†³œÔ4´¢±¹Ó§v@U5Íèè !ÃàxÅ…YðûL)MZš™éiæ¡ ž×ÒÒŠª&¤ιÆ2Zv²í–8ÿjÊ+ùStÛµÓ¢tAN5RÔñå–^ã·>í«_…÷ßH¨)*ܶþ+¯Á¼e˜êÓ.jpÀùf£Ó°µN0Þ?õûvÃÓÙ†Î`*ÊëÑÙ4ŒM(™R†ãý÷ú»kqö’Spìxƒ(!~äx%Eãà)geW4Û[ÂÚP(Ða Ú† ›¡ÈYÚ’hbɧX ]JŠ~Î<ótœvÚ×z‹<ðÍ7—‹w<ùÆÇ>v †;h_\¸p>–-;ǵœ™¶@fò‰Çë˜C–>c¦rq'%/£]—”Üÿ­·–‹ìî=y_¥ŠÍ–ÜRŠ~FŒ(Ç  P‚•çåµ:³')( (~©  ÐŸü )Û¨'®û—˜ˆŸ˜Õz´›Ft;E˜2ß YîËÎÖ’SAãoƒ &Çvö¾vÖŸ+²ýxE…ëÜcDÛîÚ[Übã®ÂŸl罉 ím#ƒ}o‡æ�›=98fdrO@ÇÉ¿x®¸â2Q2*–ƒ2é`©ˆº·4’Ë4­»wïŽYÏ•Ï×°ô´ û¬Í}ùå—v@JÐÈï÷û¬6V&<ËLźN S¤åðáÃ]ÖÓIáŒPŠU:€höc_ÊOÑ1F# qúé§uýü]ºä’‹„‰`&D¥êX†-žCƒNYvƒ}O@tÁç‰õxèë³ ¶#VÉ:f푆" hÈèÐÉôÊ+¯ŠyŠzø¼E Šxo¤Sð¢‹.ŒYœRÎg€ÎL7NDy¶x(++s}¦Q’¢´hÐüÆ/»&–œq‚úlÃPE*ÝÛT…nq1!šC¤K‘²µÞe7w¦V9-+q¶Mˆ•<ÈÏÌÀÇ×Y©¿ #½m¸xD&e#-aCfÿ”šê´B"r]@dkòDJEØN•Mæýeq°°ŒfO ðwfïÞ½b¾¬l’Ë ³¸4RˆÛ ±çІ“Û‘×ÄèÒa@¾Ù¦j "¥ ȇbY?õ©[ðùÏ®GB{FZè“_ÄâHä•,[@.JGùsoA®Ï¡B¡º¼¿t$‘öû°è8ŠWº—í—ˆæåÎ,?20 R”½=!û’QïñJªr<$³6Rpå¼·ÑHÄ‘†¿L Å/\pd,š`�ZÕaŒS‚ÙÓ'¡Xk5~¤WÛ*õÂѨ¬©G ¨£±©‡Ž5¢ÁøÛÞD}c;—7¶BAvæó#?'ƒ3ÕÕ·âxU3ZÚXµõ#t†M6$‹•ÄÐêÀRŒÊ•Hš¬9ësYÛÚÉst·¥Pwf‚#£Ï²sDÐc"¤55ÁßÖf¾cŒ6³Ü™×°uQÍù€ajmé@ue*öBfñH+ d ´sÀæí‡ðìkë‘îO6ŒÝ{÷/µ³Í–ÐÉRküKÅ>ì¾°>´SþÀt&³l)A4E'œ¤h˜åÀbl$/ ‹ýHßÈw¼¸UƒáràsÎ9;æ:òf uˆX¼Žö(Úi¼xå•—Çä¯ÔÈÌL´±E—Rí©b³eöm‚ßÛË.»Ä%ú‘  O^«‚B2Pü21¿TPºPNjX¯1ƒOü´ßnqIWñIK›Ž¸á$ý€i“s°}W$ÓÎG}dë™QmŠˆ—L‘€×ÊæcfûñhVÔ¹å\’a'B4$³þèVÖ‘åÇ�E—øÚµËmÄ>%g@¯½µÝ=0ŽŸDßGRa«†6·÷ ©Œ?ŒN¥²›Ñ 2r&==-aÖ—x`mw‚!9èŠNéHРϬ3¢BtZX>e)²ž–ù’`ú^:ŒâÏ(ÛÈô´±Ú(ÁÁ.£ãƒ@fj¡À'$¾ó‘Á¦ÌâÃòNN‡F4è< Ã…)ˆ{F¿$ ñ"¡äz3Rþ=18gtw,‘Ï1CHÑ‘(û‚F¦hއ¾>KNÄsºNÁ Ë”ÐPÑð^³ï;.¿ü2aœ‹†¼7,cVV6)îñ(pbö+Þ“ƒBÁTú­eä¿KÎ÷#Àºû-åà6ÚaÉò3EEn'âwÞ!2 w åÌyƒ³ŒÈî£YqËš”i‘èc«T”È&ƒˆ8¨¹3„T‚§°ûŒfÌè“a¼fÊÇä à”†á7Ëx'S”ð±ÑŒwFþ¤ :…X<"ØÒ„Êâ šCü£kŸ”C¸•*à»?4Ÿ¥XüŠÆyFiŒâ=÷Üôñ²BÒ(O~F®˜(Cß­"uÇz gæ™mÛ¶ãüóKºü¦ÑYÒÁAá”t“?R ̮Ԗb•*u‚|\Šk(j&Ÿì ÈÃF$øZ2“—Dôý2ƒ�rDÐÛë}+߯|—:³CRô%û’mNôÎá5òÙ%˜yˆc!GVZPürøBñË€°ï!BMÚZ u´";3~ƒ¸\zÖ|<ôþ3ÐO9º/áâRTîy•µ(.ÈA0`=ÛÖþ›;P›ô´tãð>8Z/¾õMmx热ÈÖÚEiWR'2Šè–wêxìl>²™®Îµšs kI,‘f¯“tLËÍ5íŸÖ÷Óùt¹JYYyìýŒÿBÁ€à±m ðgf¡½© †="§ÄäI>ãýwèX%¶ì݆ɓ&¡¹¾YðখT4}|ÊYµx—ÖZŸÂÀP J” =ŒïaÚ*¿i,ÏvC[‹ f[¸pAÂãó7VòŠT(âΠ.Ñï 9‘̆èäuìÏ={L{3(&*‹Æñ�³ýp|@ÞÔSÛ퉶ٚåÀˆy>#UŽs˜ÍmQPèŠ__(~©p²C Nj˜/Ôtc€—¨Ô@wŸæ–D‰dûŽ…s ðì+ÇìÏÖoÄÇ>ö±.ÛIr [>¼>1…ëôXå%¢…?°ÄABô£[%¿Bvé¯h¬·"1mÈkojN¶ÔW4Ìk ©NÎHY¥ï³Ï>ßí6]qÅå=Φ >ŒŠ¥¨ˆPX2Ž©V¥ˆ%Öý¦ÐCš8øŽþÈyFFºˆ2î+8 c–þÙ>Y@fã‰ÕF‰Xb'‰-ÁHk§ð‡¥ B»+½@çVo…?2’‘̉œC„SèÃH§xŸDÇ‘)=ùüÇsÊI°<D²èͳäD¢{•™™iϳfx_Á”Ò2ꈩ‰ã•‘÷†N¿úúú„Ç”m¤(«'å@Nðû+;؉�3YÞŽ¥@$Ö®]/RH3«A<Üwßv¦5‚ߟ "ŽSFÝɔڄt>wô¶,ÍÉYÊޏº«©).13Ưx„ %bŸ¢‘ðä Üÿ7Qdý)þI÷ù,ÁŒ&!ÝÚZF¿Çþ4¤ ˜ñG‹PdãZ´ˆÃʼ­&¬û«i‘ùî/vð “È™M'à0•8Ë_ÒHÈ(ã¾òädÞƒ‰~Cäù»ã½û‡˜®œåILŽ;~üxÁÉz“Bp¦Nç±lo"8Å4’ßöä8|NÈùÈõØÒñBĺ_t&­^ýØÂ¨’’ˆ°ŒYk¥¸'ÚéD)ÑsrúDר×V:PürøBñËþ‡ý8ÊM¡½Mr˜lŽœôœÓæàýM»±åSÐϹú˜É¨olAu}»±n–ò‚ÛÊ×ÐØnØæ:‘-JÊ’8Rƒ·×nˆ¢<|÷Αö/›Í,70Å?vƒbµÒ$\Z—39vҵؖFͶhvö„ »‰æ ŠŒqô€ñÌ­Øq9c:0¦¤�9ÙÆØÞçAkC“°¶Ô7"#; ºñÎ#ïhmAÀø¾¾ùþf¼¾b3N™<ÊÆ áOVN6\*<u´ì‘Ý'ž¬Çä–ÃsË–-J£¶šéïEðT¼l0„Ó.Õ]IWò¾çY^J–jÎYÖãÁiÇsrfÿ‘%¸(Ú ‹œ(lë37<6[^«òt÷üpÚu¨§ Ð¿¾PüRád‡þ(œÔ0ÌÆ >œØ¹œ›ïVÇpø¦q¤<Œù³ÎàþY%øD^Ì«V­2Hu{ÌÔ–$ÙRøc–�£�(l ~5‡Ú5-ãÜN·2þÈcDƒd{õê5®eçU‚þ.w‚AwšÁÜ‚DéÛ¶Ã{›ºÂŸD`ö™)S¦ˆú×ùùùè x/Iê)sìØ1;<Y˜Y^¦‹hfüq>w­­­"Z„`TEoIÉ´­Œ^¡A@ïeú㾨¹¥Á‰"iºSɈ¸œméi©†èóQ˜ÕÝýa ¬Dèë³t"@aëÄìÄK)MȾ¢Hèž{îG²àó«„?¤ÚàêŽ;nÃûï¯v•Uùíoÿ ²|ÝtÓ ®l�®=òÈcxíµ7\Ç8ÿüs]¥B˜Þüᇳ?ðÁ:ñÅ‹uè¿þõoNØ1ÂéLqäUW]a÷Q¬ß,ù[”ŠPçîA¡ˆI±ÌL´í‹r^"¿¿ÅÃtSdf”#u±®%Å2þÞɧ"¼ùý„Ûhš7i2aNr˜0©„öù¯W\€­“·2ýhžˆHÜ;)æÒ­ëÖ“»hS04p¼Yß fÙ!·J: ÈïúC¼Êàï ¦Ì�H k֬ǣF}À¬=±ÆWñ ¹ÁL7ƒ§@:x­t�1['3'ötæ0­<£Ë›z¼ÿ©§ž"„?y˜Sø#ØçÑ™‹œ}™L`„„tz) o(~â— ÝBÖ‘µý œš:ZÛ;E‰,¿Wç®Y†Ÿÿýyt”N‡^6mþ´ŽõΪvã=“†œì d¤ù þcvt„0ž÷Ö¶�:Œíhغk¿a/¾ûÅk‘CͳvvI1SðɰãNŸhÂ~~cð*ÉÁìKD—üA¨[þŠ£Ä5ÑÖ¥ªì|¨ë@ ö0Öö"3;ݰ…¤!;Óo\³YÙ;q<ön߉êúFÔ7wßÕ"T¯ÆŒI“Ä65•5ðù}ðø½Øwø(´›>M#`rbxè~„ýƒ¥ß{o¥øLÑO¢ïrOìRmn|¿÷Ö6”І6Y™=ÓÉ뜼iýúbJ½É®y¢m¶ÎwX2öØîúTAABñË¿TP^PÂ…a-*êÚ ó%°Ä!ñQ:q Öâuûsg§ûÅvàHh@#}/(¸±™8Rnž—DýµW_Ã5×^s{^¯,Óef52M±^Òn‘P8!æég\ƒ„ñ¥YX8·p@¯ýàQ·¬£ÃÝ÷ã&MM¸?Â&YJôÂ?‘éÿmÍH Š0ŠŠŠÄ ¯·`”îSO=㪱LG�Ó¢RHÄÈçQ£F #|¢:Ï2/Ÿ¦è•éô%.Ÿ—Þ–ùª¬¬Ä3Ï<ç"‹¬EËÁyyyv�:jœ öB2ؾD£÷d|ÜÏ¥lk2·DÛô׳4˜`Ÿ7ß|KÌó™ºôÒ‹nßKÛ…k@¦zƒ+–•ûÌgnÇŸÿü7×òW^yML|6XbÆÌfÐõ7fäÈ|ñ‹w¹–™"²ÅbÀLð{öï|ŸøÄÇD~—ø=xüñ'EvNü½¤CùÚk¯¶ÃíY_ß`/c´ÛÂwí%—\ä°Ÿh¨sp”ƒŠ”ùÒ,ѹ–ñ;«™" S3Â\9!ÖË‚nü”T´ô õ¦¦VTV׉ <%%ÈÊL^Ô@øg/Eà#ÃÜѽQ§G¯­\ãÙ.;%©MõM¬)2NÒ0î‘×âÆ03Ù¾3«ôÅ?šx]:ʉ½|‰ô3¤°B‚¿sÝ¢Þá.ü!ø[Ï´æ´ÐqqôèQñûËßp–à´ví:‘e3QIÒd¢Rå6=å’|Þxã-×%gߑ둟“÷1í|<¿Ó(ÍHk¾ ™QŠí㢬lR§LoHЇPüRñK…À*õeÏòú¯imëDkG@\&Œ›/= ÷¿ü„oþžaX›†ê†zŒÊÉ5ž“�ÚÚVG³l«.2Ùè6/jïèÄáãUøËÏ¿€‘ù9h<^ƒHGS`‰4K#…;®B¸rO±³�é ŠcEÖ4¶ŠÃ¿ýŠ»y¬5ºÇ ËÓ¼˜}ÕÜDSc�!ã{ Õ ¢¶5•uâúÓ´t´7·#ß°Ñæg#ݰÑ­¨C¦ñù£=ûÐ9Öà³#Ëø¥Mx^»ÿ† œ¶Êd3ì%ËKN¦-Éð¹³_Ë~5m¶úpú¢) (¿TüRAa¸B NjÈ´îžPGÂíJ£Ä%ÑⓇ6BÛc8„n¹n<þû·‡úC=ŒË Ãt"aˆ�Ý ºKî<ñÄ“®e·\7N´m ±ÿ»o£EW¥Ý4+CPoSø4íZV6 •+ß·…Ó¦MDÏu+!ðñÀÔ³……":šäÏ)ü!H,c7¸r�ÉgsÉ’E¢¾u_KšõYY™‚43UmwpFÖô$é$ÑɜǹM2™ˆbA:UØÇÝe`§xè¯gi°ÀÇ/¼ð’ÈJÄÁÉ•W^Ñm„<ÅvŒl§ïšk®‚Bïбâ@‘1ü~3&ÍÍ-bŠ…¼¼\üèGß9xýçþ–1 þ;ý8Ÿ9FÑ8#iœàó÷Ío~­Ërf¡rFè0‹Úo~ó[1OÇé™gžTA*ÞÛT„nÿµ ´V(:LÌèfÍZ+Ý1s™ñ[µ·¾÷ï—XèìbÇÎÆ_Sà^[ׄ9³&þŸAÒ36ÿ,t®yýãzçcüñvkµî4KÁ@é™éB¼4P¨lé‘éûPˆEuy—´H9 ÍÌòCA½Ç#E]–›*E"¸£…?É€h¬ëî=™êHf<Ã{XV6ÉæÞ¼îòòcÂØIÃ,9/¼ð">ýéÛ“Š(vnÃwÉ`;yžD\™QÙ2+#ùmòÇm¶E?ŒÈ_¶ì!‹ÎjȬRÝþ02Ñ£|Ÿñý&³óÄ pöå'?y“(I§  ¡ø¥â— ÉC·„?Ö'hþ !ta9¯Æædeø'=gñ,´´ðÔ£?…gÊ”WDéˆbÚ;í–áh‚c‘¢ƒåå¸ò¢EX8g²ñ­s¬tokµVÚX&Ä4¥Aº+ùXæL÷c¥hl©ªÀ«wÜŽÓŽIuâ…4Ï-ÄŠ±“‘ŸŸ)2µ´u¢Í¸Þ€Á5uƒßy~òœ¼¹¾Iؼ'LOó#'+y9™âóñšFƒ&gðz°}÷>è×þ‹¥ë×#Y6öd$Èw<y�mÔÝ9de¦ŸÞÚÁR¡Ÿ“m틉®“Ax²Ì•“×93v³ôÚÂ… 0H›­óZÚf«prAñKÅ/†+†^í…> Úé-Å >$î”NšâúÜÙév‹Œ?²À�M_üô¤ù#_Ù#GŽàñÇŸ@²}¢§d#÷Ý{ŸÈ !‘žæmèë>x$qÆŸè{4ÍÜ?Zøs2DБCŒ0Œ7W^yy\q’Ýiû FCS ÂÁVee•XÖÛl?T…×ÖšF¢yóæ‚o�™LûF«·t#Khôå<ÇW1]"8kRËýz Fgü®óœ‰@ÇW<ôç³4à@DF!œuÖ"©;DîÍq!ÔЈ—Š¥?÷¹Ïà?þã»âNK—.Á_þò‡¸Y08˜þíoÔïßèÑ£ð‹_ü<f‰;ï¼#n›º+Ñ3˜†o1Ó-t×_)±–x4Kl-VM,»Þ†Ýµý[²¦3Ði‹~ˆ¶Öv!lè)|§.%¿ú Ú©K —\†ú›ÂF§ tVŠòK šW³î‘fGŸ»Ý8flzØásŠ”l‹ÑþA|Ÿ£ÉwyÕ7¾ñÕ„£òr„TÉÖ N£]"C~2Ž€hШÉßù+®¸L”Ö%è\a:õdP\\dÏ>|8á¶=w%Ç€‰À´ïÌš,h¸•™~.ºèBÁýc•2M†ëQ$ÎÌÄîݦ(\¾Óè¼aäi4œ}ÙgU8ù øeW(~©&91ß9üë7~Ë3sq¬ªN”êjï Ú^zÎ<ÜpÖ àÃwpìx%<,ïeÛãd+[c®¾¹ Wœ3ß°ç´ÜÉ#£óòèQ#° ÄjNþ$‰•漇èG·£;6ïlmÃæ¿ýO.= 9o¾xñ‘æÅ1ãÀdv¼ÒNã­Æ´''‚Æ{(?7 Y™éY”‹ c‹1y| ÊÆó…?¦£KòŒÏ#Äòq£‹P˜—%D?PÍ-È2ޱeÇN´—ßÕ1ÓM;_¡$®²Ó‘I Ëe'§A¾ãÉ3º³§Ñî,…ÂNn@ $'L² ݉K’Í~Ct"8í‚N^G±äZÅ›RÅfËke¹3¢»þ¢°LñH…d¡øeW(~© 0< 2þ(œÔ/LŸ†D”½»Œ?ÑØ¢#/gàÈBéØ,Üqó$üùþˆ!ú/þ N?})&OØôü[¶lÁ½÷ÞçZvç­e;f`ëæ64…qèhß2þðÞ©šñg A7‘(ú˜ƒ³îÿ¬3KãѾ}ûm¿C3gÎ@oà¾$j#v¬g= 9féYë–õÊc¡ªªªOŸ3¦‹þ£ÁcÓ¦ÍX²dqÌíäz‚Q=Î:¾=¯kÍšµbž×•H�ÃòñПÏÒ@cýú ö€ƒÙ{âÝËh°ìNŒfbÔ?ïU<ÐAJãDj0Ñ4†¥Š̉sÎ9 gœ±ï½·Òø=[%ž“ªªjñ|3»ÁرcÅ@øÂ Ï·ÅŽ‰ÀRw¿üå‹gŽb3:Ši¨d¦FÛÐñyƧãâ‹/ŒmÂcüþ÷w‹H›>Xk *™2;Ù”éƒ-Ó=tYûÀRˆˆ|0V†ŸH@²™Ù!ÝZï±Ä?! ªië@}{�ýÃY2³Ò‘Ÿ—†F“åfff ½WÏ•†´³¯@G[+ÂÇ O(3ŒMsÎLzsºÏìÏÀþÖ–³ÌšG–ö"Ÿ·25q¥nŠ€a®kš]ò‹>M „¬(î),w¾ÇgΜÙíöS§NÁ[o-¿YÜwþüyHE83ÁÐ/L"ccEE…à“Ì›77æ6ãÇ7þ_-æ“}‡±-2+æÖ­Û°xñ¢¸¿Ý[¶lÅêÕk0aÂñ>êm´4ÏèîxücÆö|OJ¸9y9ßAñŒ(Šm›1c†¸fòÞóÎ;×økîÇl§± ì,KÁ:3cr?¾ã]#Q¬WzB2…*œ(~©ø¥BrÐõˆHÆüÏ ½xªjêÑÒjpÍ2FäØúó‹Îœ‡1%E¸ÿ¹w±zÝ&L7Þ‡Ù2™NÔ±),`áì©()Ê7žõz:^‡¬@'ŠdõSÀ-š–Òr"ëxÎã[Y1]çuª|Ì:¹‚Ÿ…:;ðáãaõþ ÛwîÁ&-G´R„³ÓÖ‚èloÃÈPKµN×;QR‚u§,BgnŠ‹ráõyD6N‹¢¥°Áí|Æ2ŸŒÖà(9&sµõ­"ÛO«q½;†~Ã÷Å:Í*+ÿº;ͺ|±TP'h[áo$ŸMþ¶M˜0>î¶ë×otíçDp¾B¶6ÊÚÚÚ˜"kÚ÷ïßd@^'ËíÄB<^Çí§NŠ?Ü.8¹˱ÆÛÃí˜Íï‡d‘*6[^kYY™°Ã‘ÿ‘ד7Æû3™²¸ Š_*~© 0¡„? '5¤$7Ã]·"®»¢pÄH䢩ÞTº‡Ã!´··/Z“ð“SnØÒ‰óÎÌÀ@âßž…§^<ŠšZ“ðeÿíùþôç?ŠŸd~øƒÙ DQa¾û­îIE_±nS§qÞÈȘ}ξ—È/,S\÷47Ó|ÙWç¼×ë$-IåÀŒƒá£GŠ´ÿîç“â¦mMf€ÆÁ-ÕÞÇJáF±¢“ëA‹²Æ}â1YB,ÚaÆr¯½ö:}¬ZµZˆ>øwôèÑ(-ëÚ†å ^}õõ>Ek³¿¤ƒhõêÄ`5ÚèÁã;3ÖйÓ[G" !£F™ŒXš¢X "$a…þ|–e­\¹JÌçææàÒK/Nz_rè£Ã‰ŽP>Ÿ±„Rl½üò«b^•‹ øRqàLð½þù犩?@#|ñD|ɀ߯/ù bJU¤Ò >•!ä<ºf;8l!ˆð¿ˆ�¦Û€¥¤B̲÷0¶Ý[ÛŠEcóÐ`¹‚©SÇ£¶¦AdÍ)(Ì…ÏïíÏÁëCÚÅ7"¸ö wl@¡y Í; ˜i}W’|—ò;ÆçOïÁ>½Ae[§uïÌ(wQ‚MÌ›¢,‡È5oÞsK+„ÁÍðã Ü»v™Y{h¸K&ÓûuÊ”)ˆN@Ã_Oœƒ'ã{š\J–2•ضíCÁQãSSøãÇ‹u<†DOúbŸ×_SD§“\uÕ]Æ•••‚_2ã¹Ttû{–%}óÍåÂ(ÍÉçd”3û)ºt„lW¬w´s,¹{÷,]zZ—m˜MhíÚõH³f"<LGOñy¢2_ìK^[uu(;vÑEtéK:¡È9™áŠPeÁN(~Ù3(~yƒ6´p$k¡X4a*6=‡Úúäd¥£¥µÓø›fSšÙÓÆã{_ºÏ-_‹Ö£(¿ãGBq~ü>Ÿý¾!Ï©3ÆËóæŒÇÃ/®B­aטkpͱi %@Z†"™áP÷¸Ô<‚gÙ¥¼tÍ¥1ŠÐ)Ý¡@'ö¾üÖÿäG¨Ý° kŒ3¾¨`Öô)øÖ•Ë0aühd¦yŒ.¡ª¡><€{6íÄîý‡áY·Ñ¸žBä!Ëpššbœ0¦O‡yÆÔ£µ= ìk<¿Ï°µe¤ùÐÒ<º£3„¦ævdåçàÍ÷V!8ëBÃ8:ÞÅOíwÒA v鵓¹ÔY’–é0fɘhP´!ËÖ2;`tæëþà„}ÛÀvï¼ó®½öj—h‡÷˜\&Ù,«´û½õÖÛ‚óDƒ×(3sÇâu ÌýÅg–¥î?ö±kb–ª]±b%6n4 {R,•l¶îË ¥ä×_ÿñ.×ÊìÝä =â—=ƒâ— CJø£0,!‰i2ÛQ8Á¯!ÃéMËŒ»í¬…§cõ[/ÛŸ[[lá±ns�癉DQA:~ùãù¸ýËkìeåååøæ7¾…ÿýå/*ð{ƒºº:ãØßäÙ‰»¶ÅE+r"Önr”ZZê]Ÿg/N1êlCvN†¸ÇÉ '†Z 0Ft°FëÁƒ…°ƒä†bböìYÂøO1˃>,JtdPÄEç#>(r 2[¦oMhYöI.ë-ØVFð°Ýt$<úèãâx\’t;vL ÚiðgÖ^Ç@â¥óÏ?/¾ø²4?ùäÓ""™ƒz*ÅÙ_t^´·wˆ·›7oEoÀk¹ôÒKðØcO'ÝÓO?+DGÿ° ŒÒá5SD0"'ÙŒ5ñÀR=ô¨8S®H S ³ÿiL`ôP¼(îþ~–LµüÒK/Û"ÅqãÆ%ÌbD8ËXp@uÙe—âñÇŸFþe?ÑàÄR ¬3Ïç”Î0s{¯ˆ¾Pè öé@¦×V|ôVà9”Ñ;üæL6E?ºõ›¤YžÝ*¿`ó 3AZÌÌ?ëÊëûMøCdwì¸Gi„®×ÕÞÖ!¢Æº#œýK/†§l‚ë—#\qIaôhóÏ…V8ƒåïàý …Â"ŠIp»=umVö%¯Lî±ô—8Ü)Óe9¬p⸙UE:z’‰‘\GÑùÎ\¶ì¤èäÅÉCaM12y)×ñºÉib‚ ÈñÈÁè¸3fŒx÷ÓaÁk—B¦/UŠ*(daÿ³ l˽÷Þ9sf‹qù,92ä'4¶²ŒV_xÏØ^Љxnòfr Éç–~ˆe –%`Ùk×®¥[GŽ,œ\”¢1 ‹V­Z#Æìwr Ÿc�fD$×ãºî@q;û’":ÆòÚDãUöû’ýÈ>ãX€×KÇ¿Ó H!oi1Ëns¡D?'¿~8ùå À*-ëÌ®š8õï?ŽŠêzd£ÆàGéé>ø}ÁBNV>yå9¸ô¬ùxã.lؾϘv{Hº=Ïr˜>cÖ—Ä…gÌùKf ¹± áºF&´¥µÒàý0 NX&R´ Ù픟e[ó¹&l¼¿÷¾þ*Öü䧨û`5FëÇz|X®bá©Ó �o­Ú Såfeˆ÷lNN&>vÞÜ~õÙFÛB8RYcU hhn38bùÙ™k¼§Bü­#—çÏϰÚi¶©º¾M#RøSYÓ¿ñ~ÝsðŽwz /¾Æù;´IZÔUÈKÑ÷ædÅyç-åJY‹ÙÄÉ+ø'Ï#Ï J–+e–R œ£Ñœ°¯àùsr²…°™"&Ú1iW¢…ï(r4fåH¶ Îdž ›DGò:òs™m<¯£MŽ¥í)pç9ï»ïq 2ò{Kû"ÛÀ@@‚Aˆ=±á¦’Í–rîÜÙÜ&쥼VòyrYYBŽvI>;'N´ív ÝAñËáÅ/”ðGá$†‘ ÓØ¬nH(ü™³ä,—ð§¥¥Á\D¢ ÖnìHʱÐWÜø± xwUþâ(ùµ{÷n|þ®Ïãßÿã?„Á´?ÀÁÒ·ÿåÛ‚È;ñÅÏLÅ'®ÁÀÚMîì!ìs'xO!ØÖ„Ì’<;ÅßPõ$Þï·ß~W8{õ@Ü~û­bà+ňqp½bÅû]ö?ûì3ÁMF¬AAQ2b—ÎÞ– ’àà•3DÙÖèZÌ~¿W\q¹qï è ’`ÆÃ#œœ`t ½þ,Åè”^xQ\ôÒéæE'ÌXÓ×ç–Î’ë®»VœÂ%Cœâ-‚¥xmÝ úëYÐ!AF2Z,ÊÊ&¹Ìà¼7tpqŠ¿|.idPˆ f…¢ñMaè#:×B<hÎBÏ´¸‡LÿoE4SUÂcÉ…kÁã1^¬8Ò€/ô �‹×(Üá¹22Òàõõ\PžÑ³ˆ(OÉX¤]v BåÞ-ÊéMG ˜‘rZF&ôìxJË •NeêLËÏ1xÎ ®L!¨O7"‹†öNo ÀëO”£€ÇôXž3Þݰîe¾`ß×°q;M‡Ù‰öã8…®‰JUFƒÙ¥¡žïѳÏ>+n© ¦0§èƒ†~¾ëé0r¢¬l–,Y×ÁB!Ϲ瞃wß]!²®[;kUIÉ-ÝSîuÅ—‰hmòF gdöA'Èi¯¼òЉŠbžÖÖVál’‚'˜ñ0^Ä7ù&|®eÉÅé4ã}¿úê+ñÔSÏ®‹äã²Ë.1m ÐùÄ>—H”íG‚“d_2 ž"¤XàsË)¨0¼¡øåðâ—Kd)Pe|Ì)FhÜ,ì?RŽyÈH÷£²¦cJrL‘´Î(ÈÅ5,ÂUç/BSKjšÑÞ€ßà˜¹Y(*ÈÙpLQDfİ%ƒXÇÎþm1ì>ežÅ)”‘Öå_‡H( âðò·°þg?Åqã}’kp;æ£clóßž4Œ*ÁâSOÅ´I#ÑL.s s§ÜÆhk«ÑvN³±'¡ö³�: ÛHGK»}áV~G»šZ¨kh7K|5´¢3‚n˜7nÝð%ÿ�=-+ÒÏ1ýļ5'±ð‡v—›o¾Ï?ÿ¢°-Q¬,ËNP`Ì,:±x ÑWNØWо|ùå—áÙgŸœ’¶L)¬‘ Wãõ&Óro3˜³ç¼Ž`  Û$íÂffŸÍ]¶#Ç%Ïëi&ŒT²Ù2X“_!f\âµFg¡dp¹öž=Jô£Ð3(~9| ø¥‚‚ %üQ8éAÒKg8Ú›n7÷4w¬)B1‡ÒÄžA=Fé˜/)õëŸ.BeUž{娽ŒQªÿð•ÀwÜŽÛn¿­×õ,™>ý±GÃ_ÿú7QJ̉Ë/ƒÿùS‚¼€æpyG„? ·¶6º¶™{ÚÙ ¡÷Ôã)Ö)þh¨gßpàÃŒ+èp�,ëL3],#R¸ž™›ø¬3Z„QÎLïJÁÇòåo'u.:µ"SÄ&c¼ï ßtÓ "z—Î…ššE–%¢48`W§z Àkb–Ÿ7áðá#" œÑ+Œ&怚ΚhÑLoÀh•;î¸M8êxÝŒÄá÷L<]}U9Áû|ûíŸÏ#©x>:DÙ·tœðÚXÊ,úóYJeðÞ|úÓ· Ѽ74`¤¥ùÅ÷ª¬l’ˆ,R‰ÁþQçáõ¬wÓˆï,¥;„.4;Å¿éÉÐd90ŠF(Ò"|ruy¡0üIˆ/:Ú;q´¼Á€Y~“¥½Æ”–ˆßæž@–#ë4xF–ŠI:1t†[ˬ9Ò}3È‚»uR…u‘©§;|XÝ,Ú¬y4±½nåñý"„=¦ƒJˆ~Ä=Óm¡¼uú ÌùÃ÷73¬D—EH^#y�¹ßu<NYÙ$¤¤ñÉOÞŒ 6Š^¾›ÉÏx­äL¼:%aÁ‚ùBèIJSäx+3ŠŸb^r/f`äqz#¸f[(B¡°†ÇgÔ6Ïc±„VYÙ$ÁÙã9mz“1rUr•úúz‘¹ˆœŽ×Àþˆ7ö¡`™Î#–£ÓŒ\ÐáÊõä‹ìgfÞ!æ÷›Ç¦@ž|$“³õP,ÎóÐ1ÄöuÙ—sæÌ28燂sš÷*,úoìØ±‚¯“w*œ|Pürø@ñË„+ãO¡y—àð‹¿ÀÔ ã•™†’â\«nÁèâ,ƒCZüÆ>†Iéòs2Efœˆ0Z‡¦9ÏAëf[É\¥¾õŽìÜÖêJde‹{LDJ¹*c'ƒØÿúkXûóŸ£fåJ”d!NZwÀk¼26HZmCFfá´ÙS#eÉ1ã_ss[—\ŽN“¬]ˆô›Ûƒ8^mÚˆ›ZÚ ÞÑŠ´¬L¼µj :fœ }â<3Û½·<¤•óÇ:¹ÖåÖœ¼Â‚ïño¼^œQàKûù'EèäK “+$ʌ؜°¯ ÍðÖ[oÁúõDæ" È'™í¶5Ú”hãL´³ö–×IÐ>UV6IØêØò& cœ—¶ÜÞpÜT²Ù²ý~ñoÚ´Yd¿dßsì;~üx,]ºDØì”ðG¡§Pürø@ñKɾñµ$×iIüÕâ|–“ÇñWN^k™7jâ:æ«ötvº¦PH87º„F&ù—Ëmm­Â�ÛS‡w¬ÁSô2Û)Õž—)1·ìØ }Ìì„ç¸ãÂ9¨¯©²—Mš4ÇtDÊ1|éÓy¸ëS¹ ´¶…ðÉÏ¿WÞì!A£íõ7\o ®)H“ Ϋ¯¼Š‡zGí²þŠ‹Çâ?œa^ØDüáÞFüéþˆ!šB«ƒ·ÙŸ GŒÂ½onIx íøÌ9Y8A(„rrä|ôÀ'Ö@h8f ê-X/ùƒÖ‰>¹óÎ;›;8Ï»ÂÀƒ“¿ÿý>1Ï4Ìóçσ‚B_ÀgŠbR…¡ ¾;S|Ig<£Ž33³„ÁÓ,Éê!ùœósoùeOxd¬y³$ª†9ï…„óÙ|4‡WD3ë{Yóasy(hÍ3Æg!œ ñâó±pT^ñŒû/P_׈ʊW;‹G†ó¼ˆcE·\z¤Ô—n¯r¯w^[¼}bµ£ ÇÖÑmÛ#ÛÆicß®íèºOÌöDí¯=ÛzïWµÁëóÃÃçÎxæ<Ÿ1ÏgÏ#A…Aš%(’¢ ë|†ò)¼o™Yr(º”Q2\3Ñr…5k>°3ßÜu×ý"  PÔþÇ?þEüS¬£2ô(ô¿ú8YøeOÑ»¦ÉG+Ð áâ?ìCU›&„<nm‹ÿ+¿ÁÄÎ ,<uFŽÈžô41ŸŒ4JuÊQæTsþçP»´·ÐØÒ}îÂ/? O8l¯f("åïÓ‚û7œ÷£FRùÀ©Šœ‘-_Žu?ù±Èð“g|fCJ=½Ž¶ý~Ó[€Y#qé²3P:Òà¿9()Îväà„«¼˜™yS.w~p6ACck'ªj[EóZÚ:PYÛ,8âævag‹AÕ¯ù6tºkWY’ „à\3"SÇk_˜Œ4ƒc2´óÙ‹´KÙ)Š_}¤2¿$Ô{{hÀ°ïiüaèf£õ75éÖß°cÒ£'Äùœèoô|4­PN:È_üaæt¡1à­êì€7-=î~󖞃w^zÊ^ÖÐPåþ¼ðz+>÷©¼Á¨øeœ×‡Çÿ~6¾õÝ øó}{]몪ªðûßý÷Þs/–ž¾‹-ÂôÓ1jä(ˆˆ‚ÚšZTTV`çÎØ°~£aL^7ãÇ?3 ÿóÃF_ Î Š·ç¥7Ýma_;±àÌóƒ)‹²ÒÄ}‹Î~¤^´½¿72U-[Jô3tÀúÛ$Ÿü½‹‡êêˆóx0‰²ÂðEff¦8qð*$]7³ÅÀâšî2_r^3óÉ0s ±Å$`)ãwšåj„ð§;df¦‹,+ãù]F¦Špê Dºø:w<¢Üš,Ϧ‹{hÞKîiV$¸nÝ߈ÓHwÖ¤PPP°ÁH|™!ˆÙúŠ_}(~9ÀtG&‹¦Oû?ûS”ÖÔ™¹iBaäçeáè±&ãoòsÓ »füvëhkóÆà×£Y¶Ô0‚Æ>!45w`óÎ}X¹iÆüóÓš;2˜ì”£,cÚð¿ÿ‹1‹bÆÇ®“tü5ŽÖqdÍj¬úáQýæ›(2Þg«XX[Fë‘Ë€?3ãF•bW]ïmØ„ O_(ÊÝjõm(ÎÏ€Ç -Öâ%§‹DwŠ~tóOÐhCM]«(ñÅ…4ÕÔµ!øþ£åØUQgŠ~¼iQ¢%™Ú3"&Òëì–ëâ:RŠ_}(~© þ((À,÷UXX€c•µð‰»Ý¹W|¼‹ðgôè2 L>ÄÖí˜;kpœ.~¿wÿ| –9 ßø×õ¨©íp­ommÅò·–‹©7QœŽ_ÿçb|âêñLlþ°GʃögššÜíç]ñ‰„Ç4V£°8¯Çå.âcçÎ]hl4³01•¬BêƒÎH¦À]½zñ[5W]uEÌ2€ý1›ÁÌLM¬ ÐWðÝÊ)ºl¤ÂЀ¼ É@sü1Å<2ÙüHmˆ\Ç,ñ¥y†ÓÅôNHÉ;*ñ­¥eÝž•gÜ„1hokÇÏÈðN_± Õ6£Îp^ùÒ¼æ=bi‹×KO“ìNÛ£ËiŠ»"Ë$(øa ‚ÙWÇŒ …þ€â—CŠ_<"‰&»šB¸°ùWaó–P°x!ªëZÐaDajëÛP×ÐŽì,?rŒ)#ÝÖ¶Nc›6tÃvš~ v8Œµ[w##Ó‹[®<Óóó ÿzÌ`gy6Ì«¾¶½ ¯êVT~íë˜ó…/"·t,</‚(_µ ›~ý+|ùdƒ˜gìH ¤7ê Äe<·ù´¨¸è|,h á¥?>y“¦cçþcðûÒÄFlsA^&ò²ý¶�Hs’9w— ÖÑØÜ‰ú¦„CºÕ5¶¢¡±]ðò#UXÿÑ^„.ûôüQvkˆd’´‹‹iv"ʨ^Pä\AAA!•¡øåІ◠n(áÂI ™ý‡õsrr Üo,ïð^pæù(1uÕ•âs8BSS-òòFØÛ<þ|ó  $n¸v.\6 ?ø¯m¸ç¡½èè £/`ªß;?5ßûç9(*ü—æÏ5»>³C¡ˆ¨¨d4æ.=;á1‚M5È4Å®í©²üôûöí†{Ö™f™¢¸¸S¦L†BêƒÏ}ee•¨ï}ðà!Ü{ïý¢F8ë|“·´´ˆ5Û¶}h nÌȆ%K«š¸ ý†¬¬,5p¢à½Sè!4ÍŠäµâ‹5«¤”¦YÎk…%š™C›„øG;ö`¿áxØp¬ ÇtŸõÇç󊲮Ñe²’ÃÊ£õFÿ{Åľb˜„8 vÈ84/¬,@y›Ä1Ìeªßt²ÿ‘arëÖm¨­­ËO;m úŠ_](~9  GqB‡9,4ûb4UìÁº·ãôysÐÔÜn‰e²›a| ¹%`2 ‘QÇ <öHE5ÞZ³É°xpËÕg`ÎÌ2ÃÞP£‡«0W–I‹j­¥‹™a±µë~ös¬ÿÕo?i"ÒssÐT~ íÇÊQdì»Ä؆²YÒ‹VM™í'lð´]ã'ãÈÙg£cÜXÚtÔ6´cLÉTïš9S§¡¡¡ Á@Ȱaf#PÛ‚º²³Ò™îCºß+2ÉJ¼Á`íA´¶ÑnLº%Ìoïûµ¢Ó8ùùÑê*|°õ#.øôQS;µàøØ9}Äœ]oçꛩVAAAAa�¡øåÐ…â— n(á°EtI¯DÈÈÈ0‰ÈD‡È.cGúFÁëõaÙå×áÙûÿh/«¯¯t ^y«Ÿ¿=ãKýLeà×?[Œùú,üþo»ðð“p¤¼µGÇ76 Ÿ¼~¾ø™é;æÄ¤Çc¦ŸWßv·›}ìÄyW~BDÅ…qs<ñ ðÞ& %ꊷÞZŽææû3³ \vÙ%ª¯†.¾øB‘Ågóæ­â^®Zµ&æv,³dÉ"!üQPè/ÐùÇt«ñJI*¤&xÏ•T0Í3í’OzÄ`¾.5QÂKfˆ4Ë€yÌ „èÇàž¯à B€á±íÇ“þ(ô£ß×V5‹>R-)ö±Ê{éW¤¼—¹¯íÚ²B¾‚]æMAá$Þxã-ײSO=Ó§Oƒ‚BBñË¡ Å/Bfn‹p,IŠC¥¢'pÎgPñʯðÁÖ±xö,øŒí«™±¡Uˆ²2Óžæ3)PØ#øÏ†í{ðÞÆ­˜ÊdL0‡V!+#¹Ù[5„º´‡Œh¤1iL©¦½ }æ+gq‚‹ˆàGs\G§ÁÑöŒ-Ãê)sq4':õ¤õåHó{ Û”³§ÎÀ{k7aTÉHŒÌË3~8ÖрܜLq¡p'šš:œÎ™ÁÑ$ì4µuÐÔÒa8|#" å娴{?:Ï» áñs]d/–Þ[v±IPX‹¨ƒ’4Q+((((œ�(~94¡ø¥‚BW¨o„°@OD>±@‡7ãÅy(o¬AZ~IÜmÏ¿ê—ð§¹¹­Æ ÓT–†Œqî}5áß¾YŒ±c²ð£›|gÖo®ÅÛ+*°Ñø»ko#ʵ¢¹ÅÌœ““íCéØ,L›œ‡…ó‹pÞÙ£°pn‘Ísñ·‡EJ°oÙÇNœwåõ ÑÙPÒ¢|!Rá½å”IŒ¦&³¬û}9aœqÆR@aè€÷ïüóÏÃlàÇÌ>G–£±±Á`HÜ×ÜÜ\Œ?N¬/,,„‚B#;;[ÔʃPH}pÀÌ{¦ÐsÈì0ºLùoñSÁ7œóºƒ-ËD1¢á°¹^ýÌžüð|iýÉËèp;Ô+'9ÖU6 Ýè¯ßÊø#ûßÎîcÞÝøxdý6Ë)¥uý((œÌ¨««ƒßï3~ÎtŠ,“œŠ_-(~9ˆëvꛢhºKŒ¢û³ÐyÑ? üÿÃêÍ[pÚìÙH7l¢¡`õ­b"Oõù<"»dM}=ÞY·%E¹È2xSN†S¦C¦aOû}~tdçÂßPëjŠ-‚1ÀЙQË=ŽõaÇ|ÈëÃö1“°ºl6ªr „Mƒíñ{=ÈÍIGv†ië ‡5,ž{ VoÜ‚ æ ´xBhlj3ìYmðÏL~¿^c_Íc ¹YÒ‹öŽÎ€Èî±'kÉ-»vá`m F…ÇÌ´DB‘«éBý¢2ýèîö•™SAAA!µ¡øåЂ◠±¡„? ' œâ XB!¦„1¢û?ÜŸPø3yæLŸ½�»¶m´—UWAiétûóó¯4ã®OåcdɉûŠQÀ³dA±˜† ŽWñâk-®eUU‡]ŸgÌ]„IÓOMxœŽÚr”Ì™3Í_OÅ>'³8ˆ‚Ï}îN( ”””‚‰�Ëi²d Bêƒ÷J¡÷ Aß.ý¤[%QÆBüC¡¶Ê{if¹//—yÍý<†Ó¥3ˆG·Ãm³Ç¢?ÐÚÚŽêÚã{ØŒ¬ÌtŒ(.@n^ ¥Cvz† /î«1úÝgŠ{4Sä£iVÉ/º¢<ZäÞy¤£Ç!þ±K¹Ár°)( –.=ML©ŽsÎ9[L ƒÅ/‡¿<[§Ð“K›§LEÉü#XKF. ïý +6n¢SOA¾qŸ4=’(‰,8ë·ïÄÇ/9ç,š)„EŽ# A'ÍcÊ0mkmRm´ ©ºd0œ§€hWéd¬™<ÕY9Ve-Mv 󳑓™)›e ¸ …8mÞ,¬Þ´ ue“±pÞ<›ZèhGg ˆ@Lç­3¯l‘÷ñšjlÛ½ ¹ã¼ê«ÐsK"¥zÍÎuèâžX<P–„í²HAAAA!…¡øåÐâ— ±á‚‚‚�KBqÊñvŽ˜@Âm¯ÿì×]ŸªÁp$ `§±ûoÿÞ`Õ”ôt÷ŸëAyd$ÜÙÙŽÆÆW_ßx×7‘á`�yþÈà”žž…Fa¨Yêƒ÷H¥ÈíèpKñݜ׭RQ²d”˜§ÀD³&Ü^f—a©cþÿÖA™€úˆ€AL÷(ÇáChjlAEE-öì="Ä@±6ÎÙ—Lš=³ƒT×ÖãÀÁã¨ohÂ``KUö7uÂøx¬RkKà£YÙæý0Kfh–¨ æ=„ó^ü×*õ‚‚‚ BñË¡Å/‚h†E–G1YB X–ÈvÆ”–ày_D]Ù2¼·i+v<ˆ@8dqXóKa5µ´blI:!„Œe!c3ý„B¦ &+Ó½§ÎCÀŸæjŠS£Ç˜äòãùX?n~·ø<9mŽgæÜÙÌ6T˜Ÿ…Ñ#ò•á[ ó¡udñ¡¤0#‹Špþ’ÓÐPÓ€^| ‡jkàÏχ?;Ëâ׎óêo·äÝìšjÃÁûþæÍXõÑ^Ôκ K¾=g„ÙwVí/£K­.4—EÖ9V:&]n#…Wâ>(®¨   êPürh@ñK…øPß …adJ€iŽÒ é3z4ÔGFÉø¸û,=ÿ2Lœv îÞa-1ÕG1vìT{›^mÆ5—åbѼ (t[ÚñÊ[îl?ÕÕÌö¹e3fañ9%<NgÝ1”%D\2[O2Y{TÙ/…—)(hmm…BêYòxú«”—T­™²¹ÈÁ9…¸DÌÓ¥¦tŠ|èœÐ=âó¦N<³³Ÿ˜9}ASs›ÈôãDGG'Z[Ú GMäž³mmíhnnމìœ,¤ge x"žVãœUÕ b¾ÂhWffºpGƒÛÌR } ™~jO<^¿™iI³ba,á•Y‚Ícºƒxì*_ûöšõÀ´H½,ã Ä? ƒ Å/SŠ_ž�è6µ>X¹u"Õ¬ÜÐ|,¼¡ÒS°}íc8r|=¦Mš€Ò’x(F7öóy½xøå•ÈÊHCFZºXžæ÷ tt1:UÜy2ðÞœÓqÞ¦ðD ×õ®Mz}Ø:j"VL˜ºÌ\SÃ\VQ:2'; íøŒsezü=5¯% ££3ˆöŽ€ÈHDyNfΜ?G**±}Û6lذ&ŽÇ„ ãQ›‡4ãtc¿Á';Ú;ÐÔÒŒŠªj”WGCPCpÊ™Ÿz!ôÌS�îàtZtÿ:—Ùýª»¯Uwf5’b ((((( (~™ÚPüRA!1”ðGAÁ¾4JJF`÷Á- …?tÜðÙ¯ã¾ýE{Y}}%ŠŠÆ/³®$t?ûU þs)|>%*I„PÈè«_׸ÁííÍFŸV¹¶»ñsßèV ¬?ŽSæÄ,ó¥    pbÁßf:ÆÛÚÚ :ÈÌÌTïÍþ€³¬¬µH–Ðd °”ð¯pÌÐAQ‹(3Åh`–ž ‹¬?¿Z{×Í)+Mõ ñÄ(Ñœª½­µ5 ööu(2¶IÏHÃÀBsµI”Bs d8iªŒv56¶ˆR¶£FÏkï<Õ¶bg}üéì|!ò¡ÐÊÌäc Äm³„=¦èGh–8ÈáõQ~…Å/SŠ_ž È 5ˆˆd¥/룓yY"ƒ~ŽœŽŽËþµûÖ`ǯaç¾7jJGĸѣq¬º gÌŸ…â‚\ädf ÍïwZ;B‚«ÑAº~ìÃ:Îýp Ò]JyI ®·Ë°¹® ŽffÃãóÙm"×ó{Ó„Ð;ÐDfF&0ZZZ4þ ¢y‰nö%¯ƒ‚¥1#F ¶©å•ÕØ°v#š[[wó|Œ:C:B9˜Œðüs¡—ÎÒ³"}ìk]Ú¸Ç¥ŠÜŠˆ:Š0*((( !(~™šPüRA¡{(á°AO²ûÄÛ>-- ééi(ÎÍ@sc ÒòŠãëìK¯Áÿÿo=¸×Z¢ãر=(+›go³÷@'x¢Ÿ¾¥� ñqï£õؽ¯Óµìر}pŽŠÇ•MÙ]•ð8ÕâÞ1sïe4œ.•HAAAáÄ ;ÛȪÁsj€ƒfyOú) íŒ0sþD2þ@D]‹’RöÀ*ÖÌr_a)bÝküÕ±»±o?†[gFo‘m8g² ÃH‹#Z-+˸ï9™Ž¶ÃXßæâÆœïè n<i²³Ò1jT‘ÈB”k´ÉïóºÖ·¶uÑÁˆîŠÊ:L˜0Þ^ð4^Ý;ŽÁë÷[eÖ¼fy/M³2ÿx„àG±5ˇ£Eœ;štÉèyÍ•ñGAAAAáÄ@ñËÔ‚â—'NñŠ‹žèîY—¤E³þóøœrB“– óð&4í}»×oFfšmííX³iÏ:­Y‘ý'-Ýg‹¡3 \k['>9»3ò°äą̀=†œ@»AwE~K´¤eboñ¬3ÛÆNAŒÌ3Ža‰ã½^¯˜d)/·±±Íþœ,[ošÏ¼œlt:Œvµ¡Ã“†öѧ×¶á‘S °áÐ5x <7B2c'â(/Žúlåwèy,~¨éˆ«xR|QAAAaHAñËÔ‚â— ÉA ¢››‹±cÇ`ÓG{ <Æ�ñ®oÿßÿÒÍö²¶6f©©@AÁ({ÙïþZ‡…s31w–J? Ûv´ã÷Ô¹–ÕÕU}ÙäZvç?~¿Kx4ZË÷bæ¬)ª«‚‚‚BŠƒ5‰UÚÜ FɨH™¾Cw9W4³t—£ ”-ðÂk[]³C„5 O¦HgI™ùG7…@?zÿ�.Ÿ\ŒÂ ?zƒŒ¬tL2ÕÕõhnm3¸n6Š òÁL>–"h8^(¼‰F€ÑÚÚÀVØWE¹v¤vtw0r}¦øG”EózÑS¼y°Zˆ©üiéV™/Í,³fià1ï oŽˆÐG¥¿�;d^‹‚lQW)§    Ð(~™Pürà‘0ðQ×ã(~4Çÿpe.Œ,°fYVkâtN\Œ@[=:Žï„§b7Ê«÷áU`ÆÔ©˜2q<†#4 ÚÂ!fÓ ‚(÷¥ã™Ésá›p* :Û‘ ¡ÓŸ†úŒlojÆñ£Õ5¢PdæÑ¬l‹^Šp,þ ûCd ßr\bÈà„-F;šš›ÑØbØd›Poœ£#¬!X0á’9Í<úˆI€?Ã}Ñá(Þ{Ö½0ªîWtÞ¡®™}ä•¿".TPPPHM(~™PüRA!y(á°GO31SLqqrýûh®ƒ?§0î~ Ï<§_p9V¿õ²½¬¢â áP)6|æ×+ÔñíVàá?G~^ÏÃMa|Çè›@ rB¡�*+¸¶;ë⫱øœ‹+hÜ«¼t……®l?*³‚‚‚Bj‚6ǃfÃH«0ø HVÕÄîØÅ¬ì0œ‰ˆ,Ó¿¥1…!bbͬ+¥[5Á%èïá§ïÀ_0 ½EN®a$ÉɲÎØ¥d{): ÇâËZ 'Çà"#ªÔË|y{!úiê â¡ÝÕðxýf¦ÍÌö#ÄV03þÑÇ*ùÅd‰6M³{,Rò –Ç.ò     p‚¡øå‰…â—)�f× ;2Ö8”>œuiOôÅUÇQ,£�Á‰K‰§Q}@ùVlüè-|¸óMŒ5 £ÇŒBQa!²Œûžîó!-;èìì¢ú`‡š[PS[‹ò]—‰é“&"'Ë,­Åóz5muÁkA”õ ûsê ÐÑÙ)¦vãøû0[e›ñ9¤ùÎ.F¸°¡‰‹.š½`,t†}u‘뵤úNêÍsõ8 ’t-zS‡b p³C-,o‚‚‚‚„â—'Š_*(ô Jø£ Ìú3ɈnÛ»ùÓ%ÜöóÿòlZõÚÛLÕ/…+Gî„ §ÚÛ¯â?~V‰_þt ”ÆÄ¼?ø¯ =t-//ßcôadYzF&>óßïöx-Æ~s§—‰{§    04À›Ï0sðLƒ®ÂÀƒýÍA3ÿ*ô/Ìì/¦˜‡n!"‰QúKf¶ÑlQ‰¹½È<#÷ç¼ðÚPœƃ;ªqË©£±ptﳚլb—¦òçôù¼ÜßC–ùÒ´+kÉ4ÚPZZ‚–æ6ÑÆœœL«lZƒvT %¤ÃËRb²¤³IŠþ¶Ü5â3·Ö¬ì?R .E?‘ ?r®Ÿ`e”‚‚‚‚‚ Š_>¿Lè2ãT¶8³ØDs'ÍþÏ"6Ñ‹*neðÓиùÆ4õåØW¾ ïgëhÍð<Š%¿¼~3ubg‡)Ô [©n¼Æú¦°Ž Û>Êœ"§ãvaŠ}Ba„t“K NìKƒž– ==zF™¥pÎÃ8:ÿú)÷8D:Žº]Ð]JM\·ÜëvaWHñŽnçòŒÑÇ@‚”@Ñs°³0Ùeņ¿|(~© Ð;¨oŒÂ°BO³ûÄÚžËÒÓÓ1rd 2÷îC ¥þìü¸Ç1º7Þõ Ü÷›ŸÚËš›ëPSSŽââ±ö²wßoÁþV‹/}¶ ÀݪÆò÷Z\ËjjŽ¢©©Öµì–/ý3FŽ—ðXæzdj1¢XÜ»X|œËT …Ç ªª Ó§OS¥éNzp�WPP€––U7{€¡êa4ÌÌ0¦3@e½„Ã"’?Æ8…AVúÿ°]÷K8 XZÊý@è|øÊk»ðúÍóíïÿ ’Ôdeg¢¡>Rj•mþœp]“•™ŽìŒ43J]×{,DÚPш74ÀG!³y-ÁÈ´Ä-,/:]–ZÓíRÂ%$„YºãÞÁò©n'é¿cÇG‚ãL: ,e\‡}ûö£´t,F …‡êó“Š_¿L1,Ù徺á'ŽmœZ¡ˆÚE‹®fç—Š)pÊ¥Æ9ƒðZöf4u4Aël7™U==Z8=0þ€PdbL]ØÞL fe4& }àË0þ¦ÓÌLœ !n¢Å0ànl8Îõ:¯8Ò.ÉŽCÓíèËÝТ÷¶±³k*((¤ N´­Vq×ԇ◃Å/z%üQPˆƒüü|”•M¶]¢ðÔ3n{Ý_Æêå¯`×Ö ö2–«ÊÊÊ5^R‘ 4¾¯V”ûºõ†BœÌxôéÜóPkY[[³Ñg]ËfÎ_‚k?õùn×|x;æLŸ$BªƒÉ'Ÿ|ZÌoذwÞùiá\=±fÍXµj˜¿ë®;»úîÖ+ /ðþR¼ÉºÙPè?°&S«(™†#ŒYÊ ®Œ?1K ! Ì’Sa™ü‡ÛˆÊ_^ó€¢ä—ŽýÍøÇ·vã—ÎŒÓ�-Í­ho뤬ȸï>dge~’$Þ1F#²ŒmC¡Z[¬Ì:y9ðÇHMKo›QÝÀ¯·”Có±}‘,?š3ãét²ªzYë­ŒLòäŽÈy™ñÇ,Ï&?(H<÷Ü 8z´\Ì_xáù˜3g6NfPõðÃï¶€à|·Þz3Š‹S3d(q/òiòj–z¾ãŽÛ\ëºësÅ1O(~9pPürà‘LpcW˜¢]‹Ÿ±&ÁžöŒ”¬Ûòu31Ž=ï‚Á¯Âéy�'묚£-á8z+O¤™µg,Aµ½SÏ£EÍÚºŸˆp»ËÉ䯱Ö#Þg-²›î\îËýzÃOTPb À}÷=€¦¦fц›o¾£FJjßâ™gžó Ðüä'o>á6¯7ß\Ž­[·¡·X¼x!Î>û,ô†ùÃþ„ööûóg>s{íï/¾ø2vïÞc>ï¼e˜?R 'ÚV;”Æ Š_$¿TPè;NNO£ÂI‡Þdxñûý‚`ezCÝîëõùñíÿù r "‚ÎÙ)J9ñ¿¿«Æ«o5™ãÀ“pzŸöÿúM¥«O‚Á€ÑW¹ 9yø§ÿü½èÛîå £¨¨XÜ3'Tf…TDCCƒ=ßÒÒªÒƒ¼óλøÕ¯îS8†BïÁ]^^ž˜¢Ózö¡ìO5hxè–êÇf3ÒY£I‘ ëè’hžH!ŠtŠO<b=3ÏèålÜ?͇g÷ÖáÁÇ<?³õT¯F}}#ùêÊ:ÔÖ4&íe Ø'??#JŠQ4¢™éèέ‘ê``õÿ®?„–ùzš%ô±¢Æ=VßSô#îûßcݳÈý4£Ë#÷UGä¾ 'N/9ÃN®S__ßeý<$Þ™=öDÜcìÝ»Ï~·:tCŒ¥Ÿ Ohll‰ÀÉÄWR¥ÏRŠ_ö/¿L-t±i‘üèahÆ_Nˆžtó¯\§ÅX¯ñaMæú°É}œÇpL,OËl6º9¾k™c^üuLæ±#Ç¥nçÑu÷q#ç ‹}å_ݹ}X®7/Ç Cšîî‡.}#-&÷qtÇrÝÙö1ÂVûîåºó؉î] ßóóÏ?OÌóZßxã­¤Dh´o-_þ¶˜çõ]tÑ…'m ÛpEOTädäõ©Žm«UÜuèAñËþ…â— ýõ RPH�RfÌ˜ŽƒIlË’_ßøÑÝøñ×n³C@‡a¨Þމg³,CØð}ï§Çű/¹ '^y³ÿn\{Ø‘Þ6‰>b_I°o¾þÃ_cäØñI—÷H x† N9e¦ˆ‚¯¬¬ÄÂ… „’]AAÁ ~/81Ò‘OíííPH¬=Îè#e|\èvù-mgõ¡à$lg‰D3›Û‰¨l:W(B ›œÑÌ>ã5K<Ró{öÇï®8€ù£r1«8Ëqr­­í]ϰþ|~~6üiÉ= ¤S̤;Jè±k< Ü»ý>jì„߯)ö1Å?šÙóüXáë&•ÔDhŒ©ëñX÷.r?uµm+¹\±ð èäY¹ò}äææbÑ¢…8ÙÁtðgu>úh'ƇI“&Ba`¡ú\!¿ì¿Bл~°mfŽ’Xš#“=#è©ã�V*M"Íý1Ö�züúXáÛ[mÑâε¯¹A—M4yNݱ…Äã¶z—÷g;Pؽ¯#Ó«½zb"'O.%[÷ìÙ‹ªªj‘¥;^Çl6 b~îÜÙ=:¹,ASO=cÆÄ.ôî»ï‰Œ6Ì~/«3)˜Ø¾}Î<óŒ¤]Ü~(ÎO´­Vqס Å/ûÅ/úJø£0ìL*\ç6±¶w.é+–,»Wßzž{àOö2–°:|x&L8Õtú€‚ ßþA9*ªFâ¶›Šp2àѧêD¦§èÇÌŠô‘Aˆš]Û~ìö/aéù—!YP ,K�ä\¦²�)œhx Ç㥗^ …îÁ'ÖWç�š)t9˜V™•Ü ÑýDcÌ 'Ñå½`}6}šèay!#œa¹DYc¹ ˜}Æ*ý)bq{Ø‹[Ÿßç>> ãó2ÌçHOOCK‹»Î<S${}^ômmh¥Ã:–‘޼ìLdd±êËjðì:øüiÐX.ÍÊô£Ãkô±•IIÓ`UíÒÜ>!û:Å?R8„Hɯ$!ÅDÃ4T+cµK–,“ÂàAõ¹B<(~™¿Z°ùgÈÊ<É/YjÖUžTs©fÌ ÜÇV°D‰aº,Fd½æ<z#r‰¨}"fZÍ>¡¥¯7ÙX´6I‹>gÔõˆE¦G·§»Ïë˜5»@wu…Ò:h—+tµ)z½.’õª[N Î?ÿ\:tHd"Y½z ¦OŸ&„ݱPSSƒõë7ŠùœœlœuÖ™HPôOø³jÕj!üáïB ±QR2BÀZ[Í >Ó¦MMj¿mÛ>G‰ŠŠJ¤*RÁV«¸ëІâ—ÉAñK…‡þ((8лúÙn|æ›ÿŽ#ûvcÃûËíe-- 8zt7Æ›a/ãiþ÷·•†C%Œ/}¶ÃÕþÏë¼ûO•øû5]Ö=º ÍÍîôÿ‹Î¾·í_ÑW(ñŽ‚‚‚Âð„rP …Ä�šåÄ÷÷pPs€Ì÷Rr’R¶¸\fü‘Ž«4”f9]Lñœ×,¸å`Ð-AJX3Å*!‹Ÿzù7€Šön|îC<÷ñ9(±Ä8ùyðú<†áºS”HKOCvV¦±»§ÇN†6ãû÷CKkDH”‘‘†É“K‘‘Þ½ø' ‰k;Q©ýWkÀŸ¶‡ÇçƒÆ4ÑìCM3ÅSVÖÓf§÷1@vs-aÑá23tåXÙ›¤óèdô(((( 7(~©øeª ¯AŒ¢²,—…‚B<®ER7ÆÎäc•6u}†CØãR¼ ’È>žÅŸø1ºÝñÑQÇìº\¶Ù™KQyh-ú€zœ,=±NæºtS�¥;?ÎóÉ#Ù:©?Œ'orö•`Ö†þ–Ú{ÜÊÁŠÙÙÙ" Î[o½mü>Åßk¯½:æ¶o¾¹Üþ½d™0•ÝzxaôèÑ¢Uss‹(÷•Œð§¼üêêL»?3H¥²ðGA¡?¡ø¥â— 'Jø£pÒ ·¢žž¨¼>?¾óË¿ã{_¸mZk/ol¬Æ‘#:JK§Û™ˆ?ß[]{:ðƒƒü¼áõâkjá‡??Ž7Þnt-ç} è‡}âÄôÙ ð/ÿýgч=Ao½ƒíœaªÇ?ÿùo‚à1Ò䦛nH¸ýÁƒ‡ðôÓÏŠù¥K—àŒ3Nï²Í±cDZeËV?~MMMb`Í HLÇ;{ö,‘.18øzì±'Äüå—_*Ê¥ÅIèo~ó[1?o޻Ʒįýâ~ž~úiFOmùðÃíÆÀ®Nî¼óWF¦D`JàU«Öˆù¯}í+¢žòÚµë°k×nãÚš ƒC–H½ÊóH’ØØØˆuëÖãÀƒ¢3³Œ?‹/DIIIÌóÈ6Ï™3^x~Üö°ØOÅÅE¸í¶[cnÓÒÒ‚Í›·ÎÑ¢-¼f¦;v¬8>Ó³ö¶ ì{FѰ?kkkÅà:-Í#Fˆ6ïo_ÉrœƒQ LÝËûĚ،h`û?Qô'øâ5° UUUâ>dd¤ß³1â™™2erRß÷èï÷),,Y æÍ›+Œ^NÜ}÷ïĹßâꫯçVèÈA£‚Â`£'\2⊈Sú fé/͉mGkkfÆMfü1žw]ø äs¯á`s·¿øž¸v²ücòòsÁ×nXøbô¨É£¥©Õ%ú!((â»6á…J,Qv"„?[ªšñ_ë’”CóúM5ÝÇèS¯•ÝÇ*à «š×™Í'r×Ì 2³5I'XDÔe­–OP ‡{ï½_Õóòr îõé˜Û8yÖ¢E pÎ9gÇÜî¯ý»à]……¸ãŽÛìåO>ù4>‚qãJqýõÜ‹%˜ŸQÒ—\r‘%í<×]wÝ)ÞŸ|Ç>úèã®s‘gýêWwÛŸ¿ô¥Ï㥗^؉§žzÆž_°`Î=wY—vWWWcÓ¦-Æxëˆh?jÌÜ*ßáñ¢ÓœøÆ¯}çÎ]¡AnD#-¹,ßç,o[wÙÑýJÈþ县þ‚[‘°ä—’ÓÌ;§Çc˜¾ðòqöÅŽ¡¾¾¾Çmé/ŽÖ$êóXíäóÌò ä³>ŸO<?Ìl@>œL4*ïLJó@ò;9nÜ8ƒÏÂÈ‘#»=FoÇv ýÅ/†*¤ØÚã !M á¸ÉH î8¹O¢‡˜Ÿ#KO iâêƒ4‡)ÑÁ"©{º…ó0Îr\ºæfsRÌ£éî¶:¤;×9×»´VÑ=©# !¡ë—ÎС¾ïù~$g¢í‹¥¿ø^r‚Y]¸žàºx¼"Úűmhää‘´CÅûŽÅ/cïaɯ¼òò¤3Ó$ƒd¹Åûï¯Â¬ó_øÂç™™wÛþà ½åÁ=ïÛ´aÃ&ÑÇl«¨’�2Ûmµ¥¥¥ ·íϾeŸòÜ»wïÏ™™Ñ)MØ)iÿæ³ë;˜¬½¸§¶Ãd‘¨ä:ÚX?ñ‰ëDÿó¹1yg“¸>rÍùóç©Ì«)Å/Jø£pÒ¢;!P_aé™øÞ¯ïÇ·?s5ïÛm/ol¬1Èçvƒ¤bðÈ ÿ•M¸ùÎvüìû¥˜7; ÃÛw¶áÿýû-¸–‡Ã!QÞ+:ÓÏØ “ñ½»@FVïÈ1ÑÝ=;ÑkjáÀ Ý ’h`—ˆN7ËA #m8Xv"liW¯¢™Ë/¿lÐÿ /¼$ðýÖÖV1P¯­­³—qðÊÁ]}}®¸â21¸yþù„!²_›p’°¯ºê Ñß^ë+¯¼ê:?Añ œ.œeËÎAOAAÑsϽÐ%†ƒÕ#GŽŠiýú ÂQOà4ç aç…^ýîœØ4ú0]î@Õêå ûÙgŸ7 î¬b2ý0':)ṵ̀äM,Äû>••UbÚ¸q“1ð¿�3g΀‚‚‚B²0Å<€]ÞË)±Å$¦‹ÁpÙÿ‡Åœ‡' ÝpÜh4‰Ò�ºUú f90›kÚqë‹;pÏå3ŸÚõ•òƒ±£ÏBÁä¢Òüéf[z¢ƒa9Ø Sa;yé¼òyÑÓËØPÙŒŸ®;Œ Á³}Æ{GóøŒ>óˆÒ^šÌòÃNÔd¹Íe•ÕGJ€àºO²xCD$$³ÿÄÂ`d*+›d¼w7 £/Å×4<Gƒ¼)Ö¼4Œ“o‰8߉ï¼óR4z¿÷ÞJרŽ:rN›6mÆœßmùòr Ššœ ­­]/2=uçäè š››…‰÷Ò r{Nt¶]wݵƒ"ª£�‰AÑK¶…|›m‰gÈîŽ6à}ç¸ãèÑr{E;íí•‚'óygvƒDœ›ÎŸ·ß~·Kä®äÄOQ´ÆqA¬ßƒTÛ)(( ȈzDIŽŽc-±ä;Ñ šH™+ÍõYï²¥mÑ਌¥!ªÆ•+yOÌöv³P‹×äè´xùvô.óZ¬Ãi±¯!²¡«-Ž^УÖ;X¡ë¼Î„K£r˜ÐSÂŽ¡–%ò¢‹.À<,Þso¿ý&Logôa˜+VŠy’±<X,ijA‘{r"?å»îšk®P®•JèÒ_<8™¶JáAÎræ™gÄÝžA»víóÓ¦MÃ`Buò׆wr[[»xÆ8ÑÞÎ笧Y©RÅvÈkxî¹çų"A¾È1 §xÁà '”ðGaX¢§Ù}ú£ÄW4r ñ¿{ß¾ãjTWD<Ë~8°Í$j ö"ŽðãÜõµƒøòçFâS7ë†Ö P"ÔqßÃ5øý_+ż{]À §ÛL³kùˆQcñÃ?=Žü¢èoôt0=ЃïY³NFr‚Îf¯‰FïÙcnG5ô ÷Å_ƾ}ûÅ<#IC'VlpÓÑÑ)Œí$´˜çã ŠQÒ¼F¶—‰¢Z†s:>‘Îì34˜™„L1Éĉðî»ï '!¯}ôèQâÚé@`¯¾úšˆzˆz±tªñð<4l,X0_dâ<C4VÔÔÔŠ1èŒhNt²<òÈc¶ã­´t¬ˆHa`ö>Œ„§Cˆ‚O~òæGïôÇ9(^{≧Dð{Ãýiü¡Àm:8x¿x, ¹n¸áýþýb-f ØŠ “’B#:èlâ3CG ¿40± ±œSÉ|Ÿ(ðzõÕ×ÅóTV6Il{Ë-7ŠwŸÜN.“θd³])(( oèLjY"Êæ¸JYBQz*l †<¢Ü—™óüù¢mÏëv\|PÑŠ=ó!¼âŒÉé‘ezzìã0SÇ@¼Y…ì6ïT_FZ×òq°òXþgC9ðÀçO3Ë{‰ˆj«¼—&³þ˜}«k‘Ì=Î{¡Ë0og'Û”ä}Òìjº%à:‘˜2eŠm„çû;ZøÃ÷ßÛUUÕâÝ-¶pfÚ™<9v¤69Њï‹÷%#ZÉÓˆ‚‚Äš’’¸õÖ›Åüƒ>"þúý>‘eG‚Æ÷ .8Ïæt«W –ŸsÎY‚cÑÜ’™Ù‚Ù!ù'÷"?)//|„ïð×^{C?:BÝ ò7¾ÏÉ?éØ`ÿPpÎs°oÈ›^ýM!þSkppÞyËÄ5Ó9H.Ãèf¶…<÷ƒÖâôÓ—&}ÜÞò•åËß¼–ÜžãЏÙ̬6q,FßÇrúôG °_èpãx‚N1r^òa°¿y ?þ$n¿ýS‚+Gƒ·wß]!æ9`”ø¨Q£Äï³ñ¤³iãÆÍ¢ÏceÛJµ±‚‚Bê Y{%ßqü˜6BÃæc–ØÅ­ZS£w—v'Jò£ÇZ§¼Å½Nsü/³ò¸.Õ.GG¢Ê\qôJ‘1B:Ü5`‹¾Å"g»µ¨ÄkŒ{ÖÑ£ˆÿÒc¶dr±&îg²AQ©$***™µŒÇ÷"¹K€+W®dÄYg3ÛIw6(ÚI)f íá‡Y·{›5e(¡¯¤?ypwàïË}‘ó““’Ë‘Æ£Óæ-…)Á FfT^÷3Ï<g‹~ÈaMNŸ)ú’Bmf­"·bß_|ñ…=9|¯m‡ý rì—_~EœwÉ’Åç)Iü¬^½Fpô5kÖŠŒ“ƒ‘]AAAA!õ „? QèOÐÈ1ãð³{ŸÇ÷¿t3Žìdþ¡ðeÿþÍÆ@g†A>#Îô@@ǯ_g^¨Ãwþq,–.Zƒœõ›Zð³ÿ=Ž=ûÚ»¬kkk6HðNãÝëFŸ„þþQÑWý…TŽœ¡`%''[ 88 ˆ'ü¡XB8Pq‚ƒ+9Ð(+›$2Û8 å™0<$ü¯¿þ†$„�F‚ƒªùóçNŠsÑà�õÖ[oq ž(®a4£^ètáà’NŠ$˜Ò”‚ :¿hô¢ñ€©qû<ˈÞë®û˜« L­Jçt–p°ÛáEOÒræ™§ã´Ó–¸ÖÓ™Àó³~:t40}qOÐ×spPùÚk¯‹>à³G„tÈIð~q°+SB3{ÐâŋПà@ß%~çY²ŽúèëX¾ümÃAµU8—è¨Z¸pk›d¾OsçÎiuù}zã7… ŒÛHg'™Ò‘F#ˉ(m£  ú0}2ã‰mñNf£1~T#B 82ÅPÀÂåaÍ!þ¡ãÂgÇhïªïÄ•OmÁCWÎÄÌ¢¾óǼÜ,Œ[ŒcÇjívŒ1>çd\™™hþÝaüæ2ë7‰ßÔg÷UãOÛªŒ~Ñàõ¥‰Òhœ(ðaÆ$Ó·¥]iþ¾ëpfú±2ùÈ{aª²Ì,?0K5Ø÷ÉvZÉ»)Y'–{Ž;Fˆ²èt¡Ñ—|È )ŠÎÏ7ämt®DG¢JáÅcÆK2÷0ÓKO¢d)`‘ÑÊ#F‹d~ŽŽ`–ÜÏ™ñ&Öv3É’l/ùˆ“ïÒ¹AÍw8£`ßzk¹L°-±À>aô¯3Û0ÌJCJñß÷555(..Æ@€B ®bγ ÷ÜsŸà"tZp ‘옧·|…Ï …YÎg¥;è¨{è¡GÅ3E¾ËéÓm°@‘Y¬,C¿2ŠžýN!3a:ÁgO‚ ŽMœby–áuQ,ÏgžcrKyOˆTÛ)((¤.œ6Kç¼|'/˜Ž§6wšbó˜in¬ãˆÿõ.Ú˜®º—xYuë]£¤@.=ãÝ m´Ø›DÛmõ.3ˆ¹®Çا›ýt-~_FC‹½œoÉ2Ä=sò'ç»<Õ³�‘{ÐÆÆ�/¾Ïø.§àAf?!?¤(<zbƒ"Ÿ¥Íïc»Ã}å ýɃ»ƒ´R ôþû«Å˜€ü%ž˜H–ùÊÍÍ<6^ÆÑþÇA%gu†ÆHû–•MvJÚã÷ïß/iÉò©¾Øû ààwÎcSœÇñ ³/(á‚‚‚ÂÉ å™R8©p"Q´üüÞ0s¾{PtÆõ­aëJ|îÄ—¾y�ßûñQTT²Œ–ÒÓñŠ þí‡Gq×WÄýÔÖ3È÷–.¢Ÿi³æã¿ïIˆ'j@ÍóÊôªŒÐÐ Û·ï5=ˆbD‘™™! 鱌Â8÷Üebžƒ1Š/3õ¦¤U<0%it–#^§sÐÆA•Sp#á4 Ðy2Ñ#¼?±Ú@CÝŸýì§…c,Y0²GÞ+ŠÄ¢!4ŠÐÂA;#¥z‚þ8…i4ö§Ÿ~ZÑÁgý’K.²ŒŒ†îÏçuÐPíP’à÷@f!`ÊÝh$ó}bÔ6ŸIÞk`˜•BAAA¡7ÁÕ–œÄü 6ODDBž¢y1ÃÆ<³ÿpøÆß)Í'¶×…ÀÅ'¦Ê ×?¿o¬C_áõ{1ft fΘ`ðq˜9sF,2N3p9¼Þ®CÓè²9Ñè ëø¿-åøÃ¶J*K࢟K‰þóX¢ÏìgÙï‚ÂztV³û÷¾7Öör™®[" Ù�yïN°Ÿ†ïÜI“&‰ù#GŽ®ùYZZ*æ£ï܇ûeee ¹2£c{š À *l7ùʱ ÷4€ËˆtY6Èyb•8c_83ìP3P H:VfÊ‘Î4^= FöÇ€Q´B! A8…PNôG,Pˆ+ ±hÑB;»sÌHê„| –ን…“Ù0ù),,0îáœ.ß­TÛ)(( =ð½L.µ ¬�ù™a‹·˜šÉ'uùO‡{’ëãÍGMÑKO²&7¢Ö¹v3Onr,¹Þ±Lr/ëŸ)À±&÷Õ˜ë£.Ê<\çj¼ã dûåa£Ž+Û Çyí¿îí¨ë×o­ÍÏÐ1oR¾Aßµ”àP½ßO,aD£St‰×L0ËÅBOlP2hŽŽh~1Ѥ¿xp² ˜H ¾¥¸'•••¢ì1Á˜ñÐÐÐ`ÏóY‹fÕüÔ§nÁç?ÿ¹‰¨SÉvxî¹çÄ<?¯YÚ¨x¡•‚‚‚‚BjB Nj VdEn~~ø‡Ç°èlw IŽªªdl‡AÖƒQë€^©ÇU7î¿ÿäXN Ô™Ž â¿s »e^z­¾KÀM(×vüø¾.€y§/Ãÿü$ò &Z–HÕÈgŸ;vtYÏÁœŒÆe$¶3ƒB)¸à "‘Á€#Y’£?w‰@'Rf9‰'fa$­ÄÈ‘±k\Ó¸.¯›Îˆ�…N£8âÞ)\êi .–1“ߕ¯¸â2Õ?çà1Þóx]r½Ü—F†þt”1ÒL^³ %jƒ41ÂÌé(ëÉ÷‰ç¸é¦Ä ^EX+((ôf))�Vé/ó³%0‘¬’R¦8Řç_!úñXâ–ª2KX韘(ª7èâ¯îÆ÷W@g(Œ¾€Ž‰ìœ,äçˆôè-ù÷<¯¥¥¹ mÆo² ßIÏpÿk 5Ç[;ñÏ+à…ƒ ÐüiÐ,”è3 <²´—×ìo)}êÙÿòDÝ =¶HËvë8¶ÇÐqÂÁL,3F²d€2“£meäç¡C‡\Û{Êl“±Ä/,#ÀˆÒ r�Ywúôé ËA0CÏ­9Ë™E#žƒ€ cF‚eÒ ‰ÛÉCñÇ@#Q9 Qâµ¥?8Ú`‚ŽÆDcE'¦ø]‚׸{·É‰éd‰ AGÐwÜ&²£:³E¥êØNAAáÄ /v+îK[ÈÈX26ˆ®ê‹Ü„ŸÃÖäXÖ#Û„­õá°k½.'Ý-Øq¯g&K÷ñ£÷³÷%eÕc/5ź&k%2Û-×…í áÈ_³­°ûB·Ú9\mµ'y}Öõ@%\2'Û½¤4ˆQ%…¢di_ï󉹤´iÒ&3 P,/bOlP Kœ ﺾpþæÁÝAÞCž«¬l’}¼ÆÆÆ.ÛJA¯-:‹ý@ÂYmÛ¶íˆ|H{ž“S'ƒT²RèåäáÑׯÌYÑÁ '”ðGaØb0Rk–¿‚O{ n;ïT|ðÎk1·ÉÈÌÂw}/®½í ]ŽßÔTköõ"3N4‚AÏ¿\O|j¾ûÃ#Ø´µ f93ñÜ·´âß~p×Þüz¬]‰tCC¥qMŵ9ÁkÿØí_Â÷û2³»Ö'N¶?ãa(  )á`™à�8:šƒg98‰ 1E¼Äøñ㑼Fv›ûUc ÑßKñGÎ{”(]ª!u—) ·àà\žã•W^éû©ÌÁ`_²ÚÈûËcËg¤¿ÑçÏëwwïÙ€ú3b‹ém%ES__w¢qMBÖž}Ÿú¶°Dfü‘+,щ)8ñ˜â™ Èÿxż(ae‰àõ›âŸ_ˆ_þ²½ 7¾ðŽ6uàD ñm§ñ·'H7Þ)™YB�”n8¸ãezûH=¾øö^ìlè€Çï‡Ç¸nÍgeúñú¬>óØ™"¢-ÒÇÙч°G·û_øÆÂè²N×£ÄYÐÐû7ÿ‚ÉM8`/gä«ÌTèþ° “Sh!³ñ‰Ä'©¥N¡¼x§§§%äMMMv»ëêâgÄrò…Dë=|®{fö9Ñmp:O¢át0E·¥?8Ú`"^Y; g@‚óùá3H§ ÑÛR ©:¶SPPH-$²U9×ñB{ÓE3<HÓôˆðÄ5Á%l±Å@®eŽù°s82çD‹oàHf}|§�É•Hîwv=Ö2)¼AäZ¬íô¨íbS>fXj‹sß8‚£pŒíýæj›Žtƒž]4Ý#îóý™ì}M5,[v¶ `ö>–‹‡žØ XމUˆšš#Lô…ƒô7î æÎ#þòûõ‡ÜOH–•MJÈ'û ^YÇYêê¾ûÀªU«­�‡ÞgßI%Ûa¢±!¿?„ÊV®   pr¢wE=†0œ5°û øé·ÑXoHþð“Áiç^s;¯á”øì?ýs–œ_ï«hjˆ7™ñ‡™qêë+1f̃¨¹‰q(¤ãÅWëÄ4z”—]\€ë®*Æ„ñƒc|?^À+¯×ã©çkqøH|'R{{‹q{ÑÚÚÔe]VN¾úýÿÅY_DH¶?{‹T@SÐÃjŒ(+›d¯c­a‚‘ÅŒu‚)r%X'¹;Èm˜™†„¿·µœÜ`ëk¿þú"“ ï¥ÌÒÄ英cÇŠ²ÌØÔ“LHòþ2š·¿ë@÷ç9ä1’ÉhääG§&î œß…{î¹?éýÚÚÚb#™ï“‚‚‚BÃÖøX‘á†Y|ÂahRücðVïFŸ5z:(d¡Cå¿ô ±—ñAóËBâšÄúÊvœÿø6|iÞH|yÞXø½ƒóá1Þ/i†:#½ç<ÕŒHõZYtt8U5UmümÛq¼~¤Qô‰üx­ÌGF‡‰~¢ Jô£fö'K~éüãœ7 Õš¹òtΚCˆ¥ÉlLr;D–¥hЧø€¼ÒÍ+çYfH¾·9O‘Ë}Éì=r;c(” p¾Ãׯß(¦dàäÑHe'Û‰@oû£?8Ú`¢;Šßïüžã)gv#ç|O³|FŽ¡Æv =G<»&¯˜™oîÔQX:¡+ø"| Êbïé8„æZk ›u)oÖºî€sλvѺn§'^íÚL‹ybS`³]ñl¿ÖÌ ìºY—}}`7Ù&ƒ77?‹­¢÷5Ö/Àœ©cމ÷»=”8õX†ê½÷VŠÏý$²-õÔEqm¥ýi?JUôžƒô?î $@ ƒ >üp»Èn#Ÿa¸²½Ä`–ù"ø|]wݵxñÅ—…ã5kÖŠ‰¶ÙQ£FŠ,©l3¤%‹T²ªñŠ‚‚‚‚BwPNzÄ+Õk"•Än²üú±·pÊü®ííÍØ¿ ÊË÷D96!§çžªDÆ«nø?þ¯#x}y#êCè¯2^-m:Ö¬kÁ¯ ·~v7®øÄ1Oôö–—ïÆ¾}›cŠ~¦Íšo\ó›ÝŠ~º ·¡ßïå�bÚ´©bðFH¡Á:È2ª¥?Ò¡:¯½¿o';ÊÊ&á3Ÿ¹_|¡(… #ž8Àe=ò×^{<ðPÌ´·Ýa0žÙ¾œ£'Ò@]KoŸgñ¢  jˆ82"d„E·~?eé)™­F3E.f9+ÍüX‚!óÌþãC›îÁ/6Và’'?ÄÊ# ,x6äåeÃoq¾"d\ÿS{kðé7öâõòfã’ÓàIK3³üX×­1Û‘áÇcÿÕ-ñýÀƒH‰.qôèŒKºµODôc.ƒÓçcÿÕu§CìÄ¢¬l’øK.) Բ̦3‹œ—ëXºJòÏDe¾R ½¥µŠ <†GK¦½r›=®Tc;…îÀÀ›qãÆâêSÃÈM³RÛ8²Ý¸³â˜“fg­qd¿q0¥.;$:¢²á¸`-Ðãì¯'Ú7ê0Îm]Ë[ÈãÚNž;ºézìóêš½›õE®Cwì9¤Žã\=+ŒñãK5óÉ@ƒ‚‰dãɾCO&aCo9H*ð`)ê¡ ‰6P‰íÛwˆ¿99Ù® ×ÁBAA>ùÉ›qíµW »:3RÌìØq¬Xñ>þþ÷{ûTöLAAAAA!•¡Âƒú_ú·ŸãîïS8¾ø¯?OjŸ£KñÓ¿>…gïÿ#ùã/ÐÞÖêX«£¾¾BL¹¹E()ŒŒØÄ£åxòÙZ1y çÏ„ñé(›˜Ž‰8eˆ¿ÙYcò¤Ûƒ¬LSï×ÚFss-­!c ãÀÁv:܉ƒ‡Ú±ßš‡»Itt´¢ºú(c—8ÊÈÊÆÍ_øG\û©Ï‹ŒGÉ 7ý9ÔÀ(ÖafJÔ}ûö‰ù8Ët¨ŒD8å”™]ös¦f‰†Â„çij2#d(2rÌ“ÅÉlPN¦Lû”I)Òb9 fþÙºuޝ@mmˆ4¹å–› äýetk1DÖŸþ8ðŒìaÊàîàܦ? ]ò:ølùË_DoÐÓï“‚‚‚Â@A·ƒ†-ñnf¨Ñ-'„f¥¦Ñ5k>ì1çIë4ã}fDwXˆZĦa¯y4êWŒm÷5ñÉWvãÚÉøêü±˜Z‰¡�¾‰—®Ã=;ªp¤5(2úPìÃŒBââ½– G3Kvi«_XM³r(iš•‰óf¹.±¹nfSÞ.Ë‹ÉꣻÔ=væÈ}mŸR‰)1‚õí·ßóõ0óà‘#¦¸gÒ¤Iövœß´i Ž5³ʬ…ÄPþ0j^‚%'.\�…Ô@p´ÁEr‰8jGG‡1V3eÎÒ&Îg0N ƒ=¶SPPH}ÄËæ½ÜùÙ9O[ÓèÑ£qêäÑøÄœ Ü»ÖëNˆãÔT8„*šEp䦚î$<Ö|=Ft& Xésbì¢Ç:"çˆ)rdé±÷ GB‹}ú¨Íc®³û" W›¢/ÑÑGp­ÒÝ›ÁÔçbv3'Ù¼Ù~+ƾ UALOmP2ÓOoíG©`ÇL¶ ýÁAN¦tÕª5ÂvJ[vYÙ$qïŽ-·×Ä3›Lßò¼l'‚™ŽÊËaçÎ]"#QGG'^xáE|úÓ·»¸X<(Û¡‚‚‚‚ÂP‚þ( kô¦¬—sŠ/H`õáhðÆÿºœvÞ¥¸ÿííè)(„ùøgþç]u=îýÕ±ü…Ç»lÓÔT+¦œœBŒB M‹¬‹B x8 $èXb›X–¬¹9~}à%Ë.Æþõg9fz‚žôg8d€œå”z3°8h‚(ü C":‚Y€öîÝ'ÖÑq+íhqq‘=øðaQŽ!øKgKS9a–Ñ0áLYá˜Z×ï÷Yir[n×›kgÍvN§žz žyæ9ARQQ‰ÚÚZ»”F"ÈûËß–'Lˆ_;º·¢þ8Gqq±þPÜ$Ekñ ³ Èýú ò:x/“íßxÇ ºû>…EÙí¤Š>SPPèŠ(ë„éʈˆOäoŽîÿÀÔ¼Ð/Áì?šUÖ ºù¥3¤‡¥¿üƼ±Ì¶3:>»¿ ÏíýŒËÃ׎ÅÜÝ:O˜áçõƒux`g7ŒkðˆŒ>Bø£Y™ŽY}d–$H>¨éV'ÁñV%«—5ËA£›))Ò _¶ +¢òq8”48>¦ˆPšå†X*¶ººF¼GŽ,Nò>ç;nܸR±¬½½ÃضÚþ””ŒèuÉ¢Á$ééiÂpO>¢:èŽ6˜àó]^Ù '—u^ ŸA–-á÷ȹM<ÄâÕý5¶SPPPp‚åƒfÍ:•UØ[ŠÞU‰KTnqÝ)h‘%haï$ws†uל;CP …QLaŽƒXɬ;ÑЬc‡ÝûȶG*vé]Oí<}—6i]2iÖqímt ;-“³¤ªç”…pÎT¸Ý•tÎè‰ Š¼”ÜÕ¹Ÿ„ÓîD{^<ÁFoŸÉ@¶¡;{¢êv‡¾p̓ùL3û9…4 h%ÏÙ½{=níi™¯þî['233…ÇJï¿¿ZªhƒŸ;wN·û+Û¡‚‚‚‚ÂP‚*õ¥pR"Ùh ¯×üŠ„+¤)*oþäÿðïÿ÷ J'M¹ 6GŽìÄΈ2`-- ƒÅÀsñœ<7ÛÀ¶ÄýŒ+›†ïÿîa|ïîz,úé)Âæ½‘÷*ÉÞë1cF73J`Ïž½b€K1¯Ì×È‘#QXX æ™U¦³³3îñ™^U˜g̘îZç '$²]à òÚYV-^VŸŠŠ Å ÌRгjÕj:t8æ6|ÎèT“à`<ð>Égtýú ·}ùåWEzÚåËßîÑoAœC>Oì¿M›6ÇÝß¹žÑI‰Ç=ÅôéÓìù7'Ü–Æ”}ûö‹h)'zò}Ú²e+þøÇ?㥗^PC’‚‚‚‚X-Ý'šÇQvJŠ‚,±Ìl7²ô—.„0>謳앥¿XËoMÆ:_Þ,oÁǞ߉O¿²¯¨Cg¨û,wƒÊ¶€ûÜl´ë§Žáp›Ñ. ~¬ «´—Ϻ>«Ì—Èüã±Ò‰ò^^»ìW¤zƒn•F3Ë9}@vé/—Çáò’eÖN1離pÈ>~ €m¢¼¼\D¶ãÆs qÎeSÞËÌ?ƒ•íÇ)hë-(úŸ:Õ7ÑÙÀ¬‹ñ@îÆ÷8¹¶ÂÀ£?8Ú`‚0Q¦Ï 6ÚóòûEð9ž6ͼV~8ÅŸ½ßÿþxê©g\N¼þÛ)((œœH”5¦¤¤sfŸŠæ…pêÈ)ì¡h<l h¬*`šœš´n>G&=Æd-w–Ó-‘Môþ’xEÖŸc­³Ú®[ëôpŒíŤ9¦mŒ^&Ž«‹ckbŸmÇ»³a—ÏÂõsCâð^${߆#zbƒZ¿~£k?'RÁŽ)Û Åͱ@Þ¹ÿ~$ƒÞrTáÁsæÌ)¢¡”‚e…{LÐ}K[.Ÿ±Í›·ÄÝfüøˆð,Yþ©l‡ C Jø£ r@’žž.æƒMµ ,>ç"üîé÷ðÝßÜ©³æÇÜ&‰`nÃÎkŒ¿äýÚÛû?3Kgg;êêŽ ‘Ï®]ˆsòÜlC,Lœv ¾ñã»ñO½ƒ…g]€Á@°¹FÜ#Þ+b¨ š¥ÀçÀöà”e”8HЇŋ‰¿4üR˜ÁO48Øyç³ÔSÀ²ÔƒPÉA £3œ%$ªªª°fÍn(-59ö¬]»®Ëúööv¼þú›q÷§“êùç_0úf­èãXE™B–à€\öuwà}‘÷Šƒæ>Xs;fŠâóB¡ëi÷ä¹ïs0ªG^ÓêÕÄ@±Ÿ^{í ã7Ã4@0õpt;©®cõc¢õ4"HCÞñö4€0…ïsϽ€{Ë÷%™ïEbz1¢›ÎÑèh=gMûÆÆFÄñÈ#Å|îˆãÇãÉ'Ÿ6ž¯c‡mã3÷裋kVPP¾ˆT1°rÎX™mLqJDü£ËÌ6šýxíòWâ¯ûx…H÷ø…H“ ãï»íøòòý8ýÑ­øÞÊØPÑœtPs¡5‹ûkñµwöâ/íÄ·Wãx»qu¾4Ñ~–ö‚×!ôágÍö˜} ™×/ç!K{é¡”n ‚dH8{Õì R=Â9…A–àG×l–-ú17µ2 ¥†øGŠwêêê… ‚˜4ib—íä²ýû ¦Æë8  ùÞLd OæÝº`Á<Á³˜=ó…^Š!¼bÅJ¼õÖÛxà‡]”“ Éò•¾¢¿8Zwb¶¾Š†ÈUù|ÄÂêÕklùot9>ƒ²¯¼òjÌgšc‹W_}]<§ý0Ký1¶#èl#Gä8&–CªµµUÿñÇŸŒ›¡ˆÎ*ƒçJ¦ì±‚‚ÂÀ ·¥žœëeùøÓ&à®3B˜=:,Ø%ž‘“îú¬[ÜÇ=!jÞ™FH‹ÌÑóµtוnÕµ{GÆÝ!"Òc´YÓÍ6t½¾hR‚ ]÷³)!¯9N»¹í¬‘a|î´ ¦O/îAO2”·2_D²6(r†;>óä©Ñ£KKÇÚó|?ó½ Ú±˜Q} àlÃ;ï¼×å]ÉçôÍ7—'ü×Wr¢y0ƒû¤m}/EÐRÔôGß¾÷ÞJkZWèÄvJô$ƒb؇ØoO?ý¬Èb_W×5à›÷ýKÛf¼@Pföz≧ðâ‹/w›ÁIAAAA¡ÿ¡J})œ´HT[‚o4W%T„ü@‹% N;÷Q&kí;¯á±¿ü »¶ÆŽˆ �§¥¥^L•• ÂïEzz¦aÔ5'Îû|éb Àu^Ãi¿rßP((þ’Lƒyn3Œ„mößxŸh̘»7|î¢Íƒ;5îWS•ñwLL2ÊÙ~$hX¹r•¸P@A°LT¢¶R,DGS’ÒYsï½÷‹Ak ÓÈK‚ÍÁ²L/zñÅÙÂ('˜Î”ƒ)â™gžiXÇŽ+öc”ø‡î/’þÖÖ6 Ì™3˸¶íâûÎzÔUUÕÂÑE‘ ¯•ƒ@öÅW4JDƒÛÍŸ?ëÖm޲‡zDô%<fMM0š76š†ÿ¹sgÇ,Ûç·L¤ñgúZ¦Ÿ¥Ñ‚Îò9`¢G mhøg=¯ç ƒãÒK/Ác=!»2º›)›ù¬Ñ‘Ã~¤Ó‘;v -ZØ¥,‹&A!¿¹¹9¶§»õ矮xVyË—¿#Dl,™Çýèdá ›Æ#Bˆ3Ï<£K‰…Dß':’hh‘ß'þ–^tÑ…]ŽÁï- ˜ÂÍQ£FÚQN<>¯`tÚèÑ£»d@bD|nدûØ5®õìS9Oƒ ûµ?˧)((¤$-µ NéÎL)¦¦EdüUÌYúËk,7xœ¦…Eö†SŸG”þ‚W¥³ŒKãACPÇC{ðà®:gz±´$ ‹Få`ÑÈlÌ*î_ƒeÈhË®º6¬©hÁºŠ&l®nE�f&‘ÙG‹dîÑdÍÌl¤I‘Ðàx¬þ0Å=¦�ÇXæÕl?‘]=ÂçDúQ·Ê|éŽþ”B ÝŒL—«˜{{™%(•(&ËðÝÍ1Œþ”•Mê²—½ýö»ö6܇Ѭƒ¾¿ÈW)Â~ã·ã;—\B:ÇX¦Œï[¾éøà=#ßÏÌÌïP‚Æú³Î:CøÉçî»ïÁ£¹žåÈG>úh§(»JÐ1ÑÓ²à Éð•þBp´îŸŸ'þrœBQ53*ð¹é©“eáÂù†#l“×ðùÉËË|˜"~>§Ëiðš¢Á²gŸ}¦SQ,ÿýŠgŒß%>³[ð:é�"–,YÔ%óCŒíÚÚÚ„ŠÛ#2äŒ3Nwm³bÅûv`ƒ¾øÅÏ»œÑÃHç#Áó'SþBAAáÄ"QZþ®.]ºTdÐø¼v mбb¯†°î(g9�=Ñ™\sa»Ì–ÌèPD‹z—ý"лù½N³‹é"½ŽfggtAÛfç±"cí½ô9œsºëףᬲ0nœBÙÄ18ýô¥ ßm'S) žØ Èõ.¾øÂ.Çà¶äŒ|_òÝÿàƒcÞ¼¹â]LnÁw(×QdDþ7àùùŽ%‡¥½bYrŠ›(þev>rÒdÛÐ’*<˜Çdœcв²Iè)ú£o)Îa`+ù%í•ä1cÆŒv\ŠÞy )NbɯXÁñжá�ŠÕÙÏD À 7|µž×(3s™¶ÍQöØLâÅ_²ýü»âŠË     0xPÂ…aDƒàîö#1dyš¢ÜLTWFæÈ ,ðü§w©˜ïÛ…¯>‹7Ÿ{•å‡ãîC¡N[[³˜,OvÖÅWã‚knÄ”SæâD ­ò Fäe‰AïUoÍ'r°MÃ4r€DÄ+óåI3 ³°P(@ñP4ÒÒüÆv—ÇÈP¼Â$ØmÚ´EL4¦_rÉEBØ2œ@‡Ø9眅wß]!>óú©€ý~®¹æê„UhH§Á‚ƒqù9ÈH—-;= ù7ß|£ÈúÂA2Êlj‚‚|\wݵÂ0ÐSôÇ98¸»þú‹HmèØÒ™à#“.½4¶(Ï&…<²/9Ñ)tå•—'µž‚*çuðy–Æ'8è¦S&^ÔQ2ß'>W^yEÌïEbR(ælŸ3)xŠŽ¼Ž—)*Ö|¼e4à*(( Hw‡™åGw•Ir è¿âÓ9bf½ ™Ëµí€1EDó¨¢üU1aIh^µ:^9ÒŒ—7‰åc²ý˜–—Ž)ù阔—aLé—›†Ÿ9Æoc,ÕÖÑ¡¦5€ƒMí8ÔØ‰M8ÐÜŽ=uh…‹ÃÙŸ£æ™¤ÖCÁ×ô¿x<‘þ~)Ò¢(Ëÿ¤Y™~Ìe7—óÀVÁÎàc¯Ó"ã M“BùY´#NÏœ<y²Íchäw i%¸Œïy™™û (8¡Ñ˜†}ŠZeä-ÛJžF«,]ºD8‡¸ÌÆXV6 ×^{µ},¾géÜ ˆ‰BzS Û5ú´¤d®¾úJWÖ›“ Éð•þBq´D £iË–mâ»(¹ctögŸ}–ó³_dP„ä¢c;KŒ8Á癎>ƒäftàÅÂé§Ÿ&œÀ±Ð×±]0tEÆwÇ39öûÿìýù³,[v߇­¬ª3Ýsç{ß<t¿÷ÐÝh4ÁVCh€ @l‰°i™’‚¢äCáË¿:¿úß°~ó/ ÿ`…5:Âr6AÂÆ@šÝì~Ýïu÷›î»ópî«*•ß¹²VîÚ9Ueš¾Ÿ÷òæÉÌ;wfå°öÞß½–vLM¶íÊe†_#„”SׯéoÇ7òoüß?ùSùú?“÷ïFòÿ³HŽÎ#OóR×nêÉ^â)ùËôRæe1ʼ,FÑtúÈ웕Qlä9Qì {š¶ñÆëŠ9F^Š´èž8*ò ™-àš_Û‹åõ±üÚWÇÉ{ú]÷¾Çµ/ì>£·ŸM iÔíÛ·œWöÍýßùm ƒÌ r‡hyッ:‘í¢„?øM÷wÿ¦ü7ÿÍë¾›Õ¨°FçÛ¤ óÚ «`£ ¿ƒzÀÁ²µ/šÒŵ…ô›¿ù7\{/òÀ€Í¸¸®mŸ¹yÛ×k/ÖÙ“érÑ~Ä÷§.B!‹…ÂB ¡ 4:¼Ñ@ú³ÿïËààPv®]¾w…wÞÿºüÿûÿ£üþÿîÿ ÿâOþ±üãÿç%öG O~)—É­»¯É/ýúoË¿ñ»ÿ®|ûWÿFî=h\<$ÇŸýP¾ò¿%¬S…YG €·ß~+Ø9ãƒÆeŒ€Aƒ7ÜçctF@ ¢„ý1R èUžfpþÖßúŸ¹ F=`”'*jØ#oÐh¾©#;…‘¸ögÿÂ…WÂ(\T¨á±g\ƒ*á®ÿïþî¿í~;\?Œh†ø¥—tL¢BŽpb™b]Õ¶yü¿óﻑ$È¿ 5PÄ(aˆiðûÎ3z¤‹c`Äþüÿ¯Ýýƒ‘ÜQ„ Fbáúbß«‚½ïßûÛN8¥¿ƒu[·]Ïã÷ÿ÷Ü3„ó@#„Bý~Ͻp|ˆÜªž«²ç ÏÈÍ›7]㞇²Æðïü;Ë6W1îëz^ ÒQl?s«¡p*¿ó;ÿ¦üÃøî9 Æ0Z £àp-pï½ñÆëBY³ŠËg!ï,É„+Q¦òÉÅ?QŠª—õId^k"wˆzú©H%뤈ÈåOæqòž“†Ú^ìÄ?ÒCú^*J2BØ­/OOåïKêã&+Qá`É•ä=ŠùÑÅX^&Ê£qš&÷È#ÐîhØ2„ë;RÏ}c’t°)õ$!\Ê=ýdÞ~°©—…Úr'™^·Îì—wÐdëÒUÙy뵊­°G×M„URød×_G°ÇžH¤µÇŸË°QîK혪FglSÑ·†» |Gç</"Ü-\æCÔ€ï· À¯üÊwÝ·näá9e<ŽÝˆn|ß{ï«îœ1‚ßpt~`Ä8ì|ƒ!ÆÞ¦‘õeÔÙ+]Ò…VìUtÚ ¤ò†¥*|\èœB'#ê¤=}úÔÙ (îسuu"܃h3€×OtÞaTù(y¢~ñöÛo; Uµæ­ÛÁcÓ¯ýÚ¯Ê?ûgÿÜy>ÐplGȆ££#'°!uìÊoû]‘ÛôöCÈr©²3ë<˜‡Ä?¼„wÅÞÞ‡ò­7Îåÿ‘|þÿèãHΆ…œ¥D–(DåVÉLÑìïLd›m&]hç‚<gJlSæE¨j{ɦþÊle¯„ö|ìú¤ùĉ}þÖ_‰åõ[»n Þ×þ;¶Î#y•²)öK¨ íhp‹v´¡á»[Õòïý½¿ëBV!Ä%Ú žqÝÑ– OÔ%hçûÿÃÿÀ}saw¢ 6'lX´'¢ ö@º²AÞ{oyv0lÜ÷*ƙǫPׂlØd°§Ú×u{=pŸÌr=ºh;\u~û·KþþßÿîÞüÍßü7¦¶£-¿ B™}ãßpíè\ ´m"lìÁÁøB¹\š~ᢆۢó¨dY§ž™ëÔÏÖõ½ ÛÐãß;?¿ø#!+‹­pú1¢GY˜ŒR;99vÆXUGñ¼Ç¯ÛZÆ„Äþè#9|ë²ï<ÿ,¿âõÉGÊ_ü“?”ÿáŸþÿä_þÿÿHž?},]rãÖùÖ¿þkòWå7ä¿ûòÎû_“å;O?ý|ýk¸°Î•htäÿ—ÿåíþþ›óßÊc_B!ÛæÐ }p0ñ䇯µ( ñ¤P{Í.Ïj_–Ù‰¾ýZö·º ÿÚF2ŽÚnlC”‰[ jb«H¾MG)»4.í8Mc;®¿áÀdœî;6i²¿Ý~n¤vv̱ eÆbÅ?*¨ÉÅ>™&¥åxT!ã„=åÛ"î¸$™èGêKENš®'VP4±ábç(¿昑éÊò}ãTì“]«(šäa¯m^i-ä•í¥é!bÀü¿ÿí[.-:¬m¹;„BȪ°,û² Ú´e†ÖùËiX÷/œ§=?{|.ðƒHþô'±<9‰p&!Á¢éMæ¸lãtå²[S}1P<_YâtŸ[WD¾ûU‘ßúFrÜÙsƒŸ Ò€0Á÷vÒĤ}H!„¬mìKÀoùz°»»µ"<Ÿgó‘7ÅÙ|l¦ØÌýIJ–«æþß>UÛôøC¶‚6#²C#eÀw¿ûË®’ÿÙgÉóÇŸÊέ·dçúéïHÔ_Σ!¦ÿùßýOÜò³ÇåÓ?”Oòcùü§?–Ï’éÅÓ'rzòRN^ÉËÏää8õ–qpåP¯ÝƒÃ«²p(×nÞ’·¾ò¼õÕŸKæïËÛïÝ Vx4”Ñù‰\¼x$ç>“þø\Þï+î7m:T|VᣋQ�#áe…B!$DÞ!UúK½ÁNÒÁãä)“å:­ÆN°’ œ†'s„pZIVì†3÷2‘Ëx"4ÇÎ+P¬b"±ÞÄjÒu+õLæq&üÉéL?.I/ Q–y1’,DDzÚý,œ™ž¿ä猹Åz=DŠ¡¿²2¹uqq?-G_" ó›ôšW¶_Þ[Õ׺ !„BZÒÆëOh¿ A <jܹsÛy£½štZ½÷ú¹üÝ¿6”ï]È÷>ÉÇÇrïÙXN‡½4ljˆã/Äž-M¥ ŸC6½e/s‘:O>!UR{â¤Àã*É’zý�~$ƒ±Ü½É¯ôä›oöäk¯íÈ•ýçž»áñžOf”HÑ!„Bé ÈÖÓ´²Œ 2b4C¤—†ñË{"É4®É?TI‡€.¶£ýërí+ß’ÃÙÜ›ûܸ}×MðÒ³J\=•£Ÿý¥ÄgGÎÝeÈmkm¬ëd‚sÓ½ý¼÷ÞÏÉ7¿ùóSÊÙ²|V¹¢ 7®‘pN¾;`B!„,k¶”/ŠIׇ ýe!¼TŒáK.‚gvúéß2°¤â–qÚi“y±A¸/'BgO2w»ÃDQoAQœu–Œ3/9¶LqîPg²-ÎÅ>Yÿ+[œjŒÒãd‚—gÞK;ŽRGJ™@)Sàd>~&‚'“n„GyH®Ü#’ŠwŠëܵ3'1VMFºKìßý”í5šÕîdÇ!„BÚ0‹øË¿‚P5ó ÔŸ}ö¹\;<•_ú@½¥zïÔÆI÷mbûVHsÖŽÜ.ËÄæ=Õ«gëq áÝŸÐÎÙ¤-rÝÚ+ !„BÈúÁf²5t1RâÄ2EüR¸s{ðà‹G !OÕqÍ ÂÄë…{à£ÿTdﺾõ5Ù½¾vºââ艜Üû±ŒŽËÞÞ^r~×§Ò4©äâz!æ3bñb$ â’‡ö]—‘3÷ïß—'OžÊÅÅ… !‡ûg0è»xÅ„BY–ÙXŸzÉ‘‰‡'ØÉ3N�”y¥É„4N~‘ór“‰tbxا½<ªÌ‰{Yú~&’ÜÓÏÄ‹NöÇ8]/Ö•q^Ê^z‘É�ð¬ðÎ+‘ñ˜“ |úђ˳'¹ØGAi^i/ÌÄÛ‘î>ùÈoã¹Ç¤ÑëÅO>*Q“ÉCBz…B!¤sfœ×‰tÝ•+W\¨ù¯ýknPÚãÇOäÙ³gn âùù…k³l˲Åñu´µÝ5t<tCàsóæM¹}û–›kH¯YE?MŽM!„BH(ü!¤ZY†ðä~á›ÉšoºõMbk‡¶¡bý—ù=yôè±üÏåxïš\yãÙ½ñЬ3ü¼üüC‰Ÿ:W·o¾ó¶»^¨ƒ¶bœMóÏþÙŸÉ~ðúßþíß’ëa!„BHjnFÆÛ3‘ �Rï?ð¨W OÂY©€'‹àÇ}‰úðÑM–ñx<ñvÓË:â4ŒX¬"!lì¥"¢<ôX›° ‘ Í¥"!ÿ8ïBzp• o;Žü˜’¦5¢œ8 –{çɯ…þ­!¼¢<ÌWMDK*|Ê…AQ\ó•îÊ“{,2^$*ßÎB!„ÌKÛŒ¡õ¡A‰º–Û·o»IÓØt«.æYÖŽ›Çãx™=¸Š !„BÈzCá!M¼þT­¡ ´¿Þn»uë–üú¯ÿuyüø±‹¯ýå—÷åôg!ǃ}Ù»û®ìÝzMzƒ]YÆÃ 9ò…œ>üTzÃ9ØÛ“»ï¾#|ð¾óÔ3K…¶Íúu=þÜê÷{òÚk¯Éw¿ûË΋!„BÈ,äbž\¬"©øÇy­I·Æ¹xÆt¦¼ÝdÞu4„Wb«ˆõEòpazÀ±ñ°cÄ2™¦XžÌ‘nËÅ8™G!1â%§в0b’zþÉDJ¹¡^¶¿à¼™üš(ý%&ÌWœ/»œcOü#’{úÉdRFdÈI&þa' !„B.Ÿ¦âŸªuŠÚ7MlšMµ±ßºÈX—!„B!³BáÙ*ê\ä¶õ4Ik×—m»s玛T�tÿþ>úH^ÜûD·dïö›N”Å?X!b¹xþHN}.£dwg ‡;;rûµ7«à»wï–îÙ•hÖJô2+Ù¿ÿû¿'„BY Út–„¶ÕÙ——E0ô— k¡´; ’Ô ú°‰£Ì;Nê(YÛsé‘NúñÄ›Žž«ï D½ê¨ðEKåñ¼$+�þèM< Lœ#½8÷ä‰ Û¥e”ÌãÐD´$yx-+À‰§Öåž~D¼tf®B©HÅ?2E*ùQaRVô¬üq–¿4üýÙÉC!„Y˜¥=³l}YÛ¥ÝV¶½,í&3kûâ:¶WB!„õ†Â²u\FeyÖJ4ÜêþʯÜv!À>ùäS¹wïK9;;“ó{?ÓÏ ýkweç:¦;ÒëïÈ2ˆGrþü‘\<(££‡2HNgwWönÝ”7Þx]Þyçm¹qãFpß˪,³M!„®YO¹È'÷v“•ÛmŒRá 5qæÑG¬· 4¬Cª3\诉& –nWŽõ2”ûë1õŒ FÅ6i2ÏDl“‘jmŒp'Ûh˜±É¹MN8÷º“ pR‘“˜ô*Š&×CÃ{é~…0_RÏ)_1‰¨tˆB!daÌÓž Ú Rô·W¥Û$š¶Î2˜±n[“í„B!„TAá!ÚŽüinÞ¼é¦o}ëäáÇòé§Ÿ¹0`ñèH.î?‘ã/~ ²{ Ñþué_¹)ƒ+×d°weÒûб OexòBÆ/ŸÊèä¹DçÇ2ôå`gGä`_îܹ-o¿ý¶¼þúk.|UÕù…躲ÌJ2!„B.›U²?rOD~è/ê*Ô@å3ï'5/'^ƒâiñO&‚ñÅ?®,…cÇ©€ÇmèI¢Ëˆyò0`½Thg~‹4YšaV~#Љ­§#ÑÂA-£É#WMÂ|©˜gâ³hrVV(%™w¡Øäa¯}zLÚ¤„Bé–&âЦíÒn+ÛJ·mÌ#Ú™·}”B!„&PøC¶’&#¶ÛŠ|šnSš¤é%*¯¾úª›ÎÏÏøçþýûòèÑc‡"çO%>{"£‡#¹ˆ“N›Á~òTï'ó=éí^I¦}‰ú;ÒÛÙ•^{$½Aê)h<¼×1Éhx&q²_œÊèìXäâL¢á©H2õ“2 úý´lý$ûkWØezíµWeww·´ü!–!j›†B!¤ŽU÷�4Ѥø¡¿Rq bzÅ…Z&}<žˆ`âHÔÅ ýe¼â¸ýâ¢øGrxaÇ&2š44˜ñÔKKCd„;.‹8Ê„@QîÅÈ•2¿þqú+“ýdaÀòÐ_q4íý'6WÈœg”Ÿ[,…€e™0h’G$…Hfsš—´O !„Ò%u!kAÝveÓ½ü”Ñ…÷Ÿ6ùB!„2/þ­eñn³Ž”i›fooÏ…Ñ„ôöôé3yüø±¼xq$ÇÇÇ‚§ÓÙ“Bþãìïqà8}sœ<€ú]vwåÊ•+ríÚU†ìæÍΑ–««Jp“4]T¤YÙ&„BH|[°‰m¸JL<òxâ‘\,£Þtl8+' RO?½Il«¢ H²´N”‹xüÐ\™ ·ØË2ãWÇx(*p¬(GÄÆ›ä¼ðäx !ÃüÐ_V”íå;ñ’dC’Ež· Ü5PÁÑÈäšøÐ%„BH4Ÿ7ø4i­cÝÄA]Øe] ~h'B!„. ð‡l5MÅ? ‹‘2󎦱‚q0½÷ÞWݺñx,/_¾L¦c9::rŸžž:OACF. æ�a¹àQóóܳ¿¿/‡‡‡rõêÕd~Åý4¡2V±J‚ ¶é!„²}Ìê½ûõû½Ä¾ËøTîG²jä™xÌI2&ôW&α^qT“ qÄ ‚â¢ÀÇx ÊŽêÖÅ™@¦ú+ÎE9ñO&ÿÉ„8yh¯,TØDkò^4ó%ŽìØôz-bã(;Y-«'”ÊË,ÆQP6w¤^$w¢¡[函%„BYME;š¶Mø®YmâMgYí¢„B!„4…²tfíh¹lÚT”»øÔ¥³iÑÑpýúu7ÕíSÅ,•ή+´¬ B!džïü"íK?o¦Ÿ={.¿5þTþoý¯ÉªRðª“Éd ^qb/„W–KŒw›¸àGÅA"bÕ9’ ‚2aŒ-AMÄ>Fl“në¥Þ…œ—!ÝéÒuN‹®÷/ßñMò«'Ï@z>f›ÛO=e!Ètž‹z¢,¬™)ƒ^—(šä‘ ä#ùî�ž6ï8=½ýB!«ËªÚ—³Ò•÷ŸPZ…¡¾³íCB!d3à7¬þ¥ °¬r€.+ÊMD@~ºª´¡kÓ…+ÞYXT%vÒB!dùøßî¶ßý®íËP‡Š]‰øûo<9ù‡½·åat «ØERúË Z bgžpTèS »UØÏ„è*†›ib#ÜqyfyMÄ6V¤aǬW"?ôW”ë…&ÂñÂŽI!b±8-Ïdwã!(+C~N’‹œ&Þ‚&â¦^2Ýí]È_Ûy*ÿöõ3w´÷øD[•BY<«f_vIARÓöʲ}š²Š©UÊ›ö!„²þÌc_²((ü!$cQåY¼÷Ì’¶.ý,´ýP-RÊ4!„BVxýù×¾ýWe÷{ß—¿#ßsëf±Ë–ÑIÒ¤¡¢Ì¦ªJëÏwìxÎýËÓiÈÛо6ýW¿ú5'úis|B!„®h3¨Ñß§í~móÞDf=?Ú…„B!d‘PøC–N±Ò“½] mÄ?v°lÑP(ý¢Yeñ+Ó„BÈ:2ù~ÏŠ¡˜g3ÏŽUÞ«¼þ€÷Þûª›ÿä'?‘ã㓹;`|BÇïŠE‰€–»L´^—ÖON—¦­Ú¿ìØö·+»6رÏ믿.o¾ùmOB!deYž}yÙÌÒ®©ûY¶5¼W]y%„BȦÐ}IH×PøC–BYç‰RÖ@ÌÒIc÷k³ož˪Œ¯‹h‡YB!dý¨ ŸÐäû¾hû²Nüƒ¿ßÿ½\�d©³×¶µse•춦÷Xë›n'„BÈ쬃}¹fm× åbSíÖEýŽ´÷!„Í¡ û’EBáY)ô¥8¥ßïË2™u”ŒîkY”(´OÛý›æµÈý»úò£J!„¬'°ý@Óoy›o~ûrVYc@(ÿuw¯;]z­œUôC!„Ų*öå²èB�T•/©†×‰BÙ<ÚÚ—„\6þ•¢×ëÉh4’áp´çºNšYòi“×¼@‹þø,[èÓu^„BY°ý�lÁ®éÒ¾,Õyò׃U áº.\Öu™Ç[Ï<Þƒ!„Ò ëb_.š®Ú6I=´ï!„Íf‘ö%!]@áY)ð²D%éôôTööve•èr¤Ì¬B Ð¾m÷Ÿ…eyºì< !„²`ûáÛ¾¨Ž™6öeן¶â°j^~ºd“l².<ÐF%„BVƒU²/WŠ€º‡¶!„²=,Ò¾$¤ (ü!—NY§ˆ}YË×eYD%y!PhŸËQθ؄Bil? (mãd_¶}ÙFü£ë•:QY,ó\ãy¼�Í’ŽB!³³nöåe3o[ä¶B;ŽBÙ^æµ/ Y4þ¥âW¢Ó—¥ÈÅÅ…‹•¸êªÉEU’»ÎwUC~-+_B!„¬°ù`ûõû½)Ûo[  û²LÀÓ$M—Hv²T³jö_×bÚ·„BÈâYEûrÕ)».Ûj«Òf#„Bˆ¥kû’E@áY:þ ±ß$/Ð 999‘ÃÃCY'ÖE4/úB!¤+`óÁ€ héÒ3Ë,öå<âÝæñ¼¸›öV=m®Ñ¢ÒB!dvVÕ¾\Gh¿B!„,ƾ$¤k„ެê ó~¿ïÖ={ö\Öuõ¦Ó¢òí:ÿË:΢ËO!„ÕGm>Ø€Ö&œ—.ìË&öI3­Sf‹Í3‘ ó^#^OB!d5Yeû’B!„¬‹²/ ézü!KÃmãdc‡rvv&{{{²),ÚsϪw>°s„B!Øz°ùl¥ÙÚ ³ 1–a_6õda˜¯rVÙnœUÄE!„ųIö%!„BY>]Û—„, JÑÈ¥Ðd´] nþøñÙd6}ö¦Ÿ!„Bæ¶žµý”¦^tšnŸÇ¾lÛ14Kú&S—y­Ã´jÌZ¶U=B!dSYû’B!„¬óØ—„\&þ¥zÙÙ3xyb~qq!ÇÇ'²-¬z‡Gë^~B!„\°ñ`ëYۯ̆hbW,Ò¾lkÛ,ÂZ7¡ÌºÓÅõåïB!„\.ëd_B!„Õ§kû’EBáY*öåè7®ïìì¸ùƒd<Ë6²N#ŸùA#„BHS`ÛÁƳ6ŸoSÌj_,Ò¾œ§<´—V‹E ©ø[B!—˺ڗ„B!d5Y¤}IÈ" ð‡¬¡ÆvÄJT·i>" ë˜XÕãB!d3m[¶l¾E /a_Î[¶m´«êD6˘Å6üž„BÈ*²Îö%!„BY=.þ$¤KBÈ%`ÇSËv½¾(á* ë  Grrr*Ïž=—7® ™†B!„¬ °é`Û ý|´LÈM®þíÛ9~šeØ—Z{ìy¡=·Þð÷#„B–Ç&Ø—„B!duèÒ¾$䲠DzTÆÝÙÙuJʧOŸÊË—/…B!„¬'°å`ÓÁ¶ƒWeÎËeØ—]••¬/¼!„å²iö%!„BY.—i_Ò%ôøC.•6£fðBUÒ‘3cyøð‘[><<B!„²> Ò [.íÙq¶FÊXW¹J›Ñ2«`_Úru鈬lÔ!„BV‡M¶/ !„BÈå³(û’ˀ²2„^–ê27UUîÈÅÅ…{á‡C¹qã†B!„ÕçÙ³gòôé³B¥Ùw‘»ˆÑ2˰/)ÚØPC!„¬.Ûd_B!„ų,û’® ð‡,;jFÁK#dô… 4†"*ÏxñžÉÝ»wóí„B!dµHG<?t1±a³Áž îo[iö+Ð`ž ôªØ—eç@AÐò`à !„²Þl»}I!„BºeYö%!]Cá¹t|w¹¡m¶ÂlÁ‹V+ÏxÿìgŸÈ«¯¾"W®\B!„²:ËýûòÖ=®?5©,×m['û’„B!í¡}I!„Bºä2íKB …?d)D%±²Ah´Œ¿/ÖŸŸŸËh4’ºñíÛ·eO!„BÈò8==“Ç»Ž½»»›WË*ÍÖî‹fˆMû’B!d3¡}I!„BºdYö%!‹„²24©<cëÁÞÞž‹• /æ/¿üÒ½˜oݺ)t¡K!„rIÀ>;99‘'OžºŽ �» £uij­(·©4ÏíKB!„õ„ö%!„Bé’Uµ/ é Èҹ̭«<ÛXÚø[]®¡âŒ´iÆGn;¶ºQ4‹‘/bB!„ù€ › óòåKg‹u‹«ñ°mìk¬÷cbƒºJsûö%!„BÈúAû’ö%!„BH—¬²}IÈ¢hzF ·E æQɲN=3שŸ­ë{¶]Çüüüℬ%¡xÙvþÖe¼¤õemç:A¡‰—¸n+;†.ûsB!„’âÇ­®r_«atVØ ²­$Û¹îoóè²ÒLû’B!dõ }Iû’B!¤KÖÙ¾$«ÃîîÎ_Of0ÌŸgó‘7ÅÙ|l¦ØÌýIJ–«æþß>µ•zü!K§näŒÿR¶•]M§hUc¬CE:­@£b-ùz;ê¦ V¨ !„²éÔUN}[,]çþÍc`û•a[Q-ûùv]i¦}I!„²<h_Ò¾$„Bé’M´/ é ÈJªÈ–Užõ…kGËèv»N_äŠYc×B!„rBvX¨Òk+È~Zëׯ×-Ï[nÚ—„B!«íKÚ—„B!]²®ö%!]BáY)üÑ3~…Z·Û—²V–ýýÕUn¨¢l×Y—º„B!dB(~u¨ÒrëW¢Ëöµ,¢ÒLû’B!du }Iû’B!¤K6Á¾$¤ (ü!+‡_yö×ù/T}!Û1˜t´Œ­,‡*ÑÖý.!„BI)«äú•c}h{“Q1‹¬4Ó¾$„BY>´/i_B!„tÉ&Ù—„Ì …?d%ñGʄ֕½pýŠr(/»B!„”c+Âv]hû*W˜i_B!„¬´/i_B!„tɦؗ„Ì…?d¥)=ü 4æp{k—«Üäú/éªJ4+Ø„BÙ4ª*¬eÛÊFÊX¬{ݦù]&´/ !„BíËâ:@û’B!dv¶Õ¾$d(ü!+OÙˆ—Ðzßmn襪LÛí„B!dBU%Ù®o3fÙvíKB!„åAû’ö%!„BH—l¢}IH[(ü!kChôŒ®~%Ø_)Óô¥Í3„BÙ4橼†F΄¶·ÝvÙо$„BéÚ—´/ !„Bº„ö%!Í¡ð‡¬e£gª¶•½Øý u“ãB!„luä²ôm·-Ú—„B!—íKÚ—„B!]² ö%!M ð‡¬%e£gt›¥.]ÝKœ£e!„²©Ì[™í¢B½*о$„B™Ú—h_B!„ÌíKBšAáY[ªFÏ„Ò)m+Â|ÑB!„¤´µ‹ÖÍŽ¢}I!„r¹Ð¾,¦Sh_B!„ÌÆ¦Û—„”AáY{šV ýôŽŠ!„B)ÒE íu…ö%!„BH÷о¤}I!„Ò%Ûl_âCáÙÚV CûB!„ÙÙ4›Šö%!„BÈr¡}9½/!„B™ÚTdS¡ð‡lö…Í‘0„B!‹e*Ë´/ !„B.Ú—„B!¤K(ö!Û�…?d£i›mB!„l;uám¯(Ó¾$„BiíËjh_B!„´ƒö%!Óô„B!„B!„B!„B!„²vÐãÙhÚŽ€¡”B!¤ß¾Ú6û‰ö%!„BH·Ð¾¤}I!„Ò%Ûn_’턲q´­,Ó=.!„BH˜&•bkKmj%šö%!„BH7оL¡}I!„Ò ´/ I¡ð‡l eà&cVž !„BŠ \g#ùeM¿)hÚ—„B!ÝAû’ö%!„BH—о$d…?dí ½Ð«^òãñX!„BH5!{ª×땦±•åu¯@Ó¾$„BéÚ—õëÚ—„B!õl³}Iˆ…?dmiRaÆrh]ÓüªÖB!„¬;eÛ²õ~ÒiÚPeyÝ*д/ !„BæƒöeÚ—„B!óAû’fPøCÖ’ªJ³¾Ð±<Ü2þ¶ëm:B!„RŽ”Ñ 0–ñ7æý~¿°¶VÈ…îªWži_B!„\´/i_B!„tÉ6Ø—„TAáY+ê*̘PY‡ùz;·û—ýÝô¸„B!ëL]E64òE×k„¦Á|0¸J4*Ï~EÛæ±jhÚ—„B!Ý@û2…ö%!„BH7о$¤9þµ¡Ìå-^ܨ(£ÂŒI×?I^Þ?>Ø—“ù§ÉËû~ò’~–¬?þB!„BÚ€êî^2ÝH¦W{ëíÄ{/±Á>89•[ÉüüüÜUŠQyÆ„ŠtYzU*ÏmíËãá@œí˃ã<:îÉóÓHŽ/D.ÆØW!„BH `î$æâ•‘ëû±Ü¹2–W® 啽S¹2Øû²—œ×Îþ®$'(q/JÚ,ccûš!„Bf#±¥³*1§’ÿ`X%¶×Å鹌“ù:Ú—„4¥é5Ü5˜G%Ë:õÌ\§~¶®ïMØvóóó‹?²‘”’ÑÑ1nŽ’—ó?½vUþ$yQÈ2!„BÈ¥ðµÄ6ûkIGÆw_ÉÕl4 *Ï;;;ù(šPeyYè6öåé°'?}yU>|4/^о$„B¹ Þ¸Ë×î å+‡G²?Ø,ûЧ½«2NÎaLó’B!äRèA”ØfgG'ù¾U¶/Éå±»»óד*ϳùÈ›âl>6Slæþ$%ËUsÿoŸÚa§þ•&4JFc^£ÂŒ ËO“—òÿûú5ùï1:F!„BÈ2€Áþ7“ßyþBn&v*̨<cÒ˜Ú~eù²+ÏMí˓ю|ÿé5ù_ôé͇B!dIÀTü×ÞÉ7o¾ƒþzÛ—ýÁ@v¯^‘aO!„BÈ®üüèXFÃáJÚ—är¡ð'¼ÂÒ ¡ ³N¨(Ÿåq°ÿþí[ò_$/cöÇB!„¬0Ü/éàøŸ>~’ÇÏÞÛÛË+Î:öYpº}ùýg·äO>Ý¡à‡B!dE€©ø×Þ¾oÞXOûòÊÍë2ì³ÃˆB!d•Œb9~ú|eìK²(ü o£ð‡Ì­4Û8Øø.qQiÆüó+Wä?¿zÈ^„B!+ B€ýGG/åÍãcç2•gÌuô °æEUž›Ú—φWä>;dH/B!„!Àþú[/åÆ`=ìË݃}éì1¤!„BÈŠ‚`ã“39?9]ª}I–…?ámþ¹ð+Ív‚[\Tšñ÷?¿q]þ³ý}zùYG8tžBÈ<°bµvàûOOOå—ž¥£gPyV×¹¡Ñ3]Wž›Ú—Ÿœ\—ðÑ>MB!„æâÿäýSyç`µí˃k‡2Ú!„BY}úçC9yñr)ö%Y.›"üaDa²håØ_ö+Í9ónÝ’ÿ3E?˿լ!„2ü­¸ò°Ý`ÃiÈØv¾½—§÷–g>n ûò÷äïÿ˜¢B!„u�6l7Øp«j_ܸFÑ!„BÈÛ 6ÜeÚ—„t …?déTÅÃÆ„XØçççîEûoß–ÿ|wGÈ%ÀŽSB!›¿mK6l9Øt°í`ã•UžÁ<•ç6öåŽnËþ”ö%!„BȺ¶ÜªÙ—Wn^—Ñ€Íî„B!ël8Ør—a_Ò5v@–J]¥±°ñbÅüÏnÞ ègQ,àÃÄ!„Ëdn÷ª¡ï]¶vl¹k‰M÷§Ïœ‡ß 1³-ö·„=Ñö·mc_~zzƒ¢B!„5¶Üþ7äíýÕ°/¯\¿JÑ!„BÈãÄ?‰Mwüühaö%!‹€Â²4ê*ÍPSÂÔ”Ÿì˶¿/¤Cææ\š°‡"BÙl:ªÕ}—fª|Ù<Yyë Øtÿ§ƒ3yëäTz½žûm0·ÌZync_>½Ø—ðíKB!„u6ÝßþڙܔåÚ—;û» ïE!„²À¦ƒmwqzÞ¹}IÈ¢àð²2ø•fŒ’AÅÿ_¯_Ê?:`Æ&~£F#ÑOU8•6!„Íæ’¾3}ËÊÊIæW¶v’ÀæÃß3ÿ6UǪ°/ÿä‹ëü9 !„B6�Øt°í–m_¯!„BÙ `Û]†}IHWpY þ /K» “ºÈýÿ¼rW>¤Jr>fú,*ï¹÷#„²ÔÙeß•Šýüï]ãQºí“™mïß|ðÐÙ|ûûû…‘1° í(š&£fÚØ—?<º+_¼àïG!„²)À¶ƒ÷õ«Ë±/¯Ý¹%Cš—„B!Ã8±í`ã½xô¤3û’EBá¹tÊD%V% ÷¸˜žíîʱ³#dFZˆk{ñé"MmBÈ6RY1júmðóíWrûýiTI£�h.`ãý뉭wSC#$Ëú„®Uå¹}y:Þ•?ù”ö%!„BȦïݯïJ4¼\ûrgØg€B!dÓ€çl½Ìî›Ç¾$dÑ0ÔY:¡Ñ2p›†ù?¼yƒ!¾f¥ai­KºªÐ&5¡VBaUšL„B¶“N¾qƒ0`q}Ø®Vß$~»fWÍÙzÆö³×ÜÚˆm©²/ðü2B!„ 6^jë]®}¹ýªB!„ͶÞ"ìKBº†ÈJ q±1‡{\Lǃü¿¼E[ÓBðÓ:ŠÑN („BHg˜‘eß¡|t…¿ÝŽº°ÛJFiò*ƒÞf¶Þ¿•L‡™ý‡ë¬nrç²/ÏÇùó{´/ !„B6Øzß¼>è’ìË^¿/#zû!„BÙX`ë9›oö%!]ÂVor©TÅÆÖíp•†ù?§·Ÿö4×Ä-E=¡õ­óhºBi*TUß”¬Â寂B †" V Vøƒ« ›ï7>r6`?©DÛkÜ$VvûòÓSzû!„BÙd`ëÁæ{ÿÊ娗‡7®ÊH!„BÈ&s%±ùŽ?›Ù¾$ä2 ð‡¬~|ltýéÎŽÔôbµë4û4]×d!„Ò!QP@ÔX4‹�ˆâŸVÀæû ImÀÝÝÝÜ&ìbD¶o_þè1íKB!„M6ßûW.ǾŒ“ŽB!„²Ù¤6_÷ö%!]Bá¹4|áˆ.ÛxˆPEbzº³+òeÙœ®D?%¿QiúyTæ× †!d3™ñ[ßj¯!P¥È�•„�£ø§`óÁö»yq‘±•gÿZÛå6öåÉhW¾xÁß„B!dÓÍÛï@k_ö;2¦yI!„²ñÀæƒí7[Û—„\þ¥ªH#6"øøðPHCfý´üÔ {êÄBeû•A‘!„l¡w~ƒ Q\!ª©ÝÛP©�(.÷þCñO7ÀöûÎÓ§ÎôÝå¶©(WÙ—.h_B!„l °ýÞî/־ܻr lÅ"„BÙ`û?1·}IÈ¢ ð‡,UDB!™Vœcùé.Ã04¢­ègVÁOÅ~3y*;&!„â}J+Ležx¼å¨˜Ù”èÇŠzf�QüÓ °ý¾#i' lÂÐH™6„ìËG§´/ !„B¶Ø~oï/Ö¾ìí d$„B!d€í'¶_Ò5þ¥—GÒ t,Ÿ1>öÜ´ý4ü4IXnäq¨) BÈfТ2ûBâÆÚŠ•ýr”Š€š€*±‚7?°ý`VÙˆµ¿u}ùä„ö%!„Bȶ�Ûo|}±ö¥ô{"ôùC!„²$¶ß¼í—„, È¥PæÕÅ_…$¸Ïc=m¼è4ýÔ~šˆƒ*AeëBûBÙl¼óƒ•¤;…u¬ ¨F�Ô‰ø'¦×Ÿ:ÔöS[P)»®q ›Bó|vÊ߀B!d[PÛo‘öeLÑ!„BÈÖ ¶_û’B r™PøC–JlD%¶ýLH%³Š~êD:U‚ŸÅ@SéJÒÔBa!„l-F×N¥÷=òèºl9¶B›²Š—fkó÷@¾÷Ÿ€ÈˆâŸn°¶ŸÚ…³ºË-³//„B!„l Öö[”} §?BŸB!d+ºAç³/ Yþ•@+ÍPIâï3!³ÐZôS!þ™JSµ ¨l¹n=!„ͥɻ? ö±ë+½ýX!î8D©�¨©÷Ÿ6âR l¿4dB6zºÛÀ·//ÆB!„B¶Ø~‹¶/)ú!„BÙ"¢îíKBº„²bÄæ_$n6­±è§¡à§•¨êo©øò#I!XQMaµ·>$ò1çíðÖ{¿M“è1$P³ÿ\â/™þê:wš„B!ÛÃÄö[œ}I!„B¶Ú‚d5¡ð‡ `‘¢ŸÖB Ðñü2…– ›øÑ$„m$*üd‹ßã‘'ª ÓÕDè÷X¯?]Š!„B!„B!„B:„Âréøñ°ízRC“k4ègÆu¥b ²2¶Už!„ÍÇöxÛìw! „á²é¢Áæ!Pp]⟠MÒl9Uvb™˜Šö%!„B)ƒö%!„Bé’YìKB …?dé°Â<M®_•è§ÖËO™à'®öüSêí§JT,´BÙ"**D…ÊR@è“§ñD>S" ‘ �(äý'´®TüS½þÌÇ<×ö%!„Bñ¡}I!„Bº„í¿d• ð‡M" °i,ú)øT ~ê<þÔ‰€BËeë!„l>¡JR(ÄWþgTLû„> @QàØµâŸ¸¥×B!„B!„B!„Ž ð‡u¡{áD?u˕ ›®ê¸Þßuå'„²e”f|?Jl„?6[oE@"å l9²Ëb@³ˆ ÁQÍ ]çB!„.¡}I!„BYg(ü!dS‰lB뛊~jÖ5�Õzüi#f"„²„ÚãáOä ¦?ÖãO…§·^JÄ>þr@ü3ɤd=!„B!„B!„BÈ‚ ð‡5%n# ™EôÓd»ÈÔòÔz¯|­Ã~BÙ*Ü—ÀÍ„Ä>Rôøã{ÝQ®/,‹çéǬk-þ‘z¯>ŒõL!„B!„B!„EAá!ë@SAL\j+ôwSÑ÷÷›IÇå¯$Ó7’ÝÞN¦ý¾ì$S¯×Ë=d<çv*”oEYvùØ9|¹ÄÞsS6ßT"/DRÙœ*üç÷ ¾ öý›ïŽŸÎ¦Õtú±û•»ì¹'ÓóäïÏ’|¿ŸÌÿi²ü…õ�„㉼ÿÔ‰²Lý]ò+Ppz"„B!„B!„BÈÜPøC–†ß‰·éë £ìºy¢žôOÏ;Ù^'úy3Iú{»»òëIçìùù¹ŒÆãttÌ&ëÆÙ²ßI»n¿ó*”ž!.—нºï£Ð³ª" Bšà?C˜TÐS—ßÚõu¢Ÿ²|äx39þÍdþ­dþ{ÉôÇÉßÿU’ö ™|êÄ?Ù&ÛTà£ÛËD<÷ÌDÙûhÖ} !„BÈvCû’B!„tÉ<ö%!‹‚²tXanOðš…„6¾¡DT)úI:c;ùXý§ûûNä3GL�µøÛzóQ/ ŠvæZqÐ*C?d›ÞKlÄ$]á z¬×(ýØo…/êñ½ÃùyÚý}rmÄA¿–ìû«ÉôIþþ”S=ÖI¹øÇûäËi¦Ó!½‚VþÚ3Ïûˆï2B!„âCû’B!„t mD²JPøCÈ&≂û5¢~0ÿ_$ó¿··çD?îØ0^�ûa¼TàÊ»Ø0/áSXîÇrYǧ‡•Ë…ðB÷ïE2+ö½oßkþ÷"ŽÃ}Bž‚l>e‚Ÿ&Ï´†îúO’ézò÷‹oÊ•³‘øÇË'þ‹B!„B!„B!ä’ ð‡uF;<k¼ýäËqÜJôó›ÉôwwvòÎÖq&þQáïqÁþòlPÕÉ;}jÛ)ü!«G[qP¨mU¡ŠÌƒÿî÷Ãv© T…?Ø®il¸/+í÷ûS W9e–{øßOöyžÌÿ ûö5ÿLhUxý¡ ˆB!„B!„B! „ÂBÖŒZAJÈÛO™' ÑÏIšÿí`PÓåwÊ¿C¶LØc·ù^ B¡e²Ì㇮Y]_ï²PGMÒû¬Â}À{‘4Aïõ6ÏS(¤—/òEtAïu&¿YEwÿ›dúA2}Q'þñóEzM×Ðëßñ„B!„B!„BéšžBV›2a@EhpßÃOÙúlúw“ŽÉ~Ö‘Šð^:ÙŽUõÄÀNL²M”ÝóÖã‰ÿ÷¬Ó¬åX¶xŽl¾ø&úÑóe=ýŒa$}@þ6{¼YÊëOQ2ý/ßÁ8ð½ ®·ÛÍqʶ5ZO!„B!„B!„Òzü!dÝ)üÄåa½JÿVo?Igêoôû…ŽWÛk;wu uÆÚà7î{ZË<>ET—ˬ×Û÷\eׇþn›·Í×>(ê!«ˆÿ®÷…:u÷³/$Õ9ò ‰Üª< Õ=#¡g÷×’é¿N¦{ÆëK‹tZV ‡üªôúÇ óE!„B!k Ûa!„4};„eCá!kD£ŠfÓ4Öc�aþÝd•õ°à{lÐZkç« ê䵆=…á5¹\æ¹Þz¿÷û}7ŸÕÓN(ÜQH<§ÇTÏ[8®>ƒv_›WÙqª`ƒ™•·»¾lîe}Žôþ¶÷³/ *úû´å—“}þ;ä›íŸ‹yl^uÏQ¡O™`‰B!„BÈâ`{!„E2ëw†í„„® ð‡ R$ˆzÊÖûóo$ÓÐ ¹ü×Ê2”¬ymh’î2Yv§, ½Õâ„ÓÓS7 ¹GCÕQö�}æ¬øÎw8º¿www Ï£Rèþ˜[qP]9™…Ð}Tæ¥øïûPx¯P¾eÞµ,º¿>'öþ·‚UÍÃæùÍdúïPI½üæiAHx½WF>c„B!„r¹PàC!d¨ún±m‘Ò YGŒxgj](¿Îî˜^‡W‘©ð]!±OÈ3Cy±ËC#Ù¹ï-è2Y•ŽZtË£I˜ óósyúô©œ9Îþþ¾\¹rÅý]F™Ÿ¸A>˜¬€G ¡‘ŠÔSŠ– ë |@Ù°Œ2õ³Ð}³ÜW¼I¡wº/°Ñ¹ï­îó‹‹ w¯cŽuÔéòl‹ªpÏÈÉɉû[ï}^vvv¦žå­t…n(έçÿ™yù‰á¾âzo@„˃B„²Ù°CÈv°(›Ž¶"!„yéÂ]¥ó„Õ‡ÂB6‰²Ji·±^®¢ó4 úñCµ„<MY-� …h m§!CVˆž={&GGGNH�ÑÄ øáÔÞË*äÑ4º]Å*øÁ< !O t;Òb¾··WXüPüýâÅ w,¤ÑIÓZáEÕ3æ?§d»Q‘Ž ëhÁ}i…:öþ IqbÂ}Ž Ï•ÞÇÓážõŸëÈ)Èóøø8Éá™888pùUq-=@~œÈxò±}¬×Ÿ ‡B:‡ß"B!méúÛÁ¶ BV‡.žoÚ—„BÍ"<ùøm¬„b¡ð‡U¦A%´4Ì—/öÑüBÞ ¼ô.X‘ç$ä½alÂ…<˜”6!1o°,³¾ìÊ?Å« ÏŸ?—Ç»ß ¢ z€Ø�¿aRÏ%5¨ ¨& /lƒpÃkŽ£¢"õæƒ9„=bLX><<tûÃ#òBþW¯^•»wïºmV”Ñ44!�÷=Änzÿú@XsíÚ57‰C yt=îñ—/_º|ÕKîYëéÊÞ§¸ÿm<{ãoÐA0qÊŠgëÍ7ßÌŸ±2K.ê±ßKë­'.zý±" úKi$`¥PˆmB!«Ì":n!í˜Õ^¼ìý!„l7MlÃÐ7¦­MOÙn(ü!d]iSù yû)zý1sÛÉZæí®Úñê§>|Ø�iR¦×²ŠàÞ‡â�!€è�ëÄbK=ú@œƒŠt¢äñîuõ˜?„BÈÓ†øeä£Â#äáæðœ‚õ*¤°ÏTÙó ?F¶‡²w³Þ?’K=ÿ¨€Í~[B¢›~Cüo‰ÿÑ´!A©ÿ}²iP>‰0¡|JL½^Uœ|*àÑgE¦½ÿˆ÷w#(î!¤Àâ:QØ9C!¤ ÝØg Á@Èbik;¶I?¯]Jq!„lu¶Þ¬‚ñYmJ €! …?„¬ •ɦÛ‗Ù"ãõGçuºM¼ý‹—‹UDE�À {4’z,àËà¨ø�Âý‚x ¹sçŽ%üô§?uéßyç: Âõ`‚¼U¸ƒ¼òQÏ@(‹†1‚PÛ0WAÊ‚¹ ‡|¡D•ЇÏ"QpÁkî ܳVä†{÷­õæc…f:é3¢áì4¬òVÞ·˜ô{dÅ?Ö /²b"¤A™¿>{xVÔ+Pÿ»¨^~BÞ4]Ù3R±¢V²tÓ)ÂŽB!]Òä»ÒÞf£ˆnèZðÓ4?Šy!„TÑô;Q5H¾.MK!¤)þ²n”ž×‰a¾D¤ÒÛTebMßÔ åGË`*÷ì^]ô¾… áÆ¹ÈÁ†ÃÄí¨8Š4B"aB:ˆt¬°" ûŒ¨wD�_øqƒ 2ôxXýúuw üí{RñÿÖòóÜnÊ~{ÜW»á^„g)Máî? G×ÄÛnÃó ‚4ëÝGÅ=z/‡¾MþßzLü¨§-”KËÖdDNþ ”yýñÄ?šÆý-¦k(t¬ 1!›ÈìvÕìö;j!„4¡y}'ô]aBMW"ªíBé’¦/ªÒÕõ±5 #F»“í„ÂB6¸æ«0׿=¾A⇠^³“îEÓØüìÜn/&\&Ë®ÐÛkHVsÞzë-ç±DñÃg©‡„NE X1‚†àR/(ð�„}°^ÄA¼póæÍ<¤°""û|© Å„ÉzNÁv IVæa«Ê+ à>€ˆ÷µê«.lœý&¨¨ÇÞÃuߟз àùyå•W¦DD*2ªõ ç{úñ½ûdóÖá¾Ù"f³c.¹ã…¶!„l. ;Dª³¨ÊÃß—£° é’&öÞ¬‚žªŠó“BÈöbûêÒ„Ò•m«5ÜHÙ.(ü!d©­púo{¢»Ü¤2ë‡Z©3$üa„¬#êÑG=ïøX&˜ è±Ë6Tþ†çˆ}ò ¢ˆŠÔCÉ¢ž“×”ÐH>«ÛG“ ¡ hÊhóý¨£LˆZu <[eÏgƒæÞ~Täã/æÙ>R#PbE›l í¿v°ð{E!DiûM¨Y=IVfÓÙ´ÍEG´ ™fN›õ�B™—6‚ŸYÄ>U6c“öF¶I²}PøCȺ2*âfa¾&›ã‚·Ÿ:„¾È'$üñŠG ª<–e”¬Š1Dƒl½±¢ˆpèo ‘<”@ ¤ÞT¬÷žEÐôþâ}¸}Ì{ÏÕUTýõuD ;aºê<ÉE>F¤—mFá¾üãÇ1=‘­¡ùû#ž/vÆB™“(d³…zɚشš†aiK 7¯°gžu^!„B꾡Á‹!!Pا¬Ý³I{(íMB¶ ÙJ=ùº@ÚüoÓÁ)ûw!Q‰T†bÇ Ù4üç£î™ÈÞIàõDz­¡îY:ÖËN%Þ}¦*ÏØWdJDȦÓìÛÑ>äB¶q¶ý—BÈ6¥O¥òl;oc0p}¯™�¨+;!ëÎ,¢Ÿ&ëê–ËÖÍoƒBÙt*­·ÑOÝ:_ÔT�Dñ!PøCÈP)Þ©Zço×4%BÝÖT{^ƒ¬QRV‘Ö¼Co?¿e±ì <QÛÍ*Ü„l-!±N÷U'ê)ɧR4DÈš2ø¦tߦ25ù7ߟBÈ&“Ú\µc²Ý¿e£²³vƒY]%Þi.�¢mH¶•.D?m–›´³¶ñ.TíPBYÚÚbUö[•UhçÛ‘uËeÇ¥ø‡(ü!dSñ„>“ÕŠ¯çõ'ä±DçeîëÖù„Ä-¬“M¥ñˆR ü—ŸA²õxÞ~üJ±þ+VžÉRÿÝhÑaÒØ¦œ±†ß8BÙN ¬ ƒªÃ0„lÀzÅ?„øt-ú‰ëÚ@' åÛdööN¶«BÈúz‡×ÙfMí·È¶!¦+$qÃ_¶ Š!uPøCÈ:QQy-&›®ÈN­³“·®×ë<ðøÂ»M󶃦)U;—l·ÇY«büÐ�[_ºhäY…g­¤âÛ˜ }Ä|+Bë‚ÙC„¬9³ˆ~š~¦ÓÌ–O£}!„l>uuü’ !!PPÔJ�Dñ!m˜Õ‹Oiº&i¤è‡6&!„l6a;q:M[ŽÝ{ù‡Aeb »Ü丄͆ÂB6ª §íÌ,¬®W2ûÞ~Tü{Â"+XhRQ^UÏ?Ë*ƒo´‘ífY†zh´&dÛ>ž�(°E=d+èDôÓBðS·oxÿp^„B¶ªODÓ0 ^—ÌtGK‰�(,þIó dÛi<¨QfýÔ ~ü6ͺüªÖ…`{ !„¬'u^sBéÊ…ß“í¡m‘çMÜú„<þÔyÿi<8‘²qPøCȪÒAå0TÁµëc#Ò¿1Ç•ùb{(]™'ù^LVQð£°rNfa£¹î^[ô½H‘!Ü·J¿YéŠüï©ï[&òé¤ÂS0DÖ‡¶›v‚ŸŠm-„BåiJà÷BÖ›Z;ª¼#&ô ˆ¼¼§;x&â:Py'P¹÷vÈmgÑOSÁOã}¥y»%ÛR!d³({¯‡ú½üõU*B ¨¡¨É2!d; ð‡u¦¦#¥ñ¾ÙJw„Ñt#WÈ3ýÛ(«hx”7Ê].4ʶ›Ëj4*óÌE‘¢§0ÇOÛf_B6Œ*ÑO™à§LìÓÊ#·om¹!„¬7Þ{½j„³8Ó8&¯bÆ^›A�¨‘÷ŠÈvÒTDW f¬X'Þº²yݺ¦ËM·BYÊ„>þ6ßœUü“ç¡ß%³®N:VÙ±ig²¹PøCȺ“yê ®÷–ã²´6Ÿ€ñâ‹tz½ž¨k$`}U80‹MWe@]6« „ Ñµ]Ô=‹¤ì8¼ÉÖøúÛÕ+P­¸ÇŒÒ!dShãí§­è§^ð7Ê;¸ÝÛ¿ vÔBÈzÐ4Ô°ÆèÈ´ È7ó¦rª�Uyÿi#þ!„i$Úñ–Õ[ùâ@Ҹ܄BV›°æ§©Þ¯îïº9úØòåÌFõÔ»’ÖB…?„lq• '´.›Bb Á }5øÂkTèÜzï yû±Â_ù\f-»BLáé‚Ð}ÔdÝeþþþRùè÷pä !" Ct…?…õΖæÂ bžáí… B!d}©¬·ì°ª‘Ù¦M"¸‡Íʈ}ÌÆiPµ÷Ÿ6v"mJ²mT‰lÚˆ~¬Ø§¬m²H*ËY¶ŽBÈæ²É&ëÔö›NøXÏüØþ6·®¥øÇ·ËìIÚ™„l&þ²‰ÄÕ£QÊwK;6÷÷÷Ýr™ÇŸP¾¾¡;nÊY%#ƒÂ2MªÊ–zü!dI¨Ø§QR¯‚\""dS(·fý”uÒT¥)þ×7¸=;k!d=©¶¿ “•SÛÓÏDdwL×.Åq±ƒF .ÞJÅ?E!›NáLU[Š]gmE_äÛÒÿØíR*þ©/Gж\r{"!„Q)ú).E?á´j÷aun‹ª§ŸdnE@.ÊF¶W,Ò©ø‡²yPøCȺ±¨J¤É×zü)ô4ËÒå6CšË6H–-úQhˆ­/³6V)«àñ§n!Ï"¿µ|¶ÈÒè'0‚Ú ¿P*ø)Û^z¬e$„²T¦(¾÷'"œÂv3Z{"Ô %.xöGY†ÈuÒ”yÿ™GüÃŽ²Ô‰m só·/ìÁ܉’IæãØ ðQì3%(’€]([Õ:B!ëKÔ@ô#5~RRJÅ9÷ŒÝ@ÄHzúmóòTï?!ñR%þ!„lþ²a”u‚Hf0Ä5ëª\ÿMåß MIW-„X6«àñ‡ ›C½LœÆ?!E¬·÷·iHžZר‡í¡©è'4*»l»'Ý6ÁN—*QQÙ²ŸžBÈ&1-Ü Èž|"—¶àùÇvÔÄ“4nûÔà¨l9'ëz¹�h6ñ!›Ï¬b™¶¢Ÿq&öFÉ<±$ãñ” â» ЮWˆ€dös!„²>Ô ‚Å?“Mþ`xý&¹ï’ôòmq(ÄW@ü3«MI[”̓ÂB¶_�dÖ[BŠáˆÆÙ$x/²”4ÞFqLo=„hÞAÓDôüd7q¬Î;„…@~³R!„l%3Å×}4 Æe:câLàS)=ÕY•lËï Ÿfœìßë7ÿIÓ²ÍÔzø ¤ ÔÛD?£ñHF£QÑóϸ˜vbBªè<®,‹ÿwÕ:B!ëË,Ÿ|.‘MlÎ(š,Ó¾Oç"žä¿~?rß,]‡©—¥©ÿ”yýa?!Û…?„l:M+œqØK¥©aMWµ\¶nYÐ�"‹ é}ÅF"BV€6ßN~3ȆÓfv¶à­«ýLo zø14ÉB¶ªL$Se –s²V!„lmÃ0÷ ‰€ôß8ë™tÖ ÔÂD�”g¬Gõž2¦×M‹ØQC¶‘ZÑO@ðã{ûqBŸxâùgä¼ÿ¤¢rl‡N�$1zSÑQ¨Ì„B6‹ªþ­¨Ä»Oä‰Ä³g*ª€§?H/K¿ßKC|%Äý¾ÛÞ‹£‚èGÿ¶y—‰~ÊlGÚ”„l>þ²¡´ªlvT1Åh ¡A!d%iñmdÅ™l%³Š~⢗—FâIz–£´ãÉèë2á_&©•Ý•L!dÉÔ0*vÐÄfŸ|9$Ê×õ’^š,žI+i·]2¯!ãQº­Jücä´%É6SçA'˜6ö½õ'ú 1]\Èp˜zûÁó O®‘³/“i8ÌìL™ØŸyþÅcÚmyyÊÊ×p=™¾3É*0ë³Íûwu)ým*~³Øz÷kGNö‹2¯‘º¢Sˆ}d”|ƒûr‘ÑHzƒTô“‹}D ÂVÍ_·ITæ‹v&!Û…?„l-ÍBG‹îÏÊ(! =„¬ïb^™n“+Ôd£)ùžÕutT‰~üQÖyWÚ­êFj»QÚC †J…F^¹èñ‡B6 oÑپÐG¬÷í ÉæqKÏ)~ܗɉzr!LDQ/R‰On–v¸”Ú±C~‘-¦ÊËŽoÛ©ÐXO?ý\œŸË„?çî±ÚÛÙ‘A¿/Pïe$Qü;rÛâ±ø”Wk;†ÿ –•Òœ7•‰XB. ¼d!’zo@švb”Ù›ýäe" áèn€dvc_§E>š_Á® Éë¼þB6 ÙXÑ$„Bº…B‚B_„“­4Û¦E?q¾+Î:jb~a”n§‚ŸÑð\ÆÉ\÷+ñ—–cª¼´‘ !d ,ðÝ[†Á÷ø£ë‚!¿tt6Â,ônäµDý4C²Žü›¦áŠ£®ÓJ7’»`3z^ ìœ!Û@Uh¬:o9q…ਗt ŽÆ©§ŸTô“Ø£±ôÐÉŠ){^ÇQÏ…SéÛçNõê¡÷T\˜Ih‰2?Öë^MB!T!«C4ýWJ•‰Êsyñþ†9rž#7GÊ8ó d=ÙÐ^…ü3/’±Hã_~Ú „lþ²Møž !„Ò~GÉ–ÑØ[]•碟\ìã¼ú$6£ /\£—Äø{˜tÜœ»í…|Ä<“¡cO½ò‰Lm$¼—D¼!:Ù:k±¯Ãã ¸Ú4ýyjï‡EÿÎUüu/?:<qþ v¤ŸL½þnòÙ—ÝžÀ÷O¤ßÛ‰‚Éy’\üãDC¦CF*B~UÁN²-½üL6JCž¨—ç2™2{òâb(çgND¾×Èn2õb·ƒ{æ ÚMžm¥üùŠkWó ¶ÐÓöf`?*ŒÀo !Ÿ~ ù=$Ë"*]¨ÞPÕ%©¸\mÀ~;êùh(§¬‘ÛŽL¾Sx|ÁŽË/ è¡×B¶ ÙDšTt*FÙB!ÛÌTx¯¦ßUV¦ÉÆS?*;´=í OÖç‚ ¬ó&ë¬^œ%ó39?y)§/žÈÅÉ‘Œ.N%^¤Þ~Æ£I) ÇÏòÁ–q¾&T(©=à ·‰·Õæ§U&+ÅBD/fºoìhÕéCÇE¯ q»¼7B´§‡ÝSÌ@û¦D`U¥©Î*.Ù§Q'F0LCQ´¦{ì>Q¶«/½Á@ú;û²»EöoÉ•¯Èþ•kNÔë÷ÓNHzÑäûf<ü„GXÇRÖ)yÞÙf " @;¦àégœ œ]9L:POO]€¾ýƒä9F‡)vtÿÄî] Ïp.d}n-¨ó5kžêAÊŠNt›®~ºm§Ì»Hêù×¶*ý¨x!õè5Î×õ2¡mh¿â»aÌ3Ï×üžv9”“r"$ØÑ¿Ýî·a,çgç÷Òû´ï<OöœPulîÙPžÖþ¤Ø‡í†ÂB¶„²xØ„Bi�+Ñ„„‰ÃÞ~t›ß¨å‹~¢8íœ.œÈçâôHŽ}.O?ý¡œ<¾'ãóc‰GIãרä“ýgV˜y\ÚIÜà4º'(j%‰âÒco¤·•ÂýÞv™”2^`qçßò`îiuÏm17祗uÞHæ¾>¶=ãICvÈ»ý}âðºõgþë?û‘¥ôXí‹ÐÖæ›]§ßÉQ£ƒ÷z{“,j°j"XJº^d° ûWoÊõWÞ•»ï~K®½ú®Þ”Ýýäƒ0r¢파3o"â:³ÜTTî¼nëõ‡M¥i0_L`;öó¹ÿŒeè<þœ9O\Ww÷à6!{'¢ƒT”>¬ß­~çwÝú2¬ ÷Îùù¹[·³³#ý~?~`›Š8¯¤ H·­÷M•˜G½p©÷-+¬qb†ìÚ–‰€¬àûëïƒë®ßZ_¼có·¿ÓÐy޽ÈÃÁ`à~7Ìm:̱ó³ä½¡÷ÿ4+UAᱨ8ÖARÉ·k4LÚEâôý2%÷`ò ¸û:ó|UöŽ«òúã²ÙPøCȺBñ!„²°3‡l “FÚG_ô#ygÍÈ5p¼ã'_Èó{Ë‹/>J…?ÃÓ¤l˜åc¼ Ä–t”­_Ö㉷~)eŒÃeIg›)üY©{ä²ËÓÕñTÌ“=wîz¡çÄ?“N‘Ü‹—éˆ<³y¢,«x",rï™N;«p?Ç%Uöø’ªòߤ‡h§'x'K')Œ÷ËFÅ_¤±ðÇý4/wyÂú<â܈û?Ó´õwveïÊ 9{ù"YÑw¶èÕ÷¤×È`gÏ] <èÛL; £üþŽ¢Xòï—ç ¨Þë!›KÐã[ÙCÚààÈ:ÁAì¾A£Ä¾¼HìË~² ªNŸjÅxžH„ÏÞzPêí"Û†{�B}Xo/!ÔžAÚ““—~oo/ÿ�+ôÁvx’±N$!4DÕ( W¬ËûhvT@4?B×Å¥“îŸ{Ë2Þnpn;V`=㔥eÞ·€æ×ËCb6Ü!=ò G…?ÈËŠwüüT(„ ‚.þàšáwÄ´»»ëöÕßË8ÎÑÑQ~ ½ýìuWqÊdßÙž¯ÿw?ó@𷟬?úÀ½ˆû ¿óþþþÔ=ìD “{*Jß;ÎËÕ¨/ãþ8o;©üV•´=V½!›…?„B!„B T5FçÛÌhÌÐ~±ùøyH&ÐNŽžÊÓO>”÷>–³getqîzhâ ž“Žd=öJ ürþœ[Õ0þq§Ã�­‚X¢;ââ?µëÜæ—=v^Sª“xχ”ßgmï¿Ø íœNA½%dFµ=›hgÇ8�ÅYLJëtÍò|ëQD!Nl1×o×l[üooϧÉú•>~4¹f}& ‰/¥'%ÇíËHö’ù [Ž’Î‹bfe ÒÔu3h9Ó¹MÍ~+=w¥U)eG»¯”Äç9ù4É+ëP]ÈÎþUì_qËÿ¸2öĥɣy‰v¬h_LÅhì`g^™ÚM'ä¨l²¢ù÷Çyÿ‰Óð)Rüž¥!ú$ÿ6³oQþ|-þ5=·ðƒH.6QpMѱþìÙ3'Þxùò¥[a½Ï ób!| C"õ�£y`=–ÝËê&äUû£³_EH«ù©fV×ÁÁ;6òCùU`TÖÁ¯¢œ›Š_�ÊQ Î ù�¤9<<ÌÅ'ê iUÌ£žrªÎ_=è¨Ðy© «L�¥y©HûXáz ²B™0娠ÉznÂy]¿~ÝåƒßGOœÿãÇ]¯\¹’轂}ÊöǶ[·n¹<�öÁ6Ý·ìú €cß¹sÇýÆdÍI~jQÏNÏäéÓ§rïÞ=÷û¿õÖ[îtI²÷‘V·Æ#g€ž“±z”̨ EG›‘í…ÂB!„B!5ÄÍ·‡:2bÓÁo:h\gKÒ°…NÔ‹ã#9yzONŸ~)#Œ¼޲Æ-õžå§iw²ˆl´§4<£–.MÎürÄS)õ„ÑN€1?“†ñªåM"Ž‹æuëÜÎ:ýÂ'\ˆÃ†vÇL¹1ï™Î²A!\ƒ+Š×ñІîQ<rRrñE.ˆ11Â$T¶PQ‹Ïb¹g›²ó©ÞÞ%]ýË<~œ …Òôûûyõæ-9Üïeïã¸0Òþ,é/|~,rršŽjºÎ tªKê x™ðÖÀ_ÎâïԦܶcÄ lŠeÖìÒ[*ÊÏ#_B¨2P“ûx8J:øŽž8ÒîÁ¡œ½ýó2žËh°›cäÄpÑÔÑ‹èw¯Îë!›HÙóëÛIS"òŠç~Z�$Îã ¹§v':û³ÿrѱÕ&òS)„–%«ï±IQ?]@ø£bà T¬F…j¿à¦zÒª�yìã{üÑ2©Wä¥Â+„ÑVZæPù4?»]Ó«XÉ 0!½ŠG¬°ë æA¤×e ÞŽ |R±Š X´LÈK….˜«èÇ>·¾· ÈèuS!‚Š”T¨dÏÕ†ÓôöwðÆ…®•Jø^ŠtBÙ0DZP>NÌ ³´¼@ÅR Ì Ô›‘Þ*¦*þø`ˆ|ô·7nܲº4¶Iã´½Cï <g¸Wpï@à¥77XBtÀD¶rrßÊ”°-$üÉ – æ‹s: …Ù (ü!„B!„ÒˆéNù¸âï‰È'$ú™tØ£áw(㋤¡ùìe2§/Q”wÔ ´ŠöFbBÊ:�ʰaMÒµÉ׿é7°M:›¢, ;™AÞÁÞpý¢ñ[[Ž86>Jj<VëKˆÌqpC´ÑGÇ :v²Î™¼ñ9Žó0_nduÒo2Ї¹×Ÿ4I|w”­/”% §&ûó ®iGÔut¯òñõ=E“÷öµ«·äÛõyûÛ.ލè<{úüD~ü“ûòù½GÎãÂù :“{¢˜¤3«?ˆd7 ÏÑô]ƒãã•„b‰=O=MÊmßµ½ìµáG\'Š¤â€‰P§Åå‘íÇ&E®¬�?—Ó—Ïdx~âÖ :gdòM›x(Ê m–Ã#±ýÎv¾m'do†&}nÕ²ŠmÇéX;G³P9Qf{‰äÏx$ú=ÎÌK…Ïù|„®Ÿ†\‚°C;ÕUx¡‹Š y¨ õäßÖ þ†'+ÒñÅ%QþýH¿Ct¨`EçØf=�ùåS4<nVH£âûL¨hGCX©åP“ [Ò0•ã‚ÀB½.W¯^uûé·^R�×WóSQ޽ž8&òÄßö¼ÕS½®š· `T¡a´ôwŲõnº'4?[;SÑk¦×UÅJ8®ŸGE_ê%HÃŽi¹üpoö· ¹ÊðwÖW‹ÐïÑtÐwî¼?ô>Í=Xy陋óšªá½4oÓŽPÑîA{’Bá!k?B!d½`…›¬7Û³BPPÙÑlE?Š ·£ îk|qžþÀöQÚX:Hc¯ì:ï"ãñ(sŸº‰ÇHÞ‹‹ó¼Hö9ë÷µá?i˜>È÷W÷ôggç®a{âj¿ÎCHL{whújè¦ ÐîøÅc.·Òþü‹ž]&û×/îø…½Í_êb¤&Sëì$6ûɤSC;"™tlÄfw W4žQm3Ê£&ÿjž™rÁ Õèô¹yó¦{ÖÐA£Ï:J4tBÚ¹‚ç]Ü<6ï{Âð̲¿àF8£#%i¤é0BöÅ‹£¤CåLŠ¡‰óAÒIu˜…¯@gÚEºbÒX>i4×ëV¸ôµ"B[ø!Zœèç’ŸÿV±ìõå»òÕ7Ýú‹áHŽOÎØkwgW’W³ÜxüŽ{É異˜8ë¬@ø”äw}õ•W]§‡vv½<’—’l™(RŸX&÷ÝÎîN>"û»Ž¹$ì‡ùÄsФs¿ïî×¾ë@hmìFõ¯éÇ#õDÔŸxˆ\hÒù2L:ùd˜]Šäž¼8“ÑYÒ9Äñ†î»2ýÄÙ¥*޶ö¯Ñëw­i/â¨{WY]Ö¿Çqú A¸¾qæ} 8y[øœ-âœW±}ZÅêGÃ7x�í`ꭨחq‰ U"*’±¡åì>Ös/>UŒJ¬ðÇ–h¹«„?v½ Wt m¦¡Ëð­…‡9öS¡¯}ÆTX…üTŒƒü4”˜^ï\Ì`<üùÂa=Wµ-5Í3÷Š’ycjêI§ õö¤“^ ç…ãà¼T$¥åQ¡Ó¼Ç÷±÷Àu·"5²|B‚Ôªe ç†zP!YA –ÕùÒzÓØk?‘)«Uïu¶A²½PøC!„B!dâà:_èãoCgéx4”ÑÅy&LgÄih¾B€½yýõ7åðÊaÒÉ|á¼7\9¼’tæ¿”?þ‰<}úd’s<ñª°³³ç¯¾úª¼óÎ;®£YݱÃÅö£Gå‹/>O:§_H]{jœ+f¸:…Ý¢™$ÝOf;þ*´7Ï[†ËÛ?öæÅ¿ã6Þf2ñC,EïvTr¡³ žU²‚Bà€Ñ£xÎÒ £’rfÏZ¡„ï%q<߸=¢T £ Õh¼þ+寸Nš/¿üÒ‰7а9–Ñ1Ä6è8IuAc)zÅJÃ1Aœ÷Ê+¯È·¿ýíd~׉vÒη‘<|øP~øá‡òàþƒ¼sIÅ(iø¦4ßÃäÝðÕ¯~Å• û=}úT~úÓOÜ|‚"=‡²±~£úôï‡/e óvØLí¿àã dù»ŽrÜwr"ý³O¤÷ò»ßÎOÎåù³¤cìbì:ÄŽN2<Ç2rS$c'¨Ià åjòþÖ·¾å~g²^&ïñãä^¹ÿKùèãääô$í�ñÄLîì%ùߺuKÞzë-ç�£¡O’<ž$ß�ü¾Ïž>KClD“ËIÖùŠû!»’²Œ{©'íˆjÇcÖIë¼!Œ »œ£œ§Ïóì£÷ÆØ&‰Çž�ÁÿÞù^€üN˜Xª¦uÛ Y? ãiOpqpÙ?¶!~ðìEž…P_Q´ö£]ˆÖõ„Îïqˆ&ÔËŒäøX¬×(ÿÛ_åM#”Þ/Mcï9ß[˜%ÔW¨Sßzî±é¬`„¼åèuÒPDH‹o.D?*ŒÁ·˰±TPd£yêñB×» ÎóÄUzNš¯-gîÝ+Ž !ÌæÁþ–ö·R±’ •ìyiH°Eˆql9l(6²þ¨Ç*}†@joö§CÖeÞê$û¶ÙÇ<ýÄÅSÞ¬@áÛ–®0û1¼!Û…?„B!„BZãwº”+#Š" »Þ‰Æ©è'Ý&Æ»Hº÷î`Wnܸ™t_•çÏŸ;o?·nÝÎF“~&>"×Î…ŽÛƒƒ+rxxÕÍwvv`0Ø‘ë×o8!ăÌþå^3æï¸¯ÚZߨ¶ìã/»ãy¾ó/óÞÒü|ÚZèVصÈÏ„&q‹fÔ³ŠlGŽíê;áO?k æûû"=SäÔ;‚Þ÷Þ¤#›Çùvͯ!®»víšë,Ráò}ôèQ&èÁíÌ;‘fORÒçöà`_^{íÕdzÍ=ïNÈ!éèvx‹A^©x(öDiãøîîŽë¨‚pHG³?~üÔ‰þ—õÎâwŒM®Çt'Ýd›/ì(žÃâ¹¼ãG¹¢jrÌñðL.ŽÈðeÖœxžÜožå4ù©ŽOväüô0l¹{/Šò·Ýä~½yó†eB„‰m7n^—‹aòû~ÎÅùy¦ÇO—zYG fwîÜqŽ8:'ñ;Ÿ%?êé®îp‘üôÝó£h6ĉzGÐŽEŽ$ùNฯ—ˆdûãÇŒg¸ éwÌvž;4«Å>’‰úŠB3v¾m£é÷5d‹ù"‚‚­×¹)™-ã¿ïW…ºkQÖiÛ&ÿU|ÇÌ#N-ÛÛ(õü×nßE²ª×Þ¿þøÞá;ðTŽz¼ ‰Qüskz®!ÁÔ6S&#ëõ0z†&Í‘ù†ak—ŠWó<Z¼ãis²ÙPøC)Å6@B!„í Öö«Ø®ÞlçKp›fc֕ެÍ»`û³gÏ\(–›·n¸mê&~j¤\–Ö£sùã?v^B°?:à1B²ië’UÆnGQ硾²àP'Ž0U1ŽŽ,-äáB…O&ñ8ãi8ˆðA v¾ŠT>×!TˆžÕO>ùÄy…+|xæÒPv¤{Á;7r[;© 4Áó!ÑééIî-È/§^_RÙëºMøBµH&#óÏÏGrtt!/_î¸A\ß×dpráD8øíNNö#»gœÂ* £•½§ÓCùþ÷¿ïB5¾ûî;îÕ"6\HêÎ)*Üë:é:»MÑŽ_ý-ñ7Cxpà¾ÒPö{ãC8†´·oß–—'Çrzvâ‘e'×ðÄb<üdyD¢žt”¶õÈDd·in“Œã¼ã‡£³É¶0m/V§-¾¿‹ûÅq\œ¼|ÙÖÙT�<ÌSžYß —ý. c—çÝö|V¥°J‚$õ˜BˆšÐFÐG±džWc3`Êû^ÄÙ(©2ÐTŽÆn¤ IÈv@á!¤à„B!D Û†õö¢Š€ôï¼£t\Œ]&J:f‡.Ìpwè }„jÉöS'ÎÁf“Š.\ç.¼Ž`~~~æ<†¤^HúîïÜ©Eí¹Ìkoûþó²iׯ}~‘Æ]ÊCq©ç¬ôN=h¨@ű·æÅ )Tø#=çHK}F¤ÂlzÒ²Øem¼ŽÕË‘N¯5úüâyÇ„g„!(Ãh<Ì¡ÞÂR!I4u}°m”yC‡ RAx@ß”NÎ/{1äNgjëÆ³n¦¿ìã›ÝÌ®g"ŸÇ²¿7N®kòô“÷l²ýä4’/D?ËÑ1Þ»ãä7ˆÝýä<þôÒ9ÞÁð´¶»»— ¹òpü3"öF5kÿ„õÆd'ßél’з̊ëTPê¦áÈ…\ݳz}¬W·*û[=&ŲšžYe|Û0ôüN‰Lý4¹((οsQ/››wGWÔåé{fðLMʲˆòΛG›¶cÿ´ÙgÞò.û=ÜõñçÍÏ¿çô÷PQø¼ååí§e¿C‘}J6_ho”å“ú“ÿÄÅÐϾ GÉ·i®¼Ù:(ü!„B!„ÒŠ©Ž¯óB¬Àg’2ŸOBëÄ…Ž™ðØóÙçŸÉµ«×äêÕC9<<íÜ?<<k×®º}t4ODpUîÖ£ÃÿöíW’yÚÑ ÁÏÕ«W“Nê4l–ÕëCÍYË|lûþó²nçoÒG¡g¡Y~S›Ž±ó(‚~„êõú™hFC}¥Ç¸¥B—±yÆÒõQÔËç“)+®úà™ÑðXŲgŸ¢lʶáÑe"ÈI·ííïÈÝWn˵뇩זd]ršIY �L§xœ –"+àÉÅÅ™˜àüܹgÇ'£ô<‹žc&ëÓß,Σˆ©`©ðËdóH*C·åíøUi¼y{¿”î¿ÀãëjÓñ¯P¸ž§Ãž|òdGžžFi˜,üãSA$¸á0–³a_ŽÏc9ÂsTÏ]Ì^Ôw9Œ“ûóÅóò³ŸýTîÞ½+ï¾û¶ìîí:/A/ž¼pž€ð¾×÷qúÛH¶=êÍ ƒ4äòÁz‚#ä‰íê “ •O@ØöôéSùôÓOe˜ÜûøVx½@æÙNüɳbExîoýIÔë;eÊ;ÿó’¥ÌŒ¿¾(˜)î;ñòS´-ñ­À³eÈl§zg|bUÚè§-]&ºê žµ,¡ó‰|Ê„?m¯cè|Û\AY™ýõ¡²‡®QÙrèj+Ú*#ô ØyÙ:[. €RB¿;¯Íjz†ª–›ägC gkÍ_åÞTÓ¹Ú’“:Í›# Ùn(ü!„Lá’ÓŠþFCØ£GiŒ{t˜À7:S°-uÙ}!êB#+µM]¦k^‹VùkÙÕ-½ºyGÃ5Êmpá ÷¥~F5!„Bˆ2‡Ø!_h”/4deû{V% ÑõTF‰M·³3pbx9;;uÛRñ‚vŸNlXØ€&‚¡T®þü™ ÷’Ú‰“NØVçÕŠmß^ÖXôl´ÉoÒ0Œ¹½×ñçxœtdFý|»mDy@Ñõ“í*ú±$©@–ÇNxïßÿRŽŽ^ÈÓ§O\õ><{ðÜ“Iz¦öK=é¤Ï|æEÆÉß'§Ç.?xûÑ0c�Ï,Ž¡‰î-çÉ»áIRŽqæíõ? A• J&Â(­ëbÒëç_û¼¬±¿Þþ]шî~®ªßÛxÌ1«÷_äñ§3H½c¤KçÃH¿ˆäù1~{xêØ,õ¼”†æêAbå„@± !—yÚɼQžÈ£‡]çûµë×Ü"›'Ožä¿w¡>ž‰®ôÝ aêó¦ ˇß×þ~z¿ë3ƒo¦P'Š’†2;wSÞ^…ÓN®iœ}º¦¿mn÷\áÓ²£e–}Ù¦„ç"¥£¶M!cÑviÅžöû8 u†ªÖPÙ»`ñË¢Ž5˾U–E–Ù º—Ë–Û\—кеisü2ê„oUb {œ®îÿu§©Œ,ªß¢ÍïþD¨Ç mãà7Mÿyü¡¨‡¢PøC™•`uo ÔxÀºû÷ïËÿñ»ÆÓ>ø@Þ}÷]yóÍ7]#ÜO~ò“¤Sæ™Û#±ïܹã„A�!ð7ævd%°£ñºy¡a Úø|ûöm× ø§ú§î˜¿üË¿,o½õV^»˜F5!„BH€’Qi%‰M5ñ„0i¸Š§:OÇ;[ö'ì;�¼ ƒVÃÄø¨ð6-ìA„jïa;Ö«-J8YEB‚û÷haÃÐ=?e›—%Ý–NÅÆâ8רzaè¾÷½ï¹ú„:èû@ŒY‘G¨"¿ø‹¿pƒ6¬D<ÈßCaǰÏ>sõVÝ6Žåâ< û§u[}Þ'b*ë™%^«m{?L~ŸÔsHÅ7CôãL†µ¸^*üIî¿Lˆæ®Yòß0¹öã¬ó]’[ ÷ ¼ïàýŒû¿ îõȦ¸<2A’ÞOý`?´+è@õ¨°G_[··mvÞ„ÐýçQø–Ù *ÈšˆÌÒâTuÊÄ5Û Ù fí8­ýH\ ñ5•¦mœô‡Á‹:PѾ¦EŸÝ³èÙ¦ù× @ªÖ5ͯ eBERæc™tqüY¯a×çÞä7¥0¡Š~Ö[Çê"ŸÂw 6óxì<¹êò”¸qâŸY÷#„¬.þB¦ðÉ€vŒÜ»wO¾ÿýï;M:º'7oÞte4Þ¡*Iލ¹~ýºAü£ ®H‡ 7í°¿ºõÖ†\+ ²qä‡}UD¤=Èh# ò{üø±sÑu_ÿú×]c1ʉü02ç¤eAYöÃ:-;ÎS }OF¡†tK„BÙ‚‘^'i¨sF—c¯Ó4”¿ë”Il±Ñ0íøÍ¶Ò—uZ¸P4™W_áƒU$ާGµä¤ëŠõ¦ð§Z¸¢ wDñŸÅâó<96òDý Sèi²ÐñýrA‚©ìøÀ÷Ö`Ó©�Äž<IVn¿®[æå'^º—«Aµ+¢š8©w'ó>¼ødW+¿Tqš¾§^p°*rÞ—Òû7]7Äûü屜Ÿn»´ã¡—¯ˆ2_Qzl­÷ã}îŠV!(³¿³?Шì> §;Hè¹°ërÁOž¾¢S&=`1'vº-Æ&CËa»rz»ÿ½TrhÃC»Ÿ}/øíŒ~[¤‚tÖû]{r",zBñ=ùBÔP¹Ä»&¾Gu7– ˜lúÐûOϯé{ÈŠ§´Üe!sýòûÞ`ü÷´DU!§^+{ÍÊÊä—϶)ÛòéõV:?‹ M±¿¶ «]HjmŒé¢Qþ[ão´Y‡î»ÐuÕ|íqCå]MËÀï]ŠÖ‹.ïcýf¤ï‚(7°§¾iæÛ‚UQ$Svf¨l]„!ë…?„Rl¯_~ù¥Ñ@8ƒ‘v¨4cÔÌW¾ò7"#ïÐè‹õý|ôÑG®’‚å·ß~;÷þóðáC×iƒõð O<H‡üqä¥@Z;zäÁ*98.Fšbt(Òèz{>þøcù'ÿäŸ8±&"$uã æ8öC9 nB>¯½öš+#òÕN&œ¯z2Òëã{.²×ŽB!d¨lpŒ‹Þ|ümvÿÉöi ÙÚPö¦óUS•w•u*4iL 5’Ùõlx%—‰½ÿü»É=éþ-¤÷ó¨ý´-ÓØ‰? èÑ0϶Þèé‘vODIeÏSYËžK?½?(#·xB(½ÚyVJI&Fá³ wÆIÇlœu¨»Ëd~Ÿ(í¬ˆ3/@ý…êrÚ9‘y—rÿe!À ï÷ȼð³ìrñOøÞ­ ½÷Ëî™ÚóÍÊV8‰$‰øV½ç ¢Ÿ,b§Kv]ôº…ŽÏβÁ4±-›ˆ‚ìß…åÜÆ;ñ¸Š[Ðî‡vDëAíŒhÔ€ëuXa‰}¦ýïJì}{^@ê¤Þ(UT‚¶Géqt»æ‡Ža´Mê`Hõv^½NPìz,ë!ÓžS: Ò–=t|¿üº¯µT裞;‘'òQøMP~ükÆèõѶZ¿|êAèuôÏ÷½°?Ú‡Q.Í_CC"=ö+zdLƒe\/kÇaÝŽã i,e×U…QÈCÛºíïцËú¾ð;FHs¦¾eù÷¥˜Æ¯÷øË ÷=Y"Vå³IÈfBá!d [qÒÆ*T6 ˆTpP©hëP!»víZÁ½6ÒCàƒ¹Vl¿øâ‹Ük†[À~ûà˜?ýéO]^¨°Àï­[·\~pÕŽÊÒ¢<ÈóÆòo|ÃU?ÿüsW.­¨â8¨¸!TÊ>ùäW^ˆƒP é€ãb;GHÿÞ{ï¹ý!Ò 7ò×¼±Ê€4ÿhÑoD¤ÑD!„M¦YÇi1Ì—Ouä:MÃyK]§|•Á®§‡¬:Q <Pñ¾.z>˜ÞÞ-8Žx°Þì|’6ípMºA;Ö|T•¸)–IÈ([Ö8رœŠºKm¸’ãqG>"¡°T¸d½¬ó;ßör]K4QV‰ÄEM¾nÆzuÕ(çÐ\ ýÖùr”v™Ä!o?Þ·«p/9EO&f*„ð²—ŸÛȦÑÅûÔï5 Ó¤2é(31†¶u¢­m|˜ëw m…(hÅ8 öƒÀû ­ûXñŽSE¾ðGÅEê¹þVoâÖ òG[eȳŒ–£­yØï):pÒ Pp<´£j[®º¨çì£^ÔÕÓŒõV£çŠ¿Qn¨©çn÷WÓØ…¬)”´Âü­mªêË*´Â\¯™Ųô`¿Ðï2êùëùá Omï¸Ö*(Ò²a_¬³¡'öE»²^cþh>êQJ¯Ÿõ@¨¿µ@«à ¿ ~_øƒ´8––[¯!òƲŠÕߘ²äfdœË ›3q¹äõ˜î=Ñ%dý¡ð‡2*Öe¨ y ¨Áük_ûš¼òÊ+òÃþÐ g´iÝ‹ê5‚T„ Båë!ð÷ þ¨8š>øÀyíùÃ?üC—þ~áܶýèGn;öÅôçþçNœ=¨lýìg?såùÎw¾“WØT|„|~üã» “ }þå¿ü—î\QÉÈ_=¡† §6 `æ¨Ü½ñÆ.O[ѦqD!„m'Ô1Sè õ@yÇLAO“c*Mì2 €È:P&¬þ­{™õ‘2±DAT#Æ Š„ (‡–!c{” J0i§¡õ6 ËnÕ¦ÄñÌB”M"¿žf]ðwD‚±:Ý‹yL‡(äÅ7ÍË8µ þ}[ÌÔ¥(Ù¯ø3[ y<ÿ;U™…JÛÒ¬·ÏeU^*6A›£zmA›"„h th'D»£¶{ª×Í3äíÇŠ~T4ƒI=Áh;ªz½Ñ†Z. yø¢€ýÑŠöMx_G{&öU/;*ÜÁ�Ê7ß|36ùï!ÒàüTäÔc®‹z–©º¾ØEý°ŠW½È«€F<z P½Ö*˜Â¹«€FÅ<z‘Êé¿—õoõ$„6]6áziû5òÖ¶á' 줘Tx£åFõ÷Á²õ(…trXïõBt`Š6n=G¤ÑûÔžÞúû4¡ìÛÃo!+DþîòÛKÊìÑ¢wW>Ï„ !•¨aŠ„?ðŽƒŠ"*/¨€¡B‰ *êÖVHÕØÐP^¨ø =*ZZùAzlWA*YZqB:xôÁü[ßú–K‹PcXF éîß¿ï„?H „=èüâ/þ¢«˜ªkX”G+Â:ÒûCx„ < !-Ê„Ê –õ<ÕÝ.æh @…ÙVÌhTB!d»(ið÷F`§³o•^~ʘöt2Yç·3Íê= U§›5ÿËbÞão{ùÛî{sý{¾û)$R[ÁšßÉYxæ¥(ö»LÒKî¯\ˆ¢å°a¿ ûô¢,ZÕj\ÛåQrþÑô=µ[Tüˆzr®”d­p÷Šd÷ÃTÙ}¯?qñ»ç |²ÚSûy®ÛE"¤fý>TuˆÆÆ37 µ¤¡ Ô+‹¢„ÚöTx¢!•¬'õ@ã{ɱž|Ô”臬ÒüTÜ‚öG+Ôciû¦¨©¢i[¬ êÐóÓvRÆSËd'ÿ:éþ òÁ²z-Ò4þµµ×éÕCæ§^ŒìµÖë­žuTÄd˧B*{l åf½¶ÛY6oëÅÉ¢ÞŽ°Ÿý ôºé¾z<ÿ}˜^+”+Ôioïë é°Ÿ–¹ì¾ Q&<mòüµi÷nû<—å]&dðóßä]Ó<ùCH±dAdv¤”‹|¬©ædSyÕ6BÈæ@á!d y¢•T(TóÑG9¡ *G˜ÃX€ H½©¡#Ntô‹ºj…0#'¶ÛJ,&ŒtøÊW¾"ï¼ó޼õÖ[n;D6�P¡ç  !ŽV ð·zçÑckIÃ‡é¨  £U0¡Lð8Áއã@ „òª X­Œ¡ìZ±Ó )æ¶RK!„²éøªí ¢XÁß7ï%eg^"ò~×È…š¦"ŒùÄóï7+]•»éþQËô]Åö<¡Oì-×x·*>J*¢(ϨP ¼·ë^[žÉº’N×¼é:.”çrëMÓ£ÿÖ#‹n’jTd‹;7ìýø™&?¾‹ó½,¯ÉêU¾’¥#©ñïù'ï«÷Ùä–‰K;c&é\Mz}ØC¶˜*oþßê ÁO§‚ÓüY”ôñíe!¼´ íh#¼}ûv.ÂP4>XŠh;D{¡¦ú̪ëFÛ µTÛ=mè,+ÁßÚ–‰¶Qÿ8ÚvjÑÙwÎ ÞÙoݺUõeÏC½µÛ}µýVKâØ¸6ö<¬(ÆŠcìþê)I=ïàzX¯A~è,½.Vã—ÍfSÚ^­eÐëþèuÕ¦ö~Ñü­P+äÕ燰¶]Ùž©Wx¤Q1PHô¤åWñ’z*ò/´Qcžê¹jˆ0äí87¿¼uB™®(Ír¼P™CçT•ÿ¦¶Éwq^óæaŸS»ÎæMf~œžý3õM Ô½Ú òø²PøC™B]ŸëHˆb ‚AVG6 bñÚk¯¹ @:RBä¡nR­ëSÍ[ÑJ·ŽìÀß𨣡¼P±ÒÔwïÞuy¢ªnSQ&ü9ÒáXz<u¥ ´Be…F¨aîz?ùäWAþêW¿šWæáíÇß/4é6[1'„BÙ* ƒ¯v]¹ø!µ¥Ð°UMdò Mʼr™ïó°«îþŒƒË¡NNû\\Ncîôs<]¦ÕÁ–¶ª#lÒ¡áïµm4©Õ_õ–ûËÉ<)™;öï_ôÕx¿t§|¹x MF]kÞ‘ÝS‡aç9…¿aìˆ!¤œ°èÇ·-«±¢ëíM½÷Ô½´}S(¤’šD[$Ú±Œ¹ ¬ðßnR=¸´ež}µ]SQÏ8@C{µÙßz\·ÂŸP{pÙ¹4Y—o ¬K;Êõº&`ṈΞ”KPí½&ùþz´!_½zXHû"Ù@U¤°)*–<½7¼ îÛQ¼ïlNËar}ÓuW®È ÷¶Tb›™rF™ÄHÎ>qnqš2NòŒrÁoš0ä1±£Òã¥KqáBÖg+ã¸<»=_¸°é7YÂD¶D,ûs7^Ù8¿V^, ÷­½þ‘Øëž>c‘±ò$½!¶Æœ‰}šÇ"Ö;i£*<üж$d»¡ð‡2…¨Üiˆ.„ÒB÷ý÷ß—ï|ç;nTBn!l„A˜ ÈQ/>ê†U=ý�ˆj æAÞâKG†¨ðGE6ÖM®­DjÞ@=þ |îhÜŽ´PO@˜– ¨IG¯¼ñÆN¼ôƒüÀyøAH±W_}5F(¯ ‰t$‹?Â”ä „BY{Úv˜–u´ª�¨ *o¨ÍS-±+äâ|•¹,—÷Åß#Z‹k³Î”ý®¶Ó¨ê ÿ>mCãMçWû»7È¿*ºüëG¶G…A(ZÓz¡ÿ|§ÅØ`îD,Ó4}þý‘á‹~oø÷iÙñZ{HÈ;ãÀ¼˜¶?´º§ Â! æIȦÒDSH;Nßéî žµ+ºuñ8™ÂÏ~H„3+h´"_ S棭xÖ/ë"Þz.úw›òØ<¬g _ôSµoÓsнwo奋R•Jžuhü€É#—¥äyŽ;N‹Y¦Û„ãLDÅ/¦L¹ é'ûé½#²Ÿý>î²B YQ­=ž½ß¢É1ócËtYM!Uèã u&žŽÆù§Jëj.u/±¹°r¢*^[oýØÔ ý|ð߸p>“õºÃØ{®Ê˜—¤6Ý2ˆ+êÃóäÚ4Oÿø…{P¼{;[ïî,õÂÕyÙWîî 5óçÊzó§2o[¡6 Ú‹„lþB¦°†‚º(ÅxÂè!·à¢ˆbþ Â{à6ÕÆ†` ’—¨Î TÆám"¬ƒ¨H+Ì !ì—º¤ÅBxùA>(ö‡èçõ×_wb!”ÞPFïí·ßÎ=�á¼°ŒÊ'öÁ„üQNå‡k\eÀ2&”ûà±eÔQ!7¿„B!ëH]‡Ã¬Û+;pj;v²FÈ(ih×Õ¥¾ Æ%K¦ÛtÔ2&¤ƒxqqîlHÁÚpH«.÷aêhe)®âp˜«©Þ"u¤·†‚ÕcUy†´3µ¼8'ؼØowwÏ×ÅÅ0¥p¼áP½nª}r>*Æ·åAc"B^Œ“üÓý‡“–øgZìÙ2åÖµ$Ï„ÞÆ¦?¥åÏnàHYz;¯Î'tŸ¨b‘hCºí°°}ör?â‡1¹È³*=ÍÐpùH:»óc=FÕïyË"…ÞL™tö¹œâ²®3ÓÙøkfæÎ"Êï'è ”> îUôlPèU-‰ŸÂvH7éœi»MÅzÑšZ_±ì¯ŸJ?®ÏsVlȬ:¡LÙ¾‹J? :tžýuü„ÒÎtóGl„1ue²s%.Ø4öÅo¡Ý××fÚóõí´Î¡e½²HÁv/}òýÑÛµQMoPãFòcñõþ1üK¯×п2êÓ¥h³™ï ‘Å…}Š”ÿÔ6/™ÊÇœfp}{ûWÜSÍo·nÞ mÉóжŸÿ>­zïEþ…{¯xßÊd•Y¿œë¶òSíꜽ…Š·sõíGB ð‡2…ó¨˜ Ò ‘ D?o½õ–ë4€Ð Þ`Ä;èD€Hëµ’¨¡· øÁ:ì‡õ6 ó`=€Pù@h£1¥±ß¯þ꯺ÊÂaþíoÛ¥ƒÐ  8ŽÆ þÅ_üEwlˆwÀoýÖo¹Ž¤Çö_ÿõ_wù T™–‚œÎ÷+_ùŠ+ òEÙ°ŒN€ò"-ʧ.ÚYbŒ !„B¶š²Žo´šÄ6f}±¥+ŽÞ'’¼åRÅ-°+5Lƒ†¤Ìv؃·oßv¶*l»Ñh(÷ïÃcåcç‘ömÓ}aÂþC~*p×ÎùÁÎÄòýû÷] ¡ìÑ{÷î¹<!W»â…/Uœ‡Ó…‰üa‡â¸?ûÙÏ\¾·oßr¶&„êýþ ±Q_qûÁó¥ŠçÓsé¹É†¤Ež°ƒ‘?¼dâ:ìì»2Ýûâ‹$ÿ³$]¿¦¡< þžv]“6Æ|ÿ¨Hh~ëz¹  ê‘§i=¡¬·Ì[혊¢‚B!ÛO*’Ÿ~n¥4åÐtáýó‘â¹V¢Ùu(óŒÐÔ3‹ â´×BÅw¡|òuNY˜uÜ¥…Íï×ò߯ú|\x„ÚS.“¢ÄñIã}½|ô”mŸÊ®¬Ct²GÕ=埮–¿ì÷ÌÓÕe:#¹<-®NS.â)ö›oW<ý]sÏìTÙsl{àüÞ8B¶¶íg6}Õ¾S²gMV¢C´Ö#ÉœåÛ¦öÈÔë‹ûËýÛÆ[R™ 3ôwY!›L'?_ÛV<-ü)÷ßô~÷ó€ýŸ×µJÒ—­/ŠŸ£©ôz>¡òOê#ÑÔõ=öxþ1l>¹8Û[oÓW×&piçæ‰Ùš”a“¯{9Ñ\¶©Þý~/µ 3A[ÕsìïßæwX…ï!!dqPøC)Å  xAgF!£Ã• y¡„5ئ£B´cë±?@‡ ¶£3؆etF�t˜¨ˆF=ü O Ù¥B tÄÀ@Áv”B †íú7öÕtz.˜#lÇñF…FèBzü­ëQfŽPVlÓ󵨪ðB!„l3vŠORÕ5اÓîn*Ѱ´ÈØ QÖƒ { vÜ;·s»ó7®;Ï•*èê•ölÂwß}×¥‡ÍŠã@¼ƒm*‡`ǃèù¨½¨v+„A؎иØW½hBl‘æØn½H®†í‰sƒ A„=8x¬D:xÛDy ÊÇþ°K!.RiQ&ì‹uXFy®yB¨„òîìf¡lûIùNdg°ã~¾Ô#Pœ{HÂù#_Çe^‚¿/fJû°›„½¥é=QÜg^V¥qÓëÔ¤Žš †ôùп‹# ›ü&³yù„ίÝ9‡ð;¿êî³BCy&|)N‰¦Îif¹Ý;E“¶÷¿7ÜÛÊb‘²0áÓíàÎIê½gr¶»qðv¶w{íþ2ÝiÚžæG$d[ˆ€|2%œ^»¶lmóÚî×Ö{Ï,øíŠ*PÕöÍ2щcã:� Õ5(£Í¯ËNæ<¯¨þ­:nÙº¶B?M;¸L€T&ªÚ^—·/6*KkÅI!±OYÙBçúÆ…Ä:~Þ¾ÀÇOc·5¤\]?‹MbÌŠíšÞï‹,Óú’U¼:úù‹Ï_È’nî+HœYÀ[û[²}PøC™Â~¨œ¡óAÅ4:©‡a[1Å\C/¨étì§FŠn×ã¨A¯ûkûtˆhÙ°^GzûŒVRµ£ÇŽ@ÐüµÌ*f(þ­£»­Q¥ÇÕüle˜ B!„lÍíšðˆÔØ&õ’P¾¾gCø›ì“O>qá¸ÀÄfCGÎ(ÓzxxU<¸ïlIÈ!°I=ߌr;„@*ÆMª!ja³B´þÃþÐ e° ±ìQÁvD˜Yü ’XÆq‘/ç˜C„Î%xúüóÏÝ„rüüÏÿ¼ÛeÃ~(3ÒCpƒãa=òýÆ7¾áòRáû×¾ö5÷7<ùh]Î?zôHþüÏÿ\?~ìŽc#=Ê„ã½<’^bÆGC'`BÃåþÞ+®ƒ á‘'–Õó&lj\#ˆ¾÷½ï¹òÙÆy6 ×£¹³VüN™2Êê$óth5¡ØXÝnÔiÕy…FɇF¤ûé»"Vµ é„Ë®3Ïu<ýdE5 òÏžù¦E±çÕg:£¦Ï3ß¡d›ñŸá6´zæ »6”zfÔЮJîÃü2Ý¥e€ýwÂ# ìOØv@íÍyóSïéhs'|X)±ø6iH”bi"‚˜:d@L£ù„òÕ‘üô¾]Ú·ª,6¿:[ʯJàÑÖ®÷;öœÊIUB &×c¿³ž³ý½›ÔÝü}Ëʲõý ž¾~¯b™~žª÷3¦¦Ðn$„PøC©A=ç„Pñ rÊð+we•DzJ­¿ÿ"*¿U±¸“šB!d+ñ@"• g.|QœŠ àñçÖ-ozòùç‘ ]…õiˆ£XÆY‡kЗÃÃ+rõ꡼8Úw6+þ†pç0™2ûùùEÒÁ±/OŸ=s‚ˆeÐÙƒpX©sù䓟ÉéÙib/öœÍ8ØIE:È<Ž]ž×¯_s§�ï9Øÿ,Irz"½ÄV|ûwdìF“]'Ó£G³º¯È;ï¾#ÉßàôôL^¼x‘tB½t% y_¿~à ŽÐ˜‡ü!B´“H…?H¡Rj§ÜõÚÙÝqóݽ]9ï»õðöƒkˆô{»ûÉñÎÝùŒFc¹yó†›ïï§¡mï¾òŠ+oêh,ü± ±'iÐá‰6:FÙ²õ_öã¶m)µeÕvºÏüå5Ë‘ ´Ì—ìdؾ;0 þ‰+žqBHç´ùö¹ÎÓšô°³4dª~[!V¢ õÂXÖ&Šý±¯zžTð7l2ì§vY`ƒª�¢sØ]už�ʬ^%acZñ³g÷÷ó˜!´ƒçÑ8þ†÷Kì!öƒP¾ì:(8.®zw×k©ÜQ;Ðr~u‰ªÔž�g–¶Üè'´Üt[›4Mòh*÷©TW¥mSv_�ä QÊ„C–¸Ëß÷2)A]Ö±±YXå#„Ì…?„B!„BZЮ‘½Qƒw£-Úñ:N''ôÁߣdËHÆñXâqÚ 0@ÐÒ—~2¿zíPÞ;øªÑœŸÊ³ç±�ºÎ½,}ß |<øR^\‘;wo'%û.$@ØŽc] Ï“<NäìôD’ý¯]¿æ„={N\£Þ!‘v4:‘Œôàe2r"›žE©€h-c[2’N›ã“—òôÙc¹ÿà¾<zü0éÄ9–ó‹yñâ(É£Ÿ‡ËEÇ :yœ)É£#ëp8nÔ‹]¾,}þùgòìÙç  üÙþþÕ,ToÚÔFîzIþQ”Š­ žJGÄ9ÕÞÞ®K3ÀµMÊÇIÚqFç'’þß&ofžrvKÛΚé{¡%ó´yÊÝf§¸tÙeÅ6xREVQ6Š3*)NÈe³ÉÐÜCD“η4þâE&¤Š8Uö”o+® ¦;::’ýèGNp Ц@ü‚ex7„§Dx\„×Ãýüå_þ¥³­¬ %š_uûÁ³bSáD6ðd©á¾°™ç+ŠÐ¯çú“ŸüÄyµÁÓ%<KB ¯;!TðÑ<Rjx.œ†˜ýàƒj…?ù ü8…tŠÔð¾€h„<Ú妔‰^ªDÙ³xòiSÿï²oMÝ7¨÷£2O‹:o+îj":*«S–‰±.ƒY¯õ¢ió[[X¯hC$‹°ÕPÿŽüß¡ìwñ<¦Î*h$„lþB!„Bi…v¸ÄqHàÐ.Ÿ¸tŸ¢‡…TŒ"NØòäé'<¸¦×’yâ âAŠt?rétä1:yÐÎí|@'ÏÇ]80tš cä굫IÚ®|Èãü"Ü`45:T¾¸÷…Å­£¼Gã‘ÛO=bbŽ´è¤6éµÂ1^$ù^ /¤wvš÷+:v °AÇ F{£<O“s<;?sÞ>ýìSwÜä¡À0Š[C'ØF>¤y™ìƒüàuù|üñGî\Ñ™E蔺~à®3òÄõAþÈOXFg¹Žò'åJ(›÷r/?®(…OúŠñôt‰¢ŸBOÈËÝæxqõr”-7É7÷vEYŠOtl: Á„ýšî”±ß·4´Cª÷á³Nˆ¥©·;yK÷SÁ Ä)°ÃÔ»l%Ø?êù§ Ø€ýÀkl2ذý�ì¨ÔæJ»^šxþÑòà˜ë¨çœ244Ê�OŒ˜~úÓŸ„?°Ù þyçwœHCÔú¨Ç¤W/=8ˆx`/¶ÀžÔ ׂ*\WÌqü.)ÖJÒ„!m=ô´ó6uyâ ¿£–ÐMV0TæÉ¨©pµM¿ìóx,ÚfÁJ—çº($©À½€º¹>“ëžÙ‹2ý,–~çJòãoGÈöBá!„B!„N 5' ~B 8ï³ÑÆ«—I‡ÄO~òq.æAgæ:BYΓõ¯þ•ý¬ ™èLÁßè|ÑÑÙ*¤Ag y°¯ŽHV±öU!̳gÏœ .ÈÏŽôÖrj¾ÚyЂ ybŽ‘â?þñÝ¾È ÇÀ>(æ*BºAàÖã<t¸B;n^¼xæÄJ(+Ž…ŽõïCè‚�H÷ã(ï@BX¯×KW ~êueš¬2Ñþ8q CRµ¥®ƒÅ¡>K(‡Ðñ!3{˜ÓO!—L¥€£F4 ›F9Ú¼úê«Î‚`B µÄKÐ^H{÷î]Wˆ€`3ÂÆSl©6žš¢6"?ÿèý#ùðÃhdžú‚G#~é—~Éy/zóÍ7À)„ Ü!$B> ©Ç õàS®F¸¦°3!¦ÇµÄñp}º$·ƒ¤úw.²4Í¿ŽUñÀØVðcçjã—ÕÝš×·ú^HêÊÓ”yÂŒÍCÓë»(¡EÕ}Ü$Z×®2(4é–ºg‡×›R…?„B!„B–K°a+“¸F­h²|q~!Ož<sÂtȤŽ¢‚ƒ…qòÏé陜%S0ÛБR,^Z>tAø‚ŽŒf§U=ÊCuàœÞ^¢P¾daº�:q4l˜xš°ûi£ðt¾u8?é_b½WlRï÷2:sйöÚ²mðþ'„Ì@<-.÷Qá6&[ PIC¦^Ãk…€`BEÈbx¶Ý…õŠCHóÊ+¯”æ¡ÂkˆË‘vD3î ¿2¯?jãA`ô駟ʽ{÷ܱ5½ µqžo¿ý¶¼ñÆ•åPÁ·ŠÔ‘® <UyRPÞ7n8ñ†Ã9áZVyNš¸µà2Z(}Qù6¡ÌCK¨Ò%!ÑA›paeûΦj¸ì{ Nô3«ðÍ߇“ÝÛ§ÁëÜB¬È߉¢PøC!„B!dnòÆÄV ͱ”E ËCH¡ár²6oÿ㤳äÜí3%'/ã,“qÅ` ³Ô"|”6¤¡sf^Ú7ºFîš6Ù-òBl…|c™¾è‘ÌЬ]ùPTé¹ÍÞ?[C¾ £N =¶Af/yÚè¯Ç¯wß¿¬N+²áÌõ~XÑwËÔw«EØ…xâ4„4£ˆaÚö‘F@œ± ´Âs<?ÂCNº =D:|ð¿ /x[üä“Oœø¥Jø¢ž$‘<å@4„<1A|O:U@`„²ÞºuË•¡¹�ŽûùçŸga]› ™Ö…2?e^fچÚœÏ2Þçeå   á‘õo?m›ëVç­²ìUû†ÒøÞŠÚæÓ%«ìéi‘×bÅY‘VŸ¥K;5¿·eöúmKB ð‡B!„BÈ 2ñx¢z–ØhvÐÐ?Ê:RòðaíQÉho EÕPN±,·òæÖË\vîÍaç¦l&Íï-ÅÞc¥,3^äTgÀ`²l6ñä›uF=ܨàxÈðBV!ä<çØ®õ‰< ÒÁ²†cÅ2òľ¡ŽX?ÝÿÌÇÒеgg {ìÖáoäé¿×ïÉîÞž\½vMnß¹ãò»ûÊ+y(¯½äø§ggnùæ­ÛríúuT„SH8oLðöƒrÁ£ÄLUaÏ�L(¯zùÁþ8?—šx Z$»u¯4e,KpbÏÉŠxBi-eû•yˆ©ïT]Ƕ¢«²r„~?R/þRº¼n(ÑáeÈáw1!d+¡ð‡B!„BÈ‚°j»û±¥*ópÂ…@#°õ9ù;;N™ðGʶ7ã²;£À_˦Ði"¤½'g™œ…S‹Ú‡‘°¡ÜêÓBZ3õ3߸bBÙLñ!«M\a¥@`ƒV«ÀÛ<ì@´‚Ð\ðºƒí!ÔD,ñX jQá¾£Øç‡?ü¡óÚƒuê@ôO@!ÑLâëÜâžÁ '¯¿þªÜ½{Û…äºya³Nœ7 7®Oå±3Èõë×äÕ×^•w¿ò®ìîíÊþþA®ßÝß“Ûw_‘W_}U¾úþûòÆ[o91’ÕGæò¨X åEX0ïáÇ®|ðd„å*O8¸Žðp„ò"ík¯½æ®›  ,󊬇ËHêÅ.‘ñ²V©ŒÐÆ®¯Û^wœºëQ–SÊ„B~YýÉîtÖÎÏ7t.Ueµ¿C“kúÝVA�tYe¨ºF³ØðUÏqlM½"î.ÜWþÜ%ß…8®i!„(ü!„B!„²xf-D©èÇMc¿‘22 Óþ¶X&m±Èg$…¶Ù9\s/¢‘·ªtõ»‹'¿ ÑNd–‡cËîQüKoŽ`þ>dYƒ‘ìFé–®:•áEçúõëήƒ·\ÔS <Ü@°²Sá!âˆd Ø×z¶Áö»wïº4¾ðEÏû‡n¾H ÔÃÖC4Ní?{½=¹}ûvbÌZ©7¡¡+Ãk¯¿.×®]—¨Ä&Á5Àñ. ×ä­·Þr"”¯Ì“L8W\C�oC¸.?†õ!¯I³2ü”‹OªÖ•S•˜¥j¿Ð¥‰À¢L Sr«*»\ÞkÑ¡ ÊÎÇžo™øÇϫɺm¤JÄVwŸêßó¼O·Fà$’¦¡^›0ïïÀg‚b¡ð‡B!„BÈ‚©¶Ä¥éR D$ãÑ@âqÏub·‡Œ]ã— 'zÃd:KÖœ×õž²Ì²6£\Óõîß|™{ëI*f›–਀mìFy&÷x4Nµ?î~UÑOweÄgê²ÂD-Ät sgFÛוÅ=÷|gRF—Çmò‚åç~îçœW|oÞ Â�;¬¨×šP¨*d¾õ­o9Ñ P(�ßsõ AM]˜,�‘Ä;úwS ®ùùŸÿy9;;›’õŒÇ±ìîîåù¦6Hö>2ÞUðôæ›oºk1Ê€k„sÂ<$ä°ëàÝèwÞqb!\/Ìái°?®…½ŽóˆÔãOÔBÔ\%üiêÅæçQåñ§¬s¾Ê3NÚ„2ó…9M¼é” ›šˆvRû¶]=¦L<T%*Z¶eQõ3ÿ~²¬êöñ—g)c“p[G>2g!Ô¼÷G—Ça[!› …?„B!„B–BWåX=E2ŠóüSdºa=ý¤cšÓÆá¤â;»‘ÑÚƒÌu߉ç bC³ Ðéá7º¢C,؆Î"ä‡uØiu»ŽtF ÖiÍá js²yôzýä·ï»û ½$»m'b½/p¸{#ﺋrñ›Hu#-òF‡&í0Ô{ ·±vH꽌mçççÎËß!³”{ «D ÑOž~1VðÃç‡ÕÊ|[sx A,g`‡aÂ|C!b¡_ lI„f¥×K7{™‡œ‰(&-#¶íìì¦6k…§œ\X¥R˜"¹Ñ1Mj.K”ÙÖæ@ðÃãààJr컹`^•Ëqllì([»ëvSFûväÎÍ•¢ŸþÀw"ÄWRB{väRÏ1M=žäùWÔIê„&eyú˜&Ÿ6ß—*!N¨eçÚ*«ŸOÙ¹ÚgÏOßôüì3¬¶ì6{ËÄjeŸ&σÒF�·µ¸w¯!d5¡ð‡B!„BÈÊ¡ hzGNücG¨•5øú£ØúƒHö÷ö¥7H…zb^¨à 1YEAH¼Ð™u¶Ñ£˜=zä¶!$ò{ùò¥Ë y éÁƒ®#åý÷ßw#ÃFb ä«!ìsïÞ=9:: 7¤.`D!¹<Ðqvýú5w¤÷:ï’û.;Ñ îܘðûCÿ…úIŠ©¼Ê:j°ŒCÌ0á^ÃýŠ{0÷ŒÜ=©aK÷âÇåÅ‹®ªÄÇ«ÉòU‡#”7þ¾„2F™ÈÖ·#!lÁ·Q¿›°Õà Ҫ§î»ØŒ¸0‡ðgw7± zWÝqS;t"nŒ¢žDõö3Aoð/©u¨*žH 9I`=ü¸<RO9HÒKOÎmƹìdÂŠÌævYô’t&o—cšG¿×Ï®ïÈå3‰³wöû‹NülÊÊž!/q•#¾È.GaaWz˜¨±G»H ×I<Á?h ÊÌ/_¨ŒU⋲ºN“ãûçãßÿ!Nݽî{_ kÈó‘ÍWó(­Øke×Ùýê~ß&Ì»™'œEÓÔcRÙrqXU^D:¯ŸÇÙ»y›Ål„î ð‡B!„BÈ|, ‘JC$ÿf‡ˆ a^Ð!i§Ÿ )ÒÃèÔ;‘Ðx<ÌÎ’tIƒ]éz®Ó'A½“ 1p>`ÝŽÆe'°]Gbc»zgÁú§OŸæ}0! „Úð®""ì0 èØÀC½¬h£u(„ÄäBˆ´sBRç¹Äßn:…ªˆëŽç¥ÝÚ6ââõÝÛ‰äÕ‘ܹÕO:æž¡.dˆiØ—Ó³9:‰äù‹Xž>;–ãñ™À÷“ö«Äk§ùæ#äóÜã|¡¥v“{}g°“Üó;®Cîbo(çÎóÐÁ•ç¹@=ÿàoÜŸÃ ãmªØ/™v¦XÞI‡ŽÈ¼d/š„Ûȼl©G£å4`ëCc;>ÓyÚ/Ú›ô_ºÑº=)Þ°qÁ›KdBKEþaÒ\ÅßhÃÄñÔžµåÏSG^Y¦“æe.Ëk–É…ß-¶|…;¯á»©xí âwl¦¢8„ÄÔz´JÖ³ü£‰ˆnÑ÷dÇ÷3Îj„,ý^©hÀŠ`ï©Íf…ø>–‰<4­/4oXšBðäÓOŽ•zŠeúÓÐF³6]Hô#æÏئ1‚ä¿ÌÖM“ëÅÝÝw>öDYÑa¤‹±³K¢~ºìþ.¸ävÆä]?…{ýÆÓël>qÑ{çÔqâ¸ð»…Òú^jª~ßY웺2Öí[µ¬è¹…l0+¢izÌÐõ)XùœPÙª<ÏÔy±±y‡JÛHÙ¹Wyc -“–,À$t6¯þA!s@á!„B!„•C… ñ„XFæ\ä#‘w“Κ«×e¢qbŸxÔ9=‘³ó¡ŒFÃtôkâžëìïe‚xëQñFz«˜Ò@ Ï=ºŒ0º¢La¹U8„eäk¼±¼úà\l(0õ*ÔÈÍ¿û§E#`°£ßî•ü]’]5hƒô†c{'ÛÅäš^ÙÊ»7_È{oŒåÖ­ vzrzòB.†gnûÉÅ@ìÊÎ$>{!ÃÓ—ÉÏw%™Òp]ø-S K:²÷K*¸‰óKìúÛÆÉ32ËÉqrÿŸžÉnr¿^=¼êD@®ƒ‹™Ÿ¤/dx~‘ †ÒLÒN?'ÐÇF6“uÆEiœhÈ…ÍÃ3™ ìÉó弈†.I½9OZq¼œæë8ÊË_¸óUP¥e”s4™Qò¦ÌîñŒbêD¯…È$\IÖY•]#;ײ4!}DÙqô�æ ÌqÓ™®uç¹JSâÐ3›_ ½ßâbÇDÃwÖ»ÀuØSoTýÞã…wáÄsçr~ž¾{Ç£8´‰¨ˆ”&ç5ܾ½‹„l!/&ežWÔ[JH2»Ø BÌÙ:«IØ-‘j{+ÿ\仯î-™ˆ2ÿÔxžc칪àBíé*‰ïEÆæ[%Ji~]‹ÂI-ÓìùÉ” È¿/ª<Ò”ÝCšÞîÊÖûI¯k(¿ÜþñýuuÂ'ÿw å¯÷Gh__Üc…X:ùÇõ·Õ ¶ücV1oýdöwÀbˆkê^MÏ·í³CQ—ðZBæ‡ÂB!„B!+GÚAŸ4âG}×ÙÛëÅ®³>’qêñ§9ï);;É´›èe°Ëî‡G™Ç^²®Ÿ7JBŒ�á¶ÁC –UL€×t&C°£éà©iUüƒ<ð7xþüy.ÒFil×åÇçyû ė椪O¿ú š ª¶×Ðúø3x%™½1;½¾ƒÞH®î\Èí‘»Wáqg §;ðútêî¹£ó¹ž<ÛÊNï$ùëT¢xO&Í5q>²Þ =ôòz—Þ®ÎÏÎe<JÙ¤¢¹8œ9ÏVYè:,»0`É==Jî½8ëð z–)ˆ`ÒÎ%ˆ‰œ÷„,<˜zr5=<—½Âó6Ž/Ñó».¶3HÿJ½ý ìÈ­[·\x—ô|vdÐß—~o'K? õ‘^7IÞ/¢Mûc7uÚ…;Ù¦;ÚBË“ým‡Yøy*du÷Ì•y¸u&Íû›6}î~‡áÈ]Aç¡­‡êS9>9rמ={žÌŸËÙéùäZgBµ,Óìy:çüaÝ«ÕÑG©ï„·„M§ß1R!èDl`—­§ ÝîBn‰†ùïuݨÐËih¯]g»æi¥ð…0ku9*¤-ÇMþ÷.ö2,¸¿âBAè§ ¦pÿD…,¬À¥ÌŒÿ-ó¿!¡ŒÝæïº¦v>9·É÷Ð JBû–‰êÄuØò†¼¬Ôå+U}ƒCËuùÚ¼ëÒ•­+KÓVüReW„Ò5=F™ølÛ¨ºWš\Y¯ÛÖòèð¼Ó÷Å&Õ¢ !Ë‚ÂB!„B!+GÞøeF »—á¸Ò•ã$Ý/2§bt¨ìì%ÛÓetàÀóÏÉé±:XÏ>÷¼xñÂí£!4 öS!Ž{ï޽ܻvè`:’À_|‘‡Ó²Cðpž -°ÿǃçió 7𲓹-Åë5L×4¿v@svv*ÇÇéý%²—oÃý{ôòL^“ÉLH–ÀŸx\‘܃É(ڄʤbà o]Vìˆi¤×°sÚiÃè\ÓÚÎRÜëÚajC†¥©ø!÷”‹áp)“ç1Ê;¯_¿.ßüæ7åõ×_wï“ý½+rxåfrûùù곫×ïú xüÚ5×%,üI·ES¢Ÿ²má}{E½Â9àZÆñ¸pNQ¡S7îì5ÑFèS÷›†:êl^¶CÔïÎÓ»0^ãÜ›šD£ä~:–GîËG}$?ùÉO“ôŸÊÓñ³É¾™8+Î{ORáNÛÎIBÈf€ïì½ñÅÄ“c*À¸oÞjïÁ ¤®S¨Š°<@"òÃ>ú´à’Ú§â¼E,cÿ»wï&û\ÉÓ¦á -QÉß)±¾Ç¼ÎáÜVVñعÍ2*xþ™oÄêh$ÆÙ\ž&$pþ5𱞓|ï-þz?o[ÎÂ7"J¯Ÿ¦/ûVO?œoÙ~~že‚[~ß«Mé÷-.÷T&ü)eØðÁš^¯ySš\¿ÐyØ}l¨¯Pú*ñQ™g›ž“ïÝÉó2±¿áª0Ý&«x4È+$Ü:::í1<¯eBL*!óBá!„B!„c2ÊÞë2ʵµkAÅ7nû¢ A2¥s„4Šãd÷²Ž›8ï¼Q‘æÜ ÓFÃs¡cF;…€¦­£È«€WŸÍI»ðX±Í,÷ú%÷ŸŸÈÎÞ™<öåÊ•}ÙD.LÑÑѱ<9ËÃã¡<~v!'çI‡áx4üFât‘äa¤l¨:íàÑP V¦Û¬«ðDŸà‡ˆšÖÉ ~t_õø3ñŠËPâ\(´*"(Ëá᡼ùæ›nJ…y'þô÷RÕå¹wÇpgŽð›íæù¸ŽFþä¿dªfYì<Ê·WÛÙWüÛut9QORÉ:¢P‡®QHÎIȷĤŸÙëd“ö±éþ²]çÈBw¹û®‡Py’ü†ðÐÉññ‰{†>x"G/޳wüh1Ï›!dÁ· öÝÀ ùê‹a± él+`E@ … i¿qê1ŸTè+ùwËZödïOŸ$בìpÔAÆ–[e-w¿ÝÓ­VÏÓ˜~62“éƒ~óL_ôÇë“L«™Fš§‘º§»ïR·î­-×XH<œt"ÈȈÈ̪¬*?ULIáÇ[xv›9låí!¢¸¶<xÊÀû€Óé}Fʈ8Ô’tV¿«úˆ*M¼*¾>Ò‡B4‰˜¨Ÿ”Ç;D"âÏ&2I~ÿ:þ<\žö¾{º‰è¨Ó¾cºnBÞŸ"킾>áP¼ºš“”ò}ºÈvNšÒ÷#ÏOá&¿Æ» ¢ ±4Þ!f—¾öfrÿ%ÃMHmñ]XIµNd˃Áp;ñÇ`0 ƒÁ`0 šôCLøY®®i±\R‘Œ6¥OÄÊV«`¬)jrÅ2ã›(Ø5L1Z„p‹fÀX“&��dMÏ�žØ4à®­m€ïã‚v¥q1¯è_\Ò‹`ô»¤ƒÙ2Áäììœ.®*º\,ézNÁˆ8¢E= uõ/ &ÃX”¡^ŽU)Qˆ‚’�ê>uREé›i® mÚÈ¢]ÓåPmÄ‘x‡H<òŒ4Æç;Æ<z�õéFþ¤ò¶¡Ôõêå-cªV‰@UGC,qõWœoQÉGO"ðDãcK¢¦ JëFé&4ç5¿Io ±5uròÏÝçï}·I}ía?ZBÚÿ“GSúꛓð,…ºìFtxpÌÏFTIŠuÏ5†mÍüÎcƒÁðqCÞEhÿ?~Ì¿á‚ä!Ëâ€}^îô»QðbßsÕ!A ï( ?Û¦+¾‡·ïgú5’hfð¯wSx‘ûGÚõ>é/—è7PKfêõgu|Ò×Àµäzš° äýÄÕ\§y÷ÒÚ9›H?ÛlúAWßu$nŠ??§·iwâŽoˆŒuS|Cy¤ût9J/åÄœ>âO~¿šØ£÷K<ºÌµBåP™÷õSó}»d6a›oć@üª[}Ç7ÞÕ½|¸{âÞ)pokùl0n #þ ƒÁ`0 ƒáÂñà£çäU [Dâ«øŒØ…RQTið· QÈ�ôÀô8ØrŽN *Óׯvñ ³º…8!Ç…`™ßBÐÓù@s¾-Ä ÙÖØÞàmø°¬<½¹®èl5'z;§ÉøšŽfK&{@)j± Vø‰u:ÔG* *4ÞǺ‰šå“›"]¨hÂŽÔi 7ôˆ«$­$ËñG¡£²ÖºÇd_®øSÕç}ôþyG­1y$„©·oßÒ÷ßÿHçoó~ “µ0E„9ˆ?uf”Š‹ü–¸ûŒY*×Ýç»ÛëmB­ÔuZâOîãlCDùH“ž}vLEù%}öùIªÓnÿuVxµð./åd¤ƒáS„ôû Ös||Ìû@ •wŽã}Š5^…ôR–÷ªô!øheHy¿È¹:¶Å-æÚ÷Õ5E0%yo“jÝ|®*ãî©_»ÞºÂ ¿³óo"ÕôíËUgòkõ‘atÿ†nH«ôx»çºD´1®¾ßÛ„ÕD—¡°úø6}þ›Ò» úν‰ìÑwíœä-ûsâOG_Ùõ…Ý”FG^òøúòl(Ïó´mªg»b—úsר¦|%ÜP=ÔyÖö]ùï`\Û\ó“€Üú‘È8JïoTÓ4 †m`ăÁ`0 ƒÁ`0<8ô ˜�E‡ ƒb+eŒ6œ»3‹gÁ Sðù0º@ñCHB`cÌü–}!@è™Êš4çÈ,ò¾AòmŒ�†.n(ÔCÔ66.k&{0áÌ£bg¶:Œ.%“´[ºªˆuq‰!õT×?Q7õìj©/Ç…¼Ós|« $çÈ~ßÎÎÎX h]ìùÆ•âl !®¿#‘¦Riy?•€ÖXW1½HîïòrE×WQÉ!Ž·ë™ä2ï›ûúˆ?}ët4KÓfâOžþ6 Ý}Ýí(7רD,S&•µõ¾«( —º¼înf¿Á`ø0w&?'''üE›ðÙgŸÑéé)¿%Œ¼ú½ÀºÏM•ô5yH¶õ{;]!%>Ϥö®PFb`&cg« z9Îub‡ÓNã>×U”ßòþ“}Púqäz•U†ˆùû/Ï9¦·…ŒÜw,»¯OÝq½éº 29‘DÒÔäì÷°‰L¢÷ßD¬äulŸþQž—›6y˜¾üè#ÓäùÔQq¤uÂŽ¬‡\Çöå§.ï>rŽ—ß˦|¹iÿ]õ tÚö9~[Ü&î¡zžçuß1`ëÓKý÷»«¬º‚î±Ú †OFü1 ƒÁ`0 Ã…Ûáٰ¥µ[cxî§5Œ§a�mÊî`@TÐÓ€6Ô4Ä�åê `÷bißñGâ×Hý÷qó¾ul".¤lQx}]Í©ZÕTAÕ‡P VŒ% ‰žÁÞhñ'Ô¦X³ë®Ë®>c¶ÅMr$¬v½ —>cžU¤ N~´âÄßÚp]ŸX1Ñû…÷zi]g!Ý«Uò«¢Å"’ ¢]ÔÇüoˆ%ŠÄG¾ñÕ]·»:¿I?;Ü&ÒÑÇLüᯉËÃ3y“íÚ›NäYÁÄ dïNŠMžZ7jÎ`0|ª éÏIŸN» w˜ù»±¯¯&Ê?}FñíÑמslÍûg¨}¢p®ôy0ЏÁ|×Û ê>Eóþ#Rï?×C´YWüè#ìˆê¥ìÓ}hM‘ü"ˆä×éRø>…ì¹NÉ㹉ô“ßc_™æ$M˜–õI(Ï£]ÎëK£ŽO÷Ï$¾<L9ªïz}éÙ–œ•—§ì×JW::î<?6Ýo^—t¸m±mØ]‰Fúø]“aò>{¾"¡Ý”–¼žlª?y½í+‹©ï~G·Ý÷]f0 ûˆ?ƒÁ`0 ƒÁ`xC;¹è>ˆ÷ñ[•üñ¤†Eø]5Ûž@|ˆÆ€•Î? çObTWDµÐ Z‹ë/œ†*ˆÌ °¯oðYÈr|ÍH±Ïà±ÿ˜Íú+Zcž‡ ¯å üS/L\«âÂÀEÖ˜·=×9bâH¬OŠà†g �¨¢ë«9å¨ñˆÔ½««+®Ëb˜"¸®ãt©:+õU<eqã|q땚$®vê¼®Òþ}’œZÇ´á~â3_³ÙÔˆU/†Ê"θeƒ^*ËDµçׯÓh8 xç™Î~ûb}ß&øŒøãúˆ?g+!„&øÀ^: ˆìÞ1.k/ e l6žw›XkQ †O9!eÈÐ-Ød<ß×Pß¿•Š;.B”�‰vS{%Ié&)3ÀÇ×r›Ö˜àæ>åþ¥ïZP—¼!n?!M YH“A´òŸ(°É9šH,×ò•¸ ÝÈ»•r­+ié[†6n ’ÞÖäç<?†\üJ>lK^ÉïE~ë¸u?Mök®úº’Ρë÷ýÎïC_OÆ„8'Ï\'W“Ì'Lä¿5ɬïy”xÄå­(ü݆pò.÷q ]'¤ü‡ÊtÓ>›H'ùþ>r×§ù–»£ØŒôc0îFü1 ƒÁ`0 ÃDTŒ„‡²,šmOz ³½'.lœAg‘A°Ï©ªaxÚ ƒÌ Óù@µ¬õÂD>hž„òs Ÿ*2†/¨Za`>’X±*Ø…*êŘÖ«‡k®%;‹9»Ãˆ,0†€ðƒz b›&þˆ2O>㺽~kÔË,â/7Æè8|FLaMœ= 1÷6YÒ–@QÆ¥¼OïIq©pÉXɆÙ:v<uÔÆQ«c›Í·;Æ=ˆ?´‰øÓÐ裓ß\"ú$ÒO*Ÿö9rÙ"{]YÆH?ç1Z÷õçäxßvîÂU!öˆŠ,´ãÛv\â”Åç®dœbû¸® Ê!¢xÓ:z¦IÆ(ÒNçEÉ·wžc_ñÝç˜h\eÄîG¸D¯L¼$§.î$mÞ§×c›ÇuÕÆ§ûÞyz"LÜ.Í£ü‡r¼Ï]Õ&2Œ¾®¬¥ß¥p ¹§M$”>bÙM„!}ÞÐ1¹_]N9ùGçw~\ÂèûÏ•ƒt~j2UŸ[ãnmN{NNѤª¾rѤ#½ï>qbß}a_’ˆnûòý9úÒ¿)¿ï»$ä஢{ ßNƒáà ƒÁ`0 ƒÁðàÐ "‡ÿ¥š-**)âú‹U`ü 9å]ÙFã}|}µ6è/˜¢æ#ÛÞw]‰â‰ 7Tè4çƒà}ç>~ð�{rU$õµ¯Þèm=¨î±ƦËËK6tÁ]˜®_ROÏÎÎÔ(ÛÈq©çBlÓÐ,mˆ‘°bèê»?}^Jj–ödˆ|OƒÙ:?å7QBŠŠD=¬»Ä¦ÖèÚ5‚QºÎÍÏyNü!º[âÏÇi(hëWkp,\Ñ1´·TPmTÕçõÈ3 †O C}²mÔfôyšè½ñ'[tÒ’;”~˜?Ê*f#Õ¿A§¢äÏ+R¹¯+­ ï\Bš¿Hãq˨Š=h`åjšÓ‚j—ÔZŠ’FEÉaù«:’u’ ÛH®¯#¹7ñ~ص§‡šÏŠ/Ïjy nP”Zc"QR⛊/ܨ×o²·ïÜWVùÂû¿r-*aµ0DPÉË0'áô•ñ&ã|ÞgÈÏÍÉ,yœ}䙡ëè>˜vI¬Ó!×…%é×éo}º˜“›r"•Nƒº4Á¼¸#ýS­TÓWîZ¥û´RT‰ë¶ØöÞåz÷IâØTO†;‚¡oÙ¾íü{y(œáîpŸõÆ`0|:0âÁ`0 ƒÁ`0$¢¡€’;�óIýA Q‚œ ¨2‰kih ž–^»êZÑ}£oßó>t /l@óñùuBˆÏÕcxÞ}>¸Ã-AÜQñhBN•fÒkäÆ-mØÊC€6èäëÜèµ­ì}Á{áug֣ј݋€PÃùNض¬Ò¶—2ðÔOÒÙâþýŽáiCx¯ö¹0w†Œ;÷xYm´”g�ϘÄxØq÷Aå3TlƒÁ �rÑžL§Ó† ªI Bú×°}�éD]q+‹÷Íéé)Íf³B¤>Å6ýn.B›W„x*zûö,l¯èèxBÓÙ(‘ZÑæÌ~ÚiÔŧD»¹XÐåÅ]WKšB;;ÑÁÁ““q¤ßâ32+„Ä‘ˆ°),H?PôUM“Ñ„ DCM¶ê(y´–¿C$­ŽLä­‘K$^ÝOAÙb±_»!Cç¡Ü•—V™ÑIò’~˜VIÔ®¶túuzé#õå¥Ä-®ÒrÂøJÒŒz..%Ic~_B˜Ö}D¹Gœƒß¨ë²_ž]Κøƒ}pM+ù¡ïÇóþ%Ò‚çIí¸fNX߅̲-ieˆ“c×ý·…®Bˆò:“óû¶ó°‚m E›Â?TlK®»9"ºsľìýu­ ç#þ ƒÁ`0 ƒáA†¼j^007‡ùBÐÕʺpcÒ¦ïªf;:6€‹%5³Vt" aÁðáÃË@:µäjÈ?Ê�F‰/ÖÉÜØKáÝÖ†|_fJ÷Í®î3Ð Þ_v¼³ÍF¸Ì@F$zw$Œ¨šÐ&#–ˆ?£`œt®u¹•„(*,D÷+ñb¢aŒÇwI7o6LßͺD ê¾\oZûáï­{üî35Þsžö¾É{ÊBòŽW-æ 62¸¸ FÜ ­¾%ÿðs¢Ó•v|H†)ƒÁpÿ"‚ü¹àÅ‹¼ýÙgŸÑÑÑQG‘$'iècôç?ÿ™ž?NoÞ¼aÒÏßþíßÒt*Ä¿!=µzÿDÎË—gô?ÿçÿ–Ëkúíï¾ Ï?L‡‡‡4™ o¼¹îöS7¤Ÿ?ÿáôæê‚ÜÉ>yDÏž=£q9n,E‘„R'¥5!~¸†”)éÅ‹$’ׯ_Ój¹¢ãƒ#:<8dâTT Œ ?.½d E€˜@Bý˜œ¼¬Ug˜ìR¸˜¦t¾Q¤\„d‚c ü`Á»CÜŸ áEÈ?rOrÝ8é …%šX$™œô£Ý£iµ!Öô4‰UÎë#þ4ùžÒ‡|ÒNŸš€x$o„ôƒ:Š5öã\Ò„D„pÈ+¹7¹­¾ƒã‹gû 8‰°ˆG“zt9Kšßˆ á4!ñ‚ØS(•W© ÏŽáéË Hâ"´ôm÷>t3ä&5mößççç¼Ö÷© f9é,wÙô€úH{}¸‰5Ï»îåß,CØMùÉ5ßwz?þô­ ÃG#þ ƒÁ`0 ƒá¡«4R”⤠ë °aP¹¤ñGâŘ¯â~×Ä38¢r÷ë 4-’Þ2( ×–ÛÕ£¾à}ƒý›èµQ­o–½“mEþÉi2÷9¢ÝÆÞÒª(SP‘P Ei§:ÛE×lEëþ‹‰/Þ¥rôԫΠâïBˆ3÷ÔäɹSÜ@VºÏæ³m¾Ùø,ÏÊ$Æ[Å çÛçH\ÐèȬ 6 }Є!~þùgn/NNNX'7\ëm9/Wþ¡¢?ýéOôÓO?ÑçŸN¿ûÝï(*å´ïyŸÄw(Žy*àºVºa8ëWôOúžæ×ttRÒáá$¼ÇÂÞcÞµýYvÄUW ó ?àÅEÙ“C„‹«kúùÇçôË›W4y|B¾ªèÉÁ15ÿŽïÁš óñ]/É–þAR³Á.“®tñê “2ÝiÍ×3™FÜe¶}‹î[Å3±©VääNr"Œ@P‰“q¸ÿ"~PK�bÅ"W§¼­:$ëëy"ÿDW¨‘<âôâþàÚ „"äït:ἕžÝžQ"2U«ŠóFúžãï¦ÅbÝžñvTÕ©9¤q–¥¸­ÂñUˆoÅVlG¢M«D„<”¸šüKupBRÓ¯U¢TÔÒ)t]õœv¤ñòòªQé±kò%’²Z×m‘Ä$ê©ESþHï|±àü}©‚Ë~îuÖÑ]]L»Ü+ò›ã çÏÂs…ümóÁwÒÌÛÈ_çi —‹ÆkšL§ ‘ ëÙlãaRYŸ‹DÖâ¼K]8×(CI}”|óÝu:˜BÒM}Ÿ¡nP¿‹X¯˜0ëâˆëu£4F1/�vÿ—Ň²D¹]^]qÝ‘ç¬(\R³31 ä(”U‘žäm•úU#ºŠVYQò¥¹R"ìe=]¾gÔo¦þý=ŸCûÁ­ýèI˜º¦÷»µó7•›WÏÜÝBÚpƒÁ`¸ ñÇ`0 ƒÁ`0 ðÌ736�¿avãMêHhYùDk®À´ÂÏ&÷Cd áúÝUxH€AFí¶Âi’Pc<mÝ„h·1HVV®ŸÌdÏÿí! Eg÷GÛ³k”`$ë¨"„ã쪦Éz1W™1Å`0t¡•| `ÅŸW¯^q›†„ñ$W}iˆˆ 8$"¨à€�„÷ -1œ"‚¦W¢[-£Råxì¨Ã# Ç«»úº¸xÖçtu5§““h´1À¹hô‡ñ¿Z-#I%`I™^QhA"XyZ…ó/ß„ø^¼¢úzAU9¥égßÐt‰Ë-©�ï@nW‘P�BH‡dO,¸9ªÂÞË-_žÑÕõU049‡öùpWie—&‹¼)÷ R†+)Š9VJ\†ãP#ŠD†¨‚ƒ¼Ôïc¬¡2óÅ_DŘZˆA%“¦˜ÐÀÆü".ß ãqÁyŒð K\„²áBúゼ2Á5Û#&NÄxʘ¿)=Q½Æó±ñX”p(ºK¤ 2ÄYWs:?;gÅ„Áûêôô1“U¤žà^™ì~Ã+H5 ²EÕ¤ÑxÌ×Ezã1Q *˜˜6™€Ø‰2LóŠlŒúêFœ~¸<Nµ˜óêyXÖggáúˆø¢ÎàþOíâŒKõiñõ«SG úŒÂ¾¯çLh¡ôžž$µ¤HˆŠuüää…c“ôŒÅ:Àd¡BÈp®Ù¼¾¾ºf²RùWLà¡*ª1¹äRoD=âøQve1’·!L)¸è=Ƶ9R÷ÜVߤÛôþp?þð<äý9oÓW_}Ö1ÏPïQ'€±ê³ â3ï™t…úÁÊ?|ñxO³Ù=~|Êõ u ­çÛJ”•feRÆíæÃÚ-úîÝuøò²ò¢¹HÍß¶Öݯ»Ýíù´7\ž.‰×ë ¤4z×9¯QRòSó›:l&IcßçÚ}ÃYWÕ`0ÜŒøc0 ƒÁ`0 †‡ÆÐž.ÂmÞí»»¼ ¾¯A¶-¯{Ûäùµ{ž¿ÓImÆöŸ¿}Æï7–ªã_ä §æ§¹Ãiæ¬ÀËìã›f—öþÞ¾7‡ÜhâÏ& ÿaâOF±Ø…ü#&¿óc}á²cb¸Xì—ã.—’ÛŠ¾$P£PÐ…7» ðíìñd`mM.͘¦(#ðNøt¬®+ÁKœÙ?FQEàrmx=ƒ»yý§“gƒa{hUQZ"næ @9Q@ @é€-qkÔ½nTß�QGÇ ¢¡$D žUb>ûüO™�U¼Çš^–J +¢%’/šF_¤ã>‘C*OãrD§NɯªHF™ÑÌ© §-‹Š 㱩JD [Ô¾fuŸî „k„sÆaÿ!Ü„kš@A§L„ýþ—¾E­ØNò¾L<�vATvßÏ¢¤ÝußÇm¹h÷Ñ€ßösJÕ}@”!„‰eÉ]ìÒk4n⋊1“pp¥Ö{DÕGTp¢Ë¤²qK,—Q†•pÂ?¸w•:Vbâñ¸Iã$… Æ‚ãUë_$ôL9|2y2^ÑÊuÝ6E×\e{ß99Cò…\ʧø6Ä9LºññÞ£›­6å9à¼)ÊNŸPîµ9Ge¼Ô£Ö^ÑÉ݇’¼á8jßMo"kéú…ýH®…(pQB¼ˆKúi¸V\ ÎOWþ<;M¾ë¨ZîðÙ©bÛ ~ó7N$›ÅºæËž«º")S͸ü ×u×Ý|Å:¬óÏsT¢F™h³aù¦Ê;cYbU,Ýv²{oÛz›þY§ ]ßA’o!ï{Îkúí.§ƒé‰Þß*™ƒÁð.aăÁ`0 ƒÁ`0<HÄÁ¶èþ NYîƒ[Ûv2šdÈÏÇ1ñ4�ÙõyÐrâ¾ç(íd·÷´ø¾©!"¿ÿïw}§Ï¦õ¶MOwvæ>ð»føÎp=›­ŽLòÕN8í„võ÷ì•&„ïlçÙÑ›;íX÷ ròOŸs[Õ×qUæÈwÒŸ™ d =Y=Á×>æ¼é³ÛQ\®nsÐ55¿|KäÑF¢è’–tZµ“uå#ÊÂIZÚ|ÌÝ%ë¦iŽú CÈ\Þ·U$zŠFâ¶Â¹BÍvD+¸€,ù˜äG[&:K#é‡ ƒ¡B¢�YçÛo¿åvj*ûnÂþÅ¿øôë_ÿšÕ\@úùì³ÏÖÂAg¹¬U¹¡&õÙ³'ôÿþ¿ÿ&ì—!î »ú‚ÌÞé ÷ù/þŸÿ‡–‹+»Lf3VÑÙ P² yõõ×_ÓÂW4:> ÑlÊùÙ4ÅÒ×HؼžØ>ú8ÔaŸž2¹ BG$¦¬ÕÂèºhB}j„›€4†øq¯B&Ò.Ä�qÝÆÄÒDÛ|ûmá·.@RA=‚êâÂq¤]®…:§U5ÁF>؇û—cr=&,±K«rë÷1â|Àu%%ú¾$|ßýb$(M’[©xïOž<é(`±jÍrÉnÅpÞáá!ç –m°_~ù%§×”8‘qÛ*y#å&ä"}ß}÷•ס]ëÔm€û‚ÂÏjÕuõµ-p¯â’ðéÓ§M¾Kþ ¯¢*ÔäÆz¼ë=çù¹F¬êÉç>Òäû@_Úuúúîi´¹ß·’Á`0¼+ñÇ`0 ƒÁ`0 <�>*v°sg$ _7ƒêMœ¹Uxl°ÒG‡î O¦Ý.F·Ãû>ÿV¸½²ñ<Á»¸×»ÝFñO×(X­ÑTÖ’—×›=Ò/l±´ùÍÓ7 Ào:wÍP’ {Ýgnà6»§ †×ÛÙçP­BNs?)|Còñ‰Zã©3û]_y}ưsÍŒêüœáD»ƒíÝÞ;qí#ª÷è™û-ÉG\´ûã:‰a C M¬È!ZÀHu@ÈÛÆ­ƒ< ñXºáš_i )«–(‘õÀ^u´¢ÃÃQX>ã…s«Dvê1˜o$†F¦Ít6 ËçkG+×ÿ>d\Fœ s2¦£Çè�ÑOljQwIì2,]}ý=¯v@ígŠ%»¾$Ÿ„h²+ʲ\#@Ü¥ÁéÒõõ�D|ƒ€ø€°¥Óð>ÈH§&Žõ¥a(]}d­¤¡I[¸®‹gl<Ó.@ÜBÓñBÚï‹ô íú¾v…”cN”爪PûçÏ.ÈI>š<¿IAô]¤«_-l=mCD&½ï}– ƒañÇ`0 b¨ƒö±\Ï`0 ƒÁðp!3pY¦< ú[÷»FªZñ€»žÉº-6 îí2ðgƒ„Ÿ&x9þz/´ qOÑ™q¿Ã VÙ'çˆñà¦ú,D•¡ïº÷Edq=FMßÈÿKIm+ç?4ÃÙu £Û¶[9¥504êAD­‚Ù[†Ëi2Øm°SÛÚWüûyÞ ÃÃ6øŠ+¢Ü}£@Yä÷.ñï"õ+¤ÃÅ…·Ap„‹É†/ZQA×í»…hØãëfÛù–Ù\Ë)r Ö…€L*<>{}±â VêèÊË-¡u…$Cœpõ…s‹ì½Ø!�ï×2‹’KŸzȇ�M´yW$Œ!ì¢â¸Oœ9‘Fˆ9ë°-Ÿ«›®'ñìZê÷Ø]Ögy^ä÷}"'ÒäªTz_~N¾ÿ¡@÷å·!À ÃC„ ÃòŽ›Hªæ3,DRô¶ {ƒÁ`0 ƒ¡ècB顮²f©Ø0£Y‡ò°sTÁáY{‘ïGüz&qK6*¹Œð}„!#òÖ108öÊ0§K$D¨¡¤‰qÝÎïW~lÖ6ÁØ´_c[@1eP¾o ðüæøÃžÔ‘+üȾ~¥¥ÍD›!#äºRЦB2.©é.[Ÿ›Ë§_âÝá†Y×>3rûFK#»7k³ †Ošü#}º› ºBêƒ&劒» †âOX’.`ˆ7Œ¿V¹{ÓœH³žÖ¾tr¿ Mð€Â¥ÊäV ò8¤«M\-uìÔ胜¤ˆ²H«â¦¶'÷� GER5’¼õŠ›Qš6ÄÓí§èû×å· vé£Hüšt²íutw‰›ÛºÎßúTT4tžCy§{›¼Úxw3îëï&åÌûÔç}÷¢¿woÛGÏ >} †Êè¡| ¥mH j!È`0 Œøc0Ö ;Ûø@¸ºº¢‹‹ :;;cßÄ�äKáK³a ÕilgƒÁ`0 Ã]"GÒÏå…§åB z:M¤X;3MWŽýÓјèàpD£QKüAÿòû ²ƒôóöí[îçŠL?Ž¡O|yyÙRlÏ0×­úˤŸQê–à Ü!ÁŸŒTCÚ$ì-Óv0$¹b ¶´G‘}4é¤ï›Lx¾1üõ‰†04#7×ô¾^Kï{ƒßLÚÙp¢ZßwúýÆ}ѨڪG¹s¤HºÙí²u›Ô~œ°ŽÜðù÷þ4eϘ‹û|‡H§Étù¹¾7ƒÁðqC¿#ÅE úÈ#Û@“Ä¥Î>ˆŠs­Bÿ®}oÞ´ÇD÷_Ú î`"gúúÕfâÏ2tEj‰¶ýðqI®,A>*ÿTJ¨ðÛ;V„Rë‰Pû†îWL$þÓ´£²žøª]YíÇ]â&¢ÍmˆiïBF†T¹î 7õ{ï»–ý>õy—xñ |›úØGz¿©MÕä9!νú™OpZrèÉ:ƒÁ`xh0âÁ`è:/èp£s ÒÏ?þHÿôOÿÄ¿a(L):‰§§§ôõ×_ÓãÇyfOßFýÇDƒÁ`0  �A]†ÁNO‹¹RqÑ0¢g+v 9¾5”°çêËh¤Aõøø˜ ì8„œw`�ú´ ¸ã\üÆþ|`Û¢€‰ßƒxÐwÖa­ok•ŽŽA&¹¤˜ êÚŠëɲ.èºÑ"Œç£-«D4#¥°siuƒè ­á¨ã28 S[g „ëë놄¾™»CuZ«ÛàßM3ÀïÍ,cÚ•ºã·Øß÷“Å/‰¿1û‰/}.ÎnB3£Ù9ö ó®ÐÍ{©jºŒ×‰=NméÇ`ø‘¿¯†ŒºûôÕD2Ç.ï;¯ÂCY‡û«LÒÑqÉÆ5ÍšJ9mJ:¿µâŸRþLOr5ÆyÄ ïãø ðÉh¯â‰œÐˆ3 ÍŒ£) 1y&äiîi©7d©Vß@™ˆK)@«;å}ó}O$~MNÑ×¹ »*¾Ü­Ê¨!Ê¥æ®U†wý£Ó-Š«Úë� ·o{ý¡gõ¡ä;SpWå¨=8ÜEJˆ7Ï»!ÍCø>ÖÏFÞ&È:Ÿ\1ôÌ ÃCƒ ÃrÅŸóós&ýü‡ÿðèõë×ô«_ýŠ?v~ùå&üü›óoè÷¿ÿ=}þùçlDÑ,}ƒÁ`0 ƒaÄ>¥ÃH;•#Viàžj&A —z03’« î`<(Ò 2#«fðç<yò„‰?P¶D(ü ß âÈOŸ>åpBèáYɉ/×<Ž=þœûÉPžÑØ á§ ®O§Gôìô˜ëËl†a˜y0x-¹î\-jz{UÓë³Kzõê­.¯(z0Ò*þ5(¡ú†º†: ÒÚáá!¯Åºº õxAexfð­†ý¨¿Psýé§Ÿxb‡Ä%ȵó¼C³`ù<14Òº¼ÿ§þ lgèÈiJ­D<ßßÈÿÉëήğN9ßBñç>Ê;7ÄD¢§µ­ƒaº-Cÿ ï?1x˸çmÇ.oÓÎ11wI#ãñ(¼§Ñ¶eŠ–ü³ûNèle—ï!»m?ÀwIÆœÝ{XúØ… }Ø”?£bÔ¾:üJ×I^þLû‹Ûîßrœ~KRæï<)OMÌB ýy!èÈ·@ÉĦíÉy}‘󷪮¥põ¥ý®¡óá¾p×äüÝŽ>²ž”èíÛÞÛC"þlêWh»î*]7©Úl‹ü»A4H¯ósßç7²|?iÕ¤SîC~kääûÆ7 Fü1 ƒÙ 0^``ª?þõ¯Íl7`,Á~ "#,Ü$` Y:IP9ÛY¥Ò‰B'uVdÆõ]8 ƒÁ`0><´†î‚]ðLhw|œÁ •ÉdDÓT(K6RÔ5ˆ;މ«Uä<a²$Œ)!‚f6)PeÖ®ƒd�Æ�, ´>k$Uµq}‹¾rŸò¥ €ÉÈÑÓG}óù(|÷Li6SÈiÞèrîéçsv|A—g5]Q¨kÆŒ¢1ÙmR­ÉÞeVÿI$8Ôi©ûB^•WÇPü­2A±V×ÛkÇ„ÂÝ—VÀòß=ºohL“÷ô]©…dšRQVP)4§ïzýò'7´t @ýF—üwO¤{+þì'7Äë(‘árÒÏìÜÖ †ýnÔ}¾Ûª^ܦ¯Çï^ù@„)Küª¹ï#—šY3|=­ Ôl+â'¢-ü0ñïm¸%õ¨H.­œ*~ÔÇr1þN+ìÖô^«LîMÝ }·%é'GÞG·\z¿”ÿm$ï“8¶ îzRîͪwM¬‚•Vh‘gw_µ¤]ößÞeþ½ ô©hé>®–#çˆË¯÷ I‡¤eèY‘ýúú¶ ƒá!Áˆ?ƒa ¹Sl£C rH<ÿú_ÿk&ô ó5 >^¼xÁ¤ °ï¿ÿþ{&Á�òí·ßÒ¿úWÿŠãøÏÿù?ólh 0‹’Ð_|Aÿößþ[úÍo~Ó0öoË:7 ƒÁ`0|à;E!ê! &`šrœ‰ %ÿ餠£Ã1ÌÆLî!‰?s,¡OºâY|+6¤”%f*<c !££«åäA†ÀýZ¬Eb]f Á}Uüé]TdðÐ*DÖ¯ý´1-ééáúâhN¦s&­ÍWo ®¾Æ“PËUþ./V4).¨ô—Áv�3`¨ë‘HR³)P™Æ|WFŒVøC=E½Ä·&WŒBÝ_—§Fç Îjwu¹ |Vk>£^ÏŠ•z^&CaQRC“åã÷­V?Þ¹…Ò¹!'m´1nu<n¥¿M Ç!DF ¶W‘@Ùç‚ãï™±¼¾Ý½Þš+ÀŽmßvuÄ7³èæ õ6IX˜Æ`0¼#Üq !2¤÷3HºÎe®¾¼vìEÞ+ïºOë³ý~mïæ÷54]7|Øm&=o"+ dB«öñ>ÄûЮÁöÁ¾}ü]ÒoˆrÄZ\ÚÊÚðnѧ虓|´m)ÿÆÐ.½~×6X–òE7…ƒÁð¡Àˆ?ƒ¡º“£Ý~É@2€Ab0 Œ(¸ƒ‘PèŒCª${°ý÷ÿ÷ìì믿æAáŸþ™ãQq<{öŒ×ƒÁ`0 9-6g»(Üó¡Ù‚‡¤ˆn ŠšÜ¤U:©*5»0À6úµL@?;çþ© è ±Gf£o rRp~#¼„à  ôe0š“®uÚðé¡F¼i9§ƒÑŠÇ¡nŽMüU"¥¡VT²{¬ë°ÌCm^Réf‘["Ć4c¿ov©®kºŽÊd‹ÑhÌ®DêºUë¡ÇPÏ¥þçñÉï¼þj—)2.ŠAØWŽ¢>(ÈùZQèãOå’ÖM;•AÜemgg+S’ëÓº±m ›‚ó¾nÚªM³“5Éë.Ñk°¥]°nDvJÑÇ7$¸DÆê¤ßÚ]ƒÁ°ÝÎÝA{Ûv´1žóº¦Úç 8Ò nD9åþ‘HµrZ¨s´{o襺 <›¾¤{MÐñÊÕ¿3¨ym ÉG§°ë˜¬{a—Å¿×Ó¬Ë9rMº“Ñ/)x 7fœ3¤o®•PôúSŸ«Yé§ÜµŠ‘a?èº)ß¿2A—YŸ2iÓwóm7¹Ûû¸&Ý*Á)MͨÉ·ÕMÏÙ}õ‘ ƒá¾`ăÁ°éÈÈ 0:7‘GÜ}=yò„“¡èóÕW_ñ óÿïÿÏù»¿û;Vú‡ø>ç€,ôÃ?p'ðw¿ûŸÿ—¿ü…(8ŽÎ< +Fü1 ƒÁ`0�É¡Ô(AúñiÖ'°Z´˜øÐŸl%ûѯ,Š88 埫ë«fvïb¾ —¯^®ÃsŒçPMÐg5 ˜œv†¢(›qH7|íSýw[S:˜•TW‹HÔ¹ZÒÅùEøÆºlÜÉ®õ*’ÔØFY4ÖCuK\) ¤^Bíi⸳ÓD¡¼^ ¡'—ì—0â2OoÜ‹%ò¸ú2wÎ4 x°Ia]ñ'*÷ô€ºÆA”Ú-i›œ[¥cÝ™Ø}Œ|[nÑÕË"Ð]a»xÝZ»½+•È`0|º2Hß„»sÑ£U2êHzA¿6ú²ÍZ³ðŽ%(OŠ[,èÿU”9×JÇҖˉ?í¶wä ‰uS«”ìR;âv®×jïä ÿöš”_à_^~Ã~áÛn*äÕhTÐñá!UuÈ»²Pª…%“€Þú\åÄIç§Ú‡Â½£?#ª”È™!.–÷Í›¡þÆ»ÎëµlµëDùžÐÄ,]¿¥üDe´Qòª¿ë„Œ3HÜêy¿ !IA5þ‹. Ûþ±訛áÇ`0|`0âÁ`Dßdžt„ÃGÓgŸ}FõWEß|ó »ú:;;ãðPîK°?ÿùÏL‚K¯7oÞð A=â0/.¿p<÷·l0 ƒÁ`ø´!ƒá5»âJ¤š0P· ûª0r·ZÕ´ÁµÔ(ã€âhŒAþ2)8Wվ䫂¡e5_ufbðѧIQñÁ &\'â LžõÂiR¤ =˜l³ ‹UE?ŸÏiújI~¾£f4*B½®¢ªÔ«·=9§7g‹ƒÑeœ…*ƒà‰çÂÀô(ͤ])‚š<úH ÈwI"Ëàg Õ3àõ@·KÏ…<P2FÐØò(wwÕX„”ѦãÃrUßî§~2NçÜ Š=›Ïkضª$r>±Pp¤h:›2ákê˜Ì¨ÖE ª |'®kÐè›uí:÷K¤Õ'ödž:‘g—ë °E<ƒÁ°ùû)¾ïâûUÈ­z¿îjÃ÷Mã˜-Ѥۺ2ñ'½[¹¿ ¥<òiTl[Už+£áÜÓt ðœNt]ûî­S>]SX>BÆ~Qæë#Mh—·â4%.î ï•ÙhÖqr(;ZT×qìêsÔô!ð‚ñkÄ×.±u+ô¼l¤ØnÐéà¥dɤÉJý¬ß7ñ"ïåuI¾ƒD¡1'%ôõ¯„œ­ËSéoº¾ Ó'T‹ŽG+Gæñå„¥ü›I/r:ír¾(È1^\µ‰êä§­RËQ?/Û¾oRäònªEÐíž&Vç*Kr=�炈…øð=ƒº€}šø#iÅ1ÄIâ’îJF‰Œã6´ ·$ýxn][M5/÷åic=×ù®×úÛß`0Œøc0ÖÐ×¹›D,ÿþßÿ{úë¿þkî°A¡dwЉCg‹Ì•Áæ†Ñ:„———lHAœ'³ªEvÞ $ƒÁ`0  }Cô-çséW¶FŽÂÕQÙ§$&ùÀÝWY,x ûyÐ8|õŽ&u-,ðûÇ1 ÷Oàd¦z¢•|´‚†ôusIz PÐ7{×?Nlš°~>¯èÿü|Aߟ-Â÷ÎÛP?ƒ±³÷=±Qo¹tt5ŸÐ|Aü»òãhLKdJJ+0¸Ì¸_&B¾Çä,w§•“Ñ`à* þHæU¥2ØDâH4ˆic!¾ÍLž‹¨ÙýX$âÕÉ`S¥g¦ṕï(a}ßvšüâo“áEƒ~µSµʱU,149%‚LhïàNî`êYI‹*f—Á`]¥öMÅ':Sð‰DÔ´_Ô’¾øª>m¸D Ú±|݆<ôíeÖT+š-GʨDƒÁp'Àû ç�Æ:µ±ûEýQ«CÂðõ&tõí_­ç¡"Ù×™‡þÃÕ•§ëÐÿ…¡÷ǧG4 ý]Œ§"ܨ,šwv5ÌUT·<®„>4Ælù¾NŽùÞ0™SŒþ\ó2Ü'ÖM‚ZBÐd4¦§NiÞ/Ó]‚Œ{Jù4Ohâ=0BFcÈ«Slå!‡ !K&Pö©\$\îRIq ˆs_¿~ÍåÏ#YFêµ&Ü ¥G”Tq®¤MHH&ôЫ䄠£Ó¨û‚Bè‘xk¥â*j«Xä|WîRéCü.C^¢N  ÀsˆüCùæù% ;�êòöüþé§Ÿ¸~œžžr8Ä ]@<ÒÎ i åòÃ5eÒ6ê€0˜ÌÛ¨q‡”%ß8†ý'''Í75—h3Š,Ýï º]íü{^OàÉ×ú¸}ß †‡#þ †5äè(I?c•| þËù/éoþæoš[tâ°.¿D½ÄèØ¡Ó…鈢ó Ätàö qKçOw¬ ƒÁ`0 Ÿ&š™‚<¼ê"Ôà9MZ­çOg?*Y ˆÊi Tf5ò ¦¬Õ@761À)3"±``šÝ…ßb°´B&‹[1=3Üú·Ÿ&«š^^„º{ÕɇzâÇa‘ñ¡bƿǷŒR“Zã”ãYó<c=|[¡þr½ Ç„øƒz™»ÕÒ³«Å˜$F™%,õ³Ä&û‹“9–$ÜÙï\Ý‚4ÛŽVU|Åø#†ƒBñ§wŸSën¸˜yØž¸r×("Ï3`CpÙ).©CñŠIe4¸abÍ2Ö‹eåÙÝ›DŸë-Ä8ý†ûôMߘIhgÒÏMà´¸ö·^wCÉåüc06£QTªBŒÁ‚…¸£\H ãDŸãœ2ÁQÜf wHµmrìw !Fˆ?­ª†ôEe?ȹs¤ë'¯ù÷dú²etm{ÉîA¡°1b•ËQ9 ïà» …² ÆWñ>�9h®,ëŠßb ïäSzOÈû[î§J†ûñh̤Òq¸ˆ«p|„<HÄxv¿„ ¡hcÍ}¡Ýqé'ågv]“…<õ;LsÒŸjDŒ”Mó'Ç»3æKZ´U�ùв@ÝD”º%ä ­Ê"qƒ…òC¹ã<M Ò…vѤ r5+Qv‘ôé4 E&þæÊ<}ÏœŽ[÷Y%<ÐwúºZuë}á}][ç;Ú+MìÒD!ì�#¤*Ãy¢úƒ²öA&¼Èw…VE\,Òf!N¬âB—&‡ mŒvp‰>h¯Š’2 MÔa·þL§5“ÝpŸÐõ=È®¥Ëûæql¿¸xbõæq,ßv-û3¾U3òÁ`x€0âÁ`Xƒ|¼²lêbPî»ðዎ]>  rÏßþíßÒ?ü@ß}÷]š•=gBϯ~õ+&!Ž—/_òqù ~úô)ýö·¿¥öÏþH˜ÚÁ`0 ƒAÐD|ïÀq»á³‰»í¶+ j2å:q_€OôiSPò³®±ýaôe¥o*FÌÖ.–$-’ž|@Õ ·Œc‹¡d<‡Áò‚ @R‡Åh#3üíBˆ?lT†ù+óhâ~Ãh¤ëp®f%á䘨cÉ3ô)×}}ëýß¹"mã;»HåwÇà•þ6ÔÅ=ŠuD\޹~,Kª¡¸ºÁÑ>vÖ¶~xßÕòîBÖ·µ §ç”aýÍé1 †MB6«Ö¨÷¦¬1)ñÿñéçŸæwT0Ä`.çÉø¨î‹jUŒqŠj‰%DõDH~è)¤˜,Þä’†]ò,/ÃrÅdžU5¢Ë« 6T㽌}P œ¡O®‡ý‹å",ËØ–:ÇïaéûW—WWNNÈͺùw¢óÅy¸—üè"ÂýÁ¨_‹ð.)˜�—£0šOÂ6ò�÷{>>yÔ(x‚NÛîwÉ:iW¤»"*ÖµQäo„‚V4‚* üK!•×lÄw$ÿÏ:»Èæôíúêëé~”ïy÷ËD|[4}ÁDäÑ®˜õ‚Ëáø¸ã¶Iúz8Ž}⢠å†ã} PÚ€ô#sR9ê8êˆ`º¯(Äo!i ‰[Hu¢Dƒë .™|,“0¤¿*y¡¯ßqI÷`(­»Üƒžü"yŒ¼—‰×�ê òÏ"òIˆ<RÒO‡"TŸ´—Ú„ñË„”·¤¥­ÑuX×Ov?ÇÏ\Á}ÔõÍa_ ‹6/Òô:÷ëÕº.úº…šø3”i1Öj«uø>Y…oªB >¯ÎÚ´møÎ‚Úªcá¢yŽˆ]úDþYWÚÖ§5 w #þ †5è‹tòàâëŸÿóÎqxòN):é¿ÿýïùØ÷ßÏ@~¾üòK^DñGçèŒBâǾýö[Ž¿ý¶ÎŽÁ`0 Ã'™¡]a€-S\TÑB­ålˆnëaAȈ{þôE_3¾“ñ9ƒÁ~&RP’÷. 6ž—eìÃõ1«Fœ/˜N øÅKÃ$¨­Q“,"ÚËâ~«óÊù:ö½ŒRO›™ôìjê>1)ÔKóZ³êOs~š¥NÔQ™òPÕIªµ¸ùâo©ºynà‚‹ª«P/Ó ÉdŸHŒórN»c&5ƒÚÊr—Ž%¹Žñ!5…2TÕl@¨ùžºŸ{2Ov‚äwÎQölúNøö$1�øD,t*¼r¸•‘Yºñºµô oo@>9Oų`É(ÊèæëàpFO?{D³ƒM@"zêÁµµ|<›Ê žÀ –b•;«]•ÚF•Z}«‰˜ÔÞ³ë½×üõ­Ð‚sxóöQ»2kø˜©º]U)#k› Ã&È{+Ÿh¨UUDÍGÔ*t´=B´Ðª$eRXC¼XËûPˆrŽVS馋ÿ¶ÛÍ/ô3ËDØ4Gʤ¾‚˜&)í£ÐîO@fŸM©X•ìj« FxVTo/Ò™X™]‘„5Ø8•òg³¦­%EA¼ØX_FA…àþ }!ÈwóyzðËHY¨&­èÉô‡ösõƒWÃÊ5Î([5Ÿ´9+=ŽCyŒ¢á}úäL-؈ÉCò>õY94;÷€V½ñ^Th’6òWÈÜRï´‚D…EgBÂä¸yÄ…®íœø#@Y÷)ôÈdt´*«¾ž Ïu—<BL—:*J?¹e_^ ¹ý}aWÒÑ>$¥¼ y/D=ä……h%û´ò˜äl7€ÎCY4Ñ e&$F!MŠR˜„"™Ž/O¿ÔE™<S²¢SÉmÊ êf¡}X,+Z±Ëà&·Ró•¾Âª*âºE÷áÜ”»hÁÆ.<?éy™Œâ·>nÕ§tkâ“Ózê}«bÅ©"í*lhÂUN*í¹5ƒÁ`Ø Fü1 kι| À:hŸþ9wÖ0û%'¡ÓøÍ7ßpX¨÷ ™M RüÇø 7aXÐÅ6Ρ¼so0 ƒÁ`øá[bfæ¹âšÜhÞzêÎìhß0ã»fuèÛz ŠÆF&æ,é:x–<ë±nfÏ ‘¡`ÅŒIRAÁ,ïŠÎ/ÎÙÀ±½Âaæä<’…œš%œÒ̆ _aBc²&Ä[rë&í­ó‚Üç=”óùÔíÎ}˜ß�žn"ø5b†ê]¸G)¶–È#¡£« ×Ù¥ÁŽ0< 40œ-ãŒÝƬ䮮Šõx¹ˆ*SÚuê«P`®dðÚ #‘=j™½Ú½kü]ƒ¯j³ Ô^ˆÃ»¦\† éÏ?âsXÈ5œn²\º·òör‰æZZ•‹ºÉhÊË9߉Ã;m¢TD×’bœ’§‰ç¯“}âwn¿WíS¯kârmĉ¡ä»DrÝái*'Áˆ1Óé³cúͦÓÇÇôòåýô}08‡¶ìÍ*º[ðÁ ¡-¤eq7âl…•Ü24]•0u¢a Zª7úyŽMCÑkm‘¶QeQLoßìl§É?mýK\¥æZŽv7š ƒFþîÁ¸%&#b\ &)Bñ\ȹÂV9ÆIÑoÄ"D Q#FN^Âáý}xtÈ®q*¥.YºVÕ÷•.‘Õcw:žt~„,Ûì4ÕiÇ8­\£–ûF \¦÷E¢o™Þ /J-‚š ú zóöŒ^¼xA——ñgÎ=ˆï˜=pñçÉñ„Æ_žÐáéaC>@î΢ ¢øá…¨pÇÄ!´ä„—>Èx8úo¹Â>âÀx<ŽIýB>‹OwòAÕ5°å‚qwéJ]”4‰’Õ9 ¢INŠÓdØ r‡¤èSæ‘ã:~·RtÿM§[Ô¶Þ§âÏ»¸v^dBµ”³VE’:BÖBü‘6AÈ]‡º!Þ„¸%í–&\i×r�®)„2 ‹:&éÈÛ6)?Žg<I¤Ÿ¶ôµµ7o/èò:|묤½EÞ¶ßG5&0°H˜ä9÷ZÕ•äk§ÿ-ˆ?žÑW_}îãˆÆ#|¥ÕM]”Eß¿ëòö[Èôû~ÊHyHù4ù·Åw§Á`0Ü#þ †5èÏâ :vøðíƒt± ³§?‚åÃÏõWÅ¿A úÍo~Ó0½µ½)þ ƒÁ`0¢mJ$ƒ‘¢ ƒ…u3 *Cí“òIFú‰â-‰¡(1ƒÄ‰ wÒ@[CüQƒÌ�mg“V~•ýŠlÐËŒÁ8�ÞÞùl�ïõy3Cý;?ÿ“C>X‹z7Ýã|ÀNÞuÕ¸ÁZñµkˆÕªl$÷8 œ»Ù Ze¨ÂéVûeÝXü»¾nêmŸQ¦Íc!¥8§«y:&)Mré0‰±-Q¹:†ˆ<!”ÃÚø<´kãâ²e’[#ÉÈ(ýŒ&.ˆØðüùOéñ“#zô8eŠðmãØEM7‰®h®ƒñ¯‚ƒƒ*¾\4æ6%Ê; ÿÈLý2ñ}”Ô;Å­riÛe÷Ñæ‡N{l3ó<K!½Oi‘:ä’YGÈN‰Hä4‘K–NæÁ`0l ŒM>}ú”û|»…‹›”Dt[ ˆ;% 'Ilˆ…ò÷†´o“î=»ý‡?ÕQ‡ŠMôá>ø )á´ƒ¸e¡”þ–þ "oѹ‹âé\÷ þ‹| ýj¸«›0|€¢*bÕœÞûõYê4 výw¸ Y2~UÃà_°ë_N0÷k<Ä•°œ¶îê‹öÆMãÛZÁE‡×çèñvMtâÇMßZeØ–ˆtSš¥ß)$¢MD²]¡]Õêï¬F…%ÙòãïïâÚùähÉ÷")€åÅ`Èš>õjžÜúm[?wÙ;»nÍSK�[r¾u–Bæ‰ ¨Ï&ÔKë† .ÄŸ.i¿ý~ê¢B[Y„ö`6æ‰ #ÎCþxaE0r)Fh•äù\ÿæ§4Ñš}›ÐÛçíyÞ%-ôëµÁ`øðaăÁpï@'n¿þÝ¿ûw¼ fµ|thÈM3 ƒÁ`0 Ÿ¢q<¶Õ�¥WÿÚpùüÜVýN &ê~' N©\6î“Ò Âz?Î9õÜØ£Ó¡ñô`m> hdwÃvˆ5]ÌçßO‚|¶m4@®Ò¬Ùý꜎o×ó›ðn`ÿ'�·FTÉÛ‰Ö’‡“}5)˪"ýĉ:pŸÖ¿þõ¯é˯žqÛ+@šþ愼¥ï¾ûŽÞ¼~K«`XA”±~¸¬= †9\Ѥ䱯:ŠŒøSôXKŠdå\›4DüIk—òakm÷ÍF*cx2 †¡ßC¢p£Q¶uѤーüºÞ:úHŒq¿Ë9¶=IòŠwºF…ì9Ó]9ŸÚÔôÛëV×¹uoFÖ‰çD€ð: yûèø˜êÏ>£ã£cÍ¥ø^Qó~¹‘øÓ%ñ/¿F«oŽO'cV%š¯j… .jÛ¡ µ„[¡*ì/GœÎÜ Û@+B A+ÙÜÔ7Eù­ÏôÅ! 1ú¼Ûâ®Æì7ݳ|{És™_S`Þöqï´+4ÉÛk µC}¸ú1Ýq3$oêô£““fx…�é+}{¯|§ýè'þ´Ûë´p(‘Öttx@ÓQhß1È'. ÅÄ4Ê`E«j&ûÖwQíÛxïYß~h»s™Â¥Á`¸ Œøc0îèÀ@ è÷¿ÿ=ÿÆ ù¨ÑƒÈú· ƒÁ`0 ¢àƒÙÇat¾ÝïÖt´[™†ø“ Ìš€Ãs«Ùem=º-ñaˆÜc¤Ÿþ–Çw¸Jú“}nªG¾ÚDvÏð_£¶§”hûj2ÁÐÌá®A‡uÝßkñw'î6\(G”›$úl|b¶øDœ¦‹´o帤é,VÑ_Ãêñ!½zù:NæQ¹w|@ž>bw1×õ%Ïv¾x}Åî_`섽İV9 ÆQlCù" •qMÉp¡,ϮɢžRN m­BRL~AŽ†ÔŽ?<›;Ÿkß^SÒÔ!H¹.qŠgn“Á`0ô£ï½©]Ý»Î;¬NÚÛ¼_Ýa›€úõ&?üÆM¢å¢Q0bÌfä=b÷C3=q”«S×í3¬½¦NœNkÿ{› ëaÁg·¥¼ønA.¦î‰ì°-ylh2Á&ìò¡‰ ÷…}Æðeì¿ï^´º|Ãɳ¥' 2·Qïï‚ø³ÏýírwQ?6exÚ†ñhB‹\ñÉUÆt ãºÏ¿ë´]"Ðz‹cGÜ÷]­–‘¸ãE©WÈîm·Lä=ý,·ä}J]ãÝòZÿî(|6¶0ëÅ †ÛÈ?ƒáN1ÄÀ{\| SzS‡Ç`0 ƒÁðiCdÜã@ugä:Ꙭû–) ¨µ¼7&–÷Ðç|_ }ïu(}·M÷ÞÊ1™áÉ­Ï7oŽû}ëÙ]×Ï>b˧?¼¸mˆ?¹y3ËCy¾\ÇRªNñéNmcX·0 $ÒK‡TFõ&³`X=ÑÉ£)»GüÃ?~G¯_½á 7_|ùŒ~ûÏéèË)}Vœ’CG0z.¯æÁ L$ë©£‚O–ÞÚÃÀQ+Ão‘µŸÊèÂò­ç[2êµÞvíe&sNœ¢DÜñ$†\VŸðNq©ôoê7•»îûÀ`04r×*÷}¡ë|*cŸfÒúõôîˆ?ø†X.L Þõu¢¤wéh4aÕ¼âžÊ!÷¾)ì6ÐêRzûCÃÐ3¨]ˆP&Ô.Îô9"ñgßkì¢øó¡A‡Fã Më¢!úÄ'¹‡V˜}suCt€\ÏqŸ\y_]­hTéÜ7ýOQâ¥Qýá¼ïd”azÐg?c’¨·~’ßkƒá®`ăÁpçèë¼ 3.’¤Ûžg0 ƒÁ`ø´Ñ |9ÝWô7v{ ,7ÈnßÅ@®õ±ï9ic3‰£Knx_øÔI?ùvNè"ýõ—oȹž8¨U½i6»î�Ûx\4"0˱5UðÙIÙÆ ù§ æzãɘNOéøø€U~Þ¾¹ ï¿{N?ÿôŠNNN8Ü¿~BÏŸÒÓ¯sz®¹¦ë·×Áð±äíjŒ±UšyÏF"’oÄÈÚå\v,±qÛSÇßÊߪh‰<”âöÒ6uó&'ò4s½E凨1²ä$(ƒÁ`ØU£‹Ã÷ÕÛ&^&¦$ײÀ6ßm I·ÑhŠ ÝdûnéÓùC)ƒ»Ä ¦ˆm6Þ‰ŠÙ\»v]³z6úÛlS÷㽂×[‡4í:§ÅÐCF}êÞÿô‰´ª¯•Å墑¿ªWÍ[µ(Gc~A]ÄßÔO¾‹*²á»å®Èùï‹r—ßúDíGÜÛêë‰ü˜á!#ë°¹®šS‹¼'ž=ÝYû•×<Õ3ÕtóÎõCw7<÷K&Ø€÷^8¯Ž¶ð—kWhµëï¦ïSª»“g�ï&¼VÕŠjoõÚ`0ÜFü1 ƒÁ`0 ÃÃ…÷ _!ŸÛ•î6Ü„u6«áÓEtuU³;­ÜÍuÜn !âºÊ{×’ÙGÚÀÂugÏf3úò˯èääˆ~úé'úáûôò—_èìì‚ Çczùò)<> 'OžÐ¤žÒ›:£‹—W‰hSÐÜ/SñÆeÆ×ûSmßÀ¾B5s£¨n3â©}Ý{µT«ÜÌÜÆcí‡Á`ØQ~Ñê URW¸oôõ5qáúúz»¾b§VÄT¼ÂÏÒSGÃižŒw.3*JšŽÆ4†ÚJr9ã;¤œ‡…ë<i²›Íã;¬³¯ ÝqÍã|Të÷‡‰?>Ó á³mÞÚ³½{¿¡Ìñ>®jZÕ®y§6§¯Uwgß Cå{—ªœïã=xŸªY}Äyn…È÷¾¿±¬ï±-\ÏfŸNçl²NËï£é8#õ°NAý§VDÚ‹J8åέ‘zt?^î¨Ó‹Ðo_.–±Þ[µ2 ·€ ƒÁ`0 ƒÁðpáŠ.ù‡àFÔ‘<n÷ üyÚh§¾Kܤòó.¬mPú>°CžºýÉk7P*¶‹c Ú}Ô­èòþk`׸ØÝO´_ ;õ–T2JÆü®n"þPCøñÍoþWDY°Y—eTÕ=<< ££Vfxñâ%ýðÃOt~qE׋E0jÖôòõ[úñÇ_èäô„N}N³ƒc:<>Û3O‰&G—Á챸‚"B0¤…KŽœ˜gUúÒ-Jiúto²3Û¼ìΊnÛ`§îØåmµÊaErªI'êQQp´þÔXûg0|Êe,âÂbÁ¾ª!l¨ m-âA{ ,}*èCïX9¶® æó9ïÇѭѨì(`Ê»Å%â,ã 'SüÁ]Bá¢ò‘0Q'—7ÈÉdBn<¡:¼K*ßœÞ%þ„ß¿›D;Gˆ?mäTUÍù‚øEé/ ´Ö9mhwu]n·×P¸ùQoÈïœÔä|ûÒÐô"(ýÔ$o¾ýûXΗk÷±¯k)©‡RßçKO¹ RwÅ~ëøöMŸ¸ÕÂibL£û3êûÆ5Qß‘qãÅ®–zò»ïyÉ!Ïç]•ßú”—$QÞ¸6HÚûæ£.kÜÏ]ćñ áðàààVåŒøp¯ˆ@ú×»ÖkÝ^!} j"nÄW"}E·˜ý†—+?ÜF!¾ÉxÔ¸ý“{à²Üâ} e<¿^püwñœHyð3P™âÁ`¸Œøc0 ƒÁ`0 †ÇÆìVÛ{Ó�ï6Çôèìw7†ámÉû ð²êëÕ'3ßPÇ’±n€¨à(?ÖsA·³ÈïByõØgKç»kS¾ùí¾¹Ç®CþaL­ V-¹Æ'×* ׆-8·fã%¶1W¹,‚d:¦£ãC: Kí :;_Ò‹ŸÏèå«sZ«m]”´×ysvEúÓ OŽéÑÉ7t4Ó쨤'ŸOƒásL×o z[]Óe J°587†/Ú E",%ÃqØ_+Cu0ѵn±vŠø“ö5YMÉnC¾eþ8ávª™Ô‰PÔ„š\ÊI=ª]—¬$çÅË[j0|ª€öòò’&Sv#·ì‡±ë}�£4œ||Ìä™>ƒüMïâ!å–‹‹ ^ÿ£Gh:›†¥ß{–ZÅ¢\ñÇQ·»‰;D‹Õ’Ëbd††k&E¸Û“"ð.yõêÇ´"¿‘ïåtB·â{ñâE0à¯8¾ÃÃÃ[ n‚ÜÇb¾èÜòj ®½yó¦CŽ8==mÜVí P?P‘7¨Pö“ú½+PϤÎáyA}øüóÏ7æï]ö3›ò…ZáHÍG¼ìKÔÑõyŒ8ù9Ú³ü†ç˜ÎÏÏéõëל_~ù%·yØm LÈćûA~|õÕWœ7ûä¿VßóçÏ9¾o¾ù&º‡ÝBLB½ùñÇyÒ‡¼FÜûÖÔëï¿ÿžãþâ‹/èm“uö‹ïšãû‘y=ˆïôâÓ¤»–8®Ë¤¯|pÊø§?s÷ñݶB™ m¸ºŽï”w5AÉ`0|œ0âÁ`0 ƒÁ`0ØÈ̓½ER¿ (áe‡_Û†+Žs‚\ â†YÆ›pÓàà]à.âÝ7Ž¡ón›¦ûŠ÷~ g^¦)õ I$®\ç8uÂûê“:6ðúýˆ?ÛbSž x…ÓÊåA/zH@9p«8\ö;ÀõÇTjò¼uÊV«CàSZÃ2ü€jÂÁÁ„>ÿìi0¬œãÈ<Ï‚éœ..çìÆ„Š’%W׋`H{ ¤¿ÐW_¾¦ÏŸãôtÄ®¿XýbÂCÊUAe ô.ºHñQÝA€jè5ÃpM”¶}úÊÞa»NµÞ³aº!ò¨ûhÔ~œkˆ9.]Ãg™æ’Ì+Zu\0èl^ߨ¹P ÃG ô)aœA@‰í}pž¼ãˆwIüõ, a̦3šNÙ„‰mlL¯«/'ÁUWØ·(˜1Oj(ˆ'’–¦TÔ4@C&~”a©];Cµâ!î°¯®Âûd•T~Bþ”¡V”ZzI0“]פßúÛíð–¢Õ"ª¨Ô‡uØqpM6nnvý-ì†_nJªónQ,¥!ŸˆÍMÐ.¢öƒø�QéÙ—0 „5Q5«}ãe‰O¾ÃÞñq‰ª ž£m®¿ 8W«î�Û–ß¶ºQ]E0QcÊÝFmCüÁ9RÖBbß>ôyEÒt[E"‰OÒÌ e›ˆ?®S5/t=¿få-äÐh<bÕWöÇ7DÁo¢s5-B|u~¡=ÂR–‰X†vÔÇöH—Ë Z[ø·àûuÍýÞÒ.X·Õ`0ÜŒøc0 ƒÁ`0 †ð-Šì’Öˆ?ÄD‰Côàcg‚ß–ÄŸ¾AÀMûô½èõû€n]?`U«‰vPüÉ‚r¼/âOŸ{‚¾0¹+È×îRÄU„ùwUݪ\7¹IyèˆÙTDÆÈ ‘í=‰BM2Aº¨vÂÿ`ÉuEláî †T(|ýõ×4žLéûï¢~|γ·£{ŽQc‚û®‹ó úå—_xæté?£'ÓÂù˜‰ƒ Œ˜]? }#^#.´œErC✸Û*qG±Ü½'M«Y(º «S d˜¦–¸ã|CÞbvH‡ë¹V!©öQ¹§£¤ÛqjÛÖµŽ †ûÚC´™X´$qý³oß mâD[ µ (zô¹&Ú‡ø ]Ç?–ø’hêÂ:¥ø³‘¸CLÚñœ[Û”ÎIȨ¡ÌÂRl$EÒW–ùÚµ®¾|¢v!½‹GǬLÇ.)C¼Ç‡3¾ÇôѶ?åzÕûó£ZÖ!ž&r<:|D''t8; Æû.ñ§ûf¥ L�¢M]/Üè£GsšN¢òå}“bŒô‰€¦¿äb=€¢‡Ô‰o_…Q B|R—×¾ñ qAê+â»MúvˆP±AþB-¿qý>BÅ6Ï,Ê�q)Oîå.úÒ!nùP6(oiò|܆ô }Aœ¸iDíjß¶K\}‰ ÑmËY\}‰jâ½Q‘¨÷P›³yx>޹ÿwµÇ'Ç2h(kq艫ŘŸ ¾‚‡öéQˆ{Tº¦=Å…ô$¡|BƒÞ,ËP1ÏPûä_^þ(‡Ëy¨3ç ­™»/ƒÁ°?Œøc0 ƒÁ`0 †‰HürEÜ®o þèßj_9rÁ¨òv–#d1ÿyð³Z53¦ãù1‚*ZRKxÐD q{£f€çñ½OâÏ>ø°I?w—¶„mOü‰F®¯ûާZJݹ®EDfÒw³Æw¦ÄºDÉ—x^k€êÛŸ×Õ>2P^—õ¢g,kÒ,0,T ìçIåžàèf‹ßíâÎË‚ %2Œ®7Šð#Ä–´‚=¢Qú ËdTÒÁñ„NÁÍ׌kÕbuAËú*ìS9; ûF´ ̼^ÃÄj¹¢³³ zþã §Òg¿ ÙƒŠÎß^Ò¨xK“Ù[:q\—×Áp³¢zUв¨háÅõW0.ɵ Üz¹qXÄ5I÷Q‘ˆ:Á¸n¬ª£òO…m¥ᨹ½ök“´¤ø#®ÄpþRžž"Ó¤¹NÉzºÃ"þ°ÚnƒÁÐBÔ6Ø••"å }†Qï-¸•Á;«¸#¤ MЗU  š3ÔßÓÛ¢¨"ï`I_~]‰ø»qª6Õ¹FñÇWñ݋ִPªܶºh G\HÃ$‘°€@ã<­+àÈû=½×a(GxWà}+þ8ªàRr:á÷òl2AÞ‡øáVÇq=öªNÿ;–WÙ«2Mh:ž²ÒÖX&aŸ8©=<éÍÜžá�«ñŠI?xLjR”Ô£Þ¸R>q¿‡I¸®SoV£o‹z‹Dòzµ-ÄE®‡…Ë0Ź/pˆ‹Ô‹¡øz N·‡´ãúò<é4䨿{Jò×—øn›?Û¤Cîd\SžïüºÛäûy#ù#ñuû™»AÊØT¯w‰OÚ(ý{ºÏk÷[ ?c‰/´'“é8>¯ .S Ë·õzÚ½/¹}šNÆ‘ˆît|=iì!þ`=æú5â¾ë¦çdtùKÄr½½ËEƒÁðiÈ?ƒÁ`0 ƒÁ`xpˆ™‚ꪠ«Ë`$™ì¬Ö0;ƒ¥OÃ€ÜØ5n0 ²°Ã�üÅÅe0€,šëŠëq³ ®2óT”Lp\ÈAZíÆ”A}âÃ%þÜsÞ÷º¦èh~•¾¢1]‡õ²7¼g·Ic&OÄ#`¨™H·3ÊP3èL áGŒ0éû¤žò µ2,J=­25žüwß,WMÒÛrM}\‰, __mÇü¹åEñÝEÔw:erëú#׋y­ ÁñR¾·ú8M\tQ§„ ¸y ;Æ!o§#zöÙ)=}z¬·—LZÍVtúù”>Ÿœ£nI—«‚.®æôöìŒ.ß\Òüõ"´Ÿ5ýüâ5== åô킎¦K:ÿBnú#?'W¾¦ëé5­æÁ½FÄùŠå"ƒ·>I§jŒ0.\Û‹ íáÕX³Û¯‚VÅ4ºƒ[…``¹t´rãNîD¾kÉQú‘õFÔ:ºsI­â&«ÆŽëHèö„69güƒáæ÷‰ôåÎB[ùÝwß±:ú‡¹ÁýÅÇóZC“õþ&òH¸¦¼›q½ÓÓÓ5%’<Î<>qõÅ$Q ¨?ZÒƒÐo$òÝBÙiÅû|¾Z° ”=Æ“ý+m¼-óÖÅM‚¨ÐíKˆy_hò)-BêÙtÛ’?îúÜ»��Ôá¡ûÜnñ|hÿ‡6‰Âðp ií·Œ#êmgõZÂÒÕÃNü ›“ ƒáV0âÁ`0 ƒÁ`0„ÐPWŽ– OóëvÀMfS–É PgŠ;ÇxìxöðxIÓ鄎òH¨c^âIuÌ�—ãârAfôiâ®#Û0bÈè0üP0D¸-9ã¾â}'Èg“»îÎ<ý˜áþxv@‡“ƒ¦¾ÆÙí1\å ZT%Í—5×åî•ÚY¼<“õšº¤yd¶¨,؇z,FL1¤¡®Â×PZ±JâÚ+[ ò|¼k4yÕìiGÒEqÇgBNÍ þ. j®³^Ë×–c2ÉÔ´ÄŸP®péPŒè`]U<yö˜~õë¯ééWOØ­À"NË“1¯Q¾‹ÚÑ/çszñê-­Ê**þœUT…6ôüì‚^¿ªéí›k:íâñ¡§G!î㣚Šëeh¿V´ k½ z pþ*ÔÏÅŠy[QÑÇÐ.{!<ŽùXUEeê.Z>¬AüõiÉduøšq…|cøòDä*ÉÎüm½ •Àµ&7L ÃÃ…&g¹«J¼{þùgº¸¸ §OŸÆ¶4¼#åý·Cho5!(SÞÒÁq\^^r<¢>‚×{õê_aá'_âÔ¿ówë—!ÄåžÉxB³qTò9K®¥·å vb_"žßªFw]MìêÝ„ŸËП½¼¼¢«ù5+øA}ƒï[©´uÒ~xZ\Y¤·oûâ•3àjr>_p¹(DEÆø˜Pò)ʤ£ÞËŽ]B*Fû¾jsaJÎÒsíëN_ ý1\ƒ•TÊ"ËÕW ·Fz–0QågÉåŠ~•\â7FÍ÷C*ß»pê˜ÏÖ*”“4èužF©—Co¾öXQ¬³ ºùÒæ÷P|è#\_Ço§>¥,êá¦pëùÒí«åá¼y*Ï_«¬4¤’â~·é‹DøöYÖ“>†MmYÈ2tí<Ÿ…t¸âúr'œþX®£Œ”+Gê¸%®} ù›Çô‡ó)ßk˱§cÛû»O§gVl¸. ¼UsYvÆö ý~\®–IíwÔÖñÄoÕ!Ñ@tդljgX£.àYÆ1QòÑã ú†ºÏÝ~®¹|^É7ul ƒaKñÇ`0 ƒÁ`0 Î%÷a€Nde0TÈ8BÄ× "±χzOI£0`‡5î0åÌVÆZf[c ^( 6"ŸKª³‹°p-l‹Ë„ׯ_7$ íòèCÆ}©óÜW¼)ºÛQÓzëøóô£î|ýõgôÅÓc&›¡~Á@ÄÆ¦P—ËšÞ^®èåë3úñÇC=¼J†  ¡>Õðwäûë‘ä¤ÞŠ;qI!õõõÛÐ~ûömãÚ¤/Ý}²öû`ÓY·™å ÍÊín»Öxà}Çèàdûça�eøèøˆ‡ºãð—¿þ‚~÷ÿù-}ÖØv“]ÔK&þ ,_¾½ ?þð3Uîzóæ 9´—P~ª#Ùëõ›ýåϿЬ8¦o¾ù†žLƒAû"´«×‡ÑÐ ÅŸëÐV±~®ªQ¨//íì™×‹1¯ã¶ ÇÆ¼Ž†¬˜î¶,¢+ü¬»AkÏÑÆmïûLʃÁ°=Ä ,îdŸFT~¼à>”}¤?‡w¥¨Ø}ñÅþŸ¨I³Ïu&Twþüç?ó»í5ú  Ñm4€¶÷É“'üŽÖÈÛü? µÊ¿üù/tâǹˆû³'Où>ßœŸÓ2Ä[£¢8‚»ªI|»ÕUº ДL¢¡D¸)´ :­Ë½ ñAñgv0 ýŸ[{ߨ©õ¾†ËÈð.©–ÁòT²³GbNµ–ïÒoŠ„‘È�BI]_ÓjTÑ,–ùþW5wÇØõVHúöìZ,åÞ5ËTΈ›Ë/+O ©j¾\tÊ ®01!àiÈ7Ü›V”r‰ô%„h¡‰<8Ò?ÊúÍ›×Lè¾ÓÓÇ!ÞHü‘ëáw<G9$Þ–d#Ä–6g]"F A*Ökפ1¦ý=ß|/å7d€¸¨ë–‡oÒL]J|p ŠºôM&ÓT/úÂÁ•^œÑ ·NˆÑyÒ€"M­H›³Zˆ3¸(f•å4»²Û°È5}ˆgÉÏ¢“d"ê̳gϘ”×q±ûà£AÇ‹¢dïýĶdºW¯^ó½=~ü„ûî ¡œÅEX›/‰¸ÖE$ëéÉ.ݼìï'k´íÉz¾äqÅguÅyŽô¡½)м¼uýIJømœÒn¡€ë?EþÑ}¾šÉæ‘p¾í Ú |Ë7áëØ¿D{PŽJn7.C›à{«À7«¨¦áZ‰øW­B;âlV¾½2ê4¾Çp=´Ùˆ Kî MÈPBþ«ªÝ|öÉ`0n#þ ƒÁ`0 ƒáa@Ydöd«“êC(,KÏJ>Óifã,O •­V#&U``»N†é¬¤Ñ¸lŒ?¹qYÐe€U~ ¹áÄE’6¼È`+ö‹û/íbéã¢÷;îß>Þ¾ìigžîӽƺrxx@Ÿ}ö»ÌÀÀ÷õõ £«1øIšÚD»s4+èô¸ †¿ZÃÐÄÕÓãÅ’Xáçú2Ôå )U4¦ñÙ2pî…˜hIÆY| ¯êh ‘µ+ªÖ½‡‹F:çÛÁt‰«%È´Ï_{ñú.M³QkŠ b�i ÃÆ¢Nîú»uUjаDÉ`ç»3ã}óƒâlàÆ°ç›0ñÔtßòבš5Ë\âÖÈÑÎ Žù²~2Áº,B¹Å¥‰S³™ãï)Œs“ЮÌ&tøø„‚ñØû2Ô—`òó°Íp<o}0²UhÂ2^Ãh¨[eXŠÆ¡°,kº<_ÑwϯèèpJŸ} eG³02êÜá#Xç`᥆R®?!®7“E¸—eÅ3©‹EØlc£E4°b=žÃˆR%ƒc0¶VpAæÙ ÙÁ²¤éò‚U­8Ϲ)/xÝÔ]NŸ´©¨ŸPŠeÍ,%-Ó¬úãðÜLÂ}Ž+8Å W1¸Ëƒ’…#G]«uŠhó|›:ÔWVR=òýƒáÁCún}ÆpQu€†~tðÞÄ»]T@oðëE½?¿nKèh‰ABG¼ø #ŸâaWY¦?~y·Eˆ$ÞA`Oïù*©eu¢ºÖ¾í@(B‹¯û{w8—Ý|…<)Bf²ªA¥ßHí™ô^%µ¨9ÄJ‡)¼â#é'û‹¢NÄ–B•Y\ ç›{Ý¡¨ø5O¢–,°be™k&R1éñ‡þVòC/sì«V-q+¼óªÕÓ8|Oê¿ë4D¸¶@Ô¨'‚ìWq?ýôH@éÇûÓ&޶ uNµÊ6B䡤ʣݰÆô”…gZe¤¶~Q§ÿ9Ô§’<ú¾SrŹ÷œ|‚ˆqX#_EM2'¦¡¾€dŽp¸®vߦ]϶××}zM¢ñk÷|™×@\ fÔõ$ ç;ñIžéòÐ>Xi¶Ž œBôÈ]üå.ve.áû’t= HKBÀq×lIpÝg¡Íß»H8!9"_¤í’ 29òz“§[ˆbB¤CŠ »>%¤ü;¨/>ì‹ewÅž££ÃøÜI™šW¿£âdÈ{Rä4´E ]źxKVð u­µ}÷Tž„¬SEÒ*:×Ä=¢~#âæ»ï¹ªÕ󷉀%ù(χ( Ë3ØmobÛhôƒÁp[ñÇ`0 ƒÁ`0 �¾ù ­ä½+0(Z¥AV ¡ÒSó2A‘'ÎöÃ'ní'a€r‘*Wa? I|¹ä5¤ø„‘m ðÅÁײ™i)á1h- =€§Ã#mõ`}>hû~à³õmâ¸+ô›Ìµë‚íàwŠ¿{Îv…˜gÏžÒßýÿŽÉ?/_þBßÿ=ýáàYûÑE@E9Å€ëp5§jþ‚ç¯èrŒ‡3Ì/Ã`ut·¬&t½z­W4ª.iâC\~Æä‡ vªÈ‘hís]jÏä_¡.Â5fA‡´ŒÓÀ|ãRAÍJÆÉl¬Z.ø¼"škß*¬è;áaötm ¨Ç™â-™®Nòû0\ˆô?ž‘èö®-‹]]¹íOžÓY'‘Q‡)ÕX'("iÄë0l.hI?Í?m¬Ä÷)$,xžÉ>¹ҪB®!Å8¡4ðäñ“`œI3Ê]cÙd€Èxq}IêÌÉø½]ƒÄ?ü‘êÿgãÐþœÒ†¸(X¬èòbNó_^“{yM£‹ŠFËpgu,/(÷üðË”ÆÁØòøçcªgùahpzA‹"´w傊é’ID\§}0ôžØ>¾×ÆŽ…jLãPG'õ‚Fõ•n@PzX\Òb~]!^„€g¡Ž…ª�#¬_„¨®JD› Jàh*òªF†ÊÐ,<‘L¹ ëk7£Ur÷hù9=Z<£ƒå “~¦²lDMÃs‰s¼øºáÌMÑoYŸ\omJeg„ƒáCC®2–+÷€4ð×ý×Üæ‰‘ïzqõ%†}­×gþÎB¼õWը/\k!£àw®ö³Mü‡‡ôí·ßrüL@€A>‘>ÿüóF¢QwÉëð½ý/M(€k1¤é…q=E}è#G•"èH^òû,s­T4Ê6Ýô6y“]qÀð…ûï裃´ïŠ&LÜ1égU‘¸/Bx,¥"¤ô¯tZØ¥ÚÙ“~þËù/Ü/ľ¯¾úŠ—¡2Ôå¨'È}Ë>MÐêŽfˆl0ç>ß%8ïõ~øþëý¯LêÁs‚ºˆ«cÁ‹/èïÿþï™$å ‡k Ñ.O__šócrïšL' Oú{LâÐîgEÙeòêñ„är‘껆7~! ¥[_WHWr]¤7ª€®øúrx¶rE¦<>!ää$FìÃ7íË—/ùü/¿ürø“Ÿ'éˆK`yN%ÏEå6'nÉ7µüÎã“k!ŸQ‡ð�ûí7t2:igÄŸ¨IP…+:„"(—á:Wáu‘Ÿßð‚¶šÕðÝ®"¬ªUVÇ|r+X¯Ý‡²ð}øäû¿s/‰¬®ÓÛ÷Ý"e".�‘ºþ7mSj—êè[— ƒá60âÁ`0 ƒÁ`0Þ/ôäãÎ(<Ït-’ÚfC¨öKV†¨=Œ½Im'…/J d‚4g÷‰Ü>Ø0+Ø€ÌFÅ>1<È Ÿ äÉìKMü‘Ázq&2ø™Ô¾?ôåîg¿ó´ïBÊÙ'Ü.ùÃЯ~õ-ýö·¿ ÌoèÉ“SVïA]Á,o!“‰RK3[-i¯Ç`è̈ùiÕ%UËhôº^‚ø³¢ùe8gyÅ„ !“xO '“¡Ã[ñ<Hì˜|ê)ª¦¾æ*ú·Ì¦Õ‹V�J·ÓüŽÏAÉ©ó€6ŽŠJfò©_å´»†Ž[²M–îý·ŸéÇSg6®SdòÚØá+²K8\$BÁ`Á.Gíìm§ÔІ Ï`¨hê#Òäꦀ«zEס|0hMF´ç<ÿþ9½~Ýиpîì䯳h,9Å/=]ž_Òå«·T],¨^„kÖŽgWW˂ޞ;zþKEú!6fÇtòŹ޳ù­‚]b„Ä×E2&×t0†‘+Þ3Ú×Ú½”ÞQ¸à”4-—‘lFÁU]…ë\ÅçžfoB]¹LÄË`,/&¼Ž®Â@˜„,ÎàŸ‡ô-­V~Qá:WÄ Xn37gÅŸ2Ô­±ƒ"òŒµbIpÙ%u¸¦„¨%eÝTozö¹¾¿{“Ò ÃûFn Å{üéÓ§[· оÃQ`PÞÚè®ßGãñˆÝ{5ï:jÛ=V@á@Ü›eFzy»È®,Þ¸—ÑxÔISK^WŽ"ý�ZIDׄz!Û㵄é$Ê%’€ï\Ÿßµpï›ÎK°²hUGá税ù†üð{Ê?ªzÒšÁ}S?E”gÐÿûå—_èùóçüÞQ '¡è¾DNÖè#6‰Ê¨Ü“&«Ý”®!äꦷ…|/É7“È;Q¸ÒávINîCÜÙJt˜Ñ¿vÁ¬kw¹ø-䔯,€ÜG)lȵ³®Û@ìûD—sêi4©~S|m×õÞ§„½ yúò¼×Õ}ä«<¼&± ¥¿SÿiS£{»H¤—g «*䓊¸¼“ç†ÉVh/½&Ùùµç›zÈŽ(´Ÿ€VLZ«ß¤Òq‡ß2žLïÇ`0ÜFü1 ƒÁ`0 į}‡x£‰˜Hg)Âý�’a-l”™²ØQ5d ‘p׳ePS „ MƒýúX×5A½ß}nƇEúٟ̳m¸]ó£k”šÍ&ôøñ×ôìÙ£°~Œn§ôÿãäÃ=¨å –]Ž¢;ÌÆ¦L�ªêPOæ5]^]ÒÅ…O3€A`¨µòüjõ\ÄíÖpц©×f 熊ü÷¶yÚçOŒ/±Ž¢aóz~ÍFÃ>ìS·rƒív'QcÔÃé‘$2| ,r?-H\»ÎÉ"y–ç¹F ìøä8g‰Uò”fQ@[tvvÞÌŒNŽP’òOJwó–g¢‡p%²ê ¯Gì~%*îcǼ¢Õ"–– ÑTp# dP;ðÕŠëëŸþô'òå5ýöø)•ÓÏο<K㢢Qá“›ˆU0š.ÂïhÄ,< µ¡í¤dÔtKvÄE«ytåêù*Dãèj1+é8Üû躈³ÓÁPx}@ŲLnR0û»ÏHœa}5‡+–&þàú‹º¤‹þ«El—ŒåÞ73…Þ•OSïŒóc0|pÐÆù¼ö0D”e…š¤ìÓ†q¢ë‰«L @-yu]1G]¨·w„k‚ü\”ñ?—MЀ܇M䟾|% Q^b7ºZ„¨Ùîöäâ¯r< ïÛ:8:ŒîÌš{ÍÒEêû‚ˆ•D@¢*ʲC`é#wä})!‰€ìƒ4çª7Û@ÊW }¼•‡ÛˆOgEQì}þ×_Ý›pÏØ×çú Ê5Ož<iÊSÂEÂsÙKÊÑWH®/¤éîs?¢¾Ä>þ¬qß,Ê•˜,×O�úý …H8܇(ym ™x‚uTΚp ñHü»’ˆJLB¸Úˆ jFH +8¦º×ç¦m›´ PvP*f³õ6/m¬7‰ñ+*’<Çé9”Ç ('ß,˜LúnûázHNÓ%#ÿ¿ùÍoø7òr蛃÷ßÀ)—I¨cZÁkˆL' ”䬣i0n #þ ƒÁ`0 ƒá=#›Í©ðŒ>(§ÄA> Ö×NÈ?«dh‡²Or �;p]íÄ7ÌÒhܤE™ðª#ŸÏdÔkÌøï3"õ¹' ì¾Þ-nw½›�¤ftºÝˆ?"xƒëˆô?ÑŠ×ââ«/ Rþ«ÊÓÙå’JΩFtp £š]}]\\QøOç׎.® º^Ö´ô%U®ÃU‰¿“!(Æ]ñýˆáDäþóÁøƒÕ´^ŸuÝmÖ0”V­MŸáTHF’¢~%ÊX:»ûf­ßÅÌóÍðÍÂê<LÜ©xÕabnsûÂé©ÒíL”)\TèñÉ«ù(·ãdü‰ Ôˆ¢Í!aØTQǶˋbSåyY-£›‚ë«ë”Ò¤ø“ˆ‹³`l}üè q›_Íéí›3:{N Ô?ÜÃeH{™Â&ˆ?(³˜¯#VGC¢0óÙÕñY˜_.è—ç/ƒ×Ñé皇úw^Ñå›U8ÿŒ5Žo6ótýfÉ.ÙXâ™”3&ñ½—­ÂötTEÃTŽÂ=Tìx+ÔóQ8ç Çq–;8BËÃ`Ь„Äîyòø:<#ÁÀ6^„Ë»ºcclHóhŒpavÊmZÑä¸ñUTŒà&NÀVü|¹pó$ÏÎó­¬Äú°#Ìc0|°×:0àîɷéÛ >)sEž} Ï•ø‘^>ц®,zTjn‚vµå›“x†û«P ÙGTƒ¤¯á½ï¥Rëþ„^ë>Æá{#´á¾É¦¶Çý É˜ðoËè$ êüì!üèß:ÍB®€²Ó_|Áy 7_ Lˆ"M~î¦ø}ÄŠ>¢Ì.ù§û‘û@ΉAÈ2›®rÌâU¶½MŒºí³¦Ý;BJP– ~èãBÌ‘pû\_®+×F\¢0/q7¸-òú¨ãë#Xõ×ízOÜñIœûÇB(‰²<ý¤}šg…zºnÑõ®”E$T]5i߈7/ÂMJmk'oñøI>nƒæýa}NƒÁpKñÇ`0 ƒÁ`0  í@y]»`÷´\$¢zâo™¨ÇÛÎ'’H@ɘï0[ï€UZÊ"“ëè’î FI!CˆBdÐê¢ $Òï2ãZr5"=3[‰1Èð®°iú%í1”ýôÓÏôúõKúá‡éüýøã<¸¯|ÙåU¨&¯Î!ã?'÷Ë"\õfŒm‹[‚m¦ÈŒVu¸Ã4úzÕÌReÅ—ƒ“!–‹%߈Ì0ROû\�hwuZ)HêªV©Òa¡X4Ç |å’#Ÿ¯ r ái\ f´ªVkçiÜDþÉÉB» ª`¶pMÑÑVÌÿè® éZFG_É…@œAŒö®Hb.©ß@¹¨Ùgä—3Ìô?¤ÙdÚŒ\Ñ´WLÔy~W‘˜F/š|ƒ;4ÌP ˆ ¯ÄÆ*ª>¥2ýÕ7¿¢Ãã#úéù zõó+:{sÊ#¤)´âªÃïVX,h…ýÉ(Ú=*’«ÜcuØ7wtU-èõó zþOoèôY0dùÇ4 Ç~~¾¤‹7ש\B¾j&NÎf£p¯S:<ózÒ6 6ªÃ£)Œƒ!ÐhBR]dPXG1Ÿõ"äxˆ·¼Œ¤P§A AQ(„[U“¡<ªð¬øHf+|xBB:Ë圉AP8šÌBœ“¦Ñ"¤ëšÆîš¦þ:ª±‚C6ƒ[\³‰å¨qc0>vDÒ3õrÕ¨”ȱ\Áqà÷êÕ«Æå”,Dä. ñã]å@Ä¥Q‘dï˜~ÄRÎ;TÊ)›òAßS‡ OÃÄŸMäb!< õ¶ÍÆ”{ø¡¸7߇�÷…-@hÀoPVšxÑGüùP±/™ä®®-$”»"ÿH:>ÙIбÍ`—w tß⺠ñ%ýÆý@Iâ߃D½ÎDwë2‘ï`ýüîJüLƒ÷ÝîZ6©fÝ-[—”W&Òb¼g¤sÆa¶i?â¥ÐþïWŽu?éVàûß’Pd0 ›`ăÁ`0 ƒÁ`0¼èñ³l°ª` ¯Û€®Róí:n'rЈÝ[9o—$¶ÇLþ‰ŸÄB–àK§™È0a`Y اIù�¨ ®FcþªI»–è×0"Ð}#Wýh¦„÷¿ ŽI?ß}÷Ïê‡K$~¾ÿþûÆÅ×Pו£«…§Ë`h‹3hP·V‘XƦŽkM SêªÃÝÕä›™ŸE™h¼ëÌ F812宿�‘–Ï룻¥§MÒ/¤,Hã"¹$ÐçHX=0/†yDI\n¼K4Ï—òOZ’â+ýøHð¡ä $Þî%º„¡•LzÁ"Š>£±câ 4^° Â!ò0”Z]p›U­–´\Ìéêâ2ÔŸEJ;!N‰´!)Í> øŒ±PúÁÌz´[¯^¾¢?½ ùE(n]GÀ*µp±ñUŠTWâ}á¶¥îà÷2”ÑÙë zþÝ/ÜF~ùå—4:˜Ñ/Ë×4{Τ¤U(ÓU(?¸/›Nk:8 ËÜ3`6H㬠1AGSzôhF“é˜|9aâ·Ÿ£ç!3¡NÚÎâŠj¸~+bÐ $ .¯`ugÎ+ü‚ócä—4­¯¨¨æ4ÂóBÇ4C¹¸‚U›Š®ÆZÅT5<Cë ¿ŽŽ †O9iCÞY·%þ “¾"Þu¢„sWý;‰W®¡Éä·GÒåí±iÖäß>Å"éKÿ¡éó6”›nxÏ’G¹ª‡(žlÂÂ(0Æ>T9èNô&°Ö߆üÓäh)ƒ>u¼£¿ùæ>Å,Ø'ßš¼ q8~›ú'IÛ>„3}m‰OOXØDË æ·…ž8!÷$Äý¶K|:Ï7)töå]®Ì³ëuEù2ÿ>èS€ÙTvúyÚv"É&bŽÄ'y}v!âåß›àqf¨~éïéxï]¢MtÓçÔwÚ)G´Áõ úæºžËØÀ>àþ>ÝšúŠ6Áú©ƒá–0âÁ`0 ƒÁ`0º3Ýxp²Î] ùDêñÛuÜvÊ]—¨§ÖEÈ•ëeì¤̰fãs8ŽA_= ®I=ZAE y8ÃÁžEµ€ÿößþ×Ô °Üd°ñ©N·+bÕ—f&q9iêaœ=Ï>ëÈKÝ¢X³ %g÷P¹â >qAÆ×O×C«-—|LÂëzy6„øÃYÖ£ð“o7÷›(â= Â=·{nÚÿ}£vàèøˆN±Ú’ �Ò žu¨/¡¼¿MÚŠÉ^”T„ªÊÓb™›rc™ÚöÉm Ep)"ŒóëKVh€‚R©šÖÜ/DclÁw_×Ja@\ãð0mÜóç×49,éw¿ûGôóÉs:u#uTý‰.æ´\-èüò-¸ž„µ Õ°9 íälBS(΢:ÅQÈÇ`h™¸D¸ Ç3®ã±ŽDe ÒEbTá—!ÿBý\]sþP ª¯ØW|J&¼•nÆéñf1 7@6žœ>ævmH®Â²ðNW\Pì�ÙcÍ× Øtm‰má³gÏø} Ê~@T«£¬U¿h;7Þ]”Ôé4y¤ø“u¶y?Ë{C“ë5vÍ{éW ­xwË*KÅý˜·D½0ºx¥µþî ® —(ù^Õ§üÞ„€"}°!¢ö¶´‰Û6¼#w%^è2Ð铉kD3UîþŽ_À¢œ…ëË„ ,ëý×äï¦z(1)?Q®¹oˆâ#»gÝPÿ·…&xq¿(}/Ü6>Iã®õfrßò{èÚmþFò[ˆB]¸¬Ÿï6¤ÏsýŠõlÅýuîÓ»ýÜ–5ê<t7Ï„äߊ'Lܾ< ç #þ ƒÁ`0 ƒá½Âgkþ-ÒLìY‘wK**üˆL7¶Ù5Žl+W9U=¦ÊG%ލ¡Bìò«ªZRƒVëásÒ@¼žµÙçB)�ßdÄx䟥]Îöw;£÷®®7®{¿ëáråŸí�à T~úË·ÇìÖì‘/ÂêN¹³‰#(>0Z“`ý9 õ{Âb0á“âïÚûŠAââ %ðˆÛR_µúŽ$ôÀ¼F´QE“ÚV)N­ð#ñäÈUbÜuOÂïc„š[ÛKÔJ‰yj'öÖüª_³°9¢jp·0EáhŒÃ³šNi\Nš<ô5 00 øP/*º¾ZÐüzžŽPF±F°%íUAr¡’Juª$ß‹«i<ÓÓÏŸÒÉ£cº8;§7oÞÒåY0�ÏCÛ¶Šî¬¼|<¹1Š$£èúJZ=×\ªq……¼^zºx»¢ó×—t}¾ ÉÑ„NƒqüúÙ5ýüóÏ´àÙêÑXµ uk‰Ø*ò*_}Ä;žDõŸÃ£Ã¸Oèà5‚J6ŽN¦!ÌAAåx‰o¡ÞCöÊI­ €qç’j–Á@S…<­/©,âÌÿо eq ½%Í«’pGÇ„©¸¨5X çQì�ID ¬ï‚´€8Þ‹ ýœžžö*ëÝÇ6ñ#nKDU7•»öÎDmŠ˜ Рπ>Ž&þn•v^Ö3`\ת"èc ¥wyçÏ“ú â!Jú!ãj{÷Hk7@ýc\OúS¸'”-“¥2 ’§òÝ „Ùˆº¢þÖÐávâÃù¯&rlƒü»Eê#„ˆƒ¼Ö÷z_üB“<KBv©Ÿ¢:©‰VÛöo MÈUäc_ÝÙZESÊKâÛ§<t|€Žï6ç^~÷Å×Í{ßKüÑqè¸u=brûϹÅbIÂÕ‘6é6 m‹ù"=ËîNòOêüæ"ƒÁ`¸Œøc0 ƒÁ`0 †‡DôqjFf*Âàf¹ V¼jHAl„öK&úÄÙwuüÍJ+pgãÂ@Ú5Uõ„ã¯*×|£’’“w° e 1.`ßùùy3à(çÈ`¡œ¯UN´;0=«üýâv³Cß%¶½Þæp~8³+v»§›ËqÝøÅ[nF^ž‘/NÉ%Ã…s2C•µ|¨Æl[!½¸¤ÚR$—O)N Rí¶!Uµž +†™¡ÝGÂc‰ô¶¾/ýLÔ˜ẽåíñ!w r®\OtX­¤óVŸ· Ľ•K-‡€¼¢¦PruŸP¯Aû�ŽÉáÑ”ž>=%ÿè8”ÂŒ‰@ V]ϯC»‘HT ÆœÍéÍj΄Av}•¹\©+¬Cú·?Ò~¡¸9}^å«W¯îÿxæ11Il|8¢g_=£I9¥?ü¯¢?þLW—¡\Eßg%ÄAÌq®5¢Ä6RUõDÂò>‘±˜êÁ23_-é»ÿý-¿üœž>{Æ >gWgtvyÒ_PáÓ s¬ë‘jÛ|¼¼Ô–E¨—¡Í}» Ë2äóÈQÈVv¿P–#šÍÆtt<¥ããC:::¢Ùá”ü,Äö d1 y0^1Ù³ EøwEgtÚïê’B;~UÒ$<Õ¨¤óù2=?ü Qrç&Ï—°½¼*#ÿ Ÿ äý#ï#QcÑÇö5üB9D"´…hÏ@Ò¹+Ò�2‰”tü:½ÛQk×øÄà_%ô3vÉ!â $üFÿ}ë<î]ÈåKEDfˆË ævwq%ØäêKHÑB`¢EN@Èû‡}}vßZuóq"Oö%ÖQG”F%Ÿ·% ô)5.ZÓ7 Ò§ 7ÅqÈu… .×Î é›òH%+!¸K>ß%‘©ïþu>Jz…`·äyÒß­ßmˆ?ˆDB©Ó·UýÁ=‹é6ñÅÞj¿€ô ¡NHTε„ùm ä=i÷ðmÌç V ×¾å+Ò›Á`0ÜŒøc0 ƒÁ`0 †€þ™À¬Ì1‰ÆjßÊ‹¤à“ȬŸâÓL¾¤°‘HB£±crPU‰bP$Nl3T(ƒ2د—>â ”÷­ß/ñ§¥@ìuöGüéÞï:ñg·üÐç¯ÅÅ›EE™u÷|ÌÍÀ—h¸½ëRÛjê’ÄP›oI?λf ^¶oª¿}¤³]Ëѧ©±NTä¾rãK‡,”Èo ¡ÈQç9¹åÇçéñ¢¦ÝDÐ( Gã2Y'²ˆíEœ=_ÓÕ…£Å¼N®@ü©Ùà¨ÉLqA=(9þ†pE©<cRbeuJR^LKv/v|zL“Ù˜ªyEgoÎèí«³Î¶QHá¨xœ_¯ Ñ …Q¤„ÆuAóó=ÿîË1}þÅïhr0¦ïü>3‚1ø²fB”âeòËwå8?‚ Mm(}šûyºöìÝlÀuÍQhSFt} ·`ÁPÐxV#z(Ù(<.­d·nEW£SªG¡¼üˆªð\!Þ)c^ˆtQv|"ý¸†ô£Òø^Û`ƒÁð¾ É?¢ "ûM À>‡AêÑ®ò>ŸnÅ ÔbôÞºÏئ±I1ÿ¢€¸óø]¶–-q „øµëNI;ö!.´ÇPBZ)W¢»c½?’»[¯¶Ô{´Á@[=éàÀµeR{)v4ý#O‰$ÈûƒƒÃG¢ˆ(dæ¢I§§.á¹!0û¶?R¤ø‘ÞQ9j$J\ó§É ÚåVXÉj2å|ámU·»7Ü~N+Â}Gc¾O‰Oê÷`|·$Îh oß\oQg¹îêþÕæËå}SÔiÜ´ZP®ÈuĹ6®‡vD\õîB Ô4j—½ß>é×ñ ñç6é -‘8¶Ïß@â’ú¬ ›êl¥ey3Ä%ß.éÛˆpÙ““c¤”ã¾m|ò¬MWKvA¶Z™»/ƒÁ°?Œøc0 ƒÁ`0 † vQT |@“ñDö&Ò ôÕÉ XÝœ£'aPƒîí,:1Eï?Xª焆!ÂÅû#þé§÷øÅßw¼,£á¤%’õ“\"¥µê;mjêD’cÄÊ%®VuÌgq¾#âOJ`cÖÛæ|1dŠêÕªZ­Ýó;ERÙi·©!É ×WWôæå]_ÖÍŒùùbÎé nS­¦a]Æs¼ïU8hó&ˆòÊ·ìŵrAzŽŽé³/?£ÇÏNÙ}ñú’Ë%Ý6 Zk™kÿ9YÇ™ñ¿üò œ±ñáøð€¾øâ š_.èuuFWËÝ]ÄøSýI—G¾^bÿ|NoÞ¼ £’UÁ–ãFÑ�âÏèhDãƒ1‘ÆGÁxvöSêßw{j0>DhÒ¶̵ªÉ÷ßϪ 0.Ã8üÕW_±šô¹}JÆgyÇ ¹f_ã{Œ'ÆÑK°èí» ·ÝôÙa´ço߾帡Äm©2tKŠ{9 ÷ˆë"œŒv¸ êjtºlí³µ[?–õorbl¯Þ¯¬öÁ¾~v#p0©4½WAt);{Õ?ã¾Bîâ·Hƒ´–Î5RïZŒ²cSþì�铸6ÚBdPÖ¶˜°M[ÆçúÈK;ÂwIãòL5ÏiÑO†Òªƒ1­]rŸ£Ëoˆ,³Ï3¼©Ÿ—«ÓÜÆ¥T_^Ç·/ñ­3áàéÓñæDÉÎHÅï7¦"è9Úž³{únˆ]/Çï?©¯·AóN)ýüæ5ÍMýÇ`0ÜFü1 ƒÁ`0 Ã{G3|›Œ2 †Ó¢4wQª]â9XŽë,¶Ì\ÅÀœ¸Eº ñg{ø5»E>@ün ×íàøÞ1¼cCûí@ë÷ë;ê$ûåG?&²užf·l'C×a¨¡ˆ$òHŠ%ªzîCü‘tnT+ÚÍ•|7Ž!c§vwÇ¿AÒ»ÏGmú^Cû�É¥0æü(*„…íº‚ô?\c\ÑùÛEtk–ÈJ0¦ìvmœò;)-$#˜ë1VtÉ?Ýtxm•<”s”*Òt6£/¿ú‚ŽžÒY0Üž]¼¥ n¯¦i¶{ó'þpjgó;-\ÇØrGI•@ ñF½TظÊt² KE‡§GôÍo¾ ª^ÒübAWçWr!Îh¬éÜmfïm”t�W'ž«%-æÉ•Hع‚û5ÕÊIIåÁˆ&ž)?=žÑìò€&GSvÅV:š<†+´8C}\¨¨‹øØø¶®F±Ÿæ ƒ w""QÔ8==%q¡)F]!ƈù¦w*I•뤨 sÀä¼#£ªÜu$Xpã%fn±©í«ô‚¢;¤«ËKŽ+ª™Œ™ìŽëj×3¢r”+TŠÒŽ!]»(¥œì!þô¥Õ÷ë„¡|uk§{~í ä—é§ã‰RÙ¢oåÛ<Üý$ƒVíooèüsm¼·¹Dž¿yym nl¯‰VísÕ(l p)ä±ùVtëj¬»|nCÊyŸ¸ ²Î{EŸBåÖHýç[Ô¿[å_þî>p„ø3»ºdŃÁ`¸ Œøc0 ƒÁ`0 †÷¯ŒÙ€.&èùJÍuBþÑÛ=âo°î×Õ\íW–ñ{Cñ'ß6âÏ]\ï]ú¯Wl þ„£¾KüqÂpK+)nQœ&ì)êŽ1h_â¤ù¶ˆžÑZÂO>·ÏÝ,lˆÅYÛfH-koøÜt¦Ê—ó~ċ󓰯2fŸª*“þó`€]ÄY»Á Je1ŽÔ@V¬ApÔ”/«ý¸ÌXçñË­§+î#µ¨Ù讌¶G'GôåןÑäxD¯Þ¼ ËåY°LÖ4~T&2k|Õ]ŽÒ ù´Í~¶¨!uꩃk`ðŒh2ŽJ¿œQ=» âxFõ7_ÐhFôÓw/èå 4БÄ2Q]iIò¤S?]‘Ó¬¢©:ô¼Î·—Œ®ðƱò´š¯¨:«h^Ìi4¹ ñÁ0;ñ}ŸžNhü›C:øâ˜¦ft0?¤qUR™^œå…§®­<¦ªƒá“A®nÑ!áªw˜vÝ%®¿®®®¢[¬é”IABjÝF᤟çÏŸÓÙÙŸ·Cß|ó “lÿõõUˆÿ²q½µâŽ8¤í/ù ]^^²:ÑÉÉ#zúôY“n–$Þ>ůò@¯·EK/ÉÏsk!Ö¥3w¹æÉÄ7ÿvAS扻ž†4¥÷J䔺¯±i["Ü'íêtÙÛY݆ø³Ö þøDX¾š÷t‘vÃWî†ktûòZÑEÝ ñsèĺn÷ýq·õ«!®÷=9É`0| 0âÁ`0 ƒÁ`0�|2àûB‘Ù Z×Jq» ejnÎt%×ï›ôC=ê>nãñûÇ~D—æìŠôÃG(7tàö'þèuŠŒ¥æ¥ÖŠ{£Ž»MüId‰–âÒB 9Á'2[KÊ eŠ8tïè!ýänä·#û˜„Rt «zéSÂʲ7%Ãu¬â�C¥hÈ?ä£úÊÍBUùf)Ò`;+â8q d—]Ó'&ß­ËKñÏ8¥éGŒT³ƒŸÑÉé1MŽÊðûNŸœ#ñ1%ÏckÚÜh~4DŸHÔ©™|ÔÔM•QYÐÁ¤¤É¸dCÙá阮«s:Ÿ—Áˆ|BÅÄG" %#ŸOj?žR=•˜\KúÉí’µz¼$\Ç®è«|YS•b]+Zœ/›z6šOiñhDþÈS9-iÅïÅŸ¦ìIª1N:÷΃Áðp  C*x ÅÀ½2Bðšˆ3¢ø#J$Zé'ïmzŸé0 r@¸^î(†mÛÎîÚ÷Æ/ lTòq å&Pt)™Ôö¹‡ú6­K,ìIÔõ¸£ÞCµ‡²[RýYÔ·ŠC‘,•®YKz\r™Sq<(ƒaB•‹£+Qþ^H} (ô‰k(„µ#Ž/—é”Õú‹¡½ïEN éï“IJª“ëJ÷ëÖή#[´¹/*},äc£UŽºåàÛ°Q9ª ߸!rE“ž<½‘¤#ÁñuH^¥#äkˆ7>ñµŠúÕ»S9zJûÕ½#-ÑM3qÿŠ£÷\¯?Kr=(3eü¾ãxýº²O<—šsu#þ<|Ä–i—rRß=¿vïè=¬:âu£o0 ·€ ƒÁ`0 ƒÁðp໸å Í€µ¸ÒŠ?Úõ׿ôˆû#ÿ¬~ô5ÉH?wt½½I?¤H w’&×0„X¡ ¼H lØcE+êŠDþa°BKM­:‰Ä£gn·Ê-÷ Qtq74‰G+þÄäúäï)ž9]7a;« x¿f˜ê+¢|�Ýûîìz6^ÕÑðØ%!µu¨/m^‹òrÈ Â´FDŠE›'ÆIm޹½ƒ›+(C<>} ¸u±vÜXëň«ïÑW´¬—Ñ�K]ú—GHÌÈŵ”ãÛ·oéj~Áizýã9»’y—Ð%æë¤{Õ ºh6ƒÁprŽÞööÛo¿e²Ú_}àö ä ‚ÄýWó^Sä‚¡xœ÷ùçŸÓ“'O"i#‹„øƒE~ú‰Cò[‘{R£'éW_1­c&Y<yú„ã>8˜q:¸-ýŠÔ)‰ï²š }®Ëóá}�‡‡ë®Àä " )8y¸÷uyuòoE ÛŽGV9šLÇTŽ_sµZ6ª€«eT(Âo¨"Cz‡Ê¤ŸårÁáA…û‡e×á¼xÿ]\œó9GGÇ|l-_«º§Üâ›åÎ*M«ŠË«,µù̵¤àD° »^»ºæòÁyâF Çq¿L •L|é~³ôçâ~¨¸/”ÃHîÇwëLþš]»ÿãxÞ¨›U]Ñ­Vo#m³ÙT¹>ëÆ‹pggçáœE~:4JUѵÝ5ßÑl:ããqÒrò3’±ÊÇñ>Ç1&X¥k2ŒŸ‹xq]ô_®C¾r=iÿ¤q‡Ô–ƒ_#—a½¯¶>trчœ~·õÎ ¸­äæŸþ~z÷cƒácƒ ƒÁ`0 ƒÁðÞg€ŽÂ€öˆÂ¯40Ô<㳫T¡‰;.èó¤%$œúKÙ^ê=v{¬عf–¶¬Û°YÈF2÷ ì’aöÁ‡E�ò¶o6¶¬ŸÙ5 ­#w¡¤H-RÙ8¦]ÙµñûÄŠ -^‘ÜÔU}v­¡ä Bï[~‘ʌ›}Š3úxCÂŒrª›sÄзIõg«d5Ä›dxì¹~ž—:Î<³Ï©‰£{˰¦Õ+ßèó g{<§ Uš‹wÎôùUÓOäÍÕÕœžÿð ^Ì¢QxåÅSW§íèæs{}!7ùtÝ V|]NÚ¢p2;¢þàBØ—«D¦$º| ¸— ÎŽ×IeU·Ö3ï:âTõ¥n˜§$/;m^ÍJ’¨ê*ªÕ}n…<E¶±Î`0lµ÷R¦®#ÄKH%hAF�!­Þ¿Î‘%‡u@^ð>’nr¯ÃIÚ3¤JE9"æk_=1’&äé_®Vt~~Á q¶ž&×ÜK$¹x&À\_]ñû¬Z‚ < yxM³ƒIXž˜² î‹‹ Žùޏ$͹Â^A؇sVP¹ºdÅ<¤ $'gAzûæ-‡ŸN¦kÄŸaÆg(Xà> —ñõ5“šÚôÄwg®<I,+VpŠÄ®E£r$qâ‚J®/E£ïç¹À½žŸŸóñK™vuª¦#ÿ_¿~Í÷€o©ñxÂuZ:’vI/Â8>›M ñ¢ã÷›¯‘tU'¢ÐŒÉ9HŽ#>îëU5Ÿ‡pLCy…5„…k:¬‹Uñ'æS̃GÌ×H̃:"x?Ô¯~˜ý62ÅCÄ>Ó|çüÍÇ7_û!*þÔÙ7ƒÁ`0ì#þ ƒÁ`0 ƒá½BT}¦³)…‘{vµcBÅ3A+reM›L"®Cþqñ'Øs7âÝ üå†ú´7#IÚ†‰JFüÙ'Ümî;rAgèº!‹P$:t¸F]uŸ«\3ß Ä¯m(ßcöéP6†-¢ÁYÁº^‹ñKö³'e}Muçm¡‰G‘±Añ‡ôR³A®*V«˜Nvâ„Z#'Véü‚Ïñ¤] JþkâN›–γœ6ó´ù¶j¤3-‚1ì5”v– zþËK*ÇeRˆ‚§­b Ä}·®5»t]×q)MY4í]ù,¼çkVË`À¼¬B DÑrÒNŸvÝåÇÆwÒ—µ×J KJßC”R`#â’½Á0èO¨vÑ¥Œ&€¹nÎ nÉ}n)Äæ"f1>Dh5MüéSáâéÓ§}SYî V€¸É9QͬT³/¢«¯qó{_0‘ãêšI' æä¢˜w‘tòT}@èr Îqt¹ŒïTJ?9¦ÙÁ´!žˆ»3!“àZ |Hú£Ëªx>Ü—h"îØ€Wo^³² ÒrJìÔôêÕ+NˆQH—†&iõ)þˆ«/Ü3¾CÖ–„³lÜy‰ ŽáRGp>ƒ–É-–„Õdg¹'g|ãš+îC|¸¹!è = ôH}ÎCþ!_äžp}„/™´T².7¤i‹Š?«”F—îgÜ䙆 Z…coÞœ1¡HÈB—VKòÛ üD’Ј¯ƒò$ç«Dü‰ù©ILrnLO›_Ü÷ U0’~¦éšž:=ä õ]®n£:ix_è>§ƒÇ·-Ϧ꼿òþ†µ:i0n#þ ƒÁ`0 ƒá½Ã[ErP‡} ÝÔ q]¯‚ñyÅ  #Ë õYdN\ÁƒÞ…+ÒÀ{Ü×ôÊ`ó@tw4 œÏk׬‡¯×5Œïžž›J·ˆa¯ëîm¯·]¸»¹ÿÂg4 MÊãóâºnŒÖ‰ C”pZM&Cžíi»+ë´.—ºê>Ú@#ÆÔüö±BBíMf=ŽÜàºKk ®ÃÃXS]&IjX) ¬F‹‚É$íÄZ—]²y—?£ÑÐ9”}a߉7H„TTÁãç|AþíysKEâU‘x7¯Ö*P7\1ìú"Ÿ!ß[·m””ˆt¶¹žjµ‰˜æ;e¦Òî„%×——5Ïö_…EÔ‹ZÍßIJ¹†w©J;ÁuØ{ƒá‚(Ä€l�ÒBNüÙQ)鈈Sˆú]¸=¢ »Å’=x÷„¸...Czá:ÊÑÙÛ ~gA9PGïöh“¢K¦yTe ýî!RH Û€ØûÍÝãq_Ááä¾á~ ï~t˜ ú+óù2¹i ï³2…)c|«]‚yÊÍBz"ñÇF£¤°âkj£ L™ˆ)3V½œ_5lûø¢ZÓ§Ô4Lüiï¤(Ê,Ü‚›ýèV iWu'„+‹öžFã’ü†›ÍøÞ¢&íH« ‚J[»yEX¼Á@J–÷ öÅ|Œd]¬‘¼ÿ–‹èf«•)\Œw”¶™ËþÁe®ânoÉ„ç—C‘Ò:ffž«Üi®/i‰éˆõŽx<ÜžѨIGÁÊKÀ(•“¾ä'öÁåÒ€z…”ŽÇ ¾u¸ºðÍýÉk[ʹéMmøè;¦Ë{_ÕIÃûĆòâŽà¶åéš ƒÁð±Áˆ?ƒa}Lø‡€|&€Á`0 ƒáã‰/¯/hµœ§=Ž¢dƆÊÍ.ÆS–ºÇŒSYdF2�éþ(ßß ¾m?xRC_8ëö�q=S6=²mÙÓgüê;G<Œ:^¶‡°#3ÇoT òEc€Ù÷Ùê3Ðéû›¾yÖ8fòÃÙ" e†ý&÷-}ùœç[—Ì×b?RS"6[|vG_§k¨rùõ¹Üo©Ïà•¯×Žë<&¿—‰¤¹ÿ$>ÔOp\ÿíbàÁúnöƒÁp@x�1'¼�˜œRJîþk€ôeqW•”Í®µú}]RœÎuH7\`´˜×!~ôe#Ñ$&M'Ý¢fÒϳ§ÏØVXùèÙztúˆÆ¡ß\”ÅZZ…à #EøxDÇLJ!ï+¥z‰D ­ÈûeµŠ®¹r—^}®¾ Wt˜àçàpF«¤ÀIAQ™Š0ìêk:Ý‘øã9OžœÒÉÉQ«¼WDâNOœhÓ¿)Dñ°¦ÓꘉULJJï`V® yï™\3b‚L$@¹uW_¸Çô­‚ý“阞VÕš‚’%Š8Ø'ª?³Ù8)éDE ¸kƒjÐåÕ%_ûñãǶs?©.¡œ´ë-Qb§Õ#îGI:˜ø%å•ÞëEV~’^\ùŠu×uÚMõ·ÍïXΣtŸ­Ûµ¾¾ËPŸ·C¾÷ïvbƒá6¸©­ó‰eO[F'ã÷WþV÷ Ã}Áˆ?ƒa º,þxñQˆZ|(�òqƒf‘N þÑÚ Ð›®ƒð˜méQ|T .Ä«ý  ƒÁ`0>%´šèÎç×4¿¾JDzA:ßY©_qþi5©yp³sÃP;÷?Ù@ŽÑ§­«® ˆ–Áiôsa€rÌrö¢¿g¤ŽÔ cjf×êoNYRI‘c9‘Àˆî‚9‡J§«„˜&|´�J0ð…3È+­§ƒ2žæ:‰€#®'òo2![È"õOêà ‚’Qé«›fRËq­ö£,¹zPn$ó¨dÒ!=«(à¹\® *V±QÎwŒ C†?ð›nØï“ÚÒÍ õ½3“BŽkKÝGK—ºæz¤Ž\C\òN“%%ï“}¤Y÷΢!…{ŠÏ²§Ïd¢&âÓš«ÅÈäi󃺤žX ê–G^F©^SkàÉK°Y¿_›ŽÁ`xภñGÆKñ¡}@ýþÝÝ>­O„tªÒâ_¬bü ˜:þ¡wÖ0„¨Tºïþ¸ÜM}„¦Ø—í¿<Î%šr§/;‹3'pÜÓÈ f÷©ë¾ hr™Ô@ÈKÛÖ¨õÁ¹þüƒBP ‘¥–<ž?»Šß=§§œJ-íZ—nû’½ëïœþÉ7“ Ê«å@ÛÁíþna¤ƒÁpŸ0âÁ`XƒŒÅÇfÆüñ¤ÿôŸþýðüq0€|õÕWô7ó7ôë_ÿš}`k²N>{2|ÖŽ·oßÒÿøÿƒgÌ|ûí·ôÅ_ð ý±Õ7{Uâ3 ƒÁ`0|,hI?ä¢$>fW¢—?pʦ¡s‹(¿_`6v”âŸÌèÉÌxî07oVaY£È2,sîß>yò„ŽOX:û_¾ü…×2[$ytMONNB<â:;;çþí‚¥ùãÌc&%ò\Nlº/§ †ÚSÒ’&t†ùúñfSSÅ„  v#ZãÖ¼M؇£>îÝ4<Ih%×/,Ú@'Iœý2QÆ'dÑßnZ ‹iš‡A´q&uß¶‹E;)þä³°7óùµç$ŸÁÞОøŠ]»Y«ãz6ÒÆ½–ùLâê3vµß·zÛ ù†¨‡³(¤ãø;÷ÞëÚÐÑZ„ùq'ñ*½Ùµn2ØIY7üŸ®úPS‡ äñG¢q$JU¨ÍmÅ48¯“íÔíÕ1Z.–Ÿ,’|Ï‹ç¥ö´&gM¨Áðiï=ôÏžž>æþœŒ3Þ†ô`¬ïO¼OOOO›> ÞµÛ#o°é'ü9{{ÎÄšÕªNñÑÁÑ„û±)pêKìvè—²’LíAg eIéE~ósro<8|ikìV)M;ÞÿfÅŸûƒVäéSŸÙëdkþ»±O…ëÊX½Ô}l÷]»Ÿ€<˜9‹Þr%Ê|1|Bع¸oGZ»-¬~ †û„ ô¼(‘ñQøóÏ?Óÿù?ÿ‡~üñGúì³Ïøc¹øÀ•AìÃG Ô{dö(:2¢ÄÛs>O¨qŒ%úÓŸèüüœãÀ>\?úþ7³!òY¢ƒÁ`0 †<§Œõ1eÙ%öcTTL•î;Öiñ,©ÑÀ˜ 4‡‡|A¨üIýUôqú¢w||Ä}ÔØá°5¶ÃÃÃî˜÷K_ý`„Á5„!’ü¸N<føX1 ºgG¡^Ì"! ž2 N|¬3˪ ‹å˜.çñ»ëzê0¡¶È,pߘ¶ú 'S ~¡îE…ªqã"bê™|—É$ Ô½èfcµæ’ªK¸‰$—¡¯¯Üh¦Õ|XÍŠ}dôÇ043{'CX·9¸¢ W¼4FÉ!âÏÐ>Ú2œëJàôž£Œrï Ƶ¡´Ý 7T2Î)É  ,buí ni„ô“)Ûu—ôCb„Ì,šcm´’ §ÓécÚ[s¢ ؼb½rBü!µ¸NÖ †O¬†WDb,úhP°¹K5ĉ÷(”б îMdšt¦¤ŽÖÚp¯ßÇDoÞ¾eâÏ£GÇôèô„f ð¶íù>®¾Ð?`õ™eT’¾À6辟ÝM¬ûvØoÿ i!é!íÖØk¢óÆIwýM’O”ÝÍ-\_¿)åBoFw ÂòM‚ð¹Ò£ÄÕ(ým—šlýnÑGôÕKQXÒa›8ü¡Ãosÿq—òõ»6wŠü{§ëvÏ`0n#þ †5ä31ñˆûAúù»¿û;žmòÝwßÑË—/éø, þƒ^ì‘GÜváö¿:1˜ óúõkÔÆq||C)ûáê d"Ì|³ ®%ò²æúË`0 ƒáÓBk¤×†ëv` d†££ã®à>¥&ÓèA`!‘ã·¸äŠîb@Îóùè¯Ê1�qØ/qâú§úµBl×nð}ÙÉ$º!ÐRÿ2¸‡¾¯áã¾c~ûÛoè×_'¥I0¸­®C¥ŠFŸ‹ëŠ^¼^Ð?½¢?ÿùÏtµ¸Šî§œz(­ûI2rLê£,øÎ õu•ê®LØ` pꮜ«Ÿ!íð7`XáÙ(ÔõµË:½ÖnƤ®³a+2š´ÞÕLlqaÖ‡ÜuU³¿ˆÏ¦¨iu£}®¿-6•_$ÅlV4ºn2äÝÿé'¹‹¼/òsZU œðåa-Ékâ‘"ýpžõØ•uVíª&a0>MÈûIÞ•w!†ã]µyçn~§èöxsã5ž”!þ1+™œÒñÉ¡{Úõƹûûý”–‹%ù*’ÞÑÞ”îÍÄ’!¢e)gw¢Òö%þhRÆßÅÄR=Î.Û‚]¯ßUÜ=ž!UŸÝÔ~î ûç}ÌÏ¢ó­§ß6yøcßqû&¼¿z¡¿“�ð5 Ã]Àˆ?ƒa z0V:"2óû0ƒF ™­ŒD-@øAØ¿üå/ìº a1Ð >€a”©îÂqã8öAQçà7ˆAøGÜ0ªÈÇtwæv;Èm0 ƒÁ`ø˜Ñèò–ƒK*&Sv×…>#ú¨ a!ͤuIBŒý�މ%«UÕ°_ˆï¢ÚÀ|`ÔA<ÂÈy¢¢"†1,”åˆÓ qöÏ´5|Œ zt<¥§Áh÷ôñÍ&á;gêÆjɼå(|O­ zýj@ž•€q“D‚å m4’o6Ô/|·i—]¨÷ušÑ.3Ìßp¨§2Û]“~:×IñËÕD‰UžG©ûBv“gUâ]UQQÈÓÍßo÷2Ó5»\Lg™H?ÒÕuJúOîÀo¸ ïnºõð¾PÌà~ò«öhej×níÝ44q‰Ÿ¶!÷d)5éN§K‹5JD­"‘ÓÛMLZ¥J{Šè Ìg3³SZ}J›“Æ]ŒuœÜ莕§´«/–rkŠ?)Êæ6Z`0´ˆ¼¿d\QÞ‰2yQúw¿Dy—é÷ž@“ˆ@¦Á9›Ñ}·ÈûSâÏ߸\úáHˆ{”\|u]{õ©éÉ.îM«§KüØf—´¡ï‹ûFßá&Â’¼ãE#­Øê¹ÝâÏÐevî¸FóèCÄ>ãÙ»)þ c¨¿õ®Gn7¦ïÖÈ?]PÛçéskö„]âÛ‡q¹,jkR/—áÛÌÆ ÃmaăÁ°ýÁ'ƒÈ†"ˆ9ÿëý/žÅ|¤BÑçÏŸ3é @ ûˆë/|Pbö ÂÁ—a ÷à:Øÿå—_rgqãøO?ýÔøÊÆ1( ɬë|VDï,Në¼ ƒÁ`0|4ÐÆÙ†Á¾(J^F㆜%I˵ÊÏr¹bƤo  /yuuíÞž:j<2 ‡8ÐO#ŠôÅe-úÃb8‘ÓšÒ1.á\Ãïm]+>\ÔÕ‚—¯èüÕUW¿„zé©Z\†²Ÿ³›ëUIçËCº¾¼¢zuE­X]Ç»Që†Êyvµä›úŠzˆï)=ÛYЈZc#ê ¸hÎÝ"µÏñ3AÍ3…o<Ômù“ú.îÅéáï»Åœ*⯇çõ]àwV~ÃñD:rqa1¸ü+•‹¯tL%(E J.¿›Ä©ðÔŸBŸ…ðC„�Äœ—q‹°QP7Qš$¤ ÍzÑ¡}ã!Ák% á¥<æØ| ßå6ù.c¨CtÂFݲpÖ|ƒÅ˜"üè¥v0Їv2¬=/qFt-×äg…Ú…Z[³d—Á`0äª BÎÆ‚ñÇ?þñLðÆXçãǹ?‰÷Þ«�ú–BøìûîàÝÝÊú^a-IÜ©ß9ñgè`b%â!ïlq5«ãEŸ“0“-óûË OB¾`­1HüfæZàþÀޤQûù”ˆ?ëqÜîîß5ѧûäƒ÷y߆:ê> ýô+-ñçã‡KþAûŒï$,€t“Ï/ÏyÒ„Á`0ÜFü1 ƒÐaÐ…‘ìǤÈÈã„é´ÄÙ×ð!À Éyâ ç2óçBâ^ñq-³T:×ÖA7 ƒÁ`ø¤ ô;£ØCœå hžÙ-³±yfs":è~m4Ø\S]ôÐ%>H8ìƒaFHC¢„¸¥/+ @”W„UPF 9CîAÏô6|¼X.töæ’~ñÑ-]OuMÕjÎuêz5¢Ëú”Þ^Ô´\\E£„"‹xa¥eŠ)9ñ§Rª>úûÍ'¢YÖÔ}2?KØÏëö¹õ,¹ŽìÇýiÕ~.Ãà5\‰xwOó­´ÌæãÙv#±gÞgj?i§?¢!øŽñÓs¹­ŸÞoló½{Ä–^¯§KÉÜ$Jj;ÑPÜ*¦Åëw¯âÔµÚ”§mß52o´:¿žŸ Ç·Ç×G.·é¨oâ¦CŒ:NT‹ê”§Êp§É?û™Á`ø¤wñ«W¯˜ä#};Lf0Ž)êy91GÞ¿ùoÞãÄ»XÞ›“ɘÃÍç×áz—tvö–ãö쳆à¾9þÖÐ 7žèŸ"~Q£”qXÙ/éÎ'xJá:¤ãê2’4AïG~¯£ŸŽ$$ŠH³”žFvMÆõ"þÐÎØÇÕ× zßýwMĽËXoIüQß=Ü%×Â7d×Ë-ê÷jK§þ>T|¸Ä�í*&Æ‹‡ ØÉá»É ÃmaăÁ°,–Ù Xãã3P�Ì|Ag3Cd†(>…ôë_ÿ:|´>ãY2¿üò »�{ñâEãºë‹/¾`õŸo¾ù†gÓ ~}°@1 ®…x°Æ‡+®ÈƒÁ`0 †bœ€!CÔr`ÀÀoô=…ðƒ5Œ78&ûZ— ÓF‰Gú”BêaÓ²_7fkuQò‘}BvÐdŸ>RF›æÇ/á#y©kÐé“¡oa}ß‹0˜ûóÏ/iu±Š&Á€X„ºWEw[sGoæ :¿v<ð[×cªøŸÙ<«È¬nm¸“µÔ½�x<YšvšáÈ?øÛë L¥£{Z" 1‘£?ê>C鿤tï]Q„–üYZ¿f]WM›¢Û„»ÂZ|Î÷¦Cˆ·üÆ]Oo—(ô$k½"ßž£“<µ~š˜\×PyWùÔ’Ùš”t„"ô¬ýÜFì‰ÖH?ƒÁ° ¤O'}Éü$JŽ8&Šç áݱKLLÌãÓ}ÅÜX òÆ9AÂÁ¹Åx*ÞAÏŸÿÄ㥸޳:Ï.FlÄ %v¬%ˆ[ÈXï¢\4ïBă¾5úÓ ý`ì÷õüÇ安6‘b7¾Ÿ†à:«]p§o€æ…sD‚û"'Ü.½ê´côÍÖú±Þó\7\'LJ·X{ßx×€Í ïŸo¿ý–ŠÉ˜ ƒá¶0âÁ`XC߀žžÁ â\t¡sI\ž%­Åà¡gBç$"}\>ŠeöŒ\GhŠ[Ì”‘Ù£w=0k0 ƒÁ`x¸èë?jC‹oÐwqB~cþ#Œ8ÇÇ'¼ÖnÄàAપ;¶Šœä#}YmÖi“}²àº:QE¡>‚Ïû!µ[Ÿú~ów¹ªéíÅ‚V‹9M¯kšŒ &þøzE‹ù‚.Doç5ÍW£h8d"Ö«¤Œ‚o¤š]Ûá{Ì¡¾®*&Op½ôâj«hfêkc&;‚ ì䄵< §'<”ªR=E+!ØhW_�~ãz YÏ×[Wµ>Ñ>î¿:ççj�Ê@Ë‹¯ÉoL`vþÖhçÑëæúXw{›kô¥³Èö‹ÊOŠU\‘´5.Zº¤–8" ê9ñÚ:vSž ¿+´€ áÇû¨²Ô]ÜâÂXí$íâÚ&-Iõ¢áýtŒµÛU¶|οÁ`ø¸á³¶_ïNL\ĸ£LNÄFLn©&Ÿˆ˜Ç+ë<ŒîGêe±XrÜXÐoEÿô.Ç9¥+c­}}�†k]xʸ­¨á7÷ŸŽB?f•Ôˆò66oG·iƒûÚ\ÿ@Hœ¢.÷¡ }î÷šïÛ¦ÛÝâèz`7°ßð¡âÃ,<VNö4Ø×ÐVùå—¬ g0 ·… Ãä£Pù�Ňf €ŒYø�þá‡øCxòä îÂ7öÿþßÿ›ÃJ_ý5«�a�Š>ÿ÷ÿþ_ú‡øúüóÏ9>|â€Â!ÌŸþô'v!²fÇà#thFõð PƒÁ`0 Ãǀܗ&þ�0Úèpm¿1ªóˆš$ÎÁoxÐǽ¾š‡~lTãÑŠBâ ƒqÚh"D !7ˆÂΓÇп³¨)©»Fõ›\0Ý_¿vC†ï §ò·¦‚®iêH0ø-áZj*΂‰?Lhó%-AôÎÂ:×\¨×~É LlÀ$Œ>Žõ*8Wêòr¹bêÜt`[”¦�žÀ‘ €ò'ÏŽV¼‘z/u[ŽC±èêâ’–Ié5î´±S»×vU]õkòï¹MÏçiFèÙ˜ÿW[´¦ÓgøÝÿÝúú>3Äùô¯›Š<.w£ýÍíU½vÚ]—""5&Z/¿7)þ¤KèvÀÕ´–©ê>d‰q…:ïàFf‘Ê9µÉŠøÃjRX|Añ_ÉÄV‹âxÇ ²žIDB‚–Û•ôã²é­3>fܤÌÅßþö·¼ïQLpÄ¥VÒÁXä®À˜(”Ì»®¾&Û¬èâ+ª¥‹ëØ]€´a<5wõ…ûÀµq¿èëŠkÎ!h×´B^—¸ØMnru[– 4|ge_8<Ìþc0 }0âÁ`Xƒþ Äo|ìtó«_ýŠ?,AÖÁÇ)¶ñq é[a&ËLk°•ñˆhvð!‹8ðñŒjø0•Ù¡\–pÀïÿ{6² ùh²÷uï,ƒÁ`0 ÃÇŽ.)½Oñê'Åu3“™cS3›G£1–G«Ö —w�M°ë‰Z¥Vºe 9ýÙK|'ýï»ÎÖTÃÍèæ/Ì‹K_ÐÊGtõ*|Ó,¡øëØuYDµ“°øä^ „†¨²·‹f: ¬ËetËY¡8Ï%µ!þˆºn=ïÎú×Ê<Ú…žVjåþa=¿ºnîG\=K~>ºÄ›.é宿çvÖãñ]w}EÊ¿»{ÐjŒK9)eèùÛ÷9K ]&K[.[ö1’4.ÁÚK&ÕÇ‹zY‡U¾åýuÌ÷žoú"¹‘kÿ%âޏ2Ä0^Sõ‰å×¹è‰ëË}3ÿ Ÿòw(þÐÃ%Ú%~plâÎÁ8h¼?ÖÇÇǬ¨Ž~fžFqMII 0'•¢ÿzòhÜÓz¹†H„0‘DÙžŠhÐ7õuû.DZpˆBX#(» ë }ÝÔß=?¿H}Ý2õÐ^wJvh¯Ô“¶^Ï^Í;kû¶˜ß‰lüaÃÆ¸ =Xç‡>&ìú9n0 ;Àˆ?ƒa ò¬I9˜¥"ƒøpÅG)ˆ> Ì#ÛÀW_}Å3d0ð+D!|Ìòlêëk>Ž™3ˆ³P „Ap|Lã„G°5Žz6õ‡ÿag0 ƒÁ`�nêÕEò‚k5ZD¯7¹aÐd¸«L<-ŠdÔòNЕ>±$ÄXŸ;2é¿Â0r“ºÏÐ1ã¼xðJf†õI@ˆ¡–\ã\0Ôù’וŸy·ßEž’Û®~µ‚–øâ�IÇQ‡t£¯R½ÔÊ®ÚÕ—¬5YH“Ø\æ&DÂK\¹[g¹¾ä*_õ>Ÿ½ê2ûÀµ®ª¶?Å5ê\Û^»nóeÝ­š^ߨì“Âé|íOƒ¤CÓŸÄmÖÍ÷ä\{Þ&ò“K†Úæ>’ÊP£LF-ñ¨qF­j·¿õjø#á"«%ž Qz©ƒHçˆtžêb¶aƒÁp´¢ù9µ‡ŒŠqÊßüæ7Üv¼#ËMï˜mÞA¸6ÆI¡tŽ÷%Þ“¢°ãà¿MÛ•,Aæ]%ěݮ³Gyÿ‡¾i9n~ûLÕ „¸¸…Ò%»º ûÊpýYH× ÔÂø.&lVh£ÓûýŒãÒ?Ò›7o#Ah6¥Ùt®UvãoÞ šôÛ¦[È?®MrúíÞ³ý =“•B:ÊÑ*½ó>÷]Xÿoñ"üÔ¾1t}{÷îw<æŽ}²}!ë CŒøc06ƒmø(ùk|„ă¬ÿ?{ÚdIŽe‚ú63sÛ| ÷p%—ÈÈÊ¥*³ªf²Èž™þDŠð·–HHQ¤‡(ä)BV““KWVVfE.±ùjn»½MÑ8¸P(ž¾ÕVw¿Ç]í½§  P(À=8n¹0 ÆJfðáqB9d¿C0hqHÜ0`p‹80 Eüøa þˆ$n¾ÊPòB¡P( ÅÛ†Dƒ=NjšÁ wóZ‡¡|6”Q–’(<ñ§O¥3z­6¯NÉ ¢ä“ö?Ñï•ã­`è‚DtmFèïz„\Ìj}W“ZF–B®d±š²…¸);/–!0]l?_êÄj3üç¿þ‚JÛq½ò “~ZnlcA†Znëº#b8kyꆩç^ˆj¢&åÉD&¸örÆ;®‡þ÷p0äÕù¾®&ÔŽŒä‰:^QÀ+Sùz w~5áÝÝ5¸Åj"¥—ܰš»kÎãh"·\Æx¯2$ÅÏn«X!3çX¸þH†©«!LÆPÉ0X²QÕ¡, U5ÀÄûëcLžë¬yzŽÉÈ@ÁŸWòÛÔÈ?9bÝ7Bè!¯:÷]¶Œm‡ªÜøtÄÐ<.‡Î`|B£ò8¨-…z’´ï›®ÝfAì,üV¶È;ñ»{äãµfÈÏ ö‰’”µvŠªRý]0ÿé_­}T(7âºïP,R„¢ø<¤$p¼e3æ='Ú!¨š£XÅÂDoékŠkØÛøÎÄ"KÙppû—“,XÅH±­Ÿ”ˆ=‡‡GtæâDL}±ˆnA ùÁ&ó¸˜Ã]ïõ"ÉWΑOé+§|qK†óðì›ßûÍï'qkÖJÆo&.‚ô£X“CÆ›ƒ·­ZhK¡P(®JüQ(HZùJfñý,+8…Ð#a° AØ/îdeŒœƒã²TV‘bAÈûöƒL‘º•0ÓV<®:!œOP+ …B¡P(®61ÊËdèÿ•ÁŒþ`²Š¸êÏQBp¨£Ý‰¼Gv—Oé¸�I‘ö¡fX3H§¤é³Â˜“ºä!wAæódc˜¨Nl˜ÖÿÌû§U?wY"D=~ßêÄ£›Ú]^´<ÎÓßg—[3O·¢m"g3!„ÀaÛîÛm/†/iÂøðebܲäëKAÕòxÔÿ±3º:ß 5>8« Ê)ý³SH65âGŒªÊcH­Rk¨„J÷¼ŒƒêªÃÔ±RÒNþLH>r•¢|<—…Kù¢*!nI¢XTÔ­¦ðü–äþÎÍJµ%¤BÿO_ªAd‰ ®3c&ÖŒKϨ© Ðì‹ «C…s­w—^Õ”…<ÁGÚT“~&ä$K‰‚O¢¹B1î%Ô{ÆA±ÇÍpVqs{my²<¡¡}íjüAR6&6Ø ¾YÓaÅ+Ë®î —B‹¯qX¨Ï—06#·!CWçK¿’¸Áiª÷VÚ0ÓL»ªî­\å$-Ë$Ÿ …âÍÚ"VìhÌšô]5‹¨3è ‚H„ø/\dake 8‚EÒ‘ö ïJôOAPGÛöôéÓH°IóÝ*ò¾âüwH< þ€´„kÀœ­¸§"“l²Ÿ(Cœ‡ý|­nζ܈Vù¯G9°Û0·&œ‹8@züø1íîî„÷Û´r©úF)0ߌ…¢ìÂô¼T£­ºâÂÌÙ÷&U[›Œk'ú_¤P(ŠK€ ÅÒÁ¨|Ç€-÷9-«,räáRÌr®*„`4 ct€¦P( …BñÖ ò"q†¢Ñœ m7`z¿îÖ×Ö¹Újµã´¥¯G‘ŒfõEg!ï§ÎrC¶øþeH?9Éhu£Èy 6Qö¸\\þg„©QòòÅc¦0ýb„ü1=b“½˜ÔVµáMB�eæ¾.áç\¾5cÄ&4Õýi¤·&·+y˜‹—~š§¹Õ27V,¹lYÈ5&( P0RŠ„N¬/Ò•Tã¿^ЖÝVuž´abHaõ¨¢Ê^ú;!ÿx¢&Õ y×PÑÒ|Ç® ƒû8&dB‡G¨j^±§,ƒÂƒÒ˜ÎÜÕ„¨ŠHnóŠUíp9\ÑÃ1z8fnŸméõ²à.¬tïmv þ¤í¶ *ZÖ$Åž!)ÿÚE5¢~s !…Bñö`Ú;hˆ›WÌg¦®.I{Iÿwb_Õ?­©ã˜ŒøcÍB•Ä…¾1«ç„üƒä# IBÖÅõÀ¨»‹ áÉX'‰TžøÓçëé÷Ïèôä”ŽŽøüÓÓ_/,ò\Žø“*n^,q'Ï_6®:½7 Í÷ÿ]Ctg«gþ͂Šÿ•»zO …ⲡÄ…BqcOçD ! ¥+ªÓð¶Ij> 3m>¹²Z¡P( …Bqe°”¸n©úfè®­¯S·×­6¢¹ÅŸµµuê´;5£D“[¢Y¤…Yd„ÙD…Å'®óxª´—ퟦä{È?×Û¿>þgŸo2²ÉD¸¤uk‰ÆÇTÕOÖ(èÚ–úâÏJ§Bñ ®ÎLH“ 9r£ë4õŸô™†…D–¢Q“û±KÈÅPJÄKžÏ@[¤‘ócبr# S†‰7 Ïp[Ò¯Ú8¿£©ŒR³ž8%nNî⌸D´ž”SÆË“Pþ6´CQ )U=cwiƒªOå*&½é&É™ð.1¦"Y]ÅmV(7èGByüöömnnÆÅŠç%þ@íGˆ1P0ßÚÚb‚LêújêiÛ¨öƒ ®¸ž={Æí×ýû÷ù¤+}ÙÂ$] nçæ÷9¡¾…"|"ï¢ÔŽr±§Üɼ,>ïܹIBPÿÁu‚||x�×iž”ÜÆ‚Q\?»÷òùbW¸îØZÏ÷Ã76Ö©·e¤nPœ(‘)߯ —•fÒx°øúŒx‡çæ“>cEl6+º§½^X›öÇÍ»|W …âÊ Ä…Bqc1ÍÕÁ*«®SL›LV( …B¡P\=/»àÑØX' a4€¡>‹¼øŒr«h³;¨ýL¤Ý@$ÏMû¼:xcÁrÉæDŸeN¢¢ó\÷*ù¿x\ù'\]ö›(¯£u­‘”èÒ´ð`žáÎfa/Mî“æžcãSÏrqwUÏ••v&Qùše‹›4 Ï7ªÖÏ'JI\‘ÔÈcRŸ#ÉY^ D¡2Žúç:’\lÔ~Š×VÏ_5Ž6”¸ã2ËÞË2s·ZT’HéXv‡'é·‰Lô*…òCDq‚{0[å [5Ûh(¯±$úˆ«¯ô>%·¦Rìi¾½–² Å[ !¶ÀÅÔöö6+×Î;7¸¿¿‰?ˆéLS9oÂ$ùÕ·±cVô3?š7Š¿~<ñ‡jDɨø3 îàüAPl"ÅiZEP|þü9‚„"O·Ó£ ÎéúÛ ×aÒ>ã7Žy¯”¥+£6mll%ÎM¸*›!n„Úº”¾Ãe’RÔßCL"â;åÖÊ\©½9/…>Çâe*JSe ú¢~´—|®Þpß&%7£­pýB!ã—åØ=g^ê“ÛÖÍ-ŸJ¡’–~¼âs¶Äx×€E­Ýx3 ×1ûvqÐïó=T(ŠË€ ÅE5¡é‰:ÒáO÷7aÞ~̦D¢&ùy%) …B¡P\,+qXžƒNEi«~`3{Â\‡ƒÁ;ïïÍëçMWÞ±ª%MßӜψp}R“}]ÂP ñ«æãíîS›ä¯G:®ð¿mP õ2u¢É£ :™Hˆ³rp™`#à ¶5y^R‚FîV¯IU«é›ùüÚ@yYdü–ä'æe‹‹qG£Å‚ån|È’„€“.b1 §úîI3¾fT„_o,«ß$u‹`19ËP´¬@yŠù5„ö³#2ç^¦åL¾¼xüˆ6#“ß$M6‚OP"SÊ•œURwù®ùÄu%4ºH#²î“Ü3ïf,ºC#!#Y)Ź·ÆfŠ\tÍŠd …âz±ê܈ ¡ ýA]H?«ÄçI –Û¤Ùo·[.þ^øÞæ-Uûáw‹k þèBï'É7ò‹MâfÕõø"²1,Ú^y^½zEOŸ>åï÷îÝ£»wïÒý»÷c¼B Âñ£££H,BPZáÇõòÙp´d«:æ÷™åúAŽ!„ÌÛцƒpr|ݺvÜ=Ú¸u‹Šn—Þ(H'%Ÿ›_ð>q}ë÷Yy êÈÖö6«I½30TS:e.ÿŒ"�ÜÿY¹ ;¶w¶©WônèËÖÇ@ º#à¹8>:¦ÑhÈ…V kµß,³¶\GÿÌ+­±ÛÃáeøhV( %þ(ŠŠiÆ–¦cÓö5…ÉI? …B¡P(Š›O ó£7›‚™øMKOæñú•ÓåJç.ªø3›�´:ùÇ&ê žAuò ¾—“ÇŒ®ZL~Uù¿XœWIfîù¹ÐˆLpS庨þ™œÎ^zdñ\_n¹rÎêUj)De[rW[MÏV¾hc–ÕmáK)+ÒÒ×%+×í¼`¦–±xŸ…–*ý„�â*k"ϱ|‰Æz…?®e  èF‹•}â3îój@´1­¤ ¦­Ó<X1"[OàáôEíGÜ“…«³µ6Γ{XÕˆW®ê<U¨Ÿ‘ÞâÄÅLâk ך’ƤÉ3Ť¯ä–­«œ¡P(Þ.€ r| ÃòˆI* ŀȃöû€vƒòŠ]�!±,ôMA’A<HÏ«ßpÌÜnE‹É?hã„ “8丬Út~!xB ® í¤ä;UÖI]xAýHH@¼/¸ˆLß §ggL0�™§ß? ípIn›¶·¶©×B†7ºpÇ''LÚ †´¹y‹‚¶w¶˜øC‰]«È•;W-9¯L¥ÀÜHÎè߃` ¢Aç•g˜ðâîÊ-î[_§KGÒ3Íþ×VˆÒ¦€¥æàm¸/\®î¡Ü7ÊåÇp7¶þ%öþJ?>Å'÷ŽÂs*õ å0 ™àƒp8¢ê”·ž=}J_ý5·Ÿ~ï{ôàý¾i/×Mæ÷bë_]èo[éšJÿrà¹éõ¡{…âÎy•W¼KІ‚üƒûyæÚRy¿( ÅEC‰? …â@JÚI÷ÍB].·ZMšvçM$+ …B¡P(®�AÝg\z÷&!þÀ 1¶ãlÞ1ï¿Í˜=,›Ã,Bà™.?6=Üꤟ*îeϯ ¬Í˜f9&‡]Qñ¥vþ5â²É?Æ6í˜Qþ9ñ'OÞâMÿ‰ÐâOí¼÷-s<ª»ˆšqaù¸1ì¥Eʼ֎$¼E;™®/MÍ[$'Q5&ké§Re°E0T#çØZþó6kz™Iz6®<_bÕ±•ÂQ U…1#*¾e=Í”ü“0ÃýS(Šó¤ŸßýîwtrrÂî´à¶ëþýûLš¡€bM÷‚•W@ÎÙÛÛã¶ê9pEf¢uÚvO¨YJûLþ½öÖâE.µ@î! Ýnvy;ñ.ddÙš/¾ø‚ž?FëkLFŽútvvâÊj—ÖoâõªoG'Ç´¿@_üéKÎǽû÷èá£G´qkƒ„4*Ù­«´ùóí×DâÕŠ}<QØÁ}?;;cV@¸�áe¹µ³Ü¿=àñW €dã¹g ö-mB: ¿c}ª±rm=Þü¼· Y—¿"+W‡@ú8;;eÕ&顎¹g„]vYß„=ÔM&%‚¸¾FÏ_<§ÿôŸþýÿóÿ¤þçæ¶êßý»G?iýÄ=k÷i£½AK£v«P<Á$¢e]ý2LÃõ{PÕO\pï…¶« ½»ýzCˆ`ÉeÇ#&E¢mô‹’F4««/…Bq9PâB¡¸‘˜699 Í+§‡k4Óš …B¡P(Š DE€«/Oüñ«!ÙKº¢y ¦®&Bü™Sm>²©{í-dãg¶‰”t•ÄŸI’ɹˆ?L2 sáÝ&þÍcΘšbI}EðŒ\ÉÙtÙ0ç!~™Šü¤ÄŸFƒc†táÆE@ìKŸó!V37<I0K5C˜ÅžZx¢¸:ÚÚê“£ .¼l™¨ ;iC™Èš¥ 5$±S]5§2*Q %Ì8kÆîИU ‰{±Té'¨c¬Á9œß" cj†¤Xãc•.CÚ&c¾ç½¨~ùÓWUâMg˜Ú/_ Ùu*Š·B”9<<d" 8§§§Lö€Ñ]Ü]- I¨uˆš¤ ˆE0jØ¿SîDJ„” J 8¤4~¤‡tEMHŽåEL¤-‹"™Hˆ?8u” FP>ëëžøsxx@Ï;mÚÚ‚ ¯Ä•£m±¢ÅË—/éÅ‹.Ç´¾±áòsæÊJ6‰§É)ñ'Ì O뜷%ƽ}ýú5ìï×\“åòÛÞÙáßåæ&]ªþ!îîB dò’Õn@¨÷bí ü´ñ'_0>”B¾Y¥*¨IÕÎeJwýW¸¨Ç #­ŸœÔóž—V«ÍªQRo—ªýÚ9(ݘ•ŸçÒ+FÅ-ªúÀ¸×x®þøÇ?2ñ ä¼ÛwnÓã'Ù­ò†{rzvÊ®¡¤NôÏzôzï5}þ/ÿ¤ò�<›''§têâš_ “Òv§ Jdç•À–U¸2µ$|ýúú,ŠY‘ÐHsd£ƒ>×”ø„‹¿vTÿ¹ÉH‡¿§¸?î~†®—Tý …‚¡Ä…Bqc°è„nê®kÞ*ëy 4>…B¡P( Åõ@ Ýe˜,6Á¤Ì.yØMÐh¡þZ£»-+†3•ü~«¤šˆ=yÎóó'rE7öæé Ædqš¿’ólóç$“hâL¢«š2ä³b=¶¢“:‡ÎŒgF]ŸeP”óqÜ»LÆŒvK¥ãLË® ¬“w×U)Ñz÷\Uz‘&e¥Mä#á¸‰Ž±DQǧ“¦>ÉsoL î í rS‘±2&”ÂM$ôà<€FÔã É4 ÂŒD (ªúx#n+ÄYp\¾ìÜ÷²SeŒ$_Õu[ªˆMI°êœX¼>1ScÁW÷5ú”HÛŒè“ÿN`E‘"=Ï4‡U(o&„Hc, ð â€p J ÓÌ#©J<)`ÐÿòË/9.¨Å@MèÎ;|ìÕ«WLü1›À¡œæ'ßä]$a@VùÓÿÈñ³+­$~�á‘ñ›ò/Ç…�$.ÄdégŸž={Ƭwvîº÷Ù˜¾ùæ>ÖëtéÌ¥ïQ0ñç›ožÑÓožrþnÝÚ¤õ :Ø? ¯¾Ä;Ê2þ:E±§Nµ¬ˆ?©ë£ÉnVõÞ©í¦Åûr’¾R[õ¤|>¡ìN ·<ê}9q=†:!„³a¨— Ô¸ÔB=e¨y.žjsêD‘Ôc±[ˆ*�®C\Ι@ ·jES:¡®ãþ ÞI_õ ÷ ®ç°PdÝÕ­5—g¤–wÁf"r/ Ü¿#WŸðÜ!O¸x>YµÆ]×Yp÷ë_ÿšþÃø\=zDßÿþ÷éoþæoèƒÇ¹¯ÕÄMÜÑ!>Ä4 BögögôñÇÓ½{÷¸,¸=˜wÝù—T¡i4qã ë­y¢ßrgÓ¡R—ˆ¾žÍŽ å€ó¥k¢d“‚ÙMCøs U1OÒôên%«þ( Åe@‰? …âC>XÍÉ?³&o§Éä* …B¡P(®6}¼ºBQ­Œ Ý缕}“¤6^ÀXîâ⧉Q# kL+éÓÍ£hZš³÷ÝD,“O%É/\k¤©¼EëÄÄ`¶þg\î½ÒÃÊ %jÆ…ë¯Gl 2T3nÎ"5¥* þKŒ…B =Ù÷bžPU‰ÛÄèm]é!A!'UŸ‰Ž´R—0”d(°y‚A9ä%¶sePå¡*ý¶í.H?£pTÔÆuNIë{¼}¥!6䶤@'H?)±ÒH„1îŠlÓtïȘ µ#³dfélÍù\Ž¥&’B¡x Æh:`œßÙÙaC=Œó�ˆ8Þ´`0%ÓL#MªøX6Zƒƒ4?ÈFèŸ6©úäÀ.q]~ |QfÇDµGâĵˆ¡= #ª# ˆ É8îÄ ~ ö¢ó>ÔG†ôúõ>uÚ'ôâÎ+÷z ý&þ´éų=wÞKÚwaÆcCëÇôêå¾;i€ÄàÓÅuàõÂÛmD«÷kÇöå:„ô„{Á$’V«y^w…¹^6ÄolPwŠ /!ä˜&Ò‚Ç)Pl Ä`=Qû‚òƒ2ÀÖ „šó@ˆ_ò}æÆ·È³1¨ƒáþŠ ST¬^½|IOŸ>eB]Q´èã?¡0é­{É.ؘÐ4Ö M¢`CÄÏÅÙé?3©ëÀ÷¼G>ùÐ+ù¸k‚{'<ÿ/õ€Üw]¦¨“`ð÷˜Õ½‚ÒÆ3¢ÚŽÝÝ]þþèq¥· ò~MÚF•ÞÕWló–íºç<.ª«5.KîG9ÀåØ˜]Ÿõc/ B4BY£m¨ž³ó=ýpá†öÛÖößÏœ¤¥£m…BqQPâB¡x«0Uv¸3);4¤P( …B¡¸<D­‹8Éè§¿ ™ÞïxBuQYjH09,cHŒ§ý>‚:6zWcã8.ýÅ”TËó BºB1¾nQãªõ›s^3—@ˆ §²˜f Xõ¹ŠÄ[ÛIE Š’À¬KÌW“ 1³ÓçóLF¶ ­]¥ø“ÅlP2hV(3Lˆ4ñšLF|1¦~,½¸&õˆœøSÅ)¤(gl-Ð& i©¬Úé]vfaWhdç%?þ“’ò ‰sM ù¼Õ œ0ÄÔHO‘ T+”èbC¡P(r€ðóÉ'ŸD£:Œ¾0Ì Ḩò¤˜Gn@\|ðAÍÕ6ÄBÂ#~lØ?ø9'mÛ`øGü EÀ8-ñ  ¼¼ëÒüK_W\)aƒúÐ(¸ ¢<Ê૯¾bÒÄõô›gLB89>£õ5(ŒœQ§%n˜Üû©ìÐë½zùüž={AÏŸíÓÑ~ŸÖzÛL ²Æîã xtDÃQŸnmn0qakk«ÖXwå‡kòå¤[››A‰ä|f­ ¨°¸ò‚Z âkM‰¯.Ù\Ø».,òpq¨È¯(ºà~� Žlºr°\@á>£~mln6ºq[|}4ƒkãøæ‘‰ÒºžÉÇ”Á}Ü„âOêBÌÚêÜ)ý_œr �ÒÌ‘»ößüæ7ô?þÇÿ _þò—®lvèßü›C÷îßçr`bÍ2X²K0pcÑÃÃH>A}�£ÛóŠL¸opÃÒÏ¿ÿ÷ÿž•¤¾÷½ïÑO~òúèãéöÝÛœ&tà^ê\?úѸ^ÿô§?¥ï~÷»ôþ£‡î~o’¨mBA ®ó΂"rOž<áò„×ÖÖ6»ÛƒúÏâÊPf‚ôã9ؾ@P¸þ¹û‚¶¯»lýŠ6ÿU¸+Ã5ue&nË 3wøƒlaQÐɱkW^¼äðÛ;ÛË–À±K¤-´9¸~´ ·6]9t(‡ ÒSµe mÖŽË?»Üßã!…]|h¡P( A‰? …âƒm˜˜Ì 1MžÚÊï)Çu2P¡P( …âš`irþÛøã0‰\l”‰cªV ‹|}*½î-&‘VTæÈVi‹áEÂH8…bZ…uF1gô+Ê@2 ä®OP¸‚+©añª¯SÖ;„øa(!‹Ôt­jéˆaE6qQ…º*u4ºÌ0&ý¦¹�xbÊÅÎF_ç3Ä6j¶xk¹ÍPQ ÁFêÿBbÌùœK0&%¶x²Œo/JV8ãB•© Oc;Xßz—E8Çÿ­l5 qÈ%‘‘ö8‰ºäÍ»PôíWJü©»?ÄuÉ”ÞÕ—¯‡ã߸²ÛYQãÎ(æÇ‡µR DÉ¢TÈV¤c›`U~�&úþšÌ-ÏõE×ÖIɲB¡xã‘*þ¤è">§Ô'‰¡uà]¼H)Ä¥€~¨|ω?©OÓ{ºíâÙvñ7ÍoJœÓòºƒ‘$’Ä%“à†ÇÎÃoœë]ö´™˜tˆ?ÖNO6Øl ¥–ÑÑúi þœÒÑá©3zÐÁÑÖÖaÄO•ãˆÃ±Þåëù‹çÔítéã?¦÷>¤;.ýóºÀÂ}è¹8z¬À1]1éwƒÁ¾›(¼,‹2¨=A5.¼ð>[op¥dCšò÷èõþ>}ýÕWô/¿ûk>úè#zøè­mlœ[ñ'ºÛ óêß"q&äJÆoü~WQ©®¦ÄŸ¤×²P?¡>õõ×_³JŽÂb]’@/}ŽÑhLgý ¤’\èGK¹ŽÃñ—Ï_ÐçŸÿžNŽù¹ d!þˆ’ž%<' Ï L8.!t³zM;¶9pÕ…6�n¾¼ÿ>õÖz±ïo·²Qù¨,™üóÞ{ïño„–šˆ?62O&N/Y¿LúÕª,˜po)©_´8ñh‘¯?ã0àûÍ~!…6ÿ<u&Hñ‹ Ï.ÚŽ¸~ýöŸÿ™†ƒ!+ÑÞ¬¹ûR¬ÕÛÜowƉÔËäú¤õÏU”¬¼+CV´ }؉ÂSB¡¸�(ñG¡PÜØÆ Çæß9¦·3V/ÎKsZ …B¡P(Š‹G\ô™|ú™=q “öÉòþ™¡iSÇlÜY6òBÀ„ë‡~ȨGQÖ€1�Äìç¸Àä;öÉ& y}UÅ»‹v«¤í3Úè—�–]׆Îè6.ܶAƒQÁûƒ¡›ÄƒŒÖöuÖ²E:&ÉÆ0âþ+µ±ê+ÄQ‡1!zŠz+®?ÄMŽÁ0qxxÈ“×SÇ<V*«Õq$R÷Va.B¢ F ¼ÊØ«}Å¥¶5ÂM `ÉX³fæE­ 1àR]Á,Æ»c±56Qeô¬T}¢3/ŸÏÊV$ü”På±ñÆ)ˆÓƒ+•>EL þÔ7¸9&zˆ¾÷°ÞŽ+âúßrž5‘øC¦ô…zNÃh�ªøIeu¼£¬3iRcb E%Ÿ"Ù䥑*ª!/ÚÒ+oò¶„¨ÀÈ÷EÛ’EÃ!N¸'ÊãoúÒ{#Á(¨ÆÑ’M]ªª#d`éߊ{QÙI•[@ÄùÓŸþÄç|ûÛßvý-Vå9ÇGì‰?è£/‚t@J€¢¾#ˆ?P�Ad­ß£—{Cî‡`ƒúf«åæHóÔ…‡2З_|A¿ùçßÐÆúýìg?£ýøÇœ~NÖZPΊŒ´ëÓ(Q€šn®Œ®*J <zô¶\Y¥Øýš¯ØÙÝ¥ç.ýŸÿüç¼ýâç¿à²û_ÿ×ÿý8Ôe•n2€ðpèò#.¥˜P3Ç­Y$êRÕå¾N œ3—Xž(ÖŠ$„+­¹€âØ••ÔäS¸ïPÑyüÁc7Žûˆn¹¾/ˆRûãy.¡³k`u"ëîÉ1»ç ú^QêÖ-®ÛrŸAàÁñÿëW¿¢ÿøÿ#ß?¨ó€´¼?òé¾~½G{n  †óÿú¯ÿš¾óï ”èõÞ^웣¼pwïÞåû‰2?sÏêZ5¦ôîX(|Gù²âÑâ0 9'ôOËJÙ6U<ÑfYjUWÙ§3 Š?B²”ö…˜÷S,ܱBžøûÆþ‡#¾~ìYxøð!mom‡º¶\íåËWôÏ®ùÅ/~Aÿí¿ý7®äõ×E?þÑùøÝщü|óõ7üü ½ +%bEB_wÛ·i§g‘„úV-jR(Š‹… ÅD:]4L™g•4 …B¡P(W ÿ¦.[Â1“ÙmT€(å9/Uåaµ“ÒRî®KVˆbræ¦ñ[ŽcÂÐOÐrœ˜E\2Š mÎI²[É?Š&ôº-ºwgîìxâ VvCõET¬úÂNúëtx<¦½½A˜öS5l41ÄÄVŠ¡È…›€¨X! | Á¿sâ(ÿ¤+š§….R?å&Œ·„@Ãj?¢€T#òXª“m¤]J Pfª¡Âµª=(ù[—ª)ÔP¤ÛHÉjkJ¯T'UßúÚùŠ(é›FÞ@lƒË1Vü{RdPâ\ئR€"иªønDñ§"þP̧ÛQT×S A(Ò§l- ¢MQªne…pU#†VjX?%.m‡ EBÜFŸN ïÀ"ý¶HjI J8&Ç¡@"銿)~“¼Âà/DóÊch—|O‹+Q!ª/’ÌÝ'¢¿"n¦pÎzp·å]É»äµ;k´³{—ÖÖ½ûNw(ù[í‚ÖÛk®ÿ³îU7Éßß·®\ò Žr}µ·Çs ”Ñnµëe¼bׂ_a ž¤ïè)á Æ(ßë½’ôéP>PwYÃ5C%(px1Ùß{Í®ª¾„û´ý}º{ï.mº1ÈÖæVCªÕõÁÅÔ«—¯èÅó<AßUc¢Û¤s¾÷l( N6!ÒΣþd Òs°AE}ŒvKHìùXNÂO‡ôÕüwÃc±÷î¿ÇÊO “½ÿþûôøÉ“è mY \÷÷èË/¾¤üÇd ˆ#>ø€?®¥@~ uÂA¹ùi%j8¸½nÕxPW¡Ær~§ªLPš²'ŠôfBìïÄ>©¹¤þtr;Ï—¨b%×sÑW_~ÅdÄßÿþ÷ÜΠlqØ`ÑZ*>÷^í±;1<g¸?ìB±Ûau.îÿë×ûôÅ_p½¬Àõøñc~&c½»6Ì5ßÇ'}÷žØçŸÈÛ:+½Ú’ …âR Ä…BñÆ`ÑU{9hžk°iá …B¡P(WŒ†9@VêÞèQ©öty‚­ÇŒ-²:ÆKx¥ò¸t䨇¡ƒ \?Y?ކ›¬@…A˜`uœ'ü¹+0%ÿ(r¬¯¯Ñ£G;ôäѯE½«•Ч}C{‡}ýÍk6 C]÷uÄž»6‘áQ#›ÉwÔIYµ7âÊŽWÕ»-]ÙŸºIÉpM0djŸËç•P€±ÓÇsyÚóÆeç"Û…ö£¨¹žhÎKÝ�ÚLÌIóSK&|ŠŠŸÂ+â+™(ôEÇÇELž±¶ÊK‘¹´ U‡d…}Ó5æÊTq(ߨ֎EÛl$1y˄τ„VN!þT×MÔ\6©RÀjÈîû%*ü(Š7B\±®¯¥•´m-šÜ­,+ô¹ F`´= æ ¿Èd€ÖbgyK^↠q ¿ñ^O]qq›»B³‡|#¿ÀfP›ÉÝ&I8ôƒ‘6úËè+ß¾s—î߿ϟPõ'í¼íº×ņë³@Õ®ç‰P %»¸¡ÊÒ=¼8vm¶'ÏìíìnÇkÉŸPãÛ†s¤³¶¶AŸ}ögôðÑCúó?ÿsúðÉÚpý¸ÝòéÒJ`7=A­䑵õf÷hÓ36ÚO„cÁ:Ë*4g.ÌÙYŸö_oÛÞÍ[Æ.Ìï?ÿ=ýýßÿúÅ/~Éj?øáè/~úSÚÚÙ­¥‡qçŽW6ÙÙ½íîAÝ@}öÙ÷éÉ“™Hò×ÿÏÿ}ôñÇ´¾¶ÎéÝ~PtØÚÙnî}&„¨[©OáÚˆŽø÷­[žüÅ*})iÚR o§ÜÀv»Ëj<±íÊhgç¶+Î÷s¡„÷lè箪ÀôâÅKv…(ù ¾þÔÝõuúÖ·¿E·ïzE)|Ðn@%ö_ÿëÍ÷ÿ§ù—ôÉ'Óöö»çäÏG×}‡z8×Ö|yJêDrí[;[³u¬'Ê Ap{×¥×ëz¥”AoÅŸôÃÉ«£hw¤MÜÞ©®oÉØã7v[ˆe[ :%×»LÓ ÒßÉñIÌ׳§OéþáxûÃþÀÄ›O>ù„>ùÖ'tkóV(÷ÅöàÎÝ»¬&%¦;wï¸ûüS&õøzÜáKzúôýáO ÿþßÿþËùÿqYý/ÿú¡Û»ô‘»;î¡@OOñÜ—ôâùKúõ?~I‡G´ëêñ£GktggÃÅçÆmE›GEäS{± …⢠Ä…BñÆ!'î4Ë¿Ï3ʤ«µÓ¸ …B¡P(W‡¼÷•ªmðj»°Âß‹–ßZaÄVå!&‚11< YÆÅ¢xY5m0Á)}LÔK:yŸPˆD˜T‡!F\'¥®rõÉË/•Eç#çJ<O×Û§¾n2�êêZÏÐÖF›v¶{l¨ »úBÞz¸újû‰ü¢*goOâ¿L4)d•/¥F6™4÷D!-<ahÈ«jñßÕ‚Šª/ á©ÆNÅÔkOag&ˆ(²?=& ø_„4t•÷©iì—¢~MÕ]EË83Fæo‚ º6‰!%,ivÿ‹Ðnɪúœ¸î{ŒÓÿN¢Ž÷9ÞúÄBRJ."Q,Uñ •‡U{ ØãÍ‹Þ5WªØ@5bSñ'U ÂØZˆ?pùU(mG—bÝš4´¥V²Ζ˟ææ&ÝUé„{˜©Ì®ŸfJnu®@¡x[°lÿÍ$dC!Ц.‹/}Õß3¶öŽÍ×KÖ®Ô=K‰î�ÈJ©É ú½  Ï€÷!ˆ/Pµw¼qýë´ u=n6ÐCí§Ýñ&µºî"ÇL„—žÔtrvIËRÒOŸg(¿{÷»^{ôè_`ô÷×]¸&´ñ¬:V­oáG xõ½›¯½½×Ôj·èÖÖ&«‰p²%\Eéµ;Å‘§OŸÒþþ>»p¡ d d¢T–N˜l« u*G–«Zÿ�å}ûö¾N\îÝ¿O|ðxŠRÐò@ÿ²ÈC…YVAHú?õ·®VsTr-Ô\å—qtßeøÚwww9¾]WÆkkkt€ŒutxÄ÷Œ‰î:Pÿ»QIɃ]•¹}â– džï|ûÛtçÞÝZ|¬øÈœ¿ŒHÆ¥„g.yfÓú> iÿÜf±.]ÿÓv§þÙ佉(bÉžó—}9–têÚ&¸`ƒÛbŒËk*ž¡œ§]–,iH¹h7A¥éƒ>`’¹@úI] â|Œµ°ÀâåËtèÚŒ³@ƒ¢+…¶é‡¥k;Júæëúå/>g• 'î¹µnÌ·±¶A›Û %®¾´[©P(.JüQ(o òAq¾¯éw¾ò/ŸäMäÓö+ …B¡P(®<g\«ž´ŒH¾{ãõh4`V—bõïææ]g”Øf H}c‚“ØÃáˆyR«œ1¹UÔXéÙn¿®òÄ ".”�*0áç&ËçôþãÕsO̜߫dèúúÇç%…\'ùg<:£ÓÃ>ï»Éá–3œ­uÈŽN]ÝíÓЂO;nâx—NO°ò|È$ É/&’™6‚•Ò »ÕØ/±÷+¨'.Œ]]=<:aÜ+ ,ŒL~<5Ø |wc£ Sð3•£il%ÆAv5!“ìa?6ÙçÆ”òÌ«ý”´˜žý,å¬yFÕÆûÜ Î#n�EÅ+u˜^kEpbÉ%ª,5B I˜7ÉgN±Á0ã•‚L=®xž‰ 9Ö“¾ ´EþSH^¶¬ì½$è²W†ô$îULBÐ~ Ã=‡+®q ÿxœ•ë£r<ð¤ŸJ-Èß[qAá=}U®9<; ™‡ïÞ@hM³ÅÖT7 ‹awÆ T%vVÆõ¼ ÇhK 5–IfVLëOBªJ÷Q–+›˜‹L$ RKBqówá··w˜!}º”ಠ¤Bú•øb ^ð~LIóâ‘wOT £ê=%ñã7T^÷T­Î„°ËvéЗÅû™o\:¢Z”Η²2‰{è’<ÞííN›í0z£Lá~kc}ƒ ,>ß®/[îýÔIÓ0Ã{AœÐÉÙkŽwßÂq뮯ãz —pÍØ<xÀå‹ãHŸ‡mUâ¸æÂý{=~핚‚rÒ>99eã>®äÔ!¸ò*A&zôë_ÿšþîïþŽ~ûÛßò}ùÞ÷¾ÇVQrý´QP¸ä‘üàôñÇÓw?ý._û¡»)à ä �Ê6mÔß &ŽKy íü¼Uá N}þ‡ÆíÖâ.’|W¥~ä>29 ‹'Ð?ùkÉg å°®qÇ}â¹Åoy^†!Ï«âäø˜ÉéPuÅ=ÁýýÉO~B>ùÐuYJÚ{éëîÛÈû@ÖéJ>¬®Ž úý³˜_ wÒLL‚k¨ã#¯àƒôåù™†#7n•x‘6xp>»áscàng5Å£Øþe·¥Ö¯]GIåœÚŠƒÃ&ÜaŒõŒóñ,¡ý�Ií$êÆúÅñqã¢o "R±Kˆ|²»0W_7Øá-ÇÜNÅó ± ÔÏ@Jüñ~ìÒÞ¥Ï>ûŒß¨÷/]Û¼ÞÒ~æÚ‡ßÒÿüùÿtõù€Ÿ3Œõ  u÷þíÞ“B¡P\”ø£P(n4æMÒçª>ùdmú™‡kà˱eWê( …B¡P(VG³ ¸"*°Fƒ¡šš†7ŒxãÈ“À­Â$NÙèÂ+ŒÙõWɬ!o$U Ÿ¸3æŒR% @úƒâÎ+5Ȥaf“}C±¡s’ÎCÔ±TŸÕ½ÒÏõo®#g:x}D/Ú¯hÔ?¢5gü LüÂ…‡› ?íÑ‹“3gä±L`³¡®3é'ºtò+²axcÃ\ic½L•hRF0ŠLо¹BÖI• Ò01â©ê€_RÒ¸àK]† ¿«¸ » –lÑnL‹¿Iɨ‘äí­òŒÕW¼ûôšk>n­²R_ îWS ÿ„ýe¶êÛ¤ßý‰L´ §”†³MŸ'û`c%ÇŠã2ä?´s¢BŠü‡ ͨ­¯@' “—ƒ¿O2 çÌðMcir ߉BßCVÍÊê.ŸÒŒSM±ªÓSãU;Óô³³ê/#…BqÃÁŠ®o(†ûó*…ðރ툈[s–A®˜ NÄ1Ú8ÀûuÙ&È*8†tÙ`˜GŸäqû…<À= ¤7`¸~íÂy2Ë)ݹs×È7½ZiQa]Ü®/º-W—%»ýÅþû˜Cï*­ú ¹Ë*ü†þÎ;L˜·dçÈ(§''‘ÌÏÄ0·¸hƒ‹`\\ ýüç?§¯¿þšó %'OžTW„qBP 刼¢¬øZLès„ø°¤ ìûø“éý÷ßç{:ˆK®õì¢êo^¸‡ÛèË-AüI!*P[¡,ðžÄõ­ßeƒ]²¹r…‹(6¶w¶éÓï~ÊîžR`üØ ª²x{½‹)ÿ ÃuG°HõÝ»û× D³U‚ž Ä"jnmPÎG$ll¬óóˆ{‡{ˆç ß»½n2†¡úp˜hr�{ÐþaÛŽ.ï&Ñe®Ûìêí“O¼"܃‰2PJDGó<.}; ‹4F®= ܘoHܯ· YS(ŠóB‰? …âÆ£I‰g–âO:=+¬“­’| …B¡P(®Q>€ûuTÉþ{¯•S’¶ïÏa¢+£_ðJ»‚ ÐlHhuyòñð ÔqÉ ­Vå*ñ²šDè¦ýÇY¤ñ¯¬vMŠw }^1ÿŠF'g¬0µÞkÑZä1éà´G{ v¸[ëI4†Z¡nz¶‡l�!êäd´iãÂd®A¨Rï±,G?¬­Î—㜎8îOI3"­ßa·bÞ°…ïà4¨"‹©.ßÒt›®#]ä1‹°3q^Gî’e–Á¤"üP¦[9uÅâm fjS[CêÊÄïrÅÇ!ä®´ÌÄ…açõûOáã‹+šm$èL;7¶§”´wI†Wm¿jÄ&#×[ 1õ<¢zÚ‘ôÔš|™%¤¤ø ïUäQ(—!¡íµ»y}ŦãySÞˆSâ‚m-|hë–m™EÉ›Wî9¥?ýéOLþ€‹›”¼‹ôÅ}Ò]ßî¯éôä˜Ý_u×:´¾±FÝ6uG%õÌØßÛ„íÐáx¨µHž ÎúÑEˆ1)¨ü€< ¾×ÊM¾,Y� S½pý1(ù`\€xï¿wŸnß¹ãóéöA%ôåË—ôŸÿóf7^P릶»ÆÛ»n4Q÷¤Ã.Èþê¯þоÿýïÓ·¾õ-&õ|øÑGœoëÞQp&.¤@‚rˆFˆnŠó¾ÞjìÒÊnÍzî<t€-ײrZ‡®ž·Çg7H/[Á•ÚÂïg&‰¹8Aô@}êº{ ÂÖm·yuÊ%£uÛNÈ‹”ƒ¼çñû¼¨ÂÕo(·¼÷ÞZÛX§[·6hss‹‰#) Ö$hráµl8Ô‡vË›d7·'ÓËú2Ç{ç6?+rþŸ¿:‘&mŽö÷Ü8ú€Õ­ÐŸG¯»rÙÙ]²>@•h?¨WalB žUムA¨ü Å»}÷¶{^o³ÚúƒwîÞa’”€xÜ®kbá%ûƒÚ‘„†^ ÊDˆWŠýþ‡Üf¡Þȵ¥"£.ÆW–öö†ôÙ÷¾Ïåðĵ¯Ož|Ä„¥­]×O7_ÓëÃýJ”“ …âb Ä…BñÆ!é¤è´ð¼Ú4#¥“´ù¹JR( …B¡¸J$Š”ôó‚¡îmêÚ@ÁČգQˆ=޻ñ¥›Å*ï ?IZl¬ñ„ ô½ÙFâö•A^ùÁdžìˉA‚¼ï(DäEñ®¡ª£±¡ÃÓ6 ®^©ÛÑz¯`CÉɉÛ%ÚõÇ‹ÝÞ½¥ãÇ+m¸IÆ0bd”º*Æ£”Øb"®U)ð„cR§±?'þÈø +v‡p…ŽËJ}Iƒ] ¸ßbWxB J]iÕb¦.©bÌ2„¾Z3ƒBÃÂáD�HÚ5!¨”á~ÊÔ‡Á?Ü=vkUþŠMÛÄ@ž2RPö©.Â>Ÿ¬'ÿø\·’L%JD}]ÍÈd¤œ4½E4a¢°”ú\±QMnÃÆ™YÚ™EÌ ‰J2Lñ§Lîc]U©fÖQ(й@ßÊ=xg¡_ˆ>«G†÷ÀŠ6 Ê%òÞM‰µ)ò>­ì“w‘¸ŽEš©âÍ´5LiæÆÁUJHÊó'dbé€ü#ïoéS±W®ço@ùn–\8vYtrD·No±[ס–SÛµûm¤™Fî˜Y¨tQ—¾\ž={J¿üÕ/éé7Oùú}ð=üàÝá䓺¬9hg{Ç•C›�eë�á�ŠÀÇL÷îßó䜬Ÿ#D& XÕ1ô夼VH×á{™°}ˆðK—C¸®¯¾þŠž={Æ÷÷ƒÇ™Ä´HG !éäñ›ú'úüóÏY% ¤ îKÐr¨È½Ä}Ðø;ô{Ï[è_©mQçÂ{hËø}åhˆÎ݇Ʃx–A,úâ‹/è®>€øÒÚcw°Ï®ð¦ÇßÔ,!<ÚR}~ù«_Ñ—.Þããczøð!}ü­OjŠ8)Q{~^ËZëˆjÈ­ą£•Å>‡IfýQÿ×t%Î2éLN{άñ$} F¶µµéêO3qË€`Ùk1¡ðÛßþ—ñÃ÷ßçíý‡¨»6¤ƒ“—UÜYv …â<PâB¡¸1˜6éºèdì,ÒÏ"adü*'ž …B¡P(s`½ú=&5<ž‰“‰zo ‡AƒX=ê>˜¤§Ývû <èöí]6ŠœžžE²‚¬´ÆÄ¸¨—ñ™8.ûSW`¹AƬzÅjÒ5Å;+š-ü«¤. Š÷iDCõGDg®žrå¤ÁpÌDŸv×ÒZ†FãÙ±3hŒØ)†wé„HLÉ“ÍìjÀÕ]ÔY1¨‡¨sXyŠý¨{)‘GÜ„ Ñ­"LØHä™6êŸÑÁþ âOªºàÙã§"AÈ–¼ÙT•%ûœªŽ“ì_dŒÖÆš‰0B\òe3i¬­ç±ŒüQ¯ ±±39Û{„°Ã×>æx¨Fþ!ö¦Åi#<Ê¡pŸ¥Ü„ãrŒ1™C}ȧ…ϲ"¿Xùk…Ѓ?…߸‚’YPú¡DE-^O(‡˜÷¸…tLB¶Áw}Râ&• U(ü5h^ мÑ$a¬”Mj—™›B¡PLH?ÿøÿȆY¸Š»&(> /ˆ}x§Éïe ï@ˆ3é{d%?ÒÌߣ)¹¡IoЀë)¤R úÓˆK�Ž2ˆ(Jä<ìƒÂŠ(ÑÀ¤…k€¼ƒWÊÈý­i$B ÝÏw‰‡'ÇL6ÙƒâNp1…´Q)FAåÇ¿üŽe@5[þ\ÀðÞ«=úù/~N÷wG_õ5+ùüð‡?¤‡ß§nèÛcÌ€~ ÊäG?ú}ç;ßa5zZî} µ ‡~ÐÈ÷'Po„¨…¾?Ô_LáU™PF(/”!¾£¡âÂIJr4Ñw"Ê�Á`ÍõÝPGçQxN\^ž¿xA¿øÅ/èÿûüLЀ òöøƒ¦º8š@FæéçoÿöoùYBÝûÞgŸÑw¿û]ÚΔšêT—P>¸ÿÈTS�Ϋ|…—ƒýÃØiè4úý3΋à¼á¼¢ÔGý™w?ܽ—x¹Öz¬¦Œ\=ÅØà<@Üüã¹>@áêôä”þìÏþŒ¡^·2E*AT‡Ìš¢á`HG®Žýò—¿¤ÿÏÿþ¿3 íž³o}û[ì^ ð|¶ra Ô~0°˜JI¿#y<¯íàêÅÒ\iÊfj ‰óç`Ó†rEŸtÂùCVíJÇüºÆnßHÑvÀeÜ=×΃,„6yTI¡P(. JüQ(o¦IØÏ›ž¦ÔFÉ? …B¡P(7^GŒÌ”¨NP$ûìNÔ+dç8ø¨)·GE µ(U”UÐBì¢&²Y=%(§ÁAŽ‹¦îJñª)úÝBJüiÑ „Û LòŽüJñQ 4 ü´‹6k³#¾Jí'R*yÆ"›(üH]“•ùR'S£[ªnÓ¤ õß§]ÁP˜ºœ’¼ ah–Ûd›‘<šÆlóÆ^çZÍÜVýÏSü©&(«qö §mŒÐY’ö)¡¹æ¢;ÔËJ&ÂáKáÉBÄ|ŽÝú}±qcûaI“z¢âÔ#vzH•«.Y!NÁ•ÅkdåPZG¬M(;!ï6’~Ò­*—ÉæÎæú@ hR³¨Ê8æ5œŸ’×bùØ™±) E#`4±Æ\=„¨€ø’íf0V//H xWŠk-l¢°ƒcHïvv •ôCåÝš¾sÓw­¨êÁ>n7âGzÈ7ŽKš©šPô@F‘þoªŒ.qbC $ÜY¿Ïí±ô=Jy‰MjaP·LòAù"ãñˆ® ¸&¸ b—AÝJµj<½VÞ{ð€þâ'?á}Ÿ|ò /h)µò+ŠÚ{9ïkXy_Ó‹Ê«9Žx%¢Û·o³2I§Û]9Þ1Üš¥)<G»®®œ'> ä^ÊH¿‹.¾j _"ܦṜ–Ï2”êÌÆ­ êÒrD.Ö…”RL!å,V ÙuòÌÏùîmïlÇ….3‘Õå¸'ŒðL€0ˆ:×\Y÷—Žæ"Ónx¶Ó¸ÛmC®M(ÖèÞ=ïÖokóV$ œŸ…¦2Ù …â" Ä…Bqã0«¿ÈäpÓdrÓ÷¬8r"‘B¡P( …âzPwwCaÒ®Lú…T‰RPjü ¤‡0ËW3³k°¯’¤%ý@LV¦*@�ŒB¨#Š€ä|1̤nhï.,»|³¼Ò“ëŠÁ*~ŠäœvËï9Ä×%|5q%­¯Þu’Êp4dã‚( Èĺ¬Ð‡A€1éÀ|à3uc×äz$V&§Š@é¸*u¥¼PY,HôY¶ñ9«H+™ñ±´õq¢­嚪g9=»N,¬.ÝÖòC‰Â«I{À÷2%Ýþ]ç*چ똎ÒÚ˜Ô8Æ(àz…1ÆÑd…µoŸ‘NJ뱪ÌQejD èøú{~EÝZÉf@KDç‹]¡P¼ë€qļ¡p5RÐç¥ÇUÜ á —G ù€8„4`üF\¯^½bÒ¼¿S2ã,ÅŸô rÁW_~Éñ#ï [@9H\Í y]0íÝ"éµ2— ØP6((°ªû-ïÆµÞÝÚÚ¤M—îÖÖ6­wÚ´6îÓšëï@£Ýª›Ž#:;îO”Òyf=Sp×X(7¶2å˜Æ×ï l•ÛìÒ yõúúöw¿C|ð—[žþöîÝ{ï‡ò“ |ûÜ¿²±ìZ_~)7îR{îþ †4¸l ø]¯Ö/�ññ ùJavÝoÜëó�u÷å‹Oô >ýôSzôø1Ývå¼TüI‚»³ÿ÷ÿö¿ÑO~òvó·aŸ|ë[\çWÊô�JG. Ä|I_÷"ÊU™Œ¿Írõ…p‚YáŽ;Ün@mëéÓ§ñæ"áûï¿O®^x6 ¨+ˆ—ÓwaqnYúþQ´ÎM„b*÷¬"ÞÇ® ½ï|÷»¬‚…g®ÛBLJ»®I°Ðf'Å¥ðœÁÝ?Ç^¬WXB´ tÔøöãöÝÛœ¯“ |Wƒø|Úø×L°|$Óu  ïÚÛoíl7ºðBžÓpÛ;[u…¬$ÚÒåîÝsßéµH¸Zq:pÕ»°Õ¦ä…BqQPâB¡xã°èÄa“š’y …B¡P(Þˆ[¾W¤ß›+(˜”½È‰²Ž*¢ìÓr“¢˜ÐlµÚÉJi/ã‚„¸îJI ˜HŤ*” I�òÞBÀ€»0D‡ó¼š_}í4&ž{ó*•,^± PuP?Ø¥W»KDƒº‹rO “°ï'‰[¡_0P§@øA=£ž$ÅHˆß²_;0L¥ä ÔØ—+žæã%¤S&n¾ÒóRÑ4Trú¶Fª¹°qÙ"Ì()…²…òN å¥rÄ$Ã3íÁuUô±%*8ž„•_QúLX+.¸âŽŽ·3¾ÒЫåÒ Ûš\`’—œ/ aÑ=–äËVuÄfY±þäJ‘(H´@Kjä?9mwí¼ ½ ¶àŠÌ5¡î9ïE¢ 4"q¨Åy å%¹•¸R ¢Z»<á̤7mZûbªößÖÉGR÷|q—DKÔ¥¼õ36¸8›…‰®Ò ÅÛnAøÁûLH p3n¨¤8 ÓÔHÒöJ±R3†‹ê‡òøòÏô½É¤ [NìR1â—µyÞåqåR ˆë·¡ .á 1 oôE¼ŠPÇ•Û}ÚÚÞöª7.™µ²E=÷^Åï ×bÃ1Ý2-Ú ®´à ¤Ší@îÉU•pþ²îÕaªøpm< þðG¼ïñ“ÇœvÖ[ë´¾6݈<†ß›e¼Ïm,&hÉxÄõ£˜ôí‰òbòÎ)<¶àš5(åà{‘t2Ь>­¨ð€¬bޏrûàñc¾+!Ô?”ãgßûß[Ô#ćú³j~¹nnlDò‰zg‚òêyëF‘õ‰—…¡ºÚK+¸ÔÅVWÁªùŽáP_Ììò‘ë–ïö\ ¬ÆãÒ@;€Ï÷¼Çdš©}䦮5B›úƒü€Ë$'~b¹˜¤Ë½à8ãx!ßá{ºðÆùCQ”¶òüú€q—©ÿ Ï-<<æ9�SÔëw’(v{~D8›\ÏÀ_ÆQÅdK P(«C‰? …âÆÂLÈÂÎ^ù˜OZça›T …B¡P(7 bà„|L‹79ê¿$³ÖðŠU"x"ÎMºwœA“—v7N’‚Ðã.W­¬Æïj¶Ï$nƸá'ê„Èã ý(埊*å!ï^ÌÇE7 Ú¾LØ”¸È fŒÇž< ® €1Vy–¾®— g!¢Xá]ðçØÌŽý÷ñhÂå¾C Uª �Pvjj7D36QhBS|õ²˜<–“ÉÇêåiF!7C—}·õÜ>¸îóǬ±áÀ†P\ð‘x"Ĭð;Uü ¿k9¯l]ÛQ`…2VŒ—\ž|ýÖ“†Øb±&C<ÙFò–}p£d[ȣš\ß’\½é–và~Ÿñ§§ñxC+qkÛru²óå aDâ>ŒÕÖøœP1ÉÖšb &[s}ʲ¶Œ9ùn›Œ^¦±™Cµ¬¶fõ&ZÆf÷ÏÖ÷Mˇ Ebµ U(Þ€ 5 ´‘0‚ãÝ)m(ÍÌry# j)ÁVâ…‚ö Q]dA%ÆÚhh÷ªÞ »å”ø›”× ¸ IWHJ�ŒîB˜c{~>Îâ >…trOJ$†2ö¡P6 u ÿ8Þ IÛ;;¾¼Ü»amÜáÏ´b9»þøÝÞ­oßfòÍéÉ)¹~z›îß¿ÏyIëB¿æàà€0•"¾ç’å]í1tñl…ë…êÏþëý b§Y ‡ú"®Aî/ʪ$¼ `Tõ»@ð‚º“¸x½fÒBË“ò´O\ý…qÇÉñ1PN�ÊjTWEªN*®ÛØÝ$H–ËGH¾<F\—¥Þ8~ò¿ pïÅ-êî?Êewêâ³PΨ[ÒÇí¬MÉÇÎ+y¶âõážáAÝ eÚyV™œçêÉáþÍÂéꃯû¨v¼¼úXŽ´ç$mê0ÚOœõ'ž·)y˜ú>î9†ú ip]’Ì UBØ�<Ò–R§Ç~! )<Œ/*IÌÿÇdýLnkܽr¦¸S«]®ñ‹€p-Ò¾õú™"Ò‚×v„:<º>W‡ …âí† ÅÇ,þ´5Mr¶édwJš¶ºU¡P( …BqÄ×_óú)¡‚á…Ÿ(É}¿š«D 9w„ˉ <A89ïa9—K,¼R,3ëªýäå4{¬Œ9|µBê�˜ˆá&ÇK¿â³ˆªÊ›=QØæÂ@]hþˆ*ŽÙ&¬yã ”Ö²Ìâ‹$‚‰s®nì%Š3ä ) ä%Š?^M§¬ÂPÞTëpÓR¬Æ vö£Äi¸´ 7¹oÇ‘ÔåeÆëæØbBÀyËšq†¢êY2¾% ”¦´™&Æ*?¾þYVûñ >£¨øb'åxå‚‚K¤—f=Ñ'–I 3™Š\”æÑfekkJXj.¨ûÒçÁL¸W\&!çM%ýÄãû~'ìSR(o>Ð_LÝHÁˆ ¥ôõ°ßŨœCHâ¦+£L‰8V Ô ²  í©‹©œð“Æ›“f[í+·4µD9‰&Ïsª „ô¡øáÉ(-n«‘O,П†A®qQ *!ìÁáëc¯±’‡(æ´Ü»¡[¨°¾/žçkÝ´h£è‚Ä¿AŒ8 .ŒÄX vt|Âå9S±dSÜ逤³]qyçÅ9ã5#JxePéã²-ëD­ºkJKó誸^Ô9ùˆ»¯â”^d\…í¼î²R€”ÔYU5¨BDḡôãòq]®¢µ*ðl‰+ªcWϦ”ʰeÕ¨äj$¿{nÐÆ­ìÙk"Ç,‰ú°l<SÈ9~î»]|•]¢_5¥ë†Ýˆ¯‰<³* ò³Úµ»´)~²Ëh¨ž¿|8žåmÈ` ~‚è5±ÝTé ‰v³´ç'a) Åe@‰? …âÆauž¦•£@>Ø4A0ÕjîÉAºB¡P( …âúaªk/‡Ï{ò~³Ò “˜X…YëNW%Q(®RS‹ŒÃþh(ºiu´¾"½‰l±Ès5—`t©Ê?!Tý8Í¤í¨…³±~¹„(’«|Í‚1yQ\BLªÚâoIÖÎVxhRÃW"EQÕ™FÕ%6DŠâ(Óø«öŸÞmI<›LêªkÑ)×nr‘—qGí%Å«P(Þm€\�š\1'‡(C¤mõ,ácÄ@ý¥iRT8Äe§|J<I&VnEÕˆÕ1»^Ó$×¶··ÇÊŸþ9òá‡ôoÿí¿¥Ç? /_²ñ¶<ÙDÑBáhRJp%µHÓ˜ˆ; „ýö¤Ë#)2¼JNô²rOÉÔ>ˆæ½Ï§ðp4 ¢kX…e¥Ñ^»G­¢2·¡E¥’õõà&­ÍŠ?MI#ÜÖÎâOú{UKÃ%õÙd®àñúÌ¥wË*óùçÁ¸´L¤:tuüÅ‹L2kˆ<P¶ºµµåîÃV$ 6õéš/$|®˜]<'[;þ¹È˜%IOK§÷3ê· ¤«´>°¢R(ÿÍ­M×n{Õ´E«c~ëÐ3ºgùå«Wtxx@ýþ`"ïˆú–«h¿7·A Ýtõa³fa¸Œ¾l«i^¡P\´uQ(7ùJ–²?ŸM§2öÒ1ÌäÄ`¹•Û …B¡P(ŠË̘à†ÚO:á?1ÏjëËúj*Ù±i)­%)R4JƒÔÆ"ym+ù¢dãa“k8¥7œ^ù¸>Ãêm^µË­¼û*¹cÞe_(s&ýäŸÍ$¡ÆT¡ðcƒ@ÜlÝþLü— ûD!³:–äÑÛÁükñ¦%¤#k‡.ù>« ‰«/k¼ß':¦èº+.†k Ÿ– DµÀwÊu|¦”³\CÓþ n/½Œ]&j±}Š7 ¢ì%‡è†3Ü‹«×2ÏR âÄw(D ¬'ªÏ7Ì YhÜ¥D!úżÂUö{·µ©JÜò-ÈJRpáÕn‡@*±¡MEü²OÎÁ¥Ýi{•!—»}{—66nU×e²E—Ù[î`.»Á=ÇðÀ¸×häêÓà”ö÷©Yê]&þ¤‹YQvPMêöºLP�ùGîã?„°oîqm}¶¶·èøäÄ='4MýD¨Za ÷oa\ ñe%¼Åé·mv© ¬­ƒP×iN;ï~NÉî+H]P€»>s1EeìÖæ-Wo¶™ð³áΩ©f-q}'P±º�å*…B¡h‚ ÅANÌ™5:mp.w‘ÿ‚Hï¦aj¡ÒT( …B¡P\1Øm¨ÝrƈVº“*k@ª½ R›0Q¥£¶¿1±U¡äEŠºž¾p7ª]¦&9oãÁ¢áü*ž›Š&5šoŒfœñ²ºmÔÁvGäC'Å›†ö£¿;Âj‘ø~jºÖÉËYËbÀ„›ÒÊà„|Ì>½š¯šPp`ã.y¥~“—* ¡Ð¾‰"O$鸼–#òd„ºí”à~̆x*×]&P|ZTQ|$]od–ª[ã·I.M²+²™ššç7§½´é5Í1)Š› h@Ò±£1Ô”ÂS×ËÄÂÈ æ m‘JA)Yf„ø#Ä¢”øƒ}BA¼²•y:Š4‚xÊåÉÈ;HEp¯…8omnf*w>p/×^Ÿ|ò =zônß¾Ý~ÁõÜ0MsÃû.�s̃Áž?N¿ýíoéõ«×ÎÐÖ¡Âø‹(<ɽ}ïÁ{LšÚÙÝq£ï’kžÕ÷¾O»·wéãO>âg® xžV6Å €k®ÚîÙ—†­¢åÇZÕaé‚RÖ¡nNïnðÞðs:"©(ëƒk{ÁŸB¡PÜ4(ñG¡PÜH,*ß´¿‰ÔÓtn®´°L§B¡P( …âÊÀææš¼¿­/f›‡™CÍRÝ„ó.IÉâ‚`++¼âJ‘Î.Ûh—3);"[x0}ôæÞ? $—t ”–w|#à•r@ú±Á•7¾áäqa¥Ê— VX!ÏÖ)¨É­ôľbìbÃ6Š*=ñ‘4Uæ›âàT#á(]¬Rú<ÛIõ ’Ä,c]¯8DAÁ„bòÏ0ZD<ñ©jÇüª÷”å‚ö7!ÿPu_«0¡Ž› @Q¾ªáªs.=¦çÒ QêlBñvá¼í…xfÍAÎJ7ýLÕÍó¸RÕò¸V'ÈâH;M5Í¥’ÑÎÎ}ðø1m¬{5 ¨žÀð #ùúú»ªF7½W|~€„Ôáñ!ííïÑ«ýWôòõKÚ{½ÇîÊ@�¹j­»F÷ï¼G››\fìN nãŠf_Š«îɦ«ã °)Þ< =¬T~f<P >kÒÞ¯z‹Å¥Ãk…BqC¡Ä…Bqc1ÍÍ×´ïé�YÎO€ò¸ã 7IKU …B¡P(n8̤¥_lÍóöùf¯â½`òœô§…Ÿö;'íËVam$ÿÌKwÙü)–ÇÁÕ–kÈÃ4¥ž‹z>¸>^ɵ™ÐLæ¯æ2‹‰£´‰ìdlÞšºž®ž)6j•±üYK?+Ÿ±wïelWóâ”iãÐYеéFŸ*¿žô“ª9d÷.‹gÒriºÿR§s×eW ×+ TW Ps{{‡üP¹šÈ4‹@æá~ë›o¾á}<`bÌ2 Bµw%אּ!þ§OŸÖâÏß&£a.Vàš å & ï 5´Ûôäɺ}û6ÇYyÈÜAœ(&H,¦þm^ææ5Ó×ÝmH¿?èÓË—/éù«çô|ÿ)íïÑ­Ý êl¶©,J:=;¡½½3ºµ½A?üáéñƒ'ÑuˆSÆ,‘ÞU¿Æ–Mÿm/\tù/[<šþbéG2¶i<×,ÿ²ÇÏ^¡P(®JüQ(7fbÅkóÄrÓdgz~ºâ& #®¿Ò•-«¬ÌQ( …B¡P\C}Ú/L ñTùJ¢œ>{vÖä{Ø8næß%ÉÔ¥-¦†žó{fJ!=jÌCùGH uTå D©I"´k–üëÀy“µY]¹F4‘`.ÛÆcèœóÒòˆÝp…ˆòL žé²>ÆŽÆ4•¼ê¾ÓéÒúúmÜZÏ{ÜJƉވ+î¶8i¬‰j;ñ¾†ï5…–;· L/ì§ õ§få *Œ§a„EPÀ3žýäy–üøè]ú¶í?9ûP ¸-¸—qûŠTÕÒB,ªö1¸cãr¸þ‰±¸MÛÖpŽIÊߤ×ëË”Œ˜«Ó-¿u>­Ô­ Œ¦wïÞc÷ pËqæ Ø£Pi!†ø™˜ÖkiyrÕDä²\Lù®P(ÞÜÖw\[¿Îmˆ¸ë9ï\ Ú&¸vww©cr®² Mí~~ùù€âOÁ­ó ùñyG(—iý)7l÷ïßg·_0 íº8Ìë4]v§Š¼âÏÉÉ)ŸSxÆ¢x[»[®kàÞÏ­!uN[tF§nß&=|ü>|ô!)ÄÜ?Å[„eHt …BñA‰? …b.V¯29œN~¦áyƒñô¼œÔ#+n$ އCÞð]&Q±jeYßÞ …B¡P(Š‹†MþRâš'%p4Íô×¹÷oÔMû“bà6é¹ÍÆšYF™<Ï‹b¹n²¥”GЄ©ÊUˆZX¾ê7›šˆIHt!ðª#«ÍÞÏ6ÊÏ;WTNšêLCø 60Ƀ©S~jnƒLFšX&þŒ8²è¸mqR[¸»Üüù¬ø›ž§eó?q~<-'áMª¾”¥¥þÙ€ƒ7ÖoÑí;»æK$žD'-Œ%[ì¾£j3R"b–©k!]x)lwï¸8,Un¹æ.¡Ïê¢7�·Ûnƒ>_WJˆáPéIá™fÒŽi1ÙÆ×7ïîLTàvd­Ü Ÿ¢j'ßÉÄæ2'QBŠ¢,pí’¸ ¹,9ß­ÿl½ œ76nñX]®·( õéõë×¼Áˆ-D(É{òôQ3y'iÉÐto‘ù¹j…T(Þ6¬JlE[ƒ6J¾O Ó”V®œÖ”!ÞÈ÷&øWÊrù—xå="m±b9tÜ{*Lë´æïgQÒ¨Q«ÛbbêÎæ6‡Q( …B¡¸JhïC¡P̯ˆy2íè舿§S?·ÁG„Ág*» Ò± zóÕÊ9(_å,ƒg¬ÀÀ†ßí0ЧÃuœžžòwï¶¼ªü£P( …BqݨŒž´=à~[ýxeÜÏI;µþa0NÃÐ\Ž=ñÛ»)h±ëžr\)ip =U”þ¢ô+SåY®gå·Ä#[OSP߀¡[zÒ<¥$w�ñ4©�ÉÊqqË ñàÚS÷·iý÷4–ûÈÖžËV~.S»,f]†QßÖ”~j¤@Àâûe«Ð)mí¼¨„WšãË]7åÆG&ýØê òg¬éœ4îÚ?{å›ÁÐ$qÍTù GnxæÆ®C7ŽÝ¤[nìúðáû´³³;±ˆÀ3"íDˆ%Ô§Y×R_¨UøÏôxz;ê÷F5U›‘Žk‘¿³³SŽª7^¨¡j÷§j#Ók'P2fžlC‘×2>CB&RU¾ñ ñ'o¯˜˜SÔÇݳÆß^¥cƒÇëc*ÆñpSóüùsÚ{µç(ü6QÙgý{õYôySòBñ¶@Ú'ÌeB¹í ÚUl2§‰}h[dÎ0…(’Éw‰sÞ{QÀªeggüi¶H"³'¦ýà xg ¯`ç┾oÚÖJ¼:ÿ¹,üûJyL »r-Màûf"¶EÝ¢KV7† …B¡P(®JüQ(H ˆžœœ°_éßþö·Ñ4Ža0‰Õ ~ø!OȽxñ‚%s¿ýío³ïçó¤;‹Ü“îòIgLd"ß2@R‡(þ`Âad žäQš–…B¡P( ÅÅ}NeЫ0øC”@„øµ ôU…ðc÷­[·ØÕ¸>ƒþ0ÝÓ~£×DâŒl8†~rÚW•ðb¼ƒ½¬ØN HØ*Cþi$í´?ì‰þ|Q¬ôûýŠmÉÒ’þmJN û¸~!!!Åã¼Y¤'ÅÅƒËøÊ7¿g&Û×d l&ý$ê[¶îJ¹iÌ–ŸËÏ-ìbÇI9‘nÚqþþBåõü¬ÆÏ-Ú„ÛÞÚ¡íÍÛîYðÏ‘”žo8•q¢LŸ!Ír/«N *Ë Gþ¬ÊO63Q–þ³®V‹¼È==ñ‡om¸ö«Û¡Y€ÂÑ®ÍÆeT3J7´B JÛ½ŠÌ3ܽÐR•/i;¤ýˆFÓLñõÁrž°¥ ¿Õµ×QµeT»/h3éøè˜Jwm¢^Q©%éØ\¡P,Ìsþò—¿ä6å½÷Þc—VwîÜá>AhñýÆSß™ Î ¢-öìGºè“. K”»EùêÕ+n±0}ß&…ó·b3{mLè^hË“˜MaÝ»×»Ï<><¡ã³ãêhQÒ`اþÉÆ÷>,gçw2…,øyó?á’Á5}MÿNt„¬P(n*”ø£P(!@LâabƒÑßüæ7<x©“ƒ2Ù_Ïó/ÿò/<Æ€þ§Ó Ùt@)ƒÍ¦‰>!‰ñ“¯¨"½<lº²Y y’‰L„“}éJl™@E:’OBÒü¦+²ó‰m…B¡P( Åå£ê»Ùà cq4¬cÅ­Ò£ë„ (åˆ[(Mxb‹ D 6YÖÖÖáØõ{׆lº7|û Gô‡O8®­-o@ýË®3º{ÉV8‘÷%a”FßóððГ ¶·# ÉÇÓe"‚ø±y@ßoÝÚd⎋'âõù_ãøúÑB’•è>ÿÇ|½ í#¬ÐwGzB„4ÑGžF R,‡NÛ¸±Œ¡nǰ;%®³¦RÀÒÔÈÕ¿ÑÐÜÆl$긣­¥ÒS!‚Å…ɸHöc“±Ír¥ÕH î©f-~H régMMꚆRRs‘ ®ßýÑ˵=j·Ü³p6r÷Æ=CÝžûìpÙx²ÌÈÝ3B“2 ©5¡ø3+ÅêùGÛ5œ¹û:âßBúñßM¶ñÞP~~a)%å CaìRà4øE/ãÚ9ݤ}’ú"û+PéÉ?$õóz¤ŒF®lƒa\x¢WÙX,Bú)™„4.mˆ{vÛb#Q¨狺/6š@üIúhs¥P(…¨œƒàò7úgè¡ß„öîñnEÿ ý­iq4‘€R¥qy7‹’Ò@ŸPW‚X´,F _ºöwˆ—ˆyÅi/ó<6åW±(\ï¬Ý¢õ[ë´5ؤ³a¿"£ogÜ;ÛWnõ6éÎö]ê¶—WÃW( …B¡8”ø£P(!«é0©ˆ/»_~ù%¿wï“0!¹»»Ë9ŽIÃÏ>ûŒ<xP[éœN,ÊJJÙ'¤ R1زݘˆè;ßù¯¸IÝäfqk�4M8cÀ„Ä€ý"‹k%£Ômƒ¬¤Ð,w …B¡P(Š‹E¥Œ_e$ï0©î Œw;ã÷—5EcüqOÏ4¼JÄ:I,ml¬s?×1½^×õOéóÏ?çóîß¿G››[Áï•0Äm”ƒ@VÇ1q!D 5!�}[Û½ázTSò‚;ŒE/_¾äïwîÜå>7Ž¡?¥M�|£Ä¥­ßEÕùAø?üá|}k}°׎ó? ObœB>Aú#’ôµÏ»Öº†Þ3tg·Ë º7® “)˜¬u6¢ýÃ1½ÞïÓëÑ!Ž,•fÇÙŠJ;‹�÷÷FK¤#jR<Þ D/N?¨œ‚ìõÍ7ß°á17 ¦ÆAÏE1µ|äÄžô™Ë]ØùèZ`½TMP‹ñn8ƒíí¡¾èÙÓ—\n ¦cM›T<Q°ÈˆOóîIY+C¨ýظì߆òHãÈ]T™ì:ÊXüB„Ä}˼2u|ã”Â8<WQªˆAå±iœ>ÿe ïÔÈBÖfšGµ“|JÇÐvfÞ“S'ÈgžØˆ>I4B ª’B¡PLÞ˜ãÄ;R”wÐ'Â{ïHìbvŠi„âøâ‹/xnqàý,êè{{{Ü÷Â|d®$´(p.ܹ<"-ÄóèÑ£8_мˆ ±iätíÛ-îomïðÂ;®??’>”ñïKy/ö:k´åÆ …B¡P(W %þ(ŠFÈ@Pä»1àÅÀ4] ,F ‘Õ†ƒï0(HX‰«O`èÀw,Ä=‚¸ÀÀÄŸ¯¿þ:’Œ`Ì@0àF\ˆaa,Áo¨aË+7¨Å„7ò…´Åe‚+W â%¿,î6œxñû10Ç9؇<¤«²uuŒB¡P( ÅÕB1¼‘Û–‹VÁnn:í¦Ã±<öׂÑߨ¦j…5ÈÂw;¸kâO/¨kø€ø ‚PªÀáI-6²Àè’ªQˆW)c_ÒdzQ#é�Ò¿wdè—"]éÿ²r\ò爼ñ_”D­ÇÃA4ø çH°×�ý~ô¹d´ß{.@égw«C1Å&­uÝ4LÙ'[z²×ñ騇œÑÈý>;Æêý’F¦#O¶Y´ôS×oBFÃ=æ:êKJü‘ú8 ¹{0QÊ 2r\ê®Ôw>6O¬¹žºè-1ßÈB¿?dH}³ ¹«/öÈ•l*z©bÐu=[ÓÌÌRuZdï'! ÍHß45 ¦ö¨«ñºïvvþ …b¤O"4ÞYââ s•èOὊãóH–Ó0áz3©EqOúwÒ?Ìó6S¥'°Zó0¢üH´)^m3Wá>¯‡m-8ÿØø(ðÏ.§Þ¨P( …Bq^(ñG¡PL@€2q+Sh°DLc�)Æ…T ƒ×§OŸ²l{ÒÉ9(ýà?à0ÿõ¿þW&ø .x0ÀÆ~(á<}0ØÆ�«Qõ«_±+p°a?Œ¿ûÝï¢ÿjÄñé§Ÿ²Ñ+¤a´ÀBâ‰è£>b"Oªh$îpXÑøPHçÇ?þ1Ÿƒ¸1xÎ'JsèàY¡P( …ââ!dë&ÑÇ%Œ1-ÚXßpý¾ êu{¼òÆtÅNNN¹ßˆmÐF…ÉTÕBîèÿ�å„Oû®'J=Bw´€¸ç¿A\-Iß9%!‰Ê!„œž“$ä7âc TGäœÔý„ä¿%¯B8£úÓÈ?ÎCô­SeüF\ á}e\CîRw^ÿW1(K(Ga|‚pý5<±;^@×o®þœö-«¨žœõÉÝ]V§árÏÔvš ÷Ÿ]…â •P4íaÕ?Y_¿Q'ÔQN•:Ú¨��²Er-©BŒäyI‰Gi|cvu2v XÄkÂS^¿›°¼*BÝÕW}–­kzžš ÑÓŽ-cö®áfÓxâ13±gF¼EŒ_>cž¬Ë¶M …b5àýüÁDÞxŸ¡O)Äì_i{‰ó?~'úXB¬Fܘ›ä¾;–»ÜŒÚì»�®¡ „¾›¤kW°À<‚¯bj¯(yÓdïÐ,°Möë»I¡P( ÅUC‰? …béj|˜®´KW#K8L2c CÆ?ýÓ?1±N„Ç>Lfc`‹+$oA°l ®q~šüƤ4>ÿô§?qL`#ßÿþ÷l¬€JLr#þ?þñœ'ìUño-n ˆy•­;Žô…ÂVßàš„ð„ý£à7[Ê!ŸUCˆB¡P( Åå@úž^±*"–WÜ¢Ïu1¨Àˆâû¦í¨h3C?pûŒ�»Yr}É‘;îÉAetù#}[¸ÔA¿aZ-O¤=¿ÛõŠ—~Ŷ¨ÿ˜Z>¥Ÿ,d p„üã㱬V4iHž×âÓqÚGG‡‘t„ý^…¨àxD­GŒB¹‘HV•KxQîÄyâÞ å ý|Q¾Ìݽ¹¼_ñ©·ÝŸnËÐZ§E=·ÜTL9*™TƒêÜ),µÝðÇ¡–ûAÁ$zBšOú‘±‰Ãp…œÆ«þòŠ„Çý—:–»jºTWÒñ_åk<Aü‰„"¸¼—צn#®ÊØ�gL4’º>™Ïa%üÔ™yô˜ËòÏòr‹]¼Ë²åˆ?GâŒÒl4áÆ‹‹Ód6ýV(ŠI }Á{ 䙘ÇÄœ¡~ð~[ò®hŠHyp\¾7)þä®8S@ùr­½ÞØÂÍR(Ê];*–™ûKß8 …B¡P(®JüQ(C‡Lìʪ` v1(… ÎÇyà 7X{7ÞÇ4¾c�ùìÙ³¨„ó¡âƒ f¸â™ùo}ë[ô£ýˆã‘se5¬¸×†Ii¨ἿüË¿äôßÿýß³‘â³Ï>ãU.ˆÄ(Á°"òöX¹ƒø$¨!/P’¼ôóüùsóñdz;2q'†ü"Yµ=m…¤Jå* …B¡P\<@ÆñdQñbé÷Ô?ð'ú“BþAŸ}ºn§Ë$!ô÷¾úê«HºDq虜õ‡TŽm ¶œ¦­€üò ÒzùrÏs]Ž™ÐPFnFN*H ¡i‹2¥„gô9…°!‹Ð¯Fž„d!D ÷d¨fWBþò;úÚ¹ê|džã’îÛ�_¶‹kÍ\†1̸úaFjûÔµ#ºÕquÌÕÉrd]½ëÓÀž©rDvtæÃ‡‹jç«aœ‘×1Üg!ãà>b,Æ÷9#q 1GG䯴>ùô„9W>©ª•OE (Ž%ÇîY*Íuñ\*ÒR²kUÏbc½i¤»@˜éq^”bÒÅW—[>™WÇõ©1 ³ˆ?Mßå4‰]&OÀªV¡PÌ@Þ.bž ñ®2k‘&%Þ‹*Ä!NÄÌ"IÿM¾7ç}5U‰OÉ? …B¡P(o”ø£P(&hÓI[l�ƒ" «ø ¤«‚Å•ˆ8ø òŒÈÙâ \q á0ȱ$^dEŒ¬†–teE Â>zô(ºf€QBöã; øñûaðAÜ0úàÄ |F\$ˆ;q퀼""ë+×—´S’Oþ]ÊM¡P( …Bq¨ú˜ÕgÉîµÐôD¨ïxEgDíÇ“ Dbc_.%J°Ú Ç3bâ~ ¹!5æÈ9¢¨2W!¥©H\lI?Ò+µ£&!5‰+¦Á`ؘŽs MÉG¾ýÝôú¥¿>³\ŸôÃuEøÅ€LOéõ‹S²®žoti­ãÆNã!»ýGCÚÛÓÉÑ)‡î~–îþS]!ߊPO�Q�òMnlW[B¢¬§c©oé˜fB§A±''ÊïÔM^Ü®™tás0©¢Ϩç«é<Uj’ÈR£ÑrÄŸ’. Ó®iÚs>¿ *¢¸úòd«Ù§,¸s~^D@iâ|+ !à ñY\m5½sH?«)Nć í'æE1ż>”­Ó<È9˜×”¼b¾ïþô=[ðg±tk‡¾ÈðâVv™óôkv¹Úv+Éû´÷Kû-B®BZª½†ë΢Z¤:ïþ) ÅÕb9bÿä¦P(ç‡ Å\¤«[Rrod0*Deð�>­AÌ*gPàÁypÉ…A4\xaå5V=#NÄpbt‚ŽD�ùéB½ñI^d£|B7uS&Dœƒxâi`%Ü‘áû´A¥ªý( …B¡P\Ä`3yÿ³•[+Ü%ÁøqÖ?£VѪõÛ-Q!)j®Ž„Än Ü„¡o;ŽnR‚…¸0‚„¤+Äðœ�ÔdHjRäIÃ`Ÿô}Ós|üU¼ç%á4)‰‹(ľø´UåŠÕÐwc”gÏ^ÒñÞ™+ãuÛÝZ·¬ìsr2¦ÓaA}Ó¥þˆ©¬ëÝcÙ2Ö‘ÒÚHÐĈߨ—²¨"UáÉëY‘ÕK© ² "'ÆEòž¿rÀŸiÝ—0€ü–x©Ïö'±Eñi‘,4-êX ’˜YñxSø‹g.{msÃÇì]ÞXXÇÙ …â<ÀûsŽ£þ€çåÝ%}ÁYn±š ‹E!ï (&¢¯(ó™óúkMdÚôXJV•JôY¥oËÄÜß.ùšE¼ þ`Ž$ù&wdM@ßó·ÇnÞ×Ù[ëѺ;_úÌÓH<è¿ã:€µžûÔjT4œ…¶K{}}Ë£Óië;B¡PÜ,CÞ±ž¹.›B¡P\ ”ø£P(&0Äð2ƒc‚ €ã,b²Š:päƒÏ'OžðàÄl˜˜Æêk¸ à.¹0p7aH鈚¤é?Ω]¤!Òò~øaTB~0Æ~‹ìÃqz$m j&DZû�¤ wc²²Z”ƒp?KÞ7…8 …B¡P(.LN`w[Ãj§2:V'®]bÔñKÁÝ÷3Ñÿƒë¯v»ÃûZ­6!šNgRÐßDß}Fôïü9EM2U!’ß)ÙBHÓÜ)äF‰/Ý—„¦‹@ME&SëLìK´»<¸ÄBQGÎ x4¤c{êê×)µ\ÝÝè¹2vÇ\õ¢uˆº•®N–e‡ÆÖÕ=ëgqÅßqS,„7Qj’û(ÇS5VVå)Ѝ¢ÚDÐe©”'cŸÑpDc· Ãq„RŒ$?¢F û8ÎòâÜT]òg ÇEì.+ºrY*‰UŸóPEÓŸD¹fyÅ!U÷Q(+à¼ýy'ʼé" BÓÒn"‹Ë{XúeùÆçŒÍÒïØe¯;¾û]ùå‹LžB?¹ëúÆkk®=…ø#} ô­ý2á7ø&1µÚL¾7´8ñ Ý#ôÉÑŸA™ß¸÷µB¡xG±¼ß”ü£P(.JüQ(ƒG: ò \l‰ÎÓ§O£;�q„p ˆ=ˆýä'?á¡Ä ÅlPÏÁ' )/_¾Œcy„ØÒA˜T‘ñã;Œ5BBúó?ÿszÿý÷é›o¾‰®½ CˆÄ"œsçÎèn ñ€$ùAZ¸Ão|‡Va ‰}>äk’µ‹ ,›äã …B¡P(«"_ —M®Õ¼èˆ%º2A{oG1ý<^­ìú¬0<”%TR*¢Ž¡¿¤„ ôq®ÒGL•SÄ•Â4âÏBWmϧö‘’¦õKSÅ–Ôhu#IW€œ³Ô¹ªj8Õ™©O[T@ɧåÊõqT²™ËÙë¨tÇK»N¶ly–Å4MÇ=¬ 5¹"âH]”ïi½–ñ Æ@Øä¾¶ƒLÎM¯Q”\£BOFþbÑÀm¢†%*Mu+u»Õ±VP#¸jä÷û<÷ÿ]FtõEÓV²³ëX[¡PÌÞ˜C¼½½çqW¹ æ 1‰ï<à¸Wu?5ÍÕâ0'Ù¹ü{J;âÚ1:üÞwó·ìºÔõkqÝœ>ú0äÞŠüƒ¼ ‘Þ»4³.½®»›<׺¾¶îB¶h™v¯Y€ªP( …B¡˜„ ÅÒUË")5œO?ý”?ÓU, ê`À…ÁÜ·¿ým4Þ½{7*éÀÏ5|QcÀ‡ýÜD„+øŽ#”x@âqÀÀQ„Q¿'6äˆFøD1ðDÄbL„§Ê>·dh1 ŽïâRL0éëéH®OˆC¢ú“–B¡P( …⪑¯¨Ë\ç€uQ3W}WqU$®Â<1ý;o¨HWQ ‘!%Ä‹²‰‹�1lùAøÎï:+»¾‘“xšŒLÓV«k¿w „êig¶ õ¨�Õ'¬õ(ÜWkÜØÄ/m‹g ÙCX“¢”uDi'WŸ²žñFeR÷SÈ9ù}¯ÕcÕ©ä{ú™ÆÉ?ö]s7OófYMœ‹×йX4(î˜Ù¡íJM™| ÅjùAÌbÎQÈ.Ë(ôL‹s‡x׉ByúM?Wsª�â—ùÒîo,ÿnÀ¼'æH‘o!7æÒÚ„ÍTˆ|è‘ë{ÀÅ.ú ±¯Í´æŠø3ìŒ8£~®ií쀷N»C ?7)þ4öCk´R©'Å;ô}ÏÎú±þÞ…ê ìâ·3ÖSØå‚χ³O»5o –mˆì9+ Å|(ñG¡PL@Œ"/~ª1ˆÍWwb?ÍÐAGÈ5ø)œ ™rïƒÙ»ê‚‚È6è´ã7ÎÃ1Iuqÿ…øŸ'+±AôÁ€qˆÑEŽƒ�„¨ø¿cˆ<Bj’ iœ+_œDî^®GÊ"5þ¤ƒ_…B¡P( ÅÍ„tRUo8°¡¿×¦Â´™�$á¥ß(®º°RY\1qŠ{ú¤¢úƒOqqWA«LÎSü™FؘEz—peÊ/ÖÎ4�0!(¸dC^d¬"yÃ1ÔGÔ9|âXtÝETsÝ•Þ[¹> ›ÛRW_ ïL[�‘~bQM1Šn–«¯e°Z½ŸGÔ[–Èg%3t#±’„B¡P¼ù9Hùþ¦ UèCVÜ”ù¾HhË…ôúìÚËÍçnïl¹wýˆÃÁïé©›ûùØÂ ¯Ýa"Oí½Ï$`ÌÁÂEi‡Uºô-+æÄc í¯äÄçúëØÇ ìÚè‚1/ÂóÚüçÍ.ßM‡ùs^pH?ðB0»ù}gx½÷šþû?üwîÿþÍÏ~Æ^�¦Æ7g8Õt{ÎSÄs½7½ã÷ÿ¦_ÿüüä‹‘– ßt®¥åãT(ŠI(ñG¡PL w[�`€iÜ&äáòC¨5M” ¡h„4 ð4Í/ò½Ë�q"Ýt-ýg7„WòB¡P( Åå½ °Q H\_Y ^ø7L^ÝÄ6Á�ÑjÔ*ÚÄÝöa-ñd±3Yð÷V2Ï8€”à +‹åSò‰¸}ŸÑ¯b–>䄉2ZÅi‘I¼iÝJcÒxVCNøH‰@9égÚyŠPÙÌÂoà >%IÙ×'u­Á±–¯ÃäÍ`!†ÚgêbKˆ?i=E},¡`…ÏPWólÉØ.'èä†5ûpO”®RL«O¬7ì±ì:ëO^ž&;fgü>Oz)Îe6 QÞÐgÐJ%|oíDPc["CáMc˜ô×<‰¢ùq(Š7x§Â­>YP(s–)Q&EJÏ‘¾Ówí¼9Æeàãs•ƇþˆÀÒ7ò{:×;íš²âW¿X²KwïÜáOQ¸1^HñE"}'ö§Ó¾3Ðjw.æ‚‹°‹NÛQñ'퓦y͉?X´ µ çŸÞx‚÷˜ï©Ü;ÔA) )o„k·ý‚Úv¸·odá…ôs¥P§¡°uŸçÏ_ø×³g»g·Ö‹yß4uKÓÉÚ,Æ“ž¨W-jF]9Ïiñn«ÍÇ߯ú ‹j|Ûк!×yÒÏ,ÛåU(Š)PâB¡¸rœwåìe­¼ÍW¼æ“ÖMÞéy5ŒB¡P( Å“wÆEV÷ÚHò“~ÒW³4¶c6â¶[P¬ìÒÚZZ¦‰9|Ž)8 Ü{Y>§ô«—©ÞÇL]|åFï"¬RŽÄêS™ˆ­ÎKû’õ+šNð™nö,à*Æ£içL#õ¿ËXfüÁ!’¢µ ¬$b>éË•¹„WgLtîEüÁ‡÷dÄ|ég «õ­m\T+“ä¹âOnœ“cÞmÅŠ8K ªIQêæ ¥v˜JD' q~j]š\3hågÉÞÔrÆÇy{—Ë—*³äõ›ìsâÏŒzkóp&(TB¡x[pxxH¿ûÝïèÕ«Wü.µ>úè£èZK.æ†æ&p;å} ˆhŠ/G®®7Ÿ{ï†üŽ—]�ÒØßßg¢Èذh2oë*RA9—Ì‹ ñ¼÷à=º;¾û KEƒ¼)¡Nü©õŸ å±I» }‹Ûø¼_"Ÿ©‹RÙ×鴩箟oÉDŽããcS l»ÝŽ«ƒÛ\î�ú€_ý”lnnÑÖæ&/¶ívß.¢®åÐïûrÀxn{{‹I?¿úÕÿEÏŸ?÷°nëúúÚ:ýèG?b/ð ð¶�u¿ßð3ŽëÙ÷‹Z°ÿä䔎\Û…þ?/ŠÞØx+ëƒoϸÐclÿ6^§B¡P\$”ø£P(MF…B¡P( Åõ¢( ¯l%ªˆ5+áI<L¸ñ¤­`|À*Xïb¶Ë†ˆ1¯ µQ9H ¿~Ó&øwÚôÇˉ}²¿⬈C)ldä´‚i–ï<Ž«#ÝL[±®XuòWü©aBÚ>p%ßC Ф §Çâþkj¾²ºÜ¤ø“âOa*ªÃ¢äž›WwÌÌývECÿ™¥ô5mÿ<¼YT“É«<oþW!ÿ,·g‘èø907­n+ŠU ï)¼;Aª899‰*>/^¼`â:0ªC}Uñ\éGÒU¡Uò÷êÐõ  v2†ßïíÄëAþÅE(ö‹kÚ e¾ˆyDßÚűÙiG¢p:ùÓ»ìª+øpÔ Ù×wvýe#m(~ZžˆŸõK¤ëÜÔ/ºITü¸¯F!t˜0ôY‘Ä:Kǃú!*JÕ¾!a^¿~M{{¯XQ$¡SW_õuºs÷.ml¬ß`öâkÊ«¨b~þG9`C}_ëõ¨åÊzss“Þ{ï=~FgyxÓ€ëÆ}FÀ³Œçw}}ÍÕ½zµG‡‡UØ2¤(„¹ËõaƒÞørq9xe1ÞXõh8vcü»Ú­6 †&>",Êaš—ˆócÙþ¼™üU-ö¬ˆB¡PL Å;|<Ÿôf)ý¨AD¡P( …âò�¢Nj°HgŪ>šWÕI]‰+®q9žCj)ãùéþ WIç˜L_Uå¢&ðUñÑ~íl\Vÿn|€³lºùx&_Ø0MM`RÑ”ÿN¬Ä_!¨Õ™ìPn–ô1S(Š›(ªÜ»wÉ ý€ÄñÍ7ßð2ŒÇBªI±hßJ*þ ¾yáÓ÷²mPüôû¬R¢Œü @@¥H‚<Â�® Ç›Ò7`†I4“jh^ḛ́[-,BÎøoÁ$üTu†k÷Û¶Ò‹¨7è H_D¦.»Líƒß™¥WÑÄ>1üß$‚ » Ú‡ ª×ôòÕK®OŸ|ò‰»Ç»´ „|æÝ¡&º|þùçLüWGP©úÚmüùŽþìg?£'>!ß|òOºÝ?‹â¾ ?>¤Û»»\æX$‚ºñ¶Aže!êàóÅ_Ðþë}nGzÈÊeÿò;Ú¼u‹þæ_ýÍ[CüÁýƽGS’.p…¬ã#O@¸ƒ+¸_üâL¼ûÙßüŒ?~L—†¥9SIX´Eh3‹IB¡PœJüQ(—ŽtI:�YduIS\Mß/ MùI'¸WɳB¡P( …bYTý<¿*º þÃN aC¨ ¿"îÁê“ju7\¹‘e1X^­¼è=íO*Ó‹.8ŽH’RÂâ\PˆB¡¸<ˆ\y7:-VþºBŒ‘°ÓâXT51'‚ÏËÛ¬4X[.ÝÓ0ø "„„I‰JÑ…mzn;==årÀoÖEñH\í…uçŒÜ!ò´ˆJëÊÍ2‰U mEdaRJ †{q/ÆÎyY)hB)éëGÁ¥™C·×¥®»_­¨øsï‡PŽ/ž¿ _ÿúŸèË/¿d¥È@ÆK¢jÜ1É!q›& mAõæøøˆ^¼xÉĨ—€ †k³+(¯à On›[&sŠkÑÕr˜×lH�÷Z\ÐáDâ:ñ×®yÛ•1Ènâ m4ÒBY1sŽÏÏâbhp+;dÆA<“¨¢v㕼úÜ>¡.€ø’T9ñl²k0w=„öìÅÜ„ûŸÃ«Úä;y7pîûs÷ì½Þ{ÍíÚ´ãGGGü{<îÑÙéY½.ãú§\ã¼sQ·AjÌç%´Ï«P(.JüQ(8ï¤ð2„œó’w.‚ü3Œ4¤4­œÎ›'5) …B¡x·!rמLcâ.¿"ØLHk7÷½,/,¶~1]£’c:¹ÖÜÏ[¬_¶8éGñvàò•?3µ)v¶úTp“k¯&L]da§Ówšž•‰øu»µ‹®?—_// 3WL›ìS¡P(.L"ØÞfÃ9ÚQ6 œƒßâ:6%Ò¦~äX2Ä패R.ƒ<|¯Û£÷îßç|">äUÔ1q= 20ˆcNü]”D†_NÖFÒ”3 "‚0P?‚A]Ê ŒN·EE+qÝÅÄŸž;ç4†G:p¿Ã®ÈzmbÑ$S’ Ê¡K­Â绨©qN™œ#?ò×ÀÎöŽ»?›|mw_¼"] ØÕh̤Ÿ¿ýÛ¿¥ßüæ7\W>ûì3zøð!m¬oxÒÕ<#ñ•¬b‚û‚ë•ò–?pÍ 8ì¸{¼½¹Åeò—-PWL|™‰†ùs”®®]ÈM²ßAøYsÏ’'€ŒiQÌh¹hâË<Ï vF�¯ôãÉ](qe âw掹:±æ¾£ÞÁÝ>E- $´æLMI– >«zÀÊà]½A½lÝ1ps%¬W/_q½¶mÍ÷¾÷=n³Ëá®_æ+–9¯ ||tÂÏ»B¡P\”ø£P(®M«ZV%Èœ÷üix[åP …B¡P(ÞXµïê¨`Äâ}¶t&®îâ¨Nþ™\½B&I ÓŠ‹GBX 䟫À¼glÑ ÅâX„ü£P(‹T!'…fæ+ -0< qhÚ;T ÷Mñ4Aâο ŠVA.ŸM©å×Ó”o(NùGòŸ¦ƒ9\‰aÈPL ×Á mCÝžqiµƒ›4m'Ç'ôûÏÿ@ß|óÌÅi˜�ãUp6¨Ó%—Þ€C>ˆ ·D%ä9%° Ñ„Pv<®Úˆì¹÷Èß`èó’ò‰rBÝi·[KÇ篫àû".áʤ”>;;Ûtûö.mlÜ¢»wîr¸HÜz îšQBBËÉm^Qim.±æM†o/àzÐDWÖ–‘ø„òXë­±òÑö6Êcvw½{9yVßÀ}[Q´c[ ¸ ø6 ×Ë͵?LLìt¯¦fJ:5…)(¾[ÒD …⢡Ä…BñÆá² :³â×Im…B¡P(Š7Óúy%êŽK±�.Ja¥©^^Fý›EØÉóWþòR B˜ÚoÌžŠEǵÚ) ÅÍ?‚{&q bƲsŠÓö áAÒ’ïO†§¥ )ñ.¢@âZ ”E�1¢°r¾ôÑGLhÙ�¤çÏŸ;#ü¶w6èÎÝ]gl¿ãŽo¹ŒvèÙÓWôå—Oé7ÿô9Gݹ}Ÿºí;Ôëvøœ³þ^ïÓëý=Ú?xÅ.±>þøcV±C=òˆüTƒï0äƒü‚òE~@|ÀÆj:×Dxº{~än”VþÕ¿úWôñ¬ôóá‡OèãO>arÎ2®¾â.wÔ–€ÍMï~N\>Ô€û€òh»ýõ…± ”Ã+ÞœÇÕ® .­�Vxê´£«']Ö×ÖçEÑœ•7ÄÕ—�ÏžE %•³åž ÷\À^k‘úðÝÿ¸>QC9€(ˆgocc#º€»wÿžwÖ*÷fáôÎýY 6[U$Oâj‘’ Åe@‰? …BÑ€&…"…B¡P( ÅÕWM0j´ÝÖ¥Â}zåŸÅÒecIŸJ;)§÷óêÆYFli~wP)‹f't+Ƶ�‘í¢TU¯ŠÄôæ`škÂeÊÄÐ2&©Uîáì[tžû7ϹÈñ‹Ä‚ÆQ…BñÖ@ˆ9 ¬À 2 pž÷â„qÁ�‚H â^f‘÷Þ4·²¢@ BÈ8øÿ¸yÂÆFm2+µf Ô nq…k€º” Ep !]mp}PYÁ†k‡Ð`اîÚƒðþðÊœdZ¬òsv:¤£CW6Ãõ:÷{Ì›i Ý5 ݽÐÁþ1={þÂí;¬T‚tÄå®ùC‹"“ä á¢QߘkºA™|úé§œŸ0áÄcŠ•âó.¿*Å!;a¹A\æ-~ŸyrÚ ~WáIp£ø½(Ü3Õër× ä·TÝëmöd—ƒ(a¡-Àó†ç$ ¸�¼Ä\,p\TÚ@,¹}ôî×ÐnÛÄ5¢’} ÅåA‰? …âÊñ¦uDÕ˜B¡P( ÅÕ}0L”µ[ënÛu“ekKOoc:m<>£Áè5Šƒ&ƒLåžÁ„ß6 kiUƒ±ÉßnœWù§¦¼wVŠð²`tºbÕ$i'WÞi:gÙ|¯:.b7eJþYy‘Éïúm0S~W;§Ý¶*~›}6…›uÿæwì"Äž«"ÿèØ^¡x×�BH,£þ€•T`(¤Ÿ¹ì»Í3FÑ~ƒ ¼AÚÇÌßß äˆâ—@üà~qpw„w+÷k—$Eñ�q@\jaCÙàJ@BjùæóÏ?çkþÖ·¾Å×úòåK—Ï1}ôÑœ¯~ßõ±Çhï7œ±Û²ª;wî0ñFyÄâ•iõ]<žÌ„æqž£êH.¸Fqõ„´ð×/Ê?HÇYýãútÇ.ïýϮջêêºkò×c‘j.²ê²ÕááQü·f¢ø‚û޲`¬záW¬x33ž½ƒƒ}zýzŸ¿ïîî»gkëàËa¸´«¯y ;­x3/v 888Œ×½¿À¤| f¹õkÎTóîk¹ÿK$€gBž´[í „%í8Ú¸DÛµJz‹]ÿâÄŸAìò{ÆDH”à±Ó)™ü @[¡P(—%þ( …B¡P( …âÆA&ò ôcK¬ ^qøjÛÔ*:îË0XÄ òÀo!‰}Q¨1©]8(9&È?iµY€s& �•´=%u¹Nêt~¼"¿åy²µüèˆU0Mù§ |�ã& Xq##m–ÜÃÔà!Æ@1<#,>Ù%ŒÄ!¬C¼·(IH7+>½…¬wç8¾H}Ò:§P(.ù{o•sb5yÿÊþEâÊ¿§í{Ú.çkÁYC´Bþó߈OÞ’.Þx'!/ø¥Ø‡°Bº1Le.ÍH«IöLPílµ Z[ïÑÆÆ:“@´Oû&Ò?Á>!SíììðUQù˜¥…w%×…rÁµ´Zm_~…¾¯ŠËÚ€N·Ã!kÖ–$@-ˆå Qþȸ$ê»nùÙÙˆŽŽX©©ãÚÔnŠM 3÷“:úÒ…BqQPâB¡P( …B¡P(n$˜œSŽ©zLãQŸVA»]ÒÚ-Ãä1„c¥ >±š‡ø `EeºRPV…çyšÜ5L;¦P4Õü-ä ÃxÑ”Œ “û`|B=—z++øÅE‚?R5ôxž7,yaa>Ms6SY(üSLGZ~·oߦŸþô§ôðáCþ …„gÏž±[¬tFû$ê ¸¸×pm€UÏ@y�uaa0}ÿý÷ÙXŠ6¿Ǿùæ›7TPwÄ¥ˆ(dœ²»m¾ Å› ¼ûÐÞÞÞáþ^7¸‚‰.³–$ÎÈûm$ÚQ�.žwßyH²ˆJ;OŸ>åßï½÷ÇŸ’˜“kË¥­Åâö ï´õøŽwCJ`e!¼o ØóýïŸîÝ»I¡ á GFìºkw÷mÞÚ&cñšÅ{·¼p}÷6ï×÷¾µAÔ‚;°Ž‹gÃ¥S:ƒøm¾\ÒÁ½b>ò",ÒÂ;Ÿi?‡Ë`5oZ&Û²µÞú¼÷º5åÐ…Ðe¼µåÇ%pí…{ƒûììÔ]}-ݽºbÅ›¹ù›‘�Êaww‡¿o»g$1)‡íí-Z_[ŸEsV®XñfÖùvÈQ§Dé÷?*üXâgb)ÅŸ7èþçÀó~tä•°Pݰh‡Ëaw›¡æbÉëŸb^Ö»=7Ö²®¯þò˜ž?{A'Ç}*ì6ÝZ_sméµÚ˜ãxI¥‹¨4‹Õ…B¡XJüQ( …B¡P( Ń6°bn0<£A?R°¥+žM¥ÌSwåT{ waMÁÆk¬¸Ã=T0ð ã&Ñq.âÃ÷T1EV=ËïtC:âîA”8€tÕò2ŠAŠ·]7±»¹æêU¯Å“Ô¬ÎBB¨qõ+B‡DgîŒoá«Gõ-¬ü'O¼™·¢_\Lˆ q×!ê1ŽÉ~=0ŽONgfµa5ÿüzÜhè´Q2QݽÇ‘žbë¿Í´psP;ÿ†AÊ÷mÒ‡~HŸ|ò ÷ Fkiqϰ÷´W8ŽºƒûŽs=zÄFT´M0Âpˆ0ÒÖá7Ú,¤‡¶ ñ >œƒãØ_|ñ…3ܾdòÛ …âMƒ¼ÑÖÁP.Šj«¨ý¤@›*yTж –!ÈÎÊ÷þ¾wu$Š7à—3-w@÷Z²/w'†0ÒW \|4wä}ø½SZÞJtØ¡D¨út:^qŸLÒ1¾o^–ã¨b‡>9¶ÔåšôçYÑýÃð^½“û&ýo ™kz±çª‰U?i‰ÒHüÁÃ&ß«tdüQ¦åðFÊH:–2©ÊÁÆrxÛ‰?é=OÇ ˆ¢>ÌÃLü™xDf É$õá<é-÷8Ím­›{hƒàƒÉ‡5GTö{4ê·ÙM`»7 Û*¹ðF …BqqPâB¡P( …B¡P(ndå±çïŒÜ‡×Ãé§ÅRÙ]êöÚÔnµÝ>bCŒ0PÇ#&L0i§Ó *'~bP2 Š#†!p.Œ¢œ‚ÉEQBxA·GD-†(fÀðˆ1" T×Hï.@úùîƒ=ºïêÜíÛÎpÕ Æ _GNúD/Ž úæù!ýñOG´?8£Òl¸IàvPÜ¡ÚDõ´º„g2ÔÕtÕ<Ò@]Å„Cý…±R”c�™0OU­ø¹áþÏ,CæT…[¹‹abµÏÜMþ6 áæNòãæÍ®§.]ð)äÜG²pqßð†WÜ·_ÿú×Ü.ýà? û÷ïóy/^¼àã¸×Ož<áý¨øýüùsnŸRc*Ú>¨ ááŠHa¾þúëè › ÅÛŠUûhB(’ïNþŽ|¿†Â’ÙOÝzaCûþúõkîÏâ�(ú âBä (¡¯‹w£ Ušµu¯ÀƒsÏΆ®3Ñsï®±{¿Ü¡ÇO†dÇ]ÚXß⸎]?¹8¡Ó³CŽëð*v'î×ãtðÎ缫äUJiÿDú.¦U\i;M ä“ñпQ&‹ÔæHë?÷÷ø~�/_nñ{ZfÀÚšo¬Ì¸bâËL̸w¸f)ÔI”ƒÕ€¨T-Ysû‹ÙïóÖ¬yù³ \ÀÁÁaTtÄó å#ìCfQï–RüáL5ï¾–û¿DGGÇñ9ð‹\»sxÌ¿™èÚâUÓ[¦*YÛ|Fº>b\v©?€Âp‡îÞ½KkDg‡îY~ݧßÿþ¹k»^Ó{œ‘B¡P\”ø£P( …B¡P(ŠQü±>-»�Š <ÆMðnâ¯Í‡V»î@Îò"Ђª Øe0XWåŠq†øŽ¸`h€!Göâ'Ý`œ-_¥¬ ? A×ͺÜÞ4ôèv›îÝëÑúZϬ|ý,KCG}g´jwéôt@®:Ó!´Vz¾ n¾B\3]j…ú,$ Y­/Çd5}êÊ#/w'&„ërkINôiúäç$§rR‘@Ôzä3d v<îÎ~§nÇÌÀMTþÉÉ?9qP\tÁК¶5P�ÁGŒ¥PœÀý‡;¸…± A0¡N ]KÕËÄõ!CˆÄŽD nKR…B¡x6„vÝä „Ëî†dVñ›Ñç“6]ˆ*B‘þ¥(ì�‹¼ãÓpÞöì•'ÅMm'¸¿é€\Úý4.�ùµƒä.ýY!ã] yG\ˆ¿ŽáÝw;pWãóÕßaYëôèáÝ{Ô³®lJׯv†ïÞZǺ]\®O0.A¢wéõÏ\š}vûüá]˜““¸ÏO÷ý Sºn7¢q‘W_—u‚Ö´Û™fÛÐòžwtˆñ\/<“øþVôLV¹—KŠJÝx¬z-oHøvÔúLn>ôT´Ç®=´dVyþ …b(ñG¡P( …B¡P(7<ùß*‚Û™doòM›`€À ¿n·Ín¬åŸ“ üƒ-Œ|‡^íDZzÇÅ0’zÄÐc0†`®0ÙÜ .”<ÉÈ÷q¢a'5Z¤«“ï(Â=êê‹7vrýcU©q—Nû›ÑX¸ºó ”púh$í%Ê%)Ô?æPAÚ÷Pˆ†=ìD\䉱Ï+dë(°È*ÙÜ6E}`Ú'€¸Ëá|ù}ynäû¼°µpÆs†ÎKP™vþe=¿¹ÀÔ6ÜS1Æâ>aV¿?{öŒýéOâý8« ¡ê#Êd8¿aÌÆ9¸×âÊ é`?âòê ”¤n|õÕW´÷jãàvô`ƒšÅ´Û:ï~k»«P(fAÚ´Ÿ¿ùÍoØ�u†O?ý”?ço³wsþÕiÓÑÖâ¿ÑÞ‚°‰vyšZLJE{†ãô¡èÚi(ò ŸÀÞÞ‡¡Šn)„\жá˜èéú·è×J>AÂOAö+Jv1é6ôÃA Ž"| þ [Ô*ß{ŸîwàšËÆþLߎèõÈõ7Z·\Þá»pý–§'|]ˆï¨ôÚ„€µ{{—îܹM›[›áXâR+ôS®ã±'EÜ,ýþj3ÓÕl$ÿ¦ù=Ön·èèÀ+ÛÜu×Ý…²M8vÛý^_[§•qÅŠ7ç!5t\9><âïw]½F]ÁVÊÊ+Þ˜ùAfcÓ“c¯òt7¨Õʳ øRŠ?oÐýÏ2z?Ñ@ù·ÊíUw‘rXòúÏú¬_ÐÁQ›Ž\ûüüù3×ï>vc<ßßþΟíº{¸îÚ/iï5) Å…C‰? …B¡P( …B¡¸‘ðäL ·x]~C}s¿Ã!Œ Îpã¬LR0ÈM¿»}Î�BC ã‚wÿ…cì^éøØJŽ#±g}}'N;n •LÌè÷q…3 2ÙŠ|‘žøo c¤ß¯ÏûSº[SsY o¦.½Fà ÆmnRÚ¶©„âÏØ“9úWÎZn‚*@¿$3ÓÞ0äZÉúþjÞZÊ”•~F4苬ß?siŒ¹¾ qD &ØÇ¤gô+ù)ãÊùhB‹’<&¸Ø«¯ÀO .¢½ÄP9pù)ƯΗ¼ÖÔ|¼Ïï[ÀH’‹ßÓ>ï\“^Ûœ¸/&k*ßep…òÇ?þ1 ßObÑ–À( #-Üzá^þö·¿e2—¨1€„âÙÆœ ‚¸&„›|ÂÐ —-6¨Eà·œ‹ú‚´°¡ƒqsvÉš©Ç\/­ŽÜ¥‚*)Š‹‚(å¡ Eï/´› B¢ÝD»ˆ¾_jl_&n‰íªwð‰´ð.Ù%'¥ççq5íCÜhóÑ–£ÝG w"~¨¹åq§Š—âÎQTærÅ9�ñ Œ¼îìîr!&JßÂÆ¢÷mhÝ¥¿w£kPg)Ãf¾uýd@Ä÷Ý I›ÏÏúÏ¢LX˜‚û÷… ýŽò Ð|¾MT(Êõ ý9ø¢4M„ ˆCá{ÛqºAÉ©],Ox©á?æÅ-ýIùŽçoÙg°1+7ˆø“› î{§å�²v ¹´—%@½ÁÄn¨z.|ûž»¤®ÌÄ…fÏpTô„ZqÇã­í6½÷Þ-w ×ÏVÓ¼B¡¸hë¢P( …B¡P(Š &#ð¢XLæy]ðà5,áΫ•ÁûtèŒ=êt;ž�$î� È@nÈ[ŒœÉaÄäì;ÃÈÉéIt_€ £ŸD¤ TFwaˆË«µ£aBÎO âòA 'çšœ¿�T†›”qœåráÍþfÅD#›ã™¾Fårúg}꟎ÈnnPw­C·º=WoŒ3üèØÕßãã3:>Òp„úÒæ‰ì22�oø2”ú©ŠÀhD"¡ÎÉò{[ÒŒŒ¦ˆõî1„Ä#ÆH~LB¬Èœ!YolE¬u^éïP¢.#®òÄ]~³ÒP9æ¼³·°H_ªßêö.xŸÌdHkÂe›„¼TŸ@sJ“ŽCL ?5Æ1­^ÙÌÐ>³˜ã§‰ÏFAûûô?ÿçÿŸ~ýëß„4<  ¼HûW¿úUtK(Æ[Ô•ßýîw|pÏp``F˜Ï?ÿ<¶QB\@�’ð‘°åÒ‘H\¿L'ÛL'ýTW½ˆ"Ã$IÒ+]øXò¢žF°LÏW(ŠE�R”q@lA[ˆ¾“Ø ¨å_„ts„Ô’÷SbK.ENÀi ‡ÖOˆK¢>™’Pj®§2àz ’ˆžxWˆòNz­8¿/Ïà̽۫÷ZÕ¿l ê Z488¢“£#~‡TÄ¢“Ò½'txì•è@8•>´¨¦HÝí‚´ZŽç«^%F¡'„.!§9:ºT dãÔý©ÜW¾WÙíA¹¥|÷.\ý8ezæÊê\¸bâËìlLýààë¦|¿Æ—½bâËü¡Ï|‡u‡i9¸>b™Õ“=7ó3ESr²Tðù¸à®Ø‘{&ð<�h£Ð&I¹�PZK^ÿJ‘9ô ‘vxL÷þûí w(¥¡×’ …BqPâB¡P( …B¡P(n�& È29;G9®Ü&¤†akÄ éd{:é^n¢­=fº1•ÛÀbʰâXH>•›.Oè1.î"ÃÓ•Ò©F&ü9OÃa£çzP'ýTû®3ý%À“7×:têŒiû§Ô* Î6¨ÛmHÇnÿž›Ã~½?$Øx@f 4© ƒa+Ôk@ê^Jâp5s00q³áž…ÌâÑN ‘Óó_Fc¢¤+†ÄÔ•Iº_T³x²QpÙ©h¶"-eTHùOÆ[Ó¬ÉÈy„¶9žMÕŒã>Wõ ¿)ÇL” ò€ñó›ožf᚟¡³àòà²áËv!-¥US˜H/'ÿ˜@vËUÔÒ°)”ü£P( ÈPÆ»L`L†m¬(æ§O‡w"Ò@Qú¦ ÐJ¿X´›Üg¢»FäùuQè›…Tñïɧ¼ÏEí‡Ý{¹4<s =ÂT›5“$ y“¡¿´Ä ©äA4oŠªú5‘dåúw­”è3G$oé%TOž+Þm@ݦӽޅ%7Ò®Ê÷›d m· Õ¸»ðóDß~»qÆ…Kƒ …b(ñG¡P( …B¡P(7Æx2(YŒ<)¢ÁÕŽU«mMÍHM7×ò+¬aÐu üö.ú‘ø#F¤ÕÇƒÑØã¬NÄäGÎ⃄»9 Åu� SX‘û|xÊ+ÜYªž•« 5¢£a^oÓѨËuî¢Û­„H#+Þñ«òñ C€ß�Ž£ ñ,=7%¥åªiõyÄs�r„ÅoCåùA¾ÅýÄ)J3©bÌ¢dŒ™F?39AÞä*#Æa«s¦¥??_ö\ܳœÜ³™§wU˜®V1Í=ŽógW …¢ xGBÙíFjLÆû ÇЕ»e¾ƒ…¨+ïbÄ)}Òs¹…uáAÈyôèŸ ò’¸§E¼ ŒL‹ïi¸5’SÚoMË} ‰¶\ÜYâõë-!²éúnï`ƒjue 7§gDk®?ÔjM’b‘ò+d%!0áš¶w¶iË}¿Iˆ‹�BGCÈ8dòÝo£Š]…fòÖ–¿V\ûÎîN {®wÚ+ÞœÇÕNÞÚÚâoÛÛ[îݦóàMuõ…{.J7x¶·ÏQ7èþ/ qà67o¹öÊ—Ú qû5K^ÿ<Ì ñÜÎ ÊB¤z\Žiï¥a‰¼i_U¡P\ ”ø£P( …B¡P(ŠQ<À»á;c\ä'Úm\qÌî»Ê“~¢„½^›ÚÝu{Þ Ê<ÚÆÊYÄsA ` ¡B\!?½V@w"ÙAŒò‰°b°HUPd%³ªO¼°¹¶‹ÿ6t“¾ý ú0ö¸îÚ±å:Šj<puú„†î_+0D¼[;’÷ëÅõkÍÕ/|Šk9ã€ô7ê$ê©ÓDK61:JL‰?Mõ´ßðq(ÿHX1¦.Jä·|N ‰0ðM7lCfh"|° Ѥ®LTð¿„äw´Ú-êuº¼îÓl¢\”ºÚH]°`CYáy†›2·@ÔJ‰‡iYɵçñÈóß„”•_ký^ˆ"“mtÛÒ®riH5X~ý)ä¤^ɵ¥®KD èv×jjT©:Tu•BÁ½2” õk\ËvE‘x•æ=-'mc Å*÷™(ª�Ò~6µù¹é÷Yí}î~«©íZµâ’|"ú4¤„uô v$} üÙäé/ãw»‘ø$ÛŠ Ê*y킺=Zƒœœ¼­]?{èúâCãÉÁÈãÉÉ©ësoÐîîntß#ê™ø©É÷×ožQ<4b‚äÓLFÍïºWpZßg`ßf`Œ†û/ßßU ÿÚ[ëÅïï*píkI9€èEÞk…™AsÇ:æ+п'G„Ä7âÿÑ|µ0…B¡XJüQ(Š :i¨P( …BqÍV|vñUޱ¿ï¦Æ†î3le„w&i7±ÖvÇ'÷ EÏ3``6‰;"1fcÒ¾ÍnĈ £Vbè ¥0ñ„€tEµ¸�ƒÁEVL‹Á¨î²Fû™o#LÊnˆ_üuèõðµhǯ çÿ¶r…áêíØvÜgp÷Áu³¨V~2ÌÕMÔCgø€ñ­×«HjRïP¿PEUÀ¯~5‘€†ï0  ÞÊŠ~9.ç4×O…RBKNB‘ç«y2Üxøg¦S3Z5ÎiÏ0jYS•…wbj+·­L¼Ë¬yòÙuF‚»wî2ij<‚:цƒaTïEä9u낲ºÿ>u\yŸÐ \‹<ß))årņx®ñ ]zrei[€s`L…±9w‘–·Ð†!Ïbœ—Ü»œÄ““½×þþ>ï‡aéåjdâ~&%Ôˆ²¾‹JÊ ¾ãú^½zÅçß½{—É’rÒħÔ qã7Î…AÆe|G¸×¯÷gº-³Vˆ e­J™ÎU” ¤wÑpªP(¦£‰È ˆRŽgR"eŠ”|(mÓ<\t;d©"TJü‹ö5ÑüñÇôøñãØ•w‡ôÐæï®ý† 4ÊK©ë¯–{wƆFg긾µ''WáÛÜÓY§õ­Mºwï^xߎ™ÔwHªÆ)×âÕ6]>ŽNh4ÓÛ;Aô‘ützzFã‹V½bÅ›ÙÙ˜;ꇫÐG¸U{ÅŠ7ó]ÅÚ¹*3(‡"¨Ùœ@s|Îçà†Üÿe1rýE!€¡: *£Kcáë73OqÇôr #¹) ¸M[õ …b”ø£P( …B¡P(Šš ~p÷Å$và]xŸÒ«w¸c¦,xR¼Äº¹²r†O¨IŒKÃqTF\QPû)Bz6’$Ä0.ûà}¹J‡|¦FéTíC Îo?DíÇ$¤`l[tf׳À¶VÙÓžqÝ|ºÞRpI7àz/¤/lö[\Ò BÈ^y§U#}äªMÆB(aawêÚNŒ/)aÈ]}¥äŒ4XŸp$nÄsMe*Áß2)0VÏÊgÑò+Æo9$ò„²h·*bŠ(=¤*5� LvqÛx8Š®Â¤}aJ²r`Zœµ° 9UJÝ¢¬±ÄðzzzÌç¦J9bMÕ#Ò6GMø„±6uG(×+äD¤#ñJ>ad“kExÙšÈeëëklà•:&jF¾ý¶Ü>‹ªÒ‚Ê3 y›åÎË+¿ÙØ®¦ê@âæqù§Ò¡P(ï*„P +Ú ÏiÇ6|ÁRT!imZÛ&mÏAº‘¼"~icMJ†µvi;âA¸ ´ƒö;%ÜT}ß!·ÕLŠO‘fÂEÑî´ickÓµý‰â®ÉÛ(ü§ù‡ý'Ù¨”#—Åï¨ö»£ø‚ëÝ nÍ„�ô.¢íî9bÈ÷wíV»*‡Ö»[Z‘LH³•¶®Õ¸oüÑÙú^²ï‚YR …⇠…B¡P( …BqCP£þTd„œ7 Fþ,k+æl Y;iòõFc|8œ”RÏÑÑQâÖˆœñåˆWæª0"åÆfo¨?†n%ý¼ ¨ŒW ®?…¯W0ü±;ŽÒàR¢�CÞ4·M@Z_›H>Mûj–).¦R·Ké&ó¢ÖâT³) ÔtíôÏ1˜lÃuDãi9¦Ñ8Q¸±uUœ”@#ûäz@˜i»ß%ˆ&¶"çÈy¢ø%D ! Hú¬ŽÓw^iHÜ¥ ñF\‹‰‹!‰ËÁápÀª?¢*$e#ªcâ íŽ( ¥m•´e¸ÿˆÅÜMö§Ä"|ÂèŒãB’ŒÛâæ êTBJ²—˜`äÒ8véJù iGòb™¸si‚¯cÞÒû›ÖáyäŸô¼X¯ Å;ƒQP«õ´··ß“é{`È{íž´·è7ŠbMNÌÌÑDJ÷ 1GTè�´Çh'E¹à6„Ïr¹ˆ¼`DGû.Ÿ1Þä:A8°D5bФmÅ?fãZZ‹mtÒWÀ¡Ä5gÔ[‹¯öÁêœèƒoiÛ=)â=�¬ôr‘×}ÅŠ7³ø óâNû¯3ëß²Y¹bÅ›¹×Ió\`}¸A÷•Èêý¸r·äõ/Ÿ<<MŒ’FÁU™%%ÿ(Š‹† …B¡P( …Bqãà9^¡§hž³Ö°ò~Û²hVw°õõwþ¼2ž=)hRí$G5Álœ1}PÛŸtÒÉhqóu’ôŠ7�W0W+ä :8ɸؿNd@½k24ÎSõ™“z-OSyüÞP#¢=•%O?6!ý˜†k_²\xU¥‚Dá'F‘ˆ; ÖW]p•]EÆñ{JÜIÉ+²µ ïv­.GÄ@,îÕ�q†ß) †ËÀ"ZTÂá~Š:âÅwq»%j= Æxu¢a Ù”‰bИÛC1€T.Æú1¨éà¤' þ:ZÜ®Aõ ŠfXMr >‘.Žù2¨ ÜBj’t¼Âe§GJ€¸œRˆ08Kû(ñOk/q}ÈWJÊ뙴夵£(Š¢Î*çåDÚ&RiŠüÝ™Oû”³HCé~¼cl±\C—’“L8 äÎsa^V”wy½¸iÄ+~Gß8W_Wý<¼ÑÄŸ ÀE&În þLA÷¤Ã¤F…B¡¸ (ñG¡P( …B¡P(76ù †y÷½Ó‘¢S­œøSû\Þ˜–‹Æsïú ûËr¹‰6kÇÑp?ÏMÃjä …¢Žº±ÀÄÙc¡µá ˜F¾™…UëfZÿ…Ð!¿SB î6¤¬T¸üƒÛLº3&º=K‰?þzãÏàʋϮÊ# 9F–Fƒ!½ÞÛ£ƒgN¯¬HJ©«¬Tµ(^Õï…(툻,QzU†Ôõš(•Éõ§+ØAÄII+ò»®>T2yŸEqÊÅ_uŽÓ)Ç‘¬xÅÉáxÊòˆNOÏI©ŒqÁø�b‘7BT&¤ ÒQz?S—†(î¤u‚óOˆTøþòåËÄÅ"5yÒz×&W—ÊQ‹& š …âÝÚì­­-º½½ÃŠg VÒ~.Û6H»ƒ¶ÿÙ³güýþýûwêŽ1ßO¤Mã¿wïÇ/ªp>ÿ±lË&ŠB¸n¨ýaèξèæýÚ®* …B¡PÜ((ñG¡P( …B¡P(76ýk½K. ÕòFézX[[X—ÿN#õŠ?‹r‰ÔÞ±(q¢Q}B¡8'„äÂ䗙ķ‹‚e¥­‰|L1öåŠÉÿ,MYO[šæ1C€DÔ‡*¯!¹Ú \}è4(ÑÄó—,'KÒ&Àèš*Ï@ÁFÜvI>"ÆxBNÓ½I].†!­”5³ù€âÎìòòn¸Ì”³'›åÉënV½àómýø4 …B¡˜QQÉegg'ºòäªm ÞGG‡ÜNíîîÐöö¶wIU#¾úV0ïKú}þÓ‡«¾  Àe8ùFü)QIH²fIêÚ`¨¶‰›É EJÂm:¦P(o%âh„ …⺡Ä…B¡P( …B¡PÜØÊeWåþÅÔÝ]UVbzj­P¼{°v’†“*õÌsYR‘ß¼%pšÛ“ZœøÌ|cå:^5×eä‰PvNûPW€Y†*"ÝW‰â€RÒSªì£&€åPWöi“–õìÈè\*½‡ …"‡AÑBxÕ4ªµýýq²=›$- KS µ‹âÂÉ”ÚeV(ï$–iü ic©P(. JüQ( …B¡P( ÅÍBà D<0Kdó¬ÍÎ[&|Sº ÅÛŠfƒeñbªñÐø?MGsò$f›¾×re'd‚ÌD{‘eáðÂ3•‚Ã8¸®š •ªÕ$z7 qHT&à²%w3&†äÔ­Vª.”ºZãr>u)S¹ÓªâÅwQÜAú©;‰CÒ“K–Û*iJ^+×hTs–~ÖËb94ÏÒc³TÕ*Õ¶ÜmÞŠÐf^¡x+!í9Èœ§§§¬°À5”Äm—¸ðÊÎícªîS&*y6ªW¦m'Ÿ‘¸jœN¼™Ýx Iy‡kGàÖ­[Ñu$€k@[Ÿ"ÏË…b^[©,J…BñVC;Œ …âú¡Ä…B±2òÉ=…B¡P( …buLº-²5•±ðÉo93]bu3…:PAÉ?Š{³êSô’•©Ú4¡î¦É¦9'¨ùXÃÆP“pclFø™“¸D1‰¯xª¡ • êdŠ*A‹ÀpVëy™g¢­­HJBú¶×ë±V܆Áp B ÁëëëF”…`Àŧ¸ët:üûÜ× 1æ"ì‡k�ñK¼8~ttÄûaØFì“|I¼T,Z-ßæb¶Á`Àùñyó}Lﵸ¹aòû]†cBTZtþ w7QÞsŒÖ|~âN¡P(RH·Wûûûôå—_Ò¯ýkÞ÷ÙgŸÑƒ¸½yí'¾§(ËÊ]—´¿©Šƒ'ýŒ£k-| am6Ú_iïW¼�ÎÈJøÃx×G}Äñ=}ú”ãð®©ç»Lˆ›ör@ …B¡P(Šk ÅR¨ËnϘŒU2B¡P( …bIÄ…ÓIWÒÚ\ñ‡¨NúÉ÷Ï#ùä¿qçe8¦ý_ÅÛ ã ±£ærËÚÆ1  t<¡ôTê–5€Ähj*Y™Æ4“ã¹M@:eþ¸ÖÚKÂ=Z•~CýwSêíÓ¤Q5Uz€!ŸB�Â~™…Ȉ[1l¢>8Eq(%þˆ‘ZE  ™€Ña$^ü–¼âœJ)È_ŒÉB@Â9>žÙJ?çGý…0•X6mß´WÂ’yÐÖ]¡x;‘¶hÓ@ŒD[ 2Íææ&+…9ÙæÔÝÖTÞ¨z7¢=…šH“ÒþK»;Ky§Úmâ–ÏÉ‚x RÑÞÞ+ÿ½ûÔëöèää„Ó’¶<EERšO T(Þ%¤]}ï+®õWˆB¡P¬ %þ(Š…‘tóÁæ¬ >%) …B¡P(G5íûœ‰+…⦀ÇAôæÃÎ ÛÔE{LÍ•ŒEÁ W„Õ.é?©¸Ñàhê$‹‰±¤¨Ñtƒe]pÇVª;”‘Ç„!hÎøvº·"æÀ� C0ÊFe”iêú hQ#­lØŸÞ ¹B JÝѤãwÄ%J@ø<`pŽOÓñFé’•Rã·÷÷¾ˆÆìô:c= ùsån&‰žéu]‰ÁÚ\wH¡PÜHIrgg‡>øàn—±A‰HÛæÉ6LÞEò‰]h¥ïj˜6ˆöq¢…úÒ“ø¤-m‚oM±+ø{Yzwb®}&SrVÊÒ½3Cj­H(åQÚå…Úf×};0ƒÝðsùø–ÅW+3wÇB‡*Ì»þ›öØÜ´ûÕ¸èë?/¬W•M¡P(. JüQ(+!<*±G¡P( …Bq~dR?TwËàJ&ˆ}„þ§‰ê!G@Ôäê‹zõ(•ˆ)Wú³Õþ|Õö2ý\±{1¹2¸ª_>€™rR½¾ÔInÓÓYË’$rb…1¹£QÙ''Õlp•%Ä›ê$¾º¬ ®µ(!™I½•*&‰=’ž™$úT Ÿ.5Ä9 ¦¦øs"H]-Ç+뀈#FZ %Þ`÷0©k!ýpî‚ñ8UbJ :©Šs$þtL/ BéqŸ—1·ŸN—¯\Ü’ÇeÈKE KÓ>¸¼Ca›jÅv;l“ÏÕ Ô“o…B¡¨ ¤I(¢íîîÒ‡~È$s@þÁþ””9 y#ÈgJÌ)øÝ‰ø%´÷â†1WÏkÊ[õÂ2T‘X«¾.Þ‚ž¸´Ííu§Óæ´Ä•d“±+#N*o ´Ï ¸.hÝS(%þ(Š ¤+4›öOû½è1…B¡P( …¢©KžàÎg<Q8 ‘û´¥7x¡ Ãw0zO5b„ÝÛíö‚¡…xÕ´¸:€a¤(*£;ŒÚ8^­„>oßö|çŸ×@cˆ&ŠË‚ÉÈ>&¨äu ½%UÒ:쬪~Üdw/»•M 2r¥Ö©ê8SH<³Â¦äަ´S‚JJ°«g?!1›²½!Mj_–ÇTŒÓ {…Ü“€¨h:¯žHúÓ&ËnÑ‘]â @å¢JO¢^”©‰J’€ÎÎÎjª ¹ µ´}KËR\zÁÍK“jC~NžFÓx¿éxEî9ãßB²VaÕ5M¦›Òvo+­ oLO‰Wb÷Žä Ê”˜lÏy`*òQš B¡xk mH>÷ïßn…83 3I5ò% äÝ*Þ¾}›ÃJ|BàÌÉ´«ô÷àŽì£>âs×Ö6Xñ×’º|T( …B¡P¼PâB¡˜ x1‘xpp@ÏŸ?ç•/éJ@ &···Ù÷5V”ˆl¸B¡P( …Bq.ØDc4Œ.op `u ôG½A#U®hŠÇ[ö;Á¥NÁ$QØ@¿vmm-®ŠF:''Hgœ|Ѝxˆ!>u­#®t$>Ä-ʣјÕ1Rw©K¹N‰·NœP¼yH‰>†fëŽØ:1‹ÙéŠþŨ©bKZ¯Òú$Fq%î¤f׳*ïyœF*š0†RíjÃgº/K.‰Óµ¦8*²P¦¸`+…ÚIoQ&( ÕÓ®~×ã욤¢ÌÇDÒT]›\ß4/oêõcAʉê¶ð…a³ój¤«êNèÂ#…B± ÒöïHh¦‡­ÿF—t<mù¨äïè_šš™'­¯'›¼kj Ä?áw‹Ïyqsü­ÉöN\•¥Äãy„Ÿy¤`…B¡P( Å›‰ÿ›½?—fKË:Ñ™;÷Þßü}g¨3×|ŠIp¼%‚V#(¢ÝW¯þ~Ы8Üö¶#Êm[º@EA¸"\&±iÄ– Dª(¨¹êœ:óùæ=çÏŠx#V¬ŒÈa™¹ÿÿïäÉŒˆ+"sǰb½Ïz^„?�0‰~nÞ¼éÞýîw»w¼ãî¹çžóv·ö©Ñ0Ÿð Ÿàž~úi÷†7¼Á Ä"><Ns0���€Åûw¢þxÄ•Ž=¹CϨqý$Í],ôOå$æÑËÒëè]BkßÊ}CíF•ÍS<ô¼èÇF~kÙÁÁ×:Z_åT^byÍ{ä‘G|›YóTßööŽÛÝÝóëYJÕe#²UN" -¯Òè ge,Ӿ˲´ÏûoRÿÞ&<I‚©t⾘¨ÇŽEƒ&FÓ1¤ãJØñª—ޱû÷ïûmçOœþ.,3Í¡ ©)nÆ…L‰k 5}Ž…6µß+ yêðÿ’z€³8üøºÃê²MÊ„`ùµ#5ùQµós©IâÎÓgãùkì#üi wó¹O¯ŸÀ7Ày$v®›ÊBn4t®·M÷ö”¶1Í^½B˜.ZåŸ-·õx~¶I×¼¥¶Óï\Ï ‰B´ðÞ=Ûu°É¡íØàr ���p¦ ü€‰èapggǽúê«î}ï{Ÿ{ñÅÝë_ÿzïî£ùZ®1 –H¤Žæ­­­r´³åÅV`CÃi=u.k™PòÑ×ݲZõj¹Í×KÓš¿½½íëê´–ÛÊY§¶:¯óÜÖ=¿?6‚;¶à5k]����XLÒR0¼JGEïG.É¢ø½µN€ÉYf4 Ýr/Úé$AhäôÈë)”Qpf3k§^ؼP ÛÕ6T[SíIµ+­Ûë­—î?֦ͅ?Z¬ûbš§õTÚ§z©ÍªöªF€«Œ¥÷Ñ+~Á×i¢kËjÔ.†å¡îZSï6×wýbÇ]ÞÌŸM:]CƒüØ•è+‹Ùíe6;»ûþ9jÿ ïFIž̧Pj Ö1áŽ)½Ûs”ŽSKe¢½$HÓñfËfúŽQZ¯0õ‰=[§¬²ó0)ÏÉŽ’™åSsÔ)Ss¥µØ§IpB——¤H÷WÊi‚Ýï<åWþ÷(ëMÒZ˜4mpúIÃJÓ|‹¡R(i¢´sΟ7ceÕÜ„­†êOáy~V‡'�XLÔæÒýN}‘ºWªu8t/è¸<…gšÝ³·³:w½«c·{;«w¿•Oc’àÆ–íîìeý£Ûþ>Ö[»çÛ…›ÔOjÂ"µ¢Ô 3 ßBí ëg���€Õá�Œç®¶NâxÀ¿Þö¶·y‘Ï3Ï<ãÓI¨#' 7½éM~½øÃ~´³Ö¹~ýº{òÉ'}ÐD—rÒr=p_¹rÅ ˆÂ—êzï{ßëƒZW[´Låõ€®õïÞ½ë÷KûóÆ7¾±\vëÖ-¿/Ú–ÖðÁÝc=æë‰¿_SŽn����8;|ÒÇMóXq)4È]:,«Œ2u;r9I³`H×md‹t4t{»{n?í»þÁ ›Ör ²�LW¢‰mœ)­ùk= o6ÝåK÷\,]R„Ú±B" ¥µU[³›Õ‘»ñô}ûTû(7 N$.RûÓz$ªP}椒;­løúò`Ñ–Ÿï… Ù6õ®uU^õ™‘úrP×5¤µ÷k—:î“^¿æÞôøÿ µ¹Ùsû÷½ø§›ýí·:î…»÷Ì ·Üûßÿ’{%[6L/ºaÒ+¤’²ä]7Mǃ mÌÅÊ^ö ¥ãÉŽ% H곞צ'óç¥J—cÛoJSgå-Xå¤àŠó°¨/+'ÑO' ]Ò2t™¦•ÇÛï›$v H¼ç‚eà*%@…BÃÏN]QÒ¹ºÛP±íòKVâ¢à›B!*¤ƒÍ¼Ï‘œË‹ÊÄë¬?öuü¦ˆ�–`8Ø?p·oß.ï_aŠÌ™HóÔ]ràÉ]~ö½øçà ïîܹS»…*ä(k/ ¼x\}¤/nº‹—äêg÷îà $øÕï¡6©Ú ����°: ü€©ØC§=ÛR{˜µÎd¹Ixó‘|Ä sTöÆ~} ô`©å/½ô’éÈEHó•‹Z›æ$ᎄAzpÖr=ŒªÌC=ä*ZO/Õ¡2ZWÁªWÂ"ÍS9íÒ,Øþ†#o¢����,Iô¹p 1‡žÑ¨SŠ‚”EAóô’ÛÏFYëöÜå,("ÁÏ@®?£¼ «·àw у£Bž‹öKŽÞÃôæÐ“$ì͛§â’HÇ<ªk8ÌÅ>&°0a9üøÑÚ½õÚ×5·Jk—Ö˧cî*°L¤åñ¼Þ¹‡.Üã7Fî‘»°©ã-;¦†ÿ·½»×unÝݾëÜÆÚë&Ùqäz’§8“´¤>¸×~Ø1¢ãGÇ ;æ¬j)=¬¬–ëYJeíx›† ŒtÌÛs¡ÕeõÛ|sƲs¥rì Å}$§UiÎr' `Íâs' Ld’*‹T(ä —\µ¥Š4ø5'–þ¸âwwå†ÒÐzhŽ8ëùHôÕFrDËS|žÁA†ô`¥°{ÚÌÂ#0W»´X¯ëÛ;YŸäw&OÚ/å¥l¶k‰O ›ÝW/^¼àÛ®jój“µl—®VñÌõÚw���€Õá�4Ú³ktŒ `H¸ó#?ò#^¤cÂÿø÷9ñhäˆÊª#Yâ•×<=P¾ð ¾ãW.<ê€~ùå—}ý6­òê ÎÓ)ô¼€GB}–ðGõ†¶õª[ëhÛÚßw½ë]~Z?ªçø€i”¶ Œ´nøýšÀ���`q°ÙÂ;‹¤£Üñ' €X»PQµ÷$ú¾|ùŠëvT>ñmÏýý¾»—µïoïx—¥dèúe»µßøÑÚZGuH¬`¢m[ï™ ­£¶±Ú‹–"An?ªSËLÈ#¼¥§ÍECyYmßR{™ÃÈDi±¿ûe*°0’ýËH:cj¤¸¾hß÷0Ï J=§ãìÎQ‘î8Éáì¹gx»ôÜË;WÜýû»åß½“f/äÒéû¥cJÏk:v- gééÂãÇÄ:öŒg.UMn¨ÕñW‡ñ€ ¡:l€ˆ‰¬þüœ9ðÎùNÔ÷½ñ¤Õy0 Ýg‹å©í!£)èÉÅz¦4Ë JØ#1Ï(I£Ô^ÕôØ1—Fïöf<6«=>¯õ»Ÿ¼ð‡ç€ÕF÷-97Þ¸zÍ»›«c(d¤È:›fmº÷ÜGoºƒ½[îþ`ßíïšð'i]uz[¨Z¾¾ždý£kîÚõËîµO=án<pÝ­emˆn§^>©oÀM»f†iÏ4Ð����V„?�0FhÕ.ÂŽ0¹©y fX°E½rØÑãDA¸°JuøJ¤ì'žx—‘¨GËôRǰ֗èç-oy‹×:ê¸ÖK˵-=”jû&DR „4ïCúP™âK}¶ÎfÛgFL���,!…`Á·å’NéÀ pÇp”º¾Ä<ìý©`KÒÍþëåB†ìs7›·™5gɤ_k§ªžÝÝ=œWÛQí]kê³Ú’&Â1!P]¹ð'ÉÊæ¢½4-§K ©)­õ•*Ì„Be­jâtí—¹þ4µÅa9c{:înïôÝæÝ=·¹àªº¡K‡}·Ÿƒ÷÷ºî•‘»u·Ÿ•U»u—Hø“v 7œÙž_tÌ蘞ƼǓO½U8ò„Ž?æ�«úÌ1AÏzvNØ3b~^$U(35!O%¼±´\ià T³Ö)„GIa¤ä½R[7-Ö·ÍçÙ{å=~®¯÷ÜFöÜyñòE×í­å¿aö7ÚÚÞr{ÙyïEQ£Øm))Ó‹Íôûÿέø§<Þûýº¾íÆb‹ àä°û“ ÌÓµV‚ÖÃ_ÖÜÍ]×Iî»Ñ0kJËN+¦ƒXËò€ÑZž*sccÝ]½vÅݸq-ÛßÔ7ƒ±šÒébIµ=õ{èžgíO����X hÝÀ–ºÀ^z”PG)µô€üiŸöiþù=ïy–(0"re‡¤ÑKŽ>çØhR¥ì’8ÇRu©¼F?›è5¯y_.ô®À‰L5rZŸ|Qyul«¼M4­—êÕþ>þøãîð#{lD*���€åÂåy[ÒÏ)Rt97eí@i%²ƒûnkOŽ*/fÓ2uP·ÛËÚ¦›ÞqD­—ŒôYN>[¾Î~èã-&ìÙ/‚þšÓ@ÄmI•ó‚…Ô•iÁÔ~¶ÔG6=hDù  0Yú0s’XÂÒ#Ù+L7˃¹U3n?{VynkÇíe½/—†JõµézžèítÜÝí¡{éÖž»{àöúkn˜dÏ-i/«§[Y,§ÕôT_1±cTüù´uê:i=Ì™V¯R´“ZÒ³œNñ*} ädâŸHøcõ‡[‘Ûϰ3rë=ïþðèc¹×¾áõîòÕ+î à^yõU÷~9Ǿò²ÛÍžu‡£a.Ú)âlj4{x–Tm+Oz”ï>¿ã¢�˜•£ÜiŸ���À¢ð�ư�…8Ì&^b½ÞøÆ7zaŽJß%±QÐÂlÝ­ †T§Öу±Ä; †H4¤õlĨʩ9ù¨œÞÃQ«€Ñú–:!Ü_‰ŒT§¶­wÕk©Á,‡õ²§I����8ä¢\L“Dqà|2qû·µ³W”© ¬÷ÖÝ•+—}›°_¤é²— Ý¥—³‡ nBNSûÑÚ–•@§>?L¯4’cH2,…Aù¼\Ü îm+‡ègI1áJ1ÙŒÜÝ=7èÜÅì8ÞÜë»^²®ŒuþYgk;[¾•8º£QÇÌÓÆò[éèN:®S¦–KÊö¼fÇ‘·ó7áqVºjóósoP·™°Í°T_¶o–êËRÚÒºÀ'uQ®R´¼Šeþ×H«ô^/‰ §Ëûÿ“È¥¥Â(Ä?i’ºA'{6½rսᵯsoxÓÝž~³»ríªÿ{¼ðÒ‹¾d§ÛñŽ´z&­3_ê®$øw~Aø�‹‰¥¾ÔýJýˆêoÔ<õOj@£î»aŸb¼n~k)$©¥ÛμנØÙ,œž½.µ7‡>…lrˆf����° ü€‰„À&¤17YäʱGB=?öØcþaù™gžq·nÝòóÔ1¬Ô^rÞ‘`èå—_v¿ò+¿â¨%Þ‘ƒÖS}¯ýë}]ï|ç;Ëô`ªCÛÑ6-]‚ÖS¬N´ªçÉ'Ÿô®@ê°ÕvÌ­Hñá(í¸3œŽA���€ÅeLlŒgJ0ñO£¡ÖÍ])ÍYÇÄ=jƒ®­)EìÀ—+×)¶gŽ<jçÎ=¿<œÎÓU!k3kZN”y:¯JLbmÔP`ÔÄym¯.Šðé(ûá²ç“íí]ÿ¬Ó‘le”ƒÃ<uÜ`Øsýᵬäzãú^ŒãS}løç"_zVR½–ªCÇ™Ê)P©åƒBàfnUaÀ2>–,—°4Îáü½½}¿½ƒƒ~)8Ò6ÃvnúïWlÏ­Ù¹7JGñZÿ][Dnþ»»üÜîâ8½g!ØrZ" 5— ‚ü:ÎùÏUø´Yø#—ÙOú¤OrOÌǸ?è6¼+ØÐ]¹zÕõ²ßúÂÅ eú¾Úùib¬9‚±Ú3Ê?ëéŠj»o‡9Ÿ‘`¬v-PߣÌŸ}öY÷ë¿þëþ^ð¦7½É»ˆk�£ÚŠºßÚý±\¤;‹ùÐ2ÔÔ>ûõÜŸ.©„­U-õɤub*jëîììúõäÒŽð���àüð�ÆGyêÁV¢¥ëzÝë^ç?«ÃY¾ê,UG¨‚‘ðFÓZ_Â=dZZ/uT?òÈ#¾ó÷ùçŸ÷ÓzÙ(=”J¼£Ñ5IØ£²ª[ÐJ×¥—ÀUÖ…T÷£>ê×½šuÒ*˜Ä?Z.$8Ò¾jû<ô���,æÞôAeÊŸ–õ‡.þôzë¹PÀ»¢tJŽº5ïlR[/kw橼œoKªí)¹ÞÕö4Qº¥ *A„êÕ|•ÏŠÒÀĤrª}Ï@ ŽÓÏùäàÓôÜ(ÍÅ8N"’av¬è5ÊËÈ]ÆwÏxLáøã_ù®ãÕÒ)w»kþ˜†þ¸Ô1gÇ¥¦½³•›UÎU~+Å@¿wűf­¯y&Œ&ÜÑûÞ^5Ï^áÀ ÆXþ8v¹[PªïT<†µ¦÷Š~¾rŸ]áè£óµØ}^Oºn­­eÓ=—/w…#PþëÏ´ÙÛ0©R²…ýÎÈݸ~Ã=þØãî‰Çs—/¹µÞZ.–Êþƒ<Íô/°W)À[ícÒôGoá8áŸá ¡Iï›ær °²„×�µÛÔO©~Ms67¨¹þÔÖõÿKªWyÿN¢RmׯIN?ÖÓw¥G£Q!äM& Êig���¬.�`Œ0¡Î_‰~,—:[%¦Q°ã©§žòŸ%²Q9‰p´®B&ÌQ9 …4JTb nܸá;RŸ{î9¿ i–RL⟛7oú‡Q ~$2zó›ßì?ëAÜ,äÕkû¥‡rgÂ4`ªW£tô����KH‘:É\s\”4ȤiÚŸíHбHΗÎMÖ ±NZˆ:5ñ‚OQ¤þòu©¼ì½“Õ­ö«êV8 0W%×(öûªbV�ð/þŽ>[—R!_ËŽ§KEZì8>6^«ÒÍæËí§›‹dŠcÔêJ]˜:d>„‰LdNU–LÓaYs¸²éøø­Òׯ„j¶lX¤a®â I ÔËÓxÕŽò¾«ð%EØ4O;¶–½ziÇõ Ñ^¯³æ6³ßj=;ïº] ²ó/ÉAÞH¡´¨Cß5û[ô»ÙïPüMÙ‚ýµÔ]ºpÁmHè”­çF…OéQ:ÝÒ¬·ÖsëÙ{j©Èê;=a:\Bª/—žÛÂÃô‰õc;€ÕÆî…êÛ4tÍÐÀE .´ûf˜ ³\÷”¯ëº"åmÌQ°Ár/^ímæt,-§aíT����X=þ�À–þ@ƒåHè"ŗ㎠€ô lå´\ëJ(Ž.1»w |¬ƒXurìQ=*£l y$²lÕ§tar’hÈ^ãÛÖ‰m£rlÔjlyBš/���€e iø¤ÞI&™24·÷Ôn”PGî)>ø_ŒPÂö£ÞÍÝÒ^yJÙ®w ÓYš¤P<¤úÃ4º•W“p~.H“ˆLŽQë•ð'5áOöÊ>wKÒ)„UŠªÄå‚5§»»{þ¹FB9þKK§º4ÂÜ ì¹Ë„?ÂŽ_{7¡ #šÈ]òm5¹T5ÁPàpUÓmø/¤á²óÁ¹1 ¤øýrUš¿4/Ûïè#ÑÔP¢½¼¬Îá<5Xvþ¦•ãO’M¤þtÌñ';³ºö³sÿþ½{n+{]êvÜz'/¯ù÷îÞõ¯ƒì÷† ÏŒ“D@0Æ^ê& |¸€¥ÅT¤‰tOÕàAõ'ŠÐá®¶îÔ‹[“`=¼ãµ9ý„©ÁÑoÚv9­Ê¯u×Êòí¢FW á���`µ@ø�cÄ›zÈÕ¯‰u$È1Ñ:žÍêÝ f)oÇZ&QÜ~ôYn>*óØcù:5’FÕZ¦T_J¦Q–ÉáGË%þQK fÛ G±ØÈL³c·ýÒü¦ïÕ6@���€¢ˆwTí¶@Z!gN^¨MÏ-£Qäð`B %¼èG¯ÔÕ„9ÂD;&Œ…íÖÞ•sÐÁA¿±›ðÇéy›8zDÂõ‰_‘º'þ»œöv¶¾\©F¹p¥p¿1ÿ¼"ÁJ7iMKlåt¬Þ¾}»ì0ðî@rB&ü1AOìhbÏKV>|N ŸÛšÈpùrs¾ª¿†u\Zõ؇¦à© …ÊÏ>š Ü…|…nXœ?Jë5Lówÿìé䔿ûÍd«uG¹XÈÿ6ÔíwSÿ.Ùûn/ÛN¯ë>ô¡¹Þæ†{ª·–ý r±Ÿ~cÍ×K´r“œŒ3Ù•†T_âìR}Å.?6?.�çðÜWß¡œÌ5/Líö?ޝ;åÚ;ž%…Z=_èÆ®mi¼n'z¥ñ(?v Ñs!{[›¢Ø WO”K[óÜrÞo}|ÿóÍY~š�p‚ ü€1šh-­–°_á„Åö9 jøÚ^Ï;þØ< ~,M—¬ÍMHó4òZË5ON@uc£mÂÖa'u(:ÒË:Èãï����ËBÑ–tIѾsE'Yh‰RÕ«½#ˆO÷Õñõ ‡#ÿ²´Cyb 0�4{»±Û–éÂL|¾*ÑŠ+¶áŠO¯9ùž¿p|9œ©Cþp-þà…^£ •b*›Ý-byáü0,¨×@.R^ÀS?þóÃ?/Ý ªµR;]òcÜ”å1—¶í÷8yÚ­*�Z+ŸŽ§°KÂgÉ"®i©»¬> —ÊZå{þ2a”}ÖòaQ@þt‹`ªö*úTÛîõ橾\áø“ø÷ƒAVæöm÷Á8[îܽÝwùê/zé•WÜûßÿ?ekk;wë˜x¯é—š4=÷©¾ŠŸé𺚣¥Ãcq�4Šºåü3­\5ÃÍHÒ²‚µÎÚœlvâ‚ü™Uƒ2*¯ÙÝnÇÍrͬÒ:����X!þ�À5›ö åWÛHÇ05XS*-ÍÓúóH¼#ŸÐGóLL¤é ßéªyæà£ù¡ )¶•·e¡Ø§%:ûnMÐ���° ø�Gþ±ÛéºÞ†[뎢èqxšyeݧRÒ›„9‰¯ËÒ%„¢*h2€YmHK™§•iKTovŽ·AK¯ ‹ü÷<£öîùje'Ñ÷õ²3ŸÒË‹g²÷‘(*ÕÉE9³¤£¢lío”SûL:0’–‰<ߘÿXdsíAÁ(qIZ$ãô\ñg_¦P³uŠß Òñ%&þ)¿‘>òƒc”VÇfyZϤûtôåëäx”TBšÜ!¨Z? +Ñy¨óÒÿìųl’/ßÞÛsüÈGÜ‹7_u›¿ön×í­ùºöö÷ÝÝ{÷ÜöÎŽýÄ.GEµá·vSIÇ~ÙóEzf—�€©zà’ê9àê���€Õá�L$´Ån-×à°ù!æú¦ kBŸ¹FظqáO,\ ‡����`ѱЮ H,ÞuÝ´;A¨]w…¨¥Ór¹ð§œçµ aŠ×ðyvrc’öTIU{ÙD§ÅçM€s–ÏM.©ÒÐõÇ•‚9F¹Àªª#Ù¸æ#´v87îBì6ÎUuÔÝjÚο¦ÁÕÎ5ì’mÌœy"[˜r5K¹¬¨Ï£NR¯¦|-6…:·ÂbKç¢O–’Íßï÷Ýþ;îÖÝ;¾Îðg|c]Ã7v³^/ÒPxw9²è§ÅcÖµ˜�pž0¡ËÎÎŽ€hi/zmØÞxèÉ‘·´û÷¶r{ÉI:Á@HßþŒ„ðSPêлwïzaë¤þW����X>þ�ÀMy«MPŠjŒ¦Ô`muÍÂaGZÛ{ì@§kÎË ����‹JâÝ:lª)UÂOjÂwfx>ÚœÔvŽ‹I»ë+Hü3e›Çñ§¹Ÿ6 ÞðÿÒæg@›WOi—´ÖÛ4˜dLBSˆÒ°®´î—î¨OWúe®ºbØö,Xm“.ú=¢í�Àr2 Üýû÷Ý`ÿÀݾ}Û÷ Ý#$~9ìýuØïºýýž;QÒŽÛÝÙwýè îæÍ[nóâšÃ ½`%Wí{˜ðGƒ2¯^½ê����`u@ø�­49üÌ»Þib¾MD6 ����ËÅxÛ2vÍ™>ÂÝ ,2ýäÎTšÊïʰ'É͂ƜOæ{¶ 2m.ªMžy7‹{J§›ÒÄ+-…7µR¡ WšO‡©¦Ó`¿l~èújé«ß)H÷í_%Þª Êth°*Øà K®´âá�¡øxRêÆ0]8�¬.á�ÇùWv'Œµo;ÕçÔ>›£¥-Ÿ]ó$x:Šè ����„?�0F8Zs^ñÏq¥Õ:êúm–Þˆ����–Ëé“Ö&–ÔÒ]Î4&’Éc /œ$vÒ9Z꣰®øÙ¨ñ,_;ø˜{Bû³VV.­„8¦´±Ðe8ôØ««ÀäÚšO:Ú¶CArØË‹€ÒÊ(-¶î™OÌ’Ì‘ò –†)À}áÂÿ.· +&R:r½k™D?÷îÝóeˆ¬:¿¯\¹ân\½æ._¾ìÖ××ýüø~2/[÷ÜKÏogŸvÜI¢kדO>é®]»’ݳûiqKÔnw;ó;Z†iÏT7����¬� •&O› &.wÛ=κb x����Xb’´þÙOÒ΃å£õäŸÓ<gžV5œ3"õ¢$Ÿò|Ø<h$8WkâŸ4ÿÔŸÛ:…èG‚ ‰1ÂÀl(4u(‹=聾“P¾‰tLÅÃ¥âüaÇÌÆÆ†?ž$úÑ<‰$�Ð|½ëxÛÛÛóq <ˆÀ�–ÿ:Ç•ÚêÚµknss³\vÇŸt´›Ý«öÝI³Ö[sW®^q7¸ží°¤«¹#™þt³ïWYÎTŸŽú=tÿÔu����VZw�0Fèø3iyL›müi3iÿqü���€yisH9+fÝŸ$ÏåV-z=íyå¨õž6Mßç4,L;ŽrMât*7¢¤±Žø³йÇÕ}âm…éÇBqO˜†)LG 4­m•Á[Uu§cûVZ¹Yáry±ãBÁmsõ …@zIð£w‰¬¬–ÛñÃ_�Ά´ºŠW¼·²���à<ƒð�Ž•Eÿ����Àj¦#7 ë"IŽM¢HôH •Nþîþ" lËW¹®¤Á¶ÇS!Í”ÉM LÓObVqmò³¤úíCÓžâ+>ë}T/ÒI­†“û{N{†K‰“Ò……bžy¶U¦ç*Ò3Y¯6Q‰~,Å—9þømÛ¨6æà|`Çœ\.,%œ¦õ®yåq“½äôõà|¡ë€œ¾äøeiþ”Ë„ šûÜé“F/çêíø>˜Ï …³Ó÷»j¡��ÀÙ€Ü�Ž „?������°°(qp°ïÅ?9ňgK÷ÕèhS1 Áþ%,p“?:Aé)„:c)ŠìÎkJgÔ4ÝD(hˆçM¢m›ñòiÛ]UŽËù稿SR[=­ÍHJ¡O. Ñ’N9zä—¦i×™-ߟ¤p¤)lâã{ž¯fÅ›àðÓ&jKŠ�¢ß÷Ñ›‰nbQNá~´{&ü ë²ò–úËöÙžöJƒm8sm±sp,€:™£[°(°ÿþ}ÿYNjͳc©ÓÉï:~BñÏÉËî�à¬ÙÞÞvÏ>û¬{á…Ü«¯¾ê]¿žxâ ÷ÐC¹«W¯ºK—.y!Ðøý`1® º¦å) ü5Ì·| W3¥7›*üá6�pöÌ÷ˆ�Ð Â������XXFY�v0¸Á _Ì‘°"Nu9�…i‰Ò, ›hÔs/›^Ë>ç©^Ö××}0G£¡ÍõAŸý6‹ÑÓƒÁ |×2¥‚Q@('ØvbÁƒ-ÝHT‡9OE®åæ^RŠŠõm[VÎÓB(ím/tGÑg•fû'OC’aÿÿNö·èvB±ŠþVïd•ÿu¼­ï¹hEǼK“J÷3Ëö‹EáñT{ª<«ÒÄ ¶ìàà A´:PÒ¹±oˆÙÂW“è'N÷îsÓvÃc?Þ–ÿMáË;]Õo;P®ŸÆJ­‰Äâ$XNÂëæ\èOO�`e‰æÌL× }¶v^,Ïç¹Sº>Lpä)Ú~ºŸû6_qOïv×ü½K⟵µn´ŠÝ¯Mà‹ö���`U@ø������‹Ë˜OZ( ‚é1P‘L)M Ç8ºUÚƒ¤ãGAkD·D·nÝòÁ’P¤�Êîî®)ð#¡F«Œê•H-3 /„ †TFé#\‘pHå·¶¶ü»„;ªO#ʵ®ÊZy½k?L|¤ý¼v횟~ùå—}}?ü°»|ù²ßžÊj_­¬öÿæÍ›nЬ|@ç°Î?§áˆ¤cn}cÝõ²¿o%¼q…�H;ç¤Í:8Èwýl ŠãjTŽŸðxÒºvÙ1 cXdžÊÚñ!—€X¼;þÄåÂò¡�§ræ± ã¸ƒÕ´¿W-}W´Xdgõ…)ü|`Ó¡Û0&9>�œWtï|ê©§Üõë×}»Pí(»Ÿª%ñŒîgc×ÎS¹–& Ÿ+G;‹3\=˜– K11òš£ñú��àLÓ�„?������°@DÎI5?tìè$®òt»¹#Iå˜CFÂ9EÎ+çô²÷5/¹råJ™¾A #T§Ä5Z® ÒØã‰*LÔ£—‰.ÌiÅR*ØÈq•1‡äè¥íÙ<Õ©ý°۶ܦ%èÑ6€Ò¶•–Bû,!^¶Ïqè]Óݽ{ÇŠS¢!y–ÿÿÆzâ¹Þq×®ôü1•»>åŽUú;õ·½×uwïí¹›·nºá ï=v|ú¯À)'ÜBšº±D>­Çú†?ޤ”ÐHÇ–D?ƒìø³‘ÿ&üѱ¢c[â X°3îj¤. –Ç‚›Wwþ™|ðµÕÑT¦)5ØøþU¿}3$o�€kÃY;Lïa›-wÌiŸ¤g’“¥º¯š£9þ© k" µ 4/ߎj5˜ã fv�� '�p ü�����€ÅÂÜ|ŠÀD§“”©°4JY©“”º`}}Ãmnæb•Éz$–Ùóï6ª¹ÓY÷©¾ôê­õ²õ6}0Gu*°óàƒz‘Ä2ªC‰|ä $±„6ÜXŠ! ˜c­ææR‰LH¤mhZ" sð‘˜Çœ€nܸá·eÂ!í› —$Ð3‹Ö7¡“F¥ë³¾·öAå…ê0§ ½Û~¥Ã.'HZ žÕ#i—/8÷–'†î'î.¹Þz/û»ïúÀ›þÞ{ƒM÷ò½ î™çï¹ÁÞ‹ng;[ëRvÔörÝ[Ùsc‚¸´¾Ín¢ãlÍ—ß¾¿•mgÝ]ÎŽáÍìéÞ´=ïx«“\wJ§´HùU¬câ¶Pä#Ì¡(L…g‡]¼­6‡¡&ÌiÁ¶kïVOù+Xý…0ª­þ\DÄs^ÚŽ®-�°¨Ìr}²2–ÒUm7am®Ö:äÒîwìº7«s ��œ2M)$ƒÿ�„?������°€äbÅšåè3J;Î"úݵ¤ÜtKÇ<$„±4\&°IóêÑ7~$I^„1÷îÝóe,½— $PÐDB;˜ÓŽÄ &¤°ÆÜ~B1Bˆ–›£ŠD<ühzYÚ¯;wî©ê˜Ç¶¯íè³êÓ´Þ- …¹ É%H¢¢8½œ•@¢×MÝ—†îÑë÷àavœvÜîÞ 8ÿA6=Øt6R·Þí»µ$û[»´ÊfW}¨m!îöS}¿ÀŽa­«w;t,™�GÇŽƒa§sè¢c¢—VËLÈfbø˜ã€/:s¡[?+SŒ49õ4Vãr±ãOSÙxÞYø1,"MÂ+�€ó@¤Ä ïyMâPKݯßVïñ^JcGºJÌjN–I'­9Úw0Aoó>ÖwRõ¨]`®|IÍ]sá~“À΂¢Ÿ£øìß}ŠbŽE�8:������`aQ`BA˜$Yw£nž"I9ü(x!‘K¿àyyä5îêÕk^d)†ƒÔíl¸»w·¼sŽ„7ƒÁÐô½øÁFsÇ r$Ô …4/½ôRmô·¨ŽÅá´í¿ÖQ ÅÒwYª÷¹çžs/¿ürã÷·uT^ûT99ÿ}B±…´´Ží÷¤N'M¹½S (…ßu–r'%‚Ñq'—ÄjÃô¹øëÞîº{iKËö}9/ÐHÔWÙßZi:’j h-ÕWŽ¥v ©$l3Ž#:>LDîsŒÜ~l]oÄ™#‚Ö7ç*Í—MÇ»ê¾uëVQÿpÌhÒ6ãeMËãÔbá|]Ê~ó4]zwŸøû'§ü}Ž{{ÓοdÉÿ^�°XX»H÷ØYÄ?³’·ÅŽÚž¯wñÍ=ñ–‚ÚŒÒvöûC'MoRè’Ò4߇t4ŸÈ[¿ƒÚ ^(”ŽVÛ�/Aþ ³À1§K’ä"{•#-ÒP�p8þ������ÀÑHwÌÞK¼éH$ùèg;~Y·»æöööÝæfßuŠô[®,tGžá0úHt!Á‚ ~¼“P·[¾$ R`ÄÊJ,´µµ]H’©?Çl(=™Ü‰îO-y¸Ÿ7]€¾ìót)Çë§ùçýƒ¡{åÞ~¬Ûu÷÷ÝZ·ç—ëxÒñwo§ënmÜ«w‡ng¯ï†£\¸ÓI ±–ëø´`¾îNîV5,Rh%/ÉÉÏì|8Ø?¨íË~v>h':IgÂþ&õÁΡá@”q•kŒ¥·³iû¬wÜé¼1QšÎÓ0µWhU”feL ×ê`“Ú)Oá×IêËNš¤øwlõ%Ií=þ<˺v-å7?²'6°póŠÏØŠ‚X ÀÒcéUw6vJgÈzJÊÃè;»YûíXkw«rž„:÷îÝwº•olêþk×rµgûs ,µízv¿¾tñâY_eOD?0 #p–¤Å58ÿ��„?������°°(°‘ oòôZŠC{G¤¨ØÚÚqýèó^)pôÞM$DØÈ#Iá€Sˆ(Ê€vâS…Ù<®²Úf>=*R„Î<dZLizÌé°é$CJGâI‘„¢†`žfoíöÝ{ž¿ëž»ÛwÞ‰jÓu;›þx<8ø´_[ÛwÜöö0 "ê8ÏktHöz]_Ç ˆéIH£äUûr€Êþ­u×¼¨g8¶.uxNV.-„`©«Òx¥®Y“Ï©•š”燂†þ;Ó¶ŽÎSÛ¦>›Hh08h ®Æâ›Š[ÆökÊqì—?’6¼HäzŸàä=¥Óá8D?MŽbñ«©\[ú³ÐjÒï‹«šê²r“êJâ‹õŒTõº#‘¡‚49ᤠ¸«#aÓ5Km9 ]|Ó1[.ñ0aw[ªÕiô’ìÕu'9NÞ½wÛ]¼Ôómƒ9Ëví¬XªÛK—.¹7nà²�°Ø}°ávÈu�æá������œ ³tbÉÙGî(rÆñå“ %21QKmeA}^ë®» —Üúú¦!t:ÝÒ±$w*é”.@¶Ž½«Nm³×[ÏÖ¯D8ƒEaðÝ‚X 6 ýh𣴎;çƒ+˜8òH³›eŸûƒ‘»½Ów[ƒ½ì¸ëgÇãÀuëºþøôÛßùw¹ý¸$wÏéxÍV> ÔŽ9¹éäÇYâ…9–nËjæ¼~gþè˜/w±8vMŒÓ$¬ ÓÆYzaiä4]¹h kǼ>×Óª¤c.=±hdì÷ŒD-¶¿M‚—&׆2ÃW:ý4þÅŽ&'£øú¾Âtƒm.H±ÃE¼¼iš„?óžO¹è'i¬¿­ÎÓ:gJ(ê" pzÌãXV^'[Ä’v; yî„Iý6”Þ¶«k}xÝÑ?¿ÿí;Ñ´dØÍÚjgv¥S¦�‡Ðë§vo›ÓÑsVh³¬>������àä(„ ­‹£”MÔÅ Ù{'­¹¬4•5ÃOñ0¦îâÅ‹…ˆg=û|É]½zÕ "vw÷|j¯P<`®? iT´ÊIð` s>1„,U˜DÛÛÛ¾Ž£¤’XFÎú»ž¾ îÈdn?þs')…7ù1Ówn´ëÒQ§HÑ¥tXÁ¿V¤Èêf¯üøò›t”Ã#×[ïU©´Ö{… ­ç-cšÖqª2&² ¦½´¡«• Ó²ö{©^-WÝrJéLìXë2!‰ÍÓKót~Än ³:÷øß. ÐÚöL节Â}³ò‹Bü]›|&MÛ¼6ÁOü{´íƒyúµéMéÔ¦¹ûØzµ:Š$Mû±XiqZõàûä¢X�Î ŸºW^»rÅ=pý†{ðÁKÇqX·±u/»ÇíoeŸ¶Ý‰‘]>.\ÜtO>ñ„»výJvŸMs×K—_Zºj'é¤ÕÇègíím︹¹é&rÒͧy/SËÇj÷s®~€…$-þ\$üÑ+YÜÖ/�,������àäQ„â}ïU@Xb‰¼k¬ròHÊ´E +ºA:Ȃݕk‰‰ rA†Äy*¯8m‘9ŒøTIN)~P)ÿJ¹À!tZ1‡•ixXšbJeN ~6Ýh¨ce˜¿;>ÕW’ìºìˆÉŽ•5ŠøãPŽ>Ã4/_ˆYì8”h-‘=P1ms2W 8eV(�²yöž¡°ÃŽùØY' …Â;_ìs~ Ëí„õLL:obñËI‹ºÚœoŒvÁJs]"üÄ¿K[=MÎ?VWè`&ì:eB¬Ð¥)¬gÒï; µíOì×á ÇŸÄ%3¹»…çÒ’1Eô �§ƒ®e¸Hü-¬ÞI×°¦ûÀp°ëºk»îdÉÅæW®^ñi¹²€ó)¾\!üéê^”ŽïéøUH÷ƒõõ¼+Ññê€è�–…´¸BÅÿl)�ÀáAø�Ç����È)rí„ÓA0¸š=_û±0þ)ºÇlaÙ¶×yÁòtACŸÚKb‰»wïzáO^¬S¦C2si1§sV1Fp7G ŸÂ©pS9on?wÛÚaž¦]×ß¿ä† ùq`Çnñ9 Ù)¬—}(Üv\R:[å</Ò±&QÞ÷öËcÔD:&í8 EkaЄ?ö¼fǧ½‡åbgKogeü¾6×ãB˜Ä§( Oñ6±Ì4G˜¶õNòü2g¥¦t0aê¬8x¿Ç¿eüú;Øß"NÅ&ìo ‡ì:µ±±áÚBgBÁm•‘ó˜98…Ákµî[ø]BB!Øahª¿)m[žîfûÆö)iüÐGpæz¶¹¨µ 9§]ÇTÞ„”‹L(žŒ…›í$\��†tLõ3Ͻ‡˜�„?������°ÐX€;GðQÑ'–Aáñ”@hõñÎZÍ ÅÒxI Ñét‹ô\ke`Ç‚@² ¼ÄB¡ðÇöË- ¬ÛgÕ}”€8,1I.ÿñ’´4qÃAÏÊ~X¥©+ÆxJì¢cØur_÷jåJ·¦Å¡ï¯ Åœ›&üÙÙÙ)S}5¥× …'6?™Ä)¤¬. Äb¢P°‹wª «+^ãÎ6±˜(¤MàÓ4?Ø„‹£D5uMË’„5&� ƒÇúí-¥_|¾‡‚û=U‡œ'ì·Uý&ØÑßooo¯ö÷‹÷ø·¶z¯]»êÞøÆ7úT†/½ô’ÿ½}ìQ7Êöé™gžu/¿üJ)*Š]Ÿš°zõÝõÚ/û>&pŒS¹…”ûèªßË~O­…ÇVø'‰Ë‚-�'ÎÌ Ú½hüÞÖ£ëØýû÷½hR×r]§®\¹R^ûÂöÞ"cm[¡{–‰Ò›~-ßÌÈþ×)^‰.¿Ã3¸ÞÆ—ÍtZ×¾BÒ0¯q�àlÑ5·«AGY?D'hÏwõœ–]ËFåø‰ÙÚ–~� á������™2ˆ’x›“ƒ3Qû†>+¹…(xQú‡ùŠõ‘ÜU€Ç§GêeAûµ^°v¥OµN§xÕ… qÐ=NiŠÂõì³mñÏùÅ7…ÐGäGg5Útpˆ¤Ñ‰ á„“÷îÝóÇÓ@—;PÙq&츌…c©?’zª¥ð˜mrBÅ?qºª¦ï[îw’»ý˜[K˜^*<Ÿ¦»úÌ%ü)÷Å €/\¸à®^½ê®]»æƒ©æ²#ÏÖÖ–{öÙgǾBÑO.,ÌÝÁT×õë×ý29Ž©Ž×¼æ5~Ÿ_~ùåò·–b‘Oì¤é‡~ؽõ­Ÿá÷ñ]ïúUÿ}?é7þ/$ú©ŸüéìX9(ÅŽm¿Ñøo–x‘Ò<à÷_ßUû¦ß@ï ”ÛñR?²}ÏŽN¡^ÓºJW£ß‚ì&’Œ×Ï…Tn1©òLÖ?OZ%©\èjÓ�p ´§kÔµè¹çžs/¼ð‚{õÕW½[Ú[Þò÷àƒú2�Ùu<ZÛ-º–ê¾"ì:›6|í´Ð몼–]zײKx"õÏè¾Ï:žÆé±y¡ð'u¤ú€e 3H\¯›õQ(¸@I>íû+ÔfN‡�à° ü�����€³e¢óD§m]ùGþ•»¦˜ÐÇïuG9ù¬ûIöø›út_㊣ك°³ @ØïzÈàK!ìZØàM@«v¯J4gÇfšçö*–›�()ßý1¤¿K[iÙ1·WŒä·Ÿ4”ÙHÿã"ÀÅóý®L/äç­›©lXÛ~„¢•Xddï5aÓ˜Œj>Ld£kD:æV£Ïñhl^¼¯Mõh iôþÐCy·Ÿ×½î)/Б㉻êBÆðÇp¥Ð¤,“ý»xñ’{ík_ë~èawóæmïõæ§ßäv¶·Ý¯¾ë×¼€G£Š‹5Ýôk^¾üâ…‹î©'Ÿr×®_óâ¡Á ïS%j?½»ÄÞ~(&8OƒóAÇ·~/¹=üðCîÍo~³�É™èöíÛn{{§íeëOq—ÿ|#GÐ�&_+k®>µûj:ÕE΄ŒrÕÓK׸‰)¾Î\Wbîù”öW÷ûÜ&:—Yÿƒ‘Ûío»þÖ®Jlz bÄ4økk3øéè^•¶¶éá�,>»{ºéx¡éë×ý3ÂfÖ6îú~ WºeÆ´>�� ü�����€c%v¹1W©ý¼± sÒ†–cHÏ wº ŸjÝRp‘ÔÅ?æˆÑäf§DzÄßýXâ6'ü©}Å´pÃI ÷žbx}.è©D@–~¤ºáØ¿"0W®òØÄ¯rœÇwx¾„¢»Y:›ëÕñ:ãc³ì‹1&ìI›Ó‹•Ëœ ³wþ[ XÂaé¾$\‘»‚ÄVmßÁ¾«9™xH.O>ù¤䑇ÝO=æ]ƒ>ø¡¹gžÔ¶=–²-Qj€nqÅë"žð«^ù5°ëE?þûÇçâ”sóòåËîÍo~Ú=ýôÓþ³¾ïóÏ?ï>ð¸{wï¹;·ï–×÷ð·unºollzЧŸ~‹{ë[ßê¿ú«ïvùȇ½ÃÆ­[·Ü;#ˆÎ…?iq/•N‹GÒ 2�€c%nOÖæ7ÌkÂV…™öYBÌÇÜ_ã{ì1?O©¾,£®÷Ö­Õ»�¢’üQ —BSè¤6¾N.Þº³í¶w½°x0<y‡‰Xøëx’@ùìï,iR¿¶"ü€ ³‘õm\»äE-­¤ÚÆûýA〨Yž¿âç!�8¿ ü�����€¹°€Kîj¢9Ö±8>Deëó ãŠ$™,Í]{ºcÂçÂÑÛæúcB…Ž«¥ýJwöå÷?Jðÿäƒ>Í™(Šc;Uв3xvôk²Sœ •°­úÎIëVNŽ&±\ìªÓtNµ9Þ„Ëí=N‹Õ´Åû×¾=W#þ‹ÓjI¼£k‘Áê ·2aÙP$eÛ çùôƒY'¿ê¸”š¸qÃ;è„åÖß8W‹9WsÙq­ñMSù¾w˲iê¦ÇC‹åkk=�—hGÁq¹É=ÈƹÓQqì)ëâ?…ß[¥1è®yÐÕ«×|0]¯ÍÍ Ùo±á·“$pJ0º€ÔýâÂ{sljÄD5”W�˜ߘl™¥)&cA¥®É ¾ê§t‰–¾Ð\Þô~º¤Ñ{K©èb®ï­ûŠ}žtö¢ÔÑÐíö÷ÝÖΖOÝ(×µ4nž�¥‰cµ3µåIäø>%HÀºÞ[R®E73Ò}ÌAÜîà\9-zÉ—µ„ÝzvÍ^/®Ûb/»ÿ„…¼)ÜÒ>œA �ç„?�pbĸÓ:e���`÷´–œxˆktI{Ia{mAŽÔ;ª¤Q qp5°Òï'ÀìÏ5ˆgL`ÁÈ´6]rgvì¶u&Çó'=ç…E§‹tÆEƒá{Óç¶´`õúÒZùy:É`”ÐEÁ`½ä¡i‰V(–SÍG?úÑ2:Œ…ÏÃ6_ ϼð ÞåçùçŸsì“ÿö;nï öÝLX3.êÌþl¸š£TüMBeäj$·#í¯Ã(mmm¹›7oúeÉ„ ƒ­­ÿòË/»÷¿ÿý^4¥:ïdß[¿‡–79'Íz9;f;–f=æYì°(´è}Ê%5—¹&ᕳ”^¡�S×ß&§ãø/M³¨2Û‘@I÷)ûܶ#Yëºîå .ö]ÿ`Çír‡ºÑ 4:’PœW¹NÉ ×ð\Øì¹Ë7nxÁ¨³e~hüLfÅ„?I´ÿéÙ¶§&m½£6þF¯ÚÅ´ö6±}=¶š�ð������N—9ƒ›•Båª,u®%lPRè.B•ÓïÜlÛ½u+MÒ0r¿ó¤E ¯RÛ÷W7Ì«Þé”m´¹ûÄb’0ÕHèn €L £ò“R¹LšnÚŸ¶éÃvŠÛw’„½,Å—1z…¢•Iû¨2{{{^,$ñŒ„0Js%7žƒƒ?Ýä€4–ÊÌÕE< Ôjîܹëëº˧˺uó¶ßÞÖÖ¶¯?N3IPcß[¢ ”îÞ½ëÅ>ÛÛÛ~{z×w¿÷xù´ÖѾ¼òÊ+î=ïyw¥Hõªí¿ÊLsŒZ(ÆþÖ's-g47œwBÑæ¤kƒ]Câ“öÞ¶¾ÜbÚʧS®£G'­íƒOÝ•(—]wS—§C¬®Ã–2ÆÖib˜Í?Èî[}Õ·ÖuéZÇíngp Nà;5]Çšîq“Êw:›.¹¸áÖ/_*æ ü8á3ô œ/K$ü©û™Õ ç.š ¥ç‘Àyá�œóvÌκ����,ÍÁ˜RÎP ÏNª÷jż\Òžò˽8 ¨Sÿ1W­ŒÂ…>6Ä8œgÅw´ í,ëN“VÀª’tªÔt¾[=òpO\×åiŽìœåN)ΜkòßêPnHqÒ¤åèLÛα¸X:&ü S•ûLä)¢& FªuÆ|ܘsO“X$M+aÕaÏ1‰zärcŽ5rQÓuI̢嶽0}YSŠ2 fät#‰\¬sÇ׫õ$ŠǺx©øC%i-˜-1ÒÝ»÷܇>ôᬎ۾~½ú¾«ÙþígÓ/z¾ƒhr¼hBuß¾}Ûýò/ÿ²ÿ®i[¡ØÈ¦Ûɯ­æú#ñêÑß?\ßDUñï·øØ=Ì&«{Zõ–Ö¦ï`.âöfé„Vs}tµ{P~ïMÇ®-±Xu^ÃÁ©\§L|ªk§K”†Ì„>r¥3ñÏ쨉:ókq×_Ï%ÀÔýÉÚ)§Á$áOºÿŽ$V�8'4¥ŒmršxMH pÞ@ø�‡bÑNÛ¨ÐIë���À¢wf*žç^½£)wÉ;¥†¨\šÖ„;ãíMsÈp'̤ ¤3,£Cn%IòéþøÍóÕÆÔ&I×™xÀŸ;Z–&…è')ejšNÎÉ£=“Æ÷6HäÆËD®?á|¿_IR ÂaÇõ4'‡&ñOS}­©ÂæÍŠ®=æF#‘¹ KÃ%AK¸q`ÙÞµž9ïh?ÈÕ»ÜônÎA±è'ü}$ë×3áHØóž÷¼×§ÐzñÅý²~?w'’ðGÛ0‘M“¨(&tü±ïÝöûŒ‰“ÜøqaßKû àrXÞê6ÇŸ£âO‚¶;áìGÒÁ™9êX¦¹ø´• ïVòo£ m¡¹–…×êÃ^ovwY]ƒRÿ—sÜ×®\)¨Úî¨úèÒÙíº¹Û·»…`u8¹K—.{a§ÒWž¦èÇ3ç~_.öµÛ îGI“Ë‹¦å~’Ì1w‰8«/@Xá„OIòyž,’9–§öÅÓqÔ4éli×eŽzòé&×”æ7›?júû¸±òs €Q�–„?�03M¹M„¸áƒø¢uà���À Ñ"ŠÛ‰®6R»¹ƒËÁùçBDЩßIƒà'tÛP‰Žï,u'×QÚÑtí-B”Æ’i}yâ\rÅÊafò1Ú¯‹s ÙRƒ&|7¦‰Q¦îoÓt’úÜ7a Tl:ãøÔ(-©¾Ú¶~ÿaá` à®}ŽƒÑÕoš_ÿÂåÚ†„?ï|ç;½‘„:âùçŸ÷û¥€±æµÕ=é»Û÷j+ßVWõ½Uǰ&š¶ÍF§£³"É…xú¹0¯à%š¨mìÞWS‹I8Ó@3M‚ÒYÖi:u퓈1å"9Ç´ E硸þ@"”´zÍmÁ7ÍRϹýý=Ÿrgç¾[ßèf×ysÌK]'qn^ÇŸ½ý}ÏÐýBŸ«W¯úßD¿ÍY0ëÞ÷²ýÝÜ܌ұÍ"ìY áOÒ8wiîIË8í½OËÿÅó‰9LfaÏ$aPH,\I¢÷øsp¬Í³¢éø¼9™oͦý=^|Íé„eátqß:¼[vçªÍok_NÜ>íL€s Â�#š˜·PÎ  ¢‡B¡‹1£A=€ÙH½k$†Êé¡,ì ®b����`Y˜6ººm¹‰|×Ò&4—ˆ4­R(+RR("LJ‘æÚÂ1¥pW)DEú§öi·»æSìäAü®ÿ,äŒ1Æ©oê.Ay'sà"äëHŠÉ£‘¬SÛ|Ä$߈¶ÀúÑD?gÓžÊWÿõ¾gá>e½ùTZý•³y4ìü.”5ê÷¦AǸD+iûˆØ$Þ s‚q‡úBqÍù1œ¶S*Aƒ«„$¨¢ò.ÊŸ‹yQE"W­Q0¥SzΓòÿùÖ’J15¶¯óžO¡øG¯0UVüìn'Ün¸mà„é¶šœxš÷³Ù¥bwwÏ¿ªMk›·‹zBA+_Ó¿w~M3Ñ¥m¼\ó±cŸUG’ŒÜ$G`_²áï“ßSÜ™bÇRê¬#›¤™ÖB_ œWòûˆ›x‘ªµ5' îò²â¥{“Ú‚&â´ºbñꬌ†&º D?Gº^÷þ`žwèv|›Uý«Ýnuîxa«›‹µîÐm¬oä)+{ëÞ)îòåËKxÝiú½–“eùíi?Õf²ö”=ÛÁ$ì:5Gñ©­xPMP~lý¢=Yø¤‡ß¿¦Ý›ißïØ-ÊMß_¼¸'õöý=Êî_cåƒÁSá¼ð=.�ç„?�0FØáhv¸7oÞtÏ>û¬oL¿á op7nÜð‡;wî¸~ðƒ^�ôš×¼Æ‹}4šPå4jäÊ•+^(´±±Q4\’Z'����,…=Iâæ‰ÀZ]c[Ê$ag[ð-ÿŸ–¢/üéçéòÀ«seê¤rÝ ZJ›”ÕÑíöÜ… ²@G.øQûôâÅK^PtïÞ}·?Ú¯VIM`Ô©¾¶ó¥®uÜZ¯W¤©ÉÚ¸C$ïûÔ y{Ú:Û¿¯¡à!ÚÁ ßÁÊOé´K'/Ïÿ¦gÙñw–™dúæ§–oû}Óæí%iuD+„¹¦cÆ¥å9”¤}§‘œyZŽu²w #\.±Ð«(‘–û—”B–´}W’ »Öúýš×H*›4Šºì$U 5ò$V& ß‹m–—•@èÔ\î‹>†Ù¦’4Ö—TâŸÄU¢¡RÕδNqåèÙ8È2oaÊ«i®:ññgÛÏS†u\e&vü·}§¤ås{9í^x kÜÅ´º–‡×fÛ·IŽAMÓ5ñÏY]»’ð #8aÐ¥í=¬¦= 3Óöåõàdhjƒ†óâåmåëïy[Mi¢n\¿î®_»îÛ‚v=ôù™qÿÞ¾ëïßË>m¹“Dƒ,{ì1wýÆ5×팼ø]Vøcý¼J¦¶°úqóZ]wÒÿµkuÄ?0¢ãXŒ;AA#É<çK2åù2‰Ú›qÛ3^_íö‘kûjÿÆ™oÍImåãaÚãe¸u²­í¬Õ„=‡½G!8ßpG€1„z Tîççž{Î[‡ç#Mº¾A"7Ÿ_|ѽë]ïòí§Ÿ~Ú]»vͯ£‡G•S}V—���€åcšÈõëÊžBß`b“jTvØhiRj£µK'ФðW¨2¼ëO!‚HB1DáÞãÅ7‘cFÙ!é'òt êHü£ÀÏäbvµUå–¦ë‰_ªSû`/µu5Jº×[÷û< };Xå,xøÃvv¸iÿs‘+G£ë;«-ýp8Kjž¶vvôw85ž‹À¤ßç°ë§nZ§ñZö·½Ø[sëkÅHýŽô+Ùªƒ\Ô–"i×õGù³W8òÎ5Ü ÃF;¢eõëù«·Þó¢5ëD¶ãPÇ¥ ÆÐ|[Úæh0l¤Íä ü~©«Ä8þ N+Ÿ°²´ÁÑ þÞ@(æiØ +ãßNà™s’Øgš“P¸?MÎ@“ÖK[NßJ 3 †I)‹ƒº3‘+_mU}—f;ªkµÿMûÐÆd§£³èG˜vÝLƒ3åºñtãgçâ‘Û�ç‘ImÍ&ñO|­ Ý*ágþ®{ßúú†o÷ÉÙFm·°îð}† É·§”Š¿Ó,Û©ßuo¿rå²»žõ·ºDé¸*Ìn'¼|ÌöÔ†•ÐÇ·«WöÝž†pâ°.hÍ,·è'M—wß;n¼{UvLÃ$ªgçÚ¼±p§‰wÚ/ÁàÚ5Ù„5©mIÿráO’$áZA…iÐ>unzó(×ê_>Îâ,°Ü„Í95¾§%.¬& Ï> Âq€sÂ�hÄzTîçgžyÆýÒ/ý’ï4Öò:ˆåæcó•L‹¯}íkË#†Ž4á(gIwˆ���ÀâPÒ„bŸ†rA�µÒT%ª^½RÌSÌ÷˜PfT“äî(Ö+˜§>¨ÒЪã,´~ïv,µW§|©ƒXmÚ‡zȽzõšw­ÌSŠ¥eªÚÜQ#)ƒ!Z®4·¯¾úªŸ/ÌÍÍ ÞíǶ«¶®KÚŽ„;š âWž"7©ªÏZ_mi­ûüóϻ۷ogû¶Ÿm{è`ùÐßóÚõ«îº9¡®gÇd¸KGý|´òÁÀmíܽ­ÿÜÕ”.RÖ <É5Åž•츓ëêµ×ý´Ò5ÛKèX×±¥cMÇ»Žc ò8íû}iâXžÅÒæýosj8,³®ÜÏ—³ Zf?K‡}% ª‚.³|¯I¦¶ò‡å¸‚švÝ? Âôsi ÄK£`U=S’µcê#åé÷�˜D“ø§ü•{åÊÑÓîG³`îŽQÍS¦§:^„iÄÂWˆ]ë—7Íò¬i»ïí~q6÷‡ã`ÙÅ?Ü·–‘´ås\,{I{¹ø§œW y\1x§t¥ÞõVÈ7)´„Ï�ÕòJÜRÛ‰~FÎx)˵êŽÒHY£Þ†ÐQ(-œH'c‹sþ•nž…(?q• u¼myÜ"J�X5þ�@#á×( p¨#ZÆ @h„ŒÜ}^yåwëÖ-?ÿþýû¾Œê¤VdzÖÓ|?šµèLÖruz?øàƒ~ZiÄذ€Œ:©ˆQ§µ:§Ãý���€E òÔg׆`ׂµæjǪ‹HEuaJ0s­È?ûÑoQ 'w¢ìxǵՎÜÜÜpýþ k¿îâŸ*è“×QmR뮯÷|»ÖÄé³ µEÍåRå%”òv±¹ýh Þ/]ºè÷;Oõ5ðuªlmÛþ ïÖ|ùN.^ò)zr!“Ò,¬u×¼xHßà •Š—í“9´´²Ü1ƒ3dÖà\Ü1=Ûs‰•^ï%î¡«÷èC]wåjÏmÊGÇúHB²Äítݹ¥¦nwû¶Ûß;Ⱥ­7œ|’±‘«MÛ©„ݵŽëöº¹ûOoÍ¿6²sB"ŸÔRz£úuHõ²åyç|2¹~ÛDV®#ç¬à'©ÒyUŒ;[¥g&ÜXvrŸæ¿OùÛ‘ß•t˜³9•]¨¥Ê ׄ4_MAšZôªõšN¿À¬4µ  §ÕøòP i)mÐbÜþ²yVvúªmù<çyXÇä‹á(k÷ö%O]Ù~œZsÚäDyz„Û´ß_hßÍ…^èûXÿ´Ú÷ùß"…õØßÈÚѶÌÜcñXø÷ ˜k½úºmP€ ˆW«ÓÖµV¿Õ'¼Ëb1¨ÀœDÍ)4<¶bwÀðø¶~sû=lÀ‚P}±Ûhîx•ÎÕ÷± áùS?®ÇEÆa¹x?¦g'Ū´yÌÕ¶û'µÁÒáß ‡ËŒø ÿ̼ž·ÿm°ŠžEÍ'?Oªã¼ÛÙÈ®TÙq6Ê"¨-šÉN©]óz%¼ÉŽïn^^¢žíí¿lcc½v®ä¤#?ˆEõëYYç® j‘¯ÐtþùçŠ^¯ë÷»$úÈ=(Mí;¨Žì¹~c­*ï—Ñ„Ëíâ?~PèÔœ1#¾ÏÅDZ3�0þ�Àñ…ˆ¾~ýºñ( "Á0ôYëH–€GB L–ðGÌrÒ´5fõ £üÔŸüÉŸì·ñs?÷s>•˜¶•O.¹§žzÊ}â'~¢{ôÑG}™4���ÀBR¦§ :ËÎe/ªFͦºôP(l®-˜­Ïy‡àš ¾L·Hk¤ŽÅõ¬ý¸±¾éE?�©Ólkk+k§îfÜ{¾1UG¦7ä‚›áHmÒƒ¬­º[tVýôÖÖ}¿oDh›y·+ƒµïìlgå%þY -× 1ÏÐwØIx¤e{{;î [Oû›×Õñiœ|p ë(ífÓþh|'k!6ÒþKP¯¶uÞ‰_¥~q³Ähÿ›8¨16tJð.þÇFÔ'­‹7z÷ÈÕ{îµô³ç£}×Ë:¦GC¥•ëgé#·3ÈŽÛ W³éŽ»óʾÛÉþùÔnI¯ª%í{ç;ê³c®?ì¸ýþ¾»wÿ®»·uÏ]ÈÎ…ë7ndçFÖùžuœû€`_¬ƒìØëº½ìØêgŸu¼z½B'i¯4ôðkµZpªDsIÔÁ_Ê ÃÉu°Ÿ·çÕø,!í#±Ûƒ2ñg€óL(<˜eyìÛ—5Á] øž×Mí- #t Ûevo³€¼¹£/áï#¡ùý{yê19´·¥>ŠÅ>¡ åiî¿ýþB}Ãæ@/$¨WY U?sžž,Ooª?³ý=,å“ú°C1Œ¥Î Ëéûª.ÂXºT=K¨?[e匨6¹•Ñ`Õß$¼ÐúZ׎ëÿÎSµ]ñåÔ§®ýP]Z®º5?Oœ»—ÚÀÙPŠ(ôÛ¨^ËÕÿ®²êGzN1±”‘§6~À—W_¾~cÕaƒvs!FþÌ15lÏÙw±¶Lëè{iÞY‹a–{¾”û¦ŽEýÞú»Øïlç¥ ÄLxe¸PÐfB,û;ÚñgÇÑ… ›îÆ×ý3©Ž=#çï´L1-‡Y¥ŸÖßusã²ëfÏ£aî`;fÇÉÚ¥l[\€—=Ç(õàúzן/}÷ÒK/ùe:uÜåÇFâ9ŸÎ¸?(ƒçƒnô¬.,ý¢bLÚ•í$ÝÚy\9üäçÛ({6 u½u\p>xÝ]¸¸é–‘òZ\ÀD힉ÇgýÐÞ8¿ ü€1b¥¿PÃL .5DõºsçŽoˆ©A§š= iž–å Æ=?-áÏ‹/¾èë±F«z@Q¹|ä#¾q( mG =½ì#fÙö����ËÌ´@Íx9k·™‹O”ê+©D>®A¦yÙ´pý‘ƒI7ûg–Ý&ò9¸QÙ!mŽ9j»æ#(G^| ÷¼ƒt膃¤¬ç­i6½ç Ö¡jÁÃ\0õÒçµ5lÜòËlä­ÖÉßóÎ[µi­³<L5f¤¼³}Ã_õ¨ºP'° l4c3ÓœhÀ2c¡˜Sô3öû¶ýÞÍ¿·3r{{îêÆÈ]½Ðõ£WGC¥€ëç—ƒ¡Ûlºµ$ëävÙ1—d[èùŽuÿ\æµr•ŸNéL`ÓIZŠsöö}àOÏ`;êlOò€OMˆS<Ké8Û“0n8ÈÅ?Ÿ½ü9Ù)FÔgÿlGtZ ÂR=ûmŽBÛ}€åÃ;tÃS\~ÊûšsõkÃô~ ú:`™µí¬àÛ„¡ÀbZýñ´ Ë“$9et:ãòYöªíZâ ×½ sžôŸaîØÖ#áOìêršXÛY‚µ}ÕÆV[þ‘Gñme±XûEÓæb(ƒ�˜ÐÆœ2ÍÇŽ ­£m¨M­Ï¶\¿‘4dï±èeî;&š°õL¬cûP9¤ämwsIÑ´ÚB¡ðÇÄDÖö21F(̰eVg(üÉEN½ÒFe$¬0á’‰‹„öÕžEìï©rê·×´–ëÙDeL bƒpMh:ÎØ÷°ß×ÞµMµ/õ½L°tÚ”íáw›ùÈŸ9Ï ý ô÷°gF;þìx˧ôKQPè eÂû;Úñh"7;ÞÍ!+¿>tËx޹þØßTŽ=þxcö,²ÑÛôÏÏ>v?u÷ÝBøs -¹Í ëÙñ³YîgþŒ¼æë‘{©Øß?ðóõ=u¼˜ HŸ|àŒ={çâ ÿL¬Á4#W—ýäá*û»×…?šõÚ%·1Z/§}jð¤uè„;é¿{2¥úðŠîãe¾$hO&±ÃÏìmİ=Ú¶íM€Õá�Œa#­ál IÙhgk@ÚCŒ­g˜m© yÌ9HJp©Çõ`g6£z¨“Ä? ¸è¡ÄÒ.„õ‰ÚÈ����8q&lŠ€Jiè– 7Õmço,0Z –ZGu’Ö&œYKÖ\.JËÎ÷|$oâGªœÆU{3A»î÷ïþý-Ÿ²Vïê$´¶¨œ{´Öa©:l4q<":ì�WÙ<ííí²”µšö& b¥ùºvõFÖVî•"{½ltä0ùËG:Ê­í‡Ãn1ŠwÝ[ „x§©û÷‹€”žÃÔSœäÀ¥OqÅÂÑ)–™X- …¢pt´ÏC9bÚƒªa�ÈŽE :”)ÒÊñǶm%ÿ}ò 8€U¡ ×A˜¤ñžÖxI‚²nB¿}phrö‰ïIá¼êüÊÅåqÛª|ÿŠZ·m˜«J(Oµjí¼övÙ¬¢ŸrÜt’Ær¥Ùcð»˜cR»½&öY�a®ÚãïyÏ{Š6ú}÷ÐCùö»ÞÕ×,,õ–ú“…DBj÷›K¨ v ë˶Ïñ|kϘ˜BÛÑËœžl¹‰§Õ§ iBA†mÛúÎíùÁ¶e}å¹SéFé$eÎùÖÖ·ç‹YÛý&6²v™ýNV—ÕaÂs„±A»¶-Œ˜X*L“:AYÛQeõwRÊ  ßè¬ ÿÞóR<ªž:±¨ÑŽ)kCÛß!tüir#‹O&¾7 ¹Yy±PqÞçÇÂzöª…lÂ8 „&z^Ùl{‡Ò|›ÙïôÝZ¯SƆäÌe"¹üzš_»Lhç|:Ò,Éåb!‹-Ù97ȶ··wP¦ÛS߀ÒyuJ‡Òâù¢ |ö)æ8¥" ¯¹uÃÖÅþhºÛéæ÷­ÄÕÜ~šú’ĵ̟ìþ“ÐîXyþ�ÀMË löŸö@bóÕ0 G ©ñ¦‡6{ˆ²‡&bVN <=¼Ý¸qÃ?ØÙIÓˆ¦Ï����p64J!P(ÚÅÛY¡z:²Í—t³ÎÁµžK²NÈNWA òÎ:ýó.=£ªC7¯{tܧµQ¶6j7&t½0"ìì÷¡~1R7É7•8LËQIâjÝ*X /R/æÈG"›CQùõuå…MÖ¶Nåý½}§¯¦ý ?¶m­·Üš‰Ø)ç°u÷0o}óŒÐ¯8ŒÜÍí=wñöÀmÖ¼Õ¾2× ³Žî­­wëþȽt§ïnßÍ:·²øT¾E§¯þ?J¼ø'ñNQÙó–oAg~îžU û¹²£XÇô~Öa^ó Èâ˜VóhJðÏ‹ÒÂíGŸÂÝGë–ARW¥ú²y~D°ž‡‹\\Mš³­'Òöå©;\ÕÇÊb<÷—ÁiV³{Tw}ÓuײÀUwm<Љ~Æú1¦d�Î3“+q ¼6?©Ú]å¹çšR¤´×kbŸILv™·0KùP¸”Œ¯ŸVwWµ¯- >‹ð'oœ»3Çö&š1Šþ&ü±¿‹‰Lò¦ýBü ëŸ6wû»šcŽ Bñ–Êk{6hÀÄáö¬_;ÇØ>[9sµí†ýâ¶?–Â)êèûYŠ3si‰±8Õ—õËëeŽ;öw77£°žð{é{ê³9…ýöVÆþÂê±ç#ÍÏS6õ}½ÓΗ“$vü9ì ‰³zƲßT/‹«˜ ,ö˜°ÌÊÛqn#Y¹P˜få-=¶=wçoKç6,œœ:Åo‘ïOWκ^„’_W”ꫯ2#Û:$ Ò²^yŒÊ‰ÊR¿©¾\Œ—ÔÎ)8 ùü¢ç_›gν¢ ‘Ðnùl?&üñªš¢Ï ccs£J¿ðR RsEîÏ}QÛ±MH–�0þ�ÀD¬a¯Æ—Ä9– Ø"f jŽ?±J\C‰yÌéGbŸ÷¾÷½>/³rk}ÔÐzJ÷¥:Ÿ{î9ÿ0òä“Oº¦Q=����pFÔ†ENc$EñÔw z±<˜‹~Y‹K8Q{›Y‡û…ËÙëªÛÛ¸äÒþŽ¥¹¨Ç;¦h_ÿ ¨»êÈK‹!Ï{¾LßÝÏÚ›aǵ}rzZtr«c4ë¤ï­¹ Þz¿ãöÕÙÞ×ÈWK56òõæâIél¢uóѯf­>Š:›ë§ñökÕImHÄqÿþ=';t'…Ùa½ËË"ìÿaÒ{‰¦ã|ò÷ ;zwîï·÷]'¹éGØ^ÌŽ÷4;Öô´»çÜÞž³:n÷ ë¸Ïºi:iÏ[ìç[Êþe=Õ랦fÇæýl=¥ÐºÐ»Pëäw­ ¢Pœ¥²ãM£æã‘Ò&&ò’¢n \ùó*É‚Ùù0eA¡aÞÉnç‰|ÐBÁŠÑhÉÅk‹FRÿœáüJ'lcÚ%þáiÁ,“3Äåën}ó²ë­oJ T éªë~¬wѼ֭8€óÀ$QÊ<ëççUÝU1♈ö<œ^±“Ʋ ±Àë_ÿz÷è£úvƒúƒ50Ô„2ÂÄ�昣öPž¢¨ªÇÄBö `Ç€¹˜“Hxì™'LÁk/`¨¿[ýÙ¡P#›Œ @]}¿Ô>j–™øHÛÝubÂõ¬}%än ‰âzÂßCËMd zÂÁ·á~Vƒªï®yö÷Q}) ¼Ccbö·ññþ=ÃãÜê=E˜Ú×^yšì<…p~^Ù3oþºxq”Åi®ùõ};¿³‘½²ç’Q7wѽ=׊6gRˆjY;¿zN®ImàŒ¾ƒ¾§š/Ç(@Þ ‰õžRˆ]¨Žç(ÕWþ°¥”¥ÄëøtÊËL>X)û̯.ivúÉ?×E«GxÀêð�Æíöà¨Æ™dö  2! åz�Ò+O¥Ðó‚}ÖC•Ö3›Ö<_ë~ùP£†£Êk¹¥JñeÖöÐ6Fx¸����X4"ÅIå�”»“$^lã;Õɧìtí_ºæ.=ø¸ìºý­—Û¹çÓù¿ÚØÜÚ$n *�PÙ{×÷IÛ³Î{娓ðçb>ÒPmÏþÚ ?ØÈJ¾Õ>«ƒÔF çûÑ+;1óýH gžÐå( Ê;×$ú^ì•¢i<°Z¥S1ÿ¿îQ8ܶMlÓ¦îöλ³·íϵNÏ]ÚìûŽs¹ úêÞ]Ï:Ö{n8Ò1ÐÉÒNQOâû¶%´ÙèmøóiÐz—ž ›jƒ/| ¨pªEÁ(ëL[BÇhoí ñÜñ#ê‡w08(GçnB騀a£õU®–ª‚þä ™2=…4-NYœ&Κ3¼Ú�ë,`ÖU*»Om^Ð]yè ·~ñªwÿ©¹GÁÚµVܺ]N8Œ ‚’¤îˆ6§k:ÿJ«ŸU¥kõn%k}w˜ø{:Gqçbôav/ ³ýNtï­„ºI!~ß·ö´GeÚZÝ×;É‘SŽŠúˆ|ðAÿ9tüág›6Ç“œé®M‚›Y8ìz“ˆ¿ÏQ©~‡³ÁÀÑ {'Kj ÿì[7ñõÉFtËG Ü®'żN¹^*ás9g”=ãÄ"ç$ u¢m¦^PÕíç¨\··.·ýêHâï1 Ö¯¶³,”×âĕ—$µÏ"v ?Ojr¾œþ�Àá¡<­?ü°ø˜SÏöö¶/«3•ÑË\€,³¨Ã^â-oy‹¯ëã>îãJ+Ç[·nyQ!zà{ì±ÇüºÖ(õ ����'O³åCp1iD%î±içêŠùKó•Ž:Þõ§»–¸ÍË7Üõ'ŸöŽ ÷_è¹íQêöûÞMdäÂv`}¤nU·›Ö ï4;{kƒª½é-ò³€®pÌ®\A9²¨-kíR „ ª‘²¹ÅºÚÂ&Ðgk/ÇmÙ±ýl ܘ¨–²ãÕ%EЬbÄv’ÝÔ«kîªÙÿ³sa­èðµNs dVÁþø]﹫«¾3×RÚ™@ͧü8A¿Pìc¢œ0 ԚΟ½ý=wç޿϶ñˆt[Ïö#¬Wn?¾o¾¡³™g;XlÒòüu>å¦Û¸ò »ñäǺkO¼Á]¸z#;{þ6ÉíÇ>×ÄÎM—óá>�ç‹1XM§¾]éŠö—/[¸Nz‡’¬}§û“/îììú{RM°wHúýƒ¢}™¯¨Î$ <ÏåЖ§ª¥ƒlÿ÷²ýß)„?U`<³Ï¶ß}ÿ[ ƒ4T“ÜfNš¤hÏØçùÚËØ_v¦3 ™$:U¦ý­tý‘HrP•ÿ¾cÏùM¢t{ž ¯“µ ‚â©›,”L¦'ÿ•Ø©©ÆtÚVºìù”äÅsS)øqu±O³ûOÒzîMZ�« Â�# âè!PÎ<ñØè ô`¨ª–ãXi €hZ"!}Ö:fÃj9…µ¾ê“ðç‰'ž(-W_yå/þÑgÙ»j¹Yº���ÀÙÓÜß, [O‚ ¯FA €\×¥4\¸ì.?øDhr'…Í«®·³•µ!÷ŠÑËÞV'ÄšE¹sQ¿_½0-Üx|Š¥ ŠöinO¿~ù²Üv. ‡”Äue‰/á\†ÖsáϺRÝji?6lnlæ£ AƒÒ‰iýþÁ ÚØqJQVì¤ík:Êê¤ö_µ¬Q Ôd«L'Ò☩¡£¸F<zÕìõ›–[7wR{Ù±"kûÝ<P™ý­åú£÷®ïÜ•ðçRvœuÝZ_ÎV:_�ë–µ¦Iž ¢wE©…²ç*Ÿ>/ñDZÒÏ%Üt²ãòÂÅüœ:Ø„?Î;^uL�T:þØÏRœM-£ý;Yp°ß»èºûûn*iýriu̦ãõè~æ v¬EÇcí}Æê¦ ¬ñµ-H `~XÒôÖ\¦ö1)ÿŸëw:¥)RGý—¯g÷¨ÇÝõÇߘ;þ\¸ê:>½E7=¥‰É+;|À…@ œ¬m9&(O§·-E¾n rõÛÂé®HM9Lsw‰¹…ú2MøS•·sÑ­˜Üݸ­½¬î§KÀšO3¶çжF8Ùx OêûPª»kÿßÏîé·ïÞrƒ]çÝ~jìdîеúv%„Ò[í[µ/ÖwwÝfŽv›Ö–ƒã&™à`wÚ·¬¡OU{àÏǽ¬zÇïy&-¯g!Ñõ-:&UªîÆó79Ê94loR}ɱ Æÿ¤–ú¹©lxõÎ]V‡noo׋쾺÷„bW ‚fßÏí�ËÂ�#¼ùëЄ<zWÃZóTÆF}šÕª¨…¹þhĩޕîK.>O=õT™#ÙFXkù#<âÓˆ©ÁnëY†1_����8v¦\JÅ@ÛºEçj®?µeEGb…$• IÖ¦ìeÁ‡ Wœ{à±,€Òs| ú»n°ŸUún4¢ŸQ¡%¨D 5‘A(­ñ“¹ GíP¥ùʇ/ðQ°¶+C‡´úZ.QÆÅk?šÛu³ý^SGœËá÷ñ$­/Q|ñÛô²õÖûUв´þ¿ø—sQd(ÿ4VtRgè4áÏy%ÞãÏóR -Z»’söüsÖÉÝ)FÌŽÒÂù'Ƀùq« a×££2ýR§¶³Ùïy‘AR¦ñò®Sz/\ä–åGÎÙ±jÝI1H·r JBYñ!­Tf5Tw÷à`bÚ¨¶°Ò ËmvÚxèžÖQ;[˜÷Œ·ŸN*y ÏÆ“tn‹B{Ü&šlE•§R¸ÔÎÑd<Rœ'yÔ¥w®oúû“R}ÉéGBÕµõ Y Ý „:º¯X Ë☂¢zЦI  ‘&ÿèóÆ$Ǹ00Ze÷Í¬í¶‘õ-î§»î`ÿÀ»Œoíî”í\¥­ômKW4•ªFk5¯¸ø¤õ™žá q{rÙe׈Ä]è®»* N±VùM£Àxís]˜œ›‰ÜÖÎ}wðܾåi¾*Iøa®Þ¹o8òmÝõuß6>¤³a¹Ú¸í?1×õyIŠ{x%$?ïÏ;§M½GŸÛ®£`Öq?Ÿ5m¯½¾´±ülu'㳊éd¬d§Ö¼ Û™EÉb–îWk½µ,Ö6ôñ¶| †+_V_è;þŒ‰Ï]öà\€ð�Æ0ëwõ˜cÒw™Å|hñÞ)R5ÄŠö .O8/Wú0½Œ°ár–y¦��� ±ÑÙú0Iä,¦R8ÿ¤y ´ÓÉÓ©³+I6½§ÓÛpzçŸáPé¾úEÛ³p)@iðÙ¹ Ý˜º±QÜ I‚ˆlˆ}¬óØú‘S/ª0Á·ñî).qe盵_»é¨ÔZ¸â»ºj—Ž@ÚøfaÊ–ÌPÆÿ±§,ŸeO‚ócGƒ¼œ+…vœŠÔuuǃ*…W·é*™î д;½ì‹oŒÒ9»tʬ†å3ý Î+³vÔ¡C¢ð']à?MS`#Z–ÔSUÐ¥ºî›È'±s¤Œ²$¥´³¶îÖ7/y±OÒ]ó.oÝÞº…Z_¾8ÇGg7í>i¾àüÒvœµmŸ/šìç¢ J4¸û}ï¦0ä)YX†ùý´l§¥¥@;m|>§Ÿ¦SbÝ${[[ËÛ‘Uã2^'ZnÓ.˜tU»S¢ølݰ?p»û»^ˆ;XÄaæy`±·ÛóïgÆ‘n1K&ú)ÿÇ¥°>µ,±ƒ3 ™<6 ]}ÞÄé£îÏô绦ÍͱÉbš$8Áón‚¤œW.+烟’* ³ˆ5HÞÎúD4Jóü1¶]ƒþŽdR;sZ´á;�Àê€ð�Æ€®"¡%xÛ¨›ãj4Ðh���X¢ÀE1/IܘëO¸,ïÊÓäXrMXËR%6ÏÚŸ#9èŒÔ™;,E4>ð‰~ÊÏa`¦Œä¤å[ j£æœsëÎDÓ£²T10N†E¾/;q€®iññuŠVGÜœDÇg0ÓUAº íØHÓ#~ O­eÏê0ÙåÚþÑϳþþÇB­"úXx¼U÷¡ºøÇÕzò²þÞ´~Á¿Kô“tóô^–VÈîg•ˆÔÛ©×ݰã�êL‰XH›§öê¸õdÝ¥Jï5y§GW¸ÛH<®­JÇÚôÝ h7*ᬵ!‹Š¹µ3“`~RŲ5/”û¦™¯=Ø|Î/?ÖFIƒz%÷9Ê5;wþé»dt†× #ßt–쮕̽`Á9Ëß?‰®<(.3³©·Æ ¹E§&ð‰ç'Õõ8vô)ÛÑg½w³J߬”±«öÖ²÷^.ôY—ópö.!P×»½š8³Ìßc’…>�p>@ø�c49íØÒPø#ÌõÇæÙº46����V…†ÐB’4« ’æÎ¨|QR•N …p'ñÁ•¼ckm=kgõ¸šk,àâE?e;5h—† |fäøíS-•C,¢¨Ö8^VB^°pÔú]t!PR}.Sz•eëBŸ¾«è I:…è§“»Õ™è§¶Þ˜Ð§e_'ŒÐ8o„ýˆé„¶¥Œ*(ê|:LïT^´½ËOöYmÄAX•ÃÏÚAß»-ÈñÇõª™7)+!µ-«æe}Y¸Oñ®|Ò5!=Ä:«m)€ÅgâÈŠ…§É].œŸ“U‹ ,ó.?E;QBT¥p–øg½·îÝ}”J\íLÿ®ôä�­­)Ê;•¸ÇÚ¥Éxj¯¸Ùä,IÌ`õAø�irøIËÀKÚhWßú°����KMÜÎKÉPû\èƒ\(ö ¦•Á–VÇUZ8€gmÉn>²-í#´Ç}ÂéJÜSE" £ÞF­·Wi¿�,ãÁ‹¤yy,ö)ʆ Øå'vêÉE”r¡Ó¸llÖrãû>X"(«Ç¬}…mmËp¹h›ï]ºŠ@ézXU;Pî Jï¥våhsä./ºápP }F^ô“µG#¦‹M#ayئ—5â}:^ñíT�€ÓbbÛ,�Õ„?õÍy[ЕíÁN"GŸN!òYóâžµn·|÷÷¯nî*ٵ餾NZ¶©Í8© �«Â€%ä4„5±¸'l$4‰~Â}��€:ÜaõÉ¥<ùǺиÓO%þñ#Ö,Í‚Ocxñ¬Á“NZ|®D=iÓ´sÍ.@Å|çÆGe— ö�XšF6»qñ³%I<R»JËyÜAP8 »&ú™²îÜ8s�ÌO­ï3™ìúS?ߊt( –fÔõlJAT¥Qñî?£\ä3²w÷Óeg£ØÇ \ÕÎŒçOš��‹ÇT!kvÑ Ý€âöåØËåâŸNáê³ }\ òNAÁº5÷×°Í ßcÞï �Ë Â�£i$K8?^Vëè���€¥g\h^ {Êe…À§md¶¹þL¡ìƒ£*’[’"tÒèTL—¢Rè“Fó‚m&uP’¸ºØ'©k��`ùHbM£ þ$ÍŽ?®øTó¤¶nƒè§UÀ“Ìáö3&LrcõÒç«Äa€l:Æ;EÖ:#?o­»æ†I.üŒ‚ò.pý‰;Æ" &'É“qú�€³¦MPSw�JۗゟÊõG©)-Wø*ËzçŸÎ˜à'NóÕº¾CÛ<�X þ�ÀMn>“¦“¨AÃ.���Ày¤Íõ'ið”®?ž<ÝWéÚ“¤uqO0»QºšØ§t¨Œ„>¡à§5î\(FÊ÷‰ö+�À2Ò¸˜EX¦`hKû €ÜX™X ¤@NSН`g÷à¼c}‰mïE¡Ö6[S`Ö»&d‘dèܨþHôÓ‰Ä=µ—«„Œ…=cŽ’é§Ú–��ËMÒ.Ànk_6‰~ü´wîÉÓxUB {,¥—•mßͤQôž$ÈÎ#�`ŒYGÜL[wZ=‡mlœt`†F���ÀŒ$±ëOR‰l¢�Mé˜àêâŸjýª¿ªÙí'i�ólÅüC±A»1mùìÂí¤�XZŸÛ›‚2ùT}^-(Š€\‹¨š® ~üz<`3& ö£m{Ñ>@N(ú‰?Ǥcí:L‹sSç£D?^œ—”åó—+?cb×.ü±w ‰¢™ºo��°ØÌÓÆœôž¸çŸâ~”˜È'pórŠ×k«'im÷¶Ï€ÕáÀ²RYN‚YJÛÔÃ���À}V†Êѧ6»©dÒœò«UüÍs®9µW“�ÈÕœ†šЉúWiHñÅÙ �°ÌLÙ<Ö1.¾IÊ~–q¥ú2áNîîÓä TM È´î/w$8§ÄmÌØõÇE˦Õ%GI ¨Zš¯$mNéÕ4í?»fáO·H1‚Ð�`µ˜äœ3&ø‰Ä>å²hÚœ}Ìå§rúqS…>c÷¾ û�ç„?�ç ²˦s<D·­��°RÌ´X¦‰{‚‚c®?¡È'tô S }\]ücõ5§ö @Å6jïÓ&Í�€ådB`ÆMtü –©Âù62;œn*S¯3MØé_ö',?“D=3‹Ê“¤”Å•îSÐi¦u·ŸdÁOÛ»kw;§o�`µ˜(üq38ÿ4y\ƒÈú@¦ jõÎ(ôI&ôiÒÆX-þ�¬"I2=ˆÑpƒçÑ��ÀM=3a%pÞh‹Æ—5 }Êb® ‰V‚Ÿx:lë†)¿\d¾—«E-Þ„0�Àj0Þkrü©ÏጉyÜ$!O}$w[Ùx›,]�*¬=ÙöneĤ`uÒ2J(öIò­‚Ÿ°í/?W[¢} �° $SÚ—Iƒð&èÔæ5‰€œ«‰~Ú„?Mõ7íCÛ;�œþ�œ'¬qÁè��€ù ÒÎ/ g–ÒÁèìØùÇ„çÕ¨íJüSnÉœ}\ìúD"ŸÚèïX؃ë�Àj2ULÓ ü ˆ4Jf÷4 †Ü´€Kk»’ö&œÚ\&‰~Âv¥1‹ûO%OjÛ(SùíÌx›aýÓ„?“æ�ÀrÐvO™Eø3ö €ÊÏ®Qè3Ë´›Aü3iß`5Aøp@ì��p¼ð° çšJü3‹ëÏ,⟲Ö@ècAWÔeŽ?aýÓÝ~¦„RÎg�€•`šðÇ5Hœk ”´ ~jåfýŒ¯×¼ŸÜ“�&ÑÔ®œk=OèDY ËÃþÓ¤ÁýÇ@ø�°úÌ#ü ?·µc‡Ÿp^Ò* j^æ¦|šö�Î�V‰9>þá6¼ùZ���çŽø>˜$ó?$s…£$™¡ÌÜâŸ`ôu’Œ¹ÿøÏ¶âÿ¡Ø§¾v·ŸÖQàe��Vƒ‚3ÎMÔ´‰s¦ {¦¯×´<Þ6ÚÀª¶%›>·½ÇâŸY\êÛ¨Z™Mu—õMØÂ�€ÕdáÏØtƒØ§þÞ¼lžÏÓ·1Û~Àj‚ð`E™%Hv���0ǽ‘‡g8Ÿä›rª¡í9›ø'_>‹È'ÀÔ—»rþS›¨n?��«Å¼šÎÌ‚ŸªŽ™—O„{¬>óŠÊ[üÓ\· ê¬oÓê,‰Û»��V’Ö{ÉáOÓç$‰§›…=³Ì›&úiÛ¯6èÏX=þ�¬:e`d†r���0û=‘{'@3Aû³Iüã\,ðq5÷Ÿ¹–×Úºõ@Ž•Œ;³Ò4®��V‰æ F{Æ5lçâÓä04}[íóÂ<‚ iâŸy¶7þî"ÑsÝ~¶™Î¹/��°˜Æõ§ÞìKæ~oõLY7þ<i`uAøp)iÃ|��€sMÛ(î‘pŽiÄäbžÆr­âçÚÜü’) »�…Ç? âžqQPŒÎ�X)š™¨it�jüÌ]&(76?Z`Õ™GäÓöy’ø'^>ï~Õ·7Þ†¬Ú«Íâr¬��«E» ¦½Ü$aμïóŠ~—œ_þ�¬mW-Ç–G" nø��p^{HN’ñ�M4ÏÍù` °¬Ÿø§Z'vÿ‰ÓYµ2Ή€¬þZ©`dv¸o.ØV3œÇ��KM2ÏHçy:킟©åZËŽïÀy&noÎ#þ‡õtl«ÛיާüŠOa?��çƒYu¦}žGäfXgÒç¦i�Xmþ�,¡˜ç¸ë��€“»'r¯…•eŠøGŒMZÜ\=XSQÝâð¹û4‹}¢ö3ç#�À9aüz?�™ ®Vð3^w}½©û p™Eü#“ú+ͲM£U\Þ°��–Yî!“æF ÔÔ†œGèƒè�þ�¬"‘8¨íAv|µ¬��8¯$ÉÌÅÓF�«Èä6åñO>c6÷Ÿ@�Ô.ŠN¹†ÑáãBùú9J0�`u™ØžK¦ &LZ+‡ý´C VYD7MófÙÊél龦¹ åU5‹}Ú¾��¬³8þL›ž$ü)&fZgÒçipX]þ�¬­˜¦À‡æ/Ä>��� ÷ÈðžÙT¦yUî«p^™Oü#šÜ\9U¯9$fàÓ ©/N&W��ËÁaEÛÕ’Éå&T’™Ök^·¾>�TÌ+þ­é¹¬‚C8�5M[ýñz1ˆÌ�–›YE£ÓæÏ*šGð3mYÛ<�X}þ�,;Áˆè±ùQ ¥ù´ „Ú›���çi÷Â$ÅëµÕ°b´ŠÍ«.ÿˆ¦Ô_ãËÃs¦]äÜt!P}û3^8_�V˜ök|ÒÖŽk-3»P¨qyC3íÀ 2©]9‹øGÌâäË…õ¸£ïw¸íIe��`õ˜Õù§i^“ØgZ¹Y@“æÍ² �–„?�ËLƒ¸gæÑÊ- ���p‡¿OÎ" Xræÿ4®3Q�du¸²ž±t qg—›¸ÇŒº�8§L nÌ,™Oð3k=³­°ºEüO79þÄÓq;rÚ7mÿÂm��Àj3‹sÜÔy3 |3Ý6o–e�° üXTæñ´V‘T´ Å¡}NŠ��ÀyÃÜ|Êû`ð¹íAýXî™Üwa 9¬øGÌ"�ªÊyû4žwÓZÍÉ1´­�`ɘ¡5k °Ö²s\hóÌK›øGLrÿi›>Œ˜|z»·¥ ��KϬý~­åæu:Äô´ù�p~@ø°jL jM×4ZÆ��€ÑØ™ôÍ6œ3fÿˆ9@ù‚Z¹zÙ¦ó,ÚÁÕØ�€Õg¶�È!FFŸ€à‡` œW¦µ)Û–7¹ÿˆ´¥-9iº\¯-˜êf£±N��XÝ›Óiç°î=³Î;L�X~þ�,hgf+ÜÐÑ'œ¾ìÁvZ@��`•‰ï…ñý²,,ç5V›Ô·°BÌ2ºÉýÇÖcëOU‹&‰j%éä�8׃ðfÎ`Î<Ûæ0›øGLsÿ™6Ïæ7 tÚÎÅ£È9¿�ÎÉ!Ú‹G÷ ú€„?�«J˜6a‚`¨L÷U¤3Ii��Ày¥¸ºà¾X_Ü àIÍÌ.þí ¿t’(/и^L½ÎQ��È™9ð1¥ÜôzŽAlpÎ8JJ­YÄ>“æOýõ<Åõ�`ñ9®6YrÈ6äa„=ˆ~� áÀ0öày&΋—î>¥È§¡žQöÖq���çÝû<¡ÈÊL{hn©§>Ƀ7¬³‰|Éàód/1MTœX��@#Éq tæ»÷p¯gÖ6å¤ô_F:A0>‹àgÒòI¤´K�V‚£\¿+�:꺇)�«Â€U Lç¥éØÑ§M4¹˜èÎpèèv��ÀyA÷>ORwýqM.?ådô�$iÀ�Î m#°'¬|nOaÓXÿaÎ9F_�¬ÇØþš=P2ÿ6 Â�LfÖ6å´r“\%§‰Íg=O§‰��`µ8ì5þ8Ä<ól›{ÀùáÀ²ÓâÚ£Ûz |Ldïqú¯@�ôÌ`€ð��κ÷µ¦ù ¦›„=I, Ö8Ì/�òkEÓéÔúÛ˜y»œ£��ç–£CN&à�uæqÿ1f5•;lû’ó��ļ÷ƒ“ríá¾p¾Aø°ÄL}�ŽÝ}Š4_龂é_98p¿icÃ��œt﫹ýˆ†éÚ{ü¹¸á<3KfÂÚ óf«ƒó��އ£ßO¸'yå³¶?gv•œP��`NC¼Ã} �DÇÀj“4¤‰–áüìõ3{{��à<áï} ÷Ä’èÚêò�$E›ôè Ó^���³pr÷”ã¹ç@ÈaΩð\œ5…Ê</��8Ÿ÷ýâ(÷îI�‚ãÀ²ºøÄó]Þ5eKgI÷å˘ÛO1ÿ¹áнcw×}æ… ��`ÕÑ=O÷¾¤“kâMÔS{wn\H” Ë· ‚xðÌ;ÂzÎÚ��ÀiB°àô8Š£ä¤sõ0mQÎ}��˜•ã¾gp€&þ�, &ÌiYØ,Š—%Aº¯x:r9øž­-÷Ö °�€•f”½tÏ«Ý “矤Å5¯ Ëx8ç¸1���Çm7€Åä(" IuÍíT�€óÅYµ iÀ, üXV&‰}Ê–î?ÁçF×—7"žÜ×ß¹ãþüõë��`UѽN÷¼F—ŸØí§áóLðpp$΢ƒ‹ �ÀbBÐ�šh»6œt›Žk��'ÜW�à( üXdf÷Œ9™Ç&]”î˹Êå'vÿ E@Ùûìí¹k÷ï»/¼rÅ��¬ß‘Ýãt¯ó)¾’(UW“ËO$øiLó0ÓÃ:ô� m����ËÏ,m:ß��pÐÏ��' €U¢M(d.rýipÿ Ëëý_oo»»Ã¡û_¿NÚ/��X ”ÞKN?ý4¥øŠ]~Ý~ÚÖyˆ�����XÄ���À*€ð` ÝzB7ŸXôÓ6OÄn?Á{™ò«Óqéhä£ïzùe÷G/_vŸyñ¢��XVÞ±³ã¾{kË=ŸÝß¼¨g’ÛOìúÓÔ!<m^|¯�����������8Fþ�¬�­é¾Bw[Ô0¿úï. ‚&Y@4œ§�éWß¹ã¾ûþ}÷i.¸OZ_w¯íõÜõn' ��XHäìsg8tÏôûîWÜÚÝuÏeÓ±ØÇ¿7Í›àöÓ8?€Q£�����������p üX"Æ>Í…šÓ}ÅeŒ¦Ô_Eÿ9eŸ%�úÞû÷Ý÷j½ì•ï“>—Ûq®šÌ+ç7Ažm�€Õ¦E “´¸æ$Mnu‘cOëgÝÓB¦Ê&MN?³yf(ƒ �����������Ž„?�ËN[º¯&§Ÿ¦ÏæòãªÔ^&øqÁçDb¥E±r…€ÇDA~{è'üì)Þ“&!P±Oˆ|��Àˆc…>Á{›È§\ÖÊk,½W �²e3‹‰bQPÛg�����������€�áÀ¢Óæàͯ¹5­ ÚBe°ÔEâ— ~Ja ~ QŸoõÅ `{cB p_âÏ��pþ˜"¢i5 ~bqN‹»O<¢ §i~Ã¾Ž¹ú´ €����������ÀAø°dLM÷Õæú­:ýøiW‰{JgWˆB¡O0?‰Òz…"Ÿ´aÚ¯Û òiü>€��Î "˜1‘Oð9NÇÕ”žk¢KÏ,N@aù†ýèöÓøú�����������Àñ‚ð`™1‘Oñ>Ñõ'tò±YÁçpzLü£‘ÐgZZ/›—O¦ugŸ¦4_ár��8ßD™¶t_I$ôirüiM6è§iý–ýmMM�����������p üXEš\â´`öÙµ‹¼˜'Hõ—iLëU‘Ò@ø“LüÄbÄ?��ç›ÃˆjBWž‘N› Ç?3‰~j» €ø�����������À€ð` iL÷5Åõ§–ÚËÊÙª®EØã ÷ŸØÕ'œ.¶»þÄŽ?¶]«ß5¤ü I��œ+ÚÒiMú<æøãÜÌ‚ŸIŸ[E?M" I¤iß�����������àˆ üXvBwŸ¦ùhŒÄ>¡#sÄ?áç¢ÞX�d.?¡»O;þÛM§8ýL " �XNæ¿49ìÄócqO1¯)Xc™D?µm5Õݰ¯ñþ�����������œ�–6qOK¹Òõ'\/þì\•lšø§Éѧ˜_¦ô*¶ {â_6¿\Ÿ4_��ÐD,˜irÕ çÇ‚{OŸ¬qyÓþ…åâeó|G�����������€C€ð`IiKé5q¹š®AìÓ&þ ?A½5ÇŸpÚ¹VPY%)¾��`ó¤üjû”Ëš~âé óZ§Ûö£eŸIó�����������'€U!÷Ô5ñüyÅ?VMQWéØ ~PXÆMHõå\³È§Ñ ��Î-™dŠÛN£ëÎ$PXfšÈg’è'Þßy]������������ŽÂ€eaš«OCÙ±”_SÄ?bÌÙ'®³ø €jó"áOÚ"üiù ü�8ŸLqΉ§“!NÓü&QP«PTn’ègZН©F������������G�áÀ*Šƒ!þñ«¹ºÛO,ôi�Ûª‰€,(:Éñ§-ø‰ø�à|1A 3ÕñÇÍ(:„ÀgnÑ¢�����������8Eþ�,9­®?MeZÄ?Â×Ð4ÏêÈ+�5‰}l~Pgþ1MÚo„?��ç‹I‚™hÙ4!P›hLð3ç¼Æm¸I»�����������N„?�ËDèè3K™àó$ñOé Wå\ã<×RW(5¡O(*¦Û‚¼€��`eIæÿ4ºý„ó§¹óLsù™¥®h?fºwq����������€cáÀ 0æúsñÏ$G p›Á¶Æêô+4»þä“-ž`?�àÓrH&ˆ&:ÿ„Ëg5ÌŸWôý �����������N„?�ËF‹ëÏ‘Ä?a=ÅûÌBŸ¦eMÛ÷•¶{âr���¢í¾pH÷ŸÃ¦®vD?Üç�����������à˜Aø°BJü#„@m ÆeQݱ'möÄû9i)Î��`¹˜WÓP~V d1ÏQP­Ü„팕�����������8aþ�,#-®?ù¢)â¤ájKÓ5“�(ª»Ñíǹzʯp¿Òi©��犉š¦esŠt& ~‚ÏÉ‘Ï\¢îc�����������p üXV+þ‰¦[Ý¢Ïa¸2mÝ¥ n?Á¼¶TeSÁõ�`58¬f^ןhz&מYÊ7L#ú����������€³�áÀŠ2¯øGÌ"�òåƒíL“â$M¥ ®t1S�€sÇQœÆÖŸ75Ø,ë¹Å«������������'�€ef‚ëO¾8™ì¸MO�5LÇ¡ÎtÎý –âê�p¾™UDÓRn^ÑÎQ?ëŒp������������'€eg^ñ­#æ�Ùò)ÌdÂ~ÎäîÓT?b �€Õ䢘¹\€æušµ‡è�����������΄?�«ÀaÄ?Mëµ€òY ¢Ÿ„@µÍ¹CBà��BŽ˜þ+Ÿ5[9D?�����������°È üXfÿˆ©î?á¼`þ˜(.ge t�ÀIsHÑM2‡°çЂŸIu�����������3�V‰)⟼ÈP¾pâü8èÙ*ª" ��ÇÇ ÷”dNQϤ:“YïaÜë�����������àAø°j49ø4k�…uÄõ49ü¸ö`h:i]��€câHi·¦¬‹à�����������„?�«Ê î?y±  «Ç˜äÔP&9d4a¿�`õHŽC<sL©¸æÚD?�����������pF üXeftÿÉ‹VAË™D@Uáéeš˜°O T��ˆ9ì½aŽõæ¾ÿp¿����������€3áÀy`P^¼ÈœèÀÓôœ¶-‚¥��pœâ¾’œ‚˜�����������à$Aøpž˜”¶kâjãÎô´„=¤ý�XmNIDsd79Ä>�����������°€ ü8¯RT­>9�š—`‡@+��ÌÀ‰¤‰ä����������� ÂXHþ­ƒSå0Ž>‡¨��`QI¸o9Ϻ“åË>Û���À9âÙn`ÞXÛp����p~Ør�‹ Â�hdR�4%ý��,!ˆ{�����������`Õ@ø�ss”À)¢!��8 ˆw������������*þ�À©BÀ��������������àxè8�����������������X:þ�����������������,!�����������������–„?�����������������KÈš����������€¥#MSËC’$����à¸Aø����������°à òY~šþ†ˆ����ਠü����������X0úœâ¿3B ����˜„?����������� ‚Ÿóýý����À¬ ü����������8cü@ ����˜„?�����������gÄq ~-Ç%ØA�����Ó@ø����������pÊU ƒÀg±iûûVÀƒ�����Ú@ø����������pŠV´ƒØgù ÿ†‡ñh}Ä?����‚ð����������à”˜W¼C*°Åä8Ä7‡!þ���€„?�����������§À<¢›³Ádfý½gèÌ›Ê ñ���������������N˜Y…"Ç]Ζøï4M¬3�ñ����„?����������� À41ÏaÅ>ˆ„N–yÓtͲ¢����˜„?�����������'È,›IeŽº>œ,“~ûiâžIefÿ ����„?�����������'ÄQD;'å�§Ç,?“@ˆ����`�����������Έ&ñÎýû÷-š·/³ pÚÊiþ•+Wjóö����À$þ�����������œ�‡uìišÔT`p:4ý-Úœ|š–M:&¦¥ C���p>Aø����������pÊ4 <žþÿþÁ÷¿ÏÁùåo~Ú¿?þøcµùˆ{���� ‰Ž����������€ce^‡\{ ç'����˜„?�����������������K©¾������ˆã¥K����€³·8.šÒ{MJùE:0���€ó€ä¨<���œ'à™T?m>���€Å n³!‚X¼ƒ˜����&ð`É9‰Ž€¦:y°���8:‹Ä¡Í���pú êã1�����–³è ·É%���À|,K€'ÞOÚ}����'ËÜn?Eûì¼¶ÒÚÚ«m¿›Í_ÆvmÓ±Aû����š@ø°$,êèp6���ÚYöݸ���ÌÏaÛ€³ˆ~’âÕI:y»,ÿÏY«Ó6lMÄ3HekóÂe«â¬tX±"!���€ó€gÑRÀ"±ßOÝýú®û…ì»îý@ÈG¯vÝo{ý†û¬½à6Ö¸NÀépÜm¸yê;é6Y۾Ѐy Ý�瑹Ý}"teìt:n­»æºkÙ«+ñOÇjs§NœJ½P\g‹(-æ•ï3¼ò¢ÍïËÖ†=|` ]��pö üXP–qTÊ2[ç@çŸÁ½÷½ïuû±ë}ô· <skà¾öÇîºÛ;£Úüßø×gþ³®¹×>@ó�NŽ£¶áŽ£ 8©Ž“l§-bû•v)ÀbB» �`œYÜjÔ¶év»®×ë¹õ ÿ.!æ§n”kdâu“ò®þ©¬4Þ“‰úº@'­OíS[Ú­†euáO2¶[I1‘„3]ñe¯‘Ä=£‘Ÿ¶Ïå{ü¹(‹‚‘PЃ¸Úu���‹wZ€clh�,7ÿá?ü¸ûãËÝ`0pëëëîïý½¿ãÞúÖÏp‹ÆÁ0u?ûÁ}÷îçÜý½‘ïLØë·_ComÜßû÷ú×ÜÕÍŽûøÇ×ݧ¼1ë(ír­€ãá0í¸Ónû7·žY~_Ú¬�'í6�€£c)¾ºŽül^Øt›^¤«ã(•b]aKÁL üI‚ÿ%å{³ð§øD^>iZ }R›N‹bi£€©ö^”¾]í=)ö»S¦5ËÞ%pêXz³$ßx!Þ1AO)î)އáÚ»^Y?‡ÞG¥Hëjû�“¡]��°˜ üXVñáÐ8÷ïßw¿ëw½mbuÞ<ðÀ ÷øã»·¾õÓÝç|ÎÛÜÃ?ìàôù‡ÿð»ïþîո쫾ê+³¿ågN\ggǽímŸçöööÆ–éoü#?òïÝ"òmßö^ô#Ü·ûw.œðç½/õÝ7þÔ=w'M4 uDüú‹}ÿù¿|xßýÀ/m»/yëU÷–Gz�à(ÌÛ–[´¶_¼?ç©ý¶ìß}–öe÷þÌÏü¤;N>û³ÿ;w÷î½rúË¿üo¸ßÿû?φÏýÜÏw/¿üJ9ýe_ö¥î¿ÿïÿ ;kþØûB÷Þ÷¾¯u¹\ÔÎ{Ík^ã>íÓ>Õ}Þç}®{òÉ'ËçïµÈÐn�h¦Íág¢{cíCRŠ]$¸G^Äbëw ¡ŒD3Nâ§;I§ÙË×T*‚L íKZ¹ùT"WwÏqÁçÀYgˆpJ7‰mBq‘¶íÿ+„>ÅþJÔä…MÚw›^[Ë¿[õƒû2¾ÍQ úQ?‡½$�óG¨ö€ø¸8- iíKmûÂ… YåCîé§ßœµy~‡ûÝ¿û³ü<Xmh×��,.�Θó0š;Úùè÷û^ö¯_üÅ_rßôMßâþÂ_øóîý¡/p°8üÐýðTáÏ;ÞñS¢ŸEçÁ˜8}Ö¨“áþÈ7˜¯¡Ù«®¿ü¶ët6�À¡™§=w¡Ã´Ãš¶{^Úsáw§ ó¢ á«¯Þô¯w¿û×Ü·|Ë·»?ý§ÿ¤ûâ/þB¤<oÐn€óH[ûíÈíº@Ô¢¾£dw×Ö‘Æ Y}/dIÒqkk]·Öëùf½Þš_[[sÝŽÄ4º'ÕÝuòézâ-û˜&õY¥j§ÿŒJÐÈ;ìŒ ¡ö³Ÿí£/^¥Ð¦ÿÛ/DIý¬u«}_×ûúº-ûWVÔ¬Œ €Ê6›¹ Ù~ô*„?&þéW ~?Û·ýn•бý½N‘¶¾×“ê“U½ìö‘<ã_rŽþš¯ù'îK¾äOº?ü‡ÿ‡sÙæ9Ю��Xlþ�œ!çÉB÷ŸÃ£é¯øŠ¿ï?#þY~ú§Æ€ºråJk™·¿ý‡Ý2ò¥_úWÜÿú¿þm÷k¿öëî?ñ7¸¿òWþ¢[d'¬‘EÇÑÉ`¨®žÕù•èl†`nfmÏw¹y8®ô^çQ „ŽŠ‚ˆßð ߘµ·Üÿô?ýî<A» �àxQ«D›\@3pÛY‘\~$þ±—,B¢˜^oÝmld¯ÍM·™½.\ÈÞ76ÝúƆÓ¬Î9Ú¤¥²§.üIK7ÐíÇ\}òôb#sØ‘è§ûh_4jww׿ö²×þþ¾Ÿ?èç%«ÛcDÞÕ§ã÷Í„>Ùþjÿ7õ~á‚ÿ¬yZæÅL…�¨ciÀŠoa"¢¤“×Û)܃ֺk¥ðGÛ’ R¿Ÿ—)€$˜qç«ïö¨Ü»wß}õWûùŸÿ…¬óoû¿¬´ë���„?�gÀi<4ÖòZϰ={@>é¸ÿŒ£t^O<‘Ûÿ«ƒáÎ;Þéç•W^­•ûÿàºOÿôßáÓÀ٣Ϊû±Ÿp_ðŸß¸üöíÛîç~eä‰'wßôMÿ?·ˆ(‡ø¼v³ ‘Fªû3žÞt��³2Kë¸ÊœÇ‘âjQ‚!§Ñ¾\&!{ؾlC58:û±ã~óoþMþ³Ž‘{÷î¹_þå_qÏ=÷|­Ü¿øÿÒ·åëoý-î¼@» �`~¦µ­,e•D4[;;n{{ÇÛ-„55áÏúº»°¹é.^¼è._¹ì®\¹ê®^½ê0]ÊæI@#áLØo>LåUM»ÒÝ'wûy’¶­¾íËÖÖ–»{÷®éÞ¸MïE^ø¤Ë „?rüÉÚ)ÚÿõJ¸¤ï¡ý¾té’»¨WöY©¥$êî@&dJ,¥™ÏVµÝ4¿»féÄ:^äEGJ-Vˆ–*ï݆…øÇ)‹Ô—ú©ŸúÉþýà ïnÞ¼éžþÿ7 ‘ûµ“Iü«í:��€Å‡ž>€Sæ¤FqëÁ_Zqîçy¶g½¶ŽÈ.š{m{àÜüƒÀ}Æg|zmž:qþÉ?ù§î»¿û_Õæ}ÿ÷ÿ€ûÓúO¹óˆŽý:&ÏŠ7¿ùMîýïÿ@9ýïÿýÛ[…??ú£?VZl‹ÿøóéàh¼ûùwR¼û…:�`fŽ*è9m YÚ]Ëìè3o›÷¨ÛZôߥ©} ‡CíÏI$~Ûoû­>-oÌw}×÷¸ôþImÞ¿úWÿú\ h·�´s˜6žwüÜA¿ï¶¶·Ý+¯¾ênݺUk¶ÝþÁ¾®¨nÝ·Ô"Ḁ́˗ݵk×Ü7܃>èÊ^Ãì³'kÓôJ1pRì[µÅ6Ñ-ËË~I‰îÞ¹›í×M÷Ê+¯¸W³}ÔÀ(í£wý‘+Qvo5öY‚œì• —z¹ëÏÆF%`ʾËå+W¼xI/M_2P!dêÎ>NÝ È^áï™ÛJ‹¾¦"{Y‘V-w3Jk¿ÎâpÚmÒ¯ùš¯k_Jàõ#?òÜ×}Ý×{wCCó>ó3§{ÛÛ~·ƒÕ€v��Àâƒðà9NÑ=P[îi{·‡î½ý}÷êÍ[îÖÝ-·³ß/ò[§¥U­Ç|qþÿúå îÁ×Üõ¬#ÀŠŠÜöi£gŽë¡÷Ÿv$ºú‹ñÿã~ò'Êž14z¸ ý–²Òý·ÿöß¹÷¼ç½î¥—^òóyä? ùó?ÿ÷ù ôßû§ú?ù¼Ü¿ò+ïôG{{ûîêÕ+îõ¯½û¿ãS|ª1kC9'ýìÏþ÷áØÛüª“æñÇs¿é7ýF÷ûÿç¹Oø„o\÷³?û¿swïÞ+§¿ù›ÿY¶Ý×¹oüÆoö¿ƒ~Ïïùl?bH#‡þÝ¿û÷eÙ¸áÞþö×ùsîÏ»ÿò_~¾œÖ¨ìÃ8Ú¼éMoôVw²N,!g&ýÖúcÞþö©Mk›“„?ßû½ßç]ŒÇ{Ôýà~ÿX9Ÿÿù¨6﻾ë;Ü[ÞòôXÙÃþ=¿ôK¿Ìýø¿£œþ}¿ïs³ßüqM|ðƒrÿÇÿñoÝ/üÂs/¿ü²ïè¹víªû˜y‹û¬Ïú]îs?÷sŽÕÞùîîñ.:ºàü1«è'.wR:M)«V] ÔÆq:­b[öCúpyoW;ggg×=üðC}*»¯ÿÞìþþ™ÇroWý¨}t3{nQ{NÁ¤?õ§þ„JÎïþê»}ô¿ý·_Ìöùeÿ÷yè¡}ÊRµE>íÓ~Gãzqûë·ÿößæ¾á¾Î½ã?é¾ýÛ¿Ó½ï}ï÷iJ¾ïû¾Ç·Kçáý±ÿ‡û¯ÿõçÝüÿ©œ÷3?ó³î°¦}Vmfƒv�ÀlÌÓþ ÿIH³½½ív¶w²ûÕnÙ× ¼£Žú%jÙØØô"™{YŸËnv_†Þ §·¦t_=×ít½)Ž^ù®¤å»©^êƒ CAPêÿÉíǻݿŸõG¾ê^|ñE÷ÂóÏû~9[ïdûÙR|•X[*ùÙ>åW.àé*íWÖ©ô^øÈíG‚}'õi\3£Âh}]iÀ$�Z+@Ú+)~ô/-¾‹i[ÃQÞך €Bβý·h}©ú;¨oéS>å“Ý~á/ûËÄ?ûgÿÜ÷ãµíïqµß>çsÞæþÎßùß|»õ›¿ù[ÝþÏ?›õÝÝô}S÷qëþÈù¿»OýÔOq“ÐßZNE?ôCo÷ûuëÖmßÎzôÑG¼È[ßQƒ›ˆûоò+ÿŽÿÞ?ó3ÿÙ}çw~—¯osj§ýÙ?û%¥S¤P™ý¯ÿ{ç;ßåÛÜÚÞg}Ögº/ú¢ÿ§?¦'qZmvƒv��Àâƒðà8®�Žêñ–¸Ù¼=€ê³rz¿ïÃu¾;p¯®]wûk—Ýàâƒ.½ø°KÈÞÕ¯kiºÃa*Á¼Q?{p|µï:ÏÞvkûwÝ•ýÛîÉ÷æGp=ò°üh{&ÒƒÃq¤@üÓŽ:#ä ^|ñ¥±rtü¿ñåµNzC¢ ½äLó)ŸòÛýƒðõë×ÇÊiäÕ_ý«_æÇë¿í_zÿ¶oû÷wÿîßj|ø–èHÞ Ž„è•KŽ^ß÷}ÿ»ûà÷»¿þ×ÿêTçY@É—ü9¿ÿ1 l„A íŸD8M#¨õûüüÏÿ·±õƒ¾Ë'òow?üÃ?ê§uüJà£òýÍ$¶1Ôqñº×½ÖÇñ÷œF“+•¡à[z}ë·~»ïôб|Tž¹5pÏÞ¸Ãrq=qOÞXsï}©ß\ÿÍ߯k y�“™Ö¶k[nóE0ðqÜ@“ÚWZ¦vœ‚'q¹ÃŠæYÑhEͳeu<êÞ.§š˜~ô9ÿÒ½])AÿÁ?øJ/ò= z¦øÇÿøëƶ£€ÚŠ?õSÿ1 Ú|ãLué\R]ßó=ß;¶Lí1½ÔnSñ+¾âoÍ$(R›öoý­¿ë޵CáÚÉ ~6µÇ§íÓaÚÙgÕf´Û��꛸»ÄgŽ>/\ð9/læ)À”j+»_ìf}…;Y¿Šxv¼8hÛííî¹4»÷zk^@#çœ /ºž‚òtÕ[ZüW |Šo~«Zÿ¤úqÔ¡Sý<÷Üsîå—^òâ$-ïJxSqJ/¾Ñ÷ª¶í]v†ÃÒEÙ~;­§6¬€ô½½“ÑÕ«þ¾zíÚõìýZ!�ºìÝ6| °µ1÷Ÿ<Å—¥+\€ŠÁ’ùO\¤óªÃÂåhTì¯+Ë,gÙ.•ù/ý¥¿àþæßüßÊyÏ<ó¬À(rÈq·ßTß³Ï~Ôý‰?ñ§ÜíÛwÊùê›úéŸþÿúâ‹ÜŸûs¦q}µ¾ìËþ—±>4Õkýªçüá?ü?øAšÓúÃå‚ôßñîk¿öëkóÕ÷gÿìŸwßð _ë~ËoùÍêy|ˆ~³oû¶á¿¿D6 4<­6{m¿h×��,Ç›¿�Æ8Ž{Õ±[<¬ï£yÞû¹ø¹w»o}çm÷m¯<â~ê5ŸêžyËg¸ûO~¢Û{ø î`ãjö°Ÿ¸ÝÛûnç•lÝW³ýW³÷›;nïæ¶ÿ¼­yÙ²Ý[{no+ëHÖÝþ•GÜî#oq¯¾é“Ý;_ÿîûÝǹo~Ç}×Ï?ã~úÕ?Àkl?´:ŽïÍèo¢Ž™ý=¾ø‹ÿd£è'F£ƒUV 1å¯üõF‘HÌÖÖ¶/+W¡ ‹ ‰ƒMüÀüàXÚƒ&þå¿üîFÑв`C~ìÇ~¢±¬æ›#–Ðè/¼9 :Þc‘Œ¾{ÌÛßþõi,ŠsžŸ$Gý{ÎÂ_ûkÿßFÑOÌsÏ=ïþÌŸù[ÿ–³²ßOÝ×þØ]·Û?Üõb-kñü¥ßsÝýµÏ¹î~ã“Í#žT÷×ýø]¿-�€6Ž"ú±6^&ü9ØÛqû;÷ýkoû^íµ»uwì—i{5­«mìnùíjD¶ašö³>ª{¾ßg‘^GÙÿyÖYtoo ÄèÞþÇÿøŸ:t ÓþÏ¿yâv^~ù÷å_þ·j)SÛÐ릠QŒÚE ´è˜Ÿ„Ü'•ªâ¸h ¾Í{¼¥}VmfÚm��'ƒünõݸ~Ý=úÈ#î©'Ÿt¯{Ýë¼»¯ÞŸ|â /Pj// êt|Ûs{{Ë÷#ÉùGŸŠ´[iáäå=i•Æ«lå&⑨žîëà Ÿõam»;wïzáœ~nÞ¼éû tO—HéB‘ªËœz®^¹ê®\½â‰¯é»®*…—^—.ù﹡Á‡Ý®ß ÿ=²:å„'QÑGŸ{Î}ä#É^vÏ<óŒo§hÛZ~ÿþý²/UŽHÖ·ª”ÚW[¦×þþë¨}>Ê4®¸g¯l޲ï¡ïzØv檣vÃ¥Kkó~ögn¬Üq·ßtLüå¿ü¥5ÑOÌ·|Ë·{Wì_ôEÿ¯©}hú{K¤3‹8\ŸúO›õì%1·„Ù±è'ä…^ÌÚûqÙiµÙ Úu���ËZ€ä¨>eWÖÁ«zô0ª ý/¼ï÷¡î#nû±ßàÜë:n°Ÿ=4dŸ·öµBÞ ÐíyܵõŽëô6¼ãwsoô!·Z½FY¿ú(‹û ©ì¸¤°±M»ënó!·{ý!÷J/{xùè=÷Ð+ïrŸðÀš{óëŸ*FÏ9·`ŠóÏ8ê¨ø…_øÅÚ¼¸ãþïþÝ¿WsJá¤<ÚâÇü'¼àÇШ¯üÊà]^ úÕCiÈý£ÄdÑh) þš¯ùÚòAQÔßøß”¾ÊOëýê¯þGµõ•^ìÿñ/ò)d7«ú0µÁ¿ù7ߟ-ÿB÷š×¼Æµaû­‘A²ÃÕ1¢ôWBÇÊç}ÞïÍGÿÿ²üOüÄ;Ü_ý«iì8úÑý±ÚôïþÝŸ5& šuŠé÷U§™F>ðº÷¾÷}µT[qš/‰…^xáwõï9 ²UþÉŸüµyú[Á|¾»víšw;ÒÈt Øéúõ÷þÞWe¯op‡åÇ~}×ÝÞ9¼õïüæKî ­¹ýì÷Üö@â­í‘ûñ÷ìºßû.:�€y™$ú @lmÝww>ònw÷ý¿àv_ùK‡GQϋڇ—ÿwã~—»tãa?ŠVAþ&–=ÕWÛßdg£YË.s[V÷v¥7yÃ^ïþàü>0÷K¿ôËîðÿ,ïíjýÏÿóßôéFçiW}øÃqßú­ßQ›§ßí³?ûw¹ßø?É_´µg¦¡‘×?õS?]«GiT—žQ4Âü[¾åÛü3”ùë¿þŸeÁ¦¿ÜZ§‰¡€|ë[?Ã=ðÀînÀ¼xñpmÇ8ˆ¤ýRvVŽÚÎ>«63í6�€Ã1K?¢®ßÞé'û,1Œ„4&D‘¨@÷Ž{Ùõ[©±:…›oroW¸íûéÑ(wŸ¬²lU‚–±÷Bý“åÒ G‚˜~ÿÀmoï¸{Ù}óNÖæU»W•“ûNåÀÓËxÔY™4ÿ2ÕVš§5î?z ô^¤2Ë;ûÞÍH÷{Ÿöl'ŸçEMìÜð’Ou¶Ö[óÛ,~¼«O’;ÿ?Õòðo‘ïäh”úÔ¤Ø?[¯¬ï„Y†¶¦þ¶‡n‡ê3 9‰ö›õO}ò'ÿß|¨þþ4+}VÈw~çw»OÿôO«ÍûНøû^dcH¸ôÅ_ü…>—Ž!µµÏv<Hý;ç[ýþ¶ñC?ôÃÞù[i_zè!ŸzLó õË)«|JC&‡l¥q•˜Gçñó?ÿ ¾í¦›=­6{í:��€åáÀ qÑW#]ïÞvýÙ»î™ËÿÅÞy�HU^íÿLݾ K[:KAA‘&b/ÑÄnM411‰_’ú—|_’/½MQ“¨1ö^QQP@ª( HïKÙ^¦Ýÿûœ{ß;wf§íîì2»{~xÙ;wn™{Îû>ïs(8¦’BM*p¯©Ž¢f•!yÉÑMqô>äö¨d4¡À‘c¨>@ÆáÝä 6R¸©Ž<.ƒUö0¦ ¦°Èð«`ÚŸOáâä+BÞòAäëŸg–ÿ ATDVë U·ðûÜy¥3›ö©VmÞAi8fw!Aƒø'] §TÇÝÛÅ?¸&°ÿ_½z-ýñâdÕÉ¢EÑQ·°±‹„ ù$Ï?ûÙ/9IÕÀ.ö¶ZD´eËÖ˜u ôW¿úûo$»·ßþkúö·¿Ç#ÇF®Œ¹ Q ëÛ¹s'ª%uÇ¿µ…`cÆŒf{ÞE‹Îçϳ>εk×Ó9ç,¢dà³ðÃþ€ku'⢋.¤»ïþ›ý]«ª:ÌIýäÉ'ÛËTUUqÒë%Ú F°ÁBõÆÑ¡ÐGŸœO§» y”YCù…® £×3¸v(æ¬?ÿùÜP.GÅ¥ õÇ++GQ{xgg µ—ûè¼IfÃÁƒ+ëép}jUj[ÒÐ B"Úë ƒßNÜ“ª¦C+¥Æý[èx ¶PÝÎõÔ°wõŸöuï>‘ÊËûò=.“΋L;¥r™¶”÷Ê4FÍ¥X ññ|îs7Ùbæø{ûI'Mâ{;â{pÑE¨xf&}ó›ß±—AIˆE.¹ä"Ê”gžy¶•“Ïw¿û­˜øìºë®ár¯V'ûŒr¢NCè¬O7Üp“-Ø~ì±'Ôq–;F’Xò·¿ýeÊe2#¹_}õõ˜yˆ ÛB6âìã3KÜ&‚Ðyè2YÏèû4ÐÂÜð`ÑŒš[�à}~Ë=ÇYöÊmÅ/FJá½!Óù‡L1‹sÔ½' Q³åÞÀeÅšx´@œT }ضj#É4ÞÔD¸·i·ÿXesqL!õTu‘Z5?Èó1a-NÒ✗[oÛ¥öÛzÂkŸìR`桲ÈåÿpÉ/µXëó¸Í‚ 2˜ÑB'‡±ŸwfüvõÕWÒ×¾v›ý7D7·ÞúZ¾|¥=íRøÌè8 íª/¿¼Ø~íÙþóYd­™1c:BDi- âæT¬ÿî»ÿDÇã¿/¸à<Ý<úèã1Ë}ã_cÁŽíu·Üò¥˜ekáOWÆìN$®A„èˆèG'®°Â­RÉÑò5´Èt ôQs ò™ïÞ‚|òyÉE(¤o#¶çØ.* 7Pi¾›ÊŠ Tr]@îþh€§œRïs…öSÍþzªm PmØM…ƒÈ0†ü#ÈÓ¿€…@-*@o‚»ÇOUå•´´ ’Ö}°•&;èäñ#Y�„dS{’ÞÞ(þ¹í¶¯g´ÜرcháÂ3í¿Ÿ{.¶ÄTqq}á ­ëUñ‹ŸW,ÏÅ” Ã{?ó™øy¼Sj`/^üZ̶ÐøÇ?þž×.¿ü£” ³qÉgwH�ÚR‹àd¢€úáèèÀ „PÎN $ðÎ’#GŽàF„ö¢¿Ûgž9/FøóúëKèK_ú‚ýÜÉÔ©§p#—s?:“Ž^Ït ¡%8œ|ùË_´E?loîÜ9|ÎÆ«¦qÔ¯_9µ—ƒµéË}$uÄo˜SÊu«wµÐ’Ò—ÉØ_Ó¾m ‚лIÿéÎ.5P[C–>@͇wQ® èÐÛSË s(2éLŽAÑX¯;‹œ´5>Ë¥òm2%[6S÷Ÿ\‰e_|ñå´ËÜ|ógù1Ù½ÝÙ™à�ƒŽ§³ FméDˆw „˜:^`‚¸é+_¹µULJ“ø}8p�]qÅÇZ-‡Î3¦ÙN’ȵð<•øü¿ÿû;mýüóŸ÷³«"Àõ¯­­cÇ¢ Þkµ,:¥ÚB6âìã3KÜ&‚й¸bý÷ Äpø=Ç=“vÚXÆc‰} ÍöÂ÷¬Ã´¹±œ}â?V¬d‹qÈáøcpy,ÓI(À¢U bãmªõêýÈSD?Z¸/9ÿÖÏcÝ… k[a[üƒØ•'Kèƒ{!Ä9úž¦·ÅîBd¶—x¼ž˜m9}}x¿Üæòú½F$'òöÙù'l½!âëŠø‡¸T›ç€ÆÎŠßpîoºéÆVó &w ð¹€ ±ˆoW]¸ðÌÑñDÔº]uãÆM\Æ®©‰@; ýhG;…?Ú•Ñ DF%%ÅTWWoÏC©éʘ݉Äu‚ ‚Ð}á d™övrh—ØÛcdÌë;khï€S(<Îc ~Ž4³¬·0Ÿ`Òܾ“hóbèÑÀò¾äÏSÉëÐbµ¦bNL÷ qØê+:EBÌ#f";9F²Œä¿ŸúÛÜ'•L7Rõ{oÓ¡ê&:V:’ü§-"—¯Zê#¨o¢`£‡BÇÒŠ¼±ôþîƒtrè:qÔP.÷ƒm·ÇýGœZ3hÐ@úÍo~É$šxgŒ IT¦£¨¨H½6…–.}Ëž[YÍé§Ïäõ†¬ëŽÏœZ`K‹¸ÁœpÂxnüϤŸ_XùÂŽåÊPŠ  55µ1Ë¥ÂàxÒ¤ÕÙ‰Òf·Ýí$Š/YÐÞ$W£¿ßgŸ½ˆn¿ýöß…}àÀAª¨Ó¨ —u¾·³ÉöõŒ'þsd”cK>³]Åà2}õœ>´~O€þñvéÓýéÙ%T^äf[â{—Õg´.ùõ!èß}ñÜÜBÇ6¿•S¢Ÿ(Õl~“Õû)<ýRnœG#6:hœ Ž”Ì:Þ´¥\Y:O&qjw‹eÝÛ“‰>Î8cvL'ÂÖ­[©-Ä—¨…H8Ó¦Æq­S¸N)ö (cgÙ[€}NÖqÔ·oŸ˜r ™rÇw¦]æŸ¸Ž¦OŸF¡½qvWÇÌé¸M!J{%YxbDE.ú¹^ŸnD»Ú=–@¥¨°ˆŠŠ‹¨° K`áu-Z‰åøc—ôr8ýÓ(¶$oÛÿÀùÏÍ’d^n›Ä6œ¢'.G¹,ç¤_‹n“bŽS·gꔈaMÁQˆSšÇk¹#ÁÝÚ¬ŸÔñ"ÆÕûçhäR§3l‰…´ ÛYÏá0¿$—OÍKv|A.Çš8÷NœƒÄ:+~à ³Dí[Æ k5Ï)”Žß8¤'û>ÆÇ¤ˆÇ’ ͇°Ý ÎKüÀ=€öt§ðÇé”Ù•1{[¸NArþBioÇ>U4âBÅ¿yÇ>ZSv*5 KÍ5*å®k"—ÏOy¥ù0١ȶ-äÝò://¢‚a}9I@ q’ƒÒÒ~žo¤i HšÖèŒTEÉ©ºº:nt/ïƒ;õTµìï´?(埴€\ý ( âö@]3\,Do©i׿Utæ¨�;Ð`”j{j‹ø' ÞQª ×ÕIü(ŠŠŠ¤ë<xpÒ÷4ˆkeÿô§¿ˆé$À(8Å`¸-ü™Ï|š;cœàza¤0JŠ9ËŽï “ˆ… ÏäýÖ 8êrcä͉'N`!޳Ä`âGÓ´ý‡ÀÂ$ç±â9FÕ¼÷Þûö<4n¥²ÿí ²q=SòñÛÓ# ;“ŠRí8JúzQž›úºiþxõÛ§Úðþ¾´ŽæŽË§©#ó¸Ñá¯oÖR}Kf®KeAˆ'Uœ—ê5Äxì²uå2M?¤ý‹ÿBýN½PŦc¹ñ\‹ºËæöî£ó}8VÄЩ@=-Nm˽=>¦¬®®á·LÄþˆ×g8I¿bû-ïÚÕ˜Ñ>ƒL\Ž�ö9™ÄŸmç£Ð¯¿þÔ²g/\ص1³Äm‚ ³—§8ãÄph3,Tmr° b8Šs[—ý‚ðÇã¶…/ZØãÐ÷˜ó©u 0ÛõB#‚->r¹ô�DoÔUˆbã( pôè’YÖ2f9®hù±dǮݴóD?Úm(¤æCàQ£îù^|^ˆ›¬r^êý^?µŠuâãùˆ+b  Gˆ…#aÕ kºÖ1ãüòþ÷âöÌÇcc4ÄsšÎŠß’µ§koWÍÖþtÖõ滛=‰ëA¡û ÂAÈíý 9…;Ôü¯ïi¡=Ãæ°˜&t¤‰\*-(/ C%±áw—PYÕF6 åÀ£Q‡NôgaN²@¿-û…uh`vFŒnï#œˆöìÙKEª‘x’çõÑ®f•ÌN8‹Š†¦–¢`c›½´{øiôDC M9¸†Æm¦òrsäE{JDô†d îz´óŠïÐÚµëb^‡m¼è'Û|ô£—² jm/[ö6_óxp=0RxÕªÕ\7ûª«®°çãß¶%ñ 1éä“'ñÈ”cǪ)›à³ ±Í“O>mÏC©-œSŒdv~þçÌ9½U­ñŽ€Ýñ‚œç#lÚãªÓQ:r=ÓÑUÎEñœ¦ R54l=¤½]O×Í*¦9cò©Ð碉CÌÑSÏ¿×H÷)S¦Ì#A„Ž +M‡EƒZj«(ÔTG¹N¨±†.½Ÿê†N Æ±3©tÈÛ=2žî£¥Ûgçèr=:>Y<š.N=Þqìo~ó _ž‘Ѳ¹·;;³M{ÅvéHetø•—÷åÎÄ‚\p¾]R¢­d+Îîê˜Yâ6A„ãƒ.ý…8F—ør[å¶"V)08Àñ'¿ ŸÝx´Ð†‡ G©/»ÊWá~Œ-ÉaÛÚ°ÇݪŒ—ÞOíH„ ñ¦vJ$žqþ…í9]B–ëO³%þèG ‚êêjÙyû¡5_­Ì«æ¹\nÇ1ÇÆöq‘#FTsÜV90#l¨íÂq@!>׺äRoÿàœÇ‹”ÇŒm?Ïåø­­8K˜uÇ+f—¸NAº"ü„,ÐÞÀ#À1â@ÕQzÃ{"Õ. æ#®í/) ¯;H¡7Ÿ¢ŠÀAØ¿œòF æ‘••£Z)÷ã÷!Þ·½Çƒ÷#ùFã/&” ‚µ<låûÖ×Só×iÛºj N8› ÇŒ¡¦êµk¢Ãþzkè,Ú÷áJš ó¨€Úê ÒÄ?¬;fnºé3të­_¡·ÞZn¿~ß}ÿb!Οˆ¾œìß¿?é6öíÛ—ò½`Ò¤‰ôË_þŒ“éM›6³s F#iÇH` ®Éï~w}öY¼OO?ýlLg®ñG>r1‹™ >8p _Ã+¯¼6ëÂ�G$g'Æ;ï¬æÇ7ß\Új¹l‚ΓŸÿüWvãúuëiذ¡1ËœþyÔ^’5"dÚ¸ÐÞ뙎øÏօƶÎvý9kB½º¹‰Ž6$%„×Na6ìT¯i L ñ‚ mw)¡÷’¨“@£G<s_ôã¤qï&žö!oÉ�ò÷%O^a»~뻋S‹}òò)¯¤œJ‡ŽWÏ ¸óB—QíÉÎ?ñ÷öƒ“ßÛããÍ>}Ê Ãs‰NH§ëÏÞ½{.‹sŸhTx²}ž9s:ýá·Óñàã¿–¾ò•[©3ÈfœÝ•1³Äm‚ ǧÓâ=À÷Uþ[½†¿1¸ŒËqy*«œÅ–î2Ë|EÅ?ÑçF̲¤KƒÅ[Ùe»Ü1å»ô~z­ýÌ/(`!kÚ/ì“.DZŒ|¤wÁ,÷v 0YŸ†ÆFÿ´´l—užŸòòóXðãñºM·!O´”Å•ü"‡ðÇÞ¶ÝÖêæ9Ø>J‹…T»g(±Ï ˜’CO1K}}ì}|æÌöó\Šß€ÓÜrËÍtà Ÿ¢\¥«böx$®A„ƒíýÀA§ªªŠ¶ï?L+úM§úf…Áå' ûú)°a-õÛ·‚ú÷-¥’Ša4xp9"¦N°á°ðÍf§C²Ž €û‰O¤qãÆÒîÝ{hÏž=œ84V½Mn[Fys¯¦ˆ«€uMTÈKÛGN§Æ}[hUó與ÐÑŒ^âü£¹õÖ/Ðòå+í2M°äÿÓŸî¦oû1ËA„õúëoدY³–—ÕTÔ×^»v}Ì<\¿x°=¸: 8€&O>™'€óÿÀÿ¦_ÿúwö²“lØðÍ›7—–,y#f=ŸüäuôÅ/ÞÒjýhhé N9e >Œ?�û­5k¢ÎIué¨÷LÁ(¹yóÎàÒ �‚¸¥Kßr¼^Ä£¼3%¾´ÄѣǸÜÜ·œ@¼“ í½žéÀçÎ >s%*vã7óëcÇŽáéÜsÏaW¤öçsÑ­ ËèçÏWSS0ù﮳±!2è®%µÊÌQ˜ Ô6¾¤¶‘ç•2ƒ‚ ÄÒÞxOßË››©;n¬æ©å õ*àºY6võ›t&•õík»ŸôT÷Êø{{CC#;PNzj«e—,y3æïqãÆQ[€HzëÖcÖ÷ÙÏÞØj¹åËW´* ædôèʘ¿¡c¯­¥ŽslÆÙ]3KÜ&‚е J|y,‘—¢ÒÂËÕÕ#Êl¹ÌĈ~2þ8?F\ù¯xâE?Ú颟նRRRÂb$ì/—cA’;åñ²ð'l4D €GLpýA;îpWG{Êr5Y‚ ‹|ìt䵇¬CŒûÄ9é}7ÿtEÅ?áÃjÛ¡ ob ,„k@Ô%¥Ñs ýÅ/~3NòS¦L¶ÿεø nDÎØÖYú4éʘ݉Äu‚ ‚Ð}è]²sAÈŽ;F¢uÛвÁ3©¦ÁE¡¦&òb„‹JÈŸýM¨Û@Ç âÎú æsÑW³;“Î#Ao´ÑâSoË9z „§Ÿ>“FAÊýT±ôod|°ŠŠpƒBãáf:0h=w¤”… àD¼­´·Ã­;‚Dî¼óΉ™÷øãOÒ¶mÛcæÅ»É á»ãŽ;[­óÐè‘ì½·ßþºúêÓg, ~ôJºÿþc–Åu?묭֫ËÕÔÔÆÌ2dH«eQR ŸùÎââ‹/´Ÿ£Ñàï¿/æs†ã팆”ûÒà3 ñ•fáÂmMN<¸6‡Ýö¡C‡èϾ;åz:z=Óߢø}…cFÓ9yíµ×Ù ¥'ž{îúýïÿØj™¶2¢ÜKÃËÓ_G46üô¹júñ3Õt 6L™’éúA4F ·'¸7 Ý# êMoҞťc‡ñýW»7µZ¶Ĩ‰îí¿ýíï[¹ ¾øâË­JÒžþ¹1Çç&ñe šv‚Ÿÿü瑘y Ø"3fLg‘Jô=utÏ=÷µZÛ¿öÚO²#Îw¾óß¼ ®g®î|e;ÎîʘYâ6A„ã„&ø-g7ü|ù ßçI=‡³Úôt9*íÓß^I 2…>ÔJðò GLd?OQâ ûWáOI •••ñ„Réø­ÒMz9¼MÁŸ¿j;…#&8¤`½Øb¹–æfà ÷?ß Ü~(æ\DÌÉŽ ûXð ‡Õz£‚#v‚àÈ]õd0ØðÑG§üúVûÜM1±N®ÅoçÇb0ߪU«[-·k×nZ´è<ºþúéG?ú =ôÐÃ|m»šlÆìmEâ:AAèÈÝT:@{’7ˆ~>Bïì:B[FŸAõUª#(¢‚òŠìÞFƒ¶-¦²þE4jÔHýèÎx§Ø'›û”n$Nª×ô(f”ô}ûvZ¿~•Ôm¤í/o¦Â³®¥–Z/5m¤C¥ƒèÙ¦:;´“#,††¶îkoqþ¹å–ϱ“ŒnüGãÂí·ß¡ºè茜€ã•W^µç!ùܽ{7ÍŸ?ÏÄprrî¹gÓСÑN¯×3òîBh¤€p )»ví¢»ïþ[Ì:ŠŠ ¹¼�ˆwpùûßïåÑÄøübÿ_{m ýæ7¿£Îä ÏçýÖ"8Ú8AI„Î`öìÓÙ.·ºº¦ÕkmMª1 *¾üÊ1`46Fh£é7Þ¤t_ñŽ^Ït aëSŸú$—9Ó Óîºë®§K/½„ÕPVì‰'žŠyßi§Må2…¥¬ 3Í2jŒ·yÝ…¢‡!{ô&ÑrO¥åØ~:ðÖÈ¿ðÓÃk~|<š*Fíñk¢{ûûïoT8Ÿâ²OèLƒ˜÷™gž‹yâ=” u‚ÎEg\ôÈ#ñ<Œ¨†¸ý /à2¶N1¶ ‡Ä;555\Þ*U™/½Ï(±Á³1±OˆGÐI´Ž‹ ¢ã¥ô±]F¹Bºó•í8»«cf‰ÛAº–xg'ÚÑÆm ~ìyÎeR8þè'fˆuÆ1 Ǽ4ƒ µXÂ$”õB›§ñàþ§~2èˆí@@äï8]€´È© ¿ŽjëêÔ<Sˆƒr`˜ ò9¶çXqŒƒ‘Óá(N¤¶ï¶}B¡ oC Š œrQÔáËu÷üà¶Û¾Îƒ?A dç@8M'àyÎ9‹xr’kñâ­9sN·Ý»qÝn½õ6Õ¾u5MŸ>÷1ñ?þñ/Ž×0¡½ 1ë•W^N]M6cöö q ‚ ä>"ü„vÒždíÈ‘#ìz³tOí5‹ê¶p½çÂù\ú@UT< zê),üqn'Û‚ŸLו‰H/_YYIƒ âQ®í;èÀó¢ðìOR¤¸5 tT%ôÏyÆÓÙG7òòíÿôÐÈ$òŸÿ¼ßž÷æ›ËxD¯³¤Òw¾óM]ÀRWóÖ[ËyJ?ßúÖÿ‹™wýõŸ`G–ýûðßHt1úS2>ÿù›¹q@Hôì³ÏÛ¯a=Ÿÿü­1Ë#9Ŷ÷îÝG>wÓ§ŸÖJä&MšØÊN8[ QêœsÎfÁ•Œ*ƒÐ¥- ¦=2þõ¯b棑Ãéöô©O}‚E5ñ#©4½ž™€ÏæÛo/±F㌳ñÆ „Eø¬fƒICü´rG u“·¯Þ¹ B:DÔ}i:¸jw¿Gyc§²8"Ýž(FǽâgÙí*žO漃βÿø9~q‚¸Ë—~ðÁúÞ÷~ÀN3ßÿþw¹tñ§?ýɲ)V_“¢ˆžÑ™”ŒO|â:Z±b¥ŠIVØóžþEž’ñÍo~;s…tç+ÛqvWÇÌ· ‚ Å)˜cXŽ!}QQ‹‘À!ÜÂ:„/Î÷Ä ~ÒǼnµo^Ëñq&]â«•'Åñé}Œ/¥…6õ¨öF´Ù°˜Èãf'8ó@| ñlPM!”ãòzc9:Ž7FôÃB¨HŒJ‹z �XoÀrúÁ~h“?ÏßcbÇdíNÎ<sýàßKøZ®Åoˆ·0M‹ÎqýRµ¡A öíoƒŽÙŠÙÛƒÄu‚ ‚ûˆðGÚA{~ úy{[í=›ªZÈíõQa_7¹_|€F…iøð¡l{Š$"ÁOWt"e²Nö.(°Ô…H¥l̓´gÔ"rA-Çê©ÖUL/FN  j¶pr^QQÑ&;ùÞäúsà ×ÓO<É5É5°pýÇ?þnŸŒæ¸çž¿Ðw¿û}•8¿“r}3gNçd/^àVwÝu'}íkß Í›?H¹4Æ|á Ÿ£«¯¾Òž7gÎlþûÁJú¾/ù‹\ò©³„?àâ‹/J؉ÑYn?”ûŠþœ{î9íªãŽs»uëÖ„Ç0² "Œ„OFG¯g¦üüç?áÏcªë† J?ûÙÿ±CU6˜5:žXÛ@Ç3,ž!} Ý4S­[èèQœxÔ“áÙ“Ñ áfã²9i›~¡ëÉ´Ì—ˆ~º?u;ߥc§²ƒî‰è 1*î×ñÆ— "ĉÜ?ýéëyT¶ÓÁ¼ûîûùg?{#—¨M¶¾}ûÐ~ô?ߦçû׿þýò—¿á©@g:œeZstç«3â쮌™%nº_J|Ù+±Êv™Ï˜ÉЯÛËFe?‰ÅBÖ[ãÞÆå¾, Oê3×!ŸßOy*®‚ó7‘óNªÝN1`Q»ë8'þŒ«Ç†ÆFHw( ¾ë˜òB!»M’×ü1§Jý‹±ÛWo¨ÈÃâ"»ü@P¤Kœûè΋îKOÍJKK¸¼×å—4i›X®Åo(wï½¥o}ë{ì–“Š!Cs¼ÜYƒ 3%1{{¸NÚŽÄ—_ BW#ÂAèjkkYô³v×QÚ>n65j!—×OùÅêKøÜÝ4¼¬€&NœÀµzuØ•?™É>9“×±cÇp ¤¥K—Qþþ%´¹~åO8•š6P]q½K4좪ª*yÚ‘Doÿ@ÔƒÎ�§‹Ê¦M›ÙÍÅ™ô"IýÃn§•+ß¡§žz†—9xЬ} ç $x°|…SP²ó6xp Š/~MM¯²u-e˜–••Òˆ#hÖ¬¼žþýû·zÿ×¾v¿Ž¤ï­©©e——“NšD×^{5Íœ9ƒ~ðƒRg²`Á|*VŸ­úú{0Rº3Á1BÔÇM{kgc$Îïÿ[züñ'Y܃òy¨=[^\sœK,§¢£×3Ð8†ë~Ùea"ýPsç=øÜ-Xp&]tÑ|\ÙÂçqÑMóJéW/VS(K9’Wýü`X·» n} µNïèãv6"ÜC‘@㻆ß=!»´'æ±OÏ¢ñÈ>¾¦ÎòTm‰G»KìŠ{ûý×—¹t'b‘U«V«˜ò 566±›!ÜzÎ?ÿ<.5›ìÞ§ˆÒQ’jÍšµtäÈQþ]BÇMÈê\Ão¶ƒÑà´ D–ƒàB—Ï~öD ØŒºFâ`ì3ò çŒ9’c¸*öéÓ‡rLÎW¶ã쮌™%nr‰/%¾ìM8ýz ‡KÄ,¦8Ê[iaþÛ±’èzìòZ#þ±Õ?±CÑÒWúó…GnÌb¬„mxN>ºô¦–`@=Fø>ËÎ<áH´MÒˆ-æeŽCÍ_ÎÌårG…Ü(=f¨ß•fû;Å¢k?Úâj”ë௠8€ã ]´haR‘¼“\‹ßwÞ}÷ìl2Yp`DûV0â¶í N yóærÉÔ\p®ÏFÌÞ$®„ÌøRâKA8ždzGueøš+ƒGW’¿õäv<êÉcÍóÄMx­@p 9‹3!Š·ŽÕ*W$\MMœ ¡“;WikGFÃ’}ËîýôöÐ9T$Hn— Š *|é/TQVÈN,H’ôú;ËåïÅhRÜ`;rcÍ$AÕÇí-Yò†J˜ªèƒÂñäž4ƒš×Q^ßpl70ÀB$YmM|{‹ó9—\òјr Ëüïÿ~Ÿ„žÇƒt×’Ú4ÂÈ"42Œ$es$ÉH˜ã„Ôä[#g»[9ÍÝ»÷¨ È…vC=:\ÎÂqeFwV|™©“O|¼ ðùEGþ¾Í«éèòÔiš¢òÁ4üÔ3©|䉔_RNŸØžg“@c-5=D·¬¦½ë—PXuþ¤ÅW@'_ûþ|­R“°ŒF’øTâV!—èê˜Yâ6!—ø²}H|Ù¶ø2Qü˜,vLCêÒÝ;¶}HÙÂy|^uá\ZÖÇj„¹ VÐ>N#­ðÇìØÓçãÈ‘#\rhÇŽí\ª³ºúyÜ*(,àmùÕ6]V{$Ê6 èߟ㪲²2Óõ§.�©€Ìýk¦ú†zª©Uq _»åù±¥¼~->¢dmØ­?Öé`QXm£¹¹…êë먾®žË•j~^^>•ªc…¸pIGg§þ ¦cÔè1üˆÁ]ñǦŸÇ¯§-ñ© ´‰ë¡5_¶Þ_¹wü~ßlõ€›[­õŽ› ë1☠ÇcüDIþNõÿ<ž´qü„6ÐVÑ nø±p´º–Þ8“Ex”G^±‹ò_ø3Uô-¦yóæðH-”IvèèÈq¼ÁöÉ®1ÝNÕ|cH"´ûnÞ‹E¯¿¾„hï´qƒ‡ò'FÍGëéÈÀQ´d÷Zš¯–ÅÍÎ5‚Ð^0G7Ži:»Ì—pü@ÃÀO>ZNook¡÷÷¨¶9B;Ž¨Æ¶`êßÊ|Ÿ‹*û{©$ßÍ5Äa',#‹rŒŒp÷,¡í ¡î­…™ÍQ~BÛhKüæR#',¸’*g]À#‡…ÎÁ—_Äâªc§Ð¸¹—ÑÚÇÿHGv¼—ò=©Ä_Ò€#t7ŽGÌ,q› H|Ù1$¾ìØ= vE«XOBqKŒ&º&í‚ã,ó]&ñï;úµpâKq‘.µ•é±Xb,ˆxô>b]ºÔ—ŽÑð7>¯ùá|þ‡CÜ>Š÷…#¦ãáM,ÔŠý$>&óX¼^ÓÅÈç3;� …B¦ˆJïóx{ŠóÐû¸N¢H|Ù1$¾„ì#ÂAȶ o°<F»`ÄÇ+‘ÔèñR$ÔDÅ ÈûìÝ4¬_)ÍŸ 6¬S\~œïA2{øðaž·nÝ:þûä“Of5­³ÌO[Îtû­Å?HfçÏŸGo¼ñ&Ñî´eG_òMM‡iϨShÍÖ%4ÍJÄ‹‹‹)[Ûz>(1U__ÏŸ±Ç{"æs­ÓN›JBÏ sÇåóv Ñï×ÐцģŽÊ‹Üô¥…e4¼\Ÿ\£11:‰³ÐqÐð€ ÷WŒ.Å(¡sH4R»m¸èä‹>KÃ&Ï%¡ëÈ+îC3®û&­þÏoèà«“.}ÛJÜ*Or!f–¸M8^H|™]$¾ì)$øD§ˆCÈã(3Y— £¸uÅXnUê‹ÿçj5*ÞE a¦è>Aô£Ë©à9îqø\êòaNGˆràêƒvP.¿šeÊ¡LbµÄ‚(ƒŠË—¨ï¶íµ4£C¸…Ï¥‡IæëZð£÷Q· BwBâ:¡·#ñev‘øR²‡|{!Ú“€AôƒÚÄ/íŽPÃо<ROEЉ?DÃûÐìÙ3³.úI´¬ýÔÖÖÑÆé²Ë.åùÿþ÷C4eÊN8µÓN*kÜTÛÌTü3gÎlzõÕ×(¸w í0Bþ"j<¢Í£çÒ +ø†î³ñ¶³t¢ôNpíÿô§»¨ªêp«×ð™@½k¡w1B5 üèÒrZ¼©‰Víl¡ý5an<¬(óÐi#óhá„ÊóÊïE®ÒÐÐÀ£d„샆L=›}¡ëIÏ |†ˆ~ŽpWš|ñÍôú¿J¦zj+ñ±¨Ä¦B®‘«1³ÄmBW ñeç!ñe7D;êĹý$wü!k¾^a?hP¬»)ú±×·Þ˜]±w©u™ªLÛAÍ^MvÇ+Ú1˜8á0y¼¦øGu*ZZ(l ~"Süg §Ø©•Ûc²ŽÔ^–NV™l‡Ë~¸],H 7…mG lߣ^ó8@"þz× ½ ‰/;‰/¡ãˆðG:Œ¦„ÐfÍö*:<f65¨§ü>ÅÞ°’ÆåhƌӨ²²2eÇ@G?�‰+¬Ü!@Ú²e ‹~víÚʼnðUW]Iÿþ÷¿iÊ”SxÙø2[™”óÊtYÀ"ñ=ãŒ9,þ©^~?Ñy7Qá05Õ{iyÁITÑ´‡ª««iàÀmê0‘–ÞÉÆ›v` ñäë_ÿ/š6í4zhH8ÿ¤Bž„îlqßģйhûaÄ2z¦cd»a~Ìl)My<ñÓðSЇ˞JºŒyÍ]ös‰=…îB.ÇÌ· …Ä—]‡Ä—KZ½\&ó #ÁQŽSØb8œ~âÃ^§q"™è2†a$tð‰ß·VŽ@™¸î¨öNv[PŸ¿šÚZþBУËzéXÍÙ^©_ÓSP½ßEQaÚPu¹]ƒZï»áœìc‹ž?¬K Œô„™ø~456’×Ú¾åÀðº£$™ž¡;#qÐÓ‘ø²ëøRÚ›AHI[;vp㯩©¡c5µ´eäLj8"O~1yêjitíFš8q7.+¢ŸD£f4HX<È¢Ÿ;vÐ%—\L{öì¡#F°böèÑ£tÕUWÑúõëÕóctìØ±6o#ѲÉÐ 7¶=kÖL1¨¹_¾ŸŠûçQ°±žò‹è½AÞ_ˆÚŠŒŒé}à3<zt%òh®ÐùçŸK÷Ý÷7ºâŠ‘ ¹ê8ã7_’æ®ççç^è\2M Êú«xh( Ç—þc¦ ôD$fz_v=_v­]xO‘¸ÉhãD çG…<1ó)Ö1ˆ_·%1&h„¨%®Üñ“¹XDZÈ“ñþªe#–ðŸ9tÂÖ©©¡±‘K…ãÊwÅ‹p/ôY"¡Då¾ô±“ý¨'#Ve¯;:ŸÙrýÁ#¶‰u7«ý‚H .p(Â~ëe|ìIŽ_AÈ $¾ìz$¾„ö!R9AHA{’,ÜŒšššé– jt«$2ÜB}=Túâƒ4t\%Mš41åHŽL¶™n$ŽÚégçΪa÷|ý ´€ø‰'Ê‘]yåôŸÿ<L'tïSŸ>}Rn3“‘7éœà.tÚi§RÓ›ËhóÚeT0q65m¤=#O¢-{–q©/ìc~~> B2à…I„î <1 Ç4#@íláø&7 !dø&Rd£ØDoZúÒV:úSõ¡£ —qÆàΘ7>þM BW#1³Ð›øòø"ñeöAû^*Òµ :£-&á6Ɉ›"4Nñ©yædñqOÜÖ Ë'N„ ²øÅëeq œmœ.;Ø6„7¶(F½%·¸ìeD2Au^à�ñ Ä>\êK­3¤æ££bÕ84øl-ÎÁ#– 9„?.WÔáÑ>Ð8QSìÎDÏ-9ŽÂ}œZ\„ýlR—p1hRmžìþƒó€·YÎ?‚ Bî!ñåñEâKAh"ü„$´GôSWWG ´~gÕŒKƒ T< ˆè•шŠþ4}úi,fI´îL·—n9$¸ýÔ×7ÐÎ;Yô³{÷n[ô£×™xÄÐ+®¸œ~øš4i¿žLü£ß›‰ø$ZN‹FŽÉÎH‘uïÒÖêÉ[Зšmì{*mÞCµµµ,�’’_‚ =©‡ áBÇBvÈ$žk¢BZâ:‹ÖÐtj¦|¢#jæ£GIÈ\7òÃ�:HsÅ4Y]%A¡{ ñen ñevÉä3,úŒ—¯Ø®4(9EE]fÈj«Ké8cPL¬¨ÛPt=póèE·}Bü‚}…jÂs-üÁІÙÒÜLaõÁL&`½A«Ì\~ð7�¼p×ñ«ÇSøc„>x/:!:Â2j§Ž?¦‘‹ô9‹©€-óå°rþ³Žå¾´ÀˆÅHjÛ,i~M„?‚ ¹‰Ä—¹Ä—‚9"ü„´Uô£“>eòa¿©Ôx,By¥EÔ²~%M(4èÔS§° &шàL·‘îu$‹(ïñÑž=»éüóϳE?Îmjñ jdB1 Îå—ŒyäQš8q"/SVV–Ö•¨½ ½ýñãÇÓáÃG©jõƒT{öç©ñhÕ–Ðê‡iÖ8? ©JJJDü#‚Ѓ¤9·Ð×B’çÄdÛbÿ UÐýtÕPr—*Dº®¡h"]f<@Y ‚ ä6_æ_fšÚÚŒ–‹X]I^w[„¸ùù![ðÂËÄ”Ó2bD>Εèù¦ËO¬HÈíö°“ FåCôÂŽÞùù”_PÀ]n ïPûàÎTø‚öD8þƒT«Ú Ñž‰ƒh‹õê·�Û×¢£xÞ ±O@½ë…Cä‚ðâ%Ûï%:ô¦G‰vÐ,)¦ÎƒÇÿà!îÁþÃÝû‹ï ÚqáŠ$ÂA„ÜCâËÜBâKAÈ þBÑ $D*M´bç1ª1Ž"‡›ÉSšOåûß¡‰§Ï !C†´* ÐÖm¤z ÉâxØOçœsíÚµ‹†j m’‰$£DÙe—]J?þ„zõD^â½l²mg’˜&�á9FýLž|'ê+ßy… §žEÕ!Ú>è4:¥e+y±ñïÍd{’0 ‚ äø]—¤9÷À5Á}SlsÛGf1A TLÿt}†ê¨”„îÁšByÔLÒÓö¼ŽÄ™£ ‚ d‰/s‰/³C6J‹8#UÛÍ"ˆb¸¼V2á]þ«uy¯èŸ†í’£'ˆf\.wL9--jqÆ@K€çÛñ†Ò ÛS-áO“õÝÇç S³UJ ®F>5Ïy|Îm‡å½b6ANÝË>F2Z»ûØÑó ë™å¾<¶ðû±öÇŒs£¯^÷XÎ@zA„ã‹Ä—¹‰Ä—‚þBíä YÓÉå®A§RSuˆòûäSóŠÅtú¸Ñ4räp»–u¶?� ëþýûYôsøp-\¸ 6Òõ¤S•Ý*--eá@_|1=óÌ3vRŽ×R9üdêþ“hYü qÑÉ'ŸD;_x™ª=g‘¡ó&>½½£šæ÷ó>aé(AèÞà>)5±s\46Ö_È>^¥sDôÓ YíšASŒµ49ÁkŸ ‚ _$¾Ìm$¾ì8hoì(v™/´óYëŒDL1KŒÈÇ)ü1U>­\bÜsH‹~¢ï3=!v´A ¯.«¥&íøƒÏ—úRË{,QïoƒãOÄh]ŠÌt*ŠØÛ‹8K}%8¸J.ˆŽµw:Ê{¥Þ+rʤÌÕº¸=V‹Ÿ¸<Y0ÈKñ9Rç%—G~5åY—‹H ‚ ]Ä—¹Ä—‚þ‚ƒöŠràöÓÜÜB+ö5RÓP•¼6´°½íàšh̬³¸\U¶?ñ¯kÑO}}=v”æÏŸÏN?œ4¦ëÐâ”!;zô¨:ŽF:ÿ‚óé…矷_Çþ;·›L�”irêÜ$ûåå}é¤ÆÑ«+_¦‚ÓQSuö›Juõ›Õ <·¯ådÛïÈþ‚  6QZRÈmpô¨T!»ÂDë]§’ÐýP%­1¦Ñd öN¶œÄž‚ ]ŠÄ—݉/;FžßOÙÀ.õ'ÕAŠ­u1,ÿšdŽ?1¦?áv¹q¼Ê¢ËÕsp² «ï*Ú.ñ@¬¤Û*ýÖ~` ¤ÇrÒû“Ç B¼ÛÉÏËãŽ?°>¬+Ïš¸ÔWWÀ®?–óÇÚ/ûPµÁOŒä'Öé‡ÈétdDßãh·tºiá~·°ßúœD,ñö—K YË ‚ lj/»_ Brä[!íÀ™4j·Ô‘Þ?d ‹V úäQËOÒÄñc¨oß>œl¶G“î5$¶¤ÚÚ:ª­«¥ùóæÑ¡û©°¨È®iÉv± Ž£¼¼œ¶mßN£+GÒ¹çžK/¾ø’ýº.¹¥÷££î?Î÷@Ø3jÔH²õUª -Pó"ÔâÉ£ÕûšiAi…UºìXªí'Z·tÀ‚ $iî>àZA ,d4èƒÃB Puw Ý-ÔÏ[Måž:Êw«ÎO àÑ °á¦æˆ#*V ‘|:,££áR êÎì§!üØV!¿Ä¡‚ ‡Ä—݉/Ûˆ—Mܪ“Ìç÷™ŸûÄ”²2Ò ¢¦X±oPušj·v!·\‹|'t-úh§Xµaz¥®’Å[.g©/”SÃy=` ¨¨°Û/KÔ„í9Ëy¹û¶\wZ,»¼—匤ŸÚê†uøqžç·UîLO d‰}ti3sžuNÐn\àpþAŽ_v$¾„ÄH$)™6äÇ/‡L0¢wöÔRÓHŒ 5hxè ½€Keµg½É^ÓýÀ饰ZZ4oî\•І鶇6Р/ýúÓ T"«¾äö³V üÇ7ÑÀÒô»ÐµÎ¥o¼ÁÛ¬¨ VâÐQíן‰'Œ£W–?E…s/åri{LVIü6•øšÉºsÔ‹t¦‚ t¸‘SèàZáš©x¡ã蘨1’ÑÚ]M‘§™Fù÷ÓèüÔÏ[C>R#?;2ú}nò¹=äò¸Éãör'H$ H¸™¡ˆêHA™‡f5S}¦Œb:èK6¦½¦î5’Y}#HAÈ$¾ì^H|Ù~²yδ“D'žx¡+ãA­K}™oÐ+Œ–¸Òï‹™âŸÕnéµÊ]AØâ¶\}tù2´±§  €…@nˆ„Ò´Ír©2µŒ.!VPXHMMÜ>Ö…‰DªuÆ—Óï‡øíªù„ Ô·IiPÔíÇ–B9×åpû±µAö[\fY5ËõGŸg]â ‡Ô¾éc�«üŽAŸ+A¡k‘ø²{!ñ¥ $F„?‚Ð% U‚Dí@ßIÔRgP~©ŸKž¤‰ÆQŸ>eœà¦¨$Kjµ“P¢ZÔxíðáÃTSS‹9túé³xÞwî‹î}?•”{èë¥ÁÊ9¡u§È„#°–uÑú÷Ò¿WW‘Ñ⢑åoÓ]6‹fž~:­\¾œǪkg:Å=<ZVºyy -F1UVŽ¢a[^¡ý-!vý ùiݶC4[ݼ1Š'þ&ž‰øGB‚ Ç$aøýº¸f2Ú4;èFû uáOž;HcóöÐ {¨ÜSM¾¼"*/- ¼üAü¹hkGD(¤fCoj q5k¹£eW ‚67 §Ý¶ø<§qųė‚ lj/»'_¶øv¶Ž ÛÑRÇ"´çQ¬sOÛ„?ÄS±KlÅ·i"zÒ‚| Îá²\jÊ4ÆäR_ê½púÁ{щø‚Ÿµ>œ7œãóýÚ•3d•Û2%»´ýy\Ñcu¬ • ¹ˆA­ùe§Ëÿ˜åÄ û:D¬Rcú¹é·Î…Äš‚ ]‡Ä—݉/¡5òmÊÌí'™èn?›wÁ#)|¸…\ž<ªí§Q£NŽqÈiëö�Àøe1ïØ±ctèPÐÔ©S9AüÙcïÐOŸøòúS]u#ýâéwéןžO<âNëúc&“ÿóØz2‚ò•åÑWÜLe~ºñ¼©têiÓhͪwhôèÑ\ºÌï¨1žÈ(Õñ&z]'·ÅÅE4qÂxÚµn åO]H- D»|CétõþDŸTÛAŽ?°wº'¸v™º ­Ñ±Ýáͧ\§ÀÝBS ?¤IÛÉŸ—OåeÅTR2šEìÁëõQ1¦¢bп?57·Py]ªYEõ¡<z§~<mm¢ºGrwd³a $æA8þH|Ù}‘ø²ít4s¢ÛÏ"Ö£ýh1O¬èGËX S¤m.ÄëqQ9át¾‰sÆ1ŒxÙ‰-þÁd9é)ÓöYÿè÷9Jjáoç:õ`Åø÷û½|NˆílôØJNsŸ˜·Å¯®?ا˜’_j[jc‘°)úAGs0d‡$-FŠw A:‰/»/_ B,"üz=íý�ˆQðÚŽzª¯0ZÖ­¤)O`QFšØ5¨3ûÀj¶ººšvíÚÅÏ‘ˆ"ÄHc·e‹dpĈ4ºr‹~þüÂ:úö¿7’»´Ð\¶(þôÆ.úÒy‡iÔàþ)]´Ûϲ÷vÐck‘«°ÐL6ÕþæÞ TZè§+æDÆÔi´~ÝÚ¾cA ©‘”Fìãœ={6+lSÙë¥á}#F §¾ë_ FßBj©Pc¿át¬z³ê(*çýJÔè‘Nü#â A„®÷0¶Oº%úú9žBûñxŽ_Úå¡0 Í;Ležzr'‰GK½4>Ò Cm‡ÇxjëêhÛ‡Ûh÷ž=´g÷þñ0JßBÄ] Þáû€hØða4|Ø0vtt޾B™0Lô§Úš*9¼f…7Òû #(d$îÜ ¨´õP°/ •Ññ *ü!Aá8"ñe÷Fâ˶“i[b¦ëŠõh÷§ãµl„ ËÔ&:ÏåXÎ|…lg[cQ3ǼD.9FÜ6¸õÇãl_5ë_'%Y_«öY—9ÏéÄÓj]ÚÈ ˜â_öŒÖG„­9ÅM,äáMY¢Ÿ )ú ´´°ã»9¸4h—úÊæµA’#ñe÷FâKAˆE„?‚†T‰–.óu¸dUGF)Qx÷j2ùÌV%±2Ý’»P(L……E4aÂêÓ§OÊåï_ò>ÝrÏzršvºjs>‹šjˆþøÒûôóOÎã‘+î4¿{a!/yó Á%È¥’ÿ¼|ºò®Õô|¡ŸÎ6ž†>7éûzè?<‚f$´‰áœÒÔÇÑ«{ö’»tE \ôáŽcTÞ·Ÿo¬[AÈ}Ä"·ûƒk(‰svðùŽOÚubÁNšUü>y=fœåñ$9 xßÒá”—[N#’×®]KËÞz›Ö¬YKÛ¶mks'¶{òÉ'ÑÔ©§ÒüùóhÈàÁ<‘bYY̪««£þŽ GpFT§Èª—Ðâê©tT=v-¢øAÈ$¾ìþH|Ù6:Cø“¨´—þ;Öù‡çZo¦Ø²_¶ø†bÞC<ðÎáZçÈ£KX9Û îG¢ý'ǶPË-EâÜŠŒóœëÎsÙûâ"#õyÓ®?dãrDNÛ#ëDßëv¹ÉƒÉ퉖W‹è}4K|¡Ü €àü£¦dƒA„ÎAâËîÄ—‚E„?B¯&]êu¨HÃá¨:Bþ“)\ HÐK£”ðHgŒÐ@t­æd‰›s;HÑ9„Õë¯/¡|äÚ¼c/ýü©uä÷ù9Å?ŸÇK-jû]~¨ f±¦5­µ=ò{iÉæÃø‹“ìÄÛ5;zZš›hÅÎj¢<¯=Ò'¯vçÑå^E7¬ÙMaÔŸ¶’Øzô»"ôß—O§AúÛvˆ8nç1¥�é:ÖNûZ<:t…Þ^Oy3‡R¨…h·QLÓɼ'þˆë Bî´-…úÞ.t/N/~N*ÚECLéÆ˜ˆГO>M/½ü UUUż÷žÊÊJ:á„hÈ!¼î‚‚óOCC „6mÚD‡âÌ+W¾ÃÓ]wý…N:iwÞ¹tÎÙ‹l×HˆÒY3Cà^uä(]æyƒž:v:;�åc ‚ t _ö $¾l‘, ©8E1οÉ0Û.cÄ3ÃánCä,õe-uêq”ÁâmY¢¯ºÆ~5ùTû¦žðbIí€cXÇÈí˜ ÊrÅ`íwD‹~ÐF‰ç*å)±Ï¹LÌ CŠu>âr\ÉÞÑó4Κ^ZðÓê½,+Š)Û¥Å?hou9DPdÊ~éI—)A:‰/{_ BþBR%›x Â<î>ROTê!×MÁýûhâø±<šZ×iv1Vž¦²®Õ‰ðŽ»x^cKˆþöÚ~õÍ·rka¢B•8» [ôø¹ÏCïl¤ýUÕ4x@yÂN =oÓÞ£´óh@½§€GœhÂp R¿õA7ÝþÒ>Çvñ¢J^ BôÃkýö®€xqS²Ò^8?pðqޏÁ1ëΟ¢ÆCd¨U7×ÕQKù=©:W¤ãE!7Àï»Ð3Àµ”Ĺû1"ï M*ÜA•#G´éúíÚµ›î¿ÿzù•ÅwtJÌ;—-ZD , éÓ§g<’êðáÃôúë¯Ó«¯¾JÏ<óŒŠmwлïnàéﻇ®¼ê ºäâ‹’–sâr¹i`ÿþ,~?7²’î?|…IFC ‚ ô$¾ì9H|™9ÙøÜëV2[Ô£žÃ‰Ç S2 ¨àÅp®À^§a•º2ˆb–׃+Bž§!G¬§…?é¶CÝvªÐõ~¤;Ž Õ¦¨'¸åøàšc•ûÐm¶†9ßO¦ÐûVëÑâ —µL«¶Sç?k0¤a99]~œËÙûìþ¸=¦ø‚ ¯ÏËÂ(Ÿã\@¼°Žï G"$‚ t._ö$¾þBÑ (S$bGš1²D}™ò\Øóõ™5’“4Üdªkk¹lW³ú;//ú••r²‹¤7Õú!€A’ šµEû—PßþùTô“×m8sm•ÆþÍë p\TW¦ÕÛ«èÂå<ÒÅ—¼bž[%œË·"£Ym7O%ÝaŠ[ÆõxJ¢¥P6, ú‚Æ•û©¼´˜ªT§NEÅ`;¡Mwîtb^W_Oµ T Î‹KL”râ *Jü´Ï@â«ò˨¡q•ÙAíÿˆ0H¡k€Ã‡Ð3Àµ„“¡Ð½˜Q¼‰èg7z|õkÿ¶mÛNûë]Ô·ok§87ÞsÏ}ôÈ£Ù±\}nºé&ºîºëhøðáÔú÷ïOûØÇxúýïOo¼ñÝ{ï½tÿý÷Óá#Gèü=üð#ôÅ/~æÍ=#á:^}íuúñB_øÂçé²K?¢ö¿©®£ñù»icó(Az_ö$¾Ì8)f -úa§qŸíTîù8ÝpŒ.?Ž?ÈH üa§Õ¦‰6P´¿á± °ÛA}j>½(ÿ¥žcÛhÔƒ3m¯cáj“…Ó$Oê¡Ö­Þ˜í®6áøŒ8ÇrìoØrÙ‰„-aå@D±Géü#F࿜³Ì—~]îÔŽ?ìtäqs›ož?Ïö¯cê|4©ç(ÿåIѾ*‚ d‰/{_ ‚‰„^K:GŸtóu§HuX%Ê!•ܪ~oãQ•töãÄüé:ƒŽEF‹A$ÕeDãUgÇIƒÒ A©¤¤$麑ð]ò oI!å{]d4©¤ÔKddàôërA5㦥¢ gœ Þc&ÐaË%¾´Mϲª0Ü'éŠ17ä°òàmÁû}ÈŒytø€T¢jŽìIUæ åºP>bסÃôÎÄÔ\¤’^u.Ý~7=BsŽíÅÐЧ˜ö¶„M+ßÕÖ7RqQŸw¶ BN’Ë£eи¼lÙ[ôæ›Ëhóæ¨ªê07ö–”ÓСCiòä“èœsΦaÆ’×ÒB÷ Ϥ¾îZ*-mÏ;rä(wŒ$ú~®X±’~þ‹_±;˜0a}ë[ߢk¯½ÖŽI³â¶yóæñô£ýˆ~õ«_ÑwÞI‡UÑÿ÷hÖÌ™ôo|­•0©ººš¿§Ç޳çõëSD£ŠðG¡— ñeÏCâËÌÀ€¹çÄømjyùù¦0&b¶¯µrü1âÊ|¹âWg+ì÷hÇ->ç_ê9—÷²âJ0¨–Å÷tÜÎ_ÚÊ*Ãå|®_Å Æ%üi°ÊÌB„õBøÃ¢#K€_ÖK¯O»þDøØM÷rᵎ*±P(êúC­ŽÛvM"£U›²ÿhK¡h 0ï'v b¹5©óýòBÈ$ÂA„NEâËž‡Ä—‚ ÂAhE&¢ ­b[|%¦ãO¾J^›ë¨©©™–CµåÔr¬ÞLâÔ{›ê"´iÆ<ò¬xo>H* nÏoÙߎ1œE5x,ËóÐþZƒÄ t?f"êóÒÒ­Gñ;�a ~ÈL”½êy$ å;jÔF½™×Gª’ãò"3‘ß³{Mœx"?w&¦ñ ŒÀA§Í®CGhùI3U’PçÎÝQSSq9-),¥S6¾E-ÍMjŸ<d4„É¥VÕÑA¸A@7 $ÿˆë Âñ¿õ¹È;ﬢßÿþ´wï¾V¯;VÍÓ† ïÑ<Dgµ€>ÿù›¨¬¬Œ: ÜÏÎ=÷¢˜y?ùÉiúôi”k,çB¡{Pènfa¶³üêü½êi¢~ýÊíyø þãÿ¢ûþñîô(**¢¯}íkôío;ãR^íeðàÁôË_þ’n»í6ýCíÃÛË—Ó 7|–¾ýoÒôiÑï\~f¨ïÅ!Cìy>ŸŸJ¼YèAº_f†Ä—=Y:ŒSøã6ÝfÜ^/^œŽ?¶@ÆH]êË)üÁs½È:’Ûe³Ì,‘MÄ^ÚåtI+tdºR8{;ÁX„>87\ØÒÜÌ¢´BHÔ¨æq)³$Ÿ˜ã%´c¢4™Ë÷Äž»¸çFëÙÑÓW6M‹¥ú%}®pîáêÃjßyyœ#õ7ŽÍk¹� ‚ ‡Ä—™!ñ¥ t/Dø#ôJŒL.)–×Ik¸°/ B*Ïë;ˆ– ¦þ¨­U‰t´Ó [ýázÚ8g>•¯ZnŽv±ê^ÇcÖv©Î™~ôΪwLáO¾Jø"*&$~é÷ŸE<>7m>Ø@µu TZRÌÉæK«¶P¾ßCsO6Gï>\K;Ž6£VYÆçÅež�êWdþ„ìܵ“&L8Á|-‰D?Õµu´ê¤éT_§+#ÂÉ8¿Os¤¹‘ªó é­'Q¿úõ|N «‘áhƒYŸ qüºEÈ#‚; ¡2×xðÁ‡è¯½'£û–yùåÅœDÿô§?–Ñ3”›×THއ"ÑÍ(¯à,5‹Ž’ï~ïû´zõþ{Á‚,¾Áȱ®Û»ï¾ûèòË/§n¸Ž9BßøÆ·éÖ/ÞB—]viÌrNx”4EHAèH|Ùóø23|Ùr_ÔÂË‘ÇíˆcÄ*q6ö{Í'¶Éó½ìž£yB;i8ÂBÝ¡Š6Nnó³„?º„Ä-ڙǡðûoXëÐmªÜ®j9aò9[‹s¿­²].WëmÎ1Ž?d‹£(ÉùŠÝž©üÑ%ÑB!Sìãñ´Øû‹õàšèó£K±‰ðG¡s‘ø²ç!ñ¥ ˆðGbH– ƃ$ ó‘Ć Á,‡mäÜ‹. ŸJtkëÉåô°v5ÂR÷ž=µuT©Þ÷8…?Îdëf;\Ÿ©PTš¯^¨3sÆŒ,ˆß`v±a{ö-÷­¤Á} h‰%üi †(ÄËRæX#V°Ÿ—Ï‚=J…‰Kšù\©äß‘cÔ<R%ß¡FrùâDO…››©© „Î\@áÝ*Èóó±4Z‡/üáCM þéÉ‚ Û¦M›9ÓR6ËpB{Ϥ Ñ£Fs‰§Ÿ~–þò—¿'| BˆÒÒ.ƒ9pà }ûÛߣ?ýévèë͘ øá¡û!6Ä5lÙ ßûÞ÷x:ž×÷’K.¡5kÖÐÕW_MË–-£ßÝ~=zŒn¸áS"ðAˆ¿ãÛ¶m§¡C‡PEEõt$¾ì™H|™ñ%PÛ‹Ëè°þbŸ×>÷1Ÿˆ99çÇ`DKai1‹áÁàš¢ý¯©±‰šš¹]ßí޸ˑ§¸¨ˆ¿ ,þq¥w8gÇkP ÚSu;$œ~°žÒÒRêSVF%%%¼Hœ(Çeo'l}Ö O«˜Óˆuñ±O %wŠwr®Ÿy”(cA”!] .?A©V_ò«Gì7œ8ű@èÍô¶XGèz$¾ì™H|)"ü„6cX#XÃU9Fù}FÒšu{hç¡]tîS)Ü¢’·$Þ(Ô…ü°!2“;GpáL«ªª¨¡¡‘vìØN—^z)íÞ½›6ì«% ¹ U"ìÂHʈ°Z0ìX¸¬¨€J óí¿ƒa•0‡áD Š<<àDGР¥›«èhÕAºé¦ÏÐ?ÿu?2eŠJP°SQ|Ò¬ÿnD‚ë¶„P 7à¡p Az{Ã* м³O¤æ–@Ì9êˆÐçx‹‚Ö®]G¯½¶„Ÿä#Seå(j o¿½œ–/_ÉÏaùxþùç’ÐÔ¿}½TT RWÒñA*Žá÷ѡC‡¸D (**¤Òرchüøq]2 lß¾ýôÐCós|ÞN8a|Ìëò™4¹6²ŸÇ?þñÏ­æ/Z´®ºê û÷÷ãU«Vs‚ý{ïý'Ûæövpm%qîþÔÖÖÒWnû*íܹ‹;Kî½÷^ÛäǧŋÓu×]G<òýãŸÿ¢`(HŸ»Y¾™àŒ/3åôÓgÒÌ™3(›üîwwp¬}òÉ'±íx{yÿýôâ‹/óóë®»š @݉l‡Þ®9®½ßï£[nù ­Áà¡ø·ê8r€ïòė=‰/ÓSR\LÙÂlÏ4Å).·KµïáÜGË_ÅLNw²ÆZO ÇúlGж—⺶Z¸ —ñ"Óůk÷,±O~~>‹\|–ëO¦Ç¡;=Xôƒ÷¢³ÖW¬Î4Îc²ÛµðeµàL¤öûŒs¢×ojôØÉõ¶�ÈÈÀñÇÖ ÙnHaË ÉtùñiÁ“zݧþ6,÷Ÿü¼<Êw¸uæÈ#ÐVµÿ~ª¯¯çAžù«5’N<q‚ˆ–„Ñc¡ë‘ø²ç"ñ¥ÐÛáÐëH8b…2wûH0‘XÖ75Ó{G[è±ÿ¼HC& UÉš›ÂîôꙚ3AÕÎAÎíAôS[[G7¾OW\q…ºiï£þ*¸}ì+gÑ7XIϯ;J*ƒ"ßÃf±¦nòm…"÷DÂÎºÚ ¸™&B®Öµ¬-û"¨eÂÍjßÃÍtõƒè¯œF†ÊË=J¿îZúÄ?§œÂA9F%9M'åÕ M¦»pªÓ„ò ªâXu-]¼’<}úÑù=‚ÇL|q ézªëOMM­ý¼ººš² ’«;+ŸÏ˜1fÏ>„®£Z/~U5¢4´z ¿˜¶ný–-{‹Î>{‘ê,FÇ“ÎüL Ý‹°ã~“ Üwß?[Õì¾é¦éÊ+/™‡û jSŸtÒ$ú¯ÿú´eËVûµ§žz†>õ©OÄ”IÒà^´té[ôÊ+‹Ùõªºº†˜ î‡S袋.h%îܸqÝzëm”ˆo}ë{öó\«—k×Vh;è|ÓëÑ)òøã«{ÈÙ”K “àßÿþ·êð¿…îºë.¶¹FLyÕ•W ‚`þ–£# A^ÐÓ;Ã$¾”ø²7ãt ï..‘…Úá†l;šè »hÉ.§ìÅixWç+ú‚åŽ1"<±“Žšð=Ðív[¤ÁÃ"¹ä—ë²JviqPºãÀþ¹U‡ž_}ý*vôÁùÇrÍñ;ÊaŠXn>ñhw"²e†â>‹1‚ž8×#©ëOt¾õ¶øšç†¯Çésãl¯Õ¢ \m¿èÂY" ^mhØI;vìävª9sfÓ”)“©§ðúëKhÍšuüüK_ú‚”aëdzc¬#t=_J|)=þB’%†fÀYËB–{6è`á~öÿšp(’Rh‚e uß ªäS¯Ë¹î#GŽp0»aû<úN?åååT :g&.¤ç¾s1ý{É{ô½Çߣ-{Õ»<ª‡ÄGnŸ›ÜqJìEØps'Oœá„”ÛçÁW«=†¨(P‰h œz"4µ²˜~zÅt:{êX{)ì7,8¯»îZzè¡ÿ¨Àã$BÊÊÊ¢Û±DNM†UGÛJôŸ'²ìxUÒïñÒ¡}ûèe_9^ßÀ£?1r'Q)¡ž*ô‰£³1ª êå3ÏœOBbàØsÎ9‹¾†Ú·Pƒùóç&TpœFW½óÎ*zóÍeöß>Ÿ—FŒÁvžøŒCdƒßÔ†ÇïÅ£>N žÉ#Êò™4¹”\á3ùúëoÄÌ›6mj«¤Ù ¾÷7ßüúéO3£hT;Á}ïG?ú)­[·>f>â+0=ùäÓììö¹Ï}¶Û—À“Ĺ{ƒûÇ~ôÚ¸i7î@\“k¢ ::î¼óNA|ÿý÷ÓŸþt 2„Î8c ™qê©S2rÈA#Ÿ Ý‹>}ú¨ÕÓ¹Áâ¸+ôt$¾”ø²7“Íëp7,!ODý³KY¡iÒ'v‰ü8ž¹Œ¨(êøã(fMZDSJÌñ·›ý¹ùñ˜©˜‚Ë–©÷à}ëýëý¹õkjrYn:1çAï öA}á@ÄËQ¢vàØ?œ")§0HŸ/ÇŸÖù.1 [ˆd@ä£Ï“žçx®Ë€å »wïQ¿=O©6sP'ömذ¡|OÊÏÏãAk{ö졺ºzl¼úêëtøðq=ÚEoŒu„®GâK‰/¡§"ÂAÈÜáF‰Îö¯ük=½çBSƨ¤Ìí¡@KŒ0Ê|¹)é�IBÌ+ˆY'ÀȉcǪiýúutíµ×²ejÿþýù&nX®>H¬®š7‰.?},½úînztå.zæ½C´ëP#EÂnj­¤qQƒÑL-qu?4©„ÌUÛLÁ€›Ìl?æ Õ¯„AãÐE“GÐG§¤9“†©ÕzY0ä2‰U÷‡fAÔå—ŒžxâIõÊ œd[¶ÄúX›`d5*$ ê\š\¬$ÏC[ë|tÿ>¤{>>–Gíàܸ­ä<ÉÄ@ÝY$AÕÇ>v ©ÁyrŠÏœìÙ³×þ \¬ s$µZôƒÏ'5PÝÇòƒûl=W®\ÅŸåÅ‹_ãïZeå(:ÈgRÐäRrµzõšVu¯3ùœâ;÷àƒÿL¹L]]}ñ‹_¡ƒ¥\ßÏÇ’ ßüæ×©;#‰s÷!ßhÕmñŸ‡¡¥ËÌûËÝwßM]tå2ˆñî¹ç.uùòË/ÓOö º{Ì<¸‚_Ç=Òç B¢®ŽUFÜÆÁpeå(¡g‚µ¹4ª¶³‘ø2‰/{ép2¡uÛ—£\U$™0LjiÛ´K}Q¬C-ü1œ¥°hˆÏ3ŒÖœ$Çsv9®äÛqWz ûÍ1¢rŠ{¢ëqo'-ö1lÁOtj]L‹Žâ×i;�Y.@¹Ú«Ÿzêi[ô3a ,Ê())iµ,œ'^}õ5.Uÿoß>4uê©$m¥·Å:B×#ñe,_ BÏA„?B¯"Ó2_Éþ®©©aÑÏ ì£äÑвjr¹s-¬`0B!•˜ùàÂCÉ“ThkÂÞü˜õB4ÑϺuëØ5å½àôƒZ×Z â±ò[lÃëË£ESÇòÔÜÔH‹ßÝCK6´ìxM‡=ŠGeŒTR˜¯ÄÚntŸ*úÓ-VRµ-ì ×—VÛË÷zè¬IƒiîÄ¡äñEQ`?ëqŒÄÁû ÄA™2ˆ}Î:k!½ùæRÞo]g['­ŸŸÏ+òKãœò_^QË1Z Dl­£ x;Å xz‹ëÐóhllä€ï Tö#GŽH¸,~`<pà@zæ™çøsÿò˯Ðõ×"kVà‚вÑ0-¶oßó7¾HгÁoûû˜¤e(¯¹æ*vÞ‚5/ìs1ZFŸ—_^Ì¥çÍ;ƒG«ýö·¿äDô«_ýFÌz¯½ö*š1c:?ϵQm¹tm…ä`¬ò¬’÷©_Ÿ¨ðõƒ> »ïþ ?ÿÜç>§î×Sw�ÎDpü™:u* þßþ˜þpÇïø a|žÊd'ì¤÷š*IAè¹H|)ñ¥Ð1Zµ›‘v¼q[(µðG¿Ïù$^ôcNÑmÚ$k£K$Jñ™ÐÇ¡…3ñ⇽NzÑc¾Ëþ¿a œœî=QÑO¢c4b¶é YÿZ‹’­Ó°K~E £•¸èxòÒK¯Øe—08mæÌI—7n,;J¢\oSS3—ý:ñÄ ÇÍQ[!_J|)=þB† „ j:z”vL:ILqò¸]ðÞ¥P0La5ùó|ìê“0¯E‚Š’WE%v§~PÞ ¢ŸƒZV©ù E,^·é(±Ýü‚Bº`ÆxžÒãâýõz¢¢±ÃÒ7-JûÎPØàcÂû=qö»:ñFIˆ0êã”SN¡Í›7«ÎUTTDÏ£?Ï¥*‰ÇŸP„êœj~{ÝÔRÛo¨¥ƒc/¤mÖЉyyìz‚óÔÛ€SÍC=ÌÏÏ?ÿ\:á„Ä×ÖŽp{FÛ dœYÆŒÍÁ£³¼ÕÊ•ïp çdÅŠwxýû÷£üÚVÛ€XeíÚu VWW«kkPqq 6L“b®}²c€m%FðoÞüÂwß·ÒÒRÞ×ÓN›š× 08§ï½÷>ï#~,÷íÛ—&N<‘8:bà uK‹YËwÖ¬IE?N°ÍSN™¬®ÁzÞœ?œ/'<òÛ2ã `ĶvíÚÍBƼ<? ˆð™ho žê3Ùן7”k;pà�7&á³ ñáØ±cØÎÅÂñ!—F&ÂZÜIyyß„Ÿ |'>ø` ¥ßý„c˜Ó‚ëüÕ¯~ÎßG F54îºë¯ö<4~"qF£'>§‰F  ñŽ·äÍréÚ É“¿úz›ÔçÝü¼âºýê׿åºS¦L¡ßüæ7Ô@l ñÏ‚ hãÆì*yÙe—rì9dPšÚD4§ !im6‹'lÀÍX¡–ã|Ü«QÒaÊ”ÉûtÄkÖ¬åÛ@ …ë}ê©§pL)@8H——@îx1 ö5ÑhtàŒO.¿ü£jÛý9ÞºõCŽŠŠ éÆ?MÙîUˆ«1ÀñâåAƒqü5dÈà´ïÇq"öÁ=÷-s#þ™4i"Z�‡{Þ‘øˆ¿š›[8Ä9G܆X6Ýà‰lÄ_Ø|¶p>Pû€¼aÆŒi¼®Ž°|ù zë­åüüK_úšÅ5Å=Ÿ \St>¢ÃRÇìøì¡ÌîŽ;9–Æþ >œ­õ“•ËÓ±5\ ºO:;u.þDží½.™îÃþýhýúwùša´/Ö…ï¯þ~äŠëi:$¾4‘øRè(vA.Û˜&¾¥þ8V]_TÛ'Š%kÃó¢ªû1Q)¯Láý²Êj–[QTTëÈ=!û$ÚzG$ü¬ëßöøŒF&¢¥.÷GÜK�~¯R‰~4ˆÃæÍ›K/¼ð—¨GÚ´i§Ù¯·7ëh‚R:x?JÚàž 1ÚôÐßZ¬#¾Mï÷¿ÿc«ßÕÛoÿƒýüâ‹/L·¶7>M‡óÜ}ô£—r;Ž íkGŽås2jÔ(š;wŽ}G›bnÜ“ãu`²˜ÛS}ö³7$+<úèãüü Ϲgi:;Ö‰Ï[ð™+--±Û¥q¬‚‰/M$¾„ž‡´ Bœn?MMM´ÚUD¡0\w<T‰.·jH‡-qŒ9J$¸ñxÔMÍÍMêÆ¡÷ߟ®ºê*Í H&úѰ�ÇzM—C²AÏÑÚFzo÷aµK;©„X…¹ŠU¼P×"Ÿ§™ÞÛ¾jš± ƒÂú^èâ¤)•©¨ Ÿ}¸æ¶ b¡ÔiºSüƒ†\Ejk+¸4^3]H\ò+B)–ñR(¡P ÌnJÙÝ‘;ÏGá¦zÚ<t,U6×rãe¢s•îïž¹Ÿ~úYNР“áС*ž"I„³T{AðøôÓÏpÒæ¤¦¦VMïsrQÊüùóRžO<ñT«ý=zô˜šV±x ÉÊvuh €ú=Þ <&$˜h¨¸ä’‹Ú½Ÿï¿¿‘ÑðàlITøH¢‘ÜbñÂ'ØOÔeDzˆÂpî1Íœ9N?}u½Öxÿ‹/¾ÌÂ!'ølïÝ»'ˆš.ºèîLz7‡:IÖ¸†¤ù[ßú¥Ÿ©¯|åV~þÊ+‹c^;ãŒÙ ¸.»ì#ôÜϱƒÞº:ò»+©@´7­x3 Зc'ð„úÍÇo&þþÓŸþÔ-ÓsçÎ¥ÏþótÇwÐ_þò7š«:ú÷ëÇ Ðh4žT°Ö6Ž#!;@$ðÚkKZ5–¡1Óºuïòho=º¯= nA™Rç6› ¶Ä„õgÒ!‚{þo,éC›¤ÞWˆÓ.\À ©Àýâþ­:Cj¨3ضm;ÇæÎã5ãåZ¾7œzêî K/¿ñÆ›êX×¶ê�Ôë€0'çwNÂu “ç±Çžàe Ó ±!¦7q›È92ñŽ××Þ âPœÜ.³' # 1¦1;„8¸Î\p·³t‰Þ':§p<éU¡£×%¸f8ßÈÇâÑù :áÔ‹’-BæH|)t5Ùì¼âöCõû6à*a©Ù¦hX–H¬pÇ®hÇnƒZ»£ÛîA! ¢RÄžx½^Õžèáç˜x¾šÜ¦ú…œ%®2ºÚÇ¢Ÿ;&#þï$ÎBÚ]G zbÉã܃«í˜dŸ«¨ Š×OÖyÆyu”Ts»Ôñ«ö[:7Îó‚‰ïã÷Ÿãó>1I¦Œ?ŽÛ§pÌñ¿›N2‰Á²‡à½øÕÎEˆ1!þD;)~c;*ŠÍV|š¬ÿÙgŸç˜%º0·«AuíµWóùE<ä<¿ˆ¹!¨Á4}úiì&ÞYtf¬’å-` ×4]œ-¹€Ä—‚ dþ½žV#C$„¸ù¢pËÞýT;g>E6$— HÑHˆN·ÏÞþæ8Ò4‡m—úR _a ÕÔî¦fu3ŨÏ|ä €›z:ÑOëUZeÀ"oqå¦]tÁ÷žUB1‹xâ q“QRJT “¾ö´šï&[¤Ä˨¿#Í´é×¥FæýŨ„LÑâ(‹!þ7n­ZµšÏD:ýúõ'‚ÛD®4¥¾Ôù †"ìøƒF‚p(DJŠCÍÔ4r­zuÍããõ¶w¤DO¡‘W +ôÈì²²RNŠ·mÛÆ6HlÑqÝu×p#F cä –yøáGù½••£hölS‚Æ'e‚äÉ•×ëá„£) ?rä¶@ã:F¸€3ÏœŸt!˜A’}Úi§rã�JÃ!)Åè[ŒÄÁz`- AÈñ ¥¥…•îØ0tèî\)..fA’l$«]ƒ‹O|âº67àûï @�îŽsÕJ’ãÊÊJÞìö)Ñöñ;öÜsÏó(_ÔɆ𸬼ýörn�Y¾|%_GŒê :z­Ÿzêû³QaøÜbtŽ j8X®¾úJ~Mè½8]Í�îÙ�Ÿ5'¯¾úzÒeuÒ¬ÁçWg¡³•w€J<-TZ6„ÿnV÷¯{⦅£Ä׬Y'ììl~ü㫸ãQŽ›ÿõ¯èË_ú"ÏÔ¿Úò!½Û8†Â”ù½SH :*–,y“Ÿûý>ŇÄË €Æu¾—-{›G·§£�°ˆwp/Gl…ñ¶Æé\;¼ùæ2~Ž‘á“'ŸÌ›âs‚†~äjè(B¬„ÑàÉ€°ˆï°ÝkF6À ”Ûó¨>âᆩÏ'âeÄÞkÖ¬ãy蔈géÒe*ŸZÃÏ!tÃ52Ä<_èLÁ:Љ„- ¼@ŒçÇñøãOÚ.8ßf VÀù�Î7FÐëÑ gŸ}V«}ÈFüåýäÛ× ±(®:§fë‰N úúzŽ9á€øÛ@'²1 vÉ’7¸ÓûRQ1ˆ­î!@BGÎÛ /¼H7Üð©VñD6ÈÆuIJëx£ÞqŒÈpŒX':Ùðý€ޝ²r ™!ñ¥ÐÕà~›-СLØøÝK±_w.Ûj%i?eL„].Sôƒ6$ÜñÁ„ç¸wñkêQ;«à> 1Óv-Âû‚êw ¿m!õ<¤Ö‹p<ßZg""ý7¯máHTüßF'úqºþPŒ�ˆîGQ'¥hù.óCð„c÷y}äWû‹ó‚ " >/Ö9ÐÇx¼Ùµk?öëWÞ&g>#§Ó‘I ÖÑ8ï}þùí6`^++Gñ¶ F …õ žB܈pÍ5×\Éïý÷O=OVáˆé$›ñi:°.Ä-8´áá3ã@û$ÚÙàÚQžãx!fÆñ£=ñ8öiåÊU*&ÉmÇÙ¦³cty ÎFˆ³q½æÎ=ƒ!W‘øR„l"¡×ЋTý4"y|Ðhj® “O”>¿‡š›„¹X˜ÂIf0œZH‚×àøS\LÕ{kèHÕ!Ztî9|cmèljÛe&³NN‹z!ïSŒæG=+òtõÝ«¨È¦}þ|ª ÂÍ'ö¼`ù‘ýÌuºÛ¾ñâŒ^¼x± 싸qš úÚ ‰À)Gþ„ä;¡¶'ÆM-A~žWT@MGƒ´cü4:¥qŸ;0ô¶{;© !@ȃ‘³Îó‚d°_¿~Üá T$|˜&¼_ƒ„:‘Ž9Úæ%NâÈ")v6�TVŽâäI7,!þ0(™½*’RŒîpލÅ÷‰',l±$‚aß»thÑ„Pñ#Ü‘\"¡|å•W¹3 •K/½„Ú‚ÓÒ›¶‚s¥Gù@ü“HøSUu˜ËlATã´/FóŠë|w–ð§#×5º±'‘“;БóÜs/ðu@�¶%ô^Ð8é£þq/2f‚ó;oÁ R%ÏNâGº B6™R¸úõícÇ~O=ù47ôâžð?ÿó?ÔA£úw¾óú¾ :´Ÿ¥_w-Çql>ïªÌßO[›³ß`Ý›Àˆ>]öB+®øXŒ¸Âd”á‚í>~ßygµºŸæØ"SÐAóÚkæï%èÑ!ä™­ËÑ"&AGFª}ÕåP& ñ®³±(è\À¾BX½xñ«'ûýÇo3`Бm× ^Füå,‘†ó q>÷£ S±Œ3^F\®GÚãš dªÎ{�â5ÄØÃáP¼ð±“å=gÎé1¯#ί¬ÅâäÛ·oçm:Ïe6â/œ-ú8 çÂé>†Î>ÄÓ¸^è Êè\Ã�§‹$>¿ˆ7áà‰x@øœ;?ÃøüA‡%ˆ²_w†…}G¯K*pÍt#?ÖƒQ¿Î8åÎ&O6Ï7„ÿ/¿ü œ:R²¸7!ñ¥ÐÕ =2[Øî>Dì^î¶œÂ"ŸVå¦l²m¢ó)Æ) ˆ*ð½Àï}¡zΫù¸ƒ`>„. ¡º .@€é”8|ïpnê¨QM-êý¸?556RƒÚ&~ã±ÉJñÞFL×£°µÿ.§ðHŸ¢§û<ÙÿÈaä˜Sâ+ê:äVßû<µ´¿!Ž-dË<žv\]Úb&—ûøŠÚ!šÕåè!Òî ÒÅ`ÙˆCàpg ÝÜÜ~ßÞ…8q¶…imë˜M·u¢}T pŸN$RËv|š”FÃ6*+GÙóǼþúŽ+µpNMNgpÄ5ظš´gv†ð§3cLò”/Bœû+â:Ä?-++…Ä—‚ dþBH¢Al宽Ôtú™ªªãdÕçuSS$ÀÉn¨A•` <UºÂÕ¼|¡Ë„5ÔÕQÕ‘`xÔ¨>r ±Ü`©OIyjr»î²Âw©Ä¦‰c†Sgáÿ|øá‡´páBºço§ '‘§¢‘”Ž?x?ʦ,ÇœÓp(L.¯‡K¬E0z§o ½¹½šÎWß°Ä—ê©n>éÀ¹Ð #F OxäAT1pà€v5ð"¹ÔÉÛ¢Eg%Lœ0råÜsϦûîû „tâïD ÑMd£}Ÿ5k¦-HÁèÛ®þ ¡#a�F'+kÎ ˆ¨°âûÜV‘¶£i­°ó=ÎuÅ3þÜ„×džNovïÞMEG®5FNŒÈNV>E8ÿ°”F‡J4Ïq½4€åJ-e8a9Aã)lµãKé¡êå—Ÿ‹™÷­o}—G¿iŠ‹;f÷í܇îŠÛ-n*¹L™§ú{RYÓ%Dÿ~è?üüæ›oîœ7Üp;ÿ Cÿ??LŸ»ù&ž?@Å„“ÛEøã�£³ãGìÅ/ðF¬¦G–Ÿþy 5Ñiwá…ç³ 8~ë1Òg FTë±p JTŽ þˆõ6¡÷â!l?Q'âˆ3ΘÃ#ªuù&t¶$ñCgˆ~4 œ#úÑ ~;÷ÜsØYñûúõTl½Ð~Çõ™ÏÜÀb˜üü¼Ñq:2ÐùÑÓñΈ…4ˆ÷qæ™ólgœx²Að^”#KTrÛÆõBÇ[6@éÚøç ÷|¸žœ·DÂ5Äûè 1Þtôº¤B_38+þ¹ c|÷pŽÐYŠœ÷Œ\þH|™‰/{6GŽ£¬¶"ËqÆïÏãE] K·ãÅ~ŒX—Ãñ$*üÑåÂ,G›ê lÁüõ›Ÿ¯âüöëßv½QÛ©{yCc#‹vté¯TèW±ÏhS­Wmª�«®f·Ä¨Ïþö¦þèsØgnçu|cËzE~ § È ‡ë>1Ñò`ú¼Ø®J.Kô¤Î?Eê¾^¬â­<Õ~æ²ÊŸÁñëjTq\ ‹nOíÁ):ëhù«d¤‹Á²‡@ìWɆ†Æ¤ƒÜÐNªÅÖ'ŠÛÒ‘íø4,UVŽj5æÌ¼/�îïNÑírc›åÇSgЙ±N&y ~sà"·'l_ ñH|™‰/¡û"ÂAp¬Ì‚ý})„ös.=å&žJ ƒ <Ò$Ïï¥æêšƒV=fJ*�âäÏí¢•ÜUÉêsŒz„;N2G”TDØ:V—ëR)«áây¼ykPŽ,¢æûTŽVˆ¬åƒaƒŒ¸Å_樃ón¸ µ5>Æy8xð 3†žáEý4µ4“¡(¥ðÇÜf¨%Èb:·jëª! Ä¢¯ÏK†ÚŸ@C ©–ǸÔ$£·œ¬ yMT'¹-£³ãA1èÓ§,¥-<ìu1*"Ž;w&].Yˆj`ÁÛÕàXõïF‹¤bêÔSl·%$ï³gŸN™‚Æv :vÚ :â4ɬÀÑø€òÉ@¢ á:ä@wFã{¯5"0`Sªï2MÐà0Z îSBבK¿³øNÆ'ò]Ÿ8ǃäV þ4°¿Ö”—Ç6ÞpÃõtíµWSOGÊr›Ñyû(¿°˜G ƒå+Vðo':¾úÕ¯R¶Aìµêwhùòå´oß^Úà�ß7àÌ3vì8:묳T re4Þ~ùË_¦o|ã<:ô³Ÿ¹‘·Y¢¶Y^µŠÝMT) ìÆþTÌš5Ãþ ÖٲŌï#¦ŠÑRY9Šyй‚¸CNO‡vñA™ØT.*ØFÃ)0ìëÖ­¦ËáøñãSvD¡C£©C*§@L¬c%•Ó!Fw§s[@gC²‘ð(gªŒ:²08pL8…?�÷±tNŒÎ˜ 1”óœ8sƒ Þ§ ´ú=×eXâÉFüe–•ÝÁÏqMSuì`Ô>¡P££$»®Á ˆDà·ñ8bb”ˆè :r]R¡’¾fÉò@ 0u$¾ì¹H|™žlw¼i×ý€DÎ?ú¹Æ~êr ‚,—#*ÒÛ±ž´^i·»§gÚ^ç²Ö§ß°JzaB› —ù²J}¬õF’ ¬}äÒc.¯ý·½¯Žò^ö‘ƈ~ [ç£ON¼PH—úÒåÕœçÛŠ9fk½Ø_, Q”AÇÄOg›S6Iãd³ñG*m J²jÒ‰çÑñi:’Å:ˆcÐþ‡AÌ©úÐf áO{Ž7:+ÖiKÞ¡óõׂ!_ö\$¾z;"üz5©Ê9k>ãyƒ/ŸŒp„E2uóðzÝ,`A²ŠÑ!¨gTsM)Œ"–+ÏÏî,Hdž{îyV¨·Eüæ@�£A0:%vkѦ_쉛÷ÙYÑK/ ^ËåX6~‰èzCêØ°|¦Ö»ý À~óÍ¥´}ÛNHÊúõ#S Í)oÀx n?á`„|yfG¢ÂB¯:ïæ( Œ– øòTãöaV2ã:!@êí7v$ãH"!<9t¨Šþþ÷{yô ‚>$CÙHÖõh$g\¾-Íþ�ŒdIfÛšjŸ2´t&ÚŸ­tÖ·è<ÃÈZt ÜV[pZwê‘ðmEM²Î7Œ¸Kö]ÓY£~Û{­Q¦L“îsç<ŽcÙ)d>7zäÕñ±gœ1Û®û0 ÎRõ—Œûîû§]Þàûê©Sì¿á\¥-¼n`ìéH Üf|Á^êSm`~áùùñ¼óΣ!C²gÍßç§Ÿ~šú÷ƒÔÔl6ã;T ËMê^ÑÁ+¯¼B¿úÕ/iìØ±ô½ïý·jä]@Ùâúë¯ç’_ø}_¹òv‹ÃgÓ—WD#óÐ{M•$´[tü‘I¹O,®=îɉJÃ&Bß—!DN÷›‚Ü!‘ðûªÅpH‹Bø 5¥Œ R‰#P"UÙ1�aO²Î—ÁƒS:ð^p\ˆé9âhàèƒ8yd;ãòšøQ«ÑÑÞ°jG9W8;"7>|8 ŽRÙÇg#þÂõÒBžt±4>øl`Ð@GIÖ‰äÌS}õ(ÑÎÜ‘ë’ §?ÖÕSø²ç"ñezÒåñmB—›Bi-¯'VèÂOâ\n(‰ð‡âK}™O¸lV$Ì‘ˆ ê]σ˜Ô½ ¿m.ÛqÈϘ‡ßlþ,dØž‡vØj÷0ËÏñ60å«õÀa¨À*/–ÔñÇù·µ?Ï»Ù(Z¶‹"±®F)Z)¦MÕYâËüà7 í,Ë™Ž>ë·>h9þxx ©‡ÛF<jJŸtjkœmNÙ$Õ1vV;Ú&KÁ‘±îÅZ¤ ÚsïïŒø4™fzb¬ÓÖ¼E’!ñeÏEâK¡·#ÂAHý ##\Ö—"á'…n¯›òòýèé`±O>\hÂáø“fx¹l­ Rž2Ym#¬‚ß½êÆþÍ›77­ø'l \<V€¾s½µy?í<Ü@ÛÕÑΣMÔ ³ çH]}qÑXºñüìò/r«?ƒ*á¹þöçhw­AyêA•úhÌÀbªPLã—ÑüIÃÉ›g&Q¼¥�iÑÏúõëiݺwU@?G0lܾƒ\~7õ˜éRò“䢰:ˆ¤|ê܆0‡ÂäÏ3k„s ‘UY:¶c;'úÔÄÆÏ#…qŽàVƒÄ×�€ÒAF€–——·gõv))ØßÞsÏ?2~ %¦¹,ÖÒÇŠQ¿™ø,✧žè}ñÛl Î÷$kÌ…óÜÞ}pßO<•ñû:k”¶œ\K®0ºkÙ²·c\µþð‡?q'îUW]ÓP„f”[í¶“ æÇX}ŸuÖBzà‡ì¿W¬x‡Ë˜L™29æ}p‰øò—ÿ‹;}Ñè5fÌhºè¢ ìs”èû�‘d®"‰sîRàn¡w-™â ŒÚ|ëm³q瓟ü$e‹½{÷Ò~ø¿tøÈa¾Ÿ÷)+㎑`(H-*®u9F`·¨Ž–wßÝÀ£o¼‘~÷»ßeì “ Ä—‹-¢çŸž^Yü* @ßÒª¬áæ#¹8¥+c<(} Id•s”—ÊTø£ã•¬Š'ÙHigL°jÕž2¡³F3§#“Ûø80^øƒû¾O{öìislƒßn4?óÌs܆‘óË—¯ä ¹Ó Aùþ„Ü ~»Ùˆ¿œ÷µLÊ„dµƒ;‡éÈuI…óš•”¤ÿžu$¾Œ"ñeï#“{f¦p[šÕÉÏ¥¥¸ -*Œá²TF$ÆÙÆɸÏ)¶ø—-2ê­â–æ&sð—?`Úì â3 уÛ*m±~û!‚q[e®œ¸’¾Xîïý ­°@­ëÂýç Û‹¤þhG WÌùˆ?.ËÑ(:ÛÖù˜ë5bŽßv ¿ˆéÞÖnDp'RûRûíSícù`Û˜¯ÅG87(æWûÞ–ßÿΠ£íT%›í@( ‡²9( V[[GÙ¦»Å§]AçÅ:mË[!_F‘øRz"ü„ 1EÞV£’×ÐQ±n¼.·JT}ný(?‘J ¦tÊ6†ÍdµwW¬X©sßãQ¨Õ©…3NÌdÕe ~ÂôÆúôçÅ[è±u‡¨±ërs2žp3†È§&@[§4ZÛm½/.>ƽ¸¥ŽŽÔxÍ_ö–Uï‰c#r4nH>Ý0{}|Þx6ÈôF…×ÓZh£÷£%^~y1%è”ÅhJh\®$;cŸ s÷ƒ6B>ŒBÂ~ ‘Àëfw%Î¥!€*ðÐaum† ®à ¨=J=±ÎÜGÓ¦Me猚ÅèOtÆaT0&”€˜={ÞÚŠÑN¿agàÚÝÈô3ÒÞÏR¿~Q:VÇKmaïÞ} ×ÕS0Úù¡ëΟ¹îJ®%W(/÷éO’î¾ûo1óQçã`qmŽök-ØCÏ}î³1ó žœ1c'Ì�¿­ßúÖ÷èc»”Kf  ¿½ÿùÏ#<º “.½ˆÎx –CÉÄêêhí{ŒÖÁ¾ ðœsÅ$ìÇIœs—Á¾#äöåÛ×#*Ñ€Žƒ .¸€²Á|@?øþóïqYi)åaÔ¶Ú>ÿ-ªŸgá ðèjt¾`0ÿÎ;ïdë{8ecäòe—]ÆÂŸÕ«WÛqÊ) ôíãn)ƒzV\—‹t4vÎ侞lôqWÇ¡_|!u„LŽ5Õ2¯¼ò*‹~4ø^¡<jYY¢†è ‚sçèÐxpŸƒ¥;:»¶nýcMÜ{pŽQæ´.¸àü˜²¬ÙŽ¿:z.zí½.½‰/%¾ìÍg šÌܹ#ºô”j_3]³c´ÐE‹œ¯µzN¦ÈÔ¾8J[©uk§ þÒîÜúZ»Ä‹èð‡XíXNá.ëe?wÀå°,—††ÆFjniá÷¢Mµ@ ÔäSq§³¼–s]†ã\@œcèW ‡èGÛéyÖ¡ê¿ó ç?ëü± N?˜%ÉG鿃V)7,G:†V¯ç©}/8Έ§à^ÓÒˆisê*²‡ÀáíÓÎØƒ"ñ;Xª_?3®BYöï+µ‹žÞf%±ŽËH|)ñ¥ ôTDø#)0…?©­%Ï8ª*A3G¥øQ‚*b¨Ž0ùaO©– 3°dá Q‹åxƒç‚gª$ä¶Þ+**¤‰'ƈl‘zïs+6Ñ?¶ÞÙ®nð†Ú‡BÕñRf¥®¶õ¬A^µÞ–€‡ò}žèvãàD]KY¾‡Ž¨e±¨™y¬üÚÅζ[« à¡­ô?Ïl¥ë¦WЯšFƒú—ó²àh÷!íV„‘ÿùÏ£l[?þ<>FCa^¯+µîÇ*õe&×°–e”úŸÏïUçÁÅ®D.õ6{Ô„¹³jNwWp-´{’I”ضmw¢tÚÒ¥oqëÊÊQÔðÅ(À/¹ä"êÉèN1„߃t£vúië¨<g™°-[¶ò÷&ÓN5|öq]/²9"0WpŽ4»öÚ«2.‰(t=ÙpôÈ6ƒ¤£aâS¦D”––Ðøƒ„Éë׿þ_*¡þ¢]Ö ÛEãIã÷§ÛnûR«ù3fL¡³sç.ºýö?ðsggÏ>r…\¼¶‚I…ï•E;Ö¬]˳fÍÊÈa#GŽa§Üñ½À}Bǫ≠y›¸ƒ§Åëãy«ôªžÀK/½D7ß|3ýýï§Ž²páBk¿ŽÒÎ]»hÔÈ‘ªS"_ÅçõõÖÑÑP) m±%Òá\ ™‚Ï ~3ÙF²‘åÎ}7ï š:õTÊe2qt.ãüνS‹~ èOsçžÁùU|<š‰e;¾‹••£ì¸ ´ûöíç†^lzO?ý }êSŸ´÷!ñW[?[ÇÃQ ³È¤Ã²=×%ÎeßäR|GøRâËÞL&å|Ò¡[´`&h9Ðà7È®è–DÓ¥Æ.å˜o>FÛíù¶H†bÄ?!«´‹Ã-¡‘ncÕÛs£\«ú àµð'žÖîCŸhî Þ£'=N9šëujWçyàsa•àâó€ýÓûqˆx´ÛOœèǰ…@F¬+c_"+ÄÉ|Î-áîãhKÕeÀp¾\u‡û@þø~ ,Lˆ¶ÞLÃqÜO>ù4Ê:Í™3›ÚJ6âÄXZô'o8íÃÉ"þ{…ª¡»Å§ÙâøÄ:m‹-!_J|)=©‹#ô ::JàHS ¹½*XµF°5mž)öcŽßï1Å<M¨1›¾Ø lZ<>{H8Î<s¾JbúÓóÏ¿Än9ýTUâe ú9Pu„®ûͳtÁ¯Þ¦wvÉ­‚ao±GØ@ÄÛÈ,” ›™fÂQñ³XXƒ÷úýX§¹^£vÕ[V@Í®úëë‡h·ž¡»Ÿ[E‹£E?UUUœ�âxîºë/¼ÿóçÏeÛM@SØa›ò [È©ÄLgŒ ÇNæå©ãõzb ך åU“¸§€FƒaÆr’û±}Ôž¿qã&j+ 8ÐãGåj÷|¾Òp:|ø°m)Ü×OœÀ°­]µjuÆï{ë­·ÕwÌü­š8ñDê‰8Ï'lBî¢>rÏ|æÓôýï—]2aæÌéô—¿ü‰dúø—±L:õ«Ÿ%Ávà ×'Ý'4°æ ÎQºBî1ÈŒ ×6¼Çóçϧlð›ßü†Ãó ò© °€…?¥¥eTZVÊBhTÁ玘Nͪ3^÷Üs=ñÄÔQÆŽË`ûïÙó=¾<*÷Jão{À5Eg€Sd:`-pÝ1ê0St ‰r±éF8'‹»ôèsÐb‚}ûö¥—õù„ÜYê`ûöüˆß`”J1bxÂßb”Ri+øîâ—P¸€Ä“°’×d#þÂõòûͼò©@'aw¸¦º!9H)ÑHÜtdr]Rá¼f»wïN¹l¼ F.#ñek$¾ì= Í­£“>׫¼&§óMŒhÅpŠœe¼(ÆÙ'õD —‹G‹ÄÝÎ}Ä÷Ýñ×B%tTÂeî>x X"Ýè\—ó˜ÝqçÁ9Ùïqé¿ÝÕ69Î9=êð}‘â€L×i¡öWMKü” Þ/kÿŽ7Îߣ7ÞXšñû è@§0âÊövÀf#Á>èÏÈ¢Egq›Y"1]{b)'Ý->M‡óš¥ŠwÚ#¼éh¬ÓÖ¼E»ƒ B<_¶FâKAèˆã ¤@7HµÔ´vr¦r/žyãßLÔk^<]gVÐ øüÖß.^/Tíÿ¼üò«ôÐCÓÍ7VݘûÑ‘ªƒôÏ¥Ûè{Om¥ºz•Á‡‡­h3’ºd!Q„ëO$áü×[ê§ê�ÑMß@÷,ÛIw||*Xª:ÊX\òãÿ„† ª:›Î`!3Áo‚ÖÐôN³Ï*é²<n'Êxîó»Z½µ¡ÙLÎt"×KwµX,"ñÁHˆ|1xp;)Áõ§=Éíøñã¸#µ\‘ÌŸpÂø¤Ëb’2ŽÝ1象qŸ+ˆqÐá’ g ïTç$§6•;kᎅš¾Ï9ë÷&‰1ʶŒ¢?ù䓨'‚s fXŽÂ± ÉJ²Ï¾=¡›Ôû>> ‘¨£ gÁܹsèôÓgòwzÙ²·81E­y4"£áhÈ!üÙ:묉èà˜ö›ßü‚0êßG�ñÛŠÑ6(Ùwúé³èì³ÏJÚØ‰uÜyçïy¤ Ê~:TÅóáÞ•’HÙBFËä6ežzÊóGKÄjÁäÉ“©£¬[·Ž–¿ý•õ)#Ÿ£¨ý*öó=`ĦImŽX6cÔ0‹ÇíZ¿ùÍoÒ…^È1cGÀ±¡SÛÙ±]”ï§rFë%¡m v7n»ËhÛ}Ä‹‰8vì˜-Hûc[~Ð «|.Ö­[ϱO"0  ™ð y½÷Þûìxˆû>Ê3$ÛÁrC† æßÛãâ:í“ÝW·ëÑ—8®Ø÷šå?òø;W˜t©:Jà" Á ¾sS¦$þM0…toósçý;ñ®Wee%çx=QIk >Ý¡sFFǵMæ~€ãؾ}{Òut交n}ûöQßÓj>ŸÓ¦–4žÀ5}ûíå*¿Á1R®ÇÍ_J|Ù[ÉVûV¼#0l1 ÚÓ\q"‡¨ÅáùƒÃõ&¦DV ±O²ýÒBÛ1ÈQ. !ËÇ9º¯A”€ß†°åšã<ÎøãM´]óü±jOŒ8Äë¶àÉQñË1Ã*{Ì•›¢ÿXÎG®øí›#º_æ.åDÛfeå(ußÈ¢mÄï¼³Šï-©@÷úëKø9â†L:›‘8DDø LF¦¢“dt·ø4Nç™’¹-¥êìï¬X§-y îŸpNÁ½xúôiiÛX…އė_ BOD„?‚dµÖþºì‘‹¸AæùͯR�Ž?Fºuº 6F¾ÙxËIŸ•Ü")˜7o½öÚºýö;è{ßû•£vgC aÀ`^Y>µÛÖšIš˜i.‰C †Q~K·êðÙ\¥ŽW%±ý¸ÜúÑþOÛCTp2›“-ÂÑÉ~ÀëgÑS&{T ©H|qn¹„ZÄ ¿êÐq{ÜÎ<ß^S¢„¸7Š€Ð±ðöÛ+ø9¡Q“5”ÀçÄ;Ó 8Ò× Éu" ¢‘¯/^üª K&YJŸ{î~Þ]Ë‚!Ù0á>¯)„ÀÖ–ñ áÔîI¨Ÿ«G´·u[(ñõÒK¯ðïÂc=Á£_ Ç­ôW¯^CË—¯´¿_gµ0+6à‰ðx¢¿‚Ç+!BãÒ+¯¼ÊÓ°j^´ha«F4ê î1 eÁŽHør1qhtZ°`>OÙ� |h@ÂÔ^0úæ–[næ)WÉ¥$^ˆÅã2ÈGAòZ÷ 42k«ú &PGy䑇ÍQÑ.·/BÜÁÄ=-ªÃ£®ƒ˜¸S#h•1òÈÍxW—M›6©Øa1sÎ9ÔN8ázæ™gh—CøÎRo# íãÔS§pŒˆÎˆçŸ.¿ü£­„�¸îÏ<óœ¿$*c€˜!™¸âq8B<ŽÇŠŠ .]¿^x)eg!öq¶óôÓÏÒ¥—^’°4À›o.µÒdzìÂ’%op©.”vu‚QÒ/¾ø?Çù<ù䨏�GI¡âÏX¾|EJ'4›.~¢&íâ_ÏFü…X€åðÙŠ¿^pE£vw�çQ—`{ýõ7è#¹8f´0>»8g(]‘ŒŽ^—Tàš!ŸÀç¹ØE]Ðêš¡D7¾ƒØÇ½{÷¦–å _¶ ‰/…T8¤?1B-\!Š _œ´ÿÄ—»2œ%°¢B™LÝŰÄ1ø®CЃûdMu5Õ«çAË݇Ûùp (!¦æAüƒ×¼Ý˜Nð£÷ǹßì\i8…8=TTå8>û¬Q´ÜYİJ‰™"¦°v'Š:Ù+²®K¼x)8çœE,ž@lÿæ›ËX\жªø{9Žƒ_{íuu]Ìßkt\w¤ôpGã§3å–-[iæÌ­¶A+W®¢T8¯k%r¼ìnñi*œ1'ÚÇŽÓ*V@œA2:3ÖÉ$oÁor \í!¤„x$¾l_ B÷@„?‚Ü(Ð0Ý×ë¦ÃÐIØÉ…¡^3÷*ñ)€Å¤ Ï#”6E’‰dµ ØúÓe?"9Dƒ0#¦¿øÅ/éë_ÿ}÷šy´äÃ'é•ä)ôr)®LéŒ<Ñ€ýmcÝõ™têDsd*œ~ ú9ýô* #ºÑIuПGF8“}rQ %ÈY3‚œ: ò¹[ }J-VwµðÛµkwp¤#Q êDÀñeÍšµÜˆ‹äID7°REÃɶmÛ9Ù>ŸW%K§Ä¼A Fó`D–C'…±TVŽâG\“óÎ;—þóŸGx;xDÁ ¶ƒÚHœõväá3Ý]9óÌyê<îa»~8ñ ±…£œŒpN!pr–h€:¾½@­ó÷Ö[˹Ñ*a$.F:iA>7º¼—ÞÇd–žÙÀ9R ¦q^¨Οm|~1Ê )û÷ïçòhø|â¼`Ä5F¡TÀ5ÑÏñŸ ©µÞ³è,Q¡Ðq ݈! ;rZË3†::)–-]Æ!ºT„§*æ ¨Œ0557ñßè`nQ ü-ºü  ;zPî«£Â팱€Æ§â“ROú˜JH ãgœ1›… ˆ5þñ±€÷RÄ݈@wäLŸ~ZBá7b8Øìܹ“6mÚÌùbQ€ß’ ÎdñrGyŒïåˆ' rÆ6p/Ç6¦L9™Ö­{7á¾¢c`ΜӹC#ï»ïŸ<ÒB"¬8l£Ó4‰Äð]ä8>øçÈ£3oc4Î'\cÀi§Ú*nA\GI|{ìqš<ùdγð}G§Ž£Û!ä×®Añ Ã ù�Î7\e±ŽÁƒs<u ÓDw”Áºñ¼“lÄ_Ñ>yòIj¹ ÜYˆë…ý@Þ«Ëébä;âè‘#GÚ9D®‚˜»¸¸HÅì <0àßÿþþй‡øçŸK\{\£Dtôº¤Ÿ\3ŒäÅu»÷ÞðuDC=~£ñ™Áµä’Þ곈Ò'Ý!—–ø²ç!ñefd«¬=îåË5Ç.õç(ÉÅÑR^¦£M,úoi­ŠcY[�u®ÁÀ=»|W‚[z:΄ÓO“ê¬G›Huuµº·a÷ˆPÚ+¬…?ê½ú˜–êÇh£°=Ö:cŽÕq íT‰Øë$#Ú~@‘}LNOüñÆ–E3ìõC”�Á ¬_(9†X¿÷˜œ¥Íœç§-‚©Î÷ü‹.ºžzêi¾oážûÜScỌ{"Ú©œe.{¥sJGGã¸vÃÍ¢¶¶ŽÛÙ/á>®ÛHѾ±+’ÅR�ñ›âZÝ–ŠöS-8éNñi:ð}ÂyB,~‘ýër#_€ ×¯¯X§=yK¼�_€Ä—=‰/A„?‚Óý„h êpßT]¯’1¯tçåû‰TGH ¢²”;pQP=G-ìTÂΫ±ŽüÂØÑ%Vâ‹çhÐ:u ½óÎzàéšk®¦Ÿ\>™füh …  x©Íé_–òE¯:æP}€Î:©/]6ÇIþóŸÿR%2ƒUP?•­Üãvô9 å°m.×ÍN³³Q!s†h¤9h¾ßŸç‹MRÉpDµ“÷Ï7U¼ZÍëÜnwpûÑ£<Òñ‰O\›Qà‚ç‹/¾ˆž~úNp€%JÂP¢ã /Hhé~ÆsèÑG·…'�WŸÿüÍö9EGFT`;ºä¦xЀÁçwë çýꫯTÏp‡*Ë1цŒøíÈh&€HhÄxõÕ׸ñBÉìsKJŠÙé§- r{ÈÏÏgq—¶}òɧù3tÓMŸ¡®#–/~šª«k¸á&hìéˆ�Kè8øÌ AHèþàZ ¹‹Ï¥bO—×¾?C„¡A»# LMuM5•ªX#iÑaŒÎ t̸U<¶\]Ô6¨±É�á»D7´Æ³|ùrê(z”mcCÔáÇíöß-Ž?耂û(âÕ«×¶ZŸ5º9 tÐàý‡cô5øä'¯³Ë!Á9÷hÔkâžŽÉ F?C¤LøP& ¹šÞ–S·Ž«!b¿øâ ÛÈ¿>}ÊT§ÏyôÄO±ðS<S§ž¢:Šf·šs€s…îè4Áõˆ¿&U!îÑ.›ñ Fœ?.-Yò&_ÓwÞYp9œ'ŒLO”?e#þ‚à ý—è„ÁõŠYœ¹ÉÖ­¹-úøÜ>®é“|Nѧ;ñ4èøC‘¬3,×%\pž}ÍÐÙ¹té[ ŽÃËç¼³óˆl"ñeÏAâËÌq–*j/ú7¥YÖ“GýÃ<‹XbÅ&º„U"¢Ž7Ž’WŽRU¯xÔï:~/ã'í¨Ží”±OÝ"CÔ¬âJ~Cðs說¢ÃþÔÔð2Gû)âˆp‡è¶ØÇ*ÆëwœƒµØH/ç1åLqe¾¢¦Vb JêqàF„}×¥ÈàÒ‰û¾xÄ9Ñâ(¼æÅ:DZ¸V9TþräÈÜ.†1(ï‚ãƒøS<¸¿ ®9å”)” :‡às†8mœÈSµ]"V;ï¼sè_ÿz0é>àø1áx!XÖ%iá"ã,]Û]âÓL@ !« ÚFÛ$B:©¬Å‚šãëd’·€Y³f¨©ûF:‰/{_ ‚‰!:ù\1ˆ»¶“oÜ$2àÎb ‘ñðèe) P°%ÄåRÁ©$lÕaßÜr”н…1B-þÁHf×ï¿¿‰–¯x‡fΘF_^¸~÷ò>råµÁõGÎ%+±•ilÅBêð¼yaúé'³€çÎ;ÿ¬òû±5=òãE?ú˜@$¿ˆÜ–µmJ ”M37òÔyŽ„Íçþ|Ÿ¹؆ÇKÁ#ÇhèÀÜù$õ;£ ¦õ§>õIÕY²žGa;vŒÝaPè @§L²ï¿âбÓ̾}ûø½X x”õÒ`ô.¶ƒQ7HœÑDBèÜ©¬Å#:z‚Òbž+¯¼œG´ ±#Ïp¬¿ ó£xP¾"[£eµƒhŒn‚?¶‡ï¶‰Q,X&›ÛLPŠŠ yôh*Œê¨Ð©-àX±ø½y÷Ý÷ØéŸK4:a?tc|†…ã ¾÷’8÷ d´LnãuÅZ)B| {Û ~cYðO}ŸÑpŽ8׫:e\ê_8âךÔý Ÿ†úFá~e–KÜYØ¢£èãkhŒ }—{)w:Hº+ˆÝбÑÓèÜÐ¥ãâþŠÑ¾ˆ'“ב@à¸t §Ñ€{5\~àR ë}l÷xÄ7è0A „6“}­¬ÅÛˆmÄèdðëBœ„‘ÈÇ{0�F›_sÍ•\¢e•°pŒ4hwZ$rNÒ ÆÄhrtfìÞ½›c0”SèrœG¼žL ®Á6pM‘à|›±“sžÐY–ì<e#þºфí¬]»Žc[K^žŸ†N3gNçÏHwþ�|~¯»îZµj5öp,8Ÿ¸¦ø #OÂw(½.©Ð× £ß±~8LaýXr—ÊÊQü]íÊ8>H|Ùsø2s:ò™iÔŽ?ýX^†KRáåhc¼ÛŒáôú‰Ѳ^ñ~ƒXä£þå«ß4tÄaÒÂ-vÁ HÄ’xâFüNáþ°_ÝgXœ; BÛ«'ü)PëD|‚ç}Tl¢…<pžt[ ˆÃ½Èe§ãY¾N;†-vâרf1¥Íìçq¥Îx²œ„B–èG °O~õÙ‡8_OÚõ¥Ë|– À{[² úÊ&ˆ=®½öjŽÑÐ noÄ븯!&ÈfçkGã Düä'?®b©5Üž…¸× ‚1´c£ÔV&"«K.¹ˆV®|‡Ë—"ÆE[tccëAÝ%>MJ{ázã¼Ám¾¸¨ˆ6eÄ(hoNEgÆ: QÞ‚rÔ$9lØ0vœ'p!_ö$¾“L类 _seðèJò·žÜŽG=y¬yž¸ ¯¡Ú—‘³Ä$Œq ‘¶;ERÓ¤:+�Â.´3÷!Ù¼øýH2Ñwך”Ö…Ôt¬– KŠhãúÝôŸ»^§¡c†ÑøÑCiñóoÓðIC铟›ÏAf:<‘}ìè‡Ô·O'GÎÎ{ÈB\€Ñ|÷»ß¢ÿ¼º†®üãZò”§Ý†W5‡jšè/Cß»jBò{Ý4õ[R±7LK~x'µuÎOüÆã´½ÚCn/F¦$_§ÊiØegl?ƒ6üß…”WXBÿû¿?¢yóæ©`},7"Æë8œCŒRýkšQ1\­#ÀŽ=‰à ÐOüã-Ú°d3Í\0êšè½ïÓ9×L§ÙgM¤Æº&ò©$øþ:º~`>;­ ñˆ¯L€OwpAènè‘™B÷òÎR Ñ€ZPPÈÞºQ_ßßcÊ$¹ÛñeÒ‘Î bFçsýGœ£GÑ›jéw+ûP¶©ð¥‹ú¯ ÆŒâ¿_{íuúÁÿümÔ;*°yî¹gé¶Ûnãu4ü¢AßïóÛ1k(lv¬ ‘ bŸ†ú.ÍPW_cóÖ‡å:ÂK/½ÄåÂаóÂóÏð<4¼oÝs„þQu6e›"O Ý{­?Ÿè؉bÎLbO‰;AÚÄ—ÝŸÞ_¶¥ 2Q,©Kà¼ùæÔ.ô:q|Žuk! Ž"”¢Â"òùý¬#Xbvɉ8n’¬›Lñ »õ¨xßO «U±ÛÖƒ~Ž% ì{¸ÚÖÖØÐ@G£ý*~E9§*ÕŽç”ùBÜ_ò û_¤âS~P&:úWT°ë‡hÝ0’8¦;œ×±?>k`b[ˆ‘‚j C¶c- J"�²—S\~š›šX„€öУê8X|©ÖQ\RÂm§}Ôw�Ç®E?níb¤Îân”ZÂ1œuÖ"Þ/-–øS!ûH|ÙýÉåøÈ}¸{à÷û`ÅŒ ³Öz ÇM†õqL†ã1~¢$§zŒOZGqü„4h;Úü£‡ÉÕJô|~‹WB*(ð³Í­à …!ryR—²ÂèOaÕïiâd ¢Sø£]ðˆQœÛwìàùϽ»—°.#S·ŸôDks§¢ —ÏM[«iÍöC4kR ¸Æ(ÖDN?DÑF 4¸‹R(’z76„#|.ñGžÚÞ±ùÜo•õ20ÚܯÎý¾”?â”V7RAáøƒ†LIœ»7-%t>!Œ…0¢!úšÁ‘­£@TÍñ›Ëì4AÌëõy­NâR8Aø£:7 ¼©gñOêmC”ÔQ´p¨Ðñå9£k\ðA„ãƒÄ—݉/ÛF»\âùt{™C7tTE -Xi-tJ$™ÁrÑÕÅ;ÞðÆÌR_jýxôz}¼ÛÙÆ*†G†àÞh å²hÎx˜à$á —øŠ$ø²„X.k{Ø1ˆ³ Þ1|\I{FxÄ1œ‰ÔþÅ8ýØN@FlÏ-ïå<f¢ÖçM—þÔ±a°_~Õ¶Ì“ßÏíÌÎs¢ÁØ[%ÈA„ÎGâËîÄ—‚E„?‚m³:Ðï¦Ãxb‰r|^SøÓ S„ÌR_@˜GÏx­e’‚×|ªCÙ0¢„I¬N‚ÁiSOáÇeÖù½æ qe°@[43Ð4…Dol:H³&¡1ãÆð~¢†s"tâËö½Åyæ±»Ý)w¨@‹Yº£^PjÊåq©sî¶-„áNTÔXgŽÌé@™/ ‚ thÐÄ„†N¡û¡¯ŸÛ„ wLçFc’‰²3eèÐaìäâ”õB…ÇË%µ0 ó¸˜êÐhjj¦&ÕqƒÎ#MœŠÙE—Ÿ*°ŽpYÃM‚ BÏEâËîÄ—m'¡èÅåÊ|7¢Î=:>Œ±å¬Ìm¥þX†7æSC¯“ ‡XTá­õ¶,w!K"n­ªªb·J]Þ óg&‹+q p~Dì[h9å«¿µ&F˜“äý\rÀíâR_d›0JŸ…”ïŠþDWÚJôƒx4¶E?-áÁ…âKøÄçA½Çí¸ž.‡CS[®± ‚Ð~$¾ìÞH|)±ˆðGèÕ¸Ò tÈtüÁh”áúÑÚ�¹T‡ÞâÏ÷©áø&ŸÇ@Ña~©¿ý^sðu’¾$¾nQê$qY#Râ1ÃmÛ¾Î?ï\zû>úàˆ >üÅ<"§ ó§9²&Î"—2‡Ï—×G¯n:L_WÏž=‡6¬_O#FŒàÄÖ)‰&ÛêXÉ3´€BM-<’%Õ!¨Î%ÄT›Á*Ï+ðYv¼n‚qÐ`¿×¶åAr4ÄJâÜ=)t*„Ü¥ÙÈS9aîd@ŒWRZÂóñ7:M @íeèС4|øpÚ±c‡ú«OÅ[n—¡;±¨îÔhi1Ë}¡c#Î=÷\ê(‡âÇRëxF}7D¤¦» BOGâËî‹Ä—mâ–¤´E¢ÛçP’ŠÈvÎÖ‚su±"ž×j“ün[ýã~Ãë7¸-3 Úîæìnƒï¬µN´áé2\X1$D݈¼WMMÂvR'XJfõïߟ]*ËËË©¬´”ËŠù¹t™+ÆáÈÞ}Þti-Õ¾éa×öèù±(}6¢FBÑ-üAÉ0‡ðG ¸Ðþ±ÊÆ¡$˜Ûáöã¶J~q)4Ë}^Aè$¾ì¾H|)±Ho¹ 8p ôs3!uÑÕù±å¾Êû“¡4ä…èü@¢Áèbõ<Br¶ìd¤‚—eÛd9ú8Gdëí7Yn@‡äÇ—×î £E%€ùèØ vƒõz¼ÑhLa·!¿—V쪣C‡ÐÀþýhïÞ=,üÁº‘˜:G—ëä¶¡¥™\¨‰Ö˜~[OÁåÎ@^œã`˜¼^Ù@‘æêÜ<ȬKn)zSjgA„®÷PŒ¾Ô÷4¡{€k&¢ÚîAKÄOr³ûŽßí§¡C†p§â¯Í›7wHø.¼ðBúÙÏ~ªâ;¿Ý! bGÌ‹ò_-mhÃû/½ôRê(860|Ø0{:˜jÃ]WÓ]A8>H|Ù=‘ø²}QVp¹lQ D'Z4nêclŸX·#‘ðÇ\Nÿa.g‰~Xü†#6Óíh‘ƒÃŽSu¹/=¡„,ÊÆbJ'úALZ\\ÌbŸŠŠ žHå}ûÆ~Î î=TˆvF”µXƒ¹†-ñ·Þxñ-Œ´˜Âxõ¨ËÇhqÎAXV‹~¸šUêK;‰{ B×!ñe÷DâKAh|#! H@1b¤¨¨‘ò_|†Œë?KMÇÈŸç'¯ÏkŠR\y|~ Eæd^::ilšÉ¬3©Õ‚#(Œ‘ 0翲ñÊn}iŠZí¿½^óñÞ›f³hI¿†’e>×ÊÞÓ‹c¸R—×EGªƒ´rëAº°?•ŒæÙu´ã6úØêàôã1Ë0¸¬šÕ ÷ „Ô¹4K‚Áé§" µŸyù^Š¨Æƒ‚¾Å|ä~<ídusÏ·k`ǯGA8þàŠÆN]¾RÈm0e«ƒAèt½5 Éïó³�»bÐ Ú·?mÚ´‰Î8ã ê·ÝvÝqÇtìØ1þ;^¨ÞV®»î:7nu[ø3|¸=¯±%LÕ!©ë.‚Ðø²{!ñeûÉÖ(v.ïÑO(Äí‚¡ åÆ­ÛÎâl¬¹Î˜Ï¼¸(Füc;‘£ÔUÀvƒôð >/§?XÎe¹î˜®’[“ ,Ï€iÈàÁ4lØ0\QAýûõ£’’˰P=αÈeKD;óX¯{Øyˆx€gl‰²Ö%Ïl1T‡$-êÁoSss 557ñ9À<|ÌA¢æ9Â2|¬s£¯‚×þ #3¥Û“ ‚u$¾ì^H|)‰q“ IÑ#Op)/ïKãû÷¡–‡¤Âò"rG‚”ç÷°; 27ŒAh ±#Mê›9h³Ë¬Ä'¶.`{àÀ~:}ÖLjnjb‡ÊóÙÉi¦Ä$¹jš6a$:~¤åô£~T'Qÿ•L† reXôË Ë"ÃC¯m2Ë,œ<e Ûòj[['úïFuLè+JµËm—ÏcˆÅ>*Vós[ý`ä+-¤à²7èo„¯IYY™ˆ|ArŒÈºr­ºGB¥<ªZSYYÉ+V¬ ŽÒWu¬|÷»ßµÿv–~h+¥¥¥ôÃþ: „ækÖ¬áç••£ìùè`9ÇA„Þ‚Ä,ݹVíâŽNùxôûÕ”ÇÂÅ=n·êR_É'Ê๎µ°&Ì%XѶi¶o†c&ÝN¨Ë€éýL%vA»–E9/8ZÂåei‡©iРA\ö îHö±:Ž=ßy>Ôk(£Åî:8–‰÷>îXl_ç±RbÑvûËQ€Ý~šØ5q+^ó8Êy‘£,XçÊ­ñŸµz¿A„®Eb–îƒ\+AHŒ„^C2qHüüDË!ICgÅĉh¬ –•«¨ ¼\%Š,m ™1G¯„ aÄ¥Ý2TžÛâ6M·âÅ2°ƒÅ¼»vs‡ËÒ÷vÒê;í´µ¯Å÷¶µ˜p˜Ü; Ä(CÝ×ì&Ÿ—^ÿàˆz¤ ãÇÑöíÛx½Øw'Úñ§1‰“tÕŽC•›bŸˆËM`›£¼â"2¢Ñû?¤qãÆ²•¯³4› ‚›`†$d¹®‘Xäv?úPCS‹ý÷”S&ó㫯¾JÙ�®?×\s utdüóŸÿ¤‘#GRGyûí·©¡¡Ü*ö›<ùdž‡¸Ù‹ðG¡7!ñe÷@âËŽ¶ÆöNÚiÇcMZìâv»¢mh)E?qî7ŽRW1ï#ŠÎpÙ,ÄfÖÄqZ+‘)üÉÏÏçÁ–ÔAÊwažvÒb¸ù@è3zÌ£¦Ñ£G³Ûœ úhËy-÷ uüÇñë ëÔeÎÈÚ÷ˆ½ŸÑ}µ?-}FFb§ít¡ÚE!úÁ#œ#p^µop6Š-õOr[ûŠcÐÇ!ßA„®GâËîÄ—‚ùfBœ% ÆOµµu|o-í<Œü……äÕËSžÏC°km ¦¡˜³DA7á²H‘0öéÛ—ÿ^üÞ>¢0êN«d”ÚF¼ÌÆíp#2,‹A¥ù¼C™JgX0ä÷к} ´u×!7j(Û×b}ØwmE¬Ë–᱉2©&fðëáìq vQò¨#Ž„‚äËCÐUH¥OÜOCÆTÒ”)“íd9žLÄ\©æ ‚ Ù ¸hmll$!÷À½×Hè~ì–ScÓûïÓ¦žÊ[·n¥íÛ·Û@íñÒ_ÿúWŽõ}ôQj+]}×]wÑÅ_LÙàå—_æÇ±cÇr'àΣ@Åâ22Z¡7!ñen#ñeÇi¯ÓbüûMWëŸAqNJ^ê‹bÛãÝo"ñ¯»Z·IZ;cŠaT‡\mж‡R] C†p[(Ö…¸S’„C>KUTTеÜàÁƒy0`_KôÃ岬6ȘýtìŒPÉˆŠ˜´hÇéH1ÌÉ^™[ê+WŒÝ~¬_ø=jRSsS3EÂò°Ó’šx?-Q“ž´èG‹}<Öë‚ ÂñAâËÜFâKAH!Ct2ÁIuu Õ¿ü8õ™¢’¸ý †U’¦¾NìTæQ#ºlUÂu¡†t˜(œo d´8˜õŸÃ´cÇv:káBž·dËQR™"”ió~§zÑRâT@øÃŽ?Ž:Ý©ÞF™ã¢@M„ÞÞz…?••£y$‹Ïgþ¬èãщ:ÜÌœ9( Ž?-Au^CäË3ƒ¬p H%ÆQá§¡ûÓ¬Y39iÖçMbA„î’3üv£“^ÈÐX®E»B÷£*TÎnŒ-.ဘ #UUUôÀз¿ýmê(øŒ<üðÃôÿ÷ôãÿ8ãïð 'œ@ÿûßéôÓO§l€ß|ŸÏœ5Þ_ßÐD{Z’ ‚Ðûø27‘ø2;tTø¿.ÛÁÆ!ú‰þ±Âr gô<{N«÷Ù ¹ˆK‰¡µÎ)ráÉš —ãRwƒ+*ÌR^}úЈ#¸}Q·'j\àŠÞ¯¼œÊûõcgvýx½¶è'ÕùŠyÝ劊xÂÛù'b¹‘ÃõÇéçø…Øí‚Ÿ†úFÕYÜd»ýø­Ò]xôÀ‘È!üqŠ~|–ðÇm‰˜A„ã‡Ä—¹‰Ä—‚)õ%”Þ!Æù7Ò9sN§áûÑuá·Uâ™ORI¨×L ƒÁHrŽB•(† µz Jb$¢Â‚|Úºc­Þ§Œ|¯Uš+3ÌE#4ª_úaEŸ|ÊDðãÄ…„×ç§Þ«â¿O›6G•‡ÃNvíý°’ê€×oŠ¡Ò­Ž?óüä¹U'VD%Á…eô ×rYZHgœ1‡“ýd¢ŸLÝ~A„ã¬Ü‘¨ ¹®®‰Ð} .ÚHuuõü7ÜÏ^t?¿÷Þ{)[ ¦úÎw¾C|ð}á _ Aƒ%]î´ÓN£;36lØ5Ñ@™¯-[Lw£³-²çW×5Ї-$‚ ôN$¾Ì-$¾Ì©Ëp¥žœ%¶Z—ÛŠ$_²u’#jU¾ËQº òĤî8wg.ã…ÏÊ Š .ß5iâD:å”Sxš2e O§àQý=iÒ$7v,—ü*ïÛWµ™šN?Îr[zÿcŽ×z-b¹ï›ÇÞ7§ø'ú¾HìqÅ•ùB­1ׇT[°Yâ«¡¡QMõü¯Á­¨@µ#£-9ÏrüA¹Zw¼èÇ*ñ•¨˜ ‚p|ø2·øR2C„^…Óöµ=ïx?jHžyæ| ^¦ÿ-<FK©–v—“;¼‚MÍiu?(ª‰„ÉU[/ &F„ Ù<餓yÞî£õÔXÓDT¨Ä<7…‘Œ$:Ïhâ0³\˜;ÁNéYƒÊ L1R†§Æã†e¯zCsˆ>Ø{”Â-”—WH555fY¯¦&µ³?ùEä ›nG©`ÇŸæ�¹ò¤þù}ì9xÍ›w[ù:’Ú‹‚AŽHÔð;,¶¹ÇŒ’‘‘2=ƒ­MChdÍ{\&œ{î9tÿ²HçÕW_¥ P¶6lÝqÇtûí·ÓªU«èÃ?¤p‡:bÐQ3|øpê &'žx"an+;ï A¡÷"ñen ñev ¨6ÂŽ¢[¿ |A9ªP(¤Ú ͶEÌs롃1"²Ú £væ±í©†=~Ðé¤Ã¢Õî1 æùt‰+ŸÏt³±Ä.Î69-~Hñd‹jÄ>"¾Ã¶!–Á:üºdÊa©y�Ë¥o„u–ÿrE݈âD?,üaÁOÄÒù8~(Ëz_(b÷ö¦¦F³ÌJ|©×Ð.Šß% ^Ä#ŽÍm ÈþĈ~,ç"¼Ç%ÂA„ãÄ—¹Ä—‚9"ü‹xQP"‘Sü{Ù³ÎZ@K—¾EÔn¤@Cí,DM°Y6+Õ¶°Žp„\E%*¡­cg$vHá˜çtØ€y'¦ÅßõÒ—î_Cv4ç³ð&œÂþ‡×¯^ïWì¡QƒÊ¬}O¶$ÑÀÒ•ieRHÌ«6jV‰u¸‰>sÖ`úþGO!·ßT>—••òcÐj˜pŽè1ŠŠù˜S&ä†é$ÔÜ p~ÙFg5ahöìYÜÑäýˆ» B÷ ;ëëëIèz b–šØ=‡]Aªƒ`-‹`p]GŽAS§žJ«W¯áÒ\Ùþhðý>}:O]Á¶mÛ¸tøèe±ç­®¥[†PXÌlAz=__$¾Ì>ÙèhÔmeö $UPM–˜]¢31å°Œ¨øÅZ ¶ÌWœðG·×A¨Ãe­Ô#FçkLj[ðºÏ�a lò¼,V‡G”ÅŠ¨eõ~`Y á=ªíïqAðCVû'e†YZËÃâ9E?sÒŽ?ÚåÇv:ÒÏã\”ð^¸ž£´Ü~𛛨Ç G¢²²2þ^ªŽc}ü.sgX�äµÄLº\Ö§Ëœ¹ÝÛ ‚ ä__$¾„¶!¡×ÑןtâŸþýûÓÙgŸE+V¬¤Ë\{h¸{+móO!·JØ Œ!·?ñzÉLž}ùä1mq ‚<žxâúùÏ©:iÎT)ÓhÁ©ciÕ„ úåÓïÒžÞJÁ€—¼ …$û­ÖˆPeE>õíSlÔIäøc=ö/É'· ´‘4iÖ£vBµÍ4¥²€~sõ4:ó”±¼^4üå/¥~ýú©›pߌ]q#‚|j>ä@H’“¹þ<šG5�—ÓÇûo§…“úÓÀýiÆŒé,´j«èG„@‚ ¹ 74r"yY·Bç‚óû4…žCÐðÒÍ#¨ôØQ:ØlùÄǯcáÏ+¯¼BK—.¥9sæPw&üNÀUháBSÈ„Ñêuuuô^ãdA ñe×#ñeçQ—A'c|Ë—‘àuíXq”½Òn3ºÝ.*rqÈ{¸N¯×ˆÙ@Ìû´ãåb“‡:5OЇ�ˆÅ-dŠ{0!Žã’Xj9vÒm…1=¦;:»ƒëyq¯grü8lÃçó³Ð¢ÃZ7‹~t™¯ø’hvi3Š-D:³ÄZ˜ ÚáãÏË£Ò’þ@ôƒ¿µK‘Þ'—.õ¥®:”±>¸a,ú‘6MA„œAâË®GâKAhòÉ„>©Ä?H`çÏŸGï¾»A%fïј½/SÍ‘+ÈWRF¡ÆrùZ‹0ú£¨o!ù￟Üç,°UÃX’a$p·Y»v=½þúkôÙ›n¦²ÒúÖå³èªY£écXJëv4‘¯ØOÁpkŸ$°‘P&†Û—ݼî䥾ʋóH­Šj³$È+ñV˜ÿFêé;—Ž¥^qš:.³Séÿø'íÛw€®`!TŸ>}bÞ[ZZJÇŽUÓÀõoÑÑã(è2]}âXCí¯G+Œñ9eõÃTqÒ�;v4vÚT»!"¾x*R-'‚ ì·ª7q06vìAÈ$p¸w444p©H¡ózØ=› •4¡nôã‘Ô§žz Mž|2­_ÿ.Ýzë­´råʘ‡îÄŠ+èž{îáç¿îû8ª««éX¨”‡ú ‚ h$¾ì:$¾ì\jkk3ZN·r¥æq‹.3Å‘Vžxáý<ð‡+–‹ \{° -úѦ�ËÀu¥¼šTû'Ä2Á´j«ÓÛN0?¡¸‡¿Õ–è¶\ˆ€.Õ ³ûzÄ)ú!-–²&§Ó&~_ˆš¹ÄWwCøƒõAäÁ&´‰âø±=ÝîkRÔ!ÝY¶ ë‚øÇ•è¸A„ãŠÄ—]‡Ä—‚Ð~Dø#ôJÚâú“ly§øÏѱ‚?:UŠ^}œvOKù•ã¨éX5†qÀ›–Y$‹…J©é©Çi\i‘J‚£71½N¸Û ´„pйû®¿ÐСƒéšk®¦1ÃÑ›ß=‡ÎþÙËôöõä+Ék-þÁz"!š{Â@²v’)z\Ö—ýJéÄ´|gÜynr AôAé„úFúõÇO¢/_t*Ç–­ÒCÿ~ˆG]3š†FãÆm•¨›5­ ©B›ýþJ>u#Õ¬Sëð˜î?„„9Dy%}ÈÕXK¥O>H}Õy™6í4?~\Ì9N&ØénBžµk×Ñk¯-IúºßïãÏ„T'œ0žÏo.ã‹/¾Lï¿¿‘÷ï–[>óÚ“O>M{÷îãç(wòÉ'‘ B[(²FB¢ÁvéBö@#7Ýe”L×ÑÖX3T‡‹iW`0•>Jƒ+ÌðÖ/~nþÜ-´fͺãŽ;èË_þ2u7ÐrË-·pg̉&йçžËóñ÷á#5´¼~ Ùã‘G£Ý»÷¨|¤]ý'H¡;#ñeç!ñe×àÉb¹'Ý2èl!ÔB§+-è±ÊyÖ;l‡ð8aP«Ér¶Ã5a´ïYÇå²DH,ü‰ßádí`mhãöDËYGO¦›ŽÚÕ–B™¯PÈrü1Ï…-üqOÌsv а`I‹~0¡#à7‡Ý”ÔÄNFu[r:™»-Ñß*÷åA ´6 xAŽ_v_ BÇ‘o Ä‘¬£&™øGÏÇ4bÄpêÓ§Œ–,yƒüï¾M[ªPÉ™s)4óâH£Dˆ‚kÖÑøæZ:yúTùèu½!C†PEE}ðÁÚ¼ùª««§ÿø'ôµ¯]U^ûÖÙtÞ/^¦×Þ¯‹ÿ`-!õÔ'æyîIc8lpýí'ô§å[w“« ´òÇý44Ò]7N¡ÏžÌ ò¦MгÏ>Ç¢ŸÊÊQ4a öq8Ï>Œp9ùäITSóm}á%òÏ?›·áñ»8_÷øˆšVo QﯠbÕÉ0oÞ4hР˜zÞ©®W&ó2y-W‚jªf§¤-[¶²›ÒœG%%%”«ÔÔÔØÏ1ú^¡= ±Ã=‰3Qј*´8æa”ŒÝ*ô|V4œ@#ò^§~å}øºC”}Ù¥¡G}Œ¾ùÍoÒ™gžIS¦L¡îÄ÷¿ÿ}Zµj•Š]ô¥/‘Á‘£Çèh¨˜ö ‚ $CâËì"ñe×R×ÖÖ.tû+pª±&7‹R\­„.D±n>Zò£[D:Y¢¸ÖÀ"¼†ï¦šðÙA›œ.V ¦"],A©¯l EN8Vã Ìeq‰¯PHíŸÚg8ø˜¢«¬—Uâ+Qù¯°ã8ëÕq¢= :€qŒè Æ1ãu{pìv)™mœ˨Ð* †v^.–ÈùHAÈ9$¾Ì._ BöáÐkI5»-â=BÜðÏ9çlzë­·©èè!Úü·¿ HùÃ!*PA¾ºy•—•Ò¸©§Ðøñãí÷;×°.$ƒÕ 2˜Ö­[Ïóõ‹_Ò×þß×)¯°ˆ^úæÙtöÿ½@¯mj°Å?x»Ó¤ÁtÂp³#ÄíN%„1Óà…“ÓOŸÝAÃLè]ÑÏß>{*]¿ð$Þ¸=ÿü‹TQ1ˆ]‰ Pr6Ä‹tô91bq†‹J׿KG¿šZš©!¢ÛK¯‡&÷-¥âÁj§³ÀÅ®it¿{†ûÏTõ98p`Ì<”z;vì‹~›hÿþôØcOе×^³jçE‹Î¢¥K—ñµCy6A„Ž€D“n0Åï¢9°ÒGÃ1g¡wQ*¡MM#)ï`>„çÝxã§iÅŠ•´{Ϻæšk¸l:º/¾ø"ýä'?áçת}‡ã@ÍÑ£ÇhIí\A„Lø²cH|y|ÈÖ�0Ýf‰ÏÀúØ­›ñ7Îr_F|‰¯¿ h=,ëý¡T—½ÂdXõ²ðÙA;¾‡pÃÁsˆŠ‹Šì×:Å1ÓrÒÎBKñŽùd.{bE?ÚµÈtúi¦úúªµD?püÁ±jq“-‚R¿3þhñ•]vL-‡e½–ðî8ì$ÂA„nƒÄ—CâKAÈ>"ü„$´Uüt’Š›ý¼ysY¬“H¥:`@š8ñČօ ‰þܹgPEÅVZ¾|%ýüg¿ ¯ÿ¿¯ª›b!=óµ…´ð'/Ñòm-ä+ö›Éh …>2e”Z‰Bìè“<iÔn@gLFÃøiwm„<^XﺉêèÎOO±E?6l W^y•E? žÉ.?™¸òèc9rÕÕÕ‘g×îVËôëW΂}“oè'¹˜<>œ]“qÆsè¹ç^ mÛ¶sçÖªU«iæÌ”‹Œ5’'A„lâ³D!R@Fd$ÓÚ:^0Á=ÓgYÄ#az7›š‡Ó‰-ÑX 6Éÿó?ß§ÏßòEÚ¸q#]}õÕôØcå|ÃÊ{ï½ÇB%|ß§LžLŸþôõökõ{ÐhÒáP ‚ B[ø23$¾Ì ²uîÑaŠn‡d—«ôYÂÂw@?7¢¥¾llácFœPH‹ØUH}¯àäTŸ£úé²^·èÁ~ú3æ×N<Yþ˜5!øq±ø➈%öÑßý;þĉ|ØÁȈ)ÑÅÇ ±³Cmm-=vŒÛêjª«y]yêt&=8·¶ðÉÜ»”HZô‡ƒ|õ$qüAèžH|™_ Bç#¡W“Jx“êõø²\‰Þƒ›Ø©§žb•À2bÔ«Hê\ŽÑšd¥Ät’‰r ~¿Þxcýò¿¦¯~í¿¨°¤Œ^üÆ"Zð“—iõÎ�ùŠÕ Ó¡+fæu¸]éÏAH%³…EtñÉé¯ì'OŸ «§_]7‰n:w ËÚµkÔvßâ\‹-dg#ìödëMô÷É'ŸDcÆŒv¨ [x=é$¿½n>ݽÄW<ø¬œwÞ9ô—¿üËÁm)W…?‚  î¡:)D*î#z©nPíé µÛjƽWO¸W$» ½£uÌ3zt%Ýö•/ÑÏ~þKzæ™gè3Ÿù ÝsÏ=9íÚµKÅ@ç©Î”£4`À�úÞ'g?çÒ9#‚Ð}‘øRâË\'[×!Þ]ýÉŽwú1'~…íH'NøcÄ b@–;NX?ªï“>]ZŒKpYB LÙþèöT-úqÙ¢ŸˆåJd  ú ‡#æk†ãx"¦ãOıÿø}@f}]»t=r„ª«±H·õBpŸ¯…?h¶Î9ï8Zâ§Ñj/Ö.Hz¿A„î‹Ä—_ ÂñD„?‚†t%Á@"ÁŽ&Þ%Ð(Ñ2:ù52#ùï%K–Ò¯~ù+ú¯¯þ•–õ¡W¾¹ˆæÿßK´~K#sZ_š<v˜JZS—ù²×o=~fÁxúã’½¨n¢Ÿ\}"}å’Óx[Ë—¯ •+WÑÀXô£Kq%ºQg’ ÂÂ6ÉD?ütwü㚣ìWuu 7J$*÷µ}ûÚ´i38p€í†=7+ÌQŠmÊ”“¹Ó,{öìe—ªC‡ñ:òòü4lØ0š1cõïß?å{ñyë­åüü³Ÿ½!é5ƨ(lc×®Ýü×"²aƪýœl åAR£“FA2ç¼óΥꃂâûî»ãÊ¿ýío9çüóᇲègÏž=Oüô§?¦þýú‘šGyŒvïÞÃ1Õå—”ã¬+Þ¡;wr騂‚|޳ Â;vLJwÍL8|ø0mØðÇ(qQ‰GqqÇŒ“&Md±™Xžß}÷߸¡sðà ºêª+R®çÎ]\êÌœ9N?}V«eÿbÿ¢ä†ÏçåíãøN:iRÒÏvü¹Ú±c'­^½†c`tèsÎ"vg¡w!ñ¥ÐSI4ðÿ¦Öíp‰„?ÑíÿYÆ•#§àÆÅëokk]ºš™¼˜Žnr{ܶ�Ç™å·-ž‚¸ý„mq)øi]ÚKwÚ"Ö€‹9~Ž=ÊâŸ&c¡t?ˆ[ ¸³—Kt¯ã¼¸­ŽO¸¡´W¡åöãÍqÑb¤wß}OÅO»©¡¡ç¡ÍqøðaìÞ^V–Ú…?ß#}ðÁŽoPEExâ šŽŽ´'þîwwðò³fÍà•ë׿Kï½÷>_Ã`0D7Üp=¯Ë ÊÕ­]»ŽãÍjuÍu¬‹vÒ“OžÄûž |n§¢=ƒpÌhgEûì 'Œ·+‚г‘øR„®F„?B¯'“¤2g h™TŽAé^Ož$ éDy¨yóæ°øç7¿þ }ù+_¦>}úÐK__H3¾ÿ4ݼ`œõþ†”P:  «æÔñ#èœñÅ4aø�ú—MçDyéÒe*!Ú@ƒAôs'²ÚÑ(Ù1%"“cNæ”éz;²L.STTh?GâéLF‘<?ûìóÜ9â &,‡1!™?.rÊ”„ëÇgjñâ×8!u‚N"$å~¸>ò‘‹©£ ±~íµ%­í‡áiݺwU§ÎLš1c: ‚ ‚}>~ݵT__O>øýóŸÿäFèÿûßÜpŸ ¼ýöÛtñų¨1çÏö3:}G€KUU=üð£*N Øó êÆ¤/]t0oo¼ñ&­^½¶UL_SSËbGthÀ¹RÇáØÄ@èüØ¿ÿ�wú¤ê$‚Ó¥&^„ƒ8÷Å_¦Í›?ˆ™ãÝ»wOòàáVšŠ5kÖÒ믿A‚ ‚ÐSÑâgÉ)¾?;ÚáR9þ˜¯;VèŠÎÔÿ°, }Ðv GÕ~nGÙª‹~¬rZü¸Ý–‹z-b• ÔP Ðb;0)D?, YÀŒB=Õ74°ËzQa!ÇÒˆ]ï@Øãv»nïÔnÚé§P»ýÄ-Ÿk,[ö¿6ÇŽUó´aÃûtþùç²K}"öíÛOO?ý ·1:A\ºuë‡<A@tá…ç'M³ÙžøôÓÏr¬š Û±Ïë81cÝ÷¹õ”S&«¶Öy ¯„B°cy'A¸„ ±î%—\Ä>AA²…2ÿ€L@Îå2Ĥ*æÉ ÿÌŸ†j¨~“~ûïéÖ/ÝJô£W¾6Ïvwq·!iô°3Aw||*6ØrzƒGd Pë…è#Xô>$:†Dûß–ùé^kϲ=aôC3 Ægã‰'žâ$ôéSÆ£¸µ;Fä ÓïG‡:>0Â:§è£Á'O6‚Ð�²oß>NhŸ{îy*//§ö‚ýX²äM~ŽruØOì®:§Ä#¡^¶ìmn|™3g6 ‚ Bw £#“»šÏÝ|Ç øÃôì³ÏÒi§ÆâŸSN9…Ž'wÝuÝzë­\v1ÇÏ~úI;„ä`ôSO=ßÉÙ³gQeå(Žá ‘˶mÛ¹3ãñÇŸd×¶ÆÊ°jÕ~ŽQˈéà0‰Ž,tr`$6:` Êéß¿MŸ>Í~/œ€ üpªLV±àÖ­ÿŸ½ÿŒ–%;Ï3Ái޽¦î½enU¡<@€ �‚ …D½‘Èa·ÔÅ–z(ά^ú£ŸšQÏRKÓZ3ÝjR\­^”h[MÑ“A€ �’ð�a ( PæVÕõ÷ŸïŽø"wîŒHwòœ“yÎóTåÍ“;vì0ùíØo¼_^NA±@HÛ'—q×]¹Ã‚Рœ¶Oë¸yó–pù;çý¼*4h÷§ú>wæÌiÿ¤¸ÅЊ©��Ž¡¥Q¼ªÝ~ªRû×ÒÊÂ+”‚ŸVèÕ)ÒŠ9sÜ9ˆxÙç"KJÑQâS‡5¼³N¹n/úÙób=<·Å –æK‚ /òI»}½ò”`;^°â~®_÷¢yŹëMšÝ']÷®èþHÌS'úñ)ÍZ-/òÓÄB*¯Ïš¾_'ƃB÷„å )Ξ=ãÝ}î¾ûn¿žzê©lÞ‡ü½¼w½ë÷|Ü»îHì-1ºö±öƒ„á>ø€?)nÔýF=°(aºîoþÀ|ßÀ¾˜åýD‰m$ÆÑ½QÅŠ1uèXºÇú«¿úë¾Í­VÓ Ðåò£c{ùòeë*ÎüÈG>æË¿éMoì[‡–Sœm¢­çÅ/~‘w8’ØIí•‹âqÝ«}ÛÛÞê����f€‚qm&)2­°¨jº¥þRÇ£'þù·î'þÿĽàù¸§ž|Ò9}j¢ùªO6ùÞ¯k/¯¸w¿û=ÙMóGýÍt‰~¬Ö9°g?e']æ8ˆ~ÔUŠq:;¦á“ zšùÒ¥güß<ò°ª9´Ž|è¡ý€ÙÏýÜ/ú²¨…?êhšèGt¥;ÅEꔫS­”Zß4èÆÈŸýÙûýßXQG^7F µñÕ¯þ¿ ýÅ_ü•{þóŸ_)R��8L&õÌ£H7Ÿù?ÿŠÿ½}Í«_í§}ÿ÷}o+žvÿÓ¿ùÿ¹Ï~ö³î¾áÜ¿øÿÂýÄOüÄ¡§þúò—¿ì~üÇÜýÖoý–ÿ,‡Ÿÿáø•öùjÿþ•_uÏä÷µ_ûZ7ÌsŒyãÆMŸòJñ–f Å^ÑHØ/·ž§Ÿ¾äcCÅ`ã¢Á2 ÐÅt?øƒßßç¥ú58ò ¿ðK~G#¡ðG±©R$hÐC/uÂ=ù­ÔBƒ%!Z¿‰~ªž´~éK_â+ßùÎwùA éiê*nßÞðñæ÷|Ïwñ´5��œ¼�E,Þ“H&i$>…Q™ê*uÁ»–èÏõ&úêOý•‹[Úí%·’ÝS\]Éï!6”nK¿ÓQJ°Y:5Št*Bø#´]»Ù}5¹üH ¼µ¹åã™Üíg/›ß)¶½—î«ÛÉÓ{mïl{×mÅV©\»vÕ;ÜXª+¹s‡¢/âÉÖ[+úÉö¹î·y·ŸµµÜ(›ÞœSÑh\h[è‡þvßýBÅPŠí~é—þS¶¿º^x:îä¿ï÷«ö‹œÄ%ú yÍk^í]J$ôñ‹±YßO”Gñc,Ö©j³¶Y1¢ ÃÅ#<ì–”¸\í•øG±os+N•à^|Ó7}C_,¬‡,UÇ»Þõû~›¿øÅ/úóQB(���€Y0¿‘%À0‰ dÒþažëqÊUM¯úlâ=í çŸÍMwwö÷SOM&Ò;Œ:OËY'î÷~ï÷Ü£~qÀég”èg’íÛÏ>·ì¢#Ñ:ƒf-«Œ¥iøGÿ躷¿ýÛÜ·~ëÛ*óÅê g•—.]˜¯¡ý¥t U¶ºêä~ó7“›–ø£¾ó,¾ýÛ¿­¯“nèÆ‡l}MÔ¦'z���`rvÒ¶K»ò³ž*ý©Ÿúi÷¯ÿõÿÔWîoþÍ·¹÷Sÿ«¿a¯úOÿivóý5îÝï~·; 6³˜õ_þË™Ý,y)úùÎïø[î'ò)E?BBŸüÉçþÇõÿ-§é rm'TcOcW¡˜NOl ‹ÇEƒ?ú£ß}ß÷}ûŽïxGeŠ8Å£/{ÙKýßøØà˜P¼ii»4 "ñQzº\è©î¾ð}óþâ/þÒ¿_¼xOmz=UmmžÐ¯COY#ú�€“€‰P$úY^Yö÷ÿ$Ôi6[…x=ýtÓªÔ_…ûOðw(J¼ð§é––—Üjvqm}Ý­­®ùßXMw®W笶Å~$òiµZÙvµr·¡V»¼·$ÏÖv.àÑkskÓ -t¿M÷©$X‘È#ÿ»ãË{ÁÏæ†wù‘Ã˳Ï>ãe._¹’Å5·¤3ò¢‰èuK÷L#© ¡èÇÞÃ_k…èÇ–‘ (™ã4_CéžsÕý .xIÝ›ŒÓlIÈ-¡”øú¯ÿºÑÐv¿õ­oö"êžç™3gúæÏú~¢èox÷ÔÎW›M´£ûá¡èÇÐ9­{°æL¤6†„q§úYU¼éMop?ò#?ä~ìÇ~Ñ���Ì„?�“ºÕ”¨j~<ÍþVÚ¯7½é[²ŽØE÷?ÿÿÿ?xsñâ½î‰'žpã Ñ:pºy¯Æ?þ„ýh@HQ˯7nÛ¨m™ÖÝgÒeIô#·ø¥Nª—~ægþc™A4UO¹ëæ7êò` i€-DçÇ{Ìÿ-qPU‡ÖP\OOŠÎÏ}îsþo=q3ÌÅG–À<ò°ÿ[ƒ4ºá���“q»»êÒ¤é¶ á°ßû½ßíþÁ?øûeyäa÷Óÿî'ÝþÀ÷ûxáŸøDvóý­Ù ñ7¸w½ë]òd¶QþÕ¿úWÙºqÿìŸý3/ ¹çî»Ý¿øÿs÷ßÿ÷ÿϛߊA¾ï{¿ÇýÃíµscË=»{ÚÍ3Gšè¥ RØ| l<÷Üsn´¼œ},µp¡]ƒl!¡ƒÏ§?ýéeoݺå)…޽Ñ µÕ¾æk^5t‡ëùÒ—¾\YFƒvûIe ��0ï„÷ÔE.ÅZräQªws©‘t'?er¯¾é®Rüã ËÒÒ²¿x:»¿èp¼À%_‡bKƒeN=clÀÀ„VO³• }ÚEj1Å rûQ&²=ïØ³ãïƒ)ÖÔK1‰¬ÛÙÙÍî7íywA €tïi§pR™[7o¹ë×ò´^Š=$ú¹rõJnøú×O­{ŠD(Ú¾% x§÷±%­,çûe}}Ý¿t¯·ïçÚ|å+_ñû£ Å„Uâ90 í‡ÐÅ'FûçG~ä‡ýÈ<òp9ý î'ÞÿýCÓªY›•ö5lKŒ²¼ÿþûüßæÒn„ÂøO|âS•ý)í¯a÷`���¦…T_�L“¦!΋=«åªÚN³¿åüóæ7¿Á½ç=ìþí¿ý)÷ã?þ}‡F3Í«CXu’•×ø7ó7³NíÕ2½—¦‡¢Ÿi?Ó°Ÿ’EýˆGý‚ ãî»ïò®>£žѱÊsŽ_u7nÜðkÏ>ûœûò—÷óõSˆVt³C˜+Pº¡§ï•w{´s,Ò Ñ(TFûC¢$Y)T��˜gŽ*&éd£_ܺ×ÊâçÝwÑÇ?ñO~¼¶¼þ»ÿîe7Û¿5‹!ÒýÕ‡?ìþäOþ$ûümî/xAv#þGÜýй—¼ä%nZtó]NB?ÿó?ï~í×~­tÑ È÷}ÿ÷ºÿêGþoµ"fÅ£ÿäŸüß{Û§áÆM÷™Í—;DƒxŠë‡qï½÷–Kü³ŸËË—¯”±§âP¥-0âøSmSÜ)qWäÚÀüõ_¦ìçÄi¾×:¯+Ö¡ý`\½zµ² N?��°¨ÔÇ™½Ô[VÎÄ2I!˜qÅ}D‰^$v1‘„Ò]•¢ŸÊûšýÓâ"ºo¤ßg1û,1Ž5l=J¦&7¹¦´eèö™àÇþv=碆婽¬|7ÍS{ílo»ÍM yrÁÜÑ·³m•ègo7wûÑö›ðgwwÇ;I(äÅ?Ù½,Å5Š5ne±N7+¯¸A¢S&j’xGN?ý±L_НbŸÈ•æT±l™æ«Ý.…PóЄָ‡ïñûíçþ—|j­‡~ÈÝwß½#ãM—Ë¥qš˜ë î'Žj‡µyTœ)tLÅÆÆf_º®ç?ÿÿð¦ÒŠÉyõñÇ÷lê¡]í‹PÔ���0kˆ4�j˜Fü.2n=¶\•Ð'žN³¶Þwß}î-oy£{Ï{þÈ‹þñ?þ1/ú‘óD@ay¡:™z2Bƒ0×®Ýtwß}§{ë[ßâ;"V6Õsú¨íÞ/‹&ú‡W¿úUî[¾å›kŸHÑ`ŠÒ!|æ3ŸuO=õ”bi\Ô95tób–òmnßî=å]eÉ–Qz„?��0ì'N< >xë¥î¡å÷º«Ù ëswÜ1Ö2ºIýoþÍ¿vÿø'ÜÏÿÂ/º|àƒÙÍóGÝ?ÿçÿÜ¿|ðÁ,Î|‹ûÆoüÆìæõ‹ÝK_úRoû£Á ?>ó™Ï¸O~ò“îþè¼(Lù¤˜â»¿ë;Ýüà÷Ý>¡__~â)÷å»ÜÓ»ÜQ3Êó(°Aˆa¬­õÊhPeR$*×y¢ 4¨6)ôHø£eåÆóÈ#—ó>ýé¿öïJùŸ_á9ô¿ñ[n\¦i#��À¼;d§Á¿>ù–Ä'"ÍÓ½¤<–Õß©ÿœ¿§.ín?‰ëÓúÄ VMÏ¢Wü:ÛKK¹ð§³W:5’F)„‘#wéi–é®?5/Õ“b&µSõûT]{»…€g«HïuÛ;õäN?;…ÓÏ^ŸÓÏÎζ@…î@ý(F2çlsI—xGiÌVÇߎþS:…¢ŸõlyÝ{ÓçEýˆW¾ò~|àòûW÷õrNTÿ@i\«„9·s/°Š£¸Ÿhm¾té÷þÃϽœÎþèœøžïù.÷;¿óN/Z—[¥öŸ^:æ÷Üs·{Á žï^ñНêÞ���0 �†P'Ä™¶žqë&�ªYy=Áûæ7¿Ñ;ÿüÔOý´ûoÿÛèE?zÂ@" +/‹V•×¾¿üËÿ9ëmxÑÏ[Þòæ‘¢Ÿý ~fݱ]dÁÏw}×w ØÇê •ßú­ßñ«³Y'úÑÍŒ_ýÕ_÷e Y(ë˜êÉ=a¢  XǼŽqÎËÃà<Žâ-��€Ãþ}»Õ]u¿sõëÝÛÓ¸›·6ÝçϺåìÆr³1:Ó³nðÿÿòÿã…¿ÿûà_O>õ”ûò—¿œÝ�ÿþ"«{ bhà$ ‰ÑÀÓ«_ój÷¶·ý ÷†oùæ±Å ?:]w{cÓ]zöŠ{zûŒ{ÏõW»Eä0Î ÊLRfÒ6é©o‰~ nH¤c±§YtüñÿimzZü=ïy¯z\qê#<ì§+ý°ÜƒDìö#¦E5¸��p\ès”iHxÒK›•Jyãô‰~,ÕVÒpÝì÷T¢™ò™óÞ»ÝNéö“ö)~Š·´‚ý.‡Â‰‹––,í×RQo·¸Çè|,*ÑËÊêªИøÇ§ c’@ÜÓÐöâsüÉ[‘ ˜$ Ï…<ríÙr[ýln¸Í,vT\ºµ%G–·[vú~rÁÏææ† ™ã„ªÓ§é E?>uÙr.Ü)Ò{%ѱÑvHô£mÓv–.A…èÇC1âòyàë¾îu^Ü£˜Mâï§Ÿ~ÚïG s4M¯¾ðîÛ¿ý[ûR—ö3³ˆ³§mskªôÃ?üwÜc}É}þóúr岩óõ©§žö¯}è/ÜÛßþít����³áÀÌJ�Ö5N}Ä>UÓõR'"ÿäi¿~ú§ÿ½û±ûÞRÔÒ~)”:ù…üâ/þRÖÙÝÍ–¹Ç½éMoô4Õ]×4Ý×$e¦á8 Eôä‡rE?ñÄ“îÉ'ŸrŸûÜçý�IÌŸýÙûJÑæÝ×}må-–£:FOçzšiáSÖã2é:Â2§Nv!��˜ªÒ°5ÏìsÿéÊ›Ýk·>ë^¸ñ„k»Ú²8‘pãÂ…ó®]ØÏ+Óóßü]ÿzìK_rþ«»ø#îÑ/|Ñßð7ñˆlð«¬ð50¢¸óå/{©{Ík^íSœ9sf ÜF6hp鹫nwûööe1B÷ŒûÈí—»Ïn=àRwtñ߼Ǟ¬ >«ÐSÐÆ8®†bJý(5°\)³†ƒ<Bn”ÃÐ š\£>ñ‰Oº/|á ¾_¢4¥ùꇼ,;ob¶þðÿmw÷Ýw;��€“FaÔãÿI|:©ÐùÆ—ðó$œÉ…?Â]¦águ½Ø§S:Þè]Âè䢟Ôþ/V­¿ü»_üãE:®™µ©•×S”í¥¾Ê…?Ï(V\Z^ò"/¢)-† gŸFÒsÅ î…v;]ŸÒKï»ÛŽí2U×–Ä;›^�¤¿5=wöÙñ¢‰€Ìå'wÚ(Ä?›¾Œ‰8Ì­Gí\/Òs•¢ŸÈ­ÇþÖôV!ú‘+ýn?}¢¡ý.½îu_ë_:r—kãG>òQWJÜ¢{”ox÷ˬûtWãÜ ¬â(î'j7nÜôN¨ßùËí<òp)p×ù¥{¼z0S1µÎÃßþíßqïïý×Åã����Ã@ø0³�…õ «s’ô_BÇžóÏÜ{ßû'îûßþw÷£?ú÷ýàËc=æ;®ýüìÏþ\6h£aÝßø†Ò駪:­ËÏA ŽœW˜où–orÿÇÿñËþï?ýÓ?óÎxPå‹_|Ì¿ë)ëw¼ãÛkëÒMŽ*Ôq_Zjû§­õTÿ04¸÷ôӗܤh++ËÞVùñÇ¿2²¼žÚÖ;&Hý��0u̲Ù]vzë•þÕNvÝjöªb¥±í^½ûy÷ÀõÇÜéÓg²Øâ·Ô^*ç?üÐCþõ=ßóÝþón6 òTvãZbr{2ZñãºO°æîºóNï@8ŒÛ·n¹§Ÿ»šÅ!{î#/pnÝ—Å¡ƒ1h7üÙLW\'Åpô¶b¶{ï½X[Æâ-qîÜøñ–Åž:ÖJaPçÚT{†ÈÑG <êih‰Øåz)$‚¯J} aš¡mDø��' sâI»Š3 ‘N!ªÑ{®û)”A&˜‘ØG)¼Ò=/–‘¸e³½Hü’§ãêeLȮ͕’ëª[—ñ¤Ä;õô„Gº¿£—î9ê¥t`J¶,·Ÿ,Þ4M.ûÉ}}L¿¤6¹$o—OG–µ_©Ã,U—Ä[ÛÛÞéÇD?›[›¹èg+m뵓;ü¨|þž/c«.í­G w¼à§Hëe‚sê±?|·mõ¢Ÿ¬¼–=-§ŸÓ§½pHuhûëÜÕµ]ê¥tU?û³?ŸK›^À .\¸à…?ŠÙLä]‡ö}|Ïó(î'ªÍþè!‡QBúIѽxŸzé>îûÞ÷ç>nWüûÕ_ýJ���0 þ�LÁ¤©»&©s˜�¨j^ÕrVö¾ûîsoyKžöëßÿûŸñOl?üðþÌü?ë;ìÏ{Þ}^ôc‚¡¸Sƒàçh¸xñ¢{ñ‹_äŸQGYOѼöµ¯é+£›3âܹsµõè†Ò¼U¡cþÈ#ø§MôÔÉ¥K—¼ ¬ =Ý=Nꈳ½èE~y³³­ˆºzõj9 $¡Ó°›���0»iÛ¿ª¸Ñ]sïºö:wGó–{íÎgÝ#7¿äíwál6`‘ VÄ¿ÉrzðÁ²¿p“ §¯¯ß¸ånܼåv»M÷á[/tŸÞz(k×btK«žìŽÿ®ú|Ø(n¬‹·4(öéOçŽ<ýh€c\,öTjÙa©ÚLÀ3 µïüùsîÊ•«þ)qµE1¯¨Jó%§*˜Ê}ìc÷åâA"C¢4Å·r®Ò9 ��p\HåvÓu^#uŒRw5³¿½ëOZøõ¤½”_†Êï)ÕU!üÉ]n¶ —›NY_¾l_²¯Rˆ3Ðû7 %BY=sK‹T¸ö4[…ð§­W. q…k¹åeì”ö¯Æ;ùííæiÉv÷J‡ ~r¡O(úÉ…>^ð#Q½GŸÜéh§t9Rz.Å»ÞH¢¤•/ÔÐk9HGÇ}i×$ú)Ò˜*D?z™[¥øZ”{›Ú‡Ü(MÕ×~ík½'FÛ%Ü´oC^ò’»/|á‹~+6•[P:®?ó3ÿÑÇ–Ší^õª¯öÓâ~¢îê ™t?VÛP‡î¥jŸ\¼xO_<ª{«z¸RçŒmKŒ\ùûsÿ÷8‚y���€qAø°Of-&�šdž‰$ ‘øçÿð½î~á½…è;ßù»¾OþÀÏóýU¢ŸaÑiçMÊIúTñMßô ~ Dä~ðC>§¶n:üèÉuÂÕ!ŸŒÖP¿û»¿ç}êP'TU¡²ßÿýß;`1«']Þ÷¾÷»iyõ«_åS>¨3ÿ»¿û.¿Žx�F7i~çwÞé·UÇ])A���æiRwÅ©¿%¦¹Ö9åþðúkÜrã•îÁ¥§ÝK7Ÿp÷<÷˜k´V²›ñKn}e9Yv+ËËyºˆ!(±A—[z{ÓíuÞÙçó[_åžÞ=¤)»Ž3Ší$ÌŠ4ŠÅþËù]ÿt±¨Œ°‹ªAsÒ ¡RÒ*ÍWÌ>ðÁ‘N’†Ú÷'ògÞ‘ÔêVj†‡z°v <ýá¾Ç=÷Üe÷ðn÷7þÆ[Ä?T\«"AZ0��˜g&Š5 ÅYìþÉöŽ kZe¼™;÷t{u¦¹8Hn9Zng·H{µ½S¦¶2L)åI£•Ö7§O”§åÊþÏb¾n!رôaö®é{rxÉ~¯“Àí'åëö%%öñ.?æð“½¼€Gqe!\Rª®BôSŠ}ÂÔ^E*³ü•×£x(°--ˆ$ÊÑK®<ËÅ»>K@RåÒŠ~ÌѨ/½—D?Ù}/½ë>^(ú™E¿à0úеtŸNhŸë·¾m ÌåË—Ý“O>éÿÅ _øß]½zÍýùŸÐ ¸ózèœP\§taz½üåýçÚaßO”åŸÿù¼ÈüÝï~OS\%6Ò½Úw¾ó]þï8-˜bÛ\øÓô±r• ª\/Q.©����“€ð`†Ä¯ý†uüÇ�…mPçêmo{‹ûË¿ü°ûµ_û wöìYïô¢ÎP(úÙ‹Ï¢t\ §¯ùš¯võWñlu>ßüæ7•óe©+ážDù…_ø%?x££:»Ê·ýÉO~ÊwVíiê*î»ï^÷Õ_ý ÷±}ÂwÆeÑ+‹Y=±£z4¨£zVWW²A˜‡Üç>÷y7)çÏŸwßüÍßèþèþÄ·çç~î|Û5�£c®¶ê Ù÷Š×½îµCÓS���Ìq¬V»YlÓjtÝ"±Ým»Ïm=à_KÉ®»oé²»óƵìýª;ßzڵݮávi’ `4”ò ™?ÝQb®l ¥Ûñ6›éº»´{GöºèžÝ9ç.í[H±OÃåÇobÕÓ§Oùò÷ÿý „¥ÍºvíšwÉQú¡X«Jø#G¡øòCú Þ}÷]åSØêOè<ÿµ_ûu3Þÿý~ ëÆ>Ń\v4ðsùò•‘m}ÙË^êþìÏÞ_ĹôÓ$t¶Ÿ_ùÊWø§Çõ4ö§?ý×î©§žòõȹHíºråŠßÎÛ·7|y=©è��ŽºW³#×›ì÷swo׋zÂôSæãÓd™è§›O3á‹„0ö·â·zÑsÄ?•³ÕŒ(ÕWKâ¹æ´šEº¬¦wÙqåo~Z¾¥¥P©ãB½\´#‡m³îyáD?ÅËR–…BŸpûº¥ ?9+ÝXžv¬]¦ö’[OÛÞ}[[µbÐåÇ–—èGñ’Ä>zù4ar ZÐ_­(^”Z1—b=Å\Š3%®’àG”Ý×½®oyí›oýÖ¿éþÏÿó?ûã ûÑrÔ‘øGûDîŒZ^÷"…\ã”W‡}?QÇéÛ¾í[Ý/ÿò¯øøTï0=üðCþXÞºu˧³{£÷|Ã7¼¾¯‰Ô%ü‘‹–¶]Ûtï½÷úºµ%d2qºR~©n���€Yðà�Ù¯hœô_£æÛ ”:Eꌼÿý(oôÛ<Ÿ |ŒvL:o}Fóú×Þ¨ÃùñÒ7u|… ÔQ¾yó–ûÓ?}ßÀòê ß¼y³Vø#$&Ò)¤Î²Öó¡ýeß|udßñŽ·gƒG“‹~ŒW¿úk|§ÿ½ïýcï@$1SŒÎ£ñÍ��€EÅœHίº…e'm»Ç¶/ú—»O[i츕dÇ-5v½0¨è†â¶³²;ÝvöÞrÝU×Iî8p¦½›Å)+åñœç6°ø›î?ý§_öâK{¢•ïøŽwTn‡âK ÂÕG(G¼ùÍoô1¨Ü&ßö¶·z§ f(ž‹c:=õ,±== Ži°CB£.ÍWÈßú[owï~÷{}Œ|íÚuß¿©BíP{��Žr‘°åöÆmw+»´µ³«u’Â-Ç }òÔ]i7í iºÝàe‚˜Â‘§Ðý¤AÚ®Áô^cÞÓLÌù'ñ➤�…¯P£·\žö ºýèµçöäúãÓ”ízqÏöNžÆKn/æò#¡¹ÙK4š ×*D:ÍfËßãjµÚ^ücŸ†¬pîÉ…I>WŸ¼½¸)tù‘ˆE¢/úY_÷‚½$¼Ö¼Y:ý&jï;Þñíî×ý7½û Ô+Fûê oøf/‰Q,¹ôüöoÿŽ•Ë•Ò\ÇCyäa¿®ªûÓ‡}?Q÷ÌÃ6+å—^1z@òíoÿv/’QlûÆ7~‹ûã?þSßÞ¿ø‹¿ª\Ï]wÝé¾û»¿“{ã���0Sþ�"Ó¦›…�Hóî¸ãßS‡Ô¦íGÔ3iç„ÎÌäè&:®²ŠÕM ½×w}G9_é ô$·D;JÉ¥§\–——üÓ$rtÒÀÎ{ÞóÞ¡ëÐqyë[ßìG”wû™gžñOI«å~ýë_çÅFûþ=å¢Ô z [ù¿õ¤‹u®ÚiJ���ÇžõÃݵÞuw´6ܵ½5wØê.¹-·ädîsxxMêÓ>.‹©z¼ŠÃŒƒõ”ùÿðßñi·}ô ~ÐbeeÙÇsrÌQƒºöhðBƒïÿŸ{÷ÅŸ‘rä¹çž»ý Ëã?îcFãr”hGóå44.ZÆ„?Šõù(ô½’ ç•¯ü*/ŒW ¬6ª­h»ï¾û|½ª��`‘'íWZ¸áH�sóÖMïB"G•2¥V7un§p»éxçŸ^Ê-W}ÒÒå'MSÓÜxQ‘­£·¾ò/7ÞFØ[.þIò óï¥�&)æóÊw…B¥"5—½LàÓKáµëÛ­Z$àqÁz3O³p*E>اN”—0µ—¥Sl(Á^^ðSü-Ñœƒ´ŽQ[ŽËQÜSµ˜R.5r¹yöÙgý}G‰¦”rK÷øt¯oXü&§ñ¿ûwÿ+_‡4rúQÎ\¼xÑÇŽº¯9ŒÃ¾Ÿ¨6ÿ½¿÷_{§#k³â饥¶§yäaߦª¾XIíýèG?–ÅË_)âÔÔo³Ì•ó‘îÁrŸ���f͸ÑE2æ¼dŒ÷¤æ³½Á»½šÅ´fôÒ<y‘7vvv­.`nèï0¦}/뜪Ӷ¹¹ááxž;IL"·lU¹QB1N§Á���ÌÝm4’ì†èZi‡>!Þ„OK»þÞ烌/‡Å_ñ¼øóíÛ·½Cßÿþ_vï¹úR‹ÅrcÏýã}½áë_åoÔ›ë1/Ÿ_ù•_óß¡sçîðƒ+‹‚Ò%üê¯þºÿ[NE/}éK��À¬8ªø²îž\ÝçøoKôØXfÛ ~n¹kW¯ºç._ö"‰_LÜ#§œ]‰cvóYŽ^Ý@ìÓ[_䲓v«ËUlaß[ot`ü8( EA&¸é[Cî>d.Fù+p1ÊÚÚ)ÄAå±ÓKü˜˜§ÿ”Ÿf³p#JJw¢¤¢­¥€¨¤-+D?+Ej/søY[]-S{µ-MØ>E???wÑ‘ MÜ®ª¿«>×M��€é˜$¾ü/KKíoÌÞ¤‚¿Q¼w¢WZ¼wƒW¼Ç/WóyØ{üwÌH�Ž?�sÀ(ÇžiÊÖý˜˜øgš?���pçéë:4 pþü9÷š;?êžØzÚ}vó¢ƒÅ ;êî-ç>åžw÷Yïœ9Jô“£'©…ž ®J��p\ØO<"ÁJ;‹I$0‘ÃŒ‰‘Ì!Gooo¹í,’Érr‡ N q…û9þt1O‘Šž*[1™ð'¤W4Û˜0§ €‚wÍËþÉ>çÏ æ@EJ²žhË„:æø“„õV ÈÛh볺B· ì)-˜‰~$ò1‡ŸU¹üdÇcÉD?ÅúÜ÷{g±)���ÀÉáÀq x?����³#Ä©ú,ÑÈË_öRw{ã#nåúžûø­û³â¥yfµ¹ãÞrǧ܋ÎÜt¯|å×ûžQOƵk×|úñ²ìûaé9���N“ˆ‚$F‘ÀäTV^‚¥c Ób)ØÆæ¦»uû–kßjgodÓv]go¯_̦þÒ²…ð'\tz™¾ö)^ñjdöJuL¤S寓öKŽu³o~è¨TN \‚‚u¸ MÚ¿û˜àGb+ïôS¸û¬i½–³y*c®Bª#Ö;+ˆ7��� î¬Ì!“tøÃ߬Ÿ Að���09Uâ 666Üê¾è^qúI÷‰›÷º¯ls%×E4´’Ž;×Þp¯\v_}ö·¶”¸oüÆor§OŸ+BÄÈ=žyæwõê5Ÿ’äƒüw"hµšîµ¯}��8ILë�ä…?ívîü“½w‹dît¼Û϶[ºuË—3¡Öµ|SyyñO™&¬[Š€Ò ±ÌÔBsÑq½m·÷>‡ž gžªòá´tjÖæØÕ§¯i=g 2˜D?‘Ã}–õn/}–ËO6_âe[î0!Æ���€„?�sÊ´Ž>Æ´" i;t6��à83lpfœ•yÍk^íŸ^ûâcî‘ ÏfË<ã&á°Ò7¦³/-u¯zÕ+ÝÝwß=–è‡Xx<þò/?ì>ó™ÏöM{ó›ßäΜ9ã���`xLÑç’ÓlzÑIé`ÓízAíææ¦îìîí¹­ím·³½ã§«`Ÿ“OW–Ó ÁO·"æœZü‰~âm‰·«OØì‹xù¾¸8JI6˜,éU¹ 5£´^­v»tøY-Ä>ËØÇ~Ìåç cAâL����„?�sÎ4 p¹ƒ†Î'���À Ub ¼üå/s<ð<÷øã_qÏ=÷œÛÚÚž‰ ç¤‹‚f“jg}}ÍÝsÏ=þéó8õÏ7ŠA²†ßϯ{Ý׺|À��Àø˜³L(”Q,¸··çö:×Îbÿ{¦Ð ËËšˆÇפþj¸ƒ‹-ø©Ê½§ü»&¾Ù®05˜"ô);&øñbŸÀå§½|z¯ÂñÇÄ>±à'n?����ÀQð`A˜Öø  S ���'I]ê¦)u”@!Ãâ<œ~öϨØu\Ÿi܃ƒïû¾ïq‹ÀßþÛ?à���Ž;u1ã¬îíYú®0•W˜Æ«j ið ä?¥»NP×a9ØT®'v[¬Y¶ïs(î©HÝ ~¼ÈÇÜ}ôn¢Ÿ@裿ÛÅô– ©wŸPH5Ôµ…û·����'„?� Ä´î?Õ����è1‰ø§jš¨$ªAP5“Ī“ˆ{f!���0˜°îï:âù¡àG‰TÚEº*ÍÓgŸÒ«!7—X|U'@ŠSwÙ4‰{*?})¼ô.çžHÐcŸ¥ÂéÇæ5"×$[çaQ'’"���€„?� ÈQ €èT��ÀIgš'µ'ú„ñÖ¨õ›Mǰý6KÑÇ���EJ]%ÁÏêÊŠOý%!ŒÄ?ìïná´(”‘TË«Hå  áNéêˆ~´bqO(:J±����À4 üX`C�DÇ���`|&Mí0©Ó.?“1n,;izbd���˜5±ëÏ4ËK´"¡+\~VWW½è§#·Ÿ‹#+÷@E°X c¢ÿ.1O!èñ" ÈéG¯xùð%Žj¿áð����“€ðàwþöÛ!¥3 ���PÏ(ןýŠ|FÕ ³aZÇžqŽÇ ���ªˆãÄQqå8„b!‰Zì}E¢ŸBð³ˆâñQÑT,’ŠÅ;ñ´>APðÞ·Î1cò£dX›���àä‚ðàB‡���àh6ˆ3êéáEpXDöëþ3nÄâ���0­ g?qDèT£´VZ»eí8IÑɸ±Ü¢ÄlÓ¶“˜���àdðŽœY<Ù����Ç‹ýzt|9Î:ÆøìÇá‡8ºÇ~7¦u���€Å`^ãËY»�ùí4§ýsÂâÅã³áî��0ßðÛ óÂ82ª:µ����p²ÙÏÍíÃŽ/Ç”'5˜1é 1ôþ˜µƒÇ��`þ˜·øò°‚Lz+tp<!ö��8çÂ<‚ð�����`J&ÿˆq]‚ }fÇ47aý���ÀaÆ”÷Þ{Ñ¿ÿÕ_}¸¯Ì¤q!qäÑ2il—ÿ¦ûî:���� á9ýýM§���àdÒ‹ ÷›Š¡¿Î£Oû–“–Ÿ”ã>ÐsnNY���‹£‹/‡ÅˆUóF¥üše‰(h6ÌÊjÔ´qÊŒ;���öËlâK€YƒðŽ„ºÎ­¡y\,���N£Ò'Œ›Žé(ãËIS6Äm;ˆöÀd´#���Ç!¾|Ç;¾½\O̰øQÏ|1©@‡ø��`>™E| p ü¹Â.ŠÝn×5›M����ÇÅ~bÜò4é—#¾œTü.Â`Íá°ß2ÜÐ��˜_æ%¾Ü¯ëMãºÿÔm 1æÁ2Í94Îò¸ý���̓Ɨ�‡ ˜+†ët:no¯ƒð���à„ ØO(œ5‡_„™´Žk¦ã nÈp“��`¾Y”ør\¡Ï¨²Uå«ÖGǬœ8Ž���GÃAÆ—�³�á̺Xªó²µµå–——����û)<¨™£ˆ/g!�ª«ŽŽ��Àb0Oñå(WȺù“ˆ‚Ây!džý:MM+ú!V��882¾˜àЩ봆Ë wöì����ÇÅ~ÂQ¦±³Ÿ×øò @pø0ˆ��°X,Z|9‰øÇ¦£DE0_L+ÞáX��-û/$ip¤ÄÀübéÜîîn™+����Ž/Šùû)ŒŸ˜™¦³<¯ñ¥ÝàÀâÀ1��XLæ1¾g½Ã£DJÄ,óÍ8ÇhØüýœ?���°f_àȉ/ˆÍfËOÛÜÜt����p¼Q̧ØO1`È~:Íó_283Ÿ„Ç…c��°¸Ìk|¹_ñÆ81JÏÛÓîûqAã¬���Žƒˆ/f ©¾`.:R¶´zo6›^5yýú ·¾¾î����àø¢˜O(4«ÜYäÊ^”ø²î©ÁnÊ���o=¾¬KïÎ7&‰‰æ‡qÇ ��`>8¨ø`– ü#Ã:.ÖA ódëµ··ç¶··Ýòò²���€ã‡b=Å|a§9¼¹=éÓÉÇ)¾ä&?���ÀäÌ{|9JÔS·ÞQå Äãóɤ±ý4ç(��� ³Ž/ ¤hp(LbS«¿[­Ü.÷Ê•«����Ž'ŠõÂØÏÇîžø����b!¾œTÔ1MùQ/˜ ³ÞßÓ”��€ƒe?ñ%Àa‚ã UO·„OÌèâ)õ¤,s766ÝÚÚª���€ãƒb<ÅzzZF±_Õ3Æ8eâK���€“Í"Å—Uu*oÌÂÕ‡¨ùaÚcÁ1��8xf_$8þÀ‘^ã'!Úí¶öÙg]·Ûu����p<Pl§/Œùâ'b§}™ø���à䱈ñå~Ón Ìû=†{��€ƒç ãK€ƒ�áÌU¨¦žÔßÏ=÷œ���€ãb;³ÈUÌW îâK���€“âƗûm[U›|šf}|8¾���‡ÇaÄ—�³„T_phĶö9œÚåjš”ÝnÇmnn¹ë×o¸³gÏ8����X\Ó)¶kµšåÓ2U6¹á“3!qâK���€“Íqˆ/­ ³HãÖÇŽ'��Àá2Ëøà°Àñ悺§rû´%¯¤¼víš»}û¶���€ÅD±œb:ÅvŠñ†Å€û…ø���àøsÜâËYµŽœ���‡ÏaÆ—�³Ç8T&yjFT#r¦ëž{î²ÿ¼¾¾î����`qP§Y±\>0Òö±žž” ­rIž–!¾���8™çørÖ@°X0��p4T| p ü¹¡êbi–¹¹ª²ívwwýwooÏ={Ö���ÀüsýúuwíÚõ¾Nsl‘{OË_���ONJ|·!Ðñ„B��€£ç¨âK€YðŽœð©CQ=!cTa9ÕyÖ…w{{ÛÝyçå|����˜/ò'žŸó9±³)žkµZþï°Ów Å~:ÐÄ—����Ç““_Vmb Å‚B��€ùâ¨âK€YƒðØ.·j^ØaÑ…Ö:Ϻ�ùË»»ï¾Ë­­­9����˜666Ü3Ï<[¦@íqã×8åQóˆ/���Ž7Ä—õm���€É9Ìøà AøGBR“+[T=-/«é;;;®Óé¸gŸ}Î_ˆÏŸ?ïVV–����[[ÛîÊ•+~ Ãr`/--•äºNs÷%SäÆ&¾���8ž_���À,9ªøà AøsÃ8g}Öt±¼¼ìseë¥ ó¥K—ü…ùܹ;Üêê*)���� Åg›››îêÕk~`C(.ÓÓÎöÄsØQž¤Ó¼ˆ/���âK����˜%ó_Ì „?pdTYæŽê<‡¹´õ·Y®©ã¬²yÆË~¾æ­¯¯û§h,#b���€ý¡L1—/ôtÌíÛ·},&Ì×òa‡¹¯5=Ή-Fuš'‰ßˆ/���âKâK���€Y2Ïñ%ÀA1îY˜Œ9/ã=©ùl¯Fðn¯f1­½4ïŒÞwvvßç`!©Ê—NÓßöYi»X‡ïö’BSq›W·û¿���@Nœ·z˜}­u„5XvÃNrønˇu̲ÓL| ���0__���Ì’EŽ/a~XZjcö¦ÀüFñÞ‰^iñÞ ^ið¿\Íçaïñß1#;8þÀ‘3êÉ™ø¢vv­œu M)4M鼭޵+§‡OÝ ƒ5���wFuNãX,Ÿæÿ-s`Çá°£\õ9®wÖfâK���€£ƒø’ø���`–Çø`Ö ü¹ ª#[×y¶ nø´ŒÍ§Ù…ÜŸ¬ §���@=UqXU§7ì ÇeCkܸC<êó~ÛM| ���0___���Ì’E/f ˜+â§gâµÍ/ÊÖYŽ—7«ÜªŽr8-´Ô���€Uù««:ÍUö·q'ºnÙƒè4_���ÌÄ—Ä—����³ä8Ä—�³�áÌqç9ž_Pí‚>£—=-v–«:Ñ¡ý.����äÔurãÎq<½jþ8OÅd§™ø���àè!¾$¾���˜%Ç)¾Ø/`.‰Ÿ”©šVwÁ;ÊUu…ó��� ž°#N«š?ÏfâK���€ù€ø’ø���`–—ø`? ü¹¦îéw õ.ÛÛðó0›Üø"=¬M���ŽÃ:¬uóêž” íuÇ­ï0!¾���8ˆ/û§ âK���€é9©ñ%À4 ü¹§î‰—ªé±mnÕE½ª3Î���€Ã:ÉáôIž†9긋ø���àè ¾$¾���˜%Ç1¾˜„?°0T==cÓEÜ Ž§W=)3îE›'f���ัŸÎkÕ“3Uó'wØ_���ÌâKâK���€YB| 0>`¡¨{zfؼº {Ü¡g½����'‰Qäºò“Î;Jˆ/���âKâK���€YrâK€q@ø IÝÓ36/dT¹Qqž–��€ãÊ~;³³èPÏ Ä—����û‡ø²ñ%���Àþ!¾„?°° {z¦ªœ1iG˜ =���@ΤqÑ¢ÅQÄ—����‡ ñe9ƒø���`:Ž{| PÂXxÆí@ÇåCx*��� ŸYäÐ^Tˆ/���fñ%ñ%���À,9Éñ%@ Â86LÚ®Z����¦ç¸ÅTÄ—����G ñåà²����0=ÄTp\AøÇŽð‚Í“0����ËIè,_���Ä—����0KûÀI�ák&ÍMG���N:£:Â'½£L| ���0Ä—Ã!¾���˜ âK€A�����������������àX3é0(@���†ÇW'-~"¾���˜-Ä—Ä—����³ä¤Ç—p2AøÇŽI;ËØã���T3N§8Œ¥Žk'šø���`6_æ_���ÌâK€„?pl¨ë�Ó1¦ó ���Ð:Á£b¤¸£låKšø���`v__���ÌâK€`᩺ »Èw»]����Ã©Š§Fm™°³¼èhâK���€ÙC|9zšA| ���0š“_Ä ü…eœ³>WM·¾aÓ���ºŽmÝôx�Bå¬lUgyÑ:ÐÄ—����ûƒø²âK���€ýA| 0`!Öi¶ º>w:ÿY‡ÓÃr����0{RÆ:Àú¬¿õÞl6û¦+Öª²Ð÷Î3ñ%���ÀáA|I| ���0KNB| 0 „?°PŒê0ë¥ÎòÞÞ^9=|—¯û{Üõ���,2£:²UO¾Øt€°2zoµZ¾­ÎsÜÑ똷4ñ%���Àl ¾Ì!¾���˜ Ä—�ãƒð†:Ë[]¸ÕQV‡Y/›¾±×rÏm¯¸g7[îêfÃ]ßJÜÆ®s{]-ë����`Ôßmeýáµ¶sgWRwnµëîZÝsw.o¹µÖžÛÙÙñbužõRGº®=/çIãË–{|gÅ}e«åžÞj¸ËÛ‰»™Å—;Š/����L‚"Â¥,\<Å—–Swq¥ëž·²çXÚrgš'#¾¼•ݬ|êò¦{ú¹ÛîÙ+îêÍlÚŽÛÝë"ä���˜Å„íì橵%wî̪»ëüš»x纻÷ÂZ6­µñ%À¸Œ{Æ&cÎKÆxOj>Û«¼Û«YLkF/Í;£÷Ý÷98–Ô=%cOÇìîîúw±Ýi¸/Ý>å>%Œ¹É���à0¸x:u/<¿çZ¿å–›ùÓ4ê<·Ûíò)šªÎòQu '‰/7²øò›§ÜG®µÜc·‰/���ƒ‡×S÷5wì¹W¬ÞrkÇ,¾ÜÜÞsŸýò ÷©GŸu_yú†���€ƒçyϸ—¿à.÷âϸÕåÜežãK8<––Úߘ½©Óq£xïD¯´xï¯4x_®æó°÷øï˜‘O ü¹¦ê)Ëy­³^ú¼Ùi»¿¾~Ú}ìé&n>����GÈ«îí¸—ž½éV›»¾Ã¬Î³^–S;î,vçyÜøòf·íþüæi÷ÇÏ4qó���8*²@ì÷tÜן¾éN7;¾¼½¹ç>òÙËî{7���€#äë_õ<÷5/¾Ó­¯6ç2¾„ÃáOõ<„?0ª:ÌöRGy{{»Ìƒý×7ι>ÑFð���0G¼þy»î¥g®–ù³———ËŽ³½Bº=I|ùþÛçÜ;Ÿj#ø���˜²Àìí÷íºoX_Ìøòß¹âÞû¡/!ø���˜#Þüú‡Ý«_|~nâK8þTÏCøû&ì�‡y°õ·,qÕiÖûΚ{ÿ“ë¤ô���˜S”ìî»íÎ47¼e®:Ïz·§gDØa>¨Îó¸ñå³Ý5÷›—ÖIé���0§(ØwÞsÛÝÕXŒøòÊ]÷ø)½����æ¥�û¯È?Ó>ÒøŽ„?ÕóþÀ¾ˆ;ÍáK¶¸ê4ëï¯lžqï~l—���€à­l¹ç­ÞðcužÍ:·êé™YwžÇ/?½}ÆýÒã+¸ü����Ì;YÀöÃn¹—-Ïw|ùè·Üo¾çs¸ü����,�ßõ–»ÜêHâK8ZŽ‹ð§á�æ�ëÇŸãN³žœùü­sè���`QPì¦ÎR(¶‹ã=#þ<-“Ä—±qÎý"¢���€Å gQì¦n^ãË?zÝýÆ»?‹è���`APì¦î0ãK€Y‚ðŽœaù°õR.ì¡}ôöy÷g_n;����X,Ã)–SL§ØN1^]çYì§ó<I|ù—›çÝo<I| ���°h(†S,7oñå'¾pÃýþûu����°X(†S,wñ%À¬AøGʨN³raëª÷'¶Î"ú���X`Ë)¦ c¼Ywž'‰/ÿzç,¢���€F±œbºy‰/¿ðämD?���� Œb9Åt_àÈÕi–šR6jRS^ß[qï~lÅ���Àb£´_Šíã)ÖSÌ7«Îó$ñå3÷K_���,:¿øåÛu|yùú¶ûÍ÷|Î���Àb£´_Ší"¾8(þÀÜw𥠴‹éž>ã¸f���ÛÙ ‰b¾¸ó<+†Å—¿ýl_:����Xxçc»£Ž/ßý¡¯0è���pLPlwñ%À¬@øGB|AÔÅ2œ§—Ù§}îöî雉���€ãb;Åxf™w˜ÃØPŒÓ™ž$¾üàÖî±ÛÄ—����ÇÅvŠñŽ*¾üØç¯»¯<}Ã���Àñ@±Ýǽ>Óøà Aø‡NÝ…/TIÊ:M¯­î’ûàm����Ç‹|¥íc=‹ûF=13¬ó<I|y+]rï|Šø���à¸ñ_žlûXï°ãË­Ž{ä����àxñž<–Åzݙė� Â8rªž–‘mšÞ?{ó,)¾����Ž)y¬×‹ý†=53 Ý!ñåoŸ%Å���Àq$qy¬wÈñåÇ>•A���€cÊÇ>å@âK€YƒðæË‹­wY¦ùüØiË}üRË���ÀñäcO·|Ìgñ_î—ªør+[ן<K| ���p\ùãgZ>æ;¬ør{·ë>øñ'����O>ð±'|Ìwñ%À,Aø‡Ê°ÜØ6߬Ҿ²…Û���Àq'ùz1`HwŒ\Ù“Ä—ŸÞÁí���àX“¸<æ;¤øòÑ'n3è���p̱˜oÚøà0@øsAœ;›â½Úv����p¼Éc¾t¬<Ù“P_~ô:ñ%���Àq'ù'¾üôžs����p¼Éc¾ÙÇ—�³áñÐ>‡G©"õÚì,¹§o&����Ž7ŠùûY(Âø°.†6¯*¾¼Ù]rÝ&¾���8î(æSìwÐñåíÍŽûÊÓ7����oóÝÞìN_àȨº*7¢¸²»î����àd`±ŸåÉ™¤£<,¾|bø���à¤`±ßAÆ——®î8����8\ººíß÷_àÈ1E¤’yÇ9u—·IÃ����pRÈc¿|E1á~ír«âË'wˆ/���N yìw°ñå3W6����œ òØovñ%À¬AøGB…nÞNݵ­¦���€“b?Å€ÃbÄQŒŠ//m_���œût|ùÜÕM����'Å~û/„?p(Ô]ìâé–ñúVâ����àd`±ŸÅ‚ưrÒøòò6ñ%���ÀIÁb¿ƒŒ/¯Þ@ø���pR°Øo’øà0AøGŠ]ôâÎõÆ®���€Bû…qá4äºøò&ñ%���À‰áæ!Ä—·6v����œ ÂØo¿ñ%ÀAÐr�s€]-'â^×���À a·c)ò pæ8¾Ü!¾���81lB|¹Ë L���€ÃNvsÖñ%À,Aøs†©#����œ8"Lƒ���àDPfy=Àø’˜����'b@˜Oþ�À‘Ã��¨"I������������õ üC'·N‡ãÇ��fÁ¤¿'…ŽÃâĺcL| ����u_���À,™&¾8hþÀ‘C‡yq™ÿcǹ�px}‡¦îw‰ÎÖb¢ã9í±#¾���€âK����˜%û‰/f Â�›Ùßäঠ�Àñá ¯éûë<Å¿_tÆ�����������฀ð�F²?ÁÏÁŠ{xâ �`¾™Èfص~òú±]]|8†����0Kˆ/����`‘Aø�•L/¨™|9Ä;��Ç—ý^ãGßx¯ª¼›õaÛ¸Á�����������‹Â�ècòÚñÊO=ð‹(�àx3BpS÷û1\¨.3™�����������,� d|qÎèrcÕµOQNA��‹ÁP1Í8×òŠåã߀úuL&R½ˆ�����������`Q@øGF<`‡ˆã蘕àgh=éŒÄB��°pLs}ïßT-‰sÆKÛeeÆsB�t4Tňã âK����ˆ!¾���€Y²Ÿøà @øGæ£e¿¢ŸÚå‡Ô;zœ��'“^çhdНx~R½lu‡k|¶£c?1"ñ%����Ä_���À,!F„yáÀ f¼¤ ?é„â ·q��'rͰk.À©MñN¯Õ €ÿ�À !†�â+������€™ðà„2­èg\ÁÏ`¹IEAŽ�€“B6ð3ì÷ Z4(%�íþƒøà˜CÌ �pøƵ—ø ������N�N Ó¦ÚXndžóQóÝ>S‚U.å��à(™b€e˜°¦B4(êM/�Büpì@Ô�prç7€ø������Ž�NÓˆ~ª?á´þùéÈe‡Î¯©§²9�� Á8‚™4MÆ[6U‰€ª@þïH�„øàqHq!ñ'�Àás ñW|]'Ö�����€á� ýø¿Çü ûŒ“Œô_��Ç‹¾ëzí`Jµ¨f`,¦ïÃ0P¿�(ü K²]“Š�`N˜aLˆ˜�`¾™ä:½o‘B ������X@þ�œ †ß,!úév+§× ~fäT[n RÒ~�ɸb™¡N8+\‰ÇZú4DQÁ~§Ÿj¯#ûM Å?á¼b-®NüƒëÀ²ξÅ=CâY��8H&‹»ê®÷SÇo©cƒJ������À<€ðà„0‰è'.;Jô3Zð3Z4X÷áOf�Ì#Å–•n>…è&Љ„5±(é/Ú›�%e]UâŸxžmâ€9aʸor±Ïd"y��8 ƽþÍâß„‰c¹*˪i�������G�€Ï4¢Ÿ !OZ![ §¦ÿªa�Àá3lÀcÈ`Kùô:þ£ë ª”‚ÊÕbŸ`fO Óïþ3 ñ�ÆsãÇ‹SÔKl �pä ëT]§ë˧C\(GRáRY9 ������à@øp˜6µÁ0ÑO,ø§Ì8BŸñR1ð�0—Œü½‰œ|ü¤A ŸžÈ'@I{ebÐ0P¯LÏý'tšVüƒëÀ3fü:^œ›Î Ž…��I½ëbý"UËÄå‡×;Ql‡ø������æ„?�'šz·ý uðô ŸobŸ¤xU9õ¦#�šr ��AMß̾ë{’œpÐ$tí©\qõ ÄêpÿéOý‹�à™™à'~ÙªùÓ,��ãQãM²\Õµ= RÀ¥Â¹å«@É(GKÄ?������0 ü8±Ô‹~ªz†‹zÆü„Ó‚ÁÜr¾Qé2Ôß®ê­a°�`ÞH\R=Àý”>iǹFOü“ ùœàªŸô‚ €JS¡bâ0ñO8HCÊ/€#bŒÞᢠ…Ⓢy&ö—� 'qS }üƒn‘uóuý¯wóéE“19�!þ�����€9�áÀ1't�eHj-_n˜ËÏ(ÁOQŸ£O•Ȩ.%X4oèv��À‘bŠý.?¡8Hó:`y¨x QNñ¹7YËçòŸF Üé•)?ÅúRç¦ÿ 2N�“}‰~ÒÑeƒXuÒuÛµl"Aq)�@5u1â8‹ºdÈõ5R~ë2Ò>—É*GÊ}€ÿ������ÀƒðàD2|Ð#|*n”ègPÐS/øqæÑ`óÌÝ'S¢×ª6Öoƒ,��GM.æ©›™DƒAõ¸~ÑOYÆ‹sò6?)^iÒp]¥ì ÊæÂœ¢| î™NüÓ+ �3fT|·ÁÕ?†{O:$F7ÆDˆ�0‚IÜtB††r¡t`ê(Ð$ ©Ä?�������‡Â€NÕàÄD¢ŸP,äE@ù@IOà#±-gÓÓn:Жą®?£Ûlõ�ÀœP1ð˜„C4i0ÈÒ'ôq½T]ἤÑpIÚȲ—2„Iü“»û$‘ÃOñwêjÅ?ã¹÷ þ˜9S‰~ÆüécÃõ uï©õ Ùk �˜ˆòª9¦X¦6N‹AƒI`Ý€ãd¾Îd"â������˜gþ�cF ”T¥×ªýô•¯™“OšÂ |\áòÓéºn6Ý¢•1áP<’V¬7Hw���Ž’êA¾“dPìSÖT¸ý„óI#ÿøWÓKI“D2<+XÚkE(òKüSëú3é¾�öÁ D?#Ý!ÃXÖEÎ=cŘnÐ1hD›��`Òj¡Í@±šéñRiÏD?¡<ø\/�ÿ –‹ƪs������pÐ ü€ŠŒH| t\Oô§öJ GŸngÏu»/ôéd§Ùß~zš¿—)¾‚'®{ërýë':WŸ¾��æ‘®?U.?ýŸs±O *@ü4š-×lµ]C/Ío4ýoŠ—ò$–r,­ÿ¸P¸S/þ€`Ö¢Ÿøï:ÁOM|;PGÅ:ñ��pT küe·" W,$œ}ìú/Ñx¿à'­�ID®´W„¸������æ„?�'Šáƒ•ƒ}ƒ"éPÑóƒ«Ý첓ÝTÛsí%çšI^Wwo¯tøIôž¤EН¤Woc*ÿNy¢�`¼f'uâ§³›˜æN>&ß)R3hL¦ÑTÒÈ=·—æÎr©[Î~2’òùìzñ+§ù¡‰\}Ÿþ€Ù’ÖˆÒ+ç3Æ®•6m‚õŒ•îkœù��3"öª.S³¥•ö‹€P­P­ûÏ #ÑHÇGä������pÈ ü8é¤Ñ HmúƒÑ¢Mi%]·ÒÜu§—:îŽSm·¶ÔpMÿd]«Hñ•#ÐÀÐé@º…ž'Ðpf}Cí°×�pR ŸÐ''CÊ$åô®k¸Ž»zk×ÝÜMÝVÚîÉû'u}âO¦ý êé˜ÁõàP"Ž™ZôS8Jö¥x&Ü Ä@õÆuõW4Ø�ÀÄ×ÏJ—ŸAPÅgÙ¹ÿìëÁ§¥Éd$�ªtÿ©Oý…ø������æ „?�'Q© ŸnÅ=ÅôRô“§îòN?I×jï¹»×ZîÎSmw>{­.7½ëOèÖ`. šæÿê»#gƒ1ñÓunˆÛO2âó(˜Ÿé›¬þá{8™b�ÀÁQõ»0Êg?$UW»¤¾tÝôN֌ͮ»²¶ãž»íÜ¥Ûwk×¹½´‘µQ–@¬T£Ð%MKñO™ò«œÖKù3rp�öÍT¢Ÿ8>µÜ´Â᧯δVD4j=£"=Ò€� '&òé•ꟗTN#wYw…(v8�Õ¸ÿìKü������pH ü8¦Œ8) Eeû9ÒèIh+:ýHôÓíìºVºë–š»î{ù§Ý½ç—]»ÙpÍFâï™%µé^‚›få¿I0½¢m55ÕÂ�8Ù¤iÿ�¸0F u #øÃÒ(½W§ëÜýwuÝÓW·{ü¦Û»¶ånwÚ®ãÚ®‘½\#é9ÿ¤n`ð&M£ô_ñß•Ok3è055¢˜±E?¢œ<rëŸ_:T–Ž“QÜ8øÔº¹þ¿+=ˆ|��&¦òzZo±[õÒëÄ:Õ%½ûEŒ›ëÌGJÇ«¯Q¶5)RÃöê%�����€ùá�ƒ!iÅ@‹Ý(‹Ò{i0¥Ûé¸F³ãδ»îÎõ¶»÷ÜŠ»ûܪ›Ž$ ŠÆ©c| M…¸©¢¶IÝÚáíã–!�6&äéá 9åÔˆªDBó³Wo¹ë·¹‘dÛ’mC£é¹ÿ8×/þq.pø)ˆžçj pxŒíFY+úq®Êá§YƹUŽA…H¨:íW#Poª�€i¨yÜ&òô§÷ ]}Šþu1­\.üœeÌí'xWºÿ uþ“J9������ÀìAøpÂHÓ´öó°_U¢Ÿr %(n·RwÇ©–;wªýÍ-�€EžbGÐO?ez›¥VÃÿßè¸kÛ©ÛÜë¿UnˆøÇíúÃÝ�ûdìkDE|:®è§ŒYs4¦ùç¾ë\äx™/ë"!PÌïö/—Žë\��UÔÆTÉpGߤÑè{ÏéýB±ûËrÒè•/C¢Úc÷Ÿ¡Î?ý"ña1"‘#�������Nuƒi:zÀ"ýh¥ÛqͤëÖÚ-·ºÔtÍf2ik†`@ã.5‰ÛO^¾ÿ¶ß¤í«fà&b°>nýÀ¢3â—VöÛ³¶Üt«íÄ5\Çÿ6ùú´§òpù‰™ÈõgÔ|�‡a)¾FŠ~"ÁO(úüØgWáìÖãÿèFë˧›+ÚHñî?��CI*“»Jwœ¾Ø­Ñpi§ãíù÷BÌ“&ùõYŸsáN^ZÌ×›¿´{1]Ã]­ûÏxÎ?cŠúâK������€ƒá�¸j©Ë·?;-QºiÇu²ÖFÒÊ^ÙÍ®tøšÒ¡¥IÅPêð›d“”Õž4xYmIe û§TÕ;‹ö�¨h6›åßU̵“EÖ¶FÖì¦ØÉ~—:]×ì.e>ÅU¾L ‘Näú�‡I…è§ov觘—º\Ü£4´±à'í®W,ïúE?i…¨¨\·" Ù��I†]"ãÞs\fó€Í»î$…˜¦Û»{P:XZŠ/‰€ ±í‡·<ÎK{—þbùÉÅ?�������ó€Ì@j¯aºqН`š\éæ,døÃlzRzgWB¡nq³¬÷´\ž~Áå4NOå5|_g­`&o“ʶÛíì}ºp{Ù�ñöÎvÖ¾Ôß Ô °ÙúÛí–·§¼›¤ÜÆnVfw¯ãÛ¹¼´\š­óp[�æ^:„þÁðq6†•íd¿;;;þ便¥ëä¨zµüöö¶¿«þV«å¯÷õ$ųã´ïjÀ¿‘_ƒÓ´ÌI{®?Î?^ýÛ=•ÍàÀŒ¨ˆ3ÓqÒeÅ®<5¢‹ MôÓsüIK÷¯Ô_BaO…ãO•ȧˆQ+ÛS+üAù�PɘédsN°L’+†V.iô;¾lîôSÖåE@YŸ>‹s·Ÿ\ d±a¯)I/Vˆ,zŒbÄœžðÈ"n�����€#áÀ1dä Jßü´¢L…ÛOX>rêvó”*Î…ƒ$Õìîî¹ë7nºÝ]×h4K¡Ž7ªgo/{ee„v[ÙMºV³Ñ»¹o“_nÏ&Ÿ9sÆ-//»ièçòåËÙàô®k¯¬øû…hÖúÏœ>åÚÍ–/#–—òvùå²27nÜòÐ.\pk«k�`Ñ‚FØ�F<‘ÚïA°L\F¢]_…®“«««nÜ6ià~ssÓ/ï¯É­–[[[sçΫÙ ¼óNti'Í@Íð‰mçJ‹Ÿbý®?ñ`M0˜cƒ@5: ô�ì—z‡Ÿ‘¢ }|úÙnþ·ÿX<Ûí ~ ñO,bweí…À§¯n[_𝧠¾f#ú�Fe,å…?ayøt=mÔÍW¤ðJ‚å$ ê¸$‹uõn(y’ö~LðîÆÿDmMëS~�������`ôàDZ‘!ùT áõ7½ºYA9äln©O&w¹�Iȣʚ¦kïåŽ;éf[³ÙÈŸÐsvã¯á×ÝÙÝq«+·¶¾î–Üt·Üvwvݵ«WÝÍ ·´¾æ­¶¯[Ë»Ùú›Ùzå:!¡Òònϱb'ÛŽ›·o¹åö’;›ÍoùU¥ �˜wÌigoo¯tÚÑu/wVkôR) ùý0§Ÿ[·nù—–×´IÛ!áÏSO=å6²ëóéÓ§ýt{Iz ò4”Îõ9Õ•×ç2݃jQ‡à`Ik„èBõtPX;ý”Ÿ»=§/J/…ê]”\âº}1¬+®Ý@P”T ‹úSÄh^c\¼]qåH+þ�Xd*㬾iEß_ÿ”N>½û¹ PQ"5'Ç@�¤{âÚí~Lԓ϶Øp”ø§¯tß4������€ùáÀ±g„ûOoÂØn?6ˆÒ-žœÎ=³õÞu£#4`ÜZ^v‰Ä?Ù îÆÖVöÚöb Õ)Í©µu×ZZrݬìv6h|ûæ-?ˆ»²²âZÙ ³†S~�:¿y×Ùí¸fkÏuºe·+×ÙÝu7®ÝpÏ]¿æ›knåô)ï ÔÉnê]½rů_nBíV6è½µãÅ Ç4Dêîu]{)òÐn&¶�à(I¢ÔV–^K‚½ ]Ïž=ë¯ÅaY[¾ÎéGuèïq~b$øùÊW¾âëyðÁ}† Žr1j/¥/›ýF%å¨NZŽð¤Åß½AŸ´4"ÝÀ %2µx•CÅ­eJ¯âûnßýÂýGHÌÓJ:.éìå®>ݼ‹e›Å@o(ì5= Ä?¹H(©-U}œ%H~�àX‘Œ˜˜$1YÞOzE“B äE@|RZ‚ºÙ?Ͷ—j¦^|®>{.hO Q‘ñ¡âŸ4©NùUçúS7"‚y$%²���€#‚Øà@@øpÒ˜¢c?àöÔÓ-žœÎËä³’aëHrÑŽ,·õžÄ2º'R%ívvon©pÜÑM¶Fñrþ}/¨ÙÞÝõâŸv»“ âd÷òR?3õ`ˆB ¥îZË¥×vwÜv«™µÇù—2‘ue'ž½:vã±›æOŒÛªe­V1ˆÜ«�`Ñ]|B×ý-Çï¤Q ª9ZN¢½Ós GuZz/¡w †¾ôOúıÓÏ8®?ÅÂ.N÷U9�Æfì´´a¹ÔÒt¹>§Ÿ¾^e:®,Âìîºål°öô’sëIÇ5»{®YÄoÞá§k"÷n.úqù@qâÓäÑõ°çabAá…á5`Ü8;©ýPšWô·#„B�Ø?Iq½ Ô6áÌ’´ïqš4/Ú§ &$¹€Û×Ýèyù(ÝW§Ùq[Ù绩Ûé6³û ͼLš; ë÷c@üãú<u)¿�ŽÄ;���°ˆì'†A4P €Bõ�K:´|¤=è{òYcEJ.ŸN¥³çŸ®I1üÕà­Ä?­•miiɵš­ü”æib”VæŽ;Ω¾šn˧ÖÚÌÞ·ýÀïÊRË][)ÓÏLËúúº{Á žïîÜÜp—w¶ÜÆÞnáÑpwÞu§O=¦ö(5Yl`Ã?%ÞñÛ¢Td��‹Jž~±[Š|tM–ÐFÂMÓg]kC‘Oì¢ò.\(Ó{Yã’xAhÃ?Þ½êU¯ò$µG"ÿûQÑ~ÿÔ-Ü~$ü)œ?|ªˆØõÇõrÊÔì+€�fE$./'Ó#ÇI;TváO¡ÊÑðm£»ëηwÝK×îžçVY,©ÁÞ´¬µ·n‰¼Æ5òëŽB½½ìÚÑM w /.rƒé\ÓÁöŽE9Nmb#WÞ¸ø»o/!io¯�L‹¿v*m¬ ÚU1UêúïGØç2UW$šL’`A|šý"ìe¯K[]÷©+»îÙí¬_ßhg×÷VÖŽ\šd}ý2Žta¨XÄ»CR~ÕńĊ0S÷����ôa<�p’Aøp Ý|ª>{óÂÏŸ<¥Š \ê\ÙïR«éºÙàï’\v²AšÝnn¯Ý–ÓO6à’îv\7(îèÉ»l™–n ?ØËK­lÞ®[nå"›•å¶;}jÍ»õ´&t’YZjg¯;ÜÊ©u×ÚÜp·¶6}z›f³åΜ>í¾w²ÏN7ß¾bWø¥lã—³Ápïü<—X �Ì7&ìÑuOi½$ö11 ,Ã_u˜ÓÏ~Û¢:î½÷Þ¾uŽz–c3¹P ±ß¶p€& Ò8XÙ4šÜÒ}õÍ€Ã!ŒK×.Ÿ–«š§•i½zî?Î^ÖÑÝsgš]wÿZÃ=tªé$;lNfþ»Þläéa„ÄÛí¦oxGÊÔí¤\øS ›'±Ïéþ¢ºøÚ~ž×ëNšÖˆ´æ®×pÔÿœã¦‡µÏÌymàÚ3Á¾–v³“½šI×=Ñê¸ëÛ©Ûê®ÂR|6º>%˜îGX½ö9y7bןòk°ÅŽþ>ì›øE6���‹Â¾£éªXоœ þ�œ@ªnV¦ÅÓÓÑÄJ±OødµÜ!Ìa;IìéçúÛ ­l@e}yÙ­¶—rw ¿—§�óOþe¬ônðåì%å/~·³ê.œY $® N·[ílpº ÌL´Gœm»ÄHV×ÜÙå¿­Û׫'Á ׋\øcÃ?ù²,'üÉ—�˜7bAþ–CO8à"ìÚÜf»lZ5Åõ<ù¤…ŠÇt©IÒ{J;_$«È“Û�³¡?Më õþ.œÈÊYÝN)ðñéMü#AOWîŒïï°ì:n­Ýp§VÛnu¥é’Ý®ÛÛÝq[Û[~¹öò’(úk™“Ø1û»•V]Ián©ø.)†zä3ûþÀ쩺F+0�¨b±çßøXêXÅwubîZÑÏ„ÈÔ§™Êõ-ukIÇÿ6츦Ûëdë– \7»Ñìúþ}eØR^‘òk„ëÀØìSìshž9þ��À0£xxT´1ÕZ†¸Ž9� ’~+ÿ@üSüHv]·L©Ð»!§§àRŸ.¡ïø£§ª›õe’¡´ž¥ŠÓþ`÷ žšÄ­6ÚA}ÁüÒQ(é›?YÚƒ4¨�`¾H‚'E8¦ Ëf»Fa/þçÊÒþ¤ùoS’ȧU¤ûJ¸. c ÅBsÿg¥ ½çðºüH¨£Ô³>ý¬Oï·— è¦Y\×um¹ødewnßv»›Û®»·ëLµÞIö|ÁæRË‹€šþš—zÑOÚ±ÔaIî‘•+«¥ Ëå@ñ`t·Æ›HÒÄE¹X>wSaD›ß·/*ö‘-¯²[[¹€©YħÚÍ—S›­CówvvÊõ4wÌp}¡˜Ó®õæŒÏ… u׿nùp@Ò×>Õ©w¦éÕ»¥•ÜÝÝ-×mÓÃõøTl…sSü›díox'Ñ<5¥•³:­l#p —Öî'«Síæô¾¬î°Ma{ã6‡û!ܯV6n_[ÃcfŸmû­>-«óÀöM¼Žx;ÒÐ+Z—';ß”zSuª¼mcþàD»œ ˆ«Î;/TxŒu>¨> ‘Ø$l§°óÛ„$áö©û¾Xýñòñráþ´zªÚcçz(dUÇ+Üö½Ô~ª×>Ûù§:m}ÚÏz×gÛÇá~ Ûïûðœ³ã®3ÜnÛ.»N…"œø¸Ú>RÝyìfe›l»Âål›ê¾;râÕß¶Âc®Û®3¶Otœ|y[Y,¨WSÛ—v¼ãO7+*ñ6Sò$úY)Fê™ýô‹€z©ÃõöÅ”"š©–B°���ͬâ÷€«Ö2QôŽ9�Ž5éäóâ³ÁÍ´Pø“»ý„ƒ,Ù·náÞƒ‘0�ÀÂR5˜c„¾Ãæ ‰éy¼ê§øÉêý†%ÕÉò4•=çKçåËô è„ Äa€`&D±¦ RÊÖ•õתÂéÇ»�•Ž_zÏFtÓ¦w—ÜÚÚv7Ÿ~Î¥Ûn}}ݵW–\º &ï7nºÆR˵š­2½¬®©Ug£ëv²Aê[·nåƒõ³h@¹Ýr¤QŒ ÐV9 4ð¼¶¶æž5Mïú¬ullløeÔMß „Eƒ››–¢-¯ºžyæ?®ÏšóæM?(~Ï=÷¸S§NùuhþÕ«Wý²Z‰4Lhaƒü¡ÀÆD"j¿‰]4_m4QŒ}6ñ@<�¯åT‡æKˆ$´½·oßö/•?{ö¬”Wô®6ëïëׯû²Þ•)ÛM×»>› Eonnúu„‚F¨>Õ¯6j;TV/+«é&L1aˆÖ©égΜñûɶˎæ‡b›oeÂ}d/›nÂko(±²öw(ˆ Ï'-¯é:Ž*gÇÆDc&˜2ñ×éÓ§ý»>kè<°}®#YÙ6hšö—ÞõÙê×ß:v¾©wÝu—¯SûGëQ;5]û_ïúlbŒ:ñêÖy!Âã­6\»vÍ·ëüùó~{l›­¶œö‹Rƒš '®¨ž§Ÿ~Ú·Eõ›DË«ÍBë´— sô wTVÛ­úÏ;çë 0§DûþÛ÷;O!ï?­WÇCåt¾ ÷âŽ;î(·Sõj}ZîÂ… þ]Ÿ5=.…Ç´êú¢zì»§}£ùvΫn»ÖXLx¤åB!š žì˜è8k»U·Ú«mãFÃÊÙñ±ï­ ªâóSÇøòå˾¬Î+ /@a{T§®Ó&òÒ~Ôy“§µõwóQŠ—?ŒÔí&NRŸ4éöņ¶ï|[´I‘Ìïú30­6΄Å„ƒb•žZLÄ=<���8F>xYÏ ‰£ÓuŒ‰­‹Ž�NÑfxƒ>|ç—b=Õgâÿj&8#xìºÚyãúÅÎ9ñçý’îs~ûq'�8<F^Ì!½'à».ÏdRÅ ípÂÁ—àï²|êúžÒ/aÐ`FDñgZïö“§ö*ÜR ·Ÿ´ù•ué¿ü�n#OÝÒM;n[‡KϺî­M׸óN—®¯¹NºÞÚÜp—Ÿ{Î5W–Üê™Sn¹pËÑЮwý‘àa¯ãv²AûÍ ·™Õcׄvá0b.&Р³‰\L|£ù&ü1ñˆÍ×€µÖiNU˜PÇúûƾN|H As vÛ`ºÊjº Ð[[B¡Hì£éz©lì»qá<aÎ(&z±¶èe‚'ÕkB˜x¿¨Œ ¶ßL¤`N"BuiÒ„í Ý–´¼ê³ý:ÃXùÐYEõI( A•­Kí²}"B‡{™pÇD?¶Û÷Z¿¹’Øvk]¶ïMa‚$•±åÂóÈ„?欣²&–2ÁFè¸bí7QFèª;íØñÓþ·úì¼n•iä˜ÀÊÊX{ÍýGem½Ã„?&p±6Ù¹¡m²éÚí+ÛOÚ>­ÏÎoû.HH Ñ´¬¦ëø«>;¾¶%QY ™˜Äö‹­ÛöÖgÇ[åm½æà£viy;^öý2!œÕm«ËêÕò¶/u Ônc;Oì»aç}è$ŠñÂkG,æ6¡°ãlí¯þXûc­Ð½Ê=ÚÕoß…ª6Ùw×eá5ÔÄLö½±sÊÚ~¿Âk‘ÊØµ×ö΋뒼ÒüwB/eWúFé,”§òöe]ÿÀÄ03&åŒUrŒúf"èIgP���œ,†ŠtÆ‹-BU1Iëi_=c€�Ž�N:áSÕæO`ÛàiùTõ@ ‰ÐzÈJÝÐ[C_“šBÿœa2ÑÏàÚ†­Ÿà�æ›:qϸ.?G& ~Zú…Åo•žô®AŸ¤1Nw�fI:jð(íwLÓ´zšÿÛ@EÊ/ ôjÀØÜ}jÚÔmeƒÛÏ>ûŒÛ¹zÓ—Y=µî…?77n»K—.¹åõ5wöž;Ýú™Ó®í•³Aè®ò¿ä9þt‹u›xCëkeÏÚèeö¡G˜.É„¡(ÇD&|©þ„©nä bÞX]o´¼9‚„)Ç„ b‡˜ÐÑÇÖem”°!t,2Q W¬¬ VÌÅ~ÌqGÓMˆbâM³í2‡­OeµÖF·ØzÌíÃêS9m›9öè]‚ s ²TOz—€BušàCõi}rÈÑg›n3öÙ„>&2ñAè8bbŒÐ(vf1ñ‡ ›B§%XØç°Ý–BÉ„¶_ÔnaçGìÜdçžµÑ^ÂUv.YY;wí0AEèHd7jíGfØym5Û‡uØvÚþ:4Ý>ë| CÇÊ\¤l_kY…B(Õ'‡üÒ‘–bF™ðǾwáw0Üvž‡i¤$ܱï’íO­Oeì›ÛRx|í¸ª}æüeÛhß µQíÒ»ö³Úªí3‡! ™¸.tk …6q›m?¨M7ñ“•³í0,«ÃÞm‡.?qê4ûnš*N~'´m:?´}wÞy§ÿn†$™”Ú¯ï£0W)-cÂ"û~Úw ;õÒ&þšd¿ÞÑ­“ÍSü×H¼ø§lW)Ïm$åð“;C¦E8‹àGÄ‘�Ƙ♑¥†Ô3r ���ÓÆA¬]Û -�â>0,8�N�}.=“<Üx *üÑí{аN˜Ó«}÷ÆìæZèô“Fó‡­ÿ° @�€Åe”x'|Â{’å’ÞºçL<äËiIÏÚg¬'NŸEp@XDª¿‹¨OücçŸÜ¨[¦ú’‹ƒêëd_ÕVⲡr—Þ¾îÚ{›^ø³• LßJw]’Íë4³²JûÒH¼P°!aI7—H ´’ 4[jƒä­Bˆb¢Ñhv¥ÀºmpÞrBᇠŽÛ@{èÞa®1&Ò0ÇŠh=Ì„Î=VNŸCLaã±Sˆ-k.#J«cƒê&b°vZ{¬q0{™ G˜ÇDT†µ]ë3¡‰Ö)‘‡ ¦ÂtX6èo"*sóQ›Mx zÌAÇ[yÚŸÞ>µ¶™ðGhšÊiÝ&Œ°ö™ãPUJ®PžáñÔr¶ÿ… B'!;6V><6vžØºlXz(½«ý&JÉ¿&i¹ŽP:5…çoÜ^[&<_«áþ1Q— »bç—ð·Ô¶Ûê7Ç™f!¬ £LðeûÁÚ¦®3Á‡a畉^ôÙÎ sèÑ» a„ík« ÜÂïS¸žÐ*ü„ß'ÛV;Omÿ†×€PäfûÌÚjíR[µ_Ãó-ü…祵'<íØY›mÙPÀ íÜ S£Ùþ ¯Oñõ$$üÛ5ÒÎåðÚdhºŽŸµ%ƶQåBñ];Âr¹`4[G'»¦8 §ZÞ!Nq D¡>åWCß=-— ½ñ?<Ý‚ (˜…০ŽÚ¾ËX÷ü����惾¨¹.ޱþãÀùIõ²1üØ£†¸ÿÀ‚ƒðà˜‘¦ûë§cÞT°rý¢"¥VH¹Ç�pLI’Á”s)~ñ¿OIù;ÕŸ¡!õ¢€ªœÒûó —@\n¯rNä2”5wúØü´pÿQúÙ\¤žý@͵·ú¼»ÜV×=uë¦Û¾u=›Ÿ €//¹SϹõ»ïvËçϺduÙíúñÞì»,qM#eh�yMiŒvv¼øEëjiä‘ä ôë2÷(6(mbÜÄΖVJÓÃP¡#GììÇㆠÄ6�o"¥jÒrrÈ1±Fè\b‚sµ1·ŸÐùǃL°ŠˆÂk¡æI\c隬‰{ÌÉæŽ;îðƒûæFb‚~˜‰¥c jtLl[Í1È�VVõ› Dر±}i‚•Ó4Riÿ¨.KóeBˆ˜+<Ög{áø @¬=¡Å~cããîK·Ø~3¡‡œmB'¢°.}Ö9©2qÎ~·B!N(îµzLØdBsøQ;uMdaÂ-í/s˜2a•-cí4;N¶.½ä�¶!l£}ŸLìcÇÎÒu™’ío•¿xñâ€CŽ æÄJ‘æ/tK²ïB¸ob1¡c’mŸmO|^„çCXÎD3ú[ÛbÇ:ôiºŽã¹sçúRÜÅû*<–&Ø&°ÑzìØÙ¾ ÝsìxKŦãiu(Å›‰—T¿9ñ˜�ÏœÐÂz òh¾¾_¡à+ÜM3G+ûÞ™ƒ“µÕ¾w&F’3ÚfûÜ‹¦’¤L'^ Ã:Ùy'O¸Vö=êæa*“·®€Zþ7%—ïdÇ¿¼.úÞH×ý©†ˆ‰à˜±Î$bŸÚ²£VŽü���Ž˜$³”Qs·TÆM$�"n‡á�ôH+œ¢iá`Ìà‚q~ëÆ#tûqõÅóÇ©/\~¿Lº~�€Å"Èš_‘KZ\֋߬¤p I*:‚±˜‰ŽÀì˜dP)™»>7Ÿt`^éòãE©ËÓ|9É~\W»¦Ë–ÖVÜÙ{ïvÛíÄu¯,9§t?Ùô•làúü… îÜ…;Ýò©µ¬wÜtFöãÄÍl0Ú5Êõ™;ÌröRK––—ËÁ Œ:Á€èøÜkšƒÔ&ê±tBˆ¯þ„)kBW‘ð=lgü.Âò&>$71GØ^Ø„Ûnm ÓZYÝaê-9X}¡s‹ö¥,2‚^°77Kc%L”dÂJ„B•5’ âs©Jþ‹&ìÝÜaô²Ï¡[‘µ'tø‰Ãõ‡Â£8eRx¬MЧR²å¬¾Ð=*,Ö§`›”°ý&¤²TY&` k¬&ð°l&ü±íŠ…3"TÙºÃÏá÷ÀD6:oLäcî[¶Í¶_ÌÑ)þ®XÚ°ÐGõš˜,è…¢¨X�ž—&ì³öŠXÀu˜˜@K˜ÊÄ\¶mv½ H6/<×µ¿TN× ýmÛlßCs2ç©*!œ]_ªÏÓÐÙɈ?ÇÎ@¡SS_½Îz\ñ;¡ï‰R6f¯DI!]qµÏöM¢ï^¶ž†öEÄŠ&5*jîîã÷©ƒLjøgÁϸbŸtÌú†Ö ���pˆ$CU?ƒ¢ J!и" i@Ü#†á� З %´¸N QK1ãü¹òOW,0ZC“&c4`’™Éˆù£˜å7��ÞÕ&ø«°Á¹àðI]:|pË„>… /öƒ²Ý ¨[™Ó†Òê,¹»îºË­Ÿ>åî¿ÿ~×ñƒ½‰OçåÝa––ÝòÒJŸè#Þ Ó÷øÁqM DNƒÍÅ@vììaË[aª)+¾ªR}…åbaJ•Ȥê=Üs¹&xpÛŠaBÑN(, ·¯N\Ö¦/’8ÀœjLhdû&üÛöG¸®¸ì… JAUëNØž¸}uóDœN)lO躔V °†B“ð³íÿØqǦÅN1v®…Ë…ëχðØÏB¨[U¾7¡p)NeçzèðS•êkØq±m ÛaBŸX€fÇ$v©:>aj¼p› (ÖÕÇø¼vŽ&¬ Åaö}±3OxN©Œ„>ú®†iï¬.»žHä:qU¹ýÖ‚R×íÉ|¼ƒO3-ä';8ïèSü¾”‚¡ ªÒ}ÌJô3 ÌŸ¢Ž‘ŒÁ���Ä$Sމ¥C”?³ê„@CD@U´Á!þã€I:ð9õd‘=Y]qS»œVsûšYÿXî·>~¼�ŽùoRüž–ÁÄÕtØ|G®o‚³ ù�¢süV�LOmŒ˜lõʦå@mßòöw7wöÑ©¹ ¤EYïΠí†[Y^v­v/mŒ¯BZöBÄÞÈ>´ÒBì“$¥ã°AëÊNC°öÛ�ü¤Œc·¬ ªDãÖOÓ¦*QÎ,ˆ]~fÍ(!G,þ™ÁÃAÿaçÂ$çIplT™ªþiH.,[%® V±àhÚïᢟu=!û¹F44È…JÅm Ÿ*²®¥EzHý¤ W¦“xÔ\TÞ/Ÿz ´ïa©Þ¹7rŽ#Óˆ~&ü¤/ëjÚ1æ÷uŽ¿×���0?TÆãôÒzÑP, %êÕ €¢ùA3ÿÀ±áÀ ¥N¨ÿH×ÝÀöd«ã ��8&ýõ óåÓ¾ç°�ØC…@¥XoP¬Þµ´_i‘º©k®?rjèø2‰wýI]6LëZ¦[nµÝRÒjÉE?öu×÷¾‘º—Ÿ¡í>'Ólë˜ÌrùqDûþT 0öË~Ú8kêöß°>SÕû¢P% çxïg›G ÓÆ=ߪ\•ÂyuÇi–çÙ"‹FßÃÊ9E³šÍÝ"ÆËS}YXÿÛÑl¿=5ŠÐ/­†×­„XñÄ3©ègZÁϰåt?éDí\´ß(���˜c¢¸¢¶OYó€fe …@I™•¤¬¼?u× Ä?p\@ø�ÕôÝdÕù/DD��`(~‘Ò软é�ކÉ¡ÊùÁ÷Ù¦º~€¶›;ÿª^@‰ÿާ®¡4?J9S8{t:×ñå;eKš>EPË¿‡ÄB­cooÏ…i˜,…M·4GaJnä^d×¥Ú©Ú÷ ñãrqº®pýaý±£IÜVko¸]¶/láv„ëÛTU•£jk‡ío[NÇRû]hºíÃ:G½´Œ°”PÖNÕoõ鳿‡eâºT¶jÇi¡üù–½Âã®·N`r«/<®ueÂÔ]6ͶÇöOUZ»ªºl9ÛÇñ:âs(þ~X:©ºó´jßÙö…ÛÖ¾ÂåªÚPõ²ã¦06`¾È¢1ðg^¶ç›–¾K)!S;ÞÅoHš‹ä”4šùùâ§5]>¦0fº/€&ýŒ!ø©ûŒL6Ëïåœ|Ç��à™ Ÿ34IÓÁ~]Tu(ª!�–þ 9?þ�œöÙ)÷7Æ\ðôuß;��À<™–æÿOxs/9@u `ÿTIÈ-ÍWY¢[ Ê»náð“ǧ½[——oDƒö ‰?X¿³³ã¶¶·ÝÎÞ®�iþòÒ’;µ¶îi¸BÆîî®ÛØØðâMWú›µµ5?ïöíÛ¾~MÓK)½L$#ô· ‡L|cÍSê-‰b‚ Âö6Ï+±ÀÁÄ0&®°òz…ÓÃmŒ·wkkËÿmÛe"Ü(Å–¦…§P·¿<&¢ k(1Q•Ú¢6Ÿ:uÊo—æ«m7oÞôËŸ9sÆ­®®Ô {TÏvvì…ʆûØæ©>}Ö|G• Û×ci¡^@–—5ÁÎ7µÝÚ¿¾¾Þ'b1!M,ªhÍ«_í1NŒÚž†Êonnúišž¶áùdça¸ÿuÌô·ö™ö­­Çç@¸¯M` ãBQT,R Ï#û^èè%t¾Ú÷ÂD;á9_õ=°}3í-kçcX6lãqaœóoÞ…?}iËߌü7&I²¿“\¤ß *¤iRŠNKÿ¥¿I/ŒãAâÓËó}ÑÏHÁO:|ùüÏ1DÕu³x¬���ÆaŒ˜¨H¾âa °î¾{A5U" ‘ Yˆˆ÷a@ø�%U?®ã/Ëo��ÌÅÀÝØÅù8Ɖ#+bÏ4 æåäÞg•q«‰ƒŠw•†ŽÝ]wãæM·¹µéö4€ßí¸Î^ǵÛ-?OBÑÎò×–W²÷\dþܺuË‹>$ZÐgܸqÿ«‰A$D1QL,p Å`˜ðÇ-*¯úõn ,„õ™€Cí‘ Bïª[eÔ†pD¨¼9¶h*c‹P`bB šô®r&‚±õzÑT±&Ô¡3Ê…"\˜ð#lŸm“ +L\d‚¸WÚV‰°´ßmºíËp[B’í+­Sí±}­õZ›µÞ¾}îOͬž¢=j«Þµ¯m‡hyÕ§uš˜DuÛöÛ:m›L8¤uk›gÓc7¡P¨Z%Љ…5á¹l¢.;‡Ãùj›ã†Ú¤óÕ„?Ú^þØ9mb8;®¡;“«öUx\CÕžOáñ·sDŸM¦W(α}«sDËj{…¶ÁÜœÔ ÷ì»fõ{q`¶ŒÞÍÙ*ÜVÕ¥íÐtۖ𜎻Âãrœ©:çXø“šà§pûIRünä)¿û~¹ÞoßžèZ¾èNN0#¦ýŒtù"ø© Õµc˜Ð¨7q"��€1Êýr n‹§iuUý¨ þ® �Åî?•©¿&ÿ�Ì1�`€øuxÙü½´^÷OÃ9��€#§|¿6?CÚ×™L*¦Àˆ|ì½tú1! D?…È¥I~£i¯Óu·77ÜsW.»lPemÕ;þÈáE å×rç–ì»vý”{àî{ÝÊÒ²É\R2$4‘(àôéÓ~ÐÿÚµk^ ‰a$ú1á… ÂRZ^õ˜ˆHÓMdab—PÄ qÂ… ¼»H˜‚JÂ-¯º®_¿îß%ÔÑv¨¼¹Ë˜h#t—1WmÇ0‘ö¶ÍDQqJ³P,d‚ aÛ¬eµ^Eh=ZŸÚ¦í±m W´œ¶GûIË©-ªGóMŒ¡m5÷%a©¡S fb7[·M³öšXÄŽ‰‰T|]I£4øP™Ý½ÝR¤¥ã}ÿý÷ûýŠrL¦6›ÐEÛŠELpbÂmƒö»–Óú-Å™ xB—';–¡ãMè£c{ñâE¿½¡°ÊÎ[­'&Ùùºâ˜ØÅDBvn‡çЦkšö«Ö«Wìþ£r:?í{¢í»råŠo‹‰”t® }7ìÜ·ãnßÕ£söQûÿìÙ³}Â+åhë<1W&­ßÎííÛk£Ê_ºtÉ/«íÒzÌÙÉDG&3ñ›Ö¯vèem Ï«Øõ (a@!Mráþnê|Hr±æ¤ð4þí™DB'“IE?U.?µ‚ŸaÎ>µë‰Š¹ñ„B����ÃKÜç’Lv=žbBQ&rå‰2ª6P­�h\÷ŸIÄ?�s Â�MUÇ¿xêuT1€Åà N^ÂC€yÀDÒ1�ÌÃÈâ»;|¹Âé§kº&öIþ*œº…ëÏ^gÏ%<­‹R~)õ×vwÏ5 !F»ÙÊÊtÊü ±ë¥+2„>K  ƒ‰DL;Ý„Ž"&*‘ÀÀ>› Å^aê Õ+aM S…i=æÄ¢úLä ¡‚ Ô'˜À#v*±v™;‘ `Ba’0!è˜@ÃÜ‹ÔM— E‰P�aÎD†í'v˜ˆÉöA(2ÑöšØD/›fÛiõ›€*|Y;bÇœPÌ:Üt;Ej4sCJ‹ôj…ÈHó¬}á«L-—m‹¹ýh›$´ …V&ú1§-#щ rlßÚzÂs$_…çŒm“;žön嵨ƒŽµÃÚfûÂÎos–ÒL/m“¹ãHTcçž‹Pœ¤úM´¦ºu„¢&}¯¬­ZNç‘þ6q ̽)N[nŸÊÚùmâ%;÷m¹ø;jÇÍö‹‰öl›T}7,í™DJáw7>ïN‚ë˜GKb!_šßÜO‹ËPþ“;ü¸ðË \íöõ†úÀÔ¢Ÿ1?c‰}ú4?ieÙyý3����öG äéŸ ~L|Í+E=áÂý}«ru 4XÎ!þãÂ�èFv:îÍ€¹'xªsìò!£Â¿ø9Óƒ…`  b€­�9D?�‡IZ1:Ù2&vɳ{龊”^iàðSÆ©Aº//Æiùz ZK¹3Én'OÝ%矖ÒX™ËI»çìö s® SJ™@ÂÞµýmB†PôºÁhšKT‡Úa©¥L0cÎ(aŠ,«#t}æàcé¸LØcB‘PÐ`Î)&p Å8&\S™°&l¯‰7”Læ cí1’Õ#† ^,í–mC,–°}dÇ@m0!‡0§"‰-Ô.jsŠ÷y¼ЕFíXeçWÓ¢òŽbR rl_Ççp˜ºLÛ1Š…!&.±´TÖ–0•• ÄìX„Ë…b'êØ9bÇÒÚdukß©=&dÓ~Ñ÷ÃÚgç–#¶ŸªÎçØ*Þ¿&ˆ3qŒ¥¦3—#OKáf稹Z…û*t$2aW,v²õ‡ŽCæTdË­×æ‡ßÛa½¶ýa*¶PØgßÛçáyóC™Ò~/Šô°–îËÜ~òiæÔŸæ«JÔÓ7X0VCˆC3)ú©üŒå Ô¯ŠÚ<B„ ���0 g`–Kúc/ÐOçÆå´X”T¸�%I/6/T;½Ï)â8 ü€œ4z‚hy7`a™FôSU~Ø“ŸÃæÀLIGN²`Â@ À‘‚üCýo³‰÷Ê¿ƒ÷pz^Ÿ+ëÉÇl×Êí—‹Áþ¥l^ŸÏJ@²¼ìšú,1A³áN­¬ùy¡øAŽB6Àob}–@ÀÒ8™;‹Ä šf¢Œð:͘ÂD æB¢wd¨¬Dª¯Ùhö„9iw@̲²¼âŒr”<ÅXÇ‹Q²2­f)œÑ2ª?â˜èÁö¡µO)KÛe)§Ì±(Ü̘¨FåìoD™;°]¡SM8 i˘èGõ…B*9 i¿X*(KGfÇ'L[Šx´Yá9ÔéHÀÔñçJ³Ù(ö©Ò„å"'¹@éÜHŠ›¢N½ü1´úÒ^ì§ÿšZ.ѱM½cÐÚÚºO ªþn˜©;Ùö†‚K3e‚žªôh¶}&L Óƒ…Bü;‘”ÎO–ŽÎ8aÊ2²„/[ÅEªË¾U‚[Ÿ¶Å¶Óaæ$œ ÆB'*s²óÕê´}ŠlBÑX,ÊSYûîZú.#Ü>KK‹³l»L ¤}¥—ê ÏçPP„�h2ªœÇöUŸ+zpÝž¨'ÿœ§†ôé":ö¹ \~Ó¿·n è§øIFÅŽ œxö!úêò–¯ûLìüÃu ���fEM\‘$±è§—U¤_ôãŠ7{}çXT%�ªtÿ™ø`‘@ø�ûèàO*š���8`ÆfÒ©Æ\ªžè€ý2<n¬ŒI#a‹­¼@¡ë_®psÈ_Q|~SB âgŸ%þ¹xþ.—4×öâ€fO ŠR\~Hÿ–jÈD&p Å+¡ûNèÈ"1‚¹ÜXº)s’ð!ß„n<ªoue5¸&å7¤BAÍR;kWÚð¢Õ}úô)·R0´}i±Mˆ`"†P`c˜ Ä„Ù„í2וóJ³Í3‘­£Ê¡Æö¡ˆ‡Lt¤zm_Ú2ªçܹs} +o˜Ðy&„˜8)<fýìì(õÔ¦‰õõS¾mæÞÒ RjéG¥ÛI½˜§ëëËOóž»P#Ñy´ìö–÷òta*—µyyeÙµ—Ú½}®²®ŸÐEÉÄ]áô0EY(šŠlLeŽ7V‡9î˜pÆŽáwÜQнÂã ³zß­~ÇŸ0mY8_˜@HåLðf"9s’ðÈ;¡; ›âsÕÖk'Kçe ™˜Jç« …´Œ ôÂm•àÎÚ*TæÌ™3¥(,kŽT¶ŽX€«ãÄAoSøÝ=1Bž»… 0éö ,‹Ãß  Q±"„Œu¶ýTˆxÆüÔˆ}*Ò!âêúF;���€ñ˜Ð ÓE‚ *§ŸH$AO•�¨Òý'Hý5JüSÛL‡œ„?�P OüÀñ%ÝçüqË'Ñ|BD€C!­x2»¶(ƒ6�GÂqfm,ZŠ{Òj±_yWõÈ1GvKB™¥ž›J34†\ tƒÈ„ &èÑò&$°ö†Î2¡#K8€m©„„9†˜KŠ #Ì•Ä Oì&—êð7¨þÆ”ÒOùPr²H%xè”bSëJãÔsóñAUÛU³Í^�8BÁƒÚfâ%se1Q„9™ Q•›P¸/BW›¯eµÌMÇ„)ªÛÄ76Ý0áˆ9þ„ÛŠÂãÓ/ÐH½»ÏÒR»pZ.]wÊ—Õ•&¥Æ,Lž-Þe©™ }Ì…Ç>¯¬®¸öòRéÂT4¢¬?—ØïÔ,~«Â”Y&€1‡µM¢íÛXh2I1ÜÇ¡;§ví{bºøû¦2‹ÓŒU­OØ÷Ì܈l}&Ð ÷i,` E>æH¤ý4 Ç1Î÷˜‡íö7éSWº¤y‘hZø� û©œ<Ãc9Æ�,8¡ØfÀÇEŸk„<‘èg¨à'­Y×ëä@UqêOä���àjÒà&qR 1÷0§ŸZPû¥þ%þÁõŽ�`JâÜ €E!uÎ¥ûœ¿6`œïÖ��LNïæPÕàU!ôIÍ1¦*X—–¢ ä^câšP\¸zŒo䩯äHŠVÂTA&h— ]?ÌÄ\~„¦™È'Tî\X\Òç#áOžÖkÙ;Ôt‹tdy»¥KMYGcKÝvWͳ`r@ )Ö.àX;bÁJ,„ ÷O(´°”J¡p(t€‰SI…N8¡ÐȦÅëÛd".¹%™Ø'‡Tﯤ\6œž/“Ï·óÅD^&¦RʰF+wb*î;6¶Îе(nó~°vIºù„b an5“¶Ãê Åm½ó´ÕwLìøÆÂ;ÞqÛ¶„ç£Smcèš~ת¶+Lg甉ÛbG®iöAñõb“®¿Ê‰È¦‡Ôƒ?û]Ϥû§’ðgÄ‹€}¿!Âÿ6è:Úì_(89�À�Á‰%­>¹è§RðS,<TðSñ=ˆ¡Òжí©m?���ÀØTÄÃ0'.‘Ö=4‰€b¡Oßô$-šŠÝ¦ÿÄÍw�óÂ�˜œaO qO�æšiD?£Nêx~R1ç€Ãf`p(Mû¾zù@ €yeˆãÂÈA¨ÔJ$=qË/r÷ñ÷¬¨ý3d@9ñ7•ò”U�LB(âðŽB6uT­±ïSÙΤ´ª.&÷J™a)髯o%*V=è_'ð¨šnK¼&˜¯rk1L€—£öÿ¸‚ˆ0mšóO&®š»‘råAJ‚óÓôw{øá¶B²ì\“³Tß!Mòƒš&}Åýò©¥ E_á>J’¡d¼?‡í ÁTQåò×Y÷ÿ¯Ó„auõV‰RLÌSµ}ñ¼Xh:;ÙüXp¯7Léî—ºö†)íâ2ã|7SøSUǰõW †¯³îó¨öÇe÷%ü‰3Æ9®HÙç�¦$æ„“«æ#ú‰ËŒX®Oì– Ö=Ð¾Š¯¢���˜†:ñLÜoŽÿN‚å«D@ùÍ™ /ú ö"#‹ëÇÿÄí·u,�`(éÄ"��€ù r€(�UuDë;§ù\Ç0ÀhÆœ­xr(ÄÜü lÅòá ¾)xÒÞòº?#¡O;{u»J”øtN$”–±uÇm1±FõSk5%«·XÊ»»ôßIêßêªz{ëWŠ4²¢Í4íå²Ïè6zõ)˜÷:²[¾ƒƒþuŸ8íÑ0×—´x¢N.6¾AjªpŸöŽÉ P¤7T‡Qå‡MËäÎA ~”msòhz£‘ßALKQXˆ€šÙ†J€dÂsš Þý®°ÅÝŒMò){Ùzv÷öÜ^‘Öª<¿­F@øéÈíŒqöK(´ ubNì¬TunÅ £„ëÏßXü£tpJ fï¡£Ñ8"¥açg•`(<ßMg¯8%Y|nO" ÛnÝ÷d˜¸ª®N;XU• ÷å0FíÛiꈧûýï†ß)~¯+®©«Öïƒ^8YŒü=Ä<ù2ã‹~ú?Å ë?Q½a]Ų½v§Õmtõ_���€qð÷WBãa÷[‹ùIÞŽE@eÿ'�N?¶¬M›TüSúÓˆöa@øpâØGïž?,<½ñ`ë?ï?·µž��°P¤©%2OÓªA©Ôõë˜ö\8Ò­C¢+øÁønê»»»þÝ—)ðÃTUá2Ö.ïÎRˆ ÂeK7•$o³¹”ëÌ^nÇ/£W(L°eûÒd¥½M÷Ó”Âl¯ëÒ½BØ ‘J+°oö¶Í?µV°»BÄ28ÀSfÅÂÛn›_Š7¶+G•8$®;‡T † ^ªê‹·µY•òýßu]ŸúǶ=?»öövÝææ¦ß÷«Ë«ýçDCŽ?Í¢­*ß-î=Ú¶©þÞþ(Å>®<-zZ®ìïNZHÔ¶Š¶û: Ü€ð§nLâ²R‡ëVGœ"OÛU•>OÓ$Àév»}n9á÷+\Ç0AŒÕ§ï©ÐòaZ0ÕŠ|”{UçRüwÕç¸mu¦p^¸¡ˆÆ®ÚÂRØÅ"¹° áõ%l£^–"­nÙ*QP¼=á¾³éáq—ªõ‡T ~F‰F Ãivý¶r†¥{Ó5?íÔ¹X¥®O,ï³4ÒÁâ¶? 'vØI«æ¹ E?‘àçÌé5÷ÀÝ=wsgϬ»••¥©¯õU[pp÷M����ÆGqÏÖÖŽ»~ã¶»ôì5÷øã—Ü›v³#ï—bsÿ)þq®ïáÏ2º/„>à ˜_þ�ÀX¤tøáØl“žÛþ4²©X]‹ÊÝd-$ 7€ùaØÓæåç4Kû‡ÎúKótIùÝžnm½6¸fñw\¿~Ýíììø3¥ù9sæŒ71މB¡Ž–ÝÚÚò¯íím?Mˬ¬¬¸ÕÕU?8o„bÕ¡ò¶¬‰T^Ëê¥zJq€ÄIiÇo®¤—�"[~okÛ·YŸÖÚŠk-/Ý‘¸!éí/ØÅ¶Mj‹ÞCaÂÀ1 „ z7á@•€ daP\6ü.?íÀf($Pµÿ$ðév÷¼ø'/£»îæÍîÉ'Ÿô§Ï½ïuwœ½ÃïßV³ášÅS…{^|¥ew³åº…p«•½ú… ¡ðÇoCÐ&­×ŸÙzuìMĶ×~³ò펓kÎïøO»ÏBÁÎ ¹hÙ±öî:½óÆ–»}û¶?ÇýyšÍ×þÑ6ž={¶¯Ø>2PUûíܼuë–ÿ¼¶¶æ¿#±ÀÇxšW•ÊÌ„JqýUë³w;ϵÿýŠDsF';¶¶óï³íûÙµBíW=Úþ0X•FëÜØØ(÷­‰ Mô¤W,v%¤±}¤ö¨l(À²ãlÇ©O Y±oê>[;Âïi•اNü3¬¾x{õYûõÆþš u >wîœßÆd¯ªƒ5Åýb� –:Á]0¿Êµ'®c”èçô©U÷Š—¿À=üÐE���pÜQŒ¿ººì_ï9ï^õŠç»Ç¾tÉ}âS_p7omˆ}êÄ?ÅVÅüÜü§W¦VÚO?�„?�'ˆtš›[� ŒÝ¨¯?÷cYMÕç*jnª—ó’êÒ¾@õ`A_‘¤º5õ$•kž<O áÓ¤Ô¤þ�8îìgÀ�jˆŸtZ4|2Þ>©wké{~¾§ê-ç\ŸÃ† tkÀX/þèïk×®ùã .¸S§N¹ØÆÐ50¯g«ëêÕ«^`Ëi�]"€pû´œÄFhy[·~[%hÐrwÜq‡[__/…;æ {SJ[³“­sÏ‹ ÁÁÖ¦k/µ]ëÌY×\[uI»åAi±ý²ÝÂÆïƒt@d;’±ãˆm»½lš‰ª– Åú[ëÔ>Ð2Zoìz¿ð<¨3èh9‰KlBw;oºÝ¤o™½Ž²=ڟ׮^qÏ=ûœÜyá®rßy‡ ·ç?;{Zv3[É-—4ö\«ÑÌ>/;·—ƒ$wQš79�ÕFY]ÄÜ1g©ÙvMµagÛ·¦„Ú9‹‡±¥?—Ónåï“çv\KעжX9¹Q™ƒ‰Lìxzá‰{Š»¢&˜ ¿zé¿|ù²eØwDuIô¢ïˆ^ññŒ«°óCu¨Na./VOø&’ɯy;Í1É^jwè¨î»Ð¡ËÄ&&”©i;ÙéVïÚ`õ©Öv½›Ë޶+(…"(Í·”e& ¿3Uß«°žª}kßY-¯6ÄßM…¾½I~þ…Î;¡ ̾¯ùS´=!KvmÛhëÒò&¶´åÃuXÙØéG/];Ÿ}öY÷ÜsÏùóLû7XÞyçî%/y‰»pþüо`Þæxr$Ƙâ> ñâÉ!­œÖ/Ðü»_ôSž£#D?7¿ðù÷»×½öeœ_���p¢yø¡{ÜCÞí>ô—í>ÿ…'Õ )þ)côHüã Å=ÅßUŽ2 óÂ��8¶ØÀšÝ”®&’×$£Ä?Ãn°%.¾uÜïð£ô¡u¤I´ö¤: ì¿Ï× A.‰Ê ¿!8POR+[*iµšÙ ú¥ê��8ÙŒ ^ˆ>þrÝb°?-Äaª!ØÀ³7м“K1®äO}êS~Úë_ÿz/À ß…¹ÿ(ÎP=§OŸö‡Ç{Ì~øá‡Ý=÷Üãƒlß×ܼyÓ—×úåŠråÊ?]‚•óÅ@µÊK|ÔT»¼Î"[Xìu÷ÜÖö¦K:]·ž­wgcÓ]yü+®ÑMÝÚóîwËw]pÝ3ëþÆW.è–&Hf„dB¢Ð…(tð©:Ù £íÏСE˙ȩÎ¥<’Ñ9`øÚ=Iü¤—¹«„ûÝÚ:Ø›Šö£ö©ÄÚ÷ª+lK˜’MŽ<Öþ\‘ ´ :¦O?õ”»qýºwô9uêŒ[_[ÏŽÅZ7eÇÀm¹Ýî®ÛÚÝr{é5×h_Ê–Ýp¤‘Õ·ž“;³b§½ a©½ìÚÍ,nj"‹´k»¡ÑI]«“Çp VI¤så†OçÖ8µîk+έ¶\Ú ˜ KscHü%!‹¹Ì4yŒæ%JY}æ4£óÔ;YUÄwÚÚ‡›[ù9­ýoÎ<ñù·Á•¢ P´aÂãrLÒ±Õñ±së®»îòß cØ„çR,üѲÏ<óŒ?Olûô·¶CÛc¹Pc‚K5f)þ¼¨¬•Ÿ§&ÜS™P裿Mžû±`ÍÚ~Â Mä§rªWó$TÑþ½ûî»}ûúLðcâ•Ó9m×sª2!Õ0\xÌìz—ÂeLäd¯R0Öj{[(ÊÙݱTxiyý,ÛÜ^Ê…U[ùyiÎi¡˜JËJ(©vH¤£k_è8Š´l¡àèÒ¥Kîƒü ûÜç>ç¯Ù&ü±ùÏþóýõs5«·×g©�•É*!PiZ>¦ �鿳œ†c‰~Šxæ«^þ|÷ªW¼À���@ÞGøº¯}™[^YvŸüÔ}?9ëU'þ1|¹Š”_� Â��86„WvÓ×nèW'±K‹T[½©ÉŸ´ {<. —Hòˆ3œß·¼ žê/¦U¬ÎžxÒׇ¶ƒe‡1XÇèe»Ýüæ¹=õ, ��€™?ïÆ Õ9ÃØ`w(RPÌ`¬èwÍÒ~…Îq=&ü±x-oB˜·:âeÍÁD/Œ·taªSà–É»™H¼R¤xÒ~@½ÛqÍ4ÿ-vË]×n¶\º'Ç‘l{6·]w}9+ÙÌ—Ðúsc¤’ð—Ûb¦ÐÙ$Üw±8 Æâ.s )]e’Ñi‡lyj„©Ð4˜ˆµ;^¶Q žzn-ýÛ¡÷Þ9»’tËãrãÆuwýÚ5ÿ·ÄCgÏœõm—okGN?Ûnckà eºÉ·ÚºœÅl·ü>ÞÝ=åno4]g7”­®¬¹3kg]Ò.ÒRe¯F¨3—ãO7ÍåãreÚÉ¶çæ†ëngÇ3«£áãØ×]ʶ«£coçTûÅN=ÞÙ¦pgÔKÛ¡sÚ-6Mb¡¤xŠQõišÄ:&Ò‘ E/Ÿ*©\èœ4w&KÛ‹b,}ž^&´Ò:íûb)¯Twœ/>OLÔeéø,“µÍ¶Ñœ¢ì˜š ÏÚ`îE&Pñ•B€gÂ?k£þÖq÷¢»BX Îìºa×’0í–m¯µCý­Cç‰>›ðGíRýÚž0e™-k×%aõÇ"Fû.Œó=³sľWæ’dóãta¶>/Ëþ;söŒk'm·³»ãÏa)¶L hb_Çzî¤k•í§¸mæ>d)ÜL€e뎌L ©uHè#ÁÏG?úQ÷ùÏÞo—–Óq3QÊJX¤}¦U3±Îø"ÔÁß”iœV¦]ûÎrûq°gÑœ~ý���� ¢Ô_Û[Û¹óëŽ'þqâýa®?á<€9á��ìF¿nþÆAu¤IOÚão÷t9~J’V ÆsìIÒ¨dYyµðÇõµ$þ«‡nlÛ ZL7ªwg…¸=õŸ®~iiÏßèo4'��àˆIÓÁµr<­'º E8¡»†~WõÒïšÜb^ö²—ùò–æ+vŰkCkÙ½èE})ˆÂôW¡#JèX#!‚ÜO48­:Ì©¦LÉ#·ŠÈùFŽ.ÍÜðÅ/sïC¹nv£«éE Û®+·Ã¥â÷ÙߨêúT_¹P@é§ò{VÖ˜ØÁÚÛ¿?{ŸÃm²Á{›:ÿT:ÅDŸµßÍåHBFXú3íÇðø™0AûÆ o²yÚr§1‘Š–‰…Z±p¨tké¦åþ–‹‰~t<äÈ¢×òòJà8’ :®ß¼ž Z7\ke×5Û=1™rmæu®¯rKÍe×n©­¢SÕÎEÝLôéØŠã±{ó–kdû!ÙZÍ8ãºË-/¼ØÙÙ-„!ݾý©c`ûMõ´Ú-/ŽQÝÍèØj鳄Úw¡ÎjB'mèxjž¶[ËIÌ¢ýsß}÷ùzÃãin?j‡œ\”¶ÎD'Z^u«‰2„ÚhâÚÙ¹nq½Ž«æ}á _ðóõ=Ó17 µÅD5&’˜Ä\µT¿Î--£ò¶¯ÔNkƒÚ¥éªGç£Ú-G! Ùù¢¶ËÅHe-5ŸÊ…ŽC¡«¥´¿UN˨=æd‚$µ!ÄØ÷,^…ߪïf<-þ:ÅßÅP°§v=õÔSey·âÜõ×ûDU:¯´¿´=j¿9Z—Rjû”gquLµßTÏôYnPZζ9s™°Je?þñ»|ä#ý¬O˨õé\|Á ^àÏ>ð¾ã0Ìèg6 °?Æï‹Áñ£Êí'­8'F‰~Μ^óé½���Náï%b Íë^ûR÷̳×Ü›n¨øg uW:0×Xd©�€cƒnìÚ ‚=¹^…Ý@öA\³•?IïòÔ »ÝÜ’^4dußlø÷õÂ-¿§AÀ"õ ªÿôj fºqoW=­v§ ¶â›íÞ .­ô­5CDC6Ø™ì%CŸì��˜ešŒ`PÛ¥ÕƒhUn5¡è'›À!HXš£ø71îèo4hÐÚ„*á2±ëŒ¹÷ ­/\Æ~ã»ÝÜÕÅ<ü¿>Œ(]ºùôF«,­eƒìqlm¹®DZ0‹ TNn2áà·¥ ÆÍÑÚVÄñ„ýö[\nwÕ€|LônNB›RœZ­ª-–ÈB&†0–¸-ñò=W'‰"v²ã¸év³u¯­¯¹Ó§N»3gNçb(«ná°“í×ÍíMwãÖ wùêåìĹåÜRÇ­zíSÖþÍÔßlÜÜØõ®: Í.œßói·ò=ïúÞ5ݧCÊŸ9t¬][Ý=·“vÜJ³¹J˧Ý=·µ¹ån±®K''у9G…ûÃÄ/&Ž—xBeÍùEÓìû`ó*ÑZ¼ÿê¾cªÏ\qBW+½«^s¸²T\¡JxnÙ<sݱ2a ¸Ð•ËÖoâÕo„õ˜G/KmeçŒÞͱKª˜Q±uø½²¶©~íÓðz¦7 뵿ËþJ 4žãñra»F§ºy¡£–ö›ÔîÞn)ú2‘˜öŸm“ÊësÕ1 ÖÂ}î'XÅ×Êp_…ÇÜαÐÑÉŽcxIèXlmu/+¯ïž£�ÄçQZïöcÓB·Ÿ¾éÈÊ(Åç�LCÊ¥„dàç²êA\€z+}ÕËqïÿÀ'ó*Iœ~<iÚçú3àâSÌø»ê3À‚ð��Ž –òÁê0g …wËJ1P jhúÖv>à#Úü[YvÖx?—~ù­Mß5–ºà ðÛ¿“§n6p#ìIüQé7ò!§àó`6X^^ê{ò��@ô~Ç\-ª©Ã1½_ pl Ùá`t˜ÆGƒÛ&`°y&°°el`ÙDÇá vèT!ÂTA6ßÌå˜!ç µé™gž)ù3fùovÃuŠ4_–5´Lûl»›·nºn¶ür;û=^ÍÓƒùõuÒÜE¦þä¿ëI)2‰ØÃ6VÅ�uiÀ&ÄõŃýUBÐ…(x„mÔ¾2Ç 8%RØ®\ô”Ÿ&*²»»ç¶wòÔTš/÷—óçιõSkYÜ´”;Hîv\ÓçK¶?·µÏ7n¸ç®>ëv:›îvgÅ­ÎE_{; wýÊm·³•ÅbJ·¶î$ûé$v~¸üX»¥ÛHý¼$IýMÉNöy#ÛÜîúŠ;{÷Ýníìé,ÐjgëÙsiv<·;¾ñá¹d"µ_±žÞ-e•m·9Ú˜[‹ÞÍm't÷Ñrr²9sæL ·ýöZl­ézÉaÅÊV‰vT§¾GO?ý´wQ2çÍ“›Ž9K™#uر4'KÝ«c+GM—0϶ÙÚomÐt«_ó$F1÷ï\ã\)x²TeVÖÒÙ|ûžY»TFûÔDBæ¦é¶Žð6!¡ê’ƒµGÂ+•·ôkæTeâ+•³k‘wý*„]v1’Ž…]kÂõV}Ïl_…bvU‰uTVç€;¡k“ÚÚ–JËÎm³¦Yª5;¶¡PMÓåÖ£zµÕcéôÂÔŒáþ×r*+Ç'ÕýÄO”ûLnCryÒto:Gµ ^Pº¤ŽaØg7Äí‡þPCZãÜ;àèˆ~ú„>áßÅyúÔª{ä¡{�ÀT¤)z 8ôÇeÑ®<tÑ}â“_Èîlæ±”ú‰…øÇ¹txʯ!®?eº/€�á��l€-艧릵në&p«¸a/:Ùç[·ngƒ?ùÓȬÙÜÚñïíBij»×)ŸÎï÷fgrÍVþtðµ×}¹ÓÙàÌòÒr¹~KáÐôõ$å€cú¬t#M¥fX+Û5.ÿ¤wv3¾Haé6Ì Énàkš øØ@ZÞ>×÷ÙnHZ]Z^7ñ{N]?X¦ÉüÉp��0Cê?ÃÄ$}˧iŸHÇ–6àoÂaøÖÀ¼ýöÅ.±c…ÕiË‹PРØÀaÚ Øà» l}&æ(Ý*’`o”ŸÉ&&ííåñ©òµ”¬ØÖ"•U.Ê—ó÷¿LDüÖ‡‚R„Ûƒ0V°ø!vˆ©:Vu‚¢ð8ÄŽ3ñºÃýh®2ZÖUˤ}‚°ÜQ)wÉSC)éÊʪ[]]qwœ»#û{¹+øå»ù>Sü¨¸¯Ñjx·ž­í=·wmÇÝÜJœôÝNânߨõïf(ÚëêVaï®a~(ì8ê½áŠcœ«YÝíÓëþfäòÙÓnùÔºK³ã™ì6ÜÞòŠo§‚–Šó*z[š[a)äD(Ì–ZNMÛÝÙõuª.}öi±V×ú„"ÂÎ[¥š³õíuöÊãa1²êVaš,%ižG¡ø'<>¡« qô®6›ˆÆbQsž±ï®?³¶-­æÛ —¾ƒ–âÊÒé=>ÏÃ8×ÒÅ…ßkÛR{©\x¾Ûçðo­ßÊØ¾Õg¼˜kN³Û±³ýn.¦¶¡{’ÕW·ÃvÛú­½ÛþËÚþP¿ÁÚ£òvìÌ‘ËD‹v^éoûð:iß'ÛgöV&bê}G{éýB‘¦Ö©tŒIX&Á9<Ù6iþÅ‹‹Ônu·èC|›Æúm“qΧ@” þÎÞxà¢�ư~Qšt'zþàȈÎÓ>7LÿJ‡G=xà÷ÉO}1?‡Ò¼ž¸àï|ÂpúÃð��Ž=æðci,ô¤ªž>Ö éõõSn5äJŸpãÆM·±µÝ(^u,¼~k# >݃ÐõrÔi/i@*»Ñî48Õr«ÙåÝ÷ì³Ïø“ [ÜJV‡nYk@D7öuÃz=»9­Î‰OÅ ·œ$x.p'kß­Mwvõ”{衇Üwè&úø=t ܸqÝmnlö=9¬m¿nªÛ“ÍO>ù¤oƒ ©} gí³=a,l D7óïºë®r°£'¨êŒ9� ��àÆ\¨Â (˜çßòt—~ ÙžšáÃèÐýÂR$Ù»ŽÏ;çûBG“*K˜ÌD3–òK¿Å–J(gØ�¼9™¨ŒÜ*lpßÄVÞÖßH,õQopÞÿ~"Û®ü©µ¤ÈˆÖ/|*A‚‡M¨a‚�í"…Û§_ ZÌQÐ;"¸ë ßm¾Å+Úæ$bû_XÛÂ6ø¸*‹ml9í ô‡î†¡;PØÛNK´Sˆ¦uܶÛÍRŒÑLrѶ-/1¸b¢s;ç¼3T ¹-·¹½•o{·é:;Ùñn­”N2U¦rŸ¸þ”©KËKîλïöŸ%¹÷t´¿/8ÒyÖÎöÉé³gJg /*K,mmê(‹ÙBQšD>æ ¤ø¶L3çì<køôq^xÕl”â´p_Ú9 P¡Ý„?jçwÞéëVì('œKL"Q†ÞëöMøÝÒ¹`eφ鸮^½ê¿C:¶MæøãÅ*EûBç­p„ß ûžZ;þá¹3Ê +÷ý_ìýY°%Kv%†íˆ8ç¼7ç|SÕ«¹@¡i€Á�ˆ@7¤6µ™d2µþÈš5ô#é—4R­ÕÒW³?hm2ÊŒØ"Ml6›è&€F]kjxõêMùò½œ3ï|ïÃåk»ï8q¦;ß›{¥<÷DxxxxLÛ÷^¾¶gÌs»ÐnQËêÄx× ú×nع&äX±oÜØþÑ£G…Ôarß…m"“µ‚ka¹”ƒòP)’m±ìÆõ¬¤ÃdB½ð8“ì¦ë¼\®©ô$ý,÷2ÖAýI”—BRH*“±úêµ×^ãm>÷¹ÏÙñ×3¾ÆÂkäÛNbˆâž© Å„(Û*”oÉT¨ý„›¼Œ+‡ûn• …bzøw¼ÉÿVâ"£DEø­PLŠËôC2™IæGE¥Týa¢̱¨¤î£$ Å%ƒ …Bqå!3ÁÅéŽsh×9¸‘MÀfgtÊ©¾[¶\·O/¶v™�ÔqñÚÞÞæú\` -Çj”Z't·×¥V×͘ÞkRé7Œ dù½Øš~FüiÙ�Q/Í1±ÝI¼Û¢Ze‰©ŽÓ˜læ³vÜLv·L‚—XÅ#|Ð7ägÑJP@Ú Î{”U‚B¡P(†âÞCß3A ¬ª<ÔoÊe«0ÂߨGàZÔ6$-Ä“|#Ó ¡¶L„%±A$]O¨ˆ"Ajygc;šÍGð¨×œïÉ8Ij.cˆ,’¦}§ƒ�ÃÇ‘82räÕA> üRQ¸N³àb1E–eBå”QñBüÉUŠ¢¢MÑÇ™œQy Ï[™¸!vŽ<¤ ås^Þ¯ì ý<cfø{aa‘•~¬ÅeЯqdë3ØObëí†ušmÌÓÊâ5êlô¨^›¥íý]&t»¾¶6Ý|ƒõY[ß<-ÍͳšcFÇ(ºñjN Þt¬-Éd˜F•Gº©S$¹–™Šq-¡&ÈHÑð~,£–®{I/Ì»`¢ÌR†¤¸’k7$^…ßr͇¤ Þ…=w’ ä ³$å–È#6§œ‹òùÍÏOï!ÃH*,!•U…¤_d{!ú#P£)#\&×ú@ê/+QÉr)#É;¢<*„ôMØoe Á°?$…ú®œVlBbOU_‡å�y&•‰R5{`òCxܲ>$šÉs¯L, ‰<’ªLžÃå¶…ç§ü7ÊãºB?€<„‰ þÈóëAÃ'Š£P£¿ˆ©ßY¡à¿Báa¥YTU¬j© –›üÙ, •¥R(Š£Á8•OFJ ÅeB4ÜKm0ÅdXAªl¾dÜuãÆˆ&Sú1d*UªÒy…W^¶^c#Š %þ( …â•‚B˜Q‡°›ºÂé5ï€îøYçPþaG½*Ëì\™½ Gs³‰€Ly`bye…p8}‡ýnwÚLüa‡¹ÝvoŸëqA””!°YÀ+„i¦AÞ™ÝpÂ#p€ ƒ ªÐR‚É6€hŒ 'ù¬ädâÀ“B¡P('‘òö%‚Jy!" x ”?ÊitÂ:ø½oƒÏ¡N˜ZT–É{9 ¦ ©ïÖr^þY0.&¼×#ç»â6b»Ù4#õp»"/€îÿq$Á±HP25L.‘¤1y@=LOVî·ªþ †u²òö¥}Da%$5„Ûe%!Q�‘¾++ý„ûÉ’ «ÁD†%Š­=W)<.Û4¸&š¶²:u{›ØþŠçhyÆÚm7èúJ›SÃ"—ëú˜û=òõà\ÏÕ›¶–àú‹‚¹×hä)+ûtÛö<wƒsi\à7’‚žÔ—I+f0¨\VOÉŠ¦N©�q&Ї$Bòç0TÌ‘´ue"†|‡çD78¯¡"VH&)ŪÈzr¿ˆ²–܇¨ ÷ŸÜÃRõ‚\Om*Ùʤ¯aßåeB¢—¶‡iûÊí.¤†3¹ŠÚ-d¿ü`½¤ “:å[È4r¼ø©Jˆ‚rß„ªQås¶ä^”Û#) ÃñÂ0òܰþ”z¤?¾+Ÿ‡2á'lç°}ITºÐ¿B4*3¹ÿFŠœ_¡8Œ ™AµŸrŠ/y®7›±ä¾SA”Û …âøˆÎème¶~êîcã–ELüÑ{Zq!—gä{åVš|ªµ«ŒrWæèT¯™™FFî•R¶·|…Uª?ÕmP¥Åå„ …Bqe Îu[ÒÀ U <àƒ¿——hq³çÜ`ฤÙe‡¶»M}†×½ƒ|¾^£¤æf‘6(Š\ÐMÒZ,ZsêU:6H`#+„9Þ5Š$H€ÿlü¨]oÓ;Å Í7fh6iÐLÃpªf_C’ 2Ç(�Q}Qý‘�™Ì´…ÃÛô}PRfÚË,kPV޳Ð߉ ¹“@¡P¼ª(ÞÿU)§ä·ŠEACˆ'BÒ UM¤®²òD˜ÚJ>B�’ t˜Z(ÜVÞ÷Õz—Ö+3 ‹$1††åÒ´òXË)Žäïr*'I$ëËuU)½„ê#iZ=«8 ô—ëƒöRO) *�*çÍúð}Ëq†ª#¬êç>=VŠÜ{$MÝìÀ>Ïìƒ"¢ Õ‚$T‹­­4Ó¤9k»ugmô¥½XzÙ Ä~ÒžWsŒ¨za4óÔ–'UúEbPÄMp ,ÿ.Ÿ9Îð˜GaœÂd™Øž?ù„D ª2¡¢VH2•˜,&ë˩ڀð~À¶ ë“¿aÓʲªô\Uä“òßò[Ôk互çP&ÍH„é¬dÙ0R¿ì/­¸ga ‘(L+&ÛOk‡}.¿ËÏ¿ad¿ð»¼<DYI¬êžŸ´­UñŠBq!P¶3('ðPù^2Eµ·¹ ¶tÛœ×0[GR ÅÉâìneÃDŸï}ÿ;ôgö§ôüé3GÀ%¯0ªw·â¢Â³2Œõá/XŸûoþÖߦ¯|å«Á[$ÿ›(®"ŽáÖ ‰>~Ô’;¼„OYõ‡×“Ÿkc"M÷¥¸ÔPâB¡¸xÐ1ˆâˆ�Á3µ{Öùëfææ3iggf9ÍH5˜‰=gæÅ\×Öq\KhyaÑ®›s8©á„÷Ž{Xƒ¨NÃ{L”;±M‚kµ;´4xv=ö[f× ½¬¿äa<ãܶ=±ûšmºtÓÞ ØÊ<sÁlèpv-œâ2#úÚµk<K„,Gy¨ýìíîfé2Pvee…Û&A›*âO­¦ÄÅE^‡ Å•Æf¼‡¤€tw¦”‘@u¨XQx.±ÃzàvyÿÓιÎx¼•Ó •Z¶W„ª�!Ù L U…²ŠG™Ð3 áúqê#åuá¹âH1-“)øñç'e›ŽI\ÆWÚe×P¿c öý1 1ˆë´¦#ûþBvOF¥9×ÆÙ›cÛšTy/ŒëÃi1ŒlUÞOHàF®)ÃÊ×^™¼S¾>«ê,·µœ:KÊ— 2R¾¼ý°ë¼ü·¨×HûÊÏ�ç[ìä°\UûG]ÃUÄ:é³Q7ùžô¾ û|TÓ^cåó2¬ÞQíªú{Xù*`|Ž_ŠÓ€™fÜnÕ~äo÷åÈB²NÝc …b2x{Ä~ÿ{ߥÿòŸüôƒ¿ú.µ[ŽÔf9‡ÊÝI=ÅŽ3¹KýD§8ÏÆÓ@üiX?õý÷Þ§÷ßÿ÷ék?ûsœ´N¡˜™šU0Ø•~ƪþTÕ«ÏŇ …Bqe ©�YÇ:Ý›í‹áAl=uŸ"`;¸˜iÔ¨)slkÒÒŒ˜\bTs ƒÈàçL­NBß)þ­z“iÄÁ'— áÒ.ÕÖôêØ§ ³•¹¦TÌÈ–”d ¡oÐøõôG[‡‡Ü&ür\gؾ.I ¦Š?Š‹½ Åd¨Rý¨R- Ë–ýÂÑUïÅp»©qL_j9ͰÀùd�žø"ë|%Y;d{Õ£`–ÉÇ+Òdª5yC²ÜÌ”xq4Ðn_ù@Žgȳ?*Ì ú1;ÏY iuÌ)p|†%ÂS&ú¸29mÇõMäÒƒeÇ–ƒL8àŸ!J¯ªÈ“ÉMÖVS> S<Âh ã¤ì²21k±gÔõ^nWùÞ*RÊ„šquÊò*âÑ02OUÃîÛìZ÷d›2­Lüµ¯i>cÊ$¦aD¦2±ª¼~Ø~ÊÏÀauKùª:ª0jûò¹uÎÃïpûð]EÆ:6Nè\*^LzÅ„j?† •Õ~D-H¡P(&‡³"¿ñ¿Oßý‹?§vû²‰éåEΡMǃØÖG­KI#§ñ“Æ#(Zÿô÷¿ûúýßÿ}&þ”i_™]8°­â*áX˜Q>mi¨úƒq¹(ýLJâ¾+JüQ( Å•Hß'”¾HýŸjI ?Ø{Uê.n ¨Ãä¤,€`8xʺÿ°Ýò2“¿g½*Ì€•¿ÑÞY¤+ó³™E („,—t`ùlfR¼âˆt$¤P(. B¥—Q6A˜ŽGoÊÊÇ *Ÿh0úˆ0‚K‰˜e… J©­&cþä¿CåCôóPϘßëÀñOÜEü¡2;,`r§žØZ°³ffåòÔ*HåJQ"ôr¹·ÂÞ •Ëû-'Q0EâQ!•W¡\åÏAwdÅÑŽÄQ¯ÕòßÓ¢Š8Wµ\ÞUÊ?“’Ķ.§á+ï³JÝg¨¼¾Š¨"ËÂ~Ã-á6£p–ã˜*Ô¤ûŸ„øsœíÃsUngùœˆ¢Î??ÃÕU¯8k˜œ¸3,Í—ûÊÉ­îË¿³€¦°Š«‚ô÷s4rÓ€ c nooQ\é+?û3Ôé´í;ñ÷.uÄ$ø°ªÉ-ÎѶ¢®{r}äí^ž¤¹‰”™Ö“ôËqˆ?ÓZÍGGDÞæˆœõ^w²÷ŒS ['Ÿ˜×uÇ Ý?0Ùc"x¢Ovq¦•;˜¦FCuÿí&¢Ä57Aöàà€ææHñêá8ÏÍŒÔãgÝTªþÈÄ `"?ipßIº/^¯c Åå‚ …BqePØyâ ˆ?¼Ã/Š aœŠ?…@O`ìùÝ3´‹¦–Ž/íˆ7Aª±°u>”ï~|p¢;ÒÔ~âs `* …B1ø XÞYåô3B<!ÀJàXÊœ™X1Ó8ÄMeÙŒØ AÄ ʳ„ùˆC^QÞ„ìwؤ֧DÛk ÕUâ´Cå{D N{¤€sé^k²Ô#EGìE—7'СŽ0Õš,C¨L†¤ô*¢G¹«H=@ؾ2A¤jårÃpmß2©ñ"£œc¹väúõQynX×jµ¸,®%ž¬P¯“Bq!`*R{5 J@“ŒÍ …"Djß‹K‹ôÆ[oÑþÞ®}'n“19ñ'1ÃIµŽ|¾ÿBüqDLhŒð‰`¯åö#·qˆÝ6Ç!þ�“)þˆý#&acH*ã……Z[[£¹¹¹¬ý[[[´½½Ù)iß Ô5 ÊãÌâZ4ñg Ž×ì(ÜÖ’&OZMÓéëV(„ð“+ûQ6ù) EÓ§ûR(.:”ø£P(Š+Qþ‘´_“éÌ0%ñ'\áþFü9Út‚-"—Š£RfŸŽ2C‚LU]'©x ¯J?¯4¢1BeŒ[¯P(§677™üS÷àv»]p"âo8wA<À7~KÊK|RQœ7(8b°|‰%å¢FÅÿ\9S Öšˆ S®Ÿ×K£Ññ\WÿuC[?9¦¹Žq߀Hîl‹û÷ÊââbÁl\Üg(;¶øêê*H´°žìííñ}‰røºQ”0Q¯B¿¤™"îQ!„ AB2Â}+$!ŠÈ$Q©ª.éå¬PN“vQ HœÃÃÃCÚßßçëÀµµR|pmàzAâäúš·ep*§Ž)ž«r…÷|½KÿE …B1!<µ<Jé°µO~ô$v¬½Ôæoy³'i\©˜—ÙÀÎá6Áp{2•y’¬ØÒëuù ›,'¥ÚÛã‰-1 ’KÒ‰Ú)u‡6Þ$¶NHTßÝÝeû£ D)J¡ä¿òŸCIëã0œüszÄŸ*KùÞ_“ÂåñÈý 5Ãê¸Gi_I?Š£Áñ~Õ­`ü¦I÷•UªmÅ%€ …Bqå*ÿœ:ÊćÒßgí«; âBqì#+)Š3À/_¾dbÈpôˆ2 Ê$¢!Ê?€ ”ðsÕ(ö?Íèâf`Ó�&_Q’c,p„†T=ɲIqÜkÛ ù¤ Ü7 ×KðU-ÜcøˆjˆAeàžB=(‡íp/âoI/ 2 D™u©·Ø{uƧ¥Åvh—(…�DHGX:°ڎ缾«Hø qQ?T•Âu&4yVËlp¬Ç:\7øHš¯¥Å%R(ΕOÛ Ó|…åsµµ= Åô�IåéÓ§ö ÂO~é—¾N;ÛÛlS½ÿÎ{Y9ØH¶š‰èÚµkö½j˜Ð=Ê ýÊW¾ÂßÝn‡Þÿ©€2ýË$ÝYþ-öšØtü4¡í6Î:64èe•íÇùómœ=Y³ög—mP‡aKÀnÀc$%®Ñû•EVH02^„=Šmñ|‡=ÊdžQDœd6+ÊgyRŠ?8†ååe¶¡ P$v|h×ùË_æc¸ÿ>ÛRø;$Û‡ø;çïØúéw÷w©Ûëø¥ƒ……yNÑ%ã„íí ¯§r¿|õo¸6üàGïxÅ7NP(Ž“ϸ¡ag‚t_e§uPD¡¸ðPâB¡P(' 38Aæ¬ÜuQÕþ§„Æ5Ó |½dꦪ¬açàâÑ@=JR(“cò–(þÀщ�q½”öET#�8ÉᜄB„›:cSqÖ˜&ÕW¹|4¢®ˆ²iËUÛGÅÒ¹S°ÌªŽJë«U‹LŽø}š8îuÞC’®)$ yD¬)ûD¨»`îY º @uãÆ Fˆú‹(I`A‚¢úƒ þF iP—( IÃc6ó9<&ÅÙ@úçLÒË Ñ×�§Ö¨ødi7lPñ4ÎV˜:R¡( “{È=²jäoSü§…Bq$9&å(~üñÇ<Þr6PE‚†ú"ÆA/^¼ qBˆøyr’žcòNm-cd}ñX[ßfðØLÁÏjh2Òì¿7Þx#³1ö@Œa j¯ ¾`ÝÜܼ?nÑǹ­(’ ìÒžX›}†ñd¹Ñ(óÁx2ÑÑæÅóstâØ,h—(Ù íÇ2!Ú£_=zÄöVu;ò:QÆd„ŸAâSÛ]¢;wîpŽø“ÛvRo¨*$ Ÿ8oitÑÒ›).BÕ–î+[[ñÛD¹r¯ÚýŠK%þ(Š „…âB¡œÚ«<aΘøCÇ é-¦8òzË—.m‡ärO8Uœ@•€ ÅiÏ%8…<Pv^ÊlNQ�Ârâ,U;ô¢¢LÈ™U qe+–U‘]£1›N±§h‚2“à¨$QUẞL�A9 „ qÚ#°"d2Á&¼¿°^îMQlÊÊ.²=–£ å4²Q~‘@“$­X8k¹Ü'ÃúH ç ¹¦$Å®9X&AM™a/ä1¾›¶|¬#ÅéÁT<‘͸§´¨ú ¤ù*;OØYz2Š«ãØãž£ªÆ~ß}÷Ýl’C9µ§ÔͶ\Rcò &KÈ{´Ê»ë§?ý©ÿÛÚvµ„´·.­­SlŠŽØ~ásm±%'þ¿LüIýòIÒ„9€pþ£ýˆŽ‚gÏžñ~ãLµÈ©+eÇ•ÂîŒ3™‰1vy£Qg% a¤a!Æ‹}+ölÖú!çaﯤI ‰_ò7ή‘¬Ö1×êïýÞï‘}Êþ¿8†'Ožd$2!ô ƒœô!.*\qâÇ�¤PL‡Êû- egé¾h4©§*˜Ñ+RqÁ¡Ä…Bq¡Á,tëÜíÁ�ÆG.Šq8õk¤dì•NÊ{w9Ÿ‡o?ˆó»ÆEÊRCŠi!Žy0Hw¤žb@.œUä4¢y0\ H¡P\aœ¡M2fb£(Dy@äÛ¡8‚o™ý)Ád@œ°ü¿¨÷É4Š?fÄöfH™aÛÖžU9ÁÞÇaÚ£;ià>À=g½¤Ø¢¼ßqÏéGÞõX²Pù¾‘\.âf‡Gîs9 ¡n!{ˆŠ–/,,duÙÁ ÜÏ�ÖIJ2ü µ Iÿ‡2ƒ×…ºd9– ùëËõÕí¹·a-R(ÎB€ ß�cÓ|Ÿo@=o Å ãcŸÉ,•býîRu›¶¶¶¸V¥ñDh)#)¡tƒñÒÁþ!«Ù¸÷ê áĽÓâÝHüž å–« —óR¯ÚW$ƒ§k‡±)+sVä99ŠøsrV´rÐW™í ûê>/^¼¤$NXD+…зׯ¯s\äÃëF=¢l’ÎêÇ>ÃtWÅÉÆ¥(> ¢Ìc7•-Ü÷EãLáGN=¨¤Ðä|âna­¨î2é¢xÍ,)aÂNƒV®]§Å…ÅÌ®ËÞ ‘o¼(²F¤/­+ŠcêÎe1‘T¤ûr%%å—!ª¸ PâB¡¸ÁCßv0î0(ÑYÖŠIp6×I(ýX±ï‚!I—NSyëŠéPtÞxÉGÞ2S_f1¡¼ e¬n¯c,…BqT½Åð‡d=œ²B*€’ˆ8Xe™“tŸËfg é Tá}¨MzÁ0­C?š Žh‚uÕ×A¦tG“ï}¦:º/Òpݤ×qYMEf ‡÷„¨öÈŒgYl²ÔK~{¬!I¿Bž¨ó)OÊ!ÒOÝ}Љ!Å¢ijÔ1¨æƒ&8Èlf,“{÷¿ (.:Æ)ÿ9;]÷7¹Ùö¸&äzĵ‘zbXîS8ecSƒ¯F<O ×n6Y¨jºÉ–ËøHÍ …B1B¾)¾Ý@Lyýµ»ôîO~L»»;l}éK_¢ßý€STá=ùÚk÷8Õ~ðN‹¼¿·Ï*Í"„¢Jµ])¶žÉ~ƒ²1ËCNì=ß®ˆ’PÄö–õý`ro—“™+).,tÏÅÔ†!ûš`£rë˜Ò’?Ký~ǽž÷Òü%ÿ‡ÿ?AÊyøé§Î^…ýÙO3ƒûÏ×ÃÄÛï¾ûŽŸàŽßŒØyH”‘v˜`FAy[ªê‹‚ÿªÈòåQU®aÔ‡I{¾ýñÀD‰4ßÚÄ,I¹jòJ‹×T”µÅ§ôC1Ý5züì%EÖþïX;¯VoRv1…[«½u¥q¿‹ fã¸gš»^åjÏÊe¤Ÿ|ñÈ”¾jç+.”ø£P(.$2¥OüÂ™× Åù¡ü‰¢‚a˜-»ÌP£âˆ(ŒÂà_ø{zÍ)ŠÓƒ¨‘á�ߘ…:t„¤{SŠ¢Z’¤¬â"aZâϸ:ÊŽìa3¼*:¿7ÛI_«á}"Dœòû]þÓ”×K .nfAÈwa š„÷·!µã*¦G‡‡^žÝär(aÒž("ðÔw^Ü®'øA (T‡Q\L„éáÊd³Øïò1W~€èÓ`¢XLëOÀeó™ø¢ôÆ%…â,0ŠDÕ„¶2)Èè£J¡PL!ˆ°*bBíV‡=|ÂêÊõz“jIDï¼ó™v—âØ‘vž>} QTåÄýý}§2cF«ÁÄ‘#Þ&Ô§µ¹ý[wf]â-ãÍaH/[ÖÀwŸz±s@ÉÌ<«á0¢ŒRDB‰˜Tž2¡FÚ*:–á&¦¹6ÖÄq`Û$‰ é‡ok²8~Ëä5ʶss³¬`ƒ}ȤØ ©`œ‰6 ™=Mûl²ô¢OÄJ„ù#å²ë¼’N Ul“—Ò~õ�#R®©ÖLX)U÷{†*+•¥B–Ân†:%õY»{L~?‘ÉÎVБ”« ™<]/•úšuƒ¸OÝï”?ѧ “ÂÐIbÃ׮ф2âOö)‹¾0Õ¨L×åÕʆæ=P‚âC‰? …âB‚ mkð‰ü¨8™ËÎd…âì1œød!¢Ëjj0SqT:­+5a¹(Ò1”B¡8‰�E„‰ ¡ ZVûQÂÀEÃq‰? ¤ˆF»ÉÇÁDÃõ\~÷–× Cñ}e×ý("ï°txR÷Ș%™æ ÿH½rßI@¥<3¹œ6`Úsc¢ã^#гF¨ôÍ„øGƒä-×l»~ý:«Dõ½?Ÿ0X§Pœ2BO9µ‰ –›¼ôQžu …âUE ÍbˆA@y¹¹iÿ®Ùwcݾ7½ÍUkЬO¹*L|òµ¤Ðd•Æþ$ïMCu[ݣÿÍßú¹œøcÊ¥Šhüõ#ú“oŸ6Û©µ[y¹(LFÓHìE¼ß…H^Ùl+$™z+ ãÀœ�lFÚ²¢F)ÄY‡m± ± öˆ] Û×&×N±=\_öa¤PÚ˜¥wîRóÆ]Wg¾çŒ|àÚ–Â(&ÓO©ÑoÓƒûQº½›« l[š·iíÚ5jÎ͸·†§"¢™ÅÆÃ÷½=Ší¿ÍߥÖÖKšµÇ ¬˜Ú ä‰ò ϯǼ¯MሱU¯×Ï–%±;g 1õSÃäŸ\±ÅÙ}å7£y¡@u\qup¼Ñ[xÝÉáÈ<>LkH¡¸DPâB¡¸à€±t°|»Oµ P\4dƒ Áˆ€ˆ/@ãj<O¨y«8 Æ+úä¨R Ð+O¡PLƒ³ ܆ûÒ€ñE…8Áø.1åíwþ Ý€ÆÎ-ùåÏÇ“H?¹kÁGž>}J=¢íím^†} (" È�ñ?zïŸÊÄAäU|äúÀÚÌÌ Ýºu‹îܹÃé±fú#0Wßi©?Aqª0¿§xn¢˜ú¼Q(Ó *|ã²¶znÞ¼C=¨´P‡Õ}š ÷ž¬™ˆÕARq“µ(#ªÀ.$Mû$¶J4(¥µÙ:-ôwù¤e-Š0¥GÛµÙ„fïh &ù²™—:%Ž(§“¸@}œ)쌂¨öˆ} D&Y6ÌT] KØ#JH!ùËQß‹/x~£/¡’´²²Â¿%tž.·FÝ´Oí…UúÌ/ÿ:õÞþ…Á>) =¤ÿ®·^Ðþ_ÿOjîì$ûŠfçiåç¾ô3ƒz1± OøÉH@G@æãKëö¿:õÿèŸQúþèàñJ;­Éë1£ê³óÚsIÚgÕ¦¨– Ý^¡˜ ¡zÏãô2è ñŠ‘PâB¡¸àÁ‡wxˆ 'f… /‰ '–ã·íÆK¸ã#ÒœâIÏp6*ŒJ lð³„Í_V©º«–…3UÕ™¨P(^ud¹Â©¨�äŠaÙÁo…B¡8iˆm7ŠÈ#Ï,Q,“Y¯šæë¢ãx¤Žl[hÖ»#¶Cþ¹€ï³£(UU“u‡×YU.L é#¶¶¶hooÇ_Ë!ÀâÆ|äÉ?¡âV|<â·K¦§ä›üSú­8aT¯D`ú„ü âc,?®›ÙÙZ^^Êžß’vÐqºâL i+–ÓH‚ Ò* ÅäˆøÙÁþio{ÍÙwãÌLÃÚ\uksÕ©N1§@ÞÝݵ¶Ø>«Ëˆ¿<ƒqI§†=LöÞŽs²¼Iì'ÎR?Ë ²ØQ–©$8tê~‰'ƒªhÈä±gC¹ â ²|ºÝŽ-Ô$e—ÔZÑÇ ©€ì[¶-¾Ñ·á6â«| @9Ç+œ„ Lß“ÖM)¥VˆI-ûPý¨¬®Y…‚Чo;T¤âSÈÂPVùä¿ ×ž¾GƒÉ&÷Œ¸Þ¥LTZV*oü}ªNkÅe Å¥�œvÏž=cõÚµk¼ ìz¼ÄadcÖ�#3àü Ö‰SÙ9–ë™Á‹z1ó¿Q/Öe¹ŒÉòX&uáö2#¿!ë©EÅe‡:ÇA>hçÿÇ8·S(ŠÓ€yB%‘²’„)ÎC¹ûiTÍç…ã’(÷+­fÅŸ‰ê9[å]:ãÃOyYUÙª:½H“ðÖ[oÑúúº«aötX@üñ÷Ÿ‰ -›‚üSIü1ÅÕåª$Õ›¡bàÁhøáTPfÊrƒŸù2“_g›/7éý÷? ÍÍ­Lá~�ø ž?Î×ÔŠ3…¶Ø YüÓ‡ŒB¡8"ahwwßú¶1y6¥^׎k¬Õ¦>ííí2ñ~mSà?‡Â ’bX‹Å>ªž[ñd6Žà ¯QÕi“j{ýœøBC‰üîØ¾G!ç䞆­£V¯qPíË6 lÉ*À¦„¢äáa»0ù×õÍ ™Äùù&?! Ê>…Tc4¤£‰öÑnw¸>Q ЯeÛXú0®7hÆÆ) ÌÔµÛÆ¾ÎÏÒúuzÛ¦•ÛÁeõù6€ØJRÏ~úþ“ú³'çq ´KÚV!I¡ÌÒÒõ{ íí¶}¦¤Ñc ÄF–——9NbY-±×„­/Üâ2X¾Á*L'œMÖ&1ßÍ…O)Î'åqüž|rOõèrHš/Cz*.”ø£P(.`ÂØsøÂ˜`XÂÁÃQ X8û°Æ* [0îA�IN1¸±ˆ?X °ô1øÁ2Ô†Ä圳^ UÊÂ0ëV\ED•KÔ7§P G9X8øˆŒ†ü=ÔI®P(Æ¡ŠŒ ÁùÌÌœøS&).N€ô35.¶âÏIŒGª=<ɪ<& Îa=ÆBáDˆò=ÞO›Ý¸qƒîÞ½Ã3ÐÃqTAqK*(°@¦ þ …¿ç‹?ê/ßóú 8iøû·Ìò¢&Uî~\;Ÿ>|HÑqàjQý¾ó À?¦öP(.&O¦Ï…B19ò¶¡ýƒ=z¹ù’2ËôÛü~Œ(åµqiÌê=™Í;›)ªÄ7ÿ¹Øy­–óÍÏÏ4éÅógœ’)ŽjZ¿øÊâ"Å^‰?®Å.å”­¯çí:ØÈ;»»Aª€Œm—ÍÍ;û°Óí±:$|îBžÉ¶ø|\´û„ßaaµØ÷ÿ‹ÌŸ’nB;eE±$•0ÍlÉBn»˜*±¤BCœB&—©íBì¢= I­Ns¶¾Ãý}êvºÙq!¾€Ô¥{‡…v CÓž£åµ5VGÙ'õYRO(EÛvw÷èöÊ:ÛðØ×°wZ·gÛ³}¸MësKtØho§M“ŒµÐwèOÄn®_¿Î§¶Ð_è£ÍÍM&Z¡K Ä,ãZÀ˳e¦`õë›Q1&cí %ý(—JüQ(—’J O?ý4“©Ä�w`¨ Ñ8 M|‡ =Ø>”÷G Œ}‘úô)êkÖhæY„Ö E9÷0ÜQËE¾Æ* WhT1ùW ÆÑ%Ow˜rì+O¯ÝWÇ fSè <nŠitH¡P(NbGÊßâŒ-ÏÒ ¦}U\œñgÌš téåý^¥tų€û)µÚ­ŒL! ¨29bTÂûã/fgçìßÅ{±@Î*†É%þ\ Œ'þ”Ó-æY?Œ½vê…1½»ÆŸ#pˆå('$ …âr@Ÿ3 …bzQâàð€ýä þÄÆ«(’S³q gk9ÛÍMf­»÷lêÈ"kkËü><üâPÓ»}ëu­=N­ïý`ŸŒŸ¤ÁÖ³ûDÀä™n¯K¦ž€¯õ4²ïc»M7î;þ 3<L›0ñ)<÷¨Þ˜ñ„Þ☠vgZ²ÅÄ…ÏŸINžÜ# >Uàzl[ÐOðë—÷SV‡ej€·'`³"!”±-úofÆ¥Ps¤)—ް]Ý.ó-oæŸ8Žplbðùêö²nLüÇx²Qdí¢¶=<sئR”EÉP{ÇRëÚãéÙxÇ‹MjQ¦Ôð¸;H—ö#î+©»<¡&L;f2ÁMãÅ-¨¶ú{Pþ?‹Wg¤ô˵©¯”ø£P(.`0ÃX†!-Œz8ŠEžF1>"o–0 e;ɱï2“(Èì@‘% óßâ#©`È('Ë徘d†ýe†‘‘† Zèì1—]¡8]èãP¡P\4ÕF¬#º#ß;KñØj4j´¸0k͵Ybc†ÊB^—êUȲMXÞµ!ÍìWج’nLö:CGvhŸ&I¢$¥#cX¿ýef޲»cU:nÓÉ7æÔxÙõê5aʃnÔ¥¨“„Ür݆ý°ÎLƒ:ÂÌi|’$PŒ£˜û*rD‚‰/ûÆI9˜ B½fÊ{΃b¸eF7RSà¸ú½~ážågOùÔ}jùñ,žâçBä‚7üœáÙùùÁÉóõð j»ßŽ}ˆÅÛñyËÇ­qsp'ÆG&¦Hú„àï#ýùúŒJß¾2×8×¼ ÍÅ5]ÀÇ¥‰HùÃÍØÍÈÅß®í£ÃƒÃ;L…bž……?Ëe¿Þ”›^±áü 7Žât©¿`:Œê¯!¶’S°ðx¤P •sˆB9Å“‚Ò¾{öX›â`ÿ€z.õ³Y ®É·Æ+úÔ­­›'‰Œ{·z´ÛßaU¡ÔôÙ–±? ÄVŸéS Ëõ·sh²-MáGàa»EígϨ٘µïpOfñv‹+3HÌqe$””¿Œßd …ã�¬ i¡Ø÷¾Ý2ÔáZ›bggÛÚ347ç>PE;°Õ:Ì”‘pœI{òìÆ~vÂ"cí9{>L«K¶¿x{gçéÙ6Ÿ½p¥ÑO©×š¸qœ‚S»×¥Owö²~ ¯ òý×µu¾ÜÎÇÃT I¹Û«5©}ض—M߈Æß´8L¦F¿ Ajð^luù›ûÅ÷½?Ø:ìù‰fÑáö¢©-Pêþ\ç¤)M2ÙDgö¾â{Fß—n6ªüÈ¥²Gb6À Ô~‚ JHJS(.”ø£P(.à Å,!üˆ<<¾A‹¿C@±Ál`€"D ‘ÜÃ>Ì1‹ ØNäê1SûòöƒrX&Æ)‹¡<ý«Nª:þqÆÒÕè³È @BÕ:[L6S(.t,¥P(Îmë”ÞzÙ¦íCÚÝÛ噚ÆÚt««‹ôöÛwiíÚ¢ È‘b;b'º�ìGØø¦ø($Ø«b‡ YucߨßX¾´´Äõ‰*2õB^—T³¨OìQ7Ãt&#¥‡û¿£P>wÕsKO ÓÖe£òöB”S±?\¯ _¯Î¼MýÌë€õXø»LÐè>Q”rzN« ¾XŽ¤Ù¬_ƒ)óÆ!‡7†µ·ªs…´“ÝC>Øû=¥ŽÕé´ù^”ÙÝ×Ö×ù~ldA š Õ%•™½_Û6(ôøÑCîc(ÆB­v~nžËp`ÆŽI¼ÂwøL‘ç êçg‡­)ªEVÎÚÒO³Ùປx6ø4Õ™ÒYgi+²ÔUƘ1£çHGÏoWQg0û_έ̭(4å"”c§=NQqú¯ÙÙ¦Ÿ¬óú\ËIL§}o+S##ü”Ë󇊫‡WqøZ÷r”½ GõjÐl‹*zw^èüŠÖÖÙßÛ£C!&µZÿ:ÊÕ8­V‡fyb·ëƒ¸ÑµMñïf~?Û…Ý~FZ¹ˆÕhLƒuˆÊ@©¾mÈÁ¡S»)§žå<‚ßß©N;+ÇôULFü1³ÄÝoŒ„ô.“C€^Ï¥#&Œdû1ŽÌã6°¶dO”˜ŠíŒCB‹‰2Rzˆˆ YÙcOG]aØilOCŠÎ¥‰ÔŠÛO�—Rl·°,`"EÁßTŠ£ø”Ûõ˜—Vm“7¨1·Œ9rÂREÔWÇ;¯•ä“ 2Š+ %þ(ŠKË ×À¨"cЧٷuà$ðR žÈ,T©§<c[fJ#mX‡z�”Çï0U~c²ÿWÃ�åYêÑÀ¬M3rûKϺœƒq¦»W(&‚Î\P(¯d6¡›õ‰ yJ{»ÚÚ<ÈH4 tÚ}vÚvzmëíe¤Ôáä…CYìO"`3†6 Ø9bWâƒmáÅ>`7 y'$ò ÐzD^ÿb¿¢ �ö‹òh¾aƒÂ6N|`¿¬²¨¤Ÿ‹‰il¶³~[#ЃÙÛ…ÙÑ©› .×gø™¸ÞÂv¹B à'r—lCƒJAUä:ã»Aú‘ ¢¤ 0èPúý¾úÙ³gœvbÏÞ·¸G(ëûÔS¸¯™œgï}}ð¼Ù|ù’gšoomùtg³LêÁzóÎövF0ò`ÄJ6u&° ¼¤¨F9IÃçÆÁÁ>¶í¾Z]]åú…¼ˆg„¨ a=–¹v-ñ¹­ì»Â/3¤Oò* Î7EÙ Ž¢pÿþ„Ëõ!çÏê’Z’¥òF™T•jªŠ¦¸�˜ð™©¯n…B1-¢àÒH<Ås¤ü~»!S•Èzÿê{ÒQ?²>ö¨F­¤ÎË¡"”«P`G¤Ô÷IÇä].Ë…ìù½AÛÊJ©#Ž(;ŽprFùïê¾ÈÕ,¥\¨¶*dž0;@^÷pXôÙl§MæåSÚh‹š·)·IˆI~»ÎÓi®µU9pHlù¥î.­t¶i¦?<Ýîqp`j#„Üs„ô«ÓR®V9Q‡<òcs9n ÌíÄÐÜ—úßÿ{ÿkÚZ¶Ç×^£53þ“B1- Â?'RP¡¸ø˜”øãÉ …Bq>€A §e8Z!˜É(ò@¸^>2ÃZê ù)'ŽS@7RwÙɦ E W£Ô~ªäÿË}yp^Ä…⤠…Bq•PžÙ))µ$à.eð6]»Ý¡­Mjµª$H;Ÿ~ú)“m„h#ÊÏŸ?Ïìq‡v««¯Íä�y°?8Ž·m`ëïܹÃßòŒ°¿¬m�ê’T¶(ƒ¶¡- ­KjÛª”_úL‡hÂe§¸»“+~lÈõ‚ëäUööù»uëV¦ºz»ý(„¡sAÕ=”M1v „þéçþýûüœà±ª(ÒÚ2¸ßq_ËËËôúë¯g©2 ÖƒíY]ÉâÚµkôöÛoóØ÷¾,ÇyÀý޲[ž(ôæ›oò½þèÑ#nÛíÛ·³g¶ýð£Yh}}Ï+y¢LŽA:,üÞ¸~>ÿùÏ!þ\.dêE Åôé …âHð\ØiÞ„’^Õù½ƒ”«>EÛmeÆzIÅ¥ÛëÓû~D?Ù€~ŽŠdCUÄŸ¿óÜŽvhc1øèãr · Ú)„Ø1°ƒ†#'¤`Ø]°yææf9í(€}è•eò1¶•‰ ’ÆJHH¢ú$žø4 ½Ö!}ëO¿I?|¯BpÒ}6îóKg·¨w°GÍŠ÷RÇþÕ_þ9ýø‡Ed< ç(HãJ#;¦ÝyJQ{û½¬m½¯ÌEQÑn“k¶õéÅÁSºýùT¿vH3/ˆ>Öà´âx¨TþV– Ezµ)..&(¨âB¡¸ÂMêóË Zˆ<!Fûy}„ÆLÅXe$„³±_u˜ùÑêYWNñ‡S}•ddél¡¦©b ŸåtòWRø,W(гFHÖf£õŠ×êÖ™;?CI-rNäfÝÁ½CW7˜øà €ѱH½â†m:¥%•—¤ëÂ7”9ð\”òò7êP^œË!©]ê@’æKž¯£ ÏÞ£àôúlZçuDt¬æLkcìõqŠ9“·‚ F®ø3 ÊËÓu…ÖÒd÷1¡‚ Ä÷ ½ÏAÆ¢Ư<Û>Ž ) 䈒->r?ãÞ Š¢h+û‘´~¢\&j·œŠÍׇ¿]pk‘‰‰­V’¥!”�ùv! Ešº€^:Áóã¼Àí’ÈXvÓŒŠ>*aBq0å}å—) ŤÈTL®´2Ž„uݤO›óœ=³w¨ÖŽ¨Ù©g¦Ï€j‹_ž¤®‚ƒZL:múo6[tsv…Ò¸çV0›áGøíc÷ñ¯Þ[£ûæ[”Ö"^Ô‚ºyqÖ¾l¿ÁCrôØ&.l#öÕ$ã¡vû>ùäzòä ÿ�!G‹-%„}ßÃýØs½gí±­TßÚ¬(QmïZK‘š¦šˆ@…çå'd^Úº£áï ÝBJ<9'öv{Ÿ•zˆrÂÎè>­Jõ•)÷ HøX5îS¯“Rœ&ÿ±×¤ÉÒ€‘‰Kë;R1e»Œ¦$õ¨ â’B‰? …âB‚g4[g&n!°!,úId$]u2¨"þLZö2CDéÅ(<¯#S“Tq¦ÙQ(г†~øY‡bAú.Í/4¨9“ðŒÉF#fP­î{àÖ„ƒz( xŽ€¼¨þ„³a]0=e»ËEGÊ„||#0/õ`=Ê£¬z "éeQ¿$}”C=¨CHFªö£8)±dii‰ú©½Æíõ%©¾¦G‰à“E¤ "u¶³:2¢G@úÈ5mpÀ”ö™åðKü=~m}fíýwmm-'þ)(BåX<SЗXŽûöÆ™m„{÷6¿ðõò¼ôBFD}x&á{ccƒëCÝØ¶Gz¯»÷îr*2<° Ç@2³bf¦™†�´õ]Td QѰàR™8¦ãyŇ^¢ …â4P~zŒ$ýx¦Êµõkô¿ûw›~ñçÞùÁè¿û/þúøÛRT‹)J†×Àãøí}ëÇïÐÒ£‡”&}OêðÄS§œøãì¢åŽabG?I] Õøsì¼NG÷9Ál{ùò%Oøñ£Øj2æãú1Vñ÷è4ˈ¬bÔ¯X; Ñ}°¾Ä§=EMé¨àå›`…Óו|¤¡&›?ãm>ß%åŒ Å‰#›` P\ \t⇊Wì(õ.fQŸ‘JD˜’*ü­˜å~9ð‰¢+CþÉzò›Š‹‹³~¾åÁïDŸ­ …â̦€­Õ ÍÌÖlੳêìLlµj6 ^§z#±6hÂRðI-Δ{$E€€¹(IbyèFp´[±wÂ4GI@¤²—墄z…<)ËBå!)'IY‡1ûÞýõ(×øä(2BЈßM Uýç©’ôS¹ýÀι_æì÷ꂽåùPF˜2Cˆ{òüÀï²"ÐqrEY»AH‘íÃùRbGÙ³§Þ—æ+ÊBJ}ÿ<’.4gÇ)Ç*„¥é+?ÿF‚Y¬ÐVóÏÇϽBq™¡×°B¡8>¢ %£)S( …Úkڽѥö]¢ýç}j/ô(Š +¤Ž2±z‰«­Á&µ¶´³Ý*QAŒ#y{ÂOìŸ{‡Y»RÞG_xÖ%ÅŸ£áhÛ:;†˜< [I&nŒ²Ó„ìíT…Æg$xpRJß1›¶ÿ©ç¯!í_ÅIBÙ>ŠcáBñªø£P(.$Ä@¬YC{Χ\p-Oþ™:ÊÕ�ÊÉ  ]iU¥ñG¡¸Èýì£SÝï$) …⤦‹uJ Z_o°ä–-çT:± Œ7(N"VÆhÎ43g¯8|ÃÀ6Pž¦åªzΖ%꥞TT&¢‹*HèD Eà”ÆgØ~d_ Å4ÈúS.ô5&Š=ÇmcEĶN  ë£rÊc”çmK³ÆO a ûÀþ„ èTˆ¢ H5BU7k—‹ÆaL"Ñöö68f®ÇµìY$ߎPÙ:QŒŠ M>gÉÜüœ}n¯Ó쬺1— ø?L•¤‚B¡PLˆŒ+Sq¡m¶õðî®×¨Þ¨ó¤ˆz½ÁdÛ>ÔOͤj+¦òO~§ókݵĥßɉH¢ð2 s,ßñѶuv\š)üÈä‹|òÈàxKÆ~n w*a‹ccÔõqbû&¹œ4*ë4e•£³ëxW_6Ÿ‚ò ½É ŒŠs„Ž˜ Å…EyÆ ™Àá|\³ÊxSƒîø(Ïp1ižåËãÉ? Åe@ùÞC ˆgn¹„YÆ™ïåIf¦»zÂà …Bq 6pàºç“ ~G çô)ŠsBb§Û!êïŒÎ e}ø, ë-¯«ú= G!D†Ïa8¥Ãý…¤¡iÛ¢8L:j9©37é8IR�¢4ÕKsåQqɉ#cÞñ# è°‚[ÊûÂç~€´Â©ú"TñÄ$Þ|zæw‰Þò˜¤«ÐgAü)®/o@cÚr8ÕŠòs'}À×}Þºgî4ÕŸÜoˆ žBÿyAÙ2‰).‰QJòQ(ÇDöþ |¯©´Ä^I'œ‘§g_¢}²ïبe uÜ'깉HIU!'$ïÙ4rueE"7i·—K[[ͤ^òj.¨£¤Î#uUë-Nˆ#<V³~£”í™Ä•F!üˆêj¨ÂÆ!6¥c-dÎλzRMêS£EžIfHˈç4HB/wø{x©pBÜä˜~a<\ šã8Ò0P´ÒF®¤‚Ãuƒë ÇS\ÚVßŸŠ£Á‘„}¨$ÅÕÃiŠ4:…B¡8TÀ£ŒÕI±ŠãaØ "t‡A¨«F Pââ²Â96Oþ„~ä‘@à(H@ÜÍüÖô^ …â|!ϯN§c?]ê÷ ?מå|8¸ÍBø¦ ÜS&ý„ö˰ßÇEyß!¡§lO•ËU9ŒõY|qpQ‰?aÁ NENI­j8Ñ­ØÉ&ÿPé™ìíõºlgà“W"7ËÁØ)½^šc굺½‡ §› !3i¯-7áŠ2SÖy(+厽ïËÁ“°<ÛiFú]·¸¸è”�$Ý—qã™/Á/¤ ÓcLÜWâ›ÏR£Ù$L—ZUš}Ú)Î zT(—üž5E»,[vŠ/Ò‹<Ì”.Y•(ÿ Ñ9´¥ÄÖ '8erm²¡0+電ݓhÂ6ïáá!íïïõ»:ùF}2¦­òÙ‹=ާ!³ É[RØÊßzƒR?™ ?bgZ2¸ìˆÚ\õ·BqPâƒâ„q*±ÓVüÑû@¡Pâ|fǯ7‡• ¿ËO»OÅô¨ ŒÉù ÓdLBü¹ç ê6Fuj,ñgú:/ ®‰ëUÈ9.åMy ®ŸáðÝñ<ò4 KE×ë5ïpHt2…B¡8Sˆí!ÄE~–u’ˆ“mOØùŠç+Tô{dR7Ã5t’æir⩨"üTr¦Å0Û*üVF‰?Š£ ¼fRŸnY@¢ðÎ|®ÚÎ/ò·ü6•cŸ¸G‘R ÷##ún61È&ø†MRKjLnå’DuüGÃeÏ�2fh*¾J˜¼ŽUrÌX&^)=ÁŒi—†#?÷Bºâë#5ž^=¶+?¯Æö™W[‹²I¸)ϾOjI!ÅFUhÍozU†V C}SŠ«½¬§ÄØþoÓ}¤8Ï˸5Æ=÷âõ‹ë‡íÕ«å*3U$ly1—Ô^¢‹÷ºf¿µé3á]ˆ=åq]8® 9h:Wl’´«¤öÍÎβý+d£h[¨ZT†¤òO9½ô¨wK¡Ýäô¯¡PìÄY{líV›c¬öQnòãK¹ 9îBÓ‡‡B¡¸8Õ‡™¦úR(bT5ŒÞÖá!;§«J‰?g‰ª�— ʃ)Sv¼‡ªó8¦ÈåRýZçMMü‰¨ »Z¨W¶¾nœg8OR %]‰âü‘¦õÊó‡{Á·ƒƒCÚÛÛã¿'½?%@gÀÜÜ,-,,X�œ#‘’ Å™!´+ä]UK¢,PÝhÔi~~Žÿ><lñs®Ÿv3™w±U°œ±x® ) BåY ²O@¶Šh0ãȵU$Œ29H¡‡ðŸ]·—Q®$ä7,?²íŽ{1v6CÚO ÷+î³;ìÛo܃±ef ,X£áÖ§³Íû©µgZ­,�"IÚ6Í îˀⳢ²@Iõ'� ù1«‡I?E5´I÷]‰ñ‡iG6ò¦dT( …BqÒ(«2¾šÇbw€¬"Ä÷‰=„oñwWM¤l Àv¬Ýª?ÏŸ?çe“¨l>gÊ¡­ÛbÌ*cɵµ5zùòev¼ŽÈ’Á'°ë[Ö¶òÀJ¡ö7ÔŠzÝžs'¼oÏ7Q¶ˆhäÒó»F5f¤P(.:.ñGŸ¤ Å+ŠPé§ãT‘<‹}_¦z/ ª_BâO(*åÙôá�븳ŽߪÜÑíýQa`‘Ò°WÓÀö•é!܂ʿ¢pÉô×ÌqC{ã®Óa}—Ï/d–Oõеƒu8$vw÷xðŽgñ4p²Å]ŸÝ]#JS(çÃêp~´èÐ:*1 J+ËKœJ&í;/i­æ·°=!µ¾µµÉÏÆk×®ÑÊÊ -,,²RpÒCE ìŠ$bEfN⼦X|}—l £ïbŤÀ}’_? \Dœö`PæJ“/o¼å*$¹VÍÈ}É·Œ¯À%õ!µH?Ý,­Èx&› GÑD¶/l‘íêZ;„d±CLEJ, ö`6T ÇÁ~¯òc ¿#÷Ð(/ý#ÄŸ¼¢é9cánŽøC™) …B¡8Qà= {Ï}{…•ao÷ÓðÖF•2~g ž¸V¯ì!g{Ÿ=h3V‘å§I­+ªAHùuãÆuzñâ¹ý¼ÈRÝN‚Øxϱﯼ-Îþu{>¹(áz¿þõ¯Ó¿øÿ"'ë$÷0Ã[øwdr@\«S?H +g—éæõLfz¹¹Ii·ïþª=Å…ý㯘<ãü\®…B¡ð¸ð#RUüQ(e¥™M}V8N`f”Œù«Ä ¯"ò„ßRfX_—gŸ8¨¶'*+þ¸Ro?P *9Æ‹Á'aZ¬qZòÏYŒ}ªÎ™ ì€p¶‡âòÀ=sáxès0Àïv»•‘~ŽB¾Äõ’…t_\\TâB¡838RNÄÛN§mªÏèÁ'èÑ£GôôéSv@®®­Òêªý¬¬òßkk×8•ˆ|Ÿ¾õ­o±òÙ›o¾IŸûÜÛô¥/}‰ @x¾á9‡t†Iyö&ï¯Õjó¾röxJg f63\æÿò¶•ûÛo™­S(&G~ݰMbD5+³õSk?€Ük×§Yà ´uÃo_wdòYåþoã÷™$ÍÍÏÚûªÁ×8îÏÅ…Å̾Œ¼=íÒôÕ2P'Ïìý¾³³“µ?LG¦0ƒ½u¯›7oÒòÒ25›3SÍâVîV­¢¦Ï2Å…ƒ²ÑŠ©ñ*Þ5ÿíe*Nê\Á×]ðÏäV…MY)²ßï±ÿªŽŸÄ’ŸCUûÑþ­bŸ‚L[ ”bÃîîîr]Íksö|jêØFi©¦Š+iØÜSÿ~jØ1j³aǨ‰SÒĘíù𳇻~<+Ç2©ÂwÿHùƒ>À˜ØMôs©aå¸fšMê'}êØ1roBRS!;@ÕþG»âŠà¢>3ÔöS\p(ñG¡P\X0IÄJœ±{6J?ÇEÙ0–9BZg8‡é$Êi)dfj¹Ž‹H°(“ŸFwyÝ$Ûœ&BG3‚=kevì5xpxÀŹYjÖÝë³caû­–ýv×'o‘œC|ÂsxÜ êŒø„q>Óƒà‚I‰n¦D9Ê oû `’k*œ-ƒßp�lJ9¡/:È)ÛtYÕç 2;f¡MîSÉ=.ËE„(¬!°….SôI»ÝaùÞ²Ò<ß°]¹¿äzÙ>(+Û£nÌhR(г·ò¬ßÝÝaÐÇŸð²VûÀ~ã™Ö£Z=a‚"žâ­Ö!K¡üñÇL€\X˜§[·nò6îùï@çļBÕCà¤l›a¶R•òby½B15DeÊÛ@aú:¶aÓ~Fn󙟜›)T »îe¶n®úû³÷Q=Ælë|Ü•e¢¡sЫ÷ƒz  »¹¹ÉÄŸ¥¥%Jˆ¢¬KÏðx‹ öþ†MgÊ)¯.)B‚ÎŽÙ³ÜqÏÍÍgÏ.~Z»OžqB°B¹ð“§/Œòk$°EéUö'çuAIIö7�®*¿n¦›¡P(ŠË€WNˆò”JŽ=Æàw¯(œÃ¦;wpxÞ/" ˆ}—$“F\lãÇ0ý³ðpÄFÒÌG8´f {R|ü°Cñ]Šíá_ÛÝÛ¥†]×´¾çþþ™Ò$hs„+ ~æžõëuÉùî` ³ÖwjÜáÝi¯¥(2^ÝÛ¥ÏÆ¾ºv_‡¦ÍéÃfî8A�ÂßM(ìÚõý1䟣ÌÈHÁµU–T\!DJ°Q(Ž„ó"þ8_Ðé•W(—¡Œü‘¶?g£ Ü?ŒvÈt"ÀT^Wà0þ1¥pŽ®¯¯gyˆaAžóì‡!¤ùT)ù„³ †ÎÜÆ|–H?ûv$ôbo›>ùäªG1}áµ×¨¹¼Ìë÷[múàñ3ÚÜÛãß1Ïnhðyâ8Ö¬êÈÛìhÇòz&‡§†–ê3´83Góóó4;;SHEàpŠî渚¥A(Âëð²%@±gÏ#Î3‚øâxpã{aaïC¹~q_â#ÄDÜ«8WHƒs'D˜Ë9.7KÇ‘ÔÄQ%3Œ¾d/ú�ÇŒ¾r‚eè/Ì–• FÕ§P(§÷œïgÏn–·Ïu(üÀ ‰gøõë×ù·³Ã¢Ït8dñ¬»sçݸqƒ Œ ÂòxÆ…Äu‘U?)f?Ž „WÉÑ+“"“ÿ‡u‰6!‘¤×í±*O×ø€‚åùïIOüÁýŽ{smmm;Ø~°Kp¬°Ýq_ã~»÷=?¢Ë«R(cJ'§9´ãR(™Ô›wÞöý{¯¹ “-‡õŸ~ú)moo{5³:?ûðm'IÛšC]:¸ÔÃñAý²¿®Ï‹JJø®„Á¢’JÉsŒŠW úîV(®ÒcÜÊÑâ¿iøúòºB3„·K#÷>´Þl]Ö¾¨¢ŒÔ˜?#¦‡–ª9JÇÛ&ªÜ† í½´H{ÁG|Ú~S&ý°yì‰î)Î/ìà4«K(ÌQ©-BúáIv š_»N+_þYº{÷=yò„ÿúÛtøâ «m6gšÔ>ì3f´SQ™r7>°1¾í¬Ý¤[Ÿù,½öµŸ§µ¿¢Í|‡ö÷ö©î A°Ý¤ŽÐO_åÛŒ( ⌠*Ô ®­£‡ö¬lÐÏ‘n¾þYÚ|ô þð¯èàÅSZjÆ4g}ÝÖ>쥣Õ3 |ã•Aƒ‹Ùdÿ14B}¦P Hq1íey.—ñUQüÑg€BqU`œQ}UÐ÷ÎS8™pÖ·Šd6$Pv8 ñŸååe”É4!.BP稳.ñÇ푃„í!H»E/íùÛµ/6š~çúŠ?›vôbïÀt0Økïfdžé@øéõ=ñ‡Ï¡Kg€`$bu ‚ëÖ)Þír±µ€ø3šôsìžò³šô…Fœ“ò`ð2ª ˆr îSÌGpççßr?"x!çׇܻr‚ä‚îã²Òe€«C#yU݇8f¨_ _Pý„~Á5 ÁnÜaý£êS(Š“…)ü¦¹ÚÄÜü­o¬SRK8€õ×9°gØÜì;.ñƲ7®Ó—¾ôE^÷ÙÏ~†ƒÖss³þ]Ÿø=ûŽïQ»Óöï†./“ô@ÆÄG4qM)YWT½^*—÷pyg—XµäªøW/Û›Of<Cžª–€ jø4Þî«Õíû~øþãPG”Wà*ˆ2ùoSñ;*—+ÿ]¬é ¬="Äbï‘&ARHúØw˜]ìˆúõÌnÁåQçž­Gc»|k{›ö¬­âØve²»Ø¿bGÁ.‚M)ÁI!†ý•¿Ëê9ã&r„û*— Ó-`lvìØvìs[Ð?NɱÍi\ñ7Ú»ººfŸƒ³lŸ!€[DxL^qc§„$}†¿çíxuaqÑŽO—8 Îy·Óe"ÎÆ¿¢‰ýtüyÀqƒ$ç.ν](6µ³AS>Ãq‚5~NÇv¼ToÔý„ˆÚàuJ …B¡P\lGåHËM`J #EDZA‡~J¶Z4¦|¾ÑÇpGjý(9¡a'"ÛÆÅ%„l{X˜&žbãm¶Ô¹([ТL‰zÅÄŸzƒ¶vvhvaž®}þË´øó¿BýùEZ¸Ý¢[Ö&zô½?£ƒ-ZY^¤®µÙúc‰?no¡9 þ¸´ßeûxýg~‘nõgèùì ÝüÕ»´nzôýï~—âÞÛf°+k®Š5!ü¸I­HªÕkt¸·Kõ¥UZùâWéÖÏ~Ò•Ûtmã.رð£ïÿuw_Úqô+Y 0è©Êv‡qH>¼pd ³ö-Fjuž-´»g+°ÐT_ …Bq†€SNg@RÝ„3 ád–´9B’´Câ8­RÐ)«þœWP½L ÿ.“ €QD‘ó$ Ÿ·¶¶è©ý<ÜÞ¢žÄÀI}}yÅgÊc0¥� P ›ŠÎ[rþà„bž ëÏ/#´À™^C~eŸ „ >Îa :3S;y„âϨY — ©àœ‰êŽÁŠPi ÷©p„쓆Dò×Kób[w>_ 3K®×0x%׿*û(ŠóAภ>.¥Í˯¬,qÊ®·ß~;KAˆ÷° š»g={ó stm}Þ|ëM§dƒÝ( b�'ÞœŽDÚå€:ïÙ¤Lî•çâqÜ„£çB^ÏÄ8É%÷ú ±¯.2"ÏÞqöØüqD~üa¯í[f6(eBPD=ƒT]Q¶½›ýìgy}’¿ Ë£êÈ–v»¥ ë|ôá‡LTªH<ëëLðÙ¶¶<Ú¼díq(Ñ€ v·¬]¾ï•m`÷Cí $”Çñ½¿±±Áö½ €Dö~oòv>bç…ª—Øå1[û'?ù ={ö,Çá™!¾ñÚ¾ÑZ$UlUÊçÐÎ…O…J”bsa|v<~ü„ÞyçÇôðÑC&〘(¤#|°ïÅÅ&6á<¢¯° c ô úõ£îƒýC&õÀ^Æþp, @¾ýöçhum•'M¼Üܤ?ø€ž>}êHVžŽ~”ãŤ 3êÚHBBNrʨ†SA°Òš ŠÍÌ6iye™ÏËÜ\•}}9'( …BqÑqRiÙÊõ\ÄT_IU+óÇÇGð½›@¶Éocm¬Ù¥UÚ¸s’¥eêÛÅ͹yûû.m~¸jm¤ßgù)Ê©G…öR>Ò ' Ã^…刵«î}áK”.,Y·µ­vç‹_¢ïX›•vF’Ê¥OŠeLN†Š„àäþž³ãå×Þ¢æâ !ÿAc~‘Öî¾N»÷J»ÛÏüD‚1ˆ*úÊ»?û‹HúVq6ÐI£ ÅÑ Ä…Bq¡pD.ÿ…AYµÎN8På7˼â~ ñGR}IÀ\HÂÒµ Qi³Êm9kT‘@ʤ¤2y)ÜVgiH› !p¦ê‘sö¯/¯Ðš Ôy&³J‹s³Ô´íݰD ß: ¨×¥&< XO8 ÷mm‰­¯Qã ˆ¨t:nЈëd®Þ ¹¨FÈ9õ1ÕX¶w²syV=6ŒàuÙ!©\$¥—kÃYÝrOÊLm”•.‰ŸA^NyvYPNÙæ©’,ÈTú�“äWNw&õ«O¡P(N`#xÝívì;6æ÷3‚Ëò\BÀÙ¥%첓Ï|Qº�WÊìîîÐN b&ÊoB ŸwásTŸ}ÇÃeí¿Ën+¹Ô±fõꉵWí½û•‰0Iív‡g%×X)(’xÀK6òM~&1…Ü×/_¾d‰iÐî‡ÊA°]Òõ÷)ˆú(ûñƒL6Ùñê¬P»Á½[÷)KyÒEjìÑ;²·¤øR‹€„ ƒv€ø‚ú%ݳØùò&€pÛËPôw´aß+ÉóF”'Y&ãN9vGjߣÝ=ÚÛßå Ò7á˜rff—I?˜ Žöãމä¹Öï§LrªŽ‘mÓ“„Ä6ÆßØm™^ư¢‰6£Ïyr…í#9&|cž¹ŽLùI5^…¶%;θ ý5Ül}…â*@ƒ^ …¢ê1PÖÚ9oú+=t©ÔX¢#! ì’L ÓÚG־짮)zá][¬c§™n”T*bŽØe@Ô1¶rhëìÛŸ}ëo®y÷Àú·í¾fÍhåœÐG_ø»ÅÉ'Û@h·ewÚÅPL´ñ^Vn2H;·ßbÌ@•` …b8.ñÇ Y¦z…Bqæ¨2ŠËÄ8pÅ¡+„I§±¤¾’Ìä ëyúF£¨ú2.€tÁ‘p�Pþæ™óA›Cò’lkÌÙËtß îΜñ3Ö ¿~}ƒgb°B�wö_ßOMi6ëtçÚ*Ïc^˜qNö¹ëëÔYYäYÃ<óÖP¦îƒc…ýæ =pÀ é Rö ÅvÐÇ;þ®Ùv@ÖÞL1æ"Ïš¹¨ó`‰¤=(ÓÊ3zÂûUxäRÐe› "©(p}º{3Êf¶W¥-C0g}}VVV²íÃrB„ˆBÒ°ú …â´ ö‚Ò|ðmooÙg]ÌärŠ b#È-Ïöª4<åY呲M•2£bz\ö¾»ÌÛHR}y‡;§Ê²6ÀÒò «¾Ôø½y¥,VÀ½¢¼…º8ÅàluŒ³DGR’†é±@!ë±Ä s°=ÆkPø„ªÖË8ÄŸí­ílL[QÔ|`a[Üç ®€82Ëo¼A·oßÎÈ?<[BµW(á m¢ø#v¨Ø—ø D¢Çsý Õ”Sia´ÿÞ½{tëÖ-VÆÁ±üìÏþ,}þóŸ£ýƒ}V!“[ØíÀ‡‰NöXQúõ¢.´g{{›ÛvëÖ>ÿ=âíoܸÁä%±™Q~㘱=ˆ<h—§]ó&ô«3Ù¶c#Úƒó…6/,.0éMÔƒ65ì˜ ë‡ßGá8òjNPP( …"„#W›LS~+N'2ñ —Ìõ±>âîË'´õÞè¶µÛV­M¹·³KÏÞÿõ^<¢8í{®’Ä ªåÿŠlE‘œ}“íŽõ3÷èùŸÿýÌ/ü"ÕV6X òÑŸýÏ´´ûÒÙéÖÞ„cdò¿¹̳1™pQ¶Œ?QœåVBA}ë9í¿óª-4höÚmê½|Jï~—ZÏžØqB”©åÔ&ëÈ£¤S!¸M µ/ÏÚ׊s‚™pÙ…ÅYN’œcJ…Bq…!ŽH!È\¶¾¤”�&Qæ™TI¥*˜œwP$ ‚U‘|†©�•ƒggu¹Òÿ-ƒ¨üØ€Fs¦I‹T~Ù¸Ù �Ë îüÖëŽ,Ñ´¿™Í®Y™‘+ÁCQt’c–·¡´H(9Òñb! çfÚgLÕ½wYƒ“èGZªeŠ?xþ"hE Q³TáómäY…zæç‘ÖbŽ÷¡P(g HŠïïïуOГ'9Ý€êç¶,3>tyFJz™ÁÔ•ʆõ¾JûÐ)&¡¤©ó†#þà>BJ¼™ùºq£Í$™ÆÌ¥=Ã)¾ºö;Ž\r¯dh]Qð!:î=Òˆò°å`«HªUØàø8¥®~aì!¶Œ¤YÛ›SKÍÏs DiÚ­6½xþ‚D ”‡bLèôbï£NNæUn„<(ûÅ2©_Ò8KY`D)6˜f°åE‘GRЊ  Ê€(#¤v´ D¨”ø“¥:kµ²²’ú ~B_J¿ÍÎÌÒúµõB~ ùmÁþ±Oô!Úv‹€2øå±;wî·—@D·ç¢ß “(†Máá[0DR5Ê9Ö´³ …B¡P(.Q6ÏüÜ,uöwéÑû?¡'Ý-Xûó`ÿ€ºŸ¾Ofo‡Éá°—0eñ•õyOÞ†„-6cm÷ž­ëÅÿš¾õò)¥Kר¾{ÿ‡”À&«7ȰÍ啉L1EužqÌ俳ýº}!X×GéÅèé{?¢o[[Ó,ß x÷<üˆwÁÚ•l÷ùIÑîÈÔ›­P(.N‹‡r&Ámº(Š‹‡À©'©td¥¨å\L€˜¤ü$ä—aJ$ã¶;+TCU›Æ)üœÉËã'Ùe¸çq®â²BSxnd¦n¸.T2ÎÊߊ³ÁIç.ë¹sŠ?I¦øào~æææÙA!©i’~œ²ÒÏäV(г‚a²IJ‡­züø}òàÍZgkø,*“w Û ¿‚ßùßyUËÜò« !ø˜‚Íç>nùtˆèr½^‡Ùñté€óÕïvèãüÕMZX„šiDׯߤ¤9G»—:`Æ:óçšN­ÒdD·i>²MùúÑq°¯#gk€t`Ì¢‰[ñß ª@ *= b‘ƒ@VQÁ¨ê€ÜE —/^Òáþ!oEIã,¤!|° „!Y`Ÿ°›P‚7(ƒà‹( !è!ä Øé³ÂêF;Ð!Æ`< û¢ŒìGˆÛ2¦@=Ÿ~ú)«A™©³^¼xÆûB;@RB[PŸ( ©õ ÑûD_5l0ê;BòAûQ7ŽÛ£^(ø�è,—ãPR™¡>¬òR9U"~ÐoMVR²žMš¨¶±å¹’fçA2! iH¡¸¬ÐëW¡P { D¤@2ޏaÎ ¦hÂ’KbÕ§FŸh¦ç”! s˜4©׃ƟӜþ¨ØG‘ mÐI�{ëèm7iŸÚP\´6óîì ¥ÖÆüé_Q 6Žõ¹µlýÉÂ5j&Ö†9ÜaûÛmè'†ijY¥Üùžgsn‘ÚPP´ûÚýè>Í%(êui·Û¤z ¶sk¬/Ú¤!ëÀô”î‹.»uHsóKÔ¶¶ÞvÛÚŽý”fÓŸµ´©c?sµ:+êw­­çê mÿê¸ãG÷}ÙÆ„ …Bqö8¨KøTW(Š‘‘2säΑaåOopqÇÌ(âÏ4ä„ó$T™ÐÊÂW¥6VÏI Ü3&[ ¨ˆòœËäTž¬Öhø*òʨn± ʲ߾ˆ¶q¡š¡­ˆFƒi®9§hôVå2Š‹‹òùqç2qé<ˆ2Å jDÙ³ê;îTäÔ '‚I ý€H¤P(gã5hoƒáÆ4” O‹zшÚgAÂëk˜ïT<ÂõbÿW¥X» ¸ ç^ì¸òõ*VÊ»EzœúΫbÎ̲Ó&qìÒ“íC2Iƒ664;Ó„>&!ÐcÄø{ÀÚ÷{<jIæ=%¼–p ‰‚fð-•@#©µðu;;»<#:±öÈE¢È‰ºAh‘tÌ AÀ>E‡ÓØ>•DQÂ:´ D$´K¶Á:”é¶“( FÈI2>…#ì_&Ê€Pbs l†”Ãø  Ø‹0¹&**büÍjG>æ|ãØ1‹[ìAƒPûEÿÉéÃPI m²¶Á¶ U\%ªEr:ÂPÚº-?Ãí_ZZ¤•Õ•ÂqàbBLP¢RÎ)ñG¡P(WÂÊôŰ˜áw}}~þ³_ Å¥yÚÙÝ¢¿x÷#z¸¹S*w>­;O`ÿ½žµ³Û }áç¾NoÞÙ ý?ü·”vz4cm¦_ýÍ¿E÷ŸmÒƒï‹Ò^€ÐS¶°K¶=P¯7؆o[›î×ãA-ks}ë[ߦh‡Öfû·~ã7™¼óÇôß||ÓÚMn¢«kï·éó_øÝýòWé_þ·ÿ_J÷É4çè—ã·ÈìïÒ÷þüÏÙÖ<‚ŠŽ¢ð|™à;:÷ó¨P(SàÌY:ÝZ¡Pœ?B² ÿ7hð‰òœˆ“U¨tZÏÛQ©º&1œGòcX÷M)&lâ|'lYý8mÒ·kà·É‰>²ßœûã‰AálêZÓxø9$2ÛÝÿ]æõ¤&¬_/y=¦Ôb3b€sÖÄÞUp.ËÁ¹³¸G)c)F£|®Üý•î¿È«œ2†¡Â@Ù8 ȃ`K[¡¦§B¡8/DYÀÏ#¨IŠÇ2âÄöøŠ“ªì:³¤4ò¨~H€>O3Ù,¤Iº,¸hç=œ<ªSJª*@Uppn$•”+çìUƒ9ulO€áò¶ìs¤Âª535ØR™ôبQc\'ׯ_ÏRHy\W •H™2i¤êÞ—ôV÷îÝ£ÏþóYz­­j¶2RTÛÏTF€¼óÚk¯ÑÚÚZ–ê çm¥®-5œ>ø€×Aä£Ï}îsܳss<+úñãÇÜï°—@p¹}û6ßP�å"C¡ŒŒž?Îõ ßñ‘{EˆO('±m‹#×À¦ãÔ^ -Ávú!»Fü¾D™§ÓîðØ*:h»z`bŸøö¢<ê–ëJʉâG h1iÈ.{byss“ÏQxós¡2ñ}zóÖMZ»¶j‡‹¼Ï!WHáœJº/!þ( …âbáU ÚŸ¥õ?¦Lr>ù1_?ì|˜ Ÿd©�#Í‘†æí{üoÞ\¢ßþµŸ¡»‹Ö.€bVèßùÊÏÑÿÅ·è_½ó’¶ºÖ1Ãìû´²Ó`¨B`d2…レŽEíúì½ô+_¾G¯ß»C?Ù¢ï~ÿ¯èÏ>>´ë#êÄ g#¹=PÕÚd« |ÏP5L»ôèÇߣíûÖö›_áåH©ûWòMjÁÎl·üqx»=2ùÊC_m§cëMÔíÑŸþéŸR£Y£…ùÅ ël}ë»È)¾†ÙK\W‰L;7f{WÎ_šµDqc/†ïHO<¡¥šã\›¥®Ýü‡ßùõí1uû=w†AÔŽr"û.^eÅXn':/rJøp9R\Y(y_¡8N:úrqÈÅ …âR#TˆBrÈ8 ¡A~z¤Ÿáû½¼¼¾PNõöq¶»Ä™}é<²^Èeœ¨<4‹µŸ`ï9ñ§b}%±&8OU³1ä< ©G^–îj4…y …VFQVž²m/ñ‡ËW\kapé´1œôÃÿ“¢aÿ” kÕç¾Ø‹ê<;§×ëOHqéšճ´ …â àÞÏEÛÏ$Ì‚tNÃÑéG²ÇâãtÜï« œå=“$P ìûõŽ öFNðj‚¹­x9:-?·Ñ˜ßg‡rš9×§yÊYœéb ßíŠÄ8²œ¼Ûe}Ïnsxhƒ DIjvÜÆ«Œ;Ø0¯®ß?ULŽÖ1‰mË|mþÔ®_öv\j*[(ÁÇ òÌòÊ ][_§å¥¥Œ8“©Ù>áeoÉ@ õ€Ì»(ñd+{6}Š+Q5!>>û e™�ƒúÖíþ°-ê¨Ùõׯ3)' ˆr!Ÿ;f.{²"ö{.÷…ã/V ò“nº®¶¸u±Wä%l…ö¡ýBä 'zˆ‚HHs ¶?ÛLÒªÛ:°=ú5Tå1~„´¼¼Ä©Ø@êZZ†BQ3#¢†Éžë’úë4'•(§ ½~WzUO3œ™“¿Ée<CSÖM'×’kô+¿ôUºum•fÓ]êG)Õ±ªY§_üÙ¯Òwž~Ÿ¶žìйA:, á`ÁÏþÌé7þí¯ÓÝ™6Õì²ùÅUú̯Ñü_Ðüá¿6>&Dn,Øm·h·ÛÉÆ@.­î¡·#KãÓxü¾3’? i&å6K:Ù(NÙ†Ï&^ø³ßŒÃý{S \x²� ©uбÇÓ§½´Çd©Ôbì#í»°)aëN\}n'²ý: ¤P(—'ú8»H˜£˜>ߊ+ q^D k×qf%8u&!þ\P„mf÷mÎ!+U .ñ'Û``= íø¼¸, TJÁX…$¿qa6Í%$þœ%FÃ0Ø?Õ·r9—z%á”õúär ú( Åy"òÏ6 J÷û©Ëkû$É8ãçG�9/d³49oø}bÝÌ>(Ÿf393bB£ž¥Ÿ”Y¤—eòyžw!]¥ihS@ÊÈ]BrnÐï d8bœO…Ë6»#ƒ€¥›ZÍ)F˜ QkPlËך5JꉳIq>yX$o4Á§Øîüïñz£†*u&Niµ¼Ä„›Ø’ú>””¨Ždãž4ùÆ~æfgéµ{÷˜ƒå†ðzqìßHi…²¢’ƒ4Xø{gg‡ËBQäqðò úý¦]ÎÊAHÛe¿»ï%I×ÖOAÖΕÐV(õ ýj,„; ö@ñiøQï¼m[,3²D‰‹í;n––x†ÿ°Ô}(Ç»MÓ¶ÊGhÔ~$ÍXv*=ñ*‘h+®·Z}„:ÃgÅÉ’9 …B¡PÒ’-+ê<Ö2 ‹óôõë ”v÷)SZ]DŠÑ9zº³Gõ¥:½}ï:=ÙÜ¡ývŸÌ9Ø÷™ÒOäìf¿C7¯­Òÿö˯Ññg6¨M&‰è·¾°J{ïÍÑ"¶ ¡Ù ?6*O t¶Yìˆ@^ '2“ù`‹eÜ1‚ðƒT\2!6"þ`3ŠJç°̨،£—”¸É~¼àêŒí¶ujDŔ½ž#f“*Û•l×¹C¢“±ü†‹§R('†£<`üÓéb࢞mAø@Ÿ¢ Å+ŠËꨥ€rÄ ËÏæ!9íyˆè<ÿ7Š+«,pÜy7tZ§óP"ýÈwETQ¤�#SlòH~ð< Ë$„†¯ U|ùb «·ç8×Åe{ñ†·ˆ\3ƒ·:ý«1ÝÙFÔS(ŠKˆ „ŒR(tR»« Œú}µQ|;Å%Gì©Jµ¦‚ ß=—½ÏΣýŽäƒ¿ò>¦Š6e’ËHñ9œMŠóR¯¹t_b³»ŠbG�¾wèÀþÇ¥/a*²q¸AºN]¦"•,UÔ×£&uD5—¾�)¬¸$ý´'l#)«„äÍÁá!/—@ ¶eQÅÁzb8-Wp¼a6Ž«ž©11!ÛÿÆr(éììê”t[Ýn‡8凰 ëv J=è¼ÝN/}€<ôìÙ3.‡”b¸úi—Ëñ¾2·œ#ìŸÖÙˆß>¹~¾M¼ >a¿G…±W~2]È+Tí©¸†‚gEqLIJþQ( …â,¼¦ù]oßÃ{ûûÖ+‡æÞ½s'K' Rû[7Ù†ýäÓ‡¬Pøúë¯}ò!¢ )cRQ¡e¥G¯ R츮éZ:.ôçQmذqñù€½‰úa»¡¾­­mj¶‹ªõÞv›6³@¨Ø*Ÿp\—§Ìíòw¯ÛW;M¡P\f$ü\ˆ‡ÚYªÈ<£>Š%¥P(.'LQ`¥Èó cÈMhœNšâkÒòálÒì÷õÑtõ°ƒ_fZr;R/ÅI¾Ý‘¾¹& ªDr‚Â…ÇIì\3ÑÒ(— å@Âø>vy7sVWTБ ×UÔ“E/“ ?5Õd13¦¿_uŒSÿQžB¡P(Ž‹*’7ÁåÀ|Õl×r—çy £6Ã2â Ç:IÑ  VÈ¢œœÕgrNøq@¤ãzQÞ®|Ð O75Ntÿ€Ç 01ŠüsR½:¬~K×(Z‡-NK…@E0åþðJU jÚ6Cåe<xÀDh°}&„Ô!Š7þ`=ˆ88^üÆ lVñ‘�P·›m'ãA�}„4_ØßÇ÷ï³JˆF¨G†^¼xFõF•…P×Ó§O9ðóÖg>Ãçë§?}—ë¿{÷.·ïý÷ßçï;›õçÃíK>h¯«šž…cEÛfææ¨†ë(P|6A& . ”ñË%åÅ0Ia–TÊu+ …Bñ*c¨k7"Ÿ:©æ>.­dŸd*–®œ ÒPuí+{Ï$TÉùàæçÙÖÙmu©kbêô­­g¿ õé¤PvÇ™?WÒW ?žšéÓr©S]™ë×V)êwqÅô¨uie¶~Bö¦´ÃµK&¤ˆú!š-vaf?É6QJG…ÛGjí¹}¶Õ`óÁ–ƒ×ï;»t˜­4ÞŽÊc�r<RŸØ®9ù'¶û &zŸ�q_¡P(Îãx+fÂe§†óVüEú !ÓÃLŇH_ Å•„¹bðʲI·exÇ_NÁ€Ij DŽ‹Æ0Gªšù\v’žØ G®v|åû÷ÄžÀÙŠœ¾LüÉœ±nPÊtòy‰e&C0£ÓH#N'P"Ròëù× ê*õù° ÖÈ㉲+4X4lftesO¤·.chmص®ŽþÑ8ŠÅè"ãSåH`ñ*q …B‘CÞ¹ €\�^f{ yCÒ$‰#8—‚O³(®Ú»â"Ù$dÀyÀ·KçéH’¦*WÈêS«Ý‧ûl¤Û²…ãaŒ¨h9²d8]¯Ÿ¼m. €#ÈHÐ@fËziG|€Ä vFÙ¬âð;¼– éºü8S‚€ô…lÓítioŸ? Ñ`;\ÏøF�Û Ñå%•ÊB9G~з(2˜qo”ÁqŠ ¶²¶“¶ áHÚ‰òBBà¦wëßs[[[œ& ¤!èàüµq?Úó!÷åöö6oËJ?ö÷Ë—/¹~ðu ,Ï ŸiÛý·øxÑ/¨ÊAhÚˆe ¡Ý8>‚ áxù\ùþvJR.%™¤µÀ¶å4ÙÌiŠ=Y ׂmwÏà0ýÇäŸA¾Pv.u, ¸ìÐkXq¡Wõ´ngÁµ#>+òi›•+ª÷™ù==%Øüé‹ôíÿ”~æËoÓ¬µw÷(µ~ÕnT£OžÓGÂv èCÇÁ¤G "ú¬ÝÕâü5jn»®µK¶­t�ÅûûùÖ6µ»×)µvÆÓgÏÙ¦EZRÐnÚiDž¿ô•Ñ‘*e†6)«FÂæ+•ͦ”Š_<J<.’[’ÖK(kÖ6ëv¡fYJÒ–í¥Ý™/Ÿ$>‘/û:ÜNl>!þ¸q‚÷û›2±ßPU /3u|ýtq¼÷²úA§‚Ú@гGÈ9©úLÊÂ<׋÷$ˆ?ãÈ;ãÖO»¯ðC¥o}r*—¹zĈÃ4c¿¿ÄŸÐè-Km–Ë ›ýzˆ?²ÿ¾éóöyú†„׳¡Ÿæç r2Žk{D'­øS†äu<¢£†+¿„„5€(ÊRyUŸ»Ñ´L:ôEª‡(P¥ª"…ëÃå‚Z-ÉR^( ÅEC9MŒb2ä)¡ŒWyÁÄúA�1@ˆ €X�[,²¤EZ[[ËH£Ô^. γýU“ Ð÷8O Š1ý~Ç9“2 ƒ =Ãææ§Œª×Lê@ª6@R?Á^±$K>#�9¥–iŽÞ„k|-@½m»AHb¢‚ƒqbÛ~ð7Æ’b�$ùQ"®AlËiìµ’jPLjmøšmµéÅótÀª7†×ãšEŒS¯_¿ž{ÐÖÛ·oór!ììx‚Íãǹ“P~ϧåŠ<YFH@ â`{, ‰:BŒÃ>ðûÉ“'ÜìCˆ6¸gDy÷Ò’Í✒»7EÑIê•ë}%„¼ð¾Ä²f³Á!´W”ˆ°>úˆë2öë ¿A ’þ‚ÚŒ~Â7¶E’¾,¼6AðIj Û“LÒ‚ºT¿ËŠEŽ@u¼@¡B¡P(— CÇ%¦¢Ü”c˜Èôì'HÉšù`¦0óp¿KÿŸŸ>§— ëô‹7¬27Cí½»Õ¡ÿñ›?¥žÛ1@dßóGðõ fœ—:ÉJ[›$6ôk7WèoýòÏÑg­==ßÛ¦ÿþ÷éÞ}@ÏÛuú‹>¥ßxcÝÚ]¯Yû#ám?yjmjÒ^Fô/¿ý>™Úbæ¯=*"ß§ñžUZRJÌ?È¢;î¨G‡ge,¶»÷ɃÜ.vañgÔø%l£@Ú_¥ÚêÖ¥~Œà‰CäSÃFAxw@ÙÈùåz“»NyûÈ×wÙ†ˆ&&ÅPŸŒâlQÅ9)óQNr?G]?ÓD\¦%Ö—4éþ¤Zö3K …âÊ@Øâp6†’êÃÊVd`pGüIÁn·NÖf¯ZG¤éu³ò4…c>…ó9Š­s²N3³3Ô°ŽÌ¤QcøD¨â~ ù¨ŒHÈç<¶‰a`Êä̳mLù*SyÖmÈœOÑׇÔmµ½¼çhSfñ‡Šõ ê¶/à8n6üÌYë°û<t@üñ†â7òô,ù2±§|úËÄ ¡õø“äDŒ*ˆ?yB3X¥s"Ƒğâvƒk"%þ(ÎÃÒ5T©…¤8Ie€¡ò~ ÅÙ!'Ý#Xl¡JCœÅ°ÛAb�ÙAøA~<ÿa ‚x�r„(¥AAø€t�r@¨ü3jªb2„+pž„€…s"³Ahiø´M2ã€Ëíðß8‡©­gaq™Ë°t{3ÖÙÁ©Deü>YùsŠ{IfãšØÜÜäöa¿¸&pm ]²œÛÝui¸D‘D’( x° u ùLˆ?øF]B0Âö¨ß¼¿^Ÿ¶7·³YÒB"BIØ×3l= Ô`=?X' > ê�NÛÖ=W ¡ý Â�(' XBÈ‘{DÒ±IÛQ/7h¾…L„óˆýâTlmm²ŠŽíÇq QIˆPÒ|PêÀq4MjÎÌRÚO¹n9¨ûÑ£G¼ ìŸ,pø œ¤4ÃoìÔ € „ß²_NX Í)q*4¤³1’ù…ù¬ …B¡P�ÑÈ5âK.ÀËDQè'öc&šÔ78hßá]þèÉ3ú½?|L‡Ÿ»MŸyû3ôÞûïÑ¿ùɧô Ñ»¸NÎóéœÜ Ó£¥Åyº¾l}Ç^QrgîPÇÚ½ÈM•O05ÕñG쿚=¸{·6è×~õk´¾ºDý®Ć–Vé·~ãWè ñ-ú×ß—0×ø_üñŸ‘5ùè[K4?7K;=ñ’þå·îS7ŠÅSM£{õ6‘Œ_IÅ-3e|wì«RÆYÙLÍÒÛDq;Û_Sñ¡‹jP Õ…¿£Fe Œ(¿|\wv?Ö1ß2¿<Æ]q”Å!ÄwŸ¯sé\ùw\í¤Êvçˆòß’’ mO£>™:R°%Tïרoj|­pî€ÈPaB]˜Â 9ŽÌU-T(§‹–ÿžô¦3§¼þÈåÏ2äDpO¼^·£(VâBqÙùF0Ûº,#Yvü—× dõ‚Ñm[G²5àwŸ>¡Îã‡ÔßÛÍöoG“0�iÙò³KË<³síú:5g—©>[ŸhûÌX-´7X’RyU‘hì䄟xp'Q>p‹d¤äkÌåC µ;tøø9m?yÊÙNË:Úál5£gzäÝÅÃ’ÔW–iö×incÃæ8-€ŒÒŒ'ÀdC•Ì`¯:—“¾×¢Ò÷hd/¦(\fJ›OV—S+ ip_Y}ÑðÖ3PzhMm²…BqÒ˜&µ–Á©�†uçæ`²5H¡P(Î ÃÞŽ£lÈIIB¯:„ô�þ‡Š" ?€`§¶8³!þÈûý-)”@‚ƒ¨þ\†s0j¦ìy—Âqú}þÅGT–$“(³ Ï{)FÔu8(`Ç>] |Ý9yA»ŸÔ“ì<‘}joœJ ReA= ¤> ,ƒ¶¼ûÊ9ÍFƒ¥Ç© â,€2B>Áqáú"š¨Ù`[]pü7oÞä¾øä“OxC3ÍV’ )8&V$Å•}°ÕÕU®GH3Pî‰HG¢¸ƒ{j>’KˆWåÔ^h»fB%ùýIpÇ�ôöõ¨§ÿàð€‰?hÛúú:}ö³Ÿåc@}¸7¡D„ö IGúIÒq5³™Š¶ÇGˆNrŒaZ?”‰ íÃ1Hz/”G<|øÿFj1!6‰­ØœiÒµk®ùYbÿÍÍÏò7êS(^5¸p§B¡¸ô8i36œÐií¦d-óÃi¥b‘Å#ž0Ö¶ÉÄú’#ö''ìG‡X칡»Ž¤Î`ÈÛqžvRúþf›öŸîÓ£í>mšÖÄ3m(I oþÅ•ýÂÏ‘~å­%¶yºý”>øô)ýÞ_?¤|pŸ^D3Ak½Ky I¥´¡Ü~k7Xão¼ùÝY·¶I|Hýll=iæ{Ûô‹wçèÝæèƒç‡ôNo†ÞùýïÑÿò 7è3¯ß£ï¿8 ?ÿ‹¿¤½Ú¼í’™¬G™ó2•Uì¡|Eî­-Œ¸¿MÖ„IÄ~»|R§W¤L‹¿#ïû7™S;è›òÄÒ4ˆAÔƒ¨°‰ˆ\áYÓ‹3}Ë×ÃÑç鿦±#%õíw¥Ô¨ÏÐljû¼ åÇš½"ûöüá:í³2$HIHeëRÍ™K# ãÆEî¼¥ùÕÌ¿ù.Ü𲌥~…â,�މüI§ƒ3»™Ïk®õQH@öá'd¿ožØwùMR(WÃÉÃR\U;ÕźutõN»Ã’íO­stï§ïPûÅs_̘ø3™s¥[‡d­Ak·nÓ‚u ¯¬.Sb ÐFsBâåF²É©î…f§•Ç’[ëBýÉScÅ>.‹i¸ò T`('Nöú´óô9=|ïžÁ¹¿³m6`&•xÅÀ°O"_º`ó·–©¾ºâf4 0üÑ p0Z´Qf‚†ƒAÙö¦¤“mPŽ[üv’¢Á`Ã89yÉSíR $×TÙÌÍâ òÓ”i˜¿JA#š¶¦ó ,)^m ÈÊLx™íîR¾,‘B¡Pœ-„þJïóQªe'ó ±œ&ñ$Tü‘tAL*·Ï}I¦U¬ÇAI͈ÂIÙö»ÈÕ¿çAúF:B.úWHW8o8G8òwßÏ:îÙ+çˆ/g|æ¬~W1Ëý¸Ày` *Ìl7SÚýqlònÏ]]O–_ Æ´|НlVµ'çÀž‡/2l‰TpŒØFÆ2žÀ2†¤ODi©¾ vƒñãÞþ—ÝÚÞʈ)¢4’ˆI¨ûE?ã:G½Lžêvܘƶoÿ`ßÍܩŹ@.Š|  CX¿»³ËÛ€°„Žéõ{9¡g~!K}åTg\¶f£8X.Á=ìçåd¦ˆ Ð6œcôu-¸?û~wÂ6db‚ÉG¡šˆO¢à% ½rïb¹Ÿ%m€ce"Q b>s½Yk+:²Ê[ê.]ªçBqRPâ±BqEpŒ[ÙŒX*¿ïóžQᯈè˜J#ã9 ζˆ­2ÓhÒßþÕ¯ÑçÞþŒ}ÿoñºz-¦Ï¾~—~{þìn[ß}‹¨DVŠÌ Á¥*±lÃÚDëü7T§f¨9Ó ƒÖím0 ší,:̶ÙÚÝ£'/^Z[¯Sð»ÎmÏËãúùóçYk±EË$ç8è^ç¿ Nú<üÉO¿.)"OáÒSºJÍ’‰ñm“²¹ç8߯‹ävÖ°qDø7ÛßGâDÙåÈwƒKÙÕûl÷Í.ÔhëÉ&µ›Öž>hPc«NéAâ´Á}èLZŸ`ø²~|[eª´)œsòvzT˜¬-d %þ(gpLh´Óâ(7ã¹ÜÀ§Aü9 ©G¶ ¿åïò§¼œŸ—ÝnûA­6÷3¤P(.?<q" Æœ4ÄñûñÇÓ“¿CûOñrž©%%ã~8„øóÚþ½õÖ[Q$™&ÕWí®p_Å·MqæR;A*oìsU庤þÔ›yßæ3?àäÆ�³Eß{ï=ÚzñüXÄŸ›Öɽøå/Ñ:2#¼çg DöXËv€ÌQáwy;8õ[í–ÝO7«ÎûZ)'‘·�©ƒGN&USQ(9üAà3ÉC` 3ô …âô ÐÜm2ÏhnK•mÍQD‰ªåÓà²îŽz|Bœªú °g?¾¡þ›I”}XºÞ«¯Hùز¦mÏYãhi‰OU DaÒÿ¢ê[9$Å$|.ÜįôŸ—\€ÉÍÀ5öC}{A‰]¨¡Hn/»uh`­Ü¹œòÉÚÔ cß œÌXÛ]$°#DÍëæíò¾µã¡lS·vûêµ5V�Ú·vÈ/m¯l{DHÈ¢¦#$| @ƒëÊ? ¥ °]0aÊC’b uJƒõ×÷Úk¯ÑÊê ÍÍÏQ½Y§¥•%jØàÒÊÚŠ#ºìï1‰È‘kúLTB{9À17ËÛ$õ„ú­>—}øø!õ>ée©ÉDYHÚyýúuº÷Ú=º¹x“—ùµ!#qŠˆ$æv:¥-·l~aÖí¶³vŒƒ~Y°A¯×ßxƒëï)÷x{¾NìØÖ~jIÏ ú 2\7ÿâÞ–”qBüÚŽöByýŒ”Á6h+ÎêÀ·;çH6Ÿµ}Uu-+ …B¡8>}7Vʘ) ñS/Ýï©Í\C5kKÝÙ¸F_½·BÍÞ¦«Ç¾ëçfêÔ:hÑçfRúù7oÑ_>ÿ0ÛF4f}ÚUiÁæA·ÂÖ6ìÛEºZ¢å,…m·ß¥N×ù…ñ[ü¿(ûã“FÐB ƃ‘(³D#«èƒ27<ÿ,)ï´‘ÒËùŸaûÀžbï H ôPÈÙNŽÅ©»È¢ŒXâýÚžDË1dL6‰·Ø¿¢z$ÅSìÇ4ví0 þØ6ôÔèwÿóߥ~½Cq¯NõÖ‚_À¦­»ˆ)TE—Fò'ŒñDÅólø¼DY!!ý(ŽŽ•׿N Å4�Ç„Π礌ú'þ;ÅŸÒ0 ™V¯/C¬Žø§Á{È‘®P(£ š³8÷h×:a7Ÿ=¥ÝGy=?}fÍOf\u¬ÄŸ¥µkÔ³ŽMÈO&d SkœaÖSɳ¢ò“®Ü¨r …Õ#¹s£(0d#§Hû²©q 1âÓ˜Š¡|ö<ñ‡ÆÈÇ›V(íPû`—v_¾ —OÓKÛ7õ´GÉ„³+9ßnêkv}ƒºŽ§ JýJ„3t1‚Zf‘Âù,ªÈU\·Îw8§q*c€‡<�3€ßI-áY­ÆÂ0Svÿ`g× ÍjÕ<+˜gµæ33@êÚ²Øßü‚¯woŸgâbvlSŒ2Yûgffyvne‰I«P\$ˆƒ÷‚h<üß#…B¡8]D£—Ø‹HØ8 ŒL”™6À.v$ÀxƇÿT!Š*²ND„ä!©½¤Igt’x•ÈÃÎ7úTÎGØß°K%•¤ŸÂ2ØÖõZ=Sf©ûu¢¬É ?>“D¹úOfùOy ɵԴ×ÊÒò2Ûús³¹½/©É`Wˆz®3I‘Å)åR§ú‚«wRÑ‘”SøÆþ$—Ô‡ã¹Àö°_ ¬3ßg2 ¶˜dÛ‰6bL�â ÔwPmZ\Z¤å•e&¡m¢¨$÷~£ÜµõkùËø#$£f¿Éã¹gÐ|@ÀA;ñvsŠ ¯¶j$˜¨oñ8÷œŸD!÷?RVŽ=æ™Õþ_pŸËXFTÐV!މZðl›¢kÙŸK¬“‰Ý œ¨ù´1 ƒÓ’ÅÜô§<GNúy P( Å«‚¡#£Ø£šõƒÂjLn/s˜ÛG Ë sœÆi~¶I»¶Þ–µÛÖV×ì>>Ìÿô²]ÿúú<mX«–¸¾Ü£—Û;ôÉAßG _|¯“Òßÿ˜~öîh}yžúû‡L,Ií¿]3Oý`“žoЙ!ˆzÂn®Ù~Ÿµ6Îêòݺy“ž¿xFOž>§6ˆØéøÎ±‡ùÅyzëÞ]j¤Î65A„•ÉJ&Ÿîk|há'›DOž<¥nÜ iMN¬¢‘FìGQÝûOÒŦG¹Ë?h›W}ìa‡èŸý¿ÿgãUm´ÏþH˾óË6®ÆU©Ïòœ^TôUhTà8ø÷þOJüQLpLüŸeâϸÀ¨)ýmF¬?œWª/Á8’Ï$Àãßüð‡?üéõë:{\¡¸JÙžÇFH·pîbk@'0VS8R{Ìøw«#fõOJüAÉNœPÝôùS³†vb¶‰º†z»{˜>@^@œ‰Ä^dè‰.~6-d@ÊA*]Ä ç+ØÖÐæöz噈Uiì²~œ\¨'1£?ÊfÝfs@úI¬ƒõ[g>fó֨Ń…FÚåO³¿{ÜO“ww>C¤Ñ÷3"ÿÉhëAùS\~?Fì(ðà*ı-²úp\‹#ÎòååUJšŽøƒA f硌í�Ôà7œò˜y+JB þìîí°ƒ8šA"‚ƒ»zú¶<Ï2¶Îë;µ;¼ìÉ“'Öé½ÇôqNéÔ+-ض߾}ÛS©º/ …B¡PœLaæ"K('¯TÍjö÷eDxŒGY? ’* ÊØD�ÔR‚Øm€(.¶C _ˆ B•Øwø”U'Eù ©Y_T]ÏBæ‚ -8'bOr.pÞ° egçZ™u¾¸°Èöqß§�K‚4ºµìfL€°¶®éûûÊLeÓ21ɶI®%ì£QËSsÁ¶Ç¸àþýûQÍÍ’NóTXv[“ Š³±¾‘)Í� ™`B¨çàx¡ä#„”õõuzýõ×y[\›øº`û‡}~8åÖÌL6N É3ø¾víZ¦¬$ëDeI”ÐÏ’¶ìí·ßfU#¹‰ò»éûd‡´A4áþ˪e’ª åMEp',þ“er.ä˜åZpÊByzæŒÄeÛŠc“gÁÆÆãúC¿¢ÿ%…šN%ìÖ­[´¶¶Ê0ëQŸ …B¡P\fTÙ¯¢ÒãR™L¥e²©¡A'¸ïüÐý¾¡n/åÔ®&Ì^>®ÏªÐƇ¡§Ön€ýh xØ¡-k8B¹s3¯Ì6é‹÷nÑ/¾qƒî®ÎSShúàÀÐò.<ëÐæÖVÖ7‡¶¾÷<¥o|;¦_þù/ÑÝÅ„÷·oýÀùÞûô§?þ„v»p¨ÓY€é5> %ÅEkGP­/º{°G¦Ý¢š=A±õE´]úÕQ˜¯Û㺻F¿ú‹_ …þN°ÆùÕ ¥þÃN#GÓù¯Ò£ïï<¢ýdžã ýhxÖ¹¦$­«Ä–>ÚEÇB"*ÆliðÍMãïÆow9=æ8¥G~|%ub%þ(g pLÈÝ¡}:>ÎÕñtRoµaY~‚Ï0†Tmõ;¿ó;?þµ_ûuR(W¢#Üjhð‚Asÿá8Å ckH ±ÅÌÄ©¾ú&bIÌØ×SÏÖkãÖhoï¿ ìwë̬ûY§L‰¢À¨µ&ŸW¾pTkp§Þ–pnvü ëy;Iê˜~Ém4Þ¡ÏÛò,Øõ»5;HK|Šì/á}F>…›ù^¶ß`¶f2k‹`¦®u(G=§Z”úAßôY‚u²Gê±|À¤ÁŒé|3ê•P>cîïp†®–à,Ç`ÇŸ§íЬӼSPü‘½ù,Òvaö ÖIz (ý@ñ‡Ô¶ 6HšŠ0­—¤AH½”þ¾u\cКÔsâ8»eîû[R 0~F¬JØ+ …Bqòpf¥ÉH˜MZ•’ FþQŒ† `‰Ò¢(üÀö‘¾S| -ˆÒŒ!„lûNm£ã£¬â$Š?’²IR0Éy •€œjŽ¡Ej6gìX!¢ãuŸfØÙî‰WûáQfÿ»9Ó*HŬ¶iìµ#¶6k|=K¶Í Ò€$"öµÜ·¢&%é¥@Úgyi‰Ç¸±×Zß×+ÄùƵ…šë´²²ÌË×Ö®qú!C‰B’Øùò|ÒKø ‘±K¤²SÜÒç€dp,²­(äTÚªžcá¹?6 ˆ?Ó |®†í¹{÷._ þˆZ>TêuùºYôççpueåXD@…â2Cm…âŠà·ò° ›øÍÃà›²#SªŒ)‘›)ÛkuéðÙ.m}úœöžlsÚQç9?= Ö§OŸÓ?Ù¢·?óÅû/¹=­^J{m¢Z }ëC§ÎI·3ÖxseŽþæ›7è«oܦ…zœ)Î/­X[-½Gï>¤½—Ï­kºžíg·Ý¥óãOi³“ÒϽ¹N±µgß{ð)}û'èñNÛÆ�:5d©³r%~üÕ´þæ¹Ùjw[”t¡oÇO{»·­O¿KݸF3Í:ûsåŸÁ«€írؘl¬…~{!ÇøO”—¯®iÄ!TŒÅ`ŸœÍ{𤲍x]FONLâc@2‚Äý6H`1Å=œ£Äþ]£¡7Ò ¦ÅE·)D-ªrÜ iGÞž,ù‰rÇTøÏr&:g Bñjàw~çÿöcÿgUª/AÕ²i`JßÃÖ g=j£½£ÈB僂ODÕ©¾úßøÆ7öúýôÏ“$V /…Bqî`¢Šu^¶wvèÐ:4Aüib&&f£z€t`v‹jn–­ä´;T³†û’up6¼³»ƒÔdÖ¹‡ÞÌÌ[Œ-;�À°©~|Ø‘œÚú0“4Έ?‘Pð' þ€€”øôU¦žzUžÈ[¢/À‡·Ì&™ÿ*À!ß±ý"o”‡óNu ˜�‘³Ç2‘Ù‡ãåîíòfÃIéÃeØ.-ͲÀö¡ä¼Ê�î_ýB,âÙÒI¢Á-…B¡P(N¦º&ñ{y÷ÊG5€ðÝÕÞÏãŽç8Ç‹>…íµ’Tˆï%Ò ú8L£$Ë„4!Ä!Uœ^µàé°ó(ËA&òJù<…$. †ºi­Á©ny†rÍQ$5›-ÓˆAúI©ÖïQŒÉHA±¯Ã”R¿þb¤“ŠÙÅmåîÓ{¯½FsóóLü •Œp¡]/Š83°ý혪2P Us„Ä#é«° ®M4œÂLÝ×ÝçØšË×uQQlP5§\>ÜÆõq\Ãý’K¸.¼OÂzÃïòß²ã‚ûýˆÁ”ªöàÚAßÞ»wÏ—¨aV;‹¸¯ûn\fÏRšÍÍÏò÷I?ŠË�%þ(WǸ•«6 )fÅŸ2}$‹h¦†:‡mÚzú’žò„vžm1è´ßøA§K¿÷ïR7™§¯ßkrƒv:ôxkŸþð¯>¡l[¬ÅÊǶ0Ó¤»kKLþY®a¢)ÚèÆk«‘]ó]°OŸÜÿˆúAõí~ž·#úáýç´ÐL¨¶°Lß¿ÿ’ït¨Õét!Ĭœøûô^˜Ü‹ìë«+ô•7Þ¢Û·oÒÓ'è;ܧ‡›;lg׬M¸ËY‡ŸW!÷3Ñ”ãÕ^‰‘&œÔ;°•AüaÛt‘õÿ’LlüdYß3FHKþ»÷Ü6q‡'×ú &�9⯳|­Ÿ ñgå[)RTˆ†,&E^ùÇþ?km\LR _šzøð!“äOòØ E5À-ùÆ7þ`œÚOUª/S±|9H`†ü}ꘖø3Œ¬s(ÛUûËÉËŦIÕ>üä÷Ä…â '~›Ëåè€1Ö·†¯}*õ÷­#s·M‰´@º“êöÝ`tâMH”0ËÓtŠ:Ö %™9;cßY¨ðØíz}䬢è°åŒ@ðZP®Ûãº"S÷†¡áú¢½§ƒª” APþéHl §5Ðó öé9C±õÖGiBdNwFÇQGüÚÚZ–‚@3"i/³dõ'pèƒ0„r˜A À‘'4ˆ8âlx–3¡ÞÂrpF×*RxaßÒ‘Ö¯7ê¬ýWd6µÌèU( …BqºpAû˜ß×.­ŽSþ‚OXÊUÄi’~’:ê"A§Õ�Ñ}2u}ïš[·6÷,Ôs`ÏÚûhê<vYÝŽM∠ú0âÀ™„ôã÷È! ñ–&W·Y^^Έcy]ê,(„¾ˆ*Qß+t¢>3®O< ˜Xb¿± ßø€x377ïmtç‚r·E~$²ÏI¾ËŠbÇÅäuŒ+W¼'Ê÷H!UXß0ñ+|>†$§Ü•ªO¢6•)„jE¬Š”²".Æd¬ˆ²Y=áñ™N’P( …ÂAÞ£!©¤Š‹ œJqp³mx°ÖhÒÍ;ëtïÍÛ´w¸CõÙ&¥œþªO'«Ìí@¶Û"ç¶þÁÖ=ùãoÑý»‹tëÎ]z±×¦üä§ôþV‹ (ï édkóMê4cj×ú´<ëâ FtSkØ¿——œÐ|p°Æ+É zÖÿn ºQöÉËͤÁõ'¨îÔ0ÔÚ¬wW–èÞ¾K¿üùuZjD”.­Ðb­Eÿ懻ôto—³ Þö ˆßÁé`ûØÛéáYZ±vnû°ýÛò#ÊÈ7øfe¡âùú[Ÿ¥]»¿®íQ…{só%’1Eú~Ø-P+ªBYy*̬À×,“Õ„ø#ë|]^…É]Ý1ûù#¯‚c’ÒƒŽq#¶S# TJ©¤6a*/ï”|F†Ø}R‰§øôÆb3GÑØÛ#øËÕ… ¨¦omݽ=_Åœ5�ê<¦‘É èƒü>7•Aô³€Ž¦Wà–ø?Á5©"ô”oªß§y›LU÷i)þŒ# #ôLº}8é?þÇÿøÿéú;ÿR(Š&u2Ÿ�Rrju¬¡¶“Rs×Т±eÌ~=D:)k$Z§8›i ‚Xã1QÅ>Åâƒ}&òÌZÃÒ£õý”¢ý%‡jZã»Ç'ÒŠQŒªƒtbcQß~z kˆÚzlÙÚó=2ö*?Hÿ5ܬ k5:²‘,Á††ke•ÌÌE\un÷k’üƒAfŽcö-:™Å± `0ĵ‚œ<œ÷ˆ”¾ÊRü² $F£¨X.K§VBèüFbye™÷Wódq~K=®î7Ú¦PG¶B¡P(§ òñ¾ît;6ð?Çdyχïâ«N9 òÏEÁ°s©D Éàl]ʈ?ŽŒS§†WÆÝ;;7G+«+לbNÂÎù>;ØW$¦èou„8"În±§Ã{UÊÃA¾»»Ë QÔ5´eowU‚„Ð/|Qï”ÔZNý§ÉŽwÙWîß¼7ÊËÆý>.NŽøS"÷˜¢Z‘|³rêa›ƒAaJ>I—&ÏOô©¤B“”j¡rWT"øødë²ß^áIÒœáG”äÛê­«P( ÅÉoÝ*ëKóÖž[¦…Å9&ÜJ¢¨ÓŠc²y 5û¤F¿Ü¦ëQ‡h~>Ý:¤Ÿ>Ú¤½¤a €<tÙn·h{o—Z©µG"k#6¬íѨ[ÿ7±Âê{ùâå�ñG/øE}‘™*"¶Ñ`ûN Æ¥/[›§×®¯ÑõŘfzm‚Àÿ[7Vé3ôtgŸ‚´Û£Z³A‡-j÷ºpª;ƒ[y¾ë²d$n¤g®eããQ㦸Â.ud«pÉ`ÂØbð·\¿'Ì!¼DŽÀ;•†$ŸŠµCá·… Ô±S ‰4Hcœštà¸D94®5YeiíæM[4ü¤`C]VbJ}ja£Ä —sÀ±“Ý$#¯tiR?NéÑ“ÇOl] û&Ðï’(§”ÛÙHýæ'=óÑ ó*4l¡¸Â�·„œ¢O¯´jÜf¦ü=nûÁY¦úFæµ\¾Ã·RDyº/ù°üÒ?ü‡ÿðÙøþGÿÊ:~“ …â<ÀŠ?Ö¨ljoPÿå.a>£qƒQ­Ï’ž­ím2vÀјcUŸöæ&kä%©5h»˜ý°o—§”@bµë«=ëdíÚÁN2;Có·nYgê<™x†z&¡ÃÝê>ߤôÁcJÚÔ´Žødf– >0:­£›@@Bº1ÛžŒÖk‡T[½IµùUªÅ Gú¹€ÎTÈBÄ s¢—) GCf£¡,ÄA{n&n«B¡P(ŠS‡…‘^æÎ;ü ÅŸÄðþG* ’•)P톼¤ðª%ÑQ×_2 ›É9l¹¢™In²ÎÁ Gz½Ñ¤••VÎiØ{iÅŽ_"¸i°³Ú§gú”L žýÊê2© >Š9y™œ GüÎΫ{†Š?²÷øRÿv{ÙÄpÆX Á™Žc³bgg›I+ 6a9Ê‚ì‚YåøÏ!­Ö!×#*E²NHI3„¡¤BRMUz/ aå¥zåcÂVT±½ N)l'íÍÒ"wºÔiw¨Ýjs?a¹¤M>äôi–&MÈT¢l e|ËX. ‘›áŒó`ûZ-˜¼A.ØÁŠ©vQ£Y·AHQ_Õ¨ƒâÕ‚UŠ+‚cÜÊfÄ vN’êË¿>ËA6ëˆæ´[iÒ¶ŸõãkRª{:Í騠¯Â3I¿¤vœ¶}Ø¥û/èã]¢µµ:Åû]VØï§1í$+ôýüöÚ©m{£’à2€ÈÍÝÍÚSZ µœÞ)΋…µœBÅßÚL8>Q½‰‘f–IO‘?g©Sš1ãÒæÝ³öÛ!lIL°}*ûìlØsüqà#öXF ¯²½l›nݾMO^<Ééa3 zã{´¶¾L}ð)=zø‚[°¼²H·oß°6õŽ]öˆæçæiii•ö­}ÿþ}¶µ×¯o0‰ë¦ý.6áÍ7Ymks‹­ >kã Ç`,�åœÕÕUkÃöèåË—Ôéua=í»4kósžX>xLm{Û]ÚA†ضËÖÞ__å{ëÉûïÙŽ= cûkÕ®[^Z¢ù…9jÔê9aÝþÝO ?ž={Æ“êP¢Z^vJ£È`rNìÜm:8ØÏìi”]´ãŒ¶µ½·¶¶x9úç¶0&^¯D„˜ú ë`“cÜ‚:ðûÞÝ»t÷Î]zúô)Ÿ_™ =-qj†+® ì½ø?[Bîi)©¾Â ®Ë¿‡½Á¦]~â8ÉÈä¤ÄžðwÕ:A4áöòw'ùæ7ÿÍ÷k¿öëJüQ(ç •›Ö@k=~LÝ^‡­ ü&œ³ö¶¿»K?ý”zÖ[[Z¦Øk;Ö Më Íu)±†hD!»¼É*BÎñ¹·¿G›Ö=kÒŸ±NÔÆÚE¶Þ¶-ûØsÛïHÝw?¢™V—Ö76h~yþÔ³ûìXG­é÷¨a Dˆv@<ÚÞ¥¹›wiay•aøªOi*Hª±pp¦S( …Bqþ€#®ÙtiCß~ûmfÏÌΰ#Îgš))ˆÈ–&û-©~äûR"› mý¥CHZ™d¹bƒ.šÈ'"O:ƒ„Ÿ¨†�¤émÐ í±~D¦D@™t’JÊ«ûª?Bž SMÁá ‡6œì¢:² à=²íIéö­Û1Eˆû¨eñ<@9l »ö=œõXwëÖ-&ù`?p¾¿ûï·Þz‹66®syŒÑ?~ÂN{Ôòv†u¬–ƒ1œm#Ƈ!‘§œ mö�f£!(L}†e¨ œ!eqÿ•”{äÜå$£Á2a:2ô>h> þ€‰YÓÏŸ?ç2ëëëü>AA�…%�Ç,DªLÊ~pŒ8Ÿ8'‡vF  ×l}8ö$ ÿàø±?LXY»¶jƒ+.ýšª¤* …BÀä_Ó¾!¯[(Û©WjŠüÅyߢ-}Û¬íÝ}úÞ~LõƒôÕÏܵ~ö&·ò{?ø½óÓèþƒÃ‰ÛmJßÃÖŸº½.=´öçû4è «oÐlÝÙxPÙÚÚfUÆN2SÁ~’IfÔÑØý„ir1¼_úÒ)ú©¨rö­]÷,S¤jÆÛ‹‹óLÒqM¨DÖè3Ÿý Ý¿ÿ!ÛßHöÕ¯~…¾ýíïð1ù+_¡/~ñ‹ô_ÿîïVî6s£ ‚ÌÛ›íN›ë¯Û±ìWØÊÈ�ß<Æ­í6ÛŽ’â{߯U[mÛÿ9ö%ÖµÛ]úüç?Ok_ømA]Ê«™Æ¶Ý×oݤdo‡ò m>x@»Ö¶?8Üç ±·³¢O”Ùî|Üöd€„q�àã\­ýÚúøc†={cb«_p›¬l›š<qéé—èSSzpÿc ÆèàÚµuΜ�bQŸÌ½¬¤ÅUÅŸüÉ7ÿ”sLªH=U¿ËëF)ýŒZ7Éò©qâÏQìˆIêW¯)}„n*ß8)ßú­ßúËÃÃöŸ'IüuR(г?bJ;Æ—tð|›fÚ-jZ~v5&š‰‚y«ÏeRûÝ7îÁÖ·Æ8f†¶ÀÇï2‹Ü O1%¬”¶zÔi[çvßÖ[§õÜ2Ѫ}òÍSÏ:e÷7÷hÿÅ6ÅÖ€í[cµmß±­£¶Û´Æ™Ý/ y¤ù²ŽYÓk8¦v»k$›lªF@¦A耨!¬P( ÅÅ‚ jǬ>!ïmQä(CR UýÕ9.34Õ©‚Â1áf%{å8»kIhÁ¸"'‘‘#ÒMqIaüÃj0v %Š=,“'Yj.!ÿÀQŽÙ¼/^¼`’ È0 ˜àÞÆzq¨£.@ÒT‰ªàG½¨„8ÝE±¤”Ã~@¶ ©ðÌÛZË?{ö”ëÅsߨÏü-¿±?!ðÈ1`¹,"Ú Â ‚Ò†®O)*üéÏ5¤&Cz�tt¿ßËÒ¢ äöI>ÐàHH¡ìÁ‰ÍÍMîOp>æfæø8°û– ¾%-‚PÎÊa”Ò‚.h ö‰º>|˜)ûà8|Œ¤øJèÀ®gâ– \¥˜±n¿¡°ŠcU( …B1Dܼ bâõö=Ûw¸+õ¡„ˆOlß½q”ës§ÿ„û~`m˜§‡´Û}AïïÔhÙš±µ~ð´Kï~¼O­žaÿwŽÑÊ?…¨ì —·/ƒöÕŒKèÀÚ†ùáKúx«M77®Q·uH<Û¤OìqÆLTé³´Óˆî÷šôæÌ5ªÓäö‘¡ü_Ç421ýÏüM{PÎÞ쳂SÊß�ìã?øˆ *›/·üÓ–µ1ÿ§õ‡Ö.¶×œ=_››»ôû¿ÿlOÂÎûøþǼÍâÒRåna3Â>„]Ž¿…°žD. -=PÂÙ‚-›5×ö#lgÒ™„NÎ�`�»ûÙ³—ô™Ï¼MÍ_úš]¸E‡/wÙÆ­ÏÍÓµkkGÙ™¡x—Ç# õW¿ë”=aû...s;>ùäzüø1µ[Ü>ì÷7ß°ã烀­¼(i†c›zR§Ò“y"=+jze!¾óïðv°·Ã~]:Pþý÷ߣGö·ø E5úýôÏÁ)!÷ÂèRQÕ§¬î3Ή4)ÁgZL]Ïiæ"©rïL£ „Nƒßò=ìo”ïØÏÌÿñý—¿ök¿®Ä…Bqö@ª¬ž}´¶ì÷ž5ú¶º”´ÚÔhj6 Õ£™¤F3Í:ݺ1KýêAŠÒ>×nQ„Y³õ&<´Î lŸnpáB¾qnÎÖµj¨çííÛTû¼5DoÞ"žûp¸GÑNæM“6î½In›­ØÙÞaqÖ;ð™G±µkß¼I-köÉÌÎѲ5Tçž*‰ˆ4¢P( …âŠÁ™7©“÷¶¶¾]ʘ¢òEUJ*Ìe&„2îGYY¡DŸó+ÌLQD8ñáЇӜکsÖc/"¸NE¹$8Ôá(Ço¹ÏáT‡ÚLÛ.Cš*(ÖÀ©/¤qö‹£$(¡~lå<ÙÖÙýpä?yò„÷ç@¹ZTp$UÖËö¢в À`8F&×ø`TÉpì8nŽåQFR� mh#êE9,C0Õ—l¿`Ÿ îà8EÁ Ôƒ:Q�ú‡ÓµùYÐh3Ö�…í±Íœ/Æäž™Ø/Žå²T`žÔ$ä$@Ζ¡.Iu†õèwìë±eøàíìùi4ê´aƒ_è­à)ìôl0ʵ¶JüQ¼jÐ÷—BqEpJ©¾RÊS¬:Bö;r\ŒŠm\=m*€aÕŸ=jooÒ’µ_fV­búôÁý©Õí—H?'“PCH­=³·»KÍ™YjwºôìÅ!ìmÑã'O­ï¿K[½”Z}CK v=§Tudû*¶[ô§ñ—ôãwþÚúþ÷*ËÈ„UIo˶YÞÚ¡=²QžœŽ8¨$qj8U©¢`ËÖš§ÒîW¤WsóŒ ]ܤm(Iî³R¶ãõþº-6 öª+e,¬py¶ÞDR#Û—Ž ß§¸æó¢À)ê•QEª\ØÍßÿþ÷éþ³mì%¢FÏ bú(KŽ´ÛΜµ³aï3|ìÆýi|ºb÷¶3+a‡ãï?piÛ(÷AÀÕLq®â(¡f”û+ j„õqÛµykÇZì;!ýc,ð駃IG|øø1\ÖOSŽéÎ3·H¡ pIÈ]Úx0 ч¨š‹R%N3)ÙÇL¸ìDpÒÄŸiˆ=Ñ¿‰F†BR¨ýˆò¨þü…}üóÙÙ¹ÿ) ÅYÂ+þDiBµ~L5k«&í>D’.ˆð1õc».iXÃÏ:”ãõ[N݇·3˜q9Ã9}6,‰2ÉÇŽ5�ç)¹u—’ÛÖ[»J´·OÆÖm{T³u,YGiÝ:G[vyÏzÖ¸Ez¯†u×—xÖ&LÖš5"S–¤„‘šrÎÚÉÈ« …B¡P(— p¦‚ïLÔ-x©'±£LëÅÿ³ù"ØG'çzwÎ;3t7'éä7Ù…?Ž�•T¼8 @DCþ> ØiŽY®žÀr œý ž ‚`<¢–#ª\âÔI&@½ÞÈÔgDÅeð@�@/’Š $¤ò³Bfùò¢$„!Á¡ÒŽc¤Ý؈7h7êÅÌhÐ&bP/Ú‰õ¨OC©ïQûAycðýÀ€2’‚ d ¬žPÕGfsÐÆ+ö‡¶H›D¡(m¦œ"@fc{ ¡nÔ%ý€c¤ý8nl#d-l#$#”ç þƒv 33ãÔ‹êõ× *$w) …B¡8˜ÈŽ}bkÿÄ3¬6ol¨?ðÇ]7.º@.â4Â.¡>hI±KÅv#A­aÎt¢z ÑÜÓbGÜÈ‚š‘£Xµû qìÓ/é5š]Y§ßÿ“oÑN§ÅŠ9¿ú7>O³i›¾ùþc[.ÎêK{AtéÙqꓨNOölP�iØñÈceÃ~únÀ+ʶ#Îq¯ç¯ƒÒäÕ•%¶ŸµŸÓßüwþ&½þ«w¸Méar<lÐ;×h>ݱõ×éý÷Ð?ý¯þ€~ü¯jíÄ=nK¿Ó=!%Xªû~J#*¦²õä±=k<ÑÚ¥šœñc›¤œ÷‡‘ëH¾sBÆ( K‰'þ™¾³ÓÝø#fEPYoúyšb^Ó÷ÊrñQ82}µÆiÉ]Z0¤.K?q)»èLùIì~aÇÿÝ¿ûw™ õÞ{ï]hÛüú瓊Q8<<øçà’PQíGø'eÕÁ0ϰ2Ç!§©ø3 †€ÂõáßU²«ð¤†óìïüÎïü£ÿä?ù¿þþ&…B¡8cÀ˜„“3E‰Ãƒ±å;Ö‘¹kÈñü-ß{š ègz†3Ò3‰wkhÅZ!9F;ç§CÜ®'¨÷@nÒ`‡~ÿlTîïQïÓO¨m7èÀ!kÛÇlj¶ WW( …B¡¸bpÄž”gL:’@¬s¤ !ý8DÙwF’‰&s$ŸLµ¢<f¼¯ œ±W½~ÄÊ©a2æwU]\ò˜n«”¾ì¼!Ž›|hD=ŽÇ+Þ9LÀùñH5Ízƒ‰-ø$(ñ€(EÄy‚È"PÁö œ,ØñÕ¬ç`H9ØŽõP5äàµ×^£×_É9Ø?ˆ-¨ë±=ÆW’® ŒÍPö·±±‘)칿¡pƒgˆ1¢ƒåB B}h+ÈC’2 u¢!ÿ`{ŒÛDÉí–ö !G‚¨ý¥!”áT¶ýX†þÂ~°_Iñ%ÊER7ʉŠÏLÓ+%µŒ „öq ç}Š:$°rhöYà_ûÚ×8Ê ñIHhWHšáý7›ŽäÕOûT³}¬÷°B¡P(#0ùpà »:ŠNx¶Â)¡`¿ds/ûÑ“§´Ju¶×@ ¢8µ¾ý>m={fí*Ø¥ÉȺaƒÞÚXgŠú.@ ª/È�,ò¶k;ruLscí«Fc†÷9RIÁVsi´Ý'¶q Øý Þ€øsp°O?úÁØ&^ˆïÒü’=“Ðw¾ý=úæ7ÿÄÚ‚NÍ6 Ò»’Ÿ€S•DQèìuûöÓËú´¬ÎrNäÒÈÚcf{›d¬sæާDŽøãÈ6ä•®ÜÈ&ò B(/d"´)±¿…Ø#ªYù>“ŒÄÃMKòunrƒX:õc”­#Æãƒ·kÜ)OÒvÇ*ÛsŒhôp>ÃI*ùF{²×í?ý§ÿ4k«¤>*$Ö%“¯ä·['¾ …âTp ¹»œpKÊ©½ÃÊG:3•øSEÒ™´\ÁO4¤\Ø)UËCº¥xnÅ×fVíüƒðìïý½¿÷Ÿ}éK_þI¡P(Î ¢ýâMÝZw5è餞'j°øô`tºÇr¶¶­QتÕ)mX‡gRç¸R„¼ÄLÁèI¼¡ÖGÕÕ™å8ÖzÏ>òvv)Úܦúa z˜vû”||Û½#?sF"»P²Žs6z­·c¹ív‡¢ýš]íS6ƒ×ÇùAMÓÇí@ €›vÿÇiCyÿgã¶_p%Fúç�Q( ÅÕD® ’9Ìh0Õ— ìLt¦<­î|RnDÄŸªaö4ÄŸêò'\—þ*O‡òñO¹õy ‡í§¼ü²Ø™ãÉ=…ûFþ0åSÖoû'ñzD˜<Óh2ÙÎ(¿@Ñ$C°\}D}Ni\@ Áúù¹9žá 5!¦ <ÊŠs^ˆ3¾H:-”Áû <cØn‡ö ’¾K– ñGfÁ !éÅ (µ¸ ¨_¶“z°_´ ëq,ØFêÃ~qÌÒ^Ô-A i»(’Î í1GÒœôƒãBß`{QíA<ÁÄ+¢á7xvì¿^Ç•�i'¶ÅùÅ"©CžµBŠ‘û²>¨íÃ6¢´$)ºÝ§a�ȵ©ÆçNÒT(¯ÎÇîP('ãÜÉÃnDÉ,ªJóu‘{¦Ë« J؉ì÷¶èE{Lo¥‘±Y›ÍÆ~ú|̳Ÿ8ª‰'åüÉö&†ôÓˆÕjc—À“QŠHk#5çhkïÐÆ/Qá‰0Þ^äï;6 a]+kWHæ ÇÆ®LHð€ýwãÖM^v-^¥k‹«tkËåUJã”nýÜMGàoÌvÅŠ5Ý×h~æ:™¥<%Yd7¿&ë¢â1®ÝšƒýåÈÆ†l\öƒ”³¤cŒ‹öÇîØã¾áþ‹ŒS$Z\]¢ímŸ‰yÂPDŽì’\Ô@­ÆbwNPfLQåÈ’šÖfGÙª4m“â¤QHXáÍ*äXð¦¥S…â4ð£ýð?‡„ŸŸP`¦Jùg”(Myyùïq$¡Q8Òî4†‘‚&Y^å" É>1夡pyÆùØj_ûÚ×þÇçÏ_~aiiñÿ@ …BqJ( EðŸ}²¦µ”:5z¬Õ·ÎÛ¾]ÑëPÔmSÒCÞa÷Øj[ãk×êýµuZZ^¡¹z“ê]H~ö3ÕÄ©#[C¼f½ºñyea,íÝ@uûYÜÞ·;¶ÎQ°öM—v©5 SëTŽ¡„œ²ë”|îsv``çÓ¾µà6í§}ئ~Ï=fMሆ´N å·WTJ0]Véèšz¼ Ž7¨VÒÏùC …BqÕ N%8¾r§XRp” 8Ë‚¿ßÙ÷Ï%�Ç»,ÛcáïÉH?Ù–‘ß&¶þäÞ…'Ò_•Ç?9΃øS¾††Í„|œ™f˜'h„0b Tbæ è“8² >¸—AAš«O>ù¤ .BŠ„@láDH. ϱ&|&„ß�Ê@Iõݾ}› + ÎHú+qHK{„¼#ê<ø¿AZ‘ÛBq$I-†º° Že±?Qõçã?¦û÷ïóߢ°#ÄËúú:]P‡¬CÛ„,„}£‘’LˆK’š u\¿~=K€¶`7¶E{�ô–Aé¨uØ¢F½Aë×ÖéÍ7ߤ›7} Ç·ù7ÞÈG2ëý‰óböô¨ûµŸ$SªµãX;~}øðS;6^âí®_ßÈúø83Š …B¡P\%\\Ú”È ùG~(¨åDqÁï�ì"¨ü›Ð®µ?'›“©Ûp=^A¿ÃñmÂLbËT`KãåÏÙ¸ÂßÿûßÙ»ž<‡ Ûϵ˲¨J"ýî\–m�ô™Ä©ïdG7‚ø35ªˆ?ö¸Œ#þ`ÂtêRƒ‰?kXñÇÆGpnÈô¸eóö8‘â ³9}xäK1‘]j¢üü&±W÷ ™ˆáþ–󆯆 ftÔÛåDn³ðú+L¦°ì”•\º4(‚ü¯ÄÅi`gg÷¿w„·\’ä#¢¢£MÊŒ"…¿«0íò#ã,R}U¹y&YV¥ú*ýHGgªÒ”“€@cÄ[gf}}íÿqppxÇ: ~• …â´Á1 k¬Ô¬QÓ°Îàfj˜¥ÈŒpk>ÂYÜïZÃË9˜Û“„ÏÒ ÍÞºM³Öx4O_Rz¸ïË0Þ0‹F?ØÿÆñÊÙ´´«R8v=¦Þ£'4Ó†»KíçÏ™ø[lÝæ %Ö9‹`Œú¶Þ®5­ó·Ëù‘#–©tF£;'u)~OÒ'hÌïÓ†–¯&ªøÇ …B¡¸l'’({¸œŸ.hτꨟM))«ý„çÄŸ|&íÙs<éÅ”~gMüÉÓN·¨è̪õÕqmr a¹)_‘'â¬3îx'í÷¨ÔÐb¢é%óãó.NaPÛwOpêÝšëS¿C# šÒCÙoc(ïË‚¤ºaçm•˜¿"ʤƻžI&h›ìÞ}}R¡Vw­BòlÏ$–È…DYª<P¿yc*CH�I„VëY^¡ë´´¸ÄÎc‡ŽS@@iFÈA…ž¨²‘¨I /IWò–,#ÏÙÇ |Ð~lbO¨Äª ¡IY€r®m•”e<Ö´c]8KuH0Ù} ’PH0Ðö$N˜øƒ~E?¬Ùc@;›~ÿãO¬»J@öÁñc;‚Y [·Ì@®ù”c¢\”Ôb»¿N±±qû†ÓÕÎÂ…©P( …â¢ÃÙ›'—Êè¤N.›öÆ%M’(úcìÚnw t”kÛÁnƒB"lANÍ:"ëtD¢Ô#¿)SPM,ªŽ(Äù4×S@, ‰±^”ó6W娲7(×G†1WSEZl!þ„iªâ8°åìJÄ=Ì0u§c ‚¯ Φ&ŒqÌÆ¥óêQêƒÌ®³2<9š))ÜFãÃÐÆowvמÉ”n—iq™RÊ,Q–JÝç8)ËOàsõ.ªè³PÓ#õÄw}Éq)' û ü8#ä.>pHzT­ìþÉ@,¯"�Ñ—(Ž3j®"ïL»ü——£nfȲª'Öû× 3µð4nüöoÿíÿè÷~ï_þßíËåk¤P(g�å0®ëÖAº¸¸O³®›¡jÃ6µé�¤F“j7oÑŒu¾&O‡El aâpÀÂ1Z·Ëë^þ½Œn»C»ÏŸSçåK~àõív/îß·F|‡æí6pÖÖP¯uØ¢Îä ¶û=ì§´m®mÐʽ7hÁ¶Ó9R•ð P( …âòCœ—.µ T,rç«aXZœ»3ø§÷±EùˆµªÌ™À9Wø{x«re’$“‘ψ@q<@Þ0©))w‰g “ý'Îìq½ !ú”‰@“‡á¡qÚ§X<î¦kî6+m2b{}%MûÝ-¨2¿£ýsöMZr\š‘+£EUGDDÑ9Ùè’¢­°PZù&7YÁ;¥£ÂfjÇQ ¢ “fb§‚ÓO³¶HÐ�d•7nd)¹ð-é²êµz¦Ãé·ê5?Éáh}(BI¡Uè _§ÜS’&K¶¹wï«áàY”oŸ«AáÄ6ÒVÊâØ„Ô„ß ¡Ô)Ž}3ÔŒ°–ƒXƒ64=¡å„(#JE�ꆒTP?ÆœP"‚º{®yrúa~VWÖ˜($ªIœnlRõßG«kktÝî[R±õ lŽ)æÚèÈcx^‰zSs¶Éä­F³A …B¡P(BT h*M¸ì²à"*T)ý„* 2 •h…øãÆ:©Ÿdb ©S9½S:œ¼!ñÌföËD‘Rìf,ƒM™œýÞëôÙÎ8EP•ã‚Qšö3{——W‘K"ÀÍ”5}Jº|uD9'#§cT&B”‘¤ˆ\º/4�IãâÈ+Ï ,ƒI×>]þ«Ù±I-ª¹T`äIQ…I9g‡*§`ÆGé¿e\rÞä™°½å¶T©-Ëd‡ã¤(S(ª`ŸCßW„‡=8tRÿ;$ø„Ÿ*ÇÛ(gܰ—òQnÄ#ß¼§5]fÁ‡¦X’} S~I99)Þ#š½%0Õ)ú£?ú£ÿà?øûÿçôþó¨ä…Bq:ðp)p„ZéìõÔhuhv~‰êk¬X§4lksТtÿ€º»;Ô‡3óîªY<µŽÛžgf÷çf¨·3ÏQÂÌÑ™¦'Ø€ÂüÕ—(Zœ'¤Âm™mņºóM6æÓn›žwíƒ0¥… jX‡mmfÖ uà0¶NV¨þ´;]jÏ/Rsuš˜)ººBÉL“e-µº‚i¯P( …Bq PvªBí'Ç̰1´©øé§+ŠŸªÊa%N¸ªvT•—oYW.7èdM3•Á²£É92c.t¤%^a#$„ÇÂNè’.<®0mš”û -9§±\·lÖ)D#qZÊþóóè†û …`Û*禴-üÛÕKL" Žegz±¯MÖN7 6¢ºu§Ý“zí=kLoSÔwÒöT›µ¶ú5ks»ÔK1+¦ÔX2žû‰IfQAªßT}û?*æìÆ”Ý3y*øÛÏy¥â͘ÌtÔ¦#«9E?­¸pí¿öÚk|킜õQd&3{%Ó,õû1áþO·Ÿ%Øî¦Lj •t„øƒkOHD8vQîA_á·¤ÃÌp¹¾C"’ôSºÆ$\Ÿø "€ñ$ˆ?PÚ"‹ÖVÖìt–Žt¼ùs]AG 6å –®_Œäzˆˆtâ¯âUƒÎvW(£†-΄0žS>|Œ#oÝè\'3\]8;«Æt(“~„dc|ú&WƧý²¿÷²mË㞪w‚…Ê€‡}H [ Ø‹±¯«ÑhR§¶ô³vV‘}Âu�%Ÿ?ÎõÕëž\â‰?°Ea?ºv¹ðìTw)g!ÈŽ%Øï™€Çc‰µ21޽:NÌÊEå}LiŸÏ‹¤"ðOznÄãÔƒÏ>^’+ú˜,…[¸¬*myß§{«š¼pÖ¨TŽò÷ƒ “טT–f㛳ÿ*®.@úG\r„pGpsÈÀ³Jõ‡‚ueÒOU¹2&Yv*¯âã¦óàToSöyQÅß‚*ÅŸ8(Sõƒ7.ú'ÿ䟼üè£þÿüŸÿÿ±¦ýR(' ÉËZk~–æÞ~›ú7¨vص†­ ¬ bŸV54h‚„³³CÝšuj߸FfiZ˜­ik«½q¨Ó¥F»E1ç©_¯Q)Áì÷lÍîÃ:¶ûÖ¾_Oéå­5êÎÛǹu΂…žî¾Auk¼7oߢæÒ2™š-k^©uG]kðÛ6ÔmðdÁÛ•UZ|û³ÔظFÒÙöpº’€ …B¡P\^ˆ²Mg8î)Ф"ä@œVáGÚ#ß!I&› Yhw\"£¤^H¼©yéø2GÚ ²@¸�Ž`HȃP Î6I%�H,…ÙA]pøÊ,<.àD†2‡8î¤lÙù§3ÖI$!IJ6qô¡ ¬–™)7u2•“0U>Ö<„ú°?@RI;ä˜YÓ. @ázîƒ2ôv™un?~ü˜ö7Ÿí>£¨³ÏNáxf‰âÕ;4¿vƒ•Rf`—{œL)&tl˜)|<á1Ÿ%L˜3 „Ìkò#ùÿ·w/¡Ò¤÷}ÇŸª¾Ÿ>·÷æ™L6±°#¤…6Q0Y(2!qoD6¡MÀ!‹,Ä… ‘A«$«lC6Yx•E ™’Ø’ÁØ Œl„„¬yçú^Ïýœ®òó{.ÕO×éîSݧû\¿ŸáLwWUWW_ß§žúÕÿ™Ö9Û´ÃÖ‡tüµôñÊнףπÎZŽCXÅÏ}º½EzÆð‚ÁŸyí|N+Ò¡ÆáŸx`Åý?,ç76ý,ësªçKâô8,—¦éuQUžôìØøXéï•Ö³¹9t·õ™W埯|å+¨ª%©rR§†˜(¦‡u†€Lr°kòvÒ>[±R[ƾ)��ÊÎÌüöNz†=V/¶í.R?Ñ£L¦«ŠŽÀ´&Yu‚nòx“+MÚiÕ™*æÌØ{ù¶#ûæù³g®j«Ñþ›kÿå­sû¬q›b<ý¥i?ÿùÏÍïþ§ß5yËeCðçÍ7ß4ßüæ7ͬç> ÇOªg+Ÿf‹¶Õ—9*íö7 W‘5¾¶…)ëD‘Ü¿~®ÚkUô4§v?ð´ô˸ýÛj‹¯Îøs3Y™wrž™Ø·Hû ®;@3/øS?*îÛľà²4¼×oþæ?ú×ï½÷ÞžñC{)3C?ñ/Vý‰‹Tü©__E¸çR½ë {VÀgÚ2ÓB?õöHý•ô4Â|Ê´H½}}½±ƒùäÉ“±¹¹õO �\Vøeªš÷j¸Š?3x-7Åî+¦sf…ºÒâ-ÐØ· >ýÔ6ºíÁ€Ý “ º¾4{·g†ƒ¡i·Ú¦§39ÕrœÌ=ÜRÈ6ÜÏìÁðâäÐnÙ C{ Åv€w7†fxR˜^`z¯¾jÚÃM{ÿÜ:ö�Ffœø’ßüöÆÀô_yhZþ ÎRkâ‘ ªþ��€[l\ ÇLVþÓF¶sU–QGm1ôöåÔGU‡ îVŒÔå;Ð\yór²‚Žî+é¨õT„³ñ\Å!e™ià%v¤jÍA‰t]ÚWéFÛ¡êE£ÑÙDŸÎøÝh-[¦ã~²,œ:ùWŒJÛÙkÛ”ûîµÑv)`ÐjuܼÑYaNÆqUküÙš Äè5Sh(ž¡§çtrrV=7­ë4yMÝŸÝUžÜ{ùÒu:+¤à^çd9M׺õœó‡¶-Ük¹mкö]À¾ÛíÛeKs|tì*cf!0à:Ëq%¢*øcÛ˺ßÖVáÞŸZŠ 74oxÍu©€î÷ìÙs·.Ív;f³m;Ïl»ûù3sðä‰é>7­S_ñgtb?šVg`Š­M“©2ŠmË»Îá‘:4céø´JŽIK±$›¸œY\ªÛgAUæÂ¦b gîÏ?×zs– *¹ T#”RÐÊïVÅ!¥B%ŸðyŠïY|Ìé•°²‰pRúΪ0•†Èâÿ¹µ•IÃ<±ò•¾C±úNúÜÒ¿ú:Ò°OÞK×c(-}>i…­4 ¨Ïî,õ3¶Ó×J!?UJ·5½t¯»i8¬×<!Ø£µŽÂëxn¸/¿ ñ¯E Kf¦Ýi¹ƒKÀ}t¡O�7Ìœ0OÚžœ*¯ŽF¦ÍKº|W* rËôO²$÷Ã%~ºö\;:ì;Mœè‘åë˳l²gæ+pºö“B,a[Jígºýžì\ÿáá[6VV‰m≶`Úž+øÙÏ~fþÿü_Û^=ñÕrÌ8øó¥/}É|ãߨwGÎãI.Ú7ª^ŽÒŠà+Ôu(hëeÓ7á«Èú—©a&l¿JKêØÛ7 ëï”§æHC< 7œZ;7¹Ê–iurC‘Ÿ ÄL þøÏÄY¨~|ý•sæÒ SÕ¾YNŬÆÞÞÞyøðÁ0þ˯³á¦…~ÒŠ>Ó¦¥Qz»>½>Í̘¶¶Fþ*‚?Ó=ËÞgVÈ„Ûq˜/S›åÆÌ ò0¬«ûðáÃÿãÿø'¿ú«¿ö¯ìíåêÀj(l‡¯éÚËHå!ýtºî€Ñ©ý;8Ø7Çå±)ü£­­m3ÜÜ6u‡3ÝŽXÎÖ´êÓ“cWNóã?6{ÏŸ»Fª:kw<0[»̨mØtz®Ó9kûƒW]5úíw@9þÕ°dyÚq��p'øýðL0ý•#_1"„ZíÌœ›§O?6û{{.è£�öÎîŽk“¹Š6§gnúèÌvˆžªóɸLQúQìm«B†ý‹ÕG&†¨² ˼|ñÂm•†×ét»¾Dw¨¾¡ë/_¾tm¶8Î3ÛÆÓc©7´æ7í¥:K×Cš™n·3QÛÿÃHñ¬L«i($ƒ´Ûl»2»Žð犖gZ¦çoÛNÅÃÃSWH¯…ÖshŸÇÓ'OÌ‘½‡j#.ðäž÷sÐH«æÄ€F /h=Z_ þ¨]j;bܶéyk½½~ßôû›¦m·E¯ùÉñÈìïÛ÷¬evvr÷~<{¶çî+ÅŠI#×Ö-Ãkå«ù`RáÚ¿z|…çâÐöêµm‡Râj»?zôȽîì¶wg{Û¼²µaz›]“Ûvx۶Çöµz°¹eÙ†û”ä]³g¯uìüÜÎÏ\9û¾;[×u—>Ì#“CdÕ+ Œ/ËÚÒWØ7†/B'sÕ¯•c&ï‘•Æ,×=äÅŠP Ù¹÷e{gÛWŠ¡ ƒP[¿ªûø÷~\5+~Üw!lo|ã ñ`J ë¤C…Å+ñsûøñæÉ“OÝgÎ ÷‚+ip(~4L×[o½e¶·wì¼qÐ'}l=ÏX5+~vãA­_ŸSÑP zþñ¹Ô+òè/~ÇÒê>õðNúº¤—Ó¤UÁüJÌå+í„G&ís?ÒöOÁÈ,üfùÇg¼‡àO¿ß3Û»Û¦g��Àb\K 3‹WSÁRêAŸY‡‰K¿¤ñ-.¥eŠp4œÔ‘ù9Ú—…aŒ3»_Ôn·ÜþŸ*ú¸ÀŽñmv!Oö#Ò€Ñäþˆoâ—sÛ†šã÷qýóQUŸð¿ª³†ÐP˸mÕ<U©umº°[ miçm$waòpô× ÍëÏ„ñ .’DË ³¸ñ ]Eî÷©µ öËmA+¼N…žÇ õíï¶Û§.Ô^5ùµ|[9 ¯ïôaÈc€¶=îÄé×iÑàOÛ¾ÞíQ›à.ãðÏÿüÏþí¿øÅÿiü¯‘ÎÄS觘ñWý3ø©O3ÉmcfwÙ,ó¯ï¥ÿÅ^gÅ©÷úÔ=Ù—fÆõ-Ìù°O¼¾àñºÂ?Jsõíþ?¾ýíoÿÑÛo¿ýÏúýÁ?6�°„é] ¾aîç:¶2ʫƫ x{` nØÎÞ#sxzlmÇö PÇqú¶³Ût{aè–É’ßz7ăš˜j4·»¦7Ü´Ìö€ídîê@’=xÑlÙÆjÇŸ®Ÿ¶dÉyšé?jT¥gOfé_ýß1��€Û`¼^V 8ݸ6ŽúÇNmloï…y¦Òç£3wÐ~°¡ƒË…ÙßéN»*$§¶‡àÐv²eCyUÁŸp0>7TmE8�¯õ¼xñ2LUîØMÓºìÑ2ûû‡aˆ+_Hn|(ÀïúúÓ U$o䆑2&)“=J(vÎÆŽËWrÕôçº-ó¶ Ôi»ö¥þô˜¾Ò‰B Gn[uùòå¾ÛvµSµݧ(Níݪí’x†^:Ä–<ûm Õ“´>ÿ¼7Üc¹õžî¹ëzQd®Ò‘»î*Ù÷mß¾o/&*°¤‹4|¥Iû{îö‹{.@¯ûùmõa ÿ:Úçxà‡ø:¶ÏûèH§}Ó·oùÈþO•7Û¡rfÏnk¿;'s7@|«°¯¡ýËôÙ(ÇØ®ÚR– ¬TeâguÈÆ ÐU+KS?àª*…ÍñŽÉ®ž´Ó¦š–„hš=ì8$ã]§&ßËÍ©ýÜh_Fg~¦C[qè»ø)ÊÉÏA\Ÿ¾N'DØÿbhGâ2®êjþ¤CÇù MÇ~Ö^š>úÐ<~üØÓö÷÷'†º‹¡…Ùô¢°™Næh»0²ê±t}ö´ ú.h¹‚QHËøÚ‰yò䉻­éZ¯¦ÇaôüP]›ÕÐzn8®�Jƒ‡Ú>­+¿‡éxZw¬ž4mÈAÿÞ†ÀU69<aú¾Åª`Yzöy _%!¬ÜnŸ*½xþÜ<{úÔ=O½&ñóƒ?zOuéÃ;æodo™ùnxZ¸O¨ø`Z׬?¶Ú¢a¡©¿7¿2M~®'*R“¼®ÔO¸+gŽOȲq<ȇ¤&?µm©§Uû¸ŒíõúvÛŠÉÈʼPXº.=ž|þóŸ7¿ó;ÿÜ ›²Ì·ãIé>ŽN°Ñèú«Õv,ó!]&Í6î#Hü±Z© ÇGŠPu)«UuSt|ŶE³òj¿ZeRmX‡·ã~A=ôŸ~¾ªàO à_£YÁb‡?òOjŠ},q¿XÔÑÑá{çwþã÷¿ÿýŒÿÒ«³ê$\Õ~âõ4Ø“†~Ò0P”,­_ŸwY¿>íöJ­*ø3íß”&óêËÔ/Í”ëÆLVÿ™þÉ´‘™|l]?ÓûöÿÐþý›wß}÷¿ÿú¯ÿ½Újå_6�î½ô¸»Ú á|els&q 5PÔ9ƒ?öâÌ.4ÚšìÑgMÖ³pždÎŽLqfž{æô“OÌíÈÖÙ¢›êÜT£'ÔÂÌu†wÖ6;ÃmÓî¸L‘¦.õoï³oú†öñt~±†XÐf¨ÑÕDM³Ú/tü ®W´��¸]\ì'”îöà[!tR˜ÓÑYuÀ]:àŒÇîúÓ4ö÷ÏìýZîÀ¾?»q<î| ߤC`Ã7Yu0]Y:دeˆZig­ÖQmYºmІ£ÑîäðF (ÜegUu×9ÜwB¥"Ѽx{\5hÜñ¦ð€‚J (0à‡kU¯—ÖëAåDE”Xb\·ŠëŒ¯KÚ±«—¤Wâ|ñ‘ !ÅðTܶØ:~Þ“ïQ|,mC|?bõ”x—KßçÓÓ3×*n‡í°¯¤«VRßÑ}Öî›2—L­#߯χªê—õÀÏîØÌÎÇ–Î/’M?Û‰ïc¦!Žíþ*ÿ¨ò*ˆ(�§ùnȶ£cspxà†4vŸ×P!5[â°tö³úÆëo¸y~øaæl¹÷;íôŸ%}þb˜FŸUiõ»¦u*¨¢�Ö?OiÈ/V°ÒoO5t ý¼xñÂüò—¿¬Â<±Â~ ´]òúë¯Wß|áSÛ+º­õ¿òÊ+n9ÝWú®J–ÿ‹ßÝOÛ®u½öÚkUÈPëøÅ/~á–ÑYÙZ·¶CÏ'†šê¯K§Õq¯¿ûŽÿ=,“ï–Ë}¿Ü 'ãƒ$ñ{¥÷5~ÏT9ì#û|ßÿ}·OŸ>õë ßww0¦W {ãÍ7L«Ór¿ƒþ}#ø�÷ÝuânZ;Íjø7eìÑþÚľíyG!±Zó>3éP¯qÙYËûP»?‘%ÝßQûëðȇ¹3Ÿ^qïóù<ÌdJ%«èhü‰Û©}Ù?ù“?m»V•YÒ¼­­ó…/|aâù÷|pÆokø¼–óm¶å†©bíð'k»¡–˶»ôU“òxÆŒÉíÁý©¦R<÷áZ~ ’+­Uÿ=œø]0ÍÎ_§*!AЗdþè÷ÿÿýç¯}íkhÆÁ…~tÆNä©~Òƒ¡ÆœýÔN»>-ì3K¹ä¼ÆÖ]ñgšY¡žyóÓÀO=ü3íw+†~bÀhʺÔC¢S{öƒð#{ù‡ï¾ûîßùò—ÿîoÙ´~Ã�¸×êiÃå×…�>5®†i¡_¦¾íü|°k¹=˜Pš|?4ômGí©=8p¬3¼íí3ÁºhNö|)tiöêݰÊýÁЮ«k×Q¸Nh b00>…®³`KW‚2sCT꿼ç~EKªý��€[l\mÅü”UÃK{@Y•dÎÎÊP@ºg›eþ€ø ?´·û.àÑíìÂ-WfzÔ±W‹S»LË 7†nÈ©Qr :wÃ[µ2Wý"rK-ª~ßWìpaƒÒ÷!¨úÅ`à+q´ZY¨ÌÑ ‘®}ßáX­—ù²ãE™»Î_7ÈQá;U«aB©ôªyçÚ}eRö»t¯ËýØénÛ Jmƒ=t»q[ôÜüvëvœ§ûèù¹J>1Ô`_ uúºàOAh}Eå!T 1!.`3¸ùºŸëXµ³´^m£*2Å×FÃýøΉëlÖsïõ:¦› Z¡#<íät0CÐI÷×}ªª@ z„pA¬ˆ¢Ê&g£33ÜsR ¡kߣ0RnŸ×pÓŒT­óØvz¾MÙÝ0­á–iÙφ}AM¡³ªHÏCå2S$•PâÿbYýñåÍQÎø‹¦Ÿµéæ¸3KÇ«9�*ß?™ƒ_𥰔†DV(DÃki¹ž}ŸüÐû§@‹vÔ?ý¦Ï›6 è CˆKÁ•>ø š¯÷\—1”¿Ÿñ·BówvvÜ>VâKËO«öï§Ï¦SÛ­y1¦ÇÐ4|´­7†èbP)‡Òª:º= ß7Ñ}cÕ=ž¶-~·\e#»\L÷s¯ñA…Ù´=šöé§Ÿºõhùø.L*¥U´ôk¢á$–lb™P…)VúŠAŸ&Ôm=–¶!ù§×IÏ'†©ü÷SaÂþ)Ü2ªŠ«í}ððA¨~Ä_¸_8Ü ×ú]œòÐiÅ7TS¬øS.°ª›œ¸…²ªoOo/?KɰºªZN€Òj˜±½u. äöÆ[ìçÎñ}sa?üáÍŸþäÇîùžœ„öxîõW~åsæ»ßýnµlÜöÏ_¸a´OOÎέoü|šžåC»ÄñûЙñ™óØw»ÓȶAs{½ùmÚ=»“‘Û?vC­µüI?Wù‹PòUítÔ¬âÛöpÎu›7ÔW|.iÅŸ0£âš°Ÿ•ÿõ£ýð¿&ý錺iU~ÒJ£°ŠYÕ~Œ™ì©_7S®›†ó×j•ÁŸi!žYóf…{¦-sQø'¾YiÕŸt]ùœõèÍW/‰zÚ1�ôöÛoÿ»o}ë[ÿÑ£7¾B õHBéŽñ ¯þr'³Â˜©e%Ë)}µ~Z,ùï;gÇ¥ÿ]÷³í£ÖuÀÁ5ˆŠp¿B ${À#oÙ/íì,탞=`;Ç[I)ÇËŠÿЧ™4±\o§÷«ž§žGôƒ tvéÎFìÚÛá:´¯æàA¼· ËL4˜ç<u‚vzf¨a¶ìú4¬ÖEå5W”†:Ó3Û5½ÌvPo ýLûš™í¬lø3Ìm#gïÉóÉãÜ¢{¶“T¼mûxo¾õ–Ùyõ3&ßÞ4öÅ÷¤V^Uññˆ²…Â:�ÕÑÙ¢››îu9³Wz¶¡Û.Ž[fã³µ±½íȨ£½å†?Ë}CÚÄò¥e(™¼õU¦€µãó¶jþ O»:ã;=è»Jî œÚÙòƒ^Û Ït�ÉþÛdÿÜ¡C®/3W%À„³éeµÓœÕ~ÚÃÇdÚÏ=û¥ËóÁ…l¢C+²è"µ/‡×qÊÃ}3«Z¿´K]¢OWûs|©öhsŒr¨°mÐ"AŽ‘ÕözËvÆå¶-4ÒÁçÜô3Ûβ¿ýN×°VU U«èúvdqê¾ÿ.¤ÒÙ2Ÿy¥mìŽÜï„.$ ûö¶]`DŸIm›K—ã¡tBÃ8VBÉÆCK¥âè(„\ˆG·Ãr1Ô£ðŒ~“ºö7RU_¾°£ö>úÍÔs„ÜD}{@ÿ¬p­KQ¹ñV«]U*Ñó,yÁcåŒÜU¬ñçÏ”&{Úî·²L ¹;qSÃåfgw³š§×C·Ý:[­ê·<V¶ñÛâ§év¬0ä–IÂ6õ6|ÕÞW°Ç oæC3ÇÇûö µÌîƒM×Y¬ÎåÑH[vÚVfpa2¼®1•gÕg.V(‰ÛCñ£ðÜ:!ô# @(¬á+õ»öutíËvfúŸ}Ýä›Û¶'aßdv;ÜïV·oÌ`Ë.cÛóv{ÎZmWaIûO¹:†sm:hÃyKÙ¸}?;—s\]Q­o«Çwª]Œ¬Þ}Sž_EYVÏÍ K¥�™ý^ö{}Óëúê4Y貉¿õ­¼pßQU3ÕnÏŸ>w«sUrÚ¾bÌ_üÅ_º÷ôÑ£Gf`¿Ga-JbÅ&Qµ&?DÝžîK£ïŠÞ W pÑññ‰[—¾# •å‰[Ú-ñß…M67·Ür››¥yõÕ¼ Û¹26n{u?='=îÁÁaø‰ÈBu±£êñý÷µcŸÓ†»üÌgŽÜ}üó¹ï´Ö«uj~§ãC4[[£0 ÿ,é5Ñå³gOÝóÐöhš‚Ez vvv]°æý÷»íxõÕWÝo„†"óA©‘½ïsráÇÚÐ_ ÚéwæøìÄ­GCti;ÆÑ÷iß¾æºA…´ÍÏžù@‘§×Ëܲz÷÷Üï˜ßnãžçîî÷š*ô¤ —î§ílôð¾’+®CÛ[o«ëq]°(|>bà(m¸ß^÷]ý =9k¹>Œ¶†ÚÖá/oûáºu™µ|;ÑQ¦DbVí_ϼœ8~¼•á§å|[†6ã•XwûrÃv`V¿~Éo¥ÆßÏ2ü”Æaã¼ñ°„ã¿bb9íÛ�¸ßfUdq-(ý{ãÎ2 Çlß‹†`ÒP™î‡'óÇ/³Ð¯›M¤®í¾KëØµ6:¦kû£mÛŽØÜ1‡»Gn}ù’ÏNa×kÛ!CÛæÐåî¡mÓã}�·ý™¯`¯Û[;}³a—Ý,:¶ÿÀþ›Ûaç¨7ÊS³i—nØ}ÃS»üî¾éº@IÿWwï—íØ}žáöŽÉ‡Ûf{gßìÚÅGYû\ŸÿæÎ–ÛŽíüÄmÇY6H溒ÍlõyåÄóûÅõY<QdÜoT}ßÒVÊq?VîÛÕºÃÎçdðgòñêïiœÝ´Y¢öá“Oݾáñ‰¯8¤ýgµ¿mûWûÓyØŒÁŸÍ­MS<ø›æ`¨vfö|x'ϾXàÖÅ!½‡L+u¼ß¾X#QS´Ôa”ù“dìëÚÙçVèÄÛ·ËõÊp²@V„u\½êd£¤O5ݧ–x©~…Qæ_§z˜-ƒ>q¹êdŒ¤*ñ²†=‡*Î’a‹'tóý¥oç}Âñ–©óúÿeÛ—¸U÷ùàƒ÷ÿÏ~ðƒÿýÎ;ï|lÆ9}àÍäp&ið§L–-j·Y,ôSÿ˜6}Ö2Ó¬ìgeÕÝß« ÿÌ»4fvø'K.ëۑצ¥÷…ùjQtìåCû÷{öúï}õ«_ÝúÎw¾ó·?÷¹ÏýÚöööß²>oÙ/î#û…Wë©oØUà$¿ýõ«™Op;d…ûñm«óÛvL¶‡[fÔó…”lWªÉl§¥=äaŽÕQm;cŸ}ø‘ùð¯þÊu¶vmg­©c´gÓ:HÕR£B¼¼¬:ØÝí,îÔ¥;vfòôÜó¸„ôW��àÚù ‘Ï¥ø0» ñê¨QÐÇïûðŒ¯àáæzf~˜½Ö¾š·dò¤óZ§—:ë:Uð¦u¦ÐIßuêùj6]צK;y …ªg8îÒAB=׉öŸïÓòg4šx`1&[ñ¾¾s6­<£êEÝV½Ë kV©ê…ÎÉXÅEòv¨D¤¡lO\¨Ûë„ÀÅF5dRzFl<ð§Ç R:¤S¬cB +˺œzé_?ìRËwÞÙ×Irû~˜Ó¾’W>Ȥ½ ÓêöM©!Ìô| ^r•“\·ôÈŒ ÿ^ß™ì\mvA/áUŸm>®ž”&·{â v²Œï8Ÿ¥Y®'Ÿ¯{ê§ö}oéµo·ªa‡‡ÊÂû)qZüÇK€çë¾1¨+þèö` jU›&VÞÙ÷÷(TZm¹ê\ƒ®k¹ï¤¶Cóu[ìk…Ï_î'ž©OdQÚoÇiUå¦,c°>—Æ}þÆÑÐ[ºÿþþžûJ·]ƒ^{í³îÒmæ‡S•m¿âéOÛ¨¡Êb…Mó¥vîÑýõ–ÅÊB''Ç~ˆ;74¢,hH5…‹b¢2jB•Êü÷ʶâç#wòÜsÕ6ù HY¨ldÌÇÝcèµÕkÒëõ]ðg8ܨ*:4T^ðª?ÿ��Ü5õƒsX¥úáNSkÇË4ÜÛÔ¾ÚL½]1\œçÉÉÏÕÉ—“ždÝÄ׿þæ·û·|EVCÝ~=Ú7ÛÚÜr$‰û_®jî`ËdÝa˜¥Ñ‘PdþY´žsì-Sñ'ì…)ðVhðæøšç>Ò•·Ã#÷|:g]wŒ¥·aÛàjÿÚ}ƒBU€ŠsÕJã«pfîD¨‘ÿ¼„“bÀ¸  ÇàO¨�ÚZÉ— ™üq»EØ?.C‰?DÛ>ñœpéÃrd?ÏíÇæ»ú »¯û³Ÿþô§ö½ï}ï'ï½÷ÞËd9ýz¨Àˉ9橇|Ò€O= 4/è3+ô3/ t-¡YÇ7'[`Þ¬ÛM./š–'ÓÒÛù”iõåÔ+Ô —-s>04ëq™_“n™×›_7�����������p]– ªÌ»OQ[î¢@Í(üšé}J3;4m™y»Lè§Éí¦ó¶®Pɲ់6³.gM«zL¸Ìg,S_.^¶’¿tz=ô“ÞÏ4œ> a�����������pÓ,Z)NOƒ9qþ(ù+j÷›U½'­ø3o9cV[áçÚB?²Î€ÉU‡âå¼PZõǘóáiÁŸì‚õçµíõ¼›¾Ö„~�����������ÀMÕ4¼RΙžÎ+jËÏz«èIç×çÕC?óÖ¿Èå¼ëÓn7·´¶YŸtPˋ楷ãÍ’ééeÝEóSEmùt¹™þæN þÔ·ÝLY6f Á�����������pû-ü™Ž™üIçÍ þ¤·ë×gý™ .ç|æ=y·›Î»”«™,[ù'½½Ê*@Mÿê›7¸Þd{/Bð�����������ÜT— þL›V4¸^é4ù3fuÕ}ndèG®*d²Hø§>í²¡Ÿi—Ó‚;M‡øšµÞ‹¶¹~}Â?�����������à¦Y4ôsÑõ‹B7 ù•^¦×Ë]λ>oZ“y+q•“lÁùMÃ?Ó¦-Z ( î4­ì3/Г™‹M!ü�����������nŠEB,³2ó*åÌlV¸gZ…Ÿe./šV¿>í¶YpþJ\u¸dÕáŸôú2 ™Uá'WŸ?kùYa¦Ì�����������¸kÊ ¦Ï Û4 Í«�4í1š|šV'2sn›ç¯Ìu…Pú«IhÙŠ@ñz=Ô“ÏYnÞm3g¾™³l†�����������ÀUY&¼2/ô³HµŸi·¥˜²Ì¢¡žEªü4¹ÝtÞZ\g˜dÕÒëMÃAùŒõäsÖ?/ø3kÚ¼éM�����������«vÙàÊEÕ~fM›à‘b髬ìsc«ü¤nB€dÕÕÒëËÌÏÞï¢m›5­É¼Ë �����������fYW@eÑJ8Ó‚5MB:ËTîY$üÓävÓykwSB"‹d.b«~}™jA‹ÜwÚýf-c˜�����������pÓ-R §4Í*�Õ¯—¦Ypç2Cy5 (5w%nZðdÕVq½Ið§É´&ó������������nƒËVû©O»LÈg™ëMn7w¥Zææ¹LõŸúíË\Ÿ¦4³“g„x�����������À}´LHfZЧÉp_óæ­"ð3kZ“yWî&‡UVUý§~{Ña–½=kÚ"ó�����������nºE†úš5m‘ÛË–¹ÝtÞµ¹‰Rëªþ³È¼&·�����������î«U¦M[GhÚíYӚ̻V7=ø#« ÿ¬ãö"Ó������������îšrÉeVþYæö¬iMæ]»Ûü‘e†ÌºÎ€O“ÐÁ �����������pW¬3ü3mÚº?Mæ_»Ûü‰.[ýgÚ´U-sÑô¦ó�����������n«eÃ4Ë„}–]fÖ´&ón”Ûü‘EÃ?³¦/øYfúEó������������î’e‚5M§_6Üs'B?rƒ?²lUu ßu~ ����������€«¶ŠÌ:+�-2mÞô¦óoœÛü‘U†V9ý¢y«¼�����������ÀuX&$³Î*@ËNo:ÿFºÍÁÉ.±Ìª=‹wù�����������€»f‘ðL¹âyË~š.s#Ýöà\&ü³®yË,�����������p×4 Õ¬:tѼE–¹±îBð'Zg�¨Éü¦Ë¬óþ������������ëvÙ°Ì*9÷:ðݥପ Ï:B>„z�����������À}±h°fÝa e–»ñîZðGV=×MÒ‹ �����������X•«ì:¤sïB?rƒ?²H(f]Ë®â~������������·Õ²!›Eî·®eo…»ü‘eÂ6·iø.ÂD�����������`U®3³ŽaÁVqŸï.¢«�­úþ������������wÍeÃ7~jîCðG.ÄYWˆ‡p�����������¸+Ö°¹ÌzïtèGîKðGV´!°�����������°« ëÜùÐܧàO´Žàa �����������€Å¬#œs/?Ñ} þDWÖ!����������� áÜ«ÀOtŸƒ?¡�����������€Ûé^~"‚?“�����������Ül÷:ì“"ø3 �����������€›…ÀO ÁŸf�����������\-‚> ø³<Â@������������«AÈg ÖƒP�����������À$Â=+Fðçî l�����������š"„s������������n¡Ü�������������¸uþ�������������·Á������������à"ø������������ÜB������������€[ˆà������������p ü������������n!‚?������������À-ô×ù7öt÷Ð����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/scripts/������������������������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0017025�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/scripts/countries.json.in�������������������������������������������������0000664�0000000�0000000�00000567670�15240005042�0022365�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{"features":[ { "N": "Fiji", "I": "FJ", "C": [[[[180, -16.067], [180, -16.555], [179.364, -16.801], [178.725, -17.012], [178.597, -16.639], [179.097, -16.434], [179.414, -16.379], [180, -16.067]]], [[[178.126, -17.505], [178.374, -17.34], [178.718, -17.628], [178.553, -18.151], [177.933, -18.288], [177.381, -18.164], [177.285, -17.725], [177.671, -17.381], [178.126, -17.505]]], [[[-179.793, -16.021], [-179.917, -16.502], [-180, -16.555], [-180, -16.067], [-179.793, -16.021]]]] }, { "N": "Tanzania", "I": "TZ", "C": [[[[33.904, -0.95], [34.073, -1.06], [37.699, -3.097], [37.767, -3.677], [39.202, -4.677], [38.741, -5.909], [38.8, -6.476], [39.44, -6.84], [39.47, -7.1], [39.195, -7.704], [39.252, -8.008], [39.187, -8.486], [39.536, -9.112], [39.95, -10.098], [40.317, -10.317], [40.317, -10.317], [39.521, -10.897], [38.428, -11.285], [37.828, -11.269], [37.471, -11.569], [36.775, -11.595], [36.514, -11.721], [35.312, -11.439], [34.56, -11.52], [34.28, -10.16], [33.941, -9.694], [33.74, -9.417], [32.759, -9.231], [32.192, -8.93], [31.556, -8.762], [31.158, -8.595], [30.74, -8.34], [30.74, -8.34], [30.2, -7.08], [29.62, -6.52], [29.42, -5.94], [29.52, -5.42], [29.34, -4.5], [29.754, -4.452], [30.116, -4.09], [30.506, -3.569], [30.752, -3.359], [30.743, -3.034], [30.528, -2.808], [30.47, -2.414], [30.47, -2.414], [30.758, -2.287], [30.816, -1.699], [30.419, -1.135], [30.77, -1.015], [31.866, -1.027], [33.904, -0.95]]]] }, { "N": "Western Sahara", "I": "EH", "C": [[[[-8.666, 27.656], [-8.665, 27.589], [-8.684, 27.396], [-8.687, 25.881], [-11.969, 25.933], [-11.937, 23.375], [-12.874, 23.285], [-13.119, 22.771], [-12.929, 21.327], [-16.845, 21.333], [-17.063, 21], [-17.02, 21.422], [-17.003, 21.421], [-14.751, 21.501], [-14.631, 21.861], [-14.221, 22.31], [-13.891, 23.691], [-12.501, 24.77], [-12.031, 26.031], [-11.718, 26.104], [-11.393, 26.883], [-10.551, 26.991], [-10.189, 26.861], [-9.735, 26.861], [-9.413, 27.088], [-8.795, 27.121], [-8.818, 27.656], [-8.666, 27.656]]]] }, { "N": "Canada", "I": "CA", "C": [[[[-122.84, 49], [-122.974, 49.003], [-124.91, 49.985], [-125.625, 50.417], [-127.436, 50.831], [-127.993, 51.716], [-127.85, 52.33], [-129.13, 52.755], [-129.305, 53.562], [-130.515, 54.288], [-130.536, 54.803], [-130.536, 54.803], [-129.98, 55.285], [-130.008, 55.916], [-131.708, 56.552], [-132.73, 57.693], [-133.356, 58.41], [-134.271, 58.861], [-134.945, 59.271], [-135.476, 59.788], [-136.48, 59.464], [-137.452, 58.905], [-138.341, 59.562], [-139.039, 60], [-140.013, 60.277], [-140.998, 60.306], [-140.993, 66], [-140.986, 69.712], [-140.986, 69.712], [-139.121, 69.471], [-137.546, 68.99], [-136.504, 68.898], [-135.626, 69.315], [-134.415, 69.627], [-132.929, 69.505], [-131.431, 69.945], [-129.795, 70.194], [-129.108, 69.779], [-128.362, 70.013], [-128.138, 70.484], [-127.447, 70.377], [-125.756, 69.481], [-124.425, 70.158], [-124.29, 69.4], [-123.061, 69.564], [-122.683, 69.856], [-121.472, 69.798], [-119.943, 69.378], [-117.603, 69.011], [-116.226, 68.842], [-115.247, 68.906], [-113.898, 68.399], [-115.305, 67.903], [-113.497, 67.688], [-110.798, 67.806], [-109.946, 67.981], [-108.88, 67.381], [-107.792, 67.887], [-108.813, 68.312], [-108.167, 68.654], [-106.95, 68.7], [-106.15, 68.8], [-105.343, 68.561], [-104.338, 68.018], [-103.221, 68.098], [-101.454, 67.647], [-99.902, 67.806], [-98.443, 67.782], [-98.559, 68.404], [-97.669, 68.579], [-96.12, 68.239], [-96.126, 67.293], [-95.489, 68.091], [-94.685, 68.064], [-94.233, 69.069], [-95.304, 69.686], [-96.471, 70.09], [-96.391, 71.195], [-95.209, 71.921], [-93.89, 71.76], [-92.878, 71.319], [-91.52, 70.191], [-92.407, 69.7], [-90.547, 69.498], [-90.552, 68.475], [-89.215, 69.259], [-88.02, 68.615], [-88.317, 67.873], [-87.35, 67.199], [-86.306, 67.921], [-85.577, 68.785], [-85.522, 69.882], [-84.101, 69.805], [-82.623, 69.658], [-81.28, 69.162], [-81.22, 68.666], [-81.964, 68.133], [-81.259, 67.597], [-81.387, 67.111], [-83.345, 66.412], [-84.735, 66.257], [-85.769, 66.558], [-86.068, 66.056], [-87.031, 65.213], [-87.323, 64.776], [-88.483, 64.099], [-89.914, 64.033], [-90.704, 63.61], [-90.77, 62.96], [-91.933, 62.835], [-93.157, 62.025], [-94.242, 60.899], [-94.629, 60.11], [-94.685, 58.949], [-93.215, 58.782], [-92.765, 57.846], [-92.297, 57.087], [-90.898, 57.285], [-89.04, 56.852], [-88.04, 56.472], [-87.324, 55.999], [-86.071, 55.724], [-85.012, 55.303], [-83.361, 55.245], [-82.273, 55.148], [-82.436, 54.282], [-82.125, 53.277], [-81.401, 52.158], [-79.913, 51.208], [-79.143, 51.534], [-78.602, 52.562], [-79.124, 54.141], [-79.83, 54.668], [-78.229, 55.136], [-77.096, 55.837], [-76.541, 56.534], [-76.623, 57.203], [-77.302, 58.052], [-78.517, 58.805], [-77.337, 59.853], [-77.773, 60.758], [-78.107, 62.32], [-77.411, 62.551], [-75.696, 62.278], [-74.668, 62.181], [-73.84, 62.444], [-72.909, 62.105], [-71.677, 61.525], [-71.374, 61.137], [-69.59, 61.061], [-69.62, 60.221], [-69.288, 58.957], [-68.375, 58.801], [-67.65, 58.212], [-66.202, 58.767], [-65.245, 59.871], [-64.584, 60.336], [-63.805, 59.443], [-62.502, 58.167], [-61.397, 56.967], [-61.799, 56.339], [-60.469, 55.775], [-59.57, 55.204], [-57.975, 54.945], [-57.333, 54.627], [-56.937, 53.78], [-56.158, 53.647], [-55.756, 53.27], [-55.683, 52.147], [-56.409, 51.771], [-57.127, 51.42], [-58.775, 51.064], [-60.033, 50.243], [-61.724, 50.08], [-63.863, 50.291], [-65.363, 50.298], [-66.399, 50.229], [-67.236, 49.512], [-68.511, 49.068], [-69.954, 47.745], [-71.105, 46.822], [-70.255, 46.986], [-68.65, 48.3], [-66.552, 49.133], [-65.056, 49.233], [-64.171, 48.742], [-65.115, 48.071], [-64.799, 46.993], [-64.472, 46.238], [-63.173, 45.739], [-61.521, 45.884], [-60.518, 47.008], [-60.449, 46.283], [-59.803, 45.92], [-61.04, 45.265], [-63.255, 44.67], [-64.247, 44.266], [-65.364, 43.545], [-66.123, 43.619], [-66.162, 44.465], [-64.425, 45.292], [-66.026, 45.259], [-67.137, 45.138], [-67.791, 45.703], [-67.79, 47.066], [-68.234, 47.355], [-68.905, 47.185], [-69.237, 47.448], [-70, 46.693], [-70.305, 45.915], [-70.66, 45.46], [-71.085, 45.305], [-71.405, 45.255], [-71.505, 45.008], [-73.348, 45.007], [-74.867, 45], [-75.318, 44.816], [-76.375, 44.096], [-76.5, 44.018], [-76.82, 43.629], [-77.738, 43.629], [-78.72, 43.625], [-79.172, 43.466], [-79.01, 43.27], [-78.92, 42.965], [-78.939, 42.864], [-80.247, 42.366], [-81.278, 42.209], [-82.439, 41.675], [-82.69, 41.675], [-83.03, 41.833], [-83.142, 41.976], [-83.12, 42.08], [-82.9, 42.43], [-82.43, 42.98], [-82.138, 43.571], [-82.338, 44.44], [-82.551, 45.348], [-83.593, 45.817], [-83.47, 45.995], [-83.616, 46.117], [-83.891, 46.117], [-84.092, 46.275], [-84.142, 46.512], [-84.337, 46.409], [-84.605, 46.44], [-84.544, 46.539], [-84.779, 46.637], [-84.876, 46.9], [-85.652, 47.22], [-86.462, 47.553], [-87.44, 47.94], [-88.378, 48.303], [-89.273, 48.02], [-89.6, 48.01], [-90.83, 48.27], [-91.64, 48.14], [-92.61, 48.45], [-93.631, 48.609], [-94.329, 48.671], [-94.64, 48.84], [-94.818, 49.389], [-95.156, 49.384], [-95.159, 49], [-97.229, 49.001], [-100.65, 49], [-104.048, 49], [-107.05, 49], [-110.05, 49], [-113, 49], [-116.048, 49], [-117.031, 49], [-120, 49], [-122.84, 49]]], [[[-83.994, 62.453], [-83.25, 62.914], [-81.877, 62.905], [-81.898, 62.711], [-83.069, 62.159], [-83.775, 62.182], [-83.994, 62.453]]], [[[-79.776, 72.803], [-80.876, 73.333], [-80.834, 73.693], [-80.353, 73.76], [-78.064, 73.652], [-76.34, 73.103], [-76.251, 72.826], [-77.314, 72.856], [-78.392, 72.877], [-79.486, 72.742], [-79.776, 72.803]]], [[[-80.315, 62.086], [-79.929, 62.386], [-79.52, 62.364], [-79.266, 62.159], [-79.658, 61.633], [-80.1, 61.718], [-80.362, 62.016], [-80.315, 62.086]]], [[[-93.613, 74.98], [-94.157, 74.592], [-95.609, 74.667], [-96.821, 74.928], [-96.289, 75.378], [-94.851, 75.647], [-93.978, 75.296], [-93.613, 74.98]]], [[[-93.84, 77.52], [-94.296, 77.491], [-96.17, 77.555], [-96.436, 77.835], [-94.423, 77.82], [-93.721, 77.634], [-93.84, 77.52]]], [[[-96.754, 78.766], [-95.559, 78.418], [-95.83, 78.057], [-97.31, 77.851], [-98.124, 78.083], [-98.553, 78.458], [-98.632, 78.872], [-97.337, 78.832], [-96.754, 78.766]]], [[[-88.15, 74.392], [-89.765, 74.516], [-92.422, 74.838], [-92.768, 75.387], [-92.89, 75.883], [-93.894, 76.319], [-95.962, 76.441], [-97.121, 76.751], [-96.745, 77.161], [-94.684, 77.098], [-93.574, 76.776], [-91.605, 76.779], [-90.742, 76.45], [-90.97, 76.074], [-89.822, 75.848], [-89.187, 75.61], [-87.838, 75.566], [-86.379, 75.482], [-84.79, 75.699], [-82.753, 75.784], [-81.129, 75.714], [-80.058, 75.337], [-79.834, 74.923], [-80.458, 74.657], [-81.949, 74.442], [-83.229, 74.564], [-86.097, 74.41], [-88.15, 74.392]]], [[[-111.264, 78.153], [-109.854, 77.996], [-110.187, 77.697], [-112.051, 77.409], [-113.534, 77.732], [-112.725, 78.051], [-111.264, 78.153]]], [[[-110.964, 78.804], [-109.663, 78.602], [-110.881, 78.407], [-112.542, 78.408], [-112.526, 78.551], [-111.5, 78.85], [-110.964, 78.804]]], [[[-55.6, 51.317], [-56.134, 50.687], [-56.796, 49.812], [-56.143, 50.15], [-55.471, 49.936], [-55.822, 49.587], [-54.935, 49.313], [-54.474, 49.557], [-53.477, 49.249], [-53.786, 48.517], [-53.086, 48.688], [-52.959, 48.157], [-52.648, 47.536], [-53.069, 46.655], [-53.521, 46.618], [-54.179, 46.807], [-53.962, 47.625], [-54.24, 47.752], [-55.401, 46.885], [-55.997, 46.92], [-55.291, 47.39], [-56.251, 47.633], [-57.325, 47.573], [-59.266, 47.603], [-59.419, 47.899], [-58.797, 48.252], [-59.232, 48.523], [-58.392, 49.126], [-57.359, 50.718], [-56.739, 51.287], [-55.871, 51.632], [-55.407, 51.588], [-55.6, 51.317]]], [[[-83.883, 65.11], [-82.788, 64.767], [-81.642, 64.455], [-81.553, 63.98], [-80.817, 64.057], [-80.103, 63.726], [-80.991, 63.411], [-82.547, 63.652], [-83.109, 64.102], [-84.1, 63.57], [-85.523, 63.052], [-85.867, 63.637], [-87.222, 63.541], [-86.353, 64.036], [-86.225, 64.823], [-85.884, 65.739], [-85.161, 65.657], [-84.976, 65.218], [-84.464, 65.372], [-83.883, 65.11]]], [[[-78.771, 72.352], [-77.825, 72.75], [-75.606, 72.244], [-74.229, 71.767], [-74.099, 71.331], [-72.242, 71.557], [-71.2, 70.92], [-68.786, 70.525], [-67.915, 70.122], [-66.969, 69.186], [-68.805, 68.72], [-66.45, 68.067], [-64.862, 67.848], [-63.425, 66.928], [-61.852, 66.862], [-62.163, 66.16], [-63.918, 64.999], [-65.149, 65.426], [-66.721, 66.388], [-68.015, 66.263], [-68.141, 65.69], [-67.09, 65.108], [-65.732, 64.648], [-65.32, 64.383], [-64.669, 63.393], [-65.014, 62.674], [-66.275, 62.945], [-68.783, 63.746], [-67.37, 62.884], [-66.328, 62.28], [-66.166, 61.931], [-68.877, 62.33], [-71.023, 62.911], [-72.235, 63.398], [-71.886, 63.68], [-73.378, 64.194], [-74.834, 64.679], [-74.819, 64.389], [-77.71, 64.23], [-78.556, 64.573], [-77.897, 65.309], [-76.018, 65.327], [-73.96, 65.455], [-74.294, 65.812], [-73.945, 66.311], [-72.651, 67.285], [-72.926, 67.727], [-73.312, 68.069], [-74.843, 68.555], [-76.869, 68.895], [-76.229, 69.148], [-77.287, 69.77], [-78.169, 69.826], [-78.957, 70.167], [-79.492, 69.872], [-81.305, 69.743], [-84.945, 69.967], [-87.06, 70.26], [-88.682, 70.411], [-89.513, 70.762], [-88.468, 71.218], [-89.888, 71.223], [-90.205, 72.235], [-89.437, 73.129], [-88.408, 73.538], [-85.826, 73.804], [-86.562, 73.157], [-85.774, 72.534], [-84.85, 73.34], [-82.316, 73.751], [-80.6, 72.717], [-80.749, 72.062], [-78.771, 72.352]]], [[[-94.504, 74.135], [-92.42, 74.1], [-90.51, 73.857], [-92.004, 72.966], [-93.196, 72.772], [-94.269, 72.025], [-95.41, 72.062], [-96.034, 72.94], [-96.018, 73.437], [-95.496, 73.862], [-94.504, 74.135]]], [[[-122.855, 76.117], [-122.855, 76.117], [-121.158, 76.865], [-119.104, 77.512], [-117.57, 77.498], [-116.199, 77.645], [-116.336, 76.877], [-117.106, 76.53], [-118.04, 76.481], [-119.899, 76.053], [-121.5, 75.9], [-122.855, 76.117]]], [[[-132.71, 54.04], [-131.75, 54.12], [-132.049, 52.985], [-131.179, 52.18], [-131.578, 52.182], [-132.18, 52.64], [-132.55, 53.1], [-133.055, 53.411], [-133.24, 53.851], [-133.18, 54.17], [-132.71, 54.04]]], [[[-105.492, 79.302], [-103.529, 79.165], [-100.825, 78.8], [-100.06, 78.325], [-99.671, 77.908], [-101.304, 78.019], [-102.95, 78.343], [-105.176, 78.38], [-104.21, 78.677], [-105.42, 78.918], [-105.492, 79.302]]], [[[-123.51, 48.51], [-124.013, 48.371], [-125.655, 48.825], [-125.955, 49.18], [-126.85, 49.53], [-127.03, 49.815], [-128.059, 49.995], [-128.445, 50.539], [-128.358, 50.771], [-127.309, 50.553], [-126.695, 50.401], [-125.755, 50.295], [-125.415, 49.95], [-124.921, 49.475], [-123.923, 49.062], [-123.51, 48.51]]], [[[-121.538, 74.449], [-120.11, 74.241], [-117.556, 74.186], [-116.584, 73.896], [-115.511, 73.475], [-116.768, 73.223], [-119.22, 72.52], [-120.46, 71.82], [-120.46, 71.384], [-123.092, 70.902], [-123.62, 71.34], [-125.929, 71.869], [-125.5, 72.292], [-124.807, 73.023], [-123.94, 73.68], [-124.918, 74.293], [-121.538, 74.449]]], [[[-107.819, 75.846], [-106.929, 76.013], [-105.881, 75.969], [-105.705, 75.48], [-106.313, 75.005], [-109.7, 74.85], [-112.223, 74.417], [-113.744, 74.394], [-113.871, 74.72], [-111.794, 75.162], [-116.312, 75.043], [-117.71, 75.222], [-116.346, 76.199], [-115.405, 76.479], [-112.591, 76.141], [-110.814, 75.549], [-109.067, 75.473], [-110.497, 76.43], [-109.581, 76.794], [-108.549, 76.678], [-108.211, 76.202], [-107.819, 75.846]]], [[[-106.523, 73.076], [-105.402, 72.673], [-104.775, 71.698], [-104.465, 70.993], [-102.785, 70.498], [-100.981, 70.024], [-101.089, 69.584], [-102.731, 69.504], [-102.093, 69.12], [-102.43, 68.753], [-104.24, 68.91], [-105.96, 69.18], [-107.123, 69.119], [-109, 68.78], [-111.534, 68.63], [-113.313, 68.536], [-113.855, 69.007], [-115.22, 69.28], [-116.108, 69.168], [-117.34, 69.96], [-116.675, 70.067], [-115.131, 70.237], [-113.721, 70.192], [-112.416, 70.366], [-114.35, 70.6], [-116.487, 70.52], [-117.905, 70.541], [-118.432, 70.909], [-116.113, 71.309], [-117.656, 71.295], [-119.402, 71.559], [-118.563, 72.308], [-117.866, 72.706], [-115.189, 73.315], [-114.167, 73.121], [-114.666, 72.653], [-112.441, 72.955], [-111.05, 72.45], [-109.92, 72.961], [-109.007, 72.633], [-108.188, 71.651], [-107.686, 72.065], [-108.396, 73.09], [-107.516, 73.236], [-106.523, 73.076]]], [[[-100.438, 72.706], [-101.54, 73.36], [-100.356, 73.844], [-99.164, 73.633], [-97.38, 73.76], [-97.12, 73.47], [-98.054, 72.991], [-96.54, 72.56], [-96.72, 71.66], [-98.36, 71.273], [-99.323, 71.356], [-100.015, 71.738], [-102.5, 72.51], [-102.48, 72.83], [-100.438, 72.706]]], [[[-106.6, 73.6], [-105.26, 73.64], [-104.5, 73.42], [-105.38, 72.76], [-106.94, 73.46], [-106.6, 73.6]]], [[[-98.5, 76.72], [-97.736, 76.257], [-97.704, 75.743], [-98.16, 75], [-99.809, 74.897], [-100.884, 75.057], [-100.863, 75.641], [-102.502, 75.564], [-102.566, 76.337], [-101.49, 76.305], [-99.983, 76.646], [-98.577, 76.589], [-98.5, 76.72]]], [[[-96.016, 80.602], [-95.323, 80.907], [-94.298, 80.977], [-94.735, 81.206], [-92.41, 81.257], [-91.133, 80.723], [-89.45, 80.509], [-87.81, 80.32], [-87.02, 79.66], [-85.814, 79.337], [-87.188, 79.039], [-89.035, 78.287], [-90.804, 78.215], [-92.877, 78.343], [-93.951, 78.751], [-93.936, 79.114], [-93.145, 79.38], [-94.974, 79.372], [-96.076, 79.705], [-96.71, 80.158], [-96.016, 80.602]]], [[[-91.587, 81.894], [-90.1, 82.085], [-88.932, 82.118], [-86.97, 82.28], [-85.5, 82.652], [-84.26, 82.6], [-83.18, 82.32], [-82.42, 82.86], [-81.1, 83.02], [-79.307, 83.131], [-76.25, 83.172], [-75.719, 83.064], [-72.832, 83.233], [-70.666, 83.17], [-68.5, 83.106], [-65.827, 83.028], [-63.68, 82.9], [-61.85, 82.629], [-61.894, 82.362], [-64.334, 81.928], [-66.753, 81.725], [-67.658, 81.501], [-65.48, 81.507], [-67.84, 80.9], [-69.47, 80.617], [-71.18, 79.8], [-73.243, 79.634], [-73.88, 79.43], [-76.908, 79.323], [-75.529, 79.198], [-76.22, 79.019], [-75.393, 78.526], [-76.344, 78.183], [-77.889, 77.9], [-78.363, 77.509], [-79.76, 77.21], [-79.62, 76.983], [-77.911, 77.022], [-77.889, 76.778], [-80.561, 76.178], [-83.174, 76.454], [-86.112, 76.299], [-87.6, 76.42], [-89.491, 76.472], [-89.616, 76.952], [-87.767, 77.178], [-88.26, 77.9], [-87.65, 77.97], [-84.976, 77.539], [-86.34, 78.18], [-87.962, 78.372], [-87.152, 78.759], [-85.379, 78.997], [-85.095, 79.345], [-86.507, 79.736], [-86.932, 80.251], [-84.198, 80.208], [-83.409, 80.1], [-81.848, 80.464], [-84.1, 80.58], [-87.599, 80.516], [-89.367, 80.856], [-90.2, 81.26], [-91.368, 81.553], [-91.587, 81.894]]], [[[-75.216, 67.444], [-75.866, 67.149], [-76.987, 67.099], [-77.236, 67.588], [-76.812, 68.149], [-75.895, 68.287], [-75.115, 68.01], [-75.103, 67.582], [-75.216, 67.444]]], [[[-96.257, 69.49], [-95.648, 69.108], [-96.27, 68.757], [-97.617, 69.06], [-98.432, 68.951], [-99.797, 69.4], [-98.917, 69.71], [-98.218, 70.144], [-97.157, 69.86], [-96.557, 69.68], [-96.257, 69.49]]], [[[-64.519, 49.873], [-64.173, 49.957], [-62.858, 49.706], [-61.836, 49.289], [-61.806, 49.105], [-62.293, 49.087], [-63.589, 49.401], [-64.519, 49.873]]], [[[-64.015, 47.036], [-63.664, 46.55], [-62.939, 46.416], [-62.012, 46.443], [-62.504, 46.033], [-62.874, 45.968], [-64.143, 46.393], [-64.393, 46.727], [-64.015, 47.036]]]] }, { "N": "United States", "I": "US", "C": [[[[-155.402, 20.08], [-155.225, 19.993], [-155.062, 19.859], [-154.807, 19.509], [-154.831, 19.453], [-155.222, 19.24], [-155.542, 19.083], [-155.688, 18.916], [-155.937, 19.059], [-155.908, 19.339], [-156.073, 19.703], [-156.024, 19.814], [-155.85, 19.977], [-155.919, 20.174], [-155.861, 20.267], [-155.785, 20.249], [-155.402, 20.08]]], [[[-155.996, 20.764], [-156.079, 20.644], [-156.414, 20.572], [-156.587, 20.783], [-156.702, 20.864], [-156.711, 20.927], [-156.613, 21.012], [-156.257, 20.917], [-155.996, 20.764]]], [[[-156.758, 21.177], [-156.789, 21.069], [-157.325, 21.098], [-157.25, 21.22], [-156.758, 21.177]]], [[[-158.025, 21.717], [-157.942, 21.653], [-157.653, 21.322], [-157.707, 21.264], [-157.779, 21.277], [-158.127, 21.312], [-158.254, 21.539], [-158.293, 21.579], [-158.025, 21.717]]], [[[-159.366, 22.215], [-159.345, 21.982], [-159.464, 21.883], [-159.801, 22.065], [-159.749, 22.138], [-159.596, 22.236], [-159.366, 22.215]]], [[[-166.468, 60.384], [-165.674, 60.294], [-165.579, 59.91], [-166.193, 59.754], [-166.848, 59.941], [-167.455, 60.213], [-166.468, 60.384]]], [[[-153.229, 57.969], [-152.565, 57.901], [-152.141, 57.591], [-153.006, 57.116], [-154.005, 56.735], [-154.516, 56.993], [-154.671, 57.461], [-153.763, 57.817], [-153.229, 57.969]]], [[[-140.986, 69.712], [-140.986, 69.712], [-140.993, 66], [-140.998, 60.306], [-140.013, 60.277], [-139.039, 60], [-138.341, 59.562], [-137.452, 58.905], [-136.48, 59.464], [-135.476, 59.788], [-134.945, 59.271], [-134.271, 58.861], [-133.356, 58.41], [-132.73, 57.693], [-131.708, 56.552], [-130.008, 55.916], [-129.98, 55.285], [-130.536, 54.803], [-130.536, 54.803], [-130.536, 54.803], [-131.086, 55.179], [-131.967, 55.498], [-132.25, 56.37], [-133.539, 57.179], [-134.078, 58.123], [-135.038, 58.188], [-136.628, 58.212], [-137.8, 58.5], [-139.868, 59.538], [-140.825, 59.728], [-142.574, 60.084], [-143.959, 59.999], [-145.926, 60.459], [-147.114, 60.885], [-148.224, 60.673], [-148.018, 59.978], [-148.571, 59.914], [-149.728, 59.706], [-150.608, 59.368], [-151.716, 59.156], [-151.859, 59.745], [-151.41, 60.726], [-150.347, 61.034], [-150.621, 61.284], [-151.896, 60.727], [-152.578, 60.062], [-154.019, 59.35], [-153.288, 58.865], [-154.232, 58.146], [-155.307, 57.728], [-156.308, 57.423], [-156.556, 56.98], [-158.117, 56.464], [-158.433, 55.994], [-159.603, 55.567], [-160.29, 55.644], [-161.223, 55.365], [-162.238, 55.024], [-163.069, 54.69], [-164.786, 54.404], [-164.942, 54.572], [-163.848, 55.039], [-162.87, 55.348], [-161.804, 55.895], [-160.564, 56.008], [-160.071, 56.418], [-158.684, 57.017], [-158.461, 57.217], [-157.723, 57.57], [-157.55, 58.328], [-157.042, 58.919], [-158.195, 58.616], [-158.517, 58.788], [-159.059, 58.424], [-159.712, 58.931], [-159.981, 58.573], [-160.355, 59.071], [-161.355, 58.671], [-161.969, 58.672], [-162.055, 59.267], [-161.874, 59.634], [-162.518, 59.99], [-163.818, 59.798], [-164.662, 60.267], [-165.346, 60.507], [-165.351, 61.074], [-166.121, 61.5], [-165.734, 62.075], [-164.919, 62.633], [-164.563, 63.146], [-163.753, 63.219], [-163.067, 63.059], [-162.261, 63.542], [-161.534, 63.456], [-160.773, 63.766], [-160.958, 64.223], [-161.518, 64.403], [-160.778, 64.789], [-161.392, 64.777], [-162.453, 64.559], [-162.758, 64.339], [-163.546, 64.559], [-164.961, 64.447], [-166.425, 64.687], [-166.845, 65.089], [-168.111, 65.67], [-166.705, 66.088], [-164.475, 66.577], [-163.653, 66.577], [-163.789, 66.077], [-161.678, 66.116], [-162.49, 66.736], [-163.72, 67.116], [-164.431, 67.616], [-165.39, 68.043], [-166.764, 68.359], [-166.205, 68.883], [-164.431, 68.916], [-163.169, 69.371], [-162.931, 69.858], [-161.909, 70.333], [-160.935, 70.448], [-159.039, 70.892], [-158.12, 70.825], [-156.581, 71.358], [-155.068, 71.148], [-154.344, 70.696], [-153.9, 70.89], [-152.21, 70.83], [-152.27, 70.6], [-150.74, 70.43], [-149.72, 70.53], [-147.613, 70.214], [-145.69, 70.12], [-144.92, 69.99], [-143.589, 70.153], [-142.073, 69.852], [-140.986, 69.712], [-140.986, 69.712]]], [[[-171.732, 63.783], [-171.114, 63.592], [-170.491, 63.695], [-169.683, 63.431], [-168.689, 63.298], [-168.772, 63.189], [-169.529, 62.977], [-170.291, 63.194], [-170.671, 63.376], [-171.553, 63.318], [-171.791, 63.406], [-171.732, 63.783]]], [[[-122.84, 49], [-120, 49], [-117.031, 49], [-116.048, 49], [-113, 49], [-110.05, 49], [-107.05, 49], [-104.048, 49], [-100.65, 49], [-97.229, 49.001], [-95.159, 49], [-95.156, 49.384], [-94.818, 49.389], [-94.64, 48.84], [-94.329, 48.671], [-93.631, 48.609], [-92.61, 48.45], [-91.64, 48.14], [-90.83, 48.27], [-89.6, 48.01], [-89.273, 48.02], [-88.378, 48.303], [-87.44, 47.94], [-86.462, 47.553], [-85.652, 47.22], [-84.876, 46.9], [-84.779, 46.637], [-84.544, 46.539], [-84.605, 46.44], [-84.337, 46.409], [-84.142, 46.512], [-84.092, 46.275], [-83.891, 46.117], [-83.616, 46.117], [-83.47, 45.995], [-83.593, 45.817], [-82.551, 45.348], [-82.338, 44.44], [-82.138, 43.571], [-82.43, 42.98], [-82.9, 42.43], [-83.12, 42.08], [-83.142, 41.976], [-83.03, 41.833], [-82.69, 41.675], [-82.439, 41.675], [-81.278, 42.209], [-80.247, 42.366], [-78.939, 42.864], [-78.92, 42.965], [-79.01, 43.27], [-79.172, 43.466], [-78.72, 43.625], [-77.738, 43.629], [-76.82, 43.629], [-76.5, 44.018], [-76.375, 44.096], [-75.318, 44.816], [-74.867, 45], [-73.348, 45.007], [-71.505, 45.008], [-71.405, 45.255], [-71.085, 45.305], [-70.66, 45.46], [-70.305, 45.915], [-70, 46.693], [-69.237, 47.448], [-68.905, 47.185], [-68.234, 47.355], [-67.79, 47.066], [-67.791, 45.703], [-67.137, 45.138], [-66.965, 44.81], [-68.033, 44.325], [-69.06, 43.98], [-70.116, 43.684], [-70.645, 43.09], [-70.815, 42.865], [-70.825, 42.335], [-70.495, 41.805], [-70.08, 41.78], [-70.185, 42.145], [-69.885, 41.923], [-69.965, 41.637], [-70.64, 41.475], [-71.12, 41.494], [-71.86, 41.32], [-72.295, 41.27], [-72.876, 41.221], [-73.71, 40.931], [-72.241, 41.119], [-71.945, 40.93], [-73.345, 40.63], [-73.982, 40.628], [-73.952, 40.751], [-74.257, 40.474], [-73.962, 40.428], [-74.178, 39.709], [-74.906, 38.94], [-74.98, 39.196], [-75.2, 39.248], [-75.528, 39.498], [-75.32, 38.96], [-75.072, 38.782], [-75.057, 38.404], [-75.377, 38.016], [-75.94, 37.217], [-76.031, 37.257], [-75.722, 37.937], [-76.233, 38.319], [-76.35, 39.15], [-76.543, 38.718], [-76.329, 38.083], [-76.99, 38.24], [-76.302, 37.918], [-76.259, 36.966], [-75.972, 36.897], [-75.868, 36.551], [-75.727, 35.551], [-76.363, 34.809], [-77.398, 34.512], [-78.055, 33.925], [-78.554, 33.861], [-79.061, 33.494], [-79.204, 33.158], [-80.301, 32.509], [-80.865, 32.033], [-81.336, 31.44], [-81.49, 30.73], [-81.314, 30.036], [-80.98, 29.18], [-80.536, 28.472], [-80.53, 28.04], [-80.057, 26.88], [-80.088, 26.206], [-80.132, 25.817], [-80.381, 25.206], [-80.68, 25.08], [-81.172, 25.201], [-81.33, 25.64], [-81.71, 25.87], [-82.24, 26.73], [-82.705, 27.495], [-82.855, 27.886], [-82.65, 28.55], [-82.93, 29.1], [-83.71, 29.937], [-84.1, 30.09], [-85.109, 29.636], [-85.288, 29.686], [-85.773, 30.153], [-86.4, 30.4], [-87.53, 30.274], [-88.418, 30.385], [-89.18, 30.316], [-89.594, 30.16], [-89.414, 29.894], [-89.43, 29.489], [-89.218, 29.291], [-89.408, 29.16], [-89.779, 29.307], [-90.155, 29.117], [-90.88, 29.149], [-91.627, 29.677], [-92.499, 29.552], [-93.226, 29.784], [-93.848, 29.714], [-94.69, 29.48], [-95.6, 28.739], [-96.594, 28.307], [-97.14, 27.83], [-97.37, 27.38], [-97.38, 26.69], [-97.33, 26.21], [-97.14, 25.87], [-97.53, 25.84], [-98.24, 26.06], [-99.02, 26.37], [-99.3, 26.84], [-99.52, 27.54], [-100.11, 28.11], [-100.456, 28.696], [-100.958, 29.381], [-101.662, 29.779], [-102.48, 29.76], [-103.11, 28.97], [-103.94, 29.27], [-104.457, 29.572], [-104.706, 30.122], [-105.037, 30.644], [-105.632, 31.084], [-106.143, 31.4], [-106.508, 31.755], [-108.24, 31.755], [-108.242, 31.342], [-109.035, 31.342], [-111.024, 31.335], [-113.305, 32.039], [-114.815, 32.525], [-114.721, 32.721], [-115.991, 32.612], [-117.128, 32.535], [-117.296, 33.046], [-117.944, 33.621], [-118.411, 33.741], [-118.52, 34.028], [-119.081, 34.078], [-119.439, 34.348], [-120.368, 34.447], [-120.623, 34.609], [-120.744, 35.157], [-121.715, 36.162], [-122.547, 37.552], [-122.512, 37.783], [-122.953, 38.114], [-123.727, 38.952], [-123.865, 39.767], [-124.398, 40.313], [-124.179, 41.142], [-124.214, 42], [-124.533, 42.766], [-124.142, 43.708], [-124.021, 44.616], [-123.899, 45.523], [-124.08, 46.865], [-124.396, 47.72], [-124.687, 48.184], [-124.566, 48.38], [-123.12, 48.04], [-122.587, 47.096], [-122.34, 47.36], [-122.5, 48.18], [-122.84, 49]]]] }, { "N": "Kazakhstan", "I": "KZ", "C": [[[[87.36, 49.215], [86.599, 48.549], [85.768, 48.456], [85.72, 47.453], [85.164, 47.001], [83.18, 47.33], [82.459, 45.54], [81.947, 45.317], [79.966, 44.918], [80.866, 43.18], [80.18, 42.92], [80.26, 42.35], [79.644, 42.497], [79.142, 42.856], [77.658, 42.961], [76, 42.988], [75.637, 42.878], [74.213, 43.298], [73.645, 43.091], [73.49, 42.501], [71.845, 42.845], [71.186, 42.704], [70.962, 42.266], [70.389, 42.081], [69.07, 41.384], [68.632, 40.669], [68.26, 40.662], [67.986, 41.136], [66.714, 41.168], [66.511, 41.988], [66.023, 41.995], [66.098, 42.998], [64.901, 43.728], [63.186, 43.65], [62.013, 43.504], [61.058, 44.406], [60.24, 44.784], [58.69, 45.5], [58.503, 45.587], [55.929, 44.996], [55.968, 41.309], [55.455, 41.26], [54.755, 42.044], [54.079, 42.324], [52.944, 42.116], [52.502, 41.783], [52.446, 42.027], [52.692, 42.444], [52.501, 42.792], [51.342, 43.133], [50.891, 44.031], [50.339, 44.284], [50.306, 44.61], [51.279, 44.515], [51.317, 45.246], [52.167, 45.408], [53.041, 45.259], [53.221, 46.235], [53.043, 46.853], [52.042, 46.805], [51.192, 47.049], [50.034, 46.609], [49.101, 46.399], [48.593, 46.561], [48.695, 47.076], [48.057, 47.744], [47.315, 47.716], [46.466, 48.394], [47.044, 49.152], [46.752, 49.356], [47.549, 50.455], [48.578, 49.875], [48.702, 50.605], [50.767, 51.693], [52.329, 51.719], [54.533, 51.026], [55.717, 50.622], [56.778, 51.044], [58.363, 51.064], [59.642, 50.545], [59.933, 50.842], [61.337, 50.799], [61.588, 51.273], [59.968, 51.96], [60.927, 52.448], [60.74, 52.72], [61.7, 52.98], [60.978, 53.665], [61.437, 54.006], [65.179, 54.354], [65.667, 54.601], [68.169, 54.97], [69.068, 55.385], [70.865, 55.17], [71.18, 54.133], [72.224, 54.377], [73.509, 54.036], [73.426, 53.49], [74.385, 53.547], [76.891, 54.491], [76.525, 54.177], [77.801, 53.404], [80.036, 50.865], [80.568, 51.388], [81.946, 50.812], [83.383, 51.069], [83.935, 50.889], [84.416, 50.311], [85.116, 50.117], [85.541, 49.693], [86.829, 49.827], [87.36, 49.215]]]] }, { "N": "Uzbekistan", "I": "UZ", "C": [[[[55.968, 41.309], [55.929, 44.996], [58.503, 45.587], [58.69, 45.5], [60.24, 44.784], [61.058, 44.406], [62.013, 43.504], [63.186, 43.65], [64.901, 43.728], [66.098, 42.998], [66.023, 41.995], [66.511, 41.988], [66.714, 41.168], [67.986, 41.136], [68.26, 40.662], [68.632, 40.669], [69.07, 41.384], [70.389, 42.081], [70.962, 42.266], [71.259, 42.168], [70.42, 41.52], [71.158, 41.144], [71.87, 41.393], [73.055, 40.866], [71.775, 40.146], [71.014, 40.244], [70.601, 40.219], [70.458, 40.496], [70.667, 40.96], [69.329, 40.728], [69.012, 40.086], [68.536, 39.533], [67.701, 39.58], [67.442, 39.14], [68.176, 38.902], [68.392, 38.157], [67.83, 37.145], [67.076, 37.356], [66.519, 37.363], [66.546, 37.975], [65.216, 38.403], [64.17, 38.892], [63.518, 39.363], [62.374, 40.054], [61.883, 41.085], [61.547, 41.266], [60.466, 41.22], [60.083, 41.425], [59.976, 42.223], [58.629, 42.752], [57.787, 42.171], [56.932, 41.826], [57.096, 41.322], [55.968, 41.309]]]] }, { "N": "Papua New Guinea", "I": "PG", "C": [[[[141, -2.6], [142.735, -3.289], [144.584, -3.861], [145.273, -4.374], [145.83, -4.876], [145.982, -5.466], [147.648, -6.084], [147.891, -6.614], [146.971, -6.722], [147.192, -7.388], [148.085, -8.044], [148.734, -9.105], [149.307, -9.071], [149.267, -9.514], [150.039, -9.684], [149.739, -9.873], [150.802, -10.294], [150.691, -10.583], [150.028, -10.652], [149.782, -10.393], [148.923, -10.281], [147.913, -10.13], [147.135, -9.492], [146.568, -8.943], [146.048, -8.067], [144.744, -7.63], [143.897, -7.915], [143.286, -8.245], [143.414, -8.983], [142.628, -9.327], [142.068, -9.16], [141.034, -9.118], [141.017, -5.859], [141, -2.6]]], [[[152.64, -3.66], [153.02, -3.98], [153.14, -4.5], [152.827, -4.766], [152.639, -4.176], [152.406, -3.79], [151.953, -3.462], [151.384, -3.035], [150.662, -2.741], [150.94, -2.5], [151.48, -2.78], [151.82, -3], [152.24, -3.24], [152.64, -3.66]]], [[[151.301, -5.841], [150.754, -6.084], [150.241, -6.318], [149.71, -6.317], [148.89, -6.026], [148.319, -5.747], [148.402, -5.438], [149.298, -5.584], [149.846, -5.506], [149.996, -5.026], [150.14, -5.001], [150.237, -5.532], [150.807, -5.456], [151.09, -5.114], [151.648, -4.757], [151.538, -4.168], [152.137, -4.149], [152.339, -4.313], [152.319, -4.868], [151.983, -5.478], [151.459, -5.56], [151.301, -5.841]]], [[[154.76, -5.34], [155.063, -5.567], [155.548, -6.201], [156.02, -6.54], [155.88, -6.82], [155.6, -6.92], [155.167, -6.536], [154.729, -5.901], [154.514, -5.139], [154.653, -5.042], [154.76, -5.34]]]] }, { "N": "Indonesia", "I": "ID", "C": [[[[141, -2.6], [141.017, -5.859], [141.034, -9.118], [140.143, -8.297], [139.128, -8.096], [138.881, -8.381], [137.614, -8.412], [138.039, -7.598], [138.669, -7.32], [138.408, -6.233], [137.928, -5.393], [135.989, -4.547], [135.165, -4.463], [133.663, -3.539], [133.368, -4.025], [132.984, -4.113], [132.757, -3.746], [132.754, -3.312], [131.99, -2.821], [133.067, -2.46], [133.78, -2.48], [133.696, -2.215], [132.232, -2.213], [131.836, -1.617], [130.943, -1.433], [130.52, -0.938], [131.868, -0.695], [132.38, -0.37], [133.986, -0.78], [134.143, -1.152], [134.423, -2.769], [135.458, -3.368], [136.293, -2.307], [137.441, -1.704], [138.33, -1.703], [139.185, -2.051], [139.927, -2.409], [141, -2.6]]], [[[124.969, -8.893], [125.07, -9.09], [125.089, -9.393], [124.436, -10.14], [123.58, -10.36], [123.46, -10.24], [123.55, -9.9], [123.98, -9.29], [124.969, -8.893]]], [[[134.21, -6.895], [134.113, -6.142], [134.29, -5.783], [134.5, -5.445], [134.727, -5.738], [134.725, -6.214], [134.21, -6.895]]], [[[117.882, 4.138], [117.313, 3.234], [118.048, 2.288], [117.876, 1.828], [118.997, 0.902], [117.812, 0.784], [117.478, 0.102], [117.522, -0.804], [116.56, -1.488], [116.534, -2.484], [116.148, -4.013], [116.001, -3.657], [114.865, -4.107], [114.469, -3.496], [113.756, -3.439], [113.257, -3.119], [112.068, -3.478], [111.703, -2.994], [111.048, -3.049], [110.224, -2.934], [110.071, -1.593], [109.572, -1.315], [109.092, -0.46], [108.953, 0.415], [109.069, 1.342], [109.663, 2.006], [109.83, 1.338], [110.514, 0.773], [111.159, 0.976], [111.798, 0.904], [112.38, 1.41], [112.86, 1.498], [113.806, 1.218], [114.621, 1.431], [115.134, 2.821], [115.519, 3.169], [115.866, 4.307], [117.015, 4.306], [117.882, 4.138]]], [[[129.371, -2.802], [130.471, -3.094], [130.835, -3.858], [129.991, -3.446], [129.155, -3.363], [128.591, -3.429], [127.899, -3.393], [128.136, -2.844], [129.371, -2.802]]], [[[126.875, -3.791], [126.184, -3.607], [125.989, -3.177], [127.001, -3.129], [127.249, -3.459], [126.875, -3.791]]], [[[127.932, 2.175], [128.004, 1.629], [128.595, 1.541], [128.688, 1.132], [128.636, 0.258], [128.12, 0.356], [127.968, -0.252], [128.38, -0.78], [128.1, -0.9], [127.696, -0.267], [127.399, 1.012], [127.601, 1.811], [127.932, 2.175]]], [[[122.928, 0.875], [124.078, 0.917], [125.066, 1.643], [125.241, 1.42], [124.437, 0.428], [123.686, 0.236], [122.723, 0.431], [121.057, 0.381], [120.183, 0.237], [120.041, -0.52], [120.936, -1.409], [121.476, -0.956], [123.341, -0.616], [123.258, -1.076], [122.823, -0.931], [122.389, -1.517], [121.508, -1.904], [122.455, -3.186], [122.272, -3.53], [123.171, -4.684], [123.162, -5.341], [122.629, -5.635], [122.236, -5.283], [122.72, -4.464], [121.738, -4.851], [121.489, -4.575], [121.619, -4.188], [120.898, -3.602], [120.972, -2.628], [120.305, -2.932], [120.39, -4.098], [120.431, -5.528], [119.797, -5.673], [119.367, -5.38], [119.654, -4.459], [119.499, -3.494], [119.078, -3.487], [118.768, -2.802], [119.181, -2.147], [119.323, -1.353], [119.826, 0.154], [120.036, 0.566], [120.886, 1.309], [121.667, 1.014], [122.928, 0.875]]], [[[120.295, -10.259], [118.968, -9.558], [119.9, -9.361], [120.426, -9.666], [120.776, -9.97], [120.716, -10.24], [120.295, -10.259]]], [[[121.342, -8.537], [122.007, -8.461], [122.904, -8.094], [122.757, -8.65], [121.254, -8.934], [119.924, -8.81], [119.921, -8.445], [120.715, -8.237], [121.342, -8.537]]], [[[118.261, -8.362], [118.878, -8.281], [119.127, -8.706], [117.97, -8.907], [117.278, -9.041], [116.74, -9.033], [117.084, -8.457], [117.632, -8.449], [117.9, -8.096], [118.261, -8.362]]], [[[108.487, -6.422], [108.623, -6.778], [110.539, -6.877], [110.76, -6.465], [112.615, -6.946], [112.979, -7.594], [114.479, -7.777], [115.706, -8.371], [114.565, -8.752], [113.465, -8.349], [112.56, -8.376], [111.522, -8.302], [110.586, -8.123], [109.428, -7.741], [108.694, -7.642], [108.278, -7.767], [106.454, -7.355], [106.281, -6.925], [105.365, -6.851], [106.052, -5.896], [107.265, -5.955], [108.072, -6.346], [108.487, -6.422]]], [[[104.37, -1.085], [104.539, -1.782], [104.888, -2.34], [105.622, -2.429], [106.109, -3.062], [105.857, -4.306], [105.818, -5.852], [104.71, -5.873], [103.868, -5.037], [102.584, -4.22], [102.156, -3.614], [101.399, -2.8], [100.903, -2.05], [100.142, -0.65], [99.264, 0.183], [98.97, 1.043], [98.601, 1.824], [97.7, 2.453], [97.177, 3.309], [96.424, 3.869], [95.381, 4.971], [95.293, 5.48], [95.937, 5.44], [97.485, 5.246], [98.369, 4.268], [99.143, 3.59], [99.694, 3.174], [100.641, 2.099], [101.658, 2.084], [102.498, 1.399], [103.077, 0.561], [103.838, 0.105], [103.438, -0.712], [104.011, -1.059], [104.37, -1.085]]]] }, { "N": "Argentina", "I": "AR", "C": [[[[-68.634, -52.636], [-68.25, -53.1], [-67.75, -53.85], [-66.45, -54.45], [-65.05, -54.7], [-65.5, -55.2], [-66.45, -55.25], [-66.96, -54.897], [-67.562, -54.87], [-68.633, -54.87], [-68.634, -52.636]]], [[[-57.625, -30.216], [-57.875, -31.017], [-58.142, -32.045], [-58.133, -33.041], [-58.35, -33.263], [-58.427, -33.909], [-58.495, -34.431], [-57.226, -35.288], [-57.362, -35.977], [-56.737, -36.413], [-56.788, -36.902], [-57.749, -38.184], [-59.232, -38.72], [-61.237, -38.928], [-62.336, -38.828], [-62.126, -39.424], [-62.331, -40.173], [-62.146, -40.677], [-62.746, -41.029], [-63.77, -41.167], [-64.732, -40.803], [-65.118, -41.064], [-64.979, -42.058], [-64.303, -42.359], [-63.756, -42.044], [-63.458, -42.563], [-64.379, -42.874], [-65.182, -43.495], [-65.329, -44.501], [-65.565, -45.037], [-66.51, -45.04], [-67.294, -45.552], [-67.581, -46.302], [-66.597, -47.034], [-65.641, -47.236], [-65.985, -48.133], [-67.166, -48.697], [-67.816, -49.87], [-68.729, -50.264], [-69.139, -50.733], [-68.816, -51.771], [-68.15, -52.35], [-68.572, -52.299], [-69.498, -52.143], [-71.915, -52.009], [-72.329, -51.426], [-72.31, -50.677], [-72.976, -50.741], [-73.328, -50.379], [-73.415, -49.318], [-72.648, -48.879], [-72.331, -48.244], [-72.447, -47.739], [-71.917, -46.885], [-71.552, -45.561], [-71.659, -44.974], [-71.223, -44.784], [-71.33, -44.408], [-71.794, -44.207], [-71.464, -43.788], [-71.915, -43.409], [-72.149, -42.255], [-71.747, -42.051], [-71.916, -40.832], [-71.681, -39.808], [-71.414, -38.916], [-70.815, -38.553], [-71.119, -37.577], [-71.122, -36.658], [-70.365, -36.005], [-70.388, -35.17], [-69.817, -34.194], [-69.815, -33.274], [-70.074, -33.091], [-70.535, -31.365], [-69.919, -30.336], [-70.014, -29.368], [-69.656, -28.459], [-69.001, -27.521], [-68.296, -26.899], [-68.595, -26.507], [-68.386, -26.185], [-68.418, -24.519], [-67.328, -24.025], [-66.985, -22.986], [-67.107, -22.736], [-66.273, -21.832], [-64.965, -22.076], [-64.377, -22.798], [-63.987, -21.994], [-62.846, -22.035], [-62.685, -22.249], [-60.847, -23.881], [-60.029, -24.033], [-58.807, -24.771], [-57.777, -25.162], [-57.634, -25.604], [-58.618, -27.124], [-57.61, -27.396], [-56.487, -27.548], [-55.696, -27.388], [-54.789, -26.622], [-54.625, -25.739], [-54.13, -25.548], [-53.628, -26.125], [-53.649, -26.923], [-54.491, -27.475], [-55.162, -27.882], [-56.291, -28.853], [-57.625, -30.216]]]] }, { "N": "Chile", "I": "CL", "C": [[[[-68.634, -52.636], [-68.633, -54.87], [-67.562, -54.87], [-66.96, -54.897], [-67.291, -55.301], [-68.149, -55.612], [-68.64, -55.58], [-69.232, -55.499], [-69.958, -55.198], [-71.006, -55.054], [-72.264, -54.495], [-73.285, -53.958], [-74.663, -52.837], [-73.838, -53.047], [-72.434, -53.715], [-71.108, -54.074], [-70.592, -53.616], [-70.267, -52.931], [-69.346, -52.518], [-68.634, -52.636]]], [[[-69.59, -17.58], [-69.1, -18.26], [-68.967, -18.982], [-68.442, -19.405], [-68.757, -20.373], [-68.22, -21.494], [-67.828, -22.873], [-67.107, -22.736], [-66.985, -22.986], [-67.328, -24.025], [-68.418, -24.519], [-68.386, -26.185], [-68.595, -26.507], [-68.296, -26.899], [-69.001, -27.521], [-69.656, -28.459], [-70.014, -29.368], [-69.919, -30.336], [-70.535, -31.365], [-70.074, -33.091], [-69.815, -33.274], [-69.817, -34.194], [-70.388, -35.17], [-70.365, -36.005], [-71.122, -36.658], [-71.119, -37.577], [-70.815, -38.553], [-71.414, -38.916], [-71.681, -39.808], [-71.916, -40.832], [-71.747, -42.051], [-72.149, -42.255], [-71.915, -43.409], [-71.464, -43.788], [-71.794, -44.207], [-71.33, -44.408], [-71.223, -44.784], [-71.659, -44.974], [-71.552, -45.561], [-71.917, -46.885], [-72.447, -47.739], [-72.331, -48.244], [-72.648, -48.879], [-73.415, -49.318], [-73.328, -50.379], [-72.976, -50.741], [-72.31, -50.677], [-72.329, -51.426], [-71.915, -52.009], [-69.498, -52.143], [-68.572, -52.299], [-69.461, -52.292], [-69.943, -52.538], [-70.845, -52.899], [-71.006, -53.833], [-71.43, -53.856], [-72.558, -53.531], [-73.703, -52.835], [-73.703, -52.835], [-74.947, -52.263], [-75.26, -51.629], [-74.977, -51.043], [-75.48, -50.378], [-75.608, -48.674], [-75.183, -47.712], [-74.127, -46.939], [-75.644, -46.648], [-74.692, -45.764], [-74.352, -44.103], [-73.24, -44.455], [-72.718, -42.383], [-73.389, -42.118], [-73.701, -43.366], [-74.332, -43.225], [-74.018, -41.795], [-73.677, -39.942], [-73.218, -39.259], [-73.506, -38.283], [-73.588, -37.156], [-73.167, -37.124], [-72.553, -35.509], [-71.862, -33.909], [-71.438, -32.419], [-71.669, -30.921], [-71.37, -30.096], [-71.49, -28.861], [-70.905, -27.64], [-70.725, -25.706], [-70.404, -23.629], [-70.091, -21.393], [-70.164, -19.756], [-70.373, -18.348], [-69.858, -18.093], [-69.59, -17.58]]]] }, { "N": "Democratic Republic of the Congo", "I": "CD", "C": [[[[29.34, -4.5], [29.52, -5.42], [29.42, -5.94], [29.62, -6.52], [30.2, -7.08], [30.74, -8.34], [30.74, -8.34], [30.346, -8.238], [29.003, -8.407], [28.735, -8.527], [28.45, -9.165], [28.674, -9.606], [28.496, -10.79], [28.372, -11.794], [28.642, -11.972], [29.342, -12.361], [29.616, -12.179], [29.7, -13.257], [28.934, -13.249], [28.524, -12.699], [28.155, -12.272], [27.389, -12.133], [27.164, -11.609], [26.553, -11.924], [25.752, -11.785], [25.418, -11.331], [24.783, -11.239], [24.315, -11.263], [24.257, -10.952], [23.912, -10.927], [23.457, -10.868], [22.837, -11.018], [22.403, -10.993], [22.155, -11.085], [22.209, -9.895], [21.875, -9.524], [21.802, -8.909], [21.949, -8.306], [21.746, -7.92], [21.728, -7.291], [20.515, -7.3], [20.602, -6.939], [20.092, -6.943], [20.038, -7.116], [19.418, -7.155], [19.167, -7.738], [19.017, -7.988], [18.464, -7.847], [18.134, -7.988], [17.473, -8.069], [17.09, -7.546], [16.86, -7.222], [16.573, -6.623], [16.327, -5.877], [13.376, -5.864], [13.025, -5.984], [12.735, -5.966], [12.322, -6.1], [12.182, -5.79], [12.437, -5.684], [12.468, -5.248], [12.632, -4.991], [12.996, -4.781], [13.258, -4.883], [13.6, -4.5], [14.145, -4.51], [14.209, -4.793], [14.583, -4.97], [15.171, -4.344], [15.754, -3.855], [16.006, -3.535], [15.973, -2.712], [16.407, -1.741], [16.865, -1.226], [17.524, -0.744], [17.639, -0.425], [17.664, -0.058], [17.827, 0.289], [17.774, 0.856], [17.899, 1.742], [18.094, 2.366], [18.394, 2.9], [18.453, 3.504], [18.543, 4.202], [18.932, 4.71], [19.468, 5.032], [20.291, 4.692], [20.928, 4.323], [21.659, 4.224], [22.405, 4.029], [22.704, 4.633], [22.841, 4.71], [23.297, 4.61], [24.411, 5.109], [24.805, 4.897], [25.129, 4.927], [25.279, 5.17], [25.65, 5.256], [26.403, 5.151], [27.044, 5.128], [27.374, 5.234], [27.98, 4.408], [28.429, 4.287], [28.697, 4.455], [29.159, 4.389], [29.716, 4.601], [29.954, 4.174], [30.834, 3.509], [30.834, 3.509], [30.773, 2.34], [31.174, 2.204], [30.853, 1.849], [30.469, 1.584], [30.086, 1.062], [29.876, 0.597], [29.82, -0.205], [29.588, -0.587], [29.579, -1.341], [29.292, -1.62], [29.255, -2.215], [29.117, -2.292], [29.025, -2.839], [29.276, -3.294], [29.34, -4.5]]]] }, { "N": "Somalia", "I": "SO", "C": [[[[41.585, -1.683], [40.993, -0.858], [40.981, 2.785], [41.855, 3.919], [42.129, 4.234], [42.77, 4.253], [43.661, 4.958], [44.964, 5.002], [47.789, 8.003], [48.487, 8.838], [48.938, 9.452], [48.938, 9.974], [48.938, 10.982], [48.942, 11.394], [48.948, 11.411], [48.948, 11.411], [49.268, 11.43], [49.729, 11.579], [50.259, 11.68], [50.732, 12.022], [51.111, 12.025], [51.134, 11.748], [51.042, 11.167], [51.045, 10.641], [50.834, 10.28], [50.552, 9.199], [50.071, 8.082], [49.453, 6.805], [48.595, 5.339], [47.741, 4.219], [46.565, 2.855], [45.564, 2.046], [44.068, 1.053], [43.136, 0.292], [42.042, -0.919], [41.811, -1.446], [41.585, -1.683]]]] }, { "N": "Kenya", "I": "KE", "C": [[[[39.202, -4.677], [37.767, -3.677], [37.699, -3.097], [34.073, -1.06], [33.904, -0.95], [33.894, 0.11], [34.18, 0.515], [34.672, 1.177], [35.036, 1.906], [34.596, 3.054], [34.479, 3.556], [34.005, 4.25], [34.62, 4.847], [35.298, 5.506], [35.817, 5.338], [35.817, 4.777], [36.159, 4.448], [36.855, 4.448], [38.121, 3.599], [38.437, 3.589], [38.671, 3.616], [38.893, 3.501], [39.559, 3.422], [39.855, 3.839], [40.768, 4.257], [41.172, 3.919], [41.855, 3.919], [40.981, 2.785], [40.993, -0.858], [41.585, -1.683], [40.885, -2.083], [40.638, -2.5], [40.263, -2.573], [40.121, -3.278], [39.8, -3.681], [39.605, -4.347], [39.202, -4.677]]]] }, { "N": "Sudan", "I": "SD", "C": [[[[24.567, 8.229], [23.806, 8.666], [23.459, 8.954], [23.395, 9.265], [23.557, 9.681], [23.554, 10.089], [22.978, 10.714], [22.864, 11.142], [22.876, 11.385], [22.509, 11.679], [22.498, 12.26], [22.288, 12.646], [21.937, 12.588], [22.038, 12.955], [22.297, 13.372], [22.183, 13.786], [22.512, 14.093], [22.304, 14.327], [22.568, 14.944], [23.025, 15.681], [23.887, 15.611], [23.838, 19.58], [23.85, 20], [25, 20.003], [25, 22], [29.02, 22], [32.9, 22], [36.866, 22], [37.189, 21.019], [36.969, 20.837], [37.115, 19.808], [37.482, 18.614], [37.863, 18.368], [38.41, 17.998], [37.904, 17.428], [37.167, 17.263], [36.853, 16.957], [36.754, 16.292], [36.323, 14.822], [36.43, 14.422], [36.27, 13.563], [35.864, 12.578], [35.26, 12.083], [34.832, 11.319], [34.731, 10.91], [34.257, 10.63], [33.962, 9.584], [33.975, 8.685], [33.963, 9.464], [33.825, 9.484], [33.842, 9.982], [33.722, 10.325], [33.207, 10.72], [33.087, 11.441], [33.207, 12.179], [32.743, 12.248], [32.675, 12.025], [32.074, 11.973], [32.314, 11.681], [32.4, 11.081], [31.851, 10.531], [31.353, 9.81], [30.838, 9.707], [29.997, 10.291], [29.619, 10.085], [29.516, 9.793], [29.001, 9.604], [28.967, 9.398], [27.971, 9.398], [27.834, 9.604], [27.113, 9.639], [26.752, 9.467], [26.477, 9.553], [25.962, 10.136], [25.791, 10.411], [25.07, 10.274], [24.795, 9.81], [24.537, 8.918], [24.194, 8.729], [23.887, 8.62], [24.567, 8.229]]]] }, { "N": "Chad", "I": "TD", "C": [[[[23.838, 19.58], [23.887, 15.611], [23.025, 15.681], [22.568, 14.944], [22.304, 14.327], [22.512, 14.093], [22.183, 13.786], [22.297, 13.372], [22.038, 12.955], [21.937, 12.588], [22.288, 12.646], [22.498, 12.26], [22.509, 11.679], [22.876, 11.385], [22.864, 11.142], [22.231, 10.972], [21.724, 10.567], [21.001, 9.476], [20.06, 9.013], [19.094, 9.075], [18.812, 8.983], [18.911, 8.631], [18.39, 8.281], [17.965, 7.891], [16.706, 7.508], [16.456, 7.735], [16.291, 7.754], [16.106, 7.497], [15.279, 7.422], [15.436, 7.693], [15.121, 8.382], [14.98, 8.796], [14.544, 8.966], [13.954, 9.549], [14.171, 10.021], [14.627, 9.921], [14.909, 9.992], [15.468, 9.982], [14.924, 10.891], [14.96, 11.556], [14.893, 12.219], [14.496, 12.859], [14.596, 13.33], [13.954, 13.353], [13.957, 13.997], [13.54, 14.367], [13.972, 15.684], [15.248, 16.627], [15.3, 17.928], [15.686, 19.957], [15.903, 20.388], [15.487, 20.73], [15.471, 21.048], [15.097, 21.309], [14.851, 22.863], [15.861, 23.41], [19.849, 21.495], [23.838, 19.58]]]] }, { "N": "Haiti", "I": "HT", "C": [[[[-71.712, 19.714], [-71.625, 19.17], [-71.701, 18.785], [-71.945, 18.617], [-71.688, 18.317], [-71.708, 18.045], [-72.372, 18.215], [-72.844, 18.146], [-73.455, 18.218], [-73.922, 18.031], [-74.458, 18.343], [-74.37, 18.665], [-73.45, 18.526], [-72.695, 18.446], [-72.335, 18.668], [-72.792, 19.102], [-72.784, 19.484], [-73.415, 19.64], [-73.19, 19.916], [-72.58, 19.872], [-71.712, 19.714]]]] }, { "N": "Dominican Republic", "I": "DO", "C": [[[[-71.708, 18.045], [-71.688, 18.317], [-71.945, 18.617], [-71.701, 18.785], [-71.625, 19.17], [-71.712, 19.714], [-71.587, 19.885], [-70.807, 19.88], [-70.214, 19.623], [-69.951, 19.648], [-69.769, 19.293], [-69.222, 19.313], [-69.254, 19.015], [-68.809, 18.979], [-68.318, 18.612], [-68.689, 18.205], [-69.165, 18.423], [-69.624, 18.381], [-69.953, 18.428], [-70.133, 18.246], [-70.517, 18.184], [-70.669, 18.427], [-71, 18.283], [-71.4, 17.599], [-71.658, 17.758], [-71.708, 18.045]]]] }, { "N": "Russia", "I": "RU", "C": [[[[178.725, 71.099], [180, 71.516], [180, 70.832], [178.903, 70.781], [178.725, 71.099]]], [[[93.778, 81.025], [95.941, 81.25], [97.884, 80.747], [100.187, 79.78], [99.94, 78.881], [97.758, 78.756], [94.973, 79.045], [93.313, 79.427], [92.545, 80.144], [91.181, 80.341], [93.778, 81.025]]], [[[102.838, 79.281], [105.372, 78.713], [105.075, 78.307], [99.438, 77.921], [101.265, 79.234], [102.086, 79.346], [102.838, 79.281]]], [[[138.831, 76.137], [141.472, 76.093], [145.086, 75.563], [144.3, 74.82], [140.614, 74.848], [138.955, 74.611], [136.974, 75.262], [137.512, 75.949], [138.831, 76.137]]], [[[148.222, 75.346], [150.732, 75.084], [149.576, 74.689], [147.977, 74.778], [146.119, 75.173], [146.358, 75.497], [148.222, 75.346]]], [[[139.863, 73.37], [140.812, 73.765], [142.062, 73.858], [143.483, 73.475], [143.604, 73.212], [142.088, 73.205], [140.038, 73.317], [139.863, 73.37]]], [[[44.847, 80.59], [46.799, 80.772], [48.318, 80.784], [48.523, 80.515], [49.097, 80.754], [50.04, 80.919], [51.523, 80.7], [51.136, 80.547], [49.794, 80.415], [48.894, 80.34], [48.755, 80.175], [47.586, 80.01], [46.503, 80.247], [47.072, 80.559], [44.847, 80.59]]], [[[22.731, 54.328], [20.892, 54.313], [19.661, 54.426], [19.888, 54.866], [21.268, 55.19], [22.316, 55.015], [22.758, 54.857], [22.651, 54.583], [22.731, 54.328]]], [[[53.508, 73.75], [55.902, 74.627], [55.632, 75.081], [57.869, 75.609], [61.17, 76.252], [64.498, 76.439], [66.211, 76.81], [68.157, 76.94], [68.852, 76.545], [68.181, 76.234], [64.637, 75.738], [61.584, 75.261], [58.477, 74.309], [56.987, 73.333], [55.419, 72.371], [55.623, 71.541], [57.536, 70.72], [56.945, 70.633], [53.677, 70.763], [53.412, 71.207], [51.602, 71.475], [51.456, 72.015], [52.478, 72.229], [52.444, 72.775], [54.428, 73.628], [53.508, 73.75]]], [[[142.915, 53.705], [143.261, 52.741], [143.235, 51.757], [143.648, 50.748], [144.654, 48.976], [143.174, 49.307], [142.559, 47.862], [143.533, 46.837], [143.505, 46.138], [142.748, 46.741], [142.092, 45.967], [141.907, 46.806], [142.018, 47.78], [141.904, 48.859], [142.136, 49.615], [142.18, 50.952], [141.594, 51.935], [141.683, 53.302], [142.607, 53.762], [142.21, 54.225], [142.655, 54.366], [142.915, 53.705]]], [[[-174.928, 67.206], [-175.014, 66.584], [-174.34, 66.336], [-174.572, 67.062], [-171.857, 66.913], [-169.9, 65.977], [-170.891, 65.541], [-172.53, 65.438], [-172.555, 64.461], [-172.955, 64.253], [-173.892, 64.283], [-174.654, 64.631], [-175.984, 64.923], [-176.207, 65.357], [-177.223, 65.52], [-178.36, 65.391], [-178.903, 65.74], [-178.686, 66.112], [-179.884, 65.875], [-179.433, 65.404], [-180, 64.98], [-180, 68.964], [-177.55, 68.2], [-174.928, 67.206]]], [[[-178.694, 70.893], [-180, 70.832], [-180, 71.516], [-179.872, 71.558], [-179.024, 71.556], [-177.578, 71.269], [-177.664, 71.133], [-178.694, 70.893]]], [[[49.101, 46.399], [48.645, 45.806], [47.676, 45.641], [46.682, 44.609], [47.591, 43.66], [47.493, 42.987], [48.584, 41.809], [48.584, 41.809], [47.987, 41.406], [47.816, 41.151], [47.373, 41.22], [46.686, 41.827], [46.405, 41.861], [45.776, 42.092], [45.47, 42.503], [44.538, 42.712], [43.931, 42.555], [43.756, 42.741], [42.394, 43.22], [40.922, 43.382], [40.077, 43.553], [39.955, 43.435], [38.68, 44.28], [37.539, 44.657], [36.675, 45.245], [37.403, 45.405], [38.233, 46.241], [37.674, 46.637], [39.148, 47.045], [39.121, 47.263], [38.224, 47.102], [38.255, 47.546], [38.771, 47.826], [39.738, 47.899], [39.896, 48.232], [39.675, 48.784], [40.081, 49.307], [40.069, 49.601], [38.595, 49.926], [38.011, 49.916], [37.393, 50.384], [36.626, 50.226], [35.356, 50.577], [35.378, 50.774], [35.022, 51.208], [34.225, 51.256], [34.142, 51.566], [34.392, 51.769], [33.753, 52.335], [32.716, 52.238], [32.412, 52.289], [32.159, 52.061], [31.786, 52.102], [31.786, 52.102], [31.54, 52.742], [31.305, 53.074], [31.498, 53.167], [32.305, 53.133], [32.694, 53.351], [32.406, 53.618], [31.731, 53.794], [31.791, 53.975], [31.384, 54.157], [30.758, 54.812], [30.972, 55.082], [30.874, 55.551], [29.896, 55.789], [29.372, 55.67], [29.23, 55.918], [28.177, 56.169], [27.855, 56.759], [27.77, 57.244], [27.288, 57.475], [27.717, 57.792], [27.42, 58.725], [28.132, 59.301], [27.981, 59.475], [27.981, 59.475], [29.118, 60.028], [28.07, 60.504], [28.07, 60.504], [30.211, 61.78], [31.14, 62.358], [31.516, 62.868], [30.036, 63.553], [30.445, 64.204], [29.544, 64.949], [30.218, 65.806], [29.055, 66.944], [29.977, 67.698], [28.446, 68.365], [28.592, 69.065], [29.4, 69.157], [31.101, 69.558], [31.101, 69.558], [32.133, 69.906], [33.775, 69.301], [36.514, 69.063], [40.292, 67.932], [41.06, 67.457], [41.126, 66.792], [40.016, 66.266], [38.383, 66], [33.919, 66.76], [33.184, 66.633], [34.815, 65.9], [34.879, 65.436], [34.944, 64.414], [36.231, 64.109], [37.013, 63.85], [37.142, 64.335], [36.54, 64.764], [37.176, 65.143], [39.593, 64.521], [40.436, 64.764], [39.763, 65.497], [42.093, 66.476], [43.016, 66.419], [43.95, 66.069], [44.532, 66.756], [43.698, 67.352], [44.188, 67.951], [43.453, 68.571], [46.25, 68.25], [46.821, 67.69], [45.555, 67.567], [45.562, 67.01], [46.349, 66.668], [47.894, 66.885], [48.139, 67.522], [50.228, 67.999], [53.717, 68.857], [54.472, 68.808], [53.486, 68.201], [54.726, 68.097], [55.443, 68.439], [57.317, 68.466], [58.802, 68.881], [59.941, 68.278], [61.078, 68.941], [60.03, 69.52], [60.55, 69.85], [63.504, 69.547], [64.888, 69.235], [68.512, 68.092], [69.181, 68.616], [68.164, 69.144], [68.135, 69.356], [66.93, 69.455], [67.26, 69.929], [66.725, 70.709], [66.695, 71.029], [68.54, 71.935], [69.196, 72.843], [69.94, 73.04], [72.588, 72.776], [72.796, 72.22], [71.848, 71.409], [72.47, 71.09], [72.792, 70.391], [72.565, 69.021], [73.668, 68.408], [73.239, 67.74], [71.28, 66.32], [72.423, 66.173], [72.821, 66.533], [73.921, 66.789], [74.187, 67.284], [75.052, 67.76], [74.469, 68.329], [74.936, 68.989], [73.842, 69.071], [73.602, 69.628], [74.4, 70.632], [73.101, 71.447], [74.891, 72.121], [74.659, 72.832], [75.158, 72.855], [75.684, 72.301], [75.289, 71.336], [76.359, 71.153], [75.903, 71.874], [77.577, 72.267], [79.652, 72.32], [81.5, 71.75], [80.611, 72.583], [80.511, 73.648], [82.25, 73.85], [84.655, 73.806], [86.822, 73.937], [86.01, 74.46], [87.167, 75.116], [88.316, 75.144], [90.26, 75.64], [92.901, 75.773], [93.234, 76.047], [95.86, 76.14], [96.678, 75.915], [98.923, 76.447], [100.76, 76.43], [101.035, 76.862], [101.991, 77.288], [104.352, 77.698], [106.067, 77.374], [104.705, 77.127], [106.97, 76.974], [107.24, 76.48], [108.154, 76.723], [111.077, 76.71], [113.332, 76.222], [114.134, 75.848], [113.885, 75.328], [112.779, 75.032], [110.151, 74.477], [109.4, 74.18], [110.64, 74.04], [112.119, 73.788], [113.02, 73.977], [113.53, 73.335], [113.969, 73.595], [115.568, 73.753], [118.776, 73.588], [119.02, 73.12], [123.201, 72.971], [123.258, 73.735], [125.38, 73.56], [126.976, 73.565], [128.591, 73.039], [129.052, 72.399], [128.46, 71.98], [129.716, 71.193], [131.289, 70.787], [132.254, 71.836], [133.858, 71.386], [135.562, 71.655], [137.498, 71.348], [138.234, 71.628], [139.87, 71.488], [139.148, 72.416], [140.468, 72.849], [149.5, 72.2], [150.351, 71.606], [152.969, 70.842], [157.007, 71.031], [158.998, 70.867], [159.83, 70.453], [159.709, 69.722], [160.941, 69.437], [162.279, 69.642], [164.052, 69.668], [165.94, 69.472], [167.836, 69.583], [169.578, 68.694], [170.817, 69.014], [170.008, 69.653], [170.453, 70.097], [173.644, 69.817], [175.724, 69.877], [178.6, 69.4], [180, 68.964], [180, 64.98], [179.993, 64.974], [178.707, 64.535], [177.411, 64.608], [178.313, 64.076], [178.908, 63.252], [179.37, 62.983], [179.486, 62.569], [179.228, 62.304], [177.364, 62.522], [174.569, 61.769], [173.68, 61.653], [172.15, 60.95], [170.698, 60.336], [170.331, 59.882], [168.9, 60.574], [166.295, 59.789], [165.84, 60.16], [164.877, 59.732], [163.539, 59.869], [163.217, 59.211], [162.017, 58.243], [162.053, 57.839], [163.192, 57.615], [163.058, 56.159], [162.13, 56.122], [161.701, 55.286], [162.117, 54.855], [160.369, 54.344], [160.022, 53.203], [158.531, 52.959], [158.231, 51.943], [156.79, 51.011], [156.42, 51.7], [155.992, 53.159], [155.434, 55.381], [155.914, 56.768], [156.758, 57.365], [156.81, 57.832], [158.364, 58.056], [160.151, 59.315], [161.872, 60.343], [163.67, 61.141], [164.474, 62.551], [163.258, 62.466], [162.658, 61.642], [160.121, 60.544], [159.302, 61.774], [156.721, 61.434], [154.218, 59.758], [155.044, 59.145], [152.812, 58.884], [151.266, 58.781], [151.338, 59.504], [149.784, 59.656], [148.545, 59.164], [145.487, 59.336], [142.198, 59.04], [138.958, 57.088], [135.126, 54.73], [136.702, 54.604], [137.193, 53.977], [138.165, 53.755], [138.805, 54.255], [139.902, 54.19], [141.345, 53.09], [141.379, 52.239], [140.597, 51.24], [140.513, 50.046], [140.062, 48.447], [138.555, 47], [138.22, 46.308], [136.862, 45.144], [135.515, 43.989], [134.869, 43.398], [133.537, 42.811], [132.906, 42.798], [132.278, 43.285], [130.936, 42.553], [130.78, 42.22], [130.78, 42.22], [130.78, 42.22], [130.78, 42.22], [130.64, 42.395], [130.64, 42.395], [130.634, 42.903], [131.145, 42.93], [131.289, 44.112], [131.025, 44.968], [131.883, 45.321], [133.097, 45.144], [133.77, 46.117], [134.112, 47.212], [134.501, 47.578], [135.026, 48.478], [133.374, 48.183], [132.507, 47.789], [130.987, 47.79], [130.582, 48.73], [129.398, 49.441], [127.657, 49.76], [127.287, 50.74], [126.939, 51.354], [126.564, 51.784], [125.946, 52.793], [125.068, 53.161], [123.571, 53.459], [122.246, 53.432], [121.003, 53.251], [120.177, 52.754], [120.726, 52.516], [120.738, 51.964], [120.182, 51.644], [119.279, 50.583], [119.288, 50.143], [117.879, 49.511], [116.679, 49.889], [115.486, 49.805], [114.962, 50.14], [114.362, 50.248], [112.898, 49.544], [111.581, 49.378], [110.662, 49.13], [109.402, 49.293], [108.475, 49.283], [107.868, 49.794], [106.889, 50.274], [105.887, 50.406], [104.622, 50.275], [103.677, 50.09], [102.256, 50.511], [102.065, 51.26], [100.889, 51.517], [99.982, 51.634], [98.861, 52.047], [97.826, 51.011], [98.232, 50.422], [97.26, 49.726], [95.814, 49.977], [94.816, 50.013], [94.148, 50.481], [93.104, 50.495], [92.235, 50.802], [90.714, 50.332], [88.806, 49.471], [87.751, 49.297], [87.36, 49.215], [86.829, 49.827], [85.541, 49.693], [85.116, 50.117], [84.416, 50.311], [83.935, 50.889], [83.383, 51.069], [81.946, 50.812], [80.568, 51.388], [80.036, 50.865], [77.801, 53.404], [76.525, 54.177], [76.891, 54.491], [74.385, 53.547], [73.426, 53.49], [73.509, 54.036], [72.224, 54.377], [71.18, 54.133], [70.865, 55.17], [69.068, 55.385], [68.169, 54.97], [65.667, 54.601], [65.179, 54.354], [61.437, 54.006], [60.978, 53.665], [61.7, 52.98], [60.74, 52.72], [60.927, 52.448], [59.968, 51.96], [61.588, 51.273], [61.337, 50.799], [59.933, 50.842], [59.642, 50.545], [58.363, 51.064], [56.778, 51.044], [55.717, 50.622], [54.533, 51.026], [52.329, 51.719], [50.767, 51.693], [48.702, 50.605], [48.578, 49.875], [47.549, 50.455], [46.752, 49.356], [47.044, 49.152], [46.466, 48.394], [47.315, 47.716], [48.057, 47.744], [48.695, 47.076], [48.593, 46.561], [49.101, 46.399]]]] }, { "N": "Bahamas", "I": "BS", "C": [[[[-78.98, 26.79], [-78.51, 26.87], [-77.85, 26.84], [-77.82, 26.58], [-78.91, 26.42], [-78.98, 26.79]]], [[[-77.79, 27.04], [-77, 26.59], [-77.173, 25.879], [-77.356, 26.007], [-77.34, 26.53], [-77.788, 26.925], [-77.79, 27.04]]], [[[-78.191, 25.21], [-77.89, 25.17], [-77.54, 24.34], [-77.535, 23.76], [-77.78, 23.71], [-78.034, 24.286], [-78.408, 24.576], [-78.191, 25.21]]]] }, { "N": "Falkland Islands", "I": "FK", "C": [[[[-61.2, -51.85], [-60, -51.25], [-59.15, -51.5], [-58.55, -51.1], [-57.75, -51.55], [-58.05, -51.9], [-59.4, -52.2], [-59.85, -51.85], [-60.7, -52.3], [-61.2, -51.85]]]] }, { "N": "Norway", "I": "NO", "C": [[[[15.143, 79.674], [15.523, 80.016], [16.991, 80.051], [18.252, 79.702], [21.544, 78.956], [19.027, 78.563], [18.472, 77.827], [17.594, 77.638], [17.118, 76.809], [15.913, 76.77], [13.763, 77.38], [14.67, 77.736], [13.171, 78.025], [11.222, 78.869], [10.445, 79.652], [13.171, 80.01], [13.719, 79.66], [15.143, 79.674]]], [[[27.408, 80.056], [25.925, 79.518], [23.024, 79.4], [20.075, 79.567], [19.897, 79.842], [18.462, 79.86], [17.368, 80.319], [20.456, 80.598], [21.908, 80.358], [22.919, 80.657], [25.448, 80.407], [27.408, 80.056]]], [[[24.724, 77.854], [22.49, 77.445], [20.726, 77.677], [21.416, 77.935], [20.812, 78.255], [22.884, 78.455], [23.281, 78.08], [24.724, 77.854]]], [[[31.101, 69.558], [29.4, 69.157], [28.592, 69.065], [29.016, 69.766], [27.732, 70.164], [26.18, 69.825], [25.689, 69.092], [24.736, 68.65], [23.662, 68.891], [22.356, 68.842], [21.245, 69.37], [20.646, 69.106], [20.025, 69.065], [19.879, 68.407], [17.994, 68.567], [17.729, 68.011], [16.769, 68.014], [16.109, 67.302], [15.108, 66.194], [13.556, 64.787], [13.92, 64.445], [13.572, 64.049], [12.58, 64.066], [11.931, 63.128], [11.992, 61.8], [12.631, 61.294], [12.3, 60.118], [11.468, 59.432], [11.027, 58.856], [10.357, 59.47], [8.382, 58.313], [7.049, 58.079], [5.666, 58.588], [5.308, 59.663], [4.992, 61.971], [5.913, 62.614], [8.553, 63.454], [10.528, 64.486], [12.358, 65.88], [14.761, 67.811], [16.436, 68.563], [19.184, 69.817], [21.378, 70.255], [23.024, 70.202], [24.547, 71.03], [26.37, 70.986], [28.166, 71.185], [31.293, 70.454], [30.005, 70.186], [31.101, 69.558]]]] }, { "N": "Greenland", "I": "GL", "C": [[[[-46.764, 82.628], [-43.406, 83.225], [-39.898, 83.18], [-38.622, 83.549], [-35.088, 83.645], [-27.1, 83.52], [-20.845, 82.727], [-22.692, 82.342], [-26.518, 82.298], [-31.9, 82.2], [-31.396, 82.022], [-27.857, 82.132], [-24.844, 81.787], [-22.903, 82.093], [-22.072, 81.734], [-23.17, 81.153], [-20.624, 81.525], [-15.768, 81.912], [-12.77, 81.719], [-12.209, 81.292], [-16.285, 80.58], [-16.85, 80.35], [-20.046, 80.177], [-17.73, 80.129], [-18.9, 79.4], [-19.705, 78.751], [-19.674, 77.639], [-18.473, 76.986], [-20.035, 76.944], [-21.679, 76.628], [-19.834, 76.098], [-19.599, 75.248], [-20.668, 75.156], [-19.373, 74.296], [-21.594, 74.224], [-20.435, 73.817], [-20.762, 73.464], [-22.172, 73.31], [-23.566, 73.307], [-22.313, 72.629], [-22.3, 72.184], [-24.278, 72.598], [-24.793, 72.33], [-23.443, 72.08], [-22.133, 71.469], [-21.754, 70.664], [-23.536, 70.471], [-24.307, 70.856], [-25.543, 71.431], [-25.201, 70.752], [-26.363, 70.226], [-23.727, 70.184], [-22.349, 70.129], [-25.029, 69.259], [-27.747, 68.47], [-30.674, 68.125], [-31.777, 68.121], [-32.811, 67.735], [-34.202, 66.68], [-36.353, 65.979], [-37.044, 65.938], [-38.375, 65.692], [-39.812, 65.458], [-40.669, 64.84], [-40.683, 64.139], [-41.189, 63.482], [-42.819, 62.682], [-42.417, 61.901], [-42.866, 61.074], [-43.378, 60.098], [-44.788, 60.037], [-46.264, 60.853], [-48.263, 60.858], [-49.233, 61.407], [-49.9, 62.383], [-51.633, 63.627], [-52.14, 64.278], [-52.277, 65.177], [-53.662, 66.1], [-53.302, 66.837], [-53.969, 67.189], [-52.98, 68.358], [-51.475, 68.73], [-51.08, 69.148], [-50.871, 69.929], [-52.014, 69.575], [-52.558, 69.426], [-53.456, 69.284], [-54.683, 69.61], [-54.75, 70.289], [-54.359, 70.821], [-53.431, 70.836], [-51.39, 70.57], [-53.109, 71.205], [-54.004, 71.547], [-55, 71.407], [-55.835, 71.654], [-54.718, 72.586], [-55.326, 72.959], [-56.12, 73.65], [-57.324, 74.71], [-58.597, 75.099], [-58.585, 75.517], [-61.269, 76.102], [-63.392, 76.175], [-66.064, 76.135], [-68.504, 76.061], [-69.665, 76.38], [-71.403, 77.009], [-68.777, 77.323], [-66.764, 77.376], [-71.043, 77.636], [-73.297, 78.044], [-73.159, 78.433], [-69.373, 78.914], [-65.711, 79.394], [-65.324, 79.758], [-68.023, 80.117], [-67.151, 80.516], [-63.689, 81.214], [-62.234, 81.321], [-62.651, 81.77], [-60.282, 82.034], [-57.207, 82.191], [-54.134, 82.2], [-53.043, 81.888], [-50.391, 82.439], [-48.004, 82.065], [-46.6, 81.986], [-44.523, 81.661], [-46.901, 82.2], [-46.764, 82.628]]]] }, { "N": "Timor-Leste", "I": "TL", "C": [[[[124.969, -8.893], [125.086, -8.657], [125.947, -8.432], [126.645, -8.398], [126.957, -8.273], [127.336, -8.397], [126.968, -8.668], [125.926, -9.106], [125.089, -9.393], [125.07, -9.09], [124.969, -8.893]]]] }, { "N": "South Africa", "I": "ZA", "C": [[[[16.345, -28.577], [16.824, -28.082], [17.219, -28.356], [17.387, -28.784], [17.836, -28.856], [18.465, -29.045], [19.002, -28.972], [19.895, -28.461], [19.896, -24.768], [20.166, -24.918], [20.759, -25.868], [20.666, -26.477], [20.89, -26.829], [21.606, -26.727], [22.106, -26.28], [22.58, -25.979], [22.824, -25.5], [23.312, -25.269], [23.734, -25.39], [24.211, -25.67], [25.025, -25.72], [25.665, -25.487], [25.766, -25.175], [25.942, -24.696], [26.486, -24.616], [26.786, -24.241], [27.119, -23.574], [28.017, -22.828], [29.432, -22.091], [29.839, -22.102], [30.323, -22.272], [30.66, -22.152], [31.191, -22.252], [31.67, -23.659], [31.931, -24.369], [31.752, -25.484], [31.838, -25.843], [31.333, -25.66], [31.044, -25.731], [30.95, -26.023], [30.677, -26.398], [30.686, -26.744], [31.283, -27.286], [31.868, -27.178], [32.072, -26.734], [32.83, -26.742], [32.58, -27.47], [32.462, -28.301], [32.203, -28.752], [31.521, -29.257], [31.326, -29.402], [30.902, -29.91], [30.623, -30.424], [30.056, -31.14], [28.926, -32.172], [28.22, -32.772], [27.465, -33.227], [26.419, -33.615], [25.91, -33.667], [25.781, -33.945], [25.173, -33.797], [24.678, -33.987], [23.594, -33.794], [22.988, -33.916], [22.574, -33.864], [21.543, -34.259], [20.689, -34.417], [20.071, -34.795], [19.616, -34.819], [19.193, -34.463], [18.855, -34.444], [18.425, -33.998], [18.377, -34.137], [18.244, -33.868], [18.25, -33.281], [17.925, -32.611], [18.248, -32.429], [18.222, -31.662], [17.567, -30.726], [17.064, -29.879], [17.063, -29.876], [16.345, -28.577]], [[28.978, -28.956], [28.542, -28.648], [28.074, -28.851], [27.533, -29.243], [26.999, -29.876], [27.749, -30.645], [28.107, -30.546], [28.291, -30.226], [28.848, -30.07], [29.018, -29.744], [29.325, -29.257], [28.978, -28.956]]]] }, { "N": "Lesotho", "I": "LS", "C": [[[[28.978, -28.956], [29.325, -29.257], [29.018, -29.744], [28.848, -30.07], [28.291, -30.226], [28.107, -30.546], [27.749, -30.645], [26.999, -29.876], [27.533, -29.243], [28.074, -28.851], [28.542, -28.648], [28.978, -28.956]]]] }, { "N": "Mexico", "I": "MX", "C": [[[[-117.128, 32.535], [-115.991, 32.612], [-114.721, 32.721], [-114.815, 32.525], [-113.305, 32.039], [-111.024, 31.335], [-109.035, 31.342], [-108.242, 31.342], [-108.24, 31.755], [-106.508, 31.755], [-106.143, 31.4], [-105.632, 31.084], [-105.037, 30.644], [-104.706, 30.122], [-104.457, 29.572], [-103.94, 29.27], [-103.11, 28.97], [-102.48, 29.76], [-101.662, 29.779], [-100.958, 29.381], [-100.456, 28.696], [-100.11, 28.11], [-99.52, 27.54], [-99.3, 26.84], [-99.02, 26.37], [-98.24, 26.06], [-97.53, 25.84], [-97.14, 25.87], [-97.528, 24.992], [-97.703, 24.272], [-97.776, 22.933], [-97.872, 22.444], [-97.699, 21.899], [-97.389, 21.411], [-97.189, 20.635], [-96.526, 19.891], [-96.292, 19.32], [-95.901, 18.828], [-94.839, 18.563], [-94.426, 18.144], [-93.549, 18.424], [-92.786, 18.525], [-92.037, 18.705], [-91.408, 18.876], [-90.772, 19.284], [-90.534, 19.867], [-90.451, 20.708], [-90.279, 21], [-89.601, 21.262], [-88.544, 21.494], [-87.658, 21.459], [-87.052, 21.544], [-86.812, 21.332], [-86.846, 20.85], [-87.383, 20.255], [-87.621, 19.647], [-87.437, 19.472], [-87.587, 19.04], [-87.837, 18.26], [-88.091, 18.517], [-88.3, 18.5], [-88.49, 18.487], [-88.848, 17.883], [-89.03, 18.002], [-89.151, 17.955], [-89.143, 17.808], [-90.068, 17.819], [-91.002, 17.818], [-91.002, 17.255], [-91.454, 17.252], [-91.082, 16.918], [-90.712, 16.687], [-90.601, 16.471], [-90.439, 16.41], [-90.464, 16.07], [-91.748, 16.067], [-92.229, 15.251], [-92.087, 15.065], [-92.203, 14.83], [-92.228, 14.539], [-93.359, 15.615], [-93.875, 15.94], [-94.692, 16.201], [-95.25, 16.128], [-96.053, 15.752], [-96.557, 15.654], [-97.264, 15.917], [-98.013, 16.107], [-98.948, 16.566], [-99.697, 16.706], [-100.829, 17.171], [-101.666, 17.649], [-101.919, 17.916], [-102.478, 17.976], [-103.501, 18.292], [-103.918, 18.749], [-104.992, 19.316], [-105.493, 19.947], [-105.731, 20.434], [-105.398, 20.532], [-105.501, 20.817], [-105.271, 21.076], [-105.266, 21.422], [-105.603, 21.871], [-105.693, 22.269], [-106.029, 22.774], [-106.91, 23.768], [-107.915, 24.549], [-108.402, 25.172], [-109.26, 25.581], [-109.444, 25.825], [-109.292, 26.443], [-109.801, 26.676], [-110.392, 27.162], [-110.641, 27.86], [-111.179, 27.941], [-111.76, 28.468], [-112.228, 28.954], [-112.272, 29.267], [-112.81, 30.021], [-113.164, 30.787], [-113.149, 31.171], [-113.872, 31.568], [-114.206, 31.524], [-114.776, 31.8], [-114.937, 31.393], [-114.771, 30.914], [-114.674, 30.163], [-114.331, 29.75], [-113.589, 29.062], [-113.424, 28.826], [-113.272, 28.755], [-113.14, 28.411], [-112.962, 28.425], [-112.762, 27.78], [-112.458, 27.526], [-112.245, 27.172], [-111.616, 26.663], [-111.285, 25.733], [-110.988, 25.295], [-110.71, 24.826], [-110.655, 24.299], [-110.173, 24.266], [-109.772, 23.811], [-109.409, 23.365], [-109.433, 23.186], [-109.854, 22.818], [-110.031, 22.823], [-110.295, 23.431], [-110.95, 24.001], [-111.671, 24.484], [-112.182, 24.738], [-112.149, 25.47], [-112.301, 26.012], [-112.777, 26.322], [-113.465, 26.768], [-113.597, 26.639], [-113.849, 26.9], [-114.466, 27.142], [-115.055, 27.723], [-114.982, 27.798], [-114.57, 27.741], [-114.199, 28.115], [-114.162, 28.566], [-114.932, 29.279], [-115.519, 29.556], [-115.887, 30.181], [-116.258, 30.836], [-116.722, 31.636], [-117.128, 32.535]]]] }, { "N": "Uruguay", "I": "UY", "C": [[[[-57.625, -30.216], [-56.976, -30.11], [-55.973, -30.883], [-55.602, -30.854], [-54.572, -31.495], [-53.788, -32.047], [-53.21, -32.728], [-53.651, -33.202], [-53.374, -33.768], [-53.806, -34.397], [-54.936, -34.953], [-55.674, -34.753], [-56.215, -34.86], [-57.14, -34.43], [-57.818, -34.463], [-58.427, -33.909], [-58.35, -33.263], [-58.133, -33.041], [-58.142, -32.045], [-57.875, -31.017], [-57.625, -30.216]]]] }, { "N": "Brazil", "I": "BR", "C": [[[[-53.374, -33.768], [-53.651, -33.202], [-53.21, -32.728], [-53.788, -32.047], [-54.572, -31.495], [-55.602, -30.854], [-55.973, -30.883], [-56.976, -30.11], [-57.625, -30.216], [-56.291, -28.853], [-55.162, -27.882], [-54.491, -27.475], [-53.649, -26.923], [-53.628, -26.125], [-54.13, -25.548], [-54.625, -25.739], [-54.429, -25.162], [-54.293, -24.571], [-54.293, -24.021], [-54.653, -23.84], [-55.028, -24.001], [-55.401, -23.957], [-55.518, -23.572], [-55.611, -22.656], [-55.798, -22.357], [-56.473, -22.086], [-56.882, -22.282], [-57.937, -22.09], [-57.871, -20.733], [-58.166, -20.177], [-57.854, -19.97], [-57.95, -19.4], [-57.676, -18.962], [-57.498, -18.174], [-57.735, -17.552], [-58.281, -17.272], [-58.388, -16.877], [-58.241, -16.3], [-60.158, -16.258], [-60.543, -15.094], [-60.251, -15.077], [-60.264, -14.646], [-60.459, -14.354], [-60.503, -13.776], [-61.084, -13.479], [-61.713, -13.489], [-62.127, -13.199], [-62.803, -13.001], [-63.196, -12.627], [-64.316, -12.462], [-65.402, -11.566], [-65.322, -10.896], [-65.445, -10.511], [-65.338, -9.762], [-66.647, -9.931], [-67.174, -10.307], [-68.048, -10.712], [-68.271, -11.015], [-68.786, -11.036], [-69.53, -10.952], [-70.094, -11.124], [-70.549, -11.009], [-70.482, -9.49], [-71.302, -10.079], [-72.185, -10.054], [-72.563, -9.52], [-73.227, -9.462], [-73.015, -9.033], [-73.571, -8.424], [-73.987, -7.524], [-73.723, -7.341], [-73.724, -6.919], [-73.12, -6.63], [-73.22, -6.089], [-72.965, -5.741], [-72.892, -5.275], [-71.748, -4.594], [-70.929, -4.402], [-70.795, -4.251], [-69.894, -4.298], [-69.444, -1.556], [-69.42, -1.123], [-69.577, -0.55], [-70.021, -0.185], [-70.016, 0.541], [-69.452, 0.706], [-69.252, 0.603], [-69.219, 0.986], [-69.805, 1.089], [-69.817, 1.715], [-67.869, 1.692], [-67.538, 2.037], [-67.26, 1.72], [-67.065, 1.13], [-66.876, 1.253], [-66.326, 0.724], [-65.548, 0.789], [-65.355, 1.095], [-64.611, 1.329], [-64.199, 1.493], [-64.083, 1.916], [-63.369, 2.201], [-63.423, 2.411], [-64.27, 2.497], [-64.409, 3.127], [-64.368, 3.797], [-64.816, 4.056], [-64.629, 4.148], [-63.888, 4.021], [-63.093, 3.771], [-62.805, 4.007], [-62.085, 4.162], [-60.967, 4.536], [-60.601, 4.918], [-60.734, 5.2], [-60.214, 5.244], [-59.981, 5.014], [-60.111, 4.575], [-59.767, 4.424], [-59.538, 3.959], [-59.815, 3.606], [-59.975, 2.755], [-59.719, 2.25], [-59.646, 1.787], [-59.031, 1.318], [-58.54, 1.268], [-58.429, 1.464], [-58.113, 1.507], [-57.661, 1.683], [-57.336, 1.949], [-56.783, 1.864], [-56.539, 1.9], [-55.996, 1.818], [-55.906, 2.022], [-56.073, 2.221], [-55.973, 2.51], [-55.57, 2.422], [-55.098, 2.524], [-54.525, 2.312], [-54.088, 2.106], [-53.779, 2.377], [-53.555, 2.335], [-53.418, 2.053], [-52.94, 2.125], [-52.556, 2.505], [-52.249, 3.241], [-51.658, 4.156], [-51.317, 4.203], [-51.07, 3.65], [-50.509, 1.902], [-49.974, 1.736], [-49.947, 1.046], [-50.699, 0.223], [-50.388, -0.078], [-48.621, -0.235], [-48.584, -1.238], [-47.825, -0.582], [-46.567, -0.941], [-44.906, -1.552], [-44.418, -2.138], [-44.582, -2.691], [-43.419, -2.383], [-41.473, -2.912], [-39.979, -2.873], [-38.5, -3.701], [-37.223, -4.821], [-36.453, -5.109], [-35.598, -5.15], [-35.235, -5.465], [-34.896, -6.738], [-34.73, -7.343], [-35.128, -8.996], [-35.637, -9.649], [-37.047, -11.041], [-37.684, -12.171], [-38.424, -13.038], [-38.674, -13.058], [-38.953, -13.793], [-38.882, -15.667], [-39.161, -17.208], [-39.267, -17.868], [-39.584, -18.262], [-39.761, -19.599], [-40.775, -20.905], [-40.945, -21.937], [-41.754, -22.371], [-41.988, -22.97], [-43.075, -22.968], [-44.648, -23.352], [-45.352, -23.797], [-46.472, -24.089], [-47.649, -24.885], [-48.495, -25.877], [-48.641, -26.624], [-48.475, -27.176], [-48.662, -28.186], [-48.888, -28.674], [-49.587, -29.224], [-50.697, -30.984], [-51.576, -31.778], [-52.256, -32.245], [-52.712, -33.197], [-53.374, -33.768]]]] }, { "N": "Bolivia", "I": "BO", "C": [[[[-69.53, -10.952], [-68.786, -11.036], [-68.271, -11.015], [-68.048, -10.712], [-67.174, -10.307], [-66.647, -9.931], [-65.338, -9.762], [-65.445, -10.511], [-65.322, -10.896], [-65.402, -11.566], [-64.316, -12.462], [-63.196, -12.627], [-62.803, -13.001], [-62.127, -13.199], [-61.713, -13.489], [-61.084, -13.479], [-60.503, -13.776], [-60.459, -14.354], [-60.264, -14.646], [-60.251, -15.077], [-60.543, -15.094], [-60.158, -16.258], [-58.241, -16.3], [-58.388, -16.877], [-58.281, -17.272], [-57.735, -17.552], [-57.498, -18.174], [-57.676, -18.962], [-57.95, -19.4], [-57.854, -19.97], [-58.166, -20.177], [-58.183, -19.868], [-59.115, -19.357], [-60.044, -19.343], [-61.786, -19.634], [-62.266, -20.514], [-62.291, -21.052], [-62.685, -22.249], [-62.846, -22.035], [-63.987, -21.994], [-64.377, -22.798], [-64.965, -22.076], [-66.273, -21.832], [-67.107, -22.736], [-67.828, -22.873], [-68.22, -21.494], [-68.757, -20.373], [-68.442, -19.405], [-68.967, -18.982], [-69.1, -18.26], [-69.59, -17.58], [-68.96, -16.501], [-69.39, -15.66], [-69.16, -15.324], [-69.34, -14.953], [-68.949, -14.454], [-68.929, -13.603], [-68.88, -12.9], [-68.665, -12.561], [-69.53, -10.952]]]] }, { "N": "Peru", "I": "PE", "C": [[[[-69.894, -4.298], [-70.795, -4.251], [-70.929, -4.402], [-71.748, -4.594], [-72.892, -5.275], [-72.965, -5.741], [-73.22, -6.089], [-73.12, -6.63], [-73.724, -6.919], [-73.723, -7.341], [-73.987, -7.524], [-73.571, -8.424], [-73.015, -9.033], [-73.227, -9.462], [-72.563, -9.52], [-72.185, -10.054], [-71.302, -10.079], [-70.482, -9.49], [-70.549, -11.009], [-70.094, -11.124], [-69.53, -10.952], [-68.665, -12.561], [-68.88, -12.9], [-68.929, -13.603], [-68.949, -14.454], [-69.34, -14.953], [-69.16, -15.324], [-69.39, -15.66], [-68.96, -16.501], [-69.59, -17.58], [-69.858, -18.093], [-70.373, -18.348], [-71.375, -17.774], [-71.462, -17.363], [-73.445, -16.359], [-75.238, -15.266], [-76.009, -14.649], [-76.423, -13.823], [-76.259, -13.535], [-77.106, -12.223], [-78.092, -10.378], [-79.037, -8.387], [-79.446, -7.931], [-79.761, -7.194], [-80.537, -6.542], [-81.25, -6.137], [-80.926, -5.691], [-81.411, -4.737], [-81.1, -4.036], [-80.303, -3.405], [-80.184, -3.821], [-80.469, -4.059], [-80.442, -4.426], [-80.029, -4.346], [-79.625, -4.454], [-79.205, -4.959], [-78.64, -4.548], [-78.451, -3.873], [-77.838, -3.003], [-76.635, -2.609], [-75.545, -1.562], [-75.234, -0.911], [-75.373, -0.152], [-75.107, -0.057], [-74.442, -0.531], [-74.122, -1.003], [-73.66, -1.26], [-73.07, -2.309], [-72.326, -2.434], [-71.775, -2.17], [-71.414, -2.343], [-70.813, -2.257], [-70.048, -2.725], [-70.693, -3.743], [-70.394, -3.767], [-69.894, -4.298]]]] }, { "N": "Colombia", "I": "CO", "C": [[[[-66.876, 1.253], [-67.065, 1.13], [-67.26, 1.72], [-67.538, 2.037], [-67.869, 1.692], [-69.817, 1.715], [-69.805, 1.089], [-69.219, 0.986], [-69.252, 0.603], [-69.452, 0.706], [-70.016, 0.541], [-70.021, -0.185], [-69.577, -0.55], [-69.42, -1.123], [-69.444, -1.556], [-69.894, -4.298], [-70.394, -3.767], [-70.693, -3.743], [-70.048, -2.725], [-70.813, -2.257], [-71.414, -2.343], [-71.775, -2.17], [-72.326, -2.434], [-73.07, -2.309], [-73.66, -1.26], [-74.122, -1.003], [-74.442, -0.531], [-75.107, -0.057], [-75.373, -0.152], [-75.801, 0.085], [-76.292, 0.416], [-76.576, 0.257], [-77.425, 0.396], [-77.669, 0.826], [-77.855, 0.81], [-78.855, 1.381], [-78.991, 1.691], [-78.618, 1.766], [-78.662, 2.267], [-78.428, 2.63], [-77.932, 2.697], [-77.51, 3.325], [-77.128, 3.85], [-77.496, 4.088], [-77.308, 4.668], [-77.533, 5.583], [-77.319, 5.845], [-77.477, 6.691], [-77.882, 7.224], [-77.753, 7.71], [-77.431, 7.638], [-77.243, 7.935], [-77.475, 8.524], [-77.353, 8.671], [-76.837, 8.639], [-76.086, 9.337], [-75.675, 9.443], [-75.665, 9.774], [-75.48, 10.619], [-74.907, 11.083], [-74.277, 11.102], [-74.197, 11.31], [-73.415, 11.227], [-72.628, 11.732], [-72.238, 11.956], [-71.754, 12.437], [-71.4, 12.376], [-71.137, 12.113], [-71.332, 11.776], [-71.974, 11.609], [-72.228, 11.109], [-72.615, 10.822], [-72.905, 10.45], [-73.028, 9.737], [-73.305, 9.152], [-72.789, 9.085], [-72.66, 8.625], [-72.44, 8.405], [-72.361, 8.003], [-72.48, 7.633], [-72.444, 7.424], [-72.198, 7.34], [-71.96, 6.992], [-70.674, 7.088], [-70.093, 6.96], [-69.389, 6.1], [-68.985, 6.207], [-68.265, 6.153], [-67.695, 6.267], [-67.341, 6.095], [-67.522, 5.557], [-67.745, 5.221], [-67.823, 4.504], [-67.622, 3.839], [-67.338, 3.542], [-67.303, 3.318], [-67.81, 2.821], [-67.447, 2.6], [-67.181, 2.251], [-66.876, 1.253]]]] }, { "N": "Panama", "I": "PA", "C": [[[[-77.353, 8.671], [-77.475, 8.524], [-77.243, 7.935], [-77.431, 7.638], [-77.753, 7.71], [-77.882, 7.224], [-78.215, 7.512], [-78.429, 8.052], [-78.182, 8.319], [-78.435, 8.388], [-78.622, 8.718], [-79.12, 8.996], [-79.558, 8.932], [-79.761, 8.585], [-80.164, 8.333], [-80.383, 8.298], [-80.481, 8.09], [-80.004, 7.548], [-80.277, 7.42], [-80.421, 7.272], [-80.886, 7.221], [-81.06, 7.818], [-81.19, 7.648], [-81.52, 7.707], [-81.721, 8.109], [-82.131, 8.175], [-82.391, 8.292], [-82.82, 8.291], [-82.851, 8.074], [-82.966, 8.225], [-82.913, 8.424], [-82.83, 8.626], [-82.869, 8.807], [-82.719, 8.926], [-82.927, 9.074], [-82.933, 9.477], [-82.546, 9.566], [-82.187, 9.207], [-82.208, 8.996], [-81.809, 8.951], [-81.714, 9.032], [-81.439, 8.786], [-80.947, 8.859], [-80.522, 9.111], [-79.915, 9.313], [-79.573, 9.612], [-79.021, 9.553], [-79.058, 9.455], [-78.501, 9.42], [-78.056, 9.248], [-77.73, 8.947], [-77.353, 8.671]]]] }, { "N": "Costa Rica", "I": "CR", "C": [[[[-82.546, 9.566], [-82.933, 9.477], [-82.927, 9.074], [-82.719, 8.926], [-82.869, 8.807], [-82.83, 8.626], [-82.913, 8.424], [-82.966, 8.225], [-83.508, 8.447], [-83.711, 8.657], [-83.596, 8.83], [-83.633, 9.051], [-83.91, 9.291], [-84.303, 9.487], [-84.648, 9.616], [-84.713, 9.908], [-84.976, 10.087], [-84.911, 9.796], [-85.111, 9.557], [-85.339, 9.835], [-85.661, 9.933], [-85.797, 10.135], [-85.792, 10.439], [-85.659, 10.754], [-85.942, 10.895], [-85.713, 11.088], [-85.562, 11.217], [-84.903, 10.952], [-84.673, 11.083], [-84.356, 10.999], [-84.19, 10.793], [-83.895, 10.727], [-83.656, 10.939], [-83.402, 10.395], [-83.016, 9.993], [-82.546, 9.566]]]] }, { "N": "Nicaragua", "I": "NI", "C": [[[[-83.656, 10.939], [-83.895, 10.727], [-84.19, 10.793], [-84.356, 10.999], [-84.673, 11.083], [-84.903, 10.952], [-85.562, 11.217], [-85.713, 11.088], [-86.058, 11.403], [-86.526, 11.807], [-86.746, 12.144], [-87.168, 12.458], [-87.668, 12.91], [-87.557, 13.065], [-87.392, 12.914], [-87.317, 12.985], [-87.006, 13.026], [-86.881, 13.254], [-86.734, 13.263], [-86.755, 13.755], [-86.521, 13.778], [-86.312, 13.771], [-86.096, 14.038], [-85.801, 13.836], [-85.699, 13.96], [-85.514, 14.079], [-85.165, 14.354], [-85.149, 14.56], [-85.053, 14.552], [-84.925, 14.79], [-84.82, 14.82], [-84.65, 14.667], [-84.449, 14.622], [-84.228, 14.749], [-83.976, 14.749], [-83.629, 14.88], [-83.49, 15.016], [-83.147, 14.996], [-83.233, 14.9], [-83.284, 14.677], [-83.182, 14.311], [-83.412, 13.97], [-83.52, 13.568], [-83.552, 13.127], [-83.499, 12.869], [-83.473, 12.419], [-83.626, 12.321], [-83.72, 11.893], [-83.651, 11.629], [-83.855, 11.373], [-83.809, 11.103], [-83.656, 10.939]]]] }, { "N": "Honduras", "I": "HN", "C": [[[[-83.147, 14.996], [-83.49, 15.016], [-83.629, 14.88], [-83.976, 14.749], [-84.228, 14.749], [-84.449, 14.622], [-84.65, 14.667], [-84.82, 14.82], [-84.925, 14.79], [-85.053, 14.552], [-85.149, 14.56], [-85.165, 14.354], [-85.514, 14.079], [-85.699, 13.96], [-85.801, 13.836], [-86.096, 14.038], [-86.312, 13.771], [-86.521, 13.778], [-86.755, 13.755], [-86.734, 13.263], [-86.881, 13.254], [-87.006, 13.026], [-87.317, 12.985], [-87.489, 13.298], [-87.793, 13.384], [-87.724, 13.785], [-87.86, 13.893], [-88.065, 13.965], [-88.504, 13.845], [-88.541, 13.98], [-88.843, 14.141], [-89.059, 14.34], [-89.353, 14.424], [-89.146, 14.678], [-89.225, 14.874], [-89.155, 15.066], [-88.681, 15.346], [-88.225, 15.728], [-88.121, 15.689], [-87.902, 15.864], [-87.616, 15.879], [-87.523, 15.797], [-87.368, 15.847], [-86.903, 15.757], [-86.441, 15.783], [-86.119, 15.893], [-86.002, 16.005], [-85.683, 15.954], [-85.444, 15.886], [-85.182, 15.909], [-84.984, 15.996], [-84.527, 15.857], [-84.368, 15.835], [-84.063, 15.648], [-83.774, 15.424], [-83.41, 15.271], [-83.147, 14.996]]]] }, { "N": "El Salvador", "I": "SV", "C": [[[[-89.353, 14.424], [-89.059, 14.34], [-88.843, 14.141], [-88.541, 13.98], [-88.504, 13.845], [-88.065, 13.965], [-87.86, 13.893], [-87.724, 13.785], [-87.793, 13.384], [-87.904, 13.149], [-88.483, 13.164], [-88.843, 13.26], [-89.257, 13.459], [-89.812, 13.521], [-90.096, 13.735], [-90.065, 13.882], [-89.722, 14.134], [-89.534, 14.245], [-89.587, 14.363], [-89.353, 14.424]]]] }, { "N": "Guatemala", "I": "GT", "C": [[[[-92.228, 14.539], [-92.203, 14.83], [-92.087, 15.065], [-92.229, 15.251], [-91.748, 16.067], [-90.464, 16.07], [-90.439, 16.41], [-90.601, 16.471], [-90.712, 16.687], [-91.082, 16.918], [-91.454, 17.252], [-91.002, 17.255], [-91.002, 17.818], [-90.068, 17.819], [-89.143, 17.808], [-89.151, 17.016], [-89.229, 15.887], [-88.931, 15.887], [-88.605, 15.706], [-88.518, 15.855], [-88.225, 15.728], [-88.681, 15.346], [-89.155, 15.066], [-89.225, 14.874], [-89.146, 14.678], [-89.353, 14.424], [-89.587, 14.363], [-89.534, 14.245], [-89.722, 14.134], [-90.065, 13.882], [-90.096, 13.735], [-90.609, 13.91], [-91.232, 13.928], [-91.69, 14.126], [-92.228, 14.539]]]] }, { "N": "Belize", "I": "BZ", "C": [[[[-89.143, 17.808], [-89.151, 17.955], [-89.03, 18.002], [-88.848, 17.883], [-88.49, 18.487], [-88.3, 18.5], [-88.296, 18.353], [-88.107, 18.349], [-88.123, 18.077], [-88.285, 17.644], [-88.198, 17.489], [-88.303, 17.132], [-88.24, 17.036], [-88.355, 16.531], [-88.552, 16.265], [-88.732, 16.234], [-88.931, 15.887], [-89.229, 15.887], [-89.151, 17.016], [-89.143, 17.808]]]] }, { "N": "Venezuela", "I": "VE", "C": [[[[-60.734, 5.2], [-60.601, 4.918], [-60.967, 4.536], [-62.085, 4.162], [-62.805, 4.007], [-63.093, 3.771], [-63.888, 4.021], [-64.629, 4.148], [-64.816, 4.056], [-64.368, 3.797], [-64.409, 3.127], [-64.27, 2.497], [-63.423, 2.411], [-63.369, 2.201], [-64.083, 1.916], [-64.199, 1.493], [-64.611, 1.329], [-65.355, 1.095], [-65.548, 0.789], [-66.326, 0.724], [-66.876, 1.253], [-67.181, 2.251], [-67.447, 2.6], [-67.81, 2.821], [-67.303, 3.318], [-67.338, 3.542], [-67.622, 3.839], [-67.823, 4.504], [-67.745, 5.221], [-67.522, 5.557], [-67.341, 6.095], [-67.695, 6.267], [-68.265, 6.153], [-68.985, 6.207], [-69.389, 6.1], [-70.093, 6.96], [-70.674, 7.088], [-71.96, 6.992], [-72.198, 7.34], [-72.444, 7.424], [-72.48, 7.633], [-72.361, 8.003], [-72.44, 8.405], [-72.66, 8.625], [-72.789, 9.085], [-73.305, 9.152], [-73.028, 9.737], [-72.905, 10.45], [-72.615, 10.822], [-72.228, 11.109], [-71.974, 11.609], [-71.332, 11.776], [-71.36, 11.54], [-71.947, 11.423], [-71.621, 10.969], [-71.633, 10.446], [-72.074, 9.866], [-71.696, 9.072], [-71.265, 9.137], [-71.04, 9.86], [-71.35, 10.212], [-71.401, 10.969], [-70.155, 11.375], [-70.294, 11.847], [-69.943, 12.162], [-69.584, 11.46], [-68.883, 11.443], [-68.233, 10.886], [-68.194, 10.555], [-67.296, 10.546], [-66.228, 10.649], [-65.655, 10.201], [-64.89, 10.077], [-64.329, 10.39], [-64.318, 10.641], [-63.079, 10.702], [-61.881, 10.716], [-62.73, 10.42], [-62.389, 9.948], [-61.589, 9.873], [-60.831, 9.381], [-60.671, 8.58], [-60.15, 8.603], [-59.758, 8.367], [-60.551, 7.78], [-60.638, 7.415], [-60.296, 7.044], [-60.544, 6.857], [-61.159, 6.696], [-61.139, 6.234], [-61.41, 5.959], [-60.734, 5.2]]]] }, { "N": "Guyana", "I": "GY", "C": [[[[-56.539, 1.9], [-56.783, 1.864], [-57.336, 1.949], [-57.661, 1.683], [-58.113, 1.507], [-58.429, 1.464], [-58.54, 1.268], [-59.031, 1.318], [-59.646, 1.787], [-59.719, 2.25], [-59.975, 2.755], [-59.815, 3.606], [-59.538, 3.959], [-59.767, 4.424], [-60.111, 4.575], [-59.981, 5.014], [-60.214, 5.244], [-60.734, 5.2], [-61.41, 5.959], [-61.139, 6.234], [-61.159, 6.696], [-60.544, 6.857], [-60.296, 7.044], [-60.638, 7.415], [-60.551, 7.78], [-59.758, 8.367], [-59.102, 7.999], [-58.483, 7.348], [-58.455, 6.833], [-58.078, 6.809], [-57.542, 6.321], [-57.147, 5.973], [-57.307, 5.074], [-57.914, 4.813], [-57.86, 4.577], [-58.045, 4.061], [-57.602, 3.335], [-57.281, 3.333], [-57.15, 2.769], [-56.539, 1.9]]]] }, { "N": "Suriname", "I": "SR", "C": [[[[-54.525, 2.312], [-55.098, 2.524], [-55.57, 2.422], [-55.973, 2.51], [-56.073, 2.221], [-55.906, 2.022], [-55.996, 1.818], [-56.539, 1.9], [-57.15, 2.769], [-57.281, 3.333], [-57.602, 3.335], [-58.045, 4.061], [-57.86, 4.577], [-57.914, 4.813], [-57.307, 5.074], [-57.147, 5.973], [-55.949, 5.773], [-55.842, 5.953], [-55.033, 6.025], [-53.958, 5.757], [-54.479, 4.897], [-54.4, 4.213], [-54.007, 3.62], [-54.182, 3.19], [-54.27, 2.732], [-54.525, 2.312]]]] }, { "N": "France", "I": "FR", "C": [[[[-51.658, 4.156], [-52.249, 3.241], [-52.556, 2.505], [-52.94, 2.125], [-53.418, 2.053], [-53.555, 2.335], [-53.779, 2.377], [-54.088, 2.106], [-54.525, 2.312], [-54.27, 2.732], [-54.182, 3.19], [-54.007, 3.62], [-54.4, 4.213], [-54.479, 4.897], [-53.958, 5.757], [-53.618, 5.647], [-52.882, 5.41], [-51.823, 4.566], [-51.658, 4.156]]], [[[8.746, 42.628], [9.39, 43.01], [9.56, 42.152], [9.23, 41.38], [8.776, 41.584], [8.544, 42.257], [8.746, 42.628]]], [[[6.186, 49.464], [6.658, 49.202], [8.099, 49.018], [7.594, 48.333], [7.467, 47.621], [7.192, 47.45], [6.737, 47.542], [6.769, 47.288], [6.037, 46.726], [6.023, 46.273], [6.5, 46.43], [6.844, 45.991], [6.802, 45.709], [7.097, 45.333], [6.75, 45.029], [7.008, 44.255], [7.55, 44.128], [7.435, 43.694], [6.529, 43.129], [4.557, 43.4], [3.1, 43.075], [2.986, 42.473], [1.827, 42.343], [0.702, 42.796], [0.338, 42.58], [-1.503, 43.034], [-1.901, 43.423], [-1.384, 44.023], [-1.194, 46.015], [-2.226, 47.064], [-2.963, 47.57], [-4.492, 47.955], [-4.592, 48.684], [-3.296, 48.902], [-1.617, 48.644], [-1.933, 49.776], [-0.989, 49.347], [1.339, 50.127], [1.639, 50.947], [2.514, 51.149], [2.658, 50.797], [3.123, 50.78], [3.588, 50.379], [4.286, 49.907], [4.799, 49.985], [5.674, 49.529], [5.898, 49.443], [6.186, 49.464]]], [[[8.746, 42.628], [9.39, 43.01], [9.56, 42.152], [9.23, 41.38], [8.776, 41.584], [8.544, 42.257], [8.746, 42.628]]]] }, { "N": "Ecuador", "I": "EC", "C": [[[[-75.373, -0.152], [-75.234, -0.911], [-75.545, -1.562], [-76.635, -2.609], [-77.838, -3.003], [-78.451, -3.873], [-78.64, -4.548], [-79.205, -4.959], [-79.625, -4.454], [-80.029, -4.346], [-80.442, -4.426], [-80.469, -4.059], [-80.184, -3.821], [-80.303, -3.405], [-79.77, -2.658], [-79.987, -2.221], [-80.369, -2.685], [-80.968, -2.247], [-80.765, -1.965], [-80.934, -1.057], [-80.583, -0.907], [-80.399, -0.284], [-80.021, 0.36], [-80.091, 0.768], [-79.543, 0.983], [-78.855, 1.381], [-77.855, 0.81], [-77.669, 0.826], [-77.425, 0.396], [-76.576, 0.257], [-76.292, 0.416], [-75.801, 0.085], [-75.373, -0.152]]]] }, { "N": "Puerto Rico", "I": "PR", "C": [[[[-66.282, 18.515], [-65.771, 18.427], [-65.591, 18.228], [-65.847, 17.976], [-66.6, 17.982], [-67.184, 17.947], [-67.242, 18.374], [-67.101, 18.521], [-66.282, 18.515]]]] }, { "N": "Jamaica", "I": "JM", "C": [[[[-77.57, 18.491], [-76.897, 18.401], [-76.365, 18.161], [-76.2, 17.887], [-76.903, 17.868], [-77.206, 17.701], [-77.766, 17.862], [-78.338, 18.226], [-78.218, 18.455], [-77.797, 18.524], [-77.57, 18.491]]]] }, { "N": "Cuba", "I": "CU", "C": [[[[-82.268, 23.189], [-81.404, 23.117], [-80.619, 23.106], [-79.68, 22.765], [-79.281, 22.399], [-78.347, 22.512], [-77.993, 22.277], [-77.146, 21.658], [-76.524, 21.207], [-76.195, 21.221], [-75.598, 21.017], [-75.671, 20.735], [-74.934, 20.694], [-74.178, 20.285], [-74.297, 20.05], [-74.962, 19.923], [-75.635, 19.874], [-76.324, 19.953], [-77.755, 19.855], [-77.085, 20.413], [-77.493, 20.673], [-78.137, 20.74], [-78.483, 21.029], [-78.72, 21.598], [-79.285, 21.559], [-80.217, 21.827], [-80.518, 22.037], [-81.821, 22.192], [-82.17, 22.387], [-81.795, 22.637], [-82.776, 22.688], [-83.494, 22.169], [-83.909, 22.155], [-84.052, 21.911], [-84.547, 21.801], [-84.975, 21.896], [-84.447, 22.205], [-84.23, 22.566], [-83.778, 22.788], [-83.268, 22.983], [-82.51, 23.079], [-82.268, 23.189]]]] }, { "N": "Zimbabwe", "I": "ZW", "C": [[[[31.191, -22.252], [30.66, -22.152], [30.323, -22.272], [29.839, -22.102], [29.432, -22.091], [28.795, -21.639], [28.021, -21.486], [27.727, -20.852], [27.725, -20.499], [27.297, -20.392], [26.165, -19.293], [25.85, -18.714], [25.649, -18.536], [25.264, -17.737], [26.382, -17.846], [26.707, -17.961], [27.044, -17.938], [27.598, -17.291], [28.468, -16.468], [28.826, -16.39], [28.947, -16.043], [29.517, -15.645], [30.274, -15.508], [30.339, -15.881], [31.173, -15.861], [31.636, -16.072], [31.852, -16.319], [32.328, -16.392], [32.848, -16.713], [32.85, -17.979], [32.655, -18.672], [32.612, -19.419], [32.773, -19.716], [32.66, -20.304], [32.509, -20.395], [32.245, -21.116], [31.191, -22.252]]]] }, { "N": "Botswana", "I": "BW", "C": [[[[29.432, -22.091], [28.017, -22.828], [27.119, -23.574], [26.786, -24.241], [26.486, -24.616], [25.942, -24.696], [25.766, -25.175], [25.665, -25.487], [25.025, -25.72], [24.211, -25.67], [23.734, -25.39], [23.312, -25.269], [22.824, -25.5], [22.58, -25.979], [22.106, -26.28], [21.606, -26.727], [20.89, -26.829], [20.666, -26.477], [20.759, -25.868], [20.166, -24.918], [19.896, -24.768], [19.895, -21.849], [20.881, -21.814], [20.911, -18.252], [21.655, -18.219], [23.197, -17.869], [23.579, -18.281], [24.217, -17.889], [24.521, -17.887], [25.084, -17.662], [25.264, -17.737], [25.649, -18.536], [25.85, -18.714], [26.165, -19.293], [27.297, -20.392], [27.725, -20.499], [27.727, -20.852], [28.021, -21.486], [28.795, -21.639], [29.432, -22.091]]]] }, { "N": "Namibia", "I": "NA", "C": [[[[19.896, -24.768], [19.895, -28.461], [19.002, -28.972], [18.465, -29.045], [17.836, -28.856], [17.387, -28.784], [17.219, -28.356], [16.824, -28.082], [16.345, -28.577], [15.602, -27.821], [15.21, -27.091], [14.99, -26.117], [14.743, -25.393], [14.408, -23.853], [14.386, -22.657], [14.258, -22.111], [13.869, -21.699], [13.352, -20.873], [12.827, -19.673], [12.609, -19.045], [11.795, -18.069], [11.734, -17.302], [12.215, -17.112], [12.814, -16.941], [13.462, -16.971], [14.059, -17.423], [14.21, -17.353], [18.263, -17.31], [18.956, -17.789], [21.377, -17.931], [23.215, -17.523], [24.034, -17.296], [24.682, -17.353], [25.077, -17.579], [25.084, -17.662], [24.521, -17.887], [24.217, -17.889], [23.579, -18.281], [23.197, -17.869], [21.655, -18.219], [20.911, -18.252], [20.881, -21.814], [19.895, -21.849], [19.896, -24.768]]]] }, { "N": "Senegal", "I": "SN", "C": [[[[-16.714, 13.595], [-17.126, 14.374], [-17.625, 14.73], [-17.185, 14.919], [-16.701, 15.622], [-16.463, 16.135], [-16.121, 16.456], [-15.624, 16.369], [-15.136, 16.587], [-14.577, 16.598], [-14.1, 16.304], [-13.436, 16.039], [-12.831, 15.304], [-12.171, 14.617], [-12.125, 13.995], [-11.928, 13.422], [-11.553, 13.141], [-11.468, 12.755], [-11.514, 12.443], [-11.658, 12.387], [-12.204, 12.466], [-12.279, 12.354], [-12.499, 12.332], [-13.218, 12.576], [-13.7, 12.586], [-15.548, 12.628], [-15.817, 12.516], [-16.148, 12.548], [-16.677, 12.385], [-16.842, 13.151], [-15.931, 13.13], [-15.691, 13.27], [-15.512, 13.279], [-15.141, 13.51], [-14.712, 13.298], [-14.278, 13.281], [-13.845, 13.505], [-14.047, 13.794], [-14.377, 13.626], [-14.687, 13.63], [-15.082, 13.876], [-15.399, 13.86], [-15.625, 13.624], [-16.714, 13.595]]]] }, { "N": "Mali", "I": "ML", "C": [[[[-11.514, 12.443], [-11.468, 12.755], [-11.553, 13.141], [-11.928, 13.422], [-12.125, 13.995], [-12.171, 14.617], [-11.834, 14.799], [-11.666, 15.388], [-11.349, 15.411], [-10.651, 15.133], [-10.087, 15.33], [-9.7, 15.264], [-9.55, 15.486], [-5.538, 15.502], [-5.315, 16.202], [-5.489, 16.325], [-5.971, 20.641], [-6.454, 24.957], [-4.923, 24.975], [-1.55, 22.793], [1.823, 20.611], [2.061, 20.142], [2.684, 19.856], [3.147, 19.694], [3.158, 19.057], [4.267, 19.155], [4.27, 16.852], [3.723, 16.184], [3.638, 15.568], [2.75, 15.41], [1.386, 15.324], [1.016, 14.968], [0.375, 14.929], [-0.266, 14.924], [-0.516, 15.116], [-1.066, 14.974], [-2.001, 14.559], [-2.192, 14.246], [-2.968, 13.798], [-3.104, 13.541], [-3.523, 13.338], [-4.006, 13.472], [-4.28, 13.228], [-4.427, 12.543], [-5.221, 11.714], [-5.198, 11.375], [-5.471, 10.951], [-5.404, 10.371], [-5.817, 10.223], [-6.05, 10.096], [-6.205, 10.524], [-6.494, 10.411], [-6.666, 10.431], [-6.851, 10.139], [-7.623, 10.147], [-7.9, 10.297], [-8.03, 10.207], [-8.335, 10.495], [-8.282, 10.793], [-8.407, 10.909], [-8.62, 10.811], [-8.581, 11.136], [-8.376, 11.394], [-8.786, 11.813], [-8.905, 12.088], [-9.127, 12.308], [-9.328, 12.334], [-9.568, 12.194], [-9.891, 12.06], [-10.165, 11.844], [-10.593, 11.924], [-10.871, 12.178], [-11.037, 12.211], [-11.298, 12.078], [-11.456, 12.077], [-11.514, 12.443]]]] }, { "N": "Mauritania", "I": "MR", "C": [[[[-17.063, 21], [-16.845, 21.333], [-12.929, 21.327], [-13.119, 22.771], [-12.874, 23.285], [-11.937, 23.375], [-11.969, 25.933], [-8.687, 25.881], [-8.684, 27.396], [-4.923, 24.975], [-6.454, 24.957], [-5.971, 20.641], [-5.489, 16.325], [-5.315, 16.202], [-5.538, 15.502], [-9.55, 15.486], [-9.7, 15.264], [-10.087, 15.33], [-10.651, 15.133], [-11.349, 15.411], [-11.666, 15.388], [-11.834, 14.799], [-12.171, 14.617], [-12.831, 15.304], [-13.436, 16.039], [-14.1, 16.304], [-14.577, 16.598], [-15.136, 16.587], [-15.624, 16.369], [-16.121, 16.456], [-16.463, 16.135], [-16.55, 16.674], [-16.271, 17.167], [-16.146, 18.108], [-16.257, 19.097], [-16.378, 19.594], [-16.278, 20.093], [-16.536, 20.568], [-17.063, 21]]]] }, { "N": "Benin", "I": "BJ", "C": [[[[2.692, 6.259], [1.865, 6.142], [1.619, 6.832], [1.664, 9.129], [1.463, 9.335], [1.425, 9.825], [1.078, 10.176], [0.772, 10.471], [0.9, 10.997], [1.243, 11.111], [1.447, 11.548], [1.936, 11.641], [2.154, 11.94], [2.49, 12.233], [2.849, 12.236], [3.611, 11.66], [3.572, 11.328], [3.797, 10.735], [3.6, 10.332], [3.705, 10.063], [3.22, 9.444], [2.912, 9.138], [2.724, 8.507], [2.749, 7.871], [2.692, 6.259]]]] }, { "N": "Niger", "I": "NE", "C": [[[[14.851, 22.863], [15.097, 21.309], [15.471, 21.048], [15.487, 20.73], [15.903, 20.388], [15.686, 19.957], [15.3, 17.928], [15.248, 16.627], [13.972, 15.684], [13.54, 14.367], [13.957, 13.997], [13.954, 13.353], [14.596, 13.33], [14.496, 12.859], [14.214, 12.802], [14.181, 12.484], [13.995, 12.462], [13.319, 13.556], [13.084, 13.596], [12.302, 13.037], [11.528, 13.329], [10.99, 13.387], [10.701, 13.247], [10.115, 13.277], [9.525, 12.851], [9.015, 12.827], [7.805, 13.344], [7.331, 13.098], [6.82, 13.115], [6.445, 13.493], [5.443, 13.866], [4.368, 13.747], [4.108, 13.531], [3.967, 12.956], [3.681, 12.553], [3.611, 11.66], [2.849, 12.236], [2.49, 12.233], [2.154, 11.94], [2.177, 12.625], [1.024, 12.852], [0.993, 13.336], [0.43, 13.989], [0.296, 14.444], [0.375, 14.929], [1.016, 14.968], [1.386, 15.324], [2.75, 15.41], [3.638, 15.568], [3.723, 16.184], [4.27, 16.852], [4.267, 19.155], [5.678, 19.601], [8.573, 21.566], [12, 23.472], [13.581, 23.041], [14.144, 22.491], [14.851, 22.863]]]] }, { "N": "Nigeria", "I": "NG", "C": [[[[2.692, 6.259], [2.749, 7.871], [2.724, 8.507], [2.912, 9.138], [3.22, 9.444], [3.705, 10.063], [3.6, 10.332], [3.797, 10.735], [3.572, 11.328], [3.611, 11.66], [3.681, 12.553], [3.967, 12.956], [4.108, 13.531], [4.368, 13.747], [5.443, 13.866], [6.445, 13.493], [6.82, 13.115], [7.331, 13.098], [7.805, 13.344], [9.015, 12.827], [9.525, 12.851], [10.115, 13.277], [10.701, 13.247], [10.99, 13.387], [11.528, 13.329], [12.302, 13.037], [13.084, 13.596], [13.319, 13.556], [13.995, 12.462], [14.181, 12.484], [14.577, 12.085], [14.468, 11.905], [14.415, 11.572], [13.573, 10.799], [13.309, 10.16], [13.168, 9.641], [12.955, 9.418], [12.754, 8.718], [12.219, 8.306], [12.064, 7.8], [11.839, 7.397], [11.746, 6.981], [11.059, 6.644], [10.497, 7.055], [10.118, 7.039], [9.523, 6.453], [9.233, 6.444], [8.758, 5.48], [8.5, 4.772], [7.462, 4.412], [7.083, 4.465], [6.698, 4.241], [5.898, 4.262], [5.363, 4.888], [5.034, 5.612], [4.326, 6.271], [3.574, 6.258], [2.692, 6.259]]]] }, { "N": "Cameroon", "I": "CM", "C": [[[[14.496, 12.859], [14.893, 12.219], [14.96, 11.556], [14.924, 10.891], [15.468, 9.982], [14.909, 9.992], [14.627, 9.921], [14.171, 10.021], [13.954, 9.549], [14.544, 8.966], [14.98, 8.796], [15.121, 8.382], [15.436, 7.693], [15.279, 7.422], [14.777, 6.408], [14.537, 6.227], [14.459, 5.452], [14.559, 5.031], [14.478, 4.733], [14.951, 4.21], [15.036, 3.851], [15.405, 3.335], [15.863, 3.014], [15.907, 2.557], [16.013, 2.268], [15.941, 1.728], [15.146, 1.964], [14.338, 2.228], [13.076, 2.267], [12.951, 2.322], [12.359, 2.193], [11.752, 2.327], [11.276, 2.261], [9.649, 2.284], [9.795, 3.073], [9.404, 3.735], [8.948, 3.904], [8.745, 4.352], [8.489, 4.496], [8.5, 4.772], [8.758, 5.48], [9.233, 6.444], [9.523, 6.453], [10.118, 7.039], [10.497, 7.055], [11.059, 6.644], [11.746, 6.981], [11.839, 7.397], [12.064, 7.8], [12.219, 8.306], [12.754, 8.718], [12.955, 9.418], [13.168, 9.641], [13.309, 10.16], [13.573, 10.799], [14.415, 11.572], [14.468, 11.905], [14.577, 12.085], [14.181, 12.484], [14.214, 12.802], [14.496, 12.859]]]] }, { "N": "Togo", "I": "TG", "C": [[[[0.9, 10.997], [0.772, 10.471], [1.078, 10.176], [1.425, 9.825], [1.463, 9.335], [1.664, 9.129], [1.619, 6.832], [1.865, 6.142], [1.06, 5.929], [0.837, 6.28], [0.57, 6.914], [0.491, 7.412], [0.712, 8.312], [0.461, 8.677], [0.366, 9.465], [0.368, 10.191], [-0.05, 10.707], [0.024, 11.019], [0.9, 10.997]]]] }, { "N": "Ghana", "I": "GH", "C": [[[[0.024, 11.019], [-0.05, 10.707], [0.368, 10.191], [0.366, 9.465], [0.461, 8.677], [0.712, 8.312], [0.491, 7.412], [0.57, 6.914], [0.837, 6.28], [1.06, 5.929], [-0.508, 5.343], [-1.064, 5.001], [-1.965, 4.71], [-2.856, 4.994], [-2.811, 5.389], [-3.244, 6.25], [-2.984, 7.38], [-2.562, 8.22], [-2.827, 9.642], [-2.964, 10.395], [-2.94, 10.963], [-1.203, 11.01], [-0.762, 10.937], [-0.439, 11.098], [0.024, 11.019]]]] }, { "N": "Côte d'Ivoire", "I": "CI", "C": [[[[-8.03, 10.207], [-7.9, 10.297], [-7.623, 10.147], [-6.851, 10.139], [-6.666, 10.431], [-6.494, 10.411], [-6.205, 10.524], [-6.05, 10.096], [-5.817, 10.223], [-5.404, 10.371], [-4.955, 10.153], [-4.78, 9.822], [-4.33, 9.611], [-3.98, 9.862], [-3.512, 9.9], [-2.827, 9.642], [-2.562, 8.22], [-2.984, 7.38], [-3.244, 6.25], [-2.811, 5.389], [-2.856, 4.994], [-3.311, 4.984], [-4.009, 5.18], [-4.65, 5.168], [-5.834, 4.994], [-6.529, 4.705], [-7.519, 4.338], [-7.712, 4.365], [-7.635, 5.188], [-7.54, 5.313], [-7.57, 5.707], [-7.994, 6.126], [-8.311, 6.193], [-8.603, 6.468], [-8.385, 6.912], [-8.485, 7.395], [-8.439, 7.686], [-8.281, 7.687], [-8.222, 8.123], [-8.299, 8.316], [-8.203, 8.455], [-7.832, 8.576], [-8.079, 9.376], [-8.31, 9.79], [-8.229, 10.129], [-8.03, 10.207]]]] }, { "N": "Guinea", "I": "GN", "C": [[[[-13.7, 12.586], [-13.218, 12.576], [-12.499, 12.332], [-12.279, 12.354], [-12.204, 12.466], [-11.658, 12.387], [-11.514, 12.443], [-11.456, 12.077], [-11.298, 12.078], [-11.037, 12.211], [-10.871, 12.178], [-10.593, 11.924], [-10.165, 11.844], [-9.891, 12.06], [-9.568, 12.194], [-9.328, 12.334], [-9.127, 12.308], [-8.905, 12.088], [-8.786, 11.813], [-8.376, 11.394], [-8.581, 11.136], [-8.62, 10.811], [-8.407, 10.909], [-8.282, 10.793], [-8.335, 10.495], [-8.03, 10.207], [-8.229, 10.129], [-8.31, 9.79], [-8.079, 9.376], [-7.832, 8.576], [-8.203, 8.455], [-8.299, 8.316], [-8.222, 8.123], [-8.281, 7.687], [-8.439, 7.686], [-8.722, 7.712], [-8.926, 7.309], [-9.209, 7.314], [-9.403, 7.527], [-9.337, 7.929], [-9.755, 8.541], [-10.017, 8.429], [-10.23, 8.406], [-10.505, 8.349], [-10.494, 8.716], [-10.655, 8.977], [-10.622, 9.268], [-10.839, 9.688], [-11.117, 10.046], [-11.917, 10.047], [-12.15, 9.859], [-12.426, 9.836], [-12.597, 9.62], [-12.712, 9.343], [-13.247, 8.903], [-13.685, 9.495], [-14.074, 9.886], [-14.33, 10.016], [-14.58, 10.214], [-14.693, 10.656], [-14.84, 10.877], [-15.13, 11.04], [-14.686, 11.528], [-14.382, 11.509], [-14.121, 11.677], [-13.901, 11.679], [-13.743, 11.811], [-13.828, 12.143], [-13.719, 12.247], [-13.7, 12.586]]]] }, { "N": "Guinea-Bissau", "I": "GW", "C": [[[[-16.677, 12.385], [-16.148, 12.548], [-15.817, 12.516], [-15.548, 12.628], [-13.7, 12.586], [-13.719, 12.247], [-13.828, 12.143], [-13.743, 11.811], [-13.901, 11.679], [-14.121, 11.677], [-14.382, 11.509], [-14.686, 11.528], [-15.13, 11.04], [-15.664, 11.458], [-16.085, 11.525], [-16.315, 11.807], [-16.309, 11.959], [-16.614, 12.171], [-16.677, 12.385]]]] }, { "N": "Liberia", "I": "LR", "C": [[[[-8.439, 7.686], [-8.485, 7.395], [-8.385, 6.912], [-8.603, 6.468], [-8.311, 6.193], [-7.994, 6.126], [-7.57, 5.707], [-7.54, 5.313], [-7.635, 5.188], [-7.712, 4.365], [-7.974, 4.356], [-9.005, 4.832], [-9.913, 5.594], [-10.765, 6.141], [-11.439, 6.786], [-11.2, 7.106], [-11.147, 7.397], [-10.696, 7.939], [-10.23, 8.406], [-10.017, 8.429], [-9.755, 8.541], [-9.337, 7.929], [-9.403, 7.527], [-9.209, 7.314], [-8.926, 7.309], [-8.722, 7.712], [-8.439, 7.686]]]] }, { "N": "Sierra Leone", "I": "SL", "C": [[[[-13.247, 8.903], [-12.712, 9.343], [-12.597, 9.62], [-12.426, 9.836], [-12.15, 9.859], [-11.917, 10.047], [-11.117, 10.046], [-10.839, 9.688], [-10.622, 9.268], [-10.655, 8.977], [-10.494, 8.716], [-10.505, 8.349], [-10.23, 8.406], [-10.696, 7.939], [-11.147, 7.397], [-11.2, 7.106], [-11.439, 6.786], [-11.708, 6.86], [-12.428, 7.263], [-12.949, 7.799], [-13.124, 8.164], [-13.247, 8.903]]]] }, { "N": "Burkina Faso", "I": "BF", "C": [[[[-5.404, 10.371], [-5.471, 10.951], [-5.198, 11.375], [-5.221, 11.714], [-4.427, 12.543], [-4.28, 13.228], [-4.006, 13.472], [-3.523, 13.338], [-3.104, 13.541], [-2.968, 13.798], [-2.192, 14.246], [-2.001, 14.559], [-1.066, 14.974], [-0.516, 15.116], [-0.266, 14.924], [0.375, 14.929], [0.296, 14.444], [0.43, 13.989], [0.993, 13.336], [1.024, 12.852], [2.177, 12.625], [2.154, 11.94], [1.936, 11.641], [1.447, 11.548], [1.243, 11.111], [0.9, 10.997], [0.024, 11.019], [-0.439, 11.098], [-0.762, 10.937], [-1.203, 11.01], [-2.94, 10.963], [-2.964, 10.395], [-2.827, 9.642], [-3.512, 9.9], [-3.98, 9.862], [-4.33, 9.611], [-4.78, 9.822], [-4.955, 10.153], [-5.404, 10.371]]]] }, { "N": "Central African Republic", "I": "CF", "C": [[[[27.374, 5.234], [27.044, 5.128], [26.403, 5.151], [25.65, 5.256], [25.279, 5.17], [25.129, 4.927], [24.805, 4.897], [24.411, 5.109], [23.297, 4.61], [22.841, 4.71], [22.704, 4.633], [22.405, 4.029], [21.659, 4.224], [20.928, 4.323], [20.291, 4.692], [19.468, 5.032], [18.932, 4.71], [18.543, 4.202], [18.453, 3.504], [17.81, 3.56], [17.133, 3.728], [16.537, 3.198], [16.013, 2.268], [15.907, 2.557], [15.863, 3.014], [15.405, 3.335], [15.036, 3.851], [14.951, 4.21], [14.478, 4.733], [14.559, 5.031], [14.459, 5.452], [14.537, 6.227], [14.777, 6.408], [15.279, 7.422], [16.106, 7.497], [16.291, 7.754], [16.456, 7.735], [16.706, 7.508], [17.965, 7.891], [18.39, 8.281], [18.911, 8.631], [18.812, 8.983], [19.094, 9.075], [20.06, 9.013], [21.001, 9.476], [21.724, 10.567], [22.231, 10.972], [22.864, 11.142], [22.978, 10.714], [23.554, 10.089], [23.557, 9.681], [23.395, 9.265], [23.459, 8.954], [23.806, 8.666], [24.567, 8.229], [25.115, 7.825], [25.124, 7.5], [25.797, 6.979], [26.213, 6.547], [26.466, 5.947], [27.213, 5.551], [27.374, 5.234]]]] }, { "N": "Republic of the Congo", "I": "CG", "C": [[[[18.453, 3.504], [18.394, 2.9], [18.094, 2.366], [17.899, 1.742], [17.774, 0.856], [17.827, 0.289], [17.664, -0.058], [17.639, -0.425], [17.524, -0.744], [16.865, -1.226], [16.407, -1.741], [15.973, -2.712], [16.006, -3.535], [15.754, -3.855], [15.171, -4.344], [14.583, -4.97], [14.209, -4.793], [14.145, -4.51], [13.6, -4.5], [13.258, -4.883], [12.996, -4.781], [12.621, -4.438], [12.319, -4.606], [11.915, -5.038], [11.094, -3.979], [11.855, -3.427], [11.478, -2.766], [11.821, -2.514], [12.496, -2.392], [12.575, -1.949], [13.11, -2.429], [13.992, -2.471], [14.299, -1.998], [14.425, -1.333], [14.316, -0.553], [13.843, 0.039], [14.276, 1.197], [14.027, 1.396], [13.283, 1.314], [13.003, 1.831], [13.076, 2.267], [14.338, 2.228], [15.146, 1.964], [15.941, 1.728], [16.013, 2.268], [16.537, 3.198], [17.133, 3.728], [17.81, 3.56], [18.453, 3.504]]]] }, { "N": "Gabon", "I": "GA", "C": [[[[11.276, 2.261], [11.752, 2.327], [12.359, 2.193], [12.951, 2.322], [13.076, 2.267], [13.003, 1.831], [13.283, 1.314], [14.027, 1.396], [14.276, 1.197], [13.843, 0.039], [14.316, -0.553], [14.425, -1.333], [14.299, -1.998], [13.992, -2.471], [13.11, -2.429], [12.575, -1.949], [12.496, -2.392], [11.821, -2.514], [11.478, -2.766], [11.855, -3.427], [11.094, -3.979], [10.066, -2.969], [9.405, -2.144], [8.798, -1.111], [8.83, -0.779], [9.048, -0.459], [9.291, 0.269], [9.493, 1.01], [9.83, 1.068], [11.285, 1.058], [11.276, 2.261]]]] }, { "N": "Equatorial Guinea", "I": "GQ", "C": [[[[9.649, 2.284], [11.276, 2.261], [11.285, 1.058], [9.83, 1.068], [9.493, 1.01], [9.306, 1.161], [9.649, 2.284]]]] }, { "N": "Zambia", "I": "ZM", "C": [[[[30.74, -8.34], [31.158, -8.595], [31.556, -8.762], [32.192, -8.93], [32.759, -9.231], [33.231, -9.677], [33.486, -10.526], [33.315, -10.797], [33.114, -11.607], [33.306, -12.436], [32.992, -12.784], [32.688, -13.713], [33.214, -13.972], [30.179, -14.796], [30.274, -15.508], [29.517, -15.645], [28.947, -16.043], [28.826, -16.39], [28.468, -16.468], [27.598, -17.291], [27.044, -17.938], [26.707, -17.961], [26.382, -17.846], [25.264, -17.737], [25.084, -17.662], [25.077, -17.579], [24.682, -17.353], [24.034, -17.296], [23.215, -17.523], [22.562, -16.898], [21.888, -16.08], [21.934, -12.898], [24.016, -12.911], [23.931, -12.566], [24.08, -12.191], [23.904, -11.722], [24.018, -11.237], [23.912, -10.927], [24.257, -10.952], [24.315, -11.263], [24.783, -11.239], [25.418, -11.331], [25.752, -11.785], [26.553, -11.924], [27.164, -11.609], [27.389, -12.133], [28.155, -12.272], [28.524, -12.699], [28.934, -13.249], [29.7, -13.257], [29.616, -12.179], [29.342, -12.361], [28.642, -11.972], [28.372, -11.794], [28.496, -10.79], [28.674, -9.606], [28.45, -9.165], [28.735, -8.527], [29.003, -8.407], [30.346, -8.238], [30.74, -8.34]]]] }, { "N": "Malawi", "I": "MW", "C": [[[[32.759, -9.231], [33.74, -9.417], [33.941, -9.694], [34.28, -10.16], [34.56, -11.52], [34.28, -12.28], [34.56, -13.58], [34.907, -13.565], [35.268, -13.888], [35.687, -14.611], [35.772, -15.897], [35.339, -16.107], [35.034, -16.801], [34.381, -16.184], [34.307, -15.479], [34.518, -15.014], [34.46, -14.613], [34.065, -14.36], [33.79, -14.452], [33.214, -13.972], [32.688, -13.713], [32.992, -12.784], [33.306, -12.436], [33.114, -11.607], [33.315, -10.797], [33.486, -10.526], [33.231, -9.677], [32.759, -9.231]]]] }, { "N": "Mozambique", "I": "MZ", "C": [[[[34.56, -11.52], [35.312, -11.439], [36.514, -11.721], [36.775, -11.595], [37.471, -11.569], [37.828, -11.269], [38.428, -11.285], [39.521, -10.897], [40.317, -10.317], [40.317, -10.317], [40.317, -10.317], [40.478, -10.765], [40.437, -11.762], [40.561, -12.639], [40.6, -14.202], [40.775, -14.692], [40.477, -15.406], [40.089, -16.101], [39.453, -16.721], [38.538, -17.101], [37.411, -17.586], [36.281, -18.66], [35.896, -18.842], [35.198, -19.553], [34.786, -19.784], [34.702, -20.497], [35.176, -21.254], [35.373, -21.841], [35.386, -22.14], [35.563, -22.09], [35.534, -23.071], [35.372, -23.535], [35.607, -23.707], [35.459, -24.123], [35.041, -24.478], [34.216, -24.816], [33.013, -25.358], [32.575, -25.727], [32.66, -26.149], [32.916, -26.216], [32.83, -26.742], [32.072, -26.734], [31.986, -26.292], [31.838, -25.843], [31.752, -25.484], [31.931, -24.369], [31.67, -23.659], [31.191, -22.252], [32.245, -21.116], [32.509, -20.395], [32.66, -20.304], [32.773, -19.716], [32.612, -19.419], [32.655, -18.672], [32.85, -17.979], [32.848, -16.713], [32.328, -16.392], [31.852, -16.319], [31.636, -16.072], [31.173, -15.861], [30.339, -15.881], [30.274, -15.508], [30.179, -14.796], [33.214, -13.972], [33.79, -14.452], [34.065, -14.36], [34.46, -14.613], [34.518, -15.014], [34.307, -15.479], [34.381, -16.184], [35.034, -16.801], [35.339, -16.107], [35.772, -15.897], [35.687, -14.611], [35.268, -13.888], [34.907, -13.565], [34.56, -13.58], [34.28, -12.28], [34.56, -11.52]]]] }, { "N": "Eswatini", "I": "SZ", "C": [[[[32.072, -26.734], [31.868, -27.178], [31.283, -27.286], [30.686, -26.744], [30.677, -26.398], [30.95, -26.023], [31.044, -25.731], [31.333, -25.66], [31.838, -25.843], [31.986, -26.292], [32.072, -26.734]]]] }, { "N": "Angola", "I": "AO", "C": [[[[12.996, -4.781], [12.632, -4.991], [12.468, -5.248], [12.437, -5.684], [12.182, -5.79], [11.915, -5.038], [12.319, -4.606], [12.621, -4.438], [12.996, -4.781]]], [[[12.322, -6.1], [12.735, -5.966], [13.025, -5.984], [13.376, -5.864], [16.327, -5.877], [16.573, -6.623], [16.86, -7.222], [17.09, -7.546], [17.473, -8.069], [18.134, -7.988], [18.464, -7.847], [19.017, -7.988], [19.167, -7.738], [19.418, -7.155], [20.038, -7.116], [20.092, -6.943], [20.602, -6.939], [20.515, -7.3], [21.728, -7.291], [21.746, -7.92], [21.949, -8.306], [21.802, -8.909], [21.875, -9.524], [22.209, -9.895], [22.155, -11.085], [22.403, -10.993], [22.837, -11.018], [23.457, -10.868], [23.912, -10.927], [24.018, -11.237], [23.904, -11.722], [24.08, -12.191], [23.931, -12.566], [24.016, -12.911], [21.934, -12.898], [21.888, -16.08], [22.562, -16.898], [23.215, -17.523], [21.377, -17.931], [18.956, -17.789], [18.263, -17.31], [14.21, -17.353], [14.059, -17.423], [13.462, -16.971], [12.814, -16.941], [12.215, -17.112], [11.734, -17.302], [11.64, -16.673], [11.779, -15.794], [12.124, -14.878], [12.176, -14.449], [12.5, -13.548], [12.738, -13.138], [13.313, -12.484], [13.634, -12.039], [13.739, -11.298], [13.686, -10.731], [13.387, -10.374], [13.121, -9.767], [12.875, -9.167], [12.929, -8.959], [13.236, -8.563], [12.933, -7.597], [12.728, -6.927], [12.227, -6.294], [12.322, -6.1]]]] }, { "N": "Burundi", "I": "BI", "C": [[[[30.47, -2.414], [30.528, -2.808], [30.743, -3.034], [30.752, -3.359], [30.506, -3.569], [30.116, -4.09], [29.754, -4.452], [29.34, -4.5], [29.276, -3.294], [29.025, -2.839], [29.632, -2.918], [29.938, -2.348], [30.47, -2.414]]]] }, { "N": "Israel", "I": "IL", "C": [[[[35.72, 32.709], [35.546, 32.394], [35.184, 32.533], [34.975, 31.867], [35.226, 31.754], [34.971, 31.617], [34.927, 31.353], [35.398, 31.489], [35.421, 31.1], [34.923, 29.501], [34.823, 29.761], [34.265, 31.219], [34.265, 31.219], [34.265, 31.219], [34.556, 31.549], [34.488, 31.606], [34.753, 32.073], [34.955, 32.827], [35.098, 33.081], [35.126, 33.091], [35.461, 33.089], [35.553, 33.264], [35.821, 33.277], [35.836, 32.868], [35.701, 32.716], [35.72, 32.709]]]] }, { "N": "Lebanon", "I": "LB", "C": [[[[35.821, 33.277], [35.553, 33.264], [35.461, 33.089], [35.126, 33.091], [35.482, 33.905], [35.98, 34.61], [35.998, 34.645], [36.448, 34.594], [36.612, 34.202], [36.066, 33.825], [35.821, 33.277]]]] }, { "N": "Madagascar", "I": "MG", "C": [[[[49.544, -12.47], [49.809, -12.895], [50.057, -13.556], [50.217, -14.759], [50.477, -15.227], [50.377, -15.706], [50.2, -16], [49.861, -15.414], [49.673, -15.71], [49.863, -16.451], [49.775, -16.875], [49.499, -17.106], [49.436, -17.953], [49.042, -19.119], [48.549, -20.497], [47.931, -22.392], [47.548, -23.782], [47.096, -24.942], [46.282, -25.178], [45.41, -25.601], [44.834, -25.346], [44.04, -24.988], [43.764, -24.461], [43.698, -23.574], [43.346, -22.777], [43.254, -22.057], [43.433, -21.336], [43.894, -21.163], [43.896, -20.83], [44.374, -20.072], [44.464, -19.435], [44.232, -18.962], [44.043, -18.331], [43.963, -17.41], [44.312, -16.85], [44.447, -16.216], [44.945, -16.179], [45.503, -15.974], [45.873, -15.793], [46.312, -15.78], [46.882, -15.21], [47.705, -14.594], [48.005, -14.091], [47.869, -13.664], [48.294, -13.784], [48.845, -13.089], [48.864, -12.488], [49.195, -12.041], [49.544, -12.47]]]] }, { "N": "Palestine", "I": "PS", "C": [[[[35.398, 31.489], [34.927, 31.353], [34.971, 31.617], [35.226, 31.754], [34.975, 31.867], [35.184, 32.533], [35.546, 32.394], [35.545, 31.783], [35.398, 31.489]]]] }, { "N": "The Gambia", "I": "GM", "C": [[[[-16.714, 13.595], [-15.625, 13.624], [-15.399, 13.86], [-15.082, 13.876], [-14.687, 13.63], [-14.377, 13.626], [-14.047, 13.794], [-13.845, 13.505], [-14.278, 13.281], [-14.712, 13.298], [-15.141, 13.51], [-15.512, 13.279], [-15.691, 13.27], [-15.931, 13.13], [-16.842, 13.151], [-16.714, 13.595]]]] }, { "N": "Tunisia", "I": "TN", "C": [[[[9.482, 30.308], [9.056, 32.103], [8.439, 32.506], [8.43, 32.748], [7.613, 33.344], [7.524, 34.097], [8.141, 34.655], [8.376, 35.48], [8.218, 36.433], [8.421, 36.946], [9.51, 37.35], [10.21, 37.23], [10.181, 36.724], [11.029, 37.092], [11.1, 36.9], [10.6, 36.41], [10.593, 35.947], [10.94, 35.699], [10.808, 34.834], [10.15, 34.331], [10.34, 33.786], [10.857, 33.769], [11.109, 33.293], [11.489, 33.137], [11.432, 32.369], [10.945, 32.082], [10.637, 31.761], [9.95, 31.376], [10.057, 30.962], [9.97, 30.539], [9.482, 30.308]]]] }, { "N": "Algeria", "I": "DZ", "C": [[[[-8.684, 27.396], [-8.665, 27.589], [-8.666, 27.656], [-8.674, 28.841], [-7.059, 29.579], [-6.061, 29.732], [-5.242, 30], [-4.86, 30.501], [-3.69, 30.897], [-3.647, 31.637], [-3.069, 31.724], [-2.617, 32.094], [-1.308, 32.263], [-1.125, 32.652], [-1.388, 32.864], [-1.733, 33.92], [-1.793, 34.528], [-2.17, 35.168], [-1.209, 35.715], [-0.127, 35.889], [0.504, 36.301], [1.467, 36.606], [3.162, 36.784], [4.816, 36.865], [5.32, 36.717], [6.262, 37.111], [7.33, 37.118], [7.737, 36.886], [8.421, 36.946], [8.218, 36.433], [8.376, 35.48], [8.141, 34.655], [7.524, 34.097], [7.613, 33.344], [8.43, 32.748], [8.439, 32.506], [9.056, 32.103], [9.482, 30.308], [9.806, 29.425], [9.86, 28.96], [9.684, 28.144], [9.756, 27.688], [9.629, 27.141], [9.716, 26.512], [9.319, 26.094], [9.911, 25.365], [9.948, 24.937], [10.304, 24.379], [10.771, 24.563], [11.561, 24.098], [12, 23.472], [8.573, 21.566], [5.678, 19.601], [4.267, 19.155], [3.158, 19.057], [3.147, 19.694], [2.684, 19.856], [2.061, 20.142], [1.823, 20.611], [-1.55, 22.793], [-4.923, 24.975], [-8.684, 27.396]]]] }, { "N": "Jordan", "I": "JO", "C": [[[[35.546, 32.394], [35.72, 32.709], [36.834, 32.313], [38.792, 33.379], [39.195, 32.161], [39.005, 32.01], [37.002, 31.508], [37.999, 30.508], [37.668, 30.339], [37.504, 30.004], [36.741, 29.865], [36.501, 29.505], [36.069, 29.197], [34.956, 29.357], [34.923, 29.501], [35.421, 31.1], [35.398, 31.489], [35.545, 31.783], [35.546, 32.394]]]] }, { "N": "United Arab Emirates", "I": "AE", "C": [[[[51.58, 24.245], [51.757, 24.294], [51.794, 24.02], [52.577, 24.177], [53.404, 24.151], [54.008, 24.122], [54.693, 24.798], [55.439, 25.439], [56.071, 26.055], [56.261, 25.715], [56.397, 24.925], [55.886, 24.921], [55.804, 24.27], [55.981, 24.131], [55.529, 23.934], [55.526, 23.525], [55.234, 23.111], [55.208, 22.708], [55.007, 22.497], [52.001, 23.001], [51.618, 24.014], [51.58, 24.245]]]] }, { "N": "Qatar", "I": "QA", "C": [[[[50.81, 24.755], [50.744, 25.482], [51.013, 26.007], [51.286, 26.115], [51.589, 25.801], [51.607, 25.216], [51.39, 24.627], [51.112, 24.556], [50.81, 24.755]]]] }, { "N": "Kuwait", "I": "KW", "C": [[[[47.975, 29.976], [48.183, 29.534], [48.094, 29.306], [48.416, 28.552], [47.709, 28.526], [47.46, 29.003], [46.569, 29.099], [47.303, 30.059], [47.975, 29.976]]]] }, { "N": "Iraq", "I": "IQ", "C": [[[[39.195, 32.161], [38.792, 33.379], [41.006, 34.419], [41.384, 35.628], [41.29, 36.359], [41.837, 36.606], [42.35, 37.23], [42.779, 37.385], [43.942, 37.256], [44.293, 37.002], [44.773, 37.17], [45.421, 35.978], [46.076, 35.677], [46.152, 35.093], [45.648, 34.748], [45.417, 33.968], [46.109, 33.017], [47.335, 32.469], [47.849, 31.709], [47.685, 30.985], [48.005, 30.985], [48.015, 30.452], [48.568, 29.927], [47.975, 29.976], [47.303, 30.059], [46.569, 29.099], [44.709, 29.179], [41.89, 31.19], [40.4, 31.89], [39.195, 32.161]]]] }, { "N": "Oman", "I": "OM", "C": [[[[55.208, 22.708], [55.234, 23.111], [55.526, 23.525], [55.529, 23.934], [55.981, 24.131], [55.804, 24.27], [55.886, 24.921], [56.397, 24.925], [56.845, 24.242], [57.403, 23.879], [58.137, 23.748], [58.729, 23.566], [59.181, 22.992], [59.45, 22.66], [59.808, 22.534], [59.806, 22.311], [59.442, 21.715], [59.282, 21.434], [58.861, 21.114], [58.488, 20.429], [58.034, 20.481], [57.826, 20.243], [57.666, 19.736], [57.789, 19.068], [57.694, 18.945], [57.234, 18.948], [56.61, 18.574], [56.512, 18.087], [56.284, 17.876], [55.661, 17.884], [55.27, 17.632], [55.275, 17.228], [54.791, 16.951], [54.239, 17.045], [53.571, 16.708], [53.109, 16.651], [52.782, 17.35], [52, 19], [55, 20], [55.667, 22], [55.208, 22.708]]], [[[56.261, 25.715], [56.071, 26.055], [56.362, 26.396], [56.486, 26.309], [56.391, 25.896], [56.261, 25.715]]]] }, { "N": "Vanuatu", "I": "VU", "C": [[[[167.217, -15.892], [167.845, -16.466], [167.515, -16.598], [167.18, -16.16], [167.217, -15.892]]], [[[166.793, -15.669], [166.65, -15.393], [166.629, -14.626], [167.108, -14.934], [167.27, -15.74], [167.001, -15.615], [166.793, -15.669]]]] }, { "N": "Cambodia", "I": "KH", "C": [[[[102.585, 12.187], [102.348, 13.394], [102.988, 14.226], [104.281, 14.417], [105.219, 14.273], [106.044, 13.881], [106.496, 14.571], [107.383, 14.202], [107.615, 13.536], [107.491, 12.337], [105.811, 11.568], [106.25, 10.962], [105.2, 10.889], [104.334, 10.487], [103.497, 10.633], [103.091, 11.154], [102.585, 12.187]]]] }, { "N": "Thailand", "I": "TH", "C": [[[[105.219, 14.273], [104.281, 14.417], [102.988, 14.226], [102.348, 13.394], [102.585, 12.187], [101.687, 12.646], [100.832, 12.627], [100.978, 13.413], [100.098, 13.407], [100.019, 12.307], [99.479, 10.846], [99.154, 9.963], [99.222, 9.239], [99.874, 9.208], [100.28, 8.295], [100.459, 7.43], [101.017, 6.857], [101.623, 6.741], [102.141, 6.222], [101.814, 5.811], [101.154, 5.691], [101.076, 6.205], [100.26, 6.643], [100.086, 6.464], [99.691, 6.848], [99.52, 7.343], [98.988, 7.908], [98.504, 8.382], [98.34, 7.795], [98.15, 8.35], [98.259, 8.974], [98.554, 9.933], [99.038, 10.961], [99.587, 11.893], [99.196, 12.805], [99.212, 13.269], [99.098, 13.828], [98.431, 14.622], [98.192, 15.124], [98.537, 15.308], [98.903, 16.178], [98.494, 16.838], [97.859, 17.568], [97.376, 18.445], [97.798, 18.627], [98.254, 19.708], [98.96, 19.753], [99.543, 20.187], [100.116, 20.418], [100.549, 20.109], [100.606, 19.508], [101.282, 19.463], [101.036, 18.409], [101.06, 17.512], [102.114, 18.109], [102.413, 17.933], [102.999, 17.962], [103.2, 18.31], [103.956, 18.241], [104.717, 17.429], [104.779, 16.442], [105.589, 15.57], [105.544, 14.724], [105.219, 14.273]]]] }, { "N": "Lao PDR", "I": "LA", "C": [[[[107.383, 14.202], [106.496, 14.571], [106.044, 13.881], [105.219, 14.273], [105.544, 14.724], [105.589, 15.57], [104.779, 16.442], [104.717, 17.429], [103.956, 18.241], [103.2, 18.31], [102.999, 17.962], [102.413, 17.933], [102.114, 18.109], [101.06, 17.512], [101.036, 18.409], [101.282, 19.463], [100.606, 19.508], [100.549, 20.109], [100.116, 20.418], [100.329, 20.786], [101.18, 21.437], [101.27, 21.202], [101.803, 21.174], [101.652, 22.318], [102.17, 22.465], [102.755, 21.675], [103.204, 20.767], [104.435, 20.759], [104.823, 19.887], [104.183, 19.625], [103.897, 19.265], [105.095, 18.667], [105.926, 17.485], [106.556, 16.604], [107.313, 15.909], [107.565, 15.202], [107.383, 14.202]]]] }, { "N": "Myanmar", "I": "MM", "C": [[[[100.116, 20.418], [99.543, 20.187], [98.96, 19.753], [98.254, 19.708], [97.798, 18.627], [97.376, 18.445], [97.859, 17.568], [98.494, 16.838], [98.903, 16.178], [98.537, 15.308], [98.192, 15.124], [98.431, 14.622], [99.098, 13.828], [99.212, 13.269], [99.196, 12.805], [99.587, 11.893], [99.038, 10.961], [98.554, 9.933], [98.457, 10.675], [98.765, 11.441], [98.428, 12.033], [98.51, 13.122], [98.104, 13.64], [97.778, 14.837], [97.597, 16.101], [97.165, 16.929], [96.506, 16.427], [95.369, 15.714], [94.808, 15.803], [94.189, 16.038], [94.533, 17.277], [94.325, 18.214], [93.541, 19.366], [93.663, 19.727], [93.078, 19.855], [92.369, 20.671], [92.303, 21.475], [92.652, 21.324], [92.673, 22.041], [93.166, 22.278], [93.06, 22.703], [93.286, 23.044], [93.325, 24.079], [94.107, 23.851], [94.553, 24.675], [94.603, 25.162], [95.155, 26.001], [95.125, 26.574], [96.419, 27.265], [97.134, 27.084], [97.052, 27.699], [97.403, 27.883], [97.327, 28.262], [97.912, 28.336], [98.246, 27.747], [98.683, 27.509], [98.712, 26.744], [98.672, 25.919], [97.725, 25.084], [97.605, 23.897], [98.66, 24.063], [98.899, 23.143], [99.532, 22.949], [99.241, 22.118], [99.983, 21.743], [100.417, 21.559], [101.15, 21.85], [101.18, 21.437], [100.329, 20.786], [100.116, 20.418]]]] }, { "N": "Vietnam", "I": "VN", "C": [[[[104.334, 10.487], [105.2, 10.889], [106.25, 10.962], [105.811, 11.568], [107.491, 12.337], [107.615, 13.536], [107.383, 14.202], [107.565, 15.202], [107.313, 15.909], [106.556, 16.604], [105.926, 17.485], [105.095, 18.667], [103.897, 19.265], [104.183, 19.625], [104.823, 19.887], [104.435, 20.759], [103.204, 20.767], [102.755, 21.675], [102.17, 22.465], [102.707, 22.709], [103.505, 22.704], [104.477, 22.819], [105.329, 23.352], [105.811, 22.977], [106.725, 22.794], [106.567, 22.218], [107.043, 21.812], [108.05, 21.552], [106.715, 20.697], [105.882, 19.752], [105.662, 19.058], [106.427, 18.004], [107.362, 16.697], [108.269, 16.08], [108.877, 15.277], [109.335, 13.426], [109.2, 11.667], [108.366, 11.008], [107.221, 10.364], [106.405, 9.531], [105.158, 8.6], [104.795, 9.241], [105.076, 9.918], [104.334, 10.487]]]] }, { "N": "Dem. Rep. Korea", "I": "KP", "C": [[[[130.78, 42.22], [130.78, 42.22], [130.78, 42.22], [130.78, 42.22]]], [[[130.64, 42.395], [130.64, 42.395], [130.78, 42.22], [130.4, 42.28], [129.966, 41.941], [129.667, 41.601], [129.705, 40.883], [129.188, 40.662], [129.01, 40.485], [128.633, 40.19], [127.967, 40.025], [127.533, 39.757], [127.502, 39.324], [127.385, 39.213], [127.783, 39.051], [128.35, 38.612], [128.206, 38.37], [127.78, 38.305], [127.073, 38.256], [126.684, 37.805], [126.237, 37.84], [126.175, 37.75], [125.689, 37.94], [125.568, 37.752], [125.275, 37.669], [125.24, 37.857], [124.981, 37.949], [124.712, 38.108], [124.986, 38.548], [125.222, 38.666], [125.133, 38.849], [125.387, 39.388], [125.321, 39.551], [124.737, 39.66], [124.266, 39.928], [125.08, 40.57], [126.182, 41.107], [126.869, 41.817], [127.344, 41.503], [128.208, 41.467], [128.052, 41.994], [129.597, 42.425], [129.994, 42.985], [130.64, 42.395]]]] }, { "N": "Republic of Korea", "I": "KR", "C": [[[[126.175, 37.75], [126.237, 37.84], [126.684, 37.805], [127.073, 38.256], [127.78, 38.305], [128.206, 38.37], [128.35, 38.612], [129.213, 37.432], [129.46, 36.784], [129.468, 35.632], [129.091, 35.082], [128.186, 34.89], [127.387, 34.476], [126.486, 34.39], [126.374, 34.935], [126.559, 35.685], [126.117, 36.725], [126.86, 36.894], [126.175, 37.75]]]] }, { "N": "Mongolia", "I": "MN", "C": [[[[87.751, 49.297], [88.806, 49.471], [90.714, 50.332], [92.235, 50.802], [93.104, 50.495], [94.148, 50.481], [94.816, 50.013], [95.814, 49.977], [97.26, 49.726], [98.232, 50.422], [97.826, 51.011], [98.861, 52.047], [99.982, 51.634], [100.889, 51.517], [102.065, 51.26], [102.256, 50.511], [103.677, 50.09], [104.622, 50.275], [105.887, 50.406], [106.889, 50.274], [107.868, 49.794], [108.475, 49.283], [109.402, 49.293], [110.662, 49.13], [111.581, 49.378], [112.898, 49.544], [114.362, 50.248], [114.962, 50.14], [115.486, 49.805], [116.679, 49.889], [116.192, 49.135], [115.485, 48.135], [115.743, 47.727], [116.309, 47.853], [117.296, 47.698], [118.064, 48.067], [118.867, 47.747], [119.773, 47.048], [119.663, 46.693], [118.874, 46.805], [117.422, 46.673], [116.718, 46.388], [115.985, 45.727], [114.46, 45.34], [113.464, 44.809], [112.436, 45.012], [111.873, 45.102], [111.348, 44.457], [111.668, 44.073], [111.83, 43.743], [111.13, 43.407], [110.412, 42.871], [109.244, 42.519], [107.745, 42.482], [106.129, 42.134], [104.965, 41.597], [104.522, 41.908], [103.312, 41.907], [101.833, 42.515], [100.846, 42.664], [99.516, 42.525], [97.452, 42.749], [96.349, 42.726], [95.762, 43.319], [95.307, 44.241], [94.689, 44.352], [93.481, 44.975], [92.134, 45.115], [90.946, 45.286], [90.586, 45.72], [90.971, 46.888], [90.281, 47.694], [88.854, 48.069], [88.014, 48.599], [87.751, 49.297]]]] }, { "N": "India", "I": "IN", "C": [[[[97.327, 28.262], [97.403, 27.883], [97.052, 27.699], [97.134, 27.084], [96.419, 27.265], [95.125, 26.574], [95.155, 26.001], [94.603, 25.162], [94.553, 24.675], [94.107, 23.851], [93.325, 24.079], [93.286, 23.044], [93.06, 22.703], [93.166, 22.278], [92.673, 22.041], [92.146, 23.627], [91.87, 23.624], [91.706, 22.985], [91.159, 23.504], [91.468, 24.073], [91.915, 24.13], [92.376, 24.977], [91.8, 25.147], [90.872, 25.133], [89.921, 25.27], [89.832, 25.965], [89.355, 26.014], [88.563, 26.447], [88.21, 25.768], [88.932, 25.239], [88.306, 24.866], [88.084, 24.502], [88.7, 24.234], [88.53, 23.631], [88.876, 22.879], [89.032, 22.056], [88.889, 21.691], [88.208, 21.703], [86.976, 21.496], [87.033, 20.743], [86.499, 20.152], [85.06, 19.479], [83.941, 18.302], [83.189, 17.671], [82.193, 17.017], [82.191, 16.557], [81.693, 16.31], [80.792, 15.952], [80.325, 15.899], [80.025, 15.136], [80.233, 13.836], [80.286, 13.006], [79.863, 12.056], [79.858, 10.357], [79.341, 10.309], [78.885, 9.546], [79.19, 9.217], [78.278, 8.933], [77.941, 8.253], [77.54, 7.966], [76.593, 8.899], [76.13, 10.3], [75.746, 11.308], [75.396, 11.781], [74.865, 12.742], [74.617, 13.993], [74.444, 14.617], [73.534, 15.991], [73.12, 17.929], [72.821, 19.208], [72.824, 20.42], [72.631, 21.356], [71.175, 20.757], [70.47, 20.877], [69.164, 22.089], [69.645, 22.451], [69.35, 22.843], [68.177, 23.692], [68.843, 24.359], [71.043, 24.357], [70.845, 25.215], [70.283, 25.722], [70.169, 26.492], [69.514, 26.941], [70.616, 27.989], [71.778, 27.913], [72.824, 28.962], [73.451, 29.976], [74.421, 30.98], [74.406, 31.693], [75.259, 32.271], [74.452, 32.765], [74.104, 33.441], [73.75, 34.318], [74.24, 34.749], [75.757, 34.505], [76.872, 34.654], [77.837, 35.494], [78.912, 34.322], [78.811, 33.506], [79.209, 32.994], [79.176, 32.484], [78.458, 32.618], [78.739, 31.516], [79.721, 30.883], [81.111, 30.183], [80.477, 29.73], [80.088, 28.794], [81.057, 28.416], [82, 27.925], [83.304, 27.365], [84.675, 27.235], [85.252, 26.726], [86.024, 26.631], [87.227, 26.398], [88.06, 26.415], [88.175, 26.81], [88.043, 27.446], [88.12, 27.877], [88.73, 28.087], [88.814, 27.299], [88.836, 27.099], [89.745, 26.719], [90.373, 26.876], [91.218, 26.809], [92.033, 26.838], [92.104, 27.453], [91.697, 27.772], [92.503, 27.897], [93.413, 28.641], [94.566, 29.277], [95.405, 29.032], [96.118, 29.453], [96.587, 28.831], [96.249, 28.411], [97.327, 28.262]]]] }, { "N": "Bangladesh", "I": "BD", "C": [[[[92.673, 22.041], [92.652, 21.324], [92.303, 21.475], [92.369, 20.671], [92.083, 21.192], [92.025, 21.702], [91.835, 22.183], [91.417, 22.765], [90.496, 22.805], [90.587, 22.393], [90.273, 21.836], [89.847, 22.039], [89.702, 21.857], [89.419, 21.966], [89.032, 22.056], [88.876, 22.879], [88.53, 23.631], [88.7, 24.234], [88.084, 24.502], [88.306, 24.866], [88.932, 25.239], [88.21, 25.768], [88.563, 26.447], [89.355, 26.014], [89.832, 25.965], [89.921, 25.27], [90.872, 25.133], [91.8, 25.147], [92.376, 24.977], [91.915, 24.13], [91.468, 24.073], [91.159, 23.504], [91.706, 22.985], [91.87, 23.624], [92.146, 23.627], [92.673, 22.041]]]] }, { "N": "Bhutan", "I": "BT", "C": [[[[91.697, 27.772], [92.104, 27.453], [92.033, 26.838], [91.218, 26.809], [90.373, 26.876], [89.745, 26.719], [88.836, 27.099], [88.814, 27.299], [89.476, 28.043], [90.016, 28.296], [90.731, 28.065], [91.259, 28.041], [91.697, 27.772]]]] }, { "N": "Nepal", "I": "NP", "C": [[[[88.12, 27.877], [88.043, 27.446], [88.175, 26.81], [88.06, 26.415], [87.227, 26.398], [86.024, 26.631], [85.252, 26.726], [84.675, 27.235], [83.304, 27.365], [82, 27.925], [81.057, 28.416], [80.088, 28.794], [80.477, 29.73], [81.111, 30.183], [81.526, 30.423], [82.328, 30.115], [83.337, 29.464], [83.899, 29.32], [84.235, 28.84], [85.012, 28.643], [85.823, 28.204], [86.955, 27.974], [88.12, 27.877]]]] }, { "N": "Pakistan", "I": "PK", "C": [[[[77.837, 35.494], [76.872, 34.654], [75.757, 34.505], [74.24, 34.749], [73.75, 34.318], [74.104, 33.441], [74.452, 32.765], [75.259, 32.271], [74.406, 31.693], [74.421, 30.98], [73.451, 29.976], [72.824, 28.962], [71.778, 27.913], [70.616, 27.989], [69.514, 26.941], [70.169, 26.492], [70.283, 25.722], [70.845, 25.215], [71.043, 24.357], [68.843, 24.359], [68.177, 23.692], [67.444, 23.945], [67.145, 24.664], [66.373, 25.425], [64.53, 25.237], [62.906, 25.218], [61.497, 25.078], [61.874, 26.24], [63.317, 26.757], [63.234, 27.217], [62.755, 27.379], [62.728, 28.26], [61.772, 28.699], [61.369, 29.303], [60.874, 29.829], [62.55, 29.319], [63.55, 29.468], [64.148, 29.341], [64.35, 29.56], [65.047, 29.472], [66.346, 29.888], [66.381, 30.739], [66.939, 31.305], [67.683, 31.303], [67.793, 31.583], [68.557, 31.713], [68.927, 31.62], [69.318, 31.901], [69.263, 32.502], [69.687, 33.105], [70.324, 33.359], [69.931, 34.02], [70.882, 33.989], [71.157, 34.349], [71.115, 34.733], [71.613, 35.153], [71.499, 35.651], [71.262, 36.074], [71.846, 36.51], [72.92, 36.72], [74.068, 36.836], [74.576, 37.021], [75.158, 37.133], [75.897, 36.667], [76.193, 35.898], [77.837, 35.494]]]] }, { "N": "Afghanistan", "I": "AF", "C": [[[[66.519, 37.363], [67.076, 37.356], [67.83, 37.145], [68.136, 37.023], [68.859, 37.344], [69.196, 37.151], [69.519, 37.609], [70.117, 37.588], [70.271, 37.735], [70.376, 38.138], [70.807, 38.486], [71.348, 38.259], [71.239, 37.953], [71.542, 37.906], [71.449, 37.066], [71.845, 36.738], [72.193, 36.948], [72.637, 37.048], [73.26, 37.495], [73.949, 37.422], [74.98, 37.42], [75.158, 37.133], [74.576, 37.021], [74.068, 36.836], [72.92, 36.72], [71.846, 36.51], [71.262, 36.074], [71.499, 35.651], [71.613, 35.153], [71.115, 34.733], [71.157, 34.349], [70.882, 33.989], [69.931, 34.02], [70.324, 33.359], [69.687, 33.105], [69.263, 32.502], [69.318, 31.901], [68.927, 31.62], [68.557, 31.713], [67.793, 31.583], [67.683, 31.303], [66.939, 31.305], [66.381, 30.739], [66.346, 29.888], [65.047, 29.472], [64.35, 29.56], [64.148, 29.341], [63.55, 29.468], [62.55, 29.319], [60.874, 29.829], [61.781, 30.736], [61.699, 31.38], [60.942, 31.548], [60.864, 32.183], [60.536, 32.981], [60.964, 33.529], [60.528, 33.676], [60.803, 34.404], [61.211, 35.65], [62.231, 35.271], [62.985, 35.404], [63.194, 35.857], [63.983, 36.008], [64.546, 36.312], [64.746, 37.112], [65.589, 37.305], [65.746, 37.661], [66.217, 37.394], [66.519, 37.363]]]] }, { "N": "Tajikistan", "I": "TJ", "C": [[[[67.83, 37.145], [68.392, 38.157], [68.176, 38.902], [67.442, 39.14], [67.701, 39.58], [68.536, 39.533], [69.012, 40.086], [69.329, 40.728], [70.667, 40.96], [70.458, 40.496], [70.601, 40.219], [71.014, 40.244], [70.648, 39.936], [69.56, 40.103], [69.465, 39.527], [70.549, 39.604], [71.785, 39.279], [73.675, 39.431], [73.929, 38.506], [74.258, 38.607], [74.865, 38.379], [74.83, 37.99], [74.98, 37.42], [73.949, 37.422], [73.26, 37.495], [72.637, 37.048], [72.193, 36.948], [71.845, 36.738], [71.449, 37.066], [71.542, 37.906], [71.239, 37.953], [71.348, 38.259], [70.807, 38.486], [70.376, 38.138], [70.271, 37.735], [70.117, 37.588], [69.519, 37.609], [69.196, 37.151], [68.859, 37.344], [68.136, 37.023], [67.83, 37.145]]]] }, { "N": "Kyrgyzstan", "I": "KG", "C": [[[[70.962, 42.266], [71.186, 42.704], [71.845, 42.845], [73.49, 42.501], [73.645, 43.091], [74.213, 43.298], [75.637, 42.878], [76, 42.988], [77.658, 42.961], [79.142, 42.856], [79.644, 42.497], [80.26, 42.35], [80.119, 42.124], [78.544, 41.582], [78.187, 41.185], [76.904, 41.066], [76.526, 40.428], [75.468, 40.562], [74.777, 40.366], [73.822, 39.894], [73.96, 39.66], [73.675, 39.431], [71.785, 39.279], [70.549, 39.604], [69.465, 39.527], [69.56, 40.103], [70.648, 39.936], [71.014, 40.244], [71.775, 40.146], [73.055, 40.866], [71.87, 41.393], [71.158, 41.144], [70.42, 41.52], [71.259, 42.168], [70.962, 42.266]]]] }, { "N": "Turkmenistan", "I": "TM", "C": [[[[52.502, 41.783], [52.944, 42.116], [54.079, 42.324], [54.755, 42.044], [55.455, 41.26], [55.968, 41.309], [57.096, 41.322], [56.932, 41.826], [57.787, 42.171], [58.629, 42.752], [59.976, 42.223], [60.083, 41.425], [60.466, 41.22], [61.547, 41.266], [61.883, 41.085], [62.374, 40.054], [63.518, 39.363], [64.17, 38.892], [65.216, 38.403], [66.546, 37.975], [66.519, 37.363], [66.217, 37.394], [65.746, 37.661], [65.589, 37.305], [64.746, 37.112], [64.546, 36.312], [63.983, 36.008], [63.194, 35.857], [62.985, 35.404], [62.231, 35.271], [61.211, 35.65], [61.123, 36.492], [60.378, 36.527], [59.235, 37.413], [58.436, 37.522], [57.33, 38.029], [56.619, 38.121], [56.18, 37.935], [55.512, 37.964], [54.8, 37.392], [53.922, 37.199], [53.736, 37.906], [53.881, 38.952], [53.101, 39.291], [53.358, 39.975], [52.694, 40.034], [52.915, 40.877], [53.858, 40.631], [54.737, 40.951], [54.008, 41.551], [53.722, 42.123], [52.917, 41.868], [52.815, 41.135], [52.502, 41.783]]]] }, { "N": "Iran", "I": "IR", "C": [[[[48.568, 29.927], [48.015, 30.452], [48.005, 30.985], [47.685, 30.985], [47.849, 31.709], [47.335, 32.469], [46.109, 33.017], [45.417, 33.968], [45.648, 34.748], [46.152, 35.093], [46.076, 35.677], [45.421, 35.978], [44.773, 37.17], [44.773, 37.17], [44.226, 37.972], [44.421, 38.281], [44.109, 39.428], [44.794, 39.713], [44.953, 39.336], [45.458, 38.874], [46.144, 38.741], [46.506, 38.771], [47.685, 39.508], [48.06, 39.582], [48.356, 39.289], [48.011, 38.794], [48.634, 38.27], [48.883, 38.32], [49.2, 37.583], [50.148, 37.375], [50.842, 36.873], [52.264, 36.7], [53.826, 36.965], [53.922, 37.199], [54.8, 37.392], [55.512, 37.964], [56.18, 37.935], [56.619, 38.121], [57.33, 38.029], [58.436, 37.522], [59.235, 37.413], [60.378, 36.527], [61.123, 36.492], [61.211, 35.65], [60.803, 34.404], [60.528, 33.676], [60.964, 33.529], [60.536, 32.981], [60.864, 32.183], [60.942, 31.548], [61.699, 31.38], [61.781, 30.736], [60.874, 29.829], [61.369, 29.303], [61.772, 28.699], [62.728, 28.26], [62.755, 27.379], [63.234, 27.217], [63.317, 26.757], [61.874, 26.24], [61.497, 25.078], [59.616, 25.38], [58.526, 25.61], [57.397, 25.74], [56.971, 26.966], [56.492, 27.143], [55.724, 26.965], [54.715, 26.481], [53.493, 26.812], [52.484, 27.581], [51.521, 27.866], [50.853, 28.815], [50.115, 30.148], [49.577, 29.986], [48.941, 30.317], [48.568, 29.927]]]] }, { "N": "Syria", "I": "SY", "C": [[[[35.72, 32.709], [35.701, 32.716], [35.836, 32.868], [35.821, 33.277], [36.066, 33.825], [36.612, 34.202], [36.448, 34.594], [35.998, 34.645], [35.905, 35.41], [36.15, 35.822], [36.418, 36.041], [36.685, 36.26], [36.739, 36.818], [37.067, 36.623], [38.168, 36.901], [38.7, 36.713], [39.523, 36.716], [40.673, 37.091], [41.212, 37.074], [42.35, 37.23], [41.837, 36.606], [41.29, 36.359], [41.384, 35.628], [41.006, 34.419], [38.792, 33.379], [36.834, 32.313], [35.72, 32.709]]]] }, { "N": "Armenia", "I": "AM", "C": [[[[46.506, 38.771], [46.144, 38.741], [45.735, 39.32], [45.74, 39.474], [45.298, 39.472], [45.002, 39.74], [44.794, 39.713], [44.4, 40.005], [43.656, 40.254], [43.753, 40.74], [43.583, 41.092], [44.972, 41.248], [45.179, 40.985], [45.56, 40.812], [45.359, 40.562], [45.892, 40.218], [45.61, 39.9], [46.035, 39.628], [46.483, 39.464], [46.506, 38.771]]]] }, { "N": "Sweden", "I": "SE", "C": [[[[11.027, 58.856], [11.468, 59.432], [12.3, 60.118], [12.631, 61.294], [11.992, 61.8], [11.931, 63.128], [12.58, 64.066], [13.572, 64.049], [13.92, 64.445], [13.556, 64.787], [15.108, 66.194], [16.109, 67.302], [16.769, 68.014], [17.729, 68.011], [17.994, 68.567], [19.879, 68.407], [20.025, 69.065], [20.646, 69.106], [21.979, 68.617], [23.539, 67.936], [23.566, 66.396], [23.903, 66.007], [22.183, 65.724], [21.214, 65.026], [21.37, 64.414], [19.779, 63.61], [17.848, 62.749], [17.12, 61.341], [17.831, 60.637], [18.788, 60.082], [17.869, 58.954], [16.829, 58.72], [16.448, 57.041], [15.88, 56.104], [14.667, 56.201], [14.101, 55.408], [12.943, 55.362], [12.625, 56.307], [11.788, 57.442], [11.027, 58.856]]]] }, { "N": "Belarus", "I": "BY", "C": [[[[28.177, 56.169], [29.23, 55.918], [29.372, 55.67], [29.896, 55.789], [30.874, 55.551], [30.972, 55.082], [30.758, 54.812], [31.384, 54.157], [31.791, 53.975], [31.731, 53.794], [32.406, 53.618], [32.694, 53.351], [32.305, 53.133], [31.498, 53.167], [31.305, 53.074], [31.54, 52.742], [31.786, 52.102], [31.786, 52.102], [30.928, 52.042], [30.619, 51.823], [30.555, 51.32], [30.157, 51.416], [29.255, 51.368], [28.993, 51.602], [28.618, 51.428], [28.242, 51.572], [27.454, 51.592], [26.338, 51.832], [25.328, 51.911], [24.553, 51.888], [24.005, 51.617], [23.527, 51.578], [23.508, 52.024], [23.199, 52.487], [23.799, 52.691], [23.805, 53.09], [23.528, 53.47], [23.484, 53.912], [24.451, 53.906], [25.536, 54.282], [25.768, 54.847], [26.588, 55.167], [26.494, 55.615], [27.102, 55.783], [28.177, 56.169]]]] }, { "N": "Ukraine", "I": "UA", "C": [[[[31.786, 52.102], [32.159, 52.061], [32.412, 52.289], [32.716, 52.238], [33.753, 52.335], [34.392, 51.769], [34.142, 51.566], [34.225, 51.256], [35.022, 51.208], [35.378, 50.774], [35.356, 50.577], [36.626, 50.226], [37.393, 50.384], [38.011, 49.916], [38.595, 49.926], [40.069, 49.601], [40.081, 49.307], [39.675, 48.784], [39.896, 48.232], [39.738, 47.899], [38.771, 47.826], [38.255, 47.546], [38.224, 47.102], [37.425, 47.022], [36.76, 46.699], [35.824, 46.646], [34.962, 46.273], [35.013, 45.738], [34.862, 45.768], [34.732, 45.966], [34.41, 46.005], [33.699, 46.22], [33.436, 45.972], [33.299, 46.081], [31.744, 46.333], [31.675, 46.706], [30.749, 46.583], [30.378, 46.032], [29.603, 45.293], [29.15, 45.465], [28.68, 45.304], [28.234, 45.488], [28.485, 45.597], [28.66, 45.94], [28.934, 46.259], [28.863, 46.438], [29.072, 46.518], [29.171, 46.379], [29.76, 46.35], [30.025, 46.424], [29.838, 46.525], [29.909, 46.674], [29.56, 46.929], [29.415, 47.347], [29.051, 47.51], [29.123, 47.849], [28.671, 48.118], [28.26, 48.156], [27.523, 48.467], [26.858, 48.368], [26.619, 48.221], [26.197, 48.221], [25.946, 47.987], [25.208, 47.891], [24.866, 47.738], [24.402, 47.982], [23.761, 47.986], [23.142, 48.096], [22.711, 47.882], [22.641, 48.15], [22.086, 48.422], [22.281, 48.825], [22.558, 49.086], [22.776, 49.027], [22.518, 49.477], [23.427, 50.309], [23.923, 50.425], [24.03, 50.705], [23.527, 51.578], [24.005, 51.617], [24.553, 51.888], [25.328, 51.911], [26.338, 51.832], [27.454, 51.592], [28.242, 51.572], [28.618, 51.428], [28.993, 51.602], [29.255, 51.368], [30.157, 51.416], [30.555, 51.32], [30.619, 51.823], [30.928, 52.042], [31.786, 52.102]]], [[[33.436, 45.972], [33.699, 46.22], [34.41, 46.005], [34.732, 45.966], [34.862, 45.768], [35.013, 45.738], [35.021, 45.651], [35.51, 45.41], [36.53, 45.47], [36.335, 45.113], [35.24, 44.94], [33.883, 44.361], [33.326, 44.565], [33.547, 45.035], [32.454, 45.327], [32.631, 45.519], [33.588, 45.852], [33.436, 45.972]]]] }, { "N": "Poland", "I": "PL", "C": [[[[23.484, 53.912], [23.528, 53.47], [23.805, 53.09], [23.799, 52.691], [23.199, 52.487], [23.508, 52.024], [23.527, 51.578], [24.03, 50.705], [23.923, 50.425], [23.427, 50.309], [22.518, 49.477], [22.776, 49.027], [22.558, 49.086], [21.608, 49.47], [20.888, 49.329], [20.416, 49.431], [19.825, 49.217], [19.321, 49.572], [18.91, 49.436], [18.853, 49.496], [18.393, 49.989], [17.649, 50.049], [17.555, 50.362], [16.869, 50.474], [16.719, 50.216], [16.176, 50.423], [16.239, 50.698], [15.491, 50.785], [15.017, 51.107], [14.607, 51.745], [14.685, 52.09], [14.438, 52.625], [14.075, 52.981], [14.353, 53.248], [14.12, 53.757], [14.803, 54.051], [16.363, 54.513], [17.623, 54.852], [18.621, 54.683], [18.696, 54.439], [19.661, 54.426], [20.892, 54.313], [22.731, 54.328], [23.244, 54.221], [23.484, 53.912]]]] }, { "N": "Austria", "I": "AT", "C": [[[[16.98, 48.123], [16.904, 47.715], [16.341, 47.713], [16.534, 47.496], [16.202, 46.852], [16.012, 46.684], [15.137, 46.659], [14.632, 46.432], [13.806, 46.509], [12.376, 46.768], [12.153, 47.115], [11.165, 46.942], [11.049, 46.751], [10.443, 46.894], [9.932, 46.921], [9.48, 47.103], [9.633, 47.348], [9.594, 47.525], [9.896, 47.58], [10.402, 47.302], [10.545, 47.566], [11.426, 47.524], [12.141, 47.703], [12.621, 47.672], [12.933, 47.468], [13.026, 47.638], [12.884, 48.289], [13.243, 48.416], [13.596, 48.877], [14.339, 48.555], [14.901, 48.964], [15.253, 49.039], [16.03, 48.734], [16.499, 48.786], [16.96, 48.597], [16.88, 48.47], [16.98, 48.123]]]] }, { "N": "Hungary", "I": "HU", "C": [[[[22.086, 48.422], [22.641, 48.15], [22.711, 47.882], [22.1, 47.672], [21.627, 46.994], [21.022, 46.316], [20.22, 46.127], [19.596, 46.172], [18.83, 45.909], [18.83, 45.909], [18.456, 45.759], [17.63, 45.952], [16.883, 46.381], [16.565, 46.504], [16.371, 46.841], [16.202, 46.852], [16.534, 47.496], [16.341, 47.713], [16.904, 47.715], [16.98, 48.123], [17.488, 47.867], [17.857, 47.758], [18.697, 47.881], [18.777, 48.082], [19.174, 48.111], [19.661, 48.267], [19.769, 48.203], [20.239, 48.328], [20.474, 48.563], [20.801, 48.624], [21.872, 48.32], [22.086, 48.422]]]] }, { "N": "Moldova", "I": "MD", "C": [[[[26.619, 48.221], [26.858, 48.368], [27.523, 48.467], [28.26, 48.156], [28.671, 48.118], [29.123, 47.849], [29.051, 47.51], [29.415, 47.347], [29.56, 46.929], [29.909, 46.674], [29.838, 46.525], [30.025, 46.424], [29.76, 46.35], [29.171, 46.379], [29.072, 46.518], [28.863, 46.438], [28.934, 46.259], [28.66, 45.94], [28.485, 45.597], [28.234, 45.488], [28.054, 45.945], [28.16, 46.372], [28.128, 46.81], [27.551, 47.405], [27.234, 47.827], [26.924, 48.123], [26.619, 48.221]]]] }, { "N": "Romania", "I": "RO", "C": [[[[28.234, 45.488], [28.68, 45.304], [29.15, 45.465], [29.603, 45.293], [29.627, 45.035], [29.142, 44.82], [28.838, 44.914], [28.558, 43.707], [27.97, 43.812], [27.242, 44.176], [26.065, 43.943], [25.569, 43.688], [24.101, 43.741], [23.332, 43.897], [22.945, 43.824], [22.657, 44.235], [22.474, 44.409], [22.706, 44.578], [22.459, 44.703], [22.145, 44.478], [21.562, 44.769], [21.484, 45.181], [20.874, 45.416], [20.762, 45.735], [20.22, 46.127], [21.022, 46.316], [21.627, 46.994], [22.1, 47.672], [22.711, 47.882], [23.142, 48.096], [23.761, 47.986], [24.402, 47.982], [24.866, 47.738], [25.208, 47.891], [25.946, 47.987], [26.197, 48.221], [26.619, 48.221], [26.924, 48.123], [27.234, 47.827], [27.551, 47.405], [28.128, 46.81], [28.16, 46.372], [28.054, 45.945], [28.234, 45.488]]]] }, { "N": "Lithuania", "I": "LT", "C": [[[[26.494, 55.615], [26.588, 55.167], [25.768, 54.847], [25.536, 54.282], [24.451, 53.906], [23.484, 53.912], [23.244, 54.221], [22.731, 54.328], [22.651, 54.583], [22.758, 54.857], [22.316, 55.015], [21.268, 55.19], [21.056, 56.031], [22.201, 56.338], [23.878, 56.274], [24.861, 56.373], [25.001, 56.165], [25.533, 56.1], [26.494, 55.615]]]] }, { "N": "Latvia", "I": "LV", "C": [[[[27.288, 57.475], [27.77, 57.244], [27.855, 56.759], [28.177, 56.169], [27.102, 55.783], [26.494, 55.615], [25.533, 56.1], [25.001, 56.165], [24.861, 56.373], [23.878, 56.274], [22.201, 56.338], [21.056, 56.031], [21.09, 56.784], [21.582, 57.412], [22.524, 57.753], [23.318, 57.006], [24.121, 57.026], [24.313, 57.793], [25.165, 57.97], [25.603, 57.848], [26.464, 57.476], [27.288, 57.475]]]] }, { "N": "Estonia", "I": "EE", "C": [[[[27.981, 59.475], [27.981, 59.475], [28.132, 59.301], [27.42, 58.725], [27.717, 57.792], [27.288, 57.475], [26.464, 57.476], [25.603, 57.848], [25.165, 57.97], [24.313, 57.793], [24.429, 58.383], [24.061, 58.257], [23.427, 58.613], [23.34, 59.187], [24.604, 59.466], [25.864, 59.611], [26.949, 59.446], [27.981, 59.475], [27.981, 59.475]]]] }, { "N": "Germany", "I": "DE", "C": [[[[14.12, 53.757], [14.353, 53.248], [14.075, 52.981], [14.438, 52.625], [14.685, 52.09], [14.607, 51.745], [15.017, 51.107], [14.571, 51.002], [14.307, 51.117], [14.056, 50.927], [13.338, 50.733], [12.967, 50.484], [12.24, 50.266], [12.415, 49.969], [12.521, 49.547], [13.031, 49.307], [13.596, 48.877], [13.243, 48.416], [12.884, 48.289], [13.026, 47.638], [12.933, 47.468], [12.621, 47.672], [12.141, 47.703], [11.426, 47.524], [10.545, 47.566], [10.402, 47.302], [9.896, 47.58], [9.594, 47.525], [8.523, 47.831], [8.317, 47.614], [7.467, 47.621], [7.594, 48.333], [8.099, 49.018], [6.658, 49.202], [6.186, 49.464], [6.243, 49.902], [6.043, 50.128], [6.157, 50.804], [5.989, 51.852], [6.589, 51.852], [6.843, 52.228], [7.092, 53.144], [6.905, 53.482], [7.1, 53.694], [7.936, 53.748], [8.122, 53.528], [8.801, 54.021], [8.572, 54.396], [8.526, 54.963], [9.282, 54.831], [9.922, 54.983], [9.94, 54.597], [10.95, 54.364], [10.939, 54.009], [11.956, 54.196], [12.518, 54.47], [13.647, 54.076], [14.12, 53.757]]]] }, { "N": "Bulgaria", "I": "BG", "C": [[[[22.657, 44.235], [22.945, 43.824], [23.332, 43.897], [24.101, 43.741], [25.569, 43.688], [26.065, 43.943], [27.242, 44.176], [27.97, 43.812], [28.558, 43.707], [28.039, 43.293], [27.674, 42.578], [27.997, 42.007], [27.136, 42.141], [26.117, 41.827], [26.106, 41.329], [25.197, 41.234], [24.493, 41.584], [23.692, 41.309], [22.952, 41.338], [22.881, 41.999], [22.381, 42.32], [22.545, 42.461], [22.437, 42.58], [22.605, 42.899], [22.986, 43.211], [22.5, 43.643], [22.41, 44.008], [22.657, 44.235]]]] }, { "N": "Greece", "I": "GR", "C": [[[[26.29, 35.3], [26.165, 35.005], [24.725, 34.92], [24.735, 35.085], [23.515, 35.28], [23.7, 35.705], [24.247, 35.368], [25.025, 35.425], [25.769, 35.354], [25.745, 35.18], [26.29, 35.3]]], [[[22.952, 41.338], [23.692, 41.309], [24.493, 41.584], [25.197, 41.234], [26.106, 41.329], [26.117, 41.827], [26.604, 41.562], [26.295, 40.936], [26.057, 40.824], [25.448, 40.853], [24.926, 40.947], [23.715, 40.687], [24.408, 40.125], [23.9, 39.962], [23.343, 39.961], [22.814, 40.476], [22.626, 40.257], [22.85, 39.659], [23.35, 39.19], [22.973, 38.971], [23.53, 38.51], [24.025, 38.22], [24.04, 37.655], [23.115, 37.92], [23.41, 37.41], [22.775, 37.305], [23.154, 36.423], [22.49, 36.41], [21.67, 36.845], [21.295, 37.645], [21.12, 38.31], [20.73, 38.77], [20.218, 39.34], [20.15, 39.625], [20.615, 40.11], [20.675, 40.435], [21, 40.58], [21.02, 40.843], [21.674, 40.931], [22.055, 41.15], [22.597, 41.13], [22.762, 41.305], [22.952, 41.338]]]] }, { "N": "Turkey", "I": "TR", "C": [[[[44.773, 37.17], [44.293, 37.002], [43.942, 37.256], [42.779, 37.385], [42.35, 37.23], [41.212, 37.074], [40.673, 37.091], [39.523, 36.716], [38.7, 36.713], [38.168, 36.901], [37.067, 36.623], [36.739, 36.818], [36.685, 36.26], [36.418, 36.041], [36.15, 35.822], [35.782, 36.275], [36.161, 36.651], [35.551, 36.565], [34.715, 36.796], [34.027, 36.22], [32.509, 36.108], [31.7, 36.644], [30.622, 36.678], [30.391, 36.263], [29.7, 36.144], [28.733, 36.677], [27.641, 36.659], [27.049, 37.653], [26.318, 38.208], [26.805, 38.986], [26.171, 39.464], [27.28, 40.42], [28.82, 40.46], [29.24, 41.22], [31.146, 41.088], [32.348, 41.736], [33.513, 42.019], [35.168, 42.04], [36.913, 41.335], [38.348, 40.949], [39.513, 41.103], [40.373, 41.014], [41.554, 41.536], [42.62, 41.583], [43.583, 41.092], [43.753, 40.74], [43.656, 40.254], [44.4, 40.005], [44.794, 39.713], [44.109, 39.428], [44.421, 38.281], [44.226, 37.972], [44.773, 37.17], [44.773, 37.17]]], [[[26.117, 41.827], [27.136, 42.141], [27.997, 42.007], [28.116, 41.623], [28.988, 41.3], [28.806, 41.055], [27.619, 41], [27.192, 40.691], [26.358, 40.152], [26.043, 40.618], [26.057, 40.824], [26.295, 40.936], [26.604, 41.562], [26.117, 41.827]]]] }, { "N": "Albania", "I": "AL", "C": [[[[21.02, 40.843], [21, 40.58], [20.675, 40.435], [20.615, 40.11], [20.15, 39.625], [19.98, 39.695], [19.96, 39.915], [19.406, 40.251], [19.319, 40.727], [19.404, 41.41], [19.54, 41.72], [19.372, 41.878], [19.372, 41.878], [19.304, 42.196], [19.738, 42.688], [19.802, 42.5], [20.071, 42.589], [20.284, 42.32], [20.523, 42.218], [20.59, 41.855], [20.59, 41.855], [20.463, 41.515], [20.605, 41.086], [21.02, 40.843]]]] }, { "N": "Croatia", "I": "HR", "C": [[[[16.565, 46.504], [16.883, 46.381], [17.63, 45.952], [18.456, 45.759], [18.83, 45.909], [19.073, 45.522], [19.39, 45.237], [19.005, 44.86], [18.553, 45.082], [17.862, 45.068], [17.002, 45.234], [16.535, 45.212], [16.318, 45.004], [15.959, 45.234], [15.75, 44.819], [16.24, 44.351], [16.456, 44.041], [16.916, 43.668], [17.297, 43.446], [17.675, 43.029], [18.56, 42.65], [18.45, 42.48], [18.45, 42.48], [17.51, 42.85], [16.93, 43.21], [16.015, 43.507], [15.174, 44.243], [15.376, 44.318], [14.92, 44.738], [14.902, 45.076], [14.259, 45.234], [13.952, 44.802], [13.657, 45.137], [13.679, 45.484], [13.715, 45.5], [14.412, 45.466], [14.595, 45.635], [14.935, 45.472], [15.328, 45.452], [15.324, 45.732], [15.672, 45.834], [15.769, 46.238], [16.565, 46.504]]]] }, { "N": "Switzerland", "I": "CH", "C": [[[[9.594, 47.525], [9.633, 47.348], [9.48, 47.103], [9.932, 46.921], [10.443, 46.894], [10.363, 46.484], [9.923, 46.315], [9.183, 46.44], [8.966, 46.037], [8.49, 46.005], [8.317, 46.164], [7.756, 45.824], [7.274, 45.777], [6.844, 45.991], [6.5, 46.43], [6.023, 46.273], [6.037, 46.726], [6.769, 47.288], [6.737, 47.542], [7.192, 47.45], [7.467, 47.621], [8.317, 47.614], [8.523, 47.831], [9.594, 47.525]]]] }, { "N": "Luxembourg", "I": "LU", "C": [[[[6.043, 50.128], [6.243, 49.902], [6.186, 49.464], [5.898, 49.443], [5.674, 49.529], [5.782, 50.09], [6.043, 50.128]]]] }, { "N": "Belgium", "I": "BE", "C": [[[[6.157, 50.804], [6.043, 50.128], [5.782, 50.09], [5.674, 49.529], [4.799, 49.985], [4.286, 49.907], [3.588, 50.379], [3.123, 50.78], [2.658, 50.797], [2.514, 51.149], [3.315, 51.346], [3.315, 51.346], [3.315, 51.346], [4.047, 51.267], [4.974, 51.475], [5.607, 51.037], [6.157, 50.804]]]] }, { "N": "Netherlands", "I": "NL", "C": [[[[6.905, 53.482], [7.092, 53.144], [6.843, 52.228], [6.589, 51.852], [5.989, 51.852], [6.157, 50.804], [5.607, 51.037], [4.974, 51.475], [4.047, 51.267], [3.315, 51.346], [3.315, 51.346], [3.83, 51.621], [4.706, 53.092], [6.074, 53.51], [6.905, 53.482]]]] }, { "N": "Portugal", "I": "PT", "C": [[[[-9.035, 41.881], [-8.672, 42.135], [-8.264, 42.28], [-8.013, 41.791], [-7.423, 41.792], [-7.251, 41.918], [-6.669, 41.883], [-6.389, 41.382], [-6.851, 41.111], [-6.864, 40.331], [-7.026, 40.185], [-7.067, 39.712], [-7.499, 39.63], [-7.098, 39.03], [-7.374, 38.373], [-7.029, 38.076], [-7.167, 37.804], [-7.537, 37.429], [-7.454, 37.098], [-7.856, 36.838], [-8.383, 36.979], [-8.899, 36.869], [-8.746, 37.651], [-8.84, 38.266], [-9.287, 38.358], [-9.527, 38.737], [-9.447, 39.392], [-9.048, 39.755], [-8.977, 40.159], [-8.769, 40.761], [-8.791, 41.184], [-8.991, 41.543], [-9.035, 41.881]]]] }, { "N": "Spain", "I": "ES", "C": [[[[-7.454, 37.098], [-7.537, 37.429], [-7.167, 37.804], [-7.029, 38.076], [-7.374, 38.373], [-7.098, 39.03], [-7.499, 39.63], [-7.067, 39.712], [-7.026, 40.185], [-6.864, 40.331], [-6.851, 41.111], [-6.389, 41.382], [-6.669, 41.883], [-7.251, 41.918], [-7.423, 41.792], [-8.013, 41.791], [-8.264, 42.28], [-8.672, 42.135], [-9.035, 41.881], [-8.984, 42.593], [-9.393, 43.027], [-7.978, 43.748], [-6.754, 43.568], [-5.412, 43.574], [-4.348, 43.403], [-3.518, 43.456], [-1.901, 43.423], [-1.503, 43.034], [0.338, 42.58], [0.702, 42.796], [1.827, 42.343], [2.986, 42.473], [3.039, 41.892], [2.092, 41.226], [0.811, 41.015], [0.721, 40.678], [0.107, 40.124], [-0.279, 39.31], [0.111, 38.739], [-0.467, 38.292], [-0.683, 37.642], [-1.438, 37.443], [-2.146, 36.674], [-3.416, 36.659], [-4.369, 36.678], [-4.995, 36.325], [-5.377, 35.947], [-5.866, 36.03], [-6.237, 36.368], [-6.52, 36.943], [-7.454, 37.098]]]] }, { "N": "Ireland", "I": "IE", "C": [[[[-6.198, 53.868], [-6.033, 53.153], [-6.789, 52.26], [-8.562, 51.669], [-9.977, 51.82], [-9.166, 52.865], [-9.689, 53.881], [-8.328, 54.665], [-7.572, 55.132], [-7.366, 54.596], [-7.572, 54.06], [-6.954, 54.074], [-6.198, 53.868]]]] }, { "N": "New Caledonia", "I": "NC", "C": [[[[165.78, -21.08], [166.6, -21.7], [167.12, -22.16], [166.74, -22.4], [166.19, -22.13], [165.474, -21.68], [164.83, -21.15], [164.168, -20.445], [164.03, -20.106], [164.46, -20.12], [165.02, -20.46], [165.46, -20.8], [165.78, -21.08]]]] }, { "N": "Solomon Islands", "I": "SB", "C": [[[[162.119, -10.483], [162.399, -10.826], [161.7, -10.82], [161.32, -10.205], [161.917, -10.447], [162.119, -10.483]]], [[[161.68, -9.6], [161.529, -9.784], [160.788, -8.918], [160.58, -8.32], [160.92, -8.32], [161.28, -9.12], [161.68, -9.6]]], [[[160.852, -9.873], [160.463, -9.895], [159.849, -9.794], [159.64, -9.64], [159.703, -9.243], [160.363, -9.4], [160.689, -9.61], [160.852, -9.873]]], [[[159.64, -8.02], [159.875, -8.337], [159.917, -8.538], [159.134, -8.114], [158.586, -7.755], [158.211, -7.422], [158.36, -7.32], [158.82, -7.56], [159.64, -8.02]]], [[[157.14, -7.022], [157.538, -7.348], [157.339, -7.405], [156.902, -7.177], [156.491, -6.766], [156.543, -6.599], [157.14, -7.022]]]] }, { "N": "New Zealand", "I": "NZ", "C": [[[[176.886, -40.066], [176.508, -40.605], [176.012, -41.29], [175.24, -41.688], [175.068, -41.426], [174.651, -41.282], [175.228, -40.459], [174.9, -39.909], [173.824, -39.509], [173.852, -39.147], [174.575, -38.798], [174.743, -38.028], [174.697, -37.381], [174.292, -36.711], [174.319, -36.535], [173.841, -36.122], [173.054, -35.237], [172.636, -34.529], [173.007, -34.451], [173.551, -35.006], [174.329, -35.265], [174.612, -36.156], [175.337, -37.209], [175.358, -36.526], [175.809, -36.799], [175.958, -37.555], [176.763, -37.881], [177.439, -37.961], [178.01, -37.58], [178.517, -37.695], [178.275, -38.583], [177.97, -39.166], [177.207, -39.146], [176.94, -39.45], [177.033, -39.88], [176.886, -40.066]]], [[[169.668, -43.555], [170.525, -43.032], [171.125, -42.513], [171.57, -41.767], [171.949, -41.514], [172.097, -40.956], [172.799, -40.494], [173.02, -40.919], [173.247, -41.332], [173.958, -40.927], [174.248, -41.349], [174.249, -41.77], [173.876, -42.233], [173.223, -42.97], [172.711, -43.372], [173.08, -43.853], [172.309, -43.866], [171.453, -44.243], [171.185, -44.897], [170.617, -45.909], [169.831, -46.356], [169.332, -46.641], [168.411, -46.62], [167.764, -46.29], [166.677, -46.22], [166.509, -45.853], [167.046, -45.111], [168.304, -44.124], [168.949, -43.936], [169.668, -43.555]]]] }, { "N": "Australia", "I": "AU", "C": [[[[147.689, -40.808], [148.289, -40.875], [148.36, -42.062], [148.017, -42.407], [147.914, -43.212], [147.565, -42.938], [146.87, -43.635], [146.663, -43.581], [146.048, -43.55], [145.432, -42.694], [145.295, -42.034], [144.718, -41.163], [144.744, -40.704], [145.398, -40.793], [146.364, -41.138], [146.909, -41.001], [147.689, -40.808]]], [[[126.149, -32.216], [125.089, -32.729], [124.222, -32.959], [124.029, -33.484], [123.66, -33.89], [122.811, -33.914], [122.183, -34.003], [121.299, -33.821], [120.58, -33.93], [119.894, -33.976], [119.299, -34.509], [119.007, -34.464], [118.506, -34.747], [118.025, -35.065], [117.296, -35.025], [116.625, -35.025], [115.564, -34.386], [115.027, -34.197], [115.049, -33.623], [115.545, -33.487], [115.715, -33.26], [115.679, -32.9], [115.802, -32.205], [115.69, -31.612], [115.161, -30.602], [114.997, -30.031], [115.04, -29.461], [114.642, -28.81], [114.616, -28.516], [114.174, -28.118], [114.049, -27.335], [113.477, -26.543], [113.339, -26.117], [113.778, -26.549], [113.441, -25.621], [113.937, -25.911], [114.233, -26.298], [114.216, -25.786], [113.721, -24.999], [113.625, -24.684], [113.394, -24.385], [113.502, -23.806], [113.707, -23.56], [113.843, -23.06], [113.737, -22.475], [114.15, -21.756], [114.225, -22.517], [114.648, -21.83], [115.46, -21.495], [115.947, -21.069], [116.712, -20.702], [117.166, -20.624], [117.442, -20.747], [118.23, -20.374], [118.836, -20.263], [118.988, -20.044], [119.252, -19.953], [119.805, -19.977], [120.856, -19.684], [121.4, -19.24], [121.655, -18.705], [122.242, -18.198], [122.287, -17.799], [122.313, -17.255], [123.013, -16.405], [123.434, -17.269], [123.859, -17.069], [123.503, -16.597], [123.817, -16.111], [124.258, -16.328], [124.38, -15.567], [124.926, -15.075], [125.167, -14.68], [125.67, -14.51], [125.686, -14.231], [126.125, -14.347], [126.143, -14.096], [126.583, -13.953], [127.066, -13.818], [127.805, -14.277], [128.36, -14.869], [128.986, -14.876], [129.621, -14.97], [129.41, -14.421], [129.889, -13.619], [130.339, -13.357], [130.184, -13.108], [130.618, -12.536], [131.223, -12.184], [131.735, -12.302], [132.575, -12.114], [132.557, -11.603], [131.825, -11.274], [132.357, -11.129], [133.02, -11.376], [133.551, -11.787], [134.393, -12.042], [134.679, -11.941], [135.298, -12.249], [135.883, -11.962], [136.258, -12.049], [136.492, -11.857], [136.952, -12.352], [136.685, -12.887], [136.305, -13.291], [135.962, -13.325], [136.078, -13.724], [135.784, -14.224], [135.429, -14.715], [135.5, -14.998], [136.295, -15.55], [137.065, -15.871], [137.58, -16.215], [138.303, -16.808], [138.585, -16.807], [139.109, -17.063], [139.261, -17.372], [140.215, -17.711], [140.875, -17.369], [141.071, -16.832], [141.274, -16.389], [141.398, -15.841], [141.702, -15.045], [141.563, -14.561], [141.636, -14.27], [141.52, -13.698], [141.651, -12.945], [141.843, -12.742], [141.687, -12.408], [141.929, -11.877], [142.118, -11.328], [142.144, -11.043], [142.515, -10.668], [142.797, -11.157], [142.867, -11.785], [143.116, -11.906], [143.159, -12.326], [143.522, -12.834], [143.597, -13.4], [143.562, -13.764], [143.922, -14.548], [144.564, -14.171], [144.895, -14.594], [145.375, -14.985], [145.272, -15.428], [145.485, -16.286], [145.637, -16.785], [145.889, -16.907], [146.16, -17.762], [146.064, -18.28], [146.387, -18.958], [147.471, -19.481], [148.178, -19.956], [148.848, -20.391], [148.717, -20.633], [149.289, -21.261], [149.678, -22.343], [150.077, -22.123], [150.483, -22.556], [150.727, -22.402], [150.9, -23.462], [151.609, -24.076], [152.074, -24.458], [152.855, -25.268], [153.136, -26.071], [153.162, -26.641], [153.093, -27.26], [153.569, -28.11], [153.512, -28.995], [153.339, -29.458], [153.069, -30.35], [153.09, -30.924], [152.892, -31.64], [152.45, -32.55], [151.709, -33.041], [151.344, -33.816], [151.011, -34.31], [150.714, -35.173], [150.328, -35.672], [150.075, -36.42], [149.946, -37.109], [149.997, -37.425], [149.424, -37.773], [148.305, -37.809], [147.382, -38.219], [146.922, -38.607], [146.318, -39.036], [145.49, -38.594], [144.877, -38.417], [145.032, -37.896], [144.486, -38.085], [143.61, -38.809], [142.745, -38.538], [142.178, -38.38], [141.607, -38.309], [140.639, -38.019], [139.992, -37.403], [139.807, -36.644], [139.574, -36.138], [139.083, -35.733], [138.121, -35.612], [138.449, -35.127], [138.208, -34.385], [137.719, -35.077], [136.829, -35.261], [137.352, -34.707], [137.504, -34.13], [137.89, -33.64], [137.81, -32.9], [136.997, -33.753], [136.372, -34.095], [135.989, -34.89], [135.208, -34.479], [135.239, -33.948], [134.613, -33.223], [134.086, -32.848], [134.274, -32.617], [132.991, -32.011], [132.288, -31.983], [131.326, -31.496], [129.536, -31.59], [128.241, -31.948], [127.103, -32.282], [126.149, -32.216]]]] }, { "N": "Sri Lanka", "I": "LK", "C": [[[[81.788, 7.523], [81.637, 6.482], [81.218, 6.197], [80.348, 5.968], [79.872, 6.763], [79.695, 8.201], [80.148, 9.824], [80.839, 9.268], [81.304, 8.564], [81.788, 7.523]]]] }, { "N": "China", "I": "CN", "C": [[[[109.475, 18.198], [108.655, 18.508], [108.626, 19.368], [109.119, 19.821], [110.212, 20.101], [110.787, 20.078], [111.01, 19.696], [110.571, 19.256], [110.339, 18.678], [109.475, 18.198]]], [[[80.26, 42.35], [80.18, 42.92], [80.866, 43.18], [79.966, 44.918], [81.947, 45.317], [82.459, 45.54], [83.18, 47.33], [85.164, 47.001], [85.72, 47.453], [85.768, 48.456], [86.599, 48.549], [87.36, 49.215], [87.751, 49.297], [88.014, 48.599], [88.854, 48.069], [90.281, 47.694], [90.971, 46.888], [90.586, 45.72], [90.946, 45.286], [92.134, 45.115], [93.481, 44.975], [94.689, 44.352], [95.307, 44.241], [95.762, 43.319], [96.349, 42.726], [97.452, 42.749], [99.516, 42.525], [100.846, 42.664], [101.833, 42.515], [103.312, 41.907], [104.522, 41.908], [104.965, 41.597], [106.129, 42.134], [107.745, 42.482], [109.244, 42.519], [110.412, 42.871], [111.13, 43.407], [111.83, 43.743], [111.668, 44.073], [111.348, 44.457], [111.873, 45.102], [112.436, 45.012], [113.464, 44.809], [114.46, 45.34], [115.985, 45.727], [116.718, 46.388], [117.422, 46.673], [118.874, 46.805], [119.663, 46.693], [119.773, 47.048], [118.867, 47.747], [118.064, 48.067], [117.296, 47.698], [116.309, 47.853], [115.743, 47.727], [115.485, 48.135], [116.192, 49.135], [116.679, 49.889], [117.879, 49.511], [119.288, 50.143], [119.279, 50.583], [120.182, 51.644], [120.738, 51.964], [120.726, 52.516], [120.177, 52.754], [121.003, 53.251], [122.246, 53.432], [123.571, 53.459], [125.068, 53.161], [125.946, 52.793], [126.564, 51.784], [126.939, 51.354], [127.287, 50.74], [127.657, 49.76], [129.398, 49.441], [130.582, 48.73], [130.987, 47.79], [132.507, 47.789], [133.374, 48.183], [135.026, 48.478], [134.501, 47.578], [134.112, 47.212], [133.77, 46.117], [133.097, 45.144], [131.883, 45.321], [131.025, 44.968], [131.289, 44.112], [131.145, 42.93], [130.634, 42.903], [130.64, 42.395], [129.994, 42.985], [129.597, 42.425], [128.052, 41.994], [128.208, 41.467], [127.344, 41.503], [126.869, 41.817], [126.182, 41.107], [125.08, 40.57], [124.266, 39.928], [122.868, 39.638], [122.131, 39.17], [121.055, 38.897], [121.586, 39.361], [121.377, 39.75], [122.169, 40.422], [121.64, 40.946], [120.769, 40.593], [119.64, 39.898], [119.023, 39.252], [118.043, 39.204], [117.533, 38.738], [118.06, 38.061], [118.878, 37.897], [118.912, 37.448], [119.703, 37.156], [120.823, 37.87], [121.711, 37.481], [122.358, 37.454], [122.52, 36.931], [121.104, 36.651], [120.637, 36.111], [119.665, 35.61], [119.151, 34.91], [120.228, 34.36], [120.62, 33.377], [121.229, 32.46], [121.908, 31.692], [121.892, 30.949], [121.264, 30.676], [121.504, 30.143], [122.092, 29.833], [121.938, 29.018], [121.684, 28.226], [121.126, 28.136], [120.395, 27.053], [119.585, 25.741], [118.657, 24.547], [117.282, 23.625], [115.891, 22.783], [114.764, 22.668], [114.153, 22.224], [113.807, 22.548], [113.241, 22.051], [111.844, 21.55], [110.785, 21.397], [110.444, 20.341], [109.89, 20.282], [109.628, 21.008], [109.864, 21.395], [108.523, 21.715], [108.05, 21.552], [107.043, 21.812], [106.567, 22.218], [106.725, 22.794], [105.811, 22.977], [105.329, 23.352], [104.477, 22.819], [103.505, 22.704], [102.707, 22.709], [102.17, 22.465], [101.652, 22.318], [101.803, 21.174], [101.27, 21.202], [101.18, 21.437], [101.15, 21.85], [100.417, 21.559], [99.983, 21.743], [99.241, 22.118], [99.532, 22.949], [98.899, 23.143], [98.66, 24.063], [97.605, 23.897], [97.725, 25.084], [98.672, 25.919], [98.712, 26.744], [98.683, 27.509], [98.246, 27.747], [97.912, 28.336], [97.327, 28.262], [96.249, 28.411], [96.587, 28.831], [96.118, 29.453], [95.405, 29.032], [94.566, 29.277], [93.413, 28.641], [92.503, 27.897], [91.697, 27.772], [91.259, 28.041], [90.731, 28.065], [90.016, 28.296], [89.476, 28.043], [88.814, 27.299], [88.73, 28.087], [88.12, 27.877], [86.955, 27.974], [85.823, 28.204], [85.012, 28.643], [84.235, 28.84], [83.899, 29.32], [83.337, 29.464], [82.328, 30.115], [81.526, 30.423], [81.111, 30.183], [79.721, 30.883], [78.739, 31.516], [78.458, 32.618], [79.176, 32.484], [79.209, 32.994], [78.811, 33.506], [78.912, 34.322], [77.837, 35.494], [76.193, 35.898], [75.897, 36.667], [75.158, 37.133], [74.98, 37.42], [74.83, 37.99], [74.865, 38.379], [74.258, 38.607], [73.929, 38.506], [73.675, 39.431], [73.96, 39.66], [73.822, 39.894], [74.777, 40.366], [75.468, 40.562], [76.526, 40.428], [76.904, 41.066], [78.187, 41.185], [78.544, 41.582], [80.119, 42.124], [80.26, 42.35]]]] }, { "N": "Taiwan", "I": "TW", "C": [[[[121.778, 24.394], [121.176, 22.791], [120.747, 21.971], [120.22, 22.815], [120.106, 23.556], [120.695, 24.538], [121.495, 25.295], [121.951, 24.998], [121.778, 24.394]]]] }, { "N": "Italy", "I": "IT", "C": [[[[10.443, 46.894], [11.049, 46.751], [11.165, 46.942], [12.153, 47.115], [12.376, 46.768], [13.806, 46.509], [13.698, 46.017], [13.938, 45.591], [13.142, 45.737], [12.329, 45.382], [12.384, 44.885], [12.261, 44.6], [12.589, 44.091], [13.527, 43.588], [14.03, 42.761], [15.143, 41.955], [15.926, 41.961], [16.17, 41.74], [15.889, 41.541], [16.785, 41.18], [17.519, 40.877], [18.377, 40.356], [18.48, 40.169], [18.293, 39.811], [17.738, 40.278], [16.87, 40.442], [16.449, 39.795], [17.171, 39.425], [17.053, 38.903], [16.635, 38.844], [16.101, 37.986], [15.684, 37.909], [15.688, 38.215], [15.892, 38.751], [16.109, 38.965], [15.719, 39.544], [15.414, 40.048], [14.998, 40.173], [14.703, 40.605], [14.061, 40.786], [13.628, 41.188], [12.888, 41.253], [12.107, 41.705], [11.192, 42.355], [10.512, 42.931], [10.2, 43.92], [9.702, 44.036], [8.889, 44.366], [8.429, 44.231], [7.851, 43.767], [7.435, 43.694], [7.55, 44.128], [7.008, 44.255], [6.75, 45.029], [7.097, 45.333], [6.802, 45.709], [6.844, 45.991], [7.274, 45.777], [7.756, 45.824], [8.317, 46.164], [8.49, 46.005], [8.966, 46.037], [9.183, 46.44], [9.923, 46.315], [10.363, 46.484], [10.443, 46.894]]], [[[14.761, 38.144], [15.52, 38.231], [15.16, 37.444], [15.31, 37.134], [15.1, 36.62], [14.335, 36.997], [13.827, 37.105], [12.431, 37.613], [12.571, 38.126], [13.741, 38.035], [14.761, 38.144]]], [[[8.71, 40.9], [9.21, 41.21], [9.81, 40.5], [9.67, 39.177], [9.215, 39.24], [8.807, 38.907], [8.428, 39.172], [8.388, 40.378], [8.16, 40.95], [8.71, 40.9]]]] }, { "N": "Denmark", "I": "DK", "C": [[[[9.922, 54.983], [9.282, 54.831], [8.526, 54.963], [8.12, 55.518], [8.09, 56.54], [8.257, 56.81], [8.543, 57.11], [9.424, 57.172], [9.776, 57.448], [10.58, 57.73], [10.546, 57.216], [10.25, 56.89], [10.37, 56.61], [10.912, 56.459], [10.668, 56.081], [10.37, 56.19], [9.65, 55.47], [9.922, 54.983]]], [[[12.371, 56.111], [12.69, 55.61], [12.09, 54.8], [11.044, 55.365], [10.904, 55.78], [12.371, 56.111]]]] }, { "N": "United Kingdom", "I": "GB", "C": [[[[-6.198, 53.868], [-6.954, 54.074], [-7.572, 54.06], [-7.366, 54.596], [-7.572, 55.132], [-6.734, 55.173], [-5.662, 54.555], [-6.198, 53.868]]], [[[-3.094, 53.405], [-3.092, 53.404], [-2.945, 53.985], [-3.615, 54.601], [-3.63, 54.615], [-4.844, 54.791], [-5.083, 55.062], [-4.719, 55.508], [-5.048, 55.784], [-5.586, 55.311], [-5.645, 56.275], [-6.15, 56.785], [-5.787, 57.819], [-5.01, 58.63], [-4.211, 58.551], [-3.005, 58.635], [-4.074, 57.553], [-3.055, 57.69], [-1.959, 57.685], [-2.22, 56.87], [-3.119, 55.974], [-2.085, 55.91], [-2.006, 55.805], [-1.115, 54.625], [-0.43, 54.464], [0.185, 53.325], [0.47, 52.93], [1.682, 52.74], [1.56, 52.1], [1.051, 51.807], [1.45, 51.289], [0.55, 50.766], [-0.788, 50.775], [-2.49, 50.5], [-2.956, 50.697], [-3.617, 50.228], [-4.543, 50.342], [-5.245, 49.96], [-5.777, 50.16], [-4.31, 51.21], [-3.415, 51.426], [-3.423, 51.427], [-4.984, 51.593], [-5.267, 51.991], [-4.222, 52.301], [-4.77, 52.84], [-4.58, 53.495], [-3.094, 53.405]]]] }, { "N": "Iceland", "I": "IS", "C": [[[[-14.509, 66.456], [-14.74, 65.809], [-13.61, 65.127], [-14.91, 64.364], [-17.794, 63.679], [-18.656, 63.496], [-19.973, 63.644], [-22.763, 63.96], [-21.778, 64.402], [-23.955, 64.891], [-22.184, 65.085], [-22.227, 65.379], [-24.326, 65.611], [-23.651, 66.263], [-22.135, 66.41], [-20.576, 65.732], [-19.057, 66.277], [-17.799, 65.994], [-16.168, 66.527], [-14.509, 66.456]]]] }, { "N": "Azerbaijan", "I": "AZ", "C": [[[[46.405, 41.861], [46.686, 41.827], [47.373, 41.22], [47.816, 41.151], [47.987, 41.406], [48.584, 41.809], [49.11, 41.282], [49.619, 40.573], [50.085, 40.526], [50.393, 40.257], [49.569, 40.176], [49.395, 39.399], [49.223, 39.049], [48.857, 38.815], [48.883, 38.32], [48.634, 38.27], [48.011, 38.794], [48.356, 39.289], [48.06, 39.582], [47.685, 39.508], [46.506, 38.771], [46.483, 39.464], [46.035, 39.628], [45.61, 39.9], [45.892, 40.218], [45.359, 40.562], [45.56, 40.812], [45.179, 40.985], [44.972, 41.248], [45.217, 41.411], [45.963, 41.124], [46.502, 41.064], [46.638, 41.182], [46.145, 41.723], [46.405, 41.861]]], [[[46.144, 38.741], [45.458, 38.874], [44.953, 39.336], [44.794, 39.713], [45.002, 39.74], [45.298, 39.472], [45.74, 39.474], [45.735, 39.32], [46.144, 38.741]]]] }, { "N": "Georgia", "I": "GE", "C": [[[[39.955, 43.435], [40.077, 43.553], [40.922, 43.382], [42.394, 43.22], [43.756, 42.741], [43.931, 42.555], [44.538, 42.712], [45.47, 42.503], [45.776, 42.092], [46.405, 41.861], [46.145, 41.723], [46.638, 41.182], [46.502, 41.064], [45.963, 41.124], [45.217, 41.411], [44.972, 41.248], [43.583, 41.092], [42.62, 41.583], [41.554, 41.536], [41.703, 41.963], [41.453, 42.645], [40.875, 43.014], [40.321, 43.129], [39.955, 43.435]]]] }, { "N": "Philippines", "I": "PH", "C": [[[[120.834, 12.704], [120.323, 13.466], [121.18, 13.43], [121.527, 13.07], [121.262, 12.206], [120.834, 12.704]]], [[[122.586, 9.981], [122.837, 10.261], [122.947, 10.882], [123.499, 10.941], [123.338, 10.267], [124.078, 11.233], [123.982, 10.279], [123.623, 9.95], [123.31, 9.318], [122.996, 9.022], [122.38, 9.713], [122.586, 9.981]]], [[[126.377, 8.415], [126.479, 7.75], [126.537, 7.189], [126.197, 6.274], [125.831, 7.294], [125.364, 6.786], [125.683, 6.05], [125.397, 5.581], [124.22, 6.161], [123.939, 6.885], [124.244, 7.361], [123.61, 7.834], [123.296, 7.419], [122.826, 7.457], [122.085, 6.899], [121.92, 7.192], [122.312, 8.035], [122.942, 8.316], [123.488, 8.693], [123.841, 8.24], [124.601, 8.514], [124.765, 8.96], [125.471, 8.987], [125.412, 9.76], [126.223, 9.286], [126.307, 8.782], [126.377, 8.415]]], [[[118.505, 9.316], [117.174, 8.367], [117.664, 9.067], [118.387, 9.684], [118.987, 10.376], [119.511, 11.37], [119.69, 10.554], [119.029, 10.004], [118.505, 9.316]]], [[[122.337, 18.225], [122.174, 17.81], [122.516, 17.094], [122.252, 16.262], [121.663, 15.931], [121.505, 15.125], [121.729, 14.328], [122.259, 14.218], [122.701, 14.337], [123.95, 13.782], [123.855, 13.238], [124.181, 12.998], [124.077, 12.537], [123.298, 13.028], [122.929, 13.553], [122.671, 13.186], [122.035, 13.784], [121.126, 13.637], [120.629, 13.858], [120.679, 14.271], [120.992, 14.525], [120.693, 14.757], [120.564, 14.396], [120.07, 14.971], [119.921, 15.406], [119.884, 16.364], [120.286, 16.035], [120.39, 17.599], [120.716, 18.505], [121.321, 18.504], [121.938, 18.219], [122.246, 18.479], [122.337, 18.225]]], [[[122.038, 11.416], [121.884, 11.892], [122.484, 11.582], [123.12, 11.584], [123.101, 11.166], [122.638, 10.741], [122.003, 10.441], [121.967, 10.906], [122.038, 11.416]]], [[[125.503, 12.163], [125.783, 11.046], [125.012, 11.311], [125.033, 10.976], [125.277, 10.359], [124.802, 10.135], [124.76, 10.838], [124.459, 10.89], [124.303, 11.495], [124.891, 11.416], [124.878, 11.794], [124.267, 12.558], [125.227, 12.536], [125.503, 12.163]]]] }, { "N": "Malaysia", "I": "MY", "C": [[[[100.086, 6.464], [100.26, 6.643], [101.076, 6.205], [101.154, 5.691], [101.814, 5.811], [102.141, 6.222], [102.371, 6.128], [102.962, 5.524], [103.381, 4.855], [103.439, 4.182], [103.332, 3.727], [103.429, 3.383], [103.502, 2.791], [103.855, 2.515], [104.248, 1.631], [104.229, 1.293], [103.52, 1.226], [102.574, 1.967], [101.391, 2.761], [101.274, 3.27], [100.695, 3.939], [100.557, 4.767], [100.197, 5.312], [100.306, 6.041], [100.086, 6.464]]], [[[117.882, 4.138], [117.015, 4.306], [115.866, 4.307], [115.519, 3.169], [115.134, 2.821], [114.621, 1.431], [113.806, 1.218], [112.86, 1.498], [112.38, 1.41], [111.798, 0.904], [111.159, 0.976], [110.514, 0.773], [109.83, 1.338], [109.663, 2.006], [110.396, 1.664], [111.169, 1.851], [111.37, 2.697], [111.797, 2.886], [112.996, 3.102], [113.713, 3.894], [114.204, 4.526], [114.66, 4.008], [114.87, 4.348], [115.347, 4.317], [115.406, 4.955], [115.451, 5.448], [116.221, 6.143], [116.725, 6.925], [117.13, 6.928], [117.643, 6.422], [117.689, 5.987], [118.348, 5.709], [119.182, 5.408], [119.111, 5.016], [118.44, 4.967], [118.618, 4.478], [117.882, 4.138]]]] }, { "N": "Brunei Darussalam", "I": "BN", "C": [[[[115.451, 5.448], [115.406, 4.955], [115.347, 4.317], [114.87, 4.348], [114.66, 4.008], [114.204, 4.526], [114.6, 4.9], [115.451, 5.448]]]] }, { "N": "Slovenia", "I": "SI", "C": [[[[13.806, 46.509], [14.632, 46.432], [15.137, 46.659], [16.012, 46.684], [16.202, 46.852], [16.371, 46.841], [16.565, 46.504], [15.769, 46.238], [15.672, 45.834], [15.324, 45.732], [15.328, 45.452], [14.935, 45.472], [14.595, 45.635], [14.412, 45.466], [13.715, 45.5], [13.938, 45.591], [13.698, 46.017], [13.806, 46.509]]]] }, { "N": "Finland", "I": "FI", "C": [[[[28.592, 69.065], [28.446, 68.365], [29.977, 67.698], [29.055, 66.944], [30.218, 65.806], [29.544, 64.949], [30.445, 64.204], [30.036, 63.553], [31.516, 62.868], [31.14, 62.358], [30.211, 61.78], [28.07, 60.504], [28.07, 60.504], [28.07, 60.504], [26.255, 60.424], [24.497, 60.057], [22.87, 59.846], [22.291, 60.392], [21.322, 60.72], [21.545, 61.705], [21.059, 62.607], [21.536, 63.19], [22.443, 63.818], [24.731, 64.902], [25.398, 65.111], [25.294, 65.534], [23.903, 66.007], [23.566, 66.396], [23.539, 67.936], [21.979, 68.617], [20.646, 69.106], [21.245, 69.37], [22.356, 68.842], [23.662, 68.891], [24.736, 68.65], [25.689, 69.092], [26.18, 69.825], [27.732, 70.164], [29.016, 69.766], [28.592, 69.065]]]] }, { "N": "Slovakia", "I": "SK", "C": [[[[22.558, 49.086], [22.281, 48.825], [22.086, 48.422], [21.872, 48.32], [20.801, 48.624], [20.474, 48.563], [20.239, 48.328], [19.769, 48.203], [19.661, 48.267], [19.174, 48.111], [18.777, 48.082], [18.697, 47.881], [17.857, 47.758], [17.488, 47.867], [16.98, 48.123], [16.88, 48.47], [16.96, 48.597], [17.102, 48.817], [17.545, 48.8], [17.886, 48.903], [17.914, 48.996], [18.105, 49.044], [18.17, 49.272], [18.4, 49.315], [18.555, 49.495], [18.853, 49.496], [18.91, 49.436], [19.321, 49.572], [19.825, 49.217], [20.416, 49.431], [20.888, 49.329], [21.608, 49.47], [22.558, 49.086]]]] }, { "N": "Czech Republic", "I": "CZ", "C": [[[[15.017, 51.107], [15.491, 50.785], [16.239, 50.698], [16.176, 50.423], [16.719, 50.216], [16.869, 50.474], [17.555, 50.362], [17.649, 50.049], [18.393, 49.989], [18.853, 49.496], [18.555, 49.495], [18.4, 49.315], [18.17, 49.272], [18.105, 49.044], [17.914, 48.996], [17.886, 48.903], [17.545, 48.8], [17.102, 48.817], [16.96, 48.597], [16.499, 48.786], [16.03, 48.734], [15.253, 49.039], [14.901, 48.964], [14.339, 48.555], [13.596, 48.877], [13.031, 49.307], [12.521, 49.547], [12.415, 49.969], [12.24, 50.266], [12.967, 50.484], [13.338, 50.733], [14.056, 50.927], [14.307, 51.117], [14.571, 51.002], [15.017, 51.107]]]] }, { "N": "Eritrea", "I": "ER", "C": [[[[36.43, 14.422], [36.323, 14.822], [36.754, 16.292], [36.853, 16.957], [37.167, 17.263], [37.904, 17.428], [38.41, 17.998], [38.991, 16.841], [39.266, 15.923], [39.814, 15.436], [41.179, 14.491], [41.735, 13.921], [42.277, 13.344], [42.59, 13], [43.081, 12.7], [42.78, 12.455], [42.352, 12.542], [42.01, 12.866], [41.599, 13.452], [41.155, 13.773], [40.897, 14.119], [40.026, 14.52], [39.341, 14.532], [39.099, 14.741], [38.513, 14.505], [37.906, 14.959], [37.594, 14.213], [36.43, 14.422]]]] }, { "N": "Japan", "I": "JP", "C": [[[[141.885, 39.181], [140.959, 38.174], [140.976, 37.142], [140.6, 36.344], [140.774, 35.843], [140.253, 35.138], [138.976, 34.668], [137.218, 34.606], [135.793, 33.465], [135.121, 33.849], [135.079, 34.597], [133.34, 34.376], [132.157, 33.905], [130.986, 33.886], [132, 33.15], [131.333, 31.45], [130.686, 31.03], [130.202, 31.418], [130.448, 32.319], [129.815, 32.61], [129.408, 33.296], [130.354, 33.604], [130.878, 34.233], [131.884, 34.75], [132.618, 35.433], [134.608, 35.732], [135.678, 35.527], [136.724, 37.305], [137.391, 36.827], [138.858, 37.827], [139.426, 38.216], [140.055, 39.439], [139.883, 40.563], [140.306, 41.195], [141.369, 41.379], [141.914, 39.992], [141.885, 39.181]]], [[[144.613, 43.961], [145.321, 44.385], [145.543, 43.262], [144.06, 42.988], [143.184, 41.995], [141.611, 42.679], [141.067, 41.585], [139.955, 41.57], [139.818, 42.564], [140.312, 43.333], [141.381, 43.389], [141.672, 44.772], [141.968, 45.551], [143.143, 44.51], [143.91, 44.174], [144.613, 43.961]]], [[[132.371, 33.464], [132.924, 34.06], [133.493, 33.945], [133.904, 34.365], [134.638, 34.149], [134.766, 33.806], [134.203, 33.201], [133.793, 33.522], [133.28, 33.29], [133.015, 32.705], [132.363, 32.989], [132.371, 33.464]]]] }, { "N": "Paraguay", "I": "PY", "C": [[[[-58.166, -20.177], [-57.871, -20.733], [-57.937, -22.09], [-56.882, -22.282], [-56.473, -22.086], [-55.798, -22.357], [-55.611, -22.656], [-55.518, -23.572], [-55.401, -23.957], [-55.028, -24.001], [-54.653, -23.84], [-54.293, -24.021], [-54.293, -24.571], [-54.429, -25.162], [-54.625, -25.739], [-54.789, -26.622], [-55.696, -27.388], [-56.487, -27.548], [-57.61, -27.396], [-58.618, -27.124], [-57.634, -25.604], [-57.777, -25.162], [-58.807, -24.771], [-60.029, -24.033], [-60.847, -23.881], [-62.685, -22.249], [-62.291, -21.052], [-62.266, -20.514], [-61.786, -19.634], [-60.044, -19.343], [-59.115, -19.357], [-58.183, -19.868], [-58.166, -20.177]]]] }, { "N": "Yemen", "I": "YE", "C": [[[[52, 19], [52.782, 17.35], [53.109, 16.651], [52.385, 16.382], [52.192, 15.938], [52.168, 15.597], [51.173, 15.175], [49.575, 14.709], [48.679, 14.003], [48.239, 13.948], [47.939, 14.007], [47.354, 13.592], [46.717, 13.4], [45.878, 13.348], [45.625, 13.291], [45.406, 13.027], [45.144, 12.954], [44.99, 12.7], [44.495, 12.722], [44.175, 12.586], [43.483, 12.637], [43.223, 13.221], [43.251, 13.768], [43.088, 14.063], [42.892, 14.802], [42.605, 15.213], [42.805, 15.262], [42.702, 15.719], [42.824, 15.912], [42.779, 16.348], [43.218, 16.667], [43.116, 17.088], [43.381, 17.58], [43.792, 17.32], [44.063, 17.41], [45.217, 17.433], [45.4, 17.333], [46.367, 17.233], [46.75, 17.283], [47, 16.95], [47.467, 17.117], [48.183, 18.167], [49.117, 18.617], [52, 19]]]] }, { "N": "Saudi Arabia", "I": "SA", "C": [[[[34.956, 29.357], [36.069, 29.197], [36.501, 29.505], [36.741, 29.865], [37.504, 30.004], [37.668, 30.339], [37.999, 30.508], [37.002, 31.508], [39.005, 32.01], [39.195, 32.161], [40.4, 31.89], [41.89, 31.19], [44.709, 29.179], [46.569, 29.099], [47.46, 29.003], [47.709, 28.526], [48.416, 28.552], [48.808, 27.69], [49.3, 27.461], [49.471, 27.11], [50.152, 26.69], [50.213, 26.277], [50.113, 25.944], [50.24, 25.608], [50.527, 25.328], [50.661, 25], [50.81, 24.755], [51.112, 24.556], [51.39, 24.627], [51.58, 24.245], [51.618, 24.014], [52.001, 23.001], [55.007, 22.497], [55.208, 22.708], [55.667, 22], [55, 20], [52, 19], [49.117, 18.617], [48.183, 18.167], [47.467, 17.117], [47, 16.95], [46.75, 17.283], [46.367, 17.233], [45.4, 17.333], [45.217, 17.433], [44.063, 17.41], [43.792, 17.32], [43.381, 17.58], [43.116, 17.088], [43.218, 16.667], [42.779, 16.348], [42.65, 16.775], [42.348, 17.076], [42.271, 17.475], [41.754, 17.833], [41.221, 18.672], [40.939, 19.486], [40.248, 20.175], [39.802, 20.339], [39.139, 21.292], [39.024, 21.987], [39.066, 22.58], [38.493, 23.688], [38.024, 24.079], [37.484, 24.285], [37.155, 24.858], [37.209, 25.085], [36.932, 25.603], [36.64, 25.826], [36.249, 26.57], [35.64, 27.377], [35.13, 28.063], [34.632, 28.059], [34.788, 28.607], [34.832, 28.957], [34.956, 29.357]]]] }, { "N": "Northern Cyprus", "I": "CYP", "C": [[[[32.732, 35.14], [32.802, 35.146], [32.947, 35.387], [33.667, 35.373], [34.576, 35.672], [33.901, 35.246], [33.974, 35.059], [33.866, 35.094], [33.675, 35.018], [33.526, 35.039], [33.476, 35], [33.456, 35.101], [33.384, 35.163], [33.191, 35.173], [32.92, 35.088], [32.732, 35.14]]]] }, { "N": "Cyprus", "I": "CY", "C": [[[[32.732, 35.14], [32.92, 35.088], [33.191, 35.173], [33.384, 35.163], [33.456, 35.101], [33.476, 35], [33.526, 35.039], [33.675, 35.018], [33.866, 35.094], [33.974, 35.059], [34.005, 34.978], [32.98, 34.572], [32.49, 34.702], [32.257, 35.103], [32.732, 35.14]]]] }, { "N": "Morocco", "I": "MA", "C": [[[[-2.17, 35.168], [-1.793, 34.528], [-1.733, 33.92], [-1.388, 32.864], [-1.125, 32.652], [-1.308, 32.263], [-2.617, 32.094], [-3.069, 31.724], [-3.647, 31.637], [-3.69, 30.897], [-4.86, 30.501], [-5.242, 30], [-6.061, 29.732], [-7.059, 29.579], [-8.674, 28.841], [-8.666, 27.656], [-8.818, 27.656], [-8.795, 27.121], [-9.413, 27.088], [-9.735, 26.861], [-10.189, 26.861], [-10.551, 26.991], [-11.393, 26.883], [-11.718, 26.104], [-12.031, 26.031], [-12.501, 24.77], [-13.891, 23.691], [-14.221, 22.31], [-14.631, 21.861], [-14.751, 21.501], [-17.003, 21.421], [-17.02, 21.422], [-16.973, 21.886], [-16.589, 22.158], [-16.262, 22.679], [-16.326, 23.018], [-15.983, 23.723], [-15.426, 24.359], [-15.089, 24.52], [-14.825, 25.104], [-14.801, 25.636], [-14.44, 26.254], [-13.774, 26.619], [-13.14, 27.64], [-13.122, 27.654], [-12.619, 28.038], [-11.689, 28.149], [-10.901, 28.832], [-10.4, 29.099], [-9.565, 29.934], [-9.815, 31.178], [-9.435, 32.038], [-9.301, 32.565], [-8.657, 33.24], [-7.654, 33.697], [-6.913, 34.11], [-6.244, 35.146], [-5.93, 35.76], [-5.194, 35.755], [-4.591, 35.331], [-3.64, 35.4], [-2.604, 35.179], [-2.17, 35.168]]]] }, { "N": "Egypt", "I": "EG", "C": [[[[36.866, 22], [32.9, 22], [29.02, 22], [25, 22], [25, 25.682], [25, 29.239], [24.7, 30.044], [24.958, 30.662], [24.803, 31.089], [25.165, 31.569], [26.495, 31.586], [27.458, 31.321], [28.45, 31.026], [28.914, 30.87], [29.683, 31.187], [30.095, 31.473], [30.977, 31.556], [31.688, 31.43], [31.96, 30.934], [32.192, 31.26], [32.994, 31.024], [33.773, 30.967], [34.265, 31.219], [34.265, 31.219], [34.823, 29.761], [34.923, 29.501], [34.642, 29.099], [34.427, 28.344], [34.155, 27.823], [33.921, 27.649], [33.588, 27.971], [33.137, 28.418], [32.423, 29.851], [32.32, 29.76], [32.735, 28.705], [33.349, 27.7], [34.105, 26.142], [34.474, 25.599], [34.795, 25.034], [35.692, 23.927], [35.494, 23.752], [35.526, 23.102], [36.691, 22.205], [36.866, 22]]]] }, { "N": "Libya", "I": "LY", "C": [[[[25, 22], [25, 20.003], [23.85, 20], [23.838, 19.58], [19.849, 21.495], [15.861, 23.41], [14.851, 22.863], [14.144, 22.491], [13.581, 23.041], [12, 23.472], [11.561, 24.098], [10.771, 24.563], [10.304, 24.379], [9.948, 24.937], [9.911, 25.365], [9.319, 26.094], [9.716, 26.512], [9.629, 27.141], [9.756, 27.688], [9.684, 28.144], [9.86, 28.96], [9.806, 29.425], [9.482, 30.308], [9.97, 30.539], [10.057, 30.962], [9.95, 31.376], [10.637, 31.761], [10.945, 32.082], [11.432, 32.369], [11.489, 33.137], [12.663, 32.793], [13.083, 32.879], [13.919, 32.712], [15.246, 32.265], [15.714, 31.376], [16.612, 31.182], [18.021, 30.764], [19.086, 30.266], [19.574, 30.526], [20.053, 30.986], [19.82, 31.752], [20.134, 32.238], [20.855, 32.707], [21.543, 32.843], [22.896, 32.639], [23.237, 32.191], [23.609, 32.187], [23.927, 32.017], [24.921, 31.899], [25.165, 31.569], [24.803, 31.089], [24.958, 30.662], [24.7, 30.044], [25, 29.239], [25, 25.682], [25, 22]]]] }, { "N": "Ethiopia", "I": "ET", "C": [[[[47.789, 8.003], [44.964, 5.002], [43.661, 4.958], [42.77, 4.253], [42.129, 4.234], [41.855, 3.919], [41.172, 3.919], [40.768, 4.257], [39.855, 3.839], [39.559, 3.422], [38.893, 3.501], [38.671, 3.616], [38.437, 3.589], [38.121, 3.599], [36.855, 4.448], [36.159, 4.448], [35.817, 4.777], [35.817, 5.338], [35.298, 5.506], [34.707, 6.594], [34.25, 6.826], [34.075, 7.226], [33.568, 7.713], [32.954, 7.785], [33.295, 8.355], [33.826, 8.379], [33.975, 8.685], [33.962, 9.584], [34.257, 10.63], [34.731, 10.91], [34.832, 11.319], [35.26, 12.083], [35.864, 12.578], [36.27, 13.563], [36.43, 14.422], [37.594, 14.213], [37.906, 14.959], [38.513, 14.505], [39.099, 14.741], [39.341, 14.532], [40.026, 14.52], [40.897, 14.119], [41.155, 13.773], [41.599, 13.452], [42.01, 12.866], [42.352, 12.542], [42, 12.1], [41.662, 11.631], [41.74, 11.355], [41.756, 11.051], [42.314, 11.034], [42.555, 11.105], [42.777, 10.927], [42.559, 10.573], [42.928, 10.022], [43.297, 9.54], [43.679, 9.184], [46.948, 7.997], [47.789, 8.003]]]] }, { "N": "Djibouti", "I": "DJ", "C": [[[[42.352, 12.542], [42.78, 12.455], [43.081, 12.7], [43.318, 12.39], [43.286, 11.975], [42.716, 11.736], [43.145, 11.462], [42.777, 10.927], [42.555, 11.105], [42.314, 11.034], [41.756, 11.051], [41.74, 11.355], [41.662, 11.631], [42, 12.1], [42.352, 12.542]]]] }, { "N": "Somaliland", "I": "SOM", "C": [[[[48.948, 11.411], [48.948, 11.411], [48.942, 11.394], [48.938, 10.982], [48.938, 9.974], [48.938, 9.452], [48.487, 8.838], [47.789, 8.003], [46.948, 7.997], [43.679, 9.184], [43.297, 9.54], [42.928, 10.022], [42.559, 10.573], [42.777, 10.927], [43.145, 11.462], [43.471, 11.278], [43.667, 10.864], [44.118, 10.446], [44.614, 10.442], [45.557, 10.698], [46.645, 10.817], [47.526, 11.127], [48.022, 11.193], [48.379, 11.375], [48.948, 11.411], [48.948, 11.411]]]] }, { "N": "Uganda", "I": "UG", "C": [[[[33.904, -0.95], [31.866, -1.027], [30.77, -1.015], [30.419, -1.135], [29.822, -1.443], [29.579, -1.341], [29.588, -0.587], [29.82, -0.205], [29.876, 0.597], [30.086, 1.062], [30.469, 1.584], [30.853, 1.849], [31.174, 2.204], [30.773, 2.34], [30.834, 3.509], [30.834, 3.509], [31.246, 3.782], [31.881, 3.558], [32.686, 3.792], [33.39, 3.79], [34.005, 4.25], [34.479, 3.556], [34.596, 3.054], [35.036, 1.906], [34.672, 1.177], [34.18, 0.515], [33.894, 0.11], [33.904, -0.95]]]] }, { "N": "Rwanda", "I": "RW", "C": [[[[30.419, -1.135], [30.816, -1.699], [30.758, -2.287], [30.47, -2.414], [30.47, -2.414], [29.938, -2.348], [29.632, -2.918], [29.025, -2.839], [29.117, -2.292], [29.255, -2.215], [29.292, -1.62], [29.579, -1.341], [29.822, -1.443], [30.419, -1.135]]]] }, { "N": "Bosnia and Herzegovina", "I": "BA", "C": [[[[18.56, 42.65], [17.675, 43.029], [17.297, 43.446], [16.916, 43.668], [16.456, 44.041], [16.24, 44.351], [15.75, 44.819], [15.959, 45.234], [16.318, 45.004], [16.535, 45.212], [17.002, 45.234], [17.862, 45.068], [18.553, 45.082], [19.005, 44.86], [19.005, 44.86], [19.368, 44.863], [19.118, 44.423], [19.6, 44.038], [19.454, 43.568], [19.219, 43.524], [19.032, 43.433], [18.706, 43.2], [18.56, 42.65]]]] }, { "N": "Macedonia", "I": "MK", "C": [[[[22.381, 42.32], [22.881, 41.999], [22.952, 41.338], [22.762, 41.305], [22.597, 41.13], [22.055, 41.15], [21.674, 40.931], [21.02, 40.843], [20.605, 41.086], [20.463, 41.515], [20.59, 41.855], [20.59, 41.855], [20.717, 41.847], [20.762, 42.052], [21.353, 42.207], [21.577, 42.245], [21.917, 42.304], [22.381, 42.32]]]] }, { "N": "Serbia", "I": "RS", "C": [[[[18.83, 45.909], [18.83, 45.909], [19.596, 46.172], [20.22, 46.127], [20.762, 45.735], [20.874, 45.416], [21.484, 45.181], [21.562, 44.769], [22.145, 44.478], [22.459, 44.703], [22.706, 44.578], [22.474, 44.409], [22.657, 44.235], [22.41, 44.008], [22.5, 43.643], [22.986, 43.211], [22.605, 42.899], [22.437, 42.58], [22.545, 42.461], [22.381, 42.32], [21.917, 42.304], [21.577, 42.245], [21.543, 42.32], [21.663, 42.439], [21.775, 42.683], [21.633, 42.677], [21.439, 42.863], [21.274, 42.91], [21.143, 43.069], [20.957, 43.131], [20.814, 43.272], [20.635, 43.217], [20.497, 42.885], [20.258, 42.813], [20.34, 42.899], [19.959, 43.106], [19.63, 43.214], [19.484, 43.352], [19.219, 43.524], [19.454, 43.568], [19.6, 44.038], [19.118, 44.423], [19.368, 44.863], [19.005, 44.86], [19.005, 44.86], [19.39, 45.237], [19.073, 45.522], [18.83, 45.909]]]] }, { "N": "Montenegro", "I": "ME", "C": [[[[20.071, 42.589], [19.802, 42.5], [19.738, 42.688], [19.304, 42.196], [19.372, 41.878], [19.162, 41.955], [18.882, 42.282], [18.45, 42.48], [18.56, 42.65], [18.706, 43.2], [19.032, 43.433], [19.219, 43.524], [19.484, 43.352], [19.63, 43.214], [19.959, 43.106], [20.34, 42.899], [20.258, 42.813], [20.071, 42.589]]]] }, { "N": "Kosovo", "I": "XK", "C": [[[[20.59, 41.855], [20.523, 42.218], [20.284, 42.32], [20.071, 42.589], [20.258, 42.813], [20.497, 42.885], [20.635, 43.217], [20.814, 43.272], [20.957, 43.131], [21.143, 43.069], [21.274, 42.91], [21.439, 42.863], [21.633, 42.677], [21.775, 42.683], [21.663, 42.439], [21.543, 42.32], [21.577, 42.245], [21.353, 42.207], [20.762, 42.052], [20.717, 41.847], [20.59, 41.855]]]] }, { "N": "Trinidad and Tobago", "I": "TT", "C": [[[[-61.68, 10.76], [-61.105, 10.89], [-60.895, 10.855], [-60.935, 10.11], [-61.77, 10], [-61.95, 10.09], [-61.66, 10.365], [-61.68, 10.76]]]] }, { "N": "South Sudan", "I": "SS", "C": [[[[30.834, 3.509], [29.954, 4.174], [29.716, 4.601], [29.159, 4.389], [28.697, 4.455], [28.429, 4.287], [27.98, 4.408], [27.374, 5.234], [27.213, 5.551], [26.466, 5.947], [26.213, 6.547], [25.797, 6.979], [25.124, 7.5], [25.115, 7.825], [24.567, 8.229], [23.887, 8.62], [24.194, 8.729], [24.537, 8.918], [24.795, 9.81], [25.07, 10.274], [25.791, 10.411], [25.962, 10.136], [26.477, 9.553], [26.752, 9.467], [27.113, 9.639], [27.834, 9.604], [27.971, 9.398], [28.967, 9.398], [29.001, 9.604], [29.516, 9.793], [29.619, 10.085], [29.997, 10.291], [30.838, 9.707], [31.353, 9.81], [31.851, 10.531], [32.4, 11.081], [32.314, 11.681], [32.074, 11.973], [32.675, 12.025], [32.743, 12.248], [33.207, 12.179], [33.087, 11.441], [33.207, 10.72], [33.722, 10.325], [33.842, 9.982], [33.825, 9.484], [33.963, 9.464], [33.975, 8.685], [33.826, 8.379], [33.295, 8.355], [32.954, 7.785], [33.568, 7.713], [34.075, 7.226], [34.25, 6.826], [34.707, 6.594], [35.298, 5.506], [34.62, 4.847], [34.005, 4.25], [33.39, 3.79], [32.686, 3.792], [31.881, 3.558], [31.246, 3.782], [30.834, 3.509]]]] } ]} ������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/scripts/countries.py������������������������������������������������������0000775�0000000�0000000�00000010422�15240005042�0021414�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python3 import struct import json import sys from pathlib import Path try: from babel import Locale except ImportError: print("Error: babel library not found.") print("Install it with: pip install babel") sys.exit(1) try: import gi gi.require_version('GLib', '2.0') from gi.repository import GLib except ImportError: print("Error: PyGObject not found.") sys.exit(1) verbose = False def log(msg): if verbose: print(msg) def read_linguas(linguas_path): languages = [] with open(linguas_path, "r", encoding="utf-8") as f: for line in f: line = line.strip() if line and not line.startswith("#"): languages.append(line) return languages def normalize_locale_code(lang_code): locale_map = {"zh_CN": "zh_Hans_CN", "zh_TW": "zh_Hant_TW", "fa_IR": "fa_IR"} return locale_map.get(lang_code, lang_code) def get_country_translation(country_code, lang_code): try: normalized = normalize_locale_code(lang_code) if "_" in normalized: parts = normalized.split("_") if len(parts) == 3: locale = Locale(parts[0], script=parts[1], territory=parts[2]) else: lang, territory = parts[0], parts[1] locale = Locale(lang, territory=territory) else: locale = Locale(normalized) territory_name = locale.territories.get(country_code.upper()) return territory_name if territory_name else None except Exception as e: log(f"Warning: Could not get translation for {country_code} in {lang_code}: {e}") return None def build_variant(json_path, linguas_path): languages = read_linguas(linguas_path) log(f"Found {len(languages)} languages: {', '.join(languages)}") with open(json_path, "r", encoding="utf-8") as f: data = json.load(f) builder = GLib.VariantBuilder(GLib.VariantType.new("a(ssa{ss}aaa(dd))")) for feature in data.get("features", []): country_name = feature.get("N", "") country_code = feature.get("I", "") if not country_code: continue log(f"Processing: {country_name} ({country_code})") translations = {} for lang in languages: translation = get_country_translation(country_code, lang) translations[lang] = translation if translation else country_name coords_raw = feature.get("C", []) poly_builder = GLib.VariantBuilder(GLib.VariantType.new("aaa(dd)")) for polygon in coords_raw: ring_builder = GLib.VariantBuilder(GLib.VariantType.new("aa(dd)")) for ring in polygon: point_builder = GLib.VariantBuilder(GLib.VariantType.new("a(dd)")) for point in ring: point_builder.add_value(GLib.Variant("(dd)", (float(point[0]), float(point[1])))) ring_builder.add_value(point_builder.end()) poly_builder.add_value(ring_builder.end()) trans_variant = GLib.Variant("a{ss}", translations) coords_variant = poly_builder.end() entry = GLib.Variant.new_tuple( GLib.Variant("s", country_name), GLib.Variant("s", country_code), trans_variant, coords_variant, ) builder.add_value(entry) return builder.end() def main(): global verbose linguas_path = "../po/LINGUAS" json_path = "countries.json.in" output_path = "../src/countries.gvariant" if "--verbose" in sys.argv: verbose = True sys.argv.remove("--verbose") if len(sys.argv) > 1: json_path = sys.argv[1] if len(sys.argv) > 2: linguas_path = sys.argv[2] if len(sys.argv) > 3: output_path = sys.argv[3] if not Path(linguas_path).exists(): print(f"Error: LINGUAS file not found at {linguas_path}") sys.exit(1) if not Path(json_path).exists(): print(f"Error: JSON file not found at {json_path}") sys.exit(1) variant = build_variant(json_path, linguas_path) data = variant.get_data_as_bytes() with open(output_path, "wb") as f: f.write(data.get_data()) print(f"GVariant saved to: {output_path} ({GLib.format_size(data.get_size())})") if __name__ == "__main__": main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/scripts/install-deps/�����������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0021424�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/scripts/install-deps/fedora-rawhide.sh������������������������������������0000775�0000000�0000000�00000001005�15240005042�0024640�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env bash DEPS=( meson ninja cmake blueprint-compiler desktop-file-utils python3-babel gtk4-devel libadwaita-devel libdex-devel flatpak-devel libxmlb-devel appstream-devel glycin-devel glycin-gtk4-devel libyaml-devel libsoup3-devel json-glib-devel md4c-devel gtksourceview5-devel webkitgtk6.0-devel libsecret-devel libproxy-devel malcontent-devel systemd-devel # lsp clangd ) dnf install ${DEPS[@]} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/����������������������������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0016125�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/article-list-schema.xml�����������������������������������������������0000664�0000000�0000000�00000000133�15240005042�0022476�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <list> <object class="BzCuratedArticle"/> </list> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bazaar-autostart.desktop����������������������������������������������0000664�0000000�0000000�00000000171�15240005042�0023003�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Type=Application Name=Bazaar Exec=bazaar-daemon --no-window NoDisplay=true X-GNOME-Autostart-enabled=true�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bazaar-daemon.c�������������������������������������������������������0000664�0000000�0000000�00000050245�15240005042�0021000�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bazaar-daemon.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <errno.h> #include <signal.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/wait.h> #include <systemd/sd-bus.h> #include <systemd/sd-event.h> #include <unistd.h> #include "search-index.h" #define BUS_NAME "io.github.kolunmi.Bazaar.SearchProvider" #define OBJECT_PATH "/io/github/kolunmi/Bazaar/SearchProvider" #define DAEMON_IFACE "io.github.kolunmi.Bazaar.Daemon" #define MAX_SEARCH_RESULTS 25 #define ACTIVATE_TIMEOUT_US 2000000 #define UPDATE_CHECK_INTERVAL_USEC (60ULL * 60ULL * 1000000ULL) /* 1 hour */ #define IDLE_EXIT_TIMEOUT_USEC (5ULL * 1000000ULL) #define _cleanup_(x) __attribute__ ((cleanup (x))) #define SD_BUS_CHECK(expr) \ do \ { \ r = (expr); \ if (r < 0) \ goto out; \ } \ while (0) static sd_event *event = NULL; static sd_bus *bus = NULL; static pid_t child_pid = -1; static SearchIndex *g_index = NULL; static char *g_index_path = NULL; static sd_event_source *update_timer_source = NULL; static sd_event_source *idle_timer_source = NULL; static void log_msg (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); static void *malloc_or_bail (size_t n_bytes); static char *build_index_path (void); static void ensure_index_loaded (void); static int strv_count_local (char **strv); static void strv_free_local (char **strv); static void strv_freep (char ***strv); static void generic_freep (void *p); static int auto_update_enabled (void); static void cancel_idle_timer (void); static void arm_idle_timer (void); static int on_idle_timeout (sd_event_source *s, uint64_t usec, void *userdata); static int on_child_exit (sd_event_source *s, const siginfo_t *si, void *userdata); static void launch_app (char **extra_args, int n_extra_args); static void run_update_worker_once (void); static int on_update_worker_exit (sd_event_source *s, const siginfo_t *si, void *userdata); static int on_update_timer (sd_event_source *s, uint64_t usec, void *userdata); static int schedule_next_update_check (void); static int build_and_send_search_reply (sd_bus_message *call, char **terms); static int method_get_result_set (sd_bus_message *m, void *userdata, sd_bus_error *ret_error); static int method_get_result_metas (sd_bus_message *m, void *userdata, sd_bus_error *ret_error); static int method_activate_result (sd_bus_message *m, void *userdata, sd_bus_error *ret_error); static int method_launch_search (sd_bus_message *m, void *userdata, sd_bus_error *ret_error); static int method_relaunch (sd_bus_message *m, void *userdata, sd_bus_error *ret_error); static int method_quit (sd_bus_message *m, void *userdata, sd_bus_error *ret_error); static int on_signal (sd_event_source *s, const struct signalfd_siginfo *si, void *userdata); static int forward_to_running_daemon (sd_bus *forward_bus, int argc, char *argv[]); static const sd_bus_vtable search_provider_vtable[] = { SD_BUS_VTABLE_START (0), SD_BUS_METHOD ("GetInitialResultSet", "as", "as", method_get_result_set, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD ("GetSubsearchResultSet", "asas", "as", method_get_result_set, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD ("GetResultMetas", "as", "aa{sv}", method_get_result_metas, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD ("ActivateResult", "sasu", "", method_activate_result, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD ("LaunchSearch", "asu", "", method_launch_search, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_VTABLE_END }; static const sd_bus_vtable daemon_vtable[] = { SD_BUS_VTABLE_START (0), SD_BUS_METHOD ("Relaunch", "as", "", method_relaunch, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD ("Quit", "", "", method_quit, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_VTABLE_END }; int main (int argc, char *argv[]) { sigset_t mask = { 0 }; int r = 0; int no_window = 0; _cleanup_ (generic_freep) char **fwd_args = NULL; int n_fwd_args = 0; int i = 0; sigemptyset (&mask); sigaddset (&mask, SIGTERM); sigaddset (&mask, SIGINT); sigaddset (&mask, SIGCHLD); sigprocmask (SIG_BLOCK, &mask, NULL); r = sd_event_default (&event); if (r < 0) return 1; sd_event_add_signal (event, NULL, SIGTERM, on_signal, NULL); sd_event_add_signal (event, NULL, SIGINT, on_signal, NULL); r = sd_bus_open_user (&bus); if (r < 0) { log_msg ("Failed to connect to session bus: %s", strerror (-r)); return 1; } r = sd_bus_request_name (bus, BUS_NAME, 0); if (r < 0) { if (r == -EEXIST || r == -EALREADY) { log_msg ("App already running, forwarding"); forward_to_running_daemon (bus, argc, argv); sd_bus_flush_close_unref (bus); sd_event_unref (event); return 0; } log_msg ("Failed to acquire bus name %s: %s", BUS_NAME, strerror (-r)); return 1; } r = sd_bus_add_object_vtable (bus, NULL, OBJECT_PATH, "org.gnome.Shell.SearchProvider2", search_provider_vtable, NULL); if (r < 0) log_msg ("Failed to register search provider object: %s", strerror (-r)); r = sd_bus_add_object_vtable (bus, NULL, OBJECT_PATH, DAEMON_IFACE, daemon_vtable, NULL); if (r < 0) log_msg ("Failed to register daemon object: %s", strerror (-r)); r = sd_bus_attach_event (bus, event, SD_EVENT_PRIORITY_NORMAL); if (r < 0) log_msg ("Failed to attach bus to event loop: %s", strerror (-r)); ensure_index_loaded (); schedule_next_update_check (); fwd_args = malloc_or_bail (sizeof (char *) * (size_t) (argc > 0 ? argc : 1)); for (i = 1; i < argc; i++) { if (strcmp (argv[i], "--no-window") == 0) { no_window = 1; continue; } fwd_args[n_fwd_args] = argv[i]; n_fwd_args++; } if (no_window) log_msg ("staying headless"); else launch_app (fwd_args, n_fwd_args); arm_idle_timer (); sd_event_loop (event); cancel_idle_timer (); if (update_timer_source != NULL) sd_event_source_unref (update_timer_source); search_index_close (g_index); free (g_index_path); sd_bus_flush_close_unref (bus); sd_event_unref (event); return 0; } static int auto_update_enabled (void) { FILE *fp = NULL; char buf[8] = { 0 }; int enabled = 0; fp = popen ("gsettings get io.github.kolunmi.Bazaar auto-update", "r"); if (fp == NULL) return 0; if (fgets (buf, sizeof (buf), fp) != NULL) enabled = (strncmp (buf, "true", 4) == 0); pclose (fp); return enabled; } static void cancel_idle_timer (void) { if (idle_timer_source != NULL) { sd_event_source_unref (idle_timer_source); idle_timer_source = NULL; } } static void arm_idle_timer (void) { uint64_t now = 0; cancel_idle_timer (); if (child_pid > 0) return; if (sd_event_now (event, CLOCK_BOOTTIME, &now) < 0) return; sd_event_add_time (event, &idle_timer_source, CLOCK_BOOTTIME, now + IDLE_EXIT_TIMEOUT_USEC, 0, on_idle_timeout, NULL); } static int on_idle_timeout (sd_event_source *s, uint64_t usec, void *userdata) { idle_timer_source = NULL; if (child_pid > 0) return 0; if (auto_update_enabled ()) { log_msg ("Idle, but auto update is on so staying alive"); return 0; } log_msg ("Idle timeout reached, closing down"); sd_event_exit (event, 0); return 0; } static int forward_to_running_daemon (sd_bus *forward_bus, int argc, char *argv[]) { _cleanup_ (sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_ (sd_bus_message_unrefp) sd_bus_message *m = NULL; _cleanup_ (sd_bus_message_unrefp) sd_bus_message *reply = NULL; int r = 0; r = sd_bus_message_new_method_call (forward_bus, &m, BUS_NAME, OBJECT_PATH, DAEMON_IFACE, "Relaunch"); if (r < 0) return r; r = sd_bus_message_append_strv (m, argv + (argc > 0 ? 1 : 0)); if (r < 0) return r; r = sd_bus_call (forward_bus, m, ACTIVATE_TIMEOUT_US, &error, &reply); if (r < 0) log_msg ("Failed to forward relaunch request: %s", sd_bus_error_is_set (&error) ? error.message : strerror (-r)); return r; } static int method_relaunch (sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { _cleanup_ (strv_freep) char **terms = NULL; int r = 0; r = sd_bus_message_read_strv (m, &terms); if (r < 0) return r; log_msg ("Relaunch requested via D-Bus"); arm_idle_timer (); launch_app (terms, strv_count_local (terms)); return sd_bus_reply_method_return (m, NULL); } static int method_quit (sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { int r = 0; log_msg ("Quit requested"); r = sd_bus_reply_method_return (m, NULL); if (child_pid > 0) kill (child_pid, SIGTERM); sd_event_exit (event, 0); return r; } static void log_msg (const char *fmt, ...) { va_list args; printf ("(bazaar-daemon): "); va_start (args, fmt); vprintf (fmt, args); va_end (args); printf ("\n"); fflush (stdout); } static void * malloc_or_bail (size_t n_bytes) { void *p = NULL; p = malloc (n_bytes); if (p == NULL) { perror ("malloc"); _exit (127); } return p; } static char * build_index_path (void) { const char *cache_home = NULL; const char *home = NULL; char buf[4096] = { 0 }; cache_home = getenv ("XDG_CACHE_HOME"); if (cache_home != NULL && *cache_home != '\0') { snprintf (buf, sizeof (buf), "%s/io.github.kolunmi.Bazaar/core/search-index", cache_home); return strdup (buf); } home = getenv ("HOME"); if (home != NULL && *home != '\0') { snprintf (buf, sizeof (buf), "%s/.cache/io.github.kolunmi.Bazaar/core/search-index", home); return strdup (buf); } return strdup ("/tmp/search-index"); } static void ensure_index_loaded (void) { if (g_index_path == NULL) g_index_path = build_index_path (); if (g_index == NULL) { g_index = search_index_open (g_index_path); if (g_index == NULL) log_msg ("Search index not yet available at %s", g_index_path); return; } if (search_index_reload_if_stale (&g_index)) log_msg ("Search index reloaded "); } static int strv_count_local (char **strv) { int n = 0; if (strv == NULL) return 0; while (strv[n] != NULL) n++; return n; } static void strv_free_local (char **strv) { char **p = NULL; if (strv == NULL) return; for (p = strv; *p != NULL; p++) free (*p); free (strv); } static void strv_freep (char ***strv) { strv_free_local (*strv); } static void generic_freep (void *p) { free (*(void **) p); } static int on_child_exit (sd_event_source *s, const siginfo_t *si, void *userdata) { log_msg ("Application exited (status %d)", si->si_status); child_pid = -1; sd_event_source_unref (s); ensure_index_loaded (); arm_idle_timer (); return 0; } static void launch_app (char **extra_args, int n_extra_args) { pid_t pid = -1; _cleanup_ (generic_freep) char **argv = NULL; int i = 0; sigset_t mask = { 0 }; argv = malloc_or_bail (sizeof (char *) * (size_t) (n_extra_args + 2)); argv[0] = (char *) BAZAAR_BIN_PATH; for (i = 0; i < n_extra_args; i++) argv[i + 1] = extra_args[i]; argv[n_extra_args + 1] = NULL; log_msg ("Application starting"); cancel_idle_timer (); pid = fork (); if (pid == 0) { sigemptyset (&mask); sigprocmask (SIG_SETMASK, &mask, NULL); execvp (argv[0], argv); perror ("execvp"); _exit (127); } if (pid < 0) { log_msg ("Failed to spawn application: %s", strerror (errno)); arm_idle_timer (); return; } if (child_pid <= 0) child_pid = pid; sd_event_add_child (event, NULL, pid, WEXITED, on_child_exit, NULL); } static void run_update_worker_once (void) { pid_t pid = -1; char *argv[3] = { NULL }; sigset_t mask = { 0 }; argv[0] = (char *) BAZAAR_BIN_PATH; argv[1] = (char *) UPDATE_WORKER_CLI_OPTION; argv[2] = NULL; pid = fork (); if (pid == 0) { sigemptyset (&mask); sigprocmask (SIG_SETMASK, &mask, NULL); execvp (argv[0], argv); perror ("execvp"); _exit (127); } if (pid < 0) { log_msg ("Failed to spawn update worker: %s", strerror (errno)); return; } sd_event_add_child (event, NULL, pid, WEXITED, on_update_worker_exit, NULL); } static int on_update_worker_exit (sd_event_source *s, const siginfo_t *si, void *userdata) { sd_event_source_unref (s); return 0; } static int on_update_timer (sd_event_source *s, uint64_t usec, void *userdata) { run_update_worker_once (); schedule_next_update_check (); return 0; } static int schedule_next_update_check (void) { uint64_t now = 0; int r = 0; if (update_timer_source != NULL) { sd_event_source_unref (update_timer_source); update_timer_source = NULL; } r = sd_event_now (event, CLOCK_BOOTTIME, &now); if (r < 0) return r; r = sd_event_add_time (event, &update_timer_source, CLOCK_BOOTTIME, now + UPDATE_CHECK_INTERVAL_USEC, 0, on_update_timer, NULL); if (r < 0) log_msg ("failed to schedule update: %s", strerror (-r)); return r; } static int build_and_send_search_reply (sd_bus_message *call, char **terms) { _cleanup_ (sd_bus_message_unrefp) sd_bus_message *reply = NULL; SearchIndexMatch matches[MAX_SEARCH_RESULTS] = { 0 }; size_t n_matches = 0; size_t i = 0; int r = 0; ensure_index_loaded (); n_matches = search_index_query ( g_index, (const char *const *) terms, strv_count_local (terms), matches, MAX_SEARCH_RESULTS); SD_BUS_CHECK (sd_bus_message_new_method_return (call, &reply)); SD_BUS_CHECK (sd_bus_message_open_container (reply, 'a', "s")); for (i = 0; i < n_matches; i++) SD_BUS_CHECK (sd_bus_message_append (reply, "s", matches[i].entry->id)); SD_BUS_CHECK (sd_bus_message_close_container (reply)); return sd_bus_send (NULL, reply, NULL); out: return r; } static int method_get_result_set (sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { _cleanup_ (strv_freep) char **terms = NULL; const char *sig = NULL; int r = 0; arm_idle_timer (); sig = sd_bus_message_get_signature (m, 1); if (sig != NULL && strcmp (sig, "asas") == 0) { _cleanup_ (strv_freep) char **previous = NULL; r = sd_bus_message_read_strv (m, &previous); if (r < 0) return r; } r = sd_bus_message_read_strv (m, &terms); if (r < 0) return r; return build_and_send_search_reply (m, terms); } static int method_get_result_metas (sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { _cleanup_ (sd_bus_message_unrefp) sd_bus_message *reply = NULL; _cleanup_ (strv_freep) char **ids = NULL; char **p = NULL; int r = 0; arm_idle_timer (); r = sd_bus_message_read_strv (m, &ids); if (r < 0) return r; ensure_index_loaded (); SD_BUS_CHECK (sd_bus_message_new_method_return (m, &reply)); SD_BUS_CHECK (sd_bus_message_open_container (reply, 'a', "a{sv}")); for (p = ids; p != NULL && *p != NULL; p++) { const SearchIndexEntry *e = NULL; e = search_index_find (g_index, *p); if (e == NULL) continue; SD_BUS_CHECK (sd_bus_message_open_container (reply, 'a', "{sv}")); SD_BUS_CHECK (sd_bus_message_append (reply, "{sv}", "id", "s", e->id)); SD_BUS_CHECK (sd_bus_message_append (reply, "{sv}", "name", "s", e->title)); if (e->description != NULL) SD_BUS_CHECK (sd_bus_message_append (reply, "{sv}", "description", "s", e->description)); if (e->icon_path != NULL) SD_BUS_CHECK (sd_bus_message_append (reply, "{sv}", "gicon", "s", e->icon_path)); SD_BUS_CHECK (sd_bus_message_close_container (reply)); } SD_BUS_CHECK (sd_bus_message_close_container (reply)); return sd_bus_send (NULL, reply, NULL); out: return r; } static int method_activate_result (sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { const char *id = NULL; _cleanup_ (generic_freep) char *uri_arg = NULL; char *args[1] = { NULL }; int r = 0; arm_idle_timer (); r = sd_bus_message_read (m, "s", &id); if (r < 0) return r; uri_arg = malloc_or_bail (strlen ("appstream:") + strlen (id) + 1); sprintf (uri_arg, "appstream:%s", id); args[0] = uri_arg; launch_app (args, 1); return sd_bus_reply_method_return (m, NULL); } static int method_launch_search (sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { _cleanup_ (strv_freep) char **terms = NULL; _cleanup_ (generic_freep) char *joined = NULL; _cleanup_ (generic_freep) char *arg = NULL; char *args[1] = { NULL }; uint32_t timestamp = 0; size_t len = 0; int n_terms = 0; int i = 0; int r = 0; arm_idle_timer (); r = sd_bus_message_read_strv (m, &terms); if (r < 0) return r; r = sd_bus_message_read (m, "u", ×tamp); if (r < 0) return r; n_terms = strv_count_local (terms); if (n_terms == 0) { launch_app (NULL, 0); return sd_bus_reply_method_return (m, NULL); } for (i = 0; i < n_terms; i++) len += strlen (terms[i]) + 1; joined = malloc_or_bail (len); joined[0] = '\0'; for (i = 0; i < n_terms; i++) { strcat (joined, terms[i]); if (i + 1 < n_terms) strcat (joined, " "); } arg = malloc_or_bail (strlen ("--search-for=") + strlen (joined) + 1); sprintf (arg, "--search-for=%s", joined); args[0] = arg; launch_app (args, 1); return sd_bus_reply_method_return (m, NULL); } static int on_signal (sd_event_source *s, const struct signalfd_siginfo *si, void *userdata) { log_msg ("Daemon shutting down"); if (child_pid > 0) kill (child_pid, SIGTERM); sd_event_exit (event, 0); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bazaar.gresource.xml��������������������������������������������������0000664�0000000�0000000�00000045424�15240005042�0022115�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/io/github/kolunmi/Bazaar/"> <file>style.css</file> <file>internal-config.yaml</file> <file alias="pride-flags.yaml">progress-bar-designs/pride/pride-flags.yaml</file> <file alias="bazaar.desktop">bazaar-autostart.desktop</file> <file preprocess="xml-stripblanks">internal-config-schema.xml</file> <file preprocess="xml-stripblanks">main-config-schema.xml</file> <file preprocess="xml-stripblanks">blocklist-schema.xml</file> <file preprocess="xml-stripblanks">curated-config-schema.xml</file> <file preprocess="xml-stripblanks">pride-flag-config-schema.xml</file> <file preprocess="xml-stripblanks">article-list-schema.xml</file> <file>release-notes.xml</file> <file>countries.gvariant</file> <file preprocess="xml-stripblanks">bz-addon-tile.ui</file> <file preprocess="xml-stripblanks">bz-addons-dialog.ui</file> <file preprocess="xml-stripblanks">bz-age-rating-dialog.ui</file> <file preprocess="xml-stripblanks">bz-all-apps-page.ui</file> <file preprocess="xml-stripblanks">bz-app-size-dialog.ui</file> <file preprocess="xml-stripblanks">bz-app-tile.ui</file> <file preprocess="xml-stripblanks">bz-apps-page.ui</file> <file preprocess="xml-stripblanks">bz-appstream-description-render.ui</file> <file preprocess="xml-stripblanks">bz-article.ui</file> <file preprocess="xml-stripblanks">bz-article-tile.ui</file> <file preprocess="xml-stripblanks">bz-banner-view.ui</file> <file preprocess="xml-stripblanks">bz-bundle-install-dialog.ui</file> <file preprocess="xml-stripblanks">bz-category-tile.ui</file> <file preprocess="xml-stripblanks">bz-context-tile.ui</file> <file preprocess="xml-stripblanks">bz-curated-view.ui</file> <file preprocess="xml-stripblanks">bz-decorated-screenshot.ui</file> <file preprocess="xml-stripblanks">bz-developer-badge.ui</file> <file preprocess="xml-stripblanks">bz-donations-dialog.ui</file> <file preprocess="xml-stripblanks">bz-entry-inspector.ui</file> <file preprocess="xml-stripblanks">bz-entry-selection-row.ui</file> <file preprocess="xml-stripblanks">bz-error-dialog.ui</file> <file preprocess="xml-stripblanks">bz-favorite-button.ui</file> <file preprocess="xml-stripblanks">bz-favorites-page.ui</file> <file preprocess="xml-stripblanks">bz-favorites-tile.ui</file> <file preprocess="xml-stripblanks">bz-featured-carousel.ui</file> <file preprocess="xml-stripblanks">bz-featured-tile.ui</file> <file preprocess="xml-stripblanks">bz-flathub-category-section.ui</file> <file preprocess="xml-stripblanks">bz-flathub-curated-section.ui</file> <file preprocess="xml-stripblanks">bz-flathub-page.ui</file> <file preprocess="xml-stripblanks">bz-full-view.ui</file> <file preprocess="xml-stripblanks">bz-hardware-support-dialog.ui</file> <file preprocess="xml-stripblanks">bz-inspector.ui</file> <file preprocess="xml-stripblanks">bz-install-controls.ui</file> <file preprocess="xml-stripblanks">bz-installed-tile.ui</file> <file preprocess="xml-stripblanks">bz-library-page.ui</file> <file preprocess="xml-stripblanks">bz-license-dialog.ui</file> <file preprocess="xml-stripblanks">bz-login-page.ui</file> <file preprocess="xml-stripblanks">bz-metainfo-preview-page.ui</file> <file preprocess="xml-stripblanks">bz-preferences-dialog.ui</file> <file preprocess="xml-stripblanks">bz-progress-bar.ui</file> <file preprocess="xml-stripblanks">bz-releases-dialog.ui</file> <file preprocess="xml-stripblanks">bz-releases-list.ui</file> <file preprocess="xml-stripblanks">bz-rich-app-tile.ui</file> <file preprocess="xml-stripblanks">bz-safety-dialog.ui</file> <file preprocess="xml-stripblanks">bz-screenshot-page.ui</file> <file preprocess="xml-stripblanks">bz-screenshots-carousel.ui</file> <file preprocess="xml-stripblanks">bz-search-filter-popover.ui</file> <file preprocess="xml-stripblanks">bz-search-bar.ui</file> <file preprocess="xml-stripblanks">bz-search-page.ui</file> <file preprocess="xml-stripblanks">bz-section-view.ui</file> <file preprocess="xml-stripblanks">bz-stats-dialog.ui</file> <file preprocess="xml-stripblanks">bz-transaction-list-dialog.ui</file> <file preprocess="xml-stripblanks">bz-transaction-tile.ui</file> <file preprocess="xml-stripblanks">bz-updates-card.ui</file> <file preprocess="xml-stripblanks">bz-user-data-page.ui</file> <file preprocess="xml-stripblanks">bz-user-data-tile.ui</file> <file preprocess="xml-stripblanks">bz-window.ui</file> <file preprocess="xml-stripblanks">shortcuts-dialog.ui</file> <file preprocess="xml-stripblanks">icons/scalable/actions/app-installed-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/bookmark-filled-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/bookmark-outline-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/bug-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/check-plain-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/circle-filled-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/code-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/community-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/connected-squares-x-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/copy-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/cross-large-circle-filled-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/delay-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/device-support-adaptive-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/device-support-desktop-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/device-support-touch-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/device-supported-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/explore-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/download-plus-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/drive-harddisk-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/earth-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/edit-clear-all-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/execute-to-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/external-link-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/eye-outline-filled-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/flatpak-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/flathub-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/folder-download-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/gamepad-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/globe-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/go-previous-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/graph2-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/hand-openyay-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/heart-filled-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/heart-outline-thick-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/horizontal-arrows-disabled-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/left-large-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/library-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/license-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/meeting-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/media-playback-pause-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/media-playback-start-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/media-playback-stop-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/newspaper-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/open-book-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/parent-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/paintbrush-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/people-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/person-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/pip-out-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/power-profile-performance-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/proprietary-code-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/puzzle-piece-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/regex-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/right-large-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/sad-computer-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/school-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/server-pick-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/share-alt-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/share-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/shoe-box-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/sidebar-show-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/sliders-horizontal-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/smartphone2-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/software-update-available-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/star-outline-rounded-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/square-filled-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/thumbs-up-outline-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/timer-sand-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/translations-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/user-trash-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/verified-checkmark-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/view-more-horizontal-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/view-more-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/video-reel2-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/zoom-minus-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/zoom-plus-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/permissions-legacy-windowing-system-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/permissions-microphone-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/permissions-sandboxed-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/permissions-screen-contents-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/permissions-system-devices-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/permissions-warning-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/app-safety-ok-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/app-safety-unknown-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/app-safety-unsafe-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/auditable-code-symbolic.svg</file> <file alias="icons/scalable/actions/advertising-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/advertising-symbolic.svg</file> <file alias="icons/scalable/actions/advertising-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/advertising-none-symbolic.svg</file> <file alias="icons/scalable/actions/alcohol-use-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/alcohol-use-symbolic.svg</file> <file alias="icons/scalable/actions/alcohol-use-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/alcohol-use-none-symbolic.svg</file> <file alias="icons/scalable/actions/audio-chat-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/audio-chat-symbolic.svg</file> <file alias="icons/scalable/actions/audio-chat-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/audio-chat-none-symbolic.svg</file> <file alias="icons/scalable/actions/contacts-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/contacts-symbolic.svg</file> <file alias="icons/scalable/actions/drug-use-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/drug-use-symbolic.svg</file> <file alias="icons/scalable/actions/drug-use-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/drug-use-none-symbolic.svg</file> <file alias="icons/scalable/actions/gambling-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/gambling-symbolic.svg</file> <file alias="icons/scalable/actions/gambling-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/gambling-none-symbolic.svg</file> <file alias="icons/scalable/actions/human-remains-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/human-remains-symbolic.svg</file> <file alias="icons/scalable/actions/messaging-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/messaging-symbolic.svg</file> <file alias="icons/scalable/actions/messaging-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/messaging-none-symbolic.svg</file> <file alias="icons/scalable/actions/money-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/money-symbolic.svg</file> <file alias="icons/scalable/actions/money-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/money-none-symbolic.svg</file> <file alias="icons/scalable/actions/nudity-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/nudity-symbolic.svg</file> <file alias="icons/scalable/actions/nudity-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/nudity-none-symbolic.svg</file> <file alias="icons/scalable/actions/smoking-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/smoking-symbolic.svg</file> <file alias="icons/scalable/actions/smoking-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/smoking-none-symbolic.svg</file> <file alias="icons/scalable/actions/social-info-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/social-info-symbolic.svg</file> <file alias="icons/scalable/actions/strong-language-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/strong-language-symbolic.svg</file> <file alias="icons/scalable/actions/strong-language-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/strong-language-none-symbolic.svg</file> <file alias="icons/scalable/actions/violence-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/violence-symbolic.svg</file> <file alias="icons/scalable/actions/violence-none-symbolic.svg" preprocess="xml-stripblanks">icons/scalable/actions/ratings/violence-none-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/on-the-go-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/scalable/actions/we-love-games-symbolic.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Create.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Develop.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Learn.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Play.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Network.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Work.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Audiovideo.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Science.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.System.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Utilities.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Mobile.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Trending.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Popular.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.New.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Updated.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Adwaita.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolumni.Bazaar.Kde.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolunmi.Bazaar.github.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolunmi.Bazaar.gitlab.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolunmi.Bazaar.gnome.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolunmi.Bazaar.kde.svg</file> <file preprocess="xml-stripblanks">icons/io.github.kolunmi.Bazaar.google.svg</file> <file>bz-install-controls.wdgt</file> <file>bz-transact-icon.wdgt</file> </gresource> </gresources> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/blocklist-schema.xml��������������������������������������������������0000664�0000000�0000000�00000000714�15240005042�0022075�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <object class="BzRootBlocklist"> <typehint name="blocklists" type="BzBlocklist"/> <typehint name="blocklists.conditions" type="BzBlocklistCondition"/> <typehint name="blocklists.allow" type="GtkStringObject"/> <typehint name="blocklists.allow-regex" type="GtkStringObject"/> <typehint name="blocklists.block" type="GtkStringObject"/> <typehint name="blocklists.block-regex" type="GtkStringObject"/> </object> ����������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-addon-tile.blp�����������������������������������������������������0000664�0000000�0000000�00000006216�15240005042�0021262�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzAddonTile: $BzListTile { accessibility { labelled-by: title_label; described-by: description_label; } child: Box { orientation: horizontal; spacing: 4; height-request: 64; $BzTransactIcon { margin-start: 10; margin-top: 10; margin-bottom: 10; width-request: 48; height-request: 48; valign: center; halign: center; info: $BzTransactIconInfo { group: bind template.group as <$BzEntryGroup>; paintable: bind template.parent-ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable; }; } Box { orientation: vertical; valign: center; spacing: 4; margin-start: 10; Label title_label { xalign: 0.0; ellipsize: end; single-line-mode: true; has-tooltip: true; tooltip-text: bind template.group as <$BzEntryGroup>.id; label: bind template.group as <$BzEntryGroup>.title; } Label description_label { halign: start; label: bind template.group as <$BzEntryGroup>.description; visible: bind $logical_and($invert_boolean(eol_label.visible) as <bool>, $invert_boolean($is_empty(template.group as <$BzEntryGroup>.description) as <bool>) as <bool>) as <bool>; xalign: 0.0; ellipsize: end; single-line-mode: true; styles ["dim-label", "caption"] } Label eol_label{ visible: bind $invert_boolean($is_null(template.group as <$BzEntryGroup>.eol) as <bool>) as <bool>; wrap: true; wrap-mode: word_char; ellipsize: end; vexpand: true; lines: 2; single-line-mode: true; halign: start; hexpand: true; label: _("Stopped Receiving Updates"); styles [ "warning", ] } } Box { orientation: horizontal; spacing: 8; margin-end: 8; margin-start: 4; hexpand: true; halign: end; Button install_remove_button { styles ["flat"] width-request: 32; height-request: 32; valign: center; has-tooltip: true; visible: bind $invert_boolean($logical_and($is_zero(template.group as <$BzEntryGroup>.removable) as <bool>, $is_zero(template.group as <$BzEntryGroup>.installable) as <bool>) as <bool>) as <bool>; tooltip-text: bind $get_install_remove_tooltip(template.group as <$BzEntryGroup>.removable) as <string>; sensitive: bind $switch_bool( template.group as <$BzEntryGroup>.removable, $invert_boolean($is_zero(template.group as <$BzEntryGroup>.removable-and-available) as <bool>) as <bool>, $invert_boolean($is_zero(template.group as <$BzEntryGroup>.installable-and-available) as <bool>) as <bool>, ) as <bool>; icon-name: bind $get_install_remove_icon(template.group as <$BzEntryGroup>.removable) as <string>; clicked => $install_remove_cb() swapped; } Image { pixel-size: 14; icon-name: "go-next-symbolic"; margin-end: 4; styles ["dimmed"] } } }; }����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-addon-tile.c�������������������������������������������������������0000664�0000000�0000000�00000017522�15240005042�0020731�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-addon-tile.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-addon-tile.h" #include "bz-addons-dialog.h" #include "bz-entry-group.h" #include "bz-full-view.h" #include "bz-state-info.h" #include "bz-window.h" struct _BzAddonTile { BzListTile parent_instance; BzEntryGroup *group; BzResult *parent_ui_entry; GtkButton *install_remove_button; }; G_DEFINE_FINAL_TYPE (BzAddonTile, bz_addon_tile, BZ_TYPE_LIST_TILE) enum { PROP_0, PROP_GROUP, PROP_PARENT_UI_ENTRY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void install_remove_cb (BzAddonTile *self, GtkButton *button) { int removable = 0; if (self->group == NULL) return; removable = bz_entry_group_get_removable (self->group); if (removable > 0) gtk_widget_activate_action (GTK_WIDGET (self), "window.remove-group", "(sb)", bz_entry_group_get_id (self->group), FALSE); else gtk_widget_activate_action (GTK_WIDGET (self), "window.install-group", "(sb)", bz_entry_group_get_id (self->group), TRUE); } static void bz_addon_tile_dispose (GObject *object) { BzAddonTile *self = BZ_ADDON_TILE (object); g_clear_object (&self->group); g_clear_object (&self->parent_ui_entry); G_OBJECT_CLASS (bz_addon_tile_parent_class)->dispose (object); } static void bz_addon_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAddonTile *self = BZ_ADDON_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_addon_tile_get_group (self)); break; case PROP_PARENT_UI_ENTRY: g_value_set_object (value, self->parent_ui_entry); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_addon_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAddonTile *self = BZ_ADDON_TILE (object); switch (prop_id) { case PROP_GROUP: bz_addon_tile_set_group (self, g_value_get_object (value)); break; case PROP_PARENT_UI_ENTRY: g_clear_object (&self->parent_ui_entry); self->parent_ui_entry = g_value_dup_object (value); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PARENT_UI_ENTRY]); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean is_zero (gpointer object, int value) { return value == 0; } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_empty (gpointer object, const char *str) { return str == NULL || str[0] == '\0'; } static gboolean logical_and (gpointer object, gboolean value1, gboolean value2) { return value1 && value2; } static char * get_install_remove_tooltip (gpointer object, int removable) { if (removable > 0) return g_strdup (C_("Install Controls", "Uninstall")); else return g_strdup (C_("Install Controls", "Install")); } static char * get_install_remove_icon (gpointer object, int removable) { if (removable > 0) return g_strdup ("user-trash-symbolic"); else return g_strdup ("document-save-symbolic"); } static gboolean switch_bool (gpointer object, gboolean condition, gboolean true_value, gboolean false_value) { return condition ? true_value : false_value; } static void bz_addon_tile_realize (GtkWidget *widget) { BzAddonTile *self = BZ_ADDON_TILE (widget); GtkWidget *parent = widget; GtkWidget *source = NULL; const char *prop = NULL; GTK_WIDGET_CLASS (bz_addon_tile_parent_class)->realize (widget); while ((parent = gtk_widget_get_parent (parent)) != NULL) { if (BZ_IS_ADDONS_DIALOG (parent)) { source = parent; prop = "parent-ui-entry"; break; } else if (BZ_IS_FULL_VIEW (parent)) { source = parent; prop = "ui-entry"; break; } } if (source == NULL) return; g_object_bind_property ( source, prop, self, "parent-ui-entry", G_BINDING_SYNC_CREATE); } static void bz_addon_tile_class_init (BzAddonTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_addon_tile_dispose; object_class->get_property = bz_addon_tile_get_property; object_class->set_property = bz_addon_tile_set_property; widget_class->realize = bz_addon_tile_realize; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_PARENT_UI_ENTRY] = g_param_spec_object ( "parent-ui-entry", NULL, NULL, BZ_TYPE_RESULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LIST_TILE); g_type_ensure (BZ_TYPE_ENTRY_GROUP); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-addon-tile.ui"); gtk_widget_class_bind_template_child (widget_class, BzAddonTile, install_remove_button); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, logical_and); gtk_widget_class_bind_template_callback (widget_class, is_empty); gtk_widget_class_bind_template_callback (widget_class, get_install_remove_tooltip); gtk_widget_class_bind_template_callback (widget_class, get_install_remove_icon); gtk_widget_class_bind_template_callback (widget_class, switch_bool); gtk_widget_class_bind_template_callback (widget_class, install_remove_cb); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static void bz_addon_tile_init (BzAddonTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_addon_tile_new (void) { return g_object_new (BZ_TYPE_ADDON_TILE, NULL); } void bz_addon_tile_set_group (BzAddonTile *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_ADDON_TILE (self)); g_return_if_fail (group == NULL || BZ_IS_ENTRY_GROUP (group)); g_clear_object (&self->group); if (group != NULL) self->group = g_object_ref (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } BzEntryGroup * bz_addon_tile_get_group (BzAddonTile *self) { g_return_val_if_fail (BZ_IS_ADDON_TILE (self), NULL); return self->group; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-addon-tile.h�������������������������������������������������������0000664�0000000�0000000�00000002271�15240005042�0020731�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-addon-tile.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include "bz-list-tile.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_ADDON_TILE (bz_addon_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzAddonTile, bz_addon_tile, BZ, ADDON_TILE, BzListTile) GtkWidget * bz_addon_tile_new (void); void bz_addon_tile_set_group (BzAddonTile *self, BzEntryGroup *group); BzEntryGroup * bz_addon_tile_get_group (BzAddonTile *self); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-addons-dialog.blp��������������������������������������������������0000664�0000000�0000000�00000030373�15240005042�0021750�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzAddonsDialog: Adw.Dialog { content-width: 500; content-height: 550; title: _("Add-on"); child: Adw.ToastOverlay { child:Adw.NavigationView navigation_view { notify::visible-page-tag => $on_visible_page_tag_changed(); Adw.NavigationPage { tag: "list"; title: _("Manage Add-Ons"); child: Adw.ToolbarView { [top] Adw.HeaderBar { title-widget: Label { styles ["heading"] label: _("Manage Add-Ons"); }; } content: ScrolledWindow { propagate-natural-height: true; vexpand: true; hscrollbar-policy: never; child: Adw.Clamp list_clamp { maximum-size: 450; tightening-threshold: 500; margin-start: 6; margin-end: 6; margin-bottom: 12; child: ListView { styles [ "navigation-sidebar", "installed-list-view", ] model: NoSelection { model: SortListModel { sorter: CustomSorter sorter {}; model: bind template.addon-groups; }; }; factory: BuilderListItemFactory { template ListItem { activatable: false; selectable: false; focusable: false; child: $BzAddonTile { group: bind template.item as <$BzEntryGroup>; activated => $tile_activated_cb(); }; } }; }; }; }; }; } Adw.NavigationPage { tag: "empty"; title: _("Manage Add-Ons"); child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: Adw.StatusPage { icon-name: "application-x-addon-symbolic"; title: _("No Add-Ons Visible"); description: _("Your current filter preferences are hiding all known add-ons. Try adjusting them."); }; }; } Adw.NavigationPage { tag: "full-view"; title: bind try { template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.title, _("Add-on Page") }; child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: ScrolledWindow { vexpand: true; hscrollbar-policy: never; child: Adw.Clamp { maximum-size: 450; tightening-threshold: 500; margin-start: 12; margin-end: 12; child: Box full_view_clamp { orientation: vertical; spacing: 4; margin-top: 12; Box { halign: center; spacing: 8; orientation: vertical; margin-bottom: 12; Image { pixel-size: 96; paintable: bind template.parent-ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable; visible: bind $invert_boolean($is_null(template.parent-ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable) as <bool>) as <bool>; styles ["icon-dropshadow"] } Box { orientation: vertical; valign: center; halign: center; spacing: 2; margin-bottom: 8; Label { label: bind template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.title; justify: center; max-width-chars: 25; wrap: true; wrap-mode: word_char; selectable: true; styles ["title-3"] } Label { label: bind $format_parent_title(template.parent-ui-entry as <$BzResult>.object as <$BzEntry>.title) as <string>; justify: center; selectable: true; styles ["dim-label"] } } } Box { homogeneous: true; margin-bottom: 12; orientation: horizontal; halign: fill; styles ["app-context-bar"] $BzContextTile { label: bind $get_size_label($is_zero(template.selected-group as <$BzEntryGroup>.removable) as <bool>) as <string>; clicked => $size_cb(template); has-tooltip: true; tooltip-text: bind $format_size_tooltip(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.size) as <string>; lozenge-style: "grey"; sensitive: bind $invert_boolean($is_zero($get_size_type(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>, $is_zero(template.selected-group as <$BzEntryGroup>.removable) as <bool>) as <uint64>) as <bool>) as <bool>; lozenge-child: Label { justify: center; label: bind $format_size($get_size_type(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>, $is_zero(template.selected-group as <$BzEntryGroup>.removable) as <bool>) as <uint64>) as <string>; lines: 3; ellipsize: end; halign: center; wrap: true; xalign: 0.5; use-markup: true; }; } $BzContextTile { label: bind $get_license_label(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>) as <string>; clicked => $license_cb(template); lozenge-style: bind $bool_to_string(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.is-floss, "grey", "warning") as <string>; has-tooltip: true; tooltip-text: bind $format_license_tooltip(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>) as <string>; lozenge-child: Box { spacing: 6; Image { icon-name: bind $get_license_icon(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.is-floss, 0) as <string>; } Image { icon-name: bind $get_license_icon(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.is-floss, 1) as <string>; } }; } $BzContextTile { can-target: bind $invert_boolean($is_null(template.selected-ui-entry) as <bool>) as <bool>; sensitive: bind $invert_boolean($is_null(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <bool>) as <bool>; label: _("Downloads/Month"); clicked => $dl_stats_cb(template); has-tooltip: bind $invert_boolean($is_null(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <bool>) as <bool>; tooltip-text: bind $format_recent_downloads_tooltip(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <string>; lozenge-style: "grey"; lozenge-child: Label { justify: center; label: bind $format_recent_downloads(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <string>; halign: center; use-markup: true; }; } } Box { visible: bind $invert_boolean($is_null(template.selected-group as <$BzEntryGroup>.eol) as <bool>) as <bool>; orientation: vertical; spacing: 8; styles [ "card", "colored", "warning", ] Label { label: _("Stopped Receiving Core Updates"); margin-top: 8; margin-start: 8; margin-end: 8; wrap: true; wrap-mode: word_char; justify: center; styles [ "title-4", ] } Label { label: _("This add-on uses a runtime that no longer receives updates or security fixes. It may become unsafe to use."); margin-bottom: 8; margin-start: 8; margin-end: 8; wrap: true; wrap-mode: word_char; justify: center; } } Label { visible: bind $logical_and($invert_boolean($is_null(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.description) as <bool>) as <bool>, $is_null(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.long-description) as <bool>) as <bool>; label: bind template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.description; selectable: true; wrap: true; wrap-mode: word_char; justify: center; halign: center; margin-bottom: 6; styles ["dimmed"] } $BzInstallControls { halign: center; margin-top: 6; margin-bottom: 8; wide: false; entry-group: bind template.selected-group; state: bind template.state; settings: bind template.state as <$BzStateInfo>.settings; } Label { visible: bind $logical_and($invert_boolean($is_null(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.description) as <bool>) as <bool>, $invert_boolean($is_null(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.long-description) as <bool>) as <bool>) as <bool>; label: bind template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.description; selectable: true; wrap: true; wrap-mode: word_char; xalign: 0; halign: fill; margin-top: 12; margin-bottom: 4; styles ["title-4"] } $BzFadingClamp fading_clamp { visible: bind $invert_boolean($is_null(template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.long-description) as <bool>) as <bool>; max-height: bind $get_description_max_height(description_toggle.active) as <int>; min-max-height: 170; child: $BzAppstreamDescriptionRender { appstream-description: bind template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.long-description; }; } ToggleButton description_toggle { styles ["circular"] visible: bind fading_clamp.will-change; halign: center; child: Label { label: bind $get_description_toggle_text(description_toggle.active) as <string>; margin-start: 16; margin-end: 16; }; margin-bottom: 12; } $BzShareList { urls: bind template.selected-ui-entry as <$BzResult>.object as <$BzEntry>.share-urls; margin-bottom: 24; } }; }; }; }; } }; }; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-addons-dialog.c����������������������������������������������������0000664�0000000�0000000�00000054135�15240005042�0021417�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-addons-dialog.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-addon-tile.h" #include "bz-addons-dialog.h" #include "bz-app-size-dialog.h" #include "bz-application-map-factory.h" #include "bz-application.h" #include "bz-appstream-description-render.h" #include "context-tile-callbacks.h" #include "bz-context-tile.h" #include "bz-entry-group.h" #include "bz-fading-clamp.h" #include "bz-flatpak-entry.h" #include "bz-install-controls.h" #include "bz-license-dialog.h" #include "bz-result.h" #include "bz-share-list.h" #include "bz-state-info.h" #include "bz-stats-dialog.h" #include "template-callbacks.h" #include "util.h" struct _BzAddonsDialog { AdwDialog parent_instance; GListModel *addon_groups; BzEntryGroup *selected_group; BzResult *selected_ui_entry; DexFuture *selected_ui_future; BzResult *parent_ui_entry; DexFuture *parent_ui_future; BzStateInfo *state; AdwAnimation *width_animation; AdwAnimation *height_animation; gboolean has_mapped; /* Template widgets */ AdwNavigationView *navigation_view; GtkToggleButton *description_toggle; AdwClamp *full_view_clamp; AdwClamp *list_clamp; GtkCustomSorter *sorter; }; G_DEFINE_FINAL_TYPE (BzAddonsDialog, bz_addons_dialog, ADW_TYPE_DIALOG) enum { PROP_0, PROP_ADDON_GROUPS, PROP_SELECTED_GROUP, PROP_SELECTED_UI_ENTRY, PROP_PARENT_UI_ENTRY, PROP_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static char *format_parent_title (gpointer object, const char *title); static int get_description_max_height (gpointer object, gboolean active); static char *get_description_toggle_text (gpointer object, gboolean active); static void size_cb (BzAddonsDialog *self, GtkButton *button); static void license_cb (BzAddonsDialog *self, GtkButton *button); static void dl_stats_cb (BzAddonsDialog *self, GtkButton *button); static void animate_to_size (BzAddonsDialog *self); static void on_visible_page_tag_changed (AdwNavigationView *nav_view, GParamSpec *pspec, BzAddonsDialog *self); static DexFuture *on_parent_ui_entry_resolved (DexFuture *future, GWeakRef *wr); static DexFuture *on_selected_ui_entry_resolved (DexFuture *future, GWeakRef *wr); static void set_selected_group (BzAddonsDialog *self, BzEntryGroup *group); static void tile_activated_cb (BzAddonTile *tile); static int sort_func (BzEntryGroup *a, BzEntryGroup *b, BzAddonsDialog *self); static void bz_addons_dialog_dispose (GObject *object) { BzAddonsDialog *self = BZ_ADDONS_DIALOG (object); dex_clear (&self->selected_ui_future); dex_clear (&self->parent_ui_future); g_clear_object (&self->addon_groups); g_clear_object (&self->selected_group); g_clear_object (&self->selected_ui_entry); g_clear_object (&self->parent_ui_entry); g_clear_object (&self->state); g_clear_object (&self->width_animation); g_clear_object (&self->height_animation); G_OBJECT_CLASS (bz_addons_dialog_parent_class)->dispose (object); } static void bz_addons_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAddonsDialog *self = BZ_ADDONS_DIALOG (object); switch (prop_id) { case PROP_ADDON_GROUPS: g_value_set_object (value, self->addon_groups); break; case PROP_SELECTED_GROUP: g_value_set_object (value, self->selected_group); break; case PROP_SELECTED_UI_ENTRY: g_value_set_object (value, self->selected_ui_entry); break; case PROP_PARENT_UI_ENTRY: g_value_set_object (value, self->parent_ui_entry); break; case PROP_STATE: g_value_set_object (value, bz_state_info_get_default ()); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_addons_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAddonsDialog *self = BZ_ADDONS_DIALOG (object); switch (prop_id) { case PROP_ADDON_GROUPS: g_clear_object (&self->addon_groups); self->addon_groups = g_value_dup_object (value); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ADDON_GROUPS]); break; case PROP_SELECTED_GROUP: g_clear_object (&self->selected_group); self->selected_group = g_value_dup_object (value); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SELECTED_GROUP]); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_addons_dialog_class_init (BzAddonsDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_addons_dialog_dispose; object_class->get_property = bz_addons_dialog_get_property; object_class->set_property = bz_addons_dialog_set_property; props[PROP_ADDON_GROUPS] = g_param_spec_object ( "addon-groups", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_SELECTED_GROUP] = g_param_spec_object ( "selected-group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_SELECTED_UI_ENTRY] = g_param_spec_object ( "selected-ui-entry", NULL, NULL, BZ_TYPE_RESULT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_PARENT_UI_ENTRY] = g_param_spec_object ( "parent-ui-entry", NULL, NULL, BZ_TYPE_RESULT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_ADDON_TILE); g_type_ensure (BZ_TYPE_APPSTREAM_DESCRIPTION_RENDER); g_type_ensure (BZ_TYPE_CONTEXT_TILE); g_type_ensure (BZ_TYPE_ENTRY); g_type_ensure (BZ_TYPE_ENTRY_GROUP); g_type_ensure (BZ_TYPE_FADING_CLAMP); g_type_ensure (BZ_TYPE_FLATPAK_ENTRY); g_type_ensure (BZ_TYPE_INSTALL_CONTROLS); g_type_ensure (BZ_TYPE_RESULT); g_type_ensure (BZ_TYPE_SHARE_LIST); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-addons-dialog.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); bz_widget_class_bind_all_context_tile_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzAddonsDialog, navigation_view); gtk_widget_class_bind_template_child (widget_class, BzAddonsDialog, description_toggle); gtk_widget_class_bind_template_child (widget_class, BzAddonsDialog, full_view_clamp); gtk_widget_class_bind_template_child (widget_class, BzAddonsDialog, list_clamp); gtk_widget_class_bind_template_child (widget_class, BzAddonsDialog, sorter); gtk_widget_class_bind_template_callback (widget_class, tile_activated_cb); gtk_widget_class_bind_template_callback (widget_class, on_visible_page_tag_changed); gtk_widget_class_bind_template_callback (widget_class, format_parent_title); gtk_widget_class_bind_template_callback (widget_class, get_description_max_height); gtk_widget_class_bind_template_callback (widget_class, get_description_toggle_text); gtk_widget_class_bind_template_callback (widget_class, license_cb); gtk_widget_class_bind_template_callback (widget_class, size_cb); gtk_widget_class_bind_template_callback (widget_class, dl_stats_cb); } static void bz_addons_dialog_init (BzAddonsDialog *self) { AdwAnimationTarget *width_target = NULL; AdwAnimationTarget *height_target = NULL; gtk_widget_init_template (GTK_WIDGET (self)); width_target = adw_property_animation_target_new (G_OBJECT (self), "content-width"); self->width_animation = adw_timed_animation_new (GTK_WIDGET (self), 0, 0, 300, width_target); height_target = adw_property_animation_target_new (G_OBJECT (self), "content-height"); self->height_animation = adw_timed_animation_new (GTK_WIDGET (self), 0, 0, 300, height_target); g_signal_connect_swapped (self, "map", G_CALLBACK (animate_to_size), self); gtk_custom_sorter_set_sort_func (self->sorter, (GCompareDataFunc) sort_func, self, NULL); } AdwDialog * bz_addons_dialog_new (BzEntryGroup *group) { GListModel *ids = NULL; GListModel *groups = NULL; BzApplicationMapFactory *factory = NULL; BzAddonsDialog *self = NULL; ids = bz_entry_group_get_addon_group_ids (group); if (ids != NULL) { factory = bz_state_info_get_application_factory (bz_state_info_get_default ()); if (factory != NULL) groups = bz_application_map_factory_generate (factory, ids); } self = g_object_new ( BZ_TYPE_ADDONS_DIALOG, "addon-groups", groups, NULL); self->parent_ui_entry = bz_entry_group_dup_ui_entry (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PARENT_UI_ENTRY]); if (groups == NULL || g_list_model_get_n_items (groups) == 0) adw_navigation_view_replace (self->navigation_view, (AdwNavigationPage *[]) { adw_navigation_view_find_page (self->navigation_view, "empty") }, 1); else if (g_list_model_get_n_items (groups) == 1) { g_autoptr (BzEntryGroup) single = g_list_model_get_item (groups, 0); AdwNavigationPage *full_view_page = NULL; set_selected_group (self, single); full_view_page = adw_navigation_view_find_page (self->navigation_view, "full-view"); adw_navigation_view_replace (self->navigation_view, &full_view_page, 1); } return ADW_DIALOG (self); } AdwDialog * bz_addons_dialog_new_single (BzEntryGroup *group) { BzAddonsDialog *self = NULL; AdwNavigationPage *full_view = NULL; self = g_object_new (BZ_TYPE_ADDONS_DIALOG, NULL); set_selected_group (self, group); full_view = adw_navigation_view_find_page (self->navigation_view, "full-view"); adw_navigation_view_replace (self->navigation_view, &full_view, 1); return ADW_DIALOG (self); } BzEntry * bz_addons_dialog_get_parent_entry (BzAddonsDialog *self) { g_return_val_if_fail (BZ_IS_ADDONS_DIALOG (self), NULL); if (self->parent_ui_entry == NULL || !bz_result_get_resolved (self->parent_ui_entry)) return NULL; return bz_result_get_object (self->parent_ui_entry); } static char * format_parent_title (gpointer object, const char *title) { if (title == NULL || *title == '\0') return g_strdup (""); return g_strdup_printf (_ ("Add-on for %s"), title); } static int get_description_max_height (gpointer object, gboolean active) { return active ? 10000 : 170; } static char * get_description_toggle_text (gpointer object, gboolean active) { return g_strdup (active ? _ ("Show Less") : _ ("Show More")); } static void size_cb (BzAddonsDialog *self, GtkButton *button) { AdwNavigationPage *page = NULL; if (self->selected_group == NULL) return; page = bz_app_size_page_new (self->selected_group); adw_navigation_view_push (self->navigation_view, page); } static void license_cb (BzAddonsDialog *self, GtkButton *button) { AdwNavigationPage *page = NULL; BzEntry *ui_entry = NULL; if (self->selected_ui_entry == NULL) return; ui_entry = bz_result_get_object (self->selected_ui_entry); if (ui_entry == NULL) return; page = bz_license_page_new (ui_entry); adw_navigation_view_push (self->navigation_view, page); } static void dl_stats_cb (BzAddonsDialog *self, GtkButton *button) { BzStatsDialog *bin = NULL; AdwNavigationPage *page = NULL; BzEntry *ui_entry = NULL; if (self->selected_ui_entry == NULL) return; ui_entry = bz_result_get_object (self->selected_ui_entry); if (ui_entry == NULL) return; bin = BZ_STATS_DIALOG (bz_stats_dialog_new (NULL, NULL, 0)); page = adw_navigation_page_new (GTK_WIDGET (bin), _ ("Download Stats")); adw_navigation_page_set_tag (page, "stats"); g_object_bind_property (ui_entry, "download-stats", bin, "model", G_BINDING_SYNC_CREATE); g_object_bind_property (ui_entry, "total-downloads", bin, "total-downloads", G_BINDING_SYNC_CREATE); adw_navigation_view_push (self->navigation_view, page); bz_stats_dialog_animate_open (bin); } static void animate_to_size (BzAddonsDialog *self) { const char *tag = NULL; int target_width = 0; int target_height = 0; int nat = 0; int cur_width = 0; int measure_for = 0; int cur_w = 0; int cur_h = 0; int delta_w = 0; int delta_h = 0; int delta = 0; guint duration = 0; tag = adw_navigation_view_get_visible_page_tag (self->navigation_view); if (g_strcmp0 (tag, "list") == 0) { cur_width = gtk_widget_get_width (GTK_WIDGET (self)); target_width = 500; measure_for = MAX (-1, MIN (target_width, cur_width) - 48); gtk_widget_measure (GTK_WIDGET (self->list_clamp), GTK_ORIENTATION_VERTICAL, measure_for, NULL, &nat, NULL, NULL); target_height = CLAMP (nat + 50, 150, 600); } else if (g_strcmp0 (tag, "full-view") == 0) { cur_width = gtk_widget_get_width (GTK_WIDGET (self)); target_width = 500; measure_for = MAX (-1, MIN (target_width, cur_width) - 48); gtk_widget_measure (GTK_WIDGET (self->full_view_clamp), GTK_ORIENTATION_VERTICAL, measure_for, NULL, &nat, NULL, NULL); target_height = CLAMP (nat + 50, 300, 700); } else if (g_strcmp0 (tag, "app-size") == 0) { target_width = 500; target_height = 300; } else if (g_strcmp0 (tag, "license") == 0) { cur_width = gtk_widget_get_width (GTK_WIDGET (self)); target_width = 400; measure_for = target_width - 48; gtk_widget_measure (GTK_WIDGET (self->navigation_view), GTK_ORIENTATION_VERTICAL, measure_for, NULL, &nat, NULL, NULL); target_height = CLAMP (nat, 300, 700); } else if (g_strcmp0 (tag, "stats") == 0) { target_width = 1250; target_height = 750; } else if (g_strcmp0 (tag, "empty") == 0) { target_width = 500; target_height = 500; } else return; if (!self->has_mapped) { self->has_mapped = TRUE; adw_dialog_set_content_width (ADW_DIALOG (self), target_width); adw_dialog_set_content_height (ADW_DIALOG (self), target_height); return; } cur_w = adw_dialog_get_content_width (ADW_DIALOG (self)); cur_h = adw_dialog_get_content_height (ADW_DIALOG (self)); delta_w = ABS (target_width - cur_w); delta_h = ABS (target_height - cur_h); delta = MAX (delta_w, delta_h); duration = (guint) CLAMP (delta * 0.6, 200, (target_width < cur_w || target_height < cur_h) ? 300 : 600); adw_timed_animation_set_duration (ADW_TIMED_ANIMATION (self->width_animation), duration); adw_timed_animation_set_duration (ADW_TIMED_ANIMATION (self->height_animation), duration); adw_timed_animation_set_value_from (ADW_TIMED_ANIMATION (self->width_animation), cur_w); adw_timed_animation_set_value_to (ADW_TIMED_ANIMATION (self->width_animation), target_width); adw_timed_animation_set_value_from (ADW_TIMED_ANIMATION (self->height_animation), cur_h); adw_timed_animation_set_value_to (ADW_TIMED_ANIMATION (self->height_animation), target_height); adw_animation_play (self->width_animation); adw_animation_play (self->height_animation); } static void on_visible_page_tag_changed (AdwNavigationView *nav_view, GParamSpec *pspec, BzAddonsDialog *self) { g_idle_add_once ((GSourceOnceFunc) animate_to_size, self); } static DexFuture * on_parent_ui_entry_resolved (DexFuture *future, GWeakRef *wr) { g_autoptr (BzAddonsDialog) self = NULL; bz_weak_get_or_return_reject (self, wr); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PARENT_UI_ENTRY]); return dex_future_new_for_boolean (TRUE); } static DexFuture * on_selected_ui_entry_resolved (DexFuture *future, GWeakRef *wr) { g_autoptr (BzAddonsDialog) self = NULL; const GValue *value = NULL; g_autoptr (BzEntry) ui_entry = NULL; const char *ref = NULL; g_auto (GStrv) parts = NULL; BzApplicationMapFactory *factory = NULL; GtkStringObject *item = NULL; BzEntryGroup *parent_group = NULL; bz_weak_get_or_return_reject (self, wr); value = dex_future_get_value (future, NULL); if (value == NULL || !G_VALUE_HOLDS_OBJECT (value)) return dex_future_new_for_boolean (TRUE); ui_entry = g_value_dup_object (value); if (ui_entry == NULL || !BZ_IS_FLATPAK_ENTRY (ui_entry)) return dex_future_new_for_boolean (TRUE); ref = bz_flatpak_entry_get_addon_extension_of_ref (BZ_FLATPAK_ENTRY (ui_entry)); if (ref == NULL) return dex_future_new_for_boolean (TRUE); parts = g_strsplit (ref, "/", -1); if (parts[0] == NULL || parts[1] == NULL) return dex_future_new_for_boolean (TRUE); factory = bz_state_info_get_application_factory (bz_state_info_get_default ()); item = gtk_string_object_new (parts[1]); parent_group = bz_application_map_factory_convert_one (factory, item); if (parent_group == NULL) return dex_future_new_for_boolean (TRUE); g_clear_object (&self->parent_ui_entry); self->parent_ui_entry = bz_entry_group_dup_ui_entry (parent_group); if (self->parent_ui_entry == NULL) return dex_future_new_for_boolean (TRUE); if (bz_result_get_resolved (self->parent_ui_entry)) { g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PARENT_UI_ENTRY]); } else { g_autoptr (DexFuture) parent_future = NULL; GWeakRef *parent_wr = NULL; parent_future = bz_result_dup_future (self->parent_ui_entry); parent_wr = bz_track_weak (self); parent_future = dex_future_then ( parent_future, (DexFutureCallback) on_parent_ui_entry_resolved, parent_wr, bz_weak_release); dex_clear (&self->parent_ui_future); self->parent_ui_future = g_steal_pointer (&parent_future); } return dex_future_new_for_boolean (TRUE); } static void set_selected_group (BzAddonsDialog *self, BzEntryGroup *group) { dex_clear (&self->selected_ui_future); dex_clear (&self->parent_ui_future); g_clear_object (&self->selected_group); g_clear_object (&self->selected_ui_entry); g_clear_object (&self->parent_ui_entry); gtk_toggle_button_set_active (self->description_toggle, FALSE); if (group == NULL) return; self->selected_group = g_object_ref (group); self->selected_ui_entry = bz_entry_group_dup_ui_entry (group); if (self->selected_ui_entry == NULL) goto notify; if (bz_result_get_resolved (self->selected_ui_entry)) { g_autoptr (BzEntry) entry = NULL; g_autoptr (DexFuture) object_future = NULL; GWeakRef *wr = NULL; entry = g_object_ref (bz_result_get_object (self->selected_ui_entry)); object_future = dex_future_new_for_object (entry); wr = bz_track_weak (self); dex_unref (on_selected_ui_entry_resolved (object_future, wr)); bz_weak_release (wr); } else { g_autoptr (DexFuture) ui_future = NULL; GWeakRef *wr = NULL; ui_future = bz_result_dup_future (self->selected_ui_entry); wr = bz_track_weak (self); ui_future = dex_future_then ( ui_future, (DexFutureCallback) on_selected_ui_entry_resolved, wr, bz_weak_release); self->selected_ui_future = g_steal_pointer (&ui_future); } notify: g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SELECTED_GROUP]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SELECTED_UI_ENTRY]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PARENT_UI_ENTRY]); } static void tile_activated_cb (BzAddonTile *tile) { BzAddonsDialog *self = NULL; BzEntryGroup *group = NULL; self = BZ_ADDONS_DIALOG (gtk_widget_get_ancestor (GTK_WIDGET (tile), BZ_TYPE_ADDONS_DIALOG)); if (self == NULL) return; group = bz_addon_tile_get_group (tile); if (group == NULL) return; set_selected_group (self, group); adw_navigation_view_push_by_tag (self->navigation_view, "full-view"); } static int sort_func (BzEntryGroup *a, BzEntryGroup *b, BzAddonsDialog *self) { const char *desc_a = NULL; const char *desc_b = NULL; gboolean has_a = FALSE; gboolean has_b = FALSE; int result = 0; desc_a = bz_entry_group_get_description (a); desc_b = bz_entry_group_get_description (b); has_a = desc_a != NULL && *desc_a != '\0'; has_b = desc_b != NULL && *desc_b != '\0'; if (has_a != has_b) result = has_b - has_a; else result = g_utf8_collate (bz_entry_group_get_title (a), bz_entry_group_get_title (b)); return result; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-addons-dialog.h����������������������������������������������������0000664�0000000�0000000�00000002246�15240005042�0021420�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-addons-dialog.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-entry-group.h" G_BEGIN_DECLS #define BZ_TYPE_ADDONS_DIALOG (bz_addons_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzAddonsDialog, bz_addons_dialog, BZ, ADDONS_DIALOG, AdwDialog) AdwDialog * bz_addons_dialog_new (BzEntryGroup *group); AdwDialog * bz_addons_dialog_new_single (BzEntryGroup *group); BzEntry * bz_addons_dialog_get_parent_entry (BzAddonsDialog *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-age-rating-attribute.txt�������������������������������������������0000664�0000000�0000000�00000000527�15240005042�0023322�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=age_rating_attribute parent-prefix=g parent-name=object author=AUTOGEN include="bz-context-row.h" property=importance BzImportance BZ_TYPE_IMPORTANCE enum property=id char G_TYPE_STRING string property=title char G_TYPE_STRING string property=description char G_TYPE_STRING string property=icon_name char G_TYPE_STRING string �������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-age-rating-dialog.blp����������������������������������������������0000664�0000000�0000000�00000001524�15240005042�0022512�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzAgeRatingDialog: Adw.Dialog { content-height: 550; content-width: 640; title: _("Age Rating"); Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: ScrolledWindow { hscrollbar-policy: never; Adw.Clamp { maximum-size: 600; tightening-threshold: 400; Box { orientation: vertical; spacing: 24; margin-start: 24; margin-end: 24; margin-top: 24; margin-bottom: 24; $BzLozenge lozenge { title: _("Age Rating"); label: "?"; importance: neutral; } ListBox list { selection-mode: none; styles [ "boxed-list", ] } } } }; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-age-rating-dialog.c������������������������������������������������0000664�0000000�0000000�00000107545�15240005042�0022171�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-age-rating-dialog.c * * Copyright 2021 Endless OS Foundation LLC * Copyright 2025 Alexander Vanhee * * Author: Philip Withnall <pwithnall@endlessos.org> (GNOME Software) * Adapted for Bazaar by Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <appstream.h> #include <glib/gi18n.h> #include <locale.h> #include "bz-age-rating-attribute.h" #include "bz-age-rating-dialog.h" #include "bz-context-row.h" #include "bz-lozenge.h" struct _BzAgeRatingDialog { AdwDialog parent_instance; BzEntry *entry; BzLozenge *lozenge; GtkListBox *list; }; G_DEFINE_FINAL_TYPE (BzAgeRatingDialog, bz_age_rating_dialog, ADW_TYPE_DIALOG) enum { PROP_0, PROP_ENTRY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { NULL }; typedef enum { BZ_AGE_RATING_GROUP_TYPE_DRUGS, BZ_AGE_RATING_GROUP_TYPE_LANGUAGE, BZ_AGE_RATING_GROUP_TYPE_MONEY, BZ_AGE_RATING_GROUP_TYPE_SEX, BZ_AGE_RATING_GROUP_TYPE_SOCIAL, BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, } BzAgeRatingGroupType; #define BZ_AGE_RATING_GROUP_TYPE_COUNT (BZ_AGE_RATING_GROUP_TYPE_VIOLENCE + 1) typedef struct { GList *attributes; } BzAgeRatingGroup; typedef void (*AttributeCallback) (const gchar *attribute, AsContentRatingValue value, gpointer user_data); static const struct { const gchar *id; BzAgeRatingGroupType group_type; const gchar *title; const gchar *unknown_description; const gchar *icon_name; const gchar *icon_name_negative; } attribute_details[] = { { "violence-cartoon", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Cartoon Violence"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding cartoon violence"), "violence-symbolic", "violence-none-symbolic" }, { "violence-fantasy", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Fantasy Violence"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding fantasy violence"), "violence-symbolic", "violence-none-symbolic" }, { "violence-realistic", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Realistic Violence"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding realistic violence"), "violence-symbolic", "violence-none-symbolic" }, { "violence-bloodshed", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Violence Depicting Bloodshed"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding bloodshed"), "violence-symbolic", "violence-none-symbolic" }, { "violence-sexual", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Sexual Violence"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding sexual violence"), "violence-symbolic", "violence-none-symbolic" }, { "drugs-alcohol", BZ_AGE_RATING_GROUP_TYPE_DRUGS, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Alcohol"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to alcohol"), "alcohol-use-symbolic", "alcohol-use-none-symbolic" }, { "drugs-narcotics", BZ_AGE_RATING_GROUP_TYPE_DRUGS, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Narcotics"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to illicit drugs"), "drug-use-symbolic", "drug-use-none-symbolic" }, { "drugs-tobacco", BZ_AGE_RATING_GROUP_TYPE_DRUGS, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Tobacco"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to tobacco products"), "smoking-symbolic", "smoking-none-symbolic" }, { "sex-nudity", BZ_AGE_RATING_GROUP_TYPE_SEX, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Nudity"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding nudity of any sort"), "nudity-symbolic", "nudity-none-symbolic" }, { "sex-themes", BZ_AGE_RATING_GROUP_TYPE_SEX, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Sexual Themes"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to or depictions of sexual nature"), "nudity-symbolic", "nudity-none-symbolic" }, { "language-profanity", BZ_AGE_RATING_GROUP_TYPE_LANGUAGE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Profanity"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding profanity of any kind"), "strong-language-symbolic", "strong-language-none-symbolic" }, { "language-humor", BZ_AGE_RATING_GROUP_TYPE_LANGUAGE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Inappropriate Humor"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding inappropriate humor"), "strong-language-symbolic", "strong-language-none-symbolic" }, { "language-discrimination", BZ_AGE_RATING_GROUP_TYPE_SOCIAL, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Discrimination"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding discriminatory language of any kind"), "strong-language-symbolic", "strong-language-none-symbolic" }, { "money-advertising", BZ_AGE_RATING_GROUP_TYPE_MONEY, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Advertising"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding advertising of any kind"), "advertising-symbolic", "advertising-none-symbolic" }, { "money-gambling", BZ_AGE_RATING_GROUP_TYPE_MONEY, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Gambling"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding gambling of any kind"), "gambling-symbolic", "gambling-none-symbolic" }, { "money-purchasing", BZ_AGE_RATING_GROUP_TYPE_MONEY, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Purchasing"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding the ability to spend money"), "money-symbolic", "money-none-symbolic" }, { "social-chat", BZ_AGE_RATING_GROUP_TYPE_SOCIAL, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Chat Between Users"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding ways to chat with other users"), "messaging-symbolic", "messaging-none-symbolic" }, { "social-audio", BZ_AGE_RATING_GROUP_TYPE_SOCIAL, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Audio Chat Between Users"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding ways to talk with other users"), "audio-chat-symbolic", "audio-chat-none-symbolic" }, { "social-contacts", BZ_AGE_RATING_GROUP_TYPE_SOCIAL, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Contact Details"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding sharing of social network usernames or email addresses"), "contacts-symbolic", NULL }, { "social-info", BZ_AGE_RATING_GROUP_TYPE_SOCIAL, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Identifying Information"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding sharing of user information with third parties"), "social-info-symbolic", NULL }, { "social-location", BZ_AGE_RATING_GROUP_TYPE_SOCIAL, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Location Sharing"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding sharing of physical location with other users"), "location-services-active-symbolic", "location-services-disabled-symbolic" }, { "sex-prostitution", BZ_AGE_RATING_GROUP_TYPE_SEX, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Prostitution"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to prostitution"), "nudity-symbolic", "nudity-none-symbolic" }, { "sex-adultery", BZ_AGE_RATING_GROUP_TYPE_SEX, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Adultery"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to adultery"), "nudity-symbolic", "nudity-none-symbolic" }, { "sex-appearance", BZ_AGE_RATING_GROUP_TYPE_SEX, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Sexualized Characters"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding sexualized characters"), "nudity-symbolic", "nudity-none-symbolic" }, { "violence-worship", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Desecration"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to desecration"), "violence-symbolic", "violence-none-symbolic" }, { "violence-desecration", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Human Remains"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding visible dead human remains"), "human-remains-symbolic", NULL }, { "violence-slavery", BZ_AGE_RATING_GROUP_TYPE_VIOLENCE, /* TRANSLATORS: content rating title, see https://hughsie.github.io/oars/ */ N_ ("Slavery"), /* TRANSLATORS: content rating description, see https://hughsie.github.io/oars/ */ N_ ("No information regarding references to slavery"), "violence-symbolic", "violence-none-symbolic" }, }; static const gchar *content_rating_attribute_get_icon_name (const gchar *attribute, gboolean negative_version); static const gchar *content_rating_attribute_get_title (const gchar *attribute); static const gchar *content_rating_attribute_get_unknown_description (const gchar *attribute); static BzAgeRatingGroupType content_rating_attribute_get_group_type (const gchar *attribute); static const gchar *content_rating_group_get_description (BzAgeRatingGroupType group_type); static const gchar *content_rating_group_get_icon_name (BzAgeRatingGroupType group_type, gboolean negative_version); static const gchar *content_rating_group_get_title (BzAgeRatingGroupType group_type); static BzImportance content_rating_value_get_importance (AsContentRatingValue value); static gint attributes_compare (BzAgeRatingAttribute *attr1, BzAgeRatingAttribute *attr2); static void collect_attribute (const gchar *attribute, AsContentRatingValue value, gpointer user_data); static void process_attributes (AsContentRating *content_rating, gboolean show_worst_only, AttributeCallback callback, gpointer user_data); static gchar *format_age_short (AsContentRatingSystem system, guint age); static void update_lozenge (BzAgeRatingDialog *self, AsContentRating *content_rating); static void update_list (BzAgeRatingDialog *self); static void bz_age_rating_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAgeRatingDialog *self = NULL; self = BZ_AGE_RATING_DIALOG (object); switch (prop_id) { case PROP_ENTRY: self->entry = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_age_rating_dialog_constructed (GObject *object) { BzAgeRatingDialog *self = NULL; self = BZ_AGE_RATING_DIALOG (object); G_OBJECT_CLASS (bz_age_rating_dialog_parent_class)->constructed (object); if (self->entry != NULL) update_list (self); } static void bz_age_rating_dialog_dispose (GObject *object) { BzAgeRatingDialog *self = NULL; self = BZ_AGE_RATING_DIALOG (object); g_clear_object (&self->entry); gtk_widget_dispose_template (GTK_WIDGET (self), BZ_TYPE_AGE_RATING_DIALOG); G_OBJECT_CLASS (bz_age_rating_dialog_parent_class)->dispose (object); } static void bz_age_rating_dialog_class_init (BzAgeRatingDialogClass *klass) { GObjectClass *object_class = NULL; GtkWidgetClass *widget_class = NULL; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_age_rating_dialog_set_property; object_class->constructed = bz_age_rating_dialog_constructed; object_class->dispose = bz_age_rating_dialog_dispose; props[PROP_ENTRY] = g_param_spec_object ( "entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LOZENGE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-age-rating-dialog.ui"); gtk_widget_class_bind_template_child (widget_class, BzAgeRatingDialog, lozenge); gtk_widget_class_bind_template_child (widget_class, BzAgeRatingDialog, list); } static void bz_age_rating_dialog_init (BzAgeRatingDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } BzAgeRatingDialog * bz_age_rating_dialog_new (BzEntry *entry) { return g_object_new (BZ_TYPE_AGE_RATING_DIALOG, "entry", entry, NULL); } static const gchar * content_rating_attribute_get_icon_name (const gchar *attribute, gboolean negative_version) { for (gsize i = 0; i < G_N_ELEMENTS (attribute_details); i++) { if (g_str_equal (attribute, attribute_details[i].id)) { if (negative_version && attribute_details[i].icon_name_negative != NULL) return attribute_details[i].icon_name_negative; return attribute_details[i].icon_name; } } g_assert_not_reached (); } static const gchar * content_rating_attribute_get_title (const gchar *attribute) { for (gsize i = 0; i < G_N_ELEMENTS (attribute_details); i++) { if (g_str_equal (attribute, attribute_details[i].id)) return _ (attribute_details[i].title); } g_assert_not_reached (); } static const gchar * content_rating_attribute_get_unknown_description (const gchar *attribute) { for (gsize i = 0; i < G_N_ELEMENTS (attribute_details); i++) { if (g_str_equal (attribute, attribute_details[i].id)) return _ (attribute_details[i].unknown_description); } g_assert_not_reached (); } static BzAgeRatingGroupType content_rating_attribute_get_group_type (const gchar *attribute) { for (gsize i = 0; i < G_N_ELEMENTS (attribute_details); i++) { if (g_str_equal (attribute, attribute_details[i].id)) return attribute_details[i].group_type; } g_assert_not_reached (); } static const gchar * content_rating_group_get_description (BzAgeRatingGroupType group_type) { switch (group_type) { case BZ_AGE_RATING_GROUP_TYPE_DRUGS: return _ ("Does not include references to drugs"); case BZ_AGE_RATING_GROUP_TYPE_LANGUAGE: return _ ("Does not include swearing, profanity, and other kinds of strong language"); case BZ_AGE_RATING_GROUP_TYPE_MONEY: return _ ("Does not include ads or monetary transactions"); case BZ_AGE_RATING_GROUP_TYPE_SEX: return _ ("Does not include sex or nudity"); case BZ_AGE_RATING_GROUP_TYPE_SOCIAL: return _ ("Does not include uncontrolled chat functionality"); case BZ_AGE_RATING_GROUP_TYPE_VIOLENCE: return _ ("Does not include violence"); default: g_assert_not_reached (); } } static const gchar * content_rating_group_get_icon_name (BzAgeRatingGroupType group_type, gboolean negative_version) { switch (group_type) { case BZ_AGE_RATING_GROUP_TYPE_DRUGS: return negative_version ? "smoking-none-symbolic" : "smoking-symbolic"; case BZ_AGE_RATING_GROUP_TYPE_LANGUAGE: return negative_version ? "strong-language-none-symbolic" : "strong-language-symbolic"; case BZ_AGE_RATING_GROUP_TYPE_MONEY: return negative_version ? "money-none-symbolic" : "money-symbolic"; case BZ_AGE_RATING_GROUP_TYPE_SEX: return negative_version ? "nudity-none-symbolic" : "nudity-symbolic"; case BZ_AGE_RATING_GROUP_TYPE_SOCIAL: return negative_version ? "messaging-none-symbolic" : "messaging-symbolic"; case BZ_AGE_RATING_GROUP_TYPE_VIOLENCE: return negative_version ? "violence-none-symbolic" : "violence-symbolic"; default: g_assert_not_reached (); } } static const gchar * content_rating_group_get_title (BzAgeRatingGroupType group_type) { switch (group_type) { case BZ_AGE_RATING_GROUP_TYPE_DRUGS: return _ ("Drugs"); case BZ_AGE_RATING_GROUP_TYPE_LANGUAGE: return _ ("Strong Language"); case BZ_AGE_RATING_GROUP_TYPE_MONEY: return _ ("Money"); case BZ_AGE_RATING_GROUP_TYPE_SEX: return _ ("Nudity"); case BZ_AGE_RATING_GROUP_TYPE_SOCIAL: return _ ("Social"); case BZ_AGE_RATING_GROUP_TYPE_VIOLENCE: return _ ("Violence"); default: g_assert_not_reached (); } } static BzImportance content_rating_value_get_importance (AsContentRatingValue value) { switch (value) { case AS_CONTENT_RATING_VALUE_NONE: return BZ_IMPORTANCE_UNIMPORTANT; case AS_CONTENT_RATING_VALUE_UNKNOWN: return BZ_IMPORTANCE_NEUTRAL; case AS_CONTENT_RATING_VALUE_MILD: return BZ_IMPORTANCE_INFORMATION; case AS_CONTENT_RATING_VALUE_MODERATE: return BZ_IMPORTANCE_WARNING; case AS_CONTENT_RATING_VALUE_INTENSE: return BZ_IMPORTANCE_IMPORTANT; case AS_CONTENT_RATING_VALUE_LAST: default: return BZ_IMPORTANCE_NEUTRAL; } } static gint attributes_compare (BzAgeRatingAttribute *attr1, BzAgeRatingAttribute *attr2) { BzImportance importance1 = 0; BzImportance importance2 = 0; const gchar *id1 = NULL; const gchar *id2 = NULL; importance1 = bz_age_rating_attribute_get_importance (attr1); importance2 = bz_age_rating_attribute_get_importance (attr2); if (importance1 != importance2) { if (importance1 == BZ_IMPORTANCE_NEUTRAL && importance2 == BZ_IMPORTANCE_UNIMPORTANT) return -1; if (importance1 == BZ_IMPORTANCE_UNIMPORTANT && importance2 == BZ_IMPORTANCE_NEUTRAL) return 1; return importance2 - importance1; } else { id1 = bz_age_rating_attribute_get_id (attr1); id2 = bz_age_rating_attribute_get_id (attr2); return g_strcmp0 (id1, id2); } } static void collect_attribute (const gchar *attribute, AsContentRatingValue value, gpointer user_data) { BzAgeRatingGroup *groups = NULL; BzAgeRatingGroupType group_type = 0; BzImportance rating = 0; const gchar *icon_name = NULL; const gchar *title = NULL; const gchar *description = NULL; BzAgeRatingAttribute *attr = NULL; groups = user_data; group_type = content_rating_attribute_get_group_type (attribute); rating = content_rating_value_get_importance (value); icon_name = content_rating_attribute_get_icon_name (attribute, value == AS_CONTENT_RATING_VALUE_NONE); title = content_rating_attribute_get_title (attribute); if (value == AS_CONTENT_RATING_VALUE_UNKNOWN) description = content_rating_attribute_get_unknown_description (attribute); else description = as_content_rating_attribute_get_description (attribute, value); attr = g_object_new (BZ_TYPE_AGE_RATING_ATTRIBUTE, "id", attribute, "icon-name", icon_name, "importance", rating, "title", title, "description", description, NULL); groups[group_type].attributes = g_list_insert_sorted (groups[group_type].attributes, attr, (GCompareFunc) attributes_compare); } static AsContentRatingValue get_rating_value (AsContentRating *content_rating, const gchar *id) { if (content_rating == NULL) return AS_CONTENT_RATING_VALUE_UNKNOWN; return as_content_rating_get_value (content_rating, id); } static void process_attributes (AsContentRating *content_rating, gboolean show_worst_only, AttributeCallback callback, gpointer user_data) { g_autofree const gchar **rating_ids = NULL; AsContentRatingValue value_bad = AS_CONTENT_RATING_VALUE_NONE; guint age_bad = 0; guint rating_age = 0; AsContentRatingValue rating_value = 0; const gchar *const violence_group[] = { "violence-bloodshed", "violence-realistic", "violence-fantasy", "violence-cartoon", NULL }; const gchar *const social_group[] = { "social-audio", "social-chat", "social-contacts", "social-info", NULL }; const gchar *const coalesce_groups[] = { "sex-themes", "sex-homosexuality", NULL }; rating_ids = as_content_rating_get_all_rating_ids (); for (gsize i = 0; rating_ids[i] != NULL; i++) { rating_value = get_rating_value (content_rating, rating_ids[i]); rating_age = as_content_rating_attribute_to_csm_age (rating_ids[i], rating_value); if (rating_age > age_bad) age_bad = rating_age; if (rating_value > value_bad) value_bad = rating_value; } if (show_worst_only && (value_bad == AS_CONTENT_RATING_VALUE_NONE || age_bad == 0)) { callback (NULL, AS_CONTENT_RATING_VALUE_UNKNOWN, user_data); return; } for (gsize i = 0; rating_ids[i] != NULL; i++) { if (g_strv_contains (violence_group, rating_ids[i]) || g_strv_contains (social_group, rating_ids[i])) continue; rating_value = get_rating_value (content_rating, rating_ids[i]); rating_age = as_content_rating_attribute_to_csm_age (rating_ids[i], rating_value); if (show_worst_only && rating_age < age_bad) continue; if (g_strv_contains (coalesce_groups + 1, rating_ids[i]) && as_content_rating_attribute_to_csm_age (coalesce_groups[0], get_rating_value (content_rating, coalesce_groups[0])) >= rating_age) continue; callback (rating_ids[i], rating_value, user_data); } for (gsize i = 0; violence_group[i] != NULL; i++) { rating_value = get_rating_value (content_rating, violence_group[i]); rating_age = as_content_rating_attribute_to_csm_age (violence_group[i], rating_value); if (show_worst_only && rating_age < age_bad) continue; callback (violence_group[i], rating_value, user_data); } for (gsize i = 0; social_group[i] != NULL; i++) { rating_value = get_rating_value (content_rating, social_group[i]); rating_age = as_content_rating_attribute_to_csm_age (social_group[i], rating_value); if (show_worst_only && rating_age < age_bad) continue; callback (social_group[i], rating_value, user_data); } } static gchar * format_age_short (AsContentRatingSystem system, guint age) { if (age < 3) age = 3; /* Translators: Age rating format, e.g. "12+" for ages 12 and up */ return g_strdup_printf (_ ("%d+"), age); } static void update_lozenge (BzAgeRatingDialog *self, AsContentRating *content_rating) { const gchar *locale = NULL; AsContentRatingSystem system = 0; guint age = G_MAXUINT; g_autofree gchar *age_text = NULL; g_autofree gchar *title_text = NULL; g_autofree gchar *a11y_desc = NULL; BzImportance importance = BZ_IMPORTANCE_NEUTRAL; gboolean is_unknown = FALSE; locale = setlocale (LC_MESSAGES, NULL); system = as_content_rating_system_from_locale (locale); if (content_rating != NULL) age = as_content_rating_get_minimum_age (content_rating); if (age != G_MAXUINT) age_text = format_age_short (system, age); if (content_rating != NULL && age_text == NULL && age == 0) age_text = g_strdup (C_ ("Age rating", "All")); if (age_text == NULL || (content_rating != NULL && g_strcmp0 (as_content_rating_get_kind (content_rating), "oars-1.0") != 0 && g_strcmp0 (as_content_rating_get_kind (content_rating), "oars-1.1") != 0)) { g_clear_pointer (&age_text, g_free); age_text = g_strdup ("?"); importance = BZ_IMPORTANCE_NEUTRAL; } else { if (age >= 18) importance = BZ_IMPORTANCE_IMPORTANT; else if (age >= 15) importance = BZ_IMPORTANCE_WARNING; else if (age >= 12) importance = BZ_IMPORTANCE_INFORMATION; else importance = BZ_IMPORTANCE_NEUTRAL; } if (self->entry == NULL) { title_text = g_strdup (_ ("Age Rating")); } else { is_unknown = (content_rating == NULL || (g_strcmp0 (as_content_rating_get_kind (content_rating), "oars-1.0") != 0 && g_strcmp0 (as_content_rating_get_kind (content_rating), "oars-1.1") != 0) || age == G_MAXUINT); if (is_unknown) { title_text = g_strdup_printf (_ ("%s has an unknown age rating"), bz_entry_get_title (self->entry)); } else { if (age <= 3) title_text = g_strdup_printf (_ ("%s is suitable for everyone"), bz_entry_get_title (self->entry)); else if (age <= 5) title_text = g_strdup_printf (_ ("%s is suitable for young children"), bz_entry_get_title (self->entry)); else if (age <= 12) title_text = g_strdup_printf (_ ("%s is suitable for children"), bz_entry_get_title (self->entry)); else if (age <= 18) title_text = g_strdup_printf (_ ("%s is suitable for teenagers"), bz_entry_get_title (self->entry)); else if (age < G_MAXUINT) title_text = g_strdup_printf (_ ("%s is suitable for adults"), bz_entry_get_title (self->entry)); else title_text = g_strdup_printf (_ ("%s is suitable for %s"), bz_entry_get_title (self->entry), age_text); } } bz_lozenge_set_label (self->lozenge, age_text); bz_lozenge_set_title (self->lozenge, title_text); bz_lozenge_set_importance (self->lozenge, importance); a11y_desc = g_strdup_printf ("%s. %s", age_text, title_text); gtk_accessible_update_property (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_PROPERTY_DESCRIPTION, a11y_desc, -1); } static void update_list (BzAgeRatingDialog *self) { AsContentRating *content_rating = NULL; BzAgeRatingGroup groups[BZ_AGE_RATING_GROUP_TYPE_COUNT] = { 0 }; guint attr_count = 0; BzAgeRatingAttribute *attr = NULL; AdwActionRow *row = NULL; BzImportance max_importance = 0; BzImportance attr_importance = 0; BzImportance row_importances[BZ_AGE_RATING_GROUP_TYPE_COUNT] = { 0 }; GtkWidget *rows[BZ_AGE_RATING_GROUP_TYPE_COUNT] = { NULL }; const gchar *group_icon = NULL; const gchar *group_title = NULL; const gchar *group_description = NULL; const gchar *attr_description = NULL; g_autofree gchar *description = NULL; g_autoptr (GList) l = NULL; g_autofree gchar *tmp = NULL; content_rating = bz_entry_get_content_rating (self->entry); update_lozenge (self, content_rating); process_attributes (content_rating, FALSE, collect_attribute, groups); for (gsize i = 0; i < BZ_AGE_RATING_GROUP_TYPE_COUNT; i++) { if (groups[i].attributes == NULL) continue; attr_count = g_list_length (groups[i].attributes); row = NULL; if (attr_count == 1) { attr = (BzAgeRatingAttribute *) groups[i].attributes->data; row = bz_context_row_new (bz_age_rating_attribute_get_icon_name (attr), bz_age_rating_attribute_get_importance (attr), bz_age_rating_attribute_get_title (attr), bz_age_rating_attribute_get_description (attr)); row_importances[i] = bz_age_rating_attribute_get_importance (attr); } else { max_importance = BZ_IMPORTANCE_UNIMPORTANT; for (l = groups[i].attributes; l != NULL; l = l->next) { attr = (BzAgeRatingAttribute *) l->data; attr_importance = bz_age_rating_attribute_get_importance (attr); if (attr_importance > max_importance) max_importance = attr_importance; } if (max_importance == BZ_IMPORTANCE_UNIMPORTANT) { group_icon = content_rating_group_get_icon_name (i, TRUE); group_title = content_rating_group_get_title (i); group_description = content_rating_group_get_description (i); row = bz_context_row_new (group_icon, BZ_IMPORTANCE_UNIMPORTANT, group_title, group_description); } else { group_icon = content_rating_group_get_icon_name (i, FALSE); group_title = content_rating_group_get_title (i); g_clear_pointer (&description, g_free); for (l = groups[i].attributes; l != NULL; l = l->next) { attr = (BzAgeRatingAttribute *) l->data; attr_importance = bz_age_rating_attribute_get_importance (attr); if (attr_importance == BZ_IMPORTANCE_UNIMPORTANT) continue; attr_description = bz_age_rating_attribute_get_description (attr); if (description == NULL) { description = g_strdup (attr_description); } else { tmp = g_strdup_printf (_ ("%s • %s"), description, attr_description); g_clear_pointer (&description, g_free); description = g_steal_pointer (&tmp); } } row = bz_context_row_new (group_icon, max_importance, group_title, description); } row_importances[i] = max_importance; } rows[i] = GTK_WIDGET (row); g_list_free_full (g_steal_pointer (&groups[i].attributes), g_object_unref); } for (gint level = BZ_IMPORTANCE_IMPORTANT; level >= BZ_IMPORTANCE_UNIMPORTANT; level--) { for (gsize i = 0; i < BZ_AGE_RATING_GROUP_TYPE_COUNT; i++) { if (rows[i] == NULL || row_importances[i] != level) continue; gtk_list_box_append (self->list, rows[i]); } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-age-rating-dialog.h������������������������������������������������0000664�0000000�0000000�00000002357�15240005042�0022171�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-age-rating-dialog.h * * Copyright 2021 Endless OS Foundation LLC * Copyright 2025 Alexander Vanhee * * Author: Philip Withnall <pwithnall@endlessos.org> (GNOME Software) * Adapted for Bazaar by Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include <adwaita.h> #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_AGE_RATING_DIALOG (bz_age_rating_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzAgeRatingDialog, bz_age_rating_dialog, BZ, AGE_RATING_DIALOG, AdwDialog) BzAgeRatingDialog *bz_age_rating_dialog_new (BzEntry *entry); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-all-apps-page.blp��������������������������������������������������0000664�0000000�0000000�00000003112�15240005042�0021655�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzAllAppsPage: Adw.NavigationPage { Adw.ToolbarView { [top] Adw.HeaderBar {} content: Adw.BreakpointBin { width-request: 360; height-request: 100; child: ScrolledWindow { hexpand: true; vexpand: true; hscrollbar-policy: never; child: Adw.ClampScrollable clamp_scrollable { maximum-size: 1500; tightening-threshold: 1400; child: GridView grid_view { styles [ "search-grid", ] min-columns: 4; max-columns: 4; margin-start: 30; margin-end: 30; enable-rubberband: false; single-click-activate: true; factory: BuilderListItemFactory { template ListItem { child: $BzAppTile { group: bind template.item as <$BzEntryGroup>; }; } }; }; }; }; Adw.Breakpoint { condition ("max-width: 1300px") setters { grid_view.min-columns: 3; grid_view.max-columns: 3; } } Adw.Breakpoint { condition ("max-width: 900px") setters { grid_view.min-columns: 2; grid_view.max-columns: 2; } } Adw.Breakpoint { condition ("max-width: 700px") setters { grid_view.margin-start: 3; grid_view.margin-end: 3; grid_view.min-columns: 1; grid_view.max-columns: 1; } } }; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-all-apps-page.c����������������������������������������������������0000664�0000000�0000000�00000010664�15240005042�0021334�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-all-apps-page.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-all-apps-page.h" #include "bz-app-tile.h" #include "bz-entry-group.h" struct _BzAllAppsPage { AdwNavigationPage parent_instance; char *title; GListModel *applications; GtkGridView *grid_view; }; G_DEFINE_FINAL_TYPE (BzAllAppsPage, bz_all_apps_page, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_PAGE_TITLE, PROP_APPLICATIONS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_all_apps_page_dispose (GObject *object) { BzAllAppsPage *self = BZ_ALL_APPS_PAGE (object); g_clear_pointer (&self->title, g_free); g_clear_object (&self->applications); G_OBJECT_CLASS (bz_all_apps_page_parent_class)->dispose (object); } static void bz_all_apps_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAllAppsPage *self = BZ_ALL_APPS_PAGE (object); switch (prop_id) { case PROP_PAGE_TITLE: g_value_set_string (value, self->title); break; case PROP_APPLICATIONS: g_value_set_object (value, self->applications); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_all_apps_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAllAppsPage *self = BZ_ALL_APPS_PAGE (object); switch (prop_id) { case PROP_PAGE_TITLE: g_clear_pointer (&self->title, g_free); self->title = g_value_dup_string (value); break; case PROP_APPLICATIONS: g_clear_object (&self->applications); self->applications = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_all_apps_page_class_init (BzAllAppsPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_all_apps_page_dispose; object_class->get_property = bz_all_apps_page_get_property; object_class->set_property = bz_all_apps_page_set_property; props[PROP_PAGE_TITLE] = g_param_spec_string ( "page-title", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); props[PROP_APPLICATIONS] = g_param_spec_object ( "applications", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_APP_TILE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-all-apps-page.ui"); gtk_widget_class_bind_template_child (widget_class, BzAllAppsPage, grid_view); } static void bz_all_apps_page_init (BzAllAppsPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); } AdwNavigationPage * bz_all_apps_page_new (const char *title, GListModel *applications) { BzAllAppsPage *apps_page = NULL; g_autoptr (GtkNoSelection) selection_model = NULL; g_return_val_if_fail (applications != NULL, NULL); apps_page = g_object_new ( BZ_TYPE_ALL_APPS_PAGE, "page-title", title, "applications", applications, "title", title, NULL); selection_model = gtk_no_selection_new (NULL); gtk_no_selection_set_model (selection_model, applications); gtk_grid_view_set_model (apps_page->grid_view, GTK_SELECTION_MODEL (selection_model)); return ADW_NAVIGATION_PAGE (apps_page); } ����������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-all-apps-page.h����������������������������������������������������0000664�0000000�0000000�00000002105�15240005042�0021330�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-all-apps-page.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_ALL_APPS_PAGE (bz_all_apps_page_get_type ()) G_DECLARE_FINAL_TYPE (BzAllAppsPage, bz_all_apps_page, BZ, ALL_APPS_PAGE, AdwNavigationPage) AdwNavigationPage * bz_all_apps_page_new (const char *title, GListModel *applications); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-permissions.c��������������������������������������������������0000664�0000000�0000000�00000123476�15240005042�0022050�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-app-permissions.c * * Copyright 2026 Alexander Vanhee * Copyright (C) 2022 Red Hat <www.redhat.com> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib-object.h> #include <glib.h> #include <glib/gi18n.h> #include <stdlib.h> #include "bz-app-permissions.h" #define DOES_NOT_CONTAIN ((guint) ~0) G_DEFINE_FLAGS_TYPE ( BzAppPermissionsFlags, bz_app_permissions_flags, G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_NONE, "none"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_NETWORK, "network"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_SYSTEM_BUS, "system-bus"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_SESSION_BUS, "session-bus"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_DEVICES, "devices"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_HOME_FULL, "home-full"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_HOME_READ, "home-read"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL, "filesystem-full"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ, "filesystem-read"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_FULL, "downloads-full"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_READ, "downloads-read"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_SETTINGS, "settings"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_X11, "x11"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX, "escape-sandbox"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_OTHER, "filesystem-other"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_BUS_POLICY_OTHER, "bus-policy-other"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_AUDIO_DEVICES, "audio-devices"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_INPUT_DEVICES, "input-devices"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_SYSTEM_DEVICES, "system-devices"), G_DEFINE_ENUM_VALUE (BZ_APP_PERMISSIONS_FLAGS_SCREEN, "screen")) G_DEFINE_ENUM_TYPE ( BzFilesystemPathType, bz_filesystem_path_type, G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_SYSTEM_ROOT, "system-root"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_HOME_SUBDIR, "home-subdir"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_HOST_OS, "host-os"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_HOST_ETC, "host-etc"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_DESKTOP, "xdg-desktop"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_DOCUMENTS, "xdg-documents"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_MUSIC, "xdg-music"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_PICTURES, "xdg-pictures"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_PUBLIC_SHARE, "xdg-public-share"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_VIDEOS, "xdg-videos"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_TEMPLATES, "xdg-templates"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_CACHE, "xdg-cache"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_CONFIG, "xdg-config"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_DATA, "xdg-data"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_XDG_RUN, "xdg-run"), G_DEFINE_ENUM_VALUE (BZ_FILESYSTEM_PATH_CUSTOM, "custom")) G_DEFINE_ENUM_TYPE ( BzBusPolicyPermission, bz_bus_policy_permission, G_DEFINE_ENUM_VALUE (BZ_BUS_POLICY_PERMISSION_UNKNOWN, "unknown"), G_DEFINE_ENUM_VALUE (BZ_BUS_POLICY_PERMISSION_NONE, "none"), G_DEFINE_ENUM_VALUE (BZ_BUS_POLICY_PERMISSION_SEE, "see"), G_DEFINE_ENUM_VALUE (BZ_BUS_POLICY_PERMISSION_TALK, "talk"), G_DEFINE_ENUM_VALUE (BZ_BUS_POLICY_PERMISSION_OWN, "own")) struct _BzAppPermissions { GObject parent; gboolean is_sealed; BzAppPermissionsFlags flags; GPtrArray *filesystem_read; GPtrArray *filesystem_full; GPtrArray *bus_policies; }; G_DEFINE_FINAL_TYPE (BzAppPermissions, bz_app_permissions, G_TYPE_OBJECT) static gint cmp_filesystem_path_pointers (gconstpointer item1, gconstpointer item2); static int cmp_bus_policy_qsort (const void *item1, const void *item2); static guint app_permissions_get_array_index (GPtrArray *array, BzFilesystemPathType type, const char *subpath); static guint get_strv_index (const gchar *const *strv, const gchar *value); static void bz_app_permissions_finalize (GObject *object) { BzAppPermissions *self = BZ_APP_PERMISSIONS (object); g_clear_pointer (&self->filesystem_read, g_ptr_array_unref); g_clear_pointer (&self->filesystem_full, g_ptr_array_unref); g_clear_pointer (&self->bus_policies, g_ptr_array_unref); G_OBJECT_CLASS (bz_app_permissions_parent_class)->finalize (object); } static void bz_app_permissions_class_init (BzAppPermissionsClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = bz_app_permissions_finalize; } static void bz_app_permissions_init (BzAppPermissions *self) { } BzFilesystemPath * bz_filesystem_path_new (BzFilesystemPathType type, const char *subpath) { BzFilesystemPath *path = g_new0 (BzFilesystemPath, 1); path->type = type; path->subpath = g_strdup (subpath); return path; } void bz_filesystem_path_free (BzFilesystemPath *path) { g_return_if_fail (path != NULL); g_free (path->subpath); g_free (path); } char * bz_filesystem_path_to_display_string (const BzFilesystemPath *path) { g_return_val_if_fail (path != NULL, NULL); switch (path->type) { case BZ_FILESYSTEM_PATH_SYSTEM_ROOT: return g_strdup_printf (_ ("System folder %s"), path->subpath ? path->subpath : "/"); case BZ_FILESYSTEM_PATH_HOME_SUBDIR: return g_strdup_printf (_ ("Home subfolder %s"), path->subpath); case BZ_FILESYSTEM_PATH_HOST_OS: return g_strdup (_ ("Host system folders")); case BZ_FILESYSTEM_PATH_HOST_ETC: return g_strdup (_ ("Host system configuration from /etc")); case BZ_FILESYSTEM_PATH_XDG_DESKTOP: if (path->subpath) return g_strdup_printf (_ ("Desktop subfolder %s"), path->subpath); return g_strdup (_ ("Desktop folder")); case BZ_FILESYSTEM_PATH_XDG_DOCUMENTS: if (path->subpath) return g_strdup_printf (_ ("Documents subfolder %s"), path->subpath); return g_strdup (_ ("Documents folder")); case BZ_FILESYSTEM_PATH_XDG_MUSIC: if (path->subpath) return g_strdup_printf (_ ("Music subfolder %s"), path->subpath); return g_strdup (_ ("Music folder")); case BZ_FILESYSTEM_PATH_XDG_PICTURES: if (path->subpath) return g_strdup_printf (_ ("Pictures subfolder %s"), path->subpath); return g_strdup (_ ("Pictures folder")); case BZ_FILESYSTEM_PATH_XDG_PUBLIC_SHARE: if (path->subpath) return g_strdup_printf (_ ("Public Share subfolder %s"), path->subpath); return g_strdup (_ ("Public Share folder")); case BZ_FILESYSTEM_PATH_XDG_VIDEOS: if (path->subpath) return g_strdup_printf (_ ("Videos subfolder %s"), path->subpath); return g_strdup (_ ("Videos folder")); case BZ_FILESYSTEM_PATH_XDG_TEMPLATES: if (path->subpath) return g_strdup_printf (_ ("Templates subfolder %s"), path->subpath); return g_strdup (_ ("Templates folder")); case BZ_FILESYSTEM_PATH_XDG_CACHE: if (path->subpath) return g_strdup_printf (_ ("User cache subfolder %s"), path->subpath); return g_strdup (_ ("User cache folder")); case BZ_FILESYSTEM_PATH_XDG_CONFIG: if (path->subpath) return g_strdup_printf (_ ("User configuration subfolder %s"), path->subpath); return g_strdup (_ ("User configuration folder")); case BZ_FILESYSTEM_PATH_XDG_DATA: if (path->subpath) return g_strdup_printf (_ ("User data subfolder %s"), path->subpath); return g_strdup (_ ("User data folder")); case BZ_FILESYSTEM_PATH_XDG_RUN: if (path->subpath) return g_strdup_printf (_ ("User runtime subfolder %s"), path->subpath); return g_strdup (_ ("User runtime folder")); case BZ_FILESYSTEM_PATH_CUSTOM: return g_strdup_printf (_ ("Filesystem access to %s"), path->subpath); default: return g_strdup (_ ("Unknown filesystem path")); } } const char * bz_filesystem_path_to_icon_name (const BzFilesystemPath *path) { switch (path->type) { case BZ_FILESYSTEM_PATH_HOST_OS: return "computer-symbolic"; case BZ_FILESYSTEM_PATH_HOST_ETC: return "emblem-system-symbolic"; case BZ_FILESYSTEM_PATH_XDG_DESKTOP: return "user-desktop-symbolic"; case BZ_FILESYSTEM_PATH_XDG_DOCUMENTS: return "folder-documents-symbolic"; case BZ_FILESYSTEM_PATH_XDG_MUSIC: return "folder-music-symbolic"; case BZ_FILESYSTEM_PATH_XDG_PICTURES: return "folder-pictures-symbolic"; case BZ_FILESYSTEM_PATH_XDG_PUBLIC_SHARE: return "folder-publicshare-symbolic"; case BZ_FILESYSTEM_PATH_XDG_VIDEOS: return "folder-videos-symbolic"; case BZ_FILESYSTEM_PATH_XDG_CONFIG: return "emblem-system-symbolic"; case BZ_FILESYSTEM_PATH_SYSTEM_ROOT: case BZ_FILESYSTEM_PATH_HOME_SUBDIR: case BZ_FILESYSTEM_PATH_XDG_TEMPLATES: case BZ_FILESYSTEM_PATH_XDG_CACHE: case BZ_FILESYSTEM_PATH_XDG_DATA: case BZ_FILESYSTEM_PATH_XDG_RUN: case BZ_FILESYSTEM_PATH_CUSTOM: default: return "folder-symbolic"; } } BzBusPolicy * bz_bus_policy_new (GBusType bus_type, const char *bus_name, BzBusPolicyPermission permission) { BzBusPolicy *policy = NULL; g_return_val_if_fail (bus_type != G_BUS_TYPE_NONE, NULL); g_return_val_if_fail (bus_name != NULL && *bus_name != '\0', NULL); policy = g_new0 (BzBusPolicy, 1); policy->bus_type = bus_type; policy->bus_name = g_strdup (bus_name); policy->permission = permission; return policy; } void bz_bus_policy_free (BzBusPolicy *self) { g_return_if_fail (self != NULL); g_free (self->bus_name); g_free (self); } BzAppPermissions * bz_app_permissions_new (void) { return g_object_new (BZ_TYPE_APP_PERMISSIONS, NULL); } void bz_app_permissions_seal (BzAppPermissions *self) { g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); if (self->is_sealed) return; self->is_sealed = TRUE; if (self->filesystem_read) qsort (self->filesystem_read->pdata, self->filesystem_read->len, sizeof (gpointer), cmp_filesystem_path_pointers); if (self->filesystem_full) qsort (self->filesystem_full->pdata, self->filesystem_full->len, sizeof (gpointer), cmp_filesystem_path_pointers); if (self->bus_policies) qsort (self->bus_policies->pdata, self->bus_policies->len, sizeof (gpointer), cmp_bus_policy_qsort); } gboolean bz_app_permissions_is_sealed (BzAppPermissions *self) { g_return_val_if_fail (BZ_IS_APP_PERMISSIONS (self), TRUE); return self->is_sealed; } gboolean bz_app_permissions_is_empty (BzAppPermissions *self) { g_return_val_if_fail (BZ_IS_APP_PERMISSIONS (self), TRUE); return (self->flags == BZ_APP_PERMISSIONS_FLAGS_NONE && (self->filesystem_read == NULL || self->filesystem_read->len == 0) && (self->filesystem_full == NULL || self->filesystem_full->len == 0) && (self->bus_policies == NULL || self->bus_policies->len == 0)); } void bz_app_permissions_set_flags (BzAppPermissions *self, BzAppPermissionsFlags flags) { g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); g_assert (!self->is_sealed); self->flags = flags; } BzAppPermissionsFlags bz_app_permissions_get_flags (BzAppPermissions *self) { g_return_val_if_fail (BZ_IS_APP_PERMISSIONS (self), BZ_APP_PERMISSIONS_FLAGS_NONE); return self->flags; } void bz_app_permissions_add_flag (BzAppPermissions *self, BzAppPermissionsFlags flags) { g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); g_return_if_fail (flags != BZ_APP_PERMISSIONS_FLAGS_NONE); g_assert (!self->is_sealed); self->flags = self->flags | flags; } void bz_app_permissions_remove_flag (BzAppPermissions *self, BzAppPermissionsFlags flags) { g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); g_return_if_fail (flags != BZ_APP_PERMISSIONS_FLAGS_NONE); g_assert (!self->is_sealed); self->flags = (self->flags & (~flags)); } void bz_app_permissions_add_filesystem_read (BzAppPermissions *self, BzFilesystemPathType type, const char *subpath) { g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); g_assert (!self->is_sealed); if (app_permissions_get_array_index (self->filesystem_read, type, subpath) != DOES_NOT_CONTAIN || app_permissions_get_array_index (self->filesystem_full, type, subpath) != DOES_NOT_CONTAIN) return; if (self->filesystem_read == NULL) self->filesystem_read = g_ptr_array_new_with_free_func ((GDestroyNotify) bz_filesystem_path_free); g_ptr_array_add (self->filesystem_read, bz_filesystem_path_new (type, subpath)); } const GPtrArray * bz_app_permissions_get_filesystem_read (BzAppPermissions *self) { g_return_val_if_fail (BZ_IS_APP_PERMISSIONS (self), NULL); return self->filesystem_read; } void bz_app_permissions_add_filesystem_full (BzAppPermissions *self, BzFilesystemPathType type, const char *subpath) { guint read_index = DOES_NOT_CONTAIN; g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); g_assert (!self->is_sealed); if (app_permissions_get_array_index (self->filesystem_full, type, subpath) != DOES_NOT_CONTAIN) return; if (self->filesystem_full == NULL) self->filesystem_full = g_ptr_array_new_with_free_func ((GDestroyNotify) bz_filesystem_path_free); g_ptr_array_add (self->filesystem_full, bz_filesystem_path_new (type, subpath)); read_index = app_permissions_get_array_index (self->filesystem_read, type, subpath); if (read_index != DOES_NOT_CONTAIN) { g_ptr_array_remove_index (self->filesystem_read, read_index); if (self->filesystem_read->len == 0) g_clear_pointer (&self->filesystem_read, g_ptr_array_unref); } } const GPtrArray * bz_app_permissions_get_filesystem_full (BzAppPermissions *self) { g_return_val_if_fail (BZ_IS_APP_PERMISSIONS (self), NULL); return self->filesystem_full; } void bz_app_permissions_add_bus_policy (BzAppPermissions *self, GBusType bus_type, const char *bus_name, BzBusPolicyPermission permission) { g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); g_return_if_fail (bus_type != G_BUS_TYPE_NONE); g_return_if_fail (bus_name != NULL && *bus_name != '\0'); g_return_if_fail (permission != BZ_BUS_POLICY_PERMISSION_UNKNOWN); g_assert (!self->is_sealed); for (unsigned int i = 0; self->bus_policies != NULL && i < self->bus_policies->len; i++) { BzBusPolicy *policy = g_ptr_array_index (self->bus_policies, i); if (policy->bus_type == bus_type && g_str_equal (policy->bus_name, bus_name)) { policy->permission = MAX (policy->permission, permission); return; } } if (permission == BZ_BUS_POLICY_PERMISSION_NONE) return; if (self->bus_policies == NULL) self->bus_policies = g_ptr_array_new_with_free_func ((GDestroyNotify) bz_bus_policy_free); g_ptr_array_add (self->bus_policies, bz_bus_policy_new (bus_type, bus_name, permission)); } const BzBusPolicy *const * bz_app_permissions_get_bus_policies (BzAppPermissions *self, size_t *out_n_bus_policies) { g_return_val_if_fail (BZ_IS_APP_PERMISSIONS (self), NULL); g_return_val_if_fail (self->is_sealed, NULL); if (out_n_bus_policies != NULL) *out_n_bus_policies = (self->bus_policies != NULL) ? self->bus_policies->len : 0; return (self->bus_policies != NULL && self->bus_policies->len > 0) ? (const BzBusPolicy *const *) self->bus_policies->pdata : NULL; } BzAppPermissions * bz_app_permissions_new_from_metadata (GKeyFile *keyfile, GError **error) { char **strv = NULL; BzAppPermissions *permissions = NULL; BzAppPermissionsFlags flags = BZ_APP_PERMISSIONS_FLAGS_NONE; g_autofree char *app_id = NULL; g_autofree char *mpris_id = NULL; g_autofree char *app_id_non_devel = NULL; g_autofree char *mpris_id_non_devel = NULL; g_return_val_if_fail (keyfile != NULL, NULL); permissions = bz_app_permissions_new (); app_id = g_key_file_get_value (keyfile, "Application", "name", NULL); strv = g_key_file_get_string_list (keyfile, "Context", "sockets", NULL, NULL); if (strv != NULL && g_strv_contains ((const gchar *const *) strv, "system-bus")) flags |= BZ_APP_PERMISSIONS_FLAGS_SYSTEM_BUS | BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX; if (strv != NULL && g_strv_contains ((const gchar *const *) strv, "session-bus")) flags |= BZ_APP_PERMISSIONS_FLAGS_SESSION_BUS | BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX; if (strv != NULL && !g_strv_contains ((const gchar *const *) strv, "fallback-x11") && g_strv_contains ((const gchar *const *) strv, "x11")) flags |= BZ_APP_PERMISSIONS_FLAGS_X11; if (strv != NULL && g_strv_contains ((const gchar *const *) strv, "fallback-x11") && !g_strv_contains ((const gchar *const *) strv, "wayland")) flags |= BZ_APP_PERMISSIONS_FLAGS_X11; if (strv != NULL && g_strv_contains ((const gchar *const *) strv, "pulseaudio")) flags |= BZ_APP_PERMISSIONS_FLAGS_AUDIO_DEVICES; if (strv != NULL && g_strv_contains ((const char *const *) strv, "gpg-agent")) flags |= BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX; g_strfreev (strv); strv = g_key_file_get_string_list (keyfile, "Context", "devices", NULL, NULL); if (strv != NULL && g_strv_contains ((const gchar *const *) strv, "all")) flags |= BZ_APP_PERMISSIONS_FLAGS_DEVICES; if (strv != NULL && g_strv_contains ((const gchar *const *) strv, "input")) flags |= BZ_APP_PERMISSIONS_FLAGS_INPUT_DEVICES; if (strv != NULL && (g_strv_contains ((const gchar *const *) strv, "shm") || g_strv_contains ((const gchar *const *) strv, "kvm"))) flags |= BZ_APP_PERMISSIONS_FLAGS_SYSTEM_DEVICES; g_strfreev (strv); strv = g_key_file_get_string_list (keyfile, "Context", "shared", NULL, NULL); if (strv != NULL && g_strv_contains ((const gchar *const *) strv, "network")) flags |= BZ_APP_PERMISSIONS_FLAGS_NETWORK; g_strfreev (strv); strv = g_key_file_get_string_list (keyfile, "Context", "filesystems", NULL, NULL); if (strv != NULL) { const struct { const gchar *key; BzAppPermissionsFlags perm; } filesystems_access[] = { { "home", BZ_APP_PERMISSIONS_FLAGS_HOME_FULL }, { "home:rw", BZ_APP_PERMISSIONS_FLAGS_HOME_FULL }, { "home:ro", BZ_APP_PERMISSIONS_FLAGS_HOME_READ }, { "~", BZ_APP_PERMISSIONS_FLAGS_HOME_FULL }, { "~:rw", BZ_APP_PERMISSIONS_FLAGS_HOME_FULL }, { "~:ro", BZ_APP_PERMISSIONS_FLAGS_HOME_READ }, { "host", BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL }, { "host:rw", BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL }, { "host:ro", BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ }, { "xdg-config/kdeglobals:ro", BZ_APP_PERMISSIONS_FLAGS_NONE }, { "xdg-download", BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_FULL }, { "xdg-download:rw", BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_FULL }, { "xdg-download:ro", BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_READ }, { "xdg-data/flatpak/overrides:create", BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX }, { "xdg-run/pipewire-0", BZ_APP_PERMISSIONS_FLAGS_SCREEN | BZ_APP_PERMISSIONS_FLAGS_AUDIO_DEVICES }, { "xdg-run/pipewire-0:rw", BZ_APP_PERMISSIONS_FLAGS_SCREEN | BZ_APP_PERMISSIONS_FLAGS_AUDIO_DEVICES }, { "xdg-run/pipewire-0:ro", BZ_APP_PERMISSIONS_FLAGS_SCREEN | BZ_APP_PERMISSIONS_FLAGS_AUDIO_DEVICES }, { "xdg-run/gvfsd", BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL }, }; guint filesystems_hits = 0; guint strv_len = g_strv_length (strv); for (guint i = 0; i < G_N_ELEMENTS (filesystems_access); i++) { guint index = get_strv_index ((const gchar *const *) strv, filesystems_access[i].key); if (index < strv_len) { flags |= filesystems_access[i].perm; filesystems_hits++; strv[index][0] = '\0'; } } if ((flags & BZ_APP_PERMISSIONS_FLAGS_HOME_FULL) != 0) flags = flags & ~BZ_APP_PERMISSIONS_FLAGS_HOME_READ; if ((flags & BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL) != 0) flags = flags & ~BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ; if ((flags & BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_FULL) != 0) flags = flags & ~BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_READ; if (strv_len > filesystems_hits) { const struct { const gchar *prefix; BzFilesystemPathType type; } filesystems_other[] = { { "/", BZ_FILESYSTEM_PATH_SYSTEM_ROOT }, { "home/", BZ_FILESYSTEM_PATH_HOME_SUBDIR }, { "~/", BZ_FILESYSTEM_PATH_HOME_SUBDIR }, { "host-os", BZ_FILESYSTEM_PATH_HOST_OS }, { "host-etc", BZ_FILESYSTEM_PATH_HOST_ETC }, { "xdg-desktop", BZ_FILESYSTEM_PATH_XDG_DESKTOP }, { "xdg-documents", BZ_FILESYSTEM_PATH_XDG_DOCUMENTS }, { "xdg-music", BZ_FILESYSTEM_PATH_XDG_MUSIC }, { "xdg-pictures", BZ_FILESYSTEM_PATH_XDG_PICTURES }, { "xdg-public-share", BZ_FILESYSTEM_PATH_XDG_PUBLIC_SHARE }, { "xdg-videos", BZ_FILESYSTEM_PATH_XDG_VIDEOS }, { "xdg-templates", BZ_FILESYSTEM_PATH_XDG_TEMPLATES }, { "xdg-cache", BZ_FILESYSTEM_PATH_XDG_CACHE }, { "xdg-config", BZ_FILESYSTEM_PATH_XDG_CONFIG }, { "xdg-data", BZ_FILESYSTEM_PATH_XDG_DATA }, { "xdg-run", BZ_FILESYSTEM_PATH_XDG_RUN } }; flags |= BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_OTHER; for (guint j = 0; strv[j]; j++) { gchar *perm = strv[j]; gboolean is_readonly = FALSE; gchar *colon = NULL; guint i = 0; const gchar *subpath = NULL; if (!perm[0]) continue; is_readonly = g_str_has_suffix (perm, ":ro"); colon = strrchr (perm, ':'); if (colon) *colon = '\0'; for (i = 0; i < G_N_ELEMENTS (filesystems_other); i++) { if (g_str_has_prefix (perm, filesystems_other[i].prefix)) { const gchar *slash = NULL; if (filesystems_other[i].type == BZ_FILESYSTEM_PATH_SYSTEM_ROOT) { if (perm[1] != '\0') subpath = perm + 1; else subpath = NULL; } else { slash = strchr (perm, '/'); if (slash && slash != perm) subpath = slash + 1; } if (is_readonly) bz_app_permissions_add_filesystem_read (permissions, filesystems_other[i].type, subpath); else bz_app_permissions_add_filesystem_full (permissions, filesystems_other[i].type, subpath); break; } } if (i == G_N_ELEMENTS (filesystems_other)) { if (is_readonly) bz_app_permissions_add_filesystem_read (permissions, BZ_FILESYSTEM_PATH_CUSTOM, perm); else bz_app_permissions_add_filesystem_full (permissions, BZ_FILESYSTEM_PATH_CUSTOM, perm); } } } } g_strfreev (strv); if (!(flags & (BZ_APP_PERMISSIONS_FLAGS_SYSTEM_BUS | BZ_APP_PERMISSIONS_FLAGS_SESSION_BUS))) { const struct { GBusType bus_type; const char *keyfile_group; BzAppPermissionsFlags unfiltered_flag; } bus_policy_types[] = { { G_BUS_TYPE_SESSION, "Session Bus Policy", BZ_APP_PERMISSIONS_FLAGS_SESSION_BUS }, { G_BUS_TYPE_SYSTEM, "System Bus Policy", BZ_APP_PERMISSIONS_FLAGS_SYSTEM_BUS }, }; if (app_id != NULL) { mpris_id = g_strconcat ("org.mpris.MediaPlayer2.", app_id, NULL); app_id_non_devel = g_str_has_suffix (app_id, ".Devel") ? g_strndup (app_id, strlen (app_id) - strlen (".Devel")) : NULL; mpris_id_non_devel = (app_id_non_devel != NULL) ? g_strconcat ("org.mpris.MediaPlayer2.", app_id_non_devel, NULL) : NULL; } for (size_t h = 0; h < G_N_ELEMENTS (bus_policy_types); h++) { g_auto (GStrv) bus_policies = NULL; if (flags & bus_policy_types[h].unfiltered_flag) continue; bus_policies = g_key_file_get_keys (keyfile, bus_policy_types[h].keyfile_group, NULL, NULL); for (size_t i = 0; bus_policies != NULL && bus_policies[i] != NULL; i++) { const struct { GBusType bus_type; const char *bus_name; gboolean is_prefix; BzBusPolicyPermission permission_is_at_least; BzAppPermissionsFlags flags; } bus_policy_permissions[] = { { G_BUS_TYPE_SESSION, "ca.desrt.dconf", FALSE, BZ_BUS_POLICY_PERMISSION_TALK, BZ_APP_PERMISSIONS_FLAGS_SETTINGS }, { G_BUS_TYPE_SESSION, "org.freedesktop.Flatpak", FALSE, BZ_BUS_POLICY_PERMISSION_TALK, BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX }, { G_BUS_TYPE_SESSION, "org.freedesktop.impl.portal.PermissionStore", FALSE, BZ_BUS_POLICY_PERMISSION_TALK, BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX }, { G_BUS_TYPE_SESSION, "org.gtk.vfs.", TRUE, BZ_BUS_POLICY_PERMISSION_TALK, BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL }, }; const char *bus_name_pattern = bus_policies[i]; g_autofree char *bus_policy_str = NULL; BzBusPolicyPermission bus_policy = BZ_BUS_POLICY_PERMISSION_UNKNOWN; size_t j = 0; bus_policy_str = g_key_file_get_string (keyfile, bus_policy_types[h].keyfile_group, bus_name_pattern, NULL); g_assert (bus_policy_str != NULL); if (g_str_equal (bus_policy_str, "none")) bus_policy = BZ_BUS_POLICY_PERMISSION_NONE; else if (g_str_equal (bus_policy_str, "see")) bus_policy = BZ_BUS_POLICY_PERMISSION_SEE; else if (g_str_equal (bus_policy_str, "talk")) bus_policy = BZ_BUS_POLICY_PERMISSION_TALK; else if (g_str_equal (bus_policy_str, "own")) bus_policy = BZ_BUS_POLICY_PERMISSION_OWN; else continue; if (app_id != NULL && bus_policy_types[h].bus_type == G_BUS_TYPE_SESSION && (g_str_equal (bus_name_pattern, app_id) || (g_str_has_prefix (bus_name_pattern, app_id) && bus_name_pattern[strlen (app_id)] == '.') || g_str_equal (bus_name_pattern, mpris_id) || g_str_equal (bus_name_pattern, "org.freedesktop.DBus") || g_str_has_prefix (bus_name_pattern, "org.freedesktop.portal."))) continue; if (app_id_non_devel != NULL && bus_policy_types[h].bus_type == G_BUS_TYPE_SESSION && (g_str_equal (bus_name_pattern, app_id_non_devel) || (g_str_has_prefix (bus_name_pattern, app_id_non_devel) && bus_name_pattern[strlen (app_id_non_devel)] == '.') || g_str_equal (bus_name_pattern, mpris_id_non_devel))) continue; for (j = 0; j < G_N_ELEMENTS (bus_policy_permissions); j++) { if (bus_policy_permissions[j].bus_type == bus_policy_types[h].bus_type && ((!bus_policy_permissions[j].is_prefix && g_str_equal (bus_name_pattern, bus_policy_permissions[j].bus_name)) || (bus_policy_permissions[j].is_prefix && g_str_has_prefix (bus_name_pattern, bus_policy_permissions[j].bus_name))) && bus_policy >= bus_policy_permissions[j].permission_is_at_least) { flags |= bus_policy_permissions[j].flags; break; } } if (j == G_N_ELEMENTS (bus_policy_permissions)) { flags |= BZ_APP_PERMISSIONS_FLAGS_BUS_POLICY_OTHER; bz_app_permissions_add_bus_policy (permissions, bus_policy_types[h].bus_type, bus_name_pattern, bus_policy); } } } } bz_app_permissions_set_flags (permissions, flags); bz_app_permissions_seal (permissions); return permissions; } void bz_app_permissions_serialize (BzAppPermissions *self, GVariantBuilder *builder) { GFlagsClass *flags_class = NULL; guint i = 0; g_return_if_fail (BZ_IS_APP_PERMISSIONS (self)); g_return_if_fail (builder != NULL); flags_class = g_type_class_ref (BZ_TYPE_APP_PERMISSIONS_FLAGS); if (self->flags != BZ_APP_PERMISSIONS_FLAGS_NONE) { g_autoptr (GVariantBuilder) sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (i = 0; i < flags_class->n_values; i++) { if (self->flags & flags_class->values[i].value) g_variant_builder_add (sub_builder, "s", flags_class->values[i].value_nick); } g_variant_builder_add (builder, "{sv}", "permissions-flags", g_variant_builder_end (sub_builder)); } g_type_class_unref (flags_class); if (self->filesystem_read != NULL && self->filesystem_read->len > 0) { GEnumClass *enum_class = NULL; g_autoptr (GVariantBuilder) sub_builder = NULL; enum_class = g_type_class_ref (BZ_TYPE_FILESYSTEM_PATH_TYPE); sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)")); for (i = 0; i < self->filesystem_read->len; i++) { const BzFilesystemPath *path = g_ptr_array_index (self->filesystem_read, i); GEnumValue *enum_value = g_enum_get_value (enum_class, path->type); g_variant_builder_add (sub_builder, "(ss)", enum_value->value_nick, path->subpath ? path->subpath : ""); } g_variant_builder_add (builder, "{sv}", "permissions-filesystem-read", g_variant_builder_end (sub_builder)); g_type_class_unref (enum_class); } if (self->filesystem_full != NULL && self->filesystem_full->len > 0) { GEnumClass *enum_class = NULL; g_autoptr (GVariantBuilder) sub_builder = NULL; enum_class = g_type_class_ref (BZ_TYPE_FILESYSTEM_PATH_TYPE); sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)")); for (i = 0; i < self->filesystem_full->len; i++) { const BzFilesystemPath *path = g_ptr_array_index (self->filesystem_full, i); GEnumValue *enum_value = g_enum_get_value (enum_class, path->type); g_variant_builder_add (sub_builder, "(ss)", enum_value->value_nick, path->subpath ? path->subpath : ""); } g_variant_builder_add (builder, "{sv}", "permissions-filesystem-full", g_variant_builder_end (sub_builder)); g_type_class_unref (enum_class); } if (self->bus_policies != NULL && self->bus_policies->len > 0) { GEnumClass *enum_class = NULL; g_autoptr (GVariantBuilder) sub_builder = NULL; enum_class = g_type_class_ref (BZ_TYPE_BUS_POLICY_PERMISSION); sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(iss)")); for (i = 0; i < self->bus_policies->len; i++) { BzBusPolicy *policy = g_ptr_array_index (self->bus_policies, i); GEnumValue *enum_value = g_enum_get_value (enum_class, policy->permission); g_variant_builder_add (sub_builder, "(iss)", (gint32) policy->bus_type, policy->bus_name, enum_value->value_nick); } g_variant_builder_add (builder, "{sv}", "permissions-bus-policies", g_variant_builder_end (sub_builder)); g_type_class_unref (enum_class); } } gboolean bz_app_permissions_deserialize (BzAppPermissions *self, GVariant *import, GError **error) { g_autoptr (GVariantIter) iter = NULL; g_return_val_if_fail (BZ_IS_APP_PERMISSIONS (self), FALSE); g_return_val_if_fail (import != NULL, FALSE); iter = g_variant_iter_new (import); for (;;) { g_autofree char *key = NULL; g_autoptr (GVariant) value = NULL; if (!g_variant_iter_next (iter, "{sv}", &key, &value)) break; if (g_strcmp0 (key, "permissions-flags") == 0) { GFlagsClass *flags_class = NULL; g_autoptr (GVariantIter) flags_iter = NULL; flags_class = g_type_class_ref (BZ_TYPE_APP_PERMISSIONS_FLAGS); flags_iter = g_variant_iter_new (value); self->flags = BZ_APP_PERMISSIONS_FLAGS_NONE; for (;;) { g_autofree char *flag_nick = NULL; if (!g_variant_iter_next (flags_iter, "s", &flag_nick)) break; for (guint i = 0; i < flags_class->n_values; i++) { if (g_str_equal (flag_nick, flags_class->values[i].value_nick)) { self->flags |= flags_class->values[i].value; break; } } } g_type_class_unref (flags_class); } else if (g_strcmp0 (key, "permissions-filesystem-read") == 0) { GEnumClass *enum_class = NULL; g_autoptr (GVariantIter) paths_iter = NULL; enum_class = g_type_class_ref (BZ_TYPE_FILESYSTEM_PATH_TYPE); if (self->filesystem_read == NULL) self->filesystem_read = g_ptr_array_new_with_free_func ((GDestroyNotify) bz_filesystem_path_free); paths_iter = g_variant_iter_new (value); for (;;) { g_autofree char *type_nick = NULL; g_autofree char *subpath = NULL; if (!g_variant_iter_next (paths_iter, "(ss)", &type_nick, &subpath)) break; for (guint i = 0; i < enum_class->n_values; i++) { if (g_str_equal (type_nick, enum_class->values[i].value_nick)) { g_ptr_array_add (self->filesystem_read, bz_filesystem_path_new (enum_class->values[i].value, subpath[0] ? subpath : NULL)); break; } } } g_type_class_unref (enum_class); } else if (g_strcmp0 (key, "permissions-filesystem-full") == 0) { GEnumClass *enum_class = NULL; g_autoptr (GVariantIter) paths_iter = NULL; enum_class = g_type_class_ref (BZ_TYPE_FILESYSTEM_PATH_TYPE); if (self->filesystem_full == NULL) self->filesystem_full = g_ptr_array_new_with_free_func ((GDestroyNotify) bz_filesystem_path_free); paths_iter = g_variant_iter_new (value); for (;;) { g_autofree char *type_nick = NULL; g_autofree char *subpath = NULL; if (!g_variant_iter_next (paths_iter, "(ss)", &type_nick, &subpath)) break; for (guint i = 0; i < enum_class->n_values; i++) { if (g_str_equal (type_nick, enum_class->values[i].value_nick)) { g_ptr_array_add (self->filesystem_full, bz_filesystem_path_new (enum_class->values[i].value, subpath[0] ? subpath : NULL)); break; } } } g_type_class_unref (enum_class); } else if (g_strcmp0 (key, "permissions-bus-policies") == 0) { GEnumClass *enum_class = NULL; g_autoptr (GVariantIter) policies_iter = NULL; enum_class = g_type_class_ref (BZ_TYPE_BUS_POLICY_PERMISSION); if (self->bus_policies == NULL) self->bus_policies = g_ptr_array_new_with_free_func ((GDestroyNotify) bz_bus_policy_free); policies_iter = g_variant_iter_new (value); for (;;) { gint32 bus_type_int = 0; g_autofree char *bus_name = NULL; g_autofree char *permission_nick = NULL; if (!g_variant_iter_next (policies_iter, "(iss)", &bus_type_int, &bus_name, &permission_nick)) break; for (guint i = 0; i < enum_class->n_values; i++) { if (g_str_equal (permission_nick, enum_class->values[i].value_nick)) { g_ptr_array_add (self->bus_policies, bz_bus_policy_new ((GBusType) bus_type_int, bus_name, enum_class->values[i].value)); break; } } } g_type_class_unref (enum_class); } } bz_app_permissions_seal (self); return TRUE; } static gint cmp_filesystem_path_pointers (gconstpointer item1, gconstpointer item2) { const BzFilesystemPath *const *pitem1 = item1; const BzFilesystemPath *const *pitem2 = item2; const BzFilesystemPath *path1 = *pitem1; const BzFilesystemPath *path2 = *pitem2; if (path1->type != path2->type) return path1->type - path2->type; return g_strcmp0 (path1->subpath, path2->subpath); } static int cmp_bus_policy_qsort (const void *item1, const void *item2) { const BzBusPolicy *const *pitem1 = item1; const BzBusPolicy *const *pitem2 = item2; const BzBusPolicy *policy1 = *pitem1; const BzBusPolicy *policy2 = *pitem2; if (policy1->bus_type != policy2->bus_type) return policy1->bus_type - policy2->bus_type; return strcmp (policy1->bus_name, policy2->bus_name); } static guint app_permissions_get_array_index (GPtrArray *array, BzFilesystemPathType type, const char *subpath) { if (array == NULL) return DOES_NOT_CONTAIN; for (guint i = 0; i < array->len; i++) { const BzFilesystemPath *path = g_ptr_array_index (array, i); if (path->type == type && g_strcmp0 (path->subpath, subpath) == 0) return i; } return DOES_NOT_CONTAIN; } static guint get_strv_index (const gchar *const *strv, const gchar *value) { guint ii; for (ii = 0; strv[ii]; ii++) { if (g_str_equal (strv[ii], value)) break; } return ii; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-permissions.h��������������������������������������������������0000664�0000000�0000000�00000014553�15240005042�0022050�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-app-permissions.h * * Copyright 2026 Alexander Vanhee * Copyright (C) 2022 Red Hat <www.redhat.com> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gio/gio.h> #include <glib-object.h> G_BEGIN_DECLS #define BZ_TYPE_APP_PERMISSIONS (bz_app_permissions_get_type ()) G_DECLARE_FINAL_TYPE (BzAppPermissions, bz_app_permissions, BZ, APP_PERMISSIONS, GObject) typedef enum { BZ_APP_PERMISSIONS_FLAGS_NONE = 0, BZ_APP_PERMISSIONS_FLAGS_NETWORK = 1 << 0, BZ_APP_PERMISSIONS_FLAGS_SYSTEM_BUS = 1 << 1, BZ_APP_PERMISSIONS_FLAGS_SESSION_BUS = 1 << 2, BZ_APP_PERMISSIONS_FLAGS_DEVICES = 1 << 3, BZ_APP_PERMISSIONS_FLAGS_HOME_FULL = 1 << 4, BZ_APP_PERMISSIONS_FLAGS_HOME_READ = 1 << 5, BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL = 1 << 6, BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ = 1 << 7, BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_FULL = 1 << 8, BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_READ = 1 << 9, BZ_APP_PERMISSIONS_FLAGS_SETTINGS = 1 << 10, BZ_APP_PERMISSIONS_FLAGS_X11 = 1 << 11, BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX = 1 << 12, BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_OTHER = 1 << 13, BZ_APP_PERMISSIONS_FLAGS_BUS_POLICY_OTHER = 1 << 14, BZ_APP_PERMISSIONS_FLAGS_AUDIO_DEVICES = 1 << 15, BZ_APP_PERMISSIONS_FLAGS_INPUT_DEVICES = 1 << 16, BZ_APP_PERMISSIONS_FLAGS_SYSTEM_DEVICES = 1 << 17, BZ_APP_PERMISSIONS_FLAGS_SCREEN = 1 << 18, } BzAppPermissionsFlags; #define BZ_TYPE_APP_PERMISSIONS_FLAGS (bz_app_permissions_flags_get_type ()) typedef enum { BZ_FILESYSTEM_PATH_SYSTEM_ROOT, BZ_FILESYSTEM_PATH_HOME_SUBDIR, BZ_FILESYSTEM_PATH_HOST_OS, BZ_FILESYSTEM_PATH_HOST_ETC, BZ_FILESYSTEM_PATH_XDG_DESKTOP, BZ_FILESYSTEM_PATH_XDG_DOCUMENTS, BZ_FILESYSTEM_PATH_XDG_MUSIC, BZ_FILESYSTEM_PATH_XDG_PICTURES, BZ_FILESYSTEM_PATH_XDG_PUBLIC_SHARE, BZ_FILESYSTEM_PATH_XDG_VIDEOS, BZ_FILESYSTEM_PATH_XDG_TEMPLATES, BZ_FILESYSTEM_PATH_XDG_CACHE, BZ_FILESYSTEM_PATH_XDG_CONFIG, BZ_FILESYSTEM_PATH_XDG_DATA, BZ_FILESYSTEM_PATH_XDG_RUN, BZ_FILESYSTEM_PATH_CUSTOM, } BzFilesystemPathType; #define BZ_TYPE_FILESYSTEM_PATH_TYPE (bz_filesystem_path_type_get_type ()) typedef enum { BZ_BUS_POLICY_PERMISSION_UNKNOWN = 0, BZ_BUS_POLICY_PERMISSION_NONE, BZ_BUS_POLICY_PERMISSION_SEE, BZ_BUS_POLICY_PERMISSION_TALK, BZ_BUS_POLICY_PERMISSION_OWN, } BzBusPolicyPermission; #define BZ_TYPE_BUS_POLICY_PERMISSION (bz_bus_policy_permission_get_type ()) typedef struct { BzFilesystemPathType type; char *subpath; } BzFilesystemPath; typedef struct { GBusType bus_type; char *bus_name; BzBusPolicyPermission permission; } BzBusPolicy; GType bz_app_permissions_flags_get_type (void) G_GNUC_CONST; GType bz_safety_rating_get_type (void) G_GNUC_CONST; GType bz_filesystem_path_type_get_type (void) G_GNUC_CONST; GType bz_bus_policy_permission_get_type (void) G_GNUC_CONST; BzFilesystemPath * bz_filesystem_path_new (BzFilesystemPathType type, const char *subpath); void bz_filesystem_path_free (BzFilesystemPath *self); char * bz_filesystem_path_to_display_string (const BzFilesystemPath *path); const char * bz_filesystem_path_to_icon_name (const BzFilesystemPath *path); BzBusPolicy * bz_bus_policy_new (GBusType bus_type, const char *bus_name, BzBusPolicyPermission permission); void bz_bus_policy_free (BzBusPolicy *self); G_DEFINE_AUTOPTR_CLEANUP_FUNC (BzFilesystemPath, bz_filesystem_path_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC (BzBusPolicy, bz_bus_policy_free) BzAppPermissions * bz_app_permissions_new (void); BzAppPermissions * bz_app_permissions_new_from_metadata (GKeyFile *keyfile, GError **error); void bz_app_permissions_seal (BzAppPermissions *self); gboolean bz_app_permissions_is_sealed (BzAppPermissions *self); gboolean bz_app_permissions_is_empty (BzAppPermissions *self); void bz_app_permissions_set_flags (BzAppPermissions *self, BzAppPermissionsFlags flags); BzAppPermissionsFlags bz_app_permissions_get_flags (BzAppPermissions *self); void bz_app_permissions_add_flag (BzAppPermissions *self, BzAppPermissionsFlags flags); void bz_app_permissions_remove_flag (BzAppPermissions *self, BzAppPermissionsFlags flags); void bz_app_permissions_add_filesystem_read (BzAppPermissions *self, BzFilesystemPathType type, const char *subpath); const GPtrArray * bz_app_permissions_get_filesystem_read (BzAppPermissions *self); void bz_app_permissions_add_filesystem_full (BzAppPermissions *self, BzFilesystemPathType type, const char *subpath); const GPtrArray * bz_app_permissions_get_filesystem_full (BzAppPermissions *self); void bz_app_permissions_add_bus_policy (BzAppPermissions *self, GBusType bus_type, const char *bus_name, BzBusPolicyPermission permission); const BzBusPolicy *const * bz_app_permissions_get_bus_policies (BzAppPermissions *self, size_t *out_n_bus_policies); void bz_app_permissions_serialize (BzAppPermissions *self, GVariantBuilder *builder); gboolean bz_app_permissions_deserialize (BzAppPermissions *self, GVariant *import, GError **error); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-size-dialog.blp������������������������������������������������0000664�0000000�0000000�00000017641�15240005042�0022233�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzAppSizeDialog: Adw.Bin { child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: ScrolledWindow { propagate-natural-height: true; child: Adw.Clamp { maximum-size: 600; child: Box { orientation: vertical; margin-top: 6; margin-bottom: 24; margin-start: 24; margin-end: 24; spacing: 15; Box { orientation: vertical; margin-bottom: 9; $BzLozenge { title: _("Download Size"); label: bind $format_size( template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.size as <uint64>, true ) as <string>; importance: neutral; visible: bind $is_zero(template.group as <$BzEntryGroup>.removable) as <bool>; } $BzLozenge { title: _("Installed Size"); label: bind $format_size( template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.installed-size as <uint64>, true ) as <string>; importance: neutral; visible: bind $invert_boolean($is_zero(template.group as <$BzEntryGroup>.removable) as <bool>) as <bool>; } } Adw.PreferencesGroup { Adw.ActionRow { [prefix] Label { label: bind $format_size( template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.size as <uint64>, true ) as <string>; use-markup: true; valign: center; width-request: 90; margin-top: 8; margin-bottom: 8; styles [ "circular-lozenge", "title-4", "grey", ] } title: _("Download Size"); subtitle: _("Amount to download from the internet"); } Adw.ActionRow { [prefix] Label { label: bind $format_size( template .group as <$BzEntryGroup> .ui-entry as <$BzResult> .object as <$BzEntry> .installed-size as <uint64>, false ) as <string>; use-markup: true; valign: center; width-request: 90; margin-top: 8; margin-bottom: 8; styles [ "circular-lozenge", "title-4", "grey", ] } title: _("Installed Size"); subtitle: _("Size on Disk"); } Adw.ActionRow runtime_row { visible: bind try { $invert_boolean( $is_null( template .group as <$BzEntryGroup> .ui-entry as <$BzResult> .object as <$BzFlatpakEntry> .runtime as <$BzResult> .object ) as <bool> ) as <bool>, false }; [prefix] Label { label: bind $format_size( $choose_uint64( template .group as <$BzEntryGroup> .ui-entry as <$BzResult> .object as <$BzFlatpakEntry> .runtime as <$BzResult> .object as <$BzEntry> .installed, template .group as <$BzEntryGroup> .ui-entry as <$BzResult> .object as <$BzFlatpakEntry> .runtime as <$BzResult> .object as <$BzEntry> .installed-size as <uint64>, template .group as <$BzEntryGroup> .ui-entry as <$BzResult> .object as <$BzFlatpakEntry> .runtime as <$BzResult> .object as <$BzEntry> .size as <uint64> ) as <uint64>, false ) as <string>; use-markup: true; valign: center; width-request: 90; margin-top: 8; margin-bottom: 8; styles [ "circular-lozenge", "title-4", "grey", ] } title: bind $get_runtime_size_title( template .group as <$BzEntryGroup> .ui-entry as <$BzResult> .object as <$BzFlatpakEntry> .runtime as <$BzResult> .object as <$BzEntry> .installed ) as <string>; subtitle: bind template .group as <$BzEntryGroup> .ui-entry as <$BzResult> .object as <$BzFlatpakEntry> .runtime as <$BzResult> .object as <$BzEntry> .title; } } Adw.PreferencesGroup { visible: bind $invert_boolean( $is_zero(template.group as <$BzEntryGroup>.user-data-size) as <bool> ) as <bool>; Adw.ActionRow { [prefix] Label { label: bind $format_size(template.group as <$BzEntryGroup>.user-data-size, false) as <string>; use-markup: true; valign: center; width-request: 90; margin-top: 8; margin-bottom: 8; styles [ "circular-lozenge", "title-4", "grey", ] } [suffix] Button { has-tooltip: true; tooltip-text: _("Open user data folder"); icon-name: "folder-open-symbolic"; clicked => $open_user_data_folder_cb(); valign: center; styles [ "flat", ] } title: _("Your User Data"); subtitle: _("Caches, settings, and other app data"); } Adw.ActionRow { [prefix] Label { label: bind $format_size(template.group as <$BzEntryGroup>.cache-size, false) as <string>; use-markup: true; valign: center; width-request: 90; margin-top: 8; margin-bottom: 8; styles [ "circular-lozenge", "title-4", "grey", ] } title: _("Cache"); subtitle: _("Temporary cached data"); } } Adw.PreferencesGroup { margin-top: 4; visible: bind $logical_and( $invert_boolean($is_zero(template.group as <$BzEntryGroup>.user-data-size) as <bool>) as <bool>, $invert_boolean($is_app_id(template.group as <$BzEntryGroup>.id) as <bool>) as <bool> ) as <bool>; Adw.ButtonRow { title: _("Clear Cache"); activated => $delete_cache_cb(); sensitive: bind $invert_boolean( $is_zero(template.group as <$BzEntryGroup>.cache-size) as <bool> ) as <bool>; styles [ "destructive-action", ] } } }; }; }; }; } �����������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-size-dialog.c��������������������������������������������������0000664�0000000�0000000�00000013352�15240005042�0021673�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-app-size-dialog.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-app-size-dialog.h" #include "bz-entry-group.h" #include "io.h" #include "bz-lozenge.h" #include "template-callbacks.h" #include <glib/gi18n.h> struct _BzAppSizeDialog { AdwBin parent_instance; BzEntryGroup *group; }; G_DEFINE_FINAL_TYPE (BzAppSizeDialog, bz_app_size_dialog, ADW_TYPE_BIN) enum { PROP_0, PROP_GROUP, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_app_size_dialog_dispose (GObject *object) { BzAppSizeDialog *self = BZ_APP_SIZE_DIALOG (object); g_clear_object (&self->group); G_OBJECT_CLASS (bz_app_size_dialog_parent_class)->dispose (object); } static void bz_app_size_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAppSizeDialog *self = BZ_APP_SIZE_DIALOG (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, self->group); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_app_size_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAppSizeDialog *self = BZ_APP_SIZE_DIALOG (object); switch (prop_id) { case PROP_GROUP: g_clear_object (&self->group); self->group = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static char * get_runtime_size_title (gpointer object, gboolean runtime_installed) { return g_strdup (runtime_installed ? _ ("Installed Runtime Size") : _ ("Runtime Download Size")); } static char * format_size (gpointer object, guint64 value, gboolean use_fallback) { g_autofree char *size_str = NULL; char *space = NULL; if (value == 0 && use_fallback) return g_strdup (_("N/A")); size_str = g_format_size (value); space = g_strrstr (size_str, "\xC2\xA0"); if (space != NULL) { *space = '\0'; return g_strdup_printf ("%s <span font_size='x-small'>%s</span>", size_str, space + 2); } return g_strdup (size_str); } static gboolean is_app_id (gpointer object, const char *id) { return g_strcmp0 (id, g_application_get_application_id (g_application_get_default ())) == 0; } static void open_user_data_folder_cb (GtkWidget *widget, BzAppSizeDialog *self) { gtk_widget_activate_action (GTK_WIDGET (gtk_widget_get_root (widget)), "window.open-user-data-folder", "s", bz_entry_group_get_id (self->group)); } static void delete_cache_cb (GtkWidget *widget, BzAppSizeDialog *self) { if (self->group == NULL) return; dex_future_disown (bz_entry_group_reap_user_cache (self->group)); } static void bz_app_size_dialog_class_init (BzAppSizeDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_app_size_dialog_dispose; object_class->get_property = bz_app_size_dialog_get_property; object_class->set_property = bz_app_size_dialog_set_property; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LOZENGE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-app-size-dialog.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_callback (widget_class, is_app_id); gtk_widget_class_bind_template_callback (widget_class, format_size); gtk_widget_class_bind_template_callback (widget_class, get_runtime_size_title); gtk_widget_class_bind_template_callback (widget_class, open_user_data_folder_cb); gtk_widget_class_bind_template_callback (widget_class, delete_cache_cb); } static void bz_app_size_dialog_init (BzAppSizeDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } AdwDialog * bz_app_size_dialog_new (BzEntryGroup *group) { BzAppSizeDialog *widget = NULL; AdwDialog *dialog = NULL; widget = g_object_new (BZ_TYPE_APP_SIZE_DIALOG, "group", group, NULL); dialog = adw_dialog_new (); adw_dialog_set_content_width (dialog, 600); adw_dialog_set_title (dialog, _("Storage")); adw_dialog_set_child (dialog, GTK_WIDGET (widget)); return dialog; } AdwNavigationPage * bz_app_size_page_new (BzEntryGroup *group) { BzAppSizeDialog *widget = NULL; AdwNavigationPage *page = NULL; widget = g_object_new (BZ_TYPE_APP_SIZE_DIALOG, "group", group, NULL); page = adw_navigation_page_new (GTK_WIDGET (widget), _ ("Storage")); adw_navigation_page_set_tag (page, "app-size"); return page; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-size-dialog.h��������������������������������������������������0000664�0000000�0000000�00000002176�15240005042�0021702�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-app-size-dialog.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_APP_SIZE_DIALOG (bz_app_size_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzAppSizeDialog, bz_app_size_dialog, BZ, APP_SIZE_DIALOG, AdwBin) AdwDialog * bz_app_size_dialog_new (BzEntryGroup *group); AdwNavigationPage * bz_app_size_page_new (BzEntryGroup *group); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-tile.blp�������������������������������������������������������0000664�0000000�0000000�00000004360�15240005042�0020753�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzAppTile: Button { styles [ "card", "app-tile", ] child: Overlay { Box { margin-start: 12; margin-end: 12; margin-top: 12; margin-bottom: 12; orientation: horizontal; spacing: 15; can-focus: false; Image { pixel-size: 64; paintable: bind try {template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable, template.icon-override}; styles ["icon-dropshadow"] } Box { valign: center; hexpand: true; orientation: vertical; spacing: 4; Box { orientation: horizontal; spacing: 6; Label { css-name: "app-tile-title"; styles [ "heading", ] xalign: 0.0; ellipsize: end; label: bind template.group as <$BzEntryGroup>.title; } Image { css-name: "app-tile-verified-check"; styles [ "verified", ] visible: bind template.group as <$BzEntryGroup>.is-verified; icon-name: "verified-checkmark-symbolic"; pixel-size: 14; accessibility { label: _("Verified"); } } } Label { css-name: "app-tile-description"; xalign: 0.0; yalign: 0.0; wrap: true; ellipsize: end; vexpand: true; lines: bind $description_line_amount($is_zero(template.group as <$BzEntryGroup>.removable) as <bool>) as <int>; single-line-mode: true; label: bind template.group as <$BzEntryGroup>.description; } Box { css-name: "app-tile-installed-pill"; halign: start; spacing: 4; visible: bind $invert_boolean($is_zero(template.group as <$BzEntryGroup>.removable) as <bool>) as <bool>; styles ["small-pill", "installed-pill"] Image { icon-name: "app-installed-symbolic"; pixel-size: 12; } Label { // Translators: As in 'The app is installed'. label: _("Installed"); } } } } }; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-tile.c���������������������������������������������������������0000664�0000000�0000000�00000021053�15240005042�0020416�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-app-tile.c * * Copyright 2025 Adam Masciola * * Layout manager adapted from GNOME Softwares GsSummaryTileLayout * * Copyright (C) 2013 Matthias Clasen <mclasen@redhat.com> * Copyright (C) 2019 Richard Hughes <richard@hughsie.com> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-app-tile.h" #define BZ_APP_TILE_PREFERRED_WIDTH 270 #define BZ_TYPE_APP_TILE_LAYOUT (bz_app_tile_layout_get_type ()) G_DECLARE_FINAL_TYPE (BzAppTileLayout, bz_app_tile_layout, BZ, APP_TILE_LAYOUT, GtkLayoutManager) struct _BzAppTileLayout { GtkLayoutManager parent_instance; }; G_DEFINE_FINAL_TYPE (BzAppTileLayout, bz_app_tile_layout, GTK_TYPE_LAYOUT_MANAGER) static void bz_app_tile_layout_measure (GtkLayoutManager *layout_manager, GtkWidget *widget, GtkOrientation orientation, gint for_size, gint *minimum, gint *natural, gint *minimum_baseline, gint *natural_baseline) { GtkWidget *child = NULL; gint min = 0; gint nat = 0; for (child = gtk_widget_get_first_child (widget); child != NULL; child = gtk_widget_get_next_sibling (child)) { gint child_min_baseline = -1; gint child_nat_baseline = -1; gint child_min = 0; gint child_nat = 0; if (!gtk_widget_should_layout (child)) continue; gtk_widget_measure (child, orientation, for_size, &child_min, &child_nat, &child_min_baseline, &child_nat_baseline); min = MAX (min, child_min); nat = MAX (nat, child_nat); if (child_min_baseline > -1) *minimum_baseline = MAX (*minimum_baseline, child_min_baseline); if (child_nat_baseline > -1) *natural_baseline = MAX (*natural_baseline, child_nat_baseline); } *minimum = min; *natural = nat; if (orientation == GTK_ORIENTATION_HORIZONTAL) *natural = MAX (*minimum, BZ_APP_TILE_PREFERRED_WIDTH); } static void bz_app_tile_layout_allocate (GtkLayoutManager *layout_manager, GtkWidget *widget, gint width, gint height, gint baseline) { GtkWidget *child = NULL; for (child = gtk_widget_get_first_child (widget); child != NULL; child = gtk_widget_get_next_sibling (child)) { if (child && gtk_widget_should_layout (child)) gtk_widget_allocate (child, width, height, baseline, NULL); } } static void bz_app_tile_layout_class_init (BzAppTileLayoutClass *klass) { GtkLayoutManagerClass *layout_manager_class = GTK_LAYOUT_MANAGER_CLASS (klass); layout_manager_class->measure = bz_app_tile_layout_measure; layout_manager_class->allocate = bz_app_tile_layout_allocate; } static void bz_app_tile_layout_init (BzAppTileLayout *self) { } struct _BzAppTile { GtkButton parent_instance; BzEntryGroup *group; GdkPaintable *icon_override; }; G_DEFINE_FINAL_TYPE (BzAppTile, bz_app_tile, GTK_TYPE_BUTTON); enum { PROP_0, PROP_GROUP, PROP_ICON_OVERRIDE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_app_tile_dispose (GObject *object) { BzAppTile *self = BZ_APP_TILE (object); g_clear_object (&self->group); g_clear_object (&self->icon_override); G_OBJECT_CLASS (bz_app_tile_parent_class)->dispose (object); } static void bz_app_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAppTile *self = BZ_APP_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_app_tile_get_group (self)); break; case PROP_ICON_OVERRIDE: g_value_set_object (value, bz_app_tile_get_icon_override (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_app_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAppTile *self = BZ_APP_TILE (object); switch (prop_id) { case PROP_GROUP: bz_app_tile_set_group (self, g_value_get_object (value)); break; case PROP_ICON_OVERRIDE: bz_app_tile_set_icon_override (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_zero (gpointer object, int value) { return value == 0; } static gboolean description_line_amount (gpointer object, bool value) { return value ? 2 : 1; } static void bz_app_tile_class_init (BzAppTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_app_tile_set_property; object_class->get_property = bz_app_tile_get_property; object_class->dispose = bz_app_tile_dispose; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ICON_OVERRIDE] = g_param_spec_object ( "icon-override", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-app-tile.ui"); gtk_widget_class_set_layout_manager_type (widget_class, BZ_TYPE_APP_TILE_LAYOUT); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, description_line_amount); } static void bz_app_tile_init (BzAppTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_app_tile_new (void) { return g_object_new (BZ_TYPE_APP_TILE, NULL); } BzEntryGroup * bz_app_tile_get_group (BzAppTile *self) { g_return_val_if_fail (BZ_IS_APP_TILE (self), NULL); return self->group; } void bz_app_tile_set_group (BzAppTile *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_APP_TILE (self)); g_clear_object (&self->group); if (group != NULL) self->group = g_object_ref (group); if (group != NULL) { gtk_actionable_set_action_target (GTK_ACTIONABLE (self), "s", bz_entry_group_get_id (group)); gtk_actionable_set_action_name (GTK_ACTIONABLE (self), "window.show-group"); } else gtk_actionable_set_action_name (GTK_ACTIONABLE (self), NULL); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } GdkPaintable * bz_app_tile_get_icon_override (BzAppTile *self) { g_return_val_if_fail (BZ_IS_APP_TILE (self), NULL); return self->icon_override; } void bz_app_tile_set_icon_override (BzAppTile *self, GdkPaintable *icon_override) { g_return_if_fail (BZ_IS_APP_TILE (self)); g_clear_object (&self->icon_override); if (icon_override != NULL) self->icon_override = g_object_ref (icon_override); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ICON_OVERRIDE]); } /* End of bz-app-tile.c */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-app-tile.h���������������������������������������������������������0000664�0000000�0000000�00000002531�15240005042�0020423�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-app-tile.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "bz-entry-group.h" G_BEGIN_DECLS #define BZ_TYPE_APP_TILE (bz_app_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzAppTile, bz_app_tile, BZ, APP_TILE, GtkButton) GtkWidget * bz_app_tile_new (void); BzEntryGroup * bz_app_tile_get_group (BzAppTile *self); void bz_app_tile_set_group (BzAppTile *self, BzEntryGroup *group); GdkPaintable * bz_app_tile_get_icon_override (BzAppTile *self); void bz_app_tile_set_icon_override (BzAppTile *self, GdkPaintable *icon_override); G_END_DECLS /* End of bz-app-tile.h */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-application-map-factory.c������������������������������������������0000664�0000000�0000000�00000007657�15240005042�0023444�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-application-map-factory.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-application-map-factory.h" #include "util.h" struct _BzApplicationMapFactory { GObject parent_instance; GtkMapListModelMapFunc func; gpointer user_data; GDestroyNotify ref_user_data; GDestroyNotify unref_user_data; GtkFilter *filter; }; G_DEFINE_FINAL_TYPE (BzApplicationMapFactory, bz_application_map_factory, G_TYPE_OBJECT); static void bz_application_map_factory_dispose (GObject *object) { BzApplicationMapFactory *self = BZ_APPLICATION_MAP_FACTORY (object); g_clear_object (&self->filter); if (self->unref_user_data != NULL) g_clear_pointer (&self->user_data, self->unref_user_data); G_OBJECT_CLASS (bz_application_map_factory_parent_class)->dispose (object); } static void bz_application_map_factory_class_init (BzApplicationMapFactoryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_application_map_factory_dispose; } static void bz_application_map_factory_init (BzApplicationMapFactory *self) { } BzApplicationMapFactory * bz_application_map_factory_new (GtkMapListModelMapFunc func, gpointer user_data, GDestroyNotify ref_user_data, GDestroyNotify unref_user_data, GtkFilter *filter) { BzApplicationMapFactory *self = NULL; g_return_val_if_fail (func != NULL, NULL); g_return_val_if_fail (filter == NULL || GTK_IS_FILTER (filter), NULL); self = g_object_new (BZ_TYPE_APPLICATION_MAP_FACTORY, NULL); self->func = func; self->user_data = user_data; self->ref_user_data = ref_user_data; self->unref_user_data = unref_user_data; self->filter = bz_maybe_ref (filter, g_object_ref_sink); return self; } GListModel * bz_application_map_factory_generate (BzApplicationMapFactory *self, GListModel *model) { g_autoptr (GListModel) backing = NULL; GtkMapListModel *map_model = NULL; g_return_val_if_fail (BZ_IS_APPLICATION_MAP_FACTORY (self), NULL); g_return_val_if_fail (G_IS_LIST_MODEL (model), NULL); if (self->filter != NULL) { GtkFilterListModel *filter_model = NULL; filter_model = gtk_filter_list_model_new ( g_object_ref (model), g_object_ref (self->filter)); backing = G_LIST_MODEL (filter_model); } else backing = g_object_ref (model); if (self->ref_user_data != NULL && self->unref_user_data != NULL) self->ref_user_data (self->user_data); map_model = gtk_map_list_model_new ( g_steal_pointer (&backing), self->func, self->user_data, self->ref_user_data != NULL ? self->unref_user_data : NULL); return G_LIST_MODEL (map_model); } gpointer bz_application_map_factory_convert_one (BzApplicationMapFactory *self, gpointer item) { g_return_val_if_fail (BZ_IS_APPLICATION_MAP_FACTORY (self), NULL); g_return_val_if_fail (item != NULL, NULL); return self->func (item, self->user_data); } /* End of bz-application-map-factory.c */ ���������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-application-map-factory.h������������������������������������������0000664�0000000�0000000�00000003310�15240005042�0023427�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-application-map-factory.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_APPLICATION_MAP_FACTORY (bz_application_map_factory_get_type ()) G_DECLARE_FINAL_TYPE (BzApplicationMapFactory, bz_application_map_factory, BZ, APPLICATION_MAP_FACTORY, GObject) BzApplicationMapFactory * bz_application_map_factory_new (GtkMapListModelMapFunc func, gpointer user_data, GDestroyNotify ref_user_data, GDestroyNotify unref_user_data, GtkFilter *filter); GListModel * bz_application_map_factory_generate (BzApplicationMapFactory *self, GListModel *model); gpointer bz_application_map_factory_convert_one (BzApplicationMapFactory *self, gpointer item); G_END_DECLS /* End of bz-application-map-factory.h */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-application.c������������������������������������������������������0000664�0000000�0000000�00000440263�15240005042�0021216�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-application.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::CORE" #define BAZAAR_MODULE "core" #define MAX_IDS_PER_BLOCKLIST 2048 #define CACHE_ENUM_BATCH_SIZE 64 #define MIN_STARTUP_REFRESH_INTERVAL_SECONDS (3 * 60 * 60) #include "config.h" #include <glib/gi18n.h> #include <malloc.h> #include "bz-application-map-factory.h" #include "bz-application.h" #include "bz-appstream-parser.h" #include "bz-auth-state.h" #include "bz-backend-notification.h" #include "bz-bundle-install-dialog.h" #include "bz-content-provider.h" #include "bz-donations-dialog.h" #include "bz-download-worker.h" #include "bz-entry-cache-manager.h" #include "bz-entry-group.h" #include "bz-favorites-page.h" #include "bz-flathub-state.h" #include "bz-flatpak-bundle-result.h" #include "bz-flatpak-entry.h" #include "bz-flatpak-instance.h" #include "bz-hash-table-object.h" #include "bz-inspector.h" #include "bz-internal-config.h" #include "bz-login-page.h" #include "bz-malcontent-service.h" #include "bz-metainfo-preview.h" #include "bz-newline-parser.h" #include "bz-parser.h" #include "bz-preferences-dialog.h" #include "bz-result.h" #include "bz-root-blocklist.h" #include "bz-root-curated-config.h" #include "bz-serializable.h" #include "bz-state-info.h" #include "bz-transaction-manager.h" #include "bz-window.h" #include "bz-yaml-parser.h" #include "dex-utils.h" #include "env.h" #include "error.h" #include "io.h" #include "progress-bar-designs/common.h" #include "search-index-write.h" #include "util.h" struct _BzApplication { AdwApplication parent_instance; BzApplicationMapFactory *application_factory; BzApplicationMapFactory *entry_factory; BzContentProvider *blocklists_provider; BzContentProvider *curated_provider; BzContentProvider *txt_blocklists_provider; BzEntryCacheManager *cache; BzFlathubState *flathub; BzFlathubState *tmp_flathub; BzFlatpakInstance *flatpak; BzInternalConfig *internal_config; BzMainConfig *config; BzMalcontentService *malcontent; BzNewlineParser *txt_blocklist_parser; BzSearchEngine *search_engine; BzStateInfo *state; BzTransactionManager *transactions; BzYamlParser *blocklist_parser; BzYamlParser *curated_parser; DexChannel *flatpak_notifs; DexFuture *notif_watch; DexFuture *sync; DexPromise *first_window_opened; DexPromise *ready_to_open_files; GHashTable *eol_runtimes; GHashTable *ids_to_groups; GHashTable *ignore_eol_set; GHashTable *installed_set; GHashTable *sys_name_to_addons; GHashTable *sys_ref_to_addon_group_ids; GHashTable *usr_name_to_addons; GHashTable *usr_ref_to_addon_group_ids; GListStore *groups; GListStore *installed_apps; GListStore *search_biases_backing; GNetworkMonitor *network; GPtrArray *blocklist_regexes; GPtrArray *txt_blocked_id_sets; GSettings *settings; GTimer *init_timer; GWeakRef main_window; GtkCustomFilter *appid_filter; GtkCustomFilter *group_filter; GtkFilterListModel *group_filter_model; GtkFlattenListModel *search_biases; GtkMapListModel *blocklists_to_files; GtkMapListModel *curated_configs_to_files; GtkMapListModel *txt_blocklists_to_files; GtkStringList *blocklists; GtkStringList *curated_configs; GtkStringList *txt_blocklists; gboolean flathub_remote_initialized; gboolean had_cache_on_init; gboolean running; guint periodic_timeout_source; int n_entries_incoming; int n_remotes_syncing; }; G_DEFINE_FINAL_TYPE (BzApplication, bz_application, ADW_TYPE_APPLICATION) BZ_DEFINE_DATA ( blocklist_regex, BlocklistRegex, { int priority; GRegex *block; GRegex *allow; }, BZ_RELEASE_DATA (block, g_regex_unref); BZ_RELEASE_DATA (allow, g_regex_unref)) static DexFuture * init_fiber (BzWeakRef *wr); static DexFuture * enumerate_disk_groups_fiber (BzWeakRef *wr); static DexFuture * enumerate_disk_io_fiber (BzEntryCacheManager *cache); static DexFuture * enumerate_disk_entries_fiber (BzWeakRef *wr); static DexFuture * check_for_updates_fiber (BzWeakRef *wr); static DexFuture * cache_flathub_fiber (BzWeakRef *wr); static DexFuture * cache_groups_fiber (BzWeakRef *wr); static DexFuture * respond_to_flatpak_fiber (BzWeakRef *wr, BzBackendNotification *notif); static DexFuture * open_appstream_fiber (BzWeakRef *wr, const char *id); static DexFuture * open_flatpakref_fiber (BzWeakRef *wr, GFile *file); static DexFuture * open_metainfo_fiber (BzWeakRef *wr, GFile *file); static void open_metainfo_take (BzApplication *self, GFile *file); static DexFuture * backend_sync_finally (DexFuture *future, BzWeakRef *wr); static DexFuture * backend_sync_save_groups_finally (DexFuture *future, BzWeakRef *wr); static DexFuture * init_fiber_finally (DexFuture *future, BzWeakRef *wr); static DexFuture * init_sync_finally (DexFuture *future, BzWeakRef *wr); static DexFuture * flathub_update_finally (DexFuture *future, BzWeakRef *wr); static DexFuture * cache_write_back_finally (DexFuture *future, BzWeakRef *wr, GPtrArray *notify_groups, gboolean update_filters); static DexFuture * sync_finally (DexFuture *future, BzWeakRef *wr); static DexFuture * watch_backend_notifs_then_loop_cb (DexFuture *future, BzWeakRef *wr); static BzEntryGroup * ensure_group_and_add (BzApplication *self, const char *id, BzEntry *entry, BzEntry *eol_runtime, gboolean ignore_eol, gboolean installed); static void fiber_replace_entry (BzApplication *self, BzEntry *entry); static void fiber_check_for_updates (BzApplication *self); static GFile * fiber_dup_cache_file (const char *name, char **path_out, GError **error); static gboolean periodic_timeout_cb (BzApplication *self); static gboolean scheduled_timeout_cb (BzWeakRef *wr); static void network_status_changed (BzApplication *self, GParamSpec *pspec, GNetworkMonitor *network); static void disable_blocklists_changed (BzApplication *self, GParamSpec *pspec, BzStateInfo *state); static void transactions_active_changed (BzApplication *self, GParamSpec *pspec, BzTransactionManager *transactions); static void show_hide_app_setting_changed (BzApplication *self, const char *key, GSettings *settings); static gboolean window_close_request (BzApplication *self, GtkWidget *window); static void blocklists_changed (BzApplication *self, guint position, guint removed, guint added, GListModel *model); static void txt_blocklists_changed (BzApplication *self, guint position, guint removed, guint added, GListModel *model); static void init_service_struct (BzApplication *self, GtkStringList *blocklists, GtkStringList *txt_blocklists, GtkStringList *curated_configs); static GtkWindow * get_or_create_window (BzApplication *self); static GtkWindow * new_window (BzApplication *self); static void open_appstream_take (BzApplication *self, char *appstream); static void open_flatpakref_take (BzApplication *self, GFile *file); static void command_line_open_location (BzApplication *self, GApplicationCommandLine *cmdline, const char *path); static void open_generic_id (BzApplication *self, const char *generic_id); static gpointer map_strings_to_files (GtkStringObject *string, gpointer data); static gpointer map_generic_ids_to_groups (GtkStringObject *string, BzApplication *self); static gpointer map_ids_to_entries (GtkStringObject *string, BzApplication *self); static gboolean filter_application_ids (GtkStringObject *string, BzApplication *self); static gboolean filter_entry_groups (BzEntryGroup *group, BzApplication *self); static gint cmp_group (BzEntryGroup *a, BzEntryGroup *b, gpointer user_data); static gboolean validate_group_for_ui (BzApplication *self, BzEntryGroup *group); static DexFuture * make_sync_future (BzApplication *self); static void finish_with_background_task_label (BzApplication *self); static void state_info_set_icon_themes (BzStateInfo *state); static void bz_application_dispose (GObject *object) { BzApplication *self = BZ_APPLICATION (object); dex_clear (&self->first_window_opened); dex_clear (&self->flatpak_notifs); dex_clear (&self->notif_watch); dex_clear (&self->ready_to_open_files); dex_clear (&self->sync); g_clear_handle_id (&self->periodic_timeout_source, g_source_remove); g_clear_object (&self->appid_filter); g_clear_object (&self->application_factory); g_clear_object (&self->blocklist_parser); g_clear_object (&self->blocklists); g_clear_object (&self->blocklists_provider); g_clear_object (&self->blocklists_to_files); g_clear_object (&self->cache); g_clear_object (&self->curated_configs); g_clear_object (&self->curated_configs_to_files); g_clear_object (&self->curated_parser); g_clear_object (&self->curated_provider); g_clear_object (&self->entry_factory); g_clear_object (&self->flathub); g_clear_object (&self->flatpak); g_clear_object (&self->group_filter); g_clear_object (&self->group_filter_model); g_clear_object (&self->groups); g_clear_object (&self->installed_apps); g_clear_object (&self->malcontent); g_clear_object (&self->internal_config); g_clear_object (&self->network); g_clear_object (&self->search_biases); g_clear_object (&self->search_biases_backing); g_clear_object (&self->search_engine); g_clear_object (&self->settings); g_clear_object (&self->state); g_clear_object (&self->tmp_flathub); g_clear_object (&self->transactions); g_clear_object (&self->txt_blocklist_parser); g_clear_object (&self->txt_blocklists); g_clear_object (&self->txt_blocklists_provider); g_clear_object (&self->txt_blocklists_to_files); g_clear_pointer (&self->blocklist_regexes, g_ptr_array_unref); g_clear_pointer (&self->eol_runtimes, g_hash_table_unref); g_clear_pointer (&self->ids_to_groups, g_hash_table_unref); g_clear_pointer (&self->ignore_eol_set, g_hash_table_unref); g_clear_pointer (&self->init_timer, g_timer_destroy); g_clear_pointer (&self->installed_set, g_hash_table_unref); g_clear_pointer (&self->sys_name_to_addons, g_hash_table_unref); g_clear_pointer (&self->txt_blocked_id_sets, g_ptr_array_unref); g_clear_pointer (&self->usr_name_to_addons, g_hash_table_unref); g_clear_pointer (&self->sys_ref_to_addon_group_ids, g_hash_table_unref); g_clear_pointer (&self->usr_ref_to_addon_group_ids, g_hash_table_unref); g_weak_ref_clear (&self->main_window); G_OBJECT_CLASS (bz_application_parent_class)->dispose (object); } static void bz_application_activate (GApplication *app) { BzApplication *self = BZ_APPLICATION (app); new_window (self); } static int bz_application_command_line (GApplication *app, GApplicationCommandLine *cmdline) { BzApplication *self = BZ_APPLICATION (app); g_autoptr (GError) local_error = NULL; gint argc = 0; g_auto (GStrv) argv = NULL; gboolean help = FALSE; gboolean no_window = FALSE; g_auto (GStrv) blocklists_strv = NULL; g_auto (GStrv) content_configs_strv = NULL; g_auto (GStrv) locations = NULL; g_autofree char *search_term = NULL; GOptionEntry main_entries[] = { { "help", 0, 0, G_OPTION_ARG_NONE, &help, "Print help" }, { "no-window", 0, 0, G_OPTION_ARG_NONE, &no_window, "Ensure the service is running without creating a new window (daemon)" }, { "extra-blocklist", 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &blocklists_strv, "Add an extra blocklist to read from" }, { "extra-curated-config", 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &content_configs_strv, "Add an extra yaml file with which to configure the app browser" }, /* Here for backwards compat */ { "extra-content-config", 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &content_configs_strv, "Add an extra yaml file with which to configure the app browser (backwards compat)" }, { "search-for", 0, 0, G_OPTION_ARG_STRING, &search_term, "Open search with this term" }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &locations, "flatpakref file to open" }, { NULL } }; argv = g_application_command_line_get_arguments (cmdline, &argc); g_debug ("Handling gapplication command line; argc=%d, argv= \\", argc); for (guint i = 0; i < argc; i++) { g_debug (" [%d] %s", i, argv[i]); } if (argv != NULL && argc > 0) { g_autofree GStrv argv_shallow = NULL; g_autoptr (GOptionContext) context = NULL; argv_shallow = g_memdup2 (argv, sizeof (*argv) * argc); context = g_option_context_new ("- an app center for GNOME"); g_option_context_set_help_enabled (context, FALSE); g_option_context_add_main_entries (context, main_entries, NULL); if (!g_option_context_parse (context, &argc, &argv_shallow, &local_error)) { g_application_command_line_printerr (cmdline, "%s\n", local_error->message); return EXIT_FAILURE; } if (help) { g_autofree char *help_text = NULL; if (self->running) g_application_command_line_printerr (cmdline, "The Bazaar service is running.\n\n"); else g_application_command_line_printerr (cmdline, "The Bazaar service is not running.\n\n"); help_text = g_option_context_get_help (context, TRUE, NULL); g_application_command_line_printerr (cmdline, "%s\n", help_text); return EXIT_SUCCESS; } if (no_window) g_application_command_line_printerr (cmdline, "--no-window only works with bazaar-daemon\n"); } if (!self->running) { g_autoptr (GtkStringList) blocklists = NULL; g_autoptr (GtkStringList) txt_blocklists = NULL; g_autoptr (GtkStringList) content_configs = NULL; g_autoptr (DexFuture) init = NULL; self->running = TRUE; blocklists = gtk_string_list_new (NULL); txt_blocklists = gtk_string_list_new (NULL); content_configs = gtk_string_list_new (NULL); init_service_struct (self, blocklists, txt_blocklists, content_configs); #ifdef HARDCODED_BLOCKLIST g_debug ("Bazaar was configured with a hardcoded txt blocklist at %s, adding that now...", HARDCODED_BLOCKLIST); gtk_string_list_append (txt_blocklists, HARDCODED_BLOCKLIST); #endif if (blocklists_strv != NULL) gtk_string_list_splice ( txt_blocklists, g_list_model_get_n_items (G_LIST_MODEL (txt_blocklists)), 0, (const char *const *) blocklists_strv); #ifdef HARDCODED_CONTENT_CONFIG g_debug ("Bazaar was configured with a hardcoded curated content config at %s, adding that now...", HARDCODED_CONTENT_CONFIG); gtk_string_list_append (content_configs, HARDCODED_CONTENT_CONFIG); #endif if (content_configs_strv != NULL) gtk_string_list_splice ( content_configs, g_list_model_get_n_items (G_LIST_MODEL (content_configs)), 0, (const char *const *) content_configs_strv); g_timer_start (self->init_timer); init = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) init_fiber, bz_weak_ref_new (self), (GDestroyNotify) bz_weak_ref_unref); init = dex_future_finally ( init, (DexFutureCallback) init_fiber_finally, bz_weak_ref_new (self), (GDestroyNotify) bz_weak_ref_unref); dex_future_disown (g_steal_pointer (&init)); } if ((locations == NULL || *locations == NULL) && search_term == NULL) new_window (self); else get_or_create_window (self); if (locations != NULL && *locations != NULL) command_line_open_location (self, cmdline, locations[0]); if (search_term != NULL) { GtkWindow *window = NULL; window = get_or_create_window (self); if (adw_application_window_get_visible_dialog (ADW_APPLICATION_WINDOW (window)) != NULL) window = new_window (self); bz_window_search (BZ_WINDOW (window), search_term); } return EXIT_SUCCESS; } static gboolean bz_application_local_command_line (GApplication *application, gchar ***arguments, int *exit_status) { return FALSE; } static void bz_application_class_init (BzApplicationClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GApplicationClass *app_class = G_APPLICATION_CLASS (klass); object_class->dispose = bz_application_dispose; app_class->activate = bz_application_activate; app_class->command_line = bz_application_command_line; app_class->local_command_line = bz_application_local_command_line; g_type_ensure (BZ_TYPE_RESULT); } static void bz_application_toggle_debug_mode_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; gboolean debug_mode = FALSE; debug_mode = bz_state_info_get_debug_mode (self->state); bz_state_info_set_debug_mode (self->state, !debug_mode); } static void bz_application_bazaar_inspector_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; BzInspector *inspector = NULL; g_assert (BZ_IS_APPLICATION (self)); inspector = bz_inspector_new (); bz_inspector_set_state (inspector, self->state); gtk_application_add_window (GTK_APPLICATION (self), GTK_WINDOW (inspector)); gtk_window_present (GTK_WINDOW (inspector)); } static void bz_application_donate_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; GtkWindow *window = NULL; AdwDialog *dialog = NULL; g_assert (BZ_IS_APPLICATION (self)); window = get_or_create_window (self); dialog = bz_donations_dialog_new (); adw_dialog_present (dialog, GTK_WIDGET (window)); bz_state_info_set_donation_prompt_dismissed (self->state, TRUE); } static void bz_application_search_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; GtkWindow *window = NULL; const char *initial_text = NULL; g_assert (BZ_IS_APPLICATION (self)); window = get_or_create_window (self); if (parameter != NULL) initial_text = g_variant_get_string (parameter, NULL); bz_window_search (BZ_WINDOW (window), initial_text); } static void bz_application_show_app_id_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; GtkWindow *window = NULL; const char *app_id = NULL; g_assert (BZ_IS_APPLICATION (self)); window = get_or_create_window (self); if (parameter != NULL) { app_id = g_variant_get_string (parameter, NULL); bz_window_show_app_id (BZ_WINDOW (window), app_id); } } static void bz_application_sync_remotes_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; g_assert (BZ_IS_APPLICATION (self)); if (self->sync != NULL && dex_future_is_pending (self->sync)) return; dex_clear (&self->sync); self->sync = make_sync_future (self); } static void bz_application_about_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; GtkWindow *window = NULL; AdwDialog *dialog = NULL; const char *developers[] = { "Adam Masciola <kolunmi@posteo.net>", "Alexander Vanhee", NULL }; const char *special_thanks[] = { "arewelibadwaitayet https://arewelibadwaitayet.com/", /* This array MUST be NULL terminated */ NULL }; g_assert (BZ_IS_APPLICATION (self)); window = gtk_application_get_active_window (GTK_APPLICATION (self)); dialog = adw_about_dialog_new (); g_object_set ( dialog, "application-name", "Bazaar", "application-icon", "io.github.kolunmi.Bazaar", "developer-name", _ ("The Bazaar Contributors"), "developers", developers, // Translators: Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2 "translator-credits", _ ("translator-credits"), "version", PACKAGE_VCS_VERSION, "copyright", "© 2025-2026 The Bazaar Contributors", "license-type", GTK_LICENSE_GPL_3_0, "website", "https://usebazaar.org", "issue-url", "https://github.com/bazaar-org/bazaar/issues", NULL); adw_about_dialog_add_acknowledgement_section ( ADW_ABOUT_DIALOG (dialog), _ ("Special Thanks"), special_thanks); adw_dialog_present (dialog, GTK_WIDGET (window)); } static void bz_application_preferences_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; GtkWindow *window = NULL; AdwDialog *preferences = NULL; g_assert (BZ_IS_APPLICATION (self)); window = gtk_application_get_active_window (GTK_APPLICATION (self)); preferences = bz_preferences_dialog_new (self->state); adw_dialog_present (preferences, GTK_WIDGET (window)); } static void bz_application_flathub_login_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; GtkWindow *window = NULL; BzAuthState *auth_state = NULL; AdwNavigationPage *login_page = NULL; g_assert (BZ_IS_APPLICATION (self)); window = gtk_application_get_active_window (GTK_APPLICATION (self)); auth_state = bz_state_info_get_auth_state (self->state); login_page = bz_login_page_new (auth_state); bz_window_push_page (BZ_WINDOW (window), login_page); } static void bz_application_flathub_logout_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = BZ_APPLICATION (user_data); GtkWindow *window = gtk_application_get_active_window (GTK_APPLICATION (self)); BzAuthState *auth_state = bz_state_info_get_auth_state (self->state); g_assert (BZ_IS_WINDOW (window)); bz_auth_state_clear (auth_state); bz_window_add_toast ( BZ_WINDOW (window), adw_toast_new (_ ("Logged Out Successfully!"))); } static void bz_application_flathub_favorites_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; GtkWindow *window = NULL; AdwNavigationPage *favorites_page = NULL; g_assert (BZ_IS_APPLICATION (self)); window = get_or_create_window (self); favorites_page = ADW_NAVIGATION_PAGE (bz_favorites_page_new (self->state)); bz_window_push_page (BZ_WINDOW (window), favorites_page); } static void bz_application_quit_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { BzApplication *self = user_data; g_autoptr (GDBusConnection) conn = NULL; g_autoptr (GError) error = NULL; conn = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (conn != NULL) g_dbus_connection_call_sync ( conn, "io.github.kolunmi.Bazaar.SearchProvider", "/io/github/kolunmi/Bazaar/SearchProvider", "io.github.kolunmi.Bazaar.Daemon", "Quit", NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (error != NULL) g_warning ("Failed to quit daemon: %s", error->message); g_application_quit (G_APPLICATION (self)); } static const GActionEntry app_actions[] = { { "flathub-login", bz_application_flathub_login_action, NULL }, { "flathub-logout", bz_application_flathub_logout_action, NULL }, { "flathub-favorites", bz_application_flathub_favorites_action, NULL }, { "quit", bz_application_quit_action, NULL }, { "preferences", bz_application_preferences_action, NULL }, { "about", bz_application_about_action, NULL }, { "sync-remotes", bz_application_sync_remotes_action, NULL }, { "search", bz_application_search_action, "s" }, { "show-app-id", bz_application_show_app_id_action, "s" }, { "donate", bz_application_donate_action, NULL }, { "bazaar-inspector", bz_application_bazaar_inspector_action, NULL }, { "toggle-debug-mode", bz_application_toggle_debug_mode_action, NULL }, }; static void bz_application_init (BzApplication *self) { self->running = FALSE; g_weak_ref_init (&self->main_window, NULL); g_action_map_add_action_entries ( G_ACTION_MAP (self), app_actions, G_N_ELEMENTS (app_actions), self); gtk_application_set_accels_for_action ( GTK_APPLICATION (self), "app.quit", (const char *[]){ "<primary>q", NULL }); gtk_application_set_accels_for_action ( GTK_APPLICATION (self), "app.preferences", (const char *[]){ "<primary>comma", NULL }); gtk_application_set_accels_for_action ( GTK_APPLICATION (self), "app.sync-remotes", (const char *[]){ "<primary>r", NULL }); gtk_application_set_accels_for_action ( GTK_APPLICATION (self), "app.search('')", (const char *[]){ "<primary>f", NULL }); gtk_application_set_accels_for_action ( GTK_APPLICATION (self), "app.bazaar-inspector", (const char *[]){ "<primary><alt><shift>i", NULL }); gtk_application_set_accels_for_action ( GTK_APPLICATION (self), "app.toggle-debug-mode", (const char *[]){ "<primary><alt>d", NULL }); } BzStateInfo * bz_state_info_get_default (void) { GApplication *app = NULL; BzApplication *self = NULL; app = g_application_get_default (); if G_UNLIKELY (app == NULL) { static BzStateInfo *fallback_state = NULL; if (g_once_init_enter_pointer (&fallback_state)) { g_autoptr (BzStateInfo) tmp = NULL; tmp = bz_state_info_new (); // state_info_set_icon_themes (tmp); g_once_init_leave_pointer ( &fallback_state, g_steal_pointer (&tmp)); } return fallback_state; } self = (BzApplication *) app; g_assert (BZ_IS_APPLICATION (self)); return self->state; } static DexFuture * init_fiber (BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; g_autofree char *root_cache_dir = NULL; g_autoptr (GFile) root_cache_dir_file = NULL; g_autoptr (GListModel) repos = NULL; gboolean has_flathub = FALSE; gboolean cache_has_flathub = FALSE; gboolean result = FALSE; g_autoptr (BzAuthState) auth_state = NULL; g_autofree char *flathub_cache = NULL; g_autoptr (GFile) flathub_cache_file = NULL; g_autofree char *cache_version_path = NULL; g_autoptr (GFile) cache_version_file = NULL; bz_weak_get_or_return_reject (self, &wr->ref); /* Here until Ubuntu fixes its apparmor crap. */ #ifdef SANDBOXED_LIBFLATPAK if (g_settings_get_boolean (self->settings, "check-for-ubuntu")) { g_autoptr (GSubprocessLauncher) os_check_launcher = NULL; g_autoptr (GSubprocess) os_check = NULL; g_autoptr (GError) os_check_error = NULL; gboolean os_check_result = FALSE; GInputStream *os_check_stdout_pipe = NULL; g_autoptr (GBytes) os_out = NULL; gboolean affected_ubuntu = FALSE; os_check_launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_STDOUT_PIPE); os_check = g_subprocess_launcher_spawn (os_check_launcher, &os_check_error, "flatpak-spawn", "--host", "cat", "/usr/lib/os-release", NULL); if (os_check != NULL) { os_check_result = dex_await (dex_subprocess_wait_check (os_check), &os_check_error); if (os_check_result) { os_check_stdout_pipe = g_subprocess_get_stdout_pipe (os_check); os_out = g_input_stream_read_bytes (os_check_stdout_pipe, 4096, NULL, &os_check_error); } else g_warning ("Ubuntu check subprocess failed: %s", os_check_error->message); } else g_warning ("Failed to spawn ubuntu check subprocess: %s", os_check_error->message); if (os_out != NULL) { const char *data = NULL; const char *ver = NULL; int major = 0; int minor = 0; data = g_bytes_get_data (os_out, NULL); ver = strstr (data, "VERSION_ID=\""); if (strstr (data, "ID=ubuntu") != NULL && ver != NULL && sscanf (ver + strlen ("VERSION_ID=\""), "%d.%d", &major, &minor) == 2) affected_ubuntu = major > 25 || (major == 25 && minor >= 10); } if (affected_ubuntu) { GtkWindow *window = NULL; AdwDialog *alert = NULL; g_autofree char *response = NULL; dex_await (dex_ref (DEX_FUTURE (self->first_window_opened)), NULL); window = gtk_application_get_active_window (GTK_APPLICATION (self)); if (window == NULL) window = new_window (self); alert = adw_alert_dialog_new (NULL, NULL); adw_alert_dialog_format_heading (ADW_ALERT_DIALOG (alert), _ ("Ubuntu Troubles!")); adw_alert_dialog_format_body_markup ( ADW_ALERT_DIALOG (alert), _ ("Ubuntu 25.10 and newer have messed up default security rules, " "making it <b>impossible to install apps</b> from the Flatpak version " "of Bazaar, please just use the normal package for now by using\n\n" "<tt>sudo apt install bazaar</tt>\n\n" "You can then remove this Flatpak version with\n\n" "<tt>flatpak uninstall io.github.kolunmi.Bazaar</tt>")); adw_alert_dialog_add_response (ADW_ALERT_DIALOG (alert), "ok", _ ("Continue Anyway")); adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (alert), "ok"); adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (alert), "ok"); adw_dialog_present (alert, GTK_WIDGET (window)); response = dex_await_string (bz_make_alert_dialog_future (ADW_ALERT_DIALOG (alert)), NULL); g_settings_set_boolean (self->settings, "check-for-ubuntu", FALSE); } else g_settings_set_boolean (self->settings, "check-for-ubuntu", FALSE); } #endif bz_state_info_set_online (self->state, TRUE); bz_state_info_set_busy (self->state, TRUE); bz_state_info_set_background_task_label (self->state, _ ("Performing setup…")); root_cache_dir = bz_dup_root_cache_dir (); root_cache_dir_file = g_file_new_for_path (root_cache_dir); cache_version_path = g_build_filename (root_cache_dir, "cache-version", NULL); cache_version_file = g_file_new_for_path (cache_version_path); if (dex_await (dex_file_query_exists (root_cache_dir_file), NULL)) { gboolean wipe_cache = TRUE; gboolean package_upgraded = TRUE; if (dex_await (dex_file_query_exists (cache_version_file), NULL)) { g_autoptr (GBytes) bytes = NULL; bytes = dex_await_boxed (dex_file_load_contents_bytes (cache_version_file), NULL); if (bytes != NULL) { g_autoptr (GVariant) variant = NULL; variant = g_variant_new_from_bytes (G_VARIANT_TYPE ("(ss)"), bytes, FALSE); if (variant != NULL) { const char *stored_package_version = NULL; const char *stored_cache_version = NULL; g_variant_get (variant, "(&s&s)", &stored_package_version, &stored_cache_version); wipe_cache = g_strcmp0 (stored_cache_version, CACHE_VERSION) != 0; package_upgraded = g_strcmp0 (stored_package_version, PACKAGE_VERSION) != 0; } } } if (package_upgraded) bz_state_info_set_donation_prompt_dismissed (self->state, FALSE); if (wipe_cache) { g_settings_set_int64 (self->settings, "last-refresh-time", 0); g_info ("Version incompatibility detected: clearing cache"); dex_await (bz_reap_file_dex (root_cache_dir_file), NULL); } } else bz_state_info_set_donation_prompt_dismissed (self->state, TRUE); { g_autoptr (GError) mkdir_error = NULL; dex_await (dex_file_make_directory_with_parents (root_cache_dir_file), &mkdir_error); if (mkdir_error == NULL || mkdir_error->code == G_IO_ERROR_EXISTS) { g_autoptr (GVariant) variant = NULL; g_autoptr (GBytes) bytes = NULL; variant = g_variant_new ("(ss)", PACKAGE_VERSION, CACHE_VERSION); bytes = g_variant_get_data_as_bytes (variant); dex_await (dex_file_replace_contents_bytes ( cache_version_file, bytes, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION), NULL); } else g_warning ("Unable to ensure cache directory: %s", mkdir_error->message); } g_clear_object (&self->flatpak); self->flatpak = dex_await_object (bz_flatpak_instance_new (), &local_error); if (self->flatpak == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); bz_transaction_manager_set_backend (self->transactions, BZ_BACKEND (self->flatpak)); bz_state_info_set_backend (self->state, BZ_BACKEND (self->flatpak)); has_flathub = dex_await_boolean ( bz_flatpak_instance_has_flathub (self->flatpak, NULL), &local_error); if (local_error != NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); if (!has_flathub) { GtkWindow *window = NULL; g_autofree char *response = NULL; AdwDialog *alert = NULL; dex_await (dex_ref (DEX_FUTURE (self->first_window_opened)), NULL); window = gtk_application_get_active_window (GTK_APPLICATION (self)); if (window == NULL) window = new_window (self); alert = adw_alert_dialog_new (NULL, NULL); #ifdef SANDBOXED_LIBFLATPAK adw_alert_dialog_format_heading ( ADW_ALERT_DIALOG (alert), _ ("Set Up System Flathub?")); adw_alert_dialog_format_body ( ADW_ALERT_DIALOG (alert), _ ("The system Flathub remote is not set up. Bazaar requires " "Flathub to be configured on the system Flatpak installation " "to browse and install applications.\n\n" "You can still use Bazaar to browse and remove already installed apps.")); #else adw_alert_dialog_format_heading ( ADW_ALERT_DIALOG (alert), _ ("Set Up Flathub?")); adw_alert_dialog_format_body ( ADW_ALERT_DIALOG (alert), _ ("Flathub is not set up on this system. " "You will not be able to browse and install applications in Bazaar if its unavailable.\n\n" "You can still use Bazaar to browse and remove already installed apps.")); #endif adw_alert_dialog_add_responses ( ADW_ALERT_DIALOG (alert), "later", _ ("Later"), "add", _ ("Set Up Flathub"), NULL); adw_alert_dialog_set_response_appearance ( ADW_ALERT_DIALOG (alert), "add", ADW_RESPONSE_SUGGESTED); adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (alert), "add"); adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (alert), "later"); adw_dialog_present (alert, GTK_WIDGET (window)); response = dex_await_string ( bz_make_alert_dialog_future (ADW_ALERT_DIALOG (alert)), NULL); if (response != NULL && g_strcmp0 (response, "add") == 0) { result = dex_await ( bz_flatpak_instance_ensure_has_flathub (self->flatpak, NULL), &local_error); if (result) has_flathub = TRUE; else { g_warning ("Failed to install flathub: %s", local_error->message); g_clear_error (&local_error); } } } bz_state_info_set_has_flathub (self->state, has_flathub); self->installed_set = dex_await_boxed ( bz_backend_retrieve_install_ids ( BZ_BACKEND (self->flatpak), NULL), &local_error); if (self->installed_set == NULL) { g_warning ("Unable to enumerate installed entries from flatpak backend; " "no entries will appear to be installed: %s", local_error->message); g_clear_error (&local_error); self->installed_set = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, g_free); } repos = dex_await_object ( bz_backend_list_repositories (BZ_BACKEND (self->flatpak), NULL), &local_error); if (repos != NULL) bz_state_info_set_repositories (self->state, repos); else { g_warning ("Failed to enumerate repositories: %s", local_error->message); g_clear_error (&local_error); } /* Revive old cache from previous Bazaar process */ cache_has_flathub = dex_await_boolean ( dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) enumerate_disk_groups_fiber, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref), NULL); self->had_cache_on_init = g_list_model_get_n_items (G_LIST_MODEL (self->groups)) > 0; flathub_cache_file = fiber_dup_cache_file ("flathub-cache", &flathub_cache, &local_error); if (flathub_cache_file != NULL) { if (dex_await (dex_file_query_exists (flathub_cache_file), NULL)) { g_autoptr (GBytes) bytes = NULL; bytes = dex_await_boxed ( dex_file_load_contents_bytes (flathub_cache_file), &local_error); if (bytes != NULL) { g_autoptr (GVariant) variant = NULL; g_autoptr (BzFlathubState) flathub = NULL; variant = g_variant_new_from_bytes (G_VARIANT_TYPE_VARDICT, bytes, FALSE); if (variant == NULL) { g_warning ("Failed to interpret cached flathub state from %s: %s", flathub_cache, local_error->message); g_clear_error (&local_error); } flathub = bz_flathub_state_new (); result = bz_serializable_deserialize ( BZ_SERIALIZABLE (flathub), variant, &local_error); if (result) { self->flathub = g_steal_pointer (&flathub); bz_flathub_state_set_map_factory (self->flathub, self->application_factory); bz_state_info_set_flathub (self->state, self->flathub); if (cache_has_flathub) { dex_promise_resolve_boolean (self->ready_to_open_files, TRUE); bz_state_info_set_busy (self->state, FALSE); } } else { g_warning ("Failed to deserialize cached flathub state from %s: %s", flathub_cache, local_error->message); g_clear_error (&local_error); } } else { g_warning ("Failed to decache cache flathub state from %s: %s", flathub_cache, local_error->message); g_clear_error (&local_error); } } } else { g_warning ("Unable to ensure cache directory: %s", local_error->message); g_clear_error (&local_error); } auth_state = bz_auth_state_new (); bz_state_info_set_auth_state (self->state, auth_state); return dex_future_new_true (); } static DexFuture * enumerate_disk_groups_fiber (BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; g_autofree char *groups_cache = NULL; g_autoptr (GFile) groups_cache_file = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (GVariantIter) iter = NULL; gboolean has_flathub_group = FALSE; bz_weak_get_or_return_reject (self, &wr->ref); groups_cache_file = fiber_dup_cache_file ("groups-cache", &groups_cache, &local_error); if (groups_cache_file == NULL) { g_warning ("Unable to ensure groups cache directory: %s", local_error->message); return dex_future_new_for_boolean (FALSE); } if (!dex_await (dex_file_query_exists (groups_cache_file), NULL)) return dex_future_new_for_boolean (FALSE); bytes = dex_await_boxed ( dex_file_load_contents_bytes (groups_cache_file), &local_error); if (bytes == NULL) { g_warning ("Failed to load groups cache from %s: %s", groups_cache, local_error->message); return dex_future_new_for_boolean (FALSE); } variant = g_variant_new_from_bytes (G_VARIANT_TYPE ("aa{sv}"), bytes, FALSE); if (variant == NULL) { g_warning ("Failed to parse groups cache from %s", groups_cache); return dex_future_new_for_boolean (FALSE); } iter = g_variant_iter_new (variant); for (;;) { g_autoptr (GVariant) group_variant = NULL; g_autoptr (BzEntryGroup) group = NULL; group_variant = g_variant_iter_next_value (iter); if (group_variant == NULL) break; group = bz_entry_group_new (self->entry_factory); if (bz_entry_group_deserialize (group, group_variant)) { const char *id = NULL; gboolean is_installed = FALSE; is_installed = bz_entry_group_reconcile_with_installed_set (group, self->installed_set); if (!has_flathub_group && bz_entry_group_get_is_flathub (group)) has_flathub_group = TRUE; g_list_store_append (self->groups, group); id = bz_entry_group_get_id (group); if (id != NULL) g_hash_table_replace ( self->ids_to_groups, g_strdup (id), g_object_ref (group)); if (is_installed) g_list_store_insert_sorted ( self->installed_apps, group, (GCompareDataFunc) cmp_group, NULL); } } gtk_filter_changed (GTK_FILTER (self->group_filter), GTK_FILTER_CHANGE_LESS_STRICT); gtk_filter_changed (GTK_FILTER (self->appid_filter), GTK_FILTER_CHANGE_LESS_STRICT); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) check_for_updates_fiber, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref)); return dex_future_new_for_boolean (has_flathub_group); } static DexFuture * enumerate_disk_io_fiber (BzEntryCacheManager *cache) { g_autoptr (GError) local_error = NULL; g_autoptr (GHashTable) cached_set = NULL; g_autoptr (GPtrArray) entries = NULL; GHashTableIter iter = { 0 }; cached_set = dex_await_boxed ( bz_entry_cache_manager_enumerate_disk (cache), &local_error); if (cached_set == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); entries = g_ptr_array_new_with_free_func (g_object_unref); g_hash_table_iter_init (&iter, cached_set); for (;;) { g_autoptr (GPtrArray) batch = NULL; char *checksum = NULL; batch = g_ptr_array_new_with_free_func (dex_unref); while (batch->len < CACHE_ENUM_BATCH_SIZE && g_hash_table_iter_next (&iter, (gpointer *) &checksum, NULL)) g_ptr_array_add ( batch, bz_entry_cache_manager_get_by_checksum ( cache, checksum)); if (batch->len > 0) dex_await (dex_future_allv ( (DexFuture *const *) batch->pdata, batch->len), NULL); for (guint i = 0; i < batch->len; i++) { DexFuture *future = NULL; const GValue *value = NULL; future = g_ptr_array_index (batch, i); value = dex_future_get_value (future, &local_error); if (value != NULL) g_ptr_array_add (entries, g_value_dup_object (value)); else { g_warning ("Unable to retrieve cached entry: %s", local_error->message); g_clear_error (&local_error); } } if (batch->len < CACHE_ENUM_BATCH_SIZE) break; } return dex_future_new_take_boxed (G_TYPE_PTR_ARRAY, g_steal_pointer (&entries)); } static DexFuture * enumerate_disk_entries_fiber (BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) entries = NULL; gboolean has_flathub_entry = FALSE; bz_weak_get_or_return_reject (self, &wr->ref); entries = dex_await_boxed ( dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) enumerate_disk_io_fiber, g_object_ref (self->cache), g_object_unref), &local_error); if (entries == NULL) { g_warning ("Unable to enumerate cached entries: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } for (guint i = 0; i < entries->len; i++) { BzEntry *entry = NULL; entry = g_ptr_array_index (entries, i); if (BZ_IS_FLATPAK_ENTRY (entry) && bz_flatpak_entry_get_bundle_path (BZ_FLATPAK_ENTRY (entry)) != NULL) /* refrain from restoring bundle entries */ continue; if (!has_flathub_entry && BZ_IS_FLATPAK_ENTRY (entry) && g_strcmp0 (bz_entry_get_remote_repo_name (entry), "flathub") == 0) has_flathub_entry = TRUE; fiber_replace_entry (self, entry); } gtk_filter_changed (GTK_FILTER (self->group_filter), GTK_FILTER_CHANGE_LESS_STRICT); gtk_filter_changed (GTK_FILTER (self->appid_filter), GTK_FILTER_CHANGE_LESS_STRICT); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) check_for_updates_fiber, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref)); return dex_future_new_for_boolean (has_flathub_entry); } static DexFuture * check_for_updates_fiber (BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; bz_weak_get_or_return_reject (self, &wr->ref); fiber_check_for_updates (self); finish_with_background_task_label (self); return dex_future_new_true (); } static DexFuture * cache_flathub_fiber (BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autofree char *flathub_cache = NULL; g_autoptr (GFile) flathub_cache_file = NULL; bz_weak_get_or_return_reject (self, &wr->ref); flathub_cache_file = fiber_dup_cache_file ("flathub-cache", &flathub_cache, &local_error); if (flathub_cache_file != NULL) { g_autoptr (GVariantBuilder) builder = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (GBytes) bytes = NULL; builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT); bz_serializable_serialize (BZ_SERIALIZABLE (self->flathub), builder); variant = g_variant_builder_end (builder); bytes = g_variant_get_data_as_bytes (variant); result = dex_await ( dex_file_replace_contents_bytes ( flathub_cache_file, bytes, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION), &local_error); if (!result) { g_warning ("Failed to cache flathub state to %s: %s", flathub_cache, local_error->message); g_clear_error (&local_error); } } else { g_warning ("Unable to ensure cache directory: %s", local_error->message); g_clear_error (&local_error); } return dex_future_new_true (); } static DexFuture * cache_groups_fiber (BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autofree char *groups_cache = NULL; g_autoptr (GFile) groups_cache_file = NULL; g_autoptr (GVariantBuilder) builder = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (GBytes) bytes = NULL; guint n_groups = 0; g_autoptr (GError) index_error = NULL; g_autofree char *module_dir = NULL; g_autofree char *index_path = NULL; bz_weak_get_or_return_reject (self, &wr->ref); groups_cache_file = fiber_dup_cache_file ("groups-cache", &groups_cache, &local_error); if (groups_cache_file == NULL) { g_warning ("Unable to ensure groups cache directory: %s", local_error->message); return dex_future_new_true (); } builder = g_variant_builder_new (G_VARIANT_TYPE ("aa{sv}")); n_groups = g_list_model_get_n_items (G_LIST_MODEL (self->groups)); for (guint i = 0; i < n_groups; i++) { g_autoptr (BzEntryGroup) group = NULL; g_autoptr (GVariantBuilder) gb = NULL; group = g_list_model_get_item (G_LIST_MODEL (self->groups), i); gb = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); bz_entry_group_serialize (group, gb); g_variant_builder_add (builder, "@a{sv}", g_variant_builder_end (gb)); } variant = g_variant_builder_end (builder); bytes = g_variant_get_data_as_bytes (variant); result = dex_await ( dex_file_replace_contents_bytes ( groups_cache_file, bytes, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION), &local_error); if (!result) g_warning ("Failed to cache groups to %s: %s", groups_cache, local_error->message); module_dir = bz_dup_module_dir (); index_path = g_build_filename (module_dir, "search-index", NULL); if (!bz_write_search_index (G_LIST_MODEL (self->groups), index_path, &index_error)) g_warning ("Failed to write search index to %s: %s", index_path, index_error->message); return dex_future_new_true (); } static DexFuture * respond_to_flatpak_fiber (BzWeakRef *wr, BzBackendNotification *notif) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) build_futures = NULL; g_autoptr (GPtrArray) build_notify_groups = NULL; g_autoptr (DexFuture) read_future = NULL; g_autoptr (DexFuture) reread_timeout = NULL; gboolean update_labels = FALSE; gboolean update_filters = FALSE; bz_weak_get_or_return_reject (self, &wr->ref); build_futures = g_ptr_array_new_with_free_func (dex_unref); build_notify_groups = g_ptr_array_new_with_free_func (g_object_unref); read_future = dex_future_new_for_object (notif); /* `reread_timeout` defines how long we are allowed to spend adding to `build-futures` before we update the UI later */ reread_timeout = dex_timeout_new_msec (100); for (;;) { BzBackendNotificationKind kind = 0; if (!dex_future_is_resolved (read_future)) { g_autoptr (DexFuture) future = NULL; future = dex_future_all_race ( dex_ref (reread_timeout), dex_ref (read_future), NULL); dex_await (g_steal_pointer (&future), NULL); if (!dex_future_is_pending (reread_timeout)) break; } notif = g_value_get_object (dex_future_get_value (read_future, NULL)); kind = bz_backend_notification_get_kind (notif); switch (kind) { case BZ_BACKEND_NOTIFICATION_KIND_PRESENT_ID: { const char *id = NULL; id = bz_backend_notification_get_generic_id (notif); if (id == NULL) break; open_generic_id (self, id); } break; case BZ_BACKEND_NOTIFICATION_KIND_ERROR: { const char *error = NULL; GtkWindow *window = NULL; error = bz_backend_notification_get_error (notif); if (error == NULL) break; g_warning ("Received an error from the flatpak backend: %s", error); window = gtk_application_get_active_window (GTK_APPLICATION (self)); if (window != NULL) bz_show_error_for_widget (GTK_WIDGET (window), _ ("A backend error occurred"), error); } break; case BZ_BACKEND_NOTIFICATION_KIND_TELL_INCOMING: { int n_incoming = 0; n_incoming = bz_backend_notification_get_n_incoming (notif); self->n_entries_incoming += n_incoming; update_labels = TRUE; } break; case BZ_BACKEND_NOTIFICATION_KIND_REPLACE_ENTRY: { BzEntry *entry = NULL; entry = bz_backend_notification_get_entry (notif); fiber_replace_entry (self, entry); g_ptr_array_add (build_futures, bz_entry_cache_manager_add (self->cache, entry)); if (bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_APPLICATION)) { const char *id = NULL; BzEntryGroup *group = NULL; update_filters = TRUE; id = bz_entry_get_id (entry); group = g_hash_table_lookup (self->ids_to_groups, id); if (group != NULL) g_ptr_array_add (build_notify_groups, g_object_ref (group)); } self->n_entries_incoming--; update_labels = TRUE; } break; case BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_START: { const char *remote_name = NULL; remote_name = bz_backend_notification_get_remote_name (notif); if (bz_state_info_get_has_flathub (self->state)) /* We only count instances of the "flathub" remote if we have flathub, since that's all we care about for the UI */ { if (g_strcmp0 (remote_name, "flathub") == 0) self->n_remotes_syncing++; } else self->n_remotes_syncing++; g_debug ("remote '%s' has begun synchronization; " "now currently syncing %u remote(s)", remote_name, self->n_remotes_syncing); } break; case BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_FINISH: { const char *remote_name = NULL; remote_name = bz_backend_notification_get_remote_name (notif); if (bz_state_info_get_has_flathub (self->state)) { if (g_strcmp0 (remote_name, "flathub") == 0) { self->n_remotes_syncing--; if (self->n_remotes_syncing == 0) self->flathub_remote_initialized = TRUE; } } else { self->n_remotes_syncing--; if (self->n_remotes_syncing == 0) bz_state_info_set_busy (self->state, FALSE); } g_debug ("remote '%s' has finished synchronization; " "now currently syncing %u remote(s)", remote_name, self->n_remotes_syncing); } break; case BZ_BACKEND_NOTIFICATION_KIND_INSTALL_DONE: case BZ_BACKEND_NOTIFICATION_KIND_UPDATE_DONE: case BZ_BACKEND_NOTIFICATION_KIND_REMOVE_DONE: { const char *unique_id = NULL; g_autoptr (BzEntry) entry = NULL; unique_id = bz_backend_notification_get_unique_id (notif); entry = dex_await_object ( bz_entry_cache_manager_get (self->cache, unique_id), &local_error); if (entry == NULL) { g_warning ("Backend notification references an entry " "which couldn't be decached: %s", local_error->message); break; } switch (kind) { case BZ_BACKEND_NOTIFICATION_KIND_INSTALL_DONE: { const char *version = NULL; version = bz_backend_notification_get_version (notif); g_hash_table_replace (self->installed_set, g_strdup (unique_id), g_strdup (version)); bz_entry_set_installed_version (entry, version); bz_entry_set_installed (entry, TRUE); if (bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_APPLICATION)) { BzEntryGroup *group = NULL; group = g_hash_table_lookup (self->ids_to_groups, bz_entry_get_id (entry)); if (group != NULL) { gboolean found = FALSE; guint position = 0; found = g_list_store_find (self->installed_apps, group, &position); if (!found) g_list_store_insert_sorted (self->installed_apps, group, (GCompareDataFunc) cmp_group, NULL); } } } break; case BZ_BACKEND_NOTIFICATION_KIND_UPDATE_DONE: case BZ_BACKEND_NOTIFICATION_KIND_REMOVE_DONE: { gboolean was_rebased = FALSE; was_rebased = bz_backend_notification_get_was_rebased (notif); if (kind == BZ_BACKEND_NOTIFICATION_KIND_UPDATE_DONE) { const char *version = NULL; version = bz_backend_notification_get_version (notif); g_hash_table_replace (self->installed_set, g_strdup (unique_id), g_strdup (version)); } if (kind == BZ_BACKEND_NOTIFICATION_KIND_REMOVE_DONE || was_rebased) { bz_entry_set_installed_version (entry, NULL); bz_entry_set_installed (entry, FALSE); g_hash_table_remove (self->installed_set, unique_id); if (bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_APPLICATION)) { BzEntryGroup *group = NULL; group = g_hash_table_lookup (self->ids_to_groups, bz_entry_get_id (entry)); if (group != NULL && (was_rebased || !bz_entry_group_get_removable (group))) { gboolean found = FALSE; guint position = 0; found = g_list_store_find (self->installed_apps, group, &position); if (found) g_list_store_remove (self->installed_apps, position); } } } } break; case BZ_BACKEND_NOTIFICATION_KIND_ERROR: case BZ_BACKEND_NOTIFICATION_KIND_EXTERNAL_CHANGE: case BZ_BACKEND_NOTIFICATION_KIND_INVALIDATE_REMOTES: case BZ_BACKEND_NOTIFICATION_KIND_PRESENT_ID: case BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_FINISH: case BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_START: case BZ_BACKEND_NOTIFICATION_KIND_REPLACE_ENTRY: case BZ_BACKEND_NOTIFICATION_KIND_TELL_INCOMING: default: g_assert_not_reached (); }; g_ptr_array_add (build_futures, bz_entry_cache_manager_add (self->cache, entry)); if (bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_APPLICATION)) { const char *id = NULL; BzEntryGroup *group = NULL; id = bz_entry_get_id (entry); group = g_hash_table_lookup (self->ids_to_groups, id); if (group != NULL) g_ptr_array_add (build_notify_groups, g_object_ref (group)); } } break; case BZ_BACKEND_NOTIFICATION_KIND_INVALIDATE_REMOTES: case BZ_BACKEND_NOTIFICATION_KIND_EXTERNAL_CHANGE: { g_autoptr (GListModel) repos = NULL; g_autoptr (GHashTable) installed_set = NULL; g_autoptr (GPtrArray) diff_reads = NULL; GHashTableIter old_iter = { 0 }; GHashTableIter new_iter = { 0 }; g_autoptr (GPtrArray) diff_writes = NULL; bz_state_info_set_background_task_label (self->state, _ ("Refreshing…")); repos = dex_await_object ( bz_backend_list_repositories (BZ_BACKEND (self->flatpak), NULL), &local_error); if (repos != NULL) bz_state_info_set_repositories (self->state, repos); else { g_warning ("Failed to enumerate repositories: %s", local_error->message); g_clear_error (&local_error); } installed_set = dex_await_boxed ( bz_backend_retrieve_install_ids ( BZ_BACKEND (self->flatpak), NULL), &local_error); if (installed_set == NULL) { g_warning ("Failed to enumerate installed entries: %s", local_error->message); finish_with_background_task_label (self); break; } diff_reads = g_ptr_array_new_with_free_func (dex_unref); g_hash_table_iter_init (&old_iter, self->installed_set); for (;;) { char *unique_id = NULL; if (!g_hash_table_iter_next ( &old_iter, (gpointer *) &unique_id, NULL)) break; if (!g_hash_table_contains (installed_set, unique_id)) g_ptr_array_add ( diff_reads, bz_entry_cache_manager_get (self->cache, unique_id)); } g_hash_table_iter_init (&new_iter, installed_set); for (;;) { char *unique_id = NULL; if (!g_hash_table_iter_next ( &new_iter, (gpointer *) &unique_id, NULL)) break; if (!g_hash_table_contains (self->installed_set, unique_id)) g_ptr_array_add ( diff_reads, bz_entry_cache_manager_get (self->cache, unique_id)); } if (diff_reads->len > 0) { dex_await (dex_future_allv ( (DexFuture *const *) diff_reads->pdata, diff_reads->len), NULL); diff_writes = g_ptr_array_new_with_free_func (dex_unref); for (guint i = 0; i < diff_reads->len; i++) { DexFuture *future = NULL; future = g_ptr_array_index (diff_reads, i); if (dex_future_is_resolved (future)) { BzEntry *entry = NULL; const char *id = NULL; const char *unique_id = NULL; BzEntryGroup *group = NULL; gboolean installed = FALSE; const char *version = NULL; entry = g_value_get_object (dex_future_get_value (future, NULL)); id = bz_entry_get_id (entry); group = g_hash_table_lookup (self->ids_to_groups, id); if (group != NULL) bz_entry_group_connect_living (group, entry); unique_id = bz_entry_get_unique_id (entry); installed = g_hash_table_contains (installed_set, unique_id); version = g_hash_table_lookup (installed_set, unique_id); if (installed && version != NULL && *version != '\0') bz_entry_set_installed_version (entry, version); bz_entry_set_installed (entry, installed); if (group != NULL) { gboolean found = FALSE; guint position = 0; found = g_list_store_find (self->installed_apps, group, &position); if (installed && !found) g_list_store_insert_sorted ( self->installed_apps, group, (GCompareDataFunc) cmp_group, NULL); else if (!installed && found && bz_entry_group_get_removable (group) == 0) g_list_store_remove (self->installed_apps, position); } g_ptr_array_add ( diff_writes, bz_entry_cache_manager_add (self->cache, entry)); } } dex_await (dex_future_allv ( (DexFuture *const *) diff_writes->pdata, diff_writes->len), NULL); } g_clear_pointer (&self->installed_set, g_hash_table_unref); self->installed_set = g_steal_pointer (&installed_set); fiber_check_for_updates (self); finish_with_background_task_label (self); } break; default: g_assert_not_reached (); } dex_clear (&read_future); read_future = dex_channel_receive (self->flatpak_notifs); if (!dex_future_is_pending (reread_timeout)) break; } if (build_futures->len > 0) { g_autoptr (DexFuture) future = NULL; future = dex_future_allv ( (DexFuture *const *) build_futures->pdata, build_futures->len); future = bz_future_finallyv ( future, G_CALLBACK (cache_write_back_finally), 3, BZ_TYPE_WEAK_REF, wr, G_TYPE_PTR_ARRAY, build_notify_groups, G_TYPE_BOOLEAN, update_filters); dex_future_disown (g_steal_pointer (&future)); } if (update_labels) { if (self->n_entries_incoming > 0) bz_state_info_set_background_task_label_take_printf ( self->state, _ ("Loading %d apps…"), self->n_entries_incoming); else { fiber_check_for_updates (self); finish_with_background_task_label (self); } } if (self->n_entries_incoming == 0 && self->flathub_remote_initialized) { bz_state_info_set_busy (self->state, FALSE); finish_with_background_task_label (self); } return g_steal_pointer (&read_future); } static DexFuture * open_appstream_fiber (BzWeakRef *wr, const char *id) { g_autoptr (BzApplication) self = NULL; bz_weak_get_or_return_reject (self, &wr->ref); dex_await (dex_ref (self->ready_to_open_files), NULL); open_generic_id (self, id); return dex_future_new_true (); } static DexFuture * open_flatpakref_fiber (BzWeakRef *wr, GFile *file) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (DexFuture) future = NULL; const GValue *value = NULL; bz_weak_get_or_return_reject (self, &wr->ref); dex_await (dex_ref (self->ready_to_open_files), NULL); future = bz_backend_load_local_package (BZ_BACKEND (self->flatpak), file, NULL); dex_await (dex_ref (future), NULL); value = dex_future_get_value (future, &local_error); if (value == NULL) { GtkWindow *window = get_or_create_window (self); bz_show_error_for_widget ( GTK_WIDGET (window), _ ("Failed to open file"), local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } if (G_VALUE_HOLDS_OBJECT (value)) { GtkWindow *window = NULL; BzEntry *entry = NULL; BzFlatpakRepo *repo = NULL; BzBundleInstallDialog *dialog = NULL; BzFlatpakBundleResult *bundle_result = NULL; const char *id = NULL; window = get_or_create_window (self); if (adw_application_window_get_visible_dialog (ADW_APPLICATION_WINDOW (window)) != NULL) window = new_window (self); bundle_result = BZ_FLATPAK_BUNDLE_RESULT (g_value_get_object (value)); entry = BZ_ENTRY (bz_flatpak_bundle_result_get_entry (bundle_result)); repo = bz_flatpak_bundle_result_get_runtime_repo (bundle_result); id = bz_entry_get_id (entry); if (id != NULL) { BzEntryGroup *group = NULL; group = g_hash_table_lookup (self->ids_to_groups, id); if (group != NULL && bz_entry_group_get_removable (group) > 0) bz_entry_set_installed (entry, TRUE); } dialog = g_object_new ( BZ_TYPE_BUNDLE_INSTALL_DIALOG, "state", self->state, "entry", entry, "runtime-repo", repo, NULL); adw_dialog_present (ADW_DIALOG (dialog), GTK_WIDGET (window)); } return dex_future_new_true (); } static DexFuture * open_metainfo_fiber (BzWeakRef *wr, GFile *file) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (DexFuture) pick_future = NULL; const GValue *value = NULL; BzMetainfoPickResult *result = NULL; g_autoptr (BzEntry) entry = NULL; GtkWindow *window = NULL; bz_weak_get_or_return_reject (self, &wr->ref); dex_await (dex_ref (self->ready_to_open_files), NULL); window = get_or_create_window (self); if (adw_application_window_get_visible_dialog (ADW_APPLICATION_WINDOW (window)) != NULL) window = new_window (self); pick_future = bz_metainfo_preview_open_file (file, window); dex_await (dex_ref (pick_future), NULL); value = dex_future_get_value (pick_future, &local_error); if (value == NULL) { bz_show_error_for_widget ( GTK_WIDGET (window), _ ("Failed to open file"), local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } result = g_value_get_boxed (value); entry = bz_appstream_parser_entry_from_metainfo ( result->metainfo_file, result->icon_file, &local_error); if (entry == NULL) { bz_show_error_for_widget ( GTK_WIDGET (window), _ ("Failed to load metainfo"), local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } g_object_set (entry, "id", "preview", NULL); bz_window_show_entry (BZ_WINDOW (window), entry); return dex_future_new_true (); } static DexFuture * init_fiber_finally (DexFuture *future, BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; const GValue *value = NULL; gint64 last_refresh = 0; gint64 now = 0; gint64 seconds_since_refresh = 0; bz_weak_get_or_return_reject (self, &wr->ref); value = dex_future_get_value (future, &local_error); if (value != NULL) { self->flatpak_notifs = bz_backend_create_notification_channel ( BZ_BACKEND (self->flatpak)); self->notif_watch = dex_future_then_loop ( dex_channel_receive (self->flatpak_notifs), (DexFutureCallback) watch_backend_notifs_then_loop_cb, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref); last_refresh = g_settings_get_int64 (self->settings, "last-refresh-time"); now = g_get_real_time () / G_USEC_PER_SEC; seconds_since_refresh = now - last_refresh; if ((!bz_state_info_get_metered_connection (self->state) || !self->had_cache_on_init) && seconds_since_refresh >= MIN_STARTUP_REFRESH_INTERVAL_SECONDS) { g_autoptr (DexFuture) sync_future = NULL; sync_future = make_sync_future (self); sync_future = dex_future_finally ( sync_future, (DexFutureCallback) init_sync_finally, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref); self->sync = g_steal_pointer (&sync_future); } else { bz_state_info_set_allow_manual_sync (self->state, TRUE); bz_state_info_set_busy (self->state, FALSE); bz_state_info_set_syncing (self->state, FALSE); dex_promise_resolve_boolean (self->ready_to_open_files, TRUE); // Only check for updates if we skipped a full sync. dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) check_for_updates_fiber, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref)); } self->periodic_timeout_source = g_timeout_add_seconds ( /* Check every day */ 60 * 60 * 24, (GSourceFunc) periodic_timeout_cb, self); bz_malcontent_service_start (self->malcontent); g_object_bind_property ( bz_state_info_get_auth_state (self->state), "authenticated", g_action_map_lookup_action (G_ACTION_MAP (self), "flathub-login"), "enabled", G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN); } else { GtkWindow *window = NULL; bz_state_info_set_online (self->state, FALSE); bz_state_info_set_busy (self->state, FALSE); window = gtk_application_get_active_window (GTK_APPLICATION (self)); if (window != NULL) { g_autofree char *error_string = NULL; error_string = g_strdup_printf ( "Could not initialize: %s", local_error->message); bz_show_error_for_widget (GTK_WIDGET (window), _ ("An initialization error occurred"), error_string); } } return dex_future_new_true (); } static DexFuture * init_sync_finally (DexFuture *future, BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; bz_weak_get_or_return_reject (self, &wr->ref); /* Do nothing */ return dex_future_new_true (); } static DexFuture * backend_sync_finally (DexFuture *future, BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; bz_weak_get_or_return_reject (self, &wr->ref); if (dex_future_is_resolved (future)) { g_autoptr (DexFuture) enum_future = NULL; enum_future = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) enumerate_disk_entries_fiber, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref); enum_future = dex_future_finally ( enum_future, (DexFutureCallback) backend_sync_save_groups_finally, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref); return g_steal_pointer (&enum_future); } else return dex_ref (future); } static DexFuture * backend_sync_save_groups_finally (DexFuture *future, BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; bz_weak_get_or_return_reject (self, &wr->ref); return dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) cache_groups_fiber, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref); } static DexFuture * flathub_update_finally (DexFuture *future, BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; bz_weak_get_or_return_reject (self, &wr->ref); if (dex_future_is_resolved (future)) { g_clear_object (&self->flathub); g_assert (self->tmp_flathub != NULL); self->flathub = g_steal_pointer (&self->tmp_flathub); bz_flathub_state_set_map_factory (self->flathub, self->application_factory); bz_state_info_set_flathub (self->state, self->flathub); return dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) cache_flathub_fiber, bz_weak_ref_ref (wr), (GDestroyNotify) bz_weak_ref_unref); } else { g_clear_object (&self->tmp_flathub); return dex_ref (future); } } static DexFuture * cache_write_back_finally (DexFuture *future, BzWeakRef *wr, GPtrArray *notify_groups, gboolean update_filters) { g_autoptr (BzApplication) self = NULL; bz_weak_get_or_return_reject (self, &wr->ref); for (guint i = 0; i < notify_groups->len; i++) { BzEntryGroup *group = NULL; group = g_ptr_array_index (notify_groups, i); g_object_notify (G_OBJECT (group), "ui-entry"); } if (update_filters) { gtk_filter_changed (GTK_FILTER (self->group_filter), GTK_FILTER_CHANGE_LESS_STRICT); gtk_filter_changed (GTK_FILTER (self->appid_filter), GTK_FILTER_CHANGE_LESS_STRICT); } return dex_future_new_true (); } static DexFuture * sync_finally (DexFuture *future, BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; bz_weak_get_or_return_reject (self, &wr->ref); bz_state_info_set_online (self->state, dex_future_is_resolved (future)); bz_state_info_set_allow_manual_sync (self->state, TRUE); bz_state_info_set_busy (self->state, FALSE); bz_state_info_set_syncing (self->state, FALSE); finish_with_background_task_label (self); if (dex_future_is_resolved (future)) g_settings_set_int64 ( self->settings, "last-refresh-time", g_get_real_time () / G_USEC_PER_SEC); dex_promise_resolve_boolean (self->ready_to_open_files, TRUE); return dex_future_new_true (); } static DexFuture * watch_backend_notifs_then_loop_cb (DexFuture *future, BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; g_autoptr (GError) local_error = NULL; const GValue *value = NULL; BzBackendNotification *notif = NULL; g_autoptr (DexFuture) ret_future = NULL; bz_weak_get_or_return_reject (self, &wr->ref); value = dex_future_get_value (future, NULL); g_assert (value != NULL); notif = g_value_get_object (value); ret_future = dex_scheduler_spawnv ( dex_scheduler_get_default (), bz_get_dex_stack_size (), G_CALLBACK (respond_to_flatpak_fiber), 2, BZ_TYPE_WEAK_REF, wr, BZ_TYPE_BACKEND_NOTIFICATION, notif); return g_steal_pointer (&ret_future); } static BzEntryGroup * ensure_group_and_add (BzApplication *self, const char *id, BzEntry *entry, BzEntry *eol_runtime, gboolean ignore_eol, gboolean installed) { BzEntryGroup *group = NULL; group = g_hash_table_lookup (self->ids_to_groups, id); if (group != NULL) bz_entry_group_add (group, entry, eol_runtime, ignore_eol); else { g_autoptr (BzEntryGroup) new_group = NULL; g_debug ("Creating new application group for id %s", id); new_group = bz_entry_group_new (self->entry_factory); bz_entry_group_add (new_group, entry, eol_runtime, ignore_eol); g_list_store_append (self->groups, new_group); g_hash_table_replace (self->ids_to_groups, g_strdup (id), g_object_ref (new_group)); group = new_group; } if (installed && !g_list_store_find (self->installed_apps, group, NULL)) g_list_store_insert_sorted ( self->installed_apps, group, (GCompareDataFunc) cmp_group, NULL); return group; } static void fiber_replace_entry (BzApplication *self, BzEntry *entry) { const char *id = NULL; const char *unique_id = NULL; const char *unique_id_checksum = NULL; gboolean user = FALSE; gboolean installed = FALSE; const char *flatpak_id = NULL; const char *version = NULL; GHashTable *name_to_addons = NULL; id = bz_entry_get_id (entry); unique_id = bz_entry_get_unique_id (entry); unique_id_checksum = bz_entry_get_unique_id_checksum (entry); if (id == NULL || unique_id == NULL || unique_id_checksum == NULL) return; user = bz_flatpak_entry_is_user (BZ_FLATPAK_ENTRY (entry)); name_to_addons = user ? self->usr_name_to_addons : self->sys_name_to_addons; installed = g_hash_table_contains (self->installed_set, unique_id); bz_entry_set_installed (entry, installed); version = g_hash_table_lookup (self->installed_set, unique_id); if (version != NULL && *version != '\0') bz_entry_set_installed_version (entry, version); flatpak_id = bz_flatpak_entry_get_flatpak_id (BZ_FLATPAK_ENTRY (entry)); if (flatpak_id != NULL) { GPtrArray *addons = NULL; addons = g_hash_table_lookup (name_to_addons, flatpak_id); if (addons != NULL) { g_debug ("Appending %d addons to %s", addons->len, unique_id); for (guint i = 0; i < addons->len; i++) { const char *addon_id = NULL; addon_id = g_ptr_array_index (addons, i); bz_entry_append_addon (entry, addon_id); } g_hash_table_remove (name_to_addons, flatpak_id); addons = NULL; } } if (bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_APPLICATION)) { gboolean ignore_eol = FALSE; const char *runtime_name = NULL; g_autoptr (BzEntry) eol_runtime = NULL; BzEntryGroup *group = NULL; GHashTable *ref_to_addon_group_ids = NULL; GPtrArray *pending = NULL; if (self->ignore_eol_set != NULL) ignore_eol = g_hash_table_contains (self->ignore_eol_set, id); runtime_name = bz_flatpak_entry_get_application_runtime (BZ_FLATPAK_ENTRY (entry)); if (!ignore_eol && runtime_name != NULL) { char *runtime_checksum = NULL; runtime_checksum = g_hash_table_lookup (self->eol_runtimes, runtime_name); if (runtime_checksum != NULL) eol_runtime = dex_await_object ( bz_entry_cache_manager_get_by_checksum ( self->cache, runtime_checksum), NULL); } group = ensure_group_and_add (self, id, entry, eol_runtime, ignore_eol, installed); ref_to_addon_group_ids = user ? self->usr_ref_to_addon_group_ids : self->sys_ref_to_addon_group_ids; pending = g_hash_table_lookup (ref_to_addon_group_ids, id); if (pending != NULL) { for (guint i = 0; i < pending->len; i++) bz_entry_group_append_addon_group_id (group, g_ptr_array_index (pending, i)); g_hash_table_remove (ref_to_addon_group_ids, id); } } if (flatpak_id != NULL && bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_RUNTIME) && g_str_has_prefix (flatpak_id, "runtime/")) { const char *stripped = NULL; const char *eol = NULL; stripped = flatpak_id + strlen ("runtime/"); eol = bz_entry_get_eol (entry); if (eol != NULL) g_hash_table_replace ( self->eol_runtimes, g_strdup (stripped), g_strdup (unique_id_checksum)); else g_hash_table_remove (self->eol_runtimes, stripped); } if (bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_ADDON) && strstr (id, ".Debug") == NULL && strstr (id, ".Locale") == NULL) { const char *extension_of_what = NULL; extension_of_what = bz_flatpak_entry_get_addon_extension_of_ref ( BZ_FLATPAK_ENTRY (entry)); if (extension_of_what != NULL && g_str_has_prefix (extension_of_what, "app/")) { g_auto (GStrv) parts = NULL; BzEntryGroup *app_group = NULL; ensure_group_and_add (self, id, entry, NULL, FALSE, installed); parts = g_strsplit (extension_of_what, "/", -1); if (parts != NULL && parts[1] != NULL) { app_group = g_hash_table_lookup (self->ids_to_groups, parts[1]); if (app_group != NULL) bz_entry_group_append_addon_group_id (app_group, id); else { GHashTable *ref_to_addon_group_ids = user ? self->usr_ref_to_addon_group_ids : self->sys_ref_to_addon_group_ids; GPtrArray *pending = NULL; pending = g_hash_table_lookup (ref_to_addon_group_ids, parts[1]); if (pending == NULL) { pending = g_ptr_array_new_with_free_func (g_free); g_hash_table_replace (ref_to_addon_group_ids, g_strdup (parts[1]), pending); } g_ptr_array_add (pending, g_strdup (id)); } } } if (extension_of_what != NULL) { GPtrArray *addons = NULL; /* BzFlatpakInstance ensures addons come before applications */ addons = g_hash_table_lookup (name_to_addons, extension_of_what); if (addons == NULL) { addons = g_ptr_array_new_with_free_func (g_free); g_hash_table_replace ( name_to_addons, g_strdup (extension_of_what), addons); } g_ptr_array_add (addons, g_strdup (unique_id)); } else g_warning ("Entry with unique id %s is an addon but " "does not seem to extend anything", unique_id); } } static void fiber_check_for_updates (BzApplication *self) { g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) update_ids = NULL; GtkWindow *window = NULL; g_debug ("Checking for updates..."); bz_state_info_set_background_task_label (self->state, _ ("Checking for updates…")); bz_state_info_set_checking_for_updates (self->state, TRUE); update_ids = dex_await_boxed ( bz_backend_retrieve_update_ids (BZ_BACKEND (self->flatpak), NULL), &local_error); window = gtk_application_get_active_window (GTK_APPLICATION (self)); if (update_ids != NULL && update_ids->len > 0) { g_autoptr (GPtrArray) futures = NULL; g_autoptr (GListStore) store = NULL; futures = g_ptr_array_new_with_free_func (dex_unref); for (guint i = 0; i < update_ids->len; i++) { const char *unique_id = NULL; unique_id = g_ptr_array_index (update_ids, i); g_ptr_array_add (futures, bz_entry_cache_manager_get (self->cache, unique_id)); } dex_await ( dex_future_allv ((DexFuture *const *) futures->pdata, futures->len), NULL); store = g_list_store_new (BZ_TYPE_ENTRY); for (guint i = 0; i < futures->len; i++) { DexFuture *future = NULL; const GValue *value = NULL; future = g_ptr_array_index (futures, i); value = dex_future_get_value (future, &local_error); if (value != NULL) g_list_store_append (store, g_value_get_object (value)); else { const char *unique_id = NULL; unique_id = g_ptr_array_index (update_ids, i); g_warning ("%s could not be resolved for the update list and thus will not be included: %s", unique_id, local_error->message); g_clear_pointer (&local_error, g_error_free); } } if (g_list_model_get_n_items (G_LIST_MODEL (store)) > 0) bz_state_info_set_available_updates (self->state, G_LIST_MODEL (store)); } else if (local_error != NULL) { g_warning ("Failed to check for updates: %s", local_error->message); if (window != NULL) bz_show_error_for_widget (GTK_WIDGET (window), _ ("Failed to check for updates"), local_error->message); } if (update_ids != NULL || local_error == NULL) g_settings_set_int64 ( self->settings, "last-update-check", g_get_real_time () / G_USEC_PER_SEC); bz_state_info_set_checking_for_updates (self->state, FALSE); } static GFile * fiber_dup_cache_file (const char *name, char **path_out, GError **error) { gboolean result = FALSE; g_autofree char *module_dir = NULL; g_autoptr (GFile) module_dir_file = NULL; g_autofree char *path = NULL; g_autoptr (GFile) file = NULL; module_dir = bz_dup_module_dir (); module_dir_file = g_file_new_for_path (module_dir); result = dex_await ( dex_file_make_directory_with_parents (module_dir_file), error); if (!result) return NULL; path = g_build_filename (module_dir, name, NULL); file = g_file_new_for_path (path); if (path_out != NULL) *path_out = g_steal_pointer (&path); return g_steal_pointer (&file); } static gboolean periodic_timeout_cb (BzApplication *self) { gboolean have_connection = FALSE; gboolean metered_connection = FALSE; if (self->sync != NULL && dex_future_is_pending (self->sync)) /* If for some reason the last update check is still happening, let it finish */ goto done; dex_clear (&self->sync); have_connection = bz_state_info_get_have_connection (self->state); metered_connection = bz_state_info_get_metered_connection (self->state); if (have_connection && !metered_connection) /* Do not do periodic sync on metered connections. The user will have to manually refresh instead. */ self->sync = make_sync_future (self); else bz_state_info_set_recently_synced (self->state, FALSE); done: return G_SOURCE_CONTINUE; } static gboolean scheduled_timeout_cb (BzWeakRef *wr) { g_autoptr (BzApplication) self = NULL; gboolean have_connection = FALSE; /* Use weak ref here since the source tag of this callback won't be tracked by the main application obj */ self = g_weak_ref_get (&wr->ref); if (self == NULL) goto done; dex_clear (&self->sync); have_connection = bz_state_info_get_have_connection (self->state); if (have_connection) self->sync = make_sync_future (self); done: return G_SOURCE_REMOVE; } static void network_status_changed (BzApplication *self, GParamSpec *pspec, GNetworkMonitor *network) { gboolean was_connected = FALSE; gboolean was_metered = FALSE; GNetworkConnectivity connectivity = 0; gboolean have_connection = FALSE; gboolean is_metered = FALSE; was_connected = bz_state_info_get_have_connection (self->state); was_metered = bz_state_info_get_metered_connection (self->state); connectivity = g_network_monitor_get_connectivity (network); have_connection = connectivity == G_NETWORK_CONNECTIVITY_FULL; is_metered = g_network_monitor_get_network_metered (network); if (!bz_state_info_get_busy (self->state) && ((!was_connected && have_connection && !is_metered) || (was_metered && !is_metered))) /* Wait a bit to prevent flakiness */ g_timeout_add_full ( G_PRIORITY_DEFAULT, 500, (GSourceFunc) scheduled_timeout_cb, bz_weak_ref_new (self), (GDestroyNotify) bz_weak_ref_unref); bz_state_info_set_have_connection (self->state, have_connection); bz_state_info_set_metered_connection (self->state, is_metered); } static void disable_blocklists_changed (BzApplication *self, GParamSpec *pspec, BzStateInfo *state) { gtk_filter_changed (GTK_FILTER (self->group_filter), GTK_FILTER_CHANGE_DIFFERENT); gtk_filter_changed (GTK_FILTER (self->appid_filter), GTK_FILTER_CHANGE_DIFFERENT); } static void transactions_active_changed (BzApplication *self, GParamSpec *pspec, BzTransactionManager *transactions) { if (bz_transaction_manager_get_active (transactions)) g_application_hold (G_APPLICATION (self)); else g_application_release (G_APPLICATION (self)); } static void show_hide_app_setting_changed (BzApplication *self, const char *key, GSettings *settings) { g_object_freeze_notify (G_OBJECT (self->state)); bz_state_info_set_hide_eol (self->state, g_settings_get_boolean (self->settings, "hide-eol")); bz_state_info_set_show_only_foss (self->state, g_settings_get_boolean (self->settings, "show-only-foss")); bz_state_info_set_show_only_flathub (self->state, g_settings_get_boolean (self->settings, "show-only-flathub")); bz_state_info_set_show_only_verified (self->state, g_settings_get_boolean (self->settings, "show-only-verified")); gtk_filter_changed (GTK_FILTER (self->group_filter), GTK_FILTER_CHANGE_DIFFERENT); gtk_filter_changed (GTK_FILTER (self->appid_filter), GTK_FILTER_CHANGE_DIFFERENT); g_object_thaw_notify (G_OBJECT (self->state)); } static gboolean window_close_request (BzApplication *self, GtkWidget *window) { int width = 0; int height = 0; GList *remaining_windows = NULL; gboolean reap_dl_workers = TRUE; width = gtk_widget_get_width (window); height = gtk_widget_get_height (window); g_settings_set (self->settings, "window-dimensions", "(ii)", width, height); remaining_windows = gtk_application_get_windows ( GTK_APPLICATION (self)); for (GList *l = remaining_windows; l != NULL; l = l->next) { if (l->data != window) { reap_dl_workers = FALSE; break; } } if (reap_dl_workers) /* If no windows are left, kill the dl-worker subprocesses to minimize idle memory usage */ bz_reap_default_download_workers (); /* Do not stop other handlers from being invoked for the signal */ return FALSE; } static void blocklists_changed (BzApplication *self, guint position, guint removed, guint added, GListModel *model) { g_autoptr (GError) local_error = NULL; if (removed > 0) g_ptr_array_remove_range (self->blocklist_regexes, position, removed); for (guint i = 0; i < added; i++) { g_autoptr (BzRootBlocklist) root = NULL; g_autoptr (GPtrArray) regex_datas = NULL; GListModel *blocklists = NULL; root = g_list_model_get_item (model, position + i); regex_datas = g_ptr_array_new_with_free_func (blocklist_regex_data_unref); blocklists = bz_root_blocklist_get_blocklists (root); if (blocklists != NULL) { guint n_blocklists = 0; n_blocklists = g_list_model_get_n_items (blocklists); for (guint j = 0; j < n_blocklists; j++) { g_autoptr (BzBlocklist) blocklist = NULL; GListModel *conditions = NULL; GListModel *allow = NULL; GListModel *allow_regex = NULL; GListModel *block = NULL; GListModel *block_regex = NULL; g_autoptr (BlocklistRegexData) data = NULL; blocklist = g_list_model_get_item (blocklists, j); allow = bz_blocklist_get_allow (blocklist); allow_regex = bz_blocklist_get_allow_regex (blocklist); block = bz_blocklist_get_block (blocklist); block_regex = bz_blocklist_get_block_regex (blocklist); if (allow == NULL && allow_regex == NULL && block == NULL && block_regex == NULL) { g_warning ("Blocklist file has an empty blocklist, ignoring"); continue; } conditions = bz_blocklist_get_conditions (blocklist); if (conditions != NULL) { guint n_conditions = 0; gboolean ignore = FALSE; n_conditions = g_list_model_get_n_items (conditions); for (guint k = 0; k < n_conditions; k++) { gboolean condition_result = FALSE; g_autoptr (BzBlocklistCondition) condition = NULL; BzBlocklistConditionMatchEnvvar *match_envvar = NULL; BzBlocklistConditionMatchLocale *match_locale = NULL; BzBlocklistConditionPostProcessKind postprocess = BZ_BLOCKLIST_CONDITION_POST_PROCESS_KIND_IDENTITY; condition = g_list_model_get_item (conditions, k); match_envvar = bz_blocklist_condition_get_match_envvar (condition); match_locale = bz_blocklist_condition_get_match_locale (condition); postprocess = bz_blocklist_condition_get_post_process (condition); if (match_envvar == NULL && match_locale == NULL) { g_warning ("Blocklist file has an empty condition"); continue; } if (!condition_result && match_envvar != NULL) { const char *var = NULL; const char *regex = NULL; var = bz_blocklist_condition_match_envvar_get_var (match_envvar); regex = bz_blocklist_condition_match_envvar_get_regex (match_envvar); if (var != NULL && regex != NULL) { g_autoptr (GRegex) compiled = NULL; const char *value = NULL; compiled = g_regex_new ( regex, G_REGEX_ANCHORED, G_REGEX_MATCH_ANCHORED, &local_error); if (compiled == NULL) { g_warning ("Blocklist condition contains invalid regex: %s", local_error->message); g_clear_error (&local_error); continue; } value = g_getenv (var); if (value != NULL && g_regex_match ( compiled, value, G_REGEX_MATCH_ANCHORED, NULL)) condition_result = TRUE; if (postprocess == BZ_BLOCKLIST_CONDITION_POST_PROCESS_KIND_INVERT) condition_result = !condition_result; } else g_warning ("Blocklist file has a envvar condition " "missing a var and/or a regex pattern"); } if (!condition_result && match_locale != NULL) { const char *regex = NULL; regex = bz_blocklist_condition_match_locale_get_regex (match_locale); if (regex != NULL) { g_autoptr (GRegex) compiled = NULL; const char *const *locales = NULL; compiled = g_regex_new ( regex, G_REGEX_ANCHORED, G_REGEX_MATCH_ANCHORED, &local_error); if (compiled == NULL) { g_warning ("Blocklist condition contains invalid regex: %s", local_error->message); g_clear_error (&local_error); continue; } locales = g_get_language_names (); for (guint l = 0; locales[l] != NULL; l++) { if (g_regex_match ( compiled, locales[i], G_REGEX_MATCH_ANCHORED, NULL)) condition_result = TRUE; if (condition_result) break; } if (postprocess == BZ_BLOCKLIST_CONDITION_POST_PROCESS_KIND_INVERT) condition_result = !condition_result; } else g_warning ("Blocklist file has a match-locale " "condition missing a regex pattern"); } if (!condition_result) { ignore = TRUE; break; } } if (ignore) continue; } data = blocklist_regex_data_new (); data->priority = bz_blocklist_get_priority (blocklist); #define BUILD_REGEX(_name, _builder) \ if (_name != NULL) \ { \ guint _n_strings = 0; \ \ _n_strings = g_list_model_get_n_items (_name); \ for (guint _i = 0; _i < _n_strings; _i++) \ { \ g_autoptr (GtkStringObject) _object = NULL; \ const char *_string = NULL; \ g_autoptr (GRegex) _regex = NULL; \ \ _object = g_list_model_get_item (_name, _i); \ _string = gtk_string_object_get_string (_object); \ _regex = g_regex_new (_string, G_REGEX_DEFAULT, G_REGEX_MATCH_DEFAULT, &local_error); \ \ if (_regex != NULL) \ g_strv_builder_add (_builder, _string); \ else \ { \ g_warning ("Blocklist file has an invalid " \ "regular expression '%s': %s", \ _string, local_error->message); \ g_clear_error (&local_error); \ } \ } \ } #define BUILD_REGEX_ESCAPED(_name, _builder) \ if (_name != NULL) \ { \ guint _n_strings = 0; \ \ _n_strings = g_list_model_get_n_items (_name); \ for (guint _i = 0; _i < _n_strings; _i++) \ { \ g_autoptr (GtkStringObject) _object = NULL; \ const char *_string = NULL; \ \ _object = g_list_model_get_item (_name, _i); \ _string = gtk_string_object_get_string (_object); \ \ g_strv_builder_take (_builder, g_regex_escape_string (_string, -1)); \ } \ } #define GATHER(name) \ if (name != NULL || \ name##_regex != NULL) \ { \ g_autoptr (GStrvBuilder) _builder = NULL; \ g_auto (GStrv) _patterns = NULL; \ \ _builder = g_strv_builder_new (); \ \ BUILD_REGEX_ESCAPED (name, _builder) \ BUILD_REGEX (name##_regex, _builder) \ \ _patterns = g_strv_builder_end (_builder); \ if (_patterns != NULL) \ { \ g_autofree char *_joined = NULL; \ g_autofree char *_regex_string = NULL; \ \ _joined = g_strjoinv ("|", _patterns); \ _regex_string = g_strdup_printf ("^(%s)$", _joined); \ data->name = g_regex_new (_regex_string, G_REGEX_OPTIMIZE, \ G_REGEX_MATCH_DEFAULT, NULL); \ } \ } GATHER (allow); GATHER (block); #undef GATHER #undef BUILD_REGEX_ESCAPED #undef BUILD_REGEX if (data->allow != NULL || data->block != NULL) g_ptr_array_add (regex_datas, g_steal_pointer (&data)); } } g_ptr_array_insert (self->blocklist_regexes, position + i, g_steal_pointer (®ex_datas)); } gtk_filter_changed (GTK_FILTER (self->group_filter), GTK_FILTER_CHANGE_DIFFERENT); gtk_filter_changed (GTK_FILTER (self->appid_filter), GTK_FILTER_CHANGE_DIFFERENT); } static void txt_blocklists_changed (BzApplication *self, guint position, guint removed, guint added, GListModel *model) { if (removed > 0) g_ptr_array_remove_range (self->txt_blocked_id_sets, position, removed); for (guint i = 0; i < added; i++) { g_autoptr (BzHashTableObject) obj = NULL; GHashTable *set = NULL; obj = g_list_model_get_item (model, position + i); set = bz_hash_table_object_get_hash_table (obj); g_ptr_array_insert (self->txt_blocked_id_sets, position + i, g_hash_table_ref (set)); } gtk_filter_changed (GTK_FILTER (self->group_filter), GTK_FILTER_CHANGE_DIFFERENT); gtk_filter_changed (GTK_FILTER (self->appid_filter), GTK_FILTER_CHANGE_DIFFERENT); } static void init_service_struct (BzApplication *self, GtkStringList *blocklists, GtkStringList *txt_blocklists, GtkStringList *curated_configs) { g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) internal_config_bytes = NULL; g_autoptr (BzYamlParser) internal_config_parser = NULL; g_autoptr (GHashTable) internal_config_parse_results = NULL; const char *app_id = NULL; #ifdef HARDCODED_MAIN_CONFIG g_autoptr (GFile) config_file = NULL; g_autoptr (GBytes) config_bytes = NULL; #endif GtkCustomFilter *filter = NULL; GNetworkMonitor *network = NULL; g_type_ensure (BZ_TYPE_INTERNAL_CONFIG); internal_config_bytes = g_resources_lookup_data ( "/io/github/kolunmi/Bazaar/internal-config.yaml", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL); g_assert (internal_config_bytes != NULL); internal_config_parser = bz_yaml_parser_new_for_resource_schema ( "/io/github/kolunmi/Bazaar/internal-config-schema.xml"); g_assert (internal_config_parser != NULL); internal_config_parse_results = bz_parser_process_bytes ( BZ_PARSER (internal_config_parser), internal_config_bytes, &local_error); if (internal_config_parse_results == NULL) g_critical ("FATAL: unable to parse internal config resource: %s", local_error->message); g_assert (internal_config_parse_results != NULL); self->internal_config = g_value_dup_object (g_hash_table_lookup (internal_config_parse_results, "/")); g_type_ensure (BZ_TYPE_MAIN_CONFIG); #ifdef HARDCODED_MAIN_CONFIG config_file = g_file_new_for_path (HARDCODED_MAIN_CONFIG); config_bytes = g_file_load_bytes (config_file, NULL, NULL, &local_error); if (config_bytes != NULL) { g_autoptr (BzYamlParser) parser = NULL; g_autoptr (GHashTable) parse_results = NULL; parser = bz_yaml_parser_new_for_resource_schema ( "/io/github/kolunmi/Bazaar/main-config-schema.xml"); parse_results = bz_parser_process_bytes ( BZ_PARSER (parser), config_bytes, &local_error); if (parse_results != NULL) { GListModel *override_eol_markings = NULL; self->config = g_value_dup_object (g_hash_table_lookup (parse_results, "/")); override_eol_markings = bz_main_config_get_override_eol_markings (self->config); if (override_eol_markings != NULL) { guint n_appids = 0; self->ignore_eol_set = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, g_free); n_appids = g_list_model_get_n_items (override_eol_markings); for (guint i = 0; i < n_appids; i++) { g_autoptr (GtkStringObject) string = NULL; const char *value = NULL; string = g_list_model_get_item (override_eol_markings, i); value = gtk_string_object_get_string (string); g_hash_table_replace (self->ignore_eol_set, g_strdup (value), NULL); } } } else { g_warning ("Could not load main config at %s: %s", HARDCODED_MAIN_CONFIG, local_error->message); g_clear_error (&local_error); } } g_clear_error (&local_error); #endif self->init_timer = g_timer_new (); self->ready_to_open_files = dex_promise_new (); self->first_window_opened = dex_promise_new (); if (self->config != NULL && bz_main_config_get_yaml_blocklist_paths (self->config) != NULL) { GListModel *paths = NULL; guint n_paths = 0; paths = bz_main_config_get_yaml_blocklist_paths (self->config); n_paths = g_list_model_get_n_items (paths); for (guint i = 0; i < n_paths; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (paths, i); gtk_string_list_append (blocklists, gtk_string_object_get_string (string)); } } self->blocklists = g_object_ref (blocklists); self->blocklists_to_files = gtk_map_list_model_new ( NULL, (GtkMapListModelMapFunc) map_strings_to_files, NULL, NULL); gtk_map_list_model_set_model ( self->blocklists_to_files, G_LIST_MODEL (self->blocklists)); if (self->config != NULL && bz_main_config_get_txt_blocklist_paths (self->config) != NULL) { GListModel *paths = NULL; guint n_paths = 0; paths = bz_main_config_get_txt_blocklist_paths (self->config); n_paths = g_list_model_get_n_items (paths); for (guint i = 0; i < n_paths; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (paths, i); gtk_string_list_append (txt_blocklists, gtk_string_object_get_string (string)); } } self->txt_blocklists = g_object_ref (txt_blocklists); self->txt_blocklists_to_files = gtk_map_list_model_new ( NULL, (GtkMapListModelMapFunc) map_strings_to_files, NULL, NULL); gtk_map_list_model_set_model ( self->txt_blocklists_to_files, G_LIST_MODEL (self->txt_blocklists)); if (self->config != NULL && bz_main_config_get_curated_config_paths (self->config) != NULL) { GListModel *paths = NULL; guint n_paths = 0; paths = bz_main_config_get_curated_config_paths (self->config); n_paths = g_list_model_get_n_items (paths); for (guint i = 0; i < n_paths; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (paths, i); gtk_string_list_append (curated_configs, gtk_string_object_get_string (string)); } } #ifdef DEVELOPMENT_BUILD if (g_list_model_get_n_items (G_LIST_MODEL (curated_configs)) == 0) { g_autofree char *dest_path = NULL; g_autoptr (GFile) src = NULL; g_autoptr (GFile) dest = NULL; dest_path = g_build_filename (g_get_user_data_dir (), "example.yaml", NULL); src = g_file_new_for_path (DEVELOPMENT_EXAMPLE_YAML); dest = g_file_new_for_path (dest_path); g_file_copy (src, dest, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, NULL); gtk_string_list_append (curated_configs, dest_path); } #endif self->curated_configs = g_object_ref (curated_configs); self->curated_configs_to_files = gtk_map_list_model_new ( NULL, (GtkMapListModelMapFunc) map_strings_to_files, NULL, NULL); gtk_map_list_model_set_model ( self->curated_configs_to_files, G_LIST_MODEL (self->curated_configs)); self->search_biases = gtk_flatten_list_model_new (NULL); self->search_biases_backing = g_list_store_new (G_TYPE_LIST_MODEL); { GListModel *main_config_search_biases = NULL; GListModel *internal_config_search_biases = NULL; if (self->config != NULL) main_config_search_biases = bz_main_config_get_search_biases (self->config); internal_config_search_biases = bz_internal_config_get_search_biases (self->internal_config); /* Main config biases take precedence over the hardcoded ones */ if (main_config_search_biases != NULL) g_list_store_append (self->search_biases_backing, main_config_search_biases); if (internal_config_search_biases != NULL) g_list_store_append (self->search_biases_backing, internal_config_search_biases); } gtk_flatten_list_model_set_model ( self->search_biases, G_LIST_MODEL (self->search_biases_backing)); g_type_ensure (BZ_TYPE_ROOT_BLOCKLIST); g_type_ensure (BZ_TYPE_BLOCKLIST); g_type_ensure (BZ_TYPE_BLOCKLIST_CONDITION); self->blocklist_parser = bz_yaml_parser_new_for_resource_schema ( "/io/github/kolunmi/Bazaar/blocklist-schema.xml"); self->txt_blocklist_parser = bz_newline_parser_new ( TRUE, MAX_IDS_PER_BLOCKLIST); g_type_ensure (BZ_TYPE_ROOT_CURATED_CONFIG); g_type_ensure (BZ_TYPE_CURATED_ROW); g_type_ensure (BZ_TYPE_CURATED_SECTION); g_type_ensure (BZ_TYPE_CURATED_ARTICLE); self->curated_parser = bz_yaml_parser_new_for_resource_schema ( "/io/github/kolunmi/Bazaar/curated-config-schema.xml"); self->cache = bz_entry_cache_manager_new (); self->state = bz_state_info_new (); bz_state_info_set_busy (self->state, TRUE); bz_state_info_set_donation_prompt_dismissed (self->state, TRUE); bz_state_info_set_parental_age_rating (self->state, -1); state_info_set_icon_themes (self->state); { g_autoptr (GError) bus_error = NULL; g_autoptr (GDBusConnection) sys_bus = NULL; sys_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &bus_error); if (sys_bus != NULL) self->malcontent = bz_malcontent_service_new (sys_bus, self->state); else g_warning ("Failed to connect to system bus for malcontent: %s", bus_error->message); if (self->malcontent != NULL) g_signal_connect_swapped ( self->state, "notify::parental-age-rating", G_CALLBACK (show_hide_app_setting_changed), self); } g_signal_connect_swapped ( self->state, "notify::disable-blocklists", G_CALLBACK (disable_blocklists_changed), self); network = g_network_monitor_get_default (); if (network != NULL) { GNetworkConnectivity connectivity = 0; gboolean metered = FALSE; connectivity = g_network_monitor_get_connectivity (network); bz_state_info_set_have_connection (self->state, connectivity == G_NETWORK_CONNECTIVITY_FULL); metered = g_network_monitor_get_network_metered (network); bz_state_info_set_metered_connection (self->state, metered); g_signal_connect_swapped (network, "notify", G_CALLBACK (network_status_changed), self); } else g_warning ("Unable to detect networking device! Continuing anyway..."); app_id = g_application_get_application_id (G_APPLICATION (self)); g_assert (app_id != NULL); g_debug ("Constructing gsettings for %s ...", app_id); self->settings = g_settings_new (app_id); if (g_settings_get_boolean (self->settings, "force-adwaita-icons")) { GtkSettings *gtk_settings = NULL; gtk_settings = gtk_settings_get_default (); g_object_set ( gtk_settings, "gtk-icon-theme-name", "Adwaita", NULL); } bz_state_info_set_hide_eol ( self->state, g_settings_get_boolean (self->settings, "hide-eol")); g_signal_connect_swapped ( self->settings, "changed::hide-eol", G_CALLBACK (show_hide_app_setting_changed), self); bz_state_info_set_show_only_foss ( self->state, g_settings_get_boolean (self->settings, "show-only-foss")); g_signal_connect_swapped ( self->settings, "changed::show-only-foss", G_CALLBACK (show_hide_app_setting_changed), self); bz_state_info_set_show_only_flathub ( self->state, g_settings_get_boolean (self->settings, "show-only-flathub")); g_signal_connect_swapped ( self->settings, "changed::show-only-flathub", G_CALLBACK (show_hide_app_setting_changed), self); bz_state_info_set_show_only_verified ( self->state, g_settings_get_boolean (self->settings, "show-only-verified")); g_signal_connect_swapped ( self->settings, "changed::show-only-verified", G_CALLBACK (show_hide_app_setting_changed), self); self->blocklist_regexes = g_ptr_array_new_with_free_func ( (GDestroyNotify) g_ptr_array_unref); self->blocklists_provider = bz_content_provider_new (); bz_content_provider_set_parser (self->blocklists_provider, BZ_PARSER (self->blocklist_parser)); bz_content_provider_set_input_files ( self->blocklists_provider, G_LIST_MODEL (self->blocklists_to_files)); g_signal_connect_swapped (self->blocklists_provider, "items-changed", G_CALLBACK (blocklists_changed), self); self->txt_blocked_id_sets = g_ptr_array_new_with_free_func ( (GDestroyNotify) g_hash_table_unref); self->txt_blocklists_provider = bz_content_provider_new (); bz_content_provider_set_parser (self->txt_blocklists_provider, BZ_PARSER (self->txt_blocklist_parser)); bz_content_provider_set_input_files ( self->txt_blocklists_provider, G_LIST_MODEL (self->txt_blocklists_to_files)); g_signal_connect_swapped (self->txt_blocklists_provider, "items-changed", G_CALLBACK (txt_blocklists_changed), self); self->groups = g_list_store_new (BZ_TYPE_ENTRY_GROUP); self->installed_apps = g_list_store_new (BZ_TYPE_ENTRY_GROUP); self->ids_to_groups = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, g_object_unref); self->eol_runtimes = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, g_free); self->sys_name_to_addons = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_ptr_array_unref); self->usr_name_to_addons = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_ptr_array_unref); self->sys_ref_to_addon_group_ids = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_ptr_array_unref); self->usr_ref_to_addon_group_ids = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_ptr_array_unref); self->entry_factory = bz_application_map_factory_new ( (GtkMapListModelMapFunc) map_ids_to_entries, self, NULL, NULL, NULL); filter = gtk_custom_filter_new ( (GtkCustomFilterFunc) filter_application_ids, self, NULL); self->appid_filter = g_object_ref_sink (g_steal_pointer (&filter)); self->application_factory = bz_application_map_factory_new ( (GtkMapListModelMapFunc) map_generic_ids_to_groups, self, NULL, NULL, GTK_FILTER (self->appid_filter)); filter = gtk_custom_filter_new ( (GtkCustomFilterFunc) filter_entry_groups, self, NULL); self->group_filter = g_object_ref_sink (g_steal_pointer (&filter)); self->group_filter_model = gtk_filter_list_model_new ( g_object_ref (G_LIST_MODEL (self->groups)), g_object_ref (GTK_FILTER (self->group_filter))); self->search_engine = bz_search_engine_new (); bz_search_engine_set_model (self->search_engine, G_LIST_MODEL (self->group_filter_model)); bz_search_engine_set_biases (self->search_engine, G_LIST_MODEL (self->search_biases)); self->curated_provider = bz_content_provider_new (); bz_content_provider_set_input_files ( self->curated_provider, G_LIST_MODEL (self->curated_configs_to_files)); bz_content_provider_set_parser (self->curated_provider, BZ_PARSER (self->curated_parser)); self->transactions = bz_transaction_manager_new (); bz_transaction_manager_set_config (self->transactions, self->config); g_signal_connect_swapped ( self->transactions, "notify::active", G_CALLBACK (transactions_active_changed), self); bz_state_info_set_all_entry_groups (self->state, G_LIST_MODEL (self->groups)); bz_state_info_set_all_installed_entry_groups (self->state, G_LIST_MODEL (self->installed_apps)); bz_state_info_set_filtered_entry_groups (self->state, G_LIST_MODEL (self->group_filter_model)); bz_state_info_set_application_factory (self->state, self->application_factory); bz_state_info_set_blocklists (self->state, G_LIST_MODEL (self->blocklists)); bz_state_info_set_blocklists_provider (self->state, self->blocklists_provider); bz_state_info_set_curated_configs (self->state, G_LIST_MODEL (self->curated_configs)); bz_state_info_set_curated_provider (self->state, self->curated_provider); bz_state_info_set_entry_factory (self->state, self->entry_factory); bz_state_info_set_main_config (self->state, self->config); bz_state_info_set_search_engine (self->state, self->search_engine); bz_state_info_set_settings (self->state, self->settings); bz_state_info_set_transaction_manager (self->state, self->transactions); bz_state_info_set_txt_blocklists (self->state, G_LIST_MODEL (self->txt_blocklists)); bz_state_info_set_txt_blocklists_provider (self->state, self->txt_blocklists_provider); bz_state_info_set_cache_manager (self->state, self->cache); g_object_bind_property ( self->state, "allow-manual-sync", g_action_map_lookup_action (G_ACTION_MAP (self), "sync-remotes"), "enabled", G_BINDING_SYNC_CREATE); gtk_style_context_add_provider_for_display ( gdk_display_get_default (), bz_get_pride_style_provider (), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } static GtkWindow * get_or_create_window (BzApplication *self) { GtkWindow *window = NULL; GList *windows = NULL; window = gtk_application_get_active_window (GTK_APPLICATION (self)); if (BZ_IS_WINDOW (window)) { gtk_window_present (window); return window; } windows = gtk_application_get_windows (GTK_APPLICATION (self)); for (GList *l = windows; l != NULL; l = l->next) { if (BZ_IS_WINDOW (l->data)) { gtk_window_present (GTK_WINDOW (l->data)); return GTK_WINDOW (l->data); } } return new_window (self); } static GtkWindow * new_window (BzApplication *self) { BzWindow *window = NULL; g_autoptr (GtkWidget) main_window = NULL; int width = 0; int height = 0; window = bz_window_new (self->state); gtk_application_add_window (GTK_APPLICATION (self), GTK_WINDOW (window)); main_window = g_weak_ref_get (&self->main_window); if (main_window != NULL) { width = gtk_widget_get_width (main_window); height = gtk_widget_get_height (main_window); g_settings_set (self->settings, "window-dimensions", "(ii)", width, height); } else { g_settings_get (self->settings, "window-dimensions", "(ii)", &width, &height); g_signal_connect_object ( window, "close-request", G_CALLBACK (window_close_request), self, G_CONNECT_SWAPPED); g_weak_ref_init (&self->main_window, window); } gtk_window_set_default_size (GTK_WINDOW (window), width, height); gtk_window_present (GTK_WINDOW (window)); if (dex_future_is_pending (DEX_FUTURE (self->first_window_opened))) dex_promise_resolve_boolean (self->first_window_opened, TRUE); return GTK_WINDOW (window); } static void open_appstream_take (BzApplication *self, char *appstream) { g_autoptr (BzWeakRef) wr = NULL; const char *id = NULL; g_info ("Loading appstream link %s...", appstream); wr = bz_weak_ref_new (self); if (g_str_has_prefix (appstream, "appstream://")) id = appstream + strlen ("appstream://"); else id = appstream + strlen ("appstream:"); dex_future_disown (dex_scheduler_spawnv ( dex_scheduler_get_default (), bz_get_dex_stack_size (), G_CALLBACK (open_appstream_fiber), 2, BZ_TYPE_WEAK_REF, wr, G_TYPE_STRING, id)); g_free (appstream); } static void open_flatpakref_take (BzApplication *self, GFile *file) { g_autoptr (GError) local_error = NULL; g_autoptr (BzWeakRef) wr = NULL; gboolean result = FALSE; g_autofree char *path = NULL; wr = bz_weak_ref_new (self); path = g_file_get_path (file); if (path != NULL) /* We must do this synchronously so we don't lose access to a portal file */ { g_autofree char *basename = NULL; g_autofree char *module_dir = NULL; g_autofree char *staging = NULL; g_autofree char *dest = NULL; g_autoptr (GFile) copied = NULL; basename = g_file_get_basename (file); module_dir = bz_dup_module_dir (); staging = g_build_filename (module_dir, "bundle-staging", NULL); g_mkdir_with_parents (staging, 0755); dest = g_build_filename (staging, basename, NULL); copied = g_file_new_for_path (dest); result = g_file_copy ( file, copied, G_FILE_COPY_OVERWRITE | G_FILE_COPY_NOFOLLOW_SYMLINKS, NULL, NULL, NULL, &local_error); if (result) { g_clear_object (&file); file = g_steal_pointer (&copied); } else { g_warning ("Failed to copy bundle to %s : %s", dest, local_error->message); g_clear_error (&local_error); g_clear_object (&copied); } } dex_future_disown (dex_scheduler_spawnv ( dex_scheduler_get_default (), bz_get_dex_stack_size (), G_CALLBACK (open_flatpakref_fiber), 2, BZ_TYPE_WEAK_REF, wr, G_TYPE_FILE, file)); g_object_unref (file); } static void open_metainfo_take (BzApplication *self, GFile *file) { g_autoptr (BzWeakRef) wr = NULL; wr = bz_weak_ref_new (self); dex_future_disown (dex_scheduler_spawnv ( dex_scheduler_get_default (), bz_get_dex_stack_size (), G_CALLBACK (open_metainfo_fiber), 2, BZ_TYPE_WEAK_REF, wr, G_TYPE_FILE, file)); g_object_unref (file); } static void command_line_open_location (BzApplication *self, GApplicationCommandLine *cmdline, const char *location) { g_autoptr (GFile) file = NULL; if (g_uri_is_valid (location, G_URI_FLAGS_NONE, NULL) && g_str_has_prefix (location, "appstream:")) { open_appstream_take (self, g_strdup (location)); return; } if (g_uri_is_valid (location, G_URI_FLAGS_NONE, NULL)) file = g_file_new_for_uri (location); else if (g_path_is_absolute (location)) file = g_file_new_for_path (location); else { const char *cwd = NULL; cwd = g_application_command_line_get_cwd (cmdline); file = cwd != NULL ? g_file_new_build_filename (cwd, location, NULL) : g_file_new_for_path (location); } if (g_str_has_suffix (location, ".metainfo.xml") || g_str_has_suffix (location, ".appdata.xml")) open_metainfo_take (self, g_steal_pointer (&file)); else open_flatpakref_take (self, g_steal_pointer (&file)); } static void open_generic_id (BzApplication *self, const char *generic_id) { BzEntryGroup *group = NULL; GtkWindow *window = NULL; g_autofree char *corrected_id = NULL; const char *original_id = generic_id; const char *matched_id = generic_id; gboolean case_fixed = FALSE; group = g_hash_table_lookup (self->ids_to_groups, generic_id); // This is needed because KDE likes to mangle IDs just for fun... if (group == NULL) { gsize len = 0; len = strlen (generic_id); // if it has more than 3 parts and end with ".desktop" then cut it off. if (len > 8 && g_str_has_suffix (generic_id, ".desktop")) { guint n_dots = 0; const char *suffix = NULL; for (const char *p = strchr (generic_id, '.'); p != NULL; p = strchr (p, '.')) { if (++n_dots >= 3) { suffix = strstr (generic_id, ".desktop"); g_assert (suffix != NULL); break; } } if (suffix != NULL) { corrected_id = g_strndup (generic_id, suffix - generic_id); generic_id = corrected_id; matched_id = corrected_id; group = g_hash_table_lookup (self->ids_to_groups, generic_id); } } if (group == NULL) { GHashTableIter iter = { 0 }; g_hash_table_iter_init (&iter, self->ids_to_groups); for (;;) /* screeching sounds */ { char *key = NULL; BzEntryGroup *value = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &key, (gpointer *) &value)) break; if (g_ascii_strcasecmp (key, generic_id) == 0) { group = value; matched_id = key; case_fixed = TRUE; break; } } } if (group == NULL) matched_id = original_id; } window = get_or_create_window (self); if (adw_application_window_get_visible_dialog (ADW_APPLICATION_WINDOW (window)) != NULL) window = new_window (self); if (group != NULL) { gtk_widget_activate_action (GTK_WIDGET (window), "window.show-group", "s", matched_id); if (case_fixed) bz_show_error_for_widget ( GTK_WIDGET (window), _ ("Malformed Link"), _ ("The link used to open this app has incorrect capitalization and may stop working in the future.\n\n" "This is most likely caused by KRunner sending incorrect app IDs")); } else { g_autofree char *message = NULL; message = g_strdup_printf ("ID '%s' was not found", original_id); bz_show_error_for_widget (GTK_WIDGET (window), _ ("Could not find app"), message); } } static gpointer map_strings_to_files (GtkStringObject *string, gpointer data) { const char *path = NULL; GFile *result = NULL; path = gtk_string_object_get_string (string); result = g_file_new_for_path (path); g_object_unref (string); return result; } static gpointer map_generic_ids_to_groups (GtkStringObject *string, BzApplication *self) { BzEntryGroup *group = NULL; group = g_hash_table_lookup ( self->ids_to_groups, gtk_string_object_get_string (string)); g_object_unref (string); return bz_object_maybe_ref (group); } static gpointer map_ids_to_entries (GtkStringObject *string, BzApplication *self) { g_autoptr (GError) local_error = NULL; const char *id = NULL; g_autoptr (DexFuture) future = NULL; g_autoptr (BzResult) result = NULL; id = gtk_string_object_get_string (string); future = bz_entry_cache_manager_get (self->cache, id); result = bz_result_new (future); g_object_unref (string); return g_steal_pointer (&result); } static gboolean filter_application_ids (GtkStringObject *string, BzApplication *self) { BzEntryGroup *group = NULL; group = g_hash_table_lookup ( self->ids_to_groups, gtk_string_object_get_string (string)); if (group != NULL) return validate_group_for_ui (self, group); else return FALSE; } static gboolean filter_entry_groups (BzEntryGroup *group, BzApplication *self) { return validate_group_for_ui (self, group); } static gint cmp_group (BzEntryGroup *a, BzEntryGroup *b, gpointer user_data) { const char *title_a = NULL; const char *title_b = NULL; title_a = bz_entry_group_get_title (a); title_b = bz_entry_group_get_title (b); if (title_a == NULL) return 1; if (title_b == NULL) return -1; return strcasecmp (title_a, title_b); } static gboolean validate_group_for_ui (BzApplication *self, BzEntryGroup *group) { const char *id = NULL; int allowed_priority = G_MAXINT; int blocked_priority = G_MAXINT; if (bz_state_info_get_hide_eol (self->state) && bz_entry_group_get_eol (group) != NULL) return FALSE; if (bz_state_info_get_show_only_foss (self->state) && !bz_entry_group_get_is_floss (group)) return FALSE; if (bz_state_info_get_show_only_flathub (self->state) && !bz_entry_group_get_is_flathub (group)) return FALSE; if (bz_state_info_get_show_only_verified (self->state) && !bz_entry_group_get_is_verified (group)) return FALSE; if (self->malcontent != NULL) { int parental_age = -1; int app_age = 0; parental_age = bz_state_info_get_parental_age_rating (self->state); app_age = bz_entry_group_get_content_age_rating (group); if (app_age > parental_age && parental_age != -1) return FALSE; } if (bz_state_info_get_disable_blocklists (self->state)) return TRUE; id = bz_entry_group_get_id (group); for (guint i = 0; i < self->txt_blocked_id_sets->len; i++) { GHashTable *set = NULL; set = g_ptr_array_index (self->txt_blocked_id_sets, i); if (g_hash_table_contains (set, id)) return FALSE; } for (guint i = 0; i < self->blocklist_regexes->len; i++) { GPtrArray *regex_datas = NULL; regex_datas = g_ptr_array_index (self->blocklist_regexes, i); for (guint j = 0; j < regex_datas->len; j++) { BlocklistRegexData *data = NULL; data = g_ptr_array_index (regex_datas, j); if (data->allow != NULL && data->priority < allowed_priority && g_regex_match (data->allow, id, G_REGEX_MATCH_DEFAULT, NULL)) allowed_priority = data->priority; if (data->block != NULL && data->priority < blocked_priority && g_regex_match (data->block, id, G_REGEX_MATCH_DEFAULT, NULL)) blocked_priority = data->priority; } } return allowed_priority <= blocked_priority; } static DexFuture * make_sync_future (BzApplication *self) { g_autoptr (GError) local_error = NULL; g_autoptr (GSubprocess) refresh_worker = NULL; g_autoptr (DexFuture) backend_future = NULL; g_autoptr (DexFuture) flathub_future = NULL; g_autoptr (DexFuture) ret_future = NULL; bz_state_info_set_allow_manual_sync (self->state, FALSE); bz_state_info_set_syncing (self->state, TRUE); bz_state_info_set_recently_synced (self->state, TRUE); finish_with_background_task_label (self); refresh_worker = g_subprocess_new ( G_SUBPROCESS_FLAGS_NONE, &local_error, BAZAAR_BIN_NAME, REFRESH_WORKER_CLI_OPTION, NULL); if (refresh_worker == NULL) g_critical ("FATAL!!! The refresh worker could not be spawned: %s", local_error->message); g_assert (refresh_worker != NULL); backend_future = dex_subprocess_wait_check (refresh_worker); backend_future = dex_future_finally ( backend_future, (DexFutureCallback) backend_sync_finally, bz_weak_ref_new (self), (GDestroyNotify) bz_weak_ref_unref); g_clear_object (&self->tmp_flathub); self->tmp_flathub = bz_flathub_state_new (); flathub_future = bz_flathub_state_update_to_today (self->tmp_flathub); flathub_future = dex_future_finally ( flathub_future, (DexFutureCallback) flathub_update_finally, bz_weak_ref_new (self), (GDestroyNotify) bz_weak_ref_unref); ret_future = dex_future_all ( dex_ref (backend_future), dex_ref (flathub_future), NULL); ret_future = dex_future_finally ( ret_future, (DexFutureCallback) sync_finally, bz_weak_ref_new (self), (GDestroyNotify) bz_weak_ref_unref); return g_steal_pointer (&ret_future); } static void finish_with_background_task_label (BzApplication *self) { if (self->n_entries_incoming > 0) bz_state_info_set_background_task_label_take_printf ( self->state, ngettext ("Loading %d app…", "Loading %d apps…", self->n_entries_incoming), self->n_entries_incoming); else if (bz_state_info_get_syncing (self->state)) bz_state_info_set_background_task_label (self->state, _ ("Refreshing…")); else if (bz_state_info_get_busy (self->state)) bz_state_info_set_background_task_label (self->state, _ ("Writing to cache…")); else bz_state_info_set_background_task_label (self->state, NULL); } static void state_info_set_icon_themes (BzStateInfo *state) { g_autoptr (GtkIconTheme) user_theme = NULL; g_autoptr (GtkIconTheme) system_theme = NULL; g_autofree char *user_export_dir = NULL; user_theme = gtk_icon_theme_new (); user_export_dir = g_build_filename (g_get_home_dir (), ".local/share/flatpak/exports/share/icons", NULL); gtk_icon_theme_add_search_path (user_theme, user_export_dir); bz_state_info_set_user_icon_theme (state, user_theme); system_theme = gtk_icon_theme_new (); gtk_icon_theme_add_search_path (system_theme, "/var/lib/flatpak/exports/share/icons"); bz_state_info_set_system_icon_theme (state, system_theme); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-application.h������������������������������������������������������0000664�0000000�0000000�00000002022�15240005042�0021206�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-application.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_APPLICATION (bz_application_get_type ()) G_DECLARE_FINAL_TYPE (BzApplication, bz_application, BZ, APPLICATION, AdwApplication) BzStateInfo * bz_state_info_get_default (void); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-apps-page.blp������������������������������������������������������0000664�0000000�0000000�00000006341�15240005042�0021116�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzAppsPage: Adw.NavigationPage { Adw.ToolbarView { [top] Adw.HeaderBar { [title] Revealer { reveal-child: bind $is_scrolled_down(main_scroll.vadjustment as <Adjustment>.value, carousel.visible) as <bool>; transition-type: slide_up; transition-duration: 500; overflow: visible; child: Label { label: bind template.page-title; styles ["title"] }; } } content: Adw.BreakpointBin { width-request: 360; height-request: 100; child: Gtk.ScrolledWindow main_scroll { hscrollbar-policy: never; Adw.Clamp { maximum-size: 1500; tightening-threshold: 1400; Box content_box { orientation: vertical; spacing: 10; margin-start: 30; margin-end: 30; margin-top: 8; margin-bottom: 50; $BzFeaturedCarousel carousel { margin-start: 3; margin-end: 3; margin-bottom: 12; hexpand: true; visible: bind $is_not_null(template.carousel-applications) as <bool>; model: SliceListModel { offset: 0; size: 7; model: bind template.carousel-applications; }; } Box { margin-start: 3; orientation: vertical; Label title { styles [ "title-1", ] label: bind template.page-title; xalign: 0.0; wrap: true; wrap-mode: word_char; } Label subtitle { visible: bind $is_not_empty_string(template.page-subtitle) as <bool>; label: bind template.page-subtitle; margin-top: 4; xalign: 0.0; } $BzSubcategoryList { margin-top: 12; margin-bottom: 8; category: bind template.category; flathub-state: bind template.flathub-state; } } $BzDynamicListView list_view { styles [ "flathub-page-section", ] hexpand: true; scroll: false; valign: start; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; model: bind template.applications; } Button { label: _("Show All"); visible: bind $is_not_empty_list(template.all-applications) as <bool>; halign: center; margin-top: 8; clicked => $show_all_cb(template); styles ["pill"] } } } }; Adw.Breakpoint { condition ("max-width: 700px") setters { content_box.margin-start: 10; content_box.margin-end: 10; list_view.column-spacing: 9; list_view.row-spacing: 9; title.halign: center; title.justify: center; subtitle.halign: center; } } }; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-apps-page.c��������������������������������������������������������0000664�0000000�0000000�00000034502�15240005042�0020563�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-apps-page.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include <libdex.h> #include "bz-all-apps-page.h" #include "bz-app-tile.h" #include "bz-application.h" #include "bz-apps-page.h" #include "bz-dynamic-list-view.h" #include "bz-entry-group.h" #include "env.h" #include "bz-flathub-category.h" #include "bz-subcategory-list.h" #include "bz-state-info.h" struct _BzAppsPage { AdwNavigationPage parent_instance; char *title; GListModel *applications; GListModel *all_applications; GListModel *carousel_applications; char *subtitle; BzFlathubCategory *category; /* Template widgets */ }; G_DEFINE_FINAL_TYPE (BzAppsPage, bz_apps_page, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_PAGE_TITLE, PROP_APPLICATIONS, PROP_ALL_APPLICATIONS, PROP_CAROUSEL_APPLICATIONS, PROP_PAGE_SUBTITLE, PROP_CATEGORY, PROP_FLATHUB_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_apps_page_dispose (GObject *object) { BzAppsPage *self = BZ_APPS_PAGE (object); g_clear_pointer (&self->title, g_free); g_clear_object (&self->applications); g_clear_object (&self->all_applications); g_clear_object (&self->carousel_applications); g_clear_pointer (&self->subtitle, g_free); g_clear_object (&self->category); G_OBJECT_CLASS (bz_apps_page_parent_class)->dispose (object); } static void bz_apps_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAppsPage *self = BZ_APPS_PAGE (object); switch (prop_id) { case PROP_PAGE_TITLE: g_value_set_string (value, self->title); break; case PROP_APPLICATIONS: g_value_set_object (value, self->applications); break; case PROP_ALL_APPLICATIONS: g_value_set_object (value, self->all_applications); break; case PROP_CAROUSEL_APPLICATIONS: g_value_set_object (value, self->carousel_applications); break; case PROP_PAGE_SUBTITLE: g_value_set_string (value, self->subtitle); break; case PROP_CATEGORY: g_value_set_object (value, self->category); break; case PROP_FLATHUB_STATE: g_value_set_object (value, bz_state_info_get_flathub(bz_state_info_get_default ())); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_apps_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAppsPage *self = BZ_APPS_PAGE (object); switch (prop_id) { case PROP_PAGE_TITLE: g_clear_pointer (&self->title, g_free); self->title = g_value_dup_string (value); break; case PROP_APPLICATIONS: g_clear_object (&self->applications); self->applications = g_value_dup_object (value); break; case PROP_ALL_APPLICATIONS: g_clear_object (&self->all_applications); self->all_applications = g_value_dup_object (value); break; case PROP_CAROUSEL_APPLICATIONS: g_clear_object (&self->carousel_applications); self->carousel_applications = g_value_dup_object (value); break; case PROP_PAGE_SUBTITLE: g_clear_pointer (&self->subtitle, g_free); self->subtitle = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean is_not_null (gpointer object, GObject *value) { return value != NULL; } static gboolean is_not_empty_string (gpointer object, const char *str) { return str != NULL && str[0] != '\0'; } static gboolean is_not_empty_list (gpointer object, GListModel *list) { return list != NULL && g_list_model_get_n_items (list) > 0; } static gboolean is_scrolled_down (gpointer object, double value, gboolean carousel_visible) { return value > (carousel_visible ? 400.0 : 50.0); } static void featured_carousel_group_clicked_cb (BzAppsPage *self, BzEntryGroup *group, GtkWidget *carousel) { gtk_widget_activate_action (GTK_WIDGET (self), "window.show-group", "s", bz_entry_group_get_id (group)); } static void show_all_cb (BzAppsPage *self, GtkButton *button) { GtkWidget *nav_view = NULL; AdwNavigationPage *all_page = NULL; g_autofree char *all_title = NULL; guint n_items = 0; g_return_if_fail (BZ_IS_APPS_PAGE (self)); if (self->all_applications == NULL) return; n_items = g_list_model_get_n_items (self->all_applications); if (n_items == 0) return; nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); if (nav_view == NULL) return; all_title = g_strdup_printf (_("All \"%s\""), self->title); all_page = bz_all_apps_page_new (all_title, self->all_applications); if (all_page == NULL) return; adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), all_page); } static void bz_apps_page_class_init (BzAppsPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_apps_page_dispose; object_class->get_property = bz_apps_page_get_property; object_class->set_property = bz_apps_page_set_property; props[PROP_PAGE_TITLE] = g_param_spec_string ( "page-title", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); props[PROP_APPLICATIONS] = g_param_spec_object ( "applications", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); props[PROP_ALL_APPLICATIONS] = g_param_spec_object ( "all-applications", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_CAROUSEL_APPLICATIONS] = g_param_spec_object ( "carousel-applications", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); props[PROP_PAGE_SUBTITLE] = g_param_spec_string ( "page-subtitle", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_CATEGORY] = g_param_spec_object ( "category", NULL, NULL, BZ_TYPE_FLATHUB_CATEGORY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_FLATHUB_STATE] = g_param_spec_object ( "flathub-state", NULL, NULL, BZ_TYPE_FLATHUB_STATE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_APP_TILE); g_type_ensure (BZ_TYPE_SUBCATEGORY_LIST); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-apps-page.ui"); gtk_widget_class_bind_template_callback (widget_class, is_not_null); gtk_widget_class_bind_template_callback (widget_class, is_not_empty_string); gtk_widget_class_bind_template_callback (widget_class, is_not_empty_list); gtk_widget_class_bind_template_callback (widget_class, is_scrolled_down); gtk_widget_class_bind_template_callback (widget_class, featured_carousel_group_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, show_all_cb); } static void bz_apps_page_init (BzAppsPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); } AdwNavigationPage * bz_apps_page_new (const char *title, GListModel *applications) { return bz_apps_page_new_with_carousel (title, applications, NULL); } AdwNavigationPage * bz_apps_page_new_with_carousel (const char *title, GListModel *applications, GListModel *carousel_applications) { BzAppsPage *apps_page = NULL; apps_page = g_object_new ( BZ_TYPE_APPS_PAGE, "page-title", title, "applications", applications, "carousel-applications", carousel_applications, NULL); adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (apps_page), title); return ADW_NAVIGATION_PAGE (apps_page); } static gboolean filter_by_category (BzEntryGroup *group, const char *category_name) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (group), FALSE); g_return_val_if_fail (category_name != NULL, FALSE); return bz_entry_group_has_category (group, category_name); } static DexFuture * filter_applications_fiber (BzAppsPage *self) { g_autoptr (GError) error = NULL; g_autoptr (GtkFilterListModel) filtered_model = NULL; GListModel *all_model = NULL; const char *category_name = NULL; BzStateInfo *state_info = NULL; state_info = bz_state_info_get_default (); if (state_info == NULL) return NULL; all_model = bz_state_info_get_filtered_entry_groups (state_info); if (all_model == NULL) return NULL; category_name = g_object_get_data (G_OBJECT (self), "category-name"); if (category_name == NULL) return NULL; filtered_model = gtk_filter_list_model_new ( g_object_ref (all_model), GTK_FILTER (gtk_custom_filter_new ( (GtkCustomFilterFunc) filter_by_category, g_strdup (category_name), g_free))); g_set_object (&self->all_applications, G_LIST_MODEL (filtered_model)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ALL_APPLICATIONS]); return NULL; } static AdwNavigationPage * create_split_page (const char *title, GListModel *model, GListModel *carousel_model) { AdwNavigationPage *apps_page = NULL; guint n_items = g_list_model_get_n_items (model); if (n_items > 48) { g_autoptr (GListModel) limited_model = NULL; limited_model = G_LIST_MODEL (gtk_slice_list_model_new ( g_object_ref (model), 0, 48)); if (carousel_model != NULL && g_list_model_get_n_items (carousel_model) > 0) apps_page = bz_apps_page_new_with_carousel (title, limited_model, carousel_model); else apps_page = bz_apps_page_new (title, limited_model); if (g_set_object (&BZ_APPS_PAGE (apps_page)->all_applications, model)) g_object_notify_by_pspec (G_OBJECT (apps_page), props[PROP_ALL_APPLICATIONS]); } else { if (carousel_model != NULL && g_list_model_get_n_items (carousel_model) > 0) apps_page = bz_apps_page_new_with_carousel (title, model, carousel_model); else apps_page = bz_apps_page_new (title, model); } return apps_page; } static AdwNavigationPage * create_standard_page (const char *title, GListModel *model, GListModel *carousel_model) { if (carousel_model != NULL && g_list_model_get_n_items (carousel_model) > 0) return bz_apps_page_new_with_carousel (title, model, carousel_model); else return bz_apps_page_new (title, model); } static void setup_category_filter (AdwNavigationPage *apps_page, const char *category_name) { if (apps_page == NULL || category_name == NULL || g_strcmp0 (category_name, "adwaita") == 0) return; g_object_set_data_full (G_OBJECT (apps_page), "category-name", g_strdup (category_name), g_free); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) filter_applications_fiber, g_object_ref (apps_page), g_object_unref)); } AdwNavigationPage * bz_apps_page_new_from_category (BzFlathubCategory *category) { g_autoptr (GListModel) model = NULL; g_autoptr (GListModel) carousel_model = NULL; AdwNavigationPage *apps_page = NULL; const char *title = NULL; const char *category_name = NULL; g_autofree char *subtitle = NULL; int total_entries = 0; guint n_items = 0; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (category), NULL); model = bz_flathub_category_dup_applications (category); if (model == NULL) return NULL; title = bz_flathub_category_get_display_name (category); category_name = bz_flathub_category_get_name (category); n_items = g_list_model_get_n_items (model); carousel_model = bz_flathub_category_dup_quality_applications (category); total_entries = bz_flathub_category_get_total_entries (category); if (n_items > 48) apps_page = create_split_page (title, model, carousel_model); else apps_page = create_standard_page (title, model, carousel_model); if (total_entries > 0 && !bz_flathub_category_get_is_spotlight (category)) { subtitle = g_strdup_printf (_ ("%d Applications"), total_entries); bz_apps_page_set_subtitle (BZ_APPS_PAGE (apps_page), subtitle); } BZ_APPS_PAGE(apps_page)->category = g_object_ref (category); g_object_notify_by_pspec (G_OBJECT (apps_page), props[PROP_CATEGORY]); if (n_items <= 48) setup_category_filter (apps_page, category_name); return apps_page; } void bz_apps_page_set_subtitle (BzAppsPage *self, const char *subtitle) { g_return_if_fail (BZ_IS_APPS_PAGE (self)); if (g_strcmp0 (self->subtitle, subtitle) == 0) return; g_clear_pointer (&self->subtitle, g_free); if (subtitle != NULL) self->subtitle = g_strdup (subtitle); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PAGE_SUBTITLE]); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-apps-page.h��������������������������������������������������������0000664�0000000�0000000�00000002725�15240005042�0020572�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-apps-page.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-flathub-category.h" G_BEGIN_DECLS #define BZ_TYPE_APPS_PAGE (bz_apps_page_get_type ()) G_DECLARE_FINAL_TYPE (BzAppsPage, bz_apps_page, BZ, APPS_PAGE, AdwNavigationPage) AdwNavigationPage * bz_apps_page_new (const char *title, GListModel *applications); AdwNavigationPage * bz_apps_page_new_with_carousel (const char *title, GListModel *applications, GListModel *carousel_applications); AdwNavigationPage * bz_apps_page_new_from_category (BzFlathubCategory *category); void bz_apps_page_set_subtitle (BzAppsPage *self, const char *subtitle); G_END_DECLS �������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-appstream-description-render.blp�����������������������������������0000664�0000000�0000000�00000000466�15240005042�0025035�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzAppstreamDescriptionRender: Adw.Bin { child: Box { orientation: vertical; TextView text_view { notify::has-focus => $text_focus_cb(); editable: false; cursor-visible: false; wrap-mode: word_char; height-request: 25; } }; }����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-appstream-description-render.c�������������������������������������0000664�0000000�0000000�00000052671�15240005042�0024507�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-appstream-description-render.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::APPSTREAM-DESCRIPTION-RENDER" #include "config.h" #include <xmlb.h> #include "bz-appstream-description-render.h" enum { NO_ELEMENT, PARAGRAPH, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, CODE, EMPHASIS, }; struct _BzAppstreamDescriptionRender { AdwBin parent_instance; char *appstream_description; /* Template widgets */ GtkTextView *text_view; }; G_DEFINE_FINAL_TYPE (BzAppstreamDescriptionRender, bz_appstream_description_render, ADW_TYPE_BIN); enum { PROP_0, PROP_APPSTREAM_DESCRIPTION, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void setup_text_tags (GtkTextBuffer *buffer); static void regenerate (BzAppstreamDescriptionRender *self); static void insert (BzAppstreamDescriptionRender *self, GtkTextBuffer *buffer, GtkTextIter *iter, const char *text); static void compile (BzAppstreamDescriptionRender *self, XbNode *node, GtkTextBuffer *buffer, GtkTextIter *iter, int parent_kind, int idx, gboolean is_last_sibling, gboolean *in_space, gboolean *at_start); static char * normalize_whitespace (const char *text, gboolean *in_space, gboolean *at_start); static void on_map (GtkWidget *widget, BzAppstreamDescriptionRender *self); static const char * get_link_at_coords (GtkTextView *text_view, double x, double y); static void on_click_released (GtkGestureClick *gesture, int n_press, double x, double y, GtkTextView *text_view); static void on_motion (GtkEventControllerMotion *controller, double x, double y, GtkTextView *text_view); static void text_focus_cb (GtkTextView *text_view, GParamSpec *pspec, BzAppstreamDescriptionRender *self); static void bz_appstream_description_render_dispose (GObject *object) { BzAppstreamDescriptionRender *self = BZ_APPSTREAM_DESCRIPTION_RENDER (object); g_clear_pointer (&self->appstream_description, g_free); G_OBJECT_CLASS (bz_appstream_description_render_parent_class)->dispose (object); } static void bz_appstream_description_render_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAppstreamDescriptionRender *self = BZ_APPSTREAM_DESCRIPTION_RENDER (object); switch (prop_id) { case PROP_APPSTREAM_DESCRIPTION: g_value_set_string (value, bz_appstream_description_render_get_appstream_description (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_appstream_description_render_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAppstreamDescriptionRender *self = BZ_APPSTREAM_DESCRIPTION_RENDER (object); switch (prop_id) { case PROP_APPSTREAM_DESCRIPTION: bz_appstream_description_render_set_appstream_description (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_appstream_description_render_class_init (BzAppstreamDescriptionRenderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_appstream_description_render_set_property; object_class->get_property = bz_appstream_description_render_get_property; object_class->dispose = bz_appstream_description_render_dispose; props[PROP_APPSTREAM_DESCRIPTION] = g_param_spec_string ( "appstream-description", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-appstream-description-render.ui"); gtk_widget_class_bind_template_child (widget_class, BzAppstreamDescriptionRender, text_view); gtk_widget_class_bind_template_callback (widget_class, text_focus_cb); } static void setup_text_tags (GtkTextBuffer *buffer) { gtk_text_buffer_create_tag (buffer, "code", "family", "monospace", NULL); gtk_text_buffer_create_tag (buffer, "emphasis", "weight", PANGO_WEIGHT_BOLD, NULL); gtk_text_buffer_create_tag (buffer, "paragraph", "pixels-below-lines", 12, NULL); gtk_text_buffer_create_tag (buffer, "list-item-ul", "left-margin", 10, "pixels-below-lines", 4, "indent", -12, NULL); gtk_text_buffer_create_tag (buffer, "list-item-ol", "left-margin", 10, "pixels-below-lines", 4, "indent", -18, NULL); gtk_text_buffer_create_tag (buffer, "list-number", "family", "monospace", "foreground", "gray", NULL); } static void bz_appstream_description_render_init (BzAppstreamDescriptionRender *self) { GtkTextBuffer *buffer = NULL; GtkGesture *click = NULL; GtkEventController *motion = NULL; AdwStyleManager *style_manager = NULL; gtk_widget_init_template (GTK_WIDGET (self)); buffer = gtk_text_view_get_buffer (self->text_view); setup_text_tags (buffer); gtk_widget_remove_css_class (GTK_WIDGET (self->text_view), "view"); g_signal_connect (self, "map", G_CALLBACK (on_map), self); click = gtk_gesture_click_new (); gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (click), GDK_BUTTON_PRIMARY); g_signal_connect (click, "released", G_CALLBACK (on_click_released), self->text_view); gtk_widget_add_controller (GTK_WIDGET (self->text_view), GTK_EVENT_CONTROLLER (click)); motion = gtk_event_controller_motion_new (); g_signal_connect (motion, "motion", G_CALLBACK (on_motion), self->text_view); gtk_widget_add_controller (GTK_WIDGET (self->text_view), motion); style_manager = adw_style_manager_get_default (); g_signal_connect_object (style_manager, "notify::accent-color", G_CALLBACK (regenerate), self, G_CONNECT_SWAPPED); } static const char * get_link_at_coords (GtkTextView *text_view, double x, double y) { GtkTextIter iter = { 0 }; int bx = 0; int by = 0; g_autoptr (GSList) tags = NULL; GSList *l = NULL; const char *href = NULL; gtk_text_view_window_to_buffer_coords (text_view, GTK_TEXT_WINDOW_WIDGET, (int) x, (int) y, &bx, &by); gtk_text_view_get_iter_at_location (text_view, &iter, bx, by); tags = gtk_text_iter_get_tags (&iter); for (l = tags; l != NULL; l = l->next) { href = g_object_get_data (G_OBJECT (l->data), "href"); if (href != NULL) return href; } return NULL; } static void on_click_released (GtkGestureClick *gesture, int n_press, double x, double y, GtkTextView *text_view) { const char *href = NULL; g_autoptr (GtkUriLauncher) launcher = NULL; GtkWindow *root = NULL; href = get_link_at_coords (text_view, x, y); if (href == NULL) return; launcher = gtk_uri_launcher_new (href); root = GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (text_view))); gtk_uri_launcher_launch (launcher, root, NULL, NULL, NULL); } static void on_motion (GtkEventControllerMotion *controller, double x, double y, GtkTextView *text_view) { if (get_link_at_coords (text_view, x, y) != NULL) gtk_widget_set_cursor_from_name (GTK_WIDGET (text_view), "pointer"); else gtk_widget_set_cursor (GTK_WIDGET (text_view), NULL); } static void text_focus_cb (GtkTextView *text_view, GParamSpec *pspec, BzAppstreamDescriptionRender *self) { GtkTextBuffer *buffer = NULL; GtkTextIter start = { 0 }; GtkTextIter end = { 0 }; buffer = gtk_text_view_get_buffer (self->text_view); gtk_text_buffer_get_bounds (buffer, &start, &end); if (gtk_widget_has_focus (GTK_WIDGET (text_view))) { g_autofree char *full_text = NULL; full_text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); if (full_text != NULL && *full_text != '\0') gtk_accessible_update_property (GTK_ACCESSIBLE (text_view), GTK_ACCESSIBLE_PROPERTY_LABEL, full_text, -1); gtk_text_buffer_select_range (buffer, &start, &end); } else gtk_text_buffer_place_cursor (buffer, &start); } BzAppstreamDescriptionRender * bz_appstream_description_render_new (void) { return g_object_new (BZ_TYPE_APPSTREAM_DESCRIPTION_RENDER, NULL); } const char * bz_appstream_description_render_get_appstream_description (BzAppstreamDescriptionRender *self) { g_return_val_if_fail (BZ_IS_APPSTREAM_DESCRIPTION_RENDER (self), NULL); return self->appstream_description; } void bz_appstream_description_render_set_appstream_description (BzAppstreamDescriptionRender *self, const char *appstream_description) { g_return_if_fail (BZ_IS_APPSTREAM_DESCRIPTION_RENDER (self)); g_clear_pointer (&self->appstream_description, g_free); if (appstream_description != NULL) self->appstream_description = g_strdup (appstream_description); regenerate (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPSTREAM_DESCRIPTION]); } static void regenerate (BzAppstreamDescriptionRender *self) { g_autoptr (GError) local_error = NULL; g_autoptr (XbSilo) silo = NULL; g_autoptr (XbNode) root = NULL; GtkTextBuffer *buffer = NULL; GtkTextIter iter = { 0 }; int node_count = 0; gboolean in_space = FALSE; gboolean at_start = TRUE; buffer = gtk_text_view_get_buffer (self->text_view); gtk_text_buffer_set_text (buffer, "", 0); if (self->appstream_description == NULL) return; silo = xb_silo_new_from_xml (self->appstream_description, &local_error); if (silo == NULL) { g_warning ("Failed to parse appstream description XML: %s", local_error->message); return; } gtk_text_buffer_get_end_iter (buffer, &iter); root = xb_silo_get_root (silo); for (XbNode *n = g_object_ref (root); n != NULL;) { XbNode *last = NULL; node_count++; last = n; n = xb_node_get_next (n); g_object_unref (last); } for (int i = 0; root != NULL; i++) { g_autoptr (XbNode) next = NULL; gboolean is_last = (i == node_count - 1); compile (self, root, buffer, &iter, NO_ELEMENT, i, is_last, &in_space, &at_start); next = xb_node_get_next (root); g_object_unref (root); root = g_steal_pointer (&next); } } static void insert_url (BzAppstreamDescriptionRender *self, GtkTextBuffer *buffer, GtkTextIter *iter, const char *url) { g_autoptr (GdkRGBA) rgba = NULL; GtkTextTag *tag = NULL; GtkTextMark *mark = NULL; GtkTextIter start = { 0 }; rgba = adw_style_manager_get_accent_color_rgba (adw_style_manager_get_default ()); tag = gtk_text_buffer_create_tag (buffer, NULL, "foreground-rgba", rgba, "underline", PANGO_UNDERLINE_SINGLE, NULL); g_object_set_data_full (G_OBJECT (tag), "href", g_strdup (url), g_free); mark = gtk_text_buffer_create_mark (buffer, NULL, iter, TRUE); gtk_text_buffer_insert (buffer, iter, url, -1); gtk_text_buffer_get_iter_at_mark (buffer, &start, mark); gtk_text_buffer_apply_tag (buffer, tag, &start, iter); gtk_text_buffer_delete_mark (buffer, mark); } static void insert (BzAppstreamDescriptionRender *self, GtkTextBuffer *buffer, GtkTextIter *iter, const char *text) { g_auto (GStrv) parts = NULL; const char *p = NULL; const char *http = NULL; const char *https = NULL; const char *url_start = NULL; const char *url_end = NULL; const char *chunk = NULL; GtkTextMark *m = NULL; GtkTextIter si = { 0 }; g_autofree char *url = NULL; int j = 0; parts = g_strsplit (text, "**", -1); for (j = 0; parts[j] != NULL; j++) { chunk = parts[j]; if (j % 2 != 0) { m = gtk_text_buffer_create_mark (buffer, NULL, iter, TRUE); gtk_text_buffer_insert (buffer, iter, chunk, -1); gtk_text_buffer_get_iter_at_mark (buffer, &si, m); gtk_text_buffer_apply_tag_by_name (buffer, "emphasis", &si, iter); gtk_text_buffer_delete_mark (buffer, m); continue; } p = chunk; while (*p != '\0') { http = strstr (p, "http://"); https = strstr (p, "https://"); url_start = (http != NULL && (https == NULL || http < https)) ? http : https; if (url_start == NULL) { gtk_text_buffer_insert (buffer, iter, p, -1); break; } if (url_start > p) gtk_text_buffer_insert (buffer, iter, p, (int) (url_start - p)); url_end = url_start; while (*url_end != '\0' && !g_unichar_isspace (g_utf8_get_char (url_end))) url_end = g_utf8_next_char (url_end); url = g_strndup (url_start, url_end - url_start); for (char *end = url + strlen (url) - 1; end >= url && strchr (").,!?", *end) != NULL; end--) { *end = '\0'; url_end--; } insert_url (self, buffer, iter, url); p = url_end; } } } static void compile (BzAppstreamDescriptionRender *self, XbNode *node, GtkTextBuffer *buffer, GtkTextIter *iter, int parent_kind, int idx, gboolean is_last_sibling, gboolean *in_space, gboolean *at_start) { const char *element = NULL; const char *text = NULL; XbNode *child = NULL; int kind = NO_ELEMENT; GtkTextMark *start_mark = NULL; int child_count = 0; gboolean local_in_space = FALSE; gboolean local_at_start = TRUE; element = xb_node_get_element (node); text = xb_node_get_text (node); child = xb_node_get_child (node); kind = NO_ELEMENT; start_mark = NULL; if (element != NULL) { if (g_strcmp0 (element, "p") == 0) { kind = PARAGRAPH; start_mark = gtk_text_buffer_create_mark (buffer, NULL, iter, TRUE); } else if (g_strcmp0 (element, "ol") == 0) kind = ORDERED_LIST; else if (g_strcmp0 (element, "ul") == 0) kind = UNORDERED_LIST; else if (g_strcmp0 (element, "li") == 0) { kind = LIST_ITEM; start_mark = gtk_text_buffer_create_mark (buffer, NULL, iter, TRUE); if (parent_kind == ORDERED_LIST) { g_autofree char *prefix = NULL; GtkTextMark *prefix_start_mark; GtkTextIter prefix_start_iter; prefix_start_mark = gtk_text_buffer_create_mark (buffer, NULL, iter, TRUE); prefix = g_strdup_printf ("%d.", idx + 1); gtk_text_buffer_insert (buffer, iter, prefix, -1); gtk_text_buffer_get_iter_at_mark (buffer, &prefix_start_iter, prefix_start_mark); gtk_text_buffer_apply_tag_by_name (buffer, "list-number", &prefix_start_iter, iter); gtk_text_buffer_delete_mark (buffer, prefix_start_mark); } else gtk_text_buffer_insert (buffer, iter, "• ", -1); } else if (g_strcmp0 (element, "code") == 0) { kind = CODE; start_mark = gtk_text_buffer_create_mark (buffer, NULL, iter, TRUE); } else if (g_strcmp0 (element, "em") == 0) { kind = EMPHASIS; start_mark = gtk_text_buffer_create_mark (buffer, NULL, iter, TRUE); } } if (kind == PARAGRAPH || kind == LIST_ITEM) { in_space = &local_in_space; at_start = &local_at_start; } if (text != NULL) { g_autofree char *normalized = NULL; normalized = normalize_whitespace (text, in_space, at_start); if (normalized != NULL && *normalized != '\0') insert (self, buffer, iter, normalized); } for (int i = 0; child != NULL; i++) { const char *tail = NULL; XbNode *next = NULL; next = xb_node_get_next (child); compile (self, child, buffer, iter, kind, i, next == NULL, in_space, at_start); tail = xb_node_get_tail (child); if (tail != NULL) { g_autofree char *normalized = NULL; normalized = normalize_whitespace (tail, in_space, at_start); if (normalized != NULL && *normalized != '\0') insert (self, buffer, iter, normalized); } g_object_unref (child); child = next; child_count++; } if (start_mark != NULL) { GtkTextIter start_iter = { 0 }; gtk_text_buffer_get_iter_at_mark (buffer, &start_iter, start_mark); if (kind == CODE) gtk_text_buffer_apply_tag_by_name (buffer, "code", &start_iter, iter); else if (kind == EMPHASIS) gtk_text_buffer_apply_tag_by_name (buffer, "emphasis", &start_iter, iter); else if (kind == PARAGRAPH) gtk_text_buffer_apply_tag_by_name (buffer, "paragraph", &start_iter, iter); else if (kind == LIST_ITEM) { const char *tag_name = NULL; tag_name = (parent_kind == ORDERED_LIST) ? "list-item-ol" : "list-item-ul"; gtk_text_buffer_apply_tag_by_name (buffer, tag_name, &start_iter, iter); gtk_text_buffer_insert (buffer, iter, "\n", 1); } gtk_text_buffer_delete_mark (buffer, start_mark); } if (kind == PARAGRAPH && !is_last_sibling) gtk_text_buffer_insert (buffer, iter, "\n", 1); else if ((kind == ORDERED_LIST || kind == UNORDERED_LIST) && !is_last_sibling && child_count > 0) gtk_text_buffer_insert (buffer, iter, "\n", 1); } static void on_map (GtkWidget *widget, BzAppstreamDescriptionRender *self) { gtk_widget_queue_resize (GTK_WIDGET (self)); } static char * normalize_whitespace (const char *text, gboolean *in_space, gboolean *at_start) { g_autoptr (GString) result = NULL; if (text == NULL) return NULL; result = g_string_new (NULL); for (const char *p = text; p != NULL && *p != '\0'; p = g_utf8_next_char (p)) { gunichar ch = 0; ch = g_utf8_get_char (p); if (g_unichar_isspace (ch)) { if (!*at_start) *in_space = TRUE; } else { if (!*at_start && *in_space) g_string_append_c (result, ' '); g_string_append_unichar (result, ch); *in_space = FALSE; *at_start = FALSE; } } return g_string_free (g_steal_pointer (&result), FALSE); } /* End of bz-appstream-description-render.c */ �����������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-appstream-description-render.h�������������������������������������0000664�0000000�0000000�00000002741�15240005042�0024505�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-appstream-description-render.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_APPSTREAM_DESCRIPTION_RENDER (bz_appstream_description_render_get_type ()) G_DECLARE_FINAL_TYPE (BzAppstreamDescriptionRender, bz_appstream_description_render, BZ, APPSTREAM_DESCRIPTION_RENDER, AdwBin) BzAppstreamDescriptionRender * bz_appstream_description_render_new (void); const char * bz_appstream_description_render_get_appstream_description (BzAppstreamDescriptionRender *self); void bz_appstream_description_render_set_appstream_description (BzAppstreamDescriptionRender *self, const char *appstream_description); G_END_DECLS /* End of bz-appstream-description-render.h */ �������������������������������bazaar-org-bazaar-48f93f4/src/bz-appstream-parser.c�������������������������������������������������0000664�0000000�0000000�00000070230�15240005042�0022172�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-appstream-parser.c * * Copyright 2025 Adam Masciola, 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::APPSTREAM-PARSER" #define BAZAAR_MODULE "appstream-parser" #include "config.h" #include <glib/gi18n.h> #include "bz-appstream-parser.h" #include "bz-async-texture.h" #include "bz-category-flags.h" #include "io.h" #include "bz-release.h" #include "bz-url.h" #include "bz-verification-status.h" #include "bz-flatpak-entry.h" static guint parse_control_value (const char *value) { if (g_strcmp0 (value, "pointing") == 0) return BZ_CONTROL_POINTING; else if (g_strcmp0 (value, "keyboard") == 0) return BZ_CONTROL_KEYBOARD; else if (g_strcmp0 (value, "console") == 0) return BZ_CONTROL_CONSOLE; else if (g_strcmp0 (value, "tablet") == 0) return BZ_CONTROL_TABLET; else if (g_strcmp0 (value, "touch") == 0) return BZ_CONTROL_TOUCH; else if (g_strcmp0 (value, "gamepad") == 0) return BZ_CONTROL_GAMEPAD; else if (g_strcmp0 (value, "tv-remote") == 0) return BZ_CONTROL_TV_REMOTE; else if (g_strcmp0 (value, "voice") == 0) return BZ_CONTROL_VOICE; else if (g_strcmp0 (value, "vision") == 0) return BZ_CONTROL_VISION; else return 0; } static gboolean calculate_is_mobile_friendly (guint required_controls, guint recommended_controls, guint supported_controls) { return (required_controls & BZ_CONTROL_TOUCH) != 0 || (recommended_controls & BZ_CONTROL_TOUCH) != 0 || (supported_controls & BZ_CONTROL_TOUCH) != 0; } static char * proxy_screenshot_url (const char *url, gboolean high_quality) { g_autofree char *src = NULL; g_autofree char *encoded_url = NULL; const char *suffix = NULL; if (g_str_has_prefix (url, "https://dl.flathub.org/repo/screenshots/")) { suffix = url + strlen ("https://dl.flathub.org/repo/screenshots/"); src = g_strdup_printf ("https://dl.flathub.org/media/%s", suffix); } else if (g_str_has_prefix (url, "https://dl.flathub.org/")) { src = g_strdup (url); } else { return g_strdup (url); } encoded_url = g_base64_encode ((const guchar *) src, strlen (src)); g_strdelimit (encoded_url, "=", '\0'); for (char *p = encoded_url; *p; p++) { if (*p == '+') *p = '-'; if (*p == '/') *p = '_'; } return g_strdup_printf ( "https://imgproxy.flathub.org/insecure/%s/%s", high_quality ? "q:90/f:avif" : "dpr:1/f:avif/rs:fill-down", encoded_url); } static GdkPaintable * find_screenshot (GPtrArray *images, const char *caption, gboolean match_highest, guint target_width, guint target_height, gboolean require_flathub, const char *module_dir, const char *unique_id_checksum, const char *cache_filename, char **out_caption) { const char *best_url = NULL; gint best_diff = G_MAXINT; guint best_res = 0; guint best_width = 0; guint best_height = 0; guint target_pixels = target_width * target_height; if (images == NULL) return NULL; for (guint j = 0; j < images->len; j++) { AsImage *image_obj = g_ptr_array_index (images, j); const char *url = as_image_get_url (image_obj); guint width = as_image_get_width (image_obj); guint height = as_image_get_height (image_obj); guint pixels = width * height; if (url == NULL) continue; if (require_flathub && !g_str_has_prefix (url, "https://dl.flathub.org/")) continue; if (match_highest) { if (best_url == NULL || pixels > best_res) { best_url = url; best_res = pixels; best_width = width; best_height = height; } } else { gint diff = ABS ((gint) pixels - (gint) target_pixels); if (best_url == NULL || diff < best_diff) { best_url = url; best_diff = diff; best_width = width; best_height = height; } } } if (best_url != NULL) { g_autoptr (GFile) screenshot_file = NULL; g_autoptr (GFile) cache_file = NULL; g_autofree char *proxied_url = NULL; BzAsyncTexture *texture = NULL; proxied_url = proxy_screenshot_url (best_url, match_highest); screenshot_file = g_file_new_for_uri (proxied_url); cache_file = g_file_new_build_filename ( module_dir, unique_id_checksum, cache_filename, NULL); if (best_width > 0 && best_height > 0) texture = bz_async_texture_new_lazy_with_size (screenshot_file, cache_file, best_width, best_height); else texture = bz_async_texture_new_lazy (screenshot_file, cache_file); if (out_caption != NULL) *out_caption = g_strdup (caption ? caption : ""); return GDK_PAINTABLE (texture); } return NULL; } gboolean bz_appstream_parser_populate_entry (BzEntry *entry, AsComponent *component, const char *appstream_dir, const char *remote_name, const char *module_dir, const char *unique_id_checksum, const char *id, guint kinds, GError **error) { AsDeveloper *developer_obj = NULL; GPtrArray *screenshots = NULL; AsReleaseList *releases = NULL; GPtrArray *releases_arr = NULL; GPtrArray *icons = NULL; AsBranding *branding = NULL; GPtrArray *requires_relations = NULL; GPtrArray *recommends_relations = NULL; GPtrArray *supports_relations = NULL; const char *title = NULL; const char *description = NULL; const char *metadata_license = NULL; const char *project_license = NULL; gboolean is_floss = FALSE; const char *project_group = NULL; const char *developer = NULL; const char *developer_id = NULL; const char *long_description = NULL; const char *project_url = NULL; g_autoptr (GPtrArray) as_search_tokens = NULL; g_autofree char *search_tokens = NULL; g_autoptr (GdkPaintable) icon_paintable = NULL; g_autoptr (GIcon) mini_icon = NULL; g_autoptr (GListStore) screenshot_paintables = NULL; g_autoptr (GListStore) screenshot_captions = NULL; g_autoptr (GdkPaintable) thumbnail_paintable = NULL; g_autoptr (GListStore) share_urls = NULL; g_autofree char *donation_url = NULL; g_autofree char *ratings_summary = NULL; g_autoptr (GListStore) version_history = NULL; const char *accent_color_light = NULL; const char *accent_color_dark = NULL; guint required_controls = 0; guint recommended_controls = 0; guint supported_controls = 0; gint min_display_length = 0; gint max_display_length = 0; gboolean is_mobile_friendly = FALSE; g_autoptr (AsContentRating) content_rating = NULL; GPtrArray *as_keywords = NULL; g_autoptr (GListStore) keywords = NULL; GPtrArray *as_categories = NULL; BzCategoryFlags categories = BZ_CATEGORY_FLAGS_NONE; g_autoptr (BzVerificationStatus) verification_status = NULL; g_return_val_if_fail (BZ_IS_ENTRY (entry), FALSE); g_return_val_if_fail (AS_IS_COMPONENT (component), FALSE); title = as_component_get_name (component); if (title == NULL) title = as_component_get_id (component); description = as_component_get_summary (component); metadata_license = as_component_get_metadata_license (component); project_license = as_component_get_project_license (component); is_floss = as_component_is_floss (component); project_group = as_component_get_project_group (component); project_url = as_component_get_url (component, AS_URL_KIND_HOMEPAGE); as_search_tokens = as_component_get_search_tokens (component); developer_obj = as_component_get_developer (component); if (developer_obj != NULL) { developer = as_developer_get_name (developer_obj); developer_id = as_developer_get_id (developer_obj); } long_description = as_component_get_description (component); screenshots = as_component_get_screenshots_all (component); if (screenshots != NULL) { screenshot_paintables = g_list_store_new (BZ_TYPE_ASYNC_TEXTURE); screenshot_captions = g_list_store_new (GTK_TYPE_STRING_OBJECT); for (guint i = 0; i < screenshots->len; i++) { AsScreenshot *screenshot = NULL; GPtrArray *images = NULL; const gchar *caption = NULL; g_autofree char *caption_str = NULL; g_autoptr (GdkPaintable) paintable = NULL; g_autofree char *cache_name = NULL; screenshot = g_ptr_array_index (screenshots, i); images = as_screenshot_get_images_all (screenshot); caption = as_screenshot_get_caption (screenshot); if (i == 0 && thumbnail_paintable == NULL) { thumbnail_paintable = find_screenshot (images, caption, FALSE, 400, 300, TRUE, module_dir, unique_id_checksum, "thumbnail", NULL); if (thumbnail_paintable == NULL) thumbnail_paintable = find_screenshot (images, caption, FALSE, 400, 300, FALSE, module_dir, unique_id_checksum, "thumbnail", NULL); } cache_name = g_strdup_printf ("screenshot_%u", i); paintable = find_screenshot (images, caption, TRUE, 0, 0, TRUE, module_dir, unique_id_checksum, cache_name, &caption_str); if (paintable == NULL) paintable = find_screenshot (images, caption, TRUE, 0, 0, FALSE, module_dir, unique_id_checksum, cache_name, &caption_str); if (paintable != NULL) { g_autoptr (GtkStringObject) caption_obj = NULL; g_list_store_append (screenshot_paintables, paintable); caption_obj = gtk_string_object_new (caption_str); g_list_store_append (screenshot_captions, caption_obj); } } } share_urls = g_list_store_new (BZ_TYPE_URL); if (kinds & BZ_ENTRY_KIND_APPLICATION && g_strcmp0 (remote_name, "flathub") == 0) { g_autofree char *flathub_url = NULL; g_autoptr (BzUrl) url = NULL; flathub_url = g_strdup_printf ("https://flathub.org/apps/%s", id); url = bz_url_new (); bz_url_set_id (url, "flathub"); bz_url_set_url (url, flathub_url); g_list_store_append (share_urls, url); } for (int e = AS_URL_KIND_UNKNOWN + 1; e < AS_URL_KIND_LAST; e++) { const char *url = NULL; url = as_component_get_url (component, e); if (url != NULL) { g_autoptr (BzUrl) share_url = NULL; switch (e) { case AS_URL_KIND_DONATION: g_clear_pointer (&donation_url, g_free); donation_url = g_strdup (url); break; default: break; } share_url = g_object_new ( BZ_TYPE_URL, "id", as_url_kind_to_string (e), "url", url, NULL); g_list_store_append (share_urls, share_url); } } // make it even so the link colums stay neat. if (g_strcmp0 (remote_name, "flathub") == 0 && g_list_model_get_n_items (G_LIST_MODEL (share_urls)) % 2 != 0) { g_autofree char *manifest_url = NULL; g_autoptr (BzUrl) url = NULL; manifest_url = g_strdup_printf ("https://github.com/flathub/%s", id); url = g_object_new (BZ_TYPE_URL, "id", "manifest", "url", manifest_url, NULL); g_list_store_append (share_urls, url); } if (g_list_model_get_n_items (G_LIST_MODEL (share_urls)) == 0) g_clear_object (&share_urls); releases = as_component_load_releases (component, TRUE, error); if (releases == NULL) return FALSE; releases_arr = as_release_list_get_entries (releases); if (releases_arr != NULL) { version_history = g_list_store_new (BZ_TYPE_RELEASE); for (guint i = 0; i < releases_arr->len; i++) { AsRelease *as_release = NULL; const char *release_description = NULL; g_autoptr (BzRelease) release = NULL; as_release = g_ptr_array_index (releases_arr, i); release_description = as_release_get_description (as_release); release = g_object_new ( BZ_TYPE_RELEASE, "description", release_description, "timestamp", as_release_get_timestamp (as_release), "url", as_release_get_url (as_release, AS_RELEASE_URL_KIND_DETAILS), "version", as_release_get_version (as_release), NULL); g_list_store_append (version_history, release); } } icons = as_component_get_icons (component); if (icons != NULL) { g_autofree char *select = NULL; gboolean select_is_local = FALSE; int select_width = 0; int select_height = 0; for (guint i = 0; i < icons->len; i++) { AsIcon *icon = NULL; int width = 0; int height = 0; gboolean is_local = FALSE; icon = g_ptr_array_index (icons, i); width = as_icon_get_width (icon); height = as_icon_get_height (icon); is_local = as_icon_get_kind (icon) != AS_ICON_KIND_REMOTE; if (select == NULL || (is_local && !select_is_local) || (width > select_width && height > select_height)) { if (is_local) { const char *filename = NULL; g_autofree char *resolution = NULL; g_autofree char *path = NULL; filename = as_icon_get_filename (icon); if (filename == NULL) continue; resolution = g_strdup_printf ("%dx%d", width, height); path = g_build_filename ( appstream_dir, "icons", "flatpak", resolution, filename, NULL); if (!g_file_test (path, G_FILE_TEST_EXISTS)) continue; g_clear_pointer (&select, g_free); select = g_steal_pointer (&path); select_is_local = TRUE; select_width = width; select_height = height; } else { const char *url = NULL; url = as_icon_get_url (icon); if (url == NULL) continue; g_clear_pointer (&select, g_free); select = g_strdup (url); select_is_local = FALSE; select_width = width; select_height = height; } } } if (select != NULL) { g_autofree char *select_uri = NULL; g_autoptr (GFile) source = NULL; g_autoptr (GFile) cache_into = NULL; BzAsyncTexture *texture = NULL; if (select_is_local) select_uri = g_strdup_printf ("file://%s", select); else select_uri = g_steal_pointer (&select); source = g_file_new_for_uri (select_uri); cache_into = g_file_new_build_filename ( module_dir, unique_id_checksum, "icon-paintable.png", NULL); texture = bz_async_texture_new_lazy (source, cache_into); icon_paintable = GDK_PAINTABLE (texture); if (select_is_local) mini_icon = bz_load_mini_icon_sync (unique_id_checksum, select); } } branding = as_component_get_branding (component); if (branding != NULL) { accent_color_light = as_branding_get_color ( branding, AS_COLOR_KIND_PRIMARY, AS_COLOR_SCHEME_KIND_LIGHT); accent_color_dark = as_branding_get_color ( branding, AS_COLOR_KIND_PRIMARY, AS_COLOR_SCHEME_KIND_DARK); } content_rating = as_component_get_content_rating (component, "oars-1.1"); if (content_rating != NULL) { g_object_ref (content_rating); } else { content_rating = as_component_get_content_rating (component, "oars-1.0"); if (content_rating != NULL) g_object_ref (content_rating); } requires_relations = as_component_get_requires (component); recommends_relations = as_component_get_recommends (component); supports_relations = as_component_get_supports (component); if (requires_relations != NULL) { for (guint i = 0; i < requires_relations->len; i++) { AsRelation *relation = g_ptr_array_index (requires_relations, i); AsRelationItemKind item_kind = as_relation_get_item_kind (relation); if (item_kind == AS_RELATION_ITEM_KIND_CONTROL) { AsControlKind control_kind = as_relation_get_value_control_kind (relation); const char *control_str = as_control_kind_to_string (control_kind); if (control_str != NULL) required_controls |= parse_control_value (control_str); } else if (item_kind == AS_RELATION_ITEM_KIND_DISPLAY_LENGTH) { AsRelationCompare compare = as_relation_get_compare (relation); gint value = as_relation_get_value_int (relation); if (compare == AS_RELATION_COMPARE_GE) min_display_length = value; } } } if (recommends_relations != NULL) { for (guint i = 0; i < recommends_relations->len; i++) { AsRelation *relation = g_ptr_array_index (recommends_relations, i); AsRelationItemKind item_kind = as_relation_get_item_kind (relation); if (item_kind == AS_RELATION_ITEM_KIND_CONTROL) { AsControlKind control_kind = as_relation_get_value_control_kind (relation); const char *control_str = as_control_kind_to_string (control_kind); if (control_str != NULL) recommended_controls |= parse_control_value (control_str); } } } if (supports_relations != NULL) { for (guint i = 0; i < supports_relations->len; i++) { AsRelation *relation = g_ptr_array_index (supports_relations, i); AsRelationItemKind item_kind = as_relation_get_item_kind (relation); if (item_kind == AS_RELATION_ITEM_KIND_CONTROL) { AsControlKind control_kind = as_relation_get_value_control_kind (relation); const char *control_str = as_control_kind_to_string (control_kind); if (control_str != NULL) supported_controls |= parse_control_value (control_str); } else if (item_kind == AS_RELATION_ITEM_KIND_DISPLAY_LENGTH) { AsRelationCompare compare = as_relation_get_compare (relation); gint value = as_relation_get_value_int (relation); if (compare == AS_RELATION_COMPARE_LE) max_display_length = value; } } } is_mobile_friendly = calculate_is_mobile_friendly (required_controls, recommended_controls, supported_controls); if (as_search_tokens != NULL) { g_autoptr (GStrvBuilder) builder = NULL; g_auto (GStrv) strv = NULL; builder = g_strv_builder_new (); for (guint i = 0; i < as_search_tokens->len; i++) { const char *token = NULL; token = g_ptr_array_index (as_search_tokens, i); g_strv_builder_add (builder, token); } strv = g_strv_builder_end (builder); search_tokens = g_strjoinv (" ", strv); } as_keywords = as_component_get_keywords (component); if (as_keywords != NULL && as_keywords->len > 0) { keywords = g_list_store_new (GTK_TYPE_STRING_OBJECT); for (guint i = 0; i < as_keywords->len; i++) { const char *keyword = NULL; g_autoptr (GtkStringObject) keyword_obj = NULL; keyword = g_ptr_array_index (as_keywords, i); keyword_obj = gtk_string_object_new (keyword); g_list_store_append (keywords, keyword_obj); } } as_categories = as_component_get_categories (component); if (as_categories != NULL) { for (guint i = 0; i < as_categories->len; i++) { const char *name = NULL; name = g_ptr_array_index (as_categories, i); categories = bz_category_flags_add (categories, name); } } if (is_mobile_friendly) categories = bz_category_flags_add (categories, "mobile"); if (g_strcmp0 (remote_name, "flathub") == 0) { const char *verified_str = NULL; const char *method = NULL; const char *website = NULL; const char *login_name = NULL; const char *login_provider = NULL; const char *timestamp = NULL; const char *login_is_org_str = NULL; gboolean verified = FALSE; gboolean login_is_org = FALSE; GHashTable *custom_fields = NULL; custom_fields = as_component_get_custom (component); if (custom_fields != NULL) { verified_str = g_hash_table_lookup (custom_fields, "flathub::verification::verified"); method = g_hash_table_lookup (custom_fields, "flathub::verification::method"); website = g_hash_table_lookup (custom_fields, "flathub::verification::website"); login_name = g_hash_table_lookup (custom_fields, "flathub::verification::login_name"); login_provider = g_hash_table_lookup (custom_fields, "flathub::verification::login_provider"); timestamp = g_hash_table_lookup (custom_fields, "flathub::verification::timestamp"); login_is_org_str = g_hash_table_lookup (custom_fields, "flathub::verification::login_is_organization"); } verified = (verified_str != NULL && g_strcmp0 (verified_str, "true") == 0); login_is_org = (login_is_org_str != NULL && g_strcmp0 (login_is_org_str, "true") == 0); verification_status = bz_verification_status_new (); g_object_set (verification_status, "verified", verified, "method", method, "website", website, "login-name", login_name, "login-provider", login_provider, "timestamp", timestamp, "login-is-organization", login_is_org, NULL); } g_object_set ( entry, "title", title, "description", description, "long-description", long_description, "url", project_url, "search-tokens", search_tokens, "metadata-license", metadata_license, "project-license", project_license, "is-floss", is_floss, "project-group", project_group, "developer", developer, "developer-id", developer_id, "icon-paintable", icon_paintable, "mini-icon", mini_icon, "screenshot-paintables", screenshot_paintables, "screenshot-captions", screenshot_captions, "thumbnail-paintable", thumbnail_paintable, "share-urls", share_urls, "donation-url", donation_url, "ratings-summary", ratings_summary, "version-history", version_history, "light-accent-color", accent_color_light, "dark-accent-color", accent_color_dark, "required-controls", required_controls, "recommended-controls", recommended_controls, "supported-controls", supported_controls, "min-display-length", min_display_length, "max-display-length", max_display_length, "is-mobile-friendly", is_mobile_friendly, "content-rating", content_rating, "keywords", keywords, "categories", categories, "verification-status", verification_status, NULL); return TRUE; } BzEntry * bz_appstream_parser_entry_from_metainfo (GFile *metainfo_file, GFile *icon_file, GError **error) { g_autoptr (AsMetadata) mdata = as_metadata_new (); AsComponent *component = NULL; g_autofree char *xml_contents = NULL; g_autofree char *xml_path = NULL; g_autofree char *xml_dir = NULL; g_autofree char *module_dir = NULL; g_autofree char *checksum = NULL; gsize xml_length = 0; g_autoptr (BzEntry) entry = NULL; g_return_val_if_fail (G_IS_FILE (metainfo_file), NULL); xml_path = g_file_get_path (metainfo_file); if (!g_file_get_contents (xml_path, &xml_contents, &xml_length, error)) return NULL; as_metadata_parse_data (mdata, xml_contents, xml_length, AS_FORMAT_KIND_XML, error); if (*error != NULL) return NULL; component = as_metadata_get_component (mdata); if (component == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "No component found in metainfo file"); return NULL; } xml_dir = g_path_get_dirname (xml_path); module_dir = bz_dup_module_dir (); checksum = g_compute_checksum_for_string (G_CHECKSUM_MD5, xml_path, -1); entry = BZ_ENTRY (g_object_new (BZ_TYPE_FLATPAK_ENTRY, NULL)); bz_appstream_parser_populate_entry ( entry, component, xml_dir, "local-preview", module_dir, checksum, as_component_get_id (component), BZ_ENTRY_KIND_APPLICATION, NULL); g_object_set (entry, "remote-repo-name", "local-preview", NULL); if (icon_file != NULL) { g_autoptr (GFile) cache_into = NULL; cache_into = g_file_new_build_filename ( module_dir, checksum, "icon-paintable.png", NULL); g_object_set ( entry, "icon-paintable", GDK_PAINTABLE (bz_async_texture_new_lazy (icon_file, cache_into)), NULL); } return g_steal_pointer (&entry); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-appstream-parser.h�������������������������������������������������0000664�0000000�0000000�00000003232�15240005042�0022175�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-appstream-parser.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include <appstream.h> #include <glib-object.h> G_BEGIN_DECLS gboolean bz_appstream_parser_populate_entry (BzEntry *entry, AsComponent *component, const char *appstream_dir, const char *remote_name, const char *module_dir, const char *unique_id_checksum, const char *id, guint kinds, GError **error); BzEntry * bz_appstream_parser_entry_from_metainfo (GFile *metainfo_file, GFile *icon_file, GError **error); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-article-list-view.c������������������������������������������������0000664�0000000�0000000�00000017776�15240005042�0022270�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-article-list-view.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <libdex.h> #include "bz-article-list-view.h" #include "bz-article-tile.h" #include "bz-curated-article.h" #include "bz-curated-articles-info.h" #include "bz-dynamic-list-view.h" #include "env.h" #include "global-net.h" #include "bz-parser.h" #include "bz-yaml-parser.h" struct _BzArticleListView { AdwBin parent_instance; BzCuratedArticlesInfo *articles; GtkWidget *list_view; }; G_DEFINE_FINAL_TYPE (BzArticleListView, bz_article_list_view, ADW_TYPE_BIN) enum { PROP_0, PROP_ARTICLES, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * load_articles_fiber (BzCuratedArticlesInfo *info); static void load_articles_then (DexFuture *future, BzArticleListView *self); static void bz_article_list_view_dispose (GObject *object) { BzArticleListView *self = BZ_ARTICLE_LIST_VIEW (object); g_clear_object (&self->articles); G_OBJECT_CLASS (bz_article_list_view_parent_class)->dispose (object); } static void bz_article_list_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzArticleListView *self = BZ_ARTICLE_LIST_VIEW (object); switch (prop_id) { case PROP_ARTICLES: g_value_set_object (value, bz_article_list_view_get_articles (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_article_list_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzArticleListView *self = BZ_ARTICLE_LIST_VIEW (object); switch (prop_id) { case PROP_ARTICLES: bz_article_list_view_set_articles (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_bind_widget (BzDynamicListView *list_view, GtkWidget *widget, GObject *object, BzArticleListView *self) { if (!BZ_IS_ARTICLE_TILE (widget) || self->articles == NULL) return; g_object_bind_property (self->articles, "aspect-ratio", BZ_ARTICLE_TILE (widget), "aspect-ratio", G_BINDING_SYNC_CREATE); } static void bz_article_list_view_class_init (BzArticleListViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_article_list_view_dispose; object_class->get_property = bz_article_list_view_get_property; object_class->set_property = bz_article_list_view_set_property; props[PROP_ARTICLES] = g_param_spec_object ( "articles", NULL, NULL, BZ_TYPE_CURATED_ARTICLES_INFO, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_DYNAMIC_LIST_VIEW); g_type_ensure (BZ_TYPE_ARTICLE_TILE); } static void bz_article_list_view_init (BzArticleListView *self) { self->list_view = g_object_new ( BZ_TYPE_DYNAMIC_LIST_VIEW, "hexpand", TRUE, "scroll", FALSE, "noscroll-kind", BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX, "child-type", "BzArticleTile", "child-prop", "article", "margin-top", 12, NULL); g_signal_connect (self->list_view, "bind-widget", G_CALLBACK (on_bind_widget), self); adw_bin_set_child (ADW_BIN (self), self->list_view); } GtkWidget * bz_article_list_view_new (BzCuratedArticlesInfo *articles) { return g_object_new ( BZ_TYPE_ARTICLE_LIST_VIEW, "articles", articles, NULL); } void bz_article_list_view_set_articles (BzArticleListView *self, BzCuratedArticlesInfo *articles) { g_autoptr (DexFuture) future = NULL; g_return_if_fail (BZ_IS_ARTICLE_LIST_VIEW (self)); g_return_if_fail (articles == NULL || BZ_IS_CURATED_ARTICLES_INFO (articles)); g_clear_object (&self->articles); if (articles != NULL) self->articles = g_object_ref (articles); g_object_set (self->list_view, "model", NULL, NULL); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ARTICLES]); if (articles == NULL) return; future = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) load_articles_fiber, g_object_ref (articles), g_object_unref); future = dex_future_then ( future, (DexFutureCallback) load_articles_then, g_object_ref (self), g_object_unref); dex_future_disown (g_steal_pointer (&future)); } BzCuratedArticlesInfo * bz_article_list_view_get_articles (BzArticleListView *self) { g_return_val_if_fail (BZ_IS_ARTICLE_LIST_VIEW (self), NULL); return self->articles; } static DexFuture * load_articles_fiber (BzCuratedArticlesInfo *info) { g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (BzYamlParser) parser = NULL; g_autoptr (GHashTable) results = NULL; g_autoptr (GListStore) store = NULL; const char *uri = NULL; GListModel *fallback = NULL; GValue *value = NULL; GPtrArray *list = NULL; uri = bz_curated_articles_info_get_uri (info); fallback = bz_curated_articles_info_get_list (info); if (uri == NULL) goto use_fallback; bytes = dex_await_boxed (bz_fetch_uri_contents (uri), &local_error); if (bytes == NULL) { g_warning ("Failed to fetch articles from %s: %s", uri, local_error->message); goto use_fallback; } g_type_ensure (BZ_TYPE_CURATED_ARTICLE); parser = bz_yaml_parser_new_for_resource_schema ( "/io/github/kolunmi/Bazaar/article-list-schema.xml"); results = bz_parser_process_bytes (BZ_PARSER (parser), bytes, &local_error); if (results == NULL) { g_warning ("Failed to parse articles yaml: %s", local_error->message); goto use_fallback; } value = g_hash_table_lookup (results, "/"); list = g_value_get_boxed (value); store = g_list_store_new (BZ_TYPE_CURATED_ARTICLE); for (guint i = 0; i < list->len; i++) { GHashTable *item = g_value_get_boxed (g_ptr_array_index (list, i)); GValue *v = g_hash_table_lookup (item, "/"); BzCuratedArticle *article = g_value_get_object (v); g_list_store_append (store, article); } return dex_future_new_take_object (g_steal_pointer (&store)); use_fallback: return dex_future_new_take_object ( fallback != NULL ? g_object_ref (fallback) : (GListModel *) g_list_store_new (BZ_TYPE_CURATED_ARTICLE)); } static void load_articles_then (DexFuture *future, BzArticleListView *self) { g_autoptr (GError) local_error = NULL; const GValue *value = NULL; GListModel *model = NULL; value = dex_future_get_value (future, &local_error); if (value == NULL) { g_warning ("Failed to load articles: %s", local_error->message); return; } model = g_value_get_object (value); g_object_set (self->list_view, "model", model, NULL); } ��bazaar-org-bazaar-48f93f4/src/bz-article-list-view.h������������������������������������������������0000664�0000000�0000000�00000002462�15240005042�0022257�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-article-list-view.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-curated-articles-info.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_ARTICLE_LIST_VIEW (bz_article_list_view_get_type ()) G_DECLARE_FINAL_TYPE (BzArticleListView, bz_article_list_view, BZ, ARTICLE_LIST_VIEW, AdwBin) GtkWidget * bz_article_list_view_new (BzCuratedArticlesInfo *articles); BzCuratedArticlesInfo * bz_article_list_view_get_articles (BzArticleListView *self); void bz_article_list_view_set_articles (BzArticleListView *self, BzCuratedArticlesInfo *articles); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-article-tile.blp���������������������������������������������������0000664�0000000�0000000�00000003267�15240005042�0021623�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzArticleTile: $BzListTile { overflow: hidden; activated => $tile_clicked_cb(); halign: fill; width-request: 275; accessibility { described-by: description; } child: Box { orientation: vertical; styles [ "rich-tile-card", ] Box picture_box { styles [ "rich-screenshot-box", ] Image { icon-name: "image-missing-symbolic"; pixel-size: 96; halign: center; valign: center; hexpand: true; visible: bind picture.visible inverted; } $BzAspectPicture picture { hexpand: true; ratio: bind try{$get_aspect_ratio(template.aspect-ratio) as <float>, 1.77}; paintable: bind $get_image(template.article as <$BzCuratedArticle>.image) as <$GdkPaintable>; } } Box { margin-start: 12; margin-end: 12; margin-top: 12; margin-bottom: 12; orientation: vertical; spacing: 5; height-request: 60; Label title { css-name: "app-tile-title"; styles [ "heading", ] ellipsize: end; xalign: 0; label: bind template.article as <$BzCuratedArticle>.title; max-width-chars: 18; } Label description { css-name: "app-tile-description"; xalign: 0.0; yalign: 0.0; wrap: true; wrap-mode: word_char; ellipsize: end; vexpand: true; lines: 2; max-width-chars: 15; single-line-mode: true; label: bind template.article as <$BzCuratedArticle>.subtitle; height-request: 36; styles [ "dimmed", ] } } }; }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-article-tile.c�����������������������������������������������������0000664�0000000�0000000�00000015162�15240005042�0021265�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-article-tile.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define BAZAAR_MODULE "article-tile" #include "config.h" #include "bz-article-list-view.h" #include "bz-article-tile.h" #include "bz-article.h" #include "bz-aspect-picture.h" #include "bz-async-texture.h" #include "bz-curated-article.h" #include "bz-curated-articles-info.h" #include "io.h" struct _BzArticleTile { BzListTile parent_instance; BzCuratedArticle *article; float aspect_ratio; GBinding *aspect_ratio_binding; GtkWidget *picture_box; GtkWidget *picture; }; G_DEFINE_FINAL_TYPE (BzArticleTile, bz_article_tile, BZ_TYPE_LIST_TILE); enum { PROP_0, PROP_ARTICLE, PROP_ASPECT_RATIO, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_article_tile_dispose (GObject *object) { BzArticleTile *self = BZ_ARTICLE_TILE (object); g_clear_object (&self->article); g_clear_object (&self->aspect_ratio_binding); G_OBJECT_CLASS (bz_article_tile_parent_class)->dispose (object); } static void bz_article_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzArticleTile *self = BZ_ARTICLE_TILE (object); switch (prop_id) { case PROP_ARTICLE: g_value_set_object (value, bz_article_tile_get_article (self)); break; case PROP_ASPECT_RATIO: g_value_set_float (value, self->aspect_ratio); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_article_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzArticleTile *self = BZ_ARTICLE_TILE (object); switch (prop_id) { case PROP_ARTICLE: bz_article_tile_set_article (self, g_value_get_object (value)); break; case PROP_ASPECT_RATIO: self->aspect_ratio = g_value_get_float (value); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ASPECT_RATIO]); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void tile_clicked_cb (GtkButton *button, BzArticleTile *self) { GtkWidget *nav_view = NULL; AdwNavigationPage *page = NULL; if (self->article == NULL) return; nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); if (nav_view == NULL) return; page = bz_article_new (self->article); adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), page); } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, const char *value) { return value == NULL; } static float get_aspect_ratio (gpointer object, float ratio) { return ratio > 0.0f ? ratio : 1.77f; } static BzAsyncTexture * get_image (gpointer object, const char *uri) { g_autoptr (GFile) source = NULL; g_autoptr (GFile) cache_file = NULL; g_autofree char *cache_dir = NULL; g_autofree char *checksum = NULL; g_autofree char *cache_path = NULL; if (uri == NULL) return NULL; source = g_file_new_for_uri (uri); checksum = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1); cache_dir = bz_dup_module_dir (); cache_path = g_build_filename (cache_dir, checksum, NULL); cache_file = g_file_new_for_path (cache_path); return bz_async_texture_new_lazy (source, cache_file); } static void bz_article_tile_class_init (BzArticleTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_article_tile_set_property; object_class->get_property = bz_article_tile_get_property; object_class->dispose = bz_article_tile_dispose; props[PROP_ARTICLE] = g_param_spec_object ( "article", NULL, NULL, BZ_TYPE_CURATED_ARTICLE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ASPECT_RATIO] = g_param_spec_float ( "aspect-ratio", NULL, NULL, 0.0f, G_MAXFLOAT, 1.0f, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LIST_TILE); g_type_ensure (BZ_TYPE_ASYNC_TEXTURE); g_type_ensure (BZ_TYPE_ASPECT_PICTURE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-article-tile.ui"); gtk_widget_class_bind_template_callback (widget_class, tile_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, get_image); gtk_widget_class_bind_template_callback (widget_class, get_aspect_ratio); gtk_widget_class_bind_template_child (widget_class, BzArticleTile, picture_box); gtk_widget_class_bind_template_child (widget_class, BzArticleTile, picture); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static void bz_article_tile_init (BzArticleTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_article_tile_new (void) { return g_object_new (BZ_TYPE_ARTICLE_TILE, NULL); } BzCuratedArticle * bz_article_tile_get_article (BzArticleTile *self) { g_return_val_if_fail (BZ_IS_ARTICLE_TILE (self), NULL); return self->article; } void bz_article_tile_set_article (BzArticleTile *self, BzCuratedArticle *article) { g_return_if_fail (BZ_IS_ARTICLE_TILE (self)); g_clear_object (&self->article); if (article != NULL) self->article = g_object_ref (article); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ARTICLE]); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-article-tile.h�����������������������������������������������������0000664�0000000�0000000�00000002322�15240005042�0021264�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-article-tile.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-curated-article.h" #include "bz-list-tile.h" G_BEGIN_DECLS #define BZ_TYPE_ARTICLE_TILE (bz_article_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzArticleTile, bz_article_tile, BZ, ARTICLE_TILE, BzListTile) GtkWidget * bz_article_tile_new (void); BzCuratedArticle * bz_article_tile_get_article (BzArticleTile *self); void bz_article_tile_set_article (BzArticleTile *self, BzCuratedArticle *article); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-article.blp��������������������������������������������������������0000664�0000000�0000000�00000004153�15240005042�0020663�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzArticle: Adw.NavigationPage { child: Adw.ToolbarView { [top] Adw.HeaderBar { overflow: hidden; [title] Revealer { reveal-child: bind $is_scrolled_down(main_scroll.vadjustment as <Adjustment>.value) as <bool>; transition-type: slide_up; transition-duration: 500; overflow: visible; child: Label { label: bind template.article as <$BzCuratedArticle>.title; styles ["title"] }; } } content: Adw.ViewStack stack { hexpand: true; vexpand: true; Adw.ViewStackPage { name: "loading"; child: Adw.Spinner { hexpand: true; vexpand: true; halign: center; valign: center; width-request: 64; height-request: 64; }; } Adw.ViewStackPage { name: "content"; child: ScrolledWindow main_scroll { hexpand: true; vexpand: true; hscrollbar-policy: never; child: Adw.Clamp { margin-top: 20; margin-bottom: 50; margin-start: 20; margin-end: 20; maximum-size: 800; child: Box { orientation: vertical; Label { label: bind template.article as <$BzCuratedArticle>.title; wrap: true; wrap-mode: word_char; margin-bottom: 12; selectable: true; xalign: 0; styles [ "title-1", ] } $BgeMarkdownRender render { styles [ "article", ] spacing: 12; hexpand: true; bind-inline-uri => $markdown_bind_inline_uri(template); } }; }; }; } Adw.ViewStackPage { name: "error"; child: Adw.StatusPage { icon-name: "computer-fail-symbolic"; title: _("Failed to Load Article"); }; } }; }; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-article.c����������������������������������������������������������0000664�0000000�0000000�00000036421�15240005042�0020333�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-article.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <bge.h> #include <libdex.h> #include "bz-app-tile.h" #include "bz-application-map-factory.h" #include "bz-application.h" #include "bz-article.h" #include "bz-aspect-picture.h" #include "bz-async-texture.h" #include "bz-dynamic-list-view.h" #include "env.h" #include "global-net.h" #include "io.h" #include "bz-rich-app-tile.h" #include "bz-screenshot-page.h" #include "bz-state-info.h" #include "util.h" #include "bz-window.h" struct _BzArticle { AdwNavigationPage parent_instance; BzCuratedArticle *article; GCancellable *cancellable; AdwStyleManager *style_manager; GListStore *screenshot_textures; GListStore *screenshot_captions; /* Template widgets */ AdwViewStack *stack; BgeMarkdownRender *render; }; G_DEFINE_FINAL_TYPE (BzArticle, bz_article, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_ARTICLE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void dark_changed (BzArticle *self, GParamSpec *pspec, AdwStyleManager *mgr); static void load_markdown (BzArticle *self); static void load_markdown_then (DexFuture *future, BzArticle *self); static GtkWidget * markdown_bind_inline_uri (BzArticle *self, const char *title, const char *src, BgeMarkdownRender *markdown); static gboolean is_scrolled_down (gpointer object, double value); static GtkWidget * build_appstream_wrap_box (const char *remainder); static void screenshot_clicked (GtkButton *button, gpointer user_data); static GtkWidget * build_screenshot_box (BzArticle *self, const char *title, GFile *file); static void hook_tile_bind_widget (BzDynamicListView *list_view, GtkWidget *widget, GObject *object, gpointer user_data); static BzEntryGroup * parse_hook_group (const char *item); static void bz_article_dispose (GObject *object) { BzArticle *self = BZ_ARTICLE (object); g_signal_handlers_disconnect_by_func ( self->style_manager, dark_changed, self); if (self->cancellable != NULL) { g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); } g_clear_object (&self->article); g_clear_object (&self->style_manager); g_clear_object (&self->screenshot_textures); g_clear_object (&self->screenshot_captions); G_OBJECT_CLASS (bz_article_parent_class)->dispose (object); } static void bz_article_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzArticle *self = BZ_ARTICLE (object); switch (prop_id) { case PROP_ARTICLE: g_value_set_object (value, self->article); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_article_class_init (BzArticleClass *klass) { GObjectClass *object_class = NULL; GtkWidgetClass *widget_class = NULL; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_article_dispose; object_class->get_property = bz_article_get_property; props[PROP_ARTICLE] = g_param_spec_object ( "article", NULL, NULL, BZ_TYPE_CURATED_ARTICLE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-article.ui"); gtk_widget_class_bind_template_child (widget_class, BzArticle, stack); gtk_widget_class_bind_template_child (widget_class, BzArticle, render); gtk_widget_class_bind_template_callback (widget_class, markdown_bind_inline_uri); gtk_widget_class_bind_template_callback (widget_class, is_scrolled_down); } static void bz_article_init (BzArticle *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->style_manager = g_object_ref ( adw_style_manager_get_default ()); g_signal_connect_swapped ( self->style_manager, "notify::dark", G_CALLBACK (dark_changed), self); bge_markdown_render_set_dark ( self->render, adw_style_manager_get_dark (self->style_manager)); self->screenshot_textures = g_list_store_new (BZ_TYPE_ASYNC_TEXTURE); self->screenshot_captions = g_list_store_new (GTK_TYPE_STRING_OBJECT); } AdwNavigationPage * bz_article_new (BzCuratedArticle *article) { BzArticle *self = NULL; const char *title = NULL; g_return_val_if_fail (article == NULL || BZ_IS_CURATED_ARTICLE (article), NULL); self = g_object_new (BZ_TYPE_ARTICLE, NULL); if (article != NULL) { self->article = g_object_ref (article); title = bz_curated_article_get_title (article); adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self), title != NULL ? title : ""); load_markdown (self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ARTICLE]); return ADW_NAVIGATION_PAGE (self); } static void dark_changed (BzArticle *self, GParamSpec *pspec, AdwStyleManager *mgr) { bge_markdown_render_set_dark (self->render, adw_style_manager_get_dark (mgr)); } static void load_markdown (BzArticle *self) { const char *uri = NULL; g_autoptr (DexFuture) future = NULL; if (self->article == NULL) return; uri = bz_curated_article_get_uri (self->article); if (uri == NULL) { adw_view_stack_set_visible_child_name (self->stack, "error"); return; } adw_view_stack_set_visible_child_name (self->stack, "loading"); self->cancellable = g_cancellable_new (); future = bz_fetch_uri_contents (uri); future = dex_future_then ( future, (DexFutureCallback) load_markdown_then, g_object_ref (self), g_object_unref); dex_future_disown (g_steal_pointer (&future)); } static void load_markdown_then (DexFuture *future, BzArticle *self) { g_autoptr (GError) local_error = NULL; const GValue *value = NULL; g_autoptr (GBytes) bytes = NULL; gconstpointer data = NULL; gsize size = 0; if (g_cancellable_is_cancelled (self->cancellable)) return; value = dex_future_get_value (future, &local_error); if (value == NULL) { g_warning ("Failed to load article markdown: %s", local_error != NULL ? local_error->message : "unknown error"); adw_view_stack_set_visible_child_name (self->stack, "error"); return; } bytes = g_value_dup_boxed (value); data = g_bytes_get_data (bytes, &size); bge_markdown_render_set_markdown (self->render, (const char *) data); adw_view_stack_set_visible_child_name (self->stack, "content"); } static gboolean is_scrolled_down (gpointer object, double value) { return value > 50.0; } static void hook_tile_bind_widget (BzDynamicListView *list_view, GtkWidget *widget, GObject *object, gpointer user_data) { BzEntryGroup *group = BZ_ENTRY_GROUP (object); const char *icon_uri = NULL; icon_uri = g_object_get_data (object, "bz-hook-icon-uri"); if (g_object_get_data (object, "bz-hook-app") != NULL) { gtk_actionable_set_action_name (GTK_ACTIONABLE (widget), "window.activate-hook-app"); gtk_actionable_set_action_target (GTK_ACTIONABLE (widget), "s", bz_entry_group_get_id (group)); if (icon_uri != NULL) { g_autoptr (GFile) icon_file = NULL; g_autoptr (BzAsyncTexture) texture = NULL; icon_file = g_file_new_for_uri (icon_uri); texture = bz_async_texture_new_lazy (icon_file, NULL); bz_app_tile_set_icon_override (BZ_APP_TILE (widget), GDK_PAINTABLE (texture)); } } } static BzEntryGroup * parse_hook_group (const char *item) { g_autoptr (GUri) uri = NULL; g_autoptr (GHashTable) params = NULL; g_autoptr (GError) local_error = NULL; const char *id = NULL; const char *title = NULL; const char *subtitle = NULL; const char *icon_uri = NULL; BzEntryGroup *group = NULL; uri = g_uri_parse (item, G_URI_FLAGS_NONE, &local_error); if (uri == NULL) return NULL; params = g_uri_parse_params ( g_uri_get_query (uri), -1, "&", G_URI_PARAMS_NONE, &local_error); if (params == NULL) return NULL; id = g_hash_table_lookup (params, "id"); title = g_hash_table_lookup (params, "title"); subtitle = g_hash_table_lookup (params, "subtitle"); icon_uri = g_hash_table_lookup (params, "icon"); group = bz_entry_group_new_manual (id, title, subtitle); if (group != NULL) { g_object_set_data (G_OBJECT (group), "bz-hook-app", GINT_TO_POINTER (TRUE)); if (icon_uri != NULL) g_object_set_data_full (G_OBJECT (group), "bz-hook-icon-uri", g_strdup (icon_uri), g_free); } return group; } static GtkWidget * build_appstream_wrap_box (const char *remainder) { g_auto (GStrv) items = NULL; guint n_items = 0; g_autoptr (GListStore) groups = NULL; GtkWidget *list_view = NULL; items = g_strsplit (remainder, ",", -1); n_items = g_strv_length (items); groups = g_list_store_new (BZ_TYPE_ENTRY_GROUP); for (guint i = 0; i < n_items; i++) { const char *item = items[i]; if (g_str_has_prefix (item, "appstream://")) { g_autoptr (GtkStringObject) string = NULL; g_autoptr (BzEntryGroup) group = NULL; string = gtk_string_object_new (item + strlen ("appstream://")); group = bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (bz_state_info_get_default ()), g_steal_pointer (&string)); if (group != NULL) g_list_store_append (groups, group); } else if (g_str_has_prefix (item, "bazaar-hook://")) { g_autoptr (BzEntryGroup) group = NULL; group = parse_hook_group (item); if (group != NULL) g_list_store_append (groups, group); } } list_view = GTK_WIDGET (bz_dynamic_list_view_new ()); gtk_widget_set_hexpand (list_view, TRUE); g_signal_connect (list_view, "bind-widget", G_CALLBACK (hook_tile_bind_widget), NULL); g_object_set ( list_view, "scroll", FALSE, "noscroll-kind", BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX, "child-type", "BzAppTile", "child-prop", "group", "column-spacing", 12, "row-spacing", 12, "model", groups, NULL); if (g_list_model_get_n_items (G_LIST_MODEL (groups)) == 1) { GtkWidget *clamp = NULL; clamp = GTK_WIDGET (adw_clamp_new ()); g_object_set ( clamp, "maximum-size", 375, "hexpand", TRUE, "margin-top", 12, "margin-bottom", 12, "child", list_view, NULL); return clamp; } gtk_widget_set_margin_top (list_view, 12); gtk_widget_set_margin_bottom (list_view, 12); return list_view; } static void screenshot_clicked (GtkButton *button, gpointer user_data) { BzArticle *self = user_data; guint index = 0; GtkWidget *root = NULL; BzScreenshotPage *page = NULL; index = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (button), "bz-screenshot-index")); root = GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (button))); if (!BZ_IS_WINDOW (root)) return; page = BZ_SCREENSHOT_PAGE (bz_screenshot_page_new ( G_LIST_MODEL (self->screenshot_textures), G_LIST_MODEL (self->screenshot_captions), index, GTK_WIDGET (button))); bz_window_open_screenshot_page (BZ_WINDOW (root), page); } static GtkWidget * build_screenshot_box (BzArticle *self, const char *title, GFile *file) { g_autoptr (BzAsyncTexture) texture = NULL; GtkWidget *picture = NULL; GtkWidget *box = NULL; GtkWidget *button = NULL; guint index = 0; texture = bz_async_texture_new_lazy (file, NULL); picture = bz_aspect_picture_new (); bz_aspect_picture_set_paintable (BZ_ASPECT_PICTURE (picture), GDK_PAINTABLE (texture)); bz_aspect_picture_set_ratio (BZ_ASPECT_PICTURE (picture), 0.0); gtk_widget_set_hexpand (picture, TRUE); gtk_widget_set_halign (picture, GTK_ALIGN_FILL); if (title != NULL) gtk_accessible_update_property (GTK_ACCESSIBLE (picture), GTK_ACCESSIBLE_PROPERTY_LABEL, title, -1); index = g_list_model_get_n_items (G_LIST_MODEL (self->screenshot_textures)); g_list_store_append (self->screenshot_textures, texture); { g_autoptr (GtkStringObject) caption_obj = NULL; caption_obj = gtk_string_object_new (title != NULL ? title : ""); g_list_store_append (self->screenshot_captions, caption_obj); } button = gtk_button_new (); gtk_widget_add_css_class (button, "article-image-button"); gtk_widget_set_hexpand (button, TRUE); gtk_widget_set_halign (button, GTK_ALIGN_FILL); gtk_button_set_child (GTK_BUTTON (button), picture); g_object_set_data (G_OBJECT (button), "bz-screenshot-index", GUINT_TO_POINTER (index)); g_signal_connect (button, "clicked", G_CALLBACK (screenshot_clicked), self); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_widget_set_margin_top (box, 15); gtk_widget_set_margin_bottom (box, 15); gtk_box_append (GTK_BOX (box), button); if (title != NULL) { GtkWidget *caption = NULL; caption = gtk_label_new (title); gtk_widget_add_css_class (caption, "caption"); gtk_widget_add_css_class (caption, "dimmed"); gtk_label_set_xalign (GTK_LABEL (caption), 0.5); gtk_box_append (GTK_BOX (box), caption); } return box; } static GtkWidget * markdown_bind_inline_uri (BzArticle *self, const char *title, const char *src, BgeMarkdownRender *markdown) { g_autoptr (GFile) file = NULL; if (src == NULL) return NULL; if (g_str_has_prefix (src, "appstream://") || g_str_has_prefix (src, "bazaar-hook://")) return build_appstream_wrap_box (src); file = g_file_new_for_uri (src); if (file != NULL) return build_screenshot_box (self, title, file); return NULL; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-article.h����������������������������������������������������������0000664�0000000�0000000�00000002024�15240005042�0020330�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-article.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-curated-article.h" G_BEGIN_DECLS #define BZ_TYPE_ARTICLE (bz_article_get_type ()) G_DECLARE_FINAL_TYPE (BzArticle, bz_article, BZ, ARTICLE, AdwNavigationPage) AdwNavigationPage * bz_article_new (BzCuratedArticle *article); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-aspect-picture.c���������������������������������������������������0000664�0000000�0000000�00000023747�15240005042�0021647�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-aspect-picture.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-aspect-picture.h" #include <math.h> struct _BzAspectPicture { GtkWidget parent_instance; GdkPaintable *paintable; double ratio; }; G_DEFINE_FINAL_TYPE (BzAspectPicture, bz_aspect_picture, GTK_TYPE_WIDGET) enum { PROP_0, PROP_PAINTABLE, PROP_RATIO, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void on_invalidate_contents (BzAspectPicture *self, GdkPaintable *paintable); static void on_invalidate_size (BzAspectPicture *self, GdkPaintable *paintable); static void bz_aspect_picture_dispose (GObject *object) { BzAspectPicture *self = BZ_ASPECT_PICTURE (object); if (self->paintable != NULL) { g_signal_handlers_disconnect_by_func (self->paintable, on_invalidate_contents, self); g_signal_handlers_disconnect_by_func (self->paintable, on_invalidate_size, self); } g_clear_object (&self->paintable); G_OBJECT_CLASS (bz_aspect_picture_parent_class)->dispose (object); } static void bz_aspect_picture_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAspectPicture *self = BZ_ASPECT_PICTURE (object); switch (prop_id) { case PROP_PAINTABLE: g_value_set_object (value, self->paintable); break; case PROP_RATIO: g_value_set_double (value, self->ratio); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_aspect_picture_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzAspectPicture *self = BZ_ASPECT_PICTURE (object); switch (prop_id) { case PROP_PAINTABLE: bz_aspect_picture_set_paintable (self, g_value_get_object (value)); break; case PROP_RATIO: bz_aspect_picture_set_ratio (self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkSizeRequestMode bz_aspect_picture_get_request_mode (GtkWidget *widget) { return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; } static void bz_aspect_picture_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { BzAspectPicture *self = BZ_ASPECT_PICTURE (widget); *minimum = 0; *natural = 0; *minimum_baseline = -1; *natural_baseline = -1; if (orientation == GTK_ORIENTATION_HORIZONTAL) { *minimum = 1; *natural = 160; } else { if (self->ratio == 0.0) { int base = (for_size > 0) ? for_size : 160; int w, h = 0; if (self->paintable != NULL) { w = gdk_paintable_get_intrinsic_width (self->paintable); h = gdk_paintable_get_intrinsic_height (self->paintable); if (w > 0 && h > 0) { *minimum = (int) round (((double) base * h) / w); *natural = *minimum; } else { *minimum = base; *natural = base; } } else { *minimum = base; *natural = base; } } else { int base = 0; int h = 0; base = (for_size > 0) ? for_size : 160; h = (int) round ((double) base / self->ratio); *minimum = h; *natural = h; } } } static void bz_aspect_picture_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzAspectPicture *self = BZ_ASPECT_PICTURE (widget); int widget_width = 0; int widget_height = 0; double paintable_width = 0.0; double paintable_height = 0.0; double scale_x = 0.0; double scale_y = 0.0; double scale = 0.0; double draw_width = 0.0; double draw_height = 0.0; double x = 0.0; double y = 0.0; GskRoundedRect clip; if (self->paintable == NULL) return; widget_width = gtk_widget_get_width (widget); widget_height = gtk_widget_get_height (widget); if (widget_width <= 0 || widget_height <= 0) return; paintable_width = gdk_paintable_get_intrinsic_width (self->paintable); paintable_height = gdk_paintable_get_intrinsic_height (self->paintable); if (paintable_width <= 0 || paintable_height <= 0) { paintable_width = widget_width; paintable_height = widget_height; } scale_x = (double) widget_width / paintable_width; scale_y = (double) widget_height / paintable_height; scale = MAX (scale_x, scale_y); draw_width = paintable_width * scale; draw_height = paintable_height * scale; x = ((double) widget_width - draw_width) / 2.0; y = ((double) widget_height - draw_height) / 2.0; gsk_rounded_rect_init_from_rect (&clip, &GRAPHENE_RECT_INIT (0, 0, widget_width, widget_height), 0.0); gtk_snapshot_push_rounded_clip (snapshot, &clip); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y)); gdk_paintable_snapshot (self->paintable, snapshot, draw_width, draw_height); gtk_snapshot_pop (snapshot); } static void bz_aspect_picture_class_init (BzAspectPictureClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_aspect_picture_dispose; object_class->get_property = bz_aspect_picture_get_property; object_class->set_property = bz_aspect_picture_set_property; widget_class->get_request_mode = bz_aspect_picture_get_request_mode; widget_class->measure = bz_aspect_picture_measure; widget_class->snapshot = bz_aspect_picture_snapshot; gtk_widget_class_set_css_name (widget_class, "aspectpicture"); props[PROP_PAINTABLE] = g_param_spec_object ("paintable", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_RATIO] = g_param_spec_double ("ratio", NULL, NULL, 0.000, G_MAXDOUBLE, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_aspect_picture_init (BzAspectPicture *self) { self->ratio = 0; } GtkWidget * bz_aspect_picture_new (void) { return g_object_new (BZ_TYPE_ASPECT_PICTURE, NULL); } void bz_aspect_picture_set_paintable (BzAspectPicture *self, GdkPaintable *paintable) { g_return_if_fail (BZ_IS_ASPECT_PICTURE (self)); g_return_if_fail (paintable == NULL || GDK_IS_PAINTABLE (paintable)); if (self->paintable == paintable) return; if (self->paintable != NULL) { g_signal_handlers_disconnect_by_func (self->paintable, on_invalidate_contents, self); g_signal_handlers_disconnect_by_func (self->paintable, on_invalidate_size, self); } g_clear_object (&self->paintable); if (paintable != NULL) { self->paintable = g_object_ref (paintable); g_signal_connect_swapped (self->paintable, "invalidate-contents", G_CALLBACK (on_invalidate_contents), self); g_signal_connect_swapped (self->paintable, "invalidate-size", G_CALLBACK (on_invalidate_size), self); } gtk_widget_queue_resize (GTK_WIDGET (self)); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PAINTABLE]); } GdkPaintable * bz_aspect_picture_get_paintable (BzAspectPicture *self) { g_return_val_if_fail (BZ_IS_ASPECT_PICTURE (self), NULL); return self->paintable; } void bz_aspect_picture_set_ratio (BzAspectPicture *self, double ratio) { g_return_if_fail (BZ_IS_ASPECT_PICTURE (self)); g_return_if_fail (ratio >= 0.0); if (self->ratio == ratio) return; self->ratio = ratio; gtk_widget_queue_resize (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RATIO]); } double bz_aspect_picture_get_ratio (BzAspectPicture *self) { g_return_val_if_fail (BZ_IS_ASPECT_PICTURE (self), 16.0 / 9.0); return self->ratio; } static void on_invalidate_contents (BzAspectPicture *self, GdkPaintable *paintable) { gtk_widget_queue_draw (GTK_WIDGET (self)); } static void on_invalidate_size (BzAspectPicture *self, GdkPaintable *paintable) { gtk_widget_queue_resize (GTK_WIDGET (self)); } �������������������������bazaar-org-bazaar-48f93f4/src/bz-aspect-picture.h���������������������������������������������������0000664�0000000�0000000�00000002560�15240005042�0021642�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-aspect-picture.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_ASPECT_PICTURE (bz_aspect_picture_get_type ()) G_DECLARE_FINAL_TYPE (BzAspectPicture, bz_aspect_picture, BZ, ASPECT_PICTURE, GtkWidget) GtkWidget * bz_aspect_picture_new (void); void bz_aspect_picture_set_paintable (BzAspectPicture *self, GdkPaintable *paintable); GdkPaintable * bz_aspect_picture_get_paintable (BzAspectPicture *self); void bz_aspect_picture_set_ratio (BzAspectPicture *self, double ratio); double bz_aspect_picture_get_ratio (BzAspectPicture *self); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-async-texture.c����������������������������������������������������0000664�0000000�0000000�00000106371�15240005042�0021525�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-async-texture.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::ASYNC-TEXTURE" #define MAX_CONCURRENT_IO 8 #define MAX_CONCURRENT_GLYCIN 32 #define CACHE_INVALID_AGE (G_TIME_SPAN_DAY * 1) #define HTTP_TIMEOUT_SECONDS 5 #define MAX_LOAD_RETRIES 3 #define RETRY_INTERVAL_SECONDS 1 #define TEXTURE_LINGER_SECONDS 2 #include "config.h" #include <glycin-gtk4-2/glycin-gtk4.h> #include <libdex.h> #include "bz-async-texture.h" #include "bz-download-worker.h" #include "env.h" #include "io.h" #include "util.h" BZ_DEFINE_DATA ( cache_entry, CacheEntry, { GdkTexture *texture; DexFuture *linger_timeout; }, BZ_RELEASE_DATA (texture, g_object_unref); BZ_RELEASE_DATA (linger_timeout, dex_unref)); static GMutex texture_cache_mutex = { 0 }; static GHashTable *texture_cache = NULL; static void texture_cache_ensure (void); static DexFuture * linger_timeout_finally (DexFuture *future, char *uri); static GdkTexture * texture_cache_acquire (const char *uri); static void texture_cache_store (const char *uri, GdkTexture *texture); static void texture_cache_release (const char *uri); BZ_DEFINE_DATA ( load, Load, { GFile *source; char *source_uri; GFile *cache_into; char *cache_into_path; GCancellable *cancellable; int retries; GWeakRef self; }, BZ_RELEASE_DATA (source, g_object_unref); BZ_RELEASE_DATA (source_uri, g_free); BZ_RELEASE_DATA (cache_into, g_object_unref); BZ_RELEASE_DATA (cache_into_path, g_free); BZ_RELEASE_DATA (cancellable, g_object_unref); g_weak_ref_clear (&self->self);) struct _BzAsyncTexture { GObject parent_instance; GFile *source; char *source_uri; GFile *cache_into; char *cache_into_path; gboolean lazy; int width; int height; DexFuture *task; GCancellable *cancellable; int retries; DexFuture *retry_future; GdkPaintable *paintable; GMutex mutex; gboolean cache_acquired; }; static void paintable_iface_init (GdkPaintableInterface *iface); G_DEFINE_TYPE_WITH_CODE ( BzAsyncTexture, bz_async_texture, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (GDK_TYPE_PAINTABLE, paintable_iface_init)) enum { PROP_0, PROP_SOURCE, PROP_CACHE_INTO, PROP_LOADED, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static BzAsyncTexture * bz_async_texture_new_internal (GFile *source, GFile *cache_into, int width, int height, gboolean lazy); static DexFuture * load_fiber_work (LoadData *data); static DexFuture * load_finally (DexFuture *future, LoadData *data); static void maybe_load (BzAsyncTexture *self); static DexFuture * retry_cb (DexFuture *future, LoadData *data); static gboolean idle_notify (BzAsyncTexture *self); static GMutex debug_n_textures_mutex = { 0 }; static gsize debug_n_textures = 0; static void bz_async_texture_dispose (GObject *object) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (object); if (self->cancellable != NULL) g_cancellable_cancel (self->cancellable); dex_clear (&self->task); g_clear_object (&self->cancellable); dex_clear (&self->retry_future); g_clear_object (&self->source); if (self->cache_acquired && self->source_uri != NULL) { texture_cache_release (self->source_uri); self->cache_acquired = FALSE; } g_clear_pointer (&self->source_uri, g_free); g_clear_object (&self->cache_into); g_clear_pointer (&self->cache_into_path, g_free); g_clear_object (&self->paintable); g_mutex_clear (&self->mutex); if (!g_log_writer_default_would_drop (G_LOG_LEVEL_DEBUG, G_LOG_DOMAIN)) { g_mutex_lock (&debug_n_textures_mutex); debug_n_textures--; g_debug ("%zu %s object(s) in memory", debug_n_textures, g_type_name (BZ_TYPE_ASYNC_TEXTURE)); g_mutex_unlock (&debug_n_textures_mutex); } G_OBJECT_CLASS (bz_async_texture_parent_class)->dispose (object); } static void bz_async_texture_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (object); switch (prop_id) { case PROP_SOURCE: g_value_set_object (value, bz_async_texture_get_source (self)); break; case PROP_CACHE_INTO: g_value_set_object (value, bz_async_texture_get_cache_into (self)); break; case PROP_LOADED: g_value_set_boolean (value, bz_async_texture_get_loaded (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_async_texture_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { // BzAsyncTexture *self = BZ_ASYNC_TEXTURE (object); switch (prop_id) { case PROP_SOURCE: case PROP_CACHE_INTO: case PROP_LOADED: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_async_texture_class_init (BzAsyncTextureClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_async_texture_dispose; object_class->get_property = bz_async_texture_get_property; object_class->set_property = bz_async_texture_set_property; props[PROP_SOURCE] = g_param_spec_object ( "source", NULL, NULL, G_TYPE_FILE, G_PARAM_READABLE); props[PROP_CACHE_INTO] = g_param_spec_object ( "cache-into", NULL, NULL, G_TYPE_FILE, G_PARAM_READABLE); props[PROP_LOADED] = g_param_spec_boolean ( "loaded", NULL, NULL, FALSE, G_PARAM_READABLE); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_async_texture_init (BzAsyncTexture *self) { self->retries = 0; self->paintable = NULL; self->cache_acquired = FALSE; g_mutex_init (&self->mutex); if (!g_log_writer_default_would_drop (G_LOG_LEVEL_DEBUG, G_LOG_DOMAIN)) { g_mutex_lock (&debug_n_textures_mutex); debug_n_textures++; g_mutex_unlock (&debug_n_textures_mutex); } } static void paintable_snapshot (GdkPaintable *paintable, GdkSnapshot *snapshot, double width, double height) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (paintable); g_autoptr (GMutexLocker) locker = NULL; locker = g_mutex_locker_new (&self->mutex); maybe_load (self); if (self->paintable != NULL) gdk_paintable_snapshot (self->paintable, snapshot, width, height); } static GdkPaintable * paintable_get_current_image (GdkPaintable *paintable) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (paintable); g_autoptr (GMutexLocker) locker = NULL; locker = g_mutex_locker_new (&self->mutex); maybe_load (self); if (self->paintable != NULL) return gdk_paintable_get_current_image (self->paintable); return NULL; } static GdkPaintableFlags paintable_get_flags (GdkPaintable *paintable) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (paintable); g_autoptr (GMutexLocker) locker = NULL; locker = g_mutex_locker_new (&self->mutex); maybe_load (self); return 0; } static int paintable_get_intrinsic_width (GdkPaintable *paintable) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (paintable); g_autoptr (GMutexLocker) locker = NULL; locker = g_mutex_locker_new (&self->mutex); maybe_load (self); if (self->paintable != NULL) return gdk_paintable_get_intrinsic_width (self->paintable); return self->width; } static int paintable_get_intrinsic_height (GdkPaintable *paintable) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (paintable); g_autoptr (GMutexLocker) locker = NULL; locker = g_mutex_locker_new (&self->mutex); maybe_load (self); if (self->paintable != NULL) return gdk_paintable_get_intrinsic_height (self->paintable); return self->height; } static double paintable_get_intrinsic_aspect_ratio (GdkPaintable *paintable) { BzAsyncTexture *self = BZ_ASYNC_TEXTURE (paintable); g_autoptr (GMutexLocker) locker = NULL; locker = g_mutex_locker_new (&self->mutex); maybe_load (self); if (self->paintable != NULL) return gdk_paintable_get_intrinsic_aspect_ratio (self->paintable); if (self->width > 0 && self->height > 0) return (double) self->width / (double) self->height; return 0.0; } static void paintable_iface_init (GdkPaintableInterface *iface) { iface->snapshot = paintable_snapshot; iface->get_current_image = paintable_get_current_image; iface->get_flags = paintable_get_flags; iface->get_intrinsic_width = paintable_get_intrinsic_width; iface->get_intrinsic_height = paintable_get_intrinsic_height; iface->get_intrinsic_aspect_ratio = paintable_get_intrinsic_aspect_ratio; } static BzAsyncTexture * bz_async_texture_new_internal (GFile *source, GFile *cache_into, int width, int height, gboolean lazy) { BzAsyncTexture *self = NULL; g_return_val_if_fail (G_IS_FILE (source), NULL); g_return_val_if_fail (cache_into == NULL || G_IS_FILE (cache_into), NULL); self = g_object_new (BZ_TYPE_ASYNC_TEXTURE, NULL); self->source = g_object_ref (source); self->source_uri = g_file_get_uri (source); self->cache_into = bz_object_maybe_ref (cache_into); self->cache_into_path = bz_maybe (cache_into, g_file_get_path); self->lazy = lazy; self->width = width; self->height = height; if (!lazy) maybe_load (self); return self; } BzAsyncTexture * bz_async_texture_new (GFile *source, GFile *cache_into) { return bz_async_texture_new_internal (source, cache_into, 0, 0, FALSE); } BzAsyncTexture * bz_async_texture_new_with_size (GFile *source, GFile *cache_into, int width, int height) { return bz_async_texture_new_internal (source, cache_into, width, height, FALSE); } BzAsyncTexture * bz_async_texture_new_lazy (GFile *source, GFile *cache_into) { return bz_async_texture_new_internal (source, cache_into, 0, 0, TRUE); } BzAsyncTexture * bz_async_texture_new_lazy_with_size (GFile *source, GFile *cache_into, int width, int height) { return bz_async_texture_new_internal (source, cache_into, width, height, TRUE); } GFile * bz_async_texture_get_source (BzAsyncTexture *self) { g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), FALSE); return self->source; } const char * bz_async_texture_get_source_uri (BzAsyncTexture *self) { g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), FALSE); return self->source_uri; } GFile * bz_async_texture_get_cache_into (BzAsyncTexture *self) { g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), FALSE); return self->cache_into; } const char * bz_async_texture_get_cache_into_path (BzAsyncTexture *self) { g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), FALSE); return self->cache_into_path; } int bz_async_texture_get_width (BzAsyncTexture *self) { g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), 0); return self->width; } int bz_async_texture_get_height (BzAsyncTexture *self) { g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), 0); return self->height; } gboolean bz_async_texture_get_loaded (BzAsyncTexture *self) { g_autoptr (GMutexLocker) locker = NULL; g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), FALSE); locker = g_mutex_locker_new (&self->mutex); return GDK_IS_TEXTURE (self->paintable); } GdkTexture * bz_async_texture_dup_texture (BzAsyncTexture *self) { g_autoptr (GMutexLocker) locker = NULL; g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), NULL); locker = g_mutex_locker_new (&self->mutex); if (GDK_IS_TEXTURE (self->paintable)) return (GdkTexture *) g_object_ref (self->paintable); else return NULL; } DexFuture * bz_async_texture_dup_future (BzAsyncTexture *self) { g_autoptr (GMutexLocker) locker = NULL; g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), NULL); locker = g_mutex_locker_new (&self->mutex); maybe_load (self); if (self->task != NULL) return dex_ref (self->task); else if (GDK_IS_TEXTURE (self->paintable)) return dex_future_new_for_object (self->paintable); else return dex_future_new_reject ( G_IO_ERROR, G_IO_ERROR_FAILED, "texture is in an invalid state"); } static DexFuture * icon_from_bytes_then (DexFuture *future, gpointer user_data) { g_autoptr (GIcon) icon = NULL; icon = g_bytes_icon_new (g_value_get_boxed (dex_future_get_value (future, NULL))); return dex_future_new_for_object (icon); } DexFuture * bz_async_texture_dup_icon_future (BzAsyncTexture *self) { GFile *file = NULL; g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), NULL); file = self->cache_into != NULL ? self->cache_into : self->source; if (file == NULL) return dex_future_new_reject ( G_IO_ERROR, G_IO_ERROR_FAILED, "no source file to load icon from"); return dex_future_then ( dex_file_load_contents_bytes (file), icon_from_bytes_then, NULL, NULL); } void bz_async_texture_ensure (BzAsyncTexture *self) { g_autoptr (GMutexLocker) locker = NULL; g_return_if_fail (BZ_IS_ASYNC_TEXTURE (self)); locker = g_mutex_locker_new (&self->mutex); maybe_load (self); } void bz_async_texture_cancel (BzAsyncTexture *self) { g_return_if_fail (BZ_IS_ASYNC_TEXTURE (self)); if (self->cancellable != NULL) g_cancellable_cancel (self->cancellable); dex_clear (&self->task); g_clear_object (&self->cancellable); self->retries = G_MAXINT; } gboolean bz_async_texture_is_loading (BzAsyncTexture *self) { g_return_val_if_fail (BZ_IS_ASYNC_TEXTURE (self), FALSE); return self->task != NULL && dex_future_is_pending (self->task); } static void maybe_load (BzAsyncTexture *self) { g_autoptr (LoadData) data = NULL; g_autoptr (DexFuture) future = NULL; if (GDK_IS_TEXTURE (self->paintable) || (self->task != NULL && dex_future_is_pending (self->task)) || self->retries >= MAX_LOAD_RETRIES) return; if (!self->cache_acquired) { g_autoptr (GdkTexture) cached = NULL; cached = texture_cache_acquire (self->source_uri); if (cached != NULL) { g_clear_object (&self->paintable); self->paintable = (GdkPaintable *) g_object_ref (cached); self->cache_acquired = TRUE; g_idle_add_full ( G_PRIORITY_DEFAULT_IDLE, (GSourceFunc) idle_notify, g_object_ref (self), g_object_unref); return; } } if (self->cancellable != NULL) g_cancellable_cancel (self->cancellable); dex_clear (&self->task); g_clear_object (&self->cancellable); self->cancellable = g_cancellable_new (); data = load_data_new (); data->source = g_object_ref (self->source); data->source_uri = g_strdup (self->source_uri); data->cache_into = bz_object_maybe_ref (self->cache_into); data->cache_into_path = bz_maybe_strdup (self->cache_into_path); data->cancellable = g_object_ref (self->cancellable); data->retries = self->retries; g_weak_ref_init (&data->self, self); future = dex_scheduler_spawn ( bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) load_fiber_work, load_data_ref (data), load_data_unref); future = dex_future_finally ( future, (DexFutureCallback) load_finally, load_data_ref (data), load_data_unref); self->task = g_steal_pointer (&future); } static DexFuture * load_fiber_work (LoadData *data) { static GMutex queueing_mutex = { 0 }; static guint concurrent_io = MAX_CONCURRENT_IO; static guint io_queued[MAX_CONCURRENT_IO] = { 0 }; static BzGuard *io_gates[MAX_CONCURRENT_IO] = { 0 }; static GMutex io_mutexes[MAX_CONCURRENT_IO] = { 0 }; static guint concurrent_glycin = 0; static guint glycin_queued[MAX_CONCURRENT_GLYCIN] = { 0 }; static BzGuard *glycin_gates[MAX_CONCURRENT_GLYCIN] = { 0 }; static GMutex glycin_mutexes[MAX_CONCURRENT_GLYCIN] = { 0 }; GFile *source = data->source; char *source_uri = data->source_uri; GFile *cache_into = data->cache_into; char *cache_into_path = data->cache_into_path; GCancellable *cancellable = data->cancellable; gboolean result = FALSE; g_autoptr (GError) local_error = NULL; g_autoptr (GMutexLocker) locker = NULL; g_autoptr (BzGuard) slot_guard = NULL; guint slot_queued = G_MAXUINT; gboolean is_http = FALSE; g_autoptr (GDateTime) now = NULL; g_autofree char *async_tex_data_path = NULL; g_autoptr (GFile) async_tex_data_file = NULL; g_autoptr (GdkTexture) texture = NULL; g_autoptr (GlyFrame) frame = NULL; locker = g_mutex_locker_new (&queueing_mutex); if (concurrent_glycin == 0) { /* Ensure we don't overload the system with work; aim for # of logical processors divided by 2 See: https://github.com/bazaar-org/bazaar/issues/497 https://docs.gtk.org/glib/func.get_num_processors.html Eva Thu, 23 Oct 2025 14:19:44 -0700 */ concurrent_glycin = MIN ( MAX_CONCURRENT_GLYCIN, MAX (1, g_get_num_processors () / 2)); g_debug ("Allowing %d concurrent texture glycin", concurrent_glycin); } g_clear_pointer (&locker, g_mutex_locker_free); #define FIND_LOCK(name, _idx) \ G_STMT_START \ { \ locker = g_mutex_locker_new (&queueing_mutex); \ \ for (guint i = 0; i < concurrent_##name; i++) \ { \ if (name##_queued[i] < slot_queued) \ { \ slot_queued = name##_queued[i]; \ (_idx) = i; \ } \ } \ \ name##_queued[(_idx)]++; \ g_clear_pointer (&locker, g_mutex_locker_free); \ } \ G_STMT_END #define FINISH_LOCK(name, _idx) \ G_STMT_START \ { \ locker = g_mutex_locker_new (&queueing_mutex); \ name##_queued[(_idx)]--; \ g_clear_pointer (&locker, g_mutex_locker_free); \ } \ G_STMT_END #define RATE_LIMIT_BEGIN(name) \ G_STMT_START \ { \ guint _slot_index = 0; \ \ FIND_LOCK (name, _slot_index); \ BZ_BEGIN_GUARD_WITH_CONTEXT (&slot_guard, \ &name##_mutexes[_slot_index], \ &name##_gates[_slot_index]); \ FINISH_LOCK (name, _slot_index); \ } \ G_STMT_END #define RATE_LIMIT_END() bz_clear_guard (&slot_guard) is_http = g_str_has_prefix (source_uri, "http"); now = g_date_time_new_now_utc (); if (cache_into != NULL) { async_tex_data_path = g_strdup_printf ("%s.bz-async-texture-data", cache_into_path); async_tex_data_file = g_file_new_for_path (async_tex_data_path); } if (cache_into != NULL) { RATE_LIMIT_BEGIN (io); if (g_file_query_exists (cache_into, NULL) && g_file_query_exists (async_tex_data_file, NULL)) { g_autoptr (GBytes) bytes = NULL; g_autoptr (GVariant) variant = NULL; GTimeSpan age_span = 0; g_autoptr (GlyLoader) loader = NULL; g_autoptr (GlyImage) image = NULL; bytes = g_file_load_bytes (async_tex_data_file, NULL, NULL, &local_error); if (bytes != NULL) variant = g_variant_new_from_bytes (G_VARIANT_TYPE ("a{sv}"), bytes, FALSE); if (variant != NULL) { gint64 birth_unix_stamp = 0; g_autoptr (GDateTime) birth_date_time = NULL; if (g_variant_lookup ( variant, "birth-unix-stamp", "x", &birth_unix_stamp)) { birth_date_time = g_date_time_new_from_unix_utc (birth_unix_stamp); age_span = g_date_time_difference (now, birth_date_time); } else local_error = g_error_new (G_IO_ERROR, G_IO_ERROR_NOT_FOUND, "key \"birth-unix-stamp\" was not found"); } if (variant != NULL && age_span > 0) { if (age_span < CACHE_INVALID_AGE) { RATE_LIMIT_END (); RATE_LIMIT_BEGIN (glycin); loader = gly_loader_new (cache_into); /* We assume we exported this file, so uhhh it is safe to not use sandboxing, since it is faster :-) */ gly_loader_set_sandbox_selector (loader, GLY_SANDBOX_SELECTOR_NOT_SANDBOXED); image = gly_loader_load (loader, &local_error); if (image != NULL) frame = gly_image_next_frame (image, &local_error); RATE_LIMIT_END (); RATE_LIMIT_BEGIN (io); } else g_debug ("Metadata file %s for cached texture at %s indicates this resource is too old (GTimeSpan: %zu), " "reaping and fetching from original source at %s instead", async_tex_data_path, cache_into_path, age_span, source_uri); } else { g_warning ("Couldn't load associated metadata file %s for cached texture at %s, " "reaping and fetching from original source at %s instead: %s", async_tex_data_path, cache_into_path, source_uri, local_error != NULL ? local_error->message : "variant parse failed"); g_clear_pointer (&local_error, g_error_free); } if (frame == NULL) { if (local_error != NULL) g_warning ("An attempt to revive cached texture at %s has failed, " "reaping and fetching from original source at %s instead: %s", cache_into_path, source_uri, local_error->message); g_clear_pointer (&local_error, g_error_free); if (!g_file_delete (cache_into, NULL, &local_error)) { g_warning ("Couldn't reap cached texture at %s, this " "might lead to unexpected behavior: %s", cache_into_path, local_error->message); g_clear_pointer (&local_error, g_error_free); } } } RATE_LIMIT_END (); } if (frame == NULL) { g_autoptr (GFile) load_file = NULL; g_autoptr (GlyLoader) loader = NULL; g_autoptr (GlyImage) image = NULL; if (cache_into != NULL) { g_autoptr (GFile) parent = NULL; gboolean reconstruct = FALSE; parent = g_file_get_parent (cache_into); RATE_LIMIT_BEGIN (io); if (g_file_query_exists (parent, NULL)) { GFileType parent_type = G_FILE_TYPE_UNKNOWN; parent_type = g_file_query_file_type (parent, G_FILE_QUERY_INFO_NONE, NULL); if (parent_type != G_FILE_TYPE_DIRECTORY) { reconstruct = TRUE; result = g_file_delete (parent, cancellable, &local_error); if (!result) return dex_future_new_for_error (g_steal_pointer (&local_error)); } } else reconstruct = TRUE; if (reconstruct) { result = g_file_make_directory_with_parents ( parent, cancellable, &local_error); if (!result) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS)) g_clear_pointer (&local_error, g_error_free); else return dex_future_new_for_error (g_steal_pointer (&local_error)); } } RATE_LIMIT_END (); } if (is_http) { if (cache_into != NULL) load_file = g_object_ref (cache_into); else { g_autofree char *basename = NULL; g_autofree char *tmpl = NULL; g_autoptr (GFileIOStream) io = NULL; RATE_LIMIT_BEGIN (io); basename = g_file_get_basename (source); tmpl = g_strdup_printf ("XXXXXX-%s", basename); load_file = g_file_new_tmp (tmpl, &io, &local_error); if (load_file == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); g_io_stream_close (G_IO_STREAM (io), NULL, NULL); RATE_LIMIT_END (); } result = dex_await ( dex_future_first ( bz_download_worker_invoke ( bz_download_worker_get_default (), source, load_file), /* increase the timeout as more failures stack up */ dex_timeout_new_seconds ((data->retries + 1) * HTTP_TIMEOUT_SECONDS), NULL), &local_error); if (!result) return dex_future_new_for_error (g_steal_pointer (&local_error)); } else { if (cache_into != NULL) { RATE_LIMIT_BEGIN (io); result = g_file_copy ( source, cache_into, G_FILE_COPY_OVERWRITE | G_FILE_COPY_ALL_METADATA, cancellable, NULL, NULL, &local_error); if (!result) return dex_future_new_for_error (g_steal_pointer (&local_error)); RATE_LIMIT_END (); load_file = g_object_ref (cache_into); } else load_file = g_object_ref (source); } RATE_LIMIT_BEGIN (glycin); loader = gly_loader_new (load_file); #ifdef SANDBOXED_LIBFLATPAK gly_loader_set_sandbox_selector (loader, GLY_SANDBOX_SELECTOR_NOT_SANDBOXED); #endif image = gly_loader_load (loader, &local_error); if (is_http && cache_into == NULL) /* delete tmp file */ g_file_delete (load_file, NULL, NULL); if (image == NULL || local_error != NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); frame = gly_image_next_frame (image, &local_error); if (frame == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); RATE_LIMIT_END (); if (async_tex_data_file != NULL) { g_autoptr (GVariantBuilder) builder = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (GFileOutputStream) output = NULL; builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add ( builder, "{sv}", "birth-unix-stamp", g_variant_new_int64 (g_date_time_to_unix (now))); variant = g_variant_builder_end (builder); bytes = g_variant_get_data_as_bytes (variant); RATE_LIMIT_BEGIN (io); output = g_file_replace ( async_tex_data_file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &local_error); if (output != NULL) { gssize bytes_written = 0; bytes_written = g_output_stream_write_bytes (G_OUTPUT_STREAM (output), bytes, NULL, &local_error); if (bytes_written > 0) g_output_stream_close (G_OUTPUT_STREAM (output), NULL, &local_error); } RATE_LIMIT_END (); if (local_error != NULL) g_warning ("Failed to write async-tex cache metadata to %s ;" "The image will be fully reloaded next time: %s", async_tex_data_path, local_error->message); g_clear_pointer (&local_error, g_error_free); } } texture = gly_gtk_frame_get_texture (frame); if (texture == NULL) return dex_future_new_reject ( G_IO_ERROR, G_IO_ERROR_FAILED, "texture loading failed"); return dex_future_new_for_object (texture); } static DexFuture * load_finally (DexFuture *future, LoadData *data) { g_autoptr (GError) local_error = NULL; g_autoptr (BzAsyncTexture) self = NULL; g_autoptr (GMutexLocker) locker = NULL; bz_weak_get_or_return_reject (self, &data->self); locker = g_mutex_locker_new (&self->mutex); dex_clear (&self->task); if (dex_future_is_resolved (future)) { GdkTexture *texture = NULL; texture = g_value_get_object (dex_future_get_value (future, NULL)); g_clear_object (&self->paintable); self->paintable = g_object_ref (GDK_PAINTABLE (texture)); if (!self->cache_acquired) { texture_cache_store (self->source_uri, texture); self->cache_acquired = TRUE; } g_idle_add_full ( G_PRIORITY_DEFAULT_IDLE, (GSourceFunc) idle_notify, g_object_ref (self), g_object_unref); return dex_future_new_for_object (self->paintable); } else { dex_future_get_value (future, &local_error); if (self->retries < MAX_LOAD_RETRIES) { if (self->retries == MAX_LOAD_RETRIES - 1) g_warning ("Loading %s failed: %s. Retrying in %d seconds. This will " "be the last retry, after which this texture will remain invalid", self->source_uri, local_error != NULL ? local_error->message : "unknown error", RETRY_INTERVAL_SECONDS); else g_warning ("Loading %s failed: %s. Retrying in %d seconds. Retries left: %d", self->source_uri, local_error != NULL ? local_error->message : "unknown error", RETRY_INTERVAL_SECONDS, MAX_LOAD_RETRIES - self->retries); self->retries++; dex_clear (&self->retry_future); self->retry_future = dex_future_then ( dex_timeout_new_seconds (RETRY_INTERVAL_SECONDS), (DexFutureCallback) retry_cb, load_data_ref (data), load_data_unref); } return dex_ref (future); } } static DexFuture * retry_cb (DexFuture *future, LoadData *data) { g_autoptr (BzAsyncTexture) self = NULL; g_autoptr (GMutexLocker) locker = NULL; bz_weak_get_or_return_reject (self, &data->self); locker = g_mutex_locker_new (&self->mutex); dex_clear (&self->retry_future); maybe_load (self); return NULL; } static gboolean idle_notify (BzAsyncTexture *self) { g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LOADED]); gdk_paintable_invalidate_contents (GDK_PAINTABLE (self)); gdk_paintable_invalidate_size (GDK_PAINTABLE (self)); return G_SOURCE_REMOVE; } static void texture_cache_ensure (void) { if (texture_cache == NULL) texture_cache = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, cache_entry_data_unref); } static DexFuture * linger_timeout_finally (DexFuture *future, char *uri) { g_mutex_lock (&texture_cache_mutex); texture_cache_ensure (); g_hash_table_remove (texture_cache, uri); g_debug ("Texture cache: evicted '%s' after linger (table size: %u)", uri, g_hash_table_size (texture_cache)); g_mutex_unlock (&texture_cache_mutex); return dex_future_new_true (); } static GdkTexture * texture_cache_acquire (const char *uri) { g_autoptr (GMutexLocker) locker = NULL; CacheEntryData *data = NULL; locker = g_mutex_locker_new (&texture_cache_mutex); texture_cache_ensure (); data = g_hash_table_lookup (texture_cache, uri); if (data != NULL) { dex_clear (&data->linger_timeout); return g_object_ref (data->texture); } else return NULL; } static void texture_cache_store (const char *uri, GdkTexture *texture) { g_autoptr (CacheEntryData) data = NULL; g_mutex_lock (&texture_cache_mutex); texture_cache_ensure (); data = cache_entry_data_new (); data->texture = g_object_ref (texture); g_hash_table_replace ( texture_cache, g_strdup (uri), cache_entry_data_ref (data)); g_mutex_unlock (&texture_cache_mutex); } static void texture_cache_release (const char *uri) { g_autoptr (GMutexLocker) locker = NULL; CacheEntryData *data = NULL; g_autoptr (DexFuture) future = NULL; locker = g_mutex_locker_new (&texture_cache_mutex); texture_cache_ensure (); data = g_hash_table_lookup (texture_cache, uri); if (data == NULL) return; dex_clear (&data->linger_timeout); future = dex_timeout_new_seconds (TEXTURE_LINGER_SECONDS); future = dex_future_finally ( future, (DexFutureCallback) linger_timeout_finally, g_strdup (uri), g_free); data->linger_timeout = dex_ref (future); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-async-texture.h����������������������������������������������������0000664�0000000�0000000�00000004653�15240005042�0021532�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-async-texture.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include <gio/gio.h> #include <libdex.h> G_BEGIN_DECLS #define BZ_TYPE_ASYNC_TEXTURE (bz_async_texture_get_type ()) G_DECLARE_FINAL_TYPE (BzAsyncTexture, bz_async_texture, BZ, ASYNC_TEXTURE, GObject) BzAsyncTexture * bz_async_texture_new (GFile *source, GFile *cache_into); BzAsyncTexture * bz_async_texture_new_with_size (GFile *source, GFile *cache_into, int width, int height); BzAsyncTexture * bz_async_texture_new_lazy (GFile *source, GFile *cache_into); BzAsyncTexture * bz_async_texture_new_lazy_with_size (GFile *source, GFile *cache_into, int width, int height); GFile * bz_async_texture_get_source (BzAsyncTexture *self); const char * bz_async_texture_get_source_uri (BzAsyncTexture *self); GFile * bz_async_texture_get_cache_into (BzAsyncTexture *self); const char * bz_async_texture_get_cache_into_path (BzAsyncTexture *self); int bz_async_texture_get_width (BzAsyncTexture *self); int bz_async_texture_get_height (BzAsyncTexture *self); gboolean bz_async_texture_get_loaded (BzAsyncTexture *self); GdkTexture * bz_async_texture_dup_texture (BzAsyncTexture *self); DexFuture * bz_async_texture_dup_future (BzAsyncTexture *self); DexFuture * bz_async_texture_dup_icon_future (BzAsyncTexture *self); void bz_async_texture_ensure (BzAsyncTexture *self); void bz_async_texture_cancel (BzAsyncTexture *self); gboolean bz_async_texture_is_loading (BzAsyncTexture *self); G_END_DECLS �������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-auth-state.c�������������������������������������������������������0000664�0000000�0000000�00000034215�15240005042�0020766�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-auth-state.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <libsecret/secret.h> #include "bz-async-texture.h" #include "bz-auth-state.h" #define SECRET_SCHEMA_NAME "io.github.kolunmi.Bazaar.FlathubAuth" #define SECRET_LABEL "Flathub Authentication" struct _BzAuthState { GObject parent_instance; char *name; char *token; char *profile_icon_url; GDateTime *token_expires; BzAsyncTexture *paintable; gboolean loading; guint expiration_timeout_id; }; G_DEFINE_FINAL_TYPE (BzAuthState, bz_auth_state, G_TYPE_OBJECT) enum { PROP_0, PROP_NAME, PROP_TOKEN, PROP_PROFILE_ICON_URL, PROP_AUTHENTICATED, PROP_PAINTABLE, N_PROPS }; static GParamSpec *properties[N_PROPS]; static const SecretSchema * get_secret_schema (void) { static const SecretSchema schema = { SECRET_SCHEMA_NAME, SECRET_SCHEMA_NONE, { { "service", SECRET_SCHEMA_ATTRIBUTE_STRING }, { "NULL", 0 }, } }; return &schema; } static gboolean on_token_expired (gpointer user_data) { BzAuthState *self = BZ_AUTH_STATE (user_data); self->expiration_timeout_id = 0; bz_auth_state_clear (self); return G_SOURCE_REMOVE; } static void schedule_token_expiration (BzAuthState *self) { GDateTime *now; gint64 seconds_until_expiration; if (self->expiration_timeout_id != 0) g_source_remove (self->expiration_timeout_id); self->expiration_timeout_id = 0; if (self->token_expires == NULL) return; now = g_date_time_new_now_utc (); seconds_until_expiration = g_date_time_difference (self->token_expires, now) / G_TIME_SPAN_SECOND; g_date_time_unref (now); if (seconds_until_expiration <= 0) { bz_auth_state_clear (self); return; } if (seconds_until_expiration > G_MAXUINT / 1000) self->expiration_timeout_id = g_timeout_add_seconds (G_MAXUINT / 1000, on_token_expired, self); else self->expiration_timeout_id = g_timeout_add_seconds (seconds_until_expiration, on_token_expired, self); } static void save_to_secrets (BzAuthState *self) { GHashTable *attributes; GError *error = NULL; g_autoptr (GVariantBuilder) builder = NULL; g_autoptr (GVariant) variant = NULL; g_autofree char *serialized = NULL; if (self->loading) return; attributes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); g_hash_table_insert (attributes, g_strdup ("service"), g_strdup ("flathub")); builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT); if (self->name != NULL) g_variant_builder_add (builder, "{sv}", "name", g_variant_new_string (self->name)); if (self->token != NULL) g_variant_builder_add (builder, "{sv}", "token", g_variant_new_string (self->token)); if (self->token_expires != NULL) { g_autofree char *expires = g_date_time_format_iso8601 (self->token_expires); g_variant_builder_add (builder, "{sv}", "token-expires", g_variant_new_string (expires)); } if (self->profile_icon_url != NULL) g_variant_builder_add (builder, "{sv}", "profile-icon-url", g_variant_new_string (self->profile_icon_url)); variant = g_variant_builder_end (builder); serialized = g_variant_print (variant, FALSE); secret_password_storev_sync ( get_secret_schema (), attributes, NULL, SECRET_LABEL, serialized, NULL, &error); g_hash_table_unref (attributes); if (error != NULL) { g_warning ("Failed to save authentication to secrets: %s", error->message); g_error_free (error); } } static void load_from_secrets (BzAuthState *self) { GHashTable *attributes; GError *error = NULL; g_autofree char *secret = NULL; attributes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); g_hash_table_insert (attributes, g_strdup ("service"), g_strdup ("flathub")); secret = secret_password_lookupv_sync ( get_secret_schema (), attributes, NULL, &error); g_hash_table_unref (attributes); if (error != NULL) { if (!g_error_matches (error, SECRET_ERROR, SECRET_ERROR_NO_SUCH_OBJECT)) g_warning ("Failed to load authentication from secrets: %s", error->message); g_error_free (error); return; } if (secret != NULL) { g_autoptr (GVariant) variant = NULL; g_autoptr (GVariantIter) iter = NULL; variant = g_variant_parse (G_VARIANT_TYPE_VARDICT, secret, NULL, NULL, &error); if (error != NULL) { g_warning ("Failed to parse secret: %s", error->message); g_error_free (error); return; } if (variant != NULL) { iter = g_variant_iter_new (variant); for (;;) { g_autofree char *key = NULL; g_autoptr (GVariant) value = NULL; if (!g_variant_iter_next (iter, "{sv}", &key, &value)) break; if (g_strcmp0 (key, "name") == 0) { g_clear_pointer (&self->name, g_free); self->name = g_variant_dup_string (value, NULL); } else if (g_strcmp0 (key, "token") == 0) { g_clear_pointer (&self->token, g_free); self->token = g_variant_dup_string (value, NULL); } else if (g_strcmp0 (key, "token-expires") == 0) { g_autoptr (GDateTime) dt = g_date_time_new_from_iso8601 (g_variant_get_string (value, NULL), NULL); if (dt != NULL) { g_clear_pointer (&self->token_expires, g_date_time_unref); self->token_expires = g_steal_pointer (&dt); } } else if (g_strcmp0 (key, "profile-icon-url") == 0) { g_clear_pointer (&self->profile_icon_url, g_free); self->profile_icon_url = g_variant_dup_string (value, NULL); g_clear_object (&self->paintable); if (self->profile_icon_url != NULL && self->profile_icon_url[0] != '\0') { g_autoptr (GFile) file = g_file_new_for_uri (self->profile_icon_url); self->paintable = bz_async_texture_new (file, NULL); } } } } } if (self->token_expires != NULL) { GDateTime *now = g_date_time_new_now_utc (); if (g_date_time_compare (now, self->token_expires) >= 0) { g_date_time_unref (now); bz_auth_state_clear (self); return; } g_date_time_unref (now); schedule_token_expiration (self); } } static void clear_secrets (BzAuthState *self) { gboolean result = FALSE; g_autoptr (GError) local_error = NULL; g_autoptr (GHashTable) attributes = NULL; attributes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); g_hash_table_replace (attributes, g_strdup ("service"), g_strdup ("flathub")); result = secret_password_clearv_sync ( get_secret_schema (), attributes, NULL, &local_error); if (!result) g_warning ("Failed to clear auth values from secrets: %s", local_error->message); } static void bz_auth_state_dispose (GObject *object) { BzAuthState *self = BZ_AUTH_STATE (object); g_clear_handle_id (&self->expiration_timeout_id, g_source_remove); g_clear_pointer (&self->name, g_free); g_clear_pointer (&self->token, g_free); g_clear_pointer (&self->profile_icon_url, g_free); g_clear_pointer (&self->token_expires, g_date_time_unref); g_clear_object (&self->paintable); G_OBJECT_CLASS (bz_auth_state_parent_class)->dispose (object); } static void bz_auth_state_finalize (GObject *object) { BzAuthState *self = BZ_AUTH_STATE (object); g_clear_pointer (&self->name, g_free); g_clear_pointer (&self->token, g_free); g_clear_pointer (&self->profile_icon_url, g_free); g_clear_pointer (&self->token_expires, g_date_time_unref); G_OBJECT_CLASS (bz_auth_state_parent_class)->finalize (object); } static void bz_auth_state_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzAuthState *self = BZ_AUTH_STATE (object); switch (prop_id) { case PROP_NAME: g_value_set_string (value, self->name); break; case PROP_TOKEN: g_value_set_string (value, self->token); break; case PROP_PROFILE_ICON_URL: g_value_set_string (value, self->profile_icon_url); break; case PROP_AUTHENTICATED: g_value_set_boolean (value, bz_auth_state_is_authenticated (self)); break; case PROP_PAINTABLE: g_value_set_object (value, bz_auth_state_get_paintable (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_auth_state_class_init (BzAuthStateClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_auth_state_dispose; object_class->finalize = bz_auth_state_finalize; object_class->get_property = bz_auth_state_get_property; properties[PROP_NAME] = g_param_spec_string ( "name", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); properties[PROP_TOKEN] = g_param_spec_string ( "token", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); properties[PROP_PROFILE_ICON_URL] = g_param_spec_string ( "profile-icon-url", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); properties[PROP_AUTHENTICATED] = g_param_spec_boolean ( "authenticated", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); properties[PROP_PAINTABLE] = g_param_spec_object ( "paintable", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, N_PROPS, properties); } static void bz_auth_state_init (BzAuthState *self) { self->loading = TRUE; load_from_secrets (self); self->loading = FALSE; } BzAuthState * bz_auth_state_new (void) { return g_object_new (BZ_TYPE_AUTH_STATE, NULL); } const char * bz_auth_state_get_name (BzAuthState *self) { g_return_val_if_fail (BZ_IS_AUTH_STATE (self), NULL); return self->name; } const char * bz_auth_state_get_token (BzAuthState *self) { g_return_val_if_fail (BZ_IS_AUTH_STATE (self), NULL); return self->token; } const char * bz_auth_state_get_profile_icon_url (BzAuthState *self) { g_return_val_if_fail (BZ_IS_AUTH_STATE (self), NULL); return self->profile_icon_url; } gboolean bz_auth_state_is_authenticated (BzAuthState *self) { g_return_val_if_fail (BZ_IS_AUTH_STATE (self), FALSE); return self->token != NULL && self->token[0] != '\0'; } GdkPaintable * bz_auth_state_get_paintable (BzAuthState *self) { g_return_val_if_fail (BZ_IS_AUTH_STATE (self), NULL); return (GdkPaintable *) self->paintable; } void bz_auth_state_set_authenticated (BzAuthState *self, const char *name, const char *token, GDateTime *token_expires, const char *profile_icon_url) { gboolean was_authenticated = FALSE; gboolean name_changed = FALSE; gboolean token_changed = FALSE; gboolean icon_changed = FALSE; g_return_if_fail (BZ_IS_AUTH_STATE (self)); was_authenticated = bz_auth_state_is_authenticated (self); if (g_strcmp0 (self->name, name) != 0) { g_clear_pointer (&self->name, g_free); self->name = g_strdup (name); name_changed = TRUE; } if (g_strcmp0 (self->token, token) != 0) { g_clear_pointer (&self->token, g_free); self->token = g_strdup (token); token_changed = TRUE; } g_clear_pointer (&self->token_expires, g_date_time_unref); if (token_expires != NULL) self->token_expires = g_date_time_ref (token_expires); if (g_strcmp0 (self->profile_icon_url, profile_icon_url) != 0) { g_clear_pointer (&self->profile_icon_url, g_free); self->profile_icon_url = g_strdup (profile_icon_url); icon_changed = TRUE; g_clear_object (&self->paintable); if (profile_icon_url != NULL && profile_icon_url[0] != '\0') { g_autoptr (GFile) file = g_file_new_for_uri (profile_icon_url); self->paintable = bz_async_texture_new (file, NULL); } g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_PAINTABLE]); } if (name_changed) g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_NAME]); if (token_changed) g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TOKEN]); if (icon_changed) g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_PROFILE_ICON_URL]); if (!!was_authenticated != !!bz_auth_state_is_authenticated (self)) g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_AUTHENTICATED]); schedule_token_expiration (self); save_to_secrets (self); } void bz_auth_state_clear (BzAuthState *self) { g_return_if_fail (BZ_IS_AUTH_STATE (self)); g_clear_handle_id (&self->expiration_timeout_id, g_source_remove); clear_secrets (self); bz_auth_state_set_authenticated (self, NULL, NULL, NULL, NULL); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-auth-state.h�������������������������������������������������������0000664�0000000�0000000�00000003206�15240005042�0020767�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-auth-state.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gdk/gdk.h> #include <glib-object.h> G_BEGIN_DECLS #define BZ_TYPE_AUTH_STATE (bz_auth_state_get_type ()) G_DECLARE_FINAL_TYPE (BzAuthState, bz_auth_state, BZ, AUTH_STATE, GObject) BzAuthState *bz_auth_state_new (void); const char * bz_auth_state_get_name (BzAuthState *self); const char * bz_auth_state_get_token (BzAuthState *self); const char * bz_auth_state_get_profile_icon_url (BzAuthState *self); gboolean bz_auth_state_is_authenticated (BzAuthState *self); GdkPaintable * bz_auth_state_get_paintable (BzAuthState *self); void bz_auth_state_set_authenticated (BzAuthState *self, const char *name, const char *token, GDateTime *token_expires, const char *profile_icon_url); void bz_auth_state_clear (BzAuthState *self); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-backend-notification.txt�������������������������������������������0000664�0000000�0000000�00000001337�15240005042�0023356�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=backend_notification parent-prefix=g parent-name=object author=AUTOGEN enum=bz backend_notification_kind error tell_incoming replace_entry invalidate_remotes remote_sync_start remote_sync_finish install_done update_done remove_done external_change present_id include="bz-entry.h" property=kind BzBackendNotificationKind BZ_TYPE_BACKEND_NOTIFICATION_KIND enum property=error char G_TYPE_STRING string property=n_incoming int G_TYPE_INT int property=entry BzEntry BZ_TYPE_ENTRY object property=version char G_TYPE_STRING string property=remote_name char G_TYPE_STRING string property=generic_id char G_TYPE_STRING string property=unique_id char G_TYPE_STRING string property=was_rebased gboolean G_TYPE_BOOLEAN boolean �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-backend-transaction-op-payload.txt���������������������������������0000664�0000000�0000000�00000000464�15240005042�0025260�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=backend_transaction_op_payload parent-prefix=g parent-name=object author=AUTOGEN include="bz-entry.h" property=name char G_TYPE_STRING string property=entry BzEntry BZ_TYPE_ENTRY object property=download_size guint64 G_TYPE_UINT64 uint64 property=installed_size guint64 G_TYPE_UINT64 uint64 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-backend-transaction-op-progress-payload.txt������������������������0000664�0000000�0000000�00000001035�15240005042�0027115�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=backend_transaction_op_progress_payload parent-prefix=g parent-name=object author=AUTOGEN include="bz-backend-transaction-op-payload.h" property=op BzBackendTransactionOpPayload BZ_TYPE_BACKEND_TRANSACTION_OP_PAYLOAD object property=status char G_TYPE_STRING string property=is_estimating gboolean G_TYPE_BOOLEAN boolean property=progress double G_TYPE_DOUBLE double property=total_progress double G_TYPE_DOUBLE double property=bytes_transferred guint64 G_TYPE_UINT64 uint64 property=start_time guint64 G_TYPE_UINT64 uint64 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-backend.c����������������������������������������������������������0000664�0000000�0000000�00000022621�15240005042�0020274�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-backend.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-backend.h" #include "bz-transaction.h" G_DEFINE_INTERFACE (BzBackend, bz_backend, G_TYPE_OBJECT) static DexChannel * bz_backend_real_create_notification_channel (BzBackend *self) { return NULL; } static DexFuture * bz_backend_real_load_local_package (BzBackend *self, GFile *file, GCancellable *cancellable) { return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unimplemented"); } static DexFuture * bz_backend_real_retrieve_remote_entries (BzBackend *self, GCancellable *cancellable) { return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unimplemented"); } static DexFuture * bz_backend_real_retrieve_install_ids (BzBackend *self, GCancellable *cancellable) { return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unimplemented"); } static DexFuture * bz_backend_real_retrieve_update_ids (BzBackend *self, GCancellable *cancellable) { return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unimplemented"); } static DexFuture * bz_backend_real_list_repositories (BzBackend *self, GCancellable *cancellable) { return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unimplemented"); } static DexFuture * bz_backend_real_schedule_transaction (BzBackend *self, BzEntry **installs, guint n_installs, BzEntry **updates, guint n_updates, BzEntry **removals, guint n_removals, DexChannel *channel, GCancellable *cancellable) { return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Unimplemented"); } static gboolean bz_backend_real_cancel_task_for_entry (BzBackend *self, BzEntry *entry) { return FALSE; } static void bz_backend_default_init (BzBackendInterface *iface) { iface->create_notification_channel = bz_backend_real_create_notification_channel; iface->load_local_package = bz_backend_real_load_local_package; iface->retrieve_remote_entries = bz_backend_real_retrieve_remote_entries; iface->retrieve_install_ids = bz_backend_real_retrieve_install_ids; iface->retrieve_update_ids = bz_backend_real_retrieve_update_ids; iface->list_repositories = bz_backend_real_list_repositories; iface->schedule_transaction = bz_backend_real_schedule_transaction; iface->cancel_task_for_entry = bz_backend_real_cancel_task_for_entry; } DexChannel * bz_backend_create_notification_channel (BzBackend *self) { g_return_val_if_fail (BZ_IS_BACKEND (self), NULL); return BZ_BACKEND_GET_IFACE (self)->create_notification_channel (self); } DexFuture * bz_backend_load_local_package (BzBackend *self, GFile *file, GCancellable *cancellable) { dex_return_error_if_fail (BZ_IS_BACKEND (self)); dex_return_error_if_fail (G_IS_FILE (file)); dex_return_error_if_fail (cancellable == NULL || G_IS_CANCELLABLE (self)); return BZ_BACKEND_GET_IFACE (self)->load_local_package (self, file, cancellable); } DexFuture * bz_backend_retrieve_remote_entries (BzBackend *self, GCancellable *cancellable) { dex_return_error_if_fail (BZ_IS_BACKEND (self)); dex_return_error_if_fail (cancellable == NULL || G_IS_CANCELLABLE (self)); return BZ_BACKEND_GET_IFACE (self)->retrieve_remote_entries (self, cancellable); } DexFuture * bz_backend_retrieve_install_ids (BzBackend *self, GCancellable *cancellable) { dex_return_error_if_fail (BZ_IS_BACKEND (self)); return BZ_BACKEND_GET_IFACE (self)->retrieve_install_ids (self, cancellable); } DexFuture * bz_backend_retrieve_update_ids (BzBackend *self, GCancellable *cancellable) { dex_return_error_if_fail (BZ_IS_BACKEND (self)); return BZ_BACKEND_GET_IFACE (self)->retrieve_update_ids (self, cancellable); } DexFuture * bz_backend_list_repositories (BzBackend *self, GCancellable *cancellable) { dex_return_error_if_fail (BZ_IS_BACKEND (self)); dex_return_error_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); return BZ_BACKEND_GET_IFACE (self)->list_repositories (self, cancellable); } DexFuture * bz_backend_schedule_transaction (BzBackend *self, BzEntry **installs, guint n_installs, BzEntry **updates, guint n_updates, BzEntry **removals, guint n_removals, DexChannel *channel, GCancellable *cancellable) { dex_return_error_if_fail (BZ_IS_BACKEND (self)); dex_return_error_if_fail ((installs != NULL && n_installs > 0) || (updates != NULL && n_updates > 0) || (removals != NULL && n_removals)); if (installs != NULL) { for (guint i = 0; i < n_installs; i++) dex_return_error_if_fail (BZ_IS_ENTRY (installs[i])); } if (updates != NULL) { for (guint i = 0; i < n_updates; i++) dex_return_error_if_fail (BZ_IS_ENTRY (updates[i])); } if (removals != NULL) { for (guint i = 0; i < n_removals; i++) dex_return_error_if_fail (BZ_IS_ENTRY (removals[i])); } return BZ_BACKEND_GET_IFACE (self)->schedule_transaction ( self, installs, n_installs, updates, n_updates, removals, n_removals, channel, cancellable); } DexFuture * bz_backend_merge_and_schedule_transactions (BzBackend *self, GListModel *transactions, DexChannel *channel, GCancellable *cancellable) { guint n_items = 0; g_autoptr (GPtrArray) installs_pa = NULL; g_autoptr (GPtrArray) updates_pa = NULL; g_autoptr (GPtrArray) removals_pa = NULL; dex_return_error_if_fail (G_IS_LIST_MODEL (transactions)); n_items = g_list_model_get_n_items (transactions); dex_return_error_if_fail (n_items > 0); installs_pa = g_ptr_array_new_with_free_func (g_object_unref); updates_pa = g_ptr_array_new_with_free_func (g_object_unref); removals_pa = g_ptr_array_new_with_free_func (g_object_unref); for (guint i = 0; i < n_items; i++) { g_autoptr (BzTransaction) transaction = NULL; GListModel *installs = NULL; GListModel *updates = NULL; GListModel *removals = NULL; guint n_installs = 0; guint n_updates = 0; guint n_removals = 0; transaction = g_list_model_get_item (transactions, i); installs = bz_transaction_get_installs (transaction); updates = bz_transaction_get_updates (transaction); removals = bz_transaction_get_removals (transaction); if (installs != NULL) n_installs = g_list_model_get_n_items (installs); if (updates != NULL) n_updates = g_list_model_get_n_items (updates); if (removals != NULL) n_removals = g_list_model_get_n_items (removals); for (guint j = 0; j < n_installs; j++) g_ptr_array_add (installs_pa, g_list_model_get_item (installs, j)); for (guint j = 0; j < n_updates; j++) g_ptr_array_add (updates_pa, g_list_model_get_item (updates, j)); for (guint j = 0; j < n_removals; j++) g_ptr_array_add (removals_pa, g_list_model_get_item (removals, j)); } return bz_backend_schedule_transaction ( self, (BzEntry **) installs_pa->pdata, installs_pa->len, (BzEntry **) updates_pa->pdata, updates_pa->len, (BzEntry **) removals_pa->pdata, removals_pa->len, channel, cancellable); } gboolean bz_backend_cancel_task_for_entry (BzBackend *self, BzEntry *entry) { g_return_val_if_fail (BZ_IS_BACKEND (self), FALSE); g_return_val_if_fail (BZ_IS_ENTRY (entry), FALSE); return BZ_BACKEND_GET_IFACE (self)->cancel_task_for_entry (self, entry); } ���������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-backend.h����������������������������������������������������������0000664�0000000�0000000�00000010376�15240005042�0020305�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-backend.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> #include "bz-entry.h" G_BEGIN_DECLS #define BZ_TYPE_BACKEND (bz_backend_get_type ()) G_DECLARE_INTERFACE (BzBackend, bz_backend, BZ, BACKEND, GObject) struct _BzBackendInterface { GTypeInterface parent_iface; DexChannel *(*create_notification_channel) (BzBackend *self); /* DexFuture* -> char*|BzEntry* */ DexFuture *(*load_local_package) (BzBackend *self, GFile *file, GCancellable *cancellable); /* DexFuture* -> gboolean */ DexFuture *(*retrieve_remote_entries) (BzBackend *self, GCancellable *cancellable); /* DexFuture* -> GHashTable* */ DexFuture *(*retrieve_install_ids) (BzBackend *self, GCancellable *cancellable); /* DexFuture* -> GPtrArray* -> char* */ DexFuture *(*retrieve_update_ids) (BzBackend *self, GCancellable *cancellable); /* DexFuture* -> GListModel* (of BzRepository objects) */ DexFuture *(*list_repositories) (BzBackend *self, GCancellable *cancellable); /* DexFuture* -> gboolean */ DexFuture *(*schedule_transaction) (BzBackend *self, BzEntry **installs, guint n_installs, BzEntry **updates, guint n_updates, BzEntry **removals, guint n_removals, DexChannel *channel, GCancellable *cancellable); gboolean (*cancel_task_for_entry) (BzBackend *self, BzEntry *entry); }; DexChannel * bz_backend_create_notification_channel (BzBackend *self); DexFuture * bz_backend_load_local_package (BzBackend *self, GFile *file, GCancellable *cancellable); DexFuture * bz_backend_retrieve_remote_entries (BzBackend *self, GCancellable *cancellable); DexFuture * bz_backend_retrieve_install_ids (BzBackend *self, GCancellable *cancellable); DexFuture * bz_backend_retrieve_update_ids (BzBackend *self, GCancellable *cancellable); DexFuture * bz_backend_list_repositories (BzBackend *self, GCancellable *cancellable); DexFuture * bz_backend_schedule_transaction (BzBackend *self, BzEntry **installs, guint n_installs, BzEntry **updates, guint n_updates, BzEntry **removals, guint n_removals, DexChannel *channel, GCancellable *cancellable); DexFuture * bz_backend_merge_and_schedule_transactions (BzBackend *self, GListModel *transactions, DexChannel *channel, GCancellable *cancellable); gboolean bz_backend_cancel_task_for_entry (BzBackend *self, BzEntry *entry); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-banner-view.blp����������������������������������������������������0000664�0000000�0000000�00000002051�15240005042�0021450�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzBannerView: Adw.Bin { hexpand: true; vexpand: false; margin-top: 20; child: Box box { hexpand: true; vexpand: false; halign: fill; valign: fill; height-request: bind try {$get_height(template.banner as <$BzCuratedBanner>.height), 250}; overflow: hidden; css-name: "banner"; styles ["card"] Picture picture { css-name: "image"; hexpand: true; alternative-text: bind template.banner as <$BzCuratedBanner>.image as <$BzCuratedImageInfo>.alt; visible: bind $invert_boolean($is_null(template.banner as <$BzCuratedBanner>.image) as <bool>) as <bool>; paintable: bind $get_image(template.banner as <$BzCuratedBanner>.image) as <$GdkPaintable>; can-shrink: bind template.banner as <$BzCuratedBanner>.image as <$BzCuratedImageInfo>.can-shrink; content-fit: bind template.banner as <$BzCuratedBanner>.image as <$BzCuratedImageInfo>.fit; halign: bind template.banner as <$BzCuratedBanner>.image as <$BzCuratedImageInfo>.halign; } }; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-banner-view.c������������������������������������������������������0000664�0000000�0000000�00000020667�15240005042�0021132�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-banner-view.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-banner-view.h" #include "bz-async-texture.h" #include "bz-curated-image-info.h" struct _BzBannerView { AdwBin parent_instance; BzCuratedBanner *banner; AdwStyleManager *style_manager; GtkCssProvider *css_provider; char *instance_class; /* Template widgets */ GtkBox *box; GtkPicture *picture; }; G_DEFINE_FINAL_TYPE (BzBannerView, bz_banner_view, ADW_TYPE_BIN) enum { PROP_0, PROP_BANNER, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void dark_changed (BzBannerView *self, GParamSpec *pspec, AdwStyleManager *mgr); static void refresh_background_color (BzBannerView *self, AdwStyleManager *mgr); static BzAsyncTexture * choose_image (const char *default_variant_uri, const char *light_variant_uri, const char *dark_variant_uri); static void bz_banner_view_dispose (GObject *object) { BzBannerView *self = BZ_BANNER_VIEW (object); g_signal_handlers_disconnect_by_func ( self->style_manager, dark_changed, self); if (self->css_provider != NULL) { gtk_style_context_remove_provider_for_display ( gtk_widget_get_display (GTK_WIDGET (self)), GTK_STYLE_PROVIDER (self->css_provider)); g_clear_object (&self->css_provider); } g_clear_pointer (&self->instance_class, g_free); g_clear_object (&self->banner); g_clear_object (&self->style_manager); G_OBJECT_CLASS (bz_banner_view_parent_class)->dispose (object); } static void bz_banner_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzBannerView *self = BZ_BANNER_VIEW (object); switch (prop_id) { case PROP_BANNER: g_value_set_object (value, bz_banner_view_get_banner (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_banner_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzBannerView *self = BZ_BANNER_VIEW (object); switch (prop_id) { case PROP_BANNER: bz_banner_view_set_banner (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static BzAsyncTexture * get_image (gpointer object, BzCuratedImageInfo *info) { const char *image = NULL; const char *light_image = NULL; const char *dark_image = NULL; if (!BZ_IS_CURATED_IMAGE_INFO (info)) return NULL; image = bz_curated_image_info_get_uri (info); light_image = bz_curated_image_info_get_light_uri (info); dark_image = bz_curated_image_info_get_dark_uri (info); return choose_image (image, light_image, dark_image); } static int get_height (gpointer object, int value) { if (value == 0) return 250; return CLAMP (value, 150, 400); } static void bz_banner_view_class_init (BzBannerViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_banner_view_dispose; object_class->get_property = bz_banner_view_get_property; object_class->set_property = bz_banner_view_set_property; props[PROP_BANNER] = g_param_spec_object ( "banner", NULL, NULL, BZ_TYPE_CURATED_BANNER, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_ASYNC_TEXTURE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-banner-view.ui"); gtk_widget_class_bind_template_child (widget_class, BzBannerView, picture); gtk_widget_class_bind_template_child (widget_class, BzBannerView, box); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, get_image); gtk_widget_class_bind_template_callback (widget_class, get_height); } static void dark_changed (BzBannerView *self, GParamSpec *pspec, AdwStyleManager *mgr) { refresh_background_color (self, mgr); if (self->banner != NULL) g_object_notify (G_OBJECT (self->banner), "image"); } static void bz_banner_view_init (BzBannerView *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->style_manager = g_object_ref ( adw_style_manager_get_default ()); g_signal_connect_swapped ( self->style_manager, "notify::dark", G_CALLBACK (dark_changed), self); } GtkWidget * bz_banner_view_new (BzCuratedBanner *banner) { return g_object_new ( BZ_TYPE_BANNER_VIEW, "banner", banner, NULL); } void bz_banner_view_set_banner (BzBannerView *self, BzCuratedBanner *banner) { g_return_if_fail (BZ_IS_BANNER_VIEW (self)); g_return_if_fail (banner == NULL || BZ_IS_CURATED_BANNER (banner)); g_clear_object (&self->banner); if (banner != NULL) { self->banner = g_object_ref (banner); refresh_background_color (self, NULL); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_BANNER]); } BzCuratedBanner * bz_banner_view_get_banner (BzBannerView *self) { g_return_val_if_fail (BZ_IS_BANNER_VIEW (self), NULL); return self->banner; } static void refresh_background_color (BzBannerView *self, AdwStyleManager *mgr) { g_autofree char *css = NULL; g_autofree char *light_color = NULL; g_autofree char *dark_color = NULL; const char *color = NULL; if (self->banner == NULL) return; if (mgr == NULL) mgr = adw_style_manager_get_default (); g_object_get ( self->banner, "light-color", &light_color, "dark-color", &dark_color, NULL); color = adw_style_manager_get_dark (mgr) ? dark_color : light_color; if (color == NULL) return; if (self->instance_class == NULL) { self->instance_class = g_strdup_printf ( "bz-banner-%p", (void *) self); gtk_widget_add_css_class (GTK_WIDGET (self->box), "card"); gtk_widget_add_css_class (GTK_WIDGET (self->box), self->instance_class); } css = g_strdup_printf (".card.%s { background: %s; }", self->instance_class, color); if (self->css_provider == NULL) { self->css_provider = gtk_css_provider_new (); gtk_style_context_add_provider_for_display ( gtk_widget_get_display (GTK_WIDGET (self->box)), GTK_STYLE_PROVIDER (self->css_provider), GTK_STYLE_PROVIDER_PRIORITY_USER); } gtk_css_provider_load_from_string (self->css_provider, css); } static BzAsyncTexture * choose_image (const char *default_variant_uri, const char *light_variant_uri, const char *dark_variant_uri) { gboolean is_dark = FALSE; const char *uri = NULL; g_autoptr (GFile) source = NULL; is_dark = adw_style_manager_get_dark (adw_style_manager_get_default ()); if (is_dark) uri = dark_variant_uri; else uri = light_variant_uri; if (uri == NULL) uri = default_variant_uri; if (uri == NULL) return NULL; source = g_file_new_for_uri (uri); return bz_async_texture_new_lazy (source, NULL); } �������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-banner-view.h������������������������������������������������������0000664�0000000�0000000�00000002312�15240005042�0021122�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-banner-view.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-curated-banner.h" G_BEGIN_DECLS #define BZ_TYPE_BANNER_VIEW (bz_banner_view_get_type ()) G_DECLARE_FINAL_TYPE (BzBannerView, bz_banner_view, BZ, BANNER_VIEW, AdwBin) GtkWidget * bz_banner_view_new (BzCuratedBanner *banner); void bz_banner_view_set_banner (BzBannerView *self, BzCuratedBanner *banner); BzCuratedBanner * bz_banner_view_get_banner (BzBannerView *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-blocklist-condition-match-envvar.txt�������������������������������0000664�0000000�0000000�00000000263�15240005042�0025643�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=blocklist_condition_match_envvar parent-prefix=g parent-name=object author=AUTOGEN property=var char G_TYPE_STRING string property=regex char G_TYPE_STRING string ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-blocklist-condition-match-locale.txt�������������������������������0000664�0000000�0000000�00000000214�15240005042�0025575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=blocklist_condition_match_locale parent-prefix=g parent-name=object author=AUTOGEN property=regex char G_TYPE_STRING string ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-blocklist-condition.txt��������������������������������������������0000664�0000000�0000000�00000001060�15240005042�0023246�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=blocklist_condition parent-prefix=g parent-name=object author=AUTOGEN enum=bz blocklist_condition_post_process_kind identity invert include="bz-blocklist-condition-match-envvar.h" include="bz-blocklist-condition-match-locale.h" property=match_envvar BzBlocklistConditionMatchEnvvar BZ_TYPE_BLOCKLIST_CONDITION_MATCH_ENVVAR object property=match_locale BzBlocklistConditionMatchLocale BZ_TYPE_BLOCKLIST_CONDITION_MATCH_LOCALE object property=post_process BzBlocklistConditionPostProcessKind BZ_TYPE_BLOCKLIST_CONDITION_POST_PROCESS_KIND enum ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-blocklist.txt������������������������������������������������������0000664�0000000�0000000�00000000740�15240005042�0021266�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=blocklist parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-blocklist-condition.h" ensure=BZ_TYPE_BLOCKLIST_CONDITION property=priority int G_TYPE_INT int property=conditions GListModel G_TYPE_LIST_MODEL object property=allow GListModel G_TYPE_LIST_MODEL object property=allow_regex GListModel G_TYPE_LIST_MODEL object property=block GListModel G_TYPE_LIST_MODEL object property=block_regex GListModel G_TYPE_LIST_MODEL object ��������������������������������bazaar-org-bazaar-48f93f4/src/bz-bulk-install-dialog-result.txt�������������������������������������0000664�0000000�0000000�00000000333�15240005042�0024450�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=bulk_install_dialog_result parent-prefix=g parent-name=object author=AUTOGEN include="bz-entry.h" property=entries GListModel G_TYPE_LIST_MODEL object property=confirmed gboolean G_TYPE_BOOLEAN boolean �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-bundle-install-dialog.blp������������������������������������������0000664�0000000�0000000�00000043126�15240005042�0023415�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzBundleInstallDialog: Adw.Dialog { content-width: 500; content-height: 520; width-request: 360; height-request: 294; Adw.Breakpoint { condition ("max-width: 400px") setters { install_label.visible: false; install_icon.visible: true; } } child: Adw.NavigationView nav_view { Adw.NavigationPage { tag: "main"; title: _("Bundle Installation"); child: Adw.ToolbarView { [top] Adw.HeaderBar { title-widget: Label { label: _("Bundle Installation"); }; show-title: false; } content: Stack main_stack { StackPage { name: "carousel"; child: Adw.Carousel carousel { interactive: false; spacing: 64; ScrolledWindow { hscrollbar-policy: never; hexpand: true; valign: fill; Box { orientation: vertical; spacing: 16; valign: start; halign: fill; hexpand: true; margin-top: 24; margin-bottom: 24; margin-start: 24; margin-end: 24; Box { orientation: bind $get_header_orientation(template.runtime-repo) as <Gtk.Orientation>; spacing: 16; halign: fill; valign: start; Image icon { paintable: bind template.entry as <$BzEntry>.icon-paintable; visible: bind $invert_boolean( $is_null(template.entry as <$BzEntry>.icon-paintable) as <bool> ) as <bool>; use-fallback: true; pixel-size: 96; halign: bind $get_header_halign(template.runtime-repo) as <Gtk.Align>; valign: center; styles [ "icon-dropshadow", ] } Image { icon-name: "application-x-executable"; pixel-size: 96; visible: bind $invert_boolean(icon.visible) as <bool>; halign: bind $get_header_halign(template.runtime-repo) as <Gtk.Align>; valign: center; styles [ "icon-dropshadow", ] } Box { orientation: vertical; spacing: 2; valign: center; hexpand: true; Label { label: bind template.entry as <$BzEntry>.title; selectable: true; wrap: true; wrap-mode: word_char; halign: bind $get_header_halign(template.runtime-repo) as <Gtk.Align>; xalign: 0; styles [ "title-3", ] } Label { label: bind template.entry as <$BzEntry>.developer; selectable: true; wrap: true; wrap-mode: word_char; halign: bind $get_header_halign(template.runtime-repo) as <Gtk.Align>; xalign: 0; visible: bind $not($is_empty_string(template.entry as <$BzEntry>.developer) as <bool>) as <bool>; styles [ "dim-label", ] } Label { label: bind $get_version(template.entry as <$BzEntry>.version-history); selectable: true; visible: bind $not( $is_empty_string($get_version(template.entry as <$BzEntry>.version-history) as <string>) as <bool> ) as <bool>; halign: bind $get_header_halign(template.runtime-repo) as <Gtk.Align>; xalign: 0; styles [ "dim-label", "caption", ] } } Button { styles [ "suggested-action", "pill", ] valign: center; halign: center; visible: bind $is_null(template.runtime-repo) as <bool>; label: C_("Install Controls", "Install"); clicked => $install_cb(template); } Box { visible: bind $not($is_null(template.runtime-repo) as <bool>) as <bool>; Button install_label { styles [ "suggested-action", "pill", ] valign: center; halign: bind $get_header_halign(template.runtime-repo) as <Gtk.Align>; label: C_("Install Controls", "Install"); clicked => $install_cb(template); } Button install_icon { styles [ "suggested-action", "circular", "circular-download-pill", ] valign: center; visible: false; halign: bind $get_header_halign(template.runtime-repo) as <Gtk.Align>; icon-name: "folder-download-symbolic"; clicked => $install_cb(template); } } } Adw.PreferencesGroup { margin-top: 12; Adw.ActionRow { [prefix] Image { icon-name: "drive-harddisk-symbolic"; valign: center; styles [ "circular-lozenge", "grey", ] } title: bind $get_disk_title(template.entry as <$BzEntry>.installed-size); subtitle: _("Additional dependencies may take extra space"); } Adw.ActionRow { [prefix] Image safety_icon { icon-name: bind $get_safety_icon_name(template.entry as <$BzEntry>); valign: center; styles [ "circular-lozenge", ] } [suffix] Image { icon-name: "go-next-symbolic"; } title: bind $get_safety_rating_label(template.entry); subtitle: bind $get_safety_subtitle(template.entry); subtitle-lines: 1; activatable: true; activated => $permission_cb(); } } Box { orientation: vertical; spacing: 4; visible: bind $not($is_null(template.runtime-repo) as <bool>) as <bool>; Label { label: _( "Installing this app may require adding a new software source. Other apps from this source will show up in Bazaar.\n\nOnly add this source if you're sure you trust it." ); wrap: true; wrap-mode: word_char; selectable: true; halign: start; margin-bottom: 6; styles [ "body", ] } Adw.PreferencesGroup { Adw.ActionRow { activatable: bind $not( $is_null(template.runtime-repo as <$BzFlatpakRepo>.homepage) as <bool> ) as <bool>; activated => $repo_cb(); child: Box { margin-top: 8; margin-bottom: 8; margin-start: 8; margin-end: 16; spacing: 8; Image bundle_image { pixel-size: 48; } Box { orientation: vertical; spacing: 4; hexpand: true; Label { label: bind template.runtime-repo as <$BzFlatpakRepo>.title; halign: start; ellipsize: end; styles [ "heading", ] } Label { label: bind template.runtime-repo as <$BzFlatpakRepo>.description; wrap: true; halign: start; wrap-mode: word_char; lines: 2; ellipsize: end; } Label { halign: start; label: bind $format_url(template.runtime-repo as <$BzFlatpakRepo>.url); ellipsize: end; styles [ "accent", "caption", ] } } Image { icon-name: "external-link-symbolic"; margin-start: 8; visible: bind $not( $is_null(template.runtime-repo as <$BzFlatpakRepo>.homepage) as <bool> ) as <bool>; } }; } } } } } Box page_progress { orientation: vertical; spacing: 12; valign: center; halign: fill; margin-top: 24; margin-bottom: 24; margin-start: 48; margin-end: 48; Image loading_icon { paintable: bind template.entry as <$BzEntry>.icon-paintable; visible: bind $invert_boolean( $is_null(template.entry as <$BzEntry>.icon-paintable) as <bool> ) as <bool>; pixel-size: 128; margin-bottom: 12; styles [ "icon-dropshadow", ] } Image { icon-name: "application-x-executable"; pixel-size: 128; visible: bind $invert_boolean(loading_icon.visible) as <bool>; margin-bottom: 12; styles [ "icon-dropshadow", ] } Label { label: bind template.entry as <$BzEntry>.title; selectable: true; wrap: true; wrap-mode: word_char; halign: center; styles [ "title-3", ] } ProgressBar progress_bar { margin-top: 16; pulse-step: 0.05; width-request: 250; } } ScrolledWindow page_finish { Box { orientation: vertical; spacing: 8; valign: center; halign: fill; margin-top: 24; margin-bottom: 24; margin-start: 24; margin-end: 24; Image end_icon { paintable: bind template.entry as <$BzEntry>.icon-paintable; visible: bind $invert_boolean( $is_null(template.entry as <$BzEntry>.icon-paintable) as <bool> ) as <bool>; pixel-size: 128; margin-bottom: 12; styles [ "icon-dropshadow", ] } Image { icon-name: "application-x-executable"; pixel-size: 128; visible: bind $invert_boolean(end_icon.visible) as <bool>; margin-bottom: 12; styles [ "icon-dropshadow", ] } Label { label: bind template.entry as <$BzEntry>.title; selectable: true; wrap: true; wrap-mode: word_char; halign: center; styles [ "title-3", ] } Label { label: _("Successfully Installed!"); selectable: true; halign: center; margin-bottom: 16; margin-top: 8; styles [ "dim-label", ] } Box { width-request: 40; orientation: vertical; spacing: 8; margin-top: 8; halign: center; Button open_btn { styles [ "suggested-action", "pill", ] halign: fill; // TRANSLATORS: Button to launch an installed app label: _("Open"); clicked => $run_cb(template); } Button show_in_store_btn { styles [ "pill", ] halign: fill; label: _("Show App Details"); clicked => $show_cb(template); } } } } }; } StackPage { name: "installed"; child: Box { orientation: vertical; spacing: 8; valign: center; halign: fill; margin-top: 24; margin-bottom: 24; margin-start: 24; margin-end: 24; Image installed_icon { paintable: bind template.entry as <$BzEntry>.icon-paintable; visible: bind $invert_boolean( $is_null(template.entry as <$BzEntry>.icon-paintable) as <bool> ) as <bool>; pixel-size: 128; margin-bottom: 12; } Image { icon-name: "application-x-executable"; pixel-size: 128; visible: bind $invert_boolean(installed_icon.visible) as <bool>; margin-bottom: 12; } Label { label: bind template.entry as <$BzEntry>.title; selectable: true; wrap: true; wrap-mode: word_char; halign: center; styles [ "title-3", ] } Label { label: _("Already Installed"); selectable: true; styles [ "dim-label", "caption", ] halign: center; } Box { orientation: vertical; spacing: 8; margin-top: 24; halign: center; Button { styles [ "suggested-action", "pill", ] halign: fill; // TRANSLATORS: Button to launch an installed app label: _("Open"); clicked => $run_cb(template); } Button { styles [ "pill", ] halign: fill; label: _("Show App Details"); clicked => $show_cb(template); } } }; } StackPage { name: "error"; child: Adw.StatusPage error_status { icon-name: "sad-computer-symbolic"; title: _("Installation Failed"); }; } }; }; } }; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-bundle-install-dialog.c��������������������������������������������0000664�0000000�0000000�00000041747�15240005042�0023071�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-bundle-install-dialog.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-app-permissions.h" #include "bz-app-size-dialog.h" #include "bz-application-map-factory.h" #include "bz-application.h" #include "bz-async-texture.h" #include "bz-bundle-install-dialog.h" #include "context-tile-callbacks.h" #include "env.h" #include "bz-flatpak-repo.h" #include "bz-release.h" #include "safety-calculator.h" #include "bz-safety-dialog.h" #include "bz-state-info.h" #include "template-callbacks.h" #include "util.h" struct _BzBundleInstallDialog { AdwDialog parent_instance; BzStateInfo *state; BzEntry *entry; BzFlatpakRepo *runtime_repo; AdwNavigationView *nav_view; GtkStack *main_stack; AdwCarousel *carousel; GtkWidget *page_progress; GtkWidget *page_finish; GtkProgressBar *progress_bar; AdwStatusPage *error_status; GtkImage *safety_icon; GtkImage *bundle_image; guint pulse_source_id; }; G_DEFINE_FINAL_TYPE (BzBundleInstallDialog, bz_bundle_install_dialog, ADW_TYPE_DIALOG); enum { PROP_0, PROP_STATE, PROP_ENTRY, PROP_RUNTIME_REPO, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * install_fiber (GWeakRef *wr); static void bz_bundle_install_dialog_dispose (GObject *object) { BzBundleInstallDialog *self = BZ_BUNDLE_INSTALL_DIALOG (object); g_clear_handle_id (&self->pulse_source_id, g_source_remove); g_clear_pointer (&self->state, g_object_unref); g_clear_pointer (&self->entry, g_object_unref); g_clear_pointer (&self->runtime_repo, g_object_unref); G_OBJECT_CLASS (bz_bundle_install_dialog_parent_class)->dispose (object); } static void bz_bundle_install_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzBundleInstallDialog *self = BZ_BUNDLE_INSTALL_DIALOG (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, bz_bundle_install_dialog_get_state (self)); break; case PROP_ENTRY: g_value_set_object (value, bz_bundle_install_dialog_get_entry (self)); break; case PROP_RUNTIME_REPO: g_value_set_object (value, bz_bundle_install_dialog_get_runtime_repo (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_bundle_install_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzBundleInstallDialog *self = BZ_BUNDLE_INSTALL_DIALOG (object); switch (prop_id) { case PROP_STATE: bz_bundle_install_dialog_set_state (self, g_value_get_object (value)); break; case PROP_ENTRY: bz_bundle_install_dialog_set_entry (self, g_value_get_object (value)); break; case PROP_RUNTIME_REPO: bz_bundle_install_dialog_set_runtime_repo (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean pulse_progress_bar (gpointer user_data) { BzBundleInstallDialog *self = BZ_BUNDLE_INSTALL_DIALOG (user_data); gtk_progress_bar_pulse (self->progress_bar); return G_SOURCE_CONTINUE; } static char * get_version (gpointer object, GListModel *version_history) { g_autoptr (BzRelease) release = NULL; if (version_history == NULL || g_list_model_get_n_items (version_history) == 0) return NULL; release = g_list_model_get_item (version_history, 0); return g_strdup (bz_release_get_version (release)); } static char * get_disk_title (gpointer object, guint64 installed_size) { g_autofree char *size_str = NULL; if (installed_size == 0) return g_strdup (_ ("Unknown install size")); size_str = g_format_size (installed_size); return g_strdup_printf (_ ("About %s to install"), size_str); } static char * get_safety_subtitle (gpointer object, BzEntry *entry) { g_autoptr (GListModel) model = NULL; g_autoptr (GString) result = NULL; guint n_items = 0; guint n_picked = 0; guint n_total = 0; if (entry == NULL) return g_strdup (_ ("N/A")); model = bz_safety_calculator_analyze_entry (entry); n_items = g_list_model_get_n_items (model); result = g_string_new (NULL); for (guint i = 0; i < n_items; i++) { g_autoptr (BzSafetyRow) row = g_list_model_get_item (model, i); BzImportance importance = BZ_IMPORTANCE_UNIMPORTANT; g_autofree char *title = NULL; g_object_get (row, "importance", &importance, "title", &title, NULL); if (importance <= BZ_IMPORTANCE_UNIMPORTANT || title == NULL) continue; n_total++; if (n_picked < 2) { if (n_picked > 0) g_string_append (result, ", "); g_string_append (result, title); n_picked++; } } if (n_picked == 0) return g_strdup (_ ("No special permissions")); if (n_total > 2) g_string_append (result, ", …"); return g_string_free (g_steal_pointer (&result), FALSE); } static char * get_safety_icon_name (gpointer object, BzEntry *entry) { BzImportance importance; if (entry == NULL) return g_strdup ("app-safety-unknown-symbolic"); importance = bz_safety_calculator_calculate_rating (entry); switch (importance) { case BZ_IMPORTANCE_UNIMPORTANT: case BZ_IMPORTANCE_NEUTRAL: case BZ_IMPORTANCE_INFORMATION: return g_strdup ("app-safety-ok-symbolic"); case BZ_IMPORTANCE_WARNING: return g_strdup ("permissions-warning-symbolic"); case BZ_IMPORTANCE_IMPORTANT: return g_strdup ("app-safety-unsafe-symbolic"); default: return g_strdup ("app-safety-unknown-symbolic"); } } static char * format_url (gpointer object, const char *url) { g_autoptr (GUri) uri = NULL; const char *host = NULL; if (url == NULL || (uri = g_uri_parse (url, G_URI_FLAGS_NONE, NULL)) == NULL || (host = g_uri_get_host (uri)) == NULL) return g_strdup (url); return g_strdup (host); } static GtkAlign get_header_halign (gpointer object, BzFlatpakRepo *runtime_repo) { return runtime_repo != NULL ? GTK_ALIGN_FILL : GTK_ALIGN_CENTER; } static GtkOrientation get_header_orientation (gpointer object, BzFlatpakRepo *runtime_repo) { return runtime_repo != NULL ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL; } static void install_cb (BzBundleInstallDialog *self, GtkButton *button) { if (self->entry == NULL || self->state == NULL) return; adw_carousel_scroll_to (self->carousel, self->page_progress, TRUE); self->pulse_source_id = g_timeout_add (80, pulse_progress_bar, self); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) install_fiber, bz_track_weak (self), bz_weak_release)); } static void run_cb (BzBundleInstallDialog *self, GtkButton *button) { const char *id = NULL; if (self->entry == NULL) return; id = bz_entry_get_id (self->entry); gtk_widget_activate_action (GTK_WIDGET (self), "window.launch-group", "s", id); } static void show_cb (BzBundleInstallDialog *self, GtkButton *button) { const char *id = NULL; if (self->entry == NULL) return; id = bz_entry_get_id (self->entry); adw_dialog_close (ADW_DIALOG (gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_DIALOG))); gtk_widget_activate_action (GTK_WIDGET (self), "window.show-group", "s", id); } static void permission_cb (AdwActionRow *row, BzBundleInstallDialog *self) { AdwNavigationPage *page = NULL; if (self->entry == NULL) return; page = bz_safety_dialog_page_new (self->entry); adw_navigation_view_push (self->nav_view, page); } static void repo_cb (AdwActionRow *row, BzBundleInstallDialog *self) { if (self->runtime_repo != NULL) gtk_uri_launcher_launch ( gtk_uri_launcher_new (bz_flatpak_repo_get_homepage (self->runtime_repo)), NULL, NULL, NULL, NULL); } static void bz_bundle_install_dialog_class_init (BzBundleInstallDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_bundle_install_dialog_set_property; object_class->get_property = bz_bundle_install_dialog_get_property; object_class->dispose = bz_bundle_install_dialog_dispose; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ENTRY] = g_param_spec_object ( "entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_RUNTIME_REPO] = g_param_spec_object ( "runtime-repo", NULL, NULL, BZ_TYPE_FLATPAK_REPO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-bundle-install-dialog.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); bz_widget_class_bind_all_context_tile_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, nav_view); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, main_stack); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, carousel); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, page_progress); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, page_finish); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, progress_bar); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, error_status); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, safety_icon); gtk_widget_class_bind_template_child (widget_class, BzBundleInstallDialog, bundle_image); gtk_widget_class_bind_template_callback (widget_class, install_cb); gtk_widget_class_bind_template_callback (widget_class, run_cb); gtk_widget_class_bind_template_callback (widget_class, show_cb); gtk_widget_class_bind_template_callback (widget_class, repo_cb); gtk_widget_class_bind_template_callback (widget_class, permission_cb); gtk_widget_class_bind_template_callback (widget_class, get_version); gtk_widget_class_bind_template_callback (widget_class, get_disk_title); gtk_widget_class_bind_template_callback (widget_class, get_safety_subtitle); gtk_widget_class_bind_template_callback (widget_class, get_safety_icon_name); gtk_widget_class_bind_template_callback (widget_class, format_url); gtk_widget_class_bind_template_callback (widget_class, get_header_halign); gtk_widget_class_bind_template_callback (widget_class, get_header_orientation); } static void bz_bundle_install_dialog_init (BzBundleInstallDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } static void bz_bundle_install_dialog_update_visible_page (BzBundleInstallDialog *self) { if (self->entry == NULL) return; if (bz_entry_is_installed (self->entry)) gtk_stack_set_visible_child_name (self->main_stack, "installed"); else gtk_stack_set_visible_child_name (self->main_stack, "carousel"); } BzBundleInstallDialog * bz_bundle_install_dialog_new (void) { return g_object_new (BZ_TYPE_BUNDLE_INSTALL_DIALOG, NULL); } BzStateInfo * bz_bundle_install_dialog_get_state (BzBundleInstallDialog *self) { g_return_val_if_fail (BZ_IS_BUNDLE_INSTALL_DIALOG (self), NULL); return self->state; } BzEntry * bz_bundle_install_dialog_get_entry (BzBundleInstallDialog *self) { g_return_val_if_fail (BZ_IS_BUNDLE_INSTALL_DIALOG (self), NULL); return self->entry; } BzFlatpakRepo * bz_bundle_install_dialog_get_runtime_repo (BzBundleInstallDialog *self) { g_return_val_if_fail (BZ_IS_BUNDLE_INSTALL_DIALOG (self), NULL); return self->runtime_repo; } void bz_bundle_install_dialog_set_state (BzBundleInstallDialog *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_BUNDLE_INSTALL_DIALOG (self)); g_return_if_fail (state == NULL || BZ_IS_STATE_INFO (state)); if (state == self->state) return; g_clear_pointer (&self->state, g_object_unref); if (state != NULL) self->state = g_object_ref (state); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); } void bz_bundle_install_dialog_set_entry (BzBundleInstallDialog *self, BzEntry *entry) { BzImportance importance = 0; const char *style = NULL; g_return_if_fail (BZ_IS_BUNDLE_INSTALL_DIALOG (self)); g_return_if_fail (entry == NULL || BZ_IS_ENTRY (entry)); if (entry == self->entry) return; g_clear_pointer (&self->entry, g_object_unref); if (entry != NULL) self->entry = g_object_ref (entry); bz_bundle_install_dialog_update_visible_page (self); if (self->entry != NULL) { importance = bz_safety_calculator_calculate_rating (self->entry); style = bz_safety_style_for_importance (importance); gtk_widget_add_css_class (GTK_WIDGET (self->safety_icon), style); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENTRY]); } void bz_bundle_install_dialog_set_runtime_repo (BzBundleInstallDialog *self, BzFlatpakRepo *runtime_repo) { g_return_if_fail (BZ_IS_BUNDLE_INSTALL_DIALOG (self)); g_return_if_fail (runtime_repo == NULL || BZ_IS_FLATPAK_REPO (runtime_repo)); if (runtime_repo == self->runtime_repo) return; g_set_object (&self->runtime_repo, runtime_repo); if (self->bundle_image != NULL) { const char *icon_url = NULL; icon_url = runtime_repo != NULL ? bz_flatpak_repo_get_icon (runtime_repo) : NULL; if (icon_url != NULL) { g_autoptr (BzAsyncTexture) async_tex = NULL; async_tex = bz_async_texture_new (g_file_new_for_uri (icon_url), NULL); gtk_image_set_from_paintable (self->bundle_image, GDK_PAINTABLE (async_tex)); } else gtk_image_set_from_icon_name (self->bundle_image, "application-x-executable"); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RUNTIME_REPO]); } static DexFuture * install_fiber (GWeakRef *wr) { g_autoptr (BzBundleInstallDialog) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (BzTransaction) transaction = NULL; g_autoptr (BzTransactionManager) ts_manager = NULL; gboolean success = FALSE; g_autofree char *error_message = NULL; bz_weak_get_or_return_reject (self, wr); if (self->entry == NULL || self->state == NULL) return dex_future_new_false (); transaction = bz_transaction_new_full ( &self->entry, 1, NULL, 0, NULL, 0); ts_manager = g_object_ref (bz_state_info_get_transaction_manager (self->state)); dex_await ( bz_transaction_manager_add ( ts_manager, transaction), &local_error); g_object_get (transaction, "success", &success, "error", &error_message, NULL); g_clear_handle_id (&self->pulse_source_id, g_source_remove); if (local_error != NULL || !success) { const char *description = local_error != NULL ? local_error->message : error_message; adw_status_page_set_description (self->error_status, description); gtk_stack_set_visible_child_name (self->main_stack, "error"); } else adw_carousel_scroll_to (self->carousel, self->page_finish, TRUE); return dex_future_new_true (); } /* End of bz-bundle-install-dialog.c */ �������������������������bazaar-org-bazaar-48f93f4/src/bz-bundle-install-dialog.h��������������������������������������������0000664�0000000�0000000�00000003547�15240005042�0023072�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-bundle-install-dialog.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-entry.h" #include "bz-flatpak-repo.h" #include "bz-state-info.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_BUNDLE_INSTALL_DIALOG (bz_bundle_install_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzBundleInstallDialog, bz_bundle_install_dialog, BZ, BUNDLE_INSTALL_DIALOG, AdwDialog) BzBundleInstallDialog * bz_bundle_install_dialog_new (void); BzStateInfo * bz_bundle_install_dialog_get_state (BzBundleInstallDialog *self); BzEntry * bz_bundle_install_dialog_get_entry (BzBundleInstallDialog *self); BzFlatpakRepo * bz_bundle_install_dialog_get_runtime_repo (BzBundleInstallDialog *self); void bz_bundle_install_dialog_set_state (BzBundleInstallDialog *self, BzStateInfo *state); void bz_bundle_install_dialog_set_entry (BzBundleInstallDialog *self, BzEntry *entry); void bz_bundle_install_dialog_set_runtime_repo (BzBundleInstallDialog *self, BzFlatpakRepo *runtime_repo); G_END_DECLS /* End of bz-bundle-install-dialog.h */ ���������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-category-flags.c���������������������������������������������������0000664�0000000�0000000�00000012356�15240005042�0021620�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-category-flags.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-category-flags.h" static const struct { const char *name; BzCategoryFlags flag; } name_flag_map[] = { { "audiovideo", BZ_CATEGORY_FLAGS_AUDIOVIDEO }, { "development", BZ_CATEGORY_FLAGS_DEVELOPMENT }, { "education", BZ_CATEGORY_FLAGS_EDUCATION }, { "game", BZ_CATEGORY_FLAGS_GAME }, { "graphics", BZ_CATEGORY_FLAGS_GRAPHICS }, { "network", BZ_CATEGORY_FLAGS_NETWORK }, { "office", BZ_CATEGORY_FLAGS_OFFICE }, { "science", BZ_CATEGORY_FLAGS_SCIENCE }, { "system", BZ_CATEGORY_FLAGS_SYSTEM }, { "utility", BZ_CATEGORY_FLAGS_UTILITY }, { "trending", BZ_CATEGORY_FLAGS_TRENDING }, { "popular", BZ_CATEGORY_FLAGS_POPULAR }, { "recently-added", BZ_CATEGORY_FLAGS_RECENTLY_ADDED }, { "recently-updated", BZ_CATEGORY_FLAGS_RECENTLY_UPDATED }, { "mobile", BZ_CATEGORY_FLAGS_MOBILE }, { "adwaita", BZ_CATEGORY_FLAGS_ADWAITA }, { "kde", BZ_CATEGORY_FLAGS_KDE }, }; GType bz_category_flags_get_type (void) { static gsize g_define_type_id = 0; if (g_once_init_enter (&g_define_type_id)) { static const GFlagsValue values[] = { { BZ_CATEGORY_FLAGS_NONE, "BZ_CATEGORY_FLAGS_NONE", "none" }, { BZ_CATEGORY_FLAGS_AUDIOVIDEO, "BZ_CATEGORY_FLAGS_AUDIOVIDEO", "audiovideo" }, { BZ_CATEGORY_FLAGS_DEVELOPMENT, "BZ_CATEGORY_FLAGS_DEVELOPMENT", "development" }, { BZ_CATEGORY_FLAGS_EDUCATION, "BZ_CATEGORY_FLAGS_EDUCATION", "education" }, { BZ_CATEGORY_FLAGS_GAME, "BZ_CATEGORY_FLAGS_GAME", "game" }, { BZ_CATEGORY_FLAGS_GRAPHICS, "BZ_CATEGORY_FLAGS_GRAPHICS", "graphics" }, { BZ_CATEGORY_FLAGS_NETWORK, "BZ_CATEGORY_FLAGS_NETWORK", "network" }, { BZ_CATEGORY_FLAGS_OFFICE, "BZ_CATEGORY_FLAGS_OFFICE", "office" }, { BZ_CATEGORY_FLAGS_SCIENCE, "BZ_CATEGORY_FLAGS_SCIENCE", "science" }, { BZ_CATEGORY_FLAGS_SYSTEM, "BZ_CATEGORY_FLAGS_SYSTEM", "system" }, { BZ_CATEGORY_FLAGS_UTILITY, "BZ_CATEGORY_FLAGS_UTILITY", "utility" }, { BZ_CATEGORY_FLAGS_TRENDING, "BZ_CATEGORY_FLAGS_TRENDING", "trending" }, { BZ_CATEGORY_FLAGS_POPULAR, "BZ_CATEGORY_FLAGS_POPULAR", "popular" }, { BZ_CATEGORY_FLAGS_RECENTLY_ADDED, "BZ_CATEGORY_FLAGS_RECENTLY_ADDED", "recently-added" }, { BZ_CATEGORY_FLAGS_RECENTLY_UPDATED, "BZ_CATEGORY_FLAGS_RECENTLY_UPDATED", "recently-updated" }, { BZ_CATEGORY_FLAGS_MOBILE, "BZ_CATEGORY_FLAGS_MOBILE", "mobile" }, { BZ_CATEGORY_FLAGS_ADWAITA, "BZ_CATEGORY_FLAGS_ADWAITA", "adwaita" }, { BZ_CATEGORY_FLAGS_KDE, "BZ_CATEGORY_FLAGS_KDE", "kde" }, { 0, NULL, NULL } }; GType type = g_flags_register_static ("BzCategoryFlags", values); g_once_init_leave (&g_define_type_id, type); } return g_define_type_id; } BzCategoryFlags bz_category_flags_add (BzCategoryFlags flags, const char *name) { g_autofree char *lower = NULL; if (name == NULL) return flags; lower = g_ascii_strdown (name, -1); for (gsize i = 0; i < G_N_ELEMENTS (name_flag_map); i++) { if (g_strcmp0 (name_flag_map[i].name, lower) == 0) return flags | name_flag_map[i].flag; } return flags; } gboolean bz_category_flags_has_name (BzCategoryFlags flags, const char *name) { for (gsize i = 0; i < G_N_ELEMENTS (name_flag_map); i++) { if (g_strcmp0 (name_flag_map[i].name, name) == 0) return (flags & name_flag_map[i].flag) != 0; } return FALSE; } BzCategoryFlags bz_category_flags_from_name (const char *name) { g_autofree char *lower = g_ascii_strdown (name, -1); for (gsize i = 0; i < G_N_ELEMENTS (name_flag_map); i++) if (g_strcmp0 (name_flag_map[i].name, lower) == 0) return name_flag_map[i].flag; return BZ_CATEGORY_FLAGS_NONE; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-category-flags.h���������������������������������������������������0000664�0000000�0000000�00000004072�15240005042�0021621�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-category-flags.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib-object.h> G_BEGIN_DECLS #define BZ_TYPE_CATEGORY_FLAGS (bz_category_flags_get_type ()) typedef enum { BZ_CATEGORY_FLAGS_NONE = 0, BZ_CATEGORY_FLAGS_AUDIOVIDEO = 1 << 0, BZ_CATEGORY_FLAGS_DEVELOPMENT = 1 << 1, BZ_CATEGORY_FLAGS_EDUCATION = 1 << 2, BZ_CATEGORY_FLAGS_GAME = 1 << 3, BZ_CATEGORY_FLAGS_GRAPHICS = 1 << 4, BZ_CATEGORY_FLAGS_NETWORK = 1 << 5, BZ_CATEGORY_FLAGS_OFFICE = 1 << 6, BZ_CATEGORY_FLAGS_SCIENCE = 1 << 7, BZ_CATEGORY_FLAGS_SYSTEM = 1 << 8, BZ_CATEGORY_FLAGS_UTILITY = 1 << 9, BZ_CATEGORY_FLAGS_TRENDING = 1 << 10, BZ_CATEGORY_FLAGS_POPULAR = 1 << 11, BZ_CATEGORY_FLAGS_RECENTLY_ADDED = 1 << 12, BZ_CATEGORY_FLAGS_RECENTLY_UPDATED = 1 << 13, BZ_CATEGORY_FLAGS_MOBILE = 1 << 14, BZ_CATEGORY_FLAGS_ADWAITA = 1 << 15, BZ_CATEGORY_FLAGS_KDE = 1 << 16, } BzCategoryFlags; GType bz_category_flags_get_type (void); BzCategoryFlags bz_category_flags_add (BzCategoryFlags flags, const char *name); gboolean bz_category_flags_has_name (BzCategoryFlags flags, const char *name); BzCategoryFlags bz_category_flags_from_name (const char *name); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-category-tile.blp��������������������������������������������������0000664�0000000�0000000�00000001433�15240005042�0022006�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzCategoryTile: Button { styles [ "card", "category-tile", ] child: Box { margin-start: 16; margin-end: 16; margin-top: 24; margin-bottom: 24; orientation: vertical; spacing: 12; valign: center; halign: center; Image { pixel-size: 48; icon-name: bind template.category as <$BzFlathubCategory>.icon-name; visible: bind $invert_boolean($is_null(template.category as <$BzFlathubCategory>.icon-name) as <bool>) as <bool>; styles [ "icon-dropshadow", ] } Label { css-name: "category-tile-label"; halign: center; xalign: 0.5; label: bind template.category as <$BzFlathubCategory>.short-name; wrap: true; wrap-mode: word_char; } }; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-category-tile.c����������������������������������������������������0000664�0000000�0000000�00000010753�15240005042�0021460�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-category-tile.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-category-tile.h" struct _BzCategoryTile { GtkButton parent_instance; BzFlathubCategory *category; }; G_DEFINE_FINAL_TYPE (BzCategoryTile, bz_category_tile, GTK_TYPE_BUTTON); enum { PROP_0, PROP_CATEGORY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_category_tile_dispose (GObject *object) { BzCategoryTile *self = BZ_CATEGORY_TILE (object); g_clear_object (&self->category); G_OBJECT_CLASS (bz_category_tile_parent_class)->dispose (object); } static void bz_category_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzCategoryTile *self = BZ_CATEGORY_TILE (object); switch (prop_id) { case PROP_CATEGORY: g_value_set_object (value, bz_category_tile_get_category (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_category_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzCategoryTile *self = BZ_CATEGORY_TILE (object); switch (prop_id) { case PROP_CATEGORY: bz_category_tile_set_category (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static void bz_category_tile_class_init (BzCategoryTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_category_tile_set_property; object_class->get_property = bz_category_tile_get_property; object_class->dispose = bz_category_tile_dispose; props[PROP_CATEGORY] = g_param_spec_object ( "category", NULL, NULL, BZ_TYPE_FLATHUB_CATEGORY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-category-tile.ui"); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); } static void bz_category_tile_init (BzCategoryTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_add_css_class (GTK_WIDGET (self), "category-tile"); } GtkWidget * bz_category_tile_new (void) { return g_object_new (BZ_TYPE_CATEGORY_TILE, NULL); } BzFlathubCategory * bz_category_tile_get_category (BzCategoryTile *self) { g_return_val_if_fail (BZ_IS_CATEGORY_TILE (self), NULL); return self->category; } void bz_category_tile_set_category (BzCategoryTile *self, BzFlathubCategory *category) { const char *category_name; g_autofree char *css_class = NULL; g_return_if_fail (BZ_IS_CATEGORY_TILE (self)); g_clear_object (&self->category); if (category != NULL) { self->category = g_object_ref (category); category_name = bz_flathub_category_get_name (category); if (category_name != NULL) { g_autofree char *lowercase_name = g_ascii_strdown (category_name, -1); css_class = g_strdup_printf ("category-%s", lowercase_name); g_strdelimit (css_class, " &/", '-'); gtk_widget_add_css_class (GTK_WIDGET (self), css_class); } } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CATEGORY]); }���������������������bazaar-org-bazaar-48f93f4/src/bz-category-tile.h����������������������������������������������������0000664�0000000�0000000�00000002356�15240005042�0021465�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-category-tile.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "bz-flathub-category.h" G_BEGIN_DECLS #define BZ_TYPE_CATEGORY_TILE (bz_category_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzCategoryTile, bz_category_tile, BZ, CATEGORY_TILE, GtkButton) GtkWidget * bz_category_tile_new (void); BzFlathubCategory * bz_category_tile_get_category (BzCategoryTile *self); void bz_category_tile_set_category (BzCategoryTile *self, BzFlathubCategory *category); G_END_DECLS����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-content-provider.c�������������������������������������������������0000664�0000000�0000000�00000044552�15240005042�0022216�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-content-provider.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::CONTENT-PROVIDER" #include "config.h" #include <gtk/gtk.h> #include <libdex.h> #include "bz-content-provider.h" #include "env.h" #include "io.h" #include "util.h" struct _BzContentProvider { GObject parent_instance; GListModel *input_files; BzParser *parser; GListStore *input_mirror; GHashTable *input_tracking; GListStore *outputs; GtkFlattenListModel *impl_model; }; static void list_model_iface_init (GListModelInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzContentProvider, bz_content_provider, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init)) enum { PROP_0, PROP_INPUT_FILES, PROP_PARSER, PROP_HAS_INPUTS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; BZ_DEFINE_DATA ( input_init, InputInit, { GFile *file; }, BZ_RELEASE_DATA (file, g_object_unref)) static DexFuture * input_init_fiber (InputInitData *data); BZ_DEFINE_DATA ( input_load, InputLoad, { GFile *file; BzParser *parser; }, BZ_RELEASE_DATA (file, g_object_unref); BZ_RELEASE_DATA (parser, g_object_unref)) static DexFuture * input_load_fiber (InputLoadData *data); BZ_DEFINE_DATA ( input_tracking, InputTracking, { GMutex mutex; GWeakRef self; char *path; GFileMonitor *monitor; GListStore *output; DexFuture *init; DexFuture *task; }, g_mutex_clear (&self->mutex); g_weak_ref_clear (&self->self); BZ_RELEASE_DATA (path, g_free); BZ_RELEASE_DATA (monitor, g_object_unref); BZ_RELEASE_DATA (output, g_object_unref); BZ_RELEASE_DATA (init, dex_unref); BZ_RELEASE_DATA (task, dex_unref)) static DexFuture * input_init_finally (DexFuture *future, InputTrackingData *data); static DexFuture * input_load_finally (DexFuture *future, InputTrackingData *data); static void impl_model_changed (BzContentProvider *self, guint position, guint removed, guint added, GListModel *impl_model); static void input_files_changed (BzContentProvider *self, guint position, guint removed, guint added, GListModel *input_files); static void input_file_changed_on_disk (InputTrackingData *data, GFile *file, GFile *other_file, GFileMonitorEvent event_type, GFileMonitor *monitor); static gboolean commence_reload (InputTrackingData *data); static void bz_content_provider_dispose (GObject *object) { BzContentProvider *self = BZ_CONTENT_PROVIDER (object); g_clear_object (&self->input_files); g_clear_object (&self->parser); g_clear_object (&self->input_mirror); g_clear_pointer (&self->input_tracking, g_hash_table_unref); g_clear_object (&self->outputs); g_clear_object (&self->impl_model); G_OBJECT_CLASS (bz_content_provider_parent_class)->dispose (object); } static void bz_content_provider_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzContentProvider *self = BZ_CONTENT_PROVIDER (object); switch (prop_id) { case PROP_INPUT_FILES: g_value_set_object (value, bz_content_provider_get_input_files (self)); break; case PROP_PARSER: g_value_set_object (value, bz_content_provider_get_parser (self)); break; case PROP_HAS_INPUTS: g_value_set_boolean (value, bz_content_provider_get_has_inputs (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_content_provider_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzContentProvider *self = BZ_CONTENT_PROVIDER (object); switch (prop_id) { case PROP_INPUT_FILES: bz_content_provider_set_input_files (self, g_value_get_object (value)); break; case PROP_PARSER: bz_content_provider_set_parser (self, g_value_get_object (value)); break; case PROP_HAS_INPUTS: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_content_provider_class_init (BzContentProviderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_content_provider_set_property; object_class->get_property = bz_content_provider_get_property; object_class->dispose = bz_content_provider_dispose; props[PROP_INPUT_FILES] = g_param_spec_object ( "input-files", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_PARSER] = g_param_spec_object ( "parser", NULL, NULL, BZ_TYPE_PARSER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_HAS_INPUTS] = g_param_spec_boolean ( "has-inputs", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_content_provider_init (BzContentProvider *self) { self->input_mirror = g_list_store_new (G_TYPE_FILE); self->input_tracking = g_hash_table_new_full ( g_direct_hash, g_direct_equal, g_object_unref, input_tracking_data_unref); self->outputs = g_list_store_new (G_TYPE_LIST_MODEL); self->impl_model = gtk_flatten_list_model_new (g_object_ref (G_LIST_MODEL (self->outputs))); g_signal_connect_swapped ( self->impl_model, "items-changed", G_CALLBACK (impl_model_changed), self); } static GType list_model_get_item_type (GListModel *list) { return G_TYPE_OBJECT; } static guint list_model_get_n_items (GListModel *list) { BzContentProvider *self = BZ_CONTENT_PROVIDER (list); return g_list_model_get_n_items (G_LIST_MODEL (self->impl_model)); } static gpointer list_model_get_item (GListModel *list, guint position) { BzContentProvider *self = BZ_CONTENT_PROVIDER (list); return g_list_model_get_item (G_LIST_MODEL (self->impl_model), position); } static void list_model_iface_init (GListModelInterface *iface) { iface->get_item_type = list_model_get_item_type; iface->get_n_items = list_model_get_n_items; iface->get_item = list_model_get_item; } BzContentProvider * bz_content_provider_new (void) { return g_object_new (BZ_TYPE_CONTENT_PROVIDER, NULL); } void bz_content_provider_set_input_files (BzContentProvider *self, GListModel *input_files) { guint old_length = 0; g_return_if_fail (BZ_IS_CONTENT_PROVIDER (self)); g_return_if_fail (input_files == NULL || G_IS_LIST_MODEL (input_files)); if (self->input_files != NULL) { old_length = g_list_model_get_n_items (self->input_files); g_signal_handlers_disconnect_by_func ( self->input_files, input_files_changed, self); } g_clear_object (&self->input_files); g_hash_table_remove_all (self->input_tracking); g_list_store_remove_all (self->input_mirror); g_list_store_remove_all (self->outputs); if (input_files != NULL) { self->input_files = g_object_ref (input_files); g_signal_connect_swapped ( input_files, "items-changed", G_CALLBACK (input_files_changed), self); input_files_changed ( self, 0, old_length, g_list_model_get_n_items (input_files), input_files); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INPUT_FILES]); } GListModel * bz_content_provider_get_input_files (BzContentProvider *self) { g_return_val_if_fail (BZ_IS_CONTENT_PROVIDER (self), NULL); return self->input_files; } void bz_content_provider_set_parser (BzContentProvider *self, BzParser *parser) { GHashTableIter iter = { 0 }; g_return_if_fail (BZ_IS_CONTENT_PROVIDER (self)); g_return_if_fail (parser == NULL || BZ_IS_PARSER (parser)); g_clear_object (&self->parser); if (parser != NULL) self->parser = g_object_ref (parser); g_hash_table_iter_init (&iter, self->input_tracking); for (;;) { GFile *file = NULL; InputTrackingData *data = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &file, (gpointer *) &data)) break; commence_reload (data); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PARSER]); } BzParser * bz_content_provider_get_parser (BzContentProvider *self) { g_return_val_if_fail (BZ_IS_CONTENT_PROVIDER (self), NULL); return self->parser; } gboolean bz_content_provider_get_has_inputs (BzContentProvider *self) { g_return_val_if_fail (BZ_IS_CONTENT_PROVIDER (self), FALSE); return self->input_files != NULL && g_list_model_get_n_items (self->input_files) > 0 && g_list_model_get_n_items (G_LIST_MODEL (self)) > 0; } static void impl_model_changed (BzContentProvider *self, guint position, guint removed, guint added, GListModel *impl_model) { g_list_model_items_changed ( G_LIST_MODEL (self), position, removed, added); } static void input_files_changed (BzContentProvider *self, guint position, guint removed, guint added, GListModel *input_files) { gboolean emit_has_inputs = FALSE; g_autofree GFile **additions = NULL; g_autofree GListStore **new_outputs = NULL; emit_has_inputs = g_list_model_get_n_items (input_files) == 0 || g_list_model_get_n_items (G_LIST_MODEL (self->input_mirror)) == 0; if (removed > 0) { for (guint i = 0; i < removed; i++) { g_autoptr (GFile) removal = NULL; InputTrackingData *data = NULL; removal = g_list_model_get_item ( G_LIST_MODEL (self->input_mirror), position + i); data = g_hash_table_lookup (self->input_tracking, removal); g_assert (data != NULL); g_mutex_lock (&data->mutex); dex_clear (&data->task); g_mutex_unlock (&data->mutex); g_hash_table_remove (self->input_tracking, removal); } } if (added > 0) { additions = g_malloc0_n (added, sizeof (*additions)); for (guint i = 0; i < added; i++) additions[i] = g_list_model_get_item ( G_LIST_MODEL (self->input_files), position + i); new_outputs = g_malloc0_n (added, sizeof (*new_outputs)); for (guint i = 0; i < added; i++) new_outputs[i] = g_list_store_new (G_TYPE_OBJECT); } g_list_store_splice (self->input_mirror, position, removed, (gpointer *) additions, added); g_list_store_splice (self->outputs, position, removed, (gpointer *) new_outputs, added); for (guint i = 0; i < added; i++) { g_autoptr (InputInitData) init_data = NULL; g_autoptr (InputTrackingData) tracking_data = NULL; g_autoptr (DexFuture) future = NULL; init_data = input_init_data_new (); init_data->file = g_object_ref (additions[i]); future = dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) input_init_fiber, input_init_data_ref (init_data), input_init_data_unref); tracking_data = input_tracking_data_new (); g_mutex_init (&tracking_data->mutex); g_weak_ref_init (&tracking_data->self, self); tracking_data->path = g_file_get_path (additions[i]); tracking_data->output = g_steal_pointer (&new_outputs[i]); g_mutex_lock (&tracking_data->mutex); future = dex_future_finally ( future, (DexFutureCallback) input_init_finally, input_tracking_data_ref (tracking_data), input_tracking_data_unref); tracking_data->init = g_steal_pointer (&future); g_mutex_unlock (&tracking_data->mutex); g_hash_table_replace ( self->input_tracking, g_steal_pointer (&additions[i]), input_tracking_data_ref (tracking_data)); } if (emit_has_inputs) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_INPUTS]); } static void input_file_changed_on_disk (InputTrackingData *data, GFile *file, GFile *other_file, GFileMonitorEvent event_type, GFileMonitor *monitor) { if (event_type == G_FILE_MONITOR_EVENT_CHANGED || event_type == G_FILE_MONITOR_EVENT_CREATED || event_type == G_FILE_MONITOR_EVENT_DELETED) g_idle_add_full ( G_PRIORITY_DEFAULT, (GSourceFunc) commence_reload, input_tracking_data_ref (data), input_tracking_data_unref); } static DexFuture * input_init_fiber (InputInitData *data) { GFile *file = data->file; g_autoptr (GError) local_error = NULL; g_autoptr (GFileMonitor) monitor = NULL; monitor = g_file_monitor_file ( file, G_FILE_MONITOR_NONE, NULL, &local_error); if (monitor == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); return dex_future_new_for_object (monitor); } static DexFuture * input_init_finally (DexFuture *future, InputTrackingData *data) { g_autoptr (BzContentProvider) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GMutexLocker) locker = NULL; const GValue *value = NULL; locker = g_mutex_locker_new (&data->mutex); dex_clear (&data->init); bz_weak_get_or_return_reject (self, &data->self); g_list_store_remove_all (data->output); value = dex_future_get_value (future, &local_error); if (value != NULL) { data->monitor = g_value_dup_object (value); g_signal_connect_swapped ( data->monitor, "changed", G_CALLBACK (input_file_changed_on_disk), data); g_clear_pointer (&locker, g_mutex_locker_free); commence_reload (data); } else g_warning ("Could not init object watch at path %s: %s", data->path, local_error->message); return NULL; } static DexFuture * input_load_fiber (InputLoadData *data) { GFile *file = data->file; BzParser *parser = data->parser; g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (GHashTable) parse_results = NULL; GObject *object = NULL; bytes = dex_await_boxed (dex_file_load_contents_bytes (file), &local_error); if (bytes == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); parse_results = bz_parser_process_bytes (parser, bytes, &local_error); if (parse_results == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); object = g_value_get_object (g_hash_table_lookup (parse_results, "/")); if (object == NULL) return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Parser returned invalid results"); return dex_future_new_for_object (object); } static DexFuture * input_load_finally (DexFuture *future, InputTrackingData *data) { g_autoptr (BzContentProvider) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GMutexLocker) locker = NULL; const GValue *value = NULL; locker = g_mutex_locker_new (&data->mutex); g_list_store_remove_all (data->output); bz_weak_get_or_return_reject (self, &data->self); value = dex_future_get_value (future, &local_error); if (value != NULL) g_list_store_append (data->output, g_value_get_object (value)); else if (local_error->domain != G_IO_ERROR) g_warning ("Could not load object at path %s: %s", data->path, local_error->message); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_INPUTS]); return NULL; } static gboolean commence_reload (InputTrackingData *data) { g_autoptr (BzContentProvider) self = NULL; g_autoptr (GMutexLocker) locker = NULL; g_autoptr (InputLoadData) load_data = NULL; g_autoptr (DexFuture) future = NULL; locker = g_mutex_locker_new (&data->mutex); dex_clear (&data->task); self = g_weak_ref_get (&data->self); if (self == NULL) goto done; if (self->parser == NULL) goto done; load_data = input_load_data_new (); load_data->file = g_file_new_for_path (data->path); load_data->parser = g_object_ref (self->parser); future = dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) input_load_fiber, input_load_data_ref (load_data), input_load_data_unref); future = dex_future_finally ( future, (DexFutureCallback) input_load_finally, input_tracking_data_ref (data), input_tracking_data_unref); data->task = g_steal_pointer (&future); done: return G_SOURCE_REMOVE; } ������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-content-provider.h�������������������������������������������������0000664�0000000�0000000�00000003010�15240005042�0022203�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-content-provider.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "bz-parser.h" G_BEGIN_DECLS #define BZ_TYPE_CONTENT_PROVIDER (bz_content_provider_get_type ()) G_DECLARE_FINAL_TYPE (BzContentProvider, bz_content_provider, BZ, CONTENT_PROVIDER, GObject) BzContentProvider * bz_content_provider_new (void); void bz_content_provider_set_input_files (BzContentProvider *self, GListModel *input_files); GListModel * bz_content_provider_get_input_files (BzContentProvider *self); void bz_content_provider_set_parser (BzContentProvider *self, BzParser *parser); BzParser * bz_content_provider_get_parser (BzContentProvider *self); gboolean bz_content_provider_get_has_inputs (BzContentProvider *self); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-context-row.c������������������������������������������������������0000664�0000000�0000000�00000005422�15240005042�0021176�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-context-row.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-context-row.h" GType bz_importance_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) { static const GEnumValue values[] = { { BZ_IMPORTANCE_UNIMPORTANT, "BZ_IMPORTANCE_UNIMPORTANT", "unimportant" }, { BZ_IMPORTANCE_NEUTRAL, "BZ_IMPORTANCE_NEUTRAL", "neutral" }, { BZ_IMPORTANCE_INFORMATION, "BZ_IMPORTANCE_INFORMATION", "information" }, { BZ_IMPORTANCE_WARNING, "BZ_IMPORTANCE_WARNING", "warning" }, { BZ_IMPORTANCE_IMPORTANT, "BZ_IMPORTANCE_IMPORTANT", "important" }, { 0, NULL, NULL } }; type = g_enum_register_static ("BzImportance", values); } return type; } const gchar * bz_context_row_importance_to_css_class (BzImportance importance) { switch (importance) { case BZ_IMPORTANCE_UNIMPORTANT: return "green"; case BZ_IMPORTANCE_NEUTRAL: return "grey"; case BZ_IMPORTANCE_INFORMATION: return "yellow"; case BZ_IMPORTANCE_WARNING: return "orange"; case BZ_IMPORTANCE_IMPORTANT: return "red"; default: return "grey"; } } AdwActionRow * bz_context_row_new (const gchar *icon_name, BzImportance importance, const gchar *title, const gchar *subtitle) { AdwActionRow *row; GtkWidget *icon; const gchar *css_class; g_return_val_if_fail (icon_name != NULL, NULL); g_return_val_if_fail (title != NULL, NULL); row = ADW_ACTION_ROW (adw_action_row_new ()); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), title); if (subtitle != NULL) adw_action_row_set_subtitle (row, subtitle); icon = gtk_image_new_from_icon_name (icon_name); gtk_widget_set_valign (icon, GTK_ALIGN_CENTER); gtk_widget_add_css_class (icon, "circular-lozenge"); css_class = bz_context_row_importance_to_css_class (importance); gtk_widget_add_css_class (icon, css_class); adw_action_row_add_prefix (row, icon); return row; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-context-row.h������������������������������������������������������0000664�0000000�0000000�00000002527�15240005042�0021206�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-context-row.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS typedef enum { BZ_IMPORTANCE_UNIMPORTANT, BZ_IMPORTANCE_NEUTRAL, BZ_IMPORTANCE_INFORMATION, BZ_IMPORTANCE_WARNING, BZ_IMPORTANCE_IMPORTANT, } BzImportance; #define BZ_TYPE_IMPORTANCE (bz_importance_get_type ()) GType bz_importance_get_type (void) G_GNUC_CONST; AdwActionRow * bz_context_row_new (const gchar *icon_name, BzImportance importance, const gchar *title, const gchar *subtitle); const gchar * bz_context_row_importance_to_css_class (BzImportance importance); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-context-tile.blp���������������������������������������������������0000664�0000000�0000000�00000001300�15240005042�0021646�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzContextTile: Button { styles [ "context-tile", "flat", ] focusable: false; halign: center; Box { orientation: vertical; spacing: 4; hexpand: true; Button ring_button { styles [ "lozenge-ring-button", ] halign: center; valign: center; margin-bottom: 4; child: Box lozenge { styles [ "lozenge", ] halign: center; }; accessibility { described-by: label; } } Label label { styles [ "context-tile-text", ] justify: center; wrap: true; wrap-mode: word_char; xalign: 0.5; } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-context-tile.c�����������������������������������������������������0000664�0000000�0000000�00000016752�15240005042�0021334�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-context-tile.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-context-tile.h" #include <glib/gi18n.h> struct _BzContextTile { GtkButton parent_instance; char *lozenge_style; /* Template widgets */ GtkButton *ring_button; GtkBox *lozenge; GtkLabel *label; }; G_DEFINE_FINAL_TYPE (BzContextTile, bz_context_tile, GTK_TYPE_BUTTON) enum { PROP_0, PROP_LOZENGE_CHILD, PROP_LABEL, PROP_LOZENGE_STYLE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_context_tile_dispose (GObject *object) { BzContextTile *self = BZ_CONTEXT_TILE (object); g_clear_pointer (&self->lozenge_style, g_free); gtk_widget_dispose_template (GTK_WIDGET (self), BZ_TYPE_CONTEXT_TILE); G_OBJECT_CLASS (bz_context_tile_parent_class)->dispose (object); } static void bz_context_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzContextTile *self = BZ_CONTEXT_TILE (object); switch (prop_id) { case PROP_LOZENGE_CHILD: g_value_set_object (value, bz_context_tile_get_lozenge_child (self)); break; case PROP_LABEL: g_value_set_string (value, bz_context_tile_get_label (self)); break; case PROP_LOZENGE_STYLE: g_value_set_string (value, bz_context_tile_get_lozenge_style (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_context_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzContextTile *self = BZ_CONTEXT_TILE (object); switch (prop_id) { case PROP_LOZENGE_CHILD: bz_context_tile_set_lozenge_child (self, g_value_get_object (value)); break; case PROP_LABEL: bz_context_tile_set_label (self, g_value_get_string (value)); break; case PROP_LOZENGE_STYLE: bz_context_tile_set_lozenge_style (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_context_tile_class_init (BzContextTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_context_tile_set_property; object_class->get_property = bz_context_tile_get_property; object_class->dispose = bz_context_tile_dispose; props[PROP_LOZENGE_CHILD] = g_param_spec_object ( "lozenge-child", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_LABEL] = g_param_spec_string ( "label", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_LOZENGE_STYLE] = g_param_spec_string ( "lozenge-style", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-context-tile.ui"); gtk_widget_class_bind_template_child (widget_class, BzContextTile, lozenge); gtk_widget_class_bind_template_child (widget_class, BzContextTile, label); gtk_widget_class_bind_template_child (widget_class, BzContextTile, ring_button); } static void on_enter_notify (GtkEventController *controller, gpointer user_data) { g_autoptr (GdkCursor) cursor = gdk_cursor_new_from_name ("pointer", NULL); gtk_widget_set_cursor (GTK_WIDGET (user_data), cursor); } static void on_leave_notify (GtkEventController *controller, gpointer user_data) { gtk_widget_set_cursor (GTK_WIDGET (user_data), NULL); } static void on_ring_button_clicked (GtkButton *ring_button, gpointer user_data) { BzContextTile *self = BZ_CONTEXT_TILE (user_data); g_signal_emit_by_name (self, "clicked"); } static void bz_context_tile_init (BzContextTile *self) { GtkEventController *enter_leave = gtk_event_controller_motion_new (); gtk_widget_init_template (GTK_WIDGET (self)); g_signal_connect (self->ring_button, "clicked", G_CALLBACK (on_ring_button_clicked), self); g_signal_connect (enter_leave, "enter", G_CALLBACK (on_enter_notify), GTK_WIDGET (self)); g_signal_connect (enter_leave, "leave", G_CALLBACK (on_leave_notify), GTK_WIDGET (self)); gtk_widget_add_controller (GTK_WIDGET (self), enter_leave); } BzContextTile * bz_context_tile_new (void) { return g_object_new (BZ_TYPE_CONTEXT_TILE, NULL); } GtkWidget * bz_context_tile_get_lozenge_child (BzContextTile *self) { g_return_val_if_fail (BZ_IS_CONTEXT_TILE (self), NULL); return gtk_widget_get_first_child (GTK_WIDGET (self->lozenge)); } void bz_context_tile_set_lozenge_child (BzContextTile *self, GtkWidget *child) { GtkWidget *old_child; g_return_if_fail (BZ_IS_CONTEXT_TILE (self)); old_child = gtk_widget_get_first_child (GTK_WIDGET (self->lozenge)); if (old_child == child) return; if (old_child != NULL) gtk_box_remove (self->lozenge, old_child); if (child != NULL) gtk_box_append (self->lozenge, child); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LOZENGE_CHILD]); } const char * bz_context_tile_get_label (BzContextTile *self) { g_return_val_if_fail (BZ_IS_CONTEXT_TILE (self), NULL); return gtk_label_get_label (self->label); } void bz_context_tile_set_label (BzContextTile *self, const char *label) { g_return_if_fail (BZ_IS_CONTEXT_TILE (self)); if (g_strcmp0 (gtk_label_get_label (self->label), label) == 0) return; gtk_label_set_label (self->label, label); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LABEL]); } const char * bz_context_tile_get_lozenge_style (BzContextTile *self) { g_return_val_if_fail (BZ_IS_CONTEXT_TILE (self), NULL); return self->lozenge_style; } void bz_context_tile_set_lozenge_style (BzContextTile *self, const char *style) { g_return_if_fail (BZ_IS_CONTEXT_TILE (self)); if (style != NULL && *style == '\0') style = NULL; if (g_strcmp0 (self->lozenge_style, style) == 0) return; if (self->lozenge_style != NULL) gtk_widget_remove_css_class (GTK_WIDGET (self->lozenge), self->lozenge_style); g_clear_pointer (&self->lozenge_style, g_free); if (style != NULL) { self->lozenge_style = g_strdup (style); gtk_widget_add_css_class (GTK_WIDGET (self->lozenge), self->lozenge_style); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LOZENGE_STYLE]); } ����������������������bazaar-org-bazaar-48f93f4/src/bz-context-tile.h�����������������������������������������������������0000664�0000000�0000000�00000003112�15240005042�0021323�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-context-tile.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_CONTEXT_TILE (bz_context_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzContextTile, bz_context_tile, BZ, CONTEXT_TILE, GtkButton) BzContextTile *bz_context_tile_new (void); GtkWidget *bz_context_tile_get_lozenge_child (BzContextTile *self); void bz_context_tile_set_lozenge_child (BzContextTile *self, GtkWidget *child); const char *bz_context_tile_get_label (BzContextTile *self); void bz_context_tile_set_label (BzContextTile *self, const char *label); const char *bz_context_tile_get_lozenge_style (BzContextTile *self); void bz_context_tile_set_lozenge_style (BzContextTile *self, const char *style); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-country-data-point.txt���������������������������������������������0000664�0000000�0000000�00000000257�15240005042�0023044�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=country_data_point parent-prefix=g parent-name=object author=AUTOGEN property=country_code char G_TYPE_STRING string property=downloads guint G_TYPE_UINT uint �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-country.txt��������������������������������������������������������0000664�0000000�0000000�00000000434�15240005042�0021003�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=country parent-prefix=g parent-name=object author=AUTOGEN property=name char G_TYPE_STRING string property=iso_code char G_TYPE_STRING string property=coordinates GVariant G_TYPE_VARIANT variant g_variant_unref g_variant_ref property=value double G_TYPE_DOUBLE double ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-app-tile.c�������������������������������������������������0000664�0000000�0000000�00000011042�15240005042�0022040�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-curated-app-tile.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-curated-app-tile.h" #include "bz-app-tile.h" struct _BzCuratedAppTile { AdwBin parent_instance; BzEntryGroup *group; }; G_DEFINE_FINAL_TYPE (BzCuratedAppTile, bz_curated_app_tile, ADW_TYPE_BIN); enum { PROP_0, PROP_GROUP, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_CLICKED, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void bz_curated_app_tile_dispose (GObject *object) { BzCuratedAppTile *self = BZ_CURATED_APP_TILE (object); g_clear_pointer (&self->group, g_object_unref); G_OBJECT_CLASS (bz_curated_app_tile_parent_class)->dispose (object); } static void bz_curated_app_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzCuratedAppTile *self = BZ_CURATED_APP_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_curated_app_tile_get_group (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_curated_app_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzCuratedAppTile *self = BZ_CURATED_APP_TILE (object); switch (prop_id) { case PROP_GROUP: bz_curated_app_tile_set_group (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void clicked_cb (BzCuratedAppTile *self, BzAppTile *tile) { g_signal_emit (self, signals[SIGNAL_CLICKED], 0, NULL); } static void bz_curated_app_tile_class_init (BzCuratedAppTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_curated_app_tile_set_property; object_class->get_property = bz_curated_app_tile_get_property; object_class->dispose = bz_curated_app_tile_dispose; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_CLICKED] = g_signal_new ( "clicked", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 1, BZ_TYPE_ENTRY); g_signal_set_va_marshaller ( signals[SIGNAL_CLICKED], G_TYPE_FROM_CLASS (klass), g_cclosure_marshal_VOID__VOIDv); gtk_widget_class_set_css_name (widget_class, "app-tile"); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-curated-app-tile.ui"); gtk_widget_class_bind_template_callback (widget_class, clicked_cb); } static void bz_curated_app_tile_init (BzCuratedAppTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } BzCuratedAppTile * bz_curated_app_tile_new (void) { return g_object_new (BZ_TYPE_CURATED_APP_TILE, NULL); } BzEntryGroup * bz_curated_app_tile_get_group (BzCuratedAppTile *self) { g_return_val_if_fail (BZ_IS_CURATED_APP_TILE (self), NULL); return self->group; } void bz_curated_app_tile_set_group (BzCuratedAppTile *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_CURATED_APP_TILE (self)); g_clear_pointer (&self->group, g_object_unref); if (group != NULL) self->group = g_object_ref (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } /* End of bz-curated-app-tile.c */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-appids-info.txt��������������������������������������������0000664�0000000�0000000�00000000235�15240005042�0023135�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_appids_info parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> property=list GListModel G_TYPE_LIST_MODEL object �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-article.txt������������������������������������������������0000664�0000000�0000000�00000000414�15240005042�0022346�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_article parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> property=title char G_TYPE_STRING string property=subtitle char G_TYPE_STRING string property=image char G_TYPE_STRING string property=uri char G_TYPE_STRING string ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-articles-info.txt������������������������������������������0000664�0000000�0000000�00000000424�15240005042�0023463�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_articles_info parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-curated-article.h" property=list GListModel G_TYPE_LIST_MODEL object property=uri char G_TYPE_STRING string property=aspect_ratio float G_TYPE_FLOAT float ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-banner.txt�������������������������������������������������0000664�0000000�0000000�00000000516�15240005042�0022173�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_banner parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-curated-image-info.h" property=image BzCuratedImageInfo BZ_TYPE_CURATED_IMAGE_INFO object property=light_color char G_TYPE_STRING string property=dark_color char G_TYPE_STRING string property=height int G_TYPE_INT int ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-featured-carousel.txt��������������������������������������0000664�0000000�0000000�00000000430�15240005042�0024333�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_featured_carousel parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-curated-appids-info.h" property=appids BzCuratedAppidsInfo BZ_TYPE_CURATED_APPIDS_INFO object property=disable_auto_rotate gboolean G_TYPE_BOOLEAN boolean ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-image-info.txt���������������������������������������������0000664�0000000�0000000�00000000651�15240005042�0022741�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_image_info parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> property=uri char G_TYPE_STRING string property=alt char G_TYPE_STRING string property=light_uri char G_TYPE_STRING string property=dark_uri char G_TYPE_STRING string property=can_shrink gboolean G_TYPE_BOOLEAN boolean property=fit GtkContentFit GTK_TYPE_CONTENT_FIT enum property=halign GtkAlign GTK_TYPE_ALIGN enum ���������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-markdown-info.txt������������������������������������������0000664�0000000�0000000�00000000202�15240005042�0023471�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_markdown_info parent-prefix=g parent-name=object author=AUTOGEN property=string char G_TYPE_STRING string ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-row.txt����������������������������������������������������0000664�0000000�0000000�00000001004�15240005042�0021526�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_row parent-prefix=g parent-name=object author=AUTOGEN include="bz-curated-section.h" include="bz-curated-featured-carousel.h" include="bz-curated-banner.h" include="bz-curated-articles-info.h" property=section BzCuratedSection BZ_TYPE_CURATED_SECTION object property=featured_carousel BzCuratedFeaturedCarousel BZ_TYPE_CURATED_FEATURED_CAROUSEL object property=banner BzCuratedBanner BZ_TYPE_CURATED_BANNER object property=articles BzCuratedArticlesInfo BZ_TYPE_CURATED_ARTICLES_INFO object ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-section.txt������������������������������������������������0000664�0000000�0000000�00000001035�15240005042�0022367�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=curated_section parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-entry-group.h" include="bz-curated-appids-info.h" include="bz-curated-markdown-info.h" property=title char G_TYPE_STRING string property=subtitle BzCuratedMarkdownInfo BZ_TYPE_CURATED_MARKDOWN_INFO object property=appids BzCuratedAppidsInfo BZ_TYPE_CURATED_APPIDS_INFO object property=list_type char G_TYPE_STRING string property=enable_bulk_install gboolean G_TYPE_BOOLEAN boolean property=overflow_count int G_TYPE_INT int ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-view.blp���������������������������������������������������0000664�0000000�0000000�00000003671�15240005042�0021643�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzCuratedView: Adw.Bin { child: Adw.BreakpointBin { width-request: 360; height-request: 100; Adw.Breakpoint { condition ("max-width: 700px") setters { content_box.margin-start: 10; content_box.margin-end: 10; } } child: Adw.ViewStack stack { enable-transitions: true; transition-duration: 400; Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: "star-outline-rounded-symbolic"; title: _("No Curation"); description: _( "There is no curation information provided on this system. You can still browse apps on Flathub" ); child: Button { label: _("Browse Flathub"); halign: center; clicked => $browse_flathub_cb(template); styles [ "pill", ] }; }; } Adw.ViewStackPage { name: "offline"; child: Adw.StatusPage { icon-name: "connected-squares-x"; title: _("Offline"); }; } Adw.ViewStackPage { name: "content"; child: ScrolledWindow { child: Adw.Clamp { maximum-size: 1500; tightening-threshold: 1400; child: $BzDynamicListView content_box { css-name: "curated-list-view"; hexpand: true; margin-start: 30; margin-end: 30; margin-bottom: 50; scroll: false; noscroll-kind: list-box; child-type: "BzDynamicListView"; object-prop: "rows"; child-prop: "model"; model: bind template.state as <$BzStateInfo>.curated-provider; bind-widget => $bind_cb(template); unbind-widget => $unbind_cb(template); }; }; }; } }; }; }�����������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-view.c�����������������������������������������������������0000664�0000000�0000000�00000020611�15240005042�0021301�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-curated-view.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-curated-row.h" #include "bz-curated-view.h" #include "bz-dynamic-list-view.h" #include "bz-entry-group.h" #include "bz-root-curated-config.h" #include "bz-row-view.h" struct _BzCuratedView { AdwBin parent_instance; BzStateInfo *state; BzContentProvider *curated_provider; GPtrArray *css_providers; /* Template widgets */ AdwViewStack *stack; }; G_DEFINE_FINAL_TYPE (BzCuratedView, bz_curated_view, ADW_TYPE_BIN) enum { PROP_0, PROP_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_BROWSE_FLATHUB, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void items_changed (BzCuratedView *self, guint position, guint removed, guint added, GListModel *model); static void online_changed (BzCuratedView *self, GParamSpec *pspec, BzStateInfo *info); static void set_page (BzCuratedView *self); static void release_css_provider (gpointer ptr); static void bz_curated_view_dispose (GObject *object) { BzCuratedView *self = BZ_CURATED_VIEW (object); if (self->state != NULL) g_signal_handlers_disconnect_by_func ( self->state, online_changed, self); if (self->curated_provider != NULL) g_signal_handlers_disconnect_by_func ( self->curated_provider, items_changed, self); g_clear_object (&self->state); g_clear_object (&self->curated_provider); g_clear_pointer (&self->css_providers, g_ptr_array_unref); G_OBJECT_CLASS (bz_curated_view_parent_class)->dispose (object); } static void bz_curated_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzCuratedView *self = BZ_CURATED_VIEW (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, bz_curated_view_get_state (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_curated_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzCuratedView *self = BZ_CURATED_VIEW (object); switch (prop_id) { case PROP_STATE: bz_curated_view_set_state (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void browse_flathub_cb (BzCuratedView *self, GtkButton *button) { g_signal_emit (self, signals[SIGNAL_BROWSE_FLATHUB], 0); } static void bind_cb (BzCuratedView *self, BzDynamicListView *widget, GObject *object, BzDynamicListView *list_view) { bz_dynamic_list_view_set_noscroll_kind (widget, BZ_DYNAMIC_LIST_VIEW_KIND_VBOX); bz_dynamic_list_view_set_child_type (widget, "BzRowView"); bz_dynamic_list_view_set_child_prop (widget, "row"); } static void unbind_cb (BzCuratedView *self, BzDynamicListView *widget, GObject *object, BzDynamicListView *list_view) { bz_dynamic_list_view_set_model (widget, NULL); } static void bz_curated_view_class_init (BzCuratedViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_curated_view_dispose; object_class->get_property = bz_curated_view_get_property; object_class->set_property = bz_curated_view_set_property; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_BROWSE_FLATHUB] = g_signal_new ( "browse-flathub", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_type_ensure (BZ_TYPE_ROW_VIEW); g_type_ensure (BZ_TYPE_ROOT_CURATED_CONFIG); g_type_ensure (BZ_TYPE_CURATED_ROW); g_type_ensure (BZ_TYPE_DYNAMIC_LIST_VIEW); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-curated-view.ui"); gtk_widget_class_bind_template_child (widget_class, BzCuratedView, stack); gtk_widget_class_bind_template_callback (widget_class, browse_flathub_cb); gtk_widget_class_bind_template_callback (widget_class, bind_cb); gtk_widget_class_bind_template_callback (widget_class, unbind_cb); } static void bz_curated_view_init (BzCuratedView *self) { self->css_providers = g_ptr_array_new_with_free_func (release_css_provider); gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_curated_view_new (void) { return g_object_new (BZ_TYPE_CURATED_VIEW, NULL); } void bz_curated_view_set_state (BzCuratedView *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_CURATED_VIEW (self)); g_return_if_fail (state == NULL || BZ_IS_STATE_INFO (state)); if (self->state != NULL) g_signal_handlers_disconnect_by_func ( self->state, online_changed, self); if (self->curated_provider != NULL) { g_signal_handlers_disconnect_by_func ( self->curated_provider, items_changed, self); items_changed ( self, 0, g_list_model_get_n_items (G_LIST_MODEL (self->curated_provider)), 0, G_LIST_MODEL (self->curated_provider)); } g_clear_object (&self->state); g_clear_object (&self->curated_provider); if (state != NULL) { self->state = g_object_ref (state); g_signal_connect_swapped ( state, "notify::online", G_CALLBACK (online_changed), self); g_object_get ( state, "curated-provider", &self->curated_provider, NULL); if (self->curated_provider != NULL) { items_changed ( self, 0, 0, g_list_model_get_n_items (G_LIST_MODEL (self->curated_provider)), G_LIST_MODEL (self->curated_provider)); g_signal_connect_swapped ( self->curated_provider, "items-changed", G_CALLBACK (items_changed), self); } } else set_page (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); } BzStateInfo * bz_curated_view_get_state (BzCuratedView *self) { g_return_val_if_fail (BZ_IS_CURATED_VIEW (self), NULL); return self->state; } static void items_changed (BzCuratedView *self, guint position, guint removed, guint added, GListModel *model) { set_page (self); } static void online_changed (BzCuratedView *self, GParamSpec *pspec, BzStateInfo *info) { set_page (self); } static void set_page (BzCuratedView *self) { const char *page = NULL; if (self->state != NULL && !bz_state_info_get_online (self->state)) page = "offline"; else if (self->curated_provider != NULL && g_list_model_get_n_items (G_LIST_MODEL (self->curated_provider)) > 0) page = "content"; else page = "empty"; adw_view_stack_set_visible_child_name (self->stack, page); } static void release_css_provider (gpointer ptr) { GtkCssProvider *provider = ptr; gtk_style_context_remove_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (provider)); g_object_unref (provider); } �����������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-curated-view.h�����������������������������������������������������0000664�0000000�0000000�00000002320�15240005042�0021303�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-curated-view.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-content-provider.h" #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_CURATED_VIEW (bz_curated_view_get_type ()) G_DECLARE_FINAL_TYPE (BzCuratedView, bz_curated_view, BZ, CURATED_VIEW, AdwBin) GtkWidget * bz_curated_view_new (void); void bz_curated_view_set_state (BzCuratedView *self, BzStateInfo *state); BzStateInfo * bz_curated_view_get_state (BzCuratedView *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-data-graph.c�������������������������������������������������������0000664�0000000�0000000�00000117563�15240005042�0020727�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-data-graph.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <adwaita.h> #include "bz-data-graph.h" #include "bz-data-point.h" #include <math.h> #define LABEL_MARGIN 75.0 #define LABEL_MARGIN_RIGHT 35.0 #define TICK_LENGTH 5.0 struct _BzDataGraph { GtkWidget parent_instance; GListModel *model; char *independent_axis_label; char *dependent_axis_label; char *tooltip_prefix; int independent_decimals; int dependent_decimals; double transition_progress; double rounded_axis_max; AdwStyleManager *style_manager; GskPath *path; GskPathMeasure *path_measure; GskRenderNode *other; GskRenderNode *graph; GskRenderNode *overlay; gboolean wants_animate_open; GtkEventController *motion; double motion_x; double motion_y; GtkGesture *gesture; GtkWidget *tooltip_box; GtkWidget *tooltip_label1; GtkWidget *tooltip_prefix_label; GtkWidget *tooltip_label2; int allocated_width; int allocated_height; }; G_DEFINE_FINAL_TYPE (BzDataGraph, bz_data_graph, GTK_TYPE_WIDGET) enum { PROP_0, PROP_MODEL, PROP_INDEPENDENT_AXIS_LABEL, PROP_DEPENDENT_AXIS_LABEL, PROP_TOOLTIP_PREFIX, PROP_INDEPENDENT_DECIMALS, PROP_DEPENDENT_DECIMALS, PROP_TRANSITION_PROGRESS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void items_changed (GListModel *model, guint position, guint removed, guint added, BzDataGraph *self); static void refresh_path (BzDataGraph *self, double width, double height); static double calculate_axis_tick_value (double value, gboolean round_up); static void on_style_changed (BzDataGraph *self, GParamSpec *pspec, AdwStyleManager *style_manager); static void refresh_graph (BzDataGraph *self); static void refresh_overlay (BzDataGraph *self); static void bz_data_graph_dispose (GObject *object) { BzDataGraph *self = BZ_DATA_GRAPH (object); if (self->model != NULL) g_signal_handlers_disconnect_by_func ( self->model, items_changed, self); g_signal_handlers_disconnect_by_func (self->style_manager, on_style_changed, self); g_clear_object (&self->model); g_clear_pointer (&self->independent_axis_label, g_free); g_clear_pointer (&self->dependent_axis_label, g_free); g_clear_pointer (&self->tooltip_prefix, g_free); g_clear_pointer (&self->path, gsk_path_unref); g_clear_pointer (&self->path_measure, gsk_path_measure_unref); g_clear_pointer (&self->other, gsk_render_node_unref); g_clear_pointer (&self->graph, gsk_render_node_unref); g_clear_pointer (&self->overlay, gsk_render_node_unref); if (self->tooltip_box != NULL) gtk_widget_unparent (self->tooltip_box); G_OBJECT_CLASS (bz_data_graph_parent_class)->dispose (object); } static void bz_data_graph_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzDataGraph *self = BZ_DATA_GRAPH (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, bz_data_graph_get_model (self)); break; case PROP_INDEPENDENT_AXIS_LABEL: g_value_set_string (value, bz_data_graph_get_independent_axis_label (self)); break; case PROP_DEPENDENT_AXIS_LABEL: g_value_set_string (value, bz_data_graph_get_dependent_axis_label (self)); break; case PROP_TOOLTIP_PREFIX: g_value_set_string (value, bz_data_graph_get_tooltip_prefix (self)); break; case PROP_INDEPENDENT_DECIMALS: g_value_set_int (value, bz_data_graph_get_independent_decimals (self)); break; case PROP_DEPENDENT_DECIMALS: g_value_set_int (value, bz_data_graph_get_dependent_decimals (self)); break; case PROP_TRANSITION_PROGRESS: g_value_set_double (value, bz_data_graph_get_transition_progress (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_data_graph_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzDataGraph *self = BZ_DATA_GRAPH (object); switch (prop_id) { case PROP_MODEL: bz_data_graph_set_model (self, g_value_get_object (value)); break; case PROP_INDEPENDENT_AXIS_LABEL: bz_data_graph_set_independent_axis_label (self, g_value_get_string (value)); break; case PROP_DEPENDENT_AXIS_LABEL: bz_data_graph_set_dependent_axis_label (self, g_value_get_string (value)); break; case PROP_TOOLTIP_PREFIX: bz_data_graph_set_tooltip_prefix (self, g_value_get_string (value)); break; case PROP_INDEPENDENT_DECIMALS: bz_data_graph_set_independent_decimals (self, g_value_get_int (value)); break; case PROP_DEPENDENT_DECIMALS: bz_data_graph_set_dependent_decimals (self, g_value_get_int (value)); break; case PROP_TRANSITION_PROGRESS: bz_data_graph_set_transition_progress (self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_data_graph_size_allocate (GtkWidget *widget, int width, int height, int baseline) { BzDataGraph *self = BZ_DATA_GRAPH (widget); GtkRequisition natural_size = { 0 }; graphene_point_t card_position = { 0 }; if (width != self->allocated_width || height != self->allocated_height) { refresh_path ( self, (double) width - LABEL_MARGIN - LABEL_MARGIN_RIGHT, (double) height - LABEL_MARGIN); refresh_graph (self); refresh_overlay (self); self->allocated_width = width; self->allocated_height = height; } gtk_widget_get_preferred_size (self->tooltip_box, NULL, &natural_size); if (self->motion_x > width / 2.0) card_position.x = self->motion_x - natural_size.width - 10.0; else card_position.x = self->motion_x + 10.0; card_position.y = self->motion_y + 10.0; gtk_widget_allocate ( self->tooltip_box, natural_size.width, natural_size.height, baseline, gsk_transform_translate (NULL, &card_position)); gtk_widget_queue_draw (widget); } static void on_style_changed (BzDataGraph *self, GParamSpec *pspec, AdwStyleManager *style_manager) { refresh_graph (self); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void bz_data_graph_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzDataGraph *self = BZ_DATA_GRAPH (widget); if (self->path == NULL) return; if (self->graph != NULL) gtk_snapshot_append_node (snapshot, self->graph); if (self->other != NULL) { GdkRGBA widget_color = { 0 }; gtk_widget_get_color (widget, &widget_color); if (self->other != NULL) { graphene_rect_t bounds = { 0 }; gsk_render_node_get_bounds (self->other, &bounds); gtk_snapshot_push_mask (snapshot, GSK_MASK_MODE_ALPHA); gtk_snapshot_append_node (snapshot, self->other); gtk_snapshot_pop (snapshot); gtk_snapshot_append_color (snapshot, &widget_color, &bounds); gtk_snapshot_pop (snapshot); } } if (self->overlay != NULL) { gtk_snapshot_append_node (snapshot, self->overlay); /* tooltip card */ gtk_widget_snapshot_child (GTK_WIDGET (self), self->tooltip_box, snapshot); } if (self->wants_animate_open) { AdwAnimationTarget *transition_target = NULL; AdwSpringParams *transition_spring = NULL; g_autoptr (AdwAnimation) transition = NULL; self->wants_animate_open = FALSE; transition_target = adw_property_animation_target_new (G_OBJECT (self), "transition-progress"); transition_spring = adw_spring_params_new (1.0, 1.0, 80.0); transition = adw_spring_animation_new (GTK_WIDGET (self), 0.0, 1.0, transition_spring, transition_target); adw_spring_animation_set_epsilon (ADW_SPRING_ANIMATION (transition), 0.000001); adw_animation_play (transition); } } static void bz_data_graph_class_init (BzDataGraphClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_data_graph_dispose; object_class->get_property = bz_data_graph_get_property; object_class->set_property = bz_data_graph_set_property; props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_INDEPENDENT_AXIS_LABEL] = g_param_spec_string ( "independent-axis-label", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_DEPENDENT_AXIS_LABEL] = g_param_spec_string ( "dependent-axis-label", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TOOLTIP_PREFIX] = g_param_spec_string ( "tooltip-prefix", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_INDEPENDENT_DECIMALS] = g_param_spec_int ( "independent-decimals", NULL, NULL, -1, 4, (int) 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_DEPENDENT_DECIMALS] = g_param_spec_int ( "dependent-decimals", NULL, NULL, -1, 4, (int) 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TRANSITION_PROGRESS] = g_param_spec_double ( "transition-progress", NULL, NULL, 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); widget_class->size_allocate = bz_data_graph_size_allocate; widget_class->snapshot = bz_data_graph_snapshot; } static void update_cursor (BzDataGraph *self, gdouble x, gdouble y) { double widget_width = gtk_widget_get_width (GTK_WIDGET (self)); double widget_height = gtk_widget_get_height (GTK_WIDGET (self)); if (x >= LABEL_MARGIN && y >= 0.0 && x < widget_width - LABEL_MARGIN_RIGHT && y < widget_height - LABEL_MARGIN) gtk_widget_set_cursor_from_name (GTK_WIDGET (self), "crosshair"); else gtk_widget_set_cursor (GTK_WIDGET (self), NULL); refresh_overlay (self); gtk_widget_queue_allocate (GTK_WIDGET (self)); } static void motion_enter (BzDataGraph *self, gdouble x, gdouble y, GtkEventControllerMotion *controller) { self->motion_x = x; self->motion_y = y; update_cursor (self, x, y); } static void motion_event (BzDataGraph *self, gdouble x, gdouble y, GtkEventControllerMotion *controller) { self->motion_x = x; self->motion_y = y; update_cursor (self, x, y); } static void motion_leave (BzDataGraph *self, GtkEventControllerMotion *controller) { self->motion_x = -1.0; self->motion_y = -1.0; update_cursor (self, -1.0, -1.0); } static void gesture_begin (BzDataGraph *self, double start_x, double start_y, GtkGestureDrag *gesture) { self->motion_x = start_x; self->motion_y = start_y; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void gesture_update (BzDataGraph *self, double offset_x, double offset_y, GtkGestureDrag *gesture) { double start_x, start_y; gtk_gesture_drag_get_start_point (gesture, &start_x, &start_y); self->motion_x = start_x + offset_x; self->motion_y = start_y + offset_y; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void gesture_end (BzDataGraph *self, double offset_x, double offset_y, GtkGestureDrag *gesture) { gtk_widget_queue_draw (GTK_WIDGET (self)); } static void bz_data_graph_init (BzDataGraph *self) { GtkWidget *inner_box = NULL; GtkWidget *label2_box = NULL; GtkWidget *icon_image = NULL; self->style_manager = adw_style_manager_get_default (); g_signal_connect_swapped (self->style_manager, "notify::dark", G_CALLBACK (on_style_changed), self); g_signal_connect_swapped (self->style_manager, "notify::accent-color", G_CALLBACK (on_style_changed), self); self->motion = gtk_event_controller_motion_new (); g_signal_connect_swapped (self->motion, "enter", G_CALLBACK (motion_enter), self); g_signal_connect_swapped (self->motion, "motion", G_CALLBACK (motion_event), self); g_signal_connect_swapped (self->motion, "leave", G_CALLBACK (motion_leave), self); gtk_widget_add_controller (GTK_WIDGET (self), self->motion); self->gesture = gtk_gesture_drag_new (); gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (self->gesture), TRUE); g_signal_connect_swapped (self->gesture, "drag-begin", G_CALLBACK (gesture_begin), self); g_signal_connect_swapped (self->gesture, "drag-update", G_CALLBACK (gesture_update), self); g_signal_connect_swapped (self->gesture, "drag-end", G_CALLBACK (gesture_end), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (self->gesture)); self->motion_x = -1.0; self->motion_y = -1.0; self->rounded_axis_max = 0.0; self->tooltip_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_widget_add_css_class (self->tooltip_box, "card"); gtk_widget_add_css_class (self->tooltip_box, "floating-tooltip"); inner_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_widget_set_margin_start (inner_box, 12); gtk_widget_set_margin_end (inner_box, 12); gtk_widget_set_margin_top (inner_box, 12); gtk_widget_set_margin_bottom (inner_box, 12); self->tooltip_label1 = gtk_label_new (""); gtk_widget_add_css_class (self->tooltip_label1, "heading"); gtk_label_set_xalign (GTK_LABEL (self->tooltip_label1), 0.0); gtk_box_append (GTK_BOX (inner_box), self->tooltip_label1); label2_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); icon_image = gtk_image_new_from_icon_name ("square-filled-symbolic"); gtk_widget_add_css_class (icon_image, "accent"); gtk_box_append (GTK_BOX (label2_box), icon_image); self->tooltip_prefix_label = gtk_label_new (""); gtk_widget_add_css_class (self->tooltip_prefix_label, "body"); gtk_widget_add_css_class (self->tooltip_prefix_label, "dim-label"); gtk_label_set_xalign (GTK_LABEL (self->tooltip_prefix_label), 0.0); gtk_box_append (GTK_BOX (label2_box), self->tooltip_prefix_label); self->tooltip_label2 = gtk_label_new (""); gtk_widget_add_css_class (self->tooltip_label2, "monospace"); gtk_widget_add_css_class (self->tooltip_label2, "dimmed"); gtk_label_set_xalign (GTK_LABEL (self->tooltip_label2), 0.0); gtk_box_append (GTK_BOX (label2_box), self->tooltip_label2); gtk_box_append (GTK_BOX (inner_box), label2_box); gtk_box_append (GTK_BOX (self->tooltip_box), inner_box); gtk_widget_set_parent (self->tooltip_box, GTK_WIDGET (self)); } GtkWidget * bz_data_graph_new (void) { return g_object_new (BZ_TYPE_DATA_GRAPH, NULL); } GListModel * bz_data_graph_get_model (BzDataGraph *self) { g_return_val_if_fail (BZ_IS_DATA_GRAPH (self), NULL); return self->model; } const char * bz_data_graph_get_independent_axis_label (BzDataGraph *self) { g_return_val_if_fail (BZ_IS_DATA_GRAPH (self), NULL); return self->independent_axis_label; } const char * bz_data_graph_get_dependent_axis_label (BzDataGraph *self) { g_return_val_if_fail (BZ_IS_DATA_GRAPH (self), NULL); return self->dependent_axis_label; } const char * bz_data_graph_get_tooltip_prefix (BzDataGraph *self) { g_return_val_if_fail (BZ_IS_DATA_GRAPH (self), NULL); return self->tooltip_prefix; } int bz_data_graph_get_independent_decimals (BzDataGraph *self) { g_return_val_if_fail (BZ_IS_DATA_GRAPH (self), 0); return self->independent_decimals; } int bz_data_graph_get_dependent_decimals (BzDataGraph *self) { g_return_val_if_fail (BZ_IS_DATA_GRAPH (self), 0); return self->dependent_decimals; } double bz_data_graph_get_transition_progress (BzDataGraph *self) { g_return_val_if_fail (BZ_IS_DATA_GRAPH (self), 0.0); return self->transition_progress; } void bz_data_graph_set_model (BzDataGraph *self, GListModel *model) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model)); if (self->model != NULL) g_signal_handlers_disconnect_by_func ( self->model, items_changed, self); g_clear_object (&self->model); if (model != NULL) self->model = g_object_ref (model); self->allocated_width = -1; self->allocated_height = -1; gtk_widget_queue_allocate (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); } void bz_data_graph_set_independent_axis_label (BzDataGraph *self, const char *independent_axis_label) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); g_clear_pointer (&self->independent_axis_label, g_free); if (independent_axis_label != NULL) self->independent_axis_label = g_strdup (independent_axis_label); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INDEPENDENT_AXIS_LABEL]); } void bz_data_graph_set_dependent_axis_label (BzDataGraph *self, const char *dependent_axis_label) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); g_clear_pointer (&self->dependent_axis_label, g_free); if (dependent_axis_label != NULL) self->dependent_axis_label = g_strdup (dependent_axis_label); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEPENDENT_AXIS_LABEL]); } void bz_data_graph_set_tooltip_prefix (BzDataGraph *self, const char *tooltip_prefix) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); g_clear_pointer (&self->tooltip_prefix, g_free); if (tooltip_prefix != NULL) self->tooltip_prefix = g_strdup (tooltip_prefix); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TOOLTIP_PREFIX]); } void bz_data_graph_set_independent_decimals (BzDataGraph *self, int independent_decimals) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); self->independent_decimals = CLAMP (independent_decimals, -1, 4); gtk_widget_queue_allocate (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INDEPENDENT_DECIMALS]); } void bz_data_graph_set_dependent_decimals (BzDataGraph *self, int dependent_decimals) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); self->dependent_decimals = CLAMP (dependent_decimals, -1, 4); gtk_widget_queue_allocate (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEPENDENT_DECIMALS]); } void bz_data_graph_set_transition_progress (BzDataGraph *self, double transition_progress) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); self->transition_progress = transition_progress; refresh_graph (self); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TRANSITION_PROGRESS]); } void bz_data_graph_animate_open (BzDataGraph *self) { g_return_if_fail (BZ_IS_DATA_GRAPH (self)); self->wants_animate_open = TRUE; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void items_changed (GListModel *model, guint position, guint removed, guint added, BzDataGraph *self) { gtk_widget_queue_allocate (GTK_WIDGET (self)); } static double calculate_axis_tick_value (double value, gboolean round_up) { double exponent = 0.0; double fraction = 0.0; double rounded_axis_fraction = 0.0; exponent = floor (log10 (value)); fraction = value / pow (10, exponent); if (round_up) { if (fraction <= 1.0) rounded_axis_fraction = 1.0; else if (fraction <= 2.0) rounded_axis_fraction = 2.0; else if (fraction <= 5.0) rounded_axis_fraction = 5.0; else rounded_axis_fraction = 10.0; } else if (fraction < 1.5) rounded_axis_fraction = 1.0; else if (fraction < 3.0) rounded_axis_fraction = 2.0; else if (fraction < 7.0) rounded_axis_fraction = 5.0; else rounded_axis_fraction = 10.0; return rounded_axis_fraction * pow (10, exponent); } static void refresh_path (BzDataGraph *self, double width, double height) { guint n_items = 0; double min_independent = 0.0; double max_independent = 0.0; double max_dependent = 0.0; PangoContext *pango = NULL; PangoFontMetrics *metrics = NULL; double font_height = 0.0; int independent_label_step = 0; g_autoptr (GskPathBuilder) curve_builder = NULL; g_autoptr (GtkSnapshot) snapshot = NULL; g_autoptr (GskPathBuilder) grid_builder = NULL; g_autoptr (GskPath) grid = NULL; g_autoptr (GskStroke) grid_stroke = NULL; double rounded_axis_max = 0.0; double tick_spacing = 0.0; int num_ticks = 0; g_clear_pointer (&self->path, gsk_path_unref); g_clear_pointer (&self->path_measure, gsk_path_measure_unref); g_clear_pointer (&self->other, gsk_render_node_unref); if (self->model == NULL) return; if (width < LABEL_MARGIN || height < LABEL_MARGIN) return; n_items = g_list_model_get_n_items (self->model); if (n_items <= 1) return; for (guint i = 0; i < n_items; i++) { g_autoptr (BzDataPoint) point = NULL; double independent = 0.0; double dependent = 0.0; point = g_list_model_get_item (self->model, i); independent = bz_data_point_get_independent (point); dependent = bz_data_point_get_dependent (point); if (i == 0) { min_independent = independent; max_independent = independent; max_dependent = dependent; } else { min_independent = MIN (independent, min_independent); max_independent = MAX (independent, max_independent); max_dependent = MAX (dependent, max_dependent); } } rounded_axis_max = calculate_axis_tick_value (max_dependent, TRUE); pango = gtk_widget_get_pango_context (GTK_WIDGET (self)); metrics = pango_context_get_metrics (pango, NULL, NULL); font_height = (double) (int) PANGO_PIXELS_CEIL (pango_font_metrics_get_height (metrics)); g_clear_pointer (&metrics, pango_font_metrics_unref); num_ticks = MIN (5, floor (height / (font_height + 25.0))); if (num_ticks < 2) num_ticks = 2; tick_spacing = calculate_axis_tick_value (rounded_axis_max / (double) num_ticks, FALSE); if (tick_spacing == 0.0) tick_spacing = 1.0; rounded_axis_max = ceil (max_dependent / tick_spacing) * tick_spacing; self->rounded_axis_max = rounded_axis_max; independent_label_step = MAX (1, n_items / MAX (1, floor (width / MAX (font_height + 10.0, LABEL_MARGIN)))) * 1.5; curve_builder = gsk_path_builder_new (); snapshot = gtk_snapshot_new (); grid_builder = gsk_path_builder_new (); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (LABEL_MARGIN, 0.0)); for (guint i = 0; i < n_items; i++) { g_autoptr (BzDataPoint) point = NULL; double independent = 0.0; double dependent = 0.0; double x = 0.0; double y = 0.0; point = g_list_model_get_item (self->model, i); independent = bz_data_point_get_independent (point); dependent = bz_data_point_get_dependent (point); x = (independent - min_independent) / (max_independent - min_independent) * width; y = (1.0 - dependent / rounded_axis_max) * height; if (i == 0) gsk_path_builder_move_to (curve_builder, x, y); else gsk_path_builder_line_to (curve_builder, x, y); if (i % independent_label_step == 0) { const char *label = NULL; char buf[32] = { 0 }; g_autoptr (PangoLayout) layout = NULL; PangoRectangle extents; label = bz_data_point_get_label (point); if (label == NULL) { switch (self->independent_decimals) { case 0: g_snprintf (buf, sizeof (buf), "%d", (int) round (independent)); break; case 1: g_snprintf (buf, sizeof (buf), "%.1f", independent); break; case 2: g_snprintf (buf, sizeof (buf), "%.2f", independent); break; case 3: g_snprintf (buf, sizeof (buf), "%.3f", independent); break; default: g_snprintf (buf, sizeof (buf), "%f", independent); break; } label = buf; } layout = pango_layout_new (pango); pango_layout_set_text (layout, label, -1); pango_layout_get_pixel_extents (layout, NULL, &extents); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, height + LABEL_MARGIN / 10.0)); gtk_snapshot_rotate (snapshot, -LABEL_MARGIN_RIGHT); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (-extents.width, 0)); gtk_snapshot_append_layout (snapshot, layout, &(GdkRGBA){ 1.0, 1.0, 1.0, 1.0 }); gtk_snapshot_restore (snapshot); gsk_path_builder_move_to (grid_builder, x, height); gsk_path_builder_line_to (grid_builder, x, height + TICK_LENGTH); } } gsk_path_builder_move_to (grid_builder, 0.0, height); gsk_path_builder_line_to (grid_builder, width, height); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (-LABEL_MARGIN * 0.75, -font_height / 2.0)); for (double value = 0.0; value <= rounded_axis_max; value += tick_spacing) { char buf[32] = { 0 }; g_autoptr (PangoLayout) layout = NULL; double y_pos = (1.0 - value / rounded_axis_max) * height; switch (self->dependent_decimals) { case 0: g_snprintf (buf, sizeof (buf), "%d", (int) round (value)); break; case 1: g_snprintf (buf, sizeof (buf), "%.1f", value); break; case 2: g_snprintf (buf, sizeof (buf), "%.2f", value); break; case 3: g_snprintf (buf, sizeof (buf), "%.3f", value); break; default: g_snprintf (buf, sizeof (buf), "%f", value); break; } layout = pango_layout_new (pango); pango_layout_set_text (layout, buf, -1); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (0, y_pos)); gtk_snapshot_append_layout (snapshot, layout, &(GdkRGBA){ 1.0, 1.0, 1.0, 1.0 }); gtk_snapshot_restore (snapshot); gsk_path_builder_move_to (grid_builder, -TICK_LENGTH, y_pos); gsk_path_builder_line_to (grid_builder, 0.0, y_pos); } gtk_snapshot_restore (snapshot); gsk_path_builder_move_to (grid_builder, 0.0, 0.0); gsk_path_builder_line_to (grid_builder, 0.0, height); grid = gsk_path_builder_to_path (grid_builder); grid_stroke = gsk_stroke_new (1.0); gtk_snapshot_append_stroke (snapshot, grid, grid_stroke, &(GdkRGBA){ 1.0, 1.0, 1.0, 1.0 }); gtk_snapshot_restore (snapshot); self->path = gsk_path_builder_to_path (curve_builder); self->path_measure = gsk_path_measure_new (self->path); self->other = gtk_snapshot_to_node (snapshot); } static void refresh_graph (BzDataGraph *self) { double widget_width = 0.0; double widget_height = 0.0; AdwStyleManager *style_manager = NULL; g_autoptr (GdkRGBA) accent_color = NULL; GdkRGBA widget_color = { 0 }; g_autoptr (GskPath) transitioning = NULL; g_autoptr (GskStroke) stroke = NULL; g_autoptr (GtkSnapshot) snapshot = NULL; if (self->path == NULL) { g_clear_pointer (&self->graph, gsk_render_node_unref); return; } widget_width = gtk_widget_get_width (GTK_WIDGET (self)); (void) widget_width; widget_height = gtk_widget_get_height (GTK_WIDGET (self)); style_manager = adw_style_manager_get_default (); accent_color = adw_style_manager_get_accent_color_rgba (style_manager); gtk_widget_get_color (GTK_WIDGET (self), &widget_color); if (self->transition_progress > 0.0 && self->transition_progress < 1.0) { GskPathPoint point0 = { 0 }; double path_distance = 0.0; GskPathPoint point1 = { 0 }; g_autoptr (GskPathBuilder) builder = NULL; gsk_path_get_start_point (self->path, &point0); path_distance = gsk_path_measure_get_length (self->path_measure) * self->transition_progress; gsk_path_measure_get_point (self->path_measure, path_distance, &point1); builder = gsk_path_builder_new (); gsk_path_builder_add_segment (builder, self->path, &point0, &point1); transitioning = gsk_path_builder_to_path (builder); } stroke = gsk_stroke_new (3.0); gsk_stroke_set_line_cap (stroke, GSK_LINE_CAP_ROUND); snapshot = gtk_snapshot_new (); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (LABEL_MARGIN, 0.0)); if (self->transition_progress > 0.0) { g_autoptr (GskPathBuilder) builder = NULL; GskPathPoint point0 = { 0 }; GskPathPoint point1 = { 0 }; graphene_point_t start_position = { 0 }; graphene_point_t end_position = { 0 }; g_autoptr (GskPath) path = NULL; const GskColorStop gradient_stops[] = { { 0.0, { .red = accent_color->red, .green = accent_color->green, .blue = accent_color->blue, .alpha = 0.75, }, }, { 1.0, { .red = accent_color->red, .green = accent_color->green, .blue = accent_color->blue, .alpha = 0.0, }, }, }; const GskColorStop hfadeout_mask_stops[] = { { 0.0, { .red = 0.0, .green = 0.0, .blue = 0.0, .alpha = 1.0, }, }, { 0.75, { .red = 0.0, .green = 0.0, .blue = 0.0, .alpha = 1.0, }, }, { 1.0, { .red = 0.0, .green = 0.0, .blue = 0.0, .alpha = 0.0, }, }, }; gtk_snapshot_append_stroke ( snapshot, transitioning != NULL ? transitioning : self->path, stroke, accent_color); /* Gradient under the graph line */ builder = gsk_path_builder_new (); gsk_path_get_start_point ( transitioning != NULL ? transitioning : self->path, &point0); gsk_path_point_get_position ( &point0, transitioning != NULL ? transitioning : self->path, &start_position); gsk_path_get_end_point ( transitioning != NULL ? transitioning : self->path, &point1); gsk_path_point_get_position ( &point1, transitioning != NULL ? transitioning : self->path, &end_position); gsk_path_builder_move_to (builder, start_position.x, start_position.y); gsk_path_builder_add_segment ( builder, transitioning != NULL ? transitioning : self->path, &point0, &point1); gsk_path_builder_move_to (builder, end_position.x, end_position.y); /* close the loop for `gtk_snapshot_push_fill` */ gsk_path_builder_line_to (builder, end_position.x, widget_height - LABEL_MARGIN); gsk_path_builder_line_to (builder, start_position.x, widget_height - LABEL_MARGIN); gsk_path_builder_line_to (builder, start_position.x, start_position.y); path = gsk_path_builder_to_path (builder); gtk_snapshot_push_fill ( snapshot, path, GSK_FILL_RULE_WINDING); gtk_snapshot_push_mask (snapshot, GSK_MASK_MODE_ALPHA); gtk_snapshot_append_linear_gradient ( snapshot, &GRAPHENE_RECT_INIT ( 0.0, 0.0, end_position.x, widget_height - LABEL_MARGIN), &GRAPHENE_POINT_INIT (0.0, 0.0), &GRAPHENE_POINT_INIT (end_position.x, 0.0), hfadeout_mask_stops, G_N_ELEMENTS (hfadeout_mask_stops)); gtk_snapshot_pop (snapshot); /* Push Mask (mask) */ gtk_snapshot_append_linear_gradient ( snapshot, &GRAPHENE_RECT_INIT ( 0.0, 0.0, end_position.x, widget_height - LABEL_MARGIN), &GRAPHENE_POINT_INIT (0.0, 0.0), &GRAPHENE_POINT_INIT (0.0, widget_height - LABEL_MARGIN), gradient_stops, G_N_ELEMENTS (gradient_stops)); gtk_snapshot_pop (snapshot); /* Push Mask (image) */ gtk_snapshot_pop (snapshot); /* Push Fill */ } gtk_snapshot_restore (snapshot); g_clear_pointer (&self->graph, gsk_render_node_unref); self->graph = gtk_snapshot_to_node (snapshot); } static void refresh_overlay (BzDataGraph *self) { double widget_width = 0.0; double widget_height = 0.0; GdkRGBA widget_color = { 0 }; AdwStyleManager *style_manager = NULL; g_autoptr (GdkRGBA) accent_color = NULL; guint n_items = 0; guint hovered_idx = 0; g_autoptr (BzDataPoint) point = NULL; g_autoptr (GskStroke) crosshair_stroke = NULL; double graph_height = 0.0; double graph_width = 0.0; double fraction = 0.0; double point_x = 0.0; double point_y = 0.0; GskRoundedRect rounded_rect = { { { 0 } } }; GdkRGBA line_color = { 0 }; double rounded_axis_max = 0.0; const char *prefix = NULL; g_autofree char *line2_text = NULL; g_autoptr (GtkSnapshot) snapshot = NULL; if (self->path == NULL) { g_clear_pointer (&self->overlay, gsk_render_node_unref); return; } widget_width = gtk_widget_get_width (GTK_WIDGET (self)); widget_height = gtk_widget_get_height (GTK_WIDGET (self)); if (self->motion_x < LABEL_MARGIN || self->motion_y < 0.0 || self->motion_x >= widget_width - LABEL_MARGIN_RIGHT || self->motion_y >= widget_height - LABEL_MARGIN) { g_clear_pointer (&self->overlay, gsk_render_node_unref); return; } gtk_widget_get_color (GTK_WIDGET (self), &widget_color); style_manager = adw_style_manager_get_default (); accent_color = adw_style_manager_get_accent_color_rgba (style_manager); n_items = g_list_model_get_n_items (self->model); graph_width = widget_width - LABEL_MARGIN - LABEL_MARGIN_RIGHT; fraction = (self->motion_x - LABEL_MARGIN) / graph_width; hovered_idx = floor ((double) n_items * fraction); if (hovered_idx >= n_items) hovered_idx = n_items - 1; point = g_list_model_get_item (self->model, hovered_idx); if (self->rounded_axis_max > 0.0) rounded_axis_max = self->rounded_axis_max; else { double max_dependent = 0.0; for (guint i = 0; i < n_items; i++) { g_autoptr (BzDataPoint) p = g_list_model_get_item (self->model, i); double dep = bz_data_point_get_dependent (p); if (i == 0 || dep > max_dependent) max_dependent = dep; } rounded_axis_max = calculate_axis_tick_value (max_dependent, TRUE); } snapshot = gtk_snapshot_new (); graph_height = widget_height - LABEL_MARGIN; point_x = ((double) hovered_idx / (double) (n_items - 1)) * graph_width + LABEL_MARGIN; point_y = (1.0 - bz_data_point_get_dependent (point) / rounded_axis_max) * graph_height; line_color = widget_color; line_color.alpha = 0.5; crosshair_stroke = gsk_stroke_new (1.0); #define APPEND_LINE(x0, y0, x1, y1, color) \ G_STMT_START \ { \ g_autoptr (GskPathBuilder) builder = NULL; \ g_autoptr (GskPath) path = NULL; \ \ builder = gsk_path_builder_new (); \ gsk_path_builder_move_to (builder, (x0), (y0)); \ gsk_path_builder_line_to (builder, (x1), (y1)); \ \ path = gsk_path_builder_to_path (builder); \ gtk_snapshot_append_stroke (snapshot, path, crosshair_stroke, (color)); \ } \ G_STMT_END APPEND_LINE (self->motion_x, 0.0, self->motion_x, widget_height - LABEL_MARGIN, &line_color); #undef APPEND_LINE gsk_rounded_rect_init_from_rect ( &rounded_rect, &GRAPHENE_RECT_INIT (point_x - 4.0, point_y - 4.0, 8.0, 8.0), 4.0); gtk_snapshot_push_rounded_clip (snapshot, &rounded_rect); gtk_snapshot_append_color (snapshot, accent_color, &rounded_rect.bounds); gtk_snapshot_pop (snapshot); g_clear_pointer (&self->overlay, gsk_render_node_unref); self->overlay = gtk_snapshot_to_node (snapshot); gtk_label_set_label (GTK_LABEL (self->tooltip_label1), bz_data_point_get_label (point)); prefix = self->tooltip_prefix != NULL ? self->tooltip_prefix : ""; gtk_label_set_label (GTK_LABEL (self->tooltip_prefix_label), prefix); line2_text = g_strdup_printf ("%'.0f", bz_data_point_get_dependent (point)); gtk_label_set_label (GTK_LABEL (self->tooltip_label2), line2_text); } ���������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-data-graph.h�������������������������������������������������������0000664�0000000�0000000�00000004613�15240005042�0020723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-data-graph.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_DATA_GRAPH (bz_data_graph_get_type ()) G_DECLARE_FINAL_TYPE (BzDataGraph, bz_data_graph, BZ, DATA_GRAPH, GtkWidget) GtkWidget * bz_data_graph_new (void); GListModel * bz_data_graph_get_model (BzDataGraph *self); const char * bz_data_graph_get_independent_axis_label (BzDataGraph *self); const char * bz_data_graph_get_dependent_axis_label (BzDataGraph *self); int bz_data_graph_get_independent_decimals (BzDataGraph *self); int bz_data_graph_get_dependent_decimals (BzDataGraph *self); double bz_data_graph_get_transition_progress (BzDataGraph *self); void bz_data_graph_set_model (BzDataGraph *self, GListModel *model); void bz_data_graph_set_independent_axis_label (BzDataGraph *self, const char *independent_axis_label); void bz_data_graph_set_dependent_axis_label (BzDataGraph *self, const char *dependent_axis_label); void bz_data_graph_set_independent_decimals (BzDataGraph *self, int independent_decimals); void bz_data_graph_set_dependent_decimals (BzDataGraph *self, int dependent_decimals); const char *bz_data_graph_get_tooltip_prefix (BzDataGraph *self); void bz_data_graph_set_tooltip_prefix (BzDataGraph *self, const char *tooltip_prefix); void bz_data_graph_set_transition_progress (BzDataGraph *self, double transition_progress); void bz_data_graph_animate_open (BzDataGraph *self); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-data-point.txt�����������������������������������������������������0000664�0000000�0000000�00000000326�15240005042�0021340�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=data_point parent-prefix=g parent-name=object author=AUTOGEN property=independent double G_TYPE_DOUBLE double property=dependent double G_TYPE_DOUBLE double property=label char G_TYPE_STRING string ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-decorated-screenshot.blp�������������������������������������������0000664�0000000�0000000�00000000417�15240005042�0023344�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzDecoratedScreenshot: Button { halign: center; focus-on-click: false; styles [ "flat", "decorated-screenshot" ] child: Gtk.Picture { paintable: bind template.async-texture; content-fit: contain; halign: center; }; }�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-decorated-screenshot.c���������������������������������������������0000664�0000000�0000000�00000011666�15240005042�0023021�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-decorated-screenshot.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-decorated-screenshot.h" #include "bz-screenshot.h" #include <glib/gi18n.h> struct _BzDecoratedScreenshot { GtkButton parent_instance; BzAsyncTexture *async_texture; /* Template widgets */ }; G_DEFINE_FINAL_TYPE (BzDecoratedScreenshot, bz_decorated_screenshot, GTK_TYPE_BUTTON) enum { PROP_0, PROP_ASYNC_TEXTURE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_decorated_screenshot_dispose (GObject *object) { BzDecoratedScreenshot *self = BZ_DECORATED_SCREENSHOT (object); g_clear_pointer (&self->async_texture, g_object_unref); gtk_widget_dispose_template (GTK_WIDGET (self), BZ_TYPE_DECORATED_SCREENSHOT); G_OBJECT_CLASS (bz_decorated_screenshot_parent_class)->dispose (object); } static void bz_decorated_screenshot_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzDecoratedScreenshot *self = BZ_DECORATED_SCREENSHOT (object); switch (prop_id) { case PROP_ASYNC_TEXTURE: g_value_set_object (value, bz_decorated_screenshot_get_async_texture (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_decorated_screenshot_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzDecoratedScreenshot *self = BZ_DECORATED_SCREENSHOT (object); switch (prop_id) { case PROP_ASYNC_TEXTURE: bz_decorated_screenshot_set_async_texture (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_decorated_screenshot_class_init (BzDecoratedScreenshotClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_decorated_screenshot_set_property; object_class->get_property = bz_decorated_screenshot_get_property; object_class->dispose = bz_decorated_screenshot_dispose; props[PROP_ASYNC_TEXTURE] = g_param_spec_object ( "async-texture", NULL, NULL, BZ_TYPE_ASYNC_TEXTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-decorated-screenshot.ui"); } static void on_enter_notify (GtkEventController *controller, gpointer user_data) { g_autoptr (GdkCursor) cursor = gdk_cursor_new_from_name ("pointer", NULL); gtk_widget_set_cursor (GTK_WIDGET (user_data), cursor); } static void on_leave_notify (GtkEventController *controller, gpointer user_data) { gtk_widget_set_cursor (GTK_WIDGET (user_data), NULL); } static void bz_decorated_screenshot_init (BzDecoratedScreenshot *self) { GtkEventController *enter_leave = gtk_event_controller_motion_new (); gtk_widget_init_template (GTK_WIDGET (self)); g_signal_connect (enter_leave, "enter", G_CALLBACK (on_enter_notify), GTK_WIDGET (self)); g_signal_connect (enter_leave, "leave", G_CALLBACK (on_leave_notify), GTK_WIDGET (self)); gtk_widget_add_controller (GTK_WIDGET (self), enter_leave); } BzDecoratedScreenshot * bz_decorated_screenshot_new (void) { return g_object_new (BZ_TYPE_DECORATED_SCREENSHOT, NULL); } BzAsyncTexture * bz_decorated_screenshot_get_async_texture (BzDecoratedScreenshot *self) { g_return_val_if_fail (BZ_IS_DECORATED_SCREENSHOT (self), NULL); return self->async_texture; } void bz_decorated_screenshot_set_async_texture (BzDecoratedScreenshot *self, BzAsyncTexture *async_texture) { g_return_if_fail (BZ_IS_DECORATED_SCREENSHOT (self)); g_clear_pointer (&self->async_texture, g_object_unref); if (async_texture != NULL) self->async_texture = g_object_ref (async_texture); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ASYNC_TEXTURE]); } /* End of bz-decorated-screenshot.c */ ��������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-decorated-screenshot.h���������������������������������������������0000664�0000000�0000000�00000002561�15240005042�0023020�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-decorated-screenshot.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-async-texture.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_DECORATED_SCREENSHOT (bz_decorated_screenshot_get_type ()) G_DECLARE_FINAL_TYPE (BzDecoratedScreenshot, bz_decorated_screenshot, BZ, DECORATED_SCREENSHOT, GtkButton) BzDecoratedScreenshot * bz_decorated_screenshot_new (void); BzAsyncTexture * bz_decorated_screenshot_get_async_texture (BzDecoratedScreenshot *self); void bz_decorated_screenshot_set_async_texture (BzDecoratedScreenshot *self, BzAsyncTexture *async_texture); G_END_DECLS /* End of bz-decorated-screenshot.h */ �����������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-developer-badge.blp������������������������������������������������0000664�0000000�0000000�00000003115�15240005042�0022262�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzDeveloperBadge: Box { orientation: horizontal; spacing: 3; halign: start; visible: bind $invert_boolean($is_null(template.entry as <$BzEntry>.developer) as <bool>) as <bool>; Label developer_label { label: bind $get_developer_link(template.entry, template.entry as <$BzEntry>.verification-status) as <string>; use-markup: true; xalign: 0.0; wrap: true; lines: 3; ellipsize: end; wrap-mode: word_char; natural-wrap-mode: word; selectable: true; styles [ "app-developer", ] } MenuButton info_button { icon-name: bind $get_icon_name(template.entry as <$BzEntry>.verification-status) as <string>; popover: popover; visible: bind $invert_boolean($is_null(template.entry as <$BzEntry>.verification-status) as <bool>) as <bool>; styles [ "developer-badge", ] has-tooltip: true; tooltip-text: bind $get_verified_tooltip(template.entry as <$BzEntry>.verification-status) as <string>; EventControllerMotion { enter => $on_info_button_enter(); leave => $on_info_button_leave(); } } } Popover popover { has-arrow: true; position: right; child: Box { orientation: vertical; margin-top: 12; margin-bottom: 12; margin-start: 12; margin-end: 12; Label popover_label { label: bind $get_popover_text(template.entry, template.entry as <$BzEntry>.verification-status) as <string>; wrap: true; xalign: 0.0; max-width-chars: 40; use-markup: true; activate-link => $on_popover_label_activate_link(); } }; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-developer-badge.c��������������������������������������������������0000664�0000000�0000000�00000032010�15240005042�0021723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-developer-badge.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-developer-badge.h" #include "bz-verification-status.h" struct _BzDeveloperBadge { GtkBox parent_instance; BzEntry *entry; GtkLabel *developer_label; GtkMenuButton *info_button; GtkPopover *popover; GtkLabel *popover_label; }; G_DEFINE_FINAL_TYPE (BzDeveloperBadge, bz_developer_badge, GTK_TYPE_BOX) enum { PROP_0, PROP_ENTRY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static char * get_developer_name (gpointer object, GObject *entry) { if (entry == NULL || !BZ_IS_ENTRY (entry)) return NULL; return g_strdup (bz_entry_get_developer (BZ_ENTRY (entry))); } static char * get_icon_name (gpointer object, GObject *status) { gboolean verified = FALSE; if (status == NULL) return g_strdup ("info-outline-symbolic"); g_object_get (status, "verified", &verified, NULL); return g_strdup (verified ? "verified-checkmark-symbolic" : "info-outline-symbolic"); } static char * get_verified_tooltip (gpointer object, GObject *status) { gboolean verified = FALSE; if (status == NULL) return g_strdup (_ ("Not Verified")); g_object_get (status, "verified", &verified, NULL); return g_strdup (verified ? _ ("Verified") : _ ("Not Verified")); } static char * format_app_id (const char *app_id) { return g_strdup_printf ("<b>%s</b>", app_id); } static char * format_website_url (const char *website) { return g_strdup_printf ("<b><a href='https://%s' title='https://%s'>%s</a></b>", website, website, website); } static char * format_provider_name (const char *login_provider) { if (g_strcmp0 (login_provider, "github") == 0) return g_strdup ("GitHub"); else if (g_strcmp0 (login_provider, "gitlab") == 0) return g_strdup ("GitLab"); else if (g_strcmp0 (login_provider, "gnome") == 0) return g_strdup ("GNOME GitLab"); else if (g_strcmp0 (login_provider, "kde") == 0) return g_strdup ("KDE GitLab"); else return g_strdup (login_provider); } static char * format_provider_url (const char *login_provider, const char *login_name) { if (g_strcmp0 (login_provider, "github") == 0) return g_strdup_printf ("https://github.com/%s", login_name); else if (g_strcmp0 (login_provider, "gitlab") == 0) return g_strdup_printf ("https://gitlab.com/%s", login_name); else if (g_strcmp0 (login_provider, "gnome") == 0) return g_strdup_printf ("https://gitlab.gnome.org/%s", login_name); else if (g_strcmp0 (login_provider, "kde") == 0) return g_strdup_printf ("https://invent.kde.org/%s", login_name); else return NULL; } static char * get_developer_link (gpointer object, BzEntry *entry, BzVerificationStatus *status) { const char *dev = NULL; const char *method = NULL; const char *login_name = NULL; const char *login_provider = NULL; const char *website = NULL; gboolean verified = FALSE; g_autofree char *escaped_dev = NULL; if (entry == NULL || !BZ_IS_ENTRY (entry)) return NULL; dev = bz_entry_get_developer (entry); if (dev == NULL) return NULL; escaped_dev = g_markup_escape_text (dev, -1); if (status == NULL) return g_steal_pointer (&escaped_dev); g_object_get (status, "verified", &verified, "method", &method, "login-name", &login_name, "login-provider", &login_provider, "website", &website, NULL); if (!verified) return g_steal_pointer (&escaped_dev); if (g_strcmp0 (method, "login_provider") == 0 && login_name != NULL && login_provider != NULL) { g_autofree char *url = NULL; url = format_provider_url (login_provider, login_name); if (url != NULL) return g_strdup_printf ("<a href='%s' title='%s'>%s</a>", url, url, escaped_dev); } if (g_strcmp0 (method, "website") == 0 && website != NULL && *website != '\0') return g_strdup_printf ("<a href='https://%s' title='https://%s'>%s</a>", website, website, escaped_dev); return g_steal_pointer (&escaped_dev); } static char * get_popover_text (gpointer object, GObject *entry_obj, GObject *status_obj) { BzVerificationStatus *status = NULL; const char *app_id = NULL; const char *website = NULL; const char *method = NULL; const char *login_name = NULL; const char *login_provider = NULL; gboolean verified = FALSE; g_autofree char *formatted_app_id = NULL; g_autofree char *formatted_website = NULL; g_autofree char *provider_name = NULL; if (entry_obj == NULL || !BZ_IS_ENTRY (entry_obj)) return g_strdup (_ ("Developer information not available.")); app_id = bz_entry_get_id (BZ_ENTRY (entry_obj)); formatted_app_id = format_app_id (app_id); if (status_obj == NULL) return g_strdup_printf (_ ("The ownership of the %s app ID has not been verified and it may be a community package."), formatted_app_id); status = BZ_VERIFICATION_STATUS (status_obj); g_object_get (status, "verified", &verified, "method", &method, "website", &website, "login-name", &login_name, "login-provider", &login_provider, NULL); if (!verified) return g_strdup_printf (_ ("The ownership of the %s app ID has not been verified and it may be a community package."), formatted_app_id); if (g_strcmp0 (method, "manual") == 0) return g_strdup_printf (_ ("The ownership of the %s app ID has been manually verified by the Flathub team."), formatted_app_id); if (g_strcmp0 (method, "login_provider") == 0 && login_name != NULL && login_provider != NULL) { g_autofree char *url = NULL; g_autofree char *linked_name = NULL; provider_name = format_provider_name (login_provider); url = format_provider_url (login_provider, login_name); if (url != NULL) linked_name = g_strdup_printf ("<a href='%s' title='%s'>%s</a>", url, url, login_name); else linked_name = g_strdup (login_name); return g_strdup_printf (_ ("The ownership of the %1$s app ID has been verified by <b>%2$s</b> on <b>%3$s</b>."), formatted_app_id, linked_name, provider_name); } if (website != NULL && *website != '\0') { formatted_website = format_website_url (website); return g_strdup_printf (_ ("The ownership of the %1$s app ID has been verified using %2$s."), formatted_app_id, formatted_website); } return g_strdup_printf (_ ("The ownership of the %s app ID has been verified."), formatted_app_id); } static void on_info_button_enter (GtkEventControllerMotion *controller, gdouble x, gdouble y, gpointer user_data) { GtkWidget *widget = GTK_WIDGET (user_data); gtk_widget_set_cursor_from_name (widget, "pointer"); } static void on_info_button_leave (GtkEventControllerMotion *controller, gpointer user_data) { GtkWidget *widget = GTK_WIDGET (user_data); gtk_widget_set_cursor (widget, NULL); } static gboolean on_popover_label_activate_link (GtkLabel *label, const char *uri, BzDeveloperBadge *self) { gtk_popover_popdown (self->popover); return FALSE; } static void bz_developer_badge_dispose (GObject *object) { BzDeveloperBadge *self = BZ_DEVELOPER_BADGE (object); g_clear_object (&self->entry); G_OBJECT_CLASS (bz_developer_badge_parent_class)->dispose (object); } static void bz_developer_badge_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzDeveloperBadge *self = BZ_DEVELOPER_BADGE (object); switch (prop_id) { case PROP_ENTRY: g_value_set_object (value, bz_developer_badge_get_entry (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_developer_badge_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzDeveloperBadge *self = BZ_DEVELOPER_BADGE (object); switch (prop_id) { case PROP_ENTRY: bz_developer_badge_set_entry (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_developer_badge_class_init (BzDeveloperBadgeClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_developer_badge_dispose; object_class->get_property = bz_developer_badge_get_property; object_class->set_property = bz_developer_badge_set_property; props[PROP_ENTRY] = g_param_spec_object ( "entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-developer-badge.ui"); gtk_widget_class_bind_template_child (widget_class, BzDeveloperBadge, developer_label); gtk_widget_class_bind_template_child (widget_class, BzDeveloperBadge, info_button); gtk_widget_class_bind_template_child (widget_class, BzDeveloperBadge, popover); gtk_widget_class_bind_template_child (widget_class, BzDeveloperBadge, popover_label); gtk_widget_class_bind_template_callback (widget_class, on_info_button_enter); gtk_widget_class_bind_template_callback (widget_class, on_info_button_leave); gtk_widget_class_bind_template_callback (widget_class, on_popover_label_activate_link); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, get_developer_name); gtk_widget_class_bind_template_callback (widget_class, get_developer_link); gtk_widget_class_bind_template_callback (widget_class, get_icon_name); gtk_widget_class_bind_template_callback (widget_class, get_verified_tooltip); gtk_widget_class_bind_template_callback (widget_class, get_popover_text); } static void bz_developer_badge_init (BzDeveloperBadge *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_developer_badge_new (void) { return g_object_new (BZ_TYPE_DEVELOPER_BADGE, NULL); } BzEntry * bz_developer_badge_get_entry (BzDeveloperBadge *self) { g_return_val_if_fail (BZ_IS_DEVELOPER_BADGE (self), NULL); return self->entry; } void bz_developer_badge_set_entry (BzDeveloperBadge *self, BzEntry *entry) { BzVerificationStatus *status = NULL; gboolean verified = FALSE; g_return_if_fail (BZ_IS_DEVELOPER_BADGE (self)); g_return_if_fail (entry == NULL || BZ_IS_ENTRY (entry)); if (g_set_object (&self->entry, entry)) { gtk_widget_remove_css_class (GTK_WIDGET (self), "verified"); gtk_widget_remove_css_class (GTK_WIDGET (self), "dimmed"); if (entry != NULL) { g_object_get (entry, "verification-status", &status, NULL); if (status != NULL) { g_object_get (status, "verified", &verified, NULL); g_object_unref (status); } gtk_widget_add_css_class (GTK_WIDGET (self), verified ? "verified" : "dimmed"); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENTRY]); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-developer-badge.h��������������������������������������������������0000664�0000000�0000000�00000002335�15240005042�0021737�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-developer-badge.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_DEVELOPER_BADGE (bz_developer_badge_get_type ()) G_DECLARE_FINAL_TYPE (BzDeveloperBadge, bz_developer_badge, BZ, DEVELOPER_BADGE, GtkButton) GtkWidget *bz_developer_badge_new (void); BzEntry *bz_developer_badge_get_entry (BzDeveloperBadge *self); void bz_developer_badge_set_entry (BzDeveloperBadge *self, BzEntry *entry); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-donations-dialog.blp�����������������������������������������������0000664�0000000�0000000�00000006475�15240005042�0022504�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzDonationsDialog: Adw.Dialog { width-request: 450; follows-content-size: true; title: _("Bazaar Release"); child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: ScrolledWindow { hscrollbar-policy: never; vscrollbar-policy: automatic; propagate-natural-height: true; min-content-height: 500; child: Box { orientation: vertical; Box { orientation: vertical; margin-start: 40; margin-end: 40; margin-top: 20; margin-bottom: 20; Label title { styles [ "title-1", ] wrap: true; justify: center; margin-bottom: 5; selectable: true; } Label subtitle { styles [ "dimmed", ] wrap: true; justify: center; margin-bottom: 15; selectable: true; } $BzAppstreamDescriptionRender { vexpand: true; appstream-description: bind template.release-notes; } Button release_button { styles [ "pill", ] margin-top: 15; margin-start: 25; margin-end: 20; margin-bottom: 15; halign: center; has-tooltip: true; clicked => $release_page_clicked(template); child: Box { orientation: horizontal; spacing: 10; Label { label: _("Full Release Notes"); wrap: true; wrap-mode: word_char; justify: right; } Image { icon-name: "external-link-symbolic"; } }; } } Adw.Bin { styles [ "bz-donations-dialog", ] child: Box { orientation: vertical; margin-start: 25; margin-end: 25; margin-top: 20; margin-bottom: 20; Label { styles [ "title-1", ] margin-top: 10; margin-bottom: 20; halign: center; wrap: true; justify: center; selectable: true; label: _("This release was made possible by users like you!"); } Label { margin-bottom: 20; wrap: true; justify: center; use-markup: true; selectable: true; label: _("I love making Bazaar, but I cannot do it alone. Help support further development by donating on Ko-Fi."); } Button donate_button { styles [ "pill", ] margin-start: 20; margin-end: 20; margin-bottom: 20; halign: center; has-tooltip: true; child: Adw.ButtonContent { label: _("Donate to Bazaar"); icon-name: "heart-filled-symbolic"; }; clicked => $donate_clicked(template); } }; } }; }; }; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-donations-dialog.c�������������������������������������������������0000664�0000000�0000000�00000021672�15240005042�0022145�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-donations-dialog.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include <xmlb.h> #include "bz-appstream-description-render.h" #include "bz-donations-dialog.h" #include "template-callbacks.h" struct _BzDonationsDialog { AdwDialog parent_instance; char *release_notes; char *release_url; AdwBreakpoint *breakpoint; /* Template widgets */ GtkLabel *title; GtkLabel *subtitle; GtkButton *release_button; GtkButton *donate_button; }; G_DEFINE_FINAL_TYPE (BzDonationsDialog, bz_donations_dialog, ADW_TYPE_DIALOG); enum { PROP_0, PROP_RELEASE_NOTES, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static const char *bz_donations_dialog_get_release_notes (BzDonationsDialog *self); static void bz_donations_dialog_dispose (GObject *object) { BzDonationsDialog *self = BZ_DONATIONS_DIALOG (object); g_clear_pointer (&self->release_notes, g_free); g_clear_pointer (&self->release_url, g_free); g_clear_object (&self->breakpoint); G_OBJECT_CLASS (bz_donations_dialog_parent_class)->dispose (object); } static void bz_donations_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzDonationsDialog *self = BZ_DONATIONS_DIALOG (object); switch (prop_id) { case PROP_RELEASE_NOTES: g_value_set_string (value, bz_donations_dialog_get_release_notes (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void donate_clicked (BzDonationsDialog *self, GtkButton *button) { g_app_info_launch_default_for_uri ( DONATE_LINK, NULL, NULL); } static void release_page_clicked (BzDonationsDialog *self, GtkButton *button) { if (self->release_url != NULL) g_app_info_launch_default_for_uri (self->release_url, NULL, NULL); } static void on_map (BzDonationsDialog *self, gpointer user_data) { GtkRoot *root = NULL; gtk_widget_grab_focus (GTK_WIDGET (self->release_button)); root = gtk_widget_get_root (GTK_WIDGET (self)); if (root == NULL || self->breakpoint == NULL) return; adw_application_window_add_breakpoint (ADW_APPLICATION_WINDOW (root), g_object_ref (self->breakpoint)); } static void bz_donations_dialog_class_init (BzDonationsDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->get_property = bz_donations_dialog_get_property; object_class->dispose = bz_donations_dialog_dispose; props[PROP_RELEASE_NOTES] = g_param_spec_string ( "release-notes", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_APPSTREAM_DESCRIPTION_RENDER); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-donations-dialog.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzDonationsDialog, title); gtk_widget_class_bind_template_child (widget_class, BzDonationsDialog, subtitle); gtk_widget_class_bind_template_child (widget_class, BzDonationsDialog, release_button); gtk_widget_class_bind_template_child (widget_class, BzDonationsDialog, donate_button); gtk_widget_class_bind_template_callback (widget_class, donate_clicked); gtk_widget_class_bind_template_callback (widget_class, release_page_clicked); } static void bz_donations_dialog_init (BzDonationsDialog *self) { g_autoptr (GBytes) release_notes_bytes = NULL; g_autoptr (GError) error = NULL; g_autoptr (XbBuilderSource) source = NULL; g_autoptr (XbBuilder) builder = NULL; g_autoptr (XbSilo) silo = NULL; g_autoptr (XbNode) release_node = NULL; g_autoptr (XbNode) url_node = NULL; g_autoptr (XbNode) description_node = NULL; const char *version = NULL; const char *date = NULL; const char *url = NULL; AdwBreakpointCondition *condition = NULL; gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_set_tooltip_text (GTK_WIDGET (self->release_button), RELEASE_PAGE); gtk_widget_set_tooltip_text (GTK_WIDGET (self->donate_button), DONATE_LINK); condition = adw_breakpoint_condition_new_length ( ADW_BREAKPOINT_CONDITION_MAX_WIDTH, 500, ADW_LENGTH_UNIT_PX); self->breakpoint = adw_breakpoint_new (condition); adw_breakpoint_add_setter (self->breakpoint, G_OBJECT (self), "width-request", &(GValue){ G_TYPE_INT, { { .v_int = 350 } } }); g_signal_connect (self, "map", G_CALLBACK (on_map), NULL); release_notes_bytes = g_resources_lookup_data ( "/io/github/kolunmi/Bazaar/release-notes.xml", G_RESOURCE_LOOKUP_FLAGS_NONE, &error); if (release_notes_bytes == NULL) { g_warning ("Failed to load release notes: %s", error->message); return; } source = xb_builder_source_new (); if (!xb_builder_source_load_bytes (source, release_notes_bytes, XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT, &error)) { g_warning ("Failed to load release notes into xmlb: %s", error->message); return; } builder = xb_builder_new (); xb_builder_import_source (builder, source); silo = xb_builder_compile (builder, XB_BUILDER_COMPILE_FLAG_NONE, NULL, &error); if (silo == NULL) { g_warning ("Failed to compile release notes silo: %s", error->message); return; } release_node = xb_silo_query_first (silo, "release", &error); if (release_node == NULL) { g_warning ("Failed to find release node: %s", error != NULL ? error->message : "no error"); g_clear_error (&error); return; } version = xb_node_get_attr (release_node, "version"); date = xb_node_get_attr (release_node, "date"); if (version != NULL) { g_autofree char *title_str = NULL; /* Translators: the %s format specifier will be something along the lines of "0.7.6" etc */ title_str = g_strdup_printf (_ ("What's New in %s?"), version); gtk_label_set_label (self->title, title_str); } if (date != NULL) { g_autofree char *date_full = NULL; g_autoptr (GDateTime) dt = NULL; g_autofree char *subtitle_str = NULL; date_full = g_strdup_printf ("%sT00:00:00Z", date); dt = g_date_time_new_from_iso8601 (date_full, NULL); if (dt != NULL) { /* Translators: this is a release date label, like "Released February 9, 2026" */ subtitle_str = g_date_time_format (dt, _ ("Released %B %-e, %Y")); if (subtitle_str != NULL) gtk_label_set_label (self->subtitle, subtitle_str); } } url_node = xb_silo_query_first (silo, "release/url[@type='details']", &error); if (url_node != NULL) { url = xb_node_get_text (url_node); if (url != NULL) self->release_url = g_strdup (url); } else g_clear_error (&error); description_node = xb_silo_query_first (silo, "release/description", &error); if (description_node != NULL) { self->release_notes = xb_node_export (description_node, XB_NODE_EXPORT_FLAG_INCLUDE_SIBLINGS, &error); if (self->release_notes == NULL) { g_warning ("Failed to export description node: %s", error->message); g_clear_error (&error); } } else { g_warning ("Failed to find description node: %s", error != NULL ? error->message : "no error"); g_clear_error (&error); } if (self->release_notes != NULL) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RELEASE_NOTES]); } AdwDialog * bz_donations_dialog_new (void) { return g_object_new (BZ_TYPE_DONATIONS_DIALOG, NULL); } static const char * bz_donations_dialog_get_release_notes (BzDonationsDialog *self) { g_return_val_if_fail (BZ_IS_DONATIONS_DIALOG (self), NULL); return self->release_notes; } /* End of bz-donations-dialog.c */ ����������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-donations-dialog.h�������������������������������������������������0000664�0000000�0000000�00000002102�15240005042�0022135�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-donations-dialog.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_DONATIONS_DIALOG (bz_donations_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzDonationsDialog, bz_donations_dialog, BZ, DONATIONS_DIALOG, AdwDialog) AdwDialog * bz_donations_dialog_new (void); G_END_DECLS /* End of bz-donations-dialog.h */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-download-worker.c��������������������������������������������������0000664�0000000�0000000�00000040723�15240005042�0022026�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-download-worker.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-download-worker.h" #include "env.h" #include "util.h" struct _BzDownloadWorker { GObject parent_instance; char *name; GSubprocess *subprocess; GHashTable *waiting; GMutex read_mutex; DexFuture *task; BzGuard *write_gate; GMutex write_mutex; }; static void initable_iface_init (GInitableIface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzDownloadWorker, bz_download_worker, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)); enum { PROP_0, PROP_NAME, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * monitor_worker_fiber (GWeakRef *wr); BZ_DEFINE_DATA ( invoke_worker, InvokeWorker, { GWeakRef *self; DexPromise *promise; GFile *src; GFile *dest; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (promise, dex_unref); BZ_RELEASE_DATA (src, g_object_unref); BZ_RELEASE_DATA (dest, g_object_unref)); static DexFuture * invoke_worker_fiber (InvokeWorkerData *data); static void terminate (BzDownloadWorker *self); static void plumb_data_input_stream_read_line_async (GDataInputStream *stream, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); static char * plumb_data_input_stream_read_line_finish (GDataInputStream *stream, GAsyncResult *result, gpointer user_data); static GMutex default_worker_mutex = { 0 }; static GPtrArray *default_workers = NULL; static guint next_default_worker = 0; static void bz_download_worker_dispose (GObject *object) { BzDownloadWorker *self = BZ_DOWNLOAD_WORKER (object); terminate (self); dex_clear (&self->task); g_clear_object (&self->subprocess); g_mutex_clear (&self->write_mutex); bz_clear_guard (&self->write_gate); g_mutex_clear (&self->read_mutex); g_clear_pointer (&self->waiting, g_hash_table_unref); g_clear_pointer (&self->name, g_free); G_OBJECT_CLASS (bz_download_worker_parent_class)->dispose (object); } static void bz_download_worker_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzDownloadWorker *self = BZ_DOWNLOAD_WORKER (object); switch (prop_id) { case PROP_NAME: g_value_set_string (value, bz_download_worker_get_name (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_download_worker_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzDownloadWorker *self = BZ_DOWNLOAD_WORKER (object); switch (prop_id) { case PROP_NAME: bz_download_worker_set_name (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_download_worker_class_init (BzDownloadWorkerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_download_worker_set_property; object_class->get_property = bz_download_worker_get_property; object_class->dispose = bz_download_worker_dispose; props[PROP_NAME] = g_param_spec_string ( "name", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_download_worker_init (BzDownloadWorker *self) { g_mutex_init (&self->read_mutex); g_mutex_init (&self->write_mutex); self->waiting = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, dex_unref); } static gboolean bz_download_worker_initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { BzDownloadWorker *self = BZ_DOWNLOAD_WORKER (initable); self->subprocess = g_subprocess_new ( G_SUBPROCESS_FLAGS_STDIN_PIPE | G_SUBPROCESS_FLAGS_STDOUT_PIPE, error, DL_WORKER_BIN_NAME, NULL); if (self->subprocess == NULL) return FALSE; self->task = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) monitor_worker_fiber, bz_track_weak (self), bz_weak_release); return TRUE; } static void initable_iface_init (GInitableIface *iface) { iface->init = bz_download_worker_initable_init; } BzDownloadWorker * bz_download_worker_new (const char *name, GError **error) { return g_initable_new ( BZ_TYPE_DOWNLOAD_WORKER, NULL, error, "name", name, NULL); } const char * bz_download_worker_get_name (BzDownloadWorker *self) { g_return_val_if_fail (BZ_IS_DOWNLOAD_WORKER (self), NULL); return self->name; } void bz_download_worker_set_name (BzDownloadWorker *self, const char *name) { g_return_if_fail (BZ_IS_DOWNLOAD_WORKER (self)); g_clear_pointer (&self->name, g_free); if (name != NULL) self->name = g_strdup (name); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NAME]); } DexFuture * bz_download_worker_invoke (BzDownloadWorker *self, GFile *src, GFile *dest) { g_autoptr (DexPromise) promise = NULL; g_autoptr (InvokeWorkerData) data = NULL; dex_return_error_if_fail (BZ_IS_DOWNLOAD_WORKER (self)); dex_return_error_if_fail (G_IS_FILE (src)); dex_return_error_if_fail (G_IS_FILE (dest)); promise = dex_promise_new (); data = invoke_worker_data_new (); data->self = bz_track_weak (self); data->promise = dex_ref (promise); data->src = g_object_ref (src); data->dest = g_object_ref (dest); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) invoke_worker_fiber, invoke_worker_data_ref (data), invoke_worker_data_unref)); return DEX_FUTURE (g_steal_pointer (&promise)); } BzDownloadWorker * bz_download_worker_get_default (void) { g_autoptr (GMutexLocker) locker = NULL; BzDownloadWorker *ret = NULL; locker = g_mutex_locker_new (&default_worker_mutex); if (default_workers == NULL) { default_workers = g_ptr_array_new_with_free_func (g_object_unref); for (guint i = 0; i < bz_get_n_download_workers (); i++) { g_autoptr (GError) local_error = NULL; g_autoptr (BzDownloadWorker) worker = NULL; worker = bz_download_worker_new ("default", &local_error); if (worker == NULL) g_warning ("FATAL!!! The default download worker could not be spawned: %s", local_error->message); g_assert (worker != NULL); g_ptr_array_add (default_workers, g_steal_pointer (&worker)); } } /* Check if any of the subprocesses need to be recreated */ for (guint i = 0; i < default_workers->len; i++) { BzDownloadWorker **loc = NULL; loc = (BzDownloadWorker **) &g_ptr_array_index (default_workers, i); if (g_subprocess_get_identifier ((*loc)->subprocess) == NULL) { g_autoptr (GError) local_error = NULL; g_autoptr (BzDownloadWorker) worker = NULL; g_clear_object (loc); worker = bz_download_worker_new ("default", &local_error); if (worker == NULL) g_warning ("FATAL!!! The default download worker could not be spawned: %s", local_error->message); g_assert (worker != NULL); *loc = g_steal_pointer (&worker); } } ret = g_ptr_array_index (default_workers, next_default_worker); next_default_worker = (next_default_worker + 1) % default_workers->len; return ret; } void bz_reap_default_download_workers (void) { g_autoptr (GMutexLocker) locker = NULL; locker = g_mutex_locker_new (&default_worker_mutex); if (default_workers == NULL) return; for (guint i = 0; i < default_workers->len; i++) { BzDownloadWorker *worker = NULL; worker = g_ptr_array_index (default_workers, i); g_subprocess_force_exit (worker->subprocess); } g_clear_pointer (&default_workers, g_ptr_array_unref); next_default_worker = 0; } static DexFuture * monitor_worker_fiber (GWeakRef *wr) { g_autoptr (BzDownloadWorker) self = NULL; g_autoptr (GInputStream) input_stream = NULL; g_autoptr (GDataInputStream) subprocess_stdout = NULL; bz_weak_get_or_return_reject (self, wr); input_stream = g_object_ref (g_subprocess_get_stdout_pipe (self->subprocess)); subprocess_stdout = g_data_input_stream_new (g_object_ref (input_stream)); g_clear_object (&self); for (;;) { g_autoptr (GError) local_error = NULL; g_autofree char *line = NULL; line = dex_await_string ( dex_async_pair_new ( subprocess_stdout, &DEX_ASYNC_PAIR_INFO_STRING ( plumb_data_input_stream_read_line_async, plumb_data_input_stream_read_line_finish)), &local_error); if (line == NULL) { if (local_error != NULL) g_warning ("Could not read stdout from download worker subprocess: %s", local_error->message); goto err; } do { g_autoptr (GVariant) variant = NULL; g_autofree char *dest_path = NULL; gboolean success = FALSE; DexPromise *promise = NULL; if (line == NULL) { line = g_data_input_stream_read_line_utf8 (subprocess_stdout, NULL, NULL, &local_error); if (line == NULL) { if (local_error != NULL) g_warning ("Could not read stdout from download worker subprocess: %s", local_error->message); goto err; } } variant = g_variant_parse (G_VARIANT_TYPE ("(sb)"), line, NULL, NULL, &local_error); if (variant == NULL) { g_warning ("Could not interpret stdout from download worker subprocess: %s", local_error->message); goto err; } g_variant_get (variant, "(sb)", &dest_path, &success); bz_weak_get_or_return_reject (self, wr); g_mutex_lock (&self->read_mutex); promise = g_hash_table_lookup (self->waiting, dest_path); if (promise != NULL) { if (success) dex_promise_resolve_boolean (promise, TRUE); else dex_promise_reject ( promise, g_error_new (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "The subprocess reported an error downloading '%s'", dest_path)); promise = NULL; g_hash_table_remove (self->waiting, dest_path); } g_mutex_unlock (&self->read_mutex); g_clear_object (&self); g_clear_pointer (&line, g_free); } while (g_input_stream_has_pending (input_stream)); } return dex_future_new_true (); err: bz_weak_get_or_return_reject (self, wr); /* give up on this subprocess and wait to be disposed */ g_mutex_lock (&self->read_mutex); terminate (self); g_mutex_unlock (&self->read_mutex); return dex_future_new_false (); } static DexFuture * invoke_worker_fiber (InvokeWorkerData *data) { DexPromise *promise = data->promise; GFile *src = data->src; GFile *dest = data->dest; g_autoptr (BzDownloadWorker) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (BzGuard) guard = NULL; g_autofree char *src_uri = NULL; g_autofree char *dest_path = NULL; DexPromise *existing = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (GString) output = NULL; g_autoptr (GOutputStream) stdin_stream = NULL; gint64 bytes_written = -1; src_uri = g_file_get_uri (src); dest_path = g_file_get_path (dest); bz_weak_get_or_return_reject (self, data->self); g_mutex_lock (&self->read_mutex); existing = g_hash_table_lookup (self->waiting, dest_path); if (existing != NULL) { dex_promise_reject ( existing, g_error_new (G_IO_ERROR, G_IO_ERROR_CANCELLED, "The operation was replaced")); existing = NULL; } g_hash_table_replace (self->waiting, g_strdup (dest_path), dex_ref (promise)); g_mutex_unlock (&self->read_mutex); variant = g_variant_new ("(ss)", src_uri, dest_path); output = g_string_new (NULL); output = g_variant_print_string (variant, g_steal_pointer (&output), TRUE); g_string_append_c (output, '\n'); stdin_stream = g_object_ref (g_subprocess_get_stdin_pipe (self->subprocess)); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->write_mutex, &self->write_gate); g_clear_object (&self); bytes_written = dex_await_int64 ( dex_future_first ( dex_output_stream_write ( stdin_stream, output->str, output->len, G_PRIORITY_DEFAULT_IDLE), dex_ref (promise), NULL), &local_error); bz_clear_guard (&guard); /* Check if we've been cancelled */ if (!dex_future_is_pending (DEX_FUTURE (promise))) return dex_future_new_false (); if (bytes_written < 0) { bz_weak_get_or_return_reject (self, data->self); g_mutex_lock (&self->read_mutex); g_hash_table_remove (self->waiting, dest_path); dex_promise_reject (promise, g_steal_pointer (&local_error)); g_mutex_unlock (&self->read_mutex); g_clear_object (&self); } return dex_future_new_true (); } static void terminate (BzDownloadWorker *self) { GHashTableIter waiting_iter = { 0 }; g_hash_table_iter_init (&waiting_iter, self->waiting); for (;;) { g_autofree char *dest_path = NULL; g_autoptr (DexPromise) promise = NULL; if (!g_hash_table_iter_next ( &waiting_iter, (gpointer *) &dest_path, (gpointer *) &promise)) break; g_hash_table_iter_steal (&waiting_iter); dex_promise_reject ( promise, g_error_new (G_IO_ERROR, G_IO_ERROR_CANCELLED, "The subprocess was terminated")); } } static void plumb_data_input_stream_read_line_async (GDataInputStream *stream, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_data_input_stream_read_line_async ( stream, G_PRIORITY_DEFAULT_IDLE, cancellable, callback, user_data); } static char * plumb_data_input_stream_read_line_finish (GDataInputStream *stream, GAsyncResult *result, gpointer user_data) { return g_data_input_stream_read_line_finish_utf8 ( stream, result, NULL, user_data); } /* End of bz-download-worker.c */ ���������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-download-worker.h��������������������������������������������������0000664�0000000�0000000�00000003046�15240005042�0022030�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-download-worker.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> G_BEGIN_DECLS #define BZ_TYPE_DOWNLOAD_WORKER (bz_download_worker_get_type ()) G_DECLARE_FINAL_TYPE (BzDownloadWorker, bz_download_worker, BZ, DOWNLOAD_WORKER, GObject) BzDownloadWorker * bz_download_worker_new (const char *name, GError **error); const char * bz_download_worker_get_name (BzDownloadWorker *self); void bz_download_worker_set_name (BzDownloadWorker *self, const char *name); DexFuture * bz_download_worker_invoke (BzDownloadWorker *self, GFile *src, GFile *dest); BzDownloadWorker * bz_download_worker_get_default (void); void bz_reap_default_download_workers (void); G_END_DECLS /* End of bz-download-worker.h */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-dynamic-list-view.c������������������������������������������������0000664�0000000�0000000�00000066431�15240005042�0022261�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-dynamic-list-view.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-dynamic-list-view.h" #include "bz-marshalers.h" G_DEFINE_ENUM_TYPE ( BzDynamicListViewKind, bz_dynamic_list_view_kind, G_DEFINE_ENUM_VALUE (BZ_DYNAMIC_LIST_VIEW_KIND_HBOX, "h-box"), G_DEFINE_ENUM_VALUE (BZ_DYNAMIC_LIST_VIEW_KIND_VBOX, "v-box"), G_DEFINE_ENUM_VALUE (BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX, "list-box"), G_DEFINE_ENUM_VALUE (BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX, "flow-box"), G_DEFINE_ENUM_VALUE (BZ_DYNAMIC_LIST_VIEW_KIND_CAROUSEL, "carousel")) struct _BzDynamicListView { AdwBin parent_instance; GListModel *model; gboolean scroll; BzDynamicListViewKind noscroll_kind; GType child_type; char *child_prop; char *object_prop; guint max_children_per_line; guint row_spacing; guint column_spacing; char *child_type_string; GtkScrolledWindow *scrolled_window; GPtrArray *box_children; }; G_DEFINE_FINAL_TYPE (BzDynamicListView, bz_dynamic_list_view, ADW_TYPE_BIN); enum { PROP_0, PROP_MODEL, PROP_SCROLL, PROP_NOSCROLL_KIND, PROP_CHILD_TYPE, PROP_CHILD_PROP, PROP_OBJECT_PROP, PROP_MAX_CHILDREN_PER_LINE, PROP_VADJUSTMENT, PROP_ROW_SPACING, PROP_COLUMN_SPACING, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_BIND_WIDGET, SIGNAL_UNBIND_WIDGET, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void refresh (BzDynamicListView *self); static void list_item_factory_setup (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory); static void list_item_factory_teardown (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory); static void list_item_factory_bind (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory); static void list_item_factory_unbind (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory); static GtkWidget * create_child_widget (GObject *object, BzDynamicListView *self); static void items_changed (GListModel *model, guint position, guint removed, guint added, BzDynamicListView *self); static void bz_dynamic_list_view_dispose (GObject *object) { BzDynamicListView *self = BZ_DYNAMIC_LIST_VIEW (object); if (self->model != NULL) g_signal_handlers_disconnect_by_func (self->model, items_changed, self); g_clear_object (&self->model); g_clear_pointer (&self->child_prop, g_free); g_clear_pointer (&self->object_prop, g_free); g_clear_pointer (&self->child_type_string, g_free); g_clear_pointer (&self->box_children, g_ptr_array_unref); G_OBJECT_CLASS (bz_dynamic_list_view_parent_class)->dispose (object); } static void bz_dynamic_list_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzDynamicListView *self = BZ_DYNAMIC_LIST_VIEW (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, bz_dynamic_list_view_get_model (self)); break; case PROP_SCROLL: g_value_set_boolean (value, bz_dynamic_list_view_get_scroll (self)); break; case PROP_NOSCROLL_KIND: g_value_set_enum (value, bz_dynamic_list_view_get_noscroll_kind (self)); break; case PROP_CHILD_TYPE: g_value_set_string (value, bz_dynamic_list_view_get_child_type (self)); break; case PROP_CHILD_PROP: g_value_set_string (value, bz_dynamic_list_view_get_child_prop (self)); break; case PROP_OBJECT_PROP: g_value_set_string (value, bz_dynamic_list_view_get_object_prop (self)); break; case PROP_MAX_CHILDREN_PER_LINE: g_value_set_uint (value, bz_dynamic_list_view_get_max_children_per_line (self)); break; case PROP_VADJUSTMENT: g_value_set_object (value, bz_dynamic_list_view_get_vadjustment (self)); break; case PROP_ROW_SPACING: g_value_set_uint (value, bz_dynamic_list_view_get_row_spacing (self)); break; case PROP_COLUMN_SPACING: g_value_set_uint (value, bz_dynamic_list_view_get_column_spacing (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_dynamic_list_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzDynamicListView *self = BZ_DYNAMIC_LIST_VIEW (object); switch (prop_id) { case PROP_MODEL: bz_dynamic_list_view_set_model (self, g_value_get_object (value)); break; case PROP_SCROLL: bz_dynamic_list_view_set_scroll (self, g_value_get_boolean (value)); break; case PROP_NOSCROLL_KIND: bz_dynamic_list_view_set_noscroll_kind (self, g_value_get_enum (value)); break; case PROP_CHILD_TYPE: bz_dynamic_list_view_set_child_type (self, g_value_get_string (value)); break; case PROP_CHILD_PROP: bz_dynamic_list_view_set_child_prop (self, g_value_get_string (value)); break; case PROP_OBJECT_PROP: bz_dynamic_list_view_set_object_prop (self, g_value_get_string (value)); break; case PROP_MAX_CHILDREN_PER_LINE: bz_dynamic_list_view_set_max_children_per_line (self, g_value_get_uint (value)); break; case PROP_ROW_SPACING: bz_dynamic_list_view_set_row_spacing (self, g_value_get_uint (value)); break; case PROP_COLUMN_SPACING: bz_dynamic_list_view_set_column_spacing (self, g_value_get_uint (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_dynamic_list_view_class_init (BzDynamicListViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_dynamic_list_view_set_property; object_class->get_property = bz_dynamic_list_view_get_property; object_class->dispose = bz_dynamic_list_view_dispose; props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_SCROLL] = g_param_spec_boolean ( "scroll", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_NOSCROLL_KIND] = g_param_spec_enum ( "noscroll-kind", NULL, NULL, BZ_TYPE_DYNAMIC_LIST_VIEW_KIND, BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_MAX_CHILDREN_PER_LINE] = g_param_spec_uint ( "max-children-per-line", NULL, NULL, 1, G_MAXUINT, 4, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ROW_SPACING] = g_param_spec_uint ( "row-spacing", NULL, NULL, 0, G_MAXUINT, 11, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_COLUMN_SPACING] = g_param_spec_uint ( "column-spacing", NULL, NULL, 0, G_MAXUINT, 11, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_CHILD_TYPE] = g_param_spec_string ( "child-type", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_CHILD_PROP] = g_param_spec_string ( "child-prop", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_OBJECT_PROP] = g_param_spec_string ( "object-prop", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_VADJUSTMENT] = g_param_spec_object ( "vadjustment", NULL, NULL, GTK_TYPE_ADJUSTMENT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_BIND_WIDGET] = g_signal_new ( "bind-widget", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, bz_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 1, GTK_TYPE_WIDGET); g_signal_set_va_marshaller ( signals[SIGNAL_BIND_WIDGET], G_TYPE_FROM_CLASS (klass), bz_marshal_VOID__OBJECT_OBJECTv); signals[SIGNAL_UNBIND_WIDGET] = g_signal_new ( "unbind-widget", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, bz_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 1, GTK_TYPE_WIDGET); g_signal_set_va_marshaller ( signals[SIGNAL_UNBIND_WIDGET], G_TYPE_FROM_CLASS (klass), bz_marshal_VOID__OBJECT_OBJECTv); } static void bz_dynamic_list_view_init (BzDynamicListView *self) { self->child_type = G_TYPE_INVALID; self->noscroll_kind = BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX; self->max_children_per_line = 4; self->row_spacing = 11; self->column_spacing = 11; self->box_children = g_ptr_array_new (); } BzDynamicListView * bz_dynamic_list_view_new (void) { return g_object_new (BZ_TYPE_DYNAMIC_LIST_VIEW, NULL); } GListModel * bz_dynamic_list_view_get_model (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), NULL); return self->model; } gboolean bz_dynamic_list_view_get_scroll (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), FALSE); return self->scroll; } BzDynamicListViewKind bz_dynamic_list_view_get_noscroll_kind (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), FALSE); return self->noscroll_kind; } const char * bz_dynamic_list_view_get_child_type (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), NULL); return self->child_type_string; } const char * bz_dynamic_list_view_get_child_prop (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), NULL); return self->child_prop; } const char * bz_dynamic_list_view_get_object_prop (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), NULL); return self->object_prop; } guint bz_dynamic_list_view_get_max_children_per_line (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), 4); return self->max_children_per_line; } GtkAdjustment * bz_dynamic_list_view_get_vadjustment (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), NULL); if (self->scrolled_window == NULL) return NULL; return gtk_scrolled_window_get_vadjustment (self->scrolled_window); } void bz_dynamic_list_view_set_model (BzDynamicListView *self, GListModel *model) { g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); if (self->model != NULL) g_signal_handlers_disconnect_by_func (self->model, items_changed, self); g_clear_object (&self->model); if (model != NULL) self->model = g_object_ref (model); refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); } void bz_dynamic_list_view_set_scroll (BzDynamicListView *self, gboolean scroll) { g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); self->scroll = scroll; refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SCROLL]); } void bz_dynamic_list_view_set_noscroll_kind (BzDynamicListView *self, BzDynamicListViewKind noscroll_kind) { g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); g_return_if_fail (noscroll_kind >= 0 && noscroll_kind < BZ_DYNAMIC_LIST_VIEW_N_KINDS); self->noscroll_kind = noscroll_kind; refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NOSCROLL_KIND]); } void bz_dynamic_list_view_set_child_type (BzDynamicListView *self, const char *child_type) { GType type = G_TYPE_INVALID; g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); if (child_type != NULL) { type = g_type_from_name (child_type); g_return_if_fail (g_type_is_a (type, GTK_TYPE_WIDGET)); } g_clear_pointer (&self->child_type_string, g_free); self->child_type = type; if (child_type != NULL) self->child_type_string = g_strdup (child_type); refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CHILD_TYPE]); } void bz_dynamic_list_view_set_child_prop (BzDynamicListView *self, const char *child_prop) { g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); g_clear_pointer (&self->child_prop, g_free); if (child_prop != NULL) self->child_prop = g_strdup (child_prop); refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CHILD_PROP]); } void bz_dynamic_list_view_set_object_prop (BzDynamicListView *self, const char *object_prop) { g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); g_clear_pointer (&self->object_prop, g_free); if (object_prop != NULL) self->object_prop = g_strdup (object_prop); refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_OBJECT_PROP]); } void bz_dynamic_list_view_set_max_children_per_line (BzDynamicListView *self, guint max_children) { GtkWidget *child; g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); g_return_if_fail (max_children > 0); self->max_children_per_line = max_children; child = adw_bin_get_child (ADW_BIN (self)); if (child != NULL && self->noscroll_kind == BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX && !self->scroll) { gtk_flow_box_set_max_children_per_line (GTK_FLOW_BOX (child), max_children); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MAX_CHILDREN_PER_LINE]); } guint bz_dynamic_list_view_get_row_spacing (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), 5); return self->row_spacing; } guint bz_dynamic_list_view_get_column_spacing (BzDynamicListView *self) { g_return_val_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self), 5); return self->column_spacing; } void bz_dynamic_list_view_set_row_spacing (BzDynamicListView *self, guint row_spacing) { GtkWidget *child; g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); self->row_spacing = row_spacing; child = adw_bin_get_child (ADW_BIN (self)); if (child != NULL && self->noscroll_kind == BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX && !self->scroll) { gtk_flow_box_set_row_spacing (GTK_FLOW_BOX (child), row_spacing); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ROW_SPACING]); } void bz_dynamic_list_view_set_column_spacing (BzDynamicListView *self, guint column_spacing) { GtkWidget *child; g_return_if_fail (BZ_IS_DYNAMIC_LIST_VIEW (self)); self->column_spacing = column_spacing; child = adw_bin_get_child (ADW_BIN (self)); if (child != NULL && self->noscroll_kind == BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX && !self->scroll) { gtk_flow_box_set_column_spacing (GTK_FLOW_BOX (child), column_spacing); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_COLUMN_SPACING]); } static void refresh (BzDynamicListView *self) { if (self->model != NULL) g_signal_handlers_disconnect_by_func (self->model, items_changed, self); self->scrolled_window = NULL; g_ptr_array_set_size (self->box_children, 0); adw_bin_set_child (ADW_BIN (self), NULL); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_VADJUSTMENT]); if (self->model == NULL || self->child_prop == NULL || self->child_type == G_TYPE_INVALID) return; if (self->scroll) { GtkWidget *window = NULL; GtkNoSelection *selection = NULL; GtkListItemFactory *factory = NULL; GtkWidget *view = NULL; window = gtk_scrolled_window_new (); selection = gtk_no_selection_new (g_object_ref (self->model)); factory = gtk_signal_list_item_factory_new (); view = gtk_list_view_new (GTK_SELECTION_MODEL (selection), factory); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_widget_add_css_class (view, "navigation-sidebar"); gtk_list_view_set_single_click_activate (GTK_LIST_VIEW (view), TRUE); g_signal_connect_swapped (factory, "setup", G_CALLBACK (list_item_factory_setup), self); g_signal_connect_swapped (factory, "teardown", G_CALLBACK (list_item_factory_teardown), self); g_signal_connect_swapped (factory, "bind", G_CALLBACK (list_item_factory_bind), self); g_signal_connect_swapped (factory, "unbind", G_CALLBACK (list_item_factory_unbind), self); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (window), view); self->scrolled_window = GTK_SCROLLED_WINDOW (window); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_VADJUSTMENT]); adw_bin_set_child (ADW_BIN (self), window); } else { switch (self->noscroll_kind) { case BZ_DYNAMIC_LIST_VIEW_KIND_HBOX: case BZ_DYNAMIC_LIST_VIEW_KIND_VBOX: { GtkWidget *widget = NULL; if (self->noscroll_kind == BZ_DYNAMIC_LIST_VIEW_KIND_VBOX) widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10); else widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10); g_signal_connect ( self->model, "items-changed", G_CALLBACK (items_changed), self); adw_bin_set_child (ADW_BIN (self), widget); items_changed (self->model, 0, 0, g_list_model_get_n_items (self->model), self); } break; case BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX: { GtkWidget *widget = NULL; widget = gtk_list_box_new (); gtk_list_box_set_selection_mode ( GTK_LIST_BOX (widget), GTK_SELECTION_NONE); gtk_list_box_bind_model ( GTK_LIST_BOX (widget), self->model, (GtkListBoxCreateWidgetFunc) create_child_widget, self, NULL); adw_bin_set_child (ADW_BIN (self), widget); } break; case BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX: { GtkWidget *widget = NULL; widget = gtk_flow_box_new (); gtk_flow_box_set_homogeneous (GTK_FLOW_BOX (widget), TRUE); gtk_flow_box_set_max_children_per_line (GTK_FLOW_BOX (widget), self->max_children_per_line); gtk_flow_box_set_row_spacing (GTK_FLOW_BOX (widget), self->row_spacing); gtk_flow_box_set_column_spacing (GTK_FLOW_BOX (widget), self->column_spacing); gtk_flow_box_set_selection_mode (GTK_FLOW_BOX (widget), GTK_SELECTION_NONE); gtk_flow_box_bind_model ( GTK_FLOW_BOX (widget), self->model, (GtkFlowBoxCreateWidgetFunc) create_child_widget, self, NULL); adw_bin_set_child (ADW_BIN (self), widget); } break; case BZ_DYNAMIC_LIST_VIEW_KIND_CAROUSEL: { GtkWidget *widget = NULL; widget = adw_carousel_new (); adw_carousel_set_allow_scroll_wheel (ADW_CAROUSEL (widget), FALSE); g_signal_connect ( self->model, "items-changed", G_CALLBACK (items_changed), self); adw_bin_set_child (ADW_BIN (self), widget); items_changed (self->model, 0, 0, g_list_model_get_n_items (self->model), self); } break; case BZ_DYNAMIC_LIST_VIEW_N_KINDS: default: g_assert_not_reached (); } } } static void list_item_factory_setup (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory) { GtkWidget *child = NULL; child = g_object_new (self->child_type, NULL); gtk_list_item_set_child (item, child); } static void list_item_factory_teardown (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory) { gtk_list_item_set_child (item, NULL); } static void list_item_factory_bind (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory) { GObject *object = NULL; GtkWidget *child = NULL; object = gtk_list_item_get_item (item); child = gtk_list_item_get_child (item); gtk_list_item_set_focusable (item, FALSE); gtk_list_item_set_selectable (item, FALSE); gtk_list_item_set_activatable (item, FALSE); if (self->object_prop != NULL) { GBinding *binding = NULL; binding = g_object_bind_property ( object, self->object_prop, child, self->child_prop, G_BINDING_SYNC_CREATE); g_object_set_data_full ( G_OBJECT (item), "binding", binding, g_object_unref); } else g_object_set (child, self->child_prop, object, NULL); g_signal_emit (self, signals[SIGNAL_BIND_WIDGET], 0, child, object); } static void list_item_factory_unbind (BzDynamicListView *self, GtkListItem *item, GtkSignalListItemFactory *factory) { GtkWidget *child = NULL; GBinding *binding = NULL; g_autoptr (GObject) object = NULL; child = gtk_list_item_get_child (item); binding = g_object_steal_data (G_OBJECT (item), "binding"); if (binding != NULL) { object = g_binding_dup_source (binding); g_binding_unbind (binding); g_object_unref (binding); } else { g_object_get (child, self->child_prop, &object, NULL); g_object_set (child, self->child_prop, NULL, NULL); } g_signal_emit (self, signals[SIGNAL_UNBIND_WIDGET], 0, child, object); } static GtkWidget * create_child_widget (GObject *object, BzDynamicListView *self) { GtkWidget *widget = NULL; widget = g_object_new (self->child_type, NULL); if (self->object_prop != NULL) g_object_bind_property ( object, self->object_prop, widget, self->child_prop, G_BINDING_SYNC_CREATE); else g_object_set (widget, self->child_prop, object, NULL); gtk_widget_set_receives_default (widget, TRUE); g_signal_emit (self, signals[SIGNAL_BIND_WIDGET], 0, widget, object); switch (self->noscroll_kind) { case BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX: { GtkWidget *child = NULL; child = gtk_list_box_row_new (); gtk_widget_add_css_class (GTK_WIDGET (child), "disable-adw-flow-box-styling"); gtk_widget_set_focusable (GTK_WIDGET (child), FALSE); gtk_list_box_row_set_selectable (GTK_LIST_BOX_ROW (child), FALSE); gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (child), widget); return child; } case BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX: { GtkWidget *child = NULL; child = gtk_flow_box_child_new (); gtk_widget_add_css_class (GTK_WIDGET (child), "disable-adw-flow-box-styling"); gtk_widget_set_focusable (GTK_WIDGET (child), FALSE); gtk_flow_box_child_set_child (GTK_FLOW_BOX_CHILD (child), widget); return child; } case BZ_DYNAMIC_LIST_VIEW_KIND_HBOX: case BZ_DYNAMIC_LIST_VIEW_KIND_VBOX: case BZ_DYNAMIC_LIST_VIEW_KIND_CAROUSEL: case BZ_DYNAMIC_LIST_VIEW_N_KINDS: default: return widget; } } static void items_changed (GListModel *model, guint position, guint removed, guint added, BzDynamicListView *self) { GtkWidget *bin_child = NULL; bin_child = adw_bin_get_child (ADW_BIN (self)); for (guint i = 0; i < removed; i++) { switch (self->noscroll_kind) { case BZ_DYNAMIC_LIST_VIEW_KIND_HBOX: case BZ_DYNAMIC_LIST_VIEW_KIND_VBOX: { GtkWidget *child = NULL; child = g_ptr_array_index (self->box_children, position); gtk_box_remove (GTK_BOX (bin_child), g_steal_pointer (&child)); g_ptr_array_remove_index (self->box_children, position); } break; case BZ_DYNAMIC_LIST_VIEW_KIND_CAROUSEL: adw_carousel_remove ( ADW_CAROUSEL (bin_child), adw_carousel_get_nth_page (ADW_CAROUSEL (bin_child), position)); break; case BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX: case BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX: case BZ_DYNAMIC_LIST_VIEW_N_KINDS: default: g_assert_not_reached (); } } for (guint i = 0; i < added; i++) { g_autoptr (GObject) object = NULL; GtkWidget *widget = NULL; object = g_list_model_get_item (model, position + i); widget = create_child_widget (object, self); switch (self->noscroll_kind) { case BZ_DYNAMIC_LIST_VIEW_KIND_HBOX: case BZ_DYNAMIC_LIST_VIEW_KIND_VBOX: { if (position + i < self->box_children->len) { GtkWidget *sibling = NULL; sibling = g_ptr_array_index (self->box_children, position + i); gtk_box_insert_child_after (GTK_BOX (bin_child), widget, sibling); } else gtk_box_append (GTK_BOX (bin_child), widget); } break; case BZ_DYNAMIC_LIST_VIEW_KIND_CAROUSEL: adw_carousel_insert (ADW_CAROUSEL (bin_child), widget, position + i); break; case BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX: case BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX: case BZ_DYNAMIC_LIST_VIEW_N_KINDS: default: g_assert_not_reached (); } } } /* End of bz-dynamic-list-view.c */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-dynamic-list-view.h������������������������������������������������0000664�0000000�0000000�00000006674�15240005042�0022271�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-dynamic-list-view.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS typedef enum { BZ_DYNAMIC_LIST_VIEW_KIND_HBOX, BZ_DYNAMIC_LIST_VIEW_KIND_VBOX, BZ_DYNAMIC_LIST_VIEW_KIND_LIST_BOX, BZ_DYNAMIC_LIST_VIEW_KIND_FLOW_BOX, BZ_DYNAMIC_LIST_VIEW_KIND_CAROUSEL, /*< private >*/ BZ_DYNAMIC_LIST_VIEW_N_KINDS, } BzDynamicListViewKind; GType bz_dynamic_list_view_kind_get_type (void); #define BZ_TYPE_DYNAMIC_LIST_VIEW_KIND (bz_dynamic_list_view_kind_get_type ()) #define BZ_TYPE_DYNAMIC_LIST_VIEW (bz_dynamic_list_view_get_type ()) G_DECLARE_FINAL_TYPE (BzDynamicListView, bz_dynamic_list_view, BZ, DYNAMIC_LIST_VIEW, AdwBin) BzDynamicListView * bz_dynamic_list_view_new (void); GListModel * bz_dynamic_list_view_get_model (BzDynamicListView *self); gboolean bz_dynamic_list_view_get_scroll (BzDynamicListView *self); BzDynamicListViewKind bz_dynamic_list_view_get_noscroll_kind (BzDynamicListView *self); const char * bz_dynamic_list_view_get_child_type (BzDynamicListView *self); const char * bz_dynamic_list_view_get_child_prop (BzDynamicListView *self); const char * bz_dynamic_list_view_get_object_prop (BzDynamicListView *self); void bz_dynamic_list_view_set_model (BzDynamicListView *self, GListModel *model); void bz_dynamic_list_view_set_scroll (BzDynamicListView *self, gboolean scroll); void bz_dynamic_list_view_set_noscroll_kind (BzDynamicListView *self, BzDynamicListViewKind noscroll_kind); void bz_dynamic_list_view_set_child_type (BzDynamicListView *self, const char *child_type); void bz_dynamic_list_view_set_child_prop (BzDynamicListView *self, const char *child_prop); void bz_dynamic_list_view_set_object_prop (BzDynamicListView *self, const char *object_prop); guint bz_dynamic_list_view_get_max_children_per_line (BzDynamicListView *self); void bz_dynamic_list_view_set_max_children_per_line (BzDynamicListView *self, guint max_children); guint bz_dynamic_list_view_get_row_spacing (BzDynamicListView *self); void bz_dynamic_list_view_set_row_spacing (BzDynamicListView *self, guint row_spacing); guint bz_dynamic_list_view_get_column_spacing (BzDynamicListView *self); void bz_dynamic_list_view_set_column_spacing (BzDynamicListView *self, guint column_spacing); GtkAdjustment *bz_dynamic_list_view_get_vadjustment (BzDynamicListView *self); G_END_DECLS /* End of bz-dynamic-list-view.h */ ��������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-cache-manager.c����������������������������������������������0000664�0000000�0000000�00000071055�15240005042�0022524�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-cache-manager.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::ENTRY-CACHE" #define BAZAAR_MODULE "entry-cache" #define MAX_CONCURRENT_WRITES 16 #define WATCH_CLEANUP_INTERVAL_MSEC 5000 #include <malloc.h> #include "bz-entry-cache-manager.h" #include "bz-flatpak-entry.h" #include "bz-serializable.h" #include "env.h" #include "io.h" #include "util.h" /* clang-format off */ G_DEFINE_QUARK (bz-entry-cache-error-quark, bz_entry_cache_error); /* clang-format on */ struct _BzEntryCacheManager { GObject parent_instance; GMutex mutex; guint living_entries; DexScheduler *scheduler; guint64 memory_usage; DexPromise *init; GHashTable *alive_hash; GHashTable *writing_hash; GHashTable *reading_hash; BzGuard *ongoing_gates[MAX_CONCURRENT_WRITES]; GMutex ongoing_mutexes[MAX_CONCURRENT_WRITES]; guint ongoing_queued[MAX_CONCURRENT_WRITES]; GMutex ongoing_queueing_mutex; BzGuard *alive_gate; GMutex alive_mutex; BzGuard *reading_gate; GMutex reading_mutex; BzGuard *writing_gate; GMutex writing_mutex; DexFuture *watch_task; }; G_DEFINE_FINAL_TYPE (BzEntryCacheManager, bz_entry_cache_manager, G_TYPE_OBJECT); enum { PROP_0, PROP_LIVING_ENTRIES, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * watch_init_fiber (GWeakRef *wr); static DexFuture * watch_cb (DexFuture *future, GWeakRef *wr); static DexFuture * watch_work_fiber (GWeakRef *wr); static DexFuture * notify_props_fiber (GWeakRef *wr); BZ_DEFINE_DATA ( living_entry, LivingEntry, { GWeakRef wr; BzGuard *gate; GMutex mutex; GTimer *cached; }, BZ_RELEASE_DATA (gate, bz_guard_destroy); g_mutex_clear (&self->mutex); g_weak_ref_clear (&self->wr); BZ_RELEASE_DATA (cached, g_timer_destroy)); BZ_DEFINE_DATA ( write_task, WriteTask, { GWeakRef *self; char *unique_id_checksum; BzEntry *entry; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (unique_id_checksum, g_free); BZ_RELEASE_DATA (entry, g_object_unref);) static DexFuture * write_task_fiber (WriteTaskData *data); BZ_DEFINE_DATA ( read_task, ReadTask, { GWeakRef *self; char *unique_id_checksum; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (unique_id_checksum, g_free)) static DexFuture * read_task_fiber (ReadTaskData *data); static DexFuture * enumerate_disk_fiber (GWeakRef *wr); static void bz_entry_cache_manager_dispose (GObject *object) { BzEntryCacheManager *self = BZ_ENTRY_CACHE_MANAGER (object); g_mutex_clear (&self->mutex); dex_clear (&self->scheduler); dex_clear (&self->watch_task); g_clear_pointer (&self->init, dex_unref); g_clear_pointer (&self->alive_hash, g_hash_table_unref); g_clear_pointer (&self->writing_hash, g_hash_table_unref); g_clear_pointer (&self->reading_hash, g_hash_table_unref); for (guint i = 0; i < G_N_ELEMENTS (self->ongoing_gates); i++) g_clear_pointer (&self->ongoing_gates[i], bz_guard_destroy); for (guint i = 0; i < G_N_ELEMENTS (self->ongoing_mutexes); i++) g_mutex_clear (&self->ongoing_mutexes[i]); g_mutex_clear (&self->ongoing_queueing_mutex); g_clear_pointer (&self->alive_gate, bz_guard_destroy); g_clear_pointer (&self->reading_gate, bz_guard_destroy); g_clear_pointer (&self->writing_gate, bz_guard_destroy); g_mutex_clear (&self->alive_mutex); g_mutex_clear (&self->reading_mutex); g_mutex_clear (&self->writing_mutex); G_OBJECT_CLASS (bz_entry_cache_manager_parent_class)->dispose (object); } static void bz_entry_cache_manager_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzEntryCacheManager *self = BZ_ENTRY_CACHE_MANAGER (object); switch (prop_id) { case PROP_LIVING_ENTRIES: g_value_set_uint (value, bz_entry_cache_manager_get_living_entries (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_cache_manager_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzEntryCacheManager *self = BZ_ENTRY_CACHE_MANAGER (object); (void) self; switch (prop_id) { case PROP_LIVING_ENTRIES: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_cache_manager_class_init (BzEntryCacheManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_entry_cache_manager_set_property; object_class->get_property = bz_entry_cache_manager_get_property; object_class->dispose = bz_entry_cache_manager_dispose; props[PROP_LIVING_ENTRIES] = g_param_spec_uint ( "living-entries", NULL, NULL, 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_entry_cache_manager_init (BzEntryCacheManager *self) { g_mutex_init (&self->mutex); self->scheduler = dex_thread_pool_scheduler_new (); self->init = dex_promise_new (); self->alive_hash = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, living_entry_data_unref); self->writing_hash = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, dex_unref); self->reading_hash = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, dex_unref); for (guint i = 0; i < G_N_ELEMENTS (self->ongoing_mutexes); i++) g_mutex_init (&self->ongoing_mutexes[i]); g_mutex_init (&self->ongoing_queueing_mutex); g_mutex_init (&self->alive_mutex); g_mutex_init (&self->reading_mutex); g_mutex_init (&self->writing_mutex); self->watch_task = dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) watch_init_fiber, bz_track_weak (self), bz_weak_release); } BzEntryCacheManager * bz_entry_cache_manager_new (void) { return g_object_new (BZ_TYPE_ENTRY_CACHE_MANAGER, NULL); } guint bz_entry_cache_manager_get_living_entries (BzEntryCacheManager *self) { g_autoptr (GMutexLocker) locker = NULL; g_return_val_if_fail (BZ_IS_ENTRY_CACHE_MANAGER (self), 0); locker = g_mutex_locker_new (&self->mutex); return self->living_entries; } DexFuture * bz_entry_cache_manager_add (BzEntryCacheManager *self, BzEntry *entry) { g_autoptr (WriteTaskData) data = NULL; g_autoptr (DexFuture) future = NULL; dex_return_error_if_fail (BZ_IS_ENTRY_CACHE_MANAGER (self)); dex_return_error_if_fail (BZ_IS_ENTRY (entry)); dex_return_error_if_fail (!bz_entry_is_holding (entry)); data = write_task_data_new (); data->self = bz_track_weak (self); data->unique_id_checksum = g_strdup (bz_entry_get_unique_id_checksum (entry)); data->entry = g_object_ref (entry); future = dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) write_task_fiber, write_task_data_ref (data), write_task_data_unref); return g_steal_pointer (&future); } DexFuture * bz_entry_cache_manager_get (BzEntryCacheManager *self, const char *unique_id) { g_autoptr (ReadTaskData) data = NULL; g_autoptr (DexFuture) future = NULL; dex_return_error_if_fail (BZ_IS_ENTRY_CACHE_MANAGER (self)); dex_return_error_if_fail (unique_id != NULL); data = read_task_data_new (); data->self = bz_track_weak (self); data->unique_id_checksum = g_compute_checksum_for_string (G_CHECKSUM_MD5, unique_id, -1); future = dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) read_task_fiber, read_task_data_ref (data), read_task_data_unref); return g_steal_pointer (&future); } DexFuture * bz_entry_cache_manager_get_by_checksum (BzEntryCacheManager *self, const char *unique_id_checksum) { g_autoptr (ReadTaskData) data = NULL; g_autoptr (DexFuture) future = NULL; dex_return_error_if_fail (BZ_IS_ENTRY_CACHE_MANAGER (self)); dex_return_error_if_fail (unique_id_checksum != NULL); data = read_task_data_new (); data->self = bz_track_weak (self); data->unique_id_checksum = g_strdup (unique_id_checksum); future = dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) read_task_fiber, read_task_data_ref (data), read_task_data_unref); return g_steal_pointer (&future); } DexFuture * bz_entry_cache_manager_enumerate_disk (BzEntryCacheManager *self) { g_autoptr (DexFuture) future = NULL; dex_return_error_if_fail (BZ_IS_ENTRY_CACHE_MANAGER (self)); future = dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) enumerate_disk_fiber, bz_track_weak (self), bz_weak_release); return g_steal_pointer (&future); } static DexFuture * write_task_fiber (WriteTaskData *data) { g_autoptr (BzEntryCacheManager) self = NULL; char *unique_id_checksum = data->unique_id_checksum; BzEntry *entry = data->entry; g_autoptr (GError) local_error = NULL; g_autoptr (BzGuard) slot_guard = NULL; g_autoptr (BzGuard) other_guard = NULL; g_autoptr (GMutexLocker) locker = NULL; guint slot_queued = G_MAXUINT; guint slot_index = 0; DexFuture *writing_future = NULL; g_autoptr (LivingEntryData) living = NULL; g_autoptr (DexPromise) promise = NULL; g_autoptr (GVariantBuilder) builder = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (GBytes) bytes = NULL; gsize bytes_size = 0; gconstpointer bytes_data = 0; g_autofree char *main_cache = NULL; g_autoptr (GFile) parent_file = NULL; g_autofree char *save_file_path = NULL; g_autoptr (GFile) save_file = NULL; gsize existing_contents_size = 0; g_autofree char *existing_contents = NULL; g_autoptr (GFileOutputStream) output = NULL; gssize bytes_written = 0; gboolean result = FALSE; g_autoptr (GError) ret_error = NULL; bz_weak_get_or_return_reject (self, data->self); if (!BZ_IS_FLATPAK_ENTRY (entry)) return dex_future_new_reject ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_CACHE_FAILED, "Entry with unique ID checksum '%s' cannot be " "cached because it is not a flatpak entry", unique_id_checksum); /* Rate limit to reduce competition for resources * when refresh triggers a flood of requests * * Here we make sure to pick the slot with the * least tasks waiting in line */ locker = g_mutex_locker_new (&self->ongoing_queueing_mutex); for (guint i = 0; i < G_N_ELEMENTS (self->ongoing_gates); i++) { if (self->ongoing_queued[i] < slot_queued) { slot_queued = self->ongoing_queued[i]; slot_index = i; } } self->ongoing_queued[slot_index]++; g_clear_pointer (&locker, g_mutex_locker_free); BZ_BEGIN_GUARD_WITH_CONTEXT (&slot_guard, &self->ongoing_mutexes[slot_index], &self->ongoing_gates[slot_index]); locker = g_mutex_locker_new (&self->ongoing_queueing_mutex); self->ongoing_queued[slot_index]--; g_clear_pointer (&locker, g_mutex_locker_free); dex_await (dex_ref (self->init), NULL); BZ_BEGIN_GUARD_WITH_CONTEXT (&other_guard, &self->writing_mutex, &self->writing_gate); { writing_future = g_hash_table_lookup (self->writing_hash, unique_id_checksum); if (writing_future != NULL) return dex_future_new_reject ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_CACHE_FAILED, "Entry with unique ID '%s' is already being cached right now", unique_id_checksum); promise = dex_promise_new (); g_hash_table_replace (self->writing_hash, g_strdup (unique_id_checksum), dex_ref (promise)); } bz_clear_guard (&other_guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&other_guard, &self->alive_mutex, &self->alive_gate); { living = g_hash_table_lookup (self->alive_hash, unique_id_checksum); if (living != NULL) living_entry_data_ref (living); else { living = living_entry_data_new (); g_weak_ref_init (&living->wr, NULL); g_mutex_init (&living->mutex); living->cached = g_timer_new (); g_hash_table_replace (self->alive_hash, g_strdup (unique_id_checksum), living_entry_data_ref (living)); } } bz_clear_guard (&other_guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&other_guard, &living->mutex, &living->gate); { builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT); bz_serializable_serialize (BZ_SERIALIZABLE (entry), builder); variant = g_variant_builder_end (builder); bytes = g_variant_get_data_as_bytes (variant); bytes_data = g_bytes_get_data (bytes, &bytes_size); main_cache = bz_dup_module_dir (); parent_file = g_file_new_for_path (main_cache); result = g_file_make_directory_with_parents (parent_file, NULL, &local_error); if (!result) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS)) g_clear_pointer (&local_error, g_error_free); else { ret_error = g_error_new ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_CACHE_FAILED, "Failed to make parent directory '%s' when caching '%s': %s", main_cache, unique_id_checksum, local_error->message); goto done; } } save_file_path = g_build_filename (main_cache, unique_id_checksum, NULL); save_file = g_file_new_for_path (save_file_path); result = g_file_get_contents ( save_file_path, &existing_contents, &existing_contents_size, NULL); /* Only write if the file has definitely changed */ if (!result || existing_contents_size != bytes_size || memcmp (existing_contents, bytes_data, bytes_size) != 0) { output = g_file_replace ( save_file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &local_error); if (output == NULL) { ret_error = g_error_new ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_CACHE_FAILED, "Failed to open write stream when caching '%s': %s", unique_id_checksum, local_error->message); goto done; } bytes_written = g_output_stream_write_bytes (G_OUTPUT_STREAM (output), bytes, NULL, &local_error); if (bytes_written < 0) { ret_error = g_error_new ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_CACHE_FAILED, "Failed to write data to stream when caching '%s': %s", unique_id_checksum, local_error->message); goto done; } result = g_output_stream_close (G_OUTPUT_STREAM (output), NULL, &local_error); if (!result) { ret_error = g_error_new ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_CACHE_FAILED, "Failed to close stream when caching '%s': %s", unique_id_checksum, local_error->message); goto done; } } g_timer_start (living->cached); } done: bz_clear_guard (&slot_guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&other_guard, &self->writing_mutex, &self->writing_gate); { if (ret_error != NULL) dex_promise_reject (promise, g_error_copy (ret_error)); else dex_promise_resolve_boolean (promise, TRUE); g_hash_table_remove (self->writing_hash, unique_id_checksum); } bz_clear_guard (&other_guard); if (ret_error != NULL) return dex_future_new_for_error (g_steal_pointer (&ret_error)); else return dex_future_new_true (); } static DexFuture * read_task_fiber (ReadTaskData *data) { g_autoptr (BzEntryCacheManager) self = NULL; char *unique_id_checksum = data->unique_id_checksum; g_autoptr (GError) local_error = NULL; g_autoptr (BzGuard) guard = NULL; g_autoptr (GMutexLocker) locker = NULL; g_autoptr (DexFuture) writing_future = NULL; g_autoptr (LivingEntryData) living = NULL; DexFuture *reading_future = NULL; g_autoptr (DexPromise) promise = NULL; g_autofree char *main_cache = NULL; g_autofree char *path = NULL; g_autoptr (GFile) file = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (BzFlatpakEntry) entry = NULL; gboolean result = FALSE; g_autoptr (GError) ret_error = NULL; bz_weak_get_or_return_reject (self, data->self); dex_await (dex_ref (self->init), NULL); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->writing_mutex, &self->writing_gate); { writing_future = g_hash_table_lookup (self->writing_hash, unique_id_checksum); if (writing_future != NULL) { dex_ref (writing_future); bz_clear_guard (&guard); dex_await (g_steal_pointer (&writing_future), NULL); } } bz_clear_guard (&guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->reading_mutex, &self->reading_gate); { reading_future = g_hash_table_lookup (self->reading_hash, unique_id_checksum); if (reading_future != NULL) return dex_ref (reading_future); promise = dex_promise_new (); g_hash_table_replace (self->reading_hash, g_strdup (unique_id_checksum), dex_ref (promise)); } bz_clear_guard (&guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->alive_mutex, &self->alive_gate); { living = g_hash_table_lookup (self->alive_hash, unique_id_checksum); if (living != NULL) { g_autoptr (BzEntry) living_entry = NULL; living_entry_data_ref (living); bz_clear_guard (&guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &living->mutex, &living->gate); living_entry = g_weak_ref_get (&living->wr); if (living_entry != NULL) { bz_clear_guard (&guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->reading_mutex, &self->reading_gate); { g_hash_table_remove (self->reading_hash, unique_id_checksum); } bz_clear_guard (&guard); dex_promise_resolve_object (promise, g_object_ref (living_entry)); return dex_future_new_for_object (living_entry); } } else { living = living_entry_data_new (); g_weak_ref_init (&living->wr, NULL); g_mutex_init (&living->mutex); living->cached = g_timer_new (); g_hash_table_replace (self->alive_hash, g_strdup (unique_id_checksum), living_entry_data_ref (living)); bz_clear_guard (&guard); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &living->mutex, &living->gate); } } /* living data was guarded */ main_cache = bz_dup_module_dir (); path = g_build_filename (main_cache, unique_id_checksum, NULL); file = g_file_new_for_path (path); bytes = g_file_load_bytes (file, NULL, NULL, &local_error); if (bytes == NULL) { ret_error = g_error_new ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_DECACHE_FAILED, "Failed to de-cache variant from file: %s", local_error->message); goto done; } variant = g_variant_new_from_bytes (G_VARIANT_TYPE_VARDICT, bytes, FALSE); if (variant == NULL) { ret_error = g_error_new ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_DECACHE_FAILED, "Failed to interpret variant from %s: %s", path, local_error->message); goto done; } entry = g_object_new (BZ_TYPE_FLATPAK_ENTRY, NULL); result = bz_serializable_deserialize (BZ_SERIALIZABLE (entry), variant, &local_error); if (!result) { ret_error = g_error_new ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_DECACHE_FAILED, "Failed to deserialize entry from %s: %s", path, local_error->message); goto done; } g_weak_ref_init (&living->wr, entry); done: BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->reading_mutex, &self->reading_gate); { if (ret_error != NULL) dex_promise_reject (promise, g_error_copy (ret_error)); else dex_promise_resolve_object (promise, g_object_ref (entry)); g_hash_table_remove (self->reading_hash, unique_id_checksum); } bz_clear_guard (&guard); if (ret_error != NULL) return dex_future_new_for_error (g_steal_pointer (&ret_error)); else return dex_future_new_for_object (entry); } static DexFuture * enumerate_disk_fiber (GWeakRef *wr) { g_autoptr (BzEntryCacheManager) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (BzGuard) guard = NULL; g_autoptr (GHashTable) set = NULL; g_autofree char *main_cache = NULL; g_autoptr (GFile) main_cache_file = NULL; g_autoptr (GFileEnumerator) enumerator = NULL; bz_weak_get_or_return_reject (self, wr); set = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->alive_mutex, &self->alive_gate); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->reading_mutex, &self->reading_gate); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard, &self->writing_mutex, &self->writing_gate); main_cache = bz_dup_module_dir (); if (!g_file_test (main_cache, G_FILE_TEST_EXISTS)) goto done; main_cache_file = g_file_new_for_path (main_cache); enumerator = g_file_enumerate_children ( main_cache_file, G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "," G_FILE_ATTRIBUTE_STANDARD_NAME "," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, &local_error); if (enumerator == NULL) return dex_future_new_reject ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_ENUMERATE_FAILED, "Could not initialize directory enumerator at %s: %s", main_cache, local_error->message); for (;;) { g_autoptr (GFileInfo) info = NULL; g_autoptr (GFile) child = NULL; g_autofree char *basename = NULL; info = g_file_enumerator_next_file (enumerator, NULL, &local_error); if (info == NULL) { if (local_error != NULL) return dex_future_new_reject ( BZ_ENTRY_CACHE_ERROR, BZ_ENTRY_CACHE_ERROR_ENUMERATE_FAILED, "Could not enumerate children of cache directory at %s: %s", main_cache, local_error->message); else break; } child = g_file_enumerator_get_child (enumerator, info); if (g_file_info_get_is_symlink (info) || g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR) continue; basename = g_file_get_basename (child); if (basename != NULL) g_hash_table_replace (set, g_steal_pointer (&basename), NULL); } done: return dex_future_new_take_boxed (G_TYPE_HASH_TABLE, g_steal_pointer (&set)); } static DexFuture * watch_init_fiber (GWeakRef *wr) { g_autoptr (BzEntryCacheManager) self = NULL; bz_weak_get_or_return_reject (self, wr); // bz_discard_module_dir (); dex_promise_resolve_boolean (self->init, TRUE); return dex_future_finally_loop ( dex_timeout_new_msec (WATCH_CLEANUP_INTERVAL_MSEC), (DexFutureCallback) watch_cb, bz_track_weak (self), bz_weak_release); } static DexFuture * watch_cb (DexFuture *future, GWeakRef *wr) { g_autoptr (BzEntryCacheManager) self = NULL; bz_weak_get_or_return_reject (self, wr); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) watch_work_fiber, bz_track_weak (self), bz_weak_release); } static DexFuture * watch_work_fiber (GWeakRef *wr) { g_autoptr (BzEntryCacheManager) self = NULL; g_autoptr (BzGuard) guard0 = NULL; GHashTableIter iter = { 0 }; g_autoptr (GTimer) timer = NULL; guint total = 0; guint active = 0; guint alive = 0; guint pruned = 0; bz_weak_get_or_return_reject (self, wr); timer = g_timer_new (); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard0, &self->alive_mutex, &self->alive_gate); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard0, &self->reading_mutex, &self->reading_gate); BZ_BEGIN_GUARD_WITH_CONTEXT (&guard0, &self->writing_mutex, &self->writing_gate); g_hash_table_iter_init (&iter, self->alive_hash); for (;;) { char *unique_id_checksum = NULL; LivingEntryData *living = NULL; g_autoptr (BzGuard) guard1 = NULL; g_autoptr (BzEntry) entry = NULL; if (!g_hash_table_iter_next (&iter, (gpointer *) &unique_id_checksum, (gpointer *) &living)) break; total++; if (g_hash_table_contains (self->reading_hash, unique_id_checksum) || g_hash_table_contains (self->writing_hash, unique_id_checksum)) { active++; continue; } BZ_BEGIN_GUARD_WITH_CONTEXT (&guard1, &living->mutex, &living->gate); entry = g_weak_ref_get (&living->wr); if (entry != NULL) alive++; else { bz_clear_guard (&guard1); g_hash_table_iter_remove (&iter); pruned++; } } bz_clear_guard (&guard0); #ifdef __GLIBC__ malloc_trim (0); #endif g_debug ("Sweep report: finished in %.4f seconds, including time to acquire guards\n" " Out of a total of %d entries considered:\n" " %d were skipped due to active tasks being associated with them\n" " %d application entries were otherwise kept alive\n" " %d entries were forgotten by the application and were pruned\n" " Another sweep will take place in %d msec", g_timer_elapsed (timer, NULL), total, active, alive, pruned, WATCH_CLEANUP_INTERVAL_MSEC); g_mutex_lock (&self->mutex); self->living_entries = active + alive; g_mutex_unlock (&self->mutex); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) notify_props_fiber, bz_track_weak (self), bz_weak_release)); return dex_timeout_new_msec (WATCH_CLEANUP_INTERVAL_MSEC); } static DexFuture * notify_props_fiber (GWeakRef *wr) { g_autoptr (BzEntryCacheManager) self = NULL; bz_weak_get_or_return_reject (self, wr); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LIVING_ENTRIES]); return dex_future_new_true (); } /* End of bz-entry-cache-manager.c */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-cache-manager.h����������������������������������������������0000664�0000000�0000000�00000003650�15240005042�0022525�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-cache-manager.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> #include "bz-entry.h" G_BEGIN_DECLS #define BZ_ENTRY_CACHE_ERROR (bz_entry_cache_error_quark ()) GQuark bz_entry_cache_error_quark (void); typedef enum { BZ_ENTRY_CACHE_ERROR_CACHE_FAILED = 0, BZ_ENTRY_CACHE_ERROR_DECACHE_FAILED, BZ_ENTRY_CACHE_ERROR_ENUMERATE_FAILED, } BzEntry_CacheError; #define BZ_TYPE_ENTRY_CACHE_MANAGER (bz_entry_cache_manager_get_type ()) G_DECLARE_FINAL_TYPE (BzEntryCacheManager, bz_entry_cache_manager, BZ, ENTRY_CACHE_MANAGER, GObject) BzEntryCacheManager * bz_entry_cache_manager_new (void); guint bz_entry_cache_manager_get_living_entries (BzEntryCacheManager *self); DexFuture * bz_entry_cache_manager_add (BzEntryCacheManager *self, BzEntry *entry); DexFuture * bz_entry_cache_manager_get (BzEntryCacheManager *self, const char *unique_id); DexFuture * bz_entry_cache_manager_get_by_checksum (BzEntryCacheManager *self, const char *unique_id_checksum); DexFuture * bz_entry_cache_manager_enumerate_disk (BzEntryCacheManager *self); G_END_DECLS /* End of bz-entry-cache-manager.h */ ����������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-group-util.c�������������������������������������������������0000664�0000000�0000000�00000010034�15240005042�0022146�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-group-util.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <adwaita.h> #include <glib/gi18n.h> #include "bz-entry-group-util.h" #include "error.h" BzEntry * bz_entry_group_find_entry (BzEntryGroup *group, gboolean (*test) (BzEntry *entry), GtkWidget *window, GError **error) { g_autoptr (GListModel) model = NULL; guint n_items = 0; g_autoptr (GPtrArray) candidates = NULL; g_return_val_if_fail (BZ_IS_ENTRY_GROUP (group), NULL); model = dex_await_object (bz_entry_group_dup_all_into_store (group), error); if (model == NULL) return NULL; n_items = g_list_model_get_n_items (model); candidates = g_ptr_array_new_with_free_func (g_object_unref); for (guint i = 0; i < n_items; i++) { g_autoptr (BzEntry) entry = NULL; entry = g_list_model_get_item (model, i); if (bz_entry_is_installed (entry) && (test == NULL || test (entry))) g_ptr_array_add (candidates, g_steal_pointer (&entry)); } if (candidates->len == 0) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, "BUG: No entry candidates satisfied this test condition"); return NULL; } else if (candidates->len == 1) return g_ptr_array_steal_index_fast (candidates, 0); else if (window != NULL) { AdwDialog *alert = NULL; g_autofree char *response = NULL; alert = adw_alert_dialog_new (NULL, NULL); adw_alert_dialog_set_prefer_wide_layout (ADW_ALERT_DIALOG (alert), TRUE); adw_alert_dialog_format_heading ( ADW_ALERT_DIALOG (alert), _ ("Choose an Installation")); adw_alert_dialog_format_body ( ADW_ALERT_DIALOG (alert), _ ("You have multiple versions of this app installed. Which " "one would you like to proceed with?")); adw_alert_dialog_add_responses ( ADW_ALERT_DIALOG (alert), "cancel", _ ("Cancel"), NULL); adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (alert), "cancel"); adw_alert_dialog_set_response_appearance ( ADW_ALERT_DIALOG (alert), "cancel", ADW_RESPONSE_DESTRUCTIVE); for (guint i = 0; i < candidates->len; i++) { BzEntry *entry = NULL; const char *unique_id = NULL; entry = g_ptr_array_index (candidates, i); unique_id = bz_entry_get_unique_id (entry); adw_alert_dialog_add_responses ( ADW_ALERT_DIALOG (alert), unique_id, unique_id, NULL); if (i == 0) adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (alert), unique_id); } adw_dialog_present (alert, GTK_WIDGET (window)); response = dex_await_string ( bz_make_alert_dialog_future (ADW_ALERT_DIALOG (alert)), NULL); if (response != NULL) { for (guint i = 0; i < candidates->len; i++) { BzEntry *entry = NULL; const char *unique_id = NULL; entry = g_ptr_array_index (candidates, i); unique_id = bz_entry_get_unique_id (entry); if (g_strcmp0 (unique_id, response) == 0) return g_object_ref (entry); } } } return NULL; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-group-util.h�������������������������������������������������0000664�0000000�0000000�00000002123�15240005042�0022153�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-group-util.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include "bz-entry.h" #include <gtk/gtk.h> G_BEGIN_DECLS BzEntry * bz_entry_group_find_entry (BzEntryGroup *group, gboolean (*test) (BzEntry *entry), GtkWidget *window, GError **error); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-group.c������������������������������������������������������0000664�0000000�0000000�00000166237�15240005042�0021214�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-group.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::ENTRY-GROUP" #define BAZAAR_MODULE "entry-group" #include "bz-entry-group.h" #include "env.h" #include "io.h" #include "bz-size-result.h" #include "util.h" typedef enum { ENTRY_INSTALLABLE = 1 << 0, ENTRY_INSTALLABLE_AVAILABLE = 1 << 1, ENTRY_UPDATABLE = 1 << 2, ENTRY_UPDATABLE_AVAILABLE = 1 << 3, ENTRY_REMOVABLE = 1 << 4, ENTRY_REMOVABLE_AVAILABLE = 1 << 5, } EntryStateFlags; struct _BzEntryGroup { GObject parent_instance; BzApplicationMapFactory *factory; GtkStringList *unique_ids; GtkStringList *installed_versions; GArray *state_flags; char *id; char *title; char *developer; char *description; GIcon *mini_icon; gboolean is_floss; char *light_accent_color; char *dark_accent_color; gboolean is_flathub; gboolean is_verified; char *search_tokens; char *eol; guint64 installed_size; GtkStringList *addon_group_ids; int n_addons; char *donation_url; BzCategoryFlags categories; int content_age_rating; int max_usefulness; int installable; int updatable; int removable; int installable_available; int updatable_available; int removable_available; gboolean read_only; gboolean searchable; gboolean is_addon; guint64 user_data_size; guint64 cache_size; DexFuture *user_data_size_future; DexFuture *reap_user_data_future; DexFuture *reap_cache_future; GWeakRef ui_entry; BzResult *standalone_ui_entry; GMutex mutex; }; G_DEFINE_FINAL_TYPE (BzEntryGroup, bz_entry_group, G_TYPE_OBJECT) enum { PROP_0, PROP_MODEL, PROP_ADDONS_MODEL, PROP_INSTALLED_VERSIONS, PROP_ID, PROP_TITLE, PROP_DEVELOPER, PROP_DESCRIPTION, PROP_MINI_ICON, PROP_IS_FLOSS, PROP_LIGHT_ACCENT_COLOR, PROP_DARK_ACCENT_COLOR, PROP_IS_FLATHUB, PROP_IS_VERIFIED, PROP_SEARCH_TOKENS, PROP_UI_ENTRY, PROP_EOL, PROP_INSTALLED_SIZE, PROP_N_ADDONS, PROP_DONATION_URL, PROP_CATEGORIES, PROP_INSTALLABLE, PROP_UPDATABLE, PROP_REMOVABLE, PROP_INSTALLABLE_AND_AVAILABLE, PROP_UPDATABLE_AND_AVAILABLE, PROP_REMOVABLE_AND_AVAILABLE, PROP_USER_DATA_SIZE, PROP_CACHE_SIZE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void installed_changed (BzEntryGroup *self, GParamSpec *pspec, BzEntry *entry); static void holding_changed (BzEntryGroup *self, GParamSpec *pspec, BzEntry *entry); static DexFuture * dup_all_into_store_fiber (BzEntryGroup *self); static DexFuture * user_data_size_then (DexFuture *future, GWeakRef *wr); static void check_user_data_size (BzEntryGroup *self); static void bz_entry_group_dispose (GObject *object) { BzEntryGroup *self = BZ_ENTRY_GROUP (object); dex_clear (&self->user_data_size_future); dex_clear (&self->reap_user_data_future); dex_clear (&self->reap_cache_future); g_clear_object (&self->factory); g_clear_object (&self->unique_ids); g_clear_object (&self->installed_versions); g_clear_pointer (&self->state_flags, g_array_unref); g_clear_pointer (&self->id, g_free); g_clear_pointer (&self->title, g_free); g_clear_pointer (&self->developer, g_free); g_clear_pointer (&self->description, g_free); g_clear_pointer (&self->light_accent_color, g_free); g_clear_pointer (&self->dark_accent_color, g_free); g_clear_object (&self->mini_icon); g_clear_pointer (&self->search_tokens, g_free); g_clear_pointer (&self->eol, g_free); g_clear_pointer (&self->donation_url, g_free); g_weak_ref_clear (&self->ui_entry); g_clear_object (&self->standalone_ui_entry); g_mutex_clear (&self->mutex); G_OBJECT_CLASS (bz_entry_group_parent_class)->dispose (object); } static void bz_entry_group_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzEntryGroup *self = BZ_ENTRY_GROUP (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, bz_entry_group_get_model (self)); break; case PROP_ADDONS_MODEL: g_value_set_object (value, bz_entry_group_get_addon_group_ids (self)); break; case PROP_INSTALLED_VERSIONS: g_value_set_object (value, bz_entry_group_get_installed_versions (self)); break; case PROP_ID: g_value_set_string (value, bz_entry_group_get_id (self)); break; case PROP_TITLE: g_value_set_string (value, bz_entry_group_get_title (self)); break; case PROP_DEVELOPER: g_value_set_string (value, bz_entry_group_get_developer (self)); break; case PROP_DESCRIPTION: g_value_set_string (value, bz_entry_group_get_description (self)); break; case PROP_MINI_ICON: g_value_set_object (value, bz_entry_group_get_mini_icon (self)); break; case PROP_IS_FLOSS: g_value_set_boolean (value, bz_entry_group_get_is_floss (self)); break; case PROP_LIGHT_ACCENT_COLOR: g_value_set_string (value, bz_entry_group_get_light_accent_color (self)); break; case PROP_DARK_ACCENT_COLOR: g_value_set_string (value, bz_entry_group_get_dark_accent_color (self)); break; case PROP_IS_FLATHUB: g_value_set_boolean (value, bz_entry_group_get_is_flathub (self)); break; case PROP_IS_VERIFIED: g_value_set_boolean (value, bz_entry_group_get_is_verified (self)); break; case PROP_SEARCH_TOKENS: g_value_set_boxed (value, bz_entry_group_get_search_tokens (self)); break; case PROP_EOL: g_value_set_string (value, bz_entry_group_get_eol (self)); break; case PROP_INSTALLED_SIZE: g_value_set_uint64 (value, bz_entry_group_get_installed_size (self)); break; case PROP_N_ADDONS: g_value_set_int (value, bz_entry_group_get_n_addons (self)); break; case PROP_DONATION_URL: g_value_set_string (value, bz_entry_group_get_donation_url (self)); break; case PROP_CATEGORIES: g_value_set_uint (value, self->categories); break; case PROP_UI_ENTRY: g_value_take_object (value, bz_entry_group_dup_ui_entry (self)); break; case PROP_INSTALLABLE: g_value_set_int (value, bz_entry_group_get_installable (self)); break; case PROP_UPDATABLE: g_value_set_int (value, bz_entry_group_get_updatable (self)); break; case PROP_REMOVABLE: g_value_set_int (value, bz_entry_group_get_removable (self)); break; case PROP_INSTALLABLE_AND_AVAILABLE: g_value_set_int (value, bz_entry_group_get_installable_and_available (self)); break; case PROP_UPDATABLE_AND_AVAILABLE: g_value_set_int (value, bz_entry_group_get_updatable_and_available (self)); break; case PROP_REMOVABLE_AND_AVAILABLE: g_value_set_int (value, bz_entry_group_get_removable_and_available (self)); break; case PROP_USER_DATA_SIZE: g_value_set_uint64 (value, bz_entry_group_get_user_data_size (self)); break; case PROP_CACHE_SIZE: g_value_set_uint64 (value, bz_entry_group_get_cache_size (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_group_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { // BzEntryGroup *self = BZ_ENTRY_GROUP (object); switch (prop_id) { case PROP_MODEL: case PROP_ADDONS_MODEL: case PROP_ID: case PROP_TITLE: case PROP_DEVELOPER: case PROP_DESCRIPTION: case PROP_MINI_ICON: case PROP_IS_FLOSS: case PROP_LIGHT_ACCENT_COLOR: case PROP_DARK_ACCENT_COLOR: case PROP_IS_FLATHUB: case PROP_IS_VERIFIED: case PROP_SEARCH_TOKENS: case PROP_EOL: case PROP_UI_ENTRY: case PROP_INSTALLABLE: case PROP_UPDATABLE: case PROP_REMOVABLE: case PROP_INSTALLABLE_AND_AVAILABLE: case PROP_UPDATABLE_AND_AVAILABLE: case PROP_REMOVABLE_AND_AVAILABLE: case PROP_USER_DATA_SIZE: case PROP_CACHE_SIZE: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_group_class_init (BzEntryGroupClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_entry_group_set_property; object_class->get_property = bz_entry_group_get_property; object_class->dispose = bz_entry_group_dispose; props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE); props[PROP_ADDONS_MODEL] = g_param_spec_object ( "addons-model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE); props[PROP_INSTALLED_VERSIONS] = g_param_spec_object ( "installed-versions", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE); props[PROP_ID] = g_param_spec_string ( "id", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_TITLE] = g_param_spec_string ( "title", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_DEVELOPER] = g_param_spec_string ( "developer", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_DESCRIPTION] = g_param_spec_string ( "description", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_MINI_ICON] = g_param_spec_object ( "mini-icon", NULL, NULL, G_TYPE_ICON, G_PARAM_READABLE); props[PROP_IS_FLOSS] = g_param_spec_boolean ( "is-floss", NULL, NULL, FALSE, G_PARAM_READABLE); props[PROP_LIGHT_ACCENT_COLOR] = g_param_spec_string ( "light-accent-color", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_DARK_ACCENT_COLOR] = g_param_spec_string ( "dark-accent-color", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_IS_FLATHUB] = g_param_spec_boolean ( "is-flathub", NULL, NULL, FALSE, G_PARAM_READABLE); props[PROP_IS_VERIFIED] = g_param_spec_boolean ( "is-verified", NULL, NULL, FALSE, G_PARAM_READABLE); props[PROP_SEARCH_TOKENS] = g_param_spec_string ( "search-tokens", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_EOL] = g_param_spec_string ( "eol", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_INSTALLED_SIZE] = g_param_spec_uint64 ( "installed-size", NULL, NULL, 0, G_MAXUINT64, 0, G_PARAM_READABLE); props[PROP_N_ADDONS] = g_param_spec_int ( "n-addons", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READABLE); props[PROP_DONATION_URL] = g_param_spec_string ( "donation-url", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_CATEGORIES] = g_param_spec_uint ( "categories", NULL, NULL, 0, G_MAXUINT, BZ_CATEGORY_FLAGS_NONE, G_PARAM_READABLE); props[PROP_UI_ENTRY] = g_param_spec_object ( "ui-entry", NULL, NULL, BZ_TYPE_RESULT, G_PARAM_READABLE); props[PROP_INSTALLABLE] = g_param_spec_int ( "installable", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READABLE); props[PROP_UPDATABLE] = g_param_spec_int ( "updatable", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READABLE); props[PROP_REMOVABLE] = g_param_spec_int ( "removable", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READABLE); props[PROP_INSTALLABLE_AND_AVAILABLE] = g_param_spec_int ( "installable-and-available", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READABLE); props[PROP_UPDATABLE_AND_AVAILABLE] = g_param_spec_int ( "updatable-and-available", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READABLE); props[PROP_REMOVABLE_AND_AVAILABLE] = g_param_spec_int ( "removable-and-available", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READABLE); props[PROP_USER_DATA_SIZE] = g_param_spec_uint64 ( "user-data-size", NULL, NULL, 0, G_MAXUINT64, 0, G_PARAM_READABLE); props[PROP_CACHE_SIZE] = g_param_spec_uint64 ( "cache-size", NULL, NULL, 0, G_MAXUINT64, 0, G_PARAM_READABLE); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_entry_group_init (BzEntryGroup *self) { self->unique_ids = gtk_string_list_new (NULL); self->installed_versions = gtk_string_list_new (NULL); self->state_flags = g_array_new (FALSE, TRUE, sizeof (gint32)); self->max_usefulness = -1; g_weak_ref_init (&self->ui_entry, NULL); self->standalone_ui_entry = NULL; g_mutex_init (&self->mutex); } BzEntryGroup * bz_entry_group_new (BzApplicationMapFactory *factory) { BzEntryGroup *group = NULL; g_return_val_if_fail (BZ_IS_APPLICATION_MAP_FACTORY (factory), NULL); group = g_object_new (BZ_TYPE_ENTRY_GROUP, NULL); group->factory = g_object_ref (factory); return group; } BzEntryGroup * bz_entry_group_new_for_single_entry (BzEntry *entry) { BzEntryGroup *group = NULL; const char *id = NULL; const char *unique_id = NULL; const char *title = NULL; const char *developer = NULL; const char *description = NULL; GIcon *mini_icon = NULL; const char *search_tokens = NULL; gboolean is_floss = FALSE; const char *light_accent_color = NULL; const char *dark_accent_color = NULL; gboolean is_flathub = FALSE; gboolean is_verified = FALSE; const char *eol = NULL; guint64 installed_size = 0; const char *donation_url = NULL; BzCategoryFlags entry_categories = BZ_CATEGORY_FLAGS_NONE; DexFuture *future = NULL; g_return_val_if_fail (BZ_IS_ENTRY (entry), NULL); group = g_object_new (BZ_TYPE_ENTRY_GROUP, NULL); id = bz_entry_get_id (entry); unique_id = bz_entry_get_unique_id (entry); title = bz_entry_get_title (entry); developer = bz_entry_get_developer (entry); description = bz_entry_get_description (entry); mini_icon = bz_entry_get_mini_icon (entry); search_tokens = bz_entry_get_search_tokens (entry); is_floss = bz_entry_get_is_foss (entry); light_accent_color = bz_entry_get_light_accent_color (entry); dark_accent_color = bz_entry_get_dark_accent_color (entry); is_flathub = bz_entry_get_is_flathub (entry); is_verified = bz_entry_is_verified (entry); eol = bz_entry_get_eol (entry); installed_size = bz_entry_get_installed_size (entry); donation_url = bz_entry_get_donation_url (entry); entry_categories = bz_entry_get_category_flags (entry); if (id != NULL) group->id = g_strdup (id); if (title != NULL) group->title = g_strdup (title); if (developer != NULL) group->developer = g_strdup (developer); if (description != NULL) group->description = g_strdup (description); if (mini_icon != NULL) group->mini_icon = g_object_ref (mini_icon); if (search_tokens != NULL) group->search_tokens = g_strdup (search_tokens); group->is_floss = is_floss; if (light_accent_color != NULL) group->light_accent_color = g_strdup (light_accent_color); if (dark_accent_color != NULL) group->dark_accent_color = g_strdup (dark_accent_color); group->is_flathub = is_flathub; group->is_verified = is_verified; if (eol != NULL) group->eol = g_strdup (eol); group->installed_size = installed_size; if (donation_url != NULL) group->donation_url = g_strdup (donation_url); group->categories = entry_categories; if (unique_id != NULL) gtk_string_list_append (group->unique_ids, unique_id); future = dex_future_new_for_object (entry); group->standalone_ui_entry = bz_result_new (future); dex_unref (future); return group; } BzEntryGroup * bz_entry_group_new_manual (const char *id, const char *title, const char *subtitle) { BzEntryGroup *group = g_object_new (BZ_TYPE_ENTRY_GROUP, NULL); if (id != NULL) group->id = g_strdup (id); if (title != NULL) group->title = g_strdup (title); if (subtitle != NULL) group->description = g_strdup (subtitle); return group; } GMutexLocker * bz_entry_group_lock (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return g_mutex_locker_new (&self->mutex); } GListModel * bz_entry_group_get_model (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return G_LIST_MODEL (self->unique_ids); } GListModel * bz_entry_group_get_installed_versions (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return G_LIST_MODEL (self->installed_versions); } const char * bz_entry_group_get_id (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->id; } const char * bz_entry_group_get_title (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->title; } const char * bz_entry_group_get_developer (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->developer; } const char * bz_entry_group_get_description (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->description; } GIcon * bz_entry_group_get_mini_icon (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->mini_icon; } gboolean bz_entry_group_get_is_floss (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), FALSE); return self->is_floss; } const char * bz_entry_group_get_light_accent_color (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->light_accent_color; } const char * bz_entry_group_get_dark_accent_color (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->dark_accent_color; } gboolean bz_entry_group_get_is_flathub (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), FALSE); return self->is_flathub; } gboolean bz_entry_group_get_is_verified (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), FALSE); return self->is_verified; } gboolean bz_entry_group_get_is_mobile_friendly (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), FALSE); return (self->categories & BZ_CATEGORY_FLAGS_MOBILE) != 0; } const char * bz_entry_group_get_search_tokens (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->search_tokens; } const char * bz_entry_group_get_eol (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->eol; } guint64 bz_entry_group_get_installed_size (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); return self->installed_size; } GListModel * bz_entry_group_get_addon_group_ids (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); if (self->addon_group_ids == NULL) return NULL; return G_LIST_MODEL (self->addon_group_ids); } void bz_entry_group_append_addon_group_id (BzEntryGroup *self, const char *id) { g_return_if_fail (BZ_IS_ENTRY_GROUP (self)); g_return_if_fail (id != NULL); if (self->addon_group_ids == NULL) self->addon_group_ids = gtk_string_list_new (NULL); if (gtk_string_list_find (self->addon_group_ids, id) != G_MAXUINT) return; gtk_string_list_append (self->addon_group_ids, id); } int bz_entry_group_get_n_addons (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); return self->n_addons; } const char * bz_entry_group_get_donation_url (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); return self->donation_url; } gboolean bz_entry_group_has_category (BzEntryGroup *self, const char *name) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), FALSE); return bz_category_flags_has_name (self->categories, name); } BzCategoryFlags bz_entry_group_get_categories (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), BZ_CATEGORY_FLAGS_NONE); return self->categories; } int bz_entry_group_get_content_age_rating (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); return self->content_age_rating; } guint64 bz_entry_group_get_user_data_size (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); check_user_data_size (self); return self->user_data_size; } guint64 bz_entry_group_get_cache_size (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); check_user_data_size (self); return self->cache_size; } BzResult * bz_entry_group_dup_ui_entry (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); if (self->standalone_ui_entry != NULL) return g_object_ref (self->standalone_ui_entry); if (g_list_model_get_n_items (G_LIST_MODEL (self->unique_ids)) > 0) { g_autoptr (BzResult) result = NULL; result = g_weak_ref_get (&self->ui_entry); if (result == NULL) { g_autoptr (GtkStringObject) id = NULL; id = g_list_model_get_item (G_LIST_MODEL (self->unique_ids), 0); result = bz_application_map_factory_convert_one (self->factory, g_steal_pointer (&id)); if (result == NULL) return NULL; g_weak_ref_set (&self->ui_entry, result); } return g_steal_pointer (&result); } else return NULL; } char * bz_entry_group_dup_ui_entry_id (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); if (g_list_model_get_n_items (G_LIST_MODEL (self->unique_ids)) > 0) { g_autoptr (GtkStringObject) id = NULL; id = g_list_model_get_item (G_LIST_MODEL (self->unique_ids), 0); return g_strdup (gtk_string_object_get_string (id)); } else return NULL; } int bz_entry_group_get_installable (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); if (self->read_only) return 0; return self->installable; } int bz_entry_group_get_updatable (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); return self->updatable; } int bz_entry_group_get_removable (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); if (self->read_only) return 0; return self->removable; } int bz_entry_group_get_installable_and_available (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); return self->installable_available; } int bz_entry_group_get_updatable_and_available (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); return self->updatable_available; } int bz_entry_group_get_removable_and_available (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), 0); return self->removable_available; } gboolean bz_entry_group_is_searchable (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), TRUE); return self->searchable; } gboolean bz_entry_group_is_addon (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), FALSE); return self->is_addon; } void bz_entry_group_add (BzEntryGroup *self, BzEntry *entry, BzEntry *runtime, gboolean ignore_eol) { g_autoptr (GMutexLocker) locker = NULL; const char *unique_id = NULL; const char *installed_version = NULL; gint usefulness = 0; const char *eol = NULL; const char *title = NULL; const char *developer = NULL; const char *description = NULL; GIcon *mini_icon = NULL; const char *search_tokens = NULL; gboolean is_floss = FALSE; const char *light_accent_color = NULL; const char *dark_accent_color = NULL; gboolean is_flathub = FALSE; gboolean is_verified = FALSE; guint64 installed_size = 0; GListModel *addons = NULL; int n_addons = 0; const char *donation_url = NULL; BzCategoryFlags entry_categories = BZ_CATEGORY_FLAGS_NONE; guint existing = 0; gboolean is_searchable = FALSE; AsContentRating *content_rating = NULL; gboolean is_addon = FALSE; gint32 state_flags = 0; g_return_if_fail (BZ_IS_ENTRY_GROUP (self)); g_return_if_fail (BZ_IS_ENTRY (entry)); g_return_if_fail (runtime == NULL || BZ_IS_ENTRY (runtime)); locker = g_mutex_locker_new (&self->mutex); is_addon = bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_ADDON); if (is_addon) self->is_addon = TRUE; if (self->id == NULL) { self->id = g_strdup (bz_entry_get_id (entry)); self->read_only = g_strcmp0 (self->id, g_application_get_application_id (g_application_get_default ())) == 0; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ID]); } unique_id = bz_entry_get_unique_id (entry); installed_version = bz_entry_get_installed_version (entry); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLED_VERSIONS]); if (!ignore_eol) { eol = bz_entry_get_eol (entry); if (eol == NULL && runtime != NULL) eol = bz_entry_get_eol (runtime); if (eol != NULL) { g_clear_pointer (&self->eol, g_free); self->eol = g_strdup (eol); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_EOL]); } } title = bz_entry_get_title (entry); description = bz_entry_get_description (entry); installed_size = bz_entry_get_installed_size (entry); is_flathub = bz_entry_get_is_flathub (entry); is_floss = bz_entry_get_is_foss (entry); if (is_addon) // You would not see any addon when the filter is on without this. is_verified = TRUE; if (!is_addon) { developer = bz_entry_get_developer (entry); mini_icon = bz_entry_get_mini_icon (entry); search_tokens = bz_entry_get_search_tokens (entry); light_accent_color = bz_entry_get_light_accent_color (entry); dark_accent_color = bz_entry_get_dark_accent_color (entry); is_verified = bz_entry_is_verified (entry); donation_url = bz_entry_get_donation_url (entry); entry_categories = bz_entry_get_category_flags (entry); content_rating = bz_entry_get_content_rating (entry); addons = bz_entry_get_addons (entry); is_searchable = bz_entry_is_searchable (entry); if (addons != NULL) n_addons = g_list_model_get_n_items (addons); } usefulness = bz_entry_calc_usefulness (entry); existing = gtk_string_list_find (self->unique_ids, unique_id); if (usefulness >= self->max_usefulness) { if (existing != G_MAXUINT) { gtk_string_list_remove (self->unique_ids, existing); gtk_string_list_remove (self->installed_versions, existing); } gtk_string_list_splice (self->unique_ids, 0, 0, (const char *const[]) { unique_id, NULL }); gtk_string_list_splice (self->installed_versions, 0, 0, (const char *const[]) { installed_version != NULL ? installed_version : "", NULL }); if (title != NULL) { g_clear_pointer (&self->title, g_free); self->title = g_strdup (title); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TITLE]); } if (description != NULL) { g_clear_pointer (&self->description, g_free); self->description = g_strdup (description); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DESCRIPTION]); } if (installed_size != self->installed_size) { self->installed_size = installed_size; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLED_SIZE]); } if (!!is_flathub != !!self->is_flathub) { self->is_flathub = is_flathub; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_IS_FLATHUB]); } if (!!is_floss != !!self->is_floss) { self->is_floss = is_floss; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_IS_FLOSS]); } if (!!is_verified != !!self->is_verified) { self->is_verified = is_verified; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_IS_VERIFIED]); } if (!is_addon) { if (developer != NULL) { g_clear_pointer (&self->developer, g_free); self->developer = g_strdup (developer); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEVELOPER]); } if (mini_icon != NULL) { g_clear_object (&self->mini_icon); self->mini_icon = g_object_ref (mini_icon); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MINI_ICON]); } if (search_tokens != NULL) { g_clear_pointer (&self->search_tokens, g_free); self->search_tokens = g_strdup (search_tokens); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SEARCH_TOKENS]); } if (light_accent_color != NULL) { g_clear_pointer (&self->light_accent_color, g_free); self->light_accent_color = g_strdup (light_accent_color); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LIGHT_ACCENT_COLOR]); } if (dark_accent_color != NULL) { g_clear_pointer (&self->dark_accent_color, g_free); self->dark_accent_color = g_strdup (dark_accent_color); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DARK_ACCENT_COLOR]); } if (n_addons != self->n_addons) { self->n_addons = n_addons; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_N_ADDONS]); } if (donation_url != NULL) { g_clear_pointer (&self->donation_url, g_free); self->donation_url = g_strdup (donation_url); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DONATION_URL]); } if (entry_categories != BZ_CATEGORY_FLAGS_NONE) { self->categories = entry_categories; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CATEGORIES]); } if (content_rating != NULL) self->content_age_rating = as_content_rating_get_minimum_age (content_rating); } self->max_usefulness = usefulness; } else { if (existing == G_MAXUINT) { gtk_string_list_append (self->unique_ids, unique_id); gtk_string_list_append (self->installed_versions, installed_version != NULL ? installed_version : ""); } if (title != NULL && self->title == NULL) { self->title = g_strdup (title); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TITLE]); } if (description != NULL && self->description == NULL) { self->description = g_strdup (description); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DESCRIPTION]); } if (installed_size > 0 && self->installed_size == 0) { self->installed_size = installed_size; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLED_SIZE]); } if (!is_addon) { if (developer != NULL && self->developer == NULL) { self->developer = g_strdup (developer); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEVELOPER]); } if (mini_icon != NULL && self->mini_icon == NULL) { self->mini_icon = g_object_ref (mini_icon); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MINI_ICON]); } if (search_tokens != NULL && self->search_tokens == NULL) { self->search_tokens = g_strdup (search_tokens); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SEARCH_TOKENS]); } if (light_accent_color != NULL && self->light_accent_color == NULL) { self->light_accent_color = g_strdup (light_accent_color); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LIGHT_ACCENT_COLOR]); } if (dark_accent_color != NULL && self->dark_accent_color == NULL) { self->dark_accent_color = g_strdup (dark_accent_color); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DARK_ACCENT_COLOR]); } if (donation_url != NULL && self->donation_url == NULL) { self->donation_url = g_strdup (donation_url); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DONATION_URL]); } } } if (existing != G_MAXUINT) { gint32 previous_state_flags = 0; /* revert the old state if we are replacing */ previous_state_flags = g_array_index (self->state_flags, gint32, existing); if (previous_state_flags & ENTRY_INSTALLABLE) self->installable--; if (previous_state_flags & ENTRY_INSTALLABLE_AVAILABLE) self->installable_available--; if (previous_state_flags & ENTRY_UPDATABLE) self->updatable--; if (previous_state_flags & ENTRY_UPDATABLE_AVAILABLE) self->updatable_available--; if (previous_state_flags & ENTRY_REMOVABLE) self->removable--; if (previous_state_flags & ENTRY_REMOVABLE_AVAILABLE) self->removable_available--; } if (bz_entry_is_installed (entry)) { self->removable++; state_flags |= ENTRY_REMOVABLE; if (!bz_entry_is_holding (entry)) { self->removable_available++; state_flags |= ENTRY_REMOVABLE_AVAILABLE; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE_AND_AVAILABLE]); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE]); } else { if (bz_entry_is_reinstallable (entry)) { self->installable++; state_flags |= ENTRY_INSTALLABLE; if (!bz_entry_is_holding (entry)) { self->installable_available++; state_flags |= ENTRY_INSTALLABLE_AVAILABLE; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE_AND_AVAILABLE]); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE]); } } if (existing != G_MAXUINT) g_array_index (self->state_flags, gint32, existing) = state_flags; else g_array_append_val (self->state_flags, state_flags); if (!is_addon && is_searchable) self->searchable = TRUE; } void bz_entry_group_connect_living (BzEntryGroup *self, BzEntry *entry) { g_autoptr (GMutexLocker) locker = NULL; g_return_if_fail (BZ_IS_ENTRY_GROUP (self)); g_return_if_fail (BZ_IS_ENTRY (entry)); locker = g_mutex_locker_new (&self->mutex); g_signal_handlers_disconnect_by_func (entry, installed_changed, self); g_signal_handlers_disconnect_by_func (entry, holding_changed, self); g_signal_connect_object (entry, "notify::installed", G_CALLBACK (installed_changed), self, G_CONNECT_SWAPPED); g_signal_connect_object (entry, "notify::holding", G_CALLBACK (holding_changed), self, G_CONNECT_SWAPPED); } DexFuture * bz_entry_group_dup_all_into_store (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); /* _must_ be the main scheduler since invocations * of BzApplicationMapFactory functions expect this */ return dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) dup_all_into_store_fiber, g_object_ref (self), g_object_unref); } static void installed_changed (BzEntryGroup *self, GParamSpec *pspec, BzEntry *entry) { g_autoptr (GMutexLocker) locker = NULL; gboolean reinstallable = FALSE; const char *unique_id = NULL; const char *version = NULL; guint index = 0; gint32 state_flags = 0; locker = g_mutex_locker_new (&self->mutex); reinstallable = bz_entry_is_reinstallable (entry); unique_id = bz_entry_get_unique_id (entry); version = bz_entry_get_installed_version (entry); index = gtk_string_list_find (self->unique_ids, unique_id); if (index == G_MAXUINT) return; state_flags = g_array_index (self->state_flags, gint32, index); gtk_string_list_splice (self->installed_versions, index, 1, (const char *const[]) { version != NULL ? version : "", NULL }); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLED_VERSIONS]); if (bz_entry_is_installed (entry)) { if (state_flags & ENTRY_INSTALLABLE) { self->installable--; state_flags &= ~ENTRY_INSTALLABLE; } if (!(state_flags & ENTRY_REMOVABLE)) { self->removable++; state_flags |= ENTRY_REMOVABLE; } if (!bz_entry_is_holding (entry)) { if (state_flags & ENTRY_INSTALLABLE_AVAILABLE) { self->installable_available--; state_flags &= ~ENTRY_INSTALLABLE_AVAILABLE; } if (!(state_flags & ENTRY_REMOVABLE_AVAILABLE)) { self->removable_available++; state_flags |= ENTRY_REMOVABLE_AVAILABLE; } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE_AND_AVAILABLE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE_AND_AVAILABLE]); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE]); } else { if (state_flags & ENTRY_REMOVABLE) { self->removable--; state_flags &= ~ENTRY_REMOVABLE; } if (reinstallable) { if (!(state_flags & ENTRY_INSTALLABLE)) { self->installable++; state_flags |= ENTRY_INSTALLABLE; } } if (!bz_entry_is_holding (entry)) { if (state_flags & ENTRY_REMOVABLE_AVAILABLE) { self->removable_available--; state_flags &= ~ENTRY_REMOVABLE_AVAILABLE; } if (reinstallable) { if (!(state_flags & ENTRY_INSTALLABLE_AVAILABLE)) { self->installable_available++; state_flags |= ENTRY_INSTALLABLE_AVAILABLE; } } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE_AND_AVAILABLE]); if (reinstallable) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE_AND_AVAILABLE]); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE]); if (reinstallable) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE]); } g_array_index (self->state_flags, gint32, index) = state_flags; dex_clear (&self->user_data_size_future); dex_clear (&self->reap_cache_future); self->user_data_size = 0; self->cache_size = 0; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_USER_DATA_SIZE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CACHE_SIZE]); } static void holding_changed (BzEntryGroup *self, GParamSpec *pspec, BzEntry *entry) { g_autoptr (GMutexLocker) locker = NULL; gboolean reinstallable = FALSE; const char *unique_id = NULL; guint index = 0; gint32 state_flags = 0; locker = g_mutex_locker_new (&self->mutex); reinstallable = bz_entry_is_reinstallable (entry); unique_id = bz_entry_get_unique_id (entry); index = gtk_string_list_find (self->unique_ids, unique_id); if (index == G_MAXUINT) return; state_flags = g_array_index (self->state_flags, gint32, index); if (bz_entry_is_holding (entry)) { if (bz_entry_is_installed (entry)) { if (state_flags & ENTRY_REMOVABLE_AVAILABLE) { self->removable_available--; state_flags &= ~ENTRY_REMOVABLE_AVAILABLE; } } else { if (state_flags & ENTRY_INSTALLABLE_AVAILABLE) { self->installable_available--; state_flags &= ~ENTRY_INSTALLABLE_AVAILABLE; } } } else { if (bz_entry_is_installed (entry)) { if (!(state_flags & ENTRY_REMOVABLE_AVAILABLE)) { self->removable_available++; state_flags |= ENTRY_REMOVABLE_AVAILABLE; } } else if (reinstallable) { if (!(state_flags & ENTRY_INSTALLABLE_AVAILABLE)) { self->installable_available++; state_flags |= ENTRY_INSTALLABLE_AVAILABLE; } } } g_array_index (self->state_flags, gint32, index) = state_flags; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE_AND_AVAILABLE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE_AND_AVAILABLE]); } static DexFuture * dup_all_into_store_fiber (BzEntryGroup *self) { g_autoptr (GPtrArray) futures = NULL; guint n_items = 0; g_autoptr (GListStore) store = NULL; guint n_resolved = 0; futures = g_ptr_array_new_with_free_func (dex_unref); n_items = g_list_model_get_n_items (G_LIST_MODEL (self->unique_ids)); for (guint i = 0; i < n_items; i++) { g_autoptr (GtkStringObject) string = NULL; g_autoptr (BzResult) result = NULL; string = g_list_model_get_item (G_LIST_MODEL (self->unique_ids), i); result = bz_application_map_factory_convert_one (self->factory, g_steal_pointer (&string)); g_ptr_array_add (futures, bz_result_dup_future (result)); } dex_await (dex_future_allv ( (DexFuture *const *) futures->pdata, futures->len), NULL); store = g_list_store_new (BZ_TYPE_ENTRY); for (guint i = 0; i < futures->len; i++) { DexFuture *future = NULL; future = g_ptr_array_index (futures, i); if (dex_future_is_resolved (future)) { BzEntry *entry = NULL; entry = g_value_get_object (dex_future_get_value (future, NULL)); bz_entry_group_connect_living (self, entry); g_list_store_append (store, entry); } } n_resolved = g_list_model_get_n_items (G_LIST_MODEL (store)); if (n_resolved == 0) { g_warning ("No entries for %s were able to be resolved", self->id); return dex_future_new_reject ( G_IO_ERROR, G_IO_ERROR_UNKNOWN, "No entries for %s were able to be resolved", self->id); } if (n_resolved != n_items) g_warning ("Some entries for %s failed to resolve", self->id); return dex_future_new_for_object (store); } static DexFuture * reap_user_data_then (DexFuture *future, GWeakRef *wr) { g_autoptr (BzEntryGroup) self = NULL; bz_weak_get_or_return_reject (self, wr); dex_clear (&self->reap_user_data_future); self->user_data_size = 0; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_USER_DATA_SIZE]); return dex_future_new_true (); } DexFuture * bz_entry_group_reap_user_data (BzEntryGroup *self) { dex_return_error_if_fail (BZ_IS_ENTRY_GROUP (self)); dex_return_error_if_fail (self->id != NULL); if (self->reap_user_data_future != NULL) return dex_ref (self->reap_user_data_future); self->reap_user_data_future = dex_future_then ( bz_reap_user_data_dex (self->id), (DexFutureCallback) reap_user_data_then, bz_track_weak (self), bz_weak_release); return dex_ref (self->reap_user_data_future); } static DexFuture * reap_user_cache_then (DexFuture *future, GWeakRef *wr) { g_autoptr (BzEntryGroup) self = NULL; bz_weak_get_or_return_reject (self, wr); dex_clear (&self->reap_cache_future); self->cache_size = 0; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CACHE_SIZE]); return dex_future_new_true (); } DexFuture * bz_entry_group_reap_user_cache (BzEntryGroup *self) { g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), NULL); g_return_val_if_fail (self->id != NULL, NULL); if (self->reap_cache_future != NULL) return dex_ref (self->reap_cache_future); self->reap_cache_future = dex_future_then ( bz_reap_user_cache_dex (self->id), (DexFutureCallback) reap_user_cache_then, bz_track_weak (self), bz_weak_release); return dex_ref (self->reap_cache_future); } static DexFuture * user_data_size_then (DexFuture *future, GWeakRef *wr) { g_autoptr (BzEntryGroup) self = NULL; g_autoptr (GError) error = NULL; g_autoptr (BzSizeResult) sizes = NULL; guint64 new_user_data_size = 0; guint64 new_cache_size = 0; bz_weak_get_or_return_reject (self, wr); sizes = g_value_dup_object (dex_future_get_value (future, &error)); if (error != NULL || sizes == NULL) { g_clear_error (&error); return dex_future_new_true (); } new_user_data_size = bz_size_result_get_user_data_size (sizes); new_cache_size = bz_size_result_get_cache_size (sizes); if (new_user_data_size != self->user_data_size) { self->user_data_size = new_user_data_size; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_USER_DATA_SIZE]); } if (new_cache_size != self->cache_size) { self->cache_size = new_cache_size; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CACHE_SIZE]); } return dex_future_new_true (); } static void check_user_data_size (BzEntryGroup *self) { g_autoptr (DexFuture) future = NULL; if (self->user_data_size_future != NULL || self->id == NULL) return; if (self->reap_user_data_future != NULL || self->reap_cache_future != NULL) return; future = bz_get_user_sizes_dex (self->id); future = dex_future_then ( future, (DexFutureCallback) user_data_size_then, bz_track_weak (self), bz_weak_release); self->user_data_size_future = g_steal_pointer (&future); } void bz_entry_group_serialize (BzEntryGroup *self, GVariantBuilder *builder) { guint n_ids = 0; g_variant_builder_add (builder, "{sv}", "id", g_variant_new_string (self->id ? self->id : "")); g_variant_builder_add (builder, "{sv}", "title", g_variant_new_string (self->title ? self->title : "")); if (self->developer != NULL) g_variant_builder_add (builder, "{sv}", "developer", g_variant_new_string (self->developer)); if (self->description != NULL) g_variant_builder_add (builder, "{sv}", "description", g_variant_new_string (self->description)); if (self->search_tokens != NULL) g_variant_builder_add (builder, "{sv}", "search-tokens", g_variant_new_string (self->search_tokens)); if (self->eol != NULL) g_variant_builder_add (builder, "{sv}", "eol", g_variant_new_string (self->eol)); if (self->light_accent_color != NULL) g_variant_builder_add (builder, "{sv}", "light-accent-color", g_variant_new_string (self->light_accent_color)); if (self->dark_accent_color != NULL) g_variant_builder_add (builder, "{sv}", "dark-accent-color", g_variant_new_string (self->dark_accent_color)); if (self->donation_url != NULL) g_variant_builder_add (builder, "{sv}", "donation-url", g_variant_new_string (self->donation_url)); g_variant_builder_add (builder, "{sv}", "is-floss", g_variant_new_boolean (self->is_floss)); g_variant_builder_add (builder, "{sv}", "is-flathub", g_variant_new_boolean (self->is_flathub)); g_variant_builder_add (builder, "{sv}", "is-verified", g_variant_new_boolean (self->is_verified)); g_variant_builder_add (builder, "{sv}", "is-addon", g_variant_new_boolean (self->is_addon)); g_variant_builder_add (builder, "{sv}", "searchable", g_variant_new_boolean (self->searchable)); g_variant_builder_add (builder, "{sv}", "read-only", g_variant_new_boolean (self->read_only)); g_variant_builder_add (builder, "{sv}", "installed-size", g_variant_new_uint64 (self->installed_size)); g_variant_builder_add (builder, "{sv}", "n-addons", g_variant_new_int32 (self->n_addons)); g_variant_builder_add (builder, "{sv}", "categories", g_variant_new_uint32 (self->categories)); g_variant_builder_add (builder, "{sv}", "content-age-rating", g_variant_new_int32 (self->content_age_rating)); g_variant_builder_add (builder, "{sv}", "max-usefulness", g_variant_new_int32 (self->max_usefulness)); n_ids = g_list_model_get_n_items (G_LIST_MODEL (self->unique_ids)); if (n_ids > 0) { g_autoptr (GVariantBuilder) ids_b = NULL; g_autoptr (GVariantBuilder) iv_b = NULL; g_autoptr (GVariantBuilder) sf_b = NULL; ids_b = g_variant_builder_new (G_VARIANT_TYPE ("as")); iv_b = g_variant_builder_new (G_VARIANT_TYPE ("as")); sf_b = g_variant_builder_new (G_VARIANT_TYPE ("ai")); for (guint i = 0; i < n_ids; i++) { g_autoptr (GtkStringObject) s = NULL; g_autoptr (GtkStringObject) iv = NULL; gint32 flags = 0; s = g_list_model_get_item (G_LIST_MODEL (self->unique_ids), i); iv = g_list_model_get_item (G_LIST_MODEL (self->installed_versions), i); flags = g_array_index (self->state_flags, gint32, i); g_variant_builder_add (ids_b, "s", gtk_string_object_get_string (s)); g_variant_builder_add (iv_b, "s", iv != NULL ? gtk_string_object_get_string (iv) : ""); g_variant_builder_add (sf_b, "i", flags); } g_variant_builder_add (builder, "{sv}", "unique-ids", g_variant_builder_end (ids_b)); g_variant_builder_add (builder, "{sv}", "installed-versions", g_variant_builder_end (iv_b)); g_variant_builder_add (builder, "{sv}", "state-flags", g_variant_builder_end (sf_b)); } if (self->addon_group_ids != NULL) { guint n_addon_ids = 0; n_addon_ids = g_list_model_get_n_items (G_LIST_MODEL (self->addon_group_ids)); if (n_addon_ids > 0) { g_autoptr (GVariantBuilder) addon_b = NULL; addon_b = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint i = 0; i < n_addon_ids; i++) { g_autoptr (GtkStringObject) s = NULL; s = g_list_model_get_item (G_LIST_MODEL (self->addon_group_ids), i); g_variant_builder_add (addon_b, "s", gtk_string_object_get_string (s)); } g_variant_builder_add (builder, "{sv}", "addon-group-ids", g_variant_builder_end (addon_b)); } } if (self->mini_icon != NULL) { g_autoptr (GVariant) icon_variant = NULL; icon_variant = g_icon_serialize (self->mini_icon); if (icon_variant != NULL) g_variant_builder_add (builder, "{sv}", "mini-icon", icon_variant); } } gboolean bz_entry_group_deserialize (BzEntryGroup *self, GVariant *import) { g_autoptr (GVariantIter) iter = NULL; iter = g_variant_iter_new (import); for (;;) { g_autofree char *key = NULL; g_autoptr (GVariant) value = NULL; if (!g_variant_iter_next (iter, "{sv}", &key, &value)) break; if (g_strcmp0 (key, "id") == 0) self->id = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "title") == 0) self->title = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "developer") == 0) self->developer = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "description") == 0) self->description = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "search-tokens") == 0) self->search_tokens = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "eol") == 0) self->eol = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "light-accent-color") == 0) self->light_accent_color = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "dark-accent-color") == 0) self->dark_accent_color = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "donation-url") == 0) self->donation_url = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "is-floss") == 0) self->is_floss = g_variant_get_boolean (value); else if (g_strcmp0 (key, "is-flathub") == 0) self->is_flathub = g_variant_get_boolean (value); else if (g_strcmp0 (key, "is-verified") == 0) self->is_verified = g_variant_get_boolean (value); else if (g_strcmp0 (key, "is-addon") == 0) self->is_addon = g_variant_get_boolean (value); else if (g_strcmp0 (key, "searchable") == 0) self->searchable = g_variant_get_boolean (value); else if (g_strcmp0 (key, "read-only") == 0) self->read_only = g_variant_get_boolean (value); else if (g_strcmp0 (key, "installed-size") == 0) self->installed_size = g_variant_get_uint64 (value); else if (g_strcmp0 (key, "n-addons") == 0) self->n_addons = g_variant_get_int32 (value); else if (g_strcmp0 (key, "categories") == 0) self->categories = g_variant_get_uint32 (value); else if (g_strcmp0 (key, "content-age-rating") == 0) self->content_age_rating = g_variant_get_int32 (value); else if (g_strcmp0 (key, "max-usefulness") == 0) self->max_usefulness = g_variant_get_int32 (value); else if (g_strcmp0 (key, "unique-ids") == 0) { g_autoptr (GVariantIter) ids_iter = NULL; g_autofree char *uid = NULL; ids_iter = g_variant_iter_new (value); while (g_variant_iter_next (ids_iter, "s", &uid)) gtk_string_list_append (self->unique_ids, uid); } else if (g_strcmp0 (key, "installed-versions") == 0) { g_autoptr (GVariantIter) iv_iter = NULL; g_autofree char *iv = NULL; iv_iter = g_variant_iter_new (value); while (g_variant_iter_next (iv_iter, "s", &iv)) gtk_string_list_append (self->installed_versions, iv); } else if (g_strcmp0 (key, "state-flags") == 0) { g_autoptr (GVariantIter) sf_iter = NULL; gint32 flags = 0; sf_iter = g_variant_iter_new (value); while (g_variant_iter_next (sf_iter, "i", &flags)) g_array_append_val (self->state_flags, flags); } else if (g_strcmp0 (key, "addon-group-ids") == 0) { g_autoptr (GVariantIter) addon_iter = NULL; g_autofree char *addon_id = NULL; addon_iter = g_variant_iter_new (value); while (g_variant_iter_next (addon_iter, "s", &addon_id)) bz_entry_group_append_addon_group_id (self, addon_id); } else if (g_strcmp0 (key, "mini-icon") == 0) self->mini_icon = g_icon_deserialize (value); } if (self->id != NULL) self->read_only = g_strcmp0 ( self->id, g_application_get_application_id (g_application_get_default ())) == 0; return self->id != NULL; } gboolean bz_entry_group_reconcile_with_installed_set (BzEntryGroup *self, GHashTable *installed_set) { g_autoptr (GMutexLocker) locker = NULL; guint n_ids = 0; gboolean any_installed = FALSE; g_return_val_if_fail (BZ_IS_ENTRY_GROUP (self), FALSE); g_return_val_if_fail (installed_set != NULL, FALSE); locker = g_mutex_locker_new (&self->mutex); self->installable = 0; self->removable = 0; self->installable_available = 0; self->removable_available = 0; n_ids = g_list_model_get_n_items (G_LIST_MODEL (self->unique_ids)); for (guint i = 0; i < n_ids; i++) { g_autoptr (GtkStringObject) uid_obj = NULL; const char *uid = NULL; gint32 flags = 0; uid_obj = g_list_model_get_item (G_LIST_MODEL (self->unique_ids), i); uid = gtk_string_object_get_string (uid_obj); if (g_hash_table_contains (installed_set, uid)) { flags |= ENTRY_REMOVABLE | ENTRY_REMOVABLE_AVAILABLE; self->removable++; self->removable_available++; any_installed = TRUE; } else { flags |= ENTRY_INSTALLABLE | ENTRY_INSTALLABLE_AVAILABLE; self->installable++; self->installable_available++; } g_array_index (self->state_flags, gint32, i) = flags; } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE_AND_AVAILABLE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLABLE_AND_AVAILABLE]); return any_installed; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-group.h������������������������������������������������������0000664�0000000�0000000�00000011073�15240005042�0021204�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-group.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-application-map-factory.h" #include "bz-entry.h" #include "bz-result.h" G_BEGIN_DECLS #define BZ_TYPE_ENTRY_GROUP (bz_entry_group_get_type ()) G_DECLARE_FINAL_TYPE (BzEntryGroup, bz_entry_group, BZ, ENTRY_GROUP, GObject) BzEntryGroup * bz_entry_group_new (BzApplicationMapFactory *factory); BzEntryGroup * bz_entry_group_new_for_single_entry (BzEntry *entry); BzEntryGroup * bz_entry_group_new_manual (const char *id, const char *title, const char *subtitle); /* Only necessary if reading props from another thread, writing is always prohibited */ GMutexLocker * bz_entry_group_lock (BzEntryGroup *self); GListModel * bz_entry_group_get_model (BzEntryGroup *self); GListModel * bz_entry_group_get_installed_versions (BzEntryGroup *self); const char * bz_entry_group_get_id (BzEntryGroup *self); const char * bz_entry_group_get_title (BzEntryGroup *self); const char * bz_entry_group_get_developer (BzEntryGroup *self); const char * bz_entry_group_get_description (BzEntryGroup *self); GIcon * bz_entry_group_get_mini_icon (BzEntryGroup *self); gboolean bz_entry_group_get_is_floss (BzEntryGroup *self); const char * bz_entry_group_get_light_accent_color (BzEntryGroup *self); const char * bz_entry_group_get_dark_accent_color (BzEntryGroup *self); gboolean bz_entry_group_get_is_flathub (BzEntryGroup *self); gboolean bz_entry_group_get_is_verified (BzEntryGroup *self); gboolean bz_entry_group_get_is_mobile_friendly (BzEntryGroup *self); const char * bz_entry_group_get_search_tokens (BzEntryGroup *self); const char * bz_entry_group_get_eol (BzEntryGroup *self); guint64 bz_entry_group_get_installed_size (BzEntryGroup *self); GListModel * bz_entry_group_get_addon_group_ids (BzEntryGroup *self); void bz_entry_group_append_addon_group_id (BzEntryGroup *self, const char *id); int bz_entry_group_get_n_addons (BzEntryGroup *self); const char * bz_entry_group_get_donation_url (BzEntryGroup *self); gboolean bz_entry_group_has_category (BzEntryGroup *self, const char *name); BzCategoryFlags bz_entry_group_get_categories (BzEntryGroup *self); int bz_entry_group_get_content_age_rating (BzEntryGroup *self); BzResult * bz_entry_group_dup_ui_entry (BzEntryGroup *self); char * bz_entry_group_dup_ui_entry_id (BzEntryGroup *self); int bz_entry_group_get_installable (BzEntryGroup *self); int bz_entry_group_get_updatable (BzEntryGroup *self); int bz_entry_group_get_removable (BzEntryGroup *self); int bz_entry_group_get_installable_and_available (BzEntryGroup *self); int bz_entry_group_get_updatable_and_available (BzEntryGroup *self); int bz_entry_group_get_removable_and_available (BzEntryGroup *self); gboolean bz_entry_group_is_searchable (BzEntryGroup *self); gboolean bz_entry_group_is_addon (BzEntryGroup *self); guint64 bz_entry_group_get_user_data_size (BzEntryGroup *self); guint64 bz_entry_group_get_cache_size (BzEntryGroup *self); DexFuture * bz_entry_group_reap_user_data (BzEntryGroup *self); DexFuture * bz_entry_group_reap_user_cache (BzEntryGroup *self); void bz_entry_group_add (BzEntryGroup *self, BzEntry *entry, BzEntry *runtime, gboolean ignore_eol); void bz_entry_group_connect_living (BzEntryGroup *self, BzEntry *entry); DexFuture * bz_entry_group_dup_all_into_store (BzEntryGroup *self); void bz_entry_group_serialize (BzEntryGroup *self, GVariantBuilder *builder); gboolean bz_entry_group_deserialize (BzEntryGroup *self, GVariant *import); gboolean bz_entry_group_reconcile_with_installed_set (BzEntryGroup *self, GHashTable *installed_set); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-inspector.blp������������������������������������������������0000664�0000000�0000000�00000004533�15240005042�0022407�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzEntryInspector: Adw.Window { title: "Entry Inspector"; default-width: 600; default-height: 800; width-request: 300; height-request: 600; Adw.ToolbarView { top-bar-style: raised_border; bottom-bar-style: raised_border; reveal-bottom-bars: false; content: Box { orientation: vertical; spacing: 5; Label { xalign: 0.0; label: bind template.result as <$BzResult>.message as <string>; } Label { styles [ "heading", ] xalign: 0.0; selectable: true; label: bind template.result as <$BzResult>.object as <$BzEntry>.title; } Label { xalign: 0.0; selectable: true; label: bind template.result as <$BzResult>.object as <$BzEntry>.unique_id; } Label { xalign: 0.0; selectable: true; label: bind template.result as <$BzResult>.object as <$BzEntry>.unique_id_checksum; } Label { xalign: 0.0; selectable: true; label: bind template.result as <$BzResult>.object as <$BzEntry>.id; } Box { orientation: horizontal; spacing: 5; Image { pixel-size: 16; paintable: bind template.result as <$BzResult>.object as <$BzEntry>.icon-paintable; } Image { pixel-size: 32; paintable: bind template.result as <$BzResult>.object as <$BzEntry>.icon-paintable; } Image { pixel-size: 64; paintable: bind template.result as <$BzResult>.object as <$BzEntry>.icon-paintable; } Image { pixel-size: 128; paintable: bind template.result as <$BzResult>.object as <$BzEntry>.icon-paintable; } } Box { orientation: horizontal; Button { label: "Serialize"; clicked => $gen_serialized(template); } CheckButton convert_to_json { label: "Convert to JSON"; active: true; } } ScrolledWindow { propagate-natural-height: true; child: $GtkSourceView { styles [ "monospace", ] // wrap-mode: word_char; buffer: $GtkSourceBuffer text_buffer {}; }; } }; [top] Adw.HeaderBar top_header_bar {} } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-inspector.c��������������������������������������������������0000664�0000000�0000000�00000014462�15240005042�0022056�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-inspector.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <gtksourceview/gtksource.h> #include <json-glib/json-glib.h> #include "bz-entry-inspector.h" #include "bz-entry.h" #include "bz-serializable.h" struct _BzEntryInspector { AdwWindow parent_instance; BzResult *result; /* Template widgets */ GtkSourceBuffer *text_buffer; GtkCheckButton *convert_to_json; }; G_DEFINE_FINAL_TYPE (BzEntryInspector, bz_entry_inspector, ADW_TYPE_WINDOW); enum { PROP_0, PROP_RESULT, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_entry_inspector_dispose (GObject *object) { BzEntryInspector *self = BZ_ENTRY_INSPECTOR (object); g_clear_pointer (&self->result, g_object_unref); G_OBJECT_CLASS (bz_entry_inspector_parent_class)->dispose (object); } static void bz_entry_inspector_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzEntryInspector *self = BZ_ENTRY_INSPECTOR (object); switch (prop_id) { case PROP_RESULT: g_value_set_object (value, bz_entry_inspector_get_result (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_inspector_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzEntryInspector *self = BZ_ENTRY_INSPECTOR (object); switch (prop_id) { case PROP_RESULT: bz_entry_inspector_set_result (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gen_serialized (BzEntryInspector *self, GtkButton *button) { if (bz_result_get_resolved (self->result)) { BzEntry *entry = NULL; g_autoptr (GVariantBuilder) builder = NULL; g_autoptr (GVariant) variant = NULL; g_autofree char *string = NULL; entry = bz_result_get_object (self->result); builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT); bz_serializable_serialize (BZ_SERIALIZABLE (entry), builder); variant = g_variant_builder_end (builder); if (gtk_check_button_get_active (self->convert_to_json)) { g_autoptr (JsonNode) node = NULL; g_autoptr (JsonGenerator) generator = NULL; GtkSourceLanguageManager *lang_mgr = NULL; GtkSourceLanguage *language = NULL; node = json_gvariant_serialize (variant); generator = json_generator_new (); json_generator_set_pretty (generator, TRUE); json_generator_set_root (generator, node); string = json_generator_to_data (generator, NULL); lang_mgr = gtk_source_language_manager_get_default (); language = gtk_source_language_manager_get_language (lang_mgr, "json"); gtk_source_buffer_set_language (self->text_buffer, language); } else { string = g_variant_print (variant, FALSE); gtk_source_buffer_set_language (self->text_buffer, NULL); } gtk_text_buffer_set_text (GTK_TEXT_BUFFER (self->text_buffer), string, -1); } else { gtk_source_buffer_set_language (self->text_buffer, NULL); gtk_text_buffer_set_text ( GTK_TEXT_BUFFER (self->text_buffer), "!!! The entry has not resolved", -1); } } static void bz_entry_inspector_class_init (BzEntryInspectorClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_entry_inspector_set_property; object_class->get_property = bz_entry_inspector_get_property; object_class->dispose = bz_entry_inspector_dispose; props[PROP_RESULT] = g_param_spec_object ( "result", NULL, NULL, BZ_TYPE_RESULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-entry-inspector.ui"); gtk_widget_class_bind_template_child (widget_class, BzEntryInspector, text_buffer); gtk_widget_class_bind_template_child (widget_class, BzEntryInspector, convert_to_json); gtk_widget_class_bind_template_callback (widget_class, gen_serialized); } static void bz_entry_inspector_init (BzEntryInspector *self) { GtkSourceStyleSchemeManager *scheme_mgr = NULL; GtkSourceStyleScheme *scheme = NULL; gtk_widget_init_template (GTK_WIDGET (self)); scheme_mgr = gtk_source_style_scheme_manager_get_default (); scheme = gtk_source_style_scheme_manager_get_scheme (scheme_mgr, "Adwaita-dark"); gtk_source_buffer_set_style_scheme (self->text_buffer, scheme); } BzEntryInspector * bz_entry_inspector_new (void) { return g_object_new (BZ_TYPE_ENTRY_INSPECTOR, NULL); } BzResult * bz_entry_inspector_get_result (BzEntryInspector *self) { g_return_val_if_fail (BZ_IS_ENTRY_INSPECTOR (self), NULL); return self->result; } void bz_entry_inspector_set_result (BzEntryInspector *self, BzResult *result) { g_return_if_fail (BZ_IS_ENTRY_INSPECTOR (self)); g_clear_pointer (&self->result, g_object_unref); if (result != NULL) self->result = g_object_ref (result); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RESULT]); } /* End of bz-entry-inspector.c */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-inspector.h��������������������������������������������������0000664�0000000�0000000�00000002400�15240005042�0022050�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-inspector.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-result.h" G_BEGIN_DECLS #define BZ_TYPE_ENTRY_INSPECTOR (bz_entry_inspector_get_type ()) G_DECLARE_FINAL_TYPE (BzEntryInspector, bz_entry_inspector, BZ, ENTRY_INSPECTOR, AdwWindow) BzEntryInspector * bz_entry_inspector_new (void); BzResult * bz_entry_inspector_get_result (BzEntryInspector *self); void bz_entry_inspector_set_result (BzEntryInspector *self, BzResult *result); G_END_DECLS /* End of bz-entry-inspector.h */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-selection-row.blp��������������������������������������������0000664�0000000�0000000�00000001063�15240005042�0023166�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzEntrySelectionRow: Adw.ActionRow { activatable-widget: radio; [prefix] CheckButton radio { valign: center; } [suffix] Image { visible: bind template.repository as <$BzRepository>.is-user; icon-name: "person-symbolic"; has-tooltip: true; tooltip-text: _("For This User Only"); } title: bind template.repository as <$BzRepository>.title; subtitle: bind $get_subtitle(template.entry as <$BzFlatpakEntry>.flatpak-version, template.repository as <$BzRepository>.is-user) as <string>; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-selection-row.c����������������������������������������������0000664�0000000�0000000�00000011457�15240005042�0022643�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-selection-row.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-entry-selection-row.h" #include "bz-flatpak-entry.h" #include "template-callbacks.h" struct _BzEntrySelectionRow { AdwActionRow parent_instance; GtkCheckButton *radio; BzFlatpakEntry *entry; BzRepository *repository; }; G_DEFINE_FINAL_TYPE (BzEntrySelectionRow, bz_entry_selection_row, ADW_TYPE_ACTION_ROW) enum { PROP_0, PROP_ENTRY, PROP_REPOSITORY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_entry_selection_row_dispose (GObject *object) { BzEntrySelectionRow *self = BZ_ENTRY_SELECTION_ROW (object); g_clear_object (&self->entry); g_clear_object (&self->repository); G_OBJECT_CLASS (bz_entry_selection_row_parent_class)->dispose (object); } static void bz_entry_selection_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzEntrySelectionRow *self = BZ_ENTRY_SELECTION_ROW (object); switch (prop_id) { case PROP_ENTRY: g_value_set_object (value, self->entry); break; case PROP_REPOSITORY: g_value_set_object (value, self->repository); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_selection_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzEntrySelectionRow *self = BZ_ENTRY_SELECTION_ROW (object); switch (prop_id) { case PROP_ENTRY: g_clear_object (&self->entry); self->entry = g_value_dup_object (value); break; case PROP_REPOSITORY: g_clear_object (&self->repository); self->repository = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static char * get_subtitle (gpointer object, const char *version, gboolean is_user) { const char *scope = is_user ? _ ("this user") : _ ("all users"); return g_strdup_printf ("%s • %s", version, scope); } static void bz_entry_selection_row_class_init (BzEntrySelectionRowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_entry_selection_row_dispose; object_class->get_property = bz_entry_selection_row_get_property; object_class->set_property = bz_entry_selection_row_set_property; props[PROP_ENTRY] = g_param_spec_object ( "entry", NULL, NULL, BZ_TYPE_FLATPAK_ENTRY, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); props[PROP_REPOSITORY] = g_param_spec_object ( "repository", NULL, NULL, BZ_TYPE_REPOSITORY, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_REPOSITORY); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-entry-selection-row.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_callback (widget_class, get_subtitle); gtk_widget_class_bind_template_child (widget_class, BzEntrySelectionRow, radio); } static void bz_entry_selection_row_init (BzEntrySelectionRow *self) { gtk_widget_init_template (GTK_WIDGET (self)); } BzEntrySelectionRow * bz_entry_selection_row_new (BzFlatpakEntry *entry, BzRepository *repository) { g_return_val_if_fail (BZ_IS_ENTRY (entry), NULL); return g_object_new (BZ_TYPE_ENTRY_SELECTION_ROW, "entry", entry, "repository", repository, NULL); } GtkCheckButton * bz_entry_selection_row_get_radio (BzEntrySelectionRow *self) { g_return_val_if_fail (BZ_IS_ENTRY_SELECTION_ROW (self), NULL); return self->radio; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry-selection-row.h����������������������������������������������0000664�0000000�0000000�00000002402�15240005042�0022636�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry-selection-row.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-flatpak-entry.h" #include "bz-repository.h" G_BEGIN_DECLS #define BZ_TYPE_ENTRY_SELECTION_ROW (bz_entry_selection_row_get_type ()) G_DECLARE_FINAL_TYPE (BzEntrySelectionRow, bz_entry_selection_row, BZ, ENTRY_SELECTION_ROW, AdwActionRow) BzEntrySelectionRow * bz_entry_selection_row_new (BzFlatpakEntry *entry, BzRepository *repository); GtkCheckButton * bz_entry_selection_row_get_radio (BzEntrySelectionRow *self); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry.c������������������������������������������������������������0000664�0000000�0000000�00000264174�15240005042�0020061�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ /* TODO: clean this mess up */ #define G_LOG_DOMAIN "BAZAAR::ENTRY" #define BAZAAR_MODULE "entry" #include <json-glib/json-glib.h> #include "bz-app-permissions.h" #include "bz-async-texture.h" #include "bz-category-flags.h" #include "bz-country-data-point.h" #include "bz-data-point.h" #include "bz-entry.h" #include "env.h" #include "global-net.h" #include "io.h" #include "bz-release.h" #include "bz-repository.h" #include "bz-serializable.h" #include "bz-url.h" #include "util.h" #include "bz-verification-status.h" G_DEFINE_FLAGS_TYPE ( BzEntryKind, bz_entry_kind, G_DEFINE_ENUM_VALUE (BZ_ENTRY_KIND_APPLICATION, "application"), G_DEFINE_ENUM_VALUE (BZ_ENTRY_KIND_RUNTIME, "runtime"), G_DEFINE_ENUM_VALUE (BZ_ENTRY_KIND_ADDON, "addon")) G_DEFINE_FLAGS_TYPE ( BzControlType, bz_control_type, G_DEFINE_ENUM_VALUE (BZ_CONTROL_NONE, "none"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_POINTING, "pointing"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_KEYBOARD, "keyboard"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_CONSOLE, "console"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_TABLET, "tablet"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_TOUCH, "touch"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_GAMEPAD, "gamepad"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_TV_REMOTE, "tv-remote"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_VOICE, "voice"), G_DEFINE_ENUM_VALUE (BZ_CONTROL_VISION, "vision")) G_DEFINE_ENUM_TYPE ( BzRelationType, bz_relation_type, G_DEFINE_ENUM_VALUE (BZ_RELATION_REQUIRES, "requires"), G_DEFINE_ENUM_VALUE (BZ_RELATION_RECOMMENDS, "recommends"), G_DEFINE_ENUM_VALUE (BZ_RELATION_SUPPORTS, "supports")) typedef struct { gint hold; gboolean installed; char *installed_version; gboolean reinstallable; gboolean searchable; guint kinds; GListModel *addons; char *id; char *unique_id; char *unique_id_checksum; char *title; char *eol; char *description; char *long_description; char *remote_repo_name; char *url; guint64 size; guint64 installed_size; GdkPaintable *icon_paintable; GIcon *mini_icon; GdkPaintable *remote_repo_icon; char *search_tokens; char *metadata_license; char *project_license; gboolean is_floss; char *project_group; char *developer; char *developer_id; GListModel *developer_apps; GListModel *similar_apps; GListModel *screenshot_paintables; GListModel *screenshot_captions; GdkPaintable *thumbnail_paintable; GListModel *share_urls; char *donation_url; char *ratings_summary; GListModel *version_history; char *light_accent_color; char *dark_accent_color; gboolean is_mobile_friendly; guint required_controls; guint recommended_controls; guint supported_controls; gint min_display_length; gint max_display_length; AsContentRating *content_rating; GListModel *keywords; BzCategoryFlags categories; BzAppPermissions *permissions; gboolean is_flathub; BzVerificationStatus *verification_status; GListModel *download_stats; GListModel *download_stats_per_country; int recent_downloads; int total_downloads; int favorites_count; GHashTable *flathub_prop_queries; } BzEntryPrivate; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (BzEntry, bz_entry, G_TYPE_OBJECT); enum { PROP_0, PROP_HOLDING, PROP_INSTALLED, PROP_INSTALLED_VERSION, PROP_REINSTALLABLE, PROP_SEARCHABLE, PROP_KINDS, PROP_ADDONS, PROP_ID, PROP_UNIQUE_ID, PROP_UNIQUE_ID_CHECKSUM, PROP_TITLE, PROP_EOL, PROP_DESCRIPTION, PROP_DOWNLOAD_STATS_PER_COUNTRY, PROP_LONG_DESCRIPTION, PROP_REMOTE_REPO_NAME, PROP_URL, PROP_SIZE, PROP_INSTALLED_SIZE, PROP_ICON_PAINTABLE, PROP_MINI_ICON, PROP_SEARCH_TOKENS, PROP_REMOTE_REPO_ICON, PROP_METADATA_LICENSE, PROP_PROJECT_LICENSE, PROP_IS_FLOSS, PROP_PROJECT_GROUP, PROP_DEVELOPER, PROP_DEVELOPER_ID, PROP_DEVELOPER_APPS, PROP_SIMILAR_APPS, PROP_SCREENSHOT_PAINTABLES, PROP_SCREENSHOT_CAPTIONS, PROP_THUMBNAIL_PAINTABLE, PROP_SHARE_URLS, PROP_DONATION_URL, PROP_RATINGS_SUMMARY, PROP_VERSION_HISTORY, PROP_IS_FLATHUB, PROP_VERIFICATION_STATUS, PROP_DOWNLOAD_STATS, PROP_RECENT_DOWNLOADS, PROP_TOTAL_DOWNLOADS, PROP_FAVORITES_COUNT, PROP_LIGHT_ACCENT_COLOR, PROP_DARK_ACCENT_COLOR, PROP_IS_MOBILE_FRIENDLY, PROP_REQUIRED_CONTROLS, PROP_RECOMMENDED_CONTROLS, PROP_SUPPORTED_CONTROLS, PROP_MIN_DISPLAY_LENGTH, PROP_MAX_DISPLAY_LENGTH, PROP_CONTENT_RATING, PROP_KEYWORDS, PROP_CATEGORIES, PROP_PERMISSIONS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; BZ_DEFINE_DATA ( query_flathub, QueryFlathub, { GWeakRef self; int prop; char *id; char *developer; }, g_weak_ref_clear (&self->self); BZ_RELEASE_DATA (id, g_free); BZ_RELEASE_DATA (developer, g_free)); static DexFuture * query_flathub_fiber (QueryFlathubData *data); static DexFuture * query_flathub_then (DexFuture *future, QueryFlathubData *data); static void query_flathub (BzEntry *self, int prop); static void download_stats_per_day_foreach (JsonObject *object, const gchar *member_name, JsonNode *member_node, GListStore *store); static void download_stats_per_country_foreach (JsonObject *object, const gchar *member_name, JsonNode *member_node, GListStore *store); static gboolean maybe_save_paintable (BzEntryPrivate *priv, const char *key, GdkPaintable *paintable, GVariantBuilder *builder); static GdkPaintable * make_async_texture (GVariant *parse); static void clear_entry (BzEntry *self); static void bz_entry_dispose (GObject *object) { BzEntry *self = BZ_ENTRY (object); clear_entry (self); G_OBJECT_CLASS (bz_entry_parent_class)->dispose (object); } static void bz_entry_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzEntry *self = BZ_ENTRY (object); BzEntryPrivate *priv = bz_entry_get_instance_private (self); switch (prop_id) { case PROP_HOLDING: g_value_set_boolean (value, bz_entry_is_holding (self)); break; case PROP_INSTALLED: g_value_set_boolean (value, priv->installed); break; case PROP_INSTALLED_VERSION: g_value_set_string (value, priv->installed_version); break; case PROP_REINSTALLABLE: g_value_set_boolean (value, priv->reinstallable); break; case PROP_SEARCHABLE: g_value_set_boolean (value, priv->searchable); break; case PROP_ADDONS: g_value_set_object (value, priv->addons); break; case PROP_KINDS: g_value_set_flags (value, priv->kinds); break; case PROP_ID: g_value_set_string (value, priv->id); break; case PROP_UNIQUE_ID: g_value_set_string (value, priv->unique_id); break; case PROP_UNIQUE_ID_CHECKSUM: g_value_set_string (value, priv->unique_id_checksum); break; case PROP_TITLE: g_value_set_string (value, priv->title); break; case PROP_EOL: g_value_set_string (value, priv->eol); break; case PROP_DESCRIPTION: g_value_set_string (value, priv->description); break; case PROP_LONG_DESCRIPTION: g_value_set_string (value, priv->long_description); break; case PROP_REMOTE_REPO_NAME: g_value_set_string (value, priv->remote_repo_name); break; case PROP_URL: g_value_set_string (value, priv->url); break; case PROP_SIZE: g_value_set_uint64 (value, priv->size); break; case PROP_INSTALLED_SIZE: g_value_set_uint64 (value, priv->installed_size); break; case PROP_ICON_PAINTABLE: g_value_set_object (value, priv->icon_paintable); break; case PROP_MINI_ICON: g_value_set_object (value, priv->mini_icon); break; case PROP_SEARCH_TOKENS: g_value_set_boxed (value, priv->search_tokens); break; case PROP_REMOTE_REPO_ICON: g_value_set_object (value, priv->remote_repo_icon); break; case PROP_METADATA_LICENSE: g_value_set_string (value, priv->metadata_license); break; case PROP_PROJECT_LICENSE: g_value_set_string (value, priv->project_license); break; case PROP_IS_FLOSS: g_value_set_boolean (value, priv->is_floss); break; case PROP_PROJECT_GROUP: g_value_set_string (value, priv->project_group); break; case PROP_DEVELOPER: g_value_set_string (value, priv->developer); break; case PROP_DEVELOPER_ID: g_value_set_string (value, priv->developer_id); break; case PROP_DEVELOPER_APPS: query_flathub (self, PROP_DEVELOPER_APPS); g_value_set_object (value, priv->developer_apps); break; case PROP_SIMILAR_APPS: query_flathub (self, PROP_SIMILAR_APPS); g_value_set_object (value, priv->similar_apps); break; case PROP_SCREENSHOT_PAINTABLES: g_value_set_object (value, priv->screenshot_paintables); break; case PROP_SCREENSHOT_CAPTIONS: g_value_set_object (value, priv->screenshot_captions); break; case PROP_THUMBNAIL_PAINTABLE: g_value_set_object (value, priv->thumbnail_paintable); break; case PROP_SHARE_URLS: g_value_set_object (value, priv->share_urls); break; case PROP_DONATION_URL: g_value_set_string (value, priv->donation_url); break; case PROP_RATINGS_SUMMARY: g_value_set_string (value, priv->ratings_summary); break; case PROP_VERSION_HISTORY: g_value_set_object (value, priv->version_history); break; case PROP_LIGHT_ACCENT_COLOR: g_value_set_string (value, priv->light_accent_color); break; case PROP_DARK_ACCENT_COLOR: g_value_set_string (value, priv->dark_accent_color); break; case PROP_IS_MOBILE_FRIENDLY: g_value_set_boolean (value, priv->is_mobile_friendly); break; case PROP_REQUIRED_CONTROLS: g_value_set_flags (value, priv->required_controls); break; case PROP_RECOMMENDED_CONTROLS: g_value_set_flags (value, priv->recommended_controls); break; case PROP_SUPPORTED_CONTROLS: g_value_set_flags (value, priv->supported_controls); break; case PROP_MIN_DISPLAY_LENGTH: g_value_set_int (value, priv->min_display_length); break; case PROP_MAX_DISPLAY_LENGTH: g_value_set_int (value, priv->max_display_length); break; case PROP_CONTENT_RATING: g_value_set_object (value, priv->content_rating); break; case PROP_KEYWORDS: g_value_set_object (value, priv->keywords); break; case PROP_CATEGORIES: g_value_set_uint (value, priv->categories); break; case PROP_PERMISSIONS: g_value_set_object (value, priv->permissions); break; case PROP_IS_FLATHUB: g_value_set_boolean (value, priv->is_flathub); break; case PROP_VERIFICATION_STATUS: g_value_set_object (value, priv->verification_status); break; case PROP_DOWNLOAD_STATS: query_flathub (self, PROP_DOWNLOAD_STATS); g_value_set_object (value, priv->download_stats); break; case PROP_DOWNLOAD_STATS_PER_COUNTRY: query_flathub (self, PROP_DOWNLOAD_STATS_PER_COUNTRY); g_value_set_object (value, priv->download_stats_per_country); break; case PROP_RECENT_DOWNLOADS: query_flathub (self, PROP_RECENT_DOWNLOADS); g_value_set_int (value, priv->recent_downloads); break; case PROP_TOTAL_DOWNLOADS: query_flathub (self, PROP_TOTAL_DOWNLOADS); g_value_set_int (value, priv->total_downloads); break; case PROP_FAVORITES_COUNT: query_flathub (self, PROP_FAVORITES_COUNT); g_value_set_int (value, priv->favorites_count); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzEntry *self = BZ_ENTRY (object); BzEntryPrivate *priv = bz_entry_get_instance_private (self); switch (prop_id) { case PROP_INSTALLED: priv->installed = g_value_get_boolean (value); break; case PROP_INSTALLED_VERSION: g_clear_pointer (&priv->installed_version, g_free); priv->installed_version = g_value_dup_string (value); break; case PROP_REINSTALLABLE: priv->reinstallable = g_value_get_boolean (value); break; case PROP_SEARCHABLE: priv->searchable = g_value_get_boolean (value); break; case PROP_ADDONS: g_clear_object (&priv->addons); priv->addons = g_value_dup_object (value); break; case PROP_KINDS: priv->kinds = g_value_get_flags (value); break; case PROP_ID: g_clear_pointer (&priv->id, g_free); priv->id = g_value_dup_string (value); break; case PROP_UNIQUE_ID: g_clear_pointer (&priv->unique_id, g_free); priv->unique_id = g_value_dup_string (value); break; case PROP_UNIQUE_ID_CHECKSUM: g_clear_pointer (&priv->unique_id_checksum, g_free); priv->unique_id_checksum = g_value_dup_string (value); break; case PROP_TITLE: g_clear_pointer (&priv->title, g_free); priv->title = g_value_dup_string (value); break; case PROP_EOL: g_clear_pointer (&priv->eol, g_free); priv->eol = g_value_dup_string (value); break; case PROP_DESCRIPTION: g_clear_pointer (&priv->description, g_free); priv->description = g_value_dup_string (value); break; case PROP_LONG_DESCRIPTION: g_clear_pointer (&priv->long_description, g_free); priv->long_description = g_value_dup_string (value); break; case PROP_REMOTE_REPO_NAME: g_clear_pointer (&priv->remote_repo_name, g_free); priv->remote_repo_name = g_value_dup_string (value); priv->is_flathub = g_strcmp0 (priv->remote_repo_name, "flathub") == 0; g_object_notify_by_pspec (object, props[PROP_IS_FLATHUB]); break; case PROP_URL: g_clear_pointer (&priv->url, g_free); priv->url = g_value_dup_string (value); break; case PROP_SIZE: priv->size = g_value_get_uint64 (value); break; case PROP_INSTALLED_SIZE: priv->installed_size = g_value_get_uint64 (value); break; case PROP_ICON_PAINTABLE: g_clear_object (&priv->icon_paintable); priv->icon_paintable = g_value_dup_object (value); break; case PROP_MINI_ICON: g_clear_object (&priv->mini_icon); priv->mini_icon = g_value_dup_object (value); break; case PROP_SEARCH_TOKENS: g_clear_pointer (&priv->search_tokens, g_free); priv->search_tokens = g_value_dup_string (value); break; case PROP_REMOTE_REPO_ICON: g_clear_object (&priv->remote_repo_icon); priv->remote_repo_icon = g_value_dup_object (value); break; case PROP_METADATA_LICENSE: g_clear_pointer (&priv->metadata_license, g_free); priv->metadata_license = g_value_dup_string (value); break; case PROP_PROJECT_LICENSE: g_clear_pointer (&priv->project_license, g_free); priv->project_license = g_value_dup_string (value); break; case PROP_IS_FLOSS: priv->is_floss = g_value_get_boolean (value); break; case PROP_PROJECT_GROUP: g_clear_pointer (&priv->project_group, g_free); priv->project_group = g_value_dup_string (value); break; case PROP_DEVELOPER: g_clear_pointer (&priv->developer, g_free); priv->developer = g_value_dup_string (value); break; case PROP_DEVELOPER_ID: g_clear_pointer (&priv->developer_id, g_free); priv->developer_id = g_value_dup_string (value); break; case PROP_DEVELOPER_APPS: g_clear_object (&priv->developer_apps); priv->developer_apps = g_value_dup_object (value); break; case PROP_SIMILAR_APPS: g_clear_object (&priv->similar_apps); priv->similar_apps = g_value_dup_object (value); break; case PROP_SCREENSHOT_PAINTABLES: g_clear_object (&priv->screenshot_paintables); priv->screenshot_paintables = g_value_dup_object (value); break; case PROP_SCREENSHOT_CAPTIONS: g_clear_object (&priv->screenshot_captions); priv->screenshot_captions = g_value_dup_object (value); break; case PROP_THUMBNAIL_PAINTABLE: g_clear_object (&priv->thumbnail_paintable); priv->thumbnail_paintable = g_value_dup_object (value); break; case PROP_SHARE_URLS: g_clear_object (&priv->share_urls); priv->share_urls = g_value_dup_object (value); break; case PROP_DONATION_URL: g_clear_pointer (&priv->donation_url, g_free); priv->donation_url = g_value_dup_string (value); break; case PROP_RATINGS_SUMMARY: g_clear_pointer (&priv->ratings_summary, g_free); priv->ratings_summary = g_value_dup_string (value); break; case PROP_VERSION_HISTORY: g_clear_object (&priv->version_history); priv->version_history = g_value_dup_object (value); break; case PROP_LIGHT_ACCENT_COLOR: g_clear_pointer (&priv->light_accent_color, g_free); priv->light_accent_color = g_value_dup_string (value); break; case PROP_DARK_ACCENT_COLOR: g_clear_pointer (&priv->dark_accent_color, g_free); priv->dark_accent_color = g_value_dup_string (value); break; case PROP_IS_MOBILE_FRIENDLY: priv->is_mobile_friendly = g_value_get_boolean (value); break; case PROP_REQUIRED_CONTROLS: priv->required_controls = g_value_get_flags (value); break; case PROP_RECOMMENDED_CONTROLS: priv->recommended_controls = g_value_get_flags (value); break; case PROP_SUPPORTED_CONTROLS: priv->supported_controls = g_value_get_flags (value); break; case PROP_MIN_DISPLAY_LENGTH: priv->min_display_length = g_value_get_int (value); break; case PROP_MAX_DISPLAY_LENGTH: priv->max_display_length = g_value_get_int (value); break; case PROP_CONTENT_RATING: g_clear_object (&priv->content_rating); priv->content_rating = g_value_dup_object (value); break; case PROP_KEYWORDS: g_clear_object (&priv->keywords); priv->keywords = g_value_dup_object (value); break; case PROP_CATEGORIES: priv->categories = g_value_get_uint (value); break; case PROP_PERMISSIONS: g_clear_object (&priv->permissions); priv->permissions = g_value_dup_object (value); break; case PROP_IS_FLATHUB: priv->is_flathub = g_value_get_boolean (value); break; case PROP_VERIFICATION_STATUS: g_clear_object (&priv->verification_status); priv->verification_status = g_value_dup_object (value); break; case PROP_DOWNLOAD_STATS: case PROP_DOWNLOAD_STATS_PER_COUNTRY: { if (prop_id == PROP_DOWNLOAD_STATS) { g_clear_object (&priv->download_stats); priv->download_stats = g_value_dup_object (value); } else { g_clear_object (&priv->download_stats_per_country); priv->download_stats_per_country = g_value_dup_object (value); } } break; case PROP_RECENT_DOWNLOADS: priv->recent_downloads = g_value_get_int (value); break; case PROP_TOTAL_DOWNLOADS: priv->total_downloads = g_value_get_int (value); break; case PROP_FAVORITES_COUNT: priv->favorites_count = g_value_get_int (value); break; case PROP_HOLDING: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_entry_class_init (BzEntryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_entry_set_property; object_class->get_property = bz_entry_get_property; object_class->dispose = bz_entry_dispose; props[PROP_HOLDING] = g_param_spec_boolean ( "holding", NULL, NULL, FALSE, G_PARAM_READABLE); props[PROP_INSTALLED] = g_param_spec_boolean ( "installed", NULL, NULL, FALSE, G_PARAM_READWRITE); props[PROP_INSTALLED_VERSION] = g_param_spec_string ( "installed-version", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_REINSTALLABLE] = g_param_spec_boolean ( "reinstallable", NULL, NULL, TRUE, G_PARAM_READWRITE); props[PROP_SEARCHABLE] = g_param_spec_boolean ( "searchable", NULL, NULL, TRUE, G_PARAM_READWRITE); props[PROP_ADDONS] = g_param_spec_object ( "addons", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_KINDS] = g_param_spec_flags ( "kinds", NULL, NULL, BZ_TYPE_ENTRY_KIND, 0, G_PARAM_READWRITE); props[PROP_ID] = g_param_spec_string ( "id", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_UNIQUE_ID] = g_param_spec_string ( "unique-id", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_UNIQUE_ID_CHECKSUM] = g_param_spec_string ( "unique-id-checksum", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_TITLE] = g_param_spec_string ( "title", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_EOL] = g_param_spec_string ( "eol", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_DESCRIPTION] = g_param_spec_string ( "description", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_LONG_DESCRIPTION] = g_param_spec_string ( "long-description", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_URL] = g_param_spec_string ( "url", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_REMOTE_REPO_NAME] = g_param_spec_string ( "remote-repo-name", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_SIZE] = g_param_spec_uint64 ( "size", NULL, NULL, 0, G_MAXUINT64, 0, G_PARAM_READWRITE); props[PROP_INSTALLED_SIZE] = g_param_spec_uint64 ( "installed-size", NULL, NULL, 0, G_MAXUINT64, 0, G_PARAM_READWRITE); props[PROP_ICON_PAINTABLE] = g_param_spec_object ( "icon-paintable", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READWRITE); props[PROP_MINI_ICON] = g_param_spec_object ( "mini-icon", NULL, NULL, G_TYPE_ICON, G_PARAM_READWRITE); props[PROP_SEARCH_TOKENS] = g_param_spec_string ( "search-tokens", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_REMOTE_REPO_ICON] = g_param_spec_object ( "remote-repo-icon", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READWRITE); props[PROP_METADATA_LICENSE] = g_param_spec_string ( "metadata-license", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_PROJECT_LICENSE] = g_param_spec_string ( "project-license", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_IS_FLOSS] = g_param_spec_boolean ( "is-floss", NULL, NULL, FALSE, G_PARAM_READWRITE); props[PROP_PROJECT_GROUP] = g_param_spec_string ( "project-group", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_DEVELOPER] = g_param_spec_string ( "developer", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_DEVELOPER_ID] = g_param_spec_string ( "developer-id", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_DEVELOPER_APPS] = g_param_spec_object ( "developer-apps", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_SIMILAR_APPS] = g_param_spec_object ( "similar-apps", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_SCREENSHOT_PAINTABLES] = g_param_spec_object ( "screenshot-paintables", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_SCREENSHOT_CAPTIONS] = g_param_spec_object ( "screenshot-captions", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_THUMBNAIL_PAINTABLE] = g_param_spec_object ( "thumbnail-paintable", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READWRITE); props[PROP_SHARE_URLS] = g_param_spec_object ( "share-urls", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_DONATION_URL] = g_param_spec_string ( "donation-url", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_RATINGS_SUMMARY] = g_param_spec_string ( "ratings-summary", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_VERSION_HISTORY] = g_param_spec_object ( "version-history", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_LIGHT_ACCENT_COLOR] = g_param_spec_string ( "light-accent-color", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_DARK_ACCENT_COLOR] = g_param_spec_string ( "dark-accent-color", NULL, NULL, NULL, G_PARAM_READWRITE); props[PROP_IS_MOBILE_FRIENDLY] = g_param_spec_boolean ( "is-mobile-friendly", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_REQUIRED_CONTROLS] = g_param_spec_flags ( "required-controls", NULL, NULL, BZ_TYPE_CONTROL_TYPE, BZ_CONTROL_NONE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_RECOMMENDED_CONTROLS] = g_param_spec_flags ( "recommended-controls", NULL, NULL, BZ_TYPE_CONTROL_TYPE, BZ_CONTROL_NONE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_SUPPORTED_CONTROLS] = g_param_spec_flags ( "supported-controls", NULL, NULL, BZ_TYPE_CONTROL_TYPE, BZ_CONTROL_NONE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_MIN_DISPLAY_LENGTH] = g_param_spec_int ( "min-display-length", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_MAX_DISPLAY_LENGTH] = g_param_spec_int ( "max-display-length", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_CONTENT_RATING] = g_param_spec_object ( "content-rating", NULL, NULL, AS_TYPE_CONTENT_RATING, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_KEYWORDS] = g_param_spec_object ( "keywords", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_CATEGORIES] = g_param_spec_uint ( "categories", NULL, NULL, 0, G_MAXUINT, BZ_CATEGORY_FLAGS_NONE, G_PARAM_READWRITE); props[PROP_PERMISSIONS] = g_param_spec_object ( "permissions", NULL, NULL, BZ_TYPE_APP_PERMISSIONS, G_PARAM_READWRITE); props[PROP_IS_FLATHUB] = g_param_spec_boolean ( "is-flathub", NULL, NULL, FALSE, G_PARAM_READWRITE); props[PROP_VERIFICATION_STATUS] = g_param_spec_object ( "verification-status", NULL, NULL, BZ_TYPE_VERIFICATION_STATUS, G_PARAM_READWRITE); props[PROP_DOWNLOAD_STATS] = g_param_spec_object ( "download-stats", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_DOWNLOAD_STATS_PER_COUNTRY] = g_param_spec_object ( "download-stats-per-country", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_RECENT_DOWNLOADS] = g_param_spec_int ( "recent-downloads", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READWRITE); props[PROP_TOTAL_DOWNLOADS] = g_param_spec_int ( "total-downloads", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READWRITE); props[PROP_FAVORITES_COUNT] = g_param_spec_int ( "favorites-count", NULL, NULL, -1, G_MAXINT, -1, G_PARAM_READWRITE); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_entry_init (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); priv->hold = 0; priv->reinstallable = TRUE; priv->searchable = TRUE; priv->favorites_count = -1; } static void bz_entry_real_serialize (BzSerializable *serializable, GVariantBuilder *builder) { BzEntry *self = BZ_ENTRY (serializable); BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_variant_builder_add (builder, "{sv}", "installed", g_variant_new_boolean (priv->installed)); if (priv->installed_version != NULL) g_variant_builder_add (builder, "{sv}", "installed-version", g_variant_new_string (priv->installed_version)); g_variant_builder_add (builder, "{sv}", "kinds", g_variant_new_uint32 (priv->kinds)); g_variant_builder_add (builder, "{sv}", "reinstallable", g_variant_new_boolean (priv->reinstallable)); g_variant_builder_add (builder, "{sv}", "searchable", g_variant_new_boolean (priv->searchable)); if (priv->addons != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (priv->addons); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint i = 0; i < n_items; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (priv->addons, i); g_variant_builder_add (sub_builder, "s", gtk_string_object_get_string (string)); } g_variant_builder_add (builder, "{sv}", "addons", g_variant_builder_end (sub_builder)); } } if (priv->id != NULL) g_variant_builder_add (builder, "{sv}", "id", g_variant_new_string (priv->id)); if (priv->unique_id != NULL) g_variant_builder_add (builder, "{sv}", "unique-id", g_variant_new_string (priv->unique_id)); if (priv->unique_id_checksum != NULL) g_variant_builder_add (builder, "{sv}", "unique-id-checksum", g_variant_new_string (priv->unique_id_checksum)); if (priv->title != NULL) g_variant_builder_add (builder, "{sv}", "title", g_variant_new_string (priv->title)); if (priv->eol != NULL) g_variant_builder_add (builder, "{sv}", "eol", g_variant_new_string (priv->eol)); if (priv->description != NULL) g_variant_builder_add (builder, "{sv}", "description", g_variant_new_string (priv->description)); if (priv->long_description != NULL) g_variant_builder_add (builder, "{sv}", "long-description", g_variant_new_string (priv->long_description)); if (priv->remote_repo_name != NULL) g_variant_builder_add (builder, "{sv}", "remote-repo-name", g_variant_new_string (priv->remote_repo_name)); if (priv->url != NULL) g_variant_builder_add (builder, "{sv}", "url", g_variant_new_string (priv->url)); if (priv->size > 0) g_variant_builder_add (builder, "{sv}", "size", g_variant_new_uint64 (priv->size)); if (priv->installed_size > 0) g_variant_builder_add (builder, "{sv}", "installed-size", g_variant_new_uint64 (priv->installed_size)); if (priv->icon_paintable != NULL) maybe_save_paintable (priv, "icon-paintable", priv->icon_paintable, builder); if (priv->mini_icon != NULL) { g_autoptr (GVariant) serialized = NULL; serialized = g_icon_serialize (priv->mini_icon); g_variant_builder_add (builder, "{sv}", "mini-icon", serialized); } if (priv->remote_repo_icon != NULL) maybe_save_paintable (priv, "remote-repo-icon", priv->remote_repo_icon, builder); if (priv->search_tokens != NULL) g_variant_builder_add (builder, "{sv}", "search-tokens", g_variant_new_string (priv->search_tokens)); if (priv->metadata_license != NULL) g_variant_builder_add (builder, "{sv}", "metadata-license", g_variant_new_string (priv->metadata_license)); if (priv->project_license != NULL) g_variant_builder_add (builder, "{sv}", "project-license", g_variant_new_string (priv->project_license)); g_variant_builder_add (builder, "{sv}", "is-floss", g_variant_new_boolean (priv->is_floss)); if (priv->project_group != NULL) g_variant_builder_add (builder, "{sv}", "project-group", g_variant_new_string (priv->project_group)); if (priv->developer != NULL) g_variant_builder_add (builder, "{sv}", "developer", g_variant_new_string (priv->developer)); if (priv->developer_id != NULL) g_variant_builder_add (builder, "{sv}", "developer-id", g_variant_new_string (priv->developer_id)); if (priv->screenshot_paintables != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (priv->screenshot_paintables); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); for (guint i = 0; i < n_items; i++) { g_autoptr (GdkPaintable) paintable = NULL; g_autofree char *key = NULL; paintable = g_list_model_get_item (priv->screenshot_paintables, i); key = g_strdup_printf ("screenshot_%d.png", i); maybe_save_paintable (priv, key, paintable, sub_builder); } g_variant_builder_add (builder, "{sv}", "screenshot-paintables", g_variant_builder_end (sub_builder)); } } if (priv->screenshot_captions != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (priv->screenshot_captions); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint i = 0; i < n_items; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (priv->screenshot_captions, i); g_variant_builder_add (sub_builder, "s", gtk_string_object_get_string (string)); } g_variant_builder_add (builder, "{sv}", "screenshot-captions", g_variant_builder_end (sub_builder)); } } if (priv->thumbnail_paintable != NULL) maybe_save_paintable (priv, "thumbnail-paintable", priv->thumbnail_paintable, builder); if (priv->share_urls != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (priv->share_urls); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)")); for (guint i = 0; i < n_items; i++) { g_autoptr (BzUrl) url = NULL; const char *id = NULL; const char *url_str = NULL; url = g_list_model_get_item (priv->share_urls, i); id = bz_url_get_id (url); url_str = bz_url_get_url (url); g_variant_builder_add (sub_builder, "(ss)", id ? id : "", url_str ? url_str : ""); } g_variant_builder_add (builder, "{sv}", "share-urls", g_variant_builder_end (sub_builder)); } } if (priv->donation_url != NULL) g_variant_builder_add (builder, "{sv}", "donation-url", g_variant_new_string (priv->donation_url)); if (priv->version_history != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (priv->version_history); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(mstmsms)")); for (guint i = 0; i < n_items; i++) { g_autoptr (BzRelease) release = NULL; guint64 timestamp = 0; const char *url = NULL; const char *version = NULL; const char *description = NULL; release = g_list_model_get_item (priv->version_history, i); timestamp = bz_release_get_timestamp (release); url = bz_release_get_url (release); version = bz_release_get_version (release); description = bz_release_get_description (release); g_variant_builder_add ( sub_builder, "(mstmsms)", description, timestamp, url, version); } g_variant_builder_add (builder, "{sv}", "version-history", g_variant_builder_end (sub_builder)); } } if (priv->light_accent_color != NULL) g_variant_builder_add (builder, "{sv}", "light-accent-color", g_variant_new_string (priv->light_accent_color)); if (priv->dark_accent_color != NULL) g_variant_builder_add (builder, "{sv}", "dark-accent-color", g_variant_new_string (priv->dark_accent_color)); g_variant_builder_add (builder, "{sv}", "is-mobile-friendly", g_variant_new_boolean (priv->is_mobile_friendly)); if (priv->required_controls != BZ_CONTROL_NONE) g_variant_builder_add (builder, "{sv}", "required-controls", g_variant_new_uint32 (priv->required_controls)); if (priv->recommended_controls != BZ_CONTROL_NONE) g_variant_builder_add (builder, "{sv}", "recommended-controls", g_variant_new_uint32 (priv->recommended_controls)); if (priv->supported_controls != BZ_CONTROL_NONE) g_variant_builder_add (builder, "{sv}", "supported-controls", g_variant_new_uint32 (priv->supported_controls)); if (priv->min_display_length > 0) g_variant_builder_add (builder, "{sv}", "min-display-length", g_variant_new_int32 (priv->min_display_length)); if (priv->max_display_length > 0) g_variant_builder_add (builder, "{sv}", "max-display-length", g_variant_new_int32 (priv->max_display_length)); if (priv->content_rating != NULL) { const gchar *kind = as_content_rating_get_kind (priv->content_rating); g_autoptr (GVariantBuilder) sub_builder = NULL; g_autofree const gchar **rating_ids = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)")); rating_ids = as_content_rating_get_all_rating_ids (); for (gsize i = 0; rating_ids[i] != NULL; i++) { AsContentRatingValue value = as_content_rating_get_value (priv->content_rating, rating_ids[i]); const gchar *value_str = as_content_rating_value_to_string (value); if (value != AS_CONTENT_RATING_VALUE_UNKNOWN) g_variant_builder_add (sub_builder, "(ss)", rating_ids[i], value_str); } g_variant_builder_add (builder, "{sv}", "content-rating-kind", g_variant_new_string (kind ? kind : "oars-1.1")); g_variant_builder_add (builder, "{sv}", "content-rating-values", g_variant_builder_end (sub_builder)); } if (priv->keywords != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (priv->keywords); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint i = 0; i < n_items; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (priv->keywords, i); g_variant_builder_add (sub_builder, "s", gtk_string_object_get_string (string)); } g_variant_builder_add (builder, "{sv}", "keywords", g_variant_builder_end (sub_builder)); } } if (priv->categories != BZ_CATEGORY_FLAGS_NONE) g_variant_builder_add (builder, "{sv}", "categories", g_variant_new_uint32 (priv->categories)); if (priv->verification_status != NULL) { gboolean verified = FALSE; g_autofree char *method = NULL; g_autofree char *website = NULL; g_autofree char *login_name = NULL; g_autofree char *login_provider = NULL; g_autofree char *timestamp = NULL; gboolean login_is_organization = FALSE; g_object_get (priv->verification_status, "verified", &verified, "method", &method, "website", &website, "login-name", &login_name, "login-provider", &login_provider, "timestamp", ×tamp, "login-is-organization", &login_is_organization, NULL); g_variant_builder_add (builder, "{sv}", "verification-verified", g_variant_new_boolean (verified)); if (method != NULL) g_variant_builder_add (builder, "{sv}", "verification-method", g_variant_new_string (method)); if (website != NULL) g_variant_builder_add (builder, "{sv}", "verification-website", g_variant_new_string (website)); if (login_name != NULL) g_variant_builder_add (builder, "{sv}", "verification-login-name", g_variant_new_string (login_name)); if (login_provider != NULL) g_variant_builder_add (builder, "{sv}", "verification-login-provider", g_variant_new_string (login_provider)); if (timestamp != NULL) g_variant_builder_add (builder, "{sv}", "verification-timestamp", g_variant_new_string (timestamp)); g_variant_builder_add (builder, "{sv}", "verification-login-is-organization", g_variant_new_boolean (login_is_organization)); } if (priv->permissions != NULL) { bz_app_permissions_serialize (priv->permissions, builder); } g_variant_builder_add (builder, "{sv}", "is-flathub", g_variant_new_boolean (priv->is_flathub)); if (priv->is_flathub) { if (priv->flathub_prop_queries != NULL) { if (g_hash_table_contains (priv->flathub_prop_queries, GINT_TO_POINTER (PROP_DOWNLOAD_STATS)) && priv->download_stats != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (priv->download_stats); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ddms)")); for (guint i = 0; i < n_items; i++) { g_autoptr (BzDataPoint) point = NULL; double independent = 0.0; double dependent = 0.0; const char *label = NULL; point = g_list_model_get_item (priv->download_stats, i); independent = bz_data_point_get_independent (point); dependent = bz_data_point_get_dependent (point); label = bz_data_point_get_label (point); g_variant_builder_add (sub_builder, "(ddms)", independent, dependent, label); } g_variant_builder_add (builder, "{sv}", "download-stats", g_variant_builder_end (sub_builder)); } } if (g_hash_table_contains (priv->flathub_prop_queries, GINT_TO_POINTER (PROP_RECENT_DOWNLOADS))) g_variant_builder_add (builder, "{sv}", "recent-downloads", g_variant_new_int32 (priv->recent_downloads)); if (g_hash_table_contains (priv->flathub_prop_queries, GINT_TO_POINTER (PROP_FAVORITES_COUNT))) g_variant_builder_add (builder, "{sv}", "favorites-count", g_variant_new_int32 (priv->favorites_count)); } } } static gboolean bz_entry_real_deserialize (BzSerializable *serializable, GVariant *import, GError **error) { BzEntry *self = BZ_ENTRY (serializable); BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_autoptr (GVariantIter) iter = NULL; clear_entry (self); iter = g_variant_iter_new (import); for (;;) { g_autofree char *key = NULL; g_autoptr (GVariant) value = NULL; if (!g_variant_iter_next (iter, "{sv}", &key, &value)) break; if (g_strcmp0 (key, "installed") == 0) priv->installed = g_variant_get_boolean (value); else if (g_strcmp0 (key, "installed-version") == 0) priv->installed_version = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "kinds") == 0) priv->kinds = g_variant_get_uint32 (value); else if (g_strcmp0 (key, "reinstallable") == 0) priv->reinstallable = g_variant_get_boolean (value); else if (g_strcmp0 (key, "searchable") == 0) priv->searchable = g_variant_get_boolean (value); else if (g_strcmp0 (key, "addons") == 0) { g_autoptr (GListStore) store = NULL; g_autoptr (GVariantIter) addon_iter = NULL; store = g_list_store_new (GTK_TYPE_STRING_OBJECT); addon_iter = g_variant_iter_new (value); for (;;) { g_autofree char *unique_id = NULL; g_autoptr (GtkStringObject) string = NULL; if (!g_variant_iter_next (addon_iter, "s", &unique_id)) break; string = gtk_string_object_new (unique_id); g_list_store_append (store, string); } priv->addons = G_LIST_MODEL (g_steal_pointer (&store)); } else if (g_strcmp0 (key, "id") == 0) priv->id = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "unique-id") == 0) priv->unique_id = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "unique-id-checksum") == 0) priv->unique_id_checksum = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "title") == 0) priv->title = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "eol") == 0) priv->eol = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "description") == 0) priv->description = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "long-description") == 0) priv->long_description = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "remote-repo-name") == 0) priv->remote_repo_name = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "url") == 0) priv->url = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "size") == 0) priv->size = g_variant_get_uint64 (value); else if (g_strcmp0 (key, "installed-size") == 0) priv->installed_size = g_variant_get_uint64 (value); else if (g_strcmp0 (key, "icon-paintable") == 0) priv->icon_paintable = make_async_texture (value); else if (g_strcmp0 (key, "mini-icon") == 0) priv->mini_icon = g_icon_deserialize (value); else if (g_strcmp0 (key, "remote-repo-icon") == 0) priv->remote_repo_icon = make_async_texture (value); else if (g_strcmp0 (key, "search-tokens") == 0) priv->search_tokens = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "metadata-license") == 0) priv->metadata_license = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "project-license") == 0) priv->project_license = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "is-floss") == 0) priv->is_floss = g_variant_get_boolean (value); else if (g_strcmp0 (key, "developer") == 0) priv->developer = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "developer-id") == 0) priv->developer_id = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "screenshot-paintables") == 0) { g_autoptr (GListStore) store = NULL; g_autoptr (GVariantIter) screenshot_iter = NULL; store = g_list_store_new (BZ_TYPE_ASYNC_TEXTURE); screenshot_iter = g_variant_iter_new (value); for (;;) { g_autofree char *basename = NULL; g_autoptr (GVariant) screenshot = NULL; g_autoptr (GdkPaintable) texture = NULL; if (!g_variant_iter_next (screenshot_iter, "{sv}", &basename, &screenshot)) break; texture = make_async_texture (screenshot); g_list_store_append (store, texture); } priv->screenshot_paintables = G_LIST_MODEL (g_steal_pointer (&store)); } else if (g_strcmp0 (key, "screenshot-captions") == 0) { g_autoptr (GListStore) store = NULL; g_autoptr (GVariantIter) caption_iter = NULL; store = g_list_store_new (GTK_TYPE_STRING_OBJECT); caption_iter = g_variant_iter_new (value); for (;;) { g_autofree char *caption = NULL; g_autoptr (GtkStringObject) string = NULL; if (!g_variant_iter_next (caption_iter, "s", &caption)) break; string = gtk_string_object_new (caption); g_list_store_append (store, string); } priv->screenshot_captions = G_LIST_MODEL (g_steal_pointer (&store)); } else if (g_strcmp0 (key, "thumbnail-paintable") == 0) priv->thumbnail_paintable = make_async_texture (value); else if (g_strcmp0 (key, "share-urls") == 0) { g_autoptr (GListStore) store = NULL; g_autoptr (GVariantIter) url_iter = NULL; store = g_list_store_new (BZ_TYPE_URL); url_iter = g_variant_iter_new (value); for (;;) { g_autofree char *id = NULL; g_autofree char *url_str = NULL; g_autoptr (BzUrl) url = NULL; if (!g_variant_iter_next (url_iter, "(ss)", &id, &url_str)) break; url = bz_url_new (); bz_url_set_id (url, id); bz_url_set_url (url, url_str); g_list_store_append (store, url); } priv->share_urls = G_LIST_MODEL (g_steal_pointer (&store)); } else if (g_strcmp0 (key, "donation-url") == 0) priv->donation_url = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "version-history") == 0) { g_autoptr (GListStore) store = NULL; g_autoptr (GVariantIter) version_iter = NULL; store = g_list_store_new (BZ_TYPE_RELEASE); version_iter = g_variant_iter_new (value); for (;;) { guint64 timestamp = 0; g_autofree char *url = NULL; g_autofree char *description = NULL; g_autofree char *version = NULL; g_autoptr (BzRelease) release = NULL; if (!g_variant_iter_next (version_iter, "(mstmsms)", &description, ×tamp, &url, &version)) break; release = bz_release_new (); bz_release_set_timestamp (release, timestamp); bz_release_set_url (release, url); bz_release_set_version (release, version); bz_release_set_description (release, description); g_list_store_append (store, release); } priv->version_history = G_LIST_MODEL (g_steal_pointer (&store)); } else if (g_strcmp0 (key, "light-accent-color") == 0) priv->light_accent_color = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "dark-accent-color") == 0) priv->dark_accent_color = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "is-mobile-friendly") == 0) priv->is_mobile_friendly = g_variant_get_boolean (value); else if (g_strcmp0 (key, "required-controls") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_UINT32)) priv->required_controls = g_variant_get_uint32 (value); else if (g_strcmp0 (key, "recommended-controls") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_UINT32)) priv->recommended_controls = g_variant_get_uint32 (value); else if (g_strcmp0 (key, "supported-controls") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_UINT32)) priv->supported_controls = g_variant_get_uint32 (value); else if (g_strcmp0 (key, "min-display-length") == 0) priv->min_display_length = g_variant_get_int32 (value); else if (g_strcmp0 (key, "max-display-length") == 0) priv->max_display_length = g_variant_get_int32 (value); else if (g_strcmp0 (key, "content-rating-kind") == 0) { g_autofree gchar *kind = NULL; kind = g_variant_dup_string (value, NULL); if (priv->content_rating == NULL) priv->content_rating = as_content_rating_new (); as_content_rating_set_kind (priv->content_rating, kind); } else if (g_strcmp0 (key, "content-rating-values") == 0) { g_autoptr (GVariantIter) rating_iter = NULL; if (priv->content_rating == NULL) priv->content_rating = as_content_rating_new (); rating_iter = g_variant_iter_new (value); for (;;) { g_autofree gchar *rating_id = NULL; g_autofree gchar *rating_value_str = NULL; AsContentRatingValue rating_value; if (!g_variant_iter_next (rating_iter, "(ss)", &rating_id, &rating_value_str)) break; rating_value = as_content_rating_value_from_string (rating_value_str); if (rating_value != AS_CONTENT_RATING_VALUE_UNKNOWN) as_content_rating_set_value (priv->content_rating, rating_id, rating_value); } } else if (g_strcmp0 (key, "keywords") == 0) { g_autoptr (GListStore) store = NULL; g_autoptr (GVariantIter) keywords_iter = NULL; store = g_list_store_new (GTK_TYPE_STRING_OBJECT); keywords_iter = g_variant_iter_new (value); for (;;) { g_autofree char *keyword = NULL; g_autoptr (GtkStringObject) string = NULL; if (!g_variant_iter_next (keywords_iter, "s", &keyword)) break; string = gtk_string_object_new (keyword); g_list_store_append (store, string); } priv->keywords = G_LIST_MODEL (g_steal_pointer (&store)); } else if (g_strcmp0 (key, "categories") == 0) priv->categories = g_variant_get_uint32 (value); else if (g_strcmp0 (key, "verification-verified") == 0) { if (priv->verification_status == NULL) priv->verification_status = bz_verification_status_new (); g_object_set (priv->verification_status, "verified", g_variant_get_boolean (value), NULL); } else if (g_strcmp0 (key, "verification-method") == 0) { if (priv->verification_status == NULL) priv->verification_status = bz_verification_status_new (); g_object_set (priv->verification_status, "method", g_variant_get_string (value, NULL), NULL); } else if (g_strcmp0 (key, "verification-website") == 0) { if (priv->verification_status == NULL) priv->verification_status = bz_verification_status_new (); g_object_set (priv->verification_status, "website", g_variant_get_string (value, NULL), NULL); } else if (g_strcmp0 (key, "verification-login-name") == 0) { if (priv->verification_status == NULL) priv->verification_status = bz_verification_status_new (); g_object_set (priv->verification_status, "login-name", g_variant_get_string (value, NULL), NULL); } else if (g_strcmp0 (key, "verification-login-provider") == 0) { if (priv->verification_status == NULL) priv->verification_status = bz_verification_status_new (); g_object_set (priv->verification_status, "login-provider", g_variant_get_string (value, NULL), NULL); } else if (g_strcmp0 (key, "verification-timestamp") == 0) { if (priv->verification_status == NULL) priv->verification_status = bz_verification_status_new (); g_object_set (priv->verification_status, "timestamp", g_variant_get_string (value, NULL), NULL); } else if (g_strcmp0 (key, "verification-login-is-organization") == 0) { if (priv->verification_status == NULL) priv->verification_status = bz_verification_status_new (); g_object_set (priv->verification_status, "login-is-organization", g_variant_get_boolean (value), NULL); } else if (g_strcmp0 (key, "is-flathub") == 0) priv->is_flathub = g_variant_get_boolean (value); else if (g_str_has_prefix (key, "permissions-")) { continue; } } if (priv->permissions == NULL) priv->permissions = bz_app_permissions_new (); if (!bz_app_permissions_deserialize (priv->permissions, import, error)) { g_warning ("Failed to deserialize app permissions"); } return TRUE; } void bz_entry_hold (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_if_fail (BZ_IS_ENTRY (self)); priv = bz_entry_get_instance_private (self); if (++priv->hold == 1) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HOLDING]); } void bz_entry_release (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_if_fail (BZ_IS_ENTRY (self)); priv = bz_entry_get_instance_private (self); if (--priv->hold == 0) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HOLDING]); } gboolean bz_entry_is_holding (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); priv = bz_entry_get_instance_private (self); return priv->hold > 0; } gboolean bz_entry_is_installed (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); priv = bz_entry_get_instance_private (self); return priv->installed; } void bz_entry_set_installed (BzEntry *self, gboolean installed) { BzEntryPrivate *priv = NULL; g_return_if_fail (BZ_IS_ENTRY (self)); priv = bz_entry_get_instance_private (self); priv->installed = installed; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLED]); } const char * bz_entry_get_installed_version (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->installed_version; } void bz_entry_set_installed_version (BzEntry *self, const char *version) { BzEntryPrivate *priv = NULL; g_return_if_fail (BZ_IS_ENTRY (self)); priv = bz_entry_get_instance_private (self); g_clear_pointer (&priv->installed_version, g_free); priv->installed_version = g_strdup (version); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INSTALLED_VERSION]); } gboolean bz_entry_is_of_kinds (BzEntry *self, guint kinds) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); priv = bz_entry_get_instance_private (self); return (priv->kinds & kinds) == kinds; } gboolean bz_entry_is_reinstallable (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), TRUE); priv = bz_entry_get_instance_private (self); return priv->reinstallable; } gboolean bz_entry_is_searchable (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), TRUE); priv = bz_entry_get_instance_private (self); return priv->searchable; } void bz_entry_append_addon (BzEntry *self, const char *id) { BzEntryPrivate *priv = NULL; g_autoptr (GtkStringObject) string = NULL; g_return_if_fail (BZ_IS_ENTRY (self)); g_return_if_fail (id != NULL); priv = bz_entry_get_instance_private (self); string = gtk_string_object_new (id); if (priv->addons == NULL) { priv->addons = (GListModel *) g_list_store_new (GTK_TYPE_STRING_OBJECT); g_list_store_append (G_LIST_STORE (priv->addons), string); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ADDONS]); } else g_list_store_append (G_LIST_STORE (priv->addons), string); } GListModel * bz_entry_get_addons (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->addons; } const char * bz_entry_get_id (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->id; } const char * bz_entry_get_unique_id (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->unique_id; } const char * bz_entry_get_unique_id_checksum (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->unique_id_checksum; } const char * bz_entry_get_title (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->title; } const char * bz_entry_get_developer (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->developer; } gboolean bz_entry_is_verified (BzEntry *self) { BzEntryPrivate *priv = NULL; gboolean verified = FALSE; g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); priv = bz_entry_get_instance_private (self); if (priv->verification_status != NULL) g_object_get (priv->verification_status, "verified", &verified, NULL); return verified; } const char * bz_entry_get_eol (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), 0); priv = bz_entry_get_instance_private (self); return priv->eol; } const char * bz_entry_get_description (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->description; } const char * bz_entry_get_long_description (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->long_description; } const char * bz_entry_get_remote_repo_name (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->remote_repo_name; } guint64 bz_entry_get_size (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), 0); priv = bz_entry_get_instance_private (self); return priv->size; } guint64 bz_entry_get_installed_size (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), 0); priv = bz_entry_get_instance_private (self); return priv->installed_size; } GdkPaintable * bz_entry_get_icon_paintable (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->icon_paintable; } GListModel * bz_entry_get_screenshot_paintables (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->screenshot_paintables; } GIcon * bz_entry_get_mini_icon (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->mini_icon; } const char * bz_entry_get_search_tokens (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->search_tokens; } GListModel * bz_entry_get_share_urls (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->share_urls; } const char * bz_entry_get_url (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->url; } const char * bz_entry_get_donation_url (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->donation_url; } BzRepository * bz_entry_get_repository (BzEntry *self, GListModel *repos) { BzEntryPrivate *priv = NULL; guint n_repos = 0; g_auto (GStrv) parts = NULL; const char *scope = NULL; const char *repo_name = NULL; gboolean is_user = FALSE; priv = bz_entry_get_instance_private (self); if (priv->unique_id == NULL) return NULL; parts = g_strsplit (priv->unique_id, "::", -1); if (g_strv_length (parts) < 3) return NULL; scope = parts[0]; repo_name = parts[1]; is_user = g_strcmp0 (scope, "FLATPAK-USER") == 0; n_repos = g_list_model_get_n_items (repos); for (guint i = 0; i < n_repos; i++) { g_autoptr (BzRepository) repo = g_list_model_get_item (repos, i); const char *name = bz_repository_get_name (repo); gboolean repo_is_user = bz_repository_get_is_user (repo); if (repo_is_user == is_user && g_strcmp0 (name, repo_name) == 0) return g_object_ref (repo); } return NULL; } gboolean bz_entry_get_is_foss (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); priv = bz_entry_get_instance_private (self); return priv->is_floss; } const char * bz_entry_get_light_accent_color (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->light_accent_color; } const char * bz_entry_get_dark_accent_color (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); priv = bz_entry_get_instance_private (self); return priv->dark_accent_color; } gboolean bz_entry_get_is_mobile_friendly (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); return priv->is_mobile_friendly; } guint bz_entry_get_required_controls (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), BZ_CONTROL_NONE); return priv->required_controls; } guint bz_entry_get_recommended_controls (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), BZ_CONTROL_NONE); return priv->recommended_controls; } guint bz_entry_get_supported_controls (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), BZ_CONTROL_NONE); return priv->supported_controls; } gboolean bz_entry_has_control (BzEntry *self, BzControlType control, BzRelationType relation) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); switch (relation) { case BZ_RELATION_REQUIRES: return (priv->required_controls & control) != 0; case BZ_RELATION_RECOMMENDS: return (priv->recommended_controls & control) != 0; case BZ_RELATION_SUPPORTS: return (priv->supported_controls & control) != 0; default: return FALSE; } } gint bz_entry_get_min_display_length (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), 0); return priv->min_display_length; } gint bz_entry_get_max_display_length (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), 0); return priv->max_display_length; } gboolean bz_entry_supports_form_factor (BzEntry *self, guint available_controls, gint display_length) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); if (priv->required_controls != BZ_CONTROL_NONE) { if ((priv->required_controls & available_controls) != priv->required_controls) return FALSE; } if (priv->min_display_length > 0 && display_length < priv->min_display_length) return FALSE; if (priv->max_display_length > 0 && display_length > priv->max_display_length) return FALSE; return TRUE; } AsContentRating * bz_entry_get_content_rating (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_return_val_if_fail (BZ_IS_ENTRY (self), NULL); return priv->content_rating; } BzCategoryFlags bz_entry_get_category_flags (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), BZ_CATEGORY_FLAGS_NONE); priv = bz_entry_get_instance_private (self); return priv->categories; } gboolean bz_entry_get_is_flathub (BzEntry *self) { BzEntryPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); priv = bz_entry_get_instance_private (self); return priv->is_flathub; } gint bz_entry_calc_usefulness (BzEntry *self) { BzEntryPrivate *priv = NULL; gint score = 0; g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); priv = bz_entry_get_instance_private (self); score += priv->is_flathub ? 1000 : 0; score += priv->title != NULL ? 5 : 0; score += priv->description != NULL ? 1 : 0; score += priv->long_description != NULL ? 5 : 0; score += priv->url != NULL ? 1 : 0; score += priv->size > 0 ? 1 : 0; score += priv->icon_paintable != NULL ? 15 : 0; score += priv->remote_repo_icon != NULL ? 1 : 0; score += priv->metadata_license != NULL ? 1 : 0; score += priv->project_license != NULL ? 1 : 0; score += priv->project_group != NULL ? 1 : 0; score += priv->developer != NULL ? 1 : 0; score += priv->developer_id != NULL ? 1 : 0; score += priv->screenshot_paintables != NULL ? 5 : 0; score += priv->share_urls != NULL ? 5 : 0; score -= priv->eol != NULL ? 500 : 0; return score; } void bz_entry_serialize (BzEntry *self, GVariantBuilder *builder) { g_return_if_fail (BZ_IS_ENTRY (self)); g_return_if_fail (builder != NULL); return bz_entry_real_serialize (BZ_SERIALIZABLE (self), builder); } gboolean bz_entry_deserialize (BzEntry *self, GVariant *import, GError **error) { g_return_val_if_fail (BZ_IS_ENTRY (self), FALSE); g_return_val_if_fail (import != NULL, FALSE); return bz_entry_real_deserialize (BZ_SERIALIZABLE (self), import, error); } GIcon * bz_load_mini_icon_sync (const char *unique_id_checksum, const char *path) { guint icon_size = 0; g_autofree char *main_cache = NULL; g_autofree char *mini_icon_basename = NULL; g_autofree char *mini_icon_path = NULL; g_autoptr (GBytes) bytes = NULL; cairo_surface_t *surface_in = NULL; int width = 0; int height = 0; cairo_surface_t *surface_out = NULL; cairo_t *cairo = NULL; g_autoptr (GFile) parent_file = NULL; g_autoptr (GFile) mini_icon_file = NULL; g_autoptr (GIcon) mini_icon = NULL; icon_size = bz_get_desktop_search_provider_icon_size (); main_cache = bz_dup_module_dir (); mini_icon_basename = g_strdup_printf ("%s-%ux%u", unique_id_checksum, icon_size, icon_size); mini_icon_path = g_build_filename (main_cache, mini_icon_basename, NULL); if (g_file_test (mini_icon_path, G_FILE_TEST_EXISTS)) /* Assume the icon left behind by last writer */ goto done; surface_in = cairo_image_surface_create_from_png (path); width = cairo_image_surface_get_width (surface_in); height = cairo_image_surface_get_height (surface_in); surface_out = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, icon_size, icon_size); cairo = cairo_create (surface_out); cairo_scale (cairo, (double) icon_size / (double) width, (double) icon_size / (double) height); cairo_set_source_surface (cairo, surface_in, 0, 0); cairo_paint (cairo); cairo_restore (cairo); parent_file = g_file_new_for_path (main_cache); g_file_make_directory_with_parents (parent_file, NULL, NULL); cairo_surface_flush (surface_out); cairo_surface_write_to_png (surface_out, mini_icon_path); cairo_destroy (cairo); cairo_surface_destroy (surface_in); cairo_surface_destroy (surface_out); done: mini_icon_file = g_file_new_for_path (mini_icon_path); mini_icon = g_file_icon_new (mini_icon_file); return g_steal_pointer (&mini_icon); } static void query_flathub (BzEntry *self, int prop) { BzEntryPrivate *priv = NULL; g_autoptr (QueryFlathubData) data = NULL; g_autoptr (DexFuture) future = NULL; gboolean is_download_stat = FALSE; gboolean is_similar_apps = FALSE; priv = bz_entry_get_instance_private (self); is_download_stat = (prop == PROP_DOWNLOAD_STATS || prop == PROP_DOWNLOAD_STATS_PER_COUNTRY || prop == PROP_RECENT_DOWNLOADS || prop == PROP_TOTAL_DOWNLOADS); is_similar_apps = (prop == PROP_SIMILAR_APPS); if (!is_download_stat && !is_similar_apps && !priv->is_flathub) return; if (priv->id == NULL) return; if (priv->flathub_prop_queries == NULL) priv->flathub_prop_queries = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, dex_unref); else if (g_hash_table_contains (priv->flathub_prop_queries, GINT_TO_POINTER (prop))) return; data = query_flathub_data_new (); g_weak_ref_init (&data->self, self); data->prop = prop; data->id = g_strdup (priv->id); data->developer = g_strdup (priv->developer); future = dex_scheduler_spawn ( bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) query_flathub_fiber, query_flathub_data_ref (data), query_flathub_data_unref); future = dex_future_then ( future, (DexFutureCallback) query_flathub_then, query_flathub_data_ref (data), query_flathub_data_unref); g_hash_table_replace ( priv->flathub_prop_queries, GINT_TO_POINTER (prop), g_steal_pointer (&future)); } static gint compare_dates (BzDataPoint *a, BzDataPoint *b) { double date_a = bz_data_point_get_independent (a); double date_b = bz_data_point_get_independent (b); return (date_a > date_b) - (date_a < date_b); } static DexFuture * query_flathub_fiber (QueryFlathubData *data) { int prop = data->prop; char *id = data->id; char *developer = data->developer; g_autoptr (GError) local_error = NULL; g_autofree char *request = NULL; g_autoptr (JsonNode) node = NULL; switch (prop) { case PROP_DOWNLOAD_STATS: case PROP_DOWNLOAD_STATS_PER_COUNTRY: case PROP_RECENT_DOWNLOADS: case PROP_TOTAL_DOWNLOADS: request = g_strdup_printf ("/stats/%s?all=false&days=175", id); break; case PROP_DEVELOPER_APPS: request = g_strdup_printf ("/collection/developer/%s", developer); break; case PROP_FAVORITES_COUNT: request = g_strdup_printf ("/favorites/%s/count", id); break; case PROP_SIMILAR_APPS: request = g_strdup_printf ("/similar/%s", id); break; default: g_assert_not_reached (); return NULL; } if (prop == PROP_SIMILAR_APPS) node = dex_await_boxed (bz_query_bazaar_json (request), &local_error); else node = dex_await_boxed (bz_query_flathub_v2_json (request), &local_error); if (node == NULL) { if (!g_error_matches (local_error, DEX_ERROR, DEX_ERROR_FIBER_CANCELLED)) g_warning ("Could not retrieve property %s for %s from flathub: %s", props[prop]->name, id, local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } switch (prop) { case PROP_DOWNLOAD_STATS: { JsonObject *root = NULL; JsonObject *per_day = NULL; g_autoptr (GListStore) store = NULL; if (!JSON_NODE_HOLDS_OBJECT (node)) return dex_future_new_for_error ( g_error_new (G_IO_ERROR, G_IO_ERROR_INVALID_DATA, "Unexpected JSON response format")); root = json_node_get_object (node); per_day = json_object_get_object_member (root, "installs_per_day"); store = g_list_store_new (BZ_TYPE_DATA_POINT); json_object_foreach_member ( per_day, (JsonObjectForeach) download_stats_per_day_foreach, store); g_list_store_sort (store, (GCompareDataFunc) compare_dates, NULL); return dex_future_new_for_object (store); } break; case PROP_DOWNLOAD_STATS_PER_COUNTRY: { JsonObject *per_country = NULL; g_autoptr (GListStore) store = NULL; if (!JSON_NODE_HOLDS_OBJECT (node)) return dex_future_new_for_error ( g_error_new (G_IO_ERROR, G_IO_ERROR_INVALID_DATA, "Unexpected JSON response format")); per_country = json_object_get_object_member ( json_node_get_object (node), "installs_per_country"); store = g_list_store_new (BZ_TYPE_COUNTRY_DATA_POINT); json_object_foreach_member ( per_country, (JsonObjectForeach) download_stats_per_country_foreach, store); return dex_future_new_for_object (store); } break; case PROP_RECENT_DOWNLOADS: { int recent_downloads = 0; if (!JSON_NODE_HOLDS_OBJECT (node)) return dex_future_new_for_int (0); if (json_object_has_member (json_node_get_object (node), "installs_last_month")) recent_downloads = json_object_get_int_member (json_node_get_object (node), "installs_last_month"); return dex_future_new_for_int (recent_downloads); } break; case PROP_TOTAL_DOWNLOADS: { int total_downloads = 0; if (!JSON_NODE_HOLDS_OBJECT (node)) return dex_future_new_for_int (0); if (json_object_has_member (json_node_get_object (node), "installs_total")) total_downloads = json_object_get_int_member (json_node_get_object (node), "installs_total"); return dex_future_new_for_int (total_downloads); } break; case PROP_DEVELOPER_APPS: { JsonObject *response_obj = NULL; JsonArray *apps_array = NULL; g_autoptr (GtkStringList) app_ids = NULL; response_obj = json_node_get_object (node); apps_array = json_object_get_array_member (response_obj, "hits"); app_ids = gtk_string_list_new (NULL); for (guint i = 0; i < json_array_get_length (apps_array); i++) { JsonObject *app_obj = json_array_get_object_element (apps_array, i); const char *app_id = json_object_get_string_member (app_obj, "app_id"); if (app_id != NULL) gtk_string_list_append (app_ids, app_id); } return dex_future_new_for_object (app_ids); } break; case PROP_FAVORITES_COUNT: { int favorites_count = 0; if (json_object_has_member (json_node_get_object (node), "favorites_count")) favorites_count = json_object_get_int_member (json_node_get_object (node), "favorites_count"); return dex_future_new_for_int (favorites_count); } break; case PROP_SIMILAR_APPS: { JsonArray *array = NULL; g_autoptr (GtkStringList) app_ids = NULL; if (!JSON_NODE_HOLDS_ARRAY (node)) return dex_future_new_for_error ( g_error_new (G_IO_ERROR, G_IO_ERROR_INVALID_DATA, "Unexpected JSON response format")); array = json_node_get_array (node); app_ids = gtk_string_list_new (NULL); for (guint i = 0; i < json_array_get_length (array); i++) { const char *app_id = json_array_get_string_element (array, i); if (app_id != NULL) gtk_string_list_append (app_ids, app_id); } return dex_future_new_for_object (app_ids); } break; default: g_assert_not_reached (); return NULL; } } static DexFuture * query_flathub_then (DexFuture *future, QueryFlathubData *data) { g_autoptr (BzEntry) self = NULL; int prop = data->prop; const GValue *value = NULL; self = g_weak_ref_get (&data->self); if (self == NULL) return NULL; value = dex_future_get_value (future, NULL); g_object_set_property (G_OBJECT (self), props[prop]->name, value); return NULL; } static void download_stats_per_day_foreach (JsonObject *object, const gchar *member_name, JsonNode *member_node, GListStore *store) { double independent = 0; double dependent = 0; g_autoptr (BzDataPoint) point = NULL; g_autoptr (GDateTime) date = NULL; g_autofree char *formatted_label = NULL; g_autofree char *iso_with_tz = NULL; dependent = json_node_get_int (member_node); iso_with_tz = g_strdup_printf ("%sT00:00:00Z", member_name); date = g_date_time_new_from_iso8601 (iso_with_tz, NULL); formatted_label = g_date_time_format (date, "%-d %b"); independent = (double) g_date_time_to_unix (date); point = g_object_new ( BZ_TYPE_DATA_POINT, "independent", independent, "dependent", dependent, "label", formatted_label, NULL); g_list_store_append (store, point); } static void download_stats_per_country_foreach (JsonObject *object, const gchar *member_name, JsonNode *member_node, GListStore *store) { guint downloads = 0; g_autoptr (BzCountryDataPoint) point = NULL; downloads = json_node_get_int (member_node); point = g_object_new ( BZ_TYPE_COUNTRY_DATA_POINT, "country-code", member_name, "downloads", downloads, NULL); g_list_store_append (store, point); } static gboolean maybe_save_paintable (BzEntryPrivate *priv, const char *key, GdkPaintable *paintable, GVariantBuilder *builder) { g_autoptr (GError) local_error = NULL; const char *source_uri = NULL; const char *cache_into_path = NULL; int width = 0; int height = 0; g_autoptr (GdkTexture) texture = NULL; g_autoptr (GFile) save_file = NULL; gboolean result = FALSE; if (!BZ_IS_ASYNC_TEXTURE (paintable)) { return FALSE; } source_uri = bz_async_texture_get_source_uri (BZ_ASYNC_TEXTURE (paintable)); cache_into_path = bz_async_texture_get_cache_into_path (BZ_ASYNC_TEXTURE (paintable)); width = bz_async_texture_get_width (BZ_ASYNC_TEXTURE (paintable)); height = bz_async_texture_get_height (BZ_ASYNC_TEXTURE (paintable)); if (cache_into_path == NULL) goto done; if (bz_async_texture_get_loaded (BZ_ASYNC_TEXTURE (paintable))) texture = bz_async_texture_dup_texture (BZ_ASYNC_TEXTURE (paintable)); else goto done; save_file = g_file_new_for_path (cache_into_path); if (!g_file_query_exists (save_file, NULL)) { g_autoptr (GFile) parent_file = NULL; g_autoptr (GBytes) png_bytes = NULL; g_autoptr (GFileOutputStream) output = NULL; gssize bytes_written = 0; parent_file = g_file_get_parent (save_file); result = g_file_make_directory_with_parents ( parent_file, NULL, &local_error); if (!result) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS)) g_clear_pointer (&local_error, g_error_free); else { g_warning ("Couldn't serialize texture to %s: %s\n", cache_into_path, local_error->message); goto done; } } png_bytes = gdk_texture_save_to_png_bytes (texture); if (png_bytes == NULL) goto done; output = g_file_replace ( save_file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &local_error); if (output == NULL) { g_warning ("Couldn't serialize texture to %s: %s\n", cache_into_path, local_error->message); goto done; } bytes_written = g_output_stream_write_bytes ( G_OUTPUT_STREAM (output), png_bytes, NULL, &local_error); if (bytes_written < 0) { g_warning ("Couldn't serialize texture to %s: %s\n", cache_into_path, local_error->message); goto done; } result = g_output_stream_close (G_OUTPUT_STREAM (output), NULL, &local_error); if (!result) { g_warning ("Couldn't serialize texture to %s: %s\n", cache_into_path, local_error->message); goto done; } } done: g_variant_builder_add (builder, "{sv}", key, g_variant_new ("(smsii)", source_uri, cache_into_path, width, height)); return TRUE; } static GdkPaintable * make_async_texture (GVariant *parse) { g_autofree char *source = NULL; g_autofree char *cache_into = NULL; int width = 0; int height = 0; g_autoptr (GFile) source_file = NULL; g_autoptr (GFile) cache_into_file = NULL; g_autoptr (BzAsyncTexture) texture = NULL; g_variant_get (parse, "(smsii)", &source, &cache_into, &width, &height); source_file = g_file_new_for_uri (source); if (cache_into != NULL) cache_into_file = g_file_new_for_path (cache_into); if (width > 0 && height > 0) texture = bz_async_texture_new_lazy_with_size (source_file, cache_into_file, width, height); else texture = bz_async_texture_new_lazy (source_file, cache_into_file); return GDK_PAINTABLE (g_steal_pointer (&texture)); } static void clear_entry (BzEntry *self) { BzEntryPrivate *priv = bz_entry_get_instance_private (self); g_clear_pointer (&priv->flathub_prop_queries, g_hash_table_unref); g_clear_object (&priv->addons); g_clear_pointer (&priv->id, g_free); g_clear_pointer (&priv->unique_id, g_free); g_clear_pointer (&priv->unique_id_checksum, g_free); g_clear_pointer (&priv->installed_version, g_free); g_clear_pointer (&priv->title, g_free); g_clear_pointer (&priv->eol, g_free); g_clear_pointer (&priv->description, g_free); g_clear_pointer (&priv->long_description, g_free); g_clear_pointer (&priv->remote_repo_name, g_free); g_clear_pointer (&priv->url, g_free); g_clear_object (&priv->icon_paintable); g_clear_object (&priv->mini_icon); g_clear_object (&priv->remote_repo_icon); g_clear_pointer (&priv->search_tokens, g_free); g_clear_pointer (&priv->metadata_license, g_free); g_clear_pointer (&priv->project_license, g_free); g_clear_pointer (&priv->project_group, g_free); g_clear_pointer (&priv->developer, g_free); g_clear_pointer (&priv->developer_id, g_free); g_clear_object (&priv->developer_apps); g_clear_object (&priv->similar_apps); g_clear_object (&priv->screenshot_paintables); g_clear_object (&priv->screenshot_captions); g_clear_object (&priv->thumbnail_paintable); g_clear_object (&priv->share_urls); g_clear_pointer (&priv->donation_url, g_free); g_clear_pointer (&priv->ratings_summary, g_free); g_clear_object (&priv->version_history); g_clear_pointer (&priv->light_accent_color, g_free); g_clear_pointer (&priv->dark_accent_color, g_free); g_clear_object (&priv->verification_status); g_clear_object (&priv->download_stats); g_clear_object (&priv->download_stats_per_country); g_clear_object (&priv->content_rating); g_clear_object (&priv->keywords); g_clear_object (&priv->permissions); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-entry.h������������������������������������������������������������0000664�0000000�0000000�00000012402�15240005042�0020047�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-entry.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <appstream.h> #include <gtk/gtk.h> #include <libdex.h> #include "bz-category-flags.h" #include "bz-repository.h" G_BEGIN_DECLS typedef enum { BZ_ENTRY_KIND_APPLICATION = 1 << 0, BZ_ENTRY_KIND_RUNTIME = 1 << 1, BZ_ENTRY_KIND_ADDON = 1 << 2, } BzEntryKind; GType bz_entry_kind_get_type (void); #define BZ_TYPE_ENTRY_KIND (bz_entry_kind_get_type ()) typedef enum { BZ_CONTROL_NONE = 0, BZ_CONTROL_POINTING = 1 << 0, BZ_CONTROL_KEYBOARD = 1 << 1, BZ_CONTROL_CONSOLE = 1 << 2, BZ_CONTROL_TABLET = 1 << 3, BZ_CONTROL_TOUCH = 1 << 4, BZ_CONTROL_GAMEPAD = 1 << 5, BZ_CONTROL_TV_REMOTE = 1 << 6, BZ_CONTROL_VOICE = 1 << 7, BZ_CONTROL_VISION = 1 << 8, } BzControlType; GType bz_control_type_get_type (void); #define BZ_TYPE_CONTROL_TYPE (bz_control_type_get_type ()) typedef enum { BZ_RELATION_REQUIRES, BZ_RELATION_RECOMMENDS, BZ_RELATION_SUPPORTS, } BzRelationType; GType bz_relation_type_get_type (void); #define BZ_TYPE_RELATION_TYPE (bz_relation_type_get_type ()) #define BZ_TYPE_ENTRY (bz_entry_get_type ()) G_DECLARE_DERIVABLE_TYPE (BzEntry, bz_entry, BZ, ENTRY, GObject) struct _BzEntryClass { GObjectClass parent_class; }; void bz_entry_hold (BzEntry *self); void bz_entry_release (BzEntry *self); gboolean bz_entry_is_holding (BzEntry *self); gboolean bz_entry_is_installed (BzEntry *self); const char * bz_entry_get_installed_version (BzEntry *self); void bz_entry_set_installed_version (BzEntry *self, const char *version); void bz_entry_set_installed (BzEntry *self, gboolean installed); gboolean bz_entry_is_reinstallable (BzEntry *self); gboolean bz_entry_is_searchable (BzEntry *self); gboolean bz_entry_is_of_kinds (BzEntry *self, guint kinds); void bz_entry_append_addon (BzEntry *self, const char *id); GListModel * bz_entry_get_addons (BzEntry *self); const char * bz_entry_get_id (BzEntry *self); const char * bz_entry_get_unique_id (BzEntry *self); const char * bz_entry_get_unique_id_checksum (BzEntry *self); const char * bz_entry_get_title (BzEntry *self); const char * bz_entry_get_developer (BzEntry *self); GList * bz_entry_get_developer_apps (BzEntry *self); const char * bz_entry_get_eol (BzEntry *self); const char * bz_entry_get_description (BzEntry *self); gboolean bz_entry_is_verified (BzEntry *self); const char * bz_entry_get_long_description (BzEntry *self); const char * bz_entry_get_remote_repo_name (BzEntry *self); guint64 bz_entry_get_size (BzEntry *self); guint64 bz_entry_get_installed_size (BzEntry *self); GdkPaintable * bz_entry_get_icon_paintable (BzEntry *self); GListModel * bz_entry_get_screenshot_paintables (BzEntry *self); GIcon * bz_entry_get_mini_icon (BzEntry *self); const char * bz_entry_get_search_tokens (BzEntry *self); GListModel * bz_entry_get_share_urls (BzEntry *self); const char * bz_entry_get_url (BzEntry *self); const char * bz_entry_get_donation_url (BzEntry *self); BzRepository * bz_entry_get_repository (BzEntry *self, GListModel *repos); gboolean bz_entry_get_is_foss (BzEntry *self); const char * bz_entry_get_light_accent_color (BzEntry *self); const char * bz_entry_get_dark_accent_color (BzEntry *self); gboolean bz_entry_get_is_flathub (BzEntry *self); gboolean bz_entry_get_is_mobile_friendly (BzEntry *self); guint bz_entry_get_required_controls (BzEntry *self); guint bz_entry_get_recommended_controls (BzEntry *self); guint bz_entry_get_supported_controls (BzEntry *self); gboolean bz_entry_has_control (BzEntry *self, BzControlType control, BzRelationType relation); gint bz_entry_get_min_display_length (BzEntry *self); gint bz_entry_get_max_display_length (BzEntry *self); gboolean bz_entry_supports_form_factor (BzEntry *self, guint available_controls, gint display_length); gint bz_entry_get_age_rating (BzEntry *self); AsContentRating * bz_entry_get_content_rating (BzEntry *self); BzCategoryFlags bz_entry_get_category_flags (BzEntry *self); gint bz_entry_calc_usefulness (BzEntry *self); void bz_entry_serialize (BzEntry *self, GVariantBuilder *builder); gboolean bz_entry_deserialize (BzEntry *self, GVariant *import, GError **error); GIcon * bz_load_mini_icon_sync (const char *unique_id_checksum, const char *path); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-error-dialog.blp���������������������������������������������������0000664�0000000�0000000�00000003121�15240005042�0021620�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzErrorDialog: Adw.Dialog { content-width: 500; content-height: 400; child: Adw.ToastOverlay toast_overlay { child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Box { orientation: vertical; spacing: 0; margin-start: 24; margin-end: 24; margin-top: 12; margin-bottom: 24; Label error_title { halign: center; styles [ "title-1", ] } Box { orientation: horizontal; spacing: 6; margin-top: 12; margin-bottom: 6; Label { label: _("Details"); halign: start; hexpand: true; styles [ "heading", ] } Button copy_button { icon-name: "edit-copy-symbolic"; // TRANSLATORS: tooltip for a button that copies text to the clipboard tooltip-text: _("Copy"); clicked => $on_copy_button_clicked(); styles [ "flat", ] } } ScrolledWindow { vexpand: true; hscrollbar-policy: automatic; vscrollbar-policy: automatic; TextView text_view { editable: false; wrap-mode: word_char; monospace: true; left-margin: 6; right-margin: 6; top-margin: 6; bottom-margin: 6; styles [ "card", ] } } }; }; }; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-error-dialog.c�����������������������������������������������������0000664�0000000�0000000�00000006016�15240005042�0021273�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-error-dialog.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <adwaita.h> #include <glib/gi18n.h> #include "bz-error-dialog.h" struct _BzErrorDialog { AdwDialog parent_instance; AdwToastOverlay *toast_overlay; GtkLabel *error_title; GtkTextView *text_view; }; G_DEFINE_FINAL_TYPE (BzErrorDialog, bz_error_dialog, ADW_TYPE_DIALOG) static void on_copy_button_clicked (GtkButton *button, BzErrorDialog *self) { GtkTextBuffer *buffer = NULL; GtkTextIter start = { 0 }; GtkTextIter end = { 0 }; g_autofree char *text = NULL; GdkClipboard *clipboard = NULL; g_autoptr (AdwToast) toast = NULL; buffer = gtk_text_view_get_buffer (self->text_view); gtk_text_buffer_get_bounds (buffer, &start, &end); text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); gdk_clipboard_set_text (clipboard, text); toast = adw_toast_new (_ ("Copied!")); adw_toast_set_timeout (toast, 2); adw_toast_overlay_add_toast (self->toast_overlay, g_steal_pointer (&toast)); } static void bz_error_dialog_class_init (BzErrorDialogClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-error-dialog.ui"); gtk_widget_class_bind_template_child (widget_class, BzErrorDialog, toast_overlay); gtk_widget_class_bind_template_child (widget_class, BzErrorDialog, error_title); gtk_widget_class_bind_template_child (widget_class, BzErrorDialog, text_view); gtk_widget_class_bind_template_callback (widget_class, on_copy_button_clicked); } static void bz_error_dialog_init (BzErrorDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } BzErrorDialog * bz_error_dialog_new (const char *title, const char *text) { BzErrorDialog *self; GtkTextBuffer *buffer; GtkTextIter iter; g_return_val_if_fail (title != NULL, NULL); g_return_val_if_fail (text != NULL, NULL); self = g_object_new (BZ_TYPE_ERROR_DIALOG, NULL); gtk_label_set_text (self->error_title, title); buffer = gtk_text_view_get_buffer (self->text_view); gtk_text_buffer_get_start_iter (buffer, &iter); gtk_text_buffer_insert (buffer, &iter, text, -1); return self; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-error-dialog.h�����������������������������������������������������0000664�0000000�0000000�00000002070�15240005042�0021274�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-error-dialog.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_ERROR_DIALOG (bz_error_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzErrorDialog, bz_error_dialog, BZ, ERROR_DIALOG, AdwDialog) BzErrorDialog *bz_error_dialog_new (const char *title, const char *text); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-exponential-function.txt�������������������������������������������0000664�0000000�0000000�00000000264�15240005042�0023452�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=exponential_function parent-prefix=g parent-name=object author=AUTOGEN property=factor double G_TYPE_DOUBLE double property=y_intercept double G_TYPE_DOUBLE double ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-fading-clamp.c�����������������������������������������������������0000664�0000000�0000000�00000026323�15240005042�0021232�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-fading-clamp.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <bge.h> #include "bz-fading-clamp.h" #include "util.h" #define FADE_HEIGHT 75 #define CLAMP_LEEWAY 100 struct _BzFadingClamp { GtkWidget parent_instance; BgeAnimation *animation; GtkWidget *child; int max_height; int min_max_height; int current_height; int allocated_width; gboolean will_change; }; enum { PROP_0, PROP_CHILD, PROP_MAX_HEIGHT, PROP_MIN_MAX_HEIGHT, PROP_WILL_CHANGE, N_PROPS }; static GParamSpec *properties[N_PROPS]; G_DEFINE_TYPE (BzFadingClamp, bz_fading_clamp, GTK_TYPE_WIDGET) static void animate (BzFadingClamp *self, const char *key, double value, gpointer user_data) { self->current_height = round (value); gtk_widget_queue_resize (GTK_WIDGET (self)); } static void bz_fading_clamp_update_will_change (BzFadingClamp *self) { gboolean new_value = FALSE; int natural_height; int width; if (self->child) { if (self->allocated_width > 0) width = self->allocated_width; else gtk_widget_measure (self->child, GTK_ORIENTATION_HORIZONTAL, -1, NULL, &width, NULL, NULL); gtk_widget_measure (self->child, GTK_ORIENTATION_VERTICAL, width, NULL, &natural_height, NULL, NULL); new_value = natural_height > self->min_max_height + CLAMP_LEEWAY; } if (self->will_change != new_value) { self->will_change = new_value; g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_WILL_CHANGE]); } } static void bz_fading_clamp_dispose (GObject *object) { BzFadingClamp *self = BZ_FADING_CLAMP (object); g_clear_object (&self->animation); g_clear_pointer (&self->child, gtk_widget_unparent); G_OBJECT_CLASS (bz_fading_clamp_parent_class)->dispose (object); } static void bz_fading_clamp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFadingClamp *self = BZ_FADING_CLAMP (object); switch (prop_id) { case PROP_CHILD: g_value_set_object (value, self->child); break; case PROP_MAX_HEIGHT: g_value_set_int (value, self->max_height); break; case PROP_MIN_MAX_HEIGHT: g_value_set_int (value, self->min_max_height); break; case PROP_WILL_CHANGE: g_value_set_boolean (value, self->will_change); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_fading_clamp_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFadingClamp *self = BZ_FADING_CLAMP (object); switch (prop_id) { case PROP_CHILD: bz_fading_clamp_set_child (self, g_value_get_object (value)); break; case PROP_MAX_HEIGHT: bz_fading_clamp_set_max_height (self, g_value_get_int (value)); break; case PROP_MIN_MAX_HEIGHT: self->min_max_height = g_value_get_int (value); bz_fading_clamp_update_will_change (self); gtk_widget_queue_resize (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MIN_MAX_HEIGHT]); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkSizeRequestMode bz_fading_clamp_get_request_mode (GtkWidget *widget) { return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; } static void bz_fading_clamp_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { int target_height = 0; BzFadingClamp *self = BZ_FADING_CLAMP (widget); if (!self->child) { *minimum = 0; *natural = 0; return; } if (orientation == GTK_ORIENTATION_HORIZONTAL) gtk_widget_measure (self->child, orientation, for_size, minimum, natural, minimum_baseline, natural_baseline); else { gtk_widget_measure (self->child, GTK_ORIENTATION_VERTICAL, for_size, minimum, natural, minimum_baseline, natural_baseline); if (*natural <= self->max_height + CLAMP_LEEWAY) target_height = *natural; else target_height = self->max_height; bz_fading_clamp_update_will_change (self); if (!bge_animation_has_key (self->animation, "height")) self->current_height = target_height; *minimum = self->current_height; *natural = self->current_height; } } static void bz_fading_clamp_size_allocate (GtkWidget *widget, int width, int height, int baseline) { BzFadingClamp *self = BZ_FADING_CLAMP (widget); if (self->allocated_width != width) { self->allocated_width = width; bz_fading_clamp_update_will_change (self); } if (self->child) { int child_height = 0; int natural_height = 0; gtk_widget_measure (self->child, GTK_ORIENTATION_VERTICAL, width, NULL, &natural_height, NULL, NULL); if (natural_height > height) child_height = natural_height; else child_height = height; gtk_widget_allocate (self->child, width, child_height, baseline, NULL); } } static void bz_fading_clamp_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzFadingClamp *self = BZ_FADING_CLAMP (widget); int width, height, natural_height; int gradient_start; graphene_rect_t gradient_rect; GskColorStop stops[2]; graphene_point_t start_point, end_point; int effective_fade_height; float stop_offset; if (!self->child || !gtk_widget_get_visible (self->child)) return; width = gtk_widget_get_width (widget); height = gtk_widget_get_height (widget); if (height <= 0) return; gtk_widget_measure (self->child, GTK_ORIENTATION_VERTICAL, width, NULL, &natural_height, NULL, NULL); if (natural_height <= height) { gtk_widget_snapshot_child (widget, self->child, snapshot); return; } effective_fade_height = MIN (natural_height - height, FADE_HEIGHT); gtk_snapshot_push_mask (snapshot, GSK_MASK_MODE_ALPHA); gradient_start = height - effective_fade_height; graphene_rect_init (&gradient_rect, 0, 0, width, height); stop_offset = CLAMP ((float) gradient_start / height, 0.0f, 1.0f); stops[0] = (GskColorStop){ stop_offset, { 1, 1, 1, 1 } }; stops[1] = (GskColorStop){ 1.0, { 1, 1, 1, 0 } }; graphene_point_init (&start_point, 0, 0); graphene_point_init (&end_point, 0, height); gtk_snapshot_append_linear_gradient (snapshot, &gradient_rect, &start_point, &end_point, stops, 2); gtk_snapshot_pop (snapshot); gtk_widget_snapshot_child (widget, self->child, snapshot); gtk_snapshot_pop (snapshot); } static void bz_fading_clamp_class_init (BzFadingClampClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_fading_clamp_dispose; object_class->get_property = bz_fading_clamp_get_property; object_class->set_property = bz_fading_clamp_set_property; widget_class->get_request_mode = bz_fading_clamp_get_request_mode; widget_class->measure = bz_fading_clamp_measure; widget_class->size_allocate = bz_fading_clamp_size_allocate; widget_class->snapshot = bz_fading_clamp_snapshot; properties[PROP_CHILD] = g_param_spec_object ("child", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); properties[PROP_MAX_HEIGHT] = g_param_spec_int ("max-height", NULL, NULL, 0, G_MAXINT, 300, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); properties[PROP_MIN_MAX_HEIGHT] = g_param_spec_int ("min-max-height", NULL, NULL, 0, G_MAXINT, 150, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); properties[PROP_WILL_CHANGE] = g_param_spec_boolean ("will-change", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, N_PROPS, properties); } static void bz_fading_clamp_init (BzFadingClamp *self) { self->animation = bge_animation_new (GTK_WIDGET (self)); self->max_height = 300; self->min_max_height = 150; self->current_height = CLAMP_LEEWAY; self->allocated_width = 0; self->will_change = FALSE; } GtkWidget * bz_fading_clamp_new (void) { return g_object_new (BZ_TYPE_FADING_CLAMP, NULL); } void bz_fading_clamp_set_child (BzFadingClamp *self, GtkWidget *child) { g_return_if_fail (BZ_IS_FADING_CLAMP (self)); g_return_if_fail (child == NULL || GTK_IS_WIDGET (child)); if (self->child == child) return; g_clear_pointer (&self->child, gtk_widget_unparent); if (child) { self->child = child; gtk_widget_set_parent (child, GTK_WIDGET (self)); self->current_height = 0; } bz_fading_clamp_update_will_change (self); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CHILD]); gtk_widget_queue_resize (GTK_WIDGET (self)); } GtkWidget * bz_fading_clamp_get_child (BzFadingClamp *self) { g_return_val_if_fail (BZ_IS_FADING_CLAMP (self), NULL); return self->child; } void bz_fading_clamp_set_max_height (BzFadingClamp *self, int max_height) { int natural_height = 0; int target_height = 0; int width = 0; g_return_if_fail (BZ_IS_FADING_CLAMP (self)); if (self->max_height == max_height) return; self->max_height = max_height; if (self->child) { if (self->allocated_width > 0) width = self->allocated_width; else gtk_widget_measure (self->child, GTK_ORIENTATION_HORIZONTAL, -1, NULL, &width, NULL, NULL); gtk_widget_measure (self->child, GTK_ORIENTATION_VERTICAL, width, NULL, &natural_height, NULL, NULL); if (natural_height <= max_height + CLAMP_LEEWAY) target_height = natural_height; else target_height = max_height; } else target_height = max_height; bge_animation_add_spring ( self->animation, "height", self->current_height, target_height, 1.25, 1.0, 800.0, (BgeAnimationCallback) animate, NULL, NULL, NULL); bz_fading_clamp_update_will_change (self); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MAX_HEIGHT]); } int bz_fading_clamp_get_max_height (BzFadingClamp *self) { g_return_val_if_fail (BZ_IS_FADING_CLAMP (self), 0); return self->max_height; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-fading-clamp.h�����������������������������������������������������0000664�0000000�0000000�00000002522�15240005042�0021232�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-fading-clamp.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_FADING_CLAMP (bz_fading_clamp_get_type ()) G_DECLARE_FINAL_TYPE (BzFadingClamp, bz_fading_clamp, BZ, FADING_CLAMP, GtkWidget) GtkWidget *bz_fading_clamp_new (void); GtkWidget *bz_fading_clamp_get_child (BzFadingClamp *self); void bz_fading_clamp_set_child (BzFadingClamp *self, GtkWidget *child); int bz_fading_clamp_get_max_height (BzFadingClamp *self); void bz_fading_clamp_set_max_height (BzFadingClamp *self, int max_height); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorite-button.blp������������������������������������������������0000664�0000000�0000000�00000002060�15240005042�0022363�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzFavoriteButton: Button { styles [ "small-pill", "suggested-action", "favorite", ] margin-top: 8; valign: start; halign: start; has-tooltip: true; tooltip-text: _("Favorite Count"); visible: bind template.entry as <$BzEntry>.is-flathub; clicked => $button_clicked_cb() swapped; child: Stack stack { transition-type: crossfade; StackPage { name: "content"; child: Box box { Image icon { icon-name: "bookmark-outline-symbolic"; } Revealer count_revealer { reveal-child: bind $is_positive(template.entry as <$BzEntry>.favorites-count) as <bool>; transition-type: slide_left; child: Label count_label { margin-start: 4; label: bind $format_favorites_count(template.entry as <$BzEntry>.favorites-count) as <string>; }; } }; } StackPage { name: "spinner"; child: Adw.Spinner { halign: center; width-request: 16; }; } }; }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorite-button.c��������������������������������������������������0000664�0000000�0000000�00000031441�15240005042�0022035�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-favorite-button.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include <json-glib/json-glib.h> #include "bz-entry.h" #include "env.h" #include "error.h" #include "bz-favorite-button.h" #include "global-net.h" #include "bz-state-info.h" struct _BzFavoriteButton { GtkButton parent_instance; BzEntry *entry; BzStateInfo *state; GtkBox *box; GtkImage *icon; GtkRevealer *count_revealer; GtkLabel *count_label; GtkStack *stack; gboolean is_favorited; }; G_DEFINE_FINAL_TYPE (BzFavoriteButton, bz_favorite_button, GTK_TYPE_BUTTON) enum { PROP_0, PROP_ENTRY, PROP_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * fetch_favorite_status_fiber (BzFavoriteButton *button); static DexFuture * toggle_favorite_fiber (BzFavoriteButton *button); static void button_clicked_cb (BzFavoriteButton *self, GtkButton *button); static void update_icon (BzFavoriteButton *self); static void update_count (BzFavoriteButton *self); static void on_login_button_clicked (GtkButton *button, GtkPopover *popover); static void show_login_popover (BzFavoriteButton *self); static gboolean is_positive (gpointer object, int value); static char * format_favorites_count (gpointer object, int count); static void bz_favorite_button_dispose (GObject *object) { BzFavoriteButton *self = BZ_FAVORITE_BUTTON (object); g_clear_object (&self->entry); g_clear_object (&self->state); G_OBJECT_CLASS (bz_favorite_button_parent_class)->dispose (object); } static void bz_favorite_button_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFavoriteButton *self = BZ_FAVORITE_BUTTON (object); switch (prop_id) { case PROP_ENTRY: g_value_set_object (value, bz_favorite_button_get_entry (self)); break; case PROP_STATE: g_value_set_object (value, bz_favorite_button_get_state (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_favorite_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFavoriteButton *self = BZ_FAVORITE_BUTTON (object); switch (prop_id) { case PROP_ENTRY: bz_favorite_button_set_entry (self, g_value_get_object (value)); break; case PROP_STATE: bz_favorite_button_set_state (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_favorite_button_class_init (BzFavoriteButtonClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_favorite_button_dispose; object_class->get_property = bz_favorite_button_get_property; object_class->set_property = bz_favorite_button_set_property; props[PROP_ENTRY] = g_param_spec_object ( "entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-favorite-button.ui"); gtk_widget_class_bind_template_child (widget_class, BzFavoriteButton, box); gtk_widget_class_bind_template_child (widget_class, BzFavoriteButton, icon); gtk_widget_class_bind_template_child (widget_class, BzFavoriteButton, count_revealer); gtk_widget_class_bind_template_child (widget_class, BzFavoriteButton, count_label); gtk_widget_class_bind_template_child (widget_class, BzFavoriteButton, stack); gtk_widget_class_bind_template_callback (widget_class, is_positive); gtk_widget_class_bind_template_callback (widget_class, format_favorites_count); gtk_widget_class_bind_template_callback (widget_class, button_clicked_cb); } static void bz_favorite_button_init (BzFavoriteButton *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->is_favorited = FALSE; } GtkWidget * bz_favorite_button_new (void) { return g_object_new (BZ_TYPE_FAVORITE_BUTTON, NULL); } void bz_favorite_button_set_entry (BzFavoriteButton *self, BzEntry *entry) { g_return_if_fail (BZ_IS_FAVORITE_BUTTON (self)); g_return_if_fail (entry == NULL || BZ_IS_ENTRY (entry)); if (g_set_object (&self->entry, entry)) { update_count (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENTRY]); if (self->state != NULL && self->entry != NULL) { dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) fetch_favorite_status_fiber, g_object_ref (self), g_object_unref)); } } } BzEntry * bz_favorite_button_get_entry (BzFavoriteButton *self) { g_return_val_if_fail (BZ_IS_FAVORITE_BUTTON (self), NULL); return self->entry; } void bz_favorite_button_set_state (BzFavoriteButton *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_FAVORITE_BUTTON (self)); g_return_if_fail (state == NULL || BZ_IS_STATE_INFO (state)); if (g_set_object (&self->state, state)) { g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); if (self->state != NULL && self->entry != NULL) { dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) fetch_favorite_status_fiber, g_object_ref (self), g_object_unref)); } } } BzStateInfo * bz_favorite_button_get_state (BzFavoriteButton *self) { g_return_val_if_fail (BZ_IS_FAVORITE_BUTTON (self), NULL); return self->state; } static gboolean is_positive (gpointer object, int value) { return value > 0; } static char * format_favorites_count (gpointer object, int count) { if (count >= 1000000) return g_strdup_printf ("%.1fM", count / 1000000.0); else if (count >= 1000) return g_strdup_printf ("%.1fK", count / 1000.0); else return g_strdup_printf ("%d", count); } static void update_icon (BzFavoriteButton *self) { if (self->is_favorited) gtk_image_set_from_icon_name (self->icon, "bookmark-filled-symbolic"); else gtk_image_set_from_icon_name (self->icon, "bookmark-outline-symbolic"); } static void update_count (BzFavoriteButton *self) { int count = 0; if (self->entry != NULL) g_object_get (self->entry, "favorites-count", &count, NULL); gtk_revealer_set_reveal_child (self->count_revealer, count > 0); if (count > 0) { g_autofree char *formatted = format_favorites_count (NULL, count); gtk_label_set_label (self->count_label, formatted); } } static DexFuture * fetch_favorite_status_fiber (BzFavoriteButton *button) { g_autoptr (GError) local_error = NULL; g_autoptr (JsonNode) node = NULL; g_autofree char *request = NULL; BzAuthState *auth_state = NULL; const char *token = NULL; const char *app_id = NULL; if (button->state == NULL || button->entry == NULL) return NULL; auth_state = bz_state_info_get_auth_state (button->state); if (!bz_auth_state_is_authenticated (auth_state)) return NULL; token = bz_auth_state_get_token (auth_state); if (token == NULL) return NULL; g_object_get (button->entry, "id", &app_id, NULL); request = g_strdup_printf ("/favorites/%s", app_id); node = dex_await_boxed ( bz_query_flathub_v2_json_authenticated (request, token), &local_error); if (local_error == NULL && node != NULL && JSON_NODE_HOLDS_VALUE (node)) { button->is_favorited = json_node_get_boolean (node); update_icon (button); } return NULL; } static DexFuture * toggle_favorite_fiber (BzFavoriteButton *button) { g_autoptr (GError) local_error = NULL; g_autofree char *request = NULL; BzAuthState *auth_state = NULL; const char *token = NULL; const char *app_id = NULL; int current_count = 0; if (button->state == NULL || button->entry == NULL) goto err; auth_state = bz_state_info_get_auth_state (button->state); if (!bz_auth_state_is_authenticated (auth_state)) goto err; token = bz_auth_state_get_token (auth_state); if (token == NULL) goto err; g_object_get (button->entry, "id", &app_id, "favorites-count", ¤t_count, NULL); if (button->is_favorited) request = g_strdup_printf ("/favorites/%s/remove", app_id); else request = g_strdup_printf ("/favorites/%s/add", app_id); if (button->is_favorited) dex_await ( bz_query_flathub_v2_json_authenticated_delete (request, token), &local_error); else dex_await ( bz_query_flathub_v2_json_authenticated_post (request, token), &local_error); if (local_error != NULL) { GtkWidget *window = NULL; gtk_stack_set_visible_child_name (button->stack, "content"); window = gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW); if (window != NULL) bz_show_error_for_widget (window, _ ("Failed to update favorite"), local_error->message); } else { button->is_favorited = !button->is_favorited; g_object_set (button->entry, "favorites-count", button->is_favorited ? current_count + 1 : current_count - 1, NULL); update_icon (button); update_count (button); gtk_stack_set_visible_child_name (button->stack, "content"); } return NULL; err: gtk_stack_set_visible_child_name (button->stack, "content"); return NULL; } static void on_login_button_clicked (GtkButton *button, GtkPopover *popover) { gtk_popover_popdown (popover); } static void show_login_popover (BzFavoriteButton *self) { GtkWidget *popover; GtkWidget *box; GtkWidget *label; GtkWidget *button; popover = gtk_popover_new (); gtk_widget_set_parent (popover, GTK_WIDGET (self)); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_widget_set_margin_top (box, 6); gtk_widget_set_margin_bottom (box, 6); gtk_widget_set_margin_start (box, 6); gtk_widget_set_margin_end (box, 6); label = gtk_label_new (_ ("Log in with Flathub to manage favorites")); gtk_label_set_wrap (GTK_LABEL (label), TRUE); gtk_label_set_max_width_chars (GTK_LABEL (label), 17); gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); gtk_box_append (GTK_BOX (box), label); button = gtk_button_new_with_label (_ ("Log In")); gtk_widget_add_css_class (button, "suggested-action"); gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "app.flathub-login"); g_signal_connect (button, "clicked", G_CALLBACK (on_login_button_clicked), popover); gtk_box_append (GTK_BOX (box), button); gtk_popover_set_child (GTK_POPOVER (popover), box); gtk_popover_popup (GTK_POPOVER (popover)); } static void button_clicked_cb (BzFavoriteButton *self, GtkButton *button) { BzAuthState *auth_state = NULL; if (self->state == NULL) return; auth_state = bz_state_info_get_auth_state (self->state); if (!bz_auth_state_is_authenticated (auth_state)) { show_login_popover (self); return; } gtk_stack_set_visible_child_name (self->stack, "spinner"); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) toggle_favorite_fiber, g_object_ref (self), g_object_unref)); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorite-button.h��������������������������������������������������0000664�0000000�0000000�00000002650�15240005042�0022042�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-favorite-button.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include "bz-state-info.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_FAVORITE_BUTTON (bz_favorite_button_get_type ()) G_DECLARE_FINAL_TYPE (BzFavoriteButton, bz_favorite_button, BZ, FAVORITE_BUTTON, GtkButton) GtkWidget * bz_favorite_button_new (void); void bz_favorite_button_set_entry (BzFavoriteButton *self, BzEntry *entry); BzEntry * bz_favorite_button_get_entry (BzFavoriteButton *self); void bz_favorite_button_set_state (BzFavoriteButton *self, BzStateInfo *state); BzStateInfo * bz_favorite_button_get_state (BzFavoriteButton *self); G_END_DECLS ����������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorites-page.blp�������������������������������������������������0000664�0000000�0000000�00000005252�15240005042�0022155�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzFavoritesPage: Adw.NavigationPage { title: _("Favorites"); Adw.ToolbarView { [top] Adw.HeaderBar { [end] Button install_all_button { styles [ "flat", ] has-tooltip: true; tooltip-text: _("Install All"); icon-name: "list-add-symbolic"; sensitive: bind $invert_boolean($is_empty(template.favorites) as <bool>) as <bool>; clicked => $install_all_cb() swapped; } } content: Adw.BreakpointBin { width-request: 360; height-request: 100; child: Adw.ViewStack stack { enable-transitions: true; transition-duration: 400; Adw.ViewStackPage { name: "loading"; child: Adw.Spinner { halign: fill; valign: center; width-request: 64; height-request: 64; margin-bottom: 18; }; } Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: "starred-symbolic"; title: _("No Favorites"); description: _("Applications you mark as favorite will appear here"); }; } Adw.ViewStackPage { name: "content"; child: ScrolledWindow { hscrollbar-policy: never; child: Adw.ClampScrollable { maximum-size: 650; child: ListView list_view { styles [ "navigation-sidebar", "installed-list-view", "no-vertical-margin" ] margin-start: 25; margin-end: 25; overflow: visible; model: NoSelection { model: bind template.model; }; factory: BuilderListItemFactory { template ListItem { activatable: true; selectable: false; focusable: true; child: Revealer { reveal-child: true; overflow: visible; child: $BzFavoritesTile { group: bind template.item as <$BzEntryGroup>; activated => $tile_activated_cb(); unfavorited => $unfavorite_cb(); }; }; } }; }; }; }; } }; Adw.Breakpoint { condition ("max-width: 700px") setters { list_view.margin-start: 8; list_view.margin-end: 8; } } }; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorites-page.c���������������������������������������������������0000664�0000000�0000000�00000031043�15240005042�0021617�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-favorites-page.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include <json-glib/json-glib.h> #include "bz-application-map-factory.h" #include "env.h" #include "error.h" #include "bz-favorites-page.h" #include "bz-favorites-tile.h" #include "global-net.h" #include "io.h" #include "util.h" struct _BzFavoritesPage { AdwNavigationPage parent_instance; BzStateInfo *state; GListModel *model; GListModel *favorites; gboolean show_sidebar; AdwViewStack *stack; }; G_DEFINE_FINAL_TYPE (BzFavoritesPage, bz_favorites_page, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_STATE, PROP_MODEL, PROP_FAVORITES, PROP_SHOW_SIDEBAR, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * fetch_favorites_fiber (GWeakRef *wr); static void favorites_changed (BzFavoritesPage *self, guint position, guint removed, guint added, GListModel *model); static void set_page (BzFavoritesPage *self); static void bz_favorites_page_dispose (GObject *object) { BzFavoritesPage *self = BZ_FAVORITES_PAGE (object); if (self->favorites != NULL) g_signal_handlers_disconnect_by_func (self->favorites, favorites_changed, self); g_clear_object (&self->favorites); g_clear_object (&self->model); g_clear_object (&self->state); G_OBJECT_CLASS (bz_favorites_page_parent_class)->dispose (object); } static void bz_favorites_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFavoritesPage *self = BZ_FAVORITES_PAGE (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, self->state); break; case PROP_MODEL: g_value_set_object (value, self->model); break; case PROP_FAVORITES: g_value_set_object (value, self->favorites); break; case PROP_SHOW_SIDEBAR: g_value_set_boolean (value, self->show_sidebar); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_favorites_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFavoritesPage *self = BZ_FAVORITES_PAGE (object); switch (prop_id) { case PROP_STATE: self->state = g_value_dup_object (value); break; case PROP_SHOW_SIDEBAR: self->show_sidebar = g_value_get_boolean (value); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SHOW_SIDEBAR]); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_favorites_page_constructed (GObject *object) { BzFavoritesPage *self = BZ_FAVORITES_PAGE (object); g_autoptr (DexFuture) future = NULL; G_OBJECT_CLASS (bz_favorites_page_parent_class)->constructed (object); future = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) fetch_favorites_fiber, bz_track_weak (self), bz_weak_release); dex_future_disown (g_steal_pointer (&future)); } static gboolean is_zero (gpointer object, int value) { return value == 0; } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_empty (gpointer object, GListModel *model) { if (model == NULL) return TRUE; return g_list_model_get_n_items (model) == 0; } static gboolean is_favorited (GListModel *favorites, BzEntryGroup *group) { if (favorites == NULL || group == NULL) return FALSE; return g_list_store_find (G_LIST_STORE (favorites), group, NULL); } static void tile_activated_cb (BzFavoritesTile *tile) { BzEntryGroup *group = NULL; g_assert (BZ_IS_FAVORITES_TILE (tile)); group = bz_favorites_tile_get_group (tile); if (group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (tile), "window.show-group", "s", bz_entry_group_get_id (group)); } static void unfavorite_cb (BzFavoritesTile *tile, BzEntryGroup *group, gpointer user_data) { BzFavoritesPage *self = NULL; guint position = 0; g_assert (BZ_IS_FAVORITES_TILE (tile)); g_assert (BZ_IS_ENTRY_GROUP (group)); self = BZ_FAVORITES_PAGE (gtk_widget_get_ancestor (GTK_WIDGET (tile), BZ_TYPE_FAVORITES_PAGE)); if (self == NULL) return; if (self->favorites == NULL) return; if (g_list_store_find (G_LIST_STORE (self->favorites), group, &position)) { g_list_store_remove (G_LIST_STORE (self->favorites), position); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FAVORITES]); } } static void install_all_cb (BzFavoritesPage *self, GtkButton *button) { GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE ("as")); guint n_items = 0; g_return_if_fail (BZ_IS_FAVORITES_PAGE (self)); if (self->model == NULL || self->favorites == NULL) return; n_items = g_list_model_get_n_items (self->favorites); for (guint i = 0; i < n_items; i++) { g_autoptr (BzEntryGroup) group = NULL; group = g_list_model_get_item (self->favorites, i); if (!is_favorited (self->favorites, group)) continue; g_variant_builder_add (&builder, "s", bz_entry_group_get_id (group)); } gtk_widget_activate_action (GTK_WIDGET (self), "window.bulk-install", "as", &builder); } static void bz_favorites_page_class_init (BzFavoritesPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_favorites_page_dispose; object_class->constructed = bz_favorites_page_constructed; object_class->get_property = bz_favorites_page_get_property; object_class->set_property = bz_favorites_page_set_property; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_FAVORITES] = g_param_spec_object ( "favorites", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_SHOW_SIDEBAR] = g_param_spec_boolean ( "show-sidebar", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_FAVORITES_TILE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-favorites-page.ui"); gtk_widget_class_bind_template_child (widget_class, BzFavoritesPage, stack); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_empty); gtk_widget_class_bind_template_callback (widget_class, tile_activated_cb); gtk_widget_class_bind_template_callback (widget_class, unfavorite_cb); gtk_widget_class_bind_template_callback (widget_class, install_all_cb); } static void bz_favorites_page_init (BzFavoritesPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_favorites_page_new (BzStateInfo *state) { return g_object_new (BZ_TYPE_FAVORITES_PAGE, "state", state, NULL); } static void favorites_changed (BzFavoritesPage *self, guint position, guint removed, guint added, GListModel *model) { set_page (self); } static void set_page (BzFavoritesPage *self) { if (self->favorites != NULL && g_list_model_get_n_items (self->favorites) > 0) adw_view_stack_set_visible_child_name (self->stack, "content"); else adw_view_stack_set_visible_child_name (self->stack, "empty"); } static int compare_entry_groups_by_title (BzEntryGroup *group_a, BzEntryGroup *group_b) { const char *title_a = bz_entry_group_get_title (group_a); const char *title_b = bz_entry_group_get_title (group_b); return g_utf8_collate (title_a, title_b); } static DexFuture * fetch_favorites_fiber (GWeakRef *wr) { g_autoptr (BzFavoritesPage) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GtkStringList) id_list = NULL; g_autoptr (GListModel) model = NULL; g_autoptr (GListStore) sorted_store = NULL; g_autoptr (GListStore) favorites_store = NULL; g_autoptr (JsonNode) node = NULL; BzApplicationMapFactory *factory = NULL; BzAuthState *auth_state = NULL; const char *token = NULL; JsonArray *array = NULL; guint n_favorites = 0; guint n_items = 0; self = g_weak_ref_get (wr); if (self == NULL) return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_CANCELLED, "Page destroyed"); id_list = gtk_string_list_new (NULL); auth_state = bz_state_info_get_auth_state (self->state); token = bz_auth_state_get_token (auth_state); if (token != NULL && bz_auth_state_is_authenticated (auth_state)) { node = dex_await_boxed ( bz_query_flathub_v2_json_authenticated ("/favorites", token), &local_error); if (node == NULL) { g_warning ("Failed to fetch favorites from Flathub: %s", local_error->message); goto done; } if (!JSON_NODE_HOLDS_ARRAY (node)) { g_warning ("Unexpected response format from Flathub favorites API"); goto done; } array = json_node_get_array (node); n_favorites = json_array_get_length (array); for (guint i = 0; i < n_favorites; i++) { JsonObject *favorite_obj = NULL; const char *app_id = NULL; favorite_obj = json_array_get_object_element (array, i); app_id = json_object_get_string_member (favorite_obj, "app_id"); if (app_id != NULL) gtk_string_list_append (id_list, app_id); } } done: factory = bz_state_info_get_application_factory (self->state); model = bz_application_map_factory_generate (factory, G_LIST_MODEL (id_list)); sorted_store = g_list_store_new (BZ_TYPE_ENTRY_GROUP); favorites_store = g_list_store_new (BZ_TYPE_ENTRY_GROUP); n_items = g_list_model_get_n_items (model); for (guint i = 0; i < n_items; i++) { g_autoptr (BzEntryGroup) group = g_list_model_get_item (model, i); g_list_store_append (sorted_store, group); g_list_store_append (favorites_store, group); } g_list_store_sort (sorted_store, (GCompareDataFunc) compare_entry_groups_by_title, NULL); g_clear_object (&self->model); self->model = G_LIST_MODEL (g_steal_pointer (&sorted_store)); if (self->favorites != NULL) g_signal_handlers_disconnect_by_func (self->favorites, favorites_changed, self); g_clear_object (&self->favorites); self->favorites = G_LIST_MODEL (g_steal_pointer (&favorites_store)); g_signal_connect_swapped (self->favorites, "items-changed", G_CALLBACK (favorites_changed), self); set_page (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FAVORITES]); return dex_future_new_true (); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorites-page.h���������������������������������������������������0000664�0000000�0000000�00000002100�15240005042�0021614�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-favorites-page.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_FAVORITES_PAGE (bz_favorites_page_get_type ()) G_DECLARE_FINAL_TYPE (BzFavoritesPage, bz_favorites_page, BZ, FAVORITES_PAGE, AdwNavigationPage) GtkWidget *bz_favorites_page_new (BzStateInfo *state); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorites-tile.blp�������������������������������������������������0000664�0000000�0000000�00000007200�15240005042�0022171�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzFavoritesTile: $BzListTile { accessibility { labelled-by: title_label; described-by: description_label; } child: Box { orientation: horizontal; spacing: 10; $BzTransactIcon { margin-start: 10; margin-top: 10; margin-bottom: 10; width-request: 48; height-request: 48; info: $BzTransactIconInfo { group: bind template.group as <$BzEntryGroup>; paintable: bind template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable; }; } Box { orientation: vertical; valign: center; spacing: 4; Label title_label { xalign: 0.0; ellipsize: end; single-line-mode: true; has-tooltip: true; tooltip-text: bind template.group as <$BzEntryGroup>.id; label: bind template.group as <$BzEntryGroup>.title; } Label description_label { halign: start; label: bind template.group as <$BzEntryGroup>.description; xalign: 0.0; ellipsize: end; single-line-mode: true; styles ["dim-label", "caption"] } } Button support_button { styles [ "circular", "flat", "suggested-action", "support" ] has-tooltip: true; tooltip-text: _("Support This Application"); width-request: 32; height-request: 32; valign: center; icon-name: "heart-filled-symbolic"; visible: bind $invert_boolean($is_null(template.group as <$BzEntryGroup>.donation-url) as <bool>) as <bool>; clicked => $support_cb() swapped; } Box { orientation: horizontal; spacing: 8; margin-end: 8; hexpand: true; halign: end; Button install_remove_button { styles [ "flat", ] width-request: 32; height-request: 32; valign: center; has-tooltip: true; visible: bind $invert_boolean($logical_and($is_zero(template.group as <$BzEntryGroup>.removable) as <bool>, $is_zero(template.group as <$BzEntryGroup>.installable) as <bool>) as <bool>) as <bool>; tooltip-text: bind $get_install_remove_tooltip(template.group as <$BzEntryGroup>.removable) as <string>; sensitive: bind $switch_bool( template.group as <$BzEntryGroup>.removable, $invert_boolean($is_zero(template.group as <$BzEntryGroup>.removable-and-available) as <bool>) as <bool>, $invert_boolean($is_zero(template.group as <$BzEntryGroup>.installable-and-available) as <bool>) as <bool>, ) as <bool>; icon-name: bind $get_install_remove_icon(template.group as <$BzEntryGroup>.removable) as <string>; clicked => $install_remove_cb() swapped; } Stack unfavorite_stack { transition-type: crossfade; StackPage { name: "button"; child: Button unfavorite_button { styles [ "flat", ] width-request: 32; height-request: 32; valign: center; has-tooltip: true; tooltip-text: _("Remove From Favorites"); icon-name: "bookmark-filled-symbolic"; clicked => $unfavorite_cb() swapped; }; } StackPage { name: "spinner"; child: Adw.Spinner { halign: center; width-request: 16; }; } } Image { pixel-size: 14; icon-name: "go-next-symbolic"; margin-end: 4; styles ["dimmed"] } } }; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorites-tile.c���������������������������������������������������0000664�0000000�0000000�00000024444�15240005042�0021647�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-favorites-tile.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-entry-group-util.h" #include "bz-entry-group.h" #include "env.h" #include "error.h" #include "bz-favorites-page.h" #include "bz-favorites-tile.h" #include "global-net.h" #include "bz-state-info.h" #include "bz-window.h" struct _BzFavoritesTile { BzListTile parent_instance; BzEntryGroup *group; GtkLabel *title_label; GtkLabel *description_label; GtkButton *install_remove_button; GtkButton *support_button; GtkButton *unfavorite_button; GtkStack *unfavorite_stack; }; G_DEFINE_FINAL_TYPE (BzFavoritesTile, bz_favorites_tile, BZ_TYPE_LIST_TILE) enum { PROP_0, PROP_GROUP, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_UNFAVORITED, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void install_remove_cb (BzFavoritesTile *self, GtkButton *button); static void support_cb (BzFavoritesTile *self, GtkButton *button); static DexFuture * unfavorite_fiber (BzFavoritesTile *tile); static void unfavorite_cb (BzFavoritesTile *self, GtkButton *button); static void bz_favorites_tile_dispose (GObject *object) { BzFavoritesTile *self = BZ_FAVORITES_TILE (object); g_clear_object (&self->group); G_OBJECT_CLASS (bz_favorites_tile_parent_class)->dispose (object); } static void bz_favorites_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFavoritesTile *self = BZ_FAVORITES_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_favorites_tile_get_group (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_favorites_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFavoritesTile *self = BZ_FAVORITES_TILE (object); switch (prop_id) { case PROP_GROUP: bz_favorites_tile_set_group (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_zero (gpointer object, int value) { return value == 0; } static char * get_install_remove_tooltip (gpointer object, int removable) { if (removable > 0) return g_strdup (C_("Install Controls", "Uninstall")); else return g_strdup (C_("Install Controls", "Install")); } static char * get_install_remove_icon (gpointer object, int removable) { if (removable > 0) return g_strdup ("user-trash-symbolic"); else return g_strdup ("document-save-symbolic"); } static gboolean switch_bool (gpointer object, gboolean condition, gboolean true_value, gboolean false_value) { return condition ? true_value : false_value; } static gboolean logical_and (gpointer object, gboolean value1, gboolean value2) { return value1 && value2; } static void bz_favorites_tile_class_init (BzFavoritesTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_favorites_tile_dispose; object_class->get_property = bz_favorites_tile_get_property; object_class->set_property = bz_favorites_tile_set_property; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_UNFAVORITED] = g_signal_new ( "unfavorited", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, BZ_TYPE_ENTRY_GROUP); g_type_ensure (BZ_TYPE_LIST_TILE); g_type_ensure (BZ_TYPE_ENTRY_GROUP); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-favorites-tile.ui"); gtk_widget_class_bind_template_child (widget_class, BzFavoritesTile, title_label); gtk_widget_class_bind_template_child (widget_class, BzFavoritesTile, description_label); gtk_widget_class_bind_template_child (widget_class, BzFavoritesTile, install_remove_button); gtk_widget_class_bind_template_child (widget_class, BzFavoritesTile, support_button); gtk_widget_class_bind_template_child (widget_class, BzFavoritesTile, unfavorite_button); gtk_widget_class_bind_template_child (widget_class, BzFavoritesTile, unfavorite_stack); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, switch_bool); gtk_widget_class_bind_template_callback (widget_class, logical_and); gtk_widget_class_bind_template_callback (widget_class, get_install_remove_tooltip); gtk_widget_class_bind_template_callback (widget_class, get_install_remove_icon); gtk_widget_class_bind_template_callback (widget_class, install_remove_cb); gtk_widget_class_bind_template_callback (widget_class, unfavorite_cb); gtk_widget_class_bind_template_callback (widget_class, support_cb); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static void bz_favorites_tile_init (BzFavoritesTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_favorites_tile_new (void) { return g_object_new (BZ_TYPE_FAVORITES_TILE, NULL); } void bz_favorites_tile_set_group (BzFavoritesTile *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_FAVORITES_TILE (self)); g_return_if_fail (group == NULL || BZ_IS_ENTRY_GROUP (group)); g_clear_object (&self->group); if (group != NULL) self->group = g_object_ref (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } BzEntryGroup * bz_favorites_tile_get_group (BzFavoritesTile *self) { g_return_val_if_fail (BZ_IS_FAVORITES_TILE (self), NULL); return self->group; } static void install_remove_cb (BzFavoritesTile *self, GtkButton *button) { int removable = 0; if (self->group == NULL) return; removable = bz_entry_group_get_removable (self->group); if (removable > 0) gtk_widget_activate_action (GTK_WIDGET (self), "window.remove-group", "(sb)", bz_entry_group_get_id (self->group), FALSE); else gtk_widget_activate_action (GTK_WIDGET (self), "window.install-group", "(sb)", bz_entry_group_get_id (self->group), TRUE); } static void support_cb (BzFavoritesTile *self, GtkButton *button) { const char *url = NULL; if (self->group == NULL) return; url = bz_entry_group_get_donation_url (self->group); if (url == NULL) return; g_app_info_launch_default_for_uri (url, NULL, NULL); } static DexFuture * unfavorite_fiber (BzFavoritesTile *tile) { g_autoptr (GError) local_error = NULL; g_autoptr (BzStateInfo) state = NULL; g_autofree char *request = NULL; BzFavoritesPage *page = NULL; BzAuthState *auth_state = NULL; const char *token = NULL; const char *app_id = NULL; GtkWidget *revealer = NULL; GtkWidget *row = NULL; revealer = gtk_widget_get_parent (GTK_WIDGET (tile)); row = gtk_widget_get_parent (GTK_WIDGET (revealer)); page = BZ_FAVORITES_PAGE (gtk_widget_get_ancestor (GTK_WIDGET (tile), BZ_TYPE_FAVORITES_PAGE)); if (page == NULL) return NULL; g_object_get (page, "state", &state, NULL); if (state == NULL) return NULL; auth_state = bz_state_info_get_auth_state (state); token = bz_auth_state_get_token (auth_state); if (token == NULL || !bz_auth_state_is_authenticated (auth_state)) return NULL; app_id = bz_entry_group_get_id (tile->group); request = g_strdup_printf ("/favorites/%s/remove", app_id); dex_await ( bz_query_flathub_v2_json_authenticated_delete (request, token), &local_error); if (local_error != NULL) { GtkWidget *window = NULL; gtk_stack_set_visible_child_name (tile->unfavorite_stack, "button"); window = gtk_widget_get_ancestor (GTK_WIDGET (tile), GTK_TYPE_WINDOW); if (window != NULL) bz_show_error_for_widget (window, _("Failed to remove favorite"), local_error->message); } else { gtk_widget_set_overflow (revealer, GTK_OVERFLOW_HIDDEN); gtk_revealer_set_reveal_child (GTK_REVEALER (revealer), FALSE); gtk_widget_add_css_class (row, "hidden"); g_signal_emit (tile, signals[SIGNAL_UNFAVORITED], 0, tile->group); } return NULL; } static void unfavorite_cb (BzFavoritesTile *self, GtkButton *button) { gtk_stack_set_visible_child_name (self->unfavorite_stack, "spinner"); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) unfavorite_fiber, g_object_ref (self), g_object_unref)); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-favorites-tile.h���������������������������������������������������0000664�0000000�0000000�00000002373�15240005042�0021651�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-favorites-tile.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include "bz-list-tile.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_FAVORITES_TILE (bz_favorites_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzFavoritesTile, bz_favorites_tile, BZ, FAVORITES_TILE, BzListTile) GtkWidget * bz_favorites_tile_new (void); void bz_favorites_tile_set_group (BzFavoritesTile *self, BzEntryGroup *group); BzEntryGroup * bz_favorites_tile_get_group (BzFavoritesTile *self); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-carousel-view.c�������������������������������������������0000664�0000000�0000000�00000012632�15240005042�0023270�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-featured-carousel-view.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-featured-carousel-view.h" #include "bz-application.h" #include "bz-curated-appids-info.h" #include "bz-featured-carousel.h" struct _BzFeaturedCarouselView { AdwBin parent_instance; BzCuratedFeaturedCarousel *carousel; }; G_DEFINE_FINAL_TYPE (BzFeaturedCarouselView, bz_featured_carousel_view, ADW_TYPE_BIN) enum { PROP_0, PROP_CAROUSEL, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_featured_carousel_view_dispose (GObject *object) { BzFeaturedCarouselView *self = BZ_FEATURED_CAROUSEL_VIEW (object); g_clear_object (&self->carousel); G_OBJECT_CLASS (bz_featured_carousel_view_parent_class)->dispose (object); } static void bz_featured_carousel_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFeaturedCarouselView *self = BZ_FEATURED_CAROUSEL_VIEW (object); switch (prop_id) { case PROP_CAROUSEL: g_value_set_object (value, bz_featured_carousel_view_get_carousel (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_featured_carousel_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFeaturedCarouselView *self = BZ_FEATURED_CAROUSEL_VIEW (object); switch (prop_id) { case PROP_CAROUSEL: bz_featured_carousel_view_set_carousel (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_featured_carousel_view_class_init (BzFeaturedCarouselViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_featured_carousel_view_dispose; object_class->get_property = bz_featured_carousel_view_get_property; object_class->set_property = bz_featured_carousel_view_set_property; props[PROP_CAROUSEL] = g_param_spec_object ( "carousel", NULL, NULL, BZ_TYPE_CURATED_FEATURED_CAROUSEL, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_FEATURED_CAROUSEL); } static void bz_featured_carousel_view_init (BzFeaturedCarouselView *self) { } GtkWidget * bz_featured_carousel_view_new (BzCuratedFeaturedCarousel *carousel) { return g_object_new ( BZ_TYPE_FEATURED_CAROUSEL_VIEW, "carousel", carousel, NULL); } void bz_featured_carousel_view_set_carousel (BzFeaturedCarouselView *self, BzCuratedFeaturedCarousel *carousel) { BzCuratedAppidsInfo *appids = NULL; GListModel *list = NULL; g_return_if_fail (BZ_IS_FEATURED_CAROUSEL_VIEW (self)); g_return_if_fail (carousel == NULL || BZ_IS_CURATED_FEATURED_CAROUSEL (carousel)); g_clear_object (&self->carousel); adw_bin_set_child (ADW_BIN (self), NULL); if (carousel != NULL) { self->carousel = g_object_ref (carousel); appids = bz_curated_featured_carousel_get_appids (carousel); if (appids != NULL) list = bz_curated_appids_info_get_list (appids); if (list != NULL) { BzStateInfo *info = NULL; BzApplicationMapFactory *factory = NULL; g_autoptr (GListModel) groups = NULL; BzFeaturedCarousel *carousel_w = NULL; gboolean disable_auto_rotate = FALSE; info = bz_state_info_get_default (); factory = bz_state_info_get_application_factory (info); groups = bz_application_map_factory_generate (factory, list); g_object_get (carousel, "disable-auto-rotate", &disable_auto_rotate, NULL); carousel_w = bz_featured_carousel_new (); bz_featured_carousel_set_model (carousel_w, groups); g_object_set (carousel_w, "auto-rotate", !disable_auto_rotate, NULL); gtk_widget_set_margin_top (GTK_WIDGET (carousel_w), 20); gtk_widget_set_margin_bottom (GTK_WIDGET (carousel_w), 12); adw_bin_set_child (ADW_BIN (self), GTK_WIDGET (carousel_w)); } } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CAROUSEL]); } BzCuratedFeaturedCarousel * bz_featured_carousel_view_get_carousel (BzFeaturedCarouselView *self) { g_return_val_if_fail (BZ_IS_FEATURED_CAROUSEL_VIEW (self), NULL); return self->carousel; } ������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-carousel-view.h�������������������������������������������0000664�0000000�0000000�00000002576�15240005042�0023303�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-featured-carousel-view.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-curated-featured-carousel.h" G_BEGIN_DECLS #define BZ_TYPE_FEATURED_CAROUSEL_VIEW (bz_featured_carousel_view_get_type ()) G_DECLARE_FINAL_TYPE (BzFeaturedCarouselView, bz_featured_carousel_view, BZ, FEATURED_CAROUSEL_VIEW, AdwBin) GtkWidget * bz_featured_carousel_view_new (BzCuratedFeaturedCarousel *carousel); void bz_featured_carousel_view_set_carousel (BzFeaturedCarouselView *self, BzCuratedFeaturedCarousel *carousel); BzCuratedFeaturedCarousel * bz_featured_carousel_view_get_carousel (BzFeaturedCarouselView *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-carousel.blp����������������������������������������������0000664�0000000�0000000�00000003431�15240005042�0022650�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzFeaturedCarousel: Box { orientation: vertical; spacing: 12; EventControllerFocus { enter => $on_focus_enter_cb(template); leave => $on_focus_leave_cb(template); } Overlay { [overlay] Button previous_button { halign: start; valign: center; width-request: 48; height-request: 48; margin-start: 12; icon-name: "go-previous-symbolic"; visible: bind $is_gt(selection.n-items, 1); clicked => $previous_button_clicked_cb(); styles [ "circular", "flat", "image-button", ] accessibility { label: _("Previous"); } } [overlay] Button next_button { halign: end; valign: center; width-request: 48; height-request: 48; margin-end: 12; icon-name: "go-next-symbolic"; visible: bind $is_gt(selection.n-items, 1); clicked => $next_button_clicked_cb(); styles [ "circular", "flat", "image-button", ] accessibility { label: _("Next"); } } child: $BgeCarousel carousel { styles [ "card", "featured-carousel" ] notify::has-focus => $carousel_focus_cb(); allow-mouse-drag: true; allow-overshoot: false; allow-scroll-wheel: true; allow-raise: false; create-widget => $on_create_widget(template); remove-widget => $on_remove_widget(template); focusable: true; model: SingleSelection selection { autoselect: true; model: bind template.model; notify::selected => $on_notify_selected(template); // notify::n-items => $on_notify_n_items(template); }; }; } EventControllerKey { key-pressed => $key_pressed_cb(); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-carousel.c������������������������������������������������0000664�0000000�0000000�00000033465�15240005042�0022327�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-featured-carousel.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <bge.h> #include "bz-entry-group.h" #include "bz-featured-carousel.h" #include "bz-featured-tile.h" #include "template-callbacks.h" #define FEATURED_ROTATE_TIME 5 #define MANUAL_ROTATE_RECOVER_TIME 7.5 struct _BzFeaturedCarousel { GtkBox parent_instance; GListModel *model; gboolean auto_rotate; guint rotation_timer_source; GTimer *time_since_manual_rotate; gboolean has_focus; BgeCarousel *carousel; GtkSingleSelection *selection; GtkButton *next_button; GtkButton *previous_button; }; G_DEFINE_FINAL_TYPE (BzFeaturedCarousel, bz_featured_carousel, GTK_TYPE_BOX) enum { PROP_0, PROP_MODEL, PROP_AUTO_ROTATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { NULL, }; static void update_buttons_for_tile (BzFeaturedCarousel *self) { GtkWidget *child = NULL; const char *class_name = NULL; guint index = 0; index = gtk_single_selection_get_selected (self->selection); child = bge_carousel_get_nth_page (self->carousel, index); if (child == NULL) return; class_name = gtk_widget_has_css_class (child, "flathub-lotion") ? "flathub-lotion" : "flathub-gunmetal"; gtk_widget_remove_css_class (GTK_WIDGET (self->next_button), "flathub-lotion"); gtk_widget_remove_css_class (GTK_WIDGET (self->next_button), "flathub-gunmetal"); gtk_widget_remove_css_class (GTK_WIDGET (self->previous_button), "flathub-lotion"); gtk_widget_remove_css_class (GTK_WIDGET (self->previous_button), "flathub-gunmetal"); gtk_widget_add_css_class (GTK_WIDGET (self->next_button), class_name); gtk_widget_add_css_class (GTK_WIDGET (self->previous_button), class_name); } static void on_style_changed (AdwStyleManager *style_manager, GParamSpec *pspec, BzFeaturedCarousel *self) { g_idle_add_once ((GSourceOnceFunc) update_buttons_for_tile, self); } static void announce_selected_entry (BzFeaturedCarousel *self) { guint index = 0; g_autoptr (BzEntryGroup) group = NULL; const char *title = NULL; const char *description = NULL; g_autofree char *message = NULL; index = gtk_single_selection_get_selected (self->selection); group = g_list_model_get_item (G_LIST_MODEL (self->selection), index); if (group == NULL) return; title = bz_entry_group_get_title (group); description = bz_entry_group_get_description (group); message = g_strdup_printf ("%s. %s", title != NULL ? title : "", description != NULL ? description : ""); gtk_accessible_announce (GTK_ACCESSIBLE (self), message, GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_MEDIUM); } static void carousel_focus_cb (BgeCarousel *self, GParamSpec *pspec, BzFeaturedCarousel *carousel) { if (gtk_widget_has_focus (GTK_WIDGET (self))) announce_selected_entry (carousel); } static void on_focus_enter_cb (BzFeaturedCarousel *self) { self->has_focus = TRUE; } static void on_focus_leave_cb (BzFeaturedCarousel *self) { self->has_focus = FALSE; } static void on_notify_selected (BzFeaturedCarousel *self, GParamSpec *pspec, GtkSingleSelection *selection) { g_timer_start (self->time_since_manual_rotate); update_buttons_for_tile (self); } static void show_relative_page (BzFeaturedCarousel *self, gint delta, gboolean use_custom_spring) { guint n_pages; guint current_page; guint new_page; GtkSettings *settings = NULL; gboolean reduced_motion = FALSE; settings = gtk_widget_get_settings (GTK_WIDGET (self)); g_object_get (settings, "gtk-interface-reduced-motion", &reduced_motion, NULL); if (reduced_motion && use_custom_spring) return; n_pages = g_list_model_get_n_items (G_LIST_MODEL (self->selection)); if (n_pages == 0) return; current_page = gtk_single_selection_get_selected (self->selection); new_page = (n_pages + current_page + delta) % n_pages; g_signal_handlers_block_by_func (self->selection, on_notify_selected, self); gtk_single_selection_set_selected (self->selection, new_page); g_signal_handlers_unblock_by_func (self->selection, on_notify_selected, self); if (self->has_focus) announce_selected_entry (self); update_buttons_for_tile (self); } static gboolean rotate_cb (gpointer user_data) { BzFeaturedCarousel *self = BZ_FEATURED_CAROUSEL (user_data); double elapsed = 0.0; if (!self->auto_rotate) return G_SOURCE_CONTINUE; if (self->has_focus) return G_SOURCE_CONTINUE; elapsed = g_timer_elapsed (self->time_since_manual_rotate, NULL); if (elapsed > MANUAL_ROTATE_RECOVER_TIME) show_relative_page (self, +1, TRUE); return G_SOURCE_CONTINUE; } static void next_button_clicked_cb (GtkButton *button, gpointer user_data) { BzFeaturedCarousel *self; self = BZ_FEATURED_CAROUSEL (user_data); show_relative_page (self, +1, FALSE); } static void previous_button_clicked_cb (GtkButton *button, gpointer user_data) { BzFeaturedCarousel *self; self = BZ_FEATURED_CAROUSEL (user_data); show_relative_page (self, -1, FALSE); } static void tile_clicked_cb (BzFeaturedTile *tile, gpointer user_data) { BzEntryGroup *group = NULL; group = bz_featured_tile_get_group (tile); gtk_widget_activate_action (GTK_WIDGET (user_data), "window.show-group", "s", bz_entry_group_get_id (group)); } static gboolean key_pressed_cb (GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, BzFeaturedCarousel *self) { if (gtk_widget_is_visible (GTK_WIDGET (self->previous_button)) && gtk_widget_is_sensitive (GTK_WIDGET (self->previous_button)) && ((gtk_widget_get_direction (GTK_WIDGET (self->previous_button)) == GTK_TEXT_DIR_LTR && keyval == GDK_KEY_Left) || (gtk_widget_get_direction (GTK_WIDGET (self->previous_button)) == GTK_TEXT_DIR_RTL && keyval == GDK_KEY_Right))) { gtk_widget_activate (GTK_WIDGET (self->previous_button)); return GDK_EVENT_STOP; } if (gtk_widget_is_visible (GTK_WIDGET (self->next_button)) && gtk_widget_is_sensitive (GTK_WIDGET (self->next_button)) && ((gtk_widget_get_direction (GTK_WIDGET (self->next_button)) == GTK_TEXT_DIR_LTR && keyval == GDK_KEY_Right) || (gtk_widget_get_direction (GTK_WIDGET (self->next_button)) == GTK_TEXT_DIR_RTL && keyval == GDK_KEY_Left))) { gtk_widget_activate (GTK_WIDGET (self->next_button)); return GDK_EVENT_STOP; } switch (keyval) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: case GDK_KEY_ISO_Enter: case GDK_KEY_space: case GDK_KEY_KP_Space: { GtkWidget *tile = NULL; tile = bge_carousel_get_nth_page (self->carousel, gtk_single_selection_get_selected (self->selection)); if (tile != NULL) g_signal_emit_by_name (tile, "clicked"); return GDK_EVENT_STOP; } default: break; } return GDK_EVENT_PROPAGATE; } static void bz_featured_carousel_dispose (GObject *object) { BzFeaturedCarousel *self = BZ_FEATURED_CAROUSEL (object); g_signal_handlers_disconnect_by_func (adw_style_manager_get_default (), on_style_changed, self); g_clear_handle_id (&self->rotation_timer_source, g_source_remove); g_clear_pointer (&self->time_since_manual_rotate, g_timer_destroy); g_clear_object (&self->model); G_OBJECT_CLASS (bz_featured_carousel_parent_class)->dispose (object); } static void bz_featured_carousel_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFeaturedCarousel *self; self = BZ_FEATURED_CAROUSEL (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, bz_featured_carousel_get_model (self)); break; case PROP_AUTO_ROTATE: g_value_set_boolean (value, self->auto_rotate); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void bz_featured_carousel_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFeaturedCarousel *self; self = BZ_FEATURED_CAROUSEL (object); switch (prop_id) { case PROP_MODEL: bz_featured_carousel_set_model (self, g_value_get_object (value)); break; case PROP_AUTO_ROTATE: self->auto_rotate = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static GtkWidget * on_create_widget (BzFeaturedCarousel *self, BzEntryGroup *group, BgeCarousel *carousel) { BzFeaturedTile *tile = NULL; tile = bz_featured_tile_new (group); gtk_widget_set_hexpand (GTK_WIDGET (tile), TRUE); gtk_widget_set_vexpand (GTK_WIDGET (tile), TRUE); gtk_widget_set_can_focus (GTK_WIDGET (tile), FALSE); g_signal_connect (tile, "clicked", G_CALLBACK (tile_clicked_cb), self); return GTK_WIDGET (tile); } static void on_remove_widget (BzFeaturedCarousel *self, BzFeaturedTile *tile, BzEntryGroup *group, BgeCarousel *carousel) { } static void bz_featured_carousel_class_init (BzFeaturedCarouselClass *klass) { GObjectClass *object_class; GtkWidgetClass *widget_class; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->get_property = bz_featured_carousel_get_property; object_class->set_property = bz_featured_carousel_set_property; object_class->dispose = bz_featured_carousel_dispose; props[PROP_MODEL] = g_param_spec_object ("model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); props[PROP_AUTO_ROTATE] = g_param_spec_boolean ("auto-rotate", NULL, NULL, TRUE, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-featured-carousel.ui"); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzFeaturedCarousel, carousel); gtk_widget_class_bind_template_child (widget_class, BzFeaturedCarousel, selection); gtk_widget_class_bind_template_child (widget_class, BzFeaturedCarousel, next_button); gtk_widget_class_bind_template_child (widget_class, BzFeaturedCarousel, previous_button); gtk_widget_class_bind_template_callback (widget_class, on_create_widget); gtk_widget_class_bind_template_callback (widget_class, on_remove_widget); gtk_widget_class_bind_template_callback (widget_class, on_notify_selected); gtk_widget_class_bind_template_callback (widget_class, next_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, previous_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, carousel_focus_cb); gtk_widget_class_bind_template_callback (widget_class, on_focus_enter_cb); gtk_widget_class_bind_template_callback (widget_class, on_focus_leave_cb); gtk_widget_class_bind_template_callback (widget_class, key_pressed_cb); } static void bz_featured_carousel_init (BzFeaturedCarousel *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->auto_rotate = TRUE; self->rotation_timer_source = g_timeout_add_seconds ( FEATURED_ROTATE_TIME, rotate_cb, self); self->time_since_manual_rotate = g_timer_new (); g_signal_connect (adw_style_manager_get_default (), "notify::dark", G_CALLBACK (on_style_changed), self); } BzFeaturedCarousel * bz_featured_carousel_new (void) { return g_object_new (BZ_TYPE_FEATURED_CAROUSEL, NULL); } GListModel * bz_featured_carousel_get_model (BzFeaturedCarousel *self) { g_return_val_if_fail (BZ_IS_FEATURED_CAROUSEL (self), NULL); return self->model; } void bz_featured_carousel_set_model (BzFeaturedCarousel *self, GListModel *model) { g_return_if_fail (BZ_IS_FEATURED_CAROUSEL (self)); g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model)); if (model != NULL && model == self->model) return; g_clear_object (&self->model); if (model != NULL) self->model = g_object_ref (model); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-carousel.h������������������������������������������������0000664�0000000�0000000�00000002343�15240005042�0022323�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-featured-carousel.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_FEATURED_CAROUSEL (bz_featured_carousel_get_type ()) G_DECLARE_FINAL_TYPE (BzFeaturedCarousel, bz_featured_carousel, BZ, FEATURED_CAROUSEL, GtkBox) BzFeaturedCarousel *bz_featured_carousel_new (void); GListModel *bz_featured_carousel_get_model (BzFeaturedCarousel *self); void bz_featured_carousel_set_model (BzFeaturedCarousel *self, GListModel *model); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-tile.blp��������������������������������������������������0000664�0000000�0000000�00000003554�15240005042�0021776�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzFeaturedTile: Button { styles [ "featured-tile", ] Overlay { [overlay] Image { halign: end; valign: start; icon-name: "app-installed-symbolic"; icon-size: normal; visible: bind template.group as <$BzEntryGroup>.removable; margin-top: 12; margin-end: 12; } Box content_box { halign: center; orientation: horizontal; margin-start: 10; margin-end: 10; Box { orientation: vertical; valign: center; margin-top: 50; margin-bottom: 50; Image image { paintable: bind template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable; margin-bottom: 12; pixel-size: 128; styles [ "icon-dropshadow", ] } Label title { xalign: 0.5; halign: center; ellipsize: end; label: bind template.group as <$BzEntryGroup>.title; styles [ "title-1", ] } Adw.Clamp { maximum-size: 350; tightening-threshold: 350; Box { orientation: vertical; Label description { ellipsize: end; xalign: 0.5; lines: 1; justify: center; label: bind template.group as <$BzEntryGroup>.description; wrap: true; wrap-mode: word_char; styles [ "caption", ] } } } } $BzScreenshot screenshot { visible: bind $invert_boolean(template.narrow) as <bool>; paintable: bind template.first-screenshot; rounded-corners: true; top-half: true; valign: end; margin-top: 20; } } } } ����������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-tile.c����������������������������������������������������0000664�0000000�0000000�00000035213�15240005042�0021440�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-featured-tile.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-featured-tile.h" #include "bz-entry.h" #include "bz-group-tile-css-watcher.h" #include "bz-screenshot.h" #include "util.h" #define BZ_TYPE_FEATURED_TILE_LAYOUT (bz_featured_tile_layout_get_type ()) G_DECLARE_FINAL_TYPE (BzFeaturedTileLayout, bz_featured_tile_layout, BZ, FEATURED_TILE_LAYOUT, GtkLayoutManager) struct _BzFeaturedTileLayout { GtkLayoutManager parent_instance; gboolean narrow_mode; GtkWidget *content_box; int last_width; }; G_DEFINE_FINAL_TYPE (BzFeaturedTileLayout, bz_featured_tile_layout, GTK_TYPE_LAYOUT_MANAGER) enum { LAYOUT_SIGNAL_NARROW_MODE_CHANGED, LAYOUT_SIGNAL_LAST }; static guint layout_signals[LAYOUT_SIGNAL_LAST] = { 0 }; static void bz_featured_tile_layout_measure (GtkLayoutManager *layout_manager, GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { GtkWidget *child; *minimum = 0; *natural = 0; *minimum_baseline = -1; *natural_baseline = -1; for (child = gtk_widget_get_first_child (widget); child != NULL; child = gtk_widget_get_next_sibling (child)) { int child_min; int child_nat; if (!gtk_widget_should_layout (child)) continue; gtk_widget_measure (child, orientation, for_size, &child_min, &child_nat, NULL, NULL); *minimum = MAX (*minimum, child_min); *natural = MAX (*natural, child_nat); } } static void bz_featured_tile_layout_allocate (GtkLayoutManager *layout_manager, GtkWidget *widget, gint width, gint height, gint baseline) { BzFeaturedTileLayout *self; GtkWidget *child; gboolean narrow_mode; int spacing; const int NARROW_THRESHOLD = 950; const int MIN_SPACING = 15; const int MAX_SPACING = 128; const int MAX_WIDTH = 1300; self = BZ_FEATURED_TILE_LAYOUT (layout_manager); narrow_mode = (width < NARROW_THRESHOLD); if (self->content_box != NULL && self->last_width != width) { self->last_width = width; if (narrow_mode) { spacing = 100; } else { if (width < NARROW_THRESHOLD) spacing = MIN_SPACING; else if (width >= MAX_WIDTH) spacing = MAX_SPACING; else spacing = MIN_SPACING + ((width - NARROW_THRESHOLD) * (MAX_SPACING - MIN_SPACING)) / (MAX_WIDTH - NARROW_THRESHOLD); } gtk_box_set_spacing (GTK_BOX (self->content_box), spacing); } for (child = gtk_widget_get_first_child (widget); child != NULL; child = gtk_widget_get_next_sibling (child)) { if (gtk_widget_should_layout (child)) gtk_widget_allocate (child, width, height, -1, NULL); } if (self->narrow_mode != narrow_mode) { self->narrow_mode = narrow_mode; g_signal_emit (self, layout_signals[LAYOUT_SIGNAL_NARROW_MODE_CHANGED], 0, self->narrow_mode); } } static void bz_featured_tile_layout_class_init (BzFeaturedTileLayoutClass *klass) { GtkLayoutManagerClass *layout_manager_class; layout_manager_class = GTK_LAYOUT_MANAGER_CLASS (klass); layout_manager_class->measure = bz_featured_tile_layout_measure; layout_manager_class->allocate = bz_featured_tile_layout_allocate; layout_signals[LAYOUT_SIGNAL_NARROW_MODE_CHANGED] = g_signal_new ("narrow-mode-changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); } static void bz_featured_tile_layout_init (BzFeaturedTileLayout *self) { self->last_width = -1; } struct _BzFeaturedTile { GtkButton parent_instance; BzEntryGroup *group; gboolean narrow_mode; guint refresh_id; BzGroupTileCssWatcher *css; GtkWidget *stack; GtkWidget *image; GtkWidget *title; GtkWidget *description; GtkWidget *screenshot; GtkWidget *content_box; GdkPaintable *first_screenshot; gboolean has_screenshot; DexFuture *ui_entry_resolve; }; G_DEFINE_FINAL_TYPE (BzFeaturedTile, bz_featured_tile, GTK_TYPE_BUTTON) enum { PROP_0, PROP_GROUP, PROP_FIRST_SCREENSHOT, PROP_HAS_SCREENSHOT, PROP_NARROW, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { NULL, }; static void bz_featured_tile_refresh (BzFeaturedTile *self); static void update_screenshot (BzFeaturedTile *self); static gboolean bz_featured_tile_refresh_idle_cb (GWeakRef *wr) { g_autoptr (BzFeaturedTile) self = NULL; self = g_weak_ref_get (wr); if (self == NULL) goto done; self->refresh_id = 0; bz_featured_tile_refresh (self); done: return G_SOURCE_REMOVE; } static void schedule_refresh (BzFeaturedTile *self) { if (self->refresh_id != 0) return; self->refresh_id = g_idle_add_full ( G_PRIORITY_DEFAULT, (GSourceFunc) bz_featured_tile_refresh_idle_cb, bz_track_weak (self), bz_weak_release); } static void bz_featured_tile_layout_narrow_mode_changed_cb (GtkLayoutManager *layout_manager, gboolean narrow_mode, gpointer user_data) { BzFeaturedTile *self; self = BZ_FEATURED_TILE (user_data); if (self->narrow_mode != narrow_mode) { self->narrow_mode = narrow_mode; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NARROW]); schedule_refresh (self); } } static inline void notify_properties (BzFeaturedTile *self, gboolean has_screenshot) { if (self->has_screenshot != has_screenshot) { self->has_screenshot = has_screenshot; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_SCREENSHOT]); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FIRST_SCREENSHOT]); } static DexFuture * ui_entry_resolved_finally (DexFuture *future, GWeakRef *wr) { g_autoptr (BzFeaturedTile) self = NULL; const GValue *value = NULL; gboolean has_screenshot = FALSE; bz_weak_get_or_return_reject (self, wr); value = dex_future_get_value (future, NULL); if (value != NULL) { BzEntry *ui_entry = NULL; g_autoptr (GListModel) screenshots = NULL; ui_entry = g_value_get_object (value); g_object_get (ui_entry, "screenshot-paintables", &screenshots, NULL); if (screenshots != NULL && g_list_model_get_n_items (screenshots) > 0) { self->first_screenshot = g_list_model_get_item (screenshots, 0); has_screenshot = TRUE; } } dex_clear (&self->ui_entry_resolve); notify_properties (self, has_screenshot); return NULL; } /* FIXME: duplicate code from rich-app-tile */ static void update_screenshot (BzFeaturedTile *self) { g_autoptr (BzResult) ui_entry_result = NULL; g_autoptr (GListModel) screenshots = NULL; dex_clear (&self->ui_entry_resolve); g_clear_object (&self->first_screenshot); if (self->group == NULL) { notify_properties (self, FALSE); return; } ui_entry_result = bz_entry_group_dup_ui_entry (self->group); self->ui_entry_resolve = dex_future_finally ( bz_result_dup_future (ui_entry_result), (DexFutureCallback) ui_entry_resolved_finally, bz_track_weak (self), bz_weak_release); } static void bz_featured_tile_refresh (BzFeaturedTile *self) { gtk_label_set_wrap (GTK_LABEL (self->description), self->narrow_mode); gtk_label_set_lines (GTK_LABEL (self->description), self->narrow_mode ? 2 : 1); update_screenshot (self); } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static int get_start_margin (gpointer object, gboolean narrow) { return narrow ? 20 : 50; } static void bz_featured_tile_dispose (GObject *object) { BzFeaturedTile *self; self = BZ_FEATURED_TILE (object); g_clear_handle_id (&self->refresh_id, g_source_remove); if (self->group != NULL) g_signal_handlers_disconnect_by_func (self->group, schedule_refresh, self); g_clear_object (&self->group); g_clear_object (&self->css); g_clear_object (&self->first_screenshot); G_OBJECT_CLASS (bz_featured_tile_parent_class)->dispose (object); } static void bz_featured_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFeaturedTile *self; self = BZ_FEATURED_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_featured_tile_get_group (self)); break; case PROP_FIRST_SCREENSHOT: g_value_set_object (value, self->first_screenshot); break; case PROP_HAS_SCREENSHOT: g_value_set_boolean (value, self->has_screenshot); break; case PROP_NARROW: g_value_set_boolean (value, self->narrow_mode); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void bz_featured_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFeaturedTile *self; self = BZ_FEATURED_TILE (object); switch (prop_id) { case PROP_GROUP: bz_featured_tile_set_group (self, g_value_get_object (value)); break; case PROP_FIRST_SCREENSHOT: case PROP_HAS_SCREENSHOT: case PROP_NARROW: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void bz_featured_tile_class_init (BzFeaturedTileClass *klass) { GObjectClass *object_class; GtkWidgetClass *widget_class; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_featured_tile_dispose; object_class->get_property = bz_featured_tile_get_property; object_class->set_property = bz_featured_tile_set_property; props[PROP_GROUP] = g_param_spec_object ("group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); props[PROP_FIRST_SCREENSHOT] = g_param_spec_object ("first-screenshot", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_HAS_SCREENSHOT] = g_param_spec_boolean ("has-screenshot", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_NARROW] = g_param_spec_boolean ("narrow", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_SCREENSHOT); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-featured-tile.ui"); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, get_start_margin); gtk_widget_class_bind_template_child (widget_class, BzFeaturedTile, image); gtk_widget_class_bind_template_child (widget_class, BzFeaturedTile, title); gtk_widget_class_bind_template_child (widget_class, BzFeaturedTile, description); gtk_widget_class_bind_template_child (widget_class, BzFeaturedTile, screenshot); gtk_widget_class_bind_template_child (widget_class, BzFeaturedTile, content_box); gtk_widget_class_set_css_name (widget_class, "featured-tile"); gtk_widget_class_set_layout_manager_type (widget_class, BZ_TYPE_FEATURED_TILE_LAYOUT); } static void bz_featured_tile_init (BzFeaturedTile *self) { GtkLayoutManager *layout_manager; BzFeaturedTileLayout *tile_layout; gtk_widget_init_template (GTK_WIDGET (self)); self->css = bz_group_tile_css_watcher_new (); bz_group_tile_css_watcher_set_widget (self->css, GTK_WIDGET (self)); layout_manager = gtk_widget_get_layout_manager (GTK_WIDGET (self)); g_warn_if_fail (layout_manager != NULL); tile_layout = BZ_FEATURED_TILE_LAYOUT (layout_manager); tile_layout->content_box = self->content_box; g_signal_connect_object (layout_manager, "narrow-mode-changed", G_CALLBACK (bz_featured_tile_layout_narrow_mode_changed_cb), self, 0); } BzFeaturedTile * bz_featured_tile_new (BzEntryGroup *group) { return g_object_new (BZ_TYPE_FEATURED_TILE, "group", group, NULL); } BzEntryGroup * bz_featured_tile_get_group (BzFeaturedTile *self) { g_return_val_if_fail (BZ_IS_FEATURED_TILE (self), NULL); return self->group; } void bz_featured_tile_set_group (BzFeaturedTile *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_FEATURED_TILE (self)); g_return_if_fail (group == NULL || BZ_IS_ENTRY_GROUP (group)); g_clear_handle_id (&self->refresh_id, g_source_remove); if (self->group != NULL) g_signal_handlers_disconnect_by_func (self->group, schedule_refresh, self); g_clear_object (&self->group); if (group != NULL) { self->group = g_object_ref (group); g_signal_connect_swapped (group, "notify", G_CALLBACK (schedule_refresh), self); schedule_refresh (self); } bz_group_tile_css_watcher_set_group (self->css, group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-featured-tile.h����������������������������������������������������0000664�0000000�0000000�00000002333�15240005042�0021442�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-featured-tile.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_FEATURED_TILE (bz_featured_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzFeaturedTile, bz_featured_tile, BZ, FEATURED_TILE, GtkButton) BzFeaturedTile *bz_featured_tile_new (BzEntryGroup *group); BzEntryGroup *bz_featured_tile_get_group (BzFeaturedTile *self); void bz_featured_tile_set_group (BzFeaturedTile *self, BzEntryGroup *group); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-finished-search-query.txt������������������������������������������0000664�0000000�0000000�00000000470�15240005042�0023477�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=finished_search_query parent-prefix=g parent-name=object author=AUTOGEN property=interpreted_query char G_TYPE_STRING string property=results GPtrArray G_TYPE_PTR_ARRAY boxed g_ptr_array_unref g_ptr_array_ref property=n_results guint G_TYPE_UINT uint property=elapsed double G_TYPE_DOUBLE double ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-auth-provider.txt������������������������������������������0000664�0000000�0000000�00000000251�15240005042�0023511�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=flathub_auth_provider parent-prefix=g parent-name=object author=AUTOGEN property=method char G_TYPE_STRING string property=name char G_TYPE_STRING string �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-category-section.blp���������������������������������������0000664�0000000�0000000�00000001726�15240005042�0024145�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzFlathubCategorySection : Box { orientation: vertical; spacing: 10; visible: bind $invert_boolean($is_null(template.category as <$BzFlathubCategory>) as <bool>) as <bool>; margin-bottom: 12; Label section_title { styles [ "title-1", ] visible: bind template.has-title as <bool>; xalign: 0.0; hexpand: true; margin-start: 3; margin-end: 3; margin-bottom: 5; ellipsize: end; } $BzDynamicListView section_list { styles [ "flathub-page-section", ] hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; row-spacing: bind $get_spacing(template.compact) as <int>; column-spacing: bind $get_spacing(template.compact) as <int>; } Button more_button { styles [ "pill", ] can-shrink: true; halign: center; valign: center; margin-top: 5; clicked => $on_more_button_clicked(); } }������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-category-section.c�����������������������������������������0000664�0000000�0000000�00000023434�15240005042�0023612�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-category-section.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-apps-page.h" #include "bz-entry-group.h" #include "bz-flathub-category-section.h" #include "bz-flathub-category.h" #include "bz-flathub-page.h" struct _BzFlathubCategorySection { GtkBox parent_instance; GtkLabel *section_title; GtkWidget *section_list; GtkButton *more_button; BzFlathubCategory *category; gboolean compact; gboolean has_title; guint min_items; GtkSliceListModel *slice_model; }; G_DEFINE_FINAL_TYPE (BzFlathubCategorySection, bz_flathub_category_section, GTK_TYPE_BOX) enum { PROP_0, PROP_CATEGORY, PROP_COMPACT, PROP_HAS_TITLE, PROP_MIN_ITEMS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void on_more_button_clicked (GtkButton *button, BzFlathubCategorySection *self) { GtkWidget *flathub_page = NULL; GtkWidget *nav_view = NULL; AdwNavigationPage *apps_page = NULL; if (self->category == NULL) return; flathub_page = gtk_widget_get_ancestor (GTK_WIDGET (self), BZ_TYPE_FLATHUB_PAGE); if (flathub_page == NULL) return; nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); if (nav_view == NULL) return; apps_page = bz_apps_page_new_from_category (self->category); if (apps_page == NULL) return; adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), apps_page); } static int get_spacing (gpointer object, gboolean compact) { return compact ? 9 : 11; } static void update_model (BzFlathubCategorySection *self) { GtkExpression *expression; guint max_items; if (self->category == NULL) return; max_items = self->compact ? 6 : 12; max_items = MAX (max_items, self->min_items); if (self->slice_model != NULL) { gtk_slice_list_model_set_size (self->slice_model, max_items); return; } expression = gtk_property_expression_new (BZ_TYPE_FLATHUB_CATEGORY, NULL, "applications"); self->slice_model = gtk_slice_list_model_new (NULL, 0, max_items); gtk_expression_bind (expression, self->slice_model, "model", self->category); g_object_set (self->section_list, "model", self->slice_model, NULL); } static void bz_flathub_category_section_dispose (GObject *object) { BzFlathubCategorySection *self = BZ_FLATHUB_CATEGORY_SECTION (object); g_clear_object (&self->category); g_clear_object (&self->slice_model); G_OBJECT_CLASS (bz_flathub_category_section_parent_class)->dispose (object); } static void bz_flathub_category_section_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFlathubCategorySection *self = BZ_FLATHUB_CATEGORY_SECTION (object); switch (prop_id) { case PROP_CATEGORY: g_value_set_object (value, bz_flathub_category_section_get_category (self)); break; case PROP_COMPACT: g_value_set_boolean (value, bz_flathub_category_section_get_compact (self)); break; case PROP_HAS_TITLE: g_value_set_boolean (value, self->has_title); break; case PROP_MIN_ITEMS: g_value_set_uint (value, bz_flathub_category_section_get_min_items (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_category_section_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFlathubCategorySection *self = BZ_FLATHUB_CATEGORY_SECTION (object); switch (prop_id) { case PROP_CATEGORY: bz_flathub_category_section_set_category (self, g_value_get_object (value)); break; case PROP_COMPACT: bz_flathub_category_section_set_compact (self, g_value_get_boolean (value)); break; case PROP_HAS_TITLE: self->has_title = g_value_get_boolean (value); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_TITLE]); break; case PROP_MIN_ITEMS: bz_flathub_category_section_set_min_items (self, g_value_get_uint (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static void bz_flathub_category_section_class_init (BzFlathubCategorySectionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_flathub_category_section_dispose; object_class->get_property = bz_flathub_category_section_get_property; object_class->set_property = bz_flathub_category_section_set_property; props[PROP_CATEGORY] = g_param_spec_object ( "category", NULL, NULL, BZ_TYPE_FLATHUB_CATEGORY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_COMPACT] = g_param_spec_boolean ( "compact", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_HAS_TITLE] = g_param_spec_boolean ( "has-title", NULL, NULL, TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_MIN_ITEMS] = g_param_spec_uint ( "min-items", NULL, NULL, 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-flathub-category-section.ui"); gtk_widget_class_bind_template_child (widget_class, BzFlathubCategorySection, section_title); gtk_widget_class_bind_template_child (widget_class, BzFlathubCategorySection, section_list); gtk_widget_class_bind_template_child (widget_class, BzFlathubCategorySection, more_button); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, on_more_button_clicked); gtk_widget_class_bind_template_callback (widget_class, get_spacing); } static void bz_flathub_category_section_init (BzFlathubCategorySection *self) { self->compact = FALSE; self->has_title = TRUE; self->min_items = 0; gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_flathub_category_section_new (void) { return g_object_new (BZ_TYPE_FLATHUB_CATEGORY_SECTION, NULL); } void bz_flathub_category_section_set_category (BzFlathubCategorySection *self, BzFlathubCategory *category) { const char *display_name; g_autofree char *more_label = NULL; g_return_if_fail (BZ_IS_FLATHUB_CATEGORY_SECTION (self)); g_return_if_fail (category == NULL || BZ_IS_FLATHUB_CATEGORY (category)); if (self->category == category) return; g_clear_object (&self->category); g_clear_object (&self->slice_model); if (category != NULL) { self->category = g_object_ref (category); display_name = bz_flathub_category_get_display_name (category); gtk_label_set_text (self->section_title, display_name); more_label = g_strdup (bz_flathub_category_get_more_of_name (category)); gtk_button_set_label (self->more_button, more_label); update_model (self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CATEGORY]); } BzFlathubCategory * bz_flathub_category_section_get_category (BzFlathubCategorySection *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY_SECTION (self), NULL); return self->category; } void bz_flathub_category_section_set_compact (BzFlathubCategorySection *self, gboolean compact) { g_return_if_fail (BZ_IS_FLATHUB_CATEGORY_SECTION (self)); if (self->compact == compact) return; self->compact = compact; update_model (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_COMPACT]); } gboolean bz_flathub_category_section_get_compact (BzFlathubCategorySection *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY_SECTION (self), FALSE); return self->compact; } void bz_flathub_category_section_set_min_items (BzFlathubCategorySection *self, guint min_items) { g_return_if_fail (BZ_IS_FLATHUB_CATEGORY_SECTION (self)); if (self->min_items == min_items) return; self->min_items = min_items; update_model (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MIN_ITEMS]); } guint bz_flathub_category_section_get_min_items (BzFlathubCategorySection *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY_SECTION (self), 0); return self->min_items; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-category-section.h�����������������������������������������0000664�0000000�0000000�00000003524�15240005042�0023615�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-category-section.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-flathub-category.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_FLATHUB_CATEGORY_SECTION (bz_flathub_category_section_get_type ()) G_DECLARE_FINAL_TYPE (BzFlathubCategorySection, bz_flathub_category_section, BZ, FLATHUB_CATEGORY_SECTION, GtkBox) GtkWidget *bz_flathub_category_section_new (void); void bz_flathub_category_section_set_category (BzFlathubCategorySection *self, BzFlathubCategory *category); BzFlathubCategory *bz_flathub_category_section_get_category (BzFlathubCategorySection *self); void bz_flathub_category_section_set_compact (BzFlathubCategorySection *self, gboolean compact); gboolean bz_flathub_category_section_get_compact (BzFlathubCategorySection *self); void bz_flathub_category_section_set_min_items (BzFlathubCategorySection *self, guint min_items); guint bz_flathub_category_section_get_min_items (BzFlathubCategorySection *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-category.c�������������������������������������������������0000664�0000000�0000000�00000067231�15240005042�0022153�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-category.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "appstream.h" #include "bz-flathub-category.h" #include "bz-flathub-sub-category.h" #include "bz-serializable.h" struct _BzFlathubCategory { GObject parent_instance; BzApplicationMapFactory *map_factory; char *name; GListModel *applications; GListModel *quality_applications; int total_entries; gboolean is_spotlight; GListModel *subcategories; }; static void serializable_iface_init (BzSerializableInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzFlathubCategory, bz_flathub_category, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (BZ_TYPE_SERIALIZABLE, serializable_iface_init)); enum { PROP_0, PROP_MAP_FACTORY, PROP_NAME, PROP_DISPLAY_NAME, PROP_SHORT_NAME, PROP_IS_XDG, PROP_SHOW_IN_LIST, PROP_SYMBOLIC_ICON_NAME, PROP_ICON_NAME, PROP_APPLICATIONS, PROP_QUALITY_APPLICATIONS, PROP_TOTAL_ENTRIES, PROP_IS_SPOTLIGHT, PROP_SUBCATEGORIES, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void clear (BzFlathubCategory *self); typedef struct { const char *id; const char *display_name; const char *short_name; const char *more_of_name; gboolean is_xdg; gboolean show_in_list; const char *icon_name; const char *symbolic_icon_name; const void *subcategories; } CategoryInfo; typedef struct { const char *display_name; const char *category_id; } Subcategory; static const Subcategory audiovideo_subcategories[] = { { N_ ("Editing"), "AudioVideoEditing" }, { N_ ("Midi"), "Midi" }, { N_ ("Mixer"), "Mixer" }, { N_ ("Music"), "Music" }, { N_ ("Player"), "Player" }, { N_ ("Recorder"), "Recorder" }, { N_ ("Sequencer"), "Sequencer" }, { N_ ("Tuner"), "Tuner" }, { N_ ("TV"), "TV" }, { NULL, NULL } }; static const Subcategory game_subcategories[] = { { N_ ("Emulation"), "Emulator" }, { N_ ("Action"), "ActionGame" }, { N_ ("Adventure"), "AdventureGame" }, { N_ ("Arcade"), "ArcadeGame" }, { N_ ("Blocks"), "BlocksGame" }, { N_ ("Board"), "BoardGame" }, { N_ ("Card"), "CardGame" }, { N_ ("Kids"), "KidsGame" }, { N_ ("Logic"), "LogicGame" }, { N_ ("Role Playing"), "RolePlaying" }, { N_ ("Shooter"), "Shooter" }, { N_ ("Simulation"), "Simulation" }, { N_ ("Sports"), "SportsGame" }, { N_ ("Strategy"), "StrategyGame" }, { NULL, NULL } }; static const Subcategory network_subcategories[] = { { N_ ("Browsers"), "WebBrowser" }, { N_ ("Chat"), "Chat" }, { N_ ("Mail"), "Email" }, { N_ ("File Sharing"), "FileTransfer"}, { NULL, NULL } }; static const CategoryInfo category_info[] = { { "audiovideo", N_ ("Audio & Video"), N_ ("Media"), N_ ("More Audio & Video"), TRUE, TRUE, "io.github.kolumni.Bazaar.Audiovideo", "video-reel2-symbolic", audiovideo_subcategories }, { "development", N_ ("Developer Tools"), N_ ("Develop"), N_ ("More Developer Tools"), TRUE, TRUE, "io.github.kolumni.Bazaar.Develop", "code-symbolic", NULL }, { "education", N_ ("Education"), N_ ("Learn"), N_ ("More Education"), TRUE, TRUE, "io.github.kolumni.Bazaar.Learn", "open-book-symbolic", NULL }, { "game", N_ ("Gaming"), N_ ("Play"), N_ ("More Gaming"), TRUE, TRUE, "io.github.kolumni.Bazaar.Play", "gamepad-symbolic", game_subcategories }, { "graphics", N_ ("Graphics & Photography"), N_ ("Create"), N_ ("More Graphics & Photography"), TRUE, TRUE, "io.github.kolumni.Bazaar.Create", "paintbrush-symbolic", NULL }, { "network", N_ ("Networking"), N_ ("Internet"), N_ ("More Networking"), TRUE, TRUE, "io.github.kolumni.Bazaar.Network", "globe-symbolic", network_subcategories }, { "office", N_ ("Productivity"), N_ ("Work"), N_ ("More Productivity"), TRUE, TRUE, "io.github.kolumni.Bazaar.Work", "meeting-symbolic", NULL }, { "science", N_ ("Science"), N_ ("Science"), N_ ("More Science"), TRUE, TRUE, "io.github.kolumni.Bazaar.Science", "applications-science-symbolic", NULL }, { "system", N_ ("System"), N_ ("System"), N_ ("More System"), TRUE, TRUE, "io.github.kolumni.Bazaar.System", "applications-system-symbolic", NULL }, { "utility", N_ ("Utilities"), N_ ("Tools"), N_ ("More Utilities"), TRUE, TRUE, "io.github.kolumni.Bazaar.Utilities", "applications-utilities-symbolic", NULL }, { "trending", N_ ("Trending"), N_ ("Trending"), N_ ("More Trending"), FALSE, TRUE, "io.github.kolumni.Bazaar.Trending", "", NULL }, { "popular", N_ ("Popular"), N_ ("Popular"), N_ ("More Popular"), FALSE, TRUE, "io.github.kolumni.Bazaar.Popular", "", NULL }, { "recently-added", N_ ("Recently Added"), N_ ("New"), N_ ("More New"), FALSE, TRUE, "io.github.kolumni.Bazaar.New", "", NULL }, { "recently-updated", N_ ("Recently Updated"), N_ ("Updated"), N_ ("More Updated"), FALSE, TRUE, "io.github.kolumni.Bazaar.Updated", "", NULL }, { "mobile", N_ ("Mobile"), N_ ("Mobile"), N_ ("More Mobile"), FALSE, TRUE, "io.github.kolumni.Bazaar.Mobile", "", NULL }, { "adwaita", N_ ("Adwaita"), N_ ("Adwaita"), N_ ("More Adwaita"), FALSE, TRUE, "io.github.kolumni.Bazaar.Adwaita", "", NULL }, { "kde", N_ ("KDE Apps"), N_ ("KDE Apps"), N_ ("More KDE Apps"), FALSE, TRUE, "io.github.kolumni.Bazaar.Kde", "", NULL }, { "game-only", N_ ("Games"), N_ ("Games"), N_ ("More Games"), FALSE, FALSE, "", "", NULL }, { "emulators", N_ ("Emulators"), N_ ("Emulators"), N_ ("More Emulators"), FALSE, FALSE, "", "", NULL }, { "launchers", N_ ("Launchers"), N_ ("Launchers"), N_ ("More Game Launchers"), FALSE, FALSE, "", "", NULL }, { "game-tools", N_ ("Game Tools"), N_ ("Game Tools"), N_ ("More Game Tools"), FALSE, FALSE, "", "", NULL }, { NULL, NULL, NULL, NULL, FALSE, FALSE, NULL, NULL, NULL } }; static const CategoryInfo * get_category_info (const char *category_id) { for (int i = 0; category_info[i].id != NULL; i++) { if (g_strcmp0 (category_info[i].id, category_id) == 0) return &category_info[i]; } return NULL; } static GListModel * create_subcategories (const Subcategory *subcategories) { GListStore *store; store = g_list_store_new (BZ_TYPE_FLATHUB_SUB_CATEGORY); for (gsize i = 0; subcategories[i].display_name != NULL; i++) g_list_store_append (store, g_object_new (BZ_TYPE_FLATHUB_SUB_CATEGORY, "name", _ (subcategories[i].display_name), "id", subcategories[i].category_id, NULL)); return G_LIST_MODEL (store); } static void bz_flathub_category_dispose (GObject *object) { BzFlathubCategory *self = BZ_FLATHUB_CATEGORY (object); clear (self); G_OBJECT_CLASS (bz_flathub_category_parent_class)->dispose (object); } static void bz_flathub_category_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFlathubCategory *self = BZ_FLATHUB_CATEGORY (object); switch (prop_id) { case PROP_MAP_FACTORY: g_value_set_object (value, bz_flathub_category_get_map_factory (self)); break; case PROP_NAME: g_value_set_string (value, bz_flathub_category_get_name (self)); break; case PROP_APPLICATIONS: g_value_take_object (value, bz_flathub_category_dup_applications (self)); break; case PROP_QUALITY_APPLICATIONS: g_value_take_object (value, bz_flathub_category_dup_quality_applications (self)); break; case PROP_DISPLAY_NAME: g_value_set_string (value, bz_flathub_category_get_display_name (self)); break; case PROP_SHORT_NAME: g_value_set_string (value, bz_flathub_category_get_short_name (self)); break; case PROP_IS_XDG: g_value_set_boolean (value, bz_flathub_category_get_is_xdg (self)); break; case PROP_SHOW_IN_LIST: g_value_set_boolean (value, bz_flathub_category_get_show_in_list (self)); break; case PROP_SYMBOLIC_ICON_NAME: g_value_set_string (value, bz_flathub_category_get_symbolic_icon_name (self)); break; case PROP_ICON_NAME: g_value_set_string (value, bz_flathub_category_get_icon_name (self)); break; case PROP_TOTAL_ENTRIES: g_value_set_int (value, bz_flathub_category_get_total_entries (self)); break; case PROP_IS_SPOTLIGHT: g_value_set_boolean (value, bz_flathub_category_get_is_spotlight (self)); break; case PROP_SUBCATEGORIES: g_value_set_object (value, bz_flathub_category_get_subcategories (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_category_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFlathubCategory *self = BZ_FLATHUB_CATEGORY (object); switch (prop_id) { case PROP_MAP_FACTORY: bz_flathub_category_set_map_factory (self, g_value_get_object (value)); break; case PROP_NAME: bz_flathub_category_set_name (self, g_value_get_string (value)); break; case PROP_APPLICATIONS: bz_flathub_category_set_applications (self, g_value_get_object (value)); break; case PROP_QUALITY_APPLICATIONS: bz_flathub_category_set_quality_applications (self, g_value_get_object (value)); break; case PROP_TOTAL_ENTRIES: bz_flathub_category_set_total_entries (self, g_value_get_int (value)); break; case PROP_IS_SPOTLIGHT: bz_flathub_category_set_is_spotlight (self, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_category_class_init (BzFlathubCategoryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_flathub_category_set_property; object_class->get_property = bz_flathub_category_get_property; object_class->dispose = bz_flathub_category_dispose; props[PROP_MAP_FACTORY] = g_param_spec_object ( "map-factory", NULL, NULL, BZ_TYPE_APPLICATION_MAP_FACTORY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_NAME] = g_param_spec_string ( "name", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_DISPLAY_NAME] = g_param_spec_string ( "display-name", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_SHORT_NAME] = g_param_spec_string ( "short-name", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_IS_XDG] = g_param_spec_boolean ( "is-xdg", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_SHOW_IN_LIST] = g_param_spec_boolean ( "show-in-list", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_SYMBOLIC_ICON_NAME] = g_param_spec_string ( "symbolic-icon-name", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_ICON_NAME] = g_param_spec_string ( "icon-name", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_APPLICATIONS] = g_param_spec_object ( "applications", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_QUALITY_APPLICATIONS] = g_param_spec_object ( "quality-applications", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TOTAL_ENTRIES] = g_param_spec_int ( "total-entries", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_IS_SPOTLIGHT] = g_param_spec_boolean ( "is-spotlight", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_SUBCATEGORIES] = g_param_spec_object ( "subcategories", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_flathub_category_init (BzFlathubCategory *self) { } static void bz_flathub_category_real_serialize (BzSerializable *serializable, GVariantBuilder *builder) { BzFlathubCategory *self = BZ_FLATHUB_CATEGORY (serializable); if (self->name != NULL) g_variant_builder_add (builder, "{sv}", "name", g_variant_new_string (self->name)); if (self->applications != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (self->applications); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint i = 0; i < n_items; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (self->applications, i); g_variant_builder_add (sub_builder, "s", gtk_string_object_get_string (string)); } g_variant_builder_add (builder, "{sv}", "applications", g_variant_builder_end (sub_builder)); } } if (self->quality_applications != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (self->quality_applications); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint i = 0; i < n_items; i++) { g_autoptr (GtkStringObject) string = NULL; string = g_list_model_get_item (self->quality_applications, i); g_variant_builder_add (sub_builder, "s", gtk_string_object_get_string (string)); } g_variant_builder_add (builder, "{sv}", "quality-applications", g_variant_builder_end (sub_builder)); } } g_variant_builder_add (builder, "{sv}", "total-entries", g_variant_new_int32 (self->total_entries)); g_variant_builder_add (builder, "{sv}", "is-spotlight", g_variant_new_boolean (self->is_spotlight)); } static gboolean bz_flathub_category_real_deserialize (BzSerializable *serializable, GVariant *import, GError **error) { BzFlathubCategory *self = BZ_FLATHUB_CATEGORY (serializable); g_autoptr (GVariantIter) iter = NULL; clear (self); iter = g_variant_iter_new (import); for (;;) { g_autofree char *key = NULL; g_autoptr (GVariant) value = NULL; /* TODO automate this, this is awful */ if (!g_variant_iter_next (iter, "{sv}", &key, &value)) break; if (g_strcmp0 (key, "name") == 0) bz_flathub_category_set_name (self, g_variant_get_string (value, NULL)); else if (g_strcmp0 (key, "applications") == 0) { g_autoptr (GtkStringList) list = NULL; g_autoptr (GVariantIter) list_iter = NULL; list = gtk_string_list_new (NULL); list_iter = g_variant_iter_new (value); for (;;) { g_autofree char *id = NULL; if (!g_variant_iter_next (list_iter, "s", &id)) break; gtk_string_list_append (list, id); } self->applications = (GListModel *) g_steal_pointer (&list); } else if (g_strcmp0 (key, "quality-applications") == 0) { g_autoptr (GtkStringList) list = NULL; g_autoptr (GVariantIter) list_iter = NULL; list = gtk_string_list_new (NULL); list_iter = g_variant_iter_new (value); for (;;) { g_autofree char *id = NULL; if (!g_variant_iter_next (list_iter, "s", &id)) break; gtk_string_list_append (list, id); } self->quality_applications = (GListModel *) g_steal_pointer (&list); } else if (g_strcmp0 (key, "total-entries") == 0) self->total_entries = g_variant_get_int32 (value); else if (g_strcmp0 (key, "is-spotlight") == 0) self->is_spotlight = g_variant_get_boolean (value); } return TRUE; } static void serializable_iface_init (BzSerializableInterface *iface) { iface->serialize = bz_flathub_category_real_serialize; iface->deserialize = bz_flathub_category_real_deserialize; } BzFlathubCategory * bz_flathub_category_new (void) { return g_object_new (BZ_TYPE_FLATHUB_CATEGORY, NULL); } BzApplicationMapFactory * bz_flathub_category_get_map_factory (BzFlathubCategory *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); return self->map_factory; } const char * bz_flathub_category_get_name (BzFlathubCategory *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); return self->name; } GListModel * bz_flathub_category_dup_applications (BzFlathubCategory *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); if (self->applications != NULL) { if (self->map_factory != NULL) return bz_application_map_factory_generate ( self->map_factory, G_LIST_MODEL (self->applications)); else return G_LIST_MODEL (g_object_ref (self->applications)); } else return NULL; } GListModel * bz_flathub_category_dup_quality_applications (BzFlathubCategory *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); if (self->quality_applications != NULL) { if (self->map_factory != NULL) return bz_application_map_factory_generate ( self->map_factory, G_LIST_MODEL (self->quality_applications)); else return G_LIST_MODEL (g_object_ref (self->quality_applications)); } else return NULL; } int bz_flathub_category_get_total_entries (BzFlathubCategory *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), 0); return self->total_entries; } gboolean bz_flathub_category_get_is_spotlight (BzFlathubCategory *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), FALSE); return self->is_spotlight; } void bz_flathub_category_set_map_factory (BzFlathubCategory *self, BzApplicationMapFactory *map_factory) { g_return_if_fail (BZ_IS_FLATHUB_CATEGORY (self)); g_return_if_fail (map_factory == NULL || BZ_IS_APPLICATION_MAP_FACTORY (map_factory)); g_clear_object (&self->map_factory); if (map_factory != NULL) self->map_factory = g_object_ref (map_factory); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MAP_FACTORY]); } void bz_flathub_category_set_name (BzFlathubCategory *self, const char *name) { const CategoryInfo *info; g_return_if_fail (BZ_IS_FLATHUB_CATEGORY (self)); g_clear_pointer (&self->name, g_free); self->name = g_strdup (name); info = get_category_info (name); if (info != NULL && info->subcategories != NULL) { g_clear_object (&self->subcategories); self->subcategories = create_subcategories ((const Subcategory *) info->subcategories); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SUBCATEGORIES]); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NAME]); } void bz_flathub_category_set_applications (BzFlathubCategory *self, GListModel *applications) { g_return_if_fail (BZ_IS_FLATHUB_CATEGORY (self)); g_clear_pointer (&self->applications, g_object_unref); if (applications != NULL) self->applications = g_object_ref (applications); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPLICATIONS]); } void bz_flathub_category_set_quality_applications (BzFlathubCategory *self, GListModel *applications) { g_return_if_fail (BZ_IS_FLATHUB_CATEGORY (self)); g_clear_pointer (&self->quality_applications, g_object_unref); if (applications != NULL) self->quality_applications = g_object_ref (applications); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_QUALITY_APPLICATIONS]); } void bz_flathub_category_set_total_entries (BzFlathubCategory *self, int total_entries) { g_return_if_fail (BZ_IS_FLATHUB_CATEGORY (self)); if (self->total_entries == total_entries) return; self->total_entries = total_entries; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TOTAL_ENTRIES]); } void bz_flathub_category_set_is_spotlight (BzFlathubCategory *self, gboolean is_spotlight) { g_return_if_fail (BZ_IS_FLATHUB_CATEGORY (self)); if (self->is_spotlight == is_spotlight) return; self->is_spotlight = is_spotlight; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_IS_SPOTLIGHT]); } const char * bz_flathub_category_get_display_name (BzFlathubCategory *self) { const CategoryInfo *info; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); info = get_category_info (self->name); return info ? _ (info->display_name) : self->name; } const char * bz_flathub_category_get_short_name (BzFlathubCategory *self) { const CategoryInfo *info; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); info = get_category_info (self->name); return info ? _ (info->short_name) : self->name; } const char * bz_flathub_category_get_more_of_name (BzFlathubCategory *self) { const CategoryInfo *info; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); info = get_category_info (self->name); return info ? _ (info->more_of_name) : self->name; } gboolean bz_flathub_category_get_is_xdg (BzFlathubCategory *self) { const CategoryInfo *info; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), FALSE); info = get_category_info (self->name); return info ? info->is_xdg : FALSE; } gboolean bz_flathub_category_get_show_in_list (BzFlathubCategory *self) { const CategoryInfo *info; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), FALSE); info = get_category_info (self->name); return info ? info->show_in_list : FALSE; } const char * bz_flathub_category_get_symbolic_icon_name (BzFlathubCategory *self) { const CategoryInfo *info; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); info = get_category_info (self->name); return info ? info->symbolic_icon_name : NULL; } const char * bz_flathub_category_get_icon_name (BzFlathubCategory *self) { const CategoryInfo *info; g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); info = get_category_info (self->name); return info ? info->icon_name : NULL; } GListModel * bz_flathub_category_get_subcategories (BzFlathubCategory *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CATEGORY (self), NULL); return self->subcategories; } static void clear (BzFlathubCategory *self) { g_clear_pointer (&self->map_factory, g_object_unref); g_clear_pointer (&self->name, g_free); g_clear_pointer (&self->applications, g_object_unref); g_clear_pointer (&self->quality_applications, g_object_unref); g_clear_object (&self->subcategories); } static const char * bz_flathub_category_map_appstream_id (const char *as_category_id) { g_autofree char *lowercase = NULL; const CategoryInfo *info = NULL; g_return_val_if_fail (as_category_id != NULL, NULL); lowercase = g_ascii_strdown (as_category_id, -1); info = get_category_info (lowercase); return info ? info->id : NULL; } GListModel * bz_flathub_category_list_from_appstream (GPtrArray *as_categories) { g_autoptr (GListStore) categories = NULL; g_return_val_if_fail (as_categories != NULL, NULL); if (as_categories->len == 0) return NULL; categories = g_list_store_new (BZ_TYPE_FLATHUB_CATEGORY); for (guint i = 0; i < as_categories->len; i++) { const char *category_id = NULL; const char *mapped_id = NULL; category_id = (const char *) g_ptr_array_index (as_categories, i); if (category_id == NULL) continue; mapped_id = bz_flathub_category_map_appstream_id (category_id); if (mapped_id != NULL) { g_autoptr (BzFlathubCategory) category = NULL; category = bz_flathub_category_new (); bz_flathub_category_set_name (category, mapped_id); g_list_store_append (categories, category); } } if (g_list_model_get_n_items (G_LIST_MODEL (categories)) == 0) return NULL; return G_LIST_MODEL (g_steal_pointer (&categories)); } /* End of bz-flathub-category.c */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-category.h�������������������������������������������������0000664�0000000�0000000�00000006071�15240005042�0022153�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-category.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "bz-application-map-factory.h" G_BEGIN_DECLS #define BZ_TYPE_FLATHUB_CATEGORY (bz_flathub_category_get_type ()) G_DECLARE_FINAL_TYPE (BzFlathubCategory, bz_flathub_category, BZ, FLATHUB_CATEGORY, GObject) BzFlathubCategory * bz_flathub_category_new (void); BzApplicationMapFactory * bz_flathub_category_get_map_factory (BzFlathubCategory *self); const char * bz_flathub_category_get_name (BzFlathubCategory *self); GListModel * bz_flathub_category_dup_applications (BzFlathubCategory *self); GListModel * bz_flathub_category_dup_quality_applications (BzFlathubCategory *self); void bz_flathub_category_set_map_factory (BzFlathubCategory *self, BzApplicationMapFactory *map_factory); void bz_flathub_category_set_name (BzFlathubCategory *self, const char *name); void bz_flathub_category_set_applications (BzFlathubCategory *self, GListModel *applications); void bz_flathub_category_set_quality_applications (BzFlathubCategory *self, GListModel *applications); const char * bz_flathub_category_get_display_name (BzFlathubCategory *self); const char * bz_flathub_category_get_short_name (BzFlathubCategory *self); const char * bz_flathub_category_get_more_of_name (BzFlathubCategory *self); gboolean bz_flathub_category_get_is_xdg (BzFlathubCategory *self); gboolean bz_flathub_category_get_show_in_list (BzFlathubCategory *self); const char * bz_flathub_category_get_symbolic_icon_name (BzFlathubCategory *self); const char * bz_flathub_category_get_icon_name (BzFlathubCategory *self); int bz_flathub_category_get_total_entries (BzFlathubCategory *self); void bz_flathub_category_set_total_entries (BzFlathubCategory *self, int total_entries); gboolean bz_flathub_category_get_is_spotlight (BzFlathubCategory *self); void bz_flathub_category_set_is_spotlight (BzFlathubCategory *self, gboolean is_spotlight); GListModel * bz_flathub_category_get_subcategories (BzFlathubCategory *self); GListModel * bz_flathub_category_list_from_appstream (GPtrArray *as_categories); G_END_DECLS /* End of bz-flathub-category.h */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-curated-section.blp����������������������������������������0000664�0000000�0000000�00000002051�15240005042�0023747�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzFlathubCuratedSection: Adw.Bin { child: Box root_box { styles [ "sp-section", "card", ] Box padding_box { orientation: vertical; spacing: 8; margin-start: 24; margin-end: 24; margin-top: 24; margin-bottom: 24; Label title_label { styles [ "title-1", "sp-section-title", ] xalign: 0.0; hexpand: true; margin-start: 3; margin-end: 3; wrap: true; wrap-mode: word_char; } Label subtitle_label { xalign: 0.0; hexpand: true; margin-start: 3; margin-end: 3; margin-bottom: 8; wrap: true; wrap-mode: word_char; } $BzDynamicListView list { styles [ "flathub-page-section", ] hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; max-children-per-line: 4; } } }; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-curated-section.c������������������������������������������0000664�0000000�0000000�00000024343�15240005042�0023424�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-curated-section.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-dynamic-list-view.h" #include "bz-flathub-curated-section.h" struct _BzFlathubCuratedSection { AdwBin parent_instance; BzFlathubCuratedSelection *selection; GListModel *model; GtkSliceListModel *slice_model; guint max_length; char *applied_css_class; GtkWidget *root_box; GtkLabel *title_label; GtkLabel *subtitle_label; BzDynamicListView *list; }; G_DEFINE_FINAL_TYPE (BzFlathubCuratedSection, bz_flathub_curated_section, ADW_TYPE_BIN) enum { PROP_0, PROP_SELECTION, PROP_MAX_LENGTH, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; typedef struct { const char *theme_key; const char *title; const char *subtitle; } ThemeInfo; static const ThemeInfo theme_info[] = { { "new-year-new-workflows", N_ ("New Year, New Workflows"), N_ ("Apps to take notes, track tasks, and make plans") }, { "free-software-favorites", N_ ("Staff Picks"), N_ ("Apps we love right now") }, { "spring-creativity", N_ ("Get Creative"), N_ ("Essential apps for drawing, editing photos, and digital design") }, { "fresh-desktop-releases", N_ ("Build Native Apps"), N_ ("Develop apps that feel at home on your system") }, { "staying-connected", N_ ("Stay in Touch"), N_ ("Essential collaboration and communication apps") }, { "summer-travel", N_ ("Ready for Vacations"), N_ ("Maps, transit, weather, and trip planning apps") }, { "back-to-learning", N_ ("Smarter Every Day"), N_ ("Apps to help you study, research, and write") }, { "winter-comforts", N_ ("Get Cozy"), N_ ("Great apps for reading, watching movies, and playing games") }, { "tools-for-developers", N_ ("Web Developer Essentials"), N_ ("Making websites is more fun with these apps") }, { "take-better-notes", N_ ("Take Better Notes"), N_ ("Find your new favorite note taking tool") }, { "get-focused", N_ ("Get Focused"), N_ ("Great apps for task management") }, { "make-some-noise", N_ ("Make Some Noise"), N_ ("Apps for creating and producing music") }, { "get-to-work", N_ ("Get To Work"), N_ ("Essential office apps") }, { NULL, NULL, NULL } }; static const ThemeInfo * get_theme_info (const char *theme_key); static void bz_flathub_curated_section_dispose (GObject *object) { BzFlathubCuratedSection *self = BZ_FLATHUB_CURATED_SECTION (object); g_clear_object (&self->selection); g_clear_object (&self->model); g_clear_object (&self->slice_model); g_clear_pointer (&self->applied_css_class, g_free); G_OBJECT_CLASS (bz_flathub_curated_section_parent_class)->dispose (object); } static void bz_flathub_curated_section_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFlathubCuratedSection *self = BZ_FLATHUB_CURATED_SECTION (object); switch (prop_id) { case PROP_SELECTION: g_value_set_object (value, bz_flathub_curated_section_get_selection (self)); break; case PROP_MAX_LENGTH: g_value_set_uint (value, self->max_length); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_curated_section_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFlathubCuratedSection *self = BZ_FLATHUB_CURATED_SECTION (object); switch (prop_id) { case PROP_SELECTION: bz_flathub_curated_section_set_selection (self, g_value_get_object (value)); break; case PROP_MAX_LENGTH: bz_flathub_curated_section_set_max_length (self, g_value_get_uint (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_curated_section_class_init (BzFlathubCuratedSectionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_flathub_curated_section_dispose; object_class->get_property = bz_flathub_curated_section_get_property; object_class->set_property = bz_flathub_curated_section_set_property; props[PROP_SELECTION] = g_param_spec_object ( "selection", NULL, NULL, BZ_TYPE_FLATHUB_CURATED_SELECTION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_MAX_LENGTH] = g_param_spec_uint ( "max-length", NULL, NULL, 0, G_MAXUINT, 8, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_DYNAMIC_LIST_VIEW); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-flathub-curated-section.ui"); gtk_widget_class_bind_template_child (widget_class, BzFlathubCuratedSection, root_box); gtk_widget_class_bind_template_child (widget_class, BzFlathubCuratedSection, title_label); gtk_widget_class_bind_template_child (widget_class, BzFlathubCuratedSection, subtitle_label); gtk_widget_class_bind_template_child (widget_class, BzFlathubCuratedSection, list); } static void bz_flathub_curated_section_init (BzFlathubCuratedSection *self) { self->max_length = 8; gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_flathub_curated_section_new (void) { return g_object_new (BZ_TYPE_FLATHUB_CURATED_SECTION, NULL); } void bz_flathub_curated_section_set_selection (BzFlathubCuratedSection *self, BzFlathubCuratedSelection *selection) { const char *theme_key = NULL; const char *slot = NULL; const ThemeInfo *info = NULL; g_return_if_fail (BZ_IS_FLATHUB_CURATED_SECTION (self)); g_return_if_fail (selection == NULL || BZ_IS_FLATHUB_CURATED_SELECTION (selection)); g_set_object (&self->selection, selection); g_clear_object (&self->slice_model); g_clear_object (&self->model); if (self->selection != NULL) { GtkStringList *apps = NULL; BzApplicationMapFactory *map_factory = NULL; theme_key = bz_flathub_curated_selection_get_theme_key (self->selection); slot = bz_flathub_curated_selection_get_slot (self->selection); apps = bz_flathub_curated_selection_get_apps (self->selection); map_factory = bz_flathub_curated_selection_get_map_factory (self->selection); if (apps != NULL && map_factory != NULL) self->model = bz_application_map_factory_generate ( map_factory, G_LIST_MODEL (apps)); } if (self->model != NULL) self->slice_model = gtk_slice_list_model_new ( g_object_ref (self->model), 0, self->max_length); info = get_theme_info (theme_key); if (info != NULL) { gtk_label_set_label (self->title_label, _ (info->title)); gtk_label_set_label (self->subtitle_label, _ (info->subtitle)); gtk_widget_set_visible (GTK_WIDGET (self->title_label), TRUE); gtk_widget_set_visible (GTK_WIDGET (self->subtitle_label), TRUE); } else { gtk_widget_set_visible (GTK_WIDGET (self->title_label), FALSE); gtk_widget_set_visible (GTK_WIDGET (self->subtitle_label), FALSE); } if (self->applied_css_class != NULL) { gtk_widget_remove_css_class (self->root_box, self->applied_css_class); g_clear_pointer (&self->applied_css_class, g_free); } if (slot != NULL) { self->applied_css_class = g_strdup (slot); gtk_widget_add_css_class (self->root_box, self->applied_css_class); } bz_dynamic_list_view_set_model ( self->list, self->slice_model != NULL ? G_LIST_MODEL (self->slice_model) : NULL); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SELECTION]); } BzFlathubCuratedSelection * bz_flathub_curated_section_get_selection (BzFlathubCuratedSection *self) { g_return_val_if_fail (BZ_IS_FLATHUB_CURATED_SECTION (self), NULL); return self->selection; } void bz_flathub_curated_section_set_max_length (BzFlathubCuratedSection *self, guint max_length) { g_return_if_fail (BZ_IS_FLATHUB_CURATED_SECTION (self)); if (self->max_length == max_length) return; self->max_length = max_length; if (self->slice_model != NULL) gtk_slice_list_model_set_size (self->slice_model, max_length); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MAX_LENGTH]); } static const ThemeInfo * get_theme_info (const char *theme_key) { int i = 0; if (theme_key == NULL) return NULL; for (i = 0; theme_info[i].theme_key != NULL; i++) { if (g_strcmp0 (theme_info[i].theme_key, theme_key) == 0) return &theme_info[i]; } return NULL; } /* End of bz-flathub-curated-section.c */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-curated-section.h������������������������������������������0000664�0000000�0000000�00000003017�15240005042�0023424�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-curated-section.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-flathub-curated-selection.h" G_BEGIN_DECLS #define BZ_TYPE_FLATHUB_CURATED_SECTION (bz_flathub_curated_section_get_type ()) G_DECLARE_FINAL_TYPE (BzFlathubCuratedSection, bz_flathub_curated_section, BZ, FLATHUB_CURATED_SECTION, AdwBin) GtkWidget * bz_flathub_curated_section_new (void); void bz_flathub_curated_section_set_selection (BzFlathubCuratedSection *self, BzFlathubCuratedSelection *selection); BzFlathubCuratedSelection * bz_flathub_curated_section_get_selection (BzFlathubCuratedSection *self); void bz_flathub_curated_section_set_max_length (BzFlathubCuratedSection *self, guint max_length); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-curated-selection.txt��������������������������������������0000664�0000000�0000000�00000000546�15240005042�0024341�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=flathub_curated_selection parent-prefix=g parent-name=object author=AUTOGEN include="bz-application-map-factory.h" property=theme_key char G_TYPE_STRING string property=slot char G_TYPE_STRING string property=apps GtkStringList GTK_TYPE_STRING_LIST object property=map_factory BzApplicationMapFactory BZ_TYPE_APPLICATION_MAP_FACTORY object ����������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-page.blp���������������������������������������������������0000664�0000000�0000000�00000061423�15240005042�0021602�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzFlathubPage: Adw.Bin { child: Adw.BreakpointBin { width-request: 360; height-request: 100; child: Adw.BreakpointBin { width-request: 360; height-request: 100; child: Adw.ViewStack stack { enable-transitions: true; transition-duration: 400; Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: "flathub-symbolic"; title: _("Flathub Not Added"); description: _("The Flathub remote was not found on any of your Flatpak installations"); }; } Adw.ViewStackPage { name: "offline"; child: Adw.StatusPage { icon-name: "connected-squares-x"; title: _("Can't Reach Flathub"); description: _("You can still manage and search for apps."); child: Box offline_buttons { halign: center; spacing: 12; Button { label: _("Search Apps"); halign: center; clicked => $open_search_cb(template); styles ["pill"] } Button { styles ["pill"] halign: center; sensitive: bind $invert_boolean(template.state as <$BzStateInfo>.syncing as <bool>) as <bool>; label: _("Reconnect"); action-name: "app.sync-remotes"; } }; }; } Adw.ViewStackPage { name: "content"; child: ScrolledWindow { styles [ "transparent", ] hscrollbar-policy: never; child: Adw.ClampScrollable { maximum-size: 1500; tightening-threshold: 1400; child: Viewport { child: Box content_box { margin-start: 30; margin-end: 30; margin-top: 5; margin-bottom: 50; orientation: vertical; spacing: 15; $BzFeaturedCarousel { styles [ "flathub-page-section", ] margin-top: 16; margin-bottom: 3; hexpand: true; model: bind template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.apps_of_the_week; } $BzFlathubCuratedSection after_hero { visible: bind $invert_boolean($is_null(after_hero.selection as <$BzFlathubCuratedSelection>) as <bool>) as <bool>; selection: bind $get_curated_selection_by_slot(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.curated_selections, "after-hero") as <$BzFlathubCuratedSelection>; } Box section_toggles_box { halign: center; width-request: 800; Adw.ToggleGroup section_toggles { hexpand: true; halign: fill; homogeneous: true; styles [ "round", "huge" ] Adw.Toggle { label: _("Trending"); name: "trending"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "trending") as <$BzFlathubCategory>) as <bool>) as <bool>; } Adw.Toggle { label: _("Popular"); name: "popular"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "popular") as <$BzFlathubCategory>) as <bool>) as <bool>; } Adw.Toggle { label: _("New"); name: "recently-added"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "recently-added") as <$BzFlathubCategory>) as <bool>) as <bool>; } Adw.Toggle { label: _("Updated"); name: "recently-updated"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "recently-updated") as <$BzFlathubCategory>) as <bool>) as <bool>; } } } Adw.ViewStack sections_stack { enable-transitions: true; transition-duration: 300; visible-child-name: bind section_toggles.active-name bidirectional; Adw.ViewStackPage { name: "trending"; title: _("Trending"); child: $BzFlathubCategorySection section_trending { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "trending") as <$BzFlathubCategory>; min-items: 12; has-title: false; }; } Adw.ViewStackPage { name: "recently-updated"; title: _("Recently Updated"); child: $BzFlathubCategorySection section_recently_updated { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "recently-updated") as <$BzFlathubCategory>; min-items: 12; has-title: false; }; } Adw.ViewStackPage { name: "recently-added"; title: _("Recently Added"); child: $BzFlathubCategorySection section_recently_added { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "recently-added") as <$BzFlathubCategory>; min-items: 12; has-title: false; }; } Adw.ViewStackPage { name: "popular"; title: _("Popular"); child: $BzFlathubCategorySection section_popular { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "popular") as <$BzFlathubCategory>; min-items: 12; has-title: false; }; } } $BzFlathubCategorySection section_productivity { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "office") as <$BzFlathubCategory>; } Box { orientation: vertical; spacing: 10; margin-top: 16; margin-bottom: 20; Label { styles [ "title-1", ] xalign: 0.0; hexpand: true; margin-start: 3; margin-end: 3; margin-bottom: 5; ellipsize: end; label: _("App of the Day"); } $BzFeaturedCarousel { styles [ "flathub-page-section", ] hexpand: true; model: SliceListModel { offset: 0; size: 1; model: bind template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.apps_of_the_day_week; }; } } $BzFlathubCategorySection section_graphics { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "graphics") as <$BzFlathubCategory>; } $BzFlathubCategorySection section_audiovideo { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "audiovideo") as <$BzFlathubCategory>; } Box otg_box { visible: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "mobile") as <$BzFlathubCategory>) as <bool>) as <bool>; margin-top: 8; margin-bottom: 20; styles [ "sp-section", "otg", "card", ] Box otg_padding_box { orientation: horizontal; margin-start: 24; margin-end: 24; margin-top: 24; margin-bottom: 24; Box otg_title_box { orientation: vertical; spacing: 12; width-request: 285; valign: center; Image otg_image { icon-name: "on-the-go-symbolic"; can-target: false; pixel-size: 256; margin-bottom: 10; halign: start; styles [ "sp-section-image", ] } Label otg_title { label: _("On the Go"); halign: start; wrap: true; wrap-mode: word_char; styles [ "sp-section-title", "title-1", ] } Label otg_subtitle { label: _("Apps for your Linux phones and tablets"); halign: start; wrap: true; wrap-mode: word_char; } Button otg_more_button_top { styles [ "pill", ] label: _("More Mobile Apps"); halign: start; valign: center; clicked => $show_more_mobile_cb(template); } } $BzDynamicListView otg_list { styles [ "flathub-page-section", ] hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; max-children-per-line: 3; model: SliceListModel otg_slice { offset: 0; size: 9; model: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "mobile") as <$BzFlathubCategory>.applications; }; } Button otg_more_button_bottom { styles [ "pill", ] visible: false; label: _("More Mobile Apps"); halign: center; valign: center; margin-bottom: 12; clicked => $show_more_mobile_cb(template); } } } $BzFlathubCategorySection section_education { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "education") as <$BzFlathubCategory>; } $BzFlathubCategorySection section_network { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "network") as <$BzFlathubCategory>; } Box { visible: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "game") as <$BzFlathubCategory>) as <bool>) as <bool>; orientation: vertical; margin-top: 8; margin-bottom: 20; spacing: 10; styles [ "sp-section", "wlg", "card", ] Box gaming_padding_box { orientation: vertical; margin-start: 24; margin-end: 24; margin-top: 24; margin-bottom: 24; Box { orientation: vertical; spacing: 12; width-request: 285; margin-bottom: 12; valign: center; Image { icon-name: "we-love-games-symbolic"; can-target: false; pixel-size: 256; margin-bottom: 10; halign: center; styles [ "sp-section-image", ] } Label { label: _("We​ ♥​ Games"); halign: center; justify: center; wrap: true; wrap-mode: word_char; styles [ "sp-section-title", "title-1", ] } Label { label: _("Games and apps to run your favorite titles"); halign: center; justify: center; wrap: true; wrap-mode: word_char; } } Box game_section_toggles_box { halign: center; width-request: 800; margin-bottom: 20; margin-top: 8; Adw.ToggleGroup game_section_toggles { hexpand: true; halign: fill; homogeneous: true; styles [ "round", "huge" ] Adw.Toggle { label: _("Games"); name: "game"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "game") as <$BzFlathubCategory>) as <bool>) as <bool>; } Adw.Toggle { label: _("Emulators"); name: "emulators"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "emulators") as <$BzFlathubCategory>) as <bool>) as <bool>; } Adw.Toggle { label: _("Launchers"); name: "launchers"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "launchers") as <$BzFlathubCategory>) as <bool>) as <bool>; } Adw.Toggle { label: _("Tools"); name: "game-tools"; enabled: bind $invert_boolean($is_null($get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "game-tools") as <$BzFlathubCategory>) as <bool>) as <bool>; } } } Adw.ViewStack game_sections_stack { enable-transitions: true; transition-duration: 300; visible-child-name: bind game_section_toggles.active-name bidirectional; Adw.ViewStackPage { name: "game"; child: Box { orientation: vertical; $BzDynamicListView game_list { styles [ "flathub-page-section", ] hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; max-children-per-line: 4; model: SliceListModel game_slice { offset: 0; size: 12; model: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "game-only") as <$BzFlathubCategory>.applications; }; } Button { styles [ "pill", ] label: _("More Games"); halign: center; valign: center; margin-top: 12; margin-bottom: 12; clicked => $show_more_gaming_cb(template); } }; } Adw.ViewStackPage { name: "emulators"; child: $BzFlathubCategorySection emulators_section { has-title: false; category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "emulators") as <$BzFlathubCategory>; }; } Adw.ViewStackPage { name: "launchers"; child: $BzFlathubCategorySection launchers_section { has-title: false; category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "launchers") as <$BzFlathubCategory>; }; } Adw.ViewStackPage { name: "game-tools"; child: $BzFlathubCategorySection game_tools_section { has-title: false; category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "game-tools") as <$BzFlathubCategory>; }; } } } } $BzFlathubCategorySection section_development { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "development") as <$BzFlathubCategory>; } $BzFlathubCategorySection section_science { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "science") as <$BzFlathubCategory>; } $BzFlathubCuratedSection after_top_apps { visible: bind $invert_boolean($is_null(after_top_apps.selection as <$BzFlathubCuratedSelection>) as <bool>) as <bool>; selection: bind $get_curated_selection_by_slot(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.curated_selections, "after-top-apps") as <$BzFlathubCuratedSelection>; margin-bottom: 20; } $BzFlathubCategorySection section_system { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "system") as <$BzFlathubCategory>; } $BzFlathubCuratedSection after_first_category_block { visible: bind $invert_boolean($is_null(after_first_category_block.selection as <$BzFlathubCuratedSelection>) as <bool>) as <bool>; selection: bind $get_curated_selection_by_slot(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.curated_selections, "after-first-category-block") as <$BzFlathubCuratedSelection>; margin-bottom: 20; } $BzFlathubCategorySection section_utility { category: bind $get_category_by_name_cb(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories, "utility") as <$BzFlathubCategory>; } }; }; }; }; } }; Adw.Breakpoint { condition ("max-width: 1250sp") setters { otg_list.max-children-per-line: 2; otg_slice.size: 6; after_hero.max-length: 6; after_top_apps.max-length: 6; after_first_category_block.max-length: 6; } } Adw.Breakpoint { condition ("max-width: 700px") setters { offline_buttons.orientation: vertical; content_box.margin-start: 10; content_box.margin-end: 10; otg_padding_box.margin-start: 6; otg_padding_box.margin-end: 6; otg_padding_box.margin-bottom: 6; gaming_padding_box.margin-start: 6; gaming_padding_box.margin-end: 6; gaming_padding_box.margin-bottom: 6; section_toggles.homogeneous: false; game_section_toggles.homogeneous: false; section_trending.compact: true; section_popular.compact: true; section_recently_added.compact: true; section_recently_updated.compact: true; section_productivity.compact: true; section_graphics.compact: true; section_audiovideo.compact: true; section_education.compact: true; section_network.compact: true; section_development.compact: true; section_science.compact: true; section_system.compact: true; section_utility.compact: true; emulators_section.compact: true; launchers_section.compact: true; game_tools_section.compact: true; game_list.max-children-per-line: 2; game_slice.size: 6; otg_slice.size: 6; } } }; Adw.Breakpoint { condition ("max-width: 970sp") setters { section_toggles_box.width-request: -1; game_section_toggles_box.width-request: -1; otg_padding_box.orientation: vertical; otg_padding_box.spacing: 6; otg_title_box.halign: center; otg_title_box.width-request: -1; otg_title.justify: center; otg_subtitle.justify: center; otg_image.halign: center; otg_image.margin-top: 15; otg_image.margin-bottom: 5; otg_title.halign: center; otg_subtitle.halign: center; otg_more_button_bottom.visible: true; otg_more_button_top.visible: false; } } }; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-page.c�����������������������������������������������������0000664�0000000�0000000�00000023447�15240005042�0021253�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-page.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-app-tile.h" #include "bz-apps-page.h" #include "bz-dynamic-list-view.h" #include "bz-entry-group.h" #include "bz-featured-carousel.h" #include "bz-flathub-category-section.h" #include "bz-flathub-category.h" #include "bz-flathub-curated-section.h" #include "bz-flathub-curated-selection.h" #include "bz-flathub-page.h" #include "bz-section-view.h" struct _BzFlathubPage { AdwBin parent_instance; BzStateInfo *state; /* Template widgets */ AdwViewStack *stack; }; G_DEFINE_FINAL_TYPE (BzFlathubPage, bz_flathub_page, ADW_TYPE_BIN) enum { PROP_0, PROP_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_OPEN_SEARCH, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static BzFlathubCategory * get_category_by_name (GListModel *categories, const char *name); static void invalidating_state_changed (BzFlathubPage *self, GParamSpec *pspec, BzStateInfo *info); static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static void show_more_clicked (BzFlathubPage *self, GtkButton *button, const char *category_name); static void bz_flathub_page_dispose (GObject *object) { BzFlathubPage *self = BZ_FLATHUB_PAGE (object); if (self->state != NULL) g_signal_handlers_disconnect_by_func (self->state, invalidating_state_changed, self); g_clear_object (&self->state); G_OBJECT_CLASS (bz_flathub_page_parent_class)->dispose (object); } static void bz_flathub_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFlathubPage *self = BZ_FLATHUB_PAGE (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, bz_flathub_page_get_state (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFlathubPage *self = BZ_FLATHUB_PAGE (object); switch (prop_id) { case PROP_STATE: bz_flathub_page_set_state (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static BzFlathubCuratedSelection * get_curated_selection_by_slot (gpointer object, GListModel *selections, const char *slot) { if (selections == NULL) return NULL; for (guint i = 0; i < g_list_model_get_n_items (selections); i++) { g_autoptr (BzFlathubCuratedSelection) selection = NULL; const char *selection_slot = NULL; selection = g_list_model_get_item (selections, i); selection_slot = bz_flathub_curated_selection_get_slot (selection); if (g_strcmp0 (selection_slot, slot) == 0) return g_steal_pointer (&selection); } return NULL; } static void show_more_mobile_cb (BzFlathubPage *self, GtkButton *button) { show_more_clicked (self, button, "mobile"); } static void show_more_gaming_cb (BzFlathubPage *self, GtkButton *button) { show_more_clicked (self, button, "game"); } static BzFlathubCategory * get_category_by_name (GListModel *categories, const char *name) { guint n_items; guint i; if (categories == NULL) return NULL; n_items = g_list_model_get_n_items (categories); for (i = 0; i < n_items; i++) { g_autoptr (BzFlathubCategory) category = g_list_model_get_item (categories, i); const char *category_name; category_name = bz_flathub_category_get_name (category); if (g_strcmp0 (category_name, name) == 0) return g_object_ref (category); } return NULL; } static gpointer get_category_by_name_cb (gpointer object, gpointer categories_obj, const char *name) { return get_category_by_name (G_LIST_MODEL (categories_obj), name); } static void open_search_cb (BzFlathubPage *self, GtkButton *button) { g_signal_emit (self, signals[SIGNAL_OPEN_SEARCH], 0); } static void bz_flathub_page_class_init (BzFlathubPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_flathub_page_dispose; object_class->get_property = bz_flathub_page_get_property; object_class->set_property = bz_flathub_page_set_property; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_OPEN_SEARCH] = g_signal_new ( "open-search", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_type_ensure (BZ_TYPE_SECTION_VIEW); g_type_ensure (BZ_TYPE_FLATHUB_CATEGORY_SECTION); g_type_ensure (BZ_TYPE_FLATHUB_CATEGORY); g_type_ensure (BZ_TYPE_FLATHUB_CURATED_SECTION); g_type_ensure (BZ_TYPE_DYNAMIC_LIST_VIEW); g_type_ensure (BZ_TYPE_APP_TILE); g_type_ensure (BZ_TYPE_FEATURED_CAROUSEL); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-flathub-page.ui"); gtk_widget_class_bind_template_child (widget_class, BzFlathubPage, stack); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, get_curated_selection_by_slot); gtk_widget_class_bind_template_callback (widget_class, get_category_by_name_cb); gtk_widget_class_bind_template_callback (widget_class, show_more_mobile_cb); gtk_widget_class_bind_template_callback (widget_class, show_more_gaming_cb); gtk_widget_class_bind_template_callback (widget_class, open_search_cb); } static void bz_flathub_page_init (BzFlathubPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_flathub_page_new (void) { return g_object_new (BZ_TYPE_FLATHUB_PAGE, NULL); } void bz_flathub_page_set_state (BzFlathubPage *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_FLATHUB_PAGE (self)); g_return_if_fail (state == NULL || BZ_IS_STATE_INFO (state)); if (self->state != NULL) g_signal_handlers_disconnect_by_func (self->state, invalidating_state_changed, self); g_clear_object (&self->state); if (state != NULL) { self->state = g_object_ref (state); g_signal_connect_swapped ( state, "notify::flathub", G_CALLBACK (invalidating_state_changed), self); g_signal_connect_swapped ( state, "notify::has-flathub", G_CALLBACK (invalidating_state_changed), self); g_signal_connect_swapped ( state, "notify::online", G_CALLBACK (invalidating_state_changed), self); } invalidating_state_changed (self, NULL, state); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); } BzStateInfo * bz_flathub_page_get_state (BzFlathubPage *self) { g_return_val_if_fail (BZ_IS_FLATHUB_PAGE (self), NULL); return self->state; } static void show_more_clicked (BzFlathubPage *self, GtkButton *button, const char *category_name) { g_autoptr (BzFlathubCategory) category = NULL; GtkWidget *nav_view = NULL; AdwNavigationPage *apps_page = NULL; category = get_category_by_name ( bz_flathub_state_get_categories ( bz_state_info_get_flathub (self->state)), category_name); if (category == NULL) return; apps_page = bz_apps_page_new_from_category (category); nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); g_assert (nav_view != NULL); adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), apps_page); } static void invalidating_state_changed (BzFlathubPage *self, GParamSpec *pspec, BzStateInfo *info) { BzFlathubState *flathub = NULL; gboolean has_repo = FALSE; const char *page = NULL; if (self->state != NULL) { flathub = bz_state_info_get_flathub (self->state); has_repo = bz_state_info_get_has_flathub (self->state); } if (flathub != NULL && has_repo) page = "content"; else if (!has_repo) page = "empty"; else page = "offline"; adw_view_stack_set_visible_child_name (self->stack, page); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-page.h�����������������������������������������������������0000664�0000000�0000000�00000002257�15240005042�0021254�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-page.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_FLATHUB_PAGE (bz_flathub_page_get_type ()) G_DECLARE_FINAL_TYPE (BzFlathubPage, bz_flathub_page, BZ, FLATHUB_PAGE, AdwBin) GtkWidget * bz_flathub_page_new (void); void bz_flathub_page_set_state (BzFlathubPage *self, BzStateInfo *state); BzStateInfo * bz_flathub_page_get_state (BzFlathubPage *self); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-state.c����������������������������������������������������0000664�0000000�0000000�00000120322�15240005042�0021445�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-state.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::FLATHUB" #define COLLECTION_FETCH_SIZE 192 #define CATEGORY_FETCH_SIZE 48 #define QUALITY_MODERATION_PAGE_SIZE 300 #define KEYWORD_SEARCH_PAGE_SIZE 48 #define ADWAITA_URL "https://arewelibadwaitayet.com" #include <json-glib/json-glib.h> #include <libdex.h> #include "bz-flathub-category.h" #include "bz-flathub-curated-selection.h" #include "bz-flathub-state.h" #include "bz-serializable.h" #include "env.h" #include "global-net.h" #include "io.h" #include "util.h" struct _BzFlathubState { GObject parent_instance; char *for_day; BzApplicationMapFactory *map_factory; char *app_of_the_day; GtkStringList *apps_of_the_week; GListStore *categories; GListStore *curated_selections; DexFuture *initializing; }; typedef enum { QUALITY_MODE_NONE, QUALITY_MODE_FIRST, QUALITY_MODE_RANDOM } QualityMode; static void serializable_iface_init (BzSerializableInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzFlathubState, bz_flathub_state, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (BZ_TYPE_SERIALIZABLE, serializable_iface_init)) static GListModel *bz_flathub_state_dup_apps_of_the_day_week (BzFlathubState *self); enum { PROP_0, PROP_FOR_DAY, PROP_MAP_FACTORY, PROP_APP_OF_THE_DAY, PROP_APPS_OF_THE_WEEK, PROP_APPS_OF_THE_DAY_WEEK, PROP_CATEGORIES, PROP_CURATED_SELECTIONS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * initialize_fiber (GWeakRef *wr); static DexFuture * initialize_finally (DexFuture *future, GWeakRef *wr); static void notify_all (BzFlathubState *self); static void clear (BzFlathubState *self); static void bz_flathub_state_dispose (GObject *object) { BzFlathubState *self = BZ_FLATHUB_STATE (object); dex_clear (&self->initializing); g_clear_pointer (&self->map_factory, g_object_unref); clear (self); G_OBJECT_CLASS (bz_flathub_state_parent_class)->dispose (object); } static void bz_flathub_state_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFlathubState *self = BZ_FLATHUB_STATE (object); switch (prop_id) { case PROP_FOR_DAY: g_value_set_string (value, bz_flathub_state_get_for_day (self)); break; case PROP_MAP_FACTORY: g_value_set_object (value, bz_flathub_state_get_map_factory (self)); break; case PROP_APP_OF_THE_DAY: g_value_set_string (value, bz_flathub_state_get_app_of_the_day (self)); break; case PROP_APPS_OF_THE_WEEK: g_value_take_object (value, bz_flathub_state_dup_apps_of_the_week (self)); break; case PROP_APPS_OF_THE_DAY_WEEK: g_value_take_object (value, bz_flathub_state_dup_apps_of_the_day_week (self)); break; case PROP_CATEGORIES: g_value_set_object (value, bz_flathub_state_get_categories (self)); break; case PROP_CURATED_SELECTIONS: g_value_set_object (value, bz_flathub_state_get_curated_selections (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_state_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFlathubState *self = BZ_FLATHUB_STATE (object); switch (prop_id) { case PROP_FOR_DAY: dex_future_disown (bz_flathub_state_set_for_day (self, g_value_get_string (value))); break; case PROP_MAP_FACTORY: bz_flathub_state_set_map_factory (self, g_value_get_object (value)); break; case PROP_APP_OF_THE_DAY: case PROP_APPS_OF_THE_WEEK: case PROP_APPS_OF_THE_DAY_WEEK: case PROP_CATEGORIES: case PROP_CURATED_SELECTIONS: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flathub_state_class_init (BzFlathubStateClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_flathub_state_set_property; object_class->get_property = bz_flathub_state_get_property; object_class->dispose = bz_flathub_state_dispose; props[PROP_FOR_DAY] = g_param_spec_string ( "for-day", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_MAP_FACTORY] = g_param_spec_object ( "map-factory", NULL, NULL, BZ_TYPE_APPLICATION_MAP_FACTORY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_APP_OF_THE_DAY] = g_param_spec_string ( "app-of-the-day", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_APPS_OF_THE_WEEK] = g_param_spec_object ( "apps-of-the-week", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_APPS_OF_THE_DAY_WEEK] = g_param_spec_object ( "apps-of-the-day-week", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_CATEGORIES] = g_param_spec_object ( "categories", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_CURATED_SELECTIONS] = g_param_spec_object ( "curated-selections", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_flathub_state_init (BzFlathubState *self) { } static void bz_flathub_state_real_serialize (BzSerializable *serializable, GVariantBuilder *builder) { BzFlathubState *self = BZ_FLATHUB_STATE (serializable); if (self->initializing != NULL && dex_future_is_pending (self->initializing)) return; if (self->for_day != NULL) g_variant_builder_add (builder, "{sv}", "for-day", g_variant_new_string (self->for_day)); if (self->app_of_the_day != NULL) g_variant_builder_add (builder, "{sv}", "app-of-the-day", g_variant_new_string (self->app_of_the_day)); if (self->apps_of_the_week != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (G_LIST_MODEL (self->apps_of_the_week)); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint i = 0; i < n_items; i++) { const char *string = NULL; string = gtk_string_list_get_string (self->apps_of_the_week, i); g_variant_builder_add (sub_builder, "s", string); } g_variant_builder_add (builder, "{sv}", "apps-of-the-week", g_variant_builder_end (sub_builder)); } } if (self->categories != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (G_LIST_MODEL (self->categories)); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("av")); for (guint i = 0; i < n_items; i++) { g_autoptr (BzFlathubCategory) category = NULL; g_autoptr (GVariantBuilder) category_builder = NULL; category = g_list_model_get_item (G_LIST_MODEL (self->categories), i); category_builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT); bz_serializable_serialize (BZ_SERIALIZABLE (category), category_builder); g_variant_builder_add (sub_builder, "v", g_variant_builder_end (category_builder)); } g_variant_builder_add (builder, "{sv}", "categories", g_variant_builder_end (sub_builder)); } } if (self->curated_selections != NULL) { guint n_items = 0; n_items = g_list_model_get_n_items (G_LIST_MODEL (self->curated_selections)); if (n_items > 0) { g_autoptr (GVariantBuilder) sub_builder = NULL; sub_builder = g_variant_builder_new (G_VARIANT_TYPE ("av")); for (guint i = 0; i < n_items; i++) { g_autoptr (BzFlathubCuratedSelection) selection = NULL; g_autoptr (GVariantBuilder) selection_builder = NULL; const char *theme_key = NULL; const char *slot = NULL; GtkStringList *apps = NULL; selection = g_list_model_get_item (G_LIST_MODEL (self->curated_selections), i); theme_key = bz_flathub_curated_selection_get_theme_key (selection); slot = bz_flathub_curated_selection_get_slot (selection); apps = bz_flathub_curated_selection_get_apps (selection); selection_builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT); if (theme_key != NULL) g_variant_builder_add (selection_builder, "{sv}", "theme-key", g_variant_new_string (theme_key)); if (slot != NULL) g_variant_builder_add (selection_builder, "{sv}", "slot", g_variant_new_string (slot)); if (apps != NULL) { guint n_apps = 0; n_apps = g_list_model_get_n_items (G_LIST_MODEL (apps)); if (n_apps > 0) { g_autoptr (GVariantBuilder) apps_builder = NULL; apps_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); for (guint j = 0; j < n_apps; j++) { const char *app_id = NULL; app_id = gtk_string_list_get_string (apps, j); g_variant_builder_add (apps_builder, "s", app_id); } g_variant_builder_add (selection_builder, "{sv}", "apps", g_variant_builder_end (apps_builder)); } } g_variant_builder_add (sub_builder, "v", g_variant_builder_end (selection_builder)); } g_variant_builder_add (builder, "{sv}", "curated-selections", g_variant_builder_end (sub_builder)); } } } static gboolean bz_flathub_state_real_deserialize (BzSerializable *serializable, GVariant *import, GError **error) { BzFlathubState *self = BZ_FLATHUB_STATE (serializable); gboolean result = FALSE; g_autoptr (GVariantIter) iter = NULL; if (self->initializing != NULL && !dex_future_is_pending (self->initializing)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_BUSY, "Cannot perform serialization operations while initializing!"); return FALSE; } clear (self); iter = g_variant_iter_new (import); for (;;) { g_autofree char *key = NULL; g_autoptr (GVariant) value = NULL; /* TODO automate this, this is awful */ if (!g_variant_iter_next (iter, "{sv}", &key, &value)) break; if (g_strcmp0 (key, "for-day") == 0) self->for_day = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "app-of-the-day") == 0) self->app_of_the_day = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "apps-of-the-week") == 0) { g_autoptr (GtkStringList) list = NULL; g_autoptr (GVariantIter) list_iter = NULL; list = gtk_string_list_new (NULL); list_iter = g_variant_iter_new (value); for (;;) { g_autofree char *id = NULL; if (!g_variant_iter_next (list_iter, "s", &id)) break; gtk_string_list_append (list, id); } self->apps_of_the_week = g_steal_pointer (&list); } else if (g_strcmp0 (key, "categories") == 0) { g_autoptr (GListStore) categories = NULL; g_autoptr (GVariantIter) categories_iter = NULL; categories = g_list_store_new (BZ_TYPE_FLATHUB_CATEGORY); categories_iter = g_variant_iter_new (value); for (;;) { g_autoptr (GVariant) category_import = NULL; g_autoptr (BzFlathubCategory) category = NULL; if (!g_variant_iter_next (categories_iter, "v", &category_import)) break; category = bz_flathub_category_new (); result = bz_serializable_deserialize ( BZ_SERIALIZABLE (category), category_import, error); if (!result) return FALSE; g_object_bind_property (self, "map-factory", category, "map-factory", G_BINDING_SYNC_CREATE); g_list_store_append (categories, category); } self->categories = g_steal_pointer (&categories); } else if (g_strcmp0 (key, "curated-selections") == 0) { g_autoptr (GListStore) curated_selections = NULL; g_autoptr (GVariantIter) curated_selections_iter = NULL; curated_selections = g_list_store_new (BZ_TYPE_FLATHUB_CURATED_SELECTION); curated_selections_iter = g_variant_iter_new (value); for (;;) { g_autoptr (GVariant) selection_import = NULL; g_autoptr (BzFlathubCuratedSelection) selection = NULL; g_autoptr (GVariantIter) selection_iter = NULL; g_autoptr (GtkStringList) apps = NULL; g_autofree char *theme_key = NULL; g_autofree char *slot = NULL; if (!g_variant_iter_next (curated_selections_iter, "v", &selection_import)) break; selection_iter = g_variant_iter_new (selection_import); for (;;) { g_autofree char *sel_key = NULL; g_autoptr (GVariant) sel_val = NULL; if (!g_variant_iter_next (selection_iter, "{sv}", &sel_key, &sel_val)) break; if (g_strcmp0 (sel_key, "theme-key") == 0) theme_key = g_variant_dup_string (sel_val, NULL); else if (g_strcmp0 (sel_key, "slot") == 0) slot = g_variant_dup_string (sel_val, NULL); else if (g_strcmp0 (sel_key, "apps") == 0) { g_autoptr (GVariantIter) apps_iter = NULL; apps = gtk_string_list_new (NULL); apps_iter = g_variant_iter_new (sel_val); for (;;) { g_autofree char *app_id = NULL; if (!g_variant_iter_next (apps_iter, "s", &app_id)) break; gtk_string_list_append (apps, app_id); } } } selection = bz_flathub_curated_selection_new (); if (theme_key != NULL) bz_flathub_curated_selection_set_theme_key (selection, theme_key); if (slot != NULL) bz_flathub_curated_selection_set_slot (selection, slot); if (apps != NULL) bz_flathub_curated_selection_set_apps (selection, apps); g_object_bind_property (self, "map-factory", selection, "map-factory", G_BINDING_SYNC_CREATE); g_list_store_append (curated_selections, selection); } self->curated_selections = g_steal_pointer (&curated_selections); } } notify_all (self); return TRUE; } static void serializable_iface_init (BzSerializableInterface *iface) { iface->serialize = bz_flathub_state_real_serialize; iface->deserialize = bz_flathub_state_real_deserialize; } BzFlathubState * bz_flathub_state_new (void) { return g_object_new (BZ_TYPE_FLATHUB_STATE, NULL); } const char * bz_flathub_state_get_for_day (BzFlathubState *self) { g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); return self->for_day; } BzApplicationMapFactory * bz_flathub_state_get_map_factory (BzFlathubState *self) { g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); return self->map_factory; } const char * bz_flathub_state_get_app_of_the_day (BzFlathubState *self) { g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); if (self->initializing != NULL && dex_future_is_pending (self->initializing)) return NULL; return self->app_of_the_day; } BzEntryGroup * bz_flathub_state_dup_app_of_the_day_group (BzFlathubState *self) { g_autoptr (GtkStringObject) string = NULL; g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); if (self->initializing != NULL && dex_future_is_pending (self->initializing)) return NULL; g_return_val_if_fail (self->map_factory != NULL, NULL); string = gtk_string_object_new (self->app_of_the_day); return bz_application_map_factory_convert_one (self->map_factory, string); } GListModel * bz_flathub_state_dup_apps_of_the_week (BzFlathubState *self) { g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); if (self->initializing != NULL && dex_future_is_pending (self->initializing)) return NULL; if (self->apps_of_the_week != NULL) { if (self->map_factory != NULL) return bz_application_map_factory_generate ( self->map_factory, G_LIST_MODEL (self->apps_of_the_week)); else return G_LIST_MODEL (g_object_ref (self->apps_of_the_week)); } else return NULL; } GListModel * bz_flathub_state_dup_apps_of_the_day_week (BzFlathubState *self) { g_autoptr (GtkStringList) combined_list = NULL; g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); if (self->initializing != NULL && dex_future_is_pending (self->initializing)) return NULL; combined_list = gtk_string_list_new (NULL); if (self->app_of_the_day != NULL) gtk_string_list_append (combined_list, self->app_of_the_day); if (self->apps_of_the_week != NULL) { guint n_items = g_list_model_get_n_items (G_LIST_MODEL (self->apps_of_the_week)); for (guint i = 0; i < n_items; i++) { const char *app_id = gtk_string_list_get_string (self->apps_of_the_week, i); gtk_string_list_append (combined_list, app_id); } } if (self->map_factory != NULL) return bz_application_map_factory_generate (self->map_factory, G_LIST_MODEL (combined_list)); else return G_LIST_MODEL (g_object_ref (combined_list)); } GListModel * bz_flathub_state_get_categories (BzFlathubState *self) { g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); if (self->initializing != NULL && dex_future_is_pending (self->initializing)) return NULL; return G_LIST_MODEL (self->categories); } GListModel * bz_flathub_state_get_curated_selections (BzFlathubState *self) { g_return_val_if_fail (BZ_IS_FLATHUB_STATE (self), NULL); if (self->initializing != NULL && dex_future_is_pending (self->initializing)) return NULL; return G_LIST_MODEL (self->curated_selections); } DexFuture * bz_flathub_state_set_for_day (BzFlathubState *self, const char *for_day) { dex_return_error_if_fail (BZ_IS_FLATHUB_STATE (self)); dex_clear (&self->initializing); clear (self); if (for_day != NULL) { g_autoptr (DexFuture) future = NULL; self->for_day = g_strdup (for_day); self->apps_of_the_week = gtk_string_list_new (NULL); self->categories = g_list_store_new (BZ_TYPE_FLATHUB_CATEGORY); self->curated_selections = g_list_store_new (BZ_TYPE_FLATHUB_CURATED_SELECTION); future = dex_scheduler_spawn ( bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) initialize_fiber, bz_track_weak (self), bz_weak_release); future = dex_future_finally ( future, (DexFutureCallback) initialize_finally, bz_track_weak (self), bz_weak_release); self->initializing = g_steal_pointer (&future); return dex_ref (self->initializing); } else { notify_all (self); return dex_future_new_false (); } } DexFuture * bz_flathub_state_update_to_today (BzFlathubState *self) { g_autoptr (GDateTime) datetime = NULL; g_autofree gchar *for_day = NULL; dex_return_error_if_fail (BZ_IS_FLATHUB_STATE (self)); datetime = g_date_time_new_now_utc (); for_day = g_date_time_format (datetime, "%F"); g_debug ("Syncing with flathub for day: %s", for_day); return bz_flathub_state_set_for_day (self, for_day); } void bz_flathub_state_set_map_factory (BzFlathubState *self, BzApplicationMapFactory *map_factory) { g_return_if_fail (BZ_IS_FLATHUB_STATE (self)); g_return_if_fail (map_factory == NULL || BZ_IS_APPLICATION_MAP_FACTORY (map_factory)); g_clear_object (&self->map_factory); if (map_factory != NULL) self->map_factory = g_object_ref (map_factory); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MAP_FACTORY]); } static gboolean is_kde_plasma (void) { const char *desktop = g_getenv ("XDG_CURRENT_DESKTOP"); if (desktop == NULL) return FALSE; return g_str_equal (desktop, "KDE") || g_strstr_len (desktop, -1, "KDE") != NULL; } static void add_category (BzFlathubState *self, const char *name, JsonNode *node, GHashTable *quality_set, gboolean is_json_object, QualityMode quality_mode, gboolean is_spotlight) { JsonObject *object = NULL; JsonObjectIter iter = { 0 }; JsonArray *hits_array = NULL; const char *key = NULL; const char *app = NULL; g_autoptr (BzFlathubCategory) category = NULL; g_autoptr (GtkStringList) store = NULL; g_autoptr (GtkStringList) quality_store = NULL; g_autoptr (GPtrArray) quality_apps = NULL; guint app_count = 0; guint quality_count = 0; guint random_index = 0; guint i = 0; int total_entries = 0; category = bz_flathub_category_new (); store = gtk_string_list_new (NULL); quality_store = gtk_string_list_new (NULL); bz_flathub_category_set_name (category, name); bz_flathub_category_set_is_spotlight (category, is_spotlight); bz_flathub_category_set_applications (category, G_LIST_MODEL (store)); object = json_node_get_object (node); if (is_json_object) { if (quality_mode == QUALITY_MODE_RANDOM) quality_apps = g_ptr_array_new_with_free_func (g_free); json_object_iter_init (&iter, object); while (json_object_iter_next (&iter, &key, NULL)) { gtk_string_list_append (store, key); if (g_hash_table_contains (quality_set, key)) { if (quality_mode == QUALITY_MODE_RANDOM) g_ptr_array_add (quality_apps, g_strdup (key)); else if (quality_mode == QUALITY_MODE_FIRST) gtk_string_list_append (quality_store, key); } app_count++; } total_entries = json_object_get_size (object); } else { if (quality_mode == QUALITY_MODE_RANDOM) quality_apps = g_ptr_array_new_with_free_func (g_free); hits_array = json_object_get_array_member (object, "hits"); app_count = json_array_get_length (hits_array); for (i = 0; i < app_count; i++) { JsonObject *element = NULL; const char *app_id = NULL; element = json_array_get_object_element (hits_array, i); app_id = json_object_get_string_member (element, "app_id"); gtk_string_list_append (store, app_id); if (g_hash_table_contains (quality_set, app_id)) { if (quality_mode == QUALITY_MODE_RANDOM) g_ptr_array_add (quality_apps, g_strdup (app_id)); else if (quality_mode == QUALITY_MODE_FIRST) gtk_string_list_append (quality_store, app_id); } } total_entries = json_object_get_int_member (object, "totalHits"); } if (quality_mode == QUALITY_MODE_RANDOM && quality_apps != NULL) { quality_count = MIN (7, quality_apps->len); for (i = 0; i < quality_count; i++) { random_index = g_random_int_range (0, quality_apps->len); app = g_ptr_array_index (quality_apps, random_index); gtk_string_list_append (quality_store, app); g_ptr_array_remove_index_fast (quality_apps, random_index); } } bz_flathub_category_set_total_entries (category, total_entries); bz_flathub_category_set_quality_applications (category, G_LIST_MODEL (quality_store)); g_list_store_append (self->categories, category); } static void add_curated_selection (BzFlathubState *self, JsonObject *object) { g_autoptr (BzFlathubCuratedSelection) selection = NULL; g_autoptr (GtkStringList) apps = NULL; JsonArray *apps_array = NULL; guint length = 0; selection = bz_flathub_curated_selection_new (); apps = gtk_string_list_new (NULL); bz_flathub_curated_selection_set_theme_key (selection, json_object_get_string_member (object, "theme_key")); bz_flathub_curated_selection_set_slot (selection, json_object_get_string_member (object, "slot")); apps_array = json_object_get_array_member (object, "apps"); length = apps_array != NULL ? json_array_get_length (apps_array) : 0; for (guint i = 0; i < length; i++) { JsonObject *element = NULL; const char *app_id = NULL; element = json_array_get_object_element (apps_array, i); app_id = json_object_get_string_member (element, "app_id"); gtk_string_list_append (apps, app_id); } bz_flathub_curated_selection_set_apps (selection, apps); g_list_store_append (self->curated_selections, selection); } static DexFuture * initialize_fiber (GWeakRef *wr) { g_autoptr (BzFlathubState) self = NULL; g_autoptr (GError) local_error = NULL; gboolean result = FALSE; gboolean is_kde = is_kde_plasma (); g_autoptr (GHashTable) quality_set = NULL; g_autoptr (DexFuture) aotd_f = NULL; g_autoptr (DexFuture) aotw_f = NULL; g_autoptr (DexFuture) curated_f = NULL; g_autoptr (DexFuture) categories_f = NULL; g_autoptr (DexFuture) updated_f = NULL; g_autoptr (DexFuture) added_f = NULL; g_autoptr (DexFuture) popular_f = NULL; g_autoptr (DexFuture) trending_f = NULL; g_autoptr (DexFuture) mobile_f = NULL; g_autoptr (DexFuture) passing_f = NULL; g_autoptr (DexFuture) adwaita_f = NULL; g_autoptr (DexFuture) toolkit_f = NULL; g_autoptr (DexFuture) emulators_f = NULL; g_autoptr (DexFuture) launchers_f = NULL; g_autoptr (DexFuture) game_tools_f = NULL; g_autoptr (DexFuture) game_only_f = NULL; bz_weak_get_or_return_reject (self, wr); quality_set = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); #define ADD_REQUEST(_var, ...) \ G_STMT_START \ { \ g_autofree char *_request = NULL; \ \ _request = g_strdup_printf (__VA_ARGS__); \ (_var) = bz_query_flathub_v2_json_take (g_steal_pointer (&_request)); \ if (!dex_await (dex_ref ((_var)), &local_error)) \ { \ g_warning ("Failed to complete request to flathub: %s", local_error->message); \ return dex_future_new_for_error (g_steal_pointer (&local_error)); \ } \ } \ G_STMT_END if (is_kde) ADD_REQUEST (toolkit_f, "/collection/developer/kde?locale=en"); else { adwaita_f = bz_https_query_json (ADWAITA_URL "/api/apps"); if (!dex_await (dex_ref (adwaita_f), &local_error)) { g_warning ("Failed to complete request to arewelibadwaitayet: %s", local_error->message); g_clear_error (&local_error); adwaita_f = NULL; } } ADD_REQUEST (passing_f, "/quality-moderation/passing-apps?page=1&page_size=%d", QUALITY_MODERATION_PAGE_SIZE); ADD_REQUEST (aotd_f, "/app-picks/app-of-the-day/%s", self->for_day); ADD_REQUEST (aotw_f, "/app-picks/apps-of-the-week/%s", self->for_day); ADD_REQUEST (curated_f, "/app-picks/curated-app-selections/%s", self->for_day); ADD_REQUEST (categories_f, "/collection/category"); ADD_REQUEST (updated_f, "/collection/recently-updated?page=0&per_page=%d", COLLECTION_FETCH_SIZE); ADD_REQUEST (added_f, "/collection/recently-added?page=0&per_page=%d", COLLECTION_FETCH_SIZE); ADD_REQUEST (popular_f, "/collection/popular?page=0&per_page=%d", COLLECTION_FETCH_SIZE); ADD_REQUEST (trending_f, "/collection/trending?page=0&per_page=%d", COLLECTION_FETCH_SIZE); ADD_REQUEST (mobile_f, "/collection/mobile?page=0&per_page=%d", CATEGORY_FETCH_SIZE); ADD_REQUEST (game_only_f, "/collection/category/game?exclude_subcategories=emulator&exclude_subcategories=packageManager&exclude_subcategories=utility&exclude_subcategories=network&exclude_subcategories=gameTool&exclude_subcategories=launcherStore&sort_by=trending&page=0&per_page=%d", CATEGORY_FETCH_SIZE); ADD_REQUEST (emulators_f, "/collection/category/game/subcategories?subcategory=emulator&sort_by=trending&page=0&per_page=%d", CATEGORY_FETCH_SIZE); ADD_REQUEST (launchers_f, "/collection/category/game/subcategories?subcategory=packageManager&subcategory=launcherStore&sort_by=trending&page=0&per_page=%d", CATEGORY_FETCH_SIZE); ADD_REQUEST (game_tools_f, "/collection/category/game/subcategories?subcategory=utility&subcategory=network&subcategory=gameTool&sort_by=trending&page=0&per_page=%d", CATEGORY_FETCH_SIZE); #undef ADD_REQUEST #define GET_BOXED(_future) g_value_get_boxed (dex_future_get_value ((_future), NULL)) { JsonObject *object = NULL; JsonArray *array = NULL; guint length = 0; object = json_node_get_object (GET_BOXED (passing_f)); array = json_object_get_array_member (object, "apps"); length = json_array_get_length (array); for (guint i = 0; i < length; i++) { const char *app_id = NULL; app_id = json_array_get_string_element (array, i); g_hash_table_replace (quality_set, g_strdup (app_id), NULL); } } { JsonObject *object = NULL; object = json_node_get_object (GET_BOXED (aotd_f)); self->app_of_the_day = g_strdup (json_object_get_string_member (object, "app_id")); } { JsonObject *root = NULL; JsonArray *array = NULL; guint length = 0; root = json_node_get_object (GET_BOXED (curated_f)); array = json_object_get_array_member (root, "selections"); length = json_array_get_length (array); for (guint i = 0; i < length; i++) add_curated_selection (self, json_array_get_object_element (array, i)); } { JsonObject *object = NULL; JsonArray *array = NULL; guint length = 0; object = json_node_get_object (GET_BOXED (aotw_f)); array = json_object_get_array_member (object, "apps"); length = json_array_get_length (array); for (guint i = 0; i < length; i++) { JsonObject *element = NULL; element = json_array_get_object_element (array, i); gtk_string_list_append ( self->apps_of_the_week, json_object_get_string_member (element, "app_id")); } } add_category (self, "trending", GET_BOXED (trending_f), quality_set, FALSE, QUALITY_MODE_NONE, TRUE); add_category (self, "popular", GET_BOXED (popular_f), quality_set, FALSE, QUALITY_MODE_NONE, TRUE); add_category (self, "recently-added", GET_BOXED (added_f), quality_set, FALSE, QUALITY_MODE_NONE, TRUE); add_category (self, "recently-updated", GET_BOXED (updated_f), quality_set, FALSE, QUALITY_MODE_NONE, TRUE); add_category (self, "mobile", GET_BOXED (mobile_f), quality_set, FALSE, QUALITY_MODE_NONE, TRUE); add_category (self, "game-only", GET_BOXED (game_only_f), quality_set, FALSE, QUALITY_MODE_NONE, FALSE); add_category (self, "emulators", GET_BOXED (emulators_f), quality_set, FALSE, QUALITY_MODE_NONE, FALSE); add_category (self, "launchers", GET_BOXED (launchers_f), quality_set, FALSE, QUALITY_MODE_NONE, FALSE); add_category (self, "game-tools", GET_BOXED (game_tools_f), quality_set, FALSE, QUALITY_MODE_NONE, FALSE); { static const char *categories[] = { "audiovideo", "development", "education", "game", "graphics", "network", "office", "science", "system", "utility" }; g_autoptr (GPtrArray) category_futures = NULL; category_futures = g_ptr_array_new_with_free_func (dex_unref); for (guint i = 0; i < G_N_ELEMENTS (categories); i++) { g_autofree char *request = NULL; g_autoptr (DexFuture) future = NULL; request = g_strdup_printf ( "/collection/category/%s?page=0&per_page=%d", categories[i], CATEGORY_FETCH_SIZE); future = bz_query_flathub_v2_json_take (g_steal_pointer (&request)); result = dex_await (dex_ref (future), &local_error); if (!result) { g_warning ("Failed to complete request to flathub: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } g_ptr_array_add (category_futures, dex_ref (future)); } for (guint i = 0; i < G_N_ELEMENTS (categories); i++) { DexFuture *future = NULL; JsonNode *node = NULL; future = g_ptr_array_index (category_futures, i); node = GET_BOXED (future); add_category (self, categories[i], node, quality_set, FALSE, QUALITY_MODE_FIRST, FALSE); } } if (is_kde) add_category (self, "kde", GET_BOXED (toolkit_f), quality_set, FALSE, QUALITY_MODE_RANDOM, FALSE); else if (adwaita_f != NULL) add_category (self, "adwaita", GET_BOXED (adwaita_f), quality_set, TRUE, QUALITY_MODE_RANDOM, FALSE); return dex_future_new_true (); } static DexFuture * initialize_finally (DexFuture *future, GWeakRef *wr) { g_autoptr (BzFlathubState) self = NULL; bz_weak_get_or_return_reject (self, wr); if (dex_future_is_resolved (future)) { guint n_categories = 0; guint n_selections = 0; n_categories = g_list_model_get_n_items (G_LIST_MODEL (self->categories)); for (guint i = 0; i < n_categories; i++) { g_autoptr (BzFlathubCategory) category = NULL; category = g_list_model_get_item (G_LIST_MODEL (self->categories), i); g_object_bind_property (self, "map-factory", category, "map-factory", G_BINDING_SYNC_CREATE); } n_selections = g_list_model_get_n_items (G_LIST_MODEL (self->curated_selections)); for (guint i = 0; i < n_selections; i++) { g_autoptr (BzFlathubCuratedSelection) selection = NULL; selection = g_list_model_get_item (G_LIST_MODEL (self->curated_selections), i); g_object_bind_property (self, "map-factory", selection, "map-factory", G_BINDING_SYNC_CREATE); } g_debug ("Done syncing flathub state; notifying property listeners..."); notify_all (self); } else clear (self); return dex_ref (future); } static DexFuture * search_collection_fiber (char *route) { g_autoptr (GError) local_error = NULL; g_autoptr (GtkStringList) results = NULL; g_autoptr (JsonNode) node = NULL; g_autofree char *request = NULL; JsonObject *object = NULL; JsonArray *array = NULL; guint length = 0; request = g_strdup_printf ("%s&page=1&per_page=%d&locale=en", route, KEYWORD_SEARCH_PAGE_SIZE); node = dex_await_boxed ( bz_query_flathub_v2_json_take ( g_steal_pointer (&request)), &local_error); if (node == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); results = gtk_string_list_new (NULL); object = json_node_get_object (node); array = json_object_get_array_member (object, "hits"); length = json_array_get_length (array); for (guint i = 0; i < length; i++) { JsonObject *element = NULL; const char *app_id = NULL; element = json_array_get_object_element (array, i); app_id = json_object_get_string_member (element, "app_id"); gtk_string_list_append (results, app_id); } return dex_future_new_take_object (g_steal_pointer (&results)); } static DexFuture * search_collection_finally (DexFuture *future, GWeakRef *wr) { g_autoptr (BzFlathubState) self = NULL; const GValue *value = NULL; GListModel *model = NULL; bz_weak_get_or_return_reject (self, wr); value = dex_future_get_value (future, NULL); if (value == NULL) return dex_ref (future); model = g_value_get_object (value); if (self->map_factory != NULL) return dex_future_new_take_object ( bz_application_map_factory_generate (self->map_factory, model)); return dex_ref (future); } DexFuture * bz_flathub_state_search_collection (BzFlathubState *self, const char *route) { g_autoptr (DexFuture) future = NULL; dex_return_error_if_fail (BZ_IS_FLATHUB_STATE (self)); dex_return_error_if_fail (route != NULL); future = dex_scheduler_spawn ( bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) search_collection_fiber, g_strdup (route), g_free); future = dex_future_finally ( future, (DexFutureCallback) search_collection_finally, bz_track_weak (self), bz_weak_release); return g_steal_pointer (&future); } static void notify_all (BzFlathubState *self) { g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FOR_DAY]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APP_OF_THE_DAY]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPS_OF_THE_WEEK]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPS_OF_THE_DAY_WEEK]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CATEGORIES]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURATED_SELECTIONS]); } static void clear (BzFlathubState *self) { g_clear_pointer (&self->for_day, g_free); g_clear_pointer (&self->app_of_the_day, g_free); g_clear_pointer (&self->apps_of_the_week, g_object_unref); g_clear_pointer (&self->categories, g_object_unref); g_clear_pointer (&self->curated_selections, g_object_unref); } /* End of bz-flathub-state.c */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-state.h����������������������������������������������������0000664�0000000�0000000�00000004217�15240005042�0021456�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flathub-state.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "bz-application-map-factory.h" #include "bz-entry-group.h" G_BEGIN_DECLS #define BZ_TYPE_FLATHUB_STATE (bz_flathub_state_get_type ()) G_DECLARE_FINAL_TYPE (BzFlathubState, bz_flathub_state, BZ, FLATHUB_STATE, GObject) BzFlathubState * bz_flathub_state_new (void); DexFuture * bz_flathub_state_set_for_day (BzFlathubState *self, const char *for_day); void bz_flathub_state_set_map_factory (BzFlathubState *self, BzApplicationMapFactory *map_factory); const char * bz_flathub_state_get_for_day (BzFlathubState *self); BzApplicationMapFactory * bz_flathub_state_get_map_factory (BzFlathubState *self); const char * bz_flathub_state_get_app_of_the_day (BzFlathubState *self); BzEntryGroup * bz_flathub_state_dup_app_of_the_day_group (BzFlathubState *self); GListModel * bz_flathub_state_dup_apps_of_the_week (BzFlathubState *self); GListModel * bz_flathub_state_get_categories (BzFlathubState *self); GListModel * bz_flathub_state_get_curated_selections (BzFlathubState *self); gboolean bz_flathub_state_get_has_connection_error (BzFlathubState *self); DexFuture * bz_flathub_state_update_to_today (BzFlathubState *self); DexFuture * bz_flathub_state_search_collection (BzFlathubState *self, const char *route); G_END_DECLS /* End of bz-flathub-state.h */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flathub-sub-category.txt�������������������������������������������0000664�0000000�0000000�00000000244�15240005042�0023326�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=flathub_sub_category parent-prefix=g parent-name=object author=AUTOGEN property=name char G_TYPE_STRING string property=id char G_TYPE_STRING string ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flatpak-bundle-result.txt������������������������������������������0000664�0000000�0000000�00000000414�15240005042�0023503�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=flatpak_bundle_result parent-prefix=g parent-name=object author=AUTOGEN include="bz-flatpak-entry.h" include="bz-flatpak-repo.h" property=entry BzFlatpakEntry BZ_TYPE_FLATPAK_ENTRY object property=runtime_repo BzFlatpakRepo BZ_TYPE_FLATPAK_REPO object ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flatpak-entry.c����������������������������������������������������0000664�0000000�0000000�00000066571�15240005042�0021502�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flatpak-entry.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::FLATPAK-ENTRY" #define BAZAAR_MODULE "entry" #include "config.h" #include <glib/gi18n.h> #include <xmlb.h> #include "bz-app-permissions.h" #include "bz-application-map-factory.h" #include "bz-application.h" #include "bz-appstream-parser.h" #include "bz-flatpak-private.h" #include "io.h" #include "bz-result.h" #include "bz-serializable.h" #include "bz-state-info.h" #define VERSION_SUFFIX_REGEX "\\s+[0-9][0-9.]*\\s*$" struct _BzFlatpakEntry { BzEntry parent_instance; gboolean user; gboolean is_bundle; gboolean is_installed_ref; char *flatpak_name; char *flatpak_id; char *flatpak_version; char *application_name; char *application_runtime; char *application_command; char *runtime_name; char *addon_extension_of_ref; char *bundle_path; BzResult *runtime_result; FlatpakRef *ref; }; static void serializable_iface_init (BzSerializableInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzFlatpakEntry, bz_flatpak_entry, BZ_TYPE_ENTRY, G_IMPLEMENT_INTERFACE (BZ_TYPE_SERIALIZABLE, serializable_iface_init)) enum { PROP_0, PROP_USER, PROP_FLATPAK_NAME, PROP_IS_BUNDLE, PROP_BUNDLE_PATH, PROP_FLATPAK_ID, PROP_FLATPAK_VERSION, PROP_APPLICATION_NAME, PROP_APPLICATION_RUNTIME, PROP_APPLICATION_COMMAND, PROP_RUNTIME_NAME, PROP_RUNTIME_RESULT, PROP_ADDON_OF_REF, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void clear_entry (BzFlatpakEntry *self); static void apply_icon_theme (BzFlatpakEntry *self); static void bz_flatpak_entry_dispose (GObject *object) { BzFlatpakEntry *self = BZ_FLATPAK_ENTRY (object); clear_entry (self); g_clear_object (&self->ref); G_OBJECT_CLASS (bz_flatpak_entry_parent_class)->dispose (object); } static void bz_flatpak_entry_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFlatpakEntry *self = BZ_FLATPAK_ENTRY (object); switch (prop_id) { case PROP_USER: g_value_set_boolean (value, self->user); break; case PROP_FLATPAK_ID: g_value_set_string (value, self->flatpak_id); break; case PROP_FLATPAK_NAME: g_value_set_string (value, self->flatpak_name); break; case PROP_FLATPAK_VERSION: g_value_set_string (value, self->flatpak_version); break; case PROP_APPLICATION_NAME: g_value_set_string (value, self->application_name); break; case PROP_IS_BUNDLE: g_value_set_boolean (value, self->is_bundle); break; case PROP_BUNDLE_PATH: g_value_set_string (value, self->bundle_path); break; case PROP_APPLICATION_RUNTIME: g_value_set_string (value, self->application_runtime); break; case PROP_APPLICATION_COMMAND: g_value_set_string (value, self->application_command); break; case PROP_RUNTIME_NAME: g_value_set_string (value, self->runtime_name); break; case PROP_RUNTIME_RESULT: g_value_take_object (value, bz_flatpak_entry_dup_runtime_result (self)); break; case PROP_ADDON_OF_REF: g_value_set_string (value, self->addon_extension_of_ref); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flatpak_entry_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { // BzFlatpakEntry *self = BZ_FLATPAK_ENTRY (object); switch (prop_id) { case PROP_USER: case PROP_FLATPAK_NAME: case PROP_FLATPAK_ID: case PROP_FLATPAK_VERSION: case PROP_APPLICATION_NAME: case PROP_IS_BUNDLE: case PROP_APPLICATION_RUNTIME: case PROP_APPLICATION_COMMAND: case PROP_RUNTIME_NAME: case PROP_ADDON_OF_REF: case PROP_BUNDLE_PATH: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_flatpak_entry_class_init (BzFlatpakEntryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_flatpak_entry_set_property; object_class->get_property = bz_flatpak_entry_get_property; object_class->dispose = bz_flatpak_entry_dispose; props[PROP_USER] = g_param_spec_boolean ( "user", NULL, NULL, FALSE, G_PARAM_READABLE); props[PROP_FLATPAK_NAME] = g_param_spec_string ( "flatpak-name", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_FLATPAK_ID] = g_param_spec_string ( "flatpak-id", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_FLATPAK_VERSION] = g_param_spec_string ( "flatpak-version", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_APPLICATION_NAME] = g_param_spec_string ( "application-name", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_IS_BUNDLE] = g_param_spec_boolean ( "is-bundle", NULL, NULL, FALSE, G_PARAM_READABLE); props[PROP_BUNDLE_PATH] = g_param_spec_string ( "bundle-path", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_APPLICATION_RUNTIME] = g_param_spec_string ( "application-runtime", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_APPLICATION_COMMAND] = g_param_spec_string ( "application-command", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_RUNTIME_NAME] = g_param_spec_string ( "runtime-name", NULL, NULL, NULL, G_PARAM_READABLE); props[PROP_RUNTIME_RESULT] = g_param_spec_object ( "runtime", NULL, NULL, BZ_TYPE_RESULT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_ADDON_OF_REF] = g_param_spec_string ( "addon-extension-of-ref", NULL, NULL, NULL, G_PARAM_READABLE); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_flatpak_entry_init (BzFlatpakEntry *self) { } static void bz_flatpak_entry_real_serialize (BzSerializable *serializable, GVariantBuilder *builder) { BzFlatpakEntry *self = BZ_FLATPAK_ENTRY (serializable); g_variant_builder_add (builder, "{sv}", "user", g_variant_new_boolean (self->user)); g_variant_builder_add (builder, "{sv}", "is-bundle", g_variant_new_boolean (self->is_bundle)); g_variant_builder_add (builder, "{sv}", "is-installed-ref", g_variant_new_boolean (self->is_installed_ref)); if (self->bundle_path != NULL) g_variant_builder_add (builder, "{sv}", "bundle-path", g_variant_new_string (self->bundle_path)); if (self->flatpak_name != NULL) g_variant_builder_add (builder, "{sv}", "flatpak-name", g_variant_new_string (self->flatpak_name)); if (self->flatpak_id != NULL) g_variant_builder_add (builder, "{sv}", "flatpak-id", g_variant_new_string (self->flatpak_id)); if (self->flatpak_version != NULL) g_variant_builder_add (builder, "{sv}", "flatpak-version", g_variant_new_string (self->flatpak_version)); if (self->application_name != NULL) g_variant_builder_add (builder, "{sv}", "application-name", g_variant_new_string (self->application_name)); if (self->application_runtime != NULL) g_variant_builder_add (builder, "{sv}", "application-runtime", g_variant_new_string (self->application_runtime)); if (self->application_command != NULL) g_variant_builder_add (builder, "{sv}", "application-command", g_variant_new_string (self->application_command)); if (self->runtime_name != NULL) g_variant_builder_add (builder, "{sv}", "runtime-name", g_variant_new_string (self->runtime_name)); if (self->addon_extension_of_ref != NULL) g_variant_builder_add (builder, "{sv}", "addon-extension-of-ref", g_variant_new_string (self->addon_extension_of_ref)); bz_entry_serialize (BZ_ENTRY (self), builder); } static gboolean bz_flatpak_entry_real_deserialize (BzSerializable *serializable, GVariant *import, GError **error) { BzFlatpakEntry *self = BZ_FLATPAK_ENTRY (serializable); g_autoptr (GVariantIter) iter = NULL; clear_entry (self); iter = g_variant_iter_new (import); for (;;) { g_autofree char *key = NULL; g_autoptr (GVariant) value = NULL; if (!g_variant_iter_next (iter, "{sv}", &key, &value)) break; if (g_strcmp0 (key, "user") == 0) self->user = g_variant_get_boolean (value); else if (g_strcmp0 (key, "is-bundle") == 0) self->is_bundle = g_variant_get_boolean (value); else if (g_strcmp0 (key, "is-installed-ref") == 0) self->is_installed_ref = g_variant_get_boolean (value); else if (g_strcmp0 (key, "bundle-path") == 0) self->bundle_path = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "flatpak-name") == 0) self->flatpak_name = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "flatpak-id") == 0) self->flatpak_id = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "flatpak-version") == 0) self->flatpak_version = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "application-name") == 0) self->application_name = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "application-runtime") == 0) self->application_runtime = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "application-command") == 0) self->application_command = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "runtime-name") == 0) self->runtime_name = g_variant_dup_string (value, NULL); else if (g_strcmp0 (key, "addon-extension-of-ref") == 0) self->addon_extension_of_ref = g_variant_dup_string (value, NULL); } if (self->is_installed_ref) apply_icon_theme (self); return bz_entry_deserialize (BZ_ENTRY (self), import, error); } static void serializable_iface_init (BzSerializableInterface *iface) { iface->serialize = bz_flatpak_entry_real_serialize; iface->deserialize = bz_flatpak_entry_real_deserialize; } BzResult * bz_flatpak_entry_dup_runtime_result (BzFlatpakEntry *self) { BzStateInfo *state = NULL; BzApplicationMapFactory *factory = NULL; g_autofree char *runtime_unique_id = NULL; g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); state = bz_state_info_get_default (); if (self->runtime_result != NULL) return g_object_ref (self->runtime_result); if (self->application_runtime == NULL) return NULL; factory = bz_state_info_get_entry_factory (state); if (factory == NULL) return NULL; runtime_unique_id = g_strdup_printf ("FLATPAK-SYSTEM::flathub::runtime/%s", self->application_runtime); self->runtime_result = bz_application_map_factory_convert_one ( factory, gtk_string_object_new (runtime_unique_id)); return self->runtime_result != NULL ? g_object_ref (self->runtime_result) : NULL; } BzFlatpakEntry * bz_flatpak_entry_new_for_ref (FlatpakRef *ref, FlatpakRemote *remote, gboolean user, AsComponent *component, const char *appstream_dir, GError **error) { g_autoptr (BzFlatpakEntry) self = NULL; GBytes *bytes = NULL; g_autoptr (GKeyFile) key_file = NULL; gboolean result = FALSE; guint kinds = 0; g_autofree char *module_dir = NULL; const char *id = NULL; g_autofree char *unique_id = NULL; g_autofree char *unique_id_checksum = NULL; guint64 download_size = 0; guint64 installed_size = 0; const char *title = NULL; const char *eol = NULL; const char *remote_name = NULL; g_autoptr (GdkPaintable) icon_paintable = NULL; g_autoptr (BzAppPermissions) permissions = NULL; gboolean searchable = FALSE; gboolean reinstallable = FALSE; g_return_val_if_fail (FLATPAK_IS_REF (ref), NULL); g_return_val_if_fail (FLATPAK_IS_REMOTE_REF (ref) || FLATPAK_IS_BUNDLE_REF (ref) || FLATPAK_IS_INSTALLED_REF (ref), NULL); g_return_val_if_fail (component == NULL || appstream_dir != NULL || FLATPAK_IS_BUNDLE_REF (ref) || FLATPAK_IS_INSTALLED_REF (ref), NULL); self = g_object_new (BZ_TYPE_FLATPAK_ENTRY, NULL); self->user = user; self->is_bundle = FLATPAK_IS_BUNDLE_REF (ref); self->is_installed_ref = FLATPAK_IS_INSTALLED_REF (ref); self->ref = g_object_ref (ref); if (FLATPAK_IS_BUNDLE_REF (ref)) { GFile *file = NULL; file = flatpak_bundle_ref_get_file (FLATPAK_BUNDLE_REF (ref)); if (file != NULL) self->bundle_path = g_file_get_path (file); } key_file = g_key_file_new (); if (FLATPAK_IS_REMOTE_REF (ref)) bytes = flatpak_remote_ref_get_metadata (FLATPAK_REMOTE_REF (ref)); else if (FLATPAK_IS_BUNDLE_REF (ref)) bytes = flatpak_bundle_ref_get_metadata (FLATPAK_BUNDLE_REF (ref)); else if (FLATPAK_IS_INSTALLED_REF (ref)) bytes = flatpak_installed_ref_load_metadata (FLATPAK_INSTALLED_REF (ref), NULL, error); result = g_key_file_load_from_bytes ( key_file, bytes, G_KEY_FILE_NONE, error); if (!result) return NULL; #define GET_STRING(member, group_name, key) \ G_STMT_START \ { \ self->member = g_key_file_get_string ( \ key_file, group_name, key, error); \ if (self->member == NULL) \ return NULL; \ } \ G_STMT_END if (!g_log_writer_default_would_drop (G_LOG_LEVEL_DEBUG, G_LOG_DOMAIN)) { gsize n_groups = 0; g_auto (GStrv) groups = NULL; g_print ("Debug Key File Data for %s - groups:\n", flatpak_ref_get_name (ref)); groups = g_key_file_get_groups (key_file, &n_groups); for (gsize i = 0; i < n_groups; i++) { gsize n_keys = 0; g_auto (GStrv) keys = NULL; g_print (" group %s\n", groups[i]); keys = g_key_file_get_keys (key_file, groups[i], &n_keys, NULL); for (gsize j = 0; j < n_keys; j++) { g_autofree char *value = NULL; value = g_key_file_get_value (key_file, groups[i], keys[j], NULL); g_print (" %s=%s\n", keys[j], value); } } } if (g_key_file_has_group (key_file, "Application")) { kinds |= BZ_ENTRY_KIND_APPLICATION; GET_STRING (application_name, "Application", "name"); GET_STRING (application_runtime, "Application", "runtime"); if (g_key_file_has_key (key_file, "Application", "command", NULL)) GET_STRING (application_command, "Application", "command"); } if (g_key_file_has_group (key_file, "ExtensionOf")) { kinds |= BZ_ENTRY_KIND_ADDON; GET_STRING (addon_extension_of_ref, "ExtensionOf", "ref"); } if (g_key_file_has_group (key_file, "Runtime")) { kinds |= BZ_ENTRY_KIND_RUNTIME; GET_STRING (runtime_name, "Runtime", "name"); } #undef GET_STRING // if (kinds == 0) // { // g_set_error (error, G_IO_ERROR, G_IO_ERROR_UNKNOWN, // "Key file presented no useful information"); // return NULL; // } module_dir = bz_dup_module_dir (); self->flatpak_name = g_strdup (flatpak_ref_get_name (ref)); self->flatpak_id = flatpak_ref_format_ref (ref); self->flatpak_version = g_strdup (flatpak_ref_get_branch (ref)); id = flatpak_ref_get_name (ref); unique_id = bz_flatpak_ref_format_unique (ref, user); unique_id_checksum = g_compute_checksum_for_string (G_CHECKSUM_MD5, unique_id, -1); if (remote != NULL) remote_name = flatpak_remote_get_name (remote); else if (FLATPAK_IS_BUNDLE_REF (ref)) remote_name = flatpak_bundle_ref_get_origin (FLATPAK_BUNDLE_REF (ref)); else if (FLATPAK_IS_INSTALLED_REF (ref)) remote_name = flatpak_installed_ref_get_origin (FLATPAK_INSTALLED_REF (ref)); if (FLATPAK_IS_REMOTE_REF (ref)) download_size = flatpak_remote_ref_get_download_size (FLATPAK_REMOTE_REF (ref)); else if (FLATPAK_IS_BUNDLE_REF (ref)) { g_autoptr (GFileInfo) file_info = NULL; GFile *bundle_file = flatpak_bundle_ref_get_file (FLATPAK_BUNDLE_REF (ref)); file_info = g_file_query_info (bundle_file, G_FILE_ATTRIBUTE_STANDARD_SIZE, G_FILE_QUERY_INFO_NONE, NULL, NULL); if (file_info != NULL) download_size = g_file_info_get_size (file_info); } if (FLATPAK_IS_REMOTE_REF (ref)) installed_size = flatpak_remote_ref_get_installed_size (FLATPAK_REMOTE_REF (ref)); else if (FLATPAK_IS_BUNDLE_REF (ref)) installed_size = flatpak_bundle_ref_get_installed_size (FLATPAK_BUNDLE_REF (ref)); else if (FLATPAK_IS_INSTALLED_REF (ref)) installed_size = flatpak_installed_ref_get_installed_size (FLATPAK_INSTALLED_REF (ref)); if (component != NULL) { result = bz_appstream_parser_populate_entry (BZ_ENTRY (self), component, appstream_dir, remote_name, module_dir, unique_id_checksum, id, kinds, error); if (!result) return NULL; } g_object_get (self, "icon-paintable", &icon_paintable, NULL); if (icon_paintable == NULL) { if (FLATPAK_IS_BUNDLE_REF (ref)) { for (int size = 128; size > 0; size -= 64) { g_autoptr (GBytes) icon_bytes = NULL; GdkTexture *texture = NULL; icon_bytes = flatpak_bundle_ref_get_icon (FLATPAK_BUNDLE_REF (ref), size); if (icon_bytes == NULL) continue; texture = gdk_texture_new_from_bytes (icon_bytes, NULL); /* don't error out even if loading fails */ if (texture != NULL) { icon_paintable = (GdkPaintable *) g_steal_pointer (&texture); break; } } } else if (FLATPAK_IS_INSTALLED_REF (ref)) apply_icon_theme (self); } g_object_get (self, "title", &title, NULL); if (title == NULL) { if (self->application_name != NULL) title = self->application_name; else if (self->runtime_name != NULL) title = self->runtime_name; else title = self->flatpak_id; } if ((kinds & BZ_ENTRY_KIND_RUNTIME) && !(kinds & BZ_ENTRY_KIND_ADDON) && self->flatpak_version != NULL) { static GRegex *version_regex = NULL; g_autofree char *stripped_title = NULL; if (g_once_init_enter_pointer (&version_regex)) { g_autoptr (GRegex) re = NULL; /* GNOME runtimes have the flatpak version at the end whilst others don't. */ re = g_regex_new (VERSION_SUFFIX_REGEX, 0, 0, NULL); g_once_init_leave_pointer (&version_regex, g_steal_pointer (&re)); } stripped_title = g_regex_replace (version_regex, title, -1, 0, "", 0, NULL); title = g_strdup_printf ("%s %s", stripped_title, self->flatpak_version); } if (FLATPAK_IS_REMOTE_REF (ref)) eol = flatpak_remote_ref_get_eol (FLATPAK_REMOTE_REF (ref)); else if (FLATPAK_IS_INSTALLED_REF (ref)) eol = flatpak_installed_ref_get_eol (FLATPAK_INSTALLED_REF (ref)); permissions = bz_app_permissions_new_from_metadata (key_file, error); if (permissions == NULL) return NULL; searchable = !FLATPAK_IS_INSTALLED_REF (ref); reinstallable = !FLATPAK_IS_INSTALLED_REF (ref); g_object_set ( self, "kinds", kinds, "id", id, "unique-id", unique_id, "unique-id-checksum", unique_id_checksum, "title", title, "eol", eol, "remote-repo-name", remote_name, "size", download_size, "installed-size", installed_size, "icon-paintable", icon_paintable, "permissions", permissions, "searchable", searchable, "reinstallable", reinstallable, NULL); return g_steal_pointer (&self); } char * bz_flatpak_ref_parts_format_unique (const char *origin, const char *fmt, gboolean user) { return g_strdup_printf ( "FLATPAK-%s::%s::%s", user ? "USER" : "SYSTEM", origin != NULL ? origin : "bundle", fmt); } char * bz_flatpak_ref_format_unique (FlatpakRef *ref, gboolean user) { g_autofree char *fmt = NULL; const char *origin = NULL; fmt = flatpak_ref_format_ref (FLATPAK_REF (ref)); if (FLATPAK_IS_REMOTE_REF (ref)) origin = flatpak_remote_ref_get_remote_name (FLATPAK_REMOTE_REF (ref)); else if (FLATPAK_IS_INSTALLED_REF (ref)) origin = flatpak_installed_ref_get_origin (FLATPAK_INSTALLED_REF (ref)); return bz_flatpak_ref_parts_format_unique (origin, fmt, user); } FlatpakRef * bz_flatpak_entry_get_ref (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); if (self->ref == NULL) self->ref = flatpak_ref_parse (self->flatpak_id, NULL); return self->ref; } char * bz_flatpak_id_format_unique (const char *flatpak_id, gboolean user) { g_autoptr (FlatpakRef) ref = NULL; ref = flatpak_ref_parse (flatpak_id, NULL); if (ref == NULL) return NULL; return bz_flatpak_ref_format_unique (ref, user); } gboolean bz_flatpak_entry_is_user (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), FALSE); return self->user; } const char * bz_flatpak_entry_get_flatpak_name (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->flatpak_name; } const char * bz_flatpak_entry_get_flatpak_id (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->flatpak_id; } const char * bz_flatpak_entry_get_flatpak_version (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->flatpak_version; } const char * bz_flatpak_entry_get_application_name (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->application_name; } const char * bz_flatpak_entry_get_application_runtime (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->application_runtime; } const char * bz_flatpak_entry_get_runtime_name (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->runtime_name; } const char * bz_flatpak_entry_get_addon_extension_of_ref (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->addon_extension_of_ref; } gboolean bz_flatpak_entry_is_bundle (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), FALSE); return self->is_bundle; } gboolean bz_flatpak_entry_is_installed_ref (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), FALSE); return self->is_installed_ref; } const char * bz_flatpak_entry_get_bundle_path (BzFlatpakEntry *self) { g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), NULL); return self->bundle_path; } gboolean bz_flatpak_entry_launch (BzFlatpakEntry *self, BzFlatpakInstance *flatpak, GError **error) { FlatpakRef *ref = NULL; #ifdef SANDBOXED_LIBFLATPAK g_autofree char *fmt = NULL; g_autofree char *cmdline = NULL; #else FlatpakInstallation *installation = NULL; #endif g_return_val_if_fail (BZ_IS_FLATPAK_ENTRY (self), FALSE); g_return_val_if_fail (BZ_IS_FLATPAK_INSTANCE (flatpak), FALSE); ref = bz_flatpak_entry_get_ref (self); #ifdef SANDBOXED_LIBFLATPAK fmt = flatpak_ref_format_ref (FLATPAK_REF (ref)); if (g_file_test ("/run/systemd", G_FILE_TEST_EXISTS)) cmdline = g_strdup_printf ("flatpak-spawn --host systemd-run --user --pipe flatpak run %s", fmt); else cmdline = g_strdup_printf ("flatpak-spawn --host flatpak run %s", fmt); return g_spawn_command_line_async (cmdline, error); #else installation = self->user ? bz_flatpak_instance_get_user_installation (flatpak) : bz_flatpak_instance_get_system_installation (flatpak); /* async? */ return flatpak_installation_launch ( installation, flatpak_ref_get_name (ref), flatpak_ref_get_arch (ref), flatpak_ref_get_branch (ref), flatpak_ref_get_commit (ref), NULL, error); #endif } static void clear_entry (BzFlatpakEntry *self) { g_clear_pointer (&self->flatpak_name, g_free); g_clear_pointer (&self->flatpak_id, g_free); g_clear_pointer (&self->flatpak_version, g_free); g_clear_pointer (&self->application_name, g_free); g_clear_pointer (&self->application_runtime, g_free); g_clear_pointer (&self->application_command, g_free); g_clear_pointer (&self->runtime_name, g_free); g_clear_pointer (&self->addon_extension_of_ref, g_free); g_clear_pointer (&self->bundle_path, g_free); g_clear_object (&self->runtime_result); } static void apply_icon_theme (BzFlatpakEntry *self) { FlatpakRef *ref = NULL; BzStateInfo *state = NULL; const char *icon_name = NULL; GtkIconTheme *theme = NULL; ref = bz_flatpak_entry_get_ref (self); state = bz_state_info_get_default (); icon_name = flatpak_ref_get_name (ref); theme = self->user ? bz_state_info_get_user_icon_theme (state) : bz_state_info_get_system_icon_theme (state); if (theme != NULL) { g_autoptr (GtkIconPaintable) paintable = NULL; paintable = gtk_icon_theme_lookup_icon ( theme, icon_name, NULL, 128, 1, GTK_TEXT_DIR_NONE, 0); if (paintable != NULL) g_object_set ( self, "icon-paintable", paintable, NULL); } } ���������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flatpak-entry.h����������������������������������������������������0000664�0000000�0000000�00000004155�15240005042�0021475�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flatpak-entry.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include "bz-flatpak-instance.h" #include "bz-result.h" G_BEGIN_DECLS #define BZ_TYPE_FLATPAK_ENTRY (bz_flatpak_entry_get_type ()) G_DECLARE_FINAL_TYPE (BzFlatpakEntry, bz_flatpak_entry, BZ, FLATPAK_ENTRY, BzEntry) char * bz_flatpak_id_format_unique (const char *flatpak_id, gboolean user); gboolean bz_flatpak_entry_is_user (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_flatpak_name (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_flatpak_id (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_flatpak_version (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_application_name (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_application_runtime (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_runtime_name (BzFlatpakEntry *self); BzResult * bz_flatpak_entry_dup_runtime_result (BzFlatpakEntry *self); gboolean bz_flatpak_entry_is_bundle (BzFlatpakEntry *self); gboolean bz_flatpak_entry_is_installed_ref (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_bundle_path (BzFlatpakEntry *self); const char * bz_flatpak_entry_get_addon_extension_of_ref (BzFlatpakEntry *self); gboolean bz_flatpak_entry_launch (BzFlatpakEntry *self, BzFlatpakInstance *flatpak, GError **error); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flatpak-instance.c�������������������������������������������������0000664�0000000�0000000�00000346475�15240005042�0022151�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flatpak-instance.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::FLATPAK" #define BAZAAR_MODULE "flatpak" #include <malloc.h> #include <xmlb.h> #include "config.h" #include "bz-backend-notification.h" #include "bz-backend-transaction-op-payload.h" #include "bz-backend-transaction-op-progress-payload.h" #include "bz-backend.h" #include "bz-flatpak-bundle-result.h" #include "bz-flatpak-private.h" #include "bz-flatpak-repo.h" #include "bz-repository.h" #include "env.h" #include "global-net.h" #include "io.h" #include "util.h" /* clang-format off */ G_DEFINE_QUARK (bz-flatpak-error-quark, bz_flatpak_error); /* clang-format on */ struct _BzFlatpakInstance { GObject parent_instance; DexScheduler *scheduler; FlatpakInstallation *system; FlatpakInstallation *system_interactive; GFileMonitor *system_events; int system_mute; FlatpakInstallation *user; FlatpakInstallation *user_interactive; GFileMonitor *user_events; int user_mute; GMutex mute_mutex; GMutex notif_mutex; GPtrArray *notif_channels; DexFuture *notif_send; GMutex transactions_mutex; /* BzEntry* -> GPtrArray* -> GCancellable* */ GHashTable *ongoing_cancellables; }; static void backend_iface_init (BzBackendInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzFlatpakInstance, bz_flatpak_instance, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (BZ_TYPE_BACKEND, backend_iface_init)); BZ_DEFINE_DATA ( init, Init, { BzFlatpakInstance *self; }, BZ_RELEASE_DATA (self, g_object_unref)) static DexFuture * init_fiber (InitData *data); BZ_DEFINE_DATA ( check_has_flathub, CheckHasFlathub, { GWeakRef *self; GCancellable *cancellable; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (cancellable, g_object_unref)); static DexFuture * check_has_flathub_fiber (CheckHasFlathubData *data); BZ_DEFINE_DATA ( ensure_flathub, EnsureFlathub, { GWeakRef *self; GCancellable *cancellable; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (cancellable, g_object_unref)); static DexFuture * ensure_flathub_fiber (EnsureFlathubData *data); BZ_DEFINE_DATA ( load_local_ref, LoadLocalRef, { GWeakRef *self; GCancellable *cancellable; GFile *file; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (cancellable, g_object_unref); BZ_RELEASE_DATA (file, g_object_unref)); static DexFuture * load_local_ref_fiber (LoadLocalRefData *data); DexFuture * bz_flatpak_repo_new_from_url (const char *url, GCancellable *cancellable); BZ_DEFINE_DATA ( gather_refs, GatherRefs, { GWeakRef *self; GCancellable *cancellable; guint total; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (cancellable, g_object_unref)); static DexFuture * retrieve_remote_refs_fiber (GatherRefsData *data); static DexFuture * retrieve_installs_fiber (GatherRefsData *data); static DexFuture * retrieve_updates_fiber (GatherRefsData *data); BZ_DEFINE_DATA ( list_repos, ListRepos, { GWeakRef *self; GCancellable *cancellable; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (cancellable, g_object_unref)); static DexFuture * list_repositories_fiber (ListReposData *data); static DexFuture * ensure_runtime_remote_fiber (BzFlatpakInstance *self, FlatpakInstallation *installation, const char *bundle_path, GCancellable *cancellable); BZ_DEFINE_DATA ( retrieve_refs_for_remote, RetrieveRefsForRemote, { GatherRefsData *parent; FlatpakInstallation *installation; FlatpakRemote *remote; }, BZ_RELEASE_DATA (parent, gather_refs_data_unref); BZ_RELEASE_DATA (installation, g_object_unref); BZ_RELEASE_DATA (remote, g_object_unref)); static DexFuture * retrieve_refs_for_remote_fiber (RetrieveRefsForRemoteData *data); static DexFuture * retrieve_refs_for_enumerable_remote (BzFlatpakInstance *self, GCancellable *cancellable, const char *remote_name, FlatpakInstallation *installation, FlatpakRemote *remote); static DexFuture * retrieve_refs_for_noenumerable_remote (BzFlatpakInstance *self, GCancellable *cancellable, const char *remote_name, FlatpakInstallation *installation, FlatpakRemote *remote); BZ_DEFINE_DATA ( transaction, Transaction, { GWeakRef *self; GMutex mutex; GCancellable *cancellable; GPtrArray *installs; GPtrArray *updates; GPtrArray *removals; DexChannel *channel; GPtrArray *send_futures; GHashTable *ref_to_entry_hash; GHashTable *op_to_progress_hash; GHashTable *rebased_refs; guint unidentified_op_cnt; }, BZ_RELEASE_DATA (self, bz_weak_release); g_mutex_clear (&self->mutex); BZ_RELEASE_DATA (cancellable, g_object_unref); BZ_RELEASE_DATA (installs, g_ptr_array_unref); BZ_RELEASE_DATA (updates, g_ptr_array_unref); BZ_RELEASE_DATA (removals, g_ptr_array_unref); BZ_RELEASE_DATA (channel, dex_unref); BZ_RELEASE_DATA (send_futures, g_ptr_array_unref); BZ_RELEASE_DATA (ref_to_entry_hash, g_hash_table_unref); BZ_RELEASE_DATA (op_to_progress_hash, g_hash_table_unref) BZ_RELEASE_DATA (rebased_refs, g_hash_table_unref)); static DexFuture * transaction_fiber (TransactionData *data); BZ_DEFINE_DATA ( transaction_job, TransactionJob, { TransactionData *parent; FlatpakTransaction *transaction; }, BZ_RELEASE_DATA (parent, transaction_data_unref); BZ_RELEASE_DATA (transaction, g_object_unref)); static DexFuture * transaction_job_fiber (TransactionJobData *data); static void transaction_new_operation (FlatpakTransaction *object, FlatpakTransactionOperation *operation, FlatpakTransactionProgress *progress, TransactionData *data); static void transaction_operation_done (FlatpakTransaction *object, FlatpakTransactionOperation *operation, gchar *commit, gint result, TransactionData *data); static gboolean transaction_operation_error (FlatpakTransaction *object, FlatpakTransactionOperation *operation, GError *error, gint details, TransactionData *data); static gboolean transaction_ready (FlatpakTransaction *object, TransactionData *data); static BzFlatpakEntry * find_entry_from_operation (TransactionData *data, FlatpakTransactionOperation *operation); BZ_DEFINE_DATA ( transaction_operation, TransactionOperation, { TransactionData *parent; BzFlatpakEntry *entry; BzBackendTransactionOpPayload *op; }, BZ_RELEASE_DATA (parent, transaction_data_unref); BZ_RELEASE_DATA (entry, g_object_unref); BZ_RELEASE_DATA (op, g_object_unref)); static void transaction_progress_changed (FlatpakTransactionProgress *object, TransactionOperationData *data); BZ_DEFINE_DATA ( transaction_operation_done, TransactionOperationDone, { TransactionData *parent; FlatpakTransaction *transaction; FlatpakTransactionOperation *operation; }, BZ_RELEASE_DATA (parent, transaction_data_unref); BZ_RELEASE_DATA (transaction, g_object_unref); BZ_RELEASE_DATA (operation, g_object_unref)); static DexFuture * transaction_operation_done_fiber (TransactionOperationDoneData *data); static void installation_event (BzFlatpakInstance *self, GFile *file, GFile *other_file, GFileMonitorEvent event_type, GFileMonitor *monitor); static void send_notif (BzFlatpakInstance *self, DexChannel *channel, BzBackendNotification *notif, gboolean lock); static void send_notif_all (BzFlatpakInstance *self, BzBackendNotification *notif, gboolean lock); #define SEND_AND_RETURN_ERROR(_self, _lock, _error, ...) \ G_STMT_START \ { \ g_autofree char *_error_string = NULL; \ g_autoptr (BzBackendNotification) _notif = NULL; \ \ _error_string = g_strdup_printf (__VA_ARGS__); \ \ _notif = bz_backend_notification_new (); \ bz_backend_notification_set_kind (_notif, BZ_BACKEND_NOTIFICATION_KIND_ERROR); \ bz_backend_notification_set_error (_notif, _error_string); \ send_notif_all ((_self), _notif, (_lock)); \ \ return dex_future_new_for_error ( \ g_error_new_literal (BZ_FLATPAK_ERROR, \ (_error), \ _error_string)); \ } \ G_STMT_END BZ_DEFINE_DATA ( wait_notif, WaitNotif, { GWeakRef self; DexChannel *channel; BzBackendNotification *notif; }, g_weak_ref_clear (&self->self); BZ_RELEASE_DATA (channel, dex_unref); BZ_RELEASE_DATA (notif, g_object_unref)); static DexFuture * wait_notif_finally (DexFuture *future, WaitNotifData *data); static gint cmp_rref (FlatpakRemoteRef *a, FlatpakRemoteRef *b, GHashTable *hash); static AsComponent * parse_component_for_node (XbNode *node, GError **error); static GBytes * decompress_appstream_gz (GBytes *appstream_gz, GCancellable *cancellable, GError **error); static XbSilo * build_silo (XbBuilderSource *source, GCancellable *cancellable, GError **error); static AsComponent * extract_first_component_for_silo (XbSilo *silo, GError **error); static void bz_flatpak_instance_dispose (GObject *object) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (object); dex_clear (&self->scheduler); g_clear_object (&self->system); g_clear_object (&self->system_interactive); g_clear_object (&self->system_events); g_clear_object (&self->user); g_clear_object (&self->user_interactive); g_clear_object (&self->user_events); g_mutex_clear (&self->mute_mutex); g_clear_pointer (&self->notif_channels, g_ptr_array_unref); dex_clear (&self->notif_send); g_mutex_clear (&self->notif_mutex); g_clear_pointer (&self->ongoing_cancellables, g_hash_table_unref); g_mutex_clear (&self->transactions_mutex); G_OBJECT_CLASS (bz_flatpak_instance_parent_class)->dispose (object); } static void bz_flatpak_instance_class_init (BzFlatpakInstanceClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_flatpak_instance_dispose; } static void bz_flatpak_instance_init (BzFlatpakInstance *self) { self->scheduler = dex_thread_pool_scheduler_new (); self->system_mute = 0; self->user_mute = 0; g_mutex_init (&self->mute_mutex); self->notif_channels = g_ptr_array_new_with_free_func (dex_unref); g_mutex_init (&self->notif_mutex); self->ongoing_cancellables = g_hash_table_new_full ( g_direct_hash, g_direct_equal, g_object_unref, (GDestroyNotify) g_ptr_array_unref); g_mutex_init (&self->transactions_mutex); } static DexChannel * bz_flatpak_instance_create_notification_channel (BzBackend *backend) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); g_autoptr (DexChannel) channel = NULL; channel = dex_channel_new (0); g_mutex_lock (&self->notif_mutex); g_ptr_array_add (self->notif_channels, dex_ref (channel)); g_mutex_unlock (&self->notif_mutex); return g_steal_pointer (&channel); } static DexFuture * bz_flatpak_instance_load_local_package (BzBackend *backend, GFile *file, GCancellable *cancellable) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); g_autoptr (LoadLocalRefData) data = NULL; data = load_local_ref_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); data->file = g_object_ref (file); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) load_local_ref_fiber, load_local_ref_data_ref (data), load_local_ref_data_unref); } static DexFuture * bz_flatpak_instance_retrieve_remote_refs (BzBackend *backend, GCancellable *cancellable) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); g_autoptr (GatherRefsData) data = NULL; data = gather_refs_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); data->total = 0; return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) retrieve_remote_refs_fiber, gather_refs_data_ref (data), gather_refs_data_unref); } static DexFuture * bz_flatpak_instance_retrieve_install_ids (BzBackend *backend, GCancellable *cancellable) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); g_autoptr (GatherRefsData) data = NULL; data = gather_refs_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) retrieve_installs_fiber, gather_refs_data_ref (data), gather_refs_data_unref); } static DexFuture * bz_flatpak_instance_retrieve_update_ids (BzBackend *backend, GCancellable *cancellable) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); g_autoptr (GatherRefsData) data = NULL; data = gather_refs_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) retrieve_updates_fiber, gather_refs_data_ref (data), gather_refs_data_unref); } static DexFuture * bz_flatpak_instance_list_repositories (BzBackend *backend, GCancellable *cancellable) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); g_autoptr (ListReposData) data = NULL; data = list_repos_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) list_repositories_fiber, list_repos_data_ref (data), list_repos_data_unref); } static DexFuture * bz_flatpak_instance_schedule_transaction (BzBackend *backend, BzEntry **installs, guint n_installs, BzEntry **updates, guint n_updates, BzEntry **removals, guint n_removals, DexChannel *channel, GCancellable *cancellable) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); BzFlatpakEntry **installs_dup = NULL; BzFlatpakEntry **updates_dup = NULL; BzFlatpakEntry **removals_dup = NULL; g_autoptr (TransactionData) data = NULL; for (guint i = 0; i < n_installs; i++) dex_return_error_if_fail (BZ_IS_FLATPAK_ENTRY (installs[i])); for (guint i = 0; i < n_updates; i++) dex_return_error_if_fail (BZ_IS_FLATPAK_ENTRY (updates[i])); for (guint i = 0; i < n_removals; i++) dex_return_error_if_fail (BZ_IS_FLATPAK_ENTRY (removals[i])); if (n_installs > 0) { installs_dup = g_malloc0_n (n_installs, sizeof (*installs_dup)); for (guint i = 0; i < n_installs; i++) installs_dup[i] = g_object_ref (BZ_FLATPAK_ENTRY (installs[i])); } if (n_updates > 0) { updates_dup = g_malloc0_n (n_updates, sizeof (*updates_dup)); for (guint i = 0; i < n_updates; i++) updates_dup[i] = g_object_ref (BZ_FLATPAK_ENTRY (updates[i])); } if (n_removals > 0) { removals_dup = g_malloc0_n (n_removals, sizeof (*removals_dup)); for (guint i = 0; i < n_removals; i++) removals_dup[i] = g_object_ref (BZ_FLATPAK_ENTRY (removals[i])); } data = transaction_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); data->installs = installs_dup != NULL ? g_ptr_array_new_take ((gpointer *) installs_dup, n_installs, g_object_unref) : NULL; data->updates = updates_dup != NULL ? g_ptr_array_new_take ((gpointer *) updates_dup, n_updates, g_object_unref) : NULL; data->removals = removals_dup != NULL ? g_ptr_array_new_take ((gpointer *) removals_dup, n_removals, g_object_unref) : NULL; data->channel = bz_dex_maybe_ref (channel); data->send_futures = g_ptr_array_new_with_free_func (dex_unref); data->ref_to_entry_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); data->op_to_progress_hash = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, NULL); data->rebased_refs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); g_mutex_init (&data->mutex); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) transaction_fiber, transaction_data_ref (data), transaction_data_unref); } static gboolean bz_flatpak_instance_cancel_task_for_entry (BzBackend *backend, BzEntry *entry) { BzFlatpakInstance *self = BZ_FLATPAK_INSTANCE (backend); g_autoptr (GMutexLocker) locker = NULL; GPtrArray *cancellables = NULL; locker = g_mutex_locker_new (&self->transactions_mutex); cancellables = g_hash_table_lookup (self->ongoing_cancellables, entry); if (cancellables == NULL) return FALSE; for (guint i = 0; i < cancellables->len; i++) { GCancellable *cancellable = NULL; cancellable = g_ptr_array_index (cancellables, i); g_cancellable_cancel (cancellable); } return TRUE; } static void backend_iface_init (BzBackendInterface *iface) { iface->create_notification_channel = bz_flatpak_instance_create_notification_channel; iface->load_local_package = bz_flatpak_instance_load_local_package; iface->retrieve_remote_entries = bz_flatpak_instance_retrieve_remote_refs; iface->retrieve_install_ids = bz_flatpak_instance_retrieve_install_ids; iface->retrieve_update_ids = bz_flatpak_instance_retrieve_update_ids; iface->list_repositories = bz_flatpak_instance_list_repositories; iface->schedule_transaction = bz_flatpak_instance_schedule_transaction; iface->cancel_task_for_entry = bz_flatpak_instance_cancel_task_for_entry; } FlatpakInstallation * bz_flatpak_instance_get_system_installation (BzFlatpakInstance *self) { g_return_val_if_fail (BZ_IS_FLATPAK_INSTANCE (self), NULL); return self->system; } FlatpakInstallation * bz_flatpak_instance_get_user_installation (BzFlatpakInstance *self) { g_return_val_if_fail (BZ_IS_FLATPAK_INSTANCE (self), NULL); return self->user; } DexFuture * bz_flatpak_instance_new (void) { g_autoptr (InitData) data = NULL; data = init_data_new (); data->self = g_object_new (BZ_TYPE_FLATPAK_INSTANCE, NULL); return dex_scheduler_spawn ( data->self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) init_fiber, init_data_ref (data), init_data_unref); } DexFuture * bz_flatpak_instance_has_flathub (BzFlatpakInstance *self, GCancellable *cancellable) { g_autoptr (CheckHasFlathubData) data = NULL; dex_return_error_if_fail (BZ_IS_FLATPAK_INSTANCE (self)); dex_return_error_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); data = check_has_flathub_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) check_has_flathub_fiber, check_has_flathub_data_ref (data), check_has_flathub_data_unref); } DexFuture * bz_flatpak_instance_ensure_has_flathub (BzFlatpakInstance *self, GCancellable *cancellable) { g_autoptr (EnsureFlathubData) data = NULL; dex_return_error_if_fail (BZ_IS_FLATPAK_INSTANCE (self)); dex_return_error_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); data = ensure_flathub_data_new (); data->self = bz_track_weak (self); data->cancellable = bz_object_maybe_ref (cancellable); return dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) ensure_flathub_fiber, ensure_flathub_data_ref (data), ensure_flathub_data_unref); } static DexFuture * init_fiber (InitData *data) { BzFlatpakInstance *self = data->self; g_autoptr (GError) local_error = NULL; g_autofree char *main_cache = NULL; bz_discard_module_dir (); self->system = flatpak_installation_new_system (NULL, &local_error); if (self->system != NULL) { g_autoptr (GFile) path = NULL; flatpak_installation_set_no_interaction (self->system, TRUE); path = flatpak_installation_get_path (self->system); self->system_interactive = flatpak_installation_new_for_path ( path, FALSE, NULL, NULL); g_assert (self->system_interactive != NULL); flatpak_installation_set_no_interaction (self->system_interactive, FALSE); self->system_events = flatpak_installation_create_monitor ( self->system, NULL, &local_error); if (self->system_events != NULL) g_signal_connect_swapped ( self->system_events, "changed", G_CALLBACK (installation_event), self); else { g_warning ("Failed to initialize event watch for system installation: %s", local_error->message); g_clear_pointer (&local_error, g_error_free); } } else { g_warning ("Failed to initialize system installation: %s", local_error->message); g_clear_pointer (&local_error, g_error_free); } #ifdef SANDBOXED_LIBFLATPAK { g_autoptr (GFile) user_installation_path = NULL; const char *home = g_get_home_dir (); g_autofree char *user_flatpak_path = g_build_filename (home, ".local", "share", "flatpak", NULL); user_installation_path = g_file_new_for_path (user_flatpak_path); self->user = flatpak_installation_new_for_path ( user_installation_path, TRUE, NULL, &local_error); } #else self->user = flatpak_installation_new_user (NULL, &local_error); #endif if (self->user != NULL) { g_autoptr (GFile) path = NULL; flatpak_installation_set_no_interaction (self->user, TRUE); path = flatpak_installation_get_path (self->user); self->user_interactive = flatpak_installation_new_for_path ( path, TRUE, NULL, NULL); g_assert (self->user_interactive != NULL); flatpak_installation_set_no_interaction (self->user_interactive, FALSE); self->user_events = flatpak_installation_create_monitor ( self->user, NULL, &local_error); if (self->user_events != NULL) g_signal_connect_swapped ( self->user_events, "changed", G_CALLBACK (installation_event), self); else { g_warning ("Failed to initialize event watch for user installation: %s", local_error->message); g_clear_pointer (&local_error, g_error_free); } } else { g_warning ("Failed to initialize user installation: %s", local_error->message); g_clear_pointer (&local_error, g_error_free); } #ifdef SANDBOXED_LIBFLATPAK if (g_getenv ("FLATPAK_BINARY") == NULL) { g_autofree char *flatpak_path = NULL; gint exit_status = 0; g_spawn_command_line_sync ("flatpak-spawn --host sh -c 'command -v flatpak'", &flatpak_path, NULL, &exit_status, NULL); if (exit_status == 0 && flatpak_path != NULL) g_setenv ("FLATPAK_BINARY", g_strstrip (flatpak_path), FALSE); else g_warning ("Failed to resolve host flatpak binary! User refs wont be updated"); } #endif if (self->system == NULL && self->user == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_CANNOT_INITIALIZE, "Failed to initialize any flatpak installations"); return dex_future_new_for_object (self); } static DexFuture * check_has_flathub_fiber (CheckHasFlathubData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GCancellable *cancellable = data->cancellable; g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) system_remotes = NULL; guint n_system_remotes = 0; g_autoptr (GPtrArray) user_remotes = NULL; guint n_user_remotes = 0; bz_weak_get_or_return_reject (self, data->self); if (self->system != NULL) { system_remotes = flatpak_installation_list_remotes ( self->system, cancellable, &local_error); if (system_remotes == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_CANNOT_INITIALIZE, "Failed to enumerate remotes for system installation: %s", local_error->message); n_system_remotes = system_remotes->len; } // Downloading from user remotes in the Flatpak is unsupported. #ifndef SANDBOXED_LIBFLATPAK if (self->user != NULL) { user_remotes = flatpak_installation_list_remotes ( self->user, cancellable, &local_error); if (user_remotes == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_CANNOT_INITIALIZE, "Failed to enumerate remotes for user installation: %s", local_error->message); n_user_remotes = user_remotes->len; } #endif for (guint i = 0; i < n_system_remotes + n_user_remotes; i++) { FlatpakRemote *remote = NULL; const char *name = NULL; if (i < n_system_remotes) remote = g_ptr_array_index (system_remotes, i); else remote = g_ptr_array_index (user_remotes, i - n_system_remotes); if (flatpak_remote_get_disabled (remote) || flatpak_remote_get_noenumerate (remote)) continue; name = flatpak_remote_get_name (remote); if (g_strcmp0 (name, "flathub") == 0) return dex_future_new_true (); } return dex_future_new_false (); } static DexFuture * ensure_flathub_fiber (EnsureFlathubData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GCancellable *cancellable = data->cancellable; g_autoptr (GError) local_error = NULL; g_autoptr (FlatpakRemote) remote = NULL; FlatpakInstallation *installation = NULL; gboolean result = FALSE; bz_weak_get_or_return_reject (self, data->self); #define REPO_URL "https://dl.flathub.org/repo/flathub.flatpakrepo" #ifdef SANDBOXED_LIBFLATPAK if (self->system != NULL) { remote = flatpak_installation_get_remote_by_name ( self->system, "flathub", cancellable, NULL); installation = self->system; } if (remote == NULL) return dex_future_new_true (); #else if (self->user != NULL) { remote = flatpak_installation_get_remote_by_name ( self->user, "flathub", cancellable, NULL); installation = self->user; } if (remote == NULL && self->system != NULL) { remote = flatpak_installation_get_remote_by_name ( self->system, "flathub", cancellable, NULL); if (remote != NULL) installation = self->system; } #endif if (remote != NULL) { flatpak_remote_set_disabled (remote, FALSE); flatpak_remote_set_noenumerate (remote, FALSE); flatpak_remote_set_gpg_verify (remote, TRUE); result = flatpak_installation_modify_remote ( installation, remote, cancellable, &local_error); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "Failed to modify existing system flathub remote: %s", local_error->message); } else { g_autoptr (SoupMessage) message = NULL; g_autoptr (GOutputStream) output = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (FlatpakRemote) imported = NULL; message = soup_message_new (SOUP_METHOD_GET, REPO_URL); output = g_memory_output_stream_new_resizable (); result = dex_await ( bz_send_with_global_http_session_then_splice_into (message, output), &local_error); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to retrieve flatpakrepo file from %s: %s", REPO_URL, local_error->message); bytes = g_memory_output_stream_steal_as_bytes (G_MEMORY_OUTPUT_STREAM (output)); imported = flatpak_remote_new_from_file ("flathub", bytes, &local_error); if (imported == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to construct flatpak remote from flatpakrepo file %s: %s", REPO_URL, local_error->message); flatpak_remote_set_gpg_verify (imported, TRUE); result = flatpak_installation_add_remote ( installation, imported, TRUE, cancellable, &local_error); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "Failed to add flathub to flatpak installation: %s", local_error->message); } return dex_future_new_true (); } DexFuture * bz_flatpak_repo_new_from_url (const char *url, GCancellable *cancellable) { g_autoptr (SoupMessage) message = NULL; g_autoptr (GOutputStream) output = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (GKeyFile) key_file = NULL; g_autoptr (BzFlatpakRepo) repo = NULL; g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autofree char *name = NULL; char *dot = NULL; g_autofree char *title = NULL; g_autofree char *repo_url = NULL; g_autofree char *homepage = NULL; g_autofree char *comment = NULL; g_autofree char *description = NULL; g_autofree char *icon = NULL; g_autofree char *gpg_key = NULL; g_autofree char *default_branch = NULL; g_autofree char *filter = NULL; g_autoptr (GError) bool_error = NULL; gboolean gpg_verify = FALSE; name = g_path_get_basename (url); dot = strrchr (name, '.'); if (dot != NULL) *dot = '\0'; message = soup_message_new (SOUP_METHOD_GET, url); output = g_memory_output_stream_new_resizable (); result = dex_await ( bz_send_with_global_http_session_then_splice_into (message, output), &local_error); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to retrieve flatpakrepo file from %s: %s", url, local_error->message); bytes = g_memory_output_stream_steal_as_bytes (G_MEMORY_OUTPUT_STREAM (output)); key_file = g_key_file_new (); result = g_key_file_load_from_bytes (key_file, bytes, G_KEY_FILE_NONE, &local_error); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to parse flatpakrepo file from %s: %s", url, local_error->message); title = g_key_file_get_string (key_file, "Flatpak Repo", "Title", NULL); repo_url = g_key_file_get_string (key_file, "Flatpak Repo", "Url", NULL); homepage = g_key_file_get_string (key_file, "Flatpak Repo", "Homepage", NULL); comment = g_key_file_get_string (key_file, "Flatpak Repo", "Comment", NULL); description = g_key_file_get_string (key_file, "Flatpak Repo", "Description", NULL); icon = g_key_file_get_string (key_file, "Flatpak Repo", "Icon", NULL); gpg_key = g_key_file_get_string (key_file, "Flatpak Repo", "GPGKey", NULL); default_branch = g_key_file_get_string (key_file, "Flatpak Repo", "DefaultBranch", NULL); filter = g_key_file_get_string (key_file, "Flatpak Repo", "Filter", NULL); gpg_verify = g_key_file_get_boolean (key_file, "Flatpak Repo", "GPGVerify", &bool_error); if (bool_error != NULL) { gpg_verify = gpg_key != NULL; g_clear_error (&bool_error); } repo = g_object_new ( BZ_TYPE_FLATPAK_REPO, "name", name, "title", title, "url", repo_url, "homepage", homepage, "comment", comment, "description", description, "icon", icon, "gpg-key", gpg_key, "default-branch", default_branch, "filter", filter, "gpg-verify", gpg_verify, NULL); return dex_future_new_for_object (repo); } static DexFuture * load_local_ref_fiber (LoadLocalRefData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GFile *file = data->file; GCancellable *cancellable = data->cancellable; gboolean result = FALSE; g_autoptr (GError) local_error = NULL; g_autofree char *uri = NULL; g_autofree char *path = NULL; g_autofree char *runtime_repo_url = NULL; bz_weak_get_or_return_reject (self, data->self); uri = g_file_get_uri (file); path = g_file_get_path (file); if (uri == NULL) uri = g_strdup_printf ("file://%s", path); if (g_str_has_suffix (uri, ".flatpakref")) { const char *resolved_uri = NULL; g_autoptr (GKeyFile) key_file = g_key_file_new (); g_autofree char *name = NULL; if (g_str_has_prefix (uri, "flatpak+https")) resolved_uri = uri + strlen ("flatpak+"); else resolved_uri = uri; key_file = g_key_file_new (); if (g_str_has_prefix (resolved_uri, "http")) { g_autoptr (SoupMessage) message = NULL; g_autoptr (GOutputStream) output = NULL; g_autoptr (GBytes) bytes = NULL; message = soup_message_new (SOUP_METHOD_GET, resolved_uri); output = g_memory_output_stream_new_resizable (); result = dex_await ( bz_send_with_global_http_session_then_splice_into (message, output), &local_error); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to retrieve flatpakref file from %s: %s", resolved_uri, local_error->message); bytes = g_memory_output_stream_steal_as_bytes (G_MEMORY_OUTPUT_STREAM (output)); result = g_key_file_load_from_bytes (key_file, bytes, G_KEY_FILE_NONE, &local_error); } else if (path != NULL) result = g_key_file_load_from_file ( key_file, path, G_KEY_FILE_NONE, &local_error); else local_error = g_error_new ( G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, "Cannot handle URIs of this type"); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to load flatpakref '%s' into a key file: %s", uri, local_error->message); name = g_key_file_get_string (key_file, "Flatpak Ref", "Name", &local_error); if (name == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to load locate \"Name\" key in flatpakref '%s': %s", uri, local_error->message); { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_PRESENT_ID); bz_backend_notification_set_generic_id (notif, name); send_notif_all (self, notif, TRUE); } return dex_future_new_take_string (g_steal_pointer (&name)); } else /* This is a bundle ref */ { g_autoptr (FlatpakBundleRef) bref = NULL; const char *name = NULL; const char *origin = NULL; FlatpakInstallation *add_to_installation = NULL; g_autoptr (FlatpakRemote) remote = NULL; g_autoptr (BzFlatpakEntry) entry = NULL; g_autoptr (BzFlatpakRepo) runtime_repo = NULL; g_autoptr (GBytes) appstream_gz = NULL; g_autoptr (GBytes) appstream = NULL; g_autoptr (AsComponent) component = NULL; g_autoptr (BzFlatpakBundleResult) bundle_result = NULL; if (path == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Cannot load '%s' as a flatpak bundle: URI is not a local file", uri); bref = flatpak_bundle_ref_new (file, &local_error); if (bref == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to load local flatpak bundle '%s': %s", path, local_error->message); name = flatpak_ref_get_name (FLATPAK_REF (bref)); origin = flatpak_bundle_ref_get_origin (bref); runtime_repo_url = flatpak_bundle_ref_get_runtime_repo_url (bref); if (runtime_repo_url != NULL) { g_autoptr (GError) repo_error = NULL; runtime_repo = dex_await_object ( bz_flatpak_repo_new_from_url (runtime_repo_url, cancellable), &repo_error); if (runtime_repo == NULL) g_warning ("Failed to parse runtime repo from %s: %s", runtime_repo_url, repo_error->message); } if (self->system != NULL) add_to_installation = self->system; else if (self->user != NULL) add_to_installation = self->user; /* First check if we already should have the origin remote installed */ if (self->system != NULL) { g_autoptr (GPtrArray) remotes = NULL; remotes = flatpak_installation_list_remotes ( self->system, NULL, NULL); if (remotes != NULL) { for (guint i = 0; i < remotes->len; i++) { FlatpakRemote *existing = NULL; const char *url = NULL; existing = g_ptr_array_index (remotes, i); url = flatpak_remote_get_url (existing); if (url != NULL && g_strcmp0 (url, origin) == 0) { remote = g_object_ref (existing); add_to_installation = NULL; break; } } } } if (self->user != NULL) { g_autoptr (GPtrArray) remotes = NULL; remotes = flatpak_installation_list_remotes ( self->user, NULL, NULL); if (remotes != NULL) { for (guint i = 0; i < remotes->len; i++) { FlatpakRemote *existing = NULL; const char *url = NULL; existing = g_ptr_array_index (remotes, i); url = flatpak_remote_get_url (existing); if (url != NULL && g_strcmp0 (url, origin) == 0) { remote = g_object_ref (existing); add_to_installation = NULL; break; } } } } if (add_to_installation != NULL) { g_autoptr (FlatpakRemote) config_remote = NULL; g_autofree char *remote_name = NULL; /* Configure and sync the new remote */ remote_name = g_strdup_printf ("%s-bazaar-origin", name); config_remote = flatpak_remote_new (remote_name); flatpak_remote_set_url (config_remote, origin); flatpak_remote_set_disabled (config_remote, FALSE); flatpak_remote_set_noenumerate (config_remote, FALSE); flatpak_remote_set_gpg_verify (config_remote, TRUE); result = flatpak_installation_add_remote ( add_to_installation, config_remote, FALSE, cancellable, NULL); if (result) { { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_INVALIDATE_REMOTES); send_notif_all (self, notif, TRUE); } remote = flatpak_installation_get_remote_by_name ( add_to_installation, remote_name, cancellable, NULL); if (remote != NULL) { { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_START); bz_backend_notification_set_remote_name (notif, remote_name); send_notif_all (self, notif, TRUE); } result = dex_await ( retrieve_refs_for_enumerable_remote ( self, cancellable, remote_name, add_to_installation, remote), NULL); { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_FINISH); bz_backend_notification_set_remote_name (notif, remote_name); send_notif_all (self, notif, TRUE); } } } } appstream_gz = flatpak_bundle_ref_get_appstream (bref); if (appstream_gz != NULL) { appstream = decompress_appstream_gz (appstream_gz, NULL, &local_error); if (appstream == NULL) { g_warning ("Failed to decompress AppStream data: %s", local_error->message); g_clear_error (&local_error); } else { g_autoptr (XbBuilderSource) source = NULL; source = xb_builder_source_new (); if (!xb_builder_source_load_bytes (source, appstream, XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT, &local_error)) { g_warning ("Failed to load AppStream bytes into xmlb: %s", local_error->message); g_clear_error (&local_error); } else { g_autoptr (XbSilo) silo = NULL; silo = build_silo (source, NULL, &local_error); if (silo == NULL) { g_warning ("Failed to compile xmlb silo: %s", local_error->message); g_clear_error (&local_error); } else { component = extract_first_component_for_silo (silo, &local_error); if (component == NULL && local_error != NULL) { g_warning ("Failed to parse component: %s", local_error->message); g_clear_error (&local_error); } } } } } entry = bz_flatpak_entry_new_for_ref ( FLATPAK_REF (bref), remote, FALSE, component, NULL, &local_error); if (entry == NULL) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to parse information from flatpak bundle '%s': %s", path, local_error->message); bundle_result = g_object_new (BZ_TYPE_FLATPAK_BUNDLE_RESULT, "entry", entry, "runtime-repo", runtime_repo, NULL); return dex_future_new_for_object (g_steal_pointer (&bundle_result)); } } static DexFuture * retrieve_remote_refs_fiber (GatherRefsData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GCancellable *cancellable = data->cancellable; g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) system_remotes = NULL; guint n_system_remotes = 0; g_autoptr (GPtrArray) user_remotes = NULL; guint n_user_remotes = 0; g_autoptr (GHashTable) blocked_names_hash = NULL; g_autoptr (GPtrArray) jobs = NULL; g_autoptr (GPtrArray) job_names = NULL; g_autoptr (DexFuture) future = NULL; gboolean result = FALSE; g_autoptr (GString) error_string = NULL; bz_weak_get_or_return_reject (self, data->self); if (self->system != NULL) { system_remotes = flatpak_installation_list_remotes ( self->system, cancellable, &local_error); if (system_remotes == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_CANNOT_INITIALIZE, "Failed to enumerate remotes for system installation: %s", local_error->message); n_system_remotes = system_remotes->len; } if (self->user != NULL) { user_remotes = flatpak_installation_list_remotes ( self->user, cancellable, &local_error); if (user_remotes == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_CANNOT_INITIALIZE, "Failed to enumerate remotes for user installation: %s", local_error->message); n_user_remotes = user_remotes->len; } if (n_user_remotes + n_system_remotes == 0) return dex_future_new_true (); jobs = g_ptr_array_new_with_free_func (dex_unref); job_names = g_ptr_array_new_with_free_func (g_free); for (guint i = 0; i < n_system_remotes + n_user_remotes; i++) { FlatpakInstallation *installation = NULL; FlatpakRemote *remote = NULL; const char *name = NULL; g_autoptr (RetrieveRefsForRemoteData) job_data = NULL; g_autoptr (DexFuture) job_future = NULL; if (i < n_system_remotes) { installation = self->system; remote = g_ptr_array_index (system_remotes, i); } else { installation = self->user; remote = g_ptr_array_index (user_remotes, i - n_system_remotes); } name = flatpak_remote_get_name (remote); { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_START); bz_backend_notification_set_remote_name (notif, name); send_notif_all (self, notif, TRUE); } job_data = retrieve_refs_for_remote_data_new (); job_data->parent = gather_refs_data_ref (data); job_data->installation = g_object_ref (installation); job_data->remote = g_object_ref (remote); job_future = dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) retrieve_refs_for_remote_fiber, retrieve_refs_for_remote_data_ref (job_data), retrieve_refs_for_remote_data_unref); g_ptr_array_add (jobs, g_steal_pointer (&job_future)); g_ptr_array_add (job_names, g_strdup (name)); } if (jobs->len == 0) return dex_future_new_true (); result = dex_await (dex_future_allv ( (DexFuture *const *) jobs->pdata, jobs->len), NULL); if (!result) error_string = g_string_new ("No remotes could be synchronized:\n\n"); for (guint i = 0; i < jobs->len; i++) { DexFuture *job_future = NULL; char *name = NULL; job_future = g_ptr_array_index (jobs, i); name = g_ptr_array_index (job_names, i); dex_future_get_value (job_future, &local_error); if (local_error != NULL) { if (error_string == NULL) error_string = g_string_new ("Some remotes couldn't be fully sychronized:\n"); g_string_append_printf (error_string, "\n%s failed because: %s\n", name, local_error->message); } g_clear_pointer (&local_error, g_error_free); } if (result) { if (error_string != NULL) return dex_future_new_take_string ( g_string_free_and_steal (g_steal_pointer (&error_string))); else return dex_future_new_true (); } else return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "%s", error_string->str); } static DexFuture * retrieve_refs_for_enumerable_remote (BzFlatpakInstance *self, GCancellable *cancellable, const char *remote_name, FlatpakInstallation *installation, FlatpakRemote *remote) { g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autoptr (GFile) appstream_dir = NULL; g_autofree char *appstream_dir_path = NULL; g_autofree char *appstream_xml_path = NULL; g_autoptr (GFile) appstream_xml = NULL; g_autoptr (XbBuilderSource) source = NULL; g_autoptr (XbSilo) silo = NULL; g_autoptr (XbNode) root = NULL; g_autoptr (GPtrArray) children = NULL; g_autoptr (GHashTable) component_hash = NULL; g_autoptr (GPtrArray) refs = NULL; g_debug ("Remote '%s' is enumerable, listing all remote refs", remote_name); result = flatpak_installation_update_remote_sync ( installation, remote_name, cancellable, &local_error); if (!result) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "Failed to synchronize remote '%s': %s", remote_name, local_error->message); result = flatpak_installation_update_appstream_full_sync ( installation, remote_name, NULL, NULL, NULL, NULL, cancellable, &local_error); if (!result) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "Failed to synchronize appstream data for remote '%s': %s", remote_name, local_error->message); appstream_dir = flatpak_remote_get_appstream_dir (remote, NULL); if (appstream_dir == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to locate appstream directory for remote '%s': %s", remote_name, local_error->message); appstream_dir_path = g_file_get_path (appstream_dir); appstream_xml_path = g_build_filename (appstream_dir_path, "appstream.xml.gz", NULL); if (!g_file_test (appstream_xml_path, G_FILE_TEST_EXISTS)) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to verify existence of appstream " "bundle download at path %s for remote '%s'", appstream_xml_path, remote_name); appstream_xml = g_file_new_for_path (appstream_xml_path); source = xb_builder_source_new (); result = xb_builder_source_load_file ( source, appstream_xml, XB_BUILDER_SOURCE_FLAG_WATCH_FILE | XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT, cancellable, &local_error); if (!result) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to load binary xml from appstream bundle " "download at path %s for remote '%s': %s", appstream_xml_path, remote_name, local_error->message); silo = build_silo (source, cancellable, &local_error); #ifdef __GLIBC__ /* From gnome-software/plugins/core/gs-plugin-appstream.c * * https://gitlab.gnome.org/GNOME/gnome-software/-/issues/941 * libxmlb <= 0.3.22 makes lots of temporary heap allocations parsing large XMLs * trim the heap after parsing to control RSS growth. */ malloc_trim (0); #endif if (silo == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, "Failed to compile binary xml silo from appstream bundle " "download at path %s for remote '%s': %s", appstream_xml_path, remote_name, local_error->message); root = xb_silo_get_root (silo); children = xb_node_get_children (root); component_hash = g_hash_table_new (g_str_hash, g_str_equal); for (guint i = 0; i < children->len; i++) { XbNode *component_node = NULL; AsComponent *component = NULL; const char *id = NULL; component_node = g_ptr_array_index (children, i); component = parse_component_for_node (component_node, &local_error); if (component == NULL) { SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_APPSTREAM_FAILURE, "Failed to parse appstream component from appstream bundle silo " "originating from download at path %s for remote '%s': %s", appstream_xml_path, remote_name, local_error->message); } id = as_component_get_id (component); g_hash_table_replace (component_hash, (gpointer) id, component); } refs = flatpak_installation_list_remote_refs_sync ( installation, remote_name, cancellable, &local_error); if (refs == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "Failed to enumerate refs for remote '%s': %s", remote_name, local_error->message); { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_TELL_INCOMING); bz_backend_notification_set_n_incoming (notif, refs->len); send_notif_all (self, notif, TRUE); } /* Ensure the receiving side of the channel gets * runtimes first, then addons, then applications */ g_ptr_array_sort_values_with_data ( refs, (GCompareDataFunc) cmp_rref, component_hash); for (guint i = 0; i < refs->len; i++) { FlatpakRemoteRef *rref = NULL; const char *name = NULL; AsComponent *component = NULL; g_autoptr (BzFlatpakEntry) entry = NULL; rref = g_ptr_array_index (refs, i); name = flatpak_ref_get_name (FLATPAK_REF (rref)); component = g_hash_table_lookup (component_hash, name); if (component == NULL) { g_autofree char *desktop_id = NULL; desktop_id = g_strdup_printf ("%s.desktop", name); component = g_hash_table_lookup (component_hash, desktop_id); } entry = bz_flatpak_entry_new_for_ref ( FLATPAK_REF (rref), remote, installation == self->user, component, appstream_dir_path, NULL); if (entry != NULL) { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REPLACE_ENTRY); bz_backend_notification_set_entry (notif, BZ_ENTRY (entry)); send_notif_all (self, notif, TRUE); } else { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_TELL_INCOMING); bz_backend_notification_set_n_incoming (notif, -1); send_notif_all (self, notif, TRUE); } } return dex_future_new_true (); } static DexFuture * retrieve_refs_for_noenumerable_remote (BzFlatpakInstance *self, GCancellable *cancellable, const char *remote_name, FlatpakInstallation *installation, FlatpakRemote *remote) { g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) installed_apps = NULL; guint matched = 0; installed_apps = flatpak_installation_list_installed_refs_by_kind ( installation, FLATPAK_REF_KIND_APP, cancellable, &local_error); if (installed_apps == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_LOCAL_SYNCHRONIZATION_FAILURE, "Failed to enumerate installed apps for non-enumerable remote '%s': %s", remote_name, local_error->message); g_debug ("Found %u total installed apps, filtering for remote '%s'", installed_apps->len, remote_name); for (guint i = 0; i < installed_apps->len; i++) { FlatpakInstalledRef *iref = NULL; const char *ref_origin = NULL; g_autoptr (AsComponent) component = NULL; g_autoptr (BzFlatpakEntry) entry = NULL; g_autoptr (GBytes) appstream_gz = NULL; iref = g_ptr_array_index (installed_apps, i); ref_origin = flatpak_installed_ref_get_origin (iref); if (g_strcmp0 (ref_origin, remote_name) != 0) continue; matched++; appstream_gz = flatpak_installed_ref_load_appdata (iref, cancellable, NULL); if (appstream_gz != NULL) { g_autoptr (GBytes) appstream = NULL; g_autoptr (XbBuilderSource) source = NULL; g_autoptr (XbSilo) silo = NULL; g_autoptr (GError) appstream_error = NULL; appstream = decompress_appstream_gz (appstream_gz, cancellable, &appstream_error); if (appstream == NULL) { g_info ("Could not decompress appstream for installed ref: %s", appstream_error ? appstream_error->message : "unknown error"); goto create_entry; } source = xb_builder_source_new (); if (!xb_builder_source_load_bytes (source, appstream, XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT, &appstream_error)) { g_info ("Could not load appstream bytes: %s", appstream_error ? appstream_error->message : "unknown error"); goto create_entry; } silo = build_silo (source, cancellable, &appstream_error); if (silo == NULL) { g_info ("Could not build silo from appstream: %s", appstream_error ? appstream_error->message : "unknown error"); goto create_entry; } component = extract_first_component_for_silo (silo, &appstream_error); if (component == NULL) { g_info ("Could not parse appstream component: %s", appstream_error ? appstream_error->message : "unknown error"); } } create_entry: entry = bz_flatpak_entry_new_for_ref ( FLATPAK_REF (iref), remote, installation == self->user, component, NULL, NULL); if (entry != NULL) { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REPLACE_ENTRY); bz_backend_notification_set_entry (notif, BZ_ENTRY (entry)); send_notif_all (self, notif, TRUE); } } g_debug ("Found %u installed apps from non-enumerable remote '%s'", matched, remote_name); { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_TELL_INCOMING); bz_backend_notification_set_n_incoming (notif, matched); send_notif_all (self, notif, TRUE); } return dex_future_new_true (); } static DexFuture * retrieve_refs_for_remote_fiber (RetrieveRefsForRemoteData *data) { FlatpakInstallation *installation = data->installation; FlatpakRemote *remote = data->remote; g_autoptr (BzFlatpakInstance) self = NULL; const char *remote_name = NULL; gboolean is_noenumerate = FALSE; g_autoptr (DexFuture) ret = NULL; bz_weak_get_or_return_reject (self, data->parent->self); remote_name = flatpak_remote_get_name (remote); is_noenumerate = flatpak_remote_get_noenumerate (remote); /* the fedora flatpak repos cause too many issues */ if (strstr (remote_name, "fedora") != NULL) is_noenumerate = TRUE; #ifdef SANDBOXED_LIBFLATPAK if (is_noenumerate || installation == self->user) #else if (is_noenumerate) #endif ret = retrieve_refs_for_noenumerable_remote ( self, data->parent->cancellable, remote_name, installation, remote); else ret = retrieve_refs_for_enumerable_remote ( self, data->parent->cancellable, remote_name, installation, remote); { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_FINISH); bz_backend_notification_set_remote_name (notif, remote_name); send_notif_all (self, notif, TRUE); } return g_steal_pointer (&ret); } static DexFuture * retrieve_installs_fiber (GatherRefsData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GCancellable *cancellable = data->cancellable; g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) system_refs = NULL; guint n_system_refs = 0; g_autoptr (GPtrArray) user_refs = NULL; guint n_user_refs = 0; g_autoptr (GHashTable) ids = NULL; bz_weak_get_or_return_reject (self, data->self); if (self->system != NULL) { flatpak_installation_drop_caches ( self->system, cancellable, NULL); system_refs = flatpak_installation_list_installed_refs ( self->system, cancellable, &local_error); if (system_refs == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_LOCAL_SYNCHRONIZATION_FAILURE, "Failed to discover installed refs for system installation: %s", local_error->message); n_system_refs = system_refs->len; } if (self->user != NULL) { flatpak_installation_drop_caches ( self->user, cancellable, NULL); user_refs = flatpak_installation_list_installed_refs ( self->user, cancellable, &local_error); if (user_refs == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_LOCAL_SYNCHRONIZATION_FAILURE, "Failed to discover installed refs for user installation: %s", local_error->message); n_user_refs = user_refs->len; } ids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); for (guint i = 0; i < n_system_refs + n_user_refs; i++) { gboolean user = FALSE; FlatpakInstalledRef *iref = NULL; const char *version = NULL; g_autofree char *unique_id = NULL; if (i < n_system_refs) { user = FALSE; iref = g_ptr_array_index (system_refs, i); } else { user = TRUE; iref = g_ptr_array_index (user_refs, i - n_system_refs); } version = flatpak_installed_ref_get_appdata_version (iref); unique_id = bz_flatpak_ref_format_unique (FLATPAK_REF (iref), user); g_hash_table_replace (ids, g_steal_pointer (&unique_id), g_strdup (version != NULL ? version : "")); } return dex_future_new_take_boxed ( G_TYPE_HASH_TABLE, g_steal_pointer (&ids)); } static gboolean should_skip_extension_ref (FlatpakInstalledRef *iref) { const gchar *ref_name = flatpak_ref_get_name (FLATPAK_REF (iref)); /* These get updated with their parents and look really bad in the UI */ return g_str_has_suffix (ref_name, ".Locale") || g_str_has_suffix (ref_name, ".Debug") || g_str_has_suffix (ref_name, ".Sources"); } static DexFuture * retrieve_updates_fiber (GatherRefsData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GCancellable *cancellable = data->cancellable; g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) system_refs = NULL; guint n_sys_refs = 0; g_autoptr (GPtrArray) user_refs = NULL; guint n_user_refs = 0; g_autoptr (GPtrArray) ids = NULL; bz_weak_get_or_return_reject (self, data->self); if (self->system != NULL) { system_refs = flatpak_installation_list_installed_refs_for_update ( self->system, cancellable, &local_error); if (system_refs == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "Failed to discover update-elligible refs for system installation: %s", local_error->message); n_sys_refs = system_refs->len; } #ifndef SANDBOXED_LIBFLATPAK if (self->user != NULL) #else if (self->user != NULL && g_getenv ("FLATPAK_BINARY") != NULL) #endif { user_refs = flatpak_installation_list_installed_refs_for_update ( self->user, cancellable, &local_error); if (user_refs == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, "Failed to discover update-elligible refs for user installation: %s", local_error->message); n_user_refs = user_refs->len; } ids = g_ptr_array_new_with_free_func (g_free); for (guint i = 0; i < n_sys_refs + n_user_refs; i++) { gboolean user = FALSE; FlatpakInstalledRef *iref = NULL; if (i < n_sys_refs) { user = FALSE; iref = g_ptr_array_index (system_refs, i); } else { user = TRUE; iref = g_ptr_array_index (user_refs, i - n_sys_refs); } if (should_skip_extension_ref (iref)) continue; g_ptr_array_add (ids, bz_flatpak_ref_format_unique (FLATPAK_REF (iref), user)); } return dex_future_new_take_boxed ( G_TYPE_PTR_ARRAY, g_steal_pointer (&ids)); } static DexFuture * list_repositories_fiber (ListReposData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GCancellable *cancellable = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) system_repos = NULL; g_autoptr (GPtrArray) user_repos = NULL; g_autoptr (GListStore) repos = NULL; cancellable = data->cancellable; bz_weak_get_or_return_reject (self, data->self); repos = g_list_store_new (BZ_TYPE_REPOSITORY); if (self->system != NULL) { system_repos = flatpak_installation_list_remotes ( self->system, cancellable, &local_error); if (system_repos == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_CANNOT_INITIALIZE, "Failed to enumerate remotes for system installation: %s", local_error->message); for (guint i = 0; i < system_repos->len; i++) { FlatpakRemote *remote = NULL; g_autoptr (BzRepository) repo = NULL; remote = g_ptr_array_index (system_repos, i); repo = g_object_new (BZ_TYPE_REPOSITORY, "name", flatpak_remote_get_name (remote), "title", flatpak_remote_get_title (remote), "url", flatpak_remote_get_url (remote), "is-user", FALSE, NULL); g_list_store_append (repos, repo); } } if (self->user != NULL) { user_repos = flatpak_installation_list_remotes ( self->user, cancellable, &local_error); if (user_repos == NULL) SEND_AND_RETURN_ERROR ( self, TRUE, BZ_FLATPAK_ERROR_CANNOT_INITIALIZE, "Failed to enumerate remotes for user installation: %s", local_error->message); for (guint i = 0; i < user_repos->len; i++) { FlatpakRemote *remote = NULL; g_autoptr (BzRepository) repo = NULL; remote = g_ptr_array_index (user_repos, i); repo = g_object_new (BZ_TYPE_REPOSITORY, "name", flatpak_remote_get_name (remote), "title", flatpak_remote_get_title (remote), "url", flatpak_remote_get_url (remote), "is-user", TRUE, NULL); g_list_store_append (repos, repo); } } return dex_future_new_for_object (g_steal_pointer (&repos)); } static DexFuture * ensure_runtime_remote_fiber (BzFlatpakInstance *self, FlatpakInstallation *installation, const char *bundle_path, GCancellable *cancellable) { g_autoptr (GError) local_error = NULL; g_autoptr (GFile) bundle_file = NULL; g_autoptr (FlatpakBundleRef) bundle_ref = NULL; g_autofree char *runtime_repo_url = NULL; g_autoptr (SoupMessage) message = NULL; g_autoptr (GOutputStream) output = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (FlatpakRemote) remote = NULL; g_autofree char *remote_name = NULL; g_autoptr (GKeyFile) key_file = NULL; g_autofree char *gpg_key_base64 = NULL; g_autoptr (GBytes) gpg_key_bytes = NULL; bundle_file = g_file_new_for_path (bundle_path); bundle_ref = flatpak_bundle_ref_new (bundle_file, NULL); if (bundle_ref == NULL) return dex_future_new_true (); runtime_repo_url = flatpak_bundle_ref_get_runtime_repo_url (bundle_ref); if (runtime_repo_url == NULL) return dex_future_new_true (); remote_name = g_path_get_basename (runtime_repo_url); { char *dot = strrchr (remote_name, '.'); if (dot != NULL) *dot = '\0'; } { g_autoptr (FlatpakRemote) existing = NULL; existing = flatpak_installation_get_remote_by_name ( installation, remote_name, cancellable, NULL); if (existing != NULL) return dex_future_new_true (); } message = soup_message_new (SOUP_METHOD_GET, runtime_repo_url); output = g_memory_output_stream_new_resizable (); dex_await ( bz_send_with_global_http_session_then_splice_into (message, output), &local_error); if (local_error != NULL) { g_warning ("failed to fetch %s: %s", runtime_repo_url, local_error->message); return dex_future_new_true (); } bytes = g_memory_output_stream_steal_as_bytes (G_MEMORY_OUTPUT_STREAM (output)); key_file = g_key_file_new (); if (!g_key_file_load_from_bytes (key_file, bytes, G_KEY_FILE_NONE, NULL)) return dex_future_new_true (); gpg_key_base64 = g_key_file_get_string (key_file, "Flatpak Repo", "GPGKey", NULL); if (gpg_key_base64 == NULL) return dex_future_new_true (); { gsize gpg_key_len = 0; guchar *gpg_key_data = g_base64_decode (gpg_key_base64, &gpg_key_len); gpg_key_bytes = g_bytes_new_take (gpg_key_data, gpg_key_len); } remote = flatpak_remote_new_from_file (remote_name, bytes, &local_error); if (remote == NULL) { g_warning ("failed to parse flatpakrepo from %s: %s", runtime_repo_url, local_error->message); return dex_future_new_true (); } flatpak_remote_set_gpg_verify (remote, TRUE); flatpak_remote_set_gpg_key (remote, gpg_key_bytes); if (!flatpak_installation_add_remote ( installation, remote, TRUE, cancellable, &local_error)) { g_warning ("failed to add remote '%s': %s", remote_name, local_error->message); g_clear_error (&local_error); } return dex_future_new_true (); } static DexFuture * transaction_fiber (TransactionData *data) { g_autoptr (BzFlatpakInstance) self = NULL; GCancellable *cancellable = data->cancellable; GPtrArray *installations = data->installs; GPtrArray *updates = data->updates; GPtrArray *removals = data->removals; DexChannel *channel = data->channel; g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autoptr (GPtrArray) transactions = NULL; g_autoptr (GPtrArray) entries = NULL; g_autoptr (GPtrArray) jobs = NULL; g_autoptr (GHashTable) errored = NULL; bz_weak_get_or_return_reject (self, data->self); transactions = g_ptr_array_new_with_free_func (g_object_unref); entries = g_ptr_array_new_with_free_func (g_object_unref); if (installations != NULL) { for (guint i = 0; i < installations->len; i++) { BzFlatpakEntry *entry = NULL; const char *bundle_path = NULL; FlatpakInstallation *installation = NULL; entry = g_ptr_array_index (installations, i); bundle_path = bz_flatpak_entry_get_bundle_path (entry); if (bundle_path == NULL) continue; installation = bz_flatpak_entry_is_user (entry) ? self->user_interactive : self->system_interactive; if (bundle_path != NULL && installation != NULL) dex_await ( ensure_runtime_remote_fiber (self, installation, bundle_path, cancellable), NULL); } for (guint i = 0; i < installations->len; i++) { BzFlatpakEntry *entry = NULL; const char *bundle_path = NULL; FlatpakRef *ref = NULL; gboolean is_user = FALSE; g_autofree char *ref_fmt = NULL; g_autoptr (FlatpakTransaction) transaction = NULL; entry = g_ptr_array_index (installations, i); bundle_path = bz_flatpak_entry_get_bundle_path (entry); ref = bz_flatpak_entry_get_ref (entry); is_user = bz_flatpak_entry_is_user (BZ_FLATPAK_ENTRY (entry)); ref_fmt = flatpak_ref_format_ref (ref); if ((is_user && self->user == NULL) || (!is_user && self->system == NULL)) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to append the update of %s to transaction " "because its installation couldn't be found", ref_fmt); } transaction = flatpak_transaction_new_for_installation ( is_user ? self->user_interactive : self->system_interactive, cancellable, &local_error); if (transaction == NULL) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to initialize potential transaction for installation: %s", local_error->message); } if (bundle_path != NULL) /* Prioritize bundle installation */ { g_autoptr (GFile) file = NULL; file = g_file_new_for_path (bundle_path); result = flatpak_transaction_add_install_bundle ( transaction, file, NULL, &local_error); } else result = flatpak_transaction_add_install ( transaction, bz_entry_get_remote_repo_name (BZ_ENTRY (entry)), ref_fmt, NULL, &local_error); if (!result) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to append the installation of %s to transaction: %s", ref_fmt, local_error->message); } g_ptr_array_add (transactions, g_steal_pointer (&transaction)); g_ptr_array_add (entries, g_object_ref (entry)); g_hash_table_replace (data->ref_to_entry_hash, g_steal_pointer (&ref_fmt), g_object_ref (entry)); } } if (updates != NULL) { g_autoptr (FlatpakTransaction) user_transaction = NULL; g_autoptr (FlatpakTransaction) sys_transaction = NULL; for (guint i = 0; i < updates->len; i++) { BzFlatpakEntry *entry = NULL; FlatpakRef *ref = NULL; gboolean is_user = FALSE; g_autofree char *ref_fmt = NULL; FlatpakInstallation *installation = NULL; g_autoptr (FlatpakInstalledRef) iref = NULL; const char *eol_rebase = NULL; FlatpakTransaction *target_transaction = NULL; entry = g_ptr_array_index (updates, i); ref = bz_flatpak_entry_get_ref (entry); is_user = bz_flatpak_entry_is_user (BZ_FLATPAK_ENTRY (entry)); ref_fmt = flatpak_ref_format_ref (ref); if ((is_user && self->user == NULL) || (!is_user && self->system == NULL)) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to append the update of %s to transaction " "because its installation couldn't be found", ref_fmt); } installation = is_user ? self->user : self->system; if (is_user && user_transaction == NULL) user_transaction = flatpak_transaction_new_for_installation ( self->user_interactive, cancellable, &local_error); else if (!is_user && sys_transaction == NULL) sys_transaction = flatpak_transaction_new_for_installation ( self->system_interactive, cancellable, &local_error); if ((is_user && user_transaction == NULL) || (!is_user && sys_transaction == NULL)) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to initialize potential transaction for installation: %s", local_error->message); } /* Put updates in one transaction to prevent dependency race-conditions, since the update list is most likely coming from this instance */ target_transaction = is_user ? user_transaction : sys_transaction; iref = flatpak_installation_get_installed_ref ( installation, flatpak_ref_get_kind (ref), flatpak_ref_get_name (ref), flatpak_ref_get_arch (ref), flatpak_ref_get_branch (ref), cancellable, NULL); if (iref != NULL) eol_rebase = flatpak_installed_ref_get_eol_rebase (iref); if (eol_rebase != NULL) { const char *origin = NULL; static const char *empty_previous_ids[] = { NULL }; origin = flatpak_installed_ref_get_origin (iref); g_debug ("%s is end-of-life, rebasing to %s instead of updating", ref_fmt, eol_rebase); g_hash_table_add (data->rebased_refs, g_strdup (ref_fmt)); #if FLATPAK_CHECK_VERSION(1, 15, 6) result = flatpak_transaction_add_rebase_and_uninstall ( target_transaction, origin, eol_rebase, ref_fmt, NULL, empty_previous_ids, &local_error); #else result = flatpak_transaction_add_rebase ( target_transaction, origin, eol_rebase, NULL, NULL, &local_error) && flatpak_transaction_add_uninstall ( target_transaction, ref_fmt, &local_error); #endif } else result = flatpak_transaction_add_update ( target_transaction, ref_fmt, NULL, NULL, &local_error); if (!result) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to append the update of %s to transaction: %s", ref_fmt, local_error->message); } g_ptr_array_add (entries, g_object_ref (entry)); g_hash_table_replace (data->ref_to_entry_hash, g_steal_pointer (&ref_fmt), g_object_ref (entry)); } if (user_transaction != NULL) g_ptr_array_add (transactions, g_steal_pointer (&user_transaction)); if (sys_transaction != NULL) g_ptr_array_add (transactions, g_steal_pointer (&sys_transaction)); } if (removals != NULL) { for (guint i = 0; i < removals->len; i++) { BzFlatpakEntry *entry = NULL; FlatpakRef *ref = NULL; gboolean is_user = FALSE; g_autofree char *ref_fmt = NULL; g_autoptr (FlatpakTransaction) transaction = NULL; entry = g_ptr_array_index (removals, i); ref = bz_flatpak_entry_get_ref (entry); is_user = bz_flatpak_entry_is_user (BZ_FLATPAK_ENTRY (entry)); ref_fmt = flatpak_ref_format_ref (ref); if ((is_user && self->user == NULL) || (!is_user && self->system == NULL)) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to append the removal of %s to transaction " "because its installation couldn't be found", ref_fmt); } transaction = flatpak_transaction_new_for_installation ( is_user ? self->user_interactive : self->system_interactive, cancellable, &local_error); if (transaction == NULL) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to initialize potential transaction for installation: %s", local_error->message); } result = flatpak_transaction_add_uninstall ( transaction, ref_fmt, &local_error); if (!result) { dex_channel_close_send (channel); return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to append the removal of %s to transaction: %s", ref_fmt, local_error->message); } g_ptr_array_add (transactions, g_steal_pointer (&transaction)); g_ptr_array_add (entries, g_object_ref (entry)); g_hash_table_replace (data->ref_to_entry_hash, g_steal_pointer (&ref_fmt), g_object_ref (entry)); } } g_mutex_lock (&self->transactions_mutex); #define REGISTER_CANCELLABLES(entry) \ G_STMT_START \ { \ GPtrArray *cancellables = NULL; \ \ cancellables = g_hash_table_lookup (self->ongoing_cancellables, entry); \ if (cancellables != NULL) \ g_ptr_array_add (cancellables, g_object_ref (cancellable)); \ else \ { \ cancellables = g_ptr_array_new_with_free_func (g_object_unref); \ g_ptr_array_add (cancellables, g_object_ref (cancellable)); \ g_hash_table_replace (self->ongoing_cancellables, g_object_ref (entry), cancellables); \ } \ } \ G_STMT_END if (installations != NULL) { for (guint i = 0; i < installations->len; i++) { BzEntry *entry = NULL; entry = g_ptr_array_index (installations, i); REGISTER_CANCELLABLES (entry); } } if (removals != NULL) { for (guint i = 0; i < removals->len; i++) { BzEntry *entry = NULL; entry = g_ptr_array_index (removals, i); REGISTER_CANCELLABLES (entry); } } if (updates != NULL) { for (guint i = 0; i < updates->len; i++) { BzEntry *entry = NULL; entry = g_ptr_array_index (updates, i); REGISTER_CANCELLABLES (entry); } } #undef REGISTER_CANCELLABLES g_mutex_unlock (&self->transactions_mutex); jobs = g_ptr_array_new_with_free_func (dex_unref); for (guint i = 0; i < transactions->len; i++) { FlatpakTransaction *transaction = NULL; g_autoptr (TransactionJobData) job_data = NULL; transaction = g_ptr_array_index (transactions, i); job_data = transaction_job_data_new (); job_data->parent = transaction_data_ref (data); job_data->transaction = g_object_ref (transaction); g_ptr_array_add ( jobs, dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) transaction_job_fiber, transaction_job_data_ref (job_data), transaction_job_data_unref)); } dex_await (dex_future_all_racev ( (DexFuture *const *) jobs->pdata, jobs->len), NULL); g_mutex_lock (&self->transactions_mutex); #define UNREGISTER_CANCELLABLES(entry) \ G_STMT_START \ { \ GPtrArray *cancellables = NULL; \ \ cancellables = g_hash_table_lookup (self->ongoing_cancellables, entry); \ if (cancellables != NULL) \ { \ g_ptr_array_remove (cancellables, cancellable); \ if (cancellables->len == 0) \ g_hash_table_remove (self->ongoing_cancellables, entry); \ } \ } \ G_STMT_END if (installations != NULL) { for (guint i = 0; i < installations->len; i++) { BzEntry *entry = NULL; entry = g_ptr_array_index (installations, i); UNREGISTER_CANCELLABLES (entry); } } if (removals != NULL) { for (guint i = 0; i < removals->len; i++) { BzEntry *entry = NULL; entry = g_ptr_array_index (removals, i); UNREGISTER_CANCELLABLES (entry); } } if (updates != NULL) { for (guint i = 0; i < updates->len; i++) { BzEntry *entry = NULL; entry = g_ptr_array_index (updates, i); UNREGISTER_CANCELLABLES (entry); } } #undef UNREGISTER_CANCELLABLES g_mutex_unlock (&self->transactions_mutex); if (data->send_futures->len > 0) dex_await (dex_future_allv ( (DexFuture *const *) data->send_futures->pdata, data->send_futures->len), NULL); errored = g_hash_table_new_full ( g_direct_hash, g_direct_equal, g_object_unref, (GDestroyNotify) g_error_free); for (guint i = 0; i < jobs->len; i++) { DexFuture *job = NULL; BzEntry *entry = NULL; job = g_ptr_array_index (jobs, i); entry = g_ptr_array_index (entries, i); dex_future_get_value (job, &local_error); if (local_error != NULL) g_hash_table_replace ( errored, g_object_ref (entry), g_steal_pointer (&local_error)); } dex_channel_close_send (channel); return dex_future_new_take_boxed (G_TYPE_HASH_TABLE, g_steal_pointer (&errored)); } static DexFuture * transaction_job_fiber (TransactionJobData *data) { TransactionData *parent = data->parent; FlatpakTransaction *transaction = data->transaction; GCancellable *cancellable = parent->cancellable; g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_signal_connect (transaction, "new-operation", G_CALLBACK (transaction_new_operation), parent); g_signal_connect (transaction, "operation-done", G_CALLBACK (transaction_operation_done), parent); g_signal_connect (transaction, "operation-error", G_CALLBACK (transaction_operation_error), parent); g_signal_connect (transaction, "ready", G_CALLBACK (transaction_ready), parent); result = flatpak_transaction_run (transaction, cancellable, &local_error); if (!result) return dex_future_new_reject ( BZ_FLATPAK_ERROR, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, "Failed to run flatpak transaction on installation: %s", local_error->message); return dex_future_new_true (); } static void transaction_new_operation (FlatpakTransaction *transaction, FlatpakTransactionOperation *operation, FlatpakTransactionProgress *progress, TransactionData *data) { g_autoptr (BzFlatpakInstance) self = NULL; FlatpakTransactionOperationType kind = 0; BzFlatpakEntry *entry = NULL; g_autoptr (BzBackendTransactionOpPayload) payload = NULL; g_autoptr (TransactionOperationData) operation_data = NULL; bz_weak_get_or_return (self, data->self); kind = flatpak_transaction_operation_get_operation_type (operation); if (kind == FLATPAK_TRANSACTION_OPERATION_INSTALL || kind == FLATPAK_TRANSACTION_OPERATION_UPDATE || kind == FLATPAK_TRANSACTION_OPERATION_INSTALL_BUNDLE || kind == FLATPAK_TRANSACTION_OPERATION_UNINSTALL) { g_mutex_lock (&self->mute_mutex); if (self->user_interactive == flatpak_transaction_get_installation (transaction)) self->user_mute++; else self->system_mute++; g_mutex_unlock (&self->mute_mutex); } if (data->channel == NULL) return; flatpak_transaction_progress_set_update_frequency (progress, 100); entry = find_entry_from_operation (data, operation); payload = bz_backend_transaction_op_payload_new (); bz_backend_transaction_op_payload_set_entry ( payload, BZ_ENTRY (entry)); bz_backend_transaction_op_payload_set_name ( payload, flatpak_transaction_operation_get_ref (operation)); bz_backend_transaction_op_payload_set_download_size ( payload, flatpak_transaction_operation_get_download_size (operation)); bz_backend_transaction_op_payload_set_installed_size ( payload, flatpak_transaction_operation_get_installed_size (operation)); g_mutex_lock (&data->mutex); g_ptr_array_add ( data->send_futures, dex_channel_send ( data->channel, dex_future_new_for_object (payload))); data->unidentified_op_cnt--; g_mutex_unlock (&data->mutex); g_object_set_data_full ( G_OBJECT (operation), "payload", g_object_ref (payload), g_object_unref); operation_data = transaction_operation_data_new (); operation_data->parent = transaction_data_ref (data); operation_data->entry = bz_object_maybe_ref (entry); operation_data->op = g_object_ref (payload); g_signal_connect_data ( progress, "changed", G_CALLBACK (transaction_progress_changed), transaction_operation_data_ref (operation_data), transaction_operation_data_unref_closure, G_CONNECT_DEFAULT); } static void transaction_operation_done (FlatpakTransaction *transaction, FlatpakTransactionOperation *operation, gchar *commit, gint result, TransactionData *data) { g_autoptr (GMutexLocker) locker = NULL; g_autoptr (BzFlatpakInstance) self = NULL; g_autoptr (BzBackendTransactionOpPayload) payload = NULL; g_autoptr (TransactionOperationDoneData) future_data = NULL; g_autoptr (DexFuture) future = NULL; bz_weak_get_or_return (self, data->self); locker = g_mutex_locker_new (&data->mutex); g_hash_table_replace ( data->op_to_progress_hash, g_object_ref (operation), GINT_TO_POINTER (100)); payload = g_object_steal_data (G_OBJECT (operation), "payload"); if (payload != NULL) g_ptr_array_add ( data->send_futures, dex_channel_send ( data->channel, dex_future_new_for_object (payload))); if (result == FLATPAK_TRANSACTION_RESULT_NO_CHANGE) return; future_data = transaction_operation_done_data_new (); future_data->parent = transaction_data_ref (data); future_data->transaction = g_object_ref (transaction); future_data->operation = g_object_ref (operation); future = dex_scheduler_spawn ( self->scheduler, bz_get_dex_stack_size (), (DexFiberFunc) transaction_operation_done_fiber, transaction_operation_done_data_ref (future_data), transaction_operation_done_data_unref); g_ptr_array_add (data->send_futures, g_steal_pointer (&future)); } static gboolean transaction_operation_error (FlatpakTransaction *object, FlatpakTransactionOperation *operation, GError *error, gint details, TransactionData *data) { g_autoptr (BzBackendTransactionOpPayload) payload = NULL; /* `FLATPAK_TRANSACTION_ERROR_DETAILS_NON_FATAL` is the only possible value of `details` */ g_warning ("Transaction failed to complete: %s", error->message); g_mutex_lock (&data->mutex); g_hash_table_replace ( data->op_to_progress_hash, g_object_ref (operation), GINT_TO_POINTER (100)); payload = g_object_steal_data (G_OBJECT (operation), "payload"); if (payload != NULL) { g_object_set_data_full ( G_OBJECT (payload), "error", g_strdup (error->message), g_free); g_ptr_array_add ( data->send_futures, dex_channel_send ( data->channel, dex_future_new_for_object (payload))); } g_mutex_unlock (&data->mutex); /* Don't recover for now */ return FALSE; } static gboolean transaction_ready (FlatpakTransaction *object, TransactionData *data) { g_autolist (GObject) operations = NULL; operations = flatpak_transaction_get_operations (object); g_mutex_lock (&data->mutex); data->unidentified_op_cnt += g_list_length (operations); g_mutex_unlock (&data->mutex); return TRUE; } static BzFlatpakEntry * find_entry_from_operation (TransactionData *data, FlatpakTransactionOperation *operation) { GPtrArray *related_to_ops = NULL; const char *ref_fmt = NULL; BzFlatpakEntry *entry = NULL; related_to_ops = flatpak_transaction_operation_get_related_to_ops (operation); ref_fmt = flatpak_transaction_operation_get_ref (operation); entry = g_hash_table_lookup (data->ref_to_entry_hash, ref_fmt); if (entry != NULL) return entry; if (related_to_ops != NULL) { for (guint i = 0; i < related_to_ops->len; i++) { FlatpakTransactionOperation *related_op = NULL; related_op = g_ptr_array_index (related_to_ops, i); entry = find_entry_from_operation (data, related_op); if (entry != NULL) break; } } return entry; } static void transaction_progress_changed (FlatpakTransactionProgress *progress, TransactionOperationData *data) { TransactionData *parent = data->parent; g_autoptr (BzBackendTransactionOpProgressPayload) payload = NULL; int int_progress = 0; double double_progress = 0.0; GHashTableIter iter = { 0 }; int progress_sum = 0; guint n_ops = 0; double total_progress = 0.0; g_mutex_lock (&parent->mutex); int_progress = flatpak_transaction_progress_get_progress (progress); double_progress = (double) flatpak_transaction_progress_get_progress (progress) / 100.0; g_hash_table_replace ( parent->op_to_progress_hash, g_object_ref (data->op), GINT_TO_POINTER (int_progress)); g_hash_table_iter_init (&iter, parent->op_to_progress_hash); for (;;) { gpointer key = NULL; gpointer val = NULL; if (!g_hash_table_iter_next (&iter, &key, &val)) break; progress_sum += GPOINTER_TO_INT (val); n_ops++; } total_progress = MIN ((double) progress_sum / (double) ((n_ops + parent->unidentified_op_cnt) * 100), 1.0); payload = bz_backend_transaction_op_progress_payload_new (); bz_backend_transaction_op_progress_payload_set_op ( payload, data->op); bz_backend_transaction_op_progress_payload_set_status ( payload, flatpak_transaction_progress_get_status (progress)); bz_backend_transaction_op_progress_payload_set_is_estimating ( payload, flatpak_transaction_progress_get_is_estimating (progress)); bz_backend_transaction_op_progress_payload_set_progress ( payload, double_progress); bz_backend_transaction_op_progress_payload_set_total_progress ( payload, total_progress); bz_backend_transaction_op_progress_payload_set_bytes_transferred ( payload, flatpak_transaction_progress_get_bytes_transferred (progress)); bz_backend_transaction_op_progress_payload_set_start_time ( payload, flatpak_transaction_progress_get_start_time (progress)); g_ptr_array_add ( data->parent->send_futures, dex_channel_send ( data->parent->channel, dex_future_new_for_object (payload))); g_mutex_unlock (&parent->mutex); } static DexFuture * transaction_operation_done_fiber (TransactionOperationDoneData *data) { g_autoptr (BzFlatpakInstance) self = NULL; FlatpakTransaction *transaction = data->transaction; FlatpakTransactionOperation *operation = data->operation; g_autoptr (GError) local_error = NULL; FlatpakTransactionOperationType op_type = 0; BzBackendNotificationKind notif_kind = 0; const char *origin = NULL; const char *ref = NULL; gboolean is_user = FALSE; g_autofree char *unique_id = NULL; const char *version = NULL; gboolean was_rebased = FALSE; FlatpakInstallation *installation = NULL; g_autoptr (FlatpakInstalledRef) iref = NULL; g_autoptr (FlatpakRef) parsed_ref = NULL; bz_weak_get_or_return_reject (self, data->parent->self); op_type = flatpak_transaction_operation_get_operation_type (operation); switch (op_type) { case FLATPAK_TRANSACTION_OPERATION_INSTALL: case FLATPAK_TRANSACTION_OPERATION_INSTALL_BUNDLE: notif_kind = BZ_BACKEND_NOTIFICATION_KIND_INSTALL_DONE; break; case FLATPAK_TRANSACTION_OPERATION_UPDATE: notif_kind = BZ_BACKEND_NOTIFICATION_KIND_UPDATE_DONE; break; case FLATPAK_TRANSACTION_OPERATION_UNINSTALL: notif_kind = BZ_BACKEND_NOTIFICATION_KIND_REMOVE_DONE; break; case FLATPAK_TRANSACTION_OPERATION_LAST_TYPE: default: g_assert_not_reached (); } installation = flatpak_transaction_get_installation (transaction); origin = flatpak_transaction_operation_get_remote (operation); ref = flatpak_transaction_operation_get_ref (operation); is_user = installation == self->user_interactive; unique_id = bz_flatpak_ref_parts_format_unique (origin, ref, is_user); was_rebased = g_hash_table_contains (data->parent->rebased_refs, ref); if (op_type == FLATPAK_TRANSACTION_OPERATION_INSTALL_BUNDLE) { g_autoptr (FlatpakRemote) remote = NULL; { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_INVALIDATE_REMOTES); send_notif_all (self, notif, TRUE); } remote = flatpak_installation_get_remote_by_name ( installation, origin, NULL, NULL); if (remote != NULL) { { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_START); bz_backend_notification_set_remote_name (notif, origin); send_notif_all (self, notif, TRUE); } dex_await ( retrieve_refs_for_noenumerable_remote ( self, NULL, origin, installation, remote), NULL); { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_REMOTE_SYNC_FINISH); bz_backend_notification_set_remote_name (notif, origin); send_notif_all (self, notif, TRUE); } } } if (notif_kind == BZ_BACKEND_NOTIFICATION_KIND_INSTALL_DONE || notif_kind == BZ_BACKEND_NOTIFICATION_KIND_UPDATE_DONE) { parsed_ref = flatpak_ref_parse (ref, &local_error); if (parsed_ref != NULL) { iref = flatpak_installation_get_installed_ref ( installation, flatpak_ref_get_kind (parsed_ref), flatpak_ref_get_name (parsed_ref), flatpak_ref_get_arch (parsed_ref), flatpak_ref_get_branch (parsed_ref), NULL, &local_error); if (iref != NULL) version = flatpak_installed_ref_get_appdata_version (iref); else if (local_error != NULL) { g_warning ("Failed to get installed ref for version: %s", local_error->message); g_clear_error (&local_error); } } else if (local_error != NULL) { g_warning ("Failed to parse ref for version: %s", local_error->message); g_clear_error (&local_error); } } { g_autoptr (BzBackendNotification) notif = NULL; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, notif_kind); bz_backend_notification_set_unique_id (notif, unique_id); bz_backend_notification_set_was_rebased (notif, was_rebased); if (version != NULL && *version != '\0') bz_backend_notification_set_version (notif, version); send_notif_all (self, notif, TRUE); } return dex_future_new_true (); } static void installation_event (BzFlatpakInstance *self, GFile *file, GFile *other_file, GFileMonitorEvent event_type, GFileMonitor *monitor) { gboolean emit = FALSE; g_autoptr (BzBackendNotification) notif = NULL; g_mutex_lock (&self->mute_mutex); if (monitor == self->user_events) { if (self->user_mute > 0) self->user_mute--; else emit = TRUE; } else { if (self->system_mute > 0) self->system_mute--; else emit = TRUE; } g_mutex_unlock (&self->mute_mutex); if (!emit) return; notif = bz_backend_notification_new (); bz_backend_notification_set_kind (notif, BZ_BACKEND_NOTIFICATION_KIND_EXTERNAL_CHANGE); send_notif_all (self, notif, TRUE); } static void send_notif (BzFlatpakInstance *self, DexChannel *channel, BzBackendNotification *notif, gboolean lock) { g_autoptr (GMutexLocker) locker = NULL; if (lock) locker = g_mutex_locker_new (&self->notif_mutex); if (self->notif_send == NULL || !dex_future_is_pending (self->notif_send)) { dex_clear (&self->notif_send); self->notif_send = dex_channel_send ( channel, dex_future_new_for_object (notif)); } else { g_autoptr (WaitNotifData) data = NULL; data = wait_notif_data_new (); g_weak_ref_init (&data->self, self); data->channel = dex_ref (channel); data->notif = g_object_ref (notif); self->notif_send = dex_future_finally ( g_steal_pointer (&self->notif_send), (DexFutureCallback) wait_notif_finally, wait_notif_data_ref (data), wait_notif_data_unref); } } static void send_notif_all (BzFlatpakInstance *self, BzBackendNotification *notif, gboolean lock) { g_autoptr (GMutexLocker) locker = NULL; if (lock) locker = g_mutex_locker_new (&self->notif_mutex); for (guint i = 0; i < self->notif_channels->len;) { DexChannel *channel = NULL; channel = g_ptr_array_index (self->notif_channels, i); if (dex_channel_can_send (channel)) { send_notif (self, channel, notif, FALSE); i++; } else g_ptr_array_remove_index_fast (self->notif_channels, i); } } static DexFuture * wait_notif_finally (DexFuture *future, WaitNotifData *data) { g_autoptr (BzFlatpakInstance) self = NULL; g_autoptr (GMutexLocker) locker = NULL; bz_weak_get_or_return_reject (self, &data->self); locker = g_mutex_locker_new (&self->notif_mutex); if (future == self->notif_send) dex_clear (&self->notif_send); send_notif (self, data->channel, data->notif, FALSE); return dex_future_new_true (); } static gint cmp_rref (FlatpakRemoteRef *a, FlatpakRemoteRef *b, GHashTable *hash) { FlatpakRefKind a_fkind = 0; FlatpakRefKind b_fkind = 0; AsComponent *a_comp = NULL; AsComponent *b_comp = NULL; AsComponentKind a_kind = AS_COMPONENT_KIND_UNKNOWN; AsComponentKind b_kind = AS_COMPONENT_KIND_UNKNOWN; a_fkind = flatpak_ref_get_kind (FLATPAK_REF (a)); b_fkind = flatpak_ref_get_kind (FLATPAK_REF (b)); a_comp = g_hash_table_lookup (hash, flatpak_ref_get_name (FLATPAK_REF (a))); b_comp = g_hash_table_lookup (hash, flatpak_ref_get_name (FLATPAK_REF (b))); if (a_comp == NULL) return a_fkind == FLATPAK_REF_KIND_RUNTIME ? -1 : 1; if (b_comp == NULL) return b_fkind == FLATPAK_REF_KIND_RUNTIME ? 1 : -1; a_kind = as_component_get_kind (a_comp); b_kind = as_component_get_kind (b_comp); if (a_kind == AS_COMPONENT_KIND_RUNTIME) return -1; if (b_kind == AS_COMPONENT_KIND_RUNTIME) return 1; if (a_kind == AS_COMPONENT_KIND_ADDON) return -1; if (b_kind == AS_COMPONENT_KIND_ADDON) return 1; if (a_kind == AS_COMPONENT_KIND_DESKTOP_APP || a_kind == AS_COMPONENT_KIND_CONSOLE_APP || a_kind == AS_COMPONENT_KIND_WEB_APP) return 1; if (b_kind == AS_COMPONENT_KIND_DESKTOP_APP || b_kind == AS_COMPONENT_KIND_CONSOLE_APP || b_kind == AS_COMPONENT_KIND_WEB_APP) return -1; return 0; } static AsComponent * parse_component_for_node (XbNode *node, GError **error) { g_autofree char *component_xml = NULL; g_autoptr (AsMetadata) metadata = NULL; AsComponent *component = NULL; gboolean result = FALSE; component_xml = xb_node_export (node, XB_NODE_EXPORT_FLAG_NONE, error); if (component_xml == NULL) return NULL; metadata = as_metadata_new (); result = as_metadata_parse_data ( metadata, component_xml, -1, AS_FORMAT_KIND_XML, error); if (!result) return NULL; component = as_metadata_get_component (metadata); return bz_object_maybe_ref (component); } static GBytes * decompress_appstream_gz (GBytes *appstream_gz, GCancellable *cancellable, GError **error) { g_autoptr (GZlibDecompressor) decompressor = NULL; g_autoptr (GInputStream) stream_gz = NULL; g_autoptr (GInputStream) stream_data = NULL; g_autoptr (GBytes) appstream = NULL; decompressor = g_zlib_decompressor_new (G_ZLIB_COMPRESSOR_FORMAT_GZIP); stream_gz = g_memory_input_stream_new_from_bytes (appstream_gz); stream_data = g_converter_input_stream_new (stream_gz, G_CONVERTER (decompressor)); appstream = g_input_stream_read_bytes ( stream_data, 0x100000, /* 1MB */ cancellable, error); if (appstream == NULL) return NULL; return g_steal_pointer (&appstream); } static XbSilo * build_silo (XbBuilderSource *source, GCancellable *cancellable, GError **error) { g_autoptr (XbBuilder) builder = NULL; const gchar *const *locales = NULL; g_autoptr (XbSilo) silo = NULL; builder = xb_builder_new (); locales = g_get_language_names (); for (guint i = 0; locales[i] != NULL; i++) xb_builder_add_locale (builder, locales[i]); xb_builder_import_source (builder, source); silo = xb_builder_compile ( builder, XB_BUILDER_COMPILE_FLAG_NATIVE_LANGS, cancellable, error); return g_steal_pointer (&silo); } static AsComponent * extract_first_component_for_silo (XbSilo *silo, GError **error) { g_autoptr (XbNode) root = NULL; g_autoptr (GPtrArray) children = NULL; root = xb_silo_get_root (silo); children = xb_node_get_children (root); if (children == NULL || children->len == 0) return NULL; return parse_component_for_node ( g_ptr_array_index (children, 0), error); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flatpak-instance.h�������������������������������������������������0000664�0000000�0000000�00000003310�15240005042�0022130�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flatpak-instance.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> G_BEGIN_DECLS #define BZ_FLATPAK_ERROR (bz_flatpak_error_quark ()) GQuark bz_flatpak_error_quark (void); typedef enum { BZ_FLATPAK_ERROR_CANNOT_INITIALIZE = 0, BZ_FLATPAK_ERROR_LOCAL_SYNCHRONIZATION_FAILURE, BZ_FLATPAK_ERROR_REMOTE_SYNCHRONIZATION_FAILURE, BZ_FLATPAK_ERROR_TRANSACTION_FAILURE, BZ_FLATPAK_ERROR_IO_MISBEHAVIOR, BZ_FLATPAK_ERROR_APPSTREAM_FAILURE, BZ_FLATPAK_ERROR_GLYCIN_FAILURE, } BzFlatpakError; #define BZ_TYPE_FLATPAK_INSTANCE (bz_flatpak_instance_get_type ()) G_DECLARE_FINAL_TYPE (BzFlatpakInstance, bz_flatpak_instance, BZ, FLATPAK_INSTANCE, GObject) DexFuture * bz_flatpak_instance_new (void); DexFuture * bz_flatpak_instance_has_flathub (BzFlatpakInstance *self, GCancellable *cancellable); DexFuture * bz_flatpak_instance_ensure_has_flathub (BzFlatpakInstance *self, GCancellable *cancellable); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flatpak-private.h��������������������������������������������������0000664�0000000�0000000�00000003441�15240005042�0022003�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-flatpak-private.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <appstream.h> #include <flatpak.h> #include "bz-flatpak-entry.h" #include "bz-flatpak-instance.h" G_BEGIN_DECLS /* BzFlatpakInstance */ FlatpakInstallation * bz_flatpak_instance_get_system_installation (BzFlatpakInstance *self); FlatpakInstallation * bz_flatpak_instance_get_user_installation (BzFlatpakInstance *self); /* BzFlatpakEntry */ char * bz_flatpak_ref_parts_format_unique (const char *origin, const char *fmt, gboolean user); char * bz_flatpak_ref_format_unique (FlatpakRef *ref, gboolean user); BzFlatpakEntry * bz_flatpak_entry_new_for_ref (FlatpakRef *ref, FlatpakRemote *remote, gboolean user, AsComponent *component, const char *appstream_dir, GError **error); FlatpakRef * bz_flatpak_entry_get_ref (BzFlatpakEntry *self); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-flatpak-repo.txt���������������������������������������������������0000664�0000000�0000000�00000001310�15240005042�0021657�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=flatpak_repo parent-prefix=g parent-name=object author=AUTOGEN property=name char G_TYPE_STRING string property=title char G_TYPE_STRING string property=url char G_TYPE_STRING string property=homepage char G_TYPE_STRING string property=comment char G_TYPE_STRING string property=description char G_TYPE_STRING string property=icon char G_TYPE_STRING string property=gpg_key char G_TYPE_STRING string property=default_branch char G_TYPE_STRING string property=filter char G_TYPE_STRING string property=is_user gboolean G_TYPE_BOOLEAN boolean property=disabled gboolean G_TYPE_BOOLEAN boolean property=noenumerate gboolean G_TYPE_BOOLEAN boolean property=gpg_verify gboolean G_TYPE_BOOLEAN boolean ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-full-view.blp������������������������������������������������������0000664�0000000�0000000�00000105027�15240005042�0021154�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Gio 2.0; using Adw 1; template $BzFullView: Adw.Bin { child: Adw.ToolbarView { [top] Adw.HeaderBar header_bar { overflow: hidden; [title] Revealer { reveal-child: bind $is_scrolled_down(main_scroll.vadjustment as <Adjustment>.value) as <bool>; transition-type: slide_up; transition-duration: 500; overflow: visible; child: Label { label: bind template.entry-group as <$BzEntryGroup>.title; styles ["title"] }; } } content: Adw.ViewStack stack { enable-transitions: true; Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: "sad-computer-symbolic"; title: _("No Results"); description: _("Try a different search query"); }; } Adw.ViewStackPage { name: "loading"; child: Adw.Bin {}; } Adw.ViewStackPage { name: "content"; child: Adw.BreakpointBin { width-request: 360; height-request: 100; Adw.Breakpoint { condition ("max-width: 700px") setters { context_bar.orientation: vertical; context_bar.spacing: 4; context_bar.homogeneous: false; header_box.spacing: 12; app_name_box.spacing: 0; formfactor_support_tile_wide.visible: false; formfactor_support_tile_narrow.visible: true; screenshots.compact: true; header_bar.show-title: false; link_list.dual-column: false; } } child: Adw.BreakpointBin breakpoint_bin { width-request: 360; height-request: 100; Adw.Breakpoint breakpoint { condition ("max-width: 525px") setters { top_box.margin-start: 10; top_box.margin-end: 10; bottom_box.margin-start: 10; bottom_box.margin-end: 10; bottom_box.margin-top: 5; wide_install_controls.visible: false; narrow_install_controls.visible: true; app_icon.valign: start; app_icon.pixel-size: 96; } } child: Overlay { [overlay] Box shadow_overlay { valign: start; height-request: 3; can-target: false; } child: ScrolledWindow main_scroll { child: Box main_box { orientation: vertical; vexpand: false; margin-bottom: 15; spacing: 20; Adw.Banner { title: _("This is a local preview, some details may differ from the published listing"); visible: bind $metainfo_banner_visible(template.ui-entry as <$BzResult>.object as <$BzFlatpakEntry>.remote-repo-name) as <bool>; revealed: true; button-label: _("Preview Store Appearance"); button-clicked => $preview_other_metainfo_cb(template); } Adw.Clamp { maximum-size: 910; tightening-threshold: 576; margin-top: 15; child: Box top_box { orientation: vertical; margin-start: 25; margin-end: 25; spacing: 20; Box header_box { orientation: horizontal; spacing: 20; Image app_icon { valign: center; halign: center; pixel-size: 128; paintable: bind template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable; visible: bind $invert_boolean($is_null(template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable) as <bool>) as <bool>; styles [ "icon-dropshadow", ] } Image fallback_icon { valign: center; halign: center; pixel-size: 128; icon-name: "application-x-executable"; visible: bind $is_null(template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable) as <bool>; styles [ "icon-dropshadow", ] } Box not_icon { orientation: horizontal; baseline-position: center; halign: fill; hexpand: true; spacing: 15; Box app_name_box { orientation: vertical; valign: center; hexpand: true; spacing: 3; Label { styles [ "title-1", "app-title", ] xalign: 0.0; wrap: true; lines: 2; ellipsize: end; wrap-mode: word_char; natural-wrap-mode: word; selectable: true; label: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.title; } Box { styles [ "bz-debug", ] halign: start; orientation: horizontal; spacing: 6; visible: bind template.state as <$BzStateInfo>.debug-mode; Button { icon-name: "edit-copy-symbolic"; clicked => $copy_id_cb(template); } Label { styles [ "bz-monospace", ] selectable: true; label: bind template.entry-group as <$BzEntryGroup>.id; } Button { label: "Inspect UI Entry"; clicked => $debug_id_inspect_cb(template); } } $BzDeveloperBadge { entry: bind template.ui-entry as <$BzResult>.object as <$BzEntry>; } Box { layout-manager: Adw.WrapLayout { child-spacing: 10; line-spacing: 0; }; Button { visible: bind $invert_boolean($is_null(template.ui-entry as <$BzResult>.object as <$BzEntry>.donation-url) as <bool>) as <bool>; styles [ "small-pill", "suggested-action", "support", ] margin-top: 8; valign: start; halign: start; has-tooltip: true; tooltip-text: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.donation-url; clicked => $support_cb(template); child: Adw.ButtonContent { use-underline: true; label: _("_Support"); icon-name: "heart-filled-symbolic"; }; } $BzFavoriteButton { state: bind template.state as <$BzStateInfo>; entry: bind template.ui-entry as <$BzResult>.object as <$BzEntry>; } } } $BzInstallControls wide_install_controls { wide: true; entry-group: bind template.entry-group as <$BzEntryGroup>; state: bind template.state as <$BzStateInfo>; settings: bind template.state as <$BzStateInfo>.settings; update => $update_cb(template); } } } Box context_bar { hexpand: false; homogeneous: true; spacing: 0; orientation: horizontal; halign: fill; styles [ "app-context-bar", ] Box { homogeneous: true; $BzContextTile download_size_tile { label: bind try {$get_size_label( $is_zero(template.entry-group as <$BzEntryGroup>.removable) as <bool>, template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzFlatpakEntry>.runtime as <$BzResult>.object as <$BzEntry>.installed, template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzFlatpakEntry>.runtime as <$BzResult>.object as <$BzEntry>.size, ) as <string>, $get_size_label($is_zero(template.entry-group as <$BzEntryGroup>.removable) as <bool>,0,0) as <string>}; has-tooltip: true; tooltip-text: bind $format_size_tooltip(template.ui-entry as <$BzResult>.object as <$BzEntry>.size) as <string>; lozenge-style: "grey"; sensitive: bind $invert_boolean($is_zero($get_size_type(template.ui-entry as <$BzResult>.object as <$BzEntry>, $is_zero(template.entry-group as <$BzEntryGroup>.removable) as <bool>) as <uint64>) as <bool>) as <bool>; clicked => $size_cb(template); lozenge-child: Label { justify: center; label: bind $format_size($get_size_type(template.ui-entry as <$BzResult>.object as <$BzEntry>, $is_zero(template.entry-group as <$BzEntryGroup>.removable) as <bool>) as <uint64>) as <string>; lines: 3; ellipsize: end; halign: center; wrap: true; xalign: 0.5; use-markup: true; }; } $BzContextTile license_tile { label: bind $get_license_label(template.ui-entry as <$BzResult>.object as <$BzEntry>) as <string>; lozenge-style: bind $bool_to_string(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-floss, "grey", "warning") as <string>; clicked => $license_cb(template); has-tooltip: true; tooltip-text: bind $format_license_tooltip(template.ui-entry as <$BzResult>.object as <$BzEntry>) as <string>; lozenge-child: Box { spacing: 6; Image { icon-name: bind $get_license_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-floss, 0) as <string>; } Image { icon-name: bind $get_license_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-floss, 1) as <string>; } }; } $BzContextTile { clicked => $safety_cb(template); label: bind $get_safety_rating_label(template.ui-entry as <$BzResult>.object as <$BzEntry>) as <string>; lozenge-style: bind $get_safety_rating_style(template.ui-entry as <$BzResult>.object as <$BzEntry>) as <string>; lozenge-child: Box { spacing: 4; Image { icon-name: bind $get_safety_rating_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>,0) as <string>; visible: bind $invert_boolean($is_empty_string($get_safety_rating_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>,0) as <string>) as <bool>) as <bool>; } Image { icon-name: bind $get_safety_rating_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>,1) as <string>; visible: bind $invert_boolean($is_empty_string($get_safety_rating_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>,1) as <string>) as <bool>) as <bool>; } Image { icon-name: bind $get_safety_rating_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>,2) as <string>; visible: bind $invert_boolean($is_empty_string($get_safety_rating_icon(template.ui-entry as <$BzResult>.object as <$BzEntry>,2) as <string>) as <bool>) as <bool>; } }; } } Box { homogeneous: true; $BzContextTile formfactor_support_tile_wide { label: bind $get_formfactor_label(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly) as <string>; has-tooltip: true; tooltip-text: bind $get_formfactor_tooltip(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly) as <string>; clicked => $formfactor_cb(template); lozenge-style: "grey"; lozenge-child: Box { Image { visible: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly as <bool>; icon-name: "device-support-adaptive-symbolic"; pixel-size: 56; styles [ "wide-image", ] } Image { visible: bind $invert_boolean(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly) as <bool>; icon-name: "device-support-desktop-symbolic"; } }; } $BzContextTile formfactor_support_tile_narrow { label: bind $get_formfactor_label(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly) as <string>; has-tooltip: true; tooltip-text: bind $get_formfactor_tooltip(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly) as <string>; clicked => $formfactor_cb(template); lozenge-style: bind $bool_to_string(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly, "grey", "error") as <string>; visible: false; lozenge-child: Box { Image { visible: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly as <bool>; icon-name: "device-support-adaptive-symbolic"; pixel-size: 56; styles [ "wide-image", ] } Image { visible: bind $invert_boolean(template.ui-entry as <$BzResult>.object as <$BzEntry>.is-mobile-friendly) as <bool>; icon-name: "device-support-desktop-symbolic"; } }; } $BzContextTile { clicked => $age_rating_cb(template); has-tooltip: true; tooltip-text: bind $get_age_rating_tooltip(template.ui-entry as <$BzResult>.object as <$BzEntry>.content-rating) as <string>; label: bind $get_age_rating_label(template.ui-entry as <$BzResult>.object as <$BzEntry>.content-rating) as <string>; lozenge-style: bind $get_age_rating_style(template.ui-entry as <$BzResult>.object as <$BzEntry>.content-rating) as <string>; lozenge-child: Label { label: bind $format_age_rating(template.ui-entry as <$BzResult>.object as <$BzEntry>.content-rating) as <string>; hexpand: true; }; } $BzContextTile { can-target: bind $invert_boolean($is_null(template.ui-entry) as <bool>) as <bool>; sensitive: bind $invert_boolean($is_null(template.ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <bool>) as <bool>; clicked => $dl_stats_cb(template); label: _("Downloads/Month"); has-tooltip: bind $invert_boolean($is_null(template.ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <bool>) as <bool>; tooltip-text: bind $format_recent_downloads_tooltip(template.ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <string>; lozenge-style: "grey"; lozenge-child: Label { justify: center; label: bind $format_recent_downloads(template.ui-entry as <$BzResult>.object as <$BzEntry>.recent-downloads) as <string>; halign: center; use-markup: true; }; } } $BzInstallControls narrow_install_controls { wide: false; visible: false; margin-top: 6; entry-group: bind template.entry-group as <$BzEntryGroup>; state: bind template.state as <$BzStateInfo>; settings: bind template.state as <$BzStateInfo>.settings; update => $update_cb(template); } } Box { visible: bind $invert_boolean($is_null(template.entry-group as <$BzEntryGroup>.eol) as <bool>) as <bool>; orientation: vertical; spacing: 8; styles [ "card", "colored", "warning", ] Label { label: _("Stopped Receiving Core Updates"); margin-top: 8; margin-start: 8; margin-end: 8; wrap: true; wrap-mode: word_char; justify: center; styles [ "title-4", ] } Label { label: _("This app uses a runtime that no longer receives updates or security fixes. It may become unsafe to use."); margin-bottom: 8; margin-start: 8; margin-end: 8; wrap: true; wrap-mode: word_char; justify: center; } } }; } $BzScreenshotsCarousel screenshots { vexpand: true; hexpand: true; light-accent-color: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.light-accent-color; dark-accent-color: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.dark-accent-color; model: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.screenshot-paintables; captions: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.screenshot-captions; } Adw.Clamp { maximum-size: 910; tightening-threshold: 576; child: Box { orientation: vertical; Box bottom_box { orientation: vertical; valign: start; margin-start: 25; margin-end: 25; margin-bottom: 20; margin-top: 10; spacing: 15; Revealer { transition-type: slide_down; reveal-child: bind $logical_and( $logical_and($invert_boolean($is_zero(template.entry-group as <$BzEntryGroup>.user-data-size) as <bool>) as <bool>,$is_zero(template.entry-group as <$BzEntryGroup>.removable) as <bool>) as <bool>, $invert_boolean($is_zero(template.entry-group as <$BzEntryGroup>.installable-and-available) as <bool>) as <bool> ) as <bool>; visible: bind $invert_boolean($logical_and($is_zero(template.entry-group as <$BzEntryGroup>.removable) as <bool>, $is_zero(template.entry-group as <$BzEntryGroup>.installable) as <bool>) as <bool>) as <bool>; child: Box { height-request: 50; margin-bottom: 10; spacing: 12; styles [ "card", "colored", "accent", ] Label { halign: start; valign: center; xalign: 0; hexpand: true; margin-start: 12; margin-top: 12; margin-bottom: 12; label: bind $format_leftover_label(template.ui-entry as <$BzResult>.object as <$BzEntry>.title, template.entry-group as <$BzEntryGroup>.user-data-size) as <string>; use-markup: true; wrap: true; wrap-mode: word_char; justify: left; } Button { valign: center; margin-end: 8; clicked => $delete_user_data_cb(template); child: Adw.ButtonContent { icon-name: "user-trash-symbolic"; label: _("Trash Data"); }; } }; } Box { spacing: 10; orientation: vertical; Label { styles [ "title-2", ] valign: start; xalign: 0; wrap: true; wrap-mode: word_char; selectable: true; label: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.description; } $BzFadingClamp fading_clamp { max-height: bind $get_description_max_height(description_toggle.active) as <int>; min-max-height: 170; child: $BzAppstreamDescriptionRender { appstream-description: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.long-description; }; } } ToggleButton description_toggle { styles [ "circular", ] visible: bind fading_clamp.will-change; halign: center; child: Label { label: bind $get_description_toggle_text(description_toggle.active) as <string>; margin-start: 16; margin-end: 16; }; } $BzReleasesList releases_list { version-history: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.version-history; installed-versions: bind template.entry-group as <$BzEntryGroup>.installed-versions; } Box { orientation: vertical; spacing: bind $choose_int(addons_more_btn.visible, 15, 3) as <int>; Box { orientation: vertical; visible: bind $invert_boolean($is_zero(addon_model.n-items) as <int>) as <bool>; Label { styles ["heading"] halign: start; label: _("Add-ons"); margin-top: 5; margin-start: 3; } ListView { styles [ "navigation-sidebar", "installed-list-view", "full-view-addons" ] overflow: visible; model: NoSelection addon_model { model: bind $get_addon_groups(template.entry-group); }; factory: BuilderListItemFactory { template ListItem { activatable: false; selectable: false; focusable: false; child: $BzAddonTile { group: bind template.item as <$BzEntryGroup>; activated => $addon_tile_activated_cb(); }; } }; } Adw.PreferencesGroup addons_more_btn { visible: bind $should_show_addon_overflow(template.entry-group); Adw.ButtonRow { title: _("More Add-Ons"); end-icon-name: "go-next-symbolic"; activated => $install_addons_cb(template); } } } Box { orientation: vertical; Label { halign: start; label: _("Links"); margin-top: 5; margin-bottom: 8; margin-start: 3; visible: bind $logical_and( $invert_boolean($is_empty(template.ui-entry as <$BzResult>.object as <$BzEntry>.share-urls) as <bool>) as <bool>, $invert_boolean($is_zero(addon_model.n-items) as <int>) as <bool> ) as <bool>; styles [ "heading", ] } $BzShareList link_list { urls: bind template.ui-entry as <$BzResult>.object as <$BzEntry>.share-urls; dual-column: true; } } } Box { orientation: vertical; visible: bind $invert_boolean($is_zero(similar_apps_model.n-items) as <int>) as <bool>; Label { styles [ "heading", "h4", ] label: _("Similar Apps"); xalign: 0; wrap: true; wrap-mode: word_char; margin-top: 5; margin-bottom: 8; margin-start: 3; } $BzDynamicListView { hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; max-children-per-line: 3; model: SliceListModel similar_apps_model { offset: 0; size: 6; model: bind $get_developer_apps_entries(template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.similar-apps, template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>) as <Gio.ListModel>; }; } } Box { orientation: vertical; visible: bind $invert_boolean($is_zero(other_apps_model.n-items) as <int>) as <bool>; Label { styles [ "heading", "h4", ] label: bind $format_other_apps_label(template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.developer) as <string>; xalign: 0; wrap: true; wrap-mode: word_char; margin-top: 5; margin-bottom: 8; margin-start: 3; } $BzDynamicListView { hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; max-children-per-line: 3; model: SliceListModel other_apps_model { offset: 0; size: 6; model: bind $get_developer_apps_entries(template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.developer-apps, template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>) as <Gio.ListModel>; }; } Button { visible: bind $is_longer(template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.developer-apps, 6) as <bool>; clicked => $more_apps_button_clicked_cb(template); halign: center; margin-top: 15; margin-bottom: 8; child: Label { label: bind $format_more_other_apps_label(template.entry-group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.developer) as <string>; justify: center; wrap: true; wrap-mode: word_char; }; styles [ "pill", ] } } } }; } }; }; }; }; }; } }; }; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-full-view.c��������������������������������������������������������0000664�0000000�0000000�00000061516�15240005042�0020625�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-full-view.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::FULL-VIEW-WIDGET" #include <glib/gi18n.h> #include <json-glib/json-glib.h> #include "bz-addon-tile.h" #include "bz-addons-dialog.h" #include "bz-age-rating-dialog.h" #include "bz-app-size-dialog.h" #include "bz-app-tile.h" #include "bz-apps-page.h" #include "bz-appstream-description-render.h" #include "context-tile-callbacks.h" #include "bz-context-tile.h" #include "bz-developer-badge.h" #include "bz-dynamic-list-view.h" #include "bz-entry-inspector.h" #include "error.h" #include "bz-fading-clamp.h" #include "bz-favorite-button.h" #include "bz-flatpak-entry.h" #include "bz-full-view.h" #include "bz-hardware-support-dialog.h" #include "bz-install-controls.h" #include "bz-license-dialog.h" #include "bz-metainfo-preview.h" #include "bz-releases-list.h" #include "safety-calculator.h" #include "bz-safety-dialog.h" #include "bz-screenshot-page.h" #include "bz-screenshots-carousel.h" #include "bz-section-view.h" #include "bz-share-list.h" #include "spdx.h" #include "bz-state-info.h" #include "bz-stats-dialog.h" #include "template-callbacks.h" #include "util.h" #include "bz-window.h" struct _BzFullView { AdwBin parent_instance; BzStateInfo *state; BzTransactionManager *transactions; BzEntryGroup *group; DexFuture *ui_future; BzResult *ui_entry; BzResult *runtime; BzResult *group_model; gboolean show_sidebar; /* Template widgets */ GtkScrolledWindow *main_scroll; AdwViewStack *stack; GtkWidget *shadow_overlay; GtkToggleButton *description_toggle; }; G_DEFINE_FINAL_TYPE (BzFullView, bz_full_view, ADW_TYPE_BIN) enum { PROP_0, PROP_STATE, PROP_ENTRY_GROUP, PROP_UI_ENTRY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_UPDATE, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void bz_full_view_dispose (GObject *object) { BzFullView *self = BZ_FULL_VIEW (object); dex_clear (&self->ui_future); g_clear_object (&self->state); g_clear_object (&self->transactions); g_clear_object (&self->group); g_clear_object (&self->ui_entry); g_clear_object (&self->runtime); g_clear_object (&self->group_model); G_OBJECT_CLASS (bz_full_view_parent_class)->dispose (object); } static void bz_full_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzFullView *self = BZ_FULL_VIEW (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, self->state); break; case PROP_ENTRY_GROUP: g_value_set_object (value, bz_full_view_get_entry_group (self)); break; case PROP_UI_ENTRY: g_value_set_object (value, self->ui_entry); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_full_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzFullView *self = BZ_FULL_VIEW (object); switch (prop_id) { case PROP_STATE: g_clear_object (&self->state); self->state = g_value_dup_object (value); break; case PROP_ENTRY_GROUP: bz_full_view_set_entry_group (self, g_value_get_object (value)); break; case PROP_UI_ENTRY: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean is_scrolled_down (gpointer object, double value) { return value > 100.0; } static char * format_as_link (gpointer object, const char *value) { if (value != NULL) return g_strdup_printf ("<a href=\"%s\" title=\"%s\">%s</a>", value, value, value); else return g_strdup (_ ("No URL")); } static gboolean has_link (gpointer object, const char *license) { if (license == NULL || *license == '\0') return FALSE; return bz_spdx_is_valid (license); } static char * pick_license_warning (gpointer object, gboolean value) { return value ? g_strdup (_ ("This app has a FLOSS license, meaning the source code can be audited for safety.")) : g_strdup (_ ("This app has a proprietary license, meaning the source code is developed privately and cannot be audited by an independent third party.")); } static char * format_other_apps_label (gpointer object, const char *developer) { if (!developer || *developer == '\0') return g_strdup (_ ("More Apps")); return g_strdup_printf (_ ("More Apps by %s"), developer); } static char * format_more_other_apps_label (gpointer object, const char *developer) { if (!developer || *developer == '\0') return g_strdup (_ ("Other Apps by this Developer")); return g_strdup_printf (_ ("Other Apps by %s"), developer); } static char * format_leftover_label (gpointer object, const char *name, guint64 size) { g_autofree char *formatted_size = NULL; formatted_size = g_format_size (size); return g_strdup_printf (_ ("%s is not installed, but it still has <b>%s</b> of data present."), name, formatted_size); } static gpointer filter_own_app_id (BzEntry *entry, GtkStringList *app_ids) { const char *own_id; g_autoptr (GtkStringList) filtered = NULL; guint n_items = 0; if (!BZ_IS_ENTRY (entry) || !GTK_IS_STRING_LIST (app_ids)) return NULL; own_id = bz_entry_get_id (entry); if (!own_id) return NULL; filtered = gtk_string_list_new (NULL); n_items = g_list_model_get_n_items (G_LIST_MODEL (app_ids)); for (guint i = 0; i < n_items; i++) { const char *id = NULL; id = gtk_string_list_get_string (app_ids, i); if (g_strcmp0 (id, own_id) != 0) gtk_string_list_append (filtered, id); } if (g_list_model_get_n_items (G_LIST_MODEL (filtered)) > 0) return g_steal_pointer (&filtered); else return NULL; } static GListModel * get_developer_apps_entries (gpointer object, GtkStringList *app_ids, BzEntry *entry) { BzFullView *self = BZ_FULL_VIEW (object); g_autoptr (GtkStringList) filtered = filter_own_app_id (BZ_ENTRY (entry), app_ids); BzApplicationMapFactory *factory; if (!filtered) return NULL; factory = bz_state_info_get_application_factory (self->state); if (!factory) return NULL; return bz_application_map_factory_generate (factory, G_LIST_MODEL (filtered)); } static void more_apps_button_clicked_cb (BzFullView *self, GtkButton *button) { g_autoptr (GListModel) model = NULL; guint n_items; g_autofree char *title = NULL; g_autofree char *subtitle = NULL; AdwNavigationPage *apps_page = NULL; GtkWidget *nav_view = NULL; g_autoptr (GListModel) app_ids = NULL; BzEntry *entry = NULL; const char *developer = NULL; g_return_if_fail (BZ_IS_FULL_VIEW (self)); g_return_if_fail (GTK_IS_BUTTON (button)); entry = bz_result_get_object (self->ui_entry); if (entry == NULL) return; g_object_get (entry, "developer-apps", &app_ids, NULL); model = bz_application_map_factory_generate ( bz_state_info_get_application_factory (self->state), app_ids); n_items = g_list_model_get_n_items (model); developer = bz_entry_get_developer (entry); if (developer != NULL && *developer != '\0') title = g_strdup_printf (_ ("Other Apps by %s"), developer); else title = g_strdup (_ ("Other Apps")); subtitle = g_strdup_printf (ngettext ("%d Application", "%d Applications", n_items), n_items); apps_page = bz_apps_page_new (title, model); bz_apps_page_set_subtitle (BZ_APPS_PAGE (apps_page), subtitle); nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); if (nav_view != NULL) adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), apps_page); } static void open_url_cb (BzFullView *self, AdwActionRow *row) { BzEntry *entry = NULL; const char *url = NULL; entry = BZ_ENTRY (bz_result_get_object (self->ui_entry)); url = bz_entry_get_url (entry); if (url != NULL && *url != '\0') g_app_info_launch_default_for_uri (url, NULL, NULL); else g_warning ("Invalid or empty URL provided for Flathub URL CB"); } static void license_cb (BzFullView *self, GtkButton *button) { AdwDialog *dialog = NULL; BzEntry *ui_entry = NULL; if (self->group == NULL) return; ui_entry = bz_result_get_object (self->ui_entry); if (ui_entry == NULL) return; dialog = bz_license_dialog_new (ui_entry); adw_dialog_present (dialog, GTK_WIDGET (self)); } static void age_rating_cb (BzFullView *self, GtkButton *button) { BzAgeRatingDialog *dialog = NULL; BzEntry *ui_entry = NULL; if (self->group == NULL) return; ui_entry = bz_result_get_object (self->ui_entry); if (ui_entry == NULL) return; dialog = bz_age_rating_dialog_new (ui_entry); adw_dialog_present (ADW_DIALOG (dialog), GTK_WIDGET (self)); } static void dl_stats_cb (BzFullView *self, GtkButton *button) { AdwDialog *dialog = NULL; AdwBreakpointBin *bin = NULL; BzEntry *ui_entry = NULL; if (self->group == NULL) return; ui_entry = bz_result_get_object (self->ui_entry); bin = bz_stats_dialog_new (NULL, NULL, 0); dialog = adw_dialog_new (); adw_dialog_set_content_width (dialog, 1250); adw_dialog_set_content_height (dialog, 750); adw_dialog_set_child (dialog, GTK_WIDGET (bin)); g_object_bind_property (ui_entry, "download-stats", bin, "model", G_BINDING_SYNC_CREATE); g_object_bind_property (ui_entry, "download-stats-per-country", bin, "country-model", G_BINDING_SYNC_CREATE); g_object_bind_property (ui_entry, "total-downloads", bin, "total-downloads", G_BINDING_SYNC_CREATE); adw_dialog_present (dialog, GTK_WIDGET (self)); bz_stats_dialog_animate_open (BZ_STATS_DIALOG (bin)); } static void size_cb (BzFullView *self, GtkButton *button) { AdwDialog *size_dialog = NULL; if (self->group == NULL) return; size_dialog = bz_app_size_dialog_new (self->group); adw_dialog_present (size_dialog, GTK_WIDGET (self)); } static void formfactor_cb (BzFullView *self, GtkButton *button) { AdwDialog *dialog = NULL; BzEntry *ui_entry = NULL; if (self->group == NULL) return; ui_entry = bz_result_get_object (self->ui_entry); dialog = ADW_DIALOG (bz_hardware_support_dialog_new (ui_entry)); adw_dialog_present (dialog, GTK_WIDGET (self)); } static void safety_cb (BzFullView *self, GtkButton *button) { AdwDialog *dialog = NULL; BzEntry *ui_entry = NULL; if (self->group == NULL) return; ui_entry = bz_result_get_object (self->ui_entry); if (ui_entry == NULL) return; dialog = bz_safety_dialog_new (ui_entry); adw_dialog_present (dialog, GTK_WIDGET (self)); } static void update_cb (BzFullView *self, GListModel *entries, BzInstallControls *controls) { g_signal_emit (self, signals[SIGNAL_UPDATE], 0, entries); } static DexFuture * reap_user_data_done (DexFuture *future, GWeakRef *wr) { g_autoptr (BzFullView) self = NULL; g_autoptr (GError) local_error = NULL; dex_future_get_value (future, &local_error); self = g_weak_ref_get (wr); if (self != NULL && local_error != NULL) bz_show_error_for_widget ( GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self))), _ ("Failed to Remove User Data"), local_error->message); return dex_future_new_true (); } static void delete_user_data_cb (BzFullView *self, GtkButton *button) { g_autoptr (DexFuture) future = NULL; g_return_if_fail (BZ_IS_FULL_VIEW (self)); if (self->group == NULL) return; future = bz_entry_group_reap_user_data (self->group); if (future != NULL) dex_future_disown (dex_future_finally ( dex_ref (future), (DexFutureCallback) reap_user_data_done, bz_track_weak (self), bz_weak_release)); } static void support_cb (BzFullView *self, GtkButton *button) { BzEntry *entry = NULL; entry = bz_result_get_object (self->ui_entry); if (entry != NULL) { const char *url = NULL; url = bz_entry_get_donation_url (entry); g_app_info_launch_default_for_uri (url, NULL, NULL); } } static GListModel * get_addon_groups (BzFullView *self, BzEntryGroup *group) { BzApplicationMapFactory *factory = NULL; GListModel *ids = NULL; GListModel *groups = NULL; if (group == NULL) return NULL; ids = bz_entry_group_get_addon_group_ids (group); if (ids == NULL) return NULL; factory = bz_state_info_get_application_factory (self->state); groups = bz_application_map_factory_generate (factory, ids); if (groups == NULL) return NULL; return G_LIST_MODEL (gtk_slice_list_model_new (groups, 0, 3)); } static gboolean should_show_addon_overflow (gpointer object, BzEntryGroup *group) { GListModel *ids = NULL; if (group == NULL) return FALSE; ids = bz_entry_group_get_addon_group_ids (group); if (ids == NULL) return FALSE; return g_list_model_get_n_items (ids) > 3; } static void install_addons_cb (BzFullView *self, GtkButton *button) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.addons-group", "s", bz_entry_group_get_id (self->group)); } static void addon_tile_activated_cb (BzAddonTile *tile) { BzFullView *self = NULL; BzEntryGroup *group = NULL; AdwDialog *dialog = NULL; self = BZ_FULL_VIEW (gtk_widget_get_ancestor (GTK_WIDGET (tile), BZ_TYPE_FULL_VIEW)); group = bz_addon_tile_get_group (tile); if (group == NULL) return; dialog = bz_addons_dialog_new_single (group); adw_dialog_present (dialog, GTK_WIDGET (self)); } static int get_description_max_height (gpointer object, gboolean active) { return active ? 10000 : 170; } static char * get_description_toggle_text (gpointer object, gboolean active) { return g_strdup (active ? _ ("Show Less") : _ ("Show More")); } static gboolean metainfo_banner_visible (gpointer object, const char *remote_name) { return g_strcmp0 (remote_name, "local-preview") == 0; } static void preview_other_metainfo_cb (BzFullView *self, AdwBanner *banner) { GtkWidget *window = NULL; window = GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self))); bz_window_push_page (BZ_WINDOW (window), create_entry_group_preview_page (self->group)); } static void copy_id_cb (BzFullView *self, GtkButton *button) { const char *id = NULL; GdkClipboard *clipboard = NULL; if (self->group == NULL) return; id = bz_entry_group_get_id (self->group); clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); gdk_clipboard_set_text (clipboard, id); } static void debug_id_inspect_cb (BzFullView *self, GtkButton *button) { g_autofree char *unique_id = NULL; g_autoptr (GtkStringObject) string = NULL; g_autoptr (BzResult) result = NULL; if (self->group == NULL) return; unique_id = bz_entry_group_dup_ui_entry_id (self->group); result = bz_application_map_factory_convert_one ( bz_state_info_get_entry_factory (self->state), gtk_string_object_new (unique_id)); if (result != NULL) { BzEntryInspector *inspector = NULL; inspector = bz_entry_inspector_new (); bz_entry_inspector_set_result (inspector, result); gtk_window_present (GTK_WINDOW (inspector)); } } static void bz_full_view_class_init (BzFullViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_full_view_dispose; object_class->get_property = bz_full_view_get_property; object_class->set_property = bz_full_view_set_property; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_ENTRY_GROUP] = g_param_spec_object ( "entry-group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_UI_ENTRY] = g_param_spec_object ( "ui-entry", NULL, NULL, BZ_TYPE_RESULT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_UPDATE] = g_signal_new ( "update", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_LIST_MODEL); g_signal_set_va_marshaller ( signals[SIGNAL_UPDATE], G_TYPE_FROM_CLASS (klass), g_cclosure_marshal_VOID__OBJECTv); g_type_ensure (BZ_TYPE_APPSTREAM_DESCRIPTION_RENDER); g_type_ensure (BZ_TYPE_DEVELOPER_BADGE); g_type_ensure (BZ_TYPE_DYNAMIC_LIST_VIEW); g_type_ensure (BZ_TYPE_ENTRY); g_type_ensure (BZ_TYPE_ENTRY_GROUP); g_type_ensure (BZ_TYPE_FADING_CLAMP); g_type_ensure (BZ_TYPE_FAVORITE_BUTTON); g_type_ensure (BZ_TYPE_FLATPAK_ENTRY); g_type_ensure (BZ_TYPE_HARDWARE_SUPPORT_DIALOG); g_type_ensure (BZ_TYPE_INSTALL_CONTROLS); g_type_ensure (BZ_TYPE_SECTION_VIEW); g_type_ensure (BZ_TYPE_RELEASES_LIST); g_type_ensure (BZ_TYPE_SCREENSHOTS_CAROUSEL); g_type_ensure (BZ_TYPE_SHARE_LIST); g_type_ensure (BZ_TYPE_CONTEXT_TILE); g_type_ensure (BZ_TYPE_ADDON_TILE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-full-view.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); bz_widget_class_bind_all_context_tile_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzFullView, stack); gtk_widget_class_bind_template_child (widget_class, BzFullView, main_scroll); gtk_widget_class_bind_template_child (widget_class, BzFullView, shadow_overlay); gtk_widget_class_bind_template_child (widget_class, BzFullView, description_toggle); gtk_widget_class_bind_template_callback (widget_class, is_scrolled_down); gtk_widget_class_bind_template_callback (widget_class, age_rating_cb); gtk_widget_class_bind_template_callback (widget_class, format_as_link); gtk_widget_class_bind_template_callback (widget_class, has_link); gtk_widget_class_bind_template_callback (widget_class, format_leftover_label); gtk_widget_class_bind_template_callback (widget_class, format_other_apps_label); gtk_widget_class_bind_template_callback (widget_class, format_more_other_apps_label); gtk_widget_class_bind_template_callback (widget_class, get_developer_apps_entries); gtk_widget_class_bind_template_callback (widget_class, more_apps_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, open_url_cb); gtk_widget_class_bind_template_callback (widget_class, license_cb); gtk_widget_class_bind_template_callback (widget_class, dl_stats_cb); gtk_widget_class_bind_template_callback (widget_class, size_cb); gtk_widget_class_bind_template_callback (widget_class, formfactor_cb); gtk_widget_class_bind_template_callback (widget_class, safety_cb); gtk_widget_class_bind_template_callback (widget_class, update_cb); gtk_widget_class_bind_template_callback (widget_class, delete_user_data_cb); gtk_widget_class_bind_template_callback (widget_class, support_cb); gtk_widget_class_bind_template_callback (widget_class, pick_license_warning); gtk_widget_class_bind_template_callback (widget_class, get_addon_groups); gtk_widget_class_bind_template_callback (widget_class, should_show_addon_overflow); gtk_widget_class_bind_template_callback (widget_class, install_addons_cb); gtk_widget_class_bind_template_callback (widget_class, addon_tile_activated_cb); gtk_widget_class_bind_template_callback (widget_class, get_description_max_height); gtk_widget_class_bind_template_callback (widget_class, get_description_toggle_text); gtk_widget_class_bind_template_callback (widget_class, metainfo_banner_visible); gtk_widget_class_bind_template_callback (widget_class, preview_other_metainfo_cb); gtk_widget_class_bind_template_callback (widget_class, copy_id_cb); gtk_widget_class_bind_template_callback (widget_class, debug_id_inspect_cb); } static void bz_full_view_init (BzFullView *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_full_view_new (void) { return g_object_new (BZ_TYPE_FULL_VIEW, NULL); } static DexFuture * on_ui_entry_resolved (DexFuture *future, GWeakRef *wr) { g_autoptr (BzFullView) self = NULL; BzEntry *ui_entry = NULL; g_autoptr (BzResult) runtime_result = NULL; const GValue *value = NULL; bz_weak_get_or_return_reject (self, wr); value = dex_future_get_value (future, NULL); if (value != NULL && G_VALUE_HOLDS_OBJECT (value)) { ui_entry = g_value_get_object (value); if (BZ_IS_FLATPAK_ENTRY (ui_entry)) self->runtime = bz_flatpak_entry_dup_runtime_result (BZ_FLATPAK_ENTRY (ui_entry)); } adw_view_stack_set_visible_child_name (self->stack, "content"); return dex_future_new_for_boolean (TRUE); } void bz_full_view_set_entry_group (BzFullView *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_FULL_VIEW (self)); g_return_if_fail (group == NULL || BZ_IS_ENTRY_GROUP (group)); if (group == self->group) return; dex_clear (&self->ui_future); g_clear_object (&self->group); g_clear_object (&self->ui_entry); g_clear_object (&self->runtime); g_clear_object (&self->group_model); gtk_toggle_button_set_active (self->description_toggle, FALSE); if (group != NULL) { self->group = g_object_ref (group); self->ui_entry = bz_entry_group_dup_ui_entry (group); if (self->ui_entry != NULL && bz_result_get_resolved (self->ui_entry)) { BzEntry *entry = NULL; g_autoptr (GListStore) store = NULL; g_autoptr (DexFuture) future = NULL; g_autoptr (DexFuture) object_future = NULL; GWeakRef *wr = NULL; entry = bz_result_get_object (self->ui_entry); store = g_list_store_new (BZ_TYPE_ENTRY); g_list_store_append (store, entry); future = dex_future_new_for_object (store); self->group_model = bz_result_new (future); object_future = dex_future_new_for_object (entry); wr = bz_track_weak (self); dex_unref (on_ui_entry_resolved (object_future, wr)); bz_weak_release (wr); } else { g_autoptr (DexFuture) future = NULL; future = bz_entry_group_dup_all_into_store (group); self->group_model = bz_result_new (future); if (self->ui_entry != NULL) { g_autoptr (DexFuture) ui_future = NULL; adw_view_stack_set_visible_child_name (self->stack, "loading"); ui_future = bz_result_dup_future (self->ui_entry); ui_future = dex_future_then ( ui_future, (DexFutureCallback) on_ui_entry_resolved, bz_track_weak (self), bz_weak_release); self->ui_future = g_steal_pointer (&ui_future); } } } else adw_view_stack_set_visible_child_name (self->stack, "empty"); gtk_adjustment_set_value (gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scroll)), 0.0); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENTRY_GROUP]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UI_ENTRY]); } BzEntryGroup * bz_full_view_get_entry_group (BzFullView *self) { g_return_val_if_fail (BZ_IS_FULL_VIEW (self), NULL); return self->group; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-full-view.h��������������������������������������������������������0000664�0000000�0000000�00000003076�15240005042�0020627�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-full-view.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-entry-group.h" #include "bz-transaction-manager.h" G_BEGIN_DECLS #define BZ_TYPE_FULL_VIEW (bz_full_view_get_type ()) G_DECLARE_FINAL_TYPE (BzFullView, bz_full_view, BZ, FULL_VIEW, AdwBin) GtkWidget * bz_full_view_new (void); void bz_full_view_set_transaction_manager (BzFullView *self, BzTransactionManager *group); BzTransactionManager * bz_full_view_get_transaction_manager (BzFullView *self); void bz_full_view_set_entry_group (BzFullView *self, BzEntryGroup *group); BzEntryGroup * bz_full_view_get_entry_group (BzFullView *self); void bz_full_view_set_debounce (BzFullView *self, gboolean debounce); gboolean bz_full_view_get_debounce (BzFullView *self); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-group-tile-css-watcher.c�������������������������������������������0000664�0000000�0000000�00000023532�15240005042�0023217�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-group-tile-css-watcher.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <adwaita.h> #include "bz-group-tile-css-watcher.h" #define LUMINANCE_THRESHOLD 130.0 struct _BzGroupTileCssWatcher { GObject parent_instance; GWeakRef widget; BzEntryGroup *group; GtkCssProvider *css; char *light_class; char *dark_class; char *light_text_class; char *dark_text_class; }; G_DEFINE_FINAL_TYPE (BzGroupTileCssWatcher, bz_group_tile_css_watcher, G_TYPE_OBJECT); enum { PROP_0, PROP_WIDGET, PROP_GROUP, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void refresh (BzGroupTileCssWatcher *self); static void clear (BzGroupTileCssWatcher *self); static void bz_group_tile_css_watcher_dispose (GObject *object) { BzGroupTileCssWatcher *self = BZ_GROUP_TILE_CSS_WATCHER (object); clear (self); g_weak_ref_clear (&self->widget); g_clear_pointer (&self->group, g_object_unref); G_OBJECT_CLASS (bz_group_tile_css_watcher_parent_class)->dispose (object); } static void bz_group_tile_css_watcher_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzGroupTileCssWatcher *self = BZ_GROUP_TILE_CSS_WATCHER (object); switch (prop_id) { case PROP_WIDGET: g_value_take_object (value, bz_group_tile_css_watcher_dup_widget (self)); break; case PROP_GROUP: g_value_set_object (value, bz_group_tile_css_watcher_get_group (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_group_tile_css_watcher_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzGroupTileCssWatcher *self = BZ_GROUP_TILE_CSS_WATCHER (object); switch (prop_id) { case PROP_WIDGET: bz_group_tile_css_watcher_set_widget (self, g_value_get_object (value)); break; case PROP_GROUP: bz_group_tile_css_watcher_set_group (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_group_tile_css_watcher_class_init (BzGroupTileCssWatcherClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_group_tile_css_watcher_set_property; object_class->get_property = bz_group_tile_css_watcher_get_property; object_class->dispose = bz_group_tile_css_watcher_dispose; props[PROP_WIDGET] = g_param_spec_object ( "widget", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void dark_changed (BzGroupTileCssWatcher *self, GParamSpec *pspec, AdwStyleManager *mgr) { g_autoptr (GtkWidget) widget = NULL; gboolean is_dark; if (self->css == NULL) return; widget = g_weak_ref_get (&self->widget); if (widget == NULL) return; is_dark = adw_style_manager_get_dark (adw_style_manager_get_default ()); gtk_widget_remove_css_class (widget, self->light_class); gtk_widget_remove_css_class (widget, self->dark_class); gtk_widget_remove_css_class (widget, self->light_text_class); gtk_widget_remove_css_class (widget, self->dark_text_class); gtk_widget_add_css_class (widget, is_dark ? self->dark_class : self->light_class); gtk_widget_add_css_class (widget, is_dark ? self->dark_text_class : self->light_text_class); } static void bz_group_tile_css_watcher_init (BzGroupTileCssWatcher *self) { g_weak_ref_init (&self->widget, NULL); g_signal_connect_object ( adw_style_manager_get_default (), "notify::dark", G_CALLBACK (dark_changed), self, G_CONNECT_SWAPPED); } BzGroupTileCssWatcher * bz_group_tile_css_watcher_new (void) { return g_object_new (BZ_TYPE_GROUP_TILE_CSS_WATCHER, NULL); } GtkWidget * bz_group_tile_css_watcher_dup_widget (BzGroupTileCssWatcher *self) { g_return_val_if_fail (BZ_IS_GROUP_TILE_CSS_WATCHER (self), NULL); return g_weak_ref_get (&self->widget); } BzEntryGroup * bz_group_tile_css_watcher_get_group (BzGroupTileCssWatcher *self) { g_return_val_if_fail (BZ_IS_GROUP_TILE_CSS_WATCHER (self), NULL); return self->group; } void bz_group_tile_css_watcher_set_widget (BzGroupTileCssWatcher *self, GtkWidget *widget) { g_return_if_fail (BZ_IS_GROUP_TILE_CSS_WATCHER (self)); g_weak_ref_clear (&self->widget); if (widget != NULL) g_weak_ref_init (&self->widget, widget); refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WIDGET]); } void bz_group_tile_css_watcher_set_group (BzGroupTileCssWatcher *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_GROUP_TILE_CSS_WATCHER (self)); g_clear_pointer (&self->group, g_object_unref); if (group != NULL) self->group = g_object_ref (group); refresh (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } static gdouble get_luminance (GdkRGBA *rgba) { return (0.299 * rgba->red * 255.0) + (0.587 * rgba->green * 255.0) + (0.114 * rgba->blue * 255.0); } static gboolean color_is_light (const char *hex_color) { GdkRGBA rgba; gdouble luminance; if (hex_color == NULL || !gdk_rgba_parse (&rgba, hex_color)) return FALSE; luminance = get_luminance (&rgba); return luminance > LUMINANCE_THRESHOLD; } static void refresh (BzGroupTileCssWatcher *self) { g_autoptr (GtkWidget) widget = NULL; const char *id = NULL; const char *light_accent_color = NULL; const char *dark_accent_color = NULL; clear (self); widget = g_weak_ref_get (&self->widget); if (self->group == NULL || widget == NULL) return; id = bz_entry_group_get_id (self->group); light_accent_color = bz_entry_group_get_light_accent_color (self->group); dark_accent_color = bz_entry_group_get_dark_accent_color (self->group); if (light_accent_color != NULL || dark_accent_color != NULL) { g_autoptr (GString) fixed_id = NULL; g_autofree char *css_string = NULL; gboolean is_dark; fixed_id = g_string_new (id); g_string_replace (fixed_id, ".", "--", 0); self->light_class = g_strdup_printf ("%s-light", fixed_id->str); self->dark_class = g_strdup_printf ("%s-dark", fixed_id->str); self->light_text_class = g_strdup ( color_is_light (light_accent_color != NULL ? light_accent_color : dark_accent_color) ? "flathub-gunmetal" : "flathub-lotion"); self->dark_text_class = g_strdup ( color_is_light (dark_accent_color != NULL ? dark_accent_color : light_accent_color) ? "flathub-gunmetal" : "flathub-lotion"); css_string = g_strdup_printf ( ".%s{background-color:%s;}\n" ".%s{background-color:%s;}", self->light_class, light_accent_color != NULL ? light_accent_color : dark_accent_color, self->dark_class, dark_accent_color != NULL ? dark_accent_color : light_accent_color); self->css = gtk_css_provider_new (); gtk_css_provider_load_from_string ( self->css, css_string); gtk_style_context_add_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (self->css), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); is_dark = adw_style_manager_get_dark (adw_style_manager_get_default ()); gtk_widget_add_css_class (widget, is_dark ? self->dark_class : self->light_class); gtk_widget_add_css_class (widget, is_dark ? self->dark_text_class : self->light_text_class); } } static void clear (BzGroupTileCssWatcher *self) { g_autoptr (GtkWidget) widget = NULL; widget = g_weak_ref_get (&self->widget); if (widget != NULL) { if (self->light_class != NULL) gtk_widget_remove_css_class (widget, self->light_class); if (self->dark_class != NULL) gtk_widget_remove_css_class (widget, self->dark_class); if (self->light_text_class != NULL) gtk_widget_remove_css_class (widget, self->light_text_class); if (self->dark_text_class != NULL) gtk_widget_remove_css_class (widget, self->dark_text_class); } g_clear_pointer (&self->light_class, g_free); g_clear_pointer (&self->dark_class, g_free); g_clear_pointer (&self->light_text_class, g_free); g_clear_pointer (&self->dark_text_class, g_free); if (self->css != NULL) gtk_style_context_remove_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (self->css)); g_clear_pointer (&self->css, g_object_unref); } /* End of bz-group-tile-css-watcher.c */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-group-tile-css-watcher.h�������������������������������������������0000664�0000000�0000000�00000003102�15240005042�0023213�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-group-tile-css-watcher.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "bz-entry-group.h" G_BEGIN_DECLS #define BZ_TYPE_GROUP_TILE_CSS_WATCHER (bz_group_tile_css_watcher_get_type ()) G_DECLARE_FINAL_TYPE (BzGroupTileCssWatcher, bz_group_tile_css_watcher, BZ, GROUP_TILE_CSS_WATCHER, GObject) BzGroupTileCssWatcher * bz_group_tile_css_watcher_new (void); GtkWidget * bz_group_tile_css_watcher_dup_widget (BzGroupTileCssWatcher *self); BzEntryGroup * bz_group_tile_css_watcher_get_group (BzGroupTileCssWatcher *self); void bz_group_tile_css_watcher_set_widget (BzGroupTileCssWatcher *self, GtkWidget *widget); void bz_group_tile_css_watcher_set_group (BzGroupTileCssWatcher *self, BzEntryGroup *group); G_END_DECLS /* End of bz-group-tile-css-watcher.h */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-hardware-support-dialog.blp����������������������������������������0000664�0000000�0000000�00000001650�15240005042�0024003�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzHardwareSupportDialog: Adw.Dialog { content-height: 530; content-width: 640; title: _("Hardware Support"); Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: ScrolledWindow { hscrollbar-policy: never; Adw.Clamp { maximum-size: 600; tightening-threshold: 400; Box { orientation: vertical; spacing: 24; margin-start: 24; margin-end: 24; margin-top: 24; margin-bottom: 24; $BzLozenge lozenge { title: _("Hardware Support"); icon-names: [ "device-supported-symbolic", ]; importance: unimportant; } ListBox list { selection-mode: none; styles [ "boxed-list", ] } } } }; } } ����������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-hardware-support-dialog.c������������������������������������������0000664�0000000�0000000�00000024001�15240005042�0023443�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-hardware-support-dialog.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-hardware-support-dialog.h" #include "bz-context-row.h" #include "bz-lozenge.h" #include <glib/gi18n.h> struct _BzHardwareSupportDialog { AdwDialog parent_instance; BzEntry *entry; gulong entry_notify_handler; /* Template widgets */ BzLozenge *lozenge; GtkListBox *list; }; G_DEFINE_FINAL_TYPE (BzHardwareSupportDialog, bz_hardware_support_dialog, ADW_TYPE_DIALOG) enum { PROP_0, PROP_ENTRY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; typedef struct { const gchar *icon_name; const gchar *title; BzControlType control_flag; const gchar *required_subtitle; const gchar *recommended_subtitle; const gchar *supported_subtitle; const gchar *unsupported_subtitle; } ControlInfo; static const ControlInfo control_infos[] = { { "input-keyboard-symbolic", N_ ("Keyboard support"), BZ_CONTROL_KEYBOARD, N_ ("Requires keyboards"), N_ ("Recommends keyboards"), N_ ("Supports keyboards"), N_ ("Unknown support for keyboards") }, { "input-mouse-symbolic", N_ ("Mouse support"), BZ_CONTROL_POINTING, N_ ("Requires mice or pointing devices"), N_ ("Recommends mice or pointing devices"), N_ ("Supports mice or pointing devices"), N_ ("Unknown support for mice or pointing devices") }, { "device-support-touch-symbolic", N_ ("Touchscreen support"), BZ_CONTROL_TOUCH, N_ ("Requires touchscreens"), N_ ("Recommends touchscreens"), N_ ("Supports touchscreens"), N_ ("Unknown support for touchscreens") } }; static BzImportance get_control_importance (guint required_controls, guint recommended_controls, guint supported_controls, BzControlType control_flag) { if (required_controls & control_flag) return BZ_IMPORTANCE_IMPORTANT; else if (recommended_controls & control_flag) return BZ_IMPORTANCE_INFORMATION; else if (supported_controls & control_flag) return BZ_IMPORTANCE_UNIMPORTANT; else return BZ_IMPORTANCE_NEUTRAL; } static const gchar * get_subtitle_for_importance (const ControlInfo *info, BzImportance importance) { switch (importance) { case BZ_IMPORTANCE_IMPORTANT: return _ (info->required_subtitle); case BZ_IMPORTANCE_INFORMATION: return _ (info->recommended_subtitle); case BZ_IMPORTANCE_UNIMPORTANT: return _ (info->supported_subtitle); case BZ_IMPORTANCE_NEUTRAL: return _ (info->unsupported_subtitle); case BZ_IMPORTANCE_WARNING: default: g_assert_not_reached (); } } static void add_control_row (BzHardwareSupportDialog *self, const ControlInfo *info, BzImportance importance) { AdwActionRow *row; const gchar *subtitle; subtitle = get_subtitle_for_importance (info, importance); row = bz_context_row_new (info->icon_name, importance, _ (info->title), subtitle); gtk_list_box_append (self->list, GTK_WIDGET (row)); } static void update_list (BzHardwareSupportDialog *self) { GtkWidget *child; AdwActionRow *row; guint required_controls; guint recommended_controls; guint supported_controls; gboolean is_mobile_friendly; while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->list))) != NULL) gtk_list_box_remove (self->list, child); if (self->entry == NULL) return; required_controls = bz_entry_get_required_controls (self->entry); recommended_controls = bz_entry_get_recommended_controls (self->entry); supported_controls = bz_entry_get_supported_controls (self->entry); is_mobile_friendly = bz_entry_get_is_mobile_friendly (self->entry); row = bz_context_row_new ("phone-symbolic", is_mobile_friendly ? BZ_IMPORTANCE_UNIMPORTANT : BZ_IMPORTANCE_NEUTRAL, _ ("Mobile support"), is_mobile_friendly ? _ ("Works on mobile devices") : _ ("May not work well on mobile devices")); gtk_list_box_append (self->list, GTK_WIDGET (row)); row = bz_context_row_new ("device-support-desktop-symbolic", BZ_IMPORTANCE_UNIMPORTANT, _ ("Desktop support"), _ ("Works well on large screens")); gtk_list_box_append (self->list, GTK_WIDGET (row)); for (gsize i = 0; i < G_N_ELEMENTS (control_infos); i++) { BzImportance importance; importance = get_control_importance (required_controls, recommended_controls, supported_controls, control_infos[i].control_flag); add_control_row (self, &control_infos[i], importance); } } static void update_header (BzHardwareSupportDialog *self) { const gchar *icon_names[2]; g_autofree gchar *title_text = NULL; BzImportance importance; guint required_controls; gboolean is_mobile_friendly; if (self->entry == NULL) return; required_controls = bz_entry_get_required_controls (self->entry); is_mobile_friendly = bz_entry_get_is_mobile_friendly (self->entry); if (required_controls != BZ_CONTROL_NONE || !is_mobile_friendly) { icon_names[0] = "dialog-warning-symbolic"; icon_names[1] = NULL; title_text = g_strdup_printf (_ ("%s works best on specific hardware"), bz_entry_get_title (self->entry)); importance = BZ_IMPORTANCE_NEUTRAL; } else { icon_names[0] = "device-supported-symbolic"; icon_names[1] = NULL; title_text = g_strdup_printf (_ ("%s works on most devices"), bz_entry_get_title (self->entry)); importance = BZ_IMPORTANCE_UNIMPORTANT; } bz_lozenge_set_icon_names (self->lozenge, icon_names); bz_lozenge_set_title (self->lozenge, title_text); bz_lozenge_set_importance (self->lozenge, importance); gtk_accessible_update_property (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_PROPERTY_DESCRIPTION, title_text, -1); } static void update_ui (BzHardwareSupportDialog *self) { update_list (self); update_header (self); } static void entry_notify_cb (GObject *obj, GParamSpec *pspec, gpointer user_data) { BzHardwareSupportDialog *self = BZ_HARDWARE_SUPPORT_DIALOG (user_data); update_ui (self); } static void bz_hardware_support_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzHardwareSupportDialog *self = BZ_HARDWARE_SUPPORT_DIALOG (object); switch (prop_id) { case PROP_ENTRY: self->entry = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_hardware_support_dialog_constructed (GObject *object) { BzHardwareSupportDialog *self = BZ_HARDWARE_SUPPORT_DIALOG (object); G_OBJECT_CLASS (bz_hardware_support_dialog_parent_class)->constructed (object); if (self->entry != NULL) { self->entry_notify_handler = g_signal_connect (self->entry, "notify", G_CALLBACK (entry_notify_cb), self); update_ui (self); } } static void bz_hardware_support_dialog_dispose (GObject *object) { BzHardwareSupportDialog *self = BZ_HARDWARE_SUPPORT_DIALOG (object); g_clear_signal_handler (&self->entry_notify_handler, self->entry); g_clear_object (&self->entry); gtk_widget_dispose_template (GTK_WIDGET (self), BZ_TYPE_HARDWARE_SUPPORT_DIALOG); G_OBJECT_CLASS (bz_hardware_support_dialog_parent_class)->dispose (object); } static void bz_hardware_support_dialog_class_init (BzHardwareSupportDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_hardware_support_dialog_set_property; object_class->constructed = bz_hardware_support_dialog_constructed; object_class->dispose = bz_hardware_support_dialog_dispose; props[PROP_ENTRY] = g_param_spec_object ( "entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LOZENGE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-hardware-support-dialog.ui"); gtk_widget_class_bind_template_child (widget_class, BzHardwareSupportDialog, lozenge); gtk_widget_class_bind_template_child (widget_class, BzHardwareSupportDialog, list); } static void bz_hardware_support_dialog_init (BzHardwareSupportDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } BzHardwareSupportDialog * bz_hardware_support_dialog_new (BzEntry *entry) { return g_object_new (BZ_TYPE_HARDWARE_SUPPORT_DIALOG, "entry", entry, NULL); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-hardware-support-dialog.h������������������������������������������0000664�0000000�0000000�00000002177�15240005042�0023462�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-hardware-support-dialog.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include <adwaita.h> #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_HARDWARE_SUPPORT_DIALOG (bz_hardware_support_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzHardwareSupportDialog, bz_hardware_support_dialog, BZ, HARDWARE_SUPPORT_DIALOG, AdwDialog) BzHardwareSupportDialog *bz_hardware_support_dialog_new (BzEntry *entry); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-hash-table-object.txt����������������������������������������������0000664�0000000�0000000�00000000257�15240005042�0022557�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=hash_table_object parent-prefix=g parent-name=object author=AUTOGEN property=hash_table GHashTable G_TYPE_HASH_TABLE boxed g_hash_table_unref g_hash_table_ref �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-hook-dialog-option.txt���������������������������������������������0000664�0000000�0000000�00000000343�15240005042�0023002�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=hook_dialog_option parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> property=id char G_TYPE_STRING string property=string char G_TYPE_STRING string property=style char G_TYPE_STRING string ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-hook-dialog.txt����������������������������������������������������0000664�0000000�0000000�00000000704�15240005042�0021475�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=hook_dialog parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-hook-dialog-option.h" ensure=BZ_TYPE_HOOK_DIALOG_OPTION property=id char G_TYPE_STRING string property=title char G_TYPE_STRING string property=body char G_TYPE_STRING string property=body_use_markup gboolean G_TYPE_BOOLEAN boolean property=options GListModel G_TYPE_LIST_MODEL object property=default_response_id char G_TYPE_STRING string ������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-hook.txt�����������������������������������������������������������0000664�0000000�0000000�00000001134�15240005042�0020236�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=hook parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-hook-dialog.h" ensure=BZ_TYPE_HOOK_DIALOG ensure=BZ_TYPE_HOOK_DIALOG_OPTION enum=bz hook_signal view_app before_transaction after_transaction article_app enum=bz hook_return_status continue stop confirm deny enum=bz hook_transaction_type install update removal property=id char G_TYPE_STRING string property=when BzHookSignal BZ_TYPE_HOOK_SIGNAL enum property=dialogs GListModel G_TYPE_LIST_MODEL object property=shell char G_TYPE_STRING string property=check_appid_regex char G_TYPE_STRING string ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-inspector.blp������������������������������������������������������0000664�0000000�0000000�00000055472�15240005042�0021260�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzInspector: Adw.Window { title: "Bazaar Inspector"; default-width: 1200; default-height: 800; width-request: 600; height-request: 600; Adw.ToolbarView { top-bar-style: raised_border; bottom-bar-style: raised_border; reveal-bottom-bars: false; [top] Adw.HeaderBar { [end] MenuButton { primary: true; icon-name: "open-menu-symbolic"; has-tooltip: true; tooltip-text: _("Inspector Menu"); menu-model: inspector_menu; } } content: Paned { orientation: horizontal; start-child: ScrolledWindow { child: Box { orientation: vertical; width-request: 100; spacing: 10; Box { orientation: vertical; Box { orientation: horizontal; spacing: 10; Label { styles [ "heading" ] label: "Background Task Info:"; xalign: 0.0; } Label { label: bind template.state as <$BzStateInfo>.background-task-label as <string>; xalign: 0.0; } } Box { orientation: horizontal; spacing: 10; Label { styles [ "heading" ] label: "Active Entry Objects in Memory:"; xalign: 0.0; } Label { label: bind $format_uint(template.state as <$BzStateInfo>.cache-manager as <$BzEntryCacheManager>.living-entries) as <string>; xalign: 0.0; } } } Box { orientation: vertical; spacing: 3; CheckButton debug_mode_check { label: "Enable Global Debug Mode"; } CheckButton disable_blocklists_check { label: "Disable All Blocklists"; } } Box { orientation: vertical; spacing: 3; Label { styles [ "heading" ] label: "Active Blocklists (YAML)"; xalign: 0.0; } ScrolledWindow { propagate-natural-height: true; child: ListView { model: NoSelection { model: bind template.state as <$BzStateInfo>.blocklists; }; factory: string_list_factory; }; } } Box { orientation: vertical; spacing: 3; Label { styles [ "heading" ] label: "Active Blocklists (TXT)"; xalign: 0.0; } ScrolledWindow { propagate-natural-height: true; child: ListView { model: NoSelection { model: bind template.state as <$BzStateInfo>.txt-blocklists; }; factory: string_list_factory; }; } } Box { orientation: vertical; spacing: 3; Label { styles [ "heading" ] label: "Active Curated-Configs"; xalign: 0.0; } ScrolledWindow { propagate-natural-height: true; child: ListView { model: NoSelection { model: bind template.state as <$BzStateInfo>.curated-configs; }; factory: string_list_factory; }; } } Box { orientation: vertical; spacing: 3; Box { orientation: horizontal; spacing: 10; Label { styles [ "heading" ] label: "Max Age Rating:"; xalign: 0.0; } Label { label: bind $format_int(template.state as <$BzStateInfo>.parental-age-rating) as <string>; xalign: 0.0; } } Label { styles [ "heading" ] label: "Restricted App IDs"; xalign: 0.0; } ScrolledWindow { propagate-natural-height: true; child: ListView { model: NoSelection { model: bind template.state as <$BzStateInfo>.parental-blocked-ids; }; factory: plain_string_list_factory; }; } } }; }; end-child: Box { orientation: vertical; spacing: 8; Label { styles [ "heading" ] margin-top: 10; label: "All Entry Groups"; xalign: 0.0; } Separator { orientation: horizontal; } Expander { label: "Serialize All Entries Into File"; child: Box { margin-start: 3; margin-end: 3; margin-top: 3; margin-bottom: 3; orientation: vertical; spacing: 5; Box { orientation: horizontal; spacing: 5; Entry serialize_all_entries_path_entry { hexpand: true; placeholder-text: "Enter the path to an output file..."; } Button serialize_all_entries_btn { styles [ "suggested-action", ] label: "Go"; clicked => $serialize_all_entries_cb(template); } } ProgressBar serialize_all_entries_progress { visible: false; } }; } Separator { orientation: horizontal; } Box { orientation: horizontal; spacing: 5; CheckButton { label: "Preview"; notify::active => $preview_changed(template); } Entry search_entry { hexpand: true; margin-start: 5; margin-end: 5; margin-top: 5; margin-bottom: 5; placeholder-text: "Filter..."; changed => $entry_changed(template); } } ScrolledWindow { vscrollbar-policy: always; propagate-natural-height: true; child: ListView { model: SingleSelection groups_selection { model: FilterListModel filter_model { incremental: true; model: bind template.state as <$BzStateInfo>.all-entry-groups; }; notify::selected-item => $selected_group_changed(template); }; factory: BuilderListItemFactory { template ListItem { activatable: false; child: Expander { styles [ "bz-monospace", ] resize-toplevel: true; label-widget: Label { label: bind template.item as <$BzEntryGroup>.id as <string>; }; child: Box { styles [ "card", ] margin-start: 3; margin-end: 3; margin-top: 3; margin-bottom: 3; halign: start; orientation: horizontal; Box { margin-start: 5; margin-end: 5; margin-top: 5; margin-bottom: 5; orientation: vertical; spacing: 2; Box { margin-start: 2; orientation: horizontal; spacing: 2; Label { styles [ "accent", ] label: bind template.item as <$BzEntryGroup>.title; } Image { gicon: bind template.item as <$BzEntryGroup>.mini-icon; } Box { styles [ "linked", ] hexpand: true; halign: end; orientation: horizontal; MenuButton { styles [ "bz-small-button", ] child: Label { styles [ "bz-monospace", ] margin-start: 2; margin-end: 2; label: "Entries"; }; popover: Popover { child: ScrolledWindow { propagate-natural-width: true; propagate-natural-height: true; child: ListView { model: NoSelection { model: bind template.item as <$BzEntryGroup>.model; }; factory: BuilderListItemFactory { template ListItem { activatable: false; child: Box { margin-top: 1; margin-bottom: 1; orientation: horizontal; spacing: 5; Box { styles [ "linked", ] orientation: horizontal; Button { styles [ "bz-small-button", ] has-tooltip: true; tooltip-text: "Decache and Inspect"; child: Image { icon-name: "external-link-symbolic"; pixel-size: 12; }; clicked => $decache_and_inspect_cb(template); } Button { styles [ "bz-small-button", ] has-tooltip: true; tooltip-text: "Copy Unique ID"; child: Image { icon-name: "edit-copy-symbolic"; pixel-size: 12; }; clicked => $copy_unique_id_cb(template); } } Label { hexpand: true; ellipsize: end; xalign: 0.0; label: bind template.item as <$GtkStringObject>.string as <string>; selectable: true; } }; } }; }; }; }; } MenuButton { styles [ "bz-small-button", ] visible: bind $not($is_null(template.item as <$BzEntryGroup>.addons-model as <$GListModel>) as <bool>) as <bool>; child: Label { styles [ "bz-monospace", ] margin-start: 2; margin-end: 2; label: "Addons"; }; popover: Popover { child: ScrolledWindow { propagate-natural-width: true; propagate-natural-height: true; child: ListView { model: NoSelection { model: bind template.item as <$BzEntryGroup>.addons-model; }; factory: BuilderListItemFactory { template ListItem { activatable: false; child: Label { hexpand: true; ellipsize: end; xalign: 0.0; label: bind template.item as <$GtkStringObject>.string as <string>; selectable: true; }; } }; }; }; }; } } } Separator { orientation: horizontal; } Grid { column-spacing: 2; row-spacing: 1; Label { layout { column: 0; row: 0; } label: "Developer:"; xalign: 1.0; } Label { layout { column: 1; row: 0; } styles [ "accent", ] label: bind template.item as <$BzEntryGroup>.developer; ellipsize: end; xalign: 0.5; } Label { layout { column: 0; row: 1; } label: "Description:"; xalign: 1.0; } Label { layout { column: 1; row: 1; } styles [ "accent", ] label: bind template.item as <$BzEntryGroup>.description; ellipsize: end; xalign: 0.5; } Label { layout { column: 0; row: 2; } label: "EOL:"; xalign: 1.0; } Label { layout { column: 1; row: 2; } styles [ "accent", ] label: bind template.item as <$BzEntryGroup>.eol; ellipsize: end; xalign: 0.5; } Label { layout { column: 2; row: 0; } label: "Installable:"; xalign: 1.0; } Label { layout { column: 3; row: 0; } styles [ "accent", ] label: bind $format_int(template.item as <$BzEntryGroup>.installable) as <string>; xalign: 0.0; } Label { layout { column: 2; row: 1; } label: "Installable-And-Available:"; xalign: 1.0; } Label { layout { column: 3; row: 1; } styles [ "accent", ] label: bind $format_int(template.item as <$BzEntryGroup>.installable-and-available) as <string>; xalign: 0.0; } Label { layout { column: 2; row: 2; } label: "Updatable:"; xalign: 1.0; } Label { layout { column: 3; row: 2; } styles [ "accent", ] label: bind $format_int(template.item as <$BzEntryGroup>.updatable) as <string>; xalign: 0.0; } Label { layout { column: 2; row: 3; } label: "Updatable-And-Available:"; xalign: 1.0; } Label { layout { column: 3; row: 3; } styles [ "accent", ] label: bind $format_int(template.item as <$BzEntryGroup>.updatable-and-available) as <string>; xalign: 0.0; } Label { layout { column: 2; row: 4; } label: "Removable:"; xalign: 1.0; } Label { layout { column: 3; row: 4; } styles [ "accent", ] label: bind $format_int(template.item as <$BzEntryGroup>.removable) as <string>; xalign: 0.0; } Label { layout { column: 2; row: 5; } label: "Removable-And-Available:"; xalign: 1.0; } Label { layout { column: 3; row: 5; } styles [ "accent", ] label: bind $format_int(template.item as <$BzEntryGroup>.removable-and-available) as <string>; xalign: 0.0; } } } }; }; } }; }; } }; }; } } BuilderListItemFactory string_list_factory { template ListItem { selectable: false; activatable: false; child: Box { orientation: horizontal; spacing: 10; Label { styles [ "dimmed", "bz-monospace", ] width-request: 30; label: bind $format_uint(template.position) as <string>; xalign: 1.0; } Label { styles [ "bz-monospace", ] hexpand: true; margin-top: 2; margin-bottom: 2; xalign: 0.0; selectable: true; label: bind template.item as <$GtkStringObject>.string as <string>; } Button { label: "Open"; clicked => $open_file_externally_cb(template); } }; } } BuilderListItemFactory plain_string_list_factory { template ListItem { selectable: false; activatable: false; child: Box { orientation: horizontal; spacing: 10; Label { styles [ "dimmed", "bz-monospace", ] width-request: 30; label: bind $format_uint(template.position) as <string>; xalign: 1.0; } Label { styles [ "bz-monospace", ] hexpand: true; margin-top: 2; margin-bottom: 2; xalign: 0.0; selectable: true; label: bind template.item as <$GtkStringObject>.string as <string>; } }; } } menu inspector_menu { section { item { label: "_Quit Bazaar"; action: "app.quit"; } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-inspector.c��������������������������������������������������������0000664�0000000�0000000�00000037356�15240005042�0020726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-inspector.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::INSPECTOR" #include <json-glib/json-glib.h> #include "config.h" #include "bz-entry-inspector.h" #include "env.h" #include "bz-inspector.h" #include "bz-serializable.h" #include "template-callbacks.h" #include "bz-window.h" struct _BzInspector { AdwWindow parent_instance; BzStateInfo *state; GBinding *debug_mode_binding; GBinding *disable_blocklists_binding; GtkWindow *preview_window; GtkCheckButton *debug_mode_check; GtkCheckButton *disable_blocklists_check; GtkEditable *serialize_all_entries_path_entry; GtkButton *serialize_all_entries_btn; GtkProgressBar *serialize_all_entries_progress; GtkEditable *search_entry; GtkFilterListModel *filter_model; GtkSingleSelection *groups_selection; }; G_DEFINE_FINAL_TYPE (BzInspector, bz_inspector, ADW_TYPE_WINDOW); enum { PROP_0, PROP_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * serialize_all_entries_fiber (BzInspector *self); static gboolean filter_func (BzEntryGroup *group, BzInspector *self); static void bz_inspector_dispose (GObject *object) { BzInspector *self = BZ_INSPECTOR (object); g_clear_pointer (&self->state, g_object_unref); g_clear_object (&self->debug_mode_binding); g_clear_object (&self->disable_blocklists_binding); if (self->preview_window != NULL) gtk_window_close (self->preview_window); g_clear_object (&self->preview_window); G_OBJECT_CLASS (bz_inspector_parent_class)->dispose (object); } static void bz_inspector_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzInspector *self = BZ_INSPECTOR (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, bz_inspector_get_state (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_inspector_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzInspector *self = BZ_INSPECTOR (object); switch (prop_id) { case PROP_STATE: bz_inspector_set_state (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void serialize_all_entries_cb (BzInspector *self, GtkButton *button) { dex_future_disown ( dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) serialize_all_entries_fiber, g_object_ref (self), g_object_unref)); } static void preview_changed (BzInspector *self, GParamSpec *pspec, GtkCheckButton *button) { if (gtk_check_button_get_active (button)) { BzWindow *window = NULL; BzEntryGroup *selected = NULL; g_assert (self->preview_window == NULL); window = bz_window_new (self->state); gtk_window_set_default_size (GTK_WINDOW (window), 750, 750); gtk_window_present (GTK_WINDOW (window)); selected = gtk_single_selection_get_selected_item (self->groups_selection); if (selected != NULL) bz_window_show_group (window, selected); self->preview_window = (GtkWindow *) g_object_ref_sink (window); } else { if (self->preview_window != NULL) gtk_window_close (self->preview_window); g_clear_object (&self->preview_window); } } static void selected_group_changed (BzInspector *self, GParamSpec *pspec, GtkSingleSelection *selection) { BzEntryGroup *group = NULL; if (self->preview_window == NULL || !gtk_widget_get_mapped (GTK_WIDGET (self->preview_window))) return; group = gtk_single_selection_get_selected_item (self->groups_selection); if (group != NULL) bz_window_show_group (BZ_WINDOW (self->preview_window), group); } static void entry_changed (BzInspector *self, GtkEditable *editable) { GtkFilter *filter = NULL; filter = gtk_filter_list_model_get_filter (self->filter_model); gtk_filter_changed (filter, GTK_FILTER_CHANGE_DIFFERENT); } static void decache_and_inspect_cb (GtkListItem *list_item, GtkButton *button) { GtkStringObject *item = NULL; BzInspector *self = NULL; g_autoptr (BzResult) result = NULL; item = gtk_list_item_get_item (list_item); self = BZ_INSPECTOR (gtk_widget_get_ancestor (GTK_WIDGET (button), BZ_TYPE_INSPECTOR)); g_assert (self != NULL); result = bz_application_map_factory_convert_one ( bz_state_info_get_entry_factory (self->state), g_object_ref (item)); if (result != NULL) { BzEntryInspector *inspector = NULL; inspector = bz_entry_inspector_new (); bz_entry_inspector_set_result (inspector, result); gtk_window_present (GTK_WINDOW (inspector)); } } static void copy_unique_id_cb (GtkListItem *list_item, GtkButton *button) { GtkStringObject *item = NULL; const char *text = NULL; GdkClipboard *clipboard = NULL; item = gtk_list_item_get_item (list_item); text = gtk_string_object_get_string (item); clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); gdk_clipboard_set_text (clipboard, text); } static void open_file_externally_cb (GtkListItem *list_item, GtkButton *button) { GtkStringObject *string = NULL; const char *path = NULL; string = gtk_list_item_get_item (list_item); path = gtk_string_object_get_string (string); #if defined(DEVELOPMENT_BUILD) && defined(SANDBOXED_LIBFLATPAK) { const char *argv[] = { "flatpak-spawn", "--host", "xdg-open", NULL, NULL }; argv[3] = path; g_spawn_async (NULL, (char **) argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL); } #else { g_autofree char *uri = NULL; uri = g_strdup_printf ("file://%s", path); g_app_info_launch_default_for_uri (uri, NULL, NULL); } #endif } static void bz_inspector_class_init (BzInspectorClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_inspector_set_property; object_class->get_property = bz_inspector_get_property; object_class->dispose = bz_inspector_dispose; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-inspector.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzInspector, debug_mode_check); gtk_widget_class_bind_template_child (widget_class, BzInspector, disable_blocklists_check); gtk_widget_class_bind_template_child (widget_class, BzInspector, serialize_all_entries_path_entry); gtk_widget_class_bind_template_child (widget_class, BzInspector, serialize_all_entries_btn); gtk_widget_class_bind_template_child (widget_class, BzInspector, serialize_all_entries_progress); gtk_widget_class_bind_template_child (widget_class, BzInspector, search_entry); gtk_widget_class_bind_template_child (widget_class, BzInspector, filter_model); gtk_widget_class_bind_template_child (widget_class, BzInspector, groups_selection); gtk_widget_class_bind_template_callback (widget_class, serialize_all_entries_cb); gtk_widget_class_bind_template_callback (widget_class, preview_changed); gtk_widget_class_bind_template_callback (widget_class, selected_group_changed); gtk_widget_class_bind_template_callback (widget_class, decache_and_inspect_cb); gtk_widget_class_bind_template_callback (widget_class, copy_unique_id_cb); gtk_widget_class_bind_template_callback (widget_class, open_file_externally_cb); gtk_widget_class_bind_template_callback (widget_class, entry_changed); } static void on_map (BzInspector *self, GtkWidget *widget) { gtk_widget_grab_focus (GTK_WIDGET (self->search_entry)); } static void bz_inspector_init (BzInspector *self) { GtkCustomFilter *filter = NULL; g_autofree char *serialize_all_entries_output = NULL; gtk_widget_init_template (GTK_WIDGET (self)); filter = gtk_custom_filter_new ((GtkCustomFilterFunc) filter_func, self, NULL); gtk_filter_list_model_set_filter (self->filter_model, GTK_FILTER (filter)); g_signal_connect_swapped (self, "map", G_CALLBACK (on_map), self); serialize_all_entries_output = g_build_filename ( g_get_home_dir (), "BAZAAR_SERIALIZED_ENTRIES.TXT", NULL); gtk_editable_set_text ( self->serialize_all_entries_path_entry, serialize_all_entries_output); } BzInspector * bz_inspector_new (void) { return g_object_new (BZ_TYPE_INSPECTOR, NULL); } BzStateInfo * bz_inspector_get_state (BzInspector *self) { g_return_val_if_fail (BZ_IS_INSPECTOR (self), NULL); return self->state; } void bz_inspector_set_state (BzInspector *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_INSPECTOR (self)); g_clear_pointer (&self->state, g_object_unref); g_clear_pointer (&self->debug_mode_binding, g_object_unref); g_clear_pointer (&self->disable_blocklists_binding, g_object_unref); if (state != NULL) { self->state = g_object_ref (state); self->debug_mode_binding = g_object_bind_property ( state, "debug-mode", self->debug_mode_check, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); self->disable_blocklists_binding = g_object_bind_property ( state, "disable-blocklists", self->disable_blocklists_check, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); } static DexFuture * serialize_all_entries_fiber (BzInspector *self) { g_autoptr (GError) local_error = NULL; g_autoptr (BzEntryCacheManager) cache = NULL; const char *path = NULL; g_autofree char *path_clone = NULL; g_autoptr (GFile) file = NULL; g_autoptr (GHashTable) cached_set = NULL; guint cached_set_size = 0; g_autoptr (GFileOutputStream) output = NULL; GHashTableIter iter = { 0 }; if (self->state == NULL) return dex_future_new_false (); cache = bz_state_info_get_cache_manager (self->state); if (cache == NULL) return dex_future_new_false (); g_object_ref (cache); path = gtk_editable_get_text (self->serialize_all_entries_path_entry); if (path == NULL || *path == '\0') return dex_future_new_false (); path_clone = g_strdup (path); file = g_file_new_for_path (path_clone); gtk_widget_set_sensitive (GTK_WIDGET (self->serialize_all_entries_btn), FALSE); gtk_widget_set_visible (GTK_WIDGET (self->serialize_all_entries_progress), TRUE); gtk_progress_bar_set_fraction (self->serialize_all_entries_progress, 0.0); cached_set = dex_await_boxed ( bz_entry_cache_manager_enumerate_disk ( bz_state_info_get_cache_manager (self->state)), &local_error); if (cached_set == NULL) goto err; cached_set_size = g_hash_table_size (cached_set); output = dex_await_object ( dex_file_replace ( file, NULL, TRUE, G_FILE_CREATE_REPLACE_DESTINATION, G_PRIORITY_DEFAULT), &local_error); if (output == NULL) goto err; #define WRITE_STRING(_string) \ G_STMT_START \ { \ dex_await ( \ dex_output_stream_write ( \ G_OUTPUT_STREAM (output), \ (_string), \ strlen ((_string)), \ G_PRIORITY_DEFAULT), \ &local_error); \ if (local_error != NULL) \ goto err; \ } \ G_STMT_END WRITE_STRING ("[\n"); g_hash_table_iter_init (&iter, cached_set); for (guint i = 1;; i++) { char *checksum = NULL; g_autoptr (BzEntry) entry = NULL; g_autoptr (GVariantBuilder) builder = NULL; g_autoptr (GVariant) variant = NULL; g_autoptr (JsonNode) node = NULL; g_autoptr (JsonGenerator) generator = NULL; gsize length = 0; g_autofree char *string = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &checksum, NULL)) break; if (i > 1) WRITE_STRING (",\n\n"); entry = dex_await_object ( bz_entry_cache_manager_get_by_checksum ( cache, checksum), &local_error); if (entry == NULL) goto err; builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT); bz_serializable_serialize (BZ_SERIALIZABLE (entry), builder); variant = g_variant_builder_end (builder); node = json_gvariant_serialize (variant); generator = json_generator_new (); json_generator_set_pretty (generator, TRUE); json_generator_set_root (generator, node); string = json_generator_to_data (generator, &length); dex_await ( dex_output_stream_write ( G_OUTPUT_STREAM (output), string, length, G_PRIORITY_DEFAULT), &local_error); if (local_error != NULL) goto err; gtk_progress_bar_set_fraction ( self->serialize_all_entries_progress, (double) i / (double) cached_set_size); } WRITE_STRING ("\n]\n"); dex_await ( dex_output_stream_close ( G_OUTPUT_STREAM (output), G_PRIORITY_DEFAULT), NULL); gtk_widget_set_sensitive (GTK_WIDGET (self->serialize_all_entries_btn), TRUE); gtk_widget_set_visible (GTK_WIDGET (self->serialize_all_entries_progress), FALSE); return dex_future_new_true (); err: if (local_error != NULL) g_warning ("Failed to serialize: %s", local_error->message); gtk_widget_set_sensitive (GTK_WIDGET (self->serialize_all_entries_btn), TRUE); gtk_widget_set_visible (GTK_WIDGET (self->serialize_all_entries_progress), FALSE); return dex_future_new_for_error (g_steal_pointer (&local_error)); } static gboolean filter_func (BzEntryGroup *group, BzInspector *self) { const char *text = NULL; const char *id = NULL; const char *title = NULL; text = gtk_editable_get_text (self->search_entry); id = bz_entry_group_get_id (group); title = bz_entry_group_get_title (group); if (text == NULL || *text == '\0') return TRUE; if (strcasestr (id, text) != NULL) return TRUE; if (strcasestr (title, text) != NULL) return TRUE; return FALSE; } /* End of bz-inspector.c */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-inspector.h��������������������������������������������������������0000664�0000000�0000000�00000002256�15240005042�0020722�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-inspector.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_INSPECTOR (bz_inspector_get_type ()) G_DECLARE_FINAL_TYPE (BzInspector, bz_inspector, BZ, INSPECTOR, AdwWindow) BzInspector * bz_inspector_new (void); BzStateInfo * bz_inspector_get_state (BzInspector *self); void bz_inspector_set_state (BzInspector *self, BzStateInfo *state); G_END_DECLS /* End of bz-inspector.h */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-install-controls.blp�����������������������������������������������0000664�0000000�0000000�00000012355�15240005042�0022552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzInstallControls: Box { hexpand: bind $invert_boolean(template.wide) as <bool>; Stack stack { visible: bind $is_not_empty_page(stack.visible-child-name) as <bool>; transition-type: crossfade; visible-child-name: bind try { $get_visible_page(template.entry-group as <$BzEntryGroup>.installable, template.entry-group as <$BzEntryGroup>.removable, template.state as <$BzStateInfo>.available-updates, template.tracker as <$BzTransactionEntryTracker>.active as <bool> ) as <string>, $get_visible_page(template.entry-group as <$BzEntryGroup>.installable, template.entry-group as <$BzEntryGroup>.removable, template.state as <$BzStateInfo>.available-updates, false ) as <string> }; hexpand: bind $invert_boolean(template.wide) as <bool>; valign: center; StackPage install { name: "install"; child: $BgeWdgtRenderer animated_button { margin-top: 3; margin-bottom: 3; resource: "/io/github/kolunmi/Bazaar/bz-install-controls.wdgt"; reference: bind template.tracker as <$BzTransactionEntryTracker>; state: bind try { $get_install_btn_state( template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus>, template.tracker as <$BzTransactionEntryTracker>.active as <bool>, template.tracker as <$BzTransactionEntryTracker>.pending as <bool>, template.tracker as <$BzTransactionEntryTracker>.progress as <double> ) as <string>, $install_btn_state_fallback() as <string>}; has-tooltip: true; hexpand: bind $invert_boolean(template.wide) as <bool>; halign: bind $choose_int(template.wide, 2, 0) as <int>; }; } StackPage open { name: "open"; child: Box { spacing: bind $choose_int(template.wide, 10, 8) as <int>; homogeneous: bind $invert_boolean(template.wide) as <bool>; halign: bind $choose_int(template.wide, 2, 0) as <int>; valign: center; margin-top: 3; margin-bottom: 3; Button open_button { styles [ "pill", ] visible: bind $invert_boolean($is_blocked(template.state as <$BzStateInfo>.parental-blocked-ids, template.entry-group as <$BzEntryGroup>) as <bool>) as <bool>; has-tooltip: true; hexpand: bind $invert_boolean(template.wide) as <bool>; label: _("_Open"); use-underline: true; sensitive: bind $invert_boolean($is_zero(template.entry-group as <$BzEntryGroup>.removable-and-available) as <bool>) as <bool>; clicked => $run_cb(template); } Button { styles [ "destructive-action", "circular", ] width-request: bind $choose_int(template.wide, 45, -1) as <int>; hexpand: bind $invert_boolean(template.wide) as <bool>; has-tooltip: bind template.wide as <bool>; tooltip-text: _("Uninstall Application"); sensitive: bind $invert_boolean($is_zero(template.entry-group as <$BzEntryGroup>.removable-and-available) as <bool>) as <bool>; clicked => $remove_cb(template); child: Box { halign: center; hexpand: true; Label { visible: bind $invert_boolean(template.wide) as <bool>; label: _("_Remove"); use-underline: true; } Image { visible: bind template.wide as <bool>; icon-name: "user-trash-symbolic"; } }; } }; } StackPage update { name: "update"; child: Box { spacing: bind $choose_int(template.wide, 10, 8) as <int>; homogeneous: bind $invert_boolean(template.wide) as <bool>; halign: bind $choose_int(template.wide, 2, 0) as <int>; valign: center; margin-top: 3; margin-bottom: 3; Button update_button { styles [ "pill", "suggested-action" ] hexpand: bind $invert_boolean(template.wide) as <bool>; label: _("Update"); clicked => $update_cb(template); } Button { styles [ "destructive-action", "circular", ] width-request: bind $choose_int(template.wide, 45, -1) as <int>; hexpand: bind $invert_boolean(template.wide) as <bool>; has-tooltip: bind template.wide as <bool>; tooltip-text: _("Uninstall Application"); sensitive: bind $invert_boolean($is_zero(template.entry-group as <$BzEntryGroup>.removable-and-available) as <bool>) as <bool>; clicked => $remove_cb(template); child: Box { halign: center; hexpand: true; Label { visible: bind $invert_boolean(template.wide) as <bool>; label: _("Remove"); } Image { visible: bind template.wide as <bool>; icon-name: "user-trash-symbolic"; } }; } }; } StackPage empty { name: "empty"; child: Adw.Bin {}; } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-install-controls.c�������������������������������������������������0000664�0000000�0000000�00000050446�15240005042�0022222�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-install-controls.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include <bge.h> #include "bz-install-controls.h" #include "bz-state-info.h" #include "template-callbacks.h" #include "util.h" #include "progress-bar-designs/common.h" struct _BzInstallControls { GtkBox parent_instance; BzEntryGroup *group; BzStateInfo *state; GSettings *settings; gboolean wide; BzTransactionEntryTracker *tracker; GListModel *all_trackers; GtkWidget *install_button; char *install_btn_class; char *pride_class; /* Template widgets */ GtkWidget *open_button; GtkWidget *update_button; GtkWidget *animated_button; }; G_DEFINE_FINAL_TYPE (BzInstallControls, bz_install_controls, GTK_TYPE_BOX) enum { PROP_0, PROP_WIDE, PROP_ENTRY_GROUP, PROP_STATE, PROP_SETTINGS, PROP_TRACKER, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_UPDATE, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void pride_flag_changed (BzInstallControls *self, const char *key, GSettings *settings); static void ensure_draw_css (BzInstallControls *self); static void update_tracker (BzInstallControls *self) { BzTransactionManager *manager = NULL; g_autoptr (GListModel) all = NULL; const char *group_id = NULL; g_autoptr (BzTransactionEntryTracker) found = NULL; if (self->state != NULL) manager = bz_state_info_get_transaction_manager (self->state); if (manager != NULL) g_object_get (manager, "all-trackers", &all, NULL); if (self->group != NULL) group_id = bz_entry_group_get_id (self->group); if (all != NULL && group_id != NULL) { for (guint i = 0; i < g_list_model_get_n_items (all); i++) { g_autoptr (BzTransactionEntryTracker) tracker = NULL; BzEntry *entry = NULL; tracker = g_list_model_get_item (all, i); entry = bz_transaction_entry_tracker_get_entry (tracker); if (g_strcmp0 (entry != NULL ? bz_entry_get_id (entry) : NULL, group_id) == 0) { found = g_steal_pointer (&tracker); break; } } } if (g_set_object (&self->tracker, found)) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TRACKER]); } static void on_all_trackers_changed (GListModel *model, guint position, guint removed, guint added, BzInstallControls *self) { update_tracker (self); } static void install_cancel_cb (BzInstallControls *self, GtkButton *button) { const char *state = NULL; if (self->group == NULL) return; state = bge_wdgt_renderer_get_state (BGE_WDGT_RENDERER (self->animated_button)); if (state == NULL) return; if (g_strcmp0 (state, "inactive") == 0) gtk_widget_activate_action (GTK_WIDGET (self), "window.install-group", "(sb)", bz_entry_group_get_id (self->group), TRUE); else gtk_widget_activate_action (GTK_WIDGET (self), "window.cancel-group", "s", bz_entry_group_get_id (self->group)); } static void remove_cb (BzInstallControls *self, GtkButton *button) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.remove-group", "(sb)", bz_entry_group_get_id (self->group), TRUE); } static void run_cb (BzInstallControls *self, GtkButton *button) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.launch-group", "s", bz_entry_group_get_id (self->group)); } static GListStore * find_matching_updates (BzInstallControls *self, GListModel *available_updates) { const char *group_id = NULL; guint n_items = 0; GListStore *store = NULL; if (self->group == NULL || available_updates == NULL) return NULL; group_id = bz_entry_group_get_id (self->group); n_items = g_list_model_get_n_items (available_updates); store = g_list_store_new (BZ_TYPE_ENTRY); for (guint i = 0; i < n_items; i++) { g_autoptr (BzEntry) entry = NULL; const char *id = NULL; entry = g_list_model_get_item (available_updates, i); id = bz_entry_get_id (entry); if (g_strcmp0 (id, group_id) == 0) g_list_store_append (store, entry); } if (g_list_model_get_n_items (G_LIST_MODEL (store)) == 0) g_clear_object (&store); return store; } static void update_cb (BzInstallControls *self, GtkButton *button) { GListModel *available_updates = NULL; g_autoptr (GListStore) store = NULL; if (self->state == NULL) return; available_updates = bz_state_info_get_available_updates (self->state); store = find_matching_updates (self, available_updates); if (store != NULL) g_signal_emit (self, signals[SIGNAL_UPDATE], 0, G_LIST_MODEL (store)); } static gboolean is_not_empty_page (gpointer object, const char *page_name) { if (page_name == NULL) return FALSE; return g_strcmp0 (page_name, "empty") != 0; } static char * get_visible_page (gpointer object, int installable, int removable, GListModel *available_updates, gboolean active) { BzInstallControls *self = BZ_INSTALL_CONTROLS (object); g_autoptr (GListStore) store = NULL; if (active) return g_strdup ("install"); if (removable > 0) { if (g_signal_has_handler_pending (self, signals[SIGNAL_UPDATE], 0, FALSE)) store = find_matching_updates (self, available_updates); return g_strdup (store != NULL ? "update" : "open"); } else if (installable > 0) return g_strdup ("install"); else return g_strdup ("empty"); } static void set_install_btn_class (BzInstallControls *self, const char *class) { if (self->install_button == NULL) return; if (self->install_btn_class != NULL && g_strcmp0 (class, self->install_btn_class) == 0) return; if (self->install_btn_class != NULL) gtk_widget_remove_css_class (self->install_button, self->install_btn_class); g_clear_pointer (&self->install_btn_class, g_free); if (class != NULL) { gtk_widget_add_css_class (self->install_button, class); self->install_btn_class = g_strdup (class); } } static char * get_install_btn_state (BzInstallControls *self, BzTransactionEntryStatus status, gboolean active, gboolean pending, double progress) { g_autofree char *state = NULL; const char *class = NULL; if ((active || pending) && status == BZ_TRANSACTION_ENTRY_STATUS_CANCELLED) { state = g_strdup ("cancelling"); class = NULL; } else if (pending || status == BZ_TRANSACTION_ENTRY_STATUS_QUEUED) { state = g_strdup ("pending"); class = NULL; } else if (!active || status == BZ_TRANSACTION_ENTRY_STATUS_DONE) { state = g_strdup ("inactive"); class = "suggested-action"; } else { state = g_strdup ("fraction"); class = NULL; } set_install_btn_class (self, class); return g_steal_pointer (&state); } static char * install_btn_state_fallback (BzInstallControls *self) { set_install_btn_class (self, "suggested-action"); return g_strdup ("inactive"); } static gboolean is_blocked (gpointer object, GListModel *parental_blocked, BzEntryGroup *group) { const char *id = NULL; if (parental_blocked == NULL || group == NULL) return FALSE; id = bz_entry_group_get_id (group); if (id == NULL) return FALSE; for (guint i = 0; i < g_list_model_get_n_items (parental_blocked); i++) { g_autoptr (GtkStringObject) obj = g_list_model_get_item (parental_blocked, i); if (strstr (gtk_string_object_get_string (obj), id) != NULL) return TRUE; } return FALSE; } static gboolean idle_grab_focus (GWeakRef *wr) { g_autoptr (BzInstallControls) self = NULL; self = g_weak_ref_get (wr); if (self == NULL) goto done; if (gtk_widget_is_visible (GTK_WIDGET (self))) { GtkWidget *target = self->install_button; if (self->group != NULL && bz_entry_group_get_removable (self->group) > 0) target = find_matching_updates (self, bz_state_info_get_available_updates (self->state)) != NULL ? self->update_button : self->open_button; gtk_widget_grab_focus (target); } done: return G_SOURCE_REMOVE; } static void bz_install_controls_dispose (GObject *object) { BzInstallControls *self = BZ_INSTALL_CONTROLS (object); if (self->settings != NULL) g_signal_handlers_disconnect_by_func ( self->settings, pride_flag_changed, self); if (self->all_trackers != NULL) g_signal_handlers_disconnect_by_func ( self->all_trackers, on_all_trackers_changed, self); g_clear_object (&self->group); g_clear_object (&self->state); g_clear_object (&self->settings); g_clear_object (&self->tracker); g_clear_object (&self->install_button); g_clear_pointer (&self->install_btn_class, g_free); g_clear_pointer (&self->pride_class, g_free); g_clear_object (&self->all_trackers); G_OBJECT_CLASS (bz_install_controls_parent_class)->dispose (object); } static void bz_install_controls_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzInstallControls *self = BZ_INSTALL_CONTROLS (object); switch (prop_id) { case PROP_WIDE: g_value_set_boolean (value, self->wide); break; case PROP_ENTRY_GROUP: g_value_set_object (value, self->group); break; case PROP_STATE: g_value_set_object (value, self->state); break; case PROP_TRACKER: g_value_set_object (value, self->tracker); break; case PROP_SETTINGS: g_value_set_object (value, self->settings); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_install_controls_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzInstallControls *self = BZ_INSTALL_CONTROLS (object); switch (prop_id) { case PROP_WIDE: bz_install_controls_set_wide (self, g_value_get_boolean (value)); break; case PROP_ENTRY_GROUP: bz_install_controls_set_entry_group (self, g_value_get_object (value)); break; case PROP_STATE: bz_install_controls_set_state (self, g_value_get_object (value)); break; case PROP_SETTINGS: { if (self->settings != NULL) g_signal_handlers_disconnect_by_func ( self->settings, pride_flag_changed, self); g_clear_object (&self->settings); self->settings = g_value_dup_object (value); if (self->settings != NULL) { g_signal_connect_swapped ( self->settings, "changed::global-progress-bar-theme", G_CALLBACK (pride_flag_changed), self); } ensure_draw_css (self); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_install_controls_class_init (BzInstallControlsClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_install_controls_dispose; object_class->get_property = bz_install_controls_get_property; object_class->set_property = bz_install_controls_set_property; props[PROP_WIDE] = g_param_spec_boolean ( "wide", NULL, NULL, TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ENTRY_GROUP] = g_param_spec_object ( "entry-group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_SETTINGS] = g_param_spec_object ( "settings", NULL, NULL, G_TYPE_SETTINGS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TRACKER] = g_param_spec_object ( "tracker", NULL, NULL, BZ_TYPE_TRANSACTION_ENTRY_TRACKER, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_UPDATE] = g_signal_new ( "update", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_LIST_MODEL); g_signal_set_va_marshaller ( signals[SIGNAL_UPDATE], G_TYPE_FROM_CLASS (klass), g_cclosure_marshal_VOID__OBJECTv); g_type_ensure (BZ_TYPE_ENTRY_GROUP); g_type_ensure (BZ_TYPE_STATE_INFO); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-install-controls.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzInstallControls, open_button); gtk_widget_class_bind_template_child (widget_class, BzInstallControls, update_button); gtk_widget_class_bind_template_child (widget_class, BzInstallControls, animated_button); gtk_widget_class_bind_template_callback (widget_class, install_cancel_cb); gtk_widget_class_bind_template_callback (widget_class, remove_cb); gtk_widget_class_bind_template_callback (widget_class, run_cb); gtk_widget_class_bind_template_callback (widget_class, update_cb); gtk_widget_class_bind_template_callback (widget_class, is_not_empty_page); gtk_widget_class_bind_template_callback (widget_class, get_visible_page); gtk_widget_class_bind_template_callback (widget_class, get_install_btn_state); gtk_widget_class_bind_template_callback (widget_class, install_btn_state_fallback); gtk_widget_class_bind_template_callback (widget_class, is_blocked); } static void bz_install_controls_init (BzInstallControls *self) { self->wide = TRUE; gtk_widget_init_template (GTK_WIDGET (self)); self->install_button = bge_wdgt_renderer_lookup_object ( BGE_WDGT_RENDERER (self->animated_button), "btn"); gtk_widget_add_css_class (self->install_button, "pill"); g_signal_connect_swapped ( self->install_button, "clicked", G_CALLBACK (install_cancel_cb), self); gtk_widget_add_css_class (self->install_button, "suggested-action"); self->install_btn_class = g_strdup ("suggested-action"); } GtkWidget * bz_install_controls_new (void) { return g_object_new (BZ_TYPE_INSTALL_CONTROLS, NULL); } gboolean bz_install_controls_get_wide (BzInstallControls *self) { g_return_val_if_fail (BZ_IS_INSTALL_CONTROLS (self), FALSE); return self->wide; } void bz_install_controls_set_wide (BzInstallControls *self, gboolean wide) { g_return_if_fail (BZ_IS_INSTALL_CONTROLS (self)); wide = !!wide; if (self->wide == wide) return; self->wide = wide; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WIDE]); } BzEntryGroup * bz_install_controls_get_entry_group (BzInstallControls *self) { g_return_val_if_fail (BZ_IS_INSTALL_CONTROLS (self), NULL); return self->group; } void bz_install_controls_set_entry_group (BzInstallControls *self, BzEntryGroup *group) { const char *title = NULL; const char *developer = NULL; g_return_if_fail (BZ_IS_INSTALL_CONTROLS (self)); if (self->group == group) return; g_clear_object (&self->group); if (group != NULL) self->group = g_object_ref (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENTRY_GROUP]); if (group != NULL) { title = bz_entry_group_get_title (group); developer = bz_entry_group_get_developer (group); } if (self->install_button != NULL) { g_autofree char *label = NULL; if (title != NULL && developer != NULL) label = g_strdup_printf (_("Install %s from %s"), title, developer); else if (title != NULL) label = g_strdup_printf (_("Install %s"), title); if (label != NULL) gtk_accessible_update_property ( GTK_ACCESSIBLE (self->install_button), GTK_ACCESSIBLE_PROPERTY_LABEL, label, -1); } if (group != NULL) g_idle_add_full ( G_PRIORITY_DEFAULT_IDLE, (GSourceFunc) idle_grab_focus, bz_track_weak (self), bz_weak_release); update_tracker (self); } BzStateInfo * bz_install_controls_get_state (BzInstallControls *self) { g_return_val_if_fail (BZ_IS_INSTALL_CONTROLS (self), NULL); return self->state; } void bz_install_controls_set_state (BzInstallControls *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_INSTALL_CONTROLS (self)); if (self->all_trackers != NULL) { g_signal_handlers_disconnect_by_func (self->all_trackers, on_all_trackers_changed, self); g_clear_object (&self->all_trackers); } g_set_object (&self->state, state); if (state != NULL) { BzTransactionManager *mgr = NULL; mgr = bz_state_info_get_transaction_manager (state); if (mgr != NULL) g_object_get (mgr, "all-trackers", &self->all_trackers, NULL); if (self->all_trackers != NULL) g_signal_connect (self->all_trackers, "items-changed", G_CALLBACK (on_all_trackers_changed), self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); update_tracker (self); } static void pride_flag_changed (BzInstallControls *self, const char *key, GSettings *settings) { ensure_draw_css (self); } static void ensure_draw_css (BzInstallControls *self) { if (self->settings != NULL) { g_autofree char *id = NULL; g_autofree char *final_id = NULL; g_autofree char *class = NULL; id = g_settings_get_string (self->settings, "global-progress-bar-theme"); if (g_strcmp0 (id, "accent-color") != 0) final_id = g_strdup_printf ("%s-horizontal", id); else final_id = g_strdup (id); class = bz_dup_css_class_for_pride_id (final_id); if (self->pride_class != NULL && g_strcmp0 (self->pride_class, class) == 0) return; if (self->pride_class != NULL) gtk_widget_remove_css_class (self->animated_button, self->pride_class); g_clear_pointer (&self->pride_class, g_free); gtk_widget_add_css_class (self->animated_button, class); self->pride_class = g_steal_pointer (&class); } else { if (self->pride_class != NULL) gtk_widget_remove_css_class (self->animated_button, self->pride_class); g_clear_pointer (&self->pride_class, g_free); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-install-controls.h�������������������������������������������������0000664�0000000�0000000�00000003213�15240005042�0022215�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-install-controls.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include "bz-state-info.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_INSTALL_CONTROLS (bz_install_controls_get_type ()) G_DECLARE_FINAL_TYPE (BzInstallControls, bz_install_controls, BZ, INSTALL_CONTROLS, GtkBox) GtkWidget * bz_install_controls_new (void); gboolean bz_install_controls_get_wide (BzInstallControls *self); void bz_install_controls_set_wide (BzInstallControls *self, gboolean wide); BzEntryGroup * bz_install_controls_get_entry_group (BzInstallControls *self); void bz_install_controls_set_entry_group (BzInstallControls *self, BzEntryGroup *group); BzStateInfo * bz_install_controls_get_state (BzInstallControls *self); void bz_install_controls_set_state (BzInstallControls *self, BzStateInfo *state); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-install-controls.wdgt����������������������������������������������0000664�0000000�0000000�00000007605�15240005042�0022744�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������defwidget "Install Button" { reference state : "BzTransactionEntryTracker"; var progress : "gdouble"; var lbl-install : "GtkLabel"; var lbl-cancel : "GtkLabel"; var lbl-cancelling : "GtkLabel"; var stack : "GtkStack"; var btn : "GtkButton"; var flag : "GtkFixed"; var start : "gdouble"; var end : "gdouble"; var opacity : "gdouble"; var corner : "gdouble"; var outline : "GskPath"; var outline-measure : "GskPathMeasure"; var outline-width : "gdouble"; var outline-opacity : "gdouble"; init { set progress = #transition(state:progress, 1.1, 0.1, 10.0); set stack = #( transition-type = crossfade; transition-duration = 200; %set lbl-install = #child/GtkLabel(""() label = C_("Install Controls", "Install"); ); %set lbl-cancel = #child/GtkLabel(""() label = C_("Install Controls", "Cancel"); ); %set lbl-cancelling = #child/GtkLabel(""() label = C_("Install Controls", "Cancelling"); ); ); allocate stack %width%, %height%, #(); set btn = #child/(""("pill") child = stack; margin-start = 4; margin-end = 4; margin-top = 4; margin-bottom = 4; ); allocate btn %width%, %height%, #(); set flag = #child/(""("install-button-indicator") can-target = false; ); allocate flag %width%, %height%, #(); set corner = #eval(#(%height%)/2.0); set outline = #GskPath( move-to(#eval(#(%width%)/2.0), 0.0); rel-line-to(#eval(#(%width%)/2.0-#(corner)), 0.0); rel-arc-to(corner, 0.0, corner, corner); rel-line-to(0.0, #eval(#(%height%)-#(corner)*2.0)); rel-arc-to(0.0, corner, #eval(-#(corner)), corner); rel-line-to(#eval(-(#(%width%)-#(corner)*2.0)), 0.0); rel-arc-to(#eval(-#(corner)), 0.0, #eval(-#(corner)), #eval(-#(corner))); rel-line-to(0.0, #eval(-(#(%height%)-#(corner)*2.0))); rel-arc-to(0.0, #eval(-#(corner)), corner, #eval(-#(corner))); rel-line-to(#eval(#(%width%)/2.0-#(corner)), 0.0); close(); ); set outline-measure = #measure-path(outline); snapshot { do-child btn; with opacity(outline-opacity) { with stroke( #GskPath( add-segment( outline, #path-point(outline-measure, #eval((#(start)%1.0)*#(#path-length(outline-measure)))), #path-point(outline-measure, #eval((#(end)%1.0)*#(#path-length(outline-measure)))), ); ), #GskStroke(outline-width, butt, round, 0.0), ) { do-child flag; } } } } state-default "inactive" { set btn:sensitive = true; set stack:visible-child = lbl-install; set start = 0.0; set end = 0.001; set outline-width = 5.0; set outline-opacity = 0.0; transition-spring outline-width 1.0, 0.1, 15.0; transition-spring outline-opacity 1.0, 0.1, 100.0; } state "pending" { set btn:sensitive = true; set stack:visible-child = lbl-cancel; set start = #eval((#(%tick%)/3.0)%1.0); set end = #eval((#(start)+0.2)%1.0); set outline-width = 5.0; set outline-opacity = 1.0; transition-spring outline-width 1.0, 0.1, 10.0; transition-spring outline-opacity 1.0, 0.1, 10.0; } state "fraction" { set btn:sensitive = true; set stack:visible-child = lbl-cancel; set start = 0.0; set end = #eval(0.05+#(progress)*0.95); set outline-width = 5.0; set outline-opacity = 1.0; transition-spring outline-width 1.1, 0.1, 10.0; transition-spring outline-opacity 1.1, 0.1, 10.0; } state "cancelling" { set btn:sensitive = false; set stack:visible-child = lbl-cancelling; set start = 0.0; set end = 0.001; set outline-width = 0.0; set outline-opacity = 1.0; transition-spring outline-width 1.0, 0.1, 10.0; transition-spring outline-opacity 1.0, 0.1, 10.0; } } ���������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-installed-tile.blp�������������������������������������������������0000664�0000000�0000000�00000006317�15240005042�0022156�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzInstalledTile: $BzListTile { accessibility { labelled-by: title_label; described-by: description_label; } child: Box { orientation: horizontal; spacing: 10; $BzTransactIcon { margin-start: 10; margin-top: 10; margin-bottom: 10; width-request: 64; height-request: 64; valign: center; halign: center; info: $BzTransactIconInfo { group: bind template.group as <$BzEntryGroup>; paintable: bind template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable; }; } Box { orientation: vertical; valign: center; spacing: 4; Label title_label { xalign: 0.0; ellipsize: end; single-line-mode: true; has-tooltip: true; tooltip-text: bind template.group as <$BzEntryGroup>.id; label: bind template.group as <$BzEntryGroup>.title; } Label description_label { halign: start; ellipsize: end; single-line-mode: true; label: bind $format_description(template.group as <$BzEntryGroup>.installed-size, template.group as <$BzEntryGroup>.installed-versions) as <string>; styles ["dimmed", "caption", "installed-size"] } Label { xalign: 0.0; ellipsize: end; single-line-mode: true; visible: bind $invert_boolean($is_null(template.group as <$BzEntryGroup>.eol) as <bool>) as <bool>; label: _("Stopped Receiving Updates"); styles ["warning", "caption"] } } Button support_button { styles [ "circular", "flat", "suggested-action", "support" ] has-tooltip: true; tooltip-text: bind template.group as <$BzEntryGroup>.donation-url; width-request: 32; height-request: 32; valign: center; icon-name: "heart-filled-symbolic"; visible: bind $invert_boolean($is_null(template.group as <$BzEntryGroup>.donation-url) as <bool>) as <bool>; clicked => $support_cb() swapped; accessibility { label: _("Donate"); } } Box { orientation: horizontal; spacing: 8; margin-end: 8; hexpand: true; halign: end; Button addons_button { styles [ "flat" ] tooltip-text: _("Manage Add-Ons"); visible: bind $invert_boolean($is_zero(template.group as <$BzEntryGroup>.n-addons as <int>) as <bool>) as <bool>; valign: center; icon-name: "application-x-addon-symbolic"; clicked => $install_addons_cb() swapped; } Button remove_button { styles [ "flat", ] tooltip-text: _("Remove"); valign: center; icon-name: "user-trash-symbolic"; visible: bind $invert_boolean($is_zero(template.group as <$BzEntryGroup>.removable) as <bool>) as <bool>; sensitive: bind $invert_boolean($is_zero(template.group as <$BzEntryGroup>.removable-and-available) as <bool>) as <bool>; clicked => $remove_cb() swapped; } Image { pixel-size: 14; icon-name: "go-next-symbolic"; margin-end: 4; styles ["dimmed"] } } }; }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-installed-tile.c���������������������������������������������������0000664�0000000�0000000�00000020700�15240005042�0021613�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-installed-tile.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-addons-dialog.h" #include "bz-entry-group-util.h" #include "bz-entry-group.h" #include "env.h" #include "error.h" #include "bz-installed-tile.h" #include "bz-library-page.h" #include "bz-state-info.h" #include "bz-transact-icon.h" #include "bz-transact-icon-info.h" #include "bz-window.h" struct _BzInstalledTile { BzListTile parent_instance; BzEntryGroup *group; GtkLabel *title_label; GtkButton *support_button; GtkButton *remove_button; }; G_DEFINE_FINAL_TYPE (BzInstalledTile, bz_installed_tile, BZ_TYPE_LIST_TILE) enum { PROP_0, PROP_GROUP, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_installed_tile_dispose (GObject *object) { BzInstalledTile *self = BZ_INSTALLED_TILE (object); g_clear_object (&self->group); G_OBJECT_CLASS (bz_installed_tile_parent_class)->dispose (object); } static void bz_installed_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzInstalledTile *self = BZ_INSTALLED_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_installed_tile_get_group (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_installed_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzInstalledTile *self = BZ_INSTALLED_TILE (object); switch (prop_id) { case PROP_GROUP: bz_installed_tile_set_group (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_zero (gpointer object, int value) { return value == 0; } static gboolean logical_and (gpointer object, gboolean a, gboolean b) { return a && b; } static gboolean logical_or (gpointer object, gboolean a, gboolean b) { return a || b; } static char * format_description (gpointer object, guint64 size, GListModel *versions) { g_autoptr (GString) result = NULL; g_autoptr (GString) versions_str = NULL; g_autofree char *size_str = NULL; guint n_versions = 0; result = g_string_new (NULL); if (versions != NULL) n_versions = g_list_model_get_n_items (versions); if (n_versions > 0) { versions_str = g_string_new (NULL); for (guint i = 0; i < n_versions; i++) { g_autoptr (GtkStringObject) string = NULL; const char *version = NULL; string = g_list_model_get_item (versions, i); version = gtk_string_object_get_string (string); if (version != NULL && *version != '\0') { if (versions_str->len > 0) g_string_append_c (versions_str, ' '); g_string_append (versions_str, version); } } if (versions_str->len > 0) { g_string_append (result, versions_str->str); g_string_append (result, " • "); } } size_str = g_format_size (size); g_string_append (result, size_str); return g_string_free (g_steal_pointer (&result), FALSE); } static void support_cb (BzInstalledTile *self, GtkButton *button) { const char *url = NULL; if (self->group == NULL) return; url = bz_entry_group_get_donation_url (self->group); if (url == NULL) return; g_app_info_launch_default_for_uri (url, NULL, NULL); } static void permissions_cb (BzInstalledTile *self) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.permissions", "s", bz_entry_group_get_id (self->group)); } static void install_addons_cb (BzInstalledTile *self) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.addons-group", "s", bz_entry_group_get_id (self->group)); } static void remove_cb (BzInstalledTile *self, GtkButton *button) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.remove-group", "(sb)", bz_entry_group_get_id (self->group), FALSE); } static void bz_installed_tile_class_init (BzInstalledTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_installed_tile_dispose; object_class->get_property = bz_installed_tile_get_property; object_class->set_property = bz_installed_tile_set_property; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LIST_TILE); g_type_ensure (BZ_TYPE_ENTRY_GROUP); g_type_ensure (BZ_TYPE_TRANSACT_ICON); g_type_ensure (BZ_TYPE_TRANSACT_ICON_INFO); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-installed-tile.ui"); gtk_widget_class_bind_template_child (widget_class, BzInstalledTile, title_label); gtk_widget_class_bind_template_child (widget_class, BzInstalledTile, support_button); gtk_widget_class_bind_template_child (widget_class, BzInstalledTile, remove_button); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, logical_and); gtk_widget_class_bind_template_callback (widget_class, logical_or); gtk_widget_class_bind_template_callback (widget_class, format_description); gtk_widget_class_bind_template_callback (widget_class, support_cb); gtk_widget_class_bind_template_callback (widget_class, install_addons_cb); gtk_widget_class_bind_template_callback (widget_class, remove_cb); gtk_widget_class_bind_template_callback (widget_class, permissions_cb); gtk_widget_class_install_action (widget_class, "installed-tile.install-addons", NULL, (GtkWidgetActionActivateFunc) install_addons_cb); gtk_widget_class_install_action (widget_class, "installed-tile.permissions", NULL, (GtkWidgetActionActivateFunc) permissions_cb); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static void bz_installed_tile_init (BzInstalledTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_installed_tile_new (void) { return g_object_new (BZ_TYPE_INSTALLED_TILE, NULL); } void bz_installed_tile_set_group (BzInstalledTile *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_INSTALLED_TILE (self)); g_return_if_fail (group == NULL || BZ_IS_ENTRY_GROUP (group)); g_clear_object (&self->group); if (group != NULL) self->group = g_object_ref (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } BzEntryGroup * bz_installed_tile_get_group (BzInstalledTile *self) { g_return_val_if_fail (BZ_IS_INSTALLED_TILE (self), NULL); return self->group; } ����������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-installed-tile.h���������������������������������������������������0000664�0000000�0000000�00000002373�15240005042�0021626�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-installed-tile.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include "bz-list-tile.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_INSTALLED_TILE (bz_installed_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzInstalledTile, bz_installed_tile, BZ, INSTALLED_TILE, BzListTile) GtkWidget * bz_installed_tile_new (void); void bz_installed_tile_set_group (BzInstalledTile *self, BzEntryGroup *group); BzEntryGroup * bz_installed_tile_get_group (BzInstalledTile *self); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-internal-config.txt������������������������������������������������0000664�0000000�0000000�00000000331�15240005042�0022353�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=internal_config parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-search-bias.h" ensure=BZ_TYPE_SEARCH_BIAS property=search_biases GListModel G_TYPE_LIST_MODEL object �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-lazy-wdgt.c��������������������������������������������������������0000664�0000000�0000000�00000023000�15240005042�0020617�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-lazy-wdgt.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ /** * BzLazyWdgt: * * Initializing a BgeWdgtRenderer can be expensive, so this allows you to have a * placeholder widget until the state changes from a non-NULL value to another * non-NULL value, at which point a proper renderer will be swapped in. */ #include "bz-lazy-wdgt.h" struct _BzLazyWdgt { AdwBin parent_instance; BgeWdgtSpec *wdgt_spec; char *wdgt_resource; char *wdgt_state; GObject *wdgt_reference; gboolean activated; }; G_DEFINE_FINAL_TYPE (BzLazyWdgt, bz_lazy_wdgt, ADW_TYPE_BIN); enum { PROP_0, PROP_WDGT_SPEC, PROP_WDGT_RESOURCE, PROP_WDGT_STATE, PROP_WDGT_REFERENCE, PROP_WDGT_ACTIVATED, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void maybe_activate (BzLazyWdgt *self); static void bz_lazy_wdgt_dispose (GObject *object) { BzLazyWdgt *self = BZ_LAZY_WDGT (object); g_clear_pointer (&self->wdgt_spec, g_object_unref); g_clear_pointer (&self->wdgt_resource, g_free); g_clear_pointer (&self->wdgt_state, g_free); g_clear_pointer (&self->wdgt_reference, g_object_unref); G_OBJECT_CLASS (bz_lazy_wdgt_parent_class)->dispose (object); } static void bz_lazy_wdgt_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzLazyWdgt *self = BZ_LAZY_WDGT (object); switch (prop_id) { case PROP_WDGT_SPEC: g_value_set_object (value, bz_lazy_wdgt_get_wdgt_spec (self)); break; case PROP_WDGT_RESOURCE: g_value_set_string (value, bz_lazy_wdgt_get_wdgt_resource (self)); break; case PROP_WDGT_STATE: g_value_set_string (value, bz_lazy_wdgt_get_wdgt_state (self)); break; case PROP_WDGT_REFERENCE: g_value_set_object (value, bz_lazy_wdgt_get_wdgt_reference (self)); break; case PROP_WDGT_ACTIVATED: g_value_set_boolean (value, bz_lazy_wdgt_get_activated (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_lazy_wdgt_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzLazyWdgt *self = BZ_LAZY_WDGT (object); switch (prop_id) { case PROP_WDGT_SPEC: bz_lazy_wdgt_set_wdgt_spec (self, g_value_get_object (value)); break; case PROP_WDGT_RESOURCE: bz_lazy_wdgt_set_wdgt_resource (self, g_value_get_string (value)); break; case PROP_WDGT_STATE: bz_lazy_wdgt_set_wdgt_state (self, g_value_get_string (value)); break; case PROP_WDGT_REFERENCE: bz_lazy_wdgt_set_wdgt_reference (self, g_value_get_object (value)); break; case PROP_WDGT_ACTIVATED: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_lazy_wdgt_class_init (BzLazyWdgtClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_lazy_wdgt_set_property; object_class->get_property = bz_lazy_wdgt_get_property; object_class->dispose = bz_lazy_wdgt_dispose; props[PROP_WDGT_SPEC] = g_param_spec_object ( "wdgt-spec", NULL, NULL, BGE_TYPE_WDGT_SPEC, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_WDGT_RESOURCE] = g_param_spec_string ( "wdgt-resource", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_WDGT_STATE] = g_param_spec_string ( "wdgt-state", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_WDGT_REFERENCE] = g_param_spec_object ( "wdgt-reference", NULL, NULL, G_TYPE_OBJECT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_WDGT_ACTIVATED] = g_param_spec_boolean ( "activated", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_lazy_wdgt_init (BzLazyWdgt *self) { } BzLazyWdgt * bz_lazy_wdgt_new (void) { return g_object_new (BZ_TYPE_LAZY_WDGT, NULL); } BgeWdgtSpec * bz_lazy_wdgt_get_wdgt_spec (BzLazyWdgt *self) { g_return_val_if_fail (BZ_IS_LAZY_WDGT (self), NULL); return self->wdgt_spec; } const char * bz_lazy_wdgt_get_wdgt_resource (BzLazyWdgt *self) { g_return_val_if_fail (BZ_IS_LAZY_WDGT (self), NULL); return self->wdgt_resource; } const char * bz_lazy_wdgt_get_wdgt_state (BzLazyWdgt *self) { g_return_val_if_fail (BZ_IS_LAZY_WDGT (self), NULL); return self->wdgt_state; } GObject * bz_lazy_wdgt_get_wdgt_reference (BzLazyWdgt *self) { g_return_val_if_fail (BZ_IS_LAZY_WDGT (self), NULL); return self->wdgt_reference; } gboolean bz_lazy_wdgt_get_activated (BzLazyWdgt *self) { g_return_val_if_fail (BZ_IS_LAZY_WDGT (self), FALSE); return self->activated; } void bz_lazy_wdgt_set_wdgt_spec (BzLazyWdgt *self, BgeWdgtSpec *wdgt_spec) { g_return_if_fail (BZ_IS_LAZY_WDGT (self)); g_return_if_fail (wdgt_spec == NULL || BGE_IS_WDGT_SPEC (wdgt_spec)); if (wdgt_spec == self->wdgt_spec) return; g_clear_pointer (&self->wdgt_spec, g_object_unref); if (wdgt_spec != NULL) self->wdgt_spec = g_object_ref (wdgt_spec); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WDGT_SPEC]); } void bz_lazy_wdgt_set_wdgt_resource (BzLazyWdgt *self, const char *wdgt_resource) { g_return_if_fail (BZ_IS_LAZY_WDGT (self)); if (wdgt_resource == self->wdgt_resource || (wdgt_resource != NULL && self->wdgt_resource != NULL && g_strcmp0 (wdgt_resource, self->wdgt_resource) == 0)) return; g_clear_pointer (&self->wdgt_resource, g_free); if (wdgt_resource != NULL) self->wdgt_resource = g_strdup (wdgt_resource); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WDGT_RESOURCE]); } void bz_lazy_wdgt_set_wdgt_state (BzLazyWdgt *self, const char *wdgt_state) { g_return_if_fail (BZ_IS_LAZY_WDGT (self)); if (wdgt_state == self->wdgt_state || (wdgt_state != NULL && self->wdgt_state != NULL && g_strcmp0 (wdgt_state, self->wdgt_state) == 0)) return; g_clear_pointer (&self->wdgt_state, g_free); if (wdgt_state != NULL) { self->wdgt_state = g_strdup (wdgt_state); maybe_activate (self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WDGT_STATE]); } void bz_lazy_wdgt_set_wdgt_reference (BzLazyWdgt *self, GObject *wdgt_reference) { g_return_if_fail (BZ_IS_LAZY_WDGT (self)); g_return_if_fail (wdgt_reference == NULL || G_IS_OBJECT (wdgt_reference)); if (wdgt_reference == self->wdgt_reference) return; g_clear_pointer (&self->wdgt_reference, g_object_unref); if (wdgt_reference != NULL) self->wdgt_reference = g_object_ref (wdgt_reference); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WDGT_REFERENCE]); } void bz_lazy_wdgt_set_wdgt_resource_take (BzLazyWdgt *self, char *wdgt_resource) { g_return_if_fail (BZ_IS_LAZY_WDGT (self)); if (wdgt_resource != NULL && self->wdgt_resource != NULL && g_strcmp0 (wdgt_resource, self->wdgt_resource) == 0) { g_free (wdgt_resource); return; } g_clear_pointer (&self->wdgt_resource, g_free); if (wdgt_resource != NULL) self->wdgt_resource = wdgt_resource; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WDGT_RESOURCE]); } void bz_lazy_wdgt_set_wdgt_state_take (BzLazyWdgt *self, char *wdgt_state) { g_return_if_fail (BZ_IS_LAZY_WDGT (self)); if (wdgt_state != NULL && self->wdgt_state != NULL && g_strcmp0 (wdgt_state, self->wdgt_state) == 0) { g_free (wdgt_state); return; } g_clear_pointer (&self->wdgt_state, g_free); if (wdgt_state != NULL) { self->wdgt_state = wdgt_state; maybe_activate (self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WDGT_STATE]); } static void maybe_activate (BzLazyWdgt *self) { BgeWdgtRenderer *renderer = NULL; if (self->activated) return; renderer = bge_wdgt_renderer_new (); g_object_bind_property (self, "wdgt-spec", renderer, "spec", G_BINDING_SYNC_CREATE); g_object_bind_property (self, "wdgt-resource", renderer, "resource", G_BINDING_SYNC_CREATE); g_object_bind_property (self, "wdgt-state", renderer, "state", G_BINDING_SYNC_CREATE); g_object_bind_property (self, "wdgt-reference", renderer, "reference", G_BINDING_SYNC_CREATE); adw_bin_set_child (ADW_BIN (self), GTK_WIDGET (renderer)); self->activated = TRUE; } /* End of bz-lazy-wdgt.c */ bazaar-org-bazaar-48f93f4/src/bz-lazy-wdgt.h��������������������������������������������������������0000664�0000000�0000000�00000004361�15240005042�0020635�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-lazy-wdgt.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include <bge.h> G_BEGIN_DECLS #define BZ_TYPE_LAZY_WDGT (bz_lazy_wdgt_get_type ()) G_DECLARE_FINAL_TYPE (BzLazyWdgt, bz_lazy_wdgt, BZ, LAZY_WDGT, AdwBin) BzLazyWdgt * bz_lazy_wdgt_new (void); BgeWdgtSpec * bz_lazy_wdgt_get_wdgt_spec (BzLazyWdgt *self); const char * bz_lazy_wdgt_get_wdgt_resource (BzLazyWdgt *self); const char * bz_lazy_wdgt_get_wdgt_state (BzLazyWdgt *self); GObject * bz_lazy_wdgt_get_wdgt_reference (BzLazyWdgt *self); gboolean bz_lazy_wdgt_get_activated (BzLazyWdgt *self); void bz_lazy_wdgt_set_wdgt_spec (BzLazyWdgt *self, BgeWdgtSpec *wdgt_spec); void bz_lazy_wdgt_set_wdgt_resource (BzLazyWdgt *self, const char *wdgt_resource); void bz_lazy_wdgt_set_wdgt_state (BzLazyWdgt *self, const char *wdgt_state); void bz_lazy_wdgt_set_wdgt_reference (BzLazyWdgt *self, GObject *wdgt_reference); void bz_lazy_wdgt_set_wdgt_resource_take (BzLazyWdgt *self, char *wdgt_resource); #define bz_lazy_wdgt_set_wdgt_resource_take_printf(self, ...) bz_lazy_wdgt_set_wdgt_resource_take (self, g_strdup_printf (__VA_ARGS__)) void bz_lazy_wdgt_set_wdgt_state_take (BzLazyWdgt *self, char *wdgt_state); #define bz_lazy_wdgt_set_wdgt_state_take_printf(self, ...) bz_lazy_wdgt_set_wdgt_state_take (self, g_strdup_printf (__VA_ARGS__)) G_END_DECLS /* End of bz-lazy-wdgt.h */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-library-page.blp���������������������������������������������������0000664�0000000�0000000�00000022164�15240005042�0021620�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzLibraryPage: Adw.Bin { child: Box { orientation: vertical; Adw.Clamp search_box_clamp { margin-start: 12; margin-end: 12; margin-top: 10; margin-bottom: 10; maximum-size: 375; visible: bind template.has-apps; child: $BzSearchBar search_bar { placeholder: _("Search installed apps"); search-activated => $search_text_activate(template); search-changed => $search_text_changed(template); }; } Adw.ViewStack stack { enable-transitions: true; transition-duration: 400; Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: "library-symbolic"; title: _("No Apps Found"); description: ""; }; } Adw.ViewStackPage { name: "no-results"; child: Adw.StatusPage { icon-name: "library-symbolic"; description: bind $no_results_found_subtitle(search_bar.text) as <string>; child: Button { styles [ "pill", ] halign: center; label: _("Search Store Instead"); clicked => $global_search_cb(template); }; }; } Adw.ViewStackPage { name: "content"; child: ScrolledWindow scroll{ hscrollbar-policy: never; child: Adw.Clamp { vexpand: true; maximum-size: 650; child: Box margin_box { orientation: vertical; margin-start: 9; margin-end: 9; margin-bottom: 30; Box non_search_content { orientation: vertical; visible: bind $is_empty_string(search_bar.text) as <bool>; Revealer { reveal-child: bind $invert_boolean($is_empty(template.state as <$BzStateInfo>.available-updates) as <bool>) as <bool>; transition-type: slide_down; child: Box { orientation: vertical; spacing: 8; margin-top: 15; Label { label: _("Pending Updates"); xalign: 0; margin-start: 12; margin-top: 15; styles [ "heading", "h4", ] } $BzUpdatesCard { state: bind template.state; update => $updates_card_update_cb(template); } }; } Revealer { reveal-child: bind $invert_boolean($is_zero(template.state as <$BzStateInfo>.transaction-manager as <$BzTransactionManager>.install-trackers as <FilterListModel>.n-items) as <bool>) as <bool>; transition-type: slide_down; child: Box { margin-top: 15; orientation: vertical; Label install_label { label: _("Downloads"); xalign: 0; margin-start: 12; styles [ "heading", "h4", ] } ListView install_list_view { styles [ "navigation-sidebar", "installed-list-view", ] model: NoSelection { model: bind template.state as <$BzStateInfo>.transaction-manager as <$BzTransactionManager>.install-trackers; }; factory: BuilderListItemFactory { template ListItem { activatable: false; child: $BzTransactionTile { tracker: bind template.item; activated => $tile_activated_cb(); }; } }; } }; } Revealer { reveal-child: bind $invert_boolean($is_zero(template.state as <$BzStateInfo>.transaction-manager as <$BzTransactionManager>.removal-trackers as <FilterListModel>.n-items) as <bool>) as <bool>; transition-type: slide_down; child: Box { margin-top: 15; orientation: vertical; Label removal_label { label: _("Recently Uninstalled"); xalign: 0; margin-start: 12; styles [ "heading", "h4", ] } ListView removal_list_view { styles [ "navigation-sidebar", "installed-list-view", ] model: NoSelection { model: bind template.state as <$BzStateInfo>.transaction-manager as <$BzTransactionManager>.removal-trackers; }; factory: BuilderListItemFactory { template ListItem { activatable: false; child: $BzTransactionTile { tracker: bind template.item; activated => $tile_activated_cb(); }; } }; } }; } Revealer { reveal-child: bind template.state as <$BzStateInfo>.transaction-manager as <$BzTransactionManager>.has-transactions; margin-bottom: 15; transition-type: slide_down; child: ListBox { margin-bottom: 16; margin-top: 4; margin-start: 4; margin-end: 4; selection-mode: none; styles [ "boxed-list", ] Adw.ButtonRow { title: _("Clear Finished Tasks"); activated => $clear_tasks_cb(template); styles [ "error", ] } }; } Box { margin-start: 12; margin-end: 4; Label { label: bind $format_install_count(filter_model.n-items) as <string>; xalign: 0; visible: bind template.has-apps; hexpand: true; margin-top: 4; styles [ "heading", "h4", ] } MenuButton { icon-name: "sliders-horizontal-symbolic"; popover: sort_popover; tooltip-text: _("Sort Options"); styles ["flat"] } } } ListView list_view { styles [ "navigation-sidebar", "installed-list-view", "installed-section" ] visible: bind template.has-apps; model: NoSelection { model: FilterListModel filter_model { filter: CustomFilter filter {}; model: SortListModel sort_model { sorter: CustomSorter sorter {}; model: bind template.model; }; notify::n-items => $n_filtered_items_changed(template); }; }; factory: BuilderListItemFactory { template ListItem { activatable: false; selectable: false; focusable: false; child: $BzInstalledTile { group: bind template.item as <$BzEntryGroup>; activated => $tile_activated_cb(); }; } }; } }; }; }; } } }; } Popover sort_popover { child: Box { orientation: vertical; spacing: 6; margin-top: 8; margin-bottom: 8; margin-start: 8; margin-end: 16; Label { label: _("Sort By"); wrap: true; wrap-mode: word_char; xalign: 0; margin-start: 28; styles [ "heading", "h4", "dimmed" ] } CheckButton sort_name { label: _("Name"); active: true; toggled => $sort_changed_cb(template); } CheckButton sort_size { label: _("Size"); group: sort_name; toggled => $sort_changed_cb(template); } }; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-library-page.c�����������������������������������������������������0000664�0000000�0000000�00000045735�15240005042�0021276�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-library-page.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-entry-group.h" #include "bz-installed-tile.h" #include "bz-library-page.h" #include "bz-search-bar.h" #include "bz-section-view.h" #include "template-callbacks.h" #include "bz-transaction-tile.h" #include "bz-updates-card.h" #include "util.h" struct _BzLibraryPage { AdwBin parent_instance; GListModel *model; BzTransactionManager *transactions; BzStateInfo *state; /* Template widgets */ AdwViewStack *stack; BzSearchBar *search_bar; GtkScrolledWindow *scroll; GtkFilterListModel *filter_model; GtkCustomFilter *filter; GtkListView *list_view; GtkSortListModel *sort_model; GtkCustomSorter *sorter; GtkCheckButton *sort_name; GtkCheckButton *sort_size; }; G_DEFINE_FINAL_TYPE (BzLibraryPage, bz_library_page, ADW_TYPE_BIN) enum { PROP_0, PROP_MODEL, PROP_TRANSACTIONS, PROP_STATE, PROP_HAS_APPS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_UPDATE, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static void items_changed (BzLibraryPage *self, guint position, guint removed, guint added, GListModel *model); static void has_transactions_changed (BzLibraryPage *self, GParamSpec *pspec, BzTransactionManager *transactions); static void set_page (BzLibraryPage *self); static gboolean set_page_idle_cb (BzLibraryPage *self); static gboolean filter (BzEntryGroup *group, BzLibraryPage *self); static void bz_library_page_dispose (GObject *object) { BzLibraryPage *self = BZ_LIBRARY_PAGE (object); if (self->model != NULL) g_signal_handlers_disconnect_by_func (self->model, items_changed, self); if (self->transactions != NULL) g_signal_handlers_disconnect_by_func (self->transactions, has_transactions_changed, self); g_clear_object (&self->model); g_clear_object (&self->transactions); g_clear_object (&self->state); G_OBJECT_CLASS (bz_library_page_parent_class)->dispose (object); } static void bz_library_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzLibraryPage *self = BZ_LIBRARY_PAGE (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, bz_library_page_get_model (self)); break; case PROP_TRANSACTIONS: g_value_set_object (value, bz_library_page_get_transactions (self)); break; case PROP_STATE: g_value_set_object (value, bz_library_page_get_state (self)); break; case PROP_HAS_APPS: { guint n_apps = 0; if (self->model != NULL) n_apps = g_list_model_get_n_items (self->model); g_value_set_boolean (value, n_apps > 0); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_library_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzLibraryPage *self = BZ_LIBRARY_PAGE (object); switch (prop_id) { case PROP_MODEL: bz_library_page_set_model (self, g_value_get_object (value)); break; case PROP_TRANSACTIONS: bz_library_page_set_transactions (self, g_value_get_object (value)); break; case PROP_STATE: bz_library_page_set_state (self, g_value_get_object (value)); break; case PROP_HAS_APPS: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static char * no_results_found_subtitle (gpointer object, const char *search_text) { if (search_text == NULL || *search_text == '\0') return g_strdup (""); return g_strdup_printf (_ ("No matches found for \"%s\" in the list of installed apps"), search_text); } static char * format_update_count (gpointer object, GListModel *updates) { guint n_updates = 0; if (updates == NULL) return g_strdup (""); n_updates = g_list_model_get_n_items (updates); return g_strdup_printf (ngettext ("%u Available Update", "%u Available Updates", n_updates), n_updates); } static char * format_install_count (gpointer object, gint n_items) { return g_strdup_printf (ngettext ("%u Installed App", "%u Installed Apps", n_items), n_items); } static void tile_activated_cb (BzListTile *tile) { BzLibraryPage *self = NULL; BzEntryGroup *group = NULL; g_assert (BZ_IS_LIST_TILE (tile)); self = (BzLibraryPage *) gtk_widget_get_ancestor (GTK_WIDGET (tile), BZ_TYPE_LIBRARY_PAGE); if (self == NULL) return; if (BZ_IS_INSTALLED_TILE (tile)) { group = bz_installed_tile_get_group (BZ_INSTALLED_TILE (tile)); } else if (BZ_IS_TRANSACTION_TILE (tile)) { BzTransactionEntryTracker *tracker = NULL; BzEntry *entry = NULL; tracker = bz_transaction_tile_get_tracker (BZ_TRANSACTION_TILE (tile)); if (tracker == NULL) return; entry = bz_transaction_entry_tracker_get_entry (tracker); group = bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (self->state), gtk_string_object_new (bz_entry_get_id (entry))); } else return; if (group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.show-group", "s", bz_entry_group_get_id (group)); } static void search_text_changed (BzLibraryPage *self, BzSearchBar *search_bar) { gtk_filter_changed (GTK_FILTER (self->filter), GTK_FILTER_CHANGE_DIFFERENT); set_page (self); } static void search_text_activate (BzLibraryPage *self, BzSearchBar *search_bar) { const char *text = NULL; text = gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); if (text != NULL && *text != '\0') gtk_widget_activate_action (GTK_WIDGET (self), "app.search", "s", text); gtk_editable_set_text (GTK_EDITABLE (self->search_bar), ""); } static void reset_search_cb (BzLibraryPage *self, GtkButton *button) { gtk_editable_set_text (GTK_EDITABLE (self->search_bar), ""); } static void n_filtered_items_changed (BzLibraryPage *self, GParamSpec *pspec, GtkFilterListModel *model) { set_page (self); } static void clear_tasks_cb (BzLibraryPage *self) { BzTransactionManager *manager = NULL; if (self->state == NULL) return; manager = bz_state_info_get_transaction_manager (self->state); if (manager != NULL) bz_transaction_manager_clear_finished (manager); } static void updates_card_update_cb (BzLibraryPage *self, GListModel *entries, BzUpdatesCard *card) { g_signal_emit (self, signals[SIGNAL_UPDATE], 0, entries); } static void global_search_cb (BzLibraryPage *self, GtkButton *button) { const char *text = NULL; text = gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); if (text != NULL && *text != '\0') gtk_widget_activate_action (GTK_WIDGET (self), "app.search", "s", text); gtk_editable_set_text (GTK_EDITABLE (self->search_bar), ""); } static int sort_func (BzEntryGroup *a, BzEntryGroup *b, BzLibraryPage *self) { if (gtk_check_button_get_active (self->sort_size)) { guint64 size_a = 0; guint64 size_b = 0; size_a = bz_entry_group_get_installed_size (a); size_b = bz_entry_group_get_installed_size (b); return size_a > size_b ? -1 : size_a < size_b ? 1 : 0; } return g_utf8_collate (bz_entry_group_get_title (a), bz_entry_group_get_title (b)); } static void sort_changed_cb (BzLibraryPage *self, GtkCheckButton *button) { gtk_sorter_changed (GTK_SORTER (self->sorter), GTK_SORTER_CHANGE_DIFFERENT); } static void bz_library_page_class_init (BzLibraryPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_library_page_dispose; object_class->get_property = bz_library_page_get_property; object_class->set_property = bz_library_page_set_property; props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TRANSACTIONS] = g_param_spec_object ( "transactions", NULL, NULL, BZ_TYPE_TRANSACTION_MANAGER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_HAS_APPS] = g_param_spec_boolean ( "has-apps", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_UPDATE] = g_signal_new ( "update", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_LIST_MODEL); g_signal_set_va_marshaller ( signals[SIGNAL_UPDATE], G_TYPE_FROM_CLASS (klass), g_cclosure_marshal_VOID__OBJECTv); g_type_ensure (BZ_TYPE_SECTION_VIEW); g_type_ensure (BZ_TYPE_ENTRY_GROUP); g_type_ensure (BZ_TYPE_INSTALLED_TILE); g_type_ensure (BZ_TYPE_TRANSACTION_TILE); g_type_ensure (BZ_TYPE_UPDATES_CARD); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-library-page.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, stack); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, search_bar); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, scroll); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, filter_model); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, filter); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, list_view); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, sort_model); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, sorter); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, sort_name); gtk_widget_class_bind_template_child (widget_class, BzLibraryPage, sort_size); gtk_widget_class_bind_template_callback (widget_class, no_results_found_subtitle); gtk_widget_class_bind_template_callback (widget_class, format_update_count); gtk_widget_class_bind_template_callback (widget_class, format_install_count); gtk_widget_class_bind_template_callback (widget_class, tile_activated_cb); gtk_widget_class_bind_template_callback (widget_class, reset_search_cb); gtk_widget_class_bind_template_callback (widget_class, search_text_changed); gtk_widget_class_bind_template_callback (widget_class, search_text_activate); gtk_widget_class_bind_template_callback (widget_class, n_filtered_items_changed); gtk_widget_class_bind_template_callback (widget_class, clear_tasks_cb); gtk_widget_class_bind_template_callback (widget_class, updates_card_update_cb); gtk_widget_class_bind_template_callback (widget_class, global_search_cb); gtk_widget_class_bind_template_callback (widget_class, sort_changed_cb); } static void bz_library_page_init (BzLibraryPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); gtk_custom_filter_set_filter_func ( self->filter, (GtkCustomFilterFunc) filter, self, NULL); gtk_custom_sorter_set_sort_func ( self->sorter, (GCompareDataFunc) sort_func, self, NULL); } GtkWidget * bz_library_page_new (void) { return g_object_new (BZ_TYPE_LIBRARY_PAGE, NULL); } void bz_library_page_set_model (BzLibraryPage *self, GListModel *model) { g_return_if_fail (BZ_IS_LIBRARY_PAGE (self)); g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model)); if (self->model != NULL) g_signal_handlers_disconnect_by_func (self->model, items_changed, self); g_clear_object (&self->model); if (model != NULL) { self->model = g_object_ref (model); g_signal_connect_swapped (model, "items-changed", G_CALLBACK (items_changed), self); } g_idle_add_full ( G_PRIORITY_DEFAULT, (GSourceFunc) set_page_idle_cb, g_object_ref (self), g_object_unref); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_APPS]); } GListModel * bz_library_page_get_model (BzLibraryPage *self) { g_return_val_if_fail (BZ_IS_LIBRARY_PAGE (self), NULL); return self->model; } void bz_library_page_set_transactions (BzLibraryPage *self, BzTransactionManager *transactions) { g_return_if_fail (BZ_IS_LIBRARY_PAGE (self)); g_return_if_fail (transactions == NULL || BZ_IS_TRANSACTION_MANAGER (transactions)); if (self->transactions != NULL) g_signal_handlers_disconnect_by_func (self->transactions, has_transactions_changed, self); g_clear_object (&self->transactions); if (transactions != NULL) { self->transactions = g_object_ref (transactions); g_signal_connect_swapped ( transactions, "notify::has-transactions", G_CALLBACK (has_transactions_changed), self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TRANSACTIONS]); } BzTransactionManager * bz_library_page_get_transactions (BzLibraryPage *self) { g_return_val_if_fail (BZ_IS_LIBRARY_PAGE (self), NULL); return self->transactions; } void bz_library_page_set_state (BzLibraryPage *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_LIBRARY_PAGE (self)); g_return_if_fail (state == NULL || BZ_IS_STATE_INFO (state)); g_clear_object (&self->state); if (state != NULL) self->state = g_object_ref (state); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); } BzStateInfo * bz_library_page_get_state (BzLibraryPage *self) { g_return_val_if_fail (BZ_IS_LIBRARY_PAGE (self), NULL); return self->state; } gboolean bz_library_page_ensure_active (BzLibraryPage *self, const char *initial) { const char *text = NULL; g_return_val_if_fail (BZ_IS_LIBRARY_PAGE (self), FALSE); text = gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); if (text != NULL && *text != '\0' && gtk_widget_has_focus (GTK_WIDGET (self->search_bar))) return FALSE; gtk_widget_grab_focus (GTK_WIDGET (self->search_bar)); gtk_editable_set_text (GTK_EDITABLE (self->search_bar), initial); if (initial != NULL) gtk_editable_set_position (GTK_EDITABLE (self->search_bar), g_utf8_strlen (initial, -1)); return TRUE; } void bz_library_page_reset_search (BzLibraryPage *self) { GtkAdjustment *vadjustment = NULL; g_return_if_fail (BZ_IS_LIBRARY_PAGE (self)); vadjustment = gtk_scrolled_window_get_vadjustment (self->scroll); gtk_adjustment_set_value (vadjustment, 0.0); gtk_editable_set_text (GTK_EDITABLE (self->search_bar), ""); } static void items_changed (BzLibraryPage *self, guint position, guint removed, guint added, GListModel *model) { set_page (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_APPS]); } static void has_transactions_changed (BzLibraryPage *self, GParamSpec *pspec, BzTransactionManager *transactions) { set_page (self); } static void set_page (BzLibraryPage *self) { guint n_apps = 0; guint n_filtered = 0; gboolean has_transactions = FALSE; const char *message = NULL; const char *search_text = NULL; search_text = gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); if (self->model != NULL) { n_apps = g_list_model_get_n_items (self->model); n_filtered = g_list_model_get_n_items (G_LIST_MODEL (self->filter_model)); } if (self->state != NULL) { BzTransactionManager *manager = NULL; manager = bz_state_info_get_transaction_manager (self->state); has_transactions = bz_transaction_manager_get_has_transactions (manager); } if (n_apps == 0 && !has_transactions) { gtk_editable_set_text (GTK_EDITABLE (self->search_bar), ""); adw_view_stack_set_visible_child_name (self->stack, "empty"); } else if (n_apps > 0 && n_filtered == 0) adw_view_stack_set_visible_child_name (self->stack, "no-results"); else adw_view_stack_set_visible_child_name (self->stack, "content"); if (search_text && *search_text) { message = n_filtered == 0 ? _ ("No applications found") : g_strdup_printf (ngettext ("One application found", "%u applications found", n_filtered), n_filtered); gtk_accessible_announce (GTK_ACCESSIBLE (self), message, GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_HIGH); } } static gboolean set_page_idle_cb (BzLibraryPage *self) { set_page (self); return G_SOURCE_REMOVE; } static gboolean filter (BzEntryGroup *group, BzLibraryPage *self) { const char *id = NULL; const char *title = NULL; const char *text = NULL; if (bz_entry_group_is_addon (group)) return FALSE; id = bz_entry_group_get_id (group); title = bz_entry_group_get_title (group); text = gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); if (text != NULL && *text != '\0') return strcasestr (id, text) != NULL || strcasestr (title, text) != NULL; else return TRUE; } �����������������������������������bazaar-org-bazaar-48f93f4/src/bz-library-page.h�����������������������������������������������������0000664�0000000�0000000�00000003341�15240005042�0021266�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-library-page.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_LIBRARY_PAGE (bz_library_page_get_type ()) G_DECLARE_FINAL_TYPE (BzLibraryPage, bz_library_page, BZ, LIBRARY_PAGE, AdwBin) GtkWidget * bz_library_page_new (void); void bz_library_page_set_model (BzLibraryPage *self, GListModel *model); GListModel * bz_library_page_get_model (BzLibraryPage *self); void bz_library_page_set_transactions (BzLibraryPage *self, BzTransactionManager *transactions); BzTransactionManager * bz_library_page_get_transactions (BzLibraryPage *self); void bz_library_page_set_state (BzLibraryPage *self, BzStateInfo *state); BzStateInfo * bz_library_page_get_state (BzLibraryPage *self); gboolean bz_library_page_ensure_active (BzLibraryPage *self, const char *initial); void bz_library_page_reset_search (BzLibraryPage *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-license-dialog.blp�������������������������������������������������0000664�0000000�0000000�00000006214�15240005042�0022117�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzLicenseDialog: Adw.Bin { child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: Adw.Clamp { maximum-size: 600; child: Box { orientation: vertical; margin-top: 6; margin-bottom: 18; margin-start: 18; margin-end: 18; Box { orientation: vertical; margin-bottom: 16; valign: center; vexpand: true; $BzLozenge { visible: bind template.entry as <$BzEntry>.is-floss as <bool>; title: bind $get_label_cb(template.entry as <$BzEntry>) as <string>; icon-names: [ "heart-outline-thick-symbolic", "community-symbolic", "thumbs-up-outline-symbolic", ]; importance: unimportant; } $BzLozenge { visible: bind $invert_boolean(template.entry as <$BzEntry>.is-floss as <bool>) as <bool>; title: bind $get_label_cb(template.entry as <$BzEntry>) as <string>; icon-names: [ "hand-openyay-symbolic", "proprietary-code-symbolic", "license-symbolic", ]; importance: information; } } Box { orientation: vertical; spacing: 6; margin-bottom: 12; Label { label: bind $get_license_info(template.entry as <$BzEntry>) as <string>; valign: start; margin-bottom: 18; margin-start: 18; margin-end: 18; use-markup: true; xalign: 0.50; wrap: true; wrap-mode: word_char; justify: center; } Button { styles [ "pill", ] visible: bind template.entry as <$BzEntry>.is-floss as <bool>; clicked => $contribute_cb(template); tooltip-text: bind $get_involved_tooltip(template.entry) as <string>; halign: center; child: Box { orientation: horizontal; spacing: 10; Label { label: _("Get Involved"); wrap: true; wrap-mode: word_char; justify: right; } Image { icon-name: "external-link-symbolic"; } }; } Button { styles [ "pill", ] visible: bind $should_show_eula(template.entry as <$BzEntry>) as <bool>; clicked => $eula_cb(template); tooltip-text: bind $eula_tooltip(template.entry) as <string>; halign: center; child: Box { orientation: horizontal; spacing: 10; Label { label: _("Learn More"); wrap: true; wrap-mode: word_char; justify: right; } Image { icon-name: "external-link-symbolic"; } }; } } }; }; }; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-license-dialog.c���������������������������������������������������0000664�0000000�0000000�00000023633�15240005042�0021570�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-license-dialog.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <adwaita.h> #include <glib/gi18n.h> #include "bz-entry.h" #include "bz-license-dialog.h" #include "bz-lozenge.h" #include "spdx.h" #include "bz-url.h" struct _BzLicenseDialog { AdwBin parent_instance; BzEntry *entry; }; G_DEFINE_FINAL_TYPE (BzLicenseDialog, bz_license_dialog, ADW_TYPE_BIN) enum { PROP_0, PROP_ENTRY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { NULL }; static void bz_license_dialog_dispose (GObject *object) { BzLicenseDialog *self = NULL; self = BZ_LICENSE_DIALOG (object); g_clear_object (&self->entry); G_OBJECT_CLASS (bz_license_dialog_parent_class)->dispose (object); } static void bz_license_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzLicenseDialog *self = NULL; self = BZ_LICENSE_DIALOG (object); switch (prop_id) { case PROP_ENTRY: g_value_set_object (value, self->entry); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_license_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzLicenseDialog *self = NULL; self = BZ_LICENSE_DIALOG (object); switch (prop_id) { case PROP_ENTRY: g_clear_object (&self->entry); self->entry = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static char * get_label_cb (gpointer object, BzEntry *entry) { g_autofree char *license = NULL; gboolean is_floss = FALSE; if (entry == NULL) return g_strdup (""); g_object_get ( entry, "is-floss", &is_floss, "project-license", &license, NULL); if (license == NULL || *license == '\0') return g_strdup (_ ("Unknown License")); if (is_floss) return g_strdup (_ ("Community Built")); if (bz_spdx_is_proprietary (license)) return g_strdup (_ ("Proprietary")); return g_strdup (_ ("Special License")); } static char * get_involved_tooltip (gpointer object, BzEntry *entry) { g_autoptr (GListModel) share_urls = NULL; g_autoptr (BzUrl) first_url = NULL; const char *url = NULL; if (entry == NULL) return NULL; g_object_get (entry, "share-urls", &share_urls, NULL); if (share_urls == NULL || g_list_model_get_n_items (share_urls) < 1) return NULL; first_url = g_list_model_get_item (share_urls, 1); url = bz_url_get_url (first_url); if (url != NULL && *url != '\0') return g_strdup (url); return NULL; } static char * format_license_link (const char *license) { g_autofree char *license_name = NULL; g_autofree char *license_url = NULL; if (!bz_spdx_is_valid (license)) return g_strdup (license); license_name = bz_spdx_get_name (license); if (license_name == NULL || *license_name == '\0') { g_clear_pointer (&license_name, g_free); license_name = g_strdup (license); } license_url = bz_spdx_get_url (license); return g_strdup_printf ("<a href=\"%s\">%s</a>", license_url, license_name); } static char * get_license_info (gpointer object, BzEntry *entry) { g_autofree char *license = NULL; gboolean is_floss = FALSE; g_autofree char *link = NULL; if (entry == NULL) return g_strdup (""); g_object_get ( entry, "is-floss", &is_floss, "project-license", &license, NULL); if (license == NULL || *license == '\0') { if (is_floss) return g_strdup (_ ("This app is developed in the open by an international community.\n\n" "You can participate and help make it even better.")); else return g_strdup (_ ("The license of this app is not known")); } if (is_floss) { link = format_license_link (license); return g_strdup_printf (_ ("This app is developed in the open by an international community, " "and released under the %s license.\n\n" "You can participate and help make it even better."), link); } if (bz_spdx_is_proprietary (license)) { return g_strdup (_ ("This app is not developed in the open, so only its developers know how it works. " "It may be insecure in ways that are hard to detect, and it may change without oversight.\n\n" "You may or may not be able to contribute to this app.")); } link = format_license_link (license); return g_strdup_printf (_ ("This app is developed under the special license %s.\n\n" "You may or may not be able to contribute to this app."), link); } static void contribute_cb (BzLicenseDialog *self) { g_autoptr (GListModel) share_urls = NULL; g_autoptr (BzUrl) first_url = NULL; const char *url = NULL; g_object_get (self->entry, "share-urls", &share_urls, NULL); if (share_urls == NULL || g_list_model_get_n_items (share_urls) < 1) return; first_url = g_list_model_get_item (share_urls, 1); url = bz_url_get_url (first_url); if (url != NULL && *url != '\0') g_app_info_launch_default_for_uri (url, NULL, NULL); } static char * get_eula_url (BzEntry *entry) { g_autofree char *license = NULL; const char *url = NULL; if (entry == NULL) return NULL; g_object_get (entry, "project-license", &license, NULL); if (license == NULL || !g_str_has_prefix (license, "LicenseRef-proprietary=")) return NULL; url = license + strlen ("LicenseRef-proprietary="); return (*url != '\0') ? g_strdup (url) : NULL; } static gboolean should_show_eula (gpointer object, BzEntry *entry) { g_autofree char *url = get_eula_url (entry); return url != NULL; } static char * eula_tooltip (gpointer object, BzEntry *entry) { return get_eula_url (entry); } static void eula_cb (BzLicenseDialog *self) { g_autofree char *url = get_eula_url (self->entry); if (url != NULL) g_app_info_launch_default_for_uri (url, NULL, NULL); } static void bz_license_dialog_class_init (BzLicenseDialogClass *klass) { GObjectClass *object_class = NULL; GtkWidgetClass *widget_class = NULL; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_license_dialog_dispose; object_class->get_property = bz_license_dialog_get_property; object_class->set_property = bz_license_dialog_set_property; props[PROP_ENTRY] = g_param_spec_object ( "entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LOZENGE); gtk_widget_class_set_template_from_resource ( widget_class, "/io/github/kolunmi/Bazaar/bz-license-dialog.ui"); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, get_label_cb); gtk_widget_class_bind_template_callback (widget_class, get_license_info); gtk_widget_class_bind_template_callback (widget_class, get_involved_tooltip); gtk_widget_class_bind_template_callback (widget_class, should_show_eula); gtk_widget_class_bind_template_callback (widget_class, eula_tooltip); gtk_widget_class_bind_template_callback (widget_class, contribute_cb); gtk_widget_class_bind_template_callback (widget_class, eula_cb); } static void bz_license_dialog_init (BzLicenseDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } AdwDialog * bz_license_dialog_new (BzEntry *entry) { BzLicenseDialog *widget = NULL; AdwDialog *dialog = NULL; g_autofree char *description = NULL; widget = g_object_new (BZ_TYPE_LICENSE_DIALOG, "entry", entry, NULL); dialog = adw_dialog_new (); adw_dialog_set_content_width (dialog, 425); adw_dialog_set_title (dialog, _ ("License")); adw_dialog_set_child (dialog, GTK_WIDGET (widget)); description = get_label_cb (NULL, entry); gtk_accessible_update_property (GTK_ACCESSIBLE (dialog), GTK_ACCESSIBLE_PROPERTY_DESCRIPTION, description, -1); return dialog; } AdwNavigationPage * bz_license_page_new (BzEntry *entry) { BzLicenseDialog *widget = NULL; AdwNavigationPage *page = NULL; g_autofree char *description = NULL; widget = g_object_new (BZ_TYPE_LICENSE_DIALOG, "entry", entry, NULL); page = adw_navigation_page_new (GTK_WIDGET (widget), _ ("License")); adw_navigation_page_set_tag (page, "license"); description = get_label_cb (NULL, entry); gtk_accessible_update_property (GTK_ACCESSIBLE (page), GTK_ACCESSIBLE_PROPERTY_DESCRIPTION, description, -1); return page; } �����������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-license-dialog.h���������������������������������������������������0000664�0000000�0000000�00000002130�15240005042�0021562�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-license-dialog.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_LICENSE_DIALOG (bz_license_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzLicenseDialog, bz_license_dialog, BZ, LICENSE_DIALOG, AdwBin) AdwDialog * bz_license_dialog_new (BzEntry *entry); AdwNavigationPage * bz_license_page_new (BzEntry *entry); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-linear-function.txt������������������������������������������������0000664�0000000�0000000�00000000256�15240005042�0022377�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=linear_function parent-prefix=g parent-name=object author=AUTOGEN property=slope double G_TYPE_DOUBLE double property=y_intercept double G_TYPE_DOUBLE double ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-list-tile.c��������������������������������������������������������0000664�0000000�0000000�00000014716�15240005042�0020621�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-list-tile.c * * Copyright 2025 Hari Rana <theevilskeleton@riseup.net> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <http://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-list-tile.h" typedef struct { GtkWidget *child; } BzListTilePrivate; G_DEFINE_TYPE_WITH_PRIVATE (BzListTile, bz_list_tile, GTK_TYPE_WIDGET) enum { PROP_0, PROP_CHILD, LAST_PROP }; static GParamSpec *props[LAST_PROP]; enum { ACTIVATED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0, }; static void on_gesture_click_released (BzListTile *self, gint n_press, gdouble x, gdouble y, GtkGestureClick *gesture); static void bz_list_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzListTile *self = BZ_LIST_TILE (object); switch (prop_id) { case PROP_CHILD: g_value_set_object (value, bz_list_tile_get_child (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_list_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzListTile *self = BZ_LIST_TILE (object); switch (prop_id) { case PROP_CHILD: bz_list_tile_set_child (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_list_tile_dispose (GObject *object) { BzListTile *self = BZ_LIST_TILE (object); BzListTilePrivate *priv = bz_list_tile_get_instance_private (self); g_clear_pointer (&priv->child, gtk_widget_unparent); G_OBJECT_CLASS (bz_list_tile_parent_class)->dispose (object); } static void bz_list_tile_class_init (BzListTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->get_property = bz_list_tile_get_property; object_class->set_property = bz_list_tile_set_property; object_class->dispose = bz_list_tile_dispose; /** * BzListTile:child: * * The child widget. */ props[PROP_CHILD] = g_param_spec_object ("child", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); /** * BzListTile::activated: * * This signal is emitted after the tile has been activated. */ signals[ACTIVATED] = g_signal_new ("activated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); { g_autoptr (GtkShortcutAction) activate_action = NULL; const guint activate_keyvals[] = { GDK_KEY_space, GDK_KEY_KP_Space, GDK_KEY_Return, GDK_KEY_ISO_Enter, GDK_KEY_KP_Enter, }; activate_action = gtk_signal_action_new ("activated"); for (size_t i = 0; i < G_N_ELEMENTS (activate_keyvals); i++) { g_autoptr (GtkShortcut) activate_shortcut = NULL; activate_shortcut = gtk_shortcut_new (gtk_keyval_trigger_new (activate_keyvals[i], 0), g_object_ref (activate_action)); gtk_widget_class_add_shortcut (widget_class, activate_shortcut); } } gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); } static void bz_list_tile_init (BzListTile *self) { GtkGesture *gesture_click; gtk_widget_add_css_class (GTK_WIDGET (self), "card"); gtk_widget_add_css_class (GTK_WIDGET (self), "activatable"); gesture_click = gtk_gesture_click_new (); g_signal_connect_swapped (gesture_click, "released", G_CALLBACK (on_gesture_click_released), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture_click)); gtk_widget_set_focusable (GTK_WIDGET (self), TRUE); gtk_widget_set_receives_default (GTK_WIDGET (self), TRUE); } /** * bz_list_tile_new: * * Create a new #BzListTile. * * Returns: (transfer full): a newly created #BzListTile */ BzListTile * bz_list_tile_new (void) { return g_object_new (BZ_TYPE_LIST_TILE, NULL); } /** * bz_list_tile_get_child: * @self: a #BzListTile * * Get the child associated with @self. * * Returns: (transfer none) (nullable): the child */ GtkWidget * bz_list_tile_get_child (BzListTile *self) { BzListTilePrivate *priv; g_assert (BZ_IS_LIST_TILE (self)); priv = bz_list_tile_get_instance_private (self); return priv->child; } /** * bz_list_tile_set_child: * @self: a #BzListTile * @child: (transfer none): the child * * Set the child to associate with @self. */ void bz_list_tile_set_child (BzListTile *self, GtkWidget *child) { BzListTilePrivate *priv; g_assert (BZ_IS_LIST_TILE (self)); priv = bz_list_tile_get_instance_private (self); /* Since this is not a library, there is no point in safeguarding it */ priv->child = child; gtk_widget_set_parent (child, GTK_WIDGET (self)); } static void on_gesture_click_released (BzListTile *self, gint n_press, gdouble x, gdouble y, GtkGestureClick *gesture) { if (gtk_widget_contains (GTK_WIDGET (self), x, y)) { gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); g_signal_emit (self, signals[ACTIVATED], 0); } else { gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_DENIED); } } ��������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-list-tile.h��������������������������������������������������������0000664�0000000�0000000�00000002336�15240005042�0020621�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-list-tile.h * * Copyright 2025 Hari Rana <theevilskeleton@riseup.net> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <http://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_LIST_TILE (bz_list_tile_get_type()) G_DECLARE_DERIVABLE_TYPE (BzListTile, bz_list_tile, BZ, LIST_TILE, GtkWidget) struct _BzListTileClass { GtkWidgetClass parent_class; }; BzListTile *bz_list_tile_new (void); GtkWidget *bz_list_tile_get_child (BzListTile *self); void bz_list_tile_set_child (BzListTile *self, GtkWidget *child); G_END_DECLS��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-login-page.blp�����������������������������������������������������0000664�0000000�0000000�00000006052�15240005042�0021262�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Gdk 4.0; using Adw 1; template $BzLoginPage: Adw.NavigationPage { title: _("Connect to Flathub"); child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: Stack main_stack { transition-type: crossfade; StackPage { name: "loading"; child: Adw.Spinner { hexpand: true; vexpand: true; halign: center; valign: center; width-request: 64; height-request: 64; }; } StackPage { name: "error"; child: Adw.StatusPage error_status_page { icon-name: "computer-fail-symbolic"; title: _("Something Went Wrong"); }; } StackPage { name: "start"; child: Adw.Clamp { child: Adw.StatusPage { icon-name: "flathub-symbolic"; title: _("Connect to Flathub"); description: _("Log in to sync your favorited apps across devices"); child: Adw.PreferencesGroup provider_preferences_group { margin-start: 10; margin-end: 10; hexpand: true; halign: fill; }; }; }; } StackPage { name: "browser"; child: ScrolledWindow browser_scroll { vexpand: true; }; } StackPage { name: "finish"; child: ScrolledWindow { hscrollbar-policy: never; child: Adw.Clamp { maximum-size: 600; child: Box { orientation: vertical; vexpand: true; halign: center; valign: center; Box { orientation: vertical; spacing: 15; halign: center; valign: center; Adw.Avatar { size: 96; show-initials: true; text: bind template.auth-state as <$BzAuthState>.name; custom-image: bind try { $choose_object(template.auth-state as <$BzAuthState>.paintable as <$BzAsyncTexture>.loaded, template.auth-state as <$BzAuthState>.paintable , null as <Gdk.Paintable>), null as <Gdk.Paintable>}; } Label { halign: center; label: bind $format_greeting(template.auth-state as <$BzAuthState>.name as <string>) as <string>; wrap: true; wrap-mode: word_char; justify: center; styles [ "title-1", ] } } Box { orientation: horizontal; spacing: 10; halign: center; margin-top: 20; Button { label: _("Finish"); clicked => $on_close_clicked(); styles [ "pill", ] } } }; }; }; } }; }; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-login-page.c�������������������������������������������������������0000664�0000000�0000000�00000054124�15240005042�0020732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-login-page.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include <json-glib/json-glib.h> #include <libsoup/soup.h> #include <webkit/webkit.h> #include "bz-auth-state.h" #include "bz-flathub-auth-provider.h" #include "global-net.h" #include "bz-login-page.h" #include "template-callbacks.h" #include "util.h" struct _BzLoginPage { AdwNavigationPage parent_instance; BzAuthState *auth_state; WebKitWebView *webview; gboolean webkit_loaded; SoupSession *session; SoupCookieJar *cookie_jar; GList *providers; BzFlathubAuthProvider *current_provider; char *auth_redirect_url; char *session_cookie; GDateTime *session_cookie_expires; gboolean oauth_completed; GtkStack *main_stack; AdwStatusPage *error_status_page; AdwPreferencesGroup *provider_preferences_group; GtkScrolledWindow *browser_scroll; }; G_DEFINE_FINAL_TYPE (BzLoginPage, bz_login_page, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_AUTH_STATE, N_PROPS }; static GParamSpec *properties[N_PROPS]; static WebKitNetworkSession * get_shared_network_session (void) { static WebKitNetworkSession *shared_session = NULL; if (g_once_init_enter (&shared_session)) { g_autofree char *data_dir = NULL; g_autoptr (WebKitNetworkSession) session = NULL; data_dir = g_build_filename (g_get_user_data_dir (), "io.github.kolunmi.Bazaar", "webkit-data", NULL); session = webkit_network_session_new (data_dir, NULL); g_once_init_leave (&shared_session, g_steal_pointer (&session)); } return shared_session; } static void show_error_take (BzLoginPage *self, char *message) { g_autofree char *escaped_message = NULL; gtk_stack_set_visible_child_name (self->main_stack, "error"); escaped_message = g_markup_escape_text (message, -1); adw_status_page_set_description (self->error_status_page, escaped_message); g_free (message); } static JsonObject * parse_json_response (GBytes *bytes, GError **error) { gboolean result = FALSE; g_autoptr (JsonParser) parser = NULL; JsonNode *root = NULL; parser = json_parser_new (); result = json_parser_load_from_data ( parser, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), error); if (!result) return NULL; root = json_parser_get_root (parser); return json_node_dup_object (root); } static SoupMessage * create_flathub_request (const char *method, const char *route) { g_autofree char *url = NULL; g_autoptr (SoupMessage) msg = NULL; url = g_strdup_printf ("https://flathub.org/api/v2%s", route); msg = soup_message_new (method, url); soup_message_headers_append (soup_message_get_request_headers (msg), "accept", "application/json"); return g_steal_pointer (&msg); } static void load_webkit_library (BzLoginPage *self) { WebKitNetworkSession *network_session = NULL; if (self->webkit_loaded) return; network_session = get_shared_network_session (); self->webview = g_object_new ( WEBKIT_TYPE_WEB_VIEW, "network-session", network_session, NULL); gtk_scrolled_window_set_child ( self->browser_scroll, GTK_WIDGET (self->webview)); self->webkit_loaded = TRUE; } static void on_user_info_loaded (GObject *source_object, GAsyncResult *res, GWeakRef *wr); static void on_oauth_complete (GObject *source_object, GAsyncResult *res, GWeakRef *wr); static void complete_oauth (BzLoginPage *self, const char *code, const char *state, const char *error) { g_autoptr (JsonBuilder) builder = NULL; g_autoptr (JsonGenerator) generator = NULL; g_autofree char *route = NULL; g_autofree char *json_data = NULL; g_autoptr (SoupMessage) msg = NULL; gtk_stack_set_visible_child_name (self->main_stack, "loading"); builder = json_builder_new (); json_builder_begin_object (builder); if (error != NULL) { json_builder_set_member_name (builder, "state"); json_builder_add_string_value (builder, state); json_builder_set_member_name (builder, "error"); json_builder_add_string_value (builder, error); } else { json_builder_set_member_name (builder, "code"); json_builder_add_string_value (builder, code); json_builder_set_member_name (builder, "state"); json_builder_add_string_value (builder, state); } json_builder_end_object (builder); generator = json_generator_new (); json_generator_set_root (generator, json_builder_get_root (builder)); json_data = json_generator_to_data (generator, NULL); route = g_strdup_printf ("/auth/login/%s", bz_flathub_auth_provider_get_method (self->current_provider)); msg = soup_message_new ("POST", g_strdup_printf ("https://flathub.org/api/v2%s", route)); soup_message_headers_append (soup_message_get_request_headers (msg), "accept", "application/json"); soup_message_headers_append (soup_message_get_request_headers (msg), "Content-Type", "application/json"); soup_message_set_request_body_from_bytes (msg, "application/json", g_bytes_new (json_data, strlen (json_data))); soup_session_send_and_read_async ( self->session, msg, G_PRIORITY_DEFAULT, NULL, (GAsyncReadyCallback) on_oauth_complete, bz_track_weak (self)); } static gboolean on_decide_policy (BzLoginPage *self, WebKitPolicyDecision *decision, WebKitPolicyDecisionType decision_type, WebKitWebView *webview) { WebKitNavigationAction *nav_action = NULL; WebKitURIRequest *request = NULL; const char *uri = NULL; g_autoptr (GUri) parsed_uri = NULL; g_autoptr (GHashTable) params = NULL; const char *code = NULL; const char *state = NULL; const char *error = NULL; if (decision_type != WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION) return FALSE; nav_action = webkit_navigation_policy_decision_get_navigation_action ( WEBKIT_NAVIGATION_POLICY_DECISION (decision)); request = webkit_navigation_action_get_request (nav_action); uri = webkit_uri_request_get_uri (request); if (uri == NULL || strstr (uri, "flathub.org") == NULL || strstr (uri, "/login/") == NULL) return FALSE; parsed_uri = g_uri_parse (uri, G_URI_FLAGS_NONE, NULL); if (parsed_uri == NULL) return FALSE; params = g_uri_parse_params (g_uri_get_query (parsed_uri), -1, "&", G_URI_PARAMS_NONE, NULL); if (params == NULL) return FALSE; code = g_hash_table_lookup (params, "code"); state = g_hash_table_lookup (params, "state"); error = g_hash_table_lookup (params, "error"); if ((code != NULL && state != NULL && !self->oauth_completed) || (error != NULL && state != NULL && !self->oauth_completed)) { self->oauth_completed = TRUE; webkit_policy_decision_ignore (decision); complete_oauth (self, code, state, error); return TRUE; } return FALSE; } static void get_user_info (BzLoginPage *self) { g_autoptr (SoupMessage) msg = NULL; msg = create_flathub_request ("GET", "/auth/userinfo"); soup_session_send_and_read_async ( self->session, msg, G_PRIORITY_DEFAULT, NULL, (GAsyncReadyCallback) on_user_info_loaded, bz_track_weak (self)); } static void on_oauth_complete (GObject *source_object, GAsyncResult *res, GWeakRef *wr) { g_autoptr (BzLoginPage) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (JsonObject) obj = NULL; const char *status = NULL; g_autoslist (SoupCookie) cookies = NULL; self = g_weak_ref_get (wr); if (self == NULL) goto done; bytes = soup_session_send_and_read_finish ( SOUP_SESSION (source_object), res, &local_error); if (bytes == NULL) { g_warning ("OAuth complete error: %s", local_error->message); show_error_take (self, g_strdup_printf ("Error: %s", local_error->message)); goto done; } obj = parse_json_response (bytes, &local_error); if (obj == NULL) { g_warning ("Failed to parse OAuth response: %s", local_error->message); show_error_take (self, g_strdup_printf ("Error: %s", local_error->message)); goto done; } status = json_object_get_string_member (obj, "status"); cookies = soup_cookie_jar_all_cookies (self->cookie_jar); for (GSList *l = cookies; l != NULL; l = l->next) { SoupCookie *cookie = l->data; if (g_strcmp0 (soup_cookie_get_name (cookie), "session") == 0) { g_clear_pointer (&self->session_cookie, g_free); self->session_cookie = g_strdup (soup_cookie_get_value (cookie)); g_clear_pointer (&self->session_cookie_expires, g_date_time_unref); self->session_cookie_expires = g_date_time_ref (soup_cookie_get_expires (cookie)); } } if (g_strcmp0 (status, "ok") == 0 || g_strcmp0 (status, "success") == 0) get_user_info (self); else show_error_take (self, g_strdup ("Authentication failed")); done: bz_weak_release (wr); } static void on_user_info_loaded (GObject *source_object, GAsyncResult *res, GWeakRef *wr) { g_autoptr (BzLoginPage) self = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (GError) error = NULL; g_autoptr (JsonObject) obj = NULL; JsonObject *default_account = NULL; const char *displayname = NULL; const char *avatar_url = NULL; self = g_weak_ref_get (wr); if (self == NULL) goto done; if (self->webview != NULL) webkit_web_view_load_uri (self->webview, "about:blank"); bytes = soup_session_send_and_read_finish (SOUP_SESSION (source_object), res, &error); if (error != NULL) { g_warning ("User info load error: %s", error->message); show_error_take (self, g_strdup_printf ("Error: %s", error->message)); goto done; } obj = parse_json_response (bytes, &error); if (obj == NULL) { g_warning ("Failed to parse user info: %s", error->message); show_error_take (self, g_strdup_printf ("Error: %s", error->message)); goto done; } displayname = json_object_get_string_member (obj, "displayname"); if (json_object_has_member (obj, "default_account")) { default_account = json_object_get_object_member (obj, "default_account"); if (displayname == NULL && json_object_has_member (default_account, "login")) displayname = json_object_get_string_member (default_account, "login"); if (json_object_has_member (default_account, "avatar")) avatar_url = json_object_get_string_member (default_account, "avatar"); } if (displayname == NULL) displayname = "N/A"; if (self->auth_state != NULL) bz_auth_state_set_authenticated (self->auth_state, displayname, self->session_cookie, self->session_cookie_expires, avatar_url); gtk_stack_set_visible_child_name (self->main_stack, "finish"); done: bz_weak_release (wr); } static void on_login_response (GObject *source_object, GAsyncResult *res, GWeakRef *wr) { g_autoptr (BzLoginPage) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (JsonObject) obj = NULL; const char *redirect = NULL; self = g_weak_ref_get (wr); if (self == NULL) goto done; bytes = soup_session_send_and_read_finish ( SOUP_SESSION (source_object), res, &local_error); if (bytes == NULL) { show_error_take (self, g_strdup_printf ("Error: %s", local_error->message)); goto done; } obj = parse_json_response (bytes, &local_error); if (obj == NULL) { show_error_take (self, g_strdup_printf ("Error: %s", local_error->message)); goto done; } redirect = json_object_get_string_member (obj, "redirect"); if (redirect == NULL) { show_error_take (self, g_strdup ("Error: No redirect URL received")); goto done; } g_clear_pointer (&self->auth_redirect_url, g_free); self->auth_redirect_url = g_strdup (redirect); load_webkit_library (self); g_signal_connect_swapped ( self->webview, "decide-policy", G_CALLBACK (on_decide_policy), self); gtk_stack_set_visible_child_name (self->main_stack, "browser"); webkit_web_view_load_uri (self->webview, self->auth_redirect_url); done: bz_weak_release (wr); } static void on_provider_row_activated (BzLoginPage *self, GtkButton *button) { BzFlathubAuthProvider *provider = NULL; g_autoptr (SoupMessage) msg = NULL; g_autofree char *route = NULL; provider = g_object_get_data (G_OBJECT (button), "provider"); if (provider == NULL) return; self->current_provider = provider; self->oauth_completed = FALSE; gtk_stack_set_visible_child_name (self->main_stack, "loading"); route = g_strdup_printf ("/auth/login/%s", bz_flathub_auth_provider_get_method (provider)); msg = create_flathub_request ("GET", route); soup_session_send_and_read_async ( self->session, msg, G_PRIORITY_DEFAULT, NULL, (GAsyncReadyCallback) on_login_response, bz_track_weak (self)); } static void on_providers_loaded (GObject *source_object, GAsyncResult *res, GWeakRef *wr) { g_autoptr (BzLoginPage) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; g_autoptr (JsonParser) parser = NULL; JsonNode *root; JsonArray *array; self = g_weak_ref_get (wr); if (self == NULL) goto done; bytes = soup_session_send_and_read_finish (SOUP_SESSION (source_object), res, &local_error); if (bytes == NULL) { show_error_take (self, g_strdup_printf ("Error loading providers: %s", local_error->message)); goto done; } parser = json_parser_new (); if (!json_parser_load_from_data (parser, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), &local_error)) { show_error_take (self, g_strdup_printf ("Error parsing providers: %s", local_error->message)); goto done; } root = json_parser_get_root (parser); array = json_node_get_array (root); for (guint i = 0; i < json_array_get_length (array); i++) { JsonObject *provider_obj = NULL; g_autoptr (BzFlathubAuthProvider) provider = NULL; const char *method = NULL; const char *name = NULL; GtkWidget *row = NULL; GtkWidget *prefix_icon = NULL; GtkWidget *suffix_icon = NULL; g_autofree char *icon_name = NULL; provider_obj = json_array_get_object_element (array, i); provider = bz_flathub_auth_provider_new (); method = json_object_get_string_member (provider_obj, "method"); name = json_object_get_string_member (provider_obj, "name"); row = adw_action_row_new (); icon_name = g_strdup_printf ("io.github.kolunmi.Bazaar.%s", method); bz_flathub_auth_provider_set_name (provider, name); bz_flathub_auth_provider_set_method (provider, method); self->providers = g_list_append (self->providers, g_object_ref (provider)); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), name); prefix_icon = gtk_image_new_from_icon_name (icon_name); gtk_image_set_icon_size (GTK_IMAGE (prefix_icon), GTK_ICON_SIZE_LARGE); gtk_widget_add_css_class (prefix_icon, "lowres-icon"); adw_action_row_add_prefix (ADW_ACTION_ROW (row), prefix_icon); suffix_icon = gtk_image_new_from_icon_name ("go-next-symbolic"); adw_action_row_add_suffix (ADW_ACTION_ROW (row), suffix_icon); g_object_set_data_full (G_OBJECT (row), "provider", g_object_ref (provider), g_object_unref); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), true); g_signal_connect_swapped (row, "activated", G_CALLBACK (on_provider_row_activated), self); adw_preferences_group_add (self->provider_preferences_group, row); } gtk_stack_set_visible_child_name (self->main_stack, "start"); done: bz_weak_release (wr); } static void load_providers (BzLoginPage *self) { g_autoptr (SoupMessage) msg = NULL; gtk_stack_set_visible_child_name (self->main_stack, "loading"); msg = create_flathub_request ("GET", "/auth/login"); soup_session_send_and_read_async ( self->session, msg, G_PRIORITY_DEFAULT, NULL, (GAsyncReadyCallback) on_providers_loaded, bz_track_weak (self)); } static void on_close_clicked (GtkButton *button, BzLoginPage *self) { GtkWidget *navigation_view = NULL; navigation_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); if (navigation_view != NULL) adw_navigation_view_pop (ADW_NAVIGATION_VIEW (navigation_view)); } static void bz_login_page_dispose (GObject *object) { BzLoginPage *self = BZ_LOGIN_PAGE (object); g_clear_object (&self->auth_state); g_clear_object (&self->session); g_clear_object (&self->cookie_jar); g_clear_pointer (&self->session_cookie_expires, g_date_time_unref); g_clear_pointer (&self->auth_redirect_url, g_free); g_clear_pointer (&self->session_cookie, g_free); if (self->providers != NULL) { g_list_free_full (self->providers, (GDestroyNotify) g_object_unref); self->providers = NULL; } G_OBJECT_CLASS (bz_login_page_parent_class)->dispose (object); } static void bz_login_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzLoginPage *self = BZ_LOGIN_PAGE (object); switch (prop_id) { case PROP_AUTH_STATE: g_value_set_object (value, self->auth_state); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_login_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzLoginPage *self = BZ_LOGIN_PAGE (object); switch (prop_id) { case PROP_AUTH_STATE: g_set_object (&self->auth_state, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static char * format_greeting (gpointer object, const char *name) { if (name == NULL || name[0] == '\0') return g_strdup (" "); return g_strdup_printf (_ ("Hello, %s!"), name); } static void bz_login_page_class_init (BzLoginPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_login_page_dispose; object_class->get_property = bz_login_page_get_property; object_class->set_property = bz_login_page_set_property; properties[PROP_AUTH_STATE] = g_param_spec_object ( "auth-state", NULL, NULL, BZ_TYPE_AUTH_STATE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, N_PROPS, properties); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-login-page.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzLoginPage, main_stack); gtk_widget_class_bind_template_child (widget_class, BzLoginPage, error_status_page); gtk_widget_class_bind_template_child (widget_class, BzLoginPage, provider_preferences_group); gtk_widget_class_bind_template_child (widget_class, BzLoginPage, browser_scroll); gtk_widget_class_bind_template_callback (widget_class, on_close_clicked); gtk_widget_class_bind_template_callback (widget_class, format_greeting); } static void bz_login_page_init (BzLoginPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->session = soup_session_new (); soup_session_set_proxy_resolver (self->session, bz_get_default_proxy_resolver ()); self->cookie_jar = soup_cookie_jar_new (); soup_cookie_jar_set_accept_policy (self->cookie_jar, SOUP_COOKIE_JAR_ACCEPT_ALWAYS); soup_session_add_feature (self->session, SOUP_SESSION_FEATURE (self->cookie_jar)); self->webkit_loaded = FALSE; self->oauth_completed = FALSE; load_providers (self); } AdwNavigationPage * bz_login_page_new (BzAuthState *auth_state) { return g_object_new (BZ_TYPE_LOGIN_PAGE, "auth-state", auth_state, NULL); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-login-page.h�������������������������������������������������������0000664�0000000�0000000�00000002041�15240005042�0020726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-login-page.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-auth-state.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_LOGIN_PAGE (bz_login_page_get_type ()) G_DECLARE_FINAL_TYPE (BzLoginPage, bz_login_page, BZ, LOGIN_PAGE, AdwNavigationPage) AdwNavigationPage *bz_login_page_new (BzAuthState *auth_state); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-lozenge.c����������������������������������������������������������0000664�0000000�0000000�00000023762�15240005042�0020357�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-lozenge.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <gtk/gtk.h> #include "bz-context-row.h" #include "bz-lozenge.h" struct _BzLozenge { GtkBox parent_instance; gchar *title; gchar *label; gchar **icon_names; BzImportance importance; GtkWidget *icon_box; GtkWidget *label_widget; GtkWidget *title_label; }; G_DEFINE_FINAL_TYPE (BzLozenge, bz_lozenge, GTK_TYPE_BOX) enum { PROP_0, PROP_TITLE, PROP_LABEL, PROP_ICON_NAMES, PROP_IMPORTANCE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { NULL }; static void bz_lozenge_rebuild (BzLozenge *self); static void bz_lozenge_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzLozenge *self = NULL; self = BZ_LOZENGE (object); switch (prop_id) { case PROP_TITLE: g_value_set_string (value, self->title); break; case PROP_LABEL: g_value_set_string (value, self->label); break; case PROP_ICON_NAMES: g_value_set_boxed (value, self->icon_names); break; case PROP_IMPORTANCE: g_value_set_enum (value, self->importance); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_lozenge_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzLozenge *self = NULL; self = BZ_LOZENGE (object); switch (prop_id) { case PROP_TITLE: bz_lozenge_set_title (self, g_value_get_string (value)); break; case PROP_LABEL: bz_lozenge_set_label (self, g_value_get_string (value)); break; case PROP_ICON_NAMES: bz_lozenge_set_icon_names (self, g_value_get_boxed (value)); break; case PROP_IMPORTANCE: bz_lozenge_set_importance (self, g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_lozenge_dispose (GObject *object) { BzLozenge *self = NULL; self = BZ_LOZENGE (object); g_clear_pointer (&self->title, g_free); g_clear_pointer (&self->label, g_free); g_clear_pointer (&self->icon_names, g_strfreev); g_clear_pointer (&self->icon_box, gtk_widget_unparent); g_clear_pointer (&self->label_widget, gtk_widget_unparent); g_clear_pointer (&self->title_label, gtk_widget_unparent); G_OBJECT_CLASS (bz_lozenge_parent_class)->dispose (object); } static void bz_lozenge_class_init (BzLozengeClass *klass) { GObjectClass *object_class = NULL; object_class = G_OBJECT_CLASS (klass); object_class->get_property = bz_lozenge_get_property; object_class->set_property = bz_lozenge_set_property; object_class->dispose = bz_lozenge_dispose; props[PROP_TITLE] = g_param_spec_string ("title", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_LABEL] = g_param_spec_string ("label", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ICON_NAMES] = g_param_spec_boxed ("icon-names", NULL, NULL, G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_IMPORTANCE] = g_param_spec_enum ("importance", NULL, NULL, BZ_TYPE_IMPORTANCE, BZ_IMPORTANCE_NEUTRAL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_lozenge_init (BzLozenge *self) { GtkWidget *container = NULL; self->importance = BZ_IMPORTANCE_NEUTRAL; gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_VERTICAL); gtk_box_set_spacing (GTK_BOX (self), 12); gtk_widget_set_halign (GTK_WIDGET (self), GTK_ALIGN_CENTER); container = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_widget_set_halign (container, GTK_ALIGN_CENTER); gtk_box_append (GTK_BOX (self), container); self->icon_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_widget_set_halign (self->icon_box, GTK_ALIGN_CENTER); gtk_box_append (GTK_BOX (container), self->icon_box); self->label_widget = gtk_label_new (NULL); gtk_widget_set_halign (self->label_widget, GTK_ALIGN_CENTER); gtk_widget_add_css_class (self->label_widget, "circular-lozenge"); gtk_widget_add_css_class (self->label_widget, "large"); gtk_box_append (GTK_BOX (container), self->label_widget); self->title_label = gtk_label_new (NULL); gtk_label_set_justify (GTK_LABEL (self->title_label), GTK_JUSTIFY_CENTER); gtk_label_set_wrap (GTK_LABEL (self->title_label), TRUE); gtk_label_set_wrap_mode (GTK_LABEL (self->title_label), PANGO_WRAP_WORD_CHAR); gtk_label_set_xalign (GTK_LABEL (self->title_label), 0.5); gtk_widget_add_css_class (self->title_label, "title-2"); gtk_box_append (GTK_BOX (self), self->title_label); bz_lozenge_rebuild (self); } GtkWidget * bz_lozenge_new (void) { return g_object_new (BZ_TYPE_LOZENGE, NULL); } void bz_lozenge_set_title (BzLozenge *self, const gchar *title) { g_return_if_fail (BZ_IS_LOZENGE (self)); if (g_strcmp0 (self->title, title) == 0) return; g_clear_pointer (&self->title, g_free); self->title = g_strdup (title); bz_lozenge_rebuild (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TITLE]); } const gchar * bz_lozenge_get_title (BzLozenge *self) { g_return_val_if_fail (BZ_IS_LOZENGE (self), NULL); return self->title; } void bz_lozenge_set_label (BzLozenge *self, const gchar *label) { g_return_if_fail (BZ_IS_LOZENGE (self)); if (g_strcmp0 (self->label, label) == 0) return; g_clear_pointer (&self->label, g_free); self->label = g_strdup (label); bz_lozenge_rebuild (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_LABEL]); } const gchar * bz_lozenge_get_label (BzLozenge *self) { g_return_val_if_fail (BZ_IS_LOZENGE (self), NULL); return self->label; } void bz_lozenge_set_icon_names (BzLozenge *self, const gchar *const *icon_names) { g_return_if_fail (BZ_IS_LOZENGE (self)); g_clear_pointer (&self->icon_names, g_strfreev); self->icon_names = g_strdupv ((gchar **) icon_names); bz_lozenge_rebuild (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ICON_NAMES]); } gchar ** bz_lozenge_get_icon_names (BzLozenge *self) { g_return_val_if_fail (BZ_IS_LOZENGE (self), NULL); return g_strdupv (self->icon_names); } void bz_lozenge_set_importance (BzLozenge *self, BzImportance importance) { g_return_if_fail (BZ_IS_LOZENGE (self)); if (self->importance == importance) return; self->importance = importance; bz_lozenge_rebuild (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_IMPORTANCE]); } BzImportance bz_lozenge_get_importance (BzLozenge *self) { g_return_val_if_fail (BZ_IS_LOZENGE (self), BZ_IMPORTANCE_NEUTRAL); return self->importance; } static void bz_lozenge_rebuild (BzLozenge *self) { GtkWidget *child = NULL; const gchar *css_class = NULL; g_return_if_fail (BZ_IS_LOZENGE (self)); while ((child = gtk_widget_get_first_child (self->icon_box)) != NULL) gtk_box_remove (GTK_BOX (self->icon_box), child); if (self->icon_names != NULL && self->icon_names[0] != NULL) { gtk_widget_set_visible (self->icon_box, TRUE); gtk_widget_set_visible (self->label_widget, FALSE); css_class = bz_context_row_importance_to_css_class (self->importance); for (gsize i = 0; self->icon_names[i] != NULL; i++) { GtkWidget *icon = NULL; icon = gtk_image_new_from_icon_name (self->icon_names[i]); gtk_image_set_pixel_size (GTK_IMAGE (icon), 24); gtk_widget_set_halign (icon, GTK_ALIGN_CENTER); gtk_widget_add_css_class (icon, "circular-lozenge"); gtk_widget_add_css_class (icon, css_class); gtk_widget_add_css_class (icon, "large"); gtk_box_append (GTK_BOX (self->icon_box), icon); } } else if (self->label != NULL && *self->label != '\0') { const gchar *new_classes[3] = { "circular-lozenge", "large", NULL }; gtk_widget_set_visible (self->icon_box, FALSE); gtk_widget_set_visible (self->label_widget, TRUE); gtk_label_set_markup (GTK_LABEL (self->label_widget), self->label); gtk_widget_set_css_classes (self->label_widget, new_classes); css_class = bz_context_row_importance_to_css_class (self->importance); gtk_widget_add_css_class (self->label_widget, css_class); } else { gtk_widget_set_visible (self->icon_box, FALSE); gtk_widget_set_visible (self->label_widget, FALSE); } if (self->title != NULL && *self->title != '\0') { gtk_label_set_text (GTK_LABEL (self->title_label), self->title); gtk_widget_set_visible (self->title_label, TRUE); } else { gtk_widget_set_visible (self->title_label, FALSE); } } ��������������bazaar-org-bazaar-48f93f4/src/bz-lozenge.h����������������������������������������������������������0000664�0000000�0000000�00000003130�15240005042�0020347�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-lozenge.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-context-row.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_LOZENGE (bz_lozenge_get_type ()) G_DECLARE_FINAL_TYPE (BzLozenge, bz_lozenge, BZ, LOZENGE, GtkBox) GtkWidget *bz_lozenge_new (void); void bz_lozenge_set_title (BzLozenge *self, const gchar *title); const gchar * bz_lozenge_get_title (BzLozenge *self); void bz_lozenge_set_label (BzLozenge *self, const gchar *label); const gchar * bz_lozenge_get_label (BzLozenge *self); void bz_lozenge_set_icon_names (BzLozenge *self, const gchar *const *icon_names); gchar ** bz_lozenge_get_icon_names (BzLozenge *self); void bz_lozenge_set_importance (BzLozenge *self, BzImportance importance); BzImportance bz_lozenge_get_importance (BzLozenge *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-main-config.txt����������������������������������������������������0000664�0000000�0000000�00000001527�15240005042�0021473�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=main_config parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-hook.h" include="bz-search-bias.h" ensure=BZ_TYPE_HOOK ensure=BZ_TYPE_HOOK_DIALOG ensure=BZ_TYPE_HOOK_DIALOG_OPTION ensure=BZ_TYPE_SEARCH_BIAS property=txt_blocklist_paths GListModel G_TYPE_LIST_MODEL object property=blocklist_version int G_TYPE_INT int property=yaml_blocklist_paths GListModel G_TYPE_LIST_MODEL object property=curated_config_version int G_TYPE_INT int property=curated_config_paths GListModel G_TYPE_LIST_MODEL object property=override_eol_markings GListModel G_TYPE_LIST_MODEL object property=hooks GListModel G_TYPE_LIST_MODEL object property=search_biases GListModel G_TYPE_LIST_MODEL object property=start_on_curated gboolean G_TYPE_BOOLEAN boolean property=hide_auto_update_options gboolean G_TYPE_BOOLEAN boolean �������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-malcontent-service.c�����������������������������������������������0000664�0000000�0000000�00000015401�15240005042�0022505�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-malcontent-service.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <appstream.h> #include <libmalcontent/malcontent.h> #include <unistd.h> #include "bz-malcontent-service.h" struct _BzMalcontentService { GObject parent_instance; MctManager *manager; BzStateInfo *state; GDBusConnection *bus; MctAppFilter *filter; gulong changed_id; }; G_DEFINE_FINAL_TYPE (BzMalcontentService, bz_malcontent_service, G_TYPE_OBJECT) static void fetch_blocked_ids (BzMalcontentService *self); static void apply_filter (BzMalcontentService *self, MctAppFilter *filter); static void on_filter_loaded (GObject *source, GAsyncResult *result, gpointer user_data); static void on_filter_changed (MctManager *manager, guint64 user_id, gpointer user_data); static void bz_malcontent_service_dispose (GObject *object) { BzMalcontentService *self = NULL; self = BZ_MALCONTENT_SERVICE (object); g_signal_handler_disconnect (self->manager, self->changed_id); g_clear_object (&self->manager); g_clear_object (&self->state); g_clear_object (&self->bus); g_clear_pointer (&self->filter, mct_app_filter_unref); G_OBJECT_CLASS (bz_malcontent_service_parent_class)->dispose (object); } static void bz_malcontent_service_class_init (BzMalcontentServiceClass *klass) { G_OBJECT_CLASS (klass)->dispose = bz_malcontent_service_dispose; } static void bz_malcontent_service_init (BzMalcontentService *self) { } BzMalcontentService * bz_malcontent_service_new (GDBusConnection *bus, BzStateInfo *state) { BzMalcontentService *self = NULL; self = g_object_new (BZ_TYPE_MALCONTENT_SERVICE, NULL); self->state = g_object_ref (state); self->bus = g_object_ref (bus); self->manager = mct_manager_new (bus); self->changed_id = g_signal_connect (self->manager, "app-filter-changed", G_CALLBACK (on_filter_changed), self); return self; } void bz_malcontent_service_start (BzMalcontentService *self) { mct_manager_get_app_filter_async (self->manager, getuid (), MCT_MANAGER_GET_VALUE_FLAGS_INTERACTIVE, NULL, on_filter_loaded, self); } static void fetch_blocked_ids (BzMalcontentService *self) { g_autoptr (GError) local_error = NULL; g_autoptr (GVariant) result = NULL; g_autoptr (GVariant) prop = NULL; g_autoptr (GVariant) filter_tuple = NULL; g_autoptr (GtkStringList) blocked = NULL; g_autofree char *object_path = NULL; gboolean is_allowlist = FALSE; GVariantIter *iter = NULL; const char *ref = NULL; object_path = g_strdup_printf ("/org/freedesktop/Accounts/User%d", (int) getuid ()); result = g_dbus_connection_call_sync ( self->bus, "org.freedesktop.Accounts", object_path, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", "com.endlessm.ParentalControls.AppFilter", "AppFilter"), G_VARIANT_TYPE ("(v)"), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &local_error); if (result == NULL) { g_warning ("failed to fetch malcontent AppFilter from D-Bus: %s", local_error->message); return; } prop = g_variant_get_child_value (result, 0); filter_tuple = g_variant_get_variant (prop); g_variant_get (filter_tuple, "(bas)", &is_allowlist, &iter); blocked = gtk_string_list_new (NULL); while (g_variant_iter_next (iter, "s", &ref)) gtk_string_list_append (blocked, ref); g_variant_iter_free (iter); bz_state_info_set_parental_blocked_ids (self->state, G_LIST_MODEL (blocked)); } static void apply_filter (BzMalcontentService *self, MctAppFilter *filter) { const char *const *oars_sections = NULL; int max_age = -1; g_clear_pointer (&self->filter, mct_app_filter_unref); self->filter = mct_app_filter_ref (filter); oars_sections = mct_app_filter_get_oars_sections (self->filter); for (gsize i = 0; oars_sections[i] != NULL; i++) { MctAppFilterOarsValue filter_value; int section_age; filter_value = mct_app_filter_get_oars_value (self->filter, oars_sections[i]); if (filter_value == MCT_APP_FILTER_OARS_VALUE_UNKNOWN) continue; section_age = as_content_rating_attribute_to_csm_age (oars_sections[i], (AsContentRatingValue) filter_value); if (section_age > max_age) max_age = section_age; } bz_state_info_set_parental_age_rating (self->state, max_age); fetch_blocked_ids (self); } static void on_filter_loaded (GObject *source, GAsyncResult *result, gpointer user_data) { BzMalcontentService *self = NULL; g_autoptr (MctAppFilter) filter = NULL; g_autoptr (GError) local_error = NULL; self = user_data; filter = mct_manager_get_app_filter_finish (self->manager, result, &local_error); if (filter != NULL) apply_filter (self, filter); else g_warning ("Failed to load malcontent app filter: %s", local_error->message); } static void on_filter_changed (MctManager *manager, guint64 user_id, gpointer user_data) { BzMalcontentService *self = NULL; self = user_data; if (user_id != (guint64) getuid ()) return; mct_manager_get_app_filter_async (self->manager, getuid (), MCT_MANAGER_GET_VALUE_FLAGS_NONE, NULL, on_filter_loaded, self); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-malcontent-service.h�����������������������������������������������0000664�0000000�0000000�00000002330�15240005042�0022507�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-malcontent-service.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-state-info.h" #include <appstream.h> #include <glib-object.h> G_BEGIN_DECLS #define BZ_TYPE_MALCONTENT_SERVICE bz_malcontent_service_get_type () G_DECLARE_FINAL_TYPE (BzMalcontentService, bz_malcontent_service, BZ, MALCONTENT_SERVICE, GObject) BzMalcontentService * bz_malcontent_service_new (GDBusConnection *bus, BzStateInfo *state); void bz_malcontent_service_start (BzMalcontentService *self); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-marshalers.list����������������������������������������������������0000664�0000000�0000000�00000002625�15240005042�0021601�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# see glib-genmarshal(1) for a detailed description of the file format, # possible parameter types are: # VOID indicates no return type, or no extra # parameters. if VOID is used as the parameter # list, no additional parameters may be present. # BOOLEAN for boolean types (gboolean) # CHAR for signed char types (char) # UCHAR for unsigned char types (guchar) # INT for signed integer types (int) # UINT for unsigned integer types (guint) # LONG for signed long integer types (glong) # ULONG for unsigned long integer types (gulong) # INT64 for signed 64bit integer types (gint64) # UINT64 for unsigned 64bit integer types (guint64) # ENUM for enumeration types (int) # FLAGS for flag enumeration types (guint) # FLOAT for single-precision float types (float) # DOUBLE for double-precision float types (double) # STRING for string types (char *) # BOXED for boxed (anonymous but reference counted) types (GBoxed*) # PARAM for GParamSpec or derived types (GParamSpec*) # POINTER for anonymous pointer types (gpointer) # OBJECT for GObject or derived types (GObject*) # VARIANT for GVariant types (GVariant*) # NONE deprecated alias for VOID # BOOL deprecated alias for BOOLEAN VOID:OBJECT,OBJECT VOID:OBJECT,BOXED �����������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-metainfo-preview-page.blp������������������������������������������0000664�0000000�0000000�00000004325�15240005042�0023434�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; Adw.NavigationPage page { title: _("Metainfo Preview"); child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Adw.BreakpointBin bp_bin { width-request: 360; height-request: 100; child: ScrolledWindow { vexpand: true; child: Box content_box { orientation: vertical; valign: start; spacing: 60; margin-top: 24; margin-bottom: 24; margin-start: 24; margin-end: 24; Adw.Clamp { maximum-size: 1500; tightening-threshold: 1400; child: Box { spacing: 10; orientation: vertical; $BzFeaturedCarousel carousel {} Label section_title { styles [ "title-1", ] xalign: 0.0; hexpand: true; margin-start: 3; margin-end: 3; margin-bottom: 5; margin-top: 12; ellipsize: end; label: _("Metainfo Preview"); } $BzDynamicListView section_list { styles [ "flathub-page-section", ] hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzAppTile"; child-prop: "group"; row-spacing: 11; column-spacing: 11; } }; } Adw.Clamp { maximum-size: 1000; child: $BzDynamicListView rich_section_list { styles [ "flathub-page-section", ] hexpand: true; scroll: false; noscroll-kind: flow-box; child-type: "BzRichAppTile"; child-prop: "group"; }; } }; }; Adw.Breakpoint { condition ("max-width: 700px") setters { section_list.row-spacing: 9; section_list.column-spacing: 9; content_box.margin-start: 10; content_box.margin-end: 10; } } }; }; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-metainfo-preview.c�������������������������������������������������0000664�0000000�0000000�00000025124�15240005042�0022167�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-metainfo-preview.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-application-map-factory.h" #include "bz-application.h" #include "bz-dynamic-list-view.h" #include "bz-entry-group.h" #include "bz-featured-carousel.h" #include "bz-flathub-category.h" #include "bz-metainfo-preview.h" #include "bz-rich-app-tile.h" #include "bz-state-info.h" #include "error.h" #include "util.h" BZ_DEFINE_DATA ( open_metainfo, OpenMetainfo, { DexPromise *promise; GFile *metainfo_file; GtkWindow *parent_window; }, BZ_RELEASE_DATA (promise, dex_unref); BZ_RELEASE_DATA (metainfo_file, g_object_unref); BZ_RELEASE_DATA (parent_window, g_object_unref)) static DexFuture * on_icon_prompt_finally (DexFuture *future, OpenMetainfoData *data); static void on_icon_chosen (GtkFileDialog *dialog, GAsyncResult *result, OpenMetainfoData *data); static BzMetainfoPickResult * bz_metainfo_pick_result_copy (BzMetainfoPickResult *result); static void append_quality_apps (BzFlathubState *flathub, const char *category_name, guint count, GListStore *destination); GType bz_metainfo_pick_result_get_type (void) { static GType type = 0; if (type == 0) type = g_boxed_type_register_static ( "BzMetainfoPickResult", (GBoxedCopyFunc) bz_metainfo_pick_result_copy, (GBoxedFreeFunc) bz_metainfo_pick_result_free); return type; } void bz_metainfo_pick_result_free (BzMetainfoPickResult *result) { g_clear_object (&result->metainfo_file); g_clear_object (&result->icon_file); g_free (result); } DexFuture * bz_metainfo_preview_open_file (GFile *metainfo_file, GtkWindow *parent_window) { g_autoptr (DexPromise) promise = dex_promise_new (); g_autoptr (DexFuture) alert_future = NULL; AdwDialog *alert = NULL; OpenMetainfoData *data = NULL; g_assert (metainfo_file != NULL); data = open_metainfo_data_new (); data->promise = dex_ref (promise); data->metainfo_file = g_object_ref (metainfo_file); data->parent_window = parent_window != NULL ? g_object_ref (parent_window) : NULL; alert = adw_alert_dialog_new (NULL, NULL); adw_alert_dialog_format_heading (ADW_ALERT_DIALOG (alert), _ ("Add Icon to Metainfo Preview?")); adw_alert_dialog_format_body ( ADW_ALERT_DIALOG (alert), _ ("Metainfo files don't include app icons by themselves. Would you like to select one manually?")); adw_alert_dialog_add_responses ( ADW_ALERT_DIALOG (alert), "skip", _ ("Skip"), "select", _ ("Select Icon"), NULL); adw_alert_dialog_set_response_appearance ( ADW_ALERT_DIALOG (alert), "select", ADW_RESPONSE_SUGGESTED); adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (alert), "select"); adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (alert), "skip"); adw_dialog_present ( alert, parent_window != NULL ? GTK_WIDGET (parent_window) : NULL); alert_future = bz_make_alert_dialog_future (ADW_ALERT_DIALOG (alert)); alert_future = dex_future_then ( g_steal_pointer (&alert_future), (DexFutureCallback) on_icon_prompt_finally, data, (GDestroyNotify) open_metainfo_data_unref); dex_future_disown (g_steal_pointer (&alert_future)); return DEX_FUTURE (g_steal_pointer (&promise)); } static BzMetainfoPickResult * bz_metainfo_pick_result_copy (BzMetainfoPickResult *result) { BzMetainfoPickResult *copy = NULL; copy = g_new0 (BzMetainfoPickResult, 1); copy->metainfo_file = result->metainfo_file ? g_object_ref (result->metainfo_file) : NULL; copy->icon_file = result->icon_file ? g_object_ref (result->icon_file) : NULL; return copy; } static DexFuture * on_icon_prompt_finally (DexFuture *future, OpenMetainfoData *data) { g_autoptr (GError) local_error = NULL; const GValue *value = NULL; const char *response = NULL; value = dex_future_get_value (future, &local_error); response = value != NULL ? g_value_get_string (value) : NULL; if (g_strcmp0 (response, "select") == 0) { g_autoptr (GtkFileDialog) icon_dialog = NULL; g_autoptr (GtkFileFilter) filter = NULL; g_autoptr (GListStore) filters = NULL; icon_dialog = gtk_file_dialog_new (); gtk_file_dialog_set_title (icon_dialog, _ ("Select Icon")); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _ ("Image Files")); gtk_file_filter_add_pattern (filter, "*.png"); gtk_file_filter_add_pattern (filter, "*.svg"); gtk_file_filter_add_pattern (filter, "*.jpg"); gtk_file_filter_add_pattern (filter, "*.jpeg"); filters = g_list_store_new (GTK_TYPE_FILE_FILTER); g_list_store_append (filters, filter); gtk_file_dialog_set_filters (icon_dialog, G_LIST_MODEL (filters)); gtk_file_dialog_open ( icon_dialog, data->parent_window, NULL, (GAsyncReadyCallback) on_icon_chosen, open_metainfo_data_ref (data)); } else { BzMetainfoPickResult *pick = NULL; pick = g_new0 (BzMetainfoPickResult, 1); pick->metainfo_file = g_object_ref (data->metainfo_file); pick->icon_file = NULL; dex_promise_resolve_boxed ( data->promise, bz_metainfo_pick_result_get_type (), g_steal_pointer (&pick)); } return dex_future_new_true (); } static void on_icon_chosen (GtkFileDialog *dialog, GAsyncResult *result, OpenMetainfoData *data) { g_autoptr (OpenMetainfoData) owned_data = data; g_autoptr (GFile) icon_file = NULL; BzMetainfoPickResult *pick = NULL; icon_file = gtk_file_dialog_open_finish (dialog, result, NULL); pick = g_new0 (BzMetainfoPickResult, 1); pick->metainfo_file = g_object_ref (owned_data->metainfo_file); pick->icon_file = g_steal_pointer (&icon_file); dex_promise_resolve_boxed ( owned_data->promise, bz_metainfo_pick_result_get_type (), g_steal_pointer (&pick)); } static void append_quality_apps (BzFlathubState *flathub, const char *category_name, guint count, GListStore *destination) { GListModel *categories = NULL; guint n_categories = 0; if (flathub == NULL) return; categories = bz_flathub_state_get_categories (flathub); n_categories = categories != NULL ? g_list_model_get_n_items (categories) : 0; for (guint i = 0; i < n_categories; i++) { g_autoptr (BzFlathubCategory) category = NULL; category = g_list_model_get_item (categories, i); if (g_strcmp0 (bz_flathub_category_get_name (category), category_name) == 0) { g_autoptr (GListModel) quality_apps = NULL; guint n_quality_apps = 0; guint n_pick = 0; guint offset = 0; quality_apps = bz_flathub_category_dup_quality_applications (category); n_quality_apps = quality_apps != NULL ? g_list_model_get_n_items (quality_apps) : 0; n_pick = MIN (count, n_quality_apps); if (n_quality_apps > 0) offset = g_random_int_range (0, n_quality_apps); for (guint j = 0; j < n_pick; j++) { g_autoptr (GObject) picked_obj = NULL; guint index = (offset + j) % n_quality_apps; picked_obj = g_list_model_get_item (quality_apps, index); if (BZ_IS_ENTRY_GROUP (picked_obj)) g_list_store_append (destination, BZ_ENTRY_GROUP (picked_obj)); } break; } } } AdwNavigationPage * create_entry_group_preview_page (BzEntryGroup *group) { g_autoptr (GtkBuilder) builder = NULL; AdwNavigationPage *page = NULL; BzFeaturedCarousel *carousel = NULL; GtkWidget *section_list = NULL; GtkWidget *rich_section_list = NULL; g_autoptr (GListStore) store = NULL; g_autoptr (GListStore) section_store = NULL; g_autoptr (GListStore) rich_section_store = NULL; BzStateInfo *state = NULL; BzFlathubState *flathub = NULL; builder = gtk_builder_new_from_resource ( "/io/github/kolunmi/Bazaar/bz-metainfo-preview-page.ui"); page = ADW_NAVIGATION_PAGE (gtk_builder_get_object (builder, "page")); carousel = BZ_FEATURED_CAROUSEL (gtk_builder_get_object (builder, "carousel")); section_list = GTK_WIDGET (gtk_builder_get_object (builder, "section_list")); rich_section_list = GTK_WIDGET (gtk_builder_get_object (builder, "rich_section_list")); state = bz_state_info_get_default (); flathub = bz_state_info_get_flathub (state); store = g_list_store_new (BZ_TYPE_ENTRY_GROUP); g_list_store_append (store, group); append_quality_apps (flathub, "utility", 4, store); bz_featured_carousel_set_model (carousel, G_LIST_MODEL (store)); section_store = g_list_store_new (BZ_TYPE_ENTRY_GROUP); append_quality_apps (flathub, "utility", 11, section_store); g_list_store_insert ( section_store, MIN (1, g_list_model_get_n_items (G_LIST_MODEL (section_store))), group); g_object_set (section_list, "model", G_LIST_MODEL (section_store), NULL); rich_section_store = g_list_store_new (BZ_TYPE_ENTRY_GROUP); append_quality_apps (flathub, "utility", 5, rich_section_store); g_list_store_insert ( rich_section_store, MIN (1, g_list_model_get_n_items (G_LIST_MODEL (rich_section_store))), group); g_object_set (rich_section_list, "model", G_LIST_MODEL (rich_section_store), NULL); g_object_ref (page); return page; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-metainfo-preview.h�������������������������������������������������0000664�0000000�0000000�00000002455�15240005042�0022176�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-metainfo-preview.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include <gio/gio.h> #include <gtk/gtk.h> #include <libdex.h> #include "bz-entry-group.h" G_BEGIN_DECLS typedef struct { GFile *metainfo_file; GFile *icon_file; } BzMetainfoPickResult; void bz_metainfo_pick_result_free (BzMetainfoPickResult *result); GType bz_metainfo_pick_result_get_type (void); DexFuture * bz_metainfo_preview_open_file (GFile *metainfo_file, GtkWindow *parent_window); AdwNavigationPage * create_entry_group_preview_page (BzEntryGroup *group); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-newline-parser.c���������������������������������������������������0000664�0000000�0000000�00000011250�15240005042�0021634�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-newline-parser.c * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::NEWLINE-TXT-PARSER" #include "config.h" #include "bz-hash-table-object.h" #include "bz-newline-parser.h" #include "bz-parser.h" struct _BzNewlineParser { GObject parent_instance; gboolean comments; guint max_lines; }; static void parser_iface_init (BzParserInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzNewlineParser, bz_newline_parser, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (BZ_TYPE_PARSER, parser_iface_init)) static void destroy_gvalue (GValue *value); static void bz_newline_parser_dispose (GObject *object) { BzNewlineParser *self = BZ_NEWLINE_PARSER (object); (void) self; G_OBJECT_CLASS (bz_newline_parser_parent_class)->dispose (object); } static void bz_newline_parser_class_init (BzNewlineParserClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_newline_parser_dispose; } static void bz_newline_parser_init (BzNewlineParser *self) { } static GHashTable * bz_newline_parser_real_process_bytes (BzParser *iface_self, GBytes *bytes, GError **error) { BzNewlineParser *self = BZ_NEWLINE_PARSER (iface_self); gsize size = 0; const guchar *data = NULL; g_autofree char *contents = NULL; g_autoptr (GHashTable) set = NULL; guint n_ids = 0; char *beg = NULL; char *end = NULL; g_autoptr (BzHashTableObject) obj = NULL; GValue *value = NULL; g_autoptr (GHashTable) ret = NULL; g_return_val_if_fail (BZ_IS_NEWLINE_PARSER (self), NULL); g_return_val_if_fail (bytes != NULL, NULL); data = g_bytes_get_data (bytes, &size); contents = g_memdup2 (data, size + 1); contents[size] = '\0'; set = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); for (beg = contents, end = g_utf8_strchr (beg, -1, '\n'); beg != NULL && *beg != '\0'; beg = end + 1, end = g_utf8_strchr (beg, -1, '\n')) { g_autofree char *line = NULL; if (end == NULL) g_warning ("Data has no terminating newline"); if ((self->comments && g_str_has_prefix (beg, "#")) || (end != NULL && end - beg <= 1) || (end == NULL && *beg == '\0')) { if (end != NULL) continue; else break; } if (end != NULL) line = g_strndup (beg, end - beg); else line = g_strdup (beg); if (g_hash_table_contains (set, line)) g_warning ("Duplicate line %s detected in data", line); else g_hash_table_replace (set, g_steal_pointer (&line), NULL); if (end == NULL) break; if (self->max_lines > 0 && ++n_ids > self->max_lines) { g_warning ("Data has a lot of lines, automatically " "truncating to %d", self->max_lines); break; } } obj = bz_hash_table_object_new (); bz_hash_table_object_set_hash_table (obj, set); value = g_new0 (typeof (*value), 1); g_value_init (value, G_TYPE_OBJECT); g_value_set_object (value, obj); ret = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) destroy_gvalue); g_hash_table_replace (ret, g_strdup ("/"), g_steal_pointer (&value)); return g_steal_pointer (&ret); } static void parser_iface_init (BzParserInterface *iface) { iface->process_bytes = bz_newline_parser_real_process_bytes; } BzNewlineParser * bz_newline_parser_new (gboolean comments, guint max_lines) { BzNewlineParser *parser = NULL; parser = g_object_new (BZ_TYPE_NEWLINE_PARSER, NULL); parser->comments = comments; parser->max_lines = max_lines; return parser; } static void destroy_gvalue (GValue *value) { g_value_unset (value); g_free (value); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-newline-parser.h���������������������������������������������������0000664�0000000�0000000�00000002060�15240005042�0021640�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-newline-parser.h * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gio/gio.h> G_BEGIN_DECLS #define BZ_TYPE_NEWLINE_PARSER (bz_newline_parser_get_type ()) G_DECLARE_FINAL_TYPE (BzNewlineParser, bz_newline_parser, BZ, NEWLINE_PARSER, GObject) BzNewlineParser * bz_newline_parser_new (gboolean comments, guint max_lines); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-parser.c�����������������������������������������������������������0000664�0000000�0000000�00000002665�15240005042�0020207�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-parser.c * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-parser.h" G_DEFINE_INTERFACE (BzParser, bz_parser, G_TYPE_OBJECT) static GHashTable * bz_parser_real_process_bytes (BzParser *self, GBytes *bytes, GError **error) { return NULL; } static void bz_parser_default_init (BzParserInterface *iface) { iface->process_bytes = bz_parser_real_process_bytes; } GHashTable * bz_parser_process_bytes (BzParser *self, GBytes *bytes, GError **error) { g_return_val_if_fail (BZ_IS_PARSER (self), NULL); g_return_val_if_fail (bytes != NULL, NULL); return BZ_PARSER_GET_IFACE (self)->process_bytes ( self, bytes, error); } ���������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-parser.h�����������������������������������������������������������0000664�0000000�0000000�00000002372�15240005042�0020207�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-parser.h * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib-object.h> G_BEGIN_DECLS #define BZ_TYPE_PARSER (bz_parser_get_type ()) G_DECLARE_INTERFACE (BzParser, bz_parser, BZ, PARSER, GObject) struct _BzParserInterface { GTypeInterface parent_iface; GHashTable *(*process_bytes) (BzParser *self, GBytes *bytes, GError **error); }; GHashTable * bz_parser_process_bytes (BzParser *self, GBytes *bytes, GError **error); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-preferences-dialog.blp���������������������������������������������0000664�0000000�0000000�00000007324�15240005042�0023001�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzPreferencesDialog: Adw.PreferencesDialog { content-height: 500; search-enabled: true; width-request: 350; height-request: 100; Adw.Breakpoint { condition ("max-width: 625sp") setters { flag_buttons_box.max-children-per-line: 6; } } Adw.PreferencesPage { title: _("Preferences"); use-underline: true; banner: Adw.Banner { sensitive: bind $invert_boolean(template.state as <$BzStateInfo>.syncing as <bool>) as <bool>; revealed: bind template.state as <$BzStateInfo>.metered_connection as <bool>; title: _("Network connection is metered — automatic store data refresh is paused"); button-label: _("Refresh Manually"); action-name: "app.sync-remotes"; }; Adw.PreferencesGroup auto_updates_group { title: _("App Updates"); visible: bind try {$logical_or($invert_boolean(template.state as <$BzStateInfo>.main-config as <$BzMainConfig>.hide-auto-update-options) as <bool>, automatic_updates_check.active), true}; description: _ ("Auto-updates will pause on metered networks or when power saving is on to save data and battery."); Adw.ActionRow automatic_updates_row { title: _("_Automatic"); subtitle: _("Automatically check for and download app updates"); use-underline: true; activatable-widget: automatic_updates_check; [prefix] CheckButton automatic_updates_check { valign: center; toggled => $auto_updates_toggled_cb(); } } Adw.ActionRow manual_updates_row { title: _("_Manual"); subtitle: _("Checking for and downloading app updates must be done manually"); use-underline: true; activatable-widget: manual_updates_check; [prefix] CheckButton manual_updates_check { valign: center; active: bind automatic_updates_check.active inverted; group: automatic_updates_check; toggled => $auto_updates_toggled_cb(); } } } Adw.PreferencesGroup { visible: bind auto_updates_group.visible; Adw.SwitchRow auto_notif_switch { use-underline: true; title: _("Automatic Update _Notifications"); subtitle: _("Notify when updates have been automatically installed"); } } Adw.PreferencesGroup { title: _("Content Filters"); Adw.SwitchRow only_foss_switch { title: _("_Free Software Only"); subtitle: _("Hide proprietary apps when browsing and searching"); use-underline: true; } Adw.SwitchRow only_flathub_switch { title: _("F_lathub Results Only"); subtitle: _("Limit search and browse results to apps only available on Flathub"); use-underline: true; } Adw.SwitchRow only_verified_switch { title: _("_Verified Results Only"); subtitle: _("Hide results that are not verified on Flathub"); use-underline: true; } Adw.SwitchRow hide_eol_switch { title: _("Hide _End-of-Life Apps"); subtitle: _("Hide apps which are no longer supported by their developers"); use-underline: true; } } Adw.PreferencesGroup { title: _("Progress Bar Theme"); Adw.ActionRow { child: Box { margin-top: 6; margin-bottom: 6; halign: center; FlowBox flag_buttons_box { styles [ "accent-button-box", ] orientation: horizontal; column-spacing: 4; row-spacing: 4; halign: center; homogeneous: true; max-children-per-line: 11; selection-mode: none; } }; } } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-preferences-dialog.c�����������������������������������������������0000664�0000000�0000000�00000034375�15240005042�0022454�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-preferences-dialog.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-preferences-dialog.h" #include <gio/gio.h> #include <glib/gi18n.h> #include <libdex.h> #include "env.h" #include "template-callbacks.h" #include "util.h" #define AUTOSTART_DESKTOP_FILE_NAME "bazaar.desktop" #define AUTOSTART_DESKTOP_RESOURCE_PATH "/io/github/kolunmi/Bazaar/bazaar.desktop" typedef struct { const char *id; const char *style_class; const char *tooltip; } BarTheme; static const BarTheme bar_themes[] = { { "accent-color", "accent-color-theme", N_ ("Accent Color") }, { "pride-rainbow-flag", "pride-rainbow-flag-theme", N_ ("Pride Colors") }, { "lesbian-pride-flag", "lesbian-pride-flag-theme", N_ ("Lesbian Pride Colors") }, { "gay-pride-flag", "gay-pride-flag-theme", N_ ("Male Homosexual Pride Colors") }, { "transgender-flag", "transgender-flag-theme", N_ ("Transgender Pride Colors") }, { "nonbinary-flag", "nonbinary-flag-theme", N_ ("Nonbinary Pride Colors") }, { "bisexual-flag", "bisexual-flag-theme", N_ ("Bisexual Pride Colors") }, { "asexual-flag", "asexual-flag-theme", N_ ("Asexual Pride Colors") }, { "pansexual-flag", "pansexual-flag-theme", N_ ("Pansexual Pride Colors") }, { "aromantic-flag", "aromantic-flag-theme", N_ ("Aromantic Pride Colors") }, { "genderfluid-flag", "genderfluid-flag-theme", N_ ("Genderfluid Pride Colors") }, { "polysexual-flag", "polysexual-flag-theme", N_ ("Polysexual Pride Colors") }, { "omnisexual-flag", "omnisexual-flag-theme", N_ ("Omnisexual Pride Colors") }, { "aroace-flag", "aroace-flag-theme", N_ ("Aroace Pride Colors") }, { "agender-flag", "agender-flag-theme", N_ ("Agender Pride Colors") }, { "genderqueer-flag", "genderqueer-flag-theme", N_ ("Genderqueer Pride Colors") }, { "intersex-flag", "intersex-flag-theme", N_ ("Intersex Pride Colors") }, { "demigender-flag", "demigender-flag-theme", N_ ("Demigender Pride Colors") }, { "biromantic-flag", "biromantic-flag-theme", N_ ("Biromantic Pride Colors") }, { "disability-flag", "disability-flag-theme", N_ ("Disability Pride Colors") }, { "femboy-flag", "femboy-flag-theme", N_ ("Femboy Pride Colors") }, { "neutrois-flag", "neutrois-flag-theme", N_ ("Neutrois Pride Colors") }, }; struct _BzPreferencesDialog { AdwPreferencesDialog parent_instance; BzStateInfo *state; GSettings *settings; /* Template widgets */ GtkCheckButton *automatic_updates_check; AdwSwitchRow *auto_notif_switch; AdwSwitchRow *only_foss_switch; AdwSwitchRow *only_flathub_switch; AdwSwitchRow *only_verified_switch; GtkFlowBox *flag_buttons_box; AdwSwitchRow *hide_eol_switch; GtkToggleButton *flag_buttons[G_N_ELEMENTS (bar_themes)]; }; G_DEFINE_FINAL_TYPE (BzPreferencesDialog, bz_preferences_dialog, ADW_TYPE_PREFERENCES_DIALOG) enum { PROP_0, PROP_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bind_settings (BzPreferencesDialog *self); static void create_flag_buttons (BzPreferencesDialog *self); static void request_autostart (gboolean enable); static DexFuture * request_autostart_fiber (gpointer user_data); static void bz_preferences_dialog_dispose (GObject *object) { BzPreferencesDialog *self = BZ_PREFERENCES_DIALOG (object); g_clear_object (&self->state); g_clear_object (&self->settings); G_OBJECT_CLASS (bz_preferences_dialog_parent_class)->dispose (object); } static void flag_button_toggled (GtkToggleButton *button, BzPreferencesDialog *self) { const char *theme_id = NULL; if (!gtk_toggle_button_get_active (button)) return; theme_id = g_object_get_data (G_OBJECT (button), "theme-id"); if (theme_id != NULL) { g_settings_set_string (self->settings, "global-progress-bar-theme", theme_id); } } static void global_progress_theme_settings_changed (BzPreferencesDialog *self, const char *key, GSettings *settings) { const char *theme = NULL; theme = g_settings_get_string (self->settings, "global-progress-bar-theme"); for (guint i = 0; i < G_N_ELEMENTS (bar_themes); i++) { if (g_strcmp0 (theme, bar_themes[i].id) == 0) { gtk_toggle_button_set_active (self->flag_buttons[i], TRUE); break; } } } static void create_flag_buttons (BzPreferencesDialog *self) { GtkToggleButton *first_button = NULL; for (guint i = 0; i < G_N_ELEMENTS (bar_themes); i++) { GtkToggleButton *button = NULL; button = GTK_TOGGLE_BUTTON (gtk_toggle_button_new ()); gtk_widget_set_tooltip_text (GTK_WIDGET (button), Q_ (bar_themes[i].tooltip)); gtk_widget_add_css_class (GTK_WIDGET (button), "accent-button"); gtk_widget_add_css_class (GTK_WIDGET (button), bar_themes[i].style_class); g_object_set_data_full (G_OBJECT (button), "theme-id", g_strdup (bar_themes[i].id), g_free); if (i == 0) { first_button = button; } else { gtk_toggle_button_set_group (button, first_button); } g_signal_connect (button, "toggled", G_CALLBACK (flag_button_toggled), self); self->flag_buttons[i] = button; gtk_flow_box_append (self->flag_buttons_box, GTK_WIDGET (button)); } } static void bind_settings (BzPreferencesDialog *self) { if (self->settings == NULL) return; /* Bind all boolean settings to their respective switches */ g_settings_bind (self->settings, "show-only-foss", self->only_foss_switch, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (self->settings, "show-only-flathub", self->only_flathub_switch, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (self->settings, "show-only-verified", self->only_verified_switch, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (self->settings, "hide-eol", self->hide_eol_switch, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (self->settings, "auto-update", self->automatic_updates_check, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (self->settings, "auto-update-notifications", self->auto_notif_switch, "active", G_SETTINGS_BIND_DEFAULT); g_signal_connect_object ( self->settings, "changed::global-progress-bar-theme", G_CALLBACK (global_progress_theme_settings_changed), self, G_CONNECT_SWAPPED); global_progress_theme_settings_changed (self, "global-progress-bar-theme", self->settings); } static void bz_preferences_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzPreferencesDialog *self = BZ_PREFERENCES_DIALOG (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, self->state); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_preferences_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_STATE: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static DexFuture * request_autostart_fiber (gpointer user_data) { gboolean enable = GPOINTER_TO_INT (user_data); #ifdef SANDBOXED_LIBFLATPAK g_autoptr (GDBusConnection) bus = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (GVariant) reply = NULL; g_autofree char *token = NULL; GVariant *options = NULL; static guint request_count = 0; bus = dex_await_object (dex_bus_get (G_BUS_TYPE_SESSION), &local_error); if (bus == NULL) { g_warning ("Could not connect to session bus: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } token = g_strdup_printf ("bazaar_autostart_%u", request_count++); options = g_variant_new_parsed ( "{'handle_token': <%s>, 'reason': <%s>, " "'autostart': <%b>, 'dbus-activatable': <false>, " "'commandline': <['bazaar-daemon', '--no-window']>}", token, _ ("Bazaar needs to run in the background to check for app updates"), enable); reply = dex_await_variant ( dex_dbus_connection_call ( bus, "org.freedesktop.portal.Desktop", "/org/freedesktop/portal/desktop", "org.freedesktop.portal.Background", "RequestBackground", g_variant_new ("(s@a{sv})", "", options), NULL, G_DBUS_CALL_FLAGS_NONE, -1), &local_error); if (reply == NULL) { g_warning ("Failed to call RequestBackground: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } return dex_future_new_true (); #else g_autoptr (GError) local_error = NULL; g_autofree char *autostart_dir = NULL; g_autofree char *dest_path = NULL; g_autoptr (GFile) dir = NULL; g_autoptr (GFile) dst = NULL; autostart_dir = g_build_filename (g_get_user_config_dir (), "autostart", NULL); dest_path = g_build_filename (autostart_dir, AUTOSTART_DESKTOP_FILE_NAME, NULL); dir = g_file_new_for_path (autostart_dir); dst = g_file_new_for_path (dest_path); if (!dex_await (dex_file_make_directory_with_parents (dir), &local_error) && !g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS)) { g_warning ("Could not create autostart dir: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } g_clear_error (&local_error); if (enable) { g_autoptr (GFile) src = NULL; src = g_file_new_for_uri ("resource://" AUTOSTART_DESKTOP_RESOURCE_PATH); if (!dex_await (dex_file_copy (src, dst, G_FILE_COPY_OVERWRITE, G_PRIORITY_DEFAULT), &local_error)) { g_warning ("Failed to install autostart file: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } } else { if (!dex_await (dex_file_delete (dst, G_PRIORITY_DEFAULT), &local_error) && !g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) { g_warning ("Failed to remove autostart file: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } } return dex_future_new_true (); #endif } static void request_autostart (gboolean enable) { dex_future_disown ( dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), request_autostart_fiber, GINT_TO_POINTER (enable), NULL)); } static void auto_updates_toggled_cb (GtkCheckButton *button, BzPreferencesDialog *self) { request_autostart (gtk_check_button_get_active (self->automatic_updates_check)); } static void bz_preferences_dialog_class_init (BzPreferencesDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_preferences_dialog_set_property; object_class->get_property = bz_preferences_dialog_get_property; object_class->dispose = bz_preferences_dialog_dispose; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-preferences-dialog.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzPreferencesDialog, only_foss_switch); gtk_widget_class_bind_template_child (widget_class, BzPreferencesDialog, only_flathub_switch); gtk_widget_class_bind_template_child (widget_class, BzPreferencesDialog, only_verified_switch); gtk_widget_class_bind_template_child (widget_class, BzPreferencesDialog, flag_buttons_box); gtk_widget_class_bind_template_child (widget_class, BzPreferencesDialog, hide_eol_switch); gtk_widget_class_bind_template_child (widget_class, BzPreferencesDialog, automatic_updates_check); gtk_widget_class_bind_template_child (widget_class, BzPreferencesDialog, auto_notif_switch); gtk_widget_class_bind_template_callback (widget_class, auto_updates_toggled_cb); } static void bz_preferences_dialog_init (BzPreferencesDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); create_flag_buttons (self); } AdwDialog * bz_preferences_dialog_new (BzStateInfo *state) { BzPreferencesDialog *dialog = NULL; g_return_val_if_fail (BZ_IS_STATE_INFO (state), NULL); dialog = g_object_new (BZ_TYPE_PREFERENCES_DIALOG, NULL); dialog->state = g_object_ref (state); g_object_get (state, "settings", &dialog->settings, NULL); bind_settings (dialog); g_object_notify_by_pspec (G_OBJECT (dialog), props[PROP_STATE]); return ADW_DIALOG (dialog); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-preferences-dialog.h�����������������������������������������������0000664�0000000�0000000�00000002115�15240005042�0022444�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-preferences-dialog.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_PREFERENCES_DIALOG (bz_preferences_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzPreferencesDialog, bz_preferences_dialog, BZ, PREFERENCES_DIALOG, AdwPreferencesDialog) AdwDialog * bz_preferences_dialog_new (BzStateInfo *state); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-pride-flag-config.txt����������������������������������������������0000664�0000000�0000000�00000000340�15240005042�0022551�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=pride_flag_config parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-pride-flag-spec.h" ensure=BZ_TYPE_PRIDE_FLAG_SPEC property=flag_specs GListModel G_TYPE_LIST_MODEL object ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-pride-flag-spec.txt������������������������������������������������0000664�0000000�0000000�00000000631�15240005042�0022241�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=pride_flag_spec parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-pride-flag-stripe-spec.h" ensure=BZ_TYPE_PRIDE_FLAG_STRIPE_SPEC property=id char G_TYPE_STRING string property=name char G_TYPE_STRING string property=homogeneous gboolean G_TYPE_BOOLEAN boolean property=direction char G_TYPE_STRING string property=stripes GListModel G_TYPE_LIST_MODEL object �������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-pride-flag-stripe-spec.txt�����������������������������������������0000664�0000000�0000000�00000000300�15240005042�0023536�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=pride_flag_stripe_spec parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> property=rgba char G_TYPE_STRING string property=size double G_TYPE_DOUBLE double ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-progress-bar.blp���������������������������������������������������0000664�0000000�0000000�00000000137�15240005042�0021644�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzProgressBar: Adw.Bin { child: ProgressBar bar {}; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-progress-bar.c�����������������������������������������������������0000664�0000000�0000000�00000011654�15240005042�0021317�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-progress-bar.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-progress-bar.h" struct _BzProgressBar { AdwBin parent_instance; double fraction; AdwAnimation *animation; /* Template widgets */ GtkProgressBar *bar; }; G_DEFINE_FINAL_TYPE (BzProgressBar, bz_progress_bar, ADW_TYPE_BIN) enum { PROP_0, PROP_FRACTION, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_progress_bar_dispose (GObject *object) { BzProgressBar *self = BZ_PROGRESS_BAR (object); g_clear_object (&self->animation); G_OBJECT_CLASS (bz_progress_bar_parent_class)->dispose (object); } static void bz_progress_bar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzProgressBar *self = BZ_PROGRESS_BAR (object); switch (prop_id) { case PROP_FRACTION: g_value_set_double (value, bz_progress_bar_get_fraction (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_progress_bar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzProgressBar *self = BZ_PROGRESS_BAR (object); switch (prop_id) { case PROP_FRACTION: bz_progress_bar_set_fraction (self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_progress_bar_class_init (BzProgressBarClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_progress_bar_dispose; object_class->get_property = bz_progress_bar_get_property; object_class->set_property = bz_progress_bar_set_property; props[PROP_FRACTION] = g_param_spec_double ( "fraction", NULL, NULL, 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-progress-bar.ui"); gtk_widget_class_bind_template_child (widget_class, BzProgressBar, bar); } static void bz_progress_bar_init (BzProgressBar *self) { AdwAnimationTarget *target = NULL; AdwSpringParams *spring = NULL; gtk_widget_init_template (GTK_WIDGET (self)); target = adw_property_animation_target_new (G_OBJECT (self->bar), "fraction"); spring = adw_spring_params_new (1.0, 0.5, 200.0); self->animation = adw_spring_animation_new ( GTK_WIDGET (self), 0.0, 0.0, spring, target); adw_spring_animation_set_epsilon ( ADW_SPRING_ANIMATION (self->animation), 0.00025); } GtkWidget * bz_progress_bar_new (void) { return g_object_new (BZ_TYPE_PROGRESS_BAR, NULL); } void bz_progress_bar_set_fraction (BzProgressBar *self, double fraction) { double last = 0.0; double current = 0.0; g_return_if_fail (BZ_IS_PROGRESS_BAR (self)); last = self->fraction; self->fraction = CLAMP (fraction, 0.0, 1.0); current = gtk_progress_bar_get_fraction (self->bar); if (self->fraction < last || G_APPROX_VALUE (last, self->fraction, 0.001)) { adw_animation_reset (self->animation); gtk_progress_bar_set_fraction (self->bar, self->fraction); } else { adw_spring_animation_set_value_from ( ADW_SPRING_ANIMATION (self->animation), current); adw_spring_animation_set_value_to ( ADW_SPRING_ANIMATION (self->animation), self->fraction); adw_spring_animation_set_initial_velocity ( ADW_SPRING_ANIMATION (self->animation), adw_spring_animation_get_velocity ( ADW_SPRING_ANIMATION (self->animation))); adw_animation_play (self->animation); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FRACTION]); } double bz_progress_bar_get_fraction (BzProgressBar *self) { g_return_val_if_fail (BZ_IS_PROGRESS_BAR (self), 0.0); return self->fraction; } ������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-progress-bar.h�����������������������������������������������������0000664�0000000�0000000�00000002230�15240005042�0021312�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-progress-bar.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_PROGRESS_BAR (bz_progress_bar_get_type ()) G_DECLARE_FINAL_TYPE (BzProgressBar, bz_progress_bar, BZ, PROGRESS_BAR, AdwBin) GtkWidget * bz_progress_bar_new (void); void bz_progress_bar_set_fraction (BzProgressBar *self, double fraction); double bz_progress_bar_get_fraction (BzProgressBar *self); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-release.txt��������������������������������������������������������0000664�0000000�0000000�00000000420�15240005042�0020713�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=release parent-prefix=g parent-name=object author=AUTOGEN include=<gio/gio.h> property=description char G_TYPE_STRING string property=timestamp guint64 G_TYPE_UINT64 uint64 property=url char G_TYPE_STRING string property=version char G_TYPE_STRING string ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-releases-dialog.blp������������������������������������������������0000664�0000000�0000000�00000001303�15240005042�0022272�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzReleasesDialog: Adw.Dialog { title: _("Version History"); content-width: 550; content-height: 600; child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: true; } content: ScrolledWindow { propagate-natural-height: true; vexpand: true; hscrollbar-policy: never; child: Adw.Clamp { maximum-size: 500; tightening-threshold: 600; margin-top: 24; margin-bottom: 24; margin-start: 12; margin-end: 12; child: ListBox releases_box { styles ["boxed-list"] valign: start; selection-mode: none; }; }; }; }; }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-releases-list.blp��������������������������������������������������0000664�0000000�0000000�00000001121�15240005042�0022004�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzReleasesList: Adw.Bin { visible: false; child: Box { orientation: vertical; spacing: 12; ListBox preview_box { styles [ "boxed-list", ] selection-mode: none; valign: start; } ListBox show_all_box { visible: false; styles [ "boxed-list", ] selection-mode: none; Adw.ButtonRow { title: _("_Version History"); use-underline: true; activated => $show_all_releases_cb(); end-icon-name: "go-next-symbolic"; } } }; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-releases-list.c����������������������������������������������������0000664�0000000�0000000�00000043636�15240005042�0021472�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-releases-list.c * * Copyright 2025 Alexander Vanhee, Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-appstream-description-render.h" #include "bz-fading-clamp.h" #include "bz-release.h" #include "bz-releases-list.h" #include "template-callbacks.h" /* Dialog structure */ typedef struct { /* Template widgets */ AdwDialog parent_instance; GtkListBox *releases_box; GListModel *installed_versions; } BzReleasesDialog; typedef struct { AdwDialogClass parent_class; } BzReleasesDialogClass; static GType bz_releases_dialog_get_type (void) G_GNUC_CONST; G_DEFINE_TYPE (BzReleasesDialog, bz_releases_dialog, ADW_TYPE_DIALOG) /* Main widget structure */ struct _BzReleasesList { AdwBin parent_instance; GListModel *version_history; GListModel *installed_versions; /* Template widgets */ GtkListBox *preview_box; GtkBox *show_all_box; }; G_DEFINE_FINAL_TYPE (BzReleasesList, bz_releases_list, ADW_TYPE_BIN) enum { PROP_0, PROP_VERSION_HISTORY, PROP_INSTALLED_VERSIONS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static gboolean is_version_installed (GListModel *installed_versions, const char *version) { guint n_items = 0; if (!installed_versions || !version) return FALSE; n_items = g_list_model_get_n_items (installed_versions); for (guint i = 0; i < n_items; i++) { g_autoptr (GObject) item = NULL; item = g_list_model_get_item (installed_versions, i); if (GTK_IS_STRING_OBJECT (item)) { const char *installed_version = NULL; installed_version = gtk_string_object_get_string (GTK_STRING_OBJECT (item)); if (installed_version != NULL && g_strcmp0 (installed_version, version) == 0) return TRUE; } } return FALSE; } // From gs-common.c static char * format_timestamp (guint64 unix_time) { g_autoptr (GDateTime) then = NULL; g_autoptr (GDateTime) now = NULL; gint days, weeks, months, years; if (unix_time == 0) return NULL; then = g_date_time_new_from_unix_utc (unix_time); now = g_date_time_new_now_local (); if (then == NULL || now == NULL) return NULL; days = (gint) (g_date_time_difference (now, then) / G_TIME_SPAN_DAY); weeks = days / 7; months = days / 30; years = weeks / 52; if (days < 1) /* Translators: something happened less than a day ago */ return g_strdup (_ ("Today")); else if (days < 2) /* Translators: something happened more than a day ago but less than 2 days ago */ return g_strdup (_ ("Yesterday")); else if (days < 15) /* Translators: something happened days ago */ return g_strdup_printf (ngettext ("%d day ago", "%d days ago", days), days); else if (weeks < 8) /* Translators: something happened weeks ago */ return g_strdup_printf (ngettext ("%d week ago", "%d weeks ago", weeks), weeks); else if (years < 1) /* Translators: something happened months ago */ return g_strdup_printf (ngettext ("%d month ago", "%d months ago", months), months); else /* Translators: something happened years ago */ return g_strdup_printf (ngettext ("%d year ago", "%d years ago", years), years); } static char * format_timestamp_tooltip (guint64 unix_time) { g_autoptr (GDateTime) then = NULL; if (unix_time == 0) return NULL; then = g_date_time_new_from_unix_utc (unix_time); if (then == NULL) return NULL; /* TRANSLATORS: This is the date string with: day number, month name, year. i.e. "22 March 2026" */ return g_date_time_format (then, _ ("%e %B %Y")); } static GtkWidget * create_release_row (const char *version, const char *description, guint64 timestamp, const char *url, gboolean use_clamp, GListModel *installed_versions) { AdwActionRow *row = NULL; GtkBox *content_box = NULL; GtkBox *header_box = NULL; GtkLabel *version_label = NULL; GtkLabel *date_label = NULL; GtkLabel *installed_label = NULL; BzAppstreamDescriptionRender *description_widget = NULL; BzFadingClamp *fading_clamp = NULL; GtkBox *more_info_box = NULL; GtkLabel *more_info_label = NULL; GtkImage *more_info_icon = NULL; g_autofree char *date_str = NULL; g_autofree char *date_tooltip = NULL; g_autofree char *version_text = NULL; g_autofree char *markup = NULL; date_str = format_timestamp (timestamp); row = ADW_ACTION_ROW (adw_action_row_new ()); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE); content_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 3)); gtk_widget_set_margin_top (GTK_WIDGET (content_box), 15); gtk_widget_set_margin_bottom (GTK_WIDGET (content_box), 15); gtk_widget_set_margin_start (GTK_WIDGET (content_box), 15); gtk_widget_set_margin_end (GTK_WIDGET (content_box), 15); header_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8)); gtk_widget_set_size_request (GTK_WIDGET (header_box), -1, 24); version_text = g_strdup_printf (_ ("Version %s"), version); version_label = GTK_LABEL (gtk_label_new (version_text)); gtk_widget_add_css_class (GTK_WIDGET (version_label), "accent"); gtk_widget_add_css_class (GTK_WIDGET (version_label), "heading"); gtk_label_set_ellipsize (version_label, PANGO_ELLIPSIZE_END); gtk_widget_set_halign (GTK_WIDGET (version_label), GTK_ALIGN_START); gtk_box_append (header_box, GTK_WIDGET (version_label)); if (is_version_installed (installed_versions, version)) { installed_label = GTK_LABEL (gtk_label_new (_ ("Installed"))); gtk_widget_add_css_class (GTK_WIDGET (installed_label), "lozenge"); gtk_widget_add_css_class (GTK_WIDGET (installed_label), "small"); gtk_widget_set_halign (GTK_WIDGET (installed_label), GTK_ALIGN_START); gtk_widget_set_hexpand (GTK_WIDGET (installed_label), TRUE); gtk_box_append (header_box, GTK_WIDGET (installed_label)); } else { gtk_widget_set_hexpand (GTK_WIDGET (version_label), TRUE); } date_label = GTK_LABEL (gtk_label_new (date_str ? date_str : "")); gtk_widget_add_css_class (GTK_WIDGET (date_label), "dim-label"); gtk_widget_set_halign (GTK_WIDGET (date_label), GTK_ALIGN_END); date_tooltip = format_timestamp_tooltip (timestamp); if (date_tooltip != NULL) gtk_widget_set_tooltip_text (GTK_WIDGET (date_label), date_tooltip); gtk_box_append (header_box, GTK_WIDGET (date_label)); gtk_box_append (content_box, GTK_WIDGET (header_box)); if (description != NULL && *description) { description_widget = bz_appstream_description_render_new (); bz_appstream_description_render_set_appstream_description (description_widget, description); if (use_clamp) { fading_clamp = BZ_FADING_CLAMP (bz_fading_clamp_new ()); bz_fading_clamp_set_max_height (fading_clamp, 270); bz_fading_clamp_set_child (fading_clamp, GTK_WIDGET (description_widget)); gtk_widget_set_margin_top (GTK_WIDGET (fading_clamp), 10); gtk_box_append (content_box, GTK_WIDGET (fading_clamp)); } else { gtk_widget_set_margin_top (GTK_WIDGET (description_widget), 10); gtk_box_append (content_box, GTK_WIDGET (description_widget)); } } else { GtkLabel *fallback_label = NULL; fallback_label = GTK_LABEL (gtk_label_new (_ ("No details for this release"))); gtk_widget_set_margin_top (GTK_WIDGET (fallback_label), 5); gtk_label_set_selectable (fallback_label, TRUE); gtk_widget_add_css_class (GTK_WIDGET (fallback_label), "dim-label"); gtk_label_set_xalign (fallback_label, 0.0); gtk_label_set_wrap (fallback_label, TRUE); gtk_box_append (content_box, GTK_WIDGET (fallback_label)); } if (!use_clamp && url && *url) { more_info_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4)); markup = g_markup_printf_escaped ("<a href=\"%s\" title=\"%s\">%s</a>", url, url, _ ("Get More Information")); more_info_label = GTK_LABEL (gtk_label_new (NULL)); gtk_label_set_markup (more_info_label, markup); gtk_widget_set_tooltip_text (GTK_WIDGET (more_info_label), url); gtk_box_append (more_info_box, GTK_WIDGET (more_info_label)); more_info_icon = GTK_IMAGE (gtk_image_new_from_icon_name ("external-link-symbolic")); gtk_image_set_pixel_size (more_info_icon, 12); gtk_widget_add_css_class (GTK_WIDGET (more_info_icon), "accent"); gtk_box_append (more_info_box, GTK_WIDGET (more_info_icon)); gtk_box_append (content_box, GTK_WIDGET (more_info_box)); } gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), GTK_WIDGET (content_box)); return GTK_WIDGET (row); } static void bz_releases_dialog_dispose (GObject *object) { BzReleasesDialog *self = (BzReleasesDialog *) object; g_clear_object (&self->installed_versions); G_OBJECT_CLASS (bz_releases_dialog_parent_class)->dispose (object); } static void bz_releases_dialog_class_init (BzReleasesDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_releases_dialog_dispose; gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-releases-dialog.ui"); gtk_widget_class_bind_template_child (widget_class, BzReleasesDialog, releases_box); } static void bz_releases_dialog_init (BzReleasesDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_releases_dialog_new (GListModel *version_history, GListModel *installed_versions) { BzReleasesDialog *dialog = NULL; guint n_items = 0; dialog = g_object_new (bz_releases_dialog_get_type (), NULL); if (installed_versions) dialog->installed_versions = g_object_ref (installed_versions); if (version_history == NULL) return GTK_WIDGET (dialog); n_items = g_list_model_get_n_items (version_history); for (guint i = 0; i < n_items; i++) { g_autoptr (BzRelease) release = NULL; const char *version = NULL; const char *description = NULL; const char *url = NULL; guint64 timestamp = 0; GtkWidget *row = NULL; release = g_list_model_get_item (version_history, i); if (release == NULL) continue; version = bz_release_get_version (release); description = bz_release_get_description (release); url = bz_release_get_url (release); timestamp = bz_release_get_timestamp (release); row = create_release_row (version, description, timestamp, url, FALSE, dialog->installed_versions); gtk_list_box_append (dialog->releases_box, row); } return GTK_WIDGET (dialog); } static void clear_preview_box (BzReleasesList *self) { GtkWidget *child = NULL; g_return_if_fail (BZ_IS_RELEASES_LIST (self)); while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->preview_box))) != NULL) { if (child == GTK_WIDGET (self->show_all_box)) break; gtk_list_box_remove (self->preview_box, child); } } static void populate_preview_box (BzReleasesList *self) { guint n_items = 0; g_return_if_fail (BZ_IS_RELEASES_LIST (self)); clear_preview_box (self); if (self->version_history == NULL) { gtk_widget_set_visible (GTK_WIDGET (self->show_all_box), FALSE); return; } n_items = g_list_model_get_n_items (self->version_history); if (n_items == 0) { gtk_widget_set_visible (GTK_WIDGET (self->show_all_box), FALSE); return; } if (n_items > 0) { g_autoptr (BzRelease) release = NULL; const char *version = NULL; const char *description = NULL; guint64 timestamp = 0; GtkWidget *row = NULL; release = g_list_model_get_item (self->version_history, 0); if (release != NULL) { version = bz_release_get_version (release); description = bz_release_get_description (release); timestamp = bz_release_get_timestamp (release); row = create_release_row (version, description, timestamp, NULL, TRUE, self->installed_versions); gtk_list_box_insert (self->preview_box, row, 0); } } gtk_widget_set_visible (GTK_WIDGET (self->show_all_box), n_items > 0); } static void show_all_releases_cb (AdwButtonRow *button, BzReleasesList *self) { GtkWidget *dialog = NULL; GtkRoot *root = NULL; g_return_if_fail (BZ_IS_RELEASES_LIST (self)); root = gtk_widget_get_root (GTK_WIDGET (self)); if (root == NULL) return; dialog = bz_releases_dialog_new (self->version_history, self->installed_versions); adw_dialog_present (ADW_DIALOG (dialog), GTK_WIDGET (root)); } static void bz_releases_list_dispose (GObject *object) { BzReleasesList *self = BZ_RELEASES_LIST (object); g_clear_object (&self->version_history); g_clear_object (&self->installed_versions); G_OBJECT_CLASS (bz_releases_list_parent_class)->dispose (object); } static void bz_releases_list_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzReleasesList *self = BZ_RELEASES_LIST (object); switch (prop_id) { case PROP_VERSION_HISTORY: g_value_set_object (value, self->version_history); break; case PROP_INSTALLED_VERSIONS: g_value_set_object (value, self->installed_versions); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_releases_list_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzReleasesList *self = BZ_RELEASES_LIST (object); switch (prop_id) { case PROP_VERSION_HISTORY: bz_releases_list_set_version_history (self, g_value_get_object (value)); break; case PROP_INSTALLED_VERSIONS: g_clear_object (&self->installed_versions); self->installed_versions = g_value_dup_object (value); populate_preview_box (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_releases_list_class_init (BzReleasesListClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_releases_list_dispose; object_class->get_property = bz_releases_list_get_property; object_class->set_property = bz_releases_list_set_property; props[PROP_VERSION_HISTORY] = g_param_spec_object ("version-history", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_INSTALLED_VERSIONS] = g_param_spec_object ("installed-versions", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_RELEASE); g_type_ensure (BZ_TYPE_APPSTREAM_DESCRIPTION_RENDER); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-releases-list.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzReleasesList, preview_box); gtk_widget_class_bind_template_child (widget_class, BzReleasesList, show_all_box); gtk_widget_class_bind_template_callback (widget_class, show_all_releases_cb); } static void bz_releases_list_init (BzReleasesList *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_releases_list_new (void) { return g_object_new (BZ_TYPE_RELEASES_LIST, NULL); } void bz_releases_list_set_version_history (BzReleasesList *self, GListModel *version_history) { g_return_if_fail (BZ_IS_RELEASES_LIST (self)); g_return_if_fail (version_history == NULL || G_IS_LIST_MODEL (version_history)); if (self->version_history == version_history) return; g_clear_object (&self->version_history); if (version_history != NULL) { self->version_history = g_object_ref (version_history); populate_preview_box (self); gtk_widget_set_visible (GTK_WIDGET (self), g_list_model_get_n_items (version_history) > 0); } else { clear_preview_box (self); gtk_widget_set_visible (GTK_WIDGET (self), FALSE); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_VERSION_HISTORY]); } GListModel * bz_releases_list_get_version_history (BzReleasesList *self) { g_return_val_if_fail (BZ_IS_RELEASES_LIST (self), NULL); return self->version_history; } ��������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-releases-list.h����������������������������������������������������0000664�0000000�0000000�00000002525�15240005042�0021467�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-releases-list.h * * Copyright 2025 Alexander Vanhee, Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_RELEASES_LIST (bz_releases_list_get_type ()) G_DECLARE_FINAL_TYPE (BzReleasesList, bz_releases_list, BZ, RELEASES_LIST, AdwBin) GtkWidget * bz_releases_list_new (void); GtkWidget * bz_releases_dialog_new (GListModel *version_history, GListModel *installed_versions); void bz_releases_list_set_version_history (BzReleasesList *self, GListModel *version_history); GListModel * bz_releases_list_get_version_history (BzReleasesList *self); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-repository.txt�����������������������������������������������������0000664�0000000�0000000�00000000366�15240005042�0021523�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=repository parent-prefix=g parent-name=object author=AUTOGEN property=is_user gboolean G_TYPE_BOOLEAN boolean property=title char G_TYPE_STRING string property=url char G_TYPE_STRING string property=name char G_TYPE_STRING string ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-result.c�����������������������������������������������������������0000664�0000000�0000000�00000016666�15240005042�0020237�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-result.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-result.h" struct _BzResult { GObject parent_instance; DexFuture *finally; GObject *object; GError *error; GTimer *timer; char *non_error_msg; }; G_DEFINE_FINAL_TYPE (BzResult, bz_result, G_TYPE_OBJECT); enum { PROP_0, PROP_PENDING, PROP_RESOLVED, PROP_REJECTED, PROP_OBJECT, PROP_MESSAGE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * future_finally (DexFuture *future, BzResult *self); static void bz_result_dispose (GObject *object) { BzResult *self = BZ_RESULT (object); dex_clear (&self->finally); g_clear_object (&self->object); g_clear_pointer (&self->error, g_error_free); g_clear_pointer (&self->timer, g_timer_destroy); g_clear_pointer (&self->non_error_msg, g_free); G_OBJECT_CLASS (bz_result_parent_class)->dispose (object); } static void bz_result_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzResult *self = BZ_RESULT (object); switch (prop_id) { case PROP_PENDING: g_value_set_boolean (value, bz_result_get_pending (self)); break; case PROP_RESOLVED: g_value_set_boolean (value, bz_result_get_resolved (self)); break; case PROP_REJECTED: g_value_set_boolean (value, bz_result_get_rejected (self)); break; case PROP_OBJECT: g_value_set_object (value, bz_result_get_object (self)); break; case PROP_MESSAGE: g_value_set_string (value, bz_result_get_message (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_result_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { // BzResult *self = BZ_RESULT (object); switch (prop_id) { case PROP_PENDING: case PROP_RESOLVED: case PROP_REJECTED: case PROP_OBJECT: case PROP_MESSAGE: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_result_class_init (BzResultClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_result_set_property; object_class->get_property = bz_result_get_property; object_class->dispose = bz_result_dispose; props[PROP_PENDING] = g_param_spec_boolean ( "pending", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_RESOLVED] = g_param_spec_boolean ( "resolved", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_REJECTED] = g_param_spec_boolean ( "rejected", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_OBJECT] = g_param_spec_object ( "object", NULL, NULL, G_TYPE_OBJECT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_MESSAGE] = g_param_spec_string ( "message", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_result_init (BzResult *self) { } BzResult * bz_result_new (DexFuture *future) { BzResult *self = NULL; DexFutureStatus status = DEX_FUTURE_STATUS_PENDING; g_return_val_if_fail (DEX_IS_FUTURE (future), NULL); self = g_object_new (BZ_TYPE_RESULT, NULL); status = dex_future_get_status (future); switch (status) { case DEX_FUTURE_STATUS_PENDING: self->timer = g_timer_new (); self->finally = dex_future_finally ( dex_ref (future), (DexFutureCallback) future_finally, g_object_ref (self), g_object_unref); break; case DEX_FUTURE_STATUS_RESOLVED: self->object = g_value_dup_object (dex_future_get_value (future, NULL)); self->non_error_msg = g_strdup ("Object was already successfully resolved"); break; case DEX_FUTURE_STATUS_REJECTED: { g_autoptr (GError) local_error = NULL; dex_future_get_value (future, &local_error); self->error = g_error_copy (local_error); } break; default: g_assert_not_reached (); } return self; } gboolean bz_result_get_pending (BzResult *self) { g_return_val_if_fail (BZ_IS_RESULT (self), FALSE); return self->finally != NULL; } gboolean bz_result_get_resolved (BzResult *self) { g_return_val_if_fail (BZ_IS_RESULT (self), FALSE); return self->object != NULL; } gboolean bz_result_get_rejected (BzResult *self) { g_return_val_if_fail (BZ_IS_RESULT (self), FALSE); return self->error != NULL; } gpointer bz_result_get_object (BzResult *self) { g_return_val_if_fail (BZ_IS_RESULT (self), NULL); return self->object; } const char * bz_result_get_message (BzResult *self) { g_return_val_if_fail (BZ_IS_RESULT (self), NULL); if (self->error != NULL) return self->error->message; else return self->non_error_msg; } DexFuture * bz_result_dup_future (BzResult *self) { g_return_val_if_fail (BZ_IS_RESULT (self), NULL); if (self->finally != NULL) return dex_ref (self->finally); else if (self->object != NULL) return dex_future_new_for_object (self->object); else if (self->error != NULL) return dex_future_new_for_error (g_error_copy (self->error)); else return NULL; } static DexFuture * future_finally (DexFuture *future, BzResult *self) { g_autoptr (GError) local_error = NULL; const GValue *value = NULL; dex_clear (&self->finally); g_timer_stop (self->timer); value = dex_future_get_value (future, &local_error); if (value != NULL) { self->object = g_value_dup_object (value); self->non_error_msg = g_strdup_printf ( "Successfully resolved object in %f seconds", g_timer_elapsed (self->timer, NULL)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_OBJECT]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MESSAGE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RESOLVED]); } else { self->error = g_error_copy (local_error); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MESSAGE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REJECTED]); } return dex_ref (future); } /* End of bz-result.c */ ��������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-result.h�����������������������������������������������������������0000664�0000000�0000000�00000002433�15240005042�0020227�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-result.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> G_BEGIN_DECLS #define BZ_TYPE_RESULT (bz_result_get_type ()) G_DECLARE_FINAL_TYPE (BzResult, bz_result, BZ, RESULT, GObject) BzResult * bz_result_new (DexFuture *future); gboolean bz_result_get_pending (BzResult *self); gboolean bz_result_get_resolved (BzResult *self); gboolean bz_result_get_rejected (BzResult *self); gpointer bz_result_get_object (BzResult *self); const char * bz_result_get_message (BzResult *self); DexFuture * bz_result_dup_future (BzResult *self); G_END_DECLS /* End of bz-result.h */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-rich-app-tile.blp��������������������������������������������������0000664�0000000�0000000�00000014263�15240005042�0021701�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzRichAppTile: $BzListTile { overflow: hidden; activated => $tile_clicked_cb(); accessibility { described-by: description; } child: Box { orientation: vertical; styles [ "rich-tile-card", ] $BzThemedEntryGroupRect picture_box { height-request: 200; styles [ "rich-screenshot-box", ] group: bind template.group as <$BzEntryGroup>; child: Box { margin-start: 12; margin-end: 12; margin-top: 12; margin-bottom: 12; Image { icon-name: "image-missing-symbolic"; pixel-size: 96; halign: center; valign: center; hexpand: true; visible: bind screenshot.visible inverted; } $BzRoundedPicture screenshot { halign: center; hexpand: true; valign: center; paintable: bind template.ui-entry as <$BzEntry>.thumbnail-paintable; radius: 6; visible: bind $invert_boolean($is_null(template.ui-entry as <$BzEntry>.thumbnail-paintable) as <bool>) as <bool>; } }; } Box { margin-start: 12; margin-end: 12; margin-top: 12; margin-bottom: 12; orientation: horizontal; spacing: 15; height-request: 64; $BzTransactIcon { valign: center; halign: center; width-request: 64; height-request: 64; info: $BzTransactIconInfo transact_icon_info { group: bind template.group as <$BzEntryGroup>; paintable: bind template.ui_entry as <$BzEntry>.icon-paintable; }; } Box { valign: center; hexpand: true; orientation: vertical; spacing: 5; Box { spacing: 6; Label title { css-name: "app-tile-title"; styles [ "heading", ] xalign: 0.0; ellipsize: end; label: bind template.group as <$BzEntryGroup>.title; max-width-chars: 18; } Image { styles [ "verified", ] visible: bind template.group as <$BzEntryGroup>.is-verified; icon-name: "verified-checkmark-symbolic"; pixel-size: 14; accessibility { label: _("Verified"); } } } Label description { visible: bind $is_null(template.group as <$BzEntryGroup>.eol) as <bool>; css-name: "app-tile-description"; xalign: 0.0; yalign: 0.0; wrap: true; wrap-mode: word_char; ellipsize: end; vexpand: true; lines: 2; max-width-chars: 15; single-line-mode: true; label: bind template.group as <$BzEntryGroup>.description; styles [ "dimmed", ] } Label { visible: bind $invert_boolean($is_null(template.group as <$BzEntryGroup>.eol) as <bool>) as <bool>; css-name: "app-tile-description"; xalign: 0.0; yalign: 0.0; wrap: true; wrap-mode: word_char; ellipsize: end; vexpand: true; lines: 2; max-width-chars: 15; single-line-mode: true; label: _("Stopped Receiving Updates"); styles [ "warning", ] } } Stack action_stack { transition-type: crossfade; valign: center; hhomogeneous: false; interpolate-size: true; visible-child-name: bind try { $get_visible_page( template.group as <$BzEntryGroup>.installable, template.group as <$BzEntryGroup>.removable, template.removable-at-start as <bool>, template.tracker as <$BzTransactionEntryTracker>, template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus> ) as <string>, $get_visible_page( template.group as <$BzEntryGroup>.installable, template.group as <$BzEntryGroup>.removable, template.removable-at-start as <bool>, null as <$BzTransactionEntryTracker>, null as <$BzTransactionEntryStatus> ) as <string> }; StackPage { name: "get"; child: Button get_button { sensitive: bind $invert_boolean( $is_zero(template.group as <$BzEntryGroup>.installable-and-available) as <bool> ) as <bool>; styles [ "medium-pill", ] valign: center; clicked => $install_button_clicked_cb(template); }; } StackPage { name: "open"; child: Button { sensitive: bind $invert_boolean( $is_zero(template.group as <$BzEntryGroup>.removable-and-available) as <bool> ) as <bool>; styles [ "medium-pill", ] // TRANSLATORS: Button to launch an installed app label: _("Open"); valign: center; clicked => $run_button_clicked_cb(template); }; } StackPage { name: "uninstall"; child: Button { sensitive: bind $invert_boolean( $is_zero(template.group as <$BzEntryGroup>.removable-and-available) as <bool> ) as <bool>; styles [ "circular", ] icon-name: "user-trash-symbolic"; has-tooltip: true; tooltip-text: _("Uninstall"); valign: center; clicked => $remove_button_clicked_cb(template); }; } StackPage { name: "cancel"; child: Button { styles [ "circular", ] icon-name: "cross-large-circle-filled-symbolic"; has-tooltip: true; tooltip-text: _("Cancel"); valign: center; clicked => $cancel_button_clicked_cb(template); }; } StackPage { name: "empty"; child: Box {}; } } } }; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-rich-app-tile.c����������������������������������������������������0000664�0000000�0000000�00000033774�15240005042�0021356�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-rich-app-tile.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-rich-app-tile.h" #include "bz-application.h" #include "bz-entry.h" #include "bz-rounded-picture.h" #include "bz-themed-entry-group-rect.h" #include "bz-transact-icon.h" #include "util.h" #include <glib/gi18n.h> struct _BzRichAppTile { BzListTile parent_instance; BzEntryGroup *group; BzEntry *ui_entry; DexFuture *ui_entry_resolve; gboolean removable_at_start; BzTransactionEntryTracker *tracker; GListModel *all_trackers; GtkWidget *picture_box; GtkWidget *get_button; BzTransactIconInfo *transact_icon_info; GtkWidget *action_stack; }; G_DEFINE_FINAL_TYPE (BzRichAppTile, bz_rich_app_tile, BZ_TYPE_LIST_TILE); enum { PROP_0, PROP_GROUP, PROP_UI_ENTRY, PROP_REMOVABLE_AT_START, PROP_TRACKER, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void update_ui_entry (BzRichAppTile *self); static void update_tracker (BzRichAppTile *self) { BzTransactionManager *manager = NULL; g_autoptr (GListModel) all = NULL; const char *group_id = NULL; g_autoptr (BzTransactionEntryTracker) found = NULL; manager = bz_state_info_get_transaction_manager (bz_state_info_get_default ()); if (manager != NULL) g_object_get (manager, "all-trackers", &all, NULL); if (self->group != NULL) group_id = bz_entry_group_get_id (self->group); if (all != NULL && group_id != NULL) { for (guint i = 0; i < g_list_model_get_n_items (all); i++) { g_autoptr (BzTransactionEntryTracker) tracker = NULL; BzEntry *entry = NULL; tracker = g_list_model_get_item (all, i); entry = bz_transaction_entry_tracker_get_entry (tracker); if (g_strcmp0 (entry != NULL ? bz_entry_get_id (entry) : NULL, group_id) == 0) { found = g_steal_pointer (&tracker); break; } } } if (g_set_object (&self->tracker, found)) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TRACKER]); } static void on_all_trackers_changed (GListModel *model, guint position, guint removed, guint added, BzRichAppTile *self) { update_tracker (self); } static DexFuture * ui_entry_resolved_finally (DexFuture *future, GWeakRef *wr) { g_autoptr (BzRichAppTile) self = NULL; const GValue *value = NULL; bz_weak_get_or_return_reject (self, wr); value = dex_future_get_value (future, NULL); if (value != NULL) { BzEntry *ui_entry = g_value_get_object (value); g_set_object (&self->ui_entry, ui_entry); } else { g_clear_object (&self->ui_entry); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UI_ENTRY]); return NULL; } static void update_ui_entry (BzRichAppTile *self) { g_autoptr (BzResult) ui_entry_result = NULL; dex_clear (&self->ui_entry_resolve); if (self->ui_entry != NULL) { g_clear_object (&self->ui_entry); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UI_ENTRY]); } ui_entry_result = bz_entry_group_dup_ui_entry (self->group); self->ui_entry_resolve = dex_future_finally ( bz_result_dup_future (ui_entry_result), (DexFutureCallback) ui_entry_resolved_finally, bz_track_weak (self), bz_weak_release); } static void bz_rich_app_tile_dispose (GObject *object) { BzRichAppTile *self = BZ_RICH_APP_TILE (object); if (self->all_trackers != NULL) { g_signal_handlers_disconnect_by_func (self->all_trackers, on_all_trackers_changed, self); g_clear_object (&self->all_trackers); } g_clear_object (&self->group); g_clear_object (&self->ui_entry); g_clear_object (&self->tracker); dex_clear (&self->ui_entry_resolve); G_OBJECT_CLASS (bz_rich_app_tile_parent_class)->dispose (object); } static void bz_rich_app_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzRichAppTile *self = BZ_RICH_APP_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_rich_app_tile_get_group (self)); break; case PROP_UI_ENTRY: g_value_set_object (value, self->ui_entry); break; case PROP_REMOVABLE_AT_START: g_value_set_boolean (value, self->removable_at_start); break; case PROP_TRACKER: g_value_set_object (value, self->tracker); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_rich_app_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzRichAppTile *self = BZ_RICH_APP_TILE (object); switch (prop_id) { case PROP_GROUP: bz_rich_app_tile_set_group (self, g_value_get_object (value)); break; case PROP_UI_ENTRY: case PROP_REMOVABLE_AT_START: case PROP_TRACKER: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void tile_clicked_cb (GtkButton *button, BzRichAppTile *self) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.show-group", "s", bz_entry_group_get_id (self->group)); } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_zero (gpointer object, int value) { return value == 0; } static char * get_visible_page (gpointer object, int installable, int removable, gboolean removable_at_start, BzTransactionEntryTracker *tracker, BzTransactionEntryStatus status) { if (tracker != NULL && (bz_transaction_entry_tracker_get_active (tracker) || bz_transaction_entry_tracker_get_pending (tracker)) && status != BZ_TRANSACTION_ENTRY_STATUS_CANCELLED && status != BZ_TRANSACTION_ENTRY_STATUS_DONE) return g_strdup ("cancel"); if (removable > 0) return g_strdup (removable_at_start ? "uninstall" : "open"); if (installable > 0) return g_strdup ("get"); return g_strdup ("empty"); } static void install_button_clicked_cb (BzRichAppTile *self, GtkButton *button) { gtk_widget_activate_action (GTK_WIDGET (self), "window.install-group", "(sb)", bz_entry_group_get_id (self->group), TRUE); } static void remove_button_clicked_cb (BzRichAppTile *self, GtkButton *button) { gtk_widget_activate_action (GTK_WIDGET (self), "window.remove-group", "(sb)", bz_entry_group_get_id (self->group), FALSE); } static void run_button_clicked_cb (BzRichAppTile *self, GtkButton *button) { gtk_widget_activate_action (GTK_WIDGET (self), "window.launch-group", "s", bz_entry_group_get_id (self->group)); } static void cancel_button_clicked_cb (BzRichAppTile *self, GtkButton *button) { if (self->group == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.cancel-group", "s", bz_entry_group_get_id (self->group)); } static void bz_rich_app_tile_class_init (BzRichAppTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_rich_app_tile_set_property; object_class->get_property = bz_rich_app_tile_get_property; object_class->dispose = bz_rich_app_tile_dispose; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_UI_ENTRY] = g_param_spec_object ( "ui-entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_REMOVABLE_AT_START] = g_param_spec_boolean ( "removable-at-start", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_TRACKER] = g_param_spec_object ( "tracker", NULL, NULL, BZ_TYPE_TRANSACTION_ENTRY_TRACKER, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_TRANSACT_ICON); g_type_ensure (BZ_TYPE_LIST_TILE); g_type_ensure (BZ_TYPE_ROUNDED_PICTURE); g_type_ensure (BZ_TYPE_THEMED_ENTRY_GROUP_RECT); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-rich-app-tile.ui"); gtk_widget_class_bind_template_callback (widget_class, tile_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, get_visible_page); gtk_widget_class_bind_template_callback (widget_class, install_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, remove_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, run_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, cancel_button_clicked_cb); gtk_widget_class_bind_template_child (widget_class, BzRichAppTile, picture_box); gtk_widget_class_bind_template_child (widget_class, BzRichAppTile, get_button); gtk_widget_class_bind_template_child (widget_class, BzRichAppTile, transact_icon_info); gtk_widget_class_bind_template_child (widget_class, BzRichAppTile, action_stack); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static void bz_rich_app_tile_init (BzRichAppTile *self) { BzStateInfo *state = NULL; BzTransactionManager *manager = NULL; const char *get_label = NULL; gtk_widget_init_template (GTK_WIDGET (self)); /* Translators: If you can't find a short enough translation, use "/" to use an icon instead. */ get_label = _ ("Get"); if (get_label != NULL && *get_label != '\0' && g_strcmp0 (get_label, "/") != 0) gtk_button_set_label (GTK_BUTTON (self->get_button), get_label); else gtk_button_set_icon_name (GTK_BUTTON (self->get_button), "folder-download-symbolic"); state = bz_state_info_get_default (); manager = bz_state_info_get_transaction_manager (state); if (manager != NULL) g_object_get (manager, "all-trackers", &self->all_trackers, NULL); if (self->all_trackers != NULL) g_signal_connect (self->all_trackers, "items-changed", G_CALLBACK (on_all_trackers_changed), self); update_tracker (self); } GtkWidget * bz_rich_app_tile_new (void) { return g_object_new (BZ_TYPE_RICH_APP_TILE, NULL); } BzEntryGroup * bz_rich_app_tile_get_group (BzRichAppTile *self) { g_return_val_if_fail (BZ_IS_RICH_APP_TILE (self), NULL); return self->group; } void bz_rich_app_tile_set_group (BzRichAppTile *self, BzEntryGroup *group) { const char *title = NULL; gboolean verified = FALSE; gboolean removable_at_start = FALSE; g_autofree char *label = NULL; g_return_if_fail (BZ_IS_RICH_APP_TILE (self)); g_clear_object (&self->group); if (group != NULL) { self->group = g_object_ref (group); title = bz_entry_group_get_title (self->group); verified = bz_entry_group_get_is_verified (self->group); removable_at_start = bz_entry_group_get_removable (self->group) != 0; if (self->removable_at_start != removable_at_start) { self->removable_at_start = removable_at_start; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REMOVABLE_AT_START]); } if (verified) { label = g_strdup_printf ("%s, %s", title, _ ("Verified")); gtk_accessible_update_property (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_PROPERTY_LABEL, label, -1); } else { gtk_accessible_update_property (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_PROPERTY_LABEL, title, -1); } } update_ui_entry (self); update_tracker (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } void bz_rich_app_tile_focus_action_button (BzRichAppTile *self) { GtkWidget *visible_child = NULL; g_return_if_fail (BZ_IS_RICH_APP_TILE (self)); visible_child = gtk_stack_get_visible_child (GTK_STACK (self->action_stack)); if (visible_child != NULL) gtk_widget_grab_focus (visible_child); } /* End of bz-rich-app-tile.c */ ����bazaar-org-bazaar-48f93f4/src/bz-rich-app-tile.h����������������������������������������������������0000664�0000000�0000000�00000002542�15240005042�0021350�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-rich-app-tile.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "adwaita.h" #include <gtk/gtk.h> #include "bz-entry-group.h" #include "bz-list-tile.h" G_BEGIN_DECLS #define BZ_TYPE_RICH_APP_TILE (bz_rich_app_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzRichAppTile, bz_rich_app_tile, BZ, RICH_APP_TILE, BzListTile) GtkWidget * bz_rich_app_tile_new (void); BzEntryGroup * bz_rich_app_tile_get_group (BzRichAppTile *self); void bz_rich_app_tile_set_group (BzRichAppTile *self, BzEntryGroup *group); void bz_rich_app_tile_focus_action_button (BzRichAppTile *self); G_END_DECLS /* End of bz-rich-app-tile.h */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-root-blocklist.txt�������������������������������������������������0000664�0000000�0000000�00000000321�15240005042�0022242�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=root_blocklist parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-blocklist.h" ensure=BZ_TYPE_BLOCKLIST property=blocklists GListModel G_TYPE_LIST_MODEL object ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-root-curated-config.txt��������������������������������������������0000664�0000000�0000000�00000000333�15240005042�0023151�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=root_curated_config parent-prefix=g parent-name=object author=AUTOGEN include="bz-curated-row.h" property=templates GListModel G_TYPE_LIST_MODEL object property=rows GListModel G_TYPE_LIST_MODEL object �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-rounded-picture.c��������������������������������������������������0000664�0000000�0000000�00000021644�15240005042�0022022�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-rounded-picture.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-rounded-picture.h" struct _BzRoundedPicture { GtkWidget parent_instance; GdkPaintable *paintable; double radius; }; G_DEFINE_FINAL_TYPE (BzRoundedPicture, bz_rounded_picture, GTK_TYPE_WIDGET) enum { PROP_0, PROP_PAINTABLE, PROP_RADIUS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { NULL }; static void invalidate_contents (BzRoundedPicture *self, GdkPaintable *paintable) { gtk_widget_queue_draw (GTK_WIDGET (self)); } static void invalidate_size (BzRoundedPicture *self, GdkPaintable *paintable) { gtk_widget_queue_resize (GTK_WIDGET (self)); } static void bz_rounded_picture_dispose (GObject *object) { BzRoundedPicture *self = BZ_ROUNDED_PICTURE (object); if (self->paintable != NULL) { g_signal_handlers_disconnect_by_func (self->paintable, invalidate_contents, self); g_signal_handlers_disconnect_by_func (self->paintable, invalidate_size, self); } g_clear_object (&self->paintable); G_OBJECT_CLASS (bz_rounded_picture_parent_class)->dispose (object); } static void bz_rounded_picture_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzRoundedPicture *self = BZ_ROUNDED_PICTURE (object); switch (prop_id) { case PROP_PAINTABLE: g_value_set_object (value, self->paintable); break; case PROP_RADIUS: g_value_set_double (value, self->radius); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_rounded_picture_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzRoundedPicture *self = BZ_ROUNDED_PICTURE (object); switch (prop_id) { case PROP_PAINTABLE: bz_rounded_picture_set_paintable (self, g_value_get_object (value)); break; case PROP_RADIUS: bz_rounded_picture_set_radius (self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_rounded_picture_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { BzRoundedPicture *self = BZ_ROUNDED_PICTURE (widget); *minimum = 0; *natural = 0; if (self->paintable == NULL) return; if (orientation == GTK_ORIENTATION_HORIZONTAL) { *natural = gdk_paintable_get_intrinsic_width (self->paintable); } else { *natural = gdk_paintable_get_intrinsic_height (self->paintable); } } static void bz_rounded_picture_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzRoundedPicture *self = BZ_ROUNDED_PICTURE (widget); int widget_width; int widget_height; double paintable_width; double paintable_height; double paintable_aspect; double widget_aspect; double scale; double draw_width, draw_height; double x, y; GskRoundedRect rect; GskShadow shadow; if (self->paintable == NULL) return; widget_width = gtk_widget_get_width (widget); widget_height = gtk_widget_get_height (widget); if (widget_width <= 0 || widget_height <= 0) return; paintable_width = gdk_paintable_get_intrinsic_width (self->paintable); paintable_height = gdk_paintable_get_intrinsic_height (self->paintable); if (paintable_width <= 0 || paintable_height <= 0) { paintable_width = widget_width; paintable_height = widget_height; } paintable_aspect = paintable_width / paintable_height; widget_aspect = (double) widget_width / (double) widget_height; if (widget_aspect > paintable_aspect) { scale = (double) widget_height / paintable_height; draw_height = widget_height; draw_width = paintable_width * scale; } else { scale = (double) widget_width / paintable_width; draw_width = widget_width; draw_height = paintable_height * scale; } x = (widget_width - draw_width) / 2.0; y = (widget_height - draw_height) / 2.0; shadow.color.red = 0.0; shadow.color.green = 0.0; shadow.color.blue = 0.0; shadow.color.alpha = 0.35; shadow.dx = 0.0; shadow.dy = 2.0; shadow.radius = 16.0; gtk_snapshot_push_shadow (snapshot, &shadow, 1); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y)); gsk_rounded_rect_init_from_rect (&rect, &GRAPHENE_RECT_INIT (0, 0, draw_width, draw_height), self->radius); gtk_snapshot_push_rounded_clip (snapshot, &rect); gdk_paintable_snapshot (self->paintable, snapshot, draw_width, draw_height); gtk_snapshot_pop (snapshot); gtk_snapshot_pop (snapshot); } static void bz_rounded_picture_class_init (BzRoundedPictureClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_rounded_picture_dispose; object_class->get_property = bz_rounded_picture_get_property; object_class->set_property = bz_rounded_picture_set_property; widget_class->measure = bz_rounded_picture_measure; widget_class->snapshot = bz_rounded_picture_snapshot; props[PROP_PAINTABLE] = g_param_spec_object ("paintable", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_RADIUS] = g_param_spec_double ("radius", NULL, NULL, 0.0, G_MAXDOUBLE, 12.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_rounded_picture_init (BzRoundedPicture *self) { self->radius = 12.0; } GtkWidget * bz_rounded_picture_new (void) { return g_object_new (BZ_TYPE_ROUNDED_PICTURE, NULL); } void bz_rounded_picture_set_paintable (BzRoundedPicture *self, GdkPaintable *paintable) { g_return_if_fail (BZ_IS_ROUNDED_PICTURE (self)); g_return_if_fail (paintable == NULL || GDK_IS_PAINTABLE (paintable)); if (self->paintable == paintable) return; if (self->paintable != NULL) { g_signal_handlers_disconnect_by_func (self->paintable, invalidate_contents, self); g_signal_handlers_disconnect_by_func (self->paintable, invalidate_size, self); } g_clear_object (&self->paintable); if (paintable != NULL) { self->paintable = g_object_ref (paintable); g_signal_connect_swapped (self->paintable, "invalidate-contents", G_CALLBACK (invalidate_contents), self); g_signal_connect_swapped (self->paintable, "invalidate-size", G_CALLBACK (invalidate_size), self); } gtk_widget_queue_resize (GTK_WIDGET (self)); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PAINTABLE]); } GdkPaintable * bz_rounded_picture_get_paintable (BzRoundedPicture *self) { g_return_val_if_fail (BZ_IS_ROUNDED_PICTURE (self), NULL); return self->paintable; } void bz_rounded_picture_set_radius (BzRoundedPicture *self, double radius) { g_return_if_fail (BZ_IS_ROUNDED_PICTURE (self)); if (self->radius == radius) return; self->radius = radius; gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RADIUS]); } double bz_rounded_picture_get_radius (BzRoundedPicture *self) { g_return_val_if_fail (BZ_IS_ROUNDED_PICTURE (self), 0.0); return self->radius; } ��������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-rounded-picture.h��������������������������������������������������0000664�0000000�0000000�00000002611�15240005042�0022020�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-rounded-picture.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_ROUNDED_PICTURE (bz_rounded_picture_get_type ()) G_DECLARE_FINAL_TYPE (BzRoundedPicture, bz_rounded_picture, BZ, ROUNDED_PICTURE, GtkWidget) GtkWidget * bz_rounded_picture_new (void); void bz_rounded_picture_set_paintable (BzRoundedPicture *self, GdkPaintable *paintable); GdkPaintable * bz_rounded_picture_get_paintable (BzRoundedPicture *self); void bz_rounded_picture_set_radius (BzRoundedPicture *self, double radius); double bz_rounded_picture_get_radius (BzRoundedPicture *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-row-view.c���������������������������������������������������������0000664�0000000�0000000�00000011213�15240005042�0020457�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-row-view.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-row-view.h" #include "bz-article-list-view.h" #include "bz-banner-view.h" #include "bz-curated-articles-info.h" #include "bz-curated-banner.h" #include "bz-curated-featured-carousel.h" #include "bz-curated-row.h" #include "bz-curated-section.h" #include "bz-entry-group.h" #include "bz-featured-carousel-view.h" #include "bz-section-view.h" struct _BzRowView { AdwBin parent_instance; BzCuratedRow *row; }; G_DEFINE_FINAL_TYPE (BzRowView, bz_row_view, ADW_TYPE_BIN) enum { PROP_0, PROP_ROW, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_row_view_dispose (GObject *object) { BzRowView *self = BZ_ROW_VIEW (object); g_clear_object (&self->row); G_OBJECT_CLASS (bz_row_view_parent_class)->dispose (object); } static void bz_row_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzRowView *self = BZ_ROW_VIEW (object); switch (prop_id) { case PROP_ROW: g_value_set_object (value, bz_row_view_get_row (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_row_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzRowView *self = BZ_ROW_VIEW (object); switch (prop_id) { case PROP_ROW: bz_row_view_set_row (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_row_view_class_init (BzRowViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_row_view_dispose; object_class->get_property = bz_row_view_get_property; object_class->set_property = bz_row_view_set_property; props[PROP_ROW] = g_param_spec_object ( "row", NULL, NULL, BZ_TYPE_CURATED_ROW, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_SECTION_VIEW); g_type_ensure (BZ_TYPE_FEATURED_CAROUSEL_VIEW); g_type_ensure (BZ_TYPE_BANNER_VIEW); g_type_ensure (BZ_TYPE_ARTICLE_LIST_VIEW); } static void bz_row_view_init (BzRowView *self) { } GtkWidget * bz_row_view_new (BzCuratedRow *row) { return g_object_new ( BZ_TYPE_ROW_VIEW, "row", row, NULL); } void bz_row_view_set_row (BzRowView *self, BzCuratedRow *row) { BzCuratedSection *section = NULL; BzCuratedFeaturedCarousel *carousel = NULL; BzCuratedBanner *banner = NULL; BzCuratedArticlesInfo *articles = NULL; GtkWidget *child = NULL; g_return_if_fail (BZ_IS_ROW_VIEW (self)); g_return_if_fail (row == NULL || BZ_IS_CURATED_ROW (row)); g_clear_object (&self->row); adw_bin_set_child (ADW_BIN (self), NULL); if (row != NULL) { self->row = g_object_ref (row); section = bz_curated_row_get_section (row); carousel = bz_curated_row_get_featured_carousel (row); banner = bz_curated_row_get_banner (row); articles = bz_curated_row_get_articles (row); if (section != NULL) child = bz_section_view_new (section); else if (carousel != NULL) child = bz_featured_carousel_view_new (carousel); else if (banner != NULL) child = bz_banner_view_new (banner); else if (articles != NULL) child = bz_article_list_view_new (articles); } if (child != NULL) adw_bin_set_child (ADW_BIN (self), child); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ROW]); } BzCuratedRow * bz_row_view_get_row (BzRowView *self) { g_return_val_if_fail (BZ_IS_ROW_VIEW (self), NULL); return self->row; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-row-view.h���������������������������������������������������������0000664�0000000�0000000�00000002210�15240005042�0020461�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-row-view.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-curated-row.h" G_BEGIN_DECLS #define BZ_TYPE_ROW_VIEW (bz_row_view_get_type ()) G_DECLARE_FINAL_TYPE (BzRowView, bz_row_view, BZ, ROW_VIEW, AdwBin) GtkWidget * bz_row_view_new (BzCuratedRow *row); void bz_row_view_set_row (BzRowView *self, BzCuratedRow *row); BzCuratedRow * bz_row_view_get_row (BzRowView *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-safety-dialog.blp��������������������������������������������������0000664�0000000�0000000�00000011562�15240005042�0021772�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzSafetyDialog: Adw.Bin { child: Adw.ToolbarView { [top] Adw.HeaderBar { show-title: false; } content: Adw.Carousel carousel { interactive: false; allow-scroll-wheel: false; allow-mouse-drag: false; allow-long-swipes: false; hexpand: true; ScrolledWindow { hscrollbar-policy: never; hexpand: true; sensitive: bind $is_page(carousel.position, 0) as <bool>; Box global_box { orientation: vertical; spacing: 12; margin-start: 18; margin-end: 18; margin-top: 18; margin-bottom: 18; $BzLozenge { title: _("Arbitrary Permissions"); icon-names: [ "earth-symbolic", ]; importance: important; margin-bottom: 8; } Label arbitrary_description { wrap: true; xalign: 0; use-markup: true; margin-bottom: 18; margin-start: 18; margin-end: 18; label: _("This app has a permission that indirectly allows it to grant itself <b>any other permission it wants</b>, bypassing the Flatpak sandbox.\n\nIt can therefore do anything a privileged, non-sandboxed application can do, such as accessing all your files and connecting to the internet.\n\nViewing the other permissions may still give a better idea of what the app is likely to do."); } Button other_permissions_button { label: _("View Other Permissions"); clicked => $next_page(template); margin-bottom: 12; halign: center; hexpand: true; styles ["pill"] } } } ScrolledWindow { hscrollbar-policy: never; hexpand: true; sensitive: bind $is_page(carousel.position, 1) as <bool>; Adw.Clamp { maximum-size: 640; tightening-threshold: 400; Box { orientation: vertical; spacing: 24; margin-start: 24; margin-end: 24; margin-top: 24; margin-bottom: 24; $BzLozenge lozenge { title: _("Safe"); icon-names: [ "app-safety-ok-symbolic", ]; importance: unimportant; } ListBox permissions_list { selection-mode: none; styles [ "boxed-list", ] } Adw.PreferencesGroup { margin-top: 10; title: _("Details"); Adw.ActionRow license_row { title: _("License"); subtitle: bind template.entry as <$BzEntry>.project-license; subtitle-selectable: true; visible: bind $not($is_empty_string(license_row.subtitle) as <bool>) as <bool>; styles [ "property", ] } Adw.ActionRow { title: _("App ID"); subtitle: bind template.entry as <$BzEntry>.id; subtitle-selectable: true; styles [ "property", ] } Adw.ActionRow { title: _("SDK"); subtitle: bind template.entry as <$BzFlatpakEntry>.runtime as <$BzResult>.object as <$BzEntry>.title; subtitle-selectable: true; has-tooltip: true; tooltip-text: bind template.entry as <$BzFlatpakEntry>.application-runtime; visible: bind $invert_boolean( $is_null(template.entry as <$BzFlatpakEntry>.runtime as <$BzResult>.object) as <bool> ) as <bool>; styles [ "property", ] [suffix] MenuButton { visible: bind $invert_boolean($is_null(template.entry as <$BzEntry>.eol) as <bool>) as <bool>; styles [ "error", "flat", ] valign: center; icon-name: "dialog-warning-symbolic"; popover: Popover { child: Label { margin-top: 8; margin-bottom: 8; margin-start: 8; margin-end: 8; max-width-chars: 35; wrap: true; label: _( "This app uses an outdated version of the software platform (SDK) and might contain bugs or security vulnerabilities which will not be fixed." ); }; }; } } } } } } }; }; } ����������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-safety-dialog.c����������������������������������������������������0000664�0000000�0000000�00000031745�15240005042�0021444�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-safety-dialog.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-app-permissions.h" #include "bz-context-row.h" #include "bz-entry.h" #include "bz-lozenge.h" #include "safety-calculator.h" #include "bz-safety-dialog.h" #include "bz-safety-row.h" #include "template-callbacks.h" #define ANIMATION_DURATION 300 struct _BzSafetyDialog { AdwBin parent_instance; BzEntry *entry; gboolean has_sandbox_escape; AdwAnimation *width_animation; AdwAnimation *height_animation; BzLozenge *lozenge; GtkListBox *permissions_list; AdwCarousel *carousel; GtkBox *global_box; GtkLabel *arbitrary_description; }; G_DEFINE_FINAL_TYPE (BzSafetyDialog, bz_safety_dialog, ADW_TYPE_BIN) enum { PROP_0, PROP_ENTRY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void update_permissions_list (BzSafetyDialog *self); static void animate_to_page (BzSafetyDialog *self, guint page_index); static void bz_safety_dialog_dispose (GObject *object) { BzSafetyDialog *self = BZ_SAFETY_DIALOG (object); g_clear_object (&self->entry); g_clear_object (&self->width_animation); g_clear_object (&self->height_animation); G_OBJECT_CLASS (bz_safety_dialog_parent_class)->dispose (object); } static void bz_safety_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzSafetyDialog *self = BZ_SAFETY_DIALOG (object); switch (prop_id) { case PROP_ENTRY: g_value_set_object (value, self->entry); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_safety_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzSafetyDialog *self; self = BZ_SAFETY_DIALOG (object); switch (prop_id) { case PROP_ENTRY: g_clear_object (&self->entry); self->entry = g_value_dup_object (value); update_permissions_list (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void get_target_size (BzSafetyDialog *self, guint page_index, int *out_width, int *out_height) { if (page_index == 0) { int nat = 0; *out_width = 450; gtk_widget_measure (GTK_WIDGET (self->global_box), GTK_ORIENTATION_VERTICAL, *out_width, NULL, &nat, NULL, NULL); *out_height = CLAMP (nat + 48, 100, 600); } else { *out_width = 640; *out_height = 576; } } static void animate_to_page (BzSafetyDialog *self, guint page_index) { AdwDialog *dialog = NULL; int target_width = 0; int target_height = 0; int cur_w = 0; int cur_h = 0; dialog = ADW_DIALOG (gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_DIALOG)); if (dialog == NULL) return; if (self->width_animation == NULL || self->height_animation == NULL) return; get_target_size (self, page_index, &target_width, &target_height); cur_w = adw_dialog_get_content_width (dialog); cur_h = adw_dialog_get_content_height (dialog); adw_animation_skip (self->width_animation); adw_animation_skip (self->height_animation); adw_timed_animation_set_duration (ADW_TIMED_ANIMATION (self->width_animation), ANIMATION_DURATION); adw_timed_animation_set_duration (ADW_TIMED_ANIMATION (self->height_animation), ANIMATION_DURATION); adw_timed_animation_set_value_from (ADW_TIMED_ANIMATION (self->width_animation), cur_w); adw_timed_animation_set_value_to (ADW_TIMED_ANIMATION (self->width_animation), target_width); adw_timed_animation_set_value_from (ADW_TIMED_ANIMATION (self->height_animation), cur_h); adw_timed_animation_set_value_to (ADW_TIMED_ANIMATION (self->height_animation), target_height); adw_animation_play (self->width_animation); adw_animation_play (self->height_animation); } static void on_dialog_map (BzSafetyDialog *self) { AdwDialog *dialog = NULL; int target_width = 0; int target_height = 0; guint page_index = self->has_sandbox_escape ? 0 : 1; dialog = ADW_DIALOG (gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_DIALOG)); if (dialog == NULL) return; if (page_index == 1) { GtkWidget *page = NULL; page = gtk_widget_get_last_child (GTK_WIDGET (self->carousel)); adw_carousel_scroll_to (self->carousel, page, FALSE); } get_target_size (self, page_index, &target_width, &target_height); adw_dialog_set_content_width (dialog, target_width); adw_dialog_set_content_height (dialog, target_height); } static void next_page (BzSafetyDialog *self, GtkButton *button) { GtkWidget *page = NULL; page = gtk_widget_get_last_child (GTK_WIDGET (self->carousel)); gtk_accessible_announce (GTK_ACCESSIBLE (self), bz_lozenge_get_title (self->lozenge), GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_MEDIUM); adw_carousel_scroll_to (self->carousel, page, TRUE); animate_to_page (self, 1); } static gboolean is_page (gpointer object, gdouble position, gint target) { return fabs (position - (gdouble) target) < 0.5 || fabs (position - round (position)) > 0.01; } static void bz_safety_dialog_class_init (BzSafetyDialogClass *klass) { GObjectClass *object_class; GtkWidgetClass *widget_class; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_safety_dialog_dispose; object_class->get_property = bz_safety_dialog_get_property; object_class->set_property = bz_safety_dialog_set_property; props[PROP_ENTRY] = g_param_spec_object ("entry", NULL, NULL, BZ_TYPE_ENTRY, G_PARAM_READWRITE); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LOZENGE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-safety-dialog.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzSafetyDialog, lozenge); gtk_widget_class_bind_template_child (widget_class, BzSafetyDialog, permissions_list); gtk_widget_class_bind_template_child (widget_class, BzSafetyDialog, carousel); gtk_widget_class_bind_template_child (widget_class, BzSafetyDialog, global_box); gtk_widget_class_bind_template_child (widget_class, BzSafetyDialog, arbitrary_description); gtk_widget_class_bind_template_callback (widget_class, next_page); gtk_widget_class_bind_template_callback (widget_class, is_page); } static void bz_safety_dialog_init (BzSafetyDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } AdwDialog * bz_safety_dialog_new (BzEntry *entry) { BzSafetyDialog *widget = NULL; AdwDialog *dialog = NULL; AdwAnimationTarget *width_target = NULL; AdwAnimationTarget *height_target = NULL; g_autofree char *description = NULL; widget = g_object_new (BZ_TYPE_SAFETY_DIALOG, NULL); dialog = adw_dialog_new (); adw_dialog_set_title (dialog, _ ("Safety")); adw_dialog_set_content_height (dialog, 576); adw_dialog_set_content_width (dialog, 640); adw_dialog_set_child (dialog, GTK_WIDGET (widget)); width_target = adw_property_animation_target_new (G_OBJECT (dialog), "content-width"); widget->width_animation = adw_timed_animation_new (GTK_WIDGET (widget), 0, 0, ANIMATION_DURATION, width_target); height_target = adw_property_animation_target_new (G_OBJECT (dialog), "content-height"); widget->height_animation = adw_timed_animation_new (GTK_WIDGET (widget), 0, 0, ANIMATION_DURATION, height_target); g_object_set (widget, "entry", entry, NULL); if (widget->has_sandbox_escape) description = g_strdup_printf ("%s. %s", _ ("Arbitrary Permissions"), gtk_label_get_text (widget->arbitrary_description)); else description = g_strdup (bz_lozenge_get_title (widget->lozenge)); gtk_accessible_update_property (GTK_ACCESSIBLE (dialog), GTK_ACCESSIBLE_PROPERTY_DESCRIPTION, description, -1); g_signal_connect_swapped (widget, "map", G_CALLBACK (on_dialog_map), widget); return dialog; } AdwNavigationPage * bz_safety_dialog_page_new (BzEntry *entry) { BzSafetyDialog *widget = NULL; AdwNavigationPage *page = NULL; widget = g_object_new (BZ_TYPE_SAFETY_DIALOG, "entry", entry, NULL); page = adw_navigation_page_new (GTK_WIDGET (widget), _ ("Safety")); adw_navigation_page_set_tag (page, "safety"); return page; } static void update_permissions_list (BzSafetyDialog *self) { const char *icon_names[2]; const char *app_name = NULL; g_autofree char *title_text = NULL; BzImportance importance = BZ_IMPORTANCE_UNIMPORTANT; GtkWidget *child = NULL; g_autoptr (GListModel) model = NULL; guint n_items = 0; g_autoptr (BzAppPermissions) permissions = NULL; BzAppPermissionsFlags perm_flags = BZ_APP_PERMISSIONS_FLAGS_NONE; while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->permissions_list))) != NULL) gtk_list_box_remove (self->permissions_list, child); if (self->entry == NULL) return; g_object_get (self->entry, "permissions", &permissions, NULL); if (permissions != NULL) perm_flags = bz_app_permissions_get_flags (permissions); self->has_sandbox_escape = (perm_flags & BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX) != 0; app_name = bz_entry_get_title (self->entry); model = bz_safety_calculator_analyze_entry (self->entry); importance = bz_safety_calculator_calculate_rating (self->entry); n_items = g_list_model_get_n_items (model); for (gint level = BZ_IMPORTANCE_IMPORTANT; level >= BZ_IMPORTANCE_UNIMPORTANT; level--) { for (gint j = 0; j < n_items; j++) { g_autoptr (BzSafetyRow) row_data = NULL; AdwActionRow *row = NULL; BzImportance row_importance = 0; row_data = g_list_model_get_item (model, j); row_importance = bz_safety_row_get_importance (row_data); if (row_importance != level) continue; row = bz_context_row_new (bz_safety_row_get_icon_name (row_data), bz_safety_row_get_importance (row_data), bz_safety_row_get_title (row_data), bz_safety_row_get_subtitle (row_data)); gtk_list_box_append (self->permissions_list, GTK_WIDGET (row)); } } switch (importance) { case BZ_IMPORTANCE_UNIMPORTANT: icon_names[0] = "app-safety-ok-symbolic"; icon_names[1] = NULL; title_text = g_strdup_printf (_ ("%s is Safe"), app_name); break; case BZ_IMPORTANCE_NEUTRAL: icon_names[0] = "app-safety-ok-symbolic"; icon_names[1] = NULL; title_text = g_strdup_printf (_ ("%s has no Unsafe Permissions"), app_name); break; case BZ_IMPORTANCE_INFORMATION: icon_names[0] = "app-safety-ok-symbolic"; icon_names[1] = NULL; title_text = g_strdup_printf (_ ("%s is Probably Safe"), app_name); break; case BZ_IMPORTANCE_WARNING: icon_names[0] = "app-safety-unknown-symbolic"; icon_names[1] = NULL; title_text = g_strdup_printf (_ ("%s is Possibly Unsafe"), app_name); break; case BZ_IMPORTANCE_IMPORTANT: icon_names[0] = "app-safety-unsafe-symbolic"; icon_names[1] = NULL; title_text = g_strdup_printf (_ ("%s is Unsafe"), app_name); break; default: g_assert_not_reached (); } bz_lozenge_set_icon_names (self->lozenge, icon_names); bz_lozenge_set_title (self->lozenge, title_text); bz_lozenge_set_importance (self->lozenge, importance); } ���������������������������bazaar-org-bazaar-48f93f4/src/bz-safety-dialog.h����������������������������������������������������0000664�0000000�0000000�00000002145�15240005042�0021441�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-safety-dialog.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include <adwaita.h> G_BEGIN_DECLS G_BEGIN_DECLS #define BZ_TYPE_SAFETY_DIALOG (bz_safety_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzSafetyDialog, bz_safety_dialog, BZ, SAFETY_DIALOG, AdwBin) AdwDialog * bz_safety_dialog_new (BzEntry *entry); AdwNavigationPage * bz_safety_dialog_page_new (BzEntry *entry); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-safety-row.txt�����������������������������������������������������0000664�0000000�0000000�00000000444�15240005042�0021401�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=safety_row parent-prefix=g parent-name=object author=AUTOGEN include="bz-context-row.h" property=importance BzImportance BZ_TYPE_IMPORTANCE enum property=title char G_TYPE_STRING string property=subtitle char G_TYPE_STRING string property=icon_name char G_TYPE_STRING string ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshot-page.blp������������������������������������������������0000664�0000000�0000000�00000013226�15240005042�0022330�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzScreenshotPage: Adw.Bin { ShortcutController { Shortcut { trigger: "Left"; action: "action(screenshot.previous)"; } Shortcut { trigger: "Right"; action: "action(screenshot.next)"; } Shortcut { trigger: "<ctrl>plus|<ctrl>equal|<ctrl>KP_Add"; action: "action(screenshot.zoom-in)"; } Shortcut { trigger: "<ctrl>minus|<ctrl>KP_Subtract"; action: "action(screenshot.zoom-out)"; } Shortcut { trigger: "<ctrl>0|<ctrl>KP_0"; action: "action(screenshot.zoom-reset)"; } Shortcut { trigger: "<ctrl>c"; action: "action(screenshot.copy)"; } } child: Adw.BreakpointBin { width-request: 360; height-request: 100; Adw.Breakpoint { condition ("max-width: 700px") setters { mobile_caption_box.margin-bottom: 78; } } child: Adw.ToastOverlay toast_overlay { child: Adw.ToolbarView { top-bar-style: flat; extend-content-to-top-edge: true; styles [ "view-dark", ] [top] Adw.HeaderBar header_bar { styles [ "flat", "header-osd", ] show-end-title-buttons: false; show-start-title-buttons: false; show-back-button: false; show-title: false; [start] Button back_button { icon-name: "go-previous-symbolic"; tooltip-text: _("Back"); clicked => $back_clicked() swapped; styles [ "flat", ] } } content: Overlay { [overlay] Box { orientation: horizontal; halign: start; valign: end; margin-bottom: 18; margin-start: 18; spacing: 6; Box navigation_controls { orientation: horizontal; spacing: 6; visible: bind $has_multiple_screenshots(template.screenshots) as <bool>; styles [ "osd-box", ] Button previous_button { icon-name: "go-previous-symbolic"; tooltip-text: _("Previous Screenshot"); action-name: "screenshot.previous"; styles [ "flat", ] } Button next_button { icon-name: "go-next-symbolic"; tooltip-text: _("Next Screenshot"); action-name: "screenshot.next"; styles [ "flat", ] } } Box { styles [ "osd-box", ] Button copy_button { icon-name: "edit-copy-symbolic"; tooltip-text: _("Copy Image"); action-name: "screenshot.copy"; styles [ "flat", ] } } } [overlay] Revealer { halign: center; valign: end; reveal-child: bind $is_valid_string(template.current-caption) as <bool>; transition-type: crossfade; can-target: false; child: Box mobile_caption_box { margin-bottom: 18; styles [ "osd-box", ] Label { halign: center; hexpand: true; label: bind template.current-caption; height-request: 34; justify: center; max-width-chars: 30; wrap: true; margin-start: 8; margin-end: 8; wrap-mode: word_char; styles [ "heading" ] } }; } [overlay] Box { orientation: horizontal; halign: end; valign: end; margin-bottom: 18; margin-end: 18; Box zoom_controls { orientation: horizontal; styles [ "osd-box", ] Revealer { reveal-child: bind template.is-zoomed as <bool>; transition-type: slide_right; Button reset_zoom_button { icon-name: "zoom-original-symbolic"; tooltip-text: _("Reset View"); action-name: "screenshot.zoom-reset"; styles [ "flat", ] } } Button zoom_out_button { icon-name: "zoom-minus-symbolic"; tooltip-text: _("Zoom Out"); action-name: "screenshot.zoom-out"; styles [ "flat", ] } Button zoom_in_button { icon-name: "zoom-plus-symbolic"; tooltip-text: _("Zoom In"); action-name: "screenshot.zoom-in"; styles [ "flat", ] } } } child: Adw.Carousel carousel { can-focus: false; interactive: bind $invert_boolean(template.is-zoomed) as <bool>; allow-scroll-wheel: bind $invert_boolean(template.is-zoomed) as <bool>; allow-mouse-drag: bind $invert_boolean(template.is-zoomed) as <bool>; allow-long-swipes: false; notify::position => $on_carousel_position_changed(); }; }; }; }; }; }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshot-page.c��������������������������������������������������0000664�0000000�0000000�00000074005�15240005042�0021777�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-screenshot-page.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-screenshot-page.h" #include "bz-screenshot.h" #include "bz-zoom.h" #include <glib/gi18n.h> #define MOUSE_BACK_BUTTON 8 #define SPRING_DAMPING_RATIO 1.05 #define SPRING_MASS 1.0 #define SPRING_STIFFNESS 1000.0 #define FADE_DURATION_MS 350 struct _BzScreenshotPage { AdwBin parent_instance; AdwCarousel *carousel; AdwToastOverlay *toast_overlay; GListModel *screenshots; GListModel *captions; guint current_index; guint initial_index; gboolean is_zoomed; gboolean reduce_motion; GtkWidget *source_widget; GdkTexture *source_texture; graphene_rect_t source_bounds_at_map; AdwAnimation *animation; double animation_progress; gboolean closing; }; G_DEFINE_FINAL_TYPE (BzScreenshotPage, bz_screenshot_page, ADW_TYPE_BIN) enum { PROP_0, PROP_SCREENSHOTS, PROP_CURRENT_INDEX, PROP_CURRENT_CAPTION, PROP_IS_ZOOMED, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static GdkTexture *render_widget_to_texture (GtkWidget *widget); static void on_animation_value (AdwAnimation *animation, GParamSpec *pspec, BzScreenshotPage *self); static void on_fade_animation_value (AdwAnimation *animation, GParamSpec *pspec, BzScreenshotPage *self); static void on_close_animation_done (AdwAnimation *animation, BzScreenshotPage *self); static void on_zoom_level_changed (BzZoom *zoom, GParamSpec *pspec, BzScreenshotPage *self); static void update_is_zoomed (BzScreenshotPage *self); static BzZoom *get_current_zoom (BzScreenshotPage *self, GtkScrolledWindow **scrolled_window); static void populate_carousel (BzScreenshotPage *self); static void on_button_pressed (GtkGestureClick *gesture, int n_press, double x, double y, BzScreenshotPage *self); static void on_swipe (BzScreenshotPage *self, gdouble vel_x, gdouble vel_y); static gboolean on_scroll (BzScreenshotPage *self, gdouble dx, gdouble dy, GtkEventControllerScroll *controller); static void bz_screenshot_page_map (GtkWidget *widget) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); AdwAnimationTarget *target = NULL; AdwSpringParams *params = NULL; GtkSettings *settings = NULL; GtkReducedMotion reduced_motion = GTK_REDUCED_MOTION_NO_PREFERENCE; GTK_WIDGET_CLASS (bz_screenshot_page_parent_class)->map (widget); gtk_widget_child_focus (widget, GTK_DIR_TAB_FORWARD); settings = gtk_widget_get_settings (widget); g_object_get (settings, "gtk-interface-reduced-motion", &reduced_motion, NULL); self->reduce_motion = reduced_motion != GTK_REDUCED_MOTION_NO_PREFERENCE; self->closing = FALSE; if (self->reduce_motion) { self->animation_progress = 1.0; g_clear_object (&self->source_texture); gtk_widget_set_opacity (widget, 0.0); target = adw_callback_animation_target_new ( (AdwAnimationTargetFunc) gtk_widget_queue_draw, self, NULL); self->animation = adw_timed_animation_new (widget, 0.0, 1.0, FADE_DURATION_MS, target); g_signal_connect (self->animation, "notify::value", G_CALLBACK (on_fade_animation_value), self); adw_animation_play (self->animation); return; } if (self->source_widget != NULL) { self->source_texture = render_widget_to_texture (self->source_widget); if (!gtk_widget_compute_bounds (self->source_widget, widget, &self->source_bounds_at_map)) graphene_rect_init (&self->source_bounds_at_map, 0, 0, gtk_widget_get_width (widget), gtk_widget_get_height (widget)); gtk_widget_set_opacity (self->source_widget, 0.0); } self->animation_progress = 0.0; target = adw_callback_animation_target_new ((AdwAnimationTargetFunc) gtk_widget_queue_draw, self, NULL); params = adw_spring_params_new (SPRING_DAMPING_RATIO, SPRING_MASS, SPRING_STIFFNESS); self->animation = adw_spring_animation_new (widget, 0.0, 1.0, params, target); adw_spring_animation_set_clamp (ADW_SPRING_ANIMATION (self->animation), TRUE); adw_spring_animation_set_epsilon (ADW_SPRING_ANIMATION (self->animation), 0.0001); adw_spring_animation_set_initial_velocity (ADW_SPRING_ANIMATION (self->animation), -1.2); g_signal_connect (self->animation, "notify::value", G_CALLBACK (on_animation_value), self); adw_animation_play (self->animation); } static void bz_screenshot_page_unmap (GtkWidget *widget) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); if (self->source_widget != NULL && !self->closing) gtk_widget_set_opacity (self->source_widget, 1.0); GTK_WIDGET_CLASS (bz_screenshot_page_parent_class)->unmap (widget); } static void bz_screenshot_page_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); double progress = 0.0; int width = 0; int height = 0; float rev = 0.0f; float x = 0.0f; float y = 0.0f; float w = 0.0f; float h = 0.0f; graphene_rect_t lerped; graphene_rect_t source_bounds; progress = self->animation_progress; width = gtk_widget_get_width (widget); height = gtk_widget_get_height (widget); if (self->source_texture == NULL || progress >= 1.0) { GTK_WIDGET_CLASS (bz_screenshot_page_parent_class)->snapshot (widget, snapshot); return; } if (self->source_widget != NULL && !gtk_widget_compute_bounds (self->source_widget, widget, &source_bounds)) source_bounds = self->source_bounds_at_map; else if (self->source_widget == NULL) source_bounds = self->source_bounds_at_map; rev = (float) (1.0 - progress); x = source_bounds.origin.x * rev + 0.0f * (float) progress; y = source_bounds.origin.y * rev + 0.0f * (float) progress; w = source_bounds.size.width * rev + (float) width * (float) progress; h = source_bounds.size.height * rev + (float) height * (float) progress; graphene_rect_init (&lerped, x, y, w, h); gtk_snapshot_push_clip (snapshot, &lerped); gtk_snapshot_push_cross_fade (snapshot, progress); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y)); gtk_snapshot_scale (snapshot, w / source_bounds.size.width, h / source_bounds.size.height); gdk_paintable_snapshot (GDK_PAINTABLE (self->source_texture), snapshot, source_bounds.size.width, source_bounds.size.height); gtk_snapshot_restore (snapshot); gtk_snapshot_pop (snapshot); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y)); gtk_snapshot_scale (snapshot, w / (float) width, h / (float) height); GTK_WIDGET_CLASS (bz_screenshot_page_parent_class)->snapshot (widget, snapshot); gtk_snapshot_restore (snapshot); gtk_snapshot_pop (snapshot); gtk_snapshot_pop (snapshot); } static void back_clicked (BzScreenshotPage *self) { AdwAnimationTarget *target = NULL; AdwSpringParams *params = NULL; GtkWidget *parent = NULL; if (self->closing) return; if (self->source_widget != NULL) { self->closing = TRUE; gtk_widget_set_can_target (GTK_WIDGET (self), FALSE); if (self->animation != NULL) { g_signal_handlers_disconnect_by_func (self->animation, on_animation_value, self); g_signal_handlers_disconnect_by_func (self->animation, on_fade_animation_value, self); g_clear_object (&self->animation); } target = adw_callback_animation_target_new ( (AdwAnimationTargetFunc) gtk_widget_queue_draw, self, NULL); if (self->reduce_motion) { self->animation = adw_timed_animation_new ( GTK_WIDGET (self), gtk_widget_get_opacity (GTK_WIDGET (self)), 0.0, FADE_DURATION_MS, target); g_signal_connect (self->animation, "notify::value", G_CALLBACK (on_fade_animation_value), self); } else { params = adw_spring_params_new (SPRING_DAMPING_RATIO, SPRING_MASS, SPRING_STIFFNESS); self->animation = adw_spring_animation_new ( GTK_WIDGET (self), self->animation_progress, 0.0, params, target); adw_spring_animation_set_clamp (ADW_SPRING_ANIMATION (self->animation), TRUE); adw_spring_animation_set_epsilon (ADW_SPRING_ANIMATION (self->animation), 0.0001); adw_spring_animation_set_initial_velocity (ADW_SPRING_ANIMATION (self->animation), -1.2); g_signal_connect (self->animation, "notify::value", G_CALLBACK (on_animation_value), self); } g_signal_connect (self->animation, "done", G_CALLBACK (on_close_animation_done), self); adw_animation_play (self->animation); } else { if (self->source_widget != NULL) gtk_widget_set_opacity (self->source_widget, 1.0); parent = gtk_widget_get_parent (GTK_WIDGET (self)); if (parent != NULL) gtk_overlay_remove_overlay (GTK_OVERLAY (parent), GTK_WIDGET (self)); } } static void zoom_in_clicked (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); BzZoom *zoom = NULL; zoom = get_current_zoom (self, NULL); if (zoom != NULL) bz_zoom_zoom_in (zoom); } static void zoom_out_clicked (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); BzZoom *zoom = NULL; zoom = get_current_zoom (self, NULL); if (zoom != NULL) bz_zoom_zoom_out (zoom); } static void reset_zoom_clicked (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); BzZoom *zoom = NULL; zoom = get_current_zoom (self, NULL); if (zoom != NULL) bz_zoom_reset (zoom); } static void previous_clicked (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); guint n_pages = 0; GtkWidget *page = NULL; n_pages = adw_carousel_get_n_pages (self->carousel); if (n_pages == 0) return; if (self->current_index > 0) page = adw_carousel_get_nth_page (self->carousel, self->current_index - 1); else page = adw_carousel_get_nth_page (self->carousel, n_pages - 1); if (page != NULL) adw_carousel_scroll_to (self->carousel, page, TRUE); } static void next_clicked (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); guint n_pages = 0; GtkWidget *page = NULL; n_pages = adw_carousel_get_n_pages (self->carousel); if (n_pages == 0) return; if (self->current_index < n_pages - 1) page = adw_carousel_get_nth_page (self->carousel, self->current_index + 1); else page = adw_carousel_get_nth_page (self->carousel, 0); if (page != NULL) adw_carousel_scroll_to (self->carousel, page, TRUE); } static void on_carousel_position_changed (AdwCarousel *carousel, GParamSpec *pspec, BzScreenshotPage *self) { GtkScrolledWindow *old_scrolled_window = NULL; BzZoom *old_zoom = NULL; BzZoom *new_zoom = NULL; guint new_index = 0; guint n_pages = 0; new_index = (guint) round (adw_carousel_get_position (carousel)); n_pages = adw_carousel_get_n_pages (carousel); if (new_index == self->current_index || new_index >= n_pages) return; old_zoom = get_current_zoom (self, &old_scrolled_window); if (old_zoom != NULL) { g_signal_handlers_disconnect_by_func (old_zoom, on_zoom_level_changed, self); bz_zoom_reset (old_zoom); gtk_scrolled_window_set_policy (old_scrolled_window, GTK_POLICY_NEVER, GTK_POLICY_NEVER); } self->current_index = new_index; new_zoom = get_current_zoom (self, NULL); g_assert (new_zoom != NULL); g_signal_connect (new_zoom, "notify::zoom-level", G_CALLBACK (on_zoom_level_changed), self); update_is_zoomed (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_INDEX]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_CAPTION]); } static void copy_clicked (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (widget); g_autoptr (BzAsyncTexture) async_texture = NULL; g_autoptr (GdkTexture) texture = NULL; GdkClipboard *clipboard = NULL; AdwToast *toast = NULL; guint n_items = 0; guint actual_index = 0; if (self->screenshots == NULL) return; n_items = g_list_model_get_n_items (self->screenshots); if (n_items == 0) return; actual_index = (self->initial_index + self->current_index) % n_items; async_texture = g_list_model_get_item (self->screenshots, actual_index); if (async_texture == NULL) return; texture = bz_async_texture_dup_texture (async_texture); if (texture == NULL) return; clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); gdk_clipboard_set_texture (clipboard, texture); toast = adw_toast_new (_ ("Copied!")); adw_toast_set_timeout (toast, 1); adw_toast_overlay_add_toast (self->toast_overlay, toast); } static void on_zoom_level_changed (BzZoom *zoom, GParamSpec *pspec, BzScreenshotPage *self) { update_is_zoomed (self); } static gboolean has_multiple_screenshots (GObject *object, GListModel *screenshots, gpointer user_data) { if (screenshots == NULL) return FALSE; return g_list_model_get_n_items (screenshots) > 1; } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_valid_string (gpointer object, const char *value) { return value != NULL && *value != '\0'; } static void bz_screenshot_page_dispose (GObject *object) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (object); g_clear_object (&self->screenshots); g_clear_object (&self->captions); g_clear_object (&self->source_texture); g_clear_object (&self->animation); G_OBJECT_CLASS (bz_screenshot_page_parent_class)->dispose (object); } static void bz_screenshot_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (object); switch (prop_id) { case PROP_SCREENSHOTS: g_value_set_object (value, self->screenshots); break; case PROP_CURRENT_INDEX: g_value_set_uint (value, self->current_index); break; case PROP_CURRENT_CAPTION: { const char *caption = NULL; caption = bz_screenshot_page_get_current_caption (self); g_value_set_string (value, caption); } break; case PROP_IS_ZOOMED: g_value_set_boolean (value, self->is_zoomed); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_screenshot_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (object); switch (prop_id) { case PROP_SCREENSHOTS: g_set_object (&self->screenshots, g_value_get_object (value)); break; case PROP_CURRENT_INDEX: self->initial_index = g_value_get_uint (value); break; case PROP_CURRENT_CAPTION: case PROP_IS_ZOOMED: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_screenshot_page_constructed (GObject *object) { BzScreenshotPage *self = BZ_SCREENSHOT_PAGE (object); BzZoom *first_zoom = NULL; G_OBJECT_CLASS (bz_screenshot_page_parent_class)->constructed (object); populate_carousel (self); self->current_index = 0; first_zoom = get_current_zoom (self, NULL); if (first_zoom != NULL) g_signal_connect (first_zoom, "notify::zoom-level", G_CALLBACK (on_zoom_level_changed), self); update_is_zoomed (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_CAPTION]); } static void bz_screenshot_page_class_init (BzScreenshotPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_screenshot_page_dispose; object_class->constructed = bz_screenshot_page_constructed; object_class->get_property = bz_screenshot_page_get_property; object_class->set_property = bz_screenshot_page_set_property; widget_class->map = bz_screenshot_page_map; widget_class->unmap = bz_screenshot_page_unmap; widget_class->snapshot = bz_screenshot_page_snapshot; props[PROP_SCREENSHOTS] = g_param_spec_object ( "screenshots", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); props[PROP_CURRENT_INDEX] = g_param_spec_uint ( "current-index", NULL, NULL, 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); props[PROP_CURRENT_CAPTION] = g_param_spec_string ( "current-caption", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_IS_ZOOMED] = g_param_spec_boolean ( "is-zoomed", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_ZOOM); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-screenshot-page.ui"); gtk_widget_class_bind_template_child (widget_class, BzScreenshotPage, carousel); gtk_widget_class_bind_template_child (widget_class, BzScreenshotPage, toast_overlay); gtk_widget_class_bind_template_callback (widget_class, back_clicked); gtk_widget_class_bind_template_callback (widget_class, on_carousel_position_changed); gtk_widget_class_bind_template_callback (widget_class, has_multiple_screenshots); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_valid_string); gtk_widget_class_install_action (widget_class, "screenshot.previous", NULL, previous_clicked); gtk_widget_class_install_action (widget_class, "screenshot.next", NULL, next_clicked); gtk_widget_class_install_action (widget_class, "screenshot.zoom-in", NULL, zoom_in_clicked); gtk_widget_class_install_action (widget_class, "screenshot.zoom-out", NULL, zoom_out_clicked); gtk_widget_class_install_action (widget_class, "screenshot.zoom-reset", NULL, reset_zoom_clicked); gtk_widget_class_install_action (widget_class, "screenshot.copy", NULL, copy_clicked); } static void bz_screenshot_page_init (BzScreenshotPage *self) { GtkEventController *scroll = NULL; GtkGesture *swipe = NULL; GtkGesture *click = NULL; gtk_widget_init_template (GTK_WIDGET (self)); swipe = gtk_gesture_swipe_new (); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (swipe), GTK_PHASE_CAPTURE); g_signal_connect_swapped (swipe, "swipe", G_CALLBACK (on_swipe), self); gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (swipe), TRUE); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (swipe)); click = gtk_gesture_click_new (); gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (click), 0); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (click), GTK_PHASE_CAPTURE); g_signal_connect (click, "pressed", G_CALLBACK (on_button_pressed), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (click)); scroll = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_VERTICAL); gtk_event_controller_set_propagation_phase (scroll, GTK_PHASE_BUBBLE); g_signal_connect_swapped (scroll, "scroll", G_CALLBACK (on_scroll), self); gtk_widget_add_controller (GTK_WIDGET (self), scroll); } const char * bz_screenshot_page_get_current_caption (BzScreenshotPage *self) { g_autoptr (GtkStringObject) caption_obj = NULL; guint n_items = 0; guint actual_index = 0; g_return_val_if_fail (BZ_IS_SCREENSHOT_PAGE (self), NULL); if (self->captions == NULL) return ""; n_items = g_list_model_get_n_items (self->captions); if (n_items == 0) return ""; actual_index = (self->initial_index + self->current_index) % n_items; caption_obj = g_list_model_get_item (self->captions, actual_index); if (caption_obj == NULL) return ""; return gtk_string_object_get_string (caption_obj); } void bz_screenshot_page_set_captions (BzScreenshotPage *self, GListModel *captions) { g_return_if_fail (BZ_IS_SCREENSHOT_PAGE (self)); g_set_object (&self->captions, captions); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_CAPTION]); } void bz_screenshot_page_close (BzScreenshotPage *self) { g_return_if_fail (BZ_IS_SCREENSHOT_PAGE (self)); back_clicked (self); } gboolean bz_screenshot_page_is_closing (BzScreenshotPage *self) { return self->closing; } AdwBin * bz_screenshot_page_new (GListModel *screenshots, GListModel *captions, guint initial_index, GtkWidget *source_widget) { BzScreenshotPage *page = NULL; page = g_object_new ( BZ_TYPE_SCREENSHOT_PAGE, "screenshots", screenshots, "current-index", initial_index, NULL); page->source_widget = source_widget; if (captions != NULL) bz_screenshot_page_set_captions (page, captions); return ADW_BIN (page); } static GdkTexture * render_widget_to_texture (GtkWidget *widget) { g_autoptr (GtkWidgetPaintable) paintable = NULL; g_autoptr (GtkSnapshot) snapshot = NULL; g_autoptr (GskRenderNode) node = NULL; GtkNative *native = NULL; GdkTexture *texture = NULL; paintable = GTK_WIDGET_PAINTABLE (gtk_widget_paintable_new (widget)); snapshot = gtk_snapshot_new (); gdk_paintable_snapshot (GDK_PAINTABLE (paintable), snapshot, gdk_paintable_get_intrinsic_width (GDK_PAINTABLE (paintable)), gdk_paintable_get_intrinsic_height (GDK_PAINTABLE (paintable))); node = gtk_snapshot_to_node (snapshot); native = gtk_widget_get_native (widget); if (node != NULL && native != NULL) texture = gsk_renderer_render_texture ( gtk_native_get_renderer (native), node, NULL); return texture; } static void on_animation_value (AdwAnimation *animation, GParamSpec *pspec, BzScreenshotPage *self) { self->animation_progress = adw_animation_get_value (animation); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void on_fade_animation_value (AdwAnimation *animation, GParamSpec *pspec, BzScreenshotPage *self) { gtk_widget_set_opacity (GTK_WIDGET (self), adw_animation_get_value (animation)); } static void on_close_animation_done (AdwAnimation *animation, BzScreenshotPage *self) { GtkWidget *parent = NULL; if (self->source_widget != NULL) gtk_widget_set_opacity (self->source_widget, 1.0); parent = gtk_widget_get_parent (GTK_WIDGET (self)); if (parent != NULL) gtk_overlay_remove_overlay (GTK_OVERLAY (parent), GTK_WIDGET (self)); } static void populate_carousel (BzScreenshotPage *self) { guint n_items = 0; guint i = 0; if (self->screenshots == NULL) return; n_items = g_list_model_get_n_items (self->screenshots); if (n_items == 0) return; for (guint offset = 0; offset < n_items; offset++) { g_autoptr (BzAsyncTexture) async_texture = NULL; GtkWidget *scrolled_window = NULL; GtkWidget *zoom_widget = NULL; GtkWidget *screenshot = NULL; i = (self->initial_index + offset) % n_items; async_texture = g_list_model_get_item (self->screenshots, i); if (async_texture == NULL) continue; screenshot = bz_screenshot_new (); bz_screenshot_set_paintable (BZ_SCREENSHOT (screenshot), GDK_PAINTABLE (async_texture)); bz_screenshot_set_rounded_corners (BZ_SCREENSHOT (screenshot), FALSE); gtk_widget_set_margin_top (screenshot, 25); gtk_widget_set_margin_bottom (screenshot, 25); gtk_widget_set_margin_start (screenshot, 25); gtk_widget_set_margin_end (screenshot, 25); zoom_widget = bz_zoom_new (); bz_zoom_set_child (BZ_ZOOM (zoom_widget), screenshot); scrolled_window = gtk_scrolled_window_new (); gtk_widget_set_hexpand (scrolled_window, TRUE); gtk_widget_set_vexpand (scrolled_window, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_NEVER); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled_window), zoom_widget); adw_carousel_append (self->carousel, scrolled_window); } } static void update_is_zoomed (BzScreenshotPage *self) { GtkWidget *screenshot = NULL; BzZoom *zoom = NULL; GtkScrolledWindow *scrolled_window = NULL; double zoom_level = 0.0; gboolean was_zoomed = FALSE; was_zoomed = self->is_zoomed; zoom = get_current_zoom (self, &scrolled_window); if (zoom != NULL) { g_object_get (zoom, "zoom-level", &zoom_level, NULL); screenshot = bz_zoom_get_child (zoom); if (screenshot != NULL) bz_screenshot_set_filter ( BZ_SCREENSHOT (screenshot), zoom_level <= 4.5 ? GSK_SCALING_FILTER_TRILINEAR : GSK_SCALING_FILTER_NEAREST); } self->is_zoomed = zoom != NULL && bz_zoom_is_transformed (zoom); if (was_zoomed != self->is_zoomed) { g_object_notify_by_pspec (G_OBJECT (self), props[PROP_IS_ZOOMED]); if (self->is_zoomed) gtk_scrolled_window_set_policy (scrolled_window, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); else gtk_scrolled_window_set_policy (scrolled_window, GTK_POLICY_NEVER, GTK_POLICY_NEVER); } } static BzZoom * get_current_zoom (BzScreenshotPage *self, GtkScrolledWindow **scrolled_window) { guint n_pages = 0; GtkWidget *page = NULL; GtkWidget *zoom = NULL; n_pages = adw_carousel_get_n_pages (self->carousel); if (self->current_index >= n_pages) return NULL; page = adw_carousel_get_nth_page (self->carousel, self->current_index); if (page == NULL) return NULL; zoom = gtk_scrolled_window_get_child (GTK_SCROLLED_WINDOW (page)); if (zoom != NULL) { if (scrolled_window != NULL) *scrolled_window = (GtkScrolledWindow *) page; return BZ_ZOOM (zoom); } else return NULL; } static void on_button_pressed (GtkGestureClick *gesture, int n_press, double x, double y, BzScreenshotPage *self) { if (gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)) == MOUSE_BACK_BUTTON) back_clicked (self); } static void on_swipe (BzScreenshotPage *self, gdouble vel_x, gdouble vel_y) { if (vel_y < -500.0 || vel_y > 500.0) back_clicked (self); } static gboolean on_scroll (BzScreenshotPage *self, gdouble dx, gdouble dy, GtkEventControllerScroll *controller) { GdkEvent *event = NULL; GdkDevice *device = NULL; GdkInputSource source = 0; event = gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (controller)); device = gdk_event_get_device (event); source = gdk_device_get_source (device); if (source == GDK_SOURCE_TOUCHPAD && (dy < -2.0 || dy > 2.0)) back_clicked (self); return GDK_EVENT_PROPAGATE; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshot-page.h��������������������������������������������������0000664�0000000�0000000�00000003025�15240005042�0021776�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-screenshot-page.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-async-texture.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_SCREENSHOT_PAGE (bz_screenshot_page_get_type ()) G_DECLARE_FINAL_TYPE (BzScreenshotPage, bz_screenshot_page, BZ, SCREENSHOT_PAGE, AdwBin) AdwBin * bz_screenshot_page_new (GListModel *screenshots, GListModel *captions, guint initial_index, GtkWidget *source_widget); void bz_screenshot_page_set_captions (BzScreenshotPage *self, GListModel *captions); const char * bz_screenshot_page_get_current_caption (BzScreenshotPage *self); void bz_screenshot_page_close (BzScreenshotPage *self); gboolean bz_screenshot_page_is_closing (BzScreenshotPage *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshot.c�������������������������������������������������������0000664�0000000�0000000�00000037474�15240005042�0021076�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-screenshot.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-screenshot.h" #include "bz-async-texture.h" #define TOP_HALF_FIXED_WIDTH 650 #define TOP_HALF_FIXED_HEIGHT 265 struct _BzScreenshot { GtkWidget parent_instance; GdkPaintable *paintable; double focus_x; double focus_y; gboolean rounded_corners; gboolean top_half; GskScalingFilter filter; }; G_DEFINE_FINAL_TYPE (BzScreenshot, bz_screenshot, GTK_TYPE_WIDGET) enum { PROP_0, PROP_PAINTABLE, PROP_FOCUS_X, PROP_FOCUS_Y, PROP_ROUNDED_CORNERS, PROP_TOP_HALF, PROP_FILTER, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void invalidate_contents (BzScreenshot *self, GdkPaintable *paintable); static void invalidate_size (BzScreenshot *self, GdkPaintable *paintable); static void async_loaded (BzScreenshot *self, GParamSpec *pspec, BzAsyncTexture *texture); static void bz_screenshot_dispose (GObject *object) { BzScreenshot *self = BZ_SCREENSHOT (object); if (self->paintable != NULL) { g_signal_handlers_disconnect_by_func (self->paintable, invalidate_contents, self); g_signal_handlers_disconnect_by_func (self->paintable, invalidate_size, self); g_signal_handlers_disconnect_by_func (self->paintable, async_loaded, self); } g_clear_object (&self->paintable); G_OBJECT_CLASS (bz_screenshot_parent_class)->dispose (object); } static void bz_screenshot_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzScreenshot *self = BZ_SCREENSHOT (object); switch (prop_id) { case PROP_PAINTABLE: g_value_set_object (value, bz_screenshot_get_paintable (self)); break; case PROP_FOCUS_X: g_value_set_double (value, bz_screenshot_get_focus_x (self)); break; case PROP_FOCUS_Y: g_value_set_double (value, bz_screenshot_get_focus_y (self)); break; case PROP_ROUNDED_CORNERS: g_value_set_boolean (value, bz_screenshot_get_rounded_corners (self)); break; case PROP_TOP_HALF: g_value_set_boolean (value, bz_screenshot_get_top_half (self)); break; case PROP_FILTER: g_value_set_enum (value, bz_screenshot_get_filter (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_screenshot_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzScreenshot *self = BZ_SCREENSHOT (object); switch (prop_id) { case PROP_PAINTABLE: bz_screenshot_set_paintable (self, g_value_get_object (value)); break; case PROP_FOCUS_X: bz_screenshot_set_focus_x (self, g_value_get_double (value)); break; case PROP_FOCUS_Y: bz_screenshot_set_focus_y (self, g_value_get_double (value)); break; case PROP_ROUNDED_CORNERS: bz_screenshot_set_rounded_corners (self, g_value_get_boolean (value)); break; case PROP_TOP_HALF: bz_screenshot_set_top_half (self, g_value_get_boolean (value)); break; case PROP_FILTER: bz_screenshot_set_filter (self, g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkSizeRequestMode bz_screenshot_get_request_mode (GtkWidget *widget) { BzScreenshot *self = BZ_SCREENSHOT (widget); if (self->top_half) return GTK_SIZE_REQUEST_CONSTANT_SIZE; return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; } static void bz_screenshot_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { BzScreenshot *self = BZ_SCREENSHOT (widget); if (self->paintable == NULL) return; if (self->top_half) { if (orientation == GTK_ORIENTATION_HORIZONTAL) { *minimum = TOP_HALF_FIXED_WIDTH; *natural = TOP_HALF_FIXED_WIDTH; } else { *minimum = TOP_HALF_FIXED_HEIGHT; *natural = TOP_HALF_FIXED_HEIGHT; } } else { if (orientation == GTK_ORIENTATION_VERTICAL) { int intrinsic_height; double intrinsic_aspect_ratio; intrinsic_height = gdk_paintable_get_intrinsic_height (self->paintable); intrinsic_aspect_ratio = gdk_paintable_get_intrinsic_aspect_ratio (self->paintable); if (for_size >= 0 && intrinsic_aspect_ratio > 0.0) { double result; result = ceil ((double) for_size / intrinsic_aspect_ratio); *minimum = (int) MIN (intrinsic_height, result); *natural = (int) MIN (intrinsic_height, result); } else { *minimum = 0; *natural = intrinsic_height; } } else { *minimum = 0; *natural = gdk_paintable_get_intrinsic_width (self->paintable); } } } static void bz_screenshot_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzScreenshot *self; int widget_width; int widget_height; double paintable_aspect; double scaled_w, scaled_h; double x, y; GskRoundedRect rect; self = BZ_SCREENSHOT (widget); if (self->paintable == NULL) return; widget_width = gtk_widget_get_width (widget); widget_height = gtk_widget_get_height (widget); paintable_aspect = gdk_paintable_get_intrinsic_aspect_ratio (self->paintable); if (self->top_half) { int paintable_width = gdk_paintable_get_intrinsic_width (self->paintable); if (paintable_width > TOP_HALF_FIXED_WIDTH) scaled_w = TOP_HALF_FIXED_WIDTH; else scaled_w = paintable_width > 0 ? paintable_width : TOP_HALF_FIXED_WIDTH; if (paintable_aspect > 0.0) scaled_h = scaled_w / paintable_aspect; else scaled_h = widget_height * 2.0; x = (widget_width - scaled_w) / 2.0; y = 0; } else { if (paintable_aspect > 0.0) { scaled_w = widget_width; scaled_h = scaled_w / paintable_aspect; if (scaled_h > widget_height) { scaled_h = widget_height; scaled_w = scaled_h * paintable_aspect; } } else { scaled_w = widget_width; scaled_h = widget_height; } x = (widget_width - scaled_w) / 2.0; y = (widget_height - scaled_h) / 2.0; } if (self->rounded_corners) { rect.corner[0].width = 10.0; rect.corner[0].height = 10.0; rect.corner[1].width = 10.0; rect.corner[1].height = 10.0; rect.corner[2].width = 10.0; rect.corner[2].height = 10.0; rect.corner[3].width = 10.0; rect.corner[3].height = 10.0; if (self->top_half) { rect.bounds = GRAPHENE_RECT_INIT (x, y, scaled_w, scaled_h); gtk_snapshot_push_rounded_clip (snapshot, &rect); gtk_snapshot_push_clip (snapshot, &GRAPHENE_RECT_INIT (0, 0, widget_width, widget_height)); } else { rect.bounds = GRAPHENE_RECT_INIT (0, 0, widget_width, widget_height); gtk_snapshot_push_rounded_clip (snapshot, &rect); } } gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y)); /* TODO: doesn't handle all cases properly */ if (self->filter == GSK_SCALING_FILTER_NEAREST && BZ_IS_ASYNC_TEXTURE (self->paintable)) { g_autoptr (GdkTexture) texture = NULL; texture = bz_async_texture_dup_texture (BZ_ASYNC_TEXTURE (self->paintable)); if (texture != NULL) gtk_snapshot_append_scaled_texture ( snapshot, texture, self->filter, &GRAPHENE_RECT_INIT (0.0, 0.0, scaled_w, scaled_h)); } else if (self->filter == GSK_SCALING_FILTER_NEAREST && GDK_IS_TEXTURE (self->paintable)) gtk_snapshot_append_scaled_texture ( snapshot, GDK_TEXTURE (self->paintable), self->filter, &GRAPHENE_RECT_INIT (0.0, 0.0, scaled_w, scaled_h)); else gdk_paintable_snapshot (self->paintable, snapshot, scaled_w, scaled_h); if (self->rounded_corners) { gtk_snapshot_pop (snapshot); if (self->top_half) gtk_snapshot_pop (snapshot); } } static void bz_screenshot_class_init (BzScreenshotClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_screenshot_dispose; object_class->get_property = bz_screenshot_get_property; object_class->set_property = bz_screenshot_set_property; props[PROP_PAINTABLE] = g_param_spec_object ( "paintable", NULL, NULL, GDK_TYPE_PAINTABLE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_FOCUS_X] = g_param_spec_double ( "focus-x", NULL, NULL, -1.0, G_MAXDOUBLE, -1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_FOCUS_Y] = g_param_spec_double ( "focus-y", NULL, NULL, -1.0, G_MAXDOUBLE, -1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ROUNDED_CORNERS] = g_param_spec_boolean ( "rounded-corners", NULL, NULL, TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TOP_HALF] = g_param_spec_boolean ( "top-half", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_FILTER] = g_param_spec_enum ( "filter", NULL, NULL, GSK_TYPE_SCALING_FILTER, GSK_SCALING_FILTER_TRILINEAR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); widget_class->get_request_mode = bz_screenshot_get_request_mode; widget_class->measure = bz_screenshot_measure; widget_class->snapshot = bz_screenshot_snapshot; } static void bz_screenshot_init (BzScreenshot *self) { self->focus_x = -1.0; self->focus_y = -1.0; self->rounded_corners = TRUE; self->top_half = FALSE; self->filter = GSK_SCALING_FILTER_TRILINEAR; } GtkWidget * bz_screenshot_new (void) { return g_object_new (BZ_TYPE_SCREENSHOT, NULL); } void bz_screenshot_set_paintable (BzScreenshot *self, GdkPaintable *paintable) { g_return_if_fail (BZ_IS_SCREENSHOT (self)); g_return_if_fail (paintable == NULL || GDK_IS_PAINTABLE (paintable)); if (self->paintable != NULL) { g_signal_handlers_disconnect_by_func (self->paintable, invalidate_contents, self); g_signal_handlers_disconnect_by_func (self->paintable, invalidate_size, self); g_signal_handlers_disconnect_by_func (self->paintable, async_loaded, self); } g_clear_object (&self->paintable); if (paintable != NULL) { self->paintable = g_object_ref (paintable); g_signal_connect_swapped (paintable, "invalidate-contents", G_CALLBACK (invalidate_contents), self); g_signal_connect_swapped (paintable, "invalidate-size", G_CALLBACK (invalidate_size), self); if (BZ_IS_ASYNC_TEXTURE (paintable)) g_signal_connect_swapped (paintable, "notify::loaded", G_CALLBACK (async_loaded), self); } gtk_widget_queue_resize (GTK_WIDGET (self)); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PAINTABLE]); } GdkPaintable * bz_screenshot_get_paintable (BzScreenshot *self) { g_return_val_if_fail (BZ_IS_SCREENSHOT (self), NULL); return self->paintable; } void bz_screenshot_set_focus_x (BzScreenshot *self, double focus_x) { g_return_if_fail (BZ_IS_SCREENSHOT (self)); self->focus_x = focus_x; gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FOCUS_X]); } double bz_screenshot_get_focus_x (BzScreenshot *self) { g_return_val_if_fail (BZ_IS_SCREENSHOT (self), 0.0); return self->focus_x; } void bz_screenshot_set_focus_y (BzScreenshot *self, double focus_y) { g_return_if_fail (BZ_IS_SCREENSHOT (self)); self->focus_y = focus_y; gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FOCUS_Y]); } double bz_screenshot_get_focus_y (BzScreenshot *self) { g_return_val_if_fail (BZ_IS_SCREENSHOT (self), 0.0); return self->focus_y; } void bz_screenshot_set_rounded_corners (BzScreenshot *self, gboolean rounded_corners) { g_return_if_fail (BZ_IS_SCREENSHOT (self)); if (self->rounded_corners == rounded_corners) return; self->rounded_corners = rounded_corners; gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ROUNDED_CORNERS]); } gboolean bz_screenshot_get_rounded_corners (BzScreenshot *self) { g_return_val_if_fail (BZ_IS_SCREENSHOT (self), TRUE); return self->rounded_corners; } void bz_screenshot_set_top_half (BzScreenshot *self, gboolean top_half) { g_return_if_fail (BZ_IS_SCREENSHOT (self)); if (self->top_half == top_half) return; self->top_half = top_half; gtk_widget_queue_resize (GTK_WIDGET (self)); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TOP_HALF]); } gboolean bz_screenshot_get_top_half (BzScreenshot *self) { g_return_val_if_fail (BZ_IS_SCREENSHOT (self), FALSE); return self->top_half; } void bz_screenshot_set_filter (BzScreenshot *self, GskScalingFilter filter) { g_return_if_fail (BZ_IS_SCREENSHOT (self)); if (self->filter == filter) return; self->filter = filter; gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FILTER]); } GskScalingFilter bz_screenshot_get_filter (BzScreenshot *self) { g_return_val_if_fail (BZ_IS_SCREENSHOT (self), FALSE); return self->filter; } static void invalidate_contents (BzScreenshot *self, GdkPaintable *paintable) { gtk_widget_queue_draw (GTK_WIDGET (self)); } static void invalidate_size (BzScreenshot *self, GdkPaintable *paintable) { gtk_widget_queue_resize (GTK_WIDGET (self)); } static void async_loaded (BzScreenshot *self, GParamSpec *pspec, BzAsyncTexture *texture) { gtk_widget_queue_draw (GTK_WIDGET (self)); gtk_widget_queue_resize (GTK_WIDGET (self)); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshot.h�������������������������������������������������������0000664�0000000�0000000�00000003744�15240005042�0021074�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-screenshot.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_SCREENSHOT (bz_screenshot_get_type ()) G_DECLARE_FINAL_TYPE (BzScreenshot, bz_screenshot, BZ, SCREENSHOT, GtkWidget) GtkWidget * bz_screenshot_new (void); void bz_screenshot_set_paintable (BzScreenshot *self, GdkPaintable *paintable); GdkPaintable * bz_screenshot_get_paintable (BzScreenshot *self); void bz_screenshot_set_focus_x (BzScreenshot *self, double focus_x); double bz_screenshot_get_focus_x (BzScreenshot *self); void bz_screenshot_set_focus_y (BzScreenshot *self, double focus_y); double bz_screenshot_get_focus_y (BzScreenshot *self); void bz_screenshot_set_rounded_corners (BzScreenshot *self, gboolean rounded_corners); gboolean bz_screenshot_get_rounded_corners (BzScreenshot *self); void bz_screenshot_set_top_half (BzScreenshot *self, gboolean top_half); gboolean bz_screenshot_get_top_half (BzScreenshot *self); void bz_screenshot_set_filter (BzScreenshot *self, GskScalingFilter filter); GskScalingFilter bz_screenshot_get_filter (BzScreenshot *self); G_END_DECLS ����������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshots-carousel.blp�������������������������������������������0000664�0000000�0000000�00000005456�15240005042�0023422�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; template $BzScreenshotsCarousel: Gtk.Widget { valign: start; accessibility { label: _("Screenshots Carousel"); } styles [ "screenshot-carousel", "frame", "carousel-box", ] layout-manager: Gtk.BinLayout {}; Gtk.Overlay { halign: fill; child: Gtk.Box { orientation: vertical; halign: fill; $BgeCarousel carousel { vexpand: true; hexpand: true; height-request: bind $get_carousel_height(template.compact) as <int>; allow-mouse-drag: true; allow-overshoot: true; allow-scroll-wheel: true; allow-raise: bind $invert_boolean(template.compact) as <bool>; create-widget => $on_create_widget(template); remove-widget => $on_remove_widget(template); model: SingleSelection selection { autoselect: true; model: bind template.model; notify::selected => $on_notify_selected(template); notify::model => $on_notify_model(template); }; } }; [overlay] Gtk.Revealer prev_button_revealer { transition-type: crossfade; reveal-child: false; halign: start; valign: center; can-focus: false; Gtk.Button prev_button { icon-name: "go-previous-symbolic"; valign: center; halign: start; clicked => $on_prev_clicked() swapped; styles [ "circular", "osd", ] } } [overlay] Gtk.Revealer next_button_revealer { transition-type: crossfade; reveal-child: false; halign: end; valign: center; can-focus: false; Gtk.Button next_button { icon-name: "go-next-symbolic"; valign: center; clicked => $on_next_clicked() swapped; styles [ "circular", "osd", ] } } [overlay] Gtk.Box no_screenshots_overlay { orientation: vertical; halign: center; valign: center; spacing: 12; visible: bind $is_empty(template.model) as <bool>; Gtk.Image { icon-name: "image-missing-symbolic"; pixel-size: 96; styles [ "dim-label", ] } Gtk.Label { label: _("No Screenshots"); styles [ "dim-label", "title-2", ] } } [overlay] Box { styles [ "osd-box", "pip-button", ] margin-end: 8; margin-bottom: 8; halign: end; valign: end; can-focus: false; visible: bind $not($is_empty(template.model) as <bool>) as <bool>; Gtk.Button { icon-name: "pip-out-symbolic"; tooltip-text: _("Open Screenshot Viewer"); clicked => $on_expand_clicked() swapped; styles [ "flat", ] } } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshots-carousel.c���������������������������������������������0000664�0000000�0000000�00000053022�15240005042�0023057�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-screenshots-carousel.c * * Copyright 2025 Alexander Vanhee * * Adapted from gs-screenshot-carousel.c * * Copyright (C) 2013-2016 Richard Hughes <richard@hughsie.com> * Copyright (C) 2013 Matthias Clasen <mclasen@redhat.com> * Copyright (C) 2015-2019 Kalev Lember <klember@redhat.com> * Copyright (C) 2019 Joaquim Rocha <jrocha@endlessm.com> * Copyright (C) 2021 Adrien Plazas <adrien.plazas@puri.sm> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <adwaita.h> #include <bge.h> #include <glib/gi18n.h> #include "bz-decorated-screenshot.h" #include "bz-screenshots-carousel.h" #include "bz-screenshot-page.h" #include "template-callbacks.h" #include "bz-window.h" #define LIGHT_CLASS "screenshot-carousel-light" #define DARK_CLASS "screenshot-carousel-dark" #define LIGHT_MIX_PERCENTAGE 15 #define DARK_MIX_PERCENTAGE 4 struct _BzScreenshotsCarousel { GtkWidget parent_instance; BgeCarousel *carousel; // GtkWidget *carousel_indicator; GtkButton *prev_button; GtkWidget *prev_button_revealer; GtkButton *next_button; GtkWidget *next_button_revealer; GtkSingleSelection *selection; GListModel *model; GListModel *captions; gboolean compact; char *light_accent_color; char *dark_accent_color; char *widget_css_class; GtkCssProvider *css; gulong items_changed_id; }; G_DEFINE_FINAL_TYPE (BzScreenshotsCarousel, bz_screenshots_carousel, GTK_TYPE_WIDGET) enum { PROP_0, PROP_MODEL, PROP_CAPTIONS, PROP_COMPACT, PROP_LIGHT_ACCENT_COLOR, PROP_DARK_ACCENT_COLOR, N_PROPS }; static GParamSpec *properties[N_PROPS]; static void refresh_css (BzScreenshotsCarousel *self); static void clear_css (BzScreenshotsCarousel *self); static void update_button_visibility (BzScreenshotsCarousel *self) { gdouble position; guint n_pages; if (!self->carousel) return; position = gtk_single_selection_get_selected (self->selection); n_pages = g_list_model_get_n_items (G_LIST_MODEL (self->selection)); if (n_pages == 0) { gtk_revealer_set_reveal_child (GTK_REVEALER (self->prev_button_revealer), FALSE); gtk_revealer_set_reveal_child (GTK_REVEALER (self->next_button_revealer), FALSE); return; } gtk_revealer_set_reveal_child (GTK_REVEALER (self->prev_button_revealer), position >= 0.5); gtk_revealer_set_reveal_child (GTK_REVEALER (self->next_button_revealer), position < n_pages - 1.5); } static void carousel_navigate (BzScreenshotsCarousel *self, AdwNavigationDirection direction) { guint n_children = 0; gdouble position = 0.0; n_children = g_list_model_get_n_items (G_LIST_MODEL (self->selection)); position = gtk_single_selection_get_selected (self->selection); position += (direction == ADW_NAVIGATION_DIRECTION_BACK) ? -1 : 1; position = round (position); position = MIN (position, n_children - 1); position = MAX (0, position); gtk_single_selection_set_selected (self->selection, position); } static void on_prev_clicked (BzScreenshotsCarousel *self) { if (!self->carousel) return; carousel_navigate (self, ADW_NAVIGATION_DIRECTION_BACK); } static void on_next_clicked (BzScreenshotsCarousel *self) { if (!self->carousel) return; carousel_navigate (self, ADW_NAVIGATION_DIRECTION_FORWARD); } static void on_notify_selected (BzScreenshotsCarousel *self) { update_button_visibility (self); } static void on_notify_model (BzScreenshotsCarousel *self) { guint n_items = g_list_model_get_n_items (G_LIST_MODEL (self->selection)); if (!self->compact && n_items >= 3) gtk_single_selection_set_selected (self->selection, 1); update_button_visibility (self); } static void open_screenshot_at_index (BzScreenshotsCarousel *self, guint index) { BzScreenshotPage *page = NULL; GtkWidget *picture = NULL; GtkWidget *child = NULL; GtkWidget *root = NULL; guint n_items; if (!self->model) return; n_items = g_list_model_get_n_items (self->model); if (index >= n_items) return; child = bge_carousel_get_nth_page (self->carousel, index); if (child != NULL) picture = gtk_widget_get_first_child (child); root = GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self))); if (!BZ_IS_WINDOW (root)) return; page = BZ_SCREENSHOT_PAGE (bz_screenshot_page_new (self->model, self->captions, index, picture)); bz_window_open_screenshot_page (BZ_WINDOW (root), page); } static void on_screenshot_clicked (BzDecoratedScreenshot *screenshot, BzScreenshotsCarousel *self) { BzAsyncTexture *async_texture = NULL; guint index = 0; guint n_items = 0; if (!self->model) return; async_texture = bz_decorated_screenshot_get_async_texture (screenshot); if (async_texture == NULL) return; n_items = g_list_model_get_n_items (self->model); for (guint i = 0; i < n_items; i++) { g_autoptr (BzAsyncTexture) item = NULL; item = g_list_model_get_item (self->model, i); if (item == async_texture) { index = i; break; } } open_screenshot_at_index (self, index); } static void on_expand_clicked (BzScreenshotsCarousel *self) { gdouble position; guint index; guint n_pages; if (!self->carousel || !self->model) return; n_pages = g_list_model_get_n_items (G_LIST_MODEL (self->selection)); if (n_pages == 0) return; position = gtk_single_selection_get_selected (self->selection); index = (guint) round (position); index = MIN (index, n_pages - 1); open_screenshot_at_index (self, index); } static int get_carousel_height (BzScreenshotsCarousel *self) { return self->compact ? 250 : 375; } static void on_screenshot_focus_changed (BzDecoratedScreenshot *screenshot, GParamSpec *pspec, BzScreenshotsCarousel *self) { if (!self->carousel) return; if (gtk_widget_has_focus (GTK_WIDGET (screenshot))) { BzAsyncTexture *texture = NULL; guint n_items = 0; texture = bz_decorated_screenshot_get_async_texture (screenshot); n_items = g_list_model_get_n_items (self->model); for (guint i = 0; i < n_items; i++) { g_autoptr (BzAsyncTexture) item = NULL; item = g_list_model_get_item (self->model, i); if (item == texture) { gtk_single_selection_set_selected (self->selection, i); break; } } } } static GtkWidget * on_create_widget (BzScreenshotsCarousel *self, BzAsyncTexture *item, BgeCarousel *carousel) { GtkWidget *screenshot = NULL; g_autofree char *caption = NULL; const char *shot_caption = NULL; guint n_items = 0; guint index = 0; screenshot = g_object_new (BZ_TYPE_DECORATED_SCREENSHOT, "async-texture", item, NULL); n_items = g_list_model_get_n_items (self->model); for (index = 0; index < n_items; index++) { g_autoptr (BzAsyncTexture) it = NULL; it = g_list_model_get_item (self->model, index); if (it == item) break; } if (self->captions != NULL && index < g_list_model_get_n_items (self->captions)) { g_autoptr (GtkStringObject) caption_obj = NULL; caption_obj = g_list_model_get_item (self->captions, index); if (caption_obj != NULL) shot_caption = gtk_string_object_get_string (caption_obj); } if (shot_caption != NULL && *shot_caption != '\0') caption = g_strdup_printf (_ ("Screenshot %u %s"), index + 1, shot_caption); else caption = g_strdup_printf (_ ("Screenshot %u"), index + 1); gtk_accessible_update_property (GTK_ACCESSIBLE (screenshot), GTK_ACCESSIBLE_PROPERTY_LABEL, caption, -1); g_signal_connect (screenshot, "clicked", G_CALLBACK (on_screenshot_clicked), self); g_signal_connect (screenshot, "notify::has-focus", G_CALLBACK (on_screenshot_focus_changed), self); return screenshot; } static void on_remove_widget (BzScreenshotsCarousel *self, BzDecoratedScreenshot *screenshot, BzAsyncTexture *item, BgeCarousel *carousel) { } static void dark_changed (BzScreenshotsCarousel *self, GParamSpec *pspec, AdwStyleManager *mgr) { gboolean is_dark; if (self->css == NULL) return; is_dark = adw_style_manager_get_dark (adw_style_manager_get_default ()); gtk_widget_remove_css_class (GTK_WIDGET (self), LIGHT_CLASS); gtk_widget_remove_css_class (GTK_WIDGET (self), DARK_CLASS); gtk_widget_add_css_class (GTK_WIDGET (self), is_dark ? DARK_CLASS : LIGHT_CLASS); } static void bz_screenshots_carousel_dispose (GObject *object) { BzScreenshotsCarousel *self = BZ_SCREENSHOTS_CAROUSEL (object); GtkWidget *root_child = gtk_widget_get_first_child (GTK_WIDGET (self)); if (self->model && self->items_changed_id) { g_signal_handler_disconnect (self->model, self->items_changed_id); self->items_changed_id = 0; } g_clear_object (&self->model); g_clear_object (&self->captions); clear_css (self); g_clear_pointer (&self->light_accent_color, g_free); g_clear_pointer (&self->dark_accent_color, g_free); g_clear_pointer (&self->widget_css_class, g_free); if (root_child != NULL) gtk_widget_unparent (root_child); gtk_widget_dispose_template (GTK_WIDGET (self), BZ_TYPE_SCREENSHOTS_CAROUSEL); G_OBJECT_CLASS (bz_screenshots_carousel_parent_class)->dispose (object); } static void bz_screenshots_carousel_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzScreenshotsCarousel *self = BZ_SCREENSHOTS_CAROUSEL (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, self->model); break; case PROP_CAPTIONS: g_value_set_object (value, self->captions); break; case PROP_COMPACT: g_value_set_boolean (value, self->compact); break; case PROP_LIGHT_ACCENT_COLOR: g_value_set_string (value, self->light_accent_color); break; case PROP_DARK_ACCENT_COLOR: g_value_set_string (value, self->dark_accent_color); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_screenshots_carousel_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzScreenshotsCarousel *self = BZ_SCREENSHOTS_CAROUSEL (object); switch (prop_id) { case PROP_MODEL: bz_screenshots_carousel_set_model (self, g_value_get_object (value)); break; case PROP_CAPTIONS: bz_screenshots_carousel_set_captions (self, g_value_get_object (value)); break; case PROP_COMPACT: bz_screenshots_carousel_set_compact (self, g_value_get_boolean (value)); break; case PROP_LIGHT_ACCENT_COLOR: bz_screenshots_carousel_set_light_accent_color (self, g_value_get_string (value)); break; case PROP_DARK_ACCENT_COLOR: bz_screenshots_carousel_set_dark_accent_color (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_screenshots_carousel_class_init (BzScreenshotsCarouselClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_screenshots_carousel_dispose; object_class->get_property = bz_screenshots_carousel_get_property; object_class->set_property = bz_screenshots_carousel_set_property; properties[PROP_MODEL] = g_param_spec_object ("model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_CAPTIONS] = g_param_spec_object ("captions", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_COMPACT] = g_param_spec_boolean ("compact", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_LIGHT_ACCENT_COLOR] = g_param_spec_string ("light-accent-color", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_DARK_ACCENT_COLOR] = g_param_spec_string ("dark-accent-color", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, N_PROPS, properties); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-screenshots-carousel.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzScreenshotsCarousel, carousel); gtk_widget_class_bind_template_child (widget_class, BzScreenshotsCarousel, prev_button); gtk_widget_class_bind_template_child (widget_class, BzScreenshotsCarousel, prev_button_revealer); gtk_widget_class_bind_template_child (widget_class, BzScreenshotsCarousel, next_button); gtk_widget_class_bind_template_child (widget_class, BzScreenshotsCarousel, next_button_revealer); gtk_widget_class_bind_template_child (widget_class, BzScreenshotsCarousel, selection); gtk_widget_class_bind_template_callback (widget_class, on_prev_clicked); gtk_widget_class_bind_template_callback (widget_class, on_next_clicked); gtk_widget_class_bind_template_callback (widget_class, on_notify_selected); gtk_widget_class_bind_template_callback (widget_class, on_notify_model); gtk_widget_class_bind_template_callback (widget_class, on_create_widget); gtk_widget_class_bind_template_callback (widget_class, on_remove_widget); gtk_widget_class_bind_template_callback (widget_class, on_expand_clicked); gtk_widget_class_bind_template_callback (widget_class, get_carousel_height); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_css_name (widget_class, "screenshot-carousel"); } static void bz_screenshots_carousel_init (BzScreenshotsCarousel *self) { gtk_widget_init_template (GTK_WIDGET (self)); g_signal_connect_object ( adw_style_manager_get_default (), "notify::dark", G_CALLBACK (dark_changed), self, G_CONNECT_SWAPPED); } GtkWidget * bz_screenshots_carousel_new (void) { return g_object_new (BZ_TYPE_SCREENSHOTS_CAROUSEL, NULL); } void bz_screenshots_carousel_set_model (BzScreenshotsCarousel *self, GListModel *model) { g_return_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self)); g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model)); if (self->model == model) return; if (self->model && self->items_changed_id) { g_signal_handler_disconnect (self->model, self->items_changed_id); self->items_changed_id = 0; } g_clear_object (&self->model); if (model) { self->model = g_object_ref (model); gtk_single_selection_set_selected (self->selection, 0); } g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]); } GListModel * bz_screenshots_carousel_get_model (BzScreenshotsCarousel *self) { g_return_val_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self), NULL); return self->model; } void bz_screenshots_carousel_set_captions (BzScreenshotsCarousel *self, GListModel *captions) { g_clear_object (&self->captions); if (captions) self->captions = g_object_ref (captions); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CAPTIONS]); } void bz_screenshots_carousel_set_compact (BzScreenshotsCarousel *self, gboolean compact) { g_return_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self)); if (self->compact == compact) return; self->compact = compact; g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COMPACT]); } gboolean bz_screenshots_carousel_get_compact (BzScreenshotsCarousel *self) { g_return_val_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self), FALSE); return self->compact; } void bz_screenshots_carousel_set_light_accent_color (BzScreenshotsCarousel *self, const char *color) { g_return_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self)); if (color == self->light_accent_color || (color != NULL && g_strcmp0 (self->light_accent_color, color) == 0)) return; g_clear_pointer (&self->light_accent_color, g_free); if (color != NULL) self->light_accent_color = g_strdup (color); refresh_css (self); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LIGHT_ACCENT_COLOR]); } const char * bz_screenshots_carousel_get_light_accent_color (BzScreenshotsCarousel *self) { g_return_val_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self), NULL); return self->light_accent_color; } void bz_screenshots_carousel_set_dark_accent_color (BzScreenshotsCarousel *self, const char *color) { g_return_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self)); if (color == self->dark_accent_color || (color != NULL && g_strcmp0 (self->dark_accent_color, color) == 0)) return; g_clear_pointer (&self->dark_accent_color, g_free); if (color != NULL) self->dark_accent_color = g_strdup (color); refresh_css (self); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_DARK_ACCENT_COLOR]); } const char * bz_screenshots_carousel_get_dark_accent_color (BzScreenshotsCarousel *self) { g_return_val_if_fail (BZ_IS_SCREENSHOTS_CAROUSEL (self), NULL); return self->dark_accent_color; } static void refresh_css (BzScreenshotsCarousel *self) { g_autofree char *css_string = NULL; g_autofree char *light_bg = NULL; g_autofree char *dark_bg = NULL; gboolean is_dark; clear_css (self); if (self->light_accent_color == NULL && self->dark_accent_color == NULL) return; self->widget_css_class = g_strdup_printf ("screenshot-carousel-%p", (void *) self); gtk_widget_add_css_class (GTK_WIDGET (self), self->widget_css_class); if (self->light_accent_color != NULL && self->dark_accent_color != NULL) light_bg = g_strdup_printf ("color-mix(in srgb, %s %d%%, rgb(255,255,255))", self->light_accent_color, LIGHT_MIX_PERCENTAGE); else if (self->light_accent_color != NULL) light_bg = g_strdup (self->light_accent_color); else if (self->dark_accent_color != NULL) light_bg = g_strdup_printf ("color-mix(in srgb, %s %d%%, rgb(255,255,255))", self->dark_accent_color, LIGHT_MIX_PERCENTAGE); if (self->light_accent_color != NULL && self->dark_accent_color != NULL) dark_bg = g_strdup_printf ("color-mix(in srgb, %s %d%%, rgb(29,29,32))", self->dark_accent_color, DARK_MIX_PERCENTAGE); else if (self->dark_accent_color != NULL) dark_bg = g_strdup (self->dark_accent_color); else if (self->light_accent_color != NULL) dark_bg = g_strdup_printf ("color-mix(in srgb, %s %d%%, rgb(29,29,32))", self->light_accent_color, DARK_MIX_PERCENTAGE); css_string = g_strdup_printf ( ".%s.%s{background-color:%s;}\n" ".%s.%s{background-color:%s;}", self->widget_css_class, LIGHT_CLASS, light_bg, self->widget_css_class, DARK_CLASS, dark_bg); self->css = gtk_css_provider_new (); gtk_css_provider_load_from_string (self->css, css_string); gtk_style_context_add_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (self->css), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); is_dark = adw_style_manager_get_dark (adw_style_manager_get_default ()); gtk_widget_add_css_class (GTK_WIDGET (self), is_dark ? DARK_CLASS : LIGHT_CLASS); } static void clear_css (BzScreenshotsCarousel *self) { gtk_widget_remove_css_class (GTK_WIDGET (self), LIGHT_CLASS); gtk_widget_remove_css_class (GTK_WIDGET (self), DARK_CLASS); if (self->widget_css_class != NULL) { gtk_widget_remove_css_class (GTK_WIDGET (self), self->widget_css_class); g_clear_pointer (&self->widget_css_class, g_free); } if (self->css != NULL) gtk_style_context_remove_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (self->css)); g_clear_pointer (&self->css, g_object_unref); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-screenshots-carousel.h���������������������������������������������0000664�0000000�0000000�00000004143�15240005042�0023064�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-screenshots-carousel.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_SCREENSHOTS_CAROUSEL (bz_screenshots_carousel_get_type ()) G_DECLARE_FINAL_TYPE (BzScreenshotsCarousel, bz_screenshots_carousel, BZ, SCREENSHOTS_CAROUSEL, GtkWidget) GtkWidget * bz_screenshots_carousel_new (void); void bz_screenshots_carousel_set_model (BzScreenshotsCarousel *self, GListModel *model); GListModel * bz_screenshots_carousel_get_model (BzScreenshotsCarousel *self); void bz_screenshots_carousel_set_captions (BzScreenshotsCarousel *self, GListModel *captions); void bz_screenshots_carousel_set_compact (BzScreenshotsCarousel *self, gboolean compact); gboolean bz_screenshots_carousel_get_compact (BzScreenshotsCarousel *self); void bz_screenshots_carousel_set_light_accent_color (BzScreenshotsCarousel *self, const char *color); const char * bz_screenshots_carousel_get_light_accent_color (BzScreenshotsCarousel *self); void bz_screenshots_carousel_set_dark_accent_color (BzScreenshotsCarousel *self, const char *color); const char * bz_screenshots_carousel_get_dark_accent_color (BzScreenshotsCarousel *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-bar.blp�����������������������������������������������������0000664�0000000�0000000�00000002114�15240005042�0021242�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzSearchBar: Widget { height-request: 40; accessible-role: search_box; styles [ "search-box", ] layout-manager: BoxLayout { spacing: 8; }; Image search_icon { icon-name: "system-search-symbolic"; accessible-role: presentation; } Text search_text { hexpand: true; placeholder-text: bind template.placeholder; activate => $text_activated_cb(template); changed => $text_changed_cb(template); } Adw.Spinner search_busy { visible: bind template.busy; width-request: 16; height-request: 16; } Adw.Bin end_widget_bin { EventControllerFocus { enter => $end_widget_focus_enter_cb(template); leave => $end_widget_focus_leave_cb(template); } } Button clear_button { icon-name: "edit-clear"; valign: center; focusable: false; visible: bind $has_text_cb(search_text.text); clicked => $clear_text_cb(template); styles [ "flat", "circular", "searchbar-button", ] accessibility { label: _("Clear Search"); } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-bar.c�������������������������������������������������������0000664�0000000�0000000�00000025042�15240005042�0020714�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * bz-search-bar.c * * Copyright 2026 Zelda Ahmed <zoeyahmed10@proton.me> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <http://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-search-bar.h" struct _BzSearchBar { GtkWidget parent_instance; GtkImage *search_icon; GtkText *search_text; AdwSpinner *search_busy; GtkButton *clear_button; AdwBin *end_widget_bin; gboolean busy; gchar *placeholder; }; static void bz_search_bar_accessible_init (GtkAccessibleInterface *iface); static void bz_search_bar_editable_init (GtkEditableInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE (BzSearchBar, bz_search_bar, GTK_TYPE_WIDGET, G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE, bz_search_bar_editable_init) G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE, bz_search_bar_accessible_init)) enum { PROP_0, PROP_BUSY, PROP_PLACEHOLDER, PROP_END_WIDGET, N_PROPS }; enum { SIGNAL_SEARCH_ACTIVATED, SIGNAL_SEARCH_CHANGED, N_SIGNALS }; static guint signals[N_SIGNALS]; static GParamSpec *properties[N_PROPS]; static void text_activated_cb (BzSearchBar *self, GtkText *text) { g_signal_emit (self, signals[SIGNAL_SEARCH_ACTIVATED], 0); } static void text_changed_cb (BzSearchBar *self, GtkText *text) { g_signal_emit (self, signals[SIGNAL_SEARCH_CHANGED], 0); } static gboolean has_text_cb (BzSearchBar *self, GtkButton *clear_button, const gchar *value) { const gchar *text; if (!self->search_text) return FALSE; text = gtk_editable_get_text (GTK_EDITABLE (self->search_text)); return strlen (text) != 0; } static void clear_text_cb (BzSearchBar *self, GtkButton *clear_button) { gtk_editable_set_text (GTK_EDITABLE (self->search_text), ""); } static gboolean bz_search_bar_grab_focus (GtkWidget *widget) { BzSearchBar *self = BZ_SEARCH_BAR (widget); return gtk_widget_grab_focus (GTK_WIDGET (self->search_text)); } static gboolean bz_search_bar_focus (GtkWidget *widget, GtkDirectionType direction) { BzSearchBar *self = BZ_SEARCH_BAR (widget); return gtk_widget_child_focus (GTK_WIDGET (self->search_text), direction); } static void end_widget_focus_enter_cb (BzSearchBar *self) { gtk_widget_add_css_class (GTK_WIDGET (self), "hide-focus"); } static void end_widget_focus_leave_cb (BzSearchBar *self) { gtk_widget_remove_css_class (GTK_WIDGET (self), "hide-focus"); } BzSearchBar * bz_search_bar_new (void) { return g_object_new (BZ_TYPE_SEARCH_BAR, NULL); } static void bz_search_bar_dispose (GObject *object) { BzSearchBar *self = BZ_SEARCH_BAR (object); gtk_editable_finish_delegate (GTK_EDITABLE (self)); gtk_widget_dispose_template (GTK_WIDGET (self), BZ_TYPE_SEARCH_BAR); G_OBJECT_CLASS (bz_search_bar_parent_class)->dispose (object); } static void bz_search_bar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzSearchBar *self = BZ_SEARCH_BAR (object); if (gtk_editable_delegate_get_property (object, prop_id, value, pspec)) return; switch (prop_id) { case PROP_BUSY: g_value_set_boolean (value, bz_search_bar_get_busy (self)); break; case PROP_END_WIDGET: g_value_set_object (value, bz_search_bar_get_end_widget (self)); break; case PROP_PLACEHOLDER: g_value_set_string (value, bz_search_bar_get_placeholder (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_search_bar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzSearchBar *self = BZ_SEARCH_BAR (object); if (gtk_editable_delegate_set_property (object, prop_id, value, pspec)) { if (prop_id == N_PROPS + GTK_EDITABLE_PROP_EDITABLE) { gtk_accessible_update_property (GTK_ACCESSIBLE (self->search_text), GTK_ACCESSIBLE_PROPERTY_READ_ONLY, !g_value_get_boolean (value), -1); } return; } switch (prop_id) { case PROP_BUSY: bz_search_bar_set_busy (self, g_value_get_boolean (value)); break; case PROP_END_WIDGET: bz_search_bar_set_end_widget (self, GTK_WIDGET (g_value_get_object (value))); break; case PROP_PLACEHOLDER: bz_search_bar_set_placeholder (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_search_bar_class_init (BzSearchBarClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-search-bar.ui"); object_class->dispose = bz_search_bar_dispose; object_class->get_property = bz_search_bar_get_property; object_class->set_property = bz_search_bar_set_property; widget_class->grab_focus = bz_search_bar_grab_focus; widget_class->focus = bz_search_bar_focus; properties[PROP_BUSY] = g_param_spec_boolean ("busy", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); properties[PROP_END_WIDGET] = g_param_spec_object ("end-widget", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); properties[PROP_PLACEHOLDER] = g_param_spec_string ("placeholder", NULL, NULL, "", G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); signals[SIGNAL_SEARCH_ACTIVATED] = g_signal_new ( "search-activated", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); signals[SIGNAL_SEARCH_CHANGED] = g_signal_new ( "search-changed", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); g_object_class_install_properties (object_class, N_PROPS, properties); gtk_editable_install_properties (object_class, N_PROPS); gtk_widget_class_bind_template_child (widget_class, BzSearchBar, search_icon); gtk_widget_class_bind_template_child (widget_class, BzSearchBar, search_text); gtk_widget_class_bind_template_child (widget_class, BzSearchBar, search_busy); gtk_widget_class_bind_template_child (widget_class, BzSearchBar, clear_button); gtk_widget_class_bind_template_child (widget_class, BzSearchBar, end_widget_bin); gtk_widget_class_bind_template_callback (widget_class, text_activated_cb); gtk_widget_class_bind_template_callback (widget_class, text_changed_cb); gtk_widget_class_bind_template_callback (widget_class, has_text_cb); gtk_widget_class_bind_template_callback (widget_class, clear_text_cb); gtk_widget_class_bind_template_callback (widget_class, end_widget_focus_enter_cb); gtk_widget_class_bind_template_callback (widget_class, end_widget_focus_leave_cb); } static GtkEditable * bz_search_bar_get_delegate (GtkEditable *editable) { return GTK_EDITABLE (BZ_SEARCH_BAR (editable)->search_text); } static void bz_search_bar_editable_init (GtkEditableInterface *iface) { iface->get_delegate = bz_search_bar_get_delegate; } static gboolean bz_search_bar_accessible_get_platform_state (GtkAccessible *self, GtkAccessiblePlatformState state) { return gtk_editable_delegate_get_accessible_platform_state (GTK_EDITABLE (self), state); } static void bz_search_bar_accessible_init (GtkAccessibleInterface *iface) { GtkAccessibleInterface *parent_iface = g_type_interface_peek_parent (iface); iface->get_at_context = parent_iface->get_at_context; iface->get_platform_state = bz_search_bar_accessible_get_platform_state; } static void bz_search_bar_init (BzSearchBar *self) { gtk_widget_init_template (GTK_WIDGET (self)); gtk_editable_init_delegate (GTK_EDITABLE (self)); } gboolean bz_search_bar_get_busy (BzSearchBar *self) { g_return_val_if_fail (BZ_IS_SEARCH_BAR (self), FALSE); return self->busy; } void bz_search_bar_set_busy (BzSearchBar *self, gboolean busy) { g_return_if_fail (BZ_IS_SEARCH_BAR (self)); if (self->busy == busy) return; self->busy = busy; g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_BUSY]); } GtkWidget * bz_search_bar_get_end_widget (BzSearchBar *self) { g_return_val_if_fail (BZ_IS_SEARCH_BAR (self), NULL); return adw_bin_get_child (self->end_widget_bin); } void bz_search_bar_set_end_widget (BzSearchBar *self, GtkWidget *widget) { GtkWidget *end_widget; g_return_if_fail (BZ_IS_SEARCH_BAR (self)); g_return_if_fail (!widget || GTK_IS_WIDGET (widget)); end_widget = adw_bin_get_child (self->end_widget_bin); if (end_widget == widget) return; adw_bin_set_child (self->end_widget_bin, widget); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_END_WIDGET]); } const gchar * bz_search_bar_get_placeholder (BzSearchBar *self) { g_return_val_if_fail (BZ_IS_SEARCH_BAR (self), NULL); if (!self->search_text) return NULL; return gtk_text_get_placeholder_text (self->search_text); } void bz_search_bar_set_placeholder (BzSearchBar *self, const gchar *text) { g_return_if_fail (BZ_IS_SEARCH_BAR (self)); if (g_strcmp0 (bz_search_bar_get_placeholder (self), text) == 0) return; gtk_text_set_placeholder_text (self->search_text, text); gtk_accessible_update_property (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER, text, -1); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_PLACEHOLDER]); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-bar.h�������������������������������������������������������0000664�0000000�0000000�00000002745�15240005042�0020726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * bz-search-bar.h * * Copyright 2026 Zelda Ahmed <zoeyahmed10@proton.me> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <http://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_SEARCH_BAR (bz_search_bar_get_type ()) G_DECLARE_FINAL_TYPE (BzSearchBar, bz_search_bar, BZ, SEARCH_BAR, GtkWidget) BzSearchBar * bz_search_bar_new (void); gboolean bz_search_bar_get_busy (BzSearchBar *self); void bz_search_bar_set_busy (BzSearchBar *self, gboolean busy); GtkWidget * bz_search_bar_get_end_widget (BzSearchBar *self); void bz_search_bar_set_end_widget (BzSearchBar *self, GtkWidget *widget); const gchar * bz_search_bar_get_placeholder (BzSearchBar *self); void bz_search_bar_set_placeholder (BzSearchBar *self, const gchar *text); G_END_DECLS ���������������������������bazaar-org-bazaar-48f93f4/src/bz-search-bias.txt����������������������������������������������������0000664�0000000�0000000�00000000722�15240005042�0021461�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=search_bias parent-prefix=g parent-name=object author=AUTOGEN include=<gtk/gtk.h> include="bz-linear-function.h" include="bz-exponential-function.h" property=regex char G_TYPE_STRING string property=convert_to char G_TYPE_STRING string property=linear_boost BzLinearFunction BZ_TYPE_LINEAR_FUNCTION object property=exponential_boost BzExponentialFunction BZ_TYPE_EXPONENTIAL_FUNCTION object property=boost_appids GListModel G_TYPE_LIST_MODEL object ����������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-engine.c����������������������������������������������������0000664�0000000�0000000�00000065313�15240005042�0021422�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-engine.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::SEARCH-ENGINE" #include "bz-search-engine.h" #include "bz-entry-group.h" #include "bz-finished-search-query.h" #include "bz-search-result.h" #include "env.h" #include "util.h" struct _BzSearchEngine { GObject parent_instance; GListModel *model; GListModel *biases; GPtrArray *biases_mirror; }; G_DEFINE_FINAL_TYPE (BzSearchEngine, bz_search_engine, G_TYPE_OBJECT); enum { PROP_0, PROP_MODEL, PROP_BIASES, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void biases_changed (BzSearchEngine *self, guint position, guint removed, guint added, GListModel *model); static double test_strings (const char *query, const char *against, gssize accept_min_size); typedef struct { guint idx; double val; } Score; static gint cmp_scores (Score *a, Score *b); enum { LINEAR, EXPONENTIAL, }; BZ_DEFINE_DATA ( bias, Bias, { gboolean invalid; GRegex *regex; char *convert_to; GHashTable *boost; int boost_kind; union { struct { double slope; double y_intercept; } linear_boost; struct { double factor; double y_intercept; } exponential_boost; }; }, BZ_RELEASE_DATA (regex, g_regex_unref); BZ_RELEASE_DATA (convert_to, g_free); BZ_RELEASE_DATA (boost, g_hash_table_unref)); BZ_DEFINE_DATA ( query_task, QueryTask, { char **terms; GPtrArray *snapshot; GPtrArray *biases; }, BZ_RELEASE_DATA (terms, g_strfreev); BZ_RELEASE_DATA (snapshot, g_ptr_array_unref); BZ_RELEASE_DATA (biases, g_ptr_array_unref)) static DexFuture * query_task_fiber (QueryTaskData *data); BZ_DEFINE_DATA ( query_sub_task, QuerySubTask, { char *query_utf8; GPtrArray *shallow_mirror; double threshold; guint work_offset; guint work_length; GPtrArray *active_biases; }, BZ_RELEASE_DATA (query_utf8, g_free); BZ_RELEASE_DATA (shallow_mirror, g_ptr_array_unref); BZ_RELEASE_DATA (active_biases, g_ptr_array_unref)); static DexFuture * query_sub_task_fiber (QuerySubTaskData *data); static inline GUnicodeType utf8_char_class (const char *s, gunichar *ch_out); static inline const char * utf8_skip_to_next_of_class (const char **s, GUnicodeType class, gsize *read_utf8); static void bz_search_engine_dispose (GObject *object) { BzSearchEngine *self = BZ_SEARCH_ENGINE (object); if (self->biases != NULL) g_signal_handlers_disconnect_by_func (self->biases, biases_changed, self); g_clear_object (&self->model); g_clear_object (&self->biases); g_clear_pointer (&self->biases_mirror, g_ptr_array_unref); G_OBJECT_CLASS (bz_search_engine_parent_class)->dispose (object); } static void bz_search_engine_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzSearchEngine *self = BZ_SEARCH_ENGINE (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, bz_search_engine_get_model (self)); break; case PROP_BIASES: g_value_set_object (value, bz_search_engine_get_biases (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_search_engine_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzSearchEngine *self = BZ_SEARCH_ENGINE (object); switch (prop_id) { case PROP_MODEL: bz_search_engine_set_model (self, g_value_get_object (value)); break; case PROP_BIASES: bz_search_engine_set_biases (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_search_engine_class_init (BzSearchEngineClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_search_engine_set_property; object_class->get_property = bz_search_engine_get_property; object_class->dispose = bz_search_engine_dispose; props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_BIASES] = g_param_spec_object ( "biases", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_search_engine_init (BzSearchEngine *self) { self->biases_mirror = g_ptr_array_new_with_free_func (bias_data_unref); } BzSearchEngine * bz_search_engine_new (void) { return g_object_new (BZ_TYPE_SEARCH_ENGINE, NULL); } GListModel * bz_search_engine_get_biases (BzSearchEngine *self) { g_return_val_if_fail (BZ_IS_SEARCH_ENGINE (self), NULL); return self->biases; } void bz_search_engine_set_biases (BzSearchEngine *self, GListModel *biases) { g_return_if_fail (BZ_IS_SEARCH_ENGINE (self)); g_return_if_fail (biases == NULL || G_IS_LIST_MODEL (biases)); if (self->biases != NULL) g_signal_handlers_disconnect_by_func (self->biases, biases_changed, self); g_clear_object (&self->biases); g_ptr_array_set_size (self->biases_mirror, 0); if (biases != NULL) { guint n_biases = 0; self->biases = g_object_ref (biases); n_biases = g_list_model_get_n_items (biases); biases_changed (self, 0, 0, n_biases, biases); g_signal_connect_swapped ( biases, "items-changed", G_CALLBACK (biases_changed), self); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_BIASES]); } GListModel * bz_search_engine_get_model (BzSearchEngine *self) { g_return_val_if_fail (BZ_IS_SEARCH_ENGINE (self), NULL); return self->model; } void bz_search_engine_set_model (BzSearchEngine *self, GListModel *model) { g_return_if_fail (BZ_IS_SEARCH_ENGINE (self)); g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model)); g_clear_object (&self->model); if (model != NULL) self->model = g_object_ref (model); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); } DexFuture * bz_search_engine_query (BzSearchEngine *self, const char *const *terms) { guint n_groups = 0; dex_return_error_if_fail (BZ_IS_SEARCH_ENGINE (self)); dex_return_error_if_fail (terms != NULL && *terms != NULL); if (self->model != NULL) n_groups = g_list_model_get_n_items (self->model); if (self->model == NULL || n_groups == 0 || **terms == '\0') { g_autoptr (GPtrArray) results = NULL; g_autoptr (BzFinishedSearchQuery) finished = NULL; results = g_ptr_array_new_with_free_func (g_object_unref); g_ptr_array_set_size (results, n_groups); for (guint i = 0; i < results->len; i++) { g_autoptr (BzEntryGroup) group = NULL; g_autoptr (BzSearchResult) result = NULL; group = g_list_model_get_item (self->model, i); result = bz_search_result_new (); bz_search_result_set_group (result, group); bz_search_result_set_original_index (result, i); g_ptr_array_index (results, i) = g_steal_pointer (&result); } finished = bz_finished_search_query_new (); bz_finished_search_query_set_interpreted_query (finished, ""); bz_finished_search_query_set_results (finished, results); bz_finished_search_query_set_n_results (finished, n_groups); bz_finished_search_query_set_elapsed (finished, 0.0); return dex_future_new_for_object (finished); } else { g_autoptr (GPtrArray) snapshot = NULL; g_autoptr (QueryTaskData) data = NULL; snapshot = g_ptr_array_new_with_free_func (g_object_unref); g_ptr_array_set_size (snapshot, n_groups); for (guint i = 0; i < snapshot->len; i++) g_ptr_array_index (snapshot, i) = g_list_model_get_item (self->model, i); data = query_task_data_new (); data->terms = g_strdupv ((gchar **) terms); data->snapshot = g_steal_pointer (&snapshot); data->biases = g_ptr_array_ref (self->biases_mirror); return dex_scheduler_spawn ( dex_thread_pool_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) query_task_fiber, query_task_data_ref (data), query_task_data_unref); } } static void biases_changed (BzSearchEngine *self, guint position, guint removed, guint added, GListModel *model) { g_autoptr (GPtrArray) new_mirror = NULL; /* Since `self->biases_mirror` is used in other threads, it should be immutable after its construction; so we have to make a new mirror upon every change */ new_mirror = g_ptr_array_new_with_free_func (bias_data_unref); g_ptr_array_set_size (new_mirror, self->biases_mirror->len + added - removed); #define COPY_OVER(_old_idx, _new_idx, _len) \ for (guint _i = 0; _i < (_len); _i++) \ { \ BiasData *_data = NULL; \ BiasData **_loc = NULL; \ \ _data = g_ptr_array_index (self->biases_mirror, (_old_idx) + _i); \ _loc = (BiasData **) &g_ptr_array_index (new_mirror, (_new_idx) + _i); \ *_loc = bias_data_ref (_data); \ } COPY_OVER (0, 0, position); COPY_OVER (position + removed, position + added, self->biases_mirror->len - (position + removed)); #undef COPY_OVER for (guint i = 0; i < added; i++) { g_autoptr (GError) local_error = NULL; BiasData **loc = NULL; g_autoptr (BzSearchBias) bias = NULL; const char *regex_string = NULL; const char *convert_to = NULL; GListModel *boost_appids = NULL; BzLinearFunction *linear_function = NULL; BzExponentialFunction *exponential_function = NULL; g_autoptr (GRegex) regex = NULL; g_autoptr (GHashTable) boost = NULL; g_autoptr (BiasData) data = NULL; loc = (BiasData **) &g_ptr_array_index (new_mirror, position + i); bias = g_list_model_get_item (model, position + i); regex_string = bz_search_bias_get_regex (bias); convert_to = bz_search_bias_get_convert_to (bias); boost_appids = bz_search_bias_get_boost_appids (bias); linear_function = bz_search_bias_get_linear_boost (bias); exponential_function = bz_search_bias_get_exponential_boost (bias); #define SKIP() \ G_STMT_START \ { \ g_autoptr (BiasData) _data = NULL; \ \ _data = bias_data_new (); \ _data->invalid = TRUE; \ *loc = bias_data_ref (_data); \ } \ G_STMT_END if (regex_string == NULL || (convert_to == NULL && (boost_appids == NULL || (linear_function == NULL && exponential_function == NULL)))) { g_critical ("Bias is incomplete! Skipping..."); SKIP (); continue; } if (linear_function != NULL && exponential_function != NULL) { g_critical ("Search bias can only have one boost function! Skipping..."); SKIP (); continue; } regex = g_regex_new ( regex_string, G_REGEX_OPTIMIZE, G_REGEX_MATCH_DEFAULT, &local_error); if (regex == NULL) { g_critical ("Bias regex \"%s\" is invalid: %s", regex_string, local_error->message); SKIP (); continue; } #undef SKIP if (boost_appids != NULL) { guint n_appids = 0; n_appids = g_list_model_get_n_items (boost_appids); if (n_appids > 0) { boost = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); for (guint j = 0; j < n_appids; j++) { g_autoptr (GtkStringObject) string = NULL; const char *appid = NULL; string = g_list_model_get_item (boost_appids, j); appid = gtk_string_object_get_string (string); g_hash_table_replace (boost, g_strdup (appid), NULL); } } } data = bias_data_new (); data->regex = g_regex_ref (regex); data->convert_to = bz_maybe_strdup (convert_to); data->boost = bz_maybe_ref (boost, g_hash_table_ref); if (linear_function != NULL) { data->boost_kind = LINEAR; data->linear_boost.slope = bz_linear_function_get_slope (linear_function); data->linear_boost.y_intercept = bz_linear_function_get_y_intercept (linear_function); } if (exponential_function != NULL) { data->boost_kind = EXPONENTIAL; data->exponential_boost.factor = bz_exponential_function_get_factor (exponential_function); data->exponential_boost.y_intercept = bz_exponential_function_get_y_intercept (exponential_function); } *loc = bias_data_ref (data); } g_clear_pointer (&self->biases_mirror, g_ptr_array_unref); self->biases_mirror = g_steal_pointer (&new_mirror); } static DexFuture * query_task_fiber (QueryTaskData *data) { char **terms = data->terms; GPtrArray *shallow_mirror = data->snapshot; GPtrArray *biases = data->biases; g_autoptr (GError) local_error = NULL; gboolean result = FALSE; g_autoptr (GTimer) timer = NULL; g_autofree char *query_utf8 = NULL; guint n_sub_tasks = 0; guint scores_per_task = 0; g_autoptr (GPtrArray) active_biases = NULL; g_autoptr (GPtrArray) sub_futures = NULL; g_autoptr (GArray) scores = NULL; g_autoptr (GPtrArray) results = NULL; g_autoptr (BzFinishedSearchQuery) finished = NULL; timer = g_timer_new (); query_utf8 = g_strjoinv (" ", terms); n_sub_tasks = MAX (1, MIN (shallow_mirror->len / 512, g_get_num_processors ())); scores_per_task = shallow_mirror->len / n_sub_tasks; active_biases = g_ptr_array_new_with_free_func (bias_data_unref); for (guint i = 0; i < biases->len; i++) { BiasData *bias = NULL; bias = g_ptr_array_index (biases, i); if (bias->invalid) continue; if (!g_regex_match (bias->regex, query_utf8, G_REGEX_MATCH_DEFAULT, NULL)) continue; if (bias->convert_to != NULL) { g_autofree char *tmp = NULL; tmp = g_regex_replace ( bias->regex, query_utf8, -1, 0, bias->convert_to, G_REGEX_MATCH_DEFAULT, NULL); if (tmp != NULL) { g_clear_pointer (&query_utf8, g_free); query_utf8 = g_steal_pointer (&tmp); } } g_ptr_array_add (active_biases, bias_data_ref (bias)); } sub_futures = g_ptr_array_new_with_free_func (dex_unref); for (guint i = 0; i < n_sub_tasks; i++) { g_autoptr (QuerySubTaskData) sub_data = NULL; g_autoptr (DexFuture) future = NULL; sub_data = query_sub_task_data_new (); sub_data->query_utf8 = g_strdup (query_utf8); sub_data->shallow_mirror = g_ptr_array_ref (shallow_mirror); sub_data->threshold = 1.0; sub_data->work_offset = i * scores_per_task; sub_data->work_length = scores_per_task; sub_data->active_biases = g_ptr_array_ref (active_biases); if (i >= n_sub_tasks - 1) sub_data->work_length += shallow_mirror->len % n_sub_tasks; future = dex_scheduler_spawn ( dex_thread_pool_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) query_sub_task_fiber, query_sub_task_data_ref (sub_data), query_sub_task_data_unref); g_ptr_array_add (sub_futures, g_steal_pointer (&future)); } result = dex_await (dex_future_allv ( (DexFuture *const *) sub_futures->pdata, sub_futures->len), &local_error); if (!result) return dex_future_new_for_error (g_steal_pointer (&local_error)); scores = g_array_new (FALSE, FALSE, sizeof (Score)); for (guint i = 0; i < sub_futures->len; i++) { DexFuture *future = NULL; GArray *scores_out = NULL; future = g_ptr_array_index (sub_futures, i); scores_out = g_value_get_boxed (dex_future_get_value (future, NULL)); if (scores_out->len > 0) g_array_append_vals (scores, scores_out->data, scores_out->len); } if (scores->len > 0) g_array_sort (scores, (GCompareFunc) cmp_scores); results = g_ptr_array_new_with_free_func (g_object_unref); g_ptr_array_set_size (results, scores->len); for (guint i = 0; i < scores->len; i++) { Score *score = NULL; BzEntryGroup *group = NULL; g_autoptr (BzSearchResult) search_result = NULL; score = &g_array_index (scores, Score, i); group = g_ptr_array_index (shallow_mirror, score->idx); search_result = bz_search_result_new (); bz_search_result_set_group (search_result, group); bz_search_result_set_original_index (search_result, score->idx); bz_search_result_set_score (search_result, score->val); g_ptr_array_index (results, i) = g_steal_pointer (&search_result); } finished = bz_finished_search_query_new (); bz_finished_search_query_set_interpreted_query (finished, query_utf8); bz_finished_search_query_set_results (finished, results); bz_finished_search_query_set_n_results (finished, results->len); bz_finished_search_query_set_elapsed (finished, g_timer_elapsed (timer, NULL)); return dex_future_new_for_object (finished); } static DexFuture * query_sub_task_fiber (QuerySubTaskData *data) { GPtrArray *shallow_mirror = data->shallow_mirror; char *query_utf8 = data->query_utf8; double threshold = data->threshold; guint work_offset = data->work_offset; guint work_length = data->work_length; GPtrArray *active_biases = data->active_biases; g_autoptr (GArray) scores_out = NULL; scores_out = g_array_new (FALSE, FALSE, sizeof (Score)); for (guint i = 0; i < work_length; i++) { g_autoptr (GMutexLocker) locker = NULL; BzEntryGroup *group = NULL; const char *id = NULL; const char *title = NULL; double score = 0.0; group = g_ptr_array_index (shallow_mirror, work_offset + i); locker = bz_entry_group_lock (group); if (!bz_entry_group_is_searchable (group)) continue; id = bz_entry_group_get_id (group); title = bz_entry_group_get_title (group); if ((id != NULL && g_strcmp0 (query_utf8, id) == 0) || (title != NULL && strcasecmp (query_utf8, title) == 0)) score = (double) G_MAXINT; else { const char *developer = NULL; const char *description = NULL; const char *search_tokens = NULL; developer = bz_entry_group_get_developer (group); description = bz_entry_group_get_description (group); search_tokens = bz_entry_group_get_search_tokens (group); #define EVALUATE_STRING(_s, _accept_min_size) \ ((_s) != NULL \ ? (test_strings (query_utf8, (_s), (_accept_min_size))) \ : 0.0) score += EVALUATE_STRING (title, 2) * 2.0; score += EVALUATE_STRING (developer, 2) * 1.0; score += EVALUATE_STRING (description, 3) * 1.0; score += EVALUATE_STRING (search_tokens, -1) * 1.5; #undef EVALUATE_STRING } for (guint j = 0; j < active_biases->len; j++) { BiasData *bias = NULL; bias = g_ptr_array_index (active_biases, j); if (bias->boost == NULL) continue; if (!g_hash_table_contains (bias->boost, id)) continue; switch (bias->boost_kind) { case LINEAR: score = bias->linear_boost.slope * score + bias->linear_boost.y_intercept; break; case EXPONENTIAL: score = pow (bias->exponential_boost.factor, score) * bias->exponential_boost.y_intercept; break; default: break; } } if (score > threshold) { Score append = { 0 }; append.idx = work_offset + i; append.val = score; g_array_append_val (scores_out, append); } } return dex_future_new_take_boxed (G_TYPE_ARRAY, g_steal_pointer (&scores_out)); } #define UTF8_FOREACH_FORWARD(_var, _s) \ for (const char *_var = (_s); \ _var != NULL && *_var != '\0'; \ _var = g_utf8_next_char (_var)) #define UTF8_FOREACH_FORWARD_WITH_END(_var, _s, _end) \ for (const char *_var = (_s); \ _var != NULL && *_var != '\0' && _var < (_end); \ _var = g_utf8_next_char (_var)) #define UTF8_FOREACH_BACKWARD(_var, _s, _start) \ for (const char *_var = (_s); \ _var != NULL && _var >= (_start); \ _var = g_utf8_prev_char (_var)) #define UTF8_FOREACH_TOKEN_FORWARDS(_start_var, _end_var, _s, _token_len) \ for (const char *_start_var = (_s), *_end_var = utf8_skip_to_next_of_class (&_start_var, G_UNICODE_SPACE_SEPARATOR, (_token_len)); \ _start_var != NULL && *_start_var != '\0'; \ _start_var = _end_var, _end_var = utf8_skip_to_next_of_class (&_start_var, G_UNICODE_SPACE_SEPARATOR, (_token_len))) static double test_strings (const char *query, const char *against, gssize accept_min_size) { double score = 0.0; gsize query_tok_utf8_len = 0; gsize against_tok_utf8_len = 0; UTF8_FOREACH_TOKEN_FORWARDS (query_tok_start, query_tok_end, query, &query_tok_utf8_len) { gboolean query_token_has_match = FALSE; UTF8_FOREACH_TOKEN_FORWARDS (against_tok_start, against_tok_end, against, &against_tok_utf8_len) { gboolean match = FALSE; gsize consumed = 0; if (accept_min_size > 0 && against_tok_utf8_len < accept_min_size) continue; UTF8_FOREACH_FORWARD_WITH_END (against_ptr, against_tok_start, against_tok_end) { const char *against_check_ptr = NULL; gunichar against_ch = 0; if (query_tok_utf8_len > against_tok_utf8_len - consumed) break; match = TRUE; against_check_ptr = against_ptr; against_ch = g_unichar_tolower (g_utf8_get_char (against_ptr)); UTF8_FOREACH_FORWARD_WITH_END (query_ptr, query_tok_start, query_tok_end) { gunichar query_ch = 0; query_ch = g_unichar_tolower (g_utf8_get_char (query_ptr)); if (against_ch != query_ch) { match = FALSE; break; } against_check_ptr = g_utf8_next_char (against_check_ptr); against_ch = g_unichar_tolower (g_utf8_get_char (against_check_ptr)); } if (match) break; else consumed++; } if (match) { score += (double) (query_tok_utf8_len * query_tok_utf8_len) / (double) against_tok_utf8_len; query_token_has_match = TRUE; } } if (!query_token_has_match) { score = 0.0; break; } } return score; } static inline GUnicodeType utf8_char_class (const char *s, gunichar *ch_out) { gunichar ch = 0; GUnicodeType cl = 0; ch = g_utf8_get_char (s); cl = g_unichar_type (ch); if (ch_out != NULL) *ch_out = ch; return cl; } static inline const char * utf8_skip_to_next_of_class (const char **s, GUnicodeType class, gsize *read_utf8) { gboolean skipped = FALSE; if (read_utf8 != NULL) *read_utf8 = 0; UTF8_FOREACH_FORWARD (p, *s) { if (utf8_char_class (p, NULL) == class) { if (skipped) return p; } else { if (!skipped) { *s = p; skipped = TRUE; } if (read_utf8 != NULL) (*read_utf8)++; } } /* return the end of the string if nothing was found */ return *s + strlen (*s); } static gint cmp_scores (Score *a, Score *b) { return (b->val - a->val < 0.0) ? -1 : 1; } /* End of bz-search-engine.c */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-engine.h����������������������������������������������������0000664�0000000�0000000�00000002774�15240005042�0021431�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-engine.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include <libdex.h> G_BEGIN_DECLS #define BZ_TYPE_SEARCH_ENGINE (bz_search_engine_get_type ()) G_DECLARE_FINAL_TYPE (BzSearchEngine, bz_search_engine, BZ, SEARCH_ENGINE, GObject) BzSearchEngine * bz_search_engine_new (void); GListModel * bz_search_engine_get_model (BzSearchEngine *self); void bz_search_engine_set_model (BzSearchEngine *self, GListModel *model); GListModel * bz_search_engine_get_biases (BzSearchEngine *self); void bz_search_engine_set_biases (BzSearchEngine *self, GListModel *biases); DexFuture * bz_search_engine_query (BzSearchEngine *self, const char *const *terms); G_END_DECLS /* End of bz-search-engine.h */ ����bazaar-org-bazaar-48f93f4/src/bz-search-filter-popover.blp������������������������������������������0000664�0000000�0000000�00000003255�15240005042�0023462�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzSearchFilterPopover: Gtk.Popover { child: ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; child: Box { orientation: vertical; spacing: 12; margin-top: 12; margin-bottom: 12; margin-start: 12; margin-end: 12; Label { label: _("Filters"); halign: start; styles [ "heading", ] } Adw.WrapBox { justify: fill; child-spacing: 6; line-spacing: 6; natural-line-length: 320; justify-last-line: false; Button verified_button { name: "verified"; label: _("_Verified"); clicked => $on_filter_button_clicked(); use-underline: true; } Button free_button { name: "free"; label: _("_Free/Open"); clicked => $on_filter_button_clicked(); use-underline: true; } Button non_eol_button { name: "non-eol"; label: _("Non-_EOL"); clicked => $on_filter_button_clicked(); use-underline: true; tooltip-text: _("Filter out End-of-Life apps"); } Button mobile_button { name: "mobile"; label: _("_Mobile Friendly"); clicked => $on_filter_button_clicked(); use-underline: true; } } Label { label: _("Categories"); halign: start; styles [ "heading", ] } Adw.WrapBox wrap_box { justify: fill; child-spacing: 6; line-spacing: 6; natural-line-length: 320; } }; }; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-filter-popover.c��������������������������������������������0000664�0000000�0000000�00000040426�15240005042�0023130�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-filter-popover.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-application.h" #include "bz-category-flags.h" #include "bz-flathub-category.h" #include "bz-flathub-state.h" #include "bz-search-filter-popover.h" #include "bz-state-info.h" struct _BzSearchFilterPopover { GtkPopover parent_instance; BzCategoryFlags selected_categories; gboolean only_verified; gboolean only_free; gboolean only_non_eol; gboolean only_mobile; gboolean has_active_filters; gboolean state_forced_verified; gboolean state_forced_free; gboolean state_forced_non_eol; AdwWrapBox *wrap_box; GtkWidget *verified_button; GtkWidget *free_button; GtkWidget *non_eol_button; GtkWidget *mobile_button; }; G_DEFINE_FINAL_TYPE (BzSearchFilterPopover, bz_search_filter_popover, GTK_TYPE_POPOVER) enum { PROP_0, PROP_SELECTED_CATEGORIES, PROP_ONLY_VERIFIED, PROP_ONLY_FREE, PROP_ONLY_NON_EOL, PROP_ONLY_MOBILE, PROP_HAS_ACTIVE_FILTERS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void update_has_active_filters (BzSearchFilterPopover *self); static void apply_filter_button (BzSearchFilterPopover *self, guint prop, gboolean value, gboolean from_state); static void sync_from_state (BzSearchFilterPopover *self, const char *property); static void on_state_setting_changed (BzSearchFilterPopover *self, GParamSpec *pspec, BzStateInfo *state); static void on_state_flathub_changed (BzSearchFilterPopover *self, GParamSpec *pspec, BzStateInfo *state); static void on_category_button_clicked (GtkButton *button, gpointer user_data); static void rebuild_category_buttons (BzSearchFilterPopover *self); static void on_filter_button_clicked (GtkButton *button, gpointer user_data); static void bz_search_filter_popover_dispose (GObject *object) { BzSearchFilterPopover *self = BZ_SEARCH_FILTER_POPOVER (object); BzStateInfo *state = NULL; state = bz_state_info_get_default (); if (state != NULL) g_signal_handlers_disconnect_by_data (state, self); gtk_widget_dispose_template (GTK_WIDGET (object), BZ_TYPE_SEARCH_FILTER_POPOVER); G_OBJECT_CLASS (bz_search_filter_popover_parent_class)->dispose (object); } static void bz_search_filter_popover_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzSearchFilterPopover *self = BZ_SEARCH_FILTER_POPOVER (object); switch (prop_id) { case PROP_SELECTED_CATEGORIES: g_value_set_flags (value, self->selected_categories); break; case PROP_ONLY_VERIFIED: g_value_set_boolean (value, self->only_verified); break; case PROP_ONLY_FREE: g_value_set_boolean (value, self->only_free); break; case PROP_ONLY_NON_EOL: g_value_set_boolean (value, self->only_non_eol); break; case PROP_ONLY_MOBILE: g_value_set_boolean (value, self->only_mobile); break; case PROP_HAS_ACTIVE_FILTERS: g_value_set_boolean (value, self->has_active_filters); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_search_filter_popover_class_init (BzSearchFilterPopoverClass *klass) { GObjectClass *object_class = NULL; GtkWidgetClass *widget_class = NULL; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_search_filter_popover_dispose; object_class->get_property = bz_search_filter_popover_get_property; props[PROP_SELECTED_CATEGORIES] = g_param_spec_flags ( "selected-categories", NULL, NULL, BZ_TYPE_CATEGORY_FLAGS, BZ_CATEGORY_FLAGS_NONE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ONLY_VERIFIED] = g_param_spec_boolean ( "only-verified", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ONLY_FREE] = g_param_spec_boolean ( "only-free", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ONLY_NON_EOL] = g_param_spec_boolean ( "only-non-eol", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_ONLY_MOBILE] = g_param_spec_boolean ( "only-mobile", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_HAS_ACTIVE_FILTERS] = g_param_spec_boolean ( "has-active-filters", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-search-filter-popover.ui"); gtk_widget_class_bind_template_child (widget_class, BzSearchFilterPopover, wrap_box); gtk_widget_class_bind_template_child (widget_class, BzSearchFilterPopover, verified_button); gtk_widget_class_bind_template_child (widget_class, BzSearchFilterPopover, free_button); gtk_widget_class_bind_template_child (widget_class, BzSearchFilterPopover, non_eol_button); gtk_widget_class_bind_template_child (widget_class, BzSearchFilterPopover, mobile_button); gtk_widget_class_bind_template_callback (widget_class, on_filter_button_clicked); } static void bz_search_filter_popover_init (BzSearchFilterPopover *self) { BzStateInfo *state = NULL; gtk_widget_init_template (GTK_WIDGET (self)); state = bz_state_info_get_default (); g_signal_connect_swapped (state, "notify::show-only-verified", G_CALLBACK (on_state_setting_changed), self); g_signal_connect_swapped (state, "notify::show-only-foss", G_CALLBACK (on_state_setting_changed), self); g_signal_connect_swapped (state, "notify::hide-eol", G_CALLBACK (on_state_setting_changed), self); g_signal_connect_swapped (state, "notify::flathub", G_CALLBACK (on_state_flathub_changed), self); sync_from_state (self, NULL); rebuild_category_buttons (self); } GtkWidget * bz_search_filter_popover_new (void) { return g_object_new (BZ_TYPE_SEARCH_FILTER_POPOVER, NULL); } BzCategoryFlags bz_search_filter_popover_get_selected_categories (BzSearchFilterPopover *self) { g_return_val_if_fail (BZ_IS_SEARCH_FILTER_POPOVER (self), BZ_CATEGORY_FLAGS_NONE); return self->selected_categories; } gboolean bz_search_filter_popover_get_only_verified (BzSearchFilterPopover *self) { g_return_val_if_fail (BZ_IS_SEARCH_FILTER_POPOVER (self), FALSE); return self->only_verified; } gboolean bz_search_filter_popover_get_only_free (BzSearchFilterPopover *self) { g_return_val_if_fail (BZ_IS_SEARCH_FILTER_POPOVER (self), FALSE); return self->only_free; } gboolean bz_search_filter_popover_get_only_non_eol (BzSearchFilterPopover *self) { g_return_val_if_fail (BZ_IS_SEARCH_FILTER_POPOVER (self), FALSE); return self->only_non_eol; } gboolean bz_search_filter_popover_get_only_mobile (BzSearchFilterPopover *self) { g_return_val_if_fail (BZ_IS_SEARCH_FILTER_POPOVER (self), FALSE); return self->only_mobile; } void bz_search_filter_popover_clear (BzSearchFilterPopover *self) { GtkWidget *child = NULL; g_return_if_fail (BZ_IS_SEARCH_FILTER_POPOVER (self)); if (!self->state_forced_verified) apply_filter_button (self, PROP_ONLY_VERIFIED, FALSE, FALSE); if (!self->state_forced_free) apply_filter_button (self, PROP_ONLY_FREE, FALSE, FALSE); if (!self->state_forced_non_eol) apply_filter_button (self, PROP_ONLY_NON_EOL, FALSE, FALSE); apply_filter_button (self, PROP_ONLY_MOBILE, FALSE, FALSE); for (child = gtk_widget_get_first_child (GTK_WIDGET (self->wrap_box)); child != NULL; child = gtk_widget_get_next_sibling (child)) gtk_widget_remove_css_class (child, "accent"); if (self->selected_categories != BZ_CATEGORY_FLAGS_NONE) { self->selected_categories = BZ_CATEGORY_FLAGS_NONE; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SELECTED_CATEGORIES]); update_has_active_filters (self); } } static void update_has_active_filters (BzSearchFilterPopover *self) { gboolean active = FALSE; active = (self->only_verified && !self->state_forced_verified) || (self->only_free && !self->state_forced_free) || (self->only_non_eol && !self->state_forced_non_eol) || self->only_mobile || self->selected_categories != BZ_CATEGORY_FLAGS_NONE; if (self->has_active_filters == active) return; self->has_active_filters = active; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_ACTIVE_FILTERS]); } static void apply_filter_button (BzSearchFilterPopover *self, guint prop, gboolean value, gboolean from_state) { struct { guint prop; gboolean *field; GtkWidget **button; } map[] = { { PROP_ONLY_VERIFIED, &self->only_verified, &self->verified_button }, { PROP_ONLY_FREE, &self->only_free, &self->free_button }, { PROP_ONLY_NON_EOL, &self->only_non_eol, &self->non_eol_button }, { PROP_ONLY_MOBILE, &self->only_mobile, &self->mobile_button }, }; for (guint i = 0; i < G_N_ELEMENTS (map); i++) { if (map[i].prop != prop) continue; if (*map[i].field != value) { *map[i].field = value; g_object_notify_by_pspec (G_OBJECT (self), props[prop]); } if (value) gtk_widget_add_css_class (*map[i].button, "accent"); else gtk_widget_remove_css_class (*map[i].button, "accent"); if (from_state) gtk_widget_set_sensitive (*map[i].button, !value); return; } } static void sync_from_state (BzSearchFilterPopover *self, const char *property) { BzStateInfo *state = NULL; state = bz_state_info_get_default (); if (state == NULL) return; if (property == NULL || g_strcmp0 (property, "show-only-verified") == 0) { g_object_get (state, "show-only-verified", &self->state_forced_verified, NULL); apply_filter_button (self, PROP_ONLY_VERIFIED, self->state_forced_verified, TRUE); } if (property == NULL || g_strcmp0 (property, "show-only-foss") == 0) { g_object_get (state, "show-only-foss", &self->state_forced_free, NULL); apply_filter_button (self, PROP_ONLY_FREE, self->state_forced_free, TRUE); } if (property == NULL || g_strcmp0 (property, "hide-eol") == 0) { g_object_get (state, "hide-eol", &self->state_forced_non_eol, NULL); apply_filter_button (self, PROP_ONLY_NON_EOL, self->state_forced_non_eol, TRUE); } update_has_active_filters (self); } static void on_state_setting_changed (BzSearchFilterPopover *self, GParamSpec *pspec, BzStateInfo *state) { sync_from_state (self, pspec->name); } static void on_state_flathub_changed (BzSearchFilterPopover *self, GParamSpec *pspec, BzStateInfo *state) { rebuild_category_buttons (self); } static void on_filter_button_clicked (GtkButton *button, gpointer user_data) { BzSearchFilterPopover *self = BZ_SEARCH_FILTER_POPOVER (user_data); const char *name = NULL; name = gtk_widget_get_name (GTK_WIDGET (button)); if (g_str_equal (name, "verified")) apply_filter_button (self, PROP_ONLY_VERIFIED, !self->only_verified, FALSE); else if (g_str_equal (name, "free")) apply_filter_button (self, PROP_ONLY_FREE, !self->only_free, FALSE); else if (g_str_equal (name, "non-eol")) apply_filter_button (self, PROP_ONLY_NON_EOL, !self->only_non_eol, FALSE); else if (g_str_equal (name, "mobile")) apply_filter_button (self, PROP_ONLY_MOBILE, !self->only_mobile, FALSE); update_has_active_filters (self); } static void on_category_button_clicked (GtkButton *button, gpointer user_data) { BzSearchFilterPopover *self = BZ_SEARCH_FILTER_POPOVER (user_data); BzCategoryFlags flag = BZ_CATEGORY_FLAGS_NONE; flag = (BzCategoryFlags) GPOINTER_TO_SIZE ( g_object_get_data (G_OBJECT (button), "category-flag")); self->selected_categories ^= flag; if (self->selected_categories & flag) gtk_widget_add_css_class (GTK_WIDGET (button), "accent"); else gtk_widget_remove_css_class (GTK_WIDGET (button), "accent"); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SELECTED_CATEGORIES]); update_has_active_filters (self); } static void rebuild_category_buttons (BzSearchFilterPopover *self) { g_autoptr (BzFlathubState) flathub = NULL; g_autoptr (GListModel) categories = NULL; BzStateInfo *state = NULL; GtkWidget *child = NULL; while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->wrap_box))) != NULL) adw_wrap_box_remove (self->wrap_box, child); state = bz_state_info_get_default (); if (state == NULL) return; g_object_get (state, "flathub", &flathub, NULL); if (flathub == NULL) return; g_object_get (flathub, "categories", &categories, NULL); if (categories == NULL) return; for (guint i = 0; i < g_list_model_get_n_items (categories); i++) { g_autoptr (BzFlathubCategory) category = NULL; const char *name = NULL; const char *label = NULL; const char *icon = NULL; GtkWidget *button = NULL; GtkWidget *content = NULL; BzCategoryFlags flag = BZ_CATEGORY_FLAGS_NONE; category = g_list_model_get_item (categories, i); if (!bz_flathub_category_get_is_xdg (category)) continue; name = bz_flathub_category_get_name (category); label = bz_flathub_category_get_short_name (category); icon = bz_flathub_category_get_symbolic_icon_name (category); flag = bz_category_flags_from_name (name); content = g_object_new (ADW_TYPE_BUTTON_CONTENT, "label", label, "icon-name", icon ? icon : "", NULL); button = gtk_button_new (); gtk_button_set_child (GTK_BUTTON (button), content); gtk_accessible_update_property (GTK_ACCESSIBLE (button), GTK_ACCESSIBLE_PROPERTY_LABEL, label, -1); g_object_set_data (G_OBJECT (button), "category-flag", GSIZE_TO_POINTER ((gsize) flag)); if (self->selected_categories & flag) gtk_widget_add_css_class (button, "accent"); g_signal_connect (button, "clicked", G_CALLBACK (on_category_button_clicked), self); adw_wrap_box_append (self->wrap_box, button); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-filter-popover.h��������������������������������������������0000664�0000000�0000000�00000003074�15240005042�0023133�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-filter-popover.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-category-flags.h" #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_SEARCH_FILTER_POPOVER (bz_search_filter_popover_get_type ()) G_DECLARE_FINAL_TYPE (BzSearchFilterPopover, bz_search_filter_popover, BZ, SEARCH_FILTER_POPOVER, GtkPopover) GtkWidget * bz_search_filter_popover_new (void); BzCategoryFlags bz_search_filter_popover_get_selected_categories (BzSearchFilterPopover *self); gboolean bz_search_filter_popover_get_only_verified (BzSearchFilterPopover *self); gboolean bz_search_filter_popover_get_only_free (BzSearchFilterPopover *self); gboolean bz_search_filter_popover_get_only_non_eol (BzSearchFilterPopover *self); gboolean bz_search_filter_popover_get_only_mobile (BzSearchFilterPopover *self); void bz_search_filter_popover_clear (BzSearchFilterPopover *self); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-page.blp����������������������������������������������������0000664�0000000�0000000�00000023436�15240005042�0021424�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzSearchPage: Adw.Bin { child: Adw.BreakpointBin { width-request: 360; height-request: 100; Adw.Breakpoint { condition ("max-width: 1000sp") setters { grid_view.min-columns: 2; grid_view.max-columns: 2; clamp_scrollable.maximum-size: 700; } } Adw.Breakpoint { condition ("max-width: 700sp") setters { empty_box.margin-start: 10; empty_box.margin-end: 10; empty_box.margin-top: 5; search_box_clamp.margin-start: 12; search_box_clamp.margin-end: 12; grid_view.min-columns: 1; grid_view.max-columns: 1; clamp_scrollable.maximum-size: 400; } } child: Box { orientation: vertical; Adw.Clamp search_box_clamp { margin-start: 12; margin-end: 12; margin-top: 10; margin-bottom: 10; maximum-size: 375; child: $BzSearchBar search_bar { placeholder: _("Search Apps, Games, Software"); search-activated => $search_activate(template); search-changed => $search_changed(template); end-widget: MenuButton filter_button { visible: bind $is_valid_string(search_bar.text) as <bool>; icon-name: "sliders-horizontal-symbolic"; tooltip-text: _("Search Filters"); valign: center; popover: $BzSearchFilterPopover filter_popover { notify::has-active-filters => $has_active_filters_cb(); }; styles [ "flat", "circular", "searchbar-button", ] accessibility { label: _("Filters"); } }; }; } Adw.Clamp { margin-start: 12; margin-end: 12; maximum-size: 375; child: Box { margin-start: 12; margin-end: 12; margin-top: 6; margin-bottom: 6; styles [ "bz-debug", ] orientation: vertical; spacing: 5; visible: bind template.state as <$BzStateInfo>.debug_mode; Box { orientation: horizontal; spacing: 10; Label { label: "Interpreted Query:"; } Label { styles [ "caption-heading", ] label: bind template.current-query as <$BzFinishedSearchQuery>.interpreted-query; } } Box { orientation: horizontal; spacing: 10; Label { label: "# of Results:"; } Label { styles [ "caption-heading", ] label: bind $format_uint(template.current-query as <$BzFinishedSearchQuery>.n-results as <uint>) as <string>; } } Box { orientation: horizontal; spacing: 10; Label { label: "Seconds Elapsed:"; } Label { styles [ "caption-heading", ] label: bind $format_double(template.current-query as <$BzFinishedSearchQuery>.elapsed as <double>) as <string>; } } }; } Stack search_stack { transition-type: crossfade; StackPage { name: "empty"; child: Box { orientation: vertical; vexpand: true; ScrolledWindow { hscrollbar-policy: never; vexpand: true; visible: bind $invert_boolean($is_empty(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories) as <bool>) as <bool>; child: Adw.Clamp { maximum-size: 1000; tightening-threshold: 900; child: Box empty_box { margin-start: 30; margin-end: 30; margin-top: 16; margin-bottom: 50; orientation: vertical; $BzSearchPillList { margin-bottom: 25; activated => $pill_list_cb(template); } Label { label: _("Browse Categories"); halign: start; margin-bottom: 12; margin-start: 4; wrap: true; wrap-mode: word_char; styles [ "heading", ] } $BzDynamicListView { styles [ "flathub-page-section", ] hexpand: true; max-children-per-line: 4; scroll: false; noscroll-kind: flow-box; child-type: "BzCategoryTile"; child-prop: "category"; model: FilterListModel visible_categories { filter: CustomFilter categories_filter {}; model: bind template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories; }; bind-widget => $bind_category_tile_cb(template); unbind-widget => $unbind_category_tile_cb(template); } Adw.StatusPage { visible: bind $is_empty(template.state as <$BzStateInfo>.flathub as <$BzFlathubState>.categories) as <bool>; hexpand: true; vexpand: true; icon-name: "system-search-symbolic"; title: _("Categories Unavailable"); description: _("Search for apps using the search bar above."); } }; }; } }; } StackPage { name: "results"; child: Box content_box { orientation: horizontal; visible: bind $invert_boolean($is_null(grid_view.model as <SingleSelection>.selected-item) as <bool>) as <bool>; ScrolledWindow entry_grid_scroll { hexpand: true; vexpand: true; hscrollbar-policy: never; child: Adw.ClampScrollable clamp_scrollable { maximum-size: 1000; tightening-threshold: 900; child: GridView grid_view { styles [ "search-grid", ] min-columns: 3; max-columns: 3; factory: BuilderListItemFactory { template ListItem { child: Box { orientation: vertical; spacing: 5; $BzRichAppTile { group: bind template.item as <$BzSearchResult>.group as <$BzEntryGroup>; focusable: false; } Box { styles [ "bz-debug", ] visible: bind template.item as <$BzSearchResult>.state as <$BzStateInfo>.debug_mode; orientation: vertical; spacing: 2; Box { orientation: horizontal; spacing: 10; Label { label: "Result Score:"; } Label { styles [ "caption-heading", ] label: bind $format_double(template.item as <$BzSearchResult>.score as <double>) as <string>; } } Separator { margin-bottom: 5; } Box { orientation: horizontal; spacing: 10; Label { styles [ "bz-monospace", ] hexpand: true; xalign: 0.0; label: bind template.item as <$BzSearchResult>.group as <$BzEntryGroup>.id; selectable: true; wrap: true; wrap-mode: char; } Button { icon-name: "edit-copy-symbolic"; clicked => $copy_id_cb(template); } } Box { orientation: horizontal; spacing: 10; Button { hexpand: true; halign: end; label: "Inspect UI Entry"; clicked => $debug_id_inspect_cb(template); } } } }; } }; }; }; } }; } StackPage { name: "no-results"; child: Adw.StatusPage { vexpand: true; icon-name: "edit-find-symbolic"; title: _("No Applications Found"); description: bind $no_results_found_subtitle(search_bar.text) as <string>; }; } } }; }; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-page.c������������������������������������������������������0000664�0000000�0000000�00000065331�15240005042�0021071�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-page.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-apps-page.h" #include "bz-async-texture.h" #include "bz-category-tile.h" #include "bz-dynamic-list-view.h" #include "bz-entry-inspector.h" #include "bz-finished-search-query.h" #include "bz-group-tile-css-watcher.h" #include "bz-rich-app-tile.h" #include "bz-screenshot.h" #include "bz-search-bar.h" #include "bz-search-filter-popover.h" #include "bz-search-page.h" #include "bz-search-pill-list.h" #include "bz-search-result.h" #include "template-callbacks.h" #include "util.h" struct _BzSearchPage { AdwBin parent_instance; BzStateInfo *state; BzEntryGroup *selected; gboolean remove; gboolean search_in_progress; BzFinishedSearchQuery *current_query; BzContentProvider *blocklists_provider; BzContentProvider *txt_blocklists_provider; GListStore *search_model; GtkSelectionModel *selection_model; guint search_update_timeout; DexFuture *search_query; /* Template widgets */ BzSearchBar *search_bar; GtkBox *content_box; GtkStack *search_stack; GtkGridView *grid_view; GtkWidget *filter_button; BzSearchFilterPopover *filter_popover; GtkCustomFilter *categories_filter; }; G_DEFINE_FINAL_TYPE (BzSearchPage, bz_search_page, ADW_TYPE_BIN) enum { PROP_0, PROP_STATE, PROP_TEXT, PROP_CURRENT_QUERY, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void grid_activate (GtkGridView *grid_view, guint position, BzSearchPage *self); static void invalidating_state_prop_changed (BzSearchPage *self, GParamSpec *pspec, BzStateInfo *info); static void blocklists_items_changed (BzSearchPage *self, guint position, guint removed, guint added, GListModel *model); static DexFuture * search_query_then (DexFuture *future, GWeakRef *wr); static void update_filter (BzSearchPage *self); static void emit_idx (BzSearchPage *self, GListModel *model, guint selected_idx); static gboolean bz_search_page_grab_focus (GtkWidget *widget) { BzSearchPage *self = BZ_SEARCH_PAGE (widget); return gtk_widget_grab_focus (GTK_WIDGET (self->search_bar)); } static void bz_search_page_dispose (GObject *object) { BzSearchPage *self = BZ_SEARCH_PAGE (object); if (self->state != NULL) g_signal_handlers_disconnect_by_func (self->state, invalidating_state_prop_changed, self); if (self->blocklists_provider != NULL) g_signal_handlers_disconnect_by_func (self->blocklists_provider, blocklists_items_changed, self); if (self->txt_blocklists_provider != NULL) g_signal_handlers_disconnect_by_func (self->txt_blocklists_provider, blocklists_items_changed, self); g_clear_handle_id (&self->search_update_timeout, g_source_remove); dex_clear (&self->search_query); g_clear_object (&self->state); g_clear_object (&self->selected); g_clear_object (&self->current_query); g_clear_object (&self->blocklists_provider); g_clear_object (&self->txt_blocklists_provider); g_clear_object (&self->search_model); g_clear_object (&self->selection_model); G_OBJECT_CLASS (bz_search_page_parent_class)->dispose (object); } static void bz_search_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzSearchPage *self = BZ_SEARCH_PAGE (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, bz_search_page_get_state (self)); break; case PROP_TEXT: g_value_set_string (value, bz_search_page_get_text (self)); break; case PROP_CURRENT_QUERY: g_value_set_object (value, self->current_query); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_search_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzSearchPage *self = BZ_SEARCH_PAGE (object); switch (prop_id) { case PROP_STATE: bz_search_page_set_state (self, g_value_get_object (value)); break; case PROP_TEXT: bz_search_page_set_text (self, g_value_get_string (value)); break; case PROP_CURRENT_QUERY: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_zero (gpointer object, int value) { return value == 0; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_empty (gpointer object, GListModel *model) { if (model == NULL) return TRUE; return g_list_model_get_n_items (model) == 0; } static gboolean is_valid_string (gpointer object, const char *value) { return value != NULL && *value != '\0'; } static char * idx_to_string (gpointer object, guint value) { return g_strdup_printf ("%d", value + 1); } static char * score_to_string (gpointer object, double value) { return g_strdup_printf ("%0.1f", value); } static char * no_results_found_subtitle (gpointer object, const char *search_text) { if (search_text == NULL || *search_text == '\0') return g_strdup (""); return g_strdup_printf (_ ("No results found for \"%s\" in Flathub"), search_text); } static void has_active_filters_cb (BzSearchFilterPopover *filter_popover, GParamSpec *pspec, BzSearchPage *self) { gboolean active = FALSE; g_object_get (filter_popover, "has-active-filters", &active, NULL); if (active) gtk_widget_add_css_class (self->filter_button, "accent"); else gtk_widget_remove_css_class (self->filter_button, "accent"); } static void pill_list_cb (BzSearchPage *self, const char *label, GtkWidget *pill_list) { bz_search_page_set_text (self, label); update_filter (self); } static void category_clicked (BzFlathubCategory *category, GtkButton *button) { GtkWidget *self = NULL; GtkWidget *nav_view = NULL; AdwNavigationPage *apps_page = NULL; self = gtk_widget_get_ancestor (GTK_WIDGET (button), BZ_TYPE_SEARCH_PAGE); g_assert (self != NULL); nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); g_assert (nav_view != NULL); apps_page = bz_apps_page_new_from_category (category); adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), apps_page); } static void bind_category_tile_cb (BzSearchPage *self, BzCategoryTile *tile, BzFlathubCategory *category, BzDynamicListView *view) { g_signal_connect_swapped (tile, "clicked", G_CALLBACK (category_clicked), category); } static void search_changed (BzSearchPage *self, GtkEditable *editable) { const char *text = NULL; text = gtk_editable_get_text (editable); g_clear_handle_id (&self->search_update_timeout, g_source_remove); if (text == NULL || *text == '\0') update_filter (self); else { self->search_update_timeout = g_timeout_add_once ( 300, (GSourceOnceFunc) update_filter, self); bz_search_bar_set_busy (BZ_SEARCH_BAR (editable), TRUE); } } static void search_activate (BzSearchPage *self, BzSearchBar *search_bar) { GtkSelectionModel *model = NULL; guint n_items = 0; model = gtk_grid_view_get_model (self->grid_view); n_items = g_list_model_get_n_items (G_LIST_MODEL (model)); bz_search_bar_set_busy (self->search_bar, FALSE); if (n_items > 0) { GtkWidget *cell = NULL; GtkWidget *box = NULL; GtkWidget *tile = NULL; gtk_widget_activate_action (GTK_WIDGET (self->grid_view), "list.scroll-to-item", "u", 0); cell = gtk_widget_get_first_child (GTK_WIDGET (self->grid_view)); if (cell != NULL) box = gtk_widget_get_first_child (cell); if (box != NULL) tile = gtk_widget_get_first_child (box); if (BZ_IS_RICH_APP_TILE (tile)) bz_rich_app_tile_focus_action_button (BZ_RICH_APP_TILE (tile)); } } static void unbind_category_tile_cb (BzSearchPage *self, BzCategoryTile *tile, BzFlathubCategory *category, BzDynamicListView *view) { g_signal_handlers_disconnect_by_func (tile, category_clicked, category); } static void reset_search_cb (BzSearchPage *self, GtkButton *button) { bz_search_page_set_text (self, ""); bz_search_filter_popover_clear (self->filter_popover); bz_search_page_refresh (self); } static void copy_id_cb (GtkListItem *list_item, GtkButton *button) { BzSearchResult *result = NULL; BzEntryGroup *group = NULL; const char *id = NULL; GdkClipboard *clipboard = NULL; result = gtk_list_item_get_item (list_item); group = bz_search_result_get_group (result); id = bz_entry_group_get_id (group); clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); gdk_clipboard_set_text (clipboard, id); } static void debug_id_inspect_cb (GtkListItem *list_item, GtkButton *button) { BzSearchResult *search_result = NULL; BzStateInfo *state = NULL; BzEntryGroup *group = NULL; g_autofree char *unique_id = NULL; g_autoptr (BzResult) result = NULL; search_result = gtk_list_item_get_item (list_item); state = bz_search_result_get_state (search_result); if (state == NULL) return; group = bz_search_result_get_group (search_result); unique_id = bz_entry_group_dup_ui_entry_id (group); result = bz_application_map_factory_convert_one ( bz_state_info_get_entry_factory (state), gtk_string_object_new (unique_id)); if (result != NULL) { BzEntryInspector *inspector = NULL; inspector = bz_entry_inspector_new (); bz_entry_inspector_set_result (inspector, result); gtk_window_present (GTK_WINDOW (inspector)); } } static void bz_search_page_class_init (BzSearchPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_search_page_dispose; object_class->get_property = bz_search_page_get_property; object_class->set_property = bz_search_page_set_property; widget_class->grab_focus = bz_search_page_grab_focus; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TEXT] = g_param_spec_string ( "text", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_CURRENT_QUERY] = g_param_spec_object ( "current-query", NULL, NULL, BZ_TYPE_FINISHED_SEARCH_QUERY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_ASYNC_TEXTURE); g_type_ensure (BZ_TYPE_CATEGORY_TILE); g_type_ensure (BZ_TYPE_DYNAMIC_LIST_VIEW); g_type_ensure (BZ_TYPE_GROUP_TILE_CSS_WATCHER); g_type_ensure (BZ_TYPE_RICH_APP_TILE); g_type_ensure (BZ_TYPE_SCREENSHOT); g_type_ensure (BZ_TYPE_SEARCH_RESULT); g_type_ensure (BZ_TYPE_SEARCH_PILL_LIST); g_type_ensure (BZ_TYPE_SEARCH_FILTER_POPOVER); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-search-page.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzSearchPage, search_bar); gtk_widget_class_bind_template_child (widget_class, BzSearchPage, content_box); gtk_widget_class_bind_template_child (widget_class, BzSearchPage, search_stack); gtk_widget_class_bind_template_child (widget_class, BzSearchPage, grid_view); gtk_widget_class_bind_template_child (widget_class, BzSearchPage, filter_button); gtk_widget_class_bind_template_child (widget_class, BzSearchPage, filter_popover); gtk_widget_class_bind_template_child (widget_class, BzSearchPage, categories_filter); gtk_widget_class_bind_template_callback (widget_class, bind_category_tile_cb); gtk_widget_class_bind_template_callback (widget_class, unbind_category_tile_cb); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_empty); gtk_widget_class_bind_template_callback (widget_class, has_active_filters_cb); gtk_widget_class_bind_template_callback (widget_class, is_valid_string); gtk_widget_class_bind_template_callback (widget_class, idx_to_string); gtk_widget_class_bind_template_callback (widget_class, score_to_string); gtk_widget_class_bind_template_callback (widget_class, reset_search_cb); gtk_widget_class_bind_template_callback (widget_class, pill_list_cb); gtk_widget_class_bind_template_callback (widget_class, no_results_found_subtitle); gtk_widget_class_bind_template_callback (widget_class, copy_id_cb); gtk_widget_class_bind_template_callback (widget_class, debug_id_inspect_cb); gtk_widget_class_bind_template_callback (widget_class, search_activate); gtk_widget_class_bind_template_callback (widget_class, search_changed); } static void bz_search_page_init (BzSearchPage *self) { self->search_model = g_list_store_new (BZ_TYPE_SEARCH_RESULT); gtk_widget_init_template (GTK_WIDGET (self)); /* TODO: move all this to blueprint */ self->selection_model = GTK_SELECTION_MODEL (gtk_no_selection_new (NULL)); gtk_no_selection_set_model (GTK_NO_SELECTION (self->selection_model), G_LIST_MODEL (self->search_model)); gtk_grid_view_set_model (self->grid_view, self->selection_model); g_signal_connect (self->grid_view, "activate", G_CALLBACK (grid_activate), self); g_signal_connect_swapped (self->filter_popover, "notify::selected-categories", G_CALLBACK (update_filter), self); g_signal_connect_swapped (self->filter_popover, "notify::only-verified", G_CALLBACK (update_filter), self); g_signal_connect_swapped (self->filter_popover, "notify::only-free", G_CALLBACK (update_filter), self); g_signal_connect_swapped (self->filter_popover, "notify::only-non-eol", G_CALLBACK (update_filter), self); g_signal_connect_swapped (self->filter_popover, "notify::only-mobile", G_CALLBACK (update_filter), self); gtk_custom_filter_set_filter_func ( self->categories_filter, (GtkCustomFilterFunc) bz_flathub_category_get_show_in_list, NULL, NULL); } GtkWidget * bz_search_page_new (GListModel *model, const char *initial) { BzSearchPage *self = NULL; self = g_object_new ( BZ_TYPE_SEARCH_PAGE, "model", model, NULL); if (initial != NULL) gtk_editable_set_text (GTK_EDITABLE (self->search_bar), initial); return GTK_WIDGET (self); } BzEntryGroup * bz_search_page_get_selected (BzSearchPage *self, gboolean *remove) { g_return_val_if_fail (BZ_IS_SEARCH_PAGE (self), NULL); if (remove != NULL) *remove = self->remove; return self->selected; } void bz_search_page_set_state (BzSearchPage *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_SEARCH_PAGE (self)); if (self->state != NULL) g_signal_handlers_disconnect_by_func (self->state, invalidating_state_prop_changed, self); g_clear_object (&self->state); if (self->blocklists_provider != NULL) g_signal_handlers_disconnect_by_func (self->blocklists_provider, blocklists_items_changed, self); g_clear_object (&self->blocklists_provider); if (self->txt_blocklists_provider != NULL) g_signal_handlers_disconnect_by_func (self->txt_blocklists_provider, blocklists_items_changed, self); g_clear_object (&self->txt_blocklists_provider); if (state != NULL) { self->state = g_object_ref (state); g_signal_connect_swapped ( state, "notify::disable-blocklists", G_CALLBACK (invalidating_state_prop_changed), self); g_signal_connect_swapped ( state, "notify::hide-eol", G_CALLBACK (invalidating_state_prop_changed), self); g_signal_connect_swapped ( state, "notify::show-only-foss", G_CALLBACK (invalidating_state_prop_changed), self); g_signal_connect_swapped ( state, "notify::show-only-flathub", G_CALLBACK (invalidating_state_prop_changed), self); g_signal_connect_swapped ( state, "notify::show-only-verified", G_CALLBACK (invalidating_state_prop_changed), self); g_signal_connect_swapped ( state, "notify::parental-age-rating", G_CALLBACK (invalidating_state_prop_changed), self); g_object_get ( state, "blocklists-provider", &self->blocklists_provider, "txt-blocklists-provider", &self->txt_blocklists_provider, NULL); if (self->blocklists_provider != NULL) g_signal_connect_data ( self->blocklists_provider, "items-changed", G_CALLBACK (blocklists_items_changed), self, NULL, G_CONNECT_SWAPPED | G_CONNECT_AFTER); if (self->txt_blocklists_provider != NULL) g_signal_connect_data ( self->txt_blocklists_provider, "items-changed", G_CALLBACK (blocklists_items_changed), self, NULL, G_CONNECT_SWAPPED | G_CONNECT_AFTER); } g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); } BzStateInfo * bz_search_page_get_state (BzSearchPage *self) { g_return_val_if_fail (BZ_IS_SEARCH_PAGE (self), NULL); return self->state; } void bz_search_page_set_text (BzSearchPage *self, const char *text) { g_return_if_fail (BZ_IS_SEARCH_PAGE (self)); gtk_editable_set_text (GTK_EDITABLE (self->search_bar), text); if (text != NULL) gtk_editable_set_position (GTK_EDITABLE (self->search_bar), g_utf8_strlen (text, -1)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TEXT]); } const char * bz_search_page_get_text (BzSearchPage *self) { g_return_val_if_fail (BZ_IS_SEARCH_PAGE (self), NULL); return gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); } void bz_search_page_refresh (BzSearchPage *self) { g_return_if_fail (BZ_IS_SEARCH_PAGE (self)); update_filter (self); } gboolean bz_search_page_ensure_active (BzSearchPage *self, const char *initial) { gboolean result = FALSE; g_return_val_if_fail (BZ_IS_SEARCH_PAGE (self), FALSE); result = gtk_widget_grab_focus (GTK_WIDGET (self)); bz_search_page_set_text (self, initial); return result; } static void grid_activate (GtkGridView *grid_view, guint position, BzSearchPage *self) { GtkSelectionModel *model = NULL; model = gtk_grid_view_get_model (self->grid_view); emit_idx (self, G_LIST_MODEL (model), position); } static void invalidating_state_prop_changed (BzSearchPage *self, GParamSpec *pspec, BzStateInfo *info) { update_filter (self); } static void blocklists_items_changed (BzSearchPage *self, guint position, guint removed, guint added, GListModel *model) { update_filter (self); } static DexFuture * search_query_then (DexFuture *future, GWeakRef *wr) { g_autoptr (BzSearchPage) self = NULL; g_autoptr (GPtrArray) filtered = NULL; BzFinishedSearchQuery *finished = NULL; GPtrArray *results = NULL; guint old_length = 0; const char *page_name = NULL; BzCategoryFlags categories = BZ_CATEGORY_FLAGS_NONE; gboolean only_verified = FALSE; gboolean only_free = FALSE; gboolean only_non_eol = FALSE; gboolean only_mobile = FALSE; const char *search_text = NULL; bz_weak_get_or_return_reject (self, wr); finished = g_value_get_object (dex_future_get_value (future, NULL)); results = bz_finished_search_query_get_results (finished); categories = bz_search_filter_popover_get_selected_categories (self->filter_popover); only_verified = bz_search_filter_popover_get_only_verified (self->filter_popover); only_free = bz_search_filter_popover_get_only_free (self->filter_popover); only_non_eol = bz_search_filter_popover_get_only_non_eol (self->filter_popover); only_mobile = bz_search_filter_popover_get_only_mobile (self->filter_popover); filtered = g_ptr_array_new_with_free_func (g_object_unref); search_text = gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); for (guint i = 0; i < results->len; i++) { BzSearchResult *result = g_ptr_array_index (results, i); BzEntryGroup *group = bz_search_result_get_group (result); if (self->state != NULL) /* This is for debug mode */ bz_search_result_set_state (result, self->state); if (categories != BZ_CATEGORY_FLAGS_NONE && !(bz_entry_group_get_categories (group) & categories)) continue; if (only_verified && !bz_entry_group_get_is_verified (group)) continue; if (only_free && !bz_entry_group_get_is_floss (group)) continue; if (only_non_eol && bz_entry_group_get_eol (group)) continue; if (only_mobile && !bz_entry_group_get_is_mobile_friendly (group)) continue; g_ptr_array_add (filtered, g_object_ref (result)); } old_length = g_list_model_get_n_items (G_LIST_MODEL (self->search_model)); g_list_store_splice ( self->search_model, 0, old_length, (gpointer *) filtered->pdata, filtered->len); bz_search_bar_set_busy (self->search_bar, FALSE); if (filtered->len > 0) { page_name = "results"; gtk_widget_activate_action (GTK_WIDGET (self->grid_view), "list.scroll-to-item", "u", 0); } else page_name = (search_text != NULL && *search_text) ? "no-results" : "empty"; if (search_text && *search_text) { const char *message = NULL; message = filtered->len == 0 ? _ ("No applications found") : g_strdup_printf ( ngettext ("One application found", "%u applications found", filtered->len), filtered->len); gtk_accessible_announce (GTK_ACCESSIBLE (self), message, GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_MEDIUM); } self->current_query = g_object_ref (finished); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_QUERY]); gtk_stack_set_visible_child_name (self->search_stack, page_name); dex_clear (&self->search_query); return NULL; } static void update_filter (BzSearchPage *self) { BzSearchEngine *engine = NULL; const char *search_text = NULL; g_autoptr (GStrvBuilder) builder = NULL; guint n_terms = 0; g_auto (GStrv) terms = NULL; g_autoptr (DexFuture) future = NULL; g_autofree gchar **tokens = NULL; g_clear_handle_id (&self->search_update_timeout, g_source_remove); dex_clear (&self->search_query); g_clear_object (&self->current_query); self->current_query = bz_finished_search_query_new (); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_QUERY]); bz_search_bar_set_busy (self->search_bar, FALSE); if (self->state == NULL) return; engine = bz_state_info_get_search_engine (self->state); if (engine == NULL) return; search_text = gtk_editable_get_text (GTK_EDITABLE (self->search_bar)); if (search_text == NULL || *search_text == '\0') { g_list_store_remove_all (self->search_model); gtk_stack_set_visible_child_name (self->search_stack, "empty"); return; } builder = g_strv_builder_new (); tokens = g_strsplit_set (search_text, " \t\n", -1); for (gchar **token = tokens; *token != NULL; token++) { if (**token != '\0') { g_strv_builder_take (builder, *token); n_terms++; } else g_free (*token); } if (n_terms == 0) { g_list_store_remove_all (self->search_model); gtk_stack_set_visible_child_name (self->search_stack, "empty"); return; } terms = g_strv_builder_end (builder); self->search_in_progress = TRUE; future = bz_search_engine_query ( engine, (const char *const *) terms); bz_search_bar_set_busy (self->search_bar, dex_future_is_pending (future)); future = dex_future_then ( future, (DexFutureCallback) search_query_then, bz_track_weak (self), bz_weak_release); self->search_query = g_steal_pointer (&future); } static void emit_idx (BzSearchPage *self, GListModel *model, guint selected_idx) { g_autoptr (BzSearchResult) result = NULL; BzEntryGroup *group = NULL; result = g_list_model_get_item (G_LIST_MODEL (model), selected_idx); group = bz_search_result_get_group (result); gtk_widget_activate_action (GTK_WIDGET (self), "window.show-group", "s", bz_entry_group_get_id (group)); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-page.h������������������������������������������������������0000664�0000000�0000000�00000003323�15240005042�0021067�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-page.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" G_BEGIN_DECLS #define BZ_TYPE_SEARCH_PAGE (bz_search_page_get_type ()) G_DECLARE_FINAL_TYPE (BzSearchPage, bz_search_page, BZ, SEARCH_PAGE, AdwBin) GtkWidget * bz_search_page_new (GListModel *model, const char *initial); void bz_search_page_set_state (BzSearchPage *self, BzStateInfo *state); BzStateInfo * bz_search_page_get_state (BzSearchPage *self); void bz_search_page_set_text (BzSearchPage *self, const char *text); const char * bz_search_page_get_text (BzSearchPage *self); BzEntryGroup * bz_search_page_get_selected (BzSearchPage *self, gboolean *remove); BzEntryGroup * bz_search_page_get_previewing (BzSearchPage *self); void bz_search_page_refresh (BzSearchPage *self); gboolean bz_search_page_ensure_active (BzSearchPage *self, const char *initial); G_END_DECLS �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-pill-list.c�������������������������������������������������0000664�0000000�0000000�00000013601�15240005042�0022057�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-pill-list.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-search-pill-list.h" struct _BzSearchPillList { GtkBox parent_instance; }; G_DEFINE_FINAL_TYPE (BzSearchPillList, bz_search_pill_list, GTK_TYPE_BOX) enum { SIGNAL_ACTIVATED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL]; static void pill_button_clicked_cb (BzSearchPillList *self, GtkButton *button); static void bz_search_pill_list_class_init (BzSearchPillListClass *klass) { signals[SIGNAL_ACTIVATED] = g_signal_new ("activated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); } static void bz_search_pill_list_init (BzSearchPillList *self) { GtkLayoutManager *layout = NULL; static const char *pills[] = { /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Browser"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Video"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Music"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Office"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("PDF"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Calendar"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Messaging"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Paint"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("VPN"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Torrent"), /* Translators: Search suggestion: the english text will be used for the search regardless of what you put here, so don't worry about the string yielding poor search results. Focus on correctness and friendliness, etc */ N_ ("Emulator"), /* This array MUST be NULL terminated */ NULL }; gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_HORIZONTAL); layout = GTK_LAYOUT_MANAGER (adw_wrap_layout_new ()); adw_wrap_layout_set_child_spacing (ADW_WRAP_LAYOUT (layout), 10); adw_wrap_layout_set_line_spacing (ADW_WRAP_LAYOUT (layout), 8); adw_wrap_layout_set_justify (ADW_WRAP_LAYOUT (layout), ADW_JUSTIFY_FILL); gtk_widget_set_layout_manager (GTK_WIDGET (self), layout); for (guint i = 0; pills[i] != NULL; i++) { GtkWidget *button = NULL; button = gtk_button_new_with_label (Q_ (pills[i])); gtk_widget_add_css_class (button, "small-pill"); gtk_widget_add_css_class (button, "search-pill"); g_signal_connect_swapped (button, "clicked", G_CALLBACK (pill_button_clicked_cb), self); g_object_set_data_full (G_OBJECT (button), "search-token", g_strdup (pills[i]), g_free); gtk_box_append (GTK_BOX (self), button); } } GtkWidget * bz_search_pill_list_new (void) { return g_object_new (BZ_TYPE_SEARCH_PILL_LIST, NULL); } static void pill_button_clicked_cb (BzSearchPillList *self, GtkButton *button) { const char *search_token = NULL; search_token = g_object_get_data (G_OBJECT (button), "search-token"); g_signal_emit (self, signals[SIGNAL_ACTIVATED], 0, search_token); } �������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-pill-list.h�������������������������������������������������0000664�0000000�0000000�00000002011�15240005042�0022055�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-search-pill-list.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_SEARCH_PILL_LIST (bz_search_pill_list_get_type ()) G_DECLARE_FINAL_TYPE (BzSearchPillList, bz_search_pill_list, BZ, SEARCH_PILL_LIST, GtkBox) GtkWidget *bz_search_pill_list_new (void); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-search-result.txt��������������������������������������������������0000664�0000000�0000000�00000000541�15240005042�0022060�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=search_result parent-prefix=g parent-name=object author=AUTOGEN include="bz-state-info.h" property=group BzEntryGroup BZ_TYPE_ENTRY_GROUP object property=original_index guint G_TYPE_UINT uint property=score double G_TYPE_DOUBLE double property=title_markup char G_TYPE_STRING string property=state BzStateInfo BZ_TYPE_STATE_INFO object ���������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-section-view.blp���������������������������������������������������0000664�0000000�0000000�00000005314�15240005042�0021654�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Gio 2.0; using Adw 1; template $BzSectionView: Adw.Bin { margin-top: 16; child: Box { hexpand: true; vexpand: true; halign: fill; valign: fill; orientation: vertical; spacing: 4; Label { visible: bind $invert_boolean($is_null_string(template.section as <$BzCuratedSection>.title as <string>) as <bool>) as <bool>; label: bind template.section as <$BzCuratedSection>.title as <string>; halign: start; xalign: 0; styles [ "title-1", ] } Box { hexpand: true; vexpand: true; visible: bind $invert_boolean($is_null(template.section as <$BzCuratedSection>.subtitle) as <bool>) as <bool>; margin-bottom: 2; $BgeMarkdownRender subtitle { hexpand: true; vexpand: true; wrap-tables: false; markdown: bind template.section as <$BzCuratedSection>.subtitle as <$BzCuratedMarkdownInfo>.string as <string>; } } Box { hexpand: true; vexpand: true; visible: bind $invert_boolean($is_null(template.section as <$BzCuratedSection>.appids) as <bool>) as <bool>; orientation: vertical; spacing: 10; margin-top: 10; margin-bottom: 16; $BzDynamicListView list { hexpand: true; scroll: false; column-spacing: 10; noscroll-kind: flow-box; child-type: bind try{$get_child_type(template.section as <$BzCuratedSection>.list-type) as <string>,"BzAppTile"}; child-prop: "group"; model: SliceListModel slice { model: bind $convert_to_groups( template.section as <$BzCuratedSection>.appids as <$BzCuratedAppidsInfo>.list ) as <Gio.ListModel>; offset: 0; size: bind $get_slice_length(template.section as <$BzCuratedSection>.overflow-count, template.section as <$BzCuratedSection>.enable-bulk-install); }; } Button { styles [ "pill", ] margin-start: 25; margin-end: 25; margin-top: 12; halign: center; visible: bind $show_more_visible(template.section as <$BzCuratedSection>.enable-bulk-install as <bool>, template.section as <$BzCuratedSection>.appids as <$BzCuratedAppidsInfo>.list, template.section as <$BzCuratedSection>.overflow-count); label: _("Show More"); clicked => $show_more_clicked(template); } Button { styles [ "pill", ] margin-start: 25; margin-end: 25; margin-top: 12; halign: center; visible: bind template.section as <$BzCuratedSection>.enable-bulk-install as <bool>; label: _("Install All"); clicked => $install_all_clicked(template); } } }; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-section-view.c�����������������������������������������������������0000664�0000000�0000000�00000020775�15240005042�0021331�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-section-view.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <bge.h> #include "bz-application.h" #include "bz-apps-page.h" #include "bz-curated-section.h" #include "bz-dynamic-list-view.h" #include "bz-entry-group.h" #include "bz-rich-app-tile.h" #include "bz-section-view.h" #include "bz-window.h" struct _BzSectionView { AdwBin parent_instance; BzCuratedSection *section; /* Template widgets */ BgeMarkdownRender *subtitle; }; G_DEFINE_FINAL_TYPE (BzSectionView, bz_section_view, ADW_TYPE_BIN) enum { PROP_0, PROP_SECTION, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_section_view_dispose (GObject *object) { BzSectionView *self = BZ_SECTION_VIEW (object); g_clear_object (&self->section); G_OBJECT_CLASS (bz_section_view_parent_class)->dispose (object); } static void bz_section_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzSectionView *self = BZ_SECTION_VIEW (object); switch (prop_id) { case PROP_SECTION: g_value_set_object (value, bz_section_view_get_section (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_section_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzSectionView *self = BZ_SECTION_VIEW (object); switch (prop_id) { case PROP_SECTION: bz_section_view_set_section (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_null_string (gpointer object, const char *value) { return value == NULL; } static char * get_child_type (gpointer object, const char *list_type) { if (list_type != NULL && g_strcmp0 (list_type, "rich") == 0) return g_strdup ("BzRichAppTile"); return g_strdup ("BzAppTile"); } static guint get_slice_length (gpointer object, guint overflow_count, gboolean install_all_visible) { if (overflow_count == 0 || install_all_visible) return 20; return MIN (overflow_count, 20); } static gboolean show_more_visible (gpointer object, gboolean enable_bulk_install, GListModel *full_model, guint overflow_count) { if (enable_bulk_install || full_model == NULL) return FALSE; return g_list_model_get_n_items (full_model) > (overflow_count == 0 ? 20 : MIN (overflow_count, 20)); } static GListModel * convert_to_groups (gpointer object, GListModel *value) { BzStateInfo *info = NULL; BzApplicationMapFactory *factory = NULL; info = bz_state_info_get_default (); factory = bz_state_info_get_application_factory (info); return bz_application_map_factory_generate (factory, value); } static void install_all_clicked (BzSectionView *self, GtkButton *button) { GtkWidget *window = NULL; BzCuratedAppidsInfo *appids = NULL; GListModel *list = NULL; guint n_appids = 0; BzStateInfo *info = NULL; BzApplicationMapFactory *factory = NULL; g_autoptr (GListModel) groups = NULL; window = gtk_widget_get_ancestor (GTK_WIDGET (self), BZ_TYPE_WINDOW); if (window == NULL) return; /* If the button is visible and the user clicked it, this must be non-null */ appids = bz_curated_section_get_appids (self->section); list = bz_curated_appids_info_get_list (appids); if (list == NULL) return; n_appids = g_list_model_get_n_items (list); if (n_appids == 0) return; /* TODO: bind state via object properties */ info = bz_state_info_get_default (); factory = bz_state_info_get_application_factory (info); groups = bz_application_map_factory_generate (factory, list); /* TODO: use signals to chain up the blueprints; it is cleaner, but more work... :( */ bz_window_bulk_install (BZ_WINDOW (window), groups); } static void show_more_clicked (BzSectionView *self, GtkButton *button) { BzCuratedAppidsInfo *appids = NULL; GListModel *list = NULL; g_autoptr (GListModel) groups = NULL; BzStateInfo *info = NULL; BzApplicationMapFactory *factory = NULL; AdwNavigationPage *apps_page = NULL; GtkWidget *nav_view = NULL; const char *title = NULL; if (self->section == NULL) return; appids = bz_curated_section_get_appids (self->section); list = bz_curated_appids_info_get_list (appids); if (list == NULL) return; info = bz_state_info_get_default (); factory = bz_state_info_get_application_factory (info); groups = bz_application_map_factory_generate (factory, list); title = bz_curated_section_get_title (self->section); apps_page = bz_apps_page_new (title, groups); nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); if (nav_view != NULL) adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), apps_page); } static void bz_section_view_class_init (BzSectionViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_section_view_dispose; object_class->get_property = bz_section_view_get_property; object_class->set_property = bz_section_view_set_property; props[PROP_SECTION] = g_param_spec_object ( "section", NULL, NULL, BZ_TYPE_CURATED_SECTION, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_DYNAMIC_LIST_VIEW); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-section-view.ui"); gtk_widget_class_bind_template_child (widget_class, BzSectionView, subtitle); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_null_string); gtk_widget_class_bind_template_callback (widget_class, get_child_type); gtk_widget_class_bind_template_callback (widget_class, convert_to_groups); gtk_widget_class_bind_template_callback (widget_class, install_all_clicked); gtk_widget_class_bind_template_callback (widget_class, show_more_clicked); gtk_widget_class_bind_template_callback (widget_class, get_slice_length); gtk_widget_class_bind_template_callback (widget_class, show_more_visible); } static void bz_section_view_init (BzSectionView *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_section_view_new (BzCuratedSection *section) { return g_object_new ( BZ_TYPE_SECTION_VIEW, "section", section, NULL); } void bz_section_view_set_section (BzSectionView *self, BzCuratedSection *section) { g_return_if_fail (BZ_IS_SECTION_VIEW (self)); g_return_if_fail (section == NULL || BZ_IS_CURATED_SECTION (section)); g_clear_object (&self->section); if (section != NULL) self->section = g_object_ref (section); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SECTION]); } BzCuratedSection * bz_section_view_get_section (BzSectionView *self) { g_return_val_if_fail (BZ_IS_SECTION_VIEW (self), NULL); return self->section; } ���bazaar-org-bazaar-48f93f4/src/bz-section-view.h�����������������������������������������������������0000664�0000000�0000000�00000002334�15240005042�0021325�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-section-view.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-curated-section.h" G_BEGIN_DECLS #define BZ_TYPE_SECTION_VIEW (bz_section_view_get_type ()) G_DECLARE_FINAL_TYPE (BzSectionView, bz_section_view, BZ, SECTION_VIEW, AdwBin) GtkWidget * bz_section_view_new (BzCuratedSection *section); void bz_section_view_set_section (BzSectionView *self, BzCuratedSection *section); BzCuratedSection * bz_section_view_get_section (BzSectionView *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-serializable.c�����������������������������������������������������0000664�0000000�0000000�00000003776�15240005042�0021365�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-serializable.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "bz-serializable.h" G_DEFINE_INTERFACE (BzSerializable, bz_serializable, G_TYPE_OBJECT) static void bz_serializable_real_serialize (BzSerializable *self, GVariantBuilder *builder) { return; } static gboolean bz_serializable_real_deserialize (BzSerializable *self, GVariant *import, GError **error) { return TRUE; } static void bz_serializable_default_init (BzSerializableInterface *iface) { iface->serialize = bz_serializable_real_serialize; iface->deserialize = bz_serializable_real_deserialize; } void bz_serializable_serialize (BzSerializable *self, GVariantBuilder *builder) { g_return_if_fail (BZ_IS_SERIALIZABLE (self)); g_return_if_fail (builder != NULL); BZ_SERIALIZABLE_GET_IFACE (self)->serialize ( self, builder); } gboolean bz_serializable_deserialize (BzSerializable *self, GVariant *import, GError **error) { g_return_val_if_fail (BZ_IS_SERIALIZABLE (self), FALSE); g_return_val_if_fail (import != NULL, FALSE); return BZ_SERIALIZABLE_GET_IFACE (self)->deserialize ( self, import, error); } ��bazaar-org-bazaar-48f93f4/src/bz-serializable.h�����������������������������������������������������0000664�0000000�0000000�00000003026�15240005042�0021356�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-serializable.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib-object.h> G_BEGIN_DECLS #define BZ_TYPE_SERIALIZABLE (bz_serializable_get_type ()) G_DECLARE_INTERFACE (BzSerializable, bz_serializable, BZ, SERIALIZABLE, GObject) struct _BzSerializableInterface { GTypeInterface parent_iface; void (*serialize) (BzSerializable *self, GVariantBuilder *builder); gboolean (*deserialize) (BzSerializable *self, GVariant *import, GError **error); }; void bz_serializable_serialize (BzSerializable *self, GVariantBuilder *builder); gboolean bz_serializable_deserialize (BzSerializable *self, GVariant *import, GError **error); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-share-list.c�������������������������������������������������������0000664�0000000�0000000�00000027604�15240005042�0020766�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-share-list.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-share-list.h" #include "bz-url.h" #include "bz-window.h" struct _BzShareList { GtkBox parent_instance; GListModel *urls; gboolean dual_column; }; G_DEFINE_FINAL_TYPE (BzShareList, bz_share_list, GTK_TYPE_BOX) enum { PROP_0, PROP_URLS, PROP_DUAL_COLUMN, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; typedef struct { const char *id; const char *display_name; const char *icon_name; } UrlInfo; static const UrlInfo url_info[] = { { "flathub", NC_ ("Project URL Type", "Flathub Page"), "flathub-symbolic" }, { "homepage", NC_ ("Project URL Type", "Project Website"), "globe-symbolic" }, { "bugtracker", NC_ ("Project URL Type", "Issue Tracker"), "computer-fail-symbolic" }, { "faq", NC_ ("Project URL Type", "FAQ"), "help-faq-symbolic" }, { "help", NC_ ("Project URL Type", "Help"), "help-browser-symbolic" }, { "donation", NC_ ("Project URL Type", "Donate"), "heart-filled-symbolic" }, { "translate", NC_ ("Project URL Type", "Translate"), "translations-symbolic" }, { "contact", NC_ ("Project URL Type", "Contact"), "mail-send-symbolic" }, { "vcs-browser", NC_ ("Project URL Type", "Source Code"), "code-symbolic" }, { "contribute", NC_ ("Project URL Type", "Contribute"), "system-users-symbolic" }, { "manifest", NC_ ("Project URL Type", "Manifest"), "shoe-box-symbolic" }, { NULL, NULL, NULL } }; static void populate_urls (BzShareList *self); static GtkListBox *create_list_box (void); static AdwActionRow *create_url_action_row (BzShareList *self, BzUrl *url_item); static void copy_cb (BzShareList *self, GtkButton *button); static void follow_link_cb (BzShareList *self, GtkWidget *widget); static void bz_share_list_dispose (GObject *object) { BzShareList *self = BZ_SHARE_LIST (object); g_clear_object (&self->urls); G_OBJECT_CLASS (bz_share_list_parent_class)->dispose (object); } static void bz_share_list_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzShareList *self = BZ_SHARE_LIST (object); switch (prop_id) { case PROP_URLS: g_value_set_object (value, self->urls); break; case PROP_DUAL_COLUMN: g_value_set_boolean (value, self->dual_column); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_share_list_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzShareList *self = BZ_SHARE_LIST (object); switch (prop_id) { case PROP_URLS: g_clear_object (&self->urls); self->urls = g_value_dup_object (value); populate_urls (self); break; case PROP_DUAL_COLUMN: self->dual_column = g_value_get_boolean (value); populate_urls (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_share_list_class_init (BzShareListClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_share_list_dispose; object_class->get_property = bz_share_list_get_property; object_class->set_property = bz_share_list_set_property; props[PROP_URLS] = g_param_spec_object ( "urls", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_DUAL_COLUMN] = g_param_spec_boolean ( "dual-column", NULL, NULL, FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_URL); } static void bz_share_list_init (BzShareList *self) { gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_VERTICAL); } GtkWidget * bz_share_list_new (void) { return g_object_new (BZ_TYPE_SHARE_LIST, NULL); } static void populate_urls (BzShareList *self) { GtkWidget *child = NULL; guint n_items = 0; guint left_count = 0; guint right_count = 0; while ((child = gtk_widget_get_first_child (GTK_WIDGET (self))) != NULL) gtk_box_remove (GTK_BOX (self), child); if (!self->urls) return; n_items = g_list_model_get_n_items (self->urls); if (!self->dual_column || n_items <= 1) { GtkListBox *list_box = NULL; list_box = create_list_box (); gtk_widget_set_hexpand (GTK_WIDGET (list_box), TRUE); for (guint i = 0; i < n_items; i++) { g_autoptr (BzUrl) url_item = NULL; AdwActionRow *action_row = NULL; url_item = g_list_model_get_item (self->urls, i); action_row = create_url_action_row (self, url_item); gtk_list_box_append (list_box, GTK_WIDGET (action_row)); } gtk_box_append (GTK_BOX (self), GTK_WIDGET (list_box)); } else { GtkBox *columns_box = NULL; GtkListBox *left_box = NULL; GtkListBox *right_box = NULL; left_count = (n_items + 1) / 2; right_count = n_items / 2; columns_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12)); gtk_widget_set_hexpand (GTK_WIDGET (columns_box), TRUE); gtk_box_set_homogeneous (columns_box, TRUE); left_box = create_list_box (); gtk_widget_set_hexpand (GTK_WIDGET (left_box), TRUE); for (guint i = 0; i < left_count; i++) { g_autoptr (BzUrl) url_item = NULL; AdwActionRow *action_row = NULL; url_item = g_list_model_get_item (self->urls, i); action_row = create_url_action_row (self, url_item); gtk_list_box_append (left_box, GTK_WIDGET (action_row)); } right_box = create_list_box (); gtk_widget_set_hexpand (GTK_WIDGET (right_box), TRUE); for (guint i = 0; i < right_count; i++) { g_autoptr (BzUrl) url_item = NULL; AdwActionRow *action_row = NULL; url_item = g_list_model_get_item (self->urls, left_count + i); action_row = create_url_action_row (self, url_item); gtk_list_box_append (right_box, GTK_WIDGET (action_row)); } gtk_box_append (columns_box, GTK_WIDGET (left_box)); gtk_box_append (columns_box, GTK_WIDGET (right_box)); gtk_box_append (GTK_BOX (self), GTK_WIDGET (columns_box)); } } static GtkListBox * create_list_box (void) { GtkListBox *list_box = NULL; list_box = GTK_LIST_BOX (gtk_list_box_new ()); gtk_list_box_set_selection_mode (list_box, GTK_SELECTION_NONE); gtk_widget_add_css_class (GTK_WIDGET (list_box), "boxed-list"); gtk_widget_set_valign (GTK_WIDGET (list_box), GTK_ALIGN_START); return list_box; } static AdwActionRow * create_url_action_row (BzShareList *self, BzUrl *url_item) { const char *url_string = NULL; const char *id = NULL; const char *display = NULL; AdwActionRow *action_row = NULL; GtkImage *suffix_icon = NULL; GtkBox *suffix_box = NULL; GtkButton *copy_button = NULL; GtkSeparator *separator = NULL; const UrlInfo *info = NULL; url_string = bz_url_get_url (url_item); id = bz_url_get_id (url_item); display = (g_str_has_prefix (url_string, "http://") || g_str_has_prefix (url_string, "https://")) ? strstr (url_string, "://") + 3 : url_string; for (int i = 0; url_info[i].id != NULL; i++) { if (g_strcmp0 (url_info[i].id, id) == 0) { info = &url_info[i]; break; } } action_row = ADW_ACTION_ROW (adw_action_row_new ()); adw_preferences_row_set_use_markup (ADW_PREFERENCES_ROW (action_row), FALSE); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (action_row), info ? g_dpgettext2 (NULL, "Project URL Type", info->display_name) : url_string); adw_action_row_set_subtitle (action_row, display); adw_action_row_set_subtitle_lines (action_row, 1); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (action_row), TRUE); g_object_set_data_full (G_OBJECT (action_row), "url", g_strdup (url_string), g_free); g_signal_connect_swapped (action_row, "activated", G_CALLBACK (follow_link_cb), self); if (info != NULL && info->icon_name != NULL && info->icon_name[0] != '\0') { GtkImage *prefix_icon = NULL; prefix_icon = GTK_IMAGE (gtk_image_new_from_icon_name (info->icon_name)); gtk_image_set_icon_size (prefix_icon, GTK_ICON_SIZE_NORMAL); adw_action_row_add_prefix (action_row, GTK_WIDGET (prefix_icon)); } suffix_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4)); gtk_widget_set_valign (GTK_WIDGET (suffix_box), GTK_ALIGN_CENTER); copy_button = GTK_BUTTON (gtk_button_new_from_icon_name ("edit-copy-symbolic")); gtk_widget_set_tooltip_text (GTK_WIDGET (copy_button), _ ("Copy Link")); gtk_button_set_has_frame (copy_button, FALSE); g_object_set_data_full (G_OBJECT (copy_button), "url", g_strdup (url_string), g_free); g_signal_connect_swapped (copy_button, "clicked", G_CALLBACK (copy_cb), self); separator = GTK_SEPARATOR (gtk_separator_new (GTK_ORIENTATION_VERTICAL)); gtk_widget_set_margin_top (GTK_WIDGET (separator), 6); gtk_widget_set_margin_bottom (GTK_WIDGET (separator), 6); suffix_icon = GTK_IMAGE (gtk_image_new_from_icon_name ("external-link-symbolic")); gtk_image_set_icon_size (suffix_icon, GTK_ICON_SIZE_NORMAL); gtk_widget_set_margin_start (GTK_WIDGET (suffix_icon), 8); gtk_widget_set_margin_end (GTK_WIDGET (suffix_icon), 4); gtk_box_append (suffix_box, GTK_WIDGET (copy_button)); gtk_box_append (suffix_box, GTK_WIDGET (separator)); gtk_box_append (suffix_box, GTK_WIDGET (suffix_icon)); adw_action_row_add_suffix (action_row, GTK_WIDGET (suffix_box)); return action_row; } static void copy_cb (BzShareList *self, GtkButton *button) { const char *link = NULL; GdkClipboard *clipboard = NULL; AdwToast *toast = NULL; GtkWidget *ancestor = NULL; link = g_object_get_data (G_OBJECT (button), "url"); clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); gdk_clipboard_set_text (clipboard, link); toast = adw_toast_new (_ ("Copied!")); adw_toast_set_timeout (toast, 1); ancestor = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_TOAST_OVERLAY); if (ancestor != NULL) { adw_toast_overlay_add_toast (ADW_TOAST_OVERLAY (ancestor), toast); return; } } static void follow_link_cb (BzShareList *self, GtkWidget *widget) { const char *link = NULL; link = g_object_get_data (G_OBJECT (widget), "url"); g_app_info_launch_default_for_uri (link, NULL, NULL); } ����������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-share-list.h�������������������������������������������������������0000664�0000000�0000000�00000001736�15240005042�0020771�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-share-list.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_SHARE_LIST (bz_share_list_get_type ()) G_DECLARE_FINAL_TYPE (BzShareList, bz_share_list, BZ, SHARE_LIST, GtkBox) GtkWidget * bz_share_list_new (void); G_END_DECLS ����������������������������������bazaar-org-bazaar-48f93f4/src/bz-size-result.txt����������������������������������������������������0000664�0000000�0000000�00000000264�15240005042�0021567�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=size_result parent-prefix=g parent-name=object author=AUTOGEN property=user_data_size guint64 G_TYPE_UINT64 uint64 property=cache_size guint64 G_TYPE_UINT64 uint64 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-state-info.txt�����������������������������������������������������0000664�0000000�0000000�00000006447�15240005042�0021363�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=state_info parent-prefix=g parent-name=object author=AUTOGEN include="bz-application-map-factory.h" include="bz-auth-state.h" include="bz-backend.h" include="bz-content-provider.h" include="bz-entry-cache-manager.h" include="bz-flathub-state.h" include="bz-internal-config.h" include="bz-main-config.h" include="bz-search-engine.h" include="bz-transaction-manager.h" property=all_entries GListModel G_TYPE_LIST_MODEL object property=all_entry_groups GListModel G_TYPE_LIST_MODEL object property=filtered_entry_groups GListModel G_TYPE_LIST_MODEL object property=all_installed_entry_groups GListModel G_TYPE_LIST_MODEL object property=all_user_data_entry_groups GListModel G_TYPE_LIST_MODEL object property=allow_manual_sync gboolean G_TYPE_BOOLEAN boolean property=application_factory BzApplicationMapFactory BZ_TYPE_APPLICATION_MAP_FACTORY object property=auth_state BzAuthState BZ_TYPE_AUTH_STATE object property=available_updates GListModel G_TYPE_LIST_MODEL object property=backend BzBackend BZ_TYPE_BACKEND object property=background_task_label char G_TYPE_STRING string property=blocklists GListModel G_TYPE_LIST_MODEL object property=blocklists_provider BzContentProvider BZ_TYPE_CONTENT_PROVIDER object property=busy gboolean G_TYPE_BOOLEAN boolean property=busy_progress double G_TYPE_DOUBLE double property=busy_progress_label char G_TYPE_STRING string property=busy_step_label char G_TYPE_STRING string property=cache_manager BzEntryCacheManager BZ_TYPE_ENTRY_CACHE_MANAGER object property=checking_for_updates gboolean G_TYPE_BOOLEAN boolean property=curated_configs GListModel G_TYPE_LIST_MODEL object property=curated_provider BzContentProvider BZ_TYPE_CONTENT_PROVIDER object property=debug_mode gboolean G_TYPE_BOOLEAN boolean property=disable_blocklists gboolean G_TYPE_BOOLEAN boolean property=donation_prompt_dismissed gboolean G_TYPE_BOOLEAN boolean property=entry_factory BzApplicationMapFactory BZ_TYPE_APPLICATION_MAP_FACTORY object property=flathub BzFlathubState BZ_TYPE_FLATHUB_STATE object property=has_flathub gboolean G_TYPE_BOOLEAN boolean property=have_connection gboolean G_TYPE_BOOLEAN boolean property=hide_eol gboolean G_TYPE_BOOLEAN boolean property=internal_config BzInternalConfig BZ_TYPE_INTERNAL_CONFIG object property=main_config BzMainConfig BZ_TYPE_MAIN_CONFIG object property=metered_connection gboolean G_TYPE_BOOLEAN boolean property=recently_synced gboolean G_TYPE_BOOLEAN boolean property=online gboolean G_TYPE_BOOLEAN boolean property=repositories GListModel G_TYPE_LIST_MODEL object property=search_engine BzSearchEngine BZ_TYPE_SEARCH_ENGINE object property=settings GSettings G_TYPE_SETTINGS object property=show_only_flathub gboolean G_TYPE_BOOLEAN boolean property=show_only_foss gboolean G_TYPE_BOOLEAN boolean property=show_only_verified gboolean G_TYPE_BOOLEAN boolean property=syncing gboolean G_TYPE_BOOLEAN boolean property=system_icon_theme GtkIconTheme GTK_TYPE_ICON_THEME object property=transaction_manager BzTransactionManager BZ_TYPE_TRANSACTION_MANAGER object property=txt_blocklists GListModel G_TYPE_LIST_MODEL object property=txt_blocklists_provider BzContentProvider BZ_TYPE_CONTENT_PROVIDER object property=user_icon_theme GtkIconTheme GTK_TYPE_ICON_THEME object property=parental_blocked_ids GListModel G_TYPE_LIST_MODEL object property=parental_age_rating int G_TYPE_INT int �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-stats-dialog.blp���������������������������������������������������0000664�0000000�0000000�00000004701�15240005042�0021632�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzStatsDialog: Adw.BreakpointBin { width-request: 360; height-request: 450; child: Adw.ToolbarView { bottom-bar-style: raised_border; [top] Adw.HeaderBar { title-widget: Adw.ViewSwitcher switcher_title { visible: bind $logical_and($model_has_enough_points(template.model) as <bool>, $invert_boolean($is_null(template.country-model) as <bool>) as <bool>) as <bool>; stack: stack; policy: wide; }; } content: Box { orientation: vertical; Adw.ViewStack stack { vexpand: true; Adw.ViewStackPage { name: "graph"; // TRANSLATORS: page in the statistics dialog title: _("Timeline"); icon-name: "graph2-symbolic"; visible: bind $model_has_enough_points(template.model) as <bool>; child: Box { orientation: vertical; Label { label: bind $format_total_downloads(template.total-downloads) as <string>; halign: end; hexpand: true; margin-end: 34; margin-bottom: 2; styles ["dimmed"] } $BzDataGraph graph { model: bind template.model; // TRANSLATORS: label prefix shown in graph tooltips, for example: "Installs: 42" tooltip-prefix: _("Installs:"); vexpand: true; hexpand: true; } }; } Adw.ViewStackPage { name: "map"; // TRANSLATORS: page in the statistics dialog title: _("World"); icon-name: "globe-symbolic"; child: Box { orientation: vertical; margin-top:10; margin-bottom: 10; $BzWorldMap world_map { model: bind template.country-model; vexpand: true; } Label { label: _("Since 4/15/2024"); halign: center; styles [ "dimmed", "caption" ] } }; } } Adw.ViewSwitcherBar switcher_bar { visible: bind $invert_boolean($is_null(template.country-model) as <bool>) as <bool>; stack: stack; } }; }; Adw.Breakpoint { condition ("max-width: 450sp") setters { switcher_title.stack: null; switcher_bar.reveal: true; } } }���������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-stats-dialog.c�����������������������������������������������������0000664�0000000�0000000�00000013560�15240005042�0021302�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-stats-dialog.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-data-graph.h" #include "bz-stats-dialog.h" #include "template-callbacks.h" #include "bz-world-map.h" struct _BzStatsDialog { AdwBreakpointBin parent_instance; GListModel *model; GListModel *country_model; int total_downloads; /* Template widgets */ AdwViewStack *stack; BzDataGraph *graph; BzWorldMap *world_map; }; G_DEFINE_FINAL_TYPE (BzStatsDialog, bz_stats_dialog, ADW_TYPE_BREAKPOINT_BIN) enum { PROP_0, PROP_MODEL, PROP_COUNTRY_MODEL, PROP_TOTAL_DOWNLOADS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_stats_dialog_dispose (GObject *object) { BzStatsDialog *self = BZ_STATS_DIALOG (object); g_clear_object (&self->model); g_clear_object (&self->country_model); G_OBJECT_CLASS (bz_stats_dialog_parent_class)->dispose (object); } static void bz_stats_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzStatsDialog *self = BZ_STATS_DIALOG (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, self->model); break; case PROP_COUNTRY_MODEL: g_value_set_object (value, self->country_model); break; case PROP_TOTAL_DOWNLOADS: g_value_set_int (value, self->total_downloads); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_stats_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzStatsDialog *self = BZ_STATS_DIALOG (object); switch (prop_id) { case PROP_MODEL: g_clear_object (&self->model); self->model = g_value_dup_object (value); break; case PROP_COUNTRY_MODEL: g_clear_object (&self->country_model); self->country_model = g_value_dup_object (value); break; case PROP_TOTAL_DOWNLOADS: self->total_downloads = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static char * format_total_downloads (gpointer object, int value) { if (value <= 0) return g_strdup ("---"); if (value >= 1000000) /* Translators: M is the suffix for millions */ return g_strdup_printf (_ ("%.2fM Total Installs"), value / 1000000.0); else if (value >= 1000) /* Translators: K is the suffix for thousands*/ return g_strdup_printf (_ ("%.2fK Total Installs"), value / 1000.0); else return g_strdup_printf (_ ("%'d Total Installs"), value); } static gboolean model_has_enough_points (gpointer object, GListModel *model) { if (model == NULL) return FALSE; return g_list_model_get_n_items (model) >= 10; } static void bz_stats_dialog_class_init (BzStatsDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_stats_dialog_dispose; object_class->get_property = bz_stats_dialog_get_property; object_class->set_property = bz_stats_dialog_set_property; props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_COUNTRY_MODEL] = g_param_spec_object ( "country-model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE); props[PROP_TOTAL_DOWNLOADS] = g_param_spec_int ( "total-downloads", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READWRITE); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_DATA_GRAPH); g_type_ensure (BZ_TYPE_WORLD_MAP); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-stats-dialog.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_callback (widget_class, format_total_downloads); gtk_widget_class_bind_template_callback (widget_class, model_has_enough_points); gtk_widget_class_bind_template_child (widget_class, BzStatsDialog, stack); gtk_widget_class_bind_template_child (widget_class, BzStatsDialog, graph); gtk_widget_class_bind_template_child (widget_class, BzStatsDialog, world_map); } static void bz_stats_dialog_init (BzStatsDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } AdwBreakpointBin * bz_stats_dialog_new (GListModel *model, GListModel *country_model, int total_downloads) { BzStatsDialog *stats_dialog = NULL; stats_dialog = g_object_new ( BZ_TYPE_STATS_DIALOG, "model", model, "country-model", country_model, "total-downloads", total_downloads, NULL); return ADW_BREAKPOINT_BIN (stats_dialog); } void bz_stats_dialog_animate_open (BzStatsDialog *self) { g_return_if_fail (BZ_IS_STATS_DIALOG (self)); bz_data_graph_animate_open (self->graph); } ������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-stats-dialog.h�����������������������������������������������������0000664�0000000�0000000�00000002245�15240005042�0021305�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-stats-dialog.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_STATS_DIALOG (bz_stats_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzStatsDialog, bz_stats_dialog, BZ, STATS_DIALOG, AdwBreakpointBin) AdwBreakpointBin * bz_stats_dialog_new (GListModel *model, GListModel *country_model, int total_downloads); void bz_stats_dialog_animate_open (BzStatsDialog *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-subcategory-list.c�������������������������������������������������0000664�0000000�0000000�00000024570�15240005042�0022212�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-subcategory-list.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include <libdex.h> #include "bz-apps-page.h" #include "bz-flathub-state.h" #include "bz-flathub-sub-category.h" #include "bz-subcategory-list.h" #include "util.h" #include "bz-window.h" struct _BzSubcategoryList { GtkBox parent_instance; BzFlathubCategory *category; BzFlathubState *flathub_state; DexFuture *task; }; G_DEFINE_FINAL_TYPE (BzSubcategoryList, bz_subcategory_list, GTK_TYPE_BOX); enum { PROP_0, PROP_CATEGORY, PROP_FLATHUB_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * search_finally (DexFuture *future, GWeakRef *wr) { g_autoptr (BzSubcategoryList) self = NULL; g_autoptr (GError) local_error = NULL; GtkRoot *root = NULL; const GValue *value = NULL; bz_weak_get_or_return_reject (self, wr); root = gtk_widget_get_root (GTK_WIDGET (self)); value = dex_future_get_value (future, &local_error); if (value != NULL) { GListModel *model = NULL; guint n_items = 0; model = g_value_get_object (value); n_items = g_list_model_get_n_items (model); if (n_items <= 1) { AdwToast *toast = adw_toast_new (_ ("No Results Found")); bz_window_add_toast (BZ_WINDOW (root), toast); } else { const char *subcategory_name = NULL; g_autofree char *subtitle = NULL; AdwNavigationPage *apps_page = NULL; GtkWidget *nav_view = NULL; subcategory_name = g_object_get_data (G_OBJECT (self), "current-subcategory"); subtitle = g_strdup_printf (_ ("%d Applications"), n_items); apps_page = bz_apps_page_new (subcategory_name, model); bz_apps_page_set_subtitle (BZ_APPS_PAGE (apps_page), subtitle); nav_view = gtk_widget_get_ancestor (GTK_WIDGET (self), ADW_TYPE_NAVIGATION_VIEW); adw_navigation_view_push (ADW_NAVIGATION_VIEW (nav_view), apps_page); } } else { AdwToast *toast = adw_toast_new (_ ("Search failed")); bz_window_add_toast (BZ_WINDOW (root), toast); g_warning ("Search failed: %s", local_error->message); } dex_clear (&self->task); return dex_future_new_true (); } static void subcategory_button_clicked_cb (BzSubcategoryList *self, GtkButton *button) { g_autoptr (DexFuture) future = NULL; const char *category = NULL; const char *label = NULL; g_autofree char *route = NULL; g_return_if_fail (BZ_IS_SUBCATEGORY_LIST (self)); g_return_if_fail (GTK_IS_BUTTON (button)); if (self->flathub_state == NULL) return; if (self->category == NULL) return; if (self->task != NULL) return; category = bz_flathub_category_get_name (self->category); if (category == NULL || *category == '\0') return; label = gtk_button_get_label (button); if (label == NULL || *label == '\0') return; g_object_set_data_full (G_OBJECT (self), "current-subcategory", g_strdup (label), g_free); route = g_strdup (g_object_get_data (G_OBJECT (button), "subcategory-id")); if (route == NULL) return; future = bz_flathub_state_search_collection (self->flathub_state, route); future = dex_future_finally ( future, (DexFutureCallback) search_finally, bz_track_weak (self), bz_weak_release); self->task = g_steal_pointer (&future); } static void rebuild_subcategories (BzSubcategoryList *self) { GtkWidget *child; GListModel *subcategories; guint n_items; dex_clear (&self->task); while ((child = gtk_widget_get_first_child (GTK_WIDGET (self))) != NULL) gtk_box_remove (GTK_BOX (self), child); if (self->category == NULL) { gtk_widget_set_visible (GTK_WIDGET (self), FALSE); return; } subcategories = bz_flathub_category_get_subcategories (self->category); if (subcategories == NULL) { gtk_widget_set_visible (GTK_WIDGET (self), FALSE); return; } n_items = g_list_model_get_n_items (subcategories); if (n_items == 0) { gtk_widget_set_visible (GTK_WIDGET (self), FALSE); return; } gtk_widget_set_visible (GTK_WIDGET (self), TRUE); for (guint i = 0; i < n_items; i++) { g_autoptr (BzFlathubSubCategory) subcategory = NULL; const char *label = NULL; const char *subcat_id = NULL; const char *category = NULL; g_autofree char *route = NULL; GtkWidget *button = NULL; subcategory = g_list_model_get_item (subcategories, i); if (subcategory == NULL) continue; label = bz_flathub_sub_category_get_name(subcategory); subcat_id = bz_flathub_sub_category_get_id(subcategory); category = bz_flathub_category_get_name (self->category); route = g_strdup_printf ("/collection/category/%s/subcategories?subcategory=%s", category, subcat_id); button = gtk_button_new_with_label (label); gtk_widget_add_css_class (button, "small-pill"); g_object_set_data_full (G_OBJECT (button), "subcategory-id", g_steal_pointer (&route), g_free); g_signal_connect_swapped (button, "clicked", G_CALLBACK (subcategory_button_clicked_cb), self); gtk_box_append (GTK_BOX (self), button); } } static void bz_subcategory_list_dispose (GObject *object) { BzSubcategoryList *self = BZ_SUBCATEGORY_LIST (object); dex_clear (&self->task); g_clear_object (&self->category); g_clear_object (&self->flathub_state); G_OBJECT_CLASS (bz_subcategory_list_parent_class)->dispose (object); } static void bz_subcategory_list_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzSubcategoryList *self = BZ_SUBCATEGORY_LIST (object); switch (prop_id) { case PROP_CATEGORY: g_value_set_object (value, bz_subcategory_list_get_category (self)); break; case PROP_FLATHUB_STATE: g_value_set_object (value, bz_subcategory_list_get_flathub_state (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_subcategory_list_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzSubcategoryList *self = BZ_SUBCATEGORY_LIST (object); switch (prop_id) { case PROP_CATEGORY: bz_subcategory_list_set_category (self, g_value_get_object (value)); break; case PROP_FLATHUB_STATE: bz_subcategory_list_set_flathub_state (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_subcategory_list_class_init (BzSubcategoryListClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_subcategory_list_set_property; object_class->get_property = bz_subcategory_list_get_property; object_class->dispose = bz_subcategory_list_dispose; props[PROP_CATEGORY] = g_param_spec_object ( "category", NULL, NULL, BZ_TYPE_FLATHUB_CATEGORY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_FLATHUB_STATE] = g_param_spec_object ( "flathub-state", NULL, NULL, BZ_TYPE_FLATHUB_STATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_subcategory_list_init (BzSubcategoryList *self) { GtkLayoutManager *layout; gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_HORIZONTAL); gtk_widget_set_visible (GTK_WIDGET (self), FALSE); layout = GTK_LAYOUT_MANAGER (adw_wrap_layout_new ()); adw_wrap_layout_set_child_spacing (ADW_WRAP_LAYOUT (layout), 8); adw_wrap_layout_set_line_spacing (ADW_WRAP_LAYOUT (layout), 8); gtk_widget_set_layout_manager (GTK_WIDGET (self), layout); } GtkWidget * bz_subcategory_list_new (void) { return g_object_new (BZ_TYPE_SUBCATEGORY_LIST, NULL); } BzFlathubCategory * bz_subcategory_list_get_category (BzSubcategoryList *self) { g_return_val_if_fail (BZ_IS_SUBCATEGORY_LIST (self), NULL); return self->category; } void bz_subcategory_list_set_category (BzSubcategoryList *self, BzFlathubCategory *category) { g_return_if_fail (BZ_IS_SUBCATEGORY_LIST (self)); g_return_if_fail (category == NULL || BZ_IS_FLATHUB_CATEGORY (category)); g_clear_object (&self->category); if (category != NULL) self->category = g_object_ref (category); rebuild_subcategories (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CATEGORY]); } BzFlathubState * bz_subcategory_list_get_flathub_state (BzSubcategoryList *self) { g_return_val_if_fail (BZ_IS_SUBCATEGORY_LIST (self), NULL); return self->flathub_state; } void bz_subcategory_list_set_flathub_state (BzSubcategoryList *self, BzFlathubState *flathub_state) { g_return_if_fail (BZ_IS_SUBCATEGORY_LIST (self)); g_return_if_fail (flathub_state == NULL || BZ_IS_FLATHUB_STATE (flathub_state)); g_clear_object (&self->flathub_state); if (flathub_state != NULL) self->flathub_state = g_object_ref (flathub_state); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FLATHUB_STATE]); } ����������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-subcategory-list.h�������������������������������������������������0000664�0000000�0000000�00000003005�15240005042�0022205�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-subcategory-list.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-flathub-category.h" #include "bz-flathub-state.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_SUBCATEGORY_LIST (bz_subcategory_list_get_type ()) G_DECLARE_FINAL_TYPE (BzSubcategoryList, bz_subcategory_list, BZ, SUBCATEGORY_LIST, GtkBox) GtkWidget *bz_subcategory_list_new (void); BzFlathubCategory *bz_subcategory_list_get_category (BzSubcategoryList *self); void bz_subcategory_list_set_category (BzSubcategoryList *self, BzFlathubCategory *category); BzFlathubState *bz_subcategory_list_get_flathub_state (BzSubcategoryList *self); void bz_subcategory_list_set_flathub_state (BzSubcategoryList *self, BzFlathubState *flathub_state); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-themed-entry-group-rect.c������������������������������������������0000664�0000000�0000000�00000017060�15240005042�0023400�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-themed-entry-group-rect.c * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <adwaita.h> #include "bz-themed-entry-group-rect.h" struct _BzThemedEntryGroupRect { GtkWidget parent_instance; GtkWidget *child; BzEntryGroup *group; }; G_DEFINE_FINAL_TYPE (BzThemedEntryGroupRect, bz_themed_entry_group_rect, GTK_TYPE_WIDGET); enum { PROP_0, PROP_CHILD, PROP_GROUP, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_themed_entry_group_rect_dispose (GObject *object) { BzThemedEntryGroupRect *self = BZ_THEMED_ENTRY_GROUP_RECT (object); g_clear_pointer (&self->child, gtk_widget_unparent); g_clear_pointer (&self->group, g_object_unref); G_OBJECT_CLASS (bz_themed_entry_group_rect_parent_class)->dispose (object); } static void bz_themed_entry_group_rect_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzThemedEntryGroupRect *self = BZ_THEMED_ENTRY_GROUP_RECT (object); switch (prop_id) { case PROP_CHILD: g_value_set_object (value, bz_themed_entry_group_rect_get_child (self)); break; case PROP_GROUP: g_value_set_object (value, bz_themed_entry_group_rect_get_group (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_themed_entry_group_rect_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzThemedEntryGroupRect *self = BZ_THEMED_ENTRY_GROUP_RECT (object); switch (prop_id) { case PROP_CHILD: bz_themed_entry_group_rect_set_child (self, g_value_get_object (value)); break; case PROP_GROUP: bz_themed_entry_group_rect_set_group (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_themed_entry_group_rect_allocate (GtkWidget *widget, int width, int height, int baseline) { BzThemedEntryGroupRect *self = BZ_THEMED_ENTRY_GROUP_RECT (widget); if (self->child != NULL) gtk_widget_allocate (self->child, width, height, baseline, NULL); gtk_widget_queue_draw (widget); } static void bz_themed_entry_group_rect_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzThemedEntryGroupRect *self = BZ_THEMED_ENTRY_GROUP_RECT (widget); double widget_width = 0.0; double widget_height = 0.0; const char *light_color = NULL; const char *dark_color = NULL; GdkRGBA light_rgba = { 0 }; GdkRGBA dark_rgba = { 0 }; gboolean is_dark = FALSE; widget_width = (double) gtk_widget_get_width (widget); widget_height = (double) gtk_widget_get_height (widget); if (self->group != NULL) { light_color = bz_entry_group_get_light_accent_color (self->group); dark_color = bz_entry_group_get_dark_accent_color (self->group); } if (light_color != NULL) gdk_rgba_parse (&light_rgba, light_color); else gdk_rgba_parse (&light_rgba, "#ebebed"); if (dark_color != NULL) gdk_rgba_parse (&dark_rgba, dark_color); else gdk_rgba_parse (&dark_rgba, "#2e2e32"); is_dark = adw_style_manager_get_dark (adw_style_manager_get_default ()); gtk_snapshot_push_opacity (snapshot, 0.70); gtk_snapshot_append_color ( snapshot, is_dark ? &dark_rgba : &light_rgba, &GRAPHENE_RECT_INIT (0.0, 0.0, widget_width, widget_height)); gtk_snapshot_pop (snapshot); if (self->child != NULL) gtk_widget_snapshot_child (widget, self->child, snapshot); } static void bz_themed_entry_group_rect_class_init (BzThemedEntryGroupRectClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_themed_entry_group_rect_set_property; object_class->get_property = bz_themed_entry_group_rect_get_property; object_class->dispose = bz_themed_entry_group_rect_dispose; widget_class->size_allocate = bz_themed_entry_group_rect_allocate; widget_class->snapshot = bz_themed_entry_group_rect_snapshot; props[PROP_CHILD] = g_param_spec_object ( "child", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void dark_changed (BzThemedEntryGroupRect *self, GParamSpec *pspec, AdwStyleManager *mgr) { gtk_widget_queue_draw (GTK_WIDGET (self)); } static void bz_themed_entry_group_rect_init (BzThemedEntryGroupRect *self) { g_signal_connect_object ( adw_style_manager_get_default (), "notify::dark", G_CALLBACK (dark_changed), self, G_CONNECT_SWAPPED); } GtkWidget * bz_themed_entry_group_rect_new (void) { return g_object_new (BZ_TYPE_THEMED_ENTRY_GROUP_RECT, NULL); } BzEntryGroup * bz_themed_entry_group_rect_get_group (BzThemedEntryGroupRect *self) { g_return_val_if_fail (BZ_IS_THEMED_ENTRY_GROUP_RECT (self), NULL); return self->group; } void bz_themed_entry_group_rect_set_group (BzThemedEntryGroupRect *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_THEMED_ENTRY_GROUP_RECT (self)); g_clear_pointer (&self->group, g_object_unref); if (group != NULL) self->group = g_object_ref (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } GtkWidget * bz_themed_entry_group_rect_get_child (BzThemedEntryGroupRect *self) { g_return_val_if_fail (BZ_IS_THEMED_ENTRY_GROUP_RECT (self), NULL); return self->child; } void bz_themed_entry_group_rect_set_child (BzThemedEntryGroupRect *self, GtkWidget *child) { g_return_if_fail (BZ_THEMED_ENTRY_GROUP_RECT (self)); g_return_if_fail (child == NULL || GTK_IS_WIDGET (child)); if (self->child == child) return; if (child != NULL) g_return_if_fail (gtk_widget_get_parent (child) == NULL); g_clear_pointer (&self->child, gtk_widget_unparent); self->child = child; if (child != NULL) gtk_widget_set_parent (child, GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CHILD]); } /* End of bz-themed-entry-group-rect.c */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-themed-entry-group-rect.h������������������������������������������0000664�0000000�0000000�00000003100�15240005042�0023373�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-themed-entry-group-rect.h * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "bz-entry-group.h" G_BEGIN_DECLS #define BZ_TYPE_THEMED_ENTRY_GROUP_RECT (bz_themed_entry_group_rect_get_type ()) G_DECLARE_FINAL_TYPE (BzThemedEntryGroupRect, bz_themed_entry_group_rect, BZ, THEMED_ENTRY_GROUP_RECT, GtkWidget) GtkWidget * bz_themed_entry_group_rect_new (void); BzEntryGroup * bz_themed_entry_group_rect_get_group (BzThemedEntryGroupRect *self); void bz_themed_entry_group_rect_set_group (BzThemedEntryGroupRect *self, BzEntryGroup *group); GtkWidget * bz_themed_entry_group_rect_get_child (BzThemedEntryGroupRect *self); void bz_themed_entry_group_rect_set_child (BzThemedEntryGroupRect *self, GtkWidget *child); G_END_DECLS /* End of bz-themed-entry-group-rect.h */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transact-icon-info.txt���������������������������������������������0000664�0000000�0000000�00000000552�15240005042�0022777�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=transact_icon_info parent-prefix=g parent-name=object author=AUTOGEN include="bz-state-info.h" property=state BzStateInfo BZ_TYPE_STATE_INFO object property=group BzEntryGroup BZ_TYPE_ENTRY_GROUP object property=paintable GdkPaintable GDK_TYPE_PAINTABLE object property=tracker BzTransactionEntryTracker BZ_TYPE_TRANSACTION_ENTRY_TRACKER object ������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transact-icon.c����������������������������������������������������0000664�0000000�0000000�00000036543�15240005042�0021462�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transact-icon.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <bge.h> #include "bz-application.h" #include "bz-lazy-wdgt.h" #include "bz-transact-icon.h" #include "progress-bar-designs/common.h" struct _BzTransactIcon { AdwBin parent_instance; BzTransactIconInfo *info; GSettings *settings; BzTransactionManager *ts_manager; GListModel *trackers; BzTransactionEntryTracker *tracker; char *pride_class; BzLazyWdgt *wdgt; }; G_DEFINE_FINAL_TYPE (BzTransactIcon, bz_transact_icon, ADW_TYPE_BIN); enum { PROP_0, PROP_INFO, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void apply_state (BzTransactIcon *self); static void update_tracker (BzTransactIcon *self); static void check_tracker (BzTransactIcon *self); static void ensure_draw_css (BzTransactIcon *self); static void update_icon (BzTransactIcon *self); static void info_state_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactIconInfo *info); static void info_group_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactIconInfo *info); static void info_paintable_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactIconInfo *info); static void trackers_items_changed (BzTransactIcon *self, guint position, guint removed, guint added, GListModel *model); static void tracker_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactionEntryTracker *tracker); static void pride_flag_changed (BzTransactIcon *self, const char *key, GSettings *settings); static gboolean next_frame_tick_cb (GtkWidget *widget, GdkFrameClock *frame_clock, char *apply_state); static void bz_transact_icon_dispose (GObject *object) { BzTransactIcon *self = BZ_TRANSACT_ICON (object); if (self->info != NULL) { g_signal_handlers_disconnect_by_func ( self->info, info_state_notify, self); g_signal_handlers_disconnect_by_func ( self->info, info_group_notify, self); g_signal_handlers_disconnect_by_func ( self->info, info_paintable_notify, self); } g_clear_pointer (&self->info, g_object_unref); if (self->trackers != NULL) g_signal_handlers_disconnect_by_func ( self->trackers, trackers_items_changed, self); if (self->tracker != NULL) g_signal_handlers_disconnect_by_func ( self->tracker, tracker_notify, self); if (self->settings != NULL) g_signal_handlers_disconnect_by_func ( self->settings, pride_flag_changed, self); g_clear_object (&self->settings); g_clear_object (&self->ts_manager); g_clear_object (&self->trackers); g_clear_object (&self->tracker); g_clear_pointer (&self->pride_class, g_free); G_OBJECT_CLASS (bz_transact_icon_parent_class)->dispose (object); } static void bz_transact_icon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzTransactIcon *self = BZ_TRANSACT_ICON (object); switch (prop_id) { case PROP_INFO: g_value_set_object (value, bz_transact_icon_get_info (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_transact_icon_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzTransactIcon *self = BZ_TRANSACT_ICON (object); switch (prop_id) { case PROP_INFO: bz_transact_icon_set_info (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_transact_icon_class_init (BzTransactIconClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_transact_icon_set_property; object_class->get_property = bz_transact_icon_get_property; object_class->dispose = bz_transact_icon_dispose; props[PROP_INFO] = g_param_spec_object ( "info", NULL, NULL, BZ_TYPE_TRANSACT_ICON_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_transact_icon_init (BzTransactIcon *self) { GtkWidget *placeholder_icon = NULL; self->wdgt = bz_lazy_wdgt_new (); bz_lazy_wdgt_set_wdgt_resource (self->wdgt, "/io/github/kolunmi/Bazaar/bz-transact-icon.wdgt"); g_object_bind_property (self, "info", self->wdgt, "wdgt-reference", G_BINDING_DEFAULT); adw_bin_set_child (ADW_BIN (self), GTK_WIDGET (self->wdgt)); placeholder_icon = gtk_image_new (); gtk_widget_add_css_class (placeholder_icon, "icon-dropshadow"); g_object_bind_property (self, "height-request", placeholder_icon, "pixel-size", G_BINDING_SYNC_CREATE); adw_bin_set_child (ADW_BIN (self->wdgt), placeholder_icon); update_icon (self); } BzTransactIcon * bz_transact_icon_new (void) { return g_object_new (BZ_TYPE_TRANSACT_ICON, NULL); } BzTransactIconInfo * bz_transact_icon_get_info (BzTransactIcon *self) { g_return_val_if_fail (BZ_IS_TRANSACT_ICON (self), NULL); return self->info; } void bz_transact_icon_set_info (BzTransactIcon *self, BzTransactIconInfo *info) { g_return_if_fail (BZ_IS_TRANSACT_ICON (self)); g_return_if_fail (info == NULL || BZ_IS_TRANSACT_ICON_INFO (info)); if (info == self->info) return; if (self->info != NULL) { g_signal_handlers_disconnect_by_func ( self->info, info_state_notify, self); g_signal_handlers_disconnect_by_func ( self->info, info_group_notify, self); g_signal_handlers_disconnect_by_func ( self->info, info_paintable_notify, self); } g_clear_pointer (&self->info, g_object_unref); if (info != NULL) { self->info = g_object_ref (info); g_signal_connect_swapped (self->info, "notify::state", G_CALLBACK (info_state_notify), self); g_signal_connect_swapped (self->info, "notify::group", G_CALLBACK (info_group_notify), self); g_signal_connect_swapped (self->info, "notify::paintable", G_CALLBACK (info_paintable_notify), self); } apply_state (self); update_icon (self); bz_transact_icon_info_set_state ( info, bz_state_info_get_default ()); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INFO]); } static void apply_state (BzTransactIcon *self) { if (self->trackers != NULL) g_signal_handlers_disconnect_by_func ( self->trackers, trackers_items_changed, self); if (self->tracker != NULL) g_signal_handlers_disconnect_by_func ( self->tracker, tracker_notify, self); if (self->settings != NULL) g_signal_handlers_disconnect_by_func ( self->settings, pride_flag_changed, self); g_clear_object (&self->settings); g_clear_object (&self->ts_manager); g_clear_object (&self->trackers); g_clear_object (&self->tracker); if (self->info != NULL) { BzStateInfo *state = NULL; state = bz_transact_icon_info_get_state (self->info); if (state != NULL) { g_object_get ( state, "transaction-manager", &self->ts_manager, "settings", &self->settings, NULL); if (self->ts_manager != NULL) { g_object_get ( self->ts_manager, "all-trackers", &self->trackers, NULL); if (self->trackers != NULL) g_signal_connect_swapped ( self->trackers, "items-changed", G_CALLBACK (trackers_items_changed), self); } if (self->settings != NULL) { g_signal_connect_swapped ( self->settings, "changed::global-progress-bar-theme", G_CALLBACK (pride_flag_changed), self); } } } update_tracker (self); ensure_draw_css (self); } static void update_tracker (BzTransactIcon *self) { g_autoptr (BzTransactionEntryTracker) found = NULL; if (self->trackers != NULL) { BzEntryGroup *group = NULL; group = bz_transact_icon_info_get_group (self->info); if (group != NULL) { const char *id = NULL; guint n_trackers = 0; id = bz_entry_group_get_id (group); n_trackers = g_list_model_get_n_items (self->trackers); for (guint i = 0; i < n_trackers; i++) { g_autoptr (BzTransactionEntryTracker) tracker = NULL; BzEntry *entry = NULL; tracker = g_list_model_get_item (self->trackers, i); entry = bz_transaction_entry_tracker_get_entry (tracker); if (entry == NULL) continue; if (g_strcmp0 (bz_entry_get_id (entry), id) == 0) { found = g_steal_pointer (&tracker); break; } } } } bz_transact_icon_info_set_tracker (self->info, found); if (found != self->tracker) { if (self->tracker != NULL) g_signal_handlers_disconnect_by_func ( self->tracker, tracker_notify, self); g_clear_object (&self->tracker); if (found != NULL) { self->tracker = g_object_ref (found); g_signal_connect_swapped (self->tracker, "notify::active", G_CALLBACK (tracker_notify), self); g_signal_connect_swapped (self->tracker, "notify::pending", G_CALLBACK (tracker_notify), self); g_signal_connect_swapped (self->tracker, "notify::status", G_CALLBACK (tracker_notify), self); } check_tracker (self); } } static void check_tracker (BzTransactIcon *self) { const char *state = NULL; if (self->tracker != NULL) { gboolean active = FALSE; gboolean pending = FALSE; BzTransactionEntryStatus status = 0; active = bz_transaction_entry_tracker_get_active (self->tracker); pending = bz_transaction_entry_tracker_get_pending (self->tracker); status = bz_transaction_entry_tracker_get_status (self->tracker); if ((active || pending) && status == BZ_TRANSACTION_ENTRY_STATUS_CANCELLED) state = "inactive"; else if (pending || status == BZ_TRANSACTION_ENTRY_STATUS_QUEUED) state = "pending"; else if (!active || status == BZ_TRANSACTION_ENTRY_STATUS_DONE) state = "inactive"; else state = "fraction"; } else state = "inactive"; if (!bz_lazy_wdgt_get_activated (self->wdgt)) { /* Ensure smooth animation from idle; hacky but if we schedule the state change on the next animation tick, then it will appear to smoothly animate from the placeholder */ bz_lazy_wdgt_set_wdgt_state (self->wdgt, "inactive"); gtk_widget_add_tick_callback ( GTK_WIDGET (self), (GtkTickCallback) next_frame_tick_cb, g_strdup (state), g_free); } else bz_lazy_wdgt_set_wdgt_state (self->wdgt, state); update_icon (self); ensure_draw_css (self); } static void ensure_draw_css (BzTransactIcon *self) { GtkWidget *renderer = NULL; g_autoptr (GtkWidget) widget = NULL; g_autofree char *id = NULL; g_autofree char *class = NULL; renderer = adw_bin_get_child (ADW_BIN (self->wdgt)); if (!BGE_IS_WDGT_RENDERER (renderer)) return; widget = bge_wdgt_renderer_lookup_object (BGE_WDGT_RENDERER (renderer), "flag"); if (self->settings == NULL) { if (self->pride_class != NULL) gtk_widget_remove_css_class (widget, self->pride_class); g_clear_pointer (&self->pride_class, g_free); return; } id = g_settings_get_string (self->settings, "global-progress-bar-theme"); class = bz_dup_css_class_for_pride_id (id); if (self->pride_class != NULL && g_strcmp0 (self->pride_class, class) == 0) return; if (self->pride_class != NULL) gtk_widget_remove_css_class (widget, self->pride_class); g_clear_pointer (&self->pride_class, g_free); gtk_widget_add_css_class (widget, class); self->pride_class = g_steal_pointer (&class); } static void update_icon (BzTransactIcon *self) { GtkWidget *renderer = NULL; g_autoptr (GtkWidget) icon = NULL; GdkPaintable *paintable = NULL; renderer = adw_bin_get_child (ADW_BIN (self->wdgt)); if (BGE_IS_WDGT_RENDERER (renderer)) icon = bge_wdgt_renderer_lookup_object (BGE_WDGT_RENDERER (renderer), "icon"); else icon = g_object_ref (renderer); if (self->info != NULL) paintable = bz_transact_icon_info_get_paintable (self->info); if (paintable != NULL) gtk_image_set_from_paintable (GTK_IMAGE (icon), paintable); else gtk_image_set_from_icon_name (GTK_IMAGE (icon), "application-x-executable"); } static void info_state_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactIconInfo *info) { apply_state (self); } static void info_group_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactIconInfo *info) { update_tracker (self); } static void info_paintable_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactIconInfo *info) { update_icon (self); } static void trackers_items_changed (BzTransactIcon *self, guint position, guint removed, guint added, GListModel *model) { update_tracker (self); } static void tracker_notify (BzTransactIcon *self, GParamSpec *pspec, BzTransactionEntryTracker *tracker) { check_tracker (self); } static void pride_flag_changed (BzTransactIcon *self, const char *key, GSettings *settings) { ensure_draw_css (self); } static gboolean next_frame_tick_cb (GtkWidget *widget, GdkFrameClock *frame_clock, char *apply_state) { BzTransactIcon *self = BZ_TRANSACT_ICON (widget); bz_lazy_wdgt_set_wdgt_state (self->wdgt, apply_state); return G_SOURCE_REMOVE; } /* End of bz-transact-icon.c */ �������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transact-icon.h����������������������������������������������������0000664�0000000�0000000�00000002355�15240005042�0021461�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transact-icon.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-transact-icon-info.h" G_BEGIN_DECLS #define BZ_TYPE_TRANSACT_ICON (bz_transact_icon_get_type ()) G_DECLARE_FINAL_TYPE (BzTransactIcon, bz_transact_icon, BZ, TRANSACT_ICON, AdwBin) BzTransactIcon * bz_transact_icon_new (void); BzTransactIconInfo * bz_transact_icon_get_info (BzTransactIcon *self); void bz_transact_icon_set_info (BzTransactIcon *self, BzTransactIconInfo *info); G_END_DECLS /* End of bz-transact-icon.h */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transact-icon.wdgt�������������������������������������������������0000664�0000000�0000000�00000005713�15240005042�0022200�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������defwidget "Transact Icon" { reference info : "BzTransactIconInfo"; var progress : "gdouble"; var icon-scale : "gdouble"; var flag : "GtkFixed"; var icon : "GtkImage"; var start : "gdouble"; var end : "gdouble"; var path : "GskPath"; var path-measure : "GskPathMeasure"; var path-width : "gdouble"; var path-opacity : "gdouble"; init { set progress = #transition(info:tracker:progress, 1.1, 0.1, 10.0); set flag = #child/(""("transact-icon-flag") can-target = false;); allocate flag #eval(#(%width%)+#(path-width)*2.0), #eval(#(%height%)+#(path-width)*2.0), #(translate(#GraphenePoint(#eval(-#(path-width)), #eval(-#(path-width))));); set icon = #child/(""("icon-dropshadow") pixel-size = #ifelse(#<(%height%, 1), 1, %height%); ); allocate icon %width%, %height%, #(); set path = #GskPath( add-circle( #GraphenePoint(#eval(#(%width%)/2.0), #eval(#(%height%)/2.0)), #eval(#(%height%)/2.0), ); ); set path-measure = #measure-path(path); snapshot { save { move translate(#GraphenePoint(#eval((#(%width%)/2.0)*(1.0-#(icon-scale))), #eval((#(%height%)/2.0)*(1.0-#(icon-scale))))); move scale(icon-scale, icon-scale); do-child icon; } save { move translate(#GraphenePoint(0.0, %height%)); move rotate(-90.0); with opacity(path-opacity) { with stroke( #GskPath( add-segment( path, #path-point(path-measure, #eval((#(start)%1.0)*#(#path-length(path-measure)))), #path-point(path-measure, #eval((#(end)%1.0)*#(#path-length(path-measure)))), ); ), #GskStroke(path-width, round, round, 0.0), ) { move rotate(90.0); move translate(#GraphenePoint(0.0, #eval(-#(%height%)))); do-child flag; } } } } } state-default "inactive" { set icon-scale = 1.0; transition-spring icon-scale 1.0, 0.1, 15.0; set start = 0.0; set end = 1.0; set path-opacity = 0.0; transition-spring path-opacity 1.0, 0.1, 10.0; set path-width = 3.0; transition-spring path-width 1.0, 0.1, 5.0; } state "pending" { set icon-scale = 0.6; transition-spring icon-scale 1.0, 0.1, 15.0; set start = #eval((#(%tick%)*0.5)%1.0); set end = #eval(#(start)+0.2); set path-opacity = 1.0; transition-spring path-opacity 1.0, 0.1, 5.0; set path-width = 3.0; transition-spring path-width 1.0, 0.1, 5.0; } state "fraction" { set icon-scale = 0.6; transition-spring icon-scale 1.0, 0.1, 15.0; set start = 0.0; set end = #eval(0.05+#(progress)*0.95); set path-opacity = 1.0; transition-spring path-opacity 1.0, 0.1, 5.0; set path-width = 3.0; transition-spring path-width 1.0, 0.1, 5.0; } } �����������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-dialog-result.txt��������������������������������������0000664�0000000�0000000�00000000424�15240005042�0024375�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=transaction_dialog_result parent-prefix=g parent-name=object author=AUTOGEN include="bz-entry.h" property=selected_entry BzEntry BZ_TYPE_ENTRY object property=delete_user_data gboolean G_TYPE_BOOLEAN boolean property=confirmed gboolean G_TYPE_BOOLEAN boolean ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-dialog.c�����������������������������������������������0000664�0000000�0000000�00000053655�15240005042�0022502�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-dialog.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-application.h" #include "bz-entry-selection-row.h" #include "env.h" #include "error.h" #include "bz-flatpak-entry.h" #include "safety-calculator.h" #include "bz-state-info.h" #include "bz-transaction-dialog.h" #include "bz-transaction-list-dialog.h" #include "util.h" static gboolean should_skip_entry (BzEntry *entry, gboolean remove) { gboolean is_installed; if (bz_entry_is_holding (entry)) return TRUE; if (!remove && !bz_entry_is_reinstallable (entry)) return TRUE; is_installed = bz_entry_is_installed (entry); return (!remove && is_installed) || (remove && !is_installed); } static GtkWidget * create_entry_radio_button (BzEntry *entry, GtkWidget **out_radio) { BzStateInfo *state_info = NULL; GListModel *repositories = NULL; g_autoptr (BzRepository) repo = NULL; BzEntrySelectionRow *row = NULL; GtkCheckButton *radio = NULL; state_info = bz_state_info_get_default (); repositories = bz_state_info_get_repositories (state_info); if (repositories != NULL) repo = bz_entry_get_repository (entry, repositories); row = bz_entry_selection_row_new (BZ_FLATPAK_ENTRY (entry), repo); radio = bz_entry_selection_row_get_radio (row); if (out_radio != NULL) *out_radio = GTK_WIDGET (radio); return GTK_WIDGET (row); } static GPtrArray * create_entry_radio_buttons (AdwAlertDialog *alert, GListStore *store, gboolean remove) { g_autoptr (GPtrArray) radios = NULL; GtkWidget *container = NULL; container = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); radios = g_ptr_array_new (); if (store != NULL) { guint n_total_entries = g_list_model_get_n_items (G_LIST_MODEL (store)); if (n_total_entries > 1) { GtkWidget *listbox = NULL; GtkCheckButton *first_valid_radio = NULL; GtkCheckButton *dummy_radio = NULL; listbox = gtk_list_box_new (); gtk_list_box_set_selection_mode (GTK_LIST_BOX (listbox), GTK_SELECTION_NONE); gtk_widget_add_css_class (listbox, "boxed-list"); dummy_radio = GTK_CHECK_BUTTON (gtk_check_button_new ()); for (guint i = 0; i < n_total_entries; i++) { g_autoptr (BzEntry) entry = NULL; GtkWidget *row = NULL; GtkWidget *radio = NULL; gboolean should_skip = FALSE; entry = g_list_model_get_item (G_LIST_MODEL (store), i); should_skip = should_skip_entry (entry, remove); row = create_entry_radio_button (entry, &radio); g_ptr_array_add (radios, radio); gtk_check_button_set_group (GTK_CHECK_BUTTON (radio), dummy_radio); if (should_skip) { gtk_widget_set_sensitive (row, FALSE); gtk_widget_set_sensitive (radio, FALSE); } else { if (first_valid_radio == NULL) { gtk_check_button_set_active (GTK_CHECK_BUTTON (radio), TRUE); first_valid_radio = (GtkCheckButton *) radio; } } gtk_list_box_append (GTK_LIST_BOX (listbox), row); } gtk_box_append (GTK_BOX (container), listbox); } } if (remove) { GtkWidget *listbox = NULL; GtkWidget *keep_data_row = NULL; GtkWidget *delete_data_row = NULL; GtkWidget *keep_radio = NULL; GtkWidget *delete_radio = NULL; listbox = gtk_list_box_new (); gtk_list_box_set_selection_mode (GTK_LIST_BOX (listbox), GTK_SELECTION_NONE); gtk_widget_add_css_class (listbox, "boxed-list"); keep_data_row = adw_action_row_new (); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (keep_data_row), _ ("Keep User Data")); adw_action_row_set_subtitle (ADW_ACTION_ROW (keep_data_row), _ ("Allow restoring personal settings & content")); keep_radio = gtk_check_button_new (); gtk_widget_set_valign (keep_radio, GTK_ALIGN_CENTER); gtk_check_button_set_active (GTK_CHECK_BUTTON (keep_radio), TRUE); adw_action_row_add_prefix (ADW_ACTION_ROW (keep_data_row), keep_radio); adw_action_row_set_activatable_widget (ADW_ACTION_ROW (keep_data_row), keep_radio); gtk_list_box_append (GTK_LIST_BOX (listbox), keep_data_row); delete_data_row = adw_action_row_new (); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (delete_data_row), _ ("Delete All Data")); adw_action_row_set_subtitle (ADW_ACTION_ROW (delete_data_row), _ ("Permanently erase user data to save space")); delete_radio = gtk_check_button_new (); gtk_widget_set_valign (delete_radio, GTK_ALIGN_CENTER); gtk_check_button_set_group (GTK_CHECK_BUTTON (delete_radio), GTK_CHECK_BUTTON (keep_radio)); adw_action_row_add_prefix (ADW_ACTION_ROW (delete_data_row), delete_radio); adw_action_row_set_activatable_widget (ADW_ACTION_ROW (delete_data_row), delete_radio); gtk_list_box_append (GTK_LIST_BOX (listbox), delete_data_row); g_ptr_array_add (radios, keep_radio); g_ptr_array_add (radios, delete_radio); gtk_box_append (GTK_BOX (container), listbox); } adw_alert_dialog_set_extra_child (alert, container); return g_steal_pointer (&radios); } static void configure_install_dialog (AdwAlertDialog *alert, const char *title, const char *id, gboolean has_multiple_entries) { g_autofree char *heading = NULL; heading = g_strdup_printf (_ ("Install %s?"), title); adw_alert_dialog_set_heading (alert, heading); if (has_multiple_entries) adw_alert_dialog_set_body (alert, _ ("Select which version to install. May install additional shared components")); else adw_alert_dialog_set_body (alert, _ ("May install additional shared components")); adw_alert_dialog_add_responses (alert, "cancel", _ ("_Cancel"), "install", _ ("_Install"), NULL); adw_alert_dialog_set_response_appearance (alert, "install", ADW_RESPONSE_SUGGESTED); adw_alert_dialog_set_default_response (alert, "install"); adw_alert_dialog_set_close_response (alert, "cancel"); } static void configure_remove_dialog (AdwAlertDialog *alert, const char *title, const char *id, gboolean has_multiple_entries) { g_autofree char *heading = NULL; g_autofree char *body = NULL; heading = g_strdup_printf (_ ("Remove %s?"), title); if (has_multiple_entries) body = g_strdup (_ ("Select which version to remove.")); else body = g_strdup_printf (_ ("It will not be possible to use %s after it is uninstalled."), title); adw_alert_dialog_set_heading (alert, heading); adw_alert_dialog_set_body (alert, body); adw_alert_dialog_add_responses (alert, "cancel", _ ("_Cancel"), "remove", _ ("_Remove"), NULL); adw_alert_dialog_set_response_appearance (alert, "remove", ADW_RESPONSE_DESTRUCTIVE); adw_alert_dialog_set_default_response (alert, "remove"); adw_alert_dialog_set_close_response (alert, "cancel"); } static void configure_high_risk_warning_dialog (AdwAlertDialog *alert, const char *title, BzHighRiskGroup risk_groups) { g_autofree char *heading = NULL; g_autofree char *body = NULL; heading = g_strdup_printf (_ ("“%s†is High Risk"), title); if (risk_groups & BZ_HIGH_RISK_GROUP_DISK) { body = g_strdup (_ ("This app has full access to your system, including all " "<b>your files, browser history, saved passwords</b>, and " "more. It also has access to the internet, meaning it " "could send your data to outside parties.\n\n" "Because the app is proprietary, it can not be audited " "for what it does with these permissions.")); } else if (risk_groups & BZ_HIGH_RISK_GROUP_X11) { body = g_strdup (_ ("This app uses the legacy X11 windowing system, which " "allows it to <b>record all keystrokes, capture screenshots, " "and monitor other applications</b>. It also has access " "to the internet, meaning it could send your data to " "outside parties.\n\n" "Because the app is proprietary, it can not be audited " "for what it does with these permissions.")); } adw_alert_dialog_set_heading (alert, heading); adw_alert_dialog_set_body (alert, body); adw_alert_dialog_set_body_use_markup (alert, TRUE); adw_alert_dialog_set_prefer_wide_layout (alert, TRUE); adw_alert_dialog_add_responses (alert, "cancel", _ ("_Cancel"), "install", _ ("_Install Anyway"), NULL); adw_alert_dialog_set_response_appearance (alert, "install", ADW_RESPONSE_DESTRUCTIVE); adw_alert_dialog_set_default_response (alert, "cancel"); adw_alert_dialog_set_close_response (alert, "cancel"); } static BzHighRiskGroup get_entry_high_risk_groups (BzEntry *entry) { if (bz_entry_get_is_foss (entry)) return BZ_HIGH_RISK_GROUP_NONE; return bz_safety_calculator_get_high_risk_groups (entry); } BZ_DEFINE_DATA ( show_dialog, ShowDialog, { GtkWidget *parent; BzEntry *entry; BzEntryGroup *group; gboolean remove; gboolean auto_confirm; }, BZ_RELEASE_DATA (entry, g_object_unref); BZ_RELEASE_DATA (group, g_object_unref)) static DexFuture * show_dialog_fiber (ShowDialogData *data) { g_autoptr (GError) local_error = NULL; g_autoptr (GListStore) store = NULL; const char *title = NULL; const char *id = NULL; g_autoptr (AdwDialog) alert = NULL; g_autoptr (AdwDialog) risk_alert = NULL; g_autoptr (GPtrArray) radios = NULL; g_autofree char *dialog_response = NULL; g_autofree char *risk_response = NULL; g_autoptr (BzTransactionDialogResult) result = NULL; g_autoptr (BzEntry) check_entry = NULL; BzHighRiskGroup risk_groups = BZ_HIGH_RISK_GROUP_NONE; guint n_total_entries = 0; gboolean confirmed = 0; result = bz_transaction_dialog_result_new (); if (data->group != NULL) { store = dex_await_object (bz_entry_group_dup_all_into_store (data->group), &local_error); if (store == NULL) { bz_show_error_for_widget (data->parent, _ ("Failed to load transaction dialog"), local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } for (guint i = g_list_model_get_n_items (G_LIST_MODEL (store)); i > 0; i--) { g_autoptr (BzEntry) entry = NULL; entry = g_list_model_get_item (G_LIST_MODEL (store), i - 1); if (!bz_entry_is_reinstallable (entry) && (!data->remove || !bz_entry_is_installed (entry))) g_list_store_remove (store, i - 1); } title = bz_entry_group_get_title (data->group); id = bz_entry_group_get_id (data->group); n_total_entries = g_list_model_get_n_items (G_LIST_MODEL (store)); if (n_total_entries > 0) check_entry = g_list_model_get_item (G_LIST_MODEL (store), 0); } else { title = bz_entry_get_title (data->entry); id = bz_entry_get_id (data->entry); check_entry = g_object_ref (data->entry); } if (!data->remove && check_entry != NULL) risk_groups = get_entry_high_risk_groups (check_entry); if (risk_groups != BZ_HIGH_RISK_GROUP_NONE) { risk_alert = g_object_ref_sink (adw_alert_dialog_new (NULL, NULL)); configure_high_risk_warning_dialog (ADW_ALERT_DIALOG (risk_alert), title, risk_groups); adw_dialog_present (risk_alert, data->parent); risk_response = dex_await_string ( bz_make_alert_dialog_future (ADW_ALERT_DIALOG (risk_alert)), &local_error); if (risk_response == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); if (g_strcmp0 (risk_response, "install") != 0) { bz_transaction_dialog_result_set_confirmed (result, FALSE); return dex_future_new_for_object (result); } data->auto_confirm = TRUE; } alert = g_object_ref_sink (adw_alert_dialog_new (NULL, NULL)); if (data->remove) configure_remove_dialog (ADW_ALERT_DIALOG (alert), title, id, n_total_entries > 1); else configure_install_dialog (ADW_ALERT_DIALOG (alert), title, id, n_total_entries > 1); radios = create_entry_radio_buttons (ADW_ALERT_DIALOG (alert), store, data->remove); if (!data->remove && data->auto_confirm && radios->len <= 1) { dialog_response = g_strdup ("install"); g_ptr_array_set_size (radios, 0); g_clear_object (&alert); } else if (data->remove && data->auto_confirm && radios->len <= 1) { dialog_response = g_strdup ("remove"); g_ptr_array_set_size (radios, 0); g_clear_object (&alert); } else { adw_dialog_present (alert, data->parent); dialog_response = dex_await_string ( bz_make_alert_dialog_future (ADW_ALERT_DIALOG (alert)), &local_error); if (dialog_response == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); if (data->remove && radios->len >= 2) { GtkCheckButton *delete_radio = g_ptr_array_index (radios, radios->len - 1); bz_transaction_dialog_result_set_delete_user_data (result, gtk_check_button_get_active (delete_radio)); } } confirmed = (g_strcmp0 (dialog_response, "install") == 0) || (g_strcmp0 (dialog_response, "remove") == 0); bz_transaction_dialog_result_set_confirmed (result, confirmed); if (!confirmed) return dex_future_new_for_object (result); if (data->group != NULL) { guint n_entries = g_list_model_get_n_items (G_LIST_MODEL (store)); for (guint i = 0; i < MIN (n_entries, radios->len); i++) { GtkCheckButton *check = g_ptr_array_index (radios, i); if (gtk_check_button_get_active (check)) { g_autoptr (BzEntry) entry = NULL; entry = g_list_model_get_item (G_LIST_MODEL (store), i); bz_transaction_dialog_result_set_selected_entry (result, entry); break; } } if (bz_transaction_dialog_result_get_selected_entry (result) == NULL && n_entries > 0) { g_autoptr (BzEntry) entry = NULL; entry = g_list_model_get_item (G_LIST_MODEL (store), 0); bz_transaction_dialog_result_set_selected_entry (result, entry); } } else bz_transaction_dialog_result_set_selected_entry (result, data->entry); return dex_future_new_for_object (result); } DexFuture * bz_transaction_dialog_show (GtkWidget *parent, BzEntry *entry, BzEntryGroup *group, gboolean remove, gboolean auto_confirm) { g_autoptr (ShowDialogData) data = NULL; g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); g_return_val_if_fail (entry != NULL || group != NULL, NULL); data = show_dialog_data_new (); data->parent = parent; data->entry = bz_object_maybe_ref (entry); data->group = bz_object_maybe_ref (group); data->remove = remove; data->auto_confirm = auto_confirm; return dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) show_dialog_fiber, g_steal_pointer (&data), show_dialog_data_unref); } BZ_DEFINE_DATA ( bulk_install_dialog, BulkInstallDialog, { GtkWidget *parent; GListModel *groups; }, BZ_RELEASE_DATA (groups, g_object_unref)); static DexFuture * bulk_install_dialog_fiber (BulkInstallDialogData *data) { g_autoptr (GError) local_error = NULL; g_autoptr (BzBulkInstallDialogResult) result = NULL; g_autoptr (GPtrArray) resolved_entries = NULL; g_autoptr (GListStore) entries_store = NULL; AdwDialog *dialog = NULL; g_autofree char *dialog_response = NULL; g_autofree char *heading = NULL; guint n_groups = 0; gboolean confirmed = FALSE; result = bz_bulk_install_dialog_result_new (); resolved_entries = g_ptr_array_new_with_free_func (g_object_unref); if (data->groups == NULL) { bz_bulk_install_dialog_result_set_confirmed (result, FALSE); return dex_future_new_for_object (result); } n_groups = g_list_model_get_n_items (data->groups); for (guint i = 0; i < n_groups; i++) { g_autoptr (BzEntryGroup) group = NULL; g_autoptr (GListStore) store = NULL; g_autoptr (BzEntry) entry = NULL; group = g_list_model_get_item (data->groups, i); if (bz_entry_group_get_removable (group) > 0) continue; store = dex_await_object (bz_entry_group_dup_all_into_store (group), &local_error); if (store == NULL || g_list_model_get_n_items (G_LIST_MODEL (store)) == 0) continue; entry = g_list_model_get_item (G_LIST_MODEL (store), 0); if (entry == NULL) continue; if (bz_entry_is_installed (entry) || bz_entry_is_holding (entry)) continue; g_ptr_array_add (resolved_entries, g_object_ref (entry)); } if (resolved_entries->len == 0) { g_autoptr (AdwDialog) info_alert = NULL; info_alert = g_object_ref_sink (adw_alert_dialog_new ( _ ("All apps are already installed"), NULL)); adw_alert_dialog_add_response (ADW_ALERT_DIALOG (info_alert), "ok", _ ("_OK")); adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (info_alert), "ok"); adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (info_alert), "ok"); adw_dialog_present (info_alert, data->parent); dex_await (bz_make_alert_dialog_future (ADW_ALERT_DIALOG (info_alert)), NULL); bz_bulk_install_dialog_result_set_confirmed (result, FALSE); return dex_future_new_for_object (result); } entries_store = g_list_store_new (BZ_TYPE_ENTRY); for (guint i = 0; i < resolved_entries->len; i++) g_list_store_append (entries_store, g_ptr_array_index (resolved_entries, i)); heading = g_strdup_printf (ngettext ("Install %u App?", "Install %u Apps?", resolved_entries->len), resolved_entries->len); dialog = bz_transaction_list_dialog_new ( G_LIST_MODEL (entries_store), heading, _ ("The following will be installed. Additional shared components may also be installed"), _ ("%d addons will be installed."), _ ("Additionally, addons will be installed."), _ ("_Cancel"), _ ("_Install All")); adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (dialog), "confirm"); adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (dialog), "cancel"); adw_dialog_present (dialog, data->parent); dialog_response = dex_await_string ( bz_make_alert_dialog_future (ADW_ALERT_DIALOG (dialog)), &local_error); if (dialog_response == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); confirmed = bz_transaction_list_dialog_was_confirmed ( BZ_TRANSACTION_LIST_DIALOG (dialog)); bz_bulk_install_dialog_result_set_confirmed (result, confirmed); if (confirmed) { g_autoptr (GListStore) store = NULL; store = g_list_store_new (BZ_TYPE_ENTRY); for (guint i = 0; i < resolved_entries->len; i++) { BzEntry *entry = g_ptr_array_index (resolved_entries, i); g_list_store_append (store, entry); } bz_bulk_install_dialog_result_set_entries (result, G_LIST_MODEL (store)); } return dex_future_new_for_object (result); } DexFuture * bz_bulk_install_dialog_show (GtkWidget *parent, GListModel *groups) { g_autoptr (BulkInstallDialogData) data = NULL; g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); g_return_val_if_fail (G_IS_LIST_MODEL (groups), NULL); data = bulk_install_dialog_data_new (); data->parent = parent; data->groups = g_object_ref (groups); return dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) bulk_install_dialog_fiber, g_steal_pointer (&data), bulk_install_dialog_data_unref); } �����������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-dialog.h�����������������������������������������������0000664�0000000�0000000�00000002542�15240005042�0022474�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-dialog.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-bulk-install-dialog-result.h" #include "bz-entry-group.h" #include "bz-transaction-dialog-result.h" G_BEGIN_DECLS DexFuture *bz_transaction_dialog_show (GtkWidget *parent, BzEntry *entry, BzEntryGroup *group, gboolean remove, gboolean auto_confirm); DexFuture *bz_bulk_install_dialog_show (GtkWidget *parent, GListModel *groups); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-entry-tracker.txt��������������������������������������0000664�0000000�0000000�00000001302�15240005042�0024410�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=transaction_entry_tracker parent-prefix=g parent-name=object author=AUTOGEN enum=bz transaction_entry_kind install update removal enum=bz transaction_entry_status queued ongoing done cancelled include=<gtk/gtk.h> include="bz-entry.h" property=entry BzEntry BZ_TYPE_ENTRY object property=current_ops GListModel G_TYPE_LIST_MODEL object property=finished_ops GListModel G_TYPE_LIST_MODEL object property=kind BzTransactionEntryKind BZ_TYPE_TRANSACTION_ENTRY_KIND enum property=status BzTransactionEntryStatus BZ_TYPE_TRANSACTION_ENTRY_STATUS enum property=progress double G_TYPE_DOUBLE double property=pending gboolean G_TYPE_BOOLEAN boolean property=active gboolean G_TYPE_BOOLEAN boolean ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-list-dialog.blp����������������������������������������0000664�0000000�0000000�00000004273�15240005042�0023776�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzTransactionListDialog: Adw.AlertDialog { extra-child: ScrolledWindow { width-request: 300; propagate-natural-height: true; overflow: hidden; vexpand: true; hscrollbar-policy: never; child: Box { orientation: vertical; spacing: 5; ListView list_view { styles [ "navigation-sidebar", ] model: NoSelection selection_model {}; factory: BuilderListItemFactory { template ListItem { activatable: false; child: Box { orientation: horizontal; margin-top: 5; margin-bottom: 5; spacing: 6; Image { icon-size: large; paintable: bind template.item as <$BzEntry>.icon-paintable; visible: bind $invert_boolean($is_null(template.item as <$BzEntry>.icon-paintable) as <bool>) as <bool>; } Image { icon-size: large; icon-name: "application-x-executable"; visible: bind $is_null(template.item as <$BzEntry>.icon-paintable) as <bool>; } Box { orientation: vertical; spacing: 3; Label { styles [ "heading", ] hexpand: true; xalign: 0.0; ellipsize: end; single-line-mode: true; label: bind template.item as <$BzEntry>.title; } Label { styles [ "dimmed", ] hexpand: true; xalign: 0.0; wrap: true; wrap-mode: word_char; single-line-mode: true; selectable: true; label: bind template.item as <$BzEntry>.id; } } }; } }; } Label secondary_label { styles [ "dimmed", ] visible: false; wrap: true; justify: center; } }; }; }�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-list-dialog.c������������������������������������������0000664�0000000�0000000�00000013477�15240005042�0023451�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-list-dialog.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-entry.h" #include "bz-transaction-list-dialog.h" struct _BzTransactionListDialog { AdwAlertDialog parent_instance; GListModel *entries; gboolean confirmed; GtkFilterListModel *app_filter; /* Template widgets */ GtkNoSelection *selection_model; GtkLabel *secondary_label; }; G_DEFINE_FINAL_TYPE (BzTransactionListDialog, bz_transaction_list_dialog, ADW_TYPE_ALERT_DIALOG) static gboolean match_for_app (BzEntry *item, gpointer user_data); static void on_response (AdwAlertDialog *alert, gchar *response, BzTransactionListDialog *self); static void bz_transaction_list_dialog_dispose (GObject *object) { BzTransactionListDialog *self = BZ_TRANSACTION_LIST_DIALOG (object); g_clear_object (&self->entries); g_clear_object (&self->app_filter); G_OBJECT_CLASS (bz_transaction_list_dialog_parent_class)->dispose (object); } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static void bz_transaction_list_dialog_class_init (BzTransactionListDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_transaction_list_dialog_dispose; gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-transaction-list-dialog.ui"); gtk_widget_class_bind_template_child (widget_class, BzTransactionListDialog, selection_model); gtk_widget_class_bind_template_child (widget_class, BzTransactionListDialog, secondary_label); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); } static void bz_transaction_list_dialog_init (BzTransactionListDialog *self) { GtkCustomFilter *filter = NULL; gtk_widget_init_template (GTK_WIDGET (self)); g_signal_connect (self, "response", G_CALLBACK (on_response), self); filter = gtk_custom_filter_new ((GtkCustomFilterFunc) match_for_app, NULL, NULL); self->app_filter = gtk_filter_list_model_new (NULL, GTK_FILTER (filter)); gtk_no_selection_set_model (self->selection_model, G_LIST_MODEL (self->app_filter)); } static void on_response (AdwAlertDialog *alert, gchar *response, BzTransactionListDialog *self) { self->confirmed = g_strcmp0 (response, "confirm") == 0; } AdwDialog * bz_transaction_list_dialog_new (GListModel *entries, const gchar *heading, const gchar *body, const gchar *body_no_apps, const gchar *secondary_label, const gchar *cancel_label, const gchar *confirm_label) { BzTransactionListDialog *dialog = NULL; guint n_total = 0; guint n_apps = 0; guint n_other = 0; g_return_val_if_fail (G_IS_LIST_MODEL (entries), NULL); dialog = g_object_new (BZ_TYPE_TRANSACTION_LIST_DIALOG, NULL); dialog->entries = g_object_ref (entries); gtk_filter_list_model_set_model (dialog->app_filter, entries); adw_alert_dialog_add_response (ADW_ALERT_DIALOG (dialog), "cancel", cancel_label); adw_alert_dialog_add_response (ADW_ALERT_DIALOG (dialog), "confirm", confirm_label); adw_alert_dialog_set_response_appearance (ADW_ALERT_DIALOG (dialog), "confirm", ADW_RESPONSE_SUGGESTED); adw_alert_dialog_set_heading (ADW_ALERT_DIALOG (dialog), heading); n_total = g_list_model_get_n_items (entries); n_apps = g_list_model_get_n_items (G_LIST_MODEL (dialog->app_filter)); n_other = n_total - n_apps; if (n_total > 0) { if (n_apps == 0 && body_no_apps != NULL) { g_autofree char *formatted_body = NULL; formatted_body = g_strdup_printf (body_no_apps, n_other); adw_alert_dialog_set_body (ADW_ALERT_DIALOG (dialog), formatted_body); adw_alert_dialog_set_extra_child (ADW_ALERT_DIALOG (dialog), NULL); } else { adw_alert_dialog_set_body (ADW_ALERT_DIALOG (dialog), body); if (n_other > 0 && secondary_label != NULL) { g_autofree char *formatted_label = NULL; formatted_label = g_strdup_printf (secondary_label, n_other); gtk_label_set_label (dialog->secondary_label, formatted_label); gtk_widget_set_visible (GTK_WIDGET (dialog->secondary_label), TRUE); } } } return ADW_DIALOG (dialog); } gboolean bz_transaction_list_dialog_was_confirmed (BzTransactionListDialog *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_LIST_DIALOG (self), FALSE); return self->confirmed; } static gboolean match_for_app (BzEntry *item, gpointer user_data) { return bz_entry_is_of_kinds (item, BZ_ENTRY_KIND_APPLICATION); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-list-dialog.h������������������������������������������0000664�0000000�0000000�00000002775�15240005042�0023455�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-list-dialog.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_TRANSACTION_LIST_DIALOG (bz_transaction_list_dialog_get_type ()) G_DECLARE_FINAL_TYPE (BzTransactionListDialog, bz_transaction_list_dialog, BZ, TRANSACTION_LIST_DIALOG, AdwAlertDialog) AdwDialog * bz_transaction_list_dialog_new (GListModel *entries, const gchar *heading, const gchar *body, const gchar *body_no_apps, const gchar *secondary_label, const gchar *cancel_label, const gchar *confirm_label); gboolean bz_transaction_list_dialog_was_confirmed (BzTransactionListDialog *self); G_END_DECLS ���bazaar-org-bazaar-48f93f4/src/bz-transaction-manager.c����������������������������������������������0000664�0000000�0000000�00000065155�15240005042�0022653�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-manager.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::TRANSACTIONS" #include "config.h" #include <glib/gi18n.h> #include "bz-backend-transaction-op-payload.h" #include "bz-backend-transaction-op-progress-payload.h" #include "bz-marshalers.h" #include "bz-transaction-manager.h" #include "env.h" #include "transaction-notification.h" #include "util.h" /* clang-format off */ G_DEFINE_QUARK (bz-transaction-mgr-error-quark, bz_transaction_mgr_error); /* clang-format on */ enum { HOOK_CONTINUE, HOOK_STOP, HOOK_CONFIRM, HOOK_DENY, }; static inline void finish_queued_schedule_data (gpointer ptr); BZ_DEFINE_DATA ( queued_schedule, QueuedSchedule, { GWeakRef *self; BzTransaction *transaction; DexPromise *promise; GTimer *timer; }, finish_queued_schedule_data (self);) struct _BzTransactionManager { GObject parent_instance; BzMainConfig *config; BzBackend *backend; gboolean paused; GListStore *transactions; double current_progress; gboolean pending; QueuedScheduleData *current; DexFuture *loop; GtkFlattenListModel *all_trackers; GtkFilterListModel *install_trackers; GtkFilterListModel *removal_trackers; GQueue queue; }; G_DEFINE_FINAL_TYPE (BzTransactionManager, bz_transaction_manager, G_TYPE_OBJECT) enum { PROP_0, PROP_CONFIG, PROP_BACKEND, PROP_PAUSED, PROP_TRANSACTIONS, PROP_HAS_TRANSACTIONS, PROP_ACTIVE, PROP_PENDING, PROP_CURRENT_PROGRESS, PROP_INSTALL_TRACKERS, PROP_REMOVAL_TRACKERS, PROP_ALL_TRACKERS, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_SUCCESS, SIGNAL_FAILURE, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static DexFuture * transaction_fiber (QueuedScheduleData *data); static DexFuture * transaction_finally (DexFuture *future, QueuedScheduleData *data); static DexFuture * then_loop_cb (DexFuture *future, GWeakRef *wr); static DexFuture * dispatch_next (BzTransactionManager *self); static void bz_transaction_manager_dispose (GObject *object) { BzTransactionManager *self = BZ_TRANSACTION_MANAGER (object); g_clear_object (&self->config); g_clear_object (&self->backend); g_clear_object (&self->transactions); g_queue_clear_full (&self->queue, queued_schedule_data_unref); g_clear_pointer (&self->current, queued_schedule_data_unref); dex_clear (&self->loop); G_OBJECT_CLASS (bz_transaction_manager_parent_class)->dispose (object); } static void bz_transaction_manager_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzTransactionManager *self = BZ_TRANSACTION_MANAGER (object); switch (prop_id) { case PROP_CONFIG: g_value_set_boxed (value, bz_transaction_manager_get_config (self)); break; case PROP_BACKEND: g_value_set_object (value, bz_transaction_manager_get_backend (self)); break; case PROP_PAUSED: g_value_set_boolean (value, bz_transaction_manager_get_paused (self)); break; case PROP_TRANSACTIONS: g_value_set_object (value, self->transactions); break; case PROP_HAS_TRANSACTIONS: g_value_set_boolean (value, bz_transaction_manager_get_has_transactions (self)); break; case PROP_ACTIVE: g_value_set_boolean (value, bz_transaction_manager_get_active (self)); break; case PROP_PENDING: g_value_set_boolean (value, bz_transaction_manager_get_pending (self)); break; case PROP_CURRENT_PROGRESS: g_value_set_double (value, self->current_progress); break; case PROP_INSTALL_TRACKERS: g_value_set_object (value, self->install_trackers); break; case PROP_REMOVAL_TRACKERS: g_value_set_object (value, self->removal_trackers); break; case PROP_ALL_TRACKERS: g_value_set_object (value, self->all_trackers); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_transaction_manager_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzTransactionManager *self = BZ_TRANSACTION_MANAGER (object); switch (prop_id) { case PROP_CONFIG: bz_transaction_manager_set_config (self, g_value_get_boxed (value)); break; case PROP_BACKEND: bz_transaction_manager_set_backend (self, g_value_get_object (value)); break; case PROP_PAUSED: bz_transaction_manager_set_paused (self, g_value_get_boolean (value)); break; case PROP_TRANSACTIONS: case PROP_HAS_TRANSACTIONS: case PROP_ACTIVE: case PROP_PENDING: case PROP_CURRENT_PROGRESS: case PROP_INSTALL_TRACKERS: case PROP_REMOVAL_TRACKERS: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean filter_install_trackers (gpointer item, gpointer user_data) { BzTransactionEntryTracker *tracker = NULL; BzTransactionEntryKind kind = 0; tracker = BZ_TRANSACTION_ENTRY_TRACKER (item); if (tracker == NULL) return FALSE; kind = bz_transaction_entry_tracker_get_kind (tracker); return kind == BZ_TRANSACTION_ENTRY_KIND_INSTALL || kind == BZ_TRANSACTION_ENTRY_KIND_UPDATE; } static gboolean filter_removal_trackers (gpointer item, gpointer user_data) { BzTransactionEntryTracker *tracker = NULL; tracker = BZ_TRANSACTION_ENTRY_TRACKER (item); if (tracker == NULL) return FALSE; return bz_transaction_entry_tracker_get_kind (tracker) == BZ_TRANSACTION_ENTRY_KIND_REMOVAL; } static gpointer get_trackers_model (gpointer item, gpointer user_data) { BzTransaction *transaction = NULL; g_autoptr (GListModel) trackers = NULL; transaction = BZ_TRANSACTION (item); if (transaction == NULL) return NULL; trackers = g_object_ref (bz_transaction_get_trackers (transaction)); g_object_unref (item); return g_steal_pointer (&trackers); } static void bz_transaction_manager_class_init (BzTransactionManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_transaction_manager_dispose; object_class->get_property = bz_transaction_manager_get_property; object_class->set_property = bz_transaction_manager_set_property; props[PROP_CONFIG] = g_param_spec_object ( "config", NULL, NULL, BZ_TYPE_MAIN_CONFIG, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_BACKEND] = g_param_spec_object ( "backend", NULL, NULL, BZ_TYPE_BACKEND, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_PAUSED] = g_param_spec_boolean ( "paused", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_TRANSACTIONS] = g_param_spec_object ( "transactions", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_HAS_TRANSACTIONS] = g_param_spec_boolean ( "has-transactions", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_ACTIVE] = g_param_spec_boolean ( "active", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_PENDING] = g_param_spec_boolean ( "pending", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_CURRENT_PROGRESS] = g_param_spec_double ( "current-progress", NULL, NULL, 0.0, 1.0, 0.0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_INSTALL_TRACKERS] = g_param_spec_object ( "install-trackers", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_REMOVAL_TRACKERS] = g_param_spec_object ( "removal-trackers", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_ALL_TRACKERS] = g_param_spec_object ( "all-trackers", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_SUCCESS] = g_signal_new ( "success", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, BZ_TYPE_TRANSACTION, 0); g_signal_set_va_marshaller ( signals[SIGNAL_SUCCESS], G_TYPE_FROM_CLASS (klass), bz_marshal_VOID__OBJECT_BOXEDv); signals[SIGNAL_FAILURE] = g_signal_new ( "failure", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, BZ_TYPE_TRANSACTION, 0); g_signal_set_va_marshaller ( signals[SIGNAL_FAILURE], G_TYPE_FROM_CLASS (klass), g_cclosure_marshal_VOID__OBJECTv); } static void bz_transaction_manager_init (BzTransactionManager *self) { GtkCustomFilter *install_filter; GtkCustomFilter *removal_filter; GtkMapListModel *map_model; self->transactions = g_list_store_new (BZ_TYPE_TRANSACTION); g_queue_init (&self->queue); map_model = gtk_map_list_model_new ( g_object_ref (G_LIST_MODEL (self->transactions)), get_trackers_model, NULL, NULL); self->all_trackers = gtk_flatten_list_model_new (G_LIST_MODEL (map_model)); install_filter = gtk_custom_filter_new ( filter_install_trackers, NULL, NULL); self->install_trackers = gtk_filter_list_model_new ( g_object_ref (G_LIST_MODEL (self->all_trackers)), GTK_FILTER (install_filter)); removal_filter = gtk_custom_filter_new ( filter_removal_trackers, NULL, NULL); self->removal_trackers = gtk_filter_list_model_new ( g_object_ref (G_LIST_MODEL (self->all_trackers)), GTK_FILTER (removal_filter)); } BzTransactionManager * bz_transaction_manager_new (void) { return g_object_new (BZ_TYPE_TRANSACTION_MANAGER, NULL); } void bz_transaction_manager_set_config (BzTransactionManager *self, BzMainConfig *config) { g_return_if_fail (BZ_IS_TRANSACTION_MANAGER (self)); g_clear_object (&self->config); if (config != NULL) self->config = g_object_ref (config); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CONFIG]); } BzMainConfig * bz_transaction_manager_get_config (BzTransactionManager *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_MANAGER (self), NULL); return self->config; } void bz_transaction_manager_set_backend (BzTransactionManager *self, BzBackend *backend) { g_return_if_fail (BZ_IS_TRANSACTION_MANAGER (self)); g_return_if_fail (backend == NULL || BZ_IS_BACKEND (backend)); g_clear_object (&self->backend); if (backend != NULL) self->backend = g_object_ref (backend); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_BACKEND]); } BzBackend * bz_transaction_manager_get_backend (BzTransactionManager *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_MANAGER (self), NULL); return self->backend; } void bz_transaction_manager_set_paused (BzTransactionManager *self, gboolean paused) { g_return_if_fail (BZ_IS_TRANSACTION_MANAGER (self)); if (!!self->paused == !!paused) return; self->paused = paused; if (!paused) dex_future_disown (dispatch_next (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PAUSED]); } gboolean bz_transaction_manager_get_paused (BzTransactionManager *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_MANAGER (self), FALSE); return self->paused; } gboolean bz_transaction_manager_get_active (BzTransactionManager *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_MANAGER (self), FALSE); return self->loop != NULL; } gboolean bz_transaction_manager_get_pending (BzTransactionManager *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_MANAGER (self), FALSE); return self->loop != NULL && self->pending; } gboolean bz_transaction_manager_get_has_transactions (BzTransactionManager *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_MANAGER (self), FALSE); return g_list_model_get_n_items (G_LIST_MODEL (self->transactions)) > 0; } GListModel * bz_transaction_manager_get_all_trackers (BzTransactionManager *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_MANAGER (self), NULL); return G_LIST_MODEL (self->all_trackers); } DexFuture * bz_transaction_manager_add (BzTransactionManager *self, BzTransaction *transaction) { g_autoptr (QueuedScheduleData) data = NULL; dex_return_error_if_fail (BZ_IS_TRANSACTION_MANAGER (self)); dex_return_error_if_fail (self->backend != NULL); dex_return_error_if_fail (BZ_IS_TRANSACTION (transaction)); bz_transaction_hold (transaction); if (self->queue.length > 0) { BzTransaction *to_merge[2] = { 0 }; g_autoptr (BzTransaction) new_transaction = NULL; guint position = 0; data = g_queue_pop_head (&self->queue); g_list_store_find (self->transactions, data->transaction, &position); g_assert (position != G_MAXUINT); to_merge[0] = g_steal_pointer (&data->transaction); to_merge[1] = g_object_ref (transaction); new_transaction = bz_transaction_new_merged (to_merge, G_N_ELEMENTS (to_merge)); g_list_store_splice (self->transactions, position, 1, (gpointer *) &new_transaction, 1); for (guint i = 0; i < G_N_ELEMENTS (to_merge); i++) g_object_unref (to_merge[i]); data->transaction = g_steal_pointer (&new_transaction); } else { data = queued_schedule_data_new (); data->self = bz_track_weak (self); data->transaction = g_object_ref (transaction); data->promise = dex_promise_new_cancellable (); g_list_store_insert (self->transactions, 0, transaction); } g_queue_push_head (&self->queue, queued_schedule_data_ref (data)); if (self->loop == NULL && !self->paused) dex_future_disown (dispatch_next (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_TRANSACTIONS]); return dex_ref (data->promise); } void bz_transaction_manager_cancel_current (BzTransactionManager *self) { g_return_if_fail (BZ_IS_TRANSACTION_MANAGER (self)); if (self->current == NULL) return; dex_promise_reject ( self->current->promise, g_error_new (G_IO_ERROR, G_IO_ERROR_CANCELLED, "Cancelled by API")); g_object_set ( self->current->transaction, "status", "Cancelled", "progress", 1.0, "finished", TRUE, "success", FALSE, "error", "Cancelled by API", NULL); g_clear_pointer (&self->current, queued_schedule_data_unref); dex_clear (&self->loop); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACTIVE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); } void bz_transaction_manager_clear_finished (BzTransactionManager *self) { guint n_items = 0; gboolean had_items = FALSE; g_return_if_fail (BZ_IS_TRANSACTION_MANAGER (self)); n_items = g_list_model_get_n_items (G_LIST_MODEL (self->transactions)); had_items = n_items > 0; for (guint i = 0; i < n_items;) { g_autoptr (BzTransaction) transaction = NULL; gboolean finished = FALSE; transaction = g_list_model_get_item (G_LIST_MODEL (self->transactions), i); g_object_get (transaction, "finished", &finished, NULL); if (finished) { g_list_store_remove (self->transactions, i); n_items--; } else i++; } if (had_items && n_items == 0) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_TRANSACTIONS]); } static DexFuture * transaction_fiber (QueuedScheduleData *data) { g_autoptr (BzTransactionManager) self = NULL; BzTransaction *transaction = data->transaction; DexPromise *promise = data->promise; g_autoptr (GError) local_error = NULL; g_autoptr (GListStore) store = NULL; g_autoptr (DexChannel) channel = NULL; g_autoptr (DexFuture) future = NULL; g_autoptr (GHashTable) op_set = NULL; g_autoptr (GHashTable) pending_set = NULL; g_autoptr (GHashTable) errored = NULL; GHashTableIter iter = { 0 }; bz_weak_get_or_return_reject (self, data->self); g_object_set ( transaction, "status", "Starting up...", "progress", 0.0, NULL); self->current_progress = 0.0; self->pending = TRUE; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACTIVE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_PROGRESS]); store = g_list_store_new (BZ_TYPE_TRANSACTION); g_list_store_append (store, transaction); channel = dex_channel_new (0); future = bz_backend_merge_and_schedule_transactions ( self->backend, G_LIST_MODEL (store), channel, dex_promise_get_cancellable (promise)); op_set = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, NULL); pending_set = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, NULL); for (;;) { g_autoptr (GObject) object = NULL; object = dex_await_object (dex_channel_receive (channel), NULL); if (object == NULL) break; if (BZ_IS_BACKEND_TRANSACTION_OP_PAYLOAD (object)) { if (g_hash_table_contains (op_set, object)) { g_autofree char *error = NULL; error = g_object_steal_data (object, "error"); if (error != NULL) bz_transaction_error_out_task ( transaction, BZ_BACKEND_TRANSACTION_OP_PAYLOAD (object), error); else bz_transaction_finish_task ( transaction, BZ_BACKEND_TRANSACTION_OP_PAYLOAD (object)); g_hash_table_remove (op_set, object); if (g_hash_table_contains (pending_set, object)) { g_hash_table_remove (pending_set, object); self->pending = g_hash_table_size (pending_set) == g_hash_table_size (op_set); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); } } else { bz_transaction_add_task ( transaction, BZ_BACKEND_TRANSACTION_OP_PAYLOAD (object)); g_hash_table_replace (op_set, g_object_ref (object), NULL); } } else if (BZ_IS_BACKEND_TRANSACTION_OP_PROGRESS_PAYLOAD (object)) { const char *status = NULL; gboolean is_estimating = FALSE; double total_progress = 0.0; bz_transaction_update_task ( transaction, BZ_BACKEND_TRANSACTION_OP_PROGRESS_PAYLOAD (object)); status = bz_backend_transaction_op_progress_payload_get_status ( BZ_BACKEND_TRANSACTION_OP_PROGRESS_PAYLOAD (object)); is_estimating = bz_backend_transaction_op_progress_payload_get_is_estimating ( BZ_BACKEND_TRANSACTION_OP_PROGRESS_PAYLOAD (object)); total_progress = bz_backend_transaction_op_progress_payload_get_total_progress ( BZ_BACKEND_TRANSACTION_OP_PROGRESS_PAYLOAD (object)); g_object_set ( transaction, "pending", is_estimating, "status", status, "progress", total_progress, NULL); self->current_progress = total_progress; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_PROGRESS]); if (is_estimating && !g_hash_table_contains (pending_set, object)) { g_hash_table_replace (pending_set, g_object_ref (object), NULL); self->pending = g_hash_table_size (pending_set) == g_hash_table_size (op_set); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); } else if (!is_estimating && g_hash_table_contains (pending_set, object)) { g_hash_table_remove (pending_set, object); self->pending = g_hash_table_size (pending_set) == g_hash_table_size (op_set); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); } } } /* Finish off tasks that may not have received a final update */ g_hash_table_iter_init (&iter, op_set); for (;;) { BzBackendTransactionOpPayload *payload = NULL; gpointer dummy = NULL; if (!g_hash_table_iter_next ( &iter, (gpointer *) &payload, (gpointer *) &dummy)) break; bz_transaction_error_out_task (transaction, payload, "Cancelled"); } errored = dex_await_boxed (g_steal_pointer (&future), &local_error); if (local_error != NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); if (errored != NULL && g_hash_table_size (errored) > 0) { GHashTableIter errored_iter = { 0 }; gpointer key = NULL; gpointer val = NULL; g_hash_table_iter_init (&errored_iter, errored); g_hash_table_iter_next (&errored_iter, &key, &val); return dex_future_new_for_error (g_error_copy ((GError *) val)); } return dex_future_new_true (); } static DexFuture * transaction_finally (DexFuture *future, QueuedScheduleData *data) { g_autoptr (BzTransactionManager) self = NULL; g_autoptr (GError) local_error = NULL; BzTransaction *transaction = data->transaction; DexPromise *promise = data->promise; GTimer *timer = data->timer; const GValue *value = NULL; g_autofree char *status = NULL; bz_weak_get_or_return_reject (self, data->self); g_timer_stop (timer); status = g_strdup_printf ( _ ("Finished in %.02f seconds"), g_timer_elapsed (data->timer, NULL)); value = dex_future_get_value (future, &local_error); g_object_set ( transaction, "status", status, "progress", 1.0, "success", value != NULL, "error", local_error != NULL ? local_error->message : NULL, "finished", TRUE, NULL); self->current_progress = 1.0; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_PROGRESS]); bz_transaction_notify_finished(transaction, value != NULL); if (value != NULL) { g_signal_emit (self, signals[SIGNAL_SUCCESS], 0, transaction); dex_promise_resolve_boolean (promise, TRUE); } else { g_warning ("Transaction failed to complete: %s", local_error->message); g_signal_emit (self, signals[SIGNAL_FAILURE], 0, transaction); dex_promise_resolve_boolean (promise, FALSE); } return dex_future_new_true (); } static DexFuture * then_loop_cb (DexFuture *future, GWeakRef *wr) { g_autoptr (BzTransactionManager) self = NULL; bz_weak_get_or_return_reject (self, wr); g_clear_pointer (&self->current, queued_schedule_data_unref); return dispatch_next (self); } static DexFuture * dispatch_next (BzTransactionManager *self) { g_autoptr (QueuedScheduleData) data = NULL; g_autoptr (DexFuture) future = NULL; if (self->queue.length == 0 || self->paused) { dex_clear (&self->loop); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACTIVE]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PENDING]); if (self->queue.length == 0) return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "No more futures in queue"); if (self->paused) return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Paused"); } if (self->current != NULL) { QueuedScheduleData *peek = NULL; peek = g_queue_peek_head (&self->queue); return dex_ref (peek->promise); } data = g_queue_pop_tail (&self->queue); g_clear_pointer (&data->timer, g_timer_destroy); data->timer = g_timer_new (); future = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) transaction_fiber, queued_schedule_data_ref (data), queued_schedule_data_unref); future = dex_future_finally ( future, (DexFutureCallback) transaction_finally, queued_schedule_data_ref (data), queued_schedule_data_unref); future = dex_future_first ( future, dex_ref (data->promise), NULL); self->current = queued_schedule_data_ref (data); if (self->loop == NULL) self->loop = dex_future_then_loop ( dex_ref (future), (DexFutureCallback) then_loop_cb, bz_track_weak (self), bz_weak_release); return dex_ref (future); } static inline void finish_queued_schedule_data (gpointer ptr) { QueuedScheduleData *data = ptr; g_clear_pointer (&data->self, bz_weak_release); if (data->transaction != NULL) bz_transaction_release (data->transaction); g_clear_object (&data->transaction); if (data->promise != NULL && dex_future_is_pending (DEX_FUTURE (data->promise))) dex_promise_reject ( data->promise, g_error_new (G_IO_ERROR, G_IO_ERROR_CANCELLED, "User data was destroyed")); dex_clear (&data->promise); g_clear_pointer (&data->timer, g_timer_destroy); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-manager.h����������������������������������������������0000664�0000000�0000000�00000005043�15240005042�0022646�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-manager.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-backend.h" #include "bz-main-config.h" #include "bz-transaction.h" G_BEGIN_DECLS #define BZ_TRANSACTION_MGR_ERROR (bz_transaction_mgr_error_quark ()) GQuark bz_transaction_mgr_error_quark (void); typedef enum { BZ_TRANSACTION_MGR_ERROR_CANCELLED_BY_HOOK = 0, } BzTransaction_MgrError; #define BZ_TYPE_TRANSACTION_MANAGER (bz_transaction_manager_get_type ()) G_DECLARE_FINAL_TYPE (BzTransactionManager, bz_transaction_manager, BZ, TRANSACTION_MANAGER, GObject) BzTransactionManager * bz_transaction_manager_new (void); void bz_transaction_manager_set_config (BzTransactionManager *self, BzMainConfig *config); BzMainConfig * bz_transaction_manager_get_config (BzTransactionManager *self); void bz_transaction_manager_set_backend (BzTransactionManager *self, BzBackend *backend); BzBackend * bz_transaction_manager_get_backend (BzTransactionManager *self); void bz_transaction_manager_set_paused (BzTransactionManager *self, gboolean paused); gboolean bz_transaction_manager_get_paused (BzTransactionManager *self); gboolean bz_transaction_manager_get_active (BzTransactionManager *self); gboolean bz_transaction_manager_get_pending (BzTransactionManager *self); gboolean bz_transaction_manager_get_has_transactions (BzTransactionManager *self); GListModel * bz_transaction_manager_get_all_trackers (BzTransactionManager *self); G_GNUC_WARN_UNUSED_RESULT DexFuture * bz_transaction_manager_add (BzTransactionManager *self, BzTransaction *transaction); void bz_transaction_manager_cancel_current (BzTransactionManager *self); void bz_transaction_manager_clear_finished (BzTransactionManager *self); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-task.txt�����������������������������������������������0000664�0000000�0000000�00000000656�15240005042�0022573�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=transaction_task parent-prefix=g parent-name=object author=AUTOGEN include="bz-backend-transaction-op-payload.h" include="bz-backend-transaction-op-progress-payload.h" property=op BzBackendTransactionOpPayload BZ_TYPE_BACKEND_TRANSACTION_OP_PAYLOAD object property=last_progress BzBackendTransactionOpProgressPayload BZ_TYPE_BACKEND_TRANSACTION_OP_PROGRESS_PAYLOAD object property=error char G_TYPE_STRING string ����������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-tile.blp�����������������������������������������������0000664�0000000�0000000�00000032716�15240005042�0022526�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzTransactionTile: $BzListTile { child: Adw.Bin { child: Box { orientation: vertical; Box { orientation: horizontal; spacing: 10; margin-top: 10; margin-bottom: 10; margin-start: 10; margin-end: 4; Image { paintable: bind $get_main_icon(template.tracker) as <$GdkPaintable>; pixel-size: 64; valign: start; halign: start; styles [ "icon-dropshadow", ] } Box { valign: center; orientation: vertical; Label { styles [ "transaction-tile-title", ] hexpand: true; ellipsize: end; xalign: 0.0; label: bind template.tracker as <$BzTransactionEntryTracker>.entry as <$BzEntry>.title as <string>; } Revealer progress_bars_revealer { reveal-child: bind $list_has_items(template.tracker as <$BzTransactionEntryTracker>.current-ops) as <bool>; transition-type: slide_down; styles [ "no-min-height", ] child: ListView { styles [ "navigation-sidebar", "installed-list-view", "user-data-list-view" ] visible: bind $invert_boolean($is_transaction_tracker_removal(template.tracker) as <bool>) as <bool>; model: NoSelection { model: bind template.tracker as <$BzTransactionEntryTracker>.current-ops; }; factory: BuilderListItemFactory { template ListItem { activatable: false; child: Box { orientation: vertical; spacing: 3; $BzProgressBar { hexpand: "true"; fraction: bind template.item as <$BzTransactionTask>.last-progress as <$BzBackendTransactionOpProgressPayload>.progress; } Label { styles [ "dimmed", "caption-heading", "numeric", ] hexpand: true; xalign: 0; ellipsize: end; single-line-mode: true; label: bind $format_download_progress(template.item as <$BzTransactionTask>.last-progress as <$BzBackendTransactionOpProgressPayload>.bytes-transferred, template.item as <$BzTransactionTask>.op as <$BzBackendTransactionOpPayload>.download-size) as <string>; } }; } }; }; } Revealer { reveal-child: bind progress_bars_revealer.reveal-child inverted; child: Box { orientation: horizontal; layout-manager: Adw.WrapLayout { child-spacing: 4; line-spacing: 0; }; Box { visible: bind $is_entry_addon(template.tracker) as <bool>; halign: start; spacing: 4; margin-top: 8; styles [ "green", "colored", "small-pill", "download-size-pill", ] Image { icon-name: "puzzle-piece-symbolic"; pixel-size: 12; } Label { styles [ "caption-heading", ] valign: center; xalign: 0.0; label: _("App Add-On"); } } Box { visible: bind $is_both($is_entry_runtime(template.tracker) as <bool>, $invert_boolean($is_entry_addon(template.tracker) as <bool>) as <bool>) as <bool>; halign: start; spacing: 4; margin-top: 8; styles [ "blue", "colored", "small-pill", "download-size-pill", ] Image { icon-name: "application-x-sharedlib-symbolic"; pixel-size: 12; } Label { styles [ "caption-heading", ] valign: center; xalign: 0.0; label: _("Runtime"); } } Box { visible: bind $is_queued(template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus>) as <bool>; halign: start; spacing: 4; margin-top: 8; styles [ "grey", "colored", "small-pill", "download-size-pill", ] Label { styles [ "caption-heading", ] valign: center; xalign: 0.0; label: _("In Queue"); } } Box { visible: bind $is_completed(template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus>) as <bool>; halign: start; spacing: 4; margin-top: 8; styles [ "grey", "colored", "small-pill", "download-size-pill", ] Label { styles [ "caption-heading", ] valign: center; xalign: 0.0; label: _("Done"); } } Box { visible: bind $is_cancelled(template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus>) as <bool>; halign: start; spacing: 4; margin-top: 8; styles [ "grey", "colored", "small-pill", "download-size-pill", ] Label { styles [ "caption-heading", ] valign: center; xalign: 0.0; label: _("Cancelled"); } } Box { visible: bind $is_transaction_tracker_errored(template.tracker as <$BzTransactionEntryTracker>.finished-ops) as <bool>; halign: start; spacing: 4; margin-top: 8; styles [ "error", "colored", "small-pill", "download-size-pill", ] Label { styles [ "caption-heading", ] valign: center; xalign: 0.0; label: _("Error"); } } Box { halign: start; spacing: 4; margin-top: 8; styles [ "installed-pill", "small-pill", "download-size-pill", ] visible: bind $logical_and($is_transaction_tracker_removal(template.tracker) as <bool>, $is_completed(template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus>) as <bool>) as <bool>; Label { styles [ "caption-heading", ] valign: center; xalign: 0.0; label: bind $format_removal_size(template.tracker as <$BzTransactionEntryTracker>.entry as <$BzEntry>.installed-size) as <string>; } } }; } } Box { orientation: horizontal; spacing: 5; Button { visible: bind $is_both( $is_both( $is_both($is_entry_application(template.tracker as <$BzTransactionEntryTracker>) as <bool>, $is_completed(template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus>) as <bool>) as <bool>, $is_transaction_tracker_install(template.tracker as <$BzTransactionEntryTracker>) as <bool> ) as <bool>, template.tracker as <$BzTransactionEntryTracker>.entry as <$BzEntry>.installed as <bool> ) as <bool>; valign: center; // TRANSLATORS: Button to launch an installed app label: _("Open"); clicked => $run_cb(template); styles [ "medium-pill", ] } Button { visible: bind $is_ongoing(template.tracker as <$BzTransactionEntryTracker>.status as <$BzTransactionEntryStatus>) as <bool>; icon-name: "media-playback-stop-symbolic"; has-tooltip: true; valign: center; tooltip-text: _("Cancel Transaction"); clicked => $cancel_cb(template); styles [ "flat", ] } ToggleButton toggle { sensitive: bind $invert_boolean($is_empty(template.tracker as <$BzTransactionEntryTracker>.finished-ops) as <bool>) as <bool>; tooltip-text: _("Show Details"); child: Image { pixel-size: 14; icon-name: "go-next-symbolic"; styles [ "accent", ] }; valign: center; styles [ "flat", "circular", "ops-toggle", ] } } } Revealer { reveal-child: bind toggle.active; child: Box { orientation: vertical; styles [ "operations", ] Separator {} ListView { styles [ "navigation-sidebar", "installed-list-view", ] model: NoSelection { model: bind template.tracker as <$BzTransactionEntryTracker>.finished-ops; }; factory: BuilderListItemFactory { template ListItem { activatable: false; child: Box { orientation: horizontal; spacing: 10; margin-start: 7; margin-end: 7; Image { styles [ "success", ] valign: center; icon-name: "check-plain-symbolic"; visible: bind $is_null(template.item as <$BzTransactionTask>.error) as <bool>; } Image { styles [ "error", ] valign: center; icon-name: "cross-large-circle-filled-symbolic"; visible: bind $invert_boolean($is_null(template.item as <$BzTransactionTask>.error) as <bool>) as <bool>; } Box { valign: center; orientation: horizontal; spacing: 5; hexpand: true; Label { styles [ "dimmed", ] valign: center; hexpand: true; xalign: 0.0; ellipsize: end; single-line-mode: true; label: bind template.item as <$BzTransactionTask>.op as <$BzBackendTransactionOpPayload>.name; visible: bind $is_null(template.item as <$BzTransactionTask>.error) as <bool>; } Label { styles [ "error", ] valign: center; hexpand: true; xalign: 0.0; ellipsize: end; single-line-mode: true; label: bind template.item as <$BzTransactionTask>.op as <$BzBackendTransactionOpPayload>.name; visible: bind $invert_boolean($is_null(template.item as <$BzTransactionTask>.error) as <bool>) as <bool>; has-tooltip: true; tooltip-text: bind template.item as <$BzTransactionTask>.error as <string>; } Button { icon-name: "info-outline-symbolic"; clicked => $error_clicked_cb(template); visible: bind $invert_boolean($is_null(template.item as <$BzTransactionTask>.error) as <bool>) as <bool>; has-tooltip: true; tooltip-text: _("Show Error Info"); styles [ "error", "flat", ] } } }; } }; } }; } }; }; } ��������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-tile.c�������������������������������������������������0000664�0000000�0000000�00000030655�15240005042�0022173�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-tile.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <glib/gi18n.h> #include "bz-application.h" #include "bz-entry-group.h" #include "bz-entry.h" #include "bz-error-dialog.h" #include "error.h" #include "bz-flatpak-entry.h" #include "bz-list-tile.h" #include "bz-state-info.h" #include "template-callbacks.h" #include "bz-transaction-tile.h" #include "bz-window.h" struct _BzTransactionTile { BzListTile parent_instance; BzTransactionEntryTracker *tracker; }; G_DEFINE_FINAL_TYPE (BzTransactionTile, bz_transaction_tile, BZ_TYPE_LIST_TILE); enum { PROP_0, PROP_TRACKER, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_transaction_tile_dispose (GObject *object) { BzTransactionTile *self = BZ_TRANSACTION_TILE (object); g_clear_pointer (&self->tracker, g_object_unref); G_OBJECT_CLASS (bz_transaction_tile_parent_class)->dispose (object); } static void bz_transaction_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzTransactionTile *self = BZ_TRANSACTION_TILE (object); switch (prop_id) { case PROP_TRACKER: g_value_set_object (value, bz_transaction_tile_get_tracker (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_transaction_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzTransactionTile *self = BZ_TRANSACTION_TILE (object); switch (prop_id) { case PROP_TRACKER: bz_transaction_tile_set_tracker (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static char * format_removal_size (gpointer object, guint64 value) { g_autofree char *size = NULL; size = g_format_size (value); return g_strdup_printf (_ ("%s Freed"), size); } static char * format_download_progress (gpointer object, guint64 bytes_transferred, guint64 total_size) { g_autofree char *downloaded_str = NULL; g_autofree char *total_str = NULL; downloaded_str = g_format_size (bytes_transferred); if (total_size == (guint64) -1) return g_strdup_printf ("%s", downloaded_str); else { total_str = g_format_size (total_size); return g_strdup_printf ("%s / %s", downloaded_str, total_str); } } static gboolean is_transaction_type (gpointer object, BzTransactionEntryTracker *tracker, int type) { if (tracker == NULL) return FALSE; return bz_transaction_entry_tracker_get_kind (tracker) == type; } static gboolean is_transaction_tracker_install (gpointer object, BzTransactionEntryTracker *tracker) { return is_transaction_type (object, tracker, BZ_TRANSACTION_ENTRY_KIND_INSTALL); } static gboolean is_transaction_tracker_update (gpointer object, BzTransactionEntryTracker *tracker) { return is_transaction_type (object, tracker, BZ_TRANSACTION_ENTRY_KIND_UPDATE); } static gboolean is_transaction_tracker_removal (gpointer object, BzTransactionEntryTracker *tracker) { return is_transaction_type (object, tracker, BZ_TRANSACTION_ENTRY_KIND_REMOVAL); } static gboolean is_transaction_tracker_errored (gpointer object, GListModel *finished_ops) { guint n_items = 0; if (finished_ops == NULL) return FALSE; n_items = g_list_model_get_n_items (finished_ops); for (guint i = 0; i < n_items; i++) { g_autoptr (BzTransactionTask) task = NULL; task = g_list_model_get_item (finished_ops, i); if (bz_transaction_task_get_error (task) != NULL) return TRUE; } return FALSE; } static gboolean list_has_items (gpointer object, GListModel *model) { if (model == NULL) return FALSE; return g_list_model_get_n_items (model) > 0; } static gboolean is_queued (gpointer object, BzTransactionEntryStatus status) { return status == BZ_TRANSACTION_ENTRY_STATUS_QUEUED; } static gboolean is_ongoing (gpointer object, BzTransactionEntryStatus status) { return status == BZ_TRANSACTION_ENTRY_STATUS_ONGOING; } static gboolean is_completed (gpointer object, BzTransactionEntryStatus status) { return status == BZ_TRANSACTION_ENTRY_STATUS_DONE; } static gboolean is_cancelled (gpointer object, BzTransactionEntryStatus status) { return status == BZ_TRANSACTION_ENTRY_STATUS_CANCELLED; } static gboolean is_both (gpointer object, gboolean first, gboolean second) { return first && second; } static GdkPaintable * get_main_icon (gpointer object, BzTransactionEntryTracker *tracker) { BzEntry *entry = NULL; GdkPaintable *icon_paintable = NULL; if (tracker == NULL) goto return_generic; entry = bz_transaction_entry_tracker_get_entry (tracker); if (entry == NULL) goto return_generic; icon_paintable = bz_entry_get_icon_paintable (entry); if (icon_paintable != NULL) return g_object_ref (icon_paintable); return_generic: return (GdkPaintable *) gtk_icon_theme_lookup_icon ( gtk_icon_theme_get_for_display (gdk_display_get_default ()), "application-x-executable", NULL, 64, 1, gtk_widget_get_default_direction (), GTK_ICON_LOOKUP_NONE); } static gboolean is_entry_kind (gpointer object, BzTransactionEntryTracker *tracker, int kind) { BzEntry *entry = NULL; if (tracker == NULL) return FALSE; entry = bz_transaction_entry_tracker_get_entry (tracker); if (entry == NULL) return FALSE; return bz_entry_is_of_kinds (entry, kind); } static gboolean is_entry_application (gpointer object, BzTransactionEntryTracker *tracker) { return is_entry_kind (object, tracker, BZ_ENTRY_KIND_APPLICATION); } static gboolean is_entry_runtime (gpointer object, BzTransactionEntryTracker *tracker) { return is_entry_kind (object, tracker, BZ_ENTRY_KIND_RUNTIME); } static gboolean is_entry_addon (gpointer object, BzTransactionEntryTracker *tracker) { return is_entry_kind (object, tracker, BZ_ENTRY_KIND_ADDON); } static void run_cb (BzTransactionTile *self, GtkButton *button) { BzTransactionEntryTracker *tracker = NULL; BzEntry *entry = NULL; tracker = bz_transaction_tile_get_tracker (self); if (tracker == NULL) return; entry = bz_transaction_entry_tracker_get_entry (tracker); if (entry == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.launch-group", "s", bz_entry_get_id (entry)); } static void cancel_cb (BzTransactionTile *self, GtkButton *button) { BzTransactionEntryTracker *tracker = NULL; BzEntry *entry = NULL; tracker = bz_transaction_tile_get_tracker (self); if (tracker == NULL) return; entry = bz_transaction_entry_tracker_get_entry (tracker); if (entry == NULL) return; gtk_widget_activate_action (GTK_WIDGET (self), "window.cancel-group", "s", bz_entry_get_id (entry)); } static void error_clicked_cb (GtkListItem *item, GtkButton *button, BzTransactionTile *self) { BzTransactionTask *task = NULL; const char *error = NULL; const char *name = NULL; BzErrorDialog *dialog = NULL; task = gtk_list_item_get_item (item); if (task == NULL) return; error = bz_transaction_task_get_error (task); if (error == NULL) return; name = bz_backend_transaction_op_payload_get_name ( bz_transaction_task_get_op (task)); if (name != NULL) { g_autofree char *body = NULL; body = g_strdup_printf ("%s: %s", name, error); dialog = bz_error_dialog_new (_ ("Transaction Error"), body); } else dialog = bz_error_dialog_new (_ ("Transaction Error"), error); adw_dialog_present (ADW_DIALOG (dialog), GTK_WIDGET (self)); } static void bz_transaction_tile_class_init (BzTransactionTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = bz_transaction_tile_set_property; object_class->get_property = bz_transaction_tile_get_property; object_class->dispose = bz_transaction_tile_dispose; props[PROP_TRACKER] = g_param_spec_object ( "tracker", NULL, NULL, BZ_TYPE_TRANSACTION_ENTRY_TRACKER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LIST_TILE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-transaction-tile.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_callback (widget_class, format_removal_size); gtk_widget_class_bind_template_callback (widget_class, format_download_progress); gtk_widget_class_bind_template_callback (widget_class, get_main_icon); gtk_widget_class_bind_template_callback (widget_class, is_entry_application); gtk_widget_class_bind_template_callback (widget_class, is_entry_runtime); gtk_widget_class_bind_template_callback (widget_class, is_entry_addon); gtk_widget_class_bind_template_callback (widget_class, is_transaction_tracker_install); gtk_widget_class_bind_template_callback (widget_class, is_transaction_tracker_update); gtk_widget_class_bind_template_callback (widget_class, is_transaction_tracker_removal); gtk_widget_class_bind_template_callback (widget_class, is_transaction_tracker_errored); gtk_widget_class_bind_template_callback (widget_class, list_has_items); gtk_widget_class_bind_template_callback (widget_class, is_queued); gtk_widget_class_bind_template_callback (widget_class, is_ongoing); gtk_widget_class_bind_template_callback (widget_class, is_completed); gtk_widget_class_bind_template_callback (widget_class, is_cancelled); gtk_widget_class_bind_template_callback (widget_class, is_both); gtk_widget_class_bind_template_callback (widget_class, run_cb); gtk_widget_class_bind_template_callback (widget_class, cancel_cb); gtk_widget_class_bind_template_callback (widget_class, error_clicked_cb); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static void bz_transaction_tile_init (BzTransactionTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } BzTransactionTile * bz_transaction_tile_new (void) { return g_object_new (BZ_TYPE_TRANSACTION_TILE, NULL); } BzTransactionEntryTracker * bz_transaction_tile_get_tracker (BzTransactionTile *self) { g_return_val_if_fail (BZ_IS_TRANSACTION_TILE (self), NULL); return self->tracker; } void bz_transaction_tile_set_tracker (BzTransactionTile *self, BzTransactionEntryTracker *tracker) { g_return_if_fail (BZ_IS_TRANSACTION_TILE (self)); g_clear_pointer (&self->tracker, g_object_unref); if (tracker != NULL) self->tracker = g_object_ref (tracker); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TRACKER]); } /* End of bz-transaction-tile.c */ �����������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction-tile.h�������������������������������������������������0000664�0000000�0000000�00000002511�15240005042�0022166�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction-tile.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-transaction-entry-tracker.h" G_BEGIN_DECLS #define BZ_TYPE_TRANSACTION_TILE (bz_transaction_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzTransactionTile, bz_transaction_tile, BZ, TRANSACTION_TILE, BzListTile) BzTransactionTile * bz_transaction_tile_new (void); BzTransactionEntryTracker * bz_transaction_tile_get_tracker (BzTransactionTile *self); void bz_transaction_tile_set_tracker (BzTransactionTile *self, BzTransactionEntryTracker *tracker); G_END_DECLS /* End of bz-transaction-tile.h */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction.c������������������������������������������������������0000664�0000000�0000000�00000065526�15240005042�0021245�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ /* TODO: This file probably needs to be rewritten */ #include "config.h" #include <glib/gi18n.h> #include "bz-transaction.h" typedef struct { GListStore *installs; GListStore *updates; GListStore *removals; char *name; gboolean pending; GListStore *current_tasks; GListStore *finished_tasks; GListStore *trackers; char *status; double progress; gboolean finished; gboolean success; char *error; } BzTransactionPrivate; G_DEFINE_TYPE_WITH_PRIVATE (BzTransaction, bz_transaction, G_TYPE_OBJECT) enum { PROP_0, PROP_NAME, PROP_INSTALLS, PROP_UPDATES, PROP_REMOVALS, PROP_PENDING, PROP_CURRENT_OPS, PROP_FINISHED_OPS, PROP_TRACKERS, PROP_STATUS, PROP_PROGRESS, PROP_FINISHED, PROP_SUCCESS, PROP_ERROR, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void finish (BzTransactionPrivate *priv); static gboolean find_payload_eq_func (BzTransactionTask *task, gpointer none, BzBackendTransactionOpPayload *payload); static gboolean find_entry_eq_func (BzTransactionEntryTracker *tracker, gpointer none, BzEntry *entry); static gboolean find_and_maybe_transfer (GListStore *from, GListStore *to, gpointer lookup, GEqualFuncFull eql, gpointer *out); static void tracker_update (BzTransactionPrivate *priv, BzBackendTransactionOpPayload *payload, BzBackendTransactionOpProgressPayload *progress_payload, gboolean transfer, gboolean set_done); static void bz_transaction_dispose (GObject *object) { BzTransaction *self = BZ_TRANSACTION (object); BzTransactionPrivate *priv = bz_transaction_get_instance_private (self); g_clear_pointer (&priv->name, g_free); g_clear_object (&priv->installs); g_clear_object (&priv->updates); g_clear_object (&priv->removals); g_clear_object (&priv->current_tasks); g_clear_object (&priv->finished_tasks); g_clear_object (&priv->trackers); g_clear_pointer (&priv->status, g_free); g_clear_pointer (&priv->error, g_free); G_OBJECT_CLASS (bz_transaction_parent_class)->dispose (object); } static void bz_transaction_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzTransaction *self = BZ_TRANSACTION (object); BzTransactionPrivate *priv = bz_transaction_get_instance_private (self); switch (prop_id) { case PROP_NAME: g_value_set_string (value, priv->name); break; case PROP_INSTALLS: g_value_set_object (value, priv->installs); break; case PROP_UPDATES: g_value_set_object (value, priv->updates); break; case PROP_REMOVALS: g_value_set_object (value, priv->removals); break; case PROP_PENDING: g_value_set_boolean (value, priv->pending); break; case PROP_CURRENT_OPS: g_value_set_object (value, priv->current_tasks); break; case PROP_FINISHED_OPS: g_value_set_object (value, priv->finished_tasks); break; case PROP_TRACKERS: g_value_set_object (value, priv->trackers); break; case PROP_STATUS: g_value_set_string (value, priv->status); break; case PROP_PROGRESS: g_value_set_double (value, priv->progress); break; case PROP_FINISHED: g_value_set_boolean (value, priv->finished); break; case PROP_SUCCESS: g_value_set_boolean (value, priv->success); break; case PROP_ERROR: g_value_set_string (value, priv->error); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_transaction_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzTransaction *self = BZ_TRANSACTION (object); BzTransactionPrivate *priv = bz_transaction_get_instance_private (self); switch (prop_id) { case PROP_NAME: g_clear_pointer (&priv->name, g_free); priv->name = g_value_dup_string (value); break; case PROP_INSTALLS: g_clear_object (&priv->installs); priv->installs = g_value_dup_object (value); break; case PROP_UPDATES: g_clear_object (&priv->updates); priv->updates = g_value_dup_object (value); break; case PROP_REMOVALS: g_clear_object (&priv->removals); priv->removals = g_value_dup_object (value); break; case PROP_PENDING: priv->pending = g_value_get_boolean (value); break; case PROP_STATUS: g_clear_pointer (&priv->status, g_free); priv->status = g_value_dup_string (value); break; case PROP_PROGRESS: priv->progress = g_value_get_double (value); break; case PROP_FINISHED: priv->finished = g_value_get_boolean (value); if (priv->finished) finish (priv); break; case PROP_SUCCESS: priv->success = g_value_get_boolean (value); break; case PROP_ERROR: g_clear_pointer (&priv->error, g_free); priv->error = g_value_dup_string (value); break; case PROP_CURRENT_OPS: case PROP_FINISHED_OPS: case PROP_TRACKERS: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_transaction_class_init (BzTransactionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = bz_transaction_set_property; object_class->get_property = bz_transaction_get_property; object_class->dispose = bz_transaction_dispose; props[PROP_NAME] = g_param_spec_string ( "name", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_INSTALLS] = g_param_spec_object ( "installs", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_UPDATES] = g_param_spec_object ( "updates", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_REMOVALS] = g_param_spec_object ( "removals", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_PENDING] = g_param_spec_boolean ( "pending", NULL, NULL, TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_CURRENT_OPS] = g_param_spec_object ( "current-ops", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_FINISHED_OPS] = g_param_spec_object ( "finished-ops", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_TRACKERS] = g_param_spec_object ( "trackers", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_STATUS] = g_param_spec_string ( "status", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_PROGRESS] = g_param_spec_double ( "progress", NULL, NULL, 0.0, 1.0, 0.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_FINISHED] = g_param_spec_boolean ( "finished", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_SUCCESS] = g_param_spec_boolean ( "success", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_ERROR] = g_param_spec_string ( "error", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); } static void bz_transaction_init (BzTransaction *self) { BzTransactionPrivate *priv = NULL; g_autoptr (GDateTime) now = NULL; priv = bz_transaction_get_instance_private (self); now = g_date_time_new_now_local (); priv->name = g_date_time_format (now, "%X"); priv->installs = g_list_store_new (BZ_TYPE_ENTRY); priv->updates = g_list_store_new (BZ_TYPE_ENTRY); priv->removals = g_list_store_new (BZ_TYPE_ENTRY); priv->pending = TRUE; priv->current_tasks = g_list_store_new (BZ_TYPE_TRANSACTION_TASK); priv->finished_tasks = g_list_store_new (BZ_TYPE_TRANSACTION_TASK); priv->trackers = g_list_store_new (BZ_TYPE_TRANSACTION_ENTRY_TRACKER); priv->status = g_strdup (_ ("Pending")); priv->success = TRUE; } BzTransaction * bz_transaction_new_full (BzEntry **installs, guint n_installs, BzEntry **updates, guint n_updates, BzEntry **removals, guint n_removals) { g_autoptr (BzTransaction) self = NULL; BzTransactionPrivate *priv = NULL; g_return_val_if_fail ((installs != NULL && n_installs > 0) || (updates != NULL && n_updates > 0) || (removals != NULL && n_removals > 0), NULL); for (guint i = 0; i < n_installs; i++) g_return_val_if_fail (BZ_IS_ENTRY (installs[i]), NULL); for (guint i = 0; i < n_updates; i++) g_return_val_if_fail (BZ_IS_ENTRY (updates[i]), NULL); for (guint i = 0; i < n_removals; i++) g_return_val_if_fail (BZ_IS_ENTRY (removals[i]), NULL); self = g_object_new (BZ_TYPE_TRANSACTION, NULL); priv = bz_transaction_get_instance_private (self); #define ADD_ENTRY(type, entry, transaction_type) \ G_STMT_START \ { \ g_autoptr (BzTransactionEntryTracker) tracker = NULL; \ g_autoptr (GListStore) current_ops = NULL; \ g_autoptr (GListStore) finished_ops = NULL; \ \ g_list_store_append (priv->type, (entry)); \ \ tracker = bz_transaction_entry_tracker_new (); \ current_ops = g_list_store_new (BZ_TYPE_TRANSACTION_TASK); \ finished_ops = g_list_store_new (BZ_TYPE_TRANSACTION_TASK); \ \ bz_transaction_entry_tracker_set_entry (tracker, (entry)); \ bz_transaction_entry_tracker_set_current_ops (tracker, G_LIST_MODEL (current_ops)); \ bz_transaction_entry_tracker_set_finished_ops (tracker, G_LIST_MODEL (finished_ops)); \ bz_transaction_entry_tracker_set_kind (tracker, transaction_type); \ bz_transaction_entry_tracker_set_status (tracker, BZ_TRANSACTION_ENTRY_STATUS_QUEUED); \ bz_transaction_entry_tracker_set_pending (tracker, TRUE); \ if ((transaction_type) == BZ_TRANSACTION_ENTRY_KIND_REMOVAL) \ bz_transaction_entry_tracker_set_active (tracker, TRUE); \ \ g_list_store_append (priv->trackers, tracker); \ } \ G_STMT_END for (guint i = 0; i < n_installs; i++) ADD_ENTRY (installs, installs[i], BZ_TRANSACTION_ENTRY_KIND_INSTALL); for (guint i = 0; i < n_updates; i++) ADD_ENTRY (updates, updates[i], BZ_TRANSACTION_ENTRY_KIND_UPDATE); for (guint i = 0; i < n_removals; i++) ADD_ENTRY (removals, removals[i], BZ_TRANSACTION_ENTRY_KIND_REMOVAL); #undef ADD_ENTRY return g_steal_pointer (&self); } BzTransaction * bz_transaction_new_merged (BzTransaction **transactions, guint n_transactions) { g_autoptr (GPtrArray) installs_pa = NULL; g_autoptr (GPtrArray) updates_pa = NULL; g_autoptr (GPtrArray) removals_pa = NULL; g_return_val_if_fail (transactions != NULL, NULL); g_return_val_if_fail (n_transactions >= 2, NULL); installs_pa = g_ptr_array_new_with_free_func (g_object_unref); updates_pa = g_ptr_array_new_with_free_func (g_object_unref); removals_pa = g_ptr_array_new_with_free_func (g_object_unref); for (guint i = 0; i < n_transactions; i++) { GListModel *installs = NULL; GListModel *updates = NULL; GListModel *removals = NULL; guint n_installs = 0; guint n_updates = 0; guint n_removals = 0; installs = bz_transaction_get_installs (transactions[i]); updates = bz_transaction_get_updates (transactions[i]); removals = bz_transaction_get_removals (transactions[i]); if (installs != NULL) n_installs = g_list_model_get_n_items (installs); if (updates != NULL) n_updates = g_list_model_get_n_items (updates); if (removals != NULL) n_removals = g_list_model_get_n_items (removals); for (guint j = 0; j < n_installs; j++) g_ptr_array_add (installs_pa, g_list_model_get_item (installs, j)); for (guint j = 0; j < n_updates; j++) g_ptr_array_add (updates_pa, g_list_model_get_item (updates, j)); for (guint j = 0; j < n_removals; j++) g_ptr_array_add (removals_pa, g_list_model_get_item (removals, j)); } return bz_transaction_new_full ( (BzEntry **) installs_pa->pdata, installs_pa->len, (BzEntry **) updates_pa->pdata, updates_pa->len, (BzEntry **) removals_pa->pdata, removals_pa->len); } GListModel * bz_transaction_get_installs (BzTransaction *self) { BzTransactionPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_TRANSACTION (self), NULL); priv = bz_transaction_get_instance_private (self); return G_LIST_MODEL (priv->installs); } GListModel * bz_transaction_get_updates (BzTransaction *self) { BzTransactionPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_TRANSACTION (self), NULL); priv = bz_transaction_get_instance_private (self); return G_LIST_MODEL (priv->updates); } GListModel * bz_transaction_get_removals (BzTransaction *self) { BzTransactionPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_TRANSACTION (self), NULL); priv = bz_transaction_get_instance_private (self); return G_LIST_MODEL (priv->removals); } GListModel * bz_transaction_get_trackers (BzTransaction *self) { BzTransactionPrivate *priv = NULL; g_return_val_if_fail (BZ_IS_TRANSACTION (self), NULL); priv = bz_transaction_get_instance_private (self); return G_LIST_MODEL (priv->trackers); } void bz_transaction_hold (BzTransaction *self) { BzTransactionPrivate *priv = NULL; g_return_if_fail (BZ_IS_TRANSACTION (self)); priv = bz_transaction_get_instance_private (self); #define HOLD_MODEL(_model) \ if ((_model) != NULL) \ { \ guint n_items = 0; \ \ n_items = g_list_model_get_n_items (G_LIST_MODEL ((_model))); \ for (guint i = 0; i < n_items; i++) \ { \ g_autoptr (BzEntry) entry = NULL; \ \ entry = g_list_model_get_item (G_LIST_MODEL ((_model)), i); \ bz_entry_hold (entry); \ } \ } HOLD_MODEL (priv->installs); HOLD_MODEL (priv->updates); HOLD_MODEL (priv->removals); #undef HOLD_MODEL } void bz_transaction_release (BzTransaction *self) { BzTransactionPrivate *priv = NULL; g_return_if_fail (BZ_IS_TRANSACTION (self)); priv = bz_transaction_get_instance_private (self); #define RELEASE_MODEL(_model) \ if ((_model) != NULL) \ { \ guint n_items = 0; \ \ n_items = g_list_model_get_n_items (G_LIST_MODEL ((_model))); \ for (guint i = 0; i < n_items; i++) \ { \ g_autoptr (BzEntry) entry = NULL; \ \ entry = g_list_model_get_item (G_LIST_MODEL ((_model)), i); \ bz_entry_release (entry); \ } \ } RELEASE_MODEL (priv->installs); RELEASE_MODEL (priv->updates); RELEASE_MODEL (priv->removals); #undef RELEASE_MODEL } void bz_transaction_add_task (BzTransaction *self, BzBackendTransactionOpPayload *payload) { BzTransactionPrivate *priv = NULL; g_autoptr (BzTransactionTask) task = NULL; BzEntry *entry = NULL; g_autoptr (BzTransactionEntryTracker) tracker = NULL; gboolean result = FALSE; g_return_if_fail (BZ_IS_TRANSACTION (self)); g_return_if_fail (BZ_IS_BACKEND_TRANSACTION_OP_PAYLOAD (payload)); priv = bz_transaction_get_instance_private (self); task = bz_transaction_task_new (); bz_transaction_task_set_op (task, payload); g_list_store_append (priv->current_tasks, task); entry = bz_backend_transaction_op_payload_get_entry (payload); result = find_and_maybe_transfer ( priv->trackers, NULL, entry, (GEqualFuncFull) find_entry_eq_func, (gpointer *) &tracker); if (result) { GListModel *current_ops = NULL; if (bz_transaction_entry_tracker_get_kind (tracker) == BZ_TRANSACTION_ENTRY_KIND_UPDATE) bz_backend_transaction_op_payload_set_download_size (payload, (guint64) -1); current_ops = bz_transaction_entry_tracker_get_current_ops (tracker); g_list_store_append (G_LIST_STORE (current_ops), task); g_object_notify (G_OBJECT (tracker), "current-ops"); } } void bz_transaction_update_task (BzTransaction *self, BzBackendTransactionOpProgressPayload *payload) { BzTransactionPrivate *priv = NULL; BzBackendTransactionOpPayload *op = NULL; g_autoptr (BzTransactionTask) task = NULL; gboolean result = FALSE; g_return_if_fail (BZ_IS_TRANSACTION (self)); g_return_if_fail (BZ_IS_BACKEND_TRANSACTION_OP_PROGRESS_PAYLOAD (payload)); priv = bz_transaction_get_instance_private (self); op = bz_backend_transaction_op_progress_payload_get_op (payload); result = find_and_maybe_transfer ( priv->current_tasks, NULL, op, (GEqualFuncFull) find_payload_eq_func, (gpointer *) &task); if (result) bz_transaction_task_set_last_progress (task, payload); tracker_update (priv, op, payload, FALSE, FALSE); } void bz_transaction_finish_task (BzTransaction *self, BzBackendTransactionOpPayload *payload) { BzTransactionPrivate *priv = NULL; g_return_if_fail (BZ_IS_TRANSACTION (self)); g_return_if_fail (BZ_IS_BACKEND_TRANSACTION_OP_PAYLOAD (payload)); priv = bz_transaction_get_instance_private (self); find_and_maybe_transfer ( priv->current_tasks, priv->finished_tasks, payload, (GEqualFuncFull) find_payload_eq_func, NULL); tracker_update (priv, payload, NULL, TRUE, FALSE); } void bz_transaction_error_out_task (BzTransaction *self, BzBackendTransactionOpPayload *payload, const char *message) { BzTransactionPrivate *priv = NULL; gboolean result = FALSE; g_autoptr (BzTransactionTask) task = NULL; g_return_if_fail (BZ_IS_TRANSACTION (self)); g_return_if_fail (BZ_IS_BACKEND_TRANSACTION_OP_PAYLOAD (payload)); g_return_if_fail (message != NULL); priv = bz_transaction_get_instance_private (self); result = find_and_maybe_transfer ( priv->current_tasks, priv->finished_tasks, payload, (GEqualFuncFull) find_payload_eq_func, (gpointer *) &task); if (result) bz_transaction_task_set_error (task, message); tracker_update (priv, payload, NULL, TRUE, TRUE); } static void finish (BzTransactionPrivate *priv) { guint n_trackers = 0; n_trackers = g_list_model_get_n_items (G_LIST_MODEL (priv->trackers)); for (guint i = 0; i < n_trackers; i++) { g_autoptr (BzTransactionEntryTracker) tracker = NULL; tracker = g_list_model_get_item (G_LIST_MODEL (priv->trackers), i); bz_transaction_entry_tracker_set_active (tracker, FALSE); bz_transaction_entry_tracker_set_pending (tracker, FALSE); if (bz_transaction_entry_tracker_get_status (tracker) == BZ_TRANSACTION_ENTRY_STATUS_CANCELLED) continue; bz_transaction_entry_tracker_set_status ( tracker, priv->success ? BZ_TRANSACTION_ENTRY_STATUS_DONE : BZ_TRANSACTION_ENTRY_STATUS_CANCELLED); } } static gboolean find_payload_eq_func (BzTransactionTask *task, gpointer none, BzBackendTransactionOpPayload *payload) { return bz_transaction_task_get_op (task) == payload; } static gboolean find_entry_eq_func (BzTransactionEntryTracker *tracker, gpointer none, BzEntry *entry) { return bz_transaction_entry_tracker_get_entry (tracker) == entry; } /* This kinda sucks */ static gboolean find_and_maybe_transfer (GListStore *from, GListStore *to, gpointer lookup, GEqualFuncFull eql, gpointer *out) { guint op_pos = 0; gboolean found = FALSE; g_autoptr (GObject) object = NULL; found = g_list_store_find_with_equal_func_full (from, NULL, eql, lookup, &op_pos); if (!found) return FALSE; object = g_list_model_get_item (G_LIST_MODEL (from), op_pos); if (to != NULL) { /* transfer if `to` is provided */ g_list_store_remove (from, op_pos); g_list_store_append (to, object); } if (out != NULL) *out = g_steal_pointer (&object); return TRUE; } static void tracker_update (BzTransactionPrivate *priv, BzBackendTransactionOpPayload *payload, BzBackendTransactionOpProgressPayload *progress_payload, gboolean transfer, gboolean set_done) { BzEntry *entry = NULL; g_autoptr (BzTransactionEntryTracker) tracker = NULL; gboolean result = FALSE; entry = bz_backend_transaction_op_payload_get_entry (payload); result = find_and_maybe_transfer ( priv->trackers, NULL, entry, (GEqualFuncFull) find_entry_eq_func, (gpointer *) &tracker); if (result) { BzTransactionEntryStatus existing_status = 0; existing_status = bz_transaction_entry_tracker_get_status (tracker); if (transfer) { GListModel *from = NULL; GListModel *to = NULL; if (set_done) { bz_transaction_entry_tracker_set_active (tracker, FALSE); bz_transaction_entry_tracker_set_status (tracker, BZ_TRANSACTION_ENTRY_STATUS_DONE); bz_transaction_entry_tracker_set_pending (tracker, FALSE); } from = bz_transaction_entry_tracker_get_current_ops (tracker); to = bz_transaction_entry_tracker_get_finished_ops (tracker); result = find_and_maybe_transfer ( G_LIST_STORE (from), G_LIST_STORE (to), payload, (GEqualFuncFull) find_payload_eq_func, NULL); g_object_notify (G_OBJECT (tracker), "current-ops"); g_object_notify (G_OBJECT (tracker), "finished-ops"); } else { if (progress_payload != NULL) { double progress = 0.0; double scaled = 0.0; gboolean estimating = FALSE; progress = bz_backend_transaction_op_progress_payload_get_total_progress (progress_payload); scaled = progress >= 1.0 ? 1.0 : progress * 0.9; estimating = bz_backend_transaction_op_progress_payload_get_is_estimating (progress_payload); g_object_set (tracker, "progress", scaled, "pending", estimating && progress == 0.0, NULL); } bz_transaction_entry_tracker_set_active (tracker, TRUE); if (existing_status != BZ_TRANSACTION_ENTRY_STATUS_CANCELLED) bz_transaction_entry_tracker_set_status (tracker, BZ_TRANSACTION_ENTRY_STATUS_ONGOING); } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-transaction.h������������������������������������������������������0000664�0000000�0000000�00000004745�15240005042�0021246�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-transaction.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry.h" #include "bz-transaction-entry-tracker.h" #include "bz-transaction-task.h" G_BEGIN_DECLS #define BZ_TYPE_TRANSACTION (bz_transaction_get_type ()) G_DECLARE_DERIVABLE_TYPE (BzTransaction, bz_transaction, BZ, TRANSACTION, GObject) struct _BzTransactionClass { GObjectClass parent_class; }; BzTransaction * bz_transaction_new_full (BzEntry **installs, guint n_installs, BzEntry **updates, guint n_updates, BzEntry **removals, guint n_removals); BzTransaction * bz_transaction_new_merged (BzTransaction **transactions, guint n_transactions); GListModel * bz_transaction_get_installs (BzTransaction *self); GListModel * bz_transaction_get_updates (BzTransaction *self); GListModel * bz_transaction_get_removals (BzTransaction *self); GListModel * bz_transaction_get_trackers (BzTransaction *self); void bz_transaction_hold (BzTransaction *self); void bz_transaction_release (BzTransaction *self); void bz_transaction_add_task (BzTransaction *self, BzBackendTransactionOpPayload *payload); void bz_transaction_update_task (BzTransaction *self, BzBackendTransactionOpProgressPayload *payload); void bz_transaction_finish_task (BzTransaction *self, BzBackendTransactionOpPayload *payload); void bz_transaction_error_out_task (BzTransaction *self, BzBackendTransactionOpPayload *payload, const char *message); G_END_DECLS ���������������������������bazaar-org-bazaar-48f93f4/src/bz-updates-card.blp���������������������������������������������������0000664�0000000�0000000�00000001527�15240005042�0021616�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzUpdatesCard: Adw.Bin { child: ListBox { selection-mode: none; margin-start: 4; margin-end: 4; margin-bottom: 4; styles [ "boxed-list", ] Adw.ExpanderRow expander_row { title: bind $format_update_count(template.state as <$BzStateInfo>.available-updates) as <string>; notify::expanded => $on_expander_expanded_cb(); [suffix] Box { height-request: 60; Button { label: _("_Update All"); use-underline: true; valign: center; clicked => $update_all_cb(); styles [ "suggested-action", ] } } } }; } FilterListModel runtimes_filter_model { filter: CustomFilter runtimes_filter {}; model: bind template.state as <$BzStateInfo>.available-updates; }�������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-updates-card.c�����������������������������������������������������0000664�0000000�0000000�00000036132�15240005042�0021263�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-updates-card.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-entry.h" #include "bz-release.h" #include "bz-releases-list.h" #include "template-callbacks.h" #include "bz-updates-card.h" struct _BzUpdatesCard { AdwBin parent_instance; BzStateInfo *state; /* Template widgets */ AdwExpanderRow *expander_row; GtkCustomFilter *runtimes_filter; GtkFilterListModel *runtimes_filter_model; GPtrArray *app_rows; GtkWidget *runtimes_row; gboolean has_closed; }; G_DEFINE_FINAL_TYPE (BzUpdatesCard, bz_updates_card, ADW_TYPE_BIN) enum { PROP_0, PROP_STATE, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; enum { SIGNAL_UPDATE, LAST_SIGNAL, }; static guint signals[LAST_SIGNAL]; static char *format_update_count (gpointer object, GListModel *updates); static void update_all_cb (GtkButton *button, BzUpdatesCard *self); static void update_runtimes_cb (GtkButton *button, BzUpdatesCard *self); static void on_expander_expanded_cb (AdwExpanderRow *row, GParamSpec *pspec, BzUpdatesCard *self); static gboolean filter_runtimes (BzEntry *entry, BzUpdatesCard *self); static void on_available_updates_changed (BzUpdatesCard *self, GParamSpec *pspec, BzStateInfo *state); static void on_runtimes_changed (GtkFilterListModel *model, guint position, guint removed, guint added, BzUpdatesCard *self); static void on_update_single_cb (GtkButton *button, BzEntry *entry) { BzUpdatesCard *self = NULL; g_autoptr (GListStore) store = NULL; self = BZ_UPDATES_CARD (gtk_widget_get_ancestor (GTK_WIDGET (button), BZ_TYPE_UPDATES_CARD)); store = g_list_store_new (BZ_TYPE_ENTRY); g_list_store_append (store, entry); g_signal_emit (self, signals[SIGNAL_UPDATE], 0, store); } static void on_version_history_cb (GtkButton *button, BzEntry *entry) { GtkRoot *root = NULL; g_autoptr (GListModel) history = NULL; GtkWidget *dialog = NULL; root = gtk_widget_get_root (GTK_WIDGET (button)); if (root == NULL) return; g_object_get (entry, "version-history", &history, NULL); dialog = bz_releases_dialog_new (history, NULL); adw_dialog_present (ADW_DIALOG (dialog), GTK_WIDGET (root)); } static GtkWidget * build_app_row (BzEntry *entry, BzUpdatesCard *self) { AdwActionRow *row = NULL; GtkWidget *icon = NULL; GtkWidget *history_button = NULL; GtkWidget *update_button = NULL; GdkPaintable *paintable = NULL; g_autoptr (GListModel) history = NULL; g_autofree char *installed_ver = NULL; const char *new_ver = NULL; // This will probably the same as the installed version if using cache... g_autofree char *subtitle = NULL; row = ADW_ACTION_ROW (adw_action_row_new ()); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), bz_entry_get_title (entry)); g_object_get (entry, "icon-paintable", &paintable, NULL); icon = paintable != NULL ? gtk_image_new_from_paintable (paintable) : gtk_image_new_from_icon_name ("application-x-executable"); g_clear_object (&paintable); gtk_image_set_pixel_size (GTK_IMAGE (icon), 48); gtk_widget_set_size_request (icon, 48, 48); gtk_widget_set_margin_top (icon, 6); gtk_widget_set_margin_bottom (icon, 6); gtk_widget_set_valign (icon, GTK_ALIGN_CENTER); gtk_widget_add_css_class (icon, "icon-dropshadow"); adw_action_row_add_prefix (row, icon); g_object_get (entry, "version-history", &history, "installed-version", &installed_ver, NULL); if (history != NULL && g_list_model_get_n_items (history) > 0 && installed_ver != NULL) { g_autoptr (BzRelease) first = g_list_model_get_item (history, 0); new_ver = bz_release_get_version (first); if (new_ver != NULL) { if (g_strcmp0 (installed_ver, new_ver) != 0) subtitle = g_strdup_printf ("%s → %s", installed_ver, new_ver); else subtitle = g_strdup (new_ver); adw_action_row_set_subtitle (row, subtitle); } } history_button = gtk_button_new_from_icon_name ("view-list-bullet-symbolic"); gtk_widget_set_valign (history_button, GTK_ALIGN_CENTER); gtk_widget_set_tooltip_text (history_button, _ ("Version History")); gtk_widget_add_css_class (history_button, "flat"); gtk_widget_set_visible (history_button, history != NULL && g_list_model_get_n_items (history) > 0); g_signal_connect_data (history_button, "clicked", G_CALLBACK (on_version_history_cb), g_object_ref (entry), (GClosureNotify) g_object_unref, 0); adw_action_row_add_suffix (row, history_button); update_button = gtk_button_new_with_label (_ ("Update")); gtk_widget_set_valign (update_button, GTK_ALIGN_CENTER); g_signal_connect_data (update_button, "clicked", G_CALLBACK (on_update_single_cb), g_object_ref (entry), (GClosureNotify) g_object_unref, 0); adw_action_row_add_suffix (row, update_button); return GTK_WIDGET (row); } static GtkWidget * build_runtimes_row (BzUpdatesCard *self) { AdwActionRow *row = NULL; GtkWidget *update_button = NULL; row = ADW_ACTION_ROW (adw_action_row_new ()); gtk_widget_set_visible (GTK_WIDGET (row), FALSE); update_button = gtk_button_new_with_label (_ ("Update")); gtk_widget_set_valign (update_button, GTK_ALIGN_CENTER); g_signal_connect (update_button, "clicked", G_CALLBACK (update_runtimes_cb), self); adw_action_row_add_suffix (row, update_button); return GTK_WIDGET (row); } static void on_runtimes_changed (GtkFilterListModel *model, guint position, guint removed, guint added, BzUpdatesCard *self) { guint n_items = 0; g_autofree char *title = NULL; if (self->runtimes_row == NULL) return; n_items = g_list_model_get_n_items (G_LIST_MODEL (model)); gtk_widget_set_visible (self->runtimes_row, n_items > 0); if (n_items == 0) return; title = g_strdup_printf (ngettext ("%u Runtime Update", "%u Runtime Updates", n_items), n_items); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (self->runtimes_row), title); } static void repopulate_expander_row (BzUpdatesCard *self) { GListModel *updates = NULL; guint n_items = 0; guint i = 0; for (i = 0; i < self->app_rows->len; i++) adw_expander_row_remove (self->expander_row, g_ptr_array_index (self->app_rows, i)); g_ptr_array_set_size (self->app_rows, 0); if (self->runtimes_row != NULL) { adw_expander_row_remove (self->expander_row, self->runtimes_row); self->runtimes_row = NULL; } if (self->state == NULL) return; updates = bz_state_info_get_available_updates (self->state); if (updates == NULL) return; n_items = g_list_model_get_n_items (updates); for (i = 0; i < n_items; i++) { g_autoptr (BzEntry) entry = NULL; GtkWidget *row = NULL; entry = g_list_model_get_item (updates, i); if (entry == NULL || !BZ_IS_ENTRY (entry)) continue; if (!bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_APPLICATION)) continue; row = build_app_row (entry, self); adw_expander_row_add_row (self->expander_row, row); g_ptr_array_add (self->app_rows, row); } self->runtimes_row = build_runtimes_row (self); adw_expander_row_add_row (self->expander_row, self->runtimes_row); on_runtimes_changed (self->runtimes_filter_model, 0, 0, 0, self); if (!self->has_closed) adw_expander_row_set_expanded (self->expander_row, n_items <= 3); } static void on_available_updates_changed (BzUpdatesCard *self, GParamSpec *pspec, BzStateInfo *state) { gtk_filter_changed (GTK_FILTER (self->runtimes_filter), GTK_FILTER_CHANGE_DIFFERENT); repopulate_expander_row (self); } static void bz_updates_card_dispose (GObject *object) { BzUpdatesCard *self = BZ_UPDATES_CARD (object); g_clear_object (&self->state); g_clear_pointer (&self->app_rows, g_ptr_array_unref); gtk_widget_dispose_template (GTK_WIDGET (self), BZ_TYPE_UPDATES_CARD); G_OBJECT_CLASS (bz_updates_card_parent_class)->dispose (object); } static void bz_updates_card_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzUpdatesCard *self = BZ_UPDATES_CARD (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, bz_updates_card_get_state (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_updates_card_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzUpdatesCard *self = BZ_UPDATES_CARD (object); switch (prop_id) { case PROP_STATE: bz_updates_card_set_state (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_updates_card_class_init (BzUpdatesCardClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_updates_card_dispose; object_class->get_property = bz_updates_card_get_property; object_class->set_property = bz_updates_card_set_property; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); signals[SIGNAL_UPDATE] = g_signal_new ( "update", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_LIST_MODEL); g_signal_set_va_marshaller ( signals[SIGNAL_UPDATE], G_TYPE_FROM_CLASS (klass), g_cclosure_marshal_VOID__OBJECTv); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-updates-card.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzUpdatesCard, expander_row); gtk_widget_class_bind_template_child (widget_class, BzUpdatesCard, runtimes_filter); gtk_widget_class_bind_template_child (widget_class, BzUpdatesCard, runtimes_filter_model); gtk_widget_class_bind_template_callback (widget_class, format_update_count); gtk_widget_class_bind_template_callback (widget_class, update_all_cb); gtk_widget_class_bind_template_callback (widget_class, on_expander_expanded_cb); } static void bz_updates_card_init (BzUpdatesCard *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->app_rows = g_ptr_array_new (); gtk_custom_filter_set_filter_func ( self->runtimes_filter, (GtkCustomFilterFunc) filter_runtimes, self, NULL); g_signal_connect (self->runtimes_filter_model, "items-changed", G_CALLBACK (on_runtimes_changed), self); } GtkWidget * bz_updates_card_new (void) { return g_object_new (BZ_TYPE_UPDATES_CARD, NULL); } void bz_updates_card_set_state (BzUpdatesCard *self, BzStateInfo *state) { g_return_if_fail (BZ_IS_UPDATES_CARD (self)); g_return_if_fail (state == NULL || BZ_IS_STATE_INFO (state)); g_clear_object (&self->state); if (state != NULL) { self->state = g_object_ref (state); g_signal_connect_object (state, "notify::available-updates", G_CALLBACK (on_available_updates_changed), self, G_CONNECT_SWAPPED); } gtk_filter_changed (GTK_FILTER (self->runtimes_filter), GTK_FILTER_CHANGE_DIFFERENT); repopulate_expander_row (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_STATE]); } BzStateInfo * bz_updates_card_get_state (BzUpdatesCard *self) { g_return_val_if_fail (BZ_IS_UPDATES_CARD (self), NULL); return self->state; } static char * format_update_count (gpointer object, GListModel *updates) { guint n_updates = 0; if (updates == NULL) return g_strdup (""); n_updates = g_list_model_get_n_items (updates); return g_strdup_printf (ngettext ("%u Available Update", "%u Available Updates", n_updates), n_updates); } static void update_all_cb (GtkButton *button, BzUpdatesCard *self) { GListModel *updates = NULL; g_return_if_fail (GTK_IS_BUTTON (button)); g_return_if_fail (BZ_IS_UPDATES_CARD (self)); if (self->state == NULL) return; updates = bz_state_info_get_available_updates (self->state); if (updates == NULL) return; g_signal_emit (self, signals[SIGNAL_UPDATE], 0, updates); } static void update_runtimes_cb (GtkButton *button, BzUpdatesCard *self) { GListModel *runtimes = NULL; g_autoptr (GListStore) store = NULL; guint n_items = 0; runtimes = G_LIST_MODEL (self->runtimes_filter_model); n_items = g_list_model_get_n_items (runtimes); if (n_items == 0) return; store = g_list_store_new (BZ_TYPE_ENTRY); for (guint i = 0; i < n_items; i++) { g_autoptr (BzEntry) entry = g_list_model_get_item (runtimes, i); if (entry != NULL) g_list_store_append (store, entry); } g_signal_emit (self, signals[SIGNAL_UPDATE], 0, store); } static void on_expander_expanded_cb (AdwExpanderRow *row, GParamSpec *pspec, BzUpdatesCard *self) { if (!adw_expander_row_get_expanded (row)) self->has_closed = TRUE; } static gboolean filter_runtimes (BzEntry *entry, BzUpdatesCard *self) { g_return_val_if_fail (BZ_IS_ENTRY (entry), FALSE); return bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_RUNTIME) || bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_ADDON); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-updates-card.h�����������������������������������������������������0000664�0000000�0000000�00000002262�15240005042�0021265�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-updates-card.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-state-info.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_UPDATES_CARD (bz_updates_card_get_type ()) G_DECLARE_FINAL_TYPE (BzUpdatesCard, bz_updates_card, BZ, UPDATES_CARD, AdwBin) GtkWidget * bz_updates_card_new (void); void bz_updates_card_set_state (BzUpdatesCard *self, BzStateInfo *state); BzStateInfo * bz_updates_card_get_state (BzUpdatesCard *self); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-url.txt������������������������������������������������������������0000664�0000000�0000000�00000000222�15240005042�0020075�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=url parent-prefix=g parent-name=object author=AUTOGEN property=id char G_TYPE_STRING string property=url char G_TYPE_STRING string ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-user-data-page.blp�������������������������������������������������0000664�0000000�0000000�00000003252�15240005042�0022036�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzUserDataPage: Adw.NavigationPage { title: _("Manage Leftover User Data"); Adw.ToolbarView { [top] Adw.HeaderBar {} content: Adw.ViewStack stack { enable-transitions: true; transition-duration: 400; Adw.ViewStackPage { name: "loading"; child: Adw.Spinner { halign: fill; valign: center; width-request: 64; height-request: 64; margin-bottom: 18; }; } Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: "user-trash-symbolic"; title: _("No Leftover User Data Found"); description: _("Personal data left behind by apps that were removed will show up here"); }; } Adw.ViewStackPage { name: "content"; child: ScrolledWindow { hscrollbar-policy: never; child: Adw.ClampScrollable { maximum-size: 650; child: ListView list_view { styles [ "navigation-sidebar", "user-data-list-view", ] overflow: visible; model: NoSelection { model: bind template.model; }; factory: BuilderListItemFactory { template ListItem { activatable: false; selectable: false; focusable: false; child: $BzUserDataTile { group: bind template.item as <$BzEntryGroup>; }; } }; }; }; }; } }; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-user-data-page.c���������������������������������������������������0000664�0000000�0000000�00000025436�15240005042�0021513�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-user-data-page.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-application-map-factory.h" #include "bz-user-data-page.h" #include "bz-user-data-tile.h" #include "bz-window.h" #include "env.h" #include "io.h" #include "util.h" struct _BzUserDataPage { AdwNavigationPage parent_instance; BzStateInfo *state; GListModel *model; AdwToast *toast; guint toast_count; /* Template widgets */ AdwViewStack *stack; }; G_DEFINE_FINAL_TYPE (BzUserDataPage, bz_user_data_page, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_STATE, PROP_MODEL, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static DexFuture * fetch_user_data_fiber (GWeakRef *wr); static void items_changed (BzUserDataPage *self, guint position, guint removed, guint added, GListModel *model); static void toast_dismissed_cb (BzUserDataPage *self, AdwToast *toast); static void set_page (BzUserDataPage *self); static void bz_user_data_page_dispose (GObject *object) { BzUserDataPage *self = BZ_USER_DATA_PAGE (object); if (self->model != NULL) g_signal_handlers_disconnect_by_func (self->model, items_changed, self); g_clear_object (&self->model); g_clear_object (&self->state); G_OBJECT_CLASS (bz_user_data_page_parent_class)->dispose (object); } static void bz_user_data_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzUserDataPage *self = BZ_USER_DATA_PAGE (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, self->state); break; case PROP_MODEL: g_value_set_object (value, self->model); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_user_data_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzUserDataPage *self = BZ_USER_DATA_PAGE (object); switch (prop_id) { case PROP_STATE: self->state = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_user_data_page_constructed (GObject *object) { BzUserDataPage *self = BZ_USER_DATA_PAGE (object); g_autoptr (DexFuture) future = NULL; G_OBJECT_CLASS (bz_user_data_page_parent_class)->constructed (object); future = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) fetch_user_data_fiber, bz_track_weak (self), bz_weak_release); dex_future_disown (g_steal_pointer (&future)); } static gboolean is_zero (gpointer object, int value) { return value == 0; } static void bz_user_data_page_class_init (BzUserDataPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_user_data_page_dispose; object_class->constructed = bz_user_data_page_constructed; object_class->get_property = bz_user_data_page_get_property; object_class->set_property = bz_user_data_page_set_property; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_USER_DATA_TILE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-user-data-page.ui"); gtk_widget_class_bind_template_child (widget_class, BzUserDataPage, stack); gtk_widget_class_bind_template_callback (widget_class, is_zero); } static void bz_user_data_page_init (BzUserDataPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_user_data_page_new (BzStateInfo *state) { return g_object_new (BZ_TYPE_USER_DATA_PAGE, "state", state, NULL); } void bz_user_data_page_remove_group (BzUserDataPage *self, BzEntryGroup *group) { guint n_items, i; g_autofree char *title = NULL; g_autofree char *message = NULL; if (self->model == NULL) return; title = g_strdup (bz_entry_group_get_title (group)); n_items = g_list_model_get_n_items (self->model); for (i = 0; i < n_items; i++) { g_autoptr (BzEntryGroup) item = g_list_model_get_item (self->model, i); if (item == group) { g_list_store_remove (G_LIST_STORE (self->model), i); break; } } self->toast_count++; message = self->toast_count > 1 ? g_strdup_printf (ngettext ("Trashed User Data for %u App", "Trashed User Data for %u Apps", self->toast_count), self->toast_count) : g_strdup_printf (_ ("Trashed User Data for %s"), title); if (self->toast == NULL) { self->toast = adw_toast_new (message); g_object_add_weak_pointer (G_OBJECT (self->toast), (gpointer *) &self->toast); g_signal_connect_swapped (self->toast, "dismissed", G_CALLBACK (toast_dismissed_cb), self); bz_window_add_toast ( BZ_WINDOW (gtk_widget_get_root (GTK_WIDGET (self))), self->toast); } else adw_toast_set_title (self->toast, message); } static void items_changed (BzUserDataPage *self, guint position, guint removed, guint added, GListModel *model) { set_page (self); } static void toast_dismissed_cb (BzUserDataPage *self, AdwToast *toast) { self->toast_count = 0; } static void set_page (BzUserDataPage *self) { if (self->model != NULL && g_list_model_get_n_items (G_LIST_MODEL (self->model)) > 0) adw_view_stack_set_visible_child_name (self->stack, "content"); else adw_view_stack_set_visible_child_name (self->stack, "empty"); } static int compare_entry_groups_by_title (BzEntryGroup *group_a, BzEntryGroup *group_b) { const char *title_a = bz_entry_group_get_title (group_a); const char *title_b = bz_entry_group_get_title (group_b); return g_utf8_collate (title_a, title_b); } static DexFuture * fetch_user_data_fiber (GWeakRef *wr) { g_autoptr (BzUserDataPage) self = NULL; g_autoptr (GHashTable) ids_hash = NULL; g_autoptr (GError) local_error = NULL; GHashTableIter iter = { 0 }; g_autoptr (GtkStringList) id_list = NULL; BzApplicationMapFactory *factory = NULL; g_autoptr (GListStore) sorted_store = NULL; GListModel *installed_groups = NULL; g_autoptr (GHashTable) installed_ids = NULL; const char *own_id = NULL; guint n_items = 0; self = g_weak_ref_get (wr); if (self == NULL) return dex_future_new_reject (G_IO_ERROR, G_IO_ERROR_CANCELLED, "Page destroyed"); own_id = g_application_get_application_id (g_application_get_default ()); installed_groups = bz_state_info_get_all_installed_entry_groups (self->state); installed_ids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); if (installed_groups != NULL) { guint n_installed = g_list_model_get_n_items (installed_groups); for (guint i = 0; i < n_installed; i++) { g_autoptr (BzEntryGroup) group = NULL; const char *id = NULL; group = g_list_model_get_item (installed_groups, i); id = bz_entry_group_get_id (group); if (id != NULL) g_hash_table_replace (installed_ids, g_strdup (id), NULL); } } ids_hash = dex_await_boxed ( bz_get_user_data_ids_dex (), &local_error); if (ids_hash == NULL) { g_warning ("Failed to enumerate user data directories: %s", local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } id_list = gtk_string_list_new (NULL); g_hash_table_iter_init (&iter, ids_hash); for (;;) { char *app_id = NULL; if (!g_hash_table_iter_next (&iter, (gpointer *) &app_id, NULL)) break; if (!g_hash_table_contains (installed_ids, app_id) && g_strcmp0 (app_id, own_id) != 0) gtk_string_list_append (id_list, app_id); } factory = bz_state_info_get_application_factory (self->state); sorted_store = g_list_store_new (BZ_TYPE_ENTRY_GROUP); n_items = g_list_model_get_n_items (G_LIST_MODEL (id_list)); for (guint i = 0; i < n_items; i++) { GtkStringObject *str_obj = NULL; g_autofree char *id_copy = NULL; g_autoptr (BzEntryGroup) group = NULL; str_obj = g_list_model_get_item (G_LIST_MODEL (id_list), i); id_copy = g_strdup (gtk_string_object_get_string (str_obj)); group = bz_application_map_factory_convert_one (factory, str_obj); if (group == NULL) group = bz_entry_group_new_manual (id_copy, id_copy, NULL); g_list_store_append (sorted_store, group); } g_list_store_sort (sorted_store, (GCompareDataFunc) compare_entry_groups_by_title, NULL); if (self->model != NULL) g_signal_handlers_disconnect_by_func (self->model, items_changed, self); g_clear_object (&self->model); self->model = G_LIST_MODEL (g_steal_pointer (&sorted_store)); g_signal_connect_swapped (self->model, "items-changed", G_CALLBACK (items_changed), self); set_page (self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODEL]); return dex_future_new_true (); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-user-data-page.h���������������������������������������������������0000664�0000000�0000000�00000002263�15240005042�0021511�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-user-data-page.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-state-info.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_USER_DATA_PAGE (bz_user_data_page_get_type ()) G_DECLARE_FINAL_TYPE (BzUserDataPage, bz_user_data_page, BZ, USER_DATA_PAGE, AdwNavigationPage) GtkWidget * bz_user_data_page_new (BzStateInfo *state); void bz_user_data_page_remove_group (BzUserDataPage *self, BzEntryGroup *group); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-user-data-tile.blp�������������������������������������������������0000664�0000000�0000000�00000005257�15240005042�0022066�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; template $BzUserDataTile: Adw.Bin { child: Revealer revealer { transition-type: slide_down; reveal-child: true; child: Adw.Bin { accessibility { labelled-by: title_label; described-by: description_label; } margin-bottom: 5; margin-start: 4; margin-end: 4; margin-top: 5; styles [ "card", ] child: Box { orientation: horizontal; spacing: 10; Picture icon_picture { margin-start: 10; margin-top: 10; margin-bottom: 10; height-request: 64; width-request: 64; paintable: bind template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable; visible: bind try {$invert_boolean($is_null(template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable) as <bool>) as <bool>, false}; styles [ "icon-dropshadow", ] } Image fallback_icon { margin-start: 10; margin-top: 10; margin-bottom: 10; height-request: 64; width-request: 64; pixel-size: 64; icon-name: "application-x-executable"; visible: bind icon_picture.visible inverted; styles [ "icon-dropshadow", ] } Box { orientation: vertical; valign: center; spacing: 4; Label title_label { xalign: 0.0; ellipsize: end; single-line-mode: true; has-tooltip: true; tooltip-text: bind template.group as <$BzEntryGroup>.id; label: bind template.group as <$BzEntryGroup>.title; } Label description_label { halign: start; label: bind $format_size(template.group as <$BzEntryGroup>.user-data-size as <uint64>) as <string>; styles [ "caption-heading", ] } } Box { hexpand: true; valign: center; halign: end; spacing: 8; margin-end: 16; Button { styles [ "flat", ] tooltip-text: _("Open User Data Folder"); icon-name: "folder-open-symbolic"; clicked => $folder_cb() swapped; } Button { styles [ "flat", "destructive-action", ] tooltip-text: _("Trash User Data"); icon-name: "user-trash-symbolic"; clicked => $remove_cb() swapped; } } }; }; }; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-user-data-tile.c���������������������������������������������������0000664�0000000�0000000�00000015413�15240005042�0021526�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-user-data-tile.c * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-entry-group.h" #include "bz-state-info.h" #include "bz-user-data-page.h" #include "bz-user-data-tile.h" #include "env.h" #include "error.h" #include "util.h" struct _BzUserDataTile { BzListTile parent_instance; BzEntryGroup *group; GtkRevealer *revealer; }; G_DEFINE_FINAL_TYPE (BzUserDataTile, bz_user_data_tile, ADW_TYPE_BIN) enum { PROP_0, PROP_GROUP, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_user_data_tile_dispose (GObject *object) { BzUserDataTile *self = BZ_USER_DATA_TILE (object); g_clear_object (&self->group); G_OBJECT_CLASS (bz_user_data_tile_parent_class)->dispose (object); } static void bz_user_data_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzUserDataTile *self = BZ_USER_DATA_TILE (object); switch (prop_id) { case PROP_GROUP: g_value_set_object (value, bz_user_data_tile_get_group (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_user_data_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzUserDataTile *self = BZ_USER_DATA_TILE (object); switch (prop_id) { case PROP_GROUP: bz_user_data_tile_set_group (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_zero (gpointer object, int value) { return value == 0; } static char * format_size (gpointer object, guint64 value) { return g_format_size (value); } static void revealed_cb (GtkRevealer *revealer, GParamSpec *pspec, BzUserDataTile *self) { BzUserDataPage *page; if (gtk_revealer_get_child_revealed (revealer)) return; page = BZ_USER_DATA_PAGE ( gtk_widget_get_ancestor (GTK_WIDGET (self), BZ_TYPE_USER_DATA_PAGE)); if (page != NULL) bz_user_data_page_remove_group (page, self->group); g_signal_handlers_disconnect_by_func (revealer, revealed_cb, self); } static DexFuture * reap_user_data_done (DexFuture *future, GWeakRef *wr) { g_autoptr (BzUserDataTile) self = NULL; g_autoptr (GError) local_error = NULL; dex_future_get_value (future, &local_error); self = g_weak_ref_get (wr); if (self == NULL) return dex_future_new_true (); if (local_error != NULL) bz_show_error_for_widget ( GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self))), _ ("Failed to Remove User Data"), local_error->message); else { g_signal_connect (self->revealer, "notify::child-revealed", G_CALLBACK (revealed_cb), self); gtk_revealer_set_reveal_child (self->revealer, FALSE); } return dex_future_new_true (); } static void folder_cb (BzUserDataTile *self, GtkButton *button) { gtk_widget_activate_action (GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self))), "window.open-user-data-folder", "s", bz_entry_group_get_id (self->group)); } static void remove_cb (BzUserDataTile *self, GtkButton *button) { g_autoptr (DexFuture) future = NULL; if (self->group == NULL) return; future = bz_entry_group_reap_user_data (self->group); if (future != NULL) dex_future_disown (dex_future_finally ( dex_ref (future), (DexFutureCallback) reap_user_data_done, bz_track_weak (self), bz_weak_release)); } static void bz_user_data_tile_class_init (BzUserDataTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_user_data_tile_dispose; object_class->get_property = bz_user_data_tile_get_property; object_class->set_property = bz_user_data_tile_set_property; props[PROP_GROUP] = g_param_spec_object ( "group", NULL, NULL, BZ_TYPE_ENTRY_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_LIST_TILE); g_type_ensure (BZ_TYPE_ENTRY_GROUP); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-user-data-tile.ui"); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, format_size); gtk_widget_class_bind_template_callback (widget_class, folder_cb); gtk_widget_class_bind_template_callback (widget_class, remove_cb); gtk_widget_class_bind_template_child (widget_class, BzUserDataTile, revealer); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static void bz_user_data_tile_init (BzUserDataTile *self) { gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget * bz_user_data_tile_new (void) { return g_object_new (BZ_TYPE_USER_DATA_TILE, NULL); } void bz_user_data_tile_set_group (BzUserDataTile *self, BzEntryGroup *group) { g_return_if_fail (BZ_IS_USER_DATA_TILE (self)); g_return_if_fail (group == NULL || BZ_IS_ENTRY_GROUP (group)); g_clear_object (&self->group); if (group != NULL) self->group = g_object_ref (group); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]); } BzEntryGroup * bz_user_data_tile_get_group (BzUserDataTile *self) { g_return_val_if_fail (BZ_IS_USER_DATA_TILE (self), NULL); return self->group; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-user-data-tile.h���������������������������������������������������0000664�0000000�0000000�00000002363�15240005042�0021533�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-user-data-tile.h * * Copyright 2025 Adam Masciola, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include "bz-list-tile.h" #include <adwaita.h> G_BEGIN_DECLS #define BZ_TYPE_USER_DATA_TILE (bz_user_data_tile_get_type ()) G_DECLARE_FINAL_TYPE (BzUserDataTile, bz_user_data_tile, BZ, USER_DATA_TILE, AdwBin) GtkWidget * bz_user_data_tile_new (void); void bz_user_data_tile_set_group (BzUserDataTile *self, BzEntryGroup *group); BzEntryGroup * bz_user_data_tile_get_group (BzUserDataTile *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-verification-status.txt��������������������������������������������0000664�0000000�0000000�00000000651�15240005042�0023304�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=bz name=verification_status parent-prefix=g parent-name=object author=AUTOGEN property=verified gboolean G_TYPE_BOOLEAN boolean property=method char G_TYPE_STRING string property=website char G_TYPE_STRING string property=login_name char G_TYPE_STRING string property=login_provider char G_TYPE_STRING string property=timestamp char G_TYPE_STRING string property=login_is_organization gboolean G_TYPE_BOOLEAN boolean ���������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-window.blp���������������������������������������������������������0000664�0000000�0000000�00000026620�15240005042�0020552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Gio 2.0; using Gdk 4.0; using Adw 1; template $BzWindow: Adw.ApplicationWindow { title: bind $format_title(navigation_view.visible-page as <Adw.NavigationPage>.title); default-width: 1220; default-height: 900; width-request: 360; height-request: 294; ShortcutController { Shortcut { trigger: "Escape"; action: "action(escape)"; } Shortcut { trigger: "Back"; action: "action(escape)"; } Shortcut { trigger: "BackSpace"; action: "action(escape)"; } Shortcut { trigger: "<ctrl>g"; action: "action(escape)"; } } content: Gtk.Overlay window_overlay { child: Adw.ToolbarView { content: Adw.BreakpointBin split_breakpoint_bin { width-request: 360; height-request: 450; child: Adw.ToastOverlay toasts { child: Adw.NavigationView navigation_view { pop-on-escape: false; Adw.NavigationPage { tag: "main"; title: _("Bazaar"); child: Adw.ToolbarView toolbar_view { top-bar-style: flat; bottom-bar-style: flat; reveal-bottom-bars: false; content: Stack main_stack { StackPage { name: "loading"; child: Box { halign: fill; valign: center; orientation: vertical; spacing: 6; tooltip-text: bind template.state as <$BzStateInfo>.background-task-label; Adw.Spinner { width-request: 64; height-request: 64; margin-bottom: 18; } Label { label: _("Refreshing"); wrap: true; justify: center; margin-bottom: 24; styles [ "title-3", ] } }; } StackPage { name: "main"; child: Adw.ViewStack main_view_stack { Adw.ViewStackPage { name: "browse"; title: _("Curated"); icon-name: "star-outline-rounded-symbolic"; visible: bind template.state as <$BzStateInfo>.curated-provider as <$BzContentProvider>.has-inputs; child: $BzCuratedView browse { state: bind template.state as <$BzStateInfo>; browse-flathub => $browse_flathub_cb(template); }; } Adw.ViewStackPage { name: "flathub"; title: _("Explore"); icon-name: "explore-symbolic"; child: $BzFlathubPage { state: bind template.state as <$BzStateInfo>; open-search => $open_search_cb(template); }; } Adw.ViewStackPage { name: "installed"; // Translators: . title: _("Library"); icon-name: "library-symbolic"; badge-number: bind template.state as <$BzStateInfo>.available-updates as <Gio.ListStore>.n-items; needs-attention: bind template.state as <$BzStateInfo>.available-updates as <Gio.ListStore>.n-items; child: $BzLibraryPage library_page { state: bind template.state; transactions: bind template.state as <$BzStateInfo>.transaction-manager; model: bind template.state as <$BzStateInfo>.all-installed-entry-groups; update => $update_cb(template); }; } Adw.ViewStackPage { name: "search"; title: _("Search"); icon-name: "system-search-symbolic"; child: $BzSearchPage search_page { state: bind template.state; }; } }; } }; [top] Box { orientation: vertical; Adw.HeaderBar top_header_bar { [start] Box { styles [ "bz-debug", ] orientation: horizontal; spacing: 6; visible: bind template.state as <$BzStateInfo>.debug-mode; Button { has-tooltip: true; tooltip-text: "Open Bazaar Inspector"; icon-name: "bug-symbolic"; action-name: "app.bazaar-inspector"; } } [start] MenuButton { visible: bind try {template.state as <$BzStateInfo>.auth-state as <$BzAuthState>.authenticated, false}; menu-model: account_menu; styles [ "circular", "flat", ] child: Adw.Avatar { size: 24; show-initials: true; text: bind template.state as <$BzStateInfo>.auth-state as <$BzAuthState>.name; custom-image: bind try { $choose_object(template.state as <$BzStateInfo>.auth-state as <$BzAuthState>.paintable as <$BzAsyncTexture>.loaded, template.state as <$BzStateInfo>.auth-state as <$BzAuthState>.paintable , null as <Gdk.Paintable>), null as <Gdk.Paintable>}; }; } [start] Revealer { transition-type: crossfade; transition-duration: 750; margin-start: 8; reveal-child: bind $logical_and($invert_boolean(template.state as <$BzStateInfo>.busy) as <bool>, $invert_boolean($is_null(template.state as <$BzStateInfo>.background-task-label) as <bool>) as <bool>) as <bool>; child: Adw.Spinner { width-request: 16; height-request: 16; has-tooltip: true; tooltip-text: bind template.state as <$BzStateInfo>.background-task-label; }; } [title] Box { Adw.ViewSwitcher { stack: main_view_stack; policy: wide; visible: bind $invert_boolean(template.state as <$BzStateInfo>.busy) as <bool>; } Label { label: _("Bazaar"); visible: bind template.state as <$BzStateInfo>.busy as <bool>; styles [ "title", ] } } [end] MenuButton { primary: true; icon-name: "open-menu-symbolic"; has-tooltip: true; tooltip-text: _("Main Menu"); menu-model: primary_menu; } } Adw.Banner { styles [ "bz-donations-banner", ] revealed: bind $invert_boolean(template.state as <$BzStateInfo>.donation-prompt-dismissed as <bool>) as <bool>; title: _("You are running a new version of Bazaar!"); button-label: _("See What's New"); action-name: "app.donate"; } Adw.Banner { sensitive: bind $invert_boolean(template.state as <$BzStateInfo>.syncing as <bool>) as <bool>; revealed: bind $logical_and($invert_boolean(template.state as <$BzStateInfo>.metered_connection as <bool>) as <bool>, $logical_and(template.state as <$BzStateInfo>.have_connection as <bool>, $invert_boolean(template.state as <$BzStateInfo>.online as <bool>) as <bool>) as <bool>) as <bool>; title: _("You have a network connection but are viewing a cached version of Flathub"); button-label: _("Refresh Manually"); button-clicked => $sync_cb(template); } Adw.Banner { sensitive: bind $invert_boolean(template.state as <$BzStateInfo>.syncing as <bool>) as <bool>; revealed: bind $logical_and( $invert_boolean(template.state as <$BzStateInfo>.recently-synced as <bool>) as <bool>, $logical_and(template.state as <$BzStateInfo>.metered_connection as <bool>, template.state as <$BzStateInfo>.have_connection as <bool>) as <bool> ) as <bool>; title: _("Network connection is metered — automatic refreshes disabled"); button-label: _("Refresh Manually"); button-clicked => $sync_cb(template); } } [bottom] Adw.ViewSwitcherBar { stack: main_view_stack; reveal: true; visible: bind $invert_boolean(template.state as <$BzStateInfo>.busy) as <bool>; } }; } }; }; Adw.Breakpoint { condition ("max-width: 700px") setters { top_header_bar.title-widget: null; toolbar_view.reveal-bottom-bars: true; } apply => $breakpoint_apply_cb(template); unapply => $breakpoint_unapply_cb(template); } }; }; }; } menu primary_menu { section { item { label: _("_Donate to Bazaar"); action: "app.donate"; } } section { item { label: _("_Refresh"); action: "app.sync-remotes"; } item { label: _("_Login With Flathub"); action: "app.flathub-login"; hidden-when: "action-disabled"; } item { label: _("_Manage Leftover User Data"); action: "window.user-data"; } } section { item { label: _("_Preferences"); action: "app.preferences"; } item { label: _("_Keyboard Shortcuts"); action: "app.shortcuts"; } item { label: _("_About Bazaar"); action: "app.about"; } } section { item { label: _("_Quit Bazaar"); action: "app.quit"; } } } menu debug_menu { section { item { label: "Open Bazaar Inspector"; action: "app.bazaar-inspector"; } } } menu account_menu { section { item { label: _("Favorites"); action: "app.flathub-favorites"; } } section { item { label: _("Log Out"); action: "app.flathub-logout"; } } } ����������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-window.c�����������������������������������������������������������0000664�0000000�0000000�00000124741�15240005042�0020222�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-window.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ // This file is an utter mess #include "config.h" #include <glib/gi18n.h> #include "bz-addons-dialog.h" #include "bz-application.h" #include "bz-curated-view.h" #include "bz-entry-group-util.h" #include "bz-entry-group.h" #include "env.h" #include "error.h" #include "bz-flathub-page.h" #include "bz-flatpak-entry.h" #include "bz-full-view.h" #include "hooks.h" #include "io.h" #include "bz-library-page.h" #include "bz-progress-bar.h" #include "bz-screenshot-page.h" #include "bz-search-bar.h" #include "bz-search-page.h" #include "template-callbacks.h" #include "bz-transaction-dialog.h" #include "bz-transaction-manager.h" #include "bz-user-data-page.h" #include "util.h" #include "bz-window.h" struct _BzWindow { AdwApplicationWindow parent_instance; BzStateInfo *state; GtkEventController *key_controller; BzScreenshotPage *screenshot_page; gboolean breakpoint_applied; /* Template widgets */ AdwNavigationView *navigation_view; BzSearchPage *search_page; BzLibraryPage *library_page; AdwToastOverlay *toasts; AdwViewStack *main_view_stack; GtkStack *main_stack; GtkOverlay *window_overlay; }; G_DEFINE_FINAL_TYPE (BzWindow, bz_window, ADW_TYPE_APPLICATION_WINDOW) enum { PROP_0, PROP_STATE, PROP_COMPACT, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; BZ_DEFINE_DATA ( transact, Transact, { GWeakRef *self; BzEntry *entry; BzEntryGroup *group; gboolean remove; gboolean auto_confirm; GtkWidget *source; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (entry, g_object_unref); BZ_RELEASE_DATA (group, g_object_unref); BZ_RELEASE_DATA (source, g_object_unref)) static DexFuture * transact_fiber (TransactData *data); BZ_DEFINE_DATA ( bulk_install, BulkInstall, { GWeakRef *self; GListModel *groups; }, BZ_RELEASE_DATA (self, bz_weak_release); BZ_RELEASE_DATA (groups, g_object_unref)) static DexFuture * bulk_install_fiber (BulkInstallData *data); static DexFuture * transact (BzEntry *entry, gboolean remove, GtkWidget *source); static void try_transact (BzWindow *self, BzEntry *entry, BzEntryGroup *group, gboolean remove, gboolean auto_confirm, GtkWidget *source); static void search (BzWindow *self, const char *text); static void bulk_install (BzWindow *self, BzEntry **installs, guint n_installs); static void set_page (BzWindow *self); static BzFullView * create_full_view (BzWindow *self, BzEntryGroup *group); static void emit_hook_disown (BzWindow *self, BzHookSignal signal, BzEntryGroup *group); static void bz_window_dispose (GObject *object) { BzWindow *self = BZ_WINDOW (object); g_clear_object (&self->state); G_OBJECT_CLASS (bz_window_parent_class)->dispose (object); } static void bz_window_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzWindow *self = BZ_WINDOW (object); switch (prop_id) { case PROP_STATE: g_value_set_object (value, self->state); break; case PROP_COMPACT: g_value_set_boolean (value, self->breakpoint_applied); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_window_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { // BzWindow *self = BZ_WINDOW (object); switch (prop_id) { case PROP_STATE: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static char * list_length (gpointer object, GListModel *model) { if (model == NULL) return g_strdup (0); return g_strdup_printf ("%u", g_list_model_get_n_items (model)); } static void update_cb (BzWindow *self, GListModel *entries, GtkWidget *widget) { g_autoptr (BzTransaction) transaction = NULL; guint n_updates = 0; g_autofree BzEntry **updates_buf = NULL; GListModel *available_updates = NULL; g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (G_IS_LIST_MODEL (entries)); n_updates = g_list_model_get_n_items (entries); if (n_updates == 0) return; updates_buf = g_malloc_n (n_updates, sizeof (*updates_buf)); for (guint i = 0; i < n_updates; i++) updates_buf[i] = g_list_model_get_item (entries, i); transaction = bz_transaction_new_full ( NULL, 0, updates_buf, n_updates, NULL, 0); dex_future_disown (bz_transaction_manager_add ( bz_state_info_get_transaction_manager (self->state), transaction)); available_updates = bz_state_info_get_available_updates (self->state); if (G_IS_LIST_STORE (available_updates)) { GListStore *store = G_LIST_STORE (available_updates); guint n_available = g_list_model_get_n_items (available_updates); for (guint i = n_available; i > 0; i--) { guint current_size = 0; guint idx = 0; g_autoptr (BzEntry) available_entry = NULL; const char *available_id = NULL; idx = i - 1; current_size = g_list_model_get_n_items (available_updates); if (idx >= current_size) continue; available_entry = g_list_model_get_item (available_updates, idx); available_id = bz_entry_get_id (available_entry); for (guint j = 0; j < n_updates; j++) { if (g_strcmp0 (available_id, bz_entry_get_id (updates_buf[j])) == 0) { g_list_store_remove (store, idx); break; } } } } g_object_notify (G_OBJECT (self->state), "available-updates"); for (guint i = 0; i < n_updates; i++) g_object_unref (updates_buf[i]); } void bz_window_show_app_id (BzWindow *self, const char *app_id) { g_autoptr (BzEntryGroup) group = NULL; g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (app_id != NULL); group = bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (self->state), gtk_string_object_new (app_id)); if (group != NULL) bz_window_show_group (self, group); } static void page_toggled_cb (BzWindow *self, GParamSpec *pspec, AdwToggleGroup *toggles) { set_page (self); } static void browse_flathub_cb (BzWindow *self, BzCuratedView *widget) { adw_view_stack_set_visible_child_name (self->main_view_stack, "flathub"); } static void open_search_cb (BzWindow *self, BzSearchPage *widget) { adw_view_stack_set_visible_child_name (self->main_view_stack, "search"); } static void breakpoint_apply_cb (BzWindow *self, AdwBreakpoint *breakpoint) { self->breakpoint_applied = TRUE; gtk_widget_add_css_class (GTK_WIDGET (self), "narrow"); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_COMPACT]); } static void breakpoint_unapply_cb (BzWindow *self, AdwBreakpoint *breakpoint) { self->breakpoint_applied = FALSE; gtk_widget_remove_css_class (GTK_WIDGET (self), "narrow"); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_COMPACT]); } static void sync_cb (BzWindow *self, GtkButton *button) { g_action_group_activate_action ( G_ACTION_GROUP (g_application_get_default ()), "sync-remotes", NULL); } static void transactions_clear_cb (BzWindow *self, GtkButton *button) { bz_transaction_manager_clear_finished ( bz_state_info_get_transaction_manager (self->state)); } static void action_escape (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); GListModel *stack = NULL; guint n_pages = 0; if (self->screenshot_page != NULL) { if (!bz_screenshot_page_is_closing (self->screenshot_page)) { bz_screenshot_page_close (self->screenshot_page); return; } } stack = adw_navigation_view_get_navigation_stack (self->navigation_view); n_pages = g_list_model_get_n_items (stack); adw_navigation_view_pop (self->navigation_view); if (n_pages <= 2) set_page (self); } static char * format_progress (gpointer object, double value) { return g_strdup_printf ("%.0f%%", 100.0 * value); } static char * format_title (gpointer object, const char *title) { if (title == NULL || *title == '\0' || g_strcmp0 (title, _ ("Bazaar")) == 0) return g_strdup (_ ("Bazaar")); /* Translators: %s is the title of the current page */ return g_strdup_printf (_ ("Bazaar — %s"), title); } static BzEntryGroup * resolve_group_from_parameter (BzWindow *self, GVariant *parameter, gboolean *auto_confirm) { const char *id = NULL; g_variant_get (parameter, "(&sb)", &id, auto_confirm); return bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (self->state), gtk_string_object_new (id)); } static void action_install_group (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); g_autoptr (BzEntryGroup) group = NULL; gboolean auto_confirm = FALSE; group = resolve_group_from_parameter (self, parameter, &auto_confirm); if (group != NULL) try_transact (self, NULL, group, FALSE, auto_confirm, NULL); } static void action_remove_group (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); g_autoptr (BzEntryGroup) group = NULL; gboolean auto_confirm = FALSE; group = resolve_group_from_parameter (self, parameter, &auto_confirm); if (group != NULL) try_transact (self, NULL, group, TRUE, auto_confirm, NULL); } static void action_cancel_group (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); const char *id = NULL; BzTransactionManager *manager = NULL; BzBackend *backend = NULL; GListModel *trackers = NULL; guint n_items = 0; id = g_variant_get_string (parameter, NULL); manager = bz_state_info_get_transaction_manager (self->state); if (manager == NULL) return; backend = bz_state_info_get_backend (self->state); if (backend == NULL) return; trackers = bz_transaction_manager_get_all_trackers (manager); n_items = g_list_model_get_n_items (trackers); for (guint i = 0; i < n_items; i++) { g_autoptr (BzTransactionEntryTracker) tracker = NULL; BzEntry *entry = NULL; const char *entry_id = NULL; tracker = g_list_model_get_item (trackers, i); entry = bz_transaction_entry_tracker_get_entry (tracker); if (entry == NULL) continue; entry_id = bz_entry_get_id (entry); if (g_strcmp0 (entry_id, id) == 0) { if (bz_backend_cancel_task_for_entry (backend, entry)) g_object_set (tracker, "status", BZ_TRANSACTION_ENTRY_STATUS_CANCELLED, NULL); break; } } } static void parent_ui_entry_show_group_cb (BzAddonsDialog *dialog, GParamSpec *pspec, BzWindow *self) { BzEntry *entry = NULL; g_autoptr (BzEntryGroup) group = NULL; entry = bz_addons_dialog_get_parent_entry (dialog); if (entry == NULL) return; group = bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (bz_window_get_state_info (self)), gtk_string_object_new (bz_entry_get_id (entry))); if (group == NULL) return; bz_window_show_group (self, group); } static void action_show_group (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); const char *id = NULL; g_autoptr (BzEntryGroup) group = NULL; id = g_variant_get_string (parameter, NULL); group = bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (self->state), gtk_string_object_new (id)); if (group == NULL) return; if (bz_entry_group_is_addon (group)) { AdwDialog *dialog = NULL; dialog = bz_addons_dialog_new_single (group); g_signal_connect_object (dialog, "notify::parent-ui-entry", G_CALLBACK (parent_ui_entry_show_group_cb), self, 0); parent_ui_entry_show_group_cb (BZ_ADDONS_DIALOG (dialog), NULL, self); adw_dialog_present (dialog, GTK_WIDGET (self)); } else bz_window_show_group (self, group); } static void action_addons_group (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); const char *id = NULL; g_autoptr (BzEntryGroup) group = NULL; AdwDialog *addons_dialog = NULL; id = g_variant_get_string (parameter, NULL); group = bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (self->state), gtk_string_object_new (id)); if (group == NULL) return; addons_dialog = bz_addons_dialog_new (group); adw_dialog_present (addons_dialog, GTK_WIDGET (self)); } static void action_bulk_install (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); g_autoptr (GListStore) ids = NULL; g_autoptr (GListModel) groups = NULL; GVariantIter iter = { 0 }; const char *id = NULL; ids = g_list_store_new (GTK_TYPE_STRING_OBJECT); g_variant_iter_init (&iter, parameter); while (g_variant_iter_next (&iter, "&s", &id)) { g_autoptr (GtkStringObject) string = gtk_string_object_new (id); g_list_store_append (ids, string); } groups = bz_application_map_factory_generate ( bz_state_info_get_application_factory (self->state), G_LIST_MODEL (ids)); if (groups != NULL && g_list_model_get_n_items (groups) > 0) bz_window_bulk_install (self, groups); } static void action_user_data (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); AdwNavigationPage *user_data_page = NULL; user_data_page = ADW_NAVIGATION_PAGE (bz_user_data_page_new (self->state)); adw_navigation_view_push (self->navigation_view, user_data_page); } static void action_open_flathub_page (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); adw_navigation_view_pop_to_tag (self->navigation_view, "main"); adw_view_stack_set_visible_child_name (self->main_view_stack, "flathub"); } static void action_open_library (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); adw_navigation_view_pop_to_tag (self->navigation_view, "main"); adw_view_stack_set_visible_child_name (self->main_view_stack, "installed"); bz_library_page_reset_search (self->library_page); } static DexFuture * launch_group_fiber (BzEntryGroup *group) { g_autoptr (GError) local_error = NULL; g_autoptr (GListStore) store = NULL; GtkWidget *window = NULL; BzStateInfo *state = NULL; state = bz_state_info_get_default (); window = GTK_WIDGET (gtk_application_get_active_window ( GTK_APPLICATION (g_application_get_default ()))); store = dex_await_object ( bz_entry_group_dup_all_into_store (group), &local_error); if (store == NULL) { if (window != NULL) bz_show_error_for_widget (window, _ ("Failed to launch application"), local_error->message); return dex_future_new_for_error (g_steal_pointer (&local_error)); } for (guint i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (store)); i++) { g_autoptr (BzEntry) entry = NULL; const char *ref = NULL; gboolean result = FALSE; entry = g_list_model_get_item (G_LIST_MODEL (store), i); if (!BZ_IS_FLATPAK_ENTRY (entry) || !bz_entry_is_installed (entry)) continue; ref = bz_flatpak_entry_get_addon_extension_of_ref (BZ_FLATPAK_ENTRY (entry)); if (ref != NULL) { g_auto (GStrv) parts = NULL; BzApplicationMapFactory *factory = NULL; g_autoptr (BzEntryGroup) parent = NULL; parts = g_strsplit (ref, "/", -1); if (parts[0] != NULL && parts[1] != NULL) { factory = bz_state_info_get_application_factory (state); parent = bz_application_map_factory_convert_one ( factory, gtk_string_object_new (parts[1])); if (parent != NULL) return launch_group_fiber (parent); } } result = bz_flatpak_entry_launch ( BZ_FLATPAK_ENTRY (entry), BZ_FLATPAK_INSTANCE (bz_state_info_get_backend (state)), &local_error); if (!result && window != NULL) bz_show_error_for_widget (window, _ ("Failed to launch application"), local_error->message); return result ? dex_future_new_true () : dex_future_new_for_error (g_steal_pointer (&local_error)); } return dex_future_new_false (); } static void action_launch_group (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); const char *id = NULL; g_autoptr (BzEntryGroup) group = NULL; id = g_variant_get_string (parameter, NULL); group = bz_application_map_factory_convert_one ( bz_state_info_get_application_factory (self->state), gtk_string_object_new (id)); if (group == NULL) return; dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) launch_group_fiber, g_object_ref (group), g_object_unref)); } static void action_activate_hook_app (GtkWidget *widget, const char *action_name, GVariant *parameter) { BzWindow *self = BZ_WINDOW (widget); const char *id = NULL; g_autoptr (BzEntryGroup) group = NULL; id = g_variant_get_string (parameter, NULL); group = bz_entry_group_new_manual (id, NULL, NULL); emit_hook_disown (self, BZ_HOOK_SIGNAL_ARTICLE_APP, group); } static void action_open_user_data_folder (GtkWidget *widget, const char *action_name, GVariant *parameter) { const char *id = NULL; g_autofree char *path = NULL; g_autoptr (GFile) file = NULL; g_autoptr (GtkFileLauncher) launcher = NULL; id = g_variant_get_string (parameter, NULL); if (id == NULL) return; path = bz_dup_user_data_path (id); file = g_file_new_for_path (path); launcher = gtk_file_launcher_new (file); gtk_file_launcher_launch (launcher, GTK_WINDOW (widget), NULL, NULL, NULL); } static void bz_window_class_init (BzWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_window_dispose; object_class->get_property = bz_window_get_property; object_class->set_property = bz_window_set_property; props[PROP_STATE] = g_param_spec_object ( "state", NULL, NULL, BZ_TYPE_STATE_INFO, G_PARAM_READABLE); props[PROP_COMPACT] = g_param_spec_boolean ( "compact", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); g_type_ensure (BZ_TYPE_SEARCH_BAR); g_type_ensure (BZ_TYPE_SEARCH_PAGE); g_type_ensure (BZ_TYPE_PROGRESS_BAR); g_type_ensure (BZ_TYPE_CURATED_VIEW); g_type_ensure (BZ_TYPE_FULL_VIEW); g_type_ensure (BZ_TYPE_ENTRY); g_type_ensure (BZ_TYPE_LIBRARY_PAGE); g_type_ensure (BZ_TYPE_FLATHUB_PAGE); gtk_widget_class_set_template_from_resource (widget_class, "/io/github/kolunmi/Bazaar/bz-window.ui"); bz_widget_class_bind_all_util_callbacks (widget_class); gtk_widget_class_bind_template_child (widget_class, BzWindow, navigation_view); gtk_widget_class_bind_template_child (widget_class, BzWindow, toasts); gtk_widget_class_bind_template_child (widget_class, BzWindow, search_page); gtk_widget_class_bind_template_child (widget_class, BzWindow, library_page); gtk_widget_class_bind_template_child (widget_class, BzWindow, main_view_stack); gtk_widget_class_bind_template_child (widget_class, BzWindow, main_stack); gtk_widget_class_bind_template_child (widget_class, BzWindow, window_overlay); gtk_widget_class_bind_template_callback (widget_class, list_length); gtk_widget_class_bind_template_callback (widget_class, update_cb); gtk_widget_class_bind_template_callback (widget_class, page_toggled_cb); gtk_widget_class_bind_template_callback (widget_class, breakpoint_apply_cb); gtk_widget_class_bind_template_callback (widget_class, breakpoint_unapply_cb); gtk_widget_class_bind_template_callback (widget_class, sync_cb); gtk_widget_class_bind_template_callback (widget_class, transactions_clear_cb); gtk_widget_class_bind_template_callback (widget_class, browse_flathub_cb); gtk_widget_class_bind_template_callback (widget_class, open_search_cb); gtk_widget_class_bind_template_callback (widget_class, format_progress); gtk_widget_class_bind_template_callback (widget_class, format_title); gtk_widget_class_install_action (widget_class, "escape", NULL, action_escape); gtk_widget_class_install_action (widget_class, "window.user-data", NULL, action_user_data); gtk_widget_class_install_action (widget_class, "window.open-library", NULL, action_open_library); gtk_widget_class_install_action (widget_class, "window.open-flathub-page", NULL, action_open_flathub_page); gtk_widget_class_install_action (widget_class, "window.install-group", "(sb)", action_install_group); gtk_widget_class_install_action (widget_class, "window.remove-group", "(sb)", action_remove_group); gtk_widget_class_install_action (widget_class, "window.cancel-group", "s", action_cancel_group); gtk_widget_class_install_action (widget_class, "window.show-group", "s", action_show_group); gtk_widget_class_install_action (widget_class, "window.addons-group", "s", action_addons_group); gtk_widget_class_install_action (widget_class, "window.bulk-install", NULL, action_bulk_install); gtk_widget_class_install_action (widget_class, "window.launch-group", "s", action_launch_group); gtk_widget_class_install_action (widget_class, "window.activate-hook-app", "s", action_activate_hook_app); gtk_widget_class_install_action (widget_class, "window.open-user-data-folder", "s", action_open_user_data_folder); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_d, GDK_CONTROL_MASK, "window.open-library", NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_w, GDK_CONTROL_MASK, "window.close", NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_e, GDK_CONTROL_MASK, "window.open-flathub-page", NULL); } static gboolean key_pressed (BzWindow *self, guint keyval, guint keycode, GdkModifierType state, GtkEventControllerKey *controller) { gunichar unichar = 0; char buf[32] = { 0 }; const char *visible_child_name = NULL; gboolean was_deeper = FALSE; /* Ignore if this is a modifier-shortcut of some sort */ if (state & ~(GDK_NO_MODIFIER_MASK | GDK_SHIFT_MASK)) return FALSE; if (self->screenshot_page != NULL) return FALSE; unichar = gdk_keyval_to_unicode (keyval); if (unichar == 0 || !g_unichar_isgraph (unichar)) return FALSE; g_unichar_to_utf8 (unichar, buf); was_deeper = g_list_model_get_n_items ( adw_navigation_view_get_navigation_stack (self->navigation_view)) > 1; adw_navigation_view_pop_to_tag (self->navigation_view, "main"); visible_child_name = adw_view_stack_get_visible_child_name (self->main_view_stack); if (!was_deeper && g_strcmp0 (visible_child_name, "installed") == 0) return bz_library_page_ensure_active (self->library_page, buf); else { adw_view_stack_set_visible_child_name (self->main_view_stack, "search"); return bz_search_page_ensure_active (self->search_page, buf); } } static void bz_window_init (BzWindow *self) { gtk_widget_init_template (GTK_WIDGET (self)); #ifdef DEVELOPMENT_BUILD gtk_widget_add_css_class (GTK_WIDGET (self), "devel"); #endif adw_view_stack_set_visible_child_name (self->main_view_stack, "flathub"); self->key_controller = gtk_event_controller_key_new (); g_signal_connect_swapped (self->key_controller, "key-pressed", G_CALLBACK (key_pressed), self); gtk_widget_add_controller (GTK_WIDGET (self), self->key_controller); } static void app_busy_changed (BzWindow *self, GParamSpec *pspec, BzStateInfo *info) { bz_search_page_refresh (self->search_page); set_page (self); } static void has_inputs_changed (BzWindow *self, GParamSpec *pspec, BzContentProvider *provider) { if (!bz_content_provider_get_has_inputs (provider)) adw_view_stack_set_visible_child_name (self->main_view_stack, "flathub"); } static DexFuture * transact_fiber (TransactData *data) { g_autoptr (GError) local_error = NULL; g_autoptr (BzEntry) selected_entry = NULL; g_autoptr (DexFuture) transact_future = NULL; g_autofree char *id_dup = NULL; BzMainConfig *config = NULL; GListModel *hooks = NULL; gboolean delete_user_data = FALSE; GdkDisplay *display = NULL; GdkSeat *seat = NULL; GdkDevice *keyboard = NULL; GdkModifierType modifiers = GDK_NO_MODIFIER_MASK; // Get ID early before any async operations if (data->group != NULL) id_dup = g_strdup (bz_entry_group_get_id (data->group)); else id_dup = g_strdup (bz_entry_get_id (data->entry)); /* Prevent Bazaar from being removed by itself */ if (data->remove) { const char *bazaar_id = NULL; bazaar_id = g_application_get_application_id (g_application_get_default ()); if (g_strcmp0 (id_dup, bazaar_id) == 0) { GtkWidget *window = NULL; window = GTK_WIDGET (gtk_application_get_active_window (GTK_APPLICATION (g_application_get_default ()))); bz_show_error_for_widget (window, _ ("You can't remove Bazaar from Bazaar!"), _ ("You can't remove Bazaar from Bazaar!")); return dex_future_new_false (); } } config = bz_state_info_get_main_config (bz_state_info_get_default ()); if (config != NULL) hooks = bz_main_config_get_hooks (config); #define RUN_HOOK(_signal) \ G_STMT_START \ { \ if (hooks != NULL && \ !dex_await ( \ bz_run_hook_emission ( \ hooks, (_signal), \ data->remove \ ? BZ_HOOK_TRANSACTION_TYPE_REMOVAL \ : BZ_HOOK_TRANSACTION_TYPE_INSTALL, \ id_dup, NULL), \ &local_error)) \ return dex_future_new_for_error (g_steal_pointer (&local_error)); \ } \ G_STMT_END RUN_HOOK (BZ_HOOK_SIGNAL_BEFORE_TRANSACTION); display = gdk_display_get_default (); seat = gdk_display_get_default_seat (display); keyboard = gdk_seat_get_keyboard (seat); if (keyboard != NULL) modifiers = gdk_device_get_modifier_state (keyboard); if (modifiers & GDK_SHIFT_MASK) /* Holding shift while invoking a transaction skips the dialog and assumes the first valid entry */ { if (data->group != NULL) { g_autoptr (GListModel) store = NULL; guint n_items = 0; store = dex_await_object ( bz_entry_group_dup_all_into_store (data->group), &local_error); if (store == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); n_items = g_list_model_get_n_items (store); for (guint i = 0; i < n_items; i++) { g_autoptr (BzEntry) entry = NULL; gboolean installed = FALSE; entry = g_list_model_get_item (store, i); installed = bz_entry_is_installed (entry); if ((data->remove && installed) || (!data->remove && !installed)) { selected_entry = g_steal_pointer (&entry); break; } } if (selected_entry == NULL) return dex_future_new_false (); } else selected_entry = g_object_ref (data->entry); } else { g_autoptr (BzTransactionDialogResult) dialog_result = NULL; // Show the dialog dialog_result = dex_await_object ( bz_transaction_dialog_show ( GTK_WIDGET (gtk_application_get_active_window ( GTK_APPLICATION (g_application_get_default ()))), data->entry, data->group, data->remove, data->auto_confirm), &local_error); if (dialog_result == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); if (!bz_transaction_dialog_result_get_confirmed (dialog_result)) return dex_future_new_false (); selected_entry = g_object_ref ( bz_transaction_dialog_result_get_selected_entry (dialog_result)); delete_user_data = bz_transaction_dialog_result_get_delete_user_data ( dialog_result); } // Perform the transaction transact_future = transact ( selected_entry, data->remove, data->source); if (!dex_await (g_steal_pointer (&transact_future), &local_error)) return dex_future_new_for_error (g_steal_pointer (&local_error)); // Handle user data deletion if (delete_user_data) { if (data->group != NULL) bz_entry_group_reap_user_data (data->group); else dex_future_disown (bz_reap_user_data_dex (id_dup)); } RUN_HOOK (BZ_HOOK_SIGNAL_AFTER_TRANSACTION); #undef RUN_HOOK return dex_future_new_true (); } BzWindow * bz_window_new (BzStateInfo *state) { BzWindow *window = NULL; BzMainConfig *config = NULL; g_return_val_if_fail (BZ_IS_STATE_INFO (state), NULL); window = g_object_new (BZ_TYPE_WINDOW, NULL); window->state = g_object_ref (state); config = bz_state_info_get_main_config (state); if (config != NULL && bz_main_config_get_start_on_curated (config)) { BzContentProvider *curated_provider = NULL; curated_provider = bz_state_info_get_curated_provider (state); if (curated_provider != NULL && g_list_model_get_n_items (G_LIST_MODEL (curated_provider)) > 0) adw_view_stack_set_visible_child_name (window->main_view_stack, "browse"); } g_signal_connect_object (state, "notify::busy", G_CALLBACK (app_busy_changed), window, G_CONNECT_SWAPPED); /* these seem unsafe but BzApplication never * changes the objects we are connecting to */ g_signal_connect_object (bz_state_info_get_curated_provider (state), "notify::has-inputs", G_CALLBACK (has_inputs_changed), window, G_CONNECT_SWAPPED); g_object_notify_by_pspec (G_OBJECT (window), props[PROP_STATE]); set_page (window); return window; } void bz_window_search (BzWindow *self, const char *text) { g_return_if_fail (BZ_IS_WINDOW (self)); search (self, text); } void bz_window_show_entry (BzWindow *self, BzEntry *entry) { g_autoptr (BzEntryGroup) group = NULL; g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (BZ_IS_ENTRY (entry)); group = bz_entry_group_new_for_single_entry (entry); bz_window_show_group (self, group); } static void full_view_page_hidden_cb (AdwNavigationPage *page, BzWindow *self) { adw_navigation_page_set_child (page, NULL); } static void full_view_page_shown_cb (AdwNavigationPage *page, BzWindow *self) { BzEntryGroup *group = NULL; GtkWidget *existing = NULL; BzFullView *full_view = NULL; existing = adw_navigation_page_get_child (page); if (BZ_IS_FULL_VIEW (existing)) return; group = BZ_ENTRY_GROUP (g_object_get_data (G_OBJECT (page), "bz-entry-group")); if (group == NULL) return; full_view = create_full_view (self, group); adw_navigation_page_set_child (page, GTK_WIDGET (full_view)); } void bz_window_show_group (BzWindow *self, BzEntryGroup *group) { BzFullView *full_view = NULL; AdwNavigationPage *page = NULL; const char *title = NULL; g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (BZ_IS_ENTRY_GROUP (group)); full_view = create_full_view (self, group); title = bz_entry_group_get_title (group); page = adw_navigation_page_new (GTK_WIDGET (full_view), title != NULL ? title : ""); g_object_set_data_full ( G_OBJECT (page), "bz-entry-group", g_object_ref (group), g_object_unref); g_signal_connect_object (page, "showing", G_CALLBACK (full_view_page_shown_cb), self, 0); g_signal_connect_object (page, "hidden", G_CALLBACK (full_view_page_hidden_cb), self, 0); adw_navigation_view_push (self->navigation_view, page); } void bz_window_add_toast (BzWindow *self, AdwToast *toast) { g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (ADW_IS_TOAST (toast)); adw_toast_overlay_add_toast (self->toasts, toast); } void bz_window_push_page (BzWindow *self, AdwNavigationPage *page) { g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (ADW_IS_NAVIGATION_PAGE (page)); adw_navigation_view_push (self->navigation_view, page); } void bz_window_open_screenshot_page (BzWindow *self, BzScreenshotPage *page) { g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (BZ_IS_SCREENSHOT_PAGE (page)); if (self->screenshot_page != NULL) return; self->screenshot_page = page; g_signal_connect_swapped (page, "destroy", G_CALLBACK (g_nullify_pointer), &self->screenshot_page); gtk_overlay_add_overlay (self->window_overlay, GTK_WIDGET (page)); } void bz_window_bulk_install (BzWindow *self, GListModel *groups) { g_autoptr (BulkInstallData) data = NULL; g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (G_IS_LIST_MODEL (groups)); data = bulk_install_data_new (); data->self = bz_track_weak (self); data->groups = g_object_ref (groups); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) bulk_install_fiber, bulk_install_data_ref (data), bulk_install_data_unref)); } BzStateInfo * bz_window_get_state_info (BzWindow *self) { g_return_val_if_fail (BZ_IS_WINDOW (self), NULL); return self->state; } static DexFuture * transact (BzEntry *entry, gboolean remove, GtkWidget *source) { g_autoptr (BzTransaction) transaction = NULL; if (remove) transaction = bz_transaction_new_full ( NULL, 0, NULL, 0, &entry, 1); else transaction = bz_transaction_new_full ( &entry, 1, NULL, 0, NULL, 0); return bz_transaction_manager_add ( bz_state_info_get_transaction_manager (bz_state_info_get_default ()), transaction); } static void try_transact (BzWindow *self, BzEntry *entry, BzEntryGroup *group, gboolean remove, gboolean auto_confirm, GtkWidget *source) { g_autoptr (TransactData) data = NULL; g_return_if_fail (entry != NULL || group != NULL); if (bz_state_info_get_busy (self->state)) { adw_toast_overlay_add_toast ( self->toasts, adw_toast_new_format (_ ("Can't do that right now!"))); return; } data = transact_data_new (); data->self = bz_track_weak (self); data->entry = bz_object_maybe_ref (entry); data->group = bz_object_maybe_ref (group); data->remove = remove; data->auto_confirm = auto_confirm; data->source = bz_object_maybe_ref (source); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) transact_fiber, transact_data_ref (data), transact_data_unref)); } static void bulk_install (BzWindow *self, BzEntry **installs, guint n_installs) { g_autoptr (BzTransaction) transaction = NULL; g_return_if_fail (BZ_IS_WINDOW (self)); g_return_if_fail (installs != NULL); g_return_if_fail (n_installs > 0); if (bz_state_info_get_busy (self->state)) { adw_toast_overlay_add_toast ( self->toasts, adw_toast_new_format (_ ("Can't do that right now!"))); return; } transaction = bz_transaction_new_full ( installs, n_installs, NULL, 0, NULL, 0); dex_future_disown (bz_transaction_manager_add ( bz_state_info_get_transaction_manager (self->state), transaction)); } static DexFuture * bulk_install_fiber (BulkInstallData *data) { g_autoptr (BzWindow) self = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (BzBulkInstallDialogResult) result = NULL; GListModel *entries = NULL; guint n_installs = 0; g_autofree BzEntry **installs_buf = NULL; bz_weak_get_or_return_reject (self, data->self); result = dex_await_object ( bz_bulk_install_dialog_show (GTK_WIDGET (self), data->groups), &local_error); if (result == NULL) return dex_future_new_for_error (g_steal_pointer (&local_error)); if (!bz_bulk_install_dialog_result_get_confirmed (result)) return dex_future_new_false (); entries = bz_bulk_install_dialog_result_get_entries (result); n_installs = g_list_model_get_n_items (entries); if (n_installs == 0) return dex_future_new_false (); installs_buf = g_malloc_n (n_installs, sizeof (*installs_buf)); for (guint i = 0; i < n_installs; i++) installs_buf[i] = g_list_model_get_item (entries, i); bulk_install (self, installs_buf, n_installs); for (guint i = 0; i < n_installs; i++) g_object_unref (installs_buf[i]); return dex_future_new_true (); } static void search (BzWindow *self, const char *initial) { if (initial != NULL && *initial != '\0') bz_search_page_set_text (self->search_page, initial); adw_view_stack_set_visible_child_name (self->main_view_stack, "search"); adw_navigation_view_pop_to_tag (self->navigation_view, "main"); gtk_widget_grab_focus (GTK_WIDGET (self->search_page)); } static void set_page (BzWindow *self) { if (self->state == NULL) return; if (bz_state_info_get_busy (self->state)) { gtk_stack_set_visible_child_name (self->main_stack, "loading"); adw_navigation_view_pop_to_tag (self->navigation_view, "main"); } else gtk_stack_set_visible_child_name (self->main_stack, "main"); } static BzFullView * create_full_view (BzWindow *self, BzEntryGroup *group) { BzFullView *full_view = NULL; full_view = BZ_FULL_VIEW (bz_full_view_new ()); g_object_set (full_view, "state", self->state, NULL); bz_full_view_set_entry_group (full_view, group); g_signal_connect_object (full_view, "update", G_CALLBACK (update_cb), self, G_CONNECT_SWAPPED); return full_view; } static void emit_hook_disown (BzWindow *self, BzHookSignal signal, BzEntryGroup *group) { BzMainConfig *config = NULL; GListModel *hooks = NULL; if (self->state == NULL) return; config = bz_state_info_get_main_config (self->state); if (config == NULL) return; hooks = bz_main_config_get_hooks (config); if (hooks == NULL) return; dex_future_disown (bz_run_hook_emission ( hooks, signal, 0, NULL, group)); } �������������������������������bazaar-org-bazaar-48f93f4/src/bz-window.h�����������������������������������������������������������0000664�0000000�0000000�00000003553�15240005042�0020224�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-window.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include "bz-state-info.h" #include "bz-screenshot-page.h" G_BEGIN_DECLS #define BZ_TYPE_WINDOW (bz_window_get_type ()) G_DECLARE_FINAL_TYPE (BzWindow, bz_window, BZ, WINDOW, AdwApplicationWindow) BzWindow * bz_window_new (BzStateInfo *state); void bz_window_search (BzWindow *self, const char *text); void bz_window_push_update_dialog (BzWindow *self); void bz_window_show_entry (BzWindow *self, BzEntry *entry); void bz_window_show_group (BzWindow *self, BzEntryGroup *group); void bz_window_show_app_id (BzWindow *self, const char *app_id); void bz_window_push_page (BzWindow *self, AdwNavigationPage *page); void bz_window_add_toast (BzWindow *self, AdwToast *toast); void bz_window_open_screenshot_page (BzWindow *self, BzScreenshotPage *page); void bz_window_bulk_install (BzWindow *self, GListModel *groups); BzStateInfo * bz_window_get_state_info (BzWindow *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-world-map-parser.c�������������������������������������������������0000664�0000000�0000000�00000007731�15240005042�0022106�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-world-map-parser.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <gio/gio.h> #include "bz-country.h" #include "bz-world-map-parser.h" struct _BzWorldMapParser { GObject parent_instance; GListStore *countries; }; G_DEFINE_FINAL_TYPE (BzWorldMapParser, bz_world_map_parser, G_TYPE_OBJECT) static const char *get_translated_name (GVariant *translations, const char *fallback_name); static void bz_world_map_parser_dispose (GObject *object) { BzWorldMapParser *self = BZ_WORLD_MAP_PARSER (object); g_clear_object (&self->countries); G_OBJECT_CLASS (bz_world_map_parser_parent_class)->dispose (object); } static void bz_world_map_parser_class_init (BzWorldMapParserClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_world_map_parser_dispose; } static void bz_world_map_parser_init (BzWorldMapParser *self) { self->countries = g_list_store_new (BZ_TYPE_COUNTRY); } BzWorldMapParser * bz_world_map_parser_new (void) { return g_object_new (BZ_TYPE_WORLD_MAP_PARSER, NULL); } gboolean bz_world_map_parser_load_from_resource (BzWorldMapParser *self, const char *resource_path, GError **error) { g_autoptr (GBytes) bytes = NULL; g_autoptr (GVariant) data = NULL; GVariantIter iter = { 0 }; const char *name = NULL; const char *iso_code = NULL; GVariant *translations = NULL; GVariant *coordinates = NULL; g_return_val_if_fail (BZ_IS_WORLD_MAP_PARSER (self), FALSE); g_return_val_if_fail (resource_path != NULL, FALSE); bytes = g_resources_lookup_data (resource_path, G_RESOURCE_LOOKUP_FLAGS_NONE, error); if (bytes == NULL) return FALSE; data = g_variant_new_from_bytes (G_VARIANT_TYPE ("a(ssa{ss}aaa(dd))"), bytes, TRUE); g_list_store_remove_all (self->countries); g_variant_iter_init (&iter, data); while (g_variant_iter_next (&iter, "(&s&s@a{ss}@aaa(dd))", &name, &iso_code, &translations, &coordinates)) { g_autoptr (BzCountry) country = NULL; const char *display_name = NULL; display_name = get_translated_name (translations, name); country = bz_country_new (); bz_country_set_name (country, display_name); bz_country_set_iso_code (country, iso_code); bz_country_set_coordinates (country, coordinates); g_list_store_append (self->countries, country); g_variant_unref (translations); g_variant_unref (coordinates); } return TRUE; } GListModel * bz_world_map_parser_get_countries (BzWorldMapParser *self) { g_return_val_if_fail (BZ_IS_WORLD_MAP_PARSER (self), NULL); return G_LIST_MODEL (self->countries); } static const char * get_translated_name (GVariant *translations, const char *fallback_name) { const char *const *language_names = NULL; language_names = g_get_language_names (); for (guint i = 0; language_names[i] != NULL; i++) { const char *translated = NULL; if (g_variant_lookup (translations, language_names[i], "&s", &translated)) return translated; } return fallback_name; } ���������������������������������������bazaar-org-bazaar-48f93f4/src/bz-world-map-parser.h�������������������������������������������������0000664�0000000�0000000�00000002575�15240005042�0022114�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-world-map-parser.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib-object.h> G_BEGIN_DECLS #define BZ_TYPE_WORLD_MAP_PARSER (bz_world_map_parser_get_type ()) G_DECLARE_FINAL_TYPE (BzWorldMapParser, bz_world_map_parser, BZ, WORLD_MAP_PARSER, GObject) BzWorldMapParser *bz_world_map_parser_new (void); gboolean bz_world_map_parser_load_from_resource (BzWorldMapParser *self, const char *resource_path, GError **error); GListModel *bz_world_map_parser_get_countries (BzWorldMapParser *self); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-world-map.c��������������������������������������������������������0000664�0000000�0000000�00000054061�15240005042�0020612�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-world-map.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include <adwaita.h> #include "bz-country-data-point.h" #include "bz-country.h" #include "bz-world-map-parser.h" #include "bz-world-map.h" #define OPACITY_MULTIPLIER 2 struct _BzWorldMap { GtkWidget parent_instance; BzWorldMapParser *parser; GListModel *countries; GListModel *model; double min_lon; double max_lon; double min_lat; double max_lat; GskPath **country_paths; guint *path_to_country; guint n_paths; gboolean cache_valid; int last_width; int last_height; GtkEventController *motion; GtkGesture *gesture; double offset_x; double offset_y; double scale; int hovered_country; double motion_x; double motion_y; guint max_downloads; GtkWidget *tooltip_box; GtkWidget *tooltip_label1; GtkWidget *tooltip_prefix_label; GtkWidget *tooltip_label2; }; G_DEFINE_FINAL_TYPE (BzWorldMap, bz_world_map, GTK_TYPE_WIDGET) enum { PROP_0, PROP_MODEL, LAST_PROP }; static GParamSpec *props[LAST_PROP] = { 0 }; static guint get_downloads_for_country (BzWorldMap *self, const char *iso_code) { guint n_items = 0; if (self->model == NULL) return 0; n_items = g_list_model_get_n_items (self->model); for (guint i = 0; i < n_items; i++) { g_autoptr (BzCountryDataPoint) point = g_list_model_get_item (self->model, i); const char *country_code = bz_country_data_point_get_country_code (point); if (g_strcmp0 (country_code, iso_code) == 0) return bz_country_data_point_get_downloads (point); } return 0; } static void calculate_max_downloads (BzWorldMap *self) { guint n_items = 0; self->max_downloads = 0; if (self->model == NULL) return; n_items = g_list_model_get_n_items (self->model); for (guint i = 0; i < n_items; i++) { g_autoptr (BzCountryDataPoint) point = g_list_model_get_item (self->model, i); guint downloads = bz_country_data_point_get_downloads (point); if (downloads > self->max_downloads) self->max_downloads = downloads; } } static void calculate_bounds (BzWorldMap *self) { guint n_items = 0; if (self->countries == NULL) return; n_items = g_list_model_get_n_items (self->countries); self->min_lon = 180.0; self->max_lon = -180.0; self->min_lat = 90.0; self->max_lat = -90.0; for (guint i = 0; i < n_items; i++) { g_autoptr (BzCountry) country = g_list_model_get_item (self->countries, i); GVariant *coordinates = bz_country_get_coordinates (country); GVariantIter poly_iter, ring_iter, point_iter; GVariant *polygon = NULL; GVariant *ring = NULL; double lon, lat; if (coordinates == NULL) continue; g_variant_iter_init (&poly_iter, coordinates); while ((polygon = g_variant_iter_next_value (&poly_iter))) { g_variant_iter_init (&ring_iter, polygon); while ((ring = g_variant_iter_next_value (&ring_iter))) { g_variant_iter_init (&point_iter, ring); while (g_variant_iter_next (&point_iter, "(dd)", &lon, &lat)) { if (lon < self->min_lon) self->min_lon = lon; if (lon > self->max_lon) self->max_lon = lon; if (lat < self->min_lat) self->min_lat = lat; if (lat > self->max_lat) self->max_lat = lat; } g_clear_pointer (&ring, g_variant_unref); } g_clear_pointer (&polygon, g_variant_unref); } } } static void project_point (BzWorldMap *self, double lon, double lat, double width, double height, double *x, double *y) { double lon_range = self->max_lon - self->min_lon; double lat_range = self->max_lat - self->min_lat; *x = ((lon - self->min_lon) / lon_range) * width; *y = height - ((lat - self->min_lat) / lat_range) * height; } static void calculate_transform (BzWorldMap *self, double widget_width, double widget_height, double map_width, double map_height) { double scale_x = widget_width / map_width; double scale_y = widget_height / map_height; self->scale = MIN (scale_x, scale_y); self->offset_x = (widget_width - map_width * self->scale) / 2.0; self->offset_y = (widget_height - map_height * self->scale) / 2.0; } static void build_paths (BzWorldMap *self, double width, double height) { guint n_items = 0; guint path_index = 0; if (self->countries == NULL) return; if (self->country_paths != NULL) { for (guint i = 0; i < self->n_paths; i++) g_clear_pointer (&self->country_paths[i], gsk_path_unref); g_clear_pointer (&self->country_paths, g_free); } g_clear_pointer (&self->path_to_country, g_free); n_items = g_list_model_get_n_items (self->countries); self->n_paths = 0; for (guint i = 0; i < n_items; i++) { g_autoptr (BzCountry) country = NULL; GVariant *coordinates = NULL; GVariantIter poly_iter = { 0 }; GVariant *polygon = NULL; country = g_list_model_get_item (self->countries, i); coordinates = bz_country_get_coordinates (country); if (coordinates == NULL) continue; g_variant_iter_init (&poly_iter, coordinates); while ((polygon = g_variant_iter_next_value (&poly_iter))) { self->n_paths += g_variant_n_children (polygon); g_clear_pointer (&polygon, g_variant_unref); } } self->country_paths = g_new0 (GskPath *, self->n_paths); self->path_to_country = g_new0 (guint, self->n_paths); for (guint i = 0; i < n_items; i++) { g_autoptr (BzCountry) country = NULL; GVariant *coordinates = NULL; GVariantIter poly_iter = { 0 }; GVariant *polygon = NULL; country = g_list_model_get_item (self->countries, i); coordinates = bz_country_get_coordinates (country); if (coordinates == NULL) continue; g_variant_iter_init (&poly_iter, coordinates); while ((polygon = g_variant_iter_next_value (&poly_iter))) { GVariantIter ring_iter = { 0 }; GVariant *ring = NULL; g_variant_iter_init (&ring_iter, polygon); while ((ring = g_variant_iter_next_value (&ring_iter))) { g_autoptr (GskPathBuilder) builder = NULL; GVariantIter point_iter = { 0 }; double lon = 0.0; double lat = 0.0; gboolean first = TRUE; builder = gsk_path_builder_new (); g_variant_iter_init (&point_iter, ring); while (g_variant_iter_next (&point_iter, "(dd)", &lon, &lat)) { double x = 0.0; double y = 0.0; project_point (self, lon, lat, width, height, &x, &y); if (first) { gsk_path_builder_move_to (builder, x, y); first = FALSE; } else { gsk_path_builder_line_to (builder, x, y); } } gsk_path_builder_close (builder); self->country_paths[path_index] = gsk_path_builder_to_path (builder); self->path_to_country[path_index] = i; path_index++; g_clear_pointer (&ring, g_variant_unref); } g_clear_pointer (&polygon, g_variant_unref); } } self->cache_valid = TRUE; } static void invalidate_cache (BzWorldMap *self) { self->cache_valid = FALSE; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void on_style_changed (AdwStyleManager *style_manager, GParamSpec *pspec, BzWorldMap *self) { invalidate_cache (self); } static void update_hovered_country (BzWorldMap *self, double x, double y) { double map_x; double map_y; map_x = (x - self->offset_x) / self->scale; map_y = (y - self->offset_y) / self->scale; self->motion_x = x; self->motion_y = y; self->hovered_country = -1; for (guint i = 0; i < self->n_paths; i++) { if (gsk_path_in_fill (self->country_paths[i], &GRAPHENE_POINT_INIT (map_x, map_y), GSK_FILL_RULE_WINDING)) { self->hovered_country = self->path_to_country[i]; break; } } } static void motion_event (BzWorldMap *self, gdouble x, gdouble y, GtkEventControllerMotion *controller) { int old_hovered; old_hovered = self->hovered_country; update_hovered_country (self, x, y); if (old_hovered != self->hovered_country || self->hovered_country >= 0) gtk_widget_queue_draw (GTK_WIDGET (self)); } static void motion_leave (BzWorldMap *self, GtkEventControllerMotion *controller) { if (self->hovered_country != -1) { self->hovered_country = -1; self->motion_x = -1.0; self->motion_y = -1.0; gtk_widget_queue_draw (GTK_WIDGET (self)); } } static void gesture_begin (BzWorldMap *self, double start_x, double start_y, GtkGestureDrag *gesture) { update_hovered_country (self, start_x, start_y); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void gesture_update (BzWorldMap *self, double offset_x, double offset_y, GtkGestureDrag *gesture) { double start_x; double start_y; gtk_gesture_drag_get_start_point (gesture, &start_x, &start_y); update_hovered_country (self, start_x + offset_x, start_y + offset_y); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void gesture_end (BzWorldMap *self, double offset_x, double offset_y, GtkGestureDrag *gesture) { gtk_widget_queue_draw (GTK_WIDGET (self)); } static void bz_world_map_dispose (GObject *object) { BzWorldMap *self = BZ_WORLD_MAP (object); g_signal_handlers_disconnect_by_func (adw_style_manager_get_default (), on_style_changed, self); if (self->country_paths != NULL) { for (guint i = 0; i < self->n_paths; i++) g_clear_pointer (&self->country_paths[i], gsk_path_unref); g_free (self->country_paths); self->country_paths = NULL; } if (self->path_to_country != NULL) { g_free (self->path_to_country); self->path_to_country = NULL; } if (self->tooltip_box != NULL) gtk_widget_unparent (self->tooltip_box); g_clear_object (&self->countries); g_clear_object (&self->model); G_OBJECT_CLASS (bz_world_map_parent_class)->dispose (object); } static void bz_world_map_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzWorldMap *self = BZ_WORLD_MAP (object); switch (prop_id) { case PROP_MODEL: g_value_set_object (value, self->model); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_world_map_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzWorldMap *self = BZ_WORLD_MAP (object); switch (prop_id) { case PROP_MODEL: g_clear_object (&self->model); self->model = g_value_dup_object (value); calculate_max_downloads (self); gtk_widget_queue_draw (GTK_WIDGET (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_world_map_size_allocate (GtkWidget *widget, int width, int height, int baseline) { BzWorldMap *self = BZ_WORLD_MAP (widget); if (width == self->last_width && height == self->last_height) return; self->last_width = width; self->last_height = height; invalidate_cache (self); } static void bz_world_map_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzWorldMap *self = BZ_WORLD_MAP (widget); double widget_width = gtk_widget_get_width (widget); double widget_height = gtk_widget_get_height (widget); AdwStyleManager *style_manager = adw_style_manager_get_default (); g_autoptr (GdkRGBA) accent_color = adw_style_manager_get_accent_color_rgba (style_manager); GdkRGBA stroke_color = { 0 }; g_autoptr (GskStroke) stroke = gsk_stroke_new (0.5); g_autoptr (GskStroke) hover_stroke = gsk_stroke_new (1.5); double map_width = 1000.0; double map_height = 500.0; if (self->countries == NULL) return; gtk_widget_get_color (widget, &stroke_color); stroke_color.alpha = 0.3; if (!self->cache_valid) build_paths (self, map_width, map_height); calculate_transform (self, widget_width, widget_height, map_width, map_height); gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (self->offset_x, self->offset_y)); gtk_snapshot_scale (snapshot, self->scale, self->scale); for (guint i = 0; i < self->n_paths; i++) { guint country_idx = self->path_to_country[i]; g_autoptr (BzCountry) country = g_list_model_get_item (self->countries, country_idx); const char *iso_code = bz_country_get_iso_code (country); guint downloads = get_downloads_for_country (self, iso_code); GdkRGBA fill_color = *accent_color; if (self->max_downloads > 0 && downloads > 0) { double ratio = (double) downloads / (double) self->max_downloads; fill_color.alpha = CLAMP (ratio * OPACITY_MULTIPLIER, 0.1, 1.0); } else { fill_color.alpha = 0.0; } gtk_snapshot_append_fill (snapshot, self->country_paths[i], GSK_FILL_RULE_WINDING, &fill_color); gtk_snapshot_append_stroke (snapshot, self->country_paths[i], stroke, &stroke_color); } gtk_snapshot_restore (snapshot); if (self->hovered_country >= 0) { GdkRGBA hover_color = stroke_color; hover_color.alpha = 1.0; gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (self->offset_x, self->offset_y)); gtk_snapshot_scale (snapshot, self->scale, self->scale); for (guint i = 0; i < self->n_paths; i++) { if (self->path_to_country[i] == (guint) self->hovered_country) { gtk_snapshot_append_stroke (snapshot, self->country_paths[i], hover_stroke, &hover_color); } } gtk_snapshot_restore (snapshot); } if (self->hovered_country >= 0 && self->motion_x >= 0.0 && self->motion_y >= 0.0) { g_autoptr (BzCountry) country = g_list_model_get_item (self->countries, self->hovered_country); const char *iso_code = bz_country_get_iso_code (country); guint download_number = get_downloads_for_country (self, iso_code); const char *country_name = bz_country_get_name (country); g_autofree char *label1_text = g_strdup_printf ("<b>%s</b>", country_name); g_autofree char *label2_text = g_strdup_printf ("%'u", download_number); GtkRequisition natural_size; double card_x = 0.0; double card_y = 0.0; gtk_label_set_markup (GTK_LABEL (self->tooltip_label1), label1_text); /* Translators: As in, "1 Install" / "100 Installs" */ gtk_label_set_text (GTK_LABEL (self->tooltip_prefix_label), ngettext ("Install", "Installs", download_number)); gtk_label_set_text (GTK_LABEL (self->tooltip_label2), label2_text); gtk_widget_get_preferred_size (self->tooltip_box, NULL, &natural_size); gtk_widget_allocate (self->tooltip_box, natural_size.width, natural_size.height, -1, NULL); if (self->motion_x > widget_width / 2.0) card_x = self->motion_x - natural_size.width - 10.0; else card_x = self->motion_x + 10.0; card_y = self->motion_y + 10.0; gtk_snapshot_save (snapshot); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (card_x, card_y)); gtk_widget_snapshot_child (widget, self->tooltip_box, snapshot); gtk_snapshot_restore (snapshot); } } static void bz_world_map_class_init (BzWorldMapClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_world_map_dispose; object_class->get_property = bz_world_map_get_property; object_class->set_property = bz_world_map_set_property; props[PROP_MODEL] = g_param_spec_object ( "model", NULL, NULL, G_TYPE_LIST_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); widget_class->snapshot = bz_world_map_snapshot; widget_class->size_allocate = bz_world_map_size_allocate; } static void bz_world_map_init (BzWorldMap *self) { AdwStyleManager *style_manager = adw_style_manager_get_default (); g_autoptr (GError) error = NULL; GtkWidget *inner_box = NULL; GtkWidget *label2_box = NULL; self->parser = bz_world_map_parser_new (); self->hovered_country = -1; self->motion_x = -1.0; self->motion_y = -1.0; self->max_downloads = 0; self->motion = gtk_event_controller_motion_new (); g_signal_connect_swapped (self->motion, "motion", G_CALLBACK (motion_event), self); g_signal_connect_swapped (self->motion, "leave", G_CALLBACK (motion_leave), self); gtk_widget_add_controller (GTK_WIDGET (self), self->motion); self->gesture = gtk_gesture_drag_new (); gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (self->gesture), TRUE); g_signal_connect_swapped (self->gesture, "drag-begin", G_CALLBACK (gesture_begin), self); g_signal_connect_swapped (self->gesture, "drag-update", G_CALLBACK (gesture_update), self); g_signal_connect_swapped (self->gesture, "drag-end", G_CALLBACK (gesture_end), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (self->gesture)); self->tooltip_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_widget_add_css_class (self->tooltip_box, "floating-tooltip"); gtk_widget_add_css_class (self->tooltip_box, "card"); inner_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_widget_set_margin_start (inner_box, 12); gtk_widget_set_margin_end (inner_box, 12); gtk_widget_set_margin_top (inner_box, 12); gtk_widget_set_margin_bottom (inner_box, 12); self->tooltip_label1 = gtk_label_new (""); gtk_widget_add_css_class (self->tooltip_label1, "heading"); gtk_label_set_xalign (GTK_LABEL (self->tooltip_label1), 0.0); gtk_label_set_use_markup (GTK_LABEL (self->tooltip_label1), TRUE); gtk_box_append (GTK_BOX (inner_box), self->tooltip_label1); label2_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); self->tooltip_label2 = gtk_label_new (""); gtk_widget_add_css_class (self->tooltip_label2, "monospace"); gtk_label_set_xalign (GTK_LABEL (self->tooltip_label2), 0.0); gtk_box_append (GTK_BOX (label2_box), self->tooltip_label2); self->tooltip_prefix_label = gtk_label_new (""); gtk_widget_add_css_class (self->tooltip_prefix_label, "body"); gtk_widget_add_css_class (self->tooltip_prefix_label, "dim-label"); gtk_label_set_xalign (GTK_LABEL (self->tooltip_prefix_label), 0.0); gtk_box_append (GTK_BOX (label2_box), self->tooltip_prefix_label); gtk_box_append (GTK_BOX (inner_box), label2_box); gtk_box_append (GTK_BOX (self->tooltip_box), inner_box); gtk_widget_set_parent (self->tooltip_box, GTK_WIDGET (self)); g_signal_connect (style_manager, "notify::dark", G_CALLBACK (on_style_changed), self); g_signal_connect (style_manager, "notify::accent-color", G_CALLBACK (on_style_changed), self); if (bz_world_map_parser_load_from_resource (self->parser, "/io/github/kolunmi/Bazaar/countries.gvariant", &error)) { self->countries = g_object_ref (bz_world_map_parser_get_countries (self->parser)); calculate_bounds (self); g_clear_object (&self->parser); } else { g_warning ("BzWorldMap: Failed to load countries: %s", error->message); g_clear_object (&self->parser); } } GtkWidget * bz_world_map_new (void) { return g_object_new (BZ_TYPE_WORLD_MAP, NULL); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-world-map.h��������������������������������������������������������0000664�0000000�0000000�00000002162�15240005042�0020612�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-world-map.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_WORLD_MAP (bz_world_map_get_type ()) G_DECLARE_FINAL_TYPE (BzWorldMap, bz_world_map, BZ, WORLD_MAP, GtkWidget) GtkWidget * bz_world_map_new (void); GListModel * bz_world_map_get_model (BzWorldMap *self); void bz_world_map_set_model (BzWorldMap *self, GListModel *model); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-yaml-parser.c������������������������������������������������������0000664�0000000�0000000�00000122200�15240005042�0021133�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-yaml-parser.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::YAML" #include "config.h" #include <gtk/gtk.h> #include <xmlb.h> #include <yaml.h> #include "bz-parser.h" #include "bz-yaml-parser.h" #include "util.h" /* clang-format off */ G_DEFINE_QUARK (bz-yaml-error-quark, bz_yaml_error); /* clang-format on */ static void deinit_schema_node (gpointer data); BZ_DEFINE_DATA ( schema_node, SchemaNode, { int kind; union { struct { char *vtype; } scalar; struct { GType type; GHashTable *type_hints; } object; struct { SchemaNodeData *child; } list; struct { GHashTable *children; } mappings; }; }, deinit_schema_node (self);) struct _BzYamlParser { GObject parent_instance; SchemaNodeData *schema; }; static void parser_iface_init (BzParserInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzYamlParser, bz_yaml_parser, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (BZ_TYPE_PARSER, parser_iface_init)) enum { KIND_SCALAR, KIND_OBJECT, KIND_LIST, KIND_MAPPINGS, }; static SchemaNodeData * compile_schema (XbNode *node); static gboolean parse (BzYamlParser *self, yaml_parser_t *parser, yaml_event_t *event, gboolean parse_first, gboolean toplevel, SchemaNodeData *schema, GHashTable *output, GHashTable *anchors, GPtrArray *path_stack, GError **error); static GObject * parse_object (BzYamlParser *self, yaml_parser_t *parser, yaml_event_t *event, GType object_gtype, GHashTable *type_hints, GHashTable *anchors, const char *prop_path, GError **error); static char * join_path_stack (GPtrArray *path_stack); static void destroy_gvalue (GValue *value); static GValue * make_gvalue_alloc (GType type); static GValue * copy_gvalue_alloc (GValue *value); static void bz_yaml_parser_dispose (GObject *object) { BzYamlParser *self = BZ_YAML_PARSER (object); g_clear_pointer (&self->schema, schema_node_data_unref); G_OBJECT_CLASS (bz_yaml_parser_parent_class)->dispose (object); } static void bz_yaml_parser_class_init (BzYamlParserClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = bz_yaml_parser_dispose; g_type_ensure (GTK_TYPE_STRING_OBJECT); } static void bz_yaml_parser_init (BzYamlParser *self) { } static GHashTable * bz_yaml_parser_real_process_bytes (BzParser *iface_self, GBytes *bytes, GError **error) { BzYamlParser *self = BZ_YAML_PARSER (iface_self); g_autoptr (GError) local_error = NULL; gsize bytes_size = 0; const guchar *bytes_data = NULL; yaml_parser_t parser = { 0 }; yaml_event_t event = { 0 }; g_autoptr (GHashTable) output = NULL; g_autoptr (GHashTable) anchors = NULL; g_autoptr (GPtrArray) path_stack = NULL; gboolean result = FALSE; g_return_val_if_fail (BZ_IS_YAML_PARSER (self), NULL); g_return_val_if_fail (bytes != NULL, NULL); bytes_data = g_bytes_get_data (bytes, &bytes_size); yaml_parser_initialize (&parser); yaml_parser_set_input_string (&parser, bytes_data, bytes_size); output = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) destroy_gvalue); anchors = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) destroy_gvalue); path_stack = g_ptr_array_new_with_free_func (g_free); result = parse ( self, &parser, &event, TRUE, TRUE, self->schema, output, anchors, path_stack, &local_error); yaml_parser_delete (&parser); if (result) return g_steal_pointer (&output); else { g_propagate_error (error, g_steal_pointer (&local_error)); return NULL; } } static void parser_iface_init (BzParserInterface *iface) { iface->process_bytes = bz_yaml_parser_real_process_bytes; } BzYamlParser * bz_yaml_parser_new_for_resource_schema (const char *path) { g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; const char *resource_data = NULL; g_autoptr (XbSilo) silo = NULL; g_autoptr (XbNode) root = NULL; g_autoptr (SchemaNodeData) schema = NULL; g_autoptr (BzYamlParser) parser = NULL; g_return_val_if_fail (path != NULL, NULL); bytes = g_resources_lookup_data ( path, G_RESOURCE_LOOKUP_FLAGS_NONE, &local_error); if (bytes == NULL) g_critical ("Could not load internal resource: %s", local_error->message); g_assert (bytes != NULL); resource_data = g_bytes_get_data (bytes, NULL); silo = xb_silo_new_from_xml (resource_data, &local_error); if (silo == NULL) g_critical ("Could not parse internal xml resource: %s", local_error->message); g_assert (silo != NULL); root = xb_silo_get_root (silo); parser = g_object_new (BZ_TYPE_YAML_PARSER, NULL); parser->schema = compile_schema (root); return g_steal_pointer (&parser); } static SchemaNodeData * compile_schema (XbNode *node) { const char *element = NULL; g_autoptr (SchemaNodeData) schema = NULL; element = xb_node_get_element (node); schema = schema_node_data_new (); #define ERROR_OUT(...) \ G_STMT_START \ { \ g_critical ("Fatal: internal schema: " __VA_ARGS__); \ g_assert (FALSE); \ } \ G_STMT_END if (g_strcmp0 (element, "scalar") == 0) { const char *type = NULL; type = xb_node_get_attr (node, "type"); if (type == NULL) ERROR_OUT ("scalar must have a type"); if (!g_variant_type_is_basic ((const GVariantType *) type)) ERROR_OUT ("invalid variant type for scalar '%s'", type); schema->kind = KIND_SCALAR; schema->scalar.vtype = g_strdup (type); } else if (g_strcmp0 (element, "object") == 0) { const char *class = NULL; GType gtype = G_TYPE_INVALID; g_autoptr (GTypeClass) gtype_class = NULL; XbNode *child = NULL; class = xb_node_get_attr (node, "class"); if (class == NULL) ERROR_OUT ("object must have a class"); gtype = g_type_from_name (class); if (gtype == G_TYPE_INVALID || !g_type_is_a (gtype, G_TYPE_OBJECT)) ERROR_OUT ("'%s' is not a valid object class", class); schema->kind = KIND_OBJECT; schema->object.type = gtype; schema->object.type_hints = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, NULL); gtype_class = g_type_class_ref (gtype); child = xb_node_get_child (node); while (child != NULL) { const char *child_element = NULL; const char *name = NULL; GParamSpec *property = NULL; const char *typehint_name = NULL; GType typehint_gtype = G_TYPE_INVALID; XbNode *next = NULL; child_element = xb_node_get_element (child); if (g_strcmp0 (child_element, "typehint") != 0) ERROR_OUT ("\"typehint\" is the only valid child element of \"object\""); name = xb_node_get_attr (child, "name"); if (name == NULL) ERROR_OUT ("typehint must have a name"); /* TODO: implement recursive checking */ if (strchr (name, '.') == NULL) { property = g_object_class_find_property (G_OBJECT_CLASS (gtype_class), name); if (property == NULL) ERROR_OUT ("typehint property '%s' is invalid", name); } typehint_name = xb_node_get_attr (child, "type"); if (typehint_name == NULL) ERROR_OUT ("typehint must have a type"); typehint_gtype = g_type_from_name (typehint_name); if (typehint_gtype == G_TYPE_INVALID || !g_type_is_a (typehint_gtype, G_TYPE_OBJECT)) ERROR_OUT ("'%s' is not a valid object class", typehint_name); g_hash_table_replace ( schema->object.type_hints, g_strdup (name), GSIZE_TO_POINTER (typehint_gtype)); next = xb_node_get_next (child); g_object_unref (child); child = next; } } else if (g_strcmp0 (element, "list") == 0) { g_autoptr (XbNode) child = NULL; child = xb_node_get_child (node); if (child == NULL) ERROR_OUT ("list must have a child"); schema->kind = KIND_LIST; schema->list.child = compile_schema (child); } else if (g_strcmp0 (element, "mappings") == 0) { XbNode *child = NULL; schema->kind = KIND_MAPPINGS; schema->mappings.children = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, schema_node_data_unref); child = xb_node_get_child (node); while (child != NULL) { const char *child_element = NULL; const char *key = NULL; g_autoptr (XbNode) child_child = NULL; XbNode *next = NULL; child_element = xb_node_get_element (child); if (g_strcmp0 (child_element, "mapping") != 0) ERROR_OUT ("\"mapping\" is the only valid child element of \"mappings\""); key = xb_node_get_attr (child, "key"); if (key == NULL) ERROR_OUT ("mapping must have a key"); child_child = xb_node_get_child (child); if (child == NULL) ERROR_OUT ("mapping must have a child"); g_hash_table_replace ( schema->mappings.children, g_strdup (key), compile_schema (child_child)); next = xb_node_get_next (child); g_object_unref (child); child = next; } } else ERROR_OUT ("unrecognized element '%s'", element); #undef ERROR_OUT return g_steal_pointer (&schema); } static gboolean parse (BzYamlParser *self, yaml_parser_t *parser, yaml_event_t *event, gboolean parse_first, gboolean toplevel, SchemaNodeData *schema, GHashTable *output, GHashTable *anchors, GPtrArray *path_stack, GError **error) { if (parse_first && !yaml_parser_parse (parser, event)) { g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_INVALID_YAML, "Failed to parse YAML at line %zu, column %zu: %s", parser->problem_mark.line, parser->problem_mark.column, parser->problem); return FALSE; } #define NEXT_EVENT() \ G_STMT_START \ { \ yaml_event_delete (event); \ if (!yaml_parser_parse (parser, event)) \ { \ g_set_error ( \ error, \ BZ_YAML_ERROR, \ BZ_YAML_ERROR_INVALID_YAML, \ "Failed to parse YAML at line %zu, column %zu: %s", \ parser->problem_mark.line, \ parser->problem_mark.column, \ parser->problem); \ return FALSE; \ } \ } \ G_STMT_END #define EXPECT(event_type, string_type) \ if (event->type != (event_type)) \ { \ g_set_error ( \ error, \ BZ_YAML_ERROR, \ BZ_YAML_ERROR_DOES_NOT_CONFORM, \ "Failed to validate YAML against schema at line %zu, column %zu: " \ "expected " string_type " here", \ event->start_mark.line, \ event->start_mark.column); \ yaml_event_delete (event); \ return FALSE; \ } #define TRY_ALIAS(var, gtype, string_type) \ if (event->type == YAML_ALIAS_EVENT) \ { \ GValue *_value = NULL; \ \ _value = g_hash_table_lookup ( \ anchors, \ event->data.alias.anchor); \ if (_value == NULL) \ { \ g_set_error ( \ error, \ BZ_YAML_ERROR, \ BZ_YAML_ERROR_INVALID_YAML, \ "Failed to resolve YAML alias at line %zu, column %zu: " \ "the anchor \"%s\" does not yet exist", \ event->start_mark.line, \ event->start_mark.column, \ (const char *) event->data.alias.anchor); \ yaml_event_delete (event); \ return FALSE; \ } \ \ if (!G_VALUE_HOLDS (_value, (gtype))) \ { \ g_set_error ( \ error, \ BZ_YAML_ERROR, \ BZ_YAML_ERROR_DOES_NOT_CONFORM, \ "Failed to validate YAML against schema at line %zu, column %zu: " \ "the alias needs to be of type " string_type " here", \ event->start_mark.line, \ event->start_mark.column); \ yaml_event_delete (event); \ return FALSE; \ } \ \ (var) = copy_gvalue_alloc (_value); \ } if (toplevel) { EXPECT (YAML_STREAM_START_EVENT, "start of stream"); NEXT_EVENT (); EXPECT (YAML_DOCUMENT_START_EVENT, "start of document"); NEXT_EVENT (); } switch (schema->kind) { case KIND_SCALAR: { GValue *value = NULL; TRY_ALIAS (value, G_TYPE_VARIANT, "scalar"); if (value != NULL) { GVariant *variant = NULL; variant = g_value_get_variant (value); if (!g_variant_type_equal ( g_variant_get_type (variant), (const GVariantType *) schema->scalar.vtype)) { g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_DOES_NOT_CONFORM, "Failed to validate YAML against schema at line %zu, column %zu: " "the alias needs to be of scalar type %s here", event->start_mark.line, event->start_mark.column, schema->scalar.vtype); destroy_gvalue (value); yaml_event_delete (event); return FALSE; } } else { g_autofree char *anchor = NULL; g_autoptr (GVariant) variant = NULL; EXPECT (YAML_SCALAR_EVENT, "scalar"); anchor = bz_maybe_strdup ((const char *) event->data.scalar.anchor); if (g_variant_type_equal ((const GVariantType *) schema->scalar.vtype, G_VARIANT_TYPE_STRING)) variant = g_variant_new_string ((const char *) event->data.scalar.value); else { g_autoptr (GError) local_error = NULL; variant = g_variant_parse ( (const GVariantType *) schema->scalar.vtype, (const char *) event->data.scalar.value, NULL, NULL, &local_error); if (variant == NULL) { g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_BAD_SCALAR, "Failed to parse scalar variant at line %zu, column %zu: " "%s", event->start_mark.line, event->start_mark.column, local_error->message); yaml_event_delete (event); return FALSE; } } value = make_gvalue_alloc (G_TYPE_VARIANT); g_value_set_variant (value, g_steal_pointer (&variant)); if (anchor != NULL) g_hash_table_replace ( anchors, g_steal_pointer (&anchor), copy_gvalue_alloc (value)); } g_hash_table_replace (output, join_path_stack (path_stack), value); } break; case KIND_OBJECT: { g_autoptr (GObject) object = NULL; GValue *value = NULL; TRY_ALIAS (value, schema->object.type, "object"); if (value == NULL) { object = parse_object ( self, parser, event, schema->object.type, schema->object.type_hints, anchors, NULL, error); if (object == NULL) /* event is already cleaned up */ return FALSE; value = make_gvalue_alloc (schema->object.type); g_value_set_object (value, object); } g_hash_table_replace (output, join_path_stack (path_stack), value); } break; case KIND_LIST: { GValue *value = NULL; TRY_ALIAS (value, G_TYPE_PTR_ARRAY, "list"); if (value == NULL) { g_autofree char *anchor = NULL; g_autoptr (GPtrArray) list = NULL; EXPECT (YAML_SEQUENCE_START_EVENT, "list"); anchor = bz_maybe_strdup ((const char *) event->data.sequence_start.anchor); list = g_ptr_array_new_with_free_func ((GDestroyNotify) destroy_gvalue); for (;;) { g_autoptr (GHashTable) list_output = NULL; g_autoptr (GPtrArray) list_path_stack = NULL; gboolean result = FALSE; GValue *append = NULL; NEXT_EVENT (); if (event->type == YAML_SEQUENCE_END_EVENT) break; list_output = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) destroy_gvalue); list_path_stack = g_ptr_array_new_with_free_func (g_free); result = parse ( self, parser, event, FALSE, FALSE, schema->list.child, list_output, anchors, list_path_stack, error); if (!result) /* event is already cleaned up */ return FALSE; append = make_gvalue_alloc (G_TYPE_HASH_TABLE); g_value_set_boxed (append, list_output); g_ptr_array_add (list, append); } value = make_gvalue_alloc (G_TYPE_PTR_ARRAY); g_value_set_boxed (value, list); if (anchor != NULL) g_hash_table_replace ( anchors, g_steal_pointer (&anchor), copy_gvalue_alloc (value)); } g_hash_table_replace (output, join_path_stack (path_stack), value); } break; case KIND_MAPPINGS: { EXPECT (YAML_MAPPING_START_EVENT, "mappings"); for (;;) { g_autofree char *key = NULL; SchemaNodeData *map_schema = NULL; gboolean result = FALSE; NEXT_EVENT (); if (event->type == YAML_MAPPING_END_EVENT) break; EXPECT (YAML_SCALAR_EVENT, "scalar key"); key = g_strdup ((const char *) event->data.scalar.value); map_schema = g_hash_table_lookup (schema->mappings.children, key); if (map_schema == NULL) { g_autofree char *path = NULL; path = join_path_stack (path_stack); g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_DOES_NOT_CONFORM, "Failed to validate YAML against schema at line %zu, column %zu: " "key '%s' shouldn't exist at path %s", event->start_mark.line, event->start_mark.column, key, path); yaml_event_delete (event); return FALSE; } g_ptr_array_add (path_stack, g_steal_pointer (&key)); result = parse ( self, parser, event, TRUE, FALSE, map_schema, output, anchors, path_stack, error); if (!result) /* event is already cleaned up */ return FALSE; g_ptr_array_set_size (path_stack, path_stack->len - 1); } } break; default: g_assert_not_reached (); } if (toplevel) { NEXT_EVENT (); EXPECT (YAML_DOCUMENT_END_EVENT, "end of document"); NEXT_EVENT (); EXPECT (YAML_STREAM_END_EVENT, "end of stream"); } yaml_event_delete (event); return TRUE; } static GObject * parse_object (BzYamlParser *self, yaml_parser_t *parser, yaml_event_t *event, GType object_gtype, GHashTable *type_hints, GHashTable *anchors, const char *prop_path, GError **error) { GValue *value = NULL; g_autofree char *object_anchor = NULL; g_autoptr (GTypeClass) gtype_class = NULL; g_autoptr (GObject) object = NULL; TRY_ALIAS (value, object_gtype, "object mapping"); if (value != NULL) { object = g_value_dup_object (value); destroy_gvalue (value); return g_steal_pointer (&object); } EXPECT (YAML_MAPPING_START_EVENT, "object mapping"); object_anchor = bz_maybe_strdup ((const char *) event->data.mapping_start.anchor); gtype_class = g_type_class_ref (object_gtype); object = g_object_new (object_gtype, NULL); for (;;) { g_autofree char *property = NULL; GParamSpec *spec = NULL; NEXT_EVENT (); if (event->type == YAML_MAPPING_END_EVENT) break; EXPECT (YAML_SCALAR_EVENT, "scalar key"); property = g_strdup ((const char *) event->data.scalar.value); spec = g_object_class_find_property (G_OBJECT_CLASS (gtype_class), property); if (spec == NULL) { g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_DOES_NOT_CONFORM, "Failed to validate YAML against schema at line %zu, column %zu: " "property '%s' doesn't exist on type %s", event->start_mark.line, event->start_mark.column, property, g_type_name (object_gtype)); yaml_event_delete (event); return FALSE; } NEXT_EVENT (); if (g_type_is_a (spec->value_type, G_TYPE_LIST_MODEL)) { g_autofree char *replace_prop_path = NULL; GType element_gtype = 0; g_autoptr (GListModel) list = NULL; if (prop_path != NULL) replace_prop_path = g_strdup_printf ("%s.%s", prop_path, property); element_gtype = GPOINTER_TO_SIZE (g_hash_table_lookup ( type_hints, replace_prop_path != NULL ? replace_prop_path : property)); TRY_ALIAS (value, G_TYPE_LIST_MODEL, "mappings"); if (value != NULL) { list = g_value_dup_object (value); if (!G_IS_LIST_MODEL (list) || g_list_model_get_item_type (list) != element_gtype) { g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_DOES_NOT_CONFORM, "Failed to validate YAML against schema at line %zu, column %zu: " "the alias needs to be a list of object type %s here", event->start_mark.line, event->start_mark.column, g_type_name (element_gtype)); destroy_gvalue (value); yaml_event_delete (event); return FALSE; } } else { g_autofree char *anchor = NULL; EXPECT (YAML_SEQUENCE_START_EVENT, "sequence"); anchor = bz_maybe_strdup ((const char *) event->data.sequence_start.anchor); if (element_gtype == GTK_TYPE_STRING_OBJECT) { list = (GListModel *) gtk_string_list_new (NULL); for (;;) { NEXT_EVENT (); if (event->type == YAML_SEQUENCE_END_EVENT) break; EXPECT (YAML_SCALAR_EVENT, "scalar list value"); gtk_string_list_append ( GTK_STRING_LIST (list), (const char *) event->data.scalar.value); } } else { if (element_gtype == 0) element_gtype = G_TYPE_OBJECT; list = (GListModel *) g_list_store_new (element_gtype); for (;;) { g_autoptr (GObject) child_object = NULL; NEXT_EVENT (); if (event->type == YAML_SEQUENCE_END_EVENT) break; child_object = parse_object ( self, parser, event, element_gtype, type_hints, anchors, replace_prop_path != NULL ? replace_prop_path : property, error); if (child_object == NULL) /* event is already cleaned up */ return FALSE; g_list_store_append (G_LIST_STORE (list), child_object); } } if (anchor != NULL) { value = make_gvalue_alloc (G_TYPE_LIST_MODEL); g_value_set_object (value, list); g_hash_table_replace ( anchors, g_steal_pointer (&anchor), value); } } g_object_set (object, property, list, NULL); } else if (g_type_is_a (spec->value_type, G_TYPE_OBJECT)) { g_autofree char *replace_prop_path = NULL; g_autoptr (GObject) prop_object = NULL; if (prop_path != NULL) replace_prop_path = g_strdup_printf ("%s.%s", prop_path, property); prop_object = parse_object ( self, parser, event, spec->value_type, type_hints, anchors, replace_prop_path != NULL ? replace_prop_path : property, error); if (prop_object == NULL) /* event is already cleaned up */ return FALSE; g_object_set (object, property, prop_object, NULL); } else if (g_type_is_a (spec->value_type, G_TYPE_ENUM)) { g_autoptr (GEnumClass) class = NULL; GEnumValue *enum_value = NULL; TRY_ALIAS (value, spec->value_type, "scalar enum value"); if (value != NULL) { g_object_set_property (object, property, value); destroy_gvalue (value); } else { g_autofree char *anchor = NULL; EXPECT (YAML_SCALAR_EVENT, "scalar enum value"); anchor = bz_maybe_strdup ((const char *) event->data.scalar.anchor); class = g_type_class_ref (spec->value_type); enum_value = g_enum_get_value_by_nick ( class, (const char *) event->data.scalar.value); if (enum_value == NULL) enum_value = g_enum_get_value_by_name ( class, (const char *) event->data.scalar.value); if (enum_value == NULL) { g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_BAD_SCALAR, "Failed to parse scalar enum at line %zu, column %zu: " "'%s' does not exist in type %s", event->start_mark.line, event->start_mark.column, (const char *) event->data.scalar.value, g_type_name (spec->value_type)); yaml_event_delete (event); return FALSE; } if (anchor != NULL) { value = make_gvalue_alloc (spec->value_type); g_value_set_enum (value, enum_value->value); g_hash_table_replace ( anchors, g_steal_pointer (&anchor), value); } g_object_set (object, property, enum_value->value, NULL); } } else { g_autoptr (GError) local_error = NULL; const GVariantType *vtype = NULL; g_autoptr (GVariant) variant = NULL; TRY_ALIAS (value, spec->value_type, "scalar"); if (value != NULL) { g_object_set_property (object, property, value); destroy_gvalue (value); } else { g_autofree char *anchor = NULL; if (spec->value_type == G_TYPE_STRING && event->type == YAML_MAPPING_START_EVENT) { /* Handle optional translated strings */ const char *const *langs = NULL; g_autofree char *english = NULL; anchor = bz_maybe_strdup ((const char *) event->data.mapping_start.anchor); langs = g_get_language_names (); for (;;) { g_autofree char *code = NULL; NEXT_EVENT (); if (event->type == YAML_MAPPING_END_EVENT) break; EXPECT (YAML_SCALAR_EVENT, "scalar key language code"); if (variant != NULL) continue; code = g_strdup ((const char *) event->data.scalar.value); NEXT_EVENT (); EXPECT (YAML_SCALAR_EVENT, "scalar translated string"); if (g_strv_contains (langs, code)) variant = g_variant_new_string ((const char *) event->data.scalar.value); else if (english == NULL && g_strcmp0 (code, "en") == 0) english = g_strdup ((const char *) event->data.scalar.value); } if (variant == NULL) variant = g_variant_new_string (english != NULL ? english : "NULL"); } else { EXPECT (YAML_SCALAR_EVENT, "scalar value"); anchor = bz_maybe_strdup ((const char *) event->data.scalar.anchor); switch (spec->value_type) { case G_TYPE_BOOLEAN: vtype = G_VARIANT_TYPE_BOOLEAN; break; case G_TYPE_INT: vtype = G_VARIANT_TYPE_INT32; break; case G_TYPE_INT64: vtype = G_VARIANT_TYPE_INT64; break; case G_TYPE_UINT: vtype = G_VARIANT_TYPE_UINT32; break; case G_TYPE_UINT64: vtype = G_VARIANT_TYPE_UINT64; break; case G_TYPE_DOUBLE: case G_TYPE_FLOAT: vtype = G_VARIANT_TYPE_DOUBLE; break; case G_TYPE_STRING: default: vtype = G_VARIANT_TYPE_STRING; break; } if (g_variant_type_equal (vtype, G_VARIANT_TYPE_STRING)) variant = g_variant_new_string ((const char *) event->data.scalar.value); else { variant = g_variant_parse ( vtype, (const char *) event->data.scalar.value, NULL, NULL, &local_error); if (variant == NULL) { g_set_error ( error, BZ_YAML_ERROR, BZ_YAML_ERROR_BAD_SCALAR, "Failed to parse scalar variant at line %zu, column %zu: %s", event->start_mark.line, event->start_mark.column, local_error->message); yaml_event_delete (event); return FALSE; } } } if (anchor != NULL) value = make_gvalue_alloc (spec->value_type); switch (spec->value_type) { case G_TYPE_BOOLEAN: g_object_set (object, property, g_variant_get_boolean (variant), NULL); if (anchor != NULL) g_value_set_boolean (value, g_variant_get_boolean (variant)); break; case G_TYPE_INT: g_object_set (object, property, g_variant_get_int32 (variant), NULL); if (anchor != NULL) g_value_set_int (value, g_variant_get_int32 (variant)); break; case G_TYPE_INT64: g_object_set (object, property, g_variant_get_int64 (variant), NULL); if (anchor != NULL) g_value_set_int64 (value, g_variant_get_int64 (variant)); break; case G_TYPE_UINT: g_object_set (object, property, g_variant_get_uint32 (variant), NULL); if (anchor != NULL) g_value_set_uint (value, g_variant_get_uint32 (variant)); break; case G_TYPE_UINT64: g_object_set (object, property, g_variant_get_uint64 (variant), NULL); if (anchor != NULL) g_value_set_uint64 (value, g_variant_get_uint64 (variant)); break; case G_TYPE_DOUBLE: case G_TYPE_FLOAT: g_object_set (object, property, g_variant_get_double (variant), NULL); if (anchor != NULL) g_value_set_double (value, g_variant_get_double (variant)); break; case G_TYPE_STRING: default: g_object_set (object, property, g_variant_get_string (variant, NULL), NULL); if (anchor != NULL) g_value_set_string (value, g_variant_get_string (variant, NULL)); break; } if (anchor != NULL) g_hash_table_replace ( anchors, g_steal_pointer (&anchor), value); } } } if (object_anchor != NULL) { value = make_gvalue_alloc (G_TYPE_LIST_MODEL); g_value_set_object (value, object); g_hash_table_replace ( anchors, g_steal_pointer (&object_anchor), value); } return g_steal_pointer (&object); } static char * join_path_stack (GPtrArray *path_stack) { GString *string = NULL; if (path_stack->len == 0) return g_strdup ("/"); string = g_string_new (NULL); for (guint i = 0; i < path_stack->len; i++) { const char *component = NULL; component = g_ptr_array_index (path_stack, i); g_string_append_printf (string, "/%s", component); } return g_string_free_and_steal (string); } static void destroy_gvalue (GValue *value) { g_value_unset (value); g_free (value); } static GValue * make_gvalue_alloc (GType type) { GValue *ret = NULL; ret = g_new0 (typeof (*ret), 1); g_value_init (ret, type); return ret; } static GValue * copy_gvalue_alloc (GValue *value) { GValue *ret = NULL; ret = g_new0 (typeof (*ret), 1); g_value_init (ret, value->g_type); g_value_copy (value, ret); return ret; } static void deinit_schema_node (gpointer data) { SchemaNodeData *self = data; switch (self->kind) { case KIND_SCALAR: g_clear_pointer (&self->scalar.vtype, g_free); break; case KIND_OBJECT: g_clear_pointer (&self->object.type_hints, g_hash_table_unref); break; case KIND_LIST: g_clear_pointer (&self->list.child, schema_node_data_unref); break; case KIND_MAPPINGS: g_clear_pointer (&self->mappings.children, g_hash_table_unref); break; default: g_assert_not_reached (); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-yaml-parser.h������������������������������������������������������0000664�0000000�0000000�00000002332�15240005042�0021143�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-yaml-parser.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gio/gio.h> G_BEGIN_DECLS #define BZ_YAML_ERROR (bz_yaml_error_quark ()) GQuark bz_yaml_error_quark (void); typedef enum { BZ_YAML_ERROR_INVALID_YAML = 0, BZ_YAML_ERROR_DOES_NOT_CONFORM, BZ_YAML_ERROR_BAD_SCALAR, } BzYamlError; #define BZ_TYPE_YAML_PARSER (bz_yaml_parser_get_type ()) G_DECLARE_FINAL_TYPE (BzYamlParser, bz_yaml_parser, BZ, YAML_PARSER, GObject) BzYamlParser * bz_yaml_parser_new_for_resource_schema (const char *path); G_END_DECLS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-zoom.c�������������������������������������������������������������0000664�0000000�0000000�00000061232�15240005042�0017672�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-zoom.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <adwaita.h> #include <math.h> #include "bz-zoom.h" #define OVERPAN_FACTOR 0.5 struct _BzZoom { GtkWidget parent_instance; GtkWidget *child; double zoom_level; double min_zoom; double max_zoom; double pan_x; double pan_y; double mouse_x; double mouse_y; double gesture_start_zoom; double drag_start_x; double drag_start_y; gboolean is_dragging; AdwAnimation *zoom_animation; double target_zoom; double target_pan_x; double target_pan_y; double start_zoom; double start_pan_x; double start_pan_y; GtkGesture *zoom_gesture; GtkGesture *drag_gesture; GtkEventController *scroll_controller; GtkEventController *motion_controller; GtkAdjustment *hadjustment; GtkAdjustment *vadjustment; GtkScrollablePolicy hscroll_policy; GtkScrollablePolicy vscroll_policy; }; static void scrollable_iface_init (GtkScrollableInterface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE ( BzZoom, bz_zoom, GTK_TYPE_WIDGET, G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, scrollable_iface_init)); enum { PROP_0, PROP_CHILD, PROP_ZOOM_LEVEL, PROP_MIN_ZOOM, PROP_MAX_ZOOM, LAST_PROP, PROP_HADJUSTMENT, PROP_VADJUSTMENT, PROP_HSCROLL_POLICY, PROP_VSCROLL_POLICY, }; static GParamSpec *props[LAST_PROP] = { 0 }; static void bz_zoom_constrain_pan (BzZoom *self); static void bz_zoom_zoom_at_point (BzZoom *self, double zoom_factor, double center_x, double center_y); static void on_adjustment_value_changed (BzZoom *self, GParamSpec *pspec, GtkAdjustment *adjustment); static void bz_zoom_dispose (GObject *object) { BzZoom *self; self = BZ_ZOOM (object); if (self->hadjustment != NULL) g_signal_handlers_disconnect_by_func ( self->hadjustment, on_adjustment_value_changed, self); g_clear_object (&self->hadjustment); if (self->vadjustment != NULL) g_signal_handlers_disconnect_by_func ( self->vadjustment, on_adjustment_value_changed, self); g_clear_object (&self->vadjustment); g_clear_pointer (&self->child, gtk_widget_unparent); g_clear_object (&self->zoom_animation); G_OBJECT_CLASS (bz_zoom_parent_class)->dispose (object); } static void bz_zoom_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { BzZoom *self; self = BZ_ZOOM (object); switch (prop_id) { case PROP_CHILD: g_value_set_object (value, bz_zoom_get_child (self)); break; case PROP_ZOOM_LEVEL: g_value_set_double (value, bz_zoom_get_zoom_level (self)); break; case PROP_MIN_ZOOM: g_value_set_double (value, bz_zoom_get_min_zoom (self)); break; case PROP_MAX_ZOOM: g_value_set_double (value, bz_zoom_get_max_zoom (self)); break; case PROP_HADJUSTMENT: g_value_set_object (value, self->hadjustment); break; case PROP_VADJUSTMENT: g_value_set_object (value, self->vadjustment); break; case PROP_HSCROLL_POLICY: g_value_set_enum (value, self->hscroll_policy); break; case PROP_VSCROLL_POLICY: g_value_set_enum (value, self->vscroll_policy); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void bz_zoom_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { BzZoom *self; self = BZ_ZOOM (object); switch (prop_id) { case PROP_CHILD: bz_zoom_set_child (self, g_value_get_object (value)); break; case PROP_ZOOM_LEVEL: bz_zoom_set_zoom_level (self, g_value_get_double (value)); break; case PROP_MIN_ZOOM: bz_zoom_set_min_zoom (self, g_value_get_double (value)); break; case PROP_MAX_ZOOM: bz_zoom_set_max_zoom (self, g_value_get_double (value)); break; case PROP_HADJUSTMENT: if (self->hadjustment != NULL) g_signal_handlers_disconnect_by_func ( self->hadjustment, on_adjustment_value_changed, self); g_clear_object (&self->hadjustment); self->hadjustment = g_value_dup_object (value); if (self->hadjustment != NULL) { g_signal_connect_swapped ( self->hadjustment, "notify::value", G_CALLBACK (on_adjustment_value_changed), self); self->pan_x = -gtk_adjustment_get_value (self->hadjustment); } bz_zoom_constrain_pan (self); gtk_widget_queue_draw (GTK_WIDGET (self)); break; case PROP_VADJUSTMENT: if (self->vadjustment != NULL) g_signal_handlers_disconnect_by_func ( self->vadjustment, on_adjustment_value_changed, self); g_clear_object (&self->vadjustment); self->vadjustment = g_value_dup_object (value); if (self->vadjustment != NULL) { g_signal_connect_swapped ( self->vadjustment, "notify::value", G_CALLBACK (on_adjustment_value_changed), self); self->pan_y = -gtk_adjustment_get_value (self->vadjustment); } bz_zoom_constrain_pan (self); gtk_widget_queue_draw (GTK_WIDGET (self)); break; case PROP_HSCROLL_POLICY: self->hscroll_policy = g_value_get_enum (value); break; case PROP_VSCROLL_POLICY: self->vscroll_policy = g_value_get_enum (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_motion (BzZoom *self, double x, double y, GtkEventControllerMotion *controller) { self->mouse_x = x; self->mouse_y = y; } static void on_zoom_begin (BzZoom *self, GdkEventSequence *sequence, GtkGesture *gesture) { self->gesture_start_zoom = self->zoom_level; } static void on_zoom_changed (BzZoom *self, double scale, GtkGesture *gesture) { double target_zoom; double zoom_factor; double center_x; double center_y; target_zoom = self->gesture_start_zoom * scale; if (self->zoom_level > 0) zoom_factor = target_zoom / self->zoom_level; else zoom_factor = 1.0; gtk_gesture_get_bounding_box_center (gesture, ¢er_x, ¢er_y); bz_zoom_zoom_at_point (self, zoom_factor, center_x, center_y); } static gboolean on_scroll (BzZoom *self, double dx, double dy, GtkEventControllerScroll *controller) { GdkEvent *event; GdkDevice *device; GdkInputSource source; double zoom_factor; event = gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (controller)); if (event == NULL) return GDK_EVENT_PROPAGATE; device = gdk_event_get_device (event); if (device == NULL) return GDK_EVENT_PROPAGATE; source = gdk_device_get_source (device); if (source != GDK_SOURCE_MOUSE) return GDK_EVENT_PROPAGATE; zoom_factor = dy < 0 ? 1.1 : 0.9; bz_zoom_zoom_at_point (self, zoom_factor, self->mouse_x, self->mouse_y); return GDK_EVENT_STOP; } static void on_drag_begin (BzZoom *self, double start_x, double start_y, GtkGesture *gesture) { if (!bz_zoom_is_transformed (self)) { gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_DENIED); return; } self->drag_start_x = self->pan_x; self->drag_start_y = self->pan_y; self->is_dragging = TRUE; } static void on_drag_update (BzZoom *self, double offset_x, double offset_y, GtkGesture *gesture) { if (!self->is_dragging) return; self->pan_x = self->drag_start_x + offset_x; self->pan_y = self->drag_start_y + offset_y; bz_zoom_constrain_pan (self); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void on_drag_end (BzZoom *self, double offset_x, double offset_y, GtkGesture *gesture) { self->is_dragging = FALSE; } static void bz_zoom_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { BzZoom *self; int width; int height; GskTransform *transform; graphene_point_t point; self = BZ_ZOOM (widget); width = gtk_widget_get_width (widget); height = gtk_widget_get_height (widget); if (width <= 0 || height <= 0) return; transform = NULL; graphene_point_init (&point, width / 2.0 + self->pan_x, height / 2.0 + self->pan_y); transform = gsk_transform_translate (transform, &point); /* See bz_zoom_size_allocate */ // transform = gsk_transform_scale (transform, self->zoom_level, self->zoom_level); graphene_point_init ( &point, -(width * self->zoom_level) / 2.0, -(height * self->zoom_level) / 2.0); transform = gsk_transform_translate (transform, &point); gtk_snapshot_save (snapshot); gtk_snapshot_transform (snapshot, transform); if (self->child) gtk_widget_snapshot_child (widget, self->child, snapshot); gtk_snapshot_restore (snapshot); gsk_transform_unref (transform); } static void bz_zoom_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { BzZoom *self; self = BZ_ZOOM (widget); if (self->child) gtk_widget_measure (self->child, orientation, for_size, minimum, natural, minimum_baseline, natural_baseline); else { *minimum = 0; *natural = 0; } } static void bz_zoom_size_allocate (GtkWidget *widget, int width, int height, int baseline) { BzZoom *self; self = BZ_ZOOM (widget); if (self->child) /* TODO: maybe add a property to control whether the child is artificially scaled? */ gtk_widget_allocate ( self->child, self->zoom_level * width, self->zoom_level * height, baseline, NULL); bz_zoom_constrain_pan (self); } static void bz_zoom_class_init (BzZoomClass *klass) { GObjectClass *object_class; GtkWidgetClass *widget_class; object_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = bz_zoom_dispose; object_class->get_property = bz_zoom_get_property; object_class->set_property = bz_zoom_set_property; widget_class->snapshot = bz_zoom_snapshot; widget_class->measure = bz_zoom_measure; widget_class->size_allocate = bz_zoom_size_allocate; props[PROP_CHILD] = g_param_spec_object ( "child", NULL, NULL, GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_ZOOM_LEVEL] = g_param_spec_double ( "zoom-level", NULL, NULL, 0.1, 10.0, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_MIN_ZOOM] = g_param_spec_double ( "min-zoom", NULL, NULL, 0.1, 1.0, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_MAX_ZOOM] = g_param_spec_double ( "max-zoom", NULL, NULL, 1.0, 10.0, 5.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, props); g_object_class_override_property (object_class, PROP_HADJUSTMENT, "hadjustment"); g_object_class_override_property (object_class, PROP_VADJUSTMENT, "vadjustment"); g_object_class_override_property (object_class, PROP_HSCROLL_POLICY, "hscroll-policy"); g_object_class_override_property (object_class, PROP_VSCROLL_POLICY, "vscroll-policy"); } static void bz_zoom_init (BzZoom *self) { self->zoom_level = 1.0; self->min_zoom = 1.0; self->max_zoom = 5.0; self->pan_x = 0.0; self->pan_y = 0.0; self->mouse_x = 0.0; self->mouse_y = 0.0; self->gesture_start_zoom = 1.0; self->is_dragging = FALSE; self->zoom_gesture = gtk_gesture_zoom_new (); g_signal_connect_swapped (self->zoom_gesture, "begin", G_CALLBACK (on_zoom_begin), self); g_signal_connect_swapped (self->zoom_gesture, "scale-changed", G_CALLBACK (on_zoom_changed), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (self->zoom_gesture)); self->drag_gesture = gtk_gesture_drag_new (); gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (self->drag_gesture), GDK_BUTTON_PRIMARY); g_signal_connect_swapped (self->drag_gesture, "drag-begin", G_CALLBACK (on_drag_begin), self); g_signal_connect_swapped (self->drag_gesture, "drag-update", G_CALLBACK (on_drag_update), self); g_signal_connect_swapped (self->drag_gesture, "drag-end", G_CALLBACK (on_drag_end), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (self->drag_gesture)); self->scroll_controller = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_VERTICAL | GTK_EVENT_CONTROLLER_SCROLL_HORIZONTAL); g_signal_connect_swapped (self->scroll_controller, "scroll", G_CALLBACK (on_scroll), self); gtk_widget_add_controller (GTK_WIDGET (self), self->scroll_controller); self->motion_controller = gtk_event_controller_motion_new (); g_signal_connect_swapped (self->motion_controller, "motion", G_CALLBACK (on_motion), self); gtk_widget_add_controller (GTK_WIDGET (self), self->motion_controller); gtk_widget_set_focusable (GTK_WIDGET (self), TRUE); } static gboolean scrollable_get_border (GtkScrollable *scrollable, GtkBorder *border) { return FALSE; } static void scrollable_iface_init (GtkScrollableInterface *iface) { iface->get_border = scrollable_get_border; } GtkWidget * bz_zoom_new (void) { return g_object_new (BZ_TYPE_ZOOM, NULL); } GtkWidget * bz_zoom_get_child (BzZoom *self) { g_return_val_if_fail (BZ_IS_ZOOM (self), NULL); return self->child; } void bz_zoom_set_child (BzZoom *self, GtkWidget *child) { g_return_if_fail (BZ_IS_ZOOM (self)); g_return_if_fail (child == NULL || GTK_IS_WIDGET (child)); if (self->child == child) return; g_clear_pointer (&self->child, gtk_widget_unparent); self->child = child; if (self->child) gtk_widget_set_parent (self->child, GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CHILD]); } double bz_zoom_get_zoom_level (BzZoom *self) { g_return_val_if_fail (BZ_IS_ZOOM (self), 1.0); return self->zoom_level; } void bz_zoom_set_zoom_level (BzZoom *self, double zoom_level) { double new_zoom; g_return_if_fail (BZ_IS_ZOOM (self)); new_zoom = CLAMP (zoom_level, self->min_zoom, self->max_zoom); if (fabs (new_zoom - self->zoom_level) < 0.001) return; self->zoom_level = new_zoom; bz_zoom_constrain_pan (self); gtk_widget_queue_resize (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ZOOM_LEVEL]); } gboolean bz_zoom_is_transformed (BzZoom *self) { g_return_val_if_fail (BZ_IS_ZOOM (self), FALSE); return fabs (self->zoom_level - 1.0) >= 0.001 || fabs (self->pan_x) >= 0.5 || fabs (self->pan_y) >= 0.5; } double bz_zoom_get_min_zoom (BzZoom *self) { g_return_val_if_fail (BZ_IS_ZOOM (self), 1); return self->min_zoom; } void bz_zoom_set_min_zoom (BzZoom *self, double min_zoom) { g_return_if_fail (BZ_IS_ZOOM (self)); self->min_zoom = min_zoom; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MIN_ZOOM]); } double bz_zoom_get_max_zoom (BzZoom *self) { g_return_val_if_fail (BZ_IS_ZOOM (self), 5.0); return self->max_zoom; } void bz_zoom_set_max_zoom (BzZoom *self, double max_zoom) { g_return_if_fail (BZ_IS_ZOOM (self)); self->max_zoom = max_zoom; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MAX_ZOOM]); } static void bz_zoom_constrain_pan (BzZoom *self) { int widget_width; int widget_height; double overpan_x; double overpan_y; double range_x; double range_y; double max_pan_x; double max_pan_y; widget_width = gtk_widget_get_width (GTK_WIDGET (self)); widget_height = gtk_widget_get_height (GTK_WIDGET (self)); if (widget_width <= 0 || widget_height <= 0) return; overpan_x = widget_width * OVERPAN_FACTOR; overpan_y = widget_height * OVERPAN_FACTOR; range_x = MAX (0, (widget_width * self->zoom_level - widget_width) / 2.0); range_y = MAX (0, (widget_height * self->zoom_level - widget_height) / 2.0); max_pan_x = range_x + overpan_x; max_pan_y = range_y + overpan_y; self->pan_x = CLAMP (self->pan_x, -max_pan_x, max_pan_x); self->pan_y = CLAMP (self->pan_y, -max_pan_y, max_pan_y); if (self->hadjustment != NULL) g_signal_handlers_block_by_func ( self->hadjustment, on_adjustment_value_changed, self); if (self->vadjustment != NULL) g_signal_handlers_block_by_func ( self->vadjustment, on_adjustment_value_changed, self); if (self->hadjustment != NULL) g_object_set ( self->hadjustment, "lower", -max_pan_x, "value", -self->pan_x, "upper", max_pan_x + overpan_x, "page-size", overpan_x, "page-increment", max_pan_x / 4.0, NULL); if (self->vadjustment != NULL) g_object_set ( self->vadjustment, "lower", -max_pan_y, "value", -self->pan_y, "upper", max_pan_y + overpan_y, "page-size", overpan_y, "page-increment", max_pan_y / 4.0, NULL); if (self->hadjustment != NULL) g_signal_handlers_unblock_by_func ( self->hadjustment, on_adjustment_value_changed, self); if (self->vadjustment != NULL) g_signal_handlers_unblock_by_func ( self->vadjustment, on_adjustment_value_changed, self); } static void bz_zoom_zoom_at_point (BzZoom *self, double zoom_factor, double center_x, double center_y) { double old_zoom; double new_zoom; int widget_width; int widget_height; double widget_center_x; double widget_center_y; double old_content_x; double old_content_y; double zoom_ratio; double new_content_x; double new_content_y; old_zoom = self->zoom_level; new_zoom = old_zoom * zoom_factor; new_zoom = CLAMP (new_zoom, self->min_zoom, self->max_zoom); if (fabs (new_zoom - old_zoom) < 0.001) return; widget_width = gtk_widget_get_width (GTK_WIDGET (self)); widget_height = gtk_widget_get_height (GTK_WIDGET (self)); widget_center_x = widget_width / 2.0; widget_center_y = widget_height / 2.0; old_content_x = center_x - widget_center_x - self->pan_x; old_content_y = center_y - widget_center_y - self->pan_y; zoom_ratio = new_zoom / old_zoom; new_content_x = old_content_x * zoom_ratio; new_content_y = old_content_y * zoom_ratio; self->zoom_level = new_zoom; self->pan_x = center_x - widget_center_x - new_content_x; self->pan_y = center_y - widget_center_y - new_content_y; bz_zoom_constrain_pan (self); gtk_widget_queue_resize (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ZOOM_LEVEL]); } static void on_animation_value (double value, BzZoom *self) { self->zoom_level = self->start_zoom + (self->target_zoom - self->start_zoom) * value; self->pan_x = self->start_pan_x + (self->target_pan_x - self->start_pan_x) * value; self->pan_y = self->start_pan_y + (self->target_pan_y - self->start_pan_y) * value; bz_zoom_constrain_pan (self); gtk_widget_queue_resize (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ZOOM_LEVEL]); } static void on_adjustment_value_changed (BzZoom *self, GParamSpec *pspec, GtkAdjustment *adjustment) { if (self->zoom_animation != NULL) adw_animation_skip (self->zoom_animation); if (self->hadjustment != NULL) self->pan_x = -gtk_adjustment_get_value (self->hadjustment); if (self->vadjustment != NULL) self->pan_y = -gtk_adjustment_get_value (self->vadjustment); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void bz_zoom_animate_to (BzZoom *self, double target_zoom, double target_pan_x, double target_pan_y) { AdwAnimationTarget *target; if (self->zoom_animation) adw_animation_skip (self->zoom_animation); self->start_zoom = self->zoom_level; self->start_pan_x = self->pan_x; self->start_pan_y = self->pan_y; self->target_zoom = target_zoom; self->target_pan_x = target_pan_x; self->target_pan_y = target_pan_y; target = adw_callback_animation_target_new ((AdwAnimationTargetFunc) on_animation_value, self, NULL); self->zoom_animation = adw_timed_animation_new (GTK_WIDGET (self), 0, 1, 150, target); adw_timed_animation_set_easing (ADW_TIMED_ANIMATION (self->zoom_animation), ADW_EASE_OUT_CUBIC); adw_animation_play (self->zoom_animation); } void bz_zoom_zoom_in (BzZoom *self) { int width; int height; double old_zoom; double new_zoom; double widget_center_x; double widget_center_y; double center_x; double center_y; double old_content_x; double old_content_y; double zoom_ratio; double new_content_x; double new_content_y; double new_pan_x; double new_pan_y; g_return_if_fail (BZ_IS_ZOOM (self)); width = gtk_widget_get_width (GTK_WIDGET (self)); height = gtk_widget_get_height (GTK_WIDGET (self)); center_x = width / 2.0; center_y = height / 2.0; old_zoom = self->zoom_level; new_zoom = old_zoom * 1.2; new_zoom = CLAMP (new_zoom, self->min_zoom, self->max_zoom); if (fabs (new_zoom - old_zoom) < 0.001) return; widget_center_x = width / 2.0; widget_center_y = height / 2.0; old_content_x = center_x - widget_center_x - self->pan_x; old_content_y = center_y - widget_center_y - self->pan_y; zoom_ratio = new_zoom / old_zoom; new_content_x = old_content_x * zoom_ratio; new_content_y = old_content_y * zoom_ratio; new_pan_x = center_x - widget_center_x - new_content_x; new_pan_y = center_y - widget_center_y - new_content_y; bz_zoom_animate_to (self, new_zoom, new_pan_x, new_pan_y); } void bz_zoom_zoom_out (BzZoom *self) { int width; int height; double old_zoom; double new_zoom; double widget_center_x; double widget_center_y; double center_x; double center_y; double old_content_x; double old_content_y; double zoom_ratio; double new_content_x; double new_content_y; double new_pan_x; double new_pan_y; g_return_if_fail (BZ_IS_ZOOM (self)); width = gtk_widget_get_width (GTK_WIDGET (self)); height = gtk_widget_get_height (GTK_WIDGET (self)); center_x = width / 2.0; center_y = height / 2.0; old_zoom = self->zoom_level; new_zoom = old_zoom * 0.8; new_zoom = CLAMP (new_zoom, self->min_zoom, self->max_zoom); if (fabs (new_zoom - old_zoom) < 0.001) return; widget_center_x = width / 2.0; widget_center_y = height / 2.0; old_content_x = center_x - widget_center_x - self->pan_x; old_content_y = center_y - widget_center_y - self->pan_y; zoom_ratio = new_zoom / old_zoom; new_content_x = old_content_x * zoom_ratio; new_content_y = old_content_y * zoom_ratio; new_pan_x = center_x - widget_center_x - new_content_x; new_pan_y = center_y - widget_center_y - new_content_y; bz_zoom_animate_to (self, new_zoom, new_pan_x, new_pan_y); } void bz_zoom_reset (BzZoom *self) { g_return_if_fail (BZ_IS_ZOOM (self)); bz_zoom_animate_to (self, 1.0, 0.0, 0.0); } void bz_zoom_fit_to_window (BzZoom *self) { g_return_if_fail (BZ_IS_ZOOM (self)); bz_zoom_animate_to (self, 1.0, 0.0, 0.0); } /* End of bz-zoom.c */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/bz-zoom.h�������������������������������������������������������������0000664�0000000�0000000�00000003263�15240005042�0017677�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* bz-zoom.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define BZ_TYPE_ZOOM (bz_zoom_get_type ()) G_DECLARE_FINAL_TYPE (BzZoom, bz_zoom, BZ, ZOOM, GtkWidget) GtkWidget *bz_zoom_new (void); GtkWidget *bz_zoom_get_child (BzZoom *self); void bz_zoom_set_child (BzZoom *self, GtkWidget *child); double bz_zoom_get_zoom_level (BzZoom *self); void bz_zoom_set_zoom_level (BzZoom *self, double zoom_level); double bz_zoom_get_min_zoom (BzZoom *self); void bz_zoom_set_min_zoom (BzZoom *self, double min_zoom); double bz_zoom_get_max_zoom (BzZoom *self); void bz_zoom_set_max_zoom (BzZoom *self, double max_zoom); gboolean bz_zoom_is_transformed (BzZoom *self); void bz_zoom_zoom_in (BzZoom *self); void bz_zoom_zoom_out (BzZoom *self); void bz_zoom_reset (BzZoom *self); void bz_zoom_fit_to_window (BzZoom *self); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/context-tile-callbacks.c����������������������������������������������0000664�0000000�0000000�00000030441�15240005042�0022627�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* context-tile-callbacks.c * * Copyright 2026 Eva M, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <appstream.h> #include <glib/gi18n.h> #include <gtk/gtk.h> #include <math.h> #include "context-tile-callbacks.h" #include "bz-entry.h" #include "safety-calculator.h" #include "spdx.h" static char * format_with_small_suffix (char *number, const char *suffix) { char *dot = g_strrstr (number, "."); if (dot != NULL) { char *end = dot; while (*(end + 1) != '\0') end++; while (end > dot && *end == '0') *end-- = '\0'; if (end == dot) *dot = '\0'; } return g_strdup_printf ("%s\xC2\xA0<span font_size='x-small'>%s</span>", number, suffix); } static char * format_favorites_count (gpointer object, int favorites_count) { if (favorites_count < 0) return g_strdup (" "); return g_strdup_printf ("%d", favorites_count); } static char * format_recent_downloads (gpointer object, int value) { double result; int digits; if (value <= 0) return g_strdup (_ ("---")); if (value >= 1000000) { result = value / 1000000.0; digits = (int) log10 (result) + 1; /* Translators: M is the suffix for millions */ return g_strdup_printf (_ ("%.*fM"), 3 - digits, result); } else if (value >= 1000) { result = value / 1000.0; digits = (int) log10 (result) + 1; /* Translators: K is the suffix for thousands*/ return g_strdup_printf (_ ("%.*fK"), 3 - digits, result); } else return g_strdup_printf ("%'d", value); } static char * format_recent_downloads_tooltip (gpointer object, int value) { return g_strdup_printf (_ ("%d downloads in the last month"), value); } static char * format_size (gpointer object, guint64 value) { g_autofree char *size_str = g_format_size (value); char *space = g_strrstr (size_str, "\xC2\xA0"); char *decimal = NULL; int digits = 0; if (value == 0) return g_strdup (_ ("N/A")); if (space != NULL) { *space = '\0'; for (char *p = size_str; *p != '\0' && *p != '.'; p++) if (g_ascii_isdigit (*p)) digits++; if (digits >= 3) { decimal = g_strrstr (size_str, "."); if (decimal != NULL) *decimal = '\0'; } return format_with_small_suffix (size_str, space + 2); } return g_strdup (size_str); } static char * get_size_label (gpointer object, gboolean is_installable, gboolean runtime_installed, guint64 runtime_size) { if (is_installable && !runtime_installed && runtime_size > 0) { g_autofree char *size_str = g_format_size (runtime_size); // TRANSLATORS: %s is a formatted file size, for example: "128 MB" return g_strdup_printf (_ ("+%s Runtime"), size_str); } return g_strdup (is_installable ? _ ("Download") : _ ("Installed")); } static guint64 get_size_type (gpointer object, BzEntry *entry, gboolean is_installable) { if (entry == NULL) return 0; return is_installable ? bz_entry_get_size (entry) : bz_entry_get_installed_size (entry); } static char * format_size_tooltip (gpointer object, guint64 value) { g_autofree char *size_str = NULL; if (value == 0) return g_strdup (_ ("Size information unavailable")); size_str = g_format_size (value); return g_strdup_printf (_ ("Download size of %s"), size_str); } static char * format_age_rating (gpointer object, AsContentRating *content_rating) { guint age; if (content_rating == NULL) return g_strdup ("?"); age = as_content_rating_get_minimum_age (content_rating); if (age < 3) age = 3; /* Translators: Age rating format, e.g. "12+" for ages 12 and up */ return g_strdup_printf (_ ("%d+"), age); } static char * get_age_rating_label (gpointer object, AsContentRating *content_rating) { guint age; if (content_rating == NULL) return g_strdup (_ ("Age Rating")); age = as_content_rating_get_minimum_age (content_rating); if (age == 0) return g_strdup (_ ("All Ages")); else return g_strdup (_ ("Age Rating")); } static char * get_age_rating_tooltip (gpointer object, AsContentRating *content_rating) { guint age; if (content_rating == NULL) return g_strdup (_ ("Age rating information unavailable")); age = as_content_rating_get_minimum_age (content_rating); if (age == 0) return g_strdup (_ ("Suitable for all ages")); return g_strdup_printf (_ ("Suitable for ages %d and up"), age); } static char * get_age_rating_style (gpointer object, AsContentRating *content_rating) { guint age; if (content_rating == NULL) return g_strdup ("grey"); age = as_content_rating_get_minimum_age (content_rating); if (age >= 18) return g_strdup ("error"); else if (age >= 15) return g_strdup ("orange"); else if (age >= 12) return g_strdup ("warning"); else return g_strdup ("grey"); } static char * format_license_tooltip (gpointer object, BzEntry *entry) { const char *license; gboolean is_floss = FALSE; g_autofree char *name = NULL; if (entry == NULL) return g_strdup (_ ("Unknown")); g_object_get (entry, "is-floss", &is_floss, "project-license", &license, NULL); if (license == NULL || *license == '\0') return g_strdup (_ ("Unknown")); if (is_floss && bz_spdx_is_valid (license)) { name = bz_spdx_get_name (license); return g_strdup_printf (_ ("Free software licensed under %s"), (name != NULL && *name != '\0') ? name : license); } if (is_floss) return g_strdup (_ ("Free software")); if (bz_spdx_is_proprietary (license)) return g_strdup (_ ("Proprietary Software")); name = bz_spdx_get_name (license); return g_strdup_printf (_ ("Special License: %s"), (name != NULL && *name != '\0') ? name : license); } static char * get_license_label (gpointer object, BzEntry *entry) { const char *license; gboolean is_floss = FALSE; if (entry == NULL) return g_strdup (_ ("Unknown")); g_object_get (entry, "is-floss", &is_floss, "project-license", &license, NULL); if (is_floss) /* TRANSLATORS: You can omit the "software" part if your translation makes it obvious we're talking about "libre" and not "gratis"*/ return g_strdup (_ ("Free Software")); if (license == NULL || *license == '\0') return g_strdup (_ ("Unknown")); if (bz_spdx_is_proprietary (license)) return g_strdup (_ ("Proprietary")); return g_strdup (_ ("Special License")); } static char * get_license_icon (gpointer object, gboolean is_floss, int index) { const char *icons[][2] = { { "license-symbolic", "proprietary-code-symbolic" }, { "community-symbolic", "license-symbolic" } }; return g_strdup (icons[is_floss ? 1 : 0][index]); } static char * get_formfactor_label (gpointer object, gboolean is_mobile_friendly) { return g_strdup (is_mobile_friendly ? _ ("Adaptive") : _ ("Desktop Only")); } static char * get_formfactor_tooltip (gpointer object, gboolean is_mobile_friendly) { return g_strdup (is_mobile_friendly ? _ ("Works on desktop, tablets, and phones") : _ ("May not work on mobile devices")); } static char * get_safety_rating_icon (gpointer object, BzEntry *entry, int index) { char *icon = NULL; BzImportance importance = 0; if (entry == NULL) return g_strdup ("app-safety-unknown-symbolic"); if (index < 0 || index > 2) return NULL; if (index == 0) { importance = bz_safety_calculator_calculate_rating (entry); switch (importance) { case BZ_IMPORTANCE_UNIMPORTANT: case BZ_IMPORTANCE_NEUTRAL: return g_strdup ("app-safety-ok-symbolic"); case BZ_IMPORTANCE_INFORMATION: case BZ_IMPORTANCE_WARNING: return NULL; case BZ_IMPORTANCE_IMPORTANT: return g_strdup ("dialog-warning-symbolic"); default: return NULL; } } icon = bz_safety_calculator_get_top_icon (entry, index - 1); return icon; } const char * bz_safety_style_for_importance (BzImportance importance) { switch (importance) { case BZ_IMPORTANCE_UNIMPORTANT: case BZ_IMPORTANCE_NEUTRAL: return "grey"; case BZ_IMPORTANCE_INFORMATION: return "warning"; case BZ_IMPORTANCE_WARNING: return "orange"; case BZ_IMPORTANCE_IMPORTANT: return "error"; default: return "grey"; } } static char * get_safety_rating_style (gpointer object, BzEntry *entry) { if (entry == NULL) return g_strdup ("grey"); return g_strdup (bz_safety_style_for_importance ( bz_safety_calculator_calculate_rating (entry))); } static char * get_safety_rating_label (gpointer object, BzEntry *entry) { BzImportance importance; if (entry == NULL) return g_strdup (_ ("N/A")); importance = bz_safety_calculator_calculate_rating (entry); switch (importance) { case BZ_IMPORTANCE_UNIMPORTANT: // TRANSLATORS: short app safety rating label return g_strdup (_ ("Safe")); case BZ_IMPORTANCE_NEUTRAL: // TRANSLATORS: short app safety rating label return g_strdup (_ ("Low Risk")); case BZ_IMPORTANCE_INFORMATION: // TRANSLATORS: short app safety rating label return g_strdup (_ ("Low Risk")); case BZ_IMPORTANCE_WARNING: // TRANSLATORS: short app safety rating label return g_strdup (_ ("Medium Risk")); case BZ_IMPORTANCE_IMPORTANT: // TRANSLATORS: short app safety rating label return g_strdup (_ ("High Risk")); default: return g_strdup (_ ("N/A")); } } void bz_widget_class_bind_all_context_tile_callbacks (GtkWidgetClass *widget_class) { g_return_if_fail (GTK_IS_WIDGET_CLASS (widget_class)); gtk_widget_class_bind_template_callback (widget_class, format_favorites_count); gtk_widget_class_bind_template_callback (widget_class, format_recent_downloads); gtk_widget_class_bind_template_callback (widget_class, format_recent_downloads_tooltip); gtk_widget_class_bind_template_callback (widget_class, format_size); gtk_widget_class_bind_template_callback (widget_class, get_size_label); gtk_widget_class_bind_template_callback (widget_class, get_size_type); gtk_widget_class_bind_template_callback (widget_class, format_size_tooltip); gtk_widget_class_bind_template_callback (widget_class, format_age_rating); gtk_widget_class_bind_template_callback (widget_class, get_age_rating_label); gtk_widget_class_bind_template_callback (widget_class, get_age_rating_tooltip); gtk_widget_class_bind_template_callback (widget_class, get_age_rating_style); gtk_widget_class_bind_template_callback (widget_class, format_license_tooltip); gtk_widget_class_bind_template_callback (widget_class, get_license_label); gtk_widget_class_bind_template_callback (widget_class, get_license_icon); gtk_widget_class_bind_template_callback (widget_class, get_formfactor_label); gtk_widget_class_bind_template_callback (widget_class, get_formfactor_tooltip); gtk_widget_class_bind_template_callback (widget_class, get_safety_rating_icon); gtk_widget_class_bind_template_callback (widget_class, get_safety_rating_style); gtk_widget_class_bind_template_callback (widget_class, get_safety_rating_label); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/context-tile-callbacks.h����������������������������������������������0000664�0000000�0000000�00000001750�15240005042�0022635�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* context-tile-callbacks.h * * Copyright 2026 Eva M, Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> #include "safety-calculator.h" void bz_widget_class_bind_all_context_tile_callbacks (GtkWidgetClass *widget_class); const char * bz_safety_style_for_importance (BzImportance importance); ������������������������bazaar-org-bazaar-48f93f4/src/curated-config-schema.xml���������������������������������������������0000664�0000000�0000000�00000000530�15240005042�0022775�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <object class="BzRootCuratedConfig"> <typehint name="rows" type="BzCuratedRow"/> <typehint name="rows.section.appids.list" type="GtkStringObject"/> <typehint name="rows.featured-carousel.appids.list" type="GtkStringObject"/> <typehint name="rows.articles.list" type="BzCuratedArticle"/> </object> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/dex-utils.c�����������������������������������������������������������0000664�0000000�0000000�00000012711�15240005042�0020211�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* dex-utils.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <gobject/gvaluecollector.h> #include "dex-utils.h" typedef enum { CALLBACK_THEN, CALLBACK_CATCH, CALLBACK_FINALLY, } CallbackKind; DEX_DEFINE_CLOSURE_TYPE ( Trampoline, trampoline, DEX_DEFINE_CLOSURE_VALUE (GCallback, callback), DEX_DEFINE_CLOSURE_POINTER (GArray *, values, g_array_unref)) static DexFuture * make_callback_future (CallbackKind kind, DexFuture *future, GCallback callback, guint n_params, va_list args); static DexFuture * trampoline_future_cb (DexFuture *future, Trampoline *state); DexFuture * bz_future_thenv (DexFuture *future, GCallback callback, guint n_params, ...) { va_list args; va_start (args, n_params); future = make_callback_future (CALLBACK_THEN, future, callback, n_params, args); va_end (args); return future; } DexFuture * bz_future_catchv (DexFuture *future, GCallback callback, guint n_params, ...) { va_list args; va_start (args, n_params); future = make_callback_future (CALLBACK_CATCH, future, callback, n_params, args); va_end (args); return future; } DexFuture * bz_future_finallyv (DexFuture *future, GCallback callback, guint n_params, ...) { va_list args; va_start (args, n_params); future = make_callback_future (CALLBACK_FINALLY, future, callback, n_params, args); va_end (args); return future; } static DexFuture * make_callback_future (CallbackKind kind, DexFuture *future, GCallback callback, guint n_params, va_list args) { g_autofree char *errmsg = NULL; g_autoptr (GArray) values = NULL; values = g_array_new (FALSE, TRUE, sizeof (GValue)); g_array_set_clear_func (values, (GDestroyNotify) g_value_unset); g_array_set_size (values, n_params + 1); /* The first value is the future result */ g_value_init (&g_array_index (values, GValue, 0), G_TYPE_POINTER); for (guint i = 1; i < n_params + 1; i++) { GType gtype = va_arg (args, GType); GValue *dest = &g_array_index (values, GValue, i); GValue value = G_VALUE_INIT; G_VALUE_COLLECT_INIT (&value, gtype, args, 0, &errmsg); if (errmsg != NULL) break; g_value_init (dest, gtype); g_value_copy (&value, dest); g_value_unset (&value); } if (errmsg != NULL) future = dex_future_new_reject (DEX_ERROR, DEX_ERROR_TYPE_MISMATCH, "Failed to trampoline to callback: %s", errmsg); else { Trampoline *state = NULL; state = trampoline_new (); state->values = g_steal_pointer (&values); state->callback = callback; switch (kind) { case CALLBACK_THEN: future = dex_future_then ( future, (DexFutureCallback) trampoline_future_cb, g_steal_pointer (&state), (GDestroyNotify) trampoline_free); break; case CALLBACK_CATCH: future = dex_future_catch ( future, (DexFutureCallback) trampoline_future_cb, g_steal_pointer (&state), (GDestroyNotify) trampoline_free); break; case CALLBACK_FINALLY: future = dex_future_finally ( future, (DexFutureCallback) trampoline_future_cb, g_steal_pointer (&state), (GDestroyNotify) trampoline_free); break; default: g_assert_not_reached (); } } return future; } static DexFuture * trampoline_future_cb (DexFuture *future, Trampoline *state) { g_autoptr (GClosure) closure = NULL; GValue return_value = G_VALUE_INIT; gpointer res; g_assert (state != NULL); g_assert (state->callback != NULL); g_assert (state->values != NULL); g_value_init (&return_value, G_TYPE_POINTER); g_value_set_pointer (&g_array_index (state->values, GValue, 0), future); closure = g_cclosure_new (state->callback, NULL, NULL); g_closure_set_marshal (closure, g_cclosure_marshal_generic); g_closure_invoke (closure, &return_value, state->values->len, (const GValue *) (gpointer) state->values->data, NULL); res = g_value_get_pointer (&return_value); g_value_unset (&g_array_index (state->values, GValue, 0)); g_value_unset (&return_value); return res; } �������������������������������������������������������bazaar-org-bazaar-48f93f4/src/dex-utils.h�����������������������������������������������������������0000664�0000000�0000000�00000002446�15240005042�0020222�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* dex-utils.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> G_BEGIN_DECLS /* Takes inspiration from dex_scheduler_spawnv */ DexFuture * bz_future_thenv (DexFuture *future, GCallback callback, guint n_params, ...); DexFuture * bz_future_catchv (DexFuture *future, GCallback callback, guint n_params, ...); DexFuture * bz_future_finallyv (DexFuture *future, GCallback callback, guint n_params, ...); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/dl-worker.c�����������������������������������������������������������0000664�0000000�0000000�00000013354�15240005042�0020205�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* dl-worker.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::DL-WORKER-SUBPROCESS" #include "env.h" #include "global-net.h" #include "util.h" BZ_DEFINE_DATA ( main, Main, { GMainLoop *loop; GIOChannel *stdout_channel; }, BZ_RELEASE_DATA (loop, g_main_loop_unref); BZ_RELEASE_DATA (stdout_channel, g_io_channel_unref)); BZ_DEFINE_DATA ( download, Download, { char *src; char *dest; GIOChannel *stdout_channel; }, BZ_RELEASE_DATA (src, g_free); BZ_RELEASE_DATA (dest, g_free); BZ_RELEASE_DATA (stdout_channel, g_io_channel_unref)); static DexFuture * read_stdin (MainData *data); static DexFuture * download_fiber (DownloadData *data); int main (int argc, char *argv[]) { g_autoptr (GIOChannel) stdout_channel = NULL; g_autoptr (GMainLoop) main_loop = NULL; g_autoptr (MainData) data = NULL; g_autoptr (DexFuture) future = NULL; g_log_writer_default_set_use_stderr (TRUE); dex_init (); stdout_channel = g_io_channel_unix_new (STDOUT_FILENO); g_assert (g_io_channel_set_encoding (stdout_channel, NULL, NULL)); g_io_channel_set_buffered (stdout_channel, FALSE); main_loop = g_main_loop_new (NULL, FALSE); data = main_data_new (); data->loop = g_main_loop_ref (main_loop); data->stdout_channel = g_io_channel_ref (stdout_channel); future = dex_scheduler_spawn ( dex_thread_pool_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) read_stdin, main_data_ref (data), main_data_unref); g_main_loop_run (main_loop); return EXIT_SUCCESS; } static DexFuture * read_stdin (MainData *data) { g_autoptr (GIOChannel) stdin_channel = NULL; stdin_channel = g_io_channel_unix_new (STDIN_FILENO); for (;;) { g_autoptr (GError) local_error = NULL; g_autofree char *string = NULL; char *newline = NULL; g_autoptr (GVariant) variant = NULL; g_autofree char *src_uri = NULL; g_autofree char *dest_path = NULL; g_autoptr (DownloadData) dl_data = NULL; g_io_channel_read_line ( stdin_channel, &string, NULL, NULL, &local_error); if (string == NULL) { if (local_error != NULL) g_warning ("FATAL: Failure reading stdin channel: %s", local_error->message); g_main_loop_quit (data->loop); return NULL; } newline = g_utf8_strchr (string, -1, '\n'); if (newline != NULL) *newline = '\0'; variant = g_variant_parse ( G_VARIANT_TYPE ("(ss)"), string, NULL, NULL, &local_error); if (variant == NULL) { g_warning ("Failure parsing variant text '%s' into structure: %s\n", string, local_error->message); g_main_loop_quit (data->loop); continue; } g_variant_get (variant, "(ss)", &src_uri, &dest_path); dl_data = download_data_new (); dl_data->src = g_steal_pointer (&src_uri); dl_data->dest = g_steal_pointer (&dest_path); dl_data->stdout_channel = g_io_channel_ref (data->stdout_channel); dex_future_disown (dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) download_fiber, download_data_ref (dl_data), download_data_unref)); } return NULL; } static DexFuture * download_fiber (DownloadData *data) { gboolean success = FALSE; g_autoptr (GError) local_error = NULL; g_autoptr (GFile) dest_file = NULL; g_autoptr (GFileOutputStream) dest_output = NULL; g_autoptr (SoupMessage) message = NULL; SoupMessageHeaders *headers = NULL; g_autoptr (GVariant) variant = NULL; g_autofree char *output = NULL; g_autofree char *output_plus_nl = NULL; dest_file = g_file_new_for_path (data->dest); dest_output = g_file_replace ( dest_file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &local_error); if (dest_output == NULL) { g_warning ("%s", local_error->message); goto done; } message = soup_message_new (SOUP_METHOD_GET, data->src); headers = soup_message_get_request_headers (message); soup_message_headers_append (headers, "Accept", "*/*"); soup_message_headers_append (headers, "User-Agent", "Bazaar"); success = dex_await (bz_send_with_global_http_session_then_splice_into ( message, G_OUTPUT_STREAM (dest_output)), &local_error); if (!success) { g_warning ("%s", local_error->message); goto done; } done: variant = g_variant_new ("(sb)", data->dest, success); output = g_variant_print (variant, TRUE); output_plus_nl = g_strdup_printf ("%s\n", output); g_io_channel_write_chars (data->stdout_channel, output_plus_nl, -1, NULL, NULL); return dex_future_new_true (); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/env.c�����������������������������������������������������������������0000664�0000000�0000000�00000010603�15240005042�0017061�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* env.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <libdex.h> #include "env.h" gsize bz_get_dex_stack_size (void) { static guint64 stack_size = 0; if (g_once_init_enter (&stack_size)) { const char *envvar = NULL; guint64 value = 0; /* Ensure we have enough space for gtk/glycin Some routines try to optimize by putting stuff on the stack, see https://gitlab.gnome.org/GNOME/libdex/-/issues/27#note_2582332 2025-10-21 22:47:02 eva */ value = MAX (8388608, dex_get_min_stack_size ()); envvar = g_getenv ("BAZAAR_DEX_STACK_SIZE"); if (envvar != NULL) { g_autoptr (GError) local_error = NULL; g_autoptr (GVariant) variant = NULL; variant = g_variant_parse ( G_VARIANT_TYPE_UINT64, envvar, NULL, NULL, &local_error); if (variant != NULL) { guint64 parse_result = 0; parse_result = g_variant_get_uint64 (variant); if (parse_result < dex_get_min_stack_size ()) g_warning ("BAZAAR_DEX_STACK_SIZE must be greater than %zu on this system", dex_get_min_stack_size ()); else value = parse_result; } else g_warning ("BAZAAR_DEX_STACK_SIZE is invalid: %s", local_error->message); } g_once_init_leave (&stack_size, value); } return stack_size; } guint64 bz_get_n_download_workers (void) { static guint64 n_dl_workers = 0; if (g_once_init_enter (&n_dl_workers)) { const char *envvar = NULL; guint64 value = 0; value = 8; envvar = g_getenv ("BAZAAR_N_DOWNLOAD_WORKERS"); if (envvar != NULL) { g_autoptr (GError) local_error = NULL; g_autoptr (GVariant) variant = NULL; variant = g_variant_parse ( G_VARIANT_TYPE_UINT64, envvar, NULL, NULL, &local_error); if (variant != NULL) { guint64 parse_result = 0; parse_result = g_variant_get_uint64 (variant); if (parse_result == 0) g_warning ("BAZAAR_N_DOWNLOAD_WORKERS must be greater than 0"); else value = parse_result; } else g_warning ("BAZAAR_N_DOWNLOAD_WORKERS is invalid: %s", local_error->message); } g_once_init_leave (&n_dl_workers, value); } return n_dl_workers; } guint bz_get_desktop_search_provider_icon_size (void) { static guint64 icon_size = 0; if (g_once_init_enter (&icon_size)) { const char *envvar = NULL; guint64 value = 0; /* default 24x24 for the gnome-shell search provider */ value = 24; envvar = g_getenv ("BAZAAR_DESKTOP_SEARCH_PROVIDER_ICON_SIZE"); if (envvar != NULL) { g_autoptr (GError) local_error = NULL; g_autoptr (GVariant) variant = NULL; variant = g_variant_parse ( G_VARIANT_TYPE_UINT64, envvar, NULL, NULL, &local_error); if (variant != NULL) { guint64 parse_result = 0; parse_result = g_variant_get_uint64 (variant); if (parse_result == 0 || parse_result > 256) g_warning ("BAZAAR_DESKTOP_SEARCH_PROVIDER_ICON_SIZE must be " "greater than 0 but no greater than 256"); else value = parse_result; } else g_warning ("BAZAAR_DESKTOP_SEARCH_PROVIDER_ICON_SIZE is invalid: %s", local_error->message); } g_once_init_leave (&icon_size, value); } return (guint) icon_size; } �����������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/env.h�����������������������������������������������������������������0000664�0000000�0000000�00000001657�15240005042�0017077�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* env.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib.h> G_BEGIN_DECLS gsize bz_get_dex_stack_size (void); guint64 bz_get_n_download_workers (void); guint bz_get_desktop_search_provider_icon_size (void); G_END_DECLS ���������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/error.c���������������������������������������������������������������0000664�0000000�0000000�00000007455�15240005042�0017435�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* error.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <adwaita.h> #include <glib/gi18n.h> #include "bz-error-dialog.h" #include "error.h" #include "bz-window.h" static void show_alert (GtkWidget *widget, const char *title, const char *text); static void await_alert_response (AdwAlertDialog *alert, gchar *response, DexPromise *promise); static void unref_dex_closure (gpointer data, GClosure *closure); void bz_show_error_for_widget (GtkWidget *widget, const char *title, const char *text) { g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (text != NULL); show_alert (widget, title, text); } static void on_toast_button_clicked (AdwToast *toast, GtkWidget *widget) { BzErrorDialog *dialog; const char *title = NULL; const char *text = NULL; if (!GTK_IS_WIDGET (widget)) return; title = g_object_get_data (G_OBJECT (toast), "title"); text = g_object_get_data (G_OBJECT (toast), "text"); dialog = bz_error_dialog_new (title ? title : _ ("Details"), text ? text : ""); adw_dialog_present (ADW_DIALOG (dialog), widget); } static void show_alert (GtkWidget *widget, const char *title, const char *text) { BzWindow *window = NULL; AdwToast *toast = NULL; g_autofree char *toast_title = NULL; window = BZ_WINDOW (gtk_widget_get_ancestor (widget, BZ_TYPE_WINDOW)); if (window == NULL) return; toast_title = g_strdup_printf ("%s", title); toast = adw_toast_new (toast_title); adw_toast_set_button_label (toast, _ ("Details")); adw_toast_set_priority (toast, ADW_TOAST_PRIORITY_HIGH); adw_toast_set_timeout (toast, 5); g_object_set_data_full (G_OBJECT (toast), "title", g_strdup (title), g_free); g_object_set_data_full (G_OBJECT (toast), "text", g_strdup (text), g_free); g_signal_connect (toast, "button-clicked", G_CALLBACK (on_toast_button_clicked), widget); bz_window_add_toast (window, toast); } DexFuture * bz_make_alert_dialog_future (AdwAlertDialog *dialog) { g_autoptr (DexPromise) promise = NULL; dex_return_error_if_fail (ADW_IS_ALERT_DIALOG (dialog)); promise = dex_promise_new (); g_signal_connect_data ( dialog, "response", G_CALLBACK (await_alert_response), dex_ref (promise), unref_dex_closure, G_CONNECT_DEFAULT); return DEX_FUTURE (g_steal_pointer (&promise)); } static void await_alert_response (AdwAlertDialog *alert, gchar *response, DexPromise *promise) { dex_promise_resolve_string (promise, g_strdup (response)); } static void unref_dex_closure (gpointer data, GClosure *closure) { DexPromise *promise = data; if (dex_future_is_pending (DEX_FUTURE (promise))) dex_promise_reject ( promise, g_error_new ( DEX_ERROR, DEX_ERROR_UNKNOWN, "The signal was disconnected")); dex_unref (promise); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/error.h���������������������������������������������������������������0000664�0000000�0000000�00000002021�15240005042�0017422�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* error.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <adwaita.h> #include <libdex.h> G_BEGIN_DECLS void bz_show_error_for_widget (GtkWidget *widget, const char *title, const char *text); DexFuture * bz_make_alert_dialog_future (AdwAlertDialog *dialog); G_END_DECLS ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/gen_gobject.sh��������������������������������������������������������0000775�0000000�0000000�00000047663�15240005042�0020752�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # gen_gobject.sh # author: kolunmi die() { echo "Usage: $0 [--header|--code] [spec] [output]" 1>&2 echo " [--header|--code] whether to output the header (.h) or code (.c)" 1>&2 echo " [spec] spec keyfile" 1>&2 echo " [output] output file" 1>&2 echo "" 1>&2 echo " The spec file should contain these keys:" 1>&2 echo " [prefix] lower case prefix, EX: my" 1>&2 echo " [name] lower case class name, EX: class" 1>&2 echo " [parent-prefix] prefix of parent class, EX: g" 1>&2 echo " [parent-name] name of parent class, EX: object" 1>&2 echo " [author] author name, EX: <your name>" 1>&2 echo " [include] #include for the header file (can have multiple)" 1>&2 echo " EX: <gtk/gtk.h>" 1>&2 echo " EX: \"my-other-class.h\"" 1>&2 echo " [enum] declare an enum type (can have multiple)" 1>&2 echo " EX: my fruit_type apple orange pear" 1>&2 echo " [ensure] ensure another type (can have multiple), EX: GTK_TYPE_WIDGET" 1>&2 echo " [property] property spec (can have multiple), EX: (see below)" 1>&2 echo "" 1>&2 echo " The properties are parsed with the form:" 1>&2 echo " [name] [ctype] [gtype] [spec-type] [free (optional)] [ref (optional)]" 1>&2 echo " EX: my_widget GtkWidget GTK_TYPE_WIDGET object" 1>&2 echo " EX: my_string char G_TYPE_STRING string" 1>&2 echo " EX: my_int int G_TYPE_INT int" 1>&2 echo " EX: my_ptr_array GPtrArray G_TYPE_PTR_ARRAY boxed g_ptr_array_unref g_ptr_array_ref" 1>&2 echo "" 1>&2 echo "$@, aborting!" 1>&2 exit 1 } if [ "$#" -ne 3 ]; then die wrong number of args fi OUTPUT_TYPE="$1" SPEC_FILE="$2" OUTPUT_FILE="$3" if [ -z "$OUTPUT_TYPE" ] || [ -z "$SPEC_FILE" ] || [ -z "$OUTPUT_FILE" ]; then die one or more args are empty fi case "$OUTPUT_TYPE" in --header|--code) ;; *) die arg 1 must be '--header' or '--code' ;; esac if ! [ -f "$SPEC_FILE" ]; then die "$SPEC_FILE isn't a file" fi # if [ -e "$OUTPUT_FILE" ]; then # die "$OUTPUT_FILE already exists" # fi unset PREF unset NAME unset PAR_PREF unset PAR_NAME unset AUTHOR unset INCLUDES unset ENSURES unset ENUMS unset PROPS while IFS= read -r line; do [ -z "$line" ] && continue KEY="${line%%=*}" VAL="${line#*=}" case "$KEY" in prefix) PREF="$VAL" ;; name) NAME="$VAL" ;; parent-prefix) PAR_PREF="$VAL" ;; parent-name) PAR_NAME="$VAL" ;; author) AUTHOR="$VAL" ;; include) if [ -n "$INCLUDES" ]; then INCLUDES="${INCLUDES} #include ${VAL}" else INCLUDES="#include ${VAL}" fi ;; enum) if [ -n "$ENUMS" ]; then ENUMS="${ENUMS} ${VAL}" else ENUMS="$VAL" fi ;; ensure) if [ -n "$ENSURES" ]; then ENSURES="${ENSURES} g_type_ensure (${VAL});" else ENSURES=" g_type_ensure (${VAL});" fi ;; property) if [ -n "$PROPS" ]; then PROPS="${PROPS} ${VAL}" else PROPS="$VAL" fi ;; *) die "unknown key '${KEY}' in ${SPEC_FILE}" ;; esac done < "$SPEC_FILE" if [ -z "$PREF" ] || [ -z "$NAME" ] || [ -z "$PAR_PREF" ] || [ -z "$PAR_NAME" ] || [ -z "$AUTHOR" ] || [ -z "$PROPS" ]; then die "one or more params in $SPEC_FILE are empty" fi case "$OUTPUT_TYPE" in --header) H_FILE="$OUTPUT_FILE" C_FILE="${OUTPUT_FILE%\.h}.c" ;; --code) H_FILE="${OUTPUT_FILE%\.c}.h" C_FILE="$OUTPUT_FILE" ;; esac to_upper() { echo "$1" | tr '[a-z]' '[A-Z]' } to_pascal() { echo "$1" | sed 's/[^_]\+/\L\u&/g' | tr -d '_' } to_hyphened() { echo "$1" | tr '_' '-' } SNAKE="${PREF}_${NAME}" MACRO_PREF="$(to_upper "${PREF}")" MACRO_NAME="$(to_upper "${NAME}")" MACRO="${MACRO_PREF}_${MACRO_NAME}" TYPE="${MACRO_PREF}_TYPE_${MACRO_NAME}" PASCAL="$(to_pascal "${SNAKE}")" HYPHEN_NAME="$(to_hyphened "${NAME}")" HYPHEN="$(to_hyphened "${PREF}")-${HYPHEN_NAME}" PAR_SNAKE="${PAR_PREF}_${PAR_NAME}" PAR_MACRO_PREF="$(to_upper "${PAR_PREF}")" PAR_MACRO_NAME="$(to_upper "${PAR_NAME}")" PAR_MACRO="${PAR_MACRO_PREF}_${PAR_MACRO_NAME}" PAR_TYPE="${PAR_MACRO_PREF}_TYPE_${PAR_MACRO_NAME}" PAR_PASCAL="$(to_pascal "${PAR_SNAKE}")" PAR_HYPHEN_NAME="$(to_hyphened "${PAR_NAME}")" PAR_HYPHEN="$(to_hyphened "${PAR_PREF}")-${PAR_HYPHEN_NAME}" YEAR="$(date +'%Y')" print_enums () { HEADER="$1" [ -z "$ENUMS" ] && return if [ "$HEADER" = header ]; then while IFS= read -r line; do set -- $line LOC_PREF="$1" LOC_NAME="$2" LOC_SNAKE="${LOC_PREF}_${LOC_NAME}" LOC_SNAKE_UPPER="$(to_upper "$LOC_SNAKE")" LOC_TYPE="$(to_upper "$LOC_PREF")_TYPE_$(to_upper "$LOC_NAME")" LOC_PASCAL="$(to_pascal "${LOC_SNAKE}")" shift 2 printf 'typedef enum\n{\n' for enum in "$@"; do LOC_ENUM_SYMBOL="${LOC_SNAKE_UPPER}_$(to_upper "$enum")" printf ' %s,\n' "$LOC_ENUM_SYMBOL" done printf '} %s;\n' "$LOC_PASCAL" printf 'GType %s_get_type (void);\n' "$LOC_SNAKE" printf '#define %s (%s_get_type ())\n\n' "$LOC_TYPE" "$LOC_SNAKE" done <<EOF $ENUMS EOF else while IFS= read -r line; do set -- $line LOC_PREF="$1" LOC_NAME="$2" LOC_SNAKE="${LOC_PREF}_${LOC_NAME}" LOC_SNAKE_UPPER="$(to_upper "$LOC_SNAKE")" LOC_TYPE="$(to_upper "$LOC_PREF")_TYPE_$(to_upper "$LOC_NAME")" LOC_PASCAL="$(to_pascal "${LOC_SNAKE}")" shift 2 printf 'G_DEFINE_ENUM_TYPE (\n' printf ' %s,\n' "$LOC_PASCAL" printf ' %s' "$LOC_SNAKE" for enum in "$@"; do LOC_ENUM_SYMBOL="${LOC_SNAKE_UPPER}_$(to_upper "$enum")" LOC_ENUM_NICK="$(to_hyphened "$enum")" printf ',\n G_DEFINE_ENUM_VALUE (%s, "%s")' "$LOC_ENUM_SYMBOL" "$LOC_ENUM_NICK" done printf ');\n\n' done <<EOF $ENUMS EOF fi } print_struct () { while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" printf ' %s ' "$LOC_CTYPE" case "$LOC_PTYPE" in char|uchar|boolean|int|uint|long|ulong|int64|uint64|unichar|enum|flags|float|double) ;; *) printf '*' esac printf "%s;\n" "$LOC_NAME" done <<EOF $PROPS EOF } print_prop_enums () { printf ' PROP_0,\n\n' while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" printf ' PROP_%s,\n' "$(to_upper $LOC_NAME)" done <<EOF $PROPS EOF printf '\n LAST_PROP\n' } print_dispose () { while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" LOC_FREE="$5" case "$LOC_PTYPE" in char|uchar|boolean|int|uint|long|ulong|int64|uint64|unichar|enum|flags|float|double) ;; *) printf ' g_clear_pointer (&self->%s, ' "${LOC_NAME}" if [ -n "$LOC_FREE" ]; then printf "$LOC_FREE" else case "$LOC_PTYPE" in string) printf 'g_free' ;; *) printf 'g_object_unref' ;; esac fi printf ');\n' ;; esac done <<EOF $PROPS EOF } print_get_property () { while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" printf ' case PROP_%s:\n' "$(to_upper $LOC_NAME)" printf ' g_value_set_%s (value, %s_get_%s (self));\n' "$LOC_PTYPE" "$SNAKE" "$LOC_NAME" printf ' break;\n' done <<EOF $PROPS EOF } print_set_property () { while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" printf ' case PROP_%s:\n' "$(to_upper $LOC_NAME)" printf ' %s_set_%s (self, g_value_get_%s (value));\n' "$SNAKE" "$LOC_NAME" "$LOC_PTYPE" printf ' break;\n' done <<EOF $PROPS EOF } print_init_properties () { while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" printf ' props[PROP_%s] =\n' "$(to_upper $LOC_NAME)" printf ' g_param_spec_%s (\n' "$LOC_PTYPE" printf ' "%s",\n' "$(to_hyphened "$LOC_NAME")" printf ' NULL, NULL,' case "$LOC_PTYPE" in uchar|uint|ulong|uint64|unichar) printf '\n 0, G_MAX%s, 0,\n' "$(to_upper "$LOC_PTYPE")" ;; char|int|long|int64) printf '\n G_MIN%s, G_MAX%s, 0,\n' "$(to_upper "$LOC_PTYPE")" "$(to_upper "$LOC_PTYPE")" ;; float|double) printf '\n G_MININT, G_MAXINT, 0.0,\n' "$(to_upper "$LOC_PTYPE")" ;; boolean) printf ' FALSE,\n' ;; string) printf ' NULL,\n' ;; enum) printf '\n %s, 0,\n' "$LOC_GTYPE" ;; variant) printf '\n G_VARIANT_TYPE_ANY, NULL,\n' ;; *) printf '\n %s,\n' "$LOC_GTYPE" ;; esac printf ' G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);\n\n' done <<EOF $PROPS EOF } print_functions () { HEADER="$1" printf '%s *\n%s_new (void)' "$PASCAL" "$SNAKE" if [ "$HEADER" = header ]; then printf ';\n\n' else printf '{\n return g_object_new (%s, NULL);\n}\n\n' "$TYPE" fi } print_get_property_methods () { HEADER="$1" while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" case "$LOC_PTYPE" in string) printf 'const ' ;; esac printf '%s' "$LOC_CTYPE" case "$LOC_PTYPE" in char|uchar|boolean|int|uint|long|ulong|int64|uint64|unichar|enum|flags|float|double) ;; *) printf ' *' esac printf '\n%s_get_%s (%s *self)' "$SNAKE" "$LOC_NAME" "$PASCAL" if [ "$HEADER" = header ]; then printf ';\n\n' else printf '{\n g_return_val_if_fail (%s_IS_%s (self), ' "$MACRO_PREF" "$MACRO_NAME" case "$LOC_PTYPE" in uchar|uint|ulong|uint64|unichar|char|int|long|int64|enum) printf '0' ;; float|double) printf '0.0' ;; boolean) printf 'FALSE' ;; *) printf 'NULL' ;; esac printf ');\n' printf ' return self->%s;\n' "$LOC_NAME" printf '}\n\n' fi done <<EOF $PROPS EOF } print_set_property_methods () { HEADER="$1" TAKE="$2" while IFS= read -r line; do set -- $line LOC_NAME="$1" LOC_CTYPE="$2" LOC_GTYPE="$3" LOC_PTYPE="$4" LOC_FREE="$5" LOC_REF="$6" if [ "$TAKE" = take ]; then case "$LOC_PTYPE" in string) ;; *) continue ;; esac fi if [ "$TAKE" = take ]; then printf 'void\n%s_set_%s_take (%s *self,\n ' "$SNAKE" "$LOC_NAME" "$PASCAL" else printf 'void\n%s_set_%s (%s *self,\n ' "$SNAKE" "$LOC_NAME" "$PASCAL" case "$LOC_PTYPE" in string) printf 'const ' ;; esac fi printf '%s ' "$LOC_CTYPE" case "$LOC_PTYPE" in char|uchar|boolean|int|uint|long|ulong|int64|uint64|unichar|enum|flags|float|double) ;; *) printf '*' ;; esac printf '%s)' "$LOC_NAME" if [ "$HEADER" = header ]; then printf ';\n\n' if [ "$TAKE" = take ]; then case "$LOC_PTYPE" in string) printf '#define %s_set_%s_take_printf(self, ...) %s_set_%s_take (self, g_strdup_printf (__VA_ARGS__))\n\n' "$SNAKE" "$LOC_NAME" "$SNAKE" "$LOC_NAME" ;; esac fi else printf '{\n g_return_if_fail (%s_IS_%s (self));\n\n' "$MACRO_PREF" "$MACRO_NAME" printf ' if (' case "$LOC_PTYPE" in boolean) printf '!!%s == !!self->%s' "$LOC_NAME" "$LOC_NAME" ;; string) if [ "$TAKE" = take ]; then printf '%s != NULL && self->%s != NULL && g_strcmp0(%s, self->%s) == 0' "$LOC_NAME" "$LOC_NAME" "$LOC_NAME" "$LOC_NAME" else printf '%s == self->%s || (%s != NULL && self->%s != NULL && g_strcmp0(%s, self->%s) == 0)' "$LOC_NAME" "$LOC_NAME" "$LOC_NAME" "$LOC_NAME" "$LOC_NAME" "$LOC_NAME" fi ;; *) printf '%s == self->%s' "$LOC_NAME" "$LOC_NAME" ;; esac if [ "$TAKE" = take ]; then printf '){\n ' case "$LOC_PTYPE" in char|uchar|boolean|int|uint|long|ulong|int64|uint64|unichar|enum|flags|float|double) ;; *) if [ -n "$LOC_FREE" ]; then printf "$LOC_FREE" else case "$LOC_PTYPE" in string) printf 'g_free' ;; *) printf 'g_object_unref' ;; esac fi printf ' (%s);\n' "$LOC_NAME" ;; esac printf ' return;\n }\n\n' else printf ')\n return;\n\n' fi case "$LOC_PTYPE" in char|uchar|boolean|int|uint|long|ulong|int64|uint64|unichar|enum|flags|float|double) ;; *) printf ' g_clear_pointer (&self->%s, ' "$LOC_NAME" if [ -n "$LOC_FREE" ]; then printf "$LOC_FREE" else case "$LOC_PTYPE" in string) printf 'g_free' ;; *) printf 'g_object_unref' ;; esac fi printf ');\n' printf ' if (%s != NULL)\n ' "$LOC_NAME" ;; esac if [ "$TAKE" = take ]; then printf ' self->%s = %s' "$LOC_NAME" "$LOC_NAME" else printf ' self->%s = ' "$LOC_NAME" if [ -n "$LOC_REF" ]; then printf '%s (%s)' "$LOC_REF" "$LOC_NAME" else case "$LOC_PTYPE" in char|uchar|boolean|int|uint|long|ulong|int64|uint64|unichar|enum|flags|float|double) printf '%s' "$LOC_NAME" ;; string) printf 'g_strdup (%s)' "$LOC_NAME" ;; *) printf 'g_object_ref (%s)' "$LOC_NAME" ;; esac fi fi printf ';\n\n' printf ' g_object_notify_by_pspec (G_OBJECT (self), props[PROP_%s]);\n' "$(to_upper $LOC_NAME)" printf '}\n\n' fi done <<EOF $PROPS EOF } [ "$OUTPUT_TYPE" = --header ] && cat > "$H_FILE" <<EOF /* $H_FILE * * Copyright $YEAR $AUTHOR * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib-object.h> $INCLUDES G_BEGIN_DECLS $(print_enums header) #define $TYPE (${SNAKE}_get_type ()) G_DECLARE_FINAL_TYPE ($PASCAL, $SNAKE, $MACRO_PREF, $MACRO_NAME, $PAR_PASCAL) $(print_functions header) $(print_get_property_methods header) $(print_set_property_methods header) $(print_set_property_methods header take) G_END_DECLS /* End of $H_FILE */ EOF [ "$OUTPUT_TYPE" = --code ] && cat > "$C_FILE" <<EOF /* $C_FILE * * Copyright $YEAR $AUTHOR * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "$H_FILE" $(print_enums) struct _${PASCAL} { $PAR_PASCAL parent_instance; $(print_struct) }; G_DEFINE_FINAL_TYPE ($PASCAL, $SNAKE, $PAR_TYPE); enum { $(print_prop_enums) }; static GParamSpec *props[LAST_PROP] = { 0 }; static void ${SNAKE}_dispose (GObject *object) { $PASCAL *self = $MACRO (object); $(print_dispose) G_OBJECT_CLASS (${SNAKE}_parent_class)->dispose (object); } static void ${SNAKE}_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { $PASCAL *self = $MACRO (object); switch (prop_id) { $(print_get_property) default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void ${SNAKE}_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { $PASCAL *self = $MACRO (object); switch (prop_id) { $(print_set_property) default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void ${SNAKE}_class_init (${PASCAL}Class *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); $ENSURES object_class->set_property = ${SNAKE}_set_property; object_class->get_property = ${SNAKE}_get_property; object_class->dispose = ${SNAKE}_dispose; $(print_init_properties) g_object_class_install_properties (object_class, LAST_PROP, props); } static void ${SNAKE}_init (${PASCAL} *self) { } $(print_functions) $(print_get_property_methods) $(print_set_property_methods) $(print_set_property_methods '' take) /* End of $C_FILE */ EOF exit 0 �����������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/global-net.c����������������������������������������������������������0000664�0000000�0000000�00000027352�15240005042�0020326�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* global-net.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::GLOBAL-NET" #include "config.h" #include <json-glib/json-glib.h> #include <libproxy/proxy.h> #include "env.h" #include "global-net.h" #include "util.h" BZ_DEFINE_DATA ( http_request, HttpRequest, { SoupMessage *message; GOutputStream *splice_into; gboolean close_output; }, BZ_RELEASE_DATA (message, g_object_unref); BZ_RELEASE_DATA (splice_into, g_object_unref)); static DexFuture * http_send_fiber (HttpRequestData *data); static void http_send_and_splice_finish (GObject *object, GAsyncResult *result, gpointer user_data); static DexFuture * query_json_source_then (DexFuture *future, GOutputStream *output_stream); static DexFuture * send (SoupMessage *message, GOutputStream *splice_into, gboolean close_output); static DexFuture * query_uri_json_with_method (const char *uri, const char *method, const char *token); GProxyResolver * bz_get_default_proxy_resolver (void) { static GProxyResolver *resolver = NULL; if (g_once_init_enter_pointer (&resolver)) { pxProxyFactory *factory = NULL; g_auto (GStrv) proxies = NULL; g_autoptr (GProxyResolver) resolver_instance = NULL; factory = px_proxy_factory_new (); /* blocking */ proxies = px_proxy_factory_get_proxies (factory, DONATE_LINK); g_clear_pointer (&factory, px_proxy_factory_free); resolver_instance = g_simple_proxy_resolver_new ( proxies != NULL && *proxies != NULL ? proxies[0] : NULL, NULL); g_once_init_leave_pointer (&resolver, g_steal_pointer (&resolver_instance)); } return resolver; } DexFuture * bz_send_with_global_http_session (SoupMessage *message) { dex_return_error_if_fail (SOUP_IS_MESSAGE (message)); return send (message, NULL, FALSE); } DexFuture * bz_send_with_global_http_session_then_splice_into (SoupMessage *message, GOutputStream *output) { dex_return_error_if_fail (SOUP_IS_MESSAGE (message)); dex_return_error_if_fail (G_IS_OUTPUT_STREAM (output)); return send (message, output, TRUE); } DexFuture * bz_https_query_json (const char *uri) { g_autoptr (GError) local_error = NULL; g_autoptr (SoupMessage) message = NULL; SoupMessageHeaders *headers = NULL; g_autoptr (GOutputStream) output = NULL; g_autoptr (DexFuture) future = NULL; dex_return_error_if_fail (uri != NULL); message = soup_message_new (SOUP_METHOD_GET, uri); headers = soup_message_get_request_headers (message); soup_message_headers_append (headers, "User-Agent", "Bazaar"); output = g_memory_output_stream_new_resizable (); future = send (message, output, TRUE); future = dex_future_then ( future, (DexFutureCallback) query_json_source_then, g_object_ref (output), g_object_unref); return g_steal_pointer (&future); } DexFuture * bz_query_flathub_v2_json (const char *request) { g_autofree char *uri = NULL; dex_return_error_if_fail (request != NULL); uri = g_strdup_printf ("https://flathub.org/api/v2%s", request); return query_uri_json_with_method (uri, SOUP_METHOD_GET, NULL); } DexFuture * bz_query_flathub_v2_json_take (char *request) { DexFuture *future = NULL; dex_return_error_if_fail (request != NULL); future = bz_query_flathub_v2_json (request); g_free (request); return future; } DexFuture * bz_query_flathub_v2_json_authenticated (const char *request, const char *token) { g_autofree char *uri = NULL; dex_return_error_if_fail (request != NULL); uri = g_strdup_printf ("https://flathub.org/api/v2%s", request); return query_uri_json_with_method (uri, SOUP_METHOD_GET, token); } DexFuture * bz_query_flathub_v2_json_authenticated_post (const char *request, const char *token) { g_autofree char *uri = NULL; dex_return_error_if_fail (request != NULL); uri = g_strdup_printf ("https://flathub.org/api/v2%s", request); return query_uri_json_with_method (uri, SOUP_METHOD_POST, token); } DexFuture * bz_query_flathub_v2_json_authenticated_delete (const char *request, const char *token) { g_autofree char *uri = NULL; dex_return_error_if_fail (request != NULL); uri = g_strdup_printf ("https://flathub.org/api/v2%s", request); return query_uri_json_with_method (uri, SOUP_METHOD_DELETE, token); } DexFuture * bz_query_bazaar_json (const char *request) { g_autofree char *uri = NULL; dex_return_error_if_fail (request != NULL); uri = g_strdup_printf ("https://usebazaar.org%s", request); return query_uri_json_with_method (uri, SOUP_METHOD_GET, NULL); } static DexFuture * query_uri_json_with_method (const char *uri, const char *method, const char *token) { g_autoptr (SoupMessage) message = NULL; SoupMessageHeaders *headers = NULL; g_autoptr (GOutputStream) output = NULL; g_autoptr (DexFuture) future = NULL; message = soup_message_new (method, uri); headers = soup_message_get_request_headers (message); soup_message_headers_append (headers, "User-Agent", "Bazaar"); if (token != NULL && token[0] != '\0') { g_autofree char *cookie_value = NULL; cookie_value = g_strdup_printf ("session=%s", token); soup_message_headers_append (headers, "Cookie", cookie_value); } output = g_memory_output_stream_new_resizable (); future = send (message, output, TRUE); future = dex_future_then ( future, (DexFutureCallback) query_json_source_then, g_object_ref (output), g_object_unref); return g_steal_pointer (&future); } static DexFuture * http_send_fiber (HttpRequestData *data) { static SoupSession *session = NULL; SoupMessage *message = data->message; GOutputStream *splice_into = data->splice_into; gboolean close_output = data->close_output; GOutputStreamSpliceFlags splice_flags = G_OUTPUT_STREAM_SPLICE_NONE; g_autoptr (DexPromise) promise = NULL; if (g_once_init_enter_pointer (&session)) { g_autoptr (SoupSession) session_instance = NULL; session_instance = soup_session_new (); soup_session_set_proxy_resolver (session_instance, bz_get_default_proxy_resolver ()); g_once_init_leave_pointer (&session, g_steal_pointer (&session_instance)); } splice_flags = G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE; if (close_output) splice_flags |= G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET; promise = dex_promise_new_cancellable (); soup_session_send_and_splice_async ( session, message, splice_into, splice_flags, G_PRIORITY_DEFAULT_IDLE, dex_promise_get_cancellable (promise), http_send_and_splice_finish, dex_ref (promise)); return DEX_FUTURE (g_steal_pointer (&promise)); } static void http_send_and_splice_finish (GObject *object, GAsyncResult *result, gpointer user_data) { DexPromise *promise = user_data; g_autoptr (GError) local_error = NULL; gssize bytes_written = 0; g_assert (SOUP_IS_SESSION (object)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (DEX_IS_PROMISE (promise)); bytes_written = soup_session_send_and_splice_finish (SOUP_SESSION (object), result, &local_error); if (bytes_written >= 0) { g_debug ("Spliced %zu bytes from http reply into output stream", bytes_written); dex_promise_resolve_uint64 (promise, bytes_written); } else { g_debug ("Could not splice http reply into output stream: %s", local_error->message); dex_promise_reject (promise, g_steal_pointer (&local_error)); } dex_unref (promise); } static DexFuture * query_json_source_then (DexFuture *future, GOutputStream *output_stream) { g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) bytes = NULL; gsize bytes_size = 0; gconstpointer bytes_data = NULL; g_autoptr (JsonParser) parser = NULL; gboolean result = FALSE; JsonNode *node = NULL; bytes = g_memory_output_stream_steal_as_bytes ( G_MEMORY_OUTPUT_STREAM (output_stream)); bytes_data = g_bytes_get_data (bytes, &bytes_size); if (bytes_size == 0) return dex_future_new_take_boxed (JSON_TYPE_NODE, json_node_new (JSON_NODE_NULL)); parser = json_parser_new_immutable (); result = json_parser_load_from_data (parser, bytes_data, bytes_size, &local_error); if (!result) return dex_future_new_for_error (g_steal_pointer (&local_error)); node = json_parser_get_root (parser); return dex_future_new_take_boxed (JSON_TYPE_NODE, json_node_ref (node)); } static DexFuture * send (SoupMessage *message, GOutputStream *splice_into, gboolean close_output) { g_autoptr (HttpRequestData) data = NULL; g_autoptr (DexFuture) future = NULL; data = http_request_data_new (); data->message = g_object_ref (message); data->splice_into = bz_object_maybe_ref (splice_into); data->close_output = close_output; future = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) http_send_fiber, http_request_data_ref (data), http_request_data_unref); return g_steal_pointer (&future); } static DexFuture * fetch_uri_contents_then (DexFuture *future, GOutputStream *output) { return dex_future_new_take_boxed ( G_TYPE_BYTES, g_memory_output_stream_steal_as_bytes ( G_MEMORY_OUTPUT_STREAM (output))); } DexFuture * bz_fetch_uri_contents (const char *uri) { g_autoptr (SoupMessage) message = NULL; SoupMessageHeaders *headers = NULL; g_autoptr (GOutputStream) output = NULL; g_autoptr (DexFuture) future = NULL; dex_return_error_if_fail (uri != NULL); if (g_str_has_prefix (uri, "http://") || g_str_has_prefix (uri, "https://")) { message = soup_message_new (SOUP_METHOD_GET, uri); if (message == NULL) return dex_future_new_reject ( G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, "could not construct a request for uri %s", uri); headers = soup_message_get_request_headers (message); soup_message_headers_append (headers, "User-Agent", "Bazaar"); output = g_memory_output_stream_new_resizable (); future = bz_send_with_global_http_session_then_splice_into (message, output); future = dex_future_then ( future, (DexFutureCallback) fetch_uri_contents_then, g_object_ref (output), g_object_unref); return g_steal_pointer (&future); } else { g_autoptr (GFile) file = NULL; file = g_file_new_for_uri (uri); return dex_file_load_contents_bytes (file); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/global-net.h����������������������������������������������������������0000664�0000000�0000000�00000003460�15240005042�0020325�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* global-net.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> #include <libsoup/soup.h> G_BEGIN_DECLS GProxyResolver * bz_get_default_proxy_resolver (void); DexFuture * bz_send_with_global_http_session (SoupMessage *message); DexFuture * bz_send_with_global_http_session_then_splice_into (SoupMessage *message, GOutputStream *output); DexFuture * bz_https_query_json (const char *uri); DexFuture * bz_query_flathub_v2_json (const char *request); DexFuture * bz_query_flathub_v2_json_authenticated (const char *request, const char *token); DexFuture * bz_query_flathub_v2_json_authenticated_post (const char *request, const char *token); DexFuture * bz_query_flathub_v2_json_authenticated_delete (const char *request, const char *token); DexFuture * bz_query_flathub_v2_json_take (char *request); DexFuture * bz_query_bazaar_json (const char *request); DexFuture * bz_fetch_uri_contents (const char *uri); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/hooks.c���������������������������������������������������������������0000664�0000000�0000000�00000052254�15240005042�0017424�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* hooks.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::HOOKS" #include <adwaita.h> #include "env.h" #include "error.h" #include "hooks.h" #include "util.h" BZ_DEFINE_DATA ( execute_hook, ExecuteHook, { BzHook *hook; BzHookTransactionType ts_type; char *ts_appid; BzEntryGroup *group; }, BZ_RELEASE_DATA (hook, g_object_unref); BZ_RELEASE_DATA (ts_appid, g_free); BZ_RELEASE_DATA (group, g_object_unref)) BZ_DEFINE_DATA ( run_emission, RunEmission, { GListModel *hooks; BzHookSignal signal; BzHookTransactionType ts_type; char *ts_appid; BzEntryGroup *group; }, BZ_RELEASE_DATA (hooks, g_object_unref); BZ_RELEASE_DATA (ts_appid, g_free); BZ_RELEASE_DATA (group, g_object_unref)) BZ_DEFINE_DATA ( dialog, Dialog, { char *id; AdwDialog *dialog; }, BZ_RELEASE_DATA (id, g_free); BZ_RELEASE_DATA (dialog, g_object_unref)); static DexFuture * execute_hook_fiber (ExecuteHookData *data); static DexFuture * run_emission_fiber (RunEmissionData *data); DexFuture * bz_execute_hook (BzHook *hook, BzHookTransactionType ts_type, const char *ts_appid, BzEntryGroup *group) { g_autoptr (ExecuteHookData) data = NULL; dex_return_error_if_fail (BZ_IS_HOOK (hook)); data = execute_hook_data_new (); data->hook = g_object_ref (hook); data->ts_type = ts_type; data->ts_appid = bz_maybe_strdup (ts_appid); data->group = bz_object_maybe_ref (group); return dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) execute_hook_fiber, execute_hook_data_ref (data), execute_hook_data_unref); } DexFuture * bz_run_hook_emission (GListModel *hooks, BzHookSignal signal, BzHookTransactionType ts_type, const char *ts_appid, BzEntryGroup *group) { g_autoptr (RunEmissionData) data = NULL; dex_return_error_if_fail (G_IS_LIST_MODEL (hooks)); data = run_emission_data_new (); data->hooks = g_object_ref (hooks); data->signal = signal; data->ts_type = ts_type; data->ts_appid = bz_maybe_strdup (ts_appid); data->group = bz_object_maybe_ref (group); return dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) run_emission_fiber, execute_hook_data_ref (data), execute_hook_data_unref); } static DexFuture * execute_hook_fiber (ExecuteHookData *data) { BzHook *hook = data->hook; BzHookTransactionType ts_type = data->ts_type; char *ts_appid = data->ts_appid; BzEntryGroup *group = data->group; BzHookSignal signal = 0; g_autoptr (GEnumClass) signal_enum_class = NULL; g_autoptr (GEnumClass) ts_type_enum_class = NULL; GEnumValue *signal_enum = NULL; GEnumValue *ts_type_enum = NULL; g_autoptr (GDateTime) date = NULL; g_autofree char *timestamp_sec = NULL; g_autofree char *timestamp_usec = NULL; const char *id = NULL; const char *shell = NULL; g_autoptr (GPtrArray) dialogs = NULL; g_autoptr (DialogData) current_dialog = NULL; gboolean hook_aborted = FALSE; gboolean finish = FALSE; signal = bz_hook_get_when (hook); switch (signal) { case BZ_HOOK_SIGNAL_BEFORE_TRANSACTION: case BZ_HOOK_SIGNAL_AFTER_TRANSACTION: dex_return_error_if_fail (ts_appid != NULL); break; case BZ_HOOK_SIGNAL_VIEW_APP: case BZ_HOOK_SIGNAL_ARTICLE_APP: default: dex_return_error_if_fail (BZ_IS_ENTRY_GROUP (group)); break; } signal_enum_class = g_type_class_ref (BZ_TYPE_HOOK_SIGNAL); ts_type_enum_class = g_type_class_ref (BZ_TYPE_HOOK_TRANSACTION_TYPE); signal_enum = g_enum_get_value (signal_enum_class, signal); ts_type_enum = g_enum_get_value (ts_type_enum_class, ts_type); date = g_date_time_new_now_utc (); timestamp_sec = g_strdup_printf ("%zu", g_date_time_to_unix (date)); timestamp_usec = g_strdup_printf ("%zu", g_date_time_to_unix_usec (date)); id = bz_hook_get_id (hook); shell = bz_hook_get_shell (hook); if (shell == NULL) { g_warning ("Main Config: hook definition must have shell code, skipping this hook"); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } dialogs = g_ptr_array_new_with_free_func (dialog_data_unref); if (bz_hook_get_dialogs (hook) != NULL) { GListModel *config_dialogs = NULL; guint n_dialogs = 0; config_dialogs = bz_hook_get_dialogs (hook); n_dialogs = g_list_model_get_n_items (config_dialogs); for (guint i = 0; i < n_dialogs; i++) { g_autoptr (BzHookDialog) config_dialog = NULL; const char *dialog_id = NULL; const char *dialog_title = NULL; const char *dialog_body = NULL; gboolean dialog_body_use_markup = FALSE; const char *dialog_default_response = NULL; g_autoptr (AdwDialog) dialog = NULL; guint n_opts = 0; g_autoptr (DialogData) dialog_data = NULL; config_dialog = g_list_model_get_item (config_dialogs, i); dialog_id = bz_hook_dialog_get_id (config_dialog); dialog_title = bz_hook_dialog_get_title (config_dialog); dialog_body = bz_hook_dialog_get_body (config_dialog); dialog_body_use_markup = bz_hook_dialog_get_body_use_markup (config_dialog); dialog_default_response = bz_hook_dialog_get_default_response_id (config_dialog); if (dialog_title == NULL || dialog_body == NULL) { g_warning ("Main Config: dialog definition must have a title and body, skipping this hook"); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } if (dialog_default_response == NULL) { g_warning ("Main Config: dialog definition must have a default response, skipping this hook"); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } dialog = g_object_ref_sink (adw_alert_dialog_new (dialog_title, dialog_body)); if (bz_hook_dialog_get_options (config_dialog) != NULL) { GListModel *config_opts = NULL; guint n_options = 0; config_opts = bz_hook_dialog_get_options (config_dialog); n_options = g_list_model_get_n_items (config_opts); for (guint j = 0; j < n_options; j++) { g_autoptr (BzHookDialogOption) config_opt = NULL; const char *opt_id = NULL; const char *opt_string = NULL; const char *opt_style = NULL; config_opt = g_list_model_get_item (config_opts, j); opt_id = bz_hook_dialog_option_get_id (config_opt); if (opt_id == NULL) { g_warning ("Main Config: dialog option definition must have an id, skipping this hook"); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } opt_string = bz_hook_dialog_option_get_string (config_opt); if (opt_string == NULL) { g_warning ("Main Config: dialog option definition must have a string, skipping this hook"); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } opt_style = bz_hook_dialog_option_get_style (config_opt); adw_alert_dialog_add_response (ADW_ALERT_DIALOG (dialog), opt_id, opt_string); if (opt_style != NULL) { AdwResponseAppearance appearance = ADW_RESPONSE_DEFAULT; if (g_strcmp0 (opt_style, "suggested") == 0) appearance = ADW_RESPONSE_SUGGESTED; else if (g_strcmp0 (opt_style, "destructive") == 0) appearance = ADW_RESPONSE_DESTRUCTIVE; else g_warning ("Main Config: dialog option definition appearance can be " "\"suggested\" or \"destructive\". \"%s\" is invalid.", opt_style); adw_alert_dialog_set_response_appearance ( ADW_ALERT_DIALOG (dialog), opt_id, appearance); } n_opts++; } } if (n_opts == 0) { g_warning ("Main Config: dialog definition must have options, skipping this hook"); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } adw_alert_dialog_set_body_use_markup ( ADW_ALERT_DIALOG (dialog), dialog_body_use_markup); adw_alert_dialog_set_default_response ( ADW_ALERT_DIALOG (dialog), dialog_default_response); dialog_data = dialog_data_new (); dialog_data->id = dialog_id != NULL ? g_strdup (dialog_id) : NULL; dialog_data->dialog = g_steal_pointer (&dialog); g_ptr_array_add (dialogs, g_steal_pointer (&dialog_data)); } } for (guint stage = 0;; stage++) { g_autoptr (GError) local_error = NULL; g_autoptr (GSubprocessLauncher) launcher = NULL; g_autofree char *stage_str = NULL; const char *hook_stage = NULL; g_autoptr (GSubprocess) subprocess = NULL; gboolean result = FALSE; GInputStream *stdout_pipe = NULL; g_autoptr (GBytes) stdout_bytes = NULL; gsize stdout_size = 0; gconstpointer stdout_data = NULL; g_autofree char *stdout_str = NULL; char *stdout_newline = NULL; launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_STDOUT_PIPE); g_subprocess_launcher_set_cwd (launcher, g_get_home_dir ()); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_INITIATED_UNIX_STAMP", timestamp_sec, TRUE); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_INITIATED_UNIX_STAMP_USEC", timestamp_usec, TRUE); stage_str = g_strdup_printf ("%d", stage); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_STAGE_IDX", stage_str, TRUE); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_ID", id, TRUE); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_TYPE", signal_enum->value_nick, TRUE); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_WAS_ABORTED", hook_aborted ? "true" : "false", TRUE); switch (signal) { case BZ_HOOK_SIGNAL_BEFORE_TRANSACTION: case BZ_HOOK_SIGNAL_AFTER_TRANSACTION: g_subprocess_launcher_setenv (launcher, "BAZAAR_TS_APPID", ts_appid, TRUE); g_subprocess_launcher_setenv (launcher, "BAZAAR_TS_TYPE", ts_type_enum->value_nick, TRUE); break; case BZ_HOOK_SIGNAL_VIEW_APP: case BZ_HOOK_SIGNAL_ARTICLE_APP: default: g_subprocess_launcher_setenv (launcher, "BAZAAR_APPID", bz_entry_group_get_id (group), TRUE); break; } if (finish) hook_stage = "teardown"; else if (hook_aborted) hook_stage = "catch"; else if (stage == 0) hook_stage = "setup"; else if (current_dialog != NULL) { GApplication *application = NULL; GtkWindow *window = NULL; g_autofree char *response = NULL; hook_stage = "teardown-dialog"; application = g_application_get_default (); window = gtk_application_get_active_window (GTK_APPLICATION (application)); if (window != NULL) { adw_dialog_present (current_dialog->dialog, GTK_WIDGET (window)); response = dex_await_string ( bz_make_alert_dialog_future (ADW_ALERT_DIALOG (current_dialog->dialog)), &local_error); if (response == NULL) g_warning ("Failed to resolve response from dialog " "\"%s\", assuming default response \"%s\": %s", current_dialog->id, adw_alert_dialog_get_default_response ( ADW_ALERT_DIALOG (current_dialog->dialog)), local_error->message); g_clear_pointer (&local_error, g_error_free); } else g_warning ("A window was not available to present dialog " "\"%s\" on, assuming default response \"%s\"", current_dialog->id, adw_alert_dialog_get_default_response ( ADW_ALERT_DIALOG (current_dialog->dialog))); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_DIALOG_ID", current_dialog->id, TRUE); g_subprocess_launcher_setenv ( launcher, "BAZAAR_HOOK_DIALOG_RESPONSE_ID", response != NULL ? response : adw_alert_dialog_get_default_response ( ADW_ALERT_DIALOG (current_dialog->dialog)), TRUE); g_clear_pointer (¤t_dialog, dialog_data_unref); } else if (dialogs->len > 0) { hook_stage = "setup-dialog"; current_dialog = g_ptr_array_steal_index (dialogs, 0); g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_DIALOG_ID", current_dialog->id, TRUE); } else hook_stage = "action"; g_subprocess_launcher_setenv (launcher, "BAZAAR_HOOK_STAGE", hook_stage, TRUE); subprocess = g_subprocess_launcher_spawn ( launcher, &local_error, "/bin/sh", "-c", shell, NULL); if (subprocess == NULL) { g_warning ("Hook failed to spawn, abandoning it now: %s", local_error->message); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } result = dex_await ( dex_subprocess_wait_check (subprocess), &local_error); if (!result) { g_warning ("Hook failed to exit cleanly, abandoning it now: %s", local_error->message); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } stdout_pipe = g_subprocess_get_stdout_pipe (subprocess); stdout_bytes = g_input_stream_read_bytes (stdout_pipe, 1024, NULL, &local_error); if (!stdout_bytes) { g_warning ("Failed to read stdout pipe of hook, abandoning it now: %s", local_error->message); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } stdout_data = g_bytes_get_data (stdout_bytes, &stdout_size); stdout_str = g_malloc (stdout_size + 1); memcpy (stdout_str, stdout_data, stdout_size); stdout_str[stdout_size] = '\0'; stdout_newline = strchr (stdout_str, '\n'); if (stdout_newline != NULL) *stdout_newline = '\0'; if (g_strcmp0 (hook_stage, "setup") == 0) { if (g_strcmp0 (stdout_str, "ok") == 0) continue; else if (g_strcmp0 (stdout_str, "pass") == 0) return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } else if (g_strcmp0 (hook_stage, "setup-dialog") == 0) { if (g_strcmp0 (stdout_str, "ok") == 0) continue; else if (g_strcmp0 (stdout_str, "pass") == 0) { g_clear_pointer (¤t_dialog, dialog_data_unref); continue; } } else if (g_strcmp0 (hook_stage, "teardown-dialog") == 0) { if (g_strcmp0 (stdout_str, "ok") == 0) continue; else if (g_strcmp0 (stdout_str, "abort") == 0) { hook_aborted = TRUE; continue; } } else if (g_strcmp0 (hook_stage, "catch") == 0) { if (g_strcmp0 (stdout_str, "recover") == 0) { hook_aborted = FALSE; continue; } else if (g_strcmp0 (stdout_str, "abort") == 0) { finish = TRUE; continue; } } else if (g_strcmp0 (hook_stage, "action") == 0) { finish = TRUE; continue; } else if (g_strcmp0 (hook_stage, "teardown") == 0) { if (g_strcmp0 (stdout_str, "continue") == 0) return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); else if (g_strcmp0 (stdout_str, "stop") == 0) return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_STOP); else if (g_strcmp0 (stdout_str, "confirm") == 0) return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONFIRM); else if (g_strcmp0 (stdout_str, "deny") == 0) return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_DENY); } else g_assert_not_reached (); g_warning ("Received invalid response from hook for stage \"%s\", abandoning it now", hook_stage); return dex_future_new_for_int (BZ_HOOK_RETURN_STATUS_CONTINUE); } } static DexFuture * run_emission_fiber (RunEmissionData *data) { GListModel *hooks = data->hooks; BzHookSignal signal = data->signal; BzHookTransactionType ts_type = data->ts_type; char *ts_appid = data->ts_appid; BzEntryGroup *group = data->group; guint n_hooks = 0; n_hooks = g_list_model_get_n_items (hooks); for (guint i = 0; i < n_hooks; i++) { g_autoptr (BzHook) hook = NULL; BzHookSignal when = 0; hook = g_list_model_get_item (hooks, i); when = bz_hook_get_when (hook); if (when == signal) { const char *check_appid_regex = NULL; BzHookReturnStatus hook_result = BZ_HOOK_RETURN_STATUS_CONTINUE; check_appid_regex = bz_hook_get_check_appid_regex (hook); if (check_appid_regex != NULL) { GRegex *regex = NULL; regex = g_object_get_data (G_OBJECT (hook), "check-appid-regex"); if (regex == NULL) { g_autoptr (GError) local_error = NULL; regex = g_regex_new ( check_appid_regex, G_REGEX_OPTIMIZE, G_REGEX_MATCH_DEFAULT, &local_error); if (regex != NULL) g_object_set_data_full ( G_OBJECT (hook), "check-appid-regex", regex, (GDestroyNotify) g_regex_unref); else g_warning ("Hook check-appid-regex property '%s' " "is an invalid regex string: %s", check_appid_regex, local_error->message); } if (regex != NULL && !g_regex_match (regex, ts_appid, G_REGEX_MATCH_DEFAULT, NULL)) continue; } hook_result = dex_await_int ( bz_execute_hook (hook, ts_type, ts_appid, group), NULL); if (hook_result == BZ_HOOK_RETURN_STATUS_CONFIRM || hook_result == BZ_HOOK_RETURN_STATUS_STOP) break; else if (hook_result == BZ_HOOK_RETURN_STATUS_DENY) return dex_future_new_reject ( G_IO_ERROR, G_IO_ERROR_UNKNOWN, "Prevented by a configured hook"); } } return dex_future_new_true (); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/hooks.h���������������������������������������������������������������0000664�0000000�0000000�00000002435�15240005042�0017425�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* hooks.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-entry-group.h" #include "bz-hook.h" G_BEGIN_DECLS DexFuture * bz_execute_hook (BzHook *hook, BzHookTransactionType ts_type, const char *ts_appid, BzEntryGroup *group); DexFuture * bz_run_hook_emission (GListModel *hooks, BzHookSignal signal, BzHookTransactionType ts_type, const char *ts_appid, BzEntryGroup *group); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/����������������������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0017240�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Adwaita.svg����������������������������0000664�0000000�0000000�00000000562�15240005042�0026101�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path opacity="0.95" d="M6.3999 54.0696H73.9319V121.602L6.3999 54.0696Z" fill="white"/> <path opacity="0.75" d="M121.6 6.40015H73.9304V54.0697L121.6 6.40015Z" fill="white"/> <path opacity="0.4" d="M73.9304 54.0696H109.683V89.8218L73.9304 54.0696Z" fill="white"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Audiovideo.svg�������������������������0000664�0000000�0000000�00000035210�15240005042�0026615�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="128" height="128" viewBox="0 0 128 128" fill="none" version="1.1" id="svg15" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <defs id="defs15"> <linearGradient id="linearGradient38"> <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop38" /> <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop39" /> </linearGradient> <linearGradient id="linearGradient36"> <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop36" /> <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop37" /> </linearGradient> <linearGradient xlink:href="#linearGradient1059" id="linearGradient1063" x1="32" y1="284" x2="32" y2="220" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.82142825,0,0,0.82142825,5.4285929,-147.28564)" /> <linearGradient id="linearGradient1059"> <stop style="stop-color:#a347ba;stop-opacity:1" offset="0" id="stop1055" /> <stop style="stop-color:#613583;stop-opacity:1" offset="1" id="stop1057" /> </linearGradient> <clipPath clipPathUnits="userSpaceOnUse" id="clipPath27"> <path id="path27" style="opacity:1;vector-effect:none;fill:#e4e6e8;stroke-width:6;marker:none;marker-start:none;marker-mid:none;marker-end:none" d="M 14.914341,-9.8323163 94.588644,36.167663 98.616437,29.191321 18.942134,-16.808658 Z" /> </clipPath> <clipPath clipPathUnits="userSpaceOnUse" id="clipPath28"> <path style="opacity:1;vector-effect:none;fill:#e4e6e8;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" d="M -1.0856586,17.880497 78.588644,63.880475 82.616438,56.904132 9.8703354,14.904152 C 6.4944689,12.955094 0.81469089,14.588995 -1.0856586,17.880497 Z" id="path28" /> </clipPath> <radialGradient xlink:href="#linearGradient36" id="radialGradient37" cx="48.571297" cy="88.666283" fx="48.571297" fy="88.666283" r="12" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.7504071,4.5430831e-7,-1.7666665e-7,1.5008635,-36.019525,-44.07601)" /> <radialGradient xlink:href="#linearGradient36" id="radialGradient38" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.7504071,4.5430831e-7,-1.7666665e-7,1.5008635,11.980475,-43.07601)" cx="48.571297" cy="88.666283" fx="48.571297" fy="88.666283" r="12" /> <radialGradient xlink:href="#linearGradient38" id="radialGradient39" cx="67" cy="46.26923" fx="67" fy="46.26923" r="22" gradientTransform="matrix(1.5447005,-0.04827177,0.04545443,1.4545454,-38.598082,-16.066489)" gradientUnits="userSpaceOnUse" /> <radialGradient xlink:href="#linearGradient38" id="radialGradient40" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.5447005,-0.04827177,0.04545443,1.4545454,9.401918,-16.066489)" cx="67" cy="46.26923" fx="67" fy="46.26923" r="22" /> </defs> <mask id="mask0_63_353" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="52" y="54" width="24" height="13"> <path d="M52.4287 54.9282H75.5716V66.4997H52.4287V54.9282Z" fill="white" id="path14" /> </mask> <rect style="display:inline;vector-effect:none;fill:#422863;fill-opacity:1;stroke:none;stroke-width:6.50655;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" id="rect1092" width="91.999962" height="66.057907" x="12.000038" y="22" rx="8" ry="8" /> <rect ry="7.9999995" rx="7.9999995" y="18.618126" x="12.000019" height="67.381874" width="91.999962" id="rect1094" style="display:inline;vector-effect:none;fill:url(#linearGradient1063);fill-opacity:1;stroke:none;stroke-width:6.57143;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" /> <path style="opacity:1;vector-effect:none;fill:#e4e6e8;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" d="M 12.000042,24.085705 H 104 V 16.030118 H 20.000039 c -3.898115,0 -7.999997,4.254888 -7.999997,8.055587 z" id="path26" /> <path id="rect995" clip-path="url(#clipPath28)" style="display:inline;vector-effect:none;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" d="m 17.100294,-5.5599844 -11.3526797,-6.446e-4 -2.05e-4,33.941762 11.3536557,-10e-4 z M 38.750929,6.9400153 27.39825,6.9393706 l -2.05e-4,33.9417624 11.353656,-10e-4 z m 21.650635,12.4999997 -11.352679,-6.45e-4 -2.05e-4,33.941763 11.353656,-10e-4 z m 21.650636,12.5 -11.35268,-6.45e-4 -2.05e-4,33.941762 11.353656,-10e-4 z" transform="rotate(-29.999999,17.036268,-3.4351499)" /> <path id="rect20" style="opacity:1;vector-effect:none;fill:#e4e6e8;stroke-width:6;marker:none;marker-start:none;marker-mid:none;marker-end:none" d="M 12.000042,24.030117 H 104 v 8.055586 H 12.000042 Z" /> <path id="rect1009" clip-path="url(#clipPath27)" style="display:inline;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" d="m 21.747409,0.66832025 2.05e-4,-33.94176225 11.352679,6.45e-4 7.72e-4,33.94007053 z M 43.398044,13.16832 l 2.05e-4,-33.941762 11.35268,6.44e-4 7.71e-4,33.940071 z m 21.650635,12.5 2.05e-4,-33.9417626 11.35268,6.447e-4 7.71e-4,33.9400709 z m 21.650636,12.499999 2.05e-4,-33.9417619 11.352679,6.448e-4 7.72e-4,33.9400711 z" transform="matrix(0.86602541,0.49999999,0.49999999,-0.86602541,4.0000019,8.057911)" /> <path style="display:inline;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:0.333333px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 12.000019,21.282961 c 0,-2.66797 2.74463,-5.33333 5.33333,-5.33333 0,0 10.66666,10.58931 10.66666,10.66666 v 5.33334 h -15.99999 z" id="path1021" clip-path="none" /> <path id="rect1033" clip-path="none" style="display:inline;vector-effect:none;fill:#77767b;stroke-width:0.25;stroke-linecap:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:new" d="M 12.000037,32.030121 H 104 V 34.03012 H 12.000037 Z" /> <path id="path1037" d="m 103.36418,32.030121 -1.01647,1.99999 H 89.000011 l 1.271169,-1.99999 z" style="display:inline;fill:#3d3846;fill-opacity:1;stroke:none;stroke-width:0.25px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" clip-path="none" /> <path style="display:inline;fill:#3d3846;fill-opacity:1;stroke:none;stroke-width:0.25px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 78.243004,32.030121 -1.016467,1.99999 H 63.878835 l 1.27117,-1.99999 z" id="path1039" clip-path="none" /> <path id="path1041" d="m 53.243011,32.030121 -1.016467,1.99999 H 38.878841 l 1.27117,-1.99999 z" style="display:inline;fill:#3d3846;fill-opacity:1;stroke:none;stroke-width:0.25px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" clip-path="none" /> <path style="display:inline;fill:#3d3846;fill-opacity:1;stroke:none;stroke-width:0.25px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 28.381248,32.030121 -1.01646,1.99999 h -13.34771 l 1.27117,-1.99999 z" id="path1043" clip-path="none" /> <path id="path1023" style="display:inline;vector-effect:none;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;opacity:0.4" d="M 40 42.029297 L 40 54.029297 L 26 54.029297 C 24.98258 54.029297 24 54.920907 24 56.029297 L 92 56.029297 C 92 54.964957 91.06158 54.029297 90 54.029297 L 76 54.029297 L 76 42.029297 L 74 42.029297 L 74 54.029297 L 42 54.029297 L 42 42.029297 L 40 42.029297 z M 24 72.029297 C 24 72.998547 25.01451 74.029297 26 74.029297 L 90 74.029297 C 91.08713 74.029297 92 73.083427 92 72.029297 L 24 72.029297 z " /> <g id="g34" style="fill:#e57a0a;fill-opacity:1"> <path style="display:inline;vector-effect:none;fill:#e57a0a;fill-opacity:1;stroke:none;stroke-width:6.51673;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" d="m 1240.4664,784.33261 v 206.06818 l 64.8001,21.60001 -0.2282,-219.94711 a 40.011985,40.011985 134.97024 0 1 40.0119,-40.05351 l 115.4424,-1.3e-4 a 39.396045,39.396045 44.999966 0 1 39.3961,39.39604 V 948.57422 L 1563.6777,1008 1564,1012.0008 V 783.65921 a 95.658583,95.658583 45.00005 0 0 -95.6584,-95.65858 l -131.5428,-2.3e-4 a 96.332214,96.332214 135.00005 0 0 -96.3324,96.33221 z" transform="matrix(0.18518484,0,0,0.18518484,-169.71557,-85.407212)" id="path32" /> <circle style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#e57a0a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.27351;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-color:#000000" id="circle32" cx="54" cy="100" r="18" /> <circle style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#e57a0a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.27351;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-color:#000000" id="circle33" cx="102" cy="100" r="18" /> </g> <g id="g40" style="fill:#f5c211"> <path style="display:inline;vector-effect:none;fill:#f5c211;fill-opacity:1;stroke:none;stroke-width:6.51673;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" d="m 1240.4664,784.33261 v 206.06818 l 64.8001,21.60001 -0.2282,-219.94711 a 40.011985,40.011985 134.97024 0 1 40.0119,-40.05351 l 115.4424,-1.3e-4 a 39.396045,39.396045 44.999966 0 1 39.3961,39.39604 V 948.57422 L 1563.6777,1008 1564,1012.0008 V 783.65921 a 95.658583,95.658583 45.00005 0 0 -95.6584,-95.65858 l -131.5428,-2.3e-4 a 96.332214,96.332214 135.00005 0 0 -96.3324,96.33221 z" transform="matrix(0.18518484,0,0,0.18518484,-169.71557,-87.407212)" id="path18891" /> <circle style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#f5c211;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.27351;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-color:#000000" id="circle5315" cx="54" cy="98" r="18" /> <circle style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#f5c211;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.27351;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-color:#000000" id="circle28" cx="102" cy="98" r="18" /> </g> <circle style="font-variation-settings:normal;display:inline;vector-effect:none;fill:url(#radialGradient37);fill-rule:evenodd;stroke:none;stroke-width:0.849007;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-color:#000000;opacity:0.5" id="circle29" cx="52" cy="94" r="12" /> <circle style="font-variation-settings:normal;display:inline;vector-effect:none;fill:url(#radialGradient38);fill-rule:evenodd;stroke:none;stroke-width:0.849007;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-color:#000000;opacity:0.5" id="circle37" cx="100" cy="95" r="12" /> <path style="opacity:0.4;fill:none;stroke:url(#radialGradient39);stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none" d="M 104,44 H 79 c 0,0 -14.823223,-0.242641 -15,16 v 19" id="path38" /> <path style="opacity:0.4;fill:none;stroke:url(#radialGradient40);stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none" d="M 112,58 V 79" id="path39" /> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Create.svg�����������������������������0000664�0000000�0000000�00000014534�15240005042�0025736�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <linearGradient id="a" gradientTransform="matrix(0.25 0 0 0.244048 -0.499619 50.195877)" gradientUnits="userSpaceOnUse" x1="48" x2="464" y1="44" y2="44"> <stop offset="0" stop-color="#babdb6"/> <stop offset="0.0416667" stop-color="#f6f5f4"/> <stop offset="0.0833333" stop-color="#d5d3cf"/> <stop offset="0.916667" stop-color="#deddda"/> <stop offset="0.958333" stop-color="#f6f5f4"/> <stop offset="1" stop-color="#babdb6"/> </linearGradient> <linearGradient id="b" gradientTransform="matrix(-0.471598 0 0 0.471598 569.325439 -130.366928)" gradientUnits="userSpaceOnUse" x1="953.275024" x2="944.207458" y1="350.855988" y2="359.923553"> <stop offset="0" stop-color="#e9b96e"/> <stop offset="1" stop-color="#dc9321"/> </linearGradient> <linearGradient id="c" gradientTransform="matrix(-0.358336 0 0 0.358336 230.872086 1.097)" gradientUnits="userSpaceOnUse" x1="418.838409" x2="433.349823" y1="227" y2="212.868271"> <stop offset="0" stop-color="#9a9996"/> <stop offset="0.415508" stop-color="#c0bfbc"/> <stop offset="1" stop-color="#deddda"/> </linearGradient> <radialGradient id="d" cx="450.948059" cy="225.394623" gradientTransform="matrix(-0.658592 0 0 0.658592 370.111938 -72.351868)" gradientUnits="userSpaceOnUse" r="39.999989"> <stop offset="0" stop-color="#5b5b5b"/> <stop offset="0.634455" stop-color="#262e39"/> <stop offset="1" stop-color="#113f78"/> </radialGradient> <filter id="e" height="100%" width="100%" x="0%" y="0%"> <feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/> </filter> <mask id="f"> <g filter="url(#e)"> <rect fill-opacity="0.3" height="128" width="128"/> </g> </mask> <clipPath id="g"> <rect height="152" width="192"/> </clipPath> <linearGradient id="h" gradientUnits="userSpaceOnUse" x1="19.25" x2="54.820038" y1="55.999985" y2="91.570023"> <stop offset="0" stop-color="#dc8add"/> <stop offset="1" stop-color="#103c72"/> </linearGradient> <radialGradient id="i" cx="67.502945" cy="244.504639" gradientTransform="matrix(1.001091 -0.00000013 0.00000014 0.81247 -0.576645 -108.652573)" gradientUnits="userSpaceOnUse" r="11.077337"> <stop offset="0" stop-color="#113f78" stop-opacity="0"/> <stop offset="0.786035" stop-color="#113f78" stop-opacity="0.105882"/> <stop offset="1" stop-color="#103c72"/> </radialGradient> <mask id="j"> <g filter="url(#e)"> <rect fill-opacity="0.2" height="128" width="128"/> </g> </mask> <clipPath id="k"> <rect height="152" width="192"/> </clipPath> <path d="m 24 123 v 1 h 16 v -1 z m 64 0 v 1 h 16 v -1 z m 0 0" fill="#9a9996"/> <path d="m 88 124 v -4 l -24 -96 v 4 z" fill="#77767b" fill-rule="evenodd"/> <path d="m 40 124 v -4 l 24 -96 v 4 z" fill="#77767b" fill-rule="evenodd"/> <path d="m 64 4 c -2.90625 0.003906 -5.417969 2.027344 -6.039062 4.867188 l -0.003907 -0.003907 l -33.957031 114.136719 h 16 l 24 -101 l 24 101 h 16 l -33.992188 -114.285156 l -0.007812 0.011718 c -0.671875 -2.773437 -3.148438 -4.722656 -6 -4.726562 z m 0 5 c 1.65625 0 3 1.34375 3 3 s -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 z m 0 0" fill="#c0bfbc"/> <path d="m 20 30 h 88 c 4.417969 0 8 3.582031 8 8 v 66 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -66 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/> <path d="m 20 20 h 88 c 4.417969 0 8 3.582031 8 8 v 72 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -72 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#f6f5f4"/> <path d="m 128 36 l -48.90625 48.910156 c -2.199219 2.285156 -5.84375 2.324219 -8.085938 0.082032 c -2.242187 -2.242188 -2.203124 -5.886719 0.082032 -8.085938 l 41.132812 -41.132812 c 4.898438 -4.203126 11.777344 -3.773438 15.777344 0.226562 z m 0 0" fill="url(#b)"/> <path d="m 90.683594 59.585938 c 5.148437 0.003906 7.6875 6.257812 3.996094 9.847656 l -19.066407 21.058594 c -2.785156 2.828124 -7.339843 2.847656 -10.144531 0.039062 c -2.804688 -2.804688 -2.785156 -7.359375 0.042969 -10.140625 l 21.058593 -19.066406 c 1.078126 -1.113281 2.5625 -1.738281 4.113282 -1.738281 z m 0 0" fill="url(#c)"/> <path d="m 72 68 c 8.835938 0 16 7.164062 16 16 s -7.164062 16 -16 16 h -16 v -16 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="url(#d)"/> <g clip-path="url(#g)" mask="url(#f)" transform="matrix(1 0 0 1 -8 -16)"> <path d="m 72.003906 95 c 0 -1.65625 1.339844 -2.996094 2.996094 -2.996094 s 2.996094 1.339844 2.996094 2.996094 s -1.339844 2.996094 -2.996094 2.996094 s -2.996094 -1.339844 -2.996094 -2.996094 z m 0 0" fill="#ffffff"/> </g> <path d="m 12 39.867188 v 24 c 2.003906 -1.125 4.425781 -1.488282 6.671875 -1.003907 s 4.304687 1.8125 5.667969 3.664063 c 1.761718 2.390625 2.3125 5.460937 2.457031 8.429687 c 0.144531 2.964844 -0.066406 5.957031 0.394531 8.894531 c 0.628906 3.996094 2.539063 7.792969 5.410156 10.648438 c 2.867188 2.855469 6.6875 4.753906 10.703126 5.269531 c 2.609374 0.335938 5.253906 0.203125 7.886718 0.210938 l 4.808594 0.019531 c 0 -0.441406 0 -0.886719 0 -1.328125 c 0 -0.222656 0 -0.449219 0 -0.671875 c -2.035156 -0.476562 -4.085938 -0.863281 -6.15625 -1.160156 c -1.339844 -0.191406 -2.695312 -0.34375 -3.996094 -0.734375 c -1.300781 -0.386719 -2.5625 -1.023438 -3.460937 -2.039063 c -0.757813 -0.855468 -1.226563 -1.941406 -1.429688 -3.066406 c -0.207031 -1.121094 -0.152343 -2.28125 0.046875 -3.402344 c 0.40625 -2.246094 1.390625 -4.339844 2.132813 -6.5 c 2.398437 -6.988281 2.167969 -14.796875 -0.375 -21.730468 c -2.804688 -7.644532 -8.546875 -14.3125 -16.011719 -17.5625 c -4.605469 -2.007813 -9.78125 -2.6875 -14.75 -1.9375 z m 0 0" fill="url(#h)"/> <path d="m 46.90625 96.375 l 4.285156 3.605469 l 18.808594 0.019531 l -2 -3 c -3.144531 -4.714844 -9.132812 -9 -12 -9 c 0 6 -5.5625 9.097656 -9.09375 8.375 z m 0 0" fill="url(#i)"/> <g clip-path="url(#k)" mask="url(#j)" transform="matrix(1 0 0 1 -8 -16)"> <path d="m 35 128 l -0.621094 2 h 16.054688 l 0.523437 -1.972656 z m 57.988281 0 l 0.5 2 h 16.132813 l -0.621094 -2 z m 0 0"/> </g> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Develop.svg����������������������������0000664�0000000�0000000�00000005362�15240005042�0026130�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <linearGradient id="a" gradientUnits="userSpaceOnUse" x1="12" x2="116" y1="64" y2="64"> <stop offset="0" stop-color="#77767b"/> <stop offset="0.05" stop-color="#c0bfbc"/> <stop offset="0.1" stop-color="#9a9996"/> <stop offset="0.899999" stop-color="#9a9996"/> <stop offset="0.95" stop-color="#c0bfbc"/> <stop offset="1" stop-color="#77767b"/> </linearGradient> <filter id="b" height="100%" width="100%" x="0%" y="0%"> <feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/> </filter> <mask id="c"> <g filter="url(#b)"> <rect fill-opacity="0.05" height="128" width="128"/> </g> </mask> <radialGradient id="d" cx="63.999996" cy="194.190475" gradientTransform="matrix(4.727273 -0.00000079 0.0000003 1.636364 -230.545471 -205.766182)" gradientUnits="userSpaceOnUse" r="44"> <stop offset="0" stop-color="#ffffff"/> <stop offset="1" stop-color="#ffffff" stop-opacity="0.094118"/> </radialGradient> <clipPath id="e"> <rect height="152" width="192"/> </clipPath> <path d="m 20 22 h 88 c 4.417969 0 8 3.582031 8 8 v 78 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -78 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/> <path d="m 20 12 h 88 c 4.417969 0 8 3.582031 8 8 v 80 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -80 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#deddda"/> <path d="m 20 104 h 88 c 2.210938 0 4 -1.789062 4 -4 v -80 c 0 -2.210938 -1.789062 -4 -4 -4 h -88 c -2.210938 0 -4 1.789062 -4 4 v 80 c 0 2.210938 1.789062 4 4 4 z m 0 0" fill="#241f31"/> <g clip-path="url(#e)" mask="url(#c)" transform="matrix(1 0 0 1 -8 -16)"> <path d="m 116 116 h -88 v -78 h 88 z m 0 0" fill="url(#d)"/> </g> <path d="m 24 28 h 28 v 4 h -28 z m 0 0" fill="#ff7800"/> <path d="m 24 36 h 16 v 4 h -16 z m 0 0" fill="#deddda"/> <path d="m 32 44 h 42 v 4 h -42 z m 0 0" fill="#3584e4"/> <path d="m 32 52 h 22 v 4 h -22 z m 0 0" fill="#deddda"/> <path d="m 40 60 h 36 v 4 h -36 z m 0 0" fill="#deddda"/> <path d="m 40 68 h 20 v 4 h -20 z m 0 0" fill="#8ff0a4"/> <path d="m 48 76 h 24 v 4 h -24 z m 0 0" fill="#ff7800"/> <path d="m 24 84 h 32 v 4 h -32 z m 0 0" fill="#deddda"/> <path d="m 24 92 h 18 v 4 h -18 z m 0 0" fill="#3584e4"/> <path d="m 32 76 h 14 v 4 h -14 z m 0 0" fill="#8ff0a4"/> <path d="m 62 68 h 20 v 4 h -20 z m 0 0" fill="#deddda"/> <path d="m 78 60 h 18 v 4 h -18 z m 0 0" fill="#3584e4"/> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Kde.svg��������������������������������0000664�0000000�0000000�00000003064�15240005042�0025232�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M72.9494 7.34277L53.962 9.16041V87.3425L72.7483 84.5142V51.1804L98.0007 88.1522L117.798 81.8883L91.9393 46.3319L118 12.7957L97.7996 8.15112L72.7483 41.686L72.9494 7.34277ZM29.9097 26.3951C29.6953 26.4171 29.4882 26.512 29.3272 26.674L21.875 34.1249C21.5616 34.4391 21.5026 34.9263 21.7336 35.3068L30.4586 49.6767C28.9111 52.2783 27.6708 55.0833 26.7844 58.0423L10.7667 61.374C10.3211 61.4662 10 61.8612 10 62.3185V72.8558C10 73.3015 10.3049 73.6875 10.7343 73.7913L26.281 77.5913C27.11 81.0184 28.3947 84.2671 30.0927 87.2531L21.094 100.976C20.8429 101.359 20.8954 101.864 21.2197 102.187L28.6694 109.638C28.9827 109.951 29.4718 110.012 29.8539 109.782L43.9552 101.218C46.7252 102.816 49.7124 104.074 52.8696 104.927L56.1598 120.746C56.2524 121.195 56.6486 121.513 57.103 121.513H67.6418C68.0848 121.513 68.4714 121.211 68.5772 120.776L72.4525 104.925C75.707 104.046 78.785 102.737 81.6224 101.066L95.5188 110.178C95.9009 110.429 96.4062 110.379 96.7306 110.055L104.183 102.604C104.498 102.289 104.554 101.801 104.323 101.422L99.25 93.0615L97.6088 93.5804C97.3696 93.6559 97.1087 93.5672 96.9679 93.3585C96.9679 93.3585 93.7323 88.6217 89.5533 82.5058C84.5577 92.2829 74.394 98.98 62.6571 98.98C45.982 98.98 32.4629 85.4606 32.4629 68.7846C32.4629 56.5171 39.7799 45.967 50.2839 41.2409V33.4515C48.3722 34.1202 46.524 34.9265 44.7686 35.8827C44.7674 35.8815 44.7661 35.8784 44.7611 35.8739L30.5378 26.5451C30.3462 26.4198 30.1241 26.373 29.9097 26.3951Z" fill="#FCFCFC"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Learn.svg������������������������������0000664�0000000�0000000�00000022530�15240005042�0025567�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg height="128px" viewBox="0 0 128 128" width="128px" version="1.1" id="svg7" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <defs id="defs7"> <linearGradient id="linearGradient27"> <stop style="stop-color:#865e3c;stop-opacity:1;" offset="0" id="stop27" /> <stop style="stop-color:#865e3c;stop-opacity:0.38039634;" offset="1" id="stop28" /> </linearGradient> <linearGradient xlink:href="#linearGradient2177" id="linearGradient1510" gradientUnits="userSpaceOnUse" x1="2" y1="-300" x2="112" y2="-300" gradientTransform="matrix(1.0181818,0,0,1,5.9636398,172)" /> <linearGradient y2="-212.00002" y1="-212.00002" x2="111.99999" x1="-7.0000001e-06" gradientUnits="userSpaceOnUse" id="linearGradient2177"> <stop stop-color="#77767b" offset="0" id="stop2165" style="stop-color:#865e3c;stop-opacity:1" /> <stop stop-color="#c0bfbc" offset=".03571429" id="stop2167" style="stop-color:#b5835a;stop-opacity:1" /> <stop stop-color="#9a9996" offset=".07136531" id="stop2169" style="stop-color:#865e3c;stop-opacity:1" /> <stop stop-color="#9a9996" offset=".9285714" id="stop2171" style="stop-color:#865e3c;stop-opacity:1" /> <stop stop-color="#c0bfbc" offset=".96428573" id="stop2173" style="stop-color:#b5835a;stop-opacity:1" /> <stop stop-color="#77767b" offset="1" id="stop2175" style="stop-color:#865e3c;stop-opacity:1" /> </linearGradient> <linearGradient xlink:href="#linearGradient2163" id="linearGradient2288" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5090909,0,0,-0.48684211,30.98182,-20.21053)" x1="1.9999964" y1="-296.21622" x2="127.71429" y2="-296.21622" /> <linearGradient y2="-212.00002" y1="-212.00002" x2="111.99999" x1="-7.0000001e-06" gradientUnits="userSpaceOnUse" id="linearGradient2163"> <stop stop-color="#77767b" offset="0" id="stop2151" style="stop-color:#865e3c;stop-opacity:1" /> <stop stop-color="#c0bfbc" offset="0.03125" id="stop2153" style="stop-color:#b5835a;stop-opacity:1" /> <stop stop-color="#9a9996" offset="0.125" id="stop2155" style="stop-color:#865e3c;stop-opacity:1" /> <stop stop-color="#9a9996" offset="0.85714287" id="stop2157" style="stop-color:#865e3c;stop-opacity:1" /> <stop stop-color="#c0bfbc" offset="0.9285714" id="stop2159" style="stop-color:#b5835a;stop-opacity:1" /> <stop stop-color="#77767b" offset="1" id="stop2161" style="stop-color:#865e3c;stop-opacity:1" /> </linearGradient> <filter style="color-interpolation-filters:sRGB" id="filter24" x="-0.24741168" y="-0.38097845" width="1.4948234" height="1.7619569"> <feGaussianBlur stdDeviation="9.1480715" id="feGaussianBlur24" /> </filter> <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> <rect style="display:inline;fill:#26a169;fill-opacity:1;stroke-width:0.999997;enable-background:new" y="26.000002" x="16" width="96" height="74" fill="#deddda" id="rect26" /> </clipPath> <linearGradient xlink:href="#linearGradient27" id="linearGradient28" x1="60" y1="110" x2="60" y2="104" gradientUnits="userSpaceOnUse" gradientTransform="translate(0,4)" /> </defs> <rect ry="8" y="-116" x="8" width="112" transform="scale(1,-1)" rx="8" height="76" fill="url(#linearGradient1674)" id="rect1458" style="display:inline;fill:url(#linearGradient1510);stroke-width:1;enable-background:new" /> <path id="rect2282" style="display:inline;fill:url(#linearGradient2288);stroke-width:0.999995;enable-background:new" d="m 32,104 v 11 c 0,4.432 4,5 4,5 h 56 c 3.724893,0 4,-4 4,-4 v -12 z" /> <rect ry="5" style="display:inline;fill:#b5835a;stroke-width:1;enable-background:new" y="-116" x="32" width="63.999996" rx="5" height="11.999998" fill="#deddda" id="rect2147" transform="scale(1,-1)" /> <rect ry="7.9999986" style="display:inline;fill:#b5835a;stroke-width:1;enable-background:new" y="20" x="-120" width="112" rx="8" height="92" fill="#deddda" id="rect1460" transform="scale(-1,1)" /> <rect style="display:inline;fill:#297e5d;fill-opacity:1;stroke-width:0.999997;enable-background:new" y="30.000002" x="16" width="96" height="74" fill="#deddda" id="rect2092" /> <path style="font-weight:bold;font-size:160px;line-height:1.25;font-family:Karumbi;-inkscape-font-specification:Karumbi;opacity:0.8;fill:#ffffff" d="m 40.559861,69.546645 q 1.28,-2.56 3.04,-4.8 1.92,-2.24 6.56,-6.72 4.8,-4.48 8.64,-6.88 4,-2.4 5.92,-2.56 1.92,-0.16 3.2,0.64 2.72,1.76 1.6,5.28 1.12,-0.8 2.08,-1.44 0.96,-0.8 2.4,-0.96 1.6,-0.32 2.72,0.8 1.12,0.96 0.8,2.88 -1.6,5.92 -3.36,10.72 -1.6,4.8 -0.96,7.84 0.64,3.04 4.64,3.84 4,0.64 13.92,-1.6 1.6,-0.16 2.56,0.64 0.96,0.8 1.12,1.92 0.16,1.12 -0.64,2.24 -0.64,1.12 -2.88,1.76 -5.76,1.44 -11.52,1.44 -5.6,0.16 -8.64,-1.6 -2.88,-1.6 -4.16,-4.32 -1.92,-4.32 0.48,-13.28 -2.4,2.4 -5.76,6.08 -3.36,3.68 -4.8,5.12 -1.44,1.28 -2.72,2.4 -1.12,0.96 -4,1.76 -2.72,0.8 -5.44,0.64 -2.56,-0.16 -4.48,-1.76 -1.92,-1.6 -1.76,-4.48 0.16,-3.04 1.44,-5.6 z m 21.92,-9.76 q -1.76,-0.16 -2.72,-1.44 -4,3.2 -8.32,7.36 -4.32,4 -5.76,8.96 6.4,1.76 14.72,-9.76 2.24,-3.2 4.64,-5.76 -0.96,0.32 -2.56,0.64 z" id="text26" aria-label="a" /> <path style="display:inline;opacity:0.3;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 87.757359,71.75736 28.284271,-28.28427 2.12132,-0.70711 2.12132,2.12132 L 120,48 92,76 86.343145,75 v -1.82843 z" id="path2116" /> <path style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 86.757359,68.75736 28.284271,-28.28427 3.12132,0.29289 2.12132,2.12132 L 120,46 92,74 87,73 87.37868,71.87868 Z" id="path2110" /> <path style="display:inline;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 92,71 25,-26 -1.95837,-4.52691 3.12132,0.29289 2.12132,2.12132 L 120,46 92,74 87,73 86.757359,68.75736 88,72 Z" id="path2114" /> <path style="display:inline;fill:none;stroke:url(#linearGradient28);stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;enable-background:new" d="M 38,110 H 90" id="path2185" /> <g id="g2207" transform="rotate(45,300.28918,92.183341)" style="display:inline;enable-background:new"> <path style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 145.65502,265.77144 12.02082,-12.02082 3.12132,0.29289 1.41421,1.41421 -0.28427,3.1127 -11.73655,11.73655 h -5 l 0.37868,-2.12132 z" id="path2110-3" /> <path style="display:inline;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 150.19055,267.30697 8.73655,-9.73655 -1.25126,-3.8198 3.12132,0.29289 1.41421,1.41421 -0.28427,3.1127 -11.73655,11.73655 h -5 l 0.46447,-4.53553 0.53553,3.53553 z" id="path2114-1" /> </g> <path id="rect9" style="fill:#ffffff;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter24)" d="m 22.626953,37.410156 v 6.1875 h 32.351563 v -6.1875 z M 62.224609,40 v 2.007812 h 14.84961 V 40 Z m 21.390625,0 v 1.476562 h 7.601563 V 40 Z m -43.664062,7.132812 v 4.066407 h 15.203125 v -4.066407 z m 37.123047,1.414063 v 3.005859 h 7.072265 v -3.005859 z m -57.097657,4.951172 v 2.474609 H 30.40625 v -2.474609 z m 34.292969,1.767578 v 4.310547 H 93.9375 v -4.310547 z m -26.691406,6.1875 v 5.302734 h 29.34375 v -5.302734 z m 49.673828,9.722656 V 73 h 9.091797 v -1.824219 z m -48.4375,5.832031 v 1.591797 H 39.244141 V 77.007812 Z M 56.039062,83 v 4.615234 H 82 V 83 Z m 30.050782,0 v 4.261719 H 108.7168 V 83 Z m -65.052735,4.085938 v 0.882812 h 14.140625 v -0.882812 z m 13.78711,6.009765 v 1.943359 h 36.59375 v -1.943359 z" clip-path="url(#clipPath26)" transform="translate(0,4)" /> <rect style="display:inline;fill:#865e3c;fill-opacity:1;stroke-width:0.999998;enable-background:new" y="28" x="-112" width="96" height="2.0000019" fill="#deddda" id="rect2143" transform="scale(-1,1)" /> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Mobile.svg�����������������������������0000664�0000000�0000000�00000025513�15240005042�0025741�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M89.8928 84.2678H37.1785C32.3263 84.2678 28.3928 88.2013 28.3928 93.0535V117.214C28.3928 122.066 32.3263 126 37.1785 126H89.8928C94.745 126 98.6785 122.066 98.6785 117.214V93.0535C98.6785 88.2013 94.745 84.2678 89.8928 84.2678Z" fill="#464153"/> <path d="M94.2857 38.1428H32.7857C27.9335 38.1428 24 42.0763 24 46.9285V117.214C24 122.066 27.9335 126 32.7857 126H94.2857C99.1379 126 103.071 122.066 103.071 117.214V46.9285C103.071 42.0763 99.1379 38.1428 94.2857 38.1428Z" fill="url(#paint0_linear_163_672)"/> <path d="M94.2857 3H32.7857C27.9335 3 24 6.9335 24 11.7857V104.036C24 108.888 27.9335 112.821 32.7857 112.821H94.2857C99.1379 112.821 103.071 108.888 103.071 104.036V11.7857C103.071 6.9335 99.1379 3 94.2857 3Z" fill="url(#paint1_linear_163_672)"/> <path d="M94.2856 7.39282H32.7857C30.3596 7.39282 28.3928 9.35957 28.3928 11.7857V104.036C28.3928 106.462 30.3596 108.428 32.7857 108.428H94.2856C96.7117 108.428 98.6785 106.462 98.6785 104.036V11.7857C98.6785 9.35957 96.7117 7.39282 94.2856 7.39282Z" fill="#3D3846"/> <path d="M81.1071 15.0804C82.3201 15.0804 83.3035 14.097 83.3035 12.8839C83.3035 11.6709 82.3201 10.6875 81.1071 10.6875C79.894 10.6875 78.9106 11.6709 78.9106 12.8839C78.9106 14.097 79.894 15.0804 81.1071 15.0804Z" fill="#9A9996"/> <path d="M67.9286 11.7856H59.1429C58.5364 11.7856 58.0447 12.2773 58.0447 12.8839C58.0447 13.4904 58.5364 13.9821 59.1429 13.9821H67.9286C68.5351 13.9821 69.0268 13.4904 69.0268 12.8839C69.0268 12.2773 68.5351 11.7856 67.9286 11.7856Z" fill="#9A9996"/> <path d="M39.375 3H34.9822V7.39286H39.375V3Z" fill="#C0BFBC"/> <path d="M39.375 108.428H34.9822V112.821H39.375V108.428Z" fill="#DEDDDA"/> <path d="M39.375 126H34.9822V112.821H39.375V126Z" fill="#77767B"/> <path d="M92.0891 3H87.6963V7.39286H92.0891V3Z" fill="#DEDDDA"/> <path d="M92.0891 108.428H87.6963V112.821H92.0891V108.428Z" fill="#C0BFBC"/> <path d="M92.0891 126H87.6963V112.821H92.0891V126Z" fill="#77767B"/> <path d="M66.2813 116.116H60.7902C59.2739 116.116 58.0447 117.345 58.0447 118.862C58.0447 120.378 59.2739 121.607 60.7902 121.607H66.2813C67.7976 121.607 69.0268 120.378 69.0268 118.862C69.0268 117.345 67.7976 116.116 66.2813 116.116Z" fill="#241F31"/> <path d="M58.1004 118.312C58.0648 118.489 58.0447 118.673 58.0447 118.861C58.0447 120.382 59.2692 121.607 60.7902 121.607H66.2813C67.8023 121.607 69.0268 120.382 69.0268 118.861C69.0268 118.673 69.0067 118.489 68.971 118.312C68.7182 119.569 67.6144 120.509 66.2813 120.509H60.7902C59.4571 120.509 58.3533 119.569 58.1004 118.312Z" fill="#9A9996"/> <path d="M44.3168 117.214C43.8799 117.214 43.4609 117.388 43.1519 117.697C42.843 118.006 42.6694 118.425 42.6694 118.862C42.6694 119.299 42.843 119.718 43.1519 120.027C43.4609 120.335 43.8799 120.509 44.3168 120.509C44.7537 120.509 45.1727 120.335 45.4816 120.027C45.7905 119.718 45.9641 119.299 45.9641 118.862C45.9641 118.425 45.7905 118.006 45.4816 117.697C45.1727 117.388 44.7537 117.214 44.3168 117.214ZM48.7096 117.214C48.2727 117.214 47.8537 117.388 47.5448 117.697C47.2358 118.006 47.0623 118.425 47.0623 118.862C47.0623 119.299 47.2358 119.718 47.5448 120.027C47.8537 120.335 48.2727 120.509 48.7096 120.509C49.1465 120.509 49.5655 120.335 49.8744 120.027C50.1834 119.718 50.3569 119.299 50.3569 118.862C50.3569 118.425 50.1834 118.006 49.8744 117.697C49.5655 117.388 49.1465 117.214 48.7096 117.214ZM53.1025 117.214C52.6656 117.214 52.2466 117.388 51.9376 117.697C51.6287 118.006 51.4551 118.425 51.4551 118.862C51.4551 119.299 51.6287 119.718 51.9376 120.027C52.2466 120.335 52.6656 120.509 53.1025 120.509C53.5394 120.509 53.9584 120.335 54.2673 120.027C54.5762 119.718 54.7498 119.299 54.7498 118.862C54.7498 118.425 54.5762 118.006 54.2673 117.697C53.9584 117.388 53.5394 117.214 53.1025 117.214Z" fill="#241F31"/> <path d="M73.9686 120.509C74.8784 120.509 75.6159 119.771 75.6159 118.862C75.6159 117.952 74.8784 117.214 73.9686 117.214C73.0588 117.214 72.3213 117.952 72.3213 118.862C72.3213 119.771 73.0588 120.509 73.9686 120.509Z" fill="#241F31"/> <path d="M78.3617 120.509C79.2715 120.509 80.009 119.771 80.009 118.862C80.009 117.952 79.2715 117.214 78.3617 117.214C77.4519 117.214 76.7144 117.952 76.7144 118.862C76.7144 119.771 77.4519 120.509 78.3617 120.509Z" fill="#241F31"/> <path d="M82.7545 120.509C83.6643 120.509 84.4018 119.771 84.4018 118.862C84.4018 117.952 83.6643 117.214 82.7545 117.214C81.8447 117.214 81.1072 117.952 81.1072 118.862C81.1072 119.771 81.8447 120.509 82.7545 120.509Z" fill="#241F31"/> <path d="M45.8697 118.31C45.7565 118.632 45.5464 118.91 45.2682 119.107C44.9901 119.305 44.6576 119.41 44.3168 119.411C43.9764 119.411 43.6443 119.305 43.3662 119.109C43.0882 118.913 42.8777 118.635 42.7638 118.315C42.7016 118.49 42.6697 118.675 42.6694 118.862C42.6694 119.298 42.843 119.717 43.1519 120.026C43.4609 120.335 43.8799 120.509 44.3168 120.509C44.7537 120.509 45.1727 120.335 45.4816 120.026C45.7905 119.717 45.9641 119.298 45.9641 118.862C45.9643 118.674 45.9323 118.487 45.8697 118.31ZM50.2626 118.31C50.1494 118.632 49.9392 118.91 49.6611 119.107C49.3829 119.305 49.0505 119.41 48.7096 119.411C48.3692 119.411 48.0372 119.305 47.7591 119.109C47.481 118.913 47.2706 118.635 47.1567 118.315C47.0945 118.49 47.0626 118.675 47.0623 118.862C47.0623 119.298 47.2358 119.717 47.5448 120.026C47.8537 120.335 48.2727 120.509 48.7096 120.509C49.1465 120.509 49.5655 120.335 49.8744 120.026C50.1834 119.717 50.3569 119.298 50.3569 118.862C50.3571 118.674 50.3252 118.487 50.2626 118.31ZM54.6554 118.31C54.5422 118.632 54.3321 118.91 54.0539 119.107C53.7758 119.305 53.4434 119.41 53.1025 119.411C52.7621 119.411 52.43 119.305 52.152 119.109C51.8739 118.913 51.6634 118.635 51.5495 118.315C51.4874 118.49 51.4554 118.675 51.4551 118.862C51.4551 119.298 51.6287 119.717 51.9376 120.026C52.2466 120.335 52.6656 120.509 53.1025 120.509C53.5394 120.509 53.9584 120.335 54.2673 120.026C54.5762 119.717 54.7498 119.298 54.7498 118.862C54.75 118.674 54.7181 118.487 54.6554 118.31Z" fill="#9A9996"/> <path d="M75.5216 118.31C75.4084 118.632 75.1982 118.91 74.9201 119.107C74.6419 119.305 74.3095 119.41 73.9686 119.411C73.6282 119.411 73.2962 119.305 73.0181 119.109C72.74 118.913 72.5296 118.635 72.4157 118.315C72.3535 118.49 72.3216 118.675 72.3213 118.862C72.3213 119.298 72.4948 119.717 72.8038 120.026C73.1127 120.335 73.5317 120.509 73.9686 120.509C74.4055 120.509 74.8245 120.335 75.1334 120.026C75.4424 119.717 75.6159 119.298 75.6159 118.862C75.6161 118.674 75.5842 118.487 75.5216 118.31ZM79.9144 118.31C79.8012 118.632 79.5911 118.91 79.3129 119.107C79.0348 119.305 78.7024 119.41 78.3615 119.411C78.0211 119.411 77.689 119.305 77.411 119.109C77.1329 118.913 76.9224 118.635 76.8085 118.315C76.7464 118.49 76.7144 118.675 76.7141 118.862C76.7141 119.298 76.8877 119.717 77.1966 120.026C77.5056 120.335 77.9246 120.509 78.3615 120.509C78.7984 120.509 79.2174 120.335 79.5263 120.026C79.8352 119.717 80.0088 119.298 80.0088 118.862C80.009 118.674 79.9771 118.487 79.9144 118.31ZM84.3073 118.31C84.1941 118.632 83.9839 118.91 83.7058 119.107C83.4276 119.305 83.0952 119.41 82.7543 119.411C82.414 119.411 82.0819 119.305 81.8038 119.109C81.5257 118.913 81.3153 118.635 81.2014 118.315C81.1392 118.49 81.1073 118.675 81.107 118.862C81.107 119.298 81.2806 119.717 81.5895 120.026C81.8984 120.335 82.3174 120.509 82.7543 120.509C83.1912 120.509 83.6102 120.335 83.9192 120.026C84.2281 119.717 84.4016 119.298 84.4016 118.862C84.4018 118.674 84.3699 118.487 84.3073 118.31Z" fill="#9A9996"/> <path d="M43.768 98.5445C47.4072 98.5445 50.3573 95.5944 50.3573 91.9552C50.3573 88.3161 47.4072 85.366 43.768 85.366C40.1288 85.366 37.1787 88.3161 37.1787 91.9552C37.1787 95.5944 40.1288 98.5445 43.768 98.5445Z" fill="#F8E45C"/> <path d="M63.5358 98.5445C67.175 98.5445 70.1251 95.5944 70.1251 91.9552C70.1251 88.3161 67.175 85.366 63.5358 85.366C59.8967 85.366 56.9465 88.3161 56.9465 91.9552C56.9465 95.5944 59.8967 98.5445 63.5358 98.5445Z" fill="#33D17A"/> <path d="M83.3036 98.5445C86.9428 98.5445 89.8929 95.5944 89.8929 91.9552C89.8929 88.3161 86.9428 85.366 83.3036 85.366C79.6645 85.366 76.7144 88.3161 76.7144 91.9552C76.7144 95.5944 79.6645 98.5445 83.3036 98.5445Z" fill="#ED333B"/> <path d="M43.768 77.6786C47.4072 77.6786 50.3573 74.7284 50.3573 71.0893C50.3573 67.4501 47.4072 64.5 43.768 64.5C40.1288 64.5 37.1787 67.4501 37.1787 71.0893C37.1787 74.7284 40.1288 77.6786 43.768 77.6786Z" fill="#ED333B"/> <path d="M63.5358 77.6786C67.175 77.6786 70.1251 74.7284 70.1251 71.0893C70.1251 67.4501 67.175 64.5 63.5358 64.5C59.8967 64.5 56.9465 67.4501 56.9465 71.0893C56.9465 74.7284 59.8967 77.6786 63.5358 77.6786Z" fill="#62A0EA"/> <path d="M83.3036 77.6786C86.9428 77.6786 89.8929 74.7284 89.8929 71.0893C89.8929 67.4501 86.9428 64.5 83.3036 64.5C79.6645 64.5 76.7144 67.4501 76.7144 71.0893C76.7144 74.7284 79.6645 77.6786 83.3036 77.6786Z" fill="#33D17A"/> <path d="M43.768 56.8124C47.4072 56.8124 50.3573 53.8622 50.3573 50.2231C50.3573 46.5839 47.4072 43.6338 43.768 43.6338C40.1288 43.6338 37.1787 46.5839 37.1787 50.2231C37.1787 53.8622 40.1288 56.8124 43.768 56.8124Z" fill="#33D17A"/> <path d="M63.5358 56.8124C67.175 56.8124 70.1251 53.8622 70.1251 50.2231C70.1251 46.5839 67.175 43.6338 63.5358 43.6338C59.8967 43.6338 56.9465 46.5839 56.9465 50.2231C56.9465 53.8622 59.8967 56.8124 63.5358 56.8124Z" fill="#DEDDDA"/> <path d="M83.3036 56.8124C86.9428 56.8124 89.8929 53.8622 89.8929 50.2231C89.8929 46.5839 86.9428 43.6338 83.3036 43.6338C79.6645 43.6338 76.7144 46.5839 76.7144 50.2231C76.7144 53.8622 79.6645 56.8124 83.3036 56.8124Z" fill="#F8E45C"/> <path d="M43.768 35.9464C47.4072 35.9464 50.3573 32.9963 50.3573 29.3571C50.3573 25.7179 47.4072 22.7678 43.768 22.7678C40.1288 22.7678 37.1787 25.7179 37.1787 29.3571C37.1787 32.9963 40.1288 35.9464 43.768 35.9464Z" fill="#62A0EA"/> <path d="M63.5358 35.9464C67.175 35.9464 70.1251 32.9963 70.1251 29.3571C70.1251 25.7179 67.175 22.7678 63.5358 22.7678C59.8967 22.7678 56.9465 25.7179 56.9465 29.3571C56.9465 32.9963 59.8967 35.9464 63.5358 35.9464Z" fill="#ED333B"/> <path d="M83.3036 35.9464C86.9428 35.9464 89.8929 32.9963 89.8929 29.3571C89.8929 25.7179 86.9428 22.7678 83.3036 22.7678C79.6645 22.7678 76.7144 25.7179 76.7144 29.3571C76.7144 32.9963 79.6645 35.9464 83.3036 35.9464Z" fill="#DEDDDA"/> <defs> <linearGradient id="paint0_linear_163_672" x1="24" y1="113.449" x2="103.071" y2="113.449" gradientUnits="userSpaceOnUse"> <stop stop-color="#3D3846"/> <stop offset="0.0454546" stop-color="#9A9996"/> <stop offset="0.0909091" stop-color="#5E5C64"/> <stop offset="0.909091" stop-color="#5E5C64"/> <stop offset="0.953418" stop-color="#9A9996"/> <stop offset="1" stop-color="#3D3846"/> </linearGradient> <linearGradient id="paint1_linear_163_672" x1="-0.709803" y1="-5.78571" x2="95.2534" y2="82.9788" gradientUnits="userSpaceOnUse"> <stop stop-color="#DEDDDA"/> <stop offset="0.339439" stop-color="#77767B"/> <stop offset="0.72" stop-color="#C0BFBC"/> <stop offset="1" stop-color="#77767B"/> </linearGradient> </defs> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Network.svg����������������������������0000664�0000000�0000000�00000005755�15240005042�0026171�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M122 65.4499C122 80.9651 115.837 95.8448 104.866 106.816C93.8949 117.787 79.0152 123.95 63.5 123.95C55.8177 123.95 48.2106 122.437 41.113 119.497C34.0155 116.557 27.5665 112.248 22.1342 106.816C16.702 101.383 12.3929 94.9345 9.45304 87.8369C6.51313 80.7394 5 73.1323 5 65.4499C5 57.7676 6.51315 50.1605 9.45305 43.063C12.393 35.9654 16.702 29.5164 22.1343 24.0842C27.5665 18.652 34.0155 14.3429 41.113 11.403C48.2106 8.4631 55.8177 6.94995 63.5 6.94995C79.0152 6.94995 93.8949 13.1133 104.866 24.0842C115.837 35.0551 122 49.9348 122 65.4499Z" fill="#5E5C64"/> <path d="M122 63.5C122 79.0152 115.837 93.8949 104.866 104.866C93.8949 115.837 79.0152 122 63.5 122C55.8177 122 48.2106 120.487 41.113 117.547C34.0155 114.607 27.5665 110.298 22.1343 104.866C16.702 99.4335 12.393 92.9845 9.45305 85.887C6.51315 78.7895 5 71.1823 5 63.5C5 55.8177 6.51313 48.2106 9.45304 41.113C12.3929 34.0155 16.702 27.5665 22.1342 22.1343C27.5665 16.702 34.0155 12.393 41.113 9.45305C48.2106 6.51315 55.8177 5 63.5 5C79.0152 5 93.8949 11.1634 104.866 22.1343C115.837 33.1051 122 47.9848 122 63.5Z" fill="url(#paint0_radial_63_357)"/> <path d="M111.275 63.4999C111.275 37.1145 89.8855 15.7249 63.5001 15.7249C37.1147 15.7249 15.7251 37.1145 15.7251 63.4999C15.7251 89.8853 37.1147 111.275 63.5001 111.275C89.8855 111.275 111.275 89.8853 111.275 63.4999Z" fill="#F6F5F4"/> <path d="M63.5 85.9252C75.885 85.9252 85.925 75.8852 85.925 63.5002C85.925 51.1152 75.885 41.0752 63.5 41.0752C51.115 41.0752 41.075 51.1152 41.075 63.5002C41.075 75.8852 51.115 85.9252 63.5 85.9252Z" fill="#F6F5F4" stroke="#C0BFBC" stroke-width="3.9" stroke-linecap="round" stroke-linejoin="round"/> <path d="M60.575 41.0752L63.5 21.5752L66.425 41.0752H60.575Z" fill="#C0BFBC"/> <path d="M41.1111 65.3019L21.6111 62.3769L41.1111 59.4519V65.3019Z" fill="#C0BFBC"/> <path d="M85.9121 65.7772L105.412 62.8522L85.9121 59.9272V65.7772Z" fill="#C0BFBC"/> <path d="M61.1685 85.915L64.0935 105.415L67.0185 85.915H61.1685Z" fill="#C0BFBC"/> <path d="M56.7161 70.5048L70.5046 56.7163L32.4673 32.4675L56.7161 70.5048Z" fill="#ED333B"/> <path d="M56.7161 70.5049L70.5046 56.7163L94.5327 94.533L56.7161 70.5049Z" fill="#3584E4"/> <path d="M56.7161 70.5048L63.6103 63.6106L32.4673 32.4675L56.7161 70.5048Z" fill="#A51D2D"/> <path d="M56.7161 70.5046L63.6103 63.6104L94.5327 94.5328L56.7161 70.5046Z" fill="#1755A1"/> <path d="M63.5001 66.9126C65.3848 66.9126 66.9126 65.3848 66.9126 63.5001C66.9126 61.6155 65.3848 60.0876 63.5001 60.0876C61.6155 60.0876 60.0876 61.6155 60.0876 63.5001C60.0876 65.3848 61.6155 66.9126 63.5001 66.9126Z" fill="#F6F5F4"/> <defs> <radialGradient id="paint0_radial_63_357" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(64.0225 62.525) scale(58.5)"> <stop stop-color="#1A5FB4"/> <stop offset="0.73913" stop-color="#9A9996"/> <stop offset="0.895652" stop-color="#DEDDDA"/> <stop offset="1" stop-color="#9A9996"/> </radialGradient> </defs> </svg> �������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.New.svg��������������������������������0000664�0000000�0000000�00000005010�15240005042�0025251�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="128" height="128" viewBox="0 0 128 128" fill="none" version="1.1" id="svg4" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <defs id="defs4" /> <path id="path9" mask="none" style="fill:#e5a50a;stroke:#e5a50a;stroke-width:2;stroke-dasharray:none;stroke-opacity:1" d="M 98.704657,115.84252 63.999965,91.000045 29.51959,115.93104 42.784746,75.563338 8.0559887,47.159383 52.547079,47.301099 63.975889,9.421805 l 10.995736,37.455157 45.028255,0.1392 -34.459238,27.861056 z" /> <path id="path2016" mask="none" style="fill:#f6d32d;stroke-width:10.4425" d="M 98.704657,111.84252 63.999965,87.000045 29.51959,111.93104 42.784746,71.563338 8.0559887,46.159383 50.547079,46.301099 63.975889,5.4218055 76.971625,45.876962 l 43.028255,0.1392 -34.459238,24.861056 z" /> <path style="opacity:0.2;fill:#f9f06b;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 29.519544,111.93103 63.975935,5.421772 64,87 Z" id="path4" /> <path style="opacity:0.3;fill:#e5a50a;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 99,112 64,63 8.0559887,46.159383 Z" id="path5" /> <path style="opacity:0.4;fill:#f5c211;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 98.555119,111.37717 64.024065,6.745371 64,87 Z" id="path7" /> <path id="path8" style="opacity:0.4;fill:#f8e45c;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 64.011719,46.158203 8.0566406,46.160156 64,63 64.0078,62.998 Z" /> <path id="path6" style="opacity:0.2;fill:#f9f06b;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 64.007812,62.994141 -0.01562,0.0039 -35,48.999999 L 64,86.654297 Z" /> <path id="path10" style="opacity:0.4;fill:#f9f06b;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 63.982422,46.158203 55.955078,0.002 L 63.994141,63 l -0.0078,-0.002 z m -13.019531,0 -3.876953,11.75 -39.0292974,-11.75 z" /> <path id="path11" style="opacity:0.4;fill:#f6d32d;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 64.023438,6.7460938 64.007812,63.009766 98.554688,111.37695 Z M 64,86.662109 V 87 l 18.308594,12.91602 z" /> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Play.svg�������������������������������0000664�0000000�0000000�00000014165�15240005042�0025440�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <linearGradient id="a" gradientUnits="userSpaceOnUse"> <stop offset="0" stop-color="#9a9996"/> <stop offset="1" stop-color="#9a9996" stop-opacity="0"/> </linearGradient> <linearGradient id="b" gradientTransform="matrix(0 -1.333333 -1.333333 0 414.662385 134.674892)" x1="38" x2="50" xlink:href="#a" y1="248" y2="248"/> <linearGradient id="c" gradientTransform="matrix(0 -1.333333 -1.333333 0 374.778504 134.674892)" x1="38" x2="50" xlink:href="#a" y1="248" y2="248"/> <path d="m 89.175781 41.980469 l 6.082031 7.5625 l 22.648438 -4.671875 l 9.875 47.90625 c 1.488281 7.234375 -2.171875 14.546875 -8.851562 17.695312 c -6.679688 3.148438 -14.648438 1.316406 -19.28125 -4.433594 l -35.40625 -44 z m 0 0" fill="#deddda"/> <path d="m 39.175781 41.980469 l -6.082031 7.5625 l -22.648438 -4.671875 l -9.875 47.90625 c -1.488281 7.234375 2.171876 14.546875 8.851563 17.695312 c 6.679687 3.148438 14.648437 1.316406 19.28125 -4.433594 l 35.40625 -44 z m 0 0" fill="#deddda"/> <path d="m 41.113281 28.007812 h 46 v 32 h -46 z m 0 0" fill="#deddda"/> <path d="m 60.445312 59.289062 l -31.984374 39.75 c -3.859376 4.78125 -10.117188 6.929688 -16.101563 5.527344 s -10.632813 -6.105468 -11.96875 -12.105468 l -0.066406 0.316406 c -1.484375 7.234375 2.171875 14.546875 8.855469 17.695312 c 6.679687 3.148438 14.648437 1.316406 19.28125 -4.433594 l 35.402343 -44 z m 7.101563 0 l -3.421875 2.75 l 35.40625 44 c 4.632812 5.75 12.601562 7.582032 19.28125 4.433594 c 6.683594 -3.148437 10.339844 -10.460937 8.851562 -17.695312 l -0.0625 -0.316406 c -1.335937 6 -5.988281 10.703124 -11.96875 12.105468 c -5.984374 1.402344 -12.242187 -0.746094 -16.101562 -5.527344 z m 0 0" fill="#5e5c64" fill-opacity="0.235294"/> <g fill="#c0bfbc"> <path d="m 54.113281 49.007812 c 0 12.152344 -9.851562 22 -22 22 c -12.152343 0 -22 -9.847656 -22 -22 c 0 -12.148437 9.847657 -22 22 -22 c 12.148438 0 22 9.851563 22 22 z m 0 0"/> <path d="m 46.113281 32.007812 h 36 v 52 h -36 z m 0 0"/> <path d="m 118.113281 49.007812 c 0 12.152344 -9.851562 22 -22 22 c -12.152343 0 -22 -9.847656 -22 -22 c 0 -12.148437 9.847657 -22 22 -22 c 12.148438 0 22 9.851563 22 22 z m 0 0"/> <path d="m 57.996094 80.007812 c 0 7.667969 -6.214844 13.882813 -13.882813 13.882813 s -13.886719 -6.214844 -13.886719 -13.882813 c 0 -7.667968 6.21875 -13.882812 13.886719 -13.882812 s 13.882813 6.214844 13.882813 13.882812 z m 0 0"/> <path d="m 97.996094 80.007812 c 0 7.667969 -6.214844 13.882813 -13.882813 13.882813 s -13.886719 -6.214844 -13.886719 -13.882813 c 0 -7.667968 6.21875 -13.882812 13.886719 -13.882812 s 13.882813 6.214844 13.882813 13.882812 z m 0 0"/> </g> <path d="m 46.113281 32.007812 h 36 v 48 h -36 z m 0 0" fill="#f6f5f4"/> <path d="m 57.996094 78.007812 c 0 7.667969 -6.214844 13.882813 -13.882813 13.882813 s -13.886719 -6.214844 -13.886719 -13.882813 c 0 -7.667968 6.21875 -13.882812 13.886719 -13.882812 s 13.882813 6.214844 13.882813 13.882812 z m 0 0" fill="#f6f5f4"/> <path d="m 97.996094 78.007812 c 0 7.667969 -6.214844 13.882813 -13.882813 13.882813 s -13.886719 -6.214844 -13.886719 -13.882813 c 0 -7.667968 6.21875 -13.882812 13.886719 -13.882812 s 13.882813 6.214844 13.882813 13.882812 z m 0 0" fill="#f6f5f4"/> <path d="m 54.113281 47.007812 c 0 12.152344 -9.851562 22 -22 22 c -12.152343 0 -22 -9.847656 -22 -22 c 0 -12.148437 9.847657 -22 22 -22 c 12.148438 0 22 9.851563 22 22 z m 0 0" fill="#f6f5f4"/> <path d="m 118.113281 47.007812 c 0 12.152344 -9.851562 22 -22 22 c -12.152343 0 -22 -9.847656 -22 -22 c 0 -12.148437 9.847657 -22 22 -22 c 12.148438 0 22 9.851563 22 22 z m 0 0" fill="#f6f5f4"/> <path d="m 29.996094 36.007812 c -1.109375 0 -2 0.890626 -2 2 v 6 h -6 c -1.109375 0 -2 0.890626 -2 2 v 4 c 0 1.109376 0.890625 2 2 2 h 6 v 6 c 0 1.109376 0.890625 2 2 2 h 4 c 1.109375 0 2 -0.890624 2 -2 v -6 h 6 c 1.109375 0 2 -0.890624 2 -2 v -4 c 0 -1.109374 -0.890625 -2 -2 -2 h -6 v -6 c 0 -1.109374 -0.890625 -2 -2 -2 z m 0 0" fill="#3d3846"/> <path d="m 29.996094 34.007812 c -1.109375 0 -2 0.890626 -2 2 v 6 h -6 c -1.109375 0 -2 0.890626 -2 2 v 4 c 0 1.109376 0.890625 2 2 2 h 6 v 6 c 0 1.109376 0.890625 2 2 2 h 4 c 1.109375 0 2 -0.890624 2 -2 v -6 h 6 c 1.109375 0 2 -0.890624 2 -2 v -4 c 0 -1.109374 -0.890625 -2 -2 -2 h -6 v -6 c 0 -1.109374 -0.890625 -2 -2 -2 z m 0 0" fill="#5e5c64"/> <path d="m 109.996094 50.007812 v 2 c 0 3.324219 -2.675782 6 -6 6 c -3.324219 0 -6 -2.675781 -6 -6 v -2 z m 0 0" fill="#c01c28"/> <path d="m 97.996094 50.007812 c 0 3.3125 2.6875 6 6 6 s 6 -2.6875 6 -6 s -2.6875 -6 -6 -6 s -6 2.6875 -6 6 z m 0 0" fill="#ed333b"/> <path d="m 93.996094 42.007812 v 2 c 0 3.324219 -2.675782 6 -6 6 c -3.324219 0 -6 -2.675781 -6 -6 v -2 z m 0 0" fill="#1a5fb4"/> <path d="m 81.996094 42.007812 c 0 3.3125 2.6875 6 6 6 s 6 -2.6875 6 -6 s -2.6875 -6 -6 -6 s -6 2.6875 -6 6 z m 0 0" fill="#3584e4"/> <path d="m 54.113281 78.007812 c 0 5.523438 -4.480469 10 -10 10 c -5.523437 0 -10 -4.476562 -10 -10 c 0 -5.523437 4.476563 -10 10 -10 c 5.519531 0 10 4.476563 10 10 z m 0 0" fill="#241f31"/> <path d="m 94.113281 78.007812 c 0 5.523438 -4.480469 10 -10 10 c -5.523437 0 -10 -4.476562 -10 -10 c 0 -5.523437 4.476563 -10 10 -10 c 5.519531 0 10 4.476563 10 10 z m 0 0" fill="#241f31"/> <path d="m 54.113281 76.007812 c 0 5.523438 -4.480469 10 -10 10 c -5.523437 0 -10 -4.476562 -10 -10 c 0 -5.523437 4.476563 -10 10 -10 c 5.519531 0 10 4.476563 10 10 z m 0 0" fill="#3d3846"/> <path d="m 94.113281 76.007812 c 0 5.523438 -4.480469 10 -10 10 c -5.523437 0 -10 -4.476562 -10 -10 c 0 -5.523437 4.476563 -10 10 -10 c 5.519531 0 10 4.476563 10 10 z m 0 0" fill="#3d3846"/> <path d="m 83.996094 68.007812 c -4.417969 0 -8 3.582032 -8 8 c 0 4.417969 3.582031 8 8 8 c 4.417968 0 8 -3.582031 8 -8 c 0 -4.417968 -3.582032 -8 -8 -8 z m 0 0" fill="url(#b)"/> <path d="m 44.113281 68.007812 c -4.417969 0 -8 3.582032 -8 8 c 0 4.417969 3.582031 8 8 8 s 8 -3.582031 8 -8 c 0 -4.417968 -3.582031 -8 -8 -8 z m 0 0" fill="url(#c)"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Popular.svg����������������������������0000664�0000000�0000000�00000007512�15240005042�0026153�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="mask0_163_646" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="16" y="0" width="96" height="95"> <path d="M63.9993 0C37.4894 0 16 20.2027 16 45.1253C16.0115 55.0542 21.919 66.4177 32.3169 76.8154L50.3947 94.5571H78.3561L95.7462 76.7157C105.254 67.2071 111.98 55.0057 112 45.1253C112 20.2027 90.5092 0 63.9993 0Z" fill="white"/> </mask> <g mask="url(#mask0_163_646)"> <path d="M63.9993 0C37.4893 0 16 20.2027 16 45.1253C16.0115 55.0542 21.0148 64.5521 25.9437 72.5763L42.5071 103.721H85.4915L102.119 72.4564C106.984 64.5359 111.977 55.0057 111.999 45.1253C111.999 20.2027 90.5092 0 63.9993 0Z" fill="url(#paint0_radial_163_646)"/> <path d="M62.5664 0C62.5664 0 36.3 16.3421 36.3 41.7429C36.3 61.3704 59.4744 103.721 59.4744 103.721H66.8648C66.8648 103.721 68.7748 61.3704 68.7748 41.7429C68.7748 16.3421 62.5664 0 62.5664 0Z" fill="url(#paint1_radial_163_646)"/> <path d="M62.5421 0.142706C50.783 0.340719 39.1471 4.56768 30.3038 11.8551C21.4576 19.1411 15.4742 29.4297 13.7204 40.3622C11.9437 51.4414 14.5328 63.0918 20.8773 72.5762L48.0979 103.721H57.3138L38.2115 81.1851C32.0504 73.9179 26.0727 66.2735 23.0294 57.4317C19.9875 48.5898 19.9259 38.8427 23.0337 30.0224C25.8766 22.0021 31.1056 14.9161 38.1012 9.6042C45.1184 4.3182 53.6004 1.0342 62.5421 0.141357V0.142706Z" fill="url(#paint2_radial_163_646)"/> <path d="M62.7914 0.169638C73.837 -1.91421 85.6734 -0.0378028 95.3822 5.33548C105.091 10.7088 112.579 19.5291 116 29.621C118.47 36.9461 118.844 44.7535 117.085 52.2577C115.303 59.7568 111.451 66.6824 105.918 72.3378L89.8615 103.482H70.6862L89.7899 71.6333C93.8992 64.781 97.7521 57.6162 98.9986 49.8371C100.245 42.0581 98.947 33.9813 95.5971 26.772C89.618 13.9079 77.2055 3.84298 62.7928 0.170987L62.7914 0.169638Z" fill="url(#paint3_radial_163_646)"/> </g> <path d="M53.4942 113.899V122.803C53.4926 123.39 53.607 123.971 53.8307 124.513C54.0545 125.056 54.3832 125.548 54.798 125.963C55.2128 126.378 55.7054 126.707 56.2477 126.931C56.79 127.155 57.3711 127.269 57.9578 127.268H70.0423C72.516 127.268 73.9868 125.222 74.506 122.803V113.899H53.4942Z" fill="#E5A50A"/> <path d="M53.4942 111.989V120.894C53.4928 121.48 53.6073 122.061 53.8311 122.604C54.0549 123.146 54.3837 123.638 54.7984 124.053C55.2132 124.468 55.7058 124.797 56.248 125.02C56.7902 125.244 57.3712 125.359 57.9578 125.357H70.0423C72.516 125.357 73.9868 123.312 74.506 120.894V111.99L53.4942 111.989Z" fill="#E5A50A"/> <path d="M66.8655 111.989V125.357H70.0423C72.516 125.357 73.9868 123.312 74.506 120.894V111.99L66.8655 111.989Z" fill="#F3AF0B"/> <defs> <radialGradient id="paint0_radial_163_646" cx="0" cy="0" r="1" gradientTransform="matrix(0.228477 73.2059 -68.8401 0.190429 63.5051 34.302)" gradientUnits="userSpaceOnUse"> <stop stop-color="white"/> <stop offset="0.519" stop-color="white"/> <stop offset="0.734" stop-color="#CFCFCF"/> <stop offset="1" stop-color="#DCDCDC"/> </radialGradient> <radialGradient id="paint1_radial_163_646" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(60.7909 28.5261) scale(77.4763 77.0489)"> <stop stop-color="#ED686F"/> <stop offset="0.865" stop-color="#A51D2D"/> <stop offset="1" stop-color="#E01B24"/> </radialGradient> <radialGradient id="paint2_radial_163_646" cx="0" cy="0" r="1" gradientTransform="matrix(18.1818 84.0491 -53.6353 10.2548 39.009 18.1545)" gradientUnits="userSpaceOnUse"> <stop stop-color="#ED686F"/> <stop offset="0.911" stop-color="#A51D2D"/> <stop offset="1" stop-color="#E01B24"/> </radialGradient> <radialGradient id="paint3_radial_163_646" cx="0" cy="0" r="1" gradientTransform="matrix(-18.1818 84.0491 53.6353 10.2548 87.786 17.9161)" gradientUnits="userSpaceOnUse"> <stop stop-color="#ED686F"/> <stop offset="0.911" stop-color="#A51D2D"/> <stop offset="1" stop-color="#E01B24"/> </radialGradient> </defs> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Science.svg����������������������������0000664�0000000�0000000�00000056626�15240005042�0026114�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="128" height="128" viewBox="0 0 128 128" fill="none" version="1.1" id="svg35" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <defs id="defs35"> <linearGradient id="linearGradient41"> <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop41" /> <stop style="stop-color:#ffffff;stop-opacity:0.59226412;" offset="1" id="stop42" /> </linearGradient> <clipPath clipPathUnits="userSpaceOnUse" id="clipPath36"> <path id="path36" d="m 52.218314,6.00103 c -1.539651,-0.0204 -2.554714,0.50293 -3.259361,1.28705 -0.704636,0.78405 -1.080179,1.88075 -1.080179,2.99185 0,1.1112 0.375543,2.20784 1.080179,2.99194 0.704647,0.78412 1.71971,1.30878 3.259361,1.28701 0.596478,-0.008 1.084356,0.47321 1.084359,1.06974 v 31.27782 c 4e-6,0.2286 -0.07322,0.45119 -0.208928,0.63515 L 23.172432,88.14773 c -5.03e-4,7.6e-4 -0.001,0.001 -0.002,0.002 -1.584091,2.39264 -1.933179,5.40515 -1.95979,7.96457 v 0.004 c -2.1e-5,0.002 2.1e-5,0.004 0,0.006 0.005,8.86974 7.174927,16.0356 16.046057,16.0356 h 53.486849 c 8.8738,0 16.044772,-7.17027 16.045942,-16.04397 -0.007,-2.82242 -0.49265,-5.62802 -1.97021,-7.97704 -9.971282,-13.53236 -19.941622,-27.0653 -29.912872,-40.59772 -0.13575,-0.18403 -0.20895,-0.40672 -0.20888,-0.6354 V 15.62806 c 10e-6,-0.59653 0.48788,-1.07782 1.08436,-1.06973 2.40019,0.0329 4.33954,-1.87832 4.33954,-4.27897 0,-2.40065 -1.93937,-4.31292 -4.33954,-4.27891 -0.005,3e-5 -0.01,3e-5 -0.0145,0 H 52.232971 c -0.0049,3e-5 -0.0097,3e-5 -0.01456,0 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#99c1f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> </clipPath> <clipPath clipPathUnits="userSpaceOnUse" id="clipPath38"> <path id="path39" clip-path="none" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.322;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#99c1f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 50,8 c -2.216,0 -4,1.784 -4,4 0,2.216 1.784,4 4,4 h 2 V 48 L 23.788194,88.799806 C 20,94 19.875993,97.969115 20,103.5 v 0.004 c -2.2e-5,0.002 2.3e-5,0.004 0,0.006 0.0051,9.12045 7.377893,16.49 16.5,16.49 h 55 c 9.12485,0 16.49879,-7.3733 16.5,-16.49805 0.71769,-7.465658 -2.36777,-12.567654 -6.39048,-18.273159 C 92.991037,72.981294 84.783727,59.920781 76,48 V 16 h 2 c 2.216,0 4,-1.784 4,-4 0,-2.216 -1.784,-4 -4,-4 z" /> </clipPath> <radialGradient xlink:href="#linearGradient41" id="radialGradient42" cx="49.709709" cy="66.530579" fx="49.709709" fy="66.530579" r="16.5" gradientTransform="matrix(1.4069825,-3.7673017e-5,1.2020518e-4,4.4889443,-8.23898,-209.96815)" gradientUnits="userSpaceOnUse" /> <radialGradient xlink:href="#linearGradient41" id="radialGradient43" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.4069825,-3.7673017e-5,1.2020518e-4,4.4889443,-9.315121,-211.96815)" cx="57.024899" cy="49.448219" fx="57.024899" fy="49.448219" r="16.5" /> </defs> <path id="path1" clip-path="none" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#99c1f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 62,8 c -2.216,0 -4,1.784 -4,4 0,2.216 1.784,4 4,4 h 2 V 48 L 35.788194,88.799806 C 32,94 31.875993,97.969115 32,103.5 v 0.004 c -2.2e-5,0.002 2.3e-5,0.004 0,0.006 0.0051,9.12045 7.377893,16.49 16.5,16.49 h 55 c 9.12485,0 16.49879,-7.3733 16.5,-16.49805 0.71769,-7.465658 -2.36777,-12.567654 -6.39048,-18.273159 C 104.99104,72.981294 96.78373,59.920781 88,48 V 16 h 2 c 2.216,0 4,-1.784 4,-4 0,-2.216 -1.784,-4 -4,-4 z" /> <path id="rect44" style="fill:#e5a50a;fill-opacity:1;stroke:none;stroke-width:0.999998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" d="m 9.9589844,10.008896 c -0.1622951,0.0026 -0.3255895,0.02387 -0.484375,0.06641 -0.423335,0.113446 -0.795638,0.363203 -1.0625,0.710937 C 8.1457134,11.133974 8,11.560821 8,11.99913 V 120.0089 c 0.0048,1.10387 0.894968,1.99023 2,1.99023 h 64 c 1.105032,0 1.995238,-0.88636 2,-1.99023 L 11.714844,11.003036 c -0.219099,-0.379589 -0.55797,-0.676015 -0.962891,-0.84375 -0.253075,-0.104835 -0.522477,-0.154722 -0.7929686,-0.15039 z M 24,65.99913 l 26,42 H 24 Z" /> <path d="M 76,120.0089 11.715231,9.004458 C 11.496132,8.624869 11.157764,8.328198 10.752843,8.160463 10.347923,7.992727 9.898977,7.963302 9.475549,8.07674 9.052214,8.190186 8.678139,8.440159 8.411277,8.787893 8.144881,9.135628 8,9.561691 8,10 V 120.0089 Z M 50,104 H 24 V 62 Z" fill="#f6d32d" id="path2" style="fill:#f8e45c;stroke-width:0.999997" /> <g id="g1" style="stroke:#f5c211"> <path d="M 13.8639,117.5 H 8" stroke="#b38108" stroke-width="1.17286" id="path3" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 13.8639,99.907 H 8" stroke="#b38108" stroke-width="1.17286" id="path4" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 13.8639,82.3141 H 8" stroke="#b38108" stroke-width="1.17286" id="path5" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 13.8639,64.7213 H 8" stroke="#b38108" stroke-width="1.17286" id="path6" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 13.8639,47.1286 H 8" stroke="#b38108" stroke-width="1.17286" id="path7" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 13.8639,29.5358 H 8" stroke="#b38108" stroke-width="1.17286" id="path8" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,113.981 H 8" stroke="#b38108" stroke-width="1.17285" id="path10" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,110.463 H 8" stroke="#b38108" stroke-width="1.17285" id="path11" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,106.944 H 8" stroke="#b38108" stroke-width="1.17285" id="path12" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,103.426 H 8" stroke="#b38108" stroke-width="1.17285" id="path13" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,96.3883 H 8" stroke="#b38108" stroke-width="1.17285" id="path14" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,92.8698 H 8" stroke="#b38108" stroke-width="1.17285" id="path15" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,89.3515 H 8" stroke="#b38108" stroke-width="1.17285" id="path16" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,85.8329 H 8" stroke="#b38108" stroke-width="1.17285" id="path17" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,78.7955 H 8" stroke="#b38108" stroke-width="1.17285" id="path18" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,75.2772 H 8" stroke="#b38108" stroke-width="1.17285" id="path19" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,71.7587 H 8" stroke="#b38108" stroke-width="1.17285" id="path20" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,68.2399 H 8" stroke="#b38108" stroke-width="1.17285" id="path21" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,61.203 H 8" stroke="#b38108" stroke-width="1.17285" id="path22" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,57.6845 H 8" stroke="#b38108" stroke-width="1.17285" id="path23" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,54.1657 H 8" stroke="#b38108" stroke-width="1.17285" id="path24" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,50.6471 H 8" stroke="#b38108" stroke-width="1.17285" id="path25" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,43.6102 H 8" stroke="#b38108" stroke-width="1.17285" id="path26" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,40.0914 H 8" stroke="#b38108" stroke-width="1.17285" id="path27" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,36.5729 H 8" stroke="#b38108" stroke-width="1.17285" id="path28" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,33.0543 H 8" stroke="#b38108" stroke-width="1.17285" id="path29" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,26.0172 H 8" stroke="#b38108" stroke-width="1.17285" id="path30" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,22.4987 H 8" stroke="#b38108" stroke-width="1.17285" id="path31" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,18.9801 H 8" stroke="#b38108" stroke-width="1.17285" id="path32" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> <path d="M 11.5182,15.4616 H 8" stroke="#b38108" stroke-width="1.17285" id="path33" style="stroke-width:1;stroke-dasharray:none;stroke:#f5c211" /> </g> <path id="path1255" clip-path="none" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.6;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#99c1f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 62,8 c -2.216,0 -4,1.784 -4,4 0,2.216 1.784,4 4,4 h 2 V 48 L 35.788194,88.799806 C 32,94 31.875993,97.969115 32,103.5 v 0.004 c -2.2e-5,0.002 2.3e-5,0.004 0,0.006 0.0051,9.12045 7.377893,16.49 16.5,16.49 h 55 c 9.12485,0 16.49879,-7.3733 16.5,-16.49805 0.71769,-7.465658 -2.36777,-12.567654 -6.39048,-18.273159 C 104.99104,72.981294 96.78373,59.920781 88,48 V 16 h 2 c 2.216,0 4,-1.784 4,-4 0,-2.216 -1.784,-4 -4,-4 z" /> <path d="M 72,47 H 82 M 72,43 H 82 M 72,39 H 82 M 68,35 H 80 M 72,31 H 82 M 72,27 H 82 M 72,23 H 82 M 68,19 h 10" style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.519685" id="path1259" clip-path="url(#clipPath38)" transform="translate(12)" /> <path style="opacity:0.8;fill:none;stroke:url(#radialGradient43);stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none" d="M 90.92386,10 H 63.076141" id="path42" /> <path id="path37" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#26a269;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 94.64453,80.691406 C 89.43563,80.518324 82.75519,82.625977 76,84.601562 v 27.197268 h 24.67773 c 6.17597,0 11.06668,-4.88623 11.07618,-11.0586 -0.41045,-6.834077 -5.97622,-11.297717 -9.625,-16.751949 -1.76361,-2.267487 -4.35904,-3.193025 -7.48438,-3.296875 z" /> <path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#33d17a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 49.376666,83.988397 c -3.648789,5.454232 -9.213212,9.917672 -9.623659,16.751753 0.0095,6.17237 4.900254,11.05802 11.07622,11.05802 h 49.847543 c 6.18003,0 11.07343,-4.89254 11.07624,-11.07259 -0.24965,-6.611914 -5.8874,-11.661514 -9.62732,-16.737183 -11.53251,13.015262 -43.523002,-11.862022 -52.749024,0 z" id="path1265" /> <path id="path40" clip-path="none" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#62a0ea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 120.08008,102.38086 c -0.0172,0.36796 -0.0436,0.74129 -0.0801,1.12109 C 119.99879,112.6267 112.62485,120 103.5,120 h -55 c -9.122107,0 -16.4949,-7.36978 -16.5,-16.49023 2.3e-5,-0.002 -2.2e-5,-0.004 0,-0.006 V 103.5 c -0.0079,-0.35143 -0.01453,-0.69562 -0.01953,-1.03516 -0.01875,0.96755 -0.0043,1.97204 0.01953,3.03516 v 0.004 c -2.2e-5,0.002 2.3e-5,0.004 0,0.006 0.0051,9.12022 7.377893,16.49 16.5,16.49 h 55 c 9.12485,0 16.49879,-7.3733 16.5,-16.49805 0.10455,-1.08758 0.12809,-2.12466 0.0801,-3.12109 z" /> <path style="opacity:0.4;fill:none;stroke:url(#radialGradient42);stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none" d="m 49.25,95.375 22.625,-39" id="path41" /> <path id="path43" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#99c1f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 57.003906,80.6875 c -3.189261,0.08016 -5.836489,0.998757 -7.626953,3.300781 -3.648789,5.454232 -9.2126,9.917872 -9.623047,16.751949 0.0095,6.17237 4.900206,11.0586 11.076172,11.0586 H 76 100.67773 c 0.386,0 0.7675,-0.0193 1.14258,-0.0566 0.37468,-0.0373 0.74345,-0.0933 1.10547,-0.16602 0.49361,-0.0992 0.9693,-0.24107 1.43555,-0.40234 0.2184,-0.0755 0.43871,-0.14592 0.65039,-0.23438 8e-4,-3.3e-4 0.001,-0.002 0.002,-0.002 0.33062,-0.13825 0.654,-0.29263 0.9668,-0.46094 0.001,-6.9e-4 0.003,-0.001 0.004,-0.002 0.0395,-0.0213 0.076,-0.0466 0.11523,-0.0684 0.58237,-0.32298 1.13453,-0.69212 1.64453,-1.11133 10e-4,-0.001 0.002,-0.003 0.004,-0.004 0.27135,-0.22327 0.53094,-0.45901 0.77929,-0.70704 0.001,-0.001 0.003,-0.003 0.004,-0.004 0.0235,-0.0235 0.0432,-0.0506 0.0664,-0.0742 0.46964,-0.47808 0.89943,-0.99616 1.27539,-1.55469 10e-4,-0.002 0.003,-0.004 0.004,-0.006 0.03,-0.0447 0.0546,-0.0935 0.084,-0.13867 0.16452,-0.25276 0.32299,-0.50847 0.46679,-0.77539 0.33795,-0.62726 0.61852,-1.29281 0.83204,-1.98828 0.21372,-0.69613 0.36054,-1.42345 0.43554,-2.17383 0.037,-0.3702 0.0579,-0.74805 0.0586,-1.12891 -3e-4,-0.005 3e-4,-0.0106 0,-0.0156 -0.24904,-6.590629 -5.85188,-11.628281 -9.5918,-16.687501 -0.0109,-0.01624 -0.0223,-0.03257 -0.0332,-0.04883 -1.76361,-2.267487 -4.35904,-3.193025 -7.48438,-3.296875 C 89.43563,80.518324 82.75519,82.625978 76,84.601562 v 0.144532 C 69.139089,82.748422 62.319341,80.553903 57.003906,80.6875 Z" /> </svg> ����������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.System.svg�����������������������������0000664�0000000�0000000�00000016400�15240005042�0026011�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <linearGradient id="a" gradientUnits="userSpaceOnUse" x1="64" x2="64" y1="262.5" y2="232"> <stop offset="0" stop-color="#9a9996"/> <stop offset="1" stop-color="#77767b"/> </linearGradient> <radialGradient id="b" cx="-243.066583" cy="-74.599978" gradientUnits="userSpaceOnUse" r="28.266656"> <stop offset="0" stop-color="#d5d3cf"/> <stop offset="1" stop-color="#949390"/> </radialGradient> <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="203.999985" x2="267.999985" y1="-64" y2="-64"> <stop offset="0" stop-color="#d5d3cf"/> <stop offset="1" stop-color="#f6f5f4"/> </linearGradient> <g stroke-width="8"> <path d="m 67 122 h -6 l -2 -16 h 10 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round"/> <path d="m 61 10 h 6 l 2 16 h -10 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round"/> <path d="m 667.000092 291.999908 h -6 l -2 -16 h 10 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0 1 -1 0 299.999908 -598.000092)"/> <path d="m 661.000092 179.999908 h 6 l 2 16 h -10 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0 1 -1 0 299.999908 -598.000092)"/> <path d="m 666.999051 291.998922 l -5.999272 -0.00042 l -2.001544 -15.998026 l 9.999915 0.000049 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.5 0.866025 -0.866025 -0.5 600.381916 -391.041005)"/> <path d="m 661.001107 180.000804 l 5.999273 0.000419 l 2.001544 15.998026 l -10.003298 0.001905 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.5 0.866025 -0.866025 -0.5 600.381916 -391.041005)"/> <path d="m 667.000347 291.998468 l -5.999273 0.00042 l -2.002482 -16.00035 l 10.003298 0.001905 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.866025 0.5 -0.5 -0.866025 757.040822 -61.618176)"/> <path d="m 660.999745 180.00119 l 5.999273 -0.00042 l 2.002481 16.00035 l -10.003298 -0.001904 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.866025 0.5 -0.5 -0.866025 757.040822 -61.618176)"/> <path d="m 666.999018 291.999047 l -5.999273 -0.00042 l -2.001544 -15.998026 l 10.003298 -0.001904 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.866025 0.5 -0.5 0.866025 -393.040914 -470.382008)"/> <path d="m 661.001074 180.000929 l 5.999273 0.00042 l 2.001543 15.998025 l -10.003298 0.001905 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.866025 0.5 -0.5 0.866025 -393.040914 -470.382008)"/> <path d="m 667.00038 291.998593 l -5.999273 0.00042 l -2.002481 -16.00035 l 10.003298 0.001905 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.5 0.866025 -0.866025 0.5 -63.618084 -627.040914)"/> <path d="m 660.999779 180.001315 l 5.999272 -0.00042 l 1.999099 15.998397 l -9.999915 0.000049 z m 0 0" fill="#9a9996" stroke="#9a9996" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.5 0.866025 -0.866025 0.5 -63.618084 -627.040914)"/> <path d="m 67 120 h -6 l -2 -16 h 10 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round"/> <path d="m 61 8 h 6 l 2 16 h -10 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round"/> <path d="m 667.000092 291.999908 h -6 l -2 -16 h 10 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0 1 -1 0 299.999908 -600.000092)"/> <path d="m 661.000092 179.999908 h 6 l 2 16 h -10 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0 1 -1 0 299.999908 -600.000092)"/> <path d="m 666.999051 291.998922 l -5.999272 -0.00042 l -2.001544 -15.998026 l 9.999915 0.000049 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.5 0.866025 -0.866025 -0.5 600.381916 -393.041005)"/> <path d="m 661.001107 180.000804 l 5.999273 0.000419 l 2.001544 15.998026 l -10.003298 0.001905 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.5 0.866025 -0.866025 -0.5 600.381916 -393.041005)"/> <path d="m 667.000347 291.998468 l -5.999273 0.00042 l -2.002482 -16.00035 l 10.003298 0.001905 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.866025 0.5 -0.5 -0.866025 757.040822 -63.618176)"/> <path d="m 660.999745 180.00119 l 5.999273 -0.00042 l 2.002481 16.00035 l -10.003298 -0.001904 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(-0.866025 0.5 -0.5 -0.866025 757.040822 -63.618176)"/> <path d="m 666.999018 291.999047 l -5.999273 -0.00042 l -2.001544 -15.998026 l 10.003298 -0.001904 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.866025 0.5 -0.5 0.866025 -393.040914 -472.382008)"/> <path d="m 661.001074 180.000929 l 5.999273 0.00042 l 2.001543 15.998025 l -10.003298 0.001905 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.866025 0.5 -0.5 0.866025 -393.040914 -472.382008)"/> <path d="m 667.00038 291.998593 l -5.999273 0.00042 l -2.002481 -16.00035 l 10.003298 0.001905 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.5 0.866025 -0.866025 0.5 -63.618084 -629.040914)"/> <path d="m 660.999779 180.001315 l 5.999272 -0.00042 l 1.999099 15.998397 l -9.999915 0.000049 z m 0 0" fill="#f6f5f4" stroke="#f6f5f4" stroke-linecap="round" stroke-linejoin="round" transform="matrix(0.5 0.866025 -0.866025 0.5 -63.618084 -629.040914)"/> </g> <path d="m 100 238 c 0 19.882812 -16.117188 36 -36 36 s -36 -16.117188 -36 -36 s 16.117188 -36 36 -36 s 36 16.117188 36 36 z m 0 0" fill="none" stroke="url(#a)" stroke-width="24" transform="matrix(1 0 0 1 0 -172)"/> <path d="m 102 64 c 0 20.988281 -17.011719 38 -38 38 s -38 -17.011719 -38 -38 s 17.011719 -38 38 -38 s 38 17.011719 38 38 z m 0 0" fill="none" stroke="#f6f5f4" stroke-width="20"/> <path d="m -209.5 -64 c 0 14.636719 -11.863281 26.5 -26.5 26.5 s -26.5 -11.863281 -26.5 -26.5 s 11.863281 -26.5 26.5 -26.5 s 26.5 11.863281 26.5 26.5 z m 0 0" fill="none" stroke="url(#b)" stroke-linecap="square" stroke-linejoin="round" stroke-width="5" transform="matrix(0 -1 -1 0 0 -172)"/> <path d="m 268 -64 c 0 17.671875 -14.328125 32 -32 32 s -32 -14.328125 -32 -32 s 14.328125 -32 32 -32 s 32 14.328125 32 32 z m 0 0" fill="none" stroke="url(#c)" stroke-linecap="square" stroke-linejoin="round" stroke-width="8" transform="matrix(0 1 -1 0 0 -172)"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Trending.svg���������������������������0000664�0000000�0000000�00000030062�15240005042�0026277�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="128" height="128" viewBox="0 0 128 128" fill="none" version="1.1" id="svg22" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <g id="g29" transform="matrix(1.1054942,0,0,1.1054942,-3.6317307,-6.6576791)" style="stroke-width:0.904573"> <path opacity="0.154797" d="M 109.77912,10.541422 C 105.20955,6.7078031 98.576734,5.6399497 91.082754,7.5315008 83.588768,9.4230595 75.729233,14.148844 68.92842,20.85252 l 0.02436,0.02044 c -0.980446,0.85371 -1.909289,1.792625 -2.772498,2.821338 L 41.735774,52.825602 c -8.88432,10.587727 -7.512993,26.263673 3.074657,35.147928 l 0.0011,9e-4 c 10.58765,8.884255 26.263596,7.512928 35.147915,-3.074799 L 104.40393,55.768328 c 0.86321,-1.028713 1.62659,-2.106472 2.29709,-3.220256 l 0.0188,0.01575 c 5.42146,-7.862155 8.71097,-16.423504 9.27214,-24.132622 0.56125,-7.709061 -1.64283,-14.055711 -6.21281,-17.889777 z" fill="#000000" id="path1" style="stroke-width:0.904573" /> <path d="m 78.8693,100.249 c 0,10.73 -12.6133,25.726 -12.6133,25.726 0,0 -12.6134,-14.972 -12.6134,-25.726 0,-4.5958 5.647,-8.3215 12.6134,-8.3215 6.9661,0 12.6133,3.7257 12.6133,8.3215 z" fill="url(#paint0_linear_163_603)" id="path3" style="fill:url(#paint0_linear_163_603);stroke-width:0.904573" transform="rotate(40.000512,74.171532,64.740275)" mask="url(#mask27)" /> <path d="m 66.2562,112.625 c 13.3255,0 24.1278,-7.127 24.1278,-15.9182 0,-8.7913 -10.8023,-15.918 -24.1278,-15.918 -13.3254,0 -24.1278,7.1267 -24.1278,15.918 0,8.7912 10.8024,15.9182 24.1278,15.9182 z" fill="url(#paint1_radial_163_603)" id="path4" style="fill:url(#paint1_radial_163_603);stroke-width:0.904573" transform="rotate(40.000512,74.171532,64.740275)" mask="url(#mask26)" /> <path d="m 66.2559,106.183 c 7.9322,0 14.3625,-4.242 14.3625,-9.4756 0,-5.2331 -6.4303,-9.4755 -14.3625,-9.4755 -7.9323,0 -14.3626,4.2424 -14.3626,9.4755 0,5.2336 6.4303,9.4756 14.3626,9.4756 z" fill="url(#paint2_radial_163_603)" id="path5" style="fill:url(#paint2_radial_163_603);stroke-width:0.904573" transform="rotate(40.000512,74.171532,64.740275)" mask="url(#mask25)" /> <path d="m 66.256,100.049 c 2.7975,0 5.0653,-1.4964 5.0653,-3.342 0,-1.8456 -2.2678,-3.3418 -5.0653,-3.3418 -2.7975,0 -5.0653,1.4962 -5.0653,3.3418 0,1.8456 2.2678,3.342 5.0653,3.342 z" fill="#ffffff" id="path6" transform="rotate(40.000512,74.171532,64.740275)" mask="url(#mask24)" style="stroke-width:0.904573" /> <path d="m 100.78366,20.163742 -3.1e-4,-2.57e-4 C 90.228485,11.306741 74.492241,12.683342 65.635498,23.238207 L 41.191567,52.36882 c -8.856743,10.554864 -7.48027,26.291261 3.074594,35.148004 l 3.06e-4,2.57e-4 c 10.554864,8.856744 26.291237,7.479989 35.14798,-3.074875 L 103.85838,55.311593 c 8.85674,-10.554864 7.48014,-26.291108 -3.07472,-35.147851 z" fill="#f6f5f4" id="path7" style="stroke-width:0.904573" /> <path d="m 64,64 c 5.610927,4.708212 13.97622,3.976348 18.684368,-1.634502 C 87.39258,56.754571 86.660793,48.389342 81.049866,43.68113 75.438939,38.972917 67.07371,39.704705 62.365498,45.315632 57.65735,50.926482 58.389073,59.291788 64,64 Z" fill="#ffffff" id="path8" style="stroke-width:0.904573" /> <path d="m 66.407819,61.130214 c 4.025916,3.378206 10.028186,2.8532 13.406456,-1.172793 3.378207,-4.025916 2.853124,-10.02825 -1.172792,-13.406456 -4.025993,-3.37827 -10.02825,-2.853124 -13.406456,1.172792 -3.378271,4.025993 -2.853201,10.028186 1.172792,13.406457 z" fill="#5e5c64" id="path9" style="stroke-width:0.904573" /> <path d="m 100.78373,20.163806 c -1.543336,-1.295038 -3.196629,-2.365386 -4.919488,-3.228062 6.731118,9.06511 6.632078,21.819996 -0.95759,30.864845 L 70.462978,76.930896 c -7.589409,9.044542 -20.133363,11.356718 -30.229253,6.301514 1.171951,1.581283 2.525821,3.018886 4.032819,4.284736 10.587651,8.884255 26.263725,7.512775 35.14798,-3.074876 L 103.8582,55.311964 c 8.88444,-10.587881 7.51318,-26.263903 -3.07447,-35.148158 z" fill="#c0bfbc" fill-opacity="0.17" id="path10" style="stroke-width:0.904573" /> <path d="M 109.63422,9.9844804 C 105.01999,6.1129131 98.322258,5.0343724 90.754748,6.9443233 83.187231,8.8542818 75.250613,13.626346 68.383074,20.395696 l 38.161136,32.021577 c 5.47424,-7.938746 8.79584,-16.583607 9.36268,-24.367936 0.56685,-7.784336 -1.65841,-14.193022 -6.27267,-18.0648566 z" fill="#ed333b" id="path11" style="stroke-width:0.904573" /> <path d="m 40.43961,59.068672 -2.860129,8.474669 c -1.030879,3.05462 -3.157537,5.618585 -5.968977,7.19634 -2.811364,1.57782 -6.107659,2.057116 -9.252457,1.346371 L 10.477566,73.39858 C 9.5661019,73.192476 8.7230787,72.755304 8.0295302,72.128953 7.3353389,71.503368 6.8141096,70.709617 6.5159282,69.823671 6.217104,68.93849 6.1517261,67.990726 6.3251409,67.072326 c 0.172772,-0.917634 0.5794976,-1.776023 1.180587,-2.492205 l 2.9227861,-3.483178 c 1.190456,-1.418704 2.664813,-2.571506 4.328406,-3.384326 1.663528,-0.812744 3.479189,-1.267425 5.329535,-1.334534 l 17.863644,-0.64755 c 0.409258,-0.01479 0.815938,0.06994 1.185262,0.246958 0.369324,0.177014 0.690107,0.440967 0.934963,0.769269 0.244857,0.328302 0.406316,0.711031 0.470661,1.115528 0.06427,0.404434 0.02957,0.818377 -0.101375,1.206384 z" fill="#000000" fill-opacity="0.0937181" id="path12" style="stroke-width:0.904573" /> <path d="m 41.389661,57.936467 -2.86013,8.474669 c -1.030879,3.05462 -3.157536,5.618585 -5.968977,7.19634 -2.811364,1.577819 -6.107659,2.057116 -9.252457,1.346371 L 11.427616,72.266375 C 10.516152,72.06027 9.6731289,71.623098 8.9795804,70.996747 8.2853891,70.371162 7.7641598,69.577412 7.4659784,68.691466 7.1671542,67.806285 7.1017763,66.85852 7.2751911,65.94012 c 0.172772,-0.917634 0.5794976,-1.776022 1.180587,-2.492204 l 2.9227859,-3.483178 c 1.190392,-1.418627 2.664813,-2.571506 4.328406,-3.384327 1.663593,-0.81282 3.479189,-1.267424 5.329536,-1.334533 l 17.863643,-0.647551 c 0.409259,-0.01479 0.815938,0.06995 1.185262,0.246959 0.369324,0.177014 0.690172,0.44089 0.935028,0.769192 0.244856,0.328302 0.406251,0.711107 0.470661,1.115529 0.06427,0.404433 0.02951,0.818452 -0.101439,1.20646 z" fill="#B0AFAC" id="path13" style="fill:#edeceb;fill-opacity:1;stroke-width:0.904573" /> <path d="m 73.094155,86.469586 -7.849417,4.288084 c -2.829154,1.54566 -4.984921,4.085199 -6.05056,7.127882 -1.065715,3.042618 -0.96547,6.372008 0.280589,9.345688 l 4.709772,11.23366 c 0.361463,0.86203 0.937756,1.61582 1.675091,2.19015 0.736692,0.57509 1.609271,0.9509 2.53361,1.09079 0.923697,0.14066 1.868188,0.0403 2.742145,-0.29028 0.874081,-0.32915 1.648658,-0.87887 2.249671,-1.59512 l 2.922786,-3.48317 c 1.190456,-1.41871 2.069359,-3.07129 2.580906,-4.85081 0.511483,-1.77945 0.644399,-3.64601 0.388675,-5.48036 L 76.813847,88.341681 c -0.05649,-0.405611 -0.210631,-0.791464 -0.449005,-1.124379 -0.238452,-0.33298 -0.554093,-0.603061 -0.919923,-0.787194 -0.36583,-0.184134 -0.77078,-0.276687 -1.180306,-0.269822 -0.409449,0.0069 -0.81108,0.112973 -1.170458,0.3093 z" fill="#000000" fill-opacity="0.0937181" id="path14" style="stroke-width:0.904573" /> <path d="m 57.148063,75.057421 c 0.659764,-0.786262 0.557148,-1.958475 -0.229038,-2.618175 -0.786262,-0.659765 -1.958411,-0.557225 -2.618175,0.229037 L 34.195011,96.629054 c -0.659507,0.785956 -0.556968,1.958105 0.229294,2.617869 0.786185,0.6597 1.958411,0.557225 2.617918,-0.228731 z" fill="#deddda" id="path15" style="stroke-width:0.904573" /> <path d="m 112.62321,13.647259 c -2.38201,9.779511 -7.72747,20.696735 -15.225219,31.095024 l 9.369799,7.86234 c 4.77769,-6.928799 7.91626,-14.426004 8.96776,-21.421859 1.05146,-6.995793 -0.0378,-13.132868 -3.11234,-17.535505 z" fill="#e01b24" id="path16" style="stroke-width:0.904573" /> <path d="m 74.044205,85.337381 -7.849416,4.288084 c -2.829155,1.54566 -4.984922,4.085198 -6.05056,7.127882 -1.065715,3.04262 -0.965471,6.372003 0.280588,9.345693 l 4.709773,11.23365 c 0.361462,0.86203 0.937755,1.61583 1.67509,2.19015 0.736693,0.57509 1.609271,0.95091 2.533611,1.0908 0.923697,0.14065 1.868187,0.0403 2.742145,-0.29028 0.87408,-0.32916 1.648657,-0.87887 2.24967,-1.59512 l 2.922787,-3.48318 c 1.190455,-1.4187 2.069358,-3.07129 2.580905,-4.85081 0.511483,-1.77944 0.644463,-3.64608 0.388675,-5.48035 L 77.763897,87.209476 c -0.05649,-0.405611 -0.210631,-0.791465 -0.449005,-1.12438 -0.238451,-0.332979 -0.554028,-0.603137 -0.919858,-0.78727 -0.36583,-0.184134 -0.770844,-0.276611 -1.180306,-0.269822 -0.40945,0.0069 -0.811145,0.11305 -1.170523,0.309377 z" fill="#ffffff" id="path17" style="fill:#f6f5f4;fill-opacity:1;stroke-width:0.904573" /> </g> <defs id="defs22"> <linearGradient id="paint0_linear_163_603" x1="66.2411" y1="98.0348" x2="66.2411" y2="131.728" gradientUnits="userSpaceOnUse"> <stop stop-color="#E01B24" id="stop17" /> <stop offset="1" stop-color="#E01B24" stop-opacity="0" id="stop18" /> </linearGradient> <radialGradient id="paint1_radial_163_603" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(24.1281,0,0,15.9182,66.2568,96.7072)"> <stop stop-color="#E5A50A" id="stop19" /> <stop offset="1" stop-color="#E5A50A" stop-opacity="0" id="stop20" /> </radialGradient> <radialGradient id="paint2_radial_163_603" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.3625,0,0,9.4755,66.2548,96.7066)"> <stop stop-color="white" id="stop21" /> <stop offset="1" stop-color="white" stop-opacity="0" id="stop22" /> </radialGradient> <mask maskUnits="userSpaceOnUse" id="mask24"> <g id="g25" transform="rotate(-40.000512,74.171532,64.740275)"> <path d="m 54.945393,94.961032 c -6.897185,8.219598 -26.198807,11.599348 -26.198807,11.599348 0,0 -0.03843,-19.576951 6.874178,-27.814931 2.954155,-3.520561 9.675065,-2.744538 15.011367,1.733232 5.336302,4.477771 7.267416,10.96179 4.313262,14.482351 z" fill="#ffffff" id="path24" /> </g> </mask> <mask maskUnits="userSpaceOnUse" id="mask25"> <g id="g26" transform="rotate(-40.000512,74.171532,64.740275)"> <path d="m 54.945393,94.961032 c -6.897185,8.219598 -26.198807,11.599348 -26.198807,11.599348 0,0 -0.03843,-19.576951 6.874178,-27.814931 2.954155,-3.520561 9.675065,-2.744538 15.011367,1.733232 5.336302,4.477771 7.267416,10.96179 4.313262,14.482351 z" fill="#ffffff" id="path25" /> </g> </mask> <mask maskUnits="userSpaceOnUse" id="mask26"> <g id="g27" transform="rotate(-40.000512,74.171532,64.740275)"> <path d="m 54.945393,94.961032 c -6.897185,8.219598 -26.198807,11.599348 -26.198807,11.599348 0,0 -0.03843,-19.576951 6.874178,-27.814931 2.954155,-3.520561 9.675065,-2.744538 15.011367,1.733232 5.336302,4.477771 7.267416,10.96179 4.313262,14.482351 z" fill="#ffffff" id="path26" /> </g> </mask> <mask maskUnits="userSpaceOnUse" id="mask27"> <g id="g28" transform="rotate(-40.000512,74.171532,64.740275)"> <path d="m 54.945393,94.961032 c -6.897185,8.219598 -26.198807,11.599348 -26.198807,11.599348 0,0 -0.03843,-19.576951 6.874178,-27.814931 2.954155,-3.520561 9.675065,-2.744538 15.011367,1.733232 5.336302,4.477771 7.267416,10.96179 4.313262,14.482351 z" fill="#ffffff" id="path27" /> </g> </mask> </defs> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Updated.svg����������������������������0000664�0000000�0000000�00000003231�15240005042�0026111�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M63.5475 126.608C97.0473 126.608 124.204 99.4514 124.204 65.9515C124.204 32.4517 97.0473 5.29468 63.5475 5.29468C30.0476 5.29468 2.89062 32.4517 2.89062 65.9515C2.89062 99.4514 30.0476 126.608 63.5475 126.608Z" fill="url(#paint0_linear_164_3)"/> <path d="M63.5475 122.895C97.0473 122.895 124.204 95.7377 124.204 62.2379C124.204 28.738 97.0473 1.58105 63.5475 1.58105C30.0476 1.58105 2.89062 28.738 2.89062 62.2379C2.89062 95.7377 30.0476 122.895 63.5475 122.895Z" fill="url(#paint1_linear_164_3)"/> <path d="M63.5475 123.795C97.0473 123.795 124.204 96.6376 124.204 63.1378C124.204 29.6379 97.0473 2.48096 63.5475 2.48096C30.0476 2.48096 2.89062 29.6379 2.89062 63.1378C2.89062 96.6376 30.0476 123.795 63.5475 123.795Z" fill="url(#paint2_linear_164_3)"/> <path d="M42.3027 65.8508L58.5327 82.0808L91.7326 48.8809" stroke="#8FF0A4" stroke-width="16.2344" stroke-linecap="round"/> <defs> <linearGradient id="paint0_linear_164_3" x1="16.2899" y1="107.732" x2="128.153" y2="107.732" gradientUnits="userSpaceOnUse"> <stop stop-color="#26A269"/> <stop offset="0.285848" stop-color="#1EEF8F"/> <stop offset="1" stop-color="#165F3D"/> </linearGradient> <linearGradient id="paint1_linear_164_3" x1="76.7017" y1="7.8156" x2="76.7017" y2="71.674" gradientUnits="userSpaceOnUse"> <stop stop-color="#F9EF69"/> <stop offset="1" stop-color="#F5C211"/> </linearGradient> <linearGradient id="paint2_linear_164_3" x1="58.533" y1="82.0809" x2="110.607" y2="2.29958" gradientUnits="userSpaceOnUse"> <stop stop-color="#26A269"/> <stop offset="1" stop-color="#F9F06B"/> </linearGradient> </defs> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Utilities.svg��������������������������0000664�0000000�0000000�00000013556�15240005042�0026511�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M29.1431 8.13061V26.941L37.0716 28.1072V6.96436L29.1431 8.13061Z" fill="#ED333B"/> <path d="M50.2856 3L37.2417 5.00666C36.4584 5.12724 35.7442 5.52415 35.2282 6.12558C34.7123 6.72702 34.4286 7.49327 34.4285 8.28571V26.7857C34.4286 27.5782 34.7123 28.3444 35.2282 28.9458C35.7442 29.5473 36.4584 29.9442 37.2417 30.0648L50.2856 32.0714H50.9463V3H50.2856Z" fill="#F66151"/> <path d="M50.2856 3V32.0714V32.7321H119V32.0714V13.5714C119 10.7677 117.886 8.07883 115.904 6.0963C113.921 4.11377 111.232 3 108.429 3H50.2856Z" fill="#3584E4"/> <path d="M9.41207 13.4638L16.5893 11.8918V23.1794L9.41207 21.6074C9.01749 21.521 8.65904 21.2534 8.40047 20.8523C8.14191 20.4512 8 19.9426 8 19.4169V15.6544C8 15.1287 8.14191 14.62 8.40047 14.2189C8.65904 13.8178 9.01749 13.5502 9.41207 13.4638Z" fill="#9A9996"/> <path d="M29.1737 6.24877L18.5408 7.88419C17.8136 7.99605 17.1504 8.36455 16.6712 8.92301C16.1921 9.48147 15.9287 10.193 15.9287 10.9288V24.1431C15.9287 24.8789 16.1921 25.5905 16.6712 26.1489C17.1504 26.7074 17.8136 27.0759 18.5408 27.1877L29.1737 28.8232C29.4968 28.8729 29.8269 28.8521 30.1412 28.7623C30.4555 28.6725 30.7467 28.5158 30.9948 28.303C31.243 28.0901 31.4421 27.8261 31.5786 27.5291C31.7152 27.232 31.7859 26.909 31.7859 26.5821V8.48985C31.7859 8.16294 31.7152 7.8399 31.5786 7.54287C31.4421 7.24583 31.243 6.98184 30.9948 6.76897C30.7467 6.55611 30.4555 6.39941 30.1412 6.30962C29.8269 6.21983 29.4968 6.19907 29.1737 6.24877Z" fill="#F66151"/> <path d="M59.1008 44.4159L59.213 44.6404C59.7235 45.6614 59.9893 46.7872 59.9893 47.9288C59.9893 49.0703 59.7235 50.1962 59.213 51.2172L59.1008 51.4416C59.0074 51.6284 58.9633 51.8359 58.9727 52.0445C58.9821 52.2531 59.0446 52.4559 59.1544 52.6335C59.2642 52.8111 59.4175 52.9577 59.5999 53.0594C59.7823 53.1611 59.9877 53.2145 60.1965 53.2145H71.4286V42.6431H60.1965C59.9877 42.6431 59.7823 42.6964 59.5999 42.7981C59.4175 42.8998 59.2642 43.0464 59.1544 43.2241C59.0446 43.4017 58.9821 43.6044 58.9727 43.813C58.9633 44.0216 59.0074 44.2292 59.1008 44.4159Z" fill="#F66151"/> <path d="M50.2856 32.0715C50.2856 37.91 55.0186 42.643 60.8571 42.643H63.4999H64.8214C65.5512 42.643 66.1428 43.2346 66.1428 43.9644V51.893C66.1428 52.6228 65.5512 53.2144 64.8214 53.2144C64.4255 53.2144 64.2701 53.7278 64.5994 53.9474L70.3819 57.802L74.0714 92.8573V95.5001H87.2856V92.8573L92.5714 42.643V32.0715H50.2856Z" fill="#1C71D8"/> <path d="M92.5714 32.0715C89.7677 32.0715 87.0788 33.1853 85.0963 35.1678C83.1138 37.1504 82 39.8392 82 42.643L87.2857 92.8573V95.5001H97.8571V92.8573L92.987 46.5853C92.9346 46.0879 92.9874 45.5851 93.1419 45.1094C93.2964 44.6338 93.5491 44.1959 93.8837 43.8242C94.2183 43.4524 94.6273 43.1552 95.0842 42.9517C95.5411 42.7482 96.0356 42.643 96.5357 42.643H108.429C114.267 42.643 119 37.91 119 32.0715H92.5714Z" fill="#1A5FB4"/> <path d="M66.1429 92.8572C62.7941 92.857 59.6124 94.3197 57.4323 96.8615L48.4411 107.345C46.2206 109.934 45 113.232 45 116.643V119.286C45 122.205 47.3665 124.571 50.2857 124.571H100.5C103.419 124.571 105.786 122.205 105.786 119.286V111.357V98.1429C105.786 96.741 105.229 95.3966 104.238 94.4053C103.246 93.4141 101.902 92.8572 100.5 92.8572H66.1429Z" fill="#3584E4"/> <path d="M70.382 57.8017L69.8099 57.4203L63.5 53.2141H71.4286V58.4998L70.382 57.8017Z" fill="#1C71D8"/> <path d="M46.044 111.357C45.3638 113.037 45.0095 114.831 45 116.643V119.286C45 122.205 47.3665 124.571 50.2857 124.571H100.5C103.419 124.571 105.786 122.205 105.786 119.286V111.357H46.044Z" fill="#1A5FB4"/> <path d="M72.9589 82.2858L70.3816 57.8015L70.3822 57.8019C72.1532 58.9483 73.6453 60.4765 74.749 62.2743C75.8527 64.0722 76.5402 66.0943 76.7611 68.1923L77.6913 77.0291C77.7611 77.6924 77.6907 78.3629 77.4847 78.9972C77.2787 79.6315 76.9416 80.2154 76.4954 80.7111C76.0492 81.2067 75.5038 81.603 74.8945 81.8743C74.2853 82.1456 73.6258 82.2858 72.9589 82.2858Z" fill="#1A5FB4"/> <path d="M64.8214 36.0359H72.75C73.4821 36.0359 74.0714 36.6252 74.0714 37.3573C74.0714 38.0894 73.4821 38.6787 72.75 38.6787H64.8214C64.0894 38.6787 63.5 38.0894 63.5 37.3573C63.5 36.6252 64.0894 36.0359 64.8214 36.0359Z" fill="#1A5FB4"/> <path d="M38.393 8.94653H46.3215C47.0536 8.94653 47.643 9.53589 47.643 10.268C47.643 11 47.0536 11.5894 46.3215 11.5894H38.393C37.6609 11.5894 37.0715 11 37.0715 10.268C37.0715 9.53589 37.6609 8.94653 38.393 8.94653Z" fill="#241F31" fill-opacity="0.344048"/> <path d="M38.393 16.2144H46.3215C47.0536 16.2144 47.643 16.8037 47.643 17.5358C47.643 18.2679 47.0536 18.8572 46.3215 18.8572H38.393C37.6609 18.8572 37.0715 18.2679 37.0715 17.5358C37.0715 16.8037 37.6609 16.2144 38.393 16.2144Z" fill="#241F31" fill-opacity="0.344048"/> <path d="M38.393 23.4822H46.3215C47.0536 23.4822 47.643 24.0715 47.643 24.8036C47.643 25.5357 47.0536 26.125 46.3215 26.125H38.393C37.6609 26.125 37.0715 25.5357 37.0715 24.8036C37.0715 24.0715 37.6609 23.4822 38.393 23.4822Z" fill="#241F31" fill-opacity="0.344048"/> <path d="M19.8927 20.1787H27.8213C28.5534 20.1787 29.1427 20.7681 29.1427 21.5001C29.1427 22.2322 28.5534 22.8216 27.8213 22.8216H19.8927C19.1606 22.8216 18.5713 22.2322 18.5713 21.5001C18.5713 20.7681 19.1606 20.1787 19.8927 20.1787Z" fill="#241F31" fill-opacity="0.344048"/> <path d="M19.8927 12.2502H27.8213C28.5534 12.2502 29.1427 12.8396 29.1427 13.5717C29.1427 14.3037 28.5534 14.8931 27.8213 14.8931H19.8927C19.1606 14.8931 18.5713 14.3037 18.5713 13.5717C18.5713 12.8396 19.1606 12.2502 19.8927 12.2502Z" fill="#241F31" fill-opacity="0.344048"/> <path d="M113.714 14.2321C113.714 15.8092 113.088 17.3217 111.972 18.4368C110.857 19.552 109.345 20.1785 107.768 20.1785C106.191 20.1785 104.678 19.552 103.563 18.4368C102.448 17.3217 101.821 15.8092 101.821 14.2321C101.821 12.655 102.448 11.1425 103.563 10.0273C104.678 8.91214 106.191 8.28564 107.768 8.28564C109.345 8.28564 110.857 8.91214 111.972 10.0273C113.088 11.1425 113.714 12.655 113.714 14.2321Z" fill="#1C71D8"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolumni.Bazaar.Work.svg�������������������������������0000664�0000000�0000000�00000020454�15240005042�0025453�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg height="128px" viewBox="0 0 128 128" width="128px" version="1.1" id="svg19" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <defs id="defs19"> <radialGradient xlink:href="#linearGradient1608" id="radialGradient5732" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.84852825,0,-8.5608048)" cx="-239.48822" cy="-51.803455" fx="-239.48822" fy="-51.803455" r="11.785111" /> <linearGradient id="linearGradient1608"> <stop style="stop-color:#f9bbe8;stop-opacity:1" offset="0" id="stop1604" /> <stop style="stop-color:#f26b9e;stop-opacity:1" offset="1" id="stop1606" /> </linearGradient> <linearGradient xlink:href="#linearGradient1005" id="linearGradient5734" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.18399251,0.36798506,0.18399251,0.36798507,68.781941,0.707405)" x1="128.81717" y1="-97.698288" x2="158.51802" y2="-127.39915" /> <linearGradient id="linearGradient1005"> <stop id="stop1001" offset="0" style="stop-color:#d0bb8e;stop-opacity:1" /> <stop id="stop1003" offset="1" style="stop-color:#ffffff;stop-opacity:1" /> </linearGradient> <linearGradient xlink:href="#linearGradient5674" id="linearGradient5736" gradientUnits="userSpaceOnUse" x1="-253.63036" y1="-64.517502" x2="-230.06013" y2="-64.517502" gradientTransform="matrix(0.84852828,0,0,1,187.21253,166.5175)" /> <linearGradient id="linearGradient5674"> <stop style="stop-color:#9a9996;stop-opacity:1" offset="0" id="stop5670" /> <stop id="stop5676" offset="0.5" style="stop-color:#deddda;stop-opacity:1" /> <stop style="stop-color:#c0bfbc;stop-opacity:1" offset="1" id="stop5672" /> </linearGradient> </defs> <linearGradient id="a" gradientUnits="userSpaceOnUse" x1="20.00001801213" x2="108.00010899163" y1="88.00001906939" y2="88.00001906939" gradientTransform="translate(12)"> <stop offset="0" stop-color="#1a5fb4" id="stop1" /> <stop offset="0.0340909" stop-color="#1c71d8" id="stop2" /> <stop offset="0.0681818" stop-color="#3584e4" id="stop3" /> <stop offset="0.931818" stop-color="#3584e4" id="stop4" /> <stop offset="0.965909" stop-color="#1c71d8" id="stop5" /> <stop offset="1" stop-color="#1a5fb4" id="stop6" /> </linearGradient> <linearGradient id="b" gradientTransform="matrix(0.272543,0,0,0.295903,13.85959,50.447067)" gradientUnits="userSpaceOnUse" x1="88.574776" x2="367.430145" y1="1.578945" y2="1.578945"> <stop offset="0" stop-color="#1a5fb4" id="stop7" /> <stop offset="0.0263158" stop-color="#3584e4" id="stop8" /> <stop offset="0.973324" stop-color="#3584e4" id="stop9" /> <stop offset="1" stop-color="#1a5fb4" id="stop10" /> </linearGradient> <path d="M 40.722656,44 H 111.27734 C 116.09375,44 120,47.90625 120,52.722656 V 111.27734 C 120,116.09375 116.09375,120 111.27734,120 H 40.722656 C 35.90625,120 32,116.09375 32,111.27734 V 52.722656 C 32,47.90625 35.90625,44 40.722656,44 Z m 0,0" fill="url(#a)" id="path10" style="fill:url(#a)" /> <path d="M 40.722656,8 H 111.27734 C 116.09375,8 120,11.90625 120,16.722656 V 87.277344 C 120,92.09375 116.09375,96 111.27734,96 H 40.722656 C 35.90625,96 32,92.09375 32,87.277344 V 16.722656 C 32,11.90625 35.90625,8 40.722656,8 Z m 0,0" fill="#62a0ea" id="path11" /> <path d="m 60,80 h 32 c 2.21094,0 4,1.789062 4,4 v 22 c 0,2.21094 -1.78906,4 -4,4 H 60 c -2.210938,0 -4,-1.78906 -4,-4 V 84 c 0,-2.210938 1.789062,-4 4,-4 z m 0,0" fill="#62a0ea" id="path12" /> <path d="m 42,14 h 68 c 2.21094,0 4,1.789062 4,4 v 68 c 0,2.210938 -1.78906,4 -4,4 H 42 c -2.210938,0 -4,-1.789062 -4,-4 V 18 c 0,-2.210938 1.789062,-4 4,-4 z m 0,0" fill="url(#b)" id="path13" style="fill:url(#b)" /> <path d="m 60,84 h 32 c 2.21094,0 4,1.789062 4,4 v 12 c 0,2.21094 -1.78906,4 -4,4 H 60 c -2.210938,0 -4,-1.78906 -4,-4 V 88 c 0,-2.210938 1.789062,-4 4,-4 z m 0,0" fill="#deddda" id="path14" /> <path d="M 42.203125,20 C 41,20 40.023438,21.03125 40.023438,22.304688 l -0.0625,66.773437 c 0,0 1.039062,0.582031 2.039062,0.582031 H 56 V 96 h 40 v -6.339844 h 14 c 1,0 2.01172,-0.566406 2.01172,-0.566406 l -0.0664,-66.789062 C 111.94531,21.03125 110.96875,20 109.76563,20 Z m 0,0" fill="#ffffff" id="path15" /> <path d="m 52,68 6,6 10,-10" fill="none" stroke="#3d3846" stroke-width="4" id="path16" /> <path d="m 76,40 h 24 v 4 H 76 Z m 0,0" fill="#c0bfbc" id="path17" /> <path d="m 76,68 h 24 v 4 H 76 Z m 0,0" fill="#c0bfbc" id="path18" /> <path d="m 52,40 6,6 10,-10" fill="none" stroke="#3d3846" stroke-width="4" id="path19" /> <g style="fill:#5e5c64;stroke-width:1.08559" id="g5716" transform="matrix(0.6000001,0.70710678,0.6000001,-0.70710678,-187.21253,166.5175)"> <g id="g5712" style="fill:#5e5c64;fill-opacity:1" transform="translate(1.4142136,-1.4142136)"> <rect style="opacity:1;fill:#f26b9e;fill-opacity:1;stroke:none;stroke-width:2.17119;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect5710" width="23.570223" height="8.0000019" x="-253.63036" y="-66.517502" transform="rotate(-135)" /> </g> <ellipse style="opacity:1;fill:url(#radialGradient5732);fill-opacity:1;stroke:none;stroke-width:2.17119;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="ellipse5714" cx="-241.84525" cy="-56.517502" transform="rotate(-135)" rx="11.785111" ry="10" /> </g> <path id="path5718" d="m 18.000002,7.85786 -9.999999,14.142133 19.999998,4e-6 z" style="display:inline;vector-effect:none;fill:url(#linearGradient5734);fill-opacity:1;stroke:none;stroke-width:12.4899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> <path style="display:inline;vector-effect:none;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:12.4899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" d="m 18,7.857858 -4.343147,6.142143 8.686294,-5e-6 z" id="path5720" /> <path style="display:inline;fill:#f6d32d;fill-opacity:1;stroke:none;stroke-width:0.506438px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 26.000002,21.928939 -15.999999,-1e-6 v 77.951849 h 15.999999 z" id="path5722" /> <path style="display:inline;fill:#f9f06b;fill-opacity:1;stroke:none;stroke-width:0.358106px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 13.99999,21.928941 -5.999988,-1.3e-5 3e-6,77.951838 h 5.999989 z" id="path5724" /> <path style="display:inline;fill:#e5a50a;fill-opacity:1;stroke:none;stroke-width:0.358106px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" d="m 22.000008,21.928942 6.000001,-1.4e-5 3e-6,77.951838 -6.000007,7e-6 z" id="path5726" /> <rect transform="scale(-1,1)" y="98" x="-28" height="8.0000019" width="20" id="rect5728" style="fill:url(#linearGradient5736);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolunmi.Bazaar.github.svg�����������������������������0000664�0000000�0000000�00000002773�15240005042�0026017�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M100 11.9999H28C19.1634 11.9999 12 19.1633 12 27.9999V100C12 108.837 19.1634 116 28 116H100C108.837 116 116 108.837 116 100V27.9999C116 19.1633 108.837 11.9999 100 11.9999Z" fill="#F6F5F4"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M64.0339 23C41.3432 23 23 41.5624 23 64.5267C23 82.8832 34.7531 98.4217 51.0578 103.921C53.0964 104.335 53.8431 103.028 53.8431 101.928C53.8431 100.966 53.7759 97.6657 53.7759 94.2274C42.3612 96.7029 39.9842 89.2771 39.9842 89.2771C38.1498 84.4644 35.4318 83.2275 35.4318 83.2275C31.6958 80.6836 35.7039 80.6836 35.7039 80.6836C39.8482 80.9586 42.0227 84.9462 42.0227 84.9462C45.6907 91.2709 51.6013 89.4838 53.9791 88.3836C54.3185 85.7022 55.4062 83.8459 56.5611 82.8149C47.4571 81.8522 37.8785 78.2772 37.8785 62.3262C37.8785 57.7885 39.508 54.076 42.0899 51.1887C41.6826 50.1577 40.2555 45.8942 42.4981 40.188C42.4981 40.188 45.9628 39.0877 53.775 44.4506C57.1197 43.5416 60.569 43.0792 64.0339 43.0753C67.4986 43.0753 71.0305 43.557 74.292 44.4506C82.105 39.0877 85.5697 40.188 85.5697 40.188C87.8123 45.8942 86.3845 50.1577 85.9771 51.1887C88.6271 54.076 90.1893 57.7885 90.1893 62.3262C90.1893 78.2772 80.6108 81.783 71.4387 82.8149C72.9338 84.121 74.224 86.5957 74.224 90.5149C74.224 96.0836 74.1568 100.553 74.1568 101.927C74.1568 103.028 74.9043 104.335 76.942 103.922C93.2467 98.4208 105 82.8832 105 64.5267C105.067 41.5624 86.6566 23 64.0339 23Z" fill="#24292F"/> </svg> �����bazaar-org-bazaar-48f93f4/src/icons/io.github.kolunmi.Bazaar.gitlab.svg�����������������������������0000664�0000000�0000000�00000004035�15240005042�0025770�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M100 11.9999H28C19.1634 11.9999 12 19.1633 12 27.9999V100C12 108.837 19.1634 116 28 116H100C108.837 116 116 108.837 116 100V27.9999C116 19.1633 108.837 11.9999 100 11.9999Z" fill="#F6F5F4"/> <path d="M104.405 55.6105L104.29 55.3108L92.9099 25.6185C92.6825 25.0368 92.2735 24.5468 91.7412 24.2083C91.2106 23.8681 90.5883 23.7077 89.9572 23.7412C89.3297 23.7747 88.7268 24.0038 88.235 24.3952C87.7467 24.79 87.3942 25.3242 87.2285 25.927L79.5445 49.4443H48.4562L40.7722 25.927C40.6065 25.3242 40.254 24.7901 39.7657 24.3952C39.2738 24.0038 38.671 23.7747 38.0434 23.7412C37.4124 23.7077 36.7901 23.8681 36.2595 24.2083C35.7271 24.5468 35.3182 25.0368 35.0908 25.6185L23.7103 55.3126L23.5957 55.6105C20.2235 64.4067 23.0968 74.3506 30.6063 80.0302C30.6203 80.0391 30.6327 80.0496 30.6468 80.0602L30.7473 80.136L48.0824 93.1136L56.6566 99.6041L61.8745 103.549C63.1313 104.501 64.8694 104.501 66.1263 103.549L71.3441 99.6041L79.9165 93.1136L97.3539 80.0602C97.3698 80.0479 97.3839 80.0373 97.3997 80.0249C104.904 74.3453 107.775 64.405 104.405 55.6105Z" fill="#E24329"/> <path d="M104.405 55.6105L104.29 55.3108C98.6442 56.4707 93.444 58.8593 88.9913 62.1909C88.919 62.2438 75.4602 72.4221 64.0003 81.0861C72.5093 87.5203 79.9165 93.1136 79.9165 93.1136L97.3539 80.0602C97.3697 80.0479 97.3839 80.0373 97.3997 80.0249C104.904 74.3453 107.775 64.405 104.405 55.6105Z" fill="#FC6D26"/> <path d="M48.0824 93.1136L56.6566 99.6041L61.8744 103.549C63.1313 104.501 64.8694 104.501 66.1262 103.549L71.344 99.6041L79.9165 93.1136C79.9165 93.1136 72.5093 87.5203 64.0003 81.0861C55.4896 87.5203 48.0824 93.1136 48.0824 93.1136Z" fill="#FCA326"/> <path d="M39.0076 62.1909C34.5566 58.861 29.3582 56.4707 23.7103 55.3126L23.5957 55.6105C20.2235 64.4067 23.0968 74.3506 30.6062 80.0302C30.6203 80.039 30.6327 80.0496 30.6468 80.0602L30.7473 80.136L48.0824 93.1136C48.0824 93.1136 55.4896 87.5203 64.0003 81.0861C52.5405 72.4221 39.0799 62.2438 39.0076 62.1909Z" fill="#FC6D26"/> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolunmi.Bazaar.gnome.svg������������������������������0000664�0000000�0000000�00000002411�15240005042�0025627�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_7_44)"> <path d="M100 11.9999H28C19.1634 11.9999 12 19.1633 12 27.9999V100C12 108.837 19.1634 116 28 116H100C108.837 116 116 108.837 116 100V27.9999C116 19.1633 108.837 11.9999 100 11.9999Z" fill="white"/> <path d="M89.2362 24C72.5903 24 69.4677 47.7044 78.832 47.7044C88.1949 47.7044 105.883 24 89.2362 24Z" fill="black"/> <path d="M61.596 44.7671C66.582 45.0715 72.0524 25.7433 62.6813 26.9589C53.3137 28.1745 56.6081 44.4627 61.596 44.7671Z" fill="black"/> <path d="M38.7456 56.7773C42.2917 55.2166 39.2023 39.952 33.1724 44.115C27.1451 48.2787 35.1995 58.3372 38.7456 56.7773Z" fill="black"/> <path d="M48.7371 48.7874C52.9585 47.9269 53.1899 30.6146 45.6619 33.7203C38.1326 36.8267 44.5191 49.6493 48.7371 48.7874Z" fill="black"/> <path d="M70.7803 87.5298C71.5293 93.2488 66.584 96.0731 61.7408 92.3863C46.3229 80.6501 87.2686 74.7952 84.5696 58.7614C82.3293 45.4524 41.4858 49.5498 36.8348 70.3744C33.6866 84.4593 49.7939 104 66.6009 104C74.8691 104 84.4059 96.5358 86.1901 87.08C87.5528 79.8694 70.1551 82.7587 70.7803 87.5298Z" fill="black"/> </g> <defs> <clipPath id="clip0_7_44"> <rect width="128" height="128" fill="white"/> </clipPath> </defs> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolunmi.Bazaar.google.svg�����������������������������0000664�0000000�0000000�00000002635�15240005042�0026006�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M100 11.9999H28C19.1634 11.9999 12 19.1633 12 27.9999V100C12 108.837 19.1634 116 28 116H100C108.837 116 116 108.837 116 100V27.9999C116 19.1633 108.837 11.9999 100 11.9999Z" fill="#F6F5F4"/> <path d="M99.27 63.0001C99.27 60.6708 99.0555 58.3956 98.6592 56.1895H95.8647H84.9634H64.7297V69.8107H85.2637C83.9315 74.5258 81.1298 78.5581 77.3832 81.3422C77.173 87.8944 81.871 89.5383 87.9784 89.7728C94.9621 83.1837 99.27 73.6322 99.27 63.0001Z" fill="#3284FF"/> <path d="M65.1725 41.5948C70.3349 41.5948 74.9849 43.4636 78.5869 46.5754L88.3927 36.6297C82.2696 30.6574 74.0031 27.0001 64.7298 27.0001C50.909 27.0001 38.5855 35.118 32.5874 46.9334C33.3871 55.7758 39.2853 55.441 44.6252 56.1111C47.7027 47.6497 55.8816 41.5948 65.1725 41.5948Z" fill="#FF3424"/> <path d="M32.8126 79.5016C43.4993 80.4337 45.7054 76.3772 44.4204 70.2672C43.7137 68.1311 43.3246 65.8541 43.3246 63.4868C43.3246 60.8983 43.7871 58.416 44.6252 56.1111L32.5874 46.9335C30.1319 51.7707 28.7299 57.2237 28.7299 63.0001C28.7299 68.9499 30.2178 74.5569 32.8126 79.5016Z" fill="#FFBB00"/> <path d="M44.4205 70.267L32.8127 79.5014C38.8903 91.0804 51.0793 99.0001 64.7299 99.0001C73.7944 99.0001 81.8993 95.5081 87.9784 89.7729L77.3832 81.342C73.9727 83.8761 69.782 85.3783 65.1726 85.3783C55.6651 85.3783 47.3241 79.0389 44.4205 70.267Z" fill="#26B14C"/> </svg> ���������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/io.github.kolunmi.Bazaar.kde.svg��������������������������������0000664�0000000�0000000�00000003417�15240005042�0025274�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M100 11.9999H28C19.1634 11.9999 12 19.1633 12 27.9999V100C12 108.837 19.1634 116 28 116H100C108.837 116 116 108.837 116 100V27.9999C116 19.1633 108.837 11.9999 100 11.9999Z" fill="#1D99F3"/> <path d="M70.1316 24L57.1219 25.2454V78.8155L69.994 76.8776V54.0378L87.2966 79.3702L100.861 75.0781L83.1437 50.7158L101 27.7374L87.159 24.5552L69.9943 47.5326L70.1316 24ZM40.6417 37.0542C40.4948 37.0696 40.3529 37.1344 40.2426 37.2451L35.1366 42.3502C34.9219 42.5655 34.8814 42.8994 35.0397 43.1601L41.0178 53.006C39.9575 54.7885 39.1077 56.7105 38.5003 58.7379L27.5254 61.0207C27.22 61.084 27 61.3545 27 61.6679V68.8879C27 69.1932 27.2089 69.4577 27.5031 69.5288L38.1555 72.1325C38.7235 74.4807 39.6038 76.7067 40.7672 78.7526L34.6013 88.1549C34.4293 88.4177 34.4653 88.7638 34.6875 88.9851L39.7917 94.0903C40.0064 94.3044 40.3416 94.3463 40.6034 94.189L50.2654 88.321C52.1633 89.4161 54.21 90.278 56.3732 90.8625L58.6276 101.701C58.691 102.009 58.9625 102.227 59.2738 102.227H66.4947C66.7983 102.227 67.0632 102.019 67.1356 101.722L69.7909 90.8605C72.0208 90.2587 74.1298 89.3617 76.0741 88.2168L85.5955 94.4598C85.8573 94.6322 86.2036 94.5977 86.4258 94.3756L91.5319 89.2705C91.7478 89.0545 91.7865 88.7207 91.6278 88.4607L88.1519 82.7323L87.0274 83.0879C86.8635 83.1397 86.6847 83.0785 86.5883 82.9358C86.5883 82.9358 84.3712 79.6904 81.5079 75.4996C78.085 82.1986 71.1211 86.7876 63.0793 86.7876C51.6537 86.7876 42.3908 77.5244 42.3908 66.0983C42.3908 57.6929 47.4043 50.4641 54.6013 47.2259V41.8885C53.2915 42.3468 52.0252 42.8993 50.8225 43.5545C50.8225 43.5545 50.8207 43.5514 50.8173 43.5484L41.0718 37.1566C40.9405 37.0708 40.7884 37.0366 40.6415 37.0517L40.6417 37.0542Z" fill="#FCFCFC"/> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/�������������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0021006�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/�����������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0022446�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/app-installed-symbolic.svg���������������������0000664�0000000�0000000�00000001435�15240005042�0027546�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="M7.883 0a8.04 8.04 0 0 0-.963.074 7.988 7.988 0 0 0-4.604 2.291 8.014 8.014 0 0 0-1.228 9.666 8.008 8.008 0 0 0 9.016 3.686 8.004 8.004 0 0 0 5.892-7.752 1 1 0 1 0-1.998.01 5.987 5.987 0 0 1-4.42 5.812 5.995 5.995 0 0 1-6.764-2.766 5.993 5.993 0 0 1 .922-7.248 5.991 5.991 0 0 1 7.239-.984 1 1 0 1 0 .992-1.736A7.96 7.96 0 0 0 7.883 0m7.209 2.002a1 1 0 0 0-.844.338L7.951 9.535 5.707 7.291a1 1 0 0 0-1.414 0 1 1 0 0 0 0 1.416l3 3a1 1 0 0 0 1.46-.049l7-8a1 1 0 0 0-.093-1.412 1 1 0 0 0-.568-.244" style="color:#000;fill:#222;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:26.4;-inkscape-stroke:none"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/app-safety-ok-symbolic.svg���������������������0000664�0000000�0000000�00000001255�15240005042�0027471�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="M4 0C2.355 0 1 1.355 1 3v4c0 1.833.88 3.574 2.125 4.984s2.876 2.517 4.615 2.983a1 1 0 0 0 .52 0c1.74-.466 3.37-1.572 4.615-2.983S15 8.834 15 7V3c0-1.645-1.355-3-3-3zm0 2h8c.191 0 .365.051.514.137a1 1 0 0 0-.301.246L7.477 8.41l-1.71-2.05a1 1 0 0 0-1.408-.128 1 1 0 0 0-.127 1.409l2.5 3a1 1 0 0 0 1.555-.024L13 4.62V7c0 1.167-.62 2.524-1.625 3.662-.937 1.061-2.188 1.868-3.375 2.252-1.187-.384-2.438-1.19-3.375-2.252C3.62 9.524 3 8.167 3 7V3c0-.571.429-1 1-1" color="#000" style="-inkscape-stroke:none"/> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/app-safety-unknown-symbolic.svg����������������0000664�0000000�0000000�00000002562�15240005042�0030561�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="m8 0c-1.1458 0-2.292 0.43452-3.1621 1.3047l-3.5352 3.5352c-1.7364 1.7364-1.7364 4.582 0 6.3223l3.5352 3.5352c1.7403 1.7403 4.5839 1.7364 6.3203 0l3.5391-3.5352c1.7364-1.7403 1.7364-4.582 0-6.3223l-3.5391-3.5352c-0.86821-0.87015-2.0124-1.3047-3.1582-1.3047zm0 1.9668c0.63177 4.849e-4 1.2636 0.248 1.7559 0.74219l3.5391 3.5332c0.98449 0.9845 0.98449 2.5272 0 3.5117l-3.5391 3.5391c-0.98448 0.98449-2.5272 0.98449-3.5117 0l-3.5391-3.5352c-0.98448-0.9845-0.98448-2.5311 0-3.5156l3.5391-3.5371c0.49224-0.49225 1.1241-0.73877 1.7559-0.73828zm-0.011719 1.0156c-0.38404 1.606e-4 -0.77102 0.072757-1.1367 0.22656-1.1172 0.46094-1.8516 1.5586-1.8516 2.7695h2c0-0.40625 0.24219-0.76953 0.61719-0.92188 0.375-0.15625 0.80082-0.074215 1.0898 0.21484 0.28906 0.28906 0.37109 0.71488 0.21875 1.0898-0.15625 0.375-0.51953 0.61719-0.92578 0.61719-0.55078 0-1 0.44922-1 1v2h2v-1.1797c0.78516-0.28125 1.4414-0.87498 1.7734-1.6719 0.46094-1.1172 0.20312-2.4141-0.65234-3.2695-0.53516-0.53516-1.2422-0.83594-1.9688-0.87109-0.054688-0.00293-0.1092-0.0039262-0.16406-0.0039062zm0.011719 7.9961c-0.55078 0-1 0.44922-1 1 0 0.55078 0.44922 1 1 1s1-0.44922 1-1c0-0.55078-0.44922-1-1-1z"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/app-safety-unsafe-symbolic.svg�����������������0000664�0000000�0000000�00000001561�15240005042�0030341�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="m8 0c-1.1458 0-2.292 0.43649-3.1621 1.3066l-3.5352 3.5352c-1.7364 1.7364-1.7364 4.58 0 6.3203l3.5352 3.5352c1.7403 1.7403 4.5839 1.7364 6.3203 0l3.5391-3.5352c1.7364-1.7403 1.7364-4.58 0-6.3203l-3.5391-3.5352c-0.8682-0.87016-2.0124-1.3066-3.1582-1.3066zm0 1.9668c0.63178 4.862e-4 1.2636 0.248 1.7559 0.74219l3.5391 3.5352c0.98449 0.9845 0.98449 2.5272 0 3.5117l-3.5391 3.5391c-0.98449 0.98449-2.5272 0.98449-3.5117 0l-3.5391-3.5352c-0.98449-0.9845-0.98449-2.5311 0-3.5156l3.5391-3.5391c0.49224-0.49224 1.1241-0.73877 1.7559-0.73828zm-1 2.0137v5h2v-5h-2zm1 6c-0.55078 0-1 0.44922-1 1 0 0.55078 0.44922 1 1 1s1-0.44922 1-1c0-0.55078-0.44922-1-1-1z"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/auditable-code-symbolic.svg��������������������0000664�0000000�0000000�00000002422�15240005042�0027650�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="m4.9844 0.0010525c-1.6447 0-3 1.3553-3 3v9c0 1.6447 1.3553 3 3 3h3.7188a4.5 4.5 0 0 1-1.418-2h-2.3008c-0.57129 0-1-0.4287-1-1v-9c0-0.5713 0.42871-1 1-1h4v1.5c0 1 0.5 1.5 1.5 1.5h1.5v2.0234a4.5 4.5 0 0 1 2 0.71289v-3.2363a1.0001 1.0001 0 0 0-0.29297-0.70703l-3.5-3.5a1.0001 1.0001 0 0 0-0.70703-0.29297zm0.03125 2.998v1h3v-1zm0 2v1h3v-1zm0 2v1h3.6855a4.5 4.5 0 0 1 2.3145-0.96484v-0.0352zm6.5 1c-1.9211 0-3.5 1.5788-3.5 3.5 0 1.9212 1.5789 3.5 3.5 3.5 0.59974 0 1.1648-0.15566 1.6602-0.42578h2e-3l1.1309 1.1328c0.39051 0.39042 1.0236 0.39042 1.4141 0 0.39042-0.39051 0.39042-1.0236 0-1.4141l-1.1328-1.1309v-2e-3c0.27012-0.49541 0.42578-1.0604 0.42578-1.6602 0-1.9212-1.5789-3.5-3.5-3.5zm-6.5 1v1h2.2676a4.5 4.5 0 0 1 0.49609-1zm6.5 1c0.84027 0 1.5 0.65973 1.5 1.5 0 0.40549-0.15478 0.7676-0.4082 1.0352-0.0106 8e-3 -0.02105 0.0167-0.03125 0.0254-9e-3 0.0102-0.01709 0.0206-0.02539 0.0312-0.2676 0.25342-0.62967 0.4082-1.0352 0.4082-0.84027 0-1.5-0.65973-1.5-1.5s0.65973-1.5 1.5-1.5zm-6.5 1v1h2.0352a4.5 4.5 0 0 1-0.03516-0.5 4.5 4.5 0 0 1 0.03516-0.5z" fill="#222"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/bookmark-filled-symbolic.svg�������������������0000664�0000000�0000000�00000000747�15240005042�0030060�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5.019531 0 c -1.332031 0 -2.273437 0.816406 -2.644531 1.554688 c -0.371094 0.738281 -0.355469 1.445312 -0.355469 1.445312 l 0.03125 12.472656 l 5.996094 -2.402344 l 6.003906 2.402344 l -0.03125 -12.476562 c 0 -0.003906 0.011719 -0.707032 -0.355469 -1.441406 c -0.371093 -0.738282 -1.3125 -1.554688 -2.644531 -1.554688 z m 0 0" fill="#222222"/></svg> �������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/bookmark-outline-symbolic.svg������������������0000664�0000000�0000000�00000001247�15240005042�0030274�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5.019531 0 c -1.332031 0 -2.273437 0.816406 -2.644531 1.554688 c -0.371094 0.738281 -0.355469 1.445312 -0.355469 1.445312 l 0.03125 12.472656 l 5.996094 -2.402344 l 6.003906 2.402344 l -0.03125 -12.476562 c 0 -0.003906 0.011719 -0.707032 -0.355469 -1.441406 c -0.371093 -0.738282 -1.3125 -1.554688 -2.644531 -1.554688 z m 0 2 h 6 c 0.695313 0.011719 1.003907 0.367188 1 1 l 0.023438 9.519531 l -3.996094 -1.601562 l -4.003906 1.601562 l -0.023438 -9.523437 c -0.007812 -0.648438 0.398438 -0.996094 1 -0.996094 z m 0 0" fill="#222222"/></svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/bug-symbolic.svg�������������������������������0000664�0000000�0000000�00000003514�15240005042�0025566�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5 0 c -0.550781 0 -1 0.449219 -1 1 c 0 0.691406 0.386719 1.285156 0.800781 1.605469 c -0.503906 0.671875 -0.800781 1.5 -0.800781 2.394531 h -1 v -1 h -2 v 1 c 0 0.832031 0.5625 1.523438 1.050781 1.769531 c 0.492188 0.246094 0.949219 0.230469 0.949219 0.230469 h 1 v 1 h -3 v 2 h 3 v 1 h -1 s -0.457031 -0.015625 -0.949219 0.230469 c -0.488281 0.246093 -1.050781 0.9375 -1.050781 1.769531 v 3 h 2 v -3 h 1.128906 c 0.449219 1.71875 2.015625 3 3.871094 3 c 1.851562 0 3.421875 -1.28125 3.871094 -3 h 1.128906 v 3 h 2 v -3 c 0 -0.832031 -0.5625 -1.523438 -1.054688 -1.769531 c -0.488281 -0.246094 -0.945312 -0.230469 -0.945312 -0.230469 h -1 v -1 h 3 v -2 h -3 v -1 h 1 s 0.457031 0.015625 0.945312 -0.230469 c 0.492188 -0.246093 1.054688 -0.9375 1.054688 -1.769531 v -1 h -2 v 1 h -1 c 0 -0.894531 -0.296875 -1.722656 -0.800781 -2.394531 c 0.410156 -0.320313 0.800781 -0.914063 0.800781 -1.605469 c 0 -0.550781 -0.449219 -1 -1 -1 s -1 0.449219 -1 1 c -0.238281 0 -0.464844 0.085938 -0.648438 0.238281 c -0.421874 -0.152343 -0.878906 -0.238281 -1.351562 -0.238281 c -0.476562 0 -0.929688 0.085938 -1.355469 0.238281 c -0.179687 -0.152343 -0.40625 -0.238281 -0.644531 -0.238281 c 0 -0.550781 -0.449219 -1 -1 -1 z m 2.96875 5.03125 h 0.0625 c 0.535156 0 0.96875 0.433594 0.96875 0.96875 v 3.0625 c 0 0.535156 -0.433594 0.96875 -0.96875 0.96875 h -0.0625 c -0.539062 0 -0.96875 -0.433594 -0.96875 -0.96875 v -3.0625 c 0 -0.535156 0.429688 -0.96875 0.96875 -0.96875 z m 0 6 h 0.0625 c 0.535156 0 0.96875 0.433594 0.96875 0.96875 v 0.0625 c 0 0.535156 -0.433594 0.96875 -0.96875 0.96875 h -0.0625 c -0.539062 0 -0.96875 -0.433594 -0.96875 -0.96875 v -0.0625 c 0 -0.535156 0.429688 -0.96875 0.96875 -0.96875 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/check-plain-symbolic.svg�����������������������0000664�0000000�0000000�00000001336�15240005042�0027167�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 13.753906 4.65625 c 0.175782 -0.199219 0.261719 -0.460938 0.246094 -0.722656 c -0.019531 -0.265625 -0.140625 -0.511719 -0.339844 -0.6875 c -0.199218 -0.175782 -0.460937 -0.265625 -0.726562 -0.246094 c -0.265625 0.015625 -0.511719 0.140625 -0.6875 0.339844 l -6.296875 7.195312 l -2.242188 -2.246094 c -0.390625 -0.390624 -1.023437 -0.390624 -1.414062 0 c -0.1875 0.1875 -0.292969 0.445313 -0.292969 0.710938 s 0.105469 0.519531 0.292969 0.707031 l 3 3 c 0.195312 0.195313 0.464843 0.300781 0.742187 0.292969 c 0.273438 -0.011719 0.535156 -0.132812 0.71875 -0.34375 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/circle-filled-symbolic.svg���������������������0000664�0000000�0000000�00000000405�15240005042�0027503�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 1 c -3.855469 0 -7 3.144531 -7 7 s 3.144531 7 7 7 s 7 -3.144531 7 -7 s -3.144531 -7 -7 -7 z m 0 0" fill="#222222"/></svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/code-symbolic.svg������������������������������0000664�0000000�0000000�00000001406�15240005042�0025721�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 10 4 v 1 c 0 0.257812 0.128906 0.527344 0.3125 0.71875 l 2.25 2.28125 l -2.25 2.28125 c -0.183594 0.191406 -0.3125 0.460938 -0.3125 0.71875 v 1 h 1 c 0.308594 0 0.550781 -0.089844 0.75 -0.28125 l 3.65625 -3.71875 l -3.65625 -3.71875 c -0.199219 -0.191406 -0.441406 -0.28125 -0.75 -0.28125 z m 0 0"/><path d="m 6 4 v 1 c 0 0.257812 -0.128906 0.527344 -0.3125 0.71875 l -2.25 2.28125 l 2.25 2.28125 c 0.183594 0.191406 0.3125 0.460938 0.3125 0.71875 v 1 h -1 c -0.308594 0 -0.550781 -0.089844 -0.75 -0.28125 l -3.65625 -3.71875 l 3.65625 -3.71875 c 0.199219 -0.191406 0.441406 -0.28125 0.75 -0.28125 z m 0 0"/></g></svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/community-symbolic.svg�������������������������0000664�0000000�0000000�00000002625�15240005042�0027037�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16px" height="16px" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> <path d="m10.086 0c0.54687 0.019531 1.0859 0.18359 1.5586 0.49219 0.94922 0.61719 1.4648 1.7266 1.3359 2.8477-0.13281 1.1211-0.89453 2.0781-1.957 2.4609-0.51953 0.1875-1.0898-0.078125-1.2773-0.59766-0.19141-0.51953 0.07813-1.0938 0.59766-1.2812 0.35938-0.12891 0.60547-0.44531 0.64844-0.81641 0.04297-0.37109-0.125-0.73438-0.44141-0.94141s-0.72266-0.21875-1.0508-0.03125c-0.48047 0.27734-1.0938 0.11328-1.3672-0.36719-0.27344-0.48047-0.10937-1.0898 0.36719-1.3672 0.49219-0.28125 1.0391-0.41406 1.5859-0.39844zm-5.0859 2c1.6406 0 3 1.3516 3 2.9922s-1.3594 2.9883-3 2.9883-3-1.3477-3-2.9883 1.3594-2.9922 3-2.9922zm0 2c-0.56641 0-1 0.4375-1 0.99219s0.43359 0.98828 1 0.98828 1-0.43359 1-0.98828-0.43359-0.99219-1-0.99219zm6.1992 3c2.0859 0 3.8008 1.707 3.8008 3.7891v1.2109c0 0.55078-0.44922 1-1 1s-1-0.44922-1-1v-1.2109c0-0.99609-0.79297-1.7891-1.8008-1.7891h-1.1992c-0.55078 0-1-0.44922-1-1s0.44922-1 1-1zm-5 2c2.0859 0 3.8008 1.707 3.8008 3.7891v1.2109c0 0.55078-0.44922 1-1 1s-1-0.44922-1-1v-1.2109c0-0.99609-0.79297-1.7891-1.8008-1.7891h-2.3984c-1.0117 0-1.8008 0.79297-1.8008 1.7891v1.2109c0 0.55078-0.44922 1-1 1s-1-0.44922-1-1v-1.2109c0-2.082 1.7148-3.7891 3.8008-3.7891z"/> </svg> �����������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/connected-squares-x-symbolic.svg���������������0000664�0000000�0000000�00000002254�15240005042�0030701�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#2e3436"><path d="m 15 10 c 0.265625 0 0.519531 0.105469 0.707031 0.292969 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 l -1.292969 1.292969 l 1.292969 1.292969 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 s -1.023437 0.390625 -1.414062 0 l -1.292969 -1.292969 l -1.292969 1.292969 c -0.390625 0.390625 -1.023437 0.390625 -1.414062 0 s -0.390625 -1.023437 0 -1.414062 l 1.292969 -1.292969 l -1.292969 -1.292969 c -0.390625 -0.390625 -0.390625 -1.023437 0 -1.414062 c 0.1875 -0.1875 0.441406 -0.292969 0.707031 -0.292969 s 0.519531 0.105469 0.707031 0.292969 l 1.292969 1.292969 l 1.292969 -1.292969 c 0.1875 -0.1875 0.441406 -0.292969 0.707031 -0.292969 z m 0 0"/><path d="m 6 0 c -0.554688 0 -1 0.445312 -1 1 v 3 c 0 0.554688 0.445312 1 1 1 h 1 v 2 h -7 v 2 h 2 v 2 h -1 c -0.554688 0 -1 0.445312 -1 1 v 3 c 0 0.554688 0.445312 1 1 1 h 4 c 0.554688 0 1 -0.445312 1 -1 v -3 c 0 -0.554688 -0.445312 -1 -1 -1 h -1 v -2 h 12 v -2 h -7 v -2 h 1 c 0.554688 0 1 -0.445312 1 -1 v -3 c 0 -0.554688 -0.445312 -1 -1 -1 z m 0 0" fill-opacity="0.34902"/></g></svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/copy-symbolic.svg������������������������������0000664�0000000�0000000�00000001367�15240005042�0025767�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 0 3 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 v 5 c 0 0.570312 0.429688 1 1 1 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 c -1.644531 0 -3 -1.355469 -3 -3 z m 5 5 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 v 5 c 0 1.644531 -1.355469 3 -3 3 h -5 c -1.644531 0 -3 -1.355469 -3 -3 z m 2 0 v 5 c 0 0.570312 0.429688 1 1 1 h 5 c 0.570312 0 1 -0.429688 1 -1 v -5 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 z m 0 0" fill="#222222"/></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/cross-large-circle-filled-symbolic.svg���������0000664�0000000�0000000�00000001620�15240005042�0031722�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 0.03125 c -4.421875 0 -8 3.578125 -8 8 s 3.578125 8 8 8 s 8 -3.578125 8 -8 s -3.578125 -8 -8 -8 z m -3 4 c 0.265625 0 0.519531 0.105469 0.707031 0.292969 l 2.292969 2.292969 l 2.292969 -2.292969 c 0.1875 -0.1875 0.441406 -0.292969 0.707031 -0.292969 s 0.519531 0.105469 0.707031 0.292969 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 l -2.292969 2.292969 l 2.292969 2.292969 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 s -1.023437 0.390625 -1.414062 0 l -2.292969 -2.292969 l -2.292969 2.292969 c -0.390625 0.390625 -1.023437 0.390625 -1.414062 0 s -0.390625 -1.023437 0 -1.414062 l 2.292969 -2.292969 l -2.292969 -2.292969 c -0.390625 -0.390625 -0.390625 -1.023437 0 -1.414062 c 0.1875 -0.1875 0.441406 -0.292969 0.707031 -0.292969 z m 0 0" fill="#222222"/></svg> ����������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/delay-symbolic.svg�����������������������������0000664�0000000�0000000�00000002160�15240005042�0026103�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 8.023438 4.996094 c -0.554688 0 -1 0.449218 -1 1 v 3 c 0 0.554687 0.445312 1 1 1 h 2 c 0.550781 0 1 -0.445313 1 -1 c 0 -0.550782 -0.449219 -1 -1 -1 h -1 v -2 c 0 -0.550782 -0.449219 -1 -1 -1 z m 0 0"/><path d="m 8.019531 -0.00390625 c -4.140625 0 -7.609375 3.17968725 -7.9687498 7.30078125 c -0.3593752 4.125 2.5039068 7.859375 6.5781248 8.578125 c 4.078125 0.71875 8.046875 -1.808594 9.117188 -5.808594 l -1.933594 -0.519531 c -0.804688 3.015625 -3.761719 4.898437 -6.835938 4.355469 c -3.070312 -0.539063 -5.207031 -3.320313 -4.933593 -6.429688 c 0.273437 -3.109375 2.855469 -5.476562 5.976562 -5.476562 z m 0 0"/><path d="m 10.089844 0.269531 l -0.519532 1.933594 c 1.019532 0.269531 1.945313 0.804687 2.691407 1.550781 l 1.414062 -1.414062 c -0.992187 -0.992188 -2.230469 -1.707032 -3.585937 -2.070313 z m 0 0"/><path d="m 14.945312 3.996094 l -1.730468 1 c 0.527344 0.914062 0.804687 1.945312 0.804687 3 h 2 c 0 -1.402344 -0.371093 -2.785156 -1.074219 -4 z m 0 0"/></g></svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/device-support-adaptive-symbolic.svg�����������0000664�0000000�0000000�00000001540�15240005042�0031552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64"> <path d="M44.004 25c-1.662 0-3 1.338-3 3v6c0 1.662 1.338 3 3 3h12c1.662 0 3-1.338 3-3v-6c0-1.662-1.338-3-3-3zm-36.5.002a2.517 2.517 0 0 0-2.5 2.5v10c0 1.368 1.132 2.5 2.5 2.5h5c1.368 0 2.5-1.132 2.5-2.5v-10c0-1.368-1.132-2.5-2.5-2.5zm15 1a2.517 2.517 0 0 0-2.5 2.5V37h2v-8.5c0-.294.206-.5.5-.5h11.004c.295 0 .5.206.5.5V37h2v-8.498c0-1.367-1.132-2.5-2.5-2.5zm21.5.998h12c.554 0 1 .446 1 1v6c0 .554-.446 1-1 1h-12c-.554 0-1-.446-1-1v-6c0-.554.446-1 1-1m-36.5.002h.5c0 .554.446 1 1 1h2c.554 0 1-.446 1-1h.5c.294 0 .5.206.5.5v10c0 .294-.206.5-.5.5h-5a.478.478 0 0 1-.5-.5v-10c0-.294.206-.5.5-.5M18.004 38a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2zm29 0a2 2 0 0 0-2 2h10a2 2 0 0 0-2-2z" style="fill:#222"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/device-support-desktop-symbolic.svg������������0000664�0000000�0000000�00000001037�15240005042�0031427�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 3 0 c -1.660156 0 -3 1.339844 -3 3 v 7 c 0 1.660156 1.339844 3 3 3 h 10 c 1.660156 0 3 -1.339844 3 -3 v -7 c 0 -1.660156 -1.339844 -3 -3 -3 z m 0 2 h 10 c 0.554688 0 1 0.445312 1 1 v 7 c 0 0.554688 -0.445312 1 -1 1 h -10 c -0.554688 0 -1 -0.445312 -1 -1 v -7 c 0 -0.554688 0.445312 -1 1 -1 z m 2 12 c -1.105469 0 -2 0.894531 -2 2 h 10 c 0 -1.105469 -0.894531 -2 -2 -2 z m 0 0" fill="#2e3436"/> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/device-support-touch-symbolic.svg��������������0000664�0000000�0000000�00000002120�15240005042�0031072�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M6.957 3.016a1 1 0 0 0-.293.056 1 1 0 0 0-.182.086 1 1 0 0 0-.082.057 1 1 0 0 0-.21.213 1 1 0 0 0-.165.36 1 1 0 0 0-.017.099A1 1 0 0 0 6 4v8.383l-2.553-1.278A1 1 0 0 0 2.4 12.801l3.979 2.982.021.018a1 1 0 0 0 .03.02 1 1 0 0 0 .047.03 1 1 0 0 0 .035.02 1 1 0 0 0 .045.023 1 1 0 0 0 .054.026 1 1 0 0 0 .037.015 1 1 0 0 0 .063.022 1 1 0 0 0 .03.008 1 1 0 0 0 .05.012 1 1 0 0 0 .059.011 1 1 0 0 0 .025.004 1 1 0 0 0 .082.006A1 1 0 0 0 7 16h5s.459.014.947-.23C13.436 15.525 14 14.833 14 14v-4a1 1 0 0 0-.758-.97l-4-1A1 1 0 0 0 9 8H8V4a1 1 0 0 0-.049-.295 1 1 0 0 0-.135-.267 1 1 0 0 0-.06-.079 1 1 0 0 0-.227-.195 1 1 0 0 0-.088-.047 1 1 0 0 0-.091-.04 1 1 0 0 0-.096-.03 1 1 0 0 0-.098-.022 1 1 0 0 0-.199-.01z"/> <path fill="#222" fill-opacity=".5" d="M7 0C4.802 0 3 1.803 3 4c0 1.467.812 2.743 2 3.44V4c0-1.09.909-2 2-2s2 .91 2 2v3a1 1 0 0 1 .242.03l.256.064C10.405 6.358 11 5.25 11 4c0-2.197-1.803-4-4-4"/> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/device-supported-symbolic.svg������������������0000664�0000000�0000000�00000001550�15240005042�0030271�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16px" height="16px" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> <path d="m8 0c-4.41 0-8 3.59-8 8 0 4.41 3.59 8 8 8 4.41 0 8-3.59 8-8 0-4.41-3.59-8-8-8zm0 2c3.332 0 6 2.668 6 6 0 3.332-2.668 6-6 6-3.332 0-6-2.668-6-6 0-3.332 2.668-6 6-6zm3.498 2.502c-0.032982 1.525e-4 -0.066407 0.0024415-0.099609 0.0058594v-0.0039063c-0.26172 0.027344-0.50391 0.16016-0.67188 0.36328l-3.8008 4.6445-1.7188-1.7188c-0.39062-0.39062-1.0234-0.39062-1.4141 0-0.39062 0.39062-0.39062 1.0234 0 1.4141l2.5 2.5c0.19922 0.19922 0.47656 0.30469 0.75781 0.29297 0.28125-0.015625 0.54297-0.14844 0.72266-0.36719l4.5-5.5c0.34766-0.42578 0.28516-1.0547-0.14063-1.4062-0.18115-0.14697-0.40389-0.22568-0.63476-0.22461z"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/download-plus-symbolic.svg���������������������0000664�0000000�0000000�00000003440�15240005042�0027577�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg height="16px" viewBox="0 0 16 16" width="16px" version="1.1" id="svg1" sodipodi:docname="folder-download-symbolic.svg" inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <defs id="defs1" /> <sodipodi:namedview id="namedview1" pagecolor="#ffffff" bordercolor="#000000" borderopacity="0.25" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:zoom="35.57631" inkscape:cx="5.7200986" inkscape:cy="8.0109489" inkscape:window-width="1920" inkscape:window-height="1043" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="svg1" /> <path d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 8.585938 l -2.292969 -2.292969 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 s -0.519531 0.105469 -0.707031 0.292969 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 l 4 4 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 l 4 -4 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 l -2.292969 2.292969 v -8.585938 c 0 -0.550781 -0.449219 -1 -1 -1 z m -6 14 v 2 h 12 v -2 z m 0 0" fill="#2e3436" id="path1" /> <path d="m 13.668638,0 v 1.8343254 h 1.83432 V 3.668635 h -1.83432 v 1.834324 h -1.83432 V 3.668635 H 10 V 1.8343254 h 1.834318 V 0 Z" id="path3" style="fill:#2e3436;fill-opacity:1;stroke-width:0.917162" sodipodi:nodetypes="ccccccccccccc" /> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/drive-harddisk-symbolic.svg��������������������0000664�0000000�0000000�00000001214�15240005042�0027704�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 4 0 c -1.644531 0 -3 1.355469 -3 3 v 10 c 0 1.644531 1.355469 3 3 3 h 8 c 1.644531 0 3 -1.355469 3 -3 v -10 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 8 c 0.570312 0 1 0.429688 1 1 v 9 c 0 0.570312 -0.429688 1 -1 1 h -8 c -0.554688 0 -1 -0.445312 -1 -1 v -9 c 0 -0.554688 0.445312 -1 1 -1 z m 4 1 c -2.210938 0 -4 1.789062 -4 4 v 4 h 4 c 2.5 0 4 -1.789062 4 -4 s -1.789062 -4 -4 -4 z m 0 2 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#2e3436"/> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/earth-symbolic.svg�����������������������������0000664�0000000�0000000�00000004330�15240005042�0026111�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 7.890625 0 c -4.375 0 -7.890625 3.625 -7.890625 8 c 0 4.417969 3.582031 8 8 8 s 8 -3.582031 8 -8 s -3.582031 -8 -8 -8 c -0.035156 0 -0.070312 0 -0.109375 0 z m -1.964844 2.460938 c 0.234375 0.019531 0.4375 0.171874 0.523438 0.390624 c 0.011719 0.226563 -0.160157 0.421876 -0.386719 0.4375 c -0.226562 0 -0.410156 0.183594 -0.410156 0.410157 v 1.183593 c 0 0.441407 -0.359375 0.800782 -0.800782 0.800782 c -0.4375 0 -0.792968 0.355468 -0.796874 0.796875 c 0 0.4375 -0.355469 0.796875 -0.796876 0.796875 c -0.441406 0 -0.796874 0.355468 -0.796874 0.796875 c 0 0.441406 0.355468 0.796875 0.796874 0.796875 c 0.441407 0 0.800782 0.355468 0.796876 0.800781 v 2.855469 c -1.28125 -1.136719 -2.015626 -2.765625 -2.019532 -4.476563 c 0.003906 -1.492187 0.566406 -2.929687 1.570313 -4.027343 l 0.050781 -0.050782 c 0.234375 -0.25 0.492188 -0.480468 0.765625 -0.683594 l 0.039063 -0.03125 c 0.449218 -0.332031 0.941406 -0.601562 1.464843 -0.796874 z m 4.53125 0.433593 h 0.589844 c 0.484375 0.28125 0.921875 0.628907 1.304687 1.035157 c -0.03125 0.007812 -0.066406 0.011718 -0.105468 0.011718 h -1.789063 c -0.289062 0 -0.523437 -0.234375 -0.523437 -0.523437 c 0 -0.292969 0.234375 -0.523438 0.523437 -0.523438 z m -2.050781 0.871094 c 0.320312 0 0.578125 0.257813 0.578125 0.582031 v 0.632813 c 0 0.320312 -0.257813 0.582031 -0.578125 0.582031 s -0.582031 -0.261719 -0.582031 -0.582031 v -0.632813 c 0 -0.324218 0.261719 -0.582031 0.582031 -0.582031 z m 2.289062 0.671875 h 2.085938 c 0.761719 1 1.1875 2.21875 1.214844 3.476562 c -0.125 0.105469 -0.277344 0.164063 -0.441406 0.167969 l -1.128907 -0.007812 c -0.671875 0 -1.21875 0.546875 -1.21875 1.21875 v 1.347656 c 0.003907 0.441406 -0.355469 0.796875 -0.796875 0.796875 c -0.441406 0.003906 -0.800781 -0.355469 -0.800781 -0.796875 v -0.871094 c 0.09375 -0.3125 -0.085937 -0.636719 -0.394531 -0.730469 c -0.402344 0 -0.730469 -0.324218 -0.730469 -0.726562 v -1.238281 c -0.035156 -0.472657 0.320313 -0.882813 0.789063 -0.917969 c 0.394531 0 0.710937 -0.316406 0.710937 -0.710938 v -0.300781 c 0.003906 -0.390625 0.320313 -0.707031 0.710937 -0.710937 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/edit-clear-all-symbolic.svg��������������������0000664�0000000�0000000�00000002313�15240005042�0027564�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <g fill="#2e3436"> <path d="m 2 0 c -1.109375 0 -2 0.890625 -2 2 v 6 c 0 1.109375 0.890625 2 2 2 v -8 h 8 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0 0"/> <path d="m 8 6 c -1.109375 0 -2 0.890625 -2 2 v 6 c 0 1.109375 0.890625 2 2 2 h 6 c 1.109375 0 2 -0.890625 2 -2 v -6 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0.003906 2 h 1 h 0.03125 c 0.253906 0.011719 0.507813 0.128906 0.6875 0.3125 l 1.28125 1.28125 l 1.308594 -1.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -1.28125 1.28125 l 1.25 1.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -1.28125 -1.28125 l -1.28125 1.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -0.996094 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 1.277344 -1.25 l -1.277344 -1.28125 c -0.210937 -0.195312 -0.304687 -0.46875 -0.28125 -0.75 z m 0 0"/> <path d="m 5 3 c -1.109375 0 -2 0.890625 -2 2 v 6 c 0 1.109375 0.890625 2 2 2 v -8 h 8 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0 0"/> </g> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/execute-to-symbolic.svg������������������������0000664�0000000�0000000�00000000622�15240005042�0027070�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 2 2.996094 v 10 h 1 c 0.175781 0 0.347656 -0.039063 0.5 -0.125 l 7 -4 c 0.308594 -0.171875 0.46875 -0.523438 0.46875 -0.875 c 0 -0.351563 -0.160156 -0.703125 -0.46875 -0.875 l -7 -4 c -0.152344 -0.085938 -0.324219 -0.125 -0.5 -0.125 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/explore-symbolic.svg���������������������������0000664�0000000�0000000�00000002124�15240005042�0026463�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 0 c -4.40625 0 -7.99609375 3.59375 -7.99609375 8 s 3.58984375 8 7.99609375 8 s 7.996094 -3.59375 7.996094 -8 s -3.589844 -8 -7.996094 -8 z m 0 2 c 3.324219 0 5.996094 2.675781 5.996094 6 s -2.671875 6 -5.996094 6 s -5.996094 -2.675781 -5.996094 -6 s 2.671875 -6 5.996094 -6 z m 3.40625 2 c -0.089844 -0.003906 -0.191406 0.015625 -0.289062 0.058594 l -4.507813 2.0625 c -0.21875 0.097656 -0.394531 0.273437 -0.496094 0.492187 l -2.058593 4.511719 c -0.238282 0.519531 0.296874 1.054688 0.816406 0.816406 l 4.511718 -2.058594 c 0.21875 -0.101562 0.394532 -0.277343 0.492188 -0.496093 l 2.0625 -4.507813 c 0.191406 -0.425781 -0.125 -0.859375 -0.53125 -0.878906 z m -3.410156 3 c 0.253906 0 0.511718 0.101562 0.703125 0.292969 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 c -0.386719 0.386719 -1.019531 0.386719 -1.410157 0 c -0.386718 -0.390625 -0.386718 -1.023437 0 -1.414062 c 0.195313 -0.191407 0.453126 -0.292969 0.707032 -0.292969 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/external-link-symbolic.svg���������������������0000664�0000000�0000000�00000002424�15240005042�0027565�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 3 2 c -1.664062 0 -3 1.339844 -3 3 v 8 c 0 1.660156 1.335938 3 3 3 h 8 c 1.660156 0 3 -1.339844 3 -3 v -4 c 0 -0.550781 -0.449219 -1 -1 -1 s -1 0.449219 -1 1 v 4 c 0 0.554688 -0.445312 1 -1 1 h -8 c -0.554688 0 -1 -0.445312 -1 -1 v -8 c 0 -0.554688 0.445312 -1 1 -1 h 4 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 7 -2 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 2.582031 l -5.289062 5.289062 c -0.390625 0.394532 -0.390625 1.027344 0 1.417969 s 1.023437 0.390625 1.414062 0 l 5.292969 -5.292969 v 2.585938 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.085938 -0.011719 -0.171875 -0.035156 -0.257812 c -0.023438 -0.085938 -0.054688 -0.167969 -0.101563 -0.242188 c -0.042969 -0.074219 -0.09375 -0.144531 -0.15625 -0.207031 c -0.015625 -0.011719 -0.03125 -0.023438 -0.046875 -0.035157 c -0.054687 -0.050781 -0.117187 -0.09375 -0.183594 -0.128906 c -0.035156 -0.019531 -0.074218 -0.035156 -0.113281 -0.0468748 c -0.050781 -0.0234374 -0.101562 -0.0390624 -0.15625 -0.0507812 c -0.039062 -0.0117188 -0.082031 -0.015625 -0.121093 -0.0195312 c -0.03125 -0.00781255 -0.058594 -0.00781255 -0.085938 -0.0117188 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/eye-outline-filled-symbolic.svg����������������0000664�0000000�0000000�00000001540�15240005042�0030502�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 0.0625 8.375 c -0.0429688 0.164062 -0.0429688 0.339844 0 0.503906 c 0.941406 3.605469 4.199219 6.117188 7.9375 6.121094 c 3.742188 -0.003906 7.003906 -2.527344 7.9375 -6.140625 c 0.042969 -0.167969 0.042969 -0.339844 0 -0.503906 c -0.933594 -3.574219 -4.175781 -6.351563 -7.9375 -6.355469 c -3.769531 0.003906 -7.015625 2.792969 -7.9375 6.375 z m 13.9375 0.484375 v -0.5 c -0.703125 2.730469 -3.164062 4.636719 -6 4.640625 c -2.832031 -0.003906 -5.292969 -1.902344 -6 -4.625 v 0.5 c 0.707031 -2.742188 3.210938 -4.871094 6 -4.875 c 2.78125 0.003906 5.289062 2.121094 6 4.859375 z m 0 0"/><path d="m 11 8.5 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0"/></g></svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/flathub-symbolic.svg���������������������������0000664�0000000�0000000�00000003716�15240005042�0026442�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> <path fill="#222222" d="M15.2044 12.0127C15.2044 12.3707 14.9162 12.6589 14.5582 12.6589H9.38855C9.03056 12.6589 8.74236 12.3707 8.74236 12.0127C8.74236 11.6547 9.03056 11.3665 9.38855 11.3665H14.5582C14.9162 11.3665 15.2044 11.6547 15.2044 12.0127ZM11.9734 8.78169C12.3314 8.78169 12.6196 9.06989 12.6196 9.42789V14.5975C12.6196 14.9555 12.3314 15.2437 11.9734 15.2437C11.6154 15.2437 11.3272 14.9555 11.3272 14.5975V9.42789C11.3272 9.06989 11.6154 8.78169 11.9734 8.78169ZM15.4682 2.7602L14.7971 2.37273L10.9349 0.142914C10.7732 0.0495562 10.5898 0.000409928 10.4031 0.000409941C10.2163 0.000409954 10.0329 0.0495593 9.87121 0.142917C9.70951 0.236275 9.57523 0.370552 9.48187 0.532252C9.38851 0.693953 9.33937 0.877379 9.33937 1.06409V1.83902V6.29866C9.33937 6.48537 9.38851 6.6688 9.48187 6.8305C9.57523 6.9922 9.70951 7.12647 9.87121 7.21983C10.0329 7.31319 10.2163 7.36234 10.4031 7.36234C10.5898 7.36234 10.7732 7.31319 10.9349 7.21983L11.606 6.83237L15.4682 4.60255C15.6299 4.50919 15.7641 4.37492 15.8575 4.21322C15.9509 4.05152 16 3.86809 16 3.68137C16 3.49466 15.9509 3.31123 15.8575 3.14953C15.7641 2.98783 15.6299 2.85356 15.4682 2.7602ZM2.09684 8.62922H5.21448C6.20143 8.62922 6.99599 9.42378 6.99599 10.4107V13.5284C6.99599 14.5153 6.20143 15.3099 5.21448 15.3099H2.09684C1.10988 15.3099 0.315331 14.5153 0.315331 13.5284V10.4107C0.315331 9.42378 1.10988 8.62922 2.09684 8.62922ZM7.36598 3.68299C7.36598 4.65978 6.97795 5.59656 6.28726 6.28725C5.59656 6.97795 4.65978 7.36598 3.68299 7.36598C2.7062 7.36598 1.76942 6.97795 1.07872 6.28726C0.388027 5.59656 3.88651e-07 4.65978 0 3.68299C-2.13823e-08 3.19933 0.0952622 2.72041 0.28035 2.27357C0.465437 1.82673 0.736725 1.42072 1.07872 1.07872C1.42072 0.736725 1.82673 0.465438 2.27357 0.28035C2.72041 0.0952622 3.19933 -2.13823e-08 3.68299 0C4.65978 1.0364e-06 5.59656 0.388027 6.28726 1.07872C6.97795 1.76942 7.36598 2.7062 7.36598 3.68299Z"/> </svg> ��������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/flatpak-symbolic.svg���������������������������0000664�0000000�0000000�00000001324�15240005042�0026430�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 7.804688 0.0195312 c -0.128907 0.0273438 -0.25 0.0742188 -0.359376 0.1484378 l -6 4 c -0.277343 0.183593 -0.445312 0.496093 -0.445312 0.832031 v 6 c 0 0.335938 0.167969 0.648438 0.445312 0.832031 l 6 4 c 0.335938 0.222657 0.773438 0.222657 1.109376 0 l 6 -4 c 0.277343 -0.183593 0.445312 -0.496093 0.445312 -0.832031 v -6 c 0 -0.335938 -0.167969 -0.648438 -0.445312 -0.832031 l -6 -4 c -0.21875 -0.1484378 -0.492188 -0.199219 -0.75 -0.1484378 z m 0.195312 2.1796878 v 6.800781 l 5 -3.332031 v 4.796875 l -5 3.335937 v -4.800781 l -5 -3.332031 v -0.132813 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/folder-download-symbolic.svg�������������������0000664�0000000�0000000�00000001166�15240005042�0030072�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 8.585938 l -2.292969 -2.292969 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 s -0.519531 0.105469 -0.707031 0.292969 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 l 4 4 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 l 4 -4 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 l -2.292969 2.292969 v -8.585938 c 0 -0.550781 -0.449219 -1 -1 -1 z m -6 14 v 2 h 12 v -2 z m 0 0" fill="#2e3436"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/gamepad-symbolic.svg���������������������������0000664�0000000�0000000�00000002377�15240005042�0026415�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 4 2 c -1.597656 0 -2.644531 0.664062 -3 2 l -0.738281 8.324219 c -0.261719 1.59375 1.738281 2.175781 2.738281 1.175781 l 2.75 -4.5 h 4.5 l 2.75 4.5 c 1 1 3 0.527344 2.738281 -1.175781 l -0.738281 -8.324219 c -0.214844 -1.203125 -1.402344 -2.03125 -2.972656 -2.027344 z m 0.25 2 h 0.5 c 0.136719 0 0.25 0.113281 0.25 0.25 v 0.75 h 0.75 c 0.136719 0 0.25 0.113281 0.25 0.25 v 0.5 c 0 0.136719 -0.113281 0.25 -0.25 0.25 h -0.75 v 0.75 c 0 0.136719 -0.113281 0.25 -0.25 0.25 h -0.5 c -0.140625 0 -0.25 -0.113281 -0.25 -0.25 v -0.75 h -0.75 c -0.140625 0 -0.25 -0.113281 -0.25 -0.25 v -0.5 c 0 -0.136719 0.109375 -0.25 0.25 -0.25 h 0.75 v -0.75 c 0 -0.136719 0.109375 -0.25 0.25 -0.25 z m 5.765625 -0.113281 c 0.59375 0 1.078125 0.484375 1.078125 1.082031 s -0.484375 1.082031 -1.078125 1.082031 c -0.597656 0 -1.082031 -0.484375 -1.082031 -1.082031 s 0.484375 -1.082031 1.082031 -1.082031 z m 2.96875 2.019531 c 0.597656 0 1.082031 0.484375 1.082031 1.078125 c 0 0.597656 -0.484375 1.082031 -1.082031 1.082031 c -0.59375 0 -1.078125 -0.484375 -1.078125 -1.082031 c 0 -0.59375 0.484375 -1.078125 1.078125 -1.078125 z m 0 0" fill="#222222"/></svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/globe-symbolic.svg�����������������������������0000664�0000000�0000000�00000005270�15240005042�0026102�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 7.519531 -0.00390625 c -4.128906 0 -7.4999998 3.37109425 -7.4999998 7.50000025 s 3.3710938 7.5 7.4999998 7.5 c 4.128907 0 7.5 -3.371094 7.5 -7.5 s -3.371093 -7.50000025 -7.5 -7.50000025 z m 0 2.00000025 c 0.253907 0 0.503907 0.023437 0.75 0.054687 c 0.191407 0.261719 0.382813 0.59375 0.550781 1.027344 c 0.105469 0.277344 0.203126 0.585937 0.289063 0.917969 h -3.179687 c 0.085937 -0.332032 0.183593 -0.640625 0.289062 -0.917969 c 0.167969 -0.433594 0.359375 -0.765625 0.546875 -1.027344 c 0.25 -0.03125 0.496094 -0.054687 0.753906 -0.054687 z m -2.089843 0.40625 c -0.046876 0.109375 -0.101563 0.203125 -0.144532 0.316406 c -0.148437 0.386719 -0.269531 0.820312 -0.378906 1.277344 h -1.621094 c 0.574219 -0.691406 1.300782 -1.246094 2.144532 -1.59375 z m 4.175781 0 c 0.847656 0.347656 1.574219 0.902344 2.144531 1.59375 h -1.617188 c -0.109374 -0.457032 -0.230468 -0.890625 -0.378906 -1.277344 c -0.042968 -0.113281 -0.097656 -0.207031 -0.148437 -0.316406 z m -6.984375 2.59375 h 2.085937 c -0.097656 0.628906 -0.148437 1.300781 -0.167969 2 h -2.484374 c 0.066406 -0.714844 0.257812 -1.390625 0.566406 -2 z m 3.097656 0 h 3.597656 c 0.105469 0.617187 0.160156 1.292968 0.183594 2 h -3.960938 c 0.023438 -0.707032 0.078126 -1.382813 0.179688 -2 z m 4.613281 0 h 2.082031 c 0.3125 0.609375 0.503907 1.285156 0.566407 2 h -2.480469 c -0.019531 -0.699219 -0.070312 -1.371094 -0.167969 -2 z m -8.277343 3 h 2.484374 c 0.019532 0.699218 0.070313 1.375 0.167969 2 h -2.085937 c -0.308594 -0.609375 -0.5 -1.285156 -0.566406 -2 z m 3.484374 0 h 3.960938 c -0.023438 0.707031 -0.078125 1.382812 -0.183594 2 h -3.597656 c -0.101562 -0.617188 -0.15625 -1.292969 -0.179688 -2 z m 4.960938 0 h 2.480469 c -0.0625 0.714844 -0.253907 1.390625 -0.566407 2 h -2.082031 c 0.097657 -0.625 0.148438 -1.300782 0.167969 -2 z m -7.214844 3 h 1.621094 c 0.109375 0.457031 0.230469 0.890625 0.378906 1.273437 c 0.042969 0.117188 0.097656 0.210938 0.144532 0.320313 c -0.84375 -0.347656 -1.570313 -0.902344 -2.144532 -1.59375 z m 2.644532 0 h 3.179687 c -0.085937 0.332031 -0.183594 0.640625 -0.289063 0.917968 c -0.167968 0.433594 -0.359374 0.765626 -0.550781 1.027344 c -0.246093 0.03125 -0.496093 0.054688 -0.75 0.054688 c -0.253906 0 -0.503906 -0.023438 -0.75 -0.054688 c -0.191406 -0.261718 -0.382812 -0.59375 -0.550781 -1.027344 c -0.105469 -0.277343 -0.203125 -0.585937 -0.289062 -0.917968 z m 4.203124 0 h 1.617188 c -0.570312 0.691406 -1.296875 1.246094 -2.144531 1.59375 c 0.050781 -0.109375 0.105469 -0.203125 0.148437 -0.320313 c 0.148438 -0.382812 0.269532 -0.816406 0.378906 -1.273437 z m 0 0" fill="#222222"/></svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/go-previous-symbolic.svg�����������������������0000664�0000000�0000000�00000001176�15240005042�0027272�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 12 2 c 0 -0.265625 -0.105469 -0.519531 -0.292969 -0.707031 c -0.390625 -0.390625 -1.023437 -0.390625 -1.414062 0 l -6 6 c -0.1875 0.1875 -0.292969 0.441406 -0.292969 0.707031 s 0.105469 0.519531 0.292969 0.707031 l 6 6 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 c 0.1875 -0.1875 0.292969 -0.441406 0.292969 -0.707031 s -0.105469 -0.519531 -0.292969 -0.707031 l -5.292969 -5.292969 l 5.292969 -5.292969 c 0.1875 -0.1875 0.292969 -0.441406 0.292969 -0.707031 z m 0 0" fill="#2e3436"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/graph2-symbolic.svg����������������������������0000664�0000000�0000000�00000001076�15240005042�0026175�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 3 -0.0234375 l -3 3.9999995 h 2 v 9.023438 v 0.019531 v 0.980469 h 10 v 1.976562 l 4 -3 l -4 -3 v 2.023438 h -7.128906 l 2.664062 -4 h 4.03125 l 3.292969 -5.488281 c 0.28125 -0.472657 0.128906 -1.085938 -0.34375 -1.367188 c -0.226563 -0.140625 -0.5 -0.179687 -0.757813 -0.113281 c -0.257812 0.0625 -0.480468 0.226562 -0.613281 0.457031 l -2.710937 4.511719 h -3.96875 l -2.464844 3.699219 v -5.722657 h 2 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/hand-openyay-symbolic.svg����������������������0000664�0000000�0000000�00000001416�15240005042�0027404�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 0 c 0.554688 0 1 0.445312 1 1 v 6.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -4.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 8.5 c 0 0.5 0.5 0.5 0.5 0.5 l 1.792969 -1.707031 c 0.1875 -0.195313 0.445312 -0.300781 0.714843 -0.300781 c 1.085938 0.082031 1.148438 1.265624 0.699219 1.714843 l -3 3 c -0.707031 0.792969 -1.757812 1.289063 -2.707031 1.292969 h -6 c -3 0 -3 -3 -3 -3 v -8 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 3.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 5.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/heart-filled-symbolic.svg����������������������0000664�0000000�0000000�00000001125�15240005042�0027345�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 11.40625 1.964844 c -0.972656 -0.027344 -1.921875 0.324218 -2.640625 0.984375 l -0.753906 0.675781 l -0.757813 -0.675781 c -1 -0.898438 -2.402344 -1.191407 -3.675781 -0.769531 c -1.277344 0.417968 -2.230469 1.488281 -2.5 2.804687 s 0.183594 2.675781 1.1875 3.566406 l 5.746094 5.117188 l 5.742187 -5.117188 c 1.171875 -1.011719 1.601563 -2.640625 1.082032 -4.097656 c -0.519532 -1.457031 -1.882813 -2.445313 -3.429688 -2.488281 z m 0 0" fill="#222222"/></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/heart-outline-thick-symbolic.svg���������������0000664�0000000�0000000�00000002327�15240005042�0030672�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 11.40625 1.964844 c -0.972656 -0.027344 -1.921875 0.324218 -2.640625 0.984375 l -0.753906 0.675781 l -0.757813 -0.675781 c -0.996094 -0.898438 -2.402344 -1.191407 -3.675781 -0.769531 c -1.277344 0.417968 -2.230469 1.488281 -2.5 2.804687 s 0.183594 2.675781 1.1875 3.566406 l 5.746094 5.117188 l 5.742187 -5.117188 c 1.171875 -1.011719 1.601563 -2.640625 1.082032 -4.097656 c -0.519532 -1.457031 -1.882813 -2.445313 -3.429688 -2.488281 z m -6.515625 1.953125 c 0.296875 0.019531 0.609375 0.140625 1.027344 0.519531 l 0.003906 0.003906 l 2.089844 1.863282 l 2.097656 -1.871094 l 0.011719 -0.011719 c 0.332031 -0.304687 0.773437 -0.46875 1.230468 -0.457031 c 0.890626 0.023437 1.363282 0.5 1.601563 1.160156 c 0.234375 0.65625 0.167969 1.328125 -0.503906 1.910156 l -0.011719 0.011719 l -4.425781 3.945313 l -4.417969 -3.9375 l -0.003906 -0.003907 c -0.5625 -0.496093 -0.652344 -0.859375 -0.65625 -1.25 c 0 -0.390625 0.179687 -0.855469 0.507812 -1.226562 c 0.332032 -0.367188 0.773438 -0.601563 1.160156 -0.644531 c 0.097657 -0.011719 0.191407 -0.015626 0.289063 -0.011719 z m 0 0" fill="#222222"/></svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/horizontal-arrows-disabled-symbolic.svg��������0000664�0000000�0000000�00000002645�15240005042�0032266�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 11.011719 1 c -0.253907 -0.003906 -0.511719 0.089844 -0.710938 0.28125 c -0.394531 0.386719 -0.402343 1.019531 -0.019531 1.417969 l 1.269531 1.300781 h -4.550781 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 4.550781 l -1.269531 1.300781 c -0.382812 0.398438 -0.375 1.03125 0.019531 1.417969 c 0.398438 0.382812 1.03125 0.375 1.414063 -0.019531 l 2.917968 -3 c 0.378907 -0.390625 0.378907 -1.007813 0 -1.394531 l -2.917968 -3 c -0.191406 -0.199219 -0.445313 -0.300782 -0.703125 -0.304688 z m -6.027344 6 c -0.253906 0.003906 -0.507813 0.105469 -0.703125 0.300781 l -2.917969 3 c -0.375 0.390625 -0.375 1.007813 0 1.398438 l 2.917969 3 c 0.386719 0.394531 1.019531 0.402343 1.414062 0.015625 c 0.398438 -0.382813 0.40625 -1.015625 0.019532 -1.414063 l -1.265625 -1.300781 h 4.550781 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 h -4.550781 l 1.265625 -1.300781 c 0.386718 -0.398438 0.378906 -1.03125 -0.019532 -1.417969 c -0.195312 -0.191406 -0.453124 -0.285156 -0.710937 -0.28125 z m 0 0" fill-opacity="0.34902" fill-rule="evenodd"/><path d="m 11 11 h 1.375 l 1.125 1.09375 l 1.09375 -1.09375 h 1.40625 v 1.46875 l -1.09375 1.0625 l 1.09375 1.0625 v 1.40625 h -1.4375 l -1.0625 -1.0625 l -1.0625 1.0625 h -1.4375 v -1.40625 l 1.0625 -1.0625 l -1.0625 -1.0625 z m 0 0"/></g></svg> �������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/image-missing-symbolic.svg���������������������0000664�0000000�0000000�00000001522�15240005042�0027537�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 4 1 c -1.644531 0 -3 1.355469 -3 3 v 1 h 1 v -1 c 0 -1.109375 0.890625 -2 2 -2 h 1 v -1 z m 2 0 v 1 h 4 v -1 z m 5 0 v 1 h 1 c 1.109375 0 2 0.890625 2 2 v 1 h 1 v -1 c 0 -1.644531 -1.355469 -3 -3 -3 z m -5 4 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 s 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m -5 1 v 4 h 1 v -4 z m 13 0 v 4 h 1 v -4 z m -4.5 2 l -2 2 l -1.5 -1 l -2 2 v 0.5 c 0 0.5 0.5 0.5 0.5 0.5 h 7 s 0.472656 -0.035156 0.5 -0.5 v -1 z m -8.5 3 v 1 c 0 1.644531 1.355469 3 3 3 h 1 v -1 h -1 c -1.109375 0 -2 -0.890625 -2 -2 v -1 z m 13 0 v 1 c 0 1.109375 -0.890625 2 -2 2 h -1 v 1 h 1 c 1.644531 0 3 -1.355469 3 -3 v -1 z m -8 3 v 1 h 4 v -1 z m 0 0" fill="#2e3434" fill-opacity="0.34902"/> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/left-large-symbolic.svg������������������������0000664�0000000�0000000�00000000743�15240005042�0027034�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 10.292969 1.292969 l -6 6 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 l 6 6 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 s 0.390625 -1.023437 0 -1.414062 l -5.292969 -5.292969 l 5.292969 -5.292969 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 z m 0 0" fill="#222222" fill-rule="evenodd"/></svg> �����������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/library-symbolic.svg���������������������������0000664�0000000�0000000�00000002110�15240005042�0026444�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 1.5 2 h 2 c 0.277344 0 0.5 0.222656 0.5 0.5 v 12 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -2 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -12 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 5.5 4 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 10 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -10 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 8.5 3 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 11 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -11 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 10.707031 1.460938 l 0.964844 -0.261719 c 0.265625 -0.070313 0.539063 0.089843 0.613281 0.355469 l 3.363282 12.558593 c 0.070312 0.265625 -0.085938 0.539063 -0.355469 0.609375 l -0.964844 0.261719 c -0.265625 0.070313 -0.539063 -0.089844 -0.613281 -0.355469 l -3.363282 -12.554687 c -0.070312 -0.269531 0.085938 -0.542969 0.355469 -0.613281 z m 0 0"/></g></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/license-symbolic.svg���������������������������0000664�0000000�0000000�00000005641�15240005042�0026436�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 -0.0117188 c -0.550781 0 -1 0.4492188 -1 0.9999998 v 14 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -14 c 0 -0.550781 -0.449219 -0.9999998 -1 -0.9999998 z m 0 0"/><path d="m 4 13.988281 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 8 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 0 0"/><path d="m 8.035156 -0.0117188 c -0.394531 0.00781255 -0.746094 0.2460938 -0.902344 0.6093748 c -0.238281 0.566406 -0.875 0.933594 -1.882812 1.152344 c -1.007812 0.222656 -2.253906 0.238281 -3.25 0.238281 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 c 1.003906 0 2.367188 0.003907 3.675781 -0.28125 c 0.875 -0.191406 1.695313 -0.648437 2.382813 -1.277343 c 0.6875 0.632812 1.496094 1.09375 2.355468 1.285156 c 1.273438 0.285156 2.585938 0.273437 3.585938 0.273437 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 c -1 0 -2.1875 -0.007812 -3.152344 -0.226562 c -0.960937 -0.214844 -1.589844 -0.570313 -1.890625 -1.203125 c -0.167969 -0.355469 -0.527343 -0.5781252 -0.921875 -0.5703128 z m 0 0"/><path d="m 3 3.988281 c -0.222656 0 -0.417969 0.148438 -0.480469 0.363281 l -2 7 c -0.066406 0.234376 0.042969 0.480469 0.261719 0.585938 c 1.394531 0.679688 2.933594 0.765625 4.445312 -0.003906 c 0.210938 -0.109375 0.320313 -0.351563 0.253907 -0.582032 l -2 -7 c -0.0625 -0.214843 -0.257813 -0.363281 -0.480469 -0.363281 z m 0 2.320313 l 1.378906 4.832031 c -0.949218 0.378906 -1.851562 0.355469 -2.761718 0 z m 0 0"/><path d="m 13 3.988281 c -0.222656 0 -0.417969 0.148438 -0.480469 0.363281 l -2 7 c -0.066406 0.234376 0.042969 0.480469 0.261719 0.585938 c 1.394531 0.679688 2.933594 0.765625 4.445312 -0.003906 c 0.210938 -0.109375 0.320313 -0.351563 0.253907 -0.582032 l -2 -7 c -0.0625 -0.214843 -0.257813 -0.363281 -0.480469 -0.363281 z m 0 2.320313 l 1.378906 4.832031 c -0.949218 0.378906 -1.851562 0.355469 -2.761718 0 z m 0 0"/><path d="m 1.4375 10.589844 c -0.496094 -0.242188 -1.09375 -0.035156 -1.335938 0.460937 c -0.117187 0.238281 -0.132812 0.511719 -0.0468745 0.765625 c 0.0859375 0.25 0.2695315 0.457032 0.5078125 0.570313 c 1.503906 0.730469 3.253906 0.828125 4.890625 -0.007813 c 0.492187 -0.25 0.6875 -0.851562 0.4375 -1.34375 c -0.121094 -0.238281 -0.328125 -0.417968 -0.582031 -0.5 c -0.253906 -0.082031 -0.527344 -0.058594 -0.765625 0.0625 c -1.121094 0.574219 -2.027344 0.515625 -3.105469 -0.007812 z m 0 0"/><path d="m 11.4375 10.589844 c -0.496094 -0.242188 -1.09375 -0.035156 -1.335938 0.460937 c -0.117187 0.238281 -0.132812 0.511719 -0.046874 0.765625 c 0.085937 0.25 0.269531 0.457032 0.507812 0.570313 c 1.503906 0.730469 3.253906 0.828125 4.890625 -0.007813 c 0.492187 -0.25 0.6875 -0.851562 0.4375 -1.34375 c -0.121094 -0.238281 -0.328125 -0.417968 -0.582031 -0.5 c -0.253906 -0.082031 -0.527344 -0.058594 -0.765625 0.0625 c -1.121094 0.574219 -2.027344 0.515625 -3.105469 -0.007812 z m 0 0"/></svg> �����������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/media-playback-pause-symbolic.svg��������������0000664�0000000�0000000�00000001007�15240005042�0030762�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <g fill="#2e3436"> <path d="m 3 1 h 3 c 0.550781 0 1 0.449219 1 1 v 12 c 0 0.550781 -0.449219 1 -1 1 h -3 c -0.550781 0 -1 -0.449219 -1 -1 v -12 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/> <path d="m 10 1 h 3 c 0.550781 0 1 0.449219 1 1 v 12 c 0 0.550781 -0.449219 1 -1 1 h -3 c -0.550781 0 -1 -0.449219 -1 -1 v -12 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/> </g> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/media-playback-start-symbolic.svg��������������0000664�0000000�0000000�00000001052�15240005042�0031002�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 2 2.5 v 11 c 0 1.5 1.269531 1.492188 1.269531 1.492188 h 0.128907 c 0.246093 0.003906 0.488281 -0.050782 0.699218 -0.171876 l 9.796875 -5.597656 c 0.433594 -0.242187 0.65625 -0.734375 0.65625 -1.226562 c 0 -0.492188 -0.222656 -0.984375 -0.65625 -1.222656 l -9.796875 -5.597657 c -0.210937 -0.121093 -0.453125 -0.175781 -0.699218 -0.175781 h -0.128907 s -1.269531 0 -1.269531 1.5 z m 0 0" fill="#2e3436"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/media-playback-stop-symbolic.svg���������������0000664�0000000�0000000�00000000531�15240005042�0030633�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 3.5 2 h 9 c 0.828125 0 1.5 0.671875 1.5 1.5 v 9 c 0 0.828125 -0.671875 1.5 -1.5 1.5 h -9 c -0.828125 0 -1.5 -0.671875 -1.5 -1.5 v -9 c 0 -0.828125 0.671875 -1.5 1.5 -1.5 z m 0 0" fill="#2e3436"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/meeting-symbolic.svg���������������������������0000664�0000000�0000000�00000001070�15240005042�0026434�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 6 1 c -0.554688 0 -1 0.445312 -1 1 v 1 h -2.8125 c -1.207031 0 -2.1875 0.800781 -2.1875 2 v 7.976562 c 0 1.199219 0.980469 2 2.1875 2 h 11.625 c 1.203125 0 2.1875 -1.019531 2.1875 -2.21875 v -7.539062 c 0 -1.199219 -0.984375 -2.21875 -2.1875 -2.21875 h -2.8125 v -1 c 0 -0.554688 -0.445312 -1 -1 -1 z m 0 1 h 4 v 1 h -4 z m -4 3 h 12 v 2 h -12 z m 0 3 h 4 c 0 1 1 1 1 1 h 2 s 1 0 1 -1 h 4 v 5 h -12 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/newspaper-symbolic.svg�������������������������0000664�0000000�0000000�00000001530�15240005042�0027011�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 0 2.992188 v 9 c 0 2.199218 1.800781 4 4 4 h 9 v -0.035157 c 1.71875 -0.25 3.039062 -1.765625 3 -3.539062 v -5.425781 c 0 -1.65625 -1.34375 -3 -3 -3 h -2 v -1 c 0 -1.65625 -1.34375 -3.0000005 -3 -3.0000005 h -5 c -1.65625 0 -3 1.3437505 -3 3.0000005 z m 3 -1 h 5 c 0.550781 0 1 0.449218 1 1 v 9.445312 c 0 0.558594 0.136719 1.082031 0.367188 1.554688 h -5.367188 c -1.117188 0 -2 -0.882813 -2 -2 v -9 c 0 -0.550782 0.449219 -1 1 -1 z m 0 1 v 2 h 5 v -2 z m 0 3 v 1 h 5 v -1 z m 8 0 h 2 c 0.550781 0 1 0.449218 1 1 v 5.46875 c 0.019531 0.835937 -0.621094 1.503906 -1.457031 1.527343 c -0.863281 -0.007812 -1.542969 -0.683593 -1.542969 -1.550781 z m -8 2 v 1 h 5 v -1 z m 0 2 v 1 h 5 v -1 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/on-the-go-symbolic.svg�������������������������0000664�0000000�0000000�00000010337�15240005042�0026607�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg id="svg12" width="91" height="31" version="1.1" viewBox="0 0 91 31" xmlns="http://www.w3.org/2000/svg"> <path id="path24" d="m80.168 5.291c-1.8903 0-3.4395 1.5492-3.4395 3.4395v18.521c0 1.8903 1.5492 3.4395 3.4395 3.4395h6.6152c1.8902 0 3.4395-1.5492 3.4395-3.4395v-18.521c0-1.8902-1.5493-3.4395-3.4395-3.4395zm0 1.5879h6.6152c1.0322 1e-7 1.8516 0.81928 1.8516 1.8516v18.521c0 1.0323-0.81932 1.8516-1.8516 1.8516h-6.6152c-1.0324 0-1.8516-0.81923-1.8516-1.8516v-18.521c0-1.0323 0.81922-1.8516 1.8516-1.8516z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path23" d="m80.17 7.6738c-0.5845 0-1.0586 0.47409-1.0586 1.0586 0 0.58451 0.47409 1.0566 1.0586 1.0566s1.0566-0.47213 1.0566-1.0566c0-0.5845-0.47214-1.0586-1.0566-1.0586z"/> <path id="path22" d="m81.492 28.047a0.26458 0.26458 0 0 0-0.26562 0.26367 0.26458 0.26458 0 0 0 0.26562 0.26367h3.9688a0.26458 0.26458 0 0 0 0.26367-0.26367 0.26458 0.26458 0 0 0-0.26367-0.26367z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path21" d="m61.648 1.3223c-1.8903 0-3.4395 1.5492-3.4395 3.4395v22.49c0 1.8903 1.5492 3.4395 3.4395 3.4395h7.9375c1.8902 0 3.4395-1.5492 3.4395-3.4395v-22.49c0-1.8902-1.5493-3.4395-3.4395-3.4395zm0 1.5879h7.9375c1.0322 0 1.8516 0.81928 1.8516 1.8516v22.49c0 1.0323-0.81932 1.8516-1.8516 1.8516h-7.9375c-1.0324 0-1.8516-0.81923-1.8516-1.8516v-22.49c0-1.0323 0.81922-1.8516 1.8516-1.8516z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path20" d="m63.633 28.047a0.26458 0.26458 0 0 0-0.26562 0.26367 0.26458 0.26458 0 0 0 0.26562 0.26367h3.9688a0.26458 0.26458 0 0 0 0.26367-0.26367 0.26458 0.26458 0 0 0-0.26367-0.26367z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path19" d="m64.162 3.4395a0.79375 0.79375 0 0 0-0.79492 0.79492 0.79375 0.79375 0 0 0 0.79492 0.79297h2.9102a0.79375 0.79375 0 0 0 0.79297-0.79297 0.79375 0.79375 0 0 0-0.79297-0.79492z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path18" d="m19.314 0c-1.8903 0-3.4395 1.5492-3.4395 3.4395v23.812c0 1.8902 1.5492 3.4395 3.4395 3.4395h31.75c1.8902 0 3.4395-1.5493 3.4395-3.4395v-23.812c0-1.8902-1.5493-3.4395-3.4395-3.4395zm0 1.5879h31.75c1.0322 0 1.8516 0.8193 1.8516 1.8516v23.812c0 1.0322-0.81936 1.8516-1.8516 1.8516h-31.75c-1.0323 0-1.8516-0.81936-1.8516-1.8516v-9.2598c-0.7306 0-1.3223-0.59362-1.3223-1.3242v-5.291c0-0.7306 0.59167-1.3223 1.3223-1.3223v-6.6152c0-1.0323 0.81922-1.8516 1.8516-1.8516z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path17" d="m17.463 10.055c-0.7306 0-1.3223 0.59166-1.3223 1.3223v5.291c0 0.7306 0.59167 1.3242 1.3223 1.3242 0.7307 0 1.3223-0.59362 1.3223-1.3242v-5.291c0-0.7306-0.59156-1.3223-1.3223-1.3223z"/> <path id="path16" d="m33.205 28.047a0.26458 0.26458 0 0 0-0.26367 0.26367 0.26458 0.26458 0 0 0 0.26367 0.26367h3.9688a0.26458 0.26458 0 0 0 0.26367-0.26367 0.26458 0.26458 0 0 0-0.26367-0.26367z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path15" d="m3.4395 9.2598c-1.8902 0-3.4395 1.5493-3.4395 3.4395v14.553c0 1.8903 1.5493 3.4395 3.4395 3.4395h5.293c1.8902 0 3.4395-1.5492 3.4395-3.4395v-14.553c0-1.8902-1.5492-3.4395-3.4395-3.4395zm2.6465 0.5293c0.5845 0 1.0586 0.47409 1.0586 1.0586h1.5879c1.0323 0 1.8516 0.81936 1.8516 1.8516v14.553c0 1.0323-0.81926 1.8516-1.8516 1.8516h-5.293c-1.0323 0-1.8516-0.81922-1.8516-1.8516v-14.553c0-1.0322 0.8193-1.8516 1.8516-1.8516h1.5879c0-0.5845 0.47409-1.0586 1.0586-1.0586z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> <path id="path14" d="m6.0859 9.7891c-0.5845 0-1.0586 0.47409-1.0586 1.0586s0.47409 1.0586 1.0586 1.0586 1.0586-0.47409 1.0586-1.0586c0-0.5845-0.47409-1.0586-1.0586-1.0586z"/> <path id="path13" d="m4.1016 28.047a0.26458 0.26458 0 0 0-0.26562 0.26367 0.26458 0.26458 0 0 0 0.26562 0.26367h3.9688a0.26458 0.26458 0 0 0 0.26367-0.26367 0.26458 0.26458 0 0 0-0.26367-0.26367z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"/> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/open-book-symbolic.svg�������������������������0000664�0000000�0000000�00000002227�15240005042�0026702�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 3 1 c -1.644531 0 -3 1.355469 -3 3 v 7 c 0 1.644531 1.355469 3 3 3 h 3 c 0.5625 0 1 0.4375 1 1 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 c 0 -1.644531 -1.355469 -3 -3 -3 h -3 c -0.566406 0 -1 -0.4375 -1 -1 v -7 c 0 -0.5625 0.433594 -1 1 -1 h 3 c 0.5625 0 1 0.4375 1 1 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 0"/><path d="m 7 4 v 10 h 2 v -10 z m 0 0"/><path d="m 10 1 c -1.644531 0 -3 1.355469 -3 3 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 c 0 -0.5625 0.433594 -1 1 -1 h 3 c 0.5625 0 1 0.4375 1 1 v 7 c 0 0.5625 -0.4375 1 -1 1 h -3 c -1.644531 0 -3 1.355469 -3 3 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 c 0 -0.5625 0.433594 -1 1 -1 h 3 c 1.644531 0 3 -1.355469 3 -3 v -7 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 0"/><path d="m 3 4 h 3 v 1 h -3 z m 0 0"/><path d="m 3 6 h 3 v 1 h -3 z m 0 0"/><path d="m 3 8 h 3 v 1 h -3 z m 0 0"/><path d="m 10 4 h 3 v 1 h -3 z m 0 0"/><path d="m 10 6 h 3 v 1 h -3 z m 0 0"/><path d="m 10 8 h 2 v 1 h -2 z m 0 0"/></g></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/paintbrush-symbolic.svg������������������������0000664�0000000�0000000�00000001067�15240005042�0027171�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="15.976562px" viewBox="0 0 16 15.976562" width="16px"><g fill="#222222"><path d="m 9 10.976562 c 0 2.210938 -1.792969 4.011719 -4 4 h -4 v -4 c 0 -2.210937 1.789062 -4 4 -4 c 2.207031 0 4 1.789063 4 4 z m 0 0"/><path d="m 14.40625 0.0273438 c -0.386719 0.0078124 -0.757812 0.1718752 -1.03125 0.4492182 l -5.800781 5.773438 c 0.90625 0.476562 1.644531 1.214844 2.121093 2.121094 l 5.800782 -5.769532 c 0.980468 -0.957031 0.277344 -2.617187 -1.089844 -2.5742182 z m 0 0"/></g></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/parent-symbolic.svg����������������������������0000664�0000000�0000000�00000002576�15240005042�0026311�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5.5 -0.00390625 c -1.382812 0 -2.5 1.12109425 -2.5 2.50000025 c 0 1.382812 1.117188 2.5 2.5 2.5 c 1.378906 0 2.5 -1.117188 2.5 -2.5 c 0 -1.378906 -1.121094 -2.50000025 -2.5 -2.50000025 z m 7 5.00000025 c -1.386719 0 -2.5 1.117187 -2.5 2.5 c 0 1.386718 1.113281 2.5 2.5 2.5 s 2.5 -1.113282 2.5 -2.5 c 0 -1.382813 -1.113281 -2.5 -2.5 -2.5 z m -8.5 1 c -0.265625 0.003906 -0.519531 0.105468 -0.707031 0.292968 l -3 3 c -0.3906252 0.390626 -0.3906252 1.027344 0 1.414063 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 l 1.542969 -1.542969 l -0.25 1.765625 v 4.070313 c 0 0.554687 0.449219 1 1 1 s 1 -0.445313 1 -1 v -2.5 s 0 -0.5 0.5 -0.5 s 0.5 0.5 0.5 0.5 v 2.5 c 0 0.554687 0.449219 1 1 1 s 1 -0.445313 1 -1 v -3.285156 l 0.085938 0.191406 c 0.179687 0.402344 0.597656 0.640625 1.035156 0.585937 c 0.152344 0.292969 0.433594 0.515625 0.878906 0.507813 h 1 v 2 c 0 0.773437 0.835938 1.253906 1.5 0.867187 c 0.667969 0.382813 1.5 -0.097656 1.5 -0.867187 v -0.132813 c 0.867188 0.5 1.847656 -0.441406 1.386719 -1.328125 l -0.949219 -1.8125 c -0.351562 -0.609375 -0.597656 -0.726562 -1.4375 -0.726562 h -3 c -0.042969 0 -0.074219 0.019531 -0.117188 0.023437 l -1.96875 -4.425781 c -0.160156 -0.363281 -0.519531 -0.597656 -0.914062 -0.597656 z m 0 0" fill="#222222"/></svg> ����������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/people-symbolic.svg����������������������������0000664�0000000�0000000�00000001551�15240005042�0026274�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5 1 c -1.378906 0 -2.5 1.121094 -2.5 2.5 c 0 1.382812 1.121094 2.5 2.5 2.5 c 1.382812 0 2.5 -1.117188 2.5 -2.5 c 0 -1.378906 -1.117188 -2.5 -2.5 -2.5 z m 6 3 c -1.378906 0 -2.5 1.121094 -2.5 2.5 c 0 1.382812 1.121094 2.5 2.5 2.5 c 1.382812 0 2.5 -1.117188 2.5 -2.5 c 0 -1.378906 -1.117188 -2.5 -2.5 -2.5 z m -8 3 c -1.660156 0 -3 1.339844 -3 3 v 2 c 0 0.554688 0.445312 1 1 1 h 4.078125 c 0 -2.042969 1.578125 -3.734375 3.578125 -3.90625 c -0.589844 -0.535156 -0.984375 -1.257812 -1.109375 -2.042969 c -0.175781 -0.03125 -0.359375 -0.050781 -0.546875 -0.050781 z m 6 3 c -1.660156 0 -3 1.339844 -3 3 v 2 c 0 0.554688 0.445312 1 1 1 h 8 c 0.554688 0 1 -0.445312 1 -1 v -2 c 0 -1.660156 -1.335938 -3 -3 -3 z m 0 0" fill="#222222"/></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������permissions-legacy-windowing-system-symbolic.svg����������������������������������������������������0000664�0000000�0000000�00000001252�15240005042�0034071�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000�bazaar-org-bazaar-48f93f4/src/icons/scalable/actions�������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <g fill="#222222"> <path d="m 2.035156 7.007812 c -0.53125 0 -1.03125 0.421876 -1.03125 1 v 7.011719 h 8.011719 v -3.984375 h -2 v 1.984375 h -4.011719 v -2.996093 h 2.015625 v -3.015626 z m 0 0"/> <path d="m 8.019531 1.007812 c -0.53125 0 -1.03125 0.421876 -1.03125 1 v 7.011719 h 8.011719 v -7.042969 c 0 -0.578124 -0.519531 -0.96875 -1.019531 -0.96875 z m 0.96875 3.015626 h 4.011719 v 2.996093 h -4.011719 z m 0 0"/> </g> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/permissions-microphone-symbolic.svg������������0000664�0000000�0000000�00000000751�15240005042�0031525�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M8 0C6.34 0 5 1.34 5 3v5c0 1.66 1.34 3 3 3s3-1.34 3-3V3c0-1.66-1.34-3-3-3m0 2c.555 0 1 .445 1 1v5c0 .555-.445 1-1 1s-1-.445-1-1V3c0-.555.445-1 1-1M2 7v1.012c0 2.965 2.164 5.43 5 5.906V16h2v-2.082c2.836-.477 5-2.941 5-5.906V7h-1.5v1.012c0 2.5-1.992 4.488-4.5 4.488s-4.5-1.988-4.5-4.488V7zm0 0"/> </svg> �����������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/permissions-sandboxed-symbolic.svg�������������0000664�0000000�0000000�00000002212�15240005042�0031323�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="m8 0.28516c-0.40302 0-0.80646 0.10423-1.166 0.3125l-4.668 2.6875-0.0019531 0.0019532c-0.72031 0.41908-1.1613 1.1934-1.1621 2.0254v5.375c8.469e-4 0.83202 0.4418 1.6063 1.1621 2.0254l0.0019531 0.001953 4.668 2.6875c0.72039 0.41728 1.6162 0.41685 2.3359-0.001953l4.6641-2.6855 0.001954-0.001953c0.72027-0.41903 1.1613-1.1934 1.1621-2.0254v-5.375c-8.47e-4 -0.83202-0.4418-1.6063-1.1621-2.0254l-0.001954-0.0019532-4.6641-2.6855c-0.36052-0.20975-0.76548-0.31445-1.1699-0.31445zm0 1.998c0.056066 0 0.11213 0.014709 0.16406 0.044922l0.0019531 0.0019531 3.8145 2.1973-3.9805 2.3203-3.9805-2.3203 3.8145-2.1973 0.0019531-0.0019531c0.05193-0.030212 0.108-0.044922 0.16406-0.044922zm-4.998 3.9707 3.998 2.3301v4.6055l-3.8301-2.2051c-0.10324-0.060057-0.16719-0.17082-0.16797-0.29688v-4.4336zm9.9961 0v4.4316c-1.29e-4 0.12684-0.06422 0.23847-0.16797 0.29883l-3.8301 2.2051v-4.6055l3.998-2.3301z" color="#000000" style="-inkscape-stroke:none"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/permissions-screen-contents-symbolic.svg�������0000664�0000000�0000000�00000001063�15240005042�0032471�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M4 1C2.34 1 1 2.34 1 4v6c0 1.66 1.34 3 3 3h8c1.66 0 3-1.34 3-3V4c0-1.66-1.34-3-3-3zm0 2h8c.555 0 1 .445 1 1v6c0 .555-.445 1-1 1H4c-.555 0-1-.445-1-1V4c0-.555.445-1 1-1m6.5 1s-.5 0-.5.5v.988s0 .5.5.5h1s.5 0 .5-.5v-.984s0-.5-.5-.5zm-6 1S4 5 4 5.5v4c0 .5.5.5.5.5h4c.5 0 .5-.5.5-.5v-4C9 5 8.563 5 8.5 5zM5 7h3v2H5zm3 7c-5 0-5 1-5 1 0 1 1 1 1 1h8c1 0 1-1 1-1s0-1-5-1m0 0"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/permissions-system-devices-symbolic.svg��������0000664�0000000�0000000�00000002147�15240005042�0032327�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="m8.0312 0.99609c-0.031 0-0.066562-9.375e-5 -0.10156 0.0039062a1.002 1.002 0 0 0-0.91797 0.99219l-0.0078126 1.0078h-1.9883l0.019531-0.98047a1.009 1.009 0 0 0-0.3125-0.74609 0.98 0.98 0 0 0-0.76172-0.26953 0.995 0.995 0 0 0-0.92578 0.98047l-0.023437 1.2773a3.302 3.302 0 0 0-2.0117 3.0469v4.3867c0 1.375 0.83153 2.5469 2.0195 3.0469v1.2578a1 1 0 1 0 2 0v-1h1.9805v1c0 0.55 0.45 1 1 1 0.55 0 1-0.45 1-1v-1h2v1c0 0.55 0.45 1 1 1s1-0.45 1-1v-1.2656c1.18-0.507 2-1.6751 2-3.0391v-4.3848c0-1.368-0.8201-2.5331-1.9961-3.0371l0.011719-1.2637a1.007 1.007 0 0 0-1.0859-1.0098 0.996 0.996 0 0 0-0.91406 0.99219l-0.011719 1.0078h-1.9961l0.0078125-0.99219c4e-3 -0.551-0.43447-0.99972-0.98047-1.0117h-0.0039062zm-3.7227 4.0039h0.0019531 7.3848c0.722 0 1.3047 0.58159 1.3047 1.3086v3.6914c0 0.484-0.406 1-1 1h-4-3.9805c-0.551 0-1.0195-0.453-1.0195-1v-3.6895c0-0.728 0.58159-1.3105 1.3086-1.3105z" fill="#222"/> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/permissions-warning-symbolic.svg���������������0000664�0000000�0000000�00000001561�15240005042�0031027�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="m8 0c-1.1458 0-2.292 0.43649-3.1621 1.3066l-3.5352 3.5352c-1.7364 1.7364-1.7364 4.58 0 6.3203l3.5352 3.5352c1.7403 1.7403 4.5839 1.7364 6.3203 0l3.5391-3.5352c1.7364-1.7403 1.7364-4.58 0-6.3203l-3.5391-3.5352c-0.8682-0.87016-2.0124-1.3066-3.1582-1.3066zm0 1.9668c0.63178 4.862e-4 1.2636 0.248 1.7559 0.74219l3.5391 3.5352c0.98449 0.9845 0.98449 2.5272 0 3.5117l-3.5391 3.5391c-0.98449 0.98449-2.5272 0.98449-3.5117 0l-3.5391-3.5352c-0.98449-0.9845-0.98449-2.5311 0-3.5156l3.5391-3.5391c0.49224-0.49224 1.1241-0.73877 1.7559-0.73828zm-1 2.0137v5h2v-5h-2zm1 6c-0.55078 0-1 0.44922-1 1 0 0.55078 0.44922 1 1 1s1-0.44922 1-1c0-0.55078-0.44922-1-1-1z"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/person-symbolic.svg����������������������������0000664�0000000�0000000�00000000602�15240005042�0026312�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 1 c -1.65625 0 -3 1.34375 -3 3 s 1.34375 3 3 3 s 3 -1.34375 3 -3 s -1.34375 -3 -3 -3 z m -1.5 7 c -2.492188 0 -4.5 2.007812 -4.5 4.5 v 1.5 c 0 1 1 1 1 1 h 10 s 1 0 1 -1 v -1.5 c 0 -2.492188 -2.007812 -4.5 -4.5 -4.5 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/pip-out-symbolic.svg���������������������������0000664�0000000�0000000�00000001707�15240005042�0026410�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <g fill="#222222"> <path d="m 0 3.992188 c 0 -1.644532 1.355469 -3 3 -3 h 8 c 1.644531 0 3 1.355468 3 3 v 3 h -2 v -3 c 0 -0.5625 -0.4375 -1 -1 -1 h -8 c -0.5625 0 -1 0.4375 -1 1 v 5 c 0 0.5625 0.4375 1 1 1 h 3 v 2 h -3 c -1.644531 0 -3 -1.355469 -3 -3 z m 0 0"/> <path d="m 10 8.992188 c -1.089844 0 -2 0.910156 -2 2 v 2 c 0 1.089843 0.910156 2 2 2 h 4 c 1.089844 0 2 -0.910157 2 -2 v -2 c 0 -1.089844 -0.910156 -2 -2 -2 z m 0 2 h 4 v 2 h -4 z m 0 0" fill-opacity="0.34902"/> <path d="m 3 4 v 3.5 c 0 0.277344 0.222656 0.5 0.5 0.5 s 0.5 -0.222656 0.5 -0.5 v -1.792969 l 3.144531 3.144531 c 0.195313 0.195313 0.515625 0.195313 0.707031 0 c 0.195313 -0.191406 0.195313 -0.511718 0 -0.707031 l -3.144531 -3.144531 h 1.792969 c 0.277344 0 0.5 -0.222656 0.5 -0.5 s -0.222656 -0.5 -0.5 -0.5 z m 0 0"/> </g> </svg>���������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/power-profile-performance-symbolic.svg���������0000664�0000000�0000000�00000002263�15240005042�0032102�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <g fill="#222222"> <path d="m 16 9.972656 c 0 -2.855468 -1.515625 -5.539062 -4 -6.972656 c -2.472656 -1.429688 -5.527344 -1.429688 -8 0 c -2.484375 1.433594 -4 4.117188 -4 6.972656 c 0 0.550782 0.449219 1 1 1 h 1 c 0.550781 0 1 -0.449218 1 -1 c -0.03125 -0.433594 -0.335938 -0.796875 -0.761719 -0.898437 c 0.285157 -1.78125 1.1875 -3.433594 2.761719 -4.339844 c 1.859375 -1.074219 4.140625 -1.074219 6 0 c 1.574219 0.90625 2.476562 2.558594 2.761719 4.339844 c -0.425781 0.101562 -0.730469 0.464843 -0.761719 0.898437 c 0 0.550782 0.449219 1 1 1 h 1 c 0.550781 0 1 -0.449218 1 -1 z m 0 0"/> <path d="m 11 5.667969 l -4.480469 4.972656 c -0.007812 0.007813 -0.015625 0.015625 -0.023437 0.027344 c -0.125 0.136719 -0.226563 0.292969 -0.308594 0.460937 c -0.472656 1 -0.046875 2.191406 0.949219 2.667969 c 0.996093 0.472656 2.191406 0.046875 2.664062 -0.949219 c 0.070313 -0.148437 0.121094 -0.304687 0.152344 -0.464844 h 0.003906 l 0.007813 -0.054687 l 0.007812 -0.042969 c 0.003906 -0.011718 0.003906 -0.023437 0.003906 -0.035156 z m 0 0"/> </g> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/proprietary-code-symbolic.svg������������������0000664�0000000�0000000�00000002413�15240005042�0030276�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="m4.9844 0.0019531c-1.6447 0-3 1.3553-3 3v9c0 1.6447 1.3553 3 3 3h2.0156v-2h-2.0156c-0.57129 0-1-0.4287-1-1v-9c0-0.5713 0.42871-1 1-1h4v1.5c0 1 0.5 1.5 1.5 1.5h1.5v0.99805h2v-1.498c-5.1e-5 -0.2652-0.10543-0.51952-0.29297-0.70703l-3.5-3.5c-0.18751-0.18754-0.44183-0.29292-0.70703-0.29297h-4.5zm0.03125 2.998v1h3v-1h-3zm0 2v1h1.9844 1.0156v-1h-3zm6.9844 1.9941c-0.51812 0-1.0362 0.1346-1.5 0.40234-0.92637 0.53485-1.4986 1.5243-1.5 2.5938v0.0039062 1.0059c-0.55588 0.0173-1 0.46515-1 1.0254v2.9688c0 0.5225 0.50255 1 1 1h6c0.51481 0 1-0.45904 1-1v0.17383c0.01922-0.11219 0.01919-0.2257 0-0.33789v-2.8047c0-0.56024-0.44412-1.008-1-1.0254v-1.0098c-1e-3 -1.0695-0.57363-2.0589-1.5-2.5938-0.46375-0.26774-0.98188-0.40234-1.5-0.40234zm-6.9844 0.0058594v1h2.9844v-1h-2.9844zm6.9844 1.6367c0.25203 0 0.50427 0.064703 0.73047 0.19531 0.45239 0.26119 0.73047 0.74326 0.73047 1.2656v0.89648h-2.9219v-0.89648-0.003906c1e-3 -0.52125 0.27892-1.001 0.73047-1.2617 0.2262-0.1305 0.47844-0.19531 0.73047-0.19531zm-6.9844 0.36328v1h1.9844v-1h-1.9844zm0 2v1h1.9844v-1h-1.9844z"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/puzzle-piece-symbolic.svg����������������������0000664�0000000�0000000�00000001203�15240005042�0027416�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 6.5 1 c -0.832031 0 -1.5 0.667969 -1.5 1.5 v 1.5 h -3 c -0.554688 0 -1 0.445312 -1 1 v 3 h 1.5 c 0.832031 0 1.5 0.667969 1.5 1.5 s -0.667969 1.5 -1.5 1.5 h -1.5 v 3 c 0 0.554688 0.445312 1 1 1 h 3 v -1.5 c 0 -0.832031 0.667969 -1.5 1.5 -1.5 s 1.5 0.667969 1.5 1.5 v 1.5 h 3 c 0.554688 0 1 -0.445312 1 -1 v -3 h 1.5 c 0.832031 0 1.5 -0.667969 1.5 -1.5 s -0.667969 -1.5 -1.5 -1.5 h -1.5 v -3 c 0 -0.554688 -0.445312 -1 -1 -1 h -3 v -1.5 c 0 -0.832031 -0.667969 -1.5 -1.5 -1.5 z m 0 0" fill="#222222"/></svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/���������������������������������������0000775�0000000�0000000�00000000000�15240005042�0024115�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/advertising-none-symbolic.svg����������0000664�0000000�0000000�00000001572�15240005042�0031736�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M12.986.014a1 1 0 0 0-.807.443C10.743 2.599 7.206 3.729 5.05 3.961l-.027.002L1.53.469.469 1.53l14 14 1.062-1.062-1.521-1.522V9.168l1.734-.693a.423.423 0 0 0 .266-.395V6.947a.42.42 0 0 0-.266-.392l-1.734-.696V1.014a1 1 0 0 0-.71-.957 1 1 0 0 0-.314-.043m-.977 3.474v7.46L6.773 5.712c1.686-.343 3.641-1.011 5.236-2.225m-10.857.727a2.013 2.013 0 0 0-1.142 1.8v3a2.02 2.02 0 0 0 1.996 2.004l1.15.003.194.002.681 3.2a1 1 0 0 0 1.188.77 1 1 0 0 0 .77-1.188l-.57-2.68c1.106.157 2.49.526 3.759 1.115L6.15 9.213a16.5 16.5 0 0 0-.887-.123c-.08-.008-.17-.013-.254-.02v-.998l-1-1V9.03c-.308-.004-.615-.005-.846-.006l-1.15-.006c-.014 0-.004.01-.004-.003v-3h.941z" color="#000" style="-inkscape-stroke:none"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/advertising-symbolic.svg���������������0000664�0000000�0000000�00000001605�15240005042�0030776�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M12.987.014a1 1 0 0 0-.807.444C10.744 2.6 7.207 3.73 5.051 3.962c-.433.046-1.338.052-1.89.052H2.01c-1.093 0-2 .908-2 2v3c0 1.092.904 2 1.996 2.004l1.15.004.193.002.682 3.2a1 1 0 0 0 1.187.769 1 1 0 0 0 .77-1.188l-.57-2.68c2.171.31 5.404 1.421 6.761 3.446a1 1 0 0 0 1.83-.557V9.17l1.735-.694a.423.423 0 0 0 .266-.394V6.948a.42.42 0 0 0-.266-.393L14.01 5.86V1.014a1 1 0 0 0-.708-.957 1 1 0 0 0-.315-.043M12.01 3.49v8.055c-2.104-1.6-4.836-2.25-6.746-2.454-.079-.008-.169-.013-.254-.019V5.969c.085-.006.175-.01.254-.02 1.91-.205 4.643-.86 6.746-2.46m-8 2.52v3.02c-.308-.003-.615-.004-.845-.005l-1.15-.006c-.015 0-.005.01-.005-.004v-3h1.15c.233 0 .541-.002.85-.006z" color="#000" style="-inkscape-stroke:none"/> </svg> ���������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/alcohol-use-none-symbolic.svg����������0000664�0000000�0000000�00000001337�15240005042�0031631�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" fill-opacity=".349" d="m4.06 5 5 5H10l2-2V5z"/> <path d="m4.29 0-.235.672a30.488 30.488 0 0 0-.559 1.764L1.53.469.47 1.53l14 14 1.062-1.062-4.463-4.463c.33-.25.616-.534.85-.838A5.253 5.253 0 0 0 13 6c0-1.521-.292-2.742-1.041-5.283L11.749 0zm1.46 2h4.438c.498 1.76.812 2.916.812 4 0 .52-.205 1.346-.668 1.95a2.636 2.636 0 0 1-.684.636l-4.48-4.479c.11-.55.287-1.2.582-2.107M3.002 6.065A5.258 5.258 0 0 0 4.078 9.13 4.746 4.746 0 0 0 7 10.908v3.108l-2.004.005.008 2 6-.02-.008-1.942-.056-.057-1.94.004v-1.944z" style="-inkscape-stroke:none"/> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/alcohol-use-symbolic.svg���������������0000664�0000000�0000000�00000001247�15240005042�0030674�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="m4.29 0-.235.672C3.036 3.61 3 4.68 3 6c0 .94.296 2.098 1.078 3.13A4.746 4.746 0 0 0 7 10.909v3.106l-2.004.006.008 2 6-.02-.008-2L9 14.006v-3.098c1.29-.237 2.286-.917 2.918-1.74A5.253 5.253 0 0 0 13 6c0-1.521-.292-2.742-1.041-5.283L11.749 0zm1.46 2h4.438c.499 1.76.812 2.916.812 4 0 .52-.205 1.347-.668 1.95C9.87 8.55 9.221 9 8 9c-1.211 0-1.86-.461-2.328-1.078S5 6.464 5 6c0-1.166.078-1.932.75-4" color="#000" style="-inkscape-stroke:none"/> <path fill-opacity=".35" d="M4 5h8v3l-2 2H6L4 8z"/> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/audio-chat-none-symbolic.svg�����������0000664�0000000�0000000�00000001152�15240005042�0031427�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="M8 0C6.34 0 5 1.34 5 3v.941L1.53.471.468 1.529l14 14 1.062-1.06-2.793-2.791A5.945 5.945 0 0 0 14 8.012V7h-1.5v1.012a4.48 4.48 0 0 1-.824 2.603l-1.092-1.091A2.98 2.98 0 0 0 11 8V3c0-1.66-1.34-3-3-3m0 2c.555 0 1 .445 1 1v4.94l-2-2V3c0-.555.445-1 1-1M2 7v1.012c0 2.964 2.164 5.43 5 5.906V16h2v-2.082c.5-.084.978-.23 1.428-.43l-1.164-1.164A4.59 4.59 0 0 1 8 12.5a4.466 4.466 0 0 1-4.5-4.488V7zm3.004 1.065a2.991 2.991 0 0 0 2.932 2.931z"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/audio-chat-symbolic.svg����������������0000664�0000000�0000000�00000000751�15240005042�0030476�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M8 0C6.34 0 5 1.34 5 3v5c0 1.66 1.34 3 3 3s3-1.34 3-3V3c0-1.66-1.34-3-3-3m0 2c.555 0 1 .445 1 1v5c0 .555-.445 1-1 1s-1-.445-1-1V3c0-.555.445-1 1-1M2 7v1.012c0 2.965 2.164 5.43 5 5.906V16h2v-2.082c2.836-.477 5-2.941 5-5.906V7h-1.5v1.012c0 2.5-1.992 4.488-4.5 4.488s-4.5-1.988-4.5-4.488V7zm0 0"/> </svg> �����������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/contacts-symbolic.svg������������������0000664�0000000�0000000�00000002020�15240005042�0030265�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M5 0C3.707 0 2.594.84 2.176 2H1v2h1v1H1v2h1v1H1v2h1v1H1v2h1.176c.418 1.16 1.531 2 2.824 2h7c1.645 0 3-1.355 3-3V3c0-1.644-1.355-3-3-3zm0 2h7c.57 0 .887.441 1 1v9c0 .57-.43 1-1 1H5c-.555 0-1-.445-1-1V3c0-.555.445-1 1-1m3.527 2c-.082 0-.16.004-.242.012a3.507 3.507 0 0 0-3.258 3.934 3.513 3.513 0 0 0 3.489 3.062c.847-.004 1.64-.278 1.64-.278l-.312-.949s-.707.227-1.332.227h-.004A2.496 2.496 0 0 1 6.019 7.82a2.496 2.496 0 0 1 1.868-2.738 2.79 2.79 0 0 1 1.808.164c.528.242.89.629 1.004 1.059.125.464.086.968-.086 1.277-.097.176-.402.351-.613.426v-.5c0-.825-.676-1.5-1.5-1.5S7 6.683 7 7.508c0 .82.676 1.5 1.5 1.5.176 0 .344-.04.5-.094v.043l.45.047c.94.097 1.69-.317 2.038-.934.348-.62.356-1.36.176-2.023-.207-.785-.816-1.371-1.555-1.707A3.717 3.717 0 0 0 8.523 4zM8.5 7.008c.281 0 .5.215.5.5 0 .281-.219.5-.5.5s-.5-.219-.5-.5c0-.285.219-.5.5-.5"/> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/drug-use-none-symbolic.svg�������������0000664�0000000�0000000�00000001701�15240005042�0031144�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <g fill="#222"> <path d="M11.002 1c-1.026 0-2.052.39-2.83 1.168l-3.47 3.47 5.66 5.66 3.47-3.472a4.016 4.016 0 0 0 .002-5.66A3.992 3.992 0 0 0 11.002 1m0 1.982a2 2 0 0 1 1.418.598 1.977 1.977 0 0 1-.002 2.832l-2.264 2.266-2.832-2.832 2.264-2.264a2 2 0 0 1 1.416-.6m-7.363 3.72-1.41 1.41a4.016 4.016 0 0 0 0 5.66 4.016 4.016 0 0 0 5.66 0l1.41-1.41-1.414-1.415-1.41 1.41a1.977 1.977 0 0 1-2.832 0 1.977 1.977 0 0 1 0-2.831l1.41-1.41z" color="#000" style="-inkscape-stroke:none;paint-order:markers stroke fill"/> <path fill-opacity=".333" d="m4.692 5.647 5.66 5.66 3.48-3.48a4.017 4.017 0 0 0 .001-5.661 4.017 4.017 0 0 0-5.66.001z" color="#000" style="-inkscape-stroke:none;paint-order:markers stroke fill"/> <path d="M1.53.47.469 1.53l14 14 1.062-1.061z"/> </g> </svg> ���������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/drug-use-symbolic.svg������������������0000664�0000000�0000000�00000001526�15240005042�0030214�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M11.002 1c-1.026 0-2.052.39-2.83 1.168L2.229 8.111a4.016 4.016 0 0 0 0 5.66 4.016 4.016 0 0 0 5.66 0l5.943-5.945a4.016 4.016 0 0 0 .002-5.66A3.992 3.992 0 0 0 11.002 1m0 1.982a2 2 0 0 1 1.418.598 1.977 1.977 0 0 1-.002 2.832l-2.264 2.266-2.832-2.832 2.264-2.264a2 2 0 0 1 1.416-.6M5.908 7.26l2.832 2.832-2.265 2.265a1.977 1.977 0 0 1-2.832 0 1.977 1.977 0 0 1 0-2.832z" color="#000" style="-inkscape-stroke:none;paint-order:markers stroke fill"/> <path fill="#222" fill-opacity=".333" d="m4.692 5.647 5.66 5.66 3.48-3.48a4.017 4.017 0 0 0 .001-5.661 4.017 4.017 0 0 0-5.66.001z" color="#000" style="-inkscape-stroke:none;paint-order:markers stroke fill"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/gambling-none-symbolic.svg�������������0000664�0000000�0000000�00000001027�15240005042�0031172�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="M1.53.47.468 1.53l14 14 1.062-1.061-.943-.944c.26-.442.412-.957.412-1.51v-8.03A2.98 2.98 0 0 0 12.016 1H3.984c-.553 0-1.07.15-1.513.412zM11.5 3a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3M1 4.06v7.956A2.98 2.98 0 0 0 3.984 15h7.956L1 4.061zm7.102 2.37a1.5 1.5 0 0 1 1.406 2.017L7.582 6.523a1.49 1.49 0 0 1 .52-.093M4.5 10a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3"/> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/gambling-symbolic.svg������������������0000664�0000000�0000000�00000000750�15240005042�0030237�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M12.016 1A2.98 2.98 0 0 1 15 3.984v8.032A2.98 2.98 0 0 1 12.016 15H3.985A2.98 2.98 0 0 1 1 12.016V3.984A2.98 2.98 0 0 1 3.985 1zM11.5 3a1.5 1.5 0 1 0 .001 3 1.5 1.5 0 0 0 0-3M8.102 6.43c-.832 0-1.5.672-1.5 1.5s.668 1.5 1.5 1.5a1.5 1.5 0 0 0 0-3M4.5 10a1.5 1.5 0 1 0 .001 3 1.5 1.5 0 0 0 0-3"/> </svg> ������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/human-remains-symbolic.svg�������������0000664�0000000�0000000�00000000614�15240005042�0031222�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="m11.125 1.25-.844 2.188-1.844-.75-.75 1.874 1.875.75-2.187 5.75C5.082 11.54 3.832 13.027 3 14H1.469v1.063h13V14h-.719c-.414-.988-1.914-2.605-4.219-3l1.906-4.969 2.25.907.75-1.844-2.28-.907L13 2zm0 0"/> </svg> ��������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/messaging-none-symbolic.svg������������0000664�0000000�0000000�00000001005�15240005042�0031363�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M1.53.47.47 1.53l14 14 1.06-1.06-1.95-1.95A3.015 3.015 0 0 0 14.998 10V5c0-1.645-1.355-3-3-3h-8c-.284 0-.559.042-.82.117L1.53.471zM5.06 4H12c.571 0 1 .429 1 1v5a.973.973 0 0 1-.943.996zm-3.943.178A2.943 2.943 0 0 0 .998 5v5c0 1.645 1.356 3 3 3h1v3l3-3h1.941l-2-2H4c-.57 0-1-.429-1-1V6.059z" style="-inkscape-stroke:none"/> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/messaging-symbolic.svg�����������������0000664�0000000�0000000�00000000656�15240005042�0030441�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M3.999 2c-1.645 0-3 1.355-3 3v5c0 1.645 1.355 3 3 3h1v3l3-3h4c1.645 0 3-1.355 3-3V5c0-1.645-1.355-3-3-3zm0 2h8c.571 0 1 .429 1 1v5c0 .571-.429 1-1 1h-8c-.571 0-1-.429-1-1V5c0-.571.429-1 1-1" color="#000" style="-inkscape-stroke:none"/> </svg> ����������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/money-none-symbolic.svg����������������0000664�0000000�0000000�00000001146�15240005042�0030543�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="m1.531.469-1.06 1.06L2.85 3.91l1.41 1.418a.985.985 0 0 1 .005-.004L5.94 7h-.003L9 10.063v-.004l.941.941h-.004l1.868 1.867h.004l2.662 2.662 1.06-1.06-2.396-2.397c.53-.537.861-1.268.861-2.076A3.01 3.01 0 0 0 11 7H9V5h4V3H9V1H7v2H5c-.281 0-.557.042-.82.117zM6.063 5H7v.938zm-3.97.277A2.99 2.99 0 0 0 5 8.992v.012h.82zM10.064 9H11a.98.98 0 0 1 .996.996.994.994 0 0 1-.26.678L10.062 9zM7 10.184V11H3v2h4v2h2v-2h.82z" style="fill:#222"/> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/money-symbolic.svg���������������������0000664�0000000�0000000�00000000762�15240005042�0027611�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M7 1v2H5a2.996 2.996 0 0 0 0 5.992v.012h2v2H3v2h4v2h2v-2h2v-.012a3.01 3.01 0 0 0 2.996-2.996A3.01 3.01 0 0 0 11 7H9V5h4V3H9V1zM5.04 5H7v2H5.105a9.66 9.66 0 0 1-.109-.012.992.992 0 0 1-.863-1.492c.18-.309.504-.5.863-.5a.08.08 0 0 0 .043 0zM9 9h2c.563 0 .996.434.996.996s-.434.996-.996.996l-2 .012zm0 0"/> </svg> ��������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/nudity-none-symbolic.svg���������������0000664�0000000�0000000�00000001310�15240005042�0030721�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="m1.531.469-1.06 1.06 2.498 2.498v.004l5.785 5.782.744.744s-.002 0-.002.002l1.473 1.472v-.004l3.502 3.502 1.06-1.06-3.111-3.112c.634-.634 1.049-1.67 1.049-2.845 0-1.933-1.117-3.5-2.5-3.5v-4h-8v.894L1.53.47zM6.97 4.512c.883 0 1.652.504 2.176 1.234.523.73.824 1.703.824 2.766 0 .128-.006.254-.016.379L8.92 7.857c-.091-.602-.304-1.132-.588-1.529-.383-.539-.86-.816-1.363-.816a.501.501 0 0 1 0-1zm-4 1.644v9.856h4v-4.45l.363-.105c.207-.059.415-.172.606-.336zm5.586 5.582a3.042 3.042 0 0 1-.586.387v3.887h3v-1.856z" style="fill:#222"/> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/nudity-symbolic.svg��������������������0000664�0000000�0000000�00000000760�15240005042�0027774�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M2.969 1.012v15h4v-4.45l.363-.105c.84-.234 1.637-1.422 1.637-2.945 0-.871-.254-1.649-.637-2.184-.383-.539-.86-.816-1.363-.816a.501.501 0 0 1 0-1c.883 0 1.652.504 2.176 1.234.523.73.824 1.703.824 2.766 0 1.668-.809 3.023-2 3.613v3.887h3v-4c1.383 0 2.5-1.567 2.5-3.5 0-1.934-1.117-3.5-2.5-3.5v-4zm0 0"/> </svg> ����������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/smoking-none-symbolic.svg��������������0000664�0000000�0000000�00000000743�15240005042�0031065�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill-opacity=".35" d="M3 0v.5C3 2.98 5.02 5 7.5 5h3c.832 0 1.5.664 1.5 1.5V7h3v-.5C15 4.02 12.98 2 10.5 2h-3C6.664 2 6 1.332 6 .5V0Zm0 0" style="fill:#222"/> <path d="m1.531.469-1.06 1.06 14 14 1.06-1.06L13 11.938V8h-1v2.938l-1-1V8H9.062L1.532.469zM0 8v4h8.906l-4-4zm14 0v4h1V8z" style="fill:#222"/> </svg> �����������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/smoking-symbolic.svg�������������������0000664�0000000�0000000�00000000655�15240005042�0030132�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill-opacity=".35" d="M3 .012v.5c0 2.48 2.02 4.5 4.5 4.5h3c.832 0 1.5.664 1.5 1.5v.5h3v-.5c0-2.48-2.02-4.5-4.5-4.5h-3c-.836 0-1.5-.668-1.5-1.5v-.5zm0 0" style="fill:#222"/> <path d="M0 8.012v4h11v-4zm12 0v4h1v-4zm2 0v4h1v-4z" style="fill:#222"/> </svg> �����������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/social-info-symbolic.svg���������������0000664�0000000�0000000�00000001755�15240005042�0030670�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M3 2C1.356 2 0 3.356 0 5v6c0 1.645 1.356 3 3 3h10c1.645 0 3-1.355 3-3V5c0-1.644-1.355-3-3-3zm0 2h10c.57 0 1 .43 1 1v6c0 .57-.43 1-1 1H3c-.57 0-1-.43-1-1V5c0-.57.43-1 1-1m7.516.98a.557.557 0 0 0-.555.555c0 .305.25.555.555.555h1.898c.305 0 .55-.25.55-.555a.553.553 0 0 0-.55-.555zM6.5 5A2.507 2.507 0 0 0 4 7.5c0 .332.156.629.281.934C3.551 8.867 3 9.59 3 10.5a.499.499 0 1 0 1 0c0-.664.418-1.21 1.004-1.418a.483.483 0 0 0 .309-.313.496.496 0 0 0-.06-.437A1.501 1.501 0 0 1 5 7.5C5 6.664 5.664 6 6.5 6a1.49 1.49 0 0 1 1.242 2.332.509.509 0 0 0-.058.437c.05.149.164.266.312.313.59.207 1.024.758 1.004 1.406a.5.5 0 0 0 1 .024c.023-.926-.543-1.649-1.285-2.082C8.84 8.129 9 7.832 9 7.5 9 6.125 7.875 5 6.5 5m3.984 1.984a.52.52 0 0 0-.523.52c0 .289.234.523.523.523h1.961a.52.52 0 0 0 .52-.523c0-.29-.23-.52-.52-.52z"/> </svg> �������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/strong-language-none-symbolic.svg������0000664�0000000�0000000�00000000657�15240005042�0032517�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="m1.531.469-1.06 1.06 14 14 1.06-1.06-1.035-1.035a1.5 1.5 0 0 0-1.426-1.426L12.062 11H14V2h-2v8.938l-1-1V9h-.938L9 7.937V7h2V5H9V2H7v3h-.938L5 3.937V2H3.062L1.532.469zM1 5v2h2v2H1v2h2v3h2v-3h2v3h2v-1.879L5.879 9H5v-.879L1.879 5z" style="fill:#222"/> </svg> ���������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/strong-language-symbolic.svg�����������0000664�0000000�0000000�00000000537�15240005042�0031557�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="M3 2v3H1v2h2v2H1v2h2v3h2v-3h2v3h2v-3h2V9H9V7h2V5H9V2H7v3H5V2zm9 0v9h2V2zM5 7h2v2H5zm8 5a1.5 1.5 0 0 0-1.5 1.5 1.5 1.5 0 0 0 3 0A1.5 1.5 0 0 0 13 12" style="fill:#222"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/violence-none-symbolic.svg�������������0000664�0000000�0000000�00000001017�15240005042�0031215�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path d="m1.531.469-1.06 1.06 6.154 6.155L10 11.062a25.453 25.453 0 0 0 .002-.001l4.469 4.468 1.06-1.06-4.363-4.364a25.453 25.453 0 0 0 1.395-1.293L9.027 5.277 7.686 6.623zm12.754.125a1.504 1.504 0 0 0-1.015.441L9.734 4.57l1.414 1.414 2.536-2.535a1.501 1.501 0 1 0 .601-2.855M5.562 8.746l-5.019 5.02c.559.554 3.766 1.096 8.219-1.82z" style="fill:#222"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/ratings/violence-symbolic.svg������������������0000664�0000000�0000000�00000000551�15240005042�0030262�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!-- SPDX-License-Identifier: CC0-1.0 SPDX-FileCopyrightText: 2024 GNOME Foundation, Inc. --> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> <path fill="#222" d="M14.285.594a1.504 1.504 0 0 0-1.015.441L9.734 4.57l1.414 1.414 2.536-2.535a1.501 1.501 0 1 0 .601-2.855M9.027 5.277.543 13.766c.707.703 5.656 1.41 12.02-4.954zm0 0"/> </svg> �������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/regex-symbolic.svg�����������������������������0000664�0000000�0000000�00000001172�15240005042�0026121�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 7.9375 2 l 0.785156 2.980469 l -2.222656 -1.980469 l -1.480469 2.625 l 2.957031 0.886719 l -2.976562 0.863281 l 1.457031 2.667969 l 2.257813 -2 l -0.777344 2.957031 h 3.351562 l -0.71875 -2.871094 l 2.179688 1.972656 l 1.5 -2.644531 l -2.878906 -0.898437 l 2.980468 -0.746094 l -1.476562 -2.644531 l -2.355469 1.90625 l 0.769531 -3.074219 z m -5.4375 9 c -0.828125 0 -1.5 0.671875 -1.5 1.5 s 0.671875 1.5 1.5 1.5 s 1.5 -0.671875 1.5 -1.5 s -0.671875 -1.5 -1.5 -1.5 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/right-large-symbolic.svg�����������������������0000664�0000000�0000000�00000000744�15240005042�0027220�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5.707031 1.292969 l 6 6 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 l -6 6 c -0.390625 0.390625 -1.023437 0.390625 -1.414062 0 s -0.390625 -1.023437 0 -1.414062 l 5.292969 -5.292969 l -5.292969 -5.292969 c -0.390625 -0.390625 -0.390625 -1.023437 0 -1.414062 s 1.023437 -0.390625 1.414062 0 z m 0 0" fill="#222222" fill-rule="evenodd"/></svg> ����������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/sad-computer-symbolic.svg����������������������0000664�0000000�0000000�00000002224�15240005042�0027411�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 12 1 c 1.664062 0 3 1.339844 3 3 v 6 c 0 1.660156 -1.335938 3 -3 3 h -8 c -1.660156 0 -3 -1.339844 -3 -3 v -6 c 0 -1.660156 1.339844 -3 3 -3 z m 0 2 h -8 c -0.554688 0 -1 0.445312 -1 1 v 6 c 0 0.554688 0.445312 1 1 1 h 8 c 0.554688 0 1 -0.445312 1 -1 v -6 c 0 -0.554688 -0.445312 -1 -1 -1 z m 0 0"/><path d="m 8 14 c -5 0 -5 1 -5 1 c 0 1 1 1 1 1 h 8 c 1 0 1 -1 1 -1 s 0 -1 -5 -1 z m 0 0"/><path d="m 6 4 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 s 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 4 0 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 s 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m -2 3 c -1.429688 0 -2.75 0.761719 -3.464844 2 c -0.136718 0.238281 -0.054687 0.546875 0.183594 0.683594 c 0.238281 0.136718 0.546875 0.054687 0.683594 -0.183594 c 0.535156 -0.929688 1.523437 -1.5 2.597656 -1.5 s 2.0625 0.570312 2.597656 1.5 c 0.136719 0.238281 0.445313 0.320312 0.683594 0.183594 c 0.238281 -0.136719 0.320312 -0.445313 0.183594 -0.683594 c -0.714844 -1.238281 -2.035156 -2 -3.464844 -2 z m 0 0"/></g></svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/school-symbolic.svg����������������������������0000664�0000000�0000000�00000002013�15240005042�0026271�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 6.96875 2.96875 l -6.46875 3.5 l 6.5 4.09375 l 5.800781 -3.53125 h 0.203125 v 2.871094 c 0 0.03125 -0.003906 0.066406 -0.003906 0.101562 s 0 0.070313 0.003906 0.105469 v 0.914063 c 0.03125 0.695312 0.445313 1.210937 0.804688 1.554687 c 0.359375 0.339844 0.714844 0.535156 0.714844 0.535156 l 0.484374 -0.875 s -0.25 -0.140625 -0.511718 -0.386719 c -0.253906 -0.242187 -0.460938 -0.550781 -0.488282 -0.84375 c 0.554688 -0.003906 1 -0.453124 0.996094 -1.003906 c 0 -0.554687 -0.445312 -1.003906 -1 -1.003906 v -2.96875 h -1.3125 z m 0.03125 3.03125 c 0.550781 0 1 0.222656 1 0.5 s -0.449219 0.5 -1 0.5 s -1 -0.222656 -1 -0.5 s 0.449219 -0.5 1 -0.5 z m -3.96875 3.421875 c -0.011719 0.089844 -0.03125 0.179687 -0.03125 0.273437 c 0 1.824219 1.789062 3.304688 4 3.304688 s 4 -1.480469 4 -3.304688 c 0 -0.070312 -0.027344 -0.136718 -0.03125 -0.207031 l -3.96875 2.511719 z m 0 0" fill="#222222"/></svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/server-pick-symbolic.svg�����������������������0000664�0000000�0000000�00000001652�15240005042�0027244�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 3 0 c -1.109375 0 -2 0.890625 -2 2 v 7 c 0 1.109375 0.890625 2 2 2 h 1 v 1 h -3 v 1 h 8.671875 l 1 -1 h -5.671875 v -1 h 1 c 1.105469 0 2 -0.890625 2 -2 v -7 c 0 -1.109375 -0.894531 -2 -2 -2 z m 8 0 c -1.109375 0 -2 0.890625 -2 2 v 7 c 0 1.109375 0.890625 2 2 2 h 3 c 1.105469 0 2 -0.890625 2 -2 v -7 c 0 -1.109375 -0.894531 -2 -2 -2 z m -8 2 h 3 v 1 h -3 z m 8 0 h 3 v 1 h -3 z m -8 2 h 3 v 5 h -3 z m 8 0 h 3 v 5 h -3 z m -7 1 v 1 h 1 v -1 z m 8 0 v 1 h 1 v -1 z m 0.503906 7 c -0.257812 0 -0.515625 0.097656 -0.710937 0.292969 l -2 2 c -0.183594 0.1875 -0.289063 0.441406 -0.285157 0.707031 h -0.007812 v 1 h 6.003906 v -1 h -0.007812 c 0.003906 -0.265625 -0.101563 -0.519531 -0.285156 -0.707031 l -2 -2 c -0.195313 -0.195313 -0.453126 -0.292969 -0.707032 -0.292969 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/share-alt-symbolic.svg�������������������������0000664�0000000�0000000�00000001571�15240005042�0026672�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 5.96875 7.96875 c 0 1.640625 -1.328125 2.96875 -2.96875 2.96875 s -2.96875 -1.328125 -2.96875 -2.96875 s 1.328125 -2.96875 2.96875 -2.96875 s 2.96875 1.328125 2.96875 2.96875 z m 0 0"/><path d="m 15.9375 12.96875 c 0 1.640625 -1.328125 2.96875 -2.96875 2.96875 s -2.96875 -1.328125 -2.96875 -2.96875 s 1.328125 -2.96875 2.96875 -2.96875 s 2.96875 1.328125 2.96875 2.96875 z m 0 0"/><path d="m 15.9375 2.96875 c 0 1.640625 -1.328125 2.96875 -2.96875 2.96875 s -2.96875 -1.328125 -2.96875 -2.96875 s 1.328125 -2.96875 2.96875 -2.96875 s 2.96875 1.328125 2.96875 2.96875 z m 0 0"/><path d="m 12.613281 2.144531 l -11.867187 5.78125 l 11.855468 5.96875 l 0.898438 -1.789062 l -8.246094 -4.148438 l 8.234375 -4.011719 z m 0 0"/></g></svg> ���������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/share-symbolic.svg�����������������������������0000664�0000000�0000000�00000002175�15240005042�0026115�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 4 5.992188 h 1 c 0.257812 0 0.527344 -0.128907 0.71875 -0.3125 l 1.28125 -1.28125 v 6.59375 h 2 v -6.59375 l 1.28125 1.28125 c 0.191406 0.183593 0.410156 0.3125 0.71875 0.3125 h 1 v -1 c 0 -0.308594 -0.089844 -0.550782 -0.28125 -0.75 l -3.71875 -3.65625 l -3.71875 3.65625 c -0.191406 0.199218 -0.28125 0.441406 -0.28125 0.75 z m 0 0"/><path d="m 1.003906 11.964844 c 0 1.664062 1.371094 3.035156 3.035156 3.035156 h 7.917969 c 1.664063 0 3.03125 -1.371094 3.03125 -3.035156 v -1.972656 h -2 v 1.972656 c 0 0.589844 -0.441406 1.035156 -1.03125 1.035156 h -7.917969 c -0.589843 0 -1.035156 -0.445312 -1.035156 -1.035156 v -1.972656 h -2 z m 0 0"/><path d="m 4.039062 6.960938 c -1.664062 0 -3.035156 1.367187 -3.035156 3.03125 v 1.976562 h 2 v -1.976562 c 0 -0.589844 0.445313 -1.03125 1.035156 -1.03125 h 0.960938 v -2 z m 6.960938 0 v 2 h 0.957031 c 0.589844 0 1.03125 0.441406 1.03125 1.03125 v 1.976562 h 2 v -1.976562 c 0 -1.664063 -1.367187 -3.03125 -3.03125 -3.03125 z m 0 0"/></g></svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/shoe-box-symbolic.svg��������������������������0000664�0000000�0000000�00000001170�15240005042�0026531�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 2 1 c -1.109375 0 -2 0.890625 -2 2 v 2 c 0 0.75 0.40625 1.398438 1.015625 1.742188 c -0.011719 0.085937 -0.015625 0.171874 -0.015625 0.257812 v 7 c 0 1.109375 0.890625 2 2 2 h 10 c 1.109375 0 2 -0.890625 2 -2 v -7 c 0 -0.085938 -0.003906 -0.171875 -0.015625 -0.257812 c 0.609375 -0.34375 1.015625 -0.992188 1.015625 -1.742188 v -2 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0 2 h 12 v 2 h -12 z m 1 4 h 10 v 7 h -10 z m 0 0" fill="#2e3436"/><path d="m 6 8 h 4 v 1 h -4 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/sidebar-show-symbolic.svg����������������������0000664�0000000�0000000�00000001142�15240005042�0027373�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <g fill="#2e3436"> <path d="m 6.5 14 v -12 h -5 v 12 z m 0 0" fill-opacity="0.34902"/> <path d="m 3 1 c -1.644531 0 -3 1.355469 -3 3 v 8 c 0 1.644531 1.355469 3 3 3 h 10 c 1.644531 0 3 -1.355469 3 -3 v -8 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 10 c 0.570312 0 1 0.429688 1 1 v 8 c 0 0.570312 -0.429688 1 -1 1 h -10 c -0.570312 0 -1 -0.429688 -1 -1 v -8 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/> <path d="m 6 2 h 1 v 12 h -1 z m 0 0"/> </g> </svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/sliders-horizontal-symbolic.svg����������������0000664�0000000�0000000�00000001767�15240005042�0030655�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 11.5 1 c -1.921875 0 -3.5 1.578125 -3.5 3.5 s 1.578125 3.5 3.5 3.5 s 3.5 -1.578125 3.5 -3.5 s -1.578125 -3.5 -3.5 -3.5 z m 0 2 c 0.839844 0 1.5 0.660156 1.5 1.5 s -0.660156 1.5 -1.5 1.5 s -1.5 -0.660156 -1.5 -1.5 s 0.660156 -1.5 1.5 -1.5 z m 0 0"/><path d="m 4.5 8 c -1.921875 0 -3.5 1.578125 -3.5 3.5 s 1.578125 3.5 3.5 3.5 c 1.386719 0 2.59375 -0.820312 3.15625 -2 h 5.84375 c 0.832031 0 1.5 -0.667969 1.5 -1.5 s -0.667969 -1.5 -1.5 -1.5 h -5.84375 c -0.5625 -1.179688 -1.769531 -2 -3.15625 -2 z m 0 2 c 0.839844 0 1.5 0.660156 1.5 1.5 s -0.660156 1.5 -1.5 1.5 s -1.5 -0.660156 -1.5 -1.5 s 0.660156 -1.5 1.5 -1.5 z m 0 0"/><path d="m 2.5 3 c -0.832031 0 -1.5 0.667969 -1.5 1.5 s 0.667969 1.5 1.5 1.5 h 4.765625 c -0.171875 -0.480469 -0.261719 -0.988281 -0.265625 -1.5 c 0 -0.511719 0.09375 -1.019531 0.265625 -1.5 z m 0 0" fill-opacity="0.34902"/></g></svg> ���������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/smartphone2-symbolic.svg�����������������������0000664�0000000�0000000�00000001016�15240005042�0027246�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5 0 c -1.644531 0 -3 1.355469 -3 3 v 10 c 0 1.644531 1.355469 3 3 3 h 6 c 1.644531 0 3 -1.355469 3 -3 v -10 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 1 c 0 0.554688 0.445312 1 1 1 h 2 c 0.554688 0 1 -0.445312 1 -1 h 1 c 0.570312 0 1 0.429688 1 1 v 10 c 0 0.554688 -0.445312 1 -1 1 h -6 c -0.554688 0 -1 -0.445312 -1 -1 v -10 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/software-update-available-symbolic.svg���������0000664�0000000�0000000�00000002151�15240005042�0032035�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 8 0 c -0.257812 0 -0.511719 0.0976562 -0.707031 0.292969 l -1.707031 1.707031 h -2.585938 c -0.550781 0 -1 0.449219 -1 1 v 2.585938 l -1.707031 1.707031 c -0.3906252 0.390625 -0.3906252 1.023437 0 1.414062 l 1.707031 1.707031 v 2.585938 c 0 0.550781 0.449219 1 1 1 h 2.585938 l 1.707031 1.707031 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 l 1.707031 -1.707031 h 2.585938 c 0.550781 0 1 -0.449219 1 -1 v -2.585938 l 1.707031 -1.707031 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 l -1.707031 -1.707031 v -2.585938 c 0 -0.550781 -0.449219 -1 -1 -1 h -2.585938 l -1.707031 -1.707031 c -0.195312 -0.1953128 -0.449219 -0.292969 -0.707031 -0.292969 z m 0 5 c 0.257812 0 0.511719 0.097656 0.707031 0.292969 l 2 2 c 0.183594 0.1875 0.289063 0.441406 0.285157 0.707031 h 0.007812 v 1 h -2 v 2 h -2 v -2 h -2 v -1 h 0.007812 c -0.003906 -0.265625 0.101563 -0.519531 0.285157 -0.707031 l 2 -2 c 0.195312 -0.195313 0.449219 -0.292969 0.707031 -0.292969 z m 0 0" fill="#2e3436"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/square-filled-symbolic.svg���������������������0000664�0000000�0000000�00000000476�15240005042�0027552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 13 2 h -10 c -0.550781 0 -1 0.449219 -1 1 v 10 c 0 0.550781 0.449219 1 1 1 h 10 c 0.550781 0 1 -0.449219 1 -1 v -10 c 0 -0.550781 -0.449219 -1 -1 -1 z m 0 0" fill="#222222"/></svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/star-outline-rounded-symbolic.svg��������������0000664�0000000�0000000�00000002632�15240005042�0031075�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 0 c -0.429688 0 -0.8125 0.273438 -0.949219 0.683594 l -1.449219 4.339844 l -4.589843 -0.015626 c -0.4375 0 -0.828125 0.28125 -0.9609378 0.695313 c -0.1328124 0.417969 0.0195313 0.871094 0.3789068 1.125 l 3.625 2.554687 l -1.5 4.285157 c -0.140626 0.40625 -0.011719 0.855469 0.328124 1.121093 c 0.335938 0.261719 0.804688 0.285157 1.164063 0.050782 l 4.003906 -2.59375 l 3.898438 2.589844 c 0.355469 0.234374 0.824219 0.21875 1.164062 -0.046876 c 0.339844 -0.261718 0.472657 -0.714843 0.332031 -1.117187 l -1.503906 -4.289063 l 3.644532 -2.578124 c 0.351562 -0.25 0.503906 -0.703126 0.371093 -1.113282 c -0.128906 -0.414062 -0.511719 -0.695312 -0.945312 -0.699218 l -4.660157 -0.015626 l -1.402343 -4.285156 c -0.132813 -0.410156 -0.515625 -0.68749975 -0.949219 -0.691406 z m -0.007812 4.1875 l 0.683593 2.097656 c 0.136719 0.410156 0.515625 0.6875 0.945313 0.6875 l 2.253906 0.007813 l -1.703125 1.203125 c -0.363281 0.257812 -0.511719 0.726562 -0.363281 1.148437 l 0.765625 2.191407 l -1.964844 -1.304688 c -0.332031 -0.21875 -0.761719 -0.222656 -1.097656 -0.007812 l -2.101563 1.363281 l 0.785156 -2.242188 c 0.148438 -0.421875 -0.003906 -0.890625 -0.367187 -1.148437 l -1.652344 -1.164063 l 2.144531 0.007813 c 0.429688 0 0.816407 -0.277344 0.949219 -0.683594 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/starred-symbolic.svg���������������������������0000664�0000000�0000000�00000001317�15240005042�0026454�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 8 0 c -0.429688 0 -0.8125 0.273438 -0.949219 0.683594 l -1.449219 4.339844 l -4.589843 -0.015626 c -0.980469 -0.003906 -1.382813 1.257813 -0.582031 1.820313 l 3.625 2.554687 l -1.5 4.285157 c -0.316407 0.902343 0.6875 1.691406 1.492187 1.171875 l 4.003906 -2.59375 l 3.894531 2.585937 c 0.800782 0.53125 1.816407 -0.257812 1.5 -1.160156 l -1.503906 -4.289063 l 3.644532 -2.578124 c 0.789062 -0.5625 0.394531 -1.808594 -0.574219 -1.8125 l -4.660157 -0.015626 l -1.402343 -4.285156 c -0.132813 -0.410156 -0.515625 -0.68749975 -0.949219 -0.691406 z m 0 0" fill="#2e3436"/> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/thumbs-up-outline-symbolic.svg�����������������0000664�0000000�0000000�00000003270�15240005042�0030411�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 0 15 c 0 0.550781 0.449219 1 1 1 h 11 c 1.011719 0 1.78125 -0.8125 1.980469 -1.800781 l 1 -4.96875 c 0.011719 -0.066407 0.019531 -0.132813 0.019531 -0.199219 v -2.0625 c 0 -1.074219 -0.847656 -2 -2 -2 h -3.402344 l 0.996094 1.113281 l 0.398438 -3.46875 l -0.027344 0.144531 c 0.375 -1.394531 -0.664063 -2.757812 -1.964844 -2.757812 h -2 c -0.398438 0 -0.757812 0.234375 -0.917969 0.601562 l -3.039062 7 l 0.914062 -0.601562 h -2.957031 c -0.550781 0 -1 0.449219 -1 1 z m 3.957031 -6 c 0.398438 0 0.761719 -0.234375 0.917969 -0.601562 l 3.042969 -7 l -0.917969 0.601562 h 2 c -0.039062 0 -0.054688 -0.007812 -0.054688 -0.007812 s 0 0 0.003907 0.003906 c 0.003906 0 0.003906 0.003906 0.007812 0.003906 c 0 0 0.003907 0.003906 0.003907 0.003906 c 0.003906 0 0.003906 0.003906 0.007812 0.003906 c 0.003906 0.003907 0.007812 0.007813 0.011719 0.007813 c 0.046875 0.046875 0.09375 0.078125 0.054687 0.226563 c -0.015625 0.046874 -0.023437 0.09375 -0.027344 0.144531 l -0.402343 3.46875 c -0.03125 0.28125 0.058593 0.566406 0.246093 0.777343 c 0.191407 0.214844 0.460938 0.335938 0.746094 0.335938 h 3.402344 c 0.03125 0 0.011719 0 0.003906 -0.007812 c -0.007812 -0.003907 -0.007812 -0.007813 -0.003906 0 v 0.007812 v 2.0625 l 0.019531 -0.199219 l -1 4.972657 c -0.027343 0.128906 -0.078125 0.191406 -0.09375 0.207031 c -0.003906 0.003906 -0.003906 0.003906 -0.003906 0.003906 s -0.003906 0 -0.003906 0.003906 c 0 0 0.003906 0 0.003906 -0.003906 h 0.003906 s 0 -0.003906 0.003907 -0.003906 c 0.011718 -0.003907 0.039062 -0.011719 0.070312 -0.011719 h -11 l 1 1 v -7 l -1 1 z m 0 0"/></svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/timer-sand-symbolic.svg������������������������0000664�0000000�0000000�00000001057�15240005042�0027054�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 0.0195312 0.996094 v 2 h 1.9999998 v 2.46875 l 3 2.5 v 0.0625 l -3 2.5 v 2.46875 h -1.9999998 v 2 h 14.9999998 v -2 h -2 v -2.46875 l -3 -2.5 v -0.0625 l 3 -2.5 v -2.46875 h 2 v -2 z m 3.9999998 2 h 7 v 1.53125 l -3 2.5 v 1.9375 l 3 2.5 v 1.53125 h -1 l -2.5 -2.1875 l -2.5 2.1875 h -1 v -1.53125 l 3 -2.5 v -1.9375 l -3 -2.5 z m 0 0"/><path d="m 6.019531 4.996094 h 3 l -1.5 1.3125 z m 0 0"/></g></svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/translations-symbolic.svg����������������������0000664�0000000�0000000�00000001206�15240005042�0027526�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 2 1 v 14 h 2 v -5 h 2.382812 l 0.722657 1.445312 c 0.171875 0.339844 0.515625 0.554688 0.894531 0.554688 h 5 c 0.554688 0 1 -0.449219 1 -1 v -7 c 0 -0.550781 -0.445312 -1 -1 -1 h -3.378906 l -0.726563 -1.449219 c -0.167969 -0.335937 -0.515625 -0.550781 -0.894531 -0.550781 z m 2 2 h 3.382812 l 0.722657 1.445312 c 0.171875 0.339844 0.515625 0.554688 0.894531 0.554688 h 3 v 5 h -3.378906 l -0.726563 -1.449219 c -0.167969 -0.335937 -0.515625 -0.550781 -0.894531 -0.550781 h -3 z m 0 0" fill="#222222"/></svg> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/user-trash-symbolic.svg������������������������0000664�0000000�0000000�00000002050�15240005042�0027100�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <g fill="#2e3436"> <path d="m 1 3 h 14 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0"/> <path d="m 4 4 v -1.5 c 0 -1.386719 1.113281 -2.5 2.5 -2.5 h 2.980469 c 1.382812 0 2.5 1.113281 2.5 2.5 v 1.5 h -2 v -1.5 c 0 -0.269531 -0.230469 -0.5 -0.5 -0.5 h -2.980469 c -0.269531 0 -0.5 0.230469 -0.5 0.5 v 1.5 z m 0 0"/> <path d="m 4 4 v 9 c 0 0.546875 0.453125 1 1 1 h 6 c 0.546875 0 1 -0.453125 1 -1 v -9 h 2 v 9 c 0 1.660156 -1.339844 3 -3 3 h -6 c -1.660156 0 -3 -1.339844 -3 -3 v -9 z m 0 0"/> <path d="m 7 7 v 5 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -5 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 s 0.5 0.222656 0.5 0.5 z m 0 0"/> <path d="m 10 7 v 5 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -5 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 s 0.5 0.222656 0.5 0.5 z m 0 0"/> </g> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/verified-checkmark-symbolic.svg����������������0000664�0000000�0000000�00000003061�15240005042�0030531�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5.210938 1.269531 c 0.703124 -0.808593 1.71875 -1.269531 2.789062 -1.269531 c 1.113281 0 2.109375 0.492188 2.785156 1.269531 c 1.070313 -0.074219 2.117188 0.316407 2.871094 1.074219 c 0.757812 0.753906 1.148438 1.800781 1.074219 2.867188 c 0.808593 0.703124 1.269531 1.71875 1.269531 2.789062 s -0.464844 2.085938 -1.269531 2.789062 c 0.074219 1.066407 -0.316407 2.113282 -1.074219 2.867188 c -0.753906 0.757812 -1.800781 1.148438 -2.871094 1.074219 c -0.699218 0.808593 -1.714844 1.269531 -2.785156 1.269531 s -2.085938 -0.460938 -2.789062 -1.269531 c -1.066407 0.074219 -2.113282 -0.316407 -2.867188 -1.074219 c -0.757812 -0.753906 -1.148438 -1.800781 -1.074219 -2.867188 c -0.808593 -0.703124 -1.269531 -1.71875 -1.269531 -2.789062 c 0 -1.113281 0.492188 -2.109375 1.269531 -2.789062 c -0.074219 -1.066407 0.316407 -2.113282 1.074219 -2.867188 c 0.753906 -0.757812 1.800781 -1.148438 2.867188 -1.074219 z m 5.75 5.242188 c 0.136718 -0.179688 0.160156 -0.414063 0.070312 -0.621094 c -0.089844 -0.203125 -0.285156 -0.339844 -0.507812 -0.359375 c -0.222657 -0.023438 -0.4375 0.082031 -0.5625 0.265625 l -2.65625 3.714844 l -1.332032 -1.332031 c -0.242187 -0.226563 -0.621094 -0.21875 -0.855468 0.015624 c -0.234376 0.234376 -0.238282 0.613282 -0.015626 0.855469 l 1.847657 1.84375 c 0.128906 0.128907 0.304687 0.195313 0.484375 0.179688 c 0.179687 -0.015625 0.347656 -0.109375 0.453125 -0.253907 z m 0 0" fill="#222222" fill-rule="evenodd"/></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/video-reel2-symbolic.svg�����������������������0000664�0000000�0000000�00000000771�15240005042�0027130�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 0 0 v 16 h 2 v -2 h 12 v 2 h 2 v -16 h -2 v 2 h -12 v -2 z m 2 4 h 12 v 8 h -12 z m 0 0"/><path d="m 7 5 c 0.195312 0 0.386719 0.058594 0.554688 0.167969 l 3 2 c 0.589843 0.394531 0.589843 1.269531 0 1.664062 l -3 2 c -0.167969 0.109375 -0.359376 0.167969 -0.554688 0.167969 c 0 0 -1.003906 0 -1 -1 v -4 c -0.003906 -1 1 -1 1 -1 z m 0 0"/></g></svg> �������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/view-more-horizontal-symbolic.svg��������������0000664�0000000�0000000�00000001027�15240005042�0031107�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 2 6.007812 c -1.105469 0 -2 0.894532 -2 2 c 0 1.101563 0.894531 2 2 2 s 2 -0.898437 2 -2 c 0 -1.105468 -0.894531 -2 -2 -2 z m 6 0 c -1.105469 0 -2 0.894532 -2 2 c 0 1.101563 0.894531 2 2 2 s 2 -0.898437 2 -2 c 0 -1.105468 -0.894531 -2 -2 -2 z m 6 0 c -1.105469 0 -2 0.894532 -2 2 c 0 1.101563 0.894531 2 2 2 s 2 -0.898437 2 -2 c 0 -1.105468 -0.894531 -2 -2 -2 z m 0 0" fill="#2e3436"/> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/view-more-symbolic.svg�������������������������0000664�0000000�0000000�00000000763�15240005042�0026726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> <path d="m 7.996094 0 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 6 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 6 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 0" fill="#2e3436"/> </svg> �������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/we-love-games-symbolic.svg���������������������0000664�0000000�0000000�00000017135�15240005042�0027465�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg id="svg1" version="1.1" viewBox="0 0 102.29 30.745" xmlns="http://www.w3.org/2000/svg"> <g id="layer1" transform="translate(-50.535 -124.88)" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2"> <path id="path13" d="m75.207 136.27c-0.24511-9e-3 -0.48771-4e-5 -0.72656 0.0176h-18.209c-1.9099-0.0372-3.5946 1.4141-3.8398 3.3086-0.62078 4.1593-1.2425 8.3192-1.8633 12.479a0.79383 0.79383 0 0 0-2e-3 0.0156c-0.13042 1.0125 0.20554 1.9266 0.80469 2.5234 0.59914 0.5968 1.402 0.89753 2.2168 0.97461 0.81475 0.0771 1.6609-0.0668 2.4004-0.46289 0.72402-0.38777 1.3494-1.0492 1.6094-1.9356 0.33568-0.76614 0.66792-1.5276 1.0859-2.1074 0.42483-0.5893 0.89456-0.97857 1.6074-1.1465 1.565-0.26769 3.2645-0.10387 5.0586-0.15429h5.1934a0.79383 0.79383 0 0 0 0.03711-2e-3c0.83257-0.0396 1.4807 0.25991 2.0586 0.78907s1.0482 1.3015 1.3535 2.1016c0.28888 0.79106 0.76384 1.5517 1.4453 2.1191 0.65785 0.5478 1.5471 0.87577 2.5195 0.79492 2.1206 0.19891 3.7997-1.8958 3.2383-3.9141-0.59989-4.0191-1.2009-8.0376-1.8008-12.057-0.14017-1.2965-0.9388-2.2547-1.8984-2.7617-0.71397-0.37725-1.5103-0.55253-2.2891-0.58203zm-0.07813 1.5898c0.58728 0.0241 1.1751 0.15579 1.627 0.39453 0.60243 0.31831 0.97571 0.7446 1.0605 1.5293a0.79383 0.79383 0 0 0 0.0039 0.0312c0.6037 4.0447 1.2088 8.09 1.8125 12.135a0.79383 0.79383 0 0 0 0.02539 0.11328c0.29057 0.95333-0.58338 2.0786-1.5859 1.957a0.79383 0.79383 0 0 0-0.18945 0c-0.56664 0.0675-1.0131-0.10425-1.4297-0.45117-0.41662-0.34693-0.76737-0.88529-0.97266-1.4512a0.79383 0.79383 0 0 0-0.0039-0.0117c-0.37416-0.98038-0.94545-1.9579-1.7656-2.709-0.82017-0.75106-1.9262-1.2639-3.2051-1.2031h-5.1562a0.79383 0.79383 0 0 0-0.02344 0c-1.6708 0.0488-3.4707-0.14684-5.3398 0.17968a0.79383 0.79383 0 0 0-0.04102 8e-3c-1.1451 0.26399-1.9751 0.97758-2.5488 1.7734-0.57373 0.79584-0.93805 1.6816-1.2754 2.4512a0.79383 0.79383 0 0 0-0.03906 0.10937c-0.12671 0.46476-0.41801 0.78371-0.84375 1.0117s-0.98373 0.33009-1.5 0.28125c-0.51627-0.0488-0.9717-0.24621-1.2461-0.51953-0.2744-0.27332-0.42834-0.59929-0.35156-1.1953 0.62078-4.1593 1.2425-8.3192 1.8633-12.479a0.79383 0.79383 0 0 0 2e-3 -0.0156c0.13453-1.0394 1.1865-1.9442 2.2344-1.9238a0.79383 0.79383 0 0 0 0.01563 0h18.225a0.79383 0.79383 0 0 0 0.06641-4e-3c0.19057-0.016 0.38627-0.0197 0.58203-0.0117z" fill="currentColor" stop-color="#000000"/> <path id="path11" d="m55.99 142.11a0.79375 0.79375 0 0 0-0.79297 0.79492 0.79375 0.79375 0 0 0 0.79297 0.79297h1.8516v-1.5879zm3.4395 0v1.5879h1.8516a0.79375 0.79375 0 0 0 0.79492-0.79297 0.79375 0.79375 0 0 0-0.79492-0.79492z" fill="currentColor" stop-color="#000000"/> <path id="path9" d="m58.637 139.46a0.79375 0.79375 0 0 0-0.79492 0.79297v5.291a0.79375 0.79375 0 0 0 0.79492 0.79492 0.79375 0.79375 0 0 0 0.79297-0.79492v-5.291a0.79375 0.79375 0 0 0-0.79297-0.79297z" fill="currentColor" stop-color="#000000"/> <path id="path30" d="m111.82 143.43a0.79375 0.79375 0 0 0-0.79493 0.79297 0.79375 0.79375 0 0 0 0.79493 0.79297h1.8516v-1.5859zm3.4394 0v1.5859h1.8516a0.79375 0.79375 0 0 0 0.79297-0.79297 0.79375 0.79375 0 0 0-0.79297-0.79297z" fill="currentColor" stop-color="#000000"/> <path id="path28" d="m114.46 140.79a0.79375 0.79375 0 0 0-0.79297 0.79297v5.293a0.79375 0.79375 0 0 0 0.79297 0.79297 0.79375 0.79375 0 0 0 0.79492-0.79297v-5.293a0.79375 0.79375 0 0 0-0.79492-0.79297z" fill="currentColor" stop-color="#000000"/> <path id="path8" d="m69.881 141.71a1.1906 1.1906 0 0 0-1.1914 1.1895 1.1906 1.1906 0 0 0 1.1914 1.1914 1.1906 1.1906 0 0 0 1.1914-1.1914 1.1906 1.1906 0 0 0-1.1914-1.1895z" fill="currentColor" stroke-width="1.5875"/> <path id="path7" d="m74.643 141.71a1.1906 1.1906 0 0 0-1.1895 1.1895 1.1906 1.1906 0 0 0 1.1895 1.1914 1.1906 1.1906 0 0 0 1.1914-1.1914 1.1906 1.1906 0 0 0-1.1914-1.1895z" fill="currentColor" stroke-width="1.5875"/> <path id="path6" d="m72.262 139.33a1.1906 1.1906 0 0 0-1.1895 1.1894 1.1906 1.1906 0 0 0 1.1895 1.1914 1.1906 1.1906 0 0 0 1.1914-1.1914 1.1906 1.1906 0 0 0-1.1914-1.1894z" fill="currentColor" stroke-width="6"/> <path id="path5" d="m72.262 144.09a1.1906 1.1906 0 0 0-1.1895 1.1914 1.1906 1.1906 0 0 0 1.1895 1.1894 1.1906 1.1906 0 0 0 1.1914-1.1894 1.1906 1.1906 0 0 0-1.1914-1.1914z" fill="currentColor" stroke-width="6"/> <path id="path27" d="m111.82 134.97c-1.8918 0-3.4395 1.5476-3.4395 3.4394v13.758c0 1.8918 1.5477 3.4394 3.4395 3.4394h37.57c1.8918 0 3.4395-1.5476 3.4394-3.4394v-13.758c0-1.8918-1.5476-3.4394-3.4394-3.4394zm0 1.5859h37.57c1.0398 0 1.8516 0.81373 1.8516 1.8535v13.758c0 1.0398-0.81178 1.8516-1.8516 1.8516h-37.57c-1.0398 0-1.8535-0.81178-1.8535-1.8516v-13.758c0-1.0398 0.81374-1.8535 1.8535-1.8535z" fill="currentColor" stop-color="#000000"/> <path id="path26" d="m121.34 137.35c-1.3055 0-2.3809 1.0754-2.3809 2.3809v11.113c0 1.3055 1.0754 2.3809 2.3809 2.3809h18.521c1.3055 0 2.3809-1.0754 2.3809-2.3809v-11.113c0-1.3055-1.0754-2.3809-2.3809-2.3809zm0 1.5879h18.521c0.45346 0 0.79297 0.33952 0.79297 0.79297v11.113c0 0.45346-0.33951 0.79297-0.79297 0.79297h-18.521c-0.45347 0-0.79297-0.3395-0.79297-0.79297v-11.113c0-0.45346 0.3395-0.79297 0.79297-0.79297z" fill="currentColor" stop-color="#000000"/> <path id="path25" d="m144.49 142.77a1.1906 1.1906 0 0 0-1.1914 1.1894 1.1906 1.1906 0 0 0 1.1914 1.1914 1.1906 1.1906 0 0 0 1.1894-1.1914 1.1906 1.1906 0 0 0-1.1894-1.1894z" fill="currentColor" stroke-width="1.5875"/> <path id="path24" d="m149.26 142.77a1.1906 1.1906 0 0 0-1.1914 1.1894 1.1906 1.1906 0 0 0 1.1914 1.1914 1.1906 1.1906 0 0 0 1.1914-1.1914 1.1906 1.1906 0 0 0-1.1914-1.1894z" fill="currentColor" stroke-width="1.5875"/> <path id="path23" d="m146.88 140.39a1.1906 1.1906 0 0 0-1.1914 1.1914 1.1906 1.1906 0 0 0 1.1914 1.1914 1.1906 1.1906 0 0 0 1.1894-1.1914 1.1906 1.1906 0 0 0-1.1894-1.1914z" fill="currentColor" stroke-width="6"/> <path id="path22" d="m146.88 145.15a1.1906 1.1906 0 0 0-1.1914 1.1894 1.1906 1.1906 0 0 0 1.1914 1.1914 1.1906 1.1906 0 0 0 1.1894-1.1914 1.1906 1.1906 0 0 0-1.1894-1.1894z" fill="currentColor" stroke-width="6"/> <path id="path21" d="m87.43 124.88c-1.7044 0-3.1035 1.4937-3.1035 3.3144v24.115c0 1.8208 1.3991 3.3144 3.1035 3.3144h11.703c3.6216-2e-5 6.5742-3.1525 6.5742-7.0215v-20.408c0-1.8208-1.3992-3.3144-3.1035-3.3144zm0 1.6406h15.174c0.87432 0 1.5664 0.7398 1.5664 1.6738v20.408c0 2.9822-2.2456 5.3809-5.0371 5.3809h-11.703c-0.87432 0-1.5664-0.7398-1.5664-1.6738v-24.115c0-0.93403 0.69209-1.6738 1.5664-1.6738z" fill="currentColor" stop-color="#000000"/> <path id="path19" d="m88.27 145.28a0.79375 0.79375 0 0 0-0.79297 0.79297 0.79375 0.79375 0 0 0 0.79297 0.79492h1.8516v-1.5879zm3.4395 0v1.5879h1.8516a0.79375 0.79375 0 0 0 0.79492-0.79492 0.79375 0.79375 0 0 0-0.79492-0.79297z" fill="currentColor" stop-color="#000000"/> <path id="path17" d="m90.916 142.64a0.79375 0.79375 0 0 0-0.79492 0.79492v5.291a0.79375 0.79375 0 0 0 0.79492 0.79297 0.79375 0.79375 0 0 0 0.79297-0.79297v-5.291a0.79375 0.79375 0 0 0-0.79297-0.79492z" fill="currentColor" stop-color="#000000"/> <path id="path16" d="m98.059 145.94a1.1906 1.1906 0 0 0-1.1895 1.1914 1.1906 1.1906 0 0 0 1.1895 1.1895 1.1906 1.1906 0 0 0 1.1914-1.1895 1.1906 1.1906 0 0 0-1.1914-1.1914z" fill="currentColor" stroke-width="1.5875"/> <path id="path15" d="m100.97 143.56a1.1906 1.1906 0 0 0-1.1895 1.1914 1.1906 1.1906 0 0 0 1.1895 1.1895 1.1906 1.1906 0 0 0 1.1914-1.1895 1.1906 1.1906 0 0 0-1.1914-1.1914z" fill="currentColor" stroke-width="1.5875"/> <path id="path14" d="m89.063 128.09c-0.86574 0-1.5859 0.7202-1.5859 1.5859v8.4668c0 0.86575 0.72018 1.5879 1.5859 1.5879h11.906c0.86575 0 1.5879-0.72213 1.5879-1.5879v-8.4668c0-0.86575-0.72215-1.5859-1.5879-1.5859zm0 1.5859h11.906v8.4668h-11.906z" fill="currentColor" stop-color="#000000"/> </g> </svg> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/zoom-minus-symbolic.svg������������������������0000664�0000000�0000000�00000001337�15240005042�0027127�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 10.875 10.0625 c -0.8125 0.148438 -1.105469 1.160156 -0.5 1.71875 l 3 3 c 0.957031 0.9375 2.363281 -0.5 1.40625 -1.4375 l -3 -3 c -0.234375 -0.238281 -0.578125 -0.347656 -0.90625 -0.28125 z m 0 0"/><path d="m 6.570312 0.0625 c -3.578124 0 -6.4999995 2.921875 -6.4999995 6.5 s 2.9218755 6.5 6.4999995 6.5 c 3.578126 0 6.5 -2.921875 6.5 -6.5 s -2.921874 -6.5 -6.5 -6.5 z m 0 2 c 2.496094 0 4.5 2.003906 4.5 4.5 c 0 2.5 -2.003906 4.5 -4.5 4.5 c -2.496093 0 -4.5 -2 -4.5 -4.5 c 0 -2.496094 2.003907 -4.5 4.5 -4.5 z m 0 0"/><path d="m 3.570312 5.5625 v 2 h 6 v -2 z m 0 0"/></g></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/icons/scalable/actions/zoom-plus-symbolic.svg�������������������������0000664�0000000�0000000�00000001403�15240005042�0026751�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 10.875 10.0625 c -0.8125 0.148438 -1.105469 1.160156 -0.5 1.71875 l 3 3 c 0.957031 0.9375 2.363281 -0.5 1.40625 -1.4375 l -3 -3 c -0.234375 -0.238281 -0.578125 -0.347656 -0.90625 -0.28125 z m 0 0"/><path d="m 6.570312 0.0625 c -3.578124 0 -6.4999995 2.921875 -6.4999995 6.5 s 2.9218755 6.5 6.4999995 6.5 c 3.578126 0 6.5 -2.921875 6.5 -6.5 s -2.921874 -6.5 -6.5 -6.5 z m 0 2 c 2.496094 0 4.5 2.003906 4.5 4.5 c 0 2.5 -2.003906 4.5 -4.5 4.5 c -2.496093 0 -4.5 -2 -4.5 -4.5 c 0 -2.496094 2.003907 -4.5 4.5 -4.5 z m 0 0"/><path d="m 5.570312 3.5625 v 2 h -2 v 2 h 2 v 2 h 2 v -2 h 2 v -2 h -2 v -2 z m 0 0"/></g></svg> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/internal-config-schema.xml��������������������������������������������0000664�0000000�0000000�00000000321�15240005042�0023160�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <object class="BzInternalConfig"> <typehint name="search-biases" type="BzSearchBias"/> <typehint name="search-biases.boost-appids" type="GtkStringObject"/> </object> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/internal-config.yaml��������������������������������������������������0000664�0000000�0000000�00000003523�15240005042�0022073�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������search-biases: # Brief regex review: # `^` indicates the beginning of the string # `$` indicates the end of the string # `\b` indicates a word boundary # `(?i)` means case insensitive - regex: ^(?i)browser$ convert-to: web browser boost-appids: - app.zen_browser.zen - io.github.ungoogled_software.ungoogled_chromium - org.chromium.Chromium - org.gnome.Epiphany - org.kde.falkon - org.mozilla.firefox - org.torproject.torbrowser-launcher linear-boost: slope: 1.333 y-intercept: 40.0 - regex: \b(?i)vm\b convert-to: virtual machine boost-appids: - org.virt_manager.virt-manager - org.gnome.Boxes linear-boost: slope: 1.0 y-intercept: 50.0 - regex: \b(?i)ide\b convert-to: develop boost-appids: - com.visualstudio.code - com.vscodium.codium - dev.zed.Zed - org.gnome.Builder - org.kde.kdevelop linear-boost: slope: 1.0 y-intercept: 10.0 - regex: \b(?i)daw\b boost-appids: # these don't normally show, despite being DAWs - fm.reaper.Reaper - io.lmms.LMMS linear-boost: slope: 1.0 y-intercept: 20.0 - regex: (?i)\bimage\seditors?\b boost-appids: - org.gimp.GIMP - com.github.PintaProject.Pinta - org.kde.krita linear-boost: slope: 1.0 y-intercept: 200.0 - regex: \b(?i)photoshop\b boost-appids: - org.gimp.GIMP linear-boost: slope: 1.0 y-intercept: 20.0 - regex: \b(?i)illustrator\b boost-appids: - org.inkscape.Inkscape linear-boost: slope: 1.0 y-intercept: 20.0 - regex: \b(?i)dl\b convert-to: download - regex: \b(?i)yt\b convert-to: youtube - regex: \b(?i)vids?\b convert-to: video - regex: \b(?i)mc\b convert-to: minecraft �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/io.c������������������������������������������������������������������0000664�0000000�0000000�00000033213�15240005042�0016702�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* io.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "io.h" #include "bz-size-result.h" #include "env.h" static DexFuture * reap_file_fiber (GFile *file); static DexFuture * reap_path_fiber (char *path); static DexFuture * reap_app_dir_fiber (char *path); static DexFuture * file_measure_disk_usage_dex (GFile *file); static DexFuture * get_user_sizes_fiber (char *app_id); static DexFuture * get_all_user_data_ids_fiber (void); char * bz_dup_user_data_path (const char *app_id) { g_return_val_if_fail (app_id != NULL, NULL); return g_build_filename (g_get_home_dir (), ".var", "app", app_id, NULL); } char * bz_dup_user_cache_path (const char *app_id) { g_return_val_if_fail (app_id != NULL, NULL); return g_build_filename (g_get_home_dir (), ".var", "app", app_id, "cache", NULL); } DexScheduler * bz_get_io_scheduler (void) { static DexScheduler *scheduler = NULL; if (g_once_init_enter_pointer (&scheduler)) g_once_init_leave_pointer (&scheduler, dex_thread_pool_scheduler_new ()); return scheduler; } DexLimiter * bz_get_io_limiter (void) { static DexLimiter *limiter = NULL; if (g_once_init_enter_pointer (&limiter)) { guint concurrent_io = 0; /* Ensure we don't overload the system with work; aim for # of logical processors divided by 2 See: https://github.com/bazaar-org/bazaar/issues/497 https://docs.gtk.org/glib/func.get_num_processors.html */ concurrent_io = MIN (32, MAX (1, g_get_num_processors () / 2)); g_once_init_leave_pointer (&limiter, dex_limiter_new (concurrent_io)); } return limiter; } void bz_reap_file (GFile *file) { g_autoptr (GError) local_error = NULL; g_autofree gchar *uri = NULL; g_autoptr (GFileEnumerator) enumerator = NULL; gboolean result = FALSE; g_return_if_fail (G_IS_FILE (file)); uri = g_file_get_uri (file); if (uri == NULL) uri = g_file_get_path (file); enumerator = g_file_enumerate_children ( file, G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "," G_FILE_ATTRIBUTE_STANDARD_NAME "," G_FILE_ATTRIBUTE_STANDARD_TYPE "," G_FILE_ATTRIBUTE_TIME_MODIFIED, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, &local_error); if (enumerator == NULL) { if (!g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) g_warning ("failed to reap cache directory '%s': %s", uri, local_error->message); g_clear_pointer (&local_error, g_error_free); return; } for (;;) { g_autoptr (GFileInfo) info = NULL; g_autoptr (GFile) child = NULL; GFileType file_type = G_FILE_TYPE_UNKNOWN; info = g_file_enumerator_next_file (enumerator, NULL, &local_error); if (info == NULL) { if (local_error != NULL) g_warning ("failed to enumerate cache directory '%s': %s", uri, local_error->message); g_clear_pointer (&local_error, g_error_free); break; } child = g_file_enumerator_get_child (enumerator, info); file_type = g_file_info_get_file_type (info); if (!g_file_info_get_is_symlink (info) && file_type == G_FILE_TYPE_DIRECTORY) bz_reap_file (child); else { result = g_file_delete (child, NULL, &local_error); if (!result) { g_warning ("failed to reap cache directory '%s': %s", uri, local_error->message); g_clear_pointer (&local_error, g_error_free); } } } result = g_file_enumerator_close (enumerator, NULL, &local_error); if (!result) { g_warning ("failed to reap cache directory '%s': %s", uri, local_error->message); g_clear_pointer (&local_error, g_error_free); } result = g_file_delete (file, NULL, &local_error); if (!result) { g_warning ("failed to reap cache directory '%s': %s", uri, local_error->message); g_clear_pointer (&local_error, g_error_free); } } void bz_reap_path (const char *path) { g_autoptr (GFile) file = NULL; g_return_if_fail (path != NULL); file = g_file_new_for_path (path); bz_reap_file (file); } static void trash_file_callback (GObject *object, GAsyncResult *result, gpointer user_data) { g_autoptr (DexPromise) promise = user_data; g_autoptr (GError) error = NULL; if (g_file_trash_finish (G_FILE (object), result, &error)) dex_promise_resolve_boolean (promise, TRUE); else dex_promise_reject (promise, g_steal_pointer (&error)); } static DexFuture * trash_file_dex (GFile *file) { DexPromise *promise = dex_promise_new_cancellable (); g_file_trash_async (file, G_PRIORITY_DEFAULT, dex_promise_get_cancellable (promise), trash_file_callback, dex_ref (promise)); return DEX_FUTURE (promise); } static DexFuture * reap_app_dir_fiber (char *path) { g_autoptr (GFile) file = NULL; g_autoptr (DexFuture) trash_future = NULL; g_autoptr (GError) error = NULL; gboolean result = FALSE; file = g_file_new_for_path (path); trash_future = trash_file_dex (file); result = dex_await_boolean (dex_ref (trash_future), &error); if (!result) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) return dex_future_new_true (); g_warning ("failed to trash directory '%s': %s", path, error->message); return dex_future_new_for_error (g_steal_pointer (&error)); } return dex_future_new_true (); } static DexFuture * reap_user_data_fiber (char *app_id) { g_autofree char *path = bz_dup_user_data_path (app_id); return reap_app_dir_fiber (path); } static DexFuture * reap_user_cache_fiber (char *app_id) { g_autofree char *path = bz_dup_user_cache_path (app_id); bz_reap_path (path); return dex_future_new_true (); } DexFuture * bz_reap_file_dex (GFile *file) { dex_return_error_if_fail (G_IS_FILE (file)); return dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) reap_file_fiber, g_object_ref (file), g_object_unref); } DexFuture * bz_reap_path_dex (const char *path) { dex_return_error_if_fail (path != NULL); return dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) reap_path_fiber, g_strdup (path), g_free); } DexFuture * bz_reap_user_data_dex (const char *app_id) { dex_return_error_if_fail (app_id != NULL); return dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) reap_user_data_fiber, g_strdup (app_id), g_free); } DexFuture * bz_reap_user_cache_dex (const char *app_id) { dex_return_error_if_fail (app_id != NULL); return dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) reap_user_cache_fiber, g_strdup (app_id), g_free); } DexFuture * bz_get_user_sizes_dex (const char *app_id) { dex_return_error_if_fail (app_id != NULL); return dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) get_user_sizes_fiber, g_strdup (app_id), g_free); } DexFuture * bz_get_user_data_ids_dex (void) { return dex_limiter_run ( bz_get_io_limiter (), bz_get_io_scheduler (), bz_get_dex_stack_size (), (DexFiberFunc) get_all_user_data_ids_fiber, NULL, NULL); } static DexFuture * get_user_sizes_fiber (char *app_id) { g_autofree char *user_data_path = NULL; g_autofree char *user_cache_path = NULL; g_autoptr (GFile) data_file = NULL; g_autoptr (GFile) cache_file = NULL; g_autoptr (GPtrArray) futures = NULL; g_autoptr (GError) error = NULL; guint64 user_data_size = 0; guint64 cache_size = 0; user_data_path = bz_dup_user_data_path (app_id); user_cache_path = bz_dup_user_cache_path (app_id); data_file = g_file_new_for_path (user_data_path); cache_file = g_file_new_for_path (user_cache_path); futures = g_ptr_array_new_with_free_func (dex_unref); g_ptr_array_add (futures, file_measure_disk_usage_dex (data_file)); g_ptr_array_add (futures, file_measure_disk_usage_dex (cache_file)); dex_await (dex_future_allv ( (DexFuture *const *) futures->pdata, futures->len), NULL); user_data_size = dex_await_uint64 (dex_ref (g_ptr_array_index (futures, 0)), &error); if (error != NULL) { g_clear_error (&error); user_data_size = 0; } cache_size = dex_await_uint64 (dex_ref (g_ptr_array_index (futures, 1)), &error); if (error != NULL) { g_clear_error (&error); cache_size = 0; } return dex_future_new_take_object ( g_object_new (BZ_TYPE_SIZE_RESULT, "user-data-size", user_data_size, "cache-size", cache_size, NULL)); } static void measure_disk_usage_callback (GObject *object, GAsyncResult *result, gpointer user_data) { g_autoptr (DexPromise) promise = user_data; g_autoptr (GError) error = NULL; guint64 disk_usage = 0; if (g_file_measure_disk_usage_finish (G_FILE (object), result, &disk_usage, NULL, NULL, &error)) dex_promise_resolve_uint64 (promise, disk_usage); else if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) dex_promise_resolve_uint64 (promise, 0); else dex_promise_reject (promise, g_steal_pointer (&error)); } static DexFuture * file_measure_disk_usage_dex (GFile *file) { DexPromise *promise = NULL; promise = dex_promise_new_cancellable (); g_file_measure_disk_usage_async ( file, G_FILE_MEASURE_NONE, G_PRIORITY_DEFAULT, dex_promise_get_cancellable (promise), NULL, NULL, measure_disk_usage_callback, dex_ref (promise)); return DEX_FUTURE (promise); } static DexFuture * get_all_user_data_ids_fiber (void) { g_autofree char *var_app_path = NULL; g_autoptr (GFile) var_app_dir = NULL; g_autoptr (DexFuture) enumerator_future = NULL; g_autoptr (GFileEnumerator) enumerator = NULL; g_autoptr (GError) error = NULL; GHashTable *ids = NULL; var_app_path = g_build_filename (g_get_home_dir (), ".var", "app", NULL); var_app_dir = g_file_new_for_path (var_app_path); ids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); enumerator_future = dex_file_enumerate_children ( var_app_dir, G_FILE_ATTRIBUTE_STANDARD_NAME "," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, G_PRIORITY_DEFAULT); enumerator = dex_await_object (dex_ref (enumerator_future), &error); if (enumerator == NULL) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) return dex_future_new_take_boxed (G_TYPE_HASH_TABLE, ids); g_hash_table_unref (ids); return dex_future_new_for_error (g_steal_pointer (&error)); } for (;;) { g_autoptr (DexFuture) next_future = NULL; g_autolist (GFileInfo) infos = NULL; next_future = dex_file_enumerator_next_files (enumerator, 10, G_PRIORITY_DEFAULT); infos = dex_await_boxed (dex_ref (next_future), &error); if (infos == NULL) { if (error != NULL) { g_hash_table_unref (ids); return dex_future_new_for_error (g_steal_pointer (&error)); } break; } for (GList *l = infos; l != NULL; l = l->next) { GFileInfo *info = l->data; GFileType file_type = g_file_info_get_file_type (info); if (file_type == G_FILE_TYPE_DIRECTORY) { const char *app_id = g_file_info_get_name (info); g_hash_table_insert (ids, g_strdup (app_id), NULL); } } } return dex_future_new_take_boxed (G_TYPE_HASH_TABLE, ids); } char * bz_dup_root_cache_dir (void) { GApplication *application = NULL; const char *user_cache = NULL; const char *id = NULL; user_cache = g_get_user_cache_dir (); application = g_application_get_default (); if (application != NULL) id = g_application_get_application_id (application); if (id == NULL) id = "io.github.kolunmi.Bazaar"; return g_build_filename (user_cache, id, NULL); } char * bz_dup_cache_dir (const char *submodule) { g_autofree char *root_cache_dir = NULL; g_return_val_if_fail (submodule != NULL, NULL); root_cache_dir = bz_dup_root_cache_dir (); return g_build_filename (root_cache_dir, submodule, NULL); } static DexFuture * reap_file_fiber (GFile *file) { bz_reap_file (file); return dex_future_new_true (); } static DexFuture * reap_path_fiber (char *path) { bz_reap_path (path); return dex_future_new_true (); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/io.h������������������������������������������������������������������0000664�0000000�0000000�00000005110�15240005042�0016702�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* io.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gio/gio.h> #include <libdex.h> G_BEGIN_DECLS char * bz_dup_user_data_path (const char *app_id); char * bz_dup_user_cache_path (const char *app_id); DexScheduler * bz_get_io_scheduler (void); DexLimiter * bz_get_io_limiter (void); void bz_reap_file (GFile *file); void bz_reap_path (const char *path); DexFuture * bz_reap_file_dex (GFile *file); DexFuture * bz_reap_path_dex (const char *path); DexFuture * bz_reap_user_data_dex (const char *app_id); DexFuture * bz_reap_user_cache_dex (const char *app_id); DexFuture * bz_get_user_sizes_dex (const char *app_id); DexFuture * bz_get_user_data_ids_dex (void); char * bz_dup_root_cache_dir (void); char * bz_dup_cache_dir (const char *submodule); #define bz_dup_module_dir() bz_dup_cache_dir (BAZAAR_MODULE) #define bz_discard_path(_path) \ G_STMT_START \ { \ if (g_file_test ((_path), G_FILE_TEST_IS_DIR)) \ bz_reap_path ((_path)); \ else if (g_file_test ((_path), G_FILE_TEST_EXISTS)) \ { \ g_autoptr (GFile) file = NULL; \ \ file = g_file_new_for_path ((_path)); \ g_file_delete (file, NULL, NULL); \ } \ } \ G_STMT_END #define bz_discard_module_dir() \ G_STMT_START \ { \ g_autofree char *_path = NULL; \ \ _path = bz_dup_module_dir (); \ bz_discard_path (_path); \ } \ G_STMT_END G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/main-config-schema.xml������������������������������������������������0000664�0000000�0000000�00000001166�15240005042�0022300�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <object class="BzMainConfig"> <typehint name="txt-blocklist-paths" type="GtkStringObject"/> <typehint name="yaml-blocklist-paths" type="GtkStringObject"/> <typehint name="curated-config-paths" type="GtkStringObject"/> <typehint name="override-eol-markings" type="GtkStringObject"/> <typehint name="hooks" type="BzHook"/> <typehint name="hooks.dialogs" type="BzHookDialog"/> <typehint name="hooks.dialogs.options" type="BzHookDialogOption"/> <typehint name="search-biases" type="BzSearchBias"/> <typehint name="search-biases.boost-appids" type="GtkStringObject"/> </object> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/main.c����������������������������������������������������������������0000664�0000000�0000000�00000003663�15240005042�0017225�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* main.c * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::MAIN" #include "config.h" #include <bge.h> #include <glib/gi18n.h> #include <libdex.h> #include "bz-application.h" #include "refresh-worker.h" #include "update-worker.h" int main (int argc, char *argv[]) { int result = 0; if (argc > 1 && g_strcmp0 (argv[1], "--version") == 0) { g_print ("%s\n", PACKAGE_VCS_VERSION); return 0; } dex_init (); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* Init Bazaar GTK Extensions */ bge_init (); if (argc > 1 && g_strcmp0 (argv[1], REFRESH_WORKER_CLI_OPTION) == 0) result = run_refresh_worker (argc, argv); else if (argc > 1 && g_strcmp0 (argv[1], UPDATE_WORKER_CLI_OPTION) == 0) result = run_update_worker (argc, argv); else { g_autoptr (BzApplication) app = NULL; app = g_object_new ( BZ_TYPE_APPLICATION, "application-id", APPLICATION_ID, "flags", G_APPLICATION_HANDLES_COMMAND_LINE, "resource-base-path", "/io/github/kolunmi/Bazaar", NULL); result = g_application_run (G_APPLICATION (app), argc, argv); } return result; } �����������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/meson.build�����������������������������������������������������������0000664�0000000�0000000�00000024134�15240005042�0020273�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������math = cc.find_library('m', required: false) xmllint = find_program('xmllint', required: true) gtk_dep = dependency('gtk4', version: '>= 4.22.1') libadwaita_dep = dependency('libadwaita-1', version: '>= 1.8') libdex_dep = dependency('libdex-1', version: '>= 1.2.beta') flatpak_dep = dependency('flatpak', version: '>= 1.9') appstream_dep = dependency('appstream', version: '>= 1.0') xmlb_dep = dependency('xmlb', version: '>= 0.3.4') yaml_dep = dependency('yaml-0.1', version: '>= 0.2.5') libsoup_dep = dependency('libsoup-3.0', version: '>= 3.6.0') json_glib_dep = dependency('json-glib-1.0', version: '>= 1.10.0') glycin_dep = dependency('glycin-2', version: '>= 2.0') glycin_gtk4_dep = dependency('glycin-gtk4-2', version: '>= 2.0') webkit_dep = dependency('webkitgtk-6.0', version: '>= 2.50.2') libsecret_dep = dependency('libsecret-1', version: '>= 0.20') libproxy_dep = dependency('libproxy-1.0', version: '>= 0.5') malcontent_dep = dependency('malcontent-0', version: '>= 0.12.0') gtksourceview_dep = dependency('gtksourceview-5', version: '>= 5.17') libsystemd_dep = dependency('libsystemd', version: '>= 245') dl_worker_sources = [ 'env.c', 'global-net.c', 'dl-worker.c', ] dl_worker_deps = [ math, libdex_dep, libsoup_dep, json_glib_dep, libproxy_dep, ] dl_worker_exe = executable(dl_worker_bin_name, dl_worker_sources, dependencies: dl_worker_deps, install: true, ) daemon_sources = [ 'bazaar-daemon.c', 'search-index.c', ] daemon_exe = executable(daemon_bin_name, daemon_sources, dependencies: [libsystemd_dep], install: true, ) marshalers = gnome.genmarshal('bz-marshalers', sources: 'bz-marshalers.list', prefix: 'bz_marshal', valist_marshallers: true, ) bz_sources = files( 'bz-addon-tile.c', 'bz-addons-dialog.c', 'bz-age-rating-dialog.c', 'bz-all-apps-page.c', 'bz-app-permissions.c', 'bz-app-size-dialog.c', 'bz-app-tile.c', 'bz-application-map-factory.c', 'bz-application.c', 'bz-apps-page.c', 'bz-appstream-description-render.c', 'bz-appstream-parser.c', 'bz-article-list-view.c', 'bz-article-tile.c', 'bz-article.c', 'bz-aspect-picture.c', 'bz-async-texture.c', 'bz-auth-state.c', 'bz-backend.c', 'bz-banner-view.c', 'bz-bundle-install-dialog.c', 'bz-category-flags.c', 'bz-category-tile.c', 'bz-content-provider.c', 'bz-context-row.c', 'bz-context-tile.c', 'bz-curated-view.c', 'bz-data-graph.c', 'bz-decorated-screenshot.c', 'bz-developer-badge.c', 'bz-donations-dialog.c', 'bz-download-worker.c', 'bz-dynamic-list-view.c', 'bz-entry-cache-manager.c', 'bz-entry-group-util.c', 'bz-entry-group.c', 'bz-entry-inspector.c', 'bz-entry-selection-row.c', 'bz-entry.c', 'bz-error-dialog.c', 'bz-fading-clamp.c', 'bz-favorite-button.c', 'bz-favorites-page.c', 'bz-favorites-tile.c', 'bz-featured-carousel-view.c', 'bz-featured-carousel.c', 'bz-featured-tile.c', 'bz-flathub-category-section.c', 'bz-flathub-category.c', 'bz-flathub-category.c', 'bz-flathub-curated-section.c', 'bz-flathub-page.c', 'bz-flathub-state.c', 'bz-flatpak-entry.c', 'bz-flatpak-instance.c', 'bz-full-view.c', 'bz-group-tile-css-watcher.c', 'bz-hardware-support-dialog.c', 'bz-inspector.c', 'bz-install-controls.c', 'bz-installed-tile.c', 'bz-lazy-wdgt.c', 'bz-library-page.c', 'bz-license-dialog.c', 'bz-list-tile.c', 'bz-login-page.c', 'bz-lozenge.c', 'bz-malcontent-service.c', 'bz-metainfo-preview.c', 'bz-newline-parser.c', 'bz-parser.c', 'bz-preferences-dialog.c', 'bz-progress-bar.c', 'bz-releases-list.c', 'bz-result.c', 'bz-rich-app-tile.c', 'bz-rounded-picture.c', 'bz-row-view.c', 'bz-safety-dialog.c', 'bz-screenshot-page.c', 'bz-screenshot.c', 'bz-screenshots-carousel.c', 'bz-search-bar.c', 'bz-search-engine.c', 'bz-search-filter-popover.c', 'bz-search-page.c', 'bz-search-pill-list.c', 'bz-section-view.c', 'bz-serializable.c', 'bz-share-list.c', 'bz-stats-dialog.c', 'bz-subcategory-list.c', 'bz-themed-entry-group-rect.c', 'bz-transact-icon.c', 'bz-transaction-dialog.c', 'bz-transaction-list-dialog.c', 'bz-transaction-manager.c', 'bz-transaction-tile.c', 'bz-transaction.c', 'bz-updates-card.c', 'bz-user-data-page.c', 'bz-user-data-tile.c', 'bz-window.c', 'bz-world-map-parser.c', 'bz-world-map.c', 'bz-yaml-parser.c', 'bz-zoom.c', 'context-tile-callbacks.c', 'dex-utils.c', 'env.c', 'error.c', 'global-net.c', 'hooks.c', 'io.c', 'refresh-worker.c', 'safety-calculator.c', 'search-index-write.c', 'spdx.c', 'template-callbacks.c', 'transaction-notification.c', 'update-worker.c', 'util.c', ) subdir('progress-bar-designs') bz_deps = [ # Bazaar GTK Extensions; see ../bge/ bge_dep, math, gtk_dep, libadwaita_dep, flatpak_dep, appstream_dep, xmlb_dep, yaml_dep, libsoup_dep, json_glib_dep, libdex_dep, glycin_dep, glycin_gtk4_dep, webkit_dep, libsecret_dep, libproxy_dep, malcontent_dep, gtksourceview_dep, ] gen_gobject = find_program('./gen_gobject.sh') gen_gobject_header = generator( gen_gobject, output: '@BASENAME@.h', arguments: ['--header', '@INPUT@', '@OUTPUT@'], ) gen_gobject_code = generator( gen_gobject, output: '@BASENAME@.c', arguments: ['--code', '@INPUT@', '@OUTPUT@'], ) gobject_specs = files( 'bz-age-rating-attribute.txt', 'bz-backend-notification.txt', 'bz-backend-transaction-op-payload.txt', 'bz-backend-transaction-op-progress-payload.txt', 'bz-blocklist-condition-match-envvar.txt', 'bz-blocklist-condition-match-locale.txt', 'bz-blocklist-condition.txt', 'bz-blocklist.txt', 'bz-bulk-install-dialog-result.txt', 'bz-country-data-point.txt', 'bz-country.txt', 'bz-curated-appids-info.txt', 'bz-curated-article.txt', 'bz-curated-articles-info.txt', 'bz-curated-banner.txt', 'bz-curated-featured-carousel.txt', 'bz-curated-image-info.txt', 'bz-curated-markdown-info.txt', 'bz-curated-row.txt', 'bz-curated-section.txt', 'bz-data-point.txt', 'bz-exponential-function.txt', 'bz-finished-search-query.txt', 'bz-flathub-auth-provider.txt', 'bz-flathub-curated-selection.txt', 'bz-flathub-sub-category.txt', 'bz-flatpak-repo.txt', 'bz-flatpak-bundle-result.txt', 'bz-hash-table-object.txt', 'bz-hook-dialog-option.txt', 'bz-hook-dialog.txt', 'bz-hook.txt', 'bz-internal-config.txt', 'bz-linear-function.txt', 'bz-main-config.txt', 'bz-pride-flag-config.txt', 'bz-pride-flag-spec.txt', 'bz-pride-flag-stripe-spec.txt', 'bz-release.txt', 'bz-repository.txt', 'bz-root-blocklist.txt', 'bz-root-curated-config.txt', 'bz-safety-row.txt', 'bz-search-bias.txt', 'bz-search-result.txt', 'bz-size-result.txt', 'bz-state-info.txt', 'bz-transact-icon-info.txt', 'bz-transaction-dialog-result.txt', 'bz-transaction-entry-tracker.txt', 'bz-transaction-task.txt', 'bz-url.txt', 'bz-verification-status.txt', ) gen_gobject_srcs = [] foreach f : gobject_specs header = gen_gobject_header.process(f) code = gen_gobject_code.process(f) gen_gobject_srcs += [header, code] endforeach generated_gobjects = declare_dependency( sources: gen_gobject_srcs, ) bz_deps += [ generated_gobjects ] blueprints = custom_target('blueprints', input: files( 'bz-addon-tile.blp', 'bz-addons-dialog.blp', 'bz-age-rating-dialog.blp', 'bz-all-apps-page.blp', 'bz-app-size-dialog.blp', 'bz-app-tile.blp', 'bz-apps-page.blp', 'bz-appstream-description-render.blp', 'bz-article.blp', 'bz-article-tile.blp', 'bz-banner-view.blp', 'bz-bundle-install-dialog.blp', 'bz-category-tile.blp', 'bz-context-tile.blp', 'bz-curated-view.blp', 'bz-decorated-screenshot.blp', 'bz-developer-badge.blp', 'bz-donations-dialog.blp', 'bz-entry-inspector.blp', 'bz-entry-selection-row.blp', 'bz-error-dialog.blp', 'bz-favorite-button.blp', 'bz-favorites-page.blp', 'bz-favorites-tile.blp', 'bz-featured-carousel.blp', 'bz-featured-tile.blp', 'bz-flathub-category-section.blp', 'bz-flathub-curated-section.blp', 'bz-flathub-page.blp', 'bz-full-view.blp', 'bz-hardware-support-dialog.blp', 'bz-inspector.blp', 'bz-install-controls.blp', 'bz-installed-tile.blp', 'bz-library-page.blp', 'bz-license-dialog.blp', 'bz-login-page.blp', 'bz-metainfo-preview-page.blp', 'bz-preferences-dialog.blp', 'bz-progress-bar.blp', 'bz-releases-dialog.blp', 'bz-releases-list.blp', 'bz-rich-app-tile.blp', 'bz-safety-dialog.blp', 'bz-screenshot-page.blp', 'bz-screenshots-carousel.blp', 'bz-search-filter-popover.blp', 'bz-search-bar.blp', 'bz-search-page.blp', 'bz-section-view.blp', 'bz-stats-dialog.blp', 'bz-transaction-list-dialog.blp', 'bz-transaction-tile.blp', 'bz-updates-card.blp', 'bz-user-data-page.blp', 'bz-user-data-tile.blp', 'bz-window.blp', 'shortcuts-dialog.blp', ), output: '.', command: [ find_program('blueprint-compiler', version: '>= 0.20.0'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@' ], ) release_notes = custom_target('release-notes.xml', output: 'release-notes.xml', input: meson.project_source_root() / 'data' / 'io.github.kolunmi.Bazaar.metainfo.xml.in', command: [ 'sh', '-c', xmllint.full_path() + ' --xpath "//releases/release[1]" "$1" > "$2"', '--', '@INPUT@', '@OUTPUT@', ], ) countries_gvariant = custom_target( 'countries-gvariant', input: files('../scripts/countries.json.in'), output: 'countries.gvariant', command: [ python3, meson.project_source_root() / 'scripts' / 'countries.py', '@INPUT@', meson.project_source_root() / 'po' / 'LINGUAS', '@OUTPUT@', ], ) bz_sources += gnome.compile_resources('bz-resources', 'bazaar.gresource.xml', c_name: 'bz', source_dir: meson.current_build_dir(), dependencies: [blueprints, release_notes, countries_gvariant], ) executable(bazaar_bin_name, bz_sources + ['main.c'], marshalers, dependencies: bz_deps, install: true, ) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/pride-flag-config-schema.xml������������������������������������������0000664�0000000�0000000�00000000320�15240005042�0023355�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <object class="BzPrideFlagConfig"> <typehint name="flag-specs" type="BzPrideFlagSpec"/> <typehint name="flag-specs.stripes" type="BzPrideFlagStripeSpec"/> </object> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/progress-bar-designs/�������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0022165�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/progress-bar-designs/common.h�����������������������������������������0000664�0000000�0000000�00000001442�15240005042�0023627�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* progress-bar-designs/common.h * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "pride/pride.h" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/progress-bar-designs/meson.build��������������������������������������0000664�0000000�0000000�00000000020�15240005042�0024317�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������subdir('pride') ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/progress-bar-designs/pride/�������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0023270�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/progress-bar-designs/pride/meson.build��������������������������������0000664�0000000�0000000�00000000044�15240005042�0025430�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bz_sources += files( 'pride.c', ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/progress-bar-designs/pride/pride-flags.yaml���������������������������0000664�0000000�0000000�00000016215�15240005042�0026356�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������flag-specs: - # the internal ID of the flag; this should match the gsettings file at # /data/io.github.kolunmi.Bazaar.gschema.xml id: "pride-rainbow-flag" # the user-facing name name: "Pride Rainbow Flag" # (optional) set to true if the flag is homogeneous, or put more # shrimply(ðŸ¦) each stripe has the same vertical size homogeneous: true # the direction in which the stripes are drawn (css format) direction: to bottom # list of stripe specs stripes: &pride-rainbow-flag-stripes - # all stripes must provide the `rgba` field, which will is the color of # the stripe. Many formats are supported for this; here is a snippet # from the GDK source, listing the formats: # # - A standard name (Taken from the CSS specification). # - A hexadecimal value in the form “#rgbâ€, “#rrggbbâ€, # “#rrrgggbbb†or â€#rrrrggggbbbb†# - A hexadecimal value in the form “#rgbaâ€, “#rrggbbaaâ€, # or â€#rrrrggggbbbbaaaa†# - A RGB color in the form “rgb(r,g,b)†(In this case the color # will have full opacity) # - A RGBA color in the form “rgba(r,g,b,a)†# - A HSL color in the form "hsl(hue, saturation, lightness)" # - A HSLA color in the form "hsla(hue, saturation, lightness, alpha)" # # for more information, see # https://docs.gtk.org/gdk4/method.RGBA.parse.html rgba: "#E40303" # if the above `homogeneous` field is set to `true`, then this field can # be omitted. otherwise, this value is a floating point number from 0.0 # to 1.0 representing the size of this stripe as a percentage of the # flag's pixel height in the UI. so if this strip should take up 20% of # the vertical space, put `0.2`, as shown here. Since the `homogeneous` # field was set to `true` on this flag, this is ignored size: 0.2 - rgba: "#FF8C00" - rgba: "#FFED00" - rgba: "#008026" - rgba: "#24408E" - rgba: "#732982" - id: "lesbian-pride-flag" name: "Lesbian Pride Flag" homogeneous: true direction: to bottom stripes: &lesbian-flag-stripes - rgba: "#D62800" - rgba: "#EF7627" - rgba: "#FF9B56" - rgba: "#FFFFFF" - rgba: "#D162A4" - rgba: "#B55690" - rgba: "#A30262" - id: "gay-pride-flag" name: "Gay Pride Flag" homogeneous: true direction: to bottom stripes: &gay-pride-flag-stripes - rgba: "#018E71" - rgba: "#21CFAC" - rgba: "#9AE9C3" - rgba: "#FFFFFF" - rgba: "#7CAFE4" - rgba: "#4F47CC" - rgba: "#3C1379" - id: "transgender-flag" name: "Transgender Flag" homogeneous: true direction: to bottom stripes: &transgender-flag-stripes - rgba: "#5BCEFA" - rgba: "#F5A9B8" - rgba: "#FFFFFF" - rgba: "#F5A9B8" - rgba: "#5BCEFA" - id: "nonbinary-flag" name: "Nonbinary Flag" homogeneous: true direction: to bottom stripes: &nonbinary-flag-stripes - rgba: "#FCF434" - rgba: "#FFFFFF" - rgba: "#9C59D1" - rgba: "#2C2C2C" - id: "bisexual-flag" name: "Bisexual Flag" direction: to bottom stripes: &bisexual-flag-stripes - rgba: "#D60270" size: 0.4 - rgba: "#9B4F96" size: 0.2 - rgba: "#0038A8" size: 0.4 - id: "asexual-flag" name: "Asexual Flag" homogeneous: true direction: to bottom stripes: &asexual-flag-stripes - rgba: "#000000" - rgba: "#A3A3A3" - rgba: "#FFFFFF" - rgba: "#810081" - id: "pansexual-flag" name: "Pansexual Flag" homogeneous: true direction: to bottom stripes: &pansexual-flag-stripes - rgba: "#FF218C" - rgba: "#FFD800" - rgba: "#21B1FF" - id: "aromantic-flag" name: "Aromantic Flag" homogeneous: true direction: to bottom stripes: &aromantic-flag-stripes - rgba: "#3DA542" - rgba: "#A7D379" - rgba: "#FFFFFF" - rgba: "#A9A9A9" - rgba: "#000000" - id: "genderfluid-flag" name: "Genderfluid Flag" homogeneous: true direction: to bottom stripes: &genderfluid-flag-stripes - rgba: "#FF76A4" - rgba: "#FFFFFF" - rgba: "#C011D7" - rgba: "#000000" - rgba: "#2F3CBE" - id: "polysexual-flag" name: "Polysexual Flag" homogeneous: true direction: to bottom stripes: &polysexual-flag-stripes - rgba: "#F61CB9" - rgba: "#07D569" - rgba: "#1C92F6" - id: "omnisexual-flag" name: "Omnisexual Flag" homogeneous: true direction: to bottom stripes: &omnisexual-flag-stripes - rgba: "#FF9CCE" - rgba: "#FF52BF" - rgba: "#200044" - rgba: "#675FFF" - rgba: "#8DA7FF" - id: "aroace-flag" name: "Aroace Flag" homogeneous: true direction: to bottom stripes: &aroace-flag-stripes - rgba: "#E28C00" - rgba: "#ECCD00" - rgba: "#FFFFFF" - rgba: "#62AEDC" - rgba: "#203856" - id: "agender-flag" name: "Agender Flag" homogeneous: true direction: to bottom stripes: &agender-flag-stripes - rgba: "#000000" - rgba: "#BCC4C7" - rgba: "#FFFFFF" - rgba: "#B7F684" - rgba: "#FFFFFF" - rgba: "#BCC4C7" - rgba: "#000000" - id: "genderqueer-flag" name: "Genderqueer Flag" homogeneous: true direction: to bottom stripes: &genderqueer-flag-stripes - rgba: "#B57EDC" - rgba: "#FFFFFF" - rgba: "#4A8123" - id: "intersex-flag" name: "Intersex Flag" direction: to bottom stripes: &intersex-flag-stripes - rgba: "#FFD800" size: 0.4 - rgba: "#7902AA" size: 0.2 - rgba: "#FFD800" size: 0.4 - id: "demigender-flag" name: "Demigender Flag" homogeneous: true direction: to bottom stripes: &demigender-flag-stripes - rgba: "#7F7F7F" - rgba: "#C3C3C3" - rgba: "#FBFF74" - rgba: "#FFFFFF" - rgba: "#FBFF74" - rgba: "#C3C3C3" - rgba: "#7F7F7F" - id: "biromantic-flag" name: "Biromantic Flag" homogeneous: true direction: to bottom stripes: &biromantic-flag-stripes - rgba: "#8869A5" - rgba: "#D8A7D8" - rgba: "#FFFFFF" - rgba: "#FDB18D" - rgba: "#151638" - id: "disability-flag" name: "Disability Flag" homogeneous: true direction: to bottom stripes: &disability-flag-stripes - rgba: "#595959" - rgba: "#CF7280" - rgba: "#EEDE77" - rgba: "#E8E8E8" - rgba: "#7BC2E0" - rgba: "#3BB07D" - rgba: "#595959" - id: "femboy-flag" name: "Femboy Flag" homogeneous: true direction: to bottom stripes: &femboy-flag-stripes - rgba: "#D460A7" - rgba: "#E4ADCD" - rgba: "#FFFFFF" - rgba: "#57CEF8" - rgba: "#FFFFFF" - rgba: "#E4ADCD" - rgba: "#D460A7" - id: "neutrois-flag" name: "Neutrois Flag" homogeneous: true direction: to bottom stripes: &neutrois-flag-stripes - rgba: "rgb(255,255,255)" - rgba: "rgb(31,159,0)" - rgba: "rgb(0,0,0)" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/progress-bar-designs/pride/pride.c������������������������������������0000664�0000000�0000000�00000017773�15240005042�0024556�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* progress-bar-designs/pride/pride.c * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "bz-parser.h" #include "bz-pride-flag-config.h" #include "bz-yaml-parser.h" #include "pride.h" static void generate_flag_css (GString *css, const char *id, const char *direction, gboolean homogeneous, GListModel *stripes); GtkStyleProvider * bz_get_pride_style_provider (void) { static GtkCssProvider *provider = NULL; if (g_once_init_enter_pointer (&provider)) { g_autoptr (GError) local_error = NULL; g_autoptr (GBytes) config_bytes = NULL; g_autoptr (BzYamlParser) parser = NULL; g_autoptr (GHashTable) parse_results = NULL; g_autoptr (BzPrideFlagConfig) config = NULL; g_autoptr (GtkCssProvider) tmp = NULL; config_bytes = g_resources_lookup_data ( "/io/github/kolunmi/Bazaar/pride-flags.yaml", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL); g_assert (config_bytes != NULL); g_type_ensure (BZ_TYPE_PRIDE_FLAG_CONFIG); g_type_ensure (BZ_TYPE_PRIDE_FLAG_SPEC); g_type_ensure (BZ_TYPE_PRIDE_FLAG_STRIPE_SPEC); parser = bz_yaml_parser_new_for_resource_schema ( "/io/github/kolunmi/Bazaar/pride-flag-config-schema.xml"); parse_results = bz_parser_process_bytes ( BZ_PARSER (parser), config_bytes, &local_error); if (parse_results == NULL) g_critical ("Could not parse internal 'pride-flags.yaml': %s", local_error->message); g_assert (parse_results != NULL); config = g_value_dup_object (g_hash_table_lookup (parse_results, "/")); tmp = gtk_css_provider_new (); if (config != NULL) { GListModel *flag_specs = NULL; flag_specs = bz_pride_flag_config_get_flag_specs (config); if (flag_specs != NULL) { g_autoptr (GString) css = NULL; guint n_flag_specs = 0; css = g_string_new (NULL); n_flag_specs = g_list_model_get_n_items (flag_specs); for (guint i = 0; i < n_flag_specs; i++) { g_autoptr (BzPrideFlagSpec) flag_spec = NULL; const char *id = NULL; const char *name = NULL; gboolean homogeneous = FALSE; GListModel *stripes = NULL; const char *direction = NULL; flag_spec = g_list_model_get_item (flag_specs, i); id = bz_pride_flag_spec_get_id (flag_spec); name = bz_pride_flag_spec_get_name (flag_spec); homogeneous = bz_pride_flag_spec_get_homogeneous (flag_spec); stripes = bz_pride_flag_spec_get_stripes (flag_spec); direction = bz_pride_flag_spec_get_direction (flag_spec); if (id == NULL) { g_critical ("Flag spec with index %d lacks an id, skipping it", i); continue; } if (name == NULL) { g_critical ("Flag spec \"%s\" lacks an name, skipping it", id); continue; } if (stripes == NULL) { g_critical ("Flag spec \"%s\" lacks a strip list, skipping it", id); continue; } if (direction == NULL) direction = "to bottom"; generate_flag_css (css, id, direction, homogeneous, stripes); { g_autofree char *horizontal_id = NULL; const char *horizontal_direction = NULL; horizontal_id = g_strdup_printf ("%s-horizontal", id); if (g_strcmp0 (direction, "to bottom") == 0) horizontal_direction = "to right"; else if (g_strcmp0 (direction, "to top") == 0) horizontal_direction = "to left"; else if (g_strcmp0 (direction, "to left") == 0) horizontal_direction = "to top"; else if (g_strcmp0 (direction, "to right") == 0) horizontal_direction = "to bottom"; else horizontal_direction = "to right"; generate_flag_css (css, horizontal_id, horizontal_direction, homogeneous, stripes); } } if (css->len > 0) gtk_css_provider_load_from_string (tmp, css->str); } } g_once_init_leave_pointer (&provider, g_steal_pointer (&tmp)); } return GTK_STYLE_PROVIDER (provider); } char * bz_dup_css_class_for_pride_id (const char *id) { g_return_val_if_fail (id != NULL, NULL); return g_strdup_printf ("%s-theme", id); } static void generate_flag_css (GString *css, const char *id, const char *direction, gboolean homogeneous, GListModel *stripes) { g_autoptr (GString) stripe_css = NULL; guint n_stripes = 0; double cur_offset = 0.0; gboolean skip = FALSE; stripe_css = g_string_new (NULL); g_string_append_printf (stripe_css, ".%s-theme { ", id); g_string_append_printf (stripe_css, "--flag-gradient: linear-gradient(%s", direction); n_stripes = g_list_model_get_n_items (stripes); for (guint j = 0; j < n_stripes; j++) { g_autoptr (BzPrideFlagStripeSpec) stripe_spec = NULL; const char *rgba_spec = NULL; double size = 0.0; GdkRGBA rgba = { 0 }; stripe_spec = g_list_model_get_item (stripes, j); rgba_spec = bz_pride_flag_stripe_spec_get_rgba (stripe_spec); size = bz_pride_flag_stripe_spec_get_size (stripe_spec); if (rgba_spec == NULL) { g_critical ("Flag spec \"%s\" has a stripe spec which lacks an rgba spec, skipping it", id); skip = TRUE; break; } if (!gdk_rgba_parse (&rgba, rgba_spec)) { g_critical ("Flag spec \"%s\" has a stripe spec which has an invalid rgba spec, skipping it", id); skip = TRUE; break; } if (!homogeneous && (size <= 0.0 || size > 1.0)) { g_critical ("Flag spec \"%s\" has a stripe spec which has an out of bounds size, skipping it", id); skip = TRUE; break; } g_string_append_printf (stripe_css, ", %s %d%%", rgba_spec, (int) round (cur_offset * 100.0)); cur_offset += homogeneous ? 1.0 / (double) n_stripes : size; if (cur_offset > 1.0) { g_critical ("Flag spec \"%s\" has a stripe spec which exceeds the height of the flag, skipping it", id); skip = TRUE; break; } g_string_append_printf (stripe_css, ", %s %d%%", rgba_spec, (int) round (cur_offset * 100.0)); } if (skip) return; g_string_append (stripe_css, "); }\n"); g_string_append_len (css, stripe_css->str, stripe_css->len); } �����bazaar-org-bazaar-48f93f4/src/progress-bar-designs/pride/pride.h������������������������������������0000664�0000000�0000000�00000001657�15240005042�0024555�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* progress-bar-designs/pride/pride.h * * Copyright 2025 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS GtkStyleProvider * bz_get_pride_style_provider (void); char * bz_dup_css_class_for_pride_id (const char *id); G_END_DECLS ���������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/refresh-worker.c������������������������������������������������������0000664�0000000�0000000�00000010523�15240005042�0021237�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* refresh-worker.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::REFRESH-WORKER" #include "bz-backend-notification.h" #include "bz-backend.h" #include "bz-entry-cache-manager.h" #include "bz-flatpak-instance.h" #include "env.h" #include "util.h" #include "refresh-worker.h" BZ_DEFINE_DATA ( main, Main, { GMainLoop *loop; int rv; }, BZ_RELEASE_DATA (loop, g_main_loop_unref)); static DexFuture * run (MainData *data); int run_refresh_worker (int argc, char *argv[]) { g_autoptr (GMainLoop) main_loop = NULL; g_autoptr (MainData) data = NULL; g_autoptr (DexFuture) future = NULL; main_loop = g_main_loop_new (NULL, FALSE); data = main_data_new (); data->loop = g_main_loop_ref (main_loop); data->rv = EXIT_SUCCESS; future = dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) run, main_data_ref (data), main_data_unref); g_main_loop_run (main_loop); return data->rv; } static DexFuture * run (MainData *data) { gboolean result = FALSE; g_autoptr (GError) local_error = NULL; g_autoptr (BzEntryCacheManager) cache = NULL; g_autoptr (BzFlatpakInstance) flatpak = NULL; g_autoptr (DexChannel) channel = NULL; g_autoptr (GHashTable) installed_set = NULL; g_autoptr (DexFuture) all_notifs = NULL; guint n_notifs = 0; g_autoptr (GPtrArray) write_backs = NULL; cache = bz_entry_cache_manager_new (); flatpak = dex_await_object ( bz_flatpak_instance_new (), &local_error); if (flatpak == NULL) goto err; channel = bz_backend_create_notification_channel (BZ_BACKEND (flatpak)); if (channel == NULL) goto err; result = dex_await ( bz_backend_retrieve_remote_entries ( BZ_BACKEND (flatpak), NULL), &local_error); if (!result) goto err; installed_set = dex_await_boxed ( bz_backend_retrieve_install_ids ( BZ_BACKEND (flatpak), NULL), &local_error); if (installed_set == NULL) goto err; all_notifs = dex_channel_receive_all (channel); n_notifs = dex_future_set_get_size (DEX_FUTURE_SET (all_notifs)); write_backs = g_ptr_array_new_with_free_func (dex_unref); for (guint i = 0; i < n_notifs; i++) { DexFuture *future = NULL; g_autoptr (BzBackendNotification) notif = NULL; BzBackendNotificationKind kind = 0; future = dex_future_set_get_future_at ( DEX_FUTURE_SET (all_notifs), i); notif = dex_await_object (dex_ref (future), NULL); if (notif == NULL) continue; kind = bz_backend_notification_get_kind (notif); if (kind == BZ_BACKEND_NOTIFICATION_KIND_REPLACE_ENTRY) { BzEntry *entry = NULL; const char *unique_id = NULL; entry = bz_backend_notification_get_entry (notif); unique_id = bz_entry_get_unique_id (entry); bz_entry_set_installed (entry, g_hash_table_contains (installed_set, unique_id)); g_ptr_array_add ( write_backs, bz_entry_cache_manager_add (cache, entry)); } } if (write_backs->len > 0) dex_await ( dex_future_allv ( (DexFuture *const *) write_backs->pdata, write_backs->len), NULL); data->rv = EXIT_SUCCESS; g_main_loop_quit (data->loop); return dex_future_new_true (); err: if (local_error != NULL) g_critical ("Unable to complete refresh: %s", local_error->message); data->rv = EXIT_FAILURE; g_main_loop_quit (data->loop); return dex_future_new_false (); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/refresh-worker.h������������������������������������������������������0000664�0000000�0000000�00000001562�15240005042�0021247�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* refresh-worker.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib.h> G_BEGIN_DECLS int run_refresh_worker (int argc, char *argv[]); G_END_DECLS ����������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/release-notes.xml.in��������������������������������������������������0000664�0000000�0000000�00000000000�15240005042�0022010�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/safety-calculator.c���������������������������������������������������0000664�0000000�0000000�00000064574�15240005042�0021733�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* safety-calculator.c * * Copyright 2026 Alexander Vanhee * Copyright (C) 2022 Red Hat <www.redhat.com> * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include "bz-app-permissions.h" #include "bz-context-row.h" #include "safety-calculator.h" #include "bz-safety-row.h" static char * format_bus_policy_title (const BzBusPolicy *bus_policy); static const char * format_bus_policy_subtitle (const BzBusPolicy *bus_policy); static void add_row_if_permission (GListStore *store, gboolean has_permission, BzImportance item_rating, const char *icon_name_with_permission, const char *title_with_permission, const char *description_with_permission, const char *icon_name_without_permission, const char *title_without_permission, const char *description_without_permission); static gboolean lookup_well_known_bus_policy (const char *bus_name, const char **out_title, const char **out_description); GListModel * bz_safety_calculator_analyze_entry (BzEntry *entry) { GListStore *store = NULL; BzAppPermissions *permissions = NULL; BzAppPermissionsFlags perm_flags = BZ_APP_PERMISSIONS_FLAGS_NONE; gboolean is_verified = FALSE; gboolean is_foss = FALSE; const GPtrArray *filesystem_read = NULL; const GPtrArray *filesystem_full = NULL; const BzBusPolicy *const *bus_policies = NULL; size_t n_bus_policies = 0; gboolean has_system_tray = FALSE; BzImportance fs_importance = BZ_IMPORTANCE_WARNING; guint i = 0; g_return_val_if_fail (BZ_IS_ENTRY (entry), NULL); store = g_list_store_new (BZ_TYPE_SAFETY_ROW); is_verified = bz_entry_is_verified (entry); is_foss = bz_entry_get_is_foss (entry); g_object_get (entry, "permissions", &permissions, NULL); if (permissions != NULL) perm_flags = bz_app_permissions_get_flags (permissions); fs_importance = (perm_flags & BZ_APP_PERMISSIONS_FLAGS_NETWORK) ? BZ_IMPORTANCE_WARNING : BZ_IMPORTANCE_INFORMATION; if (permissions == NULL) { add_row_if_permission (store, TRUE, BZ_IMPORTANCE_WARNING, "channel-insecure-symbolic", _ ("Unknown Permissions"), _ ("Permissions are missing for this app."), NULL, NULL, NULL); } else { filesystem_read = bz_app_permissions_get_filesystem_read (permissions); filesystem_full = bz_app_permissions_get_filesystem_full (permissions); bus_policies = bz_app_permissions_get_bus_policies (permissions, &n_bus_policies); add_row_if_permission (store, bz_app_permissions_is_empty (permissions), BZ_IMPORTANCE_UNIMPORTANT, "permissions-sandboxed-symbolic", _ ("No Permissions"), _ ("App is fully sandboxed"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_NETWORK) != 0, BZ_IMPORTANCE_INFORMATION, "network-wireless-symbolic", _ ("Network Access"), _ ("Can access the internet"), "network-wireless-disabled-symbolic", _ ("No Network Access"), _ ("Cannot access the internet")); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_DEVICES) != 0, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_NETWORK) ? BZ_IMPORTANCE_WARNING : BZ_IMPORTANCE_INFORMATION, "camera-photo-symbolic", _ ("User Device Access"), _ ("Can access devices such as webcams or gaming controllers"), "camera-disabled-symbolic", _ ("No User Device Access"), _ ("Cannot access devices such as webcams or gaming controllers")); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_INPUT_DEVICES) != 0, BZ_IMPORTANCE_INFORMATION, "input-keyboard-symbolic", _ ("Input Device Access"), _ ("Can access input devices"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_AUDIO_DEVICES) != 0, BZ_IMPORTANCE_INFORMATION, "permissions-microphone-symbolic", _ ("Microphone Access and Audio Playback"), _ ("Can listen using microphones and play audio without asking permission"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_SYSTEM_DEVICES) != 0, BZ_IMPORTANCE_WARNING, "permissions-system-devices-symbolic", _ ("System Device Access"), _ ("Can access system devices which require elevated permissions"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_SCREEN) != 0, BZ_IMPORTANCE_WARNING, "permissions-screen-contents-symbolic", _ ("Screen Contents Access"), _ ("Can access the contents of the screen or other windows"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_X11) != 0, BZ_IMPORTANCE_IMPORTANT, "permissions-legacy-windowing-system-symbolic", _ ("Legacy Windowing System"), _ ("Always uses a legacy windowing system (X11)"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX) != 0, BZ_IMPORTANCE_IMPORTANT, "earth-symbolic", _ ("Arbitrary Permissions"), _ ("Can acquire arbitrary permissions"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_SETTINGS) != 0, BZ_IMPORTANCE_WARNING, "emblem-system-symbolic", _ ("User Settings"), _ ("Can access and change user settings"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL) != 0, BZ_IMPORTANCE_IMPORTANT, "drive-harddisk-symbolic", _ ("Full File System Read/Write Access"), _ ("Can read and write all data on the file system"), NULL, NULL, NULL); add_row_if_permission (store, ((perm_flags & BZ_APP_PERMISSIONS_FLAGS_HOME_FULL) != 0 && !(perm_flags & BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL)), BZ_IMPORTANCE_IMPORTANT, "user-home-symbolic", _ ("Home Folder Read/Write Access"), _ ("Can read and write all data in your home directory"), NULL, NULL, NULL); add_row_if_permission (store, ((perm_flags & BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ) != 0 && !(perm_flags & BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL)), BZ_IMPORTANCE_IMPORTANT, "folder-symbolic", _ ("Full File System Read Access"), _ ("Can read all data on the file system"), NULL, NULL, NULL); add_row_if_permission (store, ((perm_flags & BZ_APP_PERMISSIONS_FLAGS_HOME_READ) != 0 && !(perm_flags & (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL | BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ))), BZ_IMPORTANCE_IMPORTANT, "user-home-symbolic", _ ("Home Folder Read Access"), _ ("Can read all data in your home directory"), NULL, NULL, NULL); add_row_if_permission (store, ((perm_flags & BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_FULL) != 0 && !(perm_flags & (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL | BZ_APP_PERMISSIONS_FLAGS_HOME_FULL))), fs_importance, "folder-download-symbolic", _ ("Download Folder Read/Write Access"), _ ("Can read and write all data in your downloads directory"), NULL, NULL, NULL); add_row_if_permission (store, ((perm_flags & BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_READ) != 0 && !(perm_flags & (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL | BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ | BZ_APP_PERMISSIONS_FLAGS_HOME_FULL | BZ_APP_PERMISSIONS_FLAGS_HOME_READ))), fs_importance, "folder-download-symbolic", _ ("Download Folder Read Access"), _ ("Can read all data in your downloads directory"), NULL, NULL, NULL); for (i = 0; filesystem_full != NULL && i < filesystem_full->len; i++) { const BzFilesystemPath *path = g_ptr_array_index (filesystem_full, i); g_autofree char *fs_title = bz_filesystem_path_to_display_string (path); const char *fs_icon = bz_filesystem_path_to_icon_name (path); if (perm_flags & BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL) continue; if ((perm_flags & BZ_APP_PERMISSIONS_FLAGS_HOME_FULL) && path->type == BZ_FILESYSTEM_PATH_HOME_SUBDIR) continue; add_row_if_permission (store, TRUE, fs_importance, fs_icon, fs_title, _ ("Can read and write all data in the directory"), NULL, NULL, NULL); } for (i = 0; filesystem_read != NULL && i < filesystem_read->len; i++) { const BzFilesystemPath *path = g_ptr_array_index (filesystem_read, i); g_autofree char *fs_title = bz_filesystem_path_to_display_string (path); const char *fs_icon = bz_filesystem_path_to_icon_name (path); if (perm_flags & BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL) continue; if ((perm_flags & (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ | BZ_APP_PERMISSIONS_FLAGS_HOME_FULL | BZ_APP_PERMISSIONS_FLAGS_HOME_READ)) && path->type == BZ_FILESYSTEM_PATH_HOME_SUBDIR) continue; add_row_if_permission (store, TRUE, fs_importance, fs_icon, fs_title, _ ("Can read all data in the directory"), NULL, NULL, NULL); } add_row_if_permission (store, !(perm_flags & (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL | BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ | BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_OTHER | BZ_APP_PERMISSIONS_FLAGS_HOME_FULL | BZ_APP_PERMISSIONS_FLAGS_HOME_READ | BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_FULL | BZ_APP_PERMISSIONS_FLAGS_DOWNLOADS_READ)) && filesystem_read == NULL && filesystem_full == NULL, BZ_IMPORTANCE_UNIMPORTANT, "folder-symbolic", _ ("No File System Access"), _ ("Cannot access the file system at all"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_SYSTEM_BUS) != 0, BZ_IMPORTANCE_WARNING, "emblem-system-symbolic", _ ("Uses System Services"), _ ("Can request data from non-portal system services"), NULL, NULL, NULL); add_row_if_permission (store, (perm_flags & BZ_APP_PERMISSIONS_FLAGS_SESSION_BUS) != 0, BZ_IMPORTANCE_WARNING, "emblem-system-symbolic", _ ("Uses Session Services"), _ ("Can request data from non-portal session services"), NULL, NULL, NULL); for (i = 0; i < n_bus_policies; i++) { const BzBusPolicy *policy = bus_policies[i]; const char *well_known_title = NULL; const char *well_known_desc = NULL; g_autofree char *bus_title = NULL; const char *bus_description = NULL; gboolean is_system_tray = FALSE; is_system_tray = g_str_equal (policy->bus_name, "org.kde.StatusNotifierWatcher") || g_str_equal (policy->bus_name, "com.canonical.indicator.application"); if (is_system_tray && has_system_tray) // if not filtered, then there would be 2 entries for tray icon continue; if (is_system_tray) has_system_tray = TRUE; if (lookup_well_known_bus_policy (policy->bus_name, &well_known_title, &well_known_desc)) { bus_title = g_strdup (well_known_title); bus_description = well_known_desc; } else { bus_title = format_bus_policy_title (policy); bus_description = format_bus_policy_subtitle (policy); } add_row_if_permission (store, TRUE, BZ_IMPORTANCE_WARNING, "emblem-system-symbolic", bus_title, bus_description, NULL, NULL, NULL); } add_row_if_permission (store, !(perm_flags & (BZ_APP_PERMISSIONS_FLAGS_SYSTEM_BUS | BZ_APP_PERMISSIONS_FLAGS_SESSION_BUS | BZ_APP_PERMISSIONS_FLAGS_BUS_POLICY_OTHER)) && n_bus_policies == 0, BZ_IMPORTANCE_UNIMPORTANT, "emblem-system-symbolic", _ ("No Service Access"), _ ("Cannot access non-portal session or system services at all"), NULL, NULL, NULL); } add_row_if_permission (store, is_verified, BZ_IMPORTANCE_UNIMPORTANT, "verified-checkmark-symbolic", _ ("Verified App Developer"), _ ("The developer of this app has been verified to be who they say they are"), NULL, NULL, NULL); if (!is_foss) { add_row_if_permission (store, TRUE, BZ_IMPORTANCE_INFORMATION, "proprietary-code-symbolic", _ ("Proprietary Code"), _ ("The source code is not public, so it cannot be independently audited and might be unsafe"), NULL, NULL, NULL); } else { add_row_if_permission (store, FALSE, BZ_IMPORTANCE_NEUTRAL, NULL, NULL, NULL, "auditable-code-symbolic", _ ("Auditable Code"), _ ("The source code is public and can be independently audited, which makes the app more likely to be safe")); } g_clear_object (&permissions); return G_LIST_MODEL (store); } char * bz_safety_calculator_get_top_icon (BzEntry *entry, int index) { g_autoptr (GListModel) model = NULL; const char *icons[2] = { NULL, NULL }; guint icon_count = 0; guint n_items = 0; BzImportance priorities[] = { BZ_IMPORTANCE_IMPORTANT, BZ_IMPORTANCE_WARNING, BZ_IMPORTANCE_INFORMATION }; g_return_val_if_fail (BZ_IS_ENTRY (entry), NULL); if (index < 0 || index > 1) return NULL; model = bz_safety_calculator_analyze_entry (entry); n_items = g_list_model_get_n_items (model); for (guint priority_idx = 0; priority_idx < 3 && icon_count < 2; priority_idx++) { BzImportance current_priority = priorities[priority_idx]; for (guint i = 0; i < n_items && icon_count < 2; i++) { g_autoptr (BzSafetyRow) row = g_list_model_get_item (model, i); BzImportance importance = BZ_IMPORTANCE_UNIMPORTANT; const char *icon_name = NULL; gboolean duplicate = FALSE; g_object_get (row, "importance", &importance, "icon-name", &icon_name, NULL); if (importance != current_priority) continue; if (icon_name == NULL || *icon_name == '\0') continue; for (guint j = 0; j < icon_count; j++) { if (g_strcmp0 (icons[j], icon_name) == 0) { duplicate = TRUE; break; } } if (!duplicate) { icons[icon_count] = icon_name; icon_count++; } } } if (icon_count == 0 || icons[index] == NULL) return NULL; return g_strdup (icons[index]); } BzImportance bz_safety_calculator_calculate_rating (BzEntry *entry) { g_autoptr (GListModel) model = NULL; BzImportance max_rating = BZ_IMPORTANCE_UNIMPORTANT; guint n_items = 0; guint i = 0; gboolean is_foss = FALSE; g_return_val_if_fail (BZ_IS_ENTRY (entry), BZ_IMPORTANCE_UNIMPORTANT); model = bz_safety_calculator_analyze_entry (entry); n_items = g_list_model_get_n_items (model); is_foss = bz_entry_get_is_foss (entry); for (i = 0; i < n_items; i++) { g_autoptr (BzSafetyRow) row = g_list_model_get_item (model, i); BzImportance rating = BZ_IMPORTANCE_UNIMPORTANT; g_object_get (row, "importance", &rating, NULL); max_rating = MAX (max_rating, rating); } if (is_foss && max_rating == BZ_IMPORTANCE_WARNING) { max_rating = BZ_IMPORTANCE_INFORMATION; } if (is_foss && max_rating == BZ_IMPORTANCE_IMPORTANT) { max_rating = BZ_IMPORTANCE_WARNING; } return max_rating; } BzHighRiskGroup bz_safety_calculator_get_high_risk_groups (BzEntry *entry) { BzAppPermissions *permissions = NULL; BzAppPermissionsFlags perm_flags = BZ_APP_PERMISSIONS_FLAGS_NONE; BzHighRiskGroup result = BZ_HIGH_RISK_GROUP_NONE; g_return_val_if_fail (BZ_IS_ENTRY (entry), BZ_HIGH_RISK_GROUP_NONE); g_object_get (entry, "permissions", &permissions, NULL); if (permissions == NULL) return BZ_HIGH_RISK_GROUP_NONE; perm_flags = bz_app_permissions_get_flags (permissions); if (perm_flags & BZ_APP_PERMISSIONS_FLAGS_X11) result |= BZ_HIGH_RISK_GROUP_X11; if (perm_flags & (BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_FULL | BZ_APP_PERMISSIONS_FLAGS_FILESYSTEM_READ | BZ_APP_PERMISSIONS_FLAGS_HOME_FULL | BZ_APP_PERMISSIONS_FLAGS_HOME_READ | BZ_APP_PERMISSIONS_FLAGS_ESCAPE_SANDBOX)) result |= BZ_HIGH_RISK_GROUP_DISK; g_clear_object (&permissions); return result; } static char * format_bus_policy_title (const BzBusPolicy *bus_policy) { if (bus_policy->bus_type == G_BUS_TYPE_SYSTEM) { return g_strdup_printf (_ ("Use the %s System Service"), bus_policy->bus_name); } else if (bus_policy->bus_type == G_BUS_TYPE_SESSION) { return g_strdup_printf (_ ("Use the %s Session Service"), bus_policy->bus_name); } else { return g_strdup_printf (_ ("Use the %s Service"), bus_policy->bus_name); } } static const char * format_bus_policy_subtitle (const BzBusPolicy *bus_policy) { switch (bus_policy->permission) { case BZ_BUS_POLICY_PERMISSION_SEE: return _ ("Can see the non-portal service"); case BZ_BUS_POLICY_PERMISSION_TALK: return _ ("Can talk to the non-portal service"); case BZ_BUS_POLICY_PERMISSION_OWN: return _ ("Can own the non-portal service"); case BZ_BUS_POLICY_PERMISSION_NONE: case BZ_BUS_POLICY_PERMISSION_UNKNOWN: default: g_assert_not_reached (); } } static gboolean lookup_well_known_bus_policy (const char *bus_name, const char **out_title, const char **out_description) { if (g_str_equal (bus_name, "com.canonical.AppMenu.Registrar")) { *out_title = _ ("Global Menu Integration"); *out_description = _ ("Can display its menus in a global menu bar"); return TRUE; } if (g_str_equal (bus_name, "org.kde.kconfig.notify")) { *out_title = _ ("KDE Settings Integration"); *out_description = _ ("Can detect when KDE desktop settings change"); return TRUE; } if (g_str_equal (bus_name, "org.kde.KGlobalSettings")) { *out_title = _ ("KDE Global Settings"); *out_description = _ ("Can read KDE desktop preferences like fonts and colors"); return TRUE; } if (g_str_equal (bus_name, "org.freedesktop.secrets")) { *out_title = _ ("Secret Storage Service"); *out_description = _ ("Can store and retrieve its own passwords using the system keyring"); return TRUE; } if (g_str_equal (bus_name, "org.freedesktop.Notifications")) { *out_title = _ ("Desktop Notifications Service"); *out_description = _ ("Can send desktop notifications"); return TRUE; } if (g_str_equal (bus_name, "org.kde.StatusNotifierWatcher") || g_str_equal (bus_name, "com.canonical.indicator.application")) { *out_title = _ ("System Tray Integration"); *out_description = _ ("Can display an icon in the system tray"); return TRUE; } if (g_str_equal (bus_name, "org.kde.kdeconnect")) { *out_title = _ ("KDE Connect Integration"); *out_description = _ ("Can interact with devices paired via KDE Connect"); return TRUE; } return FALSE; } static void add_row_if_permission (GListStore *store, gboolean has_permission, BzImportance item_rating, const char *icon_name_with_permission, const char *title_with_permission, const char *description_with_permission, const char *icon_name_without_permission, const char *title_without_permission, const char *description_without_permission) { BzSafetyRow *row = NULL; if (!has_permission && title_without_permission == NULL) return; row = bz_safety_row_new (); g_object_set (row, "importance", has_permission ? item_rating : BZ_IMPORTANCE_UNIMPORTANT, "icon-name", has_permission ? icon_name_with_permission : icon_name_without_permission, "title", has_permission ? title_with_permission : title_without_permission, "subtitle", has_permission ? description_with_permission : description_without_permission, NULL); g_list_store_append (store, row); g_object_unref (row); } ������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/safety-calculator.h���������������������������������������������������0000664�0000000�0000000�00000002632�15240005042�0021723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* safety-calculator.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include "bz-context-row.h" #include "bz-entry.h" #include "bz-safety-row.h" #include <gio/gio.h> G_BEGIN_DECLS typedef enum { BZ_HIGH_RISK_GROUP_NONE = 0, BZ_HIGH_RISK_GROUP_X11 = 1 << 0, BZ_HIGH_RISK_GROUP_DISK = 1 << 1, } BzHighRiskGroup; #define BZ_TYPE_HIGH_RISK_GROUP (bz_high_risk_group_get_type ()) GListModel * bz_safety_calculator_analyze_entry (BzEntry *entry); BzImportance bz_safety_calculator_calculate_rating (BzEntry *entry); char * bz_safety_calculator_get_top_icon (BzEntry *entry, int index); BzHighRiskGroup bz_safety_calculator_get_high_risk_groups (BzEntry *entry); G_END_DECLS ������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/search-index-write.c��������������������������������������������������0000664�0000000�0000000�00000011501�15240005042�0021771�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* search-index-write.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #define G_LOG_DOMAIN "BAZAAR::SEARCH-INDEX-WRITE" #define BAZAAR_MODULE "search-index-writer" #include "bz-entry-group.h" #include "search-index-write.h" #define INDEX_MAGIC "BZSI" #define INDEX_VERSION 1 #define DESCRIPTION_MAX_LEN 200 static gboolean write_string (GDataOutputStream *out, const char *str, gsize max_len, GError **error); static gboolean entry_group_is_eligible (BzEntryGroup *group); static const char *entry_group_icon_path (BzEntryGroup *group); gboolean bz_write_search_index (GListModel *groups, const char *out_path, GError **error) { g_autofree char *tmp_path = NULL; g_autoptr (GFile) tmp_file = NULL; g_autoptr (GFile) final_file = NULL; g_autoptr (GOutputStream) base_out = NULL; g_autoptr (GDataOutputStream) out = NULL; guint n_groups = 0; guint32 count = 0; gboolean result = FALSE; g_return_val_if_fail (G_IS_LIST_MODEL (groups), FALSE); g_return_val_if_fail (out_path != NULL, FALSE); tmp_path = g_strdup_printf ("%s.tmp", out_path); tmp_file = g_file_new_for_path (tmp_path); base_out = G_OUTPUT_STREAM (g_file_replace ( tmp_file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, error)); if (base_out == NULL) return FALSE; out = g_data_output_stream_new (base_out); g_data_output_stream_set_byte_order (out, G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN); if (!g_output_stream_write_all (G_OUTPUT_STREAM (out), INDEX_MAGIC, 4, NULL, NULL, error)) return FALSE; if (!g_data_output_stream_put_uint32 (out, INDEX_VERSION, NULL, error)) return FALSE; n_groups = g_list_model_get_n_items (groups); for (guint i = 0; i < n_groups; i++) { g_autoptr (BzEntryGroup) group = g_list_model_get_item (groups, i); if (entry_group_is_eligible (group)) count++; } if (!g_data_output_stream_put_uint32 (out, count, NULL, error)) return FALSE; for (guint i = 0; i < n_groups; i++) { g_autoptr (BzEntryGroup) group = g_list_model_get_item (groups, i); const char *icon_path = NULL; if (!entry_group_is_eligible (group)) continue; icon_path = entry_group_icon_path (group); if (!write_string (out, bz_entry_group_get_id (group), 0, error) || !write_string (out, bz_entry_group_get_title (group), 0, error) || !write_string (out, bz_entry_group_get_developer (group), 0, error) || !write_string (out, bz_entry_group_get_description (group), DESCRIPTION_MAX_LEN, error) || !write_string (out, bz_entry_group_get_search_tokens (group), 0, error) || !write_string (out, icon_path, 0, error)) return FALSE; } if (!g_output_stream_close (G_OUTPUT_STREAM (out), NULL, error)) return FALSE; final_file = g_file_new_for_path (out_path); result = g_file_move ( tmp_file, final_file, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, error); return result; } static gboolean write_string (GDataOutputStream *out, const char *str, gsize max_len, GError **error) { gsize len = 0; if (str != NULL) { len = strlen (str); if (max_len > 0 && len > max_len) len = max_len; } if (!g_data_output_stream_put_uint32 (out, (guint32) len, NULL, error)) return FALSE; if (len > 0) return g_output_stream_write_all (G_OUTPUT_STREAM (out), str, len, NULL, NULL, error); return TRUE; } static gboolean entry_group_is_eligible (BzEntryGroup *group) { return bz_entry_group_is_searchable (group) && !bz_entry_group_is_addon (group) && bz_entry_group_get_removable (group) == 0 && bz_entry_group_get_eol (group) == NULL; } static const char * entry_group_icon_path (BzEntryGroup *group) { GIcon *icon = NULL; icon = bz_entry_group_get_mini_icon (group); if (icon == NULL || !G_IS_FILE_ICON (icon)) return NULL; return g_file_peek_path (g_file_icon_get_file (G_FILE_ICON (icon))); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/search-index-write.h��������������������������������������������������0000664�0000000�0000000�00000002261�15240005042�0022001�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* search-index-write.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gio/gio.h> G_BEGIN_DECLS /* * HEADER: * char[4] "BZSI" * uint32 version * uint32 entry count * * CONTENT: * id * title * developer * description (cut off) * search_tokens * icon_path * * with strings as uint32 length + uint8[] bytes * */ gboolean bz_write_search_index (GListModel *groups, const char *out_path, GError **error); G_END_DECLS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/search-index.c��������������������������������������������������������0000664�0000000�0000000�00000016330�15240005042�0020646�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* search-index.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include "search-index.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <sys/stat.h> #define INDEX_MAGIC "BZSI" static int read_u32 (FILE *f, unsigned int *out); static char *read_field (FILE *f); static void free_entries (SearchIndexEntry *entries, unsigned int count); static double score_field (const char *term, const char *field, double weight); static double score_entry (const SearchIndexEntry *e, const char *const *terms, int n_terms); static int cmp_matches (const void *a, const void *b); SearchIndex * search_index_open (const char *path) { FILE *f = NULL; char magic[4] = { 0 }; unsigned int version = 0; unsigned int count = 0; SearchIndexEntry *entries = NULL; SearchIndex *idx = NULL; struct stat st = { 0 }; unsigned int i = 0; f = fopen (path, "rb"); if (f == NULL) return NULL; if (fread (magic, 1, 4, f) != 4 || memcmp (magic, INDEX_MAGIC, 4) != 0) { fclose (f); return NULL; } if (read_u32 (f, &version) < 0 || read_u32 (f, &count) < 0) { fclose (f); return NULL; } entries = calloc (count, sizeof (SearchIndexEntry)); if (entries == NULL) { fclose (f); return NULL; } for (i = 0; i < count; i++) { entries[i].id = read_field (f); entries[i].title = read_field (f); entries[i].developer = read_field (f); entries[i].description = read_field (f); entries[i].search_tokens = read_field (f); entries[i].icon_path = read_field (f); if (entries[i].id == NULL || entries[i].title == NULL) { free_entries (entries, count); fclose (f); return NULL; } } fclose (f); idx = calloc (1, sizeof (SearchIndex)); if (idx == NULL) { free_entries (entries, count); return NULL; } idx->path = strdup (path); idx->entries = entries; idx->count = count; if (stat (path, &st) == 0) idx->mtime = st.st_mtime; return idx; } void search_index_close (SearchIndex *idx) { if (idx == NULL) return; free_entries (idx->entries, idx->count); free (idx->path); free (idx); } int search_index_reload_if_stale (SearchIndex **idx_ptr) { struct stat st = { 0 }; SearchIndex *idx = NULL; SearchIndex *fresh = NULL; idx = *idx_ptr; if (idx == NULL) return 0; if (stat (idx->path, &st) != 0) return 0; if (st.st_mtime == idx->mtime) return 0; fresh = search_index_open (idx->path); if (fresh == NULL) return 0; search_index_close (idx); *idx_ptr = fresh; return 1; } size_t search_index_query (SearchIndex *idx, const char *const *terms, int n_terms, SearchIndexMatch *out, size_t max_results) { size_t n_matches = 0; unsigned int i = 0; double score = 0.0; if (idx == NULL || n_terms <= 0) return 0; for (i = 0; i < idx->count && n_matches < max_results * 8; i++) { score = score_entry (&idx->entries[i], terms, n_terms); if (score > 0.0 && n_matches < max_results * 8) { if (n_matches < max_results) { out[n_matches].entry = &idx->entries[i]; out[n_matches].score = score; } n_matches++; } } if (n_matches > max_results) n_matches = max_results; qsort (out, n_matches, sizeof (SearchIndexMatch), cmp_matches); return n_matches; } const SearchIndexEntry * search_index_find (SearchIndex *idx, const char *id) { unsigned int i = 0; if (idx == NULL || id == NULL) return NULL; for (i = 0; i < idx->count; i++) { if (strcmp (idx->entries[i].id, id) == 0) return &idx->entries[i]; } return NULL; } static int read_u32 (FILE *f, unsigned int *out) { unsigned char b[4] = { 0 }; if (fread (b, 1, 4, f) != 4) return -1; *out = (unsigned int) b[0] | ((unsigned int) b[1] << 8) | ((unsigned int) b[2] << 16) | ((unsigned int) b[3] << 24); return 0; } static char * read_field (FILE *f) { unsigned int len = 0; char *str = NULL; if (read_u32 (f, &len) < 0) return NULL; if (len == 0) return NULL; str = malloc (len + 1); if (str == NULL) return NULL; if (fread (str, 1, len, f) != len) { free (str); return NULL; } str[len] = '\0'; return str; } static void free_entries (SearchIndexEntry *entries, unsigned int count) { unsigned int i = 0; if (entries == NULL) return; for (i = 0; i < count; i++) { free (entries[i].id); free (entries[i].title); free (entries[i].developer); free (entries[i].description); free (entries[i].search_tokens); free (entries[i].icon_path); } free (entries); } static double score_field (const char *term, const char *field, double weight) { const char *hit = NULL; size_t term_len = 0; size_t field_len = 0; if (field == NULL || term == NULL || *term == '\0') return 0.0; hit = strcasestr (field, term); if (hit == NULL) return 0.0; term_len = strlen (term); field_len = strlen (field); if (field_len == 0) return 0.0; return weight * ((double) (term_len * term_len) / (double) field_len); } static double score_entry (const SearchIndexEntry *e, const char *const *terms, int n_terms) { double total = 0.0; int i = 0; const char *term = NULL; double term_score = 0.0; for (i = 0; i < n_terms; i++) { term = terms[i]; term_score = 0.0; if (term == NULL || *term == '\0') continue; term_score += score_field (term, e->title, 2.0); term_score += score_field (term, e->developer, 1.0); term_score += score_field (term, e->description, 1.0); term_score += score_field (term, e->search_tokens, 1.5); if (term_score <= 0.0) return 0.0; total += term_score; } return total; } static int cmp_matches (const void *a, const void *b) { const SearchIndexMatch *ma = a; const SearchIndexMatch *mb = b; if (mb->score > ma->score) return 1; if (mb->score < ma->score) return -1; return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/search-index.h��������������������������������������������������������0000664�0000000�0000000�00000003220�15240005042�0020645�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* search-index.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <stddef.h> #include <time.h> typedef struct { char *id; char *title; char *developer; char *description; char *search_tokens; char *icon_path; } SearchIndexEntry; typedef struct { char *path; time_t mtime; SearchIndexEntry *entries; unsigned int count; } SearchIndex; typedef struct { const SearchIndexEntry *entry; double score; } SearchIndexMatch; SearchIndex * search_index_open (const char *path); void search_index_close (SearchIndex *idx); int search_index_reload_if_stale (SearchIndex **idx); size_t search_index_query (SearchIndex *idx, const char *const *terms, int n_terms, SearchIndexMatch *out, size_t max_results); const SearchIndexEntry * search_index_find (SearchIndex *idx, const char *id); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/shell-search-provider-dbus-interfaces.xml�����������������������������0000664�0000000�0000000�00000003503�15240005042�0026126�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> <!-- This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see <http://www.gnu.org/licenses/>. --> <node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> <interface name='org.gnome.Shell.SearchProvider2'> <method name='GetInitialResultSet'> <arg type='as' name='Terms' direction='in' /> <arg type='as' name='Results' direction='out' /> </method> <method name = 'GetSubsearchResultSet'> <arg type='as' name='PreviousResults' direction='in' /> <arg type='as' name='Terms' direction='in' /> <arg type='as' name='Results' direction='out' /> </method> <method name = 'GetResultMetas'> <arg type='as' name='Results' direction='in' /> <arg type='aa{sv}' name='Metas' direction='out' /> </method> <method name = 'ActivateResult'> <arg type='s' name='Result' direction='in' /> <arg type='as' name='Terms' direction='in' /> <arg type='u' name='Timestamp' direction='in' /> </method> <method name = 'LaunchSearch'> <arg type='as' name='Terms' direction='in' /> <arg type='u' name='Timestamp' direction='in' /> </method> </interface> </node> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/shortcuts-dialog.blp��������������������������������������������������0000664�0000000�0000000�00000002626�15240005042�0022125�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������using Gtk 4.0; using Adw 1; Adw.ShortcutsDialog shortcuts_dialog { Adw.ShortcutsSection navigation_section { title: C_("shortcut window", "Navigation"); Adw.ShortcutsItem { title: C_("shortcut window", "Open Explore Page"); action-name: "window.open-flathub-page"; accelerator: "<Control>e"; } Adw.ShortcutsItem { title: C_("shortcut window", "Open Library Page"); action-name: "window.open-library"; accelerator: "<Control>d"; } Adw.ShortcutsItem { title: C_("shortcut window", "Open Search Page"); action-name: "app.search('')"; } } Adw.ShortcutsSection remotes_section { title: C_("shortcut window", "Remotes"); Adw.ShortcutsItem { title: C_("shortcut window", "Sync Remotes"); action-name: "app.sync-remotes"; } } Adw.ShortcutsSection general_section { title: C_("shortcut window", "General"); Adw.ShortcutsItem { title: C_("shortcut window", "Open Preferences"); action-name: "app.preferences"; } Adw.ShortcutsItem { title: C_("shortcut window", "Show Shortcuts"); action-name: "app.shortcuts"; } Adw.ShortcutsItem { title: C_("shortcut window", "Close Window"); action-name: "window.quit"; accelerator: "<Control>w"; } Adw.ShortcutsItem { title: C_("shortcut window", "Quit Bazaar"); action-name: "app.quit"; } } }����������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/spdx.c����������������������������������������������������������������0000664�0000000�0000000�00000003170�15240005042�0017250�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* spdx.c * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include <appstream.h> #include "spdx.h" gboolean bz_spdx_is_valid (const char *license_id) { g_autofree char *url = NULL; g_return_val_if_fail (license_id != NULL, FALSE); url = as_get_license_url (license_id); return url != NULL; } char * bz_spdx_get_url (const char *license_id) { g_return_val_if_fail (license_id != NULL, NULL); return as_get_license_url (license_id); } char * bz_spdx_get_name (const char *license_id) { char *result = NULL; g_return_val_if_fail (license_id != NULL, NULL); if (bz_spdx_is_proprietary (license_id)) return g_strdup ("Proprietary"); result = as_license_to_spdx_id (license_id); if (result == NULL) return g_strdup (license_id); return result; } gboolean bz_spdx_is_proprietary (const char *license_id) { g_return_val_if_fail (license_id != NULL, FALSE); return g_str_has_prefix (license_id, "LicenseRef-proprietary"); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/spdx.h����������������������������������������������������������������0000664�0000000�0000000�00000002000�15240005042�0017244�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* spdx.h * * Copyright 2025 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib.h> G_BEGIN_DECLS gboolean bz_spdx_is_valid (const char *license_id); char * bz_spdx_get_url (const char *license_id); char * bz_spdx_get_name (const char *license_id); gboolean bz_spdx_is_proprietary (const char *license_id); G_END_DECLS bazaar-org-bazaar-48f93f4/src/style.css�������������������������������������������������������������0000664�0000000�0000000�00000052510�15240005042�0020002�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������:root { --hc-border: color(srgb 0 0 0.023 / 50%); } @media (prefers-color-scheme: dark) { :root { --hc-border: color(srgb 1 1 1 / 50%); } } .bz-monospace { font-size: smaller; font-family: monospace; } .bz-small-button { padding: 1px; margin: 0; } .bz-small-button > * { margin: 0; padding: 0; } .bz-debug { background: linear-gradient(to top, #ffaf4c, #ffc04c); border-color: black; border-radius: 6px; border-style: solid; border-width: 1px; color: black; padding: 3px; } .bz-debug button { border-color: black; border-style: dashed; border-width: 1px; border-radius: 3px; padding-top: 0px; padding-bottom: 0px; padding-left: 2px; padding-right: 2px; } .bz-donations-dialog { background: linear-gradient(to bottom left, #1f2d8f, #159eff); color: white; } .bz-donations-dialog button:focus { outline-color: white; } .bz-donations-banner { --banner-color: var(--accent-bg-color); } .updates-amount { background-color: white; color: var(--accent-bg-color); font-size: 0.60em; border-radius: 9999px; font-weight: 900; } .updates-amount-border { background-color: var(--accent-bg-color); border-radius: 9999px; } .search-box { outline: 0 solid transparent; outline-offset: 6px; transition-property: outline, outline-offset; transition-duration: 200ms; padding: 0px 12px; border-radius: 9999px; background-color: var(--card-bg-color); } .search-box:focus-within { outline-color: color-mix(in srgb, var(--accent-color), transparent); outline-offset: 0; outline-width: 2px; } .search-box.hide-focus:focus-within { outline-color: transparent; } @media (prefers-color-scheme: light) { .search-box { background-color: var(--shade-color); } } @media (prefers-contrast: more) { .search-box { box-shadow: inset 0 0 0 1px var(--hc-border); } .search-box:focus-within { box-shadow: none; outline-color: var(--accent-color); } } .search-box > text placeholder { opacity: 0.55; } .searchbar-button, .searchbar-button > button { min-height: 24px; min-width: 24px; } .search-pill { font-weight: 450; } .search-grid { background-color: var(--window-bg-color); } .search-grid > child { padding: 0; margin: 6px 6px; border-radius: 12px; transition: background-color 200ms; } .narrow .search-grid > child { margin: 6px 12px; } .card-row-btn { border-radius: 0; } .screenshot { border-radius: 20px; } .browser-banner { border-radius: 25px; background-color: transparent; } .browser-banner-title { font-size: 3.2em; font-weight: bolder; } .browser-banner-subtitle { font-size: 2.0em; font-weight: bold; } .browser-banner-description { font-size: 1.33em; font-weight: normal; } .installed-size { font-weight: 500; } .verified { color: @blue_2; } .app-developer link{ color: @blue_2; text-decoration: none; } .support { --accent-fg-color : #f06292; --accent-bg-color : alpha(#f06292, 0.25); --accent-color : #f06292; } .favorite { --accent-fg-color: @accent_bg_color; --accent-bg-color : alpha(@accent_bg_color, 0.25); --accent-color: @accent_color; } .favorite * { --accent-fg-color: @accent_fg_color; --accent-bg-color: @accent_bg_color; --accent-color: @accent_color; } .orange { --accent-fg-color: @orange_5; --accent-color: alpha(@orange_5, 0.25); --accent-bg-color: @orange_5; } .green { --accent-fg-color : #8ff0a4; --accent-bg-color : alpha(#2ec27e, 0.25); --accent-color : #8ff0a4; } .blue { --accent-fg-color : #99c1f1; --accent-bg-color : alpha(#1a5fb4, 0.25); --accent-color : #99c1f1; } .dark-blue { --accent-fg-color : #99c1f1; --accent-bg-color : #1a5fb4; --accent-color : #99c1f1; } @media (prefers-color-scheme: light) { .green { --accent-fg-color : #2ec27e; --accent-bg-color : alpha(#8ff0a4, 0.25); --accent-color : #2ec27e; } .blue { --accent-fg-color : #1a5fb4; --accent-bg-color : alpha(#99c1f1, 0.25); --accent-color : #1a5fb4; } .dark-blue { --accent-fg-color : #1C71D8; --accent-bg-color : #1C71D8; --accent-color : #1C71D8; } } .grey { --accent-color: alpha(@window_fg_color,0.75); --accent-bg-color: @window_fg_color; } .grey.colored { --accent-fg-color : @window_fg_color; --accent-bg-color : alpha(@window_fg_color,0.05); --accent-color : alpha(@window_fg_color,0.75); } @media (prefers-contrast: more) { .circular-lozenge { box-shadow: inset 0 0 0 1px; } } .circular-lozenge.green, .lozenge.green { color: @green_5; background-color: alpha(@green_3, .25); } .circular-lozenge.yellow, .lozenge.yellow { color: #ae7b03; background: alpha(@yellow_5, .25); } .circular-lozenge.orange, .lozenge.orange { color: @orange_5; background-color: alpha(@orange_4, .25); } .circular-lozenge.red, .lozenge.red { color: @red_4; background-color: alpha(@red_2, .25); } .circular-lozenge.grey, .lozenge.grey { color: #323237; background-color: color-mix(in srgb, var(--window-fg-color) 10%, transparent); } @media (prefers-color-scheme: dark) { .circular-lozenge.green, .lozenge.green { color: @green_1; background-color: alpha(@green_4, .25); } .circular-lozenge.yellow, .lozenge.yellow { color: @yellow_2; background: alpha(#cd9309, .25); } .circular-lozenge.orange, .lozenge.orange { color: @orange_1; } .circular-lozenge.red, .lozenge.red { color: #ff7b63; } .circular-lozenge.grey, .lozenge.grey { color: @window_fg_color; } } .floating-tooltip { background-color: var(--dialog-bg-color); } .floating-tooltip .monospace { font-size: 1em; } .flathub { --accent-color: alpha(@window_fg_color,0.75); --accent-bg-color: @window_fg_color; } .flathub-lotion { color: #fafafa; } .flathub-gunmetal { color: #251f32; } @media (prefers-color-scheme: dark) { .flathub { --accent-color: alpha(#fafafa,0.75); --accent-bg-color: #7847b8; } } .lozenge { font-size: 18px; font-weight: bold; border-radius: 99999px; padding: 5px 11px; min-width: 18px; min-height: 22px; color: var(--accent-color); background-color: alpha(var(--accent-bg-color),0.15); transition: background-color 150ms ease; } .lozenge.small { padding: 1px 9px; font-size: 12px; font-weight: bold; } .lozenge-ring-button { padding: 0; border-radius: 999999px; background: transparent; } .circular-lozenge { font-weight: bold; border-radius: 99999px; padding: 9px 11px; min-width: 18px; min-height: 22px; color: var(--accent-color); background-color: alpha(var(--accent-bg-color),0.15); } .circular-lozenge.large { font-size: 24px; padding: 15px 18px; min-width: 24px; min-height: 30px; } button.context-tile:hover .lozenge { background-color: alpha(var(--accent-bg-color),0.25); } button.context-tile:active .lozenge { background-color: alpha(var(--accent-bg-color),0.35); } .small-pill { padding: 2px 12px; border-radius: 99999px; } @media (prefers-contrast: more) { .small-pill { box-shadow: inset 0 0 0 1px; } .small-pill:focus-within { box-shadow: none; } } .medium-pill { border-radius: 99999px; } .colored { background-color: var(--accent-bg-color); color: var(--accent-color); } .card.colored { background-color: alpha(var(--accent-bg-color),0.15); color: var(--accent-color); } .small-pill.dimmed { background-color: alpha(@theme_fg_color, 0.15); } .small-pill.error { background-color: alpha(@error_bg_color, 0.15); } .installed-pill { background-color: alpha(@success_bg_color, 0.15); color: @success_color; font-weight: 500; font-size: 0.9em; padding: 2px 7px 2px 4.5px; } .circular-download-pill { padding: 5px; } .sp-section .installed-pill { background-color: alpha(@window_fg_color, 0.10); color: alpha(@window_fg_color, 0.75); } .download-size-pill{ padding: 2px 8px; } .flathub-page-section { border-radius: 10px; } .transaction-list-view row { margin: 0; padding: 0; } window.narrow .app-title { font-size: 16pt; } .developer-badge > button { padding: 0; background-color: transparent; } .developer-badge:focus > button { border-radius: 5px; } window.narrow .app-developer { font-size: small; } .context-tile { box-shadow: none; padding: 4px; } button.context-tile { background-color: transparent; } .context-tile-text { font-size: 10pt; font-weight: 500; } .wide-image { margin-top: -28px; margin-bottom: -28px; } .featured-carousel { outline-offset: 2px; } .screenshot-carousel.frame { border-width: 1px 0; } .screenshot-carousel button{ margin: 12px; } .carousel-box { background-color: var(--view-bg-color); } toggle-group.huge, toggle-group.huge * { border-radius: 9999px; } .huge > toggle { padding: 3px 12px; } .otg { background: linear-gradient(to right, #2f3d9f, #682889); } .wlg { background: linear-gradient(to right, #821756, #136673); } .after-hero { background: linear-gradient(to right, #11243a, #28215e, #4a2735); } .after-top-apps { background: linear-gradient(to right, #263914, #123d31, #11324c); } .after-first-category-block { background: linear-gradient(to right, #4a2f10, #4d1832, #2d2863); } .sp-section .card:not(:hover):not(:active) { background: transparent; } .sp-section .card { box-shadow: none; } @media (prefers-color-scheme: light) { .otg { background: linear-gradient(to right, #c6eaf8, #c4f3c9); } .wlg { background: linear-gradient(to right, #fdcde0, #b0e5f0); } .after-hero { background: linear-gradient(to right, #d7f7ff, #eee1ff, #ffe2c8); } .after-top-apps { background: linear-gradient(to right, #f4ffb8, #cdf7dc, #bfe9ff); } .after-first-category-block { background: linear-gradient(to right, #ffe3a3, #ffc3d8, #d8d2ff); } .sp-section .card:hover { background: rgba(255, 255, 255, 0.50); } .sp-section .card:active { background: rgba(255, 255, 255, 0.75); } } @media (prefers-contrast: more) { .card.category-tile, .card.app-tile { box-shadow: inset 0 0 0 1px var(--hc-border); } .card.category-tile:focus-within, .card.app-tile :focus-within { box-shadow: none; outline-color: var(--accent-color); } } .sp-section-image { margin-top: -95px; margin-bottom: -95px; } .sp-section-title { font-size: 3.5em; } .decorated-screenshot { margin: 0; padding: 0; background-color: transparent; } .indicator-box button { margin: 0 4px 4px 0; } .pip-button.osd-box { padding: 0; } .pip-button > button { margin: 5px; } window, headerbar, .global-search { transition: background-color 0.2s ease; } .header-osd windowcontrols button image { background-color: rgba(0, 0, 0, 0.65); color: white; background-image: none; } .osd-box { border-radius: 12px; background-color: rgba(0, 0, 0, 0.65); padding: 6px; color: white; } .view-dark { background-color: black; color: white; } .header-osd box.horizontal:not(.end) { background-color: rgba(0, 0, 0, 0.65); border-radius: 10px; } .accent-button { border-radius: 9999px; padding: 3px; background: var(--flag-gradient, var(--accent-bg-color)); min-width: 32px; min-height: 32px; outline: none; background-clip: content-box; background-origin: content-box; box-shadow: none; transition: transform 0.3s ease; } .accent-button.horizontal { transform: rotate(-90deg); } .accent-button-box > flowboxchild { padding: 0; background-color: transparent; } .accent-button:checked { box-shadow: 0 0 0 3px var(--accent-bg-color); } .accent-button:focus:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 30%, transparent); } .accent-button:checked:focus:focus-visible { box-shadow: 0 0 0 3px var(--accent-bg-color), 0 0 0 6px color-mix(in srgb, var(--accent-color) 30%, transparent); } /* Category buttons styling modified from GNOME Software*/ .category-tile { font-weight: 700; font-size: 13pt; color: white; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); padding-left: 32px; padding-right: 32px; outline-offset: 2px; } @media (prefers-contrast: more) { .category-tile { box-shadow: none; } } window.narrow .category-tile { font-size: 14pt; padding-left: 24px; padding-right: 24px; } /* All background gradients are at 135deg for consistency */ .category-tile.category-recently-updated { background: linear-gradient(135deg, #f9ef69, #26a269); color: #0c3020; text-shadow: 0 1px rgba(255, 255, 255, 0.35); } .category-tile.category-recently-updated:hover { background: linear-gradient(135deg, shade(#f9ef69, 1.1), shade(#26a269, 1.1)); } .category-tile.category-recently-updated:active { background: linear-gradient(135deg, shade(#f9ef69, 0.95), shade(#26a269, 0.95)); } .category-tile.category-recently-added { background: linear-gradient(135deg, #99a3eb, #495ade); } .category-tile.category-recently-added:hover { background: linear-gradient(135deg, shade(#99a3eb, 1.1), shade(#495ade, 1.1)); } .category-tile.category-recently-added:active { background: linear-gradient(135deg, shade(#99a3eb, .95), shade(#495ade, .95)); } .category-tile.category-trending { background: linear-gradient(135deg, #99c1f1, #3584e4); } .category-tile.category-trending:hover { background: linear-gradient(135deg, shade(#99c1f1, 1.1), shade(#3584e4, 1.1)); } .category-tile.category-trending:active { background: linear-gradient(135deg, shade(#99c1f1, .95), shade(#3584e4, .95)); } .category-tile.category-popular { background: linear-gradient(135deg, #f7ef74, #ffbf6f); color: rgba(0, 0, 0, 0.8); text-shadow: 0 1px rgba(255, 255, 255, 0.35); } .category-tile.category-popular:hover { background: linear-gradient(135deg, shade(#f7ef74, 1.1), shade(#ffbf6f, 1.1)); } .category-tile.category-popular:active { background: linear-gradient(135deg, shade(#f7ef74, .95), shade(#ffbf6f, .95)); } .category-tile.category-mobile { background: linear-gradient(135deg, #c6eaf8, #c4f3c9); color: rgba(0, 0, 0, 0.8); text-shadow: 0 1px rgba(255, 255, 255, 0.35); } .category-tile.category-mobile:hover { background: linear-gradient(135deg, shade(#c6eaf8, 1.05), shade(#c4f3c9, 1.05)); } .category-tile.category-mobile:active { background: linear-gradient(135deg, shade(#c6eaf8, .95), shade(#c4f3c9, .95)); } .category-tile.category-graphics { background: linear-gradient(135deg, #ce8cd7 0%, #2861c6 100%); } .category-tile.category-graphics:hover { background: linear-gradient(135deg, shade(#ce8cd7, 1.07) 0%, shade(#2861c6, 1.1) 100%); } .category-tile.category-graphics:active { background: linear-gradient(135deg, shade(#ce8cd7, .95) 0%, shade(#2861c6, .95) 100%); } .category-tile.category-development { background: linear-gradient(135deg, #444449 30%, #333337 100%); } .category-tile.category-development:hover { background: linear-gradient(135deg, shade(#444449, 1.13) 30%, shade(#333337, 1.13) 100%); } .category-tile.category-development:active { background: linear-gradient(135deg, shade(#444449, .95) 30%, shade(#333337, .95) 100%); } .category-tile.category-education { background: linear-gradient(135deg, #2ec27e 30%, #27a66c 100%); } .category-tile.category-education:hover { background: linear-gradient(135deg, shade(#2ec27e, 1.06) 30%, shade(#27a66c, 1.06) 100%); } .category-tile.category-education:active { background: linear-gradient(135deg, shade(#2ec27e, .95) 30%, shade(#27a66c, .95) 100%); } .category-tile.category-game { background: linear-gradient(135deg, #f9e2a7 0%, #eb5ec3 50%, #6d53e0 100%); color: #393484; text-shadow: 0 1px rgba(255, 255, 255, 0.35); } .category-tile.category-game:hover { background: linear-gradient(135deg, shade(#f9e2a7, 1.07) 0%, shade(#eb5ec3, 1.07) 50%, shade(#6d53e0, 1.07) 100%); } .category-tile.category-game:active { background: linear-gradient(135deg, shade(#f9e2a7, .97) 0%, shade(#eb5ec3, .95) 50%, shade(#6d53e0, 1.07) 100%); } .category-tile.category-network { background: linear-gradient(135deg, #ff6b35, #ed333b); } .category-tile.category-network:hover { background: linear-gradient(135deg, shade(#ff6b35, 1.1), shade(#ed333b, 1.1)); } .category-tile.category-network:active { background: linear-gradient(135deg, shade(#ff6b35, .95), shade(#ed333b, .95)); } .category-tile.category-office { padding: 1px; color: #1c71d8; text-shadow: 0 1px rgba(255, 255, 255, 0.35); background-color: #fdf8d7; background-image: linear-gradient(#deddda 1px, transparent 1px), linear-gradient(90deg, #deddda 1px, transparent 1px); background-size: 10px 10px, 10px 10px; background-position: -1px -4px, center -1px; } .category-tile.category-office:hover { background-color: shade(#fdf8d7, 1.05); background-image: linear-gradient(shade(#deddda, 1.04) 1px, transparent 1px), linear-gradient(90deg, shade(#deddda, 1.04) 1px, transparent 1px); } .category-tile.category-office:active { background-color: shade(#fdf8d7, .93); background-image: linear-gradient(shade(#deddda, .97) 1px, transparent 1px), linear-gradient(90deg, shade(#deddda, .97) 1px, transparent 1px); } .category-tile.category-audiovideo { background: linear-gradient(135deg, #ffcd3c 0%, #ff6b35 100%); } .category-tile.category-audiovideo:hover { background: linear-gradient(135deg, shade(#ffcd3c, 1.08) 0%, shade(#ff6b35, 1.08) 100%); } .category-tile.category-audiovideo:active { background: linear-gradient(135deg, shade(#ffcd3c, .95) 0%, shade(#ff6b35, .95) 100%); } .category-tile.category-science { background: linear-gradient(135deg, #8ff0a4 0%, #1c71d8 100%); } .category-tile.category-science:hover { background: linear-gradient(135deg, shade(#8ff0a4, 1.1) 0%, shade(#1c71d8, 1.1) 100%); } .category-tile.category-science:active { background: linear-gradient(135deg, shade(#8ff0a4, .95) 0%, shade(#1c71d8, .95) 100%); } .category-tile.category-system { background: linear-gradient(135deg, #6c757d 0%, #495057 100%); } .category-tile.category-system:hover { background: linear-gradient(135deg, shade(#6c757d, 1.15) 0%, shade(#495057, 1.15) 100%); } .category-tile.category-system:active { background: linear-gradient(135deg, shade(#6c757d, .95) 0%, shade(#495057, .95) 100%); } .category-tile.category-utility { color: #ee5f50; text-shadow: 0 1px rgba(255, 255, 255, 0.35); background: linear-gradient(135deg, #f6f5f4 0%, #deddda 100%); } .category-tile.category-utility:hover { background: linear-gradient(135deg, shade(#f6f5f4, 1.05) 0%, shade(#deddda, 1.05) 100%); } .category-tile.category-utility:active { background: linear-gradient(135deg, shade(#f6f5f4, .95) 0%, shade(#deddda, .95) 100%); } .category-tile.category-adwaita { text-shadow: 0 1px rgba(255, 255, 255, 0.35); background: linear-gradient(45deg, #1c71d8 0%, #57e289 100%); } .category-tile.category-adwaita:hover { background: linear-gradient(45deg, shade(#1c71d8, 1.15) 0%, shade(#57e289, 1.15) 100%); } .category-tile.category-adwaita:active { background: linear-gradient(45deg, shade(#1c71d8, .95) 0%, shade(#57e289, .95) 100%); } .category-tile.category-kde { text-shadow: 0 1px rgba(255, 255, 255, 0.35); background: linear-gradient(135deg, #3584e4 0%, #704dac 100%); } .category-tile.category-kde:hover { background: linear-gradient(135deg, shade(#3584e4, 1.08) 0%, shade(#704dac, 1.08) 100%); } .category-tile.category-kde:active { background: linear-gradient(135deg, shade(#3584e4, .95) 0%, shade(#704dac, .95) 100%); } .category-tile.category-adwaita image, .category-tile.category-kde image { -gtk-icon-shadow: none; } .installed-list-view > * { padding: 0; transition: background-color 200ms; min-height: 0; margin: 5px 4.5px; } .installed-section { padding-top: 0; } .narrow .installed-list-view > * { margin: 4px 4.5px; } .narrow .full-view-addons > * { margin: 5px 0px; } .full-view-addons > * { margin: 5px 0px; } .full-view-addons { margin: 0px; } .no-vertical-margin > row.hidden { margin-top: 0px; margin-bottom: 0px; } .no-vertical-margin > row:not(.hidden) { margin-bottom: 6px; } .user-data-list-view > * { margin: 0; } .user-data-list-view row { min-height: 0; } .no-min-height { min-height: 0; } .transaction-tile-title { font-size: 1.05em; font-weight: 450; } .operations { background-color: rgba(255, 255, 255, 0.040); border-radius: 0px 0px 12px 12px; } @media (prefers-color-scheme: light) { .operations { background-color: rgba(0, 0, 0, 0.050); } } .ops-toggle { transition: transform 200ms ease; transform: rotate(90deg); } .ops-toggle:checked, .ops-toggle.rotated { transform: rotate(270deg); } .disable-adw-flow-box-styling { background-color: transparent; box-shadow: none; padding: 0; } curated-list-view list { background: var(--bg-color); } .article-image-button { padding: 10px; background-color: transparent; transition: transform 350ms ease; } .article-image-button:hover { transform: scale(1.03); } .code-block { border-color: alpha(currentColor, 0.05); } .article .title-2 { font-size: 1.50em; } .markdown-table { border-top: 1px solid alpha(currentColor, 0.15); border-left: 1px solid alpha(currentColor, 0.15); } .markdown-table > label { padding: 8px 14px; border-right: 1px solid alpha(currentColor, 0.15); border-bottom: 1px solid alpha(currentColor, 0.15); } .markdown-table > label.row-odd { background-color: alpha(currentColor, 0.08); } .install-button-indicator { background: var(--flag-gradient, var(--accent-bg-color)); border-radius: 9999px; } .transact-icon-flag { background: var(--flag-gradient, var(--accent-bg-color)); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/template-callbacks.c��������������������������������������������������0000664�0000000�0000000�00000013662�15240005042�0022031�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* template-callbacks.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "template-callbacks.h" #include "util.h" static gboolean invert_boolean (gpointer object, gboolean value) { return !value; } /* Let's try to use this more for conciseness */ static gboolean not (gpointer object, gboolean value) { return invert_boolean (object, value); } static gboolean is_zero (gpointer object, int value) { return value == 0; } static gboolean is_double_zero (gpointer object, double value) { return value == 0.0; } static gboolean is_null (gpointer object, GObject *value) { return value == NULL; } static gboolean is_gt (gpointer object, int value1, int value2) { return value1 > value2; } static gboolean is_lt (gpointer object, int value1, int value2) { return value1 < value2; } static gboolean is_ge (gpointer object, int value1, int value2) { return value1 >= value2; } static gboolean is_le (gpointer object, int value1, int value2) { return value1 <= value2; } static gboolean logical_and (gpointer object, gboolean value1, gboolean value2) { return value1 && value2; } static gboolean logical_or (gpointer object, gboolean value1, gboolean value2) { return value1 || value2; } static gboolean is_positive (gpointer object, int value) { return value >= 0; } static gboolean is_empty (gpointer object, GListModel *model) { return model == NULL || g_list_model_get_n_items (model) == 0; } static gboolean is_empty_string (gpointer object, const char *str) { return str == NULL || *str == '\0'; } static gboolean is_longer (gpointer object, GListModel *model, int value) { return model != NULL && g_list_model_get_n_items (model) > value; } static char * bool_to_string (gpointer object, gboolean condition, char *if_true, char *if_false) { return g_strdup (condition ? if_true : if_false); } static gpointer choose_object (gpointer object, gboolean condition, gpointer if_true, gpointer if_false) { return condition ? bz_object_maybe_ref (if_true) : bz_object_maybe_ref (if_false); } static int choose_int (gpointer object, gboolean condition, int if_true, int if_false) { return condition ? if_true : if_false; } static guint choose_uint (gpointer object, gboolean condition, guint if_true, guint if_false) { return condition ? if_true : if_false; } static gint64 choose_int64 (gpointer object, gboolean condition, gint64 if_true, gint64 if_false) { return condition ? if_true : if_false; } static guint64 choose_uint64 (gpointer object, gboolean condition, guint64 if_true, guint64 if_false) { return condition ? if_true : if_false; } static char * format_int (gpointer object, gint integer) { return g_strdup_printf ("%d", integer); } static char * format_uint (gpointer object, guint uint) { return g_strdup_printf ("%u", uint); } static char * format_double (gpointer object, double number) { return g_strdup_printf ("%f", number); } void bz_widget_class_bind_all_util_callbacks (GtkWidgetClass *widget_class) { g_return_if_fail (GTK_IS_WIDGET_CLASS (widget_class)); gtk_widget_class_bind_template_callback (widget_class, invert_boolean); gtk_widget_class_bind_template_callback (widget_class, not); gtk_widget_class_bind_template_callback (widget_class, is_zero); gtk_widget_class_bind_template_callback (widget_class, is_double_zero); gtk_widget_class_bind_template_callback (widget_class, is_null); gtk_widget_class_bind_template_callback (widget_class, is_gt); gtk_widget_class_bind_template_callback (widget_class, is_lt); gtk_widget_class_bind_template_callback (widget_class, is_ge); gtk_widget_class_bind_template_callback (widget_class, is_le); gtk_widget_class_bind_template_callback (widget_class, logical_and); gtk_widget_class_bind_template_callback (widget_class, logical_or); gtk_widget_class_bind_template_callback (widget_class, is_positive); gtk_widget_class_bind_template_callback (widget_class, is_empty); gtk_widget_class_bind_template_callback (widget_class, is_empty_string); gtk_widget_class_bind_template_callback (widget_class, is_longer); gtk_widget_class_bind_template_callback (widget_class, bool_to_string); gtk_widget_class_bind_template_callback (widget_class, choose_object); gtk_widget_class_bind_template_callback (widget_class, choose_int); gtk_widget_class_bind_template_callback (widget_class, choose_uint); gtk_widget_class_bind_template_callback (widget_class, choose_int64); gtk_widget_class_bind_template_callback (widget_class, choose_uint64); gtk_widget_class_bind_template_callback (widget_class, format_int); gtk_widget_class_bind_template_callback (widget_class, format_uint); gtk_widget_class_bind_template_callback (widget_class, format_double); } ������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/template-callbacks.h��������������������������������������������������0000664�0000000�0000000�00000001543�15240005042�0022031�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* template-callbacks.h * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <gtk/gtk.h> void bz_widget_class_bind_all_util_callbacks (GtkWidgetClass *widget_class); �������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/transaction-notification.c��������������������������������������������0000664�0000000�0000000�00000011501�15240005042�0023300�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* transaction-notification.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "config.h" #include <glib/gi18n.h> #include <gtk/gtk.h> #include "bz-async-texture.h" #include "bz-entry.h" #include "bz-transaction-entry-tracker.h" #include "env.h" #include "transaction-notification.h" #include "util.h" BZ_DEFINE_DATA ( notify_finished, NotifyFinished, { BzTransaction *transaction; gboolean success; }, BZ_RELEASE_DATA (transaction, g_object_unref)) static DexFuture * notify_finished_release_hold (DexFuture *future, GApplication *app); static DexFuture * notify_finished_fiber (NotifyFinishedData *data); void bz_transaction_notify_finished (BzTransaction *transaction, gboolean success) { g_autoptr (NotifyFinishedData) data = NULL; GApplication *app = NULL; g_return_if_fail (BZ_IS_TRANSACTION (transaction)); app = g_application_get_default (); g_application_hold (app); data = notify_finished_data_new (); data->transaction = g_object_ref (transaction); data->success = success; dex_future_disown (dex_future_finally ( dex_scheduler_spawn ( dex_scheduler_get_default (), bz_get_dex_stack_size (), (DexFiberFunc) notify_finished_fiber, notify_finished_data_ref (data), notify_finished_data_unref), (DexFutureCallback) notify_finished_release_hold, app, NULL)); } static DexFuture * notify_finished_release_hold (DexFuture *future, GApplication *app) { g_application_release (app); return dex_ref (future); } static DexFuture * notify_finished_fiber (NotifyFinishedData *data) { BzTransaction *transaction = data->transaction; GApplication *app = NULL; GList *windows = NULL; GListModel *trackers = NULL; guint n_trackers = 0; if (!data->success) return dex_future_new_true (); app = g_application_get_default (); windows = gtk_application_get_windows (GTK_APPLICATION (app)); if (windows != NULL) return dex_future_new_true (); trackers = bz_transaction_get_trackers (transaction); if (trackers != NULL) n_trackers = g_list_model_get_n_items (trackers); for (guint i = 0; i < n_trackers; i++) { g_autoptr (BzTransactionEntryTracker) tracker = NULL; BzTransactionEntryKind kind = 0; BzEntry *entry = NULL; const char *title = NULL; g_autofree char *summary = NULL; g_autofree char *notif_id = NULL; g_autoptr (GNotification) notification = NULL; g_autoptr (GIcon) icon = NULL; GdkPaintable *paintable = NULL; tracker = g_list_model_get_item (trackers, i); kind = bz_transaction_entry_tracker_get_kind (tracker); if (kind != BZ_TRANSACTION_ENTRY_KIND_INSTALL) continue; entry = bz_transaction_entry_tracker_get_entry (tracker); if (entry == NULL || !bz_entry_is_of_kinds (entry, BZ_ENTRY_KIND_APPLICATION)) continue; title = bz_entry_get_title (entry); if (title == NULL) title = bz_entry_get_id (entry); if (title == NULL) continue; summary = g_strdup_printf (_ ("%s Installed"), title); notification = g_notification_new (summary); g_notification_set_body (notification, _ ("The app is ready to be used")); paintable = bz_entry_get_icon_paintable (entry); if (paintable != NULL && BZ_IS_ASYNC_TEXTURE (paintable)) icon = (GIcon *) dex_await_object ( bz_async_texture_dup_icon_future (BZ_ASYNC_TEXTURE (paintable)), NULL); if (icon != NULL) g_notification_set_icon (notification, icon); g_notification_set_priority (notification, G_NOTIFICATION_PRIORITY_NORMAL); notif_id = g_strdup_printf ("app-installed-%s", bz_entry_get_unique_id (entry)); g_application_send_notification (app, notif_id, notification); } return dex_future_new_true (); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/transaction-notification.h��������������������������������������������0000664�0000000�0000000�00000001727�15240005042�0023316�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* transaction-notification.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib.h> #include "bz-transaction.h" G_BEGIN_DECLS void bz_transaction_notify_finished (BzTransaction *transaction, gboolean success); G_END_DECLS �����������������������������������������bazaar-org-bazaar-48f93f4/src/update-worker.c�������������������������������������������������������0000664�0000000�0000000�00000034722�15240005042�0021072�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* update-worker.c * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #define G_LOG_DOMAIN "BAZAAR::UPDATE-WORKER" #include "config.h" #include <flatpak/flatpak.h> #include <gio/gio.h> #include <glib.h> #include <glib/gi18n.h> #include "update-worker.h" #define DAILY_WINDOW_START_HOUR 6 #define DAILY_WINDOW_SPREAD_HOURS 6 #define STALE_CHECK_THRESHOLD_DAYS 7 #define STALE_NOTIFY_THROTTLE_DAYS 1 static gboolean network_is_restricted (void); static gboolean power_saver_is_enabled (void); static gboolean due_for_daily_check (GSettings *settings); static gboolean timestamp_more_than_days_ago (GSettings *settings, const char *key, guint days); static void maybe_notify_stale (GSettings *settings); static gboolean should_skip_extension_ref (FlatpakInstalledRef *iref); static gboolean on_operation_error (FlatpakTransaction *transaction, FlatpakTransactionOperation *operation, GError *error, int details, gpointer user_data); static gboolean update_installation (FlatpakInstallation *installation, GHashTable *titles_out); static void send_portal_notification (const char *id, const char *title, const char *body); static void send_update_notification (GHashTable *titles); int run_update_worker (int argc, char *argv[]) { g_autoptr (GSettings) settings = NULL; g_autoptr (GError) local_error = NULL; g_autoptr (FlatpakInstallation) system_inst = NULL; g_autoptr (GHashTable) titles = NULL; gboolean auto_update = FALSE; gboolean auto_update_notifications = FALSE; gboolean had_error = FALSE; g_autoptr (GDateTime) now = NULL; settings = g_settings_new (APPLICATION_ID); auto_update = g_settings_get_boolean (settings, "auto-update"); auto_update_notifications = g_settings_get_boolean (settings, "auto-update-notifications"); if (!auto_update) { g_debug ("Skipping update check: auto-update is disabled\n"); return EXIT_SUCCESS; } if (!due_for_daily_check (settings)) return EXIT_SUCCESS; if (network_is_restricted ()) { g_debug ("Skipping update check: no network or network is metered\n"); maybe_notify_stale (settings); return EXIT_SUCCESS; } if (power_saver_is_enabled ()) { g_debug ("Skipping update check: power saver is enabled\n"); maybe_notify_stale (settings); return EXIT_SUCCESS; } titles = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); system_inst = flatpak_installation_new_system (NULL, &local_error); if (system_inst == NULL) { g_warning ("Failed to open system installation: %s", local_error->message); g_clear_error (&local_error); had_error = TRUE; } else { flatpak_installation_set_no_interaction (system_inst, TRUE); if (!update_installation (system_inst, titles)) had_error = TRUE; } #ifndef SANDBOXED_LIBFLATPAK { g_autoptr (FlatpakInstallation) user_inst = NULL; user_inst = flatpak_installation_new_user (NULL, &local_error); if (user_inst == NULL) { g_warning ("Failed to open user installation: %s", local_error->message); g_clear_error (&local_error); had_error = TRUE; } else { flatpak_installation_set_no_interaction (user_inst, TRUE); if (!update_installation (user_inst, titles)) had_error = TRUE; } } #endif if (had_error) { g_debug ("Update process encountered errors\n"); maybe_notify_stale (settings); return EXIT_SUCCESS; } now = g_date_time_new_now_local (); g_settings_set_int64 (settings, "last-update-check", g_date_time_to_unix (now)); if (g_hash_table_size (titles) == 0) { g_print ("No apps needed auto updating\n"); return EXIT_SUCCESS; } if (auto_update_notifications) send_update_notification (titles); return EXIT_SUCCESS; } /* * Updates try to run once per day at a randomized hour between 6:00 and * 11:00 local time, to avoid every client updating at once. If more than a * day has passed since the last check then the randomization is skipped and * the check runs as soon as it's past 6:00. * * This logic is copied from GNOME Software. */ static gboolean due_for_daily_check (GSettings *settings) { gint64 last_check_unix = 0; gint hour_offset = 0; g_autoptr (GDateTime) now = NULL; g_autoptr (GDateTime) now_mid = NULL; gint now_hour = 0; gint year = 0, month = 0, day = 0; GTimeSpan day_interval = 0; last_check_unix = g_settings_get_int64 (settings, "last-update-check"); hour_offset = g_settings_get_int (settings, "update-check-hour-offset"); if (hour_offset < 0) { hour_offset = g_random_int_range (0, DAILY_WINDOW_SPREAD_HOURS); g_settings_set_int (settings, "update-check-hour-offset", hour_offset); } now = g_date_time_new_now_local (); if (last_check_unix == 0) return TRUE; { g_autoptr (GDateTime) last_check = NULL; g_autoptr (GDateTime) last_check_mid = NULL; last_check = g_date_time_new_from_unix_local (last_check_unix); if (last_check == NULL) return TRUE; g_date_time_get_ymd (last_check, &year, &month, &day); last_check_mid = g_date_time_new_local (year, month, day, 0, 0, 0); g_date_time_get_ymd (now, &year, &month, &day); now_mid = g_date_time_new_local (year, month, day, 0, 0, 0); day_interval = g_date_time_difference (now_mid, last_check_mid); } if (day_interval < G_TIME_SPAN_DAY) { g_debug ("Skipping update check: already checked today\n"); return FALSE; } now_hour = g_date_time_get_hour (now); if (day_interval < 2 * G_TIME_SPAN_DAY && now_hour < DAILY_WINDOW_START_HOUR + hour_offset) { g_debug ("Skipping update check: too early in the day\n"); return FALSE; } if (day_interval >= 2 * G_TIME_SPAN_DAY && now_hour < DAILY_WINDOW_START_HOUR) { g_debug ("Skipping update check: too early in the day\n"); return FALSE; } return TRUE; } static gboolean timestamp_more_than_days_ago (GSettings *settings, const char *key, guint days) { gint64 ts = 0; g_autoptr (GDateTime) then = NULL; g_autoptr (GDateTime) now = NULL; ts = g_settings_get_int64 (settings, key); if (ts == 0) return TRUE; then = g_date_time_new_from_unix_local (ts); if (then == NULL) return TRUE; now = g_date_time_new_now_local (); return g_date_time_difference (now, then) / G_TIME_SPAN_DAY >= days; } static void maybe_notify_stale (GSettings *settings) { if (!timestamp_more_than_days_ago (settings, "last-update-check", STALE_CHECK_THRESHOLD_DAYS)) return; if (!timestamp_more_than_days_ago (settings, "last-stale-notification", STALE_NOTIFY_THROTTLE_DAYS)) return; send_portal_notification ("bazaar-update-stale", _ ("Updates Are Out of Date"), _ ("Please check for available updates")); g_settings_set_int64 (settings, "last-stale-notification", g_date_time_to_unix (g_date_time_new_now_local ())); } static gboolean network_is_restricted (void) { GNetworkMonitor *monitor = NULL; monitor = g_network_monitor_get_default (); if (monitor == NULL) return FALSE; return !g_network_monitor_get_network_available (monitor) || g_network_monitor_get_network_metered (monitor); } static gboolean power_saver_is_enabled (void) { g_autoptr (GPowerProfileMonitor) monitor = NULL; monitor = g_power_profile_monitor_dup_default (); if (monitor == NULL) return FALSE; return g_power_profile_monitor_get_power_saver_enabled (monitor); } static gboolean should_skip_extension_ref (FlatpakInstalledRef *iref) { const char *ref_name = NULL; ref_name = flatpak_ref_get_name (FLATPAK_REF (iref)); return g_str_has_suffix (ref_name, ".Locale") || g_str_has_suffix (ref_name, ".Debug") || g_str_has_suffix (ref_name, ".Sources"); } static gboolean on_operation_error (FlatpakTransaction *transaction, FlatpakTransactionOperation *operation, GError *error, int details, gpointer user_data) { const char *ref = NULL; ref = flatpak_transaction_operation_get_ref (operation); g_warning ("Update failed for %s: %s", ref, error->message); return TRUE; } static gboolean update_installation (FlatpakInstallation *installation, GHashTable *titles_out) { g_autoptr (GError) local_error = NULL; g_autoptr (GPtrArray) update_refs = NULL; g_autoptr (FlatpakTransaction) transaction = NULL; gboolean added_any = FALSE; gboolean ran = FALSE; gboolean success = TRUE; update_refs = flatpak_installation_list_installed_refs_for_update ( installation, NULL, &local_error); if (update_refs == NULL) { g_warning ("Failed to list updates: %s", local_error->message); return FALSE; } if (update_refs->len == 0) return TRUE; transaction = flatpak_transaction_new_for_installation (installation, NULL, &local_error); if (transaction == NULL) { g_warning ("Failed to create transaction: %s", local_error->message); return FALSE; } g_signal_connect (transaction, "operation-error", G_CALLBACK (on_operation_error), NULL); for (guint i = 0; i < update_refs->len; i++) { FlatpakInstalledRef *iref = NULL; g_autofree char *ref_fmt = NULL; const char *title = NULL; iref = g_ptr_array_index (update_refs, i); if (should_skip_extension_ref (iref)) continue; ref_fmt = flatpak_ref_format_ref (FLATPAK_REF (iref)); title = flatpak_installed_ref_get_appdata_name (iref); if (title == NULL) title = flatpak_ref_get_name (FLATPAK_REF (iref)); g_hash_table_replace (titles_out, g_strdup (ref_fmt), g_strdup (title)); if (flatpak_transaction_add_update (transaction, ref_fmt, NULL, NULL, &local_error)) added_any = TRUE; else { g_warning ("Failed to queue update for %s: %s", ref_fmt, local_error->message); g_clear_error (&local_error); success = FALSE; } } if (!added_any) return success; ran = flatpak_transaction_run (transaction, NULL, &local_error); if (!ran && local_error != NULL) { g_warning ("Transaction did not complete cleanly: %s", local_error->message); success = FALSE; } return success; } static void send_portal_notification (const char *id, const char *title, const char *body) { g_autoptr (GDBusConnection) conn = NULL; g_autoptr (GError) error = NULL; GVariantBuilder notification = { 0 }; conn = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (conn == NULL) { g_warning ("Unable to reach session bus for notification: %s", error->message); return; } g_variant_builder_init (¬ification, G_VARIANT_TYPE_VARDICT); g_variant_builder_add (¬ification, "{sv}", "title", g_variant_new_string (title)); g_variant_builder_add (¬ification, "{sv}", "body", g_variant_new_string (body)); g_variant_builder_add (¬ification, "{sv}", "priority", g_variant_new_string ("normal")); g_dbus_connection_call_sync ( conn, "org.freedesktop.portal.Desktop", "/org/freedesktop/portal/desktop", "org.freedesktop.portal.Notification", "AddNotification", g_variant_new ("(sa{sv})", id, ¬ification), NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (error != NULL) g_warning ("Failed to send notification: %s", error->message); } static void send_update_notification (GHashTable *titles) { g_autoptr (GString) body = NULL; g_autoptr (GPtrArray) updated = NULL; g_autofree char *summary = NULL; GHashTableIter iter = { 0 }; gpointer ref_key = NULL; gpointer title_val = NULL; guint n_updated = 0; body = g_string_new (NULL); updated = g_ptr_array_new (); g_hash_table_iter_init (&iter, titles); while (g_hash_table_iter_next (&iter, &ref_key, &title_val)) g_ptr_array_add (updated, title_val); n_updated = updated->len; if (n_updated == 0) return; summary = g_strdup_printf ( ngettext ("%u App Updated", "%u Apps Updated", n_updated), n_updated); if (n_updated == 1) g_string_append_printf (body, _ ("%s has been updated."), (const char *) g_ptr_array_index (updated, 0)); else if (n_updated == 2) g_string_append_printf (body, _ ("%s and %s have been updated."), (const char *) g_ptr_array_index (updated, 0), (const char *) g_ptr_array_index (updated, 1)); else if (n_updated >= 3) g_string_append_printf (body, _ ("Includes %s, %s and %s."), (const char *) g_ptr_array_index (updated, 0), (const char *) g_ptr_array_index (updated, 1), (const char *) g_ptr_array_index (updated, 2)); send_portal_notification ("bazaar-update", summary, body->str); } ����������������������������������������������bazaar-org-bazaar-48f93f4/src/update-worker.h�������������������������������������������������������0000664�0000000�0000000�00000001572�15240005042�0021074�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* update-worker.h * * Copyright 2026 Alexander Vanhee * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <glib.h> G_BEGIN_DECLS int run_update_worker (int argc, char *argv[]); G_END_DECLS ��������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/util.c����������������������������������������������������������������0000664�0000000�0000000�00000002476�15240005042�0017257�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* util.c * * Copyright 2026 Eva M * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "util.h" BzWeakRef * bz_weak_ref_ref (BzWeakRef *wr) { g_atomic_ref_count_inc (&wr->rc); return wr; } void bz_weak_ref_unref (BzWeakRef *wr) { if (!g_atomic_ref_count_dec (&wr->rc)) return; g_weak_ref_clear (&wr->ref); g_free (wr); } G_DEFINE_BOXED_TYPE ( BzWeakRef, bz_weak_ref, bz_weak_ref_ref, bz_weak_ref_unref); BzWeakRef * bz_weak_ref_new (gpointer object) { BzWeakRef *wr = NULL; g_return_val_if_fail (object != NULL, NULL); wr = g_new0 (BzWeakRef, 1); g_atomic_ref_count_init (&wr->rc); g_weak_ref_init (&wr->ref, object); return wr; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/src/util.h����������������������������������������������������������������0000664�0000000�0000000�00000022244�15240005042�0017257�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* util.h * * Copyright 2025 Adam Masciola * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 <https://www.gnu.org/licenses/>. * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include <libdex.h> #define bz_maybe(_ptr, _func) ((_ptr) != NULL ? (_func) ((_ptr)) : NULL) #define bz_maybe_strdup(_ptr) bz_maybe (_ptr, g_strdup) #define bz_maybe_ref(_ptr, _ref) ((typeof (_ptr)) bz_maybe (_ptr, _ref)) #define bz_object_maybe_ref(_obj) bz_maybe_ref ((_obj), g_object_ref) #define bz_dex_maybe_ref(_obj) bz_maybe_ref ((_obj), dex_ref) #define BZ_RELEASE_DATA(name, unref) \ if ((unref) != NULL) \ { \ g_clear_pointer (&self->name, (unref)); \ } #define BZ_RELEASE_UTAG(name, remove) \ if ((remove) != NULL) \ { \ g_clear_handle_id (&self->name, (remove)); \ } /* va args = releases */ #define BZ_DEFINE_DATA(name, Name, layout, ...) \ typedef struct _##Name##Data Name##Data; \ struct _##Name##Data \ { \ gatomicrefcount rc; \ struct layout; \ }; \ G_GNUC_UNUSED \ static inline Name##Data * \ name##_data_new (void) \ { \ Name##Data *data = NULL; \ data = g_new0 (typeof (*data), 1); \ g_atomic_ref_count_init (&data->rc); \ return data; \ } \ G_GNUC_UNUSED \ static inline Name##Data * \ name##_data_ref (gpointer ptr) \ { \ Name##Data *self = ptr; \ g_atomic_ref_count_inc (&self->rc); \ return self; \ } \ G_GNUC_UNUSED \ static void \ name##_data_deinit (gpointer ptr) \ { \ Name##Data *self = ptr; \ __VA_ARGS__ \ } \ G_GNUC_UNUSED \ static void \ name##_data_unref (gpointer ptr) \ { \ Name##Data *self = ptr; \ if (g_atomic_ref_count_dec (&self->rc)) \ { \ name##_data_deinit (self); \ g_free (self); \ } \ } \ G_GNUC_UNUSED \ static void \ name##_data_unref_closure (gpointer data, \ GClosure *closure) \ { \ name##_data_unref (data); \ } \ G_DEFINE_AUTOPTR_CLEANUP_FUNC (Name##Data, name##_data_unref); /* Be careful with deadlocks */ typedef DexFuture BzGuard; static inline void bz_guard_destroy (BzGuard *guard) { if (dex_future_is_pending (guard)) dex_promise_resolve_boolean (DEX_PROMISE (guard), TRUE); dex_unref (guard); } G_DEFINE_AUTOPTR_CLEANUP_FUNC (BzGuard, bz_guard_destroy); #define bz_clear_guard(_pp) g_clear_pointer (_pp, bz_guard_destroy) #define BZ_BEGIN_GUARD_WITH_CONTEXT(_guard, _mutex, _gate) \ G_STMT_START \ { \ g_autoptr (GMutexLocker) _locker = NULL; \ g_autoptr (DexFuture) _wait = NULL; \ \ _locker = g_mutex_locker_new (_mutex); \ if (*(_guard) == NULL) \ *(_guard) = (DexFuture *) dex_promise_new (); \ if (*(_gate) != NULL) \ { \ if (dex_future_is_pending (*(_gate))) \ _wait = g_steal_pointer (_gate); \ else \ dex_clear (_gate); \ } \ *(_gate) = dex_ref (*(_guard)); \ g_clear_pointer (&_locker, g_mutex_locker_free); \ \ if (_wait != NULL) \ dex_await (g_steal_pointer (&_wait), NULL); \ } \ G_STMT_END #define BZ_BEGIN_GUARD(_guard) \ G_STMT_START \ { \ static GMutex _mutex = { 0 }; \ static BzGuard *_gate = NULL; \ BZ_BEGIN_GUARD_WITH_CONTEXT (_guard, &_mutex, &_gate); \ } \ G_STMT_END typedef struct { gatomicrefcount rc; GWeakRef ref; } BzWeakRef; #define BZ_TYPE_WEAK_REF (bz_weak_ref_get_type ()) GType bz_weak_ref_get_type (void); BzWeakRef *bz_weak_ref_ref (BzWeakRef *wr); void bz_weak_ref_unref (BzWeakRef *wr); G_DEFINE_AUTOPTR_CLEANUP_FUNC (BzWeakRef, bz_weak_ref_unref); BzWeakRef *bz_weak_ref_new (gpointer object); /* Use with dex_scheduler_spawn */ G_GNUC_UNUSED static GWeakRef * bz_track_weak (gpointer object) { GWeakRef *wr = NULL; if (object == NULL) return NULL; wr = g_new0 (typeof (*wr), 1); g_weak_ref_init (wr, object); return wr; } G_GNUC_UNUSED static void bz_weak_release (gpointer ptr) { GWeakRef *wr = ptr; g_weak_ref_clear (wr); g_free (wr); } #define bz_weak_get_or_return(self, wr) \ G_STMT_START \ { \ (self) = g_weak_ref_get (wr); \ if ((self) == NULL) \ return; \ } \ G_STMT_END #define bz_weak_get_or_return_reject(self, wr) \ G_STMT_START \ { \ (self) = g_weak_ref_get (wr); \ if ((self) == NULL) \ return dex_future_new_reject ( \ G_IO_ERROR, \ G_IO_ERROR_CANCELLED, \ "Object was discarded"); \ } \ G_STMT_END G_GNUC_UNUSED static void _bz_debug_print_when_disposed_cb (gpointer ptr); BZ_DEFINE_DATA ( _bz_debug_dispose_cb, _BzDebugDisposeCb, { GType type; const char *loc; guint64 time; }, _bz_debug_print_when_disposed_cb (self);) G_GNUC_UNUSED static void _bz_debug_print_when_disposed_cb (gpointer ptr) { _BzDebugDisposeCbData *data = ptr; g_print ("%zu OBJECT DISPOSE: type %s; from %s at %zu\n", g_get_monotonic_time (), g_type_name (data->type), data->loc, data->time); } #define BZ_DEBUG_PRINT_WHEN_DISPOSED(_object) \ G_STMT_START \ { \ g_autoptr (_BzDebugDisposeCbData) _data = NULL; \ \ _data = _bz_debug_dispose_cb_data_new (); \ _data->type = G_OBJECT_TYPE (_object); \ _data->loc = G_STRLOC; \ _data->time = g_get_monotonic_time (); \ \ g_object_set_data_full ( \ G_OBJECT (_object), \ "BZ_DEBUG_PRINT_WHEN_DISPOSED", \ _bz_debug_dispose_cb_data_ref (_data), \ _bz_debug_dispose_cb_data_unref); \ } \ G_STMT_END ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/subprojects/��������������������������������������������������������������0000775�0000000�0000000�00000000000�15240005042�0017701�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/subprojects/.gitignore����������������������������������������������������0000664�0000000�0000000�00000000010�15240005042�0021660�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libdex/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/subprojects/.wraplock�����������������������������������������������������0000664�0000000�0000000�00000000000�15240005042�0021512�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/subprojects/libdex.wrap���������������������������������������������������0000664�0000000�0000000�00000000326�15240005042�0022044�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[wrap-git] directory=libdex url=https://gitlab.gnome.org/GNOME/libdex.git push-url=ssh://git@ssh.gitlab.gnome.org:GNOME/libdex.git revision=1.2.beta depth=1 [provide] dependency_names=libdex-1 libdex-1=libdex_dep ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bazaar-org-bazaar-48f93f4/version.sh����������������������������������������������������������������0000775�0000000�0000000�00000001171�15240005042�0017362�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh INSTR="$1" VERSION=0.9.4 CACHE_VERSION=2 case "$INSTR" in get-version) echo "${VERSION}" ;; get-vcs) VCS_VERSION="$(git -C "$MESON_SOURCE_ROOT" describe --always --dirty)" if [ -n "$VCS_VERSION" ]; then echo "${VERSION} (vcs=${VCS_VERSION})" else echo "${VERSION}" fi ;; get-gh-release) TAG="v${VERSION}" echo "https://github.com/bazaar-org/bazaar/releases/tag/${TAG}" ;; get-cache) echo "${CACHE_VERSION}" ;; *) echo invalid arguments 1>&2 exit 1 ;; esac �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������